/* A bounded first-visit introduction. The real FV keeps rendering underneath. */
html[data-splash] .splash-screen{display:block!important}
.splash-screen{display:none;position:fixed;inset:0;z-index:190;pointer-events:auto;overflow:hidden;contain:layout style}
.splash-veil{position:absolute;inset:0;background:#fafaf7}
.splash-logo{position:absolute;left:var(--nano-ui-gutter,32px);top:clamp(24px,6svh,64px);width:180px;height:auto}
.splash-word{position:absolute;left:0;top:0;width:76vw;height:15.45vw;transform:translate(12vw,40svh);transform-origin:0 0;will-change:transform,opacity}
.splash-wire{position:absolute;inset:0;overflow:visible}
.splash-word svg{display:block;width:100%;height:100%;overflow:visible}
/* The full-resolution canvas never fades. Selected UI layers share its clock. */
html[data-splash][data-splash-live] .hero[data-ink-hero]{isolation:auto!important;z-index:auto!important;overflow:visible!important}
html[data-splash][data-splash-live] .hero[data-ink-hero]>[data-ink-canvas]{z-index:191;transform-origin:0 0;transform:var(--splash-canvas-transform,none)!important;clip-path:var(--splash-canvas-clip,none)!important;translate:none!important;opacity:1!important;will-change:transform,clip-path}
/* Keep the real text and controls in place. Only opacity and a small vertical
   offset change; removing data-splash restores all scroll/particle ownership. */
/* Invisible controls must not capture a click or start tracing. The veil
   receives the first input and the existing fail-open handler releases it. */
html[data-splash][data-splash-live] .hero[data-ink-hero] :is(.hero-intro,.hero-intro *,.hero-bottom,.hero-bottom *,.mobile-hero-controls,.mobile-hero-controls *,.hero-media-caption,.mobile-hero-meta,.mobile-hero-meta *,.passage-explore,.passage-explore *){pointer-events:none!important}
html[data-splash][data-splash-live] .hero[data-ink-hero] .hero-intro{z-index:192}
html[data-splash][data-splash-live] .hero[data-ink-hero] .hero-tagline{opacity:var(--splash-message-opacity,0)!important;translate:0 var(--splash-message-y,8px)!important;will-change:opacity,translate}
html[data-splash][data-splash-live] .hero[data-ink-hero] :is(.hero-bottom,.mobile-hero-controls){z-index:192;opacity:var(--splash-controls-opacity,0)!important;translate:0 var(--splash-controls-y,6px)!important;will-change:opacity,translate}
html[data-splash][data-splash-live] .hero[data-ink-hero] .hero-intro>[data-motion-hero-unit]:has(.pill){opacity:var(--splash-controls-opacity,0)!important;translate:0 var(--splash-controls-y,6px)!important}
html[data-splash][data-splash-live] .hero[data-ink-hero] :is(.hero-media-caption,.mobile-hero-meta,.passage-explore){z-index:192;opacity:var(--splash-details-opacity,0)!important;will-change:opacity}
.splash-scan{position:absolute;left:0;top:-22%;height:144%;width:1px;background:linear-gradient(transparent,#2859e8 20%,#2859e8 80%,transparent);box-shadow:0 0 5px #2859e833;will-change:transform,opacity}
.splash-scan i{position:absolute;width:5px;height:5px;border:1px solid #2859e8;background:#fafaf7;transform:rotate(-8deg)}
.splash-scan i:nth-child(1){left:5px;top:26%}.splash-scan i:nth-child(2){left:-8px;top:46%;width:3px;height:3px}.splash-scan i:nth-child(3){left:9px;top:67%}.splash-scan i:nth-child(4){left:-4px;top:80%;width:3px;height:3px}
@media(max-width:767px),(pointer:coarse) and (max-width:1024px){
 .splash-logo{left:var(--nano-ui-gutter,20px);top:calc(21px + env(safe-area-inset-top,0px));width:128px}
 .splash-scan i{width:3px;height:3px}
}
@media(prefers-reduced-motion:reduce){html[data-splash] .splash-screen{display:none!important}}
