/* ==========================================================================
   VEIL · landing page
   Static CSS. No build step, no framework, no external libraries.
   ========================================================================== */

:root{
  --bg:#04070A;
  --bg-2:#070C11;
  --ink:#EAF4EE;
  --ink-2:#97ABA4;
  --ink-3:#748A86;   /* 5.5:1 on bg, 5.16:1 on glass: AA for small text */

  --green:#00E56B;
  --mint:#7CFFC0;
  --teal:#00C4A7;
  --cyan:#22D3EE;
  --violet:#8B6CFF;

  --glass:rgba(255,255,255,.04);
  --glass-2:rgba(255,255,255,.07);
  --edge:rgba(255,255,255,.10);
  --edge-hi:rgba(124,255,192,.38);

  --sans:"Geist",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --mono:"Geist Mono",ui-monospace,"SF Mono",Menlo,monospace;

  --wrap:1200px;
  --r:16px;
  --r-lg:24px;

  --ease:cubic-bezier(.16,1,.3,1);
  --t:.5s var(--ease);

  --par-a:0px; --par-b:0px; --par-c:0px;
  --tilt-x:0deg; --tilt-y:0deg;
}

*,*::before,*::after{box-sizing:border-box}
/* clip, not hidden: hidden turns html/body into scroll containers and kills
   position:sticky inside them. clip clips without creating a scroller. */
