:root{--navy:#122d68;--blue:#2454c8;--orange:#ef7b16;--ink:#15233b;--muted:#65728a;--line:#dce3ef;--bg:#f3f6fb;--white:#fff;--green:#147a48;--red:#b33131}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif}.top{display:flex;align-items:center;justify-content:space-between;background:#fff;border-bottom:1px solid var(--line);padding:10px max(calc((100vw - 1180px)/2),16px);position:sticky;top:0;z-index:3}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--navy);font-weight:750}.brand img{width:64px;height:42px;object-fit:contain}.userbox{display:flex;align-items:center;gap:12px}.userbox form{margin:0}.wrap{max-width:1180px;margin:26px auto;padding:0 16px;min-height:70vh}.login-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:24px;align-items:center;min-height:70vh}.welcome,.login-card,.panel{background:#fff;border:1px solid var(--line);border-radius:16px;padding:22px;box-shadow:0 4px 18px #1536680b;margin-bottom:16px}.welcome{padding:34px;background:linear-gradient(150deg,#fff 20%,#eff4ff)}h1{font-size:28px;margin:10px 0 18px;color:var(--navy)}h2{font-size:20px;margin:0 0 14px}h3{font-size:17px;margin:0 0 8px}p{margin:8px 0 12px}.muted,small{color:var(--muted)}.company{display:flex;align-items:center;gap:16px;border-bottom:2px solid var(--orange);padding:6px 0 12px;margin-bottom:16px}.company img{width:94px;max-height:72px;object-fit:contain}.company b{display:block;color:var(--navy);font-size:18px}.company small{display:block;font-size:12px}.tabs{display:flex;gap:8px;overflow:auto;padding:4px 0 18px;margin:0 0 12px}.tabs a,.button,.button:visited{white-space:nowrap;background:#e8efff;border-radius:999px;padding:9px 14px;text-decoration:none;color:var(--navy);font-weight:650}.tabs a:hover,.tabs a:focus{background:var(--blue);color:#fff}label{display:block;font-weight:600;font-size:13px;margin:10px 0;color:#31425e}input,select,textarea{display:block;width:100%;padding:10px 11px;margin-top:5px;border:1px solid #cbd5e3;border-radius:9px;background:#fff;color:var(--ink);font:inherit}textarea{min-height:82px;resize:vertical}button,.button{cursor:pointer;border:0;background:var(--blue);color:white;border-radius:9px;padding:10px 15px;font:600 14px system-ui;text-decoration:none;display:inline-block;margin:5px 4px 0 0}button:hover,.button:hover{filter:brightness(.93)}button:disabled{opacity:.6}.secondary{background:#e8edf5!important;color:#243b63!important}.danger{background:#b33131!important;color:#fff!important}.linkbtn{background:transparent;color:var(--blue);padding:4px}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 16px}.wide{grid-column:1/-1}.split{display:grid;grid-template-columns:1fr 1fr;gap:16px}.narrow{max-width:800px;margin:24px auto}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:16px 0}.stats>div{background:white;border:1px solid var(--line);border-radius:14px;padding:18px}.stats b{display:block;font-size:25px;color:var(--blue)}.stats span{color:var(--muted);font-size:13px}.row{display:flex;align-items:center;justify-content:space-between;gap:12px}.badge{background:#edf2fb;padding:5px 10px;border-radius:999px;font-size:12px}.alert{padding:12px 16px;border-radius:10px;margin:10px 0}.error{background:#fdecec;color:#972c2c}.success{background:#e7f8ed;color:#12673a}.tablewrap{overflow:auto}.tablewrap table{width:100%;border-collapse:collapse;min-width:720px}.tablewrap th,.tablewrap td{text-align:left;padding:10px;border-bottom:1px solid var(--line);vertical-align:top}.tablewrap th{background:#f6f8fc;color:var(--navy)}.inline{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:6px 0}.inline input,.inline select{width:auto;min-width:150px}.profile-home{display:flex;align-items:center;gap:18px}.avatar{width:85px;height:85px;object-fit:cover;border-radius:12px}.avatar.big{width:90px;height:90px;border-radius:50%}.idcard{max-width:520px;background:white;border:1px solid #ccd6e8;border-top:7px solid var(--blue);border-radius:18px;padding:18px;margin:20px 0;box-shadow:0 10px 26px #142c5615}.idbody{display:flex;gap:18px;align-items:center}.idbody img,.no-photo{width:125px;height:155px;object-fit:cover;border-radius:10px;background:#e8edf5}.no-photo{display:grid;place-items:center;text-align:center;color:var(--muted)}.report{background:white}.report-photo{max-width:100%;max-height:380px;object-fit:contain;border:1px solid var(--line);border-radius:8px}.codebox{background:#f3f6ff;border:1px dashed var(--blue);padding:12px;border-radius:10px}.codebox p{font-size:22px;letter-spacing:2px;font-weight:bold}.check{display:flex;gap:8px;align-items:center}.check input{width:auto}.printbtn{background:#263956}details summary{cursor:pointer;font-weight:650;color:var(--navy)}footer{background:#fff;border-top:1px solid var(--line);padding:16px max(calc((100vw - 1180px)/2),16px);margin-top:30px}footer .company{border:0;margin:0}footer p{font-size:12px;color:var(--muted)}
@media(max-width:740px){.login-grid,.split{grid-template-columns:1fr}.wrap{margin:14px auto;padding:0 12px}.top{padding:8px 12px}.brand span{font-size:14px}.brand img{width:52px;height:36px}.userbox span{font-size:12px}.grid{grid-template-columns:1fr}.wide{grid-column:auto}.stats{grid-template-columns:repeat(2,1fr)}.stats>div{padding:13px}.stats b{font-size:21px}h1{font-size:24px}.panel,.login-card,.welcome{padding:16px}.company{align-items:flex-start;gap:10px}.company img{width:70px}.company small{font-size:10px}.idbody{align-items:flex-start}.idbody img,.no-photo{width:95px;height:125px}}
@media print{body{background:#fff}.top,.tabs,footer,.printbtn,button,.alert{display:none!important}.wrap{max-width:none;margin:0;padding:0}.panel,.idcard{box-shadow:none;border:0;margin:0;padding:8px;break-inside:avoid}.report{border-bottom:1px solid #999;border-radius:0;margin-bottom:20px}.company{border-bottom:2px solid #ef7b16}.report-photo{max-height:240px}.idcard{border:2px solid #244fb4!important;max-width:550px}}

.calendar-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:16px;align-items:start}.mini-calendar{margin:0;padding:10px}.mini-calendar .row{margin-bottom:6px}.mini-calendar h3{font-size:13px;text-align:center;margin:0;flex:1}.cal-nav{display:grid;place-items:center;width:25px;height:25px;border-radius:7px;background:#eef3ff;color:#173b89;text-decoration:none;font-size:20px;line-height:1}.calendar-filter{display:flex;gap:6px;align-items:center;margin:6px 0}.calendar-filter select{min-width:0;margin:0;padding:6px;font-size:11px}.calendar-filter button{margin:0;padding:6px 8px;font-size:11px}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px;margin-top:6px}.cal-weekday,.cal-day,.cal-empty{min-height:25px;display:grid;place-items:center}.cal-weekday{font-size:9px;color:#65728a;font-weight:700}.cal-day{border-radius:6px;background:#f4f6fa;font-size:11px}.cal-approved{background:#dcf4e5;color:#12673a}.cal-pending{background:#fff2cf;color:#765500}.cal-rejected{background:#fde1e1;color:#982d2d}.cal-expired{background:#e6e8ec;color:#5b6574}.cal-today{outline:2px solid #2454c8;outline-offset:1px}.cal-legend{display:flex;flex-wrap:wrap;gap:6px;margin-top:7px;font-size:9px;color:#65728a}.cal-legend span{display:flex;align-items:center;gap:3px}.cal-legend i{width:8px;height:8px;border-radius:3px;background:#dcf4e5}.cal-legend span:nth-child(2) i{background:#fff2cf}.cal-legend span:nth-child(3) i{background:#fde1e1}@media(max-width:740px){.calendar-layout{grid-template-columns:1fr}.mini-calendar{max-width:100%}.calendar-grid{gap:3px}.cal-weekday,.cal-day,.cal-empty{min-height:27px}}

.calendar-slot{display:flex;justify-content:flex-end;margin:0 0 14px}.mini-calendar{width:min(100%,280px);flex:none}.calendar-grid .cal-weekday:first-child{color:#bd3229}.cal-day.cal-sunday{color:#bd3229}@media(max-width:740px){.calendar-slot{justify-content:center}.mini-calendar{width:min(100%,280px)}}@media print{.calendar-slot{display:none}}
/* Keep the compact monthly attendance calendar visible while browsing signed-in pages. */
.calendar-slot{position:sticky;top:76px;z-index:2;align-self:flex-start}

.pay-slip{background:#fff;border:1px solid #283449;border-radius:4px;margin:18px 0;padding:18px;color:#182238;box-shadow:0 4px 18px #1536680b}.pay-header{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:18px;border-bottom:2px solid #25354f;padding-bottom:12px}.pay-header .company{border:0;margin:0;padding:0;align-items:center}.pay-header .company img{width:100px;max-height:70px}.pay-header .company small{font-size:11px}.pay-title{display:flex;flex-direction:column;text-align:right;min-width:115px}.pay-title b{font-size:21px;color:var(--navy);letter-spacing:.05em}.pay-title span{font-size:14px;color:var(--muted)}.pay-employee-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border:1px solid #b9c2d0;border-bottom:0;margin-top:14px}.pay-employee-grid>div{padding:8px 10px;border-bottom:1px solid #b9c2d0;display:flex;gap:8px;justify-content:space-between}.pay-employee-grid span,.pay-days span{color:#58647a}.pay-employee-grid b{text-align:right;overflow-wrap:anywhere}.pay-days{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border:1px solid #b9c2d0;margin:12px 0}.pay-days>div{padding:8px 10px;display:flex;justify-content:space-between;gap:6px;border-right:1px solid #b9c2d0}.pay-days>div:last-child{border:0}.pay-columns{display:grid;grid-template-columns:1fr 1fr;border:1px solid #b9c2d0}.pay-columns>div:first-child{border-right:1px solid #b9c2d0}.pay-columns h3{text-align:center;background:#f1f4f8;margin:0;padding:9px;border-bottom:1px solid #b9c2d0}.pay-line{display:flex;justify-content:space-between;gap:10px;padding:9px 11px;border-bottom:1px solid #d3d9e2}.pay-line.total{font-weight:750;background:#f7f8fa}.pay-net{display:flex;justify-content:flex-end;align-items:center;gap:18px;padding:12px;background:#edf3ff;border:1px solid #b9c2d0;border-top:0}.pay-net span{font-weight:700}.pay-net b{font-size:22px;color:var(--navy)}.pay-net em{font-size:12px;font-style:normal;border-radius:99px;background:#fff;padding:4px 10px}.pay-notes{padding-top:8px}.pay-actions{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:12px}.pay-actions form{margin:0}.pay-actions select{width:auto;min-width:100px}.employee-autofill{background:#f2f6ff;padding:9px 12px;border-radius:8px;color:var(--navy);font-size:13px}
@media(max-width:740px){.pay-slip{padding:12px}.pay-header{grid-template-columns:1fr;gap:8px}.pay-header .company img{width:74px}.pay-header .company small{font-size:9px}.pay-title{text-align:left;flex-direction:row;align-items:baseline;gap:10px}.pay-title b{font-size:18px}.pay-employee-grid{grid-template-columns:1fr}.pay-days{grid-template-columns:repeat(2,minmax(0,1fr))}.pay-days>div:nth-child(2){border-right:0}.pay-days>div:nth-child(-n+2){border-bottom:1px solid #b9c2d0}.pay-columns{grid-template-columns:1fr}.pay-columns>div:first-child{border-right:0;border-bottom:1px solid #b9c2d0}.pay-actions{align-items:flex-start;flex-direction:column}}
@media print{body.printing *{visibility:hidden!important}body.printing .print-target,body.printing .print-target *{visibility:visible!important}body.printing .print-target{position:absolute;inset:0 auto auto 0;width:100%;margin:0!important;box-shadow:none;border:1px solid #444;border-radius:0;padding:8mm;break-inside:avoid}.pay-slip{box-shadow:none;border-color:#555}.pay-header,.pay-employee-grid,.pay-days,.pay-columns,.pay-net{print-color-adjust:exact;-webkit-print-color-adjust:exact}.pay-slip .no-print{display:none!important}}

.pay-slip-section{scroll-margin-top:88px}.pay-slip-empty{border-style:dashed;background:#fbfcff}

.pay-item-editor{border:1px solid var(--line);border-radius:12px;padding:14px;background:#fbfcff;margin:8px 0}.pay-item-editor h3{margin:0 0 10px;color:var(--navy);font-size:16px}.pay-item-input-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(110px,.55fr) auto;gap:8px;align-items:center;margin:8px 0}.pay-item-input-row input{margin:0}.pay-item-input-row button{white-space:nowrap}.pay-item-tables{display:grid;grid-template-columns:1fr 1fr;gap:14px;align-items:start}.pay-item-table{margin:12px 0!important}.pay-item-table thead th{background:#173b70!important;color:#fff!important;text-transform:uppercase}.pay-item-table .total th{background:#e8efff!important;color:#173b70!important}.pay-item-table .amount{text-align:right!important;white-space:nowrap}
@media(max-width:740px){.pay-item-tables{grid-template-columns:1fr}.pay-item-input-row{grid-template-columns:minmax(0,1fr) minmax(90px,.7fr)}.pay-item-input-row button{grid-column:1/-1;justify-self:start}}

/* Table-based pay slip for screen and saved PDF. */
.pay-table{width:100%;border-collapse:collapse;table-layout:fixed;margin:12px 0;color:#182238;font-size:13px}.pay-table th,.pay-table td{border:1px solid #b9c2d0;padding:8px 10px;vertical-align:middle;text-align:left}.pay-table th{background:#f1f4f8;color:#35445c;font-weight:650}.pay-employee-table{margin-top:14px}.pay-employee-table th{width:20%;color:#58647a;font-weight:500}.pay-employee-table td{width:30%;font-weight:600;overflow-wrap:anywhere}.pay-days-table tr:first-child th,.pay-days-table tr:first-child td{background:#f1f4f8;font-weight:700}.pay-earnings-table thead th{background:#173b70;color:#fff;text-transform:uppercase}.pay-earnings-table .amount,.pay-net-table .amount{text-align:right;white-space:nowrap}.pay-earnings-table .total th{background:#edf3ff;color:#173b70}.pay-net-table th,.pay-net-table td{background:#e8efff;font-weight:700;color:#173b70}.pay-net-table{border:1px solid #2359b8}.pay-net-table em{font-size:12px;font-style:normal;border-radius:99px;background:#fff;padding:4px 10px;white-space:nowrap}
@media(max-width:740px){.pay-table{font-size:10px}.pay-table th,.pay-table td{padding:6px 4px}.pay-employee-table th{width:22%}.pay-employee-table td{width:28%}}
@media print{.pay-table{print-color-adjust:exact;-webkit-print-color-adjust:exact}.pay-table tr{break-inside:avoid}.pay-slip{font-size:11px}.pay-header .company{border:0}}
