/* council-book public record — site v4, "council chamber".

   The identity comes from the cast: every agent owns one seat colour, used everywhere it appears
   (the home roster, the contents dots, the run transcript's section rules, the agent pages and the
   charts). A coloured dot or rule always means an agent; asset classes are squares, never dots.
   Hierarchy comes from type, colour and spacing, not from shadows, glass or glow.

   Type (self-hosted, SIL Open Font License; see THIRD_PARTY_NOTICES.md): Space Grotesk 600 for
   headlines and the brand, IBM Plex Sans for body text, IBM Plex Mono for numbers and tickers.
   Scale 1.25 (12.8 / 16 / 20 / 25 / 31 / 39 / 49 px); spacing on a 4 / 8 px grid.

   Colour (a word always says it too):
   seats   code officers share a slate family (data, reference, volatility, event) · news amber ·
           macro lime · bull teal · bear coral · manager violet · control berry · swing Scout cyan ·
           swing Skeptic magenta · the checks share a
           steel family (auditor, risk engine, plan & costs) · human ivory · not an agent: grey
   book    long teal · short coral (the bull's and the bear's hues, on purpose); up teal · down
           coral, always with a sign and an arrow. The map's "Colour by" toggle: the 1-day move
           (default) or the P/L since open on one diverging binned scale (coral - grey - teal), or
           the asset class in five muted hues shown as fills, box frames and squares, never dots;
           each mode prints its value or word on the tile. Monograms in the list stay neutral
   states  LIVE / EXECUTED green · PROPOSED blue · REHEARSAL yellow · WARN amber · HALTED red ·
           SEALED slate · AWAITING grey · REJECTED / EXPIRED stone
   Dark only. Data-driven widths, positions and the map's tiles live in static/geometry.css,
   generated at build time: the CSP forbids inline style attributes. */

@font-face { font-family: "Space Grotesk"; font-style: normal; font-weight: 600; font-display: swap; src: url("fonts/space-grotesk-latin-600-normal.woff2") format("woff2"); }
@font-face { font-family: "IBM Plex Sans"; font-style: normal; font-weight: 400; font-display: swap; src: url("fonts/ibm-plex-sans-latin-400-normal.woff2") format("woff2"); }
@font-face { font-family: "IBM Plex Sans"; font-style: italic; font-weight: 400; font-display: swap; src: url("fonts/ibm-plex-sans-latin-400-italic.woff2") format("woff2"); }
@font-face { font-family: "IBM Plex Sans"; font-style: normal; font-weight: 600; font-display: swap; src: url("fonts/ibm-plex-sans-latin-600-normal.woff2") format("woff2"); }
@font-face { font-family: "IBM Plex Mono"; font-style: normal; font-weight: 400; font-display: swap; src: url("fonts/ibm-plex-mono-latin-400-normal.woff2") format("woff2"); }
@font-face { font-family: "IBM Plex Mono"; font-style: normal; font-weight: 500; font-display: swap; src: url("fonts/ibm-plex-mono-latin-500-normal.woff2") format("woff2"); }

:root,
:root[data-theme="dark"] {
  --font-head: "Space Grotesk", "IBM Plex Sans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
  --font-body: "IBM Plex Sans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --font-mono: "IBM Plex Mono", ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, monospace;

  /* the chamber: ink navy */
  --bg: #0e1320;
  --card: #151b2b;
  --raised: #1b2335;
  --inset: #111726;
  --line: #243049;
  --line-soft: #1d2638;
  --line-strong: #34425f;
  --hover: #1a2233;
  --track: #243049;

  /* text: every pair meets WCAG AA on --bg, --card, --raised and --inset (a test checks it) */
  --ink: #e6e8ef;
  --ink-strong: #f5f6fa;
  --muted: #8b93a7;
  --link: #9dbeff;
  --on-accent: #0e1320;

  /* seats: one colour per agent. The approved palette does not pass the data-viz palette checker
     (dark, on #0e1320): macro was darkened to #54a31b (user, 2026-09-26) so it separates from news for deutan vision;
     the risk seat's chroma is under the floor, and the code officers' slate family (data, reference,
     volatility, event) and the checks' steel family are near-grey by design. So a seat colour never
     carries meaning alone: it always comes with the agent's name, number or icon. See CHANGELOG. */
  --seat-data: #6f7890;
  --seat-reference: #8a93ab;
  --seat-vol: #7c7f9b;
  --seat-event: #6e8591;
  --seat-news: #e3b341;
  --seat-macro: #54a31b;
  --seat-bull: #3fc7a0;
  --seat-bear: #f07a5f;
  --seat-pm: #a68bfa;
  --seat-control: #d55aa6;
  --seat-audit: #9db8d3;
  --seat-risk: #7fa7c9;
  --seat-costs: #6a93ba;
  --seat-human: #e4d7bc;
  /* the swing book's two agents (user-chosen, 2026-09-28): Scout cyan, Skeptic magenta; both meet
     AA as text on --bg, --card, --raised and --inset (a test checks it) */
  --seat-scout: #3fb8e6;
  --seat-skeptic: #e05fb0;
  --seat-none: #5d6781;          /* a section that is not an agent */

  /* the book */
  --long: #3fc7a0;
  --short: #f07a5f;
  --up: #3fc7a0;
  --down: #f07a5f;
  --cash: #8b93a7;

  /* the map's tiles. --tile-ink2 is the tiles' second text colour; with --ink-strong it meets AA
     on --raised and on every fill below (a test checks it) */
  --tile-ink2: #c6ccd9;
  /* "Colour by" 1-day move / P/L since open: one diverging binned scale, three steps a side and a
     grey midpoint (never a hue). Coral and teal steps share an OKLab lightness (0.31 / 0.38 / 0.44,
     midpoint 0.26), so neither arm looks louder; each arm passes the data-viz validator's ordinal
     checks for monotone lightness, a single hue and steps >= 0.06 apart. The fills stay dark so the
     tile text keeps AA, which is why the light end sits under 2:1 on the card: every tile prints its
     value, and the legend's swatches touch */
  --dv-d3: #7a402f;
  --dv-d2: #5e3428;
  --dv-d1: #442921;
  --dv-n: #232527;
  --dv-u1: #153830;
  --dv-u2: #0e4c40;
  --dv-u3: #006150;
  /* "Colour by" asset class: five muted hues kept away from the seat colours and from teal/coral,
     validated as a categorical palette on --card (dataviz validate_palette.js --mode dark, adjacent
     and all pairs: PASS, worst CVD ΔE 8.7, worst normal-vision ΔE 16.3). They mark the class box's
     frame and the legend's squares; a tile wears a darker fill of the same hue (OKLCH C 0.06,
     lightness scaled toward the card) so its text keeps AA */
  --ac-stock: #4967b6;
  --ac-fund: #1fa0b5;
  --ac-crypto: #bc7c2d;
  --ac-commodity: #626e01;
  --ac-fx: #ac4f71;
  --ac-stock-fill: #2e3c5d;
  --ac-fund-fill: #1b545e;
  --ac-crypto-fill: #604324;
  --ac-commodity-fill: #383f17;
  --ac-fx-fill: #59323f;

  /* states and statuses (always with an icon or a word) */
  --executed: #74d19a;
  --proposed: #8db6ff;
  --rehearsal: #f4db6b;
  --warn: #f2c45a;
  --halted: #ff8b80;
  --sealed: #a3adc2;
  --awaiting: #9aa2b5;
  --stone: #aca69c;

  /* performance controls: the real book bright, the rest recessive */
  --c0: #f5f6fa;
  --c2: #8a93ab;
  --c2x: #b7bfd1;
  --c3: #aca69c;
  --c4a: #6e8591;
  --c4b: #c9c3b8;

  /* the terminal-log card */
  --term-bg: #0a0e18;
  --term-line: #222c43;
  --term-ink: #d6dae4;
  --term-muted: #939bb0;
  --term-cmd: #f5f6fa;
  --term-ok: #74d19a;
  --term-err: #ff8b80;
  --term-fb: #f2c45a;
  --term-link: #9dbeff;

  /* type: a 1.25 scale from 16 px, plus one label size for uppercase eyebrows, chips and tags
     (nothing is set smaller than --fs-label) */
  --fs-label: 0.75rem;
  --fs-1: 0.8rem;
  --fs-2: 1rem;
  --fs-3: 1.25rem;
  --fs-4: 1.563rem;
  --fs-5: 1.953rem;
  --fs-6: 2.441rem;
  --fs-7: 3.052rem;
  /* spacing: a 4 / 8 px grid */
  --sp-1: 4px;
  --sp-2: 8px;
  --sp-3: 12px;
  --sp-4: 16px;
  --sp-5: 24px;
  --sp-6: 32px;
  --sp-7: 48px;
  --sp-8: 64px;

  --radius: 6px;
  --ease: cubic-bezier(0.2, 0.7, 0.2, 1);
  color-scheme: dark;
}

/* The site is dark whatever the system says; this block only keeps the guard explicit. */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) { color-scheme: dark; }
}

/* seat and state hooks: .accent-<agent> sets --accent for dots, rules, avatars and chart marks */
/* --accent-ink: the seat colour as text; the three darkest slate seats fall under 4.5:1 on a card,
   so their text uses ink (their numerals, dots and rules keep the seat colour) */
.accent-data { --accent: var(--seat-data); --accent-ink: var(--ink-strong); }
.accent-reference { --accent: var(--seat-reference); }
.accent-vol { --accent: var(--seat-vol); --accent-ink: var(--ink-strong); }
.accent-event { --accent: var(--seat-event); --accent-ink: var(--ink-strong); }
.accent-news, .accent-analyst { --accent: var(--seat-news); }
.accent-macro { --accent: var(--seat-macro); }
.accent-bull { --accent: var(--seat-bull); }
.accent-bear { --accent: var(--seat-bear); }
.accent-pm { --accent: var(--seat-pm); }
.accent-control { --accent: var(--seat-control); }
.accent-audit { --accent: var(--seat-audit); }
.accent-risk { --accent: var(--seat-risk); }
.accent-costs { --accent: var(--seat-costs); }
.accent-human { --accent: var(--seat-human); }
.accent-scout { --accent: var(--seat-scout); }
.accent-skeptic { --accent: var(--seat-skeptic); }
.accent-neutral, .accent-code, .accent-proposed, .accent-stone, .accent-long, .accent-halted { --accent: var(--seat-none); }

