@font-face { font-family: 'VT323'; src: url('fonts/vt323-latin.woff2') format('woff2'); font-style: normal; font-weight: 400; font-display: swap; }
.site-loader { position: fixed; inset: 0; z-index: 1000; display: block; padding: 0; background: #040604; color: #5dff9a; transition: opacity 220ms ease; }
.site-loader[hidden] { display: none !important; }
.loader-accessible { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
.loader-screen { width: 100%; height: 100%; position: relative; border-radius: 0; overflow: hidden; background: #040604; box-shadow: inset 0 0 40px #000e; font: 400 clamp(16px, 1.65vw, 24px)/1.2 'VT323', ui-monospace, monospace; }
.loader-terminal { position: absolute; inset: 0; display: flex; flex-direction: column; gap: 10px; padding: max(24px, env(safe-area-inset-top)) max(24px, env(safe-area-inset-right)) max(24px, env(safe-area-inset-bottom)) max(24px, env(safe-area-inset-left)); text-shadow: 0 0 2px currentColor, 0 0 10px currentColor; }
.loader-clock { display: flex; justify-content: flex-end; gap: 0; opacity: .6; font-size: 15px; letter-spacing: .08em; }
.loader-output { flex: 1; min-height: 0; overflow: hidden; display: flex; flex-direction: column; justify-content: flex-end; letter-spacing: .03em; }
#loader-lines { flex-shrink: 0; }
#loader-lines > div, .loader-typing { white-space: pre; min-height: 1.2em; }
#loader-lines > div { opacity: .8; }
#loader-lines > .loader-heading { opacity: 1; }
.loader-cursor { animation: loader-blink 1.06s steps(2, start) infinite; }
.loader-glitch { position: absolute; inset: 0; z-index: 2; display: flex; align-items: center; justify-content: center; padding: 16px; background: #040604; text-align: center; font-size: 44px; line-height: 1.05; letter-spacing: .06em; text-shadow: 0 0 4px currentColor, 0 0 24px currentColor; }
.loader-flicker, .loader-roll, .loader-screen::before, .loader-screen::after { position: absolute; inset: 0; pointer-events: none; }
.loader-flicker { background: currentColor; animation: loader-flicker .35s steps(2) infinite; }
.loader-roll { bottom: auto; height: 22%; background: linear-gradient(to bottom, transparent, #ffffff0d, transparent); animation: loader-roll 7s linear infinite; }
.loader-screen::before { content: ''; z-index: 3; background: repeating-linear-gradient(to bottom, #0006 0, #0006 1px, transparent 1px, transparent 3px); }
.loader-screen::after { content: ''; z-index: 4; background: radial-gradient(ellipse at center, transparent 45%, #000d 100%); }
.site-loader.loader-exit { opacity: 0; pointer-events: none; }
body.site-loading > .room-header, body.site-loading > main { visibility: hidden; }
@keyframes loader-blink { 50% { opacity: 0; } }
@keyframes loader-flicker { 0%, 100% { opacity: .025; } 50% { opacity: .045; } }
@keyframes loader-roll { from { transform: translateY(-120%); } to { transform: translateY(520%); } }
@media (max-width: 480px) {
 .loader-terminal { padding: max(16px, env(safe-area-inset-top)) max(12px, env(safe-area-inset-right)) max(16px, env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left)); }
 .loader-screen { font-size: clamp(12px, 3.5vw, 16px); }
 .loader-output { letter-spacing: 0; }
 .loader-glitch { font-size: 36px; }
}
@media (prefers-reduced-motion: reduce) {
 .site-loader { transition: none; }
 .loader-cursor, .loader-flicker, .loader-roll { animation: none; }
 .loader-flicker, .loader-roll, .loader-glitch { display: none; }
}
