/* ============================================================
   Twenty One Capital · site.css
   Registers: Newsreader (headings, letters) · Inter (body, UI) · IBM Plex Mono (figures, dates, labels)
   Rules: letter-spacing normal · accent is small and scarce · 1px rules · 0–4px radius on
          chips, tags and panels, 8px on buttons and inputs (October 29, 2026) ·
          essential content visible without JS or motion · 44px minimum hit areas
   ============================================================ */

/* ---------- Fonts (self-hosted, OFL) ---------- */
@font-face { font-family: 'Newsreader'; src: url('../assets/fonts/Newsreader-400-700.woff2') format('woff2'); font-weight: 400 700; font-style: normal; font-display: swap; }
@font-face { font-family: 'Newsreader'; src: url('../assets/fonts/Newsreader-400-700-italic.woff2') format('woff2'); font-weight: 400 700; font-style: italic; font-display: swap; }
@font-face { font-family: 'Inter'; src: url('../assets/fonts/Inter-400-700.woff2') format('woff2'); font-weight: 400 700; font-style: normal; font-display: swap; }
@font-face { font-family: 'IBM Plex Mono'; src: url('../assets/fonts/IBMPlexMono-400.woff2') format('woff2'); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: 'IBM Plex Mono'; src: url('../assets/fonts/IBMPlexMono-500.woff2') format('woff2'); font-weight: 500; font-style: normal; font-display: swap; }

/* ---------- Tokens ----------
   Light register. Secondary text clears 6:1 on every surface it is used on;
   --line-strong is reserved for control boundaries (≥3:1); --line for decorative rules. */
:root {
  color-scheme: light;
  --bg: #FCFBF9;
  --bg-surface: #FFFFFF;
  --bg-surface-2: #F4F1EB;
  --bg-deep: #F4F1EB;
  --ink: #0D0D0D;
  --ink-2: #5C5A54;
  --line: #E5E1D8;
  --line-strong: #8A877F;
  --accent: #C2410C;
  --accent-deep: #9A3412;
  --btc: #8A5A00;
  --focus: #C2410C;
  --select: #F3D9C9;
  --inset-bg: #131110;
  --inset-ink: #F5F2EC;
  --inset-ink-2: #A8A49B;
  --inset-line: #3A3731;
  --header-glass: rgba(252, 251, 249, 0.9);

  --serif: 'Newsreader', Georgia, 'Times New Roman', serif;
  --sans: 'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --mono: 'IBM Plex Mono', ui-monospace, 'SF Mono', Menlo, monospace;

  --ease: cubic-bezier(0.22, 1, 0.36, 1);
  --w-max: 1200px;
  --gutter: 48px;
  --gap: 24px;
  --header-h: 72px;
  --band: clamp(56px, 7.5vw, 104px);
}
[data-theme="dark"] {
  color-scheme: dark;
  --bg: #131110;
  --bg-surface: #1B1917;
  --bg-surface-2: #23201C;
  --bg-deep: #0B0A09;
  --ink: #F5F2EC;
  --ink-2: #A8A49B;
  --line: #2A2824;
  --line-strong: #7A766C;
  --accent: #E05A1E;
  --accent-deep: #F08A4B;
  --btc: #D4A017;
  --focus: #F08A4B;
  --select: #53331C;
  --inset-bg: #F4F1EB;
  --inset-ink: #0D0D0D;
  --inset-ink-2: #5C5A54;
  --inset-line: #D6D0C4;
  --header-glass: rgba(19, 17, 16, 0.88);
}
@media (max-width: 1024px) { :root { --gutter: 32px; } }
@media (max-width: 640px)  { :root { --gutter: 20px; } }

