/* One 3.5-second sequence: flight → signature → page. */
.site-intro{display:none}
html.intro-active{overflow:hidden}
.intro-active .site-intro{position:fixed;inset:0;z-index:10000;display:grid;place-items:center;overflow:hidden;isolation:isolate;background:#2451ed;pointer-events:auto}
.intro-aura{position:absolute;inset:-15%;pointer-events:none;background:radial-gradient(ellipse at 50% 46%,#608cff80 0%,#365df233 32%,#173bbb00 65%);opacity:.8}
.intro-scene{position:absolute;width:min(480px,94vw);aspect-ratio:4/3;opacity:0;transform:translateY(8px) scale(.94)}
.intro-world{display:block;width:100%;height:100%;overflow:visible}
.intro-trail{stroke-dasharray:1;stroke-dashoffset:1}
.intro-plane{opacity:0;filter:drop-shadow(0 5px 7px #102a7940)}
.intro-sparks{opacity:0}
.intro-signature{position:absolute;display:grid;place-items:center;opacity:0;transform:translateY(12px) scale(.96)}
.intro-logo{display:block;width:clamp(205px,25vw,320px);height:auto;object-fit:contain}
.intro-running.site-intro{animation:intro-exit .75s cubic-bezier(.4,0,.2,1) 2.75s both}
.intro-running .intro-aura{animation:intro-aura-breathe 3.5s ease-in-out both}
.intro-running .intro-scene{animation:intro-scene-in .45s cubic-bezier(.2,.7,.2,1) both,intro-scene-out .6s cubic-bezier(.4,0,.2,1) 1.65s forwards}
.intro-running .intro-trail{animation:intro-route-draw 1.85s cubic-bezier(.35,0,.2,1) both}
.intro-running .intro-plane{animation:intro-plane-show 1.95s linear both}
.intro-running .intro-sparks{animation:intro-sparks-show 1.8s ease both}
.intro-running .intro-signature{animation:intro-signature-in .75s cubic-bezier(.16,1,.3,1) 1.8s both}
@keyframes intro-scene-in{to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes intro-scene-out{to{opacity:0;transform:translateY(-5px) scale(1.055)}}
@keyframes intro-route-draw{to{stroke-dashoffset:0}}
@keyframes intro-plane-show{0%{opacity:0}10%,82%{opacity:1}100%{opacity:0}}
@keyframes intro-sparks-show{0%,100%{opacity:0}30%,70%{opacity:.65}}
@keyframes intro-signature-in{from{opacity:0;transform:translateY(12px) scale(.96);filter:blur(4px)}to{opacity:1;transform:translateY(0) scale(1);filter:blur(0)}}
@keyframes intro-aura-breathe{0%{opacity:.5;transform:scale(.9)}65%{opacity:1;transform:scale(1.05)}100%{opacity:.6;transform:scale(1.12)}}
@keyframes intro-exit{from{opacity:1}to{opacity:0;visibility:hidden}}
@media(prefers-reduced-motion:reduce){.site-intro,.intro-active .site-intro{display:none!important}html.intro-active{overflow:auto}}
