:root{
  --ground:#F6F7F4; --surface:#FFFFFF; --surface-2:#FBFCFA; --surface-sunk:#EFF1EC;
  --ink:#191E1A; --ink-2:#455049; --muted:#69736B; --faint:#9AA39B;
  --line:#DEE3DC; --line-strong:#C6CEC4;
  --accent:#2F6B42; --accent-ink:#FFFFFF; --accent-soft:#E7F0E8; --accent-line:#B9D3BF;
  --amber:#9A6206; --amber-soft:#FBF0DC; --amber-line:#E4C88C;
  --avail:#1F6E7A; --avail-soft:#E4F1F3; --avail-line:#A8CDD3;
  --crit:#A33228;
  --shadow:0 1px 2px rgba(25,30,26,.06), 0 8px 24px -12px rgba(25,30,26,.22);
  --shadow-pop:0 2px 6px rgba(25,30,26,.10), 0 18px 44px -14px rgba(25,30,26,.36);
  --ui:"IBM Plex Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Consolas,monospace;
  --display:"Fraunces",Georgia,"Times New Roman",serif;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --ground:#141613; --surface:#1C201C; --surface-2:#20241F; --surface-sunk:#171A16;
    --ink:#E9EDE7; --ink-2:#C3CBC0; --muted:#98A296; --faint:#6E776D;
    --line:#2E332D; --line-strong:#3D443C;
    --accent:#74BC8B; --accent-ink:#101A13; --accent-soft:#1E2D22; --accent-line:#33513C;
    --amber:#DDA249; --amber-soft:#2C2314; --amber-line:#4E3E1F;
    --avail:#63BAC6; --avail-soft:#132A2D; --avail-line:#2A4A50;
    --crit:#E08174;
    --shadow:0 1px 2px rgba(0,0,0,.5), 0 8px 24px -12px rgba(0,0,0,.7);
    --shadow-pop:0 2px 6px rgba(0,0,0,.5), 0 18px 44px -14px rgba(0,0,0,.8);
  }
}
:root[data-theme="dark"]{
  --ground:#141613; --surface:#1C201C; --surface-2:#20241F; --surface-sunk:#171A16;
  --ink:#E9EDE7; --ink-2:#C3CBC0; --muted:#98A296; --faint:#6E776D;
  --line:#2E332D; --line-strong:#3D443C;
  --accent:#74BC8B; --accent-ink:#101A13; --accent-soft:#1E2D22; --accent-line:#33513C;
  --amber:#DDA249; --amber-soft:#2C2314; --amber-line:#4E3E1F;
  --avail:#63BAC6; --avail-soft:#132A2D; --avail-line:#2A4A50;
  --crit:#E08174;
  --shadow:0 1px 2px rgba(0,0,0,.5), 0 8px 24px -12px rgba(0,0,0,.7);
  --shadow-pop:0 2px 6px rgba(0,0,0,.5), 0 18px 44px -14px rgba(0,0,0,.8);
}

*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--ground);color:var(--ink);font-family:var(--ui);font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased}
a{color:var(--accent)}
.wrap{max-width:1240px;margin:0 auto;padding:0 20px 64px}

.topbar{position:sticky;top:0;z-index:60;background:var(--surface);border-bottom:1px solid var(--line)}
.topbar-in{max-width:1240px;margin:0 auto;padding:12px 20px;display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.mark{display:flex;align-items:baseline;gap:9px;text-decoration:none;color:var(--ink)}
.mark b{font-family:var(--display);font-weight:600;font-size:19px;letter-spacing:-.01em}
.mark span{font-size:10px;text-transform:uppercase;letter-spacing:.13em;color:var(--faint);font-weight:600}
.spacer{flex:1}

.weeknav{display:flex;align-items:center;gap:2px;background:var(--surface-sunk);border:1px solid var(--line);border-radius:8px;padding:3px}
.weeknav a{display:block;color:var(--muted);font-size:15px;line-height:1;padding:6px 10px;border-radius:5px;text-decoration:none}
.weeknav a:hover{background:var(--surface);color:var(--ink)}
.weeklabel{padding:0 12px;text-align:center;min-width:190px}
.weeklabel .wk{font-family:var(--display);font-weight:600;font-size:15px;display:block;line-height:1.2}
.weeklabel .dt{font-size:11px;color:var(--muted);font-family:var(--mono);letter-spacing:-.01em}

.btn{font:inherit;font-size:13px;font-weight:500;padding:8px 13px;border-radius:7px;border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);cursor:pointer;display:inline-flex;align-items:center;gap:7px;white-space:nowrap;text-decoration:none}
.btn:hover{background:var(--surface-sunk)}
.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}
.btn-primary:hover{filter:brightness(1.08);background:var(--accent)}
.btn:disabled{opacity:.45;cursor:default}
.btn:focus-visible,.cell:focus-visible,.pbtn:focus-visible,.seg button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