/* ------------------------------------------------------------------ base */
*, *::before, *::after { box-sizing: border-box; }
[hidden] { display: none !important; }
html { -webkit-text-size-adjust: 100%; background: var(--bg); }
@media (min-width: 641px) { html { scroll-padding-top: 72px; } }
body { margin: 0; color: var(--ink); background: var(--bg); font: 400 16px/1.55 var(--font-body); overflow-wrap: break-word; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
a { color: var(--link); text-underline-offset: 3px; text-decoration-thickness: 1px; transition: color 0.15s var(--ease), text-decoration-color 0.15s var(--ease); }
a:hover { text-decoration-thickness: 2px; }
h1, h2, h3, h4 { font-family: var(--font-head); font-weight: 600; color: var(--ink-strong); line-height: 1.2; letter-spacing: -0.02em; }
h1 { font-size: var(--fs-6); margin: 0.1em 0 0.3em; }
h2 { font-size: var(--fs-4); margin: 0 0 0.8em; display: flex; flex-wrap: wrap; align-items: center; gap: 0.5em; }
h3 { font-size: var(--fs-3); margin: 1.4em 0 0.5em; }
h4 { font-size: var(--fs-2); margin: 1.1em 0 0.4em; letter-spacing: -0.01em; }
p { margin: 0 0 0.8em; }
code, .n, .num { font-family: var(--font-mono); font-variant-numeric: tabular-nums; }
code { font-size: 0.86em; color: var(--ink-strong); background: var(--inset); border: 1px solid var(--line); border-radius: 4px; padding: 0 4px; }
em, q { font-style: italic; }
.muted { color: var(--muted); }
.small { font-size: var(--fs-1); }
strong { color: var(--ink-strong); font-weight: 600; }
.sr { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.skip { position: absolute; left: -999px; }
.skip:focus { left: 16px; top: 8px; background: var(--card); color: var(--ink-strong); padding: 8px 12px; z-index: 10; border-radius: var(--radius); }
:focus-visible { outline: 2px solid var(--link); outline-offset: 2px; border-radius: 3px; }
.warn-text { color: var(--warn); }
.i { width: 1em; height: 1em; flex: none; vertical-align: -0.14em; }

/* ------------------------------------------------------------------ top bar */
.top { position: sticky; top: 0; z-index: 5; background: var(--bg); border-bottom: 1px solid var(--line); }
.top-inner { max-width: 1240px; margin: 0 auto; padding: 10px 16px; display: flex; flex-wrap: wrap; align-items: center; gap: 8px 24px; }
.brand { display: flex; align-items: center; gap: 10px; color: var(--ink-strong); text-decoration: none; font: 600 var(--fs-3)/1 var(--font-head); letter-spacing: -0.03em; }
.brand-mark { width: 40px; height: 24px; flex: none; overflow: visible; }
.brand-dash { color: var(--muted); }
.pages { display: flex; flex-wrap: wrap; gap: 0 4px; font-size: var(--fs-2); }
.pages a { position: relative; color: var(--muted); text-decoration: none; padding: 8px 10px; white-space: nowrap; }
.pages a:hover { color: var(--ink-strong); }
.pages a[aria-current="page"] { color: var(--ink-strong); }
.pages a[aria-current="page"]::after { content: ""; position: absolute; left: 10px; right: 10px; bottom: -11px; height: 2px; background: var(--ink-strong); }
.status-chips { margin-left: auto; display: flex; gap: 8px; }

/* ------------------------------------------------------------------ layout and contents */
/* main.layout: the page's header spans the width; below it the contents column and the page */
.layout { display: block; max-width: 1240px; margin: 0 auto; padding: var(--sp-6) var(--sp-4) var(--sp-7); }
.page-body { display: grid; grid-template-columns: 224px minmax(0, 1fr); gap: var(--sp-6); }
.layout-home .page-body { display: block; }
.page-main { min-width: 0; }
.page-hero .hero { margin: 0 0 var(--sp-5); }
.toc-phone { display: none; }
.toc-more > summary { display: flex; align-items: center; gap: var(--sp-2); padding: var(--sp-1) var(--sp-2); cursor: pointer; font: 600 var(--fs-label)/1.4 var(--font-body); text-transform: uppercase; letter-spacing: 0.1em; color: var(--muted); list-style: none; }
.toc-more > summary::-webkit-details-marker { display: none; }
.toc-more > summary::before { content: "▸"; content: "▸" / ""; transition: transform 0.2s var(--ease); }
.toc-more[open] > summary::before { transform: rotate(90deg); }
.toc-more ol { display: block; }
.toc { position: sticky; top: 76px; align-self: start; max-height: calc(100vh - 92px); overflow-y: auto; font-size: var(--fs-1); padding-right: 4px; scrollbar-width: thin; }
.toc-title { font: 600 var(--fs-label)/1.2 var(--font-body); text-transform: uppercase; letter-spacing: 0.1em; color: var(--muted); margin: 0 0 8px 8px; }
.toc ol { list-style: none; margin: 0; padding: 0; }
.toc li a { display: flex; align-items: center; gap: 10px; padding: 5px 8px; border-radius: 4px; color: var(--ink); text-decoration: none; }
.toc li a:hover { background: var(--hover); color: var(--ink-strong); }
.toc-label { flex: 1; min-width: 0; }
.toc-group { font: 600 var(--fs-label)/1.2 var(--font-body); text-transform: uppercase; letter-spacing: 0.1em; color: var(--muted); margin: 16px 0 4px 8px; }
.toc-group:first-child { margin-top: 0; }
.toc-lines { display: flex; flex-wrap: wrap; gap: 4px; padding: 4px 8px; }
.toc .toc-lines a.toc-line { display: inline-block; padding: 2px 6px; font: 500 var(--fs-label)/1.4 var(--font-mono); color: var(--ink); background: var(--card); border: 1px solid var(--line); border-radius: 4px; }
.toc .toc-lines a.toc-line.not-held { color: var(--muted); border-style: dashed; }
.dot { display: inline-block; width: 9px; height: 9px; border-radius: 50%; background: var(--accent, var(--seat-none)); flex: none; margin-right: 6px; vertical-align: middle; }
.toc .dot { margin-right: 0; }
.seat { display: inline-block; width: 10px; height: 10px; border-radius: 50%; background: var(--accent, var(--seat-none)); flex: none; vertical-align: middle; }
.tg { --c: var(--awaiting); display: inline-flex; align-items: center; gap: 4px; color: var(--c); font-size: var(--fs-2); }
.tg-ok { --c: var(--executed); }
.tg-fallback, .tg-timeout { --c: var(--warn); }
.tg-failed { --c: var(--halted); }
.tg-idle, .tg-waiting { --c: var(--awaiting); }
.tg-w { font: 500 var(--fs-label)/1.2 var(--font-body); color: var(--c); white-space: nowrap; }
.toc-legend { margin: 12px 8px 0; font-size: var(--fs-label); line-height: 1.7; color: var(--muted); }
.toc-legend .tg { vertical-align: -0.15em; margin-right: 3px; font-size: var(--fs-1); }
.to-toc { display: none; }

/* ------------------------------------------------------------------ page heads */
.hero { margin: 0 0 24px; }
.eyebrow { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; font: 600 var(--fs-label)/1.3 var(--font-body); text-transform: uppercase; letter-spacing: 0.1em; color: var(--muted); margin: 0; }
.eyebrow a { color: var(--muted); }
.lede { font-size: var(--fs-2); color: var(--muted); max-width: 66ch; margin: 0; }
.lastrun { font: 400 var(--fs-1)/1.3 var(--font-body); letter-spacing: 0; text-transform: none; color: var(--muted); }
.big { font-family: var(--font-head); font-size: var(--fs-3); font-weight: 600; letter-spacing: -0.01em; color: var(--ink-strong); }
.cta { display: inline-flex; align-items: center; gap: 8px; font-weight: 600; text-decoration: none; padding: 8px 14px; border-radius: var(--radius); border: 1px solid var(--line-strong); color: var(--ink-strong); transition: border-color 0.15s var(--ease), background-color 0.15s var(--ease); }
.cta:hover { border-color: var(--ink); background: var(--hover); }

/* ------------------------------------------------------------------ section cards: a rule in the seat colour */
.card { position: relative; background: var(--card); border: 1px solid var(--line); border-left: 3px solid var(--accent, var(--seat-none)); border-radius: var(--radius); padding: 24px; margin: 0 0 24px; }
.card > p:last-child { margin-bottom: 0; }
.card .num { display: inline-grid; place-items: center; min-width: 1.9em; height: 1.9em; padding: 0 5px; border-radius: 4px; font: 500 var(--fs-1)/1 var(--font-mono); color: var(--ink); background: var(--raised); border: 1px solid var(--line); letter-spacing: 0; }
.sub { display: flex; align-items: center; gap: 8px; margin: 1.6em 0 0.6em; font: 600 var(--fs-label)/1.2 var(--font-body); text-transform: uppercase; letter-spacing: 0.1em; color: var(--muted); }
.sub::before { content: ""; width: 16px; height: 2px; background: var(--accent, var(--seat-none)); }
.sub::after { content: ""; flex: 1; height: 1px; background: var(--line); }
.sub-then::before { background: var(--muted); }

/* ------------------------------------------------------------------ chips, marks, tags */
.chip { --c: var(--awaiting); display: inline-flex; align-items: center; gap: 4px; font: 500 var(--fs-label)/1.3 var(--font-mono); letter-spacing: 0.05em; text-transform: uppercase; color: var(--ink-strong); background: color-mix(in srgb, var(--c) 14%, var(--card)); border: 1px solid color-mix(in srgb, var(--c) 45%, var(--card)); border-radius: 4px; padding: 2px 7px; white-space: nowrap; vertical-align: middle; text-decoration: none; }
a.chip:hover { background: color-mix(in srgb, var(--c) 24%, var(--card)); }
.chip-lg { font-size: var(--fs-label); padding: 4px 10px; }
.state-awaiting { --c: var(--awaiting); }
.state-sealed { --c: var(--sealed); }
.state-proposed { --c: var(--proposed); }
.state-executed { --c: var(--executed); }
.state-stone { --c: var(--stone); }
.state-warn { --c: var(--warn); }
.state-halted { --c: var(--halted); }
.state-rehearsal { --c: var(--rehearsal); }
.dir-long { --c: var(--long); }
.dir-short { --c: var(--short); }
.dir-cash { --c: var(--cash); }
.trend { --c: var(--seat-reference); text-transform: none; letter-spacing: 0; font-family: var(--font-body); }
.tag { --c: var(--line-strong); text-transform: none; letter-spacing: 0; font-family: var(--font-body); font-size: var(--fs-1); color: var(--ink); }
/* kinds and authorities are not agents: neutral chips, the word carries the meaning */
.kind-llm, .kind-code, .kind-human, .auth-decides, .auth-advises, .auth-context, .auth-code { --c: var(--line-strong); }
.sev-low { --c: var(--stone); }
.sev-medium { --c: var(--warn); }
.sev-high { --c: var(--halted); }
.line-chip { --c: var(--line-strong); text-transform: none; letter-spacing: 0; font-family: var(--font-body); margin: 2px; }
.status-row { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; margin: 4px 0 12px; }
.verdict { text-transform: none; letter-spacing: 0; font: 600 var(--fs-label)/1.3 var(--font-body); }
.v-concede { --c: var(--stone); }
.v-refute { --c: var(--seat-bear); }
.v-dismissed { --c: var(--warn); }
.v-used { --c: var(--executed); }
.v-other { --c: var(--stone); }

.mark { --c: var(--awaiting); display: inline-flex; align-items: center; gap: 5px; padding: 1px 8px 1px 6px; border-radius: 4px; font: 500 var(--fs-1)/1.4 var(--font-body); color: var(--ink-strong); background: color-mix(in srgb, var(--c) 10%, transparent); border: 1px solid color-mix(in srgb, var(--c) 35%, transparent); vertical-align: middle; white-space: nowrap; }
.mark .i { color: var(--c); width: 14px; height: 14px; }
.mark-ok { --c: var(--executed); }
.mark-fallback, .mark-timeout { --c: var(--warn); }
.mark-failed { --c: var(--halted); }
.mark-idle, .mark-waiting { --c: var(--awaiting); }

.node-kind { --c: var(--line-strong); display: inline-block; font: 500 var(--fs-label)/1 var(--font-mono); letter-spacing: 0.08em; color: var(--ink); border: 1px solid color-mix(in srgb, var(--c) 55%, transparent); border-radius: 3px; padding: 3px 5px; vertical-align: middle; }
.node-kind { border-color: var(--c); }

.avatar { display: inline-grid; place-items: center; flex: none; width: 36px; height: 36px; border-radius: 50%; color: var(--accent, var(--seat-none)); background: color-mix(in srgb, var(--accent, var(--seat-none)) 13%, var(--card)); border: 1.5px solid var(--accent, var(--seat-none)); font-size: 18px; }
.avatar-sm { width: 28px; height: 28px; font-size: 14px; }
.avatar-lg { width: 56px; height: 56px; font-size: 26px; border-width: 2px; }

.ring { --p: 0%; --rc: var(--awaiting); position: relative; display: inline-grid; place-items: center; width: 56px; height: 56px; flex: none; }
.ring::before { content: ""; grid-area: 1 / 1; width: 100%; height: 100%; border-radius: 50%; background: conic-gradient(var(--rc) var(--p), var(--track) 0); -webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 6px), #000 calc(100% - 5.5px)); mask: radial-gradient(farthest-side, transparent calc(100% - 6px), #000 calc(100% - 5.5px)); }
.ring-v { grid-area: 1 / 1; font: 500 var(--fs-label)/1 var(--font-mono); color: var(--ink-strong); font-variant-numeric: tabular-nums; }
.ring-sm { width: 26px; height: 26px; }
.ring-sm::before { -webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 4px), #000 calc(100% - 3.5px)); mask: radial-gradient(farthest-side, transparent calc(100% - 4px), #000 calc(100% - 3.5px)); }
.ring-sm .ring-v { display: none; }
.ring-ok { --rc: var(--executed); }
.ring-fallback { --rc: var(--muted); }   /* partial values are neutral: no status hue on a seat hue */
.ring-failed { --rc: var(--halted); }
.ring-idle { --rc: var(--awaiting); }

/* ------------------------------------------------------------------ notices */
.alert { --c: var(--awaiting); display: grid; grid-template-columns: 36px minmax(0, 1fr); align-items: start; gap: 2px 12px; margin: 0 0 16px; padding: 12px 16px 12px 12px; border: 1px solid var(--line); border-left: 3px solid var(--c); border-radius: var(--radius); background: var(--card); }
.alert-icon { grid-row: span 2; display: grid; place-items: center; width: 36px; height: 36px; border-radius: 50%; background: color-mix(in srgb, var(--c) 16%, var(--card)); color: var(--c); font-size: 17px; }
.alert-top { grid-column: 2; display: flex; align-items: baseline; justify-content: space-between; gap: 8px; margin: 2px 0 0; }
.alert-title { font-size: var(--fs-2); font-weight: 600; color: var(--ink-strong); }
.alert-when { flex: none; font: var(--fs-label)/1 var(--font-mono); color: var(--muted); }
.alert-text { grid-column: 2; font-size: var(--fs-2); color: var(--ink); min-width: 0; }
.alert-text p { margin: 2px 0 0; }
.alert-text .status-row { margin: 4px 0 2px; }
.alert-rehearsal { --c: var(--rehearsal); }
.alert-pending { --c: var(--proposed); }
.alert-warn { --c: var(--warn); }
.alert-run { --c: var(--line-strong); }
.alert-run .alert-icon { color: var(--ink-strong); background: var(--raised); }
.fail-list { list-style: none; margin: 4px 0 0; padding: 0; }
.fail-list li { margin: 4px 0 0; padding-left: 12px; border-left: 2px solid color-mix(in srgb, var(--warn) 50%, var(--line)); }
.fail-list a { font-weight: 600; }
.failnote { display: grid; grid-template-columns: 30px minmax(0, 1fr); gap: 12px; margin: 12px 0 16px; padding: 12px 14px 12px 12px; border-radius: var(--radius); border: 1px solid color-mix(in srgb, var(--warn) 35%, var(--line)); background: color-mix(in srgb, var(--warn) 6%, var(--card)); }
.failnote .alert-icon { --c: var(--warn); grid-row: auto; width: 30px; height: 30px; font-size: 15px; }
.failnote p { margin: 0 0 4px; font-size: var(--fs-2); }
.failnote p:last-child { margin: 0; }

/* ------------------------------------------------------------------ stat tiles (run and agent pages) */
.strip { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; margin: 0 0 24px; background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; }
.st { min-width: 0; margin: 0; padding: 14px 16px; box-shadow: 1px 0 0 var(--line), 0 1px 0 var(--line); }
.st dt { display: flex; align-items: center; gap: 6px; font: 500 var(--fs-1)/1.3 var(--font-body); color: var(--muted); }
.st dt .i { color: var(--muted); }
.st dd { margin: 6px 0 0; }
.st-v { font: 500 var(--fs-4)/1.15 var(--font-mono); font-variant-numeric: tabular-nums; color: var(--ink-strong); letter-spacing: -0.02em; }
.st-v-sm { font-size: var(--fs-3); }
.st-of { font: 400 var(--fs-1)/1 var(--font-body); color: var(--muted); letter-spacing: 0; }
.st-sub { font-size: var(--fs-1); line-height: 1.35; color: var(--muted); margin-top: 4px !important; }
.st-ring { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 2px 12px; }
.st-ring dt { grid-column: 1 / -1; }
.st-ring dd { margin: 6px 0 0; }
.strip-run { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.strip-agents { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.strip-agent { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.strip-agent.strip-n1 { grid-template-columns: minmax(0, 320px); }
.strip-agent.strip-n2, .strip-agent.strip-n4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.st-model code { white-space: normal; overflow-wrap: break-word; word-break: break-word; font-size: var(--fs-1); }

/* ------------------------------------------------------------------ the kill-switch meter */
.meter { position: relative; height: 6px; margin: 10px 0 4px !important; border-radius: 3px; background: var(--track); }
.meter-fill { position: absolute; left: 0; top: 0; bottom: 0; border-radius: 3px; background: var(--executed); }
.meter-fill.meter-warn { background: var(--warn); }
.meter-fill.meter-halted { background: var(--halted); }
.meter-fill.meter-none { display: none; }
.meter-tick { position: absolute; top: -3px; bottom: -3px; width: 2px; margin-left: -1px; background: var(--warn); }

/* ================================================================== HOME: THE BOOK */
.book { margin: 0 0 var(--sp-8); }
/* the header: the title on the left, the council's teaser beside it (under it below 1100 px) */
.book-head { display: grid; grid-template-columns: minmax(0, 1fr); align-items: end; gap: var(--sp-4) var(--sp-7); margin: 0 0 var(--sp-5); }
.book-title h1 { font-size: var(--fs-7); margin: var(--sp-2) 0; letter-spacing: -0.035em; }
.book-title .lede { max-width: 62ch; }
.teaser { display: grid; gap: var(--sp-3); min-width: 0; }
.teaser-chamber { display: none; }
.hemi-teaser { display: block; width: 100%; max-width: 320px; height: auto; margin: 0 auto; }
.teaser-h { display: block; margin: 0 0 var(--sp-1); font: 600 var(--fs-label)/1.3 var(--font-body); text-transform: uppercase; letter-spacing: 0.1em; color: var(--muted); }
.teaser-t { margin: 0; font-size: var(--fs-2); line-height: 1.5; color: var(--ink); max-width: 62ch; }
.teaser-go { margin: var(--sp-2) 0 0; }
.teaser-go a { font-weight: 600; }
.seat-row { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: var(--sp-1); }
.seat-n { display: grid; place-items: center; width: 20px; height: 20px; border-radius: 50%; background: var(--accent, var(--seat-none)); color: var(--on-accent); font: 500 var(--fs-label)/1 var(--font-mono); }
@media (min-width: 1100px) {
  .book-head { grid-template-columns: minmax(0, 1fr) minmax(0, 560px); align-items: center; }
  .teaser { grid-template-columns: 240px minmax(0, 1fr); align-items: center; gap: var(--sp-5); padding: var(--sp-5); border: 1px solid var(--line); border-radius: var(--radius); background: var(--card); }
  .teaser-chamber { display: block; }
  .seat-row { display: none; }
  .council-head { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 360px); grid-template-areas: "eyebrow eyebrow" "title title" "lede key"; align-items: end; column-gap: var(--sp-7); }
  .council-eyebrow { grid-area: eyebrow; }
  .council-head h2 { grid-area: title; }
  .council-lede { grid-area: lede; margin: 0; }
  .council-key { grid-area: key; }
}
.hemi-teaser .hemi-n { font-size: 4.4px; }

/* the book map: a two-level squarified treemap (asset-class boxes, then line tiles), positions
   from geometry.css; the tiles' fill follows the "Colour by" toggle (below) */
.bmap-split { margin: 0 0 var(--sp-2); font-size: .95em; }
.bmap-fig { position: relative; margin: 0 0 var(--sp-3); }
.bmap { position: relative; list-style: none; margin: 0; padding: 0; aspect-ratio: 12 / 5; }
.tgrp { position: absolute; container: tgroup / size; }
.tgrp::before { content: ""; position: absolute; inset: 2px; border-radius: 6px; background: var(--inset); border: 1px solid var(--line-soft); }
.tgrp-cash::before { display: none; }
.tgrp-h { position: absolute; left: 4px; right: 4px; top: 2px; height: 20px; margin: 0; display: flex; align-items: center; gap: var(--sp-2); padding: 0 var(--sp-2); font: 600 var(--fs-label)/1 var(--font-body); letter-spacing: 0.08em; text-transform: uppercase; color: var(--muted); white-space: nowrap; overflow: hidden; }
.tgrp-name { overflow: hidden; text-overflow: ellipsis; }
.tgrp-w { flex: none; font: 500 var(--fs-label)/1 var(--font-mono); letter-spacing: 0; text-transform: none; color: var(--ink); }
@container tgroup (width < 120px) { .tgrp-w { display: none; } }
.tgrp-tiles { position: absolute; left: 4px; right: 4px; top: 4px; bottom: 4px; list-style: none; margin: 0; padding: 0; }
.tgrp.has-head .tgrp-tiles { top: 22px; }
.tm { position: absolute; padding: 1px; container: tile / size; }
.tm-in { position: relative; display: flex; flex-direction: column; align-items: flex-start; width: 100%; height: 100%; padding: var(--sp-2) var(--sp-3); overflow: hidden; border-radius: 4px; background: var(--raised); color: var(--ink-strong); text-decoration: none; transition: box-shadow 0.18s var(--ease); }
/* hover and focus: a ring, never a lighter fill (the moves' colours keep their contrast) */
a.tm-in:hover { box-shadow: inset 0 0 0 2px var(--ink-strong); }
a.tm-in:focus-visible { outline-offset: -3px; outline-color: var(--ink-strong); }
.tm-t { font: 500 var(--fs-2)/1.2 var(--font-mono); letter-spacing: 0.02em; white-space: nowrap; }
.tm-n { font-size: var(--fs-1); line-height: 1.3; color: var(--tile-ink2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
.tm-foot { margin-top: auto; display: flex; flex-direction: column; align-items: flex-start; min-width: 0; }
.tm-w { font: 600 var(--fs-5)/1.05 var(--font-head); letter-spacing: -0.03em; white-space: nowrap; }
.tm-d { margin-top: 2px; font-size: var(--fs-1); }
.tm-d .mv { font-size: var(--fs-1); }
/* a short: a coral edge, a hatch band along it, a solid "short" pill and a minus sign. A 1px dark
   rule between the edge and the fill keeps the edge visible on every "Colour by" fill (coral too) */
.tm.short .tm-in { box-shadow: inset 3px 0 0 var(--short), inset 4px 0 0 var(--bg); background-image: repeating-linear-gradient(135deg, color-mix(in srgb, var(--short) 30%, transparent) 0 2px, transparent 2px 7px); background-size: 12px 100%; background-repeat: no-repeat; background-position: 4px 0; padding-left: 20px; }
.tm.short a.tm-in:hover { box-shadow: inset 3px 0 0 var(--short), inset 4px 0 0 var(--bg), inset 0 0 0 2px var(--ink-strong); }
.tm-s { display: inline-block; margin: 0 0 var(--sp-1); padding: 1px 6px; border-radius: 3px; background: var(--short); color: var(--on-accent); font: 600 var(--fs-label)/1.3 var(--font-body); letter-spacing: 0.08em; text-transform: uppercase; }
.tm-c { position: absolute; top: var(--sp-2); right: var(--sp-2); display: inline-flex; align-items: center; gap: 6px; font: 400 var(--fs-label)/1 var(--font-mono); color: var(--tile-ink2); }
.tm-c .seat { width: 8px; height: 8px; box-shadow: 0 0 0 2px var(--bg); }   /* a dark ring: the dot reads on every fill */
.tm.cash .tm-in { background: var(--bg); border: 1px dashed var(--line-strong); color: var(--muted); }
.tm.cash .tm-w { color: var(--ink); }
/* what fits is decided by the tile's real size (container queries): no label is ever clipped */
@container tile (width < 260px) { .tm-c-t { display: none; } }
@container tile (height < 112px) { .tm-n { display: none; } }
@container tile (height < 96px) or (width < 128px) { .tm-w { font-size: var(--fs-3); } }
@container tile (width < 136px) { .tm-dk { display: none; } }
/* the value the fill stands for stays printed while its digits fit (up to 7 characters, "−13.78%"):
   the arrow goes first (the sign still gives the direction), then the value; a short's wider left
   padding and an 8-character value (dw / pw: "+123.45%") need more room */
@container tile (width < 96px) { .tm-d .mv-arrow { display: none; } }
@container tile (height < 76px) or (width < 68px) { .tm-d { display: none; } }
@container tile (width < 88px) { .tm.short .tm-d { display: none; } }
@container tile (width < 112px) { #cb-day:checked ~ .bmap .tm.dw .tm-d, #cb-pnl:checked ~ .bmap .tm.pw .tm-d { display: none; } }
@container tile (height < 60px) or (width < 84px) {
  .tm-in { padding: var(--sp-1) 6px; }
  .tm.short .tm-in { padding-left: 14px; background-size: 8px 100%; }
  .tm-t { font-size: var(--fs-label); }
  .tm-w { font-size: var(--fs-2); }
  .tm-s { display: none; }
  .tm-c { top: var(--sp-1); right: var(--sp-1); }
}
@container tile (height < 40px) or (width < 48px) { .tm-w { display: none; } }
@container tile (height < 22px) or (width < 34px) { .tm-t, .tm-c { display: none; } .tm-in { padding: 0; } }
@media (max-width: 699px) {
  .bmap { aspect-ratio: 4 / 5; }
}

/* "Colour by": radio inputs (visually hidden, still keyboard-focusable) ahead of the options, the
   legend and the map, which ":checked ~" restyles. No script. */
.cb-in { position: absolute; top: 0; left: 0; width: 1px; height: 1px; margin: 0; opacity: 0; pointer-events: none; }
.cb-head { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-2) var(--sp-3); margin: 0 0 var(--sp-2); }
.cb-title { margin: 0; font: 600 var(--fs-label)/1.3 var(--font-body); text-transform: uppercase; letter-spacing: 0.1em; color: var(--muted); }
.cb-opts { display: flex; flex-wrap: wrap; gap: var(--sp-2); }
.cb-opt { display: inline-flex; align-items: center; min-height: 32px; padding: var(--sp-1) var(--sp-3); border-radius: 4px; font-size: var(--fs-1); color: var(--ink); border: 1px solid var(--line-strong); background: var(--card); cursor: pointer; user-select: none; transition: background-color 0.15s var(--ease), border-color 0.15s var(--ease), color 0.15s var(--ease); }
.cb-opt:hover { border-color: var(--ink); color: var(--ink-strong); }
#cb-day:checked ~ .cb-head [for="cb-day"],
#cb-pnl:checked ~ .cb-head [for="cb-pnl"],
#cb-class:checked ~ .cb-head [for="cb-class"] { background: var(--ink-strong); border-color: var(--ink-strong); color: var(--bg); }
#cb-day:focus-visible ~ .cb-head [for="cb-day"],
#cb-pnl:focus-visible ~ .cb-head [for="cb-pnl"],
#cb-class:focus-visible ~ .cb-head [for="cb-class"] { outline: 2px solid var(--link); outline-offset: 2px; }

/* the legend under the toggle: one per mode, stacked in one grid cell so switching never moves
   the map (the cell is as tall as the tallest legend); the hidden ones are hidden from everyone */
.cbk { display: grid; margin: 0 0 var(--sp-3); }
.cbk-mode { grid-area: 1 / 1; min-width: 0; visibility: hidden; }
#cb-day:checked ~ .cbk .cbk-day,
#cb-pnl:checked ~ .cbk .cbk-pnl,
#cb-class:checked ~ .cbk .cbk-class { visibility: visible; }
.cbk-note { margin: 0 0 var(--sp-2); font-size: var(--fs-1); line-height: 1.4; color: var(--muted); }
.cbk-row { display: flex; flex-wrap: wrap; align-items: flex-start; gap: var(--sp-2) var(--sp-5); }
.cbk-scale { display: flex; width: min(100%, 392px); margin: 0; padding: 0 0 18px; list-style: none; }
.cbk-b { position: relative; flex: 1 1 0; min-width: 0; }
.cbk-b + .cbk-b { margin-left: 2px; }
.cbk-sw { display: block; height: 14px; border-radius: 2px; }
.cbk-day .cbk-sw { background: var(--fd); }
.cbk-pnl .cbk-sw { background: var(--fp); }
.cbk-t { position: absolute; top: 18px; right: -1px; transform: translateX(50%); font: 400 var(--fs-label)/1 var(--font-mono); color: var(--muted); white-space: nowrap; }
.cbk-t-mid { right: auto; left: 50%; transform: translateX(-50%); }   /* the grey bin: one centred "±a%" */
.cbk-nd { display: inline-flex; align-items: center; gap: 6px; font-size: var(--fs-1); color: var(--muted); }
.cbk .cbk-sw-nd { width: 14px; background: transparent; border: 1px solid var(--line-strong); }
.cbk-empty { margin: 0; font-size: var(--fs-1); line-height: 1.4; color: var(--ink); }
.cbk-classes { display: flex; flex-wrap: wrap; gap: var(--sp-2) var(--sp-4); margin: 0; padding: 0; list-style: none; font-size: var(--fs-1); color: var(--ink); }
.cbk-c { display: inline-flex; align-items: center; gap: 6px; }
.cbk-sq { width: 12px; height: 12px; border-radius: 2px; background: var(--fcm); }

/* each tile carries its bin per mode; the checked mode picks which one fills it */
.bd-d3 { --fd: var(--dv-d3); } .bd-d2 { --fd: var(--dv-d2); } .bd-d1 { --fd: var(--dv-d1); } .bd-n { --fd: var(--dv-n); }
.bd-u1 { --fd: var(--dv-u1); } .bd-u2 { --fd: var(--dv-u2); } .bd-u3 { --fd: var(--dv-u3); } .bd-nd { --fd: transparent; }
.bp-d3 { --fp: var(--dv-d3); } .bp-d2 { --fp: var(--dv-d2); } .bp-d1 { --fp: var(--dv-d1); } .bp-n { --fp: var(--dv-n); }
.bp-u1 { --fp: var(--dv-u1); } .bp-u2 { --fp: var(--dv-u2); } .bp-u3 { --fp: var(--dv-u3); } .bp-nd { --fp: transparent; }
.bc-stock { --fc: var(--ac-stock-fill); --fcm: var(--ac-stock); }
.bc-fund { --fc: var(--ac-fund-fill); --fcm: var(--ac-fund); }
.bc-crypto { --fc: var(--ac-crypto-fill); --fcm: var(--ac-crypto); }
.bc-commodity { --fc: var(--ac-commodity-fill); --fcm: var(--ac-commodity); }
.bc-fx { --fc: var(--ac-fx-fill); --fcm: var(--ac-fx); }
.bc-swing { --fc: var(--ac-stock-fill); --fcm: var(--seat-scout); }
.bc-other { --fc: var(--raised); --fcm: var(--line-strong); }
#cb-day:checked ~ .bmap .tm:not(.cash) .tm-in { background-color: var(--fd); }
#cb-pnl:checked ~ .bmap .tm:not(.cash) .tm-in { background-color: var(--fp); }
#cb-class:checked ~ .bmap .tm:not(.cash) .tm-in { background-color: var(--fc); }
/* no value in this mode: an empty frame, never the grey "flat" bin */
#cb-day:checked ~ .bmap .bd-nd .tm-in,
#cb-pnl:checked ~ .bmap .bp-nd .tm-in { border: 1px solid var(--line-strong); }
#cb-class:checked ~ .bmap .tgrp::before { border: 2px solid var(--fcm); }
#cb-class:checked ~ .bmap .tgrp-h::before { content: ""; flex: none; width: 10px; height: 10px; border-radius: 2px; background: var(--fcm); }
/* a narrow box keeps its whole name rather than the square (its frame wears the class colour):
   the longest header with a square, "ETFs & indices 100.0%", needs about 200px */
@container tgroup (width < 208px) { #cb-class:checked ~ .bmap .tgrp-h::before { display: none; } }
/* the value the colour stands for is printed on the tile, in ink: the fill carries the colour */
.tm-dv { display: none; align-items: baseline; gap: 6px; white-space: nowrap; }
#cb-day:checked ~ .bmap .tm-dv-day,
#cb-pnl:checked ~ .bmap .tm-dv-pnl,
#cb-class:checked ~ .bmap .tm-dv-class { display: inline-flex; }
.tm-dk { font: 500 var(--fs-label)/1 var(--font-mono); color: var(--tile-ink2); }
.tm-dv-class { color: var(--tile-ink2); }
.tm .mv, .tm .mv-arrow { color: var(--ink-strong); }   /* explicit: Chrome paints an inherited colour inside a link wrongly once a container query restyles the arrow */
@media (prefers-reduced-motion: no-preference) {
  .tm-in { transition: box-shadow 0.18s var(--ease), background-color 0.2s var(--ease); }
}
.bmap-key { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-2) var(--sp-5); margin: var(--sp-3) 0 0; font-size: var(--fs-1); color: var(--muted); }
.key-item { display: inline-flex; align-items: center; gap: 6px; }
.key-sw { display: inline-block; width: 12px; height: 12px; border-radius: 2px; background: var(--raised); border: 1px solid var(--line-strong); }
.key-sw.ac-cash { background: var(--bg); border: 1px dashed var(--line-strong); }
.key-short { background: repeating-linear-gradient(135deg, color-mix(in srgb, var(--short) 45%, transparent) 0 2px, var(--raised) 2px 5px); border-color: var(--short); box-shadow: inset 2px 0 0 var(--short); }
.key-note { margin-left: auto; }
.basis { font-size: var(--fs-2); margin: var(--sp-4) 0 var(--sp-3); color: var(--ink); }
.basis-more { color: var(--muted); }

.ledger { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); margin: 0 0 var(--sp-5); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.lg { min-width: 0; margin: 0; padding: var(--sp-3) var(--sp-4) var(--sp-3) 0; }
.lg + .lg { padding-left: var(--sp-4); border-left: 1px solid var(--line); }
.lg dt { font: 600 var(--fs-label)/1.3 var(--font-body); text-transform: uppercase; letter-spacing: 0.1em; color: var(--muted); }
.lg dd { margin: var(--sp-1) 0 0; }
.lg-v { font: 500 var(--fs-4)/1.2 var(--font-mono); letter-spacing: -0.02em; color: var(--ink-strong); font-variant-numeric: tabular-nums; }
.lg-v .mv { font-size: var(--fs-3); }
.lg-v-sm { font: 600 var(--fs-2)/1.4 var(--font-body); letter-spacing: 0; }
.lg-of { font: 400 var(--fs-2)/1 var(--font-body); color: var(--muted); letter-spacing: 0; }
.lg-s { font-size: var(--fs-1); line-height: 1.35; color: var(--muted); }
.lg-kill .meter { margin: var(--sp-2) 0 var(--sp-1) !important; }
.kill-state { color: var(--ink-strong); }
.kill-state.kill-warn { color: var(--warn); }
.kill-state.kill-halted { color: var(--halted); }
.ledger.lg-n4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.ledger.lg-n5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.ledger-asset { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); margin: 0 0 var(--sp-3); }

/* the list: a broker-style holdings table, percent only */
.hx { position: relative; margin: 0 0 var(--sp-3); border: 1px solid var(--line); border-radius: var(--radius); background: var(--card); overflow: hidden; }
.hf-in { position: absolute; top: 0; left: 0; width: 1px; height: 1px; margin: 0; opacity: 0; pointer-events: none; }
.hx-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--sp-2) var(--sp-4); padding: var(--sp-3) var(--sp-4); border-bottom: 1px solid var(--line); }
.hx-title { margin: 0; font: 600 var(--fs-label)/1.3 var(--font-body); text-transform: uppercase; letter-spacing: 0.1em; color: var(--muted); }
.hf-chips { display: flex; flex-wrap: wrap; gap: var(--sp-2); }
.hf-chip { display: inline-flex; align-items: center; gap: var(--sp-2); min-height: 32px; padding: var(--sp-1) var(--sp-3); border-radius: 4px; font-size: var(--fs-1); color: var(--ink); border: 1px solid var(--line-strong); background: var(--card); cursor: pointer; user-select: none; transition: background-color 0.15s var(--ease), border-color 0.15s var(--ease), color 0.15s var(--ease); }
.hf-chip:hover { border-color: var(--ink); color: var(--ink-strong); }
.hf-n { font: 400 var(--fs-label)/1 var(--font-mono); color: var(--muted); }
#hf-all:checked ~ .hx-head [for="hf-all"],
#hf-stock:checked ~ .hx-head [for="hf-stock"],
#hf-fund:checked ~ .hx-head [for="hf-fund"],
#hf-crypto:checked ~ .hx-head [for="hf-crypto"],
#hf-commodity:checked ~ .hx-head [for="hf-commodity"],
#hf-fx:checked ~ .hx-head [for="hf-fx"] { background: var(--ink-strong); border-color: var(--ink-strong); color: var(--bg); }
#hf-all:checked ~ .hx-head [for="hf-all"] .hf-n,
#hf-stock:checked ~ .hx-head [for="hf-stock"] .hf-n,
#hf-fund:checked ~ .hx-head [for="hf-fund"] .hf-n,
#hf-crypto:checked ~ .hx-head [for="hf-crypto"] .hf-n,
#hf-commodity:checked ~ .hx-head [for="hf-commodity"] .hf-n,
#hf-fx:checked ~ .hx-head [for="hf-fx"] .hf-n { color: var(--bg); }
#hf-all:focus-visible ~ .hx-head [for="hf-all"],
#hf-stock:focus-visible ~ .hx-head [for="hf-stock"],
#hf-fund:focus-visible ~ .hx-head [for="hf-fund"],
#hf-crypto:focus-visible ~ .hx-head [for="hf-crypto"],
#hf-commodity:focus-visible ~ .hx-head [for="hf-commodity"],
#hf-fx:focus-visible ~ .hx-head [for="hf-fx"] { outline: 2px solid var(--link); outline-offset: 2px; }
#hf-stock:checked ~ .hx-body .hr:not(.g-stock),
#hf-fund:checked ~ .hx-body .hr:not(.g-fund),
#hf-crypto:checked ~ .hx-body .hr:not(.g-crypto),
#hf-commodity:checked ~ .hx-body .hr:not(.g-commodity),
#hf-fx:checked ~ .hx-body .hr:not(.g-fx) { display: none; }
.cnt { display: none; }
#hf-all:checked ~ .hx-body .cnt-all,
#hf-stock:checked ~ .hx-body .cnt-stock,
#hf-fund:checked ~ .hx-body .cnt-fund,
#hf-crypto:checked ~ .hx-body .cnt-crypto,
#hf-commodity:checked ~ .hx-body .cnt-commodity,
#hf-fx:checked ~ .hx-body .cnt-fx { display: inline; }
#hf-stock:checked ~ .hx-body .notheld.none-stock,
#hf-fund:checked ~ .hx-body .notheld.none-fund,
#hf-crypto:checked ~ .hx-body .notheld.none-crypto,
#hf-commodity:checked ~ .hx-body .notheld.none-commodity,
#hf-fx:checked ~ .hx-body .notheld.none-fx,
#hf-all:checked ~ .hx-body .notheld.none-all { display: none; }
.hf-empty { display: none; margin: 0; padding: var(--sp-4); font-size: var(--fs-2); color: var(--muted); border-top: 1px solid var(--line-soft); }
#hf-stock:checked ~ .hx-body .only-stock,
#hf-fund:checked ~ .hx-body .only-fund,
#hf-crypto:checked ~ .hx-body .only-crypto,
#hf-commodity:checked ~ .hx-body .only-commodity,
#hf-fx:checked ~ .hx-body .only-fx { display: block; }
.hf-none { margin: 0; padding: var(--sp-4); color: var(--muted); }

.htable { width: 100%; table-layout: fixed; border-collapse: collapse; font-size: var(--fs-2); }
.htable th { padding: var(--sp-2) var(--sp-4); font: 500 var(--fs-label)/1.3 var(--font-body); color: var(--muted); text-align: left; background: transparent; border-bottom: 1px solid var(--line); white-space: nowrap; }
.htable th.n, .htable td.n { text-align: right; }
.htable td { padding: var(--sp-2) var(--sp-4); vertical-align: middle; border-top: 1px solid var(--line-soft); }
.htable tbody tr:first-child td { border-top: 0; }
.htable tr.hr { position: relative; transition: background-color 0.15s var(--ease); }
.htable tr.hr:hover { background: var(--hover); }
.c-asset { width: 33%; }
.c-day { width: 11%; }
.c-pos { width: 15%; }
.c-pnl { width: 12%; }
.c-weight { width: 18%; }
.c-ref { width: 11%; }
.hx.no-pnl .c-asset { width: 38%; }
.hx.no-pnl .c-weight { width: 24%; }
.hx.no-pnl .c-ref { width: 12%; }
.hx.no-day .c-asset { width: 38%; }
.hx.no-day .c-weight { width: 23%; }
.hx.no-day .c-ref { width: 12%; }
.hx.no-day.no-pnl .c-asset { width: 45%; }
.hx.no-day.no-pnl .c-pos { width: 17%; }
.hx.no-day.no-pnl .c-weight { width: 26%; }
.th-key { display: none; }
.asset { display: flex; align-items: center; gap: var(--sp-3); min-width: 0; }
.asset-text { min-width: 0; }
.asset-top { display: flex; align-items: center; gap: var(--sp-2); margin: 0; line-height: 1.3; }
.tick { font: 500 var(--fs-2)/1.3 var(--font-mono); color: var(--ink-strong); letter-spacing: 0.01em; }
/* the whole row opens the line's page (the ticker's link stretches over the row) */
.row-link { color: inherit; text-decoration: none; }
.row-link::after { content: ""; position: absolute; inset: 0; }
.row-link:hover .tick { text-decoration: underline; text-underline-offset: 3px; }
.row-link:focus-visible { outline: none; }
.row-link:focus-visible::after { outline: 2px solid var(--link); outline-offset: -2px; }
.asset-name { margin: 1px 0 0; font-size: var(--fs-1); line-height: 1.3; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pos-line { display: none; margin: 2px 0 0; font-size: var(--fs-1); line-height: 1.3; color: var(--muted); }
.hnote-asset { margin-left: 0 !important; margin-bottom: var(--sp-2); }
.hnote { margin: var(--sp-2) 0 0 48px; font-size: var(--fs-1); line-height: 1.4; color: var(--ink); padding-left: var(--sp-3); border-left: 2px solid var(--seat-pm); }
/* a monogram: neutral letters on a neutral tile (never a logo, never an asset-class hue) */
.mono { display: grid; place-items: center; flex: none; width: 36px; height: 36px; border-radius: 4px; font: 500 var(--fs-label)/1 var(--font-mono); letter-spacing: 0.02em; color: var(--ink-strong); background: var(--raised); border: 1px solid var(--line-strong); }
.mono-lg { width: 72px; height: 72px; font-size: var(--fs-2); border-radius: 6px; }
.hr.flat .mono { opacity: 0.6; }
.hr.flat .tick { color: var(--ink); }
.hr.flat .wv { color: var(--muted); font-weight: 400; }
.hr.flat.ref-above .h-ref { color: var(--ink-strong); }
.chip.sess { --c: var(--line-strong); text-transform: none; letter-spacing: 0; font: 400 var(--fs-label)/1.2 var(--font-mono); padding: 1px 5px; color: var(--muted); }
.mv { font-family: var(--font-mono); font-variant-numeric: tabular-nums; white-space: nowrap; }
.mv-up { color: var(--up); }
.mv-down { color: var(--down); }
.mv-flat, .mv-none { color: var(--muted); }
.mv-arrow { font-size: 0.72em; margin-right: var(--sp-1); vertical-align: 0.1em; }
.pos { font-weight: 600; color: var(--ink-strong); }
.pos-short { color: var(--short); }
.h-pos { white-space: nowrap; }
.lev { font: 500 var(--fs-label)/1 var(--font-mono); color: var(--ink-strong); padding: 2px 5px; border-radius: 3px; border: 1px solid var(--line-strong); }
.chip.set-real { --c: var(--line-strong); text-transform: none; letter-spacing: 0; color: var(--muted); }
.chip.set-cfd { --c: var(--warn); }
.h-weight .wv { font: 500 var(--fs-2)/1.3 var(--font-mono); color: var(--ink-strong); }
.htable td.h-weight { position: relative; }
.wref-txt { display: none; font-size: var(--fs-label); color: var(--muted); }
.wbar { position: relative; display: block; height: 4px; margin-top: var(--sp-2); border-radius: 2px; background: var(--track); }
.htable td.h-weight .wbar { position: absolute; left: var(--sp-4); right: var(--sp-4); bottom: 6px; margin: 0; }
.wfill { position: absolute; left: 0; top: 0; bottom: 0; border-radius: 2px; }
.wfill.long, .wfill.short { min-width: 3px; }
.wfill.long { background: var(--long); }
.wfill.short { background: var(--short); }
.wfill.zero { display: none; }
.wref { position: absolute; top: -4px; bottom: -4px; width: 2px; margin-left: -1px; background: var(--ink-strong); box-shadow: 0 0 0 1.5px var(--card); }
.h-ref { color: var(--muted); }
.notheld { border-top: 1px solid var(--line); }
.notheld > summary { display: flex; align-items: center; gap: var(--sp-2); padding: var(--sp-3) var(--sp-4); font-size: var(--fs-1); color: var(--muted); cursor: pointer; list-style: none; }
.notheld > summary::-webkit-details-marker { display: none; }
.notheld > summary:hover { color: var(--ink-strong); background: var(--hover); }
.notheld .chev { transition: transform 0.2s var(--ease); }
.notheld[open] .chev { transform: rotate(90deg); }
.notheld[open] > summary { border-bottom: 1px solid var(--line-soft); }
.read-list { margin: 0 0 var(--sp-2); }
.legend { list-style: none; padding: 0; margin: var(--sp-2) 0; display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-2) var(--sp-5); color: var(--muted); }
.swatch { display: inline-block; width: 12px; height: 12px; border-radius: 2px; margin-right: 6px; vertical-align: -1px; }
.sw-long { background: var(--long); }
.sw-short { background: var(--short); }
.sw-ref { background: var(--ink-strong); width: 3px; border-radius: 0; }

/* ================================================================== HOME: THE COUNCIL */
.council { margin: 0 0 var(--sp-8); padding-top: var(--sp-7); border-top: 1px solid var(--line); }
.council-head { margin: 0 0 var(--sp-6); }
.council-head h2 { font-size: var(--fs-6); margin: var(--sp-2) 0 var(--sp-3); letter-spacing: -0.03em; }
.council-lede { font-size: var(--fs-2); max-width: 70ch; margin: 0 0 var(--sp-3); }
.council-key { color: var(--muted); max-width: 70ch; margin: 0; }
.council-key .node-kind { margin: 0 2px; }
.how-chamber { max-width: 360px; margin: var(--sp-4) auto var(--sp-2); text-align: center; }
.chamber-cap { margin: 6px 0 0; }
.hemi { display: block; overflow: visible; }
.hemi-lg { width: 100%; max-width: 340px; height: auto; margin: 0 auto; }
.hemi-seat { fill: var(--accent, var(--seat-none)); stroke: none; transform-box: fill-box; transform-origin: center; transition: transform 0.18s var(--ease); }
.hemi-n { font: 500 4px var(--font-mono); fill: var(--on-accent); pointer-events: none; }
.hemi-a:hover .hemi-seat { transform: scale(1.18); }
/* the seats take their places in speaking order when the page opens (off with reduced motion) */
@media (prefers-reduced-motion: no-preference) {
  .hemi-teaser .hemi-a, .hemi-lg .hemi-a { animation: seat-in 0.45s var(--ease) both; }
  .hemi .hemi-a:nth-child(1) { animation-delay: 0.05s; } .hemi .hemi-a:nth-child(2) { animation-delay: 0.1s; }
  .hemi .hemi-a:nth-child(3) { animation-delay: 0.15s; } .hemi .hemi-a:nth-child(4) { animation-delay: 0.2s; }
  .hemi .hemi-a:nth-child(5) { animation-delay: 0.25s; } .hemi .hemi-a:nth-child(6) { animation-delay: 0.3s; }
  .hemi .hemi-a:nth-child(7) { animation-delay: 0.35s; } .hemi .hemi-a:nth-child(8) { animation-delay: 0.4s; }
  .hemi .hemi-a:nth-child(9) { animation-delay: 0.45s; } .hemi .hemi-a:nth-child(10) { animation-delay: 0.5s; }
  .hemi .hemi-a:nth-child(11) { animation-delay: 0.55s; } .hemi .hemi-a:nth-child(12) { animation-delay: 0.6s; }
  .hemi .hemi-a:nth-child(13) { animation-delay: 0.65s; } .hemi .hemi-a:nth-child(14) { animation-delay: 0.7s; }
  .bmap .tgrp { animation: tile-in 0.4s var(--ease) both; }
}
@keyframes seat-in { from { opacity: 0; } to { opacity: 1; } }
@keyframes tile-in { from { opacity: 0; } to { opacity: 1; } }

.phases { list-style: none; margin: 0; padding: 0; }
.phase { position: relative; display: grid; grid-template-columns: 200px minmax(0, 1fr); gap: var(--sp-4) var(--sp-6); padding: var(--sp-5) 0; border-top: 1px solid var(--line-soft); }
.phase:first-child { border-top: 0; padding-top: 0; }
.phase-head { display: flex; align-items: flex-start; gap: var(--sp-3); }
.phase-n { flex: none; display: grid; place-items: center; width: 28px; height: 28px; border-radius: 50%; border: 1px solid var(--line-strong); font: 500 var(--fs-1)/1 var(--font-mono); color: var(--ink); }
.phase-title { margin: 2px 0 var(--sp-1); font-size: var(--fs-3); }
.phase-what { margin: 0; font-size: var(--fs-1); line-height: 1.45; color: var(--muted); }
/* one nameplate per seat: the seat number large in its colour, the name, then the latest verdict */
.cast { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: var(--sp-3); }
.agent-card { min-width: 0; }
.ac-link { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: start; gap: 0 var(--sp-4); height: 100%; padding: var(--sp-4); border: 1px solid var(--line); border-radius: var(--radius); background: var(--card); color: var(--ink); text-decoration: none; transition: border-color 0.18s var(--ease); }
.ac-link:hover { border-color: color-mix(in srgb, var(--accent) 60%, var(--line)); }
.ac-link:hover .ac-name { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 4px; }
.ac-n { min-width: 1.3em; font: 600 var(--fs-5)/1 var(--font-head); letter-spacing: -0.03em; color: var(--accent, var(--seat-none)); font-variant-numeric: tabular-nums; }
.ac-body { display: flex; flex-direction: column; gap: var(--sp-1); min-width: 0; }
.ac-top { display: flex; flex-direction: column; align-items: flex-start; gap: var(--sp-1); }
.ac-name { font: 600 var(--fs-3)/1.2 var(--font-head); letter-spacing: -0.015em; color: var(--ink-strong); overflow-wrap: normal; }
.ac-kind { display: inline-flex; align-items: center; gap: var(--sp-1); flex: none; color: var(--muted); }
.ac-icon { width: 14px; height: 14px; }
.ac-latest { display: flex; flex-direction: column; align-items: flex-start; gap: var(--sp-1); margin-top: var(--sp-2); }
.ac-label { font: 600 var(--fs-label)/1 var(--font-body); text-transform: uppercase; letter-spacing: 0.1em; color: var(--muted); }
.ac-verdict { font: 600 var(--fs-2)/1.35 var(--font-body); color: var(--accent-ink, var(--accent, var(--ink-strong))); }
.ac-job { margin-top: var(--sp-1); font-size: var(--fs-1); line-height: 1.45; color: var(--muted); }
.ac-mark { margin-top: var(--sp-1); }

/* ================================================================== HOME: LOWER */
.lower { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: start; gap: var(--sp-5); padding-top: var(--sp-7); border-top: 1px solid var(--line); }
.low-card { min-width: 0; background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: var(--sp-5) var(--sp-5); }
.low-wide { grid-column: 1 / -1; }
.low-h { font-size: var(--fs-3); margin: 0 0 var(--sp-3); }
.low-lead { font-size: var(--fs-2); }
.runlist { list-style: none; margin: 0 0 var(--sp-3); padding: 0; }
.runlist li { display: grid; grid-template-columns: auto 1fr; gap: var(--sp-1) var(--sp-3); padding: var(--sp-3) 0; border-top: 1px solid var(--line-soft); font-size: var(--fs-1); }
.runlist li:first-child { border-top: 0; padding-top: 0; }
.rl-when { font: 500 var(--fs-1)/1.4 var(--font-mono); white-space: nowrap; }
.rl-chips { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: var(--sp-1); }
.rl-what { grid-column: 1 / -1; color: var(--ink); }
.runlist .astrip { grid-column: 1 / -1; }

/* ------------------------------------------------------------------ one run in one line */
.chain { list-style: none; margin: 4px 0 16px; padding: 0; display: grid; gap: 0; border-left: 1px solid var(--line-strong); }
.chain li { position: relative; padding: 4px 0 4px 16px; font-size: var(--fs-2); color: var(--ink); }
.chain li .dot { position: absolute; left: -5px; top: 0.72em; width: 9px; height: 9px; margin: 0; }
.chain li > a { color: var(--ink-strong); font-weight: 600; text-decoration: none; }
.chain li > a:hover { text-decoration: underline; }
.chain-t { color: var(--ink); }

/* ------------------------------------------------------------------ run diagram (run pages, how it works) */
.flow { --col-gap: 28px; --row-gap: 28px; list-style: none; margin: 12px 0 8px; padding: 0; display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--row-gap) var(--col-gap); }
.node { position: relative; display: flex; flex-direction: column; min-width: 0; background: var(--raised); border: 1px solid var(--line); border-left: 3px solid var(--accent, var(--seat-none)); border-radius: var(--radius); padding: 10px 12px 12px; }
.node p { margin: 0; }
.node-head { display: flex; align-items: center; gap: 8px; }
.node-step { font: 500 var(--fs-label)/1 var(--font-mono); color: var(--muted); }
.node-name { font: 600 var(--fs-2)/1.25 var(--font-head); color: var(--ink-strong); margin-top: 6px !important; }
.node-link { color: var(--ink-strong); text-decoration: none; }
.node-link::after { content: ""; position: absolute; inset: 0; }
.node-link:hover { text-decoration: underline; }
.flow.linked .node:hover { border-color: var(--line-strong); border-left-color: var(--accent); background: var(--hover); }
.node-result { font-size: var(--fs-1); line-height: 1.4; color: var(--ink); margin-top: 4px !important; }
.node-detail { font-size: var(--fs-1); line-height: 1.4; color: var(--muted); margin-top: 2px !important; }
.node-state { margin-top: auto !important; padding-top: 10px; }
@media (max-width: 639px) {
  .flow { --row-gap: 20px; }
  .node { padding: 8px 12px 10px; }
  .node-state { position: absolute; top: 7px; right: 10px; padding-top: 0; }
  .node-head { padding-right: 9em; }
  .node-name { margin-top: 3px !important; }
}
.node::after { position: absolute; color: var(--muted); font-size: var(--fs-2); line-height: 1; display: grid; place-items: center; }
.node:not(:last-child)::after { content: "↓"; content: "↓" / ""; left: 50%; top: 100%; width: 2em; margin-left: -1em; height: var(--row-gap); }
.flow-legend { margin: 8px 0 0; }
.flow-legend .node-kind { margin: 0 2px; }
.flow-roles { margin: 4px 0 0; }
@media (min-width: 640px) {
  .node:not(:last-child)::after { content: "→"; content: "→" / ""; left: 100%; top: 50%; width: var(--col-gap); height: 1.6em; margin: -0.8em 0 0; }
}
@media (min-width: 640px) and (max-width: 1199px) {
  .flow { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .node:nth-child(3n):not(:last-child)::after { content: ""; left: 50%; top: calc(100% + 1px); width: 0; height: calc(var(--row-gap) / 2); margin: 0 0 0 -1px; border-left: 1px solid var(--line-strong); }
  .node:nth-child(3n+1):not(:first-child)::before { content: ""; position: absolute; left: 50%; bottom: calc(100% + 3px); width: calc(200% + 2 * var(--col-gap) + 4px); height: calc(var(--row-gap) / 2); margin-left: -1px; border-left: 1px solid var(--line-strong); border-top: 1px solid var(--line-strong); }
  .node:nth-child(3n+1):not(:first-child) .node-head::after { content: ""; position: absolute; left: 50%; top: -10px; margin-left: -5px; border: 5px solid transparent; border-top-color: var(--line-strong); }
}
@media (min-width: 1200px) {
  .flow { grid-template-columns: repeat(5, minmax(0, 1fr)); --col-gap: 24px; }
  .node:nth-child(5n):not(:last-child)::after { content: ""; left: 50%; top: calc(100% + 1px); width: 0; height: calc(var(--row-gap) / 2); margin: 0 0 0 -1px; border-left: 1px solid var(--line-strong); }
  .node:nth-child(5n+1):not(:first-child)::before { content: ""; position: absolute; left: 50%; bottom: calc(100% + 3px); width: calc(400% + 4 * var(--col-gap) + 8px); height: calc(var(--row-gap) / 2); margin-left: -1px; border-left: 1px solid var(--line-strong); border-top: 1px solid var(--line-strong); }
  .node:nth-child(5n+1):not(:first-child) .node-head::after { content: ""; position: absolute; left: 50%; top: -10px; margin-left: -5px; border: 5px solid transparent; border-top-color: var(--line-strong); }
}
.story { margin: var(--sp-3) 0 var(--sp-4); padding: var(--sp-4) var(--sp-5); border-radius: var(--radius); background: var(--inset); border: 1px solid var(--line); border-left: 3px solid var(--line-strong); }
.story p { margin: 0 0 6px; }
.story p:last-child { margin: 0; }
.control-strip { display: flex; align-items: center; gap: 10px 12px; margin: 12px 0; padding: 10px 14px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--raised); }
.control-strip.differs { border-color: color-mix(in srgb, var(--seat-control) 45%, var(--line)); }
.control-strip p { margin: 0; font-size: var(--fs-2); }

/* ------------------------------------------------------------------ tables */
.table-wrap { overflow-x: auto; margin: 12px 0; border: 1px solid var(--line); border-radius: var(--radius); background: var(--inset); }
table.wide { min-width: 36rem; }
td.text { min-width: 14rem; }
table { border-collapse: collapse; width: 100%; font-size: var(--fs-2); }
caption { caption-side: top; text-align: left; padding: var(--sp-2) var(--sp-3) 0; }
th, td { text-align: left; vertical-align: top; padding: 10px 12px; }
th { font: 500 var(--fs-label)/1.3 var(--font-body); color: var(--muted); border-bottom: 1px solid var(--line); white-space: nowrap; }
td { border-top: 1px solid var(--line-soft); }
tbody tr:first-child td { border-top: 0; }
tbody tr { transition: background-color 0.15s var(--ease); }
tbody tr:hover { background: var(--hover); }
tr.chosen td { background: var(--hover); }
tr.failed td { background: color-mix(in srgb, var(--halted) 6%, transparent); }
tr.disabled { opacity: 0.55; }
td.n, th.n { white-space: nowrap; }
th.n { font-family: var(--font-body); }
td.n { font-family: var(--font-mono); font-variant-numeric: tabular-nums; color: var(--ink-strong); }
td.when { white-space: nowrap; }
table.runs td.text { min-width: 9rem; }
table.runs td[data-label="Agents"] { min-width: 10.5rem; }
table.runs td.when .chip { margin-left: 2px; }
/* Runs page: one card per meeting (paper, rehearsal, live), newest first */
.mtg-count { margin: 0 0 var(--sp-4); }
.mtg-list { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--sp-4); }
.mtg { background: var(--raised); border: 1px solid var(--line); border-left: 3px solid var(--seat-pm); border-radius: var(--radius); padding: var(--sp-4); min-width: 0; overflow-wrap: break-word; }
.mtg:target { border-color: var(--link); }
.mtg-head { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-2); margin: 0 0 var(--sp-2); }
.mtg-when { font: 500 var(--fs-1)/1.4 var(--font-mono); color: var(--ink-strong); }
.mtg-no { font-size: var(--fs-1); color: var(--muted); }
.mtg-late { margin: 0 0 var(--sp-2); color: var(--warn); }
.mtg-verdict { font: 600 var(--fs-3)/1.25 var(--font-head); color: var(--ink-strong); margin: 0 0 var(--sp-2); }
.mtg-closest, .mtg-changed { margin: 0 0 var(--sp-2); }
.mtg-closest a { color: var(--link); }
.mtg-k { display: block; font: 600 var(--fs-label)/1.4 var(--font-body); text-transform: uppercase; letter-spacing: 0.08em; color: var(--muted); }
.mtg-facts { list-style: none; display: flex; flex-wrap: wrap; gap: var(--sp-1) var(--sp-4); margin: 0 0 var(--sp-2); padding: 0; font-size: var(--fs-1); }
.mtg-facts li { display: inline-flex; align-items: center; gap: var(--sp-2); }
.mtg-dec { display: inline-flex; align-items: center; min-height: 44px; text-decoration: none; }
.mtg-dec:focus-visible { outline: 2px solid var(--link); outline-offset: 2px; }
.mtg-health > summary { min-height: 44px; }
.mtg-health .mark { white-space: normal; }
.mtg-agents { list-style: none; margin: var(--sp-2) 0 0; padding: 0; display: grid; gap: var(--sp-1); font-size: var(--fs-1); }
.mtg-agents a { color: var(--link); }
.mtg-aw { color: var(--ink); }
.mtg-aw.mtg-failed { color: var(--halted); }
.mtg-aw.mtg-fallback, .mtg-aw.mtg-timeout { color: var(--warn); }
.mtg-links { display: flex; flex-wrap: wrap; gap: var(--sp-2); margin: var(--sp-3) 0 0; }
.mtg-btn { display: inline-flex; align-items: center; gap: var(--sp-1); min-height: 44px; padding: 0 var(--sp-4); border: 1px solid var(--line-strong); border-radius: var(--radius); background: var(--card); color: var(--link); font-weight: 500; text-decoration: none; transition: background-color 0.15s var(--ease), border-color 0.15s var(--ease); }
.mtg-btn:hover { background: var(--hover); border-color: var(--link); }
.mtg-btn:focus-visible { outline: 2px solid var(--link); outline-offset: 2px; }
.mtg-gaps { margin: var(--sp-4) 0 0; color: var(--ink); }
.mtg-list + p, .mtg-list + .mtg-gaps + p { margin-top: var(--sp-4); }
.mtg-flows { display: grid; gap: var(--sp-4); }
.mtg-flow h3 { font-size: var(--fs-2); margin: 0 0 var(--sp-2); display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-2); }
@media (min-width: 900px) { .mtg-flows { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 639px) { .mtg { padding: var(--sp-3); } .mtg-btn { flex: 1 1 auto; justify-content: center; } }
.kv { display: inline-block; margin: 1px 10px 1px 0; }
.kv .k { color: var(--muted); font-size: 0.85em; }
.rules td:first-child { width: 4.5em; }
.rules td.numbers { min-width: 12rem; font-size: var(--fs-2); }
.why { margin: 0 0 4px; }
.why:last-child { margin: 0; }
.who { font-weight: 600; color: var(--ink-strong); }
.ln { color: var(--ink-strong); text-decoration: underline; text-decoration-color: var(--line-strong); text-underline-offset: 3px; }
.ln:hover { text-decoration-color: var(--link); }
.astrip { display: flex; flex-wrap: wrap; gap: 4px; }
.as { --c: var(--awaiting); display: inline-flex; align-items: center; gap: var(--sp-1); padding: 1px 8px 1px 4px; border-radius: 4px; font: 400 var(--fs-label)/1.5 var(--font-mono); color: var(--ink); background: var(--inset); border: 1px solid var(--line); border-left: 3px solid var(--accent, var(--line)); text-decoration: none; }
.as .i { color: var(--c); }
.as:hover { color: var(--ink-strong); border-color: var(--line-strong); }
.as.tg-ok { --c: var(--executed); }
.as.tg-fallback, .as.tg-timeout { --c: var(--warn); }
.as.tg-failed { --c: var(--halted); }
.as.tg-idle, .as.tg-waiting { --c: var(--awaiting); }

/* ------------------------------------------------------------------ agents index */
.team td { vertical-align: middle; }
.team code { white-space: nowrap; font-size: var(--fs-label); }
.member { display: flex; align-items: flex-start; gap: 12px; min-width: 0; }
.member .avatar { margin-top: 2px; }
.member-text { min-width: 0; }
.member-name { margin: 0; font: 600 var(--fs-2)/1.3 var(--font-head); color: var(--ink-strong); display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.member-name a { color: var(--ink-strong); text-decoration: none; }
.member-name a:hover { text-decoration: underline; }
.member-sub { margin: 2px 0 0; font-size: var(--fs-1); line-height: 1.45; color: var(--muted); max-width: 50ch; }
.member-rec { margin: 6px 0 0; font-size: var(--fs-1); line-height: 1.4; color: var(--ink); padding-left: 10px; border-left: 2px solid var(--accent, var(--seat-none)); }
.okcell { display: inline-flex; align-items: center; gap: 8px; }
.when-link { font-size: var(--fs-1); white-space: nowrap; }
.team .mark { margin-top: 3px; }
.fails { min-width: 9rem; }
.fail-words { display: block; font-size: var(--fs-1); color: var(--ink); margin-bottom: 4px; }
.fail-links { display: flex; flex-wrap: wrap; gap: 4px; }
.failed-calls { list-style: none; padding: 0; margin: 0 0 6px; }
.failed-calls li { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; padding: 6px 0; border-top: 1px solid var(--line-soft); font-size: var(--fs-2); }
.failed-calls li:first-child { border-top: 0; }
.call-agent a { display: inline-flex; align-items: center; gap: 0; white-space: nowrap; }

/* ------------------------------------------------------------------ agent sections of a run */
.ahead { display: flex; align-items: flex-start; gap: 12px; margin: 0 0 12px; }
.ahead .avatar { margin-top: 1px; }
.ahead-text { flex: 1; min-width: 0; }
.ahead h2 { margin: 0 0 4px; }
.ahead .job { margin: 0; font-size: var(--fs-2); color: var(--muted); max-width: 72ch; }
.ahead .job a { white-space: nowrap; }
.h-status { flex: none; margin: 2px 0 0; }
.ahead-hero { margin-top: 8px; align-items: center; }
.ahead-hero h1 { margin: 0 0 4px; display: flex; flex-wrap: wrap; align-items: center; gap: 12px; }
.stance { margin: 6px 0 10px; }
.argument { margin: 0 0 16px; padding: 16px 20px; border-radius: var(--radius); border: 1px solid var(--line); border-left: 3px solid var(--accent, var(--seat-none)); background: var(--inset); font-size: var(--fs-2); line-height: 1.7; color: var(--ink); max-width: 78ch; }
.argument p { margin: 0; }
.list-label { margin: 16px 0 6px; font: 600 var(--fs-1)/1.3 var(--font-body); color: var(--ink-strong); }
.claims { list-style: none; padding: 0; margin: 0; }
.claim { position: relative; margin: 0 0 8px; padding: 10px 12px; border-radius: var(--radius); border: 1px solid var(--line); background: var(--raised); font-size: var(--fs-2); }
.claim:target, .rebuttals li:target, .kcard:target, .rep:target, tr:target td { box-shadow: 0 0 0 2px var(--link); }
.cid { display: inline-block; margin-right: 6px; padding: 0 5px; border-radius: 3px; font: 500 var(--fs-label)/1.5 var(--font-mono); color: var(--ink-strong); background: color-mix(in srgb, var(--accent, var(--seat-none)) 18%, transparent); border: 1px solid color-mix(in srgb, var(--accent, var(--seat-none)) 40%, transparent); text-decoration: none; }
.cref { font: 500 var(--fs-1)/1.4 var(--font-mono); white-space: nowrap; }
.evs { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; margin: 8px 0 0; }
.evs-label { font-size: var(--fs-1); color: var(--muted); margin-right: 4px; }
.ev { --c: var(--seat-data); display: inline-flex; flex-wrap: wrap; align-items: baseline; gap: 2px; font: 400 var(--fs-1)/1.4 var(--font-body); color: var(--ink); padding: 1px 8px; border-radius: 4px; background: var(--inset); border: 1px solid var(--line); border-left: 3px solid var(--c); text-decoration: none; }
a.ev { cursor: pointer; }
a.ev:hover, .ev-split:hover { border-color: var(--line-strong); border-left-color: var(--c); }
.ev-split { gap: 0 5px; }
.ev-split a { color: var(--ink); text-decoration: none; }
.ev-split a:hover { color: var(--ink-strong); text-decoration: underline; text-underline-offset: 3px; }
.ev-ln { font-weight: 600; color: var(--ink-strong) !important; }
.ev-sep { color: var(--muted); }
.ev-val { font-family: var(--font-mono); font-weight: 500; color: var(--ink-strong); margin-left: 2px; }
.ev-note { color: var(--muted); font-style: italic; margin-left: 4px; }
.ev-market, .ev-filing { --c: var(--seat-data); }
.ev-vol { --c: var(--seat-vol); }
.ev-feed { --c: var(--seat-news); }
.ev-fred { --c: var(--seat-macro); }
.ev-card { --c: var(--line-strong); }
/* a card chip takes the colour of the agent that wrote it */
.ev-by-vol { --c: var(--seat-vol); }
.ev-by-event { --c: var(--seat-event); }
.ev-by-news { --c: var(--seat-news); }
.ev-by-macro { --c: var(--seat-macro); }
.ev-cost { --c: var(--seat-costs); }
.ev-event { --c: var(--seat-event); }
.rebuttals, .concessions, .fates, .dismissals { list-style: none; padding: 0; margin: 0 0 10px; }
.rebuttals li { margin: 0 0 8px; padding: 10px 12px; border-radius: var(--radius); border: 1px solid var(--line); background: var(--raised); font-size: var(--fs-2); }
.rebuttals q { font-size: var(--fs-1); }
.concessions li { margin: 0 0 6px; padding-left: 12px; border-left: 2px solid var(--stone); font-size: var(--fs-2); }
.fates > li { margin: 0 0 8px; padding: 10px 12px; border-radius: var(--radius); border: 1px solid var(--line-soft); background: var(--inset); font-size: var(--fs-1); }
.fates ul, .fates-inline { list-style: none; margin: 6px 0 0; padding: 0; }
.fates ul li, .fates-inline li { margin: 4px 0 0; padding-left: 10px; border-left: 2px solid var(--line-strong); font-size: var(--fs-1); }
.dismissals li { margin: 0 0 5px; font-size: var(--fs-2); }
.kcard { margin: 0 0 10px; padding: 12px 14px; border-radius: var(--radius); border: 1px solid var(--line); background: var(--raised); }
.kcard-head { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 0 0 6px; }
.kcard-claim { margin: 0 0 4px; }
.kcard p:last-child { margin-bottom: 0; }
.cited { color: var(--muted); }
.note-plain { padding: 10px 12px; border-radius: var(--radius); background: var(--inset); border: 1px dashed var(--line-strong); font-size: var(--fs-2); color: var(--ink); }
.agree { padding-left: 1.2em; }
.agree li { margin: 3px 0; }
.officer { margin: 0; padding: 12px 0; border-top: 1px solid var(--line-soft); }
.officer:first-of-type { border-top: 0; padding-top: 4px; }
.officer-head { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; }
.officer-name { margin: 0; font-size: var(--fs-2); }
.officer-result { flex: 1 1 18rem; margin: 0; font-size: var(--fs-2); color: var(--ink); }
.officer .kcard, .officer details.more, .officer .officer-more { margin-left: 38px; }
.officer .kcard:first-of-type { margin-top: 10px; }
.officer-open { padding-bottom: 14px; }
.officer-open .sub { margin-top: 1em; }
.officer-more { margin: 6px 0 0; }
.reps { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); align-items: start; gap: 12px; margin: 8px 0 12px; }
.rep { min-width: 0; padding: 12px 14px; border-radius: var(--radius); border: 1px solid var(--line); background: var(--raised); }
.rep.used { border-color: color-mix(in srgb, var(--accent, var(--seat-pm)) 55%, var(--line)); border-top: 3px solid var(--accent, var(--seat-pm)); }
.rep.invalid { border-style: dashed; }
.rep h4 { margin: 0 0 6px; display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.rep-facts { margin: 6px 0 0; }
.rep-facts dt { font: 600 var(--fs-label)/1.3 var(--font-body); text-transform: uppercase; letter-spacing: 0.08em; color: var(--muted); margin-top: 10px; }
.rep-facts dd { margin: 2px 0 0; font-size: var(--fs-2); }
.rep-facts dd p { margin: 0 0 4px; }
.rep-fail { margin: 6px 0 0; font-size: var(--fs-2); color: var(--ink); }
.reps-same { display: grid; gap: 6px; margin: -2px 0 12px; }
.rep-same > summary { display: flex; align-items: center; gap: 8px; padding: 8px 12px; border-radius: var(--radius); border: 1px solid var(--line); background: var(--raised); font-size: var(--fs-1); color: var(--ink); cursor: pointer; list-style: none; }
.rep-same > summary::-webkit-details-marker { display: none; }
.rep-same > summary:hover { border-color: var(--line-strong); }
.rep-same .chev { color: var(--muted); transition: transform 0.2s var(--ease); }
.rep-same[open] .chev { transform: rotate(90deg); }
.rep-same[open] > summary { margin-bottom: 8px; }
.rep-same:target > summary { box-shadow: 0 0 0 2px var(--link); }
.chip.unclear { --c: var(--awaiting); text-transform: none; letter-spacing: 0; font-family: var(--font-body); background: transparent; border-style: dashed; }
.dag { color: var(--muted); font-size: 0.72em; margin-left: 1px; }
.footnote { margin: 4px 0 8px; }
.legacy { margin: -6px 0 14px; padding-left: 10px; border-left: 2px dashed var(--line-strong); }
.callline { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; margin: 0 0 4px; font-size: var(--fs-1); color: var(--muted); }
.callline .cm { white-space: nowrap; }

/* ------------------------------------------------------------------ terminal-log card */
.term { margin: 12px 0 16px; border: 1px solid var(--term-line); border-radius: var(--radius); background: var(--term-bg); color: var(--term-ink); font: var(--fs-1)/1.65 var(--font-mono); overflow: hidden; }
.term-head { display: flex; align-items: center; gap: 8px; padding: 7px 12px; border-bottom: 1px solid var(--term-line); }
.term-dots { display: flex; gap: 6px; }
.term-dots i { width: 8px; height: 8px; border-radius: 50%; background: var(--term-line); }
.term-title { flex: 1; min-width: 0; text-align: center; font-size: var(--fs-label); color: var(--term-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.term-i { color: var(--term-muted); font-size: var(--fs-1); }
.term-body { padding: 10px 14px 12px; }
.tl { margin: 0; white-space: pre-wrap; overflow-wrap: break-word; }
.tl + .tl-cmd { margin-top: 8px; }
.tl-cmd { color: var(--term-cmd); }
.tl-p, .tl-flag { color: var(--term-muted); }
.tl-out { color: var(--term-muted); padding-left: 2ch; }
.tl-ok { color: var(--term-ok); padding-left: 2ch; }
.tl-err { color: var(--term-err); padding-left: 2ch; }
.tl-to { color: var(--term-fb); padding-left: 2ch; }
.tl-fb { color: var(--term-fb); margin-top: 8px; }
.term a { color: var(--term-link); }
.term-foot { margin: 0; padding: 5px 14px; border-top: 1px solid var(--term-line); font-size: var(--fs-label); color: var(--term-muted); }

/* ------------------------------------------------------------------ disclosure, lists, facts */
details.more { margin: 12px 0 0; }
details.more > summary { display: inline-flex; align-items: center; gap: 6px; min-height: 32px; cursor: pointer; font-size: var(--fs-2); color: var(--ink); padding: 4px 12px; border-radius: 4px; border: 1px solid var(--line-strong); list-style: none; transition: border-color 0.15s var(--ease), color 0.15s var(--ease); }
details.more > summary::-webkit-details-marker { display: none; }
details.more > summary::before { content: "▸"; content: "▸" / ""; color: var(--muted); font-size: 0.8em; transition: transform 0.2s var(--ease); }
details.more[open] > summary::before { transform: rotate(90deg); }
details.more > summary:hover { border-color: var(--ink); color: var(--ink-strong); }
details.more[open] > summary { margin-bottom: 12px; }
.facts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0; margin: 12px 0 16px; background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; }
.facts div { padding: 10px 12px; box-shadow: 1px 0 0 var(--line), 0 1px 0 var(--line); }
.facts dt { font: 500 var(--fs-label)/1.3 var(--font-body); color: var(--muted); }
.facts dd { margin: 3px 0 0; color: var(--ink-strong); }
.roles, .ticks, .codes, .disclaimer, .steps { padding-left: 1.2em; }
.roles { list-style: none; padding-left: 0; }
.roles li { margin: 8px 0; }
.ticks li, .disclaimer li, .steps li { margin: 4px 0; }
.codes { display: flex; flex-wrap: wrap; gap: 6px 14px; list-style: none; padding: 0; }
.empty { border: 1px dashed var(--line-strong); border-radius: var(--radius); padding: 20px; text-align: center; background: var(--inset); }
.empty-title { font-family: var(--font-head); font-weight: 600; color: var(--ink-strong); margin: 0 0 4px; }
.withdrawn { border-left: 3px solid var(--stone); padding: 2px 0 2px 14px; margin: 12px 0; }
.withdrawn h3 { margin: 0 0 4px; font-size: var(--fs-2); }
.defs dt { font-weight: 600; color: var(--ink-strong); margin-top: 10px; }
.defs dd { margin: 2px 0 0 1.6em; color: var(--muted); }
.shorthand { margin: 8px 0 14px; }
.defs-inline { display: grid; grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr)); gap: 4px 20px; margin: 0; }
.defs-inline div { min-width: 0; font-size: var(--fs-1); line-height: 1.45; }
.defs-inline dt { display: inline; margin: 0 6px 0 0; font: 500 var(--fs-1)/1.45 var(--font-mono); }
.defs-inline dd { display: inline; margin: 0; color: var(--muted); }
.facts-table td:first-child { min-width: 11rem; }
.facts-table td.n { white-space: normal; min-width: 6rem; }
.facts-table td.n .muted { font-family: var(--font-body); }
.entry { margin: 0 0 var(--sp-2); padding: 0 var(--sp-4); border-radius: var(--radius); border: 1px solid var(--line); background: var(--inset); }
.entry[open] { padding-bottom: var(--sp-4); }
.entry-head { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-2); padding: var(--sp-3) 0; cursor: pointer; list-style: none; }
.entry-head::-webkit-details-marker { display: none; }
.entry-head .chev { color: var(--muted); transition: transform 0.2s var(--ease); }
.entry[open] > .entry-head .chev { transform: rotate(90deg); }
.entry-when { font: 500 var(--fs-2)/1.3 var(--font-mono); color: var(--ink-strong); margin-right: var(--sp-1); }
.entry-sum { flex: 1 1 16rem; min-width: 0; font-size: var(--fs-1); color: var(--ink); }
.entry-open { margin: 0 0 var(--sp-2); }
.entry-turn { display: flex; align-items: center; gap: 8px; margin: 14px 0 6px; font-size: var(--fs-2); }
.entry-turn a { color: var(--ink-strong); }
.older { columns: 2; padding-left: 1.2em; }
.older li { margin: 3px 0; }

