:root{--bg:#0b0d10;--panel:#14181d;--line:#232a32;--text:#dde3ea;--dim:#7d8792;--accent:#4ade80;--accent-dim:#1c7a45;--warn:#fbbf24;--danger:#f87171;--ear:#60a5fa;--mono:ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--text);font-family:var(--mono);-webkit-font-smoothing:antialiased;margin:0;font-size:13px}#app{flex-direction:column;height:100%;display:flex}.topbar{border-bottom:1px solid var(--line);background:var(--panel);align-items:baseline;gap:12px;padding:10px 16px;display:flex}.topbar h1{letter-spacing:.14em;text-transform:lowercase;color:var(--accent);margin:0;font-size:15px}.tagline{color:var(--dim)}.rec-indicator{color:var(--danger);letter-spacing:.1em;margin-left:auto;font-weight:700;animation:1.6s ease-in-out infinite pulse}@keyframes pulse{50%{opacity:.35}}.layout{flex:1;min-height:0;overflow-y:auto}.stage,.trail{background:var(--bg);min-width:0;max-width:880px;margin:0 auto;padding:14px}.trail{border-top:1px solid var(--line)}.video-wrap{aspect-ratio:16/9;border:1px solid var(--line);background:#000;border-radius:6px;position:relative;overflow:hidden}.video-wrap video,.video-wrap canvas{object-fit:contain;width:100%;height:100%;position:absolute;inset:0;transform:scaleX(-1)}.stage-status{color:var(--dim);pointer-events:none;text-align:center;place-items:center;padding:20px;display:grid;position:absolute;inset:0}.stage-status[hidden]{display:none}#arrow{z-index:1;pointer-events:none;transform:none}.mech{z-index:2;pointer-events:none;display:none;position:absolute;inset:0}.mech-reload{border-radius:inherit}.mech-blackout:after{content:"";background:var(--accent);opacity:.5;width:2px;position:absolute;top:22%;bottom:22%;right:3%}.mech-balance:after{content:"";background:var(--dim);opacity:.6;width:1px;margin-left:-.5px;position:absolute;top:30%;bottom:30%;left:50%}.mech-lantern{opacity:0;background:#000}.mech-tempo:after{content:"";border:1px solid var(--accent-dim);border-radius:4px;width:11.5%;position:absolute;top:34%;bottom:34%;left:44.25%}.mech-marker{aspect-ratio:1;background:var(--accent);border-radius:50%;width:8%;margin-top:-4%;position:absolute;top:50%;left:0;box-shadow:0 0 14px #4ade808c}.kart-sky{background:linear-gradient(#0b0d1026,#0b0d10b3);border-bottom:1px solid #4ade8073;position:absolute;inset:0 0 58%}.kart-road-wrap{perspective:220px;perspective-origin:50% 0;position:absolute;inset:42% 0 0;overflow:hidden}.kart-road{transform-origin:50% 0;background-color:#06090cd1;background-image:repeating-linear-gradient(#ecf5f0e6 0 30px,#0000 30px 96px),linear-gradient(90deg,#0000 0 32%,#4ade80f2 32% 33.2%,#0000 33.2% 66.8%,#4ade80f2 66.8% 68%,#0000 68% 100%);background-position:50% 0,0 0;background-repeat:repeat-y,no-repeat;background-size:3% 126px,100% 100%;width:200%;height:320%;position:absolute;top:0;left:-50%;rotate:x 66deg}.kart-arrow{border-left:24px solid #0000;border-right:24px solid #0000;border-bottom:56px solid var(--accent);transform-origin:50% 100%;filter:drop-shadow(0 0 12px #4ade80bf);width:0;height:0;margin-left:-24px;position:absolute;bottom:30%;left:50%}.video-wrap[data-mechanic=kart] .mech-kart,.video-wrap[data-mechanic=reload] .mech-reload,.video-wrap[data-mechanic=blackout] .mech-blackout,.video-wrap[data-mechanic=balance] .mech-balance,.video-wrap[data-mechanic=lantern] .mech-lantern,.video-wrap[data-mechanic=tempo] .mech-tempo{display:block}.terminal{z-index:3;pointer-events:none;text-shadow:0 1px 2px #000000e6;background:linear-gradient(#000000b8,#0000);max-height:46%;padding:6px 9px 14px;font-size:10.5px;line-height:1.55;position:absolute;top:0;left:0;right:0;overflow:hidden}.tap-surface{border:2px solid var(--accent-dim);cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation;-webkit-user-select:none;user-select:none;z-index:2;background:0 0;border-radius:0;place-items:end center;width:100%;margin:0;padding:0;display:grid;position:absolute;inset:0}.tap-surface[hidden]{display:none}.tap-surface-hint{color:var(--dim);letter-spacing:.05em;pointer-events:none;background:#0009;border-radius:99px;margin-bottom:78px;padding:5px 12px;font-size:11px}.tap-flash{background:var(--accent);opacity:0;pointer-events:none;position:absolute;inset:0}.tap-flash.lit{animation:.22s ease-out tap-flash}@keyframes tap-flash{0%{opacity:.28}to{opacity:0}}.hud{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);pointer-events:none;background:#0000008c;gap:1px;display:flex;position:absolute;bottom:0;left:0;right:0}.hud-cell{text-align:center;font-variant-numeric:tabular-nums;flex:1;padding:7px 4px 6px}.hud-cell b{color:var(--accent);font-size:19px;font-weight:600;line-height:1.15;display:block}.hud-cell span{letter-spacing:.09em;text-transform:uppercase;color:var(--dim);font-size:9.5px}.hud-cell.armed b{color:var(--danger)}.closures{pointer-events:none;opacity:.55;justify-content:flex-start;align-items:flex-end;gap:2px;height:26px;padding:0 6px;display:flex;position:absolute;bottom:100%;left:0;right:0}.closure-bar{background:var(--accent);border-radius:1px 1px 0 0;flex:0 7px;min-width:2px;animation:.26s ease-out closure-in}.closure-bar.partial{background:var(--warn);opacity:.7}@keyframes closure-in{0%{opacity:.15;filter:brightness(2.2)}}.diagnosis{border:1px solid var(--line);background:var(--panel);border-left-width:3px;border-radius:5px;margin-top:10px;padding:10px 12px;font-size:13px;line-height:1.5}.diagnosis.good{border-left-color:var(--accent);color:var(--accent)}.diagnosis.warn{border-left-color:var(--warn);color:var(--warn)}.diagnosis.bad{border-left-color:var(--danger);color:var(--danger)}.controls{flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px;display:flex}button{font:inherit;color:var(--text);background:var(--panel);border:1px solid var(--line);cursor:pointer;border-radius:5px;padding:6px 11px}button:hover:not(:disabled){border-color:var(--accent-dim)}button:disabled{opacity:.4;cursor:not-allowed}button.primary{border-color:var(--accent-dim);color:var(--accent)}button.armed{border-color:var(--danger);color:var(--danger)}.controls-primary{flex-wrap:nowrap}.controls-primary button{flex:1 1 0;padding:12px 10px;font-size:14px}.controls-foot{margin-top:10px}.controls-mechanic{margin-top:8px}label.field{color:var(--dim);align-items:center;gap:6px;display:inline-flex}select{font:inherit;color:var(--text);background:var(--panel);border:1px solid var(--line);border-radius:5px;padding:5px 7px}.controls-mechanic label.field{flex:100%}.controls-mechanic select{flex:1}.hint{width:100%;color:var(--dim);line-height:1.6}.notes{border:1px solid var(--line);background:var(--panel);border-radius:6px}.notes summary{color:var(--dim);cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;padding:11px 12px;list-style:none}.notes summary::-webkit-details-marker{display:none}.notes summary:before{content:"▸ ";color:var(--accent-dim)}.notes[open] summary:before{content:"▾ "}.notes>:not(summary){margin:0 12px 12px}kbd{background:var(--panel);border:1px solid var(--line);border-bottom-width:2px;border-radius:3px;padding:0 5px;font-family:inherit;font-size:11px}.readouts{background:var(--line);border:1px solid var(--line);border-radius:6px;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:1px;margin-top:12px;display:grid;overflow:hidden}.stat{background:var(--panel);padding:8px 10px}.stat-label{color:var(--dim);letter-spacing:.08em;text-transform:uppercase;font-size:10px}.stat-value{font-variant-numeric:tabular-nums;margin-top:2px;font-size:17px}.stat-value.good{color:var(--accent)}.stat-value.warn{color:var(--warn)}.stat-value.bad{color:var(--danger)}.chart{border:1px solid var(--line);background:var(--panel);border-radius:6px;margin-top:12px;padding:8px 4px 4px}.log{border:1px solid var(--line);background:var(--panel);border-radius:6px;height:190px;margin-top:10px;padding:8px 10px;font-size:11.5px;line-height:1.65;overflow-y:auto}.log-row{gap:10px;display:flex}.log-t{color:var(--dim);font-variant-numeric:tabular-nums;min-width:58px}.terminal .log-t{min-width:44px}.log-blink{color:var(--accent)}.log-partial{color:var(--warn)}.log-alert{color:var(--danger)}.log-info{color:var(--dim)}.chart .u-legend{font-size:11px}@media (max-width:900px){html,body{height:auto}#app{height:auto;min-height:100%}.layout{flex:none;overflow-y:visible}.stage,.trail{padding:10px}.video-wrap{aspect-ratio:3/4}button{flex:auto;min-width:44%;padding:11px 15px;font-size:14px}.controls-primary button{min-width:0}select{padding:9px 8px;font-size:14px}label.field{flex:100%}.readouts{grid-template-columns:repeat(auto-fill,minmax(96px,1fr))}.stat-value{font-size:15px}.log{height:150px}}.uplot,.uplot *,.uplot :before,.uplot :after{box-sizing:border-box}.uplot{width:min-content;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}.u-title{text-align:center;font-size:18px;font-weight:700}.u-wrap{-webkit-user-select:none;user-select:none;position:relative}.u-over,.u-under{position:absolute}.u-under{overflow:hidden}.uplot canvas{width:100%;height:100%;display:block;position:relative}.u-axis{position:absolute}.u-legend{text-align:center;margin:auto;font-size:14px}.u-inline{display:block}.u-inline *{display:inline-block}.u-inline tr{margin-right:16px}.u-legend th{font-weight:600}.u-legend th>*{vertical-align:middle;display:inline-block}.u-legend .u-marker{width:1em;height:1em;margin-right:4px;background-clip:padding-box!important}.u-inline.u-live th:after{content:":";vertical-align:middle}.u-inline:not(.u-live) .u-value{display:none}.u-series>*{padding:4px}.u-series th{cursor:pointer}.u-legend .u-off>*{opacity:.3}.u-select{pointer-events:none;background:#00000012;position:absolute}.u-cursor-x,.u-cursor-y{pointer-events:none;will-change:transform;position:absolute;top:0;left:0}.u-hz .u-cursor-x,.u-vt .u-cursor-y{border-right:1px dashed #607d8b;height:100%}.u-hz .u-cursor-y,.u-vt .u-cursor-x{border-bottom:1px dashed #607d8b;width:100%}.u-cursor-pt{pointer-events:none;will-change:transform;border:0 solid;border-radius:50%;position:absolute;top:0;left:0;background-clip:padding-box!important}.u-axis.u-off,.u-select.u-off,.u-cursor-x.u-off,.u-cursor-y.u-off,.u-cursor-pt.u-off{display:none}
