/* Homepage: the scroll film and the sections after it. */
.film{position:relative;height:760vh;background:var(--night);margin-top:calc(-1 * var(--hdr))}
.film-stage{position:sticky;top:0;height:100vh;height:100svh;overflow:hidden;contain:paint}
.film canvas,.film-video{position:absolute;inset:0;width:100%;height:100%;transform:translateZ(0)}
.film-video{object-fit:cover;opacity:0;will-change:opacity}
.film:not(.has-video) .film-video{visibility:hidden}
.film-shade{position:absolute;inset:0;pointer-events:none}
.shade-dark{opacity:0;background:
  linear-gradient(90deg,rgba(10,26,47,.92) 0%,rgba(10,26,47,.72) 30%,rgba(10,26,47,.18) 52%,rgba(10,26,47,0) 64%),
  radial-gradient(ellipse 120% 90% at 60% 50%,rgba(10,26,47,0) 50%,rgba(10,26,47,.55) 100%)}
.shade-video{background:
  linear-gradient(180deg,rgba(8,20,38,.62) 0%,rgba(8,20,38,0) 22%),
  linear-gradient(0deg,rgba(8,20,38,.94) 0%,rgba(8,20,38,.72) 26%,rgba(8,20,38,.2) 50%,rgba(8,20,38,0) 62%),
  linear-gradient(90deg,rgba(8,20,38,.45) 0%,rgba(8,20,38,0) 45%),
  rgba(10,26,47,.12)}
