/* ORAD Differential Copilot — chat-forward layout. Reading-room tokens (/theme).
   Two rails by default: findings scaffold (left) + chat (center, the hero). The
   differential is not a permanent panel — it DEVELOPS into the thread as an
   artifact card when a ranking is ready, and Expand slides it into a right drawer.
   NB: --plate is the near-black image-well token and stays dark in BOTH themes, so
   it is used ONLY for image wells, never for panel backgrounds. */
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
html{font-variant-numeric:tabular-nums}
body{background:var(--bg);color:var(--text);font-family:var(--font-body);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;overflow:hidden}
button{font-family:inherit;cursor:pointer}
.hidden{display:none !important}
.mgap{flex:1}

/* top bar */
.topbar{height:52px;display:flex;align-items:center;gap:14px;padding:0 20px;border-bottom:1px solid var(--rule);background:linear-gradient(180deg,rgba(127,127,127,.04),transparent)}
.logo{font-family:var(--font-display);font-weight:700;font-size:19px;letter-spacing:-.01em;color:var(--ink);text-decoration:none}
.logo b{color:var(--ox)}
.tag{font-family:var(--font-mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--faint)}
.chip{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.05em;padding:4px 10px;border-radius:999px;border:1px solid var(--rule);color:var(--muted);display:inline-flex;align-items:center;gap:6px;text-transform:uppercase}
.chip .led{width:7px;height:7px;border-radius:50%;background:var(--grey)}
.chip.ok .led{background:var(--green)} .chip.ok{color:var(--green);border-color:color-mix(in srgb,var(--green) 35%,transparent)}
.chip.off .led{background:var(--danger)} .chip.off{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 35%,transparent)}
.chip.warn{color:var(--ox);border-color:color-mix(in srgb,var(--ox) 32%,transparent)}
/* One visible focus ring for every keyboard stop in the tool (rail items, tabs, modal
   close, chips that are buttons); the site carries the same rule in Base.astro. Controls
   that draw their own ring (.starter-card, map nodes, differential rows) override it. */
:focus-visible{outline:2px solid var(--ox);outline-offset:2px}
.toplink{font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);background:transparent;border:1px solid var(--rule);border-radius:6px;padding:6px 10px;text-decoration:none}
.toplink:hover{color:var(--ink);border-color:var(--faint)}
/* shared top-bar nav (identical markup on the classic page; mirrors the site's pills) */
.topnav{display:flex;gap:7px;flex-wrap:wrap;align-items:center}
.navpill{font-family:var(--font-mono);font-size:10px;letter-spacing:.09em;text-transform:uppercase;color:var(--ox);text-decoration:none;border:1px solid var(--rule);border-radius:20px;padding:6px 12px;background:var(--paper);transition:border-color .12s,color .12s,background-color .12s}
.navpill:hover{border-color:var(--ox);color:var(--ink)}
.navpill.active{color:var(--ink);border-color:var(--ox);background:var(--ox-soft)}

.grid{display:grid;grid-template-columns:320px minmax(0,1fr);height:calc(100vh - 52px);min-height:520px;transition:grid-template-columns .28s cubic-bezier(.4,0,.2,1)}
.grid.drawer-open{grid-template-columns:296px minmax(0,1fr) 392px}
@media(max-width:1160px){.grid{grid-template-columns:280px minmax(0,1fr)}.grid.drawer-open{grid-template-columns:264px minmax(0,1fr) 360px}}

/* ── shared pills / provenance (mirrors main styles.css semantics) ── */
.opt{font-size:11.5px;padding:4px 10px;border:1px solid var(--rule);border-radius:6px;color:var(--muted);background:var(--paper);display:inline-flex;align-items:center;line-height:1.2;cursor:pointer;user-select:none;transition:background-color .12s,border-color .12s,color .12s}
.opt:hover{border-color:var(--ink);color:var(--ink)}
.opt.clin{background:var(--teal-soft);border-color:var(--teal);color:var(--teal)}
.opt.you{background:var(--green-soft);border-color:var(--green);color:var(--green)}
.opt.ai{border-style:dashed;background:var(--blue-soft);border-color:var(--blue);color:var(--blue)}
.opt.ai.mod{background:var(--amber-soft);border-color:var(--amber);color:var(--amber)}
.opt.ai.lo{background:var(--ox-soft);border-color:var(--ox);color:var(--ox)}
.opt.ghost{border-style:dashed;background:transparent;border-color:var(--blue);color:var(--faint);text-decoration:line-through;opacity:.6}
.src{font-family:var(--font-mono);font-size:8px;letter-spacing:.05em;text-transform:uppercase;padding:2px 6px;border-radius:4px;white-space:nowrap}
.src.clin{color:var(--teal);background:var(--teal-soft)}
.src.you{color:var(--green);background:var(--green-soft)}
.src.agree{color:var(--green);background:var(--green-soft)}
.src.ai{color:var(--blue);background:var(--blue-soft)}