/* ------------------------------------------------------------------ asset pages */
.hero-asset { margin-bottom: 24px; }
.asset-hero { display: flex; align-items: center; gap: 20px; margin-top: 12px; }
.asset-hero h1 { margin: 0 0 8px; display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 14px; }
.asset-tk { font-family: var(--font-mono); font-weight: 500; letter-spacing: -0.02em; }
.asset-nm { font-size: var(--fs-4); color: var(--muted); letter-spacing: -0.01em; }
.asset-tags { display: flex; flex-wrap: wrap; gap: 6px; margin: 0; }
.legend-lines { font-size: var(--fs-1); color: var(--ink); }
.lkey { display: inline-block; width: 22px; height: 0; margin-right: 6px; vertical-align: middle; border-top: 3px solid var(--muted); }
.lkey.s-ref { border-top: 6px solid color-mix(in srgb, var(--seat-reference) 70%, transparent); }
.lkey.s-council { border-top-color: var(--seat-pm); }
.lkey.s-held { border-top: 2px solid var(--ink); }
.wchart { margin: 12px 0 8px; }
.wc-plot { position: relative; height: 200px; margin: 8px 176px 32px 56px; }
.wc-svg { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
.wc-grid { stroke: var(--line); stroke-width: 1; vector-effect: non-scaling-stroke; }
.wc-zero { stroke: var(--line-strong); stroke-width: 1; stroke-dasharray: 2 3; vector-effect: non-scaling-stroke; }
.wc-line { fill: none; stroke-linejoin: round; stroke-linecap: butt; vector-effect: non-scaling-stroke; }
.wc-line.s-ref { stroke: color-mix(in srgb, var(--seat-reference) 70%, transparent); stroke-width: 7; }
.wc-line.s-council { stroke: var(--seat-pm); stroke-width: 3; }
.wc-line.s-held { stroke: var(--ink); stroke-width: 1.5; stroke-linecap: round; }
.wc-dot { position: absolute; width: 7px; height: 7px; margin: -3.5px 0 0 -3.5px; border-radius: 50%; background: var(--ink); box-shadow: 0 0 0 2px var(--card); pointer-events: none; }
.wc-reh { fill: color-mix(in srgb, var(--rehearsal) 7%, transparent); }
.wc-reh-l { position: absolute; bottom: var(--sp-1); margin-left: var(--sp-1); font: 400 var(--fs-label)/1 var(--font-mono); color: var(--muted); pointer-events: none; }
.lkey-reh { display: inline-block; width: 14px; height: 10px; margin-right: 6px; vertical-align: middle; background: color-mix(in srgb, var(--rehearsal) 14%, var(--card)); border: 1px solid color-mix(in srgb, var(--rehearsal) 30%, var(--line)); }
.wc-figs { display: flex; flex-wrap: wrap; gap: var(--sp-2) var(--sp-5); margin: var(--sp-2) 0; }
.wc-fig { display: inline-flex; align-items: center; gap: var(--sp-2); }
.wc-hit { fill: transparent; }
.wc-hit:hover { fill: color-mix(in srgb, var(--ink) 6%, transparent); }
.wc-y { position: absolute; right: calc(100% + 10px); transform: translateY(-50%); font: 400 var(--fs-label)/1 var(--font-mono); color: var(--muted); white-space: nowrap; }
.wc-end { position: absolute; left: calc(100% + 12px); width: 160px; transform: translateY(-50%); font-size: var(--fs-1); line-height: 1.25; color: var(--ink); }
.wc-end .lkey { width: 12px; margin-right: 4px; }
.wc-x { position: absolute; top: calc(100% + 8px); transform: translateX(-50%); font: 400 var(--fs-label)/1 var(--font-mono); color: var(--muted); white-space: nowrap; }
.wc-x-first { left: 0 !important; transform: none; }
.wc-x-last { left: auto !important; right: 0; transform: none; }
.trendrow { list-style: none; margin: var(--sp-2) 0 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 360px), 1fr)); gap: var(--sp-2); }
.trendrow li { min-width: 0; }
.tr-card { display: grid; justify-items: start; gap: var(--sp-1); padding: var(--sp-3); border: 1px solid var(--line); border-radius: var(--radius); background: var(--inset); color: var(--ink); text-decoration: none; font-size: var(--fs-1); }
.tr-card:hover { border-color: var(--line-strong); }
.tr-when { font-family: var(--font-mono); color: var(--muted); }
.tr-state { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-2); }
.tr-size { color: var(--ink); }
.tr-range { color: var(--ink); }
.tr-why { color: var(--muted); }
.tr-cards { margin: var(--sp-1) 0 0; }
/* an order: the verb, the kind, and the position chip (teal/coral only when it opens or adds) */
.ord-v { color: var(--ink-strong); }
.chip.pos-chip { text-transform: none; letter-spacing: 0; font-family: var(--font-body); }
.pc-long { --c: var(--long); }
.pc-short { --c: var(--short); }
.pc-neutral { --c: var(--line-strong); }
.said-run { margin: 0 0 8px; border-top: 1px solid var(--line-soft); }
.said-run:first-of-type { border-top: 0; }
.said-when { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding: 10px 0; cursor: pointer; list-style: none; }
.said-when::-webkit-details-marker { display: none; }
.said-when .chev { color: var(--muted); transition: transform 0.2s var(--ease); }
.said-run[open] .said-when .chev { transform: rotate(90deg); }
.said-date { font: 500 var(--fs-2)/1.3 var(--font-mono); color: var(--ink-strong); }
.said-n { font-size: var(--fs-1); color: var(--muted); }
.said-open { margin: 0 0 8px 24px; }
.said-list { margin-bottom: 12px !important; }
.said-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.said { padding: 10px 14px; border: 1px solid var(--line); border-left: 3px solid var(--accent, var(--seat-none)); border-radius: var(--radius); background: var(--inset); }
.said p { margin: 0; }
.said-who { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; font-size: var(--fs-1); }
.said-who a { font-weight: 600; color: var(--ink-strong); }
.said-kind { font: 400 var(--fs-label)/1.3 var(--font-mono); color: var(--muted); }
.said-text { margin-top: 4px !important; font-size: var(--fs-2); max-width: 80ch; }

