/* Tracker — ACS Health, Safety & Environment survey system. GOGO's bones
   (tokens, light/dark, sidebar + sticky top bar, cards, pills, tabular
   figures, fixed button order) in ACS's colours, taken from their logo:
   forest green for actions, plum-grey for the brand mark. No build step. */

:root {
  --ink:#1D1A1D; --navy:#3A2E3A; --slate:#4A424A; --muted:#6B6570; --faint:#A39DA6;
  --bg:#F5F6F3; --bg-soft:#ECEFE9; --surface:#FFFFFF; --line:#DFE3DC; --line-strong:#C7CEC4;
  --cta:#2F6B3A; --cta-dark:#24522C; --cta-soft:#E3EFE3; --cta-ink:#1C3F22;
  --glass:#CCD5CC; --glass-deep:#99AA99;
  --plum:#665566; --plum-bg:#F2EDF2; --plum-line:#D9C9D9;
  --amber:#E8A317; --amber-deep:#7A5200;
  --up:#1B7F3B; --up-bg:#E6F5EA; --up-line:#B9E2C5;
  --down:#C2342E; --down-bg:#FBECEA; --down-line:#F3C6C2;
  --warn:#7A5200; --warn-bg:#FDF3D9; --warn-line:#F0DFA8;
  --grey:#5E6560; --grey-bg:#EEF1EE; --grey-line:#D6DCD6;
  --violet:#665566; --violet-bg:#F2EDF2; --violet-line:#D9C9D9;
  --radius:14px; --radius-sm:9px;
  --shadow-sm:0 1px 2px rgba(29,26,29,.06),0 1px 3px rgba(29,26,29,.05);
  --shadow:0 10px 30px -12px rgba(29,26,29,.18);
  --shadow-lg:0 24px 60px -20px rgba(29,26,29,.35);
  --ring:0 0 0 3px rgba(47,107,58,.28);
  --on-cta:#ffffff; --on-up:#ffffff; --on-down:#ffffff;
  --font-display:"Lexend",system-ui,sans-serif;
  --font-body:"Source Sans 3",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --mono:"JetBrains Mono",ui-monospace,Menlo,Consolas,monospace;
  --side:224px; --top:54px;
  color-scheme:light;
}
html[data-theme="dark"] {
  --ink:#ECEAEC; --navy:#F4F1F4; --slate:#CFC8D0; --muted:#A39BA5; --faint:#655E67;
  --bg:#111311; --bg-soft:#181C18; --surface:#1B1F1B; --line:#2A302A; --line-strong:#3A423A;
  --cta:#7BC488; --cta-dark:#A6DCAF; --cta-soft:#18301C; --cta-ink:#C9EDCF;
  --glass:#2C3A2C; --glass-deep:#7BC488;
  --plum:#C9A9C9; --plum-bg:#2A1F2A; --plum-line:#463646;
  --amber:#F0B429; --amber-deep:#F4C95B;
  --up:#4ADE80; --up-bg:#12251A; --up-line:#1E4029;
  --down:#F87171; --down-bg:#2B1417; --down-line:#4C1F24;
  --warn:#F4C95B; --warn-bg:#2A2210; --warn-line:#4A3C1A;
  --grey:#A39BA5; --grey-bg:#1F231F; --grey-line:#30372F;
  --violet:#C9A9C9; --violet-bg:#2A1F2A; --violet-line:#463646;
  --shadow-sm:0 1px 2px rgba(0,0,0,.4); --shadow:0 10px 30px -12px rgba(0,0,0,.55); --shadow-lg:0 24px 60px -20px rgba(0,0,0,.7);
  --ring:0 0 0 3px rgba(123,196,136,.35);
  --on-cta:#0B1A0D; --on-up:#04130A; --on-down:#1F0707;
  color-scheme:dark;
}

