:root{--bg:#12100e;--bg2:#1b1815;--card:#24201c;--line:#3a332c;--text:#f3ead9;--muted:#a99c88;--gold:#f0c54c;--good:#4fc27a;--ok:#e8b23c;--bad:#e85a4f;--blue:#4aa8ff;--mono:"JetBrains Mono", ui-monospace, Menlo, monospace}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--text);margin:0;font:14px/1.4 Inter,system-ui,sans-serif}button{font:inherit;color:inherit;cursor:pointer}.hidden{display:none!important}.top{border-bottom:1px solid var(--line);background:var(--bg2);align-items:center;gap:18px;height:52px;padding:0 16px;display:flex}.brand{white-space:nowrap;align-items:baseline;gap:8px;display:flex}.brand .logo{font-size:20px}.brand b{letter-spacing:.12em}.brand .sub{color:var(--muted);font-size:12px}.tabs{gap:4px;margin-left:12px;display:flex}.tabs button{color:var(--muted);background:0 0;border:1px solid #0000;border-radius:8px;padding:6px 14px;font-weight:600}.tabs .sbl{color:var(--gold);align-self:center;margin-left:6px;padding:6px 10px;font-weight:600;text-decoration:none}.tabs button.on{color:var(--text);background:var(--card);border-color:var(--line)}.status{color:var(--muted);font-family:var(--mono);white-space:nowrap;align-items:center;gap:8px;margin-left:auto;font-size:12px;display:flex}.dot{background:#666;border-radius:50%;width:9px;height:9px}.dot.on{background:var(--good);box-shadow:0 0 8px var(--good)}main{grid-template-columns:minmax(0,1fr) 440px;height:calc(100% - 52px);display:grid}.stage{flex-direction:column;gap:10px;min-width:0;padding:14px;display:flex}.cam{border:1px solid var(--line);background:#000;border-radius:14px;flex:1;min-height:0;position:relative;overflow:hidden}.cam video,.cam canvas{object-fit:contain;width:100%;height:100%;position:absolute;inset:0}.cam video{opacity:.55;transform:scaleX(-1)}.readout{font-family:var(--mono);color:var(--muted);flex-wrap:wrap;gap:18px;min-height:38px;font-size:12px;display:flex}.readout b{color:var(--text)}.flash{letter-spacing:.04em;pointer-events:none;opacity:0;text-shadow:0 2px 16px #000c;white-space:nowrap;font-size:34px;font-weight:800;position:absolute;top:12%;left:50%;transform:translate(-50%)}.flash.go{animation:.9s ease-out flash}@keyframes flash{0%{opacity:0;transform:translate(-50%,10px)scale(.9)}15%{opacity:1;transform:translate(-50%)scale(1.05)}70%{opacity:1}to{opacity:0;transform:translate(-50%,-8px)}}.start{text-align:center;background:radial-gradient(circle at 50% 40%,#2a241e,#0d0b09);flex-direction:column;justify-content:center;align-items:center;padding:24px;display:flex;position:absolute;inset:0}.start .big{font-size:64px}.start h1{letter-spacing:.1em;margin:6px 0}.start p{color:var(--muted);max-width:420px}.err{color:var(--bad)!important}.primary{background:var(--gold);color:#1a1408;letter-spacing:.03em;border:none;border-radius:10px;padding:11px 22px;font-weight:800}.primary:disabled{opacity:.5;cursor:default}.ghost{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:7px 12px;font-weight:600}.prompt{border:1px solid var(--line);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#14110ee6;border-radius:16px;align-items:center;gap:18px;width:min(560px,92%);padding:16px 20px;display:flex;position:absolute;bottom:6%;left:50%;transform:translate(-50%)}.prompt .em{font-size:64px;line-height:1}.prompt .tx{flex:1;min-width:0}.prompt .tx b{font-size:22px;display:block}.prompt .tx span{color:var(--muted)}.prompt .meta{font-family:var(--mono);color:var(--muted);margin-top:4px;font-size:12px}.prompt .ring{background:conic-gradient(var(--gold) calc(var(--p,0) * 360deg), #3a332c 0);width:56px;height:56px;font-family:var(--mono);border-radius:50%;flex:none;place-items:center;font-weight:700;display:grid}.prompt .ring i{background:#1b1815;border-radius:50%;place-items:center;width:44px;height:44px;font-style:normal;display:grid}.prompt.hit{border-color:var(--good);box-shadow:0 0 0 2px var(--good)}.prompt.miss{border-color:var(--bad);box-shadow:0 0 0 2px var(--bad)}.rate{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.rate button{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:6px 10px;font-weight:700}.rate button:hover{border-color:var(--gold)}.panel{border-left:1px solid var(--line);background:var(--bg2);overflow:auto}.tab{padding:14px;display:none}.tab.on{display:block}h3{letter-spacing:.14em;color:var(--muted);text-transform:uppercase;align-items:center;gap:8px;margin:16px 0 8px;font-size:12px;display:flex}h3:first-child{margin-top:0}h3 .r{text-transform:none;letter-spacing:0;margin-left:auto;font-weight:400}.poses{grid-template-columns:repeat(2,1fr);gap:6px;display:grid}.pose{background:var(--card);border:1px solid var(--line);border-radius:9px;align-items:center;gap:8px;padding:6px 8px;display:flex;position:relative;overflow:hidden}.pose .e{text-align:center;width:26px;font-size:20px}.pose .n{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-size:13px;font-weight:600;overflow:hidden}.pose .v{font-family:var(--mono);color:var(--muted);font-size:11px}.pose .bar{background:var(--blue);height:3px;width:calc(var(--s,0) * 100%);transition:width 80ms linear;position:absolute;bottom:0;left:0}.pose.hot .bar{background:var(--gold)}.pose.on{border-color:var(--gold);background:#3a2f17}.pose.on .bar{background:var(--good)}.pose .x{color:var(--muted);border:1px solid var(--line);border-radius:4px;padding:0 3px;font-size:9px}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip{background:var(--card);border:1px solid var(--line);border-radius:999px;align-items:center;gap:6px;padding:5px 9px;font-size:12px;font-weight:600;transition:background .4s,border-color .4s;display:inline-flex}.chip .c{font-family:var(--mono);color:var(--muted);font-size:11px}.chip.fire{border-color:var(--good);background:#2e4a2f;transition:none}.log{font-family:var(--mono);border:1px solid var(--line);background:#100e0c;border-radius:8px;max-height:240px;padding:6px 8px;font-size:11.5px;overflow:auto}.log div{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;padding:1px 0;overflow:hidden}.log div b{color:var(--text)}.log .k-motion b{color:var(--gold)}.log .k-two-hand b{color:var(--blue)}.pick{grid-template-columns:repeat(2,1fr);gap:4px 10px;display:grid}.pick label{cursor:pointer;align-items:center;gap:6px;padding:2px 0;font-size:13px;display:flex}.row{flex-wrap:wrap;align-items:center;gap:8px;margin:8px 0;display:flex}.row label{color:var(--muted);font-size:12px}.row select,.row input[type=number]{background:var(--card);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:4px 6px}.note{color:var(--muted);font-size:12px}.progress{background:var(--card);border-radius:3px;height:6px;margin:8px 0;overflow:hidden}.progress i{background:var(--gold);width:0;height:100%;display:block}table{border-collapse:collapse;width:100%;font-size:12.5px}th{text-align:left;color:var(--muted);letter-spacing:.05em;border-bottom:1px solid var(--line);background:var(--bg2);padding:6px 4px;font-size:11px;font-weight:600;position:sticky;top:0}td{vertical-align:middle;border-bottom:1px solid #2a2520;padding:6px 4px}td.num{font-family:var(--mono);text-align:right;white-space:nowrap}.badge{letter-spacing:.04em;white-space:nowrap;border-radius:5px;padding:2px 6px;font-size:10.5px;font-weight:800;display:inline-block}.badge.good{color:#8fe0a8;background:#1f3f2a}.badge.ok{color:#f3cd74;background:#44361a}.badge.bad{color:#ff9b92;background:#4a1f1c}.badge.none{background:var(--card);color:var(--muted)}.conf{color:var(--muted);font-size:11px}.slider{grid-template-columns:1fr 120px 58px;align-items:center;gap:8px;margin:4px 0;font-size:12.5px;display:grid}.slider span{color:var(--muted)}.slider output{font-family:var(--mono);text-align:right;font-size:12px}.slider input{width:100%;accent-color:var(--gold)}@media (max-width:900px){main{grid-template-rows:55vh auto;grid-template-columns:1fr;height:auto}.panel{border-left:none;border-top:1px solid var(--line)}.brand .sub{display:none}.top{gap:10px;padding:0 10px}.tabs button{padding:6px 9px}}