/* ── LEFT: reading log (new + past chats) ── */
.chatside{background:var(--paper);border-right:1px solid var(--rule);display:flex;flex-direction:column;overflow:hidden}
.chatside-head{padding:14px 13px 11px;border-bottom:1px solid var(--rule)}
.newchat{width:100%;background:var(--ox);color:var(--on-ox);border:0;border-radius:9px;padding:10px 12px;font-family:var(--font-display);font-weight:600;font-size:13px;cursor:pointer;letter-spacing:.01em}
.newchat:hover{filter:brightness(1.06)}
.chatside-list{overflow-y:auto;flex:1;padding:8px 7px 18px;display:flex;flex-direction:column;gap:2px}
.chatlabel{font-family:var(--font-mono);font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint);padding:10px 8px 5px}
.chatitem{width:100%;text-align:left;background:transparent;border:0;border-left:2px solid transparent;border-radius:0 7px 7px 0;padding:9px 10px;display:flex;flex-direction:column;gap:3px;cursor:pointer}
.chatitem:hover{background:rgba(127,127,127,.06)}
.chatitem.active{background:var(--ox-soft);border-left-color:var(--ox)}
.ci-title{font-size:12.5px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;line-height:1.2}
.ci-sub{font-family:var(--font-mono);font-size:9px;color:var(--faint);display:flex;gap:6px}
.ci-lesion{color:var(--ox)}
.chats-empty{padding:18px 12px;color:var(--faint);font-size:12px;line-height:1.5}

/* ── findings scaffold (now the drawer's Findings tab) ── */
.findings{background:var(--paper);border-right:1px solid var(--rule);display:flex;flex-direction:column;overflow:hidden}
.findings-head{padding:14px 16px 12px;border-bottom:1px solid var(--rule)}
.findings-head .row{display:flex;align-items:baseline;justify-content:space-between}
.findings-head h2{font-family:var(--font-mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.findings-head .ct{font-family:var(--font-mono);font-size:10px;color:var(--faint)}
.prog{height:5px;border-radius:3px;background:var(--bg);border:1px solid var(--rule);overflow:hidden;margin-top:10px}
.prog i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--ox),var(--green));transition:width .25s}
.findings-body{overflow-y:auto;flex:1}
.grp{padding:13px 16px 5px;font-family:var(--font-mono);font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:var(--faint)}
/* grouped findings headings — lines fall only BETWEEN subcategories, never between
   individual questions. fmain = section (Clinical / Radiographic), fsub = the
   emphasized subcategory (Location · Periphery · Internal Structure · Effects…). */
.fgrp{font-family:var(--font-mono);letter-spacing:.09em;text-transform:uppercase;border-top:1px solid var(--rule)}
/* The dock's scale: section 11px/700, subcategory 10px/600. .fmain keeps the quieter
   --faint so the dock still reads as a summary, but it must stay LARGER and BOLDER than
   the .fsub beneath it. Classic restyles .fsub into its uniform header band under
   .classic-findings in app-shell.css; the gradient here is the dock's only. */
.fmain{font-size:11px;font-weight:700;letter-spacing:.12em;color:var(--faint);padding:13px 14px 4px}
.fsub{font-size:10px;font-weight:600;letter-spacing:.08em;color:var(--ox);padding:12px 14px 6px;background:linear-gradient(180deg,var(--ox-soft),transparent 80%)}
.fgrp:first-child{border-top:0}
.fmain + .fsub{border-top:0}          /* no double rule when a section leads into a subcategory */
.frow{padding:6px 14px}               /* no per-question separator */
.frow .lab{font-size:12px;color:var(--ink);margin-bottom:5px;display:flex;align-items:center;justify-content:space-between;gap:8px}
.frow.empty .lab{color:var(--faint)}
.lab-tags{display:inline-flex;align-items:center;gap:6px;flex:none}
.multi-cue{font-family:var(--font-mono);font-size:8px;letter-spacing:.05em;text-transform:uppercase;color:var(--blue);border:1px solid color-mix(in srgb,var(--blue) 35%,transparent);border-radius:4px;padding:1px 5px;background:var(--blue-soft);white-space:nowrap}
.frow .vals{display:flex;flex-wrap:wrap;gap:4px;align-items:center}
/* denser Report findings pane — trim the leading of the pills so more of the 18
   characteristics fit on screen at once (the Report is narrower than Classic) */
.pane-findings .frow{padding:5px 14px}
.pane-findings .frow .lab{margin-bottom:4px}
.pane-findings .fmain{padding:11px 14px 3px}
.pane-findings .fsub{padding:10px 14px 5px}
.frow.nextq-row{background:linear-gradient(90deg,var(--blue-soft),transparent);border-left:2px solid var(--blue)}
.nq-tag{font-family:var(--font-mono);font-size:8px;letter-spacing:.05em;text-transform:uppercase;color:var(--blue);white-space:nowrap}
.offalgo{border-top:1px solid var(--rule);padding:11px 16px;display:flex;flex-wrap:wrap;gap:6px;align-items:center;background:var(--bg)}
.offalgo-h{font-family:var(--font-mono);font-size:8.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--teal);width:100%}
.offchip{font-family:var(--font-mono);font-size:10px;color:var(--muted);border:1px solid var(--rule);border-radius:999px;padding:3px 4px 3px 9px;background:var(--paper);display:inline-flex;align-items:center;gap:3px}
.ctx-x{background:transparent;border:0;color:var(--faint);font-size:13px;line-height:1;cursor:pointer;padding:0 3px;border-radius:50%}
.ctx-x:hover{color:var(--danger)}
.ctx-add{display:flex;gap:6px;width:100%;margin-top:3px}
.ctx-input{flex:1;min-width:0;font-family:var(--font-body);font-size:11.5px;color:var(--ink);background:var(--paper);border:1px solid var(--rule);border-radius:7px;padding:6px 9px;outline:none}
.ctx-input:focus{border-color:var(--teal)}
.ctx-input::placeholder{color:var(--faint)}
.ctx-addbtn{flex:none;font-family:var(--font-mono);font-size:10px;letter-spacing:.04em;text-transform:uppercase;color:var(--teal);background:transparent;border:1px solid var(--rule);border-radius:7px;padding:5px 10px;cursor:pointer}
.ctx-addbtn:hover{border-color:var(--teal)}

