:root{--bg:#0d1218;--pn:#141c26;--ln:#27364a;--tx:#e6edf5;--mu:#93a4ba;--ac:#e8b84a;--ok:#3fb950;--bad:#f85149;color-scheme:dark}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--bg);color:var(--tx);font:13px/1.4 system-ui,"Segoe UI",Roboto,sans-serif}
body{height:100vh;height:100dvh;display:flex;flex-direction:column;overflow:hidden}
#app{flex:1 1 auto;min-height:0;display:flex}
#stage{flex:1 1 auto;min-width:0;min-height:0;position:relative;background:#a9c3d8;overflow:hidden}
#stage canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none}
#hud{position:absolute;left:8px;top:8px;display:flex;gap:6px;flex-wrap:wrap;pointer-events:none;max-width:calc(100% - 16px)}
.pill{background:rgba(10,16,24,.78);border:1px solid var(--ln);border-radius:8px;padding:4px 9px;font-size:12px;font-variant-numeric:tabular-nums;color:var(--tx)}
.pill b{color:var(--ac)}
#hint{position:absolute;left:8px;bottom:8px;font-size:11px;color:#10202e;background:rgba(255,255,255,.6);padding:2px 7px;border-radius:6px;pointer-events:none}
#panel{flex:0 0 350px;overflow-y:auto;background:var(--pn);border-left:1px solid var(--ln);padding:10px 12px 18px}
h1{font-size:15px;margin:0 0 6px}
.row{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}
button,.chip{background:#1d2a3a;color:var(--tx);border:1px solid var(--ln);border-radius:7px;padding:6px 10px;font:inherit;cursor:pointer;min-height:32px}
button:hover{border-color:var(--ac)}
button.on,.chip.on{background:#4a3a0e;border-color:var(--ac)}
.chip{padding:4px 8px;font-size:12px}
#ro{display:grid;grid-template-columns:1fr 1fr;gap:3px 10px;margin:8px 0;padding:8px;background:#0b1118;border:1px solid var(--ln);border-radius:8px}
#ro div{display:flex;justify-content:space-between;gap:6px;color:var(--mu);font-size:12px}
#ro b{color:var(--tx);font-variant-numeric:tabular-nums;font-weight:600}
details.grp{border:1px solid var(--ln);border-radius:8px;margin:6px 0;padding:0 8px 4px;background:#101820}
details.grp>summary,details.sci>summary{cursor:pointer;padding:7px 0;font-weight:600;color:var(--tx)}
label.sl{display:block;margin:6px 0}
label.sl .t{display:flex;justify-content:space-between;color:var(--mu);font-size:12px}
label.sl .t b{color:var(--ac);font-weight:600;font-variant-numeric:tabular-nums}
input[type=range]{width:100%;accent-color:var(--ac);height:22px;margin:2px 0 0}
.ck{font-size:12px;margin:5px 0;padding:5px 7px;border-radius:6px;border:1px solid var(--ln)}
.ck.ok b{color:var(--ok)}.ck.bad b{color:var(--bad)}.ck.sk{color:var(--mu)}
.ck small{color:var(--mu)}
details.sci{margin:8px 0}
details.sci p{margin:6px 0;color:#c4d0df}
#exp{margin:6px 0;padding:8px;border:1px dashed var(--ln);border-radius:8px;font-size:12px;color:#c4d0df}
canvas#graph{width:100%;height:96px;background:#0b1118;border:1px solid var(--ln);border-radius:8px;display:block}
h2{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--mu);margin:12px 0 4px}
@media(max-width:760px){#app{flex-direction:column}#stage{flex:0 0 56%}#panel{flex:1 1 auto;border-left:0;border-top:1px solid var(--ln)}h1{display:none}}