* { box-sizing:border-box; }
html,body { margin:0; padding:0; }
body { background:var(--bg); color:var(--ink); font:15.5px/1.5 var(--font-body); min-height:100vh; -webkit-font-smoothing:antialiased; }
a { color:var(--cta); text-decoration:none; }
a:hover { text-decoration:underline; }
h1,h2,h3 { font-family:var(--font-display); color:var(--navy); margin:0; letter-spacing:-.01em; }
h1 { font-size:24px; font-weight:700; }
h2 { font-size:17px; font-weight:600; }
h3 { font-size:14.5px; font-weight:600; }
code,.mono { font-family:var(--mono); font-size:.88em; }
.muted { color:var(--muted); } .faint { color:var(--faint); } .small { font-size:13.5px; } .tiny { font-size:12px; }
.nowrap { white-space:nowrap; } .right { text-align:right; } .center { text-align:center; }
.grow { flex:1; } .row { display:flex; align-items:center; gap:10px; } .wrap { flex-wrap:wrap; }
.stack > * + * { margin-top:14px; }
.hidden { display:none !important; }
:focus-visible { outline:none; box-shadow:var(--ring); border-radius:6px; }

.money { font-family:var(--mono); font-variant-numeric:tabular-nums; white-space:nowrap; text-align:right; font-size:13.5px; }
.money.big { font-size:24px; font-family:var(--font-display); font-weight:700; letter-spacing:-.02em; }
.num { font-family:var(--mono); font-variant-numeric:tabular-nums; white-space:nowrap; font-size:13.5px; }
.size { font-family:var(--mono); font-variant-numeric:tabular-nums; white-space:nowrap; }

/* ---------- shell ---------- */
.top { position:sticky; top:0; z-index:30; height:var(--top); display:flex; align-items:center; gap:14px; padding:0 18px;
  background:var(--surface); border-bottom:1px solid var(--line); }
.brand { display:flex; align-items:center; gap:10px; color:var(--navy); text-decoration:none !important; }
.brand img { width:30px; height:30px; }
.brand b { font:700 20px var(--font-display); letter-spacing:-.03em; }
.brand b i { font-style:normal; color:var(--cta); }
.brand .co { font-size:12.5px; color:var(--muted); border-left:1px solid var(--line); padding-left:10px; margin-left:2px; }
.icon-btn { border:1px solid var(--line); background:var(--surface); color:var(--muted); border-radius:999px; width:34px; height:34px; cursor:pointer; font-size:15px; display:inline-grid; place-items:center; }
.icon-btn:hover { color:var(--ink); border-color:var(--line-strong); }
.burger { display:none; }

.gsearch { position:relative; flex:1; max-width:560px; }
.gsearch input { padding-left:34px; padding-right:36px; height:36px; border-radius:999px; background:var(--bg-soft); border-color:transparent; }
.gsearch input:focus { background:var(--surface); border-color:var(--cta); }
.gs-lens { position:absolute; left:12px; top:50%; transform:translateY(-52%); color:var(--faint); font-size:17px; pointer-events:none; }
.gs-key { position:absolute; right:10px; top:50%; transform:translateY(-50%); }
.gs-panel { position:absolute; left:0; right:0; top:42px; background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow-lg); overflow:hidden; z-index:40; }
.gs-panel a { display:flex; align-items:center; gap:10px; padding:9px 14px; color:var(--ink); border-bottom:1px solid var(--line); }
.gs-panel a:last-child { border-bottom:0; }
.gs-panel a:hover, .gs-panel a.on { background:var(--cta-soft); text-decoration:none; }
.gs-panel .k { font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--muted); min-width:72px; }
.gs-panel .t { font-weight:600; }
.gs-panel .s { color:var(--muted); font-size:13px; margin-left:auto; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:50%; }
.gs-panel .none { padding:12px 14px; color:var(--muted); font-size:14px; }

