:root{--bg:#1c1f24;--panel:rgba(250,248,242,0.96);--ink:#23262b;--muted:#6b6f76;--line:#d9d4c7;--accent:#2f5d8a}*{box-sizing:border-box}body,html{margin:0;height:100%;background:var(--bg);overflow:hidden;font:14px/1.4 Courier New,ui-monospace,monospace;color:var(--ink)}canvas{display:block}.loading{color:#eee;display:grid;place-items:center;height:100vh}.stage{inset:0}.hud,.stage{position:fixed}.hud{pointer-events:none;z-index:5}.hud>*{pointer-events:auto}.card{background:var(--panel);border:1px solid var(--line);border-radius:6px;box-shadow:0 4px 18px rgba(0,0,0,.25);padding:10px 12px}.top-left{top:12px;left:12px;width:min(340px,calc(100vw - 24px));display:grid;grid-gap:8px;gap:8px;max-height:calc(100vh - 80px);overflow:auto}.brand{font-weight:700;letter-spacing:.5px;font-size:15px}.sub{color:var(--muted);font-size:12px}.badge{display:inline-block;font-size:11px;padding:1px 6px;border-radius:3px;color:#fff;margin-left:6px}.badge.live{background:#2e7d4f}.badge.demo{background:#b5651d}.top-right{top:12px;right:12px;display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end;max-width:calc(100vw - 24px)}button{font:inherit;font-size:13px;cursor:pointer;border:1px solid #b9b2a2;background:#fffdf7;color:var(--ink);border-radius:4px;padding:6px 10px}button:hover{background:#f1ead8}button.on{background:var(--accent);color:#fff;border-color:var(--accent)}button:focus-visible{outline:2px solid #f4b400;outline-offset:2px}h3{margin:0 0 6px;font-size:13px;text-transform:uppercase;letter-spacing:1px}.task{display:flex;gap:6px;align-items:baseline;padding:3px 0;border-top:1px dashed var(--line)}.task:first-of-type{border-top:0}.chip{font-size:10px;padding:1px 5px;border-radius:3px;color:#fff;white-space:nowrap}.commit{font-size:12px;padding:2px 0}.commit code{color:var(--accent)}.bottom{bottom:12px;left:50%;transform:translateX(-50%);text-align:center;font-size:12px;max-width:calc(100vw - 24px)}.hint{background:#23262b;color:#f6f1e3;padding:6px 12px;border-radius:4px;display:inline-block}.near{background:#f4b400;color:#222;font-weight:700;margin-bottom:6px}.panel{top:64px;right:12px;width:min(380px,calc(100vw - 24px));max-height:calc(100vh - 140px);overflow:auto}.panel .row{display:flex;justify-content:space-between;gap:8px;align-items:center}.log{margin:8px 0 0;padding:0;list-style:none;font-size:12px}.log li{padding:4px 0;border-top:1px dashed var(--line)}.log time{color:var(--muted);margin-right:6px}.modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:20;display:grid;place-items:center;padding:16px}.modal{width:min(820px,100%);max-height:86vh;overflow:auto;background:#fbf8ef;border-radius:6px;padding:18px}.modal pre{white-space:pre-wrap;font-size:13px}.bars:after,.bars:before{content:"";position:fixed;left:0;right:0;height:9vh;background:#000;z-index:10}.bars:before{top:0}.bars:after{bottom:0}.lower-third{position:fixed;left:6vw;bottom:13vh;z-index:11;color:#fff;max-width:70vw}.lower-third .nm{background:#fff;color:#111;font:700 20px/1.2 Arial,sans-serif;padding:6px 12px;display:inline-block}.lower-third .rl{background:rgba(0,0,0,.75);font:15px/1.3 Arial,sans-serif;padding:5px 12px}.lower-third .q{margin-top:8px;font:italic 18px/1.4 Georgia,serif;text-shadow:0 2px 6px #000}.rec{position:fixed;top:11vh;right:4vw;z-index:11;color:#fff;font:700 14px Arial}.rec:before{content:"● ";color:#e53935;animation:blink 1s steps(1) infinite}@keyframes blink{50%{opacity:0}}.labels{position:fixed;inset:0;z-index:3;overflow:hidden}.label,.labels{pointer-events:none}.label{position:absolute;left:0;top:0;display:none;white-space:nowrap;font:11px/1.2 Arial,sans-serif;background:rgba(255,255,255,.92);border-radius:10px;padding:2px 8px;border:2px solid #999}.label b{font-weight:700}@media (max-width:640px){.top-left{width:calc(100vw - 24px);max-height:38vh}.top-right{top:auto;bottom:56px}.panel{top:auto;bottom:100px;max-height:45vh}}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:16px;overflow:auto}body:has(.login-wrap),html:has(.login-wrap){overflow:auto}.login{width:min(360px,100%);display:grid;grid-gap:8px;gap:8px}.login input{font:inherit;padding:8px;border:1px solid #b9b2a2;border-radius:4px;background:#fff}.login .err{color:#b3261e;margin:0}