/* The intro covers existing content; it never gates page rendering. */
.logo-intro{display:none;position:fixed;inset:0;z-index:1000;pointer-events:none;overflow:hidden}
html[data-logo-intro] .logo-intro{display:block;animation:intro-dismiss 1.3s step-end forwards}
.logo-intro__door{position:absolute;top:0;bottom:0;width:50%;background:var(--navy,#071e35);will-change:transform,opacity;animation-duration:1.05s;animation-delay:200ms;animation-timing-function:cubic-bezier(.16,1,.3,1);animation-fill-mode:both}
.logo-intro__door--left{left:0;animation-name:intro-left}
.logo-intro__door--right{right:0;animation-name:intro-right}
.logo-intro__mark{position:absolute;top:50%;width:clamp(90px,13vw,160px);height:clamp(180px,26vw,320px);background:#c0e2fb;transform:translateY(-50%)}
.logo-intro__door--left .logo-intro__mark{right:5px;border-radius:999px 0 0 999px}
.logo-intro__door--right .logo-intro__mark{left:5px;border-radius:0 999px 999px 0}
html[data-logo-intro] .hero-copy h1{animation:intro-headline 650ms cubic-bezier(.16,1,.3,1) 350ms both}
@keyframes intro-left{0%{transform:translateX(0);opacity:1}70%{opacity:1}100%{transform:translateX(-100%);opacity:0}}
@keyframes intro-right{0%{transform:translateX(0);opacity:1}70%{opacity:1}100%{transform:translateX(100%);opacity:0}}
@keyframes intro-headline{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
@keyframes intro-dismiss{to{visibility:hidden}}
@media(prefers-reduced-motion:reduce){html[data-logo-intro] .logo-intro{display:none}html[data-logo-intro] .hero-copy h1{animation:none}}
