:root{
  --bg:#05080a; --panel:#081013; --line:#12302a; --line2:#1c4a40;
  --green:#39ff88; --cyan:#4fd1ff; --amber:#ffb347; --red:#ff5a5a;
  --txt:#cfe8df; --dim:#6f8f86;
  --sans:'IBM Plex Sans Condensed',sans-serif; --mono:'JetBrains Mono',monospace;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--txt);font-family:var(--sans);font-size:14px}
body{background:radial-gradient(1200px 600px at 30% -10%,#0b2420 0%,transparent 60%),radial-gradient(900px 500px at 100% 100%,#081a26 0%,transparent 60%),var(--bg);min-height:100vh}
.mono{font-family:var(--mono)}
.hidden{display:none!important}
button{font-family:var(--sans);font-weight:600;letter-spacing:.04em;background:#0c1b1d;color:var(--txt);border:1px solid var(--line2);padding:6px 10px;border-radius:3px;cursor:pointer;font-size:12px;text-transform:uppercase;transition:.15s}
button:hover{border-color:var(--green);color:#fff;box-shadow:0 0 10px rgba(57,255,136,.25)}
button.accent{border-color:var(--green);color:var(--green)}
button.on{background:var(--green);color:#021;box-shadow:0 0 14px rgba(57,255,136,.5)}
button.mini{padding:1px 6px;font-size:10px;float:right}
.btn.ghost{background:transparent}
select{background:#071214;color:var(--txt);border:1px solid var(--line2);font-family:var(--mono);font-size:12px;padding:4px;border-radius:3px}
header{display:flex;align-items:center;gap:18px;padding:10px 16px;border-bottom:1px solid var(--line);flex-wrap:wrap;background:linear-gradient(#071012,#050a0b)}
.brand{display:flex;align-items:center;gap:10px}
.brand h1{margin:0;font-weight:200;font-size:30px;letter-spacing:.12em;line-height:1}
.brand h1 b{font-weight:700;color:var(--green);text-shadow:0 0 12px rgba(57,255,136,.6)}
.brand small{color:var(--dim);font-size:11px}
.pulse{width:10px;height:10px;border-radius:50%;background:var(--green);box-shadow:0 0 12px var(--green);animation:pulse 1.6s infinite}
@keyframes pulse{50%{opacity:.35;transform:scale(.8)}}
.stepper{display:flex;gap:4px;list-style:none;margin:0;padding:0;flex:1;justify-content:center}
.stepper li{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--dim);padding:5px 10px;border:1px solid var(--line);display:flex;gap:6px;align-items:center}
.stepper li span{font-family:var(--mono);font-size:11px;width:18px;height:18px;display:grid;place-items:center;border:1px solid currentColor;border-radius:50%}
.stepper li.cur{color:var(--cyan);border-color:var(--cyan);box-shadow:0 0 12px rgba(79,209,255,.3)}
.stepper li.done{color:var(--green)}
.stepper li.done span{background:var(--green);color:#021}
.hdr-ctl{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.tog{font-size:12px;display:flex;align-items:center;gap:4px;color:var(--dim);cursor:pointer}
.tog.wide{margin:6px 0}
.sel{font-size:11px;color:var(--dim);display:flex;gap:6px;align-items:center;text-transform:uppercase}
#lab{display:grid;grid-template-columns:minmax(300px,1fr) minmax(380px,1.35fr) 340px;gap:10px;padding:10px;height:calc(100vh - 100px);min-height:640px}
.panel{background:linear-gradient(180deg,rgba(10,22,24,.9),rgba(5,10,11,.9));border:1px solid var(--line);border-radius:4px;padding:8px;display:flex;flex-direction:column;min-height:0;position:relative}
.ptitle{font-size:11px;letter-spacing:.2em;color:var(--dim);margin-bottom:6px;display:flex;justify-content:space-between;gap:8px}
.ptitle span{color:var(--cyan);letter-spacing:0}
#scene-container{flex:1;position:relative;border:1px solid var(--line);min-height:240px;overflow:hidden;border-radius:3px}
#scene-container canvas{display:block}
#sceneHud{position:absolute;left:8px;top:6px;font-size:11px;color:var(--green);pointer-events:none;text-shadow:0 0 6px #000}
.row{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}
.presets button{flex:1}
.presets button.on{background:var(--cyan);border-color:var(--cyan)}
.legend{font-size:11px;color:var(--dim);margin-top:6px;line-height:1.45;max-height:90px;overflow:auto}
.legend b{color:var(--cyan)}
#center{overflow:auto}
#scopeWrap{position:relative;height:46vh;min-height:280px;border:1px solid #0d3a2a;border-radius:6px;background:#010604;box-shadow:inset 0 0 40px rgba(57,255,136,.08),0 0 18px rgba(57,255,136,.08)}
#scope{width:100%;height:100%;display:block;touch-action:none;cursor:crosshair}
.tip{position:absolute;max-width:260px;background:rgba(3,14,12,.95);border:1px solid var(--green);color:var(--txt);font-size:12px;padding:8px 10px;pointer-events:none;border-radius:3px;box-shadow:0 0 16px rgba(57,255,136,.25);z-index:3}
.tip b{color:var(--green)}
.banner{position:absolute;top:8px;right:10px;font-family:var(--mono);font-size:11px;color:var(--amber);border:1px solid var(--amber);padding:3px 8px;background:rgba(30,18,0,.8);max-width:70%}
.scrub{display:flex;align-items:center;gap:8px;margin-top:6px;font-size:11px;color:var(--dim)}
.scrub input{flex:1;accent-color:var(--amber)}
.tools button{flex:1}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}
.card{border:1px solid var(--line);padding:8px;border-radius:3px;background:rgba(3,10,10,.6);margin-top:8px}
.grid2 .card{margin-top:0}
.card h3{margin:0 0 6px;font-size:11px;letter-spacing:.2em;color:var(--dim);font-weight:600;text-transform:uppercase}
table{width:100%;border-collapse:collapse;font-size:11px}
td,th{padding:3px 4px;border-bottom:1px solid #0e2422;text-align:left}
th{color:var(--dim);font-weight:500}
td.v{color:var(--green)}
.lo{color:var(--red)!important}.hi{color:var(--amber)!important}
.neg{color:var(--red);font-weight:700}
#interp{font-size:12.5px;line-height:1.5}
#interp p{margin:0 0 6px}
#interp b{color:var(--cyan)}
.console{overflow:auto;background:repeating-linear-gradient(90deg,rgba(255,255,255,.012) 0 1px,transparent 1px 3px),linear-gradient(180deg,#0e1618,#070b0c)}
.mod{border:1px solid var(--line);border-radius:4px;padding:8px;margin-bottom:8px;background:rgba(0,0,0,.25)}
.mod h2{margin:0 0 6px;font-size:13px;letter-spacing:.14em;text-transform:uppercase;font-weight:600}
.mod h2 span{font-family:var(--mono);color:var(--green);font-weight:300;margin-right:4px}
.lcd{background:#020a06;border:1px solid #0d3a2a;color:var(--green);text-shadow:0 0 10px rgba(57,255,136,.7);text-align:center;padding:4px;border-radius:3px}
.lcd.big{font-size:34px;font-weight:300;letter-spacing:.08em}
.sub{font-size:12px;color:var(--dim);text-align:center;margin:4px 0}
.bar{display:flex;align-items:center;gap:8px;margin-top:8px;font-size:11px}
.bar label{width:70px;color:var(--dim);text-transform:uppercase}
.track{flex:1;height:10px;background:#120a1a;border:1px solid #3a2050;border-radius:5px;overflow:hidden}
#rhoBar{height:100%;width:0;background:linear-gradient(90deg,#5a1a7a,#c04fff);box-shadow:0 0 10px #a040ff}
.kv{display:grid;grid-template-columns:auto 1fr auto 1fr;gap:4px 8px;font-size:11px;color:var(--dim);margin-top:4px}
.kv b{color:var(--cyan);font-weight:500}
#face{width:100%;background:#071012;border:1px solid var(--line);border-radius:3px;touch-action:none;user-select:none}
.chip{cursor:grab}
.chip text{font-family:var(--mono);font-size:8px;font-weight:700;pointer-events:none}
.tgt{fill:none;stroke:var(--cyan);stroke-dasharray:3 3;opacity:.6}
#impList{margin-top:6px;font-size:11px}
.imp{display:grid;grid-template-columns:62px 1fr 64px;gap:6px;align-items:center;margin:3px 0}
.leds{display:flex;gap:2px}
.leds i{flex:1;height:8px;background:#0b1a16;border-radius:1px}
.leds i.g{background:var(--green);box-shadow:0 0 5px var(--green)}
.leds i.a{background:var(--amber);box-shadow:0 0 5px var(--amber)}
.leds i.r{background:var(--red);box-shadow:0 0 5px var(--red)}
.impnote{font-size:10.5px;color:var(--dim);margin-top:2px}
.protoGrid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:5px}
.protoGrid button{padding:8px 4px;display:flex;flex-direction:column;align-items:center;gap:2px;background:linear-gradient(#10221f,#08110f)}
.protoGrid button b{font-family:var(--mono);font-size:13px;color:var(--green)}
.protoGrid button small{font-size:9.5px;color:var(--dim);text-transform:none;letter-spacing:0;font-weight:400}
.protoGrid button.on{background:linear-gradient(#1b4a35,#0b2018);box-shadow:0 0 14px rgba(57,255,136,.4)}
.knobs{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;margin-top:8px}
.knob{text-align:center;touch-action:none;cursor:ns-resize;user-select:none}
.knob svg{width:100%;max-width:74px}
.klab{font-size:9.5px;letter-spacing:.12em;color:var(--dim)}
.kval{font-family:var(--mono);font-size:11px;color:var(--green)}
.kval small{color:var(--dim);font-size:9px}
#warns{font-size:11.5px;margin-top:6px}
#warns div{color:var(--amber);border-left:2px solid var(--amber);padding:2px 6px;margin:3px 0;background:rgba(255,179,71,.06)}
.status{font-size:13px;color:var(--cyan);font-style:italic}
footer{display:flex;gap:16px;justify-content:space-between;padding:8px 16px;font-size:11px;color:var(--dim);border-top:1px solid var(--line);flex-wrap:wrap}
footer a{color:var(--green)}
@media(max-width:1100px){
  #lab{grid-template-columns:1fr;height:auto}
  #scene-container{height:52vh}
  #scopeWrap{height:52vh}
  .stepper{order:3;width:100%;justify-content:flex-start;overflow:auto}
  .grid2{grid-template-columns:1fr}
}