:root{--bg:#0f1115;--panel:#171a21;--line:#262b36;--text:#e6e8ee;--muted:#8a92a6;--green:#2fbf71;--amber:#e8a33d;--red:#e5484d;--blue:#4c8dff;--grey:#5b6275;font:14px/1.4 system-ui,sans-serif}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);flex-direction:column;height:100vh;margin:0;display:flex}header{border-bottom:1px solid var(--line);background:var(--panel);align-items:center;gap:12px;padding:10px 16px;display:flex}.brand{letter-spacing:.02em}.spacer{flex:1}.muted{color:var(--muted)}.small{font-size:12px}button{color:var(--text);border:1px solid var(--line);cursor:pointer;background:#232836;border-radius:8px;padding:8px 14px;font-weight:600}button:disabled{opacity:.4;cursor:default}button.stop{background:var(--red);border-color:var(--red);color:#fff;padding:8px 22px}.pill{background:#232836;border-radius:999px;padding:3px 10px;font-size:12px}.pill.green{background:color-mix(in srgb, var(--green) 25%, transparent);color:var(--green)}.pill.red{background:color-mix(in srgb, var(--red) 25%, transparent);color:var(--red)}main{flex:1;grid-template-columns:1fr 340px;gap:12px;min-height:0;padding:12px;display:grid}.video{grid-template-rows:1fr auto;gap:12px;min-height:0;display:grid}#main-video,#side-video{gap:12px;min-height:0;display:grid}#side-video{grid-template-columns:1fr 1fr}.tile{border:1px solid var(--line);background:#000;border-radius:10px;position:relative;overflow:hidden}.tile .crop{aspect-ratio:640/472;width:100%;overflow:hidden}.tile.main .crop{width:auto;height:calc(100vh - 400px);margin:auto}.tile.main{display:grid}.tile video,.tile canvas{width:100%;display:block}.tile .label,.tile .age{background:#000a;border-radius:6px;padding:2px 8px;font-size:12px;position:absolute;top:8px}.tile .label{left:8px}.tile .age{color:var(--muted);right:8px}.tile .frozen{color:var(--amber);letter-spacing:.1em;background:#0008;place-items:center;font-size:28px;font-weight:800;display:none;position:absolute;inset:0}.tile.is-frozen .frozen{display:grid}.tile.is-frozen{border-color:var(--amber)}aside{background:var(--panel);border:1px solid var(--line);border-radius:10px;flex-direction:column;gap:10px;padding:14px;display:flex;overflow:auto}.arm{border:1px solid var(--line);border-radius:10px;gap:6px;padding:10px;display:grid}.arm.selected{border-color:var(--blue)}.arm-head{justify-content:space-between;align-items:center;display:flex}.arm .name{text-transform:capitalize;font-weight:700}.badge{background:var(--grey);color:#fff;border-radius:6px;padding:3px 10px;font-size:12px;font-weight:700}.badge.green{background:var(--green)}.badge.amber{background:var(--amber);color:#1b1300}.badge.red{background:var(--red)}.badge.blue{background:var(--blue)}.reason{color:var(--muted);min-height:1.4em}.next{min-height:1.4em;font-weight:600}.bar{background:#232836;border-radius:4px;height:4px}.bar>div{background:var(--green);border-radius:4px;height:100%;transition:width .1s}.joints{color:var(--muted);font:11px/1.3 ui-monospace,monospace}.metrics{gap:4px;display:grid}.metrics div{justify-content:space-between;display:flex}.metrics span{color:var(--muted)}#events{color:var(--muted);gap:2px;margin:0;padding:0;font-size:12px;list-style:none;display:grid}.flash{color:var(--red);min-height:1em}.help{border-top:1px solid var(--line);margin-top:auto;padding-top:8px}.prefs label{align-items:center;gap:6px;margin-top:6px;display:flex}.prefs input{flex:1}.login{z-index:10;background:#080a0ed9;place-items:center;display:grid;position:fixed;inset:0}.login[hidden]{display:none}.login-box{border:1px solid var(--line);background:#161a22;border-radius:12px;gap:10px;width:min(420px,92vw);padding:20px;display:grid}.login-box input{box-sizing:border-box;width:100%;color:var(--text);border:1px solid var(--line);background:#0f1218;border-radius:8px;margin:6px 0;padding:8px}.login-robots{gap:6px;display:grid}.training{border:1px solid var(--line);border-radius:10px;gap:6px;padding:10px;display:grid}.training[hidden]{display:none}.train-row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.train-row button{padding:4px 10px}.train-hint{font-weight:600}.train-timer{font:700 20px/1 ui-monospace,monospace}.train-note{color:var(--amber);min-height:1em}.train-recent{gap:2px;margin:0;padding:0;font-size:12px;list-style:none;display:grid}.train-recent .ok{color:var(--green)}.train-recent .bad{color:var(--muted)}
