/* ============================================================
   MarketVoice Lab — styles.css
   A research instrument: warm paper reading surfaces, pine
   instrument chrome, interactive citations, dossier reports.
   ============================================================ */

:root {
  --ink: #152019; --ink-soft: #33413a; --muted: #5f6d64; --faint: #93a098;
  --paper: #f4f1e8; --paper-deep: #ece8db; --card: #fffdf7; --panel: #e9e4d6;
  --line: #e2dccb; --line-strong: #cdc6b1;
  --pine-950: #0b1410; --pine-900: #12211b; --pine-800: #1a2d25; --pine-700: #27392f;
  --accent: #0e5f51; --accent-bright: #15806c; --accent-deep: #0a463b;
  --accent-fog: #e8f1ec; --accent-soft: #d3e8de;
  --warm: #b3551e; --warm-deep: #8f3f12; --warm-soft: #f8e9d7;
  --gold: #8a6b23; --gold-soft: #f4edd8;
  --danger: #9c3c44; --danger-soft: #f8e7e8;
  --info: #2c5d85; --info-soft: #e7eff6;
  --cream: #f4f1e8;
  --r-sm: 7px; --r-md: 10px; --r-lg: 14px; --r-xl: 20px; --r-full: 999px;
  --shadow-sm: 0 1px 2px rgba(11,20,16,.06);
  --shadow-md: 0 1px 3px rgba(11,20,16,.05), 0 10px 30px rgba(11,20,16,.08);
  --shadow-lg: 0 24px 64px rgba(11,20,16,.2);
  --sans: "IBM Plex Sans", system-ui, sans-serif;
  --display: "Fraunces", Georgia, serif;
  --mono: "IBM Plex Mono", ui-monospace, monospace;
  --top-h: 54px;
  --ease: cubic-bezier(.2,.8,.2,1);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; font-family: var(--sans); font-size: 15px; line-height: 1.6; color: var(--ink); background: var(--paper); -webkit-font-smoothing: antialiased; }
h1,h2,h3,h4 { font-family: var(--display); font-weight: 600; letter-spacing: -.02em; line-height: 1.15; margin: 0 0 .5em; }
p { margin: 0 0 .9em; }
a { color: var(--accent-deep); text-decoration-color: rgba(10,70,59,.35); text-underline-offset: 3px; }
a:hover { text-decoration-color: currentColor; }
button { font-family: inherit; }
::selection { background: var(--accent-soft); }
:focus-visible { outline: 2px solid var(--accent-bright); outline-offset: 2px; border-radius: 4px; }

.mono { font-family: var(--mono); } .tnum { font-variant-numeric: tabular-nums; }
.muted { color: var(--muted); } .small { font-size: .84rem; } .tiny { font-size: .72rem; line-height: 1.55; }
.kicker { font-family: var(--mono); font-size: .64rem; font-weight: 500; letter-spacing: .14em; text-transform: uppercase; color: var(--accent); }
.ic { width: 17px; height: 17px; flex: none; stroke-width: 1.8; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; }
.ic.lg { width: 20px; height: 20px; } .ic.sm { width: 14px; height: 14px; }

