/* Hillside Lab — base styles carried over from the specimen-log prototype */
:root{
  /* surfaces — light canvas, white cards */
  --ground:#f4f5f7;
  --surface:#ffffff;
  --surface-2:#f8f9fb;
  --surface-3:#eef0f4;
  --shell:#f4f5f7;
  --ink:#111827;
  --ink-2:#374151;
  --ink-3:#6b7280;
  --muted:#6b7280;
  --faint:#99a1ae;
  --line:#e5e7eb;
  --line-strong:#d1d5db;

  /* brand red */
  --brand:#d12233;
  --brand-ink:#a81b29;
  --brand-wash:#fdeef0;
  --brand-wash-2:#fadde1;

  /* navy rail */
  --navy:#0c1830;
  --navy-2:#14294c;
  --navy-line:#1e3157;
  --navy-text:#c3cddd;
  --navy-label:#7c89a3;

  /* categorical — fixed order: blue, gold, green, coral */
  --c-blue:#2478cc;
  --c-gold:#c08410;
  --c-green:#169268;
  --c-coral:#e46030;
  --c-violet:#7a5bbd;

  /* status */
  --ok:#169268;   --ok-ink:#0f6b4c;   --ok-wash:#e8f6f0; --ok-line:#a9ddc8;
  --hold:#b9790a; --hold-ink:#8d5c08; --hold-wash:#fdf4e3; --hold-line:#e8cf9a;

  --lift:0 1px 2px rgba(17,24,39,.04), 0 1px 3px rgba(17,24,39,.07);
  --frame:0 1px 3px rgba(12,24,48,.08), 0 18px 46px -22px rgba(12,24,48,.30);
  --sans:'Segoe UI', 'Inter', system-ui, -apple-system, Roboto, sans-serif;
  --mono:'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, monospace;
}

*{box-sizing:border-box}
body{margin:0; background:var(--ground); color:var(--ink); font-family:var(--sans);
  font-size:15px; line-height:1.6; -webkit-font-smoothing:antialiased}
.wrap{max-width:1280px; margin:0 auto; padding:36px 24px 96px; display:flex; flex-direction:column; gap:42px}
h1,h2,h3{text-wrap:balance; margin:0; line-height:1.2}
p{margin:0}
button{font-family:inherit}

.masthead{display:flex; flex-direction:column; gap:13px; max-width:72ch}
.eyebrow{font-size:11.5px; font-weight:700; letter-spacing:.12em;
  text-transform:uppercase; color:var(--brand)}
.masthead h1{font-size:clamp(26px,3.2vw,36px); font-weight:700; letter-spacing:-.025em}
.masthead .lede{color:var(--ink-2); font-size:16.5px}
.note-box{display:flex; gap:12px; border-left:3px solid var(--brand); background:var(--brand-wash);
  padding:12px 16px; border-radius:0 8px 8px 0; font-size:14px; color:var(--ink-2); max-width:82ch}
.note-box b{color:var(--ink)}
.note-box.hold{border-left-color:var(--hold); background:var(--hold-wash)}
.note-box.plain{border-left-color:var(--line-strong); background:var(--surface-2)}

.section{display:flex; flex-direction:column; gap:18px}
.section-head{display:flex; flex-direction:column; gap:6px}
.section-head h2{font-size:22px; font-weight:700; letter-spacing:-.018em}
.section-head p{color:var(--muted); font-size:14.5px; max-width:78ch}
.step{font-size:11.5px; font-weight:700; letter-spacing:.11em;
  color:var(--brand); text-transform:uppercase}

/* ============================================================
   APP SHELL
   ============================================================ */
.screen{
  height:min(900px, 92vh); min-height:640px; display:flex; overflow:hidden;
  background:var(--shell); border:1px solid var(--line-strong); border-radius:12px;
  box-shadow:var(--frame); position:relative;
}
.sidebar{
  width:250px; flex:none; background:linear-gradient(180deg, var(--navy) 0%, var(--navy-2) 100%);
  display:flex; flex-direction:column; z-index:3;
}
.sidebar-logo{display:flex; flex-direction:column; gap:9px; padding:18px 20px 16px;
  border-bottom:1px solid var(--navy-line)}