html{overflow-x:clip;scroll-behavior:auto}
body{
  margin:0;background:var(--bg);color:var(--ink);
  font:400 16px/1.7 var(--sans);
  -webkit-font-smoothing:antialiased;
  overflow-x:clip;position:relative;width:100%;
}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
h1,h2,h3,h4{margin:0;font-weight:500;letter-spacing:-.03em;line-height:1.05}
p{margin:0}
.mono{font-family:var(--mono)}
.wrap{width:100%;max-width:var(--wrap);margin:0 auto;padding:0 24px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.skip{position:absolute;left:-999px;top:0;z-index:300;background:var(--green);color:#04120A;padding:12px 18px}
.skip:focus{left:12px;top:12px}
:focus-visible{outline:2px solid var(--green);outline-offset:3px;border-radius:4px}
::selection{background:rgba(0,229,107,.28);color:var(--ink)}

::-webkit-scrollbar{width:10px}
::-webkit-scrollbar-track{background:var(--bg)}
::-webkit-scrollbar-thumb{background:#16211C;border-radius:99px;border:2px solid var(--bg)}
::-webkit-scrollbar-thumb:hover{background:#22332B}

/* ===== preloader ========================================================= */
.loader{position:fixed;inset:0;z-index:400;background:var(--bg);
  display:grid;place-items:center;
  transition:transform .8s cubic-bezier(.7,0,.3,1)}
.loader.done{transform:translateY(-100%)}
.loader.gone{display:none}
.loader-inner{display:flex;flex-direction:column;align-items:center;gap:30px;perspective:600px}
.loader-mark{width:104px;height:104px;filter:drop-shadow(0 0 26px rgba(0,229,107,.6));
  transform-style:preserve-3d;animation:markflip 1.35s cubic-bezier(.5,0,.2,1) .8s both}
@keyframes markflip{0%{transform:rotateY(0)}100%{transform:rotateY(360deg)}}
.loader-mark .draw{stroke-dasharray:160;stroke-dashoffset:160;
  animation:draw 1s var(--ease) .1s forwards}
.loader-mark .d2{stroke-dasharray:110;stroke-dashoffset:110;
  animation:draw .8s var(--ease) .35s forwards}
@keyframes draw{to{stroke-dashoffset:0}}
.loader-word{display:flex;gap:.4em;font:500 1.25rem/1 var(--sans);letter-spacing:.55em;color:var(--ink)}
.loader-word span{opacity:0;transform:translateY(12px);
  animation:lw .5s var(--ease) forwards}
.loader-word span:nth-child(1){animation-delay:.5s}
.loader-word span:nth-child(2){animation-delay:.58s}
.loader-word span:nth-child(3){animation-delay:.66s}
.loader-word span:nth-child(4){animation-delay:.74s}
@keyframes lw{to{opacity:1;transform:none}}

/* ===== fixed chrome ====================================================== */
.progress{position:fixed;top:0;left:0;right:0;height:2px;z-index:250;pointer-events:none}
.progress span{display:block;height:100%;width:0;
  background:linear-gradient(90deg,var(--mint),var(--green),var(--teal));
  box-shadow:0 0 12px rgba(0,229,107,.6)}

.cursor,.cursor-ring{position:fixed;top:0;left:0;z-index:260;pointer-events:none;
  border-radius:50%;translate:-50% -50%;opacity:0}
.cursor{width:6px;height:6px;background:var(--green)}
.cursor-ring{width:34px;height:34px;border:1px solid rgba(124,255,192,.5);
  transition:width .25s var(--ease),height .25s var(--ease),border-color .25s}
body.cursor-on .cursor,body.cursor-on .cursor-ring{opacity:1}
body.cursor-on,body.cursor-on a,body.cursor-on button{cursor:none}
.cursor-ring.grow{width:56px;height:56px;border-color:var(--green)}

/* ===== ambient field ===================================================== */
.field{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden}
.orb{position:absolute;border-radius:50%;filter:blur(85px);opacity:.55;will-change:transform}
.orb-a{width:58vw;height:58vw;top:-16vw;right:-12vw;transform:translateY(var(--par-a));
  background:radial-gradient(circle,rgba(0,229,107,.34),rgba(0,196,167,.10) 55%,transparent 70%)}
.orb-b{width:50vw;height:50vw;top:44vh;left:-16vw;transform:translateY(var(--par-b));
  background:radial-gradient(circle,rgba(34,211,238,.20),transparent 66%)}
.orb-c{width:46vw;height:46vw;bottom:-12vw;right:4vw;transform:translateY(var(--par-c));
  background:radial-gradient(circle,rgba(139,108,255,.17),transparent 66%)}
.grid-lines{position:absolute;inset:0;opacity:.5;
  background-image:linear-gradient(rgba(255,255,255,.03) 1px,transparent 1px),
                   linear-gradient(90deg,rgba(255,255,255,.03) 1px,transparent 1px);
  background-size:88px 88px;
  mask-image:radial-gradient(ellipse 90% 60% at 50% 0%,#000 35%,transparent 78%);
  -webkit-mask-image:radial-gradient(ellipse 90% 60% at 50% 0%,#000 35%,transparent 78%)}
.noise{position:absolute;inset:0;opacity:.04;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)'/%3E%3C/svg%3E")}

/* ===== typography ======================================================== */
.display{font-size:clamp(3.4rem,8.4vw,6.8rem);font-weight:500;line-height:.97;letter-spacing:-.048em}
.display-sm{font-size:clamp(2.4rem,5vw,4.2rem);letter-spacing:-.04em;line-height:1.04}
h2{font-size:clamp(2.1rem,4.2vw,3.4rem);letter-spacing:-.036em}
h3{font-size:1.26rem;letter-spacing:-.02em}
.grad{background:linear-gradient(100deg,var(--mint),var(--green) 38%,var(--teal) 72%,var(--mint));
  background-size:200% 100%;
  -webkit-background-clip:text;background-clip:text;color:transparent}
.display .grad{animation:shimmer 7s ease-in-out infinite}
@keyframes shimmer{0%,100%{background-position:0% 0}50%{background-position:100% 0}}

.kicker{display:flex;align-items:center;gap:14px;margin:0 0 20px}
.kicker::after{content:"";flex:0 0 54px;height:1px;
  background:linear-gradient(90deg,var(--green),transparent)}
.eyebrow{display:inline-flex;align-items:center;gap:10px;font-family:var(--mono);
  font-size:.72rem;font-weight:500;letter-spacing:.2em;text-transform:uppercase;
  color:var(--mint);margin:0}
.eyebrow .sep{color:var(--ink-3)}
.pulse{width:7px;height:7px;border-radius:50%;background:var(--green);flex:none;position:relative}
.pulse::after{content:"";position:absolute;inset:-2px;border-radius:50%;
  border:2px solid rgba(0,229,107,.6);animation:pulse 2.6s infinite}
@keyframes pulse{to{transform:scale(2.4);opacity:0}}
.lede{color:var(--ink-2);font-size:1.14rem;max-width:52ch;margin-top:24px}
.sec-lede{color:var(--ink-2);max-width:60ch;margin-top:18px}

/* editorial statements */
.editorial{text-align:center;padding-block:clamp(120px,16vh,220px)}
.statement{font-size:clamp(2.6rem,6vw,5.2rem);letter-spacing:-.04em;line-height:1.06;
  max-width:20ch;margin:0 auto}
.statement .w{display:inline-block;opacity:.12;transform:translateY(.3em);
  transition:opacity .6s var(--ease),transform .6s var(--ease)}
.statement .w.on{opacity:1;transform:none}
.statement-sub{color:var(--ink-2);font-size:1.1rem;max-width:52ch;margin:28px auto 0}

/* ===== buttons =========================================================== */
.btn{position:relative;display:inline-flex;align-items:center;gap:9px;font:500 .95rem/1 var(--sans);
  padding:15px 26px;border-radius:12px;border:1px solid transparent;cursor:pointer;overflow:hidden;
  transition:transform .25s var(--ease),box-shadow .25s var(--ease),
             background .25s var(--ease),border-color .25s var(--ease)}
.btn-lg{padding:17px 32px;font-size:1rem}
.btn-sm{padding:13px 18px;font-size:.875rem;min-height:44px;white-space:nowrap}
.btn-primary{color:#03170D;
  background:linear-gradient(135deg,var(--mint),var(--green) 55%,var(--teal));
  box-shadow:0 0 0 1px rgba(124,255,192,.35),0 12px 44px -10px rgba(0,229,107,.65)}
.btn-primary::after{content:"";position:absolute;inset:0;
  background:linear-gradient(115deg,transparent 30%,rgba(255,255,255,.5) 50%,transparent 70%);
  transform:translateX(-120%);transition:transform .7s var(--ease)}
.btn-primary:hover{box-shadow:0 0 0 1px rgba(124,255,192,.6),0 20px 60px -10px rgba(0,229,107,.85)}
.btn-primary:hover::after{transform:translateX(120%)}
.btn-glass{background:var(--glass);border-color:var(--edge);color:var(--ink);
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.btn-glass:hover{background:var(--glass-2);border-color:var(--edge-hi);transform:translateY(-2px)}
.ar{font-family:var(--mono);font-size:.85em}

/* ===== glass ============================================================= */
.glass{position:relative;background:var(--glass);border:1px solid var(--edge);
  border-radius:var(--r);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);
  transition:border-color var(--t),transform var(--t),background var(--t),box-shadow var(--t)}
.glass::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  background:linear-gradient(160deg,rgba(255,255,255,.09),transparent 40%);opacity:.9}

/* every glass card lifts and glows green on hover (the bigger ones too) */
.tx-card,.code,.cta-panel{transition:border-color var(--t),transform var(--t),box-shadow var(--t)}
.tx-card:hover,.code:hover,.cta-panel:hover{border-color:var(--edge-hi);transform:translateY(-4px);
  box-shadow:0 24px 60px -30px rgba(0,229,107,.28)}

.shine{position:absolute;inset:0;border-radius:inherit;pointer-events:none;overflow:hidden}
.shine::before{content:"";position:absolute;top:0;bottom:0;width:55%;left:-70%;
  background:linear-gradient(105deg,transparent,rgba(124,255,192,.10) 48%,transparent);
  transform:skewX(-18deg);transition:left .8s var(--ease)}
.card:hover .shine::before,.mile:hover .shine::before{left:130%}

/* pointer glare on tilt cards */
.glare{position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;
  background:radial-gradient(340px circle at var(--gx,50%) var(--gy,50%),rgba(124,255,192,.10),transparent 60%);
  transition:opacity .3s}
[data-tilt]:hover .glare{opacity:1}
[data-tilt]{transform-style:preserve-3d;will-change:transform}

/* ===== nav =============================================================== */
.nav{position:fixed;top:0;left:0;right:0;z-index:100;
  transition:background .35s,border-color .35s;
  border-bottom:1px solid transparent}
.nav.stuck{background:rgba(4,7,10,.74);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
  border-bottom-color:var(--edge)}
.nav-inner{max-width:var(--wrap);margin:0 auto;padding:0 24px;height:72px;
  display:flex;align-items:center;justify-content:space-between;gap:24px}
.brand{display:inline-flex;align-items:center;gap:11px}
/* the green V spins in 3D and pulses its glow */
.brand-mark{width:26px;height:26px;display:block;perspective:220px}
.brand-mark svg{width:100%;height:100%;transform-style:preserve-3d;
  animation:markspin 6s linear infinite,markglow 3s ease-in-out infinite}
@keyframes markspin{to{transform:rotateY(360deg)}}
@keyframes markglow{0%,100%{filter:drop-shadow(0 0 6px rgba(0,229,107,.45))}
  50%{filter:drop-shadow(0 0 14px rgba(0,229,107,.9))}}
.brand-word{font-weight:600;letter-spacing:.22em;font-size:.95rem}
/* No raster wordmark here. The chrome render carries a mirrored reflection that
   turns to mush at nav size and clashes with the crisp vector mark beside it.
   design.md section 9: the render is hero art, never the nav or footer logo. */
.nav-links{display:flex;gap:34px;font-size:.92rem;color:var(--ink-2)}
.nav-links a{position:relative;padding:6px 0;transition:color .2s}
.nav-links a::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;
  background:var(--green);transform:scaleX(0);transform-origin:left;transition:transform .3s var(--ease)}
.nav-links a:hover{color:var(--ink)}
.nav-links a:hover::after{transform:scaleX(1)}
.nav-actions{display:flex;align-items:center;gap:12px}
.burger{display:none;width:44px;height:44px;flex-shrink:0;background:none;border:0;cursor:pointer;
  flex-direction:column;justify-content:center;gap:6px;align-items:center}
.burger span{width:20px;height:1.5px;background:var(--ink);transition:transform .3s var(--ease),opacity .3s}
.burger[aria-expanded="true"] span:first-child{transform:translateY(3.75px) rotate(45deg)}
.burger[aria-expanded="true"] span:last-child{transform:translateY(-3.75px) rotate(-45deg)}
.mobile-menu{position:fixed;inset:72px 0 0;z-index:99;background:rgba(4,7,10,.96);
  backdrop-filter:blur(20px);display:flex;flex-direction:column;gap:8px;padding:32px 24px;font-size:1.6rem}
.mobile-menu a{padding:14px 0;border-bottom:1px solid var(--edge)}
.mobile-menu .btn{margin-top:20px;font-size:1rem;justify-content:center;border-bottom:0}
/* author display:flex would defeat the UA [hidden] rule without this guard */
.mobile-menu[hidden]{display:none}

/* ===== hero ============================================================== */
.hero{position:relative;z-index:1;padding:150px 0 90px;min-height:100svh;
  display:flex;flex-direction:column;justify-content:center}
/* optional atmosphere: JS adds .has-city after a successful HEAD probe,
   so a missing file costs zero console errors */
.hero.has-city::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:url("assets/city.webp") center/cover no-repeat;
  opacity:.22;filter:saturate(1.2) contrast(1.05);mix-blend-mode:screen;
  mask-image:radial-gradient(ellipse 82% 74% at 58% 44%,#000 8%,transparent 72%);
  -webkit-mask-image:radial-gradient(ellipse 82% 74% at 58% 44%,#000 8%,transparent 72%)}
.hero::after{content:"";position:absolute;inset:auto 0 0;height:220px;z-index:-1;
  background:linear-gradient(180deg,transparent,var(--bg));pointer-events:none}
.dust{position:absolute;inset:0;width:100%;height:100%;z-index:-1;pointer-events:none}
.hero-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:56px;align-items:center}
.hero-actions{display:flex;flex-wrap:wrap;gap:14px;margin-top:40px}
.trust{list-style:none;display:flex;flex-wrap:wrap;gap:26px;margin:44px 0 0;padding:0;
  font-family:var(--mono);font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3)}
.trust li{position:relative;display:flex;align-items:center;gap:8px}
.trust li::before{content:"";width:4px;height:4px;border-radius:50%;background:var(--green);
  box-shadow:0 0 8px rgba(0,229,107,.8)}

/* emblem: a real 3D stage, layers separated in Z.
   No blend modes anywhere in here on purpose. mix-blend-mode makes an element a
   grouping element, which forces transform-style:preserve-3d to render flat and
   kills the layer parallax. emblem.webp carries a real alpha channel instead. */
.hero-visual{display:flex;justify-content:center;perspective:1000px}
.emblem-stage{position:relative;width:min(100%,520px);aspect-ratio:1;
  transform:rotateX(var(--tilt-x)) rotateY(var(--tilt-y));
  transform-style:preserve-3d;transition:transform .3s ease-out}
.layer{transform:translateZ(var(--z,0))}
.halo{position:absolute;inset:4%;border-radius:50%;
  background:radial-gradient(circle,rgba(0,229,107,.38),rgba(0,196,167,.14) 45%,transparent 70%);
  filter:blur(28px);animation:breathe 7s ease-in-out infinite}
@keyframes breathe{0%,100%{transform:translateZ(var(--z)) scale(1);opacity:.85}
  50%{transform:translateZ(var(--z)) scale(1.09);opacity:1}}
.ring{position:absolute;left:50%;top:58%;margin-left:calc(var(--rw) / -2);margin-top:calc(var(--rw) / -2);
  width:var(--rw);height:var(--rw);border-radius:50%;
  border:1px solid rgba(124,255,192,.17)}
.ring-1{--rw:72%;animation:spin 26s linear infinite}
.ring-2{--rw:86%;border-style:dashed;border-color:rgba(34,211,238,.15);
  animation:spin 40s linear infinite reverse}
.ring-3{--rw:98%;border-color:rgba(255,255,255,.05)}
@keyframes spin{from{transform:translateZ(var(--z,0)) rotate(0)}to{transform:translateZ(var(--z,0)) rotate(360deg)}}
.ring{aspect-ratio:auto}
.ring-1,.ring-2,.ring-3{left:50%;top:58%}
.emblem{position:absolute;inset:0;width:100%;height:100%;
  animation:float 8s ease-in-out infinite;
  filter:drop-shadow(0 24px 60px rgba(0,229,107,.28))}
/* the render carries a baked alpha channel, so it needs no blend mode and no mask */
img.emblem{object-fit:contain;
  filter:drop-shadow(0 24px 70px rgba(0,229,107,.4)) saturate(1.08) contrast(1.04)}
@keyframes float{0%,100%{transform:translateZ(var(--z)) translateY(0)}
  50%{transform:translateZ(var(--z)) translateY(-14px)}}
.emblem .core{animation:coreGlow 3.4s ease-in-out infinite}
@keyframes coreGlow{0%,100%{opacity:.6}50%{opacity:1}}
.scanline{position:absolute;left:19%;right:19%;top:24%;height:1px;pointer-events:none;
  background:linear-gradient(90deg,transparent,#7CFFC0,transparent);opacity:.5;
  animation:scan 5s ease-in-out infinite}
@keyframes scan{0%,100%{transform:translateZ(var(--z)) translateY(0);opacity:.1}
  50%{transform:translateZ(var(--z)) translateY(210px);opacity:.55}}
.pedestal{position:absolute;left:50%;bottom:2%;width:74%;margin-left:-37%;aspect-ratio:4/1}
.ped-glow{position:absolute;inset:0;border-radius:50%;
  background:radial-gradient(ellipse,rgba(0,229,107,.55),transparent 66%);filter:blur(18px)}
.ped-disc{position:absolute;inset:22% 8%;border-radius:50%;
  border:1px solid rgba(124,255,192,.32);
  background:linear-gradient(180deg,rgba(0,229,107,.11),transparent)}

/* floating 3D sparks: parallax against the emblem through the tilt */
.spark{position:absolute;width:7px;height:7px;border-radius:50%;
  background:var(--mint);opacity:.85;
  box-shadow:0 0 14px rgba(0,229,107,.9),0 0 4px rgba(124,255,192,1);
  animation:sparkFloat 6.5s ease-in-out infinite;animation-delay:var(--d,0s);
  scale:var(--sc,1)}
.spark-cyan{background:var(--cyan);box-shadow:0 0 14px rgba(34,211,238,.9),0 0 4px rgba(34,211,238,1)}
.spark-violet{background:var(--violet);box-shadow:0 0 14px rgba(139,108,255,.9),0 0 4px rgba(139,108,255,1)}
@keyframes sparkFloat{0%,100%{transform:translateZ(var(--z,0)) translateY(0)}
  50%{transform:translateZ(var(--z,0)) translateY(-26px)}}

.scroll-hint{position:absolute;bottom:26px;left:50%;translate:-50% 0;width:22px;height:34px;
  border:1px solid var(--edge);border-radius:12px}
.scroll-hint span{position:absolute;left:50%;top:8px;translate:-50% 0;width:3px;height:6px;
  border-radius:2px;background:var(--green);animation:drop 1.9s var(--ease) infinite}
@keyframes drop{0%{opacity:0;transform:translate(-50%,0)}30%{opacity:1}100%{opacity:0;transform:translate(-50%,13px)}}

/* ===== marquee =========================================================== */
.marquee{position:relative;z-index:1;overflow:hidden;padding:22px 0;
  border-top:1px solid var(--edge);border-bottom:1px solid var(--edge)}
.marquee-track{display:flex;align-items:center;gap:38px;width:max-content;
  font-family:var(--mono);font-size:.8rem;letter-spacing:.22em;text-transform:uppercase;
  color:var(--ink-2);animation:marquee 28s linear infinite}
.marquee-track span{white-space:nowrap}
.marquee-track i{color:var(--green);font-style:normal;font-size:.7rem}
@keyframes marquee{to{transform:translateX(-50%)}}

/* ===== sections ========================================================== */
.sec{position:relative;z-index:1;padding:clamp(92px,11vh,150px) 0}
/* section headers centered on every screen size */
.sec-head{margin:0 auto 60px;max-width:820px;text-align:center}
.sec-head .kicker{justify-content:center}
.sec-head .sec-lede{margin-left:auto;margin-right:auto}

/* problem */
.compare{display:grid;grid-template-columns:1fr auto 1fr;gap:20px;align-items:stretch}
.compare-arrow{color:var(--ink-3);width:40px;align-self:center}
.compare-arrow svg{width:100%}
.tx-card{padding:0;display:flex;flex-direction:column}
.tx-chrome{display:flex;align-items:center;gap:8px;padding:13px 20px;
  border-bottom:1px solid var(--edge)}
.tx-chrome i{width:9px;height:9px;border-radius:50%;background:var(--edge);display:block}
.tx-chrome i:nth-child(1){background:rgba(255,94,94,.55)}
.tx-chrome i:nth-child(2){background:rgba(255,176,32,.5)}
.tx-chrome i:nth-child(3){background:rgba(0,229,107,.5)}
.tx-cap{display:flex;align-items:center;gap:9px;font-family:var(--mono);font-size:.7rem;
  letter-spacing:.16em;text-transform:uppercase;color:var(--ink-2);margin-left:auto}
.dot{width:7px;height:7px;border-radius:50%}
.dot-red{background:#FF5E5E;box-shadow:0 0 12px rgba(255,94,94,.7)}
.dot-green{background:var(--green);box-shadow:0 0 12px rgba(0,229,107,.8)}
.tx-body{padding:24px 26px;display:grid;gap:14px;flex:1}
.tx-cell{display:flex;justify-content:space-between;align-items:center;gap:16px;
  padding-bottom:12px;border-bottom:1px solid var(--edge);min-width:0}
.tx-cell:last-child{border-bottom:0;padding-bottom:0}
.tx-cell .k{font-family:var(--mono);font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3)}
.tx-cell .v{font-size:.92rem;min-width:0;overflow-wrap:anywhere}
.veiled{filter:blur(6px);transition:filter .35s var(--ease);cursor:pointer;border-radius:4px}
.veiled:hover,.veiled:focus-visible,.veiled.revealed{filter:blur(0)}
.tx-veiled{border-color:rgba(0,229,107,.26);box-shadow:0 0 40px -18px rgba(0,229,107,.4)}
.tx-note{padding:0 26px 22px;font-size:.875rem;color:var(--ink-3)}

/* ===== how-it-works: three cards side by side =========================== */
.steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:32px}
.step{position:relative;padding:34px;min-width:0}
.step:hover{border-color:var(--edge-hi);box-shadow:0 24px 60px -30px rgba(0,229,107,.25)}
.step+.step::after{content:"\25B7";position:absolute;left:-24px;top:50%;translate:0 -50%;
  color:var(--green);font-family:var(--mono);font-size:.75rem;opacity:.7}
.step-n{display:block;font-size:.72rem;letter-spacing:.18em;color:var(--green);margin-bottom:16px}
.step h3{margin-bottom:10px;font-size:1.5rem}
.step p{color:var(--ink-2);font-size:.94rem}
.big-n{position:absolute;top:20px;right:26px;font:500 3.2rem/1 var(--mono);
  color:transparent;-webkit-text-stroke:1px rgba(124,255,192,.16);pointer-events:none}

/* ===== cards ============================================================= */
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.card{padding:30px;min-width:0}
.card:hover{border-color:var(--edge-hi);
  box-shadow:0 24px 60px -30px rgba(0,229,107,.25)}
.idx{display:block;font-size:.72rem;letter-spacing:.18em;color:var(--ink-3);margin-bottom:14px}
/* generated 3D glass icons: they carry their own glow, so no box, just let them float */
.ico-img{width:78px;height:78px;object-fit:contain;display:block;margin:0 0 14px -10px;
  filter:drop-shadow(0 6px 18px rgba(0,229,107,.28))}
.card:hover .ico-img,.step:hover .ico-img{filter:drop-shadow(0 8px 26px rgba(0,229,107,.5))}
.card h3{margin-bottom:10px}
.card p{color:var(--ink-2);font-size:.94rem}

/* ===== shielded pool ===================================================== */
.pool-wrap{padding:34px 34px 26px}
.pool-scroll{overflow-x:auto}
.pool{width:100%;min-width:640px;height:auto;display:block}
/* portrait twin for phones: the wide diagram would render its labels at ~4px */
.pool-m{display:none;width:100%;height:auto}
.flow{stroke-dasharray:340;stroke-dashoffset:340}
.pool-wrap.in-view .flow{animation:flowdraw 1.6s var(--ease) forwards}
@keyframes flowdraw{to{stroke-dashoffset:0}}
/* the pyramid slowly rotates; its circular glow is rotation-invariant so it stays put */
.pyr{transform-box:fill-box;transform-origin:center;animation:pyrspin 32s linear infinite}
@keyframes pyrspin{to{transform:rotate(360deg)}}
.pool-note{margin-top:18px;font-size:.875rem;color:var(--ink-3);text-align:center}

/* ===== stats: a full-width strip that rhymes with the marquee =========== */
.stats{display:grid;grid-template-columns:repeat(4,1fr);
  border-top:1px solid var(--edge);border-bottom:1px solid var(--edge);
  padding:56px 0}
.stat{position:relative;min-width:0;padding:0 34px}
.stat+.stat::before{content:"\25BD";position:absolute;left:-6px;top:50%;
  translate:0 -50%;color:var(--green);font-size:.75rem;opacity:.7}
.stat-fig{display:block;font-size:clamp(2.6rem,4vw,3.6rem);font-weight:500;
  letter-spacing:-.02em;line-height:1;color:var(--ink)}
.stat-text{font-size:clamp(1.5rem,2.2vw,2rem);line-height:1.15}
.stat-label{display:block;margin-top:14px;font-size:.7rem;letter-spacing:.18em;
  text-transform:uppercase;color:var(--ink-3)}

/* ===== builders ========================================================== */
#builders{position:relative;overflow:hidden}
/* optional backdrop: JS adds .has-platform after a successful HEAD probe */
#builders.has-platform::before{content:"";position:absolute;
  top:50%;left:50%;translate:-50% -50%;
  z-index:0;width:min(92%,1080px);aspect-ratio:1;pointer-events:none;
  background:url("assets/platform.webp") center/contain no-repeat;
  mix-blend-mode:screen;opacity:.2;
  mask-image:radial-gradient(circle at 50% 50%,#000 30%,transparent 68%);
  -webkit-mask-image:radial-gradient(circle at 50% 50%,#000 30%,transparent 68%)}
#builders .wrap{position:relative;z-index:1}
.builders-grid{display:grid;grid-template-columns:1fr 1.1fr;gap:56px;align-items:center}
.builders-grid .btn{margin-top:30px}
/* dev annotation, not a content slot: compact badge so it never reads as a
   missing image. Still amber and still literal, so the ship gate can find it. */
.ph{display:inline-flex;align-items:center;gap:8px;margin-top:20px;
  font-family:var(--mono);font-size:.68rem;line-height:1.4;color:#FFB020;
  border:1px solid rgba(255,176,32,.3);background:rgba(255,176,32,.06);
  border-radius:99px;padding:7px 14px;max-width:100%}
.ph::before{content:"DEV";flex:none;font-size:.6rem;letter-spacing:.14em;
  background:rgba(255,176,32,.9);color:#1A1200;padding:2px 6px;border-radius:99px}
.ph-tight{margin-left:auto;margin-right:auto}
.code{overflow:hidden;min-width:0;box-shadow:0 30px 80px -40px rgba(0,229,107,.3)}
.code-bar{display:flex;justify-content:space-between;align-items:center;padding:13px 18px;
  border-bottom:1px solid var(--edge);font-size:.76rem;color:var(--ink-3)}
.code-dots{display:flex;gap:7px;margin-right:14px}
.code-dots i{width:9px;height:9px;border-radius:50%;background:var(--edge);display:block}
.code-bar-left{display:flex;align-items:center}
.copy{background:var(--glass);border:1px solid var(--edge);color:var(--ink-2);
  font:500 .72rem var(--mono);padding:10px 14px;min-height:44px;min-width:44px;
  border-radius:7px;cursor:pointer;transition:.2s}
.copy:hover{color:var(--ink);border-color:var(--edge-hi)}
.code-body{margin:0;padding:22px;overflow-x:auto;font:400 .84rem/1.75 var(--mono);color:var(--ink-2)}
.c-k{color:var(--ink-3)}.c-f{color:var(--ink)}.c-n{color:var(--cyan)}
.c-s{color:var(--mint)}.c-c{color:var(--ink-3);font-style:italic}

/* ===== roadmap timeline ================================================== */
.tl{position:relative;padding:20px 0}
.tl-rail{position:absolute;left:50%;top:0;bottom:0;width:2px;margin-left:-1px;
  background:var(--edge);border-radius:2px}
.tl-rail span{display:block;width:100%;height:0;border-radius:2px;
  background:linear-gradient(180deg,var(--mint),var(--green));
  box-shadow:0 0 14px rgba(0,229,107,.6)}
.tl-item{position:relative;width:50%;padding:26px 0}
.tl-left{left:0;padding-right:56px}
.tl-right{left:50%;padding-left:56px}
.tl-node{position:absolute;top:50%;width:11px;height:11px;margin-top:-6px;border-radius:50%;
  background:var(--bg);border:1px solid var(--edge);transition:all .4s var(--ease)}
.tl-left .tl-node{right:-6px}
.tl-right .tl-node{left:-5px}
.tl-item.lit .tl-node{background:var(--green);border-color:var(--green);
  box-shadow:0 0 0 5px rgba(0,229,107,.16),0 0 22px rgba(0,229,107,.9)}
.mile{padding:30px;min-width:0}
.mile:hover{transform:translateY(-4px);border-color:var(--edge-hi);
  box-shadow:0 24px 60px -30px rgba(0,229,107,.25)}
.q{display:inline-flex;align-items:center;font-size:.7rem;letter-spacing:.18em;color:var(--mint);
  border:1px solid rgba(124,255,192,.25);background:rgba(0,229,107,.07);
  padding:6px 11px;border-radius:99px;margin-bottom:16px}
.badge{position:absolute;top:26px;right:26px;font:500 .64rem/1 var(--mono);letter-spacing:.14em;
  text-transform:uppercase;color:#03170D;background:linear-gradient(120deg,var(--mint),var(--green));
  padding:6px 10px;border-radius:99px;box-shadow:0 0 18px rgba(0,229,107,.5)}
.mile h3{margin-bottom:10px}
.mile p{color:var(--ink-2);font-size:.94rem}

/* ===== publications video ================================================ */
.video-sec{position:relative;padding:clamp(40px,7vh,100px) 0;overflow:hidden}

.veil-video-wrapper{
  position:relative;
  width:min(100%,1000px);
  margin:0 auto;
  background:transparent !important;
  border:none;
  box-shadow:none;
}

.veil-video-wrapper video{
  display:block;
  width:100%;
  height:auto;
  background:transparent !important;
  border:none;
  box-shadow:none;

  /* Zwart verdwijnt, groene en witte elementen blijven zichtbaar */
  mix-blend-mode:screen;

  /* Houdt het geheel premium en niet te fel */
  opacity:0.94;
  filter:contrast(1.06) brightness(1.03);

  /* Verzacht eventuele compressieranden links en rechts */
  -webkit-mask-image:linear-gradient(
    to right,
    transparent 0%,
    black 4%,
    black 96%,
    transparent 100%
  );
  mask-image:linear-gradient(
    to right,
    transparent 0%,
    black 4%,
    black 96%,
    transparent 100%
  );
}

/* ===== glowline: thicker hairline with a shine that slowly flows along it = */
.glowline{position:relative;height:2px;width:100%;pointer-events:none;overflow:hidden;
  background:linear-gradient(90deg,transparent,rgba(0,229,107,.30) 14%,
            rgba(0,229,107,.30) 86%,transparent)}
.glowline .glint{position:absolute;top:50%;left:0;width:400px;height:2px;translate:0 -50%;
  background:linear-gradient(90deg,transparent 0%,rgba(124,255,192,.10) 26%,
            rgba(124,255,192,.9) 58%,#00E56B 66%,transparent 100%);
  filter:drop-shadow(0 0 9px rgba(0,229,107,.85));
  animation:glint 9s linear infinite}
@keyframes glint{0%{transform:translate(-420px,-50%)}100%{transform:translate(100vw,-50%)}}
.glowline-head{position:fixed;top:72px;left:0;z-index:98}
.glowline-foot{position:absolute;top:0;left:0}
.glowline-footbase{position:relative;margin:30px 0 0}
/* stagger the three shines so they never travel in lockstep */
.glowline-foot .glint{animation-delay:-3s}
.glowline-footbase .glint{animation-delay:-6s}

/* ===== cta =============================================================== */
.cta{position:relative;z-index:1;padding:clamp(90px,12vh,160px) 0;text-align:center}
.cta-sub{color:var(--ink-2);font-size:1.08rem;max-width:48ch;margin:22px auto 0}
.cta-panel{position:relative;padding:clamp(56px,8vw,96px) clamp(24px,6vw,80px);
  border-radius:var(--r-lg);overflow:hidden;
  background:var(--glass);border:1px solid var(--edge);
  backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}
.cta-panel::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  background:linear-gradient(160deg,rgba(255,255,255,.09),transparent 40%)}
.cta-panel .glow{position:absolute;left:50%;top:-40%;translate:-50% 0;width:70%;aspect-ratio:2/1;
  background:radial-gradient(ellipse,rgba(0,229,107,.22),transparent 70%);
  filter:blur(30px);pointer-events:none}
.cta-inner{display:flex;flex-direction:column;align-items:center;position:relative}
.cta-actions{display:flex;flex-wrap:wrap;gap:14px;justify-content:center;margin-top:38px}
.cta .ph{margin-top:40px}

/* ===== footer ============================================================ */
.foot{position:relative;z-index:1;padding:110px 0 18px;overflow:hidden}
.foot-giant{position:absolute;left:50%;bottom:14%;transform:translateX(-50%);z-index:0;
  font-size:clamp(9rem,26vw,24rem);font-weight:600;letter-spacing:.06em;line-height:.8;
  color:transparent;-webkit-text-stroke:1px rgba(124,255,192,.30);
  pointer-events:none;user-select:none;white-space:nowrap}
.foot-grid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:44px;position:relative;z-index:1}
.foot-brand p{color:var(--ink-2);font-size:.92rem;margin-top:16px;max-width:34ch}
.social{display:flex;gap:14px;margin-top:24px}
.social a{width:44px;height:44px;border-radius:11px;display:grid;place-items:center;
  color:var(--ink-3);border:1px solid var(--edge);transition:.25s var(--ease)}
.social a:hover{color:var(--mint);border-color:var(--edge-hi);transform:translateY(-2px);
  box-shadow:0 8px 24px -10px rgba(0,229,107,.4)}
.social svg{width:16px;height:16px}
.foot-col{display:flex;flex-direction:column;gap:13px;position:relative}
.foot-col h3{font-family:var(--mono);font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;
  color:var(--green);margin-bottom:6px;font-weight:500}
.foot-col a{color:var(--ink-2);font-size:.92rem;transition:color .2s;width:fit-content;position:relative}
.foot-col a::after{content:"";position:absolute;left:0;right:100%;bottom:-2px;height:1px;
  background:var(--green);transition:right .3s var(--ease)}
.foot-col a:hover{color:var(--ink)}
.foot-col a:hover::after{right:0}
.foot-base{display:flex;justify-content:space-between;flex-wrap:wrap;gap:14px;
  margin-top:44px;padding-top:0;
  font-size:.875rem;color:var(--ink-3);position:relative;z-index:1}
.foot-base a{margin-left:22px}
.foot-base a:hover{color:var(--ink)}

/* ===== full dApp menu strip ============================================= */
.menu-strip{margin-top:28px;padding:20px 26px;display:flex;align-items:center;gap:20px;flex-wrap:wrap}
.menu-strip-label{flex:none;font-size:.68rem;letter-spacing:.2em;text-transform:uppercase;color:var(--green)}
.menu-list{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:10px 8px}
.menu-list li{font-family:var(--mono);font-size:.74rem;letter-spacing:.04em;color:var(--ink-2);
  border:1px solid var(--edge);border-radius:99px;padding:6px 13px;transition:border-color var(--t),color var(--t)}
.menu-list li:hover{border-color:var(--edge-hi);color:var(--ink)}

/* ===== ecosystem product cards ========================================== */
.eco .card{display:flex;flex-direction:column}
.eco .idx{color:var(--mint)}
.card-feat{border-color:rgba(0,229,107,.28);box-shadow:0 0 46px -22px rgba(0,229,107,.5)}
.card-feat .tag{position:absolute;top:26px;right:26px;font:500 .62rem/1 var(--mono);letter-spacing:.14em;
  text-transform:uppercase;color:#03170D;background:linear-gradient(120deg,var(--mint),var(--green));
  padding:6px 10px;border-radius:99px;box-shadow:0 0 18px rgba(0,229,107,.5)}

/* ===== Veil Check+ spotlight ============================================ */
.check-panel{position:relative;padding:clamp(34px,5vw,64px);border-radius:var(--r-lg);overflow:hidden}
.check-panel .glow{position:absolute;left:50%;top:-30%;translate:-50% 0;width:70%;aspect-ratio:2/1;
  background:radial-gradient(ellipse,rgba(0,229,107,.20),transparent 70%);filter:blur(30px);pointer-events:none}
.check-head{position:relative;max-width:760px;margin:0 auto 44px;text-align:center}
.check-head .kicker{justify-content:center}
.check-head .sec-lede{margin-left:auto;margin-right:auto}
.checkflow{position:relative;list-style:none;margin:0;padding:0;display:grid;
  grid-template-columns:repeat(5,1fr);gap:16px}
.cf-step{position:relative;padding:22px 18px;border:1px solid var(--edge);border-radius:var(--r);
  background:var(--glass);transition:border-color var(--t),transform var(--t),box-shadow var(--t)}
.cf-step:hover{border-color:var(--edge-hi);transform:translateY(-4px);
  box-shadow:0 22px 50px -30px rgba(0,229,107,.3)}
.cf-step+.cf-step::after{content:"\25B7";position:absolute;left:-13px;top:50%;translate:0 -50%;
  color:var(--green);font-family:var(--mono);font-size:.72rem;opacity:.7}
.cf-n{display:block;font-size:.72rem;letter-spacing:.18em;color:var(--green);margin-bottom:12px}
.cf-step h3{font-size:1.02rem;margin-bottom:8px;letter-spacing:-.015em}
.cf-step p{color:var(--ink-2);font-size:.84rem;line-height:1.5}

/* ===== use cases ======================================================== */
.usecases{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
.uc{padding:30px;min-width:0}
.uc:hover{border-color:var(--edge-hi);box-shadow:0 24px 60px -30px rgba(0,229,107,.25)}
.uc h3{margin-bottom:18px;padding-bottom:16px;border-bottom:1px solid var(--edge)}
.uc ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}
.uc li{position:relative;padding-left:20px;color:var(--ink-2);font-size:.94rem}
.uc li::before{content:"";position:absolute;left:0;top:.62em;width:5px;height:5px;border-radius:50%;
  background:var(--green);box-shadow:0 0 8px rgba(0,229,107,.8)}

/* ===== architecture stack =============================================== */
.stack{list-style:none;margin:0 auto;padding:0;max-width:760px;display:flex;flex-direction:column;gap:0}
.stack-row{position:relative;padding:24px 28px;margin-bottom:34px;
  transition:border-color var(--t),transform var(--t),box-shadow var(--t)}
.stack-row:last-child{margin-bottom:0}
.stack-row:hover{border-color:var(--edge-hi);transform:translateY(-3px);
  box-shadow:0 22px 50px -30px rgba(0,229,107,.3)}
/* down-arrow connector between layers */
.stack-row:not(:last-child)::after{content:"";position:absolute;left:50%;bottom:-34px;translate:-50% 0;
  width:1px;height:34px;background:linear-gradient(180deg,var(--green),transparent)}
.stack-row:not(:last-child)::before{content:"\25BD";position:absolute;left:50%;bottom:-24px;translate:-50% 0;
  color:var(--green);font-size:.7rem;z-index:1;line-height:1}
.stack-k{display:block;font-size:.68rem;letter-spacing:.2em;text-transform:uppercase;color:var(--mint);margin-bottom:8px}
.stack-row h3{margin-bottom:6px}
.stack-row p{color:var(--ink-2);font-size:.92rem}

/* ===== FAQ accordion ==================================================== */
.faq{max-width:1060px;margin:0 auto;display:grid;grid-template-columns:1fr 1fr;
  gap:14px;align-items:start}
.faq-item{padding:0;overflow:hidden;transition:border-color var(--t),box-shadow var(--t)}
.faq-item[open]{border-color:var(--edge-hi);box-shadow:0 22px 50px -34px rgba(0,229,107,.3)}
.faq-item summary{list-style:none;cursor:pointer;padding:22px 26px;display:flex;align-items:center;
  justify-content:space-between;gap:18px;font-size:1.06rem;font-weight:500;letter-spacing:-.01em;color:var(--ink)}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary::after{content:"";flex:none;width:11px;height:11px;position:relative;
  border-right:2px solid var(--green);border-bottom:2px solid var(--green);
  transform:rotate(45deg);transition:transform .3s var(--ease);margin-top:-4px}
.faq-item[open] summary::after{transform:rotate(-135deg);margin-top:2px}
.faq-item summary:hover{color:var(--mint)}
.faq-a{padding:0 26px 24px;color:var(--ink-2);font-size:.96rem;line-height:1.7;max-width:64ch}

/* ===== token utility ==================================================== */
.util{list-style:none;margin:0 auto;padding:0;max-width:880px;
  display:flex;flex-wrap:wrap;justify-content:center;gap:14px}
.util-item{display:inline-flex;align-items:center;gap:11px;padding:15px 22px;
  font-size:.98rem;color:var(--ink);
  transition:border-color var(--t),transform var(--t),box-shadow var(--t)}
.util-item:hover{border-color:var(--edge-hi);transform:translateY(-3px);
  box-shadow:0 18px 44px -28px rgba(0,229,107,.4)}
.util-dot{width:7px;height:7px;border-radius:50%;background:var(--green);flex:none;
  box-shadow:0 0 10px rgba(0,229,107,.9)}
.token-facts{max-width:880px;margin:0 auto 26px;display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.tfact{padding:26px 22px;text-align:center;transition:border-color var(--t),transform var(--t),box-shadow var(--t)}
.tfact:hover{border-color:var(--edge-hi);transform:translateY(-3px);box-shadow:0 18px 44px -28px rgba(0,229,107,.4)}
.tfact-fig{display:block;font-size:clamp(1.15rem,2.2vw,1.7rem);font-weight:500;letter-spacing:-.01em;color:var(--ink);line-height:1.1;word-break:break-word}
.tfact-label{display:block;margin-top:10px;font-size:.66rem;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-3)}
.util-note{margin:26px auto 0;text-align:center;font-size:.84rem;color:var(--ink-3)}

/* ===== touch: no hover, so light the card centred in the viewport ======= */
@media (hover:none){
  .card.in-focus,.step.in-focus,.mile.in-focus,.uc.in-focus{
    border-color:var(--edge-hi);
    box-shadow:0 22px 55px -30px rgba(0,229,107,.42);
    transform:translateY(-4px)}
  .card.in-focus .ico-img,.step.in-focus .ico-img{
    filter:drop-shadow(0 8px 26px rgba(0,229,107,.55))}
  .card.in-focus .shine::before,.mile.in-focus .shine::before{left:130%}
}

/* ===== reveal ============================================================ */
.reveal{opacity:0;transform:translateY(24px);
  transition:opacity .8s var(--ease),transform .8s var(--ease)}
.reveal[data-fx="left"]{transform:translateX(-20px)}
.reveal[data-fx="right"]{transform:translateX(20px)}
.reveal[data-fx="scale"]{transform:scale(.94)}
.reveal[data-d="1"]{transition-delay:.09s}
.reveal[data-d="2"]{transition-delay:.18s}
.reveal[data-d="3"]{transition-delay:.27s}
.reveal[data-d="4"]{transition-delay:.36s}
.reveal.in{opacity:1;transform:none}

/* ===== responsive ======================================================== */
@media (max-width:1024px){
  .hero-grid{grid-template-columns:1fr;gap:48px;text-align:left}
  .hero-visual{order:-1}
  .emblem-stage{width:min(100%,380px)}
  /* no fine pointer = no tilt; flatten the 3D projection so rings cannot bleed */
  .emblem-stage .layer{--z:0px}
  .cards,.steps{grid-template-columns:repeat(2,1fr)}
  .steps{gap:20px}
  .usecases{grid-template-columns:repeat(2,1fr)}
  .checkflow{grid-template-columns:repeat(2,1fr);gap:14px}
  .cf-step+.cf-step::after{content:none}
  .step+.step::after{content:none}
  .stats{grid-template-columns:repeat(2,1fr);row-gap:44px}
  .stat:nth-child(3)::before{content:none}
  .builders-grid{grid-template-columns:1fr;gap:40px}
  .nav-links{display:none}
  .burger{display:flex}
  .tl-rail{left:10px}
  .tl-item{width:100%;left:0;padding:14px 0 14px 40px}
  .tl-left,.tl-right{padding-right:0;padding-left:40px}
  .tl-left .tl-node,.tl-right .tl-node{left:5px;right:auto}
  .foot-giant{font-size:clamp(6rem,30vw,12rem)}
}
@media (max-width:720px){
  .compare{grid-template-columns:1fr}
  .compare-arrow{transform:rotate(90deg);margin:0 auto}
  .cards,.stats,.steps{grid-template-columns:1fr}
  .usecases{grid-template-columns:1fr}
  .checkflow{grid-template-columns:1fr}
  .token-facts{grid-template-columns:1fr}
  .faq{grid-template-columns:1fr}
  .menu-strip{justify-content:center;text-align:center}
  .menu-list{justify-content:center}
  .stat+.stat::before{content:none}
  .stat{padding:0 24px}
  /* brand on top full-width, then Product + Company side by side, all centered */
  .foot-grid{grid-template-columns:1fr 1fr;gap:34px 20px;text-align:center}
  .foot-brand{grid-column:1 / -1}
  .foot-brand .brand{justify-content:center}
  .foot-brand p{margin-left:auto;margin-right:auto}
  .social{justify-content:center}
  .foot-col{align-items:center}
  .foot-base{justify-content:center;text-align:center}
  /* VEIL watermark sits in-flow, centered, cleanly between the columns and legal */
  .foot-giant{position:static;transform:none;left:auto;bottom:auto;
    margin:22px auto 10px;font-size:clamp(4rem,20vw,7rem);text-align:center;
    -webkit-text-stroke-width:1px}
  .hero{padding:120px 0 70px}
  .display{font-size:clamp(2.9rem,13vw,4rem)}
  .statement{font-size:clamp(2rem,9vw,2.9rem)}
  /* centre the section headers on mobile */
  .sec-head{text-align:center;margin-left:auto;margin-right:auto}
  .sec-head .kicker{justify-content:center}
  .sec-head .sec-lede{margin-left:auto;margin-right:auto}
  .builders-grid > .reveal:first-child{text-align:center}
  .builders-grid .kicker{justify-content:center}
  .builders-grid .sec-lede{margin-left:auto;margin-right:auto}
  .builders-grid .btn{margin-left:auto;margin-right:auto}
  /* swap the wide pool diagram for the portrait one: whole story, no side-scroll */
  .pool-scroll{overflow-x:visible}
  .pool{display:none}
  .pool-m{display:block}
  .pool-wrap{padding:22px 18px 20px}
}
@media (max-width:360px){
  /* nav min-content would exceed 320px; the mobile menu carries its own CTA */
  .nav-actions .btn-primary{display:none}
}

/* ===== reduced motion ==================================================== */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;
    transition-duration:.01ms!important;scroll-behavior:auto!important}
  .reveal{opacity:1;transform:none}
  .veiled{filter:none}
  .emblem-stage{transform:none}
  .orb{transform:none}
  .statement .w{opacity:1;transform:none}
  .spark{animation:none}
  .loader{display:none}
  .cursor,.cursor-ring{display:none}
  .marquee-track{animation:none}
  .flow{stroke-dashoffset:0}
  .tl-rail span{height:100%!important}
}
