/* hero callouts: Michael Bay slam, kept restrained */
.vhero.hasco .vid img.sc{opacity:0;animation:none;transform:scale(1.02);transition:opacity 1.1s var(--ease2);will-change:opacity,transform}
.vhero.hasco .vid img.sc.on{opacity:1}
.vhero.hasco .vid img.sc.push{animation:copush calc(var(--cod,3.3s) + 1.4s) linear both}
@keyframes copush{from{transform:scale(1.02)}to{transform:scale(1.1)}}
.vhero.hasv .vid img.sc{opacity:0!important}
.vhero.co-paused .vid img.sc,.vhero.co-paused .hco *{animation-play-state:paused!important}
.hco{position:absolute;inset:0;z-index:1;pointer-events:none;display:grid;place-items:center;padding:0 24px;contain:layout paint}
.hco:before{content:"";position:absolute;inset:0;background:radial-gradient(60% 38% at 50% 54%,rgba(3,4,6,.42),transparent 72%)}
.hco-cam,.hco-stage{position:relative;width:100%;height:100%;display:grid;place-items:center}
.hco-l{grid-area:1/1;margin:0;max-width:min(14ch,92vw);text-align:center;font:400 clamp(34px,6.6vw,104px)/1.02 var(--serif);letter-spacing:-.01em;color:#fff;
 text-shadow:0 2px 28px rgba(3,4,6,.55),0 0 2px rgba(3,4,6,.4);text-wrap:balance;transform-origin:50% 55%;will-change:transform,opacity,filter;
 animation:coslam var(--d,3.3s) both}
.hco-l span{display:inline-block;animation:codrift var(--d,3.3s) linear both}
/* timeline as % of scene: slam in ~0.28s, settle, hold, smooth exit */
@keyframes coslam{
 0%{opacity:0;transform:scale(1.85);filter:blur(16px);letter-spacing:.12em;animation-timing-function:cubic-bezier(.2,.9,.15,1)}
 8.5%{opacity:1;transform:scale(.965);filter:blur(0);letter-spacing:-.01em;animation-timing-function:cubic-bezier(.3,.6,.3,1)}
 15%{transform:scale(1);filter:blur(0)}
 80%{opacity:1;transform:scale(1);filter:blur(0);animation-timing-function:cubic-bezier(.55,0,.75,.4)}
 96%,100%{opacity:0;transform:translateY(-.12em) scale(1.035);filter:blur(6px)}}
