:root{--bg: #0f1216;--panel: #171b21;--line: #2a313a;--ink: #e6e2d8;--dim: #8d949e;--acc: #7ff0ff;--warm: #ffb85a;--red: #d2453a;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--bg);color:var(--ink);font:13px/1.4 Inter,system-ui,sans-serif}#app{display:grid;grid-template-columns:400px 1fr;height:100vh}#panel{overflow-y:auto;border-right:1px solid var(--line);background:var(--panel);padding:12px 14px 40px}#stage{position:relative;min-width:0}#c{width:100%;height:100%;display:block;outline:none}#unlock{position:absolute;top:14px;left:50%;transform:translate(-50%);background:var(--warm);color:#1a1206;padding:6px 14px;border-radius:20px;font-weight:600;pointer-events:none}#unlock.hide{display:none}#dbgToggle{position:absolute;right:10px;top:10px;z-index:2}#debug.hide{display:none}#debug{position:absolute;right:10px;top:42px;width:360px;max-height:calc(100% - 100px);overflow:auto;margin:0;padding:8px 10px;background:#0a0c0fd1;border:1px solid var(--line);border-radius:6px;font:11px/1.35 IBM Plex Mono,monospace;color:#c9d1d9;white-space:pre}#legend{position:absolute;left:10px;bottom:10px;max-width:min(560px,calc(100% - 20px));color:var(--dim);font-size:12px;background:#0a0c0f99;padding:4px 8px;border-radius:4px}h1{font-size:15px;margin:0 0 2px;letter-spacing:.02em}.sub{color:var(--dim);margin-bottom:10px}section{border-top:1px solid var(--line);padding:10px 0 6px}h2{font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--dim);margin:0 0 8px;font-weight:600}.row{display:flex;align-items:center;gap:8px;margin:4px 0}.row label{width:78px;color:var(--dim);flex:none}.row input[type=range]{flex:1;accent-color:var(--acc)}.row .val{width:48px;text-align:right;font-family:IBM Plex Mono,monospace;color:var(--ink)}.btns{display:flex;flex-wrap:wrap;gap:5px}button{background:#222831;color:var(--ink);border:1px solid #333c47;border-radius:4px;padding:4px 8px;font:inherit;font-size:12px;cursor:pointer}button:hover{border-color:var(--acc)}button.on{background:#11343a;border-color:var(--acc);color:var(--acc)}button.missing{opacity:.45;text-decoration:line-through}select,input[type=number]{background:#222831;color:var(--ink);border:1px solid #333c47;border-radius:4px;padding:3px 6px;font:inherit}.grp{color:var(--dim);font-size:11px;margin:6px 0 3px}.chk{display:flex;align-items:center;gap:6px}@media(max-width:800px){#app{grid-template-columns:1fr;grid-template-rows:55vh 45vh}#panel{order:2;border-right:0;border-top:1px solid var(--line)}}