.status{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.09em;padding:5px 10px;border-radius:999px;border:1px solid}
.status.draft{color:var(--amber);background:var(--amber-soft);border-color:var(--amber-line)}
.status.published{color:var(--accent);background:var(--accent-soft);border-color:var(--accent-line)}
.dot{width:6px;height:6px;border-radius:50%;background:currentColor}

.controls{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:18px 0 10px}
.seg{display:inline-flex;background:var(--surface-sunk);border:1px solid var(--line);border-radius:8px;padding:3px;gap:2px}
.seg button{font:inherit;font-size:12.5px;font-weight:500;border:0;background:transparent;color:var(--muted);padding:6px 12px;border-radius:5px;cursor:pointer}
.seg button[aria-pressed="true"]{background:var(--surface);color:var(--ink);font-weight:600;box-shadow:0 1px 2px rgba(0,0,0,.07)}
.ctl-label{font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--faint);font-weight:600}
.closenote{font-size:12px;color:var(--muted);font-family:var(--mono)}
.closenote b{color:var(--ink);font-weight:600}
.check{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;color:var(--ink-2);cursor:pointer;user-select:none}
.check input{accent-color:var(--accent);width:15px;height:15px;cursor:pointer}

.board{border:1px solid var(--line);border-radius:11px;background:var(--surface);overflow:hidden;box-shadow:var(--shadow)}
.scroll{overflow-x:auto}
table{border-collapse:separate;border-spacing:0;width:100%;min-width:960px}
thead th{position:sticky;top:57px;z-index:30;background:var(--surface-2);border-bottom:1px solid var(--line-strong);padding:9px 8px;text-align:center;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}
thead th .d{display:block;font-family:var(--mono);font-size:12px;color:var(--ink-2);text-transform:none;font-weight:500;margin-top:2px}
thead th.wknd{background:var(--accent-soft);color:var(--accent)}
thead th.wknd .d{color:var(--accent)}
th.namecol,td.name{position:sticky;left:0;z-index:20;text-align:left;padding-left:16px;min-width:186px;width:186px}
th.namecol{z-index:40}
td.name{background:var(--surface);border-right:1px solid var(--line);padding-right:10px}
tbody tr:hover td.name{background:var(--surface-2)}
th.tot,td.tot{width:74px;min-width:74px;text-align:right;padding-right:14px}

