:root{color-scheme:dark;font-family:system-ui,sans-serif}body{margin:0;padding:1rem;max-width:920px;margin-inline:auto;background:#12131a;color:#e7e9f0}header{display:flex;align-items:center;gap:1rem}h1{font-size:1.25rem;margin:0}code{background:#1b1d27;padding:.05rem .3rem;border-radius:4px}.muted{color:#8a8fa3}.status{font-size:.8rem;padding:.15rem .5rem;border-radius:999px}.status.disconnected{background:#5b2330;color:#ffb3c0}.status.connecting{background:#5b4a23;color:#ffe08a}.status.streaming{background:#1f5b3a;color:#8affb8}.howto{font-size:.85rem;color:#cdd1de;background:#1b1d27;border:1px solid #262838;border-radius:8px;padding:.6rem 1rem .6rem 2rem;margin:.8rem 0 .4rem}.howto li{margin:.15rem 0}.status-legend{font-size:.78rem;color:#9aa0b4;margin:.2rem 0}.privacy{font-size:.85rem;color:#aab;background:#1b1d27;padding:.6rem .8rem;border-radius:8px}main{display:grid;grid-template-columns:1fr 1fr;gap:1rem}@media (max-width: 720px){main{grid-template-columns:1fr}}.video-wrap{position:relative;line-height:0}video{width:100%;border-radius:10px;background:#000;transform:scaleX(-1);display:block}#overlay{position:absolute;inset:0;width:100%;height:100%;border-radius:10px;transform:scaleX(-1);pointer-events:none}.track-badge{position:absolute;top:.4rem;left:.4rem;line-height:1.5;font-size:.72rem;padding:.1rem .45rem;border-radius:999px}.track-badge.on{background:#1f5b3a;color:#8affb8}.track-badge.off{background:#2a2d3a;color:#9aa0b4}.buttons{display:flex;gap:.5rem;margin:.5rem 0}.groups{font-size:.8rem;color:#9aa0b4;display:flex;gap:.8rem;flex-wrap:wrap;align-items:center;margin:.3rem 0}.groups label{display:inline;margin:0;color:#cdd1de}.auto-rc{font-size:.8rem;color:#cdd1de;margin:.3rem 0}.auto-rc input{vertical-align:middle}.modes{font-size:.8rem;color:#9aa0b4;display:flex;gap:.4rem;flex-wrap:wrap;align-items:center;margin:.3rem 0}.modes button{font-size:.75rem;padding:.3rem .6rem;background:#1b1d27;border:1px solid #262838}.modes button:hover{background:#232634}.modes button.active{background:#1f5b3a;color:#8affb8;border-color:#2c7a50}.cal-banner{display:none;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background:#12131ad9;color:#e7e9f0;padding:.6rem 1rem;border-radius:10px;font-size:.95rem;text-align:center;max-width:90%;border:1px solid #2c7a50}.selftest-box{margin:.5rem 0}.st-row{font-size:.8rem;margin:.2rem 0}.st-dot{display:inline-block;width:.6rem;height:.6rem;border-radius:50%;margin-right:.4rem;vertical-align:middle}.st-dot.ok{background:#8affb8}.st-dot.bad{background:#ffb3c0}button{background:#2a3aa0;color:#fff;border:0;border-radius:8px;padding:.5rem .9rem;cursor:pointer;font-size:.85rem}button:hover{background:#354bce}label{display:block;font-size:.85rem;margin-top:.4rem}input,select{background:#1b1d27;border:1px solid #333;color:#e7e9f0;border-radius:6px;padding:.3rem}.presets{border:1px solid #262838;border-radius:8px;padding:.5rem .7rem;margin-bottom:.6rem}.presets-label{display:flex;align-items:center;gap:.5rem;margin:0 0 .4rem}.presets-label select{flex:1}.preset-btns{display:flex;gap:.4rem;flex-wrap:wrap}.preset-btns button{padding:.35rem .6rem}.readout{margin-top:.6rem;border:1px solid #262838;border-radius:8px;padding:.5rem .7rem}.readout-head{display:flex;justify-content:space-between;font-weight:600;font-size:.8rem;margin-bottom:.3rem}#hz{color:#8affb8;font-variant-numeric:tabular-nums}.readout-key{font-size:.72rem;color:#8a8fa3;margin-top:.35rem}.ro-row{display:grid;grid-template-columns:3.2rem 3rem 1fr 3.2rem;align-items:center;gap:.4rem;font-size:.78rem;margin:.2rem 0;font-variant-numeric:tabular-nums}.ro-name{text-transform:capitalize;color:#aab}.ro-raw{color:#8a8fa3;text-align:right}.ro-out{color:#e7e9f0;text-align:right}.ro-bar{position:relative;height:8px;background:#1b1d27;border-radius:4px;overflow:hidden}.ro-bar:before{content:"";position:absolute;left:50%;top:0;bottom:0;width:1px;background:#3a3d4d}.ro-fill{position:absolute;top:0;bottom:0;left:50%;width:0;background:#56b6ff;transition:width .05s linear,left .05s linear}.ro-fill.neg{background:#ff9b6b}.axis{border:1px solid #262838;border-radius:8px;padding:.5rem .7rem;margin-bottom:.5rem}.axis-head{display:flex;justify-content:space-between;align-items:center}.axis-name{font-weight:600;text-transform:capitalize}.axis-row{display:flex;gap:.5rem;align-items:center;font-size:.8rem;margin-top:.3rem}.axis-row input[type=range]{flex:1}.axis-row span[data-out]{min-width:2rem;text-align:right;font-variant-numeric:tabular-nums}.btn{display:inline-block;background:#2a3aa0;color:#fff;border:0;border-radius:8px;padding:.5rem .9rem;cursor:pointer;font-size:.85rem;text-decoration:none}.btn:hover{background:#354bce}.btn.disabled{background:#2a2d3a;color:#8a8fa3;cursor:not-allowed}.replicate{margin-top:1rem;font-size:.85rem}.replicate .buttons{margin:.4rem 0}.backlink{color:#56b6ff;text-decoration:none;font-size:.85rem;margin-left:auto}.ph{font-size:.9rem;margin:.8rem 0 .4rem}.mini{font-size:.7rem;padding:.15rem .45rem;margin-left:.5rem}.challenge{margin-top:.6rem}.prompt-row{display:flex;align-items:baseline;gap:.5rem}.prompt{font-size:1.5rem;font-weight:700;color:#8affb8}.timer{height:6px;background:#1b1d27;border-radius:3px;margin:.4rem 0;overflow:hidden}.timer-bar{height:100%;width:100%;background:#56b6ff;transition:width .1s linear}.scoreline{font-size:.9rem;display:flex;gap:.6rem;align-items:center}.result{font-weight:600}.result.hit{color:#8affb8}.result.miss{color:#ffb3c0}.detector-panel{display:flex;flex-wrap:wrap;gap:.35rem}.chip{font-size:.72rem;padding:.2rem .5rem;border-radius:999px;background:#1b1d27;color:#6b7186;border:1px solid #262838;transition:.08s}.chip.on{background:#1f5b3a;color:#8affb8;border-color:#2c7a50}.stats{width:100%;border-collapse:collapse;font-size:.78rem;font-variant-numeric:tabular-nums}.stats th{text-align:left;color:#9aa0b4;font-weight:600;padding:.2rem .3rem;border-bottom:1px solid #262838}.stats td{padding:.15rem .3rem;border-bottom:1px solid #1b1d27}.footnote{margin-top:1rem}.bridge-help{margin-top:1rem;font-size:.85rem}.bridge-help pre{background:#1b1d27;padding:.6rem .8rem;border-radius:8px;overflow-x:auto}
