:root{--bg1: #1e1b4b;--bg2: #312e81;--accent: #f59e0b;--accent2: #fb7185;--good: #34d399;--panel: rgba(255, 255, 255, .07);--panel-border: rgba(255, 255, 255, .15);--text: #f8fafc;--muted: #c7d2fe}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;font-family:Segoe UI,system-ui,-apple-system,sans-serif;color:var(--text);background:linear-gradient(135deg,var(--bg1),var(--bg2) 60%,#4c1d95);overflow:hidden}#app,.screen{width:100%;height:100vh}.screen{display:flex;align-items:center;justify-content:center}.hidden{display:none!important}.panel{width:min(680px,92vw);max-height:94vh;overflow-y:auto;background:var(--panel);border:1px solid var(--panel-border);border-radius:24px;padding:32px;backdrop-filter:blur(14px);box-shadow:0 24px 60px #0006;text-align:center}.title{font-size:2.4rem;font-weight:800;letter-spacing:-.5px;margin-bottom:18px}.title .accent{background:linear-gradient(90deg,var(--accent),var(--accent2));-webkit-background-clip:text;background-clip:text;color:transparent}.lead{font-size:1.1rem;color:var(--text);margin:12px 0;line-height:1.5}.note{font-size:.85rem;color:var(--muted);margin:14px 0}.hint{font-size:.85rem;color:var(--muted);margin-top:16px}.how{list-style:none;text-align:left;margin:18px auto;max-width:420px;display:grid;gap:10px}.how li{background:#0003;padding:12px 16px;border-radius:14px;font-size:1rem;display:flex;align-items:center;gap:12px}.how .emoji{font-size:1.5rem}.btn{font-family:inherit;cursor:pointer;border:none;border-radius:14px;font-size:1rem;font-weight:600;padding:14px 28px;transition:transform .08s ease,box-shadow .2s ease,opacity .2s}.btn.primary{background:linear-gradient(90deg,var(--accent),var(--accent2));color:#1e1b4b;box-shadow:0 8px 24px #f59e0b66;margin-top:10px}.btn.primary:hover{transform:translateY(-2px)}.btn.primary:disabled{opacity:.4;cursor:not-allowed;transform:none;box-shadow:none}.btn.big{font-size:1.2rem;padding:18px 44px}.btn.secondary{background:#ffffff1a;color:var(--text);border:1px solid var(--panel-border);margin-top:8px}.btn.secondary:hover{background:#ffffff2e;transform:translateY(-2px)}.btn.link{background:none;color:var(--accent);text-decoration:underline;padding:6px 10px;font-size:.9rem}kbd{background:#ffffff26;border-radius:6px;padding:2px 8px;font-family:monospace;border:1px solid var(--panel-border)}.cam-wrap{position:relative;margin:16px auto;border-radius:18px;overflow:hidden;background:#000;border:2px solid var(--panel-border)}.cam-wrap video,.cam-wrap canvas{display:block;width:100%;height:100%;transform:scaleX(-1)}.cam-wrap canvas{position:absolute;inset:0}.cam-wrap.large{width:min(480px,80vw);aspect-ratio:4 / 3}.cam-wrap.mini{position:fixed;bottom:18px;right:18px;width:200px;aspect-ratio:4 / 3;z-index:20;box-shadow:0 10px 30px #00000080}.cam-status{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;text-align:center;padding:16px;background:#0000008c;font-size:.95rem;transform:none}.cam-status.ok{background:#10b98140}.cam-status.hidden{display:none}.cam-error{color:#fca5a5;background:#ef44441f;border:1px solid rgba(239,68,68,.38);border-radius:12px;padding:10px 14px;margin:12px auto 0;max-width:42ch;font-size:.92rem;font-weight:600;line-height:1.4}.cam-error.hidden{display:none}.cam-status.loading{animation:cam-status-pulse 1.3s ease-in-out infinite}@keyframes cam-status-pulse{0%,to{opacity:1}50%{opacity:.55}}@media(prefers-reduced-motion:reduce){.cam-status.loading{animation:none}}.guide-intro{font-size:.9rem;color:var(--muted);margin:6px 0 0}.calib-steps{list-style:none;display:flex;justify-content:center;flex-wrap:wrap;gap:8px;margin:10px auto 6px}.calib-steps li{display:flex;align-items:center;gap:6px;padding:8px 14px;border-radius:999px;background:#0003;font-size:.9rem;color:var(--text)}.calib-steps .num{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:linear-gradient(90deg,var(--accent),var(--accent2));color:#1e1b4b;font-size:.8rem;font-weight:700}.calib-steps .emoji{font-size:1.15rem}.countdown-wrap{margin:18px 0}.countdown{font-size:3.5rem;font-weight:800;color:var(--accent);min-height:4rem}.panel:has([data-step=calibrate]:not(.hidden)){width:min(940px,95vw)}.calib-layout{display:flex;align-items:center;justify-content:center;gap:32px;flex-wrap:wrap}.calib-info{flex:1 1 360px;min-width:260px;text-align:left}.calib-layout .cam-wrap{flex:0 0 auto;margin:0}.calib-layout .cam-wrap.large{width:min(420px,44vw)}#calib-title{font-size:2.2rem;margin:0 0 10px;line-height:1.2}#calib-instr{font-size:1.5rem;color:var(--text);margin:0 0 16px;line-height:1.4}[data-step=calibrate] .countdown-wrap{margin:12px 0 0}[data-step=calibrate] .countdown{font-size:6.5rem;line-height:1;min-height:auto;text-align:left}[data-step=calibrate] .bar{width:100%;max-width:380px;height:14px;margin:18px 0 0}[data-step=calibrate] .readout{text-align:left;margin:10px 0 0}@media(max-width:760px){.calib-layout{flex-direction:column-reverse}.calib-info,[data-step=calibrate] .countdown{text-align:center}[data-step=calibrate] .bar{margin:18px auto 0}[data-step=calibrate] .readout{text-align:center}}.bar{width:80%;max-width:340px;height:10px;margin:10px auto;background:#0000004d;border-radius:999px;overflow:hidden}.bar-fill{height:100%;width:0%;background:linear-gradient(90deg,var(--good),var(--accent));transition:width .1s linear}.readout{font-size:.85rem;color:var(--muted);font-family:monospace;min-height:1.2em}.check{font-size:3rem}.hud{position:fixed;top:16px;left:0;right:0;display:flex;justify-content:flex-start;align-items:center;gap:18px;padding:0 24px;z-index:15;pointer-events:none}.score-box{font-size:1.6rem;font-weight:800;font-family:monospace;display:flex;gap:16px;align-items:baseline}.score-box .hi{font-size:.9rem;color:var(--muted)}.action-pill{background:#00000059;border:1px solid var(--panel-border);border-radius:999px;padding:8px 20px;font-weight:700;letter-spacing:1px;font-size:.9rem}.action-pill.jump{background:#f59e0b80}.action-pill.duck{background:#34d39980}#topbar{position:fixed;top:14px;right:14px;z-index:60;display:flex;align-items:center;gap:10px}.lang-switcher{position:relative}.lang-btn{display:flex;align-items:center;gap:8px;cursor:pointer;background:#0006;border:1px solid var(--panel-border);border-radius:999px;padding:8px 14px;color:var(--text);font-family:inherit;font-size:.95rem;font-weight:600;backdrop-filter:blur(8px);transition:background .2s,transform .08s ease}.lang-btn:hover{background:#0009}.lang-btn .flag{font-size:1.2rem;line-height:1}.lang-btn .caret{font-size:.8rem;opacity:.8}.lang-menu{position:absolute;top:calc(100% + 8px);right:0;min-width:180px;list-style:none;margin:0;padding:6px;background:#1e1b4bf5;border:1px solid var(--panel-border);border-radius:14px;box-shadow:0 16px 40px #00000080;backdrop-filter:blur(12px)}.lang-menu li{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;cursor:pointer;font-size:1rem;transition:background .15s}.lang-menu li:hover{background:#ffffff1a}.lang-menu li.active{background:#f59e0b40;font-weight:700}.lang-menu li .flag{font-size:1.25rem}.mute-btn{pointer-events:auto;cursor:pointer;background:#00000059;border:1px solid var(--panel-border);border-radius:999px;width:44px;height:44px;font-size:1.2rem;line-height:1;color:var(--text);transition:transform .08s ease,background .2s}.mute-btn:hover{transform:scale(1.08);background:#00000080}.mute-btn.muted{opacity:.6}#game{display:block;width:100vw;height:100vh}.overlay{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;background:#0f0c29d1;backdrop-filter:blur(6px);z-index:30;text-align:center}.overlay h2{font-size:1.8rem}.overlay p{font-size:1rem}.fireworks-canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0}.go-content{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:8px;width:min(520px,94vw);max-height:96vh;overflow-y:auto;padding:14px}.newhigh{width:100%;background:#f59e0b24;border:1px solid rgba(245,158,11,.5);border-radius:16px;padding:12px;display:flex;flex-direction:column;gap:8px}.congrats{font-size:1.05rem!important;font-weight:800;background:linear-gradient(90deg,var(--accent),var(--accent2));-webkit-background-clip:text;background-clip:text;color:transparent}.name-row{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}.name-input{padding:9px 14px;border-radius:12px;border:1px solid var(--panel-border);background:#ffffff1f;color:var(--text);font-size:1rem;font-family:inherit;width:210px;text-align:center}.name-input:focus{outline:2px solid var(--accent)}.lb-title{font-size:1.15rem;margin-top:2px}.lb-list{list-style:none;width:100%;display:flex;flex-direction:column;gap:4px;padding:0;margin:0}.lb-row{display:grid;grid-template-columns:40px 1fr auto auto;gap:10px;align-items:center;padding:6px 12px;background:#0000004d;border-radius:10px;font-size:.88rem}.lb-rank{font-weight:800;font-size:.95rem}.lb-name{text-align:left;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lb-score{font-family:monospace;font-weight:700;color:var(--accent)}.lb-date{font-size:.72rem;color:var(--muted);white-space:nowrap}.lb-empty{text-align:center;color:var(--muted);padding:16px}.lb-row.highlight{background:linear-gradient(90deg,#f59e0b73,#fb718573);border:1px solid var(--accent);box-shadow:0 0 22px #f59e0b99;animation:pulseHi .9s ease-in-out infinite alternate}@keyframes pulseHi{0%{transform:scale(1);box-shadow:0 0 14px #f59e0b66}to{transform:scale(1.035);box-shadow:0 0 28px #f59e0bbf}}.go-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;margin-top:2px}.go-actions .btn{margin-top:0;padding:10px 22px}.credit{position:fixed;left:14px;bottom:14px;z-index:55;padding:6px 12px;background:#0000006b;border:1px solid var(--panel-border);border-radius:12px;backdrop-filter:blur(8px)}.credit-line{font-size:.72rem;line-height:1.35;color:var(--muted)}@media(max-width:520px){.credit{padding:5px 10px}.credit-line{font-size:.65rem}}.app-version{position:fixed;right:max(10px,env(safe-area-inset-right));bottom:max(6px,env(safe-area-inset-bottom));z-index:1000;font-size:11px;color:#ffffff8c;text-shadow:0 1px 3px rgba(0,0,0,.6);pointer-events:none;user-select:none}
