/* ==========================================================================
   Triova, immersive build
   Fonts are self-hosted (no Google request): Sora for display, Instrument Sans for text.
   ========================================================================== */
@font-face{font-family:"Sora";src:url("assets/fonts/sora-latin-wght.woff2") format("woff2");font-weight:100 800;font-style:normal;font-display:swap}
@font-face{font-family:"Instrument Sans";src:url("assets/fonts/instrument-sans-latin-wght.woff2") format("woff2");font-weight:400 700;font-style:normal;font-display:swap}

:root{
  --void:#000;
  --blue:#1467f0;
  --blue-hi:#2b86ff;
  --cyan:#22c5ff;
  --ice:#eaf2ff;
  --silver:#c4cedc;
  --steel:#6f819e;
  --muted:#9dabc0;
  --dim:#7f90ab;
  --line:rgba(190,208,235,.14);
  --line-strong:rgba(190,208,235,.34);
  --display:"Sora","Segoe UI",system-ui,-apple-system,sans-serif;
  --text:"Instrument Sans","Segoe UI",system-ui,-apple-system,sans-serif;
  --max:1240px;
  --pad:clamp(20px,4vw,48px);
  --nav:72px;
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--void);color:var(--ice);font:400 1.0625rem/1.65 var(--text);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:clip}
img,svg,canvas{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
h1,h2,h3,p,ol,ul{margin:0}
ol,ul{padding:0}
:focus-visible{outline:3px solid var(--cyan);outline-offset:3px}
section[id]{scroll-margin-top:0}
.container{width:100%;max-width:var(--max);margin-inline:auto;padding-inline:var(--pad)}
.skip{position:fixed;left:1rem;top:-4rem;z-index:200;background:var(--cyan);color:#000;padding:.65rem 1rem;font-weight:600;border-radius:8px}
.skip:focus{top:1rem}

/* ---------- fixed backdrop ---------- */
.nebula{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden}
.neb{position:absolute;border-radius:50%;will-change:transform}
.neb-a{width:90vmax;height:90vmax;left:38%;top:-38vmax;background:radial-gradient(closest-side,rgba(20,103,240,.24),rgba(20,103,240,0) 70%)}
.neb-b{width:80vmax;height:80vmax;left:-32vmax;top:32vh;background:radial-gradient(closest-side,rgba(34,197,255,.10),rgba(34,197,255,0) 70%)}
.neb-c{width:70vmax;height:70vmax;left:34%;top:90vh;background:radial-gradient(closest-side,rgba(70,70,230,.11),rgba(70,70,230,0) 70%)}
#space{position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none}
.cursor-glow{position:fixed;left:0;top:0;width:640px;height:640px;margin:-320px 0 0 -320px;z-index:1;pointer-events:none;border-radius:50%;background:radial-gradient(closest-side,rgba(34,197,255,.12),rgba(34,197,255,0) 70%);opacity:0;transition:opacity .6s;mix-blend-mode:screen;will-change:transform}
.cursor-glow.on{opacity:1}
main,.site-footer{position:relative;z-index:2}

/* ---------- header ---------- */
.site-header{position:fixed;inset:0 0 auto;z-index:80;border-bottom:1px solid transparent;transition:background-color .35s,border-color .35s,-webkit-backdrop-filter .35s,backdrop-filter .35s}
.site-header.is-scrolled,.site-header.is-open{background:rgba(0,0,0,.6);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border-color:var(--line)}
.nav{height:var(--nav);display:flex;align-items:center;justify-content:space-between}
.brand{display:block;width:124px}
.brand img{width:100%;height:auto;filter:drop-shadow(0 6px 22px rgba(20,103,240,.35))}
.nav-links{display:flex;align-items:center;gap:2.2rem;font-size:.92rem;color:var(--silver)}
.nav-links a{transition:color .2s}
.nav-links a:hover{color:#fff}
.nav-links .nav-cta{padding:.62rem 1.15rem;border-radius:10px;color:#fff;font-weight:600;background:rgba(20,103,240,.22);box-shadow:inset 0 0 0 1px rgba(34,197,255,.45);transition:background-color .25s,box-shadow .25s}
.nav-links .nav-cta:hover{background:rgba(20,103,240,.5);box-shadow:inset 0 0 0 1px var(--cyan),0 0 28px rgba(34,197,255,.3)}
.menu-toggle{display:none;background:none;border:0;padding:12px;cursor:pointer}
.menu-toggle span{display:block;width:24px;height:2px;background:var(--ice);border-radius:2px;transition:transform .3s}
.menu-toggle span+span{margin-top:6px}
.is-open .menu-toggle span:first-child{transform:translateY(4px) rotate(45deg)}
.is-open .menu-toggle span:last-child{transform:translateY(-4px) rotate(-45deg)}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:3.2rem;padding:.85rem 1.75rem;border:0;border-radius:12px;font:600 .96rem/1 var(--text);color:#fff;cursor:pointer;transition:transform .25s,box-shadow .25s,filter .25s}
.btn-primary{background:linear-gradient(120deg,var(--blue),var(--blue-hi) 55%,#1fb4ff);box-shadow:0 0 0 1px rgba(255,255,255,.14) inset,0 14px 44px rgba(20,103,240,.45)}
.btn-primary:hover{transform:translateY(-2px);box-shadow:0 0 0 1px rgba(255,255,255,.22) inset,0 20px 60px rgba(34,197,255,.5)}
.btn-link{position:relative;padding:.6rem 0;border:0;background:none;color:var(--ice);font:500 .96rem/1 var(--text);cursor:pointer}
.btn-link::after{content:"";position:absolute;left:0;right:0;bottom:.15rem;height:1px;background:var(--line-strong);transition:background-color .25s,box-shadow .25s}
.btn-link:hover::after{background:var(--cyan);box-shadow:0 0 12px var(--cyan)}
.actions{display:flex;flex-wrap:wrap;align-items:center;gap:1rem 2rem}

/* ---------- section rail ---------- */
.rail{position:fixed;right:clamp(6px,1.4vw,22px);top:50%;transform:translateY(-50%);z-index:70;display:none;flex-direction:column}
.rail a{position:relative;width:22px;height:22px;padding:6.5px;background:rgba(190,208,235,.3);background-clip:content-box;border-radius:50%;transition:background-color .3s,box-shadow .3s,transform .3s}
.rail a.active{background-color:var(--cyan);box-shadow:0 0 14px var(--cyan);transform:scale(1.2)}
.rail a::after{content:attr(data-label);position:absolute;right:26px;top:50%;transform:translateY(-50%);white-space:nowrap;font:500 .78rem var(--text);color:var(--silver);opacity:0;pointer-events:none;transition:opacity .2s}
.rail a:hover::after,.rail a:focus-visible::after{opacity:1}
@media (min-width:1100px){.rail{display:flex}}

/* ==========================================================================
   HERO: the dive
   ========================================================================== */
.hero{position:relative}
html.js:not(.rm) .hero{height:290vh}
.hero-stage{position:relative;height:100vh;height:100svh;min-height:640px;overflow:hidden}
html.js:not(.rm) .hero-stage{position:sticky;top:0}
.hero-stage canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.orbit-back{z-index:1}
.mark-wrap{position:absolute;z-index:2;transform-origin:51.3% 59.4%;will-change:transform,opacity;pointer-events:none}
.mark{width:100%;height:auto;filter:drop-shadow(0 0 46px rgba(20,103,240,.55))}
.orbit-front{z-index:3}
.flash{position:absolute;inset:0;z-index:4;pointer-events:none;opacity:0;mix-blend-mode:screen;background:radial-gradient(circle at 50% 50%,rgba(60,150,255,.8),rgba(20,103,240,.34) 32%,rgba(20,103,240,0) 70%)}
.hero-copy{position:absolute;inset:0;z-index:5;display:flex;align-items:center;padding-top:var(--nav);pointer-events:none;will-change:transform,opacity}
.hero-copy .container{pointer-events:none}
.hero-text{max-width:37rem;pointer-events:none}
.hero-text a{pointer-events:auto}
.hero h1{font:500 clamp(2.9rem,5.8vw,5.6rem)/.98 var(--display);letter-spacing:-.048em;margin-bottom:1.6rem}
.hero h1 .ln{display:block}
.hero h1 .ln:first-child>span{background:linear-gradient(180deg,#fff 25%,#b4d3ff);-webkit-background-clip:text;background-clip:text;color:transparent}
.hero h1 .ln.dim{color:#8095b3}
.lead{max-width:31rem;font-size:clamp(1.02rem,1.5vw,1.2rem);color:var(--muted)}
.hero .actions{margin-top:2rem}
.disciplines{list-style:none;display:flex;flex-wrap:wrap;gap:.6rem 1.8rem;margin-top:clamp(2rem,6vh,3.6rem);padding-top:1.3rem;border-top:1px solid var(--line);color:var(--silver);font-size:.9rem;font-weight:500}
.disciplines li{display:inline-flex;align-items:center;gap:.6rem}
.disciplines li::before{content:"";width:.62em;height:.62em;background:var(--dot);clip-path:polygon(50% 0,100% 100%,0 100%)}
.scroll-cue{position:absolute;z-index:5;left:50%;bottom:22px;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:10px;font-size:.78rem;color:var(--dim);letter-spacing:.04em}
.scroll-cue i{display:block;width:1px;height:38px;background:linear-gradient(var(--cyan),transparent);transform-origin:top;animation:cue 2.2s ease-in-out infinite}
@keyframes cue{0%{transform:scaleY(0)}50%{transform:scaleY(1)}100%{transform:scaleY(1);opacity:0}}

/* one orchestrated load moment */
@media (prefers-reduced-motion:no-preference){
  .hero h1 .ln{overflow:hidden;padding:0 .04em .14em;margin:0 -.04em -.14em}
  .hero h1 .ln>span{display:block;animation:rise 1.1s cubic-bezier(.2,.7,.1,1) both}
  .hero h1 .ln:nth-child(2)>span{animation-delay:.12s}
  .hero h1 .ln:nth-child(3)>span{animation-delay:.24s}
  .hero .lead,.hero .actions,.hero .disciplines{animation:fadeUp 1s ease .75s both}
  .hero .actions{animation-delay:.9s}
  .hero .disciplines{animation-delay:1.05s}
  .mark{animation:bloom 2.4s cubic-bezier(.2,.7,.1,1) both,float 8s ease-in-out 2.4s infinite}
}
@keyframes rise{from{transform:translateY(112%)}}
@keyframes fadeUp{from{opacity:0;transform:translateY(14px)}}
@keyframes bloom{from{opacity:0;filter:blur(22px) brightness(2.2)}}
@keyframes float{50%{translate:0 -9px}}

/* ==========================================================================
   MODEL statement
   ========================================================================== */
.statement{position:relative;overflow-x:clip}
html.js:not(.rm) .statement{height:290vh}
.statement-stage{display:flex;align-items:center;min-height:100svh;padding-block:clamp(5rem,12vh,8rem)}
html.js:not(.rm) .statement-stage{position:sticky;top:0;height:100svh;padding-block:0}
.statement-grid{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,5fr);gap:clamp(2rem,6vw,6rem);align-items:center;will-change:transform,opacity}
.statement h2{font:500 clamp(2.6rem,5.8vw,5.4rem)/1 var(--display);letter-spacing:-.05em;margin-bottom:1.6rem}
.statement-copy p{max-width:31rem;color:var(--muted);font-size:1.1rem}
.beats{list-style:none;display:grid;gap:.5rem;margin-top:2.6rem;padding:0}
.beats li{display:flex;align-items:baseline;gap:1.1rem;font:500 clamp(1.5rem,2.8vw,2.4rem)/1.2 var(--display);letter-spacing:-.03em;transition:opacity .5s,color .5s}
.beat-n{min-width:1.4rem;font:600 .9rem var(--text);letter-spacing:0;color:var(--cyan)}
html.js:not(.rm) .beats li{opacity:.24}
html.js:not(.rm) .beats li.on{opacity:1}
.triangle{width:100%;max-width:470px;justify-self:end;overflow:visible}
.tri-ghost{fill:none;stroke:rgba(190,208,235,.18);stroke-width:1.5;stroke-linejoin:round}
.tri-path{fill:none;stroke:url(#triStroke);stroke-width:3.2;stroke-linejoin:round;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:var(--tri,0);filter:drop-shadow(0 0 12px rgba(34,197,255,.65))}
.vertex .halo{fill:url(#triGlow);transition:opacity .6s}
.vertex .dot{fill:var(--cyan);stroke:#fff;stroke-width:2;transition:fill .5s,stroke .5s}
html.js:not(.rm) .vertex:not(.on) .halo{opacity:0}
html.js:not(.rm) .vertex:not(.on) .dot{fill:#02060f;stroke:var(--line-strong)}

/* ==========================================================================
   Shared section pieces
   ========================================================================== */
.section{position:relative;padding-block:clamp(5rem,12vw,9rem)}
.section h2{font:500 clamp(2.4rem,5.2vw,4.7rem)/1.02 var(--display);letter-spacing:-.048em}
.section h2 span,.statement h2 span,.cta h2 span{color:var(--dim)}
.section-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.55fr);gap:clamp(1.5rem,5vw,4rem);align-items:end}
.section-head p,.approach-side p{max-width:26rem;color:var(--muted);font-size:1.05rem}

/* ==========================================================================
   Capabilities: bento of living diagrams
   ========================================================================== */
.bento{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:18px;margin-top:clamp(2.5rem,5vw,4rem)}
.panel{position:relative;overflow:hidden;isolation:isolate;border-radius:28px;border:1px solid var(--line);background:linear-gradient(160deg,rgba(12,24,50,.66),rgba(3,7,17,.78));-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.panel::before{content:"";position:absolute;inset:0;z-index:-1;background:radial-gradient(440px circle at var(--mx,50%) var(--my,0%),rgba(34,197,255,.17),transparent 62%);opacity:0;transition:opacity .4s}
.panel:hover::before{opacity:1}
.panel::after{content:"";position:absolute;left:0;right:0;top:0;height:1px;background:linear-gradient(90deg,transparent,var(--accent),transparent);opacity:.75}
.panel-ai{grid-column:span 7;display:flex;flex-direction:column}
.panel-growth{grid-column:span 5;display:flex;flex-direction:column}
.panel-tech{grid-column:span 12;display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:center}
.panel .scene{width:100%;height:clamp(210px,23vw,300px);flex:1 1 auto;min-height:clamp(210px,23vw,300px);padding:1.4rem 1.4rem 0}
.panel-tech .scene{height:clamp(240px,27vw,340px);padding:1rem 2rem 1rem 0}
.panel-body{padding:clamp(1.4rem,2.6vw,2.3rem)}
.panel-ai .panel-body,.panel-growth .panel-body{margin-top:auto}
.panel h3{font:600 clamp(1.5rem,2.4vw,2rem)/1.1 var(--display);letter-spacing:-.03em;margin-bottom:.7rem}
.panel p{color:var(--muted);font-size:.98rem;max-width:34rem}
.facts{list-style:none;display:flex;flex-wrap:wrap;gap:.5rem 1.2rem;margin-top:1.3rem;padding:0;font-size:.86rem;color:var(--silver)}
.facts li{display:inline-flex;align-items:center;gap:.5rem}
.facts li::before{content:"";width:.5em;height:.5em;background:var(--accent);clip-path:polygon(50% 0,100% 100%,0 100%)}

/* scene: AI */
.ai-hub .hub-ring{transform-origin:240px 130px;animation:spin 20s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
/* scene: growth */
.bars rect{fill:url(#barFill);stroke:rgba(93,184,255,.38);stroke-width:1;transform-box:fill-box;transform-origin:50% 100%;animation:barRise 4.4s ease-in-out infinite alternate}
.bars rect:nth-child(2){animation-delay:.15s}.bars rect:nth-child(3){animation-delay:.3s}.bars rect:nth-child(4){animation-delay:.45s}
.bars rect:nth-child(5){animation-delay:.6s}.bars rect:nth-child(6){animation-delay:.75s}.bars rect:nth-child(7){animation-delay:.9s}.bars rect:nth-child(8){animation-delay:1.05s}
@keyframes barRise{from{transform:scaleY(.18)}to{transform:scaleY(1)}}
.grow-line{stroke-dasharray:1;stroke-dashoffset:1;filter:drop-shadow(0 0 8px rgba(190,235,255,.7));animation:draw 6.4s ease-in-out infinite}
@keyframes draw{0%{stroke-dashoffset:1;opacity:1}55%{stroke-dashoffset:0;opacity:1}90%{stroke-dashoffset:0;opacity:1}100%{stroke-dashoffset:0;opacity:0}}
.grow-dot{opacity:0;filter:drop-shadow(0 0 8px #bfeaff);animation:dotIn 6.4s ease-in-out infinite}
@keyframes dotIn{0%,52%{opacity:0}60%,90%{opacity:1}100%{opacity:0}}
.grow-ping{opacity:0;transform-box:fill-box;transform-origin:center;animation:ping 6.4s ease-out infinite}
@keyframes ping{0%,55%{opacity:0;transform:scale(1)}58%{opacity:.9}100%{opacity:0;transform:scale(6)}}
/* scene: plates */
.plate{animation:plateFloat 6.5s ease-in-out infinite;transition:translate .6s cubic-bezier(.2,.7,.1,1)}
.plate-2{animation-delay:-2.1s}.plate-3{animation-delay:-4.2s}
@keyframes plateFloat{50%{transform:translateY(-7px)}}
.panel-tech:hover .plate-1{translate:0 -20px}
.panel-tech:hover .plate-3{translate:0 20px}
.beam{animation:beam 3.6s ease-in-out infinite}
@keyframes beam{0%{transform:translateY(0);opacity:0}15%{opacity:1}85%{opacity:1}100%{transform:translateY(200px);opacity:0}}
/* only animate what is on screen */
html.js .panel:not(.in-view) .scene *{animation-play-state:paused}

/* ==========================================================================
   Approach: the path
   ========================================================================== */
.approach-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:clamp(2rem,7vw,7rem);align-items:start}
.approach-side{position:sticky;top:calc(var(--nav) + 16vh)}
.approach-side p{margin-top:1.5rem}
.path{--P:clamp(2.8rem,5vw,4.4rem);--fill:1;position:relative;list-style:none;padding:0 0 0 var(--P)}
.path::before,.path::after{content:"";position:absolute;left:14px;top:14px;bottom:14px;width:2px;border-radius:2px}
.path::before{background:var(--line)}
.path::after{background:linear-gradient(var(--blue),var(--cyan));box-shadow:0 0 18px 2px rgba(34,197,255,.55);transform-origin:top;transform:scaleY(var(--fill))}
.step{position:relative;padding-bottom:clamp(3.5rem,11vh,6.5rem)}
.step:last-child{padding-bottom:0}
.node{position:absolute;left:calc(6px - var(--P));top:.55rem;width:18px;height:18px;border-radius:50%;border:2px solid var(--cyan);background:var(--cyan);box-shadow:0 0 0 7px rgba(34,197,255,.12),0 0 26px rgba(34,197,255,.75);transition:background-color .5s,border-color .5s,box-shadow .5s}
.step h3{font:500 clamp(2rem,3.8vw,3.2rem)/1.05 var(--display);letter-spacing:-.04em;margin-bottom:.7rem;transition:color .5s}
.step p{max-width:29rem;color:var(--muted)}
html.js:not(.rm) .step:not(.on) .node{background:#02060f;border-color:var(--line-strong);box-shadow:none}
html.js:not(.rm) .step:not(.on) h3{color:var(--dim)}
html.js:not(.rm) .step:not(.on) p{color:#56657c}

/* ==========================================================================
   Products: the funnel
   ========================================================================== */
.product-panel{position:relative;overflow:hidden;border-radius:34px;border:1px solid var(--line);padding:clamp(1.8rem,4.6vw,4.2rem);background:linear-gradient(140deg,rgba(10,22,48,.72),rgba(3,7,16,.8));-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.product-panel::before{content:"";position:absolute;right:-12%;top:-30%;width:70%;height:120%;background:radial-gradient(closest-side,rgba(34,197,255,.13),transparent 70%);pointer-events:none}
.product-head{position:relative;display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.9fr);gap:clamp(1.5rem,5vw,4rem);align-items:end}
.product-head h2{font-size:clamp(2.3rem,4.7vw,4.2rem)}
.product-head p{max-width:34rem;color:var(--muted);font-size:1.08rem}
.funnel{position:relative;margin-top:clamp(2rem,5vw,3.6rem)}
.funnel-canvas{width:100%;height:clamp(200px,22vw,270px)}
.stages{list-style:none;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin-top:.6rem;padding:0;text-align:center}
.stages li{font:500 clamp(.9rem,1.3vw,1.05rem)/1.3 var(--display);letter-spacing:-.01em;color:var(--silver)}
.stages li:last-child{color:#fff;text-shadow:0 0 22px rgba(34,197,255,.8)}

/* ==========================================================================
   CTA
   ========================================================================== */
.cta{position:relative;padding-block:clamp(2rem,6vw,4rem)}
.cta-stage{position:relative;isolation:isolate;display:flex;align-items:center;min-height:min(72svh,660px);padding-block:clamp(3rem,7vw,5rem)}
.cta-stage canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.cta-stage .orbit-back{z-index:1}
.cta-stage .orbit-front{z-index:3}
.cta-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:clamp(1.5rem,5vw,4rem);align-items:center}
.cta-copy{position:relative;z-index:4}
.cta-mark{position:relative;z-index:2;justify-self:center;width:clamp(240px,32vw,470px);pointer-events:none}
.cta-mark img{width:100%;height:auto;filter:drop-shadow(0 0 46px rgba(20,103,240,.6));animation:float 8s ease-in-out infinite}
.cta h2{font:500 clamp(2.7rem,6.2vw,5.8rem)/.98 var(--display);letter-spacing:-.052em}
.cta-copy>p:not(.email){max-width:30rem;margin-top:1.6rem;color:var(--muted);font-size:1.1rem}
.cta .actions{margin-top:2.2rem}
.cta .email{margin-top:1.4rem;font-size:.9rem;color:var(--dim);letter-spacing:.03em;min-height:1.5em}
.copy-note{margin-left:.9rem;color:var(--cyan)}

/* ---------- footer ---------- */
.site-footer{border-top:1px solid var(--line);padding:2.6rem 0 3rem;background:rgba(0,0,0,.72)}
.footer-inner{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:1.6rem 3rem}
.footer-logo{width:126px;height:auto}
.footer-tag{margin-top:.8rem;font:500 .78rem var(--display);letter-spacing:.3em;text-transform:uppercase;color:var(--dim)}
.footer-meta{display:flex;flex-wrap:wrap;gap:.4rem 1.6rem;color:var(--dim);font-size:.85rem}

/* ==========================================================================
   Responsive
   ========================================================================== */
@media (max-width:1000px){
  .cta-grid{grid-template-columns:minmax(0,1fr);text-align:center}
  .cta-mark{order:-1;width:clamp(200px,52vw,320px)}
  .cta-copy>p:not(.email){margin-inline:auto}
  .cta .actions{justify-content:center}
  .section-head,.product-head{grid-template-columns:minmax(0,1fr);align-items:start}
  .panel-ai,.panel-growth,.panel-tech{grid-column:span 12}
  .panel-tech{grid-template-columns:minmax(0,1fr)}
  .panel-tech .scene{order:-1;padding:1.2rem 1.2rem 0}
  .approach-grid{grid-template-columns:minmax(0,1fr)}
  .approach-side{position:static}
}
@media (max-width:900px){
  .nav-links{position:absolute;left:var(--pad);right:var(--pad);top:calc(var(--nav) - 4px);display:none;flex-direction:column;align-items:stretch;gap:0;padding:.6rem;border:1px solid var(--line);border-radius:18px;background:rgba(3,7,16,.96);box-shadow:0 30px 80px rgba(0,0,0,.6)}
  .site-header.is-open .nav-links{display:flex}
  .nav-links a{padding:.95rem 1rem;border-radius:10px}
  .nav-links .nav-cta{margin-top:.4rem;text-align:center}
  .menu-toggle{display:block}
  .hero-copy{align-items:flex-start;padding-top:calc(var(--nav) + clamp(1rem,4vh,2.6rem))}
  .hero h1{font-size:clamp(2.6rem,12.4vw,4.2rem)}
  .disciplines{margin-top:1.6rem;gap:.5rem 1.3rem}
  .scroll-cue{display:none}
  .statement-grid{grid-template-columns:minmax(0,1fr)}
  .triangle{position:absolute;right:0;bottom:3%;width:62%;max-width:none;opacity:.4;z-index:-1}
}
@media (max-width:560px){
  .disciplines{display:none}
  .hero .actions .btn{width:100%}
  .funnel-canvas{height:190px}
  .stages li{font-size:.78rem}
  .panel .scene{padding:1rem 1rem 0}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}
  .grow-line{animation:none!important;stroke-dashoffset:0!important;opacity:1!important}
  .grow-dot{animation:none!important;opacity:1!important}
  .beam{display:none}
  .pulses{display:none}
}
