  /* ---------- Notes / Nursing ---------- */
  .form-section{
    background:var(--card);border:1px solid var(--border);
    border-radius:var(--radius-2);padding:16px;margin-bottom:14px;box-shadow:var(--shadow-1);
}

/* Ward nursing core: admission, append-only rounds/care and SBAR acceptance. */
.ward-only{display:grid;gap:14px}
.ward-record-notice{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;margin-bottom:14px;border:1px solid color-mix(in srgb,var(--brand) 35%,var(--border));border-radius:12px;background:color-mix(in srgb,var(--brand) 8%,var(--card));color:var(--ink-2)}
.ward-record-notice svg{width:18px;min-width:18px;color:var(--brand-2)}
.ward-field{display:flex;flex-direction:column;gap:6px;min-width:0;color:var(--ink-2);font-size:12px;font-weight:650}
.ward-field input,.ward-field select,.ward-field textarea,.ward-reconcile-row input,.ward-reconcile-row select{width:100%;box-sizing:border-box;border:1px solid var(--border);border-radius:9px;background:var(--input-bg,var(--card));color:var(--ink);padding:9px 10px;font:inherit}
.ward-field textarea{resize:vertical}
.ward-field-grid{display:grid;grid-template-columns:repeat(4,minmax(140px,1fr));gap:10px;margin:10px 0}
.ward-vitals-grid{grid-template-columns:repeat(7,minmax(90px,1fr))}
.ward-schedule-row{display:grid;grid-template-columns:minmax(220px,1fr) minmax(130px,180px);gap:10px;margin-bottom:10px}
.ward-check{display:flex;gap:8px;align-items:flex-start;margin:10px 0;color:var(--ink-2);font-size:12px;font-weight:650}
.ward-check input{margin-top:2px}
.ward-history{display:grid;gap:8px}
.ward-history-row{display:grid;gap:8px;padding:10px 12px;border:1px solid var(--border);border-radius:10px;background:var(--card)}
.ward-history-summary{display:flex;justify-content:space-between;align-items:center;gap:12px}
.ward-history-summary>div{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.ward-history-row b{color:var(--ink)}
.ward-history-row span{font-size:11px;color:var(--muted)}
.ward-history-row summary{cursor:pointer;color:var(--brand-2);font-size:11px;font-weight:700}
.ward-history-details{display:flex;gap:6px 14px;flex-wrap:wrap;padding-top:7px}
.ward-sbar{display:grid;gap:8px;margin:10px 0}
.ward-sbar div{display:grid;grid-template-columns:30px 1fr;gap:8px;padding:8px 10px;border-left:3px solid var(--brand);background:var(--surface-2,var(--card));border-radius:6px}
.ward-sbar dt{font-weight:800;color:var(--brand-2)}
.ward-sbar dd{margin:0;color:var(--ink-2);white-space:pre-wrap}
.ward-audit-trail{margin:12px 0 0;padding-left:20px;color:var(--muted);font-size:11px}
.ward-reconciliation-review{margin-top:12px;padding:10px;border:1px solid var(--border);border-radius:9px;background:var(--surface-2,var(--card))}
.ward-reconciliation-review ul{display:grid;gap:6px;margin:8px 0 0;padding-left:18px}
.ward-reconciliation-review li span{margin-right:8px}.ward-reconciliation-review li small{display:block;color:var(--muted)}
.ward-reconcile-row{display:grid;grid-template-columns:minmax(180px,1fr) minmax(130px,180px) minmax(180px,1fr);gap:8px;align-items:center;padding:9px 0;border-bottom:1px solid var(--border)}
.ward-caseload{margin:0 0 14px;padding:12px;border:1px solid color-mix(in srgb,var(--brand) 35%,var(--border));border-radius:14px;background:color-mix(in srgb,var(--brand) 6%,var(--card))}
.ward-caseload-head{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:10px}
.ward-caseload-head>div{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}
.ward-caseload-head span{font-size:11px;color:var(--muted)}
.ward-caseload-actions{display:grid;grid-template-columns:repeat(6,minmax(105px,1fr));gap:8px}
.ward-caseload-action{display:flex;align-items:center;gap:8px;text-align:left;border:1px solid var(--border);border-radius:10px;background:var(--card);color:var(--ink);padding:9px 10px;cursor:pointer}
.ward-caseload-action b{font-size:18px;color:var(--brand-2)}
.ward-caseload-action span{font-size:11px;font-weight:650}
.ward-caseload-action:disabled{opacity:.55;cursor:default}

@media (max-width:900px){
  .ward-field-grid,.ward-vitals-grid{grid-template-columns:repeat(2,minmax(130px,1fr))}
  .ward-caseload-actions{grid-template-columns:repeat(2,minmax(130px,1fr))}
}
@media (max-width:560px){
  .ward-field-grid,.ward-vitals-grid,.ward-schedule-row,.ward-reconcile-row{grid-template-columns:1fr}
  .ward-history-summary{align-items:flex-start;flex-direction:column}
  .ward-caseload-actions{grid-template-columns:1fr}
}
  .form-section h3{font-size:13px;font-weight:700;color:var(--ink);margin-bottom:10px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
  .form-section h3 svg{width:15px;height:15px;color:var(--muted)}
  .form-section h3 .pill{margin-left:auto}
  .lab-section-title svg{width:14px;height:14px}
  .score-card .h3 svg{width:15px;height:15px}
  .insight-foot svg{width:11px;height:11px}
  .insight-foot a svg{width:11px;height:11px}
  .culture-meta svg{width:11px;height:11px}
  /* Touch-first tap-card checkboxes (large hit area, hidden native input). */
  .check-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}
  .check-grid label{
    position:relative;
    display:flex;align-items:center;gap:14px;
    padding:14px 16px;border-radius:12px;
    background:var(--card);border:2px solid var(--border);
    font-size:14px;color:var(--ink);cursor:pointer;
    transition:transform .08s ease, background .15s, border-color .15s;
    min-height:60px;user-select:none;line-height:1.35;
    min-width:0;
  }
  /* min-width:0 above + break-word here: a single long word (e.g.
     "Thromboembolism:") must wrap inside its grid track instead of forcing
     the track — and the whole page — wider than a phone viewport. */
  .check-grid label span{min-width:0;overflow-wrap:break-word}
  .check-grid label:hover{border-color:var(--brand);background:var(--card)}
  .check-grid label:active{transform:scale(.98)}
  .check-grid label input{position:absolute;opacity:0;pointer-events:none;width:0;height:0}
  .check-grid label::before{
    content:"";display:inline-flex;align-items:center;justify-content:center;
    width:30px;height:30px;border-radius:9px;flex-shrink:0;
    background:var(--card);border:2px solid var(--border-2);
    transition:all .15s;
    color:#fff;font-size:18px;font-weight:700;line-height:1;
  }
  .check-grid label.checked{
    background:var(--brand-soft);border-color:var(--brand);
    color:var(--brand-2);font-weight:600;
  }
  .check-grid label.checked::before{
    background:var(--brand);border-color:var(--brand);content:"✓";
  }
  /* Composite-tile checkboxes are supporting details, not full-width bedside
     actions, so keep their control and row visually compact. */
  .check-grid.compact{display:block}
  .check-grid.compact label{gap:8px;padding:7px 9px;min-height:38px;border-width:1px;border-radius:8px;font-size:12.5px}
  .check-grid.compact label::before{width:18px;height:18px;border-radius:5px;font-size:12px;border-width:1.5px}

  .narrative{
    width:100%;min-height:96px;padding:10px 12px;
    background:var(--bg-soft);border:1px solid var(--border);border-radius:8px;
    font-size:13px;line-height:1.55;color:var(--ink);outline:none;resize:vertical;
  }
  .narrative:focus{border-color:var(--brand);background:var(--card);box-shadow:0 0 0 3px var(--brand-ring)}

  /* Touch-first narrative input: chips + voice instead of typing. */
  .nrv-field{margin:10px 0}
  .nrv-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px;flex-wrap:wrap}
  .nrv-label{font-weight:600;color:var(--ink-2);font-size:13px;display:flex;align-items:center;gap:8px}
  .nrv-tools{display:flex;gap:6px;flex-wrap:wrap}
  .nrv-mic-btn,.nrv-clear-btn{
    display:inline-flex;align-items:center;gap:6px;
    padding:7px 12px;border-radius:8px;font-size:12.5px;font-weight:600;
    cursor:pointer;transition:all .12s;border:1.5px solid var(--border);
    background:var(--card);color:var(--ink-2);
  }
  .nrv-mic-btn{color:var(--pink);border-color:#fbcfe8;background:#fff5fa}
  .nrv-mic-btn:hover{background:#fce7f3}
  .nrv-mic-btn.recording{
    background:var(--pink);color:#fff;border-color:var(--pink);
    animation:dictatePulse 1s infinite;
  }
  .nrv-mic-btn svg{width:13px;height:13px}
  .nrv-clear-btn:hover{background:var(--bg-soft);color:var(--ink)}

  .nrv-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
  .nrv-chip{
    display:inline-flex;align-items:center;
    padding:8px 12px;border-radius:18px;font-size:12.5px;font-weight:500;
    background:var(--card);border:1.5px solid var(--border);color:var(--ink-2);
    cursor:pointer;transition:all .12s;line-height:1.3;
  }
  .nrv-chip:hover{border-color:var(--brand);color:var(--brand-2);background:var(--card)}
  .nrv-chip:active{transform:scale(.95);background:var(--brand-soft)}
  .nrv-chip.on{background:var(--brand-soft);border-color:var(--brand-ring);color:var(--brand-2);font-weight:600}
  .nrv-chip-group-title{
    font-size:10.5px;font-weight:700;color:var(--muted);
    letter-spacing:.06em;text-transform:uppercase;
    margin:8px 0 4px;width:100%;
  }

  /* Body diagram for head-to-foot assessment. */
  .body-diagram{
    display:grid;grid-template-columns:200px 1fr;gap:14px;
    background:var(--bg-soft);border:1px solid var(--border);
    border-radius:12px;padding:14px;margin-bottom:8px;
  }
  @media (max-width:680px){.body-diagram{grid-template-columns:1fr}}
  .body-svg-wrap{display:flex;flex-direction:column;align-items:center;gap:8px}
  .body-svg{width:180px;height:auto;display:block}
  .body-region{
    fill:#e0e7ff;stroke:#a5b4fc;stroke-width:1.5;
    cursor:pointer;transition:all .15s;
  }
  .body-region:hover{fill:#c7d2fe;stroke:var(--brand)}
  .body-region.active{fill:var(--brand);stroke:var(--brand-2);stroke-width:2}
  .body-extra-btns{display:flex;flex-wrap:wrap;gap:6px;justify-content:center}
  .body-extra-btn{
    padding:6px 12px;border-radius:18px;font-size:12px;font-weight:600;
    background:#e0e7ff;color:var(--brand-2);border:1.5px solid #a5b4fc;
    cursor:pointer;transition:all .12s;
  }
  .body-extra-btn:hover{background:#c7d2fe}
  .body-extra-btn.active{background:var(--brand);color:#fff;border-color:var(--brand)}
  .body-region-label{
    font-size:11.5px;font-weight:700;color:var(--brand-2);
    letter-spacing:.04em;text-transform:uppercase;margin-bottom:4px;
  }
  .body-region-empty{font-size:12px;color:var(--muted);font-style:italic;padding:14px 0;text-align:center}

  /* Section-level "Mark all normal" buttons in form section h3. */
  .section-action-btn{
    margin-left:auto;
    display:inline-flex;align-items:center;gap:6px;
    padding:6px 12px;border-radius:8px;font-size:11.5px;font-weight:600;
    background:var(--brand-soft);color:var(--brand-2);border:1.5px solid #bfdbfe;
    cursor:pointer;transition:all .12s;
  }
  .section-action-btn:hover{background:var(--brand);color:#fff;border-color:var(--brand)}
  .section-action-btn:active{transform:scale(.97)}
  .section-action-btn.secondary{background:var(--card);color:var(--ink-2);border-color:var(--border)}
  .section-action-btn.secondary:hover{background:var(--bg-soft);color:var(--ink);border-color:var(--border-2)}
  .section-action-row{display:flex;gap:6px;margin-left:auto;flex-wrap:wrap}
  .section-action-row .section-action-btn{margin-left:0}

  /* Inline "Pull vitals" button in narrative tools row (Objective field). */
  .nrv-vitals-btn{
    display:inline-flex;align-items:center;gap:6px;
    padding:7px 12px;border-radius:8px;font-size:12.5px;font-weight:600;
    cursor:pointer;transition:all .12s;border:1.5px solid #a5b4fc;
    background:#eef2ff;color:var(--brand-2);
  }
  .nrv-vitals-btn:hover{background:#e0e7ff;border-color:var(--brand-2)}
  .nrv-vitals-btn:active{transform:scale(.97)}
  .nrv-vitals-btn svg{width:13px;height:13px}
  /* PRE-396: after a successful pull the button locks into a "done" state. */
  .nrv-vitals-btn:disabled{opacity:.6;cursor:default;pointer-events:none;transform:none}

  /* Carry-forward banner at top of nursing daily form. */
  .shift-banner{
    background:linear-gradient(135deg,#fef3c7 0%,#fef9c3 100%);
    border:1.5px solid #fbbf24;border-radius:12px;
    padding:14px 16px;margin-bottom:14px;
    display:flex;align-items:center;gap:14px;flex-wrap:wrap;
  }
  .shift-banner.empty{background:linear-gradient(135deg,var(--card-3) 0%,var(--bg-soft) 100%);border-color:var(--border-2)}
  .shift-banner-icon{
    width:38px;height:38px;border-radius:10px;flex-shrink:0;
    background:#fbbf24;color:#fff;
    display:flex;align-items:center;justify-content:center;
  }
  .shift-banner.empty .shift-banner-icon{background:var(--muted)}
  .shift-banner-icon svg{width:18px;height:18px}
  .shift-banner-msg{flex:1;min-width:200px;font-size:13px;color:var(--ink);line-height:1.4}
  .shift-banner-msg .h{font-weight:700;color:var(--ink);font-size:13.5px}
  .shift-banner-msg .sub{color:var(--ink-2);font-size:12px;margin-top:2px}
  .shift-banner-actions{display:flex;gap:6px;flex-wrap:wrap}
  .shift-banner-actions .btn{padding:8px 14px;font-size:12.5px}

  /* Carry-forward diff modal — list of fields with prior values. */
  .carryfwd-list{
    max-height:50vh;overflow:auto;
    background:var(--bg-soft);border:1px solid var(--border);border-radius:8px;
    padding:8px;margin:10px 0;
  }
  .carryfwd-row{
    display:grid;grid-template-columns:170px 1fr;gap:10px;
    padding:8px 10px;border-bottom:1px dashed var(--hairline);
    font-size:12.5px;align-items:start;
  }
  .carryfwd-row:last-child{border-bottom:none}
  .carryfwd-row .l{color:var(--muted);font-weight:600}
  .carryfwd-row .v{color:var(--ink);word-break:break-word}
  .carryfwd-row .v.bool-yes{color:var(--ok);font-weight:600}
  .carryfwd-row .v.bool-no{color:var(--crit);font-weight:600}
  .carryfwd-empty{padding:18px;color:var(--muted);text-align:center;font-style:italic}

  /* Initial Assessment chip strip — sits below an input row, indented to
     line up under the input column (130px label gutter). */
  .ini-chip-row{
    display:flex;flex-wrap:wrap;gap:6px;
    margin:-2px 0 10px 138px;
    align-items:center;
  }
  @media (max-width:780px){.ini-chip-row{margin-left:0}}
  .ini-chip-row .nrv-chip{padding:6px 10px;font-size:12px}
  .ini-chip-row .nrv-mic-btn{padding:6px 10px;font-size:12px}

  /* ---------- composite_tile (Progress Notes v3) -----------------
   * 9 patient-state tiles in a 3-col grid. Each tile shows label,
   * source chip, computed summary, and optional ghost line. Tap to
   * expand inline; blur or another tile-tap collapses. ----------- */
  .pn-tiles {
    display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px;
    margin: 8px 0;
  }
  @media (max-width: 960px) { .pn-tiles { grid-template-columns: repeat(2, 1fr); } }
  @media (max-width: 640px) { .pn-tiles { grid-template-columns: 1fr; } }

  .pn-tile {
    background: var(--card, var(--card));
    border: 1px solid var(--bd, #e2e8f0);
    border-radius: 10px;
    padding: 10px 12px;
    cursor: pointer;
    transition: border-color .15s, box-shadow .15s;
    position: relative;
  }
  .pn-tile:hover, .pn-tile:focus-within { border-color: var(--brand, #7c3aed); }
  .pn-tile.expanded { cursor: default; box-shadow: 0 0 0 2px var(--brand, #7c3aed); }

  .pn-tile-head {
    display: flex; align-items: center; gap: 6px;
    font-size: 10.5px; color: var(--muted, #64748b);
    text-transform: uppercase; letter-spacing: .04em; font-weight: 700;
    margin-bottom: 6px;
  }
  .pn-tile-label { display: inline-flex; align-items: center; gap: 4px; }
  .pn-tile-src {
    font-size: 9.5px; padding: 1px 7px; border-radius: 9px;
    font-weight: 600; letter-spacing: .02em; margin-left: auto;
  }
  .pn-tile-src.green  { background: #dcfce7; color: #166534; }
  .pn-tile-src.amber  { background: #fef3c7; color: #92400e; }
  .pn-tile-src.purple { background: #ede9fe; color: #6d28d9; }
  .pn-tile-src.none   { background: var(--card-3); color: #64748b; }

  .pn-tile-val {
    font-size: 13px; font-weight: 600; color: var(--ink, #0f172a);
    line-height: 1.4;
  }
  .pn-tile-val.empty { color: var(--muted, #94a3b8); font-weight: 500; font-style: italic; }
  .pn-tile-ghost {
    font-size: 11px; color: var(--muted, #94a3b8); margin-top: 3px;
  }
  .pn-tile-ghost b { color: #16a34a; font-weight: 600; }

  .pn-tile-body { display: none; margin-top: 10px; }
  .pn-tile.expanded .pn-tile-body { display: block; }
  .pn-tile.expanded .pn-tile-val,
  .pn-tile.expanded .pn-tile-ghost { display: none; }
  .pn-tile-collapse {
    margin-top: 8px; font-size: 11px; color: var(--brand, #7c3aed);
    background: transparent; border: 0; cursor: pointer; padding: 4px 0;
  }

  /* When a state-section contains tiles, render them in the grid. */
  .form-section.pn-state-section .pn-tiles { margin: 0; }

  /* ---------- Patient snapshot — Progress Note hero band ----------
   * Redesigned 2026-05-10 for clinical scannability. Old design was an
   * uniform 8-cell grid; new design layers by clinical priority:
   *   1. Allergies banner (safety-first; red when documented)
   *   2. Hero strip — vital signs as monospaced numbers, large
   *   3. Quad row — Vent · Neuro · Pressors · Sedation
   *   4. Strip — I/O balance · Recent culture
   * Source links are tiny corner chips, not their own line — eye doesn't
   * bounce between value and source. -------------------------------- */
  .snap-card{
    background:var(--card);border:1px solid var(--border);
    border-radius:var(--radius-3);box-shadow:var(--shadow-1);
    overflow:hidden;margin-bottom:14px;
  }
  .snap-allergy{
    display:flex;align-items:center;gap:10px;padding:9px 14px;
    font-size:12.5px;font-weight:600;letter-spacing:.005em;
    border-bottom:1px solid var(--hairline);
  }
  .snap-allergy.none{background:var(--ok-soft);color:var(--ok);}
  .snap-allergy.has {background:var(--crit-soft);color:var(--crit);}
  .snap-allergy.has b{color:var(--crit);font-weight:800;letter-spacing:.01em;text-transform:uppercase;font-size:11px}
  .snap-allergy .snap-allergy-mark{
    display:inline-flex;align-items:center;justify-content:center;
    width:18px;height:18px;border-radius:50%;
    background:currentColor;color:#fff;
  }
  .snap-allergy.none .snap-allergy-mark{background:var(--ok)}
  .snap-allergy.has  .snap-allergy-mark{background:var(--crit)}
  .snap-allergy .snap-allergy-mark svg{width:11px;height:11px;color:#fff}

  /* Hero vitals strip — 5 large monospaced readings */
  .snap-vitals{
    display:grid;grid-template-columns:repeat(5, 1fr);
    background:linear-gradient(180deg, var(--bg-soft) 0%, var(--card) 100%);
    border-bottom:1px solid var(--hairline);
  }
  .snap-vital{
    padding:11px 12px 12px;
    border-right:1px solid var(--hairline);
    display:flex;flex-direction:column;gap:2px;
    position:relative;
  }
  .snap-vital:last-child{border-right:none}
  .snap-vital-l{
    font-size:9.5px;font-weight:700;color:var(--muted);
    text-transform:uppercase;letter-spacing:.08em;line-height:1;
  }
  .snap-vital-v{
    font-family:'Inter',ui-monospace,SFMono-Regular,Menlo,monospace;
    font-feature-settings:'tnum' 1, 'cv11' 1;
    font-size:22px;font-weight:700;color:var(--ink);
    line-height:1.1;letter-spacing:-.015em;
    margin-top:2px;
  }
  .snap-vital-v small{font-size:11px;font-weight:600;color:var(--muted);letter-spacing:0;margin-left:1px}
  .snap-vital-sub{font-size:10.5px;color:var(--faint);font-weight:500;line-height:1.2}
  .snap-vital.crit .snap-vital-v{color:var(--crit)}
  .snap-vital.crit::before{
    content:'';position:absolute;top:0;left:0;right:0;height:2px;background:var(--crit);
  }
  .snap-vital.warn .snap-vital-v{color:var(--warn)}
  .snap-vital.warn::before{
    content:'';position:absolute;top:0;left:0;right:0;height:2px;background:var(--warn);
  }
  @media (max-width:720px){
    .snap-vitals{grid-template-columns:repeat(3, 1fr)}
    .snap-vital:nth-child(3){border-right:none}
    .snap-vital:nth-child(n+4){border-top:1px solid var(--hairline)}
    .snap-vital:nth-child(4){border-right:1px solid var(--hairline)}
  }

  /* Quad row — Vent · Neuro · Pressors · Sedation */
  .snap-quad{
    display:grid;grid-template-columns:repeat(4, 1fr);
    border-bottom:1px solid var(--hairline);
  }
  .snap-q{
    padding:10px 14px 11px;
    border-right:1px solid var(--hairline);
    display:flex;flex-direction:column;gap:3px;min-height:56px;
  }
  .snap-q:last-child{border-right:none}
  .snap-q-l{
    font-size:9.5px;font-weight:700;color:var(--muted);
    text-transform:uppercase;letter-spacing:.08em;line-height:1;
  }
  .snap-q-v{font-size:13px;font-weight:600;color:var(--ink);line-height:1.3}
  .snap-q-v .dim{color:var(--faint);font-weight:400}
  /* The ED decision clock now lands in this quad for an emergency patient, and
     it arrives already marked up against the four-hour standard. Unstyled here,
     a breached wait would render in body colour on the note and in red on the
     board — which teaches a nurse that the colour means nothing. */
  .snap-q-v .er-clock-warn{color:var(--warn)}
  .snap-q-v .er-clock-breach{color:var(--crit);font-weight:750}
  .snap-q .snap-src-chip{margin-top:auto;padding-top:4px}
  @media (max-width:720px){
    .snap-quad{grid-template-columns:repeat(2, 1fr)}
    .snap-q:nth-child(2){border-right:none}
    .snap-q:nth-child(n+3){border-top:1px solid var(--hairline)}
  }

  /* Bottom strip — fluid balance + most-recent culture */
  .snap-strip{
    display:grid;grid-template-columns:1fr 1.5fr;
  }
  .snap-strip > .snap-q:first-child{border-right:1px solid var(--hairline)}
  @media (max-width:720px){
    .snap-strip{grid-template-columns:1fr}
    .snap-strip > .snap-q:first-child{border-right:none;border-bottom:1px solid var(--hairline)}
  }

  /* Tiny source link sub-chip, used everywhere a cell needs its origin */
  .snap-src-chip{
    display:inline-flex;align-items:center;gap:3px;
    font-size:10px;font-weight:500;color:var(--faint);
    text-decoration:none;
  }
  .snap-src-chip:hover{color:var(--brand-2);text-decoration:underline}
  .snap-src-chip::before{content:'↗ ';font-weight:700;opacity:.7}

  /* Invasive lines in the snapshot: one chip per device. A line past a week
     carries the warn treatment — that is the dwell where "does this still need
     to be in?" stops being a routine question. */
  .snap-line{
    display:inline-block;margin:2px 4px 2px 0;padding:2px 8px;
    border:1px solid var(--hairline);border-radius:999px;
    font-size:11.5px;font-weight:600;color:var(--ink-2);white-space:nowrap;
  }
  .snap-line.overdue{border-color:var(--warn-border,var(--warn));color:var(--warn)}

  /* I/O balance treatment — negative balance reads as warn */
  .snap-balance.neg{color:var(--warn)}
  .snap-balance.pos{color:var(--ok)}
  .snap-balance b{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-feature-settings:'tnum' 1}

  /* Header band of the patient-snapshot card */
  .snap-head{
    display:flex;align-items:center;gap:8px;
    padding:10px 14px;font-size:12.5px;
    border-bottom:1px solid var(--hairline);
    background:linear-gradient(180deg,var(--card-2) 0%, var(--bg-soft) 100%);
  }
  .snap-head-title{font-weight:700;color:var(--ink-2);display:inline-flex;align-items:center;gap:6px}
  .snap-head-title svg{width:14px;height:14px;color:var(--brand-2)}
  .snap-head-asof{margin-left:auto;color:var(--muted);font-size:11.5px;font-variant-numeric:tabular-nums}
  .snap-head-asof b{color:var(--ink-2)}

  /* Legacy classes (older callers still use these). Kept for back-compat. */
  .snap-section h3{margin-bottom:6px}
  .snap-grid{
    display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1px;
    background:var(--hairline);border:1px solid var(--hairline);border-radius:10px;overflow:hidden;
  }
  .snap-cell{background:var(--card);padding:10px 12px;display:flex;flex-direction:column;gap:2px;min-height:64px}
  .snap-l{font-size:10px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
  .snap-v{font-size:13px;font-weight:600;color:var(--ink);line-height:1.35}
  .snap-v .dim{color:var(--faint);font-weight:400}
  .snap-src{font-size:10px;color:var(--faint);margin-top:auto;padding-top:4px}
  .snap-src a{text-decoration:none}
  .snap-src a:hover{text-decoration:underline}

  /* ---------- Progress Note prefill banner + per-field markers --------
   * The "auto-filled — review" banner appears above the form on a fresh
   * note. Per-field markers ("auto" pill) sit at the right edge of any
   * input row whose initial value came from buildMedicalNotePrefill().
   * Tooltip shows the provenance ("Last nursing GCS", "Active in Rx"). */
  .prefill-banner{
    display:flex;align-items:flex-start;gap:12px;
    padding:11px 14px;margin:8px 0 14px;
    background:linear-gradient(180deg, var(--brand-soft) 0%, #fdf9ff 100%);
    border:1px solid var(--brand-ring);
    border-radius:var(--radius-2);
  }
  .prefill-mark{
    display:inline-flex;align-items:center;justify-content:center;
    width:28px;height:28px;border-radius:8px;
    background:linear-gradient(135deg, var(--brand) 0%, var(--brand-2) 100%);
    color:#fff;flex-shrink:0;
  }
  .prefill-mark svg{width:15px;height:15px}
  .prefill-msg{flex:1;min-width:0}
  .prefill-h{font-weight:700;font-size:13px;color:var(--ink-2);margin-bottom:1px}
  .prefill-sub{font-size:12px;color:var(--muted);line-height:1.45}
  .prefill-sub b{color:var(--ink-2);font-weight:700}
  .prefill-actions{flex-shrink:0}
  .prefill-actions .btn{font-size:11px;padding:4px 10px}

  /* PreSense suggestion cards (progress note / nursing SBAR) */
  .ai-suggest{ border:1px solid var(--brand-ring); background:var(--brand-soft); }
  .ai-suggest-action-row{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin:0 0 12px; }
  .ai-suggest-action-row .btn{ white-space:normal; }
  .ai-sg-card{ background:var(--card); border:1px solid var(--border); border-radius:var(--radius-2); padding:10px 12px; margin-bottom:8px; }
  .ai-sg-card.ai-sg-loading{ overflow:hidden; position:relative; border-color:var(--brand-ring); background:linear-gradient(180deg,var(--card),var(--brand-soft)); }
  .ai-sg-card.accepted{ border-color:var(--ok-border); background:var(--ok-soft); }
  .ai-sg-head{ display:flex; align-items:center; gap:8px; margin-bottom:6px; font-size:13px; }
  .ai-sg-text{ font-size:13px; color:var(--ink-2); line-height:1.5; white-space:pre-wrap; }
  .ai-sg-text.editing{ outline:2px solid var(--brand); border-radius:6px; padding:6px 8px; background:var(--card); }
  .ai-sg-loading-copy{ color:var(--muted); font-size:12px; font-weight:600; margin-left:auto; }
  .ai-sg-shimmer{ height:9px; border-radius:999px; margin:7px 0; background:linear-gradient(90deg, rgba(148,163,184,.18) 0%, rgba(0,122,255,.18) 48%, rgba(148,163,184,.18) 100%); background-size:220% 100%; animation:ai-sg-shimmer 1.2s ease-in-out infinite; }
  .ai-sg-shimmer.short{ width:68%; }
  .ai-generating{ display:inline-flex; align-items:center; justify-content:center; gap:8px; }
  .ai-generating-spinner{ width:14px; height:14px; border-radius:999px; border:2px solid rgba(255,255,255,.42); border-top-color:#fff; animation:ai-generating-spin .75s linear infinite; flex:0 0 auto; }
  .ai-generating-dots{ display:inline-flex; gap:3px; align-items:center; }
  .ai-generating-dots i{ width:4px; height:4px; border-radius:999px; background:currentColor; opacity:.55; animation:ai-generating-dot 1s ease-in-out infinite; }
  .ai-generating-dots i:nth-child(2){ animation-delay:.15s; }
  .ai-generating-dots i:nth-child(3){ animation-delay:.3s; }
  @keyframes ai-generating-spin{ to{ transform:rotate(360deg); } }
  @keyframes ai-generating-dot{ 0%,80%,100%{ transform:translateY(0); opacity:.42; } 40%{ transform:translateY(-3px); opacity:1; } }
  @keyframes ai-sg-shimmer{ 0%{ background-position:120% 0; } 100%{ background-position:-120% 0; } }
  /* Per-box suggestion slot: empty before generation (no space); once filled it
     sits directly above its target box with a brand accent tying the two. */
  .ai-sg-slot:empty{ display:none; }
  .ai-sg-slot{ margin:10px 0 -2px; }
  .ai-sg-slot .ai-sg-card{ border-color:var(--brand-ring); border-left:3px solid var(--brand); background:var(--brand-soft); margin-bottom:6px; }
  .ai-sg-slot .ai-sg-card.accepted{ border-color:var(--ok-border); border-left-color:var(--ok); background:var(--ok-soft); }
  .todo-why{margin-top:7px;padding:8px 10px;border-left:3px solid var(--brand);border-radius:0 7px 7px 0;background:var(--brand-soft);color:var(--ink-2);font-size:12px;line-height:1.45}
  .todo-why b{color:var(--brand-2)}
  .todo-overdue-badge[hidden]{display:none!important}

  /* Assessment draft block (Plan B) */
  .pn-asmt-draft {
    background: linear-gradient(90deg, #faf5ff 0%, var(--card) 100%);
    border: 1px solid #e9d5ff;
    border-left: 3px solid #7c3aed;
    border-radius: 0 8px 8px 0;
    padding: 12px 14px;
    margin: 6px 0;
  }
  .pn-asmt-draft-chip {
    display: inline-block;
    font-size: 10px;
    background: #ede9fe;
    color: #6d28d9;
    padding: 2px 8px;
    border-radius: 9px;
    font-weight: 700;
    letter-spacing: 0.04em;
    margin-bottom: 8px;
  }
  .pn-asmt-draft-text {
    font-size: 13px;
    color: #1e293b;
    line-height: 1.55;
  }
  .pn-asmt-draft-text mark.pn-cite {
    background: #fef9c3;
    color: #0f172a;
    padding: 0 3px;
    border-radius: 2px;
    cursor: help;
  }
  .pn-asmt-draft-actions {
    display: flex;
    gap: 6px;
    margin-top: 10px;
    flex-wrap: wrap;
  }
  .pn-asmt-draft-skel {
    height: 60px;
    background: linear-gradient(90deg, var(--card-3) 0%, var(--border) 50%, var(--card-3) 100%);
    background-size: 200% 100%;
    animation: pn-asmt-skel 1.4s ease-in-out infinite;
    border-radius: 4px;
  }
  @keyframes pn-asmt-skel {
    0%   { background-position: 200% 0; }
    100% { background-position: -200% 0; }
  }
  .pn-asmt-draft-err {
    font-size: 12px;
    color: #92400e;
    background: #fef3c7;
    padding: 6px 10px;
    border-radius: 4px;
  }
  .has-auto-fill{position:relative}
  .auto-fill-mark{
    position:absolute;top:6px;right:6px;
    font-size:9px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
    color:var(--brand-2);background:var(--brand-soft);
    border:1px solid var(--brand-ring);
    padding:1px 6px;border-radius:8px;
    pointer-events:auto;cursor:help;
    line-height:1.4;
  }
  .auto-fill-mark:hover{background:var(--card);color:var(--brand)}

  /* Sections under the doctor-write top, tagged as "Auto · verify" pills,
     get a slightly muted header so the eye scans past unless the doctor
     intends to review. Anchored on the schema-driven .form-section h3's
     .pill class so it doesn't leak to other forms. */
  .form-section h3 .pill.touch:not(:empty){font-weight:600}

  /* ---------- ICU Progress Note (paper-style structured form) ---------- */
  .form-section.progress-note{padding:0;overflow:hidden}
  .form-section.progress-note > h3{padding:14px 16px 0;margin-bottom:0}
  .ipn-grid{
    display:grid;grid-template-columns:1fr 1fr;gap:0;
    border-top:1px solid var(--hairline);margin-top:12px;
  }
  @media (max-width:780px){.ipn-grid{grid-template-columns:1fr}}
  .ipn-col{padding:14px 16px;border-right:1px solid var(--hairline)}
  .ipn-col:last-child{border-right:none}
  @media (max-width:780px){
    .ipn-col{border-right:none;border-bottom:1px solid var(--hairline)}
    .ipn-col:last-child{border-bottom:none}
  }
  .ipn-block{padding:10px 0;border-bottom:1px dashed var(--hairline)}
  .ipn-block:last-child{border-bottom:none}
  .ipn-h{
    font-size:11px;font-weight:700;color:var(--brand-2);
    letter-spacing:.10em;text-transform:uppercase;margin-bottom:8px;
  }
  .ipn-h-sub{
    font-size:10.5px;font-weight:600;color:var(--muted);
    margin-top:8px;margin-bottom:6px;
  }
  .ipn-row{
    display:flex;align-items:center;gap:8px;flex-wrap:wrap;
    padding:5px 0;font-size:12.5px;
  }
  .ipn-l{
    color:var(--muted);font-weight:500;min-width:130px;flex-shrink:0;
  }
  .ipn-fields{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap;color:var(--ink-2)}
  .ipn-input{
    background:var(--bg-soft);border:1px solid var(--border);border-radius:5px;
    padding:3px 8px;font-size:12.5px;color:var(--ink);outline:none;
    font-family:inherit;
  }
  .ipn-input:focus{border-color:var(--brand);box-shadow:0 0 0 2px var(--brand-ring)}
  /* PRE-382: native number-spinner arrows overlapped the centred digits in
     the 50px box, clipping "0.25" to "0.2". Hide the spinners (values here
     are typed, not stepped) and give the digits room. */
  .ipn-input.ipn-num{width:64px;text-align:center;font-variant-numeric:tabular-nums;appearance:textfield;-moz-appearance:textfield}
  .ipn-input.ipn-num::-webkit-inner-spin-button,
  .ipn-input.ipn-num::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
  .ipn-table{
    width:100%;border-collapse:collapse;margin-top:6px;
    background:var(--bg-soft);border:1px solid var(--border);border-radius:6px;
    overflow:hidden;font-size:12px;
  }
  .ipn-table th,.ipn-table td{
    padding:5px 8px;border:1px solid var(--border);text-align:left;
  }
  .ipn-table th{
    background:var(--card-2);color:var(--muted);font-weight:600;
    font-size:10.5px;letter-spacing:.04em;text-transform:uppercase;
  }
  .ipn-table td{color:var(--ink-2)}
  .ipn-table td input.ipn-input{border:none;background:transparent;padding:0;width:100%;text-align:center}

  /* Progress Notes — two-column structured layout */
  .pn-grid{
    display:grid;grid-template-columns:1fr 1fr;gap:12px;
    margin-top:12px;
  }
  @media (max-width:960px){.pn-grid{grid-template-columns:1fr}}
  .pn-col .form-section{margin:0 0 12px 0}

  /* Pill-radio: visual variant of radio rendered as inline pill buttons */
  .pn-pill-row{display:flex;gap:6px;flex-wrap:wrap}
  .pn-pill{
    background:var(--bg-soft);border:1px solid var(--border);border-radius:999px;
    padding:4px 12px;font-size:12px;cursor:pointer;color:var(--ink-2);
    user-select:none;
  }
  .pn-pill.on{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:600}
  .pn-pill:hover:not(.on){border-color:var(--brand)}

  /* Drug trend matrix (Noradr / Vaso / Adr × ↔/↑/↓) */
  .pn-trend{
    width:100%;border-collapse:collapse;margin-top:6px;font-size:12px;
    background:var(--bg-soft);border:1px solid var(--border);border-radius:6px;overflow:hidden;
  }
  .pn-trend th,.pn-trend td{padding:5px 8px;border:1px solid var(--border);text-align:center}
  .pn-trend th{background:var(--card-2);color:var(--muted);font-weight:600;font-size:10.5px;letter-spacing:.04em;text-transform:uppercase}
  .pn-trend td:first-child{text-align:left;font-weight:600;color:var(--ink-2)}
  .pn-trend-pill{
    display:inline-block;width:24px;height:24px;border-radius:50%;
    border:1px solid var(--border);background:var(--bg-soft);cursor:pointer;line-height:22px;
  }
  .pn-trend-pill.on{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:700}

  /* Segmented mode picker (Respiratory: room air / O2 / vent) */
  .pn-seg{display:flex;border:1px solid var(--border);border-radius:6px;overflow:hidden;background:var(--bg-soft);margin-bottom:8px}
  .pn-seg-btn{
    flex:1;padding:6px 10px;font-size:12px;border:none;background:transparent;
    cursor:pointer;color:var(--ink-2);border-right:1px solid var(--border);
  }
  .pn-seg-btn:last-child{border-right:none}
  .pn-seg-btn.on{background:var(--brand);color:#fff;font-weight:600}
  .pn-seg-sub{padding:8px 10px;border-top:1px solid var(--border);background:var(--bg-soft);border-radius:0 0 6px 6px;margin-top:-1px}

  /* Invasive-device row: presence + name/site/day + optional review due days. */
  .pn-line-row{
    display:grid;grid-template-columns:minmax(170px,.8fr) minmax(260px,1.4fr);
    align-items:center;gap:8px 12px;padding:8px 0;
    border-bottom:1px dashed var(--hairline);font-size:12.5px;
  }
  .pn-line-row:last-child{border-bottom:none}
  .pn-line-reminder-note{
    margin:2px 0 5px;padding:6px 8px;border-left:2px solid var(--brand);
    background:var(--brand-soft);color:var(--muted);font-size:10.5px;line-height:1.35;
  }
  .pn-line-row .pn-line-present-label{display:flex;align-items:center;gap:6px;cursor:pointer;font-weight:650}
  .pn-line-core{display:flex;align-items:center;justify-content:flex-end;gap:7px;min-width:0}
  .pn-line-site,.pn-line-name{
    min-width:0;max-width:180px;background:var(--bg-soft);border:1px solid var(--border);
    border-radius:4px;padding:4px 7px;color:var(--ink);font:inherit;
  }
  .pn-line-day{display:flex;align-items:center;gap:5px;color:var(--muted);font-size:10.5px}
  .pn-line-row .pn-day,.pn-line-reminder{
    width:60px;background:var(--bg-soft);border:1px solid var(--border);
    border-radius:4px;padding:4px 6px;font-size:12px;text-align:center;color:var(--ink);
  }
  .pn-line-reminders{
    grid-column:1/-1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));
    gap:6px 10px;padding:7px 9px;border:1px solid var(--hairline);
    border-radius:7px;background:var(--bg-soft);
  }
  .pn-line-reminders label{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0}
  .pn-line-reminders label span{color:var(--muted);font-size:10.5px;line-height:1.2}
  .pn-line-row input:disabled{opacity:.4;cursor:not-allowed}
  @media (max-width:700px){
    .pn-line-row{grid-template-columns:minmax(0,1fr);align-items:stretch}
    .pn-line-core{justify-content:flex-start;flex-wrap:wrap}
    .pn-line-site,.pn-line-name{flex:1 1 130px;max-width:none}
    .pn-line-reminders{grid-column:1;grid-template-columns:minmax(0,1fr)}
  }

  /* Numbered list (Specialist Consultations 1-5) */
  .pn-num-list{display:flex;flex-direction:column;gap:6px;margin-top:4px}
  .pn-num-row{display:flex;align-items:center;gap:8px}
  .pn-num-row .pn-num-idx{
    width:22px;height:22px;border-radius:50%;background:var(--card-2);
    color:var(--muted);font-size:11px;font-weight:700;
    display:flex;align-items:center;justify-content:center;flex-shrink:0;
  }
  .pn-num-row input{flex:1}

  /* Compact CBG row (Glycemic) */
  .pn-cbg{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
  .pn-cbg .ipn-input{width:80px}

  /* SBAR rows (Nursing reassessment) */
  .sbar-row{display:grid;grid-template-columns:160px 1fr;gap:10px;margin-bottom:10px;align-items:start}
  @media (max-width:640px){.sbar-row{grid-template-columns:1fr}}
  .sbar-l{
    font-size:11px;font-weight:700;color:var(--brand-2);
    letter-spacing:.10em;text-transform:uppercase;padding-top:8px;
  }

  /* Radio/check pill cluster (segment-control style) */
  .radio-group{display:inline-flex;flex-wrap:wrap;gap:4px}
  .radio-pill{
    display:inline-flex;align-items:center;
    padding:4px 10px;border-radius:6px;
    background:var(--bg-soft);border:1px solid var(--border);
    font-size:11.5px;color:var(--ink-2);cursor:pointer;
    transition:background .12s, border-color .12s, color .12s;
    user-select:none;
  }
  .radio-pill input{display:none}
  .radio-pill:hover{background:var(--card-3);border-color:var(--border-2)}
  .radio-pill.on{
    background:var(--brand-soft);border-color:var(--brand-ring);
    color:var(--brand-2);font-weight:600;
  }
  .voice-row{display:flex;gap:8px;align-items:center;margin-top:10px;flex-wrap:wrap}
  .voice-btn{
    display:inline-flex;align-items:center;gap:8px;
    padding:8px 14px;border-radius:8px;
    background:#fce7f3;color:var(--pink);border:1px solid #fbcfe8;
    font-size:12.5px;font-weight:600;
  }
  .voice-btn:hover{background:#fbcfe8}
  .voice-btn.recording{background:var(--pink);color:#fff;border-color:var(--pink);animation:pulse 1.2s infinite}
  .voice-btn svg{width:14px;height:14px}
  .photo-btn{
    display:inline-flex;align-items:center;gap:8px;
    padding:8px 14px;border-radius:8px;
    background:#dcfce7;color:var(--ok);border:1px solid var(--ok-border);
    font-size:12.5px;font-weight:600;
  }
  .photo-btn:hover{background:#bbf7d0}

  /* Score widgets (GCS, CPOT) */
  .score-card{
    background:var(--bg-soft);border:1px solid var(--border);
    border-radius:10px;padding:12px;margin-bottom:10px;
  }
  .score-row{display:flex;gap:10px;align-items:center;margin-bottom:8px}
  .score-row .lbl{font-size:12px;font-weight:600;color:var(--ink-2);min-width:80px}
  .score-opts{display:flex;flex-wrap:wrap;gap:6px;flex:1}
  .score-opt{
    padding:6px 10px;border-radius:6px;
    background:var(--card);border:1px solid var(--border);
    font-size:12px;color:var(--ink-2);cursor:pointer;min-height:32px;
    display:inline-flex;align-items:center;gap:4px;
  }
  .score-opt:hover{border-color:var(--brand);color:var(--brand)}
  .score-opt.on{background:var(--brand);color:#fff;border-color:var(--brand)}

  /* ── Seamless data-entry primitives ───────────────────────────── */
  .sl-combobox{position:relative}
  .sl-combobox-input{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:9px;font:inherit;font-size:14.5px;background:var(--card);color:var(--ink-2)}
  .sl-combobox-input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-ring)}
  .sl-combobox-panel{position:absolute;z-index:60;left:0;right:0;top:calc(100% + 4px);max-height:280px;overflow:auto;background:var(--card);border:1px solid var(--border);border-radius:10px;box-shadow:0 12px 32px rgba(15,23,42,.16);display:none}
  .sl-combobox-panel.open{display:block}
  .sl-combobox-group{padding:6px 11px 3px;font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);position:sticky;top:0;background:var(--card)}
  .sl-combobox-opt{display:flex;justify-content:space-between;gap:10px;align-items:baseline;padding:8px 11px;cursor:pointer;border-top:1px solid var(--border)}
  .sl-combobox-opt:first-child{border-top:none}
  .sl-combobox-opt.hl,.sl-combobox-opt:hover{background:var(--brand-soft)}
  .sl-combobox-opt b{color:var(--ink-2);font-weight:600}
  .sl-combobox-opt span{color:var(--muted);font-size:12px;text-align:right}
  .sl-combobox-empty{padding:10px 11px;color:var(--muted);font-size:13px}

  .sl-preset-bar{display:flex;flex-wrap:wrap;gap:6px;margin:2px 0 10px}
  .sl-preset-chip{padding:5px 11px;border:1px solid var(--brand-ring);background:var(--brand-soft);color:var(--brand-2);border-radius:999px;font-size:12px;font-weight:600;cursor:pointer}
  .sl-preset-chip:hover{background:var(--brand);color:#fff;border-color:var(--brand)}

  .sl-quickpick{display:flex;flex-wrap:wrap;gap:6px}
  .sl-collapse{border:1px solid var(--border);border-radius:10px;margin-bottom:12px;overflow:hidden}
  .sl-collapse-head{display:flex;align-items:center;gap:8px;padding:10px 12px;cursor:pointer;background:var(--card);user-select:none}
  .sl-collapse-head:hover{background:var(--brand-soft)}
  .sl-collapse-chev{transition:transform .15s;color:var(--muted)}
  .sl-collapse.open .sl-collapse-chev{transform:rotate(90deg)}
  .sl-collapse-title{font-weight:600;color:var(--ink-2)}
  .sl-collapse-summary{margin-left:auto;color:var(--muted);font-size:12px;text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:55%}
  .sl-collapse-body{padding:4px 12px 12px;display:none}
  .sl-collapse.open .sl-collapse-body{display:block}

  .score-total{
    margin-left:auto;font-size:18px;font-weight:700;
    background:var(--card);border:1px solid var(--border);
    padding:4px 12px;border-radius:8px;font-variant-numeric:tabular-nums;
  }
