*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg-0:#060608;--bg-1:#0d0d14;--bg-2:#13131e;--bg-3:#1a1a28;--glass:#ffffff0a;--glass-border:#ffffff14;--purple:#7c3aed;--purple-light:#a855f7;--purple-dim:#7c3aed33;--cyan:#06b6d4;--cyan-light:#22d3ee;--cyan-dim:#06b6d433;--amber:#f59e0b;--amber-light:#fbbf24;--green:#10b981;--red:#ef4444;--text-primary:#f1f5f9;--text-secondary:#94a3b8;--text-muted:#475569;--grad-primary:linear-gradient(135deg, var(--purple) 0%, var(--cyan) 100%);--grad-purple:linear-gradient(135deg, #7c3aed 0%, #a855f7 100%);--grad-cyber:linear-gradient(135deg, #0d0d14 0%, #1a0a2e 50%, #0a1a2e 100%);--shadow-purple:0 0 30px #7c3aed66;--shadow-cyan:0 0 30px #06b6d466;--shadow-card:0 8px 32px #00000080;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--space-16:64px;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:24px;--radius-full:9999px;--font:"Outfit", sans-serif;--transition-fast:.15s ease;--transition-base:.25s ease;--transition-slow:.4s ease}html,body{height:100%;font-family:var(--font);background:var(--bg-0);color:var(--text-primary);-webkit-font-smoothing:antialiased;overflow-x:hidden}#root{flex-direction:column;min-height:100vh;display:flex}body:before,body:after{content:"";filter:blur(120px);pointer-events:none;z-index:0;border-radius:50%;position:fixed}body:before{background:#7c3aed1f;width:600px;height:600px;top:-200px;right:-200px}body:after{background:#06b6d414;width:500px;height:500px;bottom:-150px;left:-150px}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:var(--bg-1)}::-webkit-scrollbar-thumb{background:var(--bg-3);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--purple-dim)}.glass-card{background:var(--glass);border:1px solid var(--glass-border);border-radius:var(--radius-xl);-webkit-backdrop-filter:blur(16px)}.btn{justify-content:center;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-6);border-radius:var(--radius-full);font-family:var(--font);cursor:pointer;transition:all var(--transition-base);-webkit-user-select:none;user-select:none;border:none;font-size:1rem;font-weight:600;display:inline-flex;position:relative;overflow:hidden}.btn:before{content:"";transition:background var(--transition-fast);background:#fff0;position:absolute;inset:0}.btn:hover:before{background:#ffffff14}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:disabled:active{transform:none}.btn-primary{background:var(--grad-primary);color:#fff;box-shadow:var(--shadow-purple);padding:var(--space-4) var(--space-10);letter-spacing:.03em;font-size:1.1rem}.btn-primary:hover{transform:translateY(-2px);box-shadow:0 0 50px #7c3aed99}.btn-secondary{background:var(--glass);border:1px solid var(--glass-border);color:var(--text-primary)}.btn-secondary:hover{border-color:var(--purple-light);color:var(--purple-light)}.btn-ghost{color:var(--text-secondary);padding:var(--space-2) var(--space-4);background:0 0;font-size:.9rem}.btn-ghost:hover{color:var(--text-primary)}.input{background:var(--bg-2);border:1px solid var(--glass-border);border-radius:var(--radius-md);width:100%;color:var(--text-primary);font-family:var(--font);padding:var(--space-4) var(--space-5);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);outline:none;font-size:1.1rem}.input:focus{border-color:var(--purple);box-shadow:0 0 0 3px var(--purple-dim)}.input::placeholder{color:var(--text-muted)}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes scaleIn{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}@keyframes glow{0%,to{box-shadow:0 0 20px #7c3aed66}50%{box-shadow:0 0 50px #7c3aedcc,0 0 80px #06b6d44d}}@keyframes shimmer{0%{background-position:-200%}to{background-position:200%}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes countdownPop{0%{opacity:0;transform:scale(2.5)}30%{opacity:1;transform:scale(1)}70%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}@keyframes confettiFall{0%{opacity:1;transform:translateY(-100px)rotate(0)}to{opacity:0;transform:translateY(100vh)rotate(720deg)}}@keyframes rowSlideIn{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}@keyframes timerPulse{0%,to{transform:scaleX(1)}50%{transform:scaleX(1.01)}}@keyframes spinnerRotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-fade-in-up{animation:.5s both fadeInUp}.animate-scale-in{animation:.4s cubic-bezier(.34,1.56,.64,1) both scaleIn}.animate-fade-in{animation:.4s both fadeIn}.spinner{border:3px solid var(--bg-3);border-top-color:var(--purple);border-radius:50%;width:40px;height:40px;animation:.8s linear infinite spinnerRotate}.gradient-text{background:var(--grad-primary);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.app{z-index:1;flex-direction:column;min-height:100vh;display:flex;position:relative}.tab-nav{padding:var(--space-4) var(--space-6);justify-content:center;gap:var(--space-2);z-index:100;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-bottom:1px solid var(--glass-border);background:#060608cc;display:flex;position:sticky;top:0}.tab-nav-inner{background:var(--bg-2);border-radius:var(--radius-full);border:1px solid var(--glass-border);gap:2px;padding:4px;display:flex}.tab-btn{padding:var(--space-2) var(--space-6);border-radius:var(--radius-full);color:var(--text-secondary);font-family:var(--font);cursor:pointer;transition:all var(--transition-base);-webkit-user-select:none;user-select:none;white-space:nowrap;background:0 0;border:none;font-size:.95rem;font-weight:600}.tab-btn.active{background:var(--grad-primary);color:#fff;box-shadow:0 0 20px #7c3aed66}.tab-btn:not(.active):hover{color:var(--text-primary)}.tab-content{padding:var(--space-8) var(--space-4);flex-direction:column;flex:1;align-items:center;display:flex}@media (width<=600px){.tab-content{padding:var(--space-4) var(--space-3)}}.logo{text-align:center;margin-bottom:var(--space-8);animation:.5s fadeInUp}.logo-title{letter-spacing:-.03em;font-size:clamp(3rem,10vw,5rem);font-weight:900;line-height:1}.logo-sub{color:var(--text-secondary);margin-top:var(--space-2);letter-spacing:.1em;text-transform:uppercase;font-size:1rem}.name-entry{align-items:center;gap:var(--space-6);flex-direction:column;width:100%;max-width:420px;animation:.5s .1s both fadeInUp;display:flex}.name-entry .glass-card{width:100%;padding:var(--space-8);gap:var(--space-5);flex-direction:column;display:flex}.name-entry label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.1em;font-size:.85rem;font-weight:600}.name-entry-hint{color:var(--text-muted);text-align:center;font-size:.85rem;line-height:1.6}.game-page{align-items:center;gap:var(--space-6);flex-direction:column;width:100%;max-width:700px;display:flex}@media (width<=600px){.game-page{gap:var(--space-3)}}.camera-container{border-radius:var(--radius-xl);background:var(--bg-2);aspect-ratio:4/3;border:2px solid var(--glass-border);width:100%;max-width:640px;transition:border-color var(--transition-slow), box-shadow var(--transition-slow);position:relative;overflow:hidden}@media (width<=600px){.camera-container{aspect-ratio:unset;border-radius:var(--radius-lg);height:min(56vw,58vh)}}.camera-container.hands-detected{border-color:var(--cyan);animation:2s ease-in-out infinite glow;box-shadow:0 0 40px #06b6d44d,inset 0 0 20px #06b6d40d}.camera-container.playing{border-color:var(--purple-light);box-shadow:var(--shadow-purple)}.camera-video{object-fit:cover;width:100%;height:100%;position:absolute;inset:0;transform:scaleX(-1)}.camera-canvas{width:100%;height:100%;position:absolute;inset:0;transform:scaleX(-1)}.camera-loading{justify-content:center;align-items:center;gap:var(--space-4);color:var(--text-secondary);flex-direction:column;font-size:.9rem;display:flex;position:absolute;inset:0}.hands-badge{top:var(--space-3);right:var(--space-3);padding:4px var(--space-3);background:var(--cyan-dim);border:1px solid var(--cyan);border-radius:var(--radius-full);color:var(--cyan-light);text-transform:uppercase;letter-spacing:.1em;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);font-size:.8rem;font-weight:700;position:absolute}.countdown-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:10;background:#060608b3;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.countdown-number{background:var(--grad-primary);-webkit-text-fill-color:transparent;filter:drop-shadow(0 0 30px #7c3aed99);-webkit-background-clip:text;background-clip:text;font-size:clamp(5rem,20vw,10rem);font-weight:900;line-height:1;animation:1s forwards countdownPop}.countdown-go{color:var(--green);filter:drop-shadow(0 0 30px #10b981cc);letter-spacing:.05em;font-size:clamp(3rem,12vw,7rem);font-weight:900;animation:.8s forwards countdownPop}.game-overlay{gap:var(--space-4);flex-direction:column;width:100%;animation:.3s fadeIn;display:flex}.timer-bar-container{background:var(--bg-3);border-radius:var(--radius-full);width:100%;height:8px;overflow:hidden}.timer-bar-fill{border-radius:var(--radius-full);background:var(--grad-primary);height:100%;transition:width .1s linear;box-shadow:0 0 10px #7c3aed99}.timer-bar-fill.warning{background:linear-gradient(90deg, var(--amber), var(--red))}.stats-row{justify-content:space-between;align-items:center;gap:var(--space-4);display:flex}.stat-card{padding:var(--space-4) var(--space-5);border-radius:var(--radius-lg);text-align:center;background:var(--glass);border:1px solid var(--glass-border);flex:1}.stat-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.1em;margin-bottom:var(--space-1);font-size:.75rem;font-weight:700}.stat-value{font-size:2.2rem;font-weight:900;line-height:1}.stat-value.rep-count{background:var(--grad-primary);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:2.8rem;transition:transform .1s cubic-bezier(.34,1.56,.64,1)}.stat-value.rep-count.bump{transform:scale(1.3)}.stat-value.timer{color:var(--text-primary)}.stat-value.timer.warning{color:var(--red);animation:.5s infinite pulse}.player-tag{color:var(--text-secondary);text-align:center;font-size:.9rem}.player-tag span{color:var(--purple-light);font-weight:700}.ready-section{align-items:center;gap:var(--space-4);flex-direction:column;animation:.4s fadeInUp;display:flex}.ready-hint{color:var(--text-secondary);text-align:center;max-width:320px;font-size:.9rem;line-height:1.6}.hand-icon{font-size:2.5rem;animation:2s ease-in-out infinite float}.result-screen{justify-content:center;align-items:center;gap:var(--space-4);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:20;border-radius:var(--radius-xl);padding:var(--space-4);background:#060608eb;flex-direction:column;animation:.5s fadeIn;display:flex;position:absolute;inset:0;overflow-y:auto}@media (width<=600px){.result-screen{z-index:200;padding-top:max(env(safe-area-inset-top), var(--space-8));padding-bottom:max(env(safe-area-inset-bottom), var(--space-6));padding-left:var(--space-4);padding-right:var(--space-4);border-radius:0;justify-content:flex-start;position:fixed;inset:0}}.result-score-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.12em;font-size:.85rem;font-weight:700}.result-score-number{background:var(--grad-primary);-webkit-text-fill-color:transparent;filter:drop-shadow(0 0 30px #7c3aed80);-webkit-background-clip:text;background-clip:text;font-size:clamp(3.5rem,15vw,7rem);font-weight:900;line-height:1;animation:.5s cubic-bezier(.34,1.56,.64,1) scaleIn}.result-score-unit{color:var(--text-secondary);margin-top:-var(--space-2);font-size:1rem}.result-saving{color:var(--text-muted);align-items:center;gap:var(--space-2);font-size:.85rem;display:flex}.result-actions{gap:var(--space-3);flex-direction:column;width:100%;max-width:320px;padding:0;display:flex}@media (width<=600px){.result-actions{max-width:100%}}.result-name{color:var(--purple-light);font-size:1.1rem;font-weight:700}.result-confetti{pointer-events:none;border-radius:var(--radius-xl);position:absolute;inset:0;overflow:hidden}.leaderboard-page{width:100%;max-width:600px;animation:.4s fadeInUp}.leaderboard-header{text-align:center;margin-bottom:var(--space-8)}.leaderboard-title{margin-bottom:var(--space-2);font-size:2.2rem;font-weight:900}.leaderboard-subtitle{color:var(--text-secondary);font-size:.95rem}.leaderboard-list{gap:var(--space-2);flex-direction:column;display:flex}.lb-row{align-items:center;gap:var(--space-4);padding:var(--space-4) var(--space-5);border-radius:var(--radius-lg);background:var(--glass);border:1px solid var(--glass-border);transition:all var(--transition-base);animation:.4s both rowSlideIn;display:flex}.lb-row:hover{background:#7c3aed0f;border-color:#7c3aed33;transform:translate(4px)}.lb-row.top-1{background:#f59e0b0d;border-color:#f59e0b66}.lb-row.top-2{border-color:#94a3b84d}.lb-row.top-3{border-color:#b478504d}.lb-row.new-entry{border-color:var(--cyan);animation:.4s both rowSlideIn;box-shadow:0 0 20px #06b6d433}.lb-rank{text-align:center;min-width:36px;color:var(--text-muted);font-size:1rem;font-weight:800}.lb-rank.gold{color:var(--amber);font-size:1.3rem}.lb-rank.silver{color:#94a3b8;font-size:1.2rem}.lb-rank.bronze{color:#b47850;font-size:1.2rem}.lb-avatar{background:var(--grad-primary);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;font-size:1rem;font-weight:800;display:flex}.lb-name{color:var(--text-primary);flex:1;font-size:1rem;font-weight:700}.lb-score{background:var(--grad-primary);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:1.4rem;font-weight:900}.lb-unit{color:var(--text-muted);font-size:.75rem;font-weight:600}.lb-date{color:var(--text-muted);white-space:nowrap;font-size:.8rem}.lb-empty{text-align:center;padding:var(--space-16);color:var(--text-muted);font-size:1rem}.lb-empty .emoji{margin-bottom:var(--space-4);font-size:3rem;display:block}.lb-loading{align-items:center;gap:var(--space-4);padding:var(--space-16);color:var(--text-muted);flex-direction:column;display:flex}.realtime-badge{padding:4px var(--space-3);border-radius:var(--radius-full);color:var(--green);text-transform:uppercase;letter-spacing:.08em;background:#10b9811a;border:1px solid #10b9814d;align-items:center;gap:6px;font-size:.75rem;font-weight:700;display:inline-flex}.realtime-dot{background:var(--green);border-radius:50%;width:6px;height:6px;animation:1.5s ease-in-out infinite pulse}
