@font-face{font-family:'PN Pixel';src:url('assets/fonts/press-start-2p.woff2') format('woff2'),url('assets/fonts/press-start-2p.ttf') format('truetype');font-weight:400;font-style:normal;font-display:swap}
html:not(.pn-welcome-cooldown) body:has(#pn-welcome[open]){overflow:hidden}
#pn-welcome{position:fixed;inset:0;margin:0!important;width:100vw!important;max-width:none!important;height:100dvh!important;max-height:none!important;padding:0!important;border:0!important;border-radius:0!important;outline:0!important;box-shadow:none!important;background:#000!important;background-image:none!important;color:#fff;overflow:hidden;z-index:2147483647}
#pn-welcome::backdrop{background:#000;backdrop-filter:none}
#pn-welcome canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
#pn-welcome{transition:opacity .35s ease}
#pn-welcome .pn-welcome-vortex{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .4s ease;pointer-events:none;z-index:1}
#pn-welcome.pn-vortex-playing .pn-welcome-vortex{opacity:1}
#pn-welcome .pn-welcome-copy{z-index:2}
#pn-welcome .pn-welcome-copy{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:24px;background:radial-gradient(ellipse at center,#000b 0%,#0005 42%,transparent 75%);opacity:0;visibility:hidden;transition:opacity .6s ease,visibility .6s}
#pn-welcome.pn-welcome-ready .pn-welcome-copy{opacity:1;visibility:visible}
#pn-welcome .pn-welcome-kicker{font:400 clamp(10px,1.5vw,18px)/1.8 'PN Pixel',monospace;letter-spacing:.04em;text-transform:uppercase;color:#dab0ff;margin-bottom:20px}
#pn-welcome h2{max-width:100%;font:400 clamp(18px,4vw,54px)/1.6 'PN Pixel',monospace;letter-spacing:0;text-transform:uppercase;color:#fff;text-shadow:3px 3px 0 #6b1995,0 0 28px #bc42ff80;text-wrap:balance}
#pn-welcome button{margin-top:32px;padding:18px 22px;border:1px solid #bc42ff;border-radius:0;background:#bc42ff24;color:#f4e6ff;font:400 clamp(10px,1.2vw,14px)/1.6 'PN Pixel',monospace;letter-spacing:0;text-transform:uppercase;box-shadow:0 0 24px #bc42ff25}
#pn-welcome button:hover{background:#bc42ff45}
#pn-welcome button:focus-visible{outline:2px solid #fff;outline-offset:5px}
#pn-welcome .pn-welcome-hint{margin-top:16px;font:400 clamp(8px,1vw,10px)/1.8 'PN Pixel',monospace;color:#c5adcf;letter-spacing:0}
@media(prefers-reduced-motion:reduce){#pn-welcome .pn-welcome-copy{transition:none}}

#pn-welcome .pn-welcome-copy[hidden]{display:none!important}

html.pn-welcome-cooldown #pn-welcome{display:none!important}

#pn-welcome .pn-welcome-copy{transition:opacity .3s ease,visibility .3s,transform .3s}
#pn-welcome.pn-welcome-entering .pn-welcome-copy{opacity:0;visibility:hidden;transform:scale(1.15);pointer-events:none}
#pn-welcome.pn-welcome-entering{pointer-events:none}
#pn-welcome.pn-full-effects .pn-welcome-copy{transition:opacity .3s ease,visibility .3s,transform .3s}
@media(prefers-reduced-motion:reduce){#pn-welcome:not(.pn-full-effects) .pn-welcome-copy{transition:none}#pn-welcome:not(.pn-full-effects){transition:opacity .18s ease}}

/* Matrix characters converge while the space hub emerges underneath. */
#pn-welcome.pn-matrix-pulling{transition:none!important;background:transparent!important}
#pn-welcome.pn-matrix-pulling::backdrop{background:transparent}
html.pn-hub-awaiting #pn-hud,html.pn-hub-awaiting .pn-space-feature{opacity:0}
html.pn-hub-arriving #pn-hud{animation:pn-hub-emerge .7s .55s both}
html.pn-hub-arriving .pn-space-feature{animation:pn-hub-emerge .8s .7s both}
@keyframes pn-hub-emerge{from{opacity:0;translate:0 10px}to{opacity:1;translate:0 0}}
