:root{--bg:#0d141c;--bg2:#141e29;--bg3:#1b2836;--line:#2a3a4c;--text:#e6edf5;--soft:#b3c2d3;--muted:#7f93a8;--accent:#3fb6ff;--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{user-select:none;-webkit-user-select:none;position:relative;min-height:320px;background:#0a1220;overflow:hidden}
#c{user-select:none;-webkit-user-select:none;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:#06121c}
.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:#06121c;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}}

.hud{grid-template-columns:repeat(4,auto)}
.verdict{position:absolute;left:50%;top:112px;transform:translateX(-50%);width:min(520px,92%);background:rgba(8,16,26,.9);border:1px solid var(--line);border-radius:12px;padding:12px 14px;z-index:4;backdrop-filter:blur(4px)}
.verdict.ok{border-color:var(--green)}.verdict.bad{border-color:var(--red)}
.verdict h3{margin:0 0 4px;font-size:15px}
.verdict.ok h3{color:var(--green)}.verdict.bad h3{color:#ff9a9a}
.verdict p{margin:4px 0;font-size:12.5px;color:var(--soft)}
.verdict .vrow{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}
.verdict[hidden]{display:none}
.events{position:absolute;left:8px;bottom:42px;max-width:46%;font:11px/1.35 'JetBrains Mono',ui-monospace,monospace;color:#cfe3f5;pointer-events:none;text-shadow:0 1px 2px #000}
.events div{opacity:.9}.events div:first-child{color:#fff;font-weight:600}
.tag3d{position:absolute;transform:translate(8px,-50%);font:600 11px Inter,sans-serif;color:#fff;background:rgba(8,16,26,.8);border:1px solid rgba(255,255,255,.25);border-radius:5px;padding:1px 6px;pointer-events:none;white-space:nowrap}
.tag3d::before{content:"";position:absolute;left:-9px;top:50%;width:8px;border-top:1px solid rgba(255,255,255,.5)}
.pg{height:8px;background:var(--bg);border:1px solid var(--line);border-radius:5px;overflow:hidden;margin:6px 0}
.pg i{display:block;height:100%;width:0;background:var(--accent)}
.legendrow{display:flex;gap:10px;flex-wrap:wrap;font-size:11.5px;color:var(--soft);margin-top:4px}
.legendrow b{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:4px;vertical-align:-1px}
.sliders.two{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}
@media (max-width:820px){.hud{grid-template-columns:repeat(4,auto)}.cell{min-width:54px}.verdict{top:96px}.events{display:none}.sliders.two{grid-template-columns:1fr}}

/* quake sim additions */
html,body{max-width:100%}
.hud{grid-template-columns:repeat(4,auto)}
.cell.wide{grid-column:1/-1}
.cell i.sm{font:600 12px Inter,system-ui,sans-serif;display:block}
.scale{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;text-align:right}
.chart{height:170px;margin-bottom:6px}
#ch-time{height:200px}#ch-exp{height:220px}#ch-spec{height:180px}
.gridcharts{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.gridcharts .chart{height:210px}
.tag3d{transform:translate(0,-50%)}
.tag3d::before{display:none}
.tag3d.hot{border-color:#ff9a45;color:#ffd9b8}
.tag3d.sev{border-color:#ff5d5d;color:#ffc9c9}
.sliders.two{grid-template-columns:1fr 1fr}
body.embed-mode .top{display:none}
body.embed-mode .layout{height:100vh;height:100dvh}
@media (max-width:820px){
  body.embed-mode .layout{height:auto}
  .gridcharts{grid-template-columns:1fr}
  .gridcharts .chart{height:180px}
  .tag3d{font-size:10px;padding:0 4px}
  .scale{top:auto;bottom:40px;right:auto;left:8px;font-size:10px;text-align:left;padding:2px 6px}
  .hud{grid-template-columns:repeat(4,auto)}
}
