/* Home logo animation.
   The real logo appears large over the hero with a soft cyan light; over the first ~520px of
   scrolling it shrinks and glides into its place in the navigation bar, while the glass bar fades
   in and the hero text rises. Added by js/logo-anim.js only; without it (or with reduced motion)
   the page looks exactly as before. */
.la-track{position:relative}
.la-on .la-track .hero{position:sticky;top:var(--head)}

.la-logo{position:fixed;left:0;top:0;z-index:150;pointer-events:none;transform-origin:0 0;will-change:transform}
.la-logo .la-in{position:relative;width:100%;aspect-ratio:1/1;transform:perspective(1000px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transition:transform .9s var(--ease-out)}
.la-logo img{position:relative;z-index:2;width:100%;height:100%;border-radius:50%;box-shadow:0 30px 80px rgba(0,0,0,.55)}
.la-halo{position:absolute;inset:-20%;z-index:0;border-radius:50%;background:radial-gradient(circle,rgba(0,242,254,.24) 0,rgba(79,172,254,.12) 42%,transparent 68%);opacity:calc(1 - var(--p,0) * 1.5)}
.la-ring{position:absolute;inset:-5%;width:110%;height:110%;z-index:1;overflow:visible;opacity:calc(1 - var(--p,0) * 2.2)}
.la-ring circle{fill:none;stroke:rgba(0,242,254,.5);stroke-width:.35;stroke-dasharray:1;stroke-dashoffset:0}
.la-sheen{position:absolute;inset:0;z-index:3;border-radius:50%;overflow:hidden}
.la-sheen::after{content:"";position:absolute;top:-30%;bottom:-30%;width:34%;left:-70%;background:linear-gradient(100deg,transparent,rgba(0,242,254,.25) 40%,rgba(255,255,255,.6) 50%,rgba(0,242,254,.25) 60%,transparent);transform:skewX(-16deg)}
.la-cue{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom,0px));z-index:150;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:10px;color:rgba(248,249,250,.5);font-size:11px;font-weight:600;letter-spacing:.26em;text-transform:uppercase;pointer-events:none;opacity:calc(1 - var(--p,0) * 5)}
.la-cue i{width:1px;height:38px;background:linear-gradient(180deg,var(--cyan),transparent);transform-origin:top;animation:laCue 2.2s var(--ease) infinite}
body.has-dock .la-cue{bottom:calc(92px + env(safe-area-inset-bottom,0px))}

/* while the logo is in flight: the nav logo waits, the hero photo is dimmed, the hero copy is held back */
.la-on:not(.la-landed) .hdr .brand img{visibility:hidden}
.la-on .hdr .brand span{opacity:var(--hp,1)}
.la-on .hdr{background:rgba(13,15,18,calc(var(--hp,1) * .62));border-bottom-color:rgba(255,255,255,calc(var(--hp,1) * .1));-webkit-backdrop-filter:saturate(160%) blur(calc(var(--hp,1) * 12px));backdrop-filter:saturate(160%) blur(calc(var(--hp,1) * 12px))}
.la-on .hero-media{opacity:calc(.3 + var(--p,0) * .7);transform:scale(calc(1.08 - var(--p,0) * .08));transition:none}
.la-on .hero [data-reveal]{--t:clamp(0,calc((var(--p,0) - .3 - var(--i,0) * .1) * 3.2),1);opacity:var(--t);transform:translate3d(0,calc((1 - var(--t)) * 28px),0);transition:none}
.la-on .hero :focus-within[data-reveal],.la-on .hero [data-reveal]:focus-within{opacity:1;transform:none}
.la-landed .la-logo,.la-landed .la-cue,.menu-open .la-logo,.menu-open .la-cue{visibility:hidden}

/* entrance, once per page load at the top */
.la-play .la-logo img{animation:laLogo 1.6s .3s var(--ease-out) both}
.la-play .la-halo{animation:laFade 2s .5s var(--ease-out) both}
.la-play .la-ring circle{stroke-dashoffset:1;animation:laDraw 1.4s .2s cubic-bezier(.65,0,.35,1) forwards}
.la-play .la-sheen::after{animation:laSheen 1.3s 1.2s cubic-bezier(.45,0,.2,1) forwards}
.la-play .la-cue{animation:laFade 1s 1.9s ease both}
.la-ready .la-logo .la-in{animation:laFloat 7s ease-in-out infinite}
@keyframes laLogo{0%{opacity:0;transform:scale(.88);filter:blur(16px) brightness(1.8)}60%{opacity:1;filter:blur(1px) brightness(1.1)}100%{opacity:1;transform:none;filter:none}}
@keyframes laFade{from{opacity:0}}
@keyframes laDraw{to{stroke-dashoffset:0}}
@keyframes laSheen{to{left:140%}}
@keyframes laFloat{0%,100%{translate:0 0}50%{translate:0 -8px}}
@keyframes laCue{0%{transform:scaleY(0);opacity:1}60%{transform:scaleY(1);opacity:1}100%{transform:scaleY(1);opacity:0}}
@media (prefers-reduced-motion:reduce){.la-logo,.la-cue{display:none!important}}