/* ── CENTER: chat (the hero) ── */
.chat{display:flex;flex-direction:column;overflow:hidden;background:var(--bg)}
.thread{flex:1;overflow-y:auto;padding:24px 26px 10px}
.turn{max-width:720px;margin:0 auto 20px}
.turn.you{display:flex;justify-content:flex-end}
.bubble{background:var(--paper);border:1px solid var(--rule);border-radius:14px 14px 3px 14px;padding:11px 15px;max-width:86%;color:var(--ink)}
.who{font-family:var(--font-mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--faint);margin-bottom:7px}
.turn.ai p{margin:0 0 9px}
.turn.ai .fills{color:var(--teal)}
.turn.ai b{color:var(--ink)}
.ask{border-left:2px solid var(--ox);padding:3px 0 3px 12px;color:var(--muted);margin-top:6px}
.ask b{color:var(--ink)}
.thumb{width:150px;max-width:100%;border:1px solid var(--rule);border-radius:8px;margin-top:8px;display:block}
.disclaimer{margin-top:9px;display:flex;gap:9px;align-items:flex-start;background:var(--teal-soft);border:1px solid color-mix(in srgb,var(--teal) 30%,transparent);border-radius:9px;padding:10px 12px;color:var(--ink);font-size:12px}
.disclaimer b{color:var(--teal)}
.spin{display:inline-block;width:11px;height:11px;border:2px solid var(--ox);border-top-color:transparent;border-radius:50%;animation:spin .7s linear infinite;vertical-align:-1px;margin-right:6px}
@keyframes spin{to{transform:rotate(360deg)}}

/* ── the differential ARTIFACT (develops into the thread) ── */
.artifact{max-width:720px;margin:0 auto 10px;border:1px solid var(--rule);border-top:2px solid var(--ox);border-radius:3px 3px 12px 12px;background:var(--paper);overflow:hidden;box-shadow:var(--shadow-2);animation:develop .5s cubic-bezier(.2,.7,.2,1) both}
@keyframes develop{from{opacity:0;transform:translateY(8px);filter:saturate(.55) brightness(.94)}to{opacity:1;transform:none;filter:none}}
.artifact.no-anim,.qcard.no-anim{animation:none}

/* ── the next-question artifact (clickable toggles, in the thread) ── */
.qcard{max-width:720px;margin:0 auto;border:1px solid color-mix(in srgb,var(--blue) 30%,transparent);border-left:2px solid var(--blue);background:linear-gradient(180deg,var(--blue-soft),transparent);border-radius:10px;padding:13px 15px;animation:develop .5s cubic-bezier(.2,.7,.2,1) both}
.qc-head{font-family:var(--font-mono);font-size:9px;letter-spacing:.06em;text-transform:uppercase;color:var(--blue)}
.qc-q{font-size:14px;color:var(--ink);margin:7px 0 10px}
.qc-opts{display:flex;flex-wrap:wrap;gap:6px}
.qc-opts .opt{font-size:12px;padding:6px 12px}
.qc-hint{font-family:var(--font-mono);font-size:9px;color:var(--faint);margin-top:9px}
.art-head{display:flex;align-items:center;gap:9px;padding:9px 13px;border-bottom:1px solid var(--rule);background:linear-gradient(180deg,var(--ox-soft),transparent)}
.art-k{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ox)}
.art-meta{font-family:var(--font-mono);font-size:9px;color:var(--faint)}
.art-expand{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);background:transparent;border:1px solid var(--rule);border-radius:6px;padding:4px 9px}
.art-expand:hover{color:var(--ink);border-color:var(--ox)}
.art-body{padding:4px 0 8px}
.art-lead{padding:11px 14px 9px}
.art-lead .n{display:flex;align-items:baseline;gap:9px}
.art-lead .lead-rank{font-family:var(--font-mono);font-size:10px;color:var(--faint)}
.art-lead .lead-name{font-size:15px;color:var(--ink);flex:1;line-height:1.2}
.art-lead .lead-post{font-family:var(--font-mono);font-size:16px;color:var(--ox)}

