/* ============================ FONTS ============================ */
@font-face{font-family:"Fraunces";font-style:normal;font-weight:400 600;font-display:swap;
  src:url("/assets/fonts/fraunces.woff2") format("woff2");}
@font-face{font-family:"Plex Mono";font-style:normal;font-weight:400;font-display:swap;
  src:url("/assets/fonts/plexmono400.woff2") format("woff2");}
@font-face{font-family:"Plex Mono";font-style:normal;font-weight:500;font-display:swap;
  src:url("/assets/fonts/plexmono500.woff2") format("woff2");}

/* ============================ TOKENS ============================ */
:root{
  --bg:#F5F1E8; --surface:#FBF8F1; --ink:#1C2420; --muted:#57645C; --hairline:#DDD5C3;
  --accent:#174F3B; --accent-hover:#0F3D2D; --accent-active:#0B2F23; --accent-wash:#E3EDE2;
  --clay:#A85B32; --clay-deep:#8C4A26; --clay-wash:#F3E3D3;
  --focus:rgba(23,79,59,.38); --nav-bg:rgba(245,241,232,.8);
  --band-bg:#122A20; --band-ink:#EFE9DA; --band-muted:#A9B5A9; --band-hairline:#2A4234;
  --band-green:#7FC7A4; --band-clay:#D89767;
  --serif:"Fraunces",Georgia,"Times New Roman",serif;
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --mono:"Plex Mono",ui-monospace,"SF Mono",Menlo,monospace;
  --maxw:1120px; --ease:cubic-bezier(.2,0,0,1);
}
@media (prefers-color-scheme:dark){:root{
  --bg:#0F1713; --surface:#16211B; --ink:#EDE7D8; --muted:#8FA094; --hairline:#263229;
  --accent:#4FB588; --accent-hover:#66C79C; --accent-active:#3FA377; --accent-wash:rgba(79,181,136,.14);
  --clay:#D98E5F; --clay-deep:#D98E5F; --clay-wash:rgba(217,142,95,.14);
  --focus:rgba(79,181,136,.4); --nav-bg:rgba(15,23,19,.72);
}}
:root[data-theme="light"]{
  --bg:#F5F1E8; --surface:#FBF8F1; --ink:#1C2420; --muted:#57645C; --hairline:#DDD5C3;
  --accent:#174F3B; --accent-hover:#0F3D2D; --accent-active:#0B2F23; --accent-wash:#E3EDE2;
  --clay:#A85B32; --clay-deep:#8C4A26; --clay-wash:#F3E3D3; --nav-bg:rgba(245,241,232,.8);
}
:root[data-theme="dark"]{
  --bg:#0F1713; --surface:#16211B; --ink:#EDE7D8; --muted:#8FA094; --hairline:#263229;
  --accent:#4FB588; --accent-hover:#66C79C; --accent-active:#3FA377; --accent-wash:rgba(79,181,136,.14);
  --clay:#D98E5F; --clay-deep:#D98E5F; --clay-wash:rgba(217,142,95,.14); --nav-bg:rgba(15,23,19,.72);
}

/* ============================ BASE ============================ */
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:18px;line-height:1.62;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden}
a{color:inherit;text-decoration:none}
h1,h2,h3,h4,p{margin:0}
img{max-width:100%}
::selection{background:var(--accent);color:var(--surface)}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 32px}
@media (max-width:640px){.wrap{padding:0 22px}}
.eyebrow{font-family:var(--mono);font-weight:500;font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--accent);display:inline-block}
.eyebrow .n{color:var(--muted);margin-right:.5em}
h1,h2,h3{font-family:var(--serif);font-weight:520;line-height:1.06;letter-spacing:-.01em;text-wrap:balance}
.h-hero{font-size:clamp(40px,7.2vw,88px);line-height:1.02;letter-spacing:-.022em}
.h-page{font-size:clamp(38px,6vw,72px);line-height:1.02;letter-spacing:-.02em}
.h-sec{font-size:clamp(30px,4.4vw,52px);margin-top:20px}
.lead{color:var(--muted);font-size:clamp(18px,2.1vw,22px);line-height:1.55;max-width:60ch}
.body-lg{font-size:19px;color:var(--muted);max-width:62ch;line-height:1.62}
section{padding:clamp(84px,11vh,140px) 0;position:relative}
.divider{border-top:1px solid var(--hairline)}
.stack-sm{display:flex;flex-direction:column;gap:18px}

