/* fonts.css */
/* Orbit webfonts — self-hosted static weights. The three-weight rule ships in the
   binaries themselves: 300, 400 (mono only), 500. Nothing heavier exists on disk.
   SIL Open Font License — see assets/fonts/OFL-*.txt.

   WOFF2 only. The .ttf originals stay in the repo but are excluded from the
   deployment (.vercelignore) — WOFF2 is ~66% smaller for the same faces and is
   supported everywhere the rest of this site is. If you re-export a weight,
   regenerate the .woff2 beside it; the .ttf is never served. */
@font-face { font-family: "Space Grotesk"; src: url("../assets/fonts/SpaceGrotesk-Light.woff2") format("woff2"); font-weight: 300; font-style: normal; font-display: swap; }
@font-face { font-family: "Space Grotesk"; src: url("../assets/fonts/SpaceGrotesk-Medium.woff2") format("woff2"); font-weight: 500; font-style: normal; font-display: swap; }
@font-face { font-family: "IBM Plex Sans"; src: url("../assets/fonts/IBMPlexSans-Light.woff2") format("woff2"); font-weight: 300; font-style: normal; font-display: swap; }
@font-face { font-family: "IBM Plex Sans"; src: url("../assets/fonts/IBMPlexSans-Regular.woff2") format("woff2"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "IBM Plex Sans"; src: url("../assets/fonts/IBMPlexSans-Medium.woff2") format("woff2"); font-weight: 500; font-style: normal; font-display: swap; }
@font-face { font-family: "IBM Plex Mono"; src: url("../assets/fonts/IBMPlexMono-Light.woff2") format("woff2"); font-weight: 300; font-style: normal; font-display: swap; }
@font-face { font-family: "IBM Plex Mono"; src: url("../assets/fonts/IBMPlexMono-Regular.woff2") format("woff2"); font-weight: 400; font-style: normal; font-display: swap; }

/* colors.css */
/* Orbit v4.0 — colour. Cool only: every hue sits between 198° and 209°.
   Never pure black (ink-100). Never pure white on navy (ice). */
:root {
  /* NAVY — the dark pole */
  --navy-deepest: #030f1a;   /* product ground */
  --navy-deep:    #061728;   /* panels, sidebar */
  --navy-primary: #0c374b;   /* brand navy, document header bands */
  --navy-mid:     #1a5070;   /* primary button */
  --navy-light:   #2a6a8a;
  --navy-accent:  #3d7e9e;   /* focus, active rail, button hover */

  /* ICE — the light pole */
  --ice:       #e0f2fa;
  --ice-dim:   #b8ddef;
  --ice-faint: #8ec8e0;

  /* ICE TEXT TIERS — 0.60 is the floor; below that fails AA */
  --ice-90: rgba(224,242,250,0.90);
  --ice-75: rgba(224,242,250,0.75);
  --ice-60: rgba(224,242,250,0.60);
  --ice-rule:    rgba(224,242,250,0.20);  /* rules — never text */
  --ice-edge:    rgba(224,242,250,0.10);  /* borders */
  --ice-grid:    rgba(224,242,250,0.05);  /* gridlines, hover wash */
  --ice-ambient: rgba(224,242,250,0.02);  /* background grid */

  /* INK — text on light */
  --ink-100: #0c1a26;
  --ink-80:  #2a3f4f;
  --ink-60:  #4a6275;
  --ink-50:  #607388;   /* muted — FLOOR on light */
  --ink-40:  #8a9bad;   /* borders/dividers ONLY, never text */
  --ink-20:  #c5d0d9;
  --ink-10:  #e8edf1;

  /* LIGHT SURFACES — exports, print, board packs */
  --surface-base:   #f4f7f9;
  --surface-raised: #fafbfc;
  --surface-sunken: #e8edf1;
  --surface-rule:   #c5d0d9;
  --paper:          #f6f6f5;   /* editorial / print. Near-hueless by design. */

  /* STATUS — policy state, data contexts only */
  --ok-dark:   #5dba8e;
  --warn-dark: #c8a23a;
  --risk-dark: #e07a6a;
  --ok-text:   #367e5c;
  --warn-text: #876c25;   /* AA on --paper: #896e26 read 4.49 */
  --risk-text: #c43d29;

  /* STATUS WASHES — badge fills */
  --ok-wash-dark:   rgba(93,186,142,0.14);
  --warn-wash-dark: rgba(200,162,58,0.14);
  --risk-wash-dark: rgba(224,122,106,0.14);
  --ok-wash-light:   rgba(54,126,92,0.10);
  --warn-wash-light: rgba(137,110,38,0.10);
  --risk-wash-light: rgba(196,61,41,0.10);

  /* SERIES — categorical charts. Six is the ceiling. */
  --series-1: #8ec8e0;
  --series-2: #387391;   /* AA: --ice text on this fill. #3d7e9e read 3.90 */
  --series-3: #b8ddef;
  --series-4: #2a6a8a;
  --series-5: #9188c4;
  --series-6: #b784a8;

  /* VARIANCE — diverging. Direction, not policy state. */
  --var-pos-strong: #367e5c;
  --var-pos:        #5dba8e;
  --var-neutral:    #8a9bad;
  --var-neg:        #e07a6a;
  --var-neg-strong: #ca3f2b;  /* AA on --paper: #cc402b read 4.48 */

  /* CHART CHROME */
  --chart-axis:     rgba(224,242,250,0.20);
  --chart-grid:     rgba(224,242,250,0.05);
  --chart-baseline: rgba(224,242,250,0.75);  /* heavier than every other rule */
  --chart-label:    rgba(224,242,250,0.60);

  /* WEBSITE — marketing/editorial surface only. Never inside product UI. */
  --web-tint:      #e3eef5;   /* hero plate wash, hue ~203° */
  --web-tint-edge: #c7dbe7;   /* hairline on tint */
  --web-accent-dark:  var(--ice-faint);  /* accent phrase in display heads on navy */
  --web-accent-light: var(--navy-mid);   /* accent phrase on light */

  /* ── SEMANTIC ALIASES ── dark product surface (default) ── */
  --ground:         var(--navy-deepest);
  --surface-panel:  var(--navy-deep);
  --surface-card:   var(--navy-deep);
  --border-default: var(--ice-edge);
  --border-strong:  var(--ice-rule);
  --text-primary:   var(--ice);
  --text-body:      var(--ice-90);
  --text-secondary: var(--ice-75);
  --text-muted:     var(--ice-60);
  --text-numeral:   var(--ice-75);
  --focus-ring:     var(--navy-accent);

  /* ── SEMANTIC ALIASES ── light document surface ── */
  --doc-ground:         var(--surface-base);
  --doc-surface-card:   var(--surface-raised);
  --doc-surface-sunken: var(--surface-sunken);
  --doc-border:         var(--surface-rule);
  --doc-text-primary:   var(--ink-100);
  --doc-text-body:      var(--ink-60);
  --doc-text-strong:    var(--ink-80);
  --doc-text-muted:     var(--ink-50);
  --doc-band:           var(--navy-primary);
}

/* typography.css */
/* Orbit v4.0 — type. 12 steps, floor 10px, three weights, four tracking values. */
:root {
  /* TYPEFACES */
  --display: "Space Grotesk", system-ui, sans-serif;   /* @kind font */ /* headings only */
  --sans:    "IBM Plex Sans", system-ui, sans-serif;   /* @kind font */ /* body, UI, nav */
  --mono:    "IBM Plex Mono", ui-monospace, monospace; /* @kind font */ /* ALL numerals */

  /* WEIGHTS — three, and only three */
  --w-light:  300; /* @kind font */
  --w-mono:   400; /* @kind font */
  --w-medium: 500; /* @kind font */
  --display-weight: 300;   /* @kind font */ /* set 500 to test a heavier display voice */

  /* TYPE SCALE — 12 steps, ratio ~1.2, floor 10px */
  --fs-10:  10px;   /* micro, eyebrow, table header */
  --fs-12:  12px;   /* metadata, table data, UI label */
  --fs-14:  14px;   /* body — UI default */
  --fs-17:  17px;   /* lead paragraph */
  --fs-20:  20px;   /* heading sm */
  --fs-24:  24px;   /* heading, KPI hero value */
  --fs-30:  30px;   /* display sm */
  --fs-36:  36px;   /* display */
  --fs-48:  48px;   /* display lg */
  --fs-64:  64px;   /* display xl */
  --fs-96:  96px;   /* numeral */
  --fs-128: 128px;  /* numeral lg */

  /* TRACKING — four values, no more */
  --tr-caps:    0.16em;
  --tr-data:    0.02em;
  --tr-tight:  -0.015em;
  --tr-tighter: -0.03em;

  /* LINE HEIGHTS in use */
  --lh-hero:  0.95; /* @kind font */
  --lh-display: 1.1; /* @kind font */
  --lh-heading: 1.3; /* @kind font */
  --lh-lede:  1.55; /* @kind font */
  --lh-body:  1.75; /* @kind font */
  --lh-ui:    1.4; /* @kind font */

  /* SEMANTIC TYPE ALIASES */
  --font-display: var(--display);
  --font-body:    var(--sans);
  --font-numeral: var(--mono);
  --text-eyebrow-size: var(--fs-10);
  --text-label-size:   var(--fs-12);
  --text-body-size:    var(--fs-14);
  --measure-body: 68ch; /* @kind spacing */
}

/* v3.css */
/* Website v3 — the agreed look (ruled 2026-10-08). Scoped to body.v3 so
   nothing here reaches the live pages.
   - White page; one ice-blue wash that starts mid-hero (Dust-style).
   - Graphite ink #17191c; Orbit blue #2f6c8c for the headline's second line
     and small highlights only. Losses rose-red, gains sage.
   - No serif, no cream, no navy, no purple, no orange.
   - Type is the platform's: Instrument Sans for headlines and body, Commit
     Mono for figures; the wordmark stays in Space Grotesk (fonts.css). */
@font-face{font-family:'Instrument Sans';font-style:normal;font-weight:400 700;font-display:swap;src:url('/assets/fonts/InstrumentSans-var.woff2') format('woff2')}
@font-face{font-family:'Instrument Sans';font-style:italic;font-weight:400 700;font-display:swap;src:url('/assets/fonts/InstrumentSans-var-italic.woff2') format('woff2')}
/* Commit Mono is subset to the characters the site uses (Latin, Greek, punctuation, currency, arrows, maths,
   box lines, shapes; default features). Full files: assets/fonts/full/. Re-subset after adding new symbols:
   pyftsubset assets/fonts/full/CommitMono-400.woff2 --unicodes="U+0000-017F,U+0370-03FF,U+2000-23FF,U+2500-257F,U+25A0-27BF" --flavor=woff2 --output-file=assets/fonts/CommitMono-400.woff2 (same for 500) */
@font-face{font-family:'Commit Mono';font-style:normal;font-weight:400;font-display:swap;src:url('/assets/fonts/CommitMono-400.woff2') format('woff2')}
@font-face{font-family:'Commit Mono';font-style:normal;font-weight:500;font-display:swap;src:url('/assets/fonts/CommitMono-500.woff2') format('woff2')}

.v3{
  --display:'Instrument Sans',system-ui,sans-serif;
  --sans:'Instrument Sans',system-ui,sans-serif;
  --mono:'Commit Mono',ui-monospace,monospace;
  --bg:#ffffff;
  --surface:#ffffff;
  --sunk:#f2f3f4;
  --rule:#e7e6e3;
  --ink:#17191c;         /* graphite */
  --ink-2:#2b2e33;
  --muted:#6b6f76;
  --accent:#17191c;
  --accent-2:#2f6c8c;    /* Orbit blue (B, ruled 10-08): headline accent, kickers, progress; 5.8:1 on white */
  --ice:#8ec8e0;         /* the wash's deep end; data highlights */
  --soft:#eaf3f8;
  /* Data colours (ruled 2026-10-08): warm and light, from our own past
     palettes. Losses are the live site's coral family (--var-neg #e07a6a);
     gains the platform's teal (--raw-teal #42a88f); neutral data the live
     site's ice series. The deep tones are for small figures only (AA on
     white); fills use the light tones. */
  --bad:#a9523b;         /* terracotta: loss figures as text, 5.3:1 on white, 4.6:1 on its chip */
  --bad-soft:#fcebe5;
  --loss-fill:#ec9c86;   /* bars and segments that are losses */
  --loss-fill-2:#f6cfc4;
  --good:#2c7867;        /* deep teal: gain figures as text, 5.3:1 on white, 4.6:1 on its chip */
  --good-soft:#e2f3ee;
  --gain-fill:#7fc9b5;
  --gain-fill-2:#c9eae0;
  --data-1:#387391;      /* neutral data, strongest (white text passes AA) */
  --data-2:#8ec8e0;
  --data-3:#cfe6f1;
  --ink-rule:#2e3237;    /* rules and muted text on the graphite sections */
  --ink-muted:#a7abb1;
  --ease:cubic-bezier(.2,.7,.2,1);
  margin:0;background:var(--bg);color:var(--ink-2);
  font-family:var(--sans);font-weight:400;font-size:16px;line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
.v3 *{box-sizing:border-box}
.v3-wrap{max-width:1360px;margin:0 auto;padding:0 40px}
.v3-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.v3-skip{position:absolute;left:-999px}
.v3-skip:focus{left:16px;top:16px;background:#fff;padding:8px 12px;z-index:99}

/* nav */
.v3-nav{position:sticky;top:0;z-index:40;background:rgba(255,255,255,.82);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid transparent;transition:border-color .3s}
.v3-nav-row{display:flex;align-items:center;justify-content:space-between;height:68px}
.v3-logo{display:inline-flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink);font-family:'Space Grotesk',var(--sans);font-weight:500;font-size:17px;letter-spacing:.02em}
.v3-logo svg{height:15px!important;width:auto!important;color:var(--accent)!important}
.v3-nav nav{display:flex;gap:30px}
.v3-nav nav a{color:var(--muted);text-decoration:none;font-size:14px;font-weight:400;transition:color .2s}
.v3-nav nav a:hover{color:var(--ink)}

.v3-btn{display:inline-flex;align-items:center;gap:8px;border-radius:999px;padding:11px 20px;font:inherit;font-size:14px;font-weight:400;text-decoration:none;cursor:pointer;border:1px solid transparent;transition:transform .2s var(--ease),background .2s}
.v3-btn-ink{background:var(--ink);color:#fff}
.v3-btn-ink:hover{background:#3a3d42}
.v3-btn-line{background:var(--surface);color:var(--ink);border-color:var(--rule)}

/* hero */
/* the wash: white behind the headline, ice-blue rising behind the tabs and
   the product window, then back to white */
.v3-hero{position:relative;padding:36px 0 40px;text-align:center;background:linear-gradient(180deg,#ffffff 0%,#ffffff 20%,#eef7fb 36%,#dcedf6 56%,#e6f2f8 74%,#ffffff 100%)}
.v3-eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin:0 0 16px}
.v3-h1{font-family:var(--display);font-weight:500;font-size:68px;line-height:1.02;letter-spacing:-.035em;color:var(--ink);margin:0}
.v3-h1 span{color:var(--accent-2)}
.v3-lede{font-size:18px;line-height:1.5;color:var(--muted);max-width:44ch;margin:14px auto 0}
.v3-ask{margin:30px 0 12px;font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}

/* question tabs */
.v3-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;text-align:left}
.v3-tab{position:relative;display:grid;gap:8px;align-content:start;padding:14px 18px 20px;border-radius:14px;border:1px solid #ecebe8;background:rgba(255,255,255,.55);font:inherit;color:var(--muted);cursor:pointer;text-align:left;transition:background .35s var(--ease),border-color .35s,color .35s,transform .35s var(--ease)}
.v3-tab small{font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase}
.v3-tab span{font-weight:500;font-size:16px;line-height:1.3;letter-spacing:-.005em}
.v3-tab:hover{border-color:#d6d8db}
.v3-tab[aria-selected="true"]{background:var(--surface);border-color:var(--surface);color:var(--ink);box-shadow:0 1px 0 var(--rule),0 12px 30px -18px rgba(23,25,28,.25)}
.v3-tab[aria-selected="true"] small{color:var(--accent-2)}
.v3-prog{position:absolute;left:20px;right:20px;bottom:10px;height:2px;background:var(--sunk);border-radius:2px;overflow:hidden;opacity:0;transition:opacity .3s}
.v3-tab[aria-selected="true"] .v3-prog{opacity:1}
.v3-prog b{display:block;height:100%;width:0;background:var(--accent-2)}

/* stage + window */
.v3-stage{position:relative;margin-top:14px;padding:20px;border-radius:22px;text-align:left;background:rgba(255,255,255,.45)}
.v3-window{position:relative;height:430px;background:var(--surface);border-radius:14px;box-shadow:0 0 0 1px rgba(23,25,28,.06),0 24px 48px -28px rgba(23,25,28,.28);overflow:hidden}
.v3-titlebar{display:flex;align-items:center;gap:14px;height:44px;padding:0 16px;border-bottom:1px solid var(--rule)}
.v3-dots{display:flex;gap:6px}
.v3-dots i{width:9px;height:9px;border-radius:50%;background:var(--rule)}
.v3-title{font-size:13px;color:var(--muted)}
.v3-move{margin-left:auto;display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:12px;color:var(--ink);background:var(--bad-soft);border-radius:999px;padding:4px 12px}
.v3-move b{font-weight:400;color:var(--bad)}
.v3-move i{width:6px;height:6px;border-radius:50%;background:var(--loss-fill);animation:v3pulse 2s infinite}
@keyframes v3pulse{0%,100%{opacity:1}50%{opacity:.3}}
.v3-note{margin:12px 4px 0;font-size:12px;color:var(--muted);text-align:left}

/* scenes */
.v3-scene{position:absolute;inset:44px 0 0 0;padding:26px 28px;opacity:0;visibility:hidden;transform:translateY(10px);transition:opacity .5s var(--ease),transform .5s var(--ease),visibility 0s .5s}
.v3-scene.is-on{opacity:1;visibility:visible;transform:none;transition:opacity .6s var(--ease) .1s,transform .6s var(--ease) .1s,visibility 0s}
.v3-scene-grid{display:grid;grid-template-columns:1.35fr 1fr;gap:28px;height:100%}
.v3-panel{position:relative}
.v3-panel-h{font-size:13px;color:var(--muted);margin-bottom:18px}
.v3-panel-h em{font-style:normal;font-family:var(--mono);font-size:11px;margin-left:6px}
.v3-side{position:relative;display:grid;gap:14px;align-content:start;padding-top:30px}
.v3-card{border:1px solid var(--rule);border-radius:12px;padding:16px 18px;background:var(--surface);opacity:0;transform:translateY(12px);transition:opacity .5s var(--ease),transform .5s var(--ease)}
.v3-card small{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent-2)}
.v3-card p{margin:6px 0 10px;font-size:16px;line-height:1.45;color:var(--ink)}
.v3-card p b{font-weight:500}
.v3-meta{display:flex;gap:16px;font-size:12px;color:var(--muted)}

/* CFO: bridge */
.bridge{position:relative;height:290px;display:grid;grid-template-columns:repeat(5,1fr);gap:18px;align-items:end;border-bottom:1px solid var(--rule);padding:0 6px}
.bcol{position:relative;height:270px}
.bar{position:absolute;left:0;right:0;border-radius:4px;transform:scaleY(0);transform-origin:bottom;transition:transform .7s var(--ease)}
.b-plan{background:var(--data-1)}
.b-act{background:var(--ice)}
.b-up{background:#d5e6ee}
.b-down{background:#dcd9d3;transform-origin:top}
.b-mkt{background:var(--loss-fill);transform-origin:top;display:flex;flex-direction:column;overflow:hidden}
.seg{display:block;width:100%;opacity:0;transition:opacity .5s}
.seg1{background:var(--loss-fill)}.seg2{background:#f0ae9c}.seg3{background:#f6cfc4}
.bcol:nth-child(2) .bar{transition-delay:.25s}.bcol:nth-child(3) .bar{transition-delay:.5s}.bcol:nth-child(4) .bar{transition-delay:.75s}.bcol:nth-child(5) .bar{transition-delay:1s}
.bval{position:absolute;left:0;right:0;text-align:center;font-family:var(--mono);font-size:12px;color:var(--ink);bottom:186px;opacity:0;transition:opacity .4s 1.2s}
.blab{position:absolute;left:-6px;right:-6px;bottom:-24px;text-align:center;font-size:12px;color:var(--muted)}
.b-q{position:absolute;left:50%;bottom:168px;transform:translate(-50%,0) scale(.6);width:26px;height:26px;border-radius:50%;background:var(--ink);color:#fff;font-family:var(--display);font-size:14px;display:grid;place-items:center;opacity:0;transition:opacity .3s,transform .4s var(--ease)}
.v3-tip{position:absolute;left:46%;top:24px;background:var(--ink);color:#fff;font-size:13px;padding:8px 12px;border-radius:8px;opacity:0;transform:translateY(6px);transition:opacity .3s,transform .3s var(--ease);white-space:nowrap}
.v3-tip b{font-weight:500;color:#dcedf6}
.v3-split{opacity:0;transform:translateX(16px);transition:opacity .5s var(--ease),transform .5s var(--ease)}
.v3-split-h{font-size:13px;color:var(--muted);margin-bottom:10px}
.v3-split-row{display:grid;grid-template-columns:12px 1fr auto;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid var(--rule);font-size:14px;color:var(--ink);opacity:0;transform:translateX(10px);transition:opacity .4s,transform .4s var(--ease)}
.v3-split-row b{font-family:var(--mono);font-weight:400;color:var(--bad)}
.sw{width:10px;height:10px;border-radius:3px}.sw1{background:var(--loss-fill)}.sw2{background:#f0ae9c}.sw3{background:#f6cfc4}
.r2{transition-delay:.15s}.r3{transition-delay:.3s}

.v3-scene.s1 .bar,.v3-scene.s1 .bval{transform:scaleY(1);opacity:1}
.v3-scene.s2 .b-q{opacity:1;transform:translate(-50%,0) scale(1)}
.v3-scene.s2 .v3-tip{opacity:1;transform:none}
.v3-scene.s3 .b-q,.v3-scene.s3 .v3-tip{opacity:0}
.v3-scene.s3 .seg{opacity:1}
.v3-scene.s3 .bcol:not(.bcol-mkt) .bar{opacity:.35;transition:opacity .5s,transform .7s var(--ease)}
.v3-scene.s3 .v3-split,.v3-scene.s3 .v3-split-row{opacity:1;transform:none}
.v3-scene.s4 .v3-owner{opacity:1;transform:none}

/* Treasurer: drivers */
.v3-total{display:grid;gap:2px;margin-bottom:22px}
.v3-count{font-family:var(--display);font-weight:400;font-size:54px;letter-spacing:-.03em;color:var(--ink);line-height:1}
.v3-total small{font-size:13px;color:var(--muted)}
.drivers{display:grid;gap:12px;margin-bottom:22px}
.drv{display:grid;grid-template-columns:70px 1fr 48px;gap:12px;align-items:center;font-size:14px;color:var(--ink);padding:4px 6px;border-radius:8px;transition:background .3s}
.drv b{font-family:var(--mono);font-weight:400;font-size:13px;text-align:right}
.track{position:relative;height:10px;background:var(--sunk);border-radius:6px;overflow:hidden}
.track i{position:absolute;top:0;bottom:0;left:0;width:var(--w);border-radius:6px;transform:scaleX(0);transform-origin:left;transition:transform .8s var(--ease)}
.track i.neg{background:var(--loss-fill)}
.track i.pos{background:var(--gain-fill)}
.drv:nth-child(2) .track i{transition-delay:.15s}.drv:nth-child(3) .track i{transition-delay:.3s}.drv:nth-child(4) .track i{transition-delay:.45s}
.btn-copy{opacity:0;transition:opacity .4s}
.v3-drawer{border:1px solid var(--rule);border-radius:12px;padding:16px 18px;background:var(--surface);opacity:0;transform:translateX(24px);transition:opacity .5s var(--ease),transform .5s var(--ease)}
.v3-drawer-h{font-size:13px;color:var(--accent-2);margin-bottom:8px;font-weight:400}
.v3-line{display:grid;grid-template-columns:1fr auto;gap:2px 10px;padding:9px 0;border-bottom:1px solid var(--rule);font-size:13px;color:var(--ink)}
.v3-line em{grid-row:2;font-style:normal;font-size:12px;color:var(--muted)}
.v3-line b{grid-row:1/3;grid-column:2;align-self:center;font-family:var(--mono);font-weight:400;color:var(--bad)}
.v3-more{display:block;color:var(--muted);border-bottom:0}
.v3-src{font-family:var(--mono);font-size:11px;color:var(--muted);margin-top:6px}
.v3-scene[data-role="treasury"] .v3-side{position:static}
.v3-toast{position:absolute;right:28px;bottom:20px;width:440px;z-index:4;background:var(--ink);color:#fff;font-size:13px;line-height:1.45;padding:12px 14px;border-radius:10px;opacity:0;transform:translateY(10px);transition:opacity .4s,transform .4s var(--ease)}

.v3-scene.s1 .v3-count{opacity:1}
.v3-scene.s2 .track i{transform:scaleX(1)}
.v3-scene.s2 .btn-copy{opacity:1}
.v3-scene.s3 .drv-timing{background:var(--bad-soft)}
.v3-scene.s3 .v3-drawer{opacity:1;transform:none}
.v3-scene.s4 .v3-toast{opacity:1;transform:none}

/* Fund manager: coverage */
.cov{width:100%;height:auto;overflow:visible}
.cov .band{fill:var(--good-soft);opacity:0;transition:opacity .6s}
.cov .axis{font-family:var(--mono);font-size:11px;fill:var(--muted)}
.cov .roll{stroke:var(--rule);stroke-dasharray:4 4}
.cline{fill:none;stroke:var(--accent);stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset 2.4s cubic-bezier(.4,0,.2,1)}
.cline-bad{stroke:var(--bad)}
.cline-fix{fill:none;stroke:var(--good);stroke-width:2.5;stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset 1.2s var(--ease)}
.cdot{fill:var(--bad);opacity:0;transition:opacity .3s 2.3s}
.v3-scene.s1 .band{opacity:1}
.v3-scene.s2 .cline{stroke-dashoffset:0}
.v3-scene.s2 .cdot{opacity:1}
.v3-scene.s3 .v3-alert{opacity:1;transform:none}
.v3-scene.s4 .cline-fix{stroke-dashoffset:0}
.v3-scene.s4 .cdot{fill:var(--good)}
.v3-scene.s4 .v3-topup{opacity:1;transform:none}
.v3-alert{border-color:#ecc9bd;background:#fcf6f3}
.v3-alert small{color:var(--bad)}
.v3-topup small{color:var(--good)}

/* cursor */
.v3-cursor{position:absolute;left:0;top:0;z-index:6;display:flex;align-items:flex-start;gap:4px;pointer-events:none;opacity:0;transform:translate(70%,70%);transition:transform 1.1s cubic-bezier(.45,.05,.25,1),opacity .4s}
.v3-cursor.is-on{opacity:1}
.v3-cursor-label{margin-top:14px;background:var(--ink);color:#fff;font-size:11px;padding:3px 8px;border-radius:999px;white-space:nowrap}
.v3-cursor svg{filter:drop-shadow(0 2px 3px rgba(0,0,0,.18))}
.v3-cursor::before{content:"";position:absolute;left:-10px;top:-10px;width:22px;height:22px;border-radius:50%;border:2px solid var(--accent-2);opacity:0;transform:scale(.4)}
.v3-cursor.is-click::before{animation:v3click .5s ease-out}
@keyframes v3click{0%{opacity:.9;transform:scale(.4)}100%{opacity:0;transform:scale(1.6)}}

/* company field */
.v3-or{display:flex;gap:10px;align-items:center;justify-content:center;flex-wrap:wrap;margin-top:34px;color:var(--muted);font-size:15px}
.v3-input{font:inherit;font-size:15px;padding:11px 16px;border-radius:999px;border:1px solid var(--rule);background:var(--surface);color:var(--ink);min-width:240px}
.v3-input:focus{outline:2px solid var(--accent-2);outline-offset:1px}

.v3-next{padding:60px 0 120px;text-align:center;color:var(--muted);font-size:14px}

@media (prefers-reduced-motion: reduce){
  .v3 *{transition:none!important;animation:none!important}
  .v3-cursor{display:none}
}
@media (max-width:900px){
  .v3-wrap{padding:0 var(--gut,32px)}
  .v3-h1{font-size:44px}
  .v3-tabs{grid-template-columns:1fr}
  .v3-nav nav{display:none}
  .v3-window{height:auto;min-height:620px}
  .v3-scene-grid{grid-template-columns:1fr}
}

/* ---------- sections below the hero (skeleton) ---------- */
.v3-sec{padding:120px 0;border-top:1px solid #efeeeb}
.v3-sec-tint{background:#f7f7f6}
.v3-sec-ink{background:var(--ink);color:#d3d6da;border-top:0}
.v3-sec-ink .v3-h2{color:#fff}
.v3-sec-ink .v3-kicker{color:var(--ice)}
.v3-sec-ink .v3-p{color:var(--ink-muted)}
.v3-kicker{font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--accent-2);margin:0 0 14px}
.v3-h2{font-family:var(--display);font-weight:500;font-size:46px;line-height:1.08;letter-spacing:-.03em;color:var(--ink);margin:0;max-width:20ch}
.v3-h3,.v3 h3{font-family:var(--display);font-weight:500;font-size:22px;letter-spacing:-.01em;color:var(--ink);margin:6px 0 6px}
.v3-p{font-size:18px;line-height:1.55;color:var(--muted);max-width:46ch;margin:16px 0 0}
.v3-link{display:inline-block;margin-top:22px;color:var(--accent);font-size:15px;text-decoration:none;border-bottom:1px solid var(--rule)}
.v3-link:hover{border-color:var(--accent)}
.v3-split2{display:grid;grid-template-columns:1fr 1.25fr;gap:56px;align-items:center}
.v3-grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:48px}

/* placeholders: a dashed box that says what the visual will do */
.v3-ph{display:grid;place-content:center;gap:8px;text-align:center;min-height:300px;padding:24px;border:1.5px dashed #d6d8db;border-radius:16px;background:repeating-linear-gradient(135deg,transparent 0 14px,rgba(23,25,28,.025) 14px 28px)}
.v3-ph b{font-family:var(--mono);font-weight:400;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--accent-2)}
.v3-ph span{font-size:14px;line-height:1.5;color:var(--muted);max-width:42ch;margin:0 auto}
.v3-ph-sm{min-height:170px}
.v3-ph-lg{min-height:380px;background-color:var(--surface)}
.v3-dn{margin-top:28px;padding:12px 16px;border-radius:10px;background:#fff8dc;border:1px solid #efe1a6;color:#5a4a00;font-size:13px;line-height:1.5}
.v3-dn b{font-family:var(--mono);font-weight:400;font-size:11px;letter-spacing:.14em;text-transform:uppercase;margin-right:8px}
.v3-dn-ink{background:#24272b;border-color:var(--ink-rule);color:#d9c98a}

/* proof */
.v3-proofbar{display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap;padding:0 0 56px;margin-bottom:64px;border-bottom:1px solid var(--rule);font-size:14px;color:var(--muted)}
.v3-proofbar b{font-weight:400;color:var(--ink)}
.v3-find{display:grid;gap:10px;align-content:start;padding:18px;border-radius:18px;background:var(--surface);border:1px solid var(--rule);transition:transform .35s var(--ease),box-shadow .35s}
.v3-find:hover{transform:translateY(-4px);box-shadow:0 20px 40px -26px rgba(23,25,28,.35)}
.v3-find small{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-top:6px}
.v3-find p{margin:0;font-size:17px;line-height:1.45;color:var(--ink)}
.v3-find a{font-size:14px;color:var(--accent-2);text-decoration:none}

/* deck: each card pins and the next one slides over it */
.v3-deck{margin-top:48px;display:grid;gap:28px}
.v3-dcard{position:sticky;top:calc(96px + var(--n) * 18px);display:grid;grid-template-columns:1fr 1.3fr;gap:40px;align-items:center;padding:40px;border-radius:24px;background:var(--surface);border:1px solid var(--rule);box-shadow:0 -10px 40px -30px rgba(23,25,28,.4);min-height:420px}
.v3-dcard small{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent-2)}
.v3-dcard h3{font-size:30px;margin:10px 0}
.v3-dcard p{margin:0;font-size:17px;color:var(--muted);line-height:1.5}
.v3-dcard .v3-ph{min-height:320px}

/* stats */
.v3-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;margin-top:64px;padding-top:40px;border-top:1px solid var(--ink-rule)}
.v3-stats b{display:block;font-family:var(--display);font-weight:400;font-size:56px;letter-spacing:-.03em;color:#fff;line-height:1}
.v3-stats span{display:block;margin-top:10px;font-size:14px;color:var(--ink-muted)}

/* ladder */
.v3-ladder{list-style:none;margin:56px 0 0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:24px;counter-reset:l}
.v3-ladder li{position:relative;padding-top:28px;border-top:2px solid var(--rule)}
.v3-ladder li::before{content:"";position:absolute;left:0;top:-2px;height:2px;width:0;background:var(--accent-2);transition:width 1s var(--ease)}
.v3-ladder li:nth-child(2)::before{transition-delay:.4s}.v3-ladder li:nth-child(3)::before{transition-delay:.8s}
.is-in .v3-ladder li::before{width:100%}
.v3-ladder small{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent-2)}
.v3-ladder p{margin:0;font-size:16px;color:var(--muted);line-height:1.5}
.v3-success{display:flex;flex-wrap:wrap;gap:10px 28px;align-items:center;margin-top:40px;padding:18px 22px;border-radius:14px;background:var(--surface);border:1px solid var(--rule);font-size:15px;color:var(--ink)}
.v3-success b{font-family:var(--mono);font-weight:400;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--good)}
.v3-success span::before{content:"✓ ";color:var(--good)}

/* advisors */
.v3-people{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;margin-top:48px;padding-bottom:40px}
.v3-people figure{margin:0;display:grid;gap:14px;align-content:start}
.v3-people figure:nth-child(even){transform:translateY(32px)}
.v3-people img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:18px;filter:grayscale(1) contrast(1.02)}
.v3-people figcaption{display:grid;gap:4px}
.v3-people b{font-weight:500;color:var(--ink);font-size:16px}
.v3-people span{font-size:13px;line-height:1.45;color:var(--muted)}
.v3-people em{margin-top:6px;font-size:13px;color:var(--muted);border:1px dashed #d6d8db;border-radius:8px;padding:8px 10px}

/* security grid */
.v3-secgrid{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--rule);border-radius:18px;overflow:hidden;background:var(--surface)}
.v3-secgrid div{display:grid;gap:4px;padding:26px 22px;border-right:1px solid var(--rule);border-bottom:1px solid var(--rule)}
.v3-secgrid div:nth-child(3n){border-right:0}
.v3-secgrid div:nth-child(n+4){border-bottom:0}
.v3-secgrid b{font-weight:500;color:var(--ink)}
.v3-secgrid span{font-size:13px;color:var(--muted)}

/* cta + footer */
.v3-cta{text-align:center}
.v3-cta .v3-h2,.v3-cta .v3-p{margin-left:auto;margin-right:auto}
.v3-foot{padding:72px 0 40px;border-top:1px solid var(--rule);font-size:14px}
.v3-foot-row{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:32px}
.v3-foot-row div{display:grid;gap:10px;align-content:start}
.v3-foot-row small{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.v3-foot-row a{color:var(--ink-2);text-decoration:none}
.v3-foot-brand p{margin:12px 0 0;color:var(--muted)}
.v3-foot-legal{display:flex;justify-content:space-between;margin-top:56px;font-size:12px;color:var(--muted)}
.v3-foot-legal a{color:var(--muted)}

/* fade-up as each section arrives */
.v3-reveal > .v3-wrap{opacity:0;transform:translateY(18px);transition:opacity .8s var(--ease),transform .8s var(--ease)}
.v3-reveal.is-in > .v3-wrap{opacity:1;transform:none}

@media (prefers-reduced-motion: reduce){
  .v3-reveal > .v3-wrap{opacity:1;transform:none}
  .v3-ladder li::before{width:100%}
}
@media (max-width:900px){
  .v3-split2,.v3-grid3,.v3-ladder,.v3-stats,.v3-people,.v3-dcard,.v3-foot-row{grid-template-columns:1fr}
  .v3-h2{font-size:34px}
  .v3-dcard{position:relative;top:auto}
  .v3-people figure:nth-child(even){transform:none}
}

/* front-door homepage additions */
.v3-sec-thin{padding:44px 0}
.v3-proofbar-solo{padding:0 32px;margin:0 auto;border:0;align-items:center;font-size:13px;gap:16px 28px}
.v3-faces{display:inline-flex;align-items:center}
.v3-faces img{width:34px;height:34px;border-radius:50%;object-fit:cover;filter:grayscale(1);border:2px solid var(--bg);margin-left:-8px}
.v3-faces img:first-child{margin-left:0}
.v3-faces em{font-style:normal;margin-left:12px;font-size:13px;color:var(--muted)}
.v3-doors{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:48px}
.v3-door{display:grid;gap:10px;align-content:start;padding:18px 18px 22px;border-radius:20px;background:var(--surface);border:1px solid var(--rule);text-decoration:none;color:inherit;transition:transform .35s var(--ease),box-shadow .35s}
.v3-door:hover{transform:translateY(-6px);box-shadow:0 26px 50px -30px rgba(23,25,28,.4)}
.v3-door small{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent-2);margin-top:8px}
.v3-door h3{font-size:22px;line-height:1.2;margin:0}
.v3-door p{margin:0;font-size:15px;line-height:1.5;color:var(--muted)}
.v3-door-go{margin-top:6px;font-size:14px;color:var(--accent)}
.v3-split2-top{align-items:start}
.v3-stats-2{grid-template-columns:1fr 1fr;margin-top:0;border-top:0;padding-top:0;gap:40px 24px}
.v3-link-ink{color:#dcedf6;border-color:var(--ink-rule)}
.v3-mini-ladder{list-style:none;display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin:36px 0 0;padding:0;font-size:14px;color:var(--muted)}
.v3-mini-ladder{gap:34px}
.v3-mini-ladder li{position:relative;padding:8px 14px;border:1px solid var(--rule);border-radius:999px;background:var(--surface)}
.v3-mini-ladder li:not(:last-child)::after{content:"→";position:absolute;right:-24px;top:50%;transform:translateY(-50%);color:var(--muted)}
.v3-mini-ladder b{font-weight:500;color:var(--ink)}
@media (max-width:900px){.v3-doors{grid-template-columns:1fr}}

/* ---------- CFO page ---------- */
.v3-hero-ctas{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:26px}
.v3-ctas-left{justify-content:flex-start;align-items:center;gap:22px;margin-top:40px}
.v3-ctas-left .v3-link{margin-top:0}
.v3-btn-light{background:#fff;color:var(--ink)}
.v3-btn-light:hover{background:var(--soft)}
.v3-tabs-chapters{max-width:760px;margin:36px auto 0}
.v3-tabs-chapters .v3-tab{padding:12px 16px 18px}
.v3-tabs-chapters .v3-tab span{font-size:16px}
.v3-hero-cfo .v3-h1{font-size:60px}
.v3-move b{margin-right:2px}

/* chapter 2: market move → business choice */
.v3-trace{display:grid;gap:6px}
.v3-trace-h{display:grid;grid-template-columns:230px 1fr;gap:70px;font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);padding:0 0 6px;opacity:0;transition:opacity .4s}
.v3-trow{display:grid;grid-template-columns:230px 70px 1fr;align-items:center;border-radius:10px;padding:3px 6px;transition:background .4s}
.v3-chip{justify-self:start;font-size:13px;color:var(--ink);background:var(--bad-soft);border-radius:999px;padding:6px 12px;opacity:0;transform:translateX(-10px);transition:opacity .4s,transform .4s var(--ease)}
.v3-chip b{font-family:var(--mono);font-weight:400;color:var(--bad)}
.v3-wire{height:1.5px;background:var(--accent-2);transform:scaleX(0);transform-origin:left;transition:transform .5s var(--ease)}
.v3-choice{font-size:14px;color:var(--ink);background:var(--surface);border:1px solid var(--rule);border-radius:10px;padding:7px 12px;opacity:0;transform:translateX(10px);transition:opacity .4s,transform .4s var(--ease)}
.v3-trow:nth-child(3) *{transition-delay:.25s}.v3-trow:nth-child(4) *{transition-delay:.5s}.v3-trow:nth-child(5) *{transition-delay:.75s}.v3-trow:nth-child(6) *{transition-delay:1s}
.v3-scene.s1 .v3-trace-h{opacity:1}
.v3-scene.s2 .v3-chip,.v3-scene.s2 .v3-choice{opacity:1;transform:none}
.v3-scene.s2 .v3-wire{transform:scaleX(1)}
.v3-scene.s3 .t1{background:var(--soft)}
.v3-scene.s3 .t1 .v3-choice{border-color:var(--accent-2)}

/* chapter 3: actions with a number, an owner, a date */
.v3-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.v3-act p{font-size:16px}
.v3-act small{color:var(--accent-2)}
.v3-act .v3-meta{flex-wrap:wrap;gap:6px 14px}
.v3-act .v3-meta b{font-family:var(--mono);font-weight:400;color:var(--good)}
.a2{transition-delay:.35s!important}.a3{transition-delay:.7s!important}
.btn-board{margin-top:22px;opacity:0;transition:opacity .4s 1s}
.v3-toast-c{position:absolute;left:28px;right:auto;bottom:24px;width:auto;max-width:520px}
.v3-scene.s1 .v3-act{opacity:1;transform:none}
.v3-scene.s1 .btn-board{opacity:1}
.v3-scene.s2 .v3-toast-c{opacity:1;transform:none}
.v3-scene[data-role="c3"] .v3-toast-c{left:auto;right:28px}

/* sections */
.v3-rooms{display:grid;grid-template-columns:repeat(3,1fr);gap:28px;margin-top:48px}
.v3-room{display:grid;gap:8px;align-content:start}
.v3-room h3{margin-top:12px}
.v3-room p{margin:0;font-size:16px;line-height:1.5;color:var(--muted)}
.v3-quote{font-family:var(--display);font-weight:400;font-size:32px;line-height:1.25;letter-spacing:-.02em;color:var(--ink);margin:0}
.v3-quote-ph{margin:22px 0 0;font-size:14px;color:var(--muted);border:1px dashed #d6d8db;border-radius:10px;padding:12px 14px;font-style:italic}
#sits .v3-ph-lg{margin-top:44px}
.v3-ladder-ink li{border-top-color:var(--ink-rule)}
.v3-ladder-ink h3{color:#fff}
.v3-ladder-ink p{color:var(--ink-muted)}
.v3-ladder-ink small{color:var(--ice)}
@media (max-width:900px){.v3-actions,.v3-rooms{grid-template-columns:1fr}.v3-trow{grid-template-columns:1fr}.v3-wire{display:none}}
.v3-nav nav a[aria-current]{color:var(--ink);font-weight:400}

/* ---------- homepage: trust bar + the three role doors (from the chooser
   draft). Hover animations are CSS-only; reduced motion shows end states. ---------- */
.ch-eyebrow{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:0 0 20px}
.ch-eyebrow i{width:6px;height:6px;border-radius:50%;background:var(--ice)}

/* the three doors */
.ch-doors{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;text-align:left}
.ch-door{position:relative;display:grid;grid-template-rows:auto auto 1fr auto;gap:14px;padding:22px 22px 20px;border-radius:20px;background:rgba(255,255,255,.82);border:1px solid rgba(23,25,28,.07);box-shadow:0 1px 0 rgba(23,25,28,.03);text-decoration:none;color:inherit;transition:transform .45s var(--ease),box-shadow .45s var(--ease),background .45s}
.ch-door:hover,.ch-door:focus-visible{transform:translateY(-6px);background:#fff;box-shadow:0 30px 60px -34px rgba(23,25,28,.38)}
.ch-door:focus-visible{outline:2px solid var(--accent-2);outline-offset:3px}
.ch-role{font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--accent-2)}
.ch-q{margin:0;font-size:21px;line-height:1.3;letter-spacing:-.015em;color:var(--ink);font-weight:500}
.ch-q em{display:block;font-style:normal;font-weight:400;font-size:13px;letter-spacing:0;color:var(--muted);margin-bottom:6px}
.ch-a{margin:0;font-size:15px;line-height:1.5;color:var(--ink-2)}
.ch-viz{height:156px;border-radius:12px;background:#f5f8fa;border:1px solid rgba(23,25,28,.05);overflow:hidden;position:relative}
.ch-proof{display:grid;gap:4px;padding-top:12px;border-top:1px solid var(--rule);font-size:13px;line-height:1.45;color:var(--muted)}
.ch-proof b{font-family:var(--mono);font-weight:400;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2)}
.ch-go{display:inline-flex;align-items:center;justify-content:space-between;margin-top:4px;padding:11px 16px;border-radius:999px;background:var(--ink);color:#fff;font-size:14px}
.ch-go span{transition:transform .3s var(--ease)}
.ch-door:hover .ch-go span{transform:translateX(4px)}

/* door 1: the bridge's market bar opens into where it started */
.v-bridge{position:absolute;inset:16px 18px 18px;display:grid;grid-template-columns:repeat(5,1fr);gap:10px}
.v-bridge span{position:relative}
.v-bridge i{position:absolute;left:0;right:0;border-radius:3px;transition:transform .5s var(--ease)}
.v-bridge span:nth-child(1) i{bottom:0;height:78%;background:var(--data-1)}
.v-bridge span:nth-child(2) i{bottom:78%;height:16%;background:#c9dfe9}
.v-bridge span:nth-child(3) i{bottom:86%;height:8%;background:#e3e1dc}
.v-bridge span:nth-child(4) i{bottom:58%;height:28%;background:var(--loss-fill);transform-origin:top}
.v-bridge span:nth-child(5) i{bottom:0;height:58%;background:var(--ice)}
.v-bridge span:nth-child(4) i::before,.v-bridge span:nth-child(4) i::after{content:"";position:absolute;left:0;right:0;border-radius:2px;opacity:0;transition:opacity .4s .15s}
.v-bridge span:nth-child(4) i::before{top:55%;height:25%;background:#f0ae9c}
.v-bridge span:nth-child(4) i::after{top:80%;height:20%;background:#f6cfc4}
.v-tags{position:absolute;right:14px;top:12px;display:grid;gap:4px;justify-items:end}
.v-tags span{font-family:var(--mono);font-size:11px;color:var(--bad);background:#fff;border-radius:999px;padding:2px 8px;box-shadow:0 2px 8px -4px rgba(0,0,0,.2);opacity:0;transform:translateX(8px);transition:opacity .35s,transform .35s var(--ease)}
.v-tags span:nth-child(2){transition-delay:.08s}.v-tags span:nth-child(3){transition-delay:.16s}
.ch-door:hover .v-bridge span:nth-child(4) i,.ch-door:focus-visible .v-bridge span:nth-child(4) i{transform:scaleY(1.08)}
.ch-door:hover .v-bridge span:nth-child(4) i::before,.ch-door:hover .v-bridge span:nth-child(4) i::after,
.ch-door:focus-visible .v-bridge span:nth-child(4) i::before,.ch-door:focus-visible .v-bridge span:nth-child(4) i::after{opacity:1}
.ch-door:hover .v-tags span,.ch-door:focus-visible .v-tags span{opacity:1;transform:none}
.ch-door:hover .v-bridge span:not(:nth-child(4)) i{opacity:.4}

/* door 2: one figure unfolds into the ledger lines behind it */
.v-trace{position:absolute;inset:16px 18px;display:grid;align-content:start;gap:6px}
.v-fig{font-size:30px;letter-spacing:-.02em;color:var(--ink);font-weight:500;line-height:1}
.v-fig small{font-size:12px;font-weight:400;color:var(--muted);margin-left:8px;letter-spacing:0}
.v-line{display:flex;justify-content:space-between;font-size:12px;color:var(--ink-2);background:#fff;border:1px solid rgba(23,25,28,.06);border-radius:8px;padding:4px 9px;opacity:0;transform:translateY(-6px);transition:opacity .35s,transform .35s var(--ease)}
.v-line b{font-family:var(--mono);font-weight:400;color:var(--bad)}
.v-line:nth-child(3){transition-delay:.08s}.v-line:nth-child(4){transition-delay:.16s}
.ch-door:hover .v-line,.ch-door:focus-visible .v-line{opacity:1;transform:none}

/* door 3: cover drifts below the band between rolls, then a top-up returns it */
.v-cov{position:absolute;inset:10px 12px 8px;width:calc(100% - 24px);height:calc(100% - 18px)}
.v-cov .band{fill:var(--good-soft)}
.v-cov .ln{fill:none;stroke:var(--ink-2);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:.55;transition:stroke-dashoffset 1.1s cubic-bezier(.4,0,.2,1)}
.v-cov .bad{stroke:var(--bad)}
.v-cov .fix{fill:none;stroke:var(--good);stroke-width:2.2;stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset .6s var(--ease) 1s}
.v-cov .roll{stroke:#d9dde0;stroke-dasharray:3 3}
.ch-door:hover .v-cov .ln,.ch-door:focus-visible .v-cov .ln{stroke-dashoffset:0}
.ch-door:hover .v-cov .fix,.ch-door:focus-visible .v-cov .fix{stroke-dashoffset:0}

/* neutral path + trust */
.ch-neutral{margin:26px 0 0;font-size:15px;color:var(--muted)}
.ch-neutral a{color:var(--ink);text-decoration:none;border-bottom:1px solid rgba(23,25,28,.25);padding-bottom:1px}
.ch-neutral a:hover{border-color:var(--ink)}
.ch-trust{padding:40px 0 56px;border-top:1px solid var(--rule)}
.ch-trust-row{display:flex;align-items:center;justify-content:space-between;gap:20px 36px;flex-wrap:wrap;font-size:13px;color:var(--muted)}
.ch-trust-row b{font-weight:500;color:var(--ink-2)}
.ch-faces{display:inline-flex;align-items:center;gap:12px}
.ch-faces span{display:inline-flex}
.ch-faces img{width:30px;height:30px;border-radius:50%;object-fit:cover;filter:grayscale(1);border:2px solid #fff;margin-left:-8px}
.ch-faces img:first-child{margin-left:0}

@media (prefers-reduced-motion: reduce){
  .v-tags span,.v-line{opacity:1;transform:none}
  .v-cov .ln,.v-cov .fix{stroke-dashoffset:0}
  .v-bridge span:nth-child(4) i::before,.v-bridge span:nth-child(4) i::after{opacity:1}
}
@media (max-width:900px){
  .ch-doors{grid-template-columns:1fr}
}
.v-line b.pos{color:var(--good)}
.ch-sec{padding:96px 0 104px}
.ch-sec .v3-h2{margin-bottom:40px}
.ch-sec .ch-neutral{text-align:center}
.ch-trust{padding:28px 0}
.v3-hero .ch-eyebrow{margin-bottom:18px}
.ch-trust-row{justify-content:center;gap:10px 40px}

/* ---------- Treasury page ---------- */
/* chapter 1: the same −2.9, cut by driver and by currency */
.v3-scene[data-role="t1"].s3 .drv-timing{background:transparent}
.v3-scene[data-role="t1"].s4 .drv-timing{background:var(--bad-soft)}
.v3-scene[data-role="t1"] .v3-split-h b{font-family:var(--mono);font-weight:400;color:var(--bad)}
.tr-hint{margin-top:18px;font-size:13px;color:var(--muted);opacity:0;transition:opacity .4s}
.v3-scene.s4 .tr-hint{opacity:1}

/* chapter 2: one driver, traced down to the ledger row */
.tr-chain{display:grid;grid-template-columns:repeat(4,1fr);gap:28px;margin-bottom:26px}
.tr-node{position:relative;display:grid;gap:4px;padding:12px 14px;border:1px solid var(--rule);border-radius:12px;background:var(--surface);font-size:13px;color:var(--ink);opacity:0;transform:translateY(8px);transition:opacity .4s,transform .4s var(--ease)}
.tr-node small{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.tr-node b{font-family:var(--mono);font-weight:400;color:var(--bad)}
.tr-node:not(:last-child)::after{content:"";position:absolute;left:100%;top:50%;width:28px;height:1.5px;background:var(--accent-2);transform:scaleX(0);transform-origin:left;transition:transform .35s var(--ease) .3s}
.tr-node:nth-child(2),.tr-node:nth-child(2)::after{transition-delay:.35s}
.tr-node:nth-child(3),.tr-node:nth-child(3)::after{transition-delay:.7s}
.tr-node:nth-child(4){transition-delay:1.05s}
.v3-scene.s1 .tr-node{opacity:1;transform:none}
.v3-scene.s1 .tr-node::after{transform:scaleX(1)}
.tr-node-on{border-color:var(--accent-2);background:var(--soft)}
.tr-body{display:grid;grid-template-columns:1.35fr 1fr;gap:28px}
.tr-lines{opacity:0;transform:translateY(10px);transition:opacity .5s,transform .5s var(--ease)}
.v3-scene.s2 .tr-lines{opacity:1;transform:none}
.tr-lines .v3-line{border-radius:8px;padding-left:8px;padding-right:8px;transition:background .3s}
.v3-scene.s3 .tr-l1{background:var(--bad-soft)}
.tr-find{opacity:0;transform:translateX(16px);transition:opacity .5s,transform .5s var(--ease)}
.v3-scene.s3 .tr-find{opacity:1;transform:none}

/* chapter 3: cover against the policy band, then the trade that fixes it */
.tr-cover{display:grid;gap:16px}
.tr-axis,.tr-row{display:grid;grid-template-columns:150px 1fr 54px;gap:14px;align-items:center}
.tr-axis{font-family:var(--mono);font-size:11px;color:var(--muted)}
.tr-axis span:nth-child(2){position:relative;height:12px}
.tr-axis i{position:absolute;top:0;font-style:normal;transform:translateX(-50%)}
.tr-row{font-size:14px;color:var(--ink);padding:6px 8px;margin:0 -8px;border-radius:10px;transition:background .4s}
.tr-row em{font-style:normal;font-size:12px;color:var(--muted);display:block}
.tr-row b{font-family:var(--mono);font-weight:400;font-size:13px;text-align:right}
.tr-track{position:relative;height:14px;background:var(--sunk);border-radius:7px;overflow:hidden}
.tr-band{position:absolute;top:0;bottom:0;left:60%;width:30%;background:var(--good-soft);border-left:1.5px solid #a8dccd;border-right:1.5px solid #a8dccd}
.tr-fill{position:absolute;top:3px;bottom:3px;left:0;width:var(--w);border-radius:5px;background:var(--data-1);transform:scaleX(0);transform-origin:left;transition:transform .8s var(--ease),width .9s var(--ease)}
.tr-row:nth-child(3) .tr-fill{transition-delay:.15s}.tr-row:nth-child(4) .tr-fill{transition-delay:.3s}
.v3-scene.s1 .tr-fill{transform:scaleX(1)}
.tr-eur .tr-fill{background:var(--loss-fill)}
.tr-eur b{color:var(--bad);transition:color .4s}
.v3-scene.s2 .tr-eur{background:var(--bad-soft)}
.tr-flag{opacity:0;transition:opacity .4s}
.v3-scene.s2 .tr-flag{opacity:1}
.v3-scene.s3 .tr-eur .tr-fill{--w:var(--w2,75%)!important;background:var(--gain-fill)}
.v3-scene.s3 .tr-eur{background:transparent}
.v3-scene.s3 .tr-eur b{color:var(--good)}
.btn-prep{margin-top:22px;opacity:0;transition:opacity .4s}
.v3-scene.s2 .btn-prep{opacity:1}
.tr-trade{opacity:0;transform:translateX(16px);transition:opacity .5s,transform .5s var(--ease)}
.v3-scene.s3 .tr-trade{opacity:1;transform:none}
.tr-trade .v3-meta b{font-family:var(--mono);font-weight:400;color:var(--ink)}
.btn-cfo{margin-top:4px}
.v3-scene[data-role="t3"] .v3-toast{left:28px;right:auto;width:auto;max-width:560px}

/* sections */
.tr-facts{display:grid;grid-template-columns:repeat(3,1fr);gap:28px;margin-top:40px}
.tr-facts div{display:grid;gap:6px;padding-top:18px;border-top:2px solid var(--rule)}
.tr-facts b{font-weight:500;font-size:18px;color:var(--ink)}
.tr-facts span{font-size:15px;line-height:1.5;color:var(--muted)}
.tr-secline{display:flex;flex-wrap:wrap;gap:8px 22px;align-items:center;margin-top:36px;padding:16px 20px;border-radius:14px;background:var(--surface);border:1px solid var(--rule);font-size:14px;color:var(--ink-2)}
.tr-secline a{margin-left:auto;color:var(--accent-2);text-decoration:none}
.v3-sec-ink .v3-success{background:#202327;border-color:var(--ink-rule);color:#e4e6e8}
.v3-sec-ink .v3-success b{color:var(--good)}
.v3-sec-ink .v3-success span::before{color:var(--good)}
@media (max-width:900px){.tr-chain,.tr-body,.tr-facts{grid-template-columns:1fr}.tr-node::after{display:none}}
.tr-chain{margin-bottom:18px}
.tr-node{padding:10px 14px}
.tr-now{display:none}
.v3-scene.s3 .tr-now{display:inline}
.v3-scene.s3 .tr-was,.v3-scene.s3 .tr-flag{display:none}
.v3-scene[data-role="t3"] .v3-toast{left:auto;right:28px;bottom:24px;width:520px;max-width:none}
@media (prefers-reduced-motion: reduce){.tr-node::after{transition:none!important}}

/* ---------- homepage hero, planet option (/home-v3-orbit) ---------- */
.op{position:relative;height:500px;margin:44px auto 0;max-width:1116px;text-align:left}
.op .orbit-hero{--orbit-ink:61 126 158;--orbit-faint:142 200 224;--orbit-bg:#f1f8fb;left:50%;top:0;transform:translateX(-50%)}
.op-wires{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}
.op-wire{fill:none;stroke:rgba(61,126,158,.28);stroke-width:1;stroke-dasharray:3 4}
.op-hot{stroke:var(--accent-2);stroke-width:1.6;stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset .9s var(--ease)}
.op-hot.is-on{stroke-dashoffset:0}
.op-out{stroke:var(--accent-2);stroke-dasharray:none;opacity:0;transition:opacity .5s .2s}
.op.is-drv .op-out{opacity:.6}
.op-cap{font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin:0 0 10px}
.op-books{position:absolute;left:0;top:34px;width:300px;display:grid;gap:10px}
.op-card{background:rgba(255,255,255,.92);border:1px solid rgba(23,25,28,.07);border-radius:14px;padding:12px 14px;box-shadow:0 14px 30px -24px rgba(23,25,28,.35);opacity:0;translate:-16px 0;transition:opacity .6s var(--ease),translate .6s var(--ease)}
.op-books .op-card:nth-child(3){transition-delay:.18s}.op-books .op-card:nth-child(4){transition-delay:.36s}
.op.is-in .op-card{opacity:1;translate:0 0}
.op-card h4{margin:0 0 6px;display:flex;justify-content:space-between;font-family:var(--mono);font-weight:400;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.op-row{display:flex;justify-content:space-between;gap:10px;font-size:13px;color:var(--ink-2);padding:5px 8px;margin:0 -8px;border-radius:8px;transition:background .4s,color .4s}
.op-row b{font-family:var(--mono);font-weight:400;font-size:12px;color:var(--ink)}
.op-row.is-on{background:var(--soft);color:var(--ink)}
.op-row.is-on b{color:var(--accent-2)}
.op-answer{position:absolute;right:0;top:118px;width:300px;padding:18px 18px 12px;background:#fff;border-radius:16px;border:1px solid rgba(23,25,28,.06);box-shadow:0 30px 60px -34px rgba(23,25,28,.4);opacity:0;translate:16px 0;transition:opacity .6s var(--ease) 1.2s,translate .6s var(--ease) 1.2s}
.op.is-in .op-answer{opacity:1;translate:0 0}
.op-answer h4{margin:0;font-family:var(--mono);font-weight:400;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.op-total{display:flex;align-items:baseline;gap:10px;margin:8px 0 12px}
.op-count{font-size:44px;font-weight:500;letter-spacing:-.03em;color:var(--ink);line-height:1}
.op-total small{font-size:12px;color:var(--muted)}
.op-drv{display:grid;grid-template-columns:62px 1fr 40px;gap:10px;align-items:center;font-size:13px;color:var(--ink-2);padding:6px 8px;margin:0 -8px;border-radius:8px;cursor:default;transition:background .4s}
.op-drv b{font-family:var(--mono);font-weight:400;font-size:12px;text-align:right;color:var(--bad)}
.op-drv b.pos{color:var(--good)}
.op-drv .track{height:8px}
.op-drv.is-on{background:var(--soft)}
.op-drv .track i{transition:transform .8s var(--ease)}
.op.is-drv .op-drv .track i{transform:scaleX(1)}
.op-drv:nth-child(4) .track i{transition-delay:.12s}.op-drv:nth-child(5) .track i{transition-delay:.24s}.op-drv:nth-child(6) .track i{transition-delay:.36s}
.op-why{margin:10px 0 0;padding-top:10px;border-top:1px solid var(--rule);font-size:12px;color:var(--muted)}
.op-why b{font-weight:500;color:var(--accent-2)}
@media (prefers-reduced-motion: reduce){.op-card,.op-answer{transition:none!important}}
@media (max-width:1100px){.op{height:auto;display:grid;gap:16px}.op .orbit-hero,.op-wires{display:none}.op-books,.op-answer{position:static;width:auto}}

/* ---------- numbered problem strip (Primer-style): one card open, the rest
   folded to a numbered pill. Advances on its own; hover holds, click opens. */
.v3-pill{display:inline-block;font-size:13px;color:var(--ink-2);border:1px solid rgba(23,25,28,.25);border-radius:999px;padding:4px 12px;margin:0 0 18px}
.v3-center{text-align:center}
.v3-center .v3-h2,.v3-center .v3-p{margin-left:auto;margin-right:auto}
.pb{display:flex;gap:14px;height:400px;margin-top:52px}
.pb-item{position:relative;flex:0 0 112px;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:22px;padding:28px 18px;border:0;border-radius:28px;background:var(--sunk);color:var(--ink);font:inherit;text-align:center;cursor:pointer;overflow:hidden;transition:flex-basis .7s var(--ease),flex-grow .7s var(--ease),background .5s}
.pb-item:hover{background:#eaecee}
.pb-item:focus-visible{outline:2px solid var(--accent-2);outline-offset:3px}
.pb-n{flex:none;display:grid;place-items:center;width:72px;height:72px;border-radius:50%;background:#fff;font-size:24px;font-weight:500;letter-spacing:-.02em;color:var(--ink-2);transition:background .5s,color .5s}
.pb-body{display:grid;gap:12px;max-width:34ch;opacity:0;transform:translateY(10px);transition:opacity .4s,transform .5s var(--ease);position:absolute;left:0;right:0;margin:0 auto;bottom:-200px}
.pb-body b{font-size:36px;line-height:1.12;font-weight:500;letter-spacing:-.03em;color:#fff}
.pb-body span{font-size:16px;line-height:1.5;color:var(--ink-muted)}
.pb-item[aria-expanded="true"]{flex:1 1 auto;background:var(--ink);justify-content:center;cursor:default}
.pb-item[aria-expanded="true"] .pb-n{background:var(--ice);color:var(--ink)}
.pb-item[aria-expanded="true"] .pb-body{position:static;opacity:1;transform:none;transition:opacity .5s .3s,transform .6s var(--ease) .3s}
@media (prefers-reduced-motion: reduce){.pb-item,.pb-body{transition:none!important}}
@media (max-width:900px){.pb{flex-direction:column;height:auto}.pb-item{flex:none;justify-content:center;padding:18px}.pb-item[aria-expanded="true"]{padding:32px 22px}.pb-body b{font-size:26px}}
.v3-center .v3-h2{max-width:26ch}

/* Headlines a step heavier (Primer-style test, 2026-10-08): SemiBold with
   slightly looser tracking, so the heavier strokes don't collide. */
.v3-h1{font-weight:600;letter-spacing:-.027em}
.v3-h2{font-weight:600;letter-spacing:-.024em}
.v3-h3,.v3 h3{font-weight:600}
.pb-body b{font-weight:600}

/* ---------- full-width hero test (/home-v3-wide): one big planet bleeding off
   the left edge, the headline left-aligned and indented to its right rim
   (after front.com). Sizes are tied to the planet's radius --r. ---------- */
.wh{--r:min(37.6vh,23.2vw);--px:2vw;--py:52%;position:relative;overflow:hidden;min-height:max(680px,calc(100vh - 68px));display:flex;align-items:center;background:#fff}
.wh-planet{position:absolute;width:calc(var(--r) * 6.5333);height:calc(var(--r) * 3.1333);left:calc(var(--px) - var(--r) * 3.2667);top:calc(var(--py) - var(--r) * 1.64);
  --orbit-ink:23 25 28;--orbit-faint:23 25 28;--orbit-bg:#fff;--planet-fill:#ffffff;--planet-fill-2:#e9ebed;--planet-stroke:.55;pointer-events:none}
.wh-planet .planet-label{font-family:var(--mono);font-size:5.5px;letter-spacing:.06em;fill:rgba(23,25,28,.55)}
.wh-planet .planet-sat{fill:var(--ink);font-size:6px}
.wh-planet .planet-tech{opacity:0;animation:wh-fade 1.2s var(--ease) 2.2s forwards}
@keyframes wh-fade{to{opacity:1}}
@media (prefers-reduced-motion: reduce){.wh-planet .planet-tech{animation:none;opacity:1}}
.wh-planet > svg{position:absolute;inset:0;width:100%;height:100%;display:block}
.wh-text{position:relative;z-index:2;isolation:isolate;margin-left:calc(var(--px) + var(--r) + 7vw);max-width:min(780px,calc(100vw - var(--px) - var(--r) - 12vw));padding:40px 0}
.wh-h1{font-family:var(--display);font-weight:600;font-size:clamp(56px,5.7vw,94px);line-height:1.0;letter-spacing:-.03em;color:var(--ink);margin:0}
.wh-h1 span{color:var(--accent-2)}
.wh-lede{font-size:clamp(18px,1.45vw,22px);line-height:1.5;color:var(--ink-2);max-width:38ch;margin:28px 0 0}
.wh .v3-or{justify-content:flex-start;margin-top:34px}
.wh .v3-note{margin:14px 0 0}
@media (max-width:900px){.wh{--r:70vw;--px:0vw;--py:24%;align-items:flex-end}.wh-text{margin:0;padding:0 24px 48px;max-width:none}}
.v3-wrap-full{max-width:none;padding:0 clamp(24px,3.4vw,56px)}

.wh-text::before{content:"";position:absolute;z-index:-1;left:50%;top:50%;width:135%;height:150%;transform:translate(-50%,-50%);pointer-events:none;
  background:radial-gradient(closest-side,rgba(142,200,224,.55),rgba(190,224,238,.32) 45%,rgba(220,237,246,0) 100%);filter:blur(8px)}
.wh-planet .planet-sat{stroke:#fff;stroke-width:2.5px;paint-order:stroke;stroke-linejoin:round}

/* ======================================================================
   Treasury page v3, round 2 (attribution argument). Prefix tq-.
   ====================================================================== */
/* hero ch1: one total opened level by level */
.tq-tree{display:grid;gap:8px;max-width:760px}
.tq-node{display:grid;grid-template-columns:110px 1fr auto;align-items:center;gap:14px;padding:10px 14px;border:1px solid var(--rule);border-radius:12px;background:var(--surface);font-size:15px;color:var(--ink);opacity:0;transform:translateY(8px);transition:opacity .5s var(--ease),transform .5s var(--ease),border-color .4s,background .4s}
.tq-node small{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.tq-node b{font-family:var(--mono);font-weight:400;font-size:14px;color:var(--bad)}
.tq-l1{margin-left:28px}.tq-l2{margin-left:56px}.tq-l3{margin-left:84px}
.tq-rows{margin-left:112px;display:grid;gap:2px;opacity:0;transition:opacity .5s .2s}
.tq-rows div{display:flex;justify-content:space-between;font-size:13px;color:var(--ink-2);padding:4px 14px}
.tq-rows b{font-family:var(--mono);font-weight:400;color:var(--bad)}
.tq-rows .tq-more{color:var(--muted);font-family:var(--mono);font-size:11px}
.tq-why{margin:10px 0 0;font-size:14px;color:var(--ink);opacity:0;transition:opacity .5s .4s}
.tq-why b{font-family:var(--mono);font-weight:400;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--accent-2);margin-right:10px}
.v3-scene.s1 .tq-l0,.v3-scene.s2 .tq-l1,.v3-scene.s3 .tq-l2,.v3-scene.s4 .tq-l3{opacity:1;transform:none}
.v3-scene.s2 .tq-l0,.v3-scene.s3 .tq-l1,.v3-scene.s4 .tq-l2{opacity:1;transform:none;border-color:transparent;background:transparent}
.v3-scene.s3 .tq-l0,.v3-scene.s4 .tq-l0,.v3-scene.s4 .tq-l1{opacity:1;transform:none;border-color:transparent;background:transparent}
.v3-scene.s4 .tq-l3{border-color:var(--accent-2);background:var(--soft)}
.v3-scene.s4 .tq-rows,.v3-scene.s4 .tq-why{opacity:1}

/* hero ch2: market vs business */
.tq-split{max-width:880px}
.tq-bar{position:relative;display:flex;height:64px;border-radius:12px;overflow:hidden;background:var(--sunk);margin-top:10px}
.tq-bar i{position:relative;display:flex;align-items:center;padding:0 16px;font-style:normal;white-space:nowrap;overflow:hidden;transition:width .9s var(--ease),opacity .4s}
.tq-bar i span{font-size:14px;color:#fff}
.tq-bar i b{font-family:var(--mono);font-weight:400;margin-left:6px}
.tq-mkt{background:var(--data-1);width:0}
.tq-biz{background:var(--accent-2);width:0}
.tq-whole{position:absolute;inset:0;display:flex;align-items:center;padding:0 18px;font-style:normal;font-family:var(--mono);font-size:22px;color:#fff;background:var(--loss-fill);transform:scaleX(0);transform-origin:left;transition:transform .7s var(--ease),opacity .4s}
.tq-scale{display:flex;justify-content:space-between;margin-top:10px;font-size:12px;color:var(--muted);opacity:0;transition:opacity .4s}
.tq-parts{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:8px;margin-top:22px}
.tq-chip{font-size:13px;color:var(--ink);background:var(--surface);border:1px solid var(--rule);border-radius:999px;padding:6px 12px;opacity:0;transform:translateY(8px);transition:opacity .4s,transform .4s var(--ease)}
.tq-chip b{font-family:var(--mono);font-weight:400;color:var(--bad);margin-left:4px}
.tq-chip.tq-pos b{color:var(--good)}
.tq-chip:nth-child(2){transition-delay:.15s}.tq-chip:nth-child(3){transition-delay:.3s}
.v3-scene.s1 .tq-whole{transform:scaleX(1)}
.v3-scene.s2 .tq-whole{opacity:0}
.v3-scene.s2 .tq-mkt{width:66%}.v3-scene.s2 .tq-biz{width:34%}
.v3-scene.s2 .tq-scale{opacity:1}
.v3-scene.s3 .tq-chip{opacity:1;transform:none}
.v3-scene.s3 .tq-biz{box-shadow:inset 0 0 0 3px #fff}
.v3-scene.s4 .tq-why{opacity:1}
.tq-split .tq-why{margin-top:26px}

/* proof line */
.tq-proof{border-top:1px solid #efeeeb;padding:26px 0;text-align:center}
.tq-proof p{margin:0;font-size:15px;color:var(--ink-2)}
.tq-proof b{font-family:var(--mono);font-weight:400;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-right:12px}

/* problem strip with visuals */
.pb-viz .pb-body{gap:20px}
.pbv{position:relative;display:block;width:300px;height:150px;margin:0 auto}
.pbv-pour .pbv-box{position:absolute;right:20px;top:35px;width:80px;height:80px;border:1.5px solid rgba(255,255,255,.5);border-radius:10px}
.pbv-pour .d{position:absolute;left:0;top:0;width:6px;height:6px;border-radius:50%;background:#a7abb1;transform:translate(var(--sx),var(--sy));transition:transform 1.4s cubic-bezier(.5,0,.2,1) var(--dl),background .4s var(--dl)}
.pb-item[aria-expanded="true"] .pbv-pour .d{transform:translate(var(--ex),var(--ey));background:var(--ice)}
.pbv-total{display:grid;place-content:center;gap:6px;text-align:center}
.pbv-total small{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-muted)}
.pbv-total strong{font-family:var(--mono);font-weight:400;font-size:56px;line-height:1;color:#fff}
.pbv-total em{justify-self:center;font-style:normal;font-size:12px;color:var(--good);border:1px solid #a8dccd;border-radius:999px;padding:3px 10px}
.pbv-sheet .pbv-grid{position:absolute;left:30px;right:30px;top:34px;bottom:26px;display:grid;grid-template-columns:repeat(8,1fr);grid-auto-rows:1fr;gap:3px}
.pbv-sheet .pbv-grid i{background:rgba(255,255,255,.07);border-radius:2px;transition:background .3s}
.pbv-sheet .pbv-grid i.on{background:rgba(142,200,224,.55)}
.pbv-why{position:absolute;left:50%;top:0;transform:translateX(-50%);font-style:normal;font-size:12px;color:#fff;background:var(--loss-fill);border-radius:999px;padding:3px 10px}
.pbv-day{position:absolute;right:30px;bottom:0;font-family:var(--mono);font-size:11px;color:var(--ink-muted)}
.pb-viz .pb-body b{font-size:30px}
.pb-viz .pb-item[aria-expanded="true"]{justify-content:center}

/* hidden gap */
.tq-reveal{margin-top:30px}
.tq-gap{display:grid;gap:18px}
.tq-grow{display:grid;grid-template-columns:110px 1fr 48px;gap:14px;align-items:center;font-size:14px;color:var(--ink)}
.tq-grow > b{font-family:var(--mono);font-weight:400;text-align:right}
.tq-glab{color:var(--muted);font-size:13px}
.tq-gtrack{display:flex;height:44px;border-radius:10px;overflow:hidden;background:var(--sunk)}
.tq-gtrack i{display:flex;align-items:center;padding:0 12px;font-style:normal;font-size:13px;white-space:nowrap;overflow:hidden;width:var(--w)}
.tq-hedged{background:var(--data-1);color:#fff}
.tq-open{background:repeating-linear-gradient(135deg,#fbe5de 0 8px,#f6cfc4 8px 16px);color:var(--bad)}
.tq-all,.tq-why2,.tq-noise{opacity:0;transform:translateY(10px);transition:opacity .6s var(--ease),transform .6s var(--ease)}
.tq-all .tq-open{transform:scaleX(0);transform-origin:left;transition:transform .9s var(--ease) .3s}
.tq-why2{display:grid;gap:6px;margin-left:124px;font-size:13px;color:var(--ink-2)}
.tq-why2 span{display:flex;align-items:center;gap:8px}
.tq-why2 b{font-family:var(--mono);font-weight:400;color:var(--bad)}
.tq-sw1,.tq-sw2{width:10px;height:10px;border-radius:3px;background:#f6cfc4}.tq-sw2{background:#f0b6a6}
.tq-noise{margin-left:124px}
.tq-noise small{font-size:12px;color:var(--muted)}
.tq-noise small em{font-style:normal;font-family:var(--mono);font-size:11px}
.tq-nbars{display:flex;align-items:flex-start;gap:26px;height:110px;margin-top:10px;border-top:1px solid var(--rule);padding-top:0}
.tq-nbars span{position:relative;width:56px;height:100%}
.tq-nbars span::before{content:"";position:absolute;left:0;right:0;top:0;height:var(--h);background:var(--loss-fill);border-radius:0 0 4px 4px;transform:scaleY(0);transform-origin:top;transition:transform .7s var(--ease) .9s}
.tq-nbars b{position:absolute;left:0;right:0;top:calc(var(--h) + 4px);text-align:center;font-family:var(--mono);font-weight:400;font-size:12px;color:var(--bad);opacity:0;transition:opacity .4s 1.4s}
.tq-nbars em{position:absolute;left:0;right:0;bottom:-20px;text-align:center;font-style:normal;font-size:12px;color:var(--muted)}
.tq-gap.is-open .tq-all,.tq-gap.is-open .tq-why2,.tq-gap.is-open .tq-noise{opacity:1;transform:none}
.tq-gap.is-open .tq-all .tq-open{transform:none}
.tq-gap.is-open .tq-nbars span::before{transform:none}
.tq-gap.is-open .tq-nbars b{opacity:1}
.tq-gap .v3-note{margin:22px 0 0 124px}

/* worked example */
.tq-ex{margin-top:40px}
.tq-ex-head{display:flex;gap:4px;margin-bottom:8px}
.tq-ex-head span{width:var(--w);font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);padding:0 0 6px;border-bottom:1.5px solid var(--rule)}
.tq-ex-mk{border-color:var(--ink-2)!important;color:var(--ink-2)!important}
.tq-ex-bz{border-color:var(--accent-2)!important;color:var(--accent-2)!important}
.tq-ex-bar{display:flex;gap:4px;height:86px}
.tq-ex-part{width:var(--w);display:flex;flex-direction:column;justify-content:space-between;align-items:flex-start;padding:12px 14px;border:0;border-radius:12px;background:#f6cfc4;color:var(--ink);font:inherit;text-align:left;cursor:pointer;transition:transform .35s var(--ease),background .35s,box-shadow .35s;min-width:0}
.tq-ex-part span{font-size:14px;white-space:nowrap}
.tq-ex-part b{font-family:var(--mono);font-weight:400;font-size:18px;color:var(--bad)}
.tq-ex-part.tq-pos{background:var(--gain-fill-2)}.tq-ex-part.tq-pos b{color:var(--good)}
.tq-ex-part:hover{background:#f1bfb1}.tq-ex-part.tq-pos:hover{background:#b3e1d4}
.tq-ex-part[aria-selected="true"]{transform:translateY(-8px);background:var(--loss-fill);box-shadow:0 18px 30px -20px rgba(224,122,106,.8)}
.tq-ex-part[aria-selected="true"] span,.tq-ex-part[aria-selected="true"] b{color:#fff}
.tq-ex-part.tq-pos[aria-selected="true"]{background:var(--gain-fill);box-shadow:0 18px 30px -20px rgba(66,168,143,.8)}
.tq-ex-part:focus-visible{outline:2px solid var(--accent-2);outline-offset:3px}
.tq-ex-sum{margin:18px 0 0;font-family:var(--mono);font-size:14px;color:var(--muted)}
.tq-ex-sum b{font-weight:400;color:var(--ink)}
.tq-ex-sum span{font-family:var(--sans);font-size:12px;margin-left:10px}
.tq-ex-src{margin-top:26px;min-height:190px}
.tq-ex-panel{max-width:720px;padding:20px 22px;border:1px solid var(--rule);border-radius:16px;background:var(--surface);box-shadow:0 20px 40px -32px rgba(23,25,28,.4);animation:tq-in .45s var(--ease)}
.tq-ex-panel h3{font-size:17px;margin:0 0 10px}
.tq-row{display:flex;justify-content:space-between;gap:16px;padding:9px 0;border-top:1px solid var(--rule);font-size:14px;color:var(--ink-2)}
.tq-row b{font-family:var(--mono);font-weight:400;color:var(--bad)}
.tq-row b.tq-g{color:var(--good)}
@keyframes tq-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* the fix */
.tq-fix{display:grid;grid-template-columns:1fr 1.1fr;gap:48px;margin-top:44px;align-items:start}
.tq-exp{display:flex;align-items:baseline;justify-content:space-between}
.tq-exp small{font-size:13px;color:var(--muted)}
.tq-exp strong{font-family:var(--mono);font-weight:400;font-size:28px;color:var(--ink)}
.tq-fixbar{display:flex;gap:3px;height:16px;margin:12px 0 18px}
.tq-fixbar i{width:var(--w);border-radius:4px;transform:scaleX(0);transform-origin:left;transition:transform .8s var(--ease)}
.tq-fixbar .f1{background:var(--data-1)}
.tq-fixbar .f2{background:repeating-linear-gradient(135deg,#cfe3ec 0 6px,#b4d4e3 6px 12px);transition-delay:.25s}
.tq-fixbar .f3{background:repeating-linear-gradient(135deg,#fbe5de 0 6px,#f0b6a6 6px 12px);transition-delay:.5s}
.is-in .tq-fixbar i{transform:none}
.tq-state{display:grid;grid-template-columns:12px 1fr auto;gap:12px;align-items:center;padding:14px 0;border-top:1px solid var(--rule);font-size:14px;color:var(--ink)}
.tq-state > i{width:12px;height:12px;border-radius:3px}
.tq-state.s1 > i{background:var(--data-1)}.tq-state.s2 > i{background:#b4d4e3}.tq-state.s3 > i{background:#f0b6a6}
.tq-state b{font-family:var(--mono);font-weight:400;margin-left:6px}
.tq-state em{font-style:normal;font-size:13px;color:var(--ink);background:var(--surface);border:1px solid var(--rule);border-radius:999px;padding:5px 12px}
.tq-state.s2 em{border-color:#8ec8e0}.tq-state.s3 em{border-color:#f0b6a6}
.tq-fix-r{padding:20px 22px;border-radius:18px;background:var(--surface);border:1px solid var(--rule)}
.tq-tl-h{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent-2)}
.tq-tl{width:100%;height:auto;margin-top:10px;overflow:visible}
.tq-tl .ax{stroke:var(--rule);stroke-width:1.5}
.tq-tl .tk{font-family:var(--mono);font-size:11px;fill:var(--muted)}
.tq-tl .ev{stroke:var(--ink-2);stroke-width:1;stroke-dasharray:3 3}
.tq-tl .evl{font-size:11px;fill:var(--ink)}
.tq-tl .dot.in{fill:var(--good)}.tq-tl .dot.out{fill:var(--bad)}
.tq-tl .gap{fill:#fcebe5;transform:scaleX(0);transform-origin:92px 0;transform-box:view-box;transition:transform 1.2s var(--ease) .5s}
.tq-tl .gapl{font-size:13px;fill:var(--bad);opacity:0;transition:opacity .5s 1.5s}
.is-in .tq-tl .gap{transform:none}.is-in .tq-tl .gapl{opacity:1}
.tq-tl-note{margin:6px 0 0;font-size:14px;color:var(--ink-2)}
.tq-tl-note b{font-family:var(--mono);font-weight:400}
.tq-kinds{display:flex;flex-wrap:wrap;gap:10px;margin-top:36px}
.tq-kinds span{font-size:14px;color:var(--ink);border:1px solid rgba(23,25,28,.2);border-radius:999px;padding:7px 14px;background:var(--surface)}
.tq-small{margin:14px 0 0;font-size:14px;color:var(--muted)}

/* who it helps */
.tq-who{max-width:760px;margin:40px auto 0}
.tq-roles{display:inline-flex;gap:4px;padding:4px;border-radius:999px;background:var(--sunk)}
.tq-roles button{border:0;background:transparent;font:inherit;font-size:14px;color:var(--muted);padding:8px 16px;border-radius:999px;cursor:pointer;transition:background .3s,color .3s}
.tq-roles button[aria-selected="true"]{background:#fff;color:var(--ink);box-shadow:0 2px 8px -4px rgba(23,25,28,.3)}
.tq-ask{margin-top:28px;display:grid;gap:14px;text-align:left}
.tq-q{justify-self:start;min-height:46px;max-width:80%;padding:12px 16px;border-radius:16px 16px 16px 4px;background:var(--sunk);font-size:17px;color:var(--ink)}
.tq-q::after{content:"";display:inline-block;width:2px;height:1em;margin-left:2px;vertical-align:-2px;background:var(--ink);animation:tq-blink 1s steps(1) infinite}
@keyframes tq-blink{50%{opacity:0}}
.tq-a{justify-self:end;width:min(100%,520px);padding:16px 18px;border-radius:16px 16px 4px 16px;background:#fff;border:1px solid var(--rule);box-shadow:0 20px 40px -30px rgba(23,25,28,.35);min-height:120px}
.tq-ans{animation:tq-in .45s var(--ease)}
.tq-mini{display:grid;grid-template-columns:64px 1fr 44px;gap:10px;align-items:center;font-size:13px;color:var(--ink);padding:3px 0}
.tq-mini i{height:8px;width:var(--w);border-radius:4px;background:var(--loss-fill)}
.tq-mini i.g{background:var(--gain-fill)}
.tq-mini b{font-family:var(--mono);font-weight:400;font-size:12px;text-align:right}
.tq-ready{display:grid;gap:6px}
.tq-ready small{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.tq-ready span{font-size:16px;color:var(--ink)}
.tq-ready em{justify-self:start;font-style:normal;font-size:12px;color:var(--good);border:1px solid #a8dccd;border-radius:999px;padding:2px 10px}
.tq-bar-sm{height:48px;margin:20px 0}
.tq-bar-sm i{transition:none}

/* where it sits */
.tq-flow{display:grid;grid-template-columns:220px 1fr 200px 40px 260px;align-items:center;margin-top:48px;min-height:240px}
.tq-files{display:grid;gap:22px}
.tq-files span{padding:12px 14px;border-radius:12px;background:var(--surface);border:1px solid var(--rule);font-size:14px;color:var(--ink)}
.tq-files em{display:block;font-style:normal;font-family:var(--mono);font-size:11px;color:var(--muted)}
.tq-wires{width:100%;height:200px;overflow:visible}
.tq-wires path{fill:none;stroke:rgba(61,126,158,.35);stroke-width:1.5;vector-effect:non-scaling-stroke}
.tq-wires circle{fill:var(--accent-2)}
.tq-node-o{display:grid;gap:4px;place-items:center;text-align:center;padding:22px 16px;border-radius:20px;background:var(--ink);color:#fff}
.tq-node-o b{font-family:'Space Grotesk',var(--sans);font-weight:500;font-size:20px}
.tq-node-o span{font-size:12px;color:var(--ink-muted)}
.tq-arrow{height:1.5px;background:var(--accent-2);margin:0 6px}
.tq-out{display:grid;gap:4px;padding:16px 18px;border-radius:14px;background:#fff;border:1px solid var(--rule);box-shadow:0 20px 40px -30px rgba(23,25,28,.35)}
.tq-out small{font-size:12px;color:var(--muted)}
.tq-out strong{font-family:var(--mono);font-weight:400;font-size:32px;color:var(--bad);line-height:1.1}
.tq-out span{font-size:12px;color:var(--ink-2)}
.tq-princ{display:grid;grid-template-columns:repeat(3,1fr);gap:28px;margin-top:44px}
.tq-princ div{display:grid;gap:4px;padding-top:16px;border-top:2px solid var(--ink-2)}
.tq-princ b{font-weight:600;font-size:18px;color:var(--ink)}
.tq-princ span{font-size:15px;color:var(--muted)}

/* how to start */
.tq-steps{list-style:none;margin:48px 0 0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.tq-steps li{display:grid;gap:6px;align-content:start}
.tq-steps small{font-family:var(--mono);font-size:11px;letter-spacing:.14em;color:var(--ice);margin-top:16px}
.tq-steps h3{color:#fff;margin:0}
.tq-steps p{margin:0;font-size:15px;color:var(--ink-muted)}
.tq-sv{height:130px;border-radius:14px;background:#202327;border:1px solid var(--ink-rule);padding:14px;display:grid;align-content:center;gap:6px}
.tq-sv > span{font-size:13px;color:var(--ink-muted);padding:6px 10px;border-radius:8px}
.tq-sv > span.on{background:rgba(142,200,224,.16);color:#fff;box-shadow:inset 0 0 0 1px rgba(142,200,224,.5)}
.tq-sv-files{grid-auto-flow:column;justify-content:center;align-items:center;gap:10px}
.tq-sv-files i{font-style:normal;font-family:var(--mono);font-size:11px;color:#e4e6e8;background:#2a2e33;border-radius:8px;padding:8px 10px;opacity:0;transform:translateY(-14px);transition:opacity .5s,transform .6s var(--ease)}
.tq-sv-files i:nth-child(2){transition-delay:.2s}.tq-sv-files i:nth-child(3){transition-delay:.4s}
.is-in .tq-sv-files i{opacity:1;transform:none}
.tq-sv-trace{grid-template-columns:auto 1fr auto;align-items:center;gap:12px}
.tq-sv-trace strong{font-family:var(--mono);font-weight:400;font-size:26px;color:var(--bad)}
.tq-sv-trace i{height:1.5px;background:var(--ice);transform:scaleX(0);transform-origin:left;transition:transform .8s var(--ease) .6s}
.is-in .tq-sv-trace i{transform:none}
.tq-sv-trace span{font-family:var(--mono);font-size:11px;color:#e4e6e8;border:1px solid var(--ink-rule);border-radius:8px;padding:6px 8px}

@media (prefers-reduced-motion: reduce){
  .tq-all,.tq-why2,.tq-noise,.tq-all .tq-open,.tq-nbars span::before,.tq-nbars b,.tq-fixbar i,.tq-tl .gap,.tq-tl .gapl,.tq-sv-files i,.tq-sv-trace i,.pbv-pour .d{transition:none!important}
  .tq-q::after{animation:none}
}
@media (max-width:900px){
  .tq-fix,.tq-flow,.tq-princ,.tq-steps{grid-template-columns:1fr}
  .tq-wires,.tq-arrow{display:none}
  .tq-why2,.tq-noise,.tq-gap .v3-note{margin-left:0}
  .tq-node{grid-template-columns:90px 1fr auto}.tq-l1,.tq-l2,.tq-l3{margin-left:12px}.tq-rows{margin-left:12px}
}
.tq-grow:first-child .tq-gtrack i{width:var(--w0,100%);transition:width .9s var(--ease)}
.tq-gap.is-open .tq-grow:first-child .tq-gtrack i{width:var(--w)}
.tq-policy{background:var(--data-3);color:var(--data-1)}
.tq-sw0{width:10px;height:10px;border-radius:3px;background:var(--data-3)}
.tq-nbars{height:130px;margin-top:30px}
.tq-nbars em{bottom:auto;top:-22px}

/* ---------- colour system: light, warm, no dark blocks (2026-10-08) ----------
   The graphite bands and cards become light ice bands; the few dark UI bits
   that remain are buttons, the cursor label and toasts. */
.v3-sec-ink{background:linear-gradient(180deg,#eaf4f9 0%,#f5fafc 100%);color:var(--ink-2);border-top:0}
.v3-sec-ink .v3-h2{color:var(--ink)}
.v3-sec-ink .v3-kicker{color:var(--accent-2)}
.v3-sec-ink .v3-p{color:var(--muted)}
.v3-sec-ink .v3-stats b{color:var(--ink)}
.v3-sec-ink .v3-stats span{color:var(--muted)}
.v3-sec-ink .v3-stats{border-top-color:rgba(56,115,145,.18)}
.v3-ladder-ink li{border-top-color:rgba(56,115,145,.22)}
.v3-ladder-ink h3{color:var(--ink)}
.v3-ladder-ink p{color:var(--muted)}
.v3-ladder-ink small{color:var(--accent-2)}
.v3-link-ink{color:var(--ink);border-color:rgba(23,25,28,.25)}
.v3-sec-ink .v3-btn-light{background:var(--ink);color:#fff}
.v3-sec-ink .v3-btn-light:hover{background:#3a3d42}
.v3-sec-ink .v3-success{background:#fff;border-color:var(--rule);color:var(--ink)}
.v3-sec-ink .v3-success b,.v3-sec-ink .v3-success span::before{color:var(--good)}
.v3-dn-ink{background:#fff8dc;border-color:#efe1a6;color:#5a4a00}
/* problem strip: the open card is an ice panel, not graphite */
.pb-item[aria-expanded="true"]{background:#e3f0f7}
.pb-item[aria-expanded="true"] .pb-n{background:#fff;color:var(--ink)}
.pb-body b{color:var(--ink)}
.pb-body span{color:var(--muted)}
.pbv-pour .pbv-box{border-color:rgba(56,115,145,.45)}
.pbv-pour .d{background:#b9c3ca}
.pb-item[aria-expanded="true"] .pbv-pour .d{background:var(--data-1)}
.pbv-total small{color:var(--muted)}
.pbv-total strong{color:var(--ink)}
.pbv-total em{color:var(--good);border-color:#a8dccd;background:#fff}
.pbv-sheet .pbv-grid i{background:rgba(56,115,145,.08)}
.pbv-sheet .pbv-grid i.on{background:rgba(56,115,145,.42)}
.pbv-day{color:var(--muted)}
.pbv-why{background:var(--bad);color:#fff}
/* how-to-start tiles on the light band */
.tq-steps h3{color:var(--ink)}
.tq-steps p{color:var(--muted)}
.tq-steps small{color:var(--accent-2)}
.tq-sv{background:#fff;border-color:var(--rule)}
.tq-sv > span{color:var(--muted)}
.tq-sv > span.on{background:var(--soft);color:var(--ink);box-shadow:inset 0 0 0 1px var(--data-2)}
.tq-sv-files i{color:var(--ink-2);background:var(--sunk)}
.tq-sv-trace span{color:var(--ink-2);border-color:var(--rule)}
/* the Orbit node and the selected example part */
.tq-node-o{background:var(--data-1)}
.tq-node-o span{color:#dcedf6}
.tq-ex-part[aria-selected="true"]{background:var(--loss-fill);box-shadow:0 18px 30px -20px rgba(224,122,106,.7)}
.tq-ex-part[aria-selected="true"] span{color:var(--ink)}
.tq-ex-part[aria-selected="true"] b{color:var(--ink)}
.tq-ex-part.tq-pos[aria-selected="true"]{background:var(--gain-fill);box-shadow:0 18px 30px -20px rgba(66,168,143,.7)}
.tq-bar i span{color:#fff}
.tq-biz{background:var(--data-2)}
.tq-biz span{color:var(--ink)!important}
.tq-whole{background:var(--loss-fill);color:var(--ink)}
.tq-hedged{color:#fff}
.tq-open{color:var(--bad)}

/* ---------- Funds page: the case (dumbbell chart + counters) ---------- */
.fd-case{display:grid;grid-template-columns:1.5fr 1fr;gap:56px;align-items:center;margin-top:44px}
.fd-dumb{display:grid;gap:14px;padding:22px 24px;border-radius:18px;background:var(--surface);border:1px solid var(--rule)}
.fd-dhead{display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;font-size:13px;color:var(--muted);margin-bottom:6px}
.fd-key{display:inline-flex;align-items:center;gap:6px}
.fd-key i{width:10px;height:10px;border-radius:50%;margin-left:8px}
.fd-key i.a{background:var(--loss-fill)}.fd-key i.b{background:var(--gain-fill)}
.fd-row{display:grid;grid-template-columns:80px 1fr 96px;gap:14px;align-items:center;font-size:14px;color:var(--ink)}
.fd-row b{font-family:var(--mono);font-weight:400;font-size:12px;color:var(--ink-2);text-align:right}
.fd-avg{padding-top:12px;border-top:1px solid var(--rule)}
.fd-avg span,.fd-avg b{font-weight:600;color:var(--ink)}
.fd-track{position:relative;height:16px;background:linear-gradient(90deg,var(--sunk),var(--sunk)) center/100% 2px no-repeat}
.fd-dot{position:absolute;top:50%;width:14px;height:14px;margin:-7px 0 0 -7px;border-radius:50%;border:2px solid #fff;box-shadow:0 1px 3px rgba(23,25,28,.25)}
.fd-before{left:var(--b);background:var(--loss-fill)}
.fd-after{left:var(--b);background:var(--gain-fill);transition:left 1.2s var(--ease) .4s}
.fd-line{position:absolute;top:50%;height:4px;margin-top:-2px;left:var(--a);width:calc(var(--b) - var(--a));border-radius:2px;background:linear-gradient(90deg,var(--gain-fill-2),var(--loss-fill-2));transform:scaleX(0);transform-origin:right;transition:transform 1.2s var(--ease) .4s}
.fd-row:nth-child(3) *{transition-delay:.55s}.fd-row:nth-child(4) *{transition-delay:.7s}.fd-row:nth-child(5) *{transition-delay:.85s}.fd-row:nth-child(6) *{transition-delay:1s}
.is-in .fd-after{left:var(--a)}
.is-in .fd-line{transform:none}
.fd-nums{display:grid;gap:28px}
.fd-nums div{display:grid;gap:4px}
.fd-nums strong{font-family:var(--mono);font-weight:400;font-size:52px;letter-spacing:-.03em;line-height:1;color:var(--ink)}
.fd-nums em{font-style:normal;font-size:30px;font-weight:600;letter-spacing:-.02em;color:var(--ink)}
.fd-nums span{font-size:15px;color:var(--muted)}
.fd-story{list-style:none;margin:44px 0 0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:28px}
.fd-story li{display:grid;gap:6px;padding-top:16px;border-top:2px solid var(--data-2);font-size:16px;line-height:1.45;color:var(--ink)}
.fd-story small{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent-2)}
#case .v3-note{margin-top:22px}
.tq-mini i.d{background:var(--data-2)}
.tq-proof a{color:var(--accent-2);text-decoration:none;margin-left:8px}
@media (prefers-reduced-motion: reduce){.fd-after,.fd-line{transition:none!important}}
@media (max-width:900px){.fd-case,.fd-story{grid-template-columns:1fr}}
.fd-nums strong span{font-size:inherit;color:inherit}
.v3-scene.s2 .tq-mkt{width:var(--s,66%)}.v3-scene.s2 .tq-biz{width:var(--s,34%)}
.pb-viz .pb-body{max-width:600px}
.tq-mini{grid-template-columns:84px 1fr 44px}

/* ---------- chapter selector: step rail (ruled 2026-10-08, option C) ----------
   Three steps joined by a line that fills while the chapter plays; finished
   steps stay filled. Same markup as before (.v3-tab > small, span, .v3-prog). */
.v3-tabs.v3-tabs-chapters{display:flex;align-items:center;gap:0;max-width:980px;margin:34px auto 0;padding:0}
.v3-tabs-chapters .v3-tab{display:flex;align-items:center;flex:1 1 0;gap:12px;padding:8px 0;border:0;border-radius:0;background:none;box-shadow:none;color:#6a6e74;transform:none}
.v3-tabs-chapters .v3-tab:last-child{flex:0 0 auto}
.v3-tabs-chapters .v3-tab:hover{border:0;color:var(--ink-2)}
.v3-tabs-chapters .v3-tab[aria-selected="true"]{background:none;box-shadow:none;color:var(--ink)}
.v3-tabs-chapters .v3-tab small{position:relative;flex:none;width:24px;height:24px;border-radius:50%;background:#fff;box-shadow:inset 0 0 0 1.5px #d6d8db;font-size:0;letter-spacing:0;transition:box-shadow .3s}
.v3-tabs-chapters .v3-tab span{flex:none;font-size:15px;font-weight:500;letter-spacing:-.005em;white-space:nowrap}
.v3-tabs-chapters .v3-tab[aria-selected="true"] small{box-shadow:inset 0 0 0 1.5px var(--data-1)}
.v3-tabs-chapters .v3-tab[aria-selected="true"] small::after{content:"";position:absolute;inset:7px;border-radius:50%;background:var(--data-1)}
.v3-tabs-chapters .v3-tab:has(~ .v3-tab[aria-selected="true"]) small{background:var(--data-1);box-shadow:none}
.v3-tabs-chapters .v3-tab:has(~ .v3-tab[aria-selected="true"]) small::after{content:"✓";position:absolute;inset:0;display:grid;place-items:center;font-size:12px;color:#fff;background:none}
.v3-tabs-chapters .v3-tab:has(~ .v3-tab[aria-selected="true"]){color:var(--ink-2)}
.v3-tabs-chapters .v3-prog{position:static;flex:1;height:1.5px;margin:0 18px;border-radius:1px;background:#e1e4e7;opacity:1}
.v3-tabs-chapters .v3-tab:last-child .v3-prog{display:none}
.v3-tabs-chapters .v3-prog b{background:var(--data-1)}
.v3-tabs-chapters .v3-tab:has(~ .v3-tab[aria-selected="true"]) .v3-prog b{width:100%!important}
/* the last step shows its progress as a ring around the dot */
.v3-tabs-chapters .v3-tab:last-child[aria-selected="true"] small{box-shadow:inset 0 0 0 1.5px var(--data-1),0 0 0 4px rgba(56,115,145,.14)}
.v3-tabs-chapters .v3-tab:focus-visible{outline:2px solid var(--accent-2);outline-offset:4px;border-radius:6px}
@media (max-width:900px){.v3-tabs.v3-tabs-chapters{flex-direction:column;align-items:flex-start}.v3-tabs-chapters .v3-prog{display:none}}

/* decorative backdrops (dot grids, glows) may reach past the screen edge; never scroll sideways for them */
.v3 main{overflow-x:clip}

/* ---------- top bar, after Daylit (Mingze 10-08): 72 px bar, larger logo,
   18 px medium links with a soft hover chip, 40 px buttons, Product opens a
   small menu. A hairline appears only once the page has scrolled on. ---------- */
.v3-nav-row{height:72px}
.v3-logo{gap:12px;font-size:22px;letter-spacing:.01em}
.v3-logo svg{height:20px!important}
.v3-nav nav{gap:6px;align-items:center}
.v3-nav .v3-nl{display:inline-flex;align-items:center;gap:8px;height:32px;padding:4px 10px;border:0;border-radius:8px;background:none;font:inherit;font-size:18px;font-weight:400;letter-spacing:-.005em;color:#3a3d42;text-decoration:none;cursor:pointer;transition:background .2s,color .2s}
.v3-nav .v3-nl:hover,.v3-nav .v3-nl:focus-visible,.v3-menu:focus-within > .v3-nl{background:rgba(23,25,28,.05);color:var(--ink)}
.v3-nav .v3-nl:focus-visible{outline:2px solid var(--accent-2);outline-offset:2px}
.v3-dd{width:14px;height:14px;margin-left:-2px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;opacity:.6;transition:transform .25s cubic-bezier(.22,.61,.36,1),opacity .2s}
.v3-menu{position:relative}
.v3-menu:is(:hover,:focus-within) .v3-dd{transform:rotate(90deg);opacity:1}
@media (prefers-reduced-motion: reduce){.v3-dd{transition:none}}
.v3-drop{position:absolute;left:-8px;top:calc(100% + 10px);z-index:50;display:grid;gap:2px;min-width:300px;padding:8px;border-radius:14px;background:#fff;box-shadow:0 24px 48px -20px rgba(23,25,28,.28),0 0 0 1px rgba(23,25,28,.06);opacity:0;visibility:hidden;transform:translateY(4px);transition:opacity .18s,transform .22s var(--ease),visibility 0s .18s}
.v3-drop::before{content:"";position:absolute;left:0;right:0;top:-12px;height:12px}   /* hover bridge */
.v3-menu:is(:hover,:focus-within) .v3-drop{opacity:1;visibility:visible;transform:none;transition:opacity .18s,transform .22s var(--ease)}
.v3-drop a{display:grid;gap:2px;padding:10px 12px;border-radius:10px;text-decoration:none}
.v3-drop a:hover,.v3-drop a:focus-visible{background:#f3f6f8;outline:none}
.v3-drop b{font-size:15px;font-weight:600;color:var(--ink)}
.v3-drop span{font-size:13px;color:var(--muted)}
.v3-nav .v3-btn{height:40px;padding:0 18px;font-size:16px;font-weight:500}
.v3-nav.is-lined{border-bottom-color:rgba(23,25,28,.08)}

/* every website button shares the hero panel's corner (14 px), not a full pill */
.v3-btn,.ch-go{border-radius:14px}
.v3-input{border-radius:14px}
/* one top bar on every page; the hairline shows always, except on the homepage
   where it appears only after the hero panel (v4-orbit.js toggles .is-lined) */
.v3:not(.v4-home) .v3-nav{border-bottom-color:rgba(23,25,28,.08)}
.v3-nav .v3-nl.is-here{color:var(--ink)}
.v3-drop a[aria-current="page"]{background:#f3f6f8}

/* In-page links glide to their section instead of jumping (2026-10-09); the
   sticky top bar (72 px) is left clear. Reduced motion: an instant jump. */
html{scroll-behavior:smooth;scroll-padding-top:72px}
@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}}

/* Logo (2026-10-09): the approved outlined lockup (navy, lowercase "orbit") as one image,
   never retyped. 137 px wide sits in the guide's 130–150 px header range; the file
   carries its own clear space, so the image steps 8 px left to put the visible mark on
   the page's left edge. */
.v3-logo img{display:block;height:46px;width:auto;margin-left:-8px}
/* Top bar logo, smaller and on the menu's baseline (2026-10-09): 34 px tall (101 px
   wide); the wordmark's baseline sits at 75% of the file's height, so the image is
   lifted until "orbit" shares a baseline with Product · About · Contact · Resources.
   The footer keeps a slightly larger lockup. */
.v3-nav .v3-logo img{height:34px;margin-left:-6px;translate:0 0}   /* ink centred in the 72 px bar: 25 px above and below (Mingze 10-09) */
footer .v3-logo img{height:40px;margin-left:-7px}
/* glossary links in role-page prose: quiet dotted underline, solid on hover */
a.gl-term-link{color:inherit;text-decoration:underline dotted;text-decoration-color:rgba(47,108,140,.55);text-decoration-thickness:1.5px;text-underline-offset:3px;transition:text-decoration-color .2s}
a.gl-term-link:hover{text-decoration-style:solid;text-decoration-color:var(--accent-2)}

/* Phone menu (2026-10-09; js/v3-page.js adds the button). Under 900 px the links fold
   into a sheet under the bar; Product and Resources become quiet labels over their pages. */
.v3-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.v3-nav-toggle{display:none}
@media (max-width:900px){
  .v3-nav-row{gap:12px}
  .v3-nav-row > .v3-btn{margin-left:auto}
  .v3-nav-toggle{display:inline-grid;place-content:center;gap:5px;flex:none;width:44px;height:44px;margin-right:-8px;border:0;border-radius:12px;background:none;cursor:pointer}
  .v3-nav-toggle i{display:block;width:20px;height:1.75px;border-radius:2px;background:var(--ink);transition:transform .25s var(--ease)}
  .v3-nav-toggle:focus-visible{outline:2px solid var(--accent-2);outline-offset:2px}
  .v3-nav.is-open .v3-nav-toggle i:first-of-type{transform:translateY(3.4px) rotate(45deg)}
  .v3-nav.is-open .v3-nav-toggle i:last-of-type{transform:translateY(-3.4px) rotate(-45deg)}
  .v3-nav.is-open{background:#fff;border-bottom-color:rgba(23,25,28,.08)}
  .v3-nav.is-open nav{position:absolute;left:0;right:0;top:100%;height:calc(100dvh - 72px);display:flex;flex-direction:column;align-items:stretch;gap:0;padding:8px 32px 40px;background:#fff;overflow-y:auto;overscroll-behavior:contain}
  .v3-nav.is-open .v3-menu > button{height:auto;padding:24px 0 8px;background:none;font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);pointer-events:none}
  .v3-nav.is-open .v3-dd{display:none}
  .v3-nav.is-open .v3-drop{position:static;min-width:0;padding:0;margin:0 -12px;opacity:1;visibility:visible;transform:none;box-shadow:none;background:none;transition:none}
  .v3-nav.is-open .v3-drop::before{display:none}
  .v3-nav.is-open .v3-drop a{padding:12px}
  .v3-nav.is-open .v3-drop b{font-size:18px}
  .v3-nav.is-open nav > .v3-nl{height:56px;margin:0 -12px;padding:0 12px;border-radius:0;font-size:18px;font-weight:600;color:var(--ink);box-shadow:inset 0 1px 0 rgba(23,25,28,.06)}
  .v3-nav.is-open nav > .v3-nl + .v3-nl{box-shadow:inset 0 1px 0 rgba(23,25,28,.06)}
  .v3-nav.is-open nav > .v3-menu + .v3-nl{margin-top:16px}
  html.v3-nav-lock{overflow:hidden}
}
@media (max-width:900px) and (prefers-reduced-motion: reduce){.v3-nav-toggle i{transition:none}}

/* Role-page heroes breathe more (Mingze 2026-10-09): more air under the top bar, and the
   eyebrow, headline, lede, buttons and chapter rail spaced a little further apart. */
.v3-hero-cfo{padding-top:72px}
.v3-hero-cfo .v3-eyebrow{margin-bottom:20px}
.v3-hero-cfo .v3-lede{margin-top:20px}
.v3-hero-cfo .v3-hero-ctas{margin-top:32px}
.v3-hero-cfo .v3-tabs.v3-tabs-chapters{margin-top:44px}
@media (max-width:900px){.v3-hero-cfo{padding-top:48px}}

/* Resources menu: Insights, not open yet (Mingze 10-09). Looks like a menu item, does nothing. */
.v3-drop .v3-soon{display:grid;gap:2px;margin-top:4px;padding:12px 12px 10px;border-radius:0 0 10px 10px;box-shadow:inset 0 1px 0 rgba(23,25,28,.06);cursor:default}
.v3-drop .v3-soon b{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:600;color:var(--muted)}
.v3-drop .v3-soon em{display:inline-flex;align-items:center;height:20px;padding:0 7px;border-radius:6px;background:#eef5f9;font-family:var(--mono);font-style:normal;font-size:11px;font-weight:400;letter-spacing:.06em;color:#2f6c8c}
.v3-drop .v3-soon > span{font-size:13px;color:var(--muted)}
@media (max-width:900px){.v3-nav.is-open .v3-drop .v3-soon{padding:12px;margin-top:8px}.v3-nav.is-open .v3-drop .v3-soon b{font-size:18px}}

/* No lone last words (audit 10-09): headings balance their lines; body copy avoids orphans. */
.v3 :is(.v3-h1,.v3-h2,.v4-h1,h3,.ch-q,blockquote){text-wrap:balance}
.v3 :is(.v3-p,.v3-lede,.sx-copy p,.ch-door p,p){text-wrap:pretty}
/* one hero kicker style on every page: the role pages' eyebrow carries the same light-blue dot */
.v3-hero-cfo .v3-eyebrow{display:inline-flex;align-items:center;gap:8px}
.v3-hero-cfo .v3-eyebrow::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--ice)}

/* ---------- Phone pass 2 (2026-10-09): one 24 px gutter on every page ----------
   Inset panels (hero panels, tinted sections) sit 8 px from the screen edge; the text inside
   them keeps the same 24 px left edge as everything else. */
@media (max-width:600px){
  :root{--gut:24px}
  .v3-wrap{padding:0 var(--gut)}
  .v3-sec.v3-sec-tint{margin:8px}
  .v3-sec.v3-sec-tint > .v3-wrap{padding-inline:calc(var(--gut) - 8px)}
}

/* phones: menu sheet text on the 24 px edge; footer links tall enough to tap; legal row stacked */
@media (max-width:600px){
  .v3-nav.is-open nav{padding:8px var(--gut) 40px}
  .v3-nav.is-open nav > .v3-nl{margin:0;padding:0}
  .v3-nav.is-open .v3-drop{margin:0 -12px}
  .v3-foot-row{grid-template-columns:1fr 1fr;gap:28px 16px}
  .v3-foot-row > .v3-foot-brand{grid-column:1/-1}
  .v3-foot-row div{gap:0}
  .v3-foot-row a{display:block;padding:6px 0}
  .v3-foot-legal{flex-direction:column;gap:10px}
  .v3-foot-legal a{display:inline-block;padding:10px 0}
}
@media (max-width:900px){.v3-nav.is-open .v3-drop .v3-soon{margin-left:12px;margin-right:12px;padding-left:0;padding-right:0}}

/* Phone menu, redesigned (Mingze 10-09, live-site review): grouped cards. Product and Resources
   are cards of rows (title, one line, chevron); About and Contact share a card; the sheet ends
   with a full-width Book a map. Hover rules from the desktop dropdown never apply here. */
.v3-nav-cta{display:none}
@media (max-width:900px){
  .v3-nav.is-open nav{display:flex;flex-direction:column;gap:20px;padding:16px var(--gut,24px) 32px;background:#f6f8fa}
  .v3-nav.is-open .v3-menu{position:static}
  .v3-nav.is-open .v3-menu > button{display:block;height:auto;margin:0 0 8px 4px;padding:0;background:none!important;font-family:var(--mono);font-size:11px;font-weight:400;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);pointer-events:none}
  .v3-nav.is-open .v3-menu:nth-of-type(2){order:2}
  .v3-nav.is-open .v3-drop,.v3-nav.is-open .v3-menu:hover .v3-drop,.v3-nav.is-open .v3-menu:focus-within .v3-drop{position:static;display:block;min-width:0;margin:0;padding:0;border-radius:16px;background:#fff;box-shadow:0 0 0 1px rgba(23,25,28,.06);opacity:1;visibility:visible;transform:none;transition:none;overflow:hidden}
  .v3-nav.is-open .v3-drop a,.v3-nav.is-open .v3-drop .v3-soon{position:relative;display:grid;gap:2px;margin:0;padding:14px 44px 14px 16px;border-radius:0;box-shadow:inset 0 -1px 0 rgba(23,25,28,.06)}
  .v3-nav.is-open .v3-drop > :last-child{box-shadow:none}
  .v3-nav.is-open .v3-drop a::after,.v3-nav.is-open nav > .v3-nl::after{content:"";position:absolute;right:18px;top:50%;width:7px;height:7px;margin-top:-4px;border-right:1.5px solid #9aa0a6;border-top:1.5px solid #9aa0a6;transform:rotate(45deg)}
  .v3-nav.is-open .v3-drop b{font-size:16px;font-weight:600;color:var(--ink)}
  .v3-nav.is-open .v3-drop span{font-size:13px;line-height:18px;color:var(--muted)}
  .v3-nav.is-open .v3-drop a[aria-current="page"]{background:#f3f7fa}
  .v3-nav.is-open .v3-drop .v3-soon b{font-size:16px;color:var(--muted)}
  /* About and Contact: one card of two rows. Prefix matches: v3-page.js adds ?from= to the Contact
     link, which broke an exact match and split the card in two (Mingze 10-13) */
  .v3-nav.is-open nav > .v3-nl{order:3;position:relative;display:flex;align-items:center;height:52px;margin:0;padding:0 44px 0 16px;border-radius:0;background:#fff;font-size:16px;font-weight:600;color:var(--ink);box-shadow:0 0 0 1px rgba(23,25,28,.06)}
  .v3-nav.is-open nav > .v3-menu + .v3-nl{margin-top:0}
  .v3-nav.is-open nav > a.v3-nl[href^="/about"]{border-radius:16px 16px 0 0}
  .v3-nav.is-open nav > a.v3-nl[href^="/talk"]{margin-top:-20px;border-radius:0 0 16px 16px}
  .v3-nav.is-open .v3-nav-cta{order:4;display:flex;justify-content:center;height:52px;margin-top:4px;font-size:16px;border-radius:14px}
}
@media (max-width:900px){
  .v3-nav.is-open nav .v3-nav-cta{color:#fff}
  .v3-nav.is-open .v3-nav-row > .v3-btn{visibility:hidden}
  .v3-nav.is-open nav > a.v3-nl[href^="/talk"]{box-shadow:0 0 0 1px rgba(23,25,28,.06),inset 0 1px 0 rgba(23,25,28,.06)}
}

/* Phone menu, round 2 (Mingze 10-09): About and Contact read as full rows like the other
   cards (title + one line); Book a map is a proper 56 px button on every page (a homepage
   rule had pinned top-bar buttons to 40 px). */
@media (max-width:900px){
  html .v3-nav.is-open nav > a.v3-nl{display:grid;align-content:center;gap:2px;height:auto;min-height:72px;padding:14px 44px 14px 16px;font-size:16px;font-weight:600;line-height:22px;color:var(--ink)}
  html .v3-nav.is-open nav > a.v3-nl::before{order:2;font-size:13px;font-weight:400;line-height:18px;color:var(--muted)}
  html .v3-nav.is-open nav > a.v3-nl[href^="/about"]::before{content:"Who we are and why we built Orbit"}
  html .v3-nav.is-open nav > a.v3-nl[href^="/talk"]::before{content:"Talk to the founders"}
  html .v3-nav.is-open nav > a.v3-nl{grid-template-areas:"t" "s"}
  html .v3-nav.is-open nav > a.v3-nl::before{grid-area:s}
  html .v3-nav.is-open nav .v3-nav-cta{height:56px;padding:0 20px;font-size:17px;font-weight:500;border-radius:14px}
}
/* the sheet scrolls; its rows never shrink to fit a short screen (that squeezed About, Contact
   and the button on phones shorter than the menu) */
@media (max-width:900px){html .v3-nav.is-open nav > *{flex-shrink:0}}

/* Search (10-09): on the homepage, Finance leaders and Funds the kicker line sits INSIDE the hero H1, so the
   headline carries the page's topic. It must look exactly as before, when it was its own line in the hero:
   .h1-kick is a full-width line in the hero's body text (16px / 1.6, which sets the line's height), and
   the kicker inside keeps every rule it had; only what it would inherit from the headline is undone. */
h1:is(.v3-h1,.v4-h1) > span.h1-kick{display:block;font-family:var(--sans);font-size:16px;font-weight:400;line-height:1.6;letter-spacing:normal;text-wrap:pretty;white-space:normal;color:var(--muted)}
:is(.v3-h1,.v4-h1) .h1-kick :is(.ch-eyebrow,.v3-eyebrow){color:var(--muted);white-space:normal}

/* Accessibility pass (10-09): one keyboard focus ring everywhere, in Orbit blue (it was the browser's
   default blue on links and buttons with no ring of their own). Lowest specificity, so any element with
   its own focus style keeps it. Menu items had only a faint fill (about 1.1:1 on white): ring added. */
:where(.v3) :focus-visible{outline:2px solid var(--accent-2);outline-offset:2px}
.v3-drop a:focus-visible{outline:2px solid var(--accent-2);outline-offset:-2px}

/* v3-app.css */
/* Mock product UI kit (pilot, 2026-10-08). A staged, light rendering of the
   Orbit app for the marketing site: layout and labels inspired by the
   platform, styling our own. Tokens measured from Mantle's live mock: almost
   no lines, hierarchy by colour not size, 13/20 UI text, inset pill
   selection, fade-out tables. Everything is scoped under .ap. */

.ap{
  --ap-ink:#17191c; --ap-body:#3a3d42; --ap-muted:#6b6f76; --ap-head:#6a6e74; --ap-icon:#a4a9b0;
  --ap-line:rgba(23,25,28,.07); --ap-sunk:#f5f6f7; --ap-sunk-2:#eceef0; --ap-side:#fbfbfc;
  --ap-sel:#eef4f8; --ap-blue:#387391;
  --ap-s1:0 0 0 1px rgba(23,25,28,.06),0 1px 2px rgba(23,25,28,.04);
  --ap-s2:0 0 0 1px rgba(23,25,28,.06),0 12px 32px -8px rgba(23,25,28,.18),0 2px 6px rgba(23,25,28,.06);
  --ap-ease:cubic-bezier(.22,.61,.36,1);
  font-family:var(--sans);font-weight:500;font-size:13px;line-height:20px;letter-spacing:-.01em;color:var(--ap-body);text-align:left;
}
.ap *{box-sizing:border-box}
.ap .num{font-family:var(--mono);font-weight:400;font-variant-numeric:tabular-nums;letter-spacing:0}
.ap .neg{color:var(--bad)}.ap .pos{color:var(--good)}

/* stage: the page area behind the device */
.ap-stage{position:relative;padding:44px 0 36px}
.ap-stage-dots{background:radial-gradient(circle,rgba(56,115,145,.22) 1px,transparent 1.4px) 0 0/16px 16px;-webkit-mask-image:radial-gradient(120% 90% at 50% 40%,#000 55%,transparent 100%);mask-image:radial-gradient(120% 90% at 50% 40%,#000 55%,transparent 100%)}
.ap-stage-dots-wrap{position:relative}
.ap-stage-dots-wrap::before{content:"";position:absolute;inset:0 -60px;background:radial-gradient(circle,rgba(56,115,145,.20) 1px,transparent 1.5px) 0 0/16px 16px;-webkit-mask-image:radial-gradient(70% 75% at 50% 45%,#000 40%,transparent 100%);mask-image:radial-gradient(70% 75% at 50% 45%,#000 40%,transparent 100%);pointer-events:none}
.ap-stage-wash{background:linear-gradient(180deg,#ffffff 0%,#eef7fb 25%,#dcedf6 55%,#e6f2f8 80%,#ffffff 100%);border-radius:28px}

/* device bezel + screen */
.ap-bezel{position:relative;transform:scale(.97);opacity:.7;transition:transform .7s var(--ap-ease),opacity .7s var(--ap-ease);padding:8px;border-radius:22px;background:rgba(23,25,28,.09);box-shadow:inset 0 0 0 1px rgba(255,255,255,.6),0 0 3px rgba(255,255,255,.35),0 40px 80px -24px rgba(23,25,28,.28)}
.ap-screen{position:relative;height:640px;display:grid;grid-template-columns:220px 1fr;border-radius:16px;overflow:hidden;background:#fff;box-shadow:0 0 0 1px rgba(23,25,28,.08)}

/* sidebar */
.ap-side{display:flex;flex-direction:column;gap:2px;padding:14px 10px 10px;background:var(--ap-side);box-shadow:inset -1px 0 0 var(--ap-line);min-height:0}
.ap-brand{display:flex;align-items:center;gap:8px;padding:2px 8px 12px;font-family:'Space Grotesk',var(--sans);font-size:15px;font-weight:500;color:var(--ap-ink);letter-spacing:.01em}
.ap-brand svg{width:20px;height:13px;color:var(--ap-ink)}
.ap-search{display:flex;align-items:center;justify-content:space-between;height:30px;margin:0 2px 10px;padding:0 8px;border-radius:8px;background:#fff;box-shadow:var(--ap-s1);color:var(--ap-head);font-size:12px}
.ap-search kbd{font-family:var(--mono);font-size:11px;color:var(--ap-head);background:var(--ap-sunk);border-radius:4px;padding:0 5px}
.ap-nav{display:flex;align-items:center;gap:9px;height:30px;padding:0 8px;border-radius:8px;color:var(--ap-body);white-space:nowrap}
.ap-nav svg{flex:none;width:15px;height:15px;stroke:var(--ap-icon);stroke-width:1.5;fill:none;stroke-linecap:round;stroke-linejoin:round}
.ap-sub{height:28px;padding-left:32px;color:var(--ap-muted);font-weight:400}
.ap-nav.on{background:var(--ap-sunk-2);color:var(--ap-ink)}
.ap-gap{height:6px}
.ap-acct{margin-top:auto;display:flex;align-items:center;gap:9px;padding:8px;border-radius:10px}
.ap-av{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--ap-sel);color:var(--ap-blue);font-size:11px;font-weight:600}
.ap-acct span{display:grid;line-height:16px;font-size:12px;color:var(--ap-ink)}
.ap-acct small{font-size:11px;color:var(--ap-muted);font-weight:400}

/* main + top bar */
.ap-main{position:relative;display:grid;grid-template-rows:52px 1fr;min-width:0;overflow:hidden}
.ap-top{display:flex;align-items:center;gap:8px;padding:0 20px 0 24px;box-shadow:inset 0 -1px 0 var(--ap-line)}
.ap-crumb{color:var(--ap-muted)}.ap-crumb b{font-weight:500;color:var(--ap-ink)}
.ap-crumb i{font-style:normal;color:var(--ap-head);margin:0 6px}
.ap-top .ap-sp{flex:1}
.ap-chip{display:inline-flex;align-items:center;gap:6px;height:22px;padding:0 8px;border-radius:6px;background:var(--ap-sunk);color:var(--ap-muted);font-size:11px;line-height:16px;white-space:nowrap}
.ap-chip::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--ap-icon)}
.ap-chip.plain::before{display:none}
.ap-chip.info{background:#e8f2f7;color:var(--ap-blue)}.ap-chip.info::before{background:#8ec8e0}
.ap-chip.gain{background:#e6f4ef;color:#2c7867}.ap-chip.gain::before{background:#7fc9b5}
.ap-chip.loss{background:#fbece7;color:#a9523b}.ap-chip.loss::before{background:#ec9c86}
.ap-chip .num{font-size:11px}

/* page */
.ap-page{padding:22px 28px 0;min-height:0}
.ap-title{display:flex;align-items:flex-end;justify-content:space-between;gap:16px}
.ap-title :is(h4,.ap-h4){margin:0;font-size:22px;line-height:28px;font-weight:600;letter-spacing:-.02em;color:var(--ap-ink)}
.ap-title p{margin:2px 0 0;color:var(--ap-muted);font-weight:400}
.ap-scope{display:flex;gap:6px}
.ap-select{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px;border-radius:8px;background:#fff;box-shadow:var(--ap-s1);font-size:12px;color:var(--ap-ink)}
.ap-select::after{content:"";width:6px;height:6px;border-right:1.5px solid var(--ap-icon);border-bottom:1.5px solid var(--ap-icon);transform:translateY(-2px) rotate(45deg)}
.ap-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:18px}
.ap-kpi{padding:12px 14px 13px;border-radius:12px;background:#fff;box-shadow:var(--ap-s1)}
.ap-kpi small{display:flex;justify-content:space-between;font-size:12px;line-height:16px;color:var(--ap-muted)}
.ap-kpi strong{display:block;margin-top:6px;font-family:var(--mono);font-weight:400;font-size:24px;line-height:30px;letter-spacing:-.01em;color:var(--ap-ink)}
.ap-kpi em{display:block;font-style:normal;font-size:11px;line-height:16px;color:var(--ap-muted);margin-top:2px}
.ap-kpi .bar{display:flex;gap:2px;height:4px;margin-top:9px;border-radius:2px;overflow:hidden}
.ap-kpi .bar i{display:block;height:100%}
.ap-zone{display:flex;align-items:center;justify-content:space-between;margin:22px 0 6px;font-size:12px;color:var(--ap-muted)}
.ap-zone b{font-weight:500;color:var(--ap-ink);font-size:13px}

/* table: no row borders; header muted; selection is an inset pill */
.ap-table{position:relative;-webkit-mask-image:linear-gradient(#000 72%,transparent 100%);mask-image:linear-gradient(#000 72%,transparent 100%)}
.ap-tr{display:grid;grid-template-columns:1.6fr .8fr 1fr 1.3fr;align-items:center;height:40px;padding:0 12px;margin:0 -12px;border-radius:8px;transition:background .3s}
.ap-th{height:30px;font-size:12px;color:var(--ap-head);font-weight:500}
.ap-tr > :nth-child(3){text-align:right}
.ap-tr .ent{display:flex;align-items:center;gap:9px;color:var(--ap-ink)}
.ap-tr .ent i{display:grid;place-items:center;width:22px;height:22px;border-radius:6px;background:var(--ap-sunk);font-style:normal;font-size:11px;font-weight:600;color:var(--ap-muted);letter-spacing:.02em}
.ap-share{display:flex;align-items:center;gap:10px;padding-left:24px}
.ap-share u{flex:1;height:4px;border-radius:2px;background:var(--ap-sunk-2);overflow:hidden;text-decoration:none}
.ap-share u b{display:block;height:100%;width:var(--w);background:#ec9c86;border-radius:2px}
.ap-share span{width:34px;text-align:right;font-size:12px;color:var(--ap-muted)}
.ap-tr.sel{background:var(--ap-sel)}

/* trace drawer */
.ap-drawer{position:absolute;top:52px;right:0;bottom:0;width:344px;display:flex;flex-direction:column;background:#fff;box-shadow:var(--ap-s2);transform:translateX(104%);transition:transform .55s var(--ap-ease);z-index:3}
.ap-dh{display:flex;align-items:center;justify-content:space-between;height:44px;padding:0 16px;box-shadow:inset 0 -1px 0 var(--ap-line);color:var(--ap-ink)}
.ap-dh b{display:inline-flex;align-items:center;gap:8px;font-weight:600}
.ap-dh b::before{content:"✓";display:grid;place-items:center;width:18px;height:18px;border-radius:5px;background:#e8f2f7;color:var(--ap-blue);font-size:11px}
.ap-dh span{color:var(--ap-icon);font-size:16px}
.ap-path{display:flex;align-items:center;gap:6px;padding:12px 16px 0;font-size:11px;color:var(--ap-head);white-space:nowrap;overflow:hidden}
.ap-path i{font-style:normal;transition:color .3s}
.ap-path i.on{color:var(--ap-ink)}
.ap-path s{width:5px;height:5px;border-radius:50%;background:var(--ap-sunk-2);text-decoration:none;flex:none;transition:background .3s}
.ap-path s.on{background:var(--ap-blue)}
.ap-dbody{position:relative;flex:1;padding:14px 16px;overflow:hidden}
.ap-fig small{font-size:11px;color:var(--ap-muted)}
.ap-fig strong{display:block;font-family:var(--mono);font-weight:400;font-size:26px;line-height:32px;color:var(--ap-ink)}
.ap-fig em{font-style:normal;font-size:12px;color:var(--ap-muted)}
.ap-step{position:absolute;left:16px;right:16px;top:96px;opacity:0;transform:translateY(8px);transition:opacity .35s,transform .45s var(--ap-ease);pointer-events:none}
.ap-step.on{opacity:1;transform:none}
.ap-cap{display:flex;justify-content:space-between;font-size:11px;color:var(--ap-head);margin-bottom:4px}
.ap-part{display:grid;grid-template-columns:1fr auto;gap:4px 12px;padding:9px 10px;margin:0 -10px;border-radius:8px;transition:background .3s}
.ap-part span{color:var(--ap-ink)}
.ap-part .num{font-size:12px}
.ap-part u{grid-column:1/-1;display:flex;align-items:center;gap:8px;text-decoration:none;font-size:11px;color:var(--ap-muted)}
.ap-part u b{flex:1;height:4px;border-radius:2px;background:var(--ap-sunk-2);overflow:hidden}
.ap-part u b::after{content:"";display:block;height:100%;width:var(--w);background:#ec9c86;border-radius:2px;transform:scaleX(0);transform-origin:left;transition:transform .8s var(--ap-ease) .2s}
.ap-step.on .ap-part u b::after{transform:none}
.ap-part.sel{background:var(--ap-sel)}
.ap-line{display:grid;grid-template-columns:1fr auto;padding:8px 10px;margin:0 -10px;border-radius:8px;opacity:0;transform:translateY(6px);transition:opacity .35s,transform .4s var(--ap-ease),background .3s}
.ap-line small{grid-column:1;font-size:11px;color:var(--ap-muted);font-weight:400}
.ap-line .num{grid-row:1/3;grid-column:2;align-self:center;font-size:12px}
.ap-step.on .ap-line{opacity:1;transform:none}
.ap-step.on .ap-line:nth-child(3){transition-delay:.08s}.ap-step.on .ap-line:nth-child(4){transition-delay:.16s}.ap-step.on .ap-line:nth-child(5){transition-delay:.24s}
.ap-line.sel{background:var(--ap-sel)}
.ap-line.more{color:var(--ap-muted);font-size:12px}
.ap-ev{margin-top:12px;padding:12px 12px 10px;border-radius:12px;background:#fbfbfc;box-shadow:var(--ap-s1);opacity:0;transform:translateY(10px);transition:opacity .4s,transform .5s var(--ap-ease)}
.ap-ev.on{opacity:1;transform:none}
.ap-ev b{display:flex;align-items:center;gap:6px;font-weight:600;color:var(--ap-ink);font-size:12px}
.ap-ev b::before{content:"✓";color:var(--good)}
.ap-ev dl{display:grid;grid-template-columns:auto 1fr;gap:3px 12px;margin:8px 0 0;font-size:11px;line-height:16px}
.ap-ev dt{color:var(--ap-head)}.ap-ev dd{margin:0;color:var(--ap-ink);text-align:right}

/* live moment: the status pill in the top bar */
.ap-live{display:inline-flex;align-items:center;gap:7px;height:24px;padding:0 10px;border-radius:999px;background:#fff;box-shadow:var(--ap-s1);font-size:11px;color:var(--ap-ink);max-width:24px;overflow:hidden;white-space:nowrap;opacity:.0;transition:max-width .4s var(--ap-ease),opacity .3s}
.ap-live.on{max-width:240px;opacity:1}
.ap-live.done i{display:none}
.ap-live.done::before{content:"✓";color:var(--good)}
.ap-live i{display:inline-flex;gap:2px}
.ap-live i b{width:3px;height:3px;border-radius:50%;background:var(--ap-blue);animation:ap-dot 1s infinite}
.ap-live i b:nth-child(2){animation-delay:.15s}.ap-live i b:nth-child(3){animation-delay:.3s}
@keyframes ap-dot{0%,100%{opacity:.25}50%{opacity:1}}

/* toast floating over the device edge */
.ap-toast{position:absolute;right:-18px;bottom:30px;z-index:6;display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:12px;background:#fff;box-shadow:var(--ap-s2);font-size:12px;color:var(--ap-ink);opacity:0;transform:translateY(12px) scale(.98);transition:opacity .4s,transform .5s var(--ap-ease)}
.ap-toast::before{content:"✓";display:grid;place-items:center;width:20px;height:20px;border-radius:6px;background:#e6f4ef;color:#2c7867;font-size:12px}
.ap-toast small{font-size:11px;color:var(--ap-muted);font-weight:400}
.ap-toast.on{opacity:1;transform:none}

/* cursor */
.ap-cursor{position:absolute;left:0;top:0;z-index:8;display:flex;align-items:flex-start;gap:4px;pointer-events:none;opacity:0;transform:translate(600px,420px);transition:transform .9s cubic-bezier(.45,.05,.25,1),opacity .3s}
.ap-cursor.on{opacity:1}
.ap-cursor span{margin-top:14px;background:var(--ap-ink);color:#fff;font-size:11px;line-height:16px;padding:2px 8px;border-radius:999px;white-space:nowrap}
.ap-cursor svg{filter:drop-shadow(0 2px 3px rgba(0,0,0,.18))}
.ap-cursor::before{content:"";position:absolute;left:-10px;top:-10px;width:22px;height:22px;border-radius:50%;border:2px solid var(--ap-blue);opacity:0;transform:scale(.4)}
.ap-cursor.click::before{animation:ap-click .45s ease-out}
@keyframes ap-click{0%{opacity:.9;transform:scale(.4)}100%{opacity:0;transform:scale(1.6)}}

/* entrance: content settles in */
.ap-in{opacity:0;transform:translateY(6px);transition:opacity .5s var(--ap-ease),transform .6s var(--ap-ease)}
.ap.go .ap-in{opacity:1;transform:none}
.ap.go .ap-kpi:nth-child(2){transition-delay:.08s}.ap.go .ap-kpi:nth-child(3){transition-delay:.16s}
.ap.go .ap-table .ap-tr:nth-child(2){transition-delay:.25s}.ap.go .ap-table .ap-tr:nth-child(3){transition-delay:.31s}.ap.go .ap-table .ap-tr:nth-child(4){transition-delay:.37s}.ap.go .ap-table .ap-tr:nth-child(5){transition-delay:.43s}.ap.go .ap-table .ap-tr:nth-child(6){transition-delay:.49s}

.ap.drawer .ap-drawer{transform:none}

@media (prefers-reduced-motion: reduce){
  .ap *,.ap *::before,.ap *::after{transition:none!important;animation:none!important}
  .ap-cursor{display:none}
}

/* pilot page scaffolding */
.pl-label{display:flex;align-items:baseline;gap:12px;margin:56px 0 0;font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent-2)}
.pl-label span{font-family:var(--sans);letter-spacing:0;text-transform:none;font-size:14px;color:var(--muted)}

.ap.seen .ap-bezel{transform:none;opacity:1}
@media (prefers-reduced-motion: reduce){.ap-bezel{transform:none;opacity:1}}
.ap em,.ap i{font-style:normal}
.ap-kpi strong{font-size:22px;letter-spacing:-.02em}
.ap-fig strong{font-size:24px;letter-spacing:-.02em}
.ap-toast{right:auto;left:50%;bottom:22px;transform:translate(-50%,12px) scale(.98);max-width:calc(100% - 48px)}
.ap-toast.on{transform:translate(-50%,0)}

/* ======================================================================
   App-frame heroes: the shared tab player (v3-hero.js) drives .v3-scene
   pages inside the app. Steps s1… map to app behaviour below.
   ====================================================================== */
.v3-app-wrap{position:relative;margin-top:26px}
.v3-stage.v3-app{background:none;padding:0;margin:0;border-radius:0}
.v3-app .v3-window.ap-screen{height:600px;border-radius:16px;box-shadow:0 0 0 1px rgba(23,25,28,.08);background:#fff}
.v3-app .ap-views{position:relative;min-height:0;overflow:hidden}
.v3-app .v3-scene{inset:0;padding:22px 28px 0;transform:none;transition:opacity .25s var(--ap-ease),visibility 0s .25s}
.v3-app .v3-scene.is-on{transition:opacity .35s var(--ap-ease) .05s,visibility 0s}
.v3-app .ap-crumb{white-space:nowrap}
.v3-app .ap-drawer{top:0}
.v3-app .ap-toast{bottom:22px}
.v3-app .v3-cursor{z-index:9}
.v3-app .ap-sub[data-nav]{cursor:default}
.v3-app .ap-nav.on{background:var(--ap-sunk-2);color:var(--ap-ink)}
/* entrance */
.v3-scene.s1 .ap-in{opacity:1;transform:none}
.v3-scene.s1 .ap-kpi:nth-child(2){transition-delay:.08s}.v3-scene.s1 .ap-kpi:nth-child(3){transition-delay:.16s}
.v3-scene.s1 .ap-table .ap-tr:nth-child(2){transition-delay:.22s}.v3-scene.s1 .ap-table .ap-tr:nth-child(3){transition-delay:.28s}.v3-scene.s1 .ap-table .ap-tr:nth-child(4){transition-delay:.34s}.v3-scene.s1 .ap-table .ap-tr:nth-child(5){transition-delay:.4s}.v3-scene.s1 .ap-table .ap-tr:nth-child(6){transition-delay:.46s}.v3-scene.s1 .ap-table .ap-tr:nth-child(7){transition-delay:.52s}

/* a1 · trace: s2 open, s3 step down, s4 evidence, s5 toast */
.v3-scene.s2 [data-pick]{background:var(--ap-sel)}
.v3-scene.s2 .ap-drawer:not(.ap-drawer-tp){transform:none}
.v3-scene.s2 .ap-stepA{opacity:1;transform:none}
.v3-scene.s3 .ap-stepA{opacity:0;transform:translateY(-6px)}
.v3-scene.s3 .ap-stepB{opacity:1;transform:none}
.v3-scene.s3 [data-part]{background:var(--ap-sel)}
.v3-scene.s4 [data-line]{background:var(--ap-sel)}
.v3-scene.s4 .ap-ev{opacity:1;transform:none}
.v3-scene.s3 .ap-step.ap-stepB .ap-line{opacity:1;transform:none}
.v3-scene.s2 .ap-stepA .ap-part u b::after{transform:none}
.v3-scene .ap-path i:nth-of-type(1){color:var(--ap-ink)}
.v3-scene.s2 .ap-path i:nth-of-type(2),.v3-scene.s3 .ap-path i:nth-of-type(3),.v3-scene.s4 .ap-path i:nth-of-type(4){color:var(--ap-ink)}
.v3-scene.s2 .ap-path s:nth-of-type(1),.v3-scene.s3 .ap-path s:nth-of-type(2),.v3-scene.s4 .ap-path s:nth-of-type(3){background:var(--ap-blue)}
.v3-scene.s5 .ap-toast{opacity:1;transform:translate(-50%,0)}

/* a2 · market or business */
.ap-seg{display:inline-flex;gap:2px;padding:3px;border-radius:9px;background:var(--ap-sunk)}
.ap-seg span{height:24px;display:inline-flex;align-items:center;padding:0 10px;border-radius:6px;font-size:12px;color:var(--ap-muted);transition:background .3s,color .3s,box-shadow .3s}
.ap-seg span:first-child{background:#fff;color:var(--ap-ink);box-shadow:var(--ap-s1)}
.v3-scene.s2 .ap-seg span:first-child{background:none;color:var(--ap-muted);box-shadow:none}
.v3-scene.s2 .ap-seg span.ap-seg-mb{background:#fff;color:var(--ap-ink);box-shadow:var(--ap-s1)}
.ap-card{margin-top:18px;padding:14px 16px 16px;border-radius:12px;background:#fff;box-shadow:var(--ap-s1)}
.ap-split{position:relative;display:flex;gap:3px;height:52px;margin-top:10px;border-radius:10px;overflow:hidden}
.ap-split i{display:flex;flex-direction:column;justify-content:center;padding:0 14px;font-style:normal;overflow:hidden;white-space:nowrap;transition:width .8s var(--ap-ease)}
.ap-split i span{font-size:11px;line-height:14px}
.ap-split i b{font-family:var(--mono);font-weight:400;font-size:14px}
.ap-split .m{width:0;background:var(--data-1);color:#fff}
.ap-split .b{width:0;background:var(--data-2);color:var(--ap-ink)}
.ap-split .w{position:absolute;inset:0;display:flex;align-items:center;padding:0 16px;font-style:normal;font-size:16px;color:var(--ap-ink);background:var(--loss-fill-2);transition:opacity .4s}
.ap-split-scale{display:flex;justify-content:space-between;margin-top:8px;font-size:11px;color:var(--ap-muted);opacity:0;transition:opacity .4s .4s}
.v3-scene.s2 .ap-split .w{opacity:0}
.v3-scene.s2 .ap-split .m{width:66%}.v3-scene.s2 .ap-split .b{width:34%}
.v3-scene.s2 .ap-split-scale{opacity:1}
.ap-table-drv{margin-top:14px}
.ap-table-drv .ap-tr{grid-template-columns:1.6fr .8fr 1fr 1.3fr}
.ap-share u b.g{background:#7fc9b5}
.v3-scene.s3 .ap-biz{background:#eef6fa}
.v3-scene.s3 .ap-split .b{box-shadow:inset 0 0 0 2px #fff,0 0 0 2px var(--data-1)}

/* a3 · coverage board + trade prep */
.ap-board .ap-zone{margin-bottom:10px}
.ap-bhead,.ap-brow{display:grid;grid-template-columns:150px 1fr 150px;gap:16px;align-items:center}
.ap-baxis{position:relative;height:14px;font-family:var(--mono);font-size:11px;color:var(--ap-head)}
.ap-baxis i{position:absolute;top:0;transform:translateX(-50%)}
.ap-baxis i:first-child{transform:none}
.ap-brow{height:46px;padding:0 10px;margin:0 -10px;border-radius:8px;transition:background .3s}
.ap-brow > span:first-child{display:grid;line-height:16px;color:var(--ap-ink)}
.ap-brow small{font-size:11px;color:var(--ap-muted);font-weight:400}
.ap-btrack{position:relative;height:10px;border-radius:5px;background:var(--ap-sunk)}
.ap-btrack .band{position:absolute;top:-4px;bottom:-4px;left:60%;width:30%;border-radius:4px;background:rgba(127,201,181,.18);box-shadow:inset 1px 0 0 rgba(46,125,107,.35),inset -1px 0 0 rgba(46,125,107,.35)}
.ap-btrack .fill{position:absolute;top:2px;bottom:2px;left:0;width:var(--w);border-radius:3px;background:var(--data-1);transition:width .9s var(--ap-ease),background .4s}
.ap-beur .fill{background:var(--loss-fill)}
.ap-bval{display:flex;align-items:center;justify-content:flex-end;gap:10px}
.ap-bval b{font-family:var(--mono);font-weight:400;font-size:12px;color:var(--ap-ink)}
.ap-beur .now,.ap-beur .in{display:none}
.v3-scene.s2 .ap-beur{background:#fbf3f0}
.v3-scene.s4 .ap-beur{background:transparent}
.v3-scene.s4 .ap-beur .fill{width:var(--w2);background:var(--data-1)}
.v3-scene.s4 .ap-beur .was,.v3-scene.s4 .ap-beur .off{display:none}
.v3-scene.s4 .ap-beur .now,.v3-scene.s4 .ap-beur .in{display:inline-flex}
.ap-actions{display:flex;align-items:center;gap:12px;margin-top:16px}
.ap-btn{display:inline-flex;align-items:center;height:30px;padding:0 12px;border-radius:8px;background:var(--ap-ink);color:#fff;font-size:12px}
.ap-btn.ghost{background:#fff;color:var(--ap-ink);box-shadow:var(--ap-s1)}
.ap-hint{font-size:12px;color:var(--ap-muted)}
.ap-drawer-tp{width:320px}
.ap-dh b.tp::before{content:"⇄"}
.ap-tp{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border-radius:10px;background:#fbfbfc;box-shadow:var(--ap-s1);margin-top:6px}
.ap-tp div{display:grid;line-height:18px;color:var(--ap-ink)}
.ap-tp small{font-size:11px;color:var(--ap-muted);font-weight:400}
.ap-tp b{font-family:var(--mono);font-weight:400;color:var(--ap-ink)}
.ap-tpbtns{display:flex;gap:8px;margin-top:14px}
.v3-scene.s3 .ap-drawer-tp{transform:none}
.v3-scene.s5 .ap-drawer-tp{transform:translateX(104%)}

@media (prefers-reduced-motion: reduce){
  .v3-scene.s5 .ap-drawer-tp{transform:none}
}
.v3-app .ap-bezel{transform:none;opacity:1}
.ap-table-drv{-webkit-mask-image:none;mask-image:none}
.ap-hint .ok{display:none;color:var(--good)}
.v3-scene.s4 .ap-hint .bad{display:none}
.v3-scene.s4 .ap-hint .ok{display:inline}

/* Ruled 2026-10-08: the dot grid, not the wash, sits behind the app frame.
   Heroes that carry an app frame drop the ice wash; the dots carry the stage. */
.v3-hero:has(.v3-app-wrap){background:#fff}
.v3-app-wrap::before{inset:-40px -80px -30px;background:radial-gradient(circle,rgba(56,115,145,.26) 1px,transparent 1.5px) 0 0/16px 16px;-webkit-mask-image:radial-gradient(75% 70% at 50% 50%,#000 45%,transparent 100%);mask-image:radial-gradient(75% 70% at 50% 50%,#000 45%,transparent 100%)}

/* Phone (2026-10-09): the app window drops its sidebar and shows the screen itself at
   full size; the Trace drawer opens over it like a phone sheet. ?phone=fit (html.ph-fit)
   shows the whole window shrunk to fit instead (js/v3-page.js), for comparison. */
@media (max-width:600px){
  html:not(.ph-fit) .v3-app .ap-side{display:none!important}   /* !: the homepage's per-view sidebar rules are more specific */
  html:not(.ph-fit) .v3-app .v3-window.ap-screen{grid-template-columns:minmax(0,1fr);height:540px}
  html:not(.ph-fit) .v3-app .ap-drawer{width:100%}
  html:not(.ph-fit) .v3-app .ap-main{grid-template-columns:minmax(0,1fr)}   /* else it grows to its widest row */
  html:not(.ph-fit) .v3-app .ap-scope{display:none}
  html:not(.ph-fit) .v3-app .ap-kpis{grid-template-columns:minmax(0,1fr)}
  html:not(.ph-fit) .v3-app .ap-kpis > :nth-child(n+2){display:none}       /* the headline figure only */
  html:not(.ph-fit) .v3-app :is(.ap-tr,.ap-table-drv .ap-tr){grid-template-columns:minmax(0,1fr) auto;gap:12px}
  html:not(.ph-fit) .v3-app .ap-tr > :is(:nth-child(2),.ap-share){display:none}
  html:not(.ph-fit) .v3-app .ap-toast{width:calc(100% - 32px);max-width:none;display:grid;grid-template-columns:20px minmax(0,1fr);align-items:start}
  html:not(.ph-fit) .v3-app .ap-toast small{grid-column:2;display:block}
  html:not(.ph-fit) .v3-app .ap-top .ap-chip{display:none}                   /* dates and counts; the narration pill stays */
  html:not(.ph-fit) .v3-app .v3-scene{padding:18px 18px 0}
  html:not(.ph-fit) .v3-app .ap-zone > span{display:none}            /* the side note under a table title; the title carries it */
  html:not(.ph-fit) .v3-app .ap-crumb{font-size:0}
  html:not(.ph-fit) .v3-app .ap-crumb b{font-size:13px}   /* page name only; the pill gets the room */
  html:not(.ph-fit) .v3-app .ap-crumb i{display:none}
  /* coverage board: name and status on one line, the band track full width beneath */
  html:not(.ph-fit) .v3-app :is(.ap-bhead,.ap-brow){grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"n v" "t t";gap:6px 12px}
  html:not(.ph-fit) .v3-app .ap-brow > span:first-child{grid-area:n}
  html:not(.ph-fit) .v3-app .ap-btrack{grid-area:t}
  html:not(.ph-fit) .v3-app .ap-bval{grid-area:v}
  html:not(.ph-fit) .v3-app .ap-bhead{display:none}
  html:not(.ph-fit) .v3-app .ap-brow{height:auto;padding:12px 10px}
  /* the homepage window never shows 'copied' toasts (as on desktop) */
  html:not(.ph-fit) .v4-surf .v3-app .ap-toast{display:none}
  /* the window takes the height of the screen it shows: no blank band under short screens */
  html:not(.ph-fit) .v3-app .v3-window.ap-screen{height:auto;min-height:480px}
  html:not(.ph-fit) .v3-app .ap-main{grid-template-rows:52px auto}
  html:not(.ph-fit) .v3-app .v3-scene:not(.is-on){display:none}
  html:not(.ph-fit) .v3-app .v3-scene.is-on{position:relative;inset:auto;padding-bottom:20px}
  html:not(.ph-fit) .v3-app .v3-scene.is-on:has(.ap-drawer){min-height:560px}   /* room for the Trace drawer's full story */
  html:not(.ph-fit) .v3-app .ap-split i{padding:0 10px}
  html:not(.ph-fit) .v3-app .ap-split i b{font-size:12px}
  /* role-page heroes on a phone (review 10-09): no 'copied' toasts over content, segment
     controls stay on one line, the path keeps a right gutter, the window keeps one height */
  html:not(.ph-fit) .v3-app .ap-toast{display:none!important}
  html:not(.ph-fit) .v3-app .ap-seg span{height:auto;min-height:24px;padding:3px 8px;white-space:nowrap;font-size:11px}
  html:not(.ph-fit) .v3-app .ap-seg{flex-wrap:wrap}
  html:not(.ph-fit) .v3-app .ap-path{padding:12px 16px 0;-webkit-mask-image:linear-gradient(90deg,#000 85%,transparent);mask-image:linear-gradient(90deg,#000 85%,transparent)}
  html:not(.ph-fit) .v3-hero .v3-app .v3-window.ap-screen{min-height:560px}
  html:not(.ph-fit) .v3-app .ap-split i b{white-space:nowrap}
  html:not(.ph-fit) .v3-app .ap-split i{min-width:max-content}
  html:not(.ph-fit) .v3-app .ap-top{flex-wrap:nowrap;overflow:hidden;min-width:0}
  html:not(.ph-fit) .v3-app .ap-live{min-width:0;flex-shrink:1}
  html:not(.ph-fit) .v3-hero .ap-cfo .v3-window.ap-screen{min-height:700px}
}

/* Phone pass 3 (2026-10-13): a scene with a drawer is as tall as the taller of its own content
   and its drawer, no taller. The drawer used to float over the scene, so every drawer scene was
   held at 560 px: short drawers left a blank band, long ones still needed the room. Now the
   drawer shares the scene's grid cell, so the window fits it exactly. */
@media (max-width:600px){
  html:not(.ph-fit) .v3-app .v3-scene.is-on:has(> .ap-drawer){display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:repeat(6,auto) 1fr;align-content:start;min-height:0}
  html:not(.ph-fit) .v3-app .v3-scene.is-on:has(> .ap-drawer) > *{grid-column:1}
  html:not(.ph-fit) .v3-app .v3-scene.is-on:has(> .ap-drawer) > :nth-child(1){grid-row:1}
  html:not(.ph-fit) .v3-app .v3-scene.is-on:has(> .ap-drawer) > :nth-child(2){grid-row:2}
  html:not(.ph-fit) .v3-app .v3-scene.is-on:has(> .ap-drawer) > :nth-child(3){grid-row:3}
  html:not(.ph-fit) .v3-app .v3-scene.is-on:has(> .ap-drawer) > :nth-child(4){grid-row:4}
  html:not(.ph-fit) .v3-app .v3-scene.is-on:has(> .ap-drawer) > :nth-child(5){grid-row:5}
  html:not(.ph-fit) .v3-app .v3-scene.is-on:has(> .ap-drawer) > :nth-child(6){grid-row:6}
  html:not(.ph-fit) .v3-app .v3-scene.is-on:has(> .ap-drawer) > .ap-drawer:nth-child(n){position:relative;inset:auto;grid-row:1 / -1;width:auto;margin:-18px -18px -20px;align-self:stretch}
  /* the scene fills a window held at its minimum height, so the drawer reaches the bottom edge */
  html:not(.ph-fit) .v3-app .ap-main{grid-template-rows:52px 1fr}
  html:not(.ph-fit) .v3-app .ap-views{display:grid;grid-template-columns:minmax(0,1fr)}
  /* the Trace steps cross-fade in one cell instead of floating, so the drawer counts their height */
  html:not(.ph-fit) .v3-app .v3-scene.is-on > .ap-drawer .ap-dbody{display:grid;grid-template-columns:minmax(0,1fr);row-gap:8px;align-content:start}
  html:not(.ph-fit) .v3-app .v3-scene.is-on > .ap-drawer .ap-dbody > .ap-step{position:relative;inset:auto;grid-row:2;grid-column:1}
}