/* ranked rows — shared by artifact + drawer */
.lrow{padding:9px 14px;border-top:1px solid var(--rule)}
.lrow:first-child{border-top:0}
.lrow:hover{background:rgba(127,127,127,.05)}
.lrow.sel{background:linear-gradient(90deg,var(--ox-soft),transparent);border-left:2px solid var(--ox)}
.lrow .t{display:flex;align-items:center;gap:9px}
.rank{font-family:var(--font-mono);font-size:11px;color:var(--faint);width:16px;flex:none}
.lname{font-size:12.5px;color:var(--ink);flex:1;line-height:1.25}
.post{font-family:var(--font-mono);font-size:12px;color:var(--ox);flex:none}
.zero{font-family:var(--font-mono);font-size:8px;letter-spacing:.04em;text-transform:uppercase;color:var(--danger);background:var(--danger-soft);border:1px solid color-mix(in srgb,var(--danger) 30%,transparent);border-radius:4px;padding:2px 6px}
.bar{margin-top:7px;height:5px;background:var(--rule);border-radius:3px;overflow:hidden}
.bar i{display:block;height:100%;background:linear-gradient(90deg,var(--ox),color-mix(in srgb,var(--ox) 65%,var(--blue)))}
/* "Show N more" under a collapsed differential. Reads as a quiet continuation of the
   list rather than a primary action — the top five are the answer. */
.diff-more{display:block;width:100%;padding:9px 14px;border:0;border-top:1px solid var(--rule);background:transparent;color:var(--muted);font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;text-align:left;cursor:pointer}
.diff-more:hover{color:var(--ox);background:rgba(127,127,127,.05)}
/* Set aside a diagnosis. The × rests faint and comes up to full on hover — the
   differential should read as a ranking, not a row of delete buttons, but it has to
   read as something. At opacity 0 it was invisible until hovered, so Dr. White only
   found it by accident (2026-08-24: "works nicely but is subtle … I sort of stumbled
   on it"), and on a touch screen there is no hover to find it with at all. */
.lrow-aside{flex:none;width:18px;height:18px;padding:0;border:0;border-radius:5px;background:transparent;color:var(--faint);font-size:13px;line-height:1;cursor:pointer;opacity:.3;transition:opacity .12s}
.lrow:hover .lrow-aside,.lrow-aside:focus-visible{opacity:1}
.lrow-aside:hover{color:var(--danger);background:var(--danger-soft)}
/* One-time cue naming the × above the ranking. Quiet enough to ignore, present
   enough to be found without hovering; mountDiff drops it once a shelf exists. */
.diff-hint{padding:6px 14px 8px;border-bottom:1px solid var(--rule);font-size:11px;line-height:1.35;color:var(--faint)}
.diff-hint b{color:var(--muted);font-weight:700}
/* The restore shelf under the ranking — set-aside diagnoses stay one click away. */
.diff-aside-shelf{border-top:1px dashed var(--rule);padding:7px 14px 9px}
.das-hd{font-family:var(--font-mono);font-size:9px;letter-spacing:.06em;text-transform:uppercase;color:var(--faint);margin-bottom:4px}
.das-row{display:flex;align-items:center;gap:9px;padding:3px 0}
.das-nm{flex:1;font-size:12px;color:var(--muted);text-decoration:line-through;text-decoration-color:var(--faint);line-height:1.25}
.das-restore{flex:none;padding:2px 8px;border:1px solid var(--rule);border-radius:5px;background:transparent;color:var(--muted);font-family:var(--font-mono);font-size:9px;letter-spacing:.05em;text-transform:uppercase;cursor:pointer}
.das-restore:hover{color:var(--ox);border-color:var(--ox)}
.rz{display:flex;flex-wrap:wrap;gap:5px;margin-top:7px}
.rzchip{font-size:10px;padding:2px 7px;border-radius:5px;display:inline-flex;align-items:center;gap:4px}
.rzchip.for{color:var(--green);background:var(--green-soft)}
.rzchip.against{color:var(--danger);background:var(--danger-soft)}
.rzchip .s{font-family:var(--font-mono);font-size:8px;opacity:.75}
.art-next{margin:6px 14px 2px;font-size:11.5px;color:var(--muted);border-top:1px dashed var(--rule);padding-top:9px}
.art-next b{color:var(--ink)}

/* ── conductor: starter cards (empty-state) ──
   Worklist-style action cards: glyph tile · plain-language title · what-happens
   subtitle. Hover reveals an amber left-edge bar — the same inset motif the app
   uses to flash the differential rail, so the cards speak the app's own idiom. */
.starters{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:14px}
.starter-card{position:relative;display:flex;align-items:flex-start;gap:11px;text-align:left;
  font-family:var(--font-body);background:var(--paper);border:1px solid var(--rule);
  border-radius:11px;padding:12px 13px;cursor:pointer;overflow:hidden;
  transition:border-color .13s,background-color .13s,box-shadow .13s,transform .13s}
.starter-card::before{content:"";position:absolute;inset:0 auto 0 0;width:2px;background:var(--ox);
  transform:scaleY(0);transform-origin:top;transition:transform .16s ease}
