  /* ---------- Protocol bundles ---------- */
  .bundle-grid{
    display:grid;
    grid-template-columns:repeat(auto-fill,minmax(280px,1fr));
    gap:12px;
  }
  .bundle-card{
    background:var(--card);border:1px solid var(--border);
    border-radius:12px;padding:14px;display:flex;flex-direction:column;gap:10px;
    box-shadow:var(--shadow-1);
  }
  .bundle-head{display:flex;align-items:flex-start;gap:10px}
  .bundle-icon{
    width:32px;height:32px;border-radius:9px;flex-shrink:0;
    background:linear-gradient(135deg,#a16207,#92400e);color:#fff;
    display:flex;align-items:center;justify-content:center;
  }
  .bundle-icon svg{width:16px;height:16px}
  .bundle-name{font-size:14px;font-weight:700;color:var(--ink);line-height:1.25}
  .bundle-items{
    list-style:none;font-size:12.5px;color:var(--ink-2);line-height:1.6;
    flex:1;background:var(--bg-soft);padding:8px 12px;border-radius:8px;
  }
  .bundle-items li{position:relative;padding-left:14px}
  .bundle-items li::before{content:"·";position:absolute;left:4px;color:var(--faint);font-weight:700}
  .bundle-items li.more{color:var(--muted);font-style:italic}
  .protocol-editor-items{display:flex;flex-direction:column;gap:8px}
  .protocol-editor-item{
    display:grid;grid-template-columns:minmax(0,1fr) 105px 105px 34px;
    gap:7px;align-items:center;padding:8px;background:var(--bg-soft);
    border:1px solid var(--border);border-radius:10px;
  }
  .protocol-editor-item input,.protocol-editor-item select{
    width:100%;padding:8px 9px;font-size:13px;background:var(--card);
    border:1px solid var(--border);border-radius:7px;outline:none;
  }
  .protocol-editor-item input:focus,.protocol-editor-item select:focus{
    border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-ring);
  }
  @media (max-width:639px){
    .protocol-editor-item{grid-template-columns:minmax(0,1fr) minmax(88px,.45fr) 34px}
    .protocol-editor-item [data-field="task"]{grid-column:1 / 3}
    .protocol-editor-item [data-field="priority"],
    .protocol-editor-item [data-field="frequency"]{grid-row:2}
    .protocol-editor-item [data-field="priority"]{grid-column:1}
    .protocol-editor-item [data-field="frequency"]{grid-column:2 / 4}
    .protocol-editor-item .protocol-editor-remove{grid-column:3;grid-row:1}
  }

  /* ---------- To-Do ----------
     One accent per row: a red left rail and a red due time when a task is
     overdue or critical. Frequency, provenance and row actions stay quiet, so
     the eye lands on the work instead of on the chrome describing it. */
  .todo-group{
    background:var(--card);border:1px solid var(--border);
    border-left:3px solid var(--cat-color,var(--border-2));
    border-radius:12px;padding:0 12px 4px;margin-bottom:12px;
    box-shadow:var(--shadow-1);
  }
  .todo-group-head{
    display:flex;align-items:center;gap:9px;
    padding:11px 2px 9px;
    border-bottom:1px solid var(--hairline);
  }
  .todo-group-icon{
    width:26px;height:26px;border-radius:7px;flex:none;
    display:flex;align-items:center;justify-content:center;
  }
  .todo-group-icon svg{width:14px;height:14px}
  .todo-group-name{font-size:11.5px;font-weight:700;color:var(--ink-2);letter-spacing:.07em;text-transform:uppercase}
  .todo-group-count{
    margin-left:auto;background:var(--bg-soft);border:1px solid var(--border);
    color:var(--muted);padding:1px 9px;border-radius:999px;
    font-size:11.5px;font-weight:700;font-variant-numeric:tabular-nums;
  }
  .todo-urgency{border-left-color:var(--urgency-color,var(--border-2))}
  .todo-urgency-label{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
  .todo-urgency-label small{font-size:11px;font-weight:500;text-transform:none;letter-spacing:0;color:var(--faint)}

  /* Rows are rows, not cards — hairline-separated so a whole queue fits a screen. */
  .todo-list{display:flex;flex-direction:column;min-width:0}
  .todo-item{
    padding:9px 10px;display:flex;align-items:flex-start;gap:11px;min-width:0;
    transition:background .12s;
  }
  .todo-item + .todo-item{border-top:1px solid var(--hairline)}
  .todo-item:hover{background:var(--bg-soft)}
  .todo-item.is-overdue,.todo-item.is-critical{box-shadow:inset 3px 0 0 var(--crit)}
  .todo-item.sel{background:var(--brand-soft)}
  .todo-item.done{opacity:.5}
  .todo-item.done .todo-title{text-decoration:line-through}
  .todo-check{
    width:20px;height:20px;border-radius:5px;
    border:1.5px solid var(--border-2);background:var(--card);
    flex:none;cursor:pointer;margin-top:1px;padding:0;
    display:flex;align-items:center;justify-content:center;
    transition:background .12s,border-color .12s;
  }
  .todo-check:hover{border-color:var(--brand)}
  .todo-check svg{width:11px;height:11px;color:#fff;display:none}
  /* PRE-318: selected-for-bulk-action state */
  .todo-check.sel{background:var(--brand);border-color:var(--brand)}
  .todo-check.sel svg{display:block}
  .todo-item.done .todo-check{background:var(--ok);border-color:var(--ok)}
  .todo-item.done .todo-check svg{display:block}
  /* Sticks below the topbar (55px) + wf-bar (~53px) glass headers — same 115px
     offset as .io-summary-panel. top:8px hid the bar behind those headers
     whenever the PreSense suggestions section pushed the open groups below
     the fold, so the post-checkbox complete action was unreachable. */
  .todo-bulkbar{position:sticky;top:115px;z-index:30;display:flex;align-items:center;gap:8px;flex-wrap:wrap;
    background:var(--brand-soft);border:1px solid var(--brand-ring);border-radius:12px;padding:8px 12px;margin:0 0 12px}
  /* display:flex beats the hidden attribute, so the empty bar drew an 18px blue
     sliver above the list whenever nothing was selected. */
  .todo-bulkbar[hidden]{display:none}
  .todo-bulkbar b{font-size:13px;color:var(--ink)}
  .todo-body{flex:1;min-width:0}
  .todo-title{font-size:14px;font-weight:600;color:var(--ink);line-height:1.4}
  .todo-note-drawer.open { display: block !important; }

  /* Pri-card todo: structured what + freq */
  .pri-what{font-weight:500;color:var(--ink-2)}
  /* A dosing frequency, not a link. In purple next to real buttons it read as
     one, so every task row offered a click target that was not there. */
  .pri-freq{color:var(--muted);font-size:11px;margin-left:3px;font-weight:600}

  /* One quiet meta line: when · how often · where it came from · row actions. */
  .todo-meta{margin-top:3px;font-size:11.5px;color:var(--muted);display:flex;flex-wrap:wrap;gap:3px 10px;align-items:center}
  .todo-meta .sep{color:var(--faint)}
  .todo-meta b{color:var(--ink-2);font-weight:600}
  .todo-meta .chip{padding:0 7px;font-size:10px;letter-spacing:.03em}
  .todo-field{display:inline-flex;align-items:center;gap:4px;font-variant-numeric:tabular-nums}
  .todo-field svg{width:11px;height:11px;color:var(--faint)}
  .todo-field-by{color:var(--ink-2);font-weight:600}
  .todo-item.is-overdue .todo-field-by,.todo-item.is-overdue .todo-field-by svg{color:var(--crit)}
  .src-chip{
    display:inline-flex;align-items:center;gap:5px;
    padding:1px 7px;border-radius:6px;font-size:10.5px;font-weight:600;
    background:var(--bg-soft);color:var(--muted);border:1px solid var(--border);
    line-height:1.6;white-space:nowrap;
  }
  .src-chip:hover{color:var(--ink-2);border-color:var(--border-2)}
  .src-chip svg{width:10px;height:10px}
  .src-chip-icon{display:inline-flex;color:var(--c,var(--muted))}
  .src-chip-icon svg{width:11px;height:11px}
  /* Used by the bedside priority cards, not by this list. */
  .src-dot{
    width:8px;height:8px;border-radius:50%;flex-shrink:0;
    box-shadow:0 0 0 2px rgba(255,255,255,.7);
  }
  .todo-actions{display:flex;gap:2px;flex:0 1 auto;align-items:center;justify-content:flex-end;flex-wrap:wrap;min-width:0;max-width:100%;margin-left:auto}
  .todo-actions .btn{padding:3px 8px;font-size:11.5px}
  .todo-actions .btn svg{width:12px;height:12px}
  /* .todo-group-count already claims the auto margin — a second one would split
     the free space and float the count into the middle of the header. */
  .todo-group-head .todo-actions{margin-left:0}

  /* QA12 mobile todo reflow */
  @media (max-width:639px){
    .todo-group-head{flex-wrap:wrap}
    .todo-group-head .todo-actions{
      flex:1 1 100%;justify-content:flex-start;margin-left:0;
    }
    .todo-meta > .todo-actions{
      flex:1 1 100%;justify-content:flex-start;margin-left:0;max-width:100%;
    }
    .todo-actions .btn{min-height:44px;max-width:100%;white-space:normal}
    .todo-check{width:44px;height:44px;margin-top:0}
    .todo-title{overflow-wrap:anywhere}
    .todo-meta .chip{max-width:100%;white-space:normal;overflow-wrap:anywhere}
    .src-chip{max-width:100%;white-space:normal;overflow-wrap:anywhere;text-align:left}
    button.src-chip{min-height:44px}
    .todo-note-drawer{min-width:0;max-width:100%;overflow-wrap:anywhere}
    .todo-note-drawer .row{flex-wrap:wrap}
    .todo-note-drawer .btn{min-height:44px}
  }

  /* Shift counters — glanceable, no decorative shell. */
  .todo-command{display:flex;align-items:stretch;gap:8px;flex-wrap:wrap;margin-bottom:12px}
  .todo-stat{
    padding:7px 13px;border:1px solid var(--border);background:var(--card);
    border-radius:10px;display:flex;align-items:center;gap:9px;
  }
  .todo-stat strong{font-size:17px;font-weight:800;line-height:1;font-variant-numeric:tabular-nums;color:var(--ink)}
  .todo-stat span{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);line-height:1.2}
  .todo-stat.now{border-color:var(--crit-border);background:var(--crit-soft)}
  .todo-stat.now strong,.todo-stat.now span{color:var(--crit)}
  .todo-stat.next{border-color:var(--warn-border);background:var(--warn-soft)}
  .todo-stat.next strong,.todo-stat.next span{color:var(--warn)}
  .todo-stat.zero{opacity:.5}

  /* ---------- Insights (assistant style) ---------- */
  .ai-toolbar{
    display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:14px;
  }
  .ai-agent-pill{
    display:inline-flex;align-items:center;gap:8px;
    padding:8px 18px;border-radius:999px;
    background:linear-gradient(90deg,#dbeafe 0%,#fbcfe8 60%,#fed7aa 100%);
    color:var(--ink);font-size:14px;font-weight:600;
    border:1px solid #c7d2fe;box-shadow:var(--shadow-1);
  }
  .ai-agent-pill svg{color:var(--purple)}
  .ai-summary-card{
    background:var(--card);border:1px solid var(--border);
    border-radius:var(--radius-3);padding:22px 24px;
    box-shadow:var(--shadow-1);margin-bottom:14px;
  }
  .ai-section{padding:8px 0}
  .ai-section + .ai-section{border-top:1px dashed var(--hairline);padding-top:14px;margin-top:6px}
  .ai-section h4{
    font-size:13px;font-weight:600;font-style:italic;
    color:var(--muted);margin-bottom:8px;letter-spacing:.01em;
  }
  .ai-section ul,.ai-bullets{list-style:none;display:flex;flex-direction:column;gap:6px}
  .ai-section li,.ai-bullets li{
    position:relative;padding-left:14px;font-size:14px;line-height:1.55;color:var(--ink-2);
  }
  /* Drawn, not typeset. The marker was an 18px "·" nudged with top:6px, and a
     middle dot sits at the centre of its own em box — so the bullet rode low
     and drifted against the 14px/1.55 text on every generated report. A shape
     with explicit geometry has no font metrics to fight; .62em puts its centre
     on the first line's optical centre at any text size. */
  .ai-section li::before,.ai-bullets li::before{
    content:"";position:absolute;left:3px;top:.62em;
    width:4px;height:4px;border-radius:50%;background:var(--ink-2);
  }
  .ai-link{
    color:var(--brand);font-weight:600;text-decoration:underline;
    text-decoration-color:#bfdbfe;text-underline-offset:2px;cursor:pointer;
    transition:all .15s;
  }
  .ai-link:hover{color:var(--brand-2);text-decoration-color:var(--brand)}
  .ai-foot{
    display:flex;align-items:center;gap:10px;flex-wrap:wrap;
    margin-top:14px;padding-top:12px;border-top:1px solid var(--hairline);
  }

  .ai-suggested{
    background:var(--card);border:1px solid var(--border);
    border-radius:var(--radius-2);padding:14px 18px;
    box-shadow:var(--shadow-1);margin-bottom:14px;
  }
  .ai-suggested-head{
    display:flex;align-items:center;gap:8px;
    font-size:13px;font-weight:600;color:var(--muted);
    margin-bottom:10px;
  }
  .ai-suggested-head svg{color:var(--purple)}
  .ai-suggested-list{display:flex;flex-wrap:wrap;gap:8px}
  .suggested-q{
    background:var(--bg-soft);border:1px solid var(--border);
    color:var(--ink-2);padding:8px 14px;border-radius:8px;
    font-size:13px;font-weight:500;text-align:left;cursor:pointer;
    transition:all .14s;
  }
  .suggested-q:hover{background:var(--card);border-color:var(--brand);color:var(--brand)}
  .suggested-q::first-letter{color:var(--purple)}

  .ai-chatbar{
    position:sticky;bottom:8px;
    background:var(--card);border:1px solid var(--border);
    border-radius:var(--radius-2);padding:10px 12px 12px;
    box-shadow:var(--shadow-3);margin-top:18px;
  }
  .ai-chat-input{
    display:flex;align-items:center;gap:8px;
    background:var(--bg-soft);border:1px solid var(--border);
    border-radius:10px;padding:6px 8px 6px 14px;
  }
  .ai-chat-input:focus-within{border-color:var(--brand);background:var(--card);box-shadow:0 0 0 3px var(--brand-ring)}
  .ai-chat-input input{
    flex:1;border:none;background:transparent;outline:none;
    font-size:14px;padding:8px 0;color:var(--ink);
  }
  .ai-chat-btn{
    width:34px;height:34px;border-radius:8px;border:none;
    display:flex;align-items:center;justify-content:center;
    cursor:pointer;transition:all .14s;flex-shrink:0;
  }
  .ai-chat-btn.mic{background:#fce7f3;color:var(--pink)}
  .ai-chat-btn.mic:hover{background:#fbcfe8}
  .ai-chat-btn.mic.recording{background:var(--pink);color:#fff;animation:pulse 1s infinite}
  .ai-chat-btn.send{background:linear-gradient(135deg,#fbcfe8,#fed7aa);color:#a16207}
  .ai-chat-btn.send:hover{filter:brightness(1.05)}
  .ai-chat-foot{display:flex;align-items:center;gap:10px;margin-top:6px;padding:0 4px}
  .ai-chat-foot .led{width:8px;height:8px;border-radius:50%;background:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}
  .ai-lang{
    margin-left:auto;background:transparent;border:1px solid var(--border);
    border-radius:6px;padding:2px 8px;font-size:11px;color:var(--muted);
  }

  /* ---------- Live insights additions ----------
   * .rec-badge       — pill rendering of `[rec: rN]` citations (kept for
   *                    forward-compat; v2 prompt no longer emits them).
   * .ai-skeleton     — shimmer placeholder while the suggestion call is in flight.
   * .ai-chat-log     — chat thread under the suggested questions, only
   *                    populated for live patients (Mode 2 answers).        */
  .rec-badge{
    display:inline-block;font-size:10px;line-height:1;
    padding:2px 6px;margin:0 2px;border-radius:999px;
    background:var(--bg-soft);color:var(--muted);border:1px solid var(--border);
    font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
    vertical-align:1px;
  }
  .ai-skeleton{
    display:inline-block;color:var(--muted);font-style:italic;
    background:linear-gradient(90deg,var(--bg-soft),var(--card-3),var(--bg-soft));
    background-size:200% 100%;animation:ai-shimmer 1.4s linear infinite;
    border-radius:4px;padding:0 6px;
  }
  @keyframes ai-shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
  .app-busy-bar{
    position:fixed;left:0;right:0;top:0;height:3px;z-index:70;
    pointer-events:none;opacity:0;transform:scaleX(.12);transform-origin:left;
    background:linear-gradient(90deg,var(--brand),var(--purple),var(--warn));
    transition:opacity .18s ease,transform 4s cubic-bezier(.16,1,.3,1);
  }
  .app-busy-bar.active{opacity:1;transform:scaleX(.82)}
  .app-busy-bar.finishing{opacity:0;transform:scaleX(1);transition:opacity .28s ease,transform .28s ease}
  .op-loading-card{
    border:1px solid var(--brand-ring);border-radius:12px;padding:16px;
    background:linear-gradient(180deg,var(--card),var(--brand-soft));
    box-shadow:var(--shadow-soft);overflow:hidden;position:relative;
  }
  .op-loading-head{display:flex;align-items:center;gap:10px;margin-bottom:10px}
  .op-spinner{
    width:18px;height:18px;border-radius:999px;flex:0 0 auto;
    border:2px solid rgba(10,132,255,.18);border-top-color:var(--brand);
    animation:ai-generating-spin .8s linear infinite;
  }
  .op-loading-title{font-weight:700;color:var(--ink)}
  .op-loading-copy{font-size:12px;color:var(--muted);line-height:1.45;margin-bottom:12px}
  .op-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:12px}
  .op-step{
    min-height:52px;border:1px solid var(--border);border-radius:8px;background:var(--card);
    padding:8px;display:flex;flex-direction:column;gap:4px;justify-content:center;
  }
  .op-step b{font-size:11px;color:var(--ink);display:flex;align-items:center;gap:5px}
  .op-step span{font-size:10px;color:var(--muted);line-height:1.25}
  /* A finished step is de-emphasised on purpose: when "done" was the loudest
     chip, clinicians read the green Privacy-check tile as the step still running
     and reported the upload as stuck there. The ACTIVE step must dominate. */
  .op-step.done{border-color:var(--ok-border);background:var(--ok-soft);opacity:.66}
  .op-step.done b{color:var(--ok)}
  .op-step.active{border-color:var(--brand-ring);background:var(--brand-soft);box-shadow:0 0 0 1px var(--brand-ring) inset}
  .op-step.active b{color:var(--brand)}
  .op-step-dot{width:6px;height:6px;border-radius:999px;flex:0 0 auto;background:currentColor}
  .op-step.active .op-step-dot{animation:ai-shimmer-pulse 1.2s ease-in-out infinite}
  .op-step:not(.active):not(.done) .op-step-dot{background:var(--border-2)}
  @keyframes ai-shimmer-pulse{0%,100%{opacity:1}50%{opacity:.25}}
  .op-elapsed{font-variant-numeric:tabular-nums;color:var(--muted);font-size:12px}
  .sr-only{
    position:absolute;width:1px;height:1px;padding:0;margin:-1px;
    overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;
  }
  .op-skeleton{
    display:block;height:10px;border-radius:999px;margin-top:8px;
    background:linear-gradient(90deg,var(--bg-soft),var(--card-3),var(--bg-soft));
    background-size:200% 100%;animation:ai-shimmer 1.4s linear infinite;
  }
  .op-skeleton.short{width:62%}
  /* Structured view of an uploaded document's extracted data. One block per
     clinical section (Labs, Vitals, …); a section with no extracted items is
     never rendered at all, so the draft shows only what the document contained. */
  .up-sec{margin-top:16px}
  .up-sec-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}
  .up-sec-head b{font-size:14px;color:var(--ink)}
  .up-sec-count{font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}
  .up-items{display:flex;flex-direction:column;gap:8px}
  .up-item{
    border:1px solid var(--border);border-radius:10px;background:var(--bg-soft);
    padding:10px 12px;display:flex;flex-direction:column;gap:3px;
  }
  .up-row{display:flex;gap:6px;font-size:13px;line-height:1.5;flex-wrap:wrap}
  .up-row .up-k{color:var(--muted);flex:0 0 auto}
  .up-row .up-v{color:var(--ink);font-weight:600;min-width:0;overflow-wrap:anywhere}
  .up-row .up-v.plain{font-weight:400;white-space:pre-wrap}
  .up-editable{border-bottom:1px dashed var(--border-strong);border-radius:3px;padding:0 2px;cursor:text}
  .up-editable:hover,.up-editable:focus{background:var(--surface-2);border-bottom-color:var(--brand);outline:none}
  .up-vals{margin:2px 0 0;padding-left:16px;font-size:13px;line-height:1.6}
  .up-vals li{color:var(--ink);font-weight:600}
  .up-when{color:var(--muted);font-weight:400;font-variant-numeric:tabular-nums}
  .up-wide{overflow-x:auto}
  /* Inline editing. Every value in a draft is a contenteditable cell: the read
     state must stay as calm as the old read-only render (a bedside screen full
     of input boxes is unreadable), so the affordance is a hairline underline
     that firms up on hover and becomes a real field on focus. */
  .up-edit{
    border-radius:5px;padding:0 3px;margin:0 -3px;cursor:text;
    border-bottom:1px dashed transparent;transition:background .12s,border-color .12s;
  }
  .up-edit:hover{border-bottom-color:var(--border-2);background:var(--card-3)}
  .up-edit:focus{
    outline:none;background:var(--card);border-bottom-color:transparent;
    box-shadow:0 0 0 2px var(--brand);
  }
  .up-edit:empty::before{content:attr(data-up-ph);color:var(--muted);font-weight:400}
  .up-edit:empty{min-width:70px;display:inline-block}
  /* Human corrections and safety consequences stay visible after redraw and
     after reopening the durable draft. */
  .up-corrected{
    font-size:10px;font-weight:600;letter-spacing:.02em;text-transform:uppercase;
    color:var(--teal);background:color-mix(in srgb,var(--teal) 12%,transparent);
    border-radius:999px;padding:1px 6px;align-self:center;flex:0 0 auto;
  }
  .up-lock{color:var(--muted);font-size:9px;align-self:center;flex:0 0 auto}
  .up-cleared{
    margin-top:5px;font-size:11.5px;line-height:1.45;color:var(--warn);
    background:var(--warn-soft);border-radius:7px;padding:6px 8px;
  }
  .up-draft-head{display:flex;align-items:flex-start;gap:10px;margin-bottom:4px}
  .up-draft-title{font-weight:600;font-size:14px;color:var(--ink);display:inline-block}
  /* Row tools stay out of the way until the row is touched — except on touch
     screens, where there is no hover to reveal them. */
  .up-item-tools{display:flex;gap:6px;justify-content:flex-end;margin-top:4px;opacity:0;transition:opacity .12s}
  .up-item:hover .up-item-tools,.up-item:focus-within .up-item-tools{opacity:1}
  @media (hover:none){.up-item-tools{opacity:1}}
  .up-tool{
    display:inline-flex;align-items:center;gap:4px;background:var(--card);
    border:1px solid var(--border);border-radius:7px;color:var(--muted);
    font:inherit;font-size:11.5px;padding:3px 8px;cursor:pointer;min-height:26px;
  }
  .up-tool:hover{border-color:var(--border-2);color:var(--ink)}
  /* An author `display` beats the UA rule for [hidden], so the Retry button
     would otherwise sit next to "Saved" as if a save had failed. */
  .up-tool[hidden]{display:none}
  .up-tool.danger:hover{border-color:var(--crit-border);color:var(--crit);background:var(--crit-soft)}
  .up-tool.confirming{border-color:var(--crit-border);color:var(--crit);background:var(--crit-soft)}
  .up-sec-add{margin-left:auto}
  /* Declared-but-missing fields (a lab that arrived without units). Folded away
     on a row that already has content, open on a row just added by hand. */
  .up-optional{display:none}
  .up-item.show-optional .up-optional{display:flex}
  .up-add-bar{
    display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:16px;
    padding-top:12px;border-top:1px dashed var(--border);
  }
  .up-add-bar-label{font-size:12px;color:var(--muted);margin-right:2px}
  /* Autosave state. There is no save button, so this line is the only thing
     telling the clinician their correction reached the chart — it never
     disappears, and an error stays until the retry succeeds. */
  .up-save-state{
    display:inline-flex;align-items:center;gap:6px;flex:0 0 auto;
    font-size:11.5px;color:var(--muted);border:1px solid var(--border);
    border-radius:999px;padding:3px 10px;background:var(--bg-soft);white-space:nowrap;
  }
  .up-save-dot{width:6px;height:6px;border-radius:50%;background:var(--ok);flex:none}
  .up-save-state[data-state="pending"],.up-save-state[data-state="saving"]{color:var(--ink-2)}
  .up-save-state[data-state="pending"] .up-save-dot,
  .up-save-state[data-state="saving"] .up-save-dot{background:var(--warn);animation:ai-shimmer-pulse 1.2s ease-in-out infinite}
  .up-save-state[data-state="error"]{color:var(--crit);border-color:var(--crit-border);background:var(--crit-soft)}
  .up-save-state[data-state="error"] .up-save-dot{background:var(--crit)}
  @media (max-width:640px){
    .up-draft-head{flex-direction:column;gap:6px}
    .up-edit{padding:2px 4px;margin:0 -4px}
  }
  .op-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
  .btn.busy,.btn:disabled{opacity:.68;cursor:not-allowed}
  @media (max-width:640px){.op-steps{grid-template-columns:1fr}.op-step{min-height:44px}}
  .ai-chat-log{display:flex;flex-direction:column;gap:8px;margin:14px 0 8px}
  .ai-chat-msg{
    background:var(--card);border:1px solid var(--border);
    border-radius:10px;padding:8px 12px;font-size:13px;color:var(--ink);
    line-height:1.45;
  }
  .ai-chat-msg.ai-chat-q{background:var(--bg-soft);align-self:flex-end;max-width:80%}
  .ai-chat-msg.ai-chat-a{align-self:flex-start;max-width:90%}
  .ai-chat-role{
    display:inline-block;font-size:10px;font-weight:600;color:var(--muted);
    text-transform:uppercase;letter-spacing:.04em;margin-right:8px;
  }

  /* ===== Insights v5 — Clinical Briefing redesign ===== */
  .ins5-hero{background:linear-gradient(180deg,var(--brand-soft,#eef4ff),var(--card));border:1px solid var(--brand-ring,#cfe0ff);border-radius:var(--radius-3,14px);padding:14px 16px;margin-bottom:12px}
  .ins5-traj{display:inline-flex;align-items:center;gap:6px;font-weight:600;font-size:12px;padding:4px 10px;border-radius:999px;border:1px solid}
  .ins5-traj.t-improving{background:#e7f7ec;color:#1a7f3c;border-color:#b6e6c5}
  .ins5-traj.t-stable{background:#eaf2ff;color:#1f5fd0;border-color:#c5dbff}
  .ins5-traj.t-worsening{background:#fef3e2;color:#b3650a;border-color:#f6d39a}
  .ins5-traj.t-critical{background:#fdecec;color:#b51c1c;border-color:#f3b4b4}
  .ins5-traj.t-insufficient,.ins5-traj.t-null{background:#eef1f5;color:#5b6470;border-color:#dfe4ea}
  .ins5-conf{display:inline-block;font-size:11px;padding:3px 8px;border-radius:999px;background:#eef1f5;color:#5b6470;border:1px solid #dfe4ea;margin-left:6px}
  .ins5-lead{margin-top:6px;font-weight:500;color:var(--ink)}
  .ins5-pdetail{color:var(--muted);font-size:13px;margin-top:4px;line-height:1.5}
  .ins5-sec{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:10px 13px;margin-bottom:10px}
  .ins5-sec h4{margin:0 0 7px;font-size:11px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
  .ins5-sec ul{margin:0;padding:0;list-style:none}
  .ins5-sec li{margin:7px 0;padding-left:15px;position:relative;font-size:14px;line-height:1.5;color:var(--ink-2)}
  .ins5-sec li::before{content:"";position:absolute;left:3px;top:8px;width:5px;height:5px;border-radius:50%;background:#c3c8d0}
  .ins5-sec li.risk::before{background:#e0a23b}
  .ins5-sec li.risk.hi::before{background:#d22}
  .ins5-detail{color:var(--muted);font-size:12.5px;margin-top:3px;line-height:1.5}
  .ins5-detail-toggle{font-size:11px;color:var(--brand);cursor:pointer;user-select:none;margin-left:2px}
  .ins5-ref{color:var(--muted);font-size:12.5px;line-height:1.55}
  .ins5-ref b{color:var(--ink-2);font-weight:600}
  .ins5-ddi{display:flex;gap:8px;align-items:flex-start;border-radius:8px;padding:8px 10px;margin-bottom:8px;font-size:12.5px}
  .ins5-ddi .tier{font-weight:700;text-transform:uppercase;font-size:10px;letter-spacing:.04em}
  .ins5-ddi.contraindicated{background:#fbe3e3;border:1px solid #e88;border-left:4px solid #a00;color:#660d0d}
  .ins5-ddi.major{background:#fdecec;border:1px solid #f3b4b4;border-left:4px solid #d22;color:#7a1717}
  .ins5-ddi.moderate{background:#fef3e2;border:1px solid #f6d39a;border-left:4px solid #e0950c;color:#7a4e0a}
  /* A citation marker, not a tag: a fixed circle sized to the prose it sits in,
     so a paragraph with six of them reads as text with references rather than
     a row of chips. Brand tokens, not hex — dark mode then needs no override. */
  .ins5-cite{
    position:relative;display:inline-flex;align-items:center;justify-content:center;
    width:15px;height:15px;margin:0 1px 0 3px;vertical-align:middle;
    border-radius:50%;border:1px solid var(--brand-ring);
    background:var(--brand-soft);color:var(--brand-2);
    font-size:10px;font-weight:800;line-height:1;cursor:pointer;
    transition:background .12s ease,border-color .12s ease,color .12s ease;
  }
  .ins5-cite:hover{background:var(--brand-ring);border-color:var(--brand)}
  .ins5-cite:focus-visible{outline:2px solid var(--brand);outline-offset:1px}
  /* Filled while open. The popover gets pulled back inside the panel near the
     right edge, so it no longer lines up with its marker — the marker has to
     say which one it belongs to. */
  .ins5-cite.open{background:var(--brand-fill);border-color:var(--brand-fill);color:#fff}
  /* No citation data behind it (no tabindex, no popover) — don't offer a click. */
  .ins5-cite:not([tabindex]){background:transparent;border-color:var(--border-2,var(--border));color:var(--muted);cursor:default}
  .ins5-cite-label{display:block}
  .ins5-pop{position:absolute;left:0;top:calc(100% + 6px);width:260px;z-index:20;background:var(--card);border:1px solid var(--border);border-radius:10px;box-shadow:0 12px 30px rgba(15,23,42,.18);padding:10px;text-align:left;cursor:default;font-weight:400;display:none}
  /* PRE-325: click / keyboard only — no :hover opener. Hover-opening the
     popover inside the scrollable chat log added transient scroll overflow
     and flickered open/closed as content moved under the pointer, which
     made follow-up answers effectively unscrollable. */
  .ins5-cite:focus-visible .ins5-pop,.ins5-cite.open .ins5-pop{display:block}
  /* Rows were inline spans with no separator, so they ran together — "Urea201.3
     mg/dL", "mmol/LOTHER". Label left, value right, everything else on its own
     line, same shape as the lab tables elsewhere in the app. */
  .ins5-pop .item{display:flex;flex-wrap:wrap;align-items:baseline;gap:0 8px;padding:6px 0;border-top:1px solid var(--hairline)}
  .ins5-pop .item:first-of-type{border-top:0;padding-top:0}
  .ins5-pop .k{flex:1;min-width:0;font-size:11px;color:var(--muted)}
  .ins5-pop .v{font-size:14px;font-weight:650;color:var(--ink);white-space:nowrap}
  .ins5-pop .t{display:block;flex-basis:100%;font-size:10px;color:var(--muted);opacity:.85;margin-top:2px}
  .ins5-pop .ref{flex-basis:100%;font-size:10px;color:var(--muted);margin-top:1px}
  .ins5-pop svg{display:block;width:100%;height:26px;margin:6px 0}
  .ins5-flag{display:inline-flex;align-items:center;margin-left:6px;padding:2px 5px;border-radius:999px;border:1px solid;font-size:9px;font-weight:700;letter-spacing:.02em;text-transform:uppercase;vertical-align:2px}
  .ins5-flag.high,.ins5-flag.low{background:#fef3e2;color:#a15b08;border-color:#f6d39a}
  .ins5-flag.critical{background:#fdecec;color:#b51c1c;border-color:#f3b4b4}
  .ins5-flag.normal{background:#e7f7ec;color:#1a7f3c;border-color:#b6e6c5}
  .ins5-evidence{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:9px 12px;margin:-2px 0 10px}
  .ins5-evidence h4{margin:0 0 6px;font-size:11px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
  .ins5-ev-row{display:grid;grid-template-columns:auto 1fr;gap:8px;align-items:start;padding:5px 0;border-top:1px solid var(--hairline);font-size:12px;color:var(--ink-2);line-height:1.35}
  .ins5-ev-row:first-of-type{border-top:0}
  .ins5-ev-summary{min-width:0;color:var(--muted)}
  .ins5-chat{position:sticky;bottom:8px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius-2);box-shadow:var(--shadow-3,0 8px 24px rgba(0,0,0,.1));margin-top:14px}
  .ins5-chat-log{display:flex;flex-direction:column;gap:8px;padding:10px 12px;max-height:320px;overflow:auto}
  .ins5-chat-bar{display:flex;gap:6px;padding:8px 12px;border-top:1px solid var(--border)}
  .ins5-chat-bar input{flex:1;border:1px solid var(--border);border-radius:8px;padding:8px 11px;font-size:13px;background:var(--bg-soft)}

  /* Patient chat and Insights — patient-bound across single and multi-patient
     Bedside assignments. Multi-patient launchers live at the foot of each tile;
     the shared panel remains fixed so it cannot be clipped by a patient card. */
  /* Rides the identity band beside the acuity chip, so it sits with the
     patient it is bound to instead of floating at the foot of the panel. */
  .patient-tile-chat-launcher-row{display:inline-flex}
  .patient-tile-record-info-launcher{
    min-height:30px;padding:0 11px;border-radius:999px;
    display:inline-flex;align-items:center;gap:6px;
    background:var(--teal);color:#fff;font-size:11px;font-weight:800;
    border:1px solid color-mix(in srgb,var(--teal) 72%,#000);
    box-shadow:none;
  }
  .patient-tile-record-info-launcher:hover{filter:brightness(1.05);transform:translateY(-1px)}
  .patient-tile-record-info-launcher:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb,var(--teal) 24%,transparent)}
  .patient-tile-record-info-launcher svg{width:13px;height:13px}
  .patient-tile-chat-launcher{
    min-height:30px;padding:0 11px;border-radius:999px;
    display:inline-flex;align-items:center;gap:6px;
    background:var(--brand);color:#fff;font-size:11px;font-weight:800;
    border:1px solid color-mix(in srgb,var(--brand) 72%,#000);
    box-shadow:none;
  }
  .patient-tile-chat-launcher:hover{filter:brightness(1.05);transform:translateY(-1px)}
  .patient-tile-chat-launcher:focus-visible{box-shadow:0 0 0 3px var(--brand-ring)}
  .patient-tile-chat-launcher.active{background:var(--brand-2)}
  .patient-tile-chat-launcher svg{width:13px;height:13px}
  .patient-tile-chat-status{width:7px;height:7px;border-radius:50%;background:rgba(255,255,255,.55)}
  .patient-tile-chat-status.ready{background:#86efac;box-shadow:0 0 0 2px rgba(134,239,172,.2)}
  .patient-chat-global{
    position:fixed;right:20px;bottom:20px;z-index:90;
    display:flex;flex-direction:column;align-items:flex-end;gap:10px;
    pointer-events:none;
  }
  .patient-chat-global > *{pointer-events:auto}
  .patient-global-launchers{display:flex;align-items:center;justify-content:flex-end;gap:8px;pointer-events:auto}
  .record-info-launcher{
    min-height:46px;padding:0 16px;border-radius:999px;
    display:inline-flex;align-items:center;gap:9px;
    background:var(--teal);color:#fff;font-size:13px;font-weight:750;
    border:1px solid color-mix(in srgb,var(--teal) 72%,#000);
    box-shadow:0 10px 28px rgba(15,23,42,.22);
  }
  .record-info-launcher:hover{filter:brightness(1.05);transform:translateY(-1px)}
  .record-info-launcher svg{width:17px;height:17px}
  .patient-chat-launcher{
    min-height:46px;padding:0 16px;border-radius:999px;
    display:inline-flex;align-items:center;gap:9px;
    background:var(--brand-fill);color:#fff;font-size:13px;font-weight:750;
    border:1px solid color-mix(in srgb,var(--brand-fill) 72%,#000);
    box-shadow:0 10px 28px rgba(15,23,42,.22);
  }
  .patient-chat-launcher:hover{filter:brightness(1.05);transform:translateY(-1px)}
  .patient-chat-launcher svg{width:17px;height:17px}
  /* Drug-interaction count. Severity uses the same accent mapping as the
     finding cards so the badge and the report it opens agree on colour. A ring
     in the launcher's own fill keeps it legible against the brand pill. */
  .patient-chat-launcher-alert{
    min-width:21px;height:21px;padding:0 6px;border-radius:999px;
    display:inline-flex;align-items:center;justify-content:center;
    background:var(--interaction-accent,var(--crit));color:#fff;
    font-size:11px;font-weight:800;line-height:1;
    box-shadow:0 0 0 2px color-mix(in srgb,var(--brand) 72%,#000);
  }
  .patient-chat-launcher-alert.contraindicated{--interaction-accent:var(--crit)}
  .patient-chat-launcher-alert.major{--interaction-accent:var(--warn)}
  .patient-chat-launcher-alert.moderate{--interaction-accent:var(--brand-2,var(--brand))}
  /* The panel carries full assessments and generated reports, not one-line
     replies, so it is sized as a reading surface. min-height is clamped by the
     same viewport budget as height — otherwise a short window pushes the header
     off the top of the screen. */
  .patient-chat-panel{
    width:min(560px,calc(100vw - 24px));
    height:min(760px,calc(100vh - 108px));
    min-height:min(420px,calc(100vh - 108px));
    display:flex;flex-direction:column;overflow:hidden;
    background:var(--card);border:1px solid var(--border);border-radius:16px;
    box-shadow:0 18px 52px rgba(15,23,42,.24);
  }
  /* Expanded is for reading a long report without the panel becoming a modal:
     taller frame, same conversation. The extra width buys margin, not measure —
     the prose column is still capped so lines do not run 130 characters wide. */
  .patient-chat-panel.expanded{
    width:min(920px,calc(100vw - 24px));
    height:calc(100vh - 104px);
  }
  .patient-chat-panel.expanded .patient-chat-log{padding:18px 20px 20px}
  .patient-chat-panel.expanded .patient-chat-compose{padding:12px 20px 13px}
  .patient-chat-panel.expanded .patient-chat-msg.assistant{align-self:flex-start;max-width:min(100%,780px)}
  .patient-chat-panel.expanded .patient-chat-msg.user{max-width:min(88%,560px)}
  .patient-chat-head{
    padding:12px 14px;display:flex;align-items:center;gap:10px;
    border-bottom:1px solid var(--hairline);background:var(--card);
  }
  .patient-chat-head .grow{min-width:0}
  .patient-chat-head-icon{
    width:34px;height:34px;border-radius:10px;display:flex;align-items:center;justify-content:center;
    background:var(--brand-soft);color:var(--brand);flex:0 0 auto;
  }
  .patient-chat-head-icon svg{width:17px;height:17px}
  .patient-chat-title{font-size:13px;font-weight:750;color:var(--ink)}
  .patient-chat-patient{
    display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
    color:var(--muted);font-size:11px;margin-top:1px;
  }
  .patient-chat-head-actions{margin-left:auto;display:flex;align-items:center;gap:4px;flex:0 0 auto}
  .patient-chat-icon-btn{
    width:auto;height:34px;padding:0 9px;border-radius:8px;display:flex;align-items:center;justify-content:center;gap:5px;
    color:var(--muted);font-size:11px;font-weight:750;white-space:nowrap;
  }
  .patient-chat-icon-btn:hover{background:var(--bg-soft);color:var(--ink)}
  .patient-chat-icon-btn svg{width:15px;height:15px}
  .patient-chat-modes{
    display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-bottom:8px;
  }
  .patient-chat-mode{
    min-height:30px;padding:0 11px;border:1px solid var(--border);border-radius:999px;
    display:inline-flex;align-items:center;gap:6px;
    color:var(--ink-2);background:var(--card-2);font-size:11px;font-weight:750;
    transition:background .12s ease,border-color .12s ease,color .12s ease;
  }
  .patient-chat-mode:hover{border-color:var(--brand);background:var(--brand-soft);color:var(--brand-2)}
  .patient-chat-mode.active{border-color:var(--brand);background:var(--brand);color:#fff}
  .patient-chat-mode.active:hover{background:var(--brand-2);color:#fff}
  .patient-chat-mode:focus-visible{box-shadow:0 0 0 3px var(--brand-ring)}
  .patient-chat-mode:disabled{opacity:.6;cursor:not-allowed}
  .patient-chat-mode svg{width:13px;height:13px}
  .patient-chat-mode.busy svg{animation:patient-chat-spin 1.1s linear infinite}
  @keyframes patient-chat-spin{to{transform:rotate(360deg)}}
  @media (prefers-reduced-motion:reduce){.patient-chat-mode.busy svg{animation:none}}
  .patient-chat-scope{
    padding:7px 12px;background:var(--bg-soft);border-bottom:1px solid var(--hairline);
    color:var(--muted);font-size:10.5px;line-height:1.4;
  }
  .patient-chat-log{
    flex:1;min-height:0;overflow:auto;padding:14px 14px 16px;
    display:flex;flex-direction:column;gap:12px;overscroll-behavior:contain;
    scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--muted) 40%,transparent) transparent;
  }
  .patient-chat-log::-webkit-scrollbar{width:10px}
  .patient-chat-log::-webkit-scrollbar-thumb{
    border-radius:999px;border:3px solid transparent;background-clip:content-box;
    background-color:color-mix(in srgb,var(--muted) 34%,transparent);
  }
  .patient-chat-log::-webkit-scrollbar-thumb:hover{background-color:color-mix(in srgb,var(--muted) 55%,transparent)}
  .patient-chat-empty{
    margin:auto 2px;text-align:center;color:var(--muted);font-size:12px;line-height:1.55;
  }
  .patient-chat-empty-icon{
    width:40px;height:40px;margin:0 auto 9px;border-radius:12px;
    display:flex;align-items:center;justify-content:center;
    background:var(--brand-soft);color:var(--brand);
  }
  .patient-chat-empty-icon svg{width:19px;height:19px}
  .patient-chat-empty-title{
    display:block;margin-bottom:3px;color:var(--ink);font-size:13.5px;font-weight:750;
  }
  .patient-chat-empty-sub{display:block;max-width:290px;margin:0 auto}
  .patient-chat-suggestions{
    margin-top:14px;display:flex;flex-direction:column;gap:6px;text-align:left;
  }
  .patient-chat-suggestion{
    width:100%;padding:9px 11px;border:1px solid var(--border);border-radius:10px;
    display:flex;align-items:center;gap:8px;background:var(--card);
    color:var(--ink-2);font-size:12px;font-weight:600;line-height:1.35;text-align:left;
  }
  .patient-chat-suggestion:hover{border-color:var(--brand);background:var(--brand-soft);color:var(--brand-2)}
  .patient-chat-suggestion:focus-visible{box-shadow:0 0 0 3px var(--brand-ring)}
  .patient-chat-suggestion svg{width:13px;height:13px;flex:0 0 auto;opacity:.65}
  .patient-chat-msg{
    max-width:88%;padding:10px 13px;border-radius:13px;
    font-size:13px;line-height:1.55;overflow-wrap:anywhere;
  }
  .patient-chat-msg.user{
    align-self:flex-end;background:var(--brand);color:#fff;
    border-bottom-right-radius:4px;
  }
  .patient-chat-question{display:block;unicode-bidi:plaintext}
  .patient-chat-msg.assistant{
    align-self:stretch;max-width:100%;background:var(--bg-soft);color:var(--ink);
    border:1px solid var(--border);border-top-left-radius:4px;padding:11px 13px 12px;
  }
  .patient-chat-msg.assistant p{margin:0 0 8px}
  .patient-chat-msg.assistant p:last-child{margin-bottom:0}
  .patient-chat-msg.assistant ul,
  .patient-chat-msg.assistant ol{margin:7px 0;padding-left:18px}
  .patient-chat-msg.assistant li{margin-bottom:5px}
  .patient-chat-msg.assistant > :last-child{margin-bottom:0}
  /* Wide content (tables, code, long identifiers) scrolls inside its own box
     rather than stretching the bubble past the panel. */
  .patient-chat-msg.assistant table{max-width:100%}
  .patient-chat-msg.assistant pre{max-width:100%;overflow-x:auto}
  .patient-chat-msg.assistant code{overflow-wrap:anywhere}
  .patient-chat-msg.assistant.error{border-color:var(--crit-border);background:var(--crit-soft)}
  .patient-chat-action-label{display:inline-flex;align-items:center;gap:6px;font-weight:700}
  .patient-chat-action-label svg{width:13px;height:13px}
  .patient-chat-thinking{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-size:12px}
  .patient-chat-thinking i{
    width:5px;height:5px;border-radius:50%;background:currentColor;
    animation:patient-chat-dot 1.1s ease-in-out infinite;
  }
  .patient-chat-thinking i:nth-child(2){animation-delay:.16s}
  .patient-chat-thinking i:nth-child(3){animation-delay:.32s}
  @keyframes patient-chat-dot{0%,80%,100%{opacity:.28;transform:translateY(0)}40%{opacity:.9;transform:translateY(-2px)}}
  @media (prefers-reduced-motion:reduce){
    .patient-chat-thinking i{animation:none;opacity:.5}
  }
  /* Insights sections are cards on the Insights page, but inside a chat bubble
     that card chrome is a box drawn inside a box — three borders deep once the
     panel frame is counted, and each one eats reading width. In chat they become
     plain sections separated by a rule. */
  .patient-chat-msg.assistant .ins5-sec{
    margin:13px 0 0;padding:12px 0 0;background:none;
    border:0;border-top:1px solid var(--hairline);border-radius:0;
  }
  .patient-chat-msg.assistant .ins5-sec:first-child{margin-top:0;padding-top:0;border-top:0}
  .patient-chat-msg.assistant .ins5-sec h4,
  .patient-chat-msg.assistant .ins5-evidence h4{margin:0 0 8px;font-size:10.5px;letter-spacing:.06em}
  .patient-chat-msg.assistant .ins5-sec li{margin:8px 0;font-size:13px;line-height:1.55}
  .patient-chat-msg.assistant .ins5-sec li:first-child{margin-top:0}
  .patient-chat-msg.assistant .ins5-sec li:last-child{margin-bottom:0}
  .patient-chat-msg.assistant .ins5-hero{
    margin:0 0 2px;padding:12px 13px;border-radius:11px;
  }
  .patient-chat-msg.assistant .ins5-evidence{
    margin:13px 0 0;padding:12px 0 0;background:none;
    border:0;border-top:1px solid var(--hairline);border-radius:0;
  }
  .patient-chat-msg.assistant .ins5-lead{font-size:13.5px;line-height:1.5}
  .patient-chat-msg.assistant .ins5-pdetail,
  .patient-chat-msg.assistant .ins5-detail,
  .patient-chat-msg.assistant .ins5-ref{font-size:12.5px;line-height:1.55}
  .patient-chat-msg.assistant .ins5-ddi{margin:0 0 9px;font-size:12.5px;line-height:1.5}
  .patient-chat-role{
    display:block;margin-bottom:4px;font-size:9px;font-weight:750;
    letter-spacing:.06em;text-transform:uppercase;opacity:.68;
  }
  .patient-chat-compose{border-top:1px solid var(--hairline);padding:10px 13px 11px;background:var(--card)}
  .patient-chat-form{display:flex;align-items:flex-end;gap:7px}
  .patient-chat-form textarea{
    flex:1;min-width:0;max-height:120px;resize:none;padding:10px 11px;
    border:1px solid var(--border);border-radius:10px;background:var(--bg-soft);
    color:var(--ink);font-size:13px;line-height:1.45;
  }
  .patient-chat-form textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-ring)}
  .patient-chat-form textarea:disabled{cursor:not-allowed;opacity:.66}
  .patient-chat-send{
    width:38px;height:38px;border-radius:10px;display:flex;align-items:center;justify-content:center;
    background:var(--brand);color:#fff;flex:0 0 auto;
  }
  .patient-chat-send:disabled{opacity:.55;cursor:not-allowed}
  .patient-chat-send svg{width:16px;height:16px}
  .patient-chat-voice{
    width:38px;height:38px;border-radius:10px;display:flex;align-items:center;justify-content:center;
    flex:0 0 auto;border:1px solid var(--border);background:var(--card-2);color:var(--brand);
    transition:background .12s ease,border-color .12s ease,color .12s ease;
  }
  .patient-chat-voice:hover{border-color:var(--brand);background:var(--brand-soft)}
  .patient-chat-voice:focus-visible{box-shadow:0 0 0 3px var(--brand-ring)}
  .patient-chat-voice:disabled{opacity:.55;cursor:not-allowed}
  .patient-chat-voice svg{width:16px;height:16px}
  .patient-chat-voice.recording{
    border-color:var(--crit);background:var(--crit);color:#fff;
    animation:patient-chat-voice-pulse 1.35s ease-in-out infinite;
  }
  .patient-chat-voice.transcribing svg{animation:patient-chat-spin 1.1s linear infinite}
  @keyframes patient-chat-voice-pulse{
    0%,100%{box-shadow:0 0 0 0 color-mix(in srgb,var(--crit) 30%,transparent)}
    50%{box-shadow:0 0 0 6px transparent}
  }
  @media (prefers-reduced-motion:reduce){
    .patient-chat-voice.recording,.patient-chat-voice.transcribing svg{animation:none}
  }
  .patient-chat-voice-status{
    min-height:15px;margin-top:6px;color:var(--muted);font-size:10px;line-height:1.4;text-align:center;
  }
  .patient-chat-voice-status.error{color:var(--crit)}
  .patient-chat-voice-status.ready{color:var(--ok)}
  .patient-chat-foot{margin-top:6px;color:var(--faint);font-size:9.5px;text-align:center}
  /* Insights and Interactions answer inside the conversation, so their toolbar
     is a meta row at the top of the assistant bubble rather than a panel chrome. */
  .patient-chat-insights-toolbar{
    display:flex;align-items:center;gap:8px;min-height:30px;
    margin-bottom:8px;padding-bottom:7px;border-bottom:1px solid var(--hairline);
  }
  .patient-chat-insights-updated{
    min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
    color:var(--muted);font-size:10.5px;
  }
  .patient-chat-insights-actions{margin-left:auto;display:flex;gap:4px}
  .patient-chat-insights-action{
    min-height:30px;padding:0 9px;border:1px solid var(--border);border-radius:8px;
    display:inline-flex;align-items:center;gap:5px;background:var(--card-2);
    color:var(--ink-2);font-size:10px;font-weight:800;
  }
  .patient-chat-insights-action:hover{border-color:var(--brand);color:var(--brand-2)}
  .patient-chat-insights-action:focus-visible{box-shadow:0 0 0 3px var(--brand-ring)}
  .patient-chat-insights-action:disabled{opacity:.6;cursor:not-allowed}
  .patient-chat-insights-action svg{width:13px;height:13px}
  .patient-chat-insights-body > :last-child,
  .patient-chat-interactions-body > :last-child{margin-bottom:0}
  /* Answer actions sit under the answer, sharing the toolbar pill style. The
     rule above them separates action from content without adding a card edge. */
  .patient-chat-actions{
    display:flex;flex-wrap:wrap;gap:4px;
    margin-top:10px;padding-top:8px;border-top:1px solid var(--hairline);
  }
  .patient-chat-answer > :last-child{margin-bottom:0}
  .patient-chat-retrieval{
    margin-top:10px;padding:7px 9px;border:1px solid var(--hairline);border-radius:8px;
    background:color-mix(in srgb,var(--card-2) 78%,transparent);color:var(--muted);
    font-size:10px;line-height:1.45;
  }
  .patient-chat-retrieval summary{
    display:flex;align-items:center;flex-wrap:wrap;gap:5px 8px;cursor:pointer;
    color:var(--muted);font-weight:700;list-style-position:inside;
  }
  .patient-chat-retrieval-mode{color:var(--ink-2)}
  .patient-chat-retrieval-body{display:grid;gap:4px;margin-top:7px;padding-top:7px;border-top:1px solid var(--hairline)}
  .patient-chat-retrieval-body strong{color:var(--ink-2)}
  .patient-chat-retrieval.has-unavailable{border-color:color-mix(in srgb,var(--crit) 40%,var(--border))}
  .patient-chat-retrieval-warning,.patient-chat-retrieval-warning strong{color:var(--crit)}
  .patient-chat-cache{
    margin-top:7px;color:var(--muted);font-size:9.5px;font-weight:700;letter-spacing:.01em;
  }
  /* A chat answer is raw markdown→HTML with no .report-markdown wrapper, so its
     headings would fall back to browser defaults (a 32px h1 in a 560px panel).
     Markdown typography is therefore scoped to the bubble, and the report body
     only overrides its own padding and measure. */
  .patient-chat-msg.assistant h1{font-size:15px;margin:16px 0 8px;font-weight:600}
  .patient-chat-msg.assistant h2{font-size:14px;margin:15px 0 7px;font-weight:600;color:var(--ink-2)}
  .patient-chat-msg.assistant h3{font-size:11px;margin:14px 0 6px;font-weight:700;color:var(--ink-2);letter-spacing:.05em;text-transform:uppercase}
  .patient-chat-msg.assistant h4{font-size:12.5px;margin:12px 0 5px;font-weight:600}
  .patient-chat-msg.assistant .patient-chat-role + *,
  .patient-chat-msg.assistant .report-markdown > :first-child{margin-top:0}
  /* Report tables default to nowrap for the full-width Reports page. In a chat
     column that silently pushes the last columns out of sight, so here cells
     wrap instead, and the horizontal scrollbar stays visible for the rare table
     still too wide to fit. */
  .patient-chat-msg.assistant .md-table-wrap{
    max-width:100%;overflow-x:auto;margin:2px 0 11px;
    border:1px solid var(--hairline);border-radius:var(--radius-2);
    scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--muted) 40%,transparent) transparent;
  }
  .patient-chat-msg.assistant .md-table-wrap::-webkit-scrollbar{height:8px}
  .patient-chat-msg.assistant .md-table-wrap::-webkit-scrollbar-thumb{
    border-radius:999px;background-color:color-mix(in srgb,var(--muted) 34%,transparent);
  }
  .patient-chat-msg.assistant .md-table{border-collapse:collapse;width:100%;margin:0;font-size:12px}
  .patient-chat-msg.assistant .md-table th,
  .patient-chat-msg.assistant .md-table td{
    padding:7px 10px;text-align:left;vertical-align:top;
    border-bottom:1px solid var(--hairline);white-space:normal;
    /* the bubble's overflow-wrap:anywhere would otherwise split drug names
       mid-word to squeeze a column; cells wrap at spaces or not at all */
    overflow-wrap:normal;word-break:normal;
  }
  /* The bubble is already --bg-soft, so the page's --bg-soft header row would be
     invisible here; tint off the ink colour instead so it works on either. */
  .patient-chat-msg.assistant .md-table th{
    background:color-mix(in srgb,var(--ink) 7%,transparent);color:var(--muted);
    font-weight:800;font-size:10px;letter-spacing:.04em;text-transform:uppercase;
  }
  .patient-chat-msg.assistant .md-table tbody tr:nth-child(even){background:color-mix(in srgb,var(--ink) 4%,transparent)}
  .patient-chat-msg.assistant .md-table tbody tr:last-child td{border-bottom:0}
  .patient-chat-msg.assistant .md-table tbody td:first-child{font-weight:650;color:var(--ink)}
  .patient-chat-interactions-body .report-markdown{padding:0;font-size:13px;line-height:1.6}
  .patient-chat-interactions-body .report-markdown p{margin:0 0 9px}
  .patient-chat-interactions-body .report-markdown li{margin-bottom:5px}
  .interaction-register{display:grid;gap:9px}
  .interaction-register-head{
    position:relative;overflow:hidden;display:grid;
    grid-template-columns:34px minmax(0,1fr);align-items:center;column-gap:10px;row-gap:7px;
    min-height:58px;padding:10px 12px;border:1px solid var(--border);
    border-radius:13px;background:
      radial-gradient(circle at 94% 5%,color-mix(in srgb,var(--brand) 13%,transparent),transparent 42%),
      linear-gradient(145deg,var(--card),var(--card-2));
  }
  .interaction-register-icon{
    width:34px;height:34px;flex:0 0 auto;display:grid;place-items:center;
    border:1px solid color-mix(in srgb,var(--brand) 25%,var(--border));
    border-radius:10px;background:var(--brand-soft);color:var(--brand);
    box-shadow:inset 0 1px 0 color-mix(in srgb,#fff 55%,transparent);
  }
  .interaction-register-icon svg{width:17px;height:17px}
  .interaction-register-copy{min-width:0;display:grid;gap:2px}
  .interaction-register-title{font-size:13.5px;font-weight:800;color:var(--ink)}
  .interaction-register-subtitle{font-size:10.5px;line-height:1.35;color:var(--muted)}
  .interaction-register-counts{
    grid-column:2;display:flex;flex-wrap:wrap;justify-content:flex-start;gap:4px;
  }
  .interaction-count{
    padding:4px 7px;border:1px solid var(--border);border-radius:999px;
    background:color-mix(in srgb,var(--card) 82%,transparent);
    color:var(--muted);font-size:9.5px;font-weight:800;white-space:nowrap;
  }
  .interaction-count.contraindicated{border-color:var(--crit-border);background:var(--crit-soft);color:var(--crit)}
  .interaction-count.major{border-color:var(--warn-border);background:var(--warn-soft);color:var(--warn)}
  .interaction-finding{
    --interaction-accent:var(--brand);
    position:relative;overflow:hidden;padding:11px 12px 11px 15px;
    border:1px solid var(--border);border-radius:13px;background:var(--card);
    box-shadow:0 1px 2px color-mix(in srgb,var(--ink) 5%,transparent);
  }
  .interaction-finding::before{
    content:"";position:absolute;inset:0 auto 0 0;width:3px;background:var(--interaction-accent);
  }
  .interaction-finding--contraindicated{--interaction-accent:var(--crit)}
  .interaction-finding--major{--interaction-accent:var(--warn)}
  .interaction-finding--moderate{--interaction-accent:var(--brand)}
  .interaction-finding-head{
    display:flex;align-items:center;gap:7px;margin:0 0 7px;min-width:0;
  }
  .interaction-category{
    min-width:0;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
    color:var(--muted);font-size:9.5px;font-weight:800;
    letter-spacing:.055em;text-transform:uppercase;
  }
  .interaction-severity{
    margin-left:auto;flex:0 0 auto;padding:3px 7px;border-radius:999px;
    border:1px solid color-mix(in srgb,var(--interaction-accent) 35%,var(--border));
    background:color-mix(in srgb,var(--interaction-accent) 10%,var(--card));
    color:var(--interaction-accent);font-size:9px;font-weight:850;letter-spacing:.02em;
  }
  .interaction-pair{
    display:flex;align-items:center;flex-wrap:wrap;gap:6px;
    color:var(--ink);font-size:13px;font-weight:750;line-height:1.4;
  }
  .interaction-plus{
    width:18px;height:18px;display:grid;place-items:center;flex:0 0 auto;
    border-radius:6px;background:color-mix(in srgb,var(--interaction-accent) 11%,var(--card));
    color:var(--interaction-accent);font-size:12px;font-weight:900;
  }
  .interaction-detail{
    margin-top:7px;padding-top:7px;border-top:1px solid var(--hairline);
    color:var(--ink-2);font-size:11.5px;line-height:1.55;
  }
  .interaction-detail-label{
    color:var(--muted);font-size:9.5px;font-weight:800;
    letter-spacing:.045em;text-transform:uppercase;
  }
  .interaction-register-status{
    display:flex;align-items:center;gap:10px;padding:13px;
    border:1px solid var(--border);border-radius:13px;background:var(--card-2);
    color:var(--muted);font-size:12px;line-height:1.45;
  }
  .interaction-register-status-icon{
    width:32px;height:32px;flex:0 0 auto;display:grid;place-items:center;
    border-radius:10px;background:var(--brand-soft);color:var(--brand);
  }
  .interaction-register-status-icon svg{width:16px;height:16px}
  .patient-chat-insights-empty{
    padding:10px 4px;display:flex;flex-direction:column;align-items:center;
    justify-content:center;gap:8px;text-align:center;color:var(--muted);
    font-size:12px;line-height:1.5;
  }
  .patient-chat-insights-empty-title{color:var(--ink);font-size:13px;font-weight:750}
  .patient-chat-insights-empty span{max-width:280px}
  .patient-chat-insights-empty .patient-chat-insights-action{
    margin-top:2px;min-height:32px;padding:0 13px;
    background:var(--brand);border-color:var(--brand);color:#fff;font-size:10.5px;
  }
  .patient-chat-insights-empty .patient-chat-insights-action:hover{background:var(--brand-2);color:#fff}
  @media (max-width:780px){
    .patient-chat-global{right:12px;bottom:76px}
    .patient-chat-panel,
    .patient-chat-panel.expanded{
      width:min(560px,calc(100vw - 24px));
      height:min(640px,calc(100vh - 150px));
      min-height:min(360px,calc(100vh - 150px));
    }
    /* Expanded and default are the same size here, so the control would be a
       button that visibly does nothing. */
    .patient-chat-expand-btn{display:none}
  }
  @media (max-width:520px){
    .patient-chat-global{left:12px;right:12px;align-items:stretch}
    .patient-chat-panel,
    .patient-chat-panel.expanded{width:100%}
    .patient-chat-launcher{align-self:flex-end}
    .patient-chat-launcher-label{display:none}
    .patient-chat-launcher{width:48px;padding:0;justify-content:center}
    .patient-global-launchers{align-self:flex-end}
    .record-info-launcher{min-height:48px}
    .record-info-launcher span{display:inline}
    .patient-tile-record-info-launcher{min-height:44px}
    .patient-tile-chat-launcher{min-height:44px}
  }
  /* Short windows (laptop with browser chrome, split screen): the reading
     surface is height-bound, so give back the vertical padding first. */
  @media (max-height:620px){
    .patient-chat-log{padding:11px 12px 12px;gap:10px}
    .patient-chat-scope{display:none}
  }

  /* LLM-rendered report bodies (Wave 1 reports). The markdown→HTML pass
     emits standard h1-h4, ul/ol/li, p, strong/em, code; this just gives
     them a comfortable reading column inside the existing report card. */
  .report-markdown{padding:14px 18px;font-size:13.5px;line-height:1.55;color:var(--ink)}
  .report-markdown h1{font-size:16px;margin:18px 0 8px;font-weight:600}
  .report-markdown h2{font-size:15px;margin:16px 0 8px;font-weight:600;color:var(--ink-2)}
  .report-markdown h3{font-size:13.5px;margin:14px 0 6px;font-weight:600;color:var(--ink-2);letter-spacing:.02em;text-transform:uppercase}
  .report-markdown h4{font-size:13px;margin:12px 0 6px;font-weight:600}
  .report-markdown p{margin:0 0 10px}
  .report-markdown ul,.report-markdown ol{margin:0 0 10px;padding-left:22px}
  .report-markdown li{margin-bottom:4px}
  .report-markdown code{background:var(--bg-soft);padding:1px 4px;border-radius:4px;font-size:12px}
  .report-markdown strong{font-weight:600;color:var(--ink)}
  .report-markdown .md-table-wrap{overflow-x:auto;margin:2px 0 12px;border:1px solid var(--hairline);border-radius:var(--radius-2)}
  .report-markdown .md-table{border-collapse:collapse;width:100%;font-size:12.5px;margin:0}
  .report-markdown .md-table th,.report-markdown .md-table td{padding:8px 12px;text-align:left;vertical-align:top;white-space:nowrap;border-bottom:1px solid var(--hairline)}
  .report-markdown .md-table tbody tr:last-child td{border-bottom:0}
  .report-markdown .md-table th{background:var(--bg-soft);font-weight:800;color:var(--muted);text-transform:uppercase;font-size:10px;letter-spacing:.04em}
  .report-markdown .md-table tbody tr:nth-child(even){background:var(--bg-soft)}
  .report-markdown .md-table tbody td:first-child{font-weight:650;color:var(--ink)}
  /* The flow-sheet source action is a glanceable bedside brief, not a document.
     Keep its three short sections visually tight in both the inline source panel
     and the full Reports route. */
  .report-card--monitoring .report-markdown{padding:10px 14px;line-height:1.48}
  .report-card--monitoring .report-markdown h3{margin:10px 0 4px;font-size:11px;letter-spacing:.055em}
  .report-card--monitoring .report-markdown h3:first-child{margin-top:0}
  .report-card--monitoring .report-markdown ul{margin-bottom:7px;padding-left:19px}
  .report-card--monitoring .report-markdown li{margin-bottom:2px}
  .source-summary-inline-body > .report-card--monitoring .report-markdown{padding:0}
  /* Discharge summary — single-column document, patient-ID grid, notes (PRE-308) */
  .discharge-sections--single{display:block;padding:20px 24px 22px}
  .ptid-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px 18px;padding:14px 16px;background:var(--bg-soft);border:1px solid var(--hairline);border-radius:var(--radius-2)}
  .ptid-item{min-width:0}
  .ptid-k{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
  .ptid-v{margin-top:4px;font-size:13.5px;font-weight:700;color:var(--ink);word-break:break-word}
  .dnotes-optional{font-size:11px;color:var(--muted);font-style:italic}
  .dnotes-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:8px}
  .dnotes-lang{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);display:inline-flex;align-items:center;gap:6px}
  .dnotes-select{font:inherit;font-size:12px;padding:4px 8px;border:1px solid var(--border);background:var(--card);color:var(--ink)}
  .dnotes-mic.rec{border-color:var(--crit-border,var(--crit));background:var(--crit-soft);color:var(--crit)}
  .dnotes-text{width:100%;box-sizing:border-box;font:inherit;font-size:13px;line-height:1.5;padding:10px 12px;border:1px solid var(--border);background:var(--card);color:var(--ink);resize:vertical;min-height:88px}
  @media(max-width:640px){.ptid-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
  .lab-patient-block{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:14px}
  @media(max-width:640px){.lab-patient-block{grid-template-columns:repeat(2,minmax(0,1fr))}}
  .lab-report-summary{padding:14px 18px 18px;color:var(--ink)}
  .lab-summary-brief{border:1px solid var(--border);border-radius:14px;background:var(--card);padding:16px 18px;box-shadow:var(--shadow-1)}
  .lab-summary-kicker{display:inline-flex;align-items:center;gap:7px;font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.12em;color:var(--muted)}
  .lab-summary-kicker::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}
  .lab-summary-title{font-size:20px;font-weight:850;line-height:1.15;letter-spacing:-.015em;color:var(--ink);margin-top:4px}
  .lab-summary-sub{font-size:11.5px;color:var(--muted);margin-top:3px}
  .lab-summary-copy{padding:10px 0 0;font-size:13.5px;line-height:1.5}
  .lab-summary-copy h1,.lab-summary-copy h2,.lab-summary-copy h3{margin:12px 0 5px;font-size:12px;font-weight:800;letter-spacing:.045em;text-transform:uppercase;color:var(--ink-2)}
  .lab-summary-copy h1:first-child,.lab-summary-copy h2:first-child,.lab-summary-copy h3:first-child{margin-top:4px}
  .lab-summary-copy p{margin:0 0 7px}
  .lab-summary-copy ul,.lab-summary-copy ol{margin:0 0 8px;padding-left:20px}
  .lab-summary-copy li{margin-bottom:3px}
  .lab-summary-copy strong{font-weight:750;color:var(--ink)}
  .lab-summary-verify{margin-top:10px;padding-top:9px;border-top:1px solid var(--hairline);font-size:10.5px;color:var(--muted)}
  .report-stream-section{
    border-top:1px solid var(--hairline);
    padding:8px 18px 4px;
  }
  .report-stream-section:first-child{border-top:0}
  .report-stream-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:12px 0 4px}
  .report-stream-head h4{margin:0;font-size:13.5px;color:var(--ink);font-weight:700}
  .report-section-label{
    display:inline-flex;align-items:center;gap:4px;
    border:1px solid var(--border);border-radius:999px;
    padding:2px 7px;font-size:10px;font-weight:700;letter-spacing:.03em;
    text-transform:uppercase;color:var(--muted);background:var(--bg-soft);
  }
  .report-section-label[data-type="ai"]{color:var(--purple);background:rgba(124,58,237,.10);border-color:rgba(124,58,237,.24)}
  .report-section-label[data-type="degraded"]{color:var(--warn);background:var(--warn-soft);border-color:var(--warn-border)}
  .report-section-label[data-type="static"]{color:var(--ok);background:var(--ok-soft);border-color:var(--ok-border)}
  .report-stream-body.report-degraded .report-markdown{color:var(--muted);font-style:italic}
  .report-card--discharge .report-stream-section{padding-top:10px;padding-bottom:8px}
  .report-card--discharge .report-markdown{font-size:13.8px;line-height:1.62}
  .report-card--discharge .report-markdown h2{font-size:16px;color:var(--ink);border-bottom:1px solid var(--hairline);padding-bottom:5px}
  .report-card--discharge .report-markdown ul,.report-card--discharge .report-markdown ol{padding-left:24px}
  .discharge-report-shell{padding:16px}
  .discharge-document{background:var(--card);border:1px solid var(--border);border-top:3px solid var(--brand);border-radius:var(--radius-3);overflow:hidden;box-shadow:var(--shadow-1);color:var(--ink)}
  .discharge-doc-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;border-bottom:1px solid var(--border);padding:20px 24px 16px;background:radial-gradient(140% 200% at 0% 0%,var(--brand-soft),transparent 60%),var(--card)}
  .discharge-doc-title{font-size:22px;font-weight:850;line-height:1.1;color:var(--ink)}
  .discharge-doc-subtitle{margin-top:5px;font-size:12.5px;color:var(--muted)}
  .discharge-meta-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding:12px 20px;border-bottom:1px solid var(--hairline)}
  .discharge-meta-item{min-width:0}
  .discharge-meta-item .k{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
  .discharge-meta-item .v{margin-top:3px;font-size:13px;font-weight:750;color:var(--ink);word-break:break-word}
  .discharge-readiness-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding:12px 20px;background:var(--bg-soft);border-bottom:1px solid var(--hairline)}
  .discharge-status-tile{border:1px solid var(--border);background:var(--card);padding:9px 10px;min-height:58px}
  .discharge-status-tile .k{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
  .discharge-status-tile .v{margin-top:5px;font-size:15px;font-weight:850;color:var(--ink)}
  .discharge-status-tile[data-state="warn"]{border-color:var(--warn-border);background:var(--warn-soft)}
  .discharge-status-tile[data-state="bad"]{border-color:var(--crit-border);background:var(--crit-soft)}
  .discharge-status-tile[data-state="ok"]{border-color:var(--ok-border);background:var(--ok-soft)}
  .discharge-body-grid{display:grid;grid-template-columns:minmax(0,1fr) 220px;gap:16px;padding:18px 20px 22px}
  .discharge-sections{min-width:0}
  .discharge-review-rail{position:sticky;top:82px;align-self:start;border-left:1px solid var(--hairline);padding-left:12px}
  .discharge-rail-title{font-size:10px;font-weight:850;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-bottom:8px}
  .discharge-rail-list{display:flex;flex-direction:column;gap:6px}
  .discharge-rail-item{display:grid;grid-template-columns:1fr auto;gap:6px;align-items:center;border:1px solid var(--border);background:var(--bg-soft);padding:7px 8px;font-size:11px;color:var(--ink-2)}
  .discharge-rail-item[data-type="ai"]{border-color:rgba(124,58,237,.24);background:rgba(124,58,237,.08)}
  .discharge-rail-item[data-type="degraded"]{border-color:var(--warn-border);background:var(--warn-soft)}
  .discharge-doc-section{padding:0 0 18px;margin:0 0 18px;border-bottom:1px solid var(--hairline);break-inside:avoid}
  .discharge-doc-section:last-child{border-bottom:0;margin-bottom:0;padding-bottom:0}
  .discharge-section-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}
  .discharge-section-head h4{margin:0;font-size:14px;font-weight:800;color:var(--brand);letter-spacing:.02em;text-transform:uppercase;position:relative;padding-left:12px}
  .discharge-section-head h4::before{content:"";position:absolute;left:0;top:0;bottom:1px;width:3px;border-radius:2px;background:var(--brand)}
  .discharge-section-body .report-markdown{padding:0;font-size:13.8px;line-height:1.6;color:var(--ink)}
  .discharge-section-body .report-markdown p{margin:0 0 8px}
  .discharge-section-body .report-markdown p:last-child{margin-bottom:0}
  .discharge-section-body .report-markdown ul,.discharge-section-body .report-markdown ol{margin:0 0 8px;padding-left:20px}
  .discharge-section-body .report-markdown li{margin-bottom:5px}
  .discharge-section-body .report-markdown b,.discharge-section-body .report-markdown strong{color:var(--ink)}
  .discharge-highlight{border-left:4px solid var(--ok);background:var(--ok-soft);padding:10px 12px;margin-bottom:10px}
  .discharge-pending{border-left:4px solid var(--warn);background:var(--warn-soft);padding:10px 12px;margin-bottom:10px}
  .discharge-signoff{border:1px solid var(--border);background:var(--bg-soft);padding:14px;margin-top:10px}
  .discharge-sign-lines{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:14px}
  .discharge-sign-line{border-top:1px solid var(--border-2);padding-top:6px;font-size:11px;color:var(--muted)}
  /* Per-section edit controls. Recessive until the section is hovered or being
     edited — the document has to read as a document, not as a form. */
  .dsec-actions{display:inline-flex;align-items:center;gap:6px;margin-left:auto;flex:none}
  .dsec-btn{
    border:1px solid var(--border);background:var(--card);color:var(--muted);
    border-radius:6px;padding:2px 9px;font-size:11px;font-weight:750;cursor:pointer;
    opacity:0;transition:opacity .12s ease,color .12s ease,border-color .12s ease;
  }
  .dsec-btn:hover{color:var(--ink);border-color:var(--border-2)}
  .dsec-btn.primary{border-color:var(--brand);color:var(--brand)}
  .discharge-doc-section:hover .dsec-btn,.discharge-doc-section:focus-within .dsec-btn{opacity:1}
  .discharge-doc-section[data-editing="1"] .dsec-btn{opacity:1}
  .dsec-chip{
    border:1px solid var(--warn-border);background:var(--warn-soft);color:var(--muted);
    border-radius:999px;padding:1px 8px;font-size:9.5px;font-weight:850;
    letter-spacing:.05em;text-transform:uppercase;
  }
  .discharge-section-body[contenteditable="true"]{
    outline:2px solid var(--brand);outline-offset:8px;border-radius:4px;
  }
  .discharge-section-body[contenteditable="true"] .md-table td{cursor:text}
  .discharge-signoff h5{margin:0 0 4px;font-size:12px;font-weight:850;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
  .discharge-signoff .signoff-note{font-size:11.5px;line-height:1.5;color:var(--muted)}
  /* Document header: the identifiers a discharge summary is filed and audited
     by (MRN, admitted, generated) sit opposite the title, with a status chip
     so an unsigned draft can never be mistaken for a signed document. */
  .discharge-doc-ident{display:flex;flex-direction:column;gap:4px;align-items:flex-end;text-align:right;min-width:0}
  .discharge-doc-chip{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--warn-border);background:var(--warn-soft);color:var(--warn-ink,var(--ink));border-radius:999px;padding:2px 9px;font-size:10px;font-weight:850;letter-spacing:.06em;text-transform:uppercase}
  .discharge-doc-idlist{display:grid;grid-template-columns:auto auto;gap:2px 10px;font-size:11.5px;color:var(--muted)}
  .discharge-doc-idlist dt{font-weight:700;letter-spacing:.02em}
  .discharge-doc-idlist dd{margin:0;color:var(--ink);font-weight:700;font-variant-numeric:tabular-nums}
  /* Stay trend: small multiples, one metric per sparkline. Different scales
     never share an axis, so each metric gets its own plot; the row's start →
     end values are labelled and the table above carries every number. */
  .discharge-trend{margin-top:12px;border-top:1px solid var(--hairline);padding-top:10px}
  .discharge-trend-title{font-size:10px;font-weight:850;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-bottom:8px}
  .discharge-trend-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(155px,1fr));gap:12px 16px}
  .dtrend{min-width:0}
  .dtrend-k{font-size:10.5px;font-weight:800;letter-spacing:.03em;text-transform:uppercase;color:var(--muted)}
  /* Ink comes from the chart kit's per-parameter class; --brand is the fallback
     for a spark with no parameter. */
  .dtrend-spark{margin:3px 0 2px;height:26px;color:var(--ck-ink,var(--brand))}
  .dtrend-spark svg{display:block;width:100%;height:26px;overflow:visible}
  .dtrend-spark .trace{fill:none;stroke:currentColor;stroke-width:1.6;stroke-linejoin:round;stroke-linecap:round}
  .dtrend-spark .dot{fill:currentColor;stroke:var(--card);stroke-width:2}
  .dtrend-v{font-size:11.5px;color:var(--ink-2);font-variant-numeric:tabular-nums}
  .dtrend-v .to{color:var(--ink);font-weight:750}
  @media(max-width:900px){.discharge-body-grid{grid-template-columns:1fr}.discharge-review-rail{position:static;border-left:0;border-top:1px solid var(--hairline);padding-left:0;padding-top:12px}.discharge-meta-grid,.discharge-readiness-strip{grid-template-columns:repeat(2,minmax(0,1fr))}}
  @media(max-width:560px){.discharge-doc-head{flex-direction:column}.discharge-doc-ident{align-items:flex-start;text-align:left}.discharge-meta-grid,.discharge-readiness-strip{grid-template-columns:1fr}.discharge-report-shell{padding:8px}.discharge-body-grid{padding:14px}.discharge-sign-lines{grid-template-columns:1fr}}
  /* PRE-308 document palette (doc-scoped vars): white paper in light mode,
     charcoal document in dark mode. Print re-forces the light values below so
     the exported PDF is always a white clinical document. */
  .discharge-document{
    --doc-bg:#ffffff; --doc-soft:#f8fafc; --doc-soft-2:#f1f5f9;
    --doc-ink:#1c2a3f; --doc-strong:#0f172a; --doc-muted:#64748b;
    --doc-border:#d9e1ec; --doc-line:#e8eef6; --doc-th-ink:#475569;
    --doc-accent:#007AFF; --doc-accent-ink:#0b62d6;
    --doc-input-border:#cbd5e1; --doc-ph:#94a3b8; --doc-shadow:rgba(15,23,42,.16);
    background:var(--doc-bg);border:1px solid var(--doc-border);border-top:3px solid var(--doc-accent);color:var(--doc-ink);box-shadow:0 12px 32px var(--doc-shadow)
  }
  :root[data-theme="dark"] .discharge-document{
    --doc-bg:#1a1a1d; --doc-soft:#202024; --doc-soft-2:#26262b;
    --doc-ink:#d6d6db; --doc-strong:#f4f4f6; --doc-muted:#9aa1ad;
    --doc-border:#2c2c33; --doc-line:#26262b; --doc-th-ink:#a6adba;
    --doc-accent:#007AFF; --doc-accent-ink:#6ea8ff;
    --doc-input-border:#3a3a42; --doc-ph:#6f7683; --doc-shadow:rgba(0,0,0,.55)
  }
  .discharge-doc-head{background:linear-gradient(180deg,var(--doc-soft),var(--doc-bg));border-bottom:1px solid var(--doc-border)}
  .discharge-doc-title{color:var(--doc-strong)}
  .discharge-doc-subtitle{color:var(--doc-muted)}
  .discharge-doc-section{border-bottom:1px solid var(--doc-line)}
  .discharge-section-head h4{color:var(--doc-accent-ink)}
  .discharge-section-head h4::before{background:var(--doc-accent)}
  .discharge-section-body .report-markdown{color:var(--doc-ink)}
  .discharge-section-body .report-markdown b,.discharge-section-body .report-markdown strong{color:var(--doc-strong)}
  .discharge-section-body.report-degraded .report-markdown{color:var(--doc-muted)}
  .discharge-document .report-markdown .md-table-wrap{border:1px solid var(--doc-border);border-radius:8px}
  .discharge-document .report-markdown .md-table th{background:var(--doc-soft-2);color:var(--doc-th-ink);border-bottom:1px solid var(--doc-border)}
  .discharge-document .report-markdown .md-table td{color:var(--doc-ink);border-bottom:1px solid var(--doc-line);white-space:normal}
  .discharge-document .report-markdown .md-table tbody tr:nth-child(even) td{background:var(--doc-soft)}
  .discharge-document .report-markdown .md-table tbody tr:last-child td{border-bottom:0}
  .discharge-document .report-markdown .md-table tbody td:first-child{color:var(--doc-strong);font-weight:650}
  .discharge-document .dsec-btn{background:var(--doc-bg);border-color:var(--doc-border);color:var(--doc-muted)}
  .discharge-document .dsec-btn:hover{color:var(--doc-strong);border-color:var(--doc-input-border)}
  .discharge-document .dsec-btn.primary{border-color:var(--doc-accent);color:var(--doc-accent-ink)}
  .discharge-document .discharge-section-body[contenteditable="true"]{outline-color:var(--doc-accent)}
  .discharge-document .discharge-doc-idlist{color:var(--doc-muted)}
  .discharge-document .discharge-doc-idlist dd{color:var(--doc-strong)}
  .discharge-document .discharge-trend{border-top-color:var(--doc-line)}
  .discharge-document .discharge-trend-title,.discharge-document .dtrend-k{color:var(--doc-muted)}
  .discharge-document .dtrend-spark{color:var(--doc-accent-ink)}
  .discharge-document .dtrend-spark .dot{stroke:var(--doc-bg)}
  .discharge-document .dtrend-v{color:var(--doc-muted)}
  .discharge-document .dtrend-v .to{color:var(--doc-strong)}
  .discharge-document .discharge-signoff{background:var(--doc-soft);border-color:var(--doc-border)}
  .discharge-document .discharge-signoff h5,.discharge-document .signoff-note,.discharge-document .discharge-sign-line{color:var(--doc-muted)}
  .discharge-document .discharge-sign-line{border-top-color:var(--doc-border)}
  .discharge-document .dnotes-optional{color:var(--doc-muted)}
  .discharge-document .dnotes-lang{color:var(--doc-muted)}
  .discharge-document .dnotes-select,.discharge-document .dnotes-text{background:var(--doc-bg);border:1px solid var(--doc-input-border);color:var(--doc-ink);border-radius:6px}
  .discharge-document .dnotes-text::placeholder{color:var(--doc-ph)}
  .discharge-document .dnotes-mic{background:var(--doc-bg);border:1px solid var(--doc-input-border);color:var(--doc-ink)}
  .discharge-document .dnotes-mic.rec{border-color:#dc2626;background:var(--crit-soft);color:#dc2626}
  .shift-report-cockpit{padding:14px 16px 10px;color:var(--ink)}
  .shift-report-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:8px}
  .shift-report-section{
    border:1px solid var(--border);border-radius:8px;background:var(--card);
    padding:9px 11px;box-shadow:var(--shadow-1);
  }
  .shift-report-section[data-section-type="ai"]{border-color:rgba(124,58,237,.24)}
  .shift-section-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}
  .shift-section-head h4{margin:0;font-size:13px;font-weight:800;color:var(--ink)}
  .shift-section-body .report-markdown{padding:0;font-size:13px;line-height:1.5}
  .shift-critical-list{display:flex;flex-direction:column;gap:7px}
  .shift-critical-card{
    display:grid;grid-template-columns:auto 1fr;gap:8px;
    border:1px solid var(--border);border-radius:8px;background:var(--bg-soft);
    padding:8px 9px;font-size:12.5px;line-height:1.4;color:var(--ink-2);
  }
  .shift-critical-card[data-priority="high"]{background:var(--crit-soft);border-color:var(--crit-border);color:var(--crit)}
  .shift-critical-card[data-priority="medium"]{background:var(--warn-soft);border-color:var(--warn-border);color:var(--warn)}
  .shift-critical-priority{
    width:7px;height:7px;border-radius:50%;background:currentColor;margin-top:5px;
  }
  .shift-narrative{background:var(--bg-soft);border:1px solid var(--border);border-radius:8px;padding:10px}
  @media print{
    body{background:#fff!important}
    .topbar,.rail,.rail-backdrop,.btn,.quick-reports,.reports-grid{display:none!important}
    .app,.content,.ai-summary-card{display:block!important;box-shadow:none!important;border:0!important;background:#fff!important}
    .report-stream-section{break-inside:avoid;border-top:1px solid #ddd!important;padding:10px 0!important}
    .report-markdown{padding:0!important;color:#111!important;font-size:11.5pt!important;line-height:1.45!important}
    .report-section-label{border-color:#bbb!important;background:#fff!important;color:#333!important}
    .report-card--discharge{border:0!important;box-shadow:none!important;background:#fff!important}
    .discharge-report-shell{padding:0!important}
    .discharge-document{border:0!important;box-shadow:none!important;background:#fff!important;color:#111!important}
    .discharge-doc-head{padding:0 0 10px!important;border-bottom:2px solid #111!important}
    .discharge-meta-grid{padding:10px 0!important}
    .discharge-readiness-strip{display:none!important}
    .discharge-body-grid{display:block!important;padding:12px 0 0!important}
    .discharge-review-rail{display:none!important}
    .discharge-doc-section{break-inside:avoid!important;border-bottom:1px solid #ddd!important}
    .discharge-signoff{background:#fff!important;border:1px solid #bbb!important}
    /* The signature block is the point of the printout — never split it, and
       never print an empty dictation control or a "Generating…" placeholder. */
    .discharge-signoff,.discharge-sign-lines{break-inside:avoid!important}
    .discharge-doc-section[data-sid="other_notes"] .dnotes-toolbar{display:none!important}
    /* Edit controls are screen furniture; the "Edited" chip is provenance and
       stays on the paper copy. */
    .dsec-btn{display:none!important}
    .discharge-section-body[contenteditable="true"]{outline:0!important}
    .dsec-chip{border:1px solid #999!important;background:#fff!important;color:#333!important}
    .discharge-document .dnotes-text{border:1px solid #bbb!important;background:#fff!important;color:#111!important;min-height:60px}
    .discharge-doc-section .ai-skeleton{display:none!important}
    .discharge-doc-ident{align-items:flex-end!important}
    .discharge-doc-chip{border:1px solid #999!important;background:#fff!important;color:#333!important}
    /* Sparklines are ink-on-paper: the accent colour would print as flat grey. */
    .discharge-document .dtrend-spark{color:#111!important}
    .discharge-document .dtrend-spark .dot{stroke:#fff!important}
    .discharge-trend{break-inside:avoid!important}
    /* Force the light doc palette in print even when the app is in dark mode
       (the doubled selector out-ranks the dark-theme var override). */
    :root[data-theme="dark"] .discharge-document,.discharge-document{
      --doc-bg:#ffffff; --doc-soft:#f8fafc; --doc-soft-2:#f1f5f9;
      --doc-ink:#1c2a3f; --doc-strong:#0f172a; --doc-muted:#64748b;
      --doc-border:#d9e1ec; --doc-line:#e8eef6; --doc-th-ink:#475569;
      --doc-accent:#007AFF; --doc-accent-ink:#0b62d6;
      --doc-input-border:#cbd5e1; --doc-ph:#94a3b8; --doc-shadow:transparent
    }
  }

  /* APACHE II structured report: score gauge, stacked contribution bar,
     impact-sorted factor list, and collapsed not-contributing / data-notes
     disclosures. Severity bands align to the backend interpretRisk tiers. */
  .apache-report{padding:16px 18px;color:var(--ink)}
  .apache-head{
    display:flex;gap:18px;align-items:center;flex-wrap:wrap;
    padding-bottom:16px;margin-bottom:14px;border-bottom:1px solid var(--border);
  }
  .apache-gauge{position:relative;width:190px;flex:none}
  .apache-gauge svg{display:block;width:100%;height:auto}
  /* top:62px centers the label/number in the arc bowl for the 190px-wide
     semicircle (viewBox 0 0 240 150); re-derive if the gauge size changes. */
  .apache-gauge-center{position:absolute;left:0;right:0;top:62px;text-align:center}
  .apache-gauge-label{font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
  .apache-gauge-num{font-size:40px;font-weight:700;line-height:1;color:var(--ink)}
  .apache-summary{flex:1;min-width:220px;display:flex;flex-direction:column;gap:6px;align-items:flex-start}

  .apache-chip{
    display:inline-block;font-size:12px;font-weight:600;
    padding:3px 12px;border-radius:999px;border:1px solid transparent;
  }
  .apache-band-low{background:#ecfdf5;color:#047857;border-color:#a7f3d0}
  .apache-band-mod{background:var(--warn-soft);color:#92400e;border-color:#fde68a}
  .apache-band-high{background:#ffedd5;color:#9a3412;border-color:#fed7aa}
  .apache-band-crit{background:#fee2e2;color:#991b1b;border-color:#fecaca}

  .apache-mortality{font-size:13px;color:var(--ink-2)}
  .apache-mortality-label{color:var(--muted)}
  .apache-mortality-num{font-size:20px;font-weight:700;color:var(--ink);margin-left:4px}
  .apache-interp{font-size:12.5px;color:var(--ink-2);line-height:1.45}

  .apache-contrib{width:100%;margin-top:4px}
  .apache-contrib-track{display:flex;height:10px;border-radius:999px;overflow:hidden;background:var(--bg-soft)}
  .apache-contrib-aps{background:#d97706}
  .apache-contrib-age{background:#2563eb}
  .apache-contrib-chronic{background:#94a3b8}
  .apache-contrib-legend{display:flex;gap:14px;margin-top:7px;font-size:11.5px;color:var(--ink-2);flex-wrap:wrap}
  .apache-contrib-legend b{color:var(--ink);font-weight:600;margin-left:2px}
  .apache-dot{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:5px}
  .apache-dot-aps{background:#d97706}
  .apache-dot-age{background:#2563eb}
  .apache-dot-chronic{background:#94a3b8}

  .apache-aux{margin-bottom:8px;font-size:12.5px;color:var(--ink-2);display:flex;flex-direction:column;gap:3px}
  .apache-aux b{color:var(--ink);font-weight:600}

  .apache-section-title{
    font-size:11px;font-weight:700;letter-spacing:.06em;
    text-transform:uppercase;color:var(--muted);margin:10px 0 8px;
  }
  .apache-factors{display:flex;flex-direction:column;gap:9px}
  .apache-factor{
    display:grid;grid-template-columns:minmax(110px,32%) 1fr auto auto;
    align-items:center;gap:12px;
  }
  .apache-factor-name{font-size:13px;color:var(--ink)}
  .apache-factor-barwrap{height:8px;border-radius:999px;background:var(--bg-soft);overflow:hidden;min-width:40px}
  .apache-factor-bar{display:block;height:8px;border-radius:999px}
  .apache-fbar-lo{background:#fbbf24}
  .apache-fbar-mid{background:#f59e0b}
  .apache-fbar-hi{background:#ea580c}
  .apache-factor-val{font-size:12px;color:var(--muted);text-align:right;white-space:nowrap}
  .apache-factor-pts{font-size:13px;font-weight:600;color:var(--ink);min-width:26px;text-align:right;font-variant-numeric:tabular-nums}
  .apache-ts{font-size:11px;color:var(--faint);margin-left:6px}
  .apache-na{color:var(--muted);font-style:italic;font-size:13px}

  .apache-disclosure{margin-top:10px;font-size:12.5px}
  .apache-disclosure summary{cursor:pointer;color:var(--muted);font-weight:600;list-style:none;padding:6px 0}
  .apache-disclosure summary::-webkit-details-marker{display:none}
  .apache-disclosure summary::before{content:'▸ ';color:var(--faint)}
  .apache-disclosure[open] summary::before{content:'▾ '}
  .apache-disclosure-body{padding:2px 0 8px;color:var(--ink-2);line-height:1.5}
  .apache-caveats{margin:0;padding:0 0 8px 22px;color:var(--ink-2)}
  .apache-caveats li{margin-bottom:3px}

  /* APACHE IV additions. The score card reuses the .apache-* rules above. */

  /* Unverified-scoring-table banner. Deliberately loud and above the gauge:
     it says the number below is an UNDERSTATEMENT, which a reader must see
     before reading the score, not after. */
  .apache4-warn{
    margin:0 0 14px;padding:10px 12px;border-radius:10px;font-size:12.5px;line-height:1.5;
    background:var(--warn-soft);color:#92400e;border:1px solid #fde68a;
  }

  :root[data-theme="dark"] .apache4-warn{
    background:rgba(217,119,6,.14);color:#fcd34d;border-color:rgba(217,119,6,.30);
  }

  /* Neutral chip + gauge marker for a withheld severity band. Grey on purpose:
     any of the four band colours would assert a severity the data cannot
     support. */
  .apache-band-unknown{background:var(--bg-soft);color:var(--ink-2);border-color:var(--border)}

  /* Data completeness, next to the score rather than inside a disclosure. */
  .apache4-completeness{font-size:12px;color:var(--muted)}
  .apache4-completeness b{color:var(--ink-2)}
  .apache4-completeness-partial{color:#92400e}
  .apache4-completeness-partial b{color:#92400e}

  :root[data-theme="dark"] .apache-band-unknown{
    background:rgba(148,163,184,.14);color:#cbd5e1;border-color:rgba(148,163,184,.30);
  }
  :root[data-theme="dark"] .apache4-completeness-partial,
  :root[data-theme="dark"] .apache4-completeness-partial b{color:#fcd34d}

  :root[data-theme="dark"] .apache-band-low{background:rgba(34,197,94,.14);color:#86efac;border-color:rgba(34,197,94,.30)}
  :root[data-theme="dark"] .apache-band-mod{background:rgba(217,119,6,.16);color:#fcd34d;border-color:rgba(217,119,6,.32)}
  :root[data-theme="dark"] .apache-band-high{background:rgba(234,88,12,.16);color:#fdba74;border-color:rgba(234,88,12,.32)}
  :root[data-theme="dark"] .apache-band-crit{background:rgba(220,38,38,.16);color:#fca5a5;border-color:rgba(220,38,38,.32)}
