/* QSA — The Live Lab. Dark deep-tech, ice-blue accent, real footage under glass HUD plates. */
:root{
  --ink:#05080F;--ink-1:#080D18;--ink-2:#0D1424;--ink-3:#141D33;--ink-4:#1B2540;
  --navy-a:#0E1B45;--navy-b:#122457;--navy-c:#0B1533;
  --bone:#F2F5FA;--bone-2:#DFE5F0;--body:#B6C1D4;--muted:#8C99AE;
  --accent:oklch(.60 .24 266);--accent-deep:oklch(.48 .26 270);--accent-soft:oklch(.80 .16 262);
  --ice:oklch(.80 .16 262);--ice-2:oklch(.88 .12 262);--blue:oklch(.60 .24 266);--blue-deep:oklch(.48 .26 270);
  --warm:oklch(.72 .19 38);--warm-deep:oklch(.62 .20 32);
  --amber:oklch(.72 .19 38);--amber-ink:#1A0A03;
  --glow:oklch(.56 .26 268/.62);
  --grad-hero:radial-gradient(ellipse 62% 55% at 10% 6%,oklch(.48 .22 268/.55),transparent 60%),radial-gradient(ellipse 52% 44% at 94% 16%,oklch(.54 .18 254/.40),transparent 62%),linear-gradient(168deg,#0E1B45 0%,#122457 45%,#0B1533 100%);
  --line:rgba(255,255,255,.08);--line-2:rgba(255,255,255,.16);--line-ice:oklch(.80 .16 262/.42);
  --glass:rgba(8,13,24,.58);--glass-2:rgba(13,20,36,.74);
  --shadow:0 20px 50px rgba(0,0,0,.5),0 2px 6px rgba(0,0,0,.35);
  --shadow-ice:0 14px 34px rgba(60,109,255,.32),0 2px 6px rgba(0,0,0,.4);
  --disp:"Sora",system-ui,sans-serif;--sans:"Onest",system-ui,-apple-system,"Segoe UI",sans-serif;--mono:"Azeret Mono",ui-monospace,Menlo,monospace;
  --w:1280px;--gut:40px;--nav:72px;
  --out:cubic-bezier(.16,1,.3,1);--io:cubic-bezier(.65,0,.35,1);
}
*{box-sizing:border-box}
html{color-scheme:dark;scroll-behavior:smooth;scrollbar-color:var(--ink-4) var(--ink);-webkit-text-size-adjust:100%}
html.jump{scroll-behavior:auto!important}
::-webkit-scrollbar{width:11px;height:11px}
::-webkit-scrollbar-track{background:var(--ink)}
::-webkit-scrollbar-thumb{background:var(--ink-4);border:3px solid var(--ink);border-radius:8px}
::-webkit-scrollbar-thumb:hover{background:#26325A}
::selection{background:var(--ice);color:var(--ink)}
body{margin:0;background:var(--ink);color:var(--bone);font-family:var(--sans);font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased;caret-color:var(--ice);overflow-x:clip}
img,video{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
p{margin:0}
:focus-visible{outline:2px solid var(--ice);outline-offset:3px;border-radius:6px}
h1[tabindex]:focus,.done[tabindex]:focus{outline:0}
.skip{position:absolute;left:16px;top:-48px;z-index:100;background:var(--ice);color:var(--ink);padding:10px 16px;border-radius:8px;font-weight:600}
.skip:focus{top:12px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.w{max-width:var(--w);margin:0 auto;padding:0 var(--gut);position:relative}
.grid>*,.story>*,.show>*,.company>*,.cgrid>*,.role>*,.nrow>*,.close>*,.strip>*,.tile>*{min-width:0}

/* type */
h1,h2,h3,h4{margin:0;font-family:var(--disp);font-weight:700;line-height:1.05;letter-spacing:-.025em;text-wrap:balance}
h1{font-size:clamp(2.5rem,5.1vw,4.5rem);letter-spacing:-.035em;line-height:1.06}
h1,h2,h3{overflow-wrap:break-word}
h2{font-size:clamp(1.85rem,3.5vw,2.9rem)}
h3{font-size:1.3rem;font-weight:600;letter-spacing:-.015em;line-height:1.2}
h4{font-size:1.05rem;font-weight:600;letter-spacing:-.01em;line-height:1.3}
.lede{font-size:1.2rem;line-height:1.5;color:var(--body);max-width:54ch;text-wrap:pretty}
.lbl{font-family:var(--mono);font-size:.75rem;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.lbl.ice{color:var(--ice)}.lbl.amb{color:var(--amber)}
.link{text-decoration:underline;text-decoration-color:var(--line-ice);text-underline-offset:4px;text-decoration-thickness:1.5px;transition:color .2s,text-decoration-color .2s}
.link:hover{color:var(--ice);text-decoration-color:var(--ice)}

/* buttons */
.btn{display:inline-flex;align-items:center;gap:10px;height:50px;padding:0 22px;border-radius:9px;font:600 .95rem/1 var(--sans);letter-spacing:-.005em;white-space:nowrap;border:1px solid transparent;cursor:pointer;position:relative;transition:transform .25s var(--out),box-shadow .3s,background .2s,border-color .2s,color .2s}
.btn svg{width:16px;height:16px;flex:none;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;transition:transform .25s var(--out)}
.btn:hover svg{transform:translateX(3px)}
.btn.ice{background:var(--ice);color:var(--ink);box-shadow:0 8px 24px rgba(0,0,0,.38)}
.btn.ice:hover{background:var(--ice-2);transform:translateY(-2px);box-shadow:var(--shadow-ice)}
.btn.ice:active{transform:translateY(0)}
.btn.accent{background:var(--accent-deep);color:#fff;box-shadow:0 10px 30px oklch(.52 .26 268/.44)}
.btn.accent:hover{background:oklch(.545 .25 268);transform:translateY(-2px);box-shadow:0 14px 38px oklch(.52 .26 268/.6)}
.btn.accent:active{transform:translateY(0)}
.btn.warm{background:var(--warm);color:#1A0A03;box-shadow:0 10px 30px oklch(.62 .20 32/.34)}
.btn.warm:hover{background:oklch(.78 .18 40);transform:translateY(-2px);box-shadow:0 14px 38px oklch(.62 .20 32/.5)}
.btn.warm:active{transform:translateY(0)}
.btn.glass{background:rgba(255,255,255,.05);border-color:var(--line-2);color:var(--bone);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.btn.glass:hover{border-color:var(--line-ice);background:rgba(255,255,255,.08);transform:translateY(-2px)}
.btn.sm{height:42px;padding:0 16px;font-size:.875rem}
/* language switch, sitting quietly next to the call-to-action */
.langsw{display:inline-flex;align-items:center;border:1px solid var(--line-2);border-radius:8px;overflow:hidden;height:36px}
.langsw button{height:100%;padding:0 11px;border:0;background:none;color:var(--muted);font:600 .74rem/1 var(--mono);letter-spacing:.1em;cursor:pointer;transition:background .2s,color .2s}
.langsw button:hover{color:var(--bone)}
.langsw button[aria-pressed="true"]{background:rgba(255,255,255,.09);color:var(--bone)}
.langsw button+button{border-left:1px solid var(--line-2)}
@media (max-width:640px){.langsw{height:32px}.langsw button{padding:0 9px;font-size:.7rem}}
.btn:disabled{opacity:.55;cursor:progress;transform:none}
.acts{display:flex;flex-wrap:wrap;gap:14px;align-items:center}

/* glass and hud primitives */
.glass{background:var(--glass);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--line-2);border-radius:12px}
.hud{position:relative}
.hud::before,.hud::after{content:"";position:absolute;width:18px;height:18px;border:1.5px solid var(--line-ice);pointer-events:none;z-index:3}
.hud::before{top:10px;left:10px;border-right:0;border-bottom:0}
.hud::after{bottom:10px;right:10px;border-left:0;border-top:0}
.chip{display:inline-flex;align-items:center;gap:8px;height:30px;padding:0 11px;border-radius:6px;background:var(--glass-2);border:1px solid var(--line-2);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);font-family:var(--mono);font-size:.75rem;letter-spacing:.06em;text-transform:uppercase;color:var(--bone-2);white-space:nowrap}
.chip i{width:6px;height:6px;border-radius:50%;background:var(--ice);flex:none}
.chip.live i{background:var(--amber)}
.mfig{margin:0;display:flex;flex-direction:column;gap:12px;min-width:0}
.mfig .media{flex:1 1 auto}
.mcap{font-family:var(--mono);font-size:.69rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.band.light .mcap{color:#7A87A0}
.media{position:relative;border-radius:12px;overflow:hidden;background:var(--ink-2);border:1px solid var(--line-2);isolation:isolate}
.media video,.media img,.media image-slot{display:block;width:100%;height:100%;object-fit:cover}
.media canvas.fig3d{display:block;width:100%;height:100%;aspect-ratio:16/10;background:radial-gradient(ellipse 70% 60% at 50% 42%,#0F1A38,#070C18 72%)}
.media:has(canvas.fig3d) .veil{background:linear-gradient(180deg,rgba(5,8,15,0) 55%,rgba(5,8,15,.72))}

.media image-slot{aspect-ratio:var(--ar,16/10);background:var(--ink-3);color:var(--body)}
.media .veil{position:absolute;inset:0;background:linear-gradient(180deg,rgba(5,8,15,0) 40%,rgba(5,8,15,.75));pointer-events:none;z-index:1}
.media .chips{position:absolute;left:16px;right:16px;bottom:16px;display:flex;flex-wrap:wrap;gap:8px;z-index:2}
.media .tag{position:absolute;top:16px;left:16px;z-index:2}
.media.cover{background:#0A0F1C;aspect-ratio:4/3;display:grid;place-items:center;padding:14px}
.media.cover img{width:auto;height:100%;max-width:100%;object-fit:contain;border-radius:3px;box-shadow:0 10px 28px rgba(0,0,0,.5);transition:transform .4s var(--out)}
.media.cover:hover img{transform:translateY(-3px) scale(1.02)}
.tile{position:relative;border-radius:14px;border:1px solid var(--line-2);background:linear-gradient(180deg,rgba(255,255,255,.035),rgba(255,255,255,.015));overflow:hidden;transition:border-color .3s,transform .35s var(--out)}
.tile::before{content:"";position:absolute;inset:0;background:radial-gradient(360px circle at var(--mx,50%) var(--my,50%),rgba(169,196,255,.14),transparent 60%);opacity:0;transition:opacity .35s;pointer-events:none}
.tile:hover{border-color:var(--line-ice);transform:translateY(-3px)}
.tile:hover::before{opacity:1}
.tile>*{position:relative}

/* header */
#prog{position:fixed;top:0;left:0;right:0;height:2px;z-index:60;transform:scaleX(0);transform-origin:0 50%;background:linear-gradient(90deg,var(--accent),var(--warm));will-change:transform}
.bnav{position:sticky;top:0;z-index:50;height:var(--nav);background:rgba(5,8,15,.55);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border-bottom:1px solid var(--line);transition:background .3s}
.bnav.past{background:rgba(5,8,15,.86)}
.bnav .in{display:flex;align-items:center;gap:28px;height:var(--nav)}
.brand{display:inline-flex;align-items:center;gap:11px;font-family:var(--disp);font-weight:600;font-size:.95rem;letter-spacing:-.02em;white-space:nowrap}
.brand img{width:32px;height:32px;border-radius:7px}
.links{display:flex;align-items:center;gap:2px;margin-left:6px}
.links>a,.drop>button{display:inline-flex;align-items:center;gap:6px;height:40px;padding:0 13px;border:0;background:none;color:var(--body);font:500 .9rem/1 var(--sans);cursor:pointer;position:relative;border-radius:8px;transition:color .2s,background .2s}
.links>a:hover,.drop>button:hover,.drop.open>button{color:var(--bone);background:rgba(255,255,255,.05)}
.links>a[aria-current],.drop.current>button{color:var(--bone)}
.links>a[aria-current]::after,.drop.current>button::after,.links>a.spy::after,.drop.spy>button::after{content:"";position:absolute;left:13px;right:13px;bottom:6px;height:2px;border-radius:2px;background:var(--accent);box-shadow:0 0 12px var(--glow)}
.links>a.spy,.drop.spy>button{color:var(--bone)}
.drop>button svg{width:11px;height:11px;fill:none;stroke:currentColor;stroke-width:2;opacity:.6;transition:transform .25s}
.drop.open>button svg{transform:rotate(180deg)}
.drop{position:relative}
.menu{position:absolute;top:calc(100% + 10px);left:0;min-width:560px;background:linear-gradient(180deg,var(--ink-3),var(--ink-2));border:1px solid var(--line-2);border-radius:12px;padding:10px;box-shadow:var(--shadow);display:grid;grid-template-columns:1fr 1fr;gap:2px;opacity:0;visibility:hidden;transform:translateY(-6px);transition:opacity .2s,transform .25s var(--out),visibility 0s .25s}
.menu.one{min-width:320px;grid-template-columns:1fr}
.drop.open .menu{opacity:1;visibility:visible;transform:none;transition:opacity .2s,transform .25s var(--out)}
.menu a{display:flex;flex-direction:column;gap:2px;padding:11px 13px;border-radius:8px;transition:background .15s}
.menu a b{font-size:.95rem;font-weight:600}
.menu a span{font-size:.85rem;color:var(--muted)}
.menu a:hover,.menu a:focus-visible{background:rgba(255,255,255,.06)}
.menu a:hover span{color:var(--body)}
.menu a[aria-current]{background:rgba(169,196,255,.08)}
.navright{margin-left:auto;display:flex;align-items:center;gap:14px}
.burger{display:none;width:44px;height:44px;border:1px solid var(--line-2);border-radius:10px;background:rgba(255,255,255,.04);cursor:pointer;place-items:center;padding:0}
.burger span{display:block;width:18px;height:2px;background:var(--bone);border-radius:2px;position:relative;transition:transform .3s,background .2s}
.burger span::before,.burger span::after{content:"";position:absolute;left:0;width:18px;height:2px;background:var(--bone);border-radius:2px;transition:transform .3s,top .3s}
.burger span::before{top:-6px}.burger span::after{top:6px}
.burger[aria-expanded="true"] span{background:transparent}
.burger[aria-expanded="true"] span::before{top:0;transform:rotate(45deg)}
.burger[aria-expanded="true"] span::after{top:0;transform:rotate(-45deg)}
.panel{display:none}
body.nav-open{overflow:hidden}

/* routes and sections */
.route[hidden]{display:none}
.route{animation:routein .5s var(--out) both}
html.xfade main > .route{opacity:0;transform:translateY(-6px);transition:opacity .16s ease,transform .16s ease}
@keyframes routein{from{opacity:0;transform:translateY(10px);clip-path:inset(0 0 6% 0)}to{opacity:1;transform:none;clip-path:inset(0 0 0 0)}}
.band{padding:112px 0;position:relative;z-index:2;background:var(--ink)}
.band + .band::before{content:"";position:absolute;top:0;left:var(--gut);right:var(--gut);height:1px;background:linear-gradient(90deg,transparent,var(--line-2) 15%,var(--line-2) 85%,transparent)}
.band.light{--bone:#0A1122;--bone-2:#182444;--body:#44526B;--muted:#5A6880;--line:rgba(8,14,30,.10);--line-2:rgba(8,14,30,.16);--line-ice:oklch(.48 .22 266/.30);--ice:oklch(.48 .22 266);--glass:rgba(255,255,255,.7);--glass-2:rgba(255,255,255,.85);background:linear-gradient(180deg,#F2F5FA,#E7ECF5);color:#0A1122}
.band.light::before,.band.light::after{content:"";position:absolute;left:0;right:0;height:1px;background:var(--accent);opacity:.28;z-index:1}
.band.light::before{top:0}.band.light::after{bottom:0}
.band.light .lbl{color:#5A6880}
.band.light .lbl.ice{color:oklch(.48 .22 266)}
.band.light .btn.glass{background:rgba(8,14,30,.045);border-color:rgba(8,14,30,.16);color:#0A1122}
.band.light .btn.glass:hover{border-color:oklch(.48 .22 266);color:oklch(.42 .22 266)}
.band.light .facts{border-top-color:rgba(8,14,30,.16)}
.band.light .frow{border-bottom-color:rgba(8,14,30,.16)}
.band.light .frow b{color:#5A6880}
.band.light .frow span{color:#0A1122}
.band.light .lede{color:#44526B}
.band.light .rbtn{border-color:rgba(8,14,30,.18);background:rgba(8,14,30,.03);color:#44526B}
.band.light .rbtn:hover:not(:disabled){color:oklch(.48 .22 266);border-color:oklch(.48 .22 266)}
.band.lift{background:linear-gradient(180deg,rgba(255,255,255,.018),rgba(255,255,255,.004) 60%,transparent),var(--ink)}
.band.lit{background:radial-gradient(ellipse 70% 60% at 78% 12%,oklch(.60 .24 266/.13),transparent 62%),var(--ink)}
.band.tight{padding:80px 0}
.head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:20px 40px;margin-bottom:52px}
.head p{max-width:48ch;color:var(--body);font-size:1.05rem}

/* hero */
.hero{position:sticky;top:0;z-index:0;min-height:calc(100vh - var(--nav));min-height:calc(100svh - var(--nav));display:flex;flex-direction:column;justify-content:flex-end;overflow:hidden;isolation:isolate}
.hero .bg{position:absolute;inset:-6% 0;z-index:-2}
.hero .bg video,.hero .bg img{width:100%;height:100%;object-fit:cover;will-change:transform}
.hero::before{content:"";position:absolute;inset:0;z-index:-1;background:
  linear-gradient(90deg,rgba(5,8,15,.94) 0%,rgba(5,8,15,.72) 42%,rgba(5,8,15,.28) 100%),
  linear-gradient(180deg,rgba(5,8,15,.35) 0%,rgba(5,8,15,0) 30%,rgba(5,8,15,.55) 75%,var(--ink) 100%)}
.hero .w{padding-top:84px;padding-bottom:44px;width:100%}
.hero .caption{position:absolute;top:28px;right:var(--gut);display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end;max-width:52%}
.hero .copy{max-width:1060px}
.hero h1{max-width:15ch;margin-bottom:22px}
.hero h1 .wd{display:inline-block}
.hero .lede{margin-bottom:32px;max-width:48ch}
.pills{display:grid;grid-template-columns:repeat(4,1fr);margin-top:56px;margin-inline:-29px;border-radius:999px;padding:6px}
.pill{padding:12px 22px;border-left:1px solid var(--line-2)}
.pill:first-child{border-left:0}
.pill b{display:block;font-family:var(--disp);font-weight:600;font-size:.95rem;letter-spacing:-.01em;white-space:nowrap}
.pill span{display:block;font-size:.85rem;color:var(--body);line-height:1.4;margin-top:2px}

/* clients */
.clients{padding:52px 0 12px;position:relative;z-index:2;background:var(--ink);overflow:hidden}
.clients .lbl{display:block;text-align:center;margin-bottom:22px}
.marquee{position:relative;overflow:hidden;width:100%;mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent);-webkit-mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent)}
.mtrack{display:flex;align-items:center;width:max-content;will-change:transform;cursor:grab;touch-action:pan-y;user-select:none;-webkit-user-select:none}
.mtrack.grabbing{cursor:grabbing}
.mtrack img{pointer-events:none;-webkit-user-drag:none}
.logo{flex:0 0 auto;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:14px;padding:0 44px;height:180px;border-right:1px solid var(--line)}
.logo img{height:56px;width:auto;max-width:150px;object-fit:contain;background:#E7ECF5;border-radius:4px;padding:6px 10px;filter:grayscale(.45);opacity:.9;transform-origin:center;transition:transform .22s cubic-bezier(.22,.7,.3,1),box-shadow .22s,filter .22s,opacity .22s}
.logo:hover img{transform:scale(1.06);filter:grayscale(0);opacity:1}
.logo.named{justify-content:center}
.logo.named b{font-size:1.15rem}
.logo.named::before{content:"";display:block;width:56px;height:2px;border-radius:2px;background:var(--line-ice);margin-bottom:18px}
.logo b{font-family:var(--disp);font-size:25px;font-weight:600;letter-spacing:-.025em;color:var(--bone-2);white-space:nowrap;transform-origin:left center;transition:transform .22s cubic-bezier(.22,.7,.3,1)}
.logo:hover b{transform:scale(1.12)}
.logo i{font-family:var(--mono);font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);font-style:normal}
.logo.ask b{color:var(--ice)}
.logo.ask b{color:var(--ice)}

/* solutions */
.solist{margin-top:44px;border-top:1px solid var(--line-2)}
.solrow{display:grid;grid-template-columns:58px minmax(0,1fr) auto;align-items:start;gap:28px;padding:30px 8px 30px 0;border-bottom:1px solid var(--line-2);position:relative;transition:padding-left .25s var(--out),background .25s}
.solrow::before{content:"";position:absolute;left:0;top:0;bottom:0;width:0;background:var(--accent);transition:width .25s var(--out)}
.solrow:hover{background:rgba(8,14,30,.035);padding-left:18px}
.solrow:hover::before{width:3px}
.solrow .sn{font-family:var(--mono);font-size:.75rem;letter-spacing:.14em;color:oklch(.48 .22 266);padding-top:8px}
.solrow h3{font-size:clamp(1.25rem,2.1vw,1.7rem);margin-bottom:8px}
.solrow p{color:var(--body);font-size:1rem;max-width:56ch}
.solrow .stag{font-family:var(--mono);font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:#5A6880;white-space:nowrap;padding-top:10px;text-align:right}
/* process */
/* ---------- what we build: four axes feeding one system ---------- */
.hub4{--d:clamp(186px,18.5vw,246px);--gx:clamp(150px,19vw,280px);--gy:clamp(56px,7vw,96px);position:relative;display:grid;grid-template-columns:repeat(2,var(--d));justify-content:center;gap:var(--gy) var(--gx);width:fit-content;margin:66px auto 0}
.hweb{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.hweb line{stroke:rgba(49,55,236,.42);stroke-width:1.1;stroke-dasharray:1.5 7;stroke-linecap:round;animation:hubflow 4.6s linear infinite;transition:stroke .6s,stroke-width .6s}
/* the spoke belonging to the axis under the pointer carries the current */
.hub4:has(.hnode:nth-child(3):hover) .hweb line:nth-of-type(1),
.hub4:has(.hnode:nth-child(4):hover) .hweb line:nth-of-type(2),
.hub4:has(.hnode:nth-child(5):hover) .hweb line:nth-of-type(3),
.hub4:has(.hnode:nth-child(6):hover) .hweb line:nth-of-type(4){stroke:var(--accent-deep);stroke-width:1.6}
.hweb circle{fill:none;stroke:rgba(49,55,236,.2);stroke-width:1;stroke-dasharray:2 6}
@keyframes hubflow{to{stroke-dashoffset:-42.5}}
.hubc{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:2;width:clamp(94px,10vw,118px);aspect-ratio:1;border-radius:50%;display:grid;place-items:center;background:linear-gradient(150deg,var(--navy-a),var(--ink-1));box-shadow:0 0 0 9px rgba(240,244,250,.92),0 18px 44px -18px rgba(10,17,34,.5)}
.hubc img{width:46%;height:auto}
.hnode{display:flex;flex-direction:column;align-items:center;gap:14px}
.hcirc{position:relative;isolation:isolate;width:var(--d);height:var(--d);border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:0 clamp(20px,2.6vw,32px);text-align:center;border:1px solid rgba(10,17,34,.13);background:#fff;box-shadow:0 14px 34px -24px rgba(10,17,34,.55);transition:color .6s var(--io),border-color .6s,transform .6s var(--out),box-shadow .6s}
.hcirc::before{content:"";position:absolute;inset:0;z-index:-1;border-radius:50%;background:linear-gradient(150deg,var(--accent-deep),var(--accent));opacity:0;transform:scale(.86);transition:opacity .6s var(--io),transform .7s var(--out)}
.hnode:hover .hcirc::before,.hnode:focus-within .hcirc::before{opacity:1;transform:scale(1)}
.hnode:hover .hcirc,.hnode:focus-within .hcirc{color:#fff;border-color:transparent;transform:translateY(-4px);box-shadow:0 26px 50px -26px rgba(49,55,236,.7)}
.hn{font-family:var(--mono);font-size:.72rem;letter-spacing:.18em;color:oklch(.48 .22 266);transition:color .6s}
.hcirc h3{font-size:clamp(1.02rem,1.5vw,1.24rem);font-weight:600;letter-spacing:-.02em;line-height:1.15;text-wrap:balance}
.hcirc p{font-size:.83rem;line-height:1.45;color:var(--body);text-wrap:pretty;transition:color .6s}
.hnode:hover .hn,.hnode:focus-within .hn{color:#fff}
.hnode:hover .hcirc p,.hnode:focus-within .hcirc p{color:rgba(255,255,255,.9)}
.s4t{font-family:var(--mono);font-size:.75rem;letter-spacing:.12em;text-transform:uppercase;color:#44526B;transition:color .6s}
.hnode .s4t{font-size:.68rem;white-space:nowrap;text-align:center}
.hnode:hover .s4t,.hnode:focus-within .s4t{color:var(--accent-deep)}
@media(prefers-reduced-motion:reduce){.hweb line{animation:none}.hcirc,.hcirc::before{transition:none}}
@media(max-width:860px){
  .hub4{--d:min(84vw,360px);grid-template-columns:var(--d);gap:22px;margin-top:44px}
  .hub4::before{content:"";position:absolute;left:50%;top:40px;bottom:26px;width:1px;background:linear-gradient(180deg,rgba(49,55,236,.3),rgba(49,55,236,0));transform:translateX(-.5px)}
  .hweb{display:none}
  .hubc{position:static;transform:none;margin:0 auto 4px;box-shadow:0 14px 34px -20px rgba(10,17,34,.5)}
  .hcirc{height:auto;border-radius:22px;padding:26px clamp(20px,5vw,32px);gap:9px}
  .hcirc::before{border-radius:22px}
  .hnode{gap:11px}
  .hnode .s4t{white-space:normal;text-wrap:balance}
}
.head.sub{margin-bottom:44px}
.head.sub h2{font-size:clamp(1.5rem,2.5vw,2.05rem)}
.head.sub .eyebrow{display:block;font-family:var(--mono);font-size:.7rem;font-weight:400;letter-spacing:.16em;text-transform:uppercase;color:oklch(.48 .22 266);margin-bottom:12px}
.mrun{margin-top:74px;padding-top:54px;border-top:1px solid var(--line-2)}
@media(max-width:600px){.mrun{margin-top:64px;padding-top:44px}}
.process{position:relative;padding-top:0}
.track{position:absolute;top:20px;left:28px;right:calc((100% - 3 * 24px) / 4 - 28px);height:2px;background:var(--line-2);border-radius:2px;z-index:0}
.track i{position:absolute;left:0;top:0;bottom:0;width:100%;transform-origin:left center;transform:scaleX(var(--p,0));background:linear-gradient(90deg,var(--ice),var(--blue));border-radius:2px;transition:transform .5s var(--io)}
.steps5{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;position:relative}
.step5{position:relative;padding:0 8px;z-index:1}
.step5 .n{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;border:1.5px solid var(--line-ice);background:var(--ink);font-family:var(--mono);font-size:.8rem;color:var(--ice);margin:0 0 18px;position:relative;z-index:1;transition:background .3s,color .3s,border-color .3s}
.step5.on .n{background:var(--ice);color:var(--ink);border-color:var(--ice)}
.band.light .step5.on .n{background:var(--accent-deep);color:#fff;border-color:var(--accent-deep)}
.band.light .step5.last.on .n{background:oklch(.53 .19 32);color:#fff;border-color:oklch(.53 .19 32)}
.step5.last.on .n{background:var(--amber);border-color:var(--amber);color:var(--amber-ink)}
.step5 h3{font-size:1.05rem;margin-bottom:8px}
.step5 p{color:var(--body);font-size:.95rem;max-width:26ch}
.owns{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:56px}
.owns .tile{padding:22px 24px}
.owns b{display:block;font-family:var(--mono);font-size:.75rem;letter-spacing:.1em;text-transform:uppercase;color:var(--amber);margin-bottom:8px}
.owns span{font-family:var(--disp);font-size:1.05rem;font-weight:600}

/* sports: tabs switch one panel */
.tour{display:grid;grid-template-columns:.74fr 1.26fr;gap:44px;margin-top:44px;align-items:start}
/* the control belongs under the tab list, not in the panel column */
.tour>.tabs{grid-column:1;grid-row:1}
.tour>.tourplay{grid-column:1;grid-row:2}
.tour>.stack{grid-column:2;grid-row:1/span 2}
.tabs{display:flex;flex-direction:column;border-top:1px solid var(--line-2)}
.stabs{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:32px}
.stab{all:unset;cursor:pointer;display:grid;grid-template-columns:30px 1fr;gap:14px;align-items:start;padding:18px 4px 19px;border-bottom:1px solid var(--line-2);position:relative;transition:padding-left .25s var(--out)}
.stab .tnum{font-family:var(--mono);font-size:.72rem;letter-spacing:.14em;color:var(--muted);padding-top:5px;transition:color .25s}
.stab .tl{display:flex;flex-direction:column;gap:5px;min-width:0}
.stab .tl b{font-family:var(--disp);font-size:1.25rem;font-weight:600;letter-spacing:-.026em;color:var(--bone-2);transition:color .25s}
.stab .tl i{font-style:normal;font-family:var(--mono);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.stab:hover .tl b{color:var(--bone)}
.stab:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.stab[aria-selected="true"]{padding-left:16px}
.stab[aria-selected="true"] .tl b{color:var(--bone)}
.stab[aria-selected="true"] .tnum{color:var(--ice)}
.stab[aria-selected="true"]::before{content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--accent)}
.tbar{position:absolute;left:0;bottom:-1px;height:2px;width:100%;overflow:hidden;pointer-events:none}
.tbar em{display:block;height:100%;width:0;background:var(--accent)}
.stab[aria-selected="true"] .tbar em{width:100%;transition:width 7.4s linear}
.tour[data-paused] .stab[aria-selected="true"] .tbar em{transition:none}
.stab svg{display:none}
.stab span{display:flex;flex-direction:column;text-align:left;gap:3px}
.stab small{font-family:var(--mono);font-size:.75rem;font-weight:400;letter-spacing:.04em;color:var(--muted)}
.stab:hover{border-color:var(--line-ice);color:var(--bone);transform:translateY(-2px)}
.stab{overflow:hidden}
.stab::after{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(115deg,transparent 30%,rgba(255,255,255,.14) 45%,transparent 60%);transform:translateX(-120%);pointer-events:none}
.stab:hover::after{transform:translateX(120%);transition:transform .8s var(--out)}
.stab[aria-selected="true"]{background:rgba(169,196,255,.1);border-color:var(--ice);color:var(--bone);box-shadow:0 0 0 1px rgba(169,196,255,.25),0 8px 26px rgba(60,109,255,.18)}
.stab[aria-selected="true"]::after{animation:sheen 2.6s var(--out) .2s}
@keyframes sheen{0%{transform:translateX(-120%)}55%,100%{transform:translateX(120%)}}
.stab[aria-selected="true"] svg{background:var(--ice);border-color:var(--ice);stroke:var(--ink)}
.stab[aria-selected="true"] small{color:var(--ice)}
.tourplay{align-self:start;justify-self:start;display:inline-flex;align-items:center;gap:9px;margin-top:18px;padding:9px 14px;border:1px solid var(--line-2);border-radius:8px;background:none;color:var(--muted);font-family:var(--mono);font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;cursor:pointer;transition:color .25s,border-color .25s}
.tourplay:hover{color:var(--ice);border-color:var(--line-ice)}
.tourplay i{width:9px;height:10px;flex:none;border-left:2.5px solid currentColor;border-right:2.5px solid currentColor}
.tourplay.paused i{border:0;width:0;height:0;border-left:9px solid currentColor;border-top:5.5px solid transparent;border-bottom:5.5px solid transparent}
@media(prefers-reduced-motion:reduce){.tourplay{display:none}}
.stack{position:relative}
.spanel{display:block}
.spanel[hidden]{display:none}
.spanel .media{aspect-ratio:16/10}
.spanel .who{position:absolute;top:16px;right:16px;z-index:3;font-family:var(--mono);font-size:.75rem;letter-spacing:.06em;text-transform:uppercase;color:var(--bone-2);background:var(--glass-2);border:1px solid var(--line-2);border-radius:6px;padding:7px 11px;backdrop-filter:blur(12px)}
.spanel .copy{margin-top:24px}
.spanel .copy h3{font-size:1.6rem;margin-bottom:12px}
.spanel .copy .line{color:var(--body);font-size:1.08rem;max-width:42ch;margin-bottom:26px}
.spanel .copy .with{display:inline-block;margin-top:12px;font-family:var(--mono);font-size:.75rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ice)}
.stack.wipe .spanel:not([hidden]){animation:wipein .5s var(--out) both}
@keyframes wipein{from{opacity:0;clip-path:inset(0 0 22% 0);transform:translateY(14px)}to{opacity:1;clip-path:inset(0 0 0 0);transform:none}}

/* case files */
.films{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.film .media{aspect-ratio:16/10;cursor:pointer}
.film .media video{transition:transform .6s var(--out)}
.film:hover .media video{transform:scale(1.03)}
.playb{position:absolute;left:50%;top:50%;width:64px;height:64px;margin:-32px 0 0 -32px;border-radius:50%;background:var(--ice);display:grid;place-items:center;z-index:2;box-shadow:var(--shadow-ice);transition:transform .35s var(--out),opacity .3s}
.playb svg{width:24px;height:24px;fill:var(--ink);margin-left:3px}
.film:hover .playb{transform:scale(1.08)}
.film.playing .playb,.film.playing .veil,.film.playing .chips{opacity:0;pointer-events:none}
.film .body{padding:18px 4px 0}
.film h3{margin-bottom:6px;font-size:1.2rem;transition:color .2s}
.film p{color:var(--body);font-size:.95rem}
.film:hover h3{color:var(--ice)}
.meta{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:baseline;margin-top:12px}
.st{font-size:.8125rem;color:var(--muted);font-weight:500}

/* research */
.notes{position:relative;border-top:1px solid var(--line-2);padding-top:26px}
.note{flex:0 0 clamp(266px,29%,372px);scroll-snap-align:start;display:block;min-width:0;padding:0}
.nthumb{display:grid;place-items:center;position:relative;aspect-ratio:4/3;margin-bottom:20px;border-radius:10px;overflow:hidden;background:linear-gradient(160deg,var(--ink-3),var(--ink-2));border:1px solid var(--line-2);padding:16px}
.nthumb img{width:auto;height:100%;max-width:100%;object-fit:contain;border-radius:2px;box-shadow:0 8px 22px rgba(0,0,0,.55);transition:transform .45s var(--out)}
.note:hover .nthumb img{transform:translateY(-3px) scale(1.03)}
.nthumb.tile{padding:0}
.nthumb.shot{padding:0}
.nthumb.shot img{width:100%;height:100%;object-fit:cover;border-radius:0;box-shadow:none}
.nthumb.tile em{font-family:var(--mono);font-style:normal;font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ice);opacity:.75}
.band.light .nthumb{border-color:rgba(8,14,30,.16);background:#fff}
.note h3{font-size:1.15rem;margin-bottom:8px;transition:color .2s}
.note p{color:var(--body);font-size:.95rem}
.note:hover h3{color:var(--ice)}

.pager{display:flex;gap:8px}
.rbtn{width:42px;height:42px;border:1px solid var(--line-2);border-radius:8px;background:rgba(255,255,255,.03);color:var(--body);cursor:pointer;display:grid;place-items:center;transition:color .2s,border-color .2s,opacity .2s,background .2s}
.rbtn:hover:not(:disabled){color:var(--ice);border-color:var(--ice);background:rgba(255,255,255,.06)}
.rbtn:disabled{opacity:.3;cursor:default}
.rbtn svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.note[hidden]{display:none}

/* company */
.company{display:grid;grid-template-columns:1.1fr .9fr;gap:64px;align-items:center}
.company h2{margin-bottom:18px}
.company .lede{margin-bottom:28px}
.facts{display:grid;grid-template-columns:1fr;gap:0;border-top:1px solid var(--line-2)}
.frow{display:grid;grid-template-columns:auto 1fr;gap:24px;align-items:baseline;padding:16px 0;border-bottom:1px solid var(--line-2)}
.frow b{font-family:var(--mono);font-size:.75rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:500}
.frow span{font-family:var(--disp);font-size:1.05rem;font-weight:600;text-align:right}
.facts .tile{padding:20px 22px}
.facts b{display:block;font-family:var(--mono);font-size:.75rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:8px}
.facts span{font-family:var(--disp);font-size:1.1rem;font-weight:600}

/* faq */
.faq{max-width:900px}
.faq details{border-top:1px solid var(--line-2)}
.faq details:last-child{border-bottom:1px solid var(--line-2)}
.faq summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:22px 0;font-family:var(--disp);font-weight:600;font-size:1.1rem;letter-spacing:-.01em}
.faq summary::-webkit-details-marker{display:none}
.faq summary svg{flex:none;width:26px;height:26px;fill:none;stroke:var(--ice);stroke-width:1.8;stroke-linecap:round;transition:transform .3s var(--out)}
.faq details[open] summary svg{transform:rotate(45deg)}
.faq details p{padding:0 0 24px;color:var(--body);max-width:68ch}

/* close */
.close{position:relative;overflow:hidden;border-radius:16px;border:1px solid var(--line-2);padding:64px 56px;display:grid;grid-template-columns:1fr auto;gap:40px;align-items:center;background:linear-gradient(168deg,var(--navy-a),var(--navy-b) 45%,var(--navy-c));isolation:isolate}
.close .bg{position:absolute;inset:0;z-index:-1;opacity:.28;background-size:cover;background-position:center;mask-image:linear-gradient(90deg,transparent 30%,#000)}
.close h2{margin-bottom:14px}
.close p{color:var(--body);max-width:48ch;font-size:1.1rem}
.close .lbl{display:block;margin-top:18px}

/* interior */
.phero{position:relative;padding:56px 0 52px;border-bottom:1px solid var(--line);overflow:hidden;isolation:isolate}
.phero .bg{position:absolute;inset:0;z-index:-1;opacity:.35;background-size:cover;background-position:center;mask-image:linear-gradient(90deg,transparent 25%,#000 70%)}
.phero::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(5,8,15,.2),var(--ink))}
.crumb{display:flex;flex-wrap:wrap;gap:10px;align-items:center;font-family:var(--mono);font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:26px}
.crumb a{display:inline-block;padding:7px 0}
.crumb a:hover{color:var(--ice)}
.crumb span[aria-current]{color:var(--bone)}
/* legal pages: plain prose, nothing decorative */
.handoff{margin:18px 0 4px;display:grid;gap:12px}
.hlab{font-family:var(--mono);font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.hbox{width:100%;resize:vertical;padding:14px 16px;border-radius:10px;border:1px solid var(--line-2);background:rgba(255,255,255,.03);color:var(--bone);font:400 .9rem/1.55 var(--mono);white-space:pre-wrap}
.hbox:focus-visible{outline:2px solid var(--ice);outline-offset:2px}
.dmsg{color:var(--body);max-width:60ch}
.dnote{margin-top:16px;font-size:.9rem;color:var(--muted);max-width:60ch}
.done[data-state=error] h2{color:var(--amber)}
.prose{max-width:74ch}
.prose h2{font-size:clamp(1.25rem,2vw,1.6rem);margin:44px 0 14px}
.prose h2:first-child{margin-top:0}
.prose p{color:var(--body);margin-bottom:14px}
.kvl{display:grid;grid-template-columns:minmax(140px,15rem) minmax(0,1fr);gap:0;margin:0 0 8px;border-top:1px solid var(--line-2)}
.kvl dt{padding:14px 20px 14px 0;font-weight:600;font-size:.95rem;border-bottom:1px solid var(--line-2)}
.kvl dd{margin:0;padding:14px 0;color:var(--body);font-size:.95rem;border-bottom:1px solid var(--line-2)}
.todo{background:oklch(.72 .19 38/.18);color:var(--amber);padding:2px 8px;border-radius:5px;font-family:var(--mono);font-size:.72rem;letter-spacing:.08em;text-transform:uppercase}
.stamp{font-family:var(--mono);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-top:36px}
.flegal{display:flex;flex-wrap:wrap;gap:6px 22px}
.flegal a{color:var(--muted);transition:color .2s}
.flegal a:hover{color:var(--ice)}
@media(max-width:640px){.kvl{grid-template-columns:1fr}.kvl dt{padding-bottom:0;border-bottom:0}.kvl dd{padding-top:6px}}
.phero h1{margin-bottom:18px;max-width:16ch}
.pts{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.pt{padding:22px 22px;display:grid;grid-template-columns:28px 1fr;gap:14px;align-items:start}
.pt svg{width:24px;height:24px;fill:none;stroke:var(--ice);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.pt h3{font-size:1.1rem}
.show{display:grid;grid-template-columns:1.1fr .9fr;gap:56px;align-items:center}
/* alternate sides when two of these stack, so the page has a rhythm */
.show.rev>*:first-child{order:2}
.show.rev>*:last-child{order:1}
.show.flip{grid-template-columns:.9fr 1.1fr}
.show.flip .media{order:2}
.show .media{aspect-ratio:16/10}
.show .copy h3{font-size:1.6rem;margin-bottom:14px}
.show .copy>p{color:var(--body);margin-bottom:24px;max-width:52ch}
.kv{display:grid;grid-template-columns:auto 1fr;gap:10px 24px;margin-bottom:28px;padding:18px 0;border-top:1px solid var(--line-2);border-bottom:1px solid var(--line-2)}
.kv b{font-family:var(--mono);font-size:.75rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);padding-top:4px}
.kv span{font-weight:600}
.strip{display:grid;grid-template-columns:1fr auto;gap:32px;align-items:center;padding:36px 44px;border-radius:14px}
.strip h3{margin-bottom:8px}
.strip p{color:var(--body);max-width:52ch}
.cols3{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.cols3 .tile{padding:26px 24px 28px}
.cols3 svg{width:26px;height:26px;fill:none;stroke:var(--ice);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.cols3 h3{font-size:1.15rem;margin:16px 0 10px}
.cols3 p{color:var(--body);font-size:.98rem}
.team{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.person .media{aspect-ratio:1/1;--ar:1/1}
.person{padding:26px 0 0;border-top:2px solid var(--line-ice)}
.person .pi{display:block}
.pfacts{list-style:none;margin:16px 0 0;padding:0;display:grid;gap:9px}
.pfacts li{position:relative;padding-left:16px;color:var(--body);font-size:.93rem;line-height:1.45}
.pfacts li::before{content:"";position:absolute;left:0;top:.62em;width:6px;height:1px;background:var(--ice);opacity:.7}
.pressrow{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:48px;align-items:center}
.pressrow .links{display:flex;flex-direction:column;align-items:flex-start;gap:9px;margin-top:18px}
@media(max-width:860px){.pressrow{grid-template-columns:1fr;gap:26px}}
.person b{display:block;font-family:var(--disp);font-size:1.1rem;font-weight:600}
.person i{display:block;font-style:normal;color:var(--body);margin-top:3px}
.roles{display:grid;gap:14px}
.role{display:grid;grid-template-columns:1.2fr 1fr auto;gap:32px;align-items:center;padding:26px 28px}
.role h3{font-size:1.2rem;margin-bottom:6px}
.role .lbl{display:block}
.role p{color:var(--body)}
.tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.tags span{font-family:var(--mono);font-size:.75rem;letter-spacing:.04em;color:var(--ice);border:1px solid var(--line-2);border-radius:6px;padding:5px 10px}

/* newsroom */
.ftrow{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px;margin:28px 0 36px}
.filters{display:flex;flex-wrap:wrap;gap:8px}
.nlist{position:relative}
@media(max-width:640px){.ftrow{align-items:flex-start;flex-direction:column}}
.filters button{height:38px;padding:0 14px;border-radius:8px;border:1px solid var(--line-2);background:rgba(255,255,255,.03);color:var(--body);font:500 .875rem/1 var(--sans);cursor:pointer;transition:border-color .2s,color .2s,background .2s}
.filters button:hover{border-color:var(--line-ice);color:var(--bone)}
.filters button[aria-pressed="true"]{background:var(--ice);border-color:var(--ice);color:var(--ink)}
/* the blog shows everything: a grid, two filters, no paging */
.ngrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:44px 32px}
.ngrid .nrow{display:flex;flex-direction:column;gap:16px;min-width:0;padding:0;border:0}
.ngrid .nrow>.media{order:-1;aspect-ratio:16/10;width:100%}
.ngrid .nrow[hidden]{display:none}
.ftrow{display:flex;flex-wrap:wrap;align-items:center;gap:14px 26px;margin:28px 0 40px}
.fgroup{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.flab{font-family:var(--mono);font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-right:4px}
.fgroup button{height:34px;padding:0 13px;border-radius:8px;border:1px solid var(--line-2);background:rgba(255,255,255,.03);color:var(--body);font:500 .84rem/1 var(--sans);cursor:pointer;transition:border-color .2s,color .2s,background .2s}
.fgroup button:hover{border-color:var(--line-ice);color:var(--bone)}
.fgroup button[aria-pressed="true"]{background:var(--ice);border-color:var(--ice);color:var(--ink)}
.fcount{margin-left:auto;font-family:var(--mono);font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.bdgs{display:flex;flex-wrap:wrap;gap:7px}
.bdg{display:inline-flex;align-items:center;height:24px;padding:0 9px;border-radius:5px;font-family:var(--mono);font-size:.64rem;letter-spacing:.1em;text-transform:uppercase;border:1px solid var(--line-2);color:var(--muted)}
.bdg.sport{color:var(--ice);border-color:var(--line-ice)}
.bdg.type{color:var(--amber);border-color:oklch(.72 .19 38/.4)}
@media(max-width:1000px){.ngrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:36px 26px}}
@media(max-width:640px){.ngrid{grid-template-columns:1fr}.fcount{margin-left:0;width:100%}}
.ncar{display:flex;gap:26px;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;padding:4px 0 12px;scrollbar-width:none;cursor:grab;-webkit-overflow-scrolling:touch}
.ncar::-webkit-scrollbar{display:none}
.ncar:focus-visible{outline:2px solid var(--ice);outline-offset:6px}
.ncar.grabbing{cursor:grabbing;scroll-snap-type:none;scroll-behavior:auto;user-select:none;-webkit-user-select:none}
.ncar img,.ncar video{pointer-events:none;-webkit-user-drag:none}
.nrow{flex:0 0 clamp(266px,29%,372px);scroll-snap-align:start;display:flex;flex-direction:column;gap:16px;min-width:0;padding:0;border:0}
.nrow>.media{order:-1;aspect-ratio:16/10;width:100%}
.nrail{position:relative;height:2px;margin-top:18px;border-radius:2px;background:var(--line-2)}
.nrail i{position:absolute;top:0;bottom:0;border-radius:2px;background:linear-gradient(90deg,var(--accent),var(--warm));transition:left .12s linear,width .2s}
@media(max-width:640px){.nrow{flex-basis:82%}}
.nrow:last-child{border-bottom:1px solid var(--line-2)}
.nrow[hidden]{display:none}
.nrow h3{font-size:1.12rem;margin-bottom:10px;text-wrap:balance}
.nrow p{color:var(--body);font-size:.95rem;max-width:none;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.nrow .links{display:flex;flex-direction:column;align-items:flex-start;gap:9px;margin:14px 0 0;padding:0;font-size:.9rem}

.media.tile{display:grid;place-items:center;background:linear-gradient(160deg,var(--ink-3),var(--ink-2));aspect-ratio:4/3}
.media.tile em{font-family:var(--mono);font-style:normal;font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ice);opacity:.75}
.empty{padding:36px 0;color:var(--muted);border-top:1px solid var(--line-2);border-bottom:1px solid var(--line-2)}
.empty[hidden]{display:none}

/* contact */
.cgrid{display:grid;grid-template-columns:1.25fr .75fr;gap:64px;align-items:start}
.cform{display:grid;gap:20px}
.cform .row2{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.cform label{display:block;font-size:.9rem;font-weight:600;color:var(--body)}
.cform label .req{color:var(--amber);margin-left:2px}
.cform input,.cform textarea{display:block;width:100%;margin-top:8px;font:400 1.02rem/1.4 var(--sans);color:var(--bone);background:rgba(255,255,255,.035);border:1px solid var(--line-2);border-radius:10px;padding:14px 16px;transition:border-color .2s,background .2s}
.cform textarea{resize:vertical;min-height:140px}
.cform input::placeholder,.cform textarea::placeholder{color:#7C8AA3}
.cform input:focus,.cform textarea:focus{border-color:var(--ice);background:rgba(255,255,255,.05);outline:2px solid var(--ice);outline-offset:2px}
.cform .bad input,.cform .bad textarea{border-color:var(--amber)}
.cform .err{display:none;margin-top:6px;font-size:.85rem;color:var(--amber);font-weight:500}
.cform .bad .err{display:block}
.cform .cact{display:flex;flex-wrap:wrap;gap:16px;align-items:center}
.cform .note{font-size:.9rem;color:var(--muted);padding:0;border:0;display:inline}
.cform .done{display:none;padding:28px 32px;border-radius:12px}
.cform .done h2{font-size:1.4rem;margin-bottom:8px}
.cform .done p{color:var(--body)}
.cform.sent>*:not(.done){display:none}
.cform.sent .done{display:block}
.cside{display:grid;gap:26px}
.cside .lbl{display:block;margin-bottom:8px}
.cside p{color:var(--body)}
.cside a.big{font-size:1.15rem;font-weight:600}

/* footer */
footer{position:relative;z-index:2;background:var(--ink);margin-top:48px;border-top:1px solid var(--line-2);padding:64px 0 32px}
.fgrid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) minmax(0,1.3fr);gap:40px}
.fgrid>div{min-width:0}
.fh{font-family:var(--mono);font-size:.75rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:0 0 16px}
.fgrid ul{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.fgrid li a{color:var(--body);font-size:.95rem}
.fgrid li a:hover{color:var(--ice)}
.fgrid>div>p{color:var(--body);margin-top:14px;max-width:32ch;font-size:.95rem}
.news{display:flex;gap:8px;margin-top:12px}
.news input{flex:1;min-width:0;font:400 .95rem var(--sans);color:var(--bone);background:rgba(255,255,255,.035);border:1px solid var(--line-2);border-radius:9px;padding:0 14px;height:44px}
.news input:focus{outline:2px solid var(--ice);outline-offset:2px;border-color:var(--ice)}
.news button{height:44px;padding:0 16px;border-radius:9px;border:1px solid var(--line-2);background:none;color:var(--bone);font:600 .875rem var(--sans);cursor:pointer}
.news button:hover{border-color:var(--ice);color:var(--ice)}
.news .newsmail{height:44px;white-space:nowrap}
.fbot{display:flex;flex-wrap:wrap;gap:12px 32px;justify-content:space-between;margin-top:56px;padding-top:24px;border-top:1px solid var(--line);color:var(--muted);font-size:.9rem}
.fbot a:hover{color:var(--ice)}
.linkedin{display:inline-flex;align-items:center;gap:8px;margin-top:16px;color:var(--body)}
.linkedin svg{width:18px;height:18px;fill:currentColor}
.linkedin:hover{color:var(--ice)}

/* reveals: clip-wipe from an already-visible default */
.rv{opacity:1}
html.js .rv{opacity:0;transform:translateY(22px);clip-path:inset(0 0 18% 0);transition:opacity .7s var(--out) var(--d,0s),transform .9s var(--out) var(--d,0s),clip-path .9s var(--out) var(--d,0s)}
html.js .rv.in{opacity:1;transform:none;clip-path:inset(0 0 0 0)}
html.js .stagger > *{opacity:0;transform:translateY(16px);transition:opacity .6s var(--out),transform .7s var(--out)}
html.js .stagger.in > *{opacity:1;transform:none}
html.js .stagger.in > *:nth-child(1){transition-delay:.04s}
html.js .stagger.in > *:nth-child(2){transition-delay:.12s}
html.js .stagger.in > *:nth-child(3){transition-delay:.20s}
html.js .stagger.in > *:nth-child(4){transition-delay:.28s}
html.js .stagger.in > *:nth-child(5){transition-delay:.36s}
html.js .stagger.in > *:nth-child(6){transition-delay:.44s}
html.js .stagger.in > *:nth-child(7){transition-delay:.52s}
html.js .hero .wd{opacity:0;transform:translateY(.6em);transition:opacity .6s var(--out),transform .8s var(--out)}
html.js .hero.ready .wd{opacity:1;transform:none}

/* responsive */
@media (max-width:1180px){
  .pills{grid-template-columns:repeat(2,1fr);border-radius:20px;margin-inline:-25px}
  .pill:nth-child(3){border-left:0}
  .pill{padding:12px 18px}
  .pill b{white-space:normal}
  .tiles{grid-template-columns:repeat(2,1fr)}
  .logo{padding:0 34px;height:160px}
  .logo img{height:78px}
  .story{gap:40px}
}
@media (max-width:1000px){
  :root{--gut:28px}
  .links,.navright .btn{display:none}
  .burger{display:grid}
  .panel{display:block;position:fixed;inset:var(--nav) 0 0 0;background:var(--ink);z-index:49;padding:24px var(--gut) 40px;overflow:auto;clip-path:inset(0 0 0 100%);transition:clip-path .4s var(--out),visibility 0s .4s;visibility:hidden}
  .panel.open{clip-path:inset(0 0 0 0);visibility:visible;transition:clip-path .4s var(--out)}
  .panel a{display:block;padding:14px 0;border-bottom:1px solid var(--line);font-family:var(--disp);font-size:1.2rem;font-weight:600}
  .panel .sub a{font-family:var(--sans);font-size:1rem;font-weight:500;padding:10px 0 10px 18px;color:var(--body)}
  .panel .sub a span{display:block;font-size:.85rem;color:var(--muted)}
  .panel .btn{margin-top:24px;display:inline-flex}
  .hero .caption{position:static;justify-content:flex-start;max-width:none;margin-bottom:18px}
  .steps5{grid-template-columns:repeat(2,1fr);gap:32px 24px}
  .track{display:none}
  .step5 .n{margin:0 0 14px}
  .tour{grid-template-columns:1fr;gap:28px}
  .tour>.tabs,.tour>.tourplay,.tour>.stack{grid-column:auto;grid-row:auto}
  .solrow{grid-template-columns:44px minmax(0,1fr);gap:18px}
  .solrow .stag{grid-column:2;text-align:left;padding-top:8px}
  .films{grid-template-columns:1fr}
  .notes{grid-template-columns:1fr 1fr}
  .company{grid-template-columns:1fr;gap:40px}
  .show,.show.flip{grid-template-columns:1fr}
  .show.flip .media{order:0}
  .pts,.cols3{grid-template-columns:1fr}
  .team{gap:16px}
  .role{grid-template-columns:1fr;gap:14px}
  .nrow{grid-template-columns:1fr}
  .nrow .media{max-width:360px}
  .cgrid{grid-template-columns:1fr;gap:48px}
  .fgrid{grid-template-columns:1fr 1fr 1fr}
  .fgrid>div:first-child{grid-column:1/-1}
  .close{grid-template-columns:1fr;padding:44px 36px}
}
@media (max-width:640px){
  :root{--gut:20px;--nav:64px}
  body{font-size:16px}
  .brand span{display:none}
  .band{padding:76px 0}
  .band.tight{padding:56px 0}
  .head{margin-bottom:32px}
  .hero{min-height:auto;position:relative}
  .hero .w{padding-top:56px;padding-bottom:28px}
  .hero h1{font-size:clamp(2.3rem,10.5vw,2.9rem);line-height:1.1}
  .phero h1{font-size:clamp(1.95rem,8.4vw,2.6rem);line-height:1.1}
  .pills{grid-template-columns:1fr;margin-top:36px;margin-inline:-21px;border-radius:16px}
  .pill{padding:12px 14px}
  .pill{border-left:0;border-top:1px solid var(--line-2)}
  .pill:first-child{border-top:0}
  .scrollcue{display:none}
  .logo{height:140px;padding:0 26px;gap:12px}
  .logo img{height:66px;max-width:180px}
  .logo b{font-size:19px}
  .tiles{grid-template-columns:1fr}
  .tile.sol{min-height:0}
  .steps5{grid-template-columns:1fr;gap:22px}
  .owns{grid-template-columns:1fr}
  .stab{padding:15px 4px 16px}
  .stab .tl b{font-size:1.1rem}
  .spanel .who{display:none}
  .spanel .copy h3{font-size:1.45rem}
  .notes{grid-template-columns:1fr}
  .facts{grid-template-columns:1fr}
  .team{grid-template-columns:1fr}
  .strip{grid-template-columns:1fr;padding:28px}
  .cform .row2{grid-template-columns:1fr}
  .fgrid{grid-template-columns:1fr 1fr}
  .fgrid>div:last-child{grid-column:1/-1}
  .close{padding:32px 24px}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .route{animation:none}
  html.js .rv,html.js .hero .wd{opacity:1;transform:none;clip-path:none;transition:none}
  .stack.wipe .spanel:not([hidden]){animation:none}
  #prog{display:none}
  .stab::after{display:none}
  html.js .stagger > *{opacity:1;transform:none;transition:none}
  html.xfade main > .route{transition:none}
  .scrollcue::after{animation:none}
  .btn,.tile,.film .media video,.stab{transition:none}
  .hero .bg video{transform:none!important}
}

/* ---------- composition pass (direction A) ---------- */
/* ============================================================================
   DEMO A — "the same site, composed properly"
   A refinement layer over qsa-site-v4.css. Same sections, same order, same copy,
   same imagery. What changes is the grid, the rhythm and the typographic
   hierarchy. Nothing here introduces a colour, a face or a band that the
   design system does not already own.
   ========================================================================== */

/* ---------------------------------------------------------------------------
   1. "What we build" — a fixed spine
   The tag track was `auto`, so each row sized it to its own tag and every
   description column started somewhere different (674 / 674 / 710 / 715 at
   1440). Fixing the number track and the tag track makes all four rows share
   one grid, so the four descriptions and the four tags align.
   --------------------------------------------------------------------------- */
/* the four-track spine only exists above the v4 reflow breakpoint; below it the
   stock two-track stack still applies, so these overrides are scoped to avoid
   out-specifying the narrow layouts. */

/* ---------------------------------------------------------------------------
   2. "How a mandate runs" — a peer, not an accident
   It rendered at 32.8px against 46.4px everywhere else on the home route, and
   was the only heading carrying an eyebrow. It is a sibling topic to "What we
   build" (the footer lists them side by side), so it is now a peer heading at
   the same size; the eyebrow has moved out of the h2 and become the rule-mark
   that opens the movement, so the accessible name is just the heading.
   --------------------------------------------------------------------------- */
.head.sub{margin-bottom:52px}
.head.sub h2{font-size:clamp(1.85rem,3.5vw,2.9rem)}
.head.sub .eyebrow{
  display:flex;align-items:center;gap:14px;
  font-family:var(--mono);font-size:.7rem;font-weight:500;letter-spacing:.18em;
  text-transform:uppercase;color:var(--ice);margin-bottom:16px;
}
.head.sub .eyebrow::after{
  content:"";height:1px;width:clamp(40px,7vw,110px);
  background:linear-gradient(90deg,var(--ice),transparent);opacity:.6;
}
/* the movement break carries the same weight as the heading it introduces */
.mrun{margin-top:96px;padding-top:64px}

/* ---------------------------------------------------------------------------
   3. Home "Common questions" — use the measure
   The accordion was capped at 900px in a 1200px frame and hung off the left
   edge, leaving the right ~35% blank under a full-width heading. It becomes a
   two-column composition: the heading holds the left rail, the questions take
   the full remaining measure.
   --------------------------------------------------------------------------- */
#faq .w{
  display:grid;grid-template-columns:minmax(0,300px) minmax(0,1fr);
  column-gap:80px;align-items:start;
}
#faq .head{margin-bottom:0;display:block}
#faq .head h2{margin-bottom:18px}
#faq .head::after{
  content:"";display:block;height:2px;width:64px;border-radius:2px;
  background:linear-gradient(90deg,var(--accent),var(--warm));
}
#faq .faq{max-width:none}
#faq .faq details:first-child{border-top:0}
#faq .faq summary{padding:24px 0;font-size:1.15rem}
#faq .faq details p{max-width:76ch}
@media(max-width:920px){
  #faq .w{grid-template-columns:1fr}
  #faq .head{margin-bottom:34px}
  #faq .faq details:first-child{border-top:1px solid var(--line-2)}
}

/* ---------------------------------------------------------------------------
   4. /contact — the side rail gets a job
   The rail was four short unbounded blocks against a tall form, and the page
   then repeated the home FAQ underneath at the same 900px measure. The two
   faults cancel: the questions move into the rail, which becomes a bounded
   panel that runs the height of the form. The rail's one-line confidentiality
   note went with them — the FAQ answer it duplicated says strictly more.
   --------------------------------------------------------------------------- */
.cgrid{grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);gap:56px}
.cside{
  display:block;gap:0;
  border:1px solid var(--line-2);border-radius:14px;
  background:linear-gradient(180deg,rgba(255,255,255,.038),rgba(255,255,255,.012));
  overflow:hidden;
}
.cside>div{padding:20px 24px;border-bottom:1px solid var(--line)}
.cside>div:last-child{border-bottom:0}
.cside .lbl{margin-bottom:9px}
.cside p{font-size:.95rem;line-height:1.55}
.cside a.big{font-size:1.05rem;word-break:break-word}

.cfaq{padding:0 !important;background:rgba(132,188,255,.035)}
.cfaq h2{
  font-family:var(--disp);font-size:.95rem;font-weight:600;letter-spacing:.02em;
  padding:18px 24px 16px;border-bottom:1px solid var(--line);
}
.cfaq .faq{max-width:none;padding:0 24px}
.cfaq .faq details{border-top:0;border-bottom:1px solid var(--line)}
.cfaq .faq details:last-child{border-bottom:0}
.cfaq .faq summary{font-size:.98rem;padding:16px 0;gap:14px}
.cfaq .faq summary svg{width:20px;height:20px}
.cfaq .faq details p{padding:0 0 18px;font-size:.93rem;line-height:1.55;max-width:none}

@media(max-width:1000px){
  .cgrid{grid-template-columns:1fr;gap:44px}
}

/* ---------------------------------------------------------------------------
   5. /about "What we do" — one measure, not two half-used ones
   The block was a 1.1fr / .9fr grid, vertically centred: a three-line lede
   floating against a six-row fact stack, with most of one column empty. The
   heading and lede now sit on their own line at a readable measure and the
   facts run across the full frame as a hairline table, so the section fills
   the width it occupies.
   --------------------------------------------------------------------------- */
#r-about .company{grid-template-columns:minmax(0,1fr);gap:44px;align-items:start}
#r-about .company .lede{margin-bottom:0;max-width:64ch}
#r-about .facts{
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:1px;background:var(--line-2);border:1px solid var(--line-2);
  border-radius:14px;overflow:hidden;
}
#r-about .facts .tile{
  border:0;border-radius:0;padding:24px 26px 26px;
  background:linear-gradient(180deg,rgba(255,255,255,.035),rgba(255,255,255,.012)),var(--ink);
}
#r-about .facts b{margin-bottom:10px}
#r-about .facts span{font-size:1.05rem;line-height:1.35;display:block}
@media(max-width:900px){#r-about .facts{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){#r-about .facts{grid-template-columns:1fr}}

/* ---------------------------------------------------------------------------
   6. The plate cards — a decision instead of a gap
   Four cards had no footage and fell back to a flat navy rectangle with a 12px
   mono caption floating in the middle, which read as a missing image. They now
   share one deliberate treatment: a measured field, an accent rule, and the
   subject set at display size — a title card. Where the design system has a
   model for the sport, the field carries it: the Six Nations study gets the
   rugby wireframe qsa-figures.js already draws for the sport pages.
   --------------------------------------------------------------------------- */
.media.tile,.nthumb.tile{
  position:relative;display:block;padding:0;overflow:hidden;
  background:
    linear-gradient(180deg,rgba(60,109,255,.16),rgba(60,109,255,0) 58%),
    repeating-linear-gradient(90deg,rgba(132,188,255,.105) 0 1px,transparent 1px 38px),
    repeating-linear-gradient(0deg,rgba(132,188,255,.105) 0 1px,transparent 1px 38px),
    linear-gradient(158deg,var(--ink-3),var(--ink-2) 62%,var(--ink-1));
}
.media.tile::after,.nthumb.tile::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(5,8,15,0) 42%,rgba(5,8,15,.82));
}
.media.tile em,.nthumb.tile em{
  position:absolute;left:0;right:0;bottom:0;z-index:2;
  padding:0 22px 20px 22px;
  font-family:var(--disp);font-style:normal;font-weight:600;
  font-size:clamp(1.05rem,1.55vw,1.45rem);line-height:1.12;letter-spacing:-.022em;
  text-transform:none;color:var(--bone);opacity:1;text-wrap:balance;
}
/* the accent rule that opens every plate, in the same blue as the rails */
.media.tile em::before,.nthumb.tile em::before{
  content:"";display:block;height:2px;width:34px;border-radius:2px;margin-bottom:14px;
  background:linear-gradient(90deg,var(--accent),var(--ice));
}
.media.tile.fig canvas.fig3d,.nthumb.tile.fig canvas.fig3d{
  position:absolute;inset:0;width:100%;height:100%;aspect-ratio:auto;
  background:none;pointer-events:none;
}
.nthumb.tile{aspect-ratio:4/3}
.note:hover .nthumb.tile,.nrow:hover .media.tile{border-color:var(--line-ice)}
/* a light band must not paint the dark plate white */
.band.light .nthumb.tile{
  background:
    linear-gradient(180deg,rgba(60,109,255,.16),rgba(60,109,255,0) 58%),
    repeating-linear-gradient(90deg,rgba(132,188,255,.105) 0 1px,transparent 1px 38px),
    repeating-linear-gradient(0deg,rgba(132,188,255,.105) 0 1px,transparent 1px 38px),
    linear-gradient(158deg,var(--ink-3),var(--ink-2) 62%,var(--ink-1));
  border-color:rgba(8,14,30,.16);
}
.band.light .nthumb.tile em{color:#F2F5FA}

/* ---------------------------------------------------------------------------
   7. /blog — one filter axis
   Eleven chips on two axes, combined with AND, over nine pieces: three of them
   returned exactly one card and several combinations returned none. The sport
   axis is gone — every card still carries its sport badge — and the remaining
   type chips ride on the heading line, so the apparatus reads as a control on
   the section rather than as a section of its own.
   --------------------------------------------------------------------------- */
#r-blog .head{align-items:center;gap:18px 40px;margin-bottom:40px}
#r-blog .ftrow{margin:0;gap:8px;justify-content:flex-end}
#r-blog .fgroup{gap:8px}
#r-blog .fgroup button{height:36px;padding:0 15px;border-radius:999px}
#r-blog .fgroup button:disabled{opacity:.34;cursor:not-allowed}
#r-blog .fgroup button:focus-visible{outline:2px solid var(--ice);outline-offset:3px}
@media(max-width:820px){
  #r-blog .head{align-items:flex-start}
  #r-blog .ftrow{justify-content:flex-start}
}

/* ---------------------------------------------------------------------------
   8. Small consistency passes that follow from the above
   --------------------------------------------------------------------------- */
/* the blog cards keep an even baseline now that four of them are title plates */
.ngrid{gap:48px 32px}
.ngrid .nrow>.media{border-radius:12px;overflow:hidden;border:1px solid var(--line-2);transition:border-color .3s}
.ngrid .nrow .media.tile{aspect-ratio:16/10}
.nthumb.fig,.media.tile.fig{isolation:isolate}

/* ---------- hero: cross-cut montage ---------- */
.hero .bg .hv{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .55s ease}
.hero .bg .hv.on{opacity:1}
@media(prefers-reduced-motion:reduce){.hero .bg .hv{transition:none}}
/* ---------- hero: the sports as a network, not a row of cards ---------- */
.scon{position:relative;display:flex;flex-wrap:nowrap;align-items:center;gap:clamp(12px,1.9vw,26px);width:max-content;max-width:100%;margin-top:34px;padding:30px 0 24px}
.sweb{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;z-index:0}
.sweb line{stroke:rgba(132,188,255,.22);stroke-width:1;transition:stroke .5s,stroke-width .5s}
.sweb line.hot{stroke:rgba(132,188,255,.6);stroke-width:1.2;stroke-dasharray:2 6;stroke-linecap:round;animation:webflow 3.2s linear infinite}
@keyframes webflow{to{stroke-dashoffset:-32}}
.snode{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:9px;width:74px;transform:translateY(var(--y,0));transition:transform .45s var(--out)}
.snode:hover{transform:translateY(calc(var(--y,0) - 3px))}
.sdot{position:relative;display:grid;place-items:center;width:46px;height:46px;border-radius:50%;background:radial-gradient(circle,rgba(5,8,15,.74) 34%,rgba(5,8,15,0) 72%)}
.sdot::after{content:"";position:absolute;inset:0;border-radius:50%;border:1px solid var(--line-ice);opacity:0;transform:scale(.72);transition:opacity .45s,transform .55s var(--out)}
.snode:hover .sdot::after,.snode.live .sdot::after{opacity:1;transform:scale(1)}
.snode.live .sdot::after{border-color:var(--ice);box-shadow:0 0 18px -2px rgba(132,188,255,.45)}
.sdot svg{width:30px;height:30px;fill:none;stroke:var(--ice);stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;opacity:.7;transition:opacity .4s,transform .5s var(--out)}
.snode:hover .sdot svg,.snode.live .sdot svg{opacity:1;transform:scale(1.08)}
.snode b{font-family:var(--mono);font-size:.58rem;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);transition:color .4s}
.snode:hover b,.snode.live b{color:var(--bone)}
@media(max-width:900px){.scon{flex-wrap:wrap;width:auto;gap:10px}.snode{width:66px}}
@media(max-width:600px){.scon{margin-top:26px;padding:18px 0 14px}.snode,.snode:hover{width:calc(25% - 8px);transform:translateY(calc(var(--y,0) * .4))}}
@media(prefers-reduced-motion:reduce){.sweb line.hot{animation:none}}

/* the about hero: bring the faces into the visible half */
#r-about .phero .bg{background-size:150% auto;background-position:6% 30%;opacity:.42;mask-image:linear-gradient(90deg,transparent 12%,#000 52%);-webkit-mask-image:linear-gradient(90deg,transparent 12%,#000 52%)}

/* a clip that is nearly square carries its own 2D reconstruction underneath:
   cropping it to 16/10 throws away the half that makes the point */
.media.whole{background:#070C18}
.media.whole video{object-fit:contain}
