  /* ---------- Patient selection ---------- */
  .select-wrap{
    max-width:1600px;margin:0 auto;padding:18px 20px 40px;
  }
  /* Slim bedside header — title + nurse identity + council on one line. */
  .select-head{
    display:flex;align-items:center;gap:14px 20px;flex-wrap:wrap;
    margin-bottom:14px;
  }
  .sh-title{min-width:0;display:flex;flex-direction:column;gap:5px}
  .sh-title .eyebrow{
    display:inline-flex;align-items:center;gap:7px;align-self:flex-start;
    padding:4px 11px;background:var(--brand-soft);
    border:1px solid var(--brand-ring);border-radius:999px;
    color:var(--brand-2);font-size:12.5px;font-weight:650;letter-spacing:.02em;
  }
  .sh-title .eyebrow svg{width:13px;height:13px}
  .sh-title h1{font-size:22px;font-weight:750;letter-spacing:-.02em;line-height:1.15}
  .sh-title p{color:var(--muted);font-size:14px}
  .sh-nurse{
    margin-left:auto;display:flex;align-items:center;gap:12px;flex-wrap:wrap;
    background:var(--card);border:1px solid var(--border);border-radius:14px;
    padding:8px 10px 8px 12px;box-shadow:var(--shadow-1);
  }
  .sh-nurse .av-lg{
    width:38px;height:38px;border-radius:11px;
    background:linear-gradient(135deg,#0891b2,#7c3aed);
    color:#fff;font-size:13px;font-weight:700;
    display:flex;align-items:center;justify-content:center;flex-shrink:0;
  }
  .sh-nurse .sh-id{min-width:0;line-height:1.25}
  .sh-nurse .sh-name{font-size:15px;font-weight:650;color:var(--ink)}
  .sh-nurse .sh-sub{font-size:12.5px;color:var(--muted)}
  .sh-council{display:flex;flex-direction:column;gap:3px}
  .sh-council label{font-size:11px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.05em}
  .sh-council input{
    background:var(--bg-soft);border:1px solid var(--border);border-radius:8px;
    padding:8px 11px;font-size:14.5px;width:130px;outline:none;
    font-variant-numeric:tabular-nums;letter-spacing:.06em;
  }
  .sh-council input:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-ring)}
  /* Empty-identity avatar falls back to a person glyph rather than a bare "?". */
  .sh-nurse .av-lg svg{width:19px;height:19px}
  /* Demo shift needs name + council before start; render them as a clear, equal
     mini-form and mark them required so the gate isn't a mystery. */
  .sh-nurse-form{gap:10px}
  .sh-field{display:flex;flex-direction:column;gap:3px}
  .sh-field label{font-size:11px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.05em}
  .sh-field label .req{color:var(--crit);margin-left:1px;font-weight:800}
  .sh-field input{
    background:var(--bg-soft);border:1px solid var(--border);border-radius:8px;
    padding:8px 11px;font:inherit;font-size:14.5px;outline:none;color:var(--ink);
  }
  .sh-field-name input{width:200px;max-width:44vw}
  .sh-field input:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-ring)}
  /* A field that still blocks start glows warm until it's filled. */
  .sh-field input.field-needed,.sh-council input.field-needed{border-color:var(--warn-border);background:var(--warn-soft)}

  /* Centered splash hero — used by the SSO sign-in and pending-approval views. */
  .select-hero{
    text-align:center;margin-bottom:32px;
  }
  .select-hero .eyebrow{
    display:inline-flex;align-items:center;gap:8px;
    padding:6px 12px;background:var(--brand-soft);
    border:1px solid var(--brand-ring);border-radius:999px;
    color:var(--brand-2);font-size:12px;font-weight:600;
    margin-bottom:14px;letter-spacing:.02em;
  }
  .select-hero h1{font-size:30px;font-weight:700;letter-spacing:-.025em;margin-bottom:8px}
  .select-hero p{color:var(--muted);font-size:15px;max-width:580px;margin:0 auto}
  .nurse-bar{
    background:var(--card);border:1px solid var(--border);border-radius:var(--radius-3);
    padding:16px 18px;margin-bottom:24px;
    display:flex;align-items:center;gap:16px;flex-wrap:wrap;
    box-shadow:var(--shadow-1);
  }
  .nurse-bar .label{font-size:12px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.04em}
  .nurse-bar .av-lg{
    width:42px;height:42px;border-radius:12px;
    background:linear-gradient(135deg,#0891b2,#7c3aed);
    color:#fff;font-size:14px;font-weight:700;
    display:flex;align-items:center;justify-content:center;flex-shrink:0;
  }

  /* Sticky filter toolbar — stays reachable while scrolling a long roster. */
  /* Sticky top region holds the filters AND the start-shift action row so the
     nurse can select, filter, and start the shift without scrolling to the
     bottom of a long (e.g. 60-patient) roster. Solid background — no
     backdrop-filter, which breaks native <select> taps on iPad Safari. */
  .roster-sticky{
    position:sticky;top:54px;z-index:20;
    margin:0 -20px 14px;padding:0 20px;
    background:var(--bg);
    border-bottom:1px solid var(--border);
    box-shadow:0 6px 12px -8px rgba(0,0,0,.25);
  }
  .preassigned-shift-notice{
    display:flex;align-items:flex-start;gap:9px;margin:0 0 14px;padding:11px 13px;
    border:1px solid var(--ok-border);border-radius:9px;background:var(--ok-soft);
    color:var(--ink-2);font-size:12.5px;line-height:1.45;
  }
  .preassigned-shift-notice[hidden]{display:none}
  .preassigned-shift-notice svg{width:16px;height:16px;flex:none;color:var(--ok);margin-top:1px}
  .preassigned-shift-notice.warn{border-color:var(--warn-border);background:var(--warn-soft)}
  .preassigned-shift-notice.warn svg{color:var(--warn)}
  .roster-toolbar{
    display:flex;align-items:center;gap:10px;flex-wrap:wrap;
    padding:10px 0 0;
  }
  .roster-search{
    position:relative;flex:1;min-width:200px;max-width:380px;
  }
  .roster-search svg{
    position:absolute;left:12px;top:50%;transform:translateY(-50%);
    width:15px;height:15px;color:var(--faint);
  }
  .roster-search input{
    width:100%;padding:9px 12px 9px 34px;
    background:var(--card);border:1px solid var(--border);border-radius:8px;
    font-size:14.5px;outline:none;
  }
  .roster-search input:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-ring)}
  .roster-tool-select{padding:8px 10px;border:1px solid var(--border);border-radius:7px;background:var(--card);font:inherit;font-size:13.5px;color:var(--ink-2);cursor:pointer}
  .roster-tool-select:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-ring)}
  /* Sort / freshness / rejected controls share one aligned group so the toolbar
     reads as a set of filters, not a scatter of inline labels. */
  .roster-filters{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
  .roster-tool{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:750;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
  .roster-tool-check{gap:7px;padding:8px 12px;border:1px solid var(--border);border-radius:8px;background:var(--card);text-transform:none;letter-spacing:0;font-size:13.5px;font-weight:500;color:var(--ink-2);cursor:pointer}
  .roster-tool-check input{accent-color:var(--brand);cursor:pointer}
  .roster-tool-check:hover{border-color:var(--border-2)}

  .roster-grid{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:14px;
  }
  .roster-bucket{grid-column:1/-1;display:grid;grid-template-columns:subgrid;gap:14px}
  .roster-bucket-head{grid-column:1/-1;display:flex;align-items:center;gap:8px;margin-top:8px;padding:10px 2px 2px;border-top:1px solid var(--border)}
  .roster-bucket:first-child .roster-bucket-head{margin-top:0;border-top:0}
  .roster-bucket-title{font-size:14px;font-weight:800;color:var(--ink-2)}
  .roster-bucket-count{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 7px;border:1px solid var(--border);border-radius:999px;background:var(--card-3);font-size:12px;font-weight:800;color:var(--ink-2);font-variant-numeric:tabular-nums}
  /* 4-up on a wide desktop browser so cards keep their tablet size and fill the
     width instead of stretching; 3-up on the bedside tablet; step down on
     phones. */
  @media (min-width:1280px){ .roster-grid{grid-template-columns:repeat(4,minmax(0,1fr))} }
  @media (max-width:700px){ .roster-grid{grid-template-columns:repeat(2,minmax(0,1fr))} }
  @media (max-width:470px){ .roster-grid{grid-template-columns:1fr} }
  .pcard{
    background:var(--card);border:1px solid var(--border);
    border-radius:var(--radius-3);padding:13px 14px 12px;
    cursor:pointer;transition:border-color .15s,box-shadow .15s,transform .15s;
    position:relative;overflow:hidden;
    box-shadow:var(--shadow-1);
    display:flex;flex-direction:column;gap:9px;
  }
  .pcard:hover{border-color:var(--border-2);box-shadow:var(--shadow-2);transform:translateY(-1px)}
  .pcard:focus-visible{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-ring)}
  /* Tier accent runs down the left edge, freeing the top row for bed + tier. */
  .pcard::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--tier-color,var(--border-2))}
  .pcard.roster-tier-resus{--tier-color:var(--resus);background:linear-gradient(90deg,color-mix(in srgb,var(--resus) 7%,var(--card)),var(--card) 32%)}
  .pcard.roster-tier-stab{--tier-color:var(--stab);background:linear-gradient(90deg,color-mix(in srgb,var(--stab) 6%,var(--card)),var(--card) 32%)}
  .pcard.roster-tier-enh{--tier-color:var(--enh);background:linear-gradient(90deg,color-mix(in srgb,var(--enh) 6%,var(--card)),var(--card) 32%)}
  .pcard.roster-tier-std{--tier-color:var(--std);background:linear-gradient(90deg,color-mix(in srgb,var(--std) 5%,var(--card)),var(--card) 32%)}
  .pcard.roster-tier-inact{--tier-color:var(--inact);opacity:.72;background:var(--card-2)}
  .pcard.selected{
    border-color:var(--brand);box-shadow:0 0 0 2px var(--brand-ring),var(--shadow-2);
  }
  .pcard.disabled{opacity:.45;cursor:not-allowed}

  /* Row 1 — bed tag (primary wayfinding), care tier, select target. The bed is
     the only item of unbounded length, so it is the only one that shrinks; the
     row wraps rather than let a long one squeeze the other two out. */
  .pcard-top{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding-left:4px}
  .pcard-bed{
    display:inline-flex;align-items:center;gap:5px;min-width:0;max-width:100%;
    padding:4px 9px;border-radius:8px;
    background:var(--bg-soft);border:1px solid var(--border);
    font-size:14px;font-weight:750;color:var(--ink);letter-spacing:.01em;
    font-variant-numeric:tabular-nums;
  }
  .pcard-bed svg{width:13px;height:13px;color:var(--muted);flex-shrink:0}
  .pcard-bed .chip{padding:1px 6px;font-size:9px;letter-spacing:0;flex-shrink:0}
  .roster-tier-label{display:inline-flex;align-items:center;gap:6px;flex-shrink:0;font-size:11.5px;font-weight:750;letter-spacing:.055em;text-transform:uppercase;color:var(--tier-color,var(--muted))}
  .roster-tier-label::before{content:"";width:8px;height:8px;border-radius:50%;background:currentColor;box-shadow:0 0 0 3px color-mix(in srgb,currentColor 22%,transparent);flex-shrink:0}
  .pcard-check{
    margin-left:auto;flex-shrink:0;
    width:26px;height:26px;border-radius:50%;
    border:2px solid var(--border-2);background:var(--card);
    display:flex;align-items:center;justify-content:center;
    transition:all .15s;
  }
  .pcard-check svg{display:none;width:14px;height:14px}
  .pcard.selected .pcard-check{background:var(--brand);border-color:var(--brand)}
  .pcard.selected .pcard-check svg{display:block;color:#fff}

  /* Row 2 — identity. */
  .pcard-idrow{display:flex;gap:11px;align-items:center}
  .pcard-idrow .avatar{
    width:40px;height:40px;border-radius:11px;flex-shrink:0;
    color:#fff;font-weight:700;font-size:14px;
    display:flex;align-items:center;justify-content:center;
  }
  .pcard-name{font-size:16.5px;font-weight:650;color:var(--ink);line-height:1.2}
  .pcard-meta{font-size:13px;color:var(--muted);display:flex;flex-wrap:wrap;gap:3px 8px;margin-top:2px}
  .pcard-meta .sep{color:var(--faint)}

  /* Diagnosis — lightweight inline line (no heavy box) to reduce clutter. */
  .pcard-diag{
    font-size:13.5px;color:var(--ink-2);line-height:1.4;
    padding-left:10px;border-left:2px solid var(--tier-color,var(--border-2));
  }
  .pcard-diag .dx-label{color:var(--muted);font-weight:700}

  /* Alert row — trigger/early-warning scores and any out-of-range vitals share
     one wrapping line so sick patients read as a single physiological band
     rather than several stacked rows. Absent entirely when stable. */
  .pcard-alert{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
  .pcard-alert .rv{
    display:inline-flex;align-items:baseline;gap:5px;
    padding:3px 10px;border-radius:7px;font-size:13.5px;font-weight:700;
    border:1px solid transparent;font-variant-numeric:tabular-nums;
  }
  .pcard-alert .rv .rv-k{font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;opacity:.85}
  .pcard-alert .rv.warn{background:var(--warn-soft);color:var(--warn);border-color:var(--warn-border)}
  .pcard-alert .rv.crit{background:var(--crit-soft);color:var(--crit);border-color:var(--crit-border)}

  /* Footer — data provenance + freshness, visually demoted onto one line. */
  .pcard-foot{
    display:flex;gap:6px;flex-wrap:wrap;align-items:center;
    margin-top:1px;
  }
  .pcard-foot .pill{font-size:9px;padding:2px 6px;opacity:.8}

  .acuity-1{background:var(--ok-soft);color:var(--ok);border-color:var(--ok-border)}
  .acuity-2{background:var(--warn-soft);color:var(--warn);border-color:var(--warn-border)}
  .acuity-3{background:var(--crit-soft);color:var(--crit);border-color:var(--crit-border)}

  /* PRE-179: live-patient triage chips. Distinct from acuity-* because the
     mapping per spec is non-monotonic (T1=green, T2=orange, T3=red, T4=blue,
     T5=blue) and shouldn't be conflated with the seed cohort acuity scale. */
  /* Two fixes here, both about a tier being unreadable as a state.
     The hue mapping is the spec's and is untouched. What changed is WEIGHT: the
     top two tiers are filled, so the sickest patient looks the sickest.
     Resuscitation used to be the palest chip in the set — a wash of --info at
     the same value as the card behind it — which made the most acute state in
     the unit the quietest mark on the screen.
     It was also the wrong blue: the board draws Resuscitation in --resus and
     the chip drew it in --info, so one tier had two colours depending which
     screen you were on. Both now use the tier tokens the board uses. */
  .triage-1{background:var(--ok-soft);  color:var(--ok);  border-color:var(--ok-border)}
  .triage-2{background:color-mix(in srgb,var(--enh) 16%,var(--card));color:var(--enh);border-color:color-mix(in srgb,var(--enh) 42%,transparent)}
  .triage-3{background:var(--stab);color:#fff;border-color:var(--stab);font-weight:800}
  .triage-4{background:var(--resus);color:#fff;border-color:var(--resus);font-weight:800}
  .triage-5{background:var(--resus);color:#fff;border-color:var(--resus);font-weight:800}
  .triage-0{background:var(--card-2);color:var(--muted);border-color:var(--border)}


  /* PRE-181: LIVE pulse chip — when the bridge has pushed data within
     the last 5 min, replace the "ingested X ago" text with a small
     pulsing green dot + "LIVE" label so freshness is instantly readable. */
  /* ---------- Monitoring board ---------- */
  .monitoring-board{
    --mon-bg:#f5f5f7;--mon-panel:#ffffff;--mon-panel-2:#f5f6f9;--mon-panel-3:#eceef3;
    --mon-border:#e7e9ef;--mon-border-2:#d5d9e2;--mon-text:#0b0c10;
    --mon-text-dim:#5c6472;--mon-text-faint:#949aa6;
    --mon-shadow:0 1px 2px rgba(15,23,42,.04),0 8px 22px rgba(15,23,42,.055);
    --mon-shadow-hover:0 14px 36px rgba(15,23,42,.12),0 4px 10px rgba(15,23,42,.06);
    --mon-radius:20px;--mon-inset:inset 0 1px 0 rgba(255,255,255,.6);
    --mon-inset:inset 0 1px 0 rgba(255,255,255,.5);
    --mon-scale:1;
    min-height:calc(100vh - 54px);padding:22px 24px 72px;max-width:none;margin:0 auto;
    background:
      radial-gradient(1200px 420px at 12% -8%, color-mix(in srgb,var(--brand) 6%,transparent), transparent 60%),
      var(--mon-bg);
    color:var(--mon-text)
  }
  :root[data-theme="dark"] .monitoring-board{
    --mon-bg:#000;--mon-panel:#0f1218;--mon-panel-2:#171b23;--mon-panel-3:#20252f;
    --mon-border:#282e39;--mon-border-2:#39414f;--mon-text:#f4f5f7;
    --mon-text-dim:#9aa1ad;--mon-text-faint:#6b7381;
    --mon-shadow:0 1px 2px rgba(0,0,0,.5),0 10px 26px rgba(0,0,0,.44);
    --mon-shadow-hover:0 18px 44px rgba(0,0,0,.62),0 4px 12px rgba(0,0,0,.5);
    --mon-inset:inset 0 1px 0 rgba(255,255,255,.04);
    background:
      radial-gradient(1200px 460px at 12% -10%, color-mix(in srgb,var(--brand) 12%,transparent), transparent 62%),
      var(--mon-bg);
  }
  .monitoring-head{
    display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:10px;
    padding:4px 0 2px
  }
  .monitoring-head .h1{font-size:calc(24px * var(--mon-scale));line-height:1.1;margin:0;color:var(--mon-text)}
  .monitoring-head .small{color:var(--mon-text-faint);font-size:calc(14px * var(--mon-scale));margin-top:3px}
  .monitoring-head-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
  .monitoring-tier-tabs{display:flex;align-items:stretch;gap:6px;overflow-x:auto;padding:10px 0 12px}
  .monitoring-tier-heading{
    display:flex;align-items:center;flex:0 0 auto;padding:0 8px 0 2px;
    color:var(--mon-text-dim);font-size:calc(10.5px * var(--mon-scale));font-weight:900;
    letter-spacing:1px;text-transform:uppercase
  }
  .monitoring-tier-tab{
    --tab-accent:var(--brand);
    min-width:132px;text-align:left;background:var(--mon-panel);border:1px solid var(--mon-border);
    border-radius:11px;padding:9px 14px;color:var(--mon-text-dim);cursor:pointer;box-shadow:var(--mon-shadow);
    display:flex;flex-direction:column;gap:3px;position:relative;
    transition:border-color .14s,background .14s,box-shadow .14s,transform .14s
  }
  .monitoring-tier-tab:hover{border-color:var(--mon-border-2);transform:translateY(-1px);box-shadow:var(--mon-shadow-hover)}
  .monitoring-tier-tab.on{
    background:var(--mon-panel-2);
    border-color:color-mix(in srgb,var(--tab-accent) 45%,var(--mon-border-2));
    box-shadow:var(--mon-shadow),inset 0 0 0 1.5px color-mix(in srgb,var(--tab-accent) 42%,transparent)
  }
  .monitoring-tier-tab.tier-resus{--tab-accent:var(--resus)}
  .monitoring-tier-tab.tier-stab{--tab-accent:var(--stab)}
  .monitoring-tier-tab.tier-enh{--tab-accent:var(--enh)}
  .monitoring-tier-tab.tier-std{--tab-accent:var(--std)}
  .monitoring-tier-tab.tier-inact{--tab-accent:var(--inact)}
  .monitoring-tier-tab span{font-size:calc(10.5px * var(--mon-scale));text-transform:uppercase;letter-spacing:1px;font-weight:800}
  .monitoring-tier-tab b{font-size:calc(18px * var(--mon-scale));color:var(--mon-text);line-height:1}
  .monitoring-tier-tab.tier-resus{border-color:color-mix(in srgb,var(--resus) 48%,var(--mon-border));background:color-mix(in srgb,var(--resus) 12%,var(--mon-panel))}
  .monitoring-tier-tab.tier-stab{border-color:color-mix(in srgb,var(--stab) 48%,var(--mon-border));background:color-mix(in srgb,var(--stab) 12%,var(--mon-panel))}
  .monitoring-tier-tab.tier-enh{border-color:color-mix(in srgb,var(--enh) 48%,var(--mon-border));background:color-mix(in srgb,var(--enh) 12%,var(--mon-panel))}
  .monitoring-tier-tab.tier-std{border-color:color-mix(in srgb,var(--std) 40%,var(--mon-border));background:color-mix(in srgb,var(--std) 10%,var(--mon-panel))}
  .monitoring-tier-tab.tier-inact{border-color:color-mix(in srgb,var(--inact) 36%,var(--mon-border));background:color-mix(in srgb,var(--inact) 10%,var(--mon-panel))}
  .monitoring-tier-tab.tier-resus span{color:var(--resus)}
  .monitoring-tier-tab.tier-stab span{color:var(--stab)}
  .monitoring-tier-tab.tier-enh span{color:var(--enh)}
  .monitoring-tier-tab.tier-std span{color:var(--std)}
  .monitoring-tier-tab.tier-inact span{color:var(--inact)}
  .monitoring-tier-tab.tier-resus b{color:var(--resus)}
  .monitoring-tier-tab.tier-stab b{color:var(--stab)}
  .monitoring-tier-tab.tier-enh b{color:var(--enh)}
  .monitoring-tier-tab.tier-std b{color:var(--std)}
  .monitoring-tier-tab.tier-inact b{color:var(--inact)}
  .monitoring-tier-tab.on.tier-resus{background:color-mix(in srgb,var(--resus) 18%,var(--mon-panel-2))}
  .monitoring-tier-tab.on.tier-stab{background:color-mix(in srgb,var(--stab) 18%,var(--mon-panel-2))}
  .monitoring-tier-tab.on.tier-enh{background:color-mix(in srgb,var(--enh) 18%,var(--mon-panel-2))}
  .monitoring-tier-tab.on.tier-std{background:color-mix(in srgb,var(--std) 15%,var(--mon-panel-2))}
  .monitoring-tier-tab.on.tier-inact{background:color-mix(in srgb,var(--inact) 15%,var(--mon-panel-2))}
  .monitoring-toolbar{
    display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap;
    padding:2px 0 8px;margin-bottom:4px;color:var(--mon-text-dim);font-size:calc(12.5px * var(--mon-scale))
  }
  .monitoring-toolbar select{
    min-height:36px;padding:6px 28px 6px 9px;border:1px solid var(--mon-border);
    border-radius:8px;background:var(--mon-panel);color:var(--mon-text);font:inherit;
    box-shadow:var(--mon-shadow);cursor:pointer
  }
  .monitoring-toolbar select:focus{outline:none;border-color:color-mix(in srgb,var(--brand) 55%,var(--mon-border-2));box-shadow:var(--mon-shadow),0 0 0 3px var(--brand-ring)}
  .monitoring-search{min-width:240px;max-width:420px;flex:1}
  .monitoring-search input{background:var(--mon-panel);border:1px solid var(--mon-border);color:var(--mon-text);box-shadow:var(--mon-shadow);border-radius:9px;font-size:14.5px}
  .monitoring-search input:focus{border-color:color-mix(in srgb,var(--brand) 55%,var(--mon-border-2));box-shadow:var(--mon-shadow),0 0 0 3px var(--brand-ring)}
  .monitoring-filters{display:flex;align-items:flex-end;gap:8px;flex-wrap:wrap}
  .monitoring-filter{display:flex;flex-direction:column;gap:4px;min-width:126px}
  .monitoring-filter span{padding-left:2px;font-size:calc(9.5px * var(--mon-scale));font-weight:900;letter-spacing:.8px;text-transform:uppercase;color:var(--mon-text-faint)}
  .monitoring-filter select{width:100%;max-width:220px}
  .monitoring-density{
    background:var(--mon-panel);border:1px solid var(--mon-border);border-radius:9px;overflow:hidden;box-shadow:var(--mon-shadow)
  }
  .monitoring-density .btn{
    background:transparent;border:0;border-right:1px solid var(--mon-border);border-radius:0;
    color:var(--mon-text-dim);padding:6px 13px;font-size:calc(12.5px * var(--mon-scale));font-weight:700;transition:background .12s,color .12s
  }
  .monitoring-density .btn:last-child{border-right:0}
  .monitoring-density .btn:hover{color:var(--mon-text);background:var(--mon-panel-2)}
  .monitoring-density .btn.active{background:color-mix(in srgb,var(--brand) 14%,var(--mon-panel));color:var(--brand)}
  .monitoring-group{padding-top:10px}
  .monitoring-group h2{
    display:flex;align-items:center;gap:9px;margin:24px 0 14px;
    color:var(--mon-text);font-size:calc(12px * var(--mon-scale));font-weight:800;letter-spacing:.9px;text-transform:uppercase
  }
  .monitoring-group h2::before{
    content:"";width:3px;height:14px;border-radius:2px;background:currentColor;
    box-shadow:0 0 10px color-mix(in srgb,currentColor 55%,transparent)
  }
  .monitoring-group h2 span{
    border:1px solid color-mix(in srgb,currentColor 32%,transparent);
    background:color-mix(in srgb,currentColor 14%,var(--mon-panel));color:currentColor;
    border-radius:999px;padding:1px 9px;font-size:calc(11.5px * var(--mon-scale));font-weight:900;letter-spacing:0;
    font-variant-numeric:tabular-nums
  }
  .monitoring-group.tier-resus h2{color:var(--resus)}
  .monitoring-group.tier-stab h2{color:var(--stab)}
  .monitoring-group.tier-enh h2{color:var(--enh)}
  .monitoring-group.tier-std h2{color:var(--std)}
  .monitoring-group.tier-inact h2{color:var(--inact)}
  /* Every tier uses the same column count so all cards are the same width
     across groups — one consistent grid, not a denser row for low-acuity beds. */
  .monitoring-card-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;align-items:start}
  .monitoring-card{
    position:relative;overflow:hidden;background:var(--mon-panel);border:1px solid var(--mon-border);
    border-radius:var(--mon-radius);cursor:pointer;box-shadow:var(--mon-shadow),var(--mon-inset);
    transition:border-color .18s cubic-bezier(.2,.7,.3,1),transform .18s cubic-bezier(.2,.7,.3,1),box-shadow .18s cubic-bezier(.2,.7,.3,1);
    min-width:0;display:flex;flex-direction:column;color:var(--mon-text)
  }
  .monitoring-card:hover{border-color:var(--mon-border-2);transform:translateY(-3px) scale(1.008);box-shadow:var(--mon-shadow-hover),var(--mon-inset)}
  @media (prefers-reduced-motion:reduce){.monitoring-card:hover{transform:none}}
  .monitoring-card:focus-visible{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-ring)}
  .monitoring-card:active{transform:translateY(0);transition-duration:.05s}
  .monitoring-card.tier-resus{border-color:color-mix(in srgb,var(--resus) 55%,var(--mon-border))}
  .monitoring-card.tier-stab{border-color:color-mix(in srgb,var(--stab) 55%,var(--mon-border))}
  .monitoring-card.tier-enh{border-color:color-mix(in srgb,var(--enh) 50%,var(--mon-border))}
  .monitoring-card.tier-std{border-color:color-mix(in srgb,var(--std) 42%,var(--mon-border))}
  .monitoring-card.worst-crit{border-color:var(--crit-border)}
  .monitoring-card.worst-warn{border-color:var(--warn-border)}
  .monitoring-card-rail{position:absolute;inset:0 auto 0 0;width:4px;background:var(--std)}
  .monitoring-card.tier-resus .monitoring-card-rail{background:var(--resus)}
  .monitoring-card.tier-stab .monitoring-card-rail{background:var(--stab)}
  .monitoring-card.tier-enh .monitoring-card-rail{background:var(--enh)}
  .monitoring-card.tier-inact .monitoring-card-rail{background:var(--inact)}
  .monitoring-card-head{display:flex;align-items:flex-start;gap:10px;padding:14px 14px 11px 17px}
  /* Rail (left edge) carries the care tier; this dot carries the live status
     verdict so the two read as separate signals at a glance. */
  .monitoring-card-indicator{width:8px;height:8px;border-radius:50%;flex:0 0 auto;background:var(--ok)}
  .monitoring-card.worst-warn .monitoring-card-indicator{background:var(--warn)}
  .monitoring-card.worst-crit .monitoring-card-indicator{background:var(--crit);box-shadow:0 0 0 3px color-mix(in srgb,var(--crit) 28%,transparent);animation:cvpulse 1.7s ease-in-out infinite}
  .monitoring-card.tier-inact .monitoring-card-indicator{background:var(--inact);box-shadow:none;animation:none}
  .monitoring-card-main{display:flex;flex-direction:column;min-width:0;flex:1}
  .monitoring-card-patient{display:flex;align-items:center;gap:6px;min-width:0}
  .monitoring-card-name{font-size:calc(16px * var(--mon-scale));font-weight:700;letter-spacing:-.01em;color:var(--mon-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .monitoring-card-meta{display:flex;align-items:center;gap:4px 8px;flex-wrap:wrap;color:var(--mon-text-dim);font-size:calc(11.5px * var(--mon-scale));margin-top:4px}
  /* display:inline-block, not inline-flex: text-overflow is inert on a flex
     container, so the old badge silently clipped both ends of a long bed
     string ("Ground Floor A Wing" rendered as "n Foor A Wing") instead of
     ellipsising it. */
  .monitoring-bed-badge{
    appearance:none;max-width:100%;min-width:0;display:inline-block;padding:1px 7px;
    border:1px solid var(--mon-border);border-radius:5px;background:var(--mon-panel-3);
    color:var(--mon-text-dim);font:inherit;font-size:calc(11.5px * var(--mon-scale));font-weight:800;
    line-height:1.4;letter-spacing:.15px;font-variant-numeric:tabular-nums;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;transition:background .14s,color .14s,box-shadow .14s
  }
  .monitoring-bed-badge:hover{color:var(--brand);background:color-mix(in srgb,var(--brand) 12%,var(--mon-panel));box-shadow:0 0 0 3px var(--brand-ring)}
  .monitoring-bed-badge.needs-review{
    color:#fbbf24;background:rgba(245,158,11,.13);border-color:rgba(245,158,11,.58)
  }
  .monitoring-bed-badge.unconfirmed{
    color:var(--mon-text-dim);background:var(--mon-panel-2);border-color:var(--mon-border);
    font-weight:800;opacity:.86
  }
  .monitoring-bed-badge.unconfirmed:hover{color:var(--mon-text);border-color:var(--mon-border-2)}
  :root[data-theme="light"] .monitoring-bed-badge.needs-review{
    color:#92400e;background:var(--warn-soft);border-color:#f59e0b
  }
  .monitoring-bed-badge.empty{color:var(--mon-text-faint);cursor:default}
  .monitoring-card-open{width:24px;height:24px;border-radius:6px;flex:0 0 auto;margin-left:auto;opacity:0;transition:opacity .14s ease,color .14s ease,background-color .14s ease}
  .monitoring-card:hover .monitoring-card-open,.monitoring-card:focus-within .monitoring-card-open{opacity:.65}
  .monitoring-card-open:hover{opacity:1}
  /* Touch has no hover — keep the affordance faintly visible there. */
  @media (pointer:coarse){.monitoring-card-open{opacity:.55}}
  .monitoring-card-tags{display:flex;gap:3px;flex-wrap:wrap;padding:0 12px 8px}
  .monitoring-card-tags .chip,.monitoring-scoreline .chip,.monitoring-card-signals .chip{
    font-size:calc(10.5px * var(--mon-scale));font-weight:800;letter-spacing:.4px;border-radius:4px;padding:2px 7px;line-height:1.35
  }
  .monitoring-card-tags .tier-resus{background:color-mix(in srgb,var(--resus) 18%,var(--mon-panel));color:var(--resus);border-color:color-mix(in srgb,var(--resus) 45%,var(--mon-border))}
  .monitoring-card-tags .tier-stab{background:color-mix(in srgb,var(--stab) 16%,var(--mon-panel));color:var(--stab);border-color:color-mix(in srgb,var(--stab) 45%,var(--mon-border))}
  .monitoring-card-tags .tier-enh{background:color-mix(in srgb,var(--enh) 16%,var(--mon-panel));color:var(--enh);border-color:color-mix(in srgb,var(--enh) 45%,var(--mon-border))}
  .monitoring-card-tags .tier-std{background:color-mix(in srgb,var(--std) 14%,var(--mon-panel));color:var(--std);border-color:color-mix(in srgb,var(--std) 38%,var(--mon-border))}
  .monitoring-card-tags .tier-inact{background:var(--mon-panel-2);color:var(--inact);border-color:var(--mon-border)}
  .monitoring-risk-banner{
    display:flex;flex-direction:column;gap:7px;padding:9px 12px 10px;
    border-top:1px solid var(--mon-border);border-bottom:1px solid var(--mon-border);
    background:var(--mon-panel-2)
  }
  .monitoring-risk-banner.risk-crit{background:color-mix(in srgb,var(--crit-soft) 54%,var(--mon-panel));border-color:var(--crit-border)}
  .monitoring-risk-banner.risk-warn{background:color-mix(in srgb,var(--warn-soft) 54%,var(--mon-panel));border-color:var(--warn-border)}
  .monitoring-risk-banner.risk-ok{background:color-mix(in srgb,var(--ok-soft) 42%,var(--mon-panel));border-color:var(--mon-border)}
  .monitoring-risk-top{display:flex;align-items:center;gap:8px;min-width:0}
  .monitoring-risk-dot{width:7px;height:7px;border-radius:50%;background:var(--ok);flex:0 0 auto}
  .monitoring-risk-banner.risk-crit .monitoring-risk-dot{background:var(--crit)}
  .monitoring-risk-banner.risk-warn .monitoring-risk-dot{background:var(--warn)}
  .monitoring-risk-label{font-size:calc(13px * var(--mon-scale));font-weight:900;color:var(--mon-text);line-height:1.1}
  .monitoring-risk-details{display:flex;gap:5px;flex-wrap:wrap;align-items:center}
  .monitoring-risk-pill{
    display:inline-flex;align-items:center;gap:5px;border:1px solid var(--mon-border-2);
    background:color-mix(in srgb,var(--mon-panel-3) 74%,transparent);color:var(--mon-text-dim);
    border-radius:5px;padding:3px 7px;font-size:calc(11.5px * var(--mon-scale));font-weight:800;line-height:1.2;
    letter-spacing:.2px;white-space:nowrap
  }
  .monitoring-risk-pill.action{
    appearance:none;font:inherit;font-size:calc(11.5px * var(--mon-scale));font-weight:900;line-height:1.2;
    cursor:pointer;color:var(--warn);border-color:var(--warn-border);background:var(--warn-soft)
  }
  .monitoring-risk-banner.risk-crit .monitoring-risk-pill.action{color:var(--crit);border-color:var(--crit-border);background:var(--crit-soft)}
  .monitoring-risk-details .chip{
    font-size:calc(11px * var(--mon-scale));font-weight:900;letter-spacing:.2px;border-radius:5px;padding:3px 7px;line-height:1.2
  }
  .monitoring-bed-workflow{display:flex;gap:6px;flex-wrap:wrap;padding:0 12px 8px}
  .monitoring-bed-alert{
    appearance:none;display:inline-flex;align-items:center;gap:6px;font:inherit;
    border:1px solid rgba(245,158,11,.58);background:rgba(245,158,11,.14);
    color:#fbbf24;border-radius:7px;padding:5px 10px;font-size:calc(12px * var(--mon-scale));font-weight:900;
    line-height:1.15;cursor:pointer;letter-spacing:.15px
  }
  .monitoring-bed-alert::before{content:"⚠";font-size:calc(11px * var(--mon-scale));line-height:1}
  .monitoring-bed-alert.subtle{
    color:var(--mon-text-dim);background:transparent;border-color:var(--mon-border);
    font-weight:750;opacity:.9
  }
  .monitoring-bed-alert.subtle::before{content:none}
  .monitoring-bed-alert.subtle:hover{color:var(--mon-text);background:var(--mon-panel-2);border-color:var(--mon-border-2)}
  :root[data-theme="light"] .monitoring-bed-alert{
    color:#92400e;background:var(--warn-soft);border-color:#f59e0b
  }
  :root[data-theme="light"] .monitoring-bed-alert.subtle{
    color:var(--mon-text-dim);background:transparent;border-color:var(--mon-border)
  }
  .monitoring-card-dx{padding:7px 12px 8px;font-size:calc(12.5px * var(--mon-scale));color:var(--mon-text-dim);line-height:1.35}
  /* Six metrics in a fixed 3x2 grid at every card width: a vital stays in the
     same cell on every card, and nothing leaves a ragged half-row. */
  .monitoring-vitals{
    display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;padding:4px 14px 14px;
    background:transparent
  }
  .monitoring-vital{
    position:relative;min-width:0;text-align:left;background:var(--mon-panel-2);border:1px solid transparent;
    border-radius:12px;padding:9px 11px 8px;display:flex;flex-direction:column;justify-content:center;
    min-height:58px;overflow:hidden;container-type:inline-size
  }
  /* Left status accent so an out-of-range vital is spotted before the number is read. */
  .monitoring-vital::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:transparent}
  .monitoring-vital.vital-warn::before{background:var(--warn)}
  .monitoring-vital.vital-crit::before{background:var(--crit)}
  .monitoring-vital-label{
    display:block;font-size:calc(10px * var(--mon-scale));text-transform:uppercase;letter-spacing:.5px;color:var(--mon-text-dim);
    font-weight:900;line-height:1
  }
  .monitoring-vital-figure{display:flex;align-items:baseline;gap:3px;min-width:0;margin-top:5px}
  .monitoring-vital-value{
    font-size:clamp(calc(16px * var(--mon-scale)),20cqw,calc(22px * var(--mon-scale)));line-height:1.05;color:var(--mon-text);min-width:0;
    font-weight:900;font-variant-numeric:tabular-nums;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;letter-spacing:-.2px
  }
  .monitoring-vital-unit{
    flex:0 0 auto;font-size:calc(10px * var(--mon-scale));font-weight:800;letter-spacing:.2px;line-height:1;
    color:var(--mon-text-faint);white-space:nowrap
  }
  .monitoring-vital.vital-missing .monitoring-vital-unit{display:none}
  .monitoring-vital.vital-crit .monitoring-vital-unit{color:var(--crit);opacity:.72}
  .monitoring-vital.vital-warn .monitoring-vital-unit{color:var(--warn);opacity:.78}
  .monitoring-vital[data-metric="bp"] .monitoring-vital-value{font-size:clamp(calc(15px * var(--mon-scale)),17cqw,calc(19px * var(--mon-scale)))}
  .monitoring-vital.vital-crit{background:var(--crit-soft);border-color:var(--crit-border)}
  .monitoring-vital.vital-crit .monitoring-vital-value{color:var(--crit)}
  .monitoring-vital.vital-warn{background:var(--warn-soft);border-color:var(--warn-border)}
  .monitoring-vital.vital-warn .monitoring-vital-value{color:var(--warn)}
  .monitoring-vital.vital-missing .monitoring-vital-value{color:var(--mon-text-faint)}
  /* Scores and lab signals are one status band, not two: they were separated by
     a hairline that bought nothing and cost a row of padding on every card. */
  .monitoring-scoreline{
    display:flex;flex-wrap:wrap;gap:4px 10px;padding:9px 14px 0;
    background:transparent;border-top:1px solid color-mix(in srgb,var(--mon-border) 55%,transparent)
  }
  .monitoring-scoreline:empty{display:none}
  .monitoring-card-signals{display:flex;gap:4px;flex-wrap:wrap;padding:6px 14px 11px;margin-top:auto}
  .monitoring-scoreline + .monitoring-card-signals{margin-top:0}
  .monitoring-card-details{display:flex;flex-direction:column;gap:8px;padding:0 10px 10px;border-top:1px solid var(--mon-border)}
  .monitoring-card-details:empty{display:none}
  /* Jump-off row: Insights and the hourly flow sheet are the two things a nurse
     opens a card for, so they get a named link each instead of hiding behind the
     card-wide "open in Bedside" tap. Sits last so it survives every density. */
  .monitoring-card-actions{
    display:flex;gap:6px;padding:9px 12px 11px;margin-top:auto;
    border-top:1px solid color-mix(in srgb,var(--mon-border) 55%,transparent)
  }
  .monitoring-card-action{
    flex:1;min-width:0;display:inline-flex;align-items:center;justify-content:center;gap:6px;
    padding:7px 9px;border-radius:8px;cursor:pointer;
    border:1px solid var(--mon-border);background:var(--mon-panel-2);color:var(--mon-text-dim);
    font-size:calc(11.5px * var(--mon-scale));font-weight:800;letter-spacing:.02em;
    transition:color .14s ease,border-color .14s ease,background-color .14s ease
  }
  .monitoring-card-action svg{width:14px;height:14px;flex:0 0 auto}
  .monitoring-card-action span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .monitoring-card-action:hover{color:var(--mon-text);border-color:var(--mon-border-2);background:var(--mon-panel)}
  .monitoring-card-action:focus-visible{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-ring)}
  .monitoring-card-action.action-insights:hover{color:var(--brand);border-color:color-mix(in srgb,var(--brand) 50%,var(--mon-border))}
  .monitoring-card-action.action-record:hover{color:var(--teal);border-color:color-mix(in srgb,var(--teal) 50%,var(--mon-border))}
  .monitoring-card-action.action-transfer:hover{color:var(--warn);border-color:color-mix(in srgb,var(--warn) 50%,var(--mon-border))}
  .monitoring-detail-section{
    border:1px solid var(--mon-border);background:var(--mon-panel-2);
    border-radius:8px;padding:8px 10px;color:var(--mon-text)
  }
  .monitoring-detail-section[hidden]{display:none}
  .monitoring-detail-title{
    display:flex;align-items:center;gap:7px;margin-bottom:7px;color:var(--mon-text-dim);
    font-size:calc(11px * var(--mon-scale));font-weight:900;letter-spacing:1.5px;text-transform:uppercase
  }
  .monitoring-detail-title::before{content:"";width:3px;height:14px;border-radius:2px;background:var(--info)}
  .monitoring-vent-section{border-color:rgba(168,85,247,.45);background:rgba(88,28,135,.12)}
  .monitoring-vent-section .monitoring-detail-title{color:#c084fc}
  .monitoring-vent-section .monitoring-detail-title::before{background:#a855f7}
  .monitoring-io-section .monitoring-detail-title::before{background:var(--warn)}
  .monitoring-detail-grid{display:flex;flex-wrap:wrap;gap:5px 6px}
  .monitoring-detail-cell{
    min-width:0;display:inline-flex;align-items:baseline;gap:5px;
    background:color-mix(in srgb,var(--mon-panel) 78%,transparent);
    border:1px solid color-mix(in srgb,var(--mon-border) 76%,transparent);
    border-radius:6px;padding:5px 9px
  }
  .monitoring-detail-cell span{
    font-size:calc(10px * var(--mon-scale));font-weight:900;text-transform:uppercase;letter-spacing:.6px;
    color:var(--mon-text-dim);line-height:1.1;white-space:nowrap
  }
  .monitoring-detail-cell b{
    font-size:calc(14px * var(--mon-scale));line-height:1.1;color:var(--mon-text);
    font-variant-numeric:tabular-nums;white-space:nowrap
  }
  .monitoring-card[data-density="mini"] .monitoring-vitals,
  .monitoring-card[data-density="mini"] .monitoring-card-signals,
  .monitoring-card[data-density="mini"] .monitoring-card-details{display:none}
  .monitoring-card[data-density="core"] .monitoring-card-details{display:none}
  .monitoring-card[data-density="summary"] .monitoring-card-signals,
  .monitoring-card[data-density="summary"] .monitoring-card-details{display:none}
  /* PRE-340: Smart mode never shows ventilator settings — even on cards that
     smart auto-promotes to full density (resus / crit patients). Collapse the
     details block entirely when the vent section was its only visible content
     so no empty bordered strip is left behind. */
  .monitoring-card[data-mode="smart"] .monitoring-vent-section{display:none}
  .monitoring-card[data-mode="smart"] .monitoring-card-details:not(:has([data-io-section]:not([hidden]))){display:none}
  .monitoring-tier-tab.tier-discharged{--tab-accent:var(--inact)}
  .monitoring-tier-tab.tier-discharged{border-color:color-mix(in srgb,var(--inact) 36%,var(--mon-border));background:color-mix(in srgb,var(--inact) 10%,var(--mon-panel))}
  .monitoring-tier-tab.tier-discharged span,.monitoring-tier-tab.tier-discharged b{color:var(--inact)}
  .monitoring-tier-tab.on.tier-discharged{background:color-mix(in srgb,var(--inact) 15%,var(--mon-panel-2))}
  .monitoring-discharged{padding-top:10px}
  .monitoring-discharged-list{display:grid;gap:9px}
  .monitoring-discharged-patient{
    display:flex;align-items:center;justify-content:space-between;gap:16px;
    padding:13px 14px;border:1px solid var(--mon-border);border-radius:10px;background:var(--mon-panel)
  }
  .monitoring-discharged-patient-main{min-width:0}
  .monitoring-discharged-patient-name{font-weight:800;color:var(--mon-text)}
  .monitoring-discharged-patient-meta{margin-top:3px;color:var(--mon-text-dim);font-size:12px}
  .monitoring-discharged-patient-status{text-align:right;flex:0 0 auto}
  .monitoring-discharged-patient-status .chip{margin-bottom:4px}
  .monitoring-skeleton{min-height:180px;border-radius:12px;background:linear-gradient(90deg,var(--mon-panel),var(--mon-panel-2),var(--mon-panel));border:1px solid var(--mon-border)}
  @media (max-width:1500px){.monitoring-board{--mon-scale:1.06}.monitoring-card-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
  @media (max-width:1100px){.monitoring-board{--mon-scale:1.12}.monitoring-card-grid,.monitoring-group.tier-std .monitoring-card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
  @media (max-width:720px){
    .monitoring-board{padding:14px 12px 60px;--mon-scale:1.22}
    .monitoring-head{flex-direction:column}
    .monitoring-toolbar{align-items:stretch}
    .monitoring-search{max-width:none;flex-basis:100%}
    .monitoring-filters{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%}
    .monitoring-filter{min-width:0}
    .monitoring-filter select{max-width:none}
    .monitoring-card-grid,.monitoring-group.tier-std .monitoring-card-grid{grid-template-columns:1fr}
    .monitoring-discharged-patient{align-items:flex-start}
    .monitoring-discharged-patient-status{text-align:left}
    .mode-switch button{padding:6px 8px}
  }

  /* Start-shift action row — sits inside the sticky top region, above the
     patient grid, so it is always reachable. */
  .start-shift-bar{
    display:flex;align-items:center;gap:14px;
    padding:9px 0 11px;
  }
  .start-shift-bar .count{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:14.5px;color:var(--ink-2);font-weight:500;margin-right:auto;min-width:0}
  .start-shift-bar .count b{color:var(--brand);font-weight:700}
  .ssb-count{font-variant-numeric:tabular-nums;white-space:nowrap}
  /* Remaining prerequisites shown as amber pills so the nurse can see exactly
     what still blocks "Start shift"; flips to a green ready state once met. */
  .ssb-todo{display:flex;gap:6px;flex-wrap:wrap}
  .ssb-need{display:inline-flex;align-items:center;gap:6px;padding:4px 11px;border-radius:999px;border:1px solid var(--warn-border);background:var(--warn-soft);color:var(--warn);font-size:13px;font-weight:650;white-space:nowrap}
  .ssb-need::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--warn);flex:none}
  .ssb-ok{display:inline-flex;align-items:center;gap:6px;padding:4px 11px;border-radius:999px;border:1px solid var(--ok-border);background:var(--ok-soft);color:var(--ok);font-size:13px;font-weight:700;white-space:nowrap}
  .ssb-ok svg{width:14px;height:14px}
