:root{--bg:#f8f9fa;--fg:#111827;--muted:#6b7280;--faint:#9ca3af;--line:#e5e7eb;--card-bd:#f3f4f6;--card:#fff;--primary:#111827;--primary-hover:#1f2937;--accent:#047857;--danger:#b91c1c;--warn:#a16207;--info:#1d4ed8;--ok-bg:#d1fae5;--ok-bd:#a7f3d0;--warn-bg:#fef9c3;--warn-bd:#fde68a;--danger-bg:#fee2e2;--danger-bd:#fecaca;--info-bg:#dbeafe;--info-bd:#bfdbfe;--subtle:#f3f4f6;--shadow-card:0 1px 2px 0 rgba(0,0,0,.05)}*{box-sizing:border-box}body{margin:0;background:var(--bg);font:15px/1.5 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased}a,body{color:var(--fg)}a{text-decoration:underline;-webkit-text-decoration-color:#d1d5db;text-decoration-color:#d1d5db;text-underline-offset:2px}a:hover{-webkit-text-decoration-color:var(--fg);text-decoration-color:var(--fg)}.wrap{max-width:920px;margin:0 auto;padding:32px 20px}header.app{border-bottom:1px solid var(--line);background:var(--card);position:-webkit-sticky;position:sticky;top:0;z-index:45}header.app .wrap{padding:14px 20px;display:flex;justify-content:space-between;align-items:center}h1{font-size:20px;margin:0 0 4px}h2{font-size:15px;margin:24px 0 8px}.muted{color:var(--muted)}.card{background:var(--card);border:1px solid var(--card-bd);border-radius:12px;padding:16px;box-shadow:var(--shadow-card)}table{width:100%;border-collapse:collapse;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}td,th{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line)}th{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}td.num,th.num{text-align:right}.btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:#fff;padding:8px 14px;border-radius:8px;font:inherit;font-weight:500;color:#374151;cursor:pointer;transition:background-color .15s,border-color .15s}.btn:hover{background:#f9fafb}.btn.primary{background:var(--primary);color:#fff;border-color:var(--primary)}.btn.primary:hover{background:var(--primary-hover);border-color:var(--primary-hover)}.btn:disabled{opacity:.5;cursor:not-allowed}.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.pill{display:inline-block;font-size:12px;font-weight:500;padding:2px 10px;border-radius:999px;background:var(--subtle);color:var(--muted)}.pill.locked{background:var(--ok-bg);color:var(--accent)}.pill.draft{background:var(--subtle);color:var(--muted)}.finding{padding:8px 12px;border-radius:8px;margin:6px 0;border:1px solid var(--line)}.finding.blocker{background:#fef2f2;border-color:#fecaca;color:var(--danger)}.finding.warning{background:#fffbeb;border-color:#fde68a;color:var(--warn)}.field{display:block;margin:10px 0}.field input{width:100%;padding:9px 11px;border:1px solid var(--line);border-radius:8px;font:inherit}.err{color:var(--danger);margin:8px 0}select{padding:8px 11px;border:1px solid var(--line);border-radius:8px;font:inherit;background:#fff}select:disabled{opacity:.5;cursor:not-allowed}input.cell{width:92px;padding:6px 8px;border:1px solid var(--line);border-radius:6px;font:inherit;text-align:right}input.cell:focus{outline:none;border-color:var(--primary)}input.cell.prefilled,input.cell.untested{border-color:#fbbf24;background:#fffbeb}.linkbtn{border:none;background:none;color:var(--muted);cursor:pointer;font:inherit;padding:4px 6px}.linkbtn:hover{color:var(--danger)}tfoot td{border-top:2px solid var(--line);border-bottom:none}input[type=checkbox]{width:16px;height:16px;accent-color:var(--primary)}.envbanner{display:flex;align-items:center;gap:9px;padding:9px 14px;background:var(--danger-bg);border-bottom:1px solid var(--danger-bd);color:var(--danger);font-size:13px}.envbanner strong{font-weight:600}.tag{display:inline-flex;align-items:center;gap:4px;font-size:11px;padding:2px 8px;border-radius:999px;background:var(--warn-bg);color:var(--warn);border:1px solid var(--warn-bd)}.stepper{display:flex;gap:4px;margin:14px 0 22px}.stepper .seg{flex:1 1;text-align:center;padding:7px 2px;border-radius:8px;font-size:11px;line-height:1.3;background:var(--subtle);color:#a1a1aa;border:1px solid transparent}.stepper .seg.done{background:var(--ok-bg);color:var(--accent)}.stepper .seg.current{background:#fff;border-color:var(--primary);color:var(--primary);font-weight:500}.stepper .seg b{display:block;font-size:13px;font-weight:600}.step{display:flex;gap:13px;align-items:flex-start;padding:15px 16px;border:1px solid var(--line);border-radius:12px;background:var(--card);margin-bottom:10px}.step.current{border-color:var(--primary);box-shadow:inset 0 0 0 1px var(--primary)}.step.muted-step{background:#fcfcfc}.stepnum{width:24px;height:24px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;flex:none;background:var(--subtle);color:var(--muted)}.stepnum.done{background:var(--ok-bg);color:var(--accent)}.stepnum.current{background:#fff;border:1.5px solid var(--primary);color:var(--primary)}.step-h{font-size:15px;font-weight:600;margin:0}.step-help{font-size:12.5px;margin:3px 0 0;line-height:1.5}.chip,.step-help{color:var(--muted)}.chip{font-size:11px;padding:2px 9px;border-radius:999px;white-space:nowrap;background:var(--subtle)}.chip.ok{background:var(--ok-bg);color:var(--accent)}.chip.warn{background:var(--warn-bg);color:var(--warn)}.chip.danger{background:var(--danger-bg);color:var(--danger)}.chip.info{background:var(--info-bg);color:var(--info)}.metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));grid-gap:8px;gap:8px;margin-bottom:14px}.metric{background:var(--subtle);border-radius:8px;padding:10px 12px}.metric.info{background:var(--info-bg)}.metric.warn{background:var(--warn-bg)}.metric .ml{font-size:11.5px;color:var(--muted)}.metric.info .ml{color:var(--info)}.metric.warn .ml{color:var(--warn)}.metric .mv{font-size:18px;font-weight:600;margin-top:2px}.metric.info .mv{color:var(--info)}.metric.warn .mv{color:var(--warn)}.band-ee{background:var(--info-bg);color:var(--info)}.band-er{background:var(--warn-bg);color:var(--warn)}details.payslip{border-top:1px solid var(--line)}details.payslip>summary{cursor:pointer;list-style:none}details.payslip>summary::-webkit-details-marker{display:none}details.payslip[open]>summary .chev{transform:rotate(90deg)}.payslip .chev{display:inline-block;transition:transform .15s;color:var(--muted)}.split{display:grid;grid-template-columns:1fr 1fr;grid-gap:16px;gap:16px}.split .col{padding-left:12px}.split .col.ee{border-left:2px solid var(--info-bd)}.split .col.er{border-left:2px solid var(--warn-bd)}.split .col h4{margin:0 0 6px;font-size:12px;font-weight:600}.split .col.ee h4{color:var(--info)}.split .col.er h4{color:var(--warn)}.kv{display:flex;justify-content:space-between;font-size:12.5px;padding:2px 0;color:var(--muted)}.kv span:last-child,.kv.total{color:var(--fg)}.kv.total{border-top:1px solid var(--line);margin-top:4px;padding-top:5px;font-weight:600}.activity{font-size:12.5px;color:var(--muted)}.activity .ev{display:flex;gap:8px;padding:5px 0;border-bottom:1px solid var(--line)}.activity .ev:last-child{border-bottom:none}.activity .ev .act{color:var(--fg);font-weight:500}.activity .ev time{margin-left:auto;white-space:nowrap}.header-right{display:flex;align-items:center;gap:14px}.notif,.notif-bell{position:relative}.notif-bell{border:none;background:none;color:var(--muted);cursor:pointer;padding:6px;border-radius:8px;display:inline-flex}.notif-bell:hover{color:var(--fg);background:var(--subtle)}.notif-badge{position:absolute;top:0;right:0;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:var(--danger);color:#fff;font-size:10px;font-weight:600;line-height:16px;text-align:center;box-shadow:0 0 0 2px var(--card)}.notif-panel{position:absolute;right:0;top:calc(100% + 8px);width:340px;max-width:90vw;background:var(--card);border:1px solid var(--line);border-radius:12px;z-index:50;box-shadow:0 10px 30px rgba(0,0,0,.12);overflow:hidden}.notif-head{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;border-bottom:1px solid var(--line)}.notif-list{max-height:56vh;overflow-y:auto}.notif-empty{padding:28px 14px;text-align:center;color:var(--muted);margin:0}.notif-item{display:flex;gap:10px;width:100%;text-align:left;border:none;background:none;padding:11px 14px;border-bottom:1px solid var(--line);cursor:pointer;font:inherit}.notif-item:hover{background:var(--subtle)}.notif-item.unread{background:var(--info-bg)}.notif-item.unread:hover{background:#e3edfd}.notif-dot{flex:none;width:8px;height:8px;border-radius:999px;margin-top:5px;background:transparent}.notif-item.unread .notif-dot{background:var(--info)}.notif-body{display:flex;flex-direction:column;gap:2px;min-width:0}.notif-title{font-weight:600;font-size:13px}.notif-msg{color:var(--muted);font-size:12px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.notif-time{color:var(--muted);font-size:11px}.notif-foot{padding:12px 14px;border-top:1px solid var(--line)}.notif-hint{font-size:12px;margin:0;line-height:1.45}.bottomnav{position:fixed;bottom:0;left:0;right:0;z-index:40;display:flex;background:var(--card);border-top:1px solid var(--line);padding:6px 4px calc(6px + env(safe-area-inset-bottom))}.bn-item{flex:1 1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 2px;color:var(--muted);font-size:11px;position:relative;border-radius:10px}.bn-item,.bn-item:hover{text-decoration:none}.bn-ic{display:inline-flex;padding:5px 14px}.bn-badge,.bn-ic{border-radius:999px}.bn-badge{position:absolute;top:0;right:calc(50% - 26px);min-width:16px;height:16px;padding:0 4px;background:var(--danger);color:#fff;font-size:10px;font-weight:600;line-height:16px;text-align:center}main.with-nav{padding-bottom:92px}.greet h1{font-size:26px;margin:0;letter-spacing:-.02em}.greet .gd{color:var(--muted);margin:4px 0 8px}.chip-today{display:inline-flex;align-items:center;gap:6px;font-size:12px;background:var(--info-bg);color:var(--info);border-radius:999px;padding:3px 10px}.chip-today:before{content:"";width:7px;height:7px;border-radius:999px;background:var(--info)}.statgrid{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px;gap:12px;margin:14px 0}.statcard{background:var(--card);border:1px solid var(--card-bd);border-radius:12px;padding:14px 16px;box-shadow:var(--shadow-card)}.statcard .sl{font-size:13px;color:var(--fg);display:flex;justify-content:space-between;align-items:center}.statcard .sv{font-size:30px;font-weight:700;margin:6px 0 2px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.statcard .ss{font-size:12px;color:var(--muted)}.statcard.accent{border-color:#fbbf24;box-shadow:inset 0 0 0 1px #fde68a}.statcard.wide{grid-column:1/-1}.hero{background:var(--card);border:1px solid var(--card-bd);border-radius:12px;padding:18px;margin:14px 0;box-shadow:var(--shadow-card)}.hero .hv{font-size:34px;font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;margin:4px 0}.lrows{display:flex;flex-direction:column;gap:10px}.lrow{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--card-bd);border-radius:12px;padding:12px 14px;width:100%;text-align:left;font:inherit;color:inherit;cursor:pointer;box-shadow:var(--shadow-card)}.lrow,.lrow:hover,a.lrow{text-decoration:none}.lrow:hover{border-color:var(--line);background:#fcfcfd}.lrow .av{flex:none;width:38px;height:38px;border-radius:999px;background:var(--subtle);display:inline-flex;align-items:center;justify-content:center;font-weight:600;color:var(--muted)}.lrow .lb{min-width:0;flex:1 1}.lrow .lt{font-weight:600;font-size:14px}.lrow .ls{font-size:12px;color:var(--muted)}.lrow .lr{text-align:right;display:flex;flex-direction:column;align-items:flex-end;gap:4px}.lrow .lv{font-weight:600;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.spill{display:inline-block;font-size:12px;font-weight:500;padding:3px 11px;border-radius:999px}.spill.submitted{background:var(--warn-bg);color:var(--warn)}.spill.approved{background:var(--ok-bg);color:var(--accent)}.spill.rejected{background:var(--danger-bg);color:var(--danger)}.spill.paid{background:var(--info-bg);color:var(--info)}.spill.locked{background:var(--ok-bg);color:var(--accent)}.pf{display:flex;gap:8px;overflow-x:auto;padding:2px 0 8px}.pf button{border:1px solid var(--line);background:var(--card);border-radius:999px;padding:6px 14px;font:inherit;font-size:13px;color:var(--muted);cursor:pointer;white-space:nowrap}.pf button.active{background:var(--fg);color:#fff;border-color:var(--fg)}.slipsec{margin-top:14px}.slipsec h3{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:0 0 6px}html{overscroll-behavior-y:none}.bn-item,.lrow,a,button{touch-action:manipulation;-webkit-tap-highlight-color:transparent}.bn-item:active .bn-ic,.lrow:active{background:var(--subtle)}.btn:active{transform:scale(.98)}.skel{margin-top:14px;display:flex;flex-direction:column;gap:12px}.skel .sk{border-radius:14px;background:linear-gradient(90deg,#ececee 25%,#f6f6f7 50%,#ececee 75%);background-size:200% 100%;animation:skshine 1.1s linear infinite}@keyframes skshine{to{background-position:-200% 0}}.field input,input,select,textarea{font-size:16px}@media (max-width:640px){.wrap{padding:20px 16px}.greet h1{font-size:23px}main.with-nav{padding-bottom:88px}}h2{margin:22px 0 10px}.greet{margin-bottom:4px}.greet .gd{margin:4px 0 10px}.lrow{min-height:56px}.lrow .lr{gap:5px}.bn-item.active{color:var(--fg);font-weight:600}.bn-item.active .bn-ic{background:var(--subtle)}.notice{font-size:13px;color:var(--muted);margin:0 0 14px}.notice a{font-weight:500}.lrow:focus-visible,a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible,textarea:focus-visible{outline:2px solid rgba(17,24,39,.4);outline-offset:2px}@media (pointer:coarse){.btn,.pf button{min-height:44px}.linkbtn{display:inline-flex}.linkbtn,.notif-bell{min-height:44px;align-items:center}.notif-bell{min-width:44px;justify-content:center}}.pf button{display:inline-flex;align-items:center;gap:6px}.pf button:active{background:var(--subtle)}@media (prefers-reduced-motion:reduce){.skel .sk{animation:none}.btn:active{transform:none}.payslip .chev{transition:none}}.sidebar{display:none}@media (min-width:1024px){.sidebar{position:fixed;top:0;bottom:0;left:0;width:224px;z-index:46;display:flex;flex-direction:column;background:var(--card);border-right:1px solid var(--card-bd)}.sb-brand{height:56px;display:flex;align-items:center;gap:10px;padding:0 16px;border-bottom:1px solid var(--card-bd)}.sb-brand img{width:30px;height:30px;object-fit:contain}.sb-brand .bt{font-size:12px;font-weight:700;line-height:1.1}.sb-brand .bs{font-size:10px;color:var(--faint);line-height:1.1;margin-top:2px}.sb-nav{flex:1 1;overflow-y:auto;padding:12px 8px;display:flex;flex-direction:column;gap:2px}.sb-label{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--faint);padding:14px 12px 4px}.sb-item{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:8px;font-size:14px;font-weight:500;color:#4b5563;text-decoration:none;position:relative}.sb-item:hover{background:#f9fafb;color:var(--fg);text-decoration:none}.sb-item.active{background:var(--primary);color:#fff}.sb-badge{margin-left:auto;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:#ef4444;color:#fff;font-size:10px;font-weight:700;line-height:16px;text-align:center}.sb-user{border-top:1px solid var(--card-bd);padding:12px;display:flex;align-items:center;gap:10px}.sb-user .ua{flex:none;width:28px;height:28px;border-radius:999px;background:var(--line);display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase}.sb-user .ub{min-width:0;flex:1 1}.sb-user .un{font-size:12px;font-weight:500}.sb-user .un,.sb-user .ur{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sb-user .ur{font-size:10px;color:var(--faint)}.sb-signout{border:none;background:none;color:var(--faint);cursor:pointer;padding:6px;border-radius:8px;display:inline-flex}.sb-signout:hover{color:var(--muted);background:var(--subtle)}body.has-sidebar .envbanner,body.has-sidebar header.app,body.has-sidebar>main{margin-left:224px}body.has-sidebar .brand-top{visibility:hidden}body.has-sidebar .bottomnav{display:none}body.has-sidebar main.with-nav{padding-bottom:32px}}