/* Driftwood shared design system — self-hosted institutional type. THREE STRICT ROLES:
   • Satoshi (--sans): headings (H1–H3), body prose, and all UI (nav, tables, buttons, forms) —
     modern authority + maximum legibility for financial data and long-form insights.
   • Erode (--serif): editorial callouts ONLY — ledes, value statements, philosophy pull-quotes,
     introductory paragraphs — where the serif evokes emotional trust and prestige.
   Linked LAST in each <head> to unify tokens across all pages. */
@font-face{font-family:'Satoshi';font-style:normal;font-weight:400;font-display:swap;src:url("fonts/satoshi-400.woff2") format("woff2")}
@font-face{font-family:'Satoshi';font-style:normal;font-weight:500;font-display:swap;src:url("fonts/satoshi-500.woff2") format("woff2")}
@font-face{font-family:'Satoshi';font-style:normal;font-weight:700;font-display:swap;src:url("fonts/satoshi-700.woff2") format("woff2")}
/* Erode — editorial callouts / ledes / pull-quotes only, never headings or dense UI. */
@font-face{font-family:'Erode';font-style:normal;font-weight:400;font-display:swap;src:url("fonts/erode-400.woff2") format("woff2")}
@font-face{font-family:'Erode';font-style:normal;font-weight:500;font-display:swap;src:url("fonts/erode-500.woff2") format("woff2")}
@font-face{font-family:'Erode';font-style:normal;font-weight:600;font-display:swap;src:url("fonts/erode-600.woff2") format("woff2")}
@font-face{font-family:'Erode';font-style:normal;font-weight:700;font-display:swap;src:url("fonts/erode-700.woff2") format("woff2")}

:root{
  /* Rebrand (July 2026): limestone paper, slate-navy ink, editorial blue for identity/wayfinding.
     This shared sheet is the source of truth — pages that link it LAST inherit the rebrand here. */
  --bg:#f1efe9; --soft:#f7f5f0; --line:#d8d3c6; --line2:#e9e5db; --frame-line:#c3bcab; --ghost-line:#b8b2a4;
  --ink:#1e2833; --body:#3d4650; --dim:#5c6470; --muted:#6b6e6a; --navy:#1a2330;
  --pos:#2f6f5b; --neg:#9b4439; --slate:#3d4650; --rule:#1e2833; --accent:#15806a; --bench:#b8bcc2;
  --teal:#15463a; --teal2:#15806a;
  /* Editorial blue takes every identity/wayfinding role; --brass/--gold are retired aliases of it. */
  --accent-strike:#2c5878; --accent-strike-soft:#a9c2d6; --brass:#2c5878; --gold:#a9c2d6;
  /* ── Identity system — the Streams confluence lockup. One place for every lockup metric so the
     nav/chrome brand stays consistent site-wide; see brand.html for the full standard. ───────── */
  --logo-mark:17px;             /* nav mark height */
  --logo-gap:14px;              /* space around mark · divider · wordmark */
  --logo-rule:20px;             /* divider height */
  --logo-rule-color:var(--line);/* architectural hairline */
  --logo-word:14px;             /* wordmark size in the nav */
  --logo-word-spacing:.15em;    /* wordmark tracking */
  --s1:4px; --s2:8px; --s3:12px; --s4:16px; --s5:22px; --s6:30px;
  /* ── Institutional surface system — single source of truth, frozen 2026-07 ──────────────────
     Surfaces behave like paper, not floating software. One token squares every card, plate,
     table, callout, and panel site-wide; change it here and the whole site follows.
     Pills (--rfull) and circles (50%) are a different component class and stay round. */
  --surface-radius:0px;
  --surface-border:1px solid var(--line);
  --surface-shadow:none;
  --transition-standard:180ms ease;
  --content-max-width:720px;   /* the content column */
  --reading-measure:62ch;      /* prose line length */
  /* ── Canonical page opening (Publishing Spec §6) — one vertical rhythm so no page reveals
     which template made it. Applied by the shared `.doc > .eyebrow:first-child` rule below. */
  --open-pad:44px;             /* nav → opening eyebrow, every page */
  --eyebrow-gap:15px;          /* eyebrow → title */
  --title-gap:16px;            /* title → deck */
  --deck-gap:26px;             /* deck → hairline */
  --rule-gap:30px;             /* hairline → body */
  /* Legacy radius scale retained as aliases so older usages square automatically. */
  --r1:var(--surface-radius); --r2:var(--surface-radius); --r3:var(--surface-radius); --r4:var(--surface-radius); --rfull:999px;
  --sh1:0 1px 3px rgba(20,20,26,.06); --sh2:0 8px 30px rgba(20,20,26,.12);
  --sh-hover:0 10px 26px -12px rgba(20,18,12,.42);
  --t-fast:.12s ease; --t-mid:.2s ease;
  /* Organic easing for tactile hover/lift micro-interactions. */
  --ease-out:cubic-bezier(.2,.8,.2,1);
  /* Satoshi (--sans) is the workhorse: headings, body prose, and all UI. Erode (--serif) is reserved
     for editorial callouts — ledes, value statements, pull-quotes — where a serif adds prestige. */
  --sans:'Satoshi','Inter',system-ui,-apple-system,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;  /* headings + body + UI */
  --serif:'Erode','Georgia','Times New Roman',serif;   /* editorial callouts / ledes / pull-quotes only */
  --fz-xs:11px; --fz-sm:12.5px; --fz-md:15px; --fz-lg:18px; --fz-hero:30px;
}
body{ font-family:var(--sans); -webkit-font-smoothing:antialiased; letter-spacing:-.004em; }
/* Satoshi carries all heading levels (sentence case, tight tracking) + their print equivalents. */
h1,h2,h3,.ph-title,.es-h{ font-family:var(--sans); letter-spacing:-.02em; }
h1{ font-weight:700; } h2,.ph-title,.es-h{ font-weight:700; }
h3{ font-weight:500; }   /* Medium for a sleeker subhead */
/* Dense UI stays on Inter (var(--sans)): nav, tables, form controls, code, and any tabular-number
   atoms — a serif at small sizes / in aligned columns reads poorly and breaks numeric alignment. */
.num,.v,.big,output,.amt,.recovered{ font-family:var(--sans); font-variant-numeric:tabular-nums; font-feature-settings:"tnum" 1; }
table,th,td,thead,tbody,tfoot,.dwnav,.dwnav-links,input,select,textarea,button,code,.mono{ font-family:var(--sans); }
a{ color:var(--accent); }
::selection{ background:rgba(21,128,106,.16); }

/* ── Canonical page opening (Publishing Spec §3–6) ───────────────────────────────────────────
   One definition for the whole site (previously every page set its own opening pad, eyebrow
   weight/tracking, and eyebrow→title gap inline — the "which template made this?" tell). Scoped
   to the OPENING eyebrow only (`.doc`'s first child), so it never touches section eyebrows deep
   in a document, the Record/Reference mastheads (their eyebrow is nested, not a first child), or
   the §9 exceptions (homepage hero, Research `article.article`, tools without a `.doc` opening).
   Wins over each page's inline `.eyebrow{}` by specificity (0,3,0 vs 0,1,0), so no page edit is
   needed. The essays' `.kicker` shares the opening pad only — it keeps its own family/date look. */
