:root{--bg:#0d0f1a;--bg-card:#171a2b;--border:#2a2e45;--text:#e7e9f4;--text-dim:#9aa0b8;--accent:#4ade80;--accent-2:#fbbf24;--danger:#f87171;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font-family:system-ui,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{overscroll-behavior:none;min-height:100svh;margin:0}#root{min-height:100svh}button{cursor:pointer;font-family:inherit}.home{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:24px;min-height:100svh;padding:24px;display:flex}.logo{letter-spacing:2px;margin:0;font-size:48px;font-weight:900}.logo span{color:var(--accent)}.tagline{color:var(--text-dim);margin:4px 0 0}.level-hint{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;margin:0;padding:10px 18px}.exercise-list{flex-direction:column;gap:12px;width:100%;max-width:420px;display:flex}.exercise-card{text-align:left;background:var(--bg-card);border:1px solid var(--border);color:var(--text);border-radius:16px;flex-direction:column;align-items:flex-start;gap:4px;padding:16px 20px;transition:transform .1s,border-color .1s;display:flex}.exercise-card:hover,.exercise-card:active{border-color:var(--accent);transform:scale(1.02)}.exercise-emoji{font-size:32px}.exercise-name{font-size:20px;font-weight:700}.exercise-hint{color:var(--text-dim);font-size:13px}.poc-badge{color:var(--text-dim);opacity:.7;font-size:12px}.player-bar{background:var(--bg-card);border:1px solid var(--border);border-radius:14px;align-items:center;gap:16px;width:100%;max-width:420px;padding:10px 18px;display:flex}.player-level{flex:1;align-items:center;gap:10px;display:flex}.player-level-num{color:var(--accent);white-space:nowrap;font-weight:800}.xp-bar{border:1px solid var(--border);background:#0a0c14;border-radius:999px;flex:1;height:8px;overflow:hidden}.xp-bar-fill{background:var(--accent);height:100%;transition:width .3s}.player-stat{white-space:nowrap;font-weight:700}.mode-list{flex-direction:column;gap:12px;width:100%;max-width:420px;display:flex}.mode-card{text-align:left;background:var(--bg-card);border:1px solid var(--border);color:var(--text);border-radius:16px;flex-direction:column;align-items:flex-start;gap:4px;padding:16px 20px;transition:transform .1s,border-color .1s;display:flex}.mode-card:not(.static):not(:disabled):hover{border-color:var(--accent);transform:scale(1.02)}.mode-card.done{opacity:.65}.mode-card:disabled{cursor:default}.mode-emoji{font-size:30px}.mode-name{font-size:19px;font-weight:800}.mode-hint{color:var(--text-dim);font-size:13px}.mode-actions{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.btn-small{border:1px solid var(--border);color:var(--text);background:#0a0c14;border-radius:10px;padding:8px 12px;font-size:14px;font-weight:700}.btn-small:hover{border-color:var(--accent)}.league{max-width:520px;min-height:100svh;margin:0 auto;padding:20px 16px 40px}.league-header{align-items:center;gap:14px;margin-bottom:20px;display:flex}.league-title{margin:0;font-size:24px}.league-sub{color:var(--text-dim);margin:2px 0 0;font-size:13px}.match-list{flex-direction:column;gap:10px;display:flex}.match-card{background:var(--bg-card);border:1px solid var(--border);color:var(--text);text-align:left;border-radius:14px;align-items:center;gap:14px;padding:14px 16px;transition:border-color .1s;display:flex}.match-card:not(.locked):hover{border-color:var(--accent)}.match-card.locked{opacity:.5;cursor:default}.match-card.title-fight{border-color:var(--accent-2);background:linear-gradient(135deg, var(--bg-card), #241d0e)}.match-num{color:var(--accent);text-align:center;min-width:30px;font-size:20px;font-weight:900}.match-info{flex-direction:column;flex:1;gap:2px;display:flex}.match-name{font-weight:800}.match-enemies{color:var(--text-dim);font-size:12px}.match-stars{white-space:nowrap;font-size:14px}.workout{background:#000;position:fixed;inset:0;overflow:hidden}.camera-view,.camera-mirror{position:absolute;inset:0}.camera-mirror{transform:scaleX(-1)}.camera-mirror video,.camera-mirror canvas{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.camera-overlay-msg{text-align:center;z-index:5;background:#0d0f1ad9;flex-direction:column;justify-content:center;align-items:center;gap:16px;padding:24px;display:flex;position:absolute;inset:0}.camera-overlay-msg.error p{color:var(--danger);max-width:420px}.spinner{border:4px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:36px;height:36px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.hud{z-index:10;pointer-events:none;flex-direction:column;display:flex;position:absolute;inset:0}.hud button{pointer-events:auto}.hud-top{background:linear-gradient(#0009,#0000);align-items:center;gap:12px;padding:14px 16px;display:flex}.hud-exit{border:1px solid var(--border);color:var(--text);background:#00000080;border-radius:50%;width:40px;height:40px;font-size:16px}.hud-exercise{text-shadow:0 1px 4px #000c;font-weight:700}.hud-reps-pill{border:1px solid var(--accent);color:var(--accent);background:#0000008c;border-radius:999px;margin-left:auto;padding:6px 16px;font-size:18px;font-weight:800}.hud-center{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:10px;padding:24px;display:flex}.hud-msg{text-shadow:0 2px 8px #000000e6;margin:0;font-size:26px;font-weight:800}.hud-submsg{color:var(--text);opacity:.85;text-shadow:0 1px 4px #000000e6;max-width:480px;margin:0}.hold-bar{border:1px solid var(--border);background:#00000080;border-radius:999px;width:min(280px,70vw);height:10px;overflow:hidden}.hold-bar-fill{background:var(--accent);height:100%;transition:width .1s linear}.countdown{color:var(--accent-2);text-shadow:0 4px 24px #000000e6;margin:0;font-size:140px;font-weight:900;animation:.3s pop}.rep-count{text-shadow:0 4px 24px #000000e6;margin:0;font-size:120px;font-weight:900;line-height:1;animation:.25s pop}.form-score{color:var(--accent);text-shadow:0 1px 4px #000000e6;margin:0;font-size:18px;font-weight:700}.pulse{animation:.8s infinite pulse}@keyframes pop{0%{opacity:.4;transform:scale(1.6)}to{opacity:1;transform:scale(1)}}@keyframes pulse{0%,to{opacity:.5}50%{opacity:1}}.scene-host{z-index:8;pointer-events:none;position:absolute;inset:0}.scene-host canvas{position:absolute;inset:0}.hud-hearts{letter-spacing:2px;background:#00000073;border-radius:999px;margin-left:auto;padding:5px 12px;font-size:18px}.heart-empty{opacity:.6}.hud-reps-pill.urgent{border-color:var(--danger);color:var(--danger);animation:.6s infinite pulse}.battle-bottom{pointer-events:none;flex-direction:column;align-items:center;gap:6px;display:flex;position:absolute;bottom:56px;left:0;right:0}.battle-reps{text-shadow:0 3px 12px #000000e6;font-size:40px;font-weight:900;animation:.2s pop}.combo-badge{color:var(--accent-2);text-shadow:0 2px 8px #000000e6;font-size:20px;font-weight:900;animation:.25s pop}.charge-warning{color:var(--danger);border:1px solid var(--danger);background:#0000008c;border-radius:999px;padding:6px 14px;font-size:15px;font-weight:800;animation:.7s infinite pulse}.cheat-hint{opacity:.6;font-family:ui-monospace,Consolas,monospace;font-size:12px}.victory-card.defeat{border-color:var(--danger);box-shadow:0 0 60px #f8717133}.victory-stars{letter-spacing:4px;margin:4px 0 0;font-size:30px}.hud-debug{color:var(--text-dim);background:#00000080;border-radius:8px;align-self:flex-start;margin:0 12px 12px;padding:4px 10px;font-family:ui-monospace,Consolas,monospace;font-size:12px}.victory-overlay{pointer-events:auto;background:#0d0f1ab3;justify-content:center;align-items:center;padding:24px;display:flex;position:absolute;inset:0}.victory-card{background:var(--bg-card);border:1px solid var(--accent);text-align:center;border-radius:20px;width:100%;max-width:380px;padding:32px 28px;animation:.35s pop;box-shadow:0 0 60px #4ade8040}.victory-title{margin:0;font-size:34px;font-weight:900}.victory-sub{color:var(--text-dim);margin:6px 0 20px}.victory-stats{justify-content:space-around;margin-bottom:24px;display:flex}.victory-stats>div{flex-direction:column;gap:2px;display:flex}.stat-value{color:var(--accent);font-size:26px;font-weight:800}.stat-label{color:var(--text-dim);text-transform:uppercase;letter-spacing:1px;font-size:12px}.victory-actions{justify-content:center;gap:12px;display:flex}.btn-primary,.btn-secondary{border:none;border-radius:12px;padding:12px 22px;font-size:16px;font-weight:700}.btn-primary{background:var(--accent);color:#0d0f1a}.btn-secondary{border:1px solid var(--border);color:var(--text);background:0 0}