/* ============================ NAV ============================ */
header.nav{position:fixed;top:16px;left:0;right:0;z-index:50;display:flex;justify-content:center;pointer-events:none}
.navpill{pointer-events:auto;display:flex;align-items:center;gap:26px;background:var(--nav-bg);
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid var(--hairline);border-radius:999px;
  padding:11px 14px 11px 22px;transition:box-shadow .3s var(--ease),border-color .3s;max-width:calc(100vw - 32px)}
.navpill.scrolled{box-shadow:0 12px 44px -20px rgba(11,47,35,.4)}
.brand{display:flex;align-items:center;gap:10px;font-weight:500;font-size:15px;letter-spacing:.14em}
.brandmark{width:15px;height:15px;border-radius:50%;border:1.5px solid var(--accent);position:relative;flex:none}
.brandmark::after{content:"";position:absolute;inset:3px;border-radius:50%;background:var(--accent)}
.navlinks{display:flex;gap:20px;font-size:14px;color:var(--muted)}
.navlinks a{transition:color .2s;position:relative}
.navlinks a:hover,.navlinks a[aria-current="page"]{color:var(--ink)}
.navlinks a[aria-current="page"]::after{content:"";position:absolute;left:0;right:0;bottom:-5px;height:1.5px;background:var(--accent)}
.navcta{font-size:14px;font-weight:500;background:var(--ink);color:var(--bg);padding:9px 17px;border-radius:999px;
  transition:background .2s var(--ease),transform .2s var(--ease)}
.navcta:hover{background:var(--accent);transform:scale(1.03)}
@media (max-width:820px){.navlinks{display:none}}

/* ============================ BUTTONS ============================ */
.cta-row{display:flex;gap:18px;align-items:center;flex-wrap:wrap}
.btn-pill{background:var(--ink);color:var(--bg);font-weight:500;font-size:15.5px;padding:14px 26px;border-radius:999px;
  transition:background .2s var(--ease),transform .2s var(--ease);border:none;cursor:pointer;font-family:inherit}
.btn-pill:hover{background:var(--accent);transform:scale(1.02)}
.btn-pill:active{background:var(--accent-active)}
.btn-ghost{background:transparent;color:var(--accent);font-weight:500;font-size:15.5px;padding:13px 24px;border-radius:999px;border:1px solid var(--accent);transition:background .2s,color .2s;cursor:pointer;font-family:inherit}
.btn-ghost:hover{background:var(--accent-wash)}
.btn-text{color:var(--accent);font-weight:500;font-size:15.5px;display:inline-flex;gap:7px;align-items:center}
.btn-text:hover{color:var(--accent-hover)}
.btn-text .arr{transition:transform .25s var(--ease)}
.btn-text:hover .arr{transform:translateX(3px)}
.btn-text.down:hover .arr{transform:translateY(3px)}

/* ============================ PAGE HERO (sub-pages) ============================ */
.pagehero{padding-top:clamp(150px,20vh,210px);padding-bottom:clamp(30px,5vh,60px)}
.pagehero .eyebrow{margin-bottom:22px}
.pagehero .lead{margin-top:26px}

/* ============================ LAYOUT PRIMITIVES ============================ */
.two{display:grid;grid-template-columns:.85fr 1.15fr;gap:clamp(32px,6vw,88px);align-items:start}
@media (max-width:820px){.two{grid-template-columns:1fr;gap:28px}}
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:26px;margin-top:56px}
@media (max-width:820px){.steps{grid-template-columns:1fr;gap:20px}}
.step{background:var(--surface);border:1px solid var(--hairline);border-radius:18px;padding:28px 26px 30px;
  transition:border-color .25s var(--ease);display:flex;flex-direction:column;gap:16px}