.layout { display:grid; grid-template-columns:var(--side) 1fr; min-height:calc(100vh - var(--top)); }
.side { border-right:1px solid var(--line); background:var(--surface); padding:14px 10px 30px; position:sticky; top:var(--top); height:calc(100vh - var(--top)); overflow:auto; }
.side .grp { font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.09em; color:var(--muted); padding:14px 12px 5px; }
.side a { display:flex; align-items:center; gap:10px; padding:7px 12px; border-radius:var(--radius-sm); color:var(--slate); font-weight:600; font-size:14.5px; text-decoration:none; }
.side a .ic { width:18px; text-align:center; opacity:.75; font-size:14px; }
.side a:hover { background:var(--bg-soft); color:var(--ink); }
.side a.on { background:var(--cta-soft); color:var(--cta-ink); }
.side a.on .ic { opacity:1; }
.side a.primary { background:var(--cta); color:var(--on-cta); margin:4px 2px 8px; justify-content:center; }
.side a.primary:hover { background:var(--cta-dark); }
.side .foot { margin:22px 12px 0; padding-top:12px; border-top:1px solid var(--line); font-size:12px; color:var(--faint); line-height:1.6; }
main { min-width:0; }
.view { padding:22px 26px 60px; max-width:1480px; }

.page-head { display:flex; align-items:flex-end; gap:14px; flex-wrap:wrap; margin-bottom:18px; }
.page-head .sub { color:var(--muted); font-size:14px; margin-top:3px; }
.page-head .actions { margin-left:auto; display:flex; gap:8px; flex-wrap:wrap; align-items:center; }
.crumb { font-size:13px; color:var(--muted); margin-bottom:4px; }
.crumb a { color:var(--muted); }

/* ---------- controls ---------- */
.btn { font:600 14.5px var(--font-body); border-radius:var(--radius-sm); padding:8px 15px; cursor:pointer; border:1px solid var(--cta);
  background:var(--cta); color:var(--on-cta); display:inline-flex; align-items:center; gap:7px; white-space:nowrap; text-decoration:none !important; line-height:1.25; }
.btn:hover { background:var(--cta-dark); border-color:var(--cta-dark); }
.btn:disabled { opacity:.45; cursor:not-allowed; }
.btn.ghost { background:var(--surface); color:var(--slate); border-color:var(--line); }
.btn.ghost:hover { color:var(--ink); border-color:var(--line-strong); background:var(--bg-soft); }
.btn.good { background:var(--up); border-color:var(--up); color:var(--on-up); }
.btn.danger { background:var(--surface); color:var(--down); border-color:var(--down-line); }
.btn.danger:hover { background:var(--down-bg); }
.btn.sm { padding:5px 10px; font-size:13.5px; }
.kbd { font:600 11px var(--mono); padding:1px 5px; border-radius:4px; border:1px solid currentColor; opacity:.65; }
.linkish { background:none; border:0; color:var(--cta); cursor:pointer; font:inherit; padding:0; }
.linkish:hover { text-decoration:underline; }

input,select,textarea { font:inherit; font-size:14.5px; color:var(--ink); background:var(--surface); border:1px solid var(--line-strong); border-radius:8px; padding:7px 10px; width:100%; min-width:0; }
input:focus,select:focus,textarea:focus { outline:none; border-color:var(--cta); box-shadow:var(--ring); }
input[readonly],input:disabled,select:disabled,textarea:disabled { background:var(--bg-soft); color:var(--muted); }
textarea { resize:vertical; min-height:70px; }
input[type=checkbox] { width:auto; accent-color:var(--cta); transform:scale(1.15); }
.field { display:flex; flex-direction:column; gap:4px; min-width:0; }
.field > span { font-size:12px; font-weight:600; color:var(--muted); text-transform:uppercase; letter-spacing:.06em; }
.check { display:flex; align-items:center; gap:9px; font-size:14.5px; cursor:pointer; }
.search { position:relative; }
.search input { padding-left:32px; }
.search::before { content:"⌕"; position:absolute; left:11px; top:50%; transform:translateY(-52%); color:var(--faint); font-size:17px; }

.seg { display:inline-flex; border:1px solid var(--line); border-radius:var(--radius-sm); background:var(--surface); padding:2px; gap:2px; flex-wrap:wrap; }
.seg button,.seg a { border:0; background:none; font:600 13.5px var(--font-body); color:var(--muted); padding:5px 11px; border-radius:7px; cursor:pointer; text-decoration:none !important; white-space:nowrap; }
.seg button:hover,.seg a:hover { color:var(--ink); }
.seg .on, .seg button.on:hover, .seg a.on:hover { background:var(--navy); color:var(--surface); }
.seg .n { font-weight:400; opacity:.75; margin-left:3px; }