tbody td{border-bottom:1px solid var(--line);padding:0;vertical-align:middle}
tbody tr:last-child td{border-bottom:0}
.nm{display:flex;align-items:center;gap:7px;padding:7px 0}
.nm .who{font-size:13.5px;font-weight:500}
.total{font-family:var(--mono);font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.total.ot{color:var(--amber);font-weight:600}

.cell{display:block;width:100%;border:0;background:transparent;font:inherit;padding:8px 6px;cursor:pointer;text-align:center;color:var(--ink)}
.cell:hover{background:var(--surface-sunk)}
.cell .t{font-family:var(--mono);font-size:12.5px;font-weight:500;letter-spacing:-.03em;font-variant-numeric:tabular-nums;white-space:nowrap}
.cell .hrs{display:block;font-family:var(--mono);font-size:9.5px;color:var(--faint);margin-top:1px;font-variant-numeric:tabular-nums}
.cell.shift{background:var(--surface-2)}
.cell.shift.ot{background:var(--amber-soft)}
.cell.shift.ot .t,.cell.shift.ot .hrs{color:var(--amber);font-weight:600}
.cell.na .t{color:var(--faint);font-weight:400}
.cell.avail{background:var(--avail-soft)}
.cell.avail .t{color:var(--avail);font-weight:600;font-size:10px;letter-spacing:.08em;font-family:var(--ui)}
.cell.blank .t{color:var(--line-strong)}
td.wknd .cell.shift{background:var(--accent-soft)}
td.wknd .cell.shift.ot{background:var(--amber-soft)}
td.wknd .cell.avail{background:var(--avail-soft)}

tfoot td{border-top:1px solid var(--line-strong);background:var(--surface-2);padding:9px 6px;text-align:center}
tfoot td.name{background:var(--surface-2);text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--faint);font-weight:600}
tfoot .cnt{font-family:var(--mono);font-size:14px;font-weight:600;font-variant-numeric:tabular-nums}
tfoot .cnt-l{display:block;font-size:9.5px;color:var(--faint);text-transform:uppercase;letter-spacing:.08em;font-weight:600;margin-top:1px}
tfoot .av{color:var(--avail)}

.summary{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}
.stat{flex:1 1 168px;background:var(--surface);border:1px solid var(--line);border-radius:9px;padding:11px 13px}
.stat .k{font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--faint);font-weight:600}
.stat .v{font-family:var(--mono);font-size:21px;font-weight:600;letter-spacing:-.02em;margin-top:3px;font-variant-numeric:tabular-nums}
.stat .n{font-size:11.5px;color:var(--muted);margin-top:2px}
.stat.warn{border-color:var(--amber-line);background:var(--amber-soft)}
.stat.warn .v,.stat.warn .k{color:var(--amber)}

.caveat{margin-top:12px;padding:11px 14px;border-left:3px solid var(--amber);background:var(--amber-soft);border-radius:0 8px 8px 0;font-size:12.5px;color:var(--ink-2)}
.caveat b{color:var(--amber);font-weight:600}
.legend{display:flex;gap:14px;flex-wrap:wrap;margin-top:14px;font-size:11.5px;color:var(--muted);align-items:center}
.legend .li{display:inline-flex;align-items:center;gap:5px}
.sw{width:11px;height:11px;border-radius:3px;border:1px solid transparent}

.pop{position:absolute;z-index:100;width:214px;background:var(--surface);border:1px solid var(--line-strong);border-radius:10px;box-shadow:var(--shadow-pop);padding:10px}
.pop h4{margin:0 0 2px;font-size:13px;font-weight:600}
.pop .sub{font-size:11px;color:var(--muted);margin-bottom:9px;font-family:var(--mono)}
.pop .grp{font-size:9.5px;text-transform:uppercase;letter-spacing:.1em;color:var(--faint);font-weight:600;margin:9px 0 5px}
.pbtns{display:flex;flex-direction:column;gap:3px}
.pbtn{font:inherit;font-family:var(--mono);font-size:12.5px;text-align:left;padding:6px 9px;border-radius:6px;border:1px solid transparent;background:var(--surface-sunk);color:var(--ink);cursor:pointer;display:flex;justify-content:space-between;align-items:center;width:100%}
.pbtn:hover{background:var(--accent-soft);border-color:var(--accent-line)}
.pbtn.sel{background:var(--accent);color:var(--accent-ink);font-weight:600}
.pbtn small{font-family:var(--ui);font-size:10px;opacity:.7}
.pbtn.avail{color:var(--avail);font-family:var(--ui);font-weight:600;font-size:12px}
.pbtn.avail.sel{background:var(--avail);color:#fff}
.custom{display:flex;gap:4px;margin-top:5px}
.custom input{flex:1;min-width:0;font:inherit;font-family:var(--mono);font-size:12px;padding:5px 7px;border:1px solid var(--line-strong);border-radius:6px;background:var(--surface);color:var(--ink)}
.backdrop{position:fixed;inset:0;z-index:90}

.toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);z-index:300;background:var(--ink);color:var(--ground);padding:9px 16px;border-radius:8px;font-size:13px;font-weight:500;box-shadow:var(--shadow-pop)}