.starter-card:hover,.starter-card:focus-visible{border-color:var(--ox);background:var(--ox-soft);outline:none}
.starter-card:hover::before,.starter-card:focus-visible::before{transform:scaleY(1)}
.starter-card:active{transform:translateY(1px)}
.sc-glyph{flex:none;display:grid;place-items:center;width:26px;height:26px;margin-top:1px;
  font-size:13px;color:var(--ox);background:var(--ox-soft);border:1px solid var(--rule);
  border-radius:7px;transition:border-color .13s}
.starter-card:hover .sc-glyph,.starter-card:focus-visible .sc-glyph{border-color:var(--ox)}
.sc-body{display:flex;flex-direction:column;gap:2px;min-width:0}
.sc-title{font-size:13px;font-weight:600;color:var(--ink);line-height:1.25}
.sc-sub{font-family:var(--font-mono);font-size:9.5px;line-height:1.35;letter-spacing:.01em;color:var(--faint)}
.starter-card[hidden]{display:none}
@media (max-width:560px){.starters{grid-template-columns:1fr}}
@media (prefers-reduced-motion:reduce){
  .starter-card,.starter-card::before,.sc-glyph{transition:none}
  .starter-card::before{transition:none}
  /* the loading ring shouldn't spin forever for motion-sensitive users — hold it static */
  .spin{animation:none}
}

/* ── conductor: streaming assistant turn ── */
.turn.ai .msg{max-width:100%}
.tool-status{display:flex;align-items:center;gap:2px;color:var(--muted);font-family:var(--font-mono);font-size:10.5px;letter-spacing:.03em;margin-bottom:8px}
.tool-status .ts-label{color:var(--muted)}
.prose{color:var(--ink)}
.prose p{margin:0 0 9px}
.prose h4{font-size:13px;color:var(--ink);margin:10px 0 6px;font-weight:600}
.prose ul,.prose ol{margin:0 0 9px;padding-left:20px}
.prose li{margin:2px 0}
.prose code{font-family:var(--font-mono);font-size:12px;background:var(--bg);border:1px solid var(--rule);border-radius:4px;padding:1px 5px}
.prose.gen>p:first-child::before{content:"◇ general";font-family:var(--font-mono);font-size:8px;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);border:1px solid var(--rule);border-radius:4px;padding:2px 6px;margin-right:7px;vertical-align:1px}

/* ── conductor: message cards (a view of a tool's result) ── */
.cards{display:flex;flex-direction:column;gap:10px;margin-top:4px}
.msg-card{border:1px solid var(--rule);border-radius:11px;background:var(--paper);overflow:hidden;animation:develop .4s cubic-bezier(.2,.7,.2,1) both}
.msg-card .mc-h{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ox);padding:10px 13px 7px}
.msg-card--findings{border-top:2px solid var(--teal)}
.msg-card--findings .mc-h{color:var(--teal)}
.mc-chips{display:flex;flex-wrap:wrap;gap:6px;padding:0 13px 12px}
.mc-chip{font-size:11.5px;color:var(--ink);border:1px solid var(--rule);border-radius:6px;padding:3px 9px;background:var(--bg)}
.mc-chip b{color:var(--teal)}
.mc-chip.off{font-family:var(--font-mono);font-size:10px;color:var(--muted);border-radius:999px}
.msg-card--diff{border-top:2px solid var(--ox)}
.mc-diff{padding:2px 0}
.mc-next{display:block;margin:8px 13px;font-size:11.5px;color:var(--muted);background:transparent;border:1px solid var(--rule);border-radius:7px;padding:6px 10px;cursor:pointer;text-align:left}
.mc-next:hover{border-color:var(--ox);color:var(--ink)}
.mc-next b{color:var(--ink)}
.mc-foot{font-family:var(--font-mono);font-size:8.5px;letter-spacing:.03em;color:var(--faint);padding:2px 13px 11px}
.msg-card--lesion{border-top:2px solid var(--ox)}
.msg-card--lesion .atlas-k,.msg-card--lesion .atlas-grp,.msg-card--lesion .atlas-row{padding-left:13px;padding-right:13px}
.mc-open{display:block;margin:4px 13px 12px;font-family:var(--font-mono);font-size:10px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);background:transparent;border:1px solid var(--rule);border-radius:6px;padding:5px 10px;cursor:pointer}
.mc-open:hover{border-color:var(--ox);color:var(--ink)}
.msg-card--cite{border-top:2px solid var(--blue)}
.msg-card--cite .mc-h{color:var(--blue)}
.msg-card--cite.muted{border-top-color:var(--rule)}
.mc-sources{display:flex;flex-direction:column;gap:5px;padding:0 13px 12px}
.mc-cite{font-size:12px;color:var(--blue);text-decoration:none}
.mc-cite:hover{text-decoration:underline}
.mc-cmeta{color:var(--muted);font-size:10.5px}
.mc-note{font-size:12px;color:var(--muted);padding:0 13px 12px}

/* inline citation chips — hover or focus a [n] to see the source; the card stays open while
   the cursor crosses the gap onto it (bridge), so its link is clickable */