/* ------------------------------------------------------------------ performance chart (SVG attributes only) */
.sw-line { width: 20px; height: 0; border-radius: 0; border-top: 3px solid currentColor; vertical-align: middle; }
.sw-c0 { color: var(--c0); }
.sw-c2 { color: var(--c2); }
.sw-c2x { color: var(--c2x); border-top-style: dashed; }
.sw-c3 { color: var(--c3); border-top-style: dotted; }
.sw-c4a { color: var(--c4a); border-top-style: dashed; }
.sw-c4b { color: var(--c4b); border-top-style: dotted; }
.chart { margin: 8px 0; padding: 12px 8px 8px; border-radius: var(--radius); background: var(--inset); border: 1px solid var(--line); }
.chart svg { width: 100%; height: auto; display: block; }
.chart .chart-narrow { display: none; }
.chart-narrow .chart-tick { font-size: 13px; }
.chart figcaption { padding: 4px 6px 0; color: var(--muted); }
.chart-grid { stroke: var(--line); stroke-width: 1; vector-effect: non-scaling-stroke; }
.chart-base { stroke: var(--muted); stroke-width: 1; vector-effect: non-scaling-stroke; }
.chart-tick { fill: var(--muted); font: 11px var(--font-mono); }
.series { fill: none; stroke-width: 2; stroke-linejoin: round; stroke-linecap: round; vector-effect: non-scaling-stroke; }
.series-end { fill: var(--ink-strong); font: 500 11px var(--font-mono); }
.series-c0 { stroke: var(--c0); stroke-width: 2.5; }
.series-c2 { stroke: var(--c2); }
.series-c2x { stroke: var(--c2x); stroke-dasharray: 6 4; }
.series-c3 { stroke: var(--c3); stroke-dasharray: 2 3; }
.series-c4a { stroke: var(--c4a); stroke-dasharray: 4 3; }
.series-c4b { stroke: var(--c4b); stroke-dasharray: 8 3 2 3; }