.banner{display:flex;align-items:center;gap:12px;margin-top:14px;padding:12px 15px;border:1px solid var(--accent-line);background:var(--accent-soft);border-radius:9px;flex-wrap:wrap}
.banner .lbl{font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--accent);font-weight:600}
.banner a{font-family:var(--mono);font-size:12.5px;font-weight:600;word-break:break-all}

/* ---- printable sheet ---- */
.sheet-page{max-width:960px;margin:0 auto;padding:28px 22px 60px}
.sheet{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:28px 30px}
.sheet h1{font-family:var(--display);font-weight:600;font-size:22px;margin:0}
.sheet .sh-sub{font-size:12px;color:var(--muted);margin-top:3px;font-family:var(--mono)}
.sheet table{min-width:0;margin-top:16px}
.sheet th,.sheet td{border:1px solid var(--line-strong);padding:5px 6px;font-size:11px;text-align:center;font-family:var(--mono);font-variant-numeric:tabular-nums;position:static}
.sheet th{background:var(--surface-sunk);font-family:var(--ui);font-size:9.5px;text-transform:uppercase;letter-spacing:.07em;font-weight:600;color:var(--muted)}
.sheet td.n{text-align:left;font-family:var(--ui);font-size:11.5px;font-weight:500;white-space:nowrap;background:var(--surface);width:auto;min-width:0}
.sheet .avail-c{color:var(--avail);font-weight:600;font-size:9.5px;font-family:var(--ui);letter-spacing:.06em}
.sheet .na-c{color:var(--faint)}
.sheet .foot{margin-top:14px;font-size:10.5px;color:var(--muted);display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}

.emp-list{list-style:none;padding:0;margin:14px 0 0;display:flex;flex-direction:column;gap:6px;max-width:520px}
.emp-list li{display:flex;align-items:center;gap:10px;background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:8px 12px}
.emp-list li.inactive{opacity:.5}
.emp-list .en{flex:1;font-weight:500}

