/* Homepage depth layer. Loaded on / only. Everything here is additive:
   without JS, or with reduced motion, the page renders exactly as before. */

/* ---------- hero: layered scene ---------- */
.hero .h1-kicker{display:block;font:600 clamp(.8rem,1.4vw,.95rem)/1 var(--body);letter-spacing:.2em;text-transform:uppercase;color:#F05A50;margin:0 0 14px}

.hero-scene,.hero-fog,.hero-dust,.vanish-note{display:none}

/* live mode: switched on by depth.js once every layer has loaded */
.hero.is-live{min-height:0;display:block;overflow:visible;height:calc(var(--stage-h) + var(--pin));--stage-h:calc(100svh - 72px - env(safe-area-inset-top,0px));--pin:90svh;align-items:initial}
.hero.is-live::after{content:none}
.hero.is-live .hero-poster{visibility:hidden}
.hero:not(.is-live) .hero-stage{display:contents}
.hero.is-live .hero-stage{position:sticky;top:calc(72px + env(safe-area-inset-top,0px));height:var(--stage-h);min-height:560px;overflow:hidden;display:flex;align-items:flex-end;background:#09090b}
.hero.is-live .hero-stage::after{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;background:linear-gradient(270deg,#09090b 0 calc(clamp(0px,9vw,180px) + 4px),rgba(9,9,11,0) calc(clamp(0px,9vw,180px) + 90px)),linear-gradient(90deg,#09090b 0 30%,rgba(9,9,11,.7) 44%,rgba(9,9,11,0) 60%),linear-gradient(0deg,var(--ink) 0,rgba(14,26,29,0) 22%)}

.hero.is-live .hero-scene{display:block;position:absolute;z-index:1;right:clamp(0px,9vw,180px);bottom:0;height:95%;aspect-ratio:1024/986}
.hl{position:absolute;will-change:transform,opacity}
.hl-plate{inset:0;transform-origin:50% 100%}
.hl-plate img{width:100%;height:100%;max-width:none}
.hl-glow{left:52%;top:8%;width:48%;height:70%;border-radius:50%;background:radial-gradient(closest-side,rgba(204,32,32,.55),rgba(204,32,32,.18) 55%,rgba(204,32,32,0));mix-blend-mode:screen;opacity:.2}
/* cutout box measured from the source frame: x 580..980, y 28..986 of 1024x986 */
.hl-ninja{left:56.640625%;top:2.839757%;width:39.0625%;height:97.160243%;transform-origin:50% 100%}
/* the figure is the original photo, cut out with an alpha mask (no second copy of the image) */
.ninja-cut{position:absolute;inset:0;overflow:hidden;-webkit-mask:url(/assets/hero/ninja-mask.svg) 0 0/100% 100% no-repeat;mask:url(/assets/hero/ninja-mask.svg) 0 0/100% 100% no-repeat}
.ninja-cut img{position:absolute;left:-145%;top:-2.922756%;width:256%;height:102.922756%;max-width:none}
.ninja-shadow{position:absolute;left:4%;right:2%;bottom:-1.2%;height:5%;border-radius:50%;background:radial-gradient(closest-side,rgba(0,0,0,.85),rgba(0,0,0,0));z-index:-1}
.hl-smoke{inset:0;pointer-events:none}
.hl-smoke img{position:absolute;width:46%;height:auto;max-width:none;opacity:0;will-change:transform,opacity}

.hero.is-live .vanish-note{display:block;position:absolute;z-index:3;right:calc(clamp(0px,9vw,180px) + 4%);top:42%;margin:0;font:400 clamp(1.7rem,3.2vw,2.6rem)/1 var(--display);letter-spacing:.04em;color:var(--bone);opacity:0;pointer-events:none}
.vanish-note::after{content:"";display:block;height:3px;margin-top:8px;background:var(--red);transform-origin:0 50%;transform:scaleX(var(--nl,0))}

.hero.is-live .hero-fog{display:block;position:absolute;z-index:3;left:-10%;right:-10%;bottom:-2%;height:30%;pointer-events:none;opacity:.55}
.fog-track{position:absolute;inset:0;width:200%;background:url(/assets/hero/fog.webp) repeat-x 0 0/50% 100%;animation:fogdrift 80s linear infinite}
@keyframes fogdrift{to{transform:translateX(-50%)}}
.hero.is-paused .fog-track{animation-play-state:paused}
.hero.is-live .hero-dust{display:block;position:absolute;inset:0;z-index:3;width:100%;height:100%;pointer-events:none}
.hero.is-live .wrap{z-index:4;will-change:transform}

@media (max-width:760px){
  .hero.is-live{--pin:60svh}
  .hero.is-live .hero-stage{min-height:0}
  .hero.is-live .wrap{padding-top:96px;padding-bottom:40px}
  .hero.is-live .hero-scene{right:-24%;height:88%}
  .hero.is-live .hero-stage::after{background:linear-gradient(0deg,var(--ink) 8%,rgba(9,9,11,.55) 52%,rgba(9,9,11,.15) 100%)}
  .hero.is-live .hero-scene .hl-plate,.hero.is-live .hero-scene .hl-ninja{opacity:.85}
  .hero.is-live .vanish-note{right:22px;top:22px;font-size:1.6rem}
  .hero.is-live .hero-fog{height:22%;bottom:18%;opacity:.45}
  .hero .h1-kicker{margin-bottom:10px}
}

/* ---------- sections below the hero (only when depth.js runs) ---------- */
/* trust strip: items stamp in */
.fx .trust li{opacity:0;transform:translateY(10px);transition:opacity .5s ease,transform .5s cubic-bezier(.2,.7,.2,1)}
.fx .trust li::before{transition:transform .6s cubic-bezier(.3,1.6,.5,1);transform:rotate(-135deg) scale(0)}
.fx .trust.in li{opacity:1;transform:none}
.fx .trust.in li::before{transform:rotate(45deg) scale(1)}
.fx .trust.in li:nth-child(2),.fx .trust.in li:nth-child(2)::before{transition-delay:.09s}
.fx .trust.in li:nth-child(3),.fx .trust.in li:nth-child(3)::before{transition-delay:.18s}
.fx .trust.in li:nth-child(4),.fx .trust.in li:nth-child(4)::before{transition-delay:.27s}

/* ledger: a red rail draws down the prices as you read */
.fx .ledger{position:relative}
.fx .ledger::before{content:"";position:absolute;left:-14px;top:-2px;width:3px;height:100%;background:var(--red);transform-origin:50% 0;transform:scaleY(var(--p,0))}
.fx .ledger-row{opacity:0;transform:translateX(18px);transition:opacity .5s ease,transform .6s cubic-bezier(.2,.7,.2,1)}
.fx .ledger-row.in{opacity:1;transform:none}
@media (max-width:480px){.fx .ledger::before{left:-12px}}

/* steps: a line runs through 1-2-3-4 and each number lights */
.fx .steps li{position:relative}
.fx .steps li::after{content:"";position:absolute;left:0;right:0;top:-3px;height:3px;background:var(--red);transform-origin:0 50%;transform:scaleX(clamp(0,calc(var(--p,0) * 4 - var(--i)),1))}
.fx .steps li::before{opacity:calc(.3 + .7 * clamp(0,calc((var(--p,0) * 4 - var(--i)) * 3),1));transition:opacity .15s linear}

/* about / where: a huge WICHITA drifts behind the copy */
.fx .has-word{position:relative;overflow:hidden}
.has-word>.wrap{position:relative;z-index:1}
.bg-word{display:none}
.fx .bg-word{display:block;position:absolute;left:0;top:50%;margin:0;white-space:nowrap;font:400 clamp(9rem,26vw,22rem)/.8 var(--display);letter-spacing:.02em;color:transparent;-webkit-text-stroke:1.5px rgba(238,242,241,.1);transform:translate3d(calc((.35 - var(--p,0)) * 40%),-50%,0);pointer-events:none;user-select:none}

/* video feature: the frame tilts up into place */
.fx .vl-feature .vl-frame{transform:perspective(1300px) translateY(calc((1 - var(--p,1)) * 46px)) rotateX(calc((1 - var(--p,1)) * 18deg)) scale(calc(.94 + .06 * var(--p,1)));transform-origin:50% 100%}

/* arcade banner: the art moves at its own depth inside the frame */
.fx .ab-media img{transform:translate3d(0,calc((var(--p,.5) - .5) * -9%),0) scale(1.12);will-change:transform}

/* closing band: the heading cuts in like the hero headline */
.fx .cta h2{clip-path:inset(0 100% 0 0)}
.fx .cta.in h2{animation:cut .7s cubic-bezier(.2,.7,.2,1) both}
/* short laptop screens: the pinned stage is the viewport, so fit the copy to its height */
@media (min-width:761px) and (max-height:840px){
  .hero.is-live .wrap{padding-top:34px;padding-bottom:40px}
  .hero.is-live h1{font-size:min(clamp(4.2rem,14vw,9.5rem),15.5svh)}
  .hero.is-live .lede{font-size:1.12rem}
  .hero.is-live .game-sticker{margin-bottom:12px}
}