/* ------------------------------------------------------------------ footer and redirect pages */
.foot { border-top: 1px solid var(--line); }
.foot-inner { max-width: 1240px; margin: 0 auto; padding: 24px 16px 32px; font-size: var(--fs-1); color: var(--muted); }
.foot-list { display: flex; flex-wrap: wrap; gap: 4px 18px; padding: 0; list-style: none; margin: 0 0 8px; }
.foot p { margin: 0 0 4px; }
.credit { font-size: var(--fs-1); }
body.moved p { max-width: 40rem; margin: 48px auto; padding: 0 16px; }

/* ------------------------------------------------------------------ narrow screens */
@media (max-width: 1100px) {
  .strip-run { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .ledger.lg-n5, .ledger.lg-n6 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .ledger.lg-n5 .lg:nth-child(3n+1), .ledger.lg-n6 .lg:nth-child(3n+1) { padding-left: 0; border-left: 0; }
  .ledger.lg-n5 .lg:nth-child(n+4), .ledger.lg-n6 .lg:nth-child(n+4) { border-top: 1px solid var(--line); }
  .phase { grid-template-columns: 180px minmax(0, 1fr); }
}
@media (min-width: 641px) and (max-width: 1100px) {
  .htable th:last-child, .htable td.h-ref { display: none; }
  .c-ref, .hx.no-pnl .c-ref, .hx.no-day .c-ref { width: 0; }
  .c-asset { width: 36%; }
  .c-day { width: 12%; }
  .c-pos { width: 16%; }
  .c-pnl { width: 14%; }
  .c-weight { width: 22%; }
  .hx.no-pnl .c-asset, .hx.no-day .c-asset { width: 44%; }
  .hx.no-pnl .c-weight, .hx.no-day .c-weight { width: 26%; }
  .hx.no-pnl .c-pos, .hx.no-day .c-pos { width: 17%; }
  .hx.no-day.no-pnl .c-asset { width: 52%; }
  .hx.no-day.no-pnl .c-pos { width: 20%; }
  .hx.no-day.no-pnl .c-weight { width: 28%; }
  .wref-txt { display: block; }
  .htable td.h-weight .wbar { position: relative; left: auto; right: auto; bottom: auto; margin-top: 6px; }
}
@media (max-width: 880px) {
  .layout { padding-top: 20px; }
  .page-body { grid-template-columns: minmax(0, 1fr); gap: var(--sp-4); }
  .toc-desk { display: none !important; }
  .toc-phone { display: block; flex: 1 1 100%; }
  .toc-phone .toc-lines { padding: var(--sp-1) 0 var(--sp-2); }
  .toc { position: static; max-height: none; background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: 10px 12px; }
  .toc ol { display: flex; flex-wrap: wrap; gap: 0 6px; }
  .toc-group { flex: 1 1 100%; margin: 8px 0 2px; padding-left: 8px; }
  .toc li a { padding: 3px 8px; }
  .status-chips { margin-left: 0; }
  .card { padding: 18px 16px; }
  .strip-agents { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .hemi-lg { max-width: 300px; }
  .wc-x-mid { display: none; }
  .phase { grid-template-columns: minmax(0, 1fr); gap: 12px; }
  .lower { grid-template-columns: minmax(0, 1fr); }
  .wc-plot { margin-right: 24px; }
  .wc-end { display: none; }
}
@media (max-width: 640px) {
  h1 { font-size: var(--fs-5); }
  h2 { font-size: var(--fs-3); }
  .top { position: static; }
  .top-inner { gap: 4px 12px; padding: 10px 16px 6px; }
  .brand { font-size: var(--fs-3); }
  .pages { gap: 0; margin: 0 -7px; font-size: var(--fs-1); }
  .pages a { display: inline-flex; align-items: center; min-height: 44px; padding: 0 7px; }
  .pages a[aria-current="page"]::after { left: 8px; right: 8px; bottom: 0; }
  .toc { padding: 6px 10px; }
  .toc-title { display: none; }
  .toc ol { font-size: var(--fs-1); }
  .toc-legend { margin: 8px 8px 2px; }
  .layout { padding: 16px 16px 40px; }
  .book-title h1 { font-size: var(--fs-6); margin: 6px 0 6px; }
  .book-title .lede { font-size: var(--fs-2); }
  .lastrun { flex-basis: 100%; }
  .ledger, .ledger.lg-n4, .ledger.lg-n5, .ledger.lg-n6 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ledger .lg { padding: 10px 12px 10px 0; }
  .ledger .lg:nth-child(n) { padding-left: 12px; border-left: 1px solid var(--line); border-top: 1px solid var(--line); }
  .ledger .lg:nth-child(2n+1) { padding-left: 0; border-left: 0; }
  .ledger .lg:nth-child(-n+2) { border-top: 0; }
  .ledger.lg-n5 .lg-kill { grid-column: 1 / -1; padding-left: 0; border-left: 0; }
  .lg-v { font-size: var(--fs-3); }
  .lg-v .mv { font-size: var(--fs-3); }
  .key-note { margin-left: 0; }
  .basis-more { display: none; }
  .council { padding-top: 32px; margin-bottom: 48px; }
  .council-head h2 { font-size: var(--fs-5); }
  .hemi-lg { max-width: 240px; }
  .council-head { margin-bottom: var(--sp-4); }
  /* the council on a phone: a compact list, one row per seat (number, name · latest verdict);
     the job, the kind and the phase text live on the agent's page */
  .phase { gap: var(--sp-1); padding: var(--sp-3) 0; border-top: 0; }
  .phase-head { align-items: center; gap: var(--sp-2); }
  .phase-n { width: 20px; height: 20px; font-size: var(--fs-label); }
  .phase-title { margin: 0; font-size: var(--fs-label); font-family: var(--font-body); text-transform: uppercase; letter-spacing: 0.1em; color: var(--muted); }
  .phase-what, .ac-job, .ac-kind, .ac-label { display: none; }
  .cast { grid-template-columns: minmax(0, 1fr); gap: 0; }
  .ac-link { grid-template-columns: 28px minmax(0, 1fr); align-items: baseline; gap: 0 var(--sp-2); padding: var(--sp-2) 0; border: 0; border-bottom: 1px solid var(--line-soft); border-radius: 0; background: none; }
  .ac-n { font-size: var(--fs-2); }
  .ac-body { flex-direction: row; flex-wrap: wrap; align-items: baseline; gap: 0 var(--sp-2); }
  .ac-top { display: inline; }
  .ac-name { font-size: var(--fs-2); }
  .ac-latest { flex-direction: row; margin: 0; }
  .ac-verdict { font-weight: 500; }
  .ac-verdict::before { content: "· "; content: "· " / ""; color: var(--muted); }
  .ac-mark { flex-basis: 100%; margin: var(--sp-1) 0 0; }
  .teaser-t { font-size: var(--fs-1); }
  .lower { padding-top: 32px; gap: 16px; }
  .low-card { padding: 16px; }
  .story { padding: 12px 14px; }
  .defs-inline { grid-template-columns: minmax(0, 1fr); }
  .facts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .strip, .strip-run { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .strip-run .st-ring:last-child { grid-column: 1 / -1; }
  .st-v { font-size: var(--fs-3); }
  .alert { padding: 11px 12px 11px 10px; gap: 2px 10px; }
  .ahead { flex-wrap: wrap; }
  .ahead-text { flex: 1 1 calc(100% - 48px); }
  .h-status { order: 3; flex: 1 1 auto; width: auto; margin: 0; padding-left: 48px; }
  .to-toc { display: inline-block; order: 4; flex: none; margin-left: auto; font-size: var(--fs-1); text-decoration: none; color: var(--muted); }
  .argument { padding: 12px 14px; }
  .older { columns: 1; }
  .hnote { margin-left: 0; }
  .officer .kcard, .officer details.more, .officer .officer-more { margin-left: 0; }
  .asset-hero { gap: 14px; align-items: flex-start; }
  .mono-lg { width: 52px; height: 52px; font-size: var(--fs-1); }
  .asset-nm { font-size: var(--fs-3); flex-basis: 100%; }
  .wc-plot { height: 170px; margin: 8px 12px 32px 44px; }

  .hx-head { padding: 10px 12px; }
  .hx-title { display: none; }
  .hf-chips { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; margin: 0 -12px; padding: 0 12px 2px; }
  .hf-chips::-webkit-scrollbar { display: none; }
  .hf-chip { flex: none; }
  .page-portfolio .alert-rehearsal .alert-text { display: none; }

  /* holdings: two lines per row, like a broker's list */
  .htable, .htable thead, .htable tbody { display: block; }
  .htable colgroup { display: none; }
  .htable thead tr { display: block; }
  .htable thead th { display: none; }
  .htable thead th:first-child { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; padding: 8px 12px; }
  .th-key { display: inline; font-size: var(--fs-label); text-align: right; }
  .htable tr.hr { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; grid-template-areas: "asset weight weight" "asset day pnl"; align-items: center; gap: 1px 12px; padding: 10px 12px; border-top: 1px solid var(--line-soft); }
  .hx.no-pnl .htable tr.hr { grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "asset weight" "asset day"; }
  .hx.no-day .htable tr.hr { grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "asset weight" "asset pnl"; }
  .hx.no-day.no-pnl .htable tr.hr { grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "asset weight"; }
  .htable tbody tr.hr:first-child { border-top: 0; }
  .htable td { display: block; padding: 0; border: 0; min-width: 0; }
  .htable td[data-label]::before { content: none; }
  .htable .h-asset { grid-area: asset; }
  .htable td.h-weight { grid-area: weight; position: static; display: flex; align-items: center; justify-content: flex-end; gap: 8px; text-align: right; }
  .htable td.h-weight .wbar { position: relative; left: auto; right: auto; bottom: auto; order: -1; width: 56px; flex: none; margin: 0; }
  .htable .h-day { grid-area: day; text-align: right; font-size: var(--fs-1); }
  .htable .h-pnl { grid-area: pnl; text-align: right; font-size: var(--fs-1); }
  .htable .h-pos, .htable .h-ref, .wref-txt { display: none; }
  .htable tr.hr.flat .h-pnl { display: none; }
  .pos-line { display: block; }
  .term-count { display: none; }
  .chart .chart-wide { display: none; }
  .chart .chart-narrow { display: block; }
  .strip-agent, .strip-agent.strip-n4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .strip-agent.strip-n1 { grid-template-columns: minmax(0, 1fr); }

  table.stack { min-width: 0; }
  table.stack thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
  table.stack, table.stack tbody { display: block; }
  table.stack tr { display: grid; grid-template-columns: repeat(auto-fit, minmax(6.5rem, 1fr)); gap: 6px 12px; padding: 12px; border-top: 1px solid var(--line-soft); }
  table.stack tbody tr:first-child { border-top: 0; }
  table.stack td, table.runs td[data-label="Agents"] { display: block; border: 0; padding: 0; min-width: 0; white-space: normal; }
  table.stack td:first-child, table.stack td.text { grid-column: 1 / -1; }
  table.stack td.push { order: 9; }
  table.stack td[data-label]::before { content: attr(data-label); display: block; font: 500 var(--fs-label)/1.3 var(--font-body); color: var(--muted); }
  table.stack tr.chosen td { background: none; }
  table.team td.n { text-align: left; }
  table.team code { white-space: normal; overflow-wrap: break-word; word-break: break-word; }
  table.team tr.k-code td.llm-only, table.team tr.k-human td.llm-only { display: none; }
  table.cmp td.n { white-space: normal; }

  table.rt { min-width: 0; }
  table.rt, table.rt tbody { display: block; }
  table.rt thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
  table.rt tr { display: flex; flex-wrap: wrap; align-items: baseline; gap: 3px 8px; padding: 10px 12px; border-top: 1px solid var(--line-soft); }
  table.rt tbody tr:first-child { border-top: 0; }
  table.rt td { display: block; padding: 0; border: 0; min-width: 0; white-space: normal; }
  table.rt tr::after { content: ""; order: 5; flex-basis: 100%; height: 0; }
  table.rt td[data-label]::before { content: attr(data-label) " "; color: var(--muted); font-family: var(--font-body); font-weight: 400; }
  table.rt-facts td:nth-child(2) { order: 1; font-weight: 600; color: var(--ink-strong); }
  table.rt-facts td:nth-child(2) .muted, table.rt-facts td.no-line { display: none; }
  table.rt-facts td:nth-child(1) { order: 2; flex: 1 1 8rem; }
  table.rt-facts td:nth-child(3) { order: 3; margin-left: auto; text-align: right; min-width: 0; }
  table.rt-facts td:nth-child(n+4) { order: 6; font-size: var(--fs-1); color: var(--muted); }
  table.rt-facts td:nth-child(n+5)::before { content: "· "; }
  table.rt-calls td:nth-child(1) { order: 1; }
  table.rt-calls td:nth-child(2) { order: 2; }
  table.rt-calls td:nth-child(4) { order: 3; margin-left: auto; }
  table.rt-calls td:nth-child(5) { order: 4; font-size: var(--fs-1); color: var(--muted); }
  table.rt-calls td:nth-child(3) { order: 6; flex-basis: 100%; color: var(--ink); }
  table.rt-calls tr:not(.failed) td:nth-child(3), table.rt-calls td:nth-child(6) { display: none; }
  table.rt-legs td:nth-child(-n+3), table.rt-fills td:nth-child(-n+4), table.rt-trades td:nth-child(-n+2) { order: 1; }
  table.rt-legs td:nth-child(n+4), table.rt-fills td:nth-child(n+5), table.rt-trades td:nth-child(n+3) { order: 6; font-size: var(--fs-1); }
  table.rt td.why-cell { order: 7; flex-basis: 100%; color: var(--muted); }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; animation-delay: 0s !important; }
}


/* ================================================================== SWING BOOK (swing-book §7.4) */
/* An idea is a card in the run's "Swing ideas" section; the Skeptic's verdict is a magenta-ruled
   block inside it. The book's bar puts the entry in the middle: the stop one side (coral), the
   target the other (teal). Widths come from geometry.css; every bar also prints its numbers. */
.sw-head { border-left: 3px solid var(--seat-scout); padding: var(--sp-2) 0 var(--sp-2) var(--sp-4); margin: 0 0 var(--sp-4); }
.sw-head p { margin: 0 0 var(--sp-2); line-height: 1.55; }
.sw-head p:last-child { margin-bottom: 0; color: var(--muted); font-size: var(--fs-1); }
.sw-health { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-2); font-size: var(--fs-1); color: var(--ink); }
.sw-idea { border: 1px solid var(--line); border-left: 3px solid var(--seat-scout); border-radius: var(--radius); background: var(--raised); padding: var(--sp-4); margin: 0 0 var(--sp-4); min-width: 0; }
.sw-idea-head { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-2); margin-bottom: var(--sp-2); }
.sw-idea-head .mono { font-size: var(--fs-3); color: var(--ink-strong); }
.sw-ref { font-size: var(--fs-label) !important; color: var(--muted) !important; }
.sw-stage { margin-left: auto; }
.sw-drop { margin: 0 0 var(--sp-2); color: var(--muted); }
.sw-row { display: grid; grid-template-columns: 6.5em minmax(0, 1fr); gap: var(--sp-3); padding: var(--sp-1) 0; border-top: 1px solid var(--line-soft); font-size: var(--fs-1); }
.sw-k { color: var(--muted); font: 600 var(--fs-label)/1.6 var(--font-body); text-transform: uppercase; letter-spacing: 0.08em; }
.sw-v { min-width: 0; overflow-wrap: break-word; }
.sw-v .ev { margin: 0 var(--sp-1) var(--sp-1) 0; }
.sw-facts { display: flex; flex-wrap: wrap; gap: var(--sp-1) var(--sp-3); }
.sw-fact { white-space: nowrap; }
.sw-withheld { display: block; margin-top: 2px; }
.sw-skeptic { margin-top: var(--sp-3); padding: var(--sp-3) var(--sp-3) var(--sp-2); border-left: 3px solid var(--seat-skeptic); background: color-mix(in srgb, var(--seat-skeptic) 6%, var(--card)); border-radius: 0 var(--radius) var(--radius) 0; }
.sw-chips { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-1) var(--sp-2); margin: 0 0 var(--sp-2); }
.sw-reasons { margin: 0 0 var(--sp-2); padding-left: 1.2em; font-size: var(--fs-1); line-height: 1.5; }
.sw-votes { margin: var(--sp-2) 0 0; }
.sw-paper { letter-spacing: 0.08em; }
.sw-case { border-left: 3px solid var(--accent); padding-left: var(--sp-3); margin: var(--sp-3) 0; font-size: var(--fs-1); }
.sw-bar { position: relative; display: block; width: 100%; min-width: 120px; height: 8px; margin: 2px 0 6px; border-radius: 4px; background: var(--track); }
.sw-stop, .sw-target { position: absolute; top: 0; bottom: 0; }
.sw-stop { right: 50%; background: var(--down); border-radius: 4px 0 0 4px; }
.sw-target { left: 50%; background: var(--up); border-radius: 0 4px 4px 0; }
.sw-entry { position: absolute; left: 50%; top: -3px; bottom: -3px; width: 2px; margin-left: -1px; background: var(--ink-strong); }
.sw-book td, .sw-funnel td { vertical-align: top; }
.sw-cast { margin-top: var(--sp-3); }
.ac-icon-lg { width: 28px; height: 28px; }
@media (max-width: 699px) {
  .sw-row { grid-template-columns: minmax(0, 1fr); gap: 0; }
  .sw-stage { margin-left: 0; }
}

