@font-face{font-family:Plex;src:url(/assets/fonts/IBMPlexMono-Regular.woff2)format("woff2");font-weight:400;font-display:swap}@font-face{font-family:Plex;src:url(/assets/fonts/IBMPlexMono-Medium.woff2)format("woff2");font-weight:500;font-display:swap}:root{--void:#05060a;--bone:#d9dee3;--signal:#19e3d2;--wound:#ff2a4f;--ash:#5b6470;--edge:max(16px, env(safe-area-inset-left));--mono:"Plex", "Noto Sans Mono", "Noto Naskh Arabic", ui-monospace, monospace}*{box-sizing:border-box}html,body{background:var(--void);height:100%;color:var(--bone);font:400 12px/1.5 var(--mono);letter-spacing:.04em;cursor:url(/assets/icons/cursor.svg) 12 12,crosshair;-webkit-font-smoothing:antialiased;margin:0;overflow:hidden}button,a{font:inherit;color:inherit;cursor:inherit}#face,#fallback{opacity:.18;width:100%;height:100%;transition:opacity 1.5s;position:fixed;inset:0}#face{display:block}#fallback{background:var(--void) url(/assets/face/base.png) center 30% / cover no-repeat;filter:grayscale()contrast(1.3);display:none}body.no-webgl #face{display:none}body.no-webgl #fallback{display:block}body.entered #face,body.entered #fallback{opacity:1}#gate{z-index:10;background:radial-gradient(#05060a8c,#05060aeb 70%);flex-direction:column;justify-content:center;align-items:center;gap:28px;transition:opacity 1.2s,visibility 0s linear 1.2s;display:flex;position:fixed;inset:0}body.entered #gate{opacity:0;visibility:hidden}.sigil path{fill:none;stroke:currentColor;stroke-width:11px;stroke-linecap:square}#gate .sigil{width:72px;height:72px;color:var(--bone)}#gate .sigil.draw path{stroke-dasharray:1;stroke-dashoffset:1px;animation:2.4s cubic-bezier(.6,0,.2,1) forwards draw}@keyframes draw{to{stroke-dashoffset:0}}#enter{border:1px solid var(--bone);color:var(--bone);letter-spacing:.6em;text-indent:.6em;opacity:0;background:0 0;padding:14px 44px;font-size:13px;font-weight:500;transition:border-color .15s;animation:1s 1.6s forwards fade-in;position:relative}#enter span{display:inline-block;position:relative}#enter:hover,#enter:focus-visible{border-color:var(--signal)}#enter:hover span,#enter:focus-visible span{text-shadow:-2px 0 var(--wound), 2px 0 var(--signal)}#enter:focus-visible{outline:1px solid var(--signal);outline-offset:4px}#enter:active span{clip-path:inset(0 0 45%);transform:translate(3px)}.gate-line{color:var(--ash);letter-spacing:.14em;opacity:0;margin:0;font-size:11px;animation:1.4s 2.2s forwards fade-in}@keyframes fade-in{to{opacity:1}}.hud{z-index:5;opacity:0;transition:opacity 1.5s .8s;position:fixed}body.entered .hud{opacity:.7}#hud-tl{top:var(--edge);left:var(--edge);align-items:center;gap:10px;display:flex}#hud-tl .sigil{width:18px;height:18px}#hud-tl .sigil path{stroke-width:16px}.ticker{letter-spacing:.14em;font-weight:500}.live{color:var(--ash);align-items:center;gap:6px;display:inline-flex}.live i{background:var(--wound);border-radius:50%;width:6px;height:6px;animation:1.2s ease-in-out infinite pulse}@keyframes pulse{50%{opacity:.25}}.stats{top:var(--edge);right:var(--edge);text-align:right;gap:18px;margin:0;display:flex}.stats dt{color:var(--ash);letter-spacing:.14em;font-size:10px}.stats dd{font-variant-numeric:tabular-nums;margin:0}.stats .up{color:var(--signal)}.stats .down{color:var(--wound)}.controls{right:var(--edge);bottom:var(--edge);align-items:center;gap:16px;display:flex}.controls button,.controls a{letter-spacing:.14em;background:0 0;border:0;align-items:center;gap:6px;padding:4px 0;text-decoration:none;display:inline-flex}.controls svg{fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:square;stroke-linejoin:miter;width:16px;height:16px}.controls button:hover:not(:disabled),.controls a:not([aria-disabled=true]):hover{color:var(--signal)}.controls [disabled],.controls [aria-disabled=true]{color:var(--ash)}.controls :focus-visible{outline:1px solid var(--signal);outline-offset:3px}#mute .off,#mute[aria-pressed=true] .on{display:none}#mute[aria-pressed=true] .off{display:block}.witnesses{color:var(--ash);letter-spacing:.14em}.witnesses b{color:var(--bone);font-weight:500}.transcript{left:var(--edge);bottom:var(--edge);width:min(560px, calc(100vw - 2 * var(--edge) - 340px));pointer-events:none;flex-direction:column;gap:6px;min-width:260px;display:flex}body.entered .transcript{opacity:.85}.transcript .line{text-shadow:0 0 6px #05060ae6,0 0 2px #05060a;margin:0;line-height:1.55;transition:opacity .6s}.transcript .line[data-age="1"]{opacity:.6}.transcript .line[data-age="2"]{opacity:.38}.transcript .line[data-age="3"]{opacity:.2}.transcript .tag{color:var(--signal);opacity:.8;letter-spacing:.08em;font-size:10px}.transcript .line[lang=x-kenomic] .text{letter-spacing:.08em;font-style:italic}.transcript .tr{color:var(--ash);opacity:0;font-size:11px;animation:1.2s forwards fade-in;display:block}.chat{right:var(--edge);bottom:calc(var(--edge) + 40px);width:min(380px, calc(100vw - 2 * var(--edge)));font-family:var(--mono);grid-template-columns:92px 1fr auto;gap:6px;font-size:12px;display:grid}body.entered .chat{opacity:.9}.chat input,.chat button{font:inherit;color:var(--bone);background:#05060ab8;border:1px solid #d9dee338;border-radius:2px;min-width:0;padding:7px 8px}.chat input:focus{border-color:var(--signal);outline:none}.chat button{cursor:pointer;letter-spacing:.12em;color:var(--signal)}.chat button:disabled{color:var(--ash);cursor:default}.chat p{min-height:1em;color:var(--ash);grid-column:1/-1;margin:0;font-size:11px}body.stream .chat,body.stealth .chat{display:none}@media (max-width:640px){.chat{left:var(--edge);right:var(--edge);width:auto;bottom:calc(var(--edge) + 50px);grid-template-columns:74px 1fr auto}#hud-tl,.stats{top:max(12px, env(safe-area-inset-top))}.stats{gap:12px;font-size:11px}.stats div:nth-child(3){display:none}.controls{left:var(--edge);right:var(--edge);bottom:calc(var(--edge) + 18px);justify-content:space-between;gap:10px}.witnesses{font-size:10px}.transcript{width:auto;min-width:0;right:var(--edge);bottom:calc(var(--edge) + 128px);font-size:11px}}@media (max-width:380px){.stats div:nth-child(2){display:none}}@media (prefers-reduced-motion:reduce){#gate .sigil.draw path{stroke-dashoffset:0;animation:none}.live i{animation:none}}body.stream,body.stream *{cursor:none!important}body.stream #mute{display:none}body.stealth #hud-tl,body.stealth #hud-tr,body.stealth #hud-br>:not(#mute),body.stream #hud-br{display:none!important}
