html,body{background:#0A0B0D;color:#E9ECEF}
/* Stanley Team v2 · carbon / steel / spark. See DESIGN.md for the spec. */
@font-face{font-family:"Noto Sans SC";src:url(../fonts/noto-sans-sc-sub.woff2) format("woff2");font-weight:100 900;font-display:swap}
@font-face{font-family:"Archivo";src:url(../fonts/archivo-sub.woff2) format("woff2");font-weight:100 900;font-stretch:62% 125%;font-display:swap}
@font-face{font-family:"Plex Mono";src:url(../fonts/plexmono-400.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Plex Mono";src:url(../fonts/plexmono-500.woff2) format("woff2");font-weight:500;font-display:swap}
:root{
  --bg:#0A0B0D;--bg2:#111317;--fg:#E9ECEF;--fg-6:rgba(233,236,239,.62);--fg-4:rgba(233,236,239,.42);--fg-2:rgba(233,236,239,.16);--fg-1:rgba(233,236,239,.08);
  --spark:#FF5B1F;--spark-2:rgba(255,91,31,.16);
  --done:#9FD9B8;--wip:#FFB27A;--poc:#9FB4CC;
  --ease:cubic-bezier(.22,1,.36,1);--io:cubic-bezier(.65,0,.35,1);
  --m:clamp(20px,4vw,64px);--maxw:1440px;
  --zh:"Noto Sans SC","PingFang SC","Microsoft YaHei",system-ui,sans-serif;
  --disp:"Archivo","Noto Sans SC",system-ui,sans-serif;
  --mono:"Plex Mono",ui-monospace,"SFMono-Regular",Menlo,monospace;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;overflow-x:clip;scroll-behavior:auto}
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto!important}
body{margin:0;font-family:var(--zh);font-size:16px;line-height:1.7;font-weight:400;overflow-x:clip;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img{display:block;max-width:100%;height:auto}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}
h1,h2,h3,p,ol,ul,dl,dd{margin:0;padding:0}
ol,ul{list-style:none}
::selection{background:var(--spark);color:#0A0B0D}
:focus-visible{outline:2px solid var(--spark);outline-offset:3px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:fixed;left:12px;top:-60px;z-index:100;background:var(--spark);color:#0A0B0D;padding:8px 14px;font-weight:600}
.skip:focus{top:12px}
.num,.cnt{font-variant-numeric:tabular-nums lining-nums}
.en{display:block;font-family:var(--mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--fg-4);font-weight:400;margin-top:10px}
.wrap{width:100%;max-width:var(--maxw);margin:0 auto;padding:0 var(--m)}
.meta{font-family:var(--mono);font-size:12px;letter-spacing:.04em;color:var(--fg-4)}
.body{color:var(--fg-6);max-width:36em}
.body+.body{margin-top:12px}

/* ---------- global layers ---------- */
.field{position:fixed;inset:0;width:100vw;height:100vh;height:100lvh;z-index:0;display:block;pointer-events:none}
.no-webgl .field{display:none}
.vignette{position:fixed;inset:0;z-index:1;pointer-events:none;background:radial-gradient(120% 90% at 50% 45%,transparent 55%,rgba(10,11,13,.7) 100%)}
.grain{position:fixed;inset:-50%;z-index:2;pointer-events:none;opacity:.07;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .9 0'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)'/%3E%3C/svg%3E");
  animation:grain 1.2s steps(6) infinite}
@keyframes grain{0%{transform:translate(0,0)}20%{transform:translate(-3%,2%)}40%{transform:translate(2%,-3%)}60%{transform:translate(-2%,-1%)}80%{transform:translate(3%,3%)}100%{transform:translate(0,0)}}
main{position:relative;z-index:3}

/* ---------- loader ---------- */
.loader{display:none}
.boot .loader{display:flex;position:fixed;inset:0;z-index:90;background:var(--bg);flex-direction:column;justify-content:flex-end;padding:var(--m)}
.loader__in{display:flex;align-items:flex-end;justify-content:space-between;gap:24px}
.loader__n{font-family:var(--disp);font-weight:200;font-stretch:112%;font-size:clamp(96px,18vw,280px);line-height:.8;letter-spacing:-.04em}
.loader__l{font-family:var(--mono);font-size:12px;letter-spacing:.12em;color:var(--fg-4);text-align:right}
.loader__bar{margin-top:24px;height:1px;background:var(--fg-2)}
.loader__bar i{display:block;height:100%;background:var(--spark);transform-origin:left;transform:scaleX(0)}

/* ---------- cursor ---------- */
.cursor{display:none}
@media (hover:hover) and (pointer:fine){
  .js.has-cursor, .js.has-cursor a, .js.has-cursor button{cursor:none}
  .has-cursor .cursor{display:block;position:fixed;left:0;top:0;z-index:95;pointer-events:none;mix-blend-mode:difference}
  .cursor__h,.cursor__v{position:absolute;background:#fff;transition:transform .35s var(--ease)}
  .cursor__h{width:22px;height:1px;left:-11px;top:0}
  .cursor__v{width:1px;height:22px;left:0;top:-11px}
  .cursor__xy{position:absolute;left:14px;top:10px;font-family:var(--mono);font-size:10px;letter-spacing:.08em;color:#fff;white-space:nowrap;opacity:.7}
  .cursor.is-link .cursor__h{transform:scaleX(2.2)}
  .cursor.is-link .cursor__v{transform:scaleY(2.2)}
}

/* ---------- header ---------- */
.bar{position:fixed;top:0;left:0;right:0;z-index:50;display:flex;align-items:center;gap:32px;height:68px;padding:0 var(--m);transition:background .4s var(--ease),border-color .4s var(--ease);border-bottom:1px solid transparent}
.bar.is-scrolled{background:rgba(10,11,13,.72);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-color:var(--fg-1)}
.mark{display:flex;align-items:center;gap:10px;font-family:var(--disp);font-weight:600;font-stretch:108%;font-size:15px;letter-spacing:.01em}
.mark__glyph{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.2}
.mark__glyph circle{stroke:var(--spark)}
.nav{display:flex;gap:28px;margin-left:auto;font-size:14px}
.nav a{display:flex;gap:6px;align-items:baseline;color:var(--fg-6);transition:color .3s var(--ease)}
.nav a i{font-style:normal;font-family:var(--mono);font-size:10px;color:var(--fg-4)}
.nav a.is-cur,.nav a:hover{color:var(--fg)}
.nav a.is-cur i{color:var(--spark)}
.menu{display:none}
@media (max-width:899px){
  .bar{gap:16px;height:60px}
  .bar__cta{margin-left:auto}
  .menu{display:flex;flex-direction:column;justify-content:center;gap:6px;width:40px;height:40px;align-items:flex-end}
  .menu__l{display:block;width:22px;height:1.5px;background:currentColor;transition:transform .3s var(--ease)}
  .menu[aria-expanded="true"] .menu__l:first-child{transform:translateY(3.75px) rotate(45deg)}
  .menu[aria-expanded="true"] .menu__l:nth-child(2){transform:translateY(-3.75px) rotate(-45deg)}
  .js .nav{position:fixed;top:60px;left:0;right:0;flex-direction:column;gap:0;background:rgba(10,11,13,.97);padding:8px var(--m) 28px;margin:0;opacity:0;visibility:hidden;transform:translateY(-8px);transition:opacity .25s var(--ease),transform .25s var(--ease),visibility 0s .25s;border-bottom:1px solid var(--fg-2)}
  .js .nav.is-open{opacity:1;visibility:visible;transform:none;transition-delay:0s}
  .js .nav a{padding:14px 0;font-size:20px;border-bottom:1px solid var(--fg-1)}
  html:not(.js) .nav{display:none}
}
@media (max-width:420px){.bar__cta .btn{padding:0 14px;height:38px;font-size:13px}.bar__cta .btn__arr{display:none}}

/* ---------- buttons, magnetic ---------- */
.mag{display:inline-block;padding:0}
.mag__in{will-change:transform}
.btn{position:relative;display:inline-flex;align-items:center;gap:10px;height:48px;padding:0 24px;font-size:15px;font-weight:500;border-radius:999px;overflow:hidden;isolation:isolate;transition:color .45s var(--ease),border-color .45s var(--ease)}
.btn--solid{background:var(--spark);color:#0A0B0D}
.btn--solid::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--fg);transform:translateY(101%);transition:transform .5s var(--ease)}
.btn--ghost{border:1px solid var(--fg-2);color:var(--fg)}
.btn--ghost::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--fg);transform:translateY(101%);transition:transform .5s var(--ease)}
.btn__arr{display:inline-block;transition:transform .45s var(--ease)}
@media (hover:hover){
  .btn--solid:hover::before,.btn--ghost:hover::before{transform:none}
  .btn--ghost:hover{color:#0A0B0D;border-color:var(--fg)}
  .btn:hover .btn__arr{transform:translateX(4px)}
}
.bar__cta .btn{height:40px;padding:0 18px;font-size:14px}

/* ---------- HUD + progress rail ---------- */
.hud{position:fixed;left:var(--m);bottom:20px;z-index:40;display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:10px;letter-spacing:.1em;color:var(--fg-6);pointer-events:none;white-space:nowrap}
.hud__k{color:var(--fg-4)}
.hud__sep{width:14px;height:1px;background:var(--fg-2)}
.hud__f{color:var(--spark)}
.no-webgl .hud{display:none}
.rail{position:fixed;right:calc(var(--m) * .5);top:50%;z-index:40;width:1px;height:120px;margin-top:-60px;background:var(--fg-2)}
.rail i{display:block;width:100%;height:100%;background:var(--spark);transform-origin:top;transform:scaleY(0)}
@media (max-width:899px){.hud{bottom:12px;gap:6px}.hud__f,.hud__sep:nth-of-type(3){display:none}.rail{display:none}}

/* ---------- type ---------- */
.eyebrow{display:flex;align-items:center;gap:14px;font-family:var(--mono);font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--fg-6);margin-bottom:28px}
.idx{color:var(--spark)}
.idx::after{content:"";display:inline-block;width:28px;height:1px;background:var(--fg-2);vertical-align:middle;margin-left:14px}
.scr{display:inline-block;white-space:nowrap}
.h2{font-family:var(--zh);font-weight:300;font-size:clamp(40px,6.4vw,96px);line-height:1.02;letter-spacing:-.03em}
.h3{font-size:20px;font-weight:500;letter-spacing:-.01em}

/* ---------- hero ---------- */
.hero{position:relative;min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;justify-content:center;padding:120px var(--m) 150px}
.hero__in{width:100%;max-width:var(--maxw);margin:0 auto}
.kick{display:flex;flex-wrap:wrap;align-items:center;gap:12px;font-family:var(--mono);font-size:12px;letter-spacing:.12em;color:var(--fg-6);margin-bottom:clamp(24px,3vw,40px)}
.kick .scr{color:var(--spark)}
.kick__sep{color:var(--fg-4)}
.hero__title{font-family:var(--zh);font-weight:600;font-size:clamp(46px,8.4vw,136px);line-height:.98;letter-spacing:-.045em;max-width:9.4em}
.hero__title .ln{display:block;white-space:nowrap}
.hero__title .ln--dim{color:var(--fg-4);font-weight:200}
.ch{display:inline-block;will-change:transform;font-variation-settings:"wght" var(--w,600)}
.ln--dim .ch{font-variation-settings:"wght" var(--w,200)}
.ln{overflow:hidden;padding-bottom:.06em}
.hero__lead{margin-top:clamp(28px,3.4vw,48px);font-size:clamp(16px,1.35vw,20px);color:var(--fg-6);line-height:1.75;max-width:30em}
.hero__act{display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin-top:36px}
.hero__spec{position:absolute;right:var(--m);top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:22px;text-align:right}
.hero__spec dt{font-family:var(--mono);font-size:10px;letter-spacing:.12em;color:var(--fg-4)}
.hero__spec dd{font-family:var(--disp);font-weight:300;font-stretch:110%;font-size:28px;line-height:1.1}
@media (max-width:1180px){.hero__spec{display:none}}
.ticker{position:absolute;left:0;right:0;bottom:54px;overflow:hidden;border-top:1px solid var(--fg-1);border-bottom:1px solid var(--fg-1);padding:12px 0;-webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.ticker__track{display:flex;width:max-content;animation:tick 60s linear infinite}
.ticker span{display:inline-flex;align-items:baseline;gap:10px;padding-right:56px;font-size:13px;color:var(--fg-6);white-space:nowrap}
.ticker b{font-family:var(--disp);font-weight:500;font-stretch:105%;font-size:15px;color:var(--fg)}
.ticker em{font-style:normal;font-family:var(--mono);font-size:10px;letter-spacing:.08em;color:var(--spark)}
@keyframes tick{to{transform:translateX(-50%)}}
.scrollcue{position:absolute;right:var(--m);bottom:110px;display:flex;flex-direction:column;align-items:center;gap:10px;font-family:var(--mono);font-size:10px;letter-spacing:.2em;color:var(--fg-4)}
.scrollcue i{width:1px;height:44px;background:linear-gradient(var(--spark),transparent);animation:cue 2.2s var(--io) infinite;transform-origin:top}
@keyframes cue{0%{transform:scaleY(0)}50%{transform:scaleY(1);transform-origin:top}51%{transform-origin:bottom}100%{transform:scaleY(0);transform-origin:bottom}}
@media (max-width:899px){
  .hero{justify-content:flex-end;padding:96px var(--m) 136px}
  .hero__title{font-size:clamp(40px,11.6vw,72px);letter-spacing:-.04em}
  .hero__lead br{display:none}
  .ticker{bottom:40px}
  .scrollcue{display:none}
}

/* ---------- proof (pinned horizontal) ---------- */
.proof{position:relative}
.proof__pin{position:relative;min-height:100vh;display:flex;flex-direction:column;justify-content:center;padding:110px 0 80px;overflow:hidden}
.proof__head{padding:0 var(--m);max-width:var(--maxw);width:100%;margin:0 auto 4vh}
.proof__head .meta{margin-top:16px}
.proof__track{display:flex;gap:0;padding:0 var(--m);width:max-content;will-change:transform}
.pm{position:relative;width:clamp(340px,40vw,620px);padding:28px 48px 8px 0;margin-right:48px;border-top:1px solid var(--fg-2)}
.pm::before{content:"";position:absolute;left:0;top:-1px;height:1px;width:0;background:var(--spark);transition:width 1.2s var(--ease)}
.pm.is-in::before{width:56px}
.pm__ind{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;font-size:13px;color:var(--fg-6)}
.pm__ind span:first-child{font-family:var(--mono);font-size:11px;letter-spacing:.06em;color:var(--fg)}
.pm__v{display:flex;align-items:baseline;flex-wrap:wrap;gap:0 .14em;margin-top:clamp(18px,3vh,36px);font-family:var(--disp);font-weight:250;font-stretch:112%;font-size:clamp(64px,9.6vw,168px);line-height:.92;letter-spacing:-.045em;white-space:nowrap}
.pm__u{font-family:var(--zh);font-weight:300;font-size:.3em;letter-spacing:0;color:var(--fg-6);margin-left:.18em}
.pm__from{width:100%;font-family:var(--zh);font-size:.18em;font-weight:400;letter-spacing:0;color:var(--fg-4);text-decoration:line-through;text-decoration-color:var(--spark);margin-bottom:.4em}
.pm__l{margin-top:18px;font-size:clamp(17px,1.5vw,22px);font-weight:500}
.pm__n{margin-top:8px;font-size:13px;color:var(--fg-4);max-width:28em}
.proof__prog{display:flex;align-items:center;gap:14px;padding:0 var(--m);margin:6vh auto 0;max-width:var(--maxw);width:100%;font-family:var(--mono);font-size:11px;color:var(--fg-4)}
.proof__prog i{flex:1;height:1px;background:var(--fg-2);max-width:280px}
.proof__prog b{display:block;height:100%;background:var(--spark);transform-origin:left;transform:scaleX(0)}
.tag{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:11px;letter-spacing:.04em;padding:2px 8px;border:1px solid currentColor;border-radius:999px;white-space:nowrap}
.tag--done{color:var(--done)}.tag--wip{color:var(--wip)}.tag--poc{color:var(--poc)}
@media (max-width:899px){
  .proof__pin{min-height:0;padding:96px 0 40px}
  .proof__track{flex-direction:column;width:100%}
  .pm{width:100%;margin:0 0 40px;padding-right:0}
  .pm__v{font-size:clamp(56px,17vw,104px)}
  .proof__prog{display:none}
}

/* ---------- kinetic band ---------- */
.band{position:relative;padding:12vh 0;overflow:hidden;pointer-events:none}
.band__row{display:flex;width:max-content;font-family:var(--disp);font-weight:200;font-stretch:125%;font-size:clamp(64px,11vw,200px);line-height:1;letter-spacing:-.035em;white-space:nowrap;will-change:transform}
.band__row--o{font-family:var(--zh);font-weight:700;font-size:clamp(40px,6vw,110px);color:transparent;-webkit-text-stroke:1px var(--fg-4);margin-top:2vh;letter-spacing:-.02em}

/* ---------- generic section ---------- */
.sec{position:relative;padding:clamp(96px,14vh,180px) 0}
.sec__head{max-width:760px;margin-bottom:clamp(48px,8vh,96px)}
.sec__head .h2{margin-bottom:28px}
.sec__head--wide{max-width:980px}
.panel{background:rgba(10,11,13,.86);backdrop-filter:blur(2px)}
.panel::before{content:"";position:absolute;left:0;right:0;top:0;height:1px;background:var(--fg-2)}

/* ---------- capabilities ---------- */
.caps{border-top:1px solid var(--fg-2);max-width:1100px}
.capr{position:relative;display:grid;grid-template-columns:64px minmax(0,1.1fr) minmax(0,1fr);align-items:baseline;gap:24px;padding:26px 0;border-bottom:1px solid var(--fg-2);overflow:hidden}
.capr::after{content:"";position:absolute;left:0;bottom:-1px;height:1px;width:100%;background:var(--spark);transform:scaleX(0);transform-origin:left;transition:transform .7s var(--ease)}
.capr__no{font-family:var(--mono);font-size:12px;color:var(--fg-4)}
.capr__t{font-size:clamp(24px,2.8vw,40px);font-weight:300;letter-spacing:-.02em;line-height:1.15;transition:transform .6s var(--ease),font-weight .4s,color .4s}
.capr__d{color:var(--fg-6);font-size:15px}
@media (hover:hover){
  .capr:hover::after{transform:scaleX(1)}
  .capr:hover .capr__t{transform:translateX(14px);color:var(--fg);font-weight:500}
  .capr:hover .capr__no{color:var(--spark)}
}
.domains{margin-top:clamp(56px,9vh,100px)}
.domains .h3{margin-bottom:20px}
.domains__list{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:14px}
.domains__list button{height:42px;padding:0 18px;border:1px solid var(--fg-2);border-radius:999px;font-size:14px;transition:border-color .3s,background .3s,color .3s}
@media (hover:hover){.domains__list button:hover{border-color:var(--spark);color:var(--spark)}}
@media (max-width:760px){.capr{grid-template-columns:40px minmax(0,1fr);gap:6px 12px}.capr__d{grid-column:2}}

/* ---------- method (pinned) ---------- */
.method{position:relative}
.method__pin{position:relative;min-height:100vh;display:flex;flex-direction:column;justify-content:space-between;padding:120px var(--m) 72px;max-width:var(--maxw);margin:0 auto}
.method__head{max-width:720px}
.method__head .h2{margin-bottom:24px}
.stations{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:32px;margin-top:6vh}
.st{position:relative;padding-top:28px;opacity:.32;transform:translateY(16px);transition:opacity .6s var(--ease),transform .6s var(--ease)}
.st.is-on,.st.is-past{opacity:1;transform:none}
.st.is-past{opacity:.6}
.st__no{display:block;font-family:var(--disp);font-weight:200;font-stretch:115%;font-size:clamp(48px,5.6vw,92px);line-height:1;letter-spacing:-.04em;color:var(--fg-4);transition:color .6s}
.st.is-on .st__no{color:var(--spark)}
.st__t{margin-top:14px;font-size:clamp(20px,1.8vw,26px);font-weight:500;letter-spacing:-.01em}
.st p{margin-top:12px;font-size:14px;color:var(--fg-6)}
.method__line{position:relative;height:1px;background:var(--fg-2);margin-top:40px}
.method__line>i{position:absolute;inset:0;background:var(--spark);transform-origin:left;transform:scaleX(0)}
.method__dots{position:absolute;inset:0;display:grid;grid-template-columns:repeat(4,1fr)}
.method__dots b{width:7px;height:7px;margin-top:-3px;background:var(--bg);border:1px solid var(--fg-4);border-radius:50%}
html:not(.js) .st,.no-pin .st{opacity:1;transform:none}
@media (max-width:899px){
  .method__pin{min-height:0;padding:96px var(--m) 64px}
  .stations{grid-template-columns:1fr;gap:36px;margin-top:40px}
  .st{opacity:1;transform:none;padding-top:0;padding-left:0}
  .st__no{font-size:56px}
  .method__line{display:none}
}

/* ---------- cases (v1 markup) ---------- */
.filters{display:flex;flex-direction:column;gap:12px;margin-bottom:28px}
.filters__row{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.filters__k{font-family:var(--mono);font-size:11px;letter-spacing:.1em;color:var(--fg-4);width:44px}
.chip{display:inline-flex;align-items:center;gap:8px;height:36px;padding:0 14px;border:1px solid var(--fg-2);border-radius:999px;font-size:13px;color:var(--fg-6);transition:all .3s var(--ease)}
.chip.is-on{background:var(--fg);color:#0A0B0D;border-color:var(--fg)}
@media (hover:hover){.chip:not(.is-on):hover{border-color:var(--fg-4);color:var(--fg)}}
.sg{width:7px;height:7px;border-radius:50%;display:inline-block}
.sg--done{background:var(--done)}.sg--wip{background:var(--wip)}.sg--poc{background:var(--poc)}
.filters__count{margin-top:4px}
.filters__count span{color:var(--spark)}
.ledger__hd{display:grid;grid-template-columns:72px minmax(0,1fr) 220px 170px;gap:20px;padding:12px 0;border-bottom:1px solid var(--fg-2);font-family:var(--mono);font-size:11px;letter-spacing:.1em;color:var(--fg-4)}
.case{border-bottom:1px solid var(--fg-2)}
.case[hidden]{display:none}
.case__row{position:relative;display:grid;grid-template-columns:72px minmax(0,1fr) 220px 170px;gap:20px;align-items:baseline;width:100%;padding:26px 0;text-align:left}
.case__row::after{content:"";position:absolute;left:0;bottom:-1px;height:1px;width:100%;background:var(--spark);transform:scaleX(0);transform-origin:left;transition:transform .6s var(--ease)}
.case.is-open .case__row::after{transform:scaleX(1)}
.case__no{font-family:var(--mono);font-size:12px;color:var(--fg-4)}
.case.is-open .case__no{color:var(--spark)}
.case__t{font-size:clamp(20px,2.2vw,30px);font-weight:400;letter-spacing:-.015em;line-height:1.25;transition:transform .5s var(--ease)}
.case__ind{font-size:14px;color:var(--fg-6)}
.case__row .tag{justify-self:start}
@media (hover:hover){.case__row:hover .case__t{transform:translateX(10px)}}
.case__body{display:grid;grid-template-rows:0fr;transition:grid-template-rows .6s var(--ease)}
html:not(.js) .case__body,.case.is-open .case__body{grid-template-rows:1fr}
.case__in{overflow:hidden;min-height:0;padding-left:92px}
.case__in>*:first-child{margin-top:6px}
.case__in>*:last-child{margin-bottom:44px}
.chain{display:flex;flex-wrap:wrap;gap:0;margin-bottom:24px;font-family:var(--mono);font-size:12px;letter-spacing:.02em}
.chain li{position:relative;padding:6px 12px;border:1px solid var(--fg-2);color:var(--fg-6);margin-right:28px}
.chain li:not(:last-child)::after{content:"";position:absolute;right:-29px;top:50%;width:28px;height:1px;background:var(--fg-2)}
.chain li:not(:last-child)::before{content:"";position:absolute;right:-29px;top:50%;width:28px;height:1px;background:var(--spark);transform:scaleX(0);transform-origin:left;transition:transform .5s var(--ease) calc(var(--i,0) * .18s + .3s);z-index:1}
.case.is-open .chain li:not(:last-child)::before{transform:scaleX(1)}
.case.is-open .chain li{border-color:var(--fg-4);color:var(--fg)}
.case__txt{display:grid;grid-template-columns:1fr 1fr;gap:24px;max-width:1000px;color:var(--fg-6);font-size:15px}
.kpi{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;margin-top:32px;border-top:1px solid var(--fg-1)}
.kpi>div{padding:20px 20px 4px 0;border-right:1px solid var(--fg-1);margin-right:20px}
.kpi>div:last-child{border-right:0}
.kpi dt{font-family:var(--disp);font-weight:300;font-stretch:108%;font-size:clamp(24px,2.4vw,36px);line-height:1.1;letter-spacing:-.025em;color:var(--fg);font-variant-numeric:tabular-nums}
.kpi dd{margin-top:8px;font-size:13px;color:var(--fg-6);line-height:1.6}
.case__note{margin-top:24px;font-size:13px;color:var(--fg-4);padding-left:14px;border-left:2px solid var(--spark)}
.ledger__empty{padding:40px 0;color:var(--fg-6)}
@media (max-width:899px){
  .ledger__hd{display:none}
  .case__row{grid-template-columns:40px minmax(0,1fr);grid-template-areas:"no t" ". meta";gap:8px 12px;padding:22px 0}
  .case__no{grid-area:no}.case__t{grid-area:t}
  .case__row>.case__ind{grid-area:meta;display:inline;margin-right:12px}
  .case__row>.tag{grid-area:meta;justify-self:end}
  .case__in{padding-left:0}
  .case__txt{grid-template-columns:1fr}
  .kpi{grid-template-columns:1fr 1fr}
  .kpi>div{border-right:0;margin-right:0;padding-right:12px;border-bottom:1px solid var(--fg-1)}
  .chain li{margin-bottom:8px}
}
@media (max-width:899px){.case__row{grid-template-areas:"no t" ". ind" ". tg"}.case__row>.case__ind{grid-area:ind}.case__row>.tag{grid-area:tg;justify-self:start}}

/* ---------- team ---------- */
.roster{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:56px 48px}
.roster__group{grid-column:1/-1;font-family:var(--mono);font-size:12px;letter-spacing:.1em;color:var(--spark);padding-bottom:14px;border-bottom:1px solid var(--fg-2);margin-top:24px}
.roster__group:first-child{margin-top:0}
.person{display:grid;grid-template-columns:minmax(120px,200px) minmax(0,1fr);gap:28px;align-items:start}
.person img{width:100%;aspect-ratio:4/5;object-fit:cover;outline:1px solid transparent;outline-offset:-1px;transition:outline-color .35s var(--ease),transform .45s var(--ease),box-shadow .45s var(--ease)}
.person{outline:none}
.person:hover img,.person:focus-visible img,.person:focus-within img{outline-color:var(--spark);transform:translateY(-4px) scale(1.015);box-shadow:0 10px 28px -12px rgba(255,91,31,.45)}
.person__n{font-size:26px;font-weight:500;letter-spacing:-.015em}
.person__n .en{display:inline;margin:0 0 0 10px}
.person__r{margin:6px 0 14px;font-family:var(--mono);font-size:12px;letter-spacing:.02em;color:var(--spark)}
.person__txt p:not(.person__r){font-size:14px;color:var(--fg-6)}
.person__txt p+p{margin-top:10px}
@media (max-width:1100px){.roster{grid-template-columns:1fr}}
@media (max-width:560px){.person{grid-template-columns:96px minmax(0,1fr);gap:18px}.person__n{font-size:22px}.person__n .en{display:block;margin:6px 0 0}}

/* ---------- training ---------- */
.train{background:linear-gradient(rgba(10,11,13,.6),rgba(10,11,13,.86))}
.axis{max-width:1100px;margin:0 0 40px}
.axis__months{display:grid;grid-template-columns:repeat(8,1fr);font-family:var(--mono);font-size:11px;color:var(--fg-4);margin-bottom:10px}
.axis__bar{position:relative;height:1px;background:var(--fg-2)}
.axis__bar::before{content:"";position:absolute;inset:0;background:var(--spark);transform:scaleX(var(--p,0));transform-origin:left}
.axis__dot{position:absolute;top:-4px;width:9px;height:9px;margin-left:-4px;border-radius:50%;background:var(--bg);border:1px solid var(--fg-4);transition:all .3s var(--ease)}
.axis__dot.is-past{background:var(--spark);border-color:var(--spark)}
.axis__dot.is-hot{transform:scale(1.8);background:var(--fg);border-color:var(--fg)}
.events{border-top:1px solid var(--fg-2)}
.ev{display:grid;grid-template-columns:200px 80px minmax(0,1fr) minmax(0,1.1fr);gap:24px;align-items:baseline;padding:22px 0;border-bottom:1px solid var(--fg-2);transition:background .3s}
.ev time{font-family:var(--mono);font-size:13px;color:var(--fg-6)}
.ev__c{font-size:13px;color:var(--spark)}
.ev__t{font-size:18px;font-weight:500;letter-spacing:-.01em}
.ev p{font-size:14px;color:var(--fg-6)}
@media (hover:hover){.ev:hover{background:var(--fg-1)}}
@media (max-width:899px){.ev{grid-template-columns:1fr auto;gap:6px 12px}.ev__t,.ev p{grid-column:1/-1}.axis{display:none}}

/* ---------- contact ---------- */
.contact{position:relative;min-height:100vh;display:flex;flex-direction:column;justify-content:space-between;padding:clamp(120px,20vh,220px) 0 0}
.contact__t{font-family:var(--zh);font-size:clamp(40px,7vw,120px);line-height:1.02;letter-spacing:-.04em;font-weight:200}
.contact__t .ln{display:block}
.contact__t .ch{font-variation-settings:"wght" var(--w,200)}
.contact__dl{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin-top:clamp(48px,8vh,96px);border-top:1px solid var(--fg-2);max-width:1100px}
.contact__dl>div{padding-top:20px}
.contact__dl dt{font-family:var(--mono);font-size:11px;letter-spacing:.1em;color:var(--fg-4)}
.contact__dl dd{margin-top:8px;font-size:clamp(18px,1.8vw,24px)}
.contact__dl .ph{color:var(--fg-4)}
.contact__dl .ph::after{content:" ●";color:var(--wip);font-size:.6em;vertical-align:middle}
.foot{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-top:12vh;padding-top:24px;padding-bottom:72px;border-top:1px solid var(--fg-1);font-family:var(--mono);font-size:11px;letter-spacing:.06em;color:var(--fg-4)}
@media (max-width:760px){.contact__dl{grid-template-columns:1fr}.contact{min-height:0}}

/* ---------- reduced motion ---------- */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}
  .grain{animation:none}
  .ticker__track{animation:none}
  .person:hover img,.person:focus-visible img,.person:focus-within img{transform:none;box-shadow:none}
}
/* v2 legibility pass: text sitting over the particle field */
@media (min-width:900px){.caps{max-width:min(1100px,64vw)}}
.capr__d,.st p,.st__t,.st__en,.pm__note,.pm__lab{text-shadow:0 0 2px #0A0B0D,0 1px 14px #0A0B0D,0 0 28px rgba(10,11,13,.9)}
@media (max-width:760px){.hud{display:none}}
