:root{--bg:#0d1117;--panel:#161b22;--panel2:#1f2630;--line:#30363d;--text:#e6edf3;--muted:#8b949e;--accent:#3fb6ff;--ok:#3fb950;--warn:#d29922;--bad:#f85149;--magenta:#e040fb;color:var(--text);background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}html,body{height:100%;margin:0;overflow:hidden}#app{flex-direction:column;height:100%;display:flex}button{background:var(--panel2);color:var(--text);border:1px solid var(--line);cursor:pointer;touch-action:manipulation;border-radius:6px;padding:6px 12px;font-size:14px}button:hover{border-color:var(--accent)}button.primary{background:#1f6feb;border-color:#1f6feb}button.active{border-color:var(--accent);background:#1f6feb55}button.danger{border-color:var(--bad)}input,select{background:var(--panel2);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:6px 8px;font-size:14px}.topbar{background:var(--panel);border-bottom:1px solid var(--line);flex:none;align-items:center;gap:10px;padding:6px 10px;display:flex}.topbar .title{letter-spacing:.5px;font-weight:700}.topbar .spacer{flex:1}.mic{color:var(--muted);align-items:center;gap:6px;font-size:13px;display:inline-flex}.mic .dot{background:#555;border-radius:50%;width:10px;height:10px}.mic.listening .dot{background:var(--ok);box-shadow:0 0 8px var(--ok)}.mic.ptt .dot{background:var(--warn)}.heard{color:var(--accent);white-space:nowrap;text-overflow:ellipsis;max-width:40vw;font-family:ui-monospace,Consolas,monospace;font-size:13px;overflow:hidden}.view{flex:auto;position:relative;overflow:auto}.menu{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px;max-width:980px;margin:0 auto;padding:24px;display:grid}.card{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:16px}.card h2{margin:0 0 6px;font-size:18px}.card p{color:var(--muted);margin:0 0 12px;font-size:14px;line-height:1.4}.card.clickable{cursor:pointer}.card.clickable:hover{border-color:var(--accent)}.muted{color:var(--muted)}.small{font-size:12px}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.drill{grid-template-columns:280px 1fr;height:100%;display:grid}.drill .side{border-right:1px solid var(--line);background:var(--panel);padding:10px;overflow:auto}.drill .side h3{text-transform:uppercase;color:var(--muted);letter-spacing:1px;margin:14px 0 6px;font-size:12px}.drill .side .entry{cursor:pointer;border-radius:6px;justify-content:space-between;align-items:center;padding:6px 8px;font-size:14px;display:flex}.drill .side .entry:hover{background:var(--panel2)}.drill .side .entry.sel{background:#1f6feb44}.bar{vertical-align:middle;border-radius:2px;width:4px;height:18px;margin-right:8px;display:inline-block}.bar.black{background:#fff}.bar.grey{background:#777}.bar.none{background:0 0}.meter{background:#333;border-radius:3px;width:46px;height:6px;overflow:hidden}.meter>div{background:var(--ok);height:100%}.drill .main{padding:20px 28px;overflow:auto}.checktitle{letter-spacing:1px;margin-bottom:4px;font-size:22px;font-weight:800}.slots{flex-direction:column;gap:6px;max-width:760px;margin:16px 0;display:flex}.slot{background:var(--panel);border:1px solid var(--line);border-radius:8px;grid-template-columns:28px 1fr auto;align-items:center;gap:10px;padding:9px 12px;font-size:16px;display:grid}.slot .num{color:var(--muted)}.slot .resp{font-weight:700}.slot.hidden .txt{color:#0000;text-shadow:0 0 10px #8b949e88;-webkit-user-select:none;user-select:none}.slot.ok{border-color:var(--ok);background:#3fb95018}.slot.order{border-color:var(--warn);background:#d2992218}.slot.missed{border-color:var(--bad);background:#f8514918}.slot.current{border-color:var(--accent)}.slot .tag{color:var(--muted);font-size:12px}.slot .hint{color:var(--muted);grid-column:2/4;font-size:13px}.result{margin:10px 0;font-size:18px}.typed{width:min(560px,90%)}.big-q{margin:30px 0 10px;font-size:26px}.kbd{background:#222;border:1px solid #444;border-radius:4px;padding:0 5px;font-family:ui-monospace,monospace;font-size:12px}table.grid{border-collapse:collapse;width:100%;font-size:14px}table.grid td,table.grid th{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;padding:5px 8px}.ok-t{color:var(--ok)}.bad-t{color:var(--bad)}.warn-t{color:var(--warn)}@media (width<=760px){.drill{grid-template-columns:1fr}.drill .side{max-height:32vh}}.sim{background:#000;flex-direction:column;display:flex;position:absolute;inset:0}.sim .outside{flex:58%;min-height:0;position:relative}.sim .outside canvas.world{width:100%;height:100%;display:block;position:absolute;inset:0}.sim.bigpanel .outside{flex-basis:40%}.panel{-webkit-user-select:none;user-select:none;background:linear-gradient(#34373d,#2a2c31);border-top:3px solid #111;flex-direction:column;flex:none;height:42%;min-height:250px;display:flex;position:relative}.sim.bigpanel .panel{height:60%}.prow{gap:8px;min-height:0;padding:4px 8px;display:flex}.prow.top{flex:66%}.prow.bottom{background:linear-gradient(#5c3e2a,#4a3020);border-top:2px solid #222;flex:none;align-items:stretch;overflow-x:auto}.screen{background:#111;border:4px solid #1a1a1a;border-radius:6px;flex:34%;gap:3px;min-width:0;display:flex}.screen canvas.g3x{flex:auto;width:100%;min-width:0;height:100%;display:block}.bezel{flex-direction:column;justify-content:center;gap:2px;display:flex}.pbtn{color:#ddd;white-space:nowrap;background:#23262b;border:1px solid #555;border-radius:4px;padding:3px 5px;font-size:11px}.pbtn.active{background:#2a5d2a;border-color:#4caf50}.pbtn.start{background:#5a1c1c}.stack{flex-direction:column;flex:0 28%;gap:4px;min-width:230px;display:flex}.radio{background:#151515;border:1px solid #444;border-radius:4px;padding:3px 5px}.rlabel{color:#999;font-size:10px}.row.tight{flex-wrap:wrap;gap:3px}.lcd{color:#7cfc00;text-align:center;background:#000;border-radius:3px;min-width:64px;padding:1px 6px;font-family:ui-monospace,Consolas,monospace;font-size:15px;display:inline-block}.lcd.sby{color:#9fd3ff}.preset{max-width:90px;padding:2px;font-size:11px}.grp{border-right:1px solid #3a2416;align-items:flex-start;gap:6px;padding:4px 8px;display:flex}.ctl{cursor:pointer;flex-direction:column;align-items:center;gap:3px;min-width:52px;display:flex}.clabel{color:#f0e0c8;letter-spacing:.5px;text-align:center;white-space:nowrap;font-size:10px}.rk{text-align:center;color:#333;background:#ddd;border-bottom:5px solid #888;border-radius:3px;min-width:46px;padding:6px 4px;font-size:11px;font-weight:700}.rk.on{color:#000;background:#fff;border-top:5px solid #888;border-bottom:1px solid #888}.rk.red{color:#fff;background:#a41f1f;border-bottom-color:#600}.rk.red.on{background:#e03030;border-top-color:#600}.rk.green.on{color:#fff;background:#2fa84f}.rk.warn{color:#000;background:#d29922}.key{color:#aaa;text-align:center;background:#222;border:2px solid #777;border-radius:15px;width:54px;height:30px;font-size:12px;font-weight:700;line-height:30px}.key.on{color:#7cfc00}.knob{text-align:center;color:#ddd;background:#111;border:2px solid #777;border-radius:12px;min-width:70px;padding:6px;font-size:11px}.knob.pulled{color:#fff;background:#7a2a10}.plunger .track{touch-action:none;background:#1b1b1b;border:1px solid #555;border-radius:4px;width:28px;height:74px;position:relative}.pknob{background:#111;border:2px solid #999;border-radius:8px;width:38px;height:16px;margin-top:-8px;position:absolute;left:-6px}.pknob.red{background:#c62020}.pval{color:#f0e0c8;text-align:center;min-width:64px;font-size:10px}.flaps .col{flex-direction:column;gap:2px;display:flex}.flapind{color:#7cfc00;font-family:monospace;font-size:11px}.col{flex-direction:column;gap:2px;display:flex}.trimtrack{background:#111;border:1px solid #666;border-radius:3px;width:16px;height:70px;position:relative}.tomark{background:#fff;height:2px;position:absolute;top:27.5%;left:-3px;right:-3px}.trimptr{background:#f0a000;border-radius:2px;height:6px;margin-top:-3px;position:absolute;left:-4px;right:-4px}.cabin{background:var(--panel);border:1px solid var(--line);z-index:20;border-radius:8px;flex-direction:column;gap:4px;min-width:280px;margin-bottom:6px;padding:10px;display:none;position:absolute;bottom:100%;right:10px}.cabin.open{display:flex}.cabin .spacer{flex:1}.hud{pointer-events:none;align-items:flex-start;gap:10px;display:flex;position:absolute;top:10px;left:10px;right:10px}.hud>*{pointer-events:auto}.coach{background:#0d1117d1;border:1px solid #30363d;border-radius:8px;max-width:420px;padding:8px 10px;font-size:14px}.coach .phase{color:var(--accent);text-transform:uppercase;letter-spacing:1px;font-size:12px}.coach .next{margin:3px 0;font-size:17px;font-weight:700}.coach .exp{color:var(--muted);font-size:13px}.coach .items div{padding:1px 0;font-size:13px}.feed{background:#0d1117bf;border:1px solid #30363d;border-radius:8px;max-width:360px;max-height:40vh;margin-left:auto;padding:6px 8px;font-size:13px;overflow:auto}.feed div{padding:1px 0}.toolbar{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex;position:absolute;bottom:10px;right:10px}.toolbar button{background:#161b22d9;font-size:12px}.loading{color:#fff;z-index:5;background:#0009;flex-direction:column;justify-content:center;align-items:center;gap:10px;font-size:16px;display:flex;position:absolute;inset:0}.touchpad{touch-action:none;background:#ffffff14;border:2px solid #ffffff4d;border-radius:50%;width:170px;height:170px;position:absolute;bottom:12px;left:12px}.touchpad .dot{background:#3fb6ff99;border-radius:50%;width:40px;height:40px;margin:-20px;position:absolute;top:50%;left:50%}.touchthr{touch-action:none;background:#ffffff14;border:2px solid #ffffff4d;border-radius:10px;width:54px;height:190px;position:absolute;bottom:60px;right:14px}.touchthr .lvl{background:#3fb6ff73;border-radius:8px;position:absolute;bottom:0;left:0;right:0}.touchbtns{flex-direction:column;gap:6px;display:flex;position:absolute;bottom:12px;left:196px}.touchbtns button{background:#161b22d9;padding:8px 10px;font-size:13px}.paused{color:#fff;text-shadow:0 0 8px #000;pointer-events:none;font-size:30px;font-weight:800;position:absolute;top:40%;left:50%;transform:translate(-50%,-50%)}.debrief{z-index:30;background:#0d1117f5;padding:20px;position:absolute;inset:0;overflow:auto}.debrief h2{margin:0 0 6px}.debrief .cols{grid-template-columns:minmax(300px,1fr) minmax(300px,1fr);gap:16px;display:grid}.debrief canvas{background:#1b2a1b;border-radius:8px;width:100%}.score{font-size:40px;font-weight:800}.voice{max-width:820px;height:100%;margin:0 auto;padding:24px 28px;overflow:auto}.voice h3{margin:26px 0 8px;font-size:15px}.voice-heard{min-height:26px;color:var(--accent);margin-top:14px;font-size:18px}.voice table.grid td{padding:4px 12px 4px 0;font-size:14px}button.small{padding:2px 8px;font-size:12px}.coach .items div.clk{cursor:pointer}.coach .items div.clk:hover{text-decoration:underline}.coach .mic-line{color:var(--accent);white-space:nowrap;text-overflow:ellipsis;min-height:17px;margin-top:4px;font-size:13px;overflow:hidden}.coach .teach{color:var(--warn);margin-top:2px;font-size:12px}.controls{max-width:900px}.controls .dev{background:var(--panel);border:1px solid var(--line);border-radius:8px;margin:6px 0;padding:8px 10px;font-size:14px}.controls .dev .row{margin-top:6px}.controls .capture{border:1px solid var(--accent);background:#1f6feb22;border-radius:8px;flex-direction:column;align-items:flex-start;gap:6px;margin:12px 0;padding:10px 12px;font-size:15px;display:flex}.gauge{background:#333;border-radius:4px;flex:none;width:90px;height:8px;position:relative;overflow:hidden}.gauge>div{background:var(--accent);border-radius:3px;width:6px;margin-left:-3px;position:absolute;top:0;bottom:0;left:50%}.gauge.fill>div{background:var(--ok);border-radius:0;width:0;margin-left:0;left:0}.lamp{background:#444;border-radius:50%;width:10px;height:10px;display:inline-block}.lamp.on{background:var(--ok);box-shadow:0 0 6px var(--ok)}.coach .teach.clk{cursor:pointer}
