@font-face{font-family:"Cabinet Grotesk";src:url("../fonts/CabinetGrotesk-Variable.woff2") format("woff2");font-weight:100 900;font-display:swap}
@font-face{font-family:"Satoshi";src:url("../fonts/Satoshi-Variable.woff2") format("woff2");font-weight:300 900;font-display:swap}

/* Layout: full-bleed scroll stages (hero mosaic zoom-out, curved work sheet, horizontal services rail, 3D name fly-through).
   Dark first like the live site; light mode via the header toggle. Blues are the live site's own: #6b8ff0 and #4169e1. */
:root{
  --bg:#06070c;
  --bg-2:#0a0c14;
  --surface:#10131f;
  --surface-2:#161a2a;
  --line:#1c2033;
  --line-2:#2a3048;
  --ink:#f2f4fb;
  --ink-2:#b3b9d1;
  --muted:#767d99;
  --faint:rgba(242,244,251,.5);
  --accent:#6b8ff0;
  --accent-2:#7f9ff5;
  --glass:rgba(16,19,31,.6);
  --hdr-bg:rgba(6,7,12,.5);
  --card-shadow:rgba(0,0,0,.55);
  --card-glass:linear-gradient(180deg,rgba(6,7,12,.62),rgba(6,7,12,.18));
  --card-border:rgba(255,255,255,.12);
  --soc-border:rgba(242,244,251,.38);
  --pill-bg:#f2f4fb;
  --pill-fg:#06070c;
  /* theme independent */
  --on-blue:#ffffff;
  --on-blue-2:rgba(255,255,255,.86);
  --blue-1:#6b8ff0;
  --blue-2:#4169e1;
  --blue-3:#2a55cc;
  --blue-4:#17388f;
  --blue-5:#0b2466;
  --font-d:"Cabinet Grotesk","Helvetica Neue",Helvetica,Arial,sans-serif;
  --font-b:"Satoshi","Helvetica Neue",Helvetica,Arial,sans-serif;
  --ease:cubic-bezier(.16,1,.3,1);
  --gutter:max(16px,4vw);
  --vh:1vh;
  color-scheme:dark;
}
:root[data-theme="light"]{
  --bg:#ffffff;
  --bg-2:#ffffff;
  --surface:#f5f7fb;
  --surface-2:#eef2fa;
  --line:#e4e8f3;
  --line-2:#d3daea;
  --ink:#0a0c14;
  --ink-2:#4b5066;
  --muted:#7a8098;
  --faint:rgba(10,12,20,.42);
  --accent:#4169e1;
  --accent-2:#2f55cf;
  --glass:rgba(255,255,255,.75);
  --hdr-bg:rgba(255,255,255,.75);
  --card-shadow:rgba(20,42,114,.28);
  --card-glass:linear-gradient(180deg,rgba(255,255,255,.88),rgba(255,255,255,.45));
  --card-border:rgba(10,12,20,.08);
  --soc-border:rgba(10,12,20,.2);
  --pill-bg:#0a0c14;
  --pill-fg:#ffffff;
  color-scheme:light;
}
html{background:var(--bg);-webkit-text-size-adjust:100%}
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto!important}
.lenis.lenis-stopped{overflow:hidden}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-b);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:clip}
html.theming,html.theming *,html.theming *::before,html.theming *::after{transition:background-color .5s var(--ease),color .5s var(--ease),border-color .5s var(--ease),fill .5s!important}
*,*::before,*::after{box-sizing:border-box}
img{display:block;max-width:100%}
a{color:inherit}
h1,h2,h3,p,ul,ol,figure,blockquote{margin:0}
ul,ol{padding:0;list-style:none}
::selection{background:var(--accent);color:var(--on-blue)}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:6px}
.skip{position:absolute;left:-9999px;top:0;z-index:100;background:var(--pill-bg);color:var(--pill-fg);padding:10px 16px;border-radius:8px}
.skip:focus{left:16px;top:16px}

.wrap{padding-inline:var(--gutter)}
.eyebrow{display:inline-flex;align-items:center;gap:.7em;font-size:12px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-2)}
.eyebrow::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent)}
.h2{font-family:var(--font-d);font-weight:500;font-size:clamp(36px,4.4vw,76px);line-height:1.04;letter-spacing:-.02em;text-wrap:balance}
.lede{font-size:clamp(16px,1.12vw,19px);line-height:1.65;color:var(--ink-2);max-width:56ch;text-wrap:pretty}

/* progress */
.progress{position:fixed;top:0;left:0;height:2px;width:100%;transform-origin:0 50%;transform:scaleX(0);background:linear-gradient(90deg,var(--blue-2),var(--blue-1));z-index:60;pointer-events:none}