/* ---------- cards / kpis ---------- */
.card { background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow-sm); }
.card > .hd { display:flex; align-items:center; gap:10px; padding:13px 16px; border-bottom:1px solid var(--line); }
.card > .hd .more { margin-left:auto; font-size:13.5px; }
.card > .bd { padding:14px 16px; }
.card > .bd.flush { padding:0; overflow-x:auto; }
.grid { display:grid; gap:16px; }
.grid.kpis { grid-template-columns:repeat(auto-fit, minmax(170px, 1fr)); }
.grid.two { grid-template-columns:1fr 1fr; }
.grid.main { grid-template-columns:2fr 1fr; }
.kpi { padding:14px 16px; }
.kpi .lbl { font-size:12px; font-weight:600; color:var(--muted); text-transform:uppercase; letter-spacing:.06em; }
.kpi .val { font:700 26px/1.2 var(--font-display); color:var(--navy); margin-top:4px; letter-spacing:-.02em; }
.kpi .val small { font:600 13px var(--font-body); color:var(--muted); margin-left:6px; letter-spacing:0; }
.kpi .sub { font-size:13px; color:var(--muted); margin-top:2px; }
.kpi.attn .val { color:var(--amber-deep); }

/* ---------- tables ---------- */
table.list { width:100%; border-collapse:collapse; font-size:14.5px; }
table.list th { text-align:left; font-size:11.5px; font-weight:700; text-transform:uppercase; letter-spacing:.07em; color:var(--muted); padding:9px 12px; border-bottom:1px solid var(--line); background:var(--bg-soft); white-space:nowrap; }
table.list td { padding:9px 12px; border-bottom:1px solid var(--line); vertical-align:middle; }
table.list tr:last-child td { border-bottom:0; }
table.list tr.link:hover td { background:var(--cta-soft); cursor:pointer; }
table.list td.right, table.list th.right { text-align:right; }
table.list .ref { font-weight:600; color:var(--navy); white-space:nowrap; }
table.list td.stage { white-space:nowrap; }
table.list td.desc { min-width:220px; }
table.list .ref a { color:inherit; }
.empty { padding:28px 16px; text-align:center; color:var(--muted); }
.empty b { display:block; color:var(--ink); font-family:var(--font-display); margin-bottom:4px; }
.pager { display:flex; align-items:center; gap:10px; padding:10px 14px; border-top:1px solid var(--line); font-size:13.5px; color:var(--muted); }
.pager .grow { flex:1; }

/* pills: stages */
.pill { display:inline-flex; align-items:center; gap:5px; font-size:12px; font-weight:700; padding:2px 9px; border-radius:999px; border:1px solid var(--grey-line); background:var(--grey-bg); color:var(--grey); white-space:nowrap; letter-spacing:.02em; }
.pill::before { content:""; width:6px; height:6px; border-radius:50%; background:currentColor; }
/* stage timeline on the order page */
.timeline { display:flex; gap:0; align-items:stretch; }
.timeline .step { flex:1; padding:8px 10px; border:1px solid var(--line); background:var(--bg-soft); font-size:13px; color:var(--muted); position:relative; }
.timeline .step:first-child { border-radius:var(--radius-sm) 0 0 var(--radius-sm); }
.timeline .step:last-child { border-radius:0 var(--radius-sm) var(--radius-sm) 0; }
.timeline .step + .step { border-left:0; }
.timeline .step b { display:block; color:var(--navy); font-family:var(--font-display); font-weight:600; }
.timeline .step.done { background:var(--cta-soft); color:var(--cta-ink); }
.timeline .step.done b { color:var(--cta-ink); }
.timeline .step.now { background:var(--cta); color:var(--on-cta); }
.timeline .step.now b { color:var(--on-cta); }