/* ---------- Reset and base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
  margin: 0; background: var(--bg); color: var(--ink);
  font-family: var(--sans); font-size: 1rem; line-height: 1.6;
  text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased;
  overflow-wrap: break-word;
}
@media (max-width: 640px) { body { font-size: 1rem; } }
img, svg { max-width: 100%; height: auto; display: block; }
a { color: inherit; text-decoration-color: var(--line-strong); text-underline-offset: 0.18em; text-decoration-thickness: 1px; }
a:hover { color: var(--accent-deep); text-decoration-color: currentColor; }
::selection { background: var(--select); color: var(--ink); }
:focus-visible { outline: 2px solid var(--focus); outline-offset: 3px; border-radius: 2px; }
main:focus { outline: none; }
h1, h2, h3, h4 { font-family: var(--serif); font-weight: 500; margin: 0 0 0.5em; line-height: 1.15; text-wrap: balance; }
h1 { font-size: clamp(2.5rem, 4.4vw, 4rem); line-height: 1.05; }
h2 { font-size: clamp(2rem, 3vw, 3rem); }
h3 { font-size: 1.5rem; line-height: 1.25; }
h4 { font-size: 1.15rem; }
p, dl, ul, ol, figure, table { margin: 0 0 1.1em; }
p:last-child { margin-bottom: 0; }
ul.plain { list-style: disc; padding-left: 1.2em; }
ul.plain li { margin-bottom: 0.4em; }
strong { font-weight: 600; }
time { font-variant-numeric: tabular-nums; }
button { font: inherit; color: inherit; }
address { font-style: normal; }
[hidden] { display: none !important; }
section, .sect { scroll-margin-top: calc(var(--header-h) + 16px); }

/* ---------- Utilities ---------- */
.vh { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.small { font-size: 0.875rem; line-height: 1.5; color: var(--ink-2); }
.mono { font-family: var(--mono); font-variant-numeric: tabular-nums; }
.sep { color: var(--ink-2); padding: 0 0.25em; }
.wrap { max-width: var(--w-max); margin: 0 auto; padding-left: var(--gutter); padding-right: var(--gutter); }
.grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--gap); align-items: start; }
.col-5 { grid-column: span 5; } .col-7 { grid-column: span 7; } .col-12 { grid-column: 1 / -1; }
@media (max-width: 900px) { .grid { grid-template-columns: 1fr; } .col-5, .col-7 { grid-column: 1 / -1; } }
.band { padding: var(--band) 0; }
.band--tight { padding: calc(var(--band) * 0.6) 0; }
.band--paper { background: var(--bg); }
.band--surface { background: var(--bg-surface); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.band--deep { background: var(--bg-deep); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.band--surface + .band--surface { border-top: 0; }
.eyebrow, .eyebrow-h {
  font-family: var(--mono); font-size: 0.8125rem; line-height: 1.5; font-weight: 400; color: var(--accent-deep);
  margin: 0 0 18px; display: flex; align-items: center; gap: 10px;
}
.eyebrow::before, .eyebrow-h::before { content: ''; width: 18px; height: 2px; background: var(--accent); flex: none; }
.eyebrow-h { margin-bottom: 40px; }
.section-head { margin-bottom: 28px; }
.section-intro { color: var(--ink-2); max-width: 64ch; margin-top: -0.25em; }
.section-foot { margin-top: 24px; display: flex; flex-wrap: wrap; align-items: baseline; gap: 12px 28px; color: var(--ink-2); font-size: 0.9375rem; }
.lede { font-size: clamp(1.125rem, 1.5vw, 1.3125rem); line-height: 1.55; color: var(--ink-2); max-width: 56ch; }
.prose { max-width: 66ch; }
.prose p { margin-bottom: 1.1em; text-wrap: pretty; }
@media (min-width: 641px) { .prose p, .legal-body .sect p, .page-team .person__short, .page-team .person__bio p { text-align: justify; hyphens: manual; } }
.period-tag { font-family: var(--mono); font-size: 0.8125rem; color: var(--ink-2); margin-bottom: 20px; }
.period-tag a { white-space: nowrap; }
.preview-tag {
  font-family: var(--mono); font-size: 0.8125rem; line-height: 1.5; color: var(--ink-2);
  border: 1px dashed var(--line-strong); padding: 10px 14px; margin-bottom: 20px;
}
.src { color: var(--ink-2); font-size: 0.875rem; }

/* Links and buttons */
.textlink { font-weight: 500; text-decoration: none; display: inline-flex; align-items: baseline; gap: 6px; min-height: 44px; align-items: center; }
.textlink::after { content: '→'; color: var(--accent); transition: transform 200ms var(--ease); }
.textlink:hover::after { transform: translateX(3px); }
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 10px;
  min-height: 50px; padding: 0 24px; border: 1px solid color-mix(in srgb, var(--ink) 24%, transparent); border-radius: 8px;
  font-family: var(--mono); font-size: .9375rem; font-weight: 500; letter-spacing: .01em; text-decoration: none;
  background: color-mix(in srgb, var(--ink) 4%, transparent); color: var(--ink); cursor: pointer;
  transition: border-color 160ms ease-out, background-color 160ms ease-out, color 160ms ease-out, filter 160ms ease-out;
}
.btn:hover { border-color: color-mix(in srgb, var(--ink) 55%, transparent); background: color-mix(in srgb, var(--ink) 8%, transparent); color: var(--ink); }
.btn > span[aria-hidden] { transition: transform 200ms var(--ease); }
.btn:hover > span[aria-hidden] { transform: translateX(3px); }
/* Primary: the accent as a solid fill. Dark text on the brighter dark-theme accent,
   white on the deeper light-theme one; both pass contrast. */
.btn--primary { background: var(--accent-deep); border-color: var(--accent-deep); color: #fff; }
.btn--primary:hover { background: var(--accent); border-color: var(--accent); color: #fff; }
[data-theme="dark"] .btn--primary { background: var(--accent); border-color: var(--accent); color: #0D0D0D; }
[data-theme="dark"] .btn--primary:hover { filter: brightness(1.08); }
.btn--inset { border-color: color-mix(in srgb, var(--inset-ink) 30%, transparent); background: color-mix(in srgb, var(--inset-ink) 5%, transparent); color: var(--inset-ink); }
.btn--inset:hover { border-color: color-mix(in srgb, var(--inset-ink) 60%, transparent); background: color-mix(in srgb, var(--inset-ink) 10%, transparent); color: var(--inset-ink); }
.chip {
  min-height: 44px; padding: 0 14px; border: 1px solid var(--line-strong); border-radius: 3px; background: transparent;
  font-family: var(--mono); font-size: 0.8125rem; color: var(--ink-2); cursor: pointer;
}
.chip[aria-pressed="true"] { background: var(--ink); color: var(--bg); border-color: var(--ink); }
.tag { font-family: var(--mono); font-size: 0.75rem; line-height: 1; padding: 6px 8px; border: 1px solid var(--line-strong); border-radius: 3px; color: var(--ink-2); white-space: nowrap; }
.tag--ind { border-color: color-mix(in srgb, var(--accent) 45%, transparent); background: color-mix(in srgb, var(--accent) 10%, transparent); color: var(--accent-deep); }
.tag--draft { border-style: dashed; }

/* Skip link */
.skip { position: absolute; left: 16px; top: -100px; z-index: 300; padding: 12px 16px; background: var(--ink); color: var(--bg); border-radius: 3px; text-decoration: none; font-weight: 500; }
.skip:focus { top: 12px; }

/* ---------- Header ---------- */
.site-header {
  position: sticky; top: 0; z-index: 100; height: var(--header-h);
  background: var(--bg); border-bottom: 1px solid transparent;
  transition: background-color 240ms var(--ease), border-color 240ms var(--ease);
}
.site-header.is-scrolled { background: var(--bg); border-bottom-color: var(--line); }
.site-header__in { height: 100%; display: flex; align-items: center; gap: 32px; }
.brand { position: relative; display: inline-flex; align-items: center; gap: 14px; text-decoration: none; color: var(--ink); min-height: 44px; flex: none; }
.brand:hover { color: var(--ink); }
/* The same accent rule the primary navigation draws on hover. */
.brand::after { content: ''; position: absolute; left: 0; right: 0; bottom: -4px; height: 2px; background: var(--accent); transform: scaleX(0); transform-origin: left; transition: transform 200ms var(--ease); }
.brand:hover::after { transform: scaleX(1); }
/* The header carries the wordmark with its tagline (Kara Casey, October 30, 2026): one
   SVG, sized by height so the tagline stays legible; the footer keeps the XXI mark. */
.brand .wordmark { display: block; height: 32px; width: auto; color: var(--ink); }
/* Left-aligned tagline (Rapha, October 31, 2026): "A Bitcoin Company" moves under the T,
   shifted by the tagline's left edge in the drawing (x 438.1). Home first, then every
   header and the footer the same day: the brand block is flush-left on every page, and a
   centred tagline floated under the middle of the name. The social images keep the
   centred drawing (assets/brand/twenty-one-capital-wordmark-tagline.svg). */
.brand .wordmark__tagline, .footer__brand .wordmark__tagline { transform: translateX(-438.1px); }
.site-nav { display: flex; align-items: center; gap: 28px; margin-left: auto; }
.site-nav__list { display: flex; align-items: center; gap: 4px; list-style: none; margin: 0; padding: 0; }
.site-nav__list a {
  display: inline-flex; align-items: center; min-height: 44px; padding: 0 12px; position: relative;
  font-weight: 500; font-size: 0.9375rem; text-decoration: none; color: var(--ink);
}
.site-nav__list a::after { content: ''; position: absolute; left: 12px; right: 12px; bottom: 6px; height: 2px; background: var(--accent); transform: scaleX(0); transform-origin: left; transition: transform 200ms var(--ease); }
.site-nav__list a:hover::after, .site-nav__list a[aria-current="page"]::after { transform: scaleX(1); }
.site-nav__list a:hover { color: var(--ink); }
.ticker { font-family: var(--mono); font-size: 0.8125rem; color: var(--ink-2); white-space: nowrap; padding-left: 20px; border-left: 1px solid var(--line); }
@media (max-width: 1000px) { .ticker { display: none; } }
.site-header__tools { display: flex; align-items: center; gap: 8px; flex: none; }
.theme-toggle, .nav-toggle {
  display: inline-flex; align-items: center; justify-content: center; min-width: 44px; min-height: 44px;
  padding: 0 12px; background: none; border: 1px solid var(--line-strong); border-radius: 3px; color: var(--ink); cursor: pointer;
  font-size: 0.875rem; font-weight: 500;
}
.theme-toggle:hover, .nav-toggle:hover { border-color: var(--ink); }
.theme-toggle .icon-sun { display: none; }
[data-theme="dark"] .theme-toggle .icon-sun { display: block; }
[data-theme="dark"] .theme-toggle .icon-moon { display: none; }
.nav-toggle { display: none; }
@media (max-width: 880px) {
  .site-header__in { gap: 12px; }
  /* The brand may shrink (production review of October 30, 2026, F01): on the narrowest
     phones the wordmark scales down inside its box so Menu and the theme control stay
     on screen; the controls keep their 44px targets. */
  .brand { flex: 0 1 auto; min-width: 0; max-width: 100%; }
  .brand .wordmark { height: 28px; max-width: 100%; }
  .site-header__tools { gap: 6px; }
  .ticker { display: none; }
  .nav-ready .nav-toggle { display: inline-flex; }
  .nav-ready .site-nav {
    position: fixed; top: var(--header-h); left: 0; right: 0; bottom: 0; z-index: 99;
    display: none; flex-direction: column; align-items: stretch; gap: 0; margin: 0;
    padding: 24px var(--gutter) 40px; background: var(--bg); border-top: 1px solid var(--line); overflow-y: auto;
  }
  .nav-ready .site-nav.is-open { display: flex; }
  .nav-ready .site-nav__list { flex-direction: column; align-items: stretch; gap: 0; }
  .nav-ready .site-nav__list a { font-family: var(--serif); font-size: 1.75rem; font-weight: 500; min-height: 60px; padding: 0; border-bottom: 1px solid var(--line); border-radius: 0; }
  .nav-ready .site-nav__list a::after { left: 0; right: auto; width: 24px; bottom: 14px; }
  .nav-ready .ticker { display: block; margin-top: 24px; padding: 0; border: 0; }
  body.nav-open { overflow: hidden; }
  /* No JS: nav renders as a wrapping row, everything reachable. Keyed to the
     .js class set in the head so the header never changes height once the
     deferred script runs (an anchor target would otherwise slide under it). */
  html:not(.js) .site-header { height: auto; padding: 8px 0; }
  html:not(.js) .site-header__in { flex-wrap: wrap; }
  html:not(.js) .site-nav { width: 100%; margin: 0; flex-wrap: wrap; gap: 8px; }
  html:not(.js) .site-nav__list { width: 100%; flex-wrap: wrap; gap: 0 2px; }
  html.js:not(.nav-ready) .site-nav { display: none; }
}
/* em, not px: a reader who enlarges the default text size reaches this sooner. 26.25em = 420px at 16px. */
@media (max-width: 26.25em) { .brand .wordmark { height: 24px; } .nav-toggle { padding: 0 10px; } }

/* ---------- Editorial design, October 2026 ---------- */
:root { --w-max: 1360px; --band: clamp(56px, 6.2vw, 96px); --header-h: 88px; }
[data-theme="dark"] { --ink-2: #B7B1A7; }
h1, h2 { font-weight: 400; }
h1 em, h2 em { font-weight: 400; }
h1 em, .display em { color: var(--accent-deep); }
.site-header { --header-h: 88px; height: 88px; }
.site-header__in { gap: 22px; }
.site-nav { gap: 18px; }
.site-nav__list a { font-size: .875rem; padding: 0 10px; }
.theme-toggle { border-color: transparent; border-radius: 50%; }
.theme-toggle:hover { background: var(--bg-surface-2); border-color: transparent; }
/* The menu toggle is a button, so it follows the button recipe (secondary: faint fill, quiet border, mono, 8px). */
.nav-toggle { font-family: var(--mono); font-size: .875rem; border-radius: 8px; border-color: color-mix(in srgb, var(--ink) 24%, transparent); background: color-mix(in srgb, var(--ink) 4%, transparent); }
.nav-toggle:hover { border-color: color-mix(in srgb, var(--ink) 55%, transparent); background: color-mix(in srgb, var(--ink) 8%, transparent); }
/* Theme easter egg (site.js): "bliss." in dark, "wrong mode." in light. */
.theme-toggle { position: relative; }
.theme-whisper { position: absolute; top: calc(100% + 10px); right: 50%; transform: translate(50%, -4px); padding: 4px 9px; border-radius: 3px; white-space: nowrap; pointer-events: none;
  font: italic 400 .9375rem/1.2 var(--serif); color: var(--ink); background: var(--bg-surface); border: 1px solid var(--line); opacity: 0; transition: opacity 260ms ease, transform 260ms var(--ease); }
.theme-whisper.is-on { opacity: 1; transform: translate(50%, 0); }
[data-theme="light"] .theme-whisper { color: var(--accent-deep); }
/* The hero is the first screen on its own: it fills the viewport below the
   header, centres its content and keeps its foot clear for the scroll cue. The
   curtain (Scroll motion, below) then slides the capital section over it. */
.home-intro { overflow: hidden; min-height: calc(100svh - var(--header-h)); display: flex; flex-direction: column; justify-content: center; padding-bottom: 88px; }
.home-intro { position: relative; background-image: radial-gradient(ellipse at 85% 30%, color-mix(in srgb, var(--accent) 14%, transparent), transparent 55%); }
/* ASCII hash field (js/ascii-field.js). Decorative, behind content, absent without JS. */
.ascii-field { position: absolute; left: 0; right: 0; pointer-events: none; z-index: 0; }
.ascii-field canvas { display: block; width: 100%; height: 100%; }
/* width: 100%: as a flex item (.home-intro is a column) an auto-margin box would
   otherwise shrink to its content and sit a few pixels off the page grid. */
.home-intro__grid { position: relative; z-index: 1; width: 100%; }
/* Scroll cue: a quiet invitation at the foot of the hero, on the copy's left
   edge. The accent segment runs down the hairline; under reduced motion it
   stands still. It is a link to the next section. */
.scroll-cue { position: absolute; bottom: 24px; left: calc(max(0px, (100% - var(--w-max)) / 2) + var(--gutter)); z-index: 1; display: inline-flex; flex-direction: column; align-items: flex-start; gap: 10px; min-height: 44px; text-decoration: none; color: var(--ink-2); }
.scroll-cue:hover, .scroll-cue:focus-visible { color: var(--ink); }
.scroll-cue__label { font: .625rem/1 var(--mono); letter-spacing: .14em; text-transform: uppercase; }
.scroll-cue__line { position: relative; width: 1px; height: 44px; overflow: hidden; background: color-mix(in srgb, var(--ink) 22%, transparent); }
.scroll-cue__line::after { content: ''; position: absolute; left: 0; top: 0; width: 100%; height: 40%; background: var(--accent); animation: cue-run 2.2s cubic-bezier(.4, 0, .2, 1) infinite; }
@keyframes cue-run { from { translate: 0 -100%; } to { translate: 0 250%; } }
/* ---------- Hero entrance ----------
   On load the headline's words rise out of a mask (js/experience.js splits them
   into .w spans; without it the headline is simply there), then the lede, the
   actions and the scroll cue rise in at 90ms steps, while the cube draws
   (experience.js). Where scroll-driven animations run, the Scroll motion block
   restates these alongside the lift-away. */
@keyframes word-rise { from { translate: 0 140%; } }
@keyframes enter-rise { from { translate: 0 22px; } }
@keyframes live-pulse { 50% { opacity: .35; box-shadow: 0 0 0 4px color-mix(in srgb, var(--accent) 18%, transparent); } }
@media screen and (prefers-reduced-motion: no-preference) {
  .display.is-split .w { display: inline-block; clip-path: inset(-.1em 0 -.3em 0); }
  .display.is-split .w > span { display: inline-block; animation: word-rise 1.05s var(--ease) both; animation-delay: calc(80ms + var(--w) * 65ms); }
  .home-intro .lede { animation: enter-rise .95s var(--ease) 360ms backwards; }
  .home-intro .hero__actions { animation: enter-rise .95s var(--ease) 450ms backwards; }
  .home-intro .scroll-cue { animation: enter-rise .95s var(--ease) 600ms backwards; }
  /* Benchmark: a quiet pulse beside the eyebrow while the latest regular session is in. */
  .market[data-market-state="fresh"] .home-market__text .eyebrow::after { content: ''; width: 6px; height: 6px; border-radius: 50%; background: var(--accent); animation: live-pulse 2s ease-in-out infinite; }
}
@media (prefers-reduced-motion: reduce) { .scroll-cue__line::after { animation: none; height: 100%; background: color-mix(in srgb, var(--accent) 60%, transparent); } }
@media print { .scroll-cue { display: none; } }
/* ---------- Figures in motion ----------
   After the Elektronics landing page: js/experience.js arms each .figures group
   (is-armed) and, the first time it is scrolled into view (is-in), its cells
   arrive one after another, rising and fading in over 0.85s, 70ms apart, while
   the numbers roll up (experience.js, "Figures"). Time-based from the moment of
   entry, never linked to the scroll position, so it completes whether or not the
   visitor keeps scrolling. A relative offset, not a transform: a transformed cell
   would become the containing block of the phone-size info panel (position:
   fixed) if it were opened while the cell is still arriving. Without the script,
   under reduced motion and in print the cells are simply there. */
@keyframes figure-in { from { opacity: 0; top: 18px; } }
@media screen and (prefers-reduced-motion: no-preference) {
  .figures.is-armed .figure { position: relative; opacity: 0; top: 18px; }
  .figures.is-armed.is-in .figure { opacity: 1; top: 0; animation: figure-in .85s var(--ease) backwards; animation-delay: calc(var(--i, 0) * 70ms); }
}
@media print { .figures.is-armed .figure { opacity: 1; top: 0; } }
.hero--interior { position: relative; overflow: hidden; background-image: radial-gradient(ellipse at 80% 70%, color-mix(in srgb, var(--accent) 14%, transparent), transparent 55%); }
.hero--interior > .wrap { position: relative; z-index: 1; }
.ascii-field--page { bottom: 0; height: 42%; -webkit-mask-image: linear-gradient(to bottom, transparent, #000 30%); mask-image: linear-gradient(to bottom, transparent, #000 30%); }
/* Home hero (restored October 25, 2026 at Rapha's request): a band along the foot of the
   first screen, behind the copy and the artwork, fading in from above. */
.ascii-field--hero { bottom: 0; height: 300px; -webkit-mask-image: linear-gradient(to bottom, transparent, #000 35%); mask-image: linear-gradient(to bottom, transparent, #000 35%); }
@media (max-width: 640px) { .ascii-field--hero { height: 120px; } }
.site-footer { position: relative; }
.ascii-field--footer { bottom: 100%; height: max(var(--band), 72px); -webkit-mask-image: linear-gradient(to bottom, transparent, #000 35%); mask-image: linear-gradient(to bottom, transparent, #000 35%); }
/* Phones: the lede runs full width, so the field gets its own strip below the
   text instead of sitting behind it (padding set with .hero--interior). */
@media (max-width: 640px) { .ascii-field--page { height: 64px; } }
@media print { .ascii-field { display: none; } }
.home-intro__art { transform: perspective(900px) rotateX(var(--art-rotate-x,0deg)) rotateY(var(--art-rotate-y,0deg)); transform-origin: center; }
.home-intro__art.is-tilting { will-change: transform; }
.home-intro__grid { display: grid; grid-template-columns: minmax(0, 1.45fr) minmax(0, 1fr); align-items: center; column-gap: 32px; padding-top: 44px; padding-bottom: 56px; }
.home-intro__copy { position: relative; z-index: 1; padding: 32px 0 40px; }
.home-intro .display { font-size: clamp(3.35rem, 6.1vw, 6rem); line-height: .98; font-weight: 400; max-width: none; margin: 0 0 30px; letter-spacing: -.025em; text-wrap: initial; }
.home-intro .lede { font-size: clamp(1.05rem, 1.5vw, 1.1875rem); max-width: 43ch; line-height: 1.65; }
.home-intro .hero__actions { gap: 16px 28px; margin: 28px 0 0; align-items: center; }
.home-intro .textlink { font-size: .9375rem; }
.home-intro__art { align-self: stretch; display: flex; align-items: center; margin-right: -8px; position: relative; transform-style: preserve-3d; }
.home-intro__art .capital-study { position: relative; z-index: 1; }
.capital-study { width: 100%; max-height: 540px; color: #98856B; }
[data-theme="dark"] .capital-study { color: #D1BDA0; }
.capital-study__grid { opacity: .15; }
.home-intro .capital-study__grid { display: none; }
.capital-study__lines { opacity: .6; }
.capital-study__edge { color: var(--accent-deep); }
.page-home .capital { background: var(--bg-surface); border-top: 1px solid var(--line); padding: 48px 0 40px; }
.page-home .figures-head { display: flex; align-items: end; justify-content: space-between; gap: 32px; margin-bottom: 28px; }
.page-home .figures-head .eyebrow { margin-bottom: 12px; }
.page-home .figures__period { font-size: clamp(1.8rem, 2.8vw, 2.6rem); margin-bottom: 0; }
.page-home .figures__intro { font-family: var(--mono); font-size: .875rem; line-height: 1.8; }
.page-home .figures { gap: 0; margin-bottom: 24px; }
.page-home .figure { padding: 22px 26px 24px; }
.page-home .figure__value { font-size: clamp(2.2rem, 3.1vw, 2.9rem); }
.page-home .figures__foot { font-size: .8125rem; max-width: 100ch; }
.page-home .figures__period--derived { font-size: clamp(1.2rem, 1.6vw, 1.45rem); }
.page-home .figures--derived .figure__value { font-weight: 500; font-size: clamp(1.5rem, 2vw, 1.9rem); }
.page-home .figures--derived .figure__note { font-size: .8125rem; margin-top: 10px; min-height: 32px; }
.page-home .figure--linked .figure__note { font-size: .8125rem; margin-top: 10px; }
.page-home .figures--derived .figure__label .info { margin-top: -1px; }
.market__method { border-top: 1px solid var(--line); }
.market__method summary { cursor: pointer; display: flex; align-items: center; min-height: 48px; font-size: .875rem; color: var(--ink-2); }
.market__method summary::after { content: '+'; margin-left: auto; font-family: var(--mono); }
.market__method summary::-webkit-details-marker { display: none; }
.market__method[open] summary::after { content: '−'; }
.capital-study { max-height: 440px; }
.home-market { background: var(--bg); }
/* Home benchmark: a side chart. Text and window returns left, minimal chart right. */
.home-market__grid { display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); column-gap: clamp(40px, 6vw, 96px); align-items: center; }
.home-market__text h2 { font-size: clamp(2.4rem, 4vw, 3.6rem); line-height: 1.06; margin: 0 0 22px; }
.home-market__intro { color: var(--ink-2); max-width: 40ch; font-size: 1.0625rem; line-height: 1.65; margin: 0; }
.home-market__intro a { color: var(--ink); }
/* The returns are cells in the figures' panel language (see "Figures"): the two
   USD returns side by side, the Bitcoin-terms return beneath them in the same
   frame; the window and status lines follow in plain mono. */
.home-market__returns { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0; margin: 32px 0 0; padding: 0; border: 1px solid var(--line-strong); border-bottom: 0; border-radius: 6px 6px 0 0; background: var(--bg-surface-2); }
.home-market__returns > div { min-width: 0; padding: 18px 20px 20px; border-left: 1px solid var(--line); }
.home-market__returns > div:first-child { border-left: 0; }
.home-market__returns dt { display: flex; align-items: center; gap: 10px; margin: 0 0 10px; font: 500 .6875rem/1.4 var(--mono); letter-spacing: .1em; text-transform: uppercase; color: var(--ink-2); }
.home-market__returns dt::before { content: ''; width: 18px; border-top: 2px solid var(--ink); }
.home-market__returns div + div dt::before { border-top: 2px dashed var(--btc); }
.home-market__returns dd { margin: 0; font: 600 clamp(1.7rem, 2.4vw, 2.2rem)/1.1 var(--mono); font-variant-numeric: tabular-nums; letter-spacing: -.02em; }
.home-market__window { font: .8125rem/1.5 var(--mono); color: var(--ink-2); margin: 18px 0 4px; }
.home-market__text .market__status { font: .8125rem/1.5 var(--mono); color: var(--ink-2); margin: 0 0 24px; }
.home-market__text .market__status .market__viewnote { display: block; }
.home-market__link { margin: 0; }
/* The charts sit in one framed panel: a header row with the time-window toggle
   (a segmented control, as the Elektronics pool window), the two plots, the
   note as a footer row. */
.home-market__chart { min-width: 0; border: 1px solid var(--line-strong); border-radius: 6px; background: var(--bg-surface-2); box-shadow: 0 28px 60px -36px rgba(0, 0, 0, .5); }
.home-market__tabs { justify-content: space-between; align-items: center; gap: 12px; margin: 0; padding: 10px 14px 10px 22px; border-bottom: 1px solid var(--line); }
.home-market__tabs::before { content: 'Time window'; font: 500 .6875rem/1.4 var(--mono); letter-spacing: .1em; text-transform: uppercase; color: var(--ink-2); }
.home-market__tabs .chart__ranges { gap: 2px; padding: 3px; border: 1px solid var(--line-strong); border-radius: 8px; }
.home-market__tabs .tab { min-height: 30px; padding: 0 12px; border: 0; border-radius: 5px; font-size: .6875rem; letter-spacing: .06em; text-transform: uppercase; }
.home-market__tabs .tab[aria-pressed="true"] { background: color-mix(in srgb, var(--accent) 16%, transparent); color: var(--accent); }
.home-market__charts { padding: 18px 22px 10px; }
.home-market__chart .preview-tag { margin: 0; padding: 0 22px 14px; }
.tab { background: none; border: 0; border-bottom: 1px solid transparent; padding: 0 10px; min-height: 40px; font: .75rem var(--mono); color: var(--ink-2); cursor: pointer; transition: color 160ms ease, border-color 160ms ease; }
.tab:hover { color: var(--ink); }
.tab[aria-pressed="true"] { color: var(--ink); border-bottom-color: var(--accent); }
.tab:disabled { opacity: .35; cursor: default; }
/* The Home pair: the indexed comparison above, the share price in sats below, one
   window, one date axis (the lower chart's), one crosshair. Each chart names its
   measure in a small caption above the plot; the ends column is wide enough for
   "6,777 sats" so both plots keep the same width and their dates align. */
/* The value labels get a column of their own at the left, so the lines, which
   start at the plot's first pixel, never run under them; the start-of-window
   sats label sits beneath the date axis instead of over the line's start. */
.chart.chart--brief { margin: 0; grid-template-columns: 40px minmax(0, 1fr) 84px; grid-template-rows: auto auto auto auto; }  /* .chart.chart--brief: the base .chart rule below would otherwise win */
.chart--brief .chart__cap { grid-column: 1 / -1; grid-row: 1; margin: 0 0 10px; font: .6875rem/1 var(--mono); letter-spacing: .1em; text-transform: uppercase; color: var(--ink-2); }
.chart--brief .chart__plot { grid-column: 2; grid-row: 2; aspect-ratio: 16 / 8; min-height: 200px; border-left: 0; border-bottom-color: var(--line); }
.chart--brief .chart__xlabels { grid-column: 2; grid-row: 3; }
.chart--sats { margin-top: 20px; padding-top: 20px; border-top: 1px solid var(--line); }
.chart--sats .chart__plot { aspect-ratio: 16 / 5; min-height: 140px; }
.chart__area { fill: var(--ink); opacity: .07; }
.chart--brief .chart__marker { border-left-color: var(--line-strong); }
.home-market__returns--sats { grid-template-columns: 1fr; margin-top: 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line-strong); border-radius: 0 0 6px 6px; box-shadow: 0 28px 60px -36px rgba(0, 0, 0, .5); }
.home-market__returns--sats dd + dd { margin-top: 8px; font: .75rem/1.5 var(--mono); color: var(--ink-2); letter-spacing: 0; }
.home-market__note.is-hover { color: var(--ink); }
/* A few scale references: faint grid lines with their values at the plot's left edge
   (index values on the comparison; the window's first value on the sats chart). */
.chart--brief .chart__grid line { stroke: var(--line); opacity: .7; }
.chart--brief .chart__ylabels { grid-column: 1; grid-row: 2; position: relative; pointer-events: none; }
.chart--brief .chart__ylabels span { left: 0; transform: translateY(-50%); padding: 0; font-size: .6875rem; color: var(--ink-2); background: none; }
.chart--brief .chart__ylabels--sats { grid-column: 2; grid-row: 4; height: 18px; }
.chart--brief .chart__ylabels--sats span { top: 0 !important; transform: none; white-space: nowrap; }
.chart--brief .chart__ends { right: auto; left: 100%; }
.chart--brief .chart__end { left: 10px; right: auto; padding: 0; background: none; border: 0; font-size: .75rem; color: var(--ink); }
.chart--brief .chart__end--btc { color: var(--btc); }
.chart--brief .chart__xlabels span { font-size: .75rem; }
.chart--brief .chart__xlabels span:first-child { transform: none; }
.chart--brief .chart__xlabels span:last-child { transform: translateX(-100%); }
/* The text and the hover readout share one grid cell, so the note is as tall as the
   taller of the two at every width and the hover never moves what follows. */
.home-market__note { display: grid; font-size: .75rem; line-height: 1.5; color: var(--ink-2); margin: 0; padding: 12px 22px 14px; border-top: 1px solid var(--line); }
.home-market__note > span { grid-area: 1 / 1; }
.home-market__note [data-note-hover], .home-market__note.is-hover [data-note-text] { visibility: hidden; }
.home-market__note.is-hover [data-note-hover] { visibility: visible; }
.preview-tag--quiet { border: 0; padding: 0; margin: 8px 0 0; font-size: .6875rem; opacity: .75; }
/* Staging only (render.py --staging-charts): a chart shown for review that the launch omits. */
.staging-tag { font-family: var(--mono); font-size: .6875rem; line-height: 1.5; color: var(--accent); margin: 0; padding: 0 22px 14px; }
@media (max-width: 880px) {
  .home-market__grid { grid-template-columns: 1fr; row-gap: 40px; }
  .home-market__tabs { justify-content: flex-start; margin-left: -10px; }
}
@media (max-width: 640px) { .home-market .chart__plot { min-height: 200px; } .home-market .chart--sats .chart__plot { min-height: 130px; } }
/* Company's "On this page" is the Leadership index (below, "One screen at a time"):
   the same row, sticky under the header, marking the section in view. */
.company-content { padding-bottom: calc(var(--band) * .5); }
.page-company .sect { display: grid; grid-template-columns: minmax(0,.75fr) minmax(0,1.25fr); column-gap: 72px; }
.page-company .sect > h2 { grid-column: 1; grid-row: 1 / span 8; font-size: clamp(2rem,3.4vw,3rem); max-width: 14ch; line-height: 1.1; }
.page-company .sect > :not(h2) { grid-column: 2; }
.page-company .criteria { margin-top: 16px; }
.page-company .criteria > div { grid-template-columns: 1fr; padding: 18px 0; }
.page-company .criteria dt { font-size: 1.5rem; }
.page-company .criteria dd { max-width: 56ch; }
/* Company loop (October 30, 2026): the vision drawn once, in the heading column of
   "Our vision". One SVG of words and strokes, no figure of any kind: a spine from Bitcoin
   to earning power per share, the demand branching off it, cash looping back into the
   businesses. The heading keeps row one; the drawing takes the rest of the column while
   the text sits in a body wrapper across both rows, so neither column pads the other.
   Every stroke carries pathLength="1" so CSS alone can draw it by scroll ("Scroll
   motion" below). Without JavaScript, with reduced motion and in print it is simply there. */
.page-company #model { grid-template-rows: auto 1fr; }
.page-company #model > h2 { grid-row: 1; }
.page-company #model > .sect__body { grid-column: 2; grid-row: 1 / span 2; }
.page-company #model > .vision-map { grid-column: 1; grid-row: 2; align-self: start; width: 100%; max-width: 460px; margin: 6px 0 0; }
.vision-map__svg { display: block; width: 100%; height: auto; overflow: visible; }
.vision-map__t { font: 400 21px var(--serif); fill: var(--ink); }
.vision-map__t--goal { font-size: 22px; }
.vision-map__l { font: 400 16.5px var(--serif); fill: var(--ink); }
.vision-map__s { font: 400 10.5px var(--mono); fill: var(--ink-2); }
/* The caption names the company's own holding apart from the demand driver (production review of October 30, 2026, R04). */
.vision-map__cap { margin: 14px 0 0; font-family: var(--mono); font-size: .8125rem; line-height: 1.6; color: var(--ink-2); max-width: 44ch; }
.vision-map__cap a { color: inherit; text-decoration-color: var(--line-strong); }
.vision-map__cap a:hover { color: var(--ink); text-decoration-color: var(--accent); }
.vision-map__v { font: 500 9.5px var(--mono); letter-spacing: .14em; text-transform: uppercase; fill: var(--ink-2); }
.vision-map__v--loop { fill: var(--accent); }
.vision-map__spine, .vision-map__tick { fill: none; stroke: var(--line-strong); stroke-width: 1; }
.vision-map__ring { fill: var(--bg); stroke: var(--ink); stroke-width: 1.25; }
.vision-map__btc { fill: var(--btc); }
.vision-map__leaf { fill: var(--bg); stroke: var(--ink); stroke-width: 1; }
.vision-map__node { fill: var(--ink); }
.vision-map__goal { fill: var(--accent); }
.vision-map__arc, .vision-map__arrow { fill: none; stroke: var(--accent); stroke-width: 1; stroke-linecap: round; stroke-linejoin: round; }
/* A short dash travels round the loop; shown only where motion is welcome. */
.vision-map__flow { display: none; fill: none; stroke: var(--accent); stroke-width: 1.75; stroke-linecap: round; stroke-dasharray: .12 .88; }
@keyframes loop-flow { from { stroke-dashoffset: 1; } to { stroke-dashoffset: 0; } }
@media screen and (prefers-reduced-motion: no-preference) { .vision-map__flow { display: block; animation: loop-flow 2.8s linear infinite; } }
@media (max-width: 880px) {
  .page-company #model { grid-template-rows: none; }
  .page-company #model > h2, .page-company #model > .sect__body, .page-company #model > .vision-map { grid-column: 1; grid-row: auto; }
  .page-company #model > .vision-map { margin: 2px 0 10px; }
}
@media (max-width: 880px) {
  .page-company .sect { grid-template-columns: 1fr; gap: 14px; }
  .page-company .sect > h2 { grid-row: auto; max-width: none; }
  .page-company .sect > :not(h2) { grid-column: 1; }
}
@media (prefers-reduced-motion: reduce) { .home-intro__art { transform: none !important; } }
.approach { background: #F1EDE4; color: #201D18; --ink: #201D18; --ink-2: #615C53; --line: #D3CBBE; --accent: #9A431F; --accent-deep: #873818; }
[data-theme="light"] .approach { background: #EDE8DD; }
.editorial-heading { display: grid; grid-template-columns: 1.1fr 1fr; column-gap: 80px; margin-bottom: 44px; }
.approach .editorial-heading { margin-bottom: 28px; }
.editorial-heading .eyebrow { grid-column: 1 / -1; }
.editorial-heading h2 { font-size: clamp(2.4rem, 4vw, 3.75rem); line-height: 1.06; margin-bottom: 0; }
.editorial-heading > p:last-child { align-self: end; font-size: 1.125rem; line-height: 1.65; max-width: 43ch; color: var(--ink-2); }
/* Home model map (October 25, 2026 brief). The reported asset sits beside the intended
   model behind a dashed rule, outside the flow; the three steps of the model read left
   to right with an arrow between them, top to bottom on phones. Labels never shrink to
   keep a row: below 880px the parts stack in reading order. Plain HTML, selectable text. */
.model-map { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 3.1fr); column-gap: 44px; row-gap: 24px; align-items: start; margin: 4px 0 0; }
.model-map__kicker { font: .6875rem/1.5 var(--mono); letter-spacing: .1em; text-transform: uppercase; color: var(--ink-2); margin: 0 0 14px; }
.model-map__asset { border-right: 1px dashed var(--line-strong); padding-right: 44px; min-width: 0; }
.model-map__flow { min-width: 0; }
.model-map__steps { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: 48px; }
.model-map__node { position: relative; border-top: 1px solid var(--ink); padding-top: 16px; min-width: 0; }
.model-map__node--asset { border-top-color: var(--line-strong); }
.model-map__steps li + li::before { content: '→'; position: absolute; left: -36px; top: 18px; color: var(--accent); font: 1.1rem/1 var(--mono); }
.model-map__title { font: 400 clamp(1.2rem, 1.6vw, 1.45rem)/1.2 var(--serif); margin: 0 0 8px; text-wrap: balance; }
.model-map__sub { font-size: .9375rem; line-height: 1.55; color: var(--ink-2); margin: 0; max-width: 30ch; }
.model-map__sub a { color: var(--ink); white-space: nowrap; }
.model-map__caption { grid-column: 1 / -1; font: .8125rem/1.6 var(--mono); color: var(--ink-2); margin: 0; max-width: 84ch; }
.model__benchmark { font: 400 clamp(1.15rem, 1.5vw, 1.35rem)/1.45 var(--serif); max-width: 42ch; margin: 32px 0 2px; }
@media (max-width: 880px) {
  .model-map { grid-template-columns: 1fr; row-gap: 28px; }
  .model-map__asset { border-right: 0; border-bottom: 1px dashed var(--line-strong); padding: 0 0 24px; }
  .model-map__steps { grid-template-columns: 1fr; row-gap: 32px; }
  .model-map__steps li + li::before { content: '↓'; left: 0; top: -31px; }
  .model-map__sub { max-width: 46ch; }
}
.page-home .updates .wrap { display: grid; grid-template-columns: 280px minmax(0,1fr); column-gap: 64px; }
.page-home .updates .section-head { margin: 0; }
.page-home .updates h2 { font-size: 2.5rem; line-height: 1.08; max-width: 10ch; }
.page-home .updates .section-intro { font-size: .9375rem; margin-top: 20px; }
.page-home .updates .record__row { grid-template-columns: 1fr auto; padding: 25px 0; }
.page-home .updates .record__date { grid-column: 1; }
.page-home .updates .record__body { grid-column: 1 / -1; grid-row: 2; }
.page-home .updates .record__type { grid-column: 2; grid-row: 1; border: 0; padding: 0; }
.page-home .updates .record__title { font-size: 1.5rem; margin: 8px 0; }
.page-home .updates .record__desc { max-width: 61ch; }
.page-home .updates .section-foot { grid-column: 2; }
/* Company (October 25, 2026 brief): editorial rows for the three tests, sub-headings
   inside the established sections, the dated status snapshot and the prepared
   founder block. The two-column section grid places each of them in the body column. */
.page-company .sect h3 { font-size: 1.3rem; margin: 28px 0 10px; }
.page-company .criteria--tests { margin: 8px 0 20px; }
.page-company .criteria--tests > div { grid-template-columns: minmax(0, .55fr) minmax(0, 2fr); padding: 16px 0; }
.page-company .criteria--tests dt { font-size: 1.3rem; }
.stage__date { font: .8125rem/1.6 var(--mono); color: var(--ink-2); margin: 4px 0 12px; }
.stage { margin: 0 0 8px; border-top: 1px solid var(--line-strong); }
.stage > div { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.7fr); gap: 6px var(--gap); padding: 18px 0; border-bottom: 1px solid var(--line); }
.stage dt { font-family: var(--serif); font-size: 1.2rem; line-height: 1.25; }
.stage dt span { display: block; margin-top: 6px; font: .8125rem/1.5 var(--mono); color: var(--ink-2); }
.stage dd { margin: 0; color: var(--ink-2); font-size: .9844rem; line-height: 1.6; max-width: 56ch; }
.stage dd a { color: var(--ink); }
.stage__list { list-style: none; margin: 0; padding: 0; }
.stage__list li { margin-bottom: 6px; }
.stage__list time { font: .8125rem var(--mono); color: var(--ink-2); margin-right: 8px; white-space: nowrap; }
.page-company .stage + .section-foot { margin-top: 16px; }
@media (max-width: 720px) { .stage > div, .page-company .criteria--tests > div { grid-template-columns: 1fr; } }
.operating-model { margin: 32px 0 8px; }
.operating-model__routes { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 24px; padding: 28px 0; }
.operating-model__routes > div { border-top: 1px solid var(--line); padding-top: 14px; }
.operating-model__routes span { display: block; color: var(--accent); font: .75rem var(--mono); margin-bottom: 12px; }
.operating-model__routes strong { font: 400 1.5rem var(--serif); }
.operating-model__routes p { font-size: .875rem; color: var(--ink-2); margin: 8px 0 0; }
.leadership-content { padding-bottom: calc(var(--band) * .5); }
:is(.leadership-index, .company-index) { display: flex; flex-wrap: wrap; gap: 12px 32px; padding: 4px 0 16px; border-bottom: 1px solid var(--line); margin-bottom: 8px; }
:is(.leadership-index, .company-index) a { display: flex; align-items: center; min-height: 44px; text-decoration: none; font-size: .875rem; }
/* The full-height interior hero (Leadership, October 29, 2026; Company and Careers since
   October 30): two columns with the lede set right, one headline size, the scroll cue. */
.page-team .hero .lede, .page-company .hero .lede, .page-careers .hero .lede, .page-investors .hero .lede { max-width: 42ch; }
.page-team .hero .wrap, .page-company .hero .wrap, .page-careers .hero .wrap { display: grid; grid-template-columns: 1.35fr 1fr; column-gap: 72px; align-items: end; }
.page-team .hero .eyebrow, .page-company .hero .eyebrow, .page-careers .hero .eyebrow { grid-column: 1 / -1; }
.page-team .hero h1, .page-company .hero h1, .page-careers .hero h1, .page-investors .hero h1 { font-size: clamp(3rem,5vw,4.5rem); margin-bottom: 0; }
.page-team .hero .lede, .page-company .hero .lede, .page-careers .hero .lede { margin-bottom: 6px; }
/* Leadership page: one card component for leaders and directors (render.py person_card).
   Two equal columns on desktop, one column below 900px. Text-only until a complete,
   company-approved portrait set exists (the renderer shows portraits only when every
   person in a group has one). The biography disclosure replaces the introduction with
   the full text, so the opening is never read twice; the summary sits under the text
   in both states. Everything is readable without JavaScript and without motion. */
.page-team .sect { padding-top: 16px; }
/* Roster: every card is open from the first paint. The detail beneath the name
   and role is plain flow content; nothing on this page opens, closes or slides on
   scroll, so names and rows keep their place while the reader moves (owner's
   decision of October 30, 2026). The only motion left is the biography disclosure. */
.page-team .person__detail { display: block; }
.page-team .person__detail-inner { min-height: 0; }
/* One screen at a time: the hero fills the first view with a scroll cue; the index
   stays under the header and marks the section in view (experience.js). */
/* Capped at 720px (production review of October 30, 2026, R06): a tall desktop window no
   longer spends a whole screen on the heading; shorter windows still fill the viewport. */
.page-team .hero--interior, .page-company .hero--interior, .page-careers .hero--interior, .page-investors .hero--interior { min-height: min(calc(100svh - var(--header-h)), 720px); display: flex; flex-direction: column; justify-content: center; }
/* Phones follow the Home rule of October 21, 2026: the hero ends when its content ends,
   with no scroll cue (hidden below) and no recede (Scroll motion, below). */
@media (max-width: 640px) { .page-team .hero--interior, .page-company .hero--interior, .page-careers .hero--interior, .page-investors .hero--interior { min-height: 0; display: block; } }
/* Investors (October 31, 2026) is the fourth editorial hero, with one difference: the
   right column carries the market panel instead of the lede, so the copy stacks on the
   left (eyebrow, headline, lede) and the two columns centre on each other. The panel is
   the Home benchmark panel's recipe (border, 6px corners, surface, shadow, the time-window
   row, the brief chart, the note along the foot) with the share price set above the chart:
   a mono figure, its change against the last close, and the quote's time and delay in
   one line. The price is a delayed quote shown with disclosure (market.json
   rights.quotes_decision); js/live.js refreshes it from our own origin once a minute. */
.page-investors .hero .wrap { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); column-gap: clamp(40px, 5vw, 72px); align-items: center; }
.page-investors .hero h1 { margin-bottom: 24px; }
.page-investors .hero .lede { margin-bottom: 0; }
.market-panel { min-width: 0; border: 1px solid var(--line-strong); border-radius: 6px; background: var(--bg-surface-2); box-shadow: 0 28px 60px -36px rgba(0, 0, 0, .5); }
.market-panel .market--fallback { border: 0; padding: 20px 22px 22px; background: none; }
.market-panel .market--fallback p { margin: 0 0 10px; font-size: .9375rem; }
.market-panel .market--fallback p:last-child { margin-bottom: 0; }
.market-panel .market__status { font-size: inherit; margin: 0; }
.quote { margin: 0; padding: 20px 22px 18px; border-bottom: 1px solid var(--line); }
.quote__label { display: flex; align-items: baseline; gap: 12px; margin: 0 0 12px; font: 500 .6875rem/1.4 var(--mono); letter-spacing: .1em; text-transform: uppercase; color: var(--ink-2); }
.quote__sub { font-weight: 400; letter-spacing: .06em; opacity: .8; }
.quote__row { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 16px; margin: 0; }
.quote__price { font-family: var(--mono); font-weight: 600; font-size: clamp(2.3rem, 3.2vw, 3rem); line-height: 1; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.quote__delta { font: .9375rem/1.3 var(--mono); font-variant-numeric: tabular-nums; white-space: nowrap; color: var(--ink-2); }
.quote__delta.figure__delta--up { color: var(--ink); }
.quote__delta.figure__delta--down { color: var(--accent); }
.quote__asof { margin: 12px 0 0; font: .875rem/1.5 var(--mono); color: var(--ink-2); }
/* The brief chart's label column is wider here: dollar values ("$10.00") instead of index values. */
.market-panel .chart.chart--brief { grid-template-columns: 54px minmax(0, 1fr) 44px; }
.market-panel .chart--brief .chart__plot { aspect-ratio: 16 / 7; min-height: 190px; }
.market-panel .chart__area { fill: var(--ink); opacity: .06; }
.market-panel .home-market__note { display: grid; }
.market-panel__return { font-weight: 600; color: var(--ink); }
.market-panel .preview-tag { margin: 0; padding: 0 22px 14px; }
@media screen and (prefers-reduced-motion: no-preference) {
  .page-investors .hero .lede { animation: enter-rise .95s var(--ease) 360ms backwards; }
  .page-investors .hero .market-panel { animation: enter-rise .95s var(--ease) 450ms backwards; }
  .page-investors .hero .scroll-cue { animation: enter-rise .95s var(--ease) 600ms backwards; }
}
@media (max-width: 880px) {
  .page-investors .hero .wrap { grid-template-columns: 1fr; row-gap: 36px; }
  .market-panel .home-market__tabs { margin-left: 0; justify-content: space-between; }
}
@media (max-width: 640px) {
  .page-investors .hero .wrap { row-gap: 28px; }
  .quote { padding: 18px 18px 16px; }
  .market-panel .home-market__tabs { padding-left: 18px; padding-right: 10px; }
  .market-panel .home-market__charts { padding-left: 18px; padding-right: 18px; }
  .market-panel .home-market__note { padding-left: 18px; padding-right: 18px; }
  .market-panel .chart--brief .chart__plot { min-height: 170px; }
}
@media (max-width: 480px) { .market-panel .home-market__tabs::before { display: none; } .quote__label { flex-wrap: wrap; gap: 4px 12px; } }
:is(.leadership-index, .company-index) { position: sticky; top: var(--header-h); z-index: 5; background: var(--bg); }
:is(.leadership-index, .company-index) a { position: relative; color: var(--ink-2); }
:is(.leadership-index, .company-index) a::after { content: ''; position: absolute; left: 0; right: 0; bottom: 10px; height: 1px; background: var(--accent); transform: scaleX(0); transform-origin: left center; }
:is(.leadership-index, .company-index) a:hover, :is(.leadership-index, .company-index) a[aria-current="true"] { color: var(--ink); }
:is(.leadership-index, .company-index) a[aria-current="true"]::after { transform: scaleX(1); }
@media screen and (prefers-reduced-motion: no-preference) { :is(.leadership-index, .company-index) a::after { transition: transform 320ms var(--ease); } }
.page-team .sect > h2 { font-size: clamp(1.9rem, 2.8vw, 2.5rem); margin-bottom: 4px; }
.page-team .sect--governance { padding-top: 40px; }
.page-team .sect--governance .section-intro { max-width: 64ch; margin: 12px 0 8px; }
.page-team .sect--governance h3 { font-size: 1.3rem; margin: 36px 0 16px; }
.page-team .people { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 64px; }
.page-team .person { display: flex; flex-direction: column; padding: 36px 0 40px; border-top: 1px solid var(--line); }
.page-team .person__portrait { width: min(100%, 224px); aspect-ratio: 4 / 5; margin: 0 0 26px; overflow: hidden; background: var(--bg-surface-2); }
.page-team .person__portrait img { width: 100%; height: 100%; object-fit: cover; filter: saturate(.9); }
.page-team .person:hover .person__portrait img, .page-team .person:focus-within .person__portrait img { filter: saturate(1); }
.page-team .person__name { font-size: clamp(1.9rem, 2.5vw, 2.375rem); font-weight: 400; line-height: 1.12; margin: 0 0 8px; letter-spacing: -.01em; }
.page-team .person__role { font-size: 1.0625rem; color: var(--ink-2); margin: 0 0 18px; display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 12px; }
.page-team .person__status { font: 400 .75rem/1.5 var(--mono); color: var(--accent-deep); padding: 2px 8px; border: 1px solid color-mix(in srgb, var(--accent) 45%, transparent); background: color-mix(in srgb, var(--accent) 10%, transparent); border-radius: 3px; }
.page-team .person__short, .page-team .person__bio p { font-size: 1rem; line-height: 1.6; max-width: 62ch; margin: 0 0 1em; text-wrap: pretty; }
.page-team .person__since { font: 400 .8125rem/1.5 var(--mono); color: var(--ink-2); margin: 0; }
/* Affiliations: a wall of uniform typographic tiles at the foot of the card, one row
   per kind with a small key (render.py person_marks). Tiles share one height and
   one hairline; widths follow the names, as marks in a logo strip would. */
.page-team .person__marks { display: grid; gap: 10px; margin: 26px 0 0; }
.page-team .person__marks-row { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.page-team .person__marks-key { flex: 0 0 100%; font: 400 .625rem/1.6 var(--mono); letter-spacing: .12em; text-transform: uppercase; color: var(--accent-deep); }
.page-team .person__tile { display: inline-flex; align-items: center; min-height: 30px; padding: 0 11px; border: 1px solid var(--line); border-radius: 3px; background: var(--bg-surface); font: 400 .75rem/1 var(--mono); letter-spacing: .02em; color: var(--ink); white-space: nowrap; }
.page-team .person__more { position: static; padding: 0; }
.page-team .person__more summary { position: static; display: inline-flex; align-items: center; gap: 14px; min-height: 44px; margin: 2px 0 0; cursor: pointer; list-style: none; font-size: .9375rem; font-weight: 500; color: var(--ink); }
.page-team .person__more[open] summary { margin-bottom: 10px; }
.page-team .person__more summary::-webkit-details-marker { display: none; }
.page-team .person__more-label { text-decoration: underline; text-decoration-color: var(--line-strong); text-underline-offset: .18em; text-decoration-thickness: 1px; }
.page-team .person__more summary:hover .person__more-label { color: var(--accent-deep); text-decoration-color: currentColor; }
.page-team .person__mark { font-family: var(--mono); color: var(--accent); display: inline-block; }
.page-team .person__more[open] .person__mark { transform: rotate(45deg); }
.page-team .person__more:not([open]) [data-open], .page-team .person__more[open] [data-closed] { display: none; }
.page-team .person__bio { padding-bottom: 6px; }
.page-team .person__bio p:last-child, .page-team .person__bio p:last-of-type { margin-bottom: 0; }
.page-team .person__bio p + .person__since { margin-top: 14px; }
.page-team .person:has(.person__more[open]) .person__short { display: none; }
/* Anchors land below the sticky index, not under it: experience.js measures the
   index into --index-h (65px is its one-row height without the script). */
.page-team :is(.sect, .person, h3[id]), .page-company :is(.sect, h3[id]) { scroll-margin-top: calc(var(--header-h) + var(--index-h, 65px) + 16px); }
.page-team .section-foot { display: block; font-size: .875rem; max-width: 72ch; margin-top: 8px; }
@media screen and (prefers-reduced-motion: no-preference) {
  .page-team .person__portrait img { transition: filter 400ms ease; }
  .page-team .person__more-label { transition: color 200ms ease, text-decoration-color 200ms ease; }
  .page-team .person__mark { transition: transform 240ms var(--ease); }
  @keyframes bio-in { from { opacity: 0; translate: 0 6px; } }
  .page-team .person__more[open] .person__bio { animation: bio-in 260ms var(--ease) backwards; }
}
@media (max-width: 1100px) { .page-team .people { column-gap: 48px; } }
@media (max-width: 900px) { .page-team .people { grid-template-columns: 1fr; } }
@media (max-width: 640px) {
  .page-team .person { padding: 28px 0 32px; }
  .page-team .person__name { font-size: 1.75rem; }
  .page-team .person__short, .page-team .person__bio p { font-size: .9375rem; }
  .page-team .person__marks { margin-top: 20px; }
  .page-team .person__tile { white-space: normal; min-height: 28px; padding: 6px 10px; line-height: 1.3; }
  .page-team .sect--governance h3 { margin-top: 28px; }
}
@media (max-width: 1100px) {
  .home-intro__grid { column-gap: 20px; }
  .home-intro .display { font-size: clamp(3.4rem,6.4vw,4.6rem); }
  .site-header__tools { margin-left: auto; }
  .page-home .updates .wrap { grid-template-columns: 220px minmax(0,1fr); gap: 32px; }
}
@media (max-width: 880px) {
  :root { --header-h: 72px; }
  .site-header { height: 72px; --header-h: 72px; }
  .page-team .hero .wrap, .page-company .hero .wrap, .page-careers .hero .wrap { grid-template-columns: 1fr; gap: 0; }
  .page-investors .hero h1 { margin-bottom: 14px; }
  .page-team .hero h1, .page-company .hero h1, .page-careers .hero h1 { margin-bottom: 14px; }
  .home-intro__grid { grid-template-columns: 1.35fr 1fr; padding-top: 20px; padding-bottom: 40px; }
  .home-intro .display { font-size: clamp(3rem,6.8vw,4.1rem); }
  .desktop-break { display: none; }
  .home-intro .lede { font-size: 1rem; }
  .editorial-heading { gap: 24px 40px; }
}
/* Short windows (a laptop with the dock and bookmarks bar showing): the hero
   tightens so that it still fits below the header and can be pinned; below
   about 500px of height it scrolls as an ordinary section instead. */
@media (min-width: 641px) and (max-height: 700px) {
  .home-intro { padding-bottom: 64px; }
  .home-intro__grid { padding-top: 16px; padding-bottom: 24px; }
  .home-intro__copy { padding: 8px 0 8px; }
  .home-intro .display { font-size: clamp(3rem, 5vw, 4.4rem); margin-bottom: 16px; }
  .home-intro .lede { font-size: 1rem; line-height: 1.55; }
  .home-intro .hero__actions { margin-top: 22px; }
  .home-intro__art .capital-study { max-height: 360px; }
  .scroll-cue { bottom: 16px; }
}
@media (max-width: 640px) {
  .home-intro { padding-bottom: 80px; }
  .home-intro__grid { grid-template-columns: 1fr; padding-top: 24px; padding-bottom: 16px; }
  .home-intro__copy { padding: 16px 0 20px; }
  .home-intro .display { font-size: clamp(3.1rem,11.5vw,4.6rem); max-width: 12ch; margin-bottom: 24px; }
  .home-intro .lede { max-width: 39ch; }
  .home-intro__art { height: 208px; overflow: hidden; margin: 0; justify-content: center; }
  .capital-study { height: 290px; width: 290px; max-width: none; }
  .home-intro .hero__actions { align-items: start; gap: 12px; }
}
@media (max-width: 420px) {
  .home-intro .hero__actions { flex-direction: column; align-items: flex-start; }
  .home-intro .hero__actions .btn { font-size: .875rem; padding: 0 16px; gap: 16px; }
  .home-intro .hero__actions .textlink { font-size: .875rem; min-height: 50px; }
  .page-home .figures-head { display: block; margin-bottom: 24px; }
  .page-home .figures__intro { margin-top: 16px; }
  .page-home .figure { padding: 16px 18px 18px; }
  .page-home .figure__value { font-size: 2rem; }
  .page-home .figure--derived .figure__value { font-size: 1.4rem; }
  .page-home .figures--derived .figure__note { min-height: 0; }
  .page-home .figures-head--derived { margin-top: 24px; padding-top: 20px; }
  /* Phones: the panel is a sheet at the foot of the screen (specificity beats the base rule, which comes later). */
  .page-home .figure .info__panel, .page-home .figure--derived:last-child .info__panel { position: fixed; left: 16px; right: 16px; top: auto; bottom: 16px; width: auto; max-height: 60vh; overflow: auto; }
  .editorial-heading { display: block; margin-bottom: 32px; }
  .editorial-heading h2 { margin-bottom: 24px; }
  .editorial-heading > p:last-child { font-size: 1rem; }
  .page-home .updates .wrap { display: block; }
  .page-home .updates .section-head { margin-bottom: 28px; }
  .page-home .updates h2 { max-width: 14ch; font-size: 2.5rem; }
  .page-home .updates .section-intro { margin-top: 12px; }
  .page-home .updates .record__type { font-size: .625rem; }
  .page-home .updates .record__date { font-size: .6875rem; }
  .operating-model__routes { gap: 12px; }
  .operating-model__routes strong { font-size: 1.25rem; }
  .operating-model__routes p { font-size: .75rem; }
  :is(.leadership-index, .company-index) { gap: 4px 20px; padding-bottom: 12px; }
  :is(.leadership-index, .company-index) a { font-size: .8125rem; }
}
/* Home on phones (October 21, 2026 brief). The hero ends when its content ends:
   no full-screen minimum and no scroll cue. The two actions form one group, the
   artwork shrinks to a short band, sections tighten to 48px, and a metric stacks
   its label over its value when the row would be crowded. Type sizes stay as set. */
@media (max-width: 640px) {
  :root { --band: 48px; }
  .home-intro { min-height: 0; display: block; padding-bottom: 40px; }
  .scroll-cue { display: none; }
  .home-intro__grid { padding-top: 24px; padding-bottom: 0; row-gap: 16px; }
  .home-intro__copy { padding: 8px 0 0; }
  .home-intro .display { margin-bottom: 20px; }
  .home-intro .hero__actions { flex-direction: column; align-items: flex-start; gap: 16px; margin-top: 24px; }
  .home-intro .hero__actions .textlink { min-height: 44px; display: inline-flex; align-items: center; }
  .home-intro__art { height: 170px; }
  .home-intro__art .capital-study { width: 184px; height: 170px; }
  .page-home .capital { padding: 40px 0; }
  .page-home .figure { flex-wrap: wrap; row-gap: 4px; }
  .page-home .figure .info__panel, .page-home .figure--derived:last-child .info__panel { position: fixed; left: 16px; right: 16px; top: auto; bottom: 16px; width: auto; max-height: 60vh; overflow: auto; }
  .home-market__grid { grid-template-columns: minmax(0, 1fr); row-gap: 32px; }
  .home-market__returns { margin-top: 24px; }
  .home-market__returns--sats { margin-top: 0; }
  .home-market__returns > div { padding: 14px 16px 16px; }
  .home-market__tabs { padding: 8px 10px 8px 16px; }
  .home-market__charts { padding: 14px 14px 6px; }
  .home-market__note, .home-market__chart .preview-tag { padding-left: 16px; padding-right: 16px; }
  .home-market__text h2 { overflow-wrap: anywhere; }
  .home-market__tabs .chart__ranges { flex-wrap: wrap; }
  .page-home .updates .wrap { display: block; }
  .page-home .updates .section-head { margin-bottom: 28px; }
  .page-home .updates .section-intro { margin-top: 12px; }
}

/* ---------- Hero ---------- */
.hero { padding-top: calc(var(--band) * 0.55); }
.hero__text { max-width: 60ch; }
.display { font-size: clamp(3rem, 5.4vw, 5.25rem); line-height: 1.02; max-width: 16ch; margin: 0 0 28px; }
.hero__actions { display: flex; flex-wrap: wrap; gap: 12px; margin: 32px 0 8px; }
.hero__quiet { margin: 0; }
.hero--interior { padding-bottom: calc(var(--band) * 0.35); }
@media (max-width: 640px) { .hero--interior:has(.ascii-field--page) { padding-bottom: 56px; } }
.hero--interior h1 { max-width: 18ch; }

/* Model illustration (HTML so labels stay legible at every width) */
.model { margin: 0; }
.model__frame { border: 1px solid var(--line); background: var(--bg-surface); padding: 28px; display: flex; flex-direction: column; align-items: stretch; }
.model__core { display: grid; gap: 1px; background: var(--line); border: 1px solid var(--line); }
.model__box { background: var(--bg-surface-2); padding: 18px 20px; font-family: var(--serif); font-size: 1.15rem; line-height: 1.3; text-align: center; }
.model__stem { width: 1px; height: 36px; background: var(--line-strong); margin: 0 auto; position: relative; }
.model__stem::after { content: ''; position: absolute; left: -3px; bottom: 0; width: 7px; height: 7px; border-radius: 50%; background: var(--accent); }
.model__ring { border: 1px dashed var(--line-strong); padding: 16px 16px 20px; }
.model__ring-label { display: block; font-family: var(--mono); font-size: 0.8125rem; line-height: 1.45; color: var(--ink-2); text-align: center; margin-bottom: 16px; }
.model__slots { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.model__slot { display: block; height: 56px; border: 1px dashed var(--line-strong); background: transparent; }
.model figcaption { font-family: var(--mono); font-size: 0.8125rem; color: var(--ink-2); margin-top: 12px; }
.model--inline { max-width: 520px; margin-top: 28px; }
@media (max-width: 900px) { .model { margin-top: 24px; } .model__frame { padding: 20px; } .model__box { font-size: 1.05rem; } }

/* ---------- Capital strip ---------- */
.figures-head { margin-bottom: 28px; }
.figures__period { font-size: clamp(1.5rem, 2.2vw, 2rem); margin-bottom: 8px; }
.figures__intro { color: var(--ink-2); margin: 0; max-width: 64ch; }
/* Figures: a bordered panel of cells, after the Elektronics "network now" tiles.
   The label on top in small uppercase mono, the value in bold mono with its
   currency sign and unit set smaller (render.py figure_value), a mono note
   beneath. Hairlines divide the cells; the panel keeps overflow visible so a
   (i) panel can open beyond its edge. */
.figures { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0; margin: 0 0 24px; padding: 0; border: 1px solid var(--line-strong); border-radius: 6px; background: var(--bg-surface-2); box-shadow: 0 28px 60px -36px rgba(0, 0, 0, .5); }
.figure { display: flex; flex-direction: column; gap: 8px; min-width: 0; padding: 20px 22px 22px; border: 0; border-left: 1px solid var(--line); transition: background .2s ease; }
.figure:first-child { border-left: 0; }
.figure:hover { background: color-mix(in srgb, var(--ink) 3%, transparent); }
.figure__label { order: 1; margin: 0; font: 500 .6875rem/1.4 var(--mono); letter-spacing: .1em; text-transform: uppercase; color: var(--ink-2); }
.figure__value { order: 2; margin: 0; font-family: var(--mono); font-weight: 600; font-size: clamp(1.8rem, 2.5vw, 2.3rem); line-height: 1.1; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.figure__currency { margin-right: .06em; font-size: .55em; font-weight: 400; letter-spacing: 0; color: var(--ink-2); }
.figure__unit { margin-left: .3em; font-size: .42em; font-weight: 400; letter-spacing: 0; color: var(--ink-2); }
.figure__unit--tight { margin-left: .06em; font-size: .6em; }
.figure__note { order: 3; margin: 0; font-family: var(--mono); font-size: .75rem; color: var(--ink-2); min-height: 1rem; }
.figures__foot { color: var(--ink-2); max-width: 70ch; margin: 0; }
/* Latest price line inside a derived figure's (i) panel; js/live.js refreshes the text */
.info__live { font-family: var(--mono); font-size: 0.8125rem; color: var(--ink-2); }
@media (max-width: 760px) {
  .figures:not(.figures--four) { grid-template-columns: 1fr; }
  .figures:not(.figures--four) .figure { border-left: 0; }
  .figures:not(.figures--four) .figure + .figure { border-top: 1px solid var(--line); }
}

/* Derived figures (Home, beneath the reported strip): EV mNAV, economic market
   cap, Bitcoin NAV. Each label carries an (i): a details element, open without
   JavaScript and from the keyboard; the panel holds the formula, inputs and dates. */
.figures-head--derived { margin-top: 40px; padding-top: 28px; border-top: 1px solid var(--line); }
.figures .figure { align-content: start; }
.figure__link { font-family: var(--mono); font-size: .75rem; color: var(--ink-2); text-decoration: none; border-bottom: 1px solid var(--line-strong); padding-bottom: 1px; }
.figure__link::after { content: ' \2197'; color: var(--accent); }
.figure__link:hover, .figure__link:focus-visible { color: var(--ink); border-bottom-color: var(--accent); }
.figures__period--derived { font-family: var(--serif); font-weight: 400; }
.figure__label { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.figure__note { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.figure__delta { white-space: nowrap; }
.figure__delta--up { color: var(--ink); }
.figure__delta--down { color: var(--accent); }
.figure__spark { display: inline-flex; align-items: center; gap: 10px; }
.figure__spark-label { white-space: nowrap; font-variant-numeric: tabular-nums; }
.figure__spark-label.is-hover { color: var(--ink); }
.spark { display: block; overflow: visible; cursor: crosshair; touch-action: none; }
.spark__line { fill: none; stroke: var(--accent); stroke-width: 1.5; stroke-linejoin: round; stroke-linecap: round; }
.spark__dot { fill: var(--accent); }
.info { position: relative; display: inline-block; font-family: var(--sans); font-weight: 400; }
.info summary { list-style: none; cursor: pointer; position: relative; display: inline-flex; align-items: center; justify-content: center; width: 20px; height: 20px; border: 1px solid var(--line-strong); border-radius: 50%; font-family: var(--mono); font-size: .6875rem; line-height: 1; color: var(--ink-2); background: transparent; }
.info summary::-webkit-details-marker { display: none; }
.info summary::before { content: ''; position: absolute; inset: -12px; }  /* 44px hit area */
.info summary:hover, .info[open] summary { color: var(--accent); border-color: var(--accent); }
.info summary:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }
.info__panel { position: absolute; z-index: 6; top: calc(100% + 10px); left: 0; width: min(38ch, calc(100vw - 32px)); padding: 14px 16px; background: var(--bg); color: var(--ink); border: 1px solid var(--line-strong); border-radius: 3px; box-shadow: 0 12px 32px rgba(0, 0, 0, .18); font-size: .8125rem; line-height: 1.55; letter-spacing: 0; text-transform: none; font-weight: 400; text-align: left; }
.info__panel p { margin: 0 0 .6em; }
.info__panel p:last-child { margin: 0; }
.info__panel strong { font-weight: 500; }
.figure--derived:last-child .info__panel { left: auto; right: 0; }
.info--up .info__panel { top: auto; bottom: calc(100% + 10px); box-shadow: 0 -12px 32px rgba(0, 0, 0, .18); }
/* The Home sections stack in order (curtain); the open panel's section must paint above the next one. */
.page-home main > section:has(.info[open]) { z-index: 2; }
/* While a figure's panel is open on a phone it is a sheet at the foot of the screen; the notice bar steps aside until it closes. */
.page-home:has(details.info[open]) .consent { visibility: hidden; }
/* The hero scroll cue sits where the notice bar lands; it waits until the bar is closed. */
.page-home:has(.consent:not([hidden])) .scroll-cue { visibility: hidden; }

/* ---------- Editorial chapters ---------- */
.chapter { padding: 0; }
.chapter + .chapter { margin-top: clamp(32px, 5vw, 48px); padding-top: clamp(32px, 5vw, 48px); border-top: 1px solid var(--line); }
.chapter h3 { font-size: clamp(1.75rem, 2.6vw, 2.5rem); margin-bottom: 0.4em; }
.chapter__body p, .chapter__head p { max-width: 62ch; }
.chapter__body > p { font-size: 1.125rem; }
@media (max-width: 900px) { .chapter__head, .chapter__body { grid-column: 1 / -1; } }

/* Benchmark paths */
.paths { margin-top: 28px; border-top: 1px solid var(--line-strong); max-width: 560px; }
.paths__row { display: grid; grid-template-columns: 1.4fr 1fr 1fr; gap: 12px; align-items: center; padding: 12px 0; border-bottom: 1px solid var(--line); font-size: 0.9375rem; }
.paths__row--head { font-family: var(--mono); font-size: 0.8125rem; color: var(--ink-2); }
.paths__row > span:first-child { color: var(--ink-2); }
.paths__row--head > span { color: var(--ink); }
.paths__mark { justify-self: start; width: 10px; height: 10px; border-radius: 50%; border: 1.5px solid var(--ink); }
.paths__row:last-child .paths__mark { background: var(--accent); border-color: var(--accent); }

/* Earning-power flow */
.flow { margin: 8px 0 0; }
.flow__nodes { display: flex; flex-direction: column; align-items: stretch; }
.flow__node { border: 1px solid var(--line-strong); padding: 16px 18px; font-family: var(--serif); font-size: 1.1rem; line-height: 1.3; background: var(--bg); }
.flow__link { display: block; width: 1px; height: 32px; margin: 0 auto; background: var(--line-strong); position: relative; }
.flow__link::after { content: ''; position: absolute; bottom: -1px; left: -4px; width: 7px; height: 7px; border-right: 1px solid var(--line-strong); border-bottom: 1px solid var(--line-strong); transform: rotate(45deg); }
.flow__node:last-child { border-color: var(--ink); }
.flow figcaption { font-family: var(--mono); font-size: 0.8125rem; color: var(--ink-2); margin-top: 12px; }
@media (max-width: 900px) { .flow { margin-top: 20px; max-width: 480px; } }

/* Capital matrix */
.chapter--capital .chapter__head { max-width: 62ch; }
.matrix { display: grid; grid-template-columns: repeat(4, 1fr); border-top: 1px solid var(--line-strong); border-left: 1px solid var(--line); margin: 28px 0 0; }
.matrix > div { border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); padding: 20px 20px 24px; }
.matrix dt { font-family: var(--mono); font-size: 0.8125rem; color: var(--ink-2); margin-bottom: 10px; }
.matrix dd { margin: 0; font-family: var(--serif); font-size: 1.25rem; line-height: 1.3; }
@media (max-width: 900px) { .matrix { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 480px) { .matrix { grid-template-columns: 1fr; } }

/* ---------- Record rows (dated public record) ---------- */
.record { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--line-strong); }
.record__row { display: grid; grid-template-columns: 180px minmax(0, 1fr) auto; gap: 8px var(--gap); padding: 22px 0; border-bottom: 1px solid var(--line); align-items: baseline; }
.record--compact .record__row { padding: 16px 0; }
.record__date { font-family: var(--mono); font-size: 0.875rem; color: var(--ink-2); }
.record__title { font-size: 1.25rem; margin: 0 0 4px; }
.record--compact .record__title { font-size: 1.1rem; }
.record__title a { text-decoration: none; }
.record__title a:hover { text-decoration: underline; }
.record__desc { margin: 0; color: var(--ink-2); font-size: 0.9375rem; max-width: 70ch; }
.record__src { white-space: nowrap; }
.record__type { font-family: var(--mono); font-size: 0.75rem; color: var(--ink-2); border: 1px solid var(--line); border-radius: 3px; padding: 5px 8px; white-space: nowrap; justify-self: end; }
@media (max-width: 720px) {
  .record__row { grid-template-columns: 1fr auto; align-items: center; row-gap: 10px; }
  .record__date { grid-column: 1; grid-row: 1; }
  .record__type { grid-column: 2; grid-row: 1; }
  .record__body { grid-column: 1 / -1; grid-row: 2; }
}
.figures__intro a, .market__meta a { white-space: nowrap; }

/* Progress grid (capability update) */
.progress { margin-bottom: clamp(48px, 7vw, 80px); }

/* ---------- Letter feature (editorial inset) ---------- */

/* ---------- Resources and core documents ---------- */
.cores, .linklist { list-style: none; margin: 0; padding: 0; }
.resource { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 4px var(--gap); padding: 20px 0; border-bottom: 1px solid var(--line); text-decoration: none; align-items: center; }
.resource__title { font-family: var(--serif); font-size: 1.35rem; }
.resource__desc { color: var(--ink-2); font-size: 0.9375rem; grid-column: 1; }
.resource::after { content: '→'; grid-column: 2; grid-row: 1 / span 2; color: var(--accent); font-size: 1.25rem; transition: transform 200ms var(--ease); }
.resource:hover::after { transform: translateX(3px); }
.cores { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--gap); }
.core { display: flex; flex-direction: column; gap: 6px; min-height: 100%; padding: 20px 0 0; border-top: 1px solid var(--line-strong); text-decoration: none; }
.core__kind { font-family: var(--mono); font-size: 0.75rem; color: var(--ink-2); }
.core__title { font-family: var(--serif); font-size: 1.3rem; line-height: 1.25; }
.core__meta { font-size: 0.875rem; color: var(--ink-2); }
.core:hover .core__title { color: var(--accent-deep); }
@media (max-width: 900px) { .cores { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 520px) { .cores { grid-template-columns: 1fr; } }
.linklist li { padding: 12px 0; border-bottom: 1px solid var(--line); }
.linklist li:first-child { border-top: 1px solid var(--line-strong); }
.linklist a { display: inline-flex; align-items: center; min-height: 32px; }

/* ---------- Interior page columns, rail, mobile index ---------- */
.page-cols { display: grid; grid-template-columns: 220px minmax(0, 1fr); gap: 64px; align-items: start; padding-bottom: var(--band); }
.rail { position: sticky; top: calc(var(--header-h) + 24px); }
.pagenav ul { list-style: none; margin: 0; padding: 0; border-left: 1px solid var(--line); }
.pagenav ul { counter-reset: pagenav; }
.pagenav a { display: flex; align-items: center; gap: 12px; min-height: 40px; padding: 0 0 0 18px; font-size: 0.9375rem; font-weight: 500; color: var(--ink-2); text-decoration: none; position: relative; transition: color 200ms ease-out; }
.pagenav a:not(.pagenav__sub)::after { counter-increment: pagenav; content: counter(pagenav, decimal-leading-zero); order: -1; font: .6875rem var(--mono); color: color-mix(in srgb, var(--ink-2) 70%, transparent); transition: color 200ms ease-out; }
/* The current entry's left rule fills with reading progress through its section (--p, set by site.js). */
.pagenav a::before { content: ''; position: absolute; left: -1px; top: 6px; bottom: 6px; width: 2px; background: transparent; transition: background-color 160ms ease-out; }
.pagenav a.is-current { color: var(--ink); }
.pagenav a.is-current::after { color: var(--accent); }
.pagenav a.is-current::before { background: linear-gradient(var(--accent) calc(var(--p, 1) * 100%), color-mix(in srgb, var(--accent) 22%, transparent) 0); }
.pagenav a:hover { color: var(--ink); }

/* Sticky chip bar (built by site.js from the rail) for screens without the rail. */
.section-bar { display: none; }
@media (max-width: 1100px) {
  html.has-section-bar .toc { display: none; }
  html.has-section-bar { --bar-h: 52px; }
  .section-bar { display: block; position: sticky; top: var(--header-h); z-index: 90; height: var(--bar-h); margin-bottom: 24px; background: color-mix(in srgb, var(--bg) 88%, transparent); -webkit-backdrop-filter: blur(14px) saturate(1.2); backdrop-filter: blur(14px) saturate(1.2); border-bottom: 1px solid var(--line); }
  .section-bar__track { display: flex; gap: 4px; height: 100%; align-items: center; overflow-x: auto; scrollbar-width: none; padding: 0 var(--gutter); scroll-padding-inline: var(--gutter);
    -webkit-mask-image: linear-gradient(90deg, transparent, #000 var(--gutter), #000 calc(100% - var(--gutter)), transparent); mask-image: linear-gradient(90deg, transparent, #000 var(--gutter), #000 calc(100% - var(--gutter)), transparent); }
  .section-bar__track::-webkit-scrollbar { display: none; }
  .section-bar__track a { flex: none; display: inline-flex; align-items: center; min-height: 34px; padding: 0 14px; border-radius: 999px; border: 1px solid transparent; font-size: .8125rem; color: var(--ink-2); text-decoration: none; white-space: nowrap; transition: color 200ms ease, background-color 200ms ease, border-color 200ms ease; }
  .section-bar__track a.is-current { color: var(--accent-deep); border-color: color-mix(in srgb, var(--accent) 45%, transparent); background: color-mix(in srgb, var(--accent) 10%, transparent); }
  .section-bar__progress { position: absolute; left: 0; bottom: -1px; height: 1px; width: 100%; background: var(--accent); transform-origin: 0 50%; transform: scaleX(var(--progress, 0)); }
}

/* Page progress hairline under the header (site.js). */
.scroll-progress { position: absolute; left: 0; right: 0; bottom: -1px; height: 1px; pointer-events: none; }
.scroll-progress span { display: block; height: 100%; background: var(--accent); transform-origin: 0 50%; transform: scaleX(var(--progress, 0)); }
html.has-section-bar .scroll-progress { display: none; }
@media (min-width: 1101px) { html.has-section-bar .scroll-progress { display: block; } }

/* Home: right-edge section index (site.js). Ticks; labels on hover or focus. */
.section-index { position: fixed; right: 10px; top: 50%; z-index: 80; transform: translate(12px, -50%); opacity: 0; visibility: hidden; pointer-events: none; transition: opacity 400ms ease, transform 400ms var(--ease), visibility 0s 400ms; }
html.is-past-hero .section-index, .section-index:focus-within { opacity: 1; visibility: visible; transform: translate(0, -50%); pointer-events: auto; transition-delay: 0s; }
.section-index ol { list-style: none; margin: 0; padding: 8px 4px; display: grid; gap: 2px; border-radius: 999px; background: color-mix(in srgb, var(--bg) 72%, transparent); -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); border: 1px solid var(--line); }
.section-index a { position: relative; display: flex; align-items: center; justify-content: center; width: 22px; height: 24px; text-decoration: none; }
.section-index__tick { width: 10px; height: 1px; background: var(--ink-2); transition: width 260ms var(--ease), background-color 200ms ease; }
.section-index a:hover .section-index__tick, .section-index a:focus-visible .section-index__tick { width: 14px; background: var(--ink); }
.section-index a.is-current .section-index__tick { width: 16px; height: 2px; background: var(--accent); }
.section-index__label { position: absolute; right: calc(100% + 14px); top: 50%; transform: translate(6px, -50%); opacity: 0; white-space: nowrap; padding: 5px 10px; border-radius: 3px; font: .75rem var(--mono); color: var(--ink); background: var(--bg-surface); border: 1px solid var(--line); pointer-events: none; transition: opacity 200ms ease, transform 200ms ease; }
.section-index a:hover .section-index__label, .section-index a:focus-visible .section-index__label { opacity: 1; transform: translate(0, -50%); }
@media (max-width: 1100px), (hover: none) { .section-index { display: none; } }
html.is-at-footer .section-index:not(:focus-within) { opacity: 0; visibility: hidden; pointer-events: none; transform: translate(12px, -50%); transition: opacity 300ms ease, transform 300ms var(--ease), visibility 0s 300ms; }

/* Anchors land below the sticky header and, where present, the chip bar. */
section, .sect, .job { scroll-margin-top: calc(var(--header-h) + var(--bar-h, 0px) + 16px); }

/* ---------- Scroll motion ----------
   CSS scroll-driven animations (Chrome and Edge 115+, Safari 26+), confined to
   decoration: the Home hero is pinned while the next section slides over it and
   its artwork recedes; eyebrow dashes draw in.
   Reading content (text, figures, tables, links, biographies) never fades, masks
   or moves with the scroll position, so a visitor who stops anywhere sees it at
   full contrast. Where unsupported, under reduced motion and in print, nothing
   starts hidden. */
@keyframes dash-draw { from { scale: 0 1; } }
@keyframes blur-in { from { opacity: 0; filter: blur(10px); scale: .92; } }
@keyframes unfold { from { opacity: 0; translate: 0 18px; } }
@keyframes draw-path { from { stroke-dashoffset: 1; } }
@keyframes hero-recede { to { opacity: .12; translate: 0 -48px; } }
@keyframes recede { to { opacity: .12; scale: .82; } }
@keyframes pin-hero { from { translate: 0 0; } to { translate: 0 100vh; } }
@media screen and (prefers-reduced-motion: no-preference) {
  @supports (animation-timeline: view()) {
    /* Home hero curtain. Sections after it are opaque and sit above it; the
       hero copy stays put at full contrast until the next section covers it. */
    .page-home main > section:not(.home-intro) { position: relative; z-index: 1; }
    :where(.page-home main > section:not(.home-intro)) { background-color: var(--bg); }
    .page-home main > section:not(.home-intro) { box-shadow: 0 -28px 56px -28px rgba(0,0,0,.45); }
    [data-theme="light"] .page-home main > section:not(.home-intro) { box-shadow: 0 -24px 48px -28px rgba(60,40,20,.18); }
    .home-intro.is-pinned { z-index: 0; animation: pin-hero linear both; animation-timeline: scroll(root); animation-range: 0 100vh; }
    .home-intro__art .capital-study { animation: recede linear both; animation-timeline: scroll(root); animation-range: 0 85vh; transform-origin: 50% 40%; }
    /* Eyebrow dashes draw in. Decorative. */
    main .eyebrow::before, main .eyebrow-h::before { transform-origin: left center; animation: dash-draw linear backwards; animation-timeline: view(); animation-range: entry 40% cover 35%; }
    /* Full-height interior heroes (Leadership, Company, Careers): the hero copy and
       its field recede as the page arrives. Not on phones, where the hero is
       content-height and simply scrolls away, as on Home. Headings and the committee
       rows no longer move: they are reading content, and the roster stood still from
       October 30, 2026 (owner's decision). */
    @media (min-width: 641px) {
      :is(.page-team, .page-company, .page-careers, .page-investors) .hero--interior :is(.wrap, .scroll-cue) { animation: hero-recede linear both; animation-timeline: scroll(root); animation-range: 0 80vh; }
      :is(.page-team, .page-company, .page-careers, .page-investors) .hero--interior .ascii-field { animation: recede linear both; animation-timeline: scroll(root); animation-range: 0 70vh; }
    }
    /* Company loop: the figure is its own timeline. Each stroke and label arrives as the
       figure enters from the bottom edge, in reading order, the loop and the goal last,
       each a little after its own place has come into view so the drawing is seen to
       happen. Linked to position, not time, so nothing is left half-drawn on a resting
       screen; once complete, js/experience.js marks it drawn and it stays so. */
    .page-company .vision-map { view-timeline-name: --loop; }
    .vision-map [pathLength]:not(.vision-map__flow) { stroke-dasharray: 1 1; animation: draw-path linear both; animation-timeline: --loop; animation-range: entry var(--a) var(--b); }
    .vision-map__stage, .vision-map__v, .vision-map__loop { animation: unfold linear both; animation-timeline: --loop; animation-range: entry var(--a) var(--b); }
    .vision-map [data-k="0"]  { --a: 2%;  --b: entry 22%; }
    .vision-map [data-k="1"]  { --a: 14%; --b: entry 60%; }
    .vision-map [data-k="2"]  { --a: 18%; --b: entry 36%; }
    .vision-map [data-k="3"]  { --a: 26%; --b: entry 44%; }
    .vision-map [data-k="4"]  { --a: 32%; --b: entry 50%; }
    .vision-map [data-k="5"]  { --a: 38%; --b: entry 56%; }
    .vision-map [data-k="6"]  { --a: 46%; --b: entry 64%; }
    .vision-map [data-k="7"]  { --a: 52%; --b: entry 70%; }
    .vision-map [data-k="8"]  { --a: 56%; --b: entry 84%; }
    .vision-map [data-k="9"]  { --a: 62%; --b: entry 80%; }
    .vision-map [data-k="10"] { --a: 70%; --b: entry 90%; }
    .vision-map [data-k="11"] { --a: 76%; --b: cover 42%; }
    .vision-map [data-k="12"] { --a: 74%; --b: cover 44%; }
    .vision-map [data-k="13"] { --a: 82%; --b: cover 44%; }
    .vision-map [data-k="14"] { --a: 88%; --b: cover 46%; }
    .vision-map.is-drawn :not(.vision-map__flow) { animation: none; }
  }
}
.toc { display: none; }
@media (max-width: 1100px) {
  .page-cols { grid-template-columns: 1fr; gap: 0; }
  .rail { display: none; }
  .toc { display: block; margin: 0 0 24px; border: 1px solid var(--line-strong); border-radius: 3px; }
  .toc summary { cursor: pointer; list-style: none; display: flex; align-items: center; justify-content: space-between; min-height: 48px; padding: 0 16px; font-weight: 500; }
  .toc summary::-webkit-details-marker { display: none; }
  .toc summary::after { content: '+'; font-family: var(--mono); color: var(--ink-2); }
  .toc[open] summary::after { content: '−'; }
  .toc ul { list-style: none; margin: 0; padding: 4px 16px 12px; border-top: 1px solid var(--line); }
  .toc a { display: flex; align-items: center; min-height: 44px; text-decoration: none; font-weight: 500; color: var(--ink-2); }
}
.sect { padding: 8px 0 clamp(40px, 6vw, 72px); }
.sect + .sect { border-top: 1px solid var(--line); padding-top: clamp(32px, 5vw, 56px); }
.sect h2 { margin-bottom: 0.5em; }
.sect h3 { font-size: 1.35rem; margin-top: 1.6em; }
.page-body { min-width: 0; }

/* Criteria, areas, FAQ, note */
.criteria { border-top: 1px solid var(--line-strong); margin: 24px 0; }
.criteria > div { display: grid; grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.6fr); gap: 8px var(--gap); padding: 20px 0; border-bottom: 1px solid var(--line); }
.criteria dt { font-family: var(--serif); font-size: 1.35rem; line-height: 1.25; }
.criteria dd { margin: 0; color: var(--ink-2); }
@media (max-width: 720px) { .criteria > div { grid-template-columns: 1fr; } }
.note { border: 1px solid var(--line); border-left: 2px solid var(--accent); background: var(--bg-surface); padding: 18px 22px; font-size: 0.9375rem; color: var(--ink-2); max-width: 70ch; }
.note strong { color: var(--ink); }
details.faq { border-bottom: 1px solid var(--line); }
details.faq:first-of-type { border-top: 1px solid var(--line-strong); }
details.faq summary { cursor: pointer; list-style: none; display: flex; justify-content: space-between; gap: 24px; align-items: center; min-height: 56px; padding: 12px 4px; font-family: var(--serif); font-weight: 500; font-size: 1.25rem; }
details.faq summary::-webkit-details-marker { display: none; }
details.faq summary::after { content: '+'; font-family: var(--mono); color: var(--ink-2); flex: none; }
details.faq[open] summary::after { content: '−'; color: var(--accent); }
details.faq .faq__body { padding: 0 4px 24px; color: var(--ink-2); max-width: 68ch; }
details.faq .faq__body p { margin-bottom: 0.8em; }

/* ---------- Tables ---------- */
/* position: relative keeps absolutely positioned .vh text inside the scroll container. */
.table-wrap { position: relative; overflow-x: auto; border: 1px solid var(--line); background: var(--bg-surface); margin-bottom: 24px; -webkit-overflow-scrolling: touch; }
.table-wrap:focus-visible { outline-offset: 0; }
table.data { width: 100%; border-collapse: collapse; margin: 0; font-size: 0.9375rem; }
table.data caption { text-align: left; padding: 14px 16px; color: var(--ink-2); font-size: 0.875rem; border-bottom: 1px solid var(--line); caption-side: top; }
table.data th, table.data td { padding: 12px 16px; border-bottom: 1px solid var(--line); vertical-align: top; text-align: left; }
table.data thead th { font-weight: 600; font-size: 0.8125rem; color: var(--ink-2); border-bottom: 1px solid var(--line-strong); white-space: nowrap; }
table.data tbody th { font-weight: 500; }
table.data tr:last-child td, table.data tr:last-child th { border-bottom: 0; }
table.data .num { text-align: right; font-family: var(--mono); font-variant-numeric: tabular-nums; white-space: nowrap; }
table.data--capital { min-width: 760px; }
table.data--capital td:last-child { font-size: 0.875rem; color: var(--ink-2); }
@media (max-width: 720px) {
  table.data--capital { min-width: 0; }
  table.data--capital thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  table.data--capital tr { display: block; padding: 14px 16px; border-bottom: 1px solid var(--line); }
  table.data--capital tr:last-child { border-bottom: 0; }
  table.data--capital th, table.data--capital td { display: block; padding: 0; border: 0; }
  table.data--capital tbody th { font-family: var(--serif); font-size: 1.15rem; margin-bottom: 6px; }
  table.data--capital td.num { text-align: left; white-space: normal; margin-bottom: 4px; }
  table.data--capital td[data-label]::before { content: attr(data-label) ': '; font-family: var(--sans); font-size: 0.8125rem; color: var(--ink-2); }
  table.data--capital td.num::before { font-family: var(--sans); }
  table.data--capital td:last-child { margin-top: 6px; }
}
table.data--summary { margin-bottom: 20px; border: 1px solid var(--line); }
@media (max-width: 640px) {
  table.data--summary { display: block; width: 100%; border: 0; }
  table.data--summary caption { display: block; padding: 16px 0; }
  table.data--summary thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  table.data--summary tbody { display: block; }
  table.data--summary tr { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 10px 12px; padding: 16px 0; border-bottom: 1px solid var(--line); }
  table.data--summary tbody th { grid-column: 1 / -1; padding: 0; border: 0; }
  table.data--summary td.num { display: block; white-space: normal; text-align: left; border: 0; padding: 0; font-size: .8125rem; overflow-wrap: anywhere; }
  table.data--summary td::before { display: block; color: var(--ink-2); font: .6875rem/1.8 var(--sans); }
  table.data--summary td:nth-of-type(1)::before { content: 'Start'; }
  table.data--summary td:nth-of-type(2)::before { content: 'End'; }
  table.data--summary td:nth-of-type(3)::before { content: 'Window return'; }
  table.data--summary td:empty { display: none; }
  table.data--summary tr:has(td:first-of-type:empty) td:last-child { grid-column: 1 / -1; }
  table.data--summary tr:has(td:first-of-type:empty) td:last-child::before { content: none; }
}
table.data--committees { min-width: 560px; }
.cm { text-align: center; }
.cm span { font-family: var(--mono); font-size: 0.75rem; }
.cm--chair span { color: var(--ink); border: 1px solid var(--accent); padding: 3px 7px; border-radius: 3px; }
.cm--member span { color: var(--ink-2); }
@media (max-width: 640px) {
  table.data--committees { min-width: 0; display: block; }
  table.data--committees caption { display: block; }
  table.data--committees thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  table.data--committees tbody { display: block; }
  table.data--committees tr { display: block; padding: 14px 16px; border-bottom: 1px solid var(--line); }
  table.data--committees tr:last-child { border-bottom: 0; }
  table.data--committees th, table.data--committees td { display: block; padding: 0; border: 0; text-align: left; }
  table.data--committees tbody th { margin-bottom: 6px; }
  table.data--committees td.cm:not([data-committee]) { display: none; }
  table.data--committees td[data-committee] { display: flex; justify-content: space-between; align-items: center; gap: 12px; min-height: 30px; font-size: .875rem; color: var(--ink-2); }
  table.data--committees td[data-committee]::before { content: attr(data-committee); }
  table.data--committees tr[data-no-committee] th::after { content: 'No committee assignments'; display: block; margin-top: 4px; font-weight: 400; font-size: .875rem; color: var(--ink-2); }
}

/* Pledged bar */
.pledge { margin: 8px 0 28px; max-width: 760px; }
.pledge figcaption { font-size: 0.9375rem; font-weight: 500; margin-bottom: 12px; }
.pledge__bar { display: flex; height: 28px; border: 1px solid var(--line-strong); background: var(--bg-surface); }
.pledge__seg--pledged { background: var(--ink); }
.pledge__seg--rest { background: repeating-linear-gradient(135deg, transparent 0 6px, var(--line) 6px 7px); }
.pledge__legend { list-style: none; margin: 12px 0 8px; padding: 0; display: grid; gap: 6px; font-size: 0.9375rem; }
.swatch { display: inline-block; width: 14px; height: 14px; border: 1px solid var(--line-strong); vertical-align: -2px; margin-right: 10px; }
.swatch--pledged { background: var(--ink); }
.swatch--rest { background: repeating-linear-gradient(135deg, transparent 0 3px, var(--line-strong) 3px 4px); }
.pledge__note { font-size: 0.875rem; color: var(--ink-2); margin: 0; }

/* ---------- Market module ---------- */
.market__status { font-size: 0.9844rem; margin-bottom: 20px; }
.market--fallback { border: 1px solid var(--line); padding: 20px 24px; background: var(--bg-surface); }
.market__title { font-size: 1.6rem; margin: 0 0 4px; }
.market__sub { font-family: var(--mono); font-size: 0.8125rem; color: var(--ink-2); margin-bottom: 16px; }
.chart__controls { display: flex; flex-wrap: wrap; gap: 12px 24px; margin-bottom: 16px; }
.chart__ranges, .chart__modes { display: flex; flex-wrap: wrap; gap: 6px; }
.chart { margin: 0 0 16px; display: grid; grid-template-columns: minmax(0, 1fr) 72px; grid-template-rows: auto auto; gap: 0; }
.chart__plot { grid-column: 1; grid-row: 1; position: relative; width: 100%; min-width: 0; aspect-ratio: 16 / 7; min-height: 220px; border-left: 1px solid var(--line-strong); border-bottom: 1px solid var(--line-strong); }
.chart__svg { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
.chart__grid line { stroke: var(--line); stroke-width: 1; vector-effect: non-scaling-stroke; }
.chart__base { stroke: var(--line-strong); stroke-width: 1; vector-effect: non-scaling-stroke; stroke-dasharray: 2 4; }
.chart__line { fill: none; stroke-width: 2; stroke-linejoin: round; stroke-linecap: round; vector-effect: non-scaling-stroke; }
.chart__line--xxi { stroke: var(--ink); }
.chart__line--btc { stroke: var(--btc); stroke-dasharray: 6 4; }
.chart__ylabels { grid-column: 2; grid-row: 1; position: relative; }
.chart__ylabels span { position: absolute; left: 10px; transform: translateY(-50%); font-family: var(--mono); font-size: 0.8125rem; color: var(--ink-2); }
.chart__xlabels { grid-column: 1; grid-row: 2; position: relative; height: 28px; }
.chart__xlabels span { position: absolute; top: 8px; transform: translateX(-50%); font-family: var(--mono); font-size: 0.8125rem; color: var(--ink-2); white-space: nowrap; }
.chart__ends { position: absolute; right: 6px; top: 0; bottom: 0; width: 0; }
.chart__end { position: absolute; right: 0; transform: translateY(-50%); font-family: var(--mono); font-size: 0.8125rem; white-space: nowrap; padding: 2px 6px; background: var(--bg); border: 1px solid var(--line); }
.chart__end--xxi { z-index: 1; }
.chart__end--btc { color: var(--btc); }
.chart__marker { position: absolute; top: 0; bottom: 0; width: 0; border-left: 1px dashed var(--ink); pointer-events: none; }
.chart__marker::after { content: ''; position: absolute; left: -4px; top: var(--y, 50%); width: 7px; height: 7px; border-radius: 50%; background: var(--accent); transform: translateY(-50%); }
.chart figcaption { grid-column: 1 / -1; grid-row: 3; margin-top: 12px; }
.chart__legend { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px 24px; font-size: 0.875rem; color: var(--ink-2); }
.key { display: inline-block; width: 28px; height: 0; border-top: 2px solid var(--ink); vertical-align: middle; margin-right: 8px; }
.key--btc { border-top: 2px dashed var(--btc); }
.key--base { border-top: 1px dashed var(--line-strong); }
.chart__inspect { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 8px 16px; align-items: center; margin-bottom: 20px; font-size: 0.9375rem; }
.chart__inspect label { font-weight: 500; }
.chart__inspect input[type="range"] { width: 100%; min-height: 44px; accent-color: var(--accent); margin: 0; }
.chart__inspect input[type="range"] { appearance: none; -webkit-appearance: none; background: transparent; cursor: pointer; }
.chart__inspect input[type="range"]::-webkit-slider-runnable-track { height: 2px; background: var(--line-strong); }
.chart__inspect input[type="range"]::-webkit-slider-thumb { -webkit-appearance: none; width: 12px; height: 12px; border-radius: 50%; margin-top: -5px; background: var(--ink); border: 2px solid var(--bg); box-shadow: 0 0 0 1px var(--line-strong); }
.chart__inspect input[type="range"]::-moz-range-track { height: 2px; background: var(--line-strong); }
.chart__inspect input[type="range"]::-moz-range-thumb { width: 10px; height: 10px; border-radius: 50%; background: var(--ink); border: 2px solid var(--bg); }
.chart__inspect output { grid-column: 1 / -1; font-family: var(--mono); font-size: 0.875rem; color: var(--ink-2); min-height: 1.4em; }
.more { border-top: 1px solid var(--line); margin-top: 8px; }
.more summary { cursor: pointer; min-height: 48px; display: flex; align-items: center; font-size: .875rem; color: var(--ink-2); }
.more summary::after { content: '+'; margin-left: auto; font-family: var(--mono); }
.more summary::-webkit-details-marker { display: none; }
.more[open] summary::after { content: '−'; }
.more .table-wrap { margin-top: 12px; }
.market__table { border-top: 1px solid var(--line); }
.market__table summary { cursor: pointer; min-height: 48px; display: flex; align-items: center; font-size: .875rem; color: var(--ink-2); }
.market__table summary::after { content: '+'; margin-left: auto; font-family: var(--mono); }
.market__table summary::-webkit-details-marker { display: none; }
.market__table[open] summary::after { content: '−'; }
.market__table .table-wrap { max-height: 420px; overflow: auto; margin-top: 12px; }
.market__table table.data { min-width: 620px; }
.market__table thead th { position: sticky; top: 0; background: var(--bg-surface); }
.market__links { margin: 16px 0; font-size: 0.9375rem; color: var(--ink-2); }
.market__meta { display: grid; grid-template-columns: 110px minmax(0, 1fr); gap: 10px var(--gap); font-size: 0.875rem; color: var(--ink-2); border-top: 1px solid var(--line); padding-top: 16px; margin: 0 0 16px; }
.market__meta dt { font-family: var(--mono); color: var(--ink); }
.market__meta dd { margin: 0; }
@media (max-width: 640px) { .market__meta { grid-template-columns: 1fr; gap: 2px; } .market__meta dd { margin-bottom: 10px; } .chart { grid-template-columns: minmax(0, 1fr) 56px; } .chart--brief { grid-template-columns: minmax(0, 1fr) 76px; } .chart--brief .chart__end { left: 8px; font-size: .6875rem; } }
.market__ext { font-size: 0.9375rem; color: var(--ink-2); }

/* ---------- People ---------- */
.address { font-family: var(--mono); font-size: 0.9375rem; line-height: 1.6; }

/* ---------- Letters ---------- */
.letter-entry { max-width: 72ch; }
.letters-alerts { margin: 28px 0 0; padding-top: 20px; border-top: 1px solid var(--line); max-width: 72ch; }
/* Letters and talks share one list, newest first. A talk keeps the letter's text column and carries its poster on the right. */
.letter-entry + article, .talk-entry + article { margin-top: 36px; padding-top: 36px; border-top: 1px solid var(--line); }
.talk-entry { display: grid; grid-template-columns: minmax(0, 72ch) minmax(240px, 360px); gap: 20px var(--gap); align-items: start; }
.talk-entry__poster { position: relative; display: block; aspect-ratio: 2 / 1; overflow: hidden; background: var(--bg-surface-2); border: 1px solid var(--line); }
.talk-entry__poster img { display: block; width: 100%; height: 100%; object-fit: cover; filter: grayscale(1); opacity: .88; transition: filter 300ms var(--ease), opacity 300ms var(--ease); }
.talk-entry__poster:hover img, .talk-entry__poster:focus-visible img { filter: none; opacity: 1; }
.talk-entry__play { position: absolute; left: 12px; bottom: 12px; display: inline-flex; align-items: center; gap: 8px; padding: 6px 10px; font-family: var(--mono); font-size: 0.75rem; color: var(--ink); background: var(--bg-surface); border: 1px solid var(--line-strong); }
.talk-entry__play::before { content: ''; width: 0; height: 0; border-left: 8px solid var(--accent); border-top: 5px solid transparent; border-bottom: 5px solid transparent; }
@media (max-width: 720px) { .talk-entry { grid-template-columns: 1fr; } .talk-entry__poster { order: -1; } }
.letter-entry h2, .talk-entry h2 { font-style: italic; font-size: clamp(1.9rem, 3vw, 2.75rem); }
.letter-entry h2 a, .talk-entry h2 a { text-decoration: none; }
.letter-entry h2 a:hover, .talk-entry h2 a:hover { text-decoration: underline; }
.letter-entry__by { color: var(--ink-2); margin-bottom: 20px; }
.letter-entry__summary { font-family: var(--serif); font-size: 1.25rem; line-height: 1.55; margin: 0 0 24px; max-width: 60ch; }
.letter-entry__actions { display: flex; flex-wrap: wrap; gap: 12px 24px; align-items: center; }
.letter__head { padding-bottom: 32px; }
.letter-meta { display: flex; flex-wrap: wrap; gap: 16px 40px; margin: 20px 0 0; font-size: 0.9375rem; }
.letter-meta dt { font-family: var(--mono); font-size: 0.75rem; color: var(--ink-2); margin-bottom: 2px; }
.letter-meta dd { margin: 0; }
.letter__tools { margin-top: 24px; }
.letter__body { font-family: var(--serif); font-size: 1.25rem; line-height: 1.7; max-width: 66ch; padding: 16px 0 48px; }
.letter__body p { margin-bottom: 1.25em; }
.letter__body ul { padding-left: 1.15em; margin-bottom: 1.25em; }
.letter__body li { margin-bottom: 1em; }
.letter__body li::marker { color: var(--accent); }
.letter__sign { margin-top: 2.5em; }
.letter__sign-role { font-family: var(--sans); font-size: 0.875rem; color: var(--ink-2); }
.letter__ps { margin-top: 2.5em; font-size: 1.0625rem; color: var(--ink-2); }
.letter__source { border-top: 1px solid var(--line-strong); padding: 32px 0 calc(var(--band) * .4); max-width: 66ch; color: var(--ink-2); font-size: 0.9375rem; }
.letter__source h2 { font-size: 1.35rem; color: var(--ink); }
.letter__source .btn { margin-top: 8px; }
@media (max-width: 640px) { .letter__body { font-size: 1.125rem; line-height: 1.65; } }

/* ---------- Careers ---------- */
.pagenav a.pagenav__sub { padding-left: 32px; font-weight: 400; font-size: 0.875rem; min-height: 36px; }
.toc a.pagenav__sub { padding-left: 16px; font-weight: 400; }
.jobs { margin-top: clamp(32px, 5vw, 56px); }
/* Job post: kicker and title, description left, sticky facts card right. */
.job { border-top: 1px solid var(--line-strong); padding: 36px 0 16px; }
.job + .job { margin-top: 48px; }
.job__head { margin-bottom: 32px; }
.job__kicker { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; margin: 0 0 14px; font: .75rem var(--mono); color: var(--ink-2); }
.sect .job__title, .job__title { font-size: clamp(2rem, 3.2vw, 2.75rem); font-weight: 400; line-height: 1.08; margin: 0; }
.job__layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(240px, 300px); column-gap: clamp(32px, 5vw, 64px); align-items: start; }
.job__main { grid-column: 1; grid-row: 1; min-width: 0; }
.job__aside { grid-column: 2; grid-row: 1; position: sticky; top: calc(var(--header-h) + 24px); padding: 6px 22px 22px; border: 1px solid var(--line); background: var(--bg-surface); }
.job__facts { margin: 0; }
.job__facts div { display: grid; grid-template-columns: 92px minmax(0, 1fr); gap: 12px; padding: 13px 0; border-bottom: 1px solid var(--line); }
.job__facts dt { font: .6875rem/1.6 var(--mono); letter-spacing: .06em; text-transform: uppercase; color: var(--ink-2); }
.job__facts dd { margin: 0; font-size: .9375rem; line-height: 1.45; }
.job__apply { margin: 20px 0 12px; }
.job__apply .btn { width: 100%; justify-content: center; }
.btn--soon, .btn--soon:hover { background: transparent; border-color: var(--line-strong); color: var(--ink-2); cursor: default; filter: none; }
.job__summary { font-family: var(--serif); font-size: clamp(1.2rem, 1.6vw, 1.375rem); line-height: 1.55; max-width: 60ch; margin: 0 0 8px; }
/* A Greenhouse overview of several paragraphs: the first leads, the rest read as the sections do. */
.job__main > p:not(.job__summary) { color: var(--ink-2); font-size: .9844rem; line-height: 1.7; max-width: 68ch; margin: 14px 0 0; }
.jobs + .note { margin-top: 48px; }
.job__section { padding-top: 26px; margin-top: 26px; border-top: 1px solid var(--line); max-width: 68ch; }
.job__section h4 { font: .75rem var(--mono); letter-spacing: .06em; text-transform: uppercase; color: var(--ink); margin: 0 0 14px; }
.job__section p { color: var(--ink-2); font-size: .9844rem; line-height: 1.7; }
.job__section ul.plain { list-style: none; margin: 0; padding: 0; color: var(--ink-2); font-size: .9844rem; line-height: 1.65; }
.job__section ul.plain li { position: relative; padding-left: 22px; margin-bottom: 10px; }
.job__section ul.plain li::before { content: ''; position: absolute; left: 0; top: .8em; width: 10px; border-top: 1px solid var(--accent); }
@media (max-width: 900px) {
  .job__layout { grid-template-columns: 1fr; row-gap: 32px; }
  .job__aside, .job__main { grid-column: 1; grid-row: auto; }
  .job__aside { position: static; }
}
.steps { list-style: none; counter-reset: step; margin: 24px 0 0; padding: 0; border-top: 1px solid var(--line-strong); max-width: 68ch; }
.steps li { display: grid; grid-template-columns: 44px minmax(0, 1fr); gap: 0 var(--gap); padding: 20px 0; border-bottom: 1px solid var(--line); }
.steps li::before { counter-increment: step; content: counter(step, decimal-leading-zero); font-family: var(--mono); font-size: 0.8125rem; color: var(--ink-2); padding-top: 6px; }
.steps h3 { font-size: 1.25rem; margin: 0 0 4px; }
.steps li::before { grid-row: span 2; }
.steps h3, .steps p { grid-column: 2; }
.steps p { margin: 0; color: var(--ink-2); font-size: 0.9375rem; }

/* ---------- Factsheet ---------- */
.factsheet h2 { font-size: 1.5rem; margin-top: 1.5em; }
.factsheet-tools { margin: 16px 0 0; display: flex; flex-wrap: wrap; gap: 8px 24px; align-items: center; }

/* ---------- Footer ----------
   One twelve-column grid, three registers: identity and links, the notices, the
   base line. Three axes run from top to base: the brand block, the forward-looking
   notice and the copyright share columns 1-6; each link group stands over the
   notice beneath it (7-9, 10-12). Labels are mono, as eyebrows are; links are ink;
   the notices are ink-2 at reading size. Below 960px the brand takes the full
   width and the axes become two (1, 7); below 640px everything stacks except the
   two link groups. */
.site-footer { background: var(--bg-deep); color: var(--ink-2); border-top: 1px solid var(--line); margin-top: calc(var(--band) * .6); }
.footer__top, .footer__legal, .footer__base { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--gap); }
.footer__top { padding: 72px 0 64px; row-gap: 48px; }
.footer__brand { grid-column: 1 / span 6; display: flex; flex-direction: column; align-items: flex-start; }
/* The footer carries the same wordmark as the header (Rapha, October 30, 2026); the XXI
   mark now lives only in the favicon, where a wide wordmark cannot. */
.footer__brand .wordmark { display: block; height: 34px; width: auto; color: var(--ink); }
.footer__line { font-family: var(--serif); font-weight: 400; font-size: clamp(1.75rem, 2.6vw, 2.5rem); line-height: 1.08; color: var(--ink); max-width: 11em; margin: 44px 0 32px; text-wrap: balance; }
.footer__address { font-size: 0.9375rem; line-height: 1.65; }
.footer__address a { color: var(--ink); }
/* The company's own profiles, one quiet row under the mailbox. */
.footer__social { display: flex; flex-wrap: wrap; gap: 0 24px; list-style: none; margin: 14px 0 0; padding: 0; }
.footer__cols { grid-column: 7 / -1; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 40px var(--gap); align-content: start; }
/* Scoped to the footer so page heading rules (.page-reserves h2) never reach it. */
.site-footer .footer__cols h2, .site-footer .footer__notice dt { font-family: var(--mono); font-weight: 400; font-size: 0.8125rem; line-height: 1.5; color: var(--ink-2); margin: 0 0 12px; }
.footer__cols ul { list-style: none; margin: 0; padding: 0; }
.footer__cols a, .footer__links a, .footer__social a {
  display: inline-block; padding: 8px 0; font-size: 0.9375rem; line-height: 1.4; color: var(--ink);
  text-decoration: underline; text-decoration-color: transparent; text-underline-offset: 0.3em;
  transition: text-decoration-color 160ms ease;
}
.footer__cols a:hover, .footer__links a:hover, .footer__social a:hover, .footer__address a:hover { color: var(--ink); text-decoration-color: var(--accent); }
/* Leaving the site (SEC, the investor-relations service): a quiet arrow, silent to screen readers. */
.footer__cols a[href^="http"]::after, .footer__social a::after { content: '\2197'; content: '\2197' / ''; display: inline-block; margin-left: 6px; font-size: 0.8125rem; color: var(--ink-2); transition: transform 200ms var(--ease), color 160ms ease; }
.footer__cols a[href^="http"]:hover::after, .footer__social a:hover::after { color: var(--accent); transform: translate(2px, -2px); }
/* The date follows the label on one line where it fits; the margin sits on the
   label so a wrapped date starts flush with it. */
.footer__dated { margin-right: 8px; }
.footer__date { display: inline-block; font-family: var(--mono); font-size: 0.75rem; color: var(--ink-2); white-space: nowrap; }
.footer__legal { margin: 0; padding: 28px 0 48px; border-top: 1px solid var(--line); row-gap: 24px; }
.footer__notice { grid-column: span 3; }
.footer__notice--wide { grid-column: 1 / span 6; }
/* Counsel's disclosure-channel notice (November 2026) is long: it takes its own row,
   set in two text columns whose gutter is the grid's, so the second column starts on
   the 7 axis. The market-data notice takes the right half of the row above. */
.footer__notice--side { grid-column: 7 / -1; }
.footer__notice--full { grid-column: 1 / -1; }
.footer__notice.footer__notice--full dd { max-width: none; columns: 2; column-gap: var(--gap); }
.footer__notice dt a { color: inherit; text-decoration-color: var(--line-strong); }
.footer__notice dt a:hover { color: var(--ink); text-decoration-color: var(--accent); }
.footer__notice dd { margin: 0; max-width: 68ch; font-size: 0.875rem; line-height: 1.65; }
.footer__base { align-items: center; row-gap: 4px; padding: 14px 0 24px; border-top: 1px solid var(--line); font-size: 0.8125rem; }
.footer__copy { grid-column: 1 / span 6; margin: 0; }
.footer__links { grid-column: 7 / span 3; display: flex; flex-wrap: wrap; gap: 0 24px; list-style: none; margin: 0; padding: 0; }
.footer__links a { font-size: 0.8125rem; }
.footer__ticker { grid-column: 10 / span 3; margin: 0; font-family: var(--mono); }
@media (pointer: coarse) { .footer__cols a, .footer__links a, .footer__social a { padding: 12px 0; } }
@media (max-width: 960px) {
  .footer__brand, .footer__cols, .footer__copy, .footer__notice.footer__notice--wide, .footer__notice.footer__notice--full { grid-column: 1 / -1; }
  .footer__notice { grid-column: span 6; }
  /* The brand block keeps the two axes: the line on the left, the address on the right. */
  .footer__brand { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: var(--gap); align-items: end; }
  .footer__brand .wordmark { grid-column: 1 / -1; }
  .footer__line { margin-bottom: 0; }
  .footer__links { grid-column: 1 / span 6; }
  .footer__ticker { grid-column: 7 / span 6; }
  .footer__copy { padding: 10px 0 2px; }
  .footer__base { padding-top: 6px; }
}
@media (max-width: 640px) {
  .footer__top { padding: 56px 0 44px; row-gap: 40px; }
  .footer__brand { display: flex; align-items: flex-start; }
  .footer__line { margin: 32px 0 24px; }
  .footer__brand .wordmark { height: 26px; }
  .footer__cols { gap: 32px 20px; }
  .footer__legal { padding: 24px 0 36px; row-gap: 20px; }
  .footer__notice { grid-column: 1 / -1; }
  .footer__notice.footer__notice--full dd { columns: 1; }
  .footer__links { grid-column: 1 / span 8; }
  .footer__ticker { grid-column: 9 / span 4; text-align: right; }
}
@media (max-width: 359px) {
  .footer__cols { grid-template-columns: 1fr; }
  .footer__links, .footer__ticker { grid-column: 1 / -1; text-align: left; }
}

/* ---------- Legal pages (legal.html, privacy.html) ---------- */
.legal-meta a { text-decoration: none; }
.legal-meta a:hover { text-decoration: underline; }
.page-legal .page-body { max-width: 72ch; }
.plain-words { border: 1px solid var(--line-strong); border-radius: 3px; padding: 24px 28px 20px; margin: 0 0 40px; background: var(--bg-surface); }
.plain-words h2 { font-size: 1.35rem; margin: 0 0 14px; }
.plain-words ul { margin: 0; padding-left: 1.1em; }
.plain-words li { margin-bottom: 0.6em; color: var(--ink-2); }
.plain-words li::marker { color: var(--accent); }
.plain-words strong { color: var(--ink); font-weight: 500; }
.plain-words p { margin: 14px 0 0; color: var(--ink-2); font-size: 0.9375rem; }
.legal-body { counter-reset: legal; }
.legal-body .sect > h2::before { counter-increment: legal; content: counter(legal, decimal-leading-zero); display: block; font: 0.75rem var(--mono); color: var(--accent); margin-bottom: 10px; }
.legal-body .sect p { margin-bottom: 1.1em; }
.legal-body .sect ul { padding-left: 1.15em; margin: 0 0 1.1em; }
.legal-body .sect li { margin-bottom: 0.6em; }
.legal-body .sect li::marker { color: var(--accent); }
.legal-body .sect strong { font-weight: 500; }
.legal-facts { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: 8px 24px; margin: 20px 0 28px; padding: 16px 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); font-size: 0.9375rem; }
.legal-facts dt { font-family: var(--mono); font-size: 0.75rem; color: var(--ink-2); padding-top: 4px; }
.legal-facts dd { margin: 0; color: var(--ink-2); }
table.data--storage { min-width: 720px; }
table.data--storage code { font-family: var(--mono); font-size: 0.875rem; }
@media (max-width: 640px) {
  .plain-words { padding: 20px 20px 16px; }
  .legal-facts { grid-template-columns: 1fr; gap: 2px 0; }
  .legal-facts dd { margin-bottom: 10px; }
}
.consent { position: fixed; left: 0; right: 0; bottom: 0; z-index: 95; background: var(--bg-surface); border-top: 1px solid var(--line-strong); color: var(--ink); }
.consent__in { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px 32px; padding-top: 14px; padding-bottom: 14px; }
.consent p { margin: 0; font-size: 0.9375rem; line-height: 1.5; color: var(--ink-2); max-width: 78ch; }
.consent a { color: var(--ink); }
.consent .btn { flex: none; }
@media print { .consent, .footer__links { display: none !important; } }

/* ---------- Investors: tab bar, two-column sections, ledgers ----------
   A sticky row of tabs (anchors; site.js marks the current one) sits under the
   header. Each section is a head column (heading, period and source, archive links,
   sticky while its body scrolls) and a body column. Figures are a ledger: one
   rule-separated row per item, the value at the right with its own date, the
   definition and source beneath the label. Everything stacks on narrow screens. */
.page-investors { --bar-h: 52px; }
.tabs { position: sticky; top: var(--header-h); z-index: 90; background: color-mix(in srgb, var(--bg) 88%, transparent); -webkit-backdrop-filter: blur(14px) saturate(1.2); backdrop-filter: blur(14px) saturate(1.2); border-bottom: 1px solid var(--line); }
.tabs__track { display: flex; gap: 4px; height: var(--bar-h); align-items: stretch; overflow-x: auto; scrollbar-width: none; scroll-padding-inline: var(--gutter); }
.tabs__track::-webkit-scrollbar { display: none; }
.tabs__track a { flex: none; display: inline-flex; align-items: center; padding: 0 16px; margin-bottom: -1px; border-bottom: 2px solid transparent; font-size: .875rem; font-weight: 500; color: var(--ink-2); text-decoration: none; white-space: nowrap; transition: color 200ms ease-out, border-color 200ms ease-out; }
.tabs__track a:first-child { padding-left: 0; }
.tabs__track a:hover { color: var(--ink); }
.tabs__track a.is-current { color: var(--ink); border-color: var(--accent); }
.investors-content { padding-bottom: calc(var(--band) * .5); }
.page-investors .sect { display: grid; grid-template-columns: minmax(0, .75fr) minmax(0, 1.25fr); column-gap: 72px; padding: clamp(40px, 5vw, 64px) 0; border-top: 1px solid var(--line); }
.page-investors .sect:first-child { border-top: 0; padding-top: clamp(28px, 4vw, 48px); }
.sect__head { position: sticky; top: calc(var(--header-h) + var(--bar-h, 0px) + 24px); align-self: start; min-width: 0; }
.sect__head h2 { font-size: clamp(2rem, 3.4vw, 3rem); max-width: 14ch; line-height: 1.1; margin-bottom: 18px; }
.sect__meta { font-family: var(--mono); font-size: .875rem; line-height: 1.7; color: var(--ink-2); margin: 0 0 12px; max-width: 46ch; }
.sect__links { display: flex; flex-direction: column; align-items: flex-start; margin: 0; }
.sect__links .textlink { font-size: .9375rem; min-height: 40px; }
/* Partner line (Investors, shares and governance): Tether's monochrome wordmark from its
   media kit, drawn in the ink colour at text height and linked to tether.io, with its role
   as a key in the Team page's affiliation style. One line inside the prose, no section. */
.partner { margin: 0 0 1.1em; }
.partner__link { display: inline-flex; align-items: center; gap: 14px; min-height: 44px; color: var(--ink); text-decoration: none; }
.partner__mark { height: 15px; width: auto; display: block; }
.partner__key { font: 400 .625rem/1.6 var(--mono); letter-spacing: .12em; text-transform: uppercase; color: var(--ink-2); }
.partner__link:hover .partner__mark, .partner__link:focus-visible .partner__mark { color: var(--accent-deep); }
.partner__link:hover .partner__key { color: var(--ink); }
.sect__body { min-width: 0; }
.sect__body > :last-child { margin-bottom: 0; }
.sect__body .prose { max-width: 62ch; }
.sect__body .prose + .ledger, .sect__body .prose + .ledger__note { margin-top: 8px; }
.sect__body .more { margin-bottom: 28px; }
.more__body { padding: 16px 0 8px; }
.ledger { margin: 0 0 24px; padding: 0; border-top: 1px solid var(--line-strong); }
.ledger__row { display: grid; grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "item value" "def value"; gap: 6px 32px; padding: 18px 0; border-bottom: 1px solid var(--line); align-items: start; }
.ledger__item { grid-area: item; font-family: var(--serif); font-size: 1.2rem; line-height: 1.25; }
.ledger__value { grid-area: value; margin: 0; display: grid; justify-items: end; gap: 3px; text-align: right; }
.ledger__figure { font-family: var(--mono); font-weight: 500; font-size: 1.25rem; line-height: 1.2; font-variant-numeric: tabular-nums; white-space: nowrap; }
.ledger__asof { font-family: var(--mono); font-size: .8125rem; color: var(--ink-2); }
.ledger__def { grid-area: def; margin: 0; color: var(--ink-2); font-size: .875rem; line-height: 1.55; max-width: 60ch; }
.ledger__note { font-size: .875rem; color: var(--ink-2); margin: 0 0 14px; max-width: 70ch; }
.sect__anchor { scroll-margin-top: calc(var(--header-h) + var(--bar-h, 0px) + 16px); }
.sect__body h3 { font-size: 1.5rem; margin: 40px 0 10px; }
.sect__body h4 { font: 500 .8125rem/1.5 var(--mono); color: var(--ink-2); margin: 24px 0 10px; }
.ledger--calc .ledger__figure { font-size: 1.4rem; }
.ledger--inputs .ledger__item { font-family: var(--sans); font-size: 1rem; }
.ledger--inputs .ledger__row { padding: 12px 0; }
.sect__body .more .prose p { margin-bottom: .8em; }
.record--plain .record__row { grid-template-columns: 180px minmax(0, 1fr); }
.facts { margin: 0; padding: 0; border-top: 1px solid var(--line-strong); }
.facts > div { display: grid; grid-template-columns: 200px minmax(0, 1fr); gap: 6px var(--gap); padding: 18px 0; border-bottom: 1px solid var(--line); }
.facts dt { font-family: var(--mono); font-size: .8125rem; color: var(--ink-2); padding-top: 3px; }
.facts dd { margin: 0; }
.facts--stock { margin: 20px 0 8px; }
.facts--stock > div { padding: 12px 0; }
@media (max-width: 1100px) {
  .tabs__track { -webkit-mask-image: linear-gradient(90deg, transparent, #000 var(--gutter), #000 calc(100% - var(--gutter)), transparent); mask-image: linear-gradient(90deg, transparent, #000 var(--gutter), #000 calc(100% - var(--gutter)), transparent); }
}
@media (max-width: 880px) {
  .page-investors .sect { grid-template-columns: 1fr; row-gap: 20px; }
  .sect__head { position: static; }
  .sect__head h2 { max-width: none; }
  .sect__links { flex-direction: row; flex-wrap: wrap; gap: 0 28px; }
}
@media (max-width: 640px) {
  .tabs__track a { font-size: .8125rem; padding: 0 12px; }
  .ledger__row { grid-template-columns: 1fr; grid-template-areas: "item" "value" "def"; gap: 4px; }
  .ledger__value { justify-items: start; text-align: left; grid-auto-flow: column; align-items: baseline; gap: 10px; }
  .ledger__figure { white-space: normal; }
  .facts > div { grid-template-columns: 1fr; gap: 4px; }
}

/* ---------- Bitcoin reserves (reserves.html): on-chain ledger ----------
   Figures, a static step chart of the running balance (render.py reserves_chart;
   site.js adds a hover/keyboard readout from the embedded points), and two ledger
   tables: addresses and transactions. Long addresses wrap anywhere; on narrow
   screens each row restacks with its column labels, like the capital tables. */
.page-reserves .band--tight { padding: calc(var(--band) * .5) 0; }
.page-reserves h2 { font-size: 1.5rem; margin: 0 0 8px; }
.page-reserves .section-intro { margin: 0 0 20px; }
.reserves__status { margin-bottom: 24px; line-height: 1.7; }
.figures--four { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.figures--ledger .figure__value { font-size: clamp(1.6rem, 2.4vw, 2.2rem); }
.chart--reserves { margin: 16px 0 8px; }
.chart--reserves .chart__plot { aspect-ratio: 16 / 6; min-height: 200px; cursor: crosshair; touch-action: pan-y; }
.chart--reserves .chart__plot:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }
.chart__line--reserve { stroke: var(--ink); stroke-width: 1.5; }
.chart__area--reserve { fill: color-mix(in srgb, var(--ink) 7%, transparent); }
.key--reserve { border-top: 2px solid var(--ink); }
.reserves__readout { font: .8125rem/1.5 var(--mono); color: var(--ink-2); min-height: 1.5em; margin: 0 0 8px; }
table.data--ledger { min-width: 820px; }
table.data--ledger .mono { font-family: var(--mono); font-variant-numeric: tabular-nums; white-space: nowrap; }
table.data--ledger .addr { font-family: var(--mono); font-size: .8125rem; font-weight: 400; }
table.data--ledger .addr a { overflow-wrap: anywhere; text-decoration: none; border-bottom: 1px solid var(--line-strong); }
table.data--ledger .addr a:hover, table.data--ledger .addr a:focus-visible { border-bottom-color: var(--accent); }
table.data--ledger .addr .tag { margin-left: 8px; vertical-align: middle; }
table.data--addresses th.addr { max-width: 46ch; }
table.data--txs td { vertical-align: top; }
.tx-kind { display: inline-block; font-family: var(--mono); font-size: .75rem; line-height: 1; padding: 5px 7px; border: 1px solid var(--line); border-radius: 3px; color: var(--ink-2); white-space: nowrap; }
.tx-kind--received { border-color: var(--line-strong); color: var(--ink); }
.tx-kind--sent { border-color: var(--accent); color: var(--ink); }
.tx-kind--pending { border-style: dashed; }
table.data .num--out { color: var(--accent); }
.tx-kind--mixed, .tx-kind--unknown { border-style: dashed; color: var(--ink-2); }
/* Under the net change: the attributable transfer and the fee, kept apart from the net. */
.tx-detail { display: block; margin-top: 4px; font: .6875rem/1.45 var(--mono); color: var(--ink-2); white-space: normal; max-width: 24ch; margin-left: auto; }
.legs { list-style: none; margin: 0; padding: 0; display: grid; gap: 3px; font-family: var(--mono); font-size: .75rem; }
.legs li { display: flex; justify-content: space-between; gap: 12px; white-space: nowrap; }
.legs .num { color: var(--ink-2); }
@media (max-width: 880px) {
  .figures--four { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .figures--four .figure:nth-child(odd) { border-left: 0; }
  .figures--four .figure:nth-child(n+3) { border-top: 1px solid var(--line); }
}
@media (max-width: 720px) {
  table.data--ledger { min-width: 0; }
  table.data--ledger thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  table.data--ledger tr { display: block; padding: 14px 16px; border-bottom: 1px solid var(--line); }
  table.data--ledger tr:last-child { border-bottom: 0; }
  table.data--ledger th, table.data--ledger td { display: block; padding: 0; border: 0; text-align: left; white-space: normal; }
  table.data--ledger tbody th.addr { margin-bottom: 8px; }
  table.data--ledger td { margin-bottom: 4px; }
  table.data--ledger td[data-label]::before { content: attr(data-label) ': '; font-family: var(--sans); font-size: .8125rem; color: var(--ink-2); }
  table.data--ledger td.num { text-align: left; }
  .tx-detail { margin-left: 0; max-width: none; }
  table.data--ledger td.addr .legs { margin-top: 4px; }
  .legs li { white-space: normal; }
}
@media (max-width: 480px) {
  .figures--four { grid-template-columns: 1fr; }
  .figures--four .figure { border-left: 0; }
  .figures--four .figure + .figure { border-top: 1px solid var(--line); }
}

/* ---------- Motion ---------- */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation: none !important; transition: none !important; }
}

/* ---------- Print ---------- */
@media print {
  :root, [data-theme="dark"] {
    color-scheme: light;
    --bg: #FFFFFF; --bg-surface: #FFFFFF; --bg-surface-2: #FFFFFF; --bg-deep: #FFFFFF;
    --ink: #000000; --ink-2: #333333; --line: #CCCCCC; --line-strong: #666666; --accent: #000000; --accent-deep: #000000; --btc: #555555;
    --inset-bg: #FFFFFF; --inset-ink: #000000; --inset-ink-2: #333333; --inset-line: #CCCCCC;
  }
  .site-header, .site-footer .footer__top, .skip, .theme-toggle, .nav-toggle, .rail, .toc, .tabs, .letter__tools, [data-print], .chart__controls, .chart__inspect { display: none !important; }
  .sect__head { position: static; }
  .page-investors .sect { grid-template-columns: 1fr; }
  body { background: #fff; color: #000; font-size: 11pt; }
  .band { padding: 12pt 0; border: 0; }
  .wrap { max-width: none; padding: 0; }
  a { text-decoration: none; color: #000; }
  .letter__body a[href^="mailto"]::after { content: ''; }
  .letter__source a:not(.btn)::after, .factsheet a:not(.btn)::after { content: ' (' attr(href) ')'; font-size: 9pt; color: #333; }
  .factsheet .period-tag a { white-space: normal; overflow-wrap: anywhere; }
  @page { margin: 14mm; }
  .page-factsheet .hero { padding: 0 0 6pt; }
  .page-factsheet .hero h1 { font-size: 18pt; margin-bottom: 4pt; }
  .page-factsheet .hero .lede { font-size: 10pt; max-width: none; }
  .page-factsheet .hero .eyebrow { margin-bottom: 6pt; }
  .factsheet-tools, .ascii-field { display: none !important; }
  .factsheet .period-tag { margin-bottom: 8pt; }
  .factsheet h2 { font-size: 13pt; margin: 14pt 0 6pt; break-after: avoid; }
  .factsheet table.data--capital thead { display: table-header-group; }
  .factsheet table.data--capital tr { break-inside: avoid; }
  .factsheet table.data--capital th, .factsheet table.data--capital td { font-size: 8.5pt; padding: 5pt 6pt; }
  .factsheet table.data--capital caption { padding: 4pt 0 6pt; font-size: 9pt; }
  .factsheet .table-wrap { margin-bottom: 10pt; }
  .letter__body { max-width: none; font-size: 12pt; }
  details { display: block; } details > summary { display: none; } details:not([open]) > *:not(summary) { display: block; }
  .info__panel { position: static; width: auto; box-shadow: none; border: 0; padding: 4pt 0 0; }
  .spark { display: none; }
  .reserves__readout { display: none; }
  .page-reserves table.data--ledger { min-width: 0; font-size: 8.5pt; }
  .page-reserves table.data--ledger th, .page-reserves table.data--ledger td { padding: 5pt 6pt; white-space: normal; overflow-wrap: anywhere; }
  .table-wrap { overflow: visible; border: 0; }
  table.data--capital { min-width: 0; table-layout: fixed; font-size: 9pt; }
  table.data--capital th, table.data--capital td { padding: 6pt 8pt; white-space: normal; overflow-wrap: anywhere; }
  table.data--capital .num { white-space: normal; }
  .site-footer { margin-top: 24pt; border-top: 1px solid #ccc; }
  .footer__legal { display: block; padding: 10pt 0 6pt; border: 0; }
  .footer__notice + .footer__notice { margin-top: 6pt; }
  .site-footer .footer__notice dt { font-size: 7.5pt; margin: 0 0 1pt; color: #333; }
  .footer__notice dd { font-size: 8pt; max-width: none; }
  .footer__base { display: block; padding: 6pt 0 0; font-size: 8pt; }
  .footer__ticker { display: none; }
}

/* ---------- Investor email alerts (alerts.html) ----------
   A short bridge to the Q4-hosted sign-up: one paragraph, one button, the EDGAR feed. */
.alerts { max-width: 62ch; }
.alerts p { color: var(--ink-2); max-width: 62ch; }
.alerts .section-foot { margin-top: 8px; }
