:root{--bg:#0d141c;--bg2:#141e29;--bg3:#1b2836;--line:#2a3a4c;--text:#e6edf5;--soft:#b3c2d3;--muted:#7f93a8;--accent:#ff8a3d;--blue:#4cb0ff;--green:#4fd18b;--red:#ff5d5d}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--bg);color:var(--text);font:14px/1.45 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
body{display:flex;flex-direction:column;min-height:100dvh;overflow-x:hidden}
.top{padding:8px 14px;border-bottom:1px solid var(--line);background:var(--bg2)}
.top h1{margin:0;font-size:16px;font-weight:700}
.top h1 span{font-weight:400;color:var(--muted);font-size:12px;margin-left:8px}
.layout{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(340px,1fr);flex:1;min-height:0;height:calc(100dvh - 38px)}
.stage{position:relative;min-height:320px;background:#02040a;overflow:hidden}
#c{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none}
.hud{position:absolute;left:8px;top:8px;display:grid;grid-template-columns:repeat(3,auto);gap:4px;pointer-events:none}
.cell{background:rgba(10,18,28,.72);border:1px solid rgba(255,255,255,.12);border-radius:6px;padding:3px 8px;min-width:78px;backdrop-filter:blur(3px)}
.cell b{display:block;font-size:10px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.cell i{font:600 16px 'JetBrains Mono',ui-monospace,monospace;font-style:normal;color:var(--text)}
.cell u{text-decoration:none;font-size:10px;color:var(--muted);margin-left:3px}
.legend{position:absolute;right:8px;top:8px;background:rgba(10,18,28,.72);border:1px solid rgba(255,255,255,.12);border-radius:6px;padding:3px 9px;font-size:12px;pointer-events:none}
.la,.lb{display:inline-block;width:18px;text-align:center;border-radius:4px;font-weight:700;color:#10161d}
.la{background:var(--accent)}.lb{background:var(--blue)}
.status{position:absolute;left:8px;bottom:8px;max-width:70%;background:rgba(10,18,28,.78);border:1px solid rgba(255,255,255,.12);border-radius:6px;padding:4px 10px;font-size:12px;pointer-events:none}
.status.bad{border-color:var(--red);color:#ffd0d0}
.touch{position:absolute;right:8px;bottom:8px;display:grid;grid-template-columns:repeat(2,auto);gap:5px}
.touch button{background:rgba(10,18,28,.78);color:var(--text);border:1px solid rgba(255,255,255,.25);border-radius:8px;padding:8px 11px;font:600 12px inherit;touch-action:none;user-select:none}
.touch button:active{background:var(--accent);color:#111}
.loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(13,20,28,.88);z-index:5}
.loading.off{display:none}
.spin{display:inline-block;width:26px;height:26px;border:3px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:sp 1s linear infinite}
@keyframes sp{to{transform:rotate(360deg)}}
.panel{overflow-y:auto;padding:8px;background:var(--bg);border-left:1px solid var(--line)}
.card{background:var(--bg2);border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-bottom:8px}
.card h2{margin:0 0 6px;font-size:13px;text-transform:uppercase;letter-spacing:.05em;color:var(--soft)}
.card h2 small{text-transform:none;letter-spacing:0;color:var(--muted);font-weight:400}
.seg{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:6px}
.seg button{flex:1 1 auto;background:var(--bg3);color:var(--soft);border:1px solid var(--line);border-radius:7px;padding:6px 8px;font:inherit;font-size:12px;cursor:pointer;text-align:left}
.seg.small button{text-align:center;padding:4px 8px}
.seg button.on{background:var(--accent);color:#17120d;border-color:var(--accent);font-weight:600}
.row{display:flex;align-items:center;gap:8px;margin:6px 0;flex-wrap:wrap}
.row.wrap{gap:6px 12px}
.act{background:var(--bg3);color:var(--text);border:1px solid var(--line);border-radius:7px;padding:5px 10px;font:inherit;font-size:12px;cursor:pointer}
.act:hover{border-color:var(--accent)}
select{background:var(--bg3);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:3px 6px;font:inherit}
.chk{display:flex;align-items:center;gap:5px;font-size:12px;color:var(--soft);cursor:pointer}
.sliders label{display:block;font-size:12px;color:var(--soft);margin:5px 0}
.sliders output{float:right;font:12px 'JetBrains Mono',monospace;color:var(--text)}
input[type=range]{width:100%;accent-color:var(--accent);margin:2px 0}
.hint,.note{font-size:12px;color:var(--muted);margin:6px 0 0}
.warn{margin:6px 0 0;font-size:12px;color:var(--red);min-height:16px}
.tbl{width:100%;border-collapse:collapse;font:12px 'JetBrains Mono',monospace}
.tbl th,.tbl td{padding:2px 5px;border-bottom:1px solid var(--line);text-align:right;white-space:nowrap}
.tbl th:first-child,.tbl td:first-child{text-align:left;color:var(--soft);font-family:Inter,system-ui,sans-serif}
.tbl th{color:var(--muted);font-weight:600}
.tbl .ca{color:var(--accent)}.tbl .cb{color:var(--blue)}
.kv{display:grid;grid-template-columns:1fr auto;gap:2px 10px;font-size:12px;margin-top:6px}
.kv span:nth-child(even){font-family:'JetBrains Mono',monospace;text-align:right}
.sel{display:block;font-size:12px;color:var(--soft);margin:6px 0}
.chart{width:100%;height:260px;display:block;background:var(--bg);border:1px solid var(--line);border-radius:8px}
.expout{white-space:pre-wrap;font:11.5px/1.5 'JetBrains Mono',ui-monospace,monospace;background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:8px;margin:6px 0 0;color:var(--soft);overflow-x:auto}
details summary{cursor:pointer;font-weight:700;color:var(--soft);text-transform:uppercase;letter-spacing:.05em;font-size:13px}
.sci p{margin:7px 0;font-size:12.5px;color:var(--soft)}
.sci .safe{border-left:3px solid var(--accent);padding-left:8px;color:var(--text)}
@media (max-width:820px){
  body{overflow-y:auto}
  .layout{display:block;height:auto}
  .stage{height:60vh;height:60dvh;min-height:300px}
  .panel{border-left:0;overflow:visible}
  .top h1 span{display:none}
  .hud{grid-template-columns:repeat(3,auto)}
  .cell{min-width:64px;padding:2px 5px}.cell i{font-size:13px}
  .legend{top:84px;right:auto;left:8px}
  .status{bottom:8px;max-width:48%}
}
body.embed .top{display:none}
body.embed .layout{height:100dvh}
@media (max-width:820px){body.embed .layout{height:auto}}

.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin:6px 0}
.grid3 .act{text-align:center}
#tags .tag{position:absolute;left:0;top:0;transform:translate(-50%,-135%);font:600 10px 'JetBrains Mono',monospace;padding:1px 6px;border-radius:4px;pointer-events:none;white-space:nowrap;background:rgba(10,18,28,.72);border:1px solid}
#tags .t{color:#4cb0ff;border-color:#4cb0ff}#tags .c{color:#ff8a3d;border-color:#ff8a3d}
.axes{position:absolute;left:8px;bottom:36px;font-size:10.5px;color:var(--muted);pointer-events:none;background:rgba(10,18,28,.6);padding:1px 6px;border-radius:4px}
.eq{font-family:'JetBrains Mono',monospace;font-size:12px;color:var(--text);background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:5px 8px;overflow-x:auto}
.kv span.ok{color:var(--green)}.kv span.bad{color:var(--red)}
.stage{cursor:grab}
@media (max-width:820px){.axes{display:none}}