.dot { width: 7px; height: 7px; border-radius: 50%; background: var(--line-strong); flex: none; display: inline-block; }
.dot.ok { background: var(--accent-bright); } .dot.warn { background: #dd8a4b; } .dot.no { background: var(--danger); } .dot.info { background: var(--info); }
.dot-pulse { position: relative; }
.dot-pulse::after { content:""; position:absolute; inset:-3px; border-radius:50%; border:2px solid currentColor; opacity:0; animation:pulse 1.8s ease-out infinite; color:inherit; }
@keyframes pulse { 0%{transform:scale(.5);opacity:.8} 100%{transform:scale(1.6);opacity:0} }

/* ---------- top bar ---------- */
.top {
  position: sticky; top: 0; z-index: 50; display: flex; align-items: center; gap: 16px;
  height: var(--top-h); padding: 0 16px; background: var(--pine-950); color: var(--cream);
  border-bottom: 1px solid var(--pine-800);
}
.rail-toggle { display: none; color: #b9c6be; }
.brand { display: inline-flex; align-items: center; gap: 11px; text-decoration: none; color: inherit; }
.brand b { font: 600 1.05rem var(--display); letter-spacing: -.01em; color: #f2f5ef; }
.brand b em { font-style: italic; color: #7fcbb6; }
.brand small { display: block; font: 500 .55rem var(--mono); letter-spacing: .13em; text-transform: uppercase; color: #74837b; margin-top: -2px; }

.engine-chip {
  display: inline-flex; align-items: center; gap: 9px; margin-left: 8px;
  font: 500 .72rem var(--mono); color: #b7c4bc;
  background: rgba(255,255,255,.045); border: 1px solid rgba(255,255,255,.09);
  border-radius: var(--r-full); padding: 5px 14px;
  cursor: pointer; transition: background .14s ease, border-color .14s ease;
}
.engine-chip:hover { background: rgba(255,255,255,.09); border-color: rgba(255,255,255,.18); }
.chip-caret { color: #74837b; }
.engine-chip b { color: #dfe8e2; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; font-size: .64rem; }
.engine-chip .dot.ok.dot-pulse { color: #57bd9f; }
.engine-chip .dot.warn.dot-pulse { color: #dd8a4b; }
.top-right { margin-left: auto; display: flex; gap: 8px; align-items: center; }
@media (max-width: 900px) {
  .rail-toggle { display: inline-flex; }
  .engine-chip span#engineModel { display: none; }
}

/* reading progress hairline — lives directly under the top bar */
.read-progress { position: fixed; top: var(--top-h); left: 0; right: 0; height: 2.5px; z-index: 49; background: transparent; pointer-events: none; }
.read-progress i { display: block; height: 100%; width: 0; background: linear-gradient(90deg, var(--accent-deep), var(--accent-bright)); transition: width .12s linear; }

/* ---------- buttons / inputs ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  padding: 8px 15px; border-radius: 9px; border: 1px solid var(--line-strong);
  font: 600 .86rem/1 var(--sans); cursor: pointer; text-decoration: none;
  color: var(--ink); background: var(--card); white-space: nowrap;
  transition: background .14s ease, border-color .14s ease, transform .06s ease, box-shadow .14s ease;
}
.btn:hover { background: #fff; border-color: #b6af9a; color: inherit; box-shadow: var(--shadow-sm); }
.btn:active { transform: translateY(1px); }
.btn-primary { background: var(--accent); border-color: var(--accent); color: #fff; box-shadow: 0 6px 16px rgba(14,95,81,.24); }
.btn-primary:hover { background: var(--accent-deep); border-color: var(--accent-deep); color: #fff; box-shadow: 0 8px 20px rgba(14,95,81,.3); }
.btn-dark { background: var(--pine-900); border-color: var(--pine-900); color: #f0ede3; }
.btn-dark:hover { background: #000; color: #fff; }
.btn-ghost { background: transparent; border-color: transparent; }
.btn-ghost:hover { background: rgba(21,32,25,.06); box-shadow: none; }
.top .btn-ghost { color: #b9c6be; }
.top .btn-ghost:hover { background: rgba(255,255,255,.07); color: #fff; }
.btn-danger { background: transparent; border-color: transparent; color: var(--danger); }
.btn-danger:hover { background: var(--danger-soft); box-shadow: none; }
.btn-danger.on-dark { color: #e89b93; }
.btn-danger.on-dark:hover { background: rgba(156,60,68,.25); }
.btn-sm { padding: 5px 11px; font-size: .78rem; border-radius: 8px; }
.btn[disabled] { opacity: .45; cursor: not-allowed; transform: none; }
.icon-btn {
  display:inline-flex; align-items:center; justify-content:center; width:34px; height:34px;
  border-radius:9px; border:0; background:transparent; color:inherit; cursor:pointer;
  transition: background .14s ease;
}
.icon-btn:hover { background: rgba(127,203,182,.14); }

input[type="text"], input[type="password"], textarea, select {
  font: 400 .92rem/1.5 var(--sans); color: var(--ink);
  background: #fff; border: 1px solid var(--line-strong); border-radius: 9px;
  padding: 9px 13px; width: 100%;
  transition: border-color .14s ease, box-shadow .14s ease;
}
textarea { resize: vertical; min-height: 74px; }
input:focus, textarea:focus, select:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px rgba(14,95,81,.13); }

.switch { position: relative; display: inline-flex; width: 38px; height: 22px; flex: none; cursor: pointer; vertical-align: middle; }
.switch input { position: absolute; inset: 0; opacity: 0; cursor: pointer; }
.switch::before { content:""; position:absolute; inset:0; border-radius:999px; background:var(--line-strong); transition:background .15s ease; }
.switch::after { content:""; position:absolute; top:3px; left:3px; width:16px; height:16px; border-radius:50%; background:#fff; box-shadow:0 1px 3px rgba(0,0,0,.22); transition:transform .15s ease; }
.switch:has(input:checked)::before { background: var(--accent); }
.switch:has(input:checked)::after { transform: translateX(16px); }

/* ---------- badges / pills ---------- */
.badge {
  display: inline-flex; align-items: center; gap: 6px;
  font: 500 .62rem/1.5 var(--mono); letter-spacing: .07em; text-transform: uppercase;
  padding: 2px 9px; border-radius: var(--r-full); white-space: nowrap;
  background: transparent; border: 1px solid var(--line-strong); color: var(--muted);
}
.b-accent { color: var(--accent-deep); background: var(--accent-fog); border-color: transparent; }
.b-warn, .b-warm { color: var(--warm-deep); background: var(--warm-soft); border-color: transparent; }
.b-no { color: var(--danger); background: var(--danger-soft); border-color: transparent; }
.b-ok { color: #0b584b; background: var(--accent-soft); border-color: transparent; }
.b-info { color: var(--info); background: var(--info-soft); border-color: transparent; }
.b-gold { color: var(--gold); background: var(--gold-soft); border-color: transparent; }
.b-neutral { color: var(--ink-soft); background: var(--panel); border-color: transparent; }
.b-outline { background: transparent; }

.card { background: var(--card); border: 1px solid var(--line); border-radius: var(--r-lg); padding: 18px 20px; box-shadow: var(--shadow-sm); }

.conf-pill { display: inline-flex; align-items: center; gap: 5px; font: 500 .7rem var(--mono); white-space: nowrap; }
.conf-high { color: #0b584b; } .conf-med { color: var(--gold); } .conf-low { color: var(--warm-deep); }
.conf-dot { width: 6px; height: 6px; border-radius: 50%; background: currentColor; }

.typing { display: inline-flex; gap: 4px; align-items: center; padding: 4px 2px; }
.typing i { width: 6px; height: 6px; border-radius: 50%; background: var(--faint); animation: blink 1.2s infinite; }
.typing i:nth-child(2) { animation-delay: .18s; } .typing i:nth-child(3) { animation-delay: .36s; }
@keyframes blink { 0%,70%,100%{opacity:.25;transform:none} 35%{opacity:1;transform:translateY(-3px)} }

.skel { position: relative; overflow: hidden; background: var(--panel); border-radius: 7px; }
.skel::after { content:""; position:absolute; inset:0; translate:-100% 0; background:linear-gradient(90deg,transparent,rgba(255,255,255,.75),transparent); animation: shimmer 1.4s infinite; }
@keyframes shimmer { to { translate: 100% 0; } }

/* ---------- frame / rail ---------- */
.frame { display: grid; grid-template-columns: 272px minmax(0,1fr); min-height: calc(100vh - var(--top-h)); }
.rail {
  position: sticky; top: var(--top-h); height: calc(100vh - var(--top-h)); overflow-y: auto;
  background: linear-gradient(180deg, #fbf9f3, var(--paper));
  border-right: 1px solid var(--line); padding: 16px 14px 20px; display: flex; flex-direction: column;
}
.new-btn { justify-content: center; margin-bottom: 16px; }
.rail-label { font: 500 .6rem var(--mono); letter-spacing: .14em; text-transform: uppercase; color: var(--faint); margin: 4px 6px 8px; }
.run-list { display: grid; gap: 6px; flex: 1; align-content: start; }
.run-item {
  display: block; text-decoration: none; color: inherit;
  border: 1px solid transparent; background: transparent; border-radius: 11px; padding: 9px 12px;
  transition: background .14s ease, border-color .14s ease, box-shadow .14s ease;
}
.run-item:hover { background: var(--card); border-color: var(--line); box-shadow: var(--shadow-sm); }
.run-item.on { background: var(--card); border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent) inset, var(--shadow-sm); }
.run-item .ri-top { display: flex; align-items: center; gap: 8px; margin-bottom: 3px; }
.run-item .ri-q {
  font-size: .8rem; font-weight: 500; line-height: 1.45; color: var(--ink-soft);
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.run-item.on .ri-q { color: var(--ink); }
.run-item .ri-meta { display: flex; gap: 8px; align-items: center; margin-top: 5px; font: 500 .62rem var(--mono); letter-spacing: .05em; text-transform: uppercase; color: var(--faint); }
.rail-foot { margin-top: 18px; padding: 12px 12px 0; border-top: 1px dashed var(--line-strong); font: 400 .68rem/1.7 var(--mono); color: var(--muted); }
.rail-scrim { display: none; }
@media (max-width: 900px) {
  .frame { grid-template-columns: 1fr; }
  .rail {
    position: fixed; inset: var(--top-h) auto 0 0; width: min(84vw, 300px); z-index: 60;
    transform: translateX(-104%); transition: transform .22s var(--ease);
    border-right: 1px solid var(--line); box-shadow: var(--shadow-lg);
  }
  .rail.open { transform: none; }
  .rail.open + .rail-scrim, .rail-scrim.show { display: block; position: fixed; inset: var(--top-h) 0 0 0; z-index: 55; background: rgba(11,20,16,.35); backdrop-filter: blur(2px); }
}

/* ---------- view scaffolding ---------- */
.view { min-width: 0; animation: riseIn .3s var(--ease) backwards; }
@keyframes riseIn { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }
.pad { padding: 30px 34px 90px; max-width: 1240px; margin-inline: auto; }
@media (max-width: 700px) { .pad { padding: 20px 16px 70px; } }
.pagehead h1 { font-size: clamp(1.4rem, 2.6vw, 1.85rem); margin: 0 0 6px; }
.pagehead .sub { color: var(--muted); font-size: .9rem; margin: 0; }

.empty-note { text-align: center; color: var(--muted); padding: 48px 24px; border: 1.5px dashed var(--line-strong); border-radius: var(--r-lg); background: var(--card); }
.error-banner { margin-top: 18px; border: 1px solid #dfb6b9; background: var(--danger-soft); color: var(--danger); border-radius: var(--r-md); padding: 13px 17px; font-size: .87rem; display: flex; gap: 10px; align-items: flex-start; }

/* ============================================================
   INTAKE VIEW
   ============================================================ */
.intake-grid { display: grid; grid-template-columns: minmax(0,1fr) 330px; gap: 24px; align-items: start; margin-top: 22px; }
@media (max-width: 1000px) { .intake-grid { grid-template-columns: 1fr; } }

.chat-panel { background: var(--card); border: 1px solid var(--line); border-radius: var(--r-lg); display: flex; flex-direction: column; height: calc(100vh - 240px); min-height: 440px; overflow: hidden; box-shadow: var(--shadow-md); }
.chat-head { display: flex; align-items: center; gap: 12px; padding: 12px 17px; border-bottom: 1px solid var(--line); background: linear-gradient(180deg,#fbf9f3,var(--card)); }
.ic-badge { width: 34px; height: 34px; border-radius: 10px; flex: none; background: linear-gradient(135deg, var(--accent), var(--accent-deep)); color: #eaf6f1; display: inline-flex; align-items: center; justify-content: center; box-shadow: 0 4px 10px rgba(14,95,81,.28); }
.chat-agent b { display: block; font-size: .88rem; }
.chat-agent span { font: 400 .66rem var(--mono); color: var(--muted); display: flex; align-items: center; gap: 6px; }
.dry-toggle { margin-left: auto; display: flex; align-items: center; gap: 8px; font: 500 .72rem var(--mono); letter-spacing: .05em; text-transform: uppercase; color: var(--muted); cursor: pointer; user-select: none; }

.chat-scroll { flex: 1; overflow-y: auto; padding: 22px 18px; display: flex; flex-direction: column; gap: 14px; background: radial-gradient(700px 300px at 50% -80px, rgba(14,95,81,.045), transparent); }
.msg { display: grid; grid-template-columns: 32px 1fr; gap: 10px; animation: riseIn .28s ease backwards; }
.msg .avt { width: 32px; height: 32px; border-radius: 10px; display: inline-flex; align-items: center; justify-content: center; font: 600 .68rem var(--mono); letter-spacing: .04em; background: var(--accent-fog); color: var(--accent-deep); border: 1px solid #cfe3d9; }
.msg.user { grid-template-columns: 1fr 32px; }
.msg.user > div:last-child { display: flex; flex-direction: column; align-items: flex-end; }
.msg.user .avt { background: var(--warm-soft); color: var(--warm-deep); border-color: #ecd9c2; }
.bubble { background: var(--paper-deep); border: 1px solid var(--line); color: var(--ink-soft); border-radius: 4px 14px 14px 14px; padding: 11px 15px; font-size: .9rem; line-height: 1.62; white-space: pre-wrap; box-shadow: var(--shadow-sm); }
.msg.user .bubble { background: var(--pine-900); border-color: var(--pine-800); color: #edf1ea; border-radius: 14px 4px 14px 14px; }
.chat-form { display: flex; gap: 9px; padding: 12px 14px; border-top: 1px solid var(--line); background: #fbf9f3; }
.chips-row { display: flex; gap: 7px; flex-wrap: wrap; padding: 0 18px 14px; }
.chip-btn { font: 500 .76rem var(--sans); color: var(--accent-deep); background: var(--card); border: 1px dashed #b5cec4; border-radius: 99px; padding: 6px 13px; cursor: pointer; text-align: left; transition: all .14s ease; }
.chip-btn:hover { background: var(--accent-fog); border-style: solid; transform: translateY(-1px); }

.spec-rail { position: sticky; top: calc(var(--top-h) + 20px); display: grid; gap: 14px; }
.spec-card { background: var(--card); border: 1px solid var(--line-strong); border-radius: var(--r-lg); overflow: hidden; box-shadow: var(--shadow-md); }
.spec-card .sc-head { padding: 13px 17px; border-bottom: 1px solid var(--line); background: #fbf9f3; display: flex; align-items: center; gap: 9px; font-weight: 600; font-size: .88rem; }
.spec-body { padding: 6px 17px 14px; }
.spec-row { display: grid; grid-template-columns: 108px 1fr; gap: 10px; padding: 9px 0; border-bottom: 1px dashed var(--line); font-size: .84rem; align-items: baseline; }
.spec-row:last-child { border-bottom: 0; }
.spec-row dt { font: 500 .58rem var(--mono); letter-spacing: .1em; text-transform: uppercase; color: var(--faint); }
.spec-row dd { margin: 0; color: var(--ink-soft); overflow-wrap: anywhere; }
.depth-pick { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.dp { position: relative; cursor: pointer; }
.dp input { position: absolute; opacity: 0; }
.dp .dp-in { border: 1px solid var(--line); border-radius: 9px; padding: 9px 11px; background: #fff; height: 100%; transition: all .14s ease; }
.dp:hover .dp-in { border-color: var(--line-strong); }
.dp:has(input:checked) .dp-in { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent) inset; background: var(--accent-fog); }
.dp b { display: block; font-size: .82rem; }
.dp span { font-size: .68rem; color: var(--muted); line-height: 1.4; display: block; }

.rubric-row { display: flex; flex-wrap: wrap; gap: 5px; margin: 8px 0 10px; }
.rubric-row .badge { font-size: .54rem; }

.contract-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 9px; font-size: .8rem; color: var(--muted); }
.contract-list li { display: flex; gap: 8px; align-items: baseline; }
.contract-list .ic { width: 13px; height: 13px; color: var(--accent); translate: 0 1px; }

/* ============================================================
   RUN VIEW
   ============================================================ */
.run-hero { display: flex; align-items: flex-start; gap: 16px; flex-wrap: wrap; }
.run-hero h1 { font-size: clamp(1.15rem, 2.2vw, 1.5rem); margin: 0 0 8px; max-width: 34ch; }
.run-live-pill { display: inline-flex; align-items: center; gap: 8px; margin-left: auto; font: 600 .66rem var(--mono); letter-spacing: .1em; text-transform: uppercase; color: var(--warm-deep); background: var(--warm-soft); border: 1px solid #ecd6ba; border-radius: 99px; padding: 7px 14px; }
.run-live-pill.done { color: #0b584b; background: var(--accent-soft); border-color: #bcd9cf; }
.run-live-pill.failed { color: var(--danger); background: var(--danger-soft); border-color: #e6c3c6; }

.pipeline-card { background: var(--card); border: 1px solid var(--line); border-radius: var(--r-lg); padding: 18px 20px; box-shadow: var(--shadow-sm); }
.pipeline { display: flex; flex-wrap: wrap; gap: 8px 0; margin-top: 14px; }
.pipe-node { display: inline-flex; align-items: center; gap: 7px; font: 500 .63rem var(--mono); letter-spacing: .05em; text-transform: uppercase; color: var(--faint); padding: 5px 12px 5px 9px; border: 1px solid var(--line); border-radius: 99px; background: var(--paper-deep); position: relative; margin-right: 22px; transition: all .3s ease; }
.pipe-node::after { content:""; position:absolute; right:-17px; top:50%; width:11px; height:0; border-top:1px dashed var(--line-strong); }
.pipe-node:last-child::after { display:none; }
.pipe-node.done { color: var(--accent-deep); background: var(--accent-fog); border-color: #bcd9cf; }
.pipe-node.active { color:#fff; background:var(--accent); border-color:var(--accent); box-shadow:0 4px 12px rgba(14,95,81,.3); }
.pn-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--line-strong); flex: none; }
.pipe-node.active .pn-dot { background: #fff; } .pipe-node.done .pn-dot { background: var(--accent); }

.two-col { display: grid; grid-template-columns: minmax(0,1fr) 390px; gap: 22px; align-items: start; margin-top: 20px; }
@media (max-width: 1100px) { .two-col { grid-template-columns: 1fr; } }

.mod-list { display: grid; gap: 8px; margin-top: 12px; }
.mod-row { display: grid; grid-template-columns: 26px 1fr auto; gap: 11px; align-items: center; border: 1px solid var(--line); background: var(--card); border-radius: 10px; padding: 10px 14px; font-size: .84rem; color: var(--ink-soft); transition: border-color .2s ease, background .2s ease; }
.mod-row .st { font: 500 .6rem var(--mono); letter-spacing: .08em; text-transform: uppercase; color: var(--faint); }
.mod-row.running { border-color: #bcd9cf; background: linear-gradient(90deg, var(--accent-fog), transparent 70%); }
.mod-row.running .st, .mod-row.done .st { color: var(--accent-deep); }
.mod-icon { color: var(--faint); display: inline-flex; } .mod-row.running .mod-icon, .mod-row.done .mod-icon { color: var(--accent); }
.method-badge { font-size: .54rem !important; letter-spacing: .06em; text-transform: uppercase; flex: none; }
.mod-body { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.mod-title-row { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.mod-tech { font-size: .7rem; color: var(--faint); }

.checkpoint-card { border: 1px solid #e0c194; border-radius: var(--r-lg); overflow: hidden; box-shadow: 0 14px 40px rgba(179,85,30,.13); animation: riseIn .35s ease backwards; margin-top: 20px; }
.cp-head { display:flex; align-items:center; gap:11px; padding: 12px 19px; background: repeating-linear-gradient(-45deg, var(--warm-soft) 0 14px, #f2ddc6 14px 28px); color: var(--warm-deep); }
.cp-head b { font-size: .84rem; }
.cp-body { background: var(--card); padding: 17px 19px; }
.cp-actions { display: flex; gap: 9px; flex-wrap: wrap; align-items: center; }
.cp-hint { font-size: .76rem; color: var(--muted); margin-left: auto; }

/* observatory — the dark instrument panel */
.obs-panel { position: sticky; top: calc(var(--top-h) + 20px); background: var(--pine-950); border: 1px solid var(--pine-700); border-radius: var(--r-lg); color: #b7c4bc; display: flex; flex-direction: column; overflow: hidden; max-height: calc(100vh - 120px); min-height: 400px; box-shadow: var(--shadow-md); }
.obs-head { display: flex; align-items: center; gap: 10px; padding: 13px 16px; border-bottom: 1px solid var(--pine-800); }
.obs-head b { font: 600 .68rem var(--mono); letter-spacing: .13em; text-transform: uppercase; color: #dfe8e2; }
.obs-counters { display: grid; grid-template-columns: repeat(4, 1fr); border-bottom: 1px solid var(--pine-800); }
.obs-counter { padding: 11px 6px 9px; text-align: center; }
.obs-counter + .obs-counter { border-left: 1px solid var(--pine-800); }
.obs-counter b { display: block; font: 600 1.15rem/1.1 var(--display); color: #f0f5ef; font-variant-numeric: tabular-nums; }
.obs-counter span { font: 500 .54rem var(--mono); letter-spacing: .1em; text-transform: uppercase; color: #74837b; }
.obs-feed { flex: 1; overflow-y: auto; padding: 10px 10px 14px; display: flex; flex-direction: column; gap: 2px; min-height: 200px; scrollbar-width: thin; scrollbar-color: var(--pine-700) transparent; }
.obs-ev { display: grid; grid-template-columns: auto 1fr; gap: 9px; align-items: baseline; font-size: .76rem; padding: 5px 7px; border-radius: 7px; animation: riseIn .25s ease backwards; }
.obs-ev:hover { background: rgba(255,255,255,.05); }
.obs-ev time { font: 400 .6rem var(--mono); color: #5f6f67; white-space: nowrap; }
.et { font: 600 .58rem var(--mono); letter-spacing: .04em; margin-right: 6px; }
.et-tool { color: #7fcbb6; } .et-source_found { color: #9cc0e8; } .et-evidence_recorded { color: #9cc0e8; }
.et-metric_computed { color: #d8c98f; } .et-module_started, .et-module_completed { color: #d8c98f; }
.et-critic_flag, .et-checkpoint { color: #eb9d70; } .et-contradiction_found { color: #eb9d70; }
.et-done { color: #7fcbb6; } .et-note { color: #8fa097; } .et-default { color: #8fa097; }
.obs-foot { border-top: 1px solid var(--pine-800); padding: 10px 13px; display: flex; gap: 8px; }
.obs-foot .btn { flex: 1; background: rgba(255,255,255,.05); border-color: rgba(255,255,255,.14); color: #dfe8e2; }
.obs-foot .btn:hover { background: rgba(255,255,255,.11); color: #fff; }

/* ============================================================
   REPORT VIEW — the reading environment
   ============================================================ */
.ws-wrap { max-width: 1240px; margin-inline: auto; padding: 26px 34px 110px; }
@media (max-width: 700px) { .ws-wrap { padding: 18px 16px 90px; } }
.ws-layout { display: grid; grid-template-columns: 224px minmax(0,1fr); gap: 42px; align-items: start; }
@media (max-width: 1000px) { .ws-layout { grid-template-columns: 1fr; } .ws-nav { display: none; } }

.ws-nav { position: sticky; top: calc(var(--top-h) + 24px); }
.ws-nav-label { font: 500 .6rem var(--mono); letter-spacing: .14em; text-transform: uppercase; color: var(--faint); margin: 0 0 10px; }
#secNav { list-style: none; margin: 0; padding: 0; border-left: 1px solid var(--line); }
#secNav a { display: block; padding: 6px 12px; margin-left: -1px; border-left: 2px solid transparent; font-size: .8rem; font-weight: 500; color: var(--muted); text-decoration: none; transition: color .14s ease, border-color .14s ease, background .14s ease; }
#secNav a:hover { color: var(--ink); }
#secNav a.on { color: var(--accent-deep); border-left-color: var(--accent); background: linear-gradient(90deg, var(--accent-fog), transparent 80%); }
#secNav a b { display: block; font-weight: 600; font-size: .8rem; color: inherit; }
#secNav .nav-sum { display: block; font-size: .68rem; font-weight: 400; color: var(--faint); line-height: 1.35; margin-top: 2px; max-width: 18ch; }
#secNav .nav-ix { font: 500 .58rem var(--mono); color: var(--faint); margin-right: 6px; }
#secNav a.on .nav-ix { color: var(--accent); }
.ws-nav-foot { margin-top: 20px; padding: 13px 13px 11px; border: 1px dashed var(--line-strong); border-radius: 10px; font-size: .7rem; color: var(--muted); line-height: 1.65; background: rgba(255,253,247,.6); }

.ws-hero { padding-top: 6px; }
.badge-row { display: flex; flex-wrap: wrap; gap: 7px; margin-bottom: 16px; }
.ws-hero h1 { font-size: clamp(1.6rem, 3.2vw, 2.35rem); line-height: 1.1; letter-spacing: -.025em; max-width: 27ch; margin: 0 0 14px; }
.hero-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; font: 500 .63rem var(--mono); letter-spacing: .08em; text-transform: uppercase; color: var(--muted); }
.hero-meta .sep { width: 4px; height: 4px; border-radius: 50%; background: var(--line-strong); }

/* TL;DR — the lede */
.tldr-card {
  position: relative;
  background: linear-gradient(180deg, var(--accent-fog), var(--card) 75%);
  border: 1px solid #bcd9cf;
  border-radius: var(--r-xl);
  padding: 26px 30px 22px;
  margin: 26px 0 6px;
  box-shadow: var(--shadow-md);
}
.ws-section.tldr-card { padding: 26px 30px 22px; }
.tldr-card::before { content: ""; position: absolute; left: 0; top: 22px; bottom: 22px; width: 3px; border-radius: 3px; background: linear-gradient(180deg, var(--accent), var(--accent-bright)); }
.tldr-kicker { font: 600 .62rem var(--mono); letter-spacing: .15em; text-transform: uppercase; color: var(--accent-deep); margin-bottom: 12px; display: flex; align-items: center; gap: 8px; }
.tldr-body { margin: 0; font-family: var(--display); font-size: 1.17rem; line-height: 1.72; color: var(--ink); }
.tldr-body::first-letter { font-size: 2.9em; float: left; line-height: .82; padding: 5px 10px 0 0; font-weight: 600; color: var(--accent-deep); }
.tldr-conf { margin: 15px 0 0; font-size: .84rem; color: var(--ink-soft); display: flex; align-items: center; gap: 7px; }
.tldr-conf .ic { color: var(--accent); }

/* verdict strip */
.verdict-strip { margin-top: 26px; border: 1px solid var(--line); border-radius: var(--r-xl); overflow: hidden; background: var(--card); box-shadow: var(--shadow-md); display: grid; grid-template-columns: minmax(0,1fr) auto; }
.vs-main { padding: 26px 30px; border-right: 1px solid var(--line); }
.vs-kicker-row { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; flex-wrap: wrap; }
.vs-verdict { font-family: var(--display); font-weight: 600; font-size: clamp(1.3rem, 2.4vw, 1.7rem); letter-spacing: -.025em; line-height: 1.14; margin: 0 0 10px; }
.vs-summary { color: var(--ink-soft); max-width: 58ch; margin: 0; }
.vs-conf-label { margin: 0 0 12px; font-size: .85rem; color: var(--muted); }
.vs-side { width: 208px; padding: 26px 20px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 13px; background: radial-gradient(130px 100px at 70% 18%, rgba(14,95,81,.08), transparent), var(--paper-deep); }
.dial { position: relative; width: 92px; height: 92px; border-radius: 50%; flex: none; background: conic-gradient(var(--dial-c, var(--accent)) calc(var(--p,0)*1%), var(--panel) 0); display: grid; place-items: center; box-shadow: inset 0 1px 3px rgba(11,20,16,.12); }
.dial::before { content: ""; position: absolute; inset: 10px; border-radius: 50%; background: var(--paper-deep); box-shadow: 0 1px 4px rgba(11,20,16,.1); }
.dial-val { position: relative; font: 600 1.35rem var(--display); letter-spacing: -.02em; text-align: center; }
.dial-val small { display: block; font: 500 .54rem var(--mono); letter-spacing: .1em; text-transform: uppercase; color: var(--muted); }
@media (max-width: 860px) { .verdict-strip { grid-template-columns: 1fr; } .vs-main { border-right: 0; border-bottom: 1px solid var(--line); } .vs-side { width: auto; } }

.rec-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-top: 16px; }
@media (max-width: 720px) { .rec-cols { grid-template-columns: 1fr; } }
.why-col { background: var(--paper); border: 1px solid var(--line); border-radius: var(--r-md); padding: 15px 17px; }
.why-col.pro { border-left: 3px solid var(--accent); }
.why-col.against { border-left: 3px solid var(--warm); }
.why-col h4 { font: 600 .7rem var(--mono); letter-spacing: .11em; text-transform: uppercase; margin: 0 0 10px; display: flex; align-items: center; gap: 7px; }
.why-col.pro h4 .ic { color: var(--accent); } .why-col.against h4 .ic { color: var(--warm); }
.why-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 9px; font-size: .85rem; color: var(--ink-soft); }
.why-list li { padding-left: 2px; }

/* sections */
.ws-section { padding: 34px 0 4px; scroll-margin-top: calc(var(--top-h) + 20px); }
.sec-head { display: flex; align-items: baseline; gap: 14px; border-top: 1px solid var(--line); padding-top: 18px; margin-bottom: 8px; }
.sec-num { font: 600 .78rem var(--mono); letter-spacing: .06em; color: var(--accent); flex: none; translate: 0 -2px; }
.sec-title { font-family: var(--display); font-size: 1.42rem; font-weight: 600; letter-spacing: -.02em; margin: 0; }
.sec-anchor { opacity: 0; margin-left: auto; align-self: center; width: 28px; height: 28px; border-radius: 7px; border: 0; background: transparent; color: var(--faint); cursor: pointer; display: inline-flex; align-items: center; justify-content: center; transition: all .15s ease; flex: none; }
.sec-head:hover .sec-anchor, .sec-anchor:focus-visible { opacity: 1; }
.sec-anchor:hover { background: var(--accent-fog); color: var(--accent-deep); }
.sec-summary { margin: 0 0 18px; font-size: .93rem; color: var(--muted); font-style: italic; line-height: 1.55; max-width: 68ch; }

.reading-col { max-width: 72ch; }
.report-humane .blk-text p { font-family: var(--display); font-size: 1.04rem; line-height: 1.78; color: #2c3833; margin: 0 0 1.05em; }
.report-humane .blk-text ul, .report-humane .blk-text ol { color: #2c3833; font-size: .95rem; line-height: 1.75; }
.blk-text a { word-break: break-word; }
.blk-text code { font: 400 .82em var(--mono); background: var(--panel); padding: 1px 5px; border-radius: 5px; }

/* block-level attachments */
.blk-refs { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin: -4px 0 14px; }
.blk-refs .br-label { font: 500 .58rem var(--mono); letter-spacing: .1em; text-transform: uppercase; color: var(--faint); margin-right: 2px; }

/* ---------- citations ---------- */
.cite {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 20px; height: 18px; padding: 0 5px;
  font: 600 .62rem/1 var(--mono); letter-spacing: .02em;
  color: var(--accent-deep); background: var(--accent-fog);
  border: 1px solid #c4dcd1; border-radius: 5px;
  cursor: pointer; vertical-align: super; translate: 0 -1px;
  transition: all .13s ease; text-decoration: none; position: relative;
}
.cite:hover, .cite:focus-visible, .cite.hot { background: var(--accent); border-color: var(--accent); color: #fff; transform: translateY(-1px); box-shadow: 0 3px 8px rgba(14,95,81,.3); }
.cite.dead { color: var(--faint); background: var(--panel); border-color: var(--line); cursor: default; }
.cite.dead:hover { transform: none; box-shadow: none; }

/* the shared citation preview popover */
.cite-pop {
  position: fixed; z-index: 90; width: 330px; max-width: calc(100vw - 32px);
  background: var(--card); border: 1px solid var(--line-strong); border-radius: 13px;
  box-shadow: 0 18px 50px rgba(11,20,16,.22), 0 2px 8px rgba(11,20,16,.1);
  padding: 15px 16px 13px; animation: popIn .16s var(--ease) backwards;
}
@keyframes popIn { from { opacity: 0; transform: translateY(5px) scale(.98); } to { opacity: 1; transform: none; } }
.cite-pop .cp-top { display: flex; gap: 11px; align-items: flex-start; }
.cite-pop .cp-tile { width: 34px; height: 34px; border-radius: 9px; flex: none; display: inline-flex; align-items: center; justify-content: center; background: var(--accent-fog); color: var(--accent-deep); border: 1px solid #d4e5dc; }
.cite-pop .cp-num { font: 600 .6rem var(--mono); color: var(--faint); letter-spacing: .1em; text-transform: uppercase; display: block; margin-bottom: 3px; }
.cite-pop .cp-title { font-size: .85rem; font-weight: 600; line-height: 1.42; color: var(--ink); margin: 0; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.cite-pop .cp-meta { display: flex; flex-wrap: wrap; gap: 4px 12px; margin-top: 10px; font: 400 .66rem var(--mono); color: var(--muted); }
.cite-pop .cp-meta .badge { font-size: .54rem; }
.cite-pop .cp-actions { display: flex; gap: 8px; margin-top: 12px; padding-top: 11px; border-top: 1px dashed var(--line); }
.cite-pop .cp-actions .btn { flex: 1; }

/* cited-flash on jump targets */
@keyframes citeFlash { 0% { background: var(--accent-soft); border-color: var(--accent); box-shadow: 0 0 0 4px rgba(20,128,108,.18); } 100% { background: var(--card); } }
.flash { animation: citeFlash 1.8s ease-out; }

/* ---------- report blocks ---------- */
.metrics-grid { display: grid; grid-template-columns: repeat(auto-fill,minmax(190px,1fr)); gap: 12px; margin: 4px 0 16px; }
.metric-card { background: var(--card); border: 1px solid var(--line); border-radius: var(--r-md); padding: 14px 16px 12px; box-shadow: var(--shadow-sm); transition: transform .15s ease, box-shadow .15s ease; }
.metric-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-md); }
.metric-card b { display: block; font: 600 1.3rem/1.2 var(--display); letter-spacing: -.02em; }
.metric-card .ml { font-size: .78rem; font-weight: 600; color: var(--ink-soft); }
.metric-card .mn { font-size: .7rem; color: var(--muted); margin-top: 3px; }

.finding-card { background: var(--card); border: 1px solid var(--line); border-left: 3px solid var(--accent); border-radius: var(--r-md); padding: 16px 19px; margin-bottom: 12px; box-shadow: var(--shadow-sm); transition: box-shadow .16s ease; }
.finding-card:hover { box-shadow: var(--shadow-md); }
.finding-card h4 { font: 600 .95rem/1.45 var(--sans); letter-spacing: 0; margin: 0 0 6px; }
.finding-card p { font-size: .85rem; color: var(--muted); margin: 0 0 10px; }
.finding-foot { display: flex; align-items: center; gap: 7px; flex-wrap: wrap; }
.epi-tag { font: 500 .58rem var(--mono); letter-spacing: .07em; text-transform: uppercase; color: var(--muted); background: var(--panel); padding: 2px 8px; border-radius: 99px; }
.ref-chip { display: inline-flex; align-items: center; gap: 5px; font: 500 .66rem var(--mono); color: var(--ink-soft); border: 1px solid var(--line); border-radius: 6px; padding: 1px 8px; text-decoration: none; }
.ref-chip:hover { border-color: var(--accent); color: var(--accent-deep); }

.funnel { display: flex; flex-direction: column; gap: 11px; margin: 4px 0 16px; }
.funnel-row { display: grid; grid-template-columns: 52px 1fr; gap: 13px; align-items: center; }
.funnel-tag { font: 600 .68rem var(--mono); letter-spacing: .08em; color: var(--faint); text-align: right; }
.funnel-track { position: relative; height: 34px; border-radius: 8px; background: var(--panel); overflow: hidden; }
.funnel-fill { position: absolute; inset: 0 auto 0 0; border-radius: 8px; width: 0; display: flex; align-items: center; padding-inline: 12px; font: 500 .74rem var(--mono); white-space: nowrap; transition: width 1.1s var(--ease); background: linear-gradient(90deg, var(--accent-deep), var(--accent-bright)); color: #fff; }
.funnel-meta { grid-column: 2; margin-top: -5px; font-size: .72rem; color: var(--muted); }

.table-wrap { overflow: auto; border: 1px solid var(--line); border-radius: var(--r-md); background: var(--card); margin: 4px 0 16px; box-shadow: var(--shadow-sm); }
table.tbl { width: 100%; border-collapse: collapse; font-size: .84rem; }
.tbl th, .tbl td { text-align: left; padding: 10px 14px; border-bottom: 1px solid var(--line); vertical-align: top; }
.tbl th { font: 500 .6rem var(--mono); letter-spacing: .1em; text-transform: uppercase; color: var(--faint); white-space: nowrap; background: #fbf9f3; position: sticky; top: 0; }
.tbl tbody tr { transition: background .12s ease; }
.tbl tbody tr:hover { background: #faf7ee; }
.tbl tr:last-child td { border-bottom: 0; }

.quote-cluster { display: grid; grid-template-columns: repeat(auto-fill,minmax(240px,1fr)); gap: 12px; margin: 4px 0 16px; }
.q-item { background: var(--paper-deep); border: 1px solid var(--line); border-radius: var(--r-md); padding: 16px 18px 13px; position: relative; transition: transform .15s ease, box-shadow .15s ease; }
.q-item:hover { transform: translateY(-2px); box-shadow: var(--shadow-md); }
.q-item::before { content: "\201C"; position: absolute; top: 1px; left: 12px; font: 700 2.4rem/1 var(--display); color: var(--line-strong); }
.q-item p { position: relative; font: italic 400 .89rem/1.62 var(--display); color: var(--ink-soft); margin: 14px 0 9px; }
.q-src { font: 500 .66rem var(--mono); color: var(--faint); }

.rowlist { background: var(--card); border: 1px solid var(--line); border-radius: var(--r-md); overflow: hidden; box-shadow: var(--shadow-sm); }
.rowlist > * + * { border-top: 1px solid var(--line); }
.src-item { display: flex; align-items: flex-start; gap: 12px; padding: 13px 17px; transition: background .12s ease; }
.src-item:hover { background: #faf7ee; }
.src-type { width: 30px; height: 30px; border-radius: 8px; flex: none; margin-top: 1px; display: inline-flex; align-items: center; justify-content: center; background: var(--accent-fog); color: var(--accent-deep); }
.src-type.gold { background: var(--gold-soft); color: var(--gold); }
.src-main { flex: 1; min-width: 0; }
.src-main b { display: block; font-size: .86rem; font-weight: 600; line-height: 1.45; }
.src-meta { display: flex; flex-wrap: wrap; gap: 5px 13px; font: 400 .66rem var(--mono); color: var(--faint); margin-top: 3px; }

/* sources — the evidence shelf */
.src-grid { display: grid; grid-template-columns: repeat(auto-fill,minmax(300px,1fr)); gap: 11px; }
.src-card { position: relative; display: flex; gap: 12px; align-items: flex-start; background: var(--card); border: 1px solid var(--line); border-radius: var(--r-md); padding: 14px 15px; transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease; scroll-margin-top: calc(var(--top-h) + 24px); }
.src-card:hover { border-color: var(--line-strong); box-shadow: var(--shadow-md); transform: translateY(-1px); }
.src-num { width: 30px; height: 30px; border-radius: 8px; flex: none; display: inline-flex; align-items: center; justify-content: center; font: 600 .74rem var(--mono); color: var(--accent-deep); background: var(--accent-fog); border: 1px solid #d4e5dc; }
.src-card .src-main b a { color: var(--ink); text-decoration: none; }
.src-card .src-main b a:hover { color: var(--accent-deep); text-decoration: underline; text-underline-offset: 3px; }
.cited-badge { display: inline-flex; align-items: center; gap: 5px; font: 500 .6rem var(--mono); letter-spacing: .05em; color: var(--gold); background: var(--gold-soft); border-radius: 99px; padding: 2px 8px; }
.src-open { flex: none; width: 28px; height: 28px; border-radius: 7px; display: inline-flex; align-items: center; justify-content: center; color: var(--faint); border: 1px solid transparent; transition: all .13s ease; }
.src-open:hover { color: var(--accent-deep); background: var(--accent-fog); border-color: #c4dcd1; }

.action-list { list-style: none; counter-reset: act; margin: 0; padding: 0; display: grid; gap: 10px; }
.action-list li { counter-increment: act; display: grid; grid-template-columns: 34px 1fr; gap: 13px; align-items: start; background: var(--card); border: 1px solid var(--line); border-radius: var(--r-md); padding: 14px 17px; font-size: .89rem; color: var(--ink-soft); box-shadow: var(--shadow-sm); transition: box-shadow .15s ease; }
.action-list li:hover { box-shadow: var(--shadow-md); }
.action-list li::before { content: counter(act, decimal-leading-zero); font: 600 .76rem var(--mono); color: var(--accent); background: var(--accent-fog); border-radius: 9px; height: 34px; display: inline-flex; align-items: center; justify-content: center; }

/* critic section */
.critic-card { border: 1px solid #e5cba9; border-radius: var(--r-lg); overflow: hidden; background: var(--card); box-shadow: var(--shadow-sm); }
.critic-head { display: flex; align-items: center; gap: 10px; padding: 13px 18px; background: repeating-linear-gradient(-45deg, var(--warm-soft) 0 14px, #f4e0ca 14px 28px); color: var(--warm-deep); font: 600 .8rem var(--sans); }
.critic-body { padding: 17px 19px; }
.critic-body > p { font-size: .9rem; color: var(--ink-soft); }
.gap-row { display: grid; grid-template-columns: auto 1fr; gap: 12px; padding: 11px 0; border-top: 1px dashed var(--line); align-items: start; }
.gap-row b { display: block; font-size: .85rem; line-height: 1.45; }
.gap-row p { margin: 3px 0 0; font-size: .8rem; color: var(--muted); }
.sev { font: 600 .56rem var(--mono); letter-spacing: .08em; text-transform: uppercase; padding: 3px 9px; border-radius: 99px; white-space: nowrap; margin-top: 1px; }
.sev-blocker { color: var(--danger); background: var(--danger-soft); }
.sev-material { color: var(--warm-deep); background: var(--warm-soft); }
.sev-nit { color: var(--muted); background: var(--panel); }

/* collapse toggles */
.collapse-toggle { display: flex; align-items: center; justify-content: space-between; gap: 12px; width: 100%; border: 1px dashed var(--line-strong); background: var(--panel); border-radius: var(--r-md); padding: 13px 17px; cursor: pointer; text-align: left; color: var(--ink); font: inherit; margin: 8px 0; transition: background .15s ease, border-color .15s ease; }
.collapse-toggle:hover { background: var(--accent-fog); border-color: #bcd9cf; }
.collapse-toggle .ct-left { display: flex; align-items: baseline; gap: 12px; min-width: 0; }
.collapse-label { font: 500 .62rem var(--mono); letter-spacing: .08em; text-transform: uppercase; color: var(--muted); white-space: nowrap; display: inline-flex; align-items: center; gap: 6px; }
.collapse-label .ic { transition: transform .2s var(--ease); }
.collapse-toggle[aria-expanded="true"] .collapse-label .ic { transform: rotate(180deg); }
.collapse-body { margin-top: 12px; animation: riseIn .25s ease; }
.dense-wrap { margin-top: 16px; }
.dense-toggle span:first-child { font-weight: 600; font-size: .88rem; }

.report-foot { padding: 26px 0 6px; border-top: 1px solid var(--line); margin-top: 30px; }
.prov { font: 400 .7rem/1.7 var(--mono); color: var(--faint); max-width: 80ch; margin: 0; }
.stamp { float: right; margin-left: 18px; transform: rotate(-4deg); border: 1.6px solid rgba(14,95,81,.45); color: rgba(14,95,81,.65); font: 700 .6rem/1.35 var(--mono); letter-spacing: .16em; text-transform: uppercase; padding: 7px 12px; border-radius: 6px; text-align: center; }

/* back-to-top */
.to-top { position: fixed; right: 22px; bottom: 22px; z-index: 48; width: 42px; height: 42px; border-radius: 50%; border: 1px solid var(--line-strong); background: var(--card); color: var(--ink-soft); cursor: pointer; display: inline-flex; align-items: center; justify-content: center; box-shadow: var(--shadow-md); opacity: 0; pointer-events: none; transform: translateY(8px); transition: all .2s var(--ease); }
.to-top.show { opacity: 1; pointer-events: auto; transform: none; }
.to-top:hover { background: var(--accent); border-color: var(--accent); color: #fff; }

/* ---------- drawer / toast ---------- */
.scrim { position: fixed; inset: 0; background: rgba(11,20,16,.44); backdrop-filter: blur(3px); z-index: 70; opacity: 0; pointer-events: none; transition: opacity .2s ease; }
.scrim.show { opacity: 1; pointer-events: auto; }
.drawer { position: fixed; top: 0; right: 0; bottom: 0; width: min(580px, 96vw); z-index: 71; background: var(--card); border-left: 1px solid var(--line); box-shadow: var(--shadow-lg); transform: translateX(103%); transition: transform .25s var(--ease); display: flex; flex-direction: column; }
.drawer.open { transform: none; }
.drawer-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 15px 20px 12px; }
.raw-pre { flex: 1; overflow: auto; margin: 0; padding: 14px 18px 20px; background: var(--pine-950); color: #b7c4bc; font: 400 .72rem/1.65 var(--mono); white-space: pre-wrap; word-break: break-word; }
.tabs-bar { display: flex; gap: 2px; border-bottom: 1px solid var(--line); overflow-x: auto; scrollbar-width: none; }
.tabs-bar button { border: 0; background: none; cursor: pointer; white-space: nowrap; font: 600 .78rem var(--sans); color: var(--muted); padding: 8px 13px 10px; border-bottom: 2px solid transparent; margin-bottom: -1px; transition: color .13s ease; }
.tabs-bar button:hover { color: var(--ink); }
.tabs-bar button[aria-selected="true"] { color: var(--accent-deep); border-bottom-color: var(--accent); }

/* ---------- provider settings drawer ---------- */
.settings-body { flex: 1; overflow-y: auto; padding: 6px 20px 26px; }
.set-section { padding: 18px 0 20px; border-bottom: 1px dashed var(--line-strong); }
.set-section:last-child { border-bottom: 0; }
.set-section .kicker { display: block; margin-bottom: 8px; }
.key-row { display: grid; grid-template-columns: 1fr auto; gap: 8px; }
.key-row input[type="password"], .key-row input[type="text"] { font-family: var(--mono); font-size: .82rem; }
#settingsDrawer input[type="text"] { font-family: var(--mono); font-size: .82rem; }
.set-hint { margin-top: 7px; }
#keyStatus b { color: var(--warm-deep); }

#toast { position: fixed; left: 50%; bottom: 24px; translate: -50% 0; z-index: 95; background: var(--pine-950); color: var(--cream); font-size: .84rem; font-weight: 500; padding: 11px 18px; border-radius: var(--r-full); box-shadow: var(--shadow-lg); display: flex; align-items: center; gap: 9px; opacity: 0; pointer-events: none; transition: opacity .2s ease; max-width: min(90vw, 520px); border: 1px solid var(--pine-700); }
#toast.show { opacity: 1; }
#toast .ic { color: #7fcbb6; }

/* reveal-on-scroll for report blocks */
.rv-in { animation: riseIn .4s var(--ease) backwards; }

/* ---------- responsive & motion ---------- */
@media (max-width: 700px) {
  .cite-pop { width: calc(100vw - 24px); }
  .tldr-body::first-letter { font-size: 2.2em; padding-right: 7px; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}

/* ---------- print: the dossier on paper ---------- */
@media print {
  .top, .rail, .rail-scrim, .ws-nav, .to-top, .read-progress, .scrim, .drawer, #toast, .sec-anchor, .collapse-toggle { display: none !important; }
  body { background: #fff; }
  .frame, .ws-layout { display: block; }
  .collapse-body[hidden] { display: block; }
  .ws-wrap { max-width: none; padding: 0; }
  .verdict-strip, .finding-card, .metric-card, .src-card, .tldr-card { box-shadow: none; break-inside: avoid; }
}