/* ---- paper runs: the home panel, the decisions table and a decision's flow ---- */
.paper-panel { margin-bottom: 1.5rem; }
.paper-panel h2 .chip, .paper-latest h3 .chip { vertical-align: middle; }
.paper-strip { margin: .75rem 0; }
.paper-cols { display: grid; grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr)); gap: 1rem; }
.paper-list, .paper-why { list-style: none; padding: 0; margin: .25rem 0 .75rem; }
.paper-list li, .paper-why li { padding: .3rem 0; border-bottom: 1px solid var(--line); overflow-wrap: break-word; }
.pbook { margin: .25rem 0 1rem; }
.pbook-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: .5rem 1rem; }
.pbook-title, .pbook-ret { margin: 0; }
.pbook-title .chip { vertical-align: middle; }
.pbook-ret-v { font: 600 var(--fs-2)/1.2 var(--font-mono); }
.pbook-ret-v.up { color: var(--long); }
.pbook-ret-v.down { color: var(--short); }
.pbook-split { display: flex; height: 12px; margin: .6rem 0 .35rem; border-radius: 6px; overflow: hidden; background: var(--track); }
.pbook-seg { display: block; height: 100%; }
.seg-core { background: var(--seat-pm); }
.seg-swing { background: var(--seat-scout); }
.seg-cash { background: var(--seat-reference); }
.pbook-legend { display: flex; flex-wrap: wrap; gap: .25rem 1rem; list-style: none; padding: 0; margin: 0 0 .75rem; font-size: var(--fs-label); }
.pbook-sw { display: inline-block; width: .7rem; height: .7rem; margin-right: .3rem; border-radius: 2px; vertical-align: -1px; }
.pbook-table td.h-weight { min-width: 6rem; }
.pbook-table tr { border-left: 3px solid var(--accent); }
.paper-latest { border-top: 1px solid var(--line); margin-top: .75rem; padding-top: .75rem; }
.paper-case { border-left: 3px solid var(--accent); padding: .25rem 0 .25rem .75rem; min-width: 0; overflow-wrap: break-word; }
.paper-diff td { background: color-mix(in srgb, var(--seat-skeptic) 10%, transparent); }