.doc > .eyebrow:first-child,
.doc > .kicker:first-child{ margin-top:var(--open-pad); }
.doc > .eyebrow:first-child{
  margin-bottom:var(--eyebrow-gap);
  font-family:var(--sans); font-size:11px; font-weight:700; line-height:1.2;
  letter-spacing:.2em; text-transform:uppercase; color:var(--accent-strike); }
.doc > .eyebrow:first-child + h1,
.doc > .kicker:first-child + h1{ margin-top:0; margin-bottom:var(--title-gap); }

/* ── Global keyboard-focus indicator ────────────────────────────────────────────────────────
   One definition for the whole site (previously only taxlab.html had a focus ring, leaving the
   hub and every exhibit on the near-invisible UA default over cream). Token-driven; pages that
   need a contrasting ring (e.g. SVG map tiles on a dark fill) can still override locally. */
:focus-visible{ outline:2px solid var(--accent,#15806a); outline-offset:2px; }
a:focus-visible,button:focus-visible,summary:focus-visible,select:focus-visible,
input:focus-visible,textarea:focus-visible,[tabindex]:focus-visible,[role="tab"]:focus-visible,
[role="button"]:focus-visible{ outline:2px solid var(--accent,#15806a); outline-offset:2px; }
/* Keyboard users get the ring; mouse/touch clicks do NOT (no lingering outline after a tap). */
a:focus:not(:focus-visible),button:focus:not(:focus-visible),summary:focus:not(:focus-visible),
select:focus:not(:focus-visible),[tabindex]:focus:not(:focus-visible),
[role="tab"]:focus:not(:focus-visible){ outline:none; }

/* ── Shared persistent nav (rendered on every page) ─────────────────────────────────────────
   The brand wordmark links home and the section links give lateral wayfinding, so no page is a
   dead end. Token-driven so each page's local palette cascades through. */
.dwnav{ display:flex; justify-content:space-between; align-items:center; gap:10px 24px;
  flex-wrap:wrap; padding:14px 24px; border-bottom:1px solid var(--line,#e3dccd);
  background:var(--soft,#fbf9f4); font-family:var(--sans); }
/* The Nameplate (Secondary lockup): the Streams confluence mark, an architectural hairline, and
   DRIFTWOOD WEALTH in tracked caps — single-ink, never two-tone. Colour belongs to the page, so
   the wordmark reads identically everywhere. Metrics come from the --logo-* tokens. */
.dwnav .brand{ display:inline-flex; align-items:center; gap:var(--logo-gap,14px);
  text-decoration:none; white-space:nowrap; }
.dwnav .brand-mark{ height:var(--logo-mark,17px); width:auto; flex:none;
  color:var(--accent-strike,#2c5878); overflow:visible; }
.dwnav .brand-rule{ width:1px; height:var(--logo-rule,20px); flex:none;
  background:var(--logo-rule-color,#d8d3c6); }
.dwnav .brand-word{ font-size:var(--logo-word,14px); font-weight:500; color:var(--ink,#1d242d);
  letter-spacing:var(--logo-word-spacing,.15em); text-transform:uppercase; }
.dwnav .brand:hover .brand-word{ color:var(--accent-strike,#2c5878); }
/* Mobile: drop the divider, tighten to the Micro lockup. */
@media (max-width:620px){ .dwnav .brand{ gap:10px; } .dwnav .brand-rule{ display:none; } }
/* A running index of tracked-caps links, split into two labelled families: Understand (who we are
   and how we think) and Discover (the interactive tools). The current page carries a 2px
   editorial-blue rule. */
.dwnav-links{ display:flex; gap:10px 28px; align-items:center; flex-wrap:wrap; }
.dwnav-group{ display:inline-flex; align-items:center; gap:10px 22px; flex-wrap:wrap; }
.dwnav-label{ font-size:10.5px; font-weight:700; letter-spacing:.16em; text-transform:uppercase;
  color:var(--muted,#8a8577); white-space:nowrap; }
.dwnav-group + .dwnav-group{ margin-left:4px; padding-left:26px;
  border-left:1px solid var(--line,#e3dccd); }
.dwnav-links a{ font-size:12.5px; font-weight:500; letter-spacing:.14em; text-transform:uppercase;
  color:var(--dim,#5f5f68); text-decoration:none; padding:6px 0; white-space:nowrap;
  border-bottom:2px solid transparent; }
.dwnav-links a:hover{ color:var(--ink,#1d242d); }
.dwnav-links a[aria-current="page"]{ color:var(--ink,#1d242d);
  border-bottom-color:var(--accent-strike,#2c5878); }
/* One persistent conversation affordance in the chrome — an understated editorial action (no filled
   button), so any page a shared link lands on offers a way to reach the firm. Routes to the single
   conversation moment on the front door rather than repeating a contact value site-wide. */
.dwnav-cta{ margin-left:auto; align-self:center; white-space:nowrap; font-size:12.5px; font-weight:700;
  letter-spacing:.14em; text-transform:uppercase; color:var(--accent-strike,#2c5878); text-decoration:none;
  padding:6px 0; border-bottom:2px solid transparent; }
.dwnav-cta:hover{ border-bottom-color:var(--accent-strike,#2c5878); color:var(--ink,#1e2833); }
@media (max-width:620px){ .dwnav{ padding:11px 16px; gap:8px 18px; } .dwnav-links{ gap:8px 18px; }
  .dwnav-cta{ margin-left:0; }
  .dwnav-group{ gap:8px 16px; } .dwnav-group + .dwnav-group{ margin-left:0; padding-left:0;
    border-left:none; } .dwnav-label{ font-size:8.5px; opacity:.8; } }
/* Mobile disclosure: the full running index stacks to seven rows on a phone and buries the hero and
   its CTA below the fold. Collapse it behind a single control so the first screen leads with content,
   not chrome. The toggle is injected by dw-context.js (shared across every page, so no per-template
   markup), and the collapse is scoped to .dwnav--menu — a class that script adds only once the control
   is wired — so with JavaScript off the full index stays visible rather than hiding behind a dead
   button. Desktop is untouched: the toggle is display:none above the breakpoint. */
.dwnav-toggle{ display:none; }
@media (max-width:620px){
  .dwnav--menu .dwnav-toggle{ display:inline-flex; align-items:center; gap:9px; margin-left:auto;
    background:none; border:0; cursor:pointer; padding:6px 0; font-family:var(--sans); font-size:11px;
    font-weight:700; letter-spacing:.12em; text-transform:uppercase; color:var(--accent-strike,#2c5878); }
  .dwnav--menu .dwnav-toggle:focus-visible{ outline:2px solid var(--accent-strike,#2c5878); outline-offset:3px; }
  .dwnav--menu .dwnav-toggle .bars{ position:relative; box-sizing:border-box; width:18px; height:2px;
    background:currentColor; display:block; }
  .dwnav--menu .dwnav-toggle .bars::before,
  .dwnav--menu .dwnav-toggle .bars::after{ content:""; position:absolute; left:0; width:18px; height:2px;
    background:currentColor; transition:transform var(--t-fast,.15s) ease; }
  .dwnav--menu .dwnav-toggle .bars::before{ top:-6px; }
  .dwnav--menu .dwnav-toggle .bars::after{ top:6px; }
  /* Collapsed by default once enhanced; the disclosure opens an editorial table of contents. */
  .dwnav--menu .dwnav-links,
  .dwnav--menu .dwnav-cta{ display:none; }
  .dwnav--menu.dwnav--open .dwnav-links{ display:flex; flex-direction:column; align-items:flex-start;
    flex-basis:100%; gap:0; padding-top:14px; }
  /* Each family reads as a titled column — label as quiet front-matter, links stacked one per line,
     a hairline between families. Rhythm carries the hierarchy, not weight. */
  .dwnav--menu.dwnav--open .dwnav-group{ flex-direction:column; align-items:flex-start; gap:11px 0; width:100%; }
  .dwnav--menu.dwnav--open .dwnav-group + .dwnav-group{ margin-top:20px; padding-top:20px;
    border-top:1px solid var(--line,#e3dccd); }
  .dwnav--menu.dwnav--open .dwnav-label{ color:var(--muted,#8a8577); opacity:.7; margin-bottom:2px; }
  /* Set the conversation action apart, below its own rule, like a colophon. */
  .dwnav--menu.dwnav--open .dwnav-cta{ display:inline-block; flex-basis:100%; width:100%; margin-top:20px;
    padding-top:20px; border-top:1px solid var(--line,#e3dccd); }
  /* Open: the middle bar clears and the outer two cross into an ✕. */
  .dwnav--menu.dwnav--open .dwnav-toggle .bars{ background:transparent; }
  .dwnav--menu.dwnav--open .dwnav-toggle .bars::before{ top:0; transform:rotate(45deg); }
  .dwnav--menu.dwnav--open .dwnav-toggle .bars::after{ top:0; transform:rotate(-45deg); }
}
@media (prefers-reduced-motion:reduce){
  .dwnav--menu .dwnav-toggle .bars::before,
  .dwnav--menu .dwnav-toggle .bars::after{ transition:none; }
}

/* ── Mobile / cross-device consistency ──────────────────────────────────────────────────────
   Stop iOS Safari from auto-inflating body text (so the type scale is identical in portrait,
   landscape, and on desktop), keep long tokens/links from forcing horizontal page overflow, and
   guard the viewport: html clips any stray horizontal overflow so the page can never scroll
   sideways on a phone (applied to html, not body, so position:sticky keeps working). 100dvh keeps
   the paper filling the screen under a mobile browser's collapsing URL bar. */
html{ -webkit-text-size-adjust:100%; text-size-adjust:100%; overflow-x:hidden; }
body{ overflow-wrap:break-word; max-width:100%; min-height:100dvh; }

/* Horizontal-scroll wrapper for wide data tables on narrow screens (keeps cell padding instead of
   crushing columns to fit). It never forces the page wider than the viewport. `.table-wrapper` is
   an alias so either class works. CSS-only scroll shadows (the classic local/scroll background
   trick) fade in at whichever edge has more content, so a swipe affordance appears automatically —
   --wrap-bg is the page/table background the "cover" layers paint (defaults to the page --bg). */
.tscroll,.table-wrapper{
  width:100%; max-width:100%; overflow-x:auto; -webkit-overflow-scrolling:touch;
  background:
    linear-gradient(to right, var(--wrap-bg,var(--bg,#fff)) 30%, rgba(255,255,255,0)) 0 0,
    linear-gradient(to left,  var(--wrap-bg,var(--bg,#fff)) 30%, rgba(255,255,255,0)) 100% 0,
    radial-gradient(farthest-side at 0 50%, rgba(20,18,12,.16), rgba(20,18,12,0)) 0 0,
    radial-gradient(farthest-side at 100% 50%, rgba(20,18,12,.16), rgba(20,18,12,0)) 100% 0;
  background-repeat:no-repeat;
  background-size:34px 100%,34px 100%,14px 100%,14px 100%;
  background-attachment:local,local,scroll,scroll;
}

/* Wide tables that must scroll on a phone: pin the first (label) column so a row's identity
   stays visible while the metric columns scroll, and cast a soft right-edge shadow that signals
   there is more content to the right. Opt in with class="stickcol"; the page sets --stick-bg to
   its own table background so the pinned cell paints over the scrolled columns. Scoped to narrow
   screens only — on desktop the table fits, so the column need not be pinned and hover styles
   stay untouched. */
@media (max-width:640px){
  .stickcol thead th:first-child,
  .stickcol tbody td:first-child,
  .stickcol tbody th:first-child{ position:sticky; left:0; background:var(--stick-bg,#fff);
    box-shadow:7px 0 7px -7px rgba(20,18,12,.28); }
  .stickcol thead th:first-child{ z-index:3; }
  .stickcol tbody td:first-child,
  .stickcol tbody th:first-child{ z-index:2; }
}

/* Visually-hidden-but-vocalized utility: for text that only screen readers should get (e.g.
   "positive signal" beside a value whose meaning sighted users take from its color). */
.sr-only{ position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden;
  clip:rect(0,0,0,0); white-space:nowrap; border-width:0; }

/* Apple HIG: comfortable ≥44px touch targets for the primary interactive controls on touch
   devices — nav links, buttons, selects, tabs — without changing their look for mouse users.
   min-height (not height) leaves already-tall controls alone; range/checkbox inputs are excluded
   so slider tracks aren't stretched. */
@media (pointer:coarse){
  .dwnav-links a{ min-height:44px; display:inline-flex; align-items:center; }
  button,select,summary,[role="tab"],[role="button"]{ min-height:44px; }
}

/* Collapsible affordance: a rotating chevron so <details> summaries read as toggles, not static
   headers. We suppress the default disclosure triangle and append our own marker. */
details > summary{ list-style:none; }
details > summary::-webkit-details-marker{ display:none; }
details > summary::after{ content:"\25B8"; display:inline-block; margin-left:.5em;
  color:var(--brass,#2c5878); font-size:.85em; transition:transform .15s ease; }
details[open] > summary::after{ transform:rotate(90deg); }

/* ── Crisp register ──────────────────────────────────────────────────────────────────────────
   Square the card/panel/table/control surfaces site-wide so every page reads with the same
   printerly, hard-edged register as the front door's plate frame. Pills (999px status chips,
   badges) and the plate frame itself (.frame, 3px) deliberately keep their shape. */
/* !important so it wins over the tool pages' own local card radii (they link this sheet first). The
   selector list is card/panel/control classes only — pills (999px) and .frame (3px) are never listed. */
.card,.cards,.cell,.vcard,.statstrip,.exhibits,a.ex,.arch,.note,.loc,.disc,.map-wrap,
.opt-card,.opt-result,.blueprint,.acct,.struct-alpha,.cta,.dcard,.lv,.reb,.trade,.est-cliff,
.research-banner,.fold,.smtabs button,.leadstate button,table.book,
.rev-lead,.rl-track,.savings,.flexcard,select{ border-radius:var(--surface-radius)!important; }

/* ── The Hypothetical Marker — one rule-bounded language for the Core Alpha research exhibits ──
   The dashboard / ledger / tearsheet / studies are hypothetical Model Portfolios. Instead of a
   boxed chip in the eyebrow plus a separately-styled banner, the whole family now speaks one
   hairline idiom: the point-of-performance label (.hyp-pill — kept verbatim for the Marketing-
   Rule marker) is a rule-preceded caps mark; the framing note (.research-banner) is a rule-
   bounded band. No pills, no colour — publication typography, not app chrome. Scoped to .eyebrow
   so the internal Workspace's own .hyp-pill (a masthead tag) is untouched. */
.eyebrow .hyp-pill{ font-family:var(--sans); font-size:9.5px; font-weight:700; letter-spacing:.12em;
  text-transform:uppercase; color:var(--muted); border:0; border-left:1px solid var(--line);
  padding:1px 0 1px 9px; margin-left:11px; vertical-align:middle; white-space:nowrap; }
.research-banner{ margin:14px 0 22px; padding:3px 0 3px 15px; border-left:1px solid var(--line);
  font-size:12.5px; line-height:1.55; color:var(--dim); }
.research-banner b{ color:var(--body); font-weight:600; }

/* ── The Core Alpha research series rail — a bound-volume index so no exhibit dead-ends ────────
   One strip at the foot of every research page: the four numbered pieces, the current one
   marked, the rest linked. Adjacency is the prev/next — from any piece the reader can reach the
   whole series. Shared here; the .series-rail class is used only on the research exhibits. */
.series-rail{ margin:34px 0 4px; padding-top:18px; border-top:1px solid var(--line); }
.series-rail .sr-title{ display:block; font-family:var(--sans); font-size:10px; font-weight:600;
  letter-spacing:.16em; text-transform:uppercase; color:var(--muted); margin-bottom:12px; }
.series-rail ol{ list-style:none; margin:0; padding:0; display:flex; flex-wrap:wrap; gap:1px;
  background:var(--line); border:1px solid var(--line); }
.series-rail li{ flex:1 1 180px; background:var(--card,#fff); padding:12px 15px;
  font-family:var(--sans); font-size:13px; line-height:1.35; color:var(--ink); }
.series-rail li i{ display:block; font-style:normal; font-size:10px; font-weight:600;
  letter-spacing:.12em; text-transform:uppercase; color:var(--muted);
  font-variant-numeric:tabular-nums; margin-bottom:3px; }
.series-rail a{ display:block; color:var(--brass,#2c5878); text-decoration:none; }
.series-rail a:hover{ text-decoration:underline; text-underline-offset:2px; }
.series-rail li[aria-current="page"]{ background:var(--soft); font-weight:600;
  box-shadow:inset 2px 0 0 var(--brass,#2c5878); }
.series-rail li[aria-current="page"] i{ color:var(--brass,#2c5878); }
@media(max-width:620px){ .series-rail li{ flex-basis:100%; } }

/* ── One-click PDF proposal / CPA brief (window.print → Save as PDF) ─────────────────────────
   A clean, multi-page print template: strip the app chrome and interactive controls, keep the
   rendered analysis (placement, transition before/after, decision tree), and append formal
   disclosures with a running firm footer on every page. */
#printproposal,#printdisc,#printfoot{ display:none; }
@media print{
  @page{ margin:16mm 14mm 20mm; }
  *{ -webkit-print-color-adjust:exact !important; print-color-adjust:exact !important; }
  body{ font-size:10.5px; color:var(--ink); }
  /* Strip all interactive chrome, navigation, filtering controls, and conversion CTAs — none of
     them mean anything on paper. (`header` is NOT hidden here: the exhibits' <header> holds the
     page title; the Tax Lab hides its own app header in its page-scoped print block.) */
  .modetog,.fab,.fabwrap,.controls,.toolbar,.trans-models,.tools,#transmodels,
    input[type=range],.slider,#leadgen,.lead-cta,.foot a.back,.map-wrap h3 .hint,.methods>summary,
    .chrome,.dwnav,.ctas,.cta,.filters,.tabs,.legend .key{ display:none!important; }
  /* The screen shell becomes the sheet: full width inside the @page margins, no web max-widths,
     no browser-mock frame chrome. !important because each page's own <style> block loads AFTER
     this shared sheet, and these print-only resets must beat those screen rules in the cascade. */
  html{ overflow-x:visible; }
  body,.wrap,.sheet{ max-width:none!important; }
  .wrap,.sheet{ margin:0!important; padding-left:0!important; padding-right:0!important; }
  .frame{ border:0!important; border-radius:var(--surface-radius)!important; box-shadow:none!important; }
  /* Scroll containers can't scroll on paper — let their full content lay out, and drop the
     scroll-shadow gradients (they'd print as smudges at the table edges). */
  .tscroll,.table-wrapper{ overflow:visible!important; background:none!important; }
  /* Never slice a data card, exhibit tile, or table across a page break. */
  .vcard,.tscroll,.table-wrapper,.arch,.ex,a.step,.study,.detail,.trade,.statstrip,
    .dcard,.lv,.attrib,.summary,.fits{ break-inside:avoid; }
  /* surface the proposal blocks */
  #printproposal,#printdisc{ display:block!important; break-inside:avoid;
    border:1px solid var(--line); border-radius:var(--surface-radius); padding:12px 15px; margin:14px 0; }
  #printdisc{ border-color:var(--slate); }
  #printproposal p,#printdisc p{ font-size:10px; line-height:1.5; margin:0 0 6px; }
  .es-h{ font-family:var(--serif); font-size:12px; font-weight:500; margin-bottom:5px; }
  /* keep visual atoms intact across page breaks */
  .alloc-card,.dnode,.struct-alpha,.transgrid,.dtree .row,.holdings,.estate-node,
    .opt-card,.est-cliff,table,#execsummary,#cpabrief{ break-inside:avoid; }
  h2,h3,.es-h{ break-after:avoid; }
  /* running firm footer, repeated on every printed page */
  #printfoot{ display:block!important; position:fixed; bottom:0; left:0; right:0;
    font-size:8px; color:var(--slate); text-align:center; padding-top:4px; border-top:.5px solid var(--line); }
}

/* Question hook — story-first case openings (Coordination Library) */
.qhook{ margin:0 0 4px; }
.qhook .qq{ display:block; font-family:var(--serif); font-weight:500;
  font-size:clamp(21px, 1.6vw + 14px, 28px); line-height:1.2; letter-spacing:-.015em; color:var(--ink,#1e2833); }
.qhook .qa{ display:block; font-family:var(--sans); font-size:15px; line-height:1.5; font-weight:500;
  color:var(--brass,#2c5878); margin-top:8px; }

/* ── Craft pass — set like a printed sheet, not a web page ──────────────────────────────
   Execution only: balance the rag, hang the opening marks, and honour reduced-motion. No
   copy, colour, or positioning touched. */
h1,h2,h3,h4{ text-wrap:balance }
p,li,figcaption,blockquote,dd{ text-wrap:pretty }
body{ hanging-punctuation:first last }
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{ animation-duration:.001ms!important; animation-iteration-count:1!important;
    transition-duration:.001ms!important; scroll-behavior:auto!important }
}

/* ============================================================================
   DRIFTWOOD — INSTITUTIONAL UPGRADE  ·  driftwood.css additions
   ----------------------------------------------------------------------------
   APPEND this block to the END of the shared stylesheet in BOTH mirrors:
       docs/driftwood.css
       src/drift/web/driftwood.css
   It only ADDS classes; it changes nothing already defined. It reuses the
   existing tokens (--ink, --line, --teal2, --accent-strike, --neg, --sans,
   --serif, --surface-radius:0, …), so it inherits the July-2026 rebrand.

   Roles, unchanged from the house style:
     • Satoshi (--sans) — headings, UI, tables, numerals   • Erode (--serif) — ledes / pull-lines only
     • blue = identity/wayfinding   • teal = action/positive   • rust = negative
     • square everything; rule, don't box; no gradients; no shadow at rest
   ============================================================================ */

/* ── 0 · MICRO-TYPOGRAPHIC SUBSTRATE (Rec C) ────────────────────────────────
   Global-safe utilities. The real work is in CONTENT conventions (see README):
   accounting negatives in ( ), true minus −, en-dash – in ranges, ½ fractions,
   thin spaces, "As of …" instead of "just now" badges. */
.tnum{ font-variant-numeric:tabular-nums; font-feature-settings:"tnum" 1; }
.sc{ font-variant:small-caps; letter-spacing:.03em; }         /* real small caps, not UPPERCASE+tracking */
.neg{ color:var(--neg); }                                     /* wrap the value itself in ( ) in markup */
.asof{ font-size:12px; color:var(--muted); font-variant-numeric:tabular-nums; }  /* marginal freshness note */

/* Section head used across the upgraded surfaces: "§ A  HOUSEHOLD DECISION LEDGER" */
.rec-head{ display:flex; gap:13px; align-items:baseline; margin:0 0 10px; }
.rec-head .rs{ font-weight:700; font-size:11px; letter-spacing:.2em; color:var(--accent-strike); }
.rec-head .rt{ font-weight:700; font-size:11px; letter-spacing:.18em; text-transform:uppercase; color:var(--accent-strike); }
.rec-lede{ font-size:15px; line-height:1.62; color:var(--body); margin:0; max-width:66ch; }

/* ── 1 · THE EXHIBIT (Rec A) — data set like a prospectus ───────────────────
   Ruled boxhead, NO vertical rules, NO zebra, decimal-aligned tabular figures,
   reductions in rust parentheses, a total rule + accounting double-underline,
   a footnote apparatus, and a numbered caption + italic source line. */
.exhibit{ max-width:840px; }
.exhibit-cap{ display:flex; justify-content:space-between; align-items:baseline; gap:16px; flex-wrap:wrap; margin-bottom:4px; }
.exhibit-cap .num{ font-weight:700; font-size:10.5px; letter-spacing:.2em; text-transform:uppercase; color:var(--accent-strike); }
.exhibit-cap .unit{ font-size:11px; color:var(--muted); font-variant-numeric:tabular-nums; }
.exhibit-title{ font-weight:700; font-size:19px; letter-spacing:-.015em; color:var(--ink); margin:0 0 3px; }
.exhibit-sub{ font-size:12.5px; color:var(--muted); margin:0 0 18px; max-width:62ch; }

table.exhibit-table{ width:100%; border-collapse:collapse; font-family:var(--sans); font-size:14px; }
.exhibit-table thead th{ text-align:left; font-weight:700; font-size:10px; letter-spacing:.12em;
  text-transform:uppercase; color:var(--muted); padding:0 16px 10px 0; border-bottom:2px solid var(--ink); }
.exhibit-table th.n,.exhibit-table td.n{ text-align:right; padding-left:16px; padding-right:0; }  /* numeric column */
.exhibit-table tbody{ font-variant-numeric:tabular-nums; font-feature-settings:"tnum" 1; }
.exhibit-table tbody td{ padding:11px 16px 11px 0; border-bottom:1px solid var(--line2); color:var(--body); vertical-align:baseline; }
.exhibit-table td.name{ color:var(--ink); }
.exhibit-table td.place{ color:var(--dim); font-size:12.5px; }
.exhibit-table td.neg{ color:var(--neg); }                    /* value authored as (5,800) */
.exhibit-table td.nil{ color:var(--muted); }                  /* value authored as em-dash — */
.exhibit-table tr.total td{ border-top:2px solid var(--ink); border-bottom:none; font-weight:700; color:var(--ink); padding-top:12px; padding-bottom:12px; }
.exhibit-table tr.total td.grand{ box-shadow:inset 0 -3px 0 -1px var(--ink); }  /* accounting double-underline */
.exhibit-notes{ margin-top:16px; padding-top:12px; border-top:1px solid var(--line2); max-width:66ch; }
.exhibit-notes p{ font-size:11.5px; line-height:1.6; color:var(--muted); margin:0 0 5px; }
.exhibit-notes .source{ font-style:italic; margin:5px 0 0; }
@media (max-width:640px){ .exhibit-table{ font-size:13px; } .exhibit-table thead th,.exhibit-table tbody td{ padding-right:10px; } .exhibit-table th.n,.exhibit-table td.n{ padding-left:10px; } }

/* ── 2 · COORDINATION MEASURE (Fix B) — replaces the gradient "health" pill ──
   A squared tally of discrete cells + an accounting readout + ruled lever rows. */
.coord-head{ display:flex; justify-content:space-between; align-items:baseline; margin-bottom:9px; }
.coord-head .lab{ font-weight:700; font-size:10px; letter-spacing:.14em; text-transform:uppercase; color:var(--muted); }
.coord-count{ font-variant-numeric:tabular-nums; font-weight:700; font-size:12.5px; color:var(--ink); letter-spacing:.04em; }
.tally{ display:flex; height:28px; border:1px solid var(--line); background:var(--soft); }
.tally .seg{ flex:1; border-right:1px solid var(--line); transition:background .3s cubic-bezier(.2,.8,.2,1); }
.tally .seg:last-child{ border-right:none; }
.tally .seg.on{ background:var(--teal); }
.coord-sum{ font-family:var(--serif); font-size:14px; line-height:1.45; color:var(--dim); margin:14px 0 16px; min-height:40px; }
.coord-levers{ border-top:1px solid var(--line2); }
.coord-lever{ display:flex; gap:12px; align-items:flex-start; width:100%; text-align:left; background:transparent;
  border:none; border-bottom:1px solid var(--line2); padding:12px 2px; cursor:pointer; font-family:var(--sans); }
.coord-lever:hover{ background:var(--soft); }
.coord-lever .tick{ flex:none; width:2px; align-self:stretch; background:var(--ghost-line); transition:background .2s ease; }
.coord-lever[aria-pressed="true"] .tick{ background:var(--teal2); }
.coord-lever .body{ flex:1; min-width:0; }
.coord-lever .row{ display:flex; justify-content:space-between; gap:10px; align-items:baseline; }
.coord-lever .nm{ font-weight:700; font-size:13.5px; color:var(--ink); }
.coord-lever .st{ font-weight:700; font-size:9.5px; letter-spacing:.11em; text-transform:uppercase; white-space:nowrap; color:var(--muted); }
.coord-lever[aria-pressed="true"] .st{ color:var(--teal2); }
.coord-lever .ds{ display:block; font-size:12.5px; line-height:1.5; color:var(--body); margin-top:4px; }
.coord-note{ font-size:11px; line-height:1.55; color:var(--muted); margin:12px 0 0; }

/* ── 3 · DECISION STEMMA (Fix C) — replaces the rounded-card + arrow ripple ──
   One ink spine, square nodes, tabular step marks, a double-rule resolution. */
.stemma-lead{ font-family:var(--serif); font-style:italic; font-size:15px; line-height:1.5; color:var(--dim); margin:0 0 14px; }
.stemma{ border-left:1px solid var(--ink); }
.stemma .step{ position:relative; padding:11px 0 11px 22px; border-bottom:1px solid var(--line2); }
.stemma .step:last-child{ border-bottom:none; }
.stemma .step::before{ content:""; position:absolute; left:-4px; top:16px; width:7px; height:7px; background:var(--ink); }
.stemma .n{ font-variant-numeric:tabular-nums; font-weight:700; font-size:10.5px; color:var(--muted); letter-spacing:.06em; margin-right:9px; }
.stemma .tx{ font-size:13.5px; line-height:1.5; color:var(--body); }
.stemma-end{ border-top:3px double var(--ink); margin-top:2px; padding-top:12px; font-weight:700; font-size:16px; letter-spacing:-.01em; color:var(--ink); }

/* ── 4 · BOUND-VOLUME MARKS (Rec B) — the physical manual, implied ──────────
   RESERVE these. Folio on standing pages; plate-mark on formal figures only;
   thumb-index on sectioned reference works (State Atlas); colophon once, in the
   footer. If they appear everywhere they stop meaning anything. */
.folio{ text-align:center; padding:8px 14px; border-top:1px solid var(--line2); }
.folio span{ font-weight:500; font-size:9px; letter-spacing:.14em; text-transform:uppercase; color:var(--muted); font-variant-numeric:tabular-nums; }
.platemark{ border:1px solid var(--line); padding:9px; background:#fff; }
.platemark > .plate{ border:1px solid var(--frame-line); padding:12px 12px 9px; }
.platemark .plate-cap{ font-weight:700; font-size:9px; letter-spacing:.18em; text-transform:uppercase; color:var(--muted); margin-top:7px; text-align:center; }
.colophon{ font-weight:500; letter-spacing:.06em; color:var(--muted); }
.thumb-index{ border-left:1px solid var(--line2); display:flex; flex-direction:column; align-items:stretch; }
.thumb-index a,.thumb-index span{ writing-mode:vertical-rl; text-orientation:mixed; text-align:center; text-decoration:none;
  font-weight:700; font-size:9px; letter-spacing:.14em; text-transform:uppercase; color:var(--muted); padding:10px 0; }
.thumb-index a:hover{ color:var(--ink); }
.thumb-index .on{ color:#fff; background:var(--accent-strike); }

/* ── 5 · THE OPERATING MANUAL (manual.html) — living operational record ─────
   Front matter, decision ledger, coordination register, change log. */
.frontmatter{ display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:1px; background:var(--line); border:1px solid var(--line); }
.frontmatter .cell{ background:var(--card); padding:13px 16px; }
.frontmatter .k{ font-weight:700; font-size:9px; letter-spacing:.16em; text-transform:uppercase; color:var(--muted); margin-bottom:6px; }
.frontmatter .v{ font-size:14px; font-weight:500; color:var(--ink); }
.frontmatter .v.tnum{ font-variant-numeric:tabular-nums; }
.frontmatter .v.due{ color:var(--teal2); font-variant-numeric:tabular-nums; }
.stamp{ border:1px solid var(--ghost-line); padding:9px 13px; text-align:center; flex:none; }
.stamp .t{ font-weight:700; font-size:9px; letter-spacing:.24em; text-transform:uppercase; color:var(--neg); }
.stamp .s{ font-size:9.5px; letter-spacing:.04em; color:var(--muted); margin-top:3px; max-width:15ch; line-height:1.4; }

/* ── Archive memory (Publishing Spec §13·6) — the institutional-memory vocabulary shared by every
   Record/Reference document: an edition line under the masthead (status · version · dates) and a
   cross-reference block at the document foot (Amendments · Draws on · Referenced by · Related ·
   Supersedes). All sample dates live inside the client-archive fiction; never firm history. */
.edition{ display:flex; flex-wrap:wrap; gap:5px 16px; align-items:baseline; margin:14px 0 0;
  font-family:var(--sans); font-size:10px; font-weight:500; letter-spacing:.09em;
  text-transform:uppercase; color:var(--muted); font-variant-numeric:tabular-nums; }
.edition .st{ font-weight:700; letter-spacing:.2em; color:var(--teal2); }
.edition .st.superseded,.edition .st.withdrawn{ color:var(--neg); }
.edition .st.draft,.edition .st.historical{ color:var(--muted); }
.archive-memory{ margin:36px 0 0; border-top:1px solid var(--line); padding-top:18px;
  display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:18px 30px;
  font-family:var(--sans); }
.archive-memory .blk .k{ font-weight:700; font-size:9.5px; letter-spacing:.18em;
  text-transform:uppercase; color:var(--muted); margin-bottom:7px; }
.archive-memory .blk .e{ font-size:12.5px; line-height:1.65; color:var(--dim); margin:0 0 6px; }
.archive-memory .blk .e:last-child{ margin-bottom:0; }
.archive-memory .blk .e a{ color:var(--slate); text-decoration:none;
  border-bottom:1px solid var(--line); }
.archive-memory .blk .e a:hover{ border-bottom-color:var(--slate); }
.archive-memory .blk .e .vv{ font-variant-numeric:tabular-nums; color:var(--ink); font-weight:500; }

/* ── Firm-anchor — the coordinates band (Launch Standard, item D): a restrained institution +
   provenance strip for page footers. One definition; the content is rendered from
   drift.site.firm_anchor_html() so the firm facts have a single source. */
.firm-anchor{ display:flex; justify-content:space-between; flex-wrap:wrap; gap:6px 24px; align-items:baseline;
  margin:0 0 16px; padding:11px 18px; background:var(--soft); border:1px solid var(--line);
  border-radius:var(--surface-radius); font-family:var(--sans); font-weight:600; font-size:10px;
  letter-spacing:.14em; text-transform:uppercase; color:var(--muted); font-variant-numeric:tabular-nums; }
@media(max-width:620px){ .firm-anchor{ font-size:9px; letter-spacing:.1em; padding:10px 14px; gap:4px 16px; } }

/* ── Footer disclosure line — one canonical treatment ─────────────────────────────────────────
   Every page's quiet <div class="foot"> disclosure used to carry its own inline .foot{} — 24
   variants that had drifted apart in top spacing, colour, size, and line-height. This single rule
   unifies the SHARED footer treatment (vertical rhythm · type · rule) sitewide and wins over each
   page's inline .foot{} by specificity (0,1,1 vs 0,1,0), so no per-page edit is required. It
   deliberately does NOT set horizontal padding, so each page keeps its own content gutter (44px
   editorial · 40px Atlas · 48px wide tools). Renders below the firm-anchor band, matching that
   pattern on every public page. */
body .foot{ margin-top:42px; padding-top:20px; padding-bottom:38px;
  border-top:1px solid var(--line); color:var(--muted); font-size:11px; line-height:1.65; }
body .foot .note{ color:var(--dim); font-weight:500; }

/* Decision ledger — a ruled journal that only grows */
.ledger-head,.ledger-row{ display:grid; grid-template-columns:96px 1fr 132px 116px 116px; gap:16px; }
.ledger-head{ padding:14px 0 9px; border-bottom:2px solid var(--ink); }
.ledger-head > div{ font-weight:700; font-size:9.5px; letter-spacing:.13em; text-transform:uppercase; color:var(--muted); }
.ledger-year{ display:flex; justify-content:space-between; align-items:baseline; padding:14px 0 8px; border-bottom:1px solid var(--line); }
.ledger-year .y{ font-weight:700; font-size:12px; letter-spacing:.14em; color:var(--ink); font-variant-numeric:tabular-nums; }
.ledger-year .c{ font-size:10.5px; color:var(--muted); letter-spacing:.04em; }
.ledger-row{ padding:15px 0; border-bottom:1px solid var(--line2); align-items:baseline; }
.ledger-row:last-child{ border-bottom:none; }
.ledger-row .date{ font-variant-numeric:tabular-nums; font-weight:500; font-size:13px; color:var(--ink); }
.ledger-row .title{ font-weight:500; font-size:15px; line-height:1.35; color:var(--ink); }
.ledger-row .reason{ font-size:13px; line-height:1.5; color:var(--dim); margin-top:4px; }
.ledger-row .affected{ font-variant:small-caps; letter-spacing:.03em; font-size:12.5px; color:var(--muted); line-height:1.5; }
.ledger-row .ref a{ font-size:12.5px; font-weight:500; color:var(--teal2); }
.ledger-row .ref .none{ color:var(--muted); font-size:12.5px; }
.recstatus{ display:flex; align-items:center; gap:7px; }
.recstatus .sw{ width:7px; height:7px; flex:none; background:var(--muted); }
.recstatus.done .sw{ background:var(--teal2); }
.recstatus.prog .sw{ background:var(--accent-strike); }
.recstatus .lb{ font-variant:small-caps; letter-spacing:.04em; font-size:12px; color:var(--body); }

/* Coordination register — matters in motion */
.register-head,.register-row{ display:grid; grid-template-columns:1fr 250px 96px 150px; gap:16px; }
.register-head{ padding:0 0 9px; border-bottom:2px solid var(--ink); }
.register-head > div{ font-weight:700; font-size:9.5px; letter-spacing:.13em; text-transform:uppercase; color:var(--muted); }
.register-row{ padding:16px 0; border-bottom:1px solid var(--line2); align-items:start; }
.register-row:last-child{ border-bottom:none; }
.register-row .matter{ font-weight:500; font-size:15px; color:var(--ink); line-height:1.3; }
.register-row .opened{ font-size:11.5px; color:var(--muted); margin-top:4px; font-variant-numeric:tabular-nums; }
.register-row .owner,.register-row .rstat{ font-size:13px; color:var(--body); }
.register-row .rstat{ font-variant:small-caps; letter-spacing:.03em; }
.register-row .rstat.blue{ color:var(--accent-strike); }
.register-row .rstat.due{ color:var(--teal2); }
.deps{ display:flex; flex-wrap:wrap; gap:6px 14px; }
.dep{ display:inline-flex; align-items:center; gap:5px; font-variant:small-caps; letter-spacing:.03em; font-size:12px; }
.dep .box{ width:7px; height:7px; }
.dep.done{ color:var(--ink); } .dep.done .box{ background:var(--teal2); }
.dep.pending{ color:var(--muted); } .dep.pending .box{ border:1px solid var(--ghost-line); }

/* Change log — the plan as a versioned instrument */
.changelog-head,.changelog-row{ display:grid; grid-template-columns:88px 104px 1fr 170px; gap:16px; }
.changelog-head{ padding:0 0 9px; border-bottom:2px solid var(--ink); }
.changelog-head > div{ font-weight:700; font-size:9.5px; letter-spacing:.13em; text-transform:uppercase; color:var(--muted); }
.changelog-row{ padding:13px 0; border-bottom:1px solid var(--line2); align-items:baseline; }
.changelog-row:last-child{ border-bottom:none; }
.changelog-row .rev{ font-variant-numeric:tabular-nums; font-weight:700; font-size:14px; color:var(--ink); }
.changelog-row .cdate{ font-variant-numeric:tabular-nums; font-size:12.5px; color:var(--dim); }
.changelog-row .change{ font-size:13.5px; color:var(--body); line-height:1.5; }
.changelog-row .by{ font-variant:small-caps; letter-spacing:.03em; font-size:12.5px; color:var(--muted); }

/* Stack the record grids on narrow screens */
@media (max-width:640px){
  .ledger-head,.register-head,.changelog-head{ display:none; }
  .ledger-row,.register-row,.changelog-row{ grid-template-columns:1fr; gap:5px; padding:16px 0; }
  .ledger-row .date,.changelog-row .rev{ font-size:12px; color:var(--muted); }
}

/* ============================================================================
   THE DRIFTWOOD EXHIBIT SYSTEM — interactive (Exhibits 4–6) + Evidence Framework
   ----------------------------------------------------------------------------
   Permanent components of the exhibit family (see the .exhibit block above).
   The interaction disappears into the document: the reader inspects evidence,
   not operates a visualization. Tokens only; no chart library; print-complete. */

/* Shared white plate for the interactive exhibits (matches the .kf register). */
.exhibit-plate{ max-width:840px; border:1px solid var(--frame-line); border-top:2px solid var(--ink);
  background:#fff; padding:24px 26px 18px; }

/* Live readout strip — always populated; the cursor is a ruler, not a toggle. */
.exhibit-readout{ display:flex; gap:8px 26px; flex-wrap:wrap; align-items:baseline; padding:9px 12px;
  background:var(--soft); border:1px solid var(--line2); font-variant-numeric:tabular-nums; margin-bottom:12px; }
.exhibit-readout .yr{ font-weight:700; font-size:12.5px; color:var(--ink); }
.exhibit-readout .lbl{ font-size:12.5px; color:var(--body); }
.exhibit-readout .lbl b{ font-weight:700; color:var(--ink); }
.exhibit-readout .kept{ font-size:12.5px; color:var(--teal); }
.exhibit-readout .kept b{ font-weight:700; }
.exhibit-readout .sw{ display:inline-block; width:8px; height:8px; margin-right:7px; vertical-align:baseline; }
.exhibit-readout .sw.co{ background:var(--teal2); } .exhibit-readout .sw.is{ background:var(--bench); }
.exhibit-chart{ width:100%; height:auto; display:block; cursor:crosshair; font-family:var(--sans); }
.exhibit-chart text{ font-variant-numeric:tabular-nums; }

/* Methodology fold — the site chevron; forced open in print. */
details.exhibit-method{ margin-top:14px; border-top:1px solid var(--line2); padding-top:10px; }
.exhibit-method>summary{ font-weight:700; font-size:10.5px; letter-spacing:.14em; text-transform:uppercase; color:var(--muted); }
.exhibit-method p{ font-size:11.5px; line-height:1.6; color:var(--muted); margin:9px 0 0; max-width:72ch; }
.exhibit-method p.src{ font-style:italic; margin:6px 0 0; }

/* The Evidence Framework — identical four-row metadata beneath every quantitative exhibit. */
.exhibit-evidence{ border-top:1px solid var(--line2); margin-top:12px; padding-top:11px;
  display:grid; grid-template-columns:70px 1fr; gap:4px 14px; max-width:76ch; }
.exhibit-evidence .k{ font-weight:700; font-size:9px; letter-spacing:.16em; text-transform:uppercase; color:var(--muted); }
.exhibit-evidence .v{ font-size:11.5px; line-height:1.5; color:var(--dim); }
.exhibit-evidence .v.tnum{ font-variant-numeric:tabular-nums; }
.exhibit-evidence .v.src{ font-style:italic; }

/* Exhibit 5 — after-tax real waterfall (accounting convention). */
.waterfall-head,.waterfall-row{ display:grid; grid-template-columns:180px 1fr 96px; gap:14px; align-items:center; }
.waterfall-head{ padding:0 0 8px; border-bottom:2px solid var(--ink); }
.waterfall-head div{ font-weight:700; font-size:9.5px; letter-spacing:.13em; text-transform:uppercase; color:var(--muted); }
.waterfall-head .u{ text-align:right; }
.waterfall-row{ padding:12px 0; border-bottom:1px solid var(--line2); }
.waterfall-row:hover{ background:var(--soft); }
.waterfall-row .ln{ font-weight:500; font-size:13.5px; color:var(--ink); }
.waterfall-row .nt{ font-size:11px; line-height:1.45; color:var(--muted); }
.waterfall-row .track{ height:24px; position:relative; }
.waterfall-row .track .bar{ position:absolute; top:0; bottom:0; }
.waterfall-row .amt{ text-align:right; font-variant-numeric:tabular-nums; font-size:13.5px; color:var(--ink); }
.waterfall-row .amt.neg{ color:var(--neg); } .waterfall-row .amt.dim{ color:var(--dim); }
.waterfall-row.total{ padding:13px 0 12px; border-bottom:3px double var(--ink); }
.waterfall-row.total .ln{ font-weight:700; } .waterfall-row.total .amt{ color:var(--teal); font-weight:700; }
.waterfall-note{ font-size:11.5px; line-height:1.6; color:var(--muted); margin:12px 0 0; max-width:72ch; }

/* Exhibit 6 — dependency structure matrix (DSM). */
.dsm-legend{ display:flex; gap:4px 16px; font-size:10.5px; color:var(--muted); align-items:center; flex-wrap:wrap; }
.dsm-legend span{ white-space:nowrap; }
.dsm-legend i{ display:inline-block; width:9px; height:9px; margin-right:6px; vertical-align:-1px; }
.dsm-legend i.p{ background:var(--ink); } .dsm-legend i.s{ border:1px solid var(--ghost-line); }
.dsm-head,.dsm-row{ display:grid; grid-template-columns:216px repeat(4,1fr); gap:0; }
.dsm-head{ border-bottom:2px solid var(--ink); }
.dsm-head div{ font-weight:700; font-size:9.5px; letter-spacing:.13em; text-transform:uppercase; color:var(--muted); text-align:center; padding-bottom:8px; }
.dsm-row{ border-bottom:1px solid var(--line2); align-items:stretch; }
.dsm-row .rn{ font-weight:500; font-size:13.5px; color:var(--ink); padding:12px 12px 12px 0; display:flex; align-items:center; }
.dsm-cell{ appearance:none; background:transparent; border:none; border-left:1px solid var(--line2); cursor:pointer;
  display:flex; align-items:center; justify-content:center; padding:12px 0; }
.dsm-cell:hover{ background:var(--soft); }
.dsm-cell.lvl0{ cursor:default; }
.dsm-cell .m{ display:block; }
.dsm-cell .m.p{ width:11px; height:11px; background:var(--ink); }
.dsm-cell .m.s{ width:11px; height:11px; border:1px solid var(--ghost-line); }
.dsm-cell .m.n{ width:8px; height:1px; background:var(--line); }
.dsm-cell[aria-current="true"] .m.p{ background:var(--teal2); }
.dsm-cell[aria-current="true"] .m.s{ border-color:var(--teal2); }
.dsm-readout{ display:flex; gap:12px; align-items:baseline; padding:12px 2px 2px; min-height:44px; }
.dsm-readout .lab{ font-weight:700; font-size:9.5px; letter-spacing:.14em; text-transform:uppercase; color:var(--teal2); white-space:nowrap; }
.dsm-readout .txt{ font-size:13px; line-height:1.5; color:var(--body); }
.dsm-why{ font-weight:500; font-size:12.5px; line-height:1.5; color:var(--muted); margin:16px 0 0; max-width:70ch;
  padding-top:12px; border-top:1px solid var(--line2); }
.dsm-why .t{ color:var(--teal2); text-transform:uppercase; letter-spacing:.1em; font-size:10.5px; margin-right:9px; }

/* Print — every exhibit degrades to a complete, static figure. */
@media print{
  .exhibit-chart{ cursor:default; }
  .exhibit-chart .crosshair,.exhibit-chart .marker{ display:none; }
  details.exhibit-method{ }
  details.exhibit-method>*{ display:revert; }        /* force the fold open on paper */
  .dsm-cell{ cursor:default; }
}

/* A-12 — the record pages (Manual · Decision Register · Annual Review) read as one bound
   volume: a quiet, shared section index sits under the nav on each. */
.om-sections{ margin:0 7px; padding:9px 24px; border-bottom:1px solid var(--line2);
  font-size:10px; letter-spacing:.04em; color:var(--muted); }
.om-sections .t{ font-weight:700; font-size:9px; letter-spacing:.16em; text-transform:uppercase; color:var(--muted); margin-right:11px; }
.om-sections a{ color:var(--accent-strike); font-weight:500; text-decoration:none; }
.om-sections a:hover{ color:var(--ink); }
.om-sections a[aria-current="page"]{ color:var(--ink); }
.om-sections .d{ color:var(--ghost-line); margin:0 8px; }
