body.awaiting-entry > :not(#entryGate):not(#space):not(noscript):not(script) { visibility: hidden; }
#entryGate[hidden], #entryRetry[hidden] { display: none; }
#entryGate { position:fixed; inset:0; z-index:9999; overflow:hidden; background:#050611; color:#a4efd5; font-family:'IBM Plex Mono',monospace; opacity:1; transition:opacity .6s ease; }
#entryGate.entry-revealed { opacity:0; pointer-events:none; }
/* Pre-rendered pixel-art pulsar (scripts/render-entry-pulsar.py): hardware-decoded video,
   never a second WebGL scene. The page colour is the art's own space colour, so the
   square frame vanishes; the mask only hides codec drift at the very edge. */
.entry-cosmos { position:absolute; inset:0; overflow:hidden; background:#050611; --entry-art:192px; }
.entry-pulsar { position:absolute; left:50%; top:49%; transform:translate(-50%,-50%); width:min(94vh,100vw); height:min(94vh,100vw); object-fit:contain; image-rendering:crisp-edges; image-rendering:pixelated; -webkit-mask-image:radial-gradient(circle closest-side,#000 94%,transparent); mask-image:radial-gradient(circle closest-side,#000 94%,transparent); }
.entry-brand { position:absolute; left:0; right:0; top:max(7%,30px); text-align:center; padding:0 24px; color:#e0fff7; }
.entry-wordmark { display:block; font-family:Arial,sans-serif; font-weight:400; font-size:clamp(26px,3.6vw,48px); letter-spacing:.27em; padding-left:.27em; }
.entry-wordmark-sub { display:block; font-size:10px; letter-spacing:.65em; padding-left:.65em; margin-top:15px; color:#8bbcac; }
.entry-loading { position:absolute; bottom:max(7%,env(safe-area-inset-bottom)); width:min(360px,calc(100% - 48px)); left:50%; transform:translateX(-50%); text-align:center; }
#entryStatus { font-size:12px; line-height:1.7; color:#93b5c5; }
.entry-scan { height:1px; margin:24px auto; width:110px; background:#18303c; overflow:hidden; }
.entry-scan::after { content:''; display:block; width:45%; height:100%; background:#c5ffe9; animation:entry-scan 1.8s ease-in-out infinite; }
.entry-failed .entry-scan { display:none; }
#entryRetry { font:inherit; font-size:12px; padding:12px 18px; border:1px solid #8ccab6; border-radius:5px; color:#c5ffe9; background:#10252e; cursor:pointer; }
#entryRetry:focus-visible,.first-exploration button:focus-visible { outline:2px solid #fff; outline-offset:4px; }
@keyframes entry-drift { from{transform:scale(1.1);opacity:.2} to{transform:scale(1);opacity:.9} }
@keyframes entry-earth { from{transform:translate(-50%,6%);opacity:.4} to{transform:translate(-50%,0);opacity:1} }
@keyframes entry-scan { from{transform:translateX(-110%)} to{transform:translateX(340%)} }
@media(prefers-reduced-motion:reduce) { #entryGate{transition:none} .entry-scan::after{animation:none} }
.first-exploration { position: fixed; bottom: max(96px, calc(env(safe-area-inset-bottom) + 80px)); left: 50%; transform: translateX(-50%); z-index: 95; width: min(530px, calc(100vw - 32px)); box-sizing: border-box; padding: 22px 26px; border: 1px solid #5f9c91; border-radius: 8px; background: #0a151af5; box-shadow: 0 14px 60px #0009; color: #dce9ed; font-family: 'IBM Plex Mono', monospace; }
.first-exploration h2 { font-size: 20px; font-weight: 500; margin: 10px 32px 10px 0; }
.first-exploration p { font-size: 12px; line-height: 1.7; margin: 0 0 12px; }
.first-exploration .tour-progress { color: #95cbbb; font-size: 10px; letter-spacing: .04em; padding-right: 25px; }
.tour-close { position: absolute; top: 8px; right: 8px; width: 40px; height: 40px; padding: 0; border: 0; background: transparent; color: #c6d5d8; font: inherit; font-size: 24px; cursor: pointer; }
.tour-actions { display: flex; justify-content: flex-end; }
.tour-next { padding: 10px 14px; min-height: 42px; border: 1px solid #66a593; background: #15382f; color: #baf3de; border-radius: 4px; font: inherit; font-size: 12px; cursor: pointer; }

@media(max-width:620px) { .entry-brand{top:12%} .entry-pulsar{width:145vw;height:145vw;max-width:85vh;max-height:85vh;top:49%} .first-exploration{padding:16px 18px;bottom:max(152px,calc(env(safe-area-inset-bottom) + 144px))} .first-exploration h2{font-size:17px} }
@media(max-height:560px) { .entry-brand{top:6%}.entry-wordmark{font-size:22px}.entry-wordmark-sub{margin-top:7px}.entry-pulsar{width:90vh;height:90vh} .entry-loading{bottom:5%} .first-exploration{bottom:60px;max-height:calc(100dvh - 120px);overflow:auto} }
/* Whole device pixels per art pixel: the 192 px art grid in CSS px for the common
   pixel ratios (192px already works for 1x, 2x, 3x and 4x screens). */
@media(resolution:1.25dppx) { .entry-cosmos{--entry-art:153.6px} }
@media(resolution:1.5dppx) { .entry-cosmos{--entry-art:128px} }
@media(resolution:1.75dppx) { .entry-cosmos{--entry-art:calc(192px / 1.75)} }
@media(resolution:2dppx) { .entry-cosmos{--entry-art:96px} }
@media(resolution:2.25dppx) { .entry-cosmos{--entry-art:calc(192px / 2.25)} }
@media(resolution:2.5dppx) { .entry-cosmos{--entry-art:76.8px} }
@media(resolution:2.625dppx) { .entry-cosmos{--entry-art:calc(192px / 2.625)} }
@media(resolution:2.75dppx) { .entry-cosmos{--entry-art:calc(192px / 2.75)} }
@media(resolution:3dppx) { .entry-cosmos{--entry-art:64px} }
@media(resolution:4dppx) { .entry-cosmos{--entry-art:48px} }
@supports (width:round(nearest,10px,3px)) {
  .entry-pulsar { width:round(nearest,min(94vh,100vw),var(--entry-art)); height:round(nearest,min(94vh,100vw),var(--entry-art)); }
  @media(max-width:620px) { .entry-pulsar{width:round(nearest,min(145vw,85vh),var(--entry-art));height:round(nearest,min(145vw,85vh),var(--entry-art));max-width:none;max-height:none} }
  @media(max-height:560px) { .entry-pulsar{width:round(nearest,90vh,var(--entry-art));height:round(nearest,90vh,var(--entry-art));max-width:none;max-height:none} }
}