/* ---- decision page: the verdict banner and the journey cards (approved 2026-10-01) ----
   One card per idea: six seat-coloured steps (✓ passed · ✗ stopped here · — not reached, always as a
   glyph and a word, never colour alone), the stop step ringed in the HALTED red with its plain reason
   under it; each step's content in a <details>. Horizontal from 640px, a vertical list below. */
.nowrap { white-space: nowrap; }
.vb { border-left: 4px solid var(--seat-pm); }
.vb-title { font: 600 var(--fs-5)/1.15 var(--font-head); margin: 0 0 var(--sp-2); color: var(--ink-strong); }
.vb-closest { font-size: var(--fs-2); margin: 0 0 var(--sp-3); }
.vb-closest a { color: var(--link); }
.vb-rows { display: grid; gap: var(--sp-2); margin: 0 0 var(--sp-3); }
.vb-rows > div { display: grid; grid-template-columns: minmax(7rem, max-content) 1fr; gap: var(--sp-3); align-items: baseline; }
.vb-rows dt { font: 600 var(--fs-label)/1.4 var(--font-body); text-transform: uppercase; letter-spacing: 0.08em; color: var(--muted); }
.vb-rows dd { margin: 0; min-width: 0; overflow-wrap: break-word; }

.jc { border: 1px solid var(--line); border-radius: var(--radius); background: var(--raised); padding: var(--sp-4); margin: var(--sp-4) 0; min-width: 0; }
.jc-entered { border-color: color-mix(in srgb, var(--executed) 55%, var(--line)); }
.jc-head h3 { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-2); margin: 0; font: 600 var(--fs-3)/1.3 var(--font-head); }
.jc-tk { color: var(--ink-strong); }
.jc-setup { font: 400 var(--fs-2)/1.4 var(--font-body); color: var(--ink); }
.jc-out { margin: var(--sp-1) 0 var(--sp-3); }
.jc-code { font: 400 var(--fs-label)/1.3 var(--font-mono); color: var(--muted); background: var(--inset); border: 1px solid var(--line); border-radius: 4px; padding: 1px 5px; white-space: nowrap; }
.jc-trace { margin: var(--sp-3) 0 0; color: var(--ink); }

.jp { list-style: none; margin: 0 0 var(--sp-3); padding: 0; display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 0; }
.jp-step { position: relative; display: flex; flex-direction: column; align-items: center; text-align: center; padding: 0 var(--sp-1); min-width: 0; }
.jp-step::before { content: ""; position: absolute; top: 15px; left: -50%; width: 100%; height: 2px; background: var(--line-strong); z-index: 0; }
.jp-step:first-child::before { display: none; }
.jp-ok::before, .jp-stop::before { background: color-mix(in srgb, var(--accent) 60%, var(--line-strong)); }
.jp-dot { position: relative; z-index: 1; display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; border-radius: 50%; font: 600 var(--fs-2)/1 var(--font-body); border: 2px solid var(--accent); background: color-mix(in srgb, var(--accent) 22%, var(--card)); color: var(--ink-strong); }
.jp-debate .jp-dot { border-color: var(--seat-bull); border-right-color: var(--seat-bear); border-bottom-color: var(--seat-bear); }
.jp-skip .jp-dot { border-style: dashed; border-color: var(--line-strong); background: var(--card); color: var(--muted); }
.jp-stop .jp-dot { border-color: var(--halted); background: color-mix(in srgb, var(--halted) 18%, var(--card)); color: var(--halted); box-shadow: 0 0 0 3px color-mix(in srgb, var(--halted) 30%, transparent); }
.jp-label { margin-top: var(--sp-1); font: 600 var(--fs-1)/1.3 var(--font-body); color: var(--ink-strong); }
.jp-skip .jp-label { color: var(--muted); }
.jp-word { font: 400 var(--fs-label)/1.3 var(--font-mono); color: var(--muted); overflow-wrap: break-word; }
.jp-ok .jp-word { color: var(--ink); }
.jp-stop .jp-word { color: var(--halted); font-weight: 500; }
.jp-why { margin-top: var(--sp-1); font-size: var(--fs-1); line-height: 1.35; color: var(--ink); overflow-wrap: break-word; }
@media (max-width: 639px) {
  .jp { grid-template-columns: 1fr; gap: var(--sp-2); }
  .jp-step { display: grid; grid-template-columns: 32px auto 1fr; column-gap: var(--sp-2); align-items: center; text-align: left; padding: 0; }
  .jp-step::before { top: -10px; left: 15px; width: 2px; height: 10px; }
  .jp-label { margin-top: 0; }
  .jp-why { grid-column: 2 / -1; margin-top: 0; }
}

.jd { border-top: 1px solid var(--line-soft); }
.jd > summary { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-2); padding: var(--sp-2) 0; cursor: pointer; list-style: none; color: var(--ink); }
.jd > summary::-webkit-details-marker { display: none; }
.jd > summary::before { content: "▸"; content: "▸" / ""; color: var(--muted); transition: transform 0.2s var(--ease); }
.jd[open] > summary::before { transform: rotate(90deg); }
.jd > summary:hover { color: var(--ink-strong); }
.jd > summary:focus-visible { outline: 2px solid var(--link); outline-offset: 2px; }
.jd-sum { color: var(--muted); font-size: var(--fs-1); min-width: 0; overflow-wrap: break-word; }
.jd-body { border-left: 3px solid var(--accent); padding: 0 0 var(--sp-3) var(--sp-3); margin-left: 4px; min-width: 0; overflow-wrap: break-word; }
.jd-body p { margin: var(--sp-2) 0; }
.jd-k { display: block; font: 600 var(--fs-label)/1.4 var(--font-body); text-transform: uppercase; letter-spacing: 0.08em; color: var(--muted); }
.jd-list { margin: var(--sp-2) 0; padding-left: var(--sp-5); }
.jd-list li { margin: var(--sp-1) 0; }
.ev-chip { font-size: var(--fs-label); padding: 0 6px; vertical-align: 1px; }
.jfacts { display: grid; grid-template-columns: repeat(auto-fill, minmax(13rem, 1fr)); gap: var(--sp-1) var(--sp-4); margin: var(--sp-2) 0; }
.jfacts > div { display: flex; justify-content: space-between; gap: var(--sp-2); border-bottom: 1px solid var(--line-soft); padding: 2px 0; min-width: 0; }
.jfacts dt { color: var(--muted); font-size: var(--fs-1); }
.jfacts dd { margin: 0; text-align: right; color: var(--ink-strong); }
.jb { font-size: var(--fs-1); }
.jb-up { color: var(--up); }
.jb-down { color: var(--down); }
.jb-warn { color: var(--warn); }
.jb-flat { color: var(--ink); }
.tkr { font-family: var(--font-mono); font-weight: 500; font-variant-numeric: tabular-nums; color: var(--ink-strong); }

/* Redaction chip and the decision-page disclaimer */
.redacted { display: inline-block; font: 500 var(--fs-label)/1.2 var(--font-mono); letter-spacing: 0.04em; text-transform: uppercase; color: var(--muted); background: repeating-linear-gradient(135deg, color-mix(in srgb, var(--line-strong) 40%, var(--card)) 0 4px, var(--card) 4px 8px); border: 1px dashed var(--line-strong); border-radius: 3px; padding: 0 5px; vertical-align: 0.05em; white-space: nowrap; }
.disclaimer { margin-top: 16px; padding: 12px 16px; border: 1px solid var(--line); border-left: 3px solid var(--awaiting); border-radius: 6px; background: color-mix(in srgb, var(--awaiting) 6%, var(--card)); font-size: var(--fs-small, 0.875rem); color: var(--ink); max-width: 72ch; }
.disclaimer p { margin: 0; }
.disclaimer p + p { margin-top: 6px; }