.step:hover{border-color:var(--accent)}
.step .k{font-family:var(--mono);font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);display:flex;gap:9px;align-items:center}
.step .k b{font-weight:500;color:var(--muted)}
.step h3{font-size:23px;line-height:1.1}
.step p{font-size:15.5px;color:var(--muted);line-height:1.56}
.step-fig{height:74px;margin-top:2px}
.step-fig svg{height:74px;width:auto;overflow:visible}
.tri{display:grid;grid-template-columns:repeat(3,1fr);gap:26px;margin-top:56px}
@media (max-width:820px){.tri{grid-template-columns:1fr;gap:20px}}
.pr{border-top:2px solid var(--ink);padding-top:24px;display:flex;flex-direction:column;gap:14px}
.pr .dot{width:13px;height:13px;border-radius:50%;border:1.5px solid var(--accent);position:relative}
.pr .dot::after{content:"";position:absolute;inset:3px;border-radius:50%;background:var(--accent)}
.pr h3{font-size:25px;line-height:1.08}
.pr p{font-size:16px;color:var(--muted);line-height:1.58}
.pr .more{font-family:var(--mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--accent)}

/* feature rows (product / how-it-works) */
.frow{display:grid;grid-template-columns:1fr 1fr;gap:clamp(32px,6vw,72px);align-items:center;padding:clamp(48px,7vh,84px) 0;border-top:1px solid var(--hairline)}
.frow:nth-child(even) .frow-media{order:-1}
@media (max-width:820px){.frow{grid-template-columns:1fr;gap:28px}.frow:nth-child(even) .frow-media{order:0}}
.frow h3{font-size:clamp(26px,3.4vw,38px);margin-top:14px}
.frow p{font-size:17px;color:var(--muted);line-height:1.6;margin-top:16px;max-width:52ch}
.frow-media{background:var(--surface);border:1px solid var(--hairline);border-radius:20px;padding:30px;min-height:220px;display:grid;place-items:center}
.frow-media svg{width:100%;height:auto;overflow:visible}

/* prose list */
.plist{list-style:none;margin:22px 0 0;padding:0;display:flex;flex-direction:column;gap:14px}
.plist li{position:relative;padding-left:26px;color:var(--muted);font-size:16.5px;line-height:1.55}
.plist li::before{content:"";position:absolute;left:0;top:9px;width:9px;height:9px;border-radius:50%;background:var(--accent)}
.plist li b{color:var(--ink);font-weight:500}

/* ============================ DARK BAND + LOOP ============================ */
.band{background:var(--band-bg);color:var(--band-ink);border-top:1px solid var(--band-hairline);border-bottom:1px solid var(--band-hairline)}
.band .eyebrow{color:var(--band-green)}
.band .eyebrow .n{color:var(--band-muted)}
.band .lead,.band .body-lg{color:var(--band-muted)}
.band h2,.band h3{color:var(--band-ink)}
.loop-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(36px,6vw,72px);align-items:center;margin-top:8px}
@media (max-width:880px){.loop-grid{grid-template-columns:1fr;gap:44px}}
.loop-copy p{margin-top:20px}
.pull{font-family:var(--serif);font-style:italic;font-size:clamp(24px,3.4vw,34px);line-height:1.2;color:var(--band-ink);margin-top:34px;letter-spacing:-.01em;max-width:22ch}
.loop-fig{display:grid;place-items:center}
.loopfig{display:block;width:min(500px,80vw);height:auto;overflow:visible}
.loop-legend{display:flex;gap:22px;margin-top:8px;flex-wrap:wrap;justify-content:center}
.loop-legend span{font-family:var(--mono);font-size:11px;letter-spacing:.05em;text-transform:uppercase;color:var(--band-muted);display:inline-flex;align-items:center;gap:8px}
.lg-dot{width:10px;height:10px;border-radius:50%;flex:none}
.loopfig .ring{fill:none;stroke:var(--band-hairline);stroke-width:1.5;opacity:.55}
.loopfig .glabel{font-family:var(--mono);font-size:10.5px;fill:var(--band-muted);letter-spacing:.09em;text-transform:uppercase}
.loopfig .snode{fill:var(--band-bg);stroke:var(--band-clay);stroke-width:1.6}
.loopfig .gtick{stroke:var(--band-muted);stroke-width:2.4;stroke-linecap:round}
.loopfig .bar{stroke:var(--band-ink);stroke-width:2.4;stroke-linecap:round}
.loopfig .corewash{fill:var(--band-green);opacity:0}
/* Loop motion: a group rotates the "pass" dot around the ring (rock-solid —
   no offset-path). transform-box:view-box makes the origin the viewBox center. */