.addr { white-space:pre-line; line-height:1.4; }
.drop { position:absolute; left:0; right:0; top:calc(100% + 4px); background:var(--surface); border:1px solid var(--line); border-radius:var(--radius-sm); box-shadow:var(--shadow-lg); z-index:20; max-height:320px; overflow:auto; }
.drop div { padding:8px 12px; cursor:pointer; border-bottom:1px solid var(--line); font-size:14px; }
.drop div:last-child { border-bottom:0; }
.drop div.on, .drop div:hover { background:var(--cta-soft); }
.drop .s { color:var(--muted); font-size:12.5px; }
.drop .acc { font-family:var(--mono); font-size:12px; color:var(--muted); margin-right:6px; }
.drop .stop { color:var(--down); font-weight:700; font-size:12px; margin-left:6px; }
/* ---------- toasts ---------- */
.toasts { position:fixed; right:18px; bottom:18px; display:flex; flex-direction:column; gap:8px; z-index:50; }
.toast { background:var(--navy); color:var(--surface); padding:10px 14px; border-radius:var(--radius-sm); box-shadow:var(--shadow-lg); font-size:14px; animation:tin .18s ease-out; }
.toast.bad { background:var(--down); color:var(--on-down); }
@keyframes tin { from { opacity:0; transform:translateY(6px);} to { opacity:1; transform:none;} }

/* ---------- responsive ---------- */
@media (max-width: 1100px) {
  .editor { grid-template-columns:1fr; }
  .editor .rail { position:static; }
  .grid.main { grid-template-columns:1fr; }
}
@media (max-width: 820px) {
  .layout { grid-template-columns:1fr; }
  .side { position:fixed; left:0; top:var(--top); width:var(--side); transform:translateX(-100%); transition:transform .18s; z-index:25; box-shadow:var(--shadow-lg); }
  .side.open { transform:none; }
  .burger { display:inline-grid; }
  .view { padding:16px 16px 60px; }
  .brand .co { display:none; }
  .gsearch { max-width:none; }
  .grid.two { grid-template-columns:1fr; }
}
/* ---------- muscle memory: same places, same sizes ----------
   Page head sticks under the top bar so the action buttons never move while
   you scroll. Button order is fixed everywhere: destructive first (left),
   secondary ghosts, then the ONE primary action at the far right. */
.page-head { position:sticky; top:var(--top); z-index:20; background:var(--bg); padding:14px 0 12px; margin:-22px 0 14px; border-bottom:1px solid transparent; }
.page-head.stuck { border-bottom-color:var(--line); }
.page-head .actions { align-items:center; }
.page-head .actions form:not(.search) { display:contents; } /* search forms keep their box: the lens is anchored to it */
.btn { height:36px; padding:0 16px; }
.btn.sm { height:30px; padding:0 11px; }
.btn.danger { order:-2; }
.btn.ghost { order:-1; }
.page-head .actions .savebar .state { order:-3; }
.icon-btn { width:36px; height:36px; }
input,select { height:36px; }
textarea { height:auto; }
.seg button,.seg a { height:28px; display:inline-flex; align-items:center; }
.search input { height:36px; width:260px; }
.page-head .actions .search { flex:0 0 auto; }