/* ---- rules page: one card per rule, deep-linkable (#R14, #S8) ---- */
.rule-grid { display: grid; gap: var(--sp-3); margin: var(--sp-3) 0; }
.rule-card { min-width: 0; background: var(--raised); border: 1px solid var(--line); border-left: 3px solid var(--accent, var(--seat-none)); border-radius: var(--radius); padding: var(--sp-3) var(--sp-4); scroll-margin-top: 80px; }
.rule-card:target { box-shadow: 0 0 0 2px var(--link); border-left-color: var(--link); }
.rule-h { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-2); margin: 0 0 var(--sp-2); font: 600 var(--fs-3)/1.3 var(--font-head); color: var(--ink-strong); }
.rule-plain { margin: 0 0 var(--sp-2); max-width: 70ch; }
.rule-badge { --c: var(--seat-none); display: inline-block; min-width: 2.6em; text-align: center; font: 600 var(--fs-label)/1.3 var(--font-mono); letter-spacing: 0.04em; color: var(--ink-strong); background: color-mix(in srgb, var(--c) 18%, var(--card)); border: 1px solid var(--c); border-radius: 4px; padding: 2px 6px; vertical-align: middle; }
.rb-risk { --c: var(--seat-risk); }
.rb-scout { --c: var(--seat-scout); }
.rb-skeptic { --c: var(--seat-skeptic); }
.rb-pm { --c: var(--seat-pm); }
.rb-code { --c: var(--line-strong); }
.rule-more > summary { min-height: 44px; }
.rule-nums { display: grid; gap: var(--sp-1) var(--sp-4); margin: var(--sp-2) 0; }
.rule-nums > div { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--sp-3); align-items: baseline; border-bottom: 1px solid var(--line-soft); padding: 2px 0; }
.rule-nums dt { color: var(--muted); font-size: var(--fs-1); min-width: 0; overflow-wrap: break-word; }
.rule-nums dd { margin: 0; text-align: right; color: var(--ink-strong); max-width: 32ch; overflow-wrap: break-word; }
.rule-codes { margin: var(--sp-2) 0 0; }
.rule-code { display: block; margin: var(--sp-1) 0; }
@media (min-width: 900px) { .rule-nums { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* a rule / reason code that links to its rule card */
a.rule-link { color: var(--link); text-decoration: underline; text-decoration-color: color-mix(in srgb, var(--link) 45%, transparent); text-underline-offset: 2px; }
a.rule-link:hover { text-decoration-color: var(--link); }
a.rule-link.jc-code { color: var(--link); }
.jd-more { margin-top: var(--sp-3); }
.jd-more a { color: var(--link); }

/* paper panel: lede and the return split (market vs costs) */
.paper-lede { margin: 0 0 var(--sp-3); }
.pbook-parts { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--sp-1) var(--sp-4); margin: 0 0 var(--sp-3); }
.pbook-part { white-space: nowrap; }
.pbook-part .up { color: var(--long); }
.pbook-part .down { color: var(--short); }

/* ---- record page: scoreboard first (approved 2026-10-01) ----
   The headline strip with its sample size on every number (a metric below its pre-registered
   minimum is greyed: "n = 0 of 20 needed"), the idea funnel as stage bars plus one bar split by the
   seat that stopped each idea, the Skeptic's verdict shares, then the honesty log. */
.rec-n { margin: 0 0 var(--sp-3); max-width: 72ch; }
.rec-strip .up { color: var(--long); }
.rec-strip .down { color: var(--short); }
.rec-parts { display: flex; flex-wrap: wrap; gap: 0 var(--sp-3); }
.st-thin .st-v { color: var(--muted); }
.st-thin dt { color: var(--muted); }
.rec-need { display: inline-block; font: 500 var(--fs-label)/1.3 var(--font-mono); color: var(--ink); background: var(--inset); border: 1px dashed var(--line-strong); border-radius: 4px; padding: 1px 6px; margin-right: 4px; white-space: nowrap; }
.rec-controls td, .rec-controls th { white-space: nowrap; }
.rf-stages { list-style: none; margin: var(--sp-3) 0; padding: 0; display: grid; gap: var(--sp-2); }
.rf-stage { display: grid; grid-template-columns: minmax(9rem, 14rem) minmax(0, 1fr) 5.5rem; gap: var(--sp-3); align-items: center; }
.rf-label { font-size: var(--fs-1); color: var(--ink); }
.rf-track { display: block; height: 12px; border-radius: 6px; background: var(--track); overflow: hidden; }
.rf-fill { display: block; height: 100%; background: var(--seat-scout); border-radius: 6px; }
.rf-n { font: 500 var(--fs-1)/1.3 var(--font-mono); font-variant-numeric: tabular-nums; color: var(--ink-strong); text-align: right; }
.rf-cap { margin: var(--sp-4) 0 var(--sp-1); color: var(--muted); }
.rf-bar { display: flex; height: 14px; margin: 0 0 var(--sp-2); border-radius: 7px; overflow: hidden; background: var(--track); gap: 2px; }
.rf-seg { display: block; height: 100%; }
.rf-scout { background: var(--seat-scout); }
.rf-risk { background: var(--seat-risk); }
.rf-skeptic { background: var(--seat-skeptic); }
.rf-bull { background: var(--seat-bull); }
.rf-pm { background: var(--seat-pm); }
.rf-entered { background: var(--executed); }
.rk-executed { background: var(--executed); }
.rk-warn { background: var(--warn); }
.rk-halted { background: var(--halted); }
.rk-stone { background: var(--stone); }
.rf-group > summary { min-height: 44px; }
.rk-legend { margin-top: var(--sp-1); }
.rec-minor { list-style: none; padding: 0; margin: var(--sp-2) 0; }
.rec-minor li { padding: var(--sp-2) 0; border-bottom: 1px solid var(--line-soft); overflow-wrap: break-word; }
.rec-minor a { color: var(--link); }
.rec-disc { margin: 0 0 24px; }
.rec-disc > details > summary { min-height: 44px; }
@media (max-width: 639px) {
  .rf-stage { grid-template-columns: minmax(0, 1fr) 4.5rem; }
  .rf-track { grid-column: 1 / -1; grid-row: 2; }
}

/* ---- how it works: two books, one portfolio (approved 2026-10-01) ----
   The split diagram is inline SVG with a <title>/<desc> and a visible text twin (.books); the two
   flows reuse the decision page's journey steps (.jp) with a step number in each dot and a
   "dies here" line, horizontal from 1100px and a vertical list below. */
.split { margin: var(--sp-4) 0 var(--sp-2); }
.split figcaption { margin-top: var(--sp-2); }
.split-svg { display: block; width: 100%; max-width: 560px; height: auto; margin: 0 auto; }
.sp-core { fill: color-mix(in srgb, var(--seat-pm) 24%, var(--card)); stroke: var(--seat-pm); stroke-width: 1.5; }
.sp-swing { fill: color-mix(in srgb, var(--seat-scout) 14%, var(--card)); stroke: var(--seat-scout); stroke-width: 1.5; stroke-dasharray: 5 3; }
.sp-label { font: 600 14px var(--font-head); fill: var(--ink-strong); letter-spacing: 0.02em; }
.sp-note { font: 400 12px var(--font-body); fill: var(--ink); }
.sp-return { fill: none; stroke: var(--seat-scout); stroke-width: 1.5; }
.sp-head { fill: var(--seat-scout); }
.sp-link { stroke: var(--line-strong); stroke-width: 1.5; }
.sp-box { fill: var(--raised); stroke: var(--line); stroke-width: 1; }
.sp-box-core { stroke: color-mix(in srgb, var(--seat-pm) 55%, var(--line)); }
.sp-box-swing { stroke: color-mix(in srgb, var(--seat-scout) 55%, var(--line)); }
.sp-line { font: 400 14px var(--font-body); fill: var(--ink-strong); }
.sp-line.sp-dim { fill: var(--muted); font-size: 13px; }
.books { display: grid; gap: var(--sp-4); margin: var(--sp-3) 0 0; }
.book { min-width: 0; background: var(--raised); border: 1px solid var(--line); border-top: 3px solid var(--accent); border-radius: var(--radius); padding: var(--sp-3) var(--sp-4); }
.book h3 { margin: 0 0 var(--sp-3); }
.book .vb-rows { margin: 0; }
.book .vb-rows > div { grid-template-columns: minmax(5.5rem, max-content) 1fr; }
.book a { color: var(--link); }
@media (min-width: 900px) { .books { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

.jp-how .jp-why { color: var(--ink); }
.jp-die { font: 600 var(--fs-label)/1.3 var(--font-body); text-transform: uppercase; letter-spacing: 0.06em; color: var(--muted); }
.jp-how .jp-why a { color: var(--link); }
.jp-n7, .jp-n8 { grid-template-columns: 1fr; gap: var(--sp-2); }
.jp-how .jp-step { display: grid; grid-template-columns: 32px auto 1fr; column-gap: var(--sp-2); row-gap: 2px; align-items: center; text-align: left; padding: 0; }
.jp-how .jp-step::before { top: -10px; left: 15px; width: 2px; height: 10px; }
.jp-how .jp-label { margin-top: 0; }
.jp-how .jp-why { grid-column: 2 / -1; margin-top: 0; }
@media (min-width: 1100px) {
  .jp-n7 { grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 0; }
  .jp-n8 { grid-template-columns: repeat(8, minmax(0, 1fr)); gap: 0; }
  .jp-how .jp-step { display: flex; flex-direction: column; align-items: center; text-align: center; padding: 0 var(--sp-1); }
  .jp-how .jp-step::before { top: 15px; left: -50%; width: 100%; height: 2px; }
  .jp-how .jp-label { margin-top: var(--sp-1); }
  .jp-how .jp-why { margin-top: var(--sp-1); }
}

.swing-seats { list-style: none; margin: var(--sp-4) auto var(--sp-1); padding: 0; display: flex; flex-wrap: wrap; justify-content: center; gap: var(--sp-2) var(--sp-4); }
.swing-seats li { display: inline-flex; align-items: center; gap: var(--sp-2); font-size: var(--fs-1); color: var(--ink-strong); }
.ss-dot { display: grid; place-items: center; width: 22px; height: 22px; border-radius: 50%; background: var(--accent); color: var(--on-accent); font: 500 var(--fs-label)/1 var(--font-mono); }
.swing-seats + .chamber-cap { text-align: center; max-width: 52ch; margin-left: auto; margin-right: auto; }
#roster .jd-body h3 { margin-top: var(--sp-4); }

.gloss { display: grid; gap: var(--sp-3); margin: 0; }
.gloss > div { display: grid; grid-template-columns: minmax(9rem, max-content) 1fr; gap: var(--sp-1) var(--sp-4); border-bottom: 1px solid var(--line-soft); padding-bottom: var(--sp-2); scroll-margin-top: 80px; }
.gloss > div:target { border-bottom-color: var(--link); }
.gloss dt { font-weight: 600; color: var(--ink-strong); }
.gloss dd { margin: 0; min-width: 0; overflow-wrap: break-word; }
.gloss a { color: var(--link); }
@media (max-width: 639px) { .gloss > div { grid-template-columns: 1fr; } }
.swing-seats + .chamber-cap { margin-bottom: var(--sp-4); }
/* ---- agents: council seating cards and agent banners (approved 2026-10-01) ----
   One card per seat in its seat colour, in decision-flow order; code officers in a compact
   "Machinery" band. Agent pages open with the decision pages' verdict banner (.vb) and a strip of
   recent calls: ✓ / ✗ / — always with a word, never colour alone. */
.seats { list-style: none; margin: var(--sp-3) 0 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 21rem), 1fr)); gap: var(--sp-4); }
.seat-card { min-width: 0; display: flex; flex-direction: column; gap: var(--sp-2); background: var(--raised); border: 1px solid var(--line); border-top: 3px solid var(--accent); border-radius: var(--radius); padding: var(--sp-4); scroll-margin-top: 80px; }
.seat-card:target { box-shadow: 0 0 0 2px var(--link); }
.sc-head { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: var(--sp-3); }
.sc-name { margin: 0; font: 600 var(--fs-3)/1.2 var(--font-head); }
.sc-name a { color: var(--ink-strong); text-decoration: none; display: inline-flex; align-items: center; min-height: 44px; }
.sc-name a:hover { text-decoration: underline; text-decoration-color: var(--accent); }
.sc-sub { margin: 0; font-size: var(--fs-1); color: var(--muted); }
.sc-n { display: grid; place-items: center; width: 28px; height: 28px; border-radius: 50%; border: 1.5px solid var(--accent); color: var(--ink-strong); font: 500 var(--fs-1)/1 var(--font-mono); }
.sc-rows { display: grid; gap: var(--sp-2); margin: 0; }
.sc-rows > div { display: grid; grid-template-columns: 5.5rem minmax(0, 1fr); gap: var(--sp-2); align-items: baseline; border-top: 1px solid var(--line-soft); padding-top: var(--sp-2); }
.sc-rows dt { font: 600 var(--fs-label)/1.4 var(--font-body); text-transform: uppercase; letter-spacing: 0.08em; color: var(--muted); }
.sc-rows dd { margin: 0; min-width: 0; overflow-wrap: break-word; font-size: var(--fs-1); line-height: 1.5; color: var(--ink); }
.sc-said { display: block; color: var(--ink-strong); }
.sc-out { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-1) var(--sp-2); margin-top: var(--sp-1); }
.sc-dec { color: var(--link); display: inline-flex; align-items: center; min-height: 44px; }
.sc-rel { margin: auto 0 0; padding-top: var(--sp-2); border-top: 1px solid var(--line-soft); font: 400 var(--fs-label)/1.5 var(--font-mono); color: var(--muted); overflow-wrap: break-word; }
.sc-fails { display: block; margin-top: var(--sp-1); font-family: var(--font-body); }
.sc-fail { display: flex; align-items: center; gap: var(--sp-1); color: var(--ink); }
.sc-fail a { color: var(--link); }
.sc-also { margin: 0; font-size: var(--fs-1); }
.sc-also a { color: var(--link); display: inline-flex; align-items: center; min-height: 44px; }

.mach { list-style: none; margin: var(--sp-3) 0 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 17rem), 1fr)); gap: var(--sp-2); }
.mach-a { display: flex; align-items: flex-start; gap: var(--sp-2); min-height: 44px; padding: var(--sp-2) var(--sp-3); border: 1px solid var(--line); border-left: 3px solid var(--accent); border-radius: var(--radius); background: var(--inset); color: var(--ink); text-decoration: none; }
.mach-a:hover { background: var(--hover); }
.mach-a:focus-visible { outline: 2px solid var(--link); outline-offset: 2px; }
.mach-text { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.mach-name { font: 600 var(--fs-1)/1.3 var(--font-body); color: var(--ink-strong); }
.mach-job { font-size: var(--fs-label); line-height: 1.4; color: var(--muted); }
.mach-said { font: 400 var(--fs-label)/1.4 var(--font-mono); color: var(--ink); overflow-wrap: break-word; }

.vb.vb-agent { border-left-color: var(--accent); }
.vb-k { color: var(--muted); font-weight: 500; }
.vb-arrow { color: var(--accent); }
.vb-note { color: var(--warn); }
.hc-h { margin: var(--sp-3) 0 var(--sp-2); font: 600 var(--fs-label)/1.4 var(--font-body); text-transform: uppercase; letter-spacing: 0.08em; color: var(--muted); }
.hc-list { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: var(--sp-2); }
.hc { display: inline-flex; align-items: center; gap: var(--sp-2); min-height: 44px; padding: 0 var(--sp-3); border: 1px solid var(--line-strong); border-radius: 22px; background: var(--inset); color: var(--ink); text-decoration: none; font-size: var(--fs-1); }
.hc:hover { background: var(--hover); }
.hc:focus-visible { outline: 2px solid var(--link); outline-offset: 2px; }
.hc-g { font-weight: 600; }
.hc-l { font: 500 var(--fs-label)/1 var(--font-mono); color: var(--ink-strong); }
.hc-ok { border-color: color-mix(in srgb, var(--executed) 55%, var(--line)); }
.hc-ok .hc-g, .hc-inline.hc-ok { color: var(--executed); }
.hc-no { border-color: color-mix(in srgb, var(--halted) 55%, var(--line)); }
.hc-no .hc-g, .hc-inline.hc-no { color: var(--halted); }
.hc-none { border-style: dashed; }
.hc-none .hc-g, .hc-inline.hc-none { color: var(--muted); }
.hc-key { margin: var(--sp-2) 0 0; }
.hc-inline { font-size: var(--fs-1); }
.prompt-note { display: flex; align-items: flex-start; gap: var(--sp-1); color: var(--warn); }
.sa-list { list-style: none; margin: var(--sp-2) 0; padding: 0; }
.sa-list > li { padding: var(--sp-2) 0; border-top: 1px solid var(--line-soft); overflow-wrap: break-word; }
.sa-list > li:first-child { border-top: 0; }
.sa-list a.tkr { color: var(--link); }
.sa-text { display: block; margin-top: var(--sp-1); font-size: var(--fs-1); color: var(--ink); max-width: 78ch; }
.sc-rec { margin: 0; font-size: var(--fs-1); color: var(--ink); }
.sc-fw { font-weight: 600; }

/* home: the path to the decisions, right under the book's stats (reuses the verdict-banner accent) */
.dpath { border-left: 4px solid var(--seat-pm); padding: var(--sp-3) var(--sp-4); margin: 0 0 var(--sp-5); background: var(--raised); border-radius: var(--radius); }
.dpath-lead { margin: 0 0 var(--sp-2); font-size: var(--fs-2); overflow-wrap: break-word; }
.dpath-lead .chip { vertical-align: middle; }
.dpath-k { font-weight: 600; color: var(--ink-strong); }
.dpath-go { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-2) var(--sp-4); margin: 0 0 var(--sp-3); }
.dpath-go .cta, .dpath-all { min-height: 44px; }
.dpath-all { display: inline-flex; align-items: center; color: var(--link); }
.dpath-list { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--line); }
.dpath-list li { border-bottom: 1px solid var(--line); }
.dpath-list a { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0 var(--sp-3); min-height: 44px; padding: var(--sp-2) 0; text-decoration: none; color: var(--ink); }
.dpath-list a:hover .dpath-verdict { text-decoration: underline; }
.dpath-no { font: 600 var(--fs-1)/1.4 var(--font-mono); color: var(--ink-strong); }
.dpath-when { font-size: var(--fs-1); color: var(--muted); }
.dpath-verdict { flex: 1 1 14rem; min-width: 0; overflow-wrap: break-word; }

/* record: if we had bought every idea */
.wi-caveats { margin: var(--sp-2) 0 var(--sp-3); padding-left: var(--sp-5); color: var(--ink); max-width: 72ch; }
.wi-caveats li { margin: var(--sp-1) 0; }
.wi-table td, .wi-table th { white-space: nowrap; }
.wi-list { list-style: none; margin: var(--sp-2) 0; padding: 0; }
.wi-row { display: flex; flex-wrap: wrap; align-items: center; gap: 2px var(--sp-2); min-height: 44px; padding: var(--sp-1) 0; border-bottom: 1px solid var(--line-soft); overflow-wrap: break-word; }
.wi-row a { color: var(--link); display: inline-flex; align-items: center; min-height: 44px; }
.wi-why { color: var(--muted); font-size: var(--fs-1); }
.wi-ret { margin-left: auto; font: 500 var(--fs-1)/1.3 var(--font-mono); font-variant-numeric: tabular-nums; color: var(--ink); }
.wi-ret .up { color: var(--long); }
.wi-ret .down { color: var(--short); }
.wi-prior { font: 500 var(--fs-label)/1.3 var(--font-mono); color: var(--ink); background: var(--inset); border: 1px dashed var(--line-strong); border-radius: 4px; padding: 1px 6px; white-space: nowrap; }
.chip.wi-chip { text-transform: none; letter-spacing: 0; font-family: var(--font-body); }
.rf-stone { background: var(--stone); }