@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
@media print{
  .topbar,.controls,.summary,.caveat,.legend,.banner,.noprint{display:none!important}
  body{background:#fff}
  .sheet{border:0;padding:0}
  .sheet-page{padding:0}
  .sheet th,.sheet td{border-color:#999}
}

/* ================= public employee view ================= */
.pub{max-width:680px;margin:0 auto;padding:0 16px 56px}
.pub-head{padding:22px 0 16px;border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:14px}
.pub-mark{display:flex;flex-direction:column;gap:1px}
.pub-mark b{font-family:var(--display);font-weight:600;font-size:23px;letter-spacing:-.015em}
.pub-mark span{font-size:10px;text-transform:uppercase;letter-spacing:.16em;color:var(--faint);font-weight:600}
.pub-weeks{display:flex;align-items:center;gap:8px}
.pub-weeks a,.pub-weeks .off{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:8px;border:1px solid var(--line-strong);text-decoration:none;color:var(--ink);font-size:16px;flex:none}
.pub-weeks a:hover{background:var(--surface-sunk)}
.pub-weeks .off{opacity:.28;border-style:dashed}
.pub-label{flex:1;text-align:center;font-family:var(--mono);font-size:13.5px;font-weight:500;color:var(--ink-2)}

.mine{margin-top:20px}
.mine-pick{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.mine-pick label{font-size:11px;text-transform:uppercase;letter-spacing:.11em;color:var(--faint);font-weight:600}
.mine-pick select{flex:1;min-width:180px;font:inherit;font-size:16px;font-weight:500;padding:10px 12px;border:1px solid var(--line-strong);border-radius:9px;background:var(--surface);color:var(--ink)}
.linkbtn{background:none;border:0;color:var(--muted);font:inherit;font-size:12px;text-decoration:underline;cursor:pointer;padding:4px}
.mine-hint{color:var(--muted);font-size:13px;margin:12px 0 0}

.days{list-style:none;padding:0;margin:16px 0 0;display:flex;flex-direction:column;gap:6px}
.day{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.day .dn{flex:1;display:flex;flex-direction:column;font-size:14px;font-weight:600}
.day .dn em{font-style:normal;font-size:11.5px;font-weight:400;color:var(--faint);font-family:var(--mono)}
.day .dv{font-family:var(--mono);font-size:15px;font-weight:600;letter-spacing:-.02em}
.day .dh{font-family:var(--mono);font-size:11.5px;color:var(--faint);min-width:38px;text-align:right}
.day.shift{background:var(--accent-soft);border-color:var(--accent-line)}
.day.shift .dv{color:var(--accent)}
.day.avail{background:var(--avail-soft);border-color:var(--avail-line)}
.day.avail .dv{color:var(--avail);font-family:var(--ui);font-size:13px}
.day.na .dv,.day.blank .dv{color:var(--faint);font-weight:500;font-family:var(--ui);font-size:13px}
.day.today{box-shadow:inset 3px 0 0 var(--ink)}
.mine-tot{margin:14px 0 0;font-size:13.5px;color:var(--ink-2);font-weight:500}

.everyone{margin-top:28px;border-top:1px solid var(--line);padding-top:16px}
.everyone summary{cursor:pointer;font-size:12px;text-transform:uppercase;letter-spacing:.11em;color:var(--muted);font-weight:600;padding:4px 0}
.everyone summary::marker{color:var(--faint)}
.everyone .scroll{margin-top:12px}
.pub-grid{min-width:600px;font-size:12px}
.pub-grid th,.pub-grid td{border:1px solid var(--line);padding:5px 7px;text-align:center;font-family:var(--mono);font-variant-numeric:tabular-nums;position:static}
.pub-grid th{background:var(--surface-sunk);font-family:var(--ui);font-size:9.5px;text-transform:uppercase;letter-spacing:.07em;font-weight:600;color:var(--muted)}
.pub-grid th .d{display:block;font-family:var(--mono);font-size:10.5px;text-transform:none;letter-spacing:0;font-weight:500}
.pub-grid th.wknd{color:var(--accent)}
.pub-grid th.today,.pub-grid td.today{background:var(--surface-2);box-shadow:inset 0 2px 0 var(--ink)}
.pub-grid td.n{text-align:left;font-family:var(--ui);font-size:12.5px;font-weight:500;white-space:nowrap;background:var(--surface)}
.pub-grid td.c-shift{color:var(--ink);font-weight:500}
.pub-grid td.c-avail{color:var(--avail);font-weight:600;font-size:9.5px;font-family:var(--ui);letter-spacing:.05em}
.pub-grid td.c-na{color:var(--faint)}
.key{margin-top:12px;font-size:11.5px;color:var(--muted)}
.key b{color:var(--ink-2);font-family:var(--mono)}

.pub-foot{margin-top:30px;padding-top:16px;border-top:1px solid var(--line);font-size:12px;color:var(--faint)}

@media (max-width:560px){
  .pub-mark b{font-size:20px}
  .mine-pick select{width:100%;flex:1 1 100%}
  .day{padding:11px 12px;gap:9px}
  .day .dv{font-size:14px}
}

/* shift builder + last-change column */
.pop{width:246px}
.custom{display:grid;grid-template-columns:1fr auto 1fr;gap:5px;align-items:center;margin-top:5px}
.custom select{min-width:0;width:100%;font:inherit;font-family:var(--mono);font-size:11.5px;padding:6px 4px;border:1px solid var(--line-strong);border-radius:6px;background:var(--surface);color:var(--ink)}
.custom .dash{font-size:10.5px;color:var(--faint);text-align:center}
.custom .btn{grid-column:1/-1;justify-content:center;padding:6px;font-size:12px;margin-top:2px}
.timefield{font:inherit;font-family:var(--mono);font-size:13px;padding:6px 9px;border:1px solid var(--line-strong);border-radius:7px;background:var(--surface);color:var(--ink)}
th.chg,td.chg{width:96px;min-width:96px;text-align:right;padding-right:14px}
.changed{font-family:var(--mono);font-size:11px;color:var(--faint);font-variant-numeric:tabular-nums}

/* carried over from last week — visible, but clearly not reviewed yet */
.cell.carried{background:repeating-linear-gradient(135deg,transparent,transparent 5px,var(--surface-sunk) 5px,var(--surface-sunk) 10px)}
.cell.carried .t{color:var(--muted);font-weight:400}
.cell.carried .hrs{color:var(--line-strong)}
td.wknd .cell.carried{background:repeating-linear-gradient(135deg,transparent,transparent 5px,var(--surface-sunk) 5px,var(--surface-sunk) 10px)}
.sw-carried{background:repeating-linear-gradient(135deg,var(--surface),var(--surface) 3px,var(--line-strong) 3px,var(--line-strong) 6px);border-color:var(--line-strong)}

/* destructive action — kept away from Publish on purpose */
.btn-danger{border-color:var(--crit);color:var(--crit);background:transparent}
.btn-danger:hover{background:var(--crit);color:var(--surface);border-color:var(--crit)}

.modal-back{position:fixed;inset:0;z-index:400;background:rgba(15,20,16,.5);display:flex;align-items:center;justify-content:center;padding:20px}
.modal-card{background:var(--surface);border:1px solid var(--line-strong);border-radius:12px;box-shadow:var(--shadow-pop);padding:22px 24px;max-width:400px}
.modal-card h3{margin:0 0 8px;font-family:var(--display);font-weight:600;font-size:18px}
.modal-card p{margin:0;font-size:13.5px;color:var(--ink-2);line-height:1.5}
.modal-card b{color:var(--ink)}
.modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:18px}

.toast-undo{display:flex;align-items:center;gap:14px;padding-right:8px}
.toast-undo .undo{background:none;border:0;color:var(--ground);font:inherit;font-size:12.5px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;cursor:pointer;padding:5px 9px;border-radius:6px}
.toast-undo .undo:hover{background:rgba(255,255,255,.16)}
.changed.carried{font-style:italic}

/* meal + rest break guidance on the employee view */
.day.has-breaks{flex-wrap:wrap}
.day .breaks{flex:1 1 100%;margin:8px 0 0;padding-top:8px;border-top:1px dashed var(--line-strong);font-size:12px;color:var(--muted);line-height:1.5}
.day .breaks b{color:var(--ink);font-weight:600;font-family:var(--mono)}
.day .breaks.meal{color:var(--ink-2)}
.breaks-note{margin-top:28px;padding:18px 20px;border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:0 10px 10px 0;background:var(--surface)}
.breaks-note h2{margin:0 0 10px;font-family:var(--display);font-weight:600;font-size:17px}
.breaks-note p{margin:0 0 10px;font-size:13px;color:var(--ink-2);line-height:1.55;max-width:62ch}
.breaks-note p:last-child{margin-bottom:0}
.breaks-note b{color:var(--ink);font-weight:600}
.sheet .breaks-line{margin:14px 0 0;padding-top:11px;border-top:1px solid var(--line);font-size:10.5px;line-height:1.55;color:var(--muted);max-width:none}
.sheet .breaks-line b{color:var(--ink-2);font-weight:600}
@media print{.sheet .breaks-line{border-top-color:#999;color:#333}}

/* the full grid is the thing most people came for */
.everyone h2{margin:0 0 4px;font-family:var(--display);font-weight:600;font-size:17px}
.everyone .scroll{margin-top:10px;border:1px solid var(--line);border-radius:9px}
.pub-grid{width:100%}
.pub-grid tbody tr{cursor:pointer}
.pub-grid tbody tr:hover th.n{background:var(--surface-sunk)}
/* name column survives horizontal scrolling on a phone */
.pub-grid th.n{position:sticky;left:0;z-index:2;text-align:left;font-family:var(--ui);font-size:12.5px;
  font-weight:500;white-space:nowrap;background:var(--surface);border-right:1px solid var(--line-strong);
  text-transform:none;letter-spacing:0;color:var(--ink)}
.pub-grid thead th:first-child{position:sticky;left:0;z-index:3;background:var(--surface-sunk)}
.pub-grid tbody tr.me th.n{background:var(--accent);color:var(--accent-ink);font-weight:700}
.pub-grid tbody tr.me td{background:var(--accent-soft);font-weight:600;color:var(--ink)}
.pub-grid tbody tr.me td.c-na{color:var(--muted)}

/* one person's week — the phone path */
.nm a.who{color:var(--ink);text-decoration:none;border-bottom:1px solid transparent}
.nm a.who:hover{border-bottom-color:var(--line-strong)}
.person{max-width:560px;margin:0 auto;padding:0 16px 56px}
.person-head{padding:20px 0 14px;border-bottom:1px solid var(--line)}
.back{font-size:12.5px;text-decoration:none;color:var(--muted)}
.back:hover{color:var(--ink)}
.person-head h1{margin:10px 0 2px;font-family:var(--display);font-weight:600;font-size:26px;letter-spacing:-.015em}
.person-sub{margin:0;font-family:var(--mono);font-size:12.5px;color:var(--muted)}
.days.edit{margin-top:18px}
.days.edit .day{padding:0 0 0 14px;gap:0}
.days.edit .day .dn{padding:12px 0}
.days.edit .cell{width:auto;min-width:150px;padding:16px 14px;text-align:right;border-radius:0 9px 9px 0}
.days.edit .cell .t{font-size:15px}
.days.edit .day.blank .cell .t{color:var(--faint);font-family:var(--ui);font-size:13px;font-weight:500}
.person-tot{margin:18px 0 0;font-size:13.5px;color:var(--ink-2)}
.person-tot b{font-family:var(--mono);font-size:16px}
.person-tot .changed{margin-left:8px}
.person-nav{display:flex;align-items:center;gap:10px;margin-top:24px;padding-top:18px;border-top:1px solid var(--line)}
.person-nav select{flex:1;font:inherit;font-size:16px;padding:10px 12px;border:1px solid var(--line-strong);border-radius:9px;background:var(--surface);color:var(--ink)}
.person-foot{margin-top:20px;font-size:12px;color:var(--faint);line-height:1.5}

/* sign in */
.login{max-width:340px;margin:0 auto;padding:72px 20px}
.login-mark{display:flex;flex-direction:column;gap:2px;margin-bottom:26px}
.login-mark b{font-family:var(--display);font-weight:600;font-size:24px;letter-spacing:-.015em}
.login-mark span{font-size:10px;text-transform:uppercase;letter-spacing:.16em;color:var(--faint);font-weight:600}
.login form{display:flex;flex-direction:column;gap:8px}
.login label{font-size:11px;text-transform:uppercase;letter-spacing:.11em;color:var(--faint);font-weight:600}
.login input{font:inherit;font-size:16px;padding:11px 13px;border:1px solid var(--line-strong);border-radius:9px;background:var(--surface);color:var(--ink)}
.login .btn{justify-content:center;padding:11px;margin-top:6px}
.login .err{margin:2px 0 0;font-size:12.5px;color:var(--crit)}
.login-foot{margin-top:26px;font-size:12px;color:var(--faint)}

/* The editor's sticky thead offset (top:57px, its toolbar height) leaked onto the public
   grid's Employee header when the name column was made sticky, pushing that one cell 57px
   below the day headers. The public page has no toolbar: stick sideways only. */
.pub-grid thead th:first-child{top:auto}
/* keep "8:30-CLOSE" on one line — wrapping it mid-token made every row ~47px tall */
.pub-grid th.n,.pub-grid td{white-space:nowrap}

/* Employee names always read as caps, everywhere they appear. Display-layer only --
   the stored name keeps whatever casing was typed, so adding last names later
   ("Taylor McKenzie") does not lose the real spelling. */
.nm .who,                      /* editor grid */
.pub-grid th.n,                /* public grid */
.sheet td.n,                   /* printed sheet */
.emp-list .en,                 /* People page */
.person-head h1,               /* one person's week */
.pop h4,                       /* cell picker heading */
.mine-pick select,
.mine-pick select option,
.person-nav select,
.person-nav select option{text-transform:uppercase}