/* numbers and dates are always the same width so columns line up page to page */
input.n { width:9ch; text-align:right; font-family:var(--mono); font-size:13.5px; }
input.n.short { width:6ch; }
input[type=date] { width:150px; }
table.list td.ref, table.list th.ref { width:132px; }
table.list td.stage, table.list th.stage { width:168px; }
table.list td.num, table.list th.num { width:72px; }
table.list td.money, table.list th.money { width:108px; }
table.list td.date, table.list th.date { width:92px; white-space:nowrap; }
table.list td.size { width:120px; }
/* shortcut cheat-sheet */
.keys { position:fixed; inset:0; background:rgba(11,31,34,.45); display:grid; place-items:center; z-index:70; }
.keys .box { background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow-lg); padding:18px 22px; min-width:320px; }
.keys h3 { margin-bottom:10px; }
.keys dl { display:grid; grid-template-columns:auto 1fr; gap:6px 16px; margin:0; font-size:14px; }
.keys dt { text-align:right; }
.keys dd { margin:0; color:var(--muted); }
@media (max-width: 820px) {
  .page-head { margin:-16px 0 12px; }
  .search input { width:100%; }
}
/* ---------- sign in & account ---------- */
.who { display:inline-flex; align-items:center; gap:7px; font-weight:600; font-size:13.5px; color:var(--slate); padding:5px 11px; border:1px solid var(--line); border-radius:999px; background:var(--surface); white-space:nowrap; max-width:180px; overflow:hidden; text-overflow:ellipsis; }
.who:hover { text-decoration:none; color:var(--ink); border-color:var(--line-strong); }
.who .dot { width:8px; height:8px; border-radius:50%; background:var(--up); box-shadow:0 0 0 3px var(--up-bg); flex:none; }
.logout { display:contents; }
.notice { padding:10px 14px; border-radius:var(--radius-sm); border:1px solid var(--line); background:var(--bg-soft); color:var(--ink); font-size:14.5px; margin-bottom:14px; }
.notice.bad { background:var(--down-bg); border-color:var(--down-line); color:var(--down); }
.notice.good { background:var(--up-bg); border-color:var(--up-line); color:var(--up); }
.notice.warn { background:var(--warn-bg); border-color:var(--warn-line); color:var(--warn); }
.notice code.pw { font-size:16px; font-weight:700; letter-spacing:.04em; padding:2px 8px; background:var(--surface); border:1px dashed var(--warn-line); border-radius:6px; user-select:all; }
.login-body { background:
  radial-gradient(900px 500px at 15% -10%, var(--cta-soft), transparent 60%),
  radial-gradient(700px 500px at 110% 110%, var(--glass), transparent 55%),
  var(--bg); }
.login { min-height:100vh; display:grid; place-items:center; padding:24px 16px; }
.login-card { width:100%; max-width:380px; padding:30px 30px 22px; display:flex; flex-direction:column; gap:14px; box-shadow:var(--shadow-lg); }
.login-card h1 { font-size:22px; margin-top:4px; }
.login-card .notice { margin:0; }
.login-brand { display:flex; align-items:center; gap:10px; color:var(--navy); }
.login-brand img { width:34px; height:34px; }
.login-brand b { font:700 22px var(--font-display); letter-spacing:-.03em; }
.login-brand b i { font-style:normal; color:var(--cta); }
.login-brand .co { font-size:12.5px; color:var(--muted); border-left:1px solid var(--line); padding-left:10px; }
.login-btn { justify-content:center; padding:10px 15px; margin-top:4px; }
.login-foot { text-align:center; font-size:12px; color:var(--faint); margin-top:6px; }
@media (max-width:720px) { .who { display:none; } }
form.inline { display:inline; margin:0; }
table.list tfoot th { text-align:left; font-size:13.5px; padding:9px 12px; border-top:2px solid var(--navy); background:var(--bg-soft); white-space:nowrap; }