.cite{color:var(--ox);cursor:pointer;border-bottom:1px dotted var(--ox);border-radius:2px;position:relative;white-space:nowrap;outline:none;text-decoration:none}
.cite:hover,.cite:focus-visible{background:var(--ox-soft)}
.cite-pop{position:absolute;left:0;top:calc(100% + 7px);z-index:60;min-width:250px;max-width:340px;background:var(--paper);border:1px solid var(--rule);border-radius:10px;box-shadow:var(--shadow-2);padding:6px 9px;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .12s;white-space:normal;text-align:left;font-family:var(--font-body)}
.cite:hover .cite-pop,.cite:focus-within .cite-pop,.cite-pop:hover{opacity:1;visibility:visible;pointer-events:auto}
.cite-pop::before{content:"";position:absolute;left:0;right:0;top:-9px;height:9px}
/* aligned reference rows — shared by the popover and the sources dropdown */
.cp-row{display:flex;gap:9px;font-size:11.5px;color:var(--ink);line-height:1.4;padding:5px 2px}
.cp-row + .cp-row{border-top:1px solid var(--rule)}
.cp-n{flex:0 0 18px;text-align:right;color:var(--ox);font-family:var(--font-mono);font-size:10px;padding-top:1px}
.cp-body{flex:1;min-width:0}
.cp-meta{display:block;color:var(--muted);font-size:10px;margin-top:2px}
.cp-src{display:inline-block;margin-top:3px;color:var(--blue);font-size:10.5px;text-decoration:none}
.cp-src:hover{text-decoration:underline}
/* compact "N sources cited" dropdown under an answer (only the refs actually cited) */
.src-foot{margin-top:3px}
.srcs-sum{display:inline-flex;align-items:center;gap:6px;cursor:pointer;font-family:var(--font-mono);font-size:9px;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);border:1px solid var(--rule);border-radius:999px;padding:4px 11px;list-style:none;user-select:none;transition:border-color .12s,color .12s}
.srcs-sum::-webkit-details-marker{display:none}
.srcs-sum::before{content:"◆";color:var(--ox);font-size:7px}
.srcs-sum:hover{color:var(--ink);border-color:var(--faint)}
.srcs[open] .srcs-sum{color:var(--ink);border-color:var(--ox)}
.srcs-list{margin-top:7px;padding:1px 4px 3px;border-left:1px solid var(--rule)}
/* clickable lesion mentions → open the Atlas lens */
.lesion-link{color:inherit;border-bottom:1px solid var(--ox-soft);cursor:pointer;transition:color .12s,border-color .12s;outline:none}
.lesion-link:hover,.lesion-link:focus-visible{color:var(--ox);border-bottom-color:var(--ox)}

/* composer */
.composer{padding:12px 26px 18px;border-top:1px solid var(--rule)}
.ai-gate{max-width:720px;margin:0 auto 9px;padding:10px 12px;border:1px solid var(--ox);border-radius:10px;background:var(--ox-soft);display:flex;align-items:center;gap:16px;justify-content:space-between}
.ai-gate.hidden{display:none}
.ai-gate>div:first-child{display:grid;gap:2px;min-width:0}
.ai-gate strong{font-size:13px;color:var(--ink)}
.ai-gate span{font-size:12px;line-height:1.4;color:var(--muted)}
.ai-gate-actions{display:flex;gap:7px;flex:none}
.ai-gate-actions a,.ai-gate-actions button{border:1px solid var(--rule);border-radius:7px;background:var(--paper);color:var(--ink);padding:7px 9px;font:600 10px/1 var(--font-mono);text-decoration:none;cursor:pointer;white-space:nowrap}
.ai-gate-actions a{border-color:var(--ox);background:var(--ox);color:var(--on-ox)}
.ai-quota{font:10px/1.2 var(--font-mono);font-variant-numeric:tabular-nums;color:var(--faint);white-space:nowrap}
.composer-inner{max-width:720px;margin:0 auto;border:1px solid var(--rule);border-radius:14px;background:var(--paper);padding:11px 13px;display:flex;flex-direction:column;gap:9px}
.composer-inner:focus-within{border-color:var(--ox);box-shadow:0 0 0 3px var(--ox-soft)}
.composer textarea{border:0;background:transparent;resize:none;color:var(--ink);font-family:var(--font-body);font-size:14px;line-height:1.5;outline:none;width:100%;min-height:46px;max-height:168px;overflow-y:auto}
.composer textarea::placeholder{color:var(--faint)}
.ctools{display:flex;align-items:center;gap:10px}
.tool{color:var(--faint);font-family:var(--font-mono);font-size:11px;cursor:pointer;padding:5px 7px;border-radius:6px;background:transparent;border:0}
.tool:hover{color:var(--ink);background:rgba(127,127,127,.08)}
.tool:focus-visible,.prevtoggle:focus-visible{outline:2px solid var(--ox);outline-offset:1px}
.prevtoggle{font-family:var(--font-mono);font-size:10px;letter-spacing:.03em;color:var(--faint);background:transparent;border:1px solid var(--rule);border-radius:999px;padding:4px 10px;cursor:pointer}
.prevtoggle:hover{color:var(--muted);border-color:var(--faint)}
.prevtoggle.on{color:var(--ox);border-color:color-mix(in srgb,var(--ox) 35%,transparent);background:var(--ox-soft)}
.prevtoggle.on:hover{color:var(--ox);border-color:color-mix(in srgb,var(--ox) 55%,transparent)}
.send{background:var(--ox);color:var(--on-ox);border:0;border-radius:8px;padding:9px 18px;font-family:var(--font-display);font-weight:600;font-size:13px;transition:filter .12s,opacity .12s}
.send:not(:disabled):hover{filter:brightness(1.06)}
.send:disabled{opacity:.45;cursor:default}
/* while generating, Send becomes a Stop control (cancels the in-flight read) */
.send.stopping{background:transparent;color:var(--danger);box-shadow:inset 0 0 0 1px var(--danger)}
.send.stopping:hover{background:var(--danger-soft);filter:none}
@media(max-width:600px){.ai-gate{align-items:flex-start;flex-direction:column}.ai-gate-actions{width:100%}.ai-gate-actions a,.ai-gate-actions button{flex:1;text-align:center}.ai-quota{display:none!important}}