.loopfig .pass-g{transform-box:view-box;transform-origin:260px 260px}
.loopfig .pass-dot{fill:var(--band-clay)}
.loopfig .rej-dot{fill:var(--band-clay);opacity:0;transform-box:view-box;transform-origin:260px 260px}
@media (prefers-reduced-motion:no-preference){
  .loopfig .ring{stroke-dasharray:2 10;animation:crawl 1.4s linear infinite}
  .loopfig .pass-g{animation:spin 9s linear infinite}
  .loopfig .pass-dot{animation:passcolor 9s linear infinite}
  .loopfig .rej-dot{animation:reject 9s ease-in-out infinite}
  .loopfig .gtick{animation:gatereact 9s linear infinite}
  .loopfig .corewash{animation:coreflash 9s linear infinite}
}
@keyframes crawl{to{stroke-dashoffset:-12}}
/* rotate clockwise: 0%=top(correction) 25%=right(proposed) 50%=bottom(gate) 75%=left(merge) */
@keyframes spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}
@keyframes passcolor{0%,48%{fill:var(--band-clay)}54%,100%{fill:var(--band-green)}}
/* reject: appears near the gate after the pass dot clears it, is pushed outward, fades */
@keyframes reject{0%,60%{opacity:0;transform:translate(0,0)}64%{opacity:1;transform:translate(0,0)}80%{opacity:1;transform:translate(34px,54px)}90%{opacity:0;transform:translate(46px,74px)}100%{opacity:0;transform:translate(46px,74px)}}
@keyframes gatereact{0%,45%{stroke:var(--band-muted)}50%{stroke:var(--band-green)}55%,72%{stroke:var(--band-muted)}77%{stroke:var(--band-clay)}82%,100%{stroke:var(--band-muted)}}
@keyframes coreflash{0%,72%{opacity:0}77%{opacity:.4}82%,100%{opacity:0}}
@media (prefers-reduced-motion:reduce){
  .loopfig .ring{stroke-dasharray:none}
  .loopfig .pass-g{transform:rotate(205deg)}
  .loopfig .pass-dot{fill:var(--band-green)}
  .loopfig .rej-dot{opacity:.5;transform:translate(34px,54px)}
}

/* ============================ WHO / STAGE / CLOSE ============================ */
.who{display:grid;grid-template-columns:1fr 1fr;gap:26px;margin-top:52px}
@media (max-width:820px){.who{grid-template-columns:1fr;gap:20px}}
.who-card{background:var(--surface);border:1px solid var(--hairline);border-radius:18px;padding:32px 30px;display:flex;flex-direction:column;gap:14px;transition:border-color .25s var(--ease)}
.who-card:hover{border-color:var(--accent)}
.who-card .tag{font-family:var(--mono);font-size:12px;letter-spacing:.12em;text-transform:uppercase}
.who-card.today .tag{color:var(--accent)}
.who-card.road .tag{color:var(--clay-deep)}
.who-card h3{font-size:26px;line-height:1.08}
.who-card p{font-size:16px;color:var(--muted);line-height:1.58}
.logos{display:flex;gap:14px;flex-wrap:wrap;margin-top:44px;align-items:center}
.logo-chip{font-family:var(--mono);font-size:13px;letter-spacing:.04em;color:var(--muted);border:1px solid var(--hairline);border-radius:999px;padding:11px 20px;background:var(--surface)}
.logo-chip b{color:var(--ink);font-weight:500}
.stage-note{font-family:var(--mono);font-size:12px;color:var(--muted);margin-top:18px;letter-spacing:.02em}
.close{text-align:center}
.close h2{font-size:clamp(34px,5.2vw,60px);max-width:16ch;margin:0 auto}
.close .body-lg{margin:24px auto 0;text-align:center}
.close .cta-row{justify-content:center}

