
:root{--bg:#0F1519;--panel:#161D23;--card:#1B242B;--line:#27333C;--line-2:#35434E;--ink:#E7ECF0;--muted:#98A6B3;--faint:#6B7A87;
--accent:#3E8FB0;--accent-ink:#9CD1E6;--amber:#D9A441;--amber-ink:#F0CB7C;--red:#E0705E;--green:#5FB58A;--rail:232px}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 "Avenir Next","Segoe UI",system-ui,-apple-system,sans-serif}
a{color:var(--accent-ink)}
.shell{display:grid;grid-template-columns:var(--rail) 1fr;min-height:100vh}
.rail{background:var(--panel);border-right:1px solid var(--line);padding:22px 16px;display:flex;flex-direction:column;gap:3px}
.brand{display:block;margin:0 6px 22px}.brand img{width:100%;max-width:190px;height:auto;display:block}
.wsname{color:var(--ink);font-weight:600;font-size:15px;margin:0 8px 14px}.wsname small{display:block;font-weight:400;font-size:12px;color:var(--faint)}
.rail a:not(.brand){color:var(--muted);text-decoration:none;padding:9px 10px;border-radius:6px;display:block}
.rail a small{display:block;font-size:12px;color:var(--faint)}
.rail a.on{background:var(--card);color:var(--ink);box-shadow:inset 3px 0 0 var(--accent)}
.rail .who{margin-top:auto;font-size:12px;color:var(--faint);padding:10px}
.rail .who a{display:inline;padding:0;color:var(--muted);text-decoration:underline}
main{padding:30px 34px 60px;max-width:1120px}
h1{font-size:24px;font-weight:600;margin:0 0 4px;letter-spacing:-.2px}
.lede{color:var(--muted);margin:0 0 24px}
h2{font-size:15px;font-weight:600;margin:28px 0 10px;color:var(--muted)}
.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:16px 18px}
.grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.split{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.side{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:16px 18px;border-top:3px solid var(--accent)}
.side.a{border-top-color:var(--amber)}
.side h2{margin-top:0;color:var(--ink)}
.side .role{color:var(--muted);font-size:13px;margin:-6px 0 12px}
table{width:100%;border-collapse:collapse;font-size:14px}
th{text-align:left;color:var(--faint);font-weight:500;font-size:12.5px;padding:6px 8px;border-bottom:1px solid var(--line-2)}
td{padding:9px 8px;border-bottom:1px solid var(--line);vertical-align:top}
tr:last-child td{border-bottom:0}
.num{font-size:34px;font-weight:600;line-height:1.1;margin:0;color:var(--ink)}
.num.warn{color:var(--amber-ink)}.num.bad{color:var(--red)}
.tag{display:inline-block;font-size:12px;padding:2px 9px;border-radius:10px;background:#243039;color:var(--accent-ink)}
.tag.live,.tag.let{background:#1E3A2E;color:#8FD6AE}.tag.draft,.tag.ended{background:#2A323A;color:var(--muted)}
.tag.amber,.tag.vacant,.tag.turnaround{background:#3A2E14;color:var(--amber-ink)}.tag.red{background:#3E2320;color:#F2A59A}
form.inline{display:flex;flex-wrap:wrap;gap:8px;align-items:end;margin-top:12px}
label{display:flex;flex-direction:column;font-size:12.5px;color:var(--muted);gap:3px}
label.check{flex-direction:row;align-items:center;gap:6px;padding-bottom:8px}
input,select,textarea{font:inherit;font-size:14px;padding:7px 9px;border:1px solid var(--line-2);border-radius:6px;background:#0F1519;color:var(--ink);min-width:0;color-scheme:dark}
input::placeholder{color:var(--faint)}
input:focus,select:focus,textarea:focus,button:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
button{font:inherit;font-size:14px;padding:8px 14px;border:0;border-radius:6px;background:var(--accent);color:#08131A;font-weight:600;cursor:pointer}
button.quiet{background:#243039;color:var(--ink);font-weight:500}
.empty{color:var(--muted);font-size:14px;padding:10px 0}
.empty b{color:var(--ink);font-weight:500}
details{margin-top:10px}summary{cursor:pointer;color:var(--accent-ink);font-size:14px}
.note{border-left:3px solid var(--line-2);padding:4px 12px;margin:8px 0;font-size:14px}
.note small{color:var(--faint);display:block}
ul.plain{padding-left:18px;margin:8px 0}
.login{max-width:380px;margin:12vh auto}
.err{color:var(--red);font-size:14px}
.overdue{color:var(--red);font-weight:500}
.ws{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.ws a{display:block;text-decoration:none;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:10px;padding:20px 22px;box-shadow:inset 4px 0 0 var(--accent)}
.ws a.client{box-shadow:inset 4px 0 0 var(--amber)}.ws a.personal{box-shadow:inset 4px 0 0 var(--faint)}
.ws a h2{margin:0 0 4px;font-size:18px;color:var(--ink)}.ws a p{margin:0;color:var(--muted);font-size:14px}
.ws a .bad{color:var(--red)}
@media (max-width:820px){
  .shell{grid-template-columns:1fr}
  .rail{flex-direction:row;overflow-x:auto;padding:10px 12px;gap:2px;position:sticky;top:0;z-index:2;align-items:center}
  .brand{margin:0 12px 0 2px}.brand img{width:120px}
  .wsname{display:none}.rail a small,.rail .who{display:none}
  .rail a:not(.brand){white-space:nowrap;padding:8px 10px}
  main{padding:18px 16px 60px}
  .split{grid-template-columns:1fr}
}

.figs{display:grid;grid-template-columns:1fr 1fr;gap:10px 14px;margin-top:10px}
.figs div{display:flex;flex-direction:column}.figs b{font-size:20px;font-weight:600;line-height:1.1}.figs b.bad{color:var(--red)}.figs b.dim{color:var(--faint);font-weight:400}
.figs span{font-size:12px;color:var(--muted)}

/* health */
.num .unit{font-size:15px;font-weight:400;color:var(--muted)}
.num.good,b.good{color:var(--green)}b.warn{color:var(--amber-ink)}
.dim{color:var(--faint)}
.meter{height:8px;background:#243039;border-radius:4px;margin:10px 0 4px;overflow:hidden}
.meter-fill{height:100%;background:var(--accent);border-radius:4px}.meter-fill.over{background:var(--red)}
.meter-label{display:block;color:var(--muted);font-size:12.5px}
.wchart{width:100%;height:170px;display:block;overflow:visible}
.wchart polyline{fill:none;vector-effect:non-scaling-stroke}
.wchart .raw{stroke:var(--faint);stroke-width:1;stroke-dasharray:1 5;stroke-linecap:round;stroke-width:4}
.wchart .avg{stroke:var(--accent-ink);stroke-width:2.5}
.days{display:grid;grid-template-columns:repeat(auto-fill,minmax(34px,1fr));gap:5px}
.days .d{text-align:center;font-size:12.5px;padding:6px 0;border-radius:6px;background:#243039;color:var(--muted)}
.days .d.done{background:#1E3A2E;color:#8FD6AE}.days .d.missed{background:#3E2320;color:#F2A59A}
.days .d.today{outline:2px solid var(--accent);color:var(--ink)}.days .d.future{background:transparent;border:1px dashed var(--line-2)}
button.small{padding:4px 10px;font-size:12.5px}
.meter{position:relative}.meter-floor{position:absolute;top:-3px;bottom:-3px;width:2px;background:var(--amber);z-index:1}
td.under{color:var(--amber-ink)}
