:root{--brand: #054B70;--brand-dark: #033850;--brand-soft: #e8f1f4;--brand-2: #8CB7C4;--bg: #f3f6f8;--surface: #ffffff;--border: #dfe6ea;--text: #101010;--muted: #707070;--heading-font: "Poppins", "Segoe UI", sans-serif;--danger: #b42318;--radius: 8px;--shadow: 0 1px 2px rgba(16, 24, 40, .06);--green-bg: #e7f6ec;--green-fg: #146c2e;--blue-bg: #e3eef2;--blue-fg: #054B70;--amber-bg: #fdf3dc;--amber-fg: #8a5a00;--red-bg: #fde8e7;--red-fg: #b42318;--purple-bg: #f0eafb;--purple-fg: #5b3aa8;--teal-bg: #e2f5f3;--teal-fg: #0d6b62;--grey-bg: #eceef1;--grey-fg: #374151;--muted-bg: #f4f5f7;--muted-fg: #8b93a0;font-family:Roboto,Segoe UI,system-ui,sans-serif;color:var(--text);background:var(--bg);font-size:14px;line-height:1.45}*{box-sizing:border-box}body{margin:0;background:var(--bg)}a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,.stat .value,.brand{font-family:var(--heading-font)}h1{font-size:24px;margin:0;font-weight:500;color:var(--brand)}h2{font-size:16px;margin:0 0 12px;font-weight:500;color:var(--brand)}h3{font-size:14px;margin:0 0 8px;font-weight:500}button,.btn,.badge,.nav{font-family:var(--heading-font)}p{margin:0 0 10px}.shell{display:flex;min-height:100vh}.sidebar{width:236px;flex-shrink:0;background:var(--brand);color:#e3eef2;display:flex;flex-direction:column;padding:14px 12px;position:sticky;top:0;height:100vh;overflow-y:auto}.brand{display:flex;flex-direction:column;align-items:center;padding:0 10px 8px;color:#fff}.brand img{width:108px;height:108px;object-fit:contain}.brand .app{font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--brand-2);font-weight:500}.nav-section{font-family:var(--heading-font);font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--brand-2);margin:16px 10px 6px}.sidebar button.nav-section{display:flex;align-items:center;justify-content:space-between;width:calc(100% - 20px);padding:4px 0;margin:12px 10px 4px;border:none;background:none;border-radius:0;color:var(--brand-2);font-weight:500}.sidebar button.nav-section:hover{background:none;color:#fff}.nav-section .chev{font-size:10px;transition:transform .15s}.nav-section[aria-expanded=false] .chev{transform:rotate(-90deg)}.nav-section .hidden-count{margin-left:auto;margin-right:8px}.sidebar a.nav{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;border-radius:6px;color:#e3eef2;margin-bottom:2px;font-weight:300;border-left:3px solid transparent}.sidebar a.nav:hover{background:#ffffff14;text-decoration:none}.sidebar a.nav.active{background:#ffffff1f;color:#fff;font-weight:500;border-left-color:var(--brand-2)}.nav-count{min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:var(--brand-2);color:var(--brand-dark);font-size:11px;font-weight:700;display:inline-flex;align-items:center;justify-content:center}.sidebar .who{margin-top:auto;padding:12px 10px 0;border-top:1px solid rgba(255,255,255,.12);font-size:13px}.sidebar .who .name{color:#fff;font-weight:600}.sidebar .who button{margin-top:8px}.main{flex:1;min-width:0;padding:24px 28px 48px}.page-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px;flex-wrap:wrap}.page-head .sub{color:var(--muted);margin-top:2px}.mobile-bar{display:none}@media(max-width:860px){.shell{flex-direction:column}.sidebar{position:fixed;z-index:30;left:0;top:0;transform:translate(-100%);transition:transform .2s}.sidebar.open{transform:none}.mobile-bar{display:flex;align-items:center;gap:12px;background:var(--brand);color:#fff;padding:10px 16px;font-family:var(--heading-font);font-weight:500}.main{padding:16px}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px;margin-bottom:16px}.card.flush{padding:0;overflow:hidden}.card.flush>h2{padding:16px 18px 0}.grid{display:grid;gap:16px}.grid.cols-2{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:16px}.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px}.stat .label{color:var(--muted);font-size:12px}.stat .value{font-size:24px;font-weight:650;margin-top:2px}.stat .hint{color:var(--muted);font-size:12px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:9px 12px;border-bottom:1px solid var(--border);vertical-align:middle}th{font-size:12px;color:var(--muted);font-weight:600;background:#fafbfc;white-space:nowrap}tr:last-child td{border-bottom:none}th:first-child,td:first-child{padding-left:18px}th:last-child,td:last-child{padding-right:18px}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}tr.clickable{cursor:pointer}tr.clickable:hover td{background:#f8fafc}tr.current td{background:var(--brand-soft);font-weight:600}tr.dim td{color:var(--muted)}.empty{padding:28px;text-align:center;color:var(--muted)}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap}.tone-green{background:var(--green-bg);color:var(--green-fg)}.tone-blue{background:var(--blue-bg);color:var(--blue-fg)}.tone-amber{background:var(--amber-bg);color:var(--amber-fg)}.tone-red{background:var(--red-bg);color:var(--red-fg)}.tone-purple{background:var(--purple-bg);color:var(--purple-fg)}.tone-teal{background:var(--teal-bg);color:var(--teal-fg)}.tone-grey{background:var(--grey-bg);color:var(--grey-fg)}.tone-muted{background:var(--muted-bg);color:var(--muted-fg)}.txt-red{color:var(--red-fg);font-weight:600}.txt-amber{color:var(--amber-fg);font-weight:600}.txt-green{color:var(--green-fg);font-weight:600}.muted{color:var(--muted)}.small{font-size:12px}label.field{display:block;margin-bottom:12px}label.field>span{display:block;font-size:12px;font-weight:600;color:#374151;margin-bottom:4px}input[type=text],input[type=email],input[type=password],input[type=number],input[type=date],input[type=time],input[type=month],select,textarea{width:100%;padding:8px 10px;border:1px solid #cfd4da;border-radius:6px;font:inherit;background:#fff;color:inherit}input:focus,select:focus,textarea:focus{outline:2px solid rgba(15,76,129,.25);border-color:var(--brand)}.inline{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.inline>input,.inline>select{width:auto}.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}.check{display:flex;align-items:center;gap:8px;margin-bottom:10px;cursor:pointer}.check input{width:16px;height:16px}.help{color:var(--muted);font-size:12px;margin-top:4px}button,.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 14px;border-radius:6px;border:1px solid #cfd4da;background:#fff;color:var(--text);font:inherit;font-weight:600;cursor:pointer;white-space:nowrap}button:hover,.btn:hover{background:#f3f4f6;text-decoration:none}button:disabled{opacity:.55;cursor:default}button.primary,.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}button.primary:hover,.btn.primary:hover{background:var(--brand-dark)}button.danger{color:var(--danger);border-color:#f1c2be}button.danger:hover{background:var(--red-bg)}button.link{border:none;background:none;padding:0;color:var(--brand);font-weight:600}button.link:hover{text-decoration:underline;background:none}button.small,.btn.small{padding:4px 10px;font-size:12px}.sidebar button{background:transparent;color:#dbe6f1;border-color:#ffffff40}.sidebar button:hover{background:#ffffff1a}.alert{padding:10px 14px;border-radius:6px;margin-bottom:14px}.alert.error{background:var(--red-bg);color:var(--red-fg)}.alert.success{background:var(--green-bg);color:var(--green-fg)}.alert.info{background:var(--blue-bg);color:var(--blue-fg)}.alert.warn{background:var(--amber-bg);color:var(--amber-fg)}.days{display:flex;gap:6px;flex-wrap:wrap}.day-toggle{min-width:46px;padding:6px 8px}.day-toggle.on{background:var(--brand);border-color:var(--brand);color:#fff}.strong{font-weight:600;color:#374151;display:block;margin-bottom:6px}.sched>.field{margin-bottom:18px}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{padding:6px 12px;border-radius:999px;font-size:13px;font-weight:500}.chip.on{background:var(--brand);border-color:var(--brand);color:#fff}.chip.clear{color:var(--muted);border-style:dashed}select.time-select{width:96px;font-variant-numeric:tabular-nums;font-size:15px;padding:7px 8px;cursor:pointer}.time-row{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap;margin-bottom:10px}.time-row label{display:block}.time-dash{color:var(--muted);padding-bottom:9px}.shift-len{display:inline-flex;align-items:center;gap:8px;color:var(--muted);font-weight:500;padding-bottom:9px}.per-day-row .shift-len{padding-bottom:0}.sched-summary{background:var(--brand-soft);color:var(--brand);border-radius:6px;padding:8px 12px;font-weight:500}.per-day-row{display:flex;align-items:center;gap:10px;padding:5px 0;border-bottom:1px solid var(--border);min-height:46px}.per-day-row:last-child{border-bottom:none}.per-day-row .day-toggle{width:56px}.punch-table td{padding:8px 6px}.adjust-box{background:var(--brand-soft);border-radius:8px;padding:14px}.adjust-box .alert{margin-bottom:0}.toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.tab-count{display:inline-block;min-width:20px;padding:0 6px;margin-left:4px;border-radius:999px;background:var(--muted-bg);color:var(--muted);font-size:11px}.tabs button.active .tab-count{background:var(--brand);color:#fff}.person{display:flex;align-items:center;gap:10px}.avatar{width:32px;height:32px;border-radius:50%;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;font-family:var(--heading-font);font-size:12px;font-weight:600;letter-spacing:.02em}.person-name{font-weight:600;color:var(--text)}a .person-name,.clickable .person-name{color:var(--brand)}.filter-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin-bottom:18px}.filter-tile{display:block;text-align:left;padding:14px 16px;border-radius:var(--radius);border:1px solid var(--border);background:#fff;font-family:inherit;font-weight:400;box-shadow:var(--shadow)}.filter-tile:hover{background:#fafcfd;border-color:var(--brand-2)}.filter-tile.active{border-color:var(--brand);box-shadow:0 0 0 2px #054b7026}.filter-tile .label{color:var(--muted);font-size:12px;display:flex;align-items:center;gap:6px}.filter-tile .value{font-family:var(--heading-font);font-size:26px;font-weight:600;color:var(--text);margin-top:2px}.filter-tile .dot{width:8px;height:8px;border-radius:50%;display:inline-block}.week-group{padding:0;overflow:hidden}.week-group>.week-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;width:100%;padding:14px 18px;background:#fff;border:none;border-radius:0;text-align:left;font-weight:400;cursor:pointer}.week-group>.week-head:hover{background:#fafcfd}.week-head .chev{color:var(--muted);transition:transform .15s;width:12px}.week-group.open .week-head .chev{transform:rotate(90deg)}.week-head .title{font-family:var(--heading-font);font-weight:500;font-size:15px;color:var(--brand)}.week-head .counts{display:flex;flex-wrap:wrap;gap:6px;margin-left:auto;align-items:center}.week-head .progress{width:120px;height:6px;border-radius:999px;background:var(--muted-bg);overflow:hidden}.week-head .progress span{display:block;height:100%;background:var(--green-fg)}.week-group table{border-top:1px solid var(--border)}.week-group .week-actions{display:flex;justify-content:flex-end;padding:10px 18px;border-top:1px solid var(--border);background:#fafbfc}.explain-meter{display:inline-flex;align-items:center;gap:8px}.explain-meter .pips{display:inline-flex;gap:3px}.explain-meter .pips i{width:8px;height:8px;border-radius:2px;background:#f1d6b8}.explain-meter .pips i.done{background:var(--green-fg)}.bal{display:inline-flex;flex-direction:column;align-items:flex-end;gap:4px;min-width:90px}.bal .num{font-family:var(--heading-font);font-size:16px;font-weight:600;color:var(--brand)}.bal .track{width:90px;height:5px;border-radius:999px;background:var(--muted-bg);overflow:hidden}.bal .track span{display:block;height:100%;background:var(--brand-2);border-radius:999px}.bal.neg .num{color:var(--red-fg)}th .op{color:var(--brand-2);font-weight:700;margin-right:3px}.calendar-pill{font-size:11px}.home-callout{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;border-left:4px solid #d9822b;background:linear-gradient(90deg,var(--amber-bg),#fff 60%)}.home-callout h2{margin-bottom:4px}.home-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:16px}.home-card{display:block;color:inherit;margin:0;transition:border-color .15s,box-shadow .15s}.home-card:hover{text-decoration:none;border-color:var(--brand-2);box-shadow:0 4px 14px #054b701a}.home-card .label{color:var(--muted);font-size:12px}.home-card .big{font-family:var(--heading-font);font-size:22px;font-weight:600;color:var(--brand);margin:6px 0 4px}.home-card .big .unit{font-size:13px;font-weight:400;color:var(--muted)}.home-card .hint{color:var(--muted);font-size:12px}.week-nav{display:flex;align-items:center;gap:8px}.week-nav .range{display:flex;flex-direction:column;align-items:center;min-width:170px;line-height:1.25}@media(max-width:600px){.hide-sm{display:none}.week-nav .range{min-width:0;flex:1}.week-nav{width:100%}}.report-day{border:1px solid var(--border);border-radius:8px;padding:12px 14px;margin-bottom:10px;background:#fff}.report-day.flagged{border-left:4px solid #d9822b}.report-day.explained{border-left:4px solid var(--green-fg)}.report-day.compact{padding:10px 14px;background:#fbfcfd}.report-day .head{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}.report-day .head .date{font-weight:650;font-family:var(--heading-font);margin-right:4px}.report-day .times{display:flex;flex-wrap:wrap;gap:4px 18px;margin-top:6px;color:var(--muted);font-variant-numeric:tabular-nums}.report-day .times b{color:var(--text);font-weight:600}.report-day .times b.txt-amber{color:var(--amber-fg)}.report-day .ask{margin-top:12px;font-weight:600;font-size:13px}.report-day .reasons{margin-top:6px}.report-day .reasons .chip{padding:4px 10px;font-size:12px;font-weight:500;background:var(--brand-soft);border-color:transparent;color:var(--brand)}.report-day .reasons .chip:hover{background:#d6e7ee}.report-day .reasons .chip.on{background:var(--brand);color:#fff}.report-day textarea{width:100%;margin-top:8px;resize:vertical}.report-day .add-comment{margin-top:8px}.report-day .row-actions{display:flex;gap:14px;margin-top:6px}.report-day.compact{display:flex;flex-wrap:wrap;align-items:center;column-gap:14px}.report-day.compact .head{flex-basis:100%}.report-day.compact .times{flex:1}.report-day.compact .row-actions{margin-top:6px;margin-left:auto}.report-day.compact>.quote,.report-day.compact>input{flex-basis:100%}.report-progress{background:var(--amber-bg);color:var(--amber-fg);border-radius:8px;padding:10px 14px;margin-bottom:12px}.report-progress.ok{background:var(--green-bg);color:var(--green-fg)}.report-progress .bar{height:6px;background:#ffffffb3;border-radius:999px;margin-top:6px;overflow:hidden}.report-progress .bar span{display:block;height:100%;background:currentColor;border-radius:999px;transition:width .25s}.review-summary{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;margin-bottom:14px}.sticky-actions{position:sticky;bottom:0;z-index:2;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:10px 14px;margin:14px -18px -18px;padding:12px 18px;background:#fff;border-top:1px solid var(--border);border-radius:0 0 var(--radius) var(--radius);box-shadow:0 -8px 16px -12px #10182840}.sticky-actions>.small{margin-right:auto}.sticky-actions .alert{margin:0;flex-basis:100%}.modal-body .sticky-actions{margin:16px -20px 0;padding:14px 20px;border-radius:0}.report-layout{display:grid;grid-template-columns:minmax(0,3fr) minmax(220px,1fr);gap:16px;align-items:start}@media(max-width:900px){.report-layout{grid-template-columns:1fr}}.report-day .quote{margin-top:8px;padding:8px 12px;border-left:3px solid var(--steel, #8CB7C4);background:var(--muted-bg);border-radius:0 6px 6px 0}.report-day .quote .who{font-size:12px;color:var(--muted);font-weight:600;margin-bottom:2px}.ledger td.num{font-variant-numeric:tabular-nums}.ledger tr.accrual td{color:var(--muted)}.wfh-days{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px;margin:14px 0}.wfh-day{border:2px solid var(--border);border-radius:8px;padding:12px;cursor:pointer;background:#fff;text-align:left;display:block;font-weight:400}.wfh-day.selected{border-color:var(--brand);background:var(--brand-soft)}.wfh-day.disabled{cursor:default;opacity:.55}.wfh-day .d{font-weight:650;font-size:15px}.wfh-day .s{color:var(--muted);font-size:12px}.wfh-day .tag{margin-top:6px;font-size:12px;font-weight:600;color:var(--brand)}.auth-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:16px}.auth-card{width:100%;max-width:400px}.auth-wrap{background:linear-gradient(160deg,var(--brand-soft) 0%,var(--bg) 55%)}.auth-card{border-top:4px solid var(--brand)}.auth-card.wide{max-width:760px}.auth-card .logo{display:block;width:220px;margin:0 auto 6px}.auth-card .app-name{text-align:center;font-family:var(--heading-font);font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);margin-bottom:20px}.modal-backdrop{position:fixed;inset:0;background:#11182773;display:flex;align-items:flex-start;justify-content:center;padding:6vh 16px;z-index:50;overflow-y:auto}.modal{background:#fff;border-radius:10px;width:100%;max-width:560px;box-shadow:0 20px 50px #0003;display:flex;flex-direction:column;max-height:88vh;overflow:hidden}.modal.wide{max-width:820px}.modal-head{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:16px 20px;border-bottom:1px solid var(--border);flex-shrink:0}.modal-head h2{margin:0}.modal-body{padding:18px 20px;overflow-y:auto;min-height:0}.modal-body:has(>.sticky-actions){padding-bottom:0}.modal-foot{display:flex;justify-content:flex-end;gap:8px;padding:14px 20px;border-top:1px solid var(--border)}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:16px}.tabs button{border:none;border-bottom:2px solid transparent;border-radius:0;background:none;padding:8px 12px;color:var(--muted)}.tabs button.active{color:var(--brand);border-bottom-color:var(--brand)}.chart-box{width:100%;height:300px}.dropzone{border:2px dashed #c3cad3;border-radius:10px;padding:32px;text-align:center;background:#fafbfc;cursor:pointer}.dropzone.drag{border-color:var(--brand);background:var(--brand-soft)}.spacer{flex:1}.right{text-align:right}.mt{margin-top:12px}
