*,:before,:after{box-sizing:border-box}html,body{background:var(--bg,#0b0b0c);height:100%;color:var(--fg,#ececec);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;margin:0;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;overflow:hidden}canvas.stage{touch-action:none;outline:none;width:100vw;height:100vh;display:block;position:fixed;inset:0}.ui{pointer-events:none;z-index:1;position:fixed;inset:0}.ui a,.ui button{pointer-events:auto}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.fallback{text-align:center;z-index:0;justify-content:center;align-items:center;padding:24px;display:none;position:fixed;inset:0}.no-gl .fallback{display:flex}.no-gl canvas.stage{display:none}.hint{transition:opacity 1.2s}.has-moved .hint{opacity:0}@media (prefers-reduced-motion:reduce){.hint{transition:none}}:root{--bg:#010603;--phos:#5dff95;--phos-hi:#c8ffd9;--phos-dim:#2a9c55;--phos-faint:#5dff9529;--glow:0 0 2px #78ffaae6, 0 0 9px #3cff828c, 0 0 22px #28ff6e38;--mono:ui-monospace, "Cascadia Mono", "Cascadia Code", Consolas, "SFMono-Regular", Menlo, "Liberation Mono", monospace;--fg:var(--phos);--pad:clamp(14px, 3vw, 40px)}body{font-family:var(--mono)}.crt-text{color:var(--phos);font:400 14px/1.45 var(--mono);text-shadow:var(--glow);letter-spacing:.02em;animation:6s step-end infinite flicker}@keyframes flicker{0%,to{opacity:1}47%{opacity:.94}48%{opacity:1}83%{opacity:.97}84%{opacity:1}}.bar{padding:10px var(--pad);padding-top:max(10px, env(safe-area-inset-top));border-bottom:1px solid var(--phos-faint);white-space:nowrap;background:linear-gradient(#010a04d1,#010a048c);align-items:center;gap:18px;display:flex;position:absolute;top:0;left:0;right:0}.bar .title{background:var(--phos);color:#021006;letter-spacing:.14em;text-shadow:none;padding:1px 8px;font-weight:700;box-shadow:0 0 12px #50ff8c8c}.bar .cfg{color:var(--phos-dim)}.leds{gap:12px;margin-left:auto;font-size:11px;display:flex}.led{color:var(--phos-dim);align-items:center;gap:5px;display:inline-flex}.led i{background:#0b2614;border-radius:50%;width:7px;height:7px;box-shadow:inset 0 0 2px #000}.led sup{opacity:.6;font-size:8px}.led.on{color:var(--phos)}.led.on i{background:var(--phos-hi);box-shadow:0 0 4px var(--phos), 0 0 10px #50ff8ccc}.clock{color:var(--phos-dim);text-align:right;min-width:15ch}.term{left:var(--pad);pointer-events:auto;cursor:text;flex-direction:column;gap:4px;width:min(60ch,46vw);display:flex;position:absolute;top:64px;bottom:64px;overflow:hidden}.term:before{content:"";pointer-events:none;width:calc(var(--pad) + min(60ch, 46vw) + 120px);z-index:-1;background:linear-gradient(90deg,#0004019e 0,#00040173 70%,#0000);position:fixed;top:0;bottom:0;left:0}.log{flex-direction:column;flex:0 auto;justify-content:flex-end;min-height:0;display:flex;overflow:hidden}.log div{white-space:pre-wrap;word-break:break-word;flex:none;min-height:1.45em}.log div.tbl{white-space:pre;text-overflow:ellipsis;word-break:normal;overflow:hidden}.log div.tbl .dir{text-align:center;width:3ch;display:inline-block}@media (max-width:480px){.log div.tbl{font-size:11.5px}}.log .sys{color:var(--phos-dim)}.log .hi{color:var(--phos-hi)}.log .tx:before{content:"▸";color:var(--phos-dim)}.log a{pointer-events:auto;color:var(--phos-hi);text-underline-offset:3px;text-decoration:underline}.prompt{pointer-events:auto;cursor:text;align-items:baseline;display:flex;position:relative}.prompt[hidden],.monitor[hidden]{display:none}.prompt .ps{color:var(--phos-dim);flex:none;margin-right:1ch}.prompt:focus-within .ps{color:var(--phos)}.prompt input{min-width:0;color:var(--phos-hi);font:inherit;letter-spacing:inherit;text-shadow:inherit;caret-color:var(--phos);background:0 0;border:0;outline:none;flex:1;margin:0;padding:0}.prompt .cursor{top:.2em;left:calc(4 * (1ch + .02em) + 1ch + var(--len,0) * (1ch + .02em));position:absolute}.prompt input:focus~.cursor{display:none}.prompt:focus-within{box-shadow:inset 0 -1px 0 var(--phos-faint)}.cursor{vertical-align:-.18em;background:var(--phos);width:.62em;height:1.05em;box-shadow:0 0 8px var(--phos);margin-left:1px;animation:1.06s step-end infinite blink;display:inline-block}@keyframes blink{50%{opacity:0}}.monitor{border-top:1px dashed var(--phos-faint);margin-top:auto;padding-top:8px}.mon-head{color:var(--phos-dim);justify-content:space-between;gap:1ch;font-size:12px;display:flex}#decode{color:var(--phos-hi);white-space:pre}.mon-head .short{display:none}#hex{font:inherit;white-space:pre;min-height:8.7em;margin:4px 0 0;font-size:13px}.menu{padding:12px var(--pad);padding-bottom:max(12px, env(safe-area-inset-bottom));border-top:1px solid var(--phos-faint);background:linear-gradient(#010a0480,#010a04d9);flex-wrap:wrap;align-items:center;gap:6px 22px;display:flex;position:absolute;bottom:0;left:0;right:0}.menu a,.menu button{font:inherit;color:var(--phos);text-shadow:inherit;cursor:pointer;background:0 0;border:0;margin:0 -4px;padding:2px 4px;text-decoration:none}.menu .hwb{color:var(--phos-hi);font-weight:700}.menu .dim{color:var(--phos-dim);font-weight:400}.menu a:hover,.menu a:focus-visible,.menu button:hover,.menu button:focus-visible{background:var(--phos);color:#021006;text-shadow:none;outline:none;box-shadow:0 0 14px #50ff8c99}.menu a:hover .dim,.menu a:focus-visible .dim{color:#04401a}.fallback{color:var(--phos);text-shadow:var(--glow);font-family:var(--mono)}.fallback a{color:var(--phos-hi)}@media (max-width:900px){.leds .led sup,.clock{display:none}.bar{gap:12px}.leds{gap:8px;font-size:10px}}@media (max-width:640px){.crt-text{font-size:12px}.bar .cfg{display:none}.leds{gap:6px;font-size:9px}.led{gap:3px}.led i{width:6px;height:6px}.term{width:auto;height:40vh;inset:46px 12px auto}.term:before{background:linear-gradient(#00040199 0,#00040173 75%,#0000);width:auto;height:calc(40vh + 56px);bottom:auto;right:0}#hex{min-height:4.35em;font-size:11px}.mon-head{font-size:10px}.mon-head .long{display:none}.mon-head .short{display:inline}.menu{gap:4px 16px}.menu .dim{display:none}}@media (prefers-reduced-motion:reduce){.crt-text,.cursor{animation:none}}
