/* Homepage entry: title 0–2s, copy 2.15–3.7s, border 3.75–4.75s, buttons 4.8–5.5s. */
:root{--entry-border-delay:3750ms;--entry-border-time:1000ms;--entry-surface-delay:4800ms}
#top .entry-stage{position:relative}
#top #hero-title .entry-text,#top #hero-title .entry-strokes{color:inherit}
.entry-strokes{position:absolute;inset:0;pointer-events:none;color:inherit}
.entry-strokes svg{position:absolute;overflow:visible;display:block}
.entry-title-outline path{fill:currentColor;fill-opacity:0;stroke:currentColor;stroke-width:8;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1}
.entry-pending #top .entry-stage>.entry-text{opacity:0;animation:entry-safety 0s 8s forwards}
.entry-pending #top .hero-background{filter:blur(20px);transform:scale(1.035);animation:entry-safety-bg 0s 8s forwards}
.entry-running #top #hero-title>.entry-text{animation:entry-real var(--entry-time) var(--entry-delay) ease both}
.entry-running .entry-title-outline{animation:entry-outline-out var(--entry-time) var(--entry-delay) ease both}
.entry-running .entry-title-outline path{animation:entry-draw var(--entry-time) var(--entry-delay) cubic-bezier(.5,0,.3,1) both,entry-title-fill var(--entry-time) var(--entry-delay) ease both}
.entry-running #top .hero-background{animation:entry-focus 2300ms cubic-bezier(.22,.7,.2,1) both}
/* The glyph itself is final from frame one. Only the reveal mask changes. */
.entry-exact-glyphs .entry-final-ink{fill:currentColor;stroke:none}
.entry-exact-glyphs .entry-mask-brush{fill:none;stroke:white;stroke-width:170;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1}
.entry-running .entry-mask-brush{animation:entry-draw var(--entry-time) var(--entry-delay) cubic-bezier(.5,0,.3,1) both}
.entry-running #top .entry-exact>.entry-text{animation:entry-native-show var(--entry-time) var(--entry-delay) steps(1,end) both}
.entry-running .entry-exact-glyphs{animation:entry-native-hide var(--entry-time) var(--entry-delay) steps(1,end) both}
.entry-native-arrow{fill:currentColor;stroke:none}
.entry-running .entry-native-arrow{animation:entry-arrow var(--entry-time) var(--entry-delay) ease both}
.entry-border{position:absolute;inset:-1px;width:calc(100% + 2px);height:calc(100% + 2px);pointer-events:none;color:#ffffff80;overflow:visible}
.entry-border rect{fill:none;stroke:currentColor;stroke-dasharray:1;stroke-dashoffset:1;stroke-width:1}
.entry-pending #top .entry-button{border-color:transparent;background:transparent;box-shadow:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
.entry-running .entry-border rect{animation:entry-draw var(--entry-border-time) var(--entry-border-delay) cubic-bezier(.5,0,.3,1) both}
.entry-running .entry-border{animation:entry-native-hide var(--entry-border-time) var(--entry-border-delay) steps(1,end) both}
.entry-running #top .entry-button{animation:entry-button-border var(--entry-border-time) var(--entry-border-delay) steps(1,end) both,entry-button-surface 700ms var(--entry-surface-delay) ease both}
.entry-button>.entry-text{display:inline-flex;align-items:center;justify-content:space-between;gap:28px;width:100%;pointer-events:none}
@keyframes entry-draw{0%{stroke-dashoffset:1}90%,100%{stroke-dashoffset:0}}
@keyframes entry-real{0%,78%{opacity:0}100%{opacity:1}}
@keyframes entry-outline-out{0%,79%{opacity:1}100%{opacity:0}}
@keyframes entry-title-fill{0%,52%{fill-opacity:0}80%,100%{fill-opacity:1}}
@keyframes entry-native-show{from{opacity:0}to{opacity:1}}
@keyframes entry-native-hide{from{opacity:1}to{opacity:0}}
@keyframes entry-arrow{from{opacity:0}to{opacity:1}}
@keyframes entry-button-border{from{border-color:transparent}to{border-color:#ffffff80}}
@keyframes entry-button-surface{from{background-color:transparent}to{background-color:var(--entry-button-bg,transparent)}}
@keyframes entry-focus{from{filter:blur(20px);transform:scale(1.035)}to{filter:blur(0);transform:scale(1)}}
@keyframes entry-safety{to{opacity:1}}
@keyframes entry-safety-bg{to{filter:none;transform:none}}
@keyframes entry-safe-visible{to{visibility:visible}}
.entry-pending:not(.entry-running) #top #hero-title .entry-title-text{opacity:0;animation:entry-safety 0s 8s forwards}
.entry-pending:not(.entry-running) #top .hero-intro,.entry-pending:not(.entry-running) #top .hero-actions{visibility:hidden;animation:entry-safe-visible 0s 8s forwards}
@media(prefers-reduced-motion:reduce){.entry-strokes,.entry-border{display:none}.entry-pending #top .entry-stage>.entry-text{opacity:1;animation:none}.entry-pending #top .hero-background{filter:none;transform:none;animation:none}.entry-pending #top .entry-button{border-color:#ffffff80}}

.entry-running #top .entry-native-fallback>.entry-text{animation:entry-arrow var(--entry-time) var(--entry-delay) ease both}
/* First-paint guard before deferred SVG construction; native text stays semantic. */
.entry-pending:not(.entry-running) #top #hero-title{visibility:hidden}
.entry-running #top #hero-title{visibility:visible}
/* The status lives directly under the hero, outside the hidden legacy controls. */
.home-immersive-preview #top > #hero-background-status{position:absolute;left:max(24px,calc((100vw - 1240px)/2));bottom:24px;z-index:3;width:15px;height:15px;margin:0;display:block;opacity:.52;font-size:0;pointer-events:none}
.home-immersive-preview #top > #hero-background-status[hidden]{display:none}
.home-immersive-preview #top > #hero-background-status::before{content:"";display:block;width:12px;height:12px;border:1.5px solid #ffffff35;border-top-color:#fff;border-radius:50%;animation:entry-buffer-spin 900ms linear infinite}
@keyframes entry-buffer-spin{to{transform:rotate(360deg)}}
.home-immersive-preview #top > #hero-background-toggle{position:absolute;left:24px;bottom:20px;z-index:4;min-height:30px;padding:4px 8px;font-size:11px;color:#ffffffb3;border:1px solid #ffffff40;background:#0002;display:none}
.home-immersive-preview #top.hero-needs-play > #hero-background-toggle{display:block}
#top .hero-background video{transition:opacity 400ms ease}
@media(prefers-reduced-motion:reduce){.home-immersive-preview #top > #hero-background-status::before{animation:none}#top .hero-background video{transition:none}}
