:root{--bg: #0b0c0e;--panel: #12141a;--border: #2a2e38;--text: #e8eaef;--muted: #8b93a7;--accent: #f5d547;--accent-dim: #b89a20;--danger: #ff6b6b;--radius: 8px;--font: "IBM Plex Sans", "Segoe UI", system-ui, sans-serif;--mono: "IBM Plex Mono", ui-monospace, monospace}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--bg);color:var(--text);font-family:var(--font);overflow:hidden}#app{display:grid;grid-template-columns:minmax(280px,340px) 1fr;height:100%}@media(max-width:900px){#app{grid-template-columns:1fr;grid-template-rows:auto 1fr}}aside{background:var(--panel);border-right:1px solid var(--border);padding:14px 14px 24px;overflow-y:auto}h1{margin:0 0 4px;font-size:15px;letter-spacing:.04em;text-transform:uppercase;color:var(--accent)}.sub{margin:0 0 14px;font-size:12px;color:var(--muted)}.hud{font-family:var(--mono);font-size:11px;line-height:1.45;background:#0a0b0f;border:1px solid var(--border);border-radius:var(--radius);padding:8px 10px;margin-bottom:14px;white-space:pre-wrap;color:#c9d0e0}.section{margin:12px 0 6px;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--accent-dim)}.row{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;margin:6px 0;font-size:12px}.row label{color:var(--text)}.row .val{font-family:var(--mono);font-size:11px;color:var(--accent);min-width:3.2em;text-align:right}input[type=range]{width:100%;accent-color:var(--accent)}.toggle{display:flex;align-items:center;gap:8px;font-size:12px;margin:8px 0}.toggle input{accent-color:var(--accent)}.stage{position:relative;background:#000;display:flex;align-items:center;justify-content:center;min-height:240px}canvas#view{width:100%;height:100%;display:block;object-fit:contain;background:#000}.banner{position:absolute;inset:0;display:none;align-items:center;justify-content:center;text-align:center;padding:24px;background:#000000d1;color:var(--danger);font-size:16px;z-index:2}.banner.show{display:flex}button.primary{width:100%;margin-top:8px;padding:8px 12px;border-radius:var(--radius);border:1px solid var(--accent-dim);background:#1a1608;color:var(--accent);font-weight:600;cursor:pointer}button.primary:hover{background:#2a220c}