/* ============================ FOOTER ============================ */
footer.site{background:var(--band-bg);color:var(--band-muted);border-top:1px solid var(--band-hairline)}
.foot-grid{display:grid;grid-template-columns:2.2fr 1fr 1fr 1fr;gap:56px;padding:88px 0 8px}
@media (max-width:720px){.foot-grid{grid-template-columns:1fr;gap:40px;padding-top:64px}}
.foot-brand{display:flex;flex-direction:column;gap:16px;max-width:38ch}
.foot-brand .brand{color:var(--band-ink);font-family:var(--serif);font-size:24px;font-weight:520;letter-spacing:0;display:flex;align-items:center;gap:11px}
.foot-brand .brandmark{border-color:var(--band-green)}
.foot-brand .brandmark::after{background:var(--band-green)}
.foot-desc{font-size:15px;color:var(--band-muted);line-height:1.5}
.foot-etym{font-family:var(--serif);font-style:italic;font-size:14.5px;color:var(--band-muted);line-height:1.5;padding-top:18px;border-top:1px solid var(--band-hairline)}
.foot-contact{font-size:15px}
.foot-contact a{color:var(--band-ink);border-bottom:1px solid transparent;transition:border-color .2s,color .2s}
.foot-contact a:hover{color:var(--band-green);border-color:var(--band-green)}
.foot-contact .sub{display:block;font-size:13px;color:var(--band-muted);margin-top:5px}
.foot-col h4{font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--band-muted);margin:0 0 16px}
.foot-col ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:11px}
.foot-col a{font-size:15px;color:var(--band-ink);transition:color .2s}
.foot-col a:hover{color:var(--band-green)}
.foot-closing{text-align:center;font-family:var(--serif);font-style:italic;font-size:clamp(18px,2.4vw,22px);color:var(--band-ink);padding:44px 0;margin-top:44px;border-top:1px solid var(--band-hairline);border-bottom:1px solid var(--band-hairline)}
.foot-bar{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;padding:26px 0;font-family:var(--mono);font-size:12px;letter-spacing:.03em;color:var(--band-muted)}
.foot-bar a{transition:color .2s}
.foot-bar a:hover{color:var(--band-ink)}
.foot-bar .made{display:inline-flex;align-items:center;gap:8px}
.foot-bar .made .d{width:6px;height:6px;border-radius:50%;background:var(--band-green)}
.foot-reg{text-align:center;font-family:var(--mono);font-size:11.5px;color:var(--band-muted);opacity:.72;padding:0 0 40px;line-height:1.5}

/* ============================ REVEAL / FOCUS ============================ */
.reveal{opacity:0;transform:translateY(18px)}
.reveal.in{opacity:1;transform:none;transition:opacity .7s var(--ease),transform .7s var(--ease)}
@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none}}
a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:5px}
.band a:focus-visible,footer.site a:focus-visible{outline-color:var(--band-green)}