/* ---------- Tracker additions ---------- */
.brand .mark { width:30px; height:30px; border-radius:8px; background:var(--plum); color:#fff; display:grid; place-items:center; font:700 13px var(--font-display); letter-spacing:-.02em; }
.brand b i { color:var(--cta); }
.login-brand .mark { width:34px; height:34px; border-radius:9px; background:var(--plum); color:#fff; display:grid; place-items:center; font:700 14px var(--font-display); }
.login-logo { display:block; max-width:200px; margin:0 auto 4px; }
html[data-theme="dark"] .login-logo { background:#fff; border-radius:8px; padding:6px; }

/* project status pills */
.pill.st-sched { background:var(--warn-bg); color:var(--warn); border-color:var(--warn-line); }
.pill.st-ongoing { background:var(--cta-soft); color:var(--cta-ink); border-color:var(--glass-deep); }
.pill.st-complete { background:var(--up-bg); color:var(--up); border-color:var(--up-line); }
.pill.st-rejected { background:var(--down-bg); color:var(--down); border-color:var(--down-line); }
.pill.plum { background:var(--plum-bg); color:var(--plum); border-color:var(--plum-line); }

/* item status chips: S / SP / P / X */
.chip { display:inline-block; min-width:28px; text-align:center; font:700 11.5px var(--mono); padding:2px 6px; border-radius:6px; border:1px solid var(--line); color:var(--muted); background:var(--bg-soft); }
.chip.S { background:var(--plum-bg); color:var(--plum); border-color:var(--plum-line); }
.chip.SP, .chip.P { background:var(--warn-bg); color:var(--warn); border-color:var(--warn-line); }
.chip.X { background:var(--grey-bg); color:var(--grey); border-color:var(--grey-line); }

/* material score bands */
.score { display:inline-grid; place-items:center; min-width:30px; height:24px; padding:0 6px; border-radius:6px; font:700 12.5px var(--mono); }
.score.b0 { background:var(--up-bg); color:var(--up); }
.score.b1 { background:var(--grey-bg); color:var(--grey); }
.score.b2 { background:var(--warn-bg); color:var(--warn); }
.score.b3 { background:var(--amber); color:#1b1300; }
.score.b4 { background:var(--down); color:var(--on-down); }

/* survey register / review grid */
table.reg { width:100%; border-collapse:collapse; font-size:13.5px; }
table.reg th { text-align:left; font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.07em; color:var(--muted); padding:7px 8px; border-bottom:1px solid var(--line); background:var(--bg-soft); white-space:nowrap; }
table.reg td { padding:5px 8px; border-bottom:1px solid var(--line); vertical-align:middle; }
table.reg tr.room td { background:var(--bg-soft); font-weight:600; color:var(--navy); padding-top:9px; }
table.reg tr.room td .muted { font-weight:400; }
table.reg tr.suspect td:first-child { box-shadow:inset 3px 0 0 var(--plum); }
table.reg tr.noaccess td { color:var(--muted); font-style:italic; }
table.reg tr.dirty td { background:var(--warn-bg); }
table.reg input, table.reg select { height:30px; padding:3px 6px; font-size:13.5px; border-color:transparent; background:transparent; }
table.reg input:hover, table.reg select:hover { border-color:var(--line); }
table.reg input:focus, table.reg select:focus { background:var(--surface); border-color:var(--cta); }
table.reg input.n { width:5ch; text-align:center; }
table.reg .thumb { width:44px; height:34px; object-fit:cover; border-radius:5px; border:1px solid var(--line); cursor:zoom-in; display:block; }
.lightbox { position:fixed; inset:0; background:rgba(15,12,15,.82); display:grid; place-items:center; z-index:80; cursor:zoom-out; }
.lightbox img { max-width:94vw; max-height:90vh; border-radius:8px; box-shadow:var(--shadow-lg); }
.filters { display:flex; gap:8px; flex-wrap:wrap; align-items:center; margin-bottom:12px; }
.filters select, .filters input { width:auto; }
dl.facts { display:grid; grid-template-columns:150px 1fr; gap:6px 14px; margin:0; font-size:14.5px; }
dl.facts dt { color:var(--muted); font-size:12.5px; font-weight:600; text-transform:uppercase; letter-spacing:.05em; padding-top:2px; }
dl.facts dd { margin:0; }
.formgrid { display:grid; grid-template-columns:repeat(auto-fill, minmax(220px, 1fr)); gap:12px 16px; }
.formgrid .wide { grid-column:1 / -1; }

/* diary week */
.week { display:grid; grid-template-columns:repeat(7, minmax(0, 1fr)); gap:8px; }
.week .day { background:var(--surface); border:1px solid var(--line); border-radius:var(--radius-sm); min-height:160px; padding:8px; }
.week .day.today { border-color:var(--cta); box-shadow:var(--ring); }
.week .day h3 { font-size:13px; color:var(--muted); margin-bottom:6px; }
.week .ev { display:block; font-size:12.5px; padding:5px 7px; border-radius:6px; background:var(--cta-soft); color:var(--cta-ink); margin-bottom:5px; border-left:3px solid var(--cta); text-decoration:none !important; }
.week .ev .who2 { display:block; color:var(--plum); font-weight:600; }
.week .ev.done { opacity:.6; }
@media (max-width: 1000px) { .week { grid-template-columns:1fr; } }

/* printable register report */
.report { background:#fff; color:#111; }
@media print {
  .top, .side, .page-head .actions, .noprint { display:none !important; }
  .layout { display:block; }
  .view { padding:0; max-width:none; }
  .page-head { position:static; }
  table.reg th { position:static; }
  body { background:#fff; }
  .card { box-shadow:none; border-color:#ccc; }
}