.wordmark{display:flex; align-items:center; gap:9px}
.logo-mark{width:30px; height:30px; flex:none; display:grid; place-items:center}
.wm-text{display:flex; flex-direction:column; line-height:1}
.wm-text .a{font-size:20px; font-weight:800; letter-spacing:.01em; color:#4a7fd4}
.wm-text .b{font-size:10px; font-weight:800; letter-spacing:.075em; color:var(--brand);
  margin-top:3px}
.sidebar-logo .sub{font-family:var(--sans); font-size:10.5px; font-weight:700; letter-spacing:.11em;
  text-transform:uppercase; color:#8f9cb5}
.sidebar-nav{flex:1 1 auto; overflow-y:auto; padding:14px 12px; display:flex; flex-direction:column; gap:1px}
.nav-label{font-size:10px; font-weight:700; letter-spacing:.12em;
  text-transform:uppercase; color:var(--navy-label); padding:16px 10px 7px}
.nav-item{display:flex; align-items:center; gap:11px; padding:9px 11px; border-radius:6px;
  font-size:14px; font-weight:400; color:var(--navy-text); background:none; border:0; width:100%;
  text-align:left; cursor:pointer; transition:background .12s, color .12s}
.nav-item:hover{background:rgba(255,255,255,.06); color:#fff}
.nav-item .ni{flex:none; color:#8fa3c4; display:flex}
.nav-item.active{background:rgba(255,255,255,.09); color:#fff; font-weight:600}
.nav-item.active .ni{color:var(--brand)}
.nav-item .pip[hidden]{display:none}
.nav-item .pip{margin-left:auto; font-size:11px; font-weight:600;
  background:rgba(255,255,255,.12); color:#dbe3f0; border-radius:999px; padding:1px 8px}
.nav-item.add{color:#8fa3c4; font-size:13.5px}
.sidebar-foot{padding:16px 16px 18px; display:flex; flex-direction:column; gap:10px}
.sidebar-foot .who{font-size:12.5px; color:#9fb0cb; line-height:1.5}
.sidebar-foot .who b{color:#dbe3f0; font-weight:600; display:block}
.exit-btn{display:flex; align-items:center; gap:11px; width:100%; padding:11px 14px;
  border:1px solid var(--navy-line); border-radius:8px; background:rgba(255,255,255,.03);
  color:var(--navy-text); font-family:var(--sans); font-size:14px; cursor:pointer}
.exit-btn:hover{background:rgba(255,255,255,.08); color:#fff}

.main-area{flex:1 1 auto; min-width:0; display:flex; flex-direction:column}
.topbar{display:flex; align-items:center; gap:12px; padding:0 22px; height:56px; flex:none;
  background:var(--surface); border-bottom:1px solid var(--line)}
.menu-toggle{display:none; background:none; border:0; color:var(--ink-2); cursor:pointer; padding:6px;
  border-radius:6px}
.menu-toggle:hover{background:var(--surface-2)}
.page-title{font-size:15px; font-weight:600; letter-spacing:-.005em; color:var(--ink-2)}
.topbar .grow{flex:1 1 auto}
.crumbs{font-size:12.5px; color:var(--muted)}
.crumbs b{color:var(--ink-2); font-weight:600}

/* ---------- dashboard-style page header + stat tiles ---------- */
.page-head{display:flex; align-items:flex-start; gap:20px; flex-wrap:wrap; margin-bottom:4px}
.page-head .ph-l{display:flex; flex-direction:column; gap:5px; min-width:0}
.page-head h2{font-size:27px; font-weight:700; letter-spacing:-.02em; color:var(--ink)}
.page-head .ph-sub{font-size:14.5px; color:var(--muted)}
.page-head .ph-r{margin-left:auto; text-align:right; font-size:12.5px; color:var(--muted);
  line-height:1.7; flex:none}
.page-head .ph-r b{color:var(--ink-2); font-weight:600}

.tiles{display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); gap:16px}
.tile{background:var(--surface); border:1px solid var(--line); border-radius:10px;
  box-shadow:var(--lift); padding:17px 19px 19px; display:flex; flex-direction:column; gap:3px;
  min-height:128px}
.tile .t-lbl{font-size:11.5px; font-weight:700; letter-spacing:.075em; text-transform:uppercase;
  color:var(--muted)}
.tile .t-num{font-size:38px; font-weight:700; letter-spacing:-.025em; color:var(--ink);
  line-height:1.25; font-variant-numeric:tabular-nums}
.tile.accent .t-num{color:var(--brand)}
.tile .t-foot{font-size:12.5px; color:var(--muted); margin-top:auto}
.tile .t-foot.good{color:var(--ok-ink)}
.tile .t-foot.warn{color:var(--hold-ink)}

/* ---------- discrepancy register ---------- */
.case{border:1px solid var(--line); border-radius:10px; overflow:hidden; background:var(--surface)}
.case + .case{margin-top:12px}
.case.pend{border-color:var(--brand-wash-2); border-left:4px solid var(--brand)}
.case-head{display:flex; align-items:center; gap:10px; flex-wrap:wrap; padding:11px 15px;
  background:var(--surface-2); border-bottom:1px solid var(--line); font-size:12.5px; color:var(--muted)}
.case-head b{font-size:14px; color:var(--ink)}
.case-head code{font-family:var(--mono); font-size:11px; background:var(--surface-3);
  border-radius:4px; padding:2px 7px; color:var(--ink-2)}
.case-status{margin-left:auto; font-size:10.5px; font-weight:700; letter-spacing:.05em;
  text-transform:uppercase; border-radius:4px; padding:3px 9px}
.case-status.pending{background:var(--brand-wash); color:var(--brand-ink); border:1px solid var(--brand-wash-2)}
.case-status.approved{background:var(--ok-wash); color:var(--ok-ink); border:1px solid var(--ok-line)}
.case-status.returned{background:var(--hold-wash); color:var(--hold-ink); border:1px solid var(--hold-line)}
.case-body{padding:13px 15px; display:flex; flex-direction:column; gap:9px}
.case-note{font-size:13px; color:var(--muted); font-style:italic}
.case-meta{font-size:12.5px; color:var(--muted); line-height:1.6}
.case-meta b{color:var(--ink-2)}
.case-meta.ok{color:var(--ok-ink)}
.case-meta.ret{color:var(--hold-ink)}
.case-act{padding:13px 15px; border-top:1px dashed var(--line-strong); background:var(--surface-2);
  display:flex; flex-direction:column; gap:10px}

/* ---------- overnight pickup check ---------- */
.pickup-bar{background:var(--hold-wash); border:1px solid var(--hold-line);
  border-left:4px solid var(--hold); border-radius:10px; padding:14px 18px;
  display:flex; flex-direction:column; gap:12px}
.pickup-bar[hidden]{display:none}
.pu-head{display:flex; align-items:baseline; gap:10px; flex-wrap:wrap}
.pu-tag{font-size:10px; font-weight:700; letter-spacing:.09em; text-transform:uppercase;
  background:var(--hold); color:#fff; border-radius:4px; padding:3px 8px}
.pu-head b{font-size:15px; color:var(--ink)}
.pu-sub{flex-basis:100%; font-size:13px; color:var(--hold-ink)}
.pu-list{display:flex; flex-direction:column; gap:9px}
.pu-item{display:flex; align-items:center; gap:12px; flex-wrap:wrap;
  background:var(--surface); border:1px solid var(--line); border-radius:8px; padding:10px 13px}
.pu-item .pu-what{font-size:13.5px; color:var(--ink-2); flex:1 1 260px}
.pu-item .pu-what b{color:var(--ink)}
.pu-item .pu-when{font-size:12px; color:var(--muted)}
.pu-acts{display:flex; gap:8px; flex:none; flex-wrap:wrap}
.pu-item.missed{border-color:var(--brand-wash-2); border-left:3px solid var(--brand)}
.pu-item.alerted{border-left:3px solid var(--hold)}
.pu-state{display:inline-block; font-size:10.5px; font-weight:700; letter-spacing:.06em;
  text-transform:uppercase; border-radius:4px; padding:2px 7px; margin-left:6px; vertical-align:1px}
.pu-state.missed{background:var(--brand-wash); color:var(--brand-ink)}
.pu-state.alerted{background:var(--hold-wash); color:var(--hold-ink); border:1px solid var(--hold-line)}
.pu-trail{display:block; font-size:12px; color:var(--ink-2); margin-top:3px}

/* alert modal */
.alert-sec{border:1px solid var(--line); border-radius:10px; padding:13px 14px;
  display:flex; flex-direction:column; gap:11px; background:var(--surface)}
.alert-sec h4{font-size:11px; font-weight:700; letter-spacing:.07em; text-transform:uppercase;
  color:var(--muted); display:flex; align-items:center; gap:8px}
.alert-sec h4 .n{width:18px; height:18px; border-radius:50%; background:var(--ink); color:#fff;
  font-size:10.5px; display:inline-flex; align-items:center; justify-content:center; letter-spacing:0}
.dispatch{display:flex; align-items:center; gap:10px; flex-wrap:wrap; font-size:13px; color:var(--ink-2)}
.dispatch .on-file{font-size:12px; color:var(--muted)}
.lead-tag{font-size:9.5px; font-weight:800; letter-spacing:.05em; text-transform:uppercase; color:var(--navy);
  background:var(--surface-3); border-radius:3px; padding:1px 5px; margin-left:4px; vertical-align:1px}
.call-chk, #aEmailCourier, #aAdoCall{border:1px solid var(--line-strong); border-radius:8px; padding:9px 11px; font-size:13px}
.call-chk[aria-pressed="true"], #aEmailCourier[aria-pressed="true"], #aAdoCall[aria-pressed="true"]{border-color:var(--ink-3)}
.lead-more summary{font-size:12.5px; font-weight:600; color:var(--ink-2); cursor:pointer; margin-bottom:8px}
.lead-preview{border-left:3px solid var(--navy); background:var(--surface-2); border-radius:0 8px 8px 0;
  padding:10px 12px; font-size:12.5px; line-height:1.55; color:var(--ink-2)}
.lead-preview .lp-lbl{display:block; font-size:10.5px; font-weight:700; letter-spacing:.07em;
  text-transform:uppercase; color:var(--muted); margin-bottom:4px}
.alert-sec h4 .req{color:var(--brand)}
.alert-sec > .help{font-size:12px; line-height:1.45; color:var(--muted)}
.lead-list{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:6px}
.lead-list .chk{border:1px solid var(--line-strong); border-radius:8px; padding:8px 10px; align-items:flex-start}
.lead-list .chk .lt{display:flex; flex-direction:column; line-height:1.3; font-size:12.5px; text-align:left}
.lead-list .chk .lt small{font-size:11px; color:var(--muted)}
@media (max-width:620px){ .lead-list{grid-template-columns:minmax(0,1fr)} }

/* ---------- split bar (destination mix) ---------- */
.chart-card{background:var(--surface); border:1px solid var(--line); border-radius:10px;
  box-shadow:var(--lift); padding:18px 20px 20px; display:flex; flex-direction:column; gap:4px}
.chart-card h3{font-size:16px; font-weight:700; letter-spacing:-.01em; color:var(--ink)}
.chart-card .cc-sub{font-size:13px; color:var(--muted); margin-bottom:14px}
.barset{display:flex; flex-direction:column; gap:13px}
.barrow{display:grid; grid-template-columns:140px 1fr 42px; align-items:center; gap:14px}
.barrow .bl{font-size:13.5px; color:var(--ink-2)}
.barrow .bt{display:block; height:11px; border-radius:999px; background:var(--surface-3);
  overflow:hidden; min-width:0}
.barrow .bf{display:block; height:100%; min-width:4px; border-radius:999px; transition:width .35s ease}
.barrow .bv{font-size:15px; font-weight:700; color:var(--ink); text-align:right;
  font-variant-numeric:tabular-nums}
.bf.hl{background:var(--c-blue)}
.bf.cpl{background:var(--c-gold)}
.bf.quest{background:var(--c-green)}
.bf.labcorp{background:var(--c-violet)}
.barrow .bl-sub{font-size:11px; color:var(--faint)}
.icon-btn{position:relative; background:none; border:1px solid transparent; border-radius:8px;
  padding:7px; color:var(--ink-2); cursor:pointer; display:flex}
.icon-btn:hover{background:var(--surface-2); border-color:var(--line)}
.notif-badge{position:absolute; top:2px; right:2px; min-width:15px; height:15px; padding:0 3px;
  border-radius:999px; background:var(--brand); color:#fff; font-size:9.5px; font-weight:700;
  display:grid; place-items:center; font-family:var(--mono)}
.user-chip{display:flex; align-items:center; gap:9px; padding:5px 10px 5px 6px; border-radius:999px;
  border:1px solid var(--line); background:var(--surface); cursor:pointer}
.user-chip:hover{background:var(--surface-2)}
.avatar{width:28px; height:28px; border-radius:50%; flex:none; display:grid; place-items:center;
  background:linear-gradient(145deg, var(--brand), #8d1024); color:#fff; font-size:11px; font-weight:700;
  letter-spacing:.02em}
.user-chip .u{display:flex; flex-direction:column; align-items:flex-start; line-height:1.25}
.user-chip .u b{font-size:12.5px; font-weight:600; color:var(--ink)}
.user-chip .u span{font-size:11px; color:var(--muted)}

.notif-wrap{position:relative}
.notif-dropdown{position:absolute; top:calc(100% + 8px); right:0; width:312px; z-index:20;
  background:var(--surface); border:1px solid var(--line-strong); border-radius:11px;
  box-shadow:var(--frame); overflow:hidden}
.notif-dropdown[hidden]{display:none}
.notif-header{display:flex; align-items:center; gap:8px; padding:10px 13px;
  border-bottom:1px solid var(--line); font-size:12.5px; font-weight:700}
.notif-header .acts{margin-left:auto; display:flex; gap:8px}
.mark-all{background:none; border:0; font-size:11.5px; font-weight:600; color:var(--brand-ink);
  cursor:pointer; padding:0}
.mark-all:hover{text-decoration:underline}
.notif-item{padding:11px 13px; border-bottom:1px solid var(--line); display:flex; gap:9px;
  font-size:12.5px; color:var(--ink-2)}
.notif-item:last-child{border-bottom:0}
.notif-item .nd{width:6px; height:6px; border-radius:50%; background:var(--brand); flex:none; margin-top:6px}
.notif-item.read .nd{background:var(--line-strong)}
.notif-item .nt{display:flex; flex-direction:column; gap:2px}
.notif-item b{color:var(--ink); font-weight:600}
.notif-item .ago{font-family:var(--mono); font-size:9.5px; letter-spacing:.05em; color:var(--faint)}

.content-area{flex:1 1 auto; overflow:auto; background:var(--ground); padding:26px 28px 32px}
.content-inner{display:flex; flex-direction:column; gap:18px}
.content-inner[hidden]{display:none}
.overlay{position:absolute; inset:0; background:rgba(23,20,24,.35); z-index:2}
.overlay[hidden]{display:none}

/* ============================================================
   SIGN-IN VIEW
   ============================================================ */
.signin{position:absolute; inset:0; z-index:8; background:var(--shell);
  display:flex; align-items:center; justify-content:center; padding:24px; overflow:auto}
.signin[hidden]{display:none}
.signin-card{width:min(390px,100%); background:var(--surface); border:1px solid var(--line-strong);
  border-radius:14px; box-shadow:var(--lift); overflow:hidden}
.signin{background:linear-gradient(160deg,#e9edf4 0%,#f4f5f7 55%,#eef1f6 100%)}
.signin-card > header{padding:24px 24px 19px; border-bottom:1px solid var(--line);
  display:flex; flex-direction:column; gap:13px; align-items:center; text-align:center}
.signin-card .wm-text .a{color:#17356b}
.signin-card .wm-text{align-items:flex-start}
.signin-card h3{font-size:18px; font-weight:800; letter-spacing:-.01em}
.signin-card .sub{font-size:13px; color:var(--muted)}
.signin-body{padding:20px 24px; display:flex; flex-direction:column; gap:14px}
.signin-foot{padding:14px 24px 20px; display:flex; flex-direction:column; gap:12px}
.demo-creds{font-family:var(--mono); font-size:10.5px; letter-spacing:.03em; color:var(--muted);
  background:var(--surface-2); border:1px dashed var(--line-strong); border-radius:8px; padding:9px 11px;
  line-height:1.7}
.demo-creds b{color:var(--ink-2); font-weight:600}
.signin-err{display:none; font-size:12.5px; color:var(--brand-ink); background:var(--brand-wash);
  border-radius:7px; padding:8px 11px}
.signin-err.show{display:block}

/* ---------- location picker ---------- */
.loc-pick{display:flex; flex-direction:column; gap:8px}
.pick-row{display:flex; align-items:center; gap:12px; width:100%; text-align:left;
  padding:12px 14px; border:1.5px solid var(--line-strong); border-radius:9px;
  background:var(--surface); cursor:pointer; font-family:var(--sans); transition:border-color .12s, background .12s}
.pick-row:hover{border-color:var(--muted); background:var(--surface-2)}
.pick-row[aria-pressed="true"]{border-color:var(--brand); background:var(--brand-wash)}
.pick-row .dot{width:17px; height:17px; flex:none; border-radius:50%; border:1.5px solid var(--line-strong);
  background:var(--surface); display:grid; place-items:center}
.pick-row[aria-pressed="true"] .dot{border-color:var(--brand)}
.pick-row[aria-pressed="true"] .dot::after{content:""; width:9px; height:9px; border-radius:50%;
  background:var(--brand)}
.pick-row .pr-t{display:flex; flex-direction:column; gap:2px; min-width:0; flex:1 1 auto}
.pick-row .pr-t b{font-size:14.5px; font-weight:600; color:var(--ink)}
.pick-row .pr-t span{font-size:12px; color:var(--muted)}
.pick-row .pr-code{font-size:10.5px; font-weight:700; letter-spacing:.06em; color:var(--muted);
  background:var(--surface-3); border-radius:4px; padding:3px 7px; flex:none}
.pick-row[aria-pressed="true"] .pr-code{background:var(--brand-wash-2); color:var(--brand-ink)}
.open-flag{font-size:10.5px; font-weight:700; letter-spacing:.05em; text-transform:uppercase;
  color:var(--hold-ink); background:var(--hold-wash); border:1px solid var(--hold-line);
  border-radius:4px; padding:2px 7px; flex:none}
.elsewhere{border-top:1px dashed var(--line-strong); padding-top:13px; display:flex;
  flex-direction:column; gap:10px}
.link-btn{background:none; border:0; padding:0; font-family:var(--sans); font-size:13px;
  font-weight:600; color:var(--brand-ink); cursor:pointer; text-align:left}
.link-btn:hover{text-decoration:underline}
.elsewhere-body[hidden]{display:none}
.elsewhere-body{display:flex; flex-direction:column; gap:11px}

/* ---------- ordered-tests verification ---------- */
.tube-chip{display:inline-flex; align-items:center; gap:5px; font-size:11px; font-weight:600;
  color:var(--ink-2); background:var(--surface-3); border-radius:4px; padding:2px 7px; white-space:nowrap}
.tube-chip i{width:8px; height:8px; border-radius:2px; flex:none; display:block}
.tube-chip b{font-variant-numeric:tabular-nums; color:var(--ink)}
.tube-chip.mini{gap:4px; padding:2px 6px; font-size:10.5px; letter-spacing:.03em}
.tube-chip.mini i{width:7px; height:7px}
.tube-chip.mini b{margin-left:1px}

/* ---------- tubes drawn: a counter per container ---------- */
.tube-grid{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px}
.tube-step{display:flex; align-items:center; gap:9px; padding:8px 9px;
  border:1px solid var(--line-strong); border-radius:9px; background:var(--surface)}
.tube-step.has{border-color:var(--ink-3); background:var(--surface-2)}
.tube-step .ts-cap{width:13px; height:19px; border-radius:3px; flex:none;
  box-shadow:inset 0 -6px 0 rgba(0,0,0,.14)}
.tube-step .ts-txt{flex:1 1 auto; min-width:0; line-height:1.25}
.tube-step .ts-lbl{display:block; font-size:12.5px; font-weight:700; color:var(--ink);
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.tube-step .ts-sub{display:block; font-size:10.5px; color:var(--muted);
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.tube-step .ts-ct{display:flex; align-items:center; gap:2px; flex:none}
.tube-step button{width:24px; height:24px; border:1px solid var(--line-strong); background:var(--surface);
  border-radius:6px; color:var(--ink-2); font-size:15px; line-height:1; cursor:pointer;
  display:flex; align-items:center; justify-content:center; padding:0}
.tube-step button:hover:not(:disabled){border-color:var(--ink-3); color:var(--ink)}
.tube-step button:disabled{opacity:.35; cursor:default}
.tube-step .ts-n{min-width:20px; text-align:center; font-size:14px; font-weight:700;
  font-variant-numeric:tabular-nums; color:var(--ink-3)}
.tube-step.has .ts-n{color:var(--ink)}
.tube-total{display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-top:9px;
  font-size:12px; color:var(--muted)}
.tube-total .tt-n{font-weight:700; color:var(--ink)}
@media (max-width:620px){ .tube-grid{grid-template-columns:minmax(0,1fr)} }

/* split order: which outside labs */
.out-pick{display:flex; gap:8px; flex-wrap:wrap}
.out-pick button{display:inline-flex; align-items:center; gap:8px; padding:8px 14px;
  border:1px solid var(--line-strong); border-radius:8px; background:var(--surface);
  font:inherit; font-size:13px; font-weight:600; color:var(--ink-2); cursor:pointer}
.out-pick button i{width:9px; height:9px; border-radius:2px; display:block}
.out-pick button i.cpl{background:var(--c-gold)} .out-pick button i.quest{background:var(--c-green)}
.out-pick button i.labcorp{background:var(--c-violet)}
.out-pick button i.hl{background:var(--c-blue)}
.pickup-bar.calm{background:var(--surface); border-color:var(--line); border-left-color:var(--ok); padding:10px 16px}
.pickup-bar.calm .pu-head{align-items:center}
.pickup-bar.calm .pu-tag{background:var(--ok)}
.pickup-bar.calm .pu-head b{font-size:13.5px; font-weight:600; color:var(--ink-2)}
.pu-report{margin-left:auto; flex:none}
.pu-list[hidden], .pu-sub[hidden]{display:none}
.out-pick button[aria-pressed="true"]{border-color:var(--ink); color:var(--ink);
  background:var(--surface-2); box-shadow:inset 0 0 0 1px var(--ink)}

/* split order: tubes per lab box */
.tube-matrix-wrap{border:1px solid var(--line-strong); border-radius:10px; overflow-x:auto; background:var(--surface)}
.tube-matrix{width:100%; border-collapse:collapse; font-size:12.5px}
.tube-matrix th, .tube-matrix td{padding:7px 10px; border-bottom:1px solid var(--line);
  text-align:center; white-space:nowrap; vertical-align:middle}
.tube-matrix th:first-child, .tube-matrix td:first-child{text-align:left}
.tube-matrix thead th{background:var(--surface-2)}
.tube-matrix td.has{background:var(--surface-2)}
.tube-matrix tfoot td{font-weight:700; background:var(--surface-2); border-bottom:0;
  font-variant-numeric:tabular-nums}
.tube-matrix tfoot td:first-child{font-size:11px; letter-spacing:.05em; text-transform:uppercase; color:var(--muted)}
.tm-t{display:flex; align-items:center; gap:9px}
.tm-t .ts-cap{width:11px; height:17px; border-radius:3px; flex:none; box-shadow:inset 0 -5px 0 rgba(0,0,0,.14)}
.tm-t b{display:block; font-size:12.5px; color:var(--ink)}
.tm-t small{display:block; font-size:10.5px; color:var(--muted)}
.tm-step{display:inline-flex; align-items:center; gap:3px}
.tm-step button{width:24px; height:24px; border:1px solid var(--line-strong); background:var(--surface);
  border-radius:6px; color:var(--ink-2); font-size:15px; line-height:1; cursor:pointer;
  display:flex; align-items:center; justify-content:center; padding:0}
.tm-step button:hover:not(:disabled){border-color:var(--ink-3); color:var(--ink)}
.tm-step button:disabled{opacity:.35; cursor:default}
.tm-step .ts-n{min-width:20px; text-align:center; font-size:14px; font-weight:700;
  font-variant-numeric:tabular-nums; color:var(--ink-3)}
.tube-matrix td.has .ts-n{color:var(--ink)}
.tube-matrix th:first-child, .tube-matrix td:first-child{position:sticky; left:0; z-index:1; background:var(--surface)}
.tube-matrix thead th:first-child, .tube-matrix tfoot td:first-child{background:var(--surface-2)}
@media (max-width:620px){
  .tube-matrix th, .tube-matrix td{padding:6px 5px}
  .tube-matrix th:first-child, .tube-matrix td:first-child{padding-left:9px}
  .tm-t{gap:7px}
  .tm-t small{display:none}
  .tm-t b{font-size:12px}
  .tube-matrix .dest{font-size:10px; padding:3px 6px}
  .tm-step{gap:2px}
  .tm-step button{width:22px; height:22px; font-size:14px}
  .tm-step .ts-n{min-width:15px; font-size:13px}
}

.only-tag{font-size:9.5px; font-weight:800; letter-spacing:.05em; color:#8d5c08; background:#fbf3e2;
  border-radius:3px; padding:1px 5px; vertical-align:1px; margin-left:3px}
.tube-matrix tr.tm-sec td{background:#fbf3e2; color:#8d5c08; font-size:10.5px; font-weight:700;
  letter-spacing:.07em; text-transform:uppercase; padding:5px 10px; position:static}
.tube-matrix td.na{color:var(--faint)}

/* office audits */
.month-card{background:var(--surface); border:1px solid var(--line); border-radius:10px; padding:16px 20px;
  display:flex; flex-direction:column; gap:10px}
.mc-head{display:flex; align-items:baseline; gap:12px; flex-wrap:wrap}
.mc-head .mc-lbl{font-size:10.5px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; color:var(--muted)}
.mc-head b{font-size:18px; color:var(--ink)}
.mc-head .mc-due{margin-left:auto; font-size:12.5px; color:var(--ink-2)}
.mc-bar{height:10px; border-radius:999px; background:var(--surface-3); overflow:hidden}
.mc-bar span{display:block; height:100%; background:var(--ok); border-radius:999px}
.mc-foot{display:flex; gap:18px; flex-wrap:wrap; font-size:12.5px; color:var(--ink-2)}
.mc-foot b{color:var(--ink)}
.mstat{display:inline-block; font-size:11px; font-weight:800; letter-spacing:.04em; border-radius:4px; padding:3px 8px; white-space:nowrap}
.mstat.done{background:var(--ok-wash); color:var(--ok-ink)}
.mstat.due{background:var(--hold-wash); color:var(--hold-ink)}
.aud-tbl tr.aud-done td{background:#fbfefc}
.mdots{display:inline-flex; gap:4px}
.mdot{width:22px; height:22px; border-radius:50%; display:inline-flex; align-items:center; justify-content:center;
  font-size:10px; font-weight:800; color:#fff}
.mdot.done{background:var(--ok)}
.mdot.missed{background:var(--brand)}
.mdot.due{background:transparent; color:var(--hold-ink); border:2px dashed var(--hold)}
.ship.flash{box-shadow:0 0 0 3px var(--ok)}
.aud-tbl td{vertical-align:middle}
.aud-tbl .btn{white-space:nowrap}
.aud-due{font-size:10px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; color:var(--brand-ink);
  background:var(--brand-wash); border-radius:4px; padding:2px 6px; margin-left:6px}
.aud-score{font-weight:800; font-variant-numeric:tabular-nums}
.aud-score.good{color:var(--ok-ink)} .aud-score.mid{color:var(--hold-ink)} .aud-score.bad{color:var(--brand-ink)}
.aud-strip{display:flex; gap:12px; flex-wrap:wrap}
.aud-strip .tile{flex:1 1 160px}
.chk-row{display:grid; grid-template-columns:26px minmax(0,1fr) auto; gap:12px; align-items:start;
  padding:12px 0; border-bottom:1px solid var(--line)}
.chk-row:last-child{border-bottom:0}
.chk-ic{width:24px; height:24px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  font-size:13px; font-weight:800; color:#fff; flex:none}
.chk-ic.ok{background:var(--ok)} .chk-ic.flag{background:var(--brand)} .chk-ic.info{background:var(--ink-3)}
.chk-ic.wait{background:var(--surface-3); color:var(--muted)}
.chk-main b{display:block; font-size:13.5px; color:var(--ink)}
.chk-main .chk-det{display:block; font-size:12.5px; color:var(--ink-2); margin-top:2px}
.chk-main ul{margin:6px 0 0 16px; font-size:12.5px; color:var(--ink-2)}
.chk-main ul li{margin:2px 0}
.chk-main input[type=text]{margin-top:8px; width:100%}
.pf{display:inline-flex; border:1px solid var(--line-strong); border-radius:7px; overflow:hidden; flex:none}
.pf button{border:0; border-right:1px solid var(--line-strong); background:var(--surface); padding:6px 11px;
  font-size:12px; font-weight:700; color:var(--ink-2); cursor:pointer}
.pf button:last-child{border-right:0}
.pf button[data-v=pass][aria-pressed=true]{background:var(--ok); color:#fff}
.pf button[data-v=fail][aria-pressed=true]{background:var(--brand); color:#fff}
.pf button[data-v=na][aria-pressed=true]{background:var(--ink-3); color:#fff}
.find-list{display:flex; flex-direction:column; gap:6px}
.find-item{display:flex; gap:9px; align-items:flex-start; font-size:13px; color:var(--ink-2);
  background:var(--brand-wash); border-radius:7px; padding:8px 11px}
.find-item .src{font-size:10px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; color:var(--brand-ink);
  flex:none; margin-top:2px; min-width:58px}
.find-item.done{background:var(--ok-wash)} .find-item.done .src{color:var(--ok-ink)}
.find-item .btn{margin-left:auto; flex:none; padding:4px 10px; font-size:12px}
.aud-actions{display:flex; justify-content:flex-end; gap:10px; flex-wrap:wrap}

/* order entry: tests and suggested tubes */
.o-tests{display:flex; flex-direction:column; border:1px solid var(--line-strong); border-radius:10px; overflow:hidden}
.o-test{display:flex; align-items:center; gap:10px; flex-wrap:wrap; padding:8px 12px; border-bottom:1px solid var(--line); font-size:13px}
.o-test:last-child{border-bottom:0}
.o-test .o-name{flex:1 1 220px; color:var(--ink); font-weight:600}
.o-test .o-meta{display:flex; gap:5px; flex-wrap:wrap; align-items:center}
.o-test .test-drop{font-size:18px; line-height:1; color:var(--faint)}
.o-add{position:relative; margin-top:8px}
.o-add .search-hits{position:absolute; left:0; right:0; top:100%; z-index:5; border:1px solid var(--line-strong); border-radius:8px; box-shadow:var(--lift)}
.o-add .hit{display:flex; gap:8px; align-items:center; width:100%; text-align:left; background:var(--surface); border:0;
  border-bottom:1px solid var(--line); padding:8px 12px; font:inherit; font-size:13px; cursor:pointer}
.o-add .hit:hover{background:var(--surface-2)}
.o-free{display:grid; grid-template-columns:minmax(0,2fr) minmax(0,1fr) minmax(0,1fr) auto; gap:8px; margin-top:8px}
.o-free[hidden]{display:none}
@media (max-width:620px){ .o-free{grid-template-columns:minmax(0,1fr)} }
.tube-matrix td.chg{box-shadow:inset 0 0 0 2px var(--hold-line)}
.o-tube-foot{display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin-top:8px}

/* reports, patient chart, activity, lab setup */
.rep-search{display:flex; gap:10px; flex-wrap:wrap; align-items:center; background:var(--surface);
  border:1px solid var(--line); border-radius:10px; padding:12px 14px}
.rep-search[hidden]{display:none}
.chart-head .ch-facts{min-width:0}
.rep-search input[type="search"]{flex:1 1 320px; width:auto; font-size:15px}
.rep-search select{width:auto; min-width:170px}
.rep-search .inl{display:flex; align-items:center; gap:7px; font-size:12.5px; color:var(--ink-2); cursor:pointer}
.rep-search .inl input{width:auto}
.pt-sub{display:block; font-size:11.5px; font-weight:500; color:var(--muted); margin-top:2px}
.pt-sub .prn-link{font-size:11px}
.pt-link{background:none; border:0; padding:0; font:inherit; color:var(--ink); font-weight:600; cursor:pointer; text-align:left}
.pt-link:hover{color:var(--brand); text-decoration:underline}
.prn-link{font-family:var(--mono); font-size:11.5px; font-weight:600; background:none; border:0; padding:0;
  color:var(--brand-ink); cursor:pointer; text-decoration:underline; text-underline-offset:2px}
.log-table tr.pt-row{cursor:pointer}
.log-table tr.pt-row:hover td{background:var(--surface-2)}
.rep-empty{background:var(--surface); border:1px dashed var(--line-strong); border-radius:10px; padding:26px; text-align:center; color:var(--muted); font-size:14px}
.chart-head{display:flex; gap:14px 28px; flex-wrap:wrap; align-items:flex-start; background:var(--surface);
  border:1px solid var(--line); border-left:4px solid var(--navy); border-radius:12px; padding:18px 20px}
.chart-head .ch-id{display:flex; flex-direction:column; gap:4px; min-width:220px}
.chart-head h3{font-size:22px; font-weight:700; color:var(--ink); letter-spacing:-.01em}
.chart-head .ch-facts{display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:10px 22px; flex:1 1 420px}
.chart-head .ch-facts div{display:flex; flex-direction:column; gap:2px; font-size:13.5px; color:var(--ink)}
.chart-head .ch-facts i{font-style:normal; font-size:10.5px; font-weight:700; letter-spacing:.07em; text-transform:uppercase; color:var(--muted)}
.chart-sec-h{display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; margin-top:6px}
.chart-sec-h h3{font-size:16px; font-weight:700; color:var(--ink)}
.chart-sec-h span{font-size:12.5px; color:var(--muted)}
.chart-tabs{display:flex; gap:6px; flex-wrap:wrap}
.visit{background:var(--surface); border:1px solid var(--line-strong); border-left:4px solid var(--ok); border-radius:10px; overflow:hidden}
.visit + .visit{margin-top:12px}
.visit.open{border-left-color:var(--hold)}
.visit.removed{border-left-color:var(--brand)}
.visit .miss-head .case-status{margin-left:auto}
.visit-facts{display:grid; grid-template-columns:repeat(auto-fill,minmax(170px,1fr)); gap:8px 20px; font-size:13px; color:var(--ink)}
.visit-facts i{display:block; font-style:normal; font-size:10.5px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--muted); margin-bottom:2px}
.visit-tubes{display:flex; flex-direction:column; gap:6px}
.visit-tubes .vt{display:flex; align-items:center; gap:8px; flex-wrap:wrap}
.visit-trail{display:flex; flex-direction:column; gap:5px; font-size:12.5px; color:var(--ink-2); border-top:1px dashed var(--line); padding-top:10px}
.visit-trail b{color:var(--ink)}
.visit-note{font-size:12.5px; color:var(--muted); font-style:italic}
.act-tag{display:inline-block; font-size:10px; font-weight:700; letter-spacing:.05em; text-transform:uppercase;
  background:var(--surface-3); color:var(--ink-2); border-radius:4px; padding:3px 7px; white-space:nowrap}
.act-tag.t-draw{background:var(--ok-wash); color:var(--ok-ink)}
.act-tag.t-phi{background:var(--hold-wash); color:var(--hold-ink)}
.act-tag.t-alert{background:var(--brand-wash); color:var(--brand-ink)}
.act-tag.t-setup{background:#e9eefb; color:#2a3f8f}
.act-user{display:flex; flex-direction:column; gap:1px; font-size:13px; color:var(--ink); font-weight:600; white-space:nowrap}
.act-user span{font-size:11px; font-weight:500; color:var(--muted)}
.act-when{font-family:var(--mono); font-size:11.5px; color:var(--ink-2); white-space:nowrap}
.act-text{font-size:13px; color:var(--ink-2); min-width:260px}
.act-more{display:flex; justify-content:center; padding:12px}
.setup-banner{display:flex; gap:10px; align-items:flex-start; background:var(--hold-wash); border:1px solid var(--hold-line);
  color:var(--hold-ink); border-radius:9px; padding:11px 15px; font-size:13px; line-height:1.5}
.setup-banner b{color:var(--hold-ink)}
.setup-bar{display:flex; align-items:center; gap:10px; flex-wrap:wrap}
.setup-bar .spacer{flex:1 1 20px}
.setup-bar input[type="search"]{width:auto; flex:0 1 300px}
.tpl-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(340px,1fr)); gap:14px}
@media (max-width:620px){ .tpl-grid{grid-template-columns:minmax(0,1fr)} }
.tpl-card{background:var(--surface); border:1px solid var(--line-strong); border-radius:10px; overflow:hidden; display:flex; flex-direction:column}
.tpl-card.retired{opacity:.62}
.tpl-card .miss-head .btn{padding:4px 10px; font-size:12px}
.tpl-card .tpl-body{padding:12px 16px; display:flex; flex-direction:column; gap:10px; flex:1}
.tpl-tests{display:flex; flex-direction:column; gap:0; font-size:12.5px}
.tpl-tests div{display:flex; align-items:center; gap:8px; padding:5px 0; border-bottom:1px solid var(--line)}
.tpl-tests div:last-child{border-bottom:0}
.tpl-tests .nm{flex:1; color:var(--ink)}
.tpl-sug{font-size:12px; color:var(--muted); background:var(--surface-2); border-radius:7px; padding:8px 10px; line-height:1.5}
.tpl-sug b{color:var(--ink-2)}
.tpl-foot{font-size:11.5px; color:var(--muted)}
.tube-picks{display:flex; flex-wrap:wrap; gap:6px}
.tube-picks button{display:inline-flex; align-items:center; gap:6px; border:1px solid var(--line-strong); background:var(--surface);
  border-radius:999px; padding:6px 12px; font:inherit; font-size:12.5px; font-weight:600; color:var(--ink-2); cursor:pointer}
.tube-picks button i{width:9px; height:9px; border-radius:2px; display:block}
.tube-picks button[aria-pressed="true"]{background:var(--navy); border-color:var(--navy); color:#fff}
.tube-picks button[disabled]{opacity:.4; cursor:not-allowed}
.seg2{display:flex; gap:6px; flex-wrap:wrap}
.cap-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(250px,1fr)); gap:10px}
.cap-item{display:flex; align-items:center; gap:10px; background:var(--surface); border:1px solid var(--line-strong); border-radius:9px; padding:10px 12px; font-size:13px}
.cap-item .nm{flex:1; display:flex; flex-direction:column}
.cap-item .nm span{font-size:11px; color:var(--muted)}
.cap-item .stp{display:flex; align-items:center; gap:6px}
.cap-item .stp button{width:28px; height:28px; border-radius:7px; border:1px solid var(--line-strong); background:var(--surface); cursor:pointer; font-size:15px}
.cap-item .stp b{min-width:18px; text-align:center; font-variant-numeric:tabular-nums}
.dir-ok{font-size:11px; font-weight:700; color:var(--ok-ink); white-space:nowrap}
.dir-no{font-size:11px; font-weight:700; color:var(--hold-ink); white-space:nowrap}
#psInner .ps-tests{display:block; font-size:.92em; color:#333}

/* missed pickups register */
.pw-filters{display:flex; align-items:center; gap:10px; flex-wrap:wrap}
.pw-chips{display:flex; gap:6px; flex-wrap:wrap}
.pw-chips button{border:1px solid var(--line-strong); background:var(--surface); border-radius:999px;
  padding:6px 13px; font-size:12.5px; font-weight:600; color:var(--ink-2); cursor:pointer}
.pw-chips button[aria-pressed="true"]{background:var(--navy); border-color:var(--navy); color:#fff}
.pw-chips button .n{opacity:.7; margin-left:5px}
.miss-card{background:var(--surface); border:1px solid var(--line-strong); border-left:4px solid var(--brand);
  border-radius:10px; overflow:hidden}
.miss-card + .miss-card{margin-top:14px}
.miss-card.late{border-left-color:var(--hold)}
.miss-card.recollect{border-left-color:#c2410c}
.miss-card.cleared{border-left-color:var(--ok); opacity:.92}
.miss-head{display:flex; align-items:center; gap:10px; flex-wrap:wrap; padding:13px 18px; background:var(--surface-2); border-bottom:1px solid var(--line)}
.miss-head b{font-size:15px; color:var(--ink)}
.miss-head .case-status{margin-left:auto}
.miss-body{padding:14px 18px; display:flex; flex-direction:column; gap:12px}
.miss-facts{display:flex; flex-wrap:wrap; gap:8px 22px; font-size:12.5px; color:var(--ink-2)}
.miss-facts b{color:var(--ink)}
.miss-age{display:inline-flex; align-items:center; gap:8px; font-size:13px; font-weight:700; color:var(--brand-ink);
  background:var(--brand-wash); border-radius:7px; padding:7px 11px; align-self:flex-start}
.miss-card.cleared .miss-age{color:var(--ink-2); background:var(--surface-2)}
.miss-pts{width:100%; border-collapse:collapse; font-size:13px}
.miss-pts th{font-size:10.5px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--muted);
  text-align:left; padding:7px 8px; border-bottom:1px solid var(--line)}
.miss-pts td{padding:9px 8px; border-bottom:1px solid var(--line); vertical-align:middle}
.miss-pts tr:last-child td{border-bottom:0}
.miss-pts .hrs{font-weight:700; font-variant-numeric:tabular-nums}
.call-st{font-size:11px; font-weight:800; letter-spacing:.04em; border-radius:4px; padding:3px 8px; white-space:nowrap}
.call-st.done{background:var(--ok-wash); color:var(--ok-ink)}
.call-st.try{background:var(--hold-wash); color:var(--hold-ink)}
.call-st.todo{background:var(--brand-wash); color:var(--brand-ink)}
.miss-acts{display:flex; gap:10px; justify-content:flex-end; flex-wrap:wrap}
.miss-clear{font-size:12.5px; color:var(--ink-2); background:var(--ok-wash); border-radius:7px; padding:9px 12px}

/* courier route */
#crCounts[hidden]{display:none}
.cr-stops{display:grid; grid-template-columns:repeat(auto-fill,minmax(260px,1fr)); gap:12px}
.cr-stop{background:var(--surface); border:1px solid var(--line-strong); border-radius:10px; padding:14px 16px;
  display:flex; flex-direction:column; gap:8px}
.cr-stop.done{border-color:var(--ok-line); background:#fbfefc}
.cr-stop.none{opacity:.6}
.cr-stop b{font-size:15px; color:var(--ink)}
.cr-stop .cr-n{font-size:12.5px; color:var(--ink-2)}
.cr-stop .btn{align-self:flex-start}
.cr-scan{display:flex; gap:10px; flex-wrap:wrap; align-items:center}
.cr-scan input{flex:1 1 280px; font-size:17px; padding:13px 15px; font-family:var(--mono, ui-monospace, monospace); letter-spacing:.03em}
.cr-feed{border-radius:9px; padding:11px 14px; font-size:14px; font-weight:600}
.cr-feed.ok{background:var(--ok-wash); color:var(--ok-ink)}
.cr-feed.bad{background:var(--brand-wash); color:var(--brand-ink)}
.cr-feed.warn{background:var(--hold-wash); color:var(--hold-ink)}
.cr-feed.idle{background:var(--surface-2); color:var(--muted); font-weight:500}
.cr-prog{display:flex; align-items:center; gap:12px}
.cr-prog .mc-bar{flex:1}
.cr-prog b{font-size:20px; font-variant-numeric:tabular-nums; color:var(--ink)}
.cr-man{display:flex; flex-direction:column; border:1px solid var(--line); border-radius:9px; overflow:hidden}
.cr-row{display:flex; align-items:center; gap:10px; flex-wrap:wrap; padding:9px 13px; border-bottom:1px solid var(--line); font-size:13px}
.cr-row:last-child{border-bottom:0}
.cr-row .who{min-width:120px; color:var(--ink-2)}
.cr-row .who b{color:var(--ink)}
.cr-bag{padding:11px 14px; border-bottom:1px solid var(--line); display:flex; flex-direction:column; gap:8px}
.cr-bag:last-child{border-bottom:0}
.cr-bag.done{background:#f6fcf9}
.bag-head{display:flex; align-items:center; gap:10px; flex-wrap:wrap}
.bag-head b{font-size:14.5px; color:var(--ink)}
.bag-chk{width:22px; height:22px; border-radius:6px; border:2px solid var(--line-strong); display:inline-flex;
  align-items:center; justify-content:center; font-size:13px; font-weight:800; color:#fff; flex:none}
.cr-bag.part .bag-chk{border-color:var(--hold)}
.cr-bag.done .bag-chk{background:var(--ok); border-color:var(--ok)}
.bag-sub{font-size:12px; color:var(--muted)}
.bag-st{margin-left:auto; font-size:11px; font-weight:800; letter-spacing:.04em; text-transform:uppercase; color:var(--muted)}
.cr-bag.part .bag-st{color:var(--hold-ink)}
.cr-bag.done .bag-st{color:var(--ok-ink)}
.bag-tubes{display:flex; gap:6px; flex-wrap:wrap; padding-left:32px}
.cr-bags{font-size:13px; color:var(--ink-2)}
.cr-bags b{font-size:13px}
.tube-id{display:inline-flex; align-items:center; gap:6px; font-family:ui-monospace, monospace; font-size:11.5px;
  border:1px solid var(--line-strong); border-radius:6px; padding:4px 8px; background:var(--surface); cursor:pointer; color:var(--ink-2)}
.tube-id i{width:8px; height:8px; border-radius:2px; display:block}
.tube-id.scan{background:var(--ok-wash); border-color:var(--ok-line); color:var(--ok-ink)}
.tube-id.hand{background:var(--hold-wash); border-color:var(--hold-line); color:var(--hold-ink)}
.tube-id.scan::after{content:'\2713'; font-weight:800}
.tube-id.hand::after{content:'hand'; font-family:var(--sans); font-size:9.5px; font-weight:800; text-transform:uppercase}
.cr-extra{font-size:12.5px; color:var(--brand-ink)}

/* receiving at Hillside Lab */
.recv-who{display:flex; align-items:center; gap:12px; flex-wrap:wrap; background:var(--surface);
  border:1px solid var(--line); border-radius:10px; padding:12px 16px}
.recv-who label{font-size:11px; font-weight:700; letter-spacing:.07em; text-transform:uppercase; color:var(--muted)}
.recv-who select{max-width:320px}
.recv-who .foot-hint{flex:1 1 300px}
.ship{border:1px solid var(--line-strong); border-radius:10px; overflow:hidden; background:var(--surface)}
.ship + .ship{margin-top:14px}
.ship-head{display:flex; align-items:center; gap:10px; flex-wrap:wrap; padding:12px 16px;
  background:var(--surface-2); border-bottom:1px solid var(--line)}
.ship-head b{font-size:15px; color:var(--ink)}
.ship-head code{font-size:11.5px}
.ship-head .ship-meta{flex-basis:100%; font-size:12.5px; color:var(--muted)}
.ship-head .ship-state{margin-left:auto}
.ship-body{display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.15fr); gap:18px; padding:16px}
@media (max-width:900px){ .ship-body{grid-template-columns:minmax(0,1fr)} }
.ship h5{font-size:11px; font-weight:700; letter-spacing:.07em; text-transform:uppercase; color:var(--muted); margin-bottom:8px}
.count-tbl{width:100%; border-collapse:collapse; font-size:13px}
.count-tbl th, .count-tbl td{padding:7px 8px; border-bottom:1px solid var(--line); text-align:left; vertical-align:middle}
.count-tbl th{font-size:10.5px; letter-spacing:.06em; text-transform:uppercase; color:var(--muted); font-weight:700}
.count-tbl td.num, .count-tbl th.num{text-align:center; font-variant-numeric:tabular-nums}
.count-tbl input{width:64px; text-align:center; padding:6px; font-variant-numeric:tabular-nums}
.count-tbl tfoot td{font-weight:700; border-bottom:0; background:var(--surface-2)}
.cnt-flag{font-size:11px; font-weight:700; border-radius:4px; padding:2px 7px; white-space:nowrap}
.cnt-flag.ok{background:#e8f6f0; color:#0f6b4c}
.cnt-flag.bad{background:var(--brand-wash); color:var(--brand-ink)}
.cnt-flag.wait{color:var(--faint)}
.pt-list{display:flex; flex-direction:column; border:1px solid var(--line); border-radius:8px; overflow:hidden}
.pt-list .chk{border-bottom:1px solid var(--line); border-radius:0; padding:8px 11px; align-items:center}
.pt-list .chk:last-child{border-bottom:0}
.pt-list .pl{display:flex; align-items:center; gap:8px; flex-wrap:wrap; font-size:12.5px; text-align:left; flex:1}
.pt-list .pl .rn{color:var(--muted); font-size:11px; min-width:18px}
.pt-list .pl .tubes{margin-left:auto}
.ship-foot{display:flex; align-items:flex-end; gap:12px; flex-wrap:wrap; padding:0 16px 16px}
.ship-foot .field{flex:1 1 320px; margin:0}
.ship .help{font-size:12px; line-height:1.45; color:var(--muted)}
.ship-done{display:flex; flex-direction:column; gap:4px; padding:12px 16px; font-size:13px; color:var(--ink-2)}
.ship-done .case-note{margin:4px 0 0}

/* not drawn */
.row-acts{display:inline-flex; gap:2px}
.row-act.void:hover{background:var(--brand-wash); color:var(--brand)}
.void-link{background:none; border:0; padding:0; font:inherit; font-size:12.5px; font-weight:600;
  color:var(--brand-ink); cursor:pointer; text-decoration:underline; text-underline-offset:2px}
.void-link[hidden]{display:none}
.void-why{display:inline-block; font-size:11px; font-weight:700; color:var(--brand-ink);
  background:var(--brand-wash); border-radius:4px; padding:2px 7px}
.void-fu{display:block; font-size:11.5px; color:var(--muted); margin-top:3px}
.void-note{display:block; font-size:12.5px; line-height:1.45; color:var(--ink-2); margin-top:6px; white-space:normal}
#voidTable td{vertical-align:top}
#voidTable tr.vday td{background:var(--surface-2); border-top:2px solid var(--line-strong); padding:10px 14px; vertical-align:middle}
#voidTable tr.vday b{font-size:13.5px; color:var(--ink)}
#voidTable .vday-meta{margin-left:10px; font-size:12px; color:var(--muted)}
#voidTable .vday-meta code{font-size:11px}
#voidTable tr.vday-none td{color:var(--muted); font-size:12.5px; padding:9px 14px}
#voidTable td.vwhy{min-width:230px; white-space:normal}
#voidTable td.tubes{white-space:normal; max-width:130px}
#voidTable td.prov{white-space:normal}
#voidTable{min-width:0}
#voidTable td.vd{white-space:nowrap}
#voidTable .ini{white-space:nowrap}
.void-day{font-size:11px; color:var(--muted); display:block}

/* the tubes column on the log */
td.tubes{white-space:nowrap}
td.tubes .tube-chip{margin:0 3px 2px 0}
.tube-dest{display:flex; align-items:center; gap:4px; flex-wrap:nowrap; margin-bottom:3px}
.tube-dest:last-child{margin-bottom:0}
.td-lab{font-size:9.5px; font-weight:800; letter-spacing:.05em; min-width:28px;
  padding:2px 4px; border-radius:3px; text-align:center; color:#fff; background:var(--ink-3)}
.td-lab.hl{background:var(--c-blue)} .td-lab.cpl{background:var(--c-gold)}
.td-lab.quest{background:var(--c-green)} .td-lab.labcorp{background:var(--c-violet)}
.rr-tubes{justify-content:flex-end}
.rr-tubes .tube-chip{margin:0 0 2px 3px}

.order-box{border:1px solid var(--line-strong); border-radius:10px; overflow:hidden;
  background:var(--surface)}
.order-head{padding:11px 13px; background:var(--surface-2); border-bottom:1px solid var(--line);
  display:flex; flex-direction:column; gap:9px}
.order-count{display:flex; align-items:baseline; gap:9px; flex-wrap:wrap}
.order-count b{font-size:17px; font-weight:700; color:var(--ink); font-variant-numeric:tabular-nums}
.order-count .of{font-size:13px; color:var(--muted)}
.order-count .st{margin-left:auto; font-size:10.5px; font-weight:700; letter-spacing:.06em;
  text-transform:uppercase; border-radius:4px; padding:3px 8px}
.order-count .st.ok{background:var(--ok-wash); color:var(--ok-ink); border:1px solid var(--ok-line)}
.order-count .st.part{background:var(--brand-wash); color:var(--brand-ink); border:1px solid var(--brand-wash-2)}
.order-count .st.none{background:var(--surface-3); color:var(--muted); border:1px solid var(--line)}
.vbar{height:7px; border-radius:999px; background:var(--surface-3); overflow:hidden; display:block}
.vbar span{display:block; height:100%; border-radius:999px; background:var(--ok);
  transition:width .25s ease}
.vbar.part span{background:var(--brand)}
.tube-line{display:flex; align-items:center; gap:7px; flex-wrap:wrap; font-size:12px; color:var(--muted)}
.tube-line .tl-lbl{font-weight:700; letter-spacing:.05em; text-transform:uppercase; font-size:10px}

.test-list{display:flex; flex-direction:column}
.test-row{display:flex; align-items:flex-start; gap:10px; padding:10px 13px;
  border-bottom:1px solid var(--line)}
.test-row:last-child{border-bottom:0}
.test-row.short{background:var(--brand-wash)}
.tick-pair{display:flex; gap:5px; flex:none; margin-top:1px}
.test-tick,.test-no{flex:none; width:26px; height:26px; border-radius:6px;
  border:1.5px solid var(--line-strong); background:var(--surface); display:grid; place-items:center;
  cursor:pointer; color:var(--faint); padding:0}
.test-tick:hover{border-color:var(--ok); color:var(--ok)}
.test-no:hover{border-color:var(--brand); color:var(--brand)}
.test-tick[aria-pressed="true"]{background:var(--ok); border-color:var(--ok); color:#fff}
.test-no[aria-pressed="true"]{background:var(--brand); border-color:var(--brand); color:#fff}
.pend{font-size:10.5px; font-weight:700; letter-spacing:.05em; text-transform:uppercase;
  color:var(--hold-ink); background:var(--hold-wash); border:1px solid var(--hold-line);
  border-radius:4px; padding:2px 7px}
.test-body{flex:1 1 auto; min-width:0; display:flex; flex-direction:column; gap:5px}
.test-name{font-size:13.5px; font-weight:600; color:var(--ink); line-height:1.4}
.test-row:not(.short) .test-name{color:var(--ink)}
.test-meta{display:flex; align-items:center; gap:6px; flex-wrap:wrap}
.test-miss{display:flex; gap:8px; flex-wrap:wrap}
.test-miss select{font-size:12.5px; padding:6px 9px; flex:1 1 170px}
.test-miss input{font-size:12.5px; padding:6px 9px; flex:2 1 190px}
.test-drop{background:none; border:0; color:var(--faint); cursor:pointer; padding:3px; border-radius:5px;
  flex:none; display:flex; align-self:flex-start; margin-top:2px}
.test-drop:hover{background:var(--surface-3); color:var(--brand-ink)}
.order-empty{padding:20px 14px; text-align:center; font-size:13px; color:var(--muted)}
.add-row{display:flex; gap:8px; padding:11px 13px; border-top:1px solid var(--line);
  background:var(--surface-2); flex-wrap:wrap}
.add-row input{flex:1 1 240px}
.add-row select{flex:1 1 200px}
.quick{font-size:12px; color:var(--muted); padding:0 13px 11px; background:var(--surface-2)}

.tcode{display:inline-block; white-space:nowrap; font-family:var(--mono); font-size:10.5px; font-weight:600;
  letter-spacing:.02em; color:var(--brand-ink); background:var(--brand-wash);
  border:1px solid var(--brand-wash-2); border-radius:4px; padding:1px 6px; margin-right:8px;
  flex:none; vertical-align:2px}
.tmark{font-size:11px; font-weight:700; color:var(--hold-ink); margin-left:5px}
.tube-none{font-size:11px; font-weight:600; color:var(--hold-ink); background:var(--hold-wash);
  border:1px solid var(--hold-line); border-radius:4px; padding:2px 7px}
.tube-unset{font-size:11px; font-weight:600; color:var(--hold-ink); background:var(--hold-wash);
  border:1px solid var(--hold-line); border-radius:4px; padding:3px 8px}

.search-hits{border-top:1px solid var(--line); background:var(--surface);
  max-height:260px; overflow-y:auto}
.search-hits[hidden]{display:none}
.hit{display:flex; align-items:center; gap:4px; width:100%; text-align:left; padding:9px 13px;
  border:0; border-bottom:1px solid var(--line); background:var(--surface); cursor:pointer;
  font-family:var(--sans)}
.hit:last-child{border-bottom:0}
.hit:hover{background:var(--brand-wash)}
.hit-name{flex:1 1 auto; font-size:13px; color:var(--ink); min-width:0}
.no-hit{padding:14px; font-size:12.5px; color:var(--muted); text-align:center; margin:0}

/* table + summary chips */
.tchip{display:inline-flex; align-items:center; gap:5px; font-size:11.5px; font-weight:700;
  border-radius:4px; padding:2px 8px; white-space:nowrap; font-variant-numeric:tabular-nums}
.tchip.ok{background:var(--ok-wash); color:var(--ok-ink); border:1px solid var(--ok-line)}
.tchip.part{background:var(--brand-wash-2); color:var(--brand-ink); border:1px solid var(--brand-wash-2)}
.log-table tr.short td{background:var(--brand-wash)}
.log-table tr.short.amended td{background:var(--hold-wash)}

.miss-list{display:flex; flex-direction:column; gap:0; border:1px solid var(--brand-wash-2);
  border-radius:9px; overflow:hidden}
.miss-list .ml-head{padding:9px 14px; background:var(--brand-wash); border-bottom:1px solid var(--brand-wash-2);
  font-size:11.5px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--brand-ink)}
.miss-item{padding:10px 14px; border-bottom:1px solid var(--line); font-size:13px; color:var(--ink-2);
  display:flex; gap:10px; flex-wrap:wrap; align-items:baseline}
.miss-item:last-child{border-bottom:0}
.miss-item b{color:var(--ink); font-weight:600}
.miss-item .why{font-size:12px; color:var(--brand-ink); font-weight:600}
.miss-item .mnote{font-size:12px; color:var(--muted); flex-basis:100%}

/* ---------- who-collected-it lookup ---------- */
.who-chip{font-family:var(--mono); font-size:12px; font-weight:600; color:var(--ink-2);
  background:var(--surface-3); border:1px solid var(--line-strong); border-radius:5px;
  padding:3px 8px; cursor:help; line-height:1.3}
.who-chip:hover,.who-chip:focus-visible{background:var(--brand-wash); border-color:var(--brand);
  color:var(--brand-ink)}
.who-chip.clash{border-color:var(--hold); background:var(--hold-wash); color:var(--hold-ink)}

.who-pop{position:fixed; z-index:90; max-width:290px; background:#111827; color:#f3f5f8;
  border-radius:9px; padding:12px 14px; box-shadow:0 12px 34px -8px rgba(0,0,0,.55);
  font-size:13px; line-height:1.55; pointer-events:none; opacity:0; transform:translateY(3px);
  transition:opacity .12s, transform .12s}
.who-pop.show{opacity:1; transform:translateY(0)}
.who-pop[hidden]{display:none}
.who-pop .wp-name{font-size:15px; font-weight:700; letter-spacing:-.01em; display:block}
.who-pop .wp-title{color:#9fb0cb; display:block; margin-top:1px}
.who-pop dl{margin:10px 0 0; display:grid; grid-template-columns:auto 1fr; gap:4px 12px;
  border-top:1px solid #2b3648; padding-top:9px}
.who-pop dt{font-size:10.5px; font-weight:700; letter-spacing:.06em; text-transform:uppercase;
  color:#7c89a3; white-space:nowrap}
.who-pop dd{margin:0; font-size:12.5px; color:#dbe3f0}
.who-pop .wp-warn{margin-top:9px; padding-top:9px; border-top:1px solid #2b3648;
  color:#f0c274; font-size:12px}

/* topbar location chip */
.loc-chip-btn{display:flex; align-items:center; gap:8px; padding:5px 11px 5px 9px;
  border:1px solid var(--line-strong); border-radius:999px; background:var(--surface);
  cursor:pointer; font-family:var(--sans); color:var(--ink-2)}
.loc-chip-btn:hover{background:var(--surface-2); border-color:var(--muted)}
.loc-chip-btn .pin{color:var(--brand); display:flex; flex:none}
.loc-chip-btn b{font-size:13px; font-weight:600; color:var(--ink)}
.loc-chip-btn .sw{font-size:11.5px; color:var(--muted)}
.nav-item .open-pip{margin-left:auto; font-size:10.5px; font-weight:700; letter-spacing:.04em;
  background:rgba(217,148,18,.22); color:#f0c274; border-radius:999px; padding:1px 8px}
.nav-item .here{margin-left:auto; font-size:10.5px; font-weight:700; letter-spacing:.06em;
  text-transform:uppercase; color:#9fb0cb}

/* ============================================================
   LOG SHEET
   ============================================================ */
.sheet{background:var(--surface); border:1px solid var(--line); border-radius:10px;
  box-shadow:var(--lift); overflow:hidden}
.sheet-head{display:flex; align-items:center; gap:11px; flex-wrap:wrap;
  background:var(--surface); padding:16px 20px 15px; border-bottom:1px solid var(--line)}
.sheet-name{font-size:16px; font-weight:700; color:var(--ink); letter-spacing:-.01em}
.count-badge{font-size:11px; font-weight:600; letter-spacing:.05em;
  text-transform:uppercase; color:var(--ink-2); background:var(--surface-3);
  border:1px solid var(--line); border-radius:999px; padding:3px 10px}
.count-badge.ok{color:var(--ok-ink); background:var(--ok-wash); border-color:var(--ok-line)}
.count-badge.hold{color:var(--hold-ink); background:var(--hold-wash); border-color:var(--hold-line)}
.count-badge.brand{color:var(--brand-ink); background:var(--brand-wash); border-color:var(--brand-wash-2)}
.sheet-head .spacer{flex:1 1 40px}

.btn{font-family:var(--sans); font-size:13px; font-weight:500; color:var(--ink-2);
  background:var(--surface); border:1px solid var(--line-strong); border-radius:7px;
  padding:6px 14px; cursor:pointer; transition:background .12s, border-color .12s, color .12s}
.btn:hover{background:var(--surface-2); border-color:var(--muted)}
.btn.danger{color:var(--brand); border-color:transparent; background:transparent; font-weight:600}
.btn.danger:hover{background:var(--brand-wash-2)}
.btn.primary{background:var(--brand); border-color:var(--brand); color:#fff; font-weight:600}
.btn.primary:hover{background:var(--brand-ink); border-color:var(--brand-ink)}
.btn.primary[disabled],.btn[disabled]{opacity:.45; cursor:not-allowed}
.btn.primary[disabled]:hover{background:var(--brand); border-color:var(--brand)}
.btn.wide{width:100%; justify-content:center; text-align:center; padding:10px 14px; font-size:14px}
.btn:focus-visible,.toggle:focus-visible,.cell--btn:focus-visible,.chk:focus-visible,
select:focus-visible,textarea:focus-visible,input:focus-visible,.icon-btn:focus-visible,
.nav-item:focus-visible,.user-chip:focus-visible,.mark-all:focus-visible,.menu-toggle:focus-visible{
  outline:2px solid var(--brand); outline-offset:-2px}

.strip{display:flex; align-items:center; gap:18px; flex-wrap:wrap;
  padding:10px 18px; background:var(--surface-2); border-bottom:1px solid var(--line);
  font-size:13px; color:var(--muted)}
.strip .kv{display:flex; align-items:baseline; gap:7px}
.strip .kv i{font-style:normal; font-family:var(--mono); font-size:9.5px; font-weight:600;
  letter-spacing:.1em; text-transform:uppercase; color:var(--faint)}
.strip .kv b{font-size:13.5px; font-weight:700; color:var(--ink)}
.strip .hint{margin-left:auto; font-size:12.5px}

.table-scroll{overflow-x:auto}
table.log-table{border-collapse:collapse; width:100%; font-size:13.5px; min-width:820px;
  table-layout:auto}
.log-table th{text-align:left; font-size:10px; font-weight:700; letter-spacing:.06em;
  text-transform:uppercase; color:var(--muted); padding:11px 9px; border-bottom:1px solid var(--line);
  background:var(--surface-2); vertical-align:bottom; line-height:1.35}
.log-table td{padding:9px 9px; border-bottom:1px solid var(--line); color:var(--ink-2);
  vertical-align:top}
.log-table tbody tr:last-child td{border-bottom:1px solid var(--line)}
.log-table td.rn{font-family:var(--mono); font-size:11px; color:var(--faint); width:34px}
.log-table td.tm{font-family:var(--mono); font-size:12px; color:var(--ink-2); white-space:nowrap}
.log-table td.pt{color:var(--ink); font-weight:600; white-space:nowrap}
.log-table td.prov{white-space:nowrap}
.log-table td.dob{font-family:var(--mono); font-size:12px; white-space:nowrap}
.log-table td.ini{font-family:var(--mono); font-size:12px; font-weight:600; text-align:center}
.log-table tr.amended td{background:var(--hold-wash)}
.log-table tr.amended td.pt .old{text-decoration:line-through; color:var(--muted); font-weight:400;
  margin-right:7px}
.dest{display:inline-flex; align-items:center; gap:6px; font-size:11px;
  font-weight:600; letter-spacing:.03em; border-radius:5px; padding:3px 9px; white-space:nowrap}
.dest::before{content:""; width:7px; height:7px; border-radius:2px; flex:none}
.dest.hl{background:#eaf2fb; color:#1a5a9c}
.dest.hl::before{background:var(--c-blue)}
.dest.cpl{background:#fbf3e2; color:#8d5c08}
.dest.cpl::before{background:var(--c-gold)}
.dest.quest{background:#e8f6f0; color:#0f6b4c}
.dest.quest::before{background:var(--c-green)}
.dest.labcorp{background:#f0ebfa; color:#553d8c}
.dest.labcorp::before{background:var(--c-violet)}
.dest.none{background:var(--surface-3); color:var(--muted)}
.dest.none::before{background:var(--faint)}

/* split-order groups in the draw modal */
.dest-group{border-top:1px solid var(--line)}
.dest-group:first-child{border-top:0}
.dg-head{display:flex; align-items:center; gap:9px; padding:9px 13px; background:var(--surface-2);
  font-size:12.5px; color:var(--muted)}
.dg-head b{font-size:13.5px; color:var(--ink)}
.dg-dot{width:9px; height:9px; border-radius:2px; flex:none; background:var(--faint)}
.dg-head.hl .dg-dot{background:var(--c-blue)}
.dg-head.cpl .dg-dot{background:var(--c-gold)}
.dg-head.quest .dg-dot{background:var(--c-green)}
.dg-head.labcorp .dg-dot{background:var(--c-violet)}
.dg-n{font-size:11.5px; font-weight:600; color:var(--ink-2); background:var(--surface-3);
  border-radius:4px; padding:2px 7px}
.dg-note{margin-left:auto; font-size:11px; font-weight:600; letter-spacing:.05em;
  text-transform:uppercase; color:var(--faint)}
.dest-pick-wrap{display:inline-flex; align-items:center; gap:6px}
.dp-lbl{font-size:10px; font-weight:700; letter-spacing:.06em; text-transform:uppercase;
  color:var(--faint)}
select.dest-pick{width:auto; min-width:132px; font-size:11.5px; font-weight:600; padding:3px 7px;
  border-radius:5px; background:var(--surface); border-color:var(--line-strong); color:var(--ink-2)}
select.dest-pick:hover{border-color:var(--muted)}
.amend-tag{display:inline-block; font-family:var(--mono); font-size:8.5px; font-weight:600;
  letter-spacing:.07em; text-transform:uppercase; padding:2px 6px; border-radius:4px;
  background:var(--hold-wash); color:var(--hold-ink); border:1px solid var(--hold-line); margin-left:7px}
.row-act{background:none; border:0; color:var(--faint); cursor:pointer; padding:3px; border-radius:5px;
  display:flex}
.row-act:hover{background:var(--surface-3); color:var(--brand-ink)}
.empty-log{padding:38px 20px; text-align:center; display:flex; flex-direction:column; gap:7px;
  align-items:center; color:var(--muted); font-size:13.5px}
.empty-log[hidden]{display:none}
.empty-log b{color:var(--ink-2); font-size:14.5px}

.sheet-foot{padding:13px 18px; display:flex; gap:12px; align-items:center; flex-wrap:wrap;
  background:var(--surface); border-top:1px solid var(--line)}
.foot-hint{font-size:12.5px; color:var(--muted)}

/* ---------- reconciliation ---------- */
.panel{background:var(--surface); border:1px solid var(--line); border-radius:10px;
  box-shadow:var(--lift); overflow:hidden}
.panel > header{padding:16px 20px 15px; border-bottom:1px solid var(--line); background:var(--surface);
  display:flex; align-items:center; gap:10px; flex-wrap:wrap}
.panel > header h3{font-size:16px; font-weight:700; letter-spacing:-.01em; color:var(--ink)}
.panel .body{padding:18px 20px; display:flex; flex-direction:column; gap:18px}
.recon{display:grid; grid-template-columns:repeat(auto-fit,minmax(272px,1fr)); gap:16px}
.recon-card{border:1px solid var(--line); border-radius:9px; overflow:hidden}
.recon-card > h4{margin:0; padding:10px 15px; font-size:11.5px; font-weight:700; letter-spacing:.075em;
  text-transform:uppercase; background:var(--surface-2); border-bottom:1px solid var(--line); color:var(--ink-2);
  display:flex; align-items:center; gap:8px}
.recon-card > h4::before{content:""; width:8px; height:8px; border-radius:2px; flex:none}
.recon-card.hl > h4::before{background:var(--c-blue)}
.recon-card.cpl > h4::before{background:var(--c-gold)}
.recon-card.quest > h4::before{background:var(--c-green)}
.recon-card.labcorp > h4::before{background:var(--c-violet)}
/* both cards stretch to the same height and the pickup-box checkbox is
   pinned to the bottom of each, so the two line up even though CPL
   carries one more row than Hillside Lab */
.recon-card{display:flex; flex-direction:column}
.recon-card .rb{padding:13px 14px; display:flex; flex-direction:column; gap:11px;
  flex:1 1 auto}
.rb-top,.rb-bottom{display:flex; flex-direction:column; gap:11px}
.rb-bottom{margin-top:auto}
.rrow{display:flex; align-items:center; gap:10px; font-size:13.5px}
.rrow[hidden]{display:none}
.rrow label{flex:1 1 auto; color:var(--ink-2)}
.rrow .auto{font-family:var(--mono); font-size:14px; font-weight:600; color:var(--ink);
  background:var(--surface-3); border-radius:6px; padding:4px 11px; min-width:44px; text-align:center}
.rrow input[type="number"]{width:72px; text-align:center; font-family:var(--mono)}
.rrow .flag{font-family:var(--mono); font-size:9.5px; font-weight:600; letter-spacing:.07em;
  text-transform:uppercase; border-radius:5px; padding:3px 9px}
.flag.match{background:var(--ok-wash); color:var(--ok-ink); border:1px solid var(--ok-line)}
.flag.miss{background:var(--brand-wash-2); color:var(--brand-ink)}
.flag.wait{background:var(--surface-3); color:var(--muted)}

.box-chk{border:1px dashed var(--line-strong); border-radius:8px; padding:10px 12px;
  background:var(--surface-2); font-size:12.5px; line-height:1.45}
.box-chk:hover{background:var(--surface-3)}
.box-chk[aria-pressed="true"]{border-style:solid; border-color:var(--ok-line);
  background:var(--ok-wash); color:var(--ok-ink)}
.box-chk[aria-pressed="true"] .box{background:var(--ok); border-color:var(--ok)}
.box-chk b{font-weight:700}

/* ---------- discrepancy escalation ---------- */
.esc-panel{border:1px solid var(--brand-wash-2); border-left:4px solid var(--brand);
  border-radius:10px; overflow:hidden; background:var(--surface)}
.esc-panel[hidden]{display:none}
.esc-panel > header{display:flex; align-items:center; gap:10px; flex-wrap:wrap;
  padding:12px 16px; background:var(--brand-wash); border-bottom:1px solid var(--brand-wash-2)}
.esc-panel > header h3{font-size:14.5px; font-weight:700; color:var(--brand-ink); letter-spacing:-.01em}
.esc-inner{padding:14px 16px; display:flex; flex-direction:column; gap:12px}
.esc-list{display:flex; flex-direction:column; gap:7px}
.esc-item{display:flex; align-items:flex-start; gap:9px; font-size:13.5px; font-weight:600; color:var(--ink)}
.esc-dot{width:7px; height:7px; border-radius:50%; background:var(--brand); flex:none; margin-top:7px}
.esc-step{display:flex; align-items:flex-start; gap:10px; font-size:13px; color:var(--ink-2);
  line-height:1.5}
.esc-step b{color:var(--ink)}
.esc-n{flex:none; width:20px; height:20px; border-radius:50%; display:grid; place-items:center;
  background:var(--surface-3); color:var(--muted); font-size:11px; font-weight:700; margin-top:1px}
.esc-step.done .esc-n{background:var(--ok-wash); color:var(--ok-ink); border:1px solid var(--ok-line)}
.esc-note{color:var(--muted); font-style:italic}
.esc-ret{color:var(--hold-ink)}
.esc-people{display:flex; flex-wrap:wrap; gap:7px}
.esc-who{display:flex; flex-direction:column; gap:1px; font-size:11.5px; color:var(--muted);
  background:var(--surface-2); border:1px solid var(--line); border-radius:7px; padding:6px 10px}
.esc-who b{font-size:12.5px; font-weight:600; color:var(--ink)}
.esc-demo{border:1px dashed var(--line-strong); border-radius:9px; padding:12px 13px;
  background:var(--surface-2); display:flex; flex-direction:column; gap:10px; font-size:12.5px;
  color:var(--muted)}
.esc-demo-tag{align-self:flex-start; font-size:10px; font-weight:700; letter-spacing:.08em;
  text-transform:uppercase; background:var(--hold); color:#fff; border-radius:4px; padding:3px 8px}
.esc-demo-row{display:flex; gap:9px; flex-wrap:wrap}
.esc-demo-row select{flex:1 1 210px}
.esc-demo-row input{flex:2 1 220px}
.esc-demo-row .btn{flex:0 0 auto}

.checklist{display:flex; flex-direction:column; gap:2px}
.chk{display:flex; align-items:flex-start; gap:10px; padding:8px 10px; border-radius:7px;
  background:none; border:0; width:100%; text-align:left; cursor:pointer; font-size:13.5px;
  color:var(--ink-2); font-family:var(--sans)}
.chk:hover{background:var(--surface-2)}
.box{width:17px; height:17px; flex:none; border:1.5px solid var(--line-strong); border-radius:4px;
  background:var(--surface); margin-top:2px; display:grid; place-items:center; color:transparent}
.chk[aria-pressed="true"] .box{background:var(--brand); border-color:var(--brand); color:#fff}
.chk[aria-pressed="true"]{color:var(--ink); font-weight:500}

.signoff{display:grid; grid-template-columns:repeat(auto-fit,minmax(246px,1fr)); gap:14px}
.sig{display:flex; flex-direction:column; gap:6px}
.sig .lbl{font-size:11px; font-weight:600; letter-spacing:.07em; text-transform:uppercase; color:var(--muted)}
.sig .val{font-size:14px; font-weight:600; color:var(--ink); background:var(--surface-2);
  border:1px solid var(--line); border-radius:8px; padding:9px 11px}
.sig .val .stamp{display:block; font-family:var(--mono); font-size:10.5px; font-weight:500;
  letter-spacing:.04em; color:var(--muted); margin-top:2px}

.gate{display:flex; flex-direction:column; gap:8px; border:1px dashed var(--line-strong);
  border-radius:10px; padding:13px 15px; background:var(--surface-2)}
.gate h4{margin:0; font-size:11px; font-weight:700; letter-spacing:.09em; text-transform:uppercase;
  color:var(--muted)}
.gate ul{margin:0; padding-left:0; list-style:none; display:flex; flex-direction:column; gap:6px}
.gate li{display:flex; align-items:center; gap:9px; font-size:13px; color:var(--muted)}
.gate li .tick{width:15px; height:15px; flex:none; border-radius:50%; display:grid; place-items:center;
  background:var(--surface-3); color:var(--faint); font-size:9px; font-weight:700}
.gate li.done{color:var(--ink-2)}
.gate li.done .tick{background:var(--ok-wash); color:var(--ok-ink); border:1px solid var(--ok-line)}

/* ---------- log / audit ---------- */
.log{background:var(--surface); border:1px solid var(--line); border-radius:10px; overflow:hidden}
.log-row{display:grid; grid-template-columns:158px 1fr; gap:16px; padding:11px 16px;
  border-bottom:1px solid var(--line); font-size:13.5px}
.log-row:last-child{border-bottom:0}
.log-row .when{font-family:var(--mono); font-size:11.5px; color:var(--muted); padding-top:2px}
.log-row .what{color:var(--ink-2)}
.log-row .what b{color:var(--ink)}
.tagline{display:inline-block; font-family:var(--mono); font-size:10px; font-weight:600;
  letter-spacing:.07em; text-transform:uppercase; padding:2px 7px; border-radius:4px;
  background:var(--brand-wash-2); color:var(--brand-ink); margin-right:7px}

/* ---------- compare / spec ---------- */
.compare{display:grid; grid-template-columns:repeat(auto-fit, minmax(300px,1fr)); gap:18px}
.compare-card{background:var(--surface); border:1px solid var(--line); border-radius:10px;
  overflow:hidden; display:flex; flex-direction:column}
.compare-card > header{padding:9px 14px; border-bottom:1px solid var(--line); background:var(--surface-2);
  display:flex; align-items:baseline; gap:9px}
.compare-card h3{font-size:12.5px; font-weight:700; letter-spacing:.05em; text-transform:uppercase}
.compare-card .meta{font-family:var(--mono); font-size:10.5px; color:var(--muted)}
.compare-card .cb{padding:14px; display:flex; flex-direction:column; gap:10px; font-size:13.5px;
  color:var(--ink-2)}
.paper{font-family:var(--mono); font-size:11.5px; line-height:1.9; color:var(--ink-2);
  background:var(--surface-2); border:1px solid var(--line); border-radius:8px; padding:12px 14px}
.paper .hand{color:var(--brand-ink)}
.paper .bad{background:var(--brand-wash-2); color:var(--brand-ink); border-radius:3px; padding:0 3px}

.spec{display:grid; grid-template-columns:repeat(auto-fit, minmax(300px,1fr)); gap:20px}
.spec-block{display:flex; flex-direction:column; gap:10px}
.spec-block h3{font-size:12px; font-weight:700; letter-spacing:.09em; text-transform:uppercase;
  color:var(--brand-ink); padding-bottom:8px; border-bottom:1px solid var(--line)}
.spec-block ul{margin:0; padding-left:18px; display:flex; flex-direction:column; gap:8px;
  font-size:14px; color:var(--ink-2)}
.spec-block li b{color:var(--ink)}
code{font-family:var(--mono); font-size:12.5px; background:var(--surface-3); padding:1.5px 5px;
  border-radius:4px; color:var(--ink)}
pre{margin:0; overflow-x:auto; background:var(--surface); border:1px solid var(--line);
  border-radius:10px; padding:16px 18px}
pre code{background:none; padding:0; font-size:12.5px; line-height:1.75; color:var(--ink-2)}
.k{color:var(--brand-ink); font-weight:500}
.s{color:var(--ink)}
.c{color:var(--muted); font-style:italic}

.loc-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(168px,1fr)); gap:8px}
.loc-ado{margin-left:auto; font-size:10px; font-weight:800; letter-spacing:.04em; color:var(--navy);
  background:var(--surface-3); border-radius:4px; padding:2px 6px}
.loc-ado.none{color:var(--hold-ink); background:var(--hold-wash)}
.loc-chip{display:flex; align-items:center; gap:8px; font-size:13px; color:var(--ink-2);
  background:var(--surface); border:1px solid var(--line); border-radius:8px; padding:8px 11px}
.loc-chip .cd{font-family:var(--mono); font-size:9.5px; font-weight:600; color:var(--brand-ink);
  background:var(--brand-wash); border-radius:4px; padding:2px 6px; flex:none}

/* ---------- modal ---------- */
.backdrop{position:fixed; inset:0; background:rgba(23,20,24,.5); backdrop-filter:blur(2px);
  display:none; align-items:center; justify-content:center; padding:24px; z-index:50}
.backdrop.show{display:flex}
.modal{background:var(--surface); border:1px solid var(--line); border-radius:14px;
  box-shadow:0 24px 64px -20px rgba(0,0,0,.5); width:min(640px,100%); max-height:92vh;
  display:flex; flex-direction:column; overflow:hidden}
.modal header{padding:18px 20px 14px; border-bottom:1px solid var(--line);
  display:flex; flex-direction:column; gap:4px}
.modal h3{font-size:17px; font-weight:700; letter-spacing:-.01em}
.modal .sub{font-size:13.5px; color:var(--muted)}
.modal .body{padding:18px 20px; display:flex; flex-direction:column; gap:14px; overflow-y:auto}
.field{display:flex; flex-direction:column; gap:6px}
.field[hidden]{display:none}
.field label{font-size:12px; font-weight:600; letter-spacing:.05em; text-transform:uppercase; color:var(--muted)}
.field .req{color:var(--brand)}
.field .help{font-size:12px; color:var(--faint)}
.grid2{display:grid; grid-template-columns:1fr 1fr; gap:14px}
select,textarea,input[type="text"],input[type="password"],input[type="date"],input[type="time"],
input[type="number"],input[type="email"],input[type="tel"],input[type="search"]{
  font-family:var(--sans); font-size:14px; color:var(--ink);
  background:var(--surface-2); border:1px solid var(--line-strong); border-radius:8px;
  padding:9px 11px; width:100%}
input::placeholder{color:var(--faint)}
textarea{resize:vertical; min-height:60px}
.locked{background:var(--surface-3); color:var(--muted)}
.seg{display:flex; gap:0; border:1px solid var(--line-strong); border-radius:8px; overflow:hidden}
.seg button{flex:1 1 0; background:var(--surface-2); border:0; border-right:1px solid var(--line-strong);
  padding:10px 8px; font-size:13px; font-weight:600; color:var(--ink-2); cursor:pointer}
.seg button:last-child{border-right:0}
.seg button[aria-pressed="true"]{background:var(--brand); color:#fff}
.err{display:none; font-size:12.5px; color:var(--brand-ink); background:var(--brand-wash);
  border-radius:7px; padding:8px 11px}
.err.show{display:block}
.modal footer{padding:14px 20px; border-top:1px solid var(--line); background:var(--surface-2);
  display:flex; gap:9px; justify-content:flex-end; flex-wrap:wrap}
.audit-hint{font-size:12.5px; color:var(--muted); margin-right:auto}

.toast{position:fixed; bottom:24px; left:50%; transform:translate(-50%,8px); background:var(--ink);
  color:var(--ground); font-size:13.5px; font-weight:500; padding:10px 18px; border-radius:999px;
  opacity:0; pointer-events:none; transition:opacity .18s, transform .18s; z-index:60}
.toast.show{opacity:1; transform:translate(-50%,0)}

@media (prefers-reduced-motion: reduce){*{transition:none !important; animation:none !important}}
@media (max-width:900px){
  .sidebar{position:absolute; inset:0 auto 0 0; transform:translateX(-100%); transition:transform .2s}
  .screen.nav-open .sidebar{transform:translateX(0)}
  .menu-toggle{display:flex}
}
@media (max-width:640px){
  .wrap{padding:26px 16px 72px; gap:34px}
  .log-row{grid-template-columns:1fr; gap:4px}
  .user-chip .u{display:none}
  .crumbs{display:none}
  .grid2{grid-template-columns:1fr}
}

/* ============================================================
   PRINT SHEET — what goes in the specimen bag
   ============================================================ */
/* the on-screen paper view — what the lab would hold in their hand */
.paper-view{position:fixed; inset:0; z-index:70; background:#1c2432;
  display:flex; flex-direction:column}
.paper-view[hidden]{display:none}
.paper-bar{flex:none; display:flex; align-items:center; gap:12px; flex-wrap:wrap;
  padding:12px 20px; background:#111827; border-bottom:1px solid #2b3648}
.paper-bar .pb-title{font-size:14.5px; font-weight:600; color:#f3f5f8}
.paper-bar .pb-meta{font-size:12.5px; color:#98a3b6}
.paper-bar .grow{flex:1 1 auto}
.paper-bar .btn{background:#1f2937; border-color:#3a4658; color:#e6eaf1}
.paper-bar .btn:hover{background:#2a3648; border-color:#586a84}
.paper-bar .btn.primary{background:var(--brand); border-color:var(--brand); color:#fff}
.paper-bar .btn.primary:hover{background:var(--brand-ink); border-color:var(--brand-ink)}
.paper-hint{width:100%; font-size:12px; color:#8b97ab; margin-top:-4px}
.paper-stage{flex:1 1 auto; overflow:auto; padding:26px 20px 40px;
  display:flex; flex-direction:column; align-items:center; gap:24px}
.print-sheet{width:100%; display:flex; flex-direction:column; align-items:center; gap:24px}
.ps{display:flex; flex-direction:column; align-items:center; gap:24px; width:100%}
.ps .page{background:#fff; color:#111; width:8.5in; max-width:100%; padding:0.5in;
  box-shadow:0 10px 34px rgba(0,0,0,.45); border-radius:2px}
.ps h1{font-family:var(--sans); font-size:15px; font-weight:800; letter-spacing:.04em;
  text-align:center; text-transform:uppercase; color:#111}
.ps h2{font-family:var(--sans); font-size:12.5px; font-weight:700; letter-spacing:.12em;
  text-align:center; text-transform:uppercase; color:#333; margin-top:3px}
.ps .idline{display:grid; grid-template-columns:2fr 1.1fr 1.7fr .8fr; gap:0 18px;
  margin:16px 0 12px; font-size:11px; font-family:var(--sans)}
.ps .idline div{display:flex; gap:6px; align-items:baseline; min-width:0}
.ps .idline i{font-style:normal; font-weight:700; text-transform:uppercase; letter-spacing:.04em;
  font-size:9px; color:#444; white-space:nowrap; flex:none}
.ps .idline b{font-weight:600; border-bottom:1px solid #999; flex:1 1 auto; min-width:0;
  padding:0 3px 1px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.ps table{width:100%; border-collapse:collapse; font-size:10px; font-family:var(--sans)}
.ps th,.ps td{border:1px solid #999; padding:4px 5px; text-align:left; vertical-align:top;
  color:#111; font-style:normal}
.ps th{background:#f0f0f0; font-size:8.5px; font-weight:700; letter-spacing:.04em; text-transform:uppercase}
.ps td.ctr{text-align:center}
.ps td s{color:#666}
.ps .band{background:#e9e9e9; font-size:9.5px; font-weight:700; letter-spacing:.1em;
  text-transform:uppercase; padding:5px 7px; border:1px solid #999; border-bottom:0; margin-top:16px}
.ps .two{display:grid; grid-template-columns:1fr 1fr; gap:0}
.ps .two.three{grid-template-columns:1fr 1fr 1fr}
.ps .two.three > div{font-size:9px}
.ps .two > div{border:1px solid #999; padding:8px 10px; font-size:10px}
.ps .two > div + div{border-left:0}
.ps .two h4{margin:0 0 6px; font-size:9.5px; letter-spacing:.07em; text-transform:uppercase}
.ps .two p{display:flex; justify-content:space-between; gap:10px; padding:2px 0; border-bottom:1px dotted #bbb}
.ps .verify{border:1px solid #999; border-top:0; padding:8px 10px; font-size:10px}
.ps .verify div{padding:2px 0}
.ps .sign{display:grid; grid-template-columns:1fr 1fr; gap:22px; margin-top:16px; font-size:10.5px}
.ps .sign p{border-top:1px solid #333; padding-top:4px; margin-top:26px}
.ps .retain{margin-top:16px; font-size:8.5px; color:#555; text-align:center; letter-spacing:.02em}
.ps .pagenum{margin-top:8px; font-size:8.5px; color:#555; text-align:right}

@media print{
  @page{size:letter portrait; margin:0.5in}
  body{background:#fff}
  .wrap,.toast,.backdrop,.paper-bar{display:none !important}
  .paper-view,.paper-view[hidden]{display:block !important; position:static; background:#fff}
  .paper-stage{display:block; padding:0; overflow:visible}
  .print-sheet,.ps{display:block; gap:0}
  .ps .page{width:auto; max-width:none; padding:0; margin:0; box-shadow:none; border-radius:0;
    page-break-after:always}
  .ps .page:last-child{page-break-after:auto}
}

/* ============================================================
   PRODUCTION OVERRIDES — full-window app shell
   ============================================================ */
html,body{height:100%}
body{overflow:hidden}
.screen{height:100vh; height:100dvh; min-height:0; border:0; border-radius:0; box-shadow:none}
.content-area{flex:1 1 auto; overflow:auto}
@media print{ .screen{display:none !important} body{overflow:visible} }

.boot{position:fixed; inset:0; display:grid; place-items:center; background:var(--ground); z-index:90;
  font-size:14px; color:var(--muted)}
.boot[hidden]{display:none}
.gbtn{display:flex; align-items:center; justify-content:center; gap:10px; width:100%; min-height:46px;
  border:1px solid var(--line-strong); border-radius:8px; background:#fff; font-size:15px; font-weight:600;
  color:var(--ink); cursor:pointer}
.gbtn:hover{background:var(--surface-2)}
.domains{font-size:12px; color:var(--muted); text-align:center; line-height:1.5}

/* tables used by admin screens */
.data-table{width:100%; border-collapse:collapse; font-size:13.5px}
.data-table th{font-size:11px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--muted);
  text-align:left; padding:10px 12px; border-bottom:1px solid var(--line); background:var(--surface-2); position:sticky; top:0}
.data-table td{padding:9px 12px; border-bottom:1px solid var(--line); vertical-align:middle}
.data-table tr:hover td{background:var(--surface-2)}
.data-table select,.data-table input[type=text]{font:inherit; font-size:13px; padding:6px 8px; border:1px solid var(--line-strong);
  border-radius:6px; background:#fff; min-height:34px}
.data-table .muted{color:var(--muted)}
.pill{display:inline-block; font-size:11.5px; font-weight:600; padding:2px 9px; border-radius:999px;
  background:var(--surface-3); color:var(--ink-2)}
.pill.ok{background:var(--ok-wash); color:var(--ok-ink)}
.pill.hold{background:var(--hold-wash); color:var(--hold-ink)}
.pill.bad{background:var(--brand-wash); color:var(--brand-ink)}
.pill.info{background:#e8f1fb; color:#1b5fa3}

/* permission grid */
.perm-grid td.c, .perm-grid th.c{text-align:center; width:120px}
.perm-grid .grp td{background:var(--surface-3); font-weight:700; font-size:11.5px; letter-spacing:.07em;
  text-transform:uppercase; color:var(--ink-2)}
.perm-grid .pdesc{display:block; font-size:12px; color:var(--muted)}
.perm-grid input[type=checkbox]{width:20px; height:20px; accent-color:var(--brand); cursor:pointer}
.perm-grid input[disabled]{cursor:not-allowed; opacity:.55}

/* check-in queue */
.q-list{display:flex; flex-direction:column; gap:10px}
.q-card{display:grid; grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) auto; gap:14px; align-items:center;
  background:var(--surface); border:1px solid var(--line); border-radius:10px; padding:14px 16px; box-shadow:var(--lift)}
.q-card .qn{font-weight:700; font-size:15.5px}
.q-card .qs{font-size:12.5px; color:var(--muted)}
.q-card .qa{display:flex; gap:8px; flex-wrap:wrap; justify-content:flex-end}
.q-card .btn{min-height:40px}
@media (max-width:760px){ .q-card{grid-template-columns:1fr} .q-card .qa{justify-content:flex-start} }
.sig-img{max-width:280px; border:1px solid var(--line); border-radius:6px; background:#fff}
.toolbar{display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin:6px 0 14px}
.toolbar select,.toolbar input{font:inherit; font-size:13.5px; padding:8px 10px; border:1px solid var(--line-strong);
  border-radius:8px; background:#fff; min-height:40px}
.empty{padding:28px; text-align:center; color:var(--muted); background:var(--surface); border:1px dashed var(--line-strong);
  border-radius:10px}
.lock-banner{background:var(--hold-wash); border:1px solid var(--hold-line); color:var(--hold-ink); padding:10px 14px;
  border-radius:8px; font-size:13.5px; margin-bottom:12px}

.hl-logo{height:40px; width:auto; display:block}
.sidebar-logo .hl-logo{height:34px; background:#fff; border-radius:8px; padding:6px 9px; box-sizing:content-box}

[hidden]{display:none !important}
.log-table td .old{display:block; text-decoration:line-through; color:var(--muted); font-weight:400; font-size:.9em}

/* ---------- preview-as-role ---------- */
.viewas{display:flex; align-items:center; gap:8px; font-size:12px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--muted)}
.viewas select{font:inherit; font-size:13.5px; font-weight:600; text-transform:none; letter-spacing:0; color:var(--ink);
  border:1px solid var(--line-strong); border-radius:8px; padding:6px 8px; background:#fff; min-height:36px}
.preview-bar{flex:none; background:#fff6dd; border-bottom:1px solid var(--hold-line); color:var(--hold-ink);
  font-size:13.5px; padding:9px 22px; display:flex; gap:12px; align-items:center; flex-wrap:wrap}
.preview-bar b{color:#5c3c05}
.preview-bar button{font:inherit; font-size:13px; font-weight:600; border:1px solid var(--hold-line); background:#fff; border-radius:7px; padding:5px 10px; cursor:pointer}
@media (max-width:640px){ .viewas span{display:none} }

/* ---------- live dashboard ---------- */
.dash{gap:18px}
.dash-sec{display:flex; flex-direction:column; gap:14px; margin-bottom:26px}
.dash-h{display:flex; align-items:center; gap:12px; flex-wrap:wrap}
.dash-h h3{font-size:18px; font-weight:700; letter-spacing:-.01em; margin-right:auto}
.live-dot{display:inline-flex; align-items:center; gap:7px; font-size:12px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--ok-ink)}
.live-dot::before{content:""; width:8px; height:8px; border-radius:50%; background:var(--ok); box-shadow:0 0 0 3px var(--ok-wash)}
.alert-list{display:flex; flex-direction:column; gap:6px}
.alert{display:flex; gap:10px; align-items:center; flex-wrap:wrap; background:var(--surface); border:1px solid var(--line); border-left:3px solid var(--hold);
  border-radius:8px; padding:9px 12px; font-size:13.5px; color:var(--ink-2)}
.alert.bad{border-left-color:var(--brand)}
.dash-table th.n,.dash-table td.n{text-align:right; white-space:nowrap; font-variant-numeric:tabular-nums}
.dash-table td.hot{color:var(--brand-ink); font-weight:700}
.dash-table tr.quiet td{color:var(--faint)}
.dash-table tr.quiet td b{color:var(--muted); font-weight:600}
.kpis{display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:12px}
.kpi{background:var(--surface); border:1px solid var(--line); border-radius:10px; padding:14px 16px; display:flex; flex-direction:column; gap:4px; box-shadow:var(--lift)}
.kpi .k-lbl{font-size:11.5px; font-weight:700; letter-spacing:.07em; text-transform:uppercase; color:var(--muted)}
.kpi .k-num{font-size:28px; font-weight:700; letter-spacing:-.02em; color:var(--ink); font-variant-numeric:tabular-nums}
.kpi .k-foot{display:flex; gap:8px; align-items:baseline; font-size:12.5px; color:var(--muted)}
.kpi .delta{font-weight:700; color:var(--ink-2)}
.dash-two{display:grid; grid-template-columns:repeat(auto-fit,minmax(340px,1fr)); gap:14px}
.dash-two > *{margin:0}
.dash .barrow{grid-template-columns:minmax(120px,190px) 1fr 42px}
.bars{position:relative; display:grid; grid-template-columns:34px 1fr; grid-template-rows:180px auto; gap:4px 8px}
.bars-y{display:flex; flex-direction:column; justify-content:space-between; font-size:11px; color:var(--muted); text-align:right; height:180px}
.bars-plot{position:relative; height:180px; border-bottom:1px solid var(--line-strong)}
.bars-plot .grid{position:absolute; left:0; right:0; height:0; border-top:1px dashed var(--line)}
.bars-plot .bar{position:absolute; bottom:0; top:0; display:flex; align-items:flex-end; cursor:default}
.bars-plot .bar b{display:block; width:100%; background:var(--c-blue); border-radius:4px 4px 0 0; min-height:0}
.bars-plot .bar:hover b{background:#1b5fa3}
.bars-x{grid-column:2; display:flex; justify-content:space-between; font-size:11px; color:var(--muted)}
.bars-tip{position:absolute; top:-6px; width:180px; background:var(--navy); color:#fff; font-size:12px; padding:6px 9px; border-radius:6px; text-align:center; pointer-events:none}
.table-view{margin-top:10px; font-size:13px} .table-view summary{cursor:pointer; color:var(--muted)}
@media (max-width:640px){ .dash-two{grid-template-columns:1fr} .kpis{grid-template-columns:1fr 1fr} .kpi .k-num{font-size:22px} }

/* ---------- check-in wait timer ---------- */
.timer{display:inline-flex; align-items:center; gap:6px; font-family:var(--mono); font-size:14px; font-weight:600; padding:4px 10px 4px 8px;
  border-radius:999px; border:1px solid; font-variant-numeric:tabular-nums; white-space:nowrap}
.timer i{width:8px; height:8px; border-radius:50%; background:currentColor}
.timer.green{color:#0f6b4c; background:#e8f6f0; border-color:#a9ddc8}
.timer.yellow{color:#7a5200; background:#fff4cc; border-color:#e9c75a}
.timer.red{color:#fff; background:#c81e2f; border-color:#c81e2f}
.timer.red i{animation:tpulse 1.2s ease-in-out infinite}
.timer.stopped{opacity:.75}
.timer.stopped i{animation:none}
@keyframes tpulse{50%{opacity:.25}}

/* ---------- verification team ---------- */
.v-card{grid-template-columns:minmax(0,1fr) minmax(0,1.25fr)}
.v-top{display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-bottom:6px}
.v-loc{font-size:12.5px; font-weight:700; color:var(--ink-2)}
.v-act{display:flex; flex-direction:column; gap:8px}
.v-amt{display:grid; grid-template-columns:auto auto 1fr; gap:8px; align-items:center}
.v-amt label{font-size:12px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--muted)}
.v-dollar{font-size:20px; font-weight:700; color:var(--ink-2); text-align:right}
.v-amt input{font:inherit; font-size:20px; font-weight:700; padding:8px 12px; border:1.5px solid var(--line-strong); border-radius:8px; min-height:48px; width:100%; min-width:110px}
.v-amt input.v-note{grid-column:1/-1; font-size:14px; font-weight:400; min-height:42px}
.v-amt input:focus{outline:none; border-color:var(--c-blue); box-shadow:0 0 0 3px rgba(36,120,204,.15)}
.v-btns{grid-column:1/-1; display:flex; gap:8px; flex-wrap:wrap}
.v-pay{display:flex; flex-direction:column; gap:8px; font-size:14px; color:var(--ink-2)}
.chat-badge{display:inline-block; background:#fff; color:var(--brand); border-radius:999px; padding:0 7px; font-size:11.5px; font-weight:800; margin-left:4px}
.btn:not(.primary) .chat-badge{background:var(--brand); color:#fff}
.chat{display:flex; flex-direction:column; gap:8px; max-height:340px; overflow:auto; padding:6px 2px}
.msg{display:flex; flex-direction:column; max-width:82%}
.msg span{padding:9px 12px; border-radius:12px; font-size:14px; line-height:1.4; white-space:pre-wrap; word-break:break-word}
.msg i{font-style:normal; font-size:11px; color:var(--muted); margin-top:3px}
.msg.them{align-self:flex-start} .msg.them span{background:var(--surface-3); color:var(--ink); border-bottom-left-radius:4px}
.msg.me{align-self:flex-end; align-items:flex-end} .msg.me span{background:var(--c-blue); color:#fff; border-bottom-right-radius:4px}
@media (max-width:760px){ .v-card{grid-template-columns:1fr} }

.toolbar select{width:auto; max-width:260px}
.dash .tiles{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}
.alert b{font-weight:600; color:var(--ink)}
.alert .muted{font-size:12.5px}
.viewas{white-space:nowrap}

.req-row{display:flex; gap:10px; align-items:center; flex-wrap:wrap; padding:6px 0; border-bottom:1px solid var(--line)}
.req-row > div{flex:1 1 260px}
.req-row:last-child{border-bottom:0}
/* check-in QR codes */
.qr-btn{display:inline-flex; align-items:center; gap:7px; margin-right:14px; padding:8px 14px; border:1px solid var(--line-strong); border-radius:10px;
  background:var(--surface); color:var(--ink); font:inherit; font-size:13.5px; font-weight:600; cursor:pointer}
.qr-btn:hover{border-color:#d12233; color:#d12233}
.qr-btn[hidden]{display:none!important}
a.qr-btn{text-decoration:none; position:relative}
.train-dot{position:absolute; top:-4px; right:-4px; width:10px; height:10px; border-radius:50%; background:#d12233; border:2px solid var(--surface)}
.train-dot[hidden]{display:none}
.qr-wrap{display:grid; grid-template-columns:minmax(0,1fr) 300px; gap:24px; align-items:start}
.qr-preview{text-align:center; display:flex; flex-direction:column; align-items:center; gap:8px; font-size:16px}
.qr-box{width:260px; height:260px; background:#fff; padding:8px; border:1px solid var(--line); border-radius:12px}
.qr-box svg{width:100%; height:100%}
.qr-train{color:#d12233; font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.05em}
.qr-side code{font-size:12px; word-break:break-all}
@media (max-width:720px){ .qr-wrap{grid-template-columns:1fr} .qr-btn span{display:none} .qr-btn{margin-right:8px} }
.btn.outline-brand{border-color:var(--brand); color:var(--brand); font-weight:600}
#mSubmit:disabled{background:#c9ced6 !important; border-color:#c9ced6 !important; color:#fff !important; cursor:not-allowed; opacity:1}
.v-mrn{grid-column:1/-1}
.v-mrn input{font-weight:600}
.prov-pick{display:flex; flex-direction:column; gap:6px}

.v-amt textarea.v-note{grid-column:1/-1; font:inherit; font-size:14px; line-height:1.45; padding:9px 12px; border:1.5px solid var(--line-strong); border-radius:8px; resize:vertical; width:100%; color:var(--ink-2)}
.v-amt textarea.v-note:focus{outline:none; border-color:var(--c-blue); box-shadow:0 0 0 3px rgba(36,120,204,.15)}
/* ops screens */
.act-hist{display:flex;flex-direction:column;gap:6px;font-size:12.5px;color:var(--ink-2)}
.act-hist>div{border-left:3px solid var(--line-strong);padding:4px 8px;background:var(--surface-2,#f8fafc);border-radius:4px}
.case-date{font-size:12px;color:var(--muted)}
/* patient chart trail */
.trail{display:flex;flex-direction:column;gap:5px;border-top:1px dashed var(--line);padding-top:8px;margin-top:4px}
.trail-row{display:flex;gap:10px;align-items:baseline;font-size:13px}
.trail-row .pill{min-width:110px;text-align:center}
.dest.other{background:#eef2f7;color:#334155}

/* Settings → Analytics platform */
.sheet label.chk{display:flex; gap:8px; align-items:center; font-size:14px; cursor:pointer; margin:0}
/* access grid: 18 titles — narrow columns, permission names stay in view while scrolling */
.perm-grid td.c, .perm-grid th.c{width:84px; min-width:84px; padding-left:4px; padding-right:4px}
.perm-grid th.c{font-size:11.5px; line-height:1.25; white-space:normal; vertical-align:bottom}
.perm-grid tr > :first-child{position:sticky; left:0; background:var(--surface); z-index:1; min-width:230px; box-shadow:1px 0 0 var(--line)}
.perm-grid .grp td{position:static}
.perm-grid .grp td:first-child{background:var(--surface-3)}

/* ---------- Home: each person's key details + the incident button ---------- */
.home-tiles{display:grid; grid-template-columns:repeat(auto-fill,minmax(210px,1fr)); gap:14px; margin-bottom:16px}
.home-tile{display:flex; flex-direction:column; align-items:flex-start; gap:4px; text-align:left; padding:16px 18px; background:var(--surface);
  border:1px solid var(--line); border-radius:14px; box-shadow:var(--lift); font:inherit; color:var(--ink); cursor:pointer; min-height:118px}
.home-tile[disabled]{cursor:default}
.home-tile:not([disabled]):hover{border-color:var(--line-strong)}
.home-tile .ht-l{font-size:12.5px; font-weight:700; letter-spacing:.05em; text-transform:uppercase; color:var(--ink-3)}
.home-tile .ht-n{font-size:34px; line-height:1.1}
.home-tile .ht-s{font-size:13.5px; color:var(--ink-2)}
.home-tile.warn{background:var(--hold-wash); border-color:var(--hold-line)} .home-tile.warn .ht-l,.home-tile.warn .ht-s,.home-tile.warn .ht-n{color:var(--hold-ink)}
.home-tile.bad{background:var(--brand-wash); border-color:var(--brand-wash-2)} .home-tile.bad .ht-n{color:var(--brand-ink)}
.home-tile.incident{background:var(--brand); border-color:var(--brand); color:#fff} .home-tile.incident .ht-l,.home-tile.incident .ht-s{color:#ffe1e5}
.home-tile.incident:hover{background:var(--brand-ink)}
.home-cols{display:grid; grid-template-columns:minmax(0,2fr) minmax(0,1fr); gap:16px}
@media (max-width:900px){ .home-cols{grid-template-columns:1fr} }
.qr-btn.inc-btn{border-color:var(--brand); color:var(--brand-ink)}
.qr-btn.inc-btn:hover{background:var(--brand); color:#fff}
@media (max-width:700px){ .qr-btn.inc-btn span{display:none} }

/* receiving: flag which patient's specimen is off */
.flag-box{border-top:1px dashed var(--line-strong); margin-top:12px; padding-top:4px}
.flag-box[hidden]{display:none}
.flag-row{display:flex; flex-wrap:wrap; align-items:center; gap:8px; padding:6px 0; border-bottom:1px solid var(--line)}
.flag-row .rn{width:22px; color:var(--ink-3); font-weight:600}
.flag-row b{flex:1 1 140px; min-width:0}
.flag-row select{width:auto; flex:0 1 200px; min-height:38px; font:inherit; font-size:14px; padding:6px 8px; border:1.5px solid var(--line-strong); border-radius:8px; background:#fff}
.flag-row select[hidden]{display:none}

/* needle stick: the wash warning cannot be missed */
.wash-stop{display:flex; flex-direction:column; gap:6px; margin:0 0 14px; padding:18px 18px; border-radius:12px; background:#b3121f; color:#fff; text-align:center; border:4px solid #7a0b14; animation:washPulse 1.6s ease-in-out 3}
.wash-stop b{font-size:34px; letter-spacing:.12em; line-height:1}
.wash-stop span{font-size:19px; font-weight:800; line-height:1.35; letter-spacing:.01em}
@keyframes washPulse{0%,100%{box-shadow:0 0 0 0 rgba(179,18,31,.55)}50%{box-shadow:0 0 0 10px rgba(179,18,31,0)}}
@media (prefers-reduced-motion:reduce){.wash-stop{animation:none}}
/* phones: the top bar always fits — Report an incident and Refresh stay on screen; anything extra scrolls sideways */
@media (max-width:640px){
  .topbar{gap:4px; padding:0 8px; overflow-x:auto; scrollbar-width:none}
  .topbar::-webkit-scrollbar{display:none}
  .topbar > *{flex:none}
  .topbar .grow{flex:1 1 0; min-width:0}
  .qr-btn{margin-right:2px; padding:7px 8px}
  .loc-chip-btn .sw{display:none}
  #crumbLoc{display:inline-block; max-width:86px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; vertical-align:bottom}
  .viewas select{max-width:92px}
}
@media (max-width:480px){ #qrBtn{display:none!important} .user-chip{padding:3px} }
/* ---------- work anniversary ---------- */
.ann-card{display:flex; align-items:center; gap:18px; padding:14px 20px; margin:0 0 16px; border:1px solid var(--line); border-radius:14px; background:var(--surface)}
.ann-card.near{background:linear-gradient(135deg,#14224a,#1f3270); border-color:#c9a227; color:#fff}
.ann-ring{position:relative; width:84px; height:84px; flex:none}
.ann-track{fill:none; stroke:#e7e9ef; stroke-width:7}
.ann-bar{fill:none; stroke:#d12233; stroke-width:7; stroke-linecap:round}
.ann-card.near .ann-track{stroke:rgba(255,255,255,.18)} .ann-card.near .ann-bar{stroke:#f5c542}
.ann-in{position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; line-height:1}
.ann-in b{font-size:24px} .ann-in small{font-size:11px; opacity:.75; margin-top:3px}
.ann-card.near .ann-in b{color:#f5c542}
.ann-t{flex:1 1 auto; display:flex; flex-direction:column; gap:4px; min-width:0}
.ann-t b{font-size:16px} .ann-t span{font-size:13px; color:var(--muted)} .ann-card.near .ann-t span{color:rgba(255,255,255,.75)}
.ann-bonus{text-align:right; display:flex; flex-direction:column} .ann-bonus b{font-size:22px; color:#169268} .ann-bonus span{font-size:11.5px; color:var(--muted)}
.ann-card.near .ann-bonus b{color:#f5c542} .ann-card.near .ann-bonus span{color:rgba(255,255,255,.7)}
@media (max-width:560px){ .ann-card{flex-wrap:wrap; gap:12px} .ann-bonus{text-align:left} }
.ann-fx{position:fixed; inset:0; z-index:9999; background:radial-gradient(ellipse at center,#1f3270 0%,#0b1430 75%); display:flex; align-items:center; justify-content:center; overflow:hidden}
.ann-fx canvas{position:absolute; inset:0; pointer-events:none}
.ann-balloon{position:absolute; bottom:-120px; width:46px; height:58px; border-radius:50% 50% 48% 48%; background:hsl(var(--h) 80% 58%); opacity:.9; animation:annRise 7s ease-in infinite}
.ann-balloon::after{content:""; position:absolute; left:50%; top:100%; width:1px; height:46px; background:rgba(255,255,255,.5)}
@keyframes annRise{to{transform:translateY(-120vh) translateX(20px)}}
.ann-box{position:relative; text-align:center; color:#fff; padding:28px 22px; max-width:440px; width:calc(100% - 32px)}
.ann-ribbon{display:inline-block; background:linear-gradient(90deg,#b8891a,#f5c542,#b8891a); color:#3a2700; font-weight:800; letter-spacing:.12em; font-size:clamp(13px,3.6vw,17px); padding:10px 22px; border-radius:6px; box-shadow:0 6px 18px rgba(0,0,0,.35)}
.ann-medal{width:132px; height:132px; margin:22px auto 14px; border-radius:50%; background:radial-gradient(circle at 35% 30%,#ffe9a6,#f5c542 45%,#b8891a); border:5px solid #fff3c4; display:flex; flex-direction:column; align-items:center; justify-content:center; color:#3a2700; box-shadow:0 10px 30px rgba(0,0,0,.4)}
.ann-medal b{font-size:52px; line-height:1} .ann-medal span{font-size:12px; font-weight:700; letter-spacing:.14em}
.ann-box h2{margin:6px 0 4px; font-size:26px} .ann-box p{margin:0 0 16px; opacity:.85}
.ann-amt{display:flex; flex-direction:column; align-items:center; margin-bottom:20px} .ann-amt span{font-size:44px; font-weight:800; color:#f5c542} .ann-amt small{opacity:.75}
.ann-btns{display:flex; gap:10px; justify-content:center; flex-wrap:wrap} .ann-btns .btn{min-width:140px} .ann-fx .btn:not(.primary){background:transparent; color:#fff; border-color:rgba(255,255,255,.5)}
.ann-fx.still .ann-balloon{display:none}
@media (prefers-reduced-motion:reduce){ .ann-balloon{display:none} }