/* header */
.hdr{position:fixed;inset:0 0 auto 0;z-index:50;display:flex;align-items:center;justify-content:space-between;gap:20px;color:var(--ink);padding:calc(env(safe-area-inset-top,0px) + clamp(14px,1.4vw,22px)) var(--gutter) clamp(14px,1.4vw,22px);transition:background-color .5s var(--ease),backdrop-filter .5s var(--ease),color .4s,opacity 1s var(--ease) .9s,transform 1s var(--ease) .9s}
.hdr.scrolled{background-color:var(--hdr-bg);-webkit-backdrop-filter:blur(16px) saturate(1.3);backdrop-filter:blur(16px) saturate(1.3)}
.hdr.on-blue{--ink:#f2f4fb;--ink-2:rgba(242,244,251,.85);--faint:rgba(242,244,251,.55);--pill-bg:#f2f4fb;--pill-fg:#06070c;--hdr-bg:rgba(11,36,102,.25);--line-2:rgba(255,255,255,.3);--surface:rgba(255,255,255,.14)}
.logo{font-family:var(--font-d);font-weight:500;font-size:clamp(18px,1.75vw,30px);letter-spacing:-.01em;text-decoration:none;color:var(--ink);white-space:nowrap}
.logo span{color:var(--faint)}
.nav{display:flex;gap:clamp(18px,2.2vw,36px)}
.nav a{position:relative;font-size:14px;font-weight:500;color:var(--ink-2);text-decoration:none;padding:6px 0;transition:color .3s}
.nav a::after{content:"";position:absolute;left:0;right:0;bottom:2px;height:1px;background:currentColor;transform:scaleX(0);transform-origin:100% 50%;transition:transform .5s var(--ease)}
.nav a:hover{color:var(--ink)}
.nav a:hover::after{transform:scaleX(1);transform-origin:0 50%}
.hdr-right{display:flex;align-items:center;gap:clamp(10px,1vw,16px)}
.toggle{position:relative;flex:none;width:44px;height:25px;padding:0;border-radius:20px;border:1px solid var(--line-2);background:var(--surface);cursor:pointer;transition:background-color .4s,border-color .4s}
.toggle::after{content:"";position:absolute;top:2px;left:2px;width:19px;height:19px;border-radius:50%;background:var(--accent);box-shadow:0 2px 6px rgba(0,0,0,.25);transition:transform .5s var(--ease),background-color .4s}
.toggle[aria-pressed="true"]::after{transform:translateX(19px)}
.hdr.on-blue .toggle::after{background:#fff}
.pill{display:inline-flex;align-items:center;gap:.75em;background:var(--pill-bg);color:var(--pill-fg);border-radius:999px;padding:.95em 1.6em;font-size:clamp(14px,1vw,16px);font-weight:600;text-decoration:none;white-space:nowrap;transition:background-color .4s var(--ease),color .4s,transform .4s var(--ease)}
.pill:hover{background:var(--blue-2);color:var(--on-blue)}
.pill:active{transform:scale(.97)}
.pill .dot{position:relative;width:7px;height:7px;border-radius:50%;background:var(--blue-2)}
.pill:hover .dot{background:var(--on-blue)}
.pill .dot::after{content:"";position:absolute;inset:-4px;border-radius:50%;border:1px solid currentColor;opacity:0;animation:ping 2.4s var(--ease) infinite}
@keyframes ping{0%{transform:scale(.4);opacity:.9}80%,100%{transform:scale(1.6);opacity:0}}
.pill .short{display:none}
.ghost{display:inline-flex;align-items:center;gap:.6em;color:var(--ink);text-decoration:none;font-weight:500;font-size:clamp(14px,1vw,16px);padding:.95em 1.4em;border-radius:999px;border:1px solid var(--line-2);transition:border-color .4s,background-color .4s}
.ghost:hover{border-color:var(--accent);background:rgba(107,143,240,.1)}

/* ---------- HERO ---------- */
.hero{position:relative;height:calc(var(--vh)*100)}
.hero-stage{position:sticky;top:0;height:calc(var(--vh)*100);overflow:hidden;background:var(--bg)}
.mosaic{position:absolute;inset:0;transform-origin:50% 50%;--g:40px;--r:0px;--rc:0px}
.col{position:absolute;top:0;left:0;width:100%;height:100%}
.col-l{left:calc(-100% - var(--g))}
.col-r{left:calc(100% + var(--g))}
.col-l,.col-r,.col-c .tile{display:none}
.motion .col-l,.motion .col-r,.motion .col-c .tile{display:block}
.tile{position:absolute;left:0;width:100%;height:100%;top:calc(var(--i) * (100% + var(--g)));border-radius:var(--r);overflow:hidden;background:var(--surface)}
.tile img{width:100%;height:100%;object-fit:cover;object-position:50% 0}
.tile::after{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:inset 0 0 0 1px rgba(255,255,255,.06);background:linear-gradient(180deg,transparent 55%,rgba(6,7,12,.4))}
.hero-card{position:absolute;inset:0;overflow:hidden;border-radius:var(--rc);background:var(--blue-2);isolation:isolate;color:var(--on-blue)}
.hero-bg{position:absolute;inset:-10%;background:
  radial-gradient(55% 50% at 86% 6%,rgba(107,143,240,.95),transparent 70%),
  radial-gradient(42% 48% at 4% 90%,rgba(107,143,240,.7),transparent 70%),
  radial-gradient(62% 62% at 100% 100%,rgba(11,36,102,.92),transparent 72%),
  linear-gradient(160deg,#4f78ea 0%,var(--blue-2) 42%,var(--blue-3) 72%,var(--blue-4) 100%);
  transition:filter 2.2s var(--ease),transform 2.4s var(--ease)}
.hero-card::after{content:"";position:absolute;inset:0;z-index:5;pointer-events:none;opacity:.1;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
.hero-glow{position:absolute;z-index:1;left:calc(64% - var(--vh)*34);bottom:-10%;width:calc(var(--vh)*68);height:80%;border-radius:50%;background:radial-gradient(closest-side,rgba(107,143,240,.55),transparent);filter:blur(10px);pointer-events:none}
.hero-portrait{position:absolute;bottom:0;left:calc(64% - var(--vh)*40);height:100%;width:calc(var(--vh)*80);max-width:none;object-fit:contain;object-position:50% 100%;z-index:2;
  filter:drop-shadow(0 30px 60px rgba(11,36,102,.55));transform-origin:50% 25%;
  transition:opacity 1.6s var(--ease) .1s,transform 2.2s var(--ease) .1s,filter 1.6s var(--ease) .1s}
.hero-shade{position:absolute;inset:0;z-index:3;pointer-events:none;background:linear-gradient(0deg,rgba(11,36,102,.55) 0%,rgba(11,36,102,0) 26%)}
.hero-title{position:absolute;z-index:4;left:var(--gutter);top:50%;transform:translateY(-44%);font-family:var(--font-d);font-weight:500;font-size:clamp(42px,5vw,96px);line-height:1.02;letter-spacing:-.025em;color:var(--on-blue);text-shadow:0 2px 40px rgba(11,36,102,.3)}
.hero-title .ln{display:block;overflow:hidden;padding-bottom:.07em;margin-bottom:-.07em}
.hero-title .ln>span{display:inline-block;transition:transform 1.4s var(--ease);transition-delay:calc(.35s + var(--i) * .09s)}
.hero-side{position:absolute;z-index:4;right:var(--gutter);width:13ch;font-size:clamp(13px,1vw,16px);font-weight:500;line-height:1.35;color:var(--on-blue);transition:opacity 1.2s var(--ease) 1s,transform 1.2s var(--ease) 1s}
.hero-side-1{top:27%}
.hero-side-2{top:68%}
.hero-scroll{position:absolute;z-index:4;left:var(--gutter);bottom:clamp(20px,3vh,36px);display:flex;align-items:center;gap:12px;font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--on-blue-2);transition:opacity 1.2s var(--ease) 1.3s}
.hero-scroll i{position:relative;display:block;width:1px;height:36px;background:rgba(255,255,255,.3);overflow:hidden}
.hero-scroll i::after{content:"";position:absolute;left:0;top:-40%;width:100%;height:40%;background:var(--on-blue);animation:drip 2s var(--ease) infinite}
@keyframes drip{to{top:100%}}

/* load sequence (only when JS is running) */
.js:not(.loaded) .hero-portrait{opacity:0;transform:translateY(24px) scale(1.04);filter:blur(12px)}
.js:not(.loaded) .hero-bg{filter:blur(40px) saturate(1.2);transform:scale(1.15)}
.js:not(.loaded) .hero-title .ln>span{transform:translateY(112%)}
.js:not(.loaded) .hero-side{opacity:0;transform:translateY(12px)}
.js:not(.loaded) .hero-scroll{opacity:0}
.js:not(.loaded) .hdr{opacity:0;transform:translateY(-10px)}

/* ---------- WORK ---------- */
.work{position:relative;z-index:2;color:var(--on-blue);background:linear-gradient(180deg,transparent calc(100% - min(75vh,760px)),var(--bg) calc(100% - 80px),var(--bg) 100%),linear-gradient(100deg,#5a80ec 0%,var(--blue-2) 45%,var(--blue-3) 100%);border-top-left-radius:50% var(--curve,0px);border-top-right-radius:50% var(--curve,0px);padding-top:clamp(96px,11vw,200px)}
.work>*{position:relative;z-index:1}
.work-head{display:grid;justify-items:center;text-align:center;gap:20px}
.work-head .eyebrow{color:var(--on-blue)}
.work-head .eyebrow::before{background:var(--on-blue)}
.work-head .lede{color:var(--on-blue-2);max-width:52ch}
.work-pin{position:relative;margin-top:clamp(40px,5vw,80px)}
.work-sticky{display:grid;gap:clamp(20px,3vw,48px);padding-inline:var(--gutter)}
.work-list{display:none}
.work-stack{display:grid;gap:20px}
.wcard{display:grid;grid-template-columns:1fr;color:var(--ink);background:var(--bg-2);border-radius:clamp(14px,1.2vw,22px);overflow:hidden;box-shadow:0 40px 80px -30px var(--card-shadow),inset 0 0 0 1px var(--card-border);transform-origin:50% 0}
.wcard-shot{position:relative;order:-1;display:grid;place-items:center;padding:clamp(16px,2.4vw,44px);overflow:hidden;background:var(--surface);min-width:0}
.shot-bg{position:absolute;inset:-12%;width:124%;height:124%;max-width:none;object-fit:cover;filter:blur(32px) saturate(1.25);opacity:.55}
.frame{position:relative;width:100%;border-radius:clamp(8px,.7vw,12px);overflow:hidden;background:#0a0c14;box-shadow:0 30px 70px -25px rgba(0,0,0,.6),0 0 0 1px rgba(255,255,255,.08);transition:transform 1.1s var(--ease)}
.wcard:hover .frame{transform:translateY(-6px)}
.frame-bar{display:flex;align-items:center;gap:6px;height:26px;padding:0 12px;background:#14171f;font-size:11px;color:#b3b9d1}
.frame-bar i{width:7px;height:7px;border-radius:50%;background:#2a3048}
.frame-bar span{margin-left:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.frame img{width:100%;height:auto}
.wcard-body{display:flex;flex-direction:column;gap:clamp(12px,1.1vw,18px);padding:clamp(20px,2.2vw,40px);min-width:0}
.chip{align-self:flex-start;font-size:11px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);background:rgba(107,143,240,.12);border:1px solid rgba(107,143,240,.28);padding:6px 10px;border-radius:999px}
.wcard h3{font-family:var(--font-d);font-weight:500;font-size:clamp(26px,2.3vw,42px);line-height:1.05;letter-spacing:-.02em}
.wcard p{font-size:clamp(14px,.98vw,16px);line-height:1.6;color:var(--ink-2)}
.wstats{display:flex;flex-wrap:wrap;gap:clamp(14px,1.6vw,28px);padding-top:4px}
.wstats div{display:grid;gap:2px}
.wstats b{font-family:var(--font-d);font-weight:500;font-size:clamp(24px,2vw,34px);line-height:1;color:var(--ink);font-variant-numeric:tabular-nums}
.wstats span{font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.wlink{margin-top:auto;align-self:flex-start;display:inline-flex;align-items:center;gap:.6em;font-weight:600;font-size:14px;color:var(--ink);text-decoration:none;padding:.75em 1.2em;border-radius:999px;border:1px solid var(--line-2);transition:background-color .4s var(--ease),border-color .4s,color .4s}
.wlink svg{transition:transform .4s var(--ease)}
.wlink:hover{background:var(--pill-bg);color:var(--pill-fg);border-color:var(--pill-bg)}
.wlink:hover svg{transform:rotate(45deg)}

.more-work{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:clamp(12px,1.4vw,24px);padding-block:clamp(48px,6vw,110px) clamp(64px,8vw,140px)}
.mw{position:relative;display:grid;gap:6px;padding:clamp(20px,1.8vw,30px);border-radius:clamp(14px,1.1vw,20px);color:var(--ink);background:var(--glass);border:1px solid var(--card-border);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);text-decoration:none;transition:border-color .4s,transform .5s var(--ease)}
.mw b{font-family:var(--font-d);font-weight:500;font-size:clamp(20px,1.5vw,26px);letter-spacing:-.01em}
.mw span{font-size:14px;color:var(--ink-2)}
.mw:hover{border-color:var(--accent);transform:translateY(-3px)}

/* ---------- ABOUT ---------- */
.about{position:relative;padding-block:clamp(90px,10vw,180px) clamp(60px,7vw,120px);display:grid;justify-items:center;text-align:center;gap:24px}
.about .h2{max-width:20ch}
.about .lede{max-width:62ch}
.ctas{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin-top:8px}
.stats{width:100%;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(20px,3vw,56px);margin-top:clamp(48px,6vw,100px);text-align:left}
.stat{display:grid;align-content:start;gap:14px;padding-bottom:clamp(24px,2.4vw,40px);position:relative}
.stat::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--line-2);transform-origin:0 50%;transition:transform 1.4s var(--ease) var(--rd,0s)}
.motion .stat:not(.in)::after{transform:scaleX(0)}
.stat svg{color:var(--accent);width:30px;height:30px}
.stat b{font-family:var(--font-d);font-weight:500;font-size:clamp(40px,4.2vw,76px);line-height:1;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.stat span{font-size:12px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2)}

/* ---------- SERVICES (subgrid keeps titles, copy and lists on the same lines in every card) ---------- */
.services{position:relative;padding-top:clamp(60px,7vw,120px)}
.svc-head{display:grid;gap:22px;max-width:1100px}
.svc-pin{position:relative;margin-top:clamp(40px,5vw,72px)}
.svc-sticky{padding-bottom:clamp(60px,7vw,120px)}
.svc-track{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));grid-auto-rows:auto;gap:16px;padding-inline:var(--gutter)}
.svc{position:relative;isolation:isolate;display:grid;grid-row:span 4;grid-template-rows:subgrid;row-gap:0;padding:clamp(22px,2vw,36px);border-radius:clamp(14px,1.2vw,22px);background:var(--surface);border:1px solid var(--line);overflow:hidden;text-decoration:none;color:var(--ink);transition:border-color .5s,color .5s}
.svc::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(140deg,var(--blue-1) 0%,var(--blue-2) 45%,var(--blue-3) 100%);opacity:0;transition:opacity .6s var(--ease)}
.svc-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:clamp(48px,6vw,110px)}
.svc-num{font-size:13px;font-weight:600;letter-spacing:.14em;color:var(--ink-2);transition:color .5s}
.arrow-c{display:grid;place-items:center;width:42px;height:42px;border-radius:50%;border:1px solid var(--line-2);color:var(--ink);transition:background-color .5s var(--ease),color .5s,border-color .5s,transform .5s var(--ease)}
.svc h3{align-self:end;font-family:var(--font-d);font-weight:500;font-size:clamp(26px,2.2vw,40px);line-height:1.05;letter-spacing:-.02em;margin-bottom:16px;text-wrap:balance}
.svc p{font-size:clamp(14px,.95vw,16px);line-height:1.6;color:var(--ink-2);margin-bottom:22px;transition:color .5s}
.svc ul{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;gap:6px 18px}
.svc li{position:relative;padding-left:14px;font-size:13.5px;line-height:1.4}
.svc li::before{content:"";position:absolute;left:0;top:.55em;width:5px;height:5px;border-radius:50%;background:currentColor}
/* the lit card: the first one by default, whichever is hovered otherwise */
.svc-track:not(:hover) .svc.hot,.svc:hover{color:var(--on-blue);border-color:transparent}
.svc-track:not(:hover) .svc.hot::before,.svc:hover::before{opacity:1}
.svc-track:not(:hover) .svc.hot .svc-num,.svc:hover .svc-num{color:var(--on-blue)}
.svc-track:not(:hover) .svc.hot p,.svc:hover p{color:var(--on-blue-2)}
.svc-track:not(:hover) .svc.hot .arrow-c,.svc:hover .arrow-c{background:#fff;color:#06070c;border-color:#fff}
.svc:hover .arrow-c{transform:rotate(45deg)}
.svc-cta{background:transparent;border:1px dashed var(--line-2)}
.svc-cta h3{grid-row:4;font-size:clamp(32px,3vw,56px);margin-bottom:0}

/* ---------- SOCIAL (list) ---------- */
.social{padding-block:clamp(90px,10vw,180px)}
.social-head{display:grid;gap:20px;margin-bottom:clamp(40px,5vw,80px)}
.social-cols{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(28px,4vw,72px)}
.sgroup h3{display:flex;align-items:center;gap:10px;font-size:12px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);padding-bottom:16px;border-bottom:1px solid var(--line-2)}
.sgroup h3 .live{width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 4px rgba(107,143,240,.2)}
.srow{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:16px;padding:clamp(16px,1.5vw,24px) 0;border-bottom:1px solid var(--line);text-decoration:none}
.srow::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:var(--accent);transform:scaleX(0);transform-origin:0 50%;transition:transform .7s var(--ease)}
.srow:hover::after{transform:scaleX(1)}
.srow b{display:block;font-family:var(--font-d);font-weight:500;font-size:clamp(18px,1.4vw,24px);letter-spacing:-.01em;transition:color .4s,transform .6s var(--ease);overflow-wrap:anywhere}
.srow span{display:block;font-size:13px;color:var(--muted);margin-top:2px;letter-spacing:.02em}
.srow svg{color:var(--ink-2);transition:transform .5s var(--ease),color .4s}
.srow:hover b{color:var(--accent);transform:translateX(8px)}
.srow:hover svg{transform:rotate(45deg);color:var(--ink)}

/* ---------- ORGANISATIONS (fly-through) ---------- */
.orgs{position:relative;padding-block:clamp(60px,7vw,120px)}
.orgs-stage{position:relative;display:grid;justify-items:center;gap:36px;overflow:hidden;padding-inline:var(--gutter)}
.orgs-title{position:relative;z-index:2;font-family:var(--font-d);font-weight:500;font-size:clamp(32px,4vw,68px);line-height:1.08;letter-spacing:-.02em;text-align:center;max-width:17ch;text-wrap:balance}
.orgs-cloud{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;max-width:980px}
.org{font-family:var(--font-d);font-weight:500;font-size:clamp(16px,1.6vw,28px);letter-spacing:-.01em;white-space:nowrap;padding:.5em 1.05em;border-radius:999px;color:var(--ink);background:var(--glass);border:1px solid var(--line-2)}
.motion .orgs{height:calc(var(--vh)*330);padding:0}
.motion .orgs-stage{position:sticky;top:0;height:calc(var(--vh)*100);display:grid;place-items:center;perspective:900px;perspective-origin:50% 50%}
.motion .orgs-cloud{position:absolute;inset:0;max-width:none;display:block;transform-style:preserve-3d;pointer-events:none}
.motion .org{position:absolute;left:50%;top:50%;opacity:0;will-change:transform,opacity;box-shadow:0 0 60px -10px rgba(65,105,225,.45)}
.orgs-glow{position:absolute;inset:auto 0 0 0;height:60%;background:radial-gradient(50% 60% at 50% 100%,rgba(65,105,225,.32),transparent 70%);pointer-events:none}

/* ---------- STORY ---------- */
.story{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:clamp(32px,6vw,120px);align-items:start;padding-block:clamp(90px,10vw,180px)}
.story-fig{position:sticky;top:calc(var(--vh)*14);border-radius:clamp(14px,1.2vw,22px);overflow:hidden;background:var(--surface)}
.story-fig img{width:100%;aspect-ratio:4/5;object-fit:cover;object-position:42% 50%}
.story-fig figcaption{position:absolute;left:12px;bottom:12px;right:12px;font-size:12.5px;color:#f2f4fb;background:rgba(6,7,12,.6);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:8px 12px;border-radius:10px}
.story-text{display:grid;gap:clamp(22px,2vw,32px);min-width:0}
.story-lead{font-family:var(--font-d);font-weight:500;font-size:clamp(26px,2.6vw,46px);line-height:1.18;letter-spacing:-.015em;text-wrap:pretty}
.motion .story-lead .wd{opacity:.16;transition:opacity .35s linear}
.motion .story-lead .wd.lit{opacity:1}
.story-text p:not(.story-lead){font-size:clamp(16px,1.12vw,19px);line-height:1.7;color:var(--ink-2);max-width:60ch}
.sign{display:grid;gap:2px;padding-top:12px;border-top:1px solid var(--line-2)}
.sign b{font-family:var(--font-d);font-weight:500;font-size:22px}
.sign span{font-size:14px;color:var(--muted)}

/* ---------- ROLES ---------- */
.roles{padding-block:clamp(70px,8vw,140px)}
.roles-head{display:grid;justify-items:center;text-align:center;gap:20px;margin-bottom:clamp(48px,6vw,100px)}
.roles-head .h2{max-width:18ch}
.roles-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(24px,3vw,56px)}
.role{display:flex;flex-direction:column;gap:16px;padding-bottom:clamp(24px,2.4vw,40px);border-bottom:1px solid var(--line-2);min-width:0}
.role-logo{width:76px;height:76px;border-radius:18px;background:#ffffff;box-shadow:0 0 0 1px var(--line);display:grid;place-items:center;overflow:hidden}
.role-logo img{width:84%;height:84%;object-fit:contain}
.role-org{font-size:12px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--accent)}
.role h3{font-family:var(--font-d);font-weight:500;font-size:clamp(24px,1.9vw,34px);line-height:1.1;letter-spacing:-.015em;margin-top:-8px}
.role p{font-size:15px;line-height:1.65;color:var(--ink-2)}
.tags{display:flex;flex-wrap:wrap;gap:6px}
.tags li{font-size:12.5px;color:var(--ink-2);padding:5px 10px;border-radius:999px;border:1px solid var(--line-2)}
.role-links{display:flex;gap:18px;margin-top:auto;padding-top:6px}
.role-links a{display:inline-flex;align-items:center;gap:6px;font-size:14px;font-weight:600;text-decoration:none;color:var(--ink);transition:color .3s}
.role-links a:hover{color:var(--accent)}

/* ---------- TESTIMONIALS ---------- */
.words{padding-block:clamp(80px,9vw,160px);display:grid;justify-items:center;text-align:center;gap:20px}
.words .h2{max-width:16ch}
.t-wrap{position:relative;width:min(100%,880px);margin-top:clamp(40px,4vw,64px)}
.t-avatars{position:relative;z-index:2;display:flex;justify-content:center;align-items:center;gap:6px;margin-bottom:-34px}
.t-av{width:52px;height:52px;padding:0;border-radius:50%;overflow:hidden;border:2px solid var(--bg);background:var(--surface);cursor:pointer;filter:grayscale(1) brightness(.8);transition:width .6s var(--ease),height .6s var(--ease),filter .6s,box-shadow .6s}
.t-av img{width:100%;height:100%;object-fit:cover}
.t-av.on{width:72px;height:72px;filter:none;box-shadow:0 0 0 2px var(--accent)}
.t-card{display:grid;padding:clamp(56px,5vw,72px) clamp(22px,4vw,64px) clamp(32px,3.4vw,52px);border-radius:clamp(16px,1.4vw,26px);background:var(--surface);border:1px solid var(--line)}
.t-item{grid-area:1/1;display:grid;gap:10px;align-content:start;transition:opacity .7s var(--ease),transform .7s var(--ease)}
.t-item:not(.on){opacity:0;transform:translateY(14px);pointer-events:none;visibility:hidden}
.t-item figcaption{display:grid;gap:2px;order:-1;margin-bottom:12px}
.t-item b{font-family:var(--font-d);font-weight:500;font-size:clamp(22px,1.8vw,30px);color:var(--accent)}
.t-item span{font-size:14px;color:var(--ink)}
.t-item blockquote{font-size:clamp(15px,1.15vw,19px);line-height:1.7;color:var(--ink-2);text-wrap:pretty}
.t-nav{display:flex;justify-content:center;gap:10px;margin-top:24px}
.t-btn{display:grid;place-items:center;width:46px;height:46px;border-radius:50%;background:transparent;color:var(--ink);border:1px solid var(--line-2);cursor:pointer;transition:background-color .4s,color .4s,border-color .4s}
.t-btn:hover{background:var(--pill-bg);color:var(--pill-fg);border-color:var(--pill-bg)}
.t-more{margin-top:20px;font-size:14px;font-weight:600;color:var(--ink-2);text-decoration:none;transition:color .3s}
.t-more:hover{color:var(--accent)}

/* ---------- CONTACT / FOOTER ---------- */
.contact{position:relative;overflow:hidden;padding-top:clamp(70px,8vw,140px)}
.contact-glow{position:absolute;left:-10%;right:-10%;bottom:0;height:78%;background:
  radial-gradient(48% 62% at 28% 100%,rgba(107,143,240,.95),transparent 72%),
  radial-gradient(42% 58% at 78% 100%,rgba(65,105,225,.95),transparent 72%),
  linear-gradient(180deg,transparent 30%,rgba(65,105,225,.5) 100%);filter:blur(24px);pointer-events:none}
.contact-card{position:relative;margin-inline:var(--gutter);display:grid;gap:clamp(40px,6vw,110px);padding:clamp(24px,3vw,56px);border-radius:clamp(18px,1.6vw,30px);border:1px solid var(--card-border);background:var(--card-glass);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
.cc-top{display:flex;justify-content:space-between;align-items:flex-start;gap:32px;flex-wrap:wrap}
.cc-top .logo{font-size:clamp(28px,3vw,54px)}
.cc-right{display:grid;justify-items:end;text-align:right;gap:18px;max-width:640px}
.cc-right .h2{font-size:clamp(30px,3.2vw,58px)}
.cc-right p{font-size:clamp(15px,1.05vw,18px);color:var(--ink-2);line-height:1.65;max-width:54ch}
.cc-bottom{display:flex;justify-content:space-between;align-items:flex-end;gap:28px;flex-wrap:wrap}
.reach{display:grid;gap:8px}
.reach small{font-size:12px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--ink)}
.reach a{font-size:clamp(15px,1.1vw,18px);text-decoration:none;color:var(--ink);overflow-wrap:anywhere;transition:color .3s}
.reach a:hover{color:var(--accent)}
.reach .loc{font-size:14px;color:var(--ink-2)}
.socials{display:flex;gap:10px}
.socials a{display:grid;place-items:center;width:46px;height:46px;border-radius:50%;border:1px solid var(--soc-border);color:var(--ink);text-decoration:none;transition:background-color .4s,color .4s,transform .4s var(--ease)}
.socials a:hover{background:var(--pill-bg);color:var(--pill-fg);transform:translateY(-3px)}
.legal{position:relative;display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px 24px;padding:clamp(22px,2.4vw,36px) var(--gutter) calc(clamp(22px,2.4vw,36px) + env(safe-area-inset-bottom,0px));font-size:13.5px;color:var(--on-blue)}
.legal nav{display:flex;gap:20px}
.legal a{text-decoration:none;transition:opacity .3s}
.legal a:hover{opacity:.7}

/* reveal helpers (only animated when JS motion is on) */
.motion [data-reveal]{opacity:0;transform:translateY(28px);transition:opacity 1s var(--ease) var(--rd,0s),transform 1s var(--ease) var(--rd,0s)}
.motion [data-reveal].in{opacity:1;transform:none}
[data-split] .w{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.08em;margin-bottom:-.08em}
[data-split] .w>span{display:inline-block}
.motion [data-split] .w>span{transform:translateY(108%);transition:transform 1.1s var(--ease);transition-delay:calc(var(--d) * 40ms)}
.motion [data-split].in .w>span{transform:none}

/* ---------- MOTION LAYOUTS ---------- */
.motion .hero{height:calc(var(--vh)*330)}
.motion .work{margin-top:calc(var(--vh)*-100)}
@media (min-width:901px){
  .motion .work-pin{height:calc(var(--vh)*100 + var(--vh)*85*3)}
  .motion .work-sticky{position:sticky;top:0;height:calc(var(--vh)*100);grid-template-columns:minmax(200px,19vw) minmax(0,1fr);align-items:center;padding-top:clamp(70px,7vh,100px);padding-bottom:4vh}
  .motion .work-list{position:relative;display:grid;gap:clamp(22px,4vh,40px);padding-left:26px}
  .motion .work-list::before,.motion .work-list::after{content:"";position:absolute;left:4px;top:8px;bottom:8px;width:1px;background:rgba(255,255,255,.3)}
  .motion .work-list::after{background:var(--on-blue);transform-origin:50% 0;transform:scaleY(var(--q,0))}
  .motion .work-list li{position:relative}
  .motion .work-list a{display:grid;gap:2px;text-decoration:none;color:var(--on-blue);opacity:.62;transition:opacity .5s}
  .motion .work-list li::before{content:"";position:absolute;left:-26px;top:7px;width:9px;height:9px;border-radius:50%;border:1px solid var(--on-blue);background:var(--blue-2);transition:background-color .5s,box-shadow .5s}
  .motion .work-list li.on::before{background:var(--on-blue);box-shadow:0 0 0 4px rgba(255,255,255,.22)}
  .motion .work-list li.on a,.motion .work-list a:hover{opacity:1}
  .motion .work-list b{font-family:var(--font-d);font-weight:500;font-size:clamp(17px,1.25vw,22px);letter-spacing:-.01em}
  .motion .work-list span{font-size:12.5px;color:var(--on-blue-2)}
  .motion .work-stack{position:relative;height:min(calc(var(--vh)*74),40vw);display:block}
  .motion .wcard{position:absolute;inset:0;will-change:transform}
  .motion .wcard:not(:first-child){transform:translateY(calc(var(--vh)*95))}
  .wcard{grid-template-columns:minmax(0,42fr) minmax(0,58fr)}
  .wcard-shot{order:0}
  .motion .svc-pin{height:calc(var(--vh)*230)}
  .motion .svc-sticky{position:sticky;top:0;height:calc(var(--vh)*100);display:flex;align-items:center;overflow:hidden;padding-bottom:0}
  .motion .svc-track{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:clamp(320px,30vw,540px);grid-template-rows:repeat(4,auto);width:max-content;will-change:transform}
}

/* ---------- RESPONSIVE ---------- */
@media (max-width:1100px){
  .nav{display:none}
  .stats{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:900px){
  .story{grid-template-columns:1fr}
  .story-fig{position:relative;top:0}
  .story-fig img{aspect-ratio:4/3}
  .roles-grid{grid-template-columns:1fr}
  .social-cols{grid-template-columns:1fr}
  .cc-right{justify-items:start;text-align:left}
}
@media (max-width:700px){
  .hero-portrait{left:50%;transform:translateX(-50%);height:88%}
  .js:not(.loaded) .hero-portrait{transform:translateX(-50%) translateY(24px) scale(1.04)}
  .hero-glow{left:50%;transform:translateX(-50%)}
  .hero-shade{background:linear-gradient(0deg,rgba(11,36,102,.95) 0%,rgba(11,36,102,.6) 32%,rgba(11,36,102,0) 58%)}
  .hero-title{top:auto;bottom:calc(var(--vh)*11);transform:none;font-size:clamp(34px,10vw,56px)}
  .hero-side{width:auto;font-size:12px;top:calc(env(safe-area-inset-top,0px) + 84px)}
  .hero-side-1{left:var(--gutter);right:auto}
  .hero-side-2{right:var(--gutter);text-align:right}
  .hero-scroll{display:none}
  .hdr{gap:10px}
  .hdr .pill{padding:.8em 1.1em;font-size:13px}
  .stats{gap:28px 18px}
  .svc ul{grid-template-columns:1fr}
  .legal{flex-direction:column}
}
@media (max-width:440px){
  .pill .full{display:none}
  .pill .short{display:inline}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;transition-delay:0s!important}
}

/* ---------- ORGANISATIONS on phones: a clean cluster, not the 3D fly-through ----------
   The sticky 330vh fly-through is a desktop and tablet moment. On phones it is
   replaced by a tidy pill cluster that reads well static (reduced motion) and
   fades then floats in gently when motion is allowed. The radial glow is dropped
   here; on a light phone it only muddied the lower names. */
@media (max-width:700px){
  .orgs-glow{display:none}
  .orgs{padding-block:clamp(50px,13vw,84px)}
  .orgs-stage{gap:24px}
  .orgs-title{font-size:clamp(27px,7.6vw,40px);max-width:15ch}
  .orgs-cloud{gap:9px;max-width:430px}
  .org{font-size:15px;padding:.64em 1.05em;background:var(--surface);border-color:var(--line);box-shadow:0 1px 2px rgba(20,42,114,.06)}

  /* undo the fly-through layout so the cluster sits in normal flow */
  .motion .orgs{height:auto;padding-block:clamp(50px,13vw,84px)}
  .motion .orgs-stage{position:static;height:auto;display:grid;perspective:none}
  .motion .orgs-cloud{position:static;inset:auto;max-width:430px;display:flex;flex-wrap:wrap;justify-content:center;transform:none;transform-style:flat;pointer-events:auto}
  .motion .orgs-cloud .org{position:static;left:auto;top:auto;will-change:auto;
    opacity:0;transform:translateY(16px);
    transition:opacity .5s var(--ease),transform .55s var(--ease);
    transition-delay:calc(var(--d,0)*38ms);
    box-shadow:0 1px 2px rgba(20,42,114,.06)}
  .motion .orgs-cloud.in .org{opacity:1;transform:none;animation:orgFloat 6.5s ease-in-out infinite;animation-delay:calc(var(--d,0)*-0.5s)}
}
@keyframes orgFloat{0%,100%{translate:0 0}50%{translate:0 -5px}}

/* The orgs cloud carries data-reveal only so its children can stagger in on
   phones; on larger screens it is the JS-driven fly-through stage. Either way,
   never let the generic reveal hide or shift the cloud itself. */
.motion .orgs-cloud[data-reveal]{opacity:1;transform:none;transition:none}