/* ── thin scrollbars (shared by both chat surfaces) ── */
.thread,.findings-body,.drawer-body,.zone-body,.atlas-scroll,.worklist-list,
.chatside-list,.classic-findings,.classic-side{scrollbar-width:thin;scrollbar-color:var(--rule) transparent}
.thread::-webkit-scrollbar,.findings-body::-webkit-scrollbar,.drawer-body::-webkit-scrollbar,
.zone-body::-webkit-scrollbar,.atlas-scroll::-webkit-scrollbar,.worklist-list::-webkit-scrollbar,
.chatside-list::-webkit-scrollbar,.classic-findings::-webkit-scrollbar,.classic-side::-webkit-scrollbar,
.composer textarea::-webkit-scrollbar{width:10px;height:10px}
.thread::-webkit-scrollbar-thumb,.findings-body::-webkit-scrollbar-thumb,.drawer-body::-webkit-scrollbar-thumb,
.zone-body::-webkit-scrollbar-thumb,.atlas-scroll::-webkit-scrollbar-thumb,.worklist-list::-webkit-scrollbar-thumb,
.chatside-list::-webkit-scrollbar-thumb,.classic-findings::-webkit-scrollbar-thumb,.classic-side::-webkit-scrollbar-thumb,
.composer textarea::-webkit-scrollbar-thumb{background:var(--rule);border-radius:7px;border:2px solid transparent;background-clip:padding-box}
.thread::-webkit-scrollbar-thumb:hover,.findings-body::-webkit-scrollbar-thumb:hover,.drawer-body::-webkit-scrollbar-thumb:hover,
.zone-body::-webkit-scrollbar-thumb:hover,.atlas-scroll::-webkit-scrollbar-thumb:hover,.worklist-list::-webkit-scrollbar-thumb:hover,
.chatside-list::-webkit-scrollbar-thumb:hover,.classic-findings::-webkit-scrollbar-thumb:hover,.classic-side::-webkit-scrollbar-thumb:hover{background:var(--faint)}
.thread::-webkit-scrollbar-track,.findings-body::-webkit-scrollbar-track,.drawer-body::-webkit-scrollbar-track,
.zone-body::-webkit-scrollbar-track,.atlas-scroll::-webkit-scrollbar-track,.worklist-list::-webkit-scrollbar-track,
.chatside-list::-webkit-scrollbar-track,.classic-findings::-webkit-scrollbar-track,.classic-side::-webkit-scrollbar-track{background:transparent}

/* ── RIGHT DRAWER (optional expand) ── */
.drawer{background:var(--paper);border-left:1px solid var(--rule);display:flex;flex-direction:column;overflow:hidden;min-width:0}
.drawer-head{padding:11px 14px;border-bottom:1px solid var(--rule);display:flex;align-items:center;gap:10px}
.drawer .seg{display:inline-flex;border:1px solid var(--rule);border-radius:7px;overflow:hidden;background:var(--bg)}
.drawer .seg button{background:transparent;border:0;color:var(--muted);font-family:var(--font-mono);font-size:10px;letter-spacing:.05em;text-transform:uppercase;padding:6px 12px}
.drawer .seg button:hover{color:var(--ink)}
.drawer .seg button.on{background:var(--ox);color:var(--on-ox);font-weight:600}
.drawer-close{margin-left:auto;background:transparent;border:1px solid var(--rule);border-radius:6px;color:var(--muted);font-size:15px;line-height:1;width:26px;height:26px}
.drawer-close:hover{color:var(--ink);border-color:var(--faint)}
.drawer-body{overflow-y:auto;flex:1}
.view-meta{padding:11px 16px 2px;font-family:var(--font-mono);font-size:9.5px;color:var(--faint)}
.nextq{margin:12px 16px;border:1px solid color-mix(in srgb,var(--blue) 30%,transparent);background:var(--blue-soft);border-radius:10px;padding:12px}
.nextq .h{font-family:var(--font-mono);font-size:9px;letter-spacing:.05em;text-transform:uppercase;color:var(--blue)}
.nextq .q{font-size:13px;color:var(--ink);margin:7px 0 9px}
.nextq .opts{display:flex;flex-wrap:wrap;gap:5px}
.ranklist{padding:2px 0 6px}
.lesiondetail{border-top:1px solid var(--rule);padding:14px 16px;background:var(--bg)}
.lesiondetail .dh{font-size:15px;color:var(--ink);margin-bottom:3px}
.lesiondetail .dm{font-family:var(--font-mono);font-size:9.5px;color:var(--faint);margin-bottom:11px}
.evk{font-family:var(--font-mono);font-size:9px;letter-spacing:.06em;text-transform:uppercase;color:var(--faint);margin-bottom:7px}
.evrow{display:grid;grid-template-columns:1fr 9px 1fr;align-items:center;gap:7px;margin:4px 0;font-size:10.5px}
.evlab{text-align:right;color:var(--muted)}
.evaxis{width:1px;height:12px;background:var(--rule);margin:0 auto}
.evfill{height:7px;border-radius:2px}
.evfill.for{background:var(--green)}
.evfill.against{background:var(--danger)}
.dlinks{margin:9px 0 11px;display:flex;flex-wrap:wrap;gap:7px}
.dlink{font-family:var(--font-mono);font-size:10px;color:var(--blue);text-decoration:none;border:1px solid var(--rule);border-radius:6px;padding:5px 10px;background:var(--paper)}
.dlink:hover{border-color:var(--blue)}