@keyframes codrift{from{transform:scale(1)}to{transform:scale(1.045)}}
/* anamorphic streak */
.hco-flare{position:absolute;left:50%;top:54%;width:120vw;height:2px;margin-left:-60vw;opacity:0;transform:scaleX(0);
 background:linear-gradient(90deg,transparent,rgba(93,216,230,.0) 8%,rgba(93,216,230,.55) 35%,#fff 50%,rgba(93,216,230,.55) 65%,transparent 92%);
 box-shadow:0 0 18px 3px rgba(93,216,230,.35);will-change:transform,opacity}
.hco-flare:after{content:"";position:absolute;left:50%;top:50%;width:160px;height:160px;margin:-80px 0 0 -80px;border-radius:50%;background:radial-gradient(rgba(255,255,255,.55),rgba(93,216,230,.18) 35%,transparent 70%)}
.hco-flare.go{animation:coflare .75s cubic-bezier(.2,.8,.2,1) both}
@keyframes coflare{0%{opacity:0;transform:scaleX(.05)}16%{opacity:1;transform:scaleX(1)}100%{opacity:0;transform:scaleX(1.25)}}
.hco-cam.shake{animation:coshake .42s linear both}
@keyframes coshake{0%,6%{transform:none}10%{transform:translate3d(3px,-2px,0) rotate(.15deg)}16%{transform:translate3d(-3px,2px,0) rotate(-.12deg)}24%{transform:translate3d(2px,1px,0)}34%{transform:translate3d(-1.5px,-1px,0)}48%{transform:translate3d(1px,.5px,0)}100%{transform:none}}
@media (max-width:640px){.hco-l{font-size:clamp(34px,10.5vw,50px);max-width:11ch}
 @keyframes coslam{0%{opacity:0;transform:scale(1.7);filter:blur(8px)}8.5%{opacity:1;transform:scale(.97);filter:blur(0)}15%{transform:scale(1)}80%{opacity:1;transform:scale(1);filter:blur(0)}96%,100%{opacity:0;transform:translateY(-.12em) scale(1.03);filter:blur(4px)}}
 .hco-flare:after{width:110px;height:110px;margin:-55px 0 0 -55px}}
@media (prefers-reduced-motion:reduce) and (max-width:0px){
 .vhero.hasco .vid img.sc.push{animation:none;transform:none}
 .hco-l{animation:cofade var(--d,3.3s) linear both}.hco-l span{animation:none}
 .hco-flare,.hco-flare.go{display:none}.hco-cam.shake{animation:none}
 @keyframes cofade{0%{opacity:0}12%,85%{opacity:1}100%{opacity:0}}}
.vhero.hasco .vid img.sc.on{z-index:1}

/* HUD frame (matches home reel holographic language) */
.hhud{position:absolute;inset:0;pointer-events:none;color:rgba(127,233,245,.85)}
.hhud .hb{position:absolute;width:44px;height:44px;border:1.5px solid rgba(127,233,245,.7);filter:drop-shadow(0 0 6px rgba(93,216,230,.6))}
.hhud .tl{left:clamp(16px,4vw,56px);top:clamp(16px,4vw,48px);border-right:0;border-bottom:0}.hhud .tr{right:clamp(16px,4vw,56px);top:clamp(16px,4vw,48px);border-left:0;border-bottom:0}
.hhud .bl{left:clamp(16px,4vw,56px);bottom:clamp(60px,9vh,96px);border-right:0;border-top:0}.hhud .br{right:clamp(16px,4vw,56px);bottom:clamp(60px,9vh,96px);border-left:0;border-top:0}
.hhud .hscan{position:absolute;inset:0;background:repeating-linear-gradient(0deg,rgba(150,235,250,.045) 0 1px,transparent 1px 3px);mix-blend-mode:screen}
.hhud .hscan:after{content:"";position:absolute;left:0;right:0;height:22%;top:-22%;background:linear-gradient(180deg,transparent,rgba(127,233,245,.08),transparent);animation:hsweep 4.4s linear infinite}
@keyframes hsweep{to{transform:translateY(560%)}}
@keyframes hrot{to{transform:rotate(360deg)}}
.hchipl{position:absolute;left:calc(clamp(16px,4vw,56px) + 58px);top:calc(clamp(16px,4vw,48px) + 4px);font:600 11px/1 var(--sans,system-ui);letter-spacing:.22em;text-transform:uppercase;display:flex;gap:9px;align-items:center;text-shadow:0 0 8px rgba(93,216,230,.6)}
.hchipl b{width:7px;height:7px;border-radius:50%;background:#7fe9f5;box-shadow:0 0 10px #7fe9f5;animation:hblink 1.6s ease-in-out infinite}
@keyframes hblink{50%{opacity:.25}}
.hsegs{position:absolute;right:calc(clamp(16px,4vw,56px) + 58px);top:calc(clamp(16px,4vw,48px) + 7px);display:flex;gap:6px}
.hsegs i{width:22px;height:3px;background:rgba(127,233,245,.25);transition:background .3s,box-shadow .3s}.hsegs i.on{background:#7fe9f5;box-shadow:0 0 8px #7fe9f5}
/* light wipe on each scene change */
.hco-wipe{position:absolute;inset:0;opacity:0;background:linear-gradient(100deg,transparent 30%,rgba(210,250,255,.0) 38%,rgba(230,252,255,.75) 50%,rgba(210,250,255,0) 62%,transparent 70%);background-size:300% 100%;mix-blend-mode:screen}
.hco-wipe.go{animation:cowipe .6s cubic-bezier(.3,.7,.2,1) both}
@keyframes cowipe{0%{opacity:1;background-position:100% 0}100%{opacity:0;background-position:0 0}}
@media (max-width:640px){.hsegs i{width:14px}.hhud .hb{width:28px;height:28px}.hchipl{font-size:9.5px;left:calc(16px + 38px)}.hsegs{right:calc(16px + 38px)}}
@media (prefers-reduced-motion:reduce) and (max-width:0px){.hhud .hscan:after,.hchipl b{animation:none}.hco-wipe{display:none}}

/* dot swarm text (replaces the slam when WebGL + motion are allowed) */
.hsw{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0}
.hco-cam{z-index:1}
.hco-l.sw,.hco-l.sw.out{animation:none!important;transform:none;letter-spacing:-.01em;transition:none}
.hco-l.sw span{animation:none!important;transform:none;will-change:filter}
.hco.swon .hco-flare{display:none}

/* elegant reveal (rv8): blur to sharp, slight rise, letter-spacing settle, smooth fade out */
.hco-l{font-weight:300;letter-spacing:0;animation:coreveal var(--d,3.3s) linear both;will-change:transform,opacity,filter,letter-spacing}
.hco-l span{animation:none;transform:none}
.hco-l.out{animation-play-state:running}
.hco-flare,.hco-wipe{display:none!important}
@keyframes coreveal{
 0%{opacity:0;transform:translateY(.28em);filter:blur(10px);letter-spacing:.06em;animation-timing-function:cubic-bezier(.22,.61,.36,1)}
 26%{opacity:1;transform:translateY(0);filter:blur(0);letter-spacing:0;animation-timing-function:linear}
 76%{opacity:1;transform:translateY(-.04em);filter:blur(0);letter-spacing:0;animation-timing-function:cubic-bezier(.4,0,.6,1)}
 100%{opacity:0;transform:translateY(-.14em);filter:blur(4px);letter-spacing:.01em}}
@media (max-width:640px){@keyframes coreveal{
 0%{opacity:0;transform:translateY(.28em);filter:blur(8px);letter-spacing:.05em;animation-timing-function:cubic-bezier(.22,.61,.36,1)}
 26%{opacity:1;transform:translateY(0);filter:blur(0);letter-spacing:0;animation-timing-function:linear}
 76%{opacity:1;transform:translateY(-.04em);filter:blur(0);letter-spacing:0;animation-timing-function:cubic-bezier(.4,0,.6,1)}
 100%{opacity:0;transform:translateY(-.14em);filter:blur(3px);letter-spacing:.01em}}}
@media (prefers-reduced-motion:reduce) and (max-width:0px){.hco-l{animation:cofade var(--d,3.3s) linear both;transform:none;filter:none;letter-spacing:0}}

/* staggered word reveal (rv9) */
.hco-l.st{animation:none;opacity:1;filter:none;transform:none;letter-spacing:0;position:relative;padding-bottom:.32em}
.hco-l.st .w{display:inline-block;overflow:hidden;vertical-align:top;padding:0 .02em .1em;margin-bottom:-.1em}
.hco-l.st .wi{display:inline-block;will-change:transform,opacity,filter;
 animation:cowin .9s cubic-bezier(.2,.7,.2,1) both,cowout .45s cubic-bezier(.5,0,.75,.3) forwards}
@keyframes cowin{0%{transform:translateY(105%);opacity:0;filter:blur(6px)}55%{opacity:1}100%{transform:translateY(0);opacity:1;filter:blur(0)}}
@keyframes cowout{0%{transform:translateY(0);opacity:1;filter:blur(0)}100%{transform:translateY(-70%);opacity:0;filter:blur(4px)}}
.hco-u{position:absolute;left:calc(50% - 1.2em);bottom:.06em;width:2.4em;height:1px;background:linear-gradient(90deg,rgba(93,216,230,0),rgba(93,216,230,.9) 30%,rgba(232,200,140,.85) 70%,rgba(232,200,140,0));
 transform:scaleX(0);transform-origin:0 50%;animation:coudraw 1.1s cubic-bezier(.2,.7,.2,1) both,couout .5s ease-in forwards}
@keyframes coudraw{from{transform:scaleX(0);opacity:.2}to{transform:scaleX(1);opacity:1}}
@keyframes couout{from{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(1) translateX(30%)}}
@media (prefers-reduced-motion:reduce) and (max-width:0px){.hco-l.st{animation:cofade var(--d,3.3s) linear both}.hco-l.st .wi,.hco-u{animation:none!important;transform:none;filter:none;opacity:1}}