/* ============================ HERO FIGURE ============================ */
.hero{padding-top:clamp(150px,22vh,220px);padding-bottom:clamp(56px,8vh,90px);text-align:center}
.hero .eyebrow{margin-bottom:26px}
.hero h1{margin:0 auto;max-width:15ch}
.hero .lead{margin:28px auto 0;text-align:center}
.hero .cta-row{justify-content:center;margin-top:40px}
.hero-fig{margin:clamp(52px,7vh,88px) auto 0;max-width:600px;text-align:left;display:flex;flex-direction:column;align-items:center;gap:0}
.hf-card{width:100%;background:var(--surface);border:1px solid var(--hairline);border-radius:16px;padding:20px 22px}
.hf-frame{border-top:2px solid var(--accent)}
.hf-chip,.hf-lbl,.hf-tlabel{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.hf-sentence{font-family:var(--mono);font-size:14.5px;line-height:1.7;color:var(--ink);margin-top:12px}
.hf-sentence .hl{background:linear-gradient(var(--accent-wash),var(--accent-wash)) left center / 100% 100% no-repeat;border-bottom:2px solid var(--accent);padding:1px 3px;border-radius:2px}
.hf-frow{display:flex;justify-content:space-between;align-items:center}
.hf-badge{font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);background:var(--accent-wash);padding:5px 10px;border-radius:999px;display:inline-flex;gap:6px;align-items:center}
.hf-slots{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin-top:18px}
.hf-slots .slot{display:flex;flex-direction:column;gap:5px;min-width:0}
.hf-slots .slot span{font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.hf-slots .slot b{font-weight:500;font-size:14px;line-height:1.2}
.hf-slots .slot b.g{color:var(--accent)}
.hf-evi{margin-top:18px;padding-top:12px;border-top:1px dashed var(--hairline);font-size:12px;font-style:italic;color:var(--muted)}
.hf-spine{width:1.5px;height:34px;background:var(--accent);flex:none}
.hf-track{width:100%;background:var(--surface);border:1px solid var(--hairline);border-radius:16px;padding:20px 22px}
.hf-track .hf-tlabel{display:block;margin-bottom:6px}
.hf-tsvg{width:100%;height:auto;display:block;overflow:visible}
.hf-tsvg .base{stroke:var(--hairline);stroke-width:1.5}
.hf-tsvg .traj{stroke:var(--accent);stroke-width:2;fill:none;opacity:.55}
.hf-tsvg .dot{fill:var(--accent)}
.hf-tsvg .ring{fill:none;stroke:var(--accent);stroke-width:2}
.hf-tsvg .val{font-family:var(--mono);font-size:13px;font-weight:500;fill:var(--ink)}
.hf-tsvg .dat{font-family:var(--mono);font-size:9.5px;letter-spacing:.06em;fill:var(--muted)}
.hf-tsvg .delta{font-family:var(--mono);font-size:11px;fill:var(--clay-deep)}
.hf-tsvg .deltabg{fill:var(--clay-wash)}
.thread-cap{font-family:var(--mono);font-size:11.5px;letter-spacing:.06em;color:var(--muted);text-align:center;margin-top:20px;text-transform:uppercase}
.hero-fig .hf-card,.hero-fig .hf-track,.hero-fig .hf-spine{opacity:0;transform:translateY(10px)}
.hero-fig.in .hf-card,.hero-fig.in .hf-track,.hero-fig.in .hf-spine{opacity:1;transform:none;transition:opacity .6s var(--ease),transform .6s var(--ease)}
.hero-fig.in .hf-report{transition-delay:.05s}
.hero-fig.in .hf-spine:nth-of-type(2){transition-delay:.9s}
.hero-fig.in .hf-frame{transition-delay:1s}
.hero-fig.in .hf-spine:nth-of-type(4){transition-delay:1.7s}
.hero-fig.in .hf-track{transition-delay:1.8s}
.hf-sentence .hl{background-size:0% 100%}
.hero-fig.in .hf-sentence .hl{animation:hlgrow .5s var(--ease) forwards}
.hero-fig.in .hf-sentence .hl:nth-of-type(1){animation-delay:.5s}
.hero-fig.in .hf-sentence .hl:nth-of-type(2){animation-delay:.66s}
.hf-badge{opacity:0}
.hero-fig.in .hf-badge{animation:stamp .45s cubic-bezier(.2,.9,.3,1.25) 1.5s forwards}
@keyframes hlgrow{to{background-size:100% 100%}}
@keyframes stamp{from{opacity:0;transform:scale(1.18)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){
  .hero-fig .hf-card,.hero-fig .hf-track,.hero-fig .hf-spine{opacity:1;transform:none}
  .hf-sentence .hl{background-size:100% 100%}
  .hf-badge{opacity:1}
}

/* ============================ DEMO WORKSPACE ============================ */
.demo-banner{font-family:var(--mono);font-size:11.5px;letter-spacing:.04em;color:var(--muted);background:var(--surface);border:1px solid var(--hairline);border-radius:999px;padding:8px 16px;display:inline-flex;gap:8px;align-items:center;margin-top:20px}
.demo-banner .d{width:6px;height:6px;border-radius:50%;background:var(--clay);flex:none}
.workspace{display:grid;grid-template-columns:280px 1fr;gap:24px;margin-top:44px;align-items:start}
@media (max-width:820px){.workspace{grid-template-columns:1fr;gap:18px}}
.rail{display:flex;flex-direction:column;gap:10px;position:sticky;top:96px}
@media (max-width:820px){.rail{position:static;flex-direction:row;overflow-x:auto;padding-bottom:6px}}
.rail-loading{color:var(--muted);padding:16px}
.rail-item{text-align:left;background:var(--surface);border:1px solid var(--hairline);border-left:3px solid transparent;border-radius:14px;padding:16px 18px;cursor:pointer;display:flex;flex-direction:column;gap:5px;transition:border-color .2s,background .2s;font-family:inherit;min-width:220px}
.rail-item:hover{border-color:var(--accent)}
.rail-item.active{border-left-color:var(--accent);background:var(--accent-wash)}
.rail-id{font-family:var(--mono);font-size:13px;font-weight:500;letter-spacing:.06em;color:var(--ink)}
.rail-dx{font-family:var(--serif);font-size:16px;color:var(--ink);line-height:1.15}
.rail-meta{font-family:var(--mono);font-size:11px;color:var(--muted);letter-spacing:.03em}
.panel{min-width:0;background:var(--surface);border:1px solid var(--hairline);border-radius:20px;padding:clamp(22px,3vw,34px)}
.pt-head{display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap;align-items:flex-start;padding-bottom:24px;border-bottom:1px solid var(--hairline)}
.pt-id .mono{font-family:var(--mono);font-size:12px;letter-spacing:.08em;color:var(--muted)}
.pt-id h2{font-size:clamp(24px,3vw,34px);margin-top:6px}
.pt-sub{display:block;font-family:var(--mono);font-size:12px;color:var(--muted);margin-top:8px;letter-spacing:.02em}
.pt-status{text-align:right;display:flex;flex-direction:column;gap:8px;align-items:flex-end}
.pill{font-family:var(--mono);font-size:12px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;padding:7px 14px;border-radius:999px}
.pill-clay{color:var(--clay-deep);background:var(--clay-wash)}
.pill-green{color:var(--accent);background:var(--accent-wash)}
.pill-neutral{color:var(--ink);background:var(--hairline)}
.pt-basis{font-family:var(--mono);font-size:11px;color:var(--muted);max-width:34ch;line-height:1.4;letter-spacing:.02em}
.pt-tracklabel{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:26px 0 12px}
.trk-list{display:flex;flex-direction:column;gap:8px}
.trk{text-align:left;background:transparent;border:1px solid var(--hairline);border-radius:12px;padding:14px 16px;cursor:pointer;display:grid;grid-template-columns:1fr auto;gap:4px 14px;align-items:center;transition:border-color .2s,background .2s;font-family:inherit}
.trk:hover{border-color:var(--accent)}
.trk.active{border-color:var(--accent);background:var(--accent-wash)}
.trk-title{font-size:16px;font-weight:500;color:var(--ink)}
.trk-meta{font-family:var(--mono);font-size:11px;color:var(--muted);grid-column:1;letter-spacing:.02em}
.trk-tag{grid-column:2;grid-row:1 / span 2;font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);white-space:nowrap}
.trk-tag.traj-growing{color:var(--clay-deep)}
.trk-tag.traj-responding,.trk-tag.traj-resolved{color:var(--accent)}
.trk-tag.traj-new{color:var(--clay-deep)}
.tl-wrap{margin-top:30px;border-top:1px solid var(--hairline);padding-top:26px}
.tl-head{display:flex;justify-content:space-between;align-items:baseline;gap:16px;flex-wrap:wrap;margin-bottom:22px}
.tl-head h3{font-size:22px}
.tl-site{font-size:12px;color:var(--muted)}
.timeline{display:flex;flex-direction:column;gap:18px}
.frame{display:grid;grid-template-columns:120px 1fr;gap:20px}
@media (max-width:560px){.frame{grid-template-columns:1fr;gap:10px}}
.fdate{font-family:var(--mono);font-size:12px;color:var(--ink);letter-spacing:.03em;padding-top:2px;display:flex;flex-direction:column;gap:4px}
.fmod{color:var(--muted);font-size:11px}
.fbody{background:var(--bg);border:1px solid var(--hairline);border-radius:14px;padding:18px 20px;min-width:0}
.fbody-top{display:flex;justify-content:flex-end;margin-bottom:12px}
.chip{font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.06em;padding:5px 11px;border-radius:999px;cursor:default}
.chip-verified{color:var(--accent);background:var(--accent-wash)}
.chip-pending{color:var(--clay-deep);background:var(--clay-wash)}
.fslots{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
@media (max-width:640px){.fslots{grid-template-columns:repeat(2,1fr)}}
.fslot{display:flex;flex-direction:column;gap:5px;min-width:0;border-radius:6px}
.fslot span.mono{font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.fslot b{font-weight:500;font-size:14.5px;font-family:var(--serif);line-height:1.2}
.fslot-change{cursor:default}
.fslot b .glyph{font-size:11px}
.fslot b.g,.fslot .glyph.down{color:var(--accent)}
.fslot b.c,.fslot .glyph.up,.fslot .glyph.new{color:var(--clay-deep)}
.fslot .glyph.flat{color:var(--muted)}
.fslots .fslot:nth-child(3){transition:background .2s;padding:2px 4px;margin:-2px -4px}
.fslots .fslot:nth-child(3):hover{background:var(--accent-wash)}
.fsrc{margin:16px 0 0;padding:12px 16px;border-left:3px solid var(--accent);background:var(--surface);border-radius:0 8px 8px 0}
.fsrc-pending{border-left-color:var(--clay)}
.fsrc-lbl{display:block;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:7px}
.fsrc-text{font-family:var(--mono);font-size:13px;line-height:1.6;color:var(--ink)}
.fsrc-text mark{background:var(--accent-wash);color:var(--accent);padding:1px 3px;border-radius:2px;font-weight:500}
.demo-empty{text-align:center;padding:60px 20px;color:var(--muted)}
.demo-empty.small{padding:30px}
.demo-empty h3{font-size:24px;color:var(--ink)}
.demo-empty p{margin-top:12px;max-width:40ch;margin-left:auto;margin-right:auto;line-height:1.55}
.demo-empty .btn-ghost{margin-top:20px}

/* ============================ RESPONSIVE PASS ============================ */
/* demo banner: wrap cleanly instead of overflowing on small screens */
.demo-banner{align-items:flex-start;max-width:100%;line-height:1.5}
.demo-banner .d{margin-top:5px}
.demo-banner .t{min-width:0}

@media (max-width:600px){
  /* hero fact-frame: 5 tiny columns are unreadable on phones */
  .hf-slots{grid-template-columns:repeat(3,1fr);gap:12px}
  .hf-slots .slot b{font-size:13px}
  .hf-card,.hf-track{padding:16px 16px}
  /* demo patient header: stop right-aligning the status when it wraps under the title */
  .pt-status{text-align:left;align-items:flex-start}
  .pt-basis{max-width:100%}
  /* frame date gutter reads better as a row on narrow screens */
  .fdate{flex-direction:row;gap:10px;align-items:baseline}
  .foot-bar{gap:12px}
}
@media (max-width:400px){
  .hf-slots{grid-template-columns:repeat(2,1fr)}
  .navpill{gap:14px;padding:10px 12px 10px 16px}
}
/* keep big display type from overflowing the smallest viewports */
.h-hero{overflow-wrap:break-word}
.h-page{overflow-wrap:break-word}