/* atlas: the lesion's typical ORAD profile as density strips */
.atlas{margin:12px 0 4px}
.atlas-k{font-family:var(--font-mono);font-size:9px;letter-spacing:.06em;text-transform:uppercase;color:var(--faint);margin:0 0 8px}
.atlas-loading{color:var(--faint);font-size:11px;padding:4px 0}
.atlas-grp{font-family:var(--font-mono);font-size:8.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ox);margin:12px 0 6px}
.atlas-row{margin:9px 0}
.atlas-lab{font-size:11px;color:var(--muted);margin-bottom:5px}
/* Fixed meter + band columns so the meters align into one clean vertical column
   across every row (each .atlas-opt is its own grid, so variable-width columns
   would otherwise stagger — mirrors the site table's fixed band column). */
.atlas-opt{display:grid;grid-template-columns:minmax(0,1fr) 87px 82px;align-items:center;gap:10px;margin:4px 0}
.atlas-opt .al{font-size:11px;color:var(--ink);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.atlas-meter{display:flex;gap:3px;justify-content:flex-start}
.atlas-seg{width:15px;height:9px;border-radius:2px;background:var(--bg);border:1px solid var(--rule)}
.atlas-seg.on{background:var(--ox);border-color:var(--ox)}
.atlas-opt .ab{font-family:var(--font-mono);font-size:9px;letter-spacing:.02em;color:var(--faint);text-align:right}
.atlas-ref{font-size:11px;color:var(--muted);line-height:1.5;border-left:2px solid var(--rule);padding-left:10px}
.drawer-foot{padding:11px 16px;border-top:1px solid var(--rule);font-size:10px;color:var(--faint);line-height:1.5}

/* ── mobile view switcher (hidden on desktop) ── */
.mobilebar{display:none;position:fixed;left:0;right:0;bottom:0;height:54px;z-index:50;background:var(--paper);border-top:1px solid var(--rule)}
.mobilebar .mb-btn{flex:1;background:transparent;border:0;color:var(--muted);font-family:var(--font-mono);font-size:10px;letter-spacing:.04em;text-transform:uppercase;display:flex;align-items:center;justify-content:center;gap:5px;min-width:0}
.mobilebar .mb-btn.active{color:var(--ox);box-shadow:inset 0 2px 0 var(--ox)}
.mobilebar .mb-count{font-size:9px;color:var(--faint)}

/* ── ≤900px: single column; findings + differential become sheets reached from
   the bottom bar (which also appears here, so the two stay in lock-step) ── */
@media(max-width:900px){
  .grid,.grid.drawer-open{grid-template-columns:minmax(0,1fr)}
  .chatside{position:fixed;top:52px;left:0;bottom:54px;width:min(320px,82vw);z-index:45;transform:translateX(-100%);transition:transform .25s ease;box-shadow:var(--shadow-3)}
  .chatside.mopen{transform:none}
  .drawer{position:fixed;top:52px;right:0;bottom:54px;width:min(392px,92vw);z-index:45;box-shadow:var(--shadow-3)}
  .mobilebar{display:flex}
  .chat{padding-bottom:54px}
}

/* ── ≤700px: phones — compact top bar (scrollable nav, chips fold away) ── */
@media(max-width:700px){
  .topbar{padding:0 12px;gap:9px}
  .topbar .chip{display:none}                 /* status chips fold away; safety note stays in the differential footer */
  .topnav{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;gap:6px}
  .topnav::-webkit-scrollbar{display:none}
  .navpill{padding:5px 11px;font-size:9.5px;white-space:nowrap}
  .thread{padding:18px 16px 8px}
  .composer{padding:10px 16px 12px}
  .turn,.artifact,.qcard,.composer-inner{max-width:100%}
}

@media(prefers-reduced-motion:reduce){.artifact,.qcard{animation:none}.grid,.findings{transition:none}.prog i,.bar i{transition:none}}