.band-cap.cap-low{align-items:flex-end;padding-bottom:clamp(70px,11vh,120px)}
.band-cap.cap-low .cap-inner{max-width:min(760px,62vw)}
.band-cap.cap-low .cap-inner::before{inset:-30% -20% -40% -30%;background:radial-gradient(ellipse 70% 62% at 35% 60%,rgba(5,12,24,.55) 0%,rgba(5,12,24,.3) 46%,rgba(5,12,24,0) 76%)}
.film-note{position:absolute;right:calc(var(--gut) + 60px);bottom:26px;margin:0;font:500 .64rem var(--f-mono);letter-spacing:.12em;text-transform:uppercase;color:rgba(232,241,246,.72);background:rgba(8,18,34,.5);padding:6px 10px;border-radius:999px;border:1px solid rgba(232,241,246,.16);pointer-events:none}
.film-load{position:absolute;left:50%;top:calc(var(--hdr) + 22px);transform:translateX(-50%);display:flex;align-items:center;gap:10px;font:500 .66rem var(--f-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--mist-2);background:rgba(8,18,34,.6);border:1px solid rgba(108,207,246,.2);padding:6px 12px 6px 8px;border-radius:999px;opacity:0;transition:opacity .5s var(--ease);pointer-events:none}
.film-load.on{opacity:1}
.film-load svg{width:18px;height:18px;transform:rotate(-90deg)}
.film-load circle{fill:none;stroke:rgba(232,241,246,.18);stroke-width:4}
.film-load circle.fg{stroke:var(--sky);stroke-dasharray:126;stroke-dashoffset:calc(126 * (1 - var(--ld,0)))}
.film .grain{opacity:.06}
.band-cap{position:absolute;left:0;right:0;top:0;bottom:0;display:flex;align-items:center;pointer-events:none;opacity:0;visibility:hidden;text-shadow:var(--tshadow)}
.band-cap .wrap{position:relative}
.band-cap .cap-inner{position:relative;max-width:min(600px,46vw);pointer-events:auto}
.band-cap .cap-inner::before{content:"";position:absolute;inset:-18% -22% -18% -30%;z-index:-1;pointer-events:none;opacity:calc(.3 + .7*var(--k,1));background:radial-gradient(ellipse 70% 62% at 40% 50%,rgba(5,12,24,.62) 0%,rgba(5,12,24,.4) 46%,rgba(5,12,24,0) 76%)}
.band-cap .kick{display:inline-flex;max-width:none;white-space:nowrap;gap:10px;align-items:center;font:500 .76rem var(--f-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--sky);margin-bottom:22px;background:rgba(8,18,34,.5);border:1px solid rgba(108,207,246,.22);padding:8px 12px;border-radius:999px;text-shadow:none;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
.band-cap h1,.band-cap h2{color:#F6FAFD;margin:0 0 22px}
.band-cap p{color:#D3E0EA;font-size:clamp(1.05rem,1.35vw,1.22rem);line-height:1.55;max-width:44ch;margin:0}
.band-cap .cta{text-shadow:none}
/* split text */
.band-cap .w{display:inline-block;white-space:nowrap}
.band-cap .c{display:inline-block;will-change:transform,opacity}
/* band 1: scatter */
.e-scatter .c{--kc:clamp(0,(var(--k,0) - var(--th,0))*2.6,1);opacity:var(--kc);transform:translate(calc((1 - var(--kc))*var(--jx,0px)),calc((1 - var(--kc))*var(--jy,0px))) rotate(calc((1 - var(--kc))*var(--jr,0deg)))}
/* band 2: grid snap (sorting) */
.e-snap .c{--kc:clamp(0,(var(--k,0) - var(--th,0))*3.2,1);opacity:var(--kc);transform:translateX(calc((1 - var(--kc))*var(--jx,0px)))}
/* band 3: approach from depth */
.e-approach .line{display:block;--kc:clamp(0,(var(--k,0) - var(--th,0))*2.4,1);opacity:var(--kc);transform:scale(calc(.82 + .18*var(--kc)));transform-origin:0 60%}
/* band 4: word rise, staged settle */
.e-rise .w{--kc:clamp(0,(var(--k,0) - var(--th,0))*3,1);opacity:var(--kc);transform:translateY(calc((1 - var(--kc))*.5em))}
.e-rise .sub{opacity:clamp(0,(var(--k,0) - .62)*4,1);transform:translateY(calc((1 - clamp(0,(var(--k,0) - .62)*4,1))*14px))}
.e-rise .cta-row{opacity:clamp(0,(var(--k,0) - .76)*5,1);transform:translateY(calc((1 - clamp(0,(var(--k,0) - .76)*5,1))*14px))}
.e-fade .sub,.e-snap .sub,.e-scatter .sub,.e-approach .sub{opacity:clamp(0,(var(--k,0) - .45)*3,1)}
.band-cap h1 .accent{color:var(--sky)}
.band-cap h1 .accent2{color:var(--green)}

/* hud + cue */
.film-hud{position:absolute;right:var(--gut);top:50%;transform:translateY(-50%);display:flex;align-items:center;gap:14px;pointer-events:none}
.film-hud-track{position:relative;width:2px;height:min(36vh,280px);background:rgba(232,241,246,.16);border-radius:2px;overflow:hidden}
.film-hud-bar{position:absolute;inset:0;background:linear-gradient(var(--sky),var(--blue),var(--green));transform-origin:top;transform:scaleY(0)}
.film-hud-label{font:500 .7rem var(--f-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--mist);writing-mode:vertical-rl;transform:rotate(180deg);background:rgba(8,18,34,.5);padding:10px 6px;border-radius:999px;border:1px solid rgba(108,207,246,.18)}
.film-cue{position:absolute;left:50%;bottom:28px;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:10px;font:500 .7rem var(--f-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--mist-2);transition:opacity .6s var(--ease);pointer-events:none}
.film-cue.gone{opacity:0}
.film-cue i{width:22px;height:36px;border:1.5px solid rgba(232,241,246,.45);border-radius:12px;position:relative}
.film-cue i::after{content:"";position:absolute;left:50%;top:7px;width:3px;height:7px;border-radius:2px;background:var(--sky);transform:translateX(-50%);animation:cue 2.2s var(--ease) infinite;animation-delay:-.4s}
@keyframes cue{0%{opacity:0;transform:translate(-50%,0)}30%{opacity:1}80%,100%{opacity:0;transform:translate(-50%,12px)}}
.film-skip{position:absolute;left:var(--gut);bottom:26px;font:500 .72rem var(--f-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--mist-2);text-decoration:none;border-bottom:1px solid rgba(169,190,208,.4);padding:6px 0;opacity:.85}
.film-skip:hover,.film-skip:focus-visible{color:var(--sky)}
.film-steps{display:none}
@media (max-height:560px){.film-hud,.film-cue{display:none}}

/* portrait / phones: visuals on top, words below */
@media (max-width:899px),(orientation:portrait){
  .film{height:600vh}
  .shade-dark,.shade-video{background:linear-gradient(180deg,rgba(10,26,47,.45) 0%,rgba(10,26,47,0) 18%,rgba(10,26,47,0) 40%,rgba(10,26,47,.85) 58%,rgba(10,26,47,.97) 100%)}
  .band-cap.cap-low{padding-bottom:max(84px,calc(env(safe-area-inset-bottom) + 72px))}
  .band-cap.cap-low .cap-inner{max-width:none}
  .film-note{right:auto;left:var(--gut);bottom:auto;top:calc(var(--hdr) + 10px)}
  .band-cap{align-items:flex-end;padding-bottom:max(84px,calc(env(safe-area-inset-bottom) + 72px))}
  .band-cap .cap-inner{max-width:none}
  .band-cap .cap-inner::before{inset:-14% -10% -20%}
  .band-cap .h-xxl{font-size:clamp(2.3rem,10.5vw,3.6rem)}
  .band-cap .kick{margin-bottom:14px;font-size:.62rem;white-space:normal;letter-spacing:.12em}
  .band-cap p{font-size:1rem}
  .band-cap .cta-row{margin-top:20px}
  .film-hud{top:auto;bottom:22px;right:var(--gut);transform:none}
  .film-hud-track{display:none}
  .film-hud-label{writing-mode:horizontal-tb;transform:none;padding:6px 10px;font-size:.62rem}
  .film-cue{display:none}
  .film-skip{bottom:24px}
}

/* reduced motion: one composed frame, the story as a strip */
.film.is-static{height:auto}
.film.is-static .film-stage{position:relative;height:auto;min-height:100vh;min-height:100svh}
.film.is-static .band-cap{position:relative;inset:auto;min-height:100vh;min-height:100svh}
.film.is-static .band-cap:not([data-b="1"]){display:none}
.film.is-static .film-hud,.film.is-static .film-cue,.film.is-static .film-skip{display:none}
.film.is-static .film-steps{display:block;position:relative;background:var(--night);padding:0 0 70px}
.film-steps ol{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:16px;color:var(--mist-2)}
.film-steps li{border-top:1px solid var(--line-night);padding-top:16px}
.film-steps b{display:block;color:#fff;font:780 1.2rem/1.15 var(--f-display);margin:6px 0}
@media (max-width:760px){.film-steps ol{grid-template-columns:1fr}}

/* ---------- proof counters ---------- */
.proof{background:var(--night);color:var(--mist);padding:0 0 clamp(60px,8vw,110px);position:relative}
.proof .facts{border-top-color:var(--line-night)}
.big-num{font:840 clamp(2.4rem,4.4vw,3.9rem)/1 var(--f-display);font-stretch:116%;letter-spacing:-.035em;color:#fff;display:block;margin-bottom:10px;font-variant-numeric:tabular-nums}
.fact .big-num{font:840 clamp(2.4rem,4.4vw,3.9rem)/1 var(--f-display);font-stretch:116%;letter-spacing:-.035em;color:#fff;margin-bottom:12px}
.fact .big-num sup{font-size:.38em;vertical-align:top;margin-left:4px;letter-spacing:0}

/* ---------- index of work ---------- */
.work-wrap{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(32px,6vw,96px);align-items:start}
.work-wrap .sticky{position:sticky;top:calc(var(--hdr) + 40px)}
@media (max-width:900px){.work-wrap{grid-template-columns:1fr}.work-wrap .sticky{position:static}}

/* ---------- pathfinder ---------- */
.pf{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(32px,5vw,80px);align-items:center}
.pf-tabs{display:flex;flex-direction:column;gap:6px;margin-top:34px}
.pf-tab{position:relative;display:flex;align-items:center;justify-content:space-between;gap:16px;width:100%;min-height:64px;padding:0 22px;border:1px solid var(--line);border-radius:14px;background:var(--card);font:750 1.12rem/1.1 var(--f-display);font-stretch:108%;text-align:left;cursor:pointer;color:var(--ink);transition:background .35s var(--ease),color .35s var(--ease),border-color .35s var(--ease),transform .35s var(--ease)}
.pf-tab span{font:500 .72rem var(--f-mono);letter-spacing:.1em;color:var(--ink-2)}
.pf-tab:hover{border-color:var(--line-strong);transform:translateX(4px)}
.pf-tab[aria-selected="true"]{background:var(--night);color:#fff;border-color:var(--night)}
.pf-tab[aria-selected="true"] span{color:var(--sky)}
.pf-panel{position:relative;background:var(--night);color:var(--mist);border-radius:26px;padding:clamp(28px,4vw,56px);min-height:440px;overflow:hidden;display:flex;flex-direction:column}
.pf-panel[hidden]{display:none}
.pf-panel .num{position:absolute;right:clamp(20px,3vw,40px);top:clamp(10px,2vw,20px);font:860 clamp(5rem,10vw,9rem)/1 var(--f-display);font-stretch:118%;color:transparent;-webkit-text-stroke:1.5px rgba(108,207,246,.35)}
.pf-panel h3{color:#fff;font-size:clamp(1.9rem,3.2vw,2.8rem);font-stretch:112%;max-width:14ch;margin:0 0 18px;position:relative}
.pf-panel p{color:var(--mist-2);max-width:46ch;position:relative}
.pf-links{margin-top:auto;padding-top:26px;display:grid;gap:8px;position:relative}
.pf-links a{display:grid;grid-template-columns:36px 1fr auto;align-items:center;gap:12px;min-height:54px;padding:0 18px;border-radius:12px;border:1px solid var(--line-night);color:var(--mist);text-decoration:none;font-weight:620;transition:background .3s,border-color .3s}
.pf-links a span{font:500 .72rem var(--f-mono);color:var(--sky)}
.pf-links a i{font-style:normal;color:var(--sky);transition:transform .3s var(--ease)}
.pf-links a:hover{background:rgba(108,207,246,.08);border-color:rgba(108,207,246,.4)}
.pf-links a:hover i{transform:translateX(4px)}
.pf-panel.enter>*{animation:pfIn .6s var(--ease) both}
.pf-panel.enter>*:nth-child(2){animation-delay:.05s}.pf-panel.enter>*:nth-child(3){animation-delay:.1s}.pf-panel.enter>*:nth-child(4){animation-delay:.15s}.pf-panel.enter>*:nth-child(5){animation-delay:.2s}
@keyframes pfIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@media (max-width:900px){.pf{grid-template-columns:1fr}.pf-tabs{flex-direction:row;overflow:auto;scroll-snap-type:x mandatory;padding-bottom:6px;margin-top:24px}.pf-tab{flex:none;width:auto;min-height:52px;font-size:1rem;scroll-snap-align:start}.pf-tab span{display:none}.pf-panel{min-height:0}}

/* ---------- events ---------- */
.events{display:grid;grid-template-columns:1.2fr 1fr;gap:18px}
.ev{position:relative;display:flex;flex-direction:column;min-height:460px;border-radius:24px;overflow:hidden;color:#fff;text-decoration:none;padding:clamp(26px,3vw,42px);isolation:isolate}
.ev::before{content:"";position:absolute;inset:0;z-index:-2;background:var(--bg)}
.ev::after{content:"";position:absolute;inset:0;z-index:-1;background:radial-gradient(circle at 85% 15%,rgba(255,255,255,.18),transparent 45%);transition:opacity .5s}
.ev--summit{--bg:linear-gradient(140deg,#0E4D86 0%,#1C75BC 45%,#2FA3C6 100%)}
.ev--forum{--bg:linear-gradient(140deg,#050A3E 0%,#1B2370 45%,#5E5791 100%)}
.ev .tag{display:inline-flex;align-self:flex-start;gap:10px;align-items:center;font:500 .72rem var(--f-mono);letter-spacing:.14em;text-transform:uppercase;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.28);padding:7px 12px;border-radius:999px}
.ev .tag b{width:7px;height:7px;border-radius:50%;background:var(--green)}
.ev h3{font-size:clamp(2rem,3.6vw,3.3rem);font-stretch:114%;line-height:.98;margin:auto 0 16px;color:#fff;max-width:12ch}
.ev .date{font:500 .82rem var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:rgba(255,255,255,.85);margin-bottom:12px}
.ev p{color:rgba(255,255,255,.85);max-width:40ch;margin:0 0 22px}
.ev .go{display:inline-flex;align-items:center;gap:10px;font-weight:700}
.ev .go i{font-style:normal;display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:#fff;color:var(--night);transition:transform .4s var(--ease)}
.ev:hover .go i{transform:rotate(-45deg)}
.ev-orbit{position:absolute;right:-90px;top:-90px;width:340px;height:340px;z-index:-1;opacity:.5}
@media (max-width:900px){.events{grid-template-columns:1fr}.ev{min-height:380px}}

/* ---------- loop lab teaser ---------- */
.lab{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0;border-radius:26px;overflow:hidden;background:var(--card);border:1px solid var(--line)}
.lab-copy{padding:clamp(28px,4vw,60px)}
.lab-copy h2{margin-bottom:18px}
.lab-viz{position:relative;background:radial-gradient(ellipse at 50% 50%,#FFFFFF 0%,#EAF4F9 60%,#DCECF4 100%);min-height:360px;display:grid;place-items:center;overflow:hidden}
.lab-viz svg{width:min(88%,460px);height:auto}
.lab-route{display:flex;flex-wrap:wrap;gap:8px;margin:24px 0 0}
.lab-route span{font:500 .72rem var(--f-mono);letter-spacing:.08em;text-transform:uppercase;padding:8px 12px;border-radius:8px;border:1px solid var(--line);background:var(--day)}
@media (max-width:900px){.lab{grid-template-columns:1fr}.lab-viz{min-height:260px;order:-1}}

/* ---------- hold to close the loop ---------- */
.close{position:relative;overflow:hidden;background:var(--night);color:var(--mist);padding:clamp(90px,12vw,170px) 0;text-align:center}
.close h2{color:#fff;max-width:18ch;margin:0 auto 20px}
.close .lede{margin:0 auto}
.hold{position:relative;display:grid;place-items:center;margin:clamp(40px,6vw,70px) auto 0;width:min(320px,74vw);aspect-ratio:1}
.hold svg{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg)}
.hold-ring-bg{fill:none;stroke:rgba(232,241,246,.12);stroke-width:6}
.hold-ring-fg{fill:none;stroke:url(#holdGrad);stroke-width:6;stroke-linecap:round;transition:stroke-width .3s}
.hold.holding .hold-ring-fg{stroke-width:9}
.hold-btn{position:relative;display:grid;place-items:center;width:66%;aspect-ratio:1;border-radius:50%;border:1.5px solid rgba(108,207,246,.4);background:radial-gradient(circle at 50% 40%,#173A62,#0C2140 70%);color:#fff;cursor:pointer;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;transition:transform .4s var(--ease),border-color .3s,box-shadow .4s;box-shadow:0 0 0 0 rgba(91,191,82,0)}
.hold-btn:hover{border-color:var(--sky)}
.hold.holding .hold-btn{transform:scale(.96)}
.hold-label{font:780 1.1rem/1.15 var(--f-display);font-stretch:108%;max-width:9ch;text-align:center}
.hold-label small{display:block;font:500 .64rem var(--f-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--sky);margin-top:8px}
.hold.closed .hold-btn{border-color:var(--green);box-shadow:0 0 0 14px rgba(91,191,82,.08),0 0 80px rgba(91,191,82,.35);cursor:default}
.close-ctas{display:flex;justify-content:center;flex-wrap:wrap;gap:12px;margin-top:44px}
.close-ctas .cta{transition:transform .6s var(--ease),box-shadow .6s var(--ease),background .3s,border-color .3s}
[data-hold].closed .close-ctas .cta--primary{transform:translateY(-2px);box-shadow:0 14px 40px -10px rgba(91,191,82,.8)}
.close-note{margin-top:22px;font-size:.88rem;color:var(--mist-2)}
.close .loop-bg{position:absolute;left:50%;top:50%;width:min(1200px,140vw);transform:translate(-50%,-50%);opacity:.35;pointer-events:none}

/* ---------- nrc50 band ---------- */
.n50{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(32px,5vw,80px);align-items:end;margin-bottom:56px}
.n50 .big{font:860 clamp(3.4rem,7.4vw,7.6rem)/.85 var(--f-display);font-stretch:118%;letter-spacing:-.05em;color:transparent;-webkit-text-stroke:2px var(--sky);margin:0}
.n50 .big span{color:var(--green);-webkit-text-stroke:0}
@media (max-width:860px){.n50{grid-template-columns:1fr}}
.lab-spin{transform-origin:210px 210px;animation:spin 16s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.film.is-static .film-note,.film.is-static .film-load{display:none}
.fact .big-num span{display:inline;font:inherit;color:inherit;letter-spacing:inherit;text-transform:none;margin:0}
