:root{--bg-color: #0a0a0a;--text-color: #ffffff;--font-main: "Outfit", sans-serif;--color-graeme: #4169E1;--color-jamal: #FFD700;--color-runako: #ff00ff;--color-carlyle: #ff5e00}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg-color);color:var(--text-color);font-family:var(--font-main);height:100vh;width:100vw;overflow:hidden}#period-toggle{position:fixed;top:20px;right:20px;z-index:100;display:flex;align-items:center}.rules-btn-inline{background:#ffffff1a;border:1px solid rgba(255,255,255,.3);color:var(--text-color);font-family:var(--font-main);font-size:.65rem;font-weight:700;padding:4px 8px;border-radius:4px;cursor:pointer;text-transform:uppercase;letter-spacing:1px;transition:all .3s ease;margin-top:6px}.rules-btn-inline:hover{background:#fff3;border-color:#ffffff80}.rules-dropdown{margin-top:6px;background:#000000e6;border:1px solid rgba(255,255,255,.2);border-radius:4px;padding:8px;transition:opacity .3s ease}.rules-dropdown.hidden{display:none}.rules-dropdown .rule{font-size:.65rem;margin-bottom:4px;color:var(--text-color);opacity:.8}#refresh-btn{background:none;border:none;color:var(--text-color);font-size:1rem;padding:6px 10px;border-radius:6px;cursor:pointer;transition:all .3s ease;margin-right:8px;opacity:.7;position:relative;top:-2px}#refresh-btn:hover{opacity:1}.refresh-text{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:1px;margin-right:4px;max-width:0;overflow:hidden;display:inline-block;vertical-align:baseline;position:relative;top:3px;transition:max-width .5s ease;white-space:nowrap}#refresh-btn:hover .refresh-text{max-width:150px}#race-btn{background:none;border:none;color:var(--text-color);font-size:1rem;padding:6px 10px;border-radius:6px;cursor:pointer;transition:all .3s ease;margin-right:8px;opacity:.7;position:relative;top:-2px;display:none}#race-btn:hover{opacity:1}.race-text{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:1px;margin-right:4px;max-width:0;overflow:hidden;display:inline-block;vertical-align:baseline;position:relative;top:3px;transition:max-width .5s ease;white-space:nowrap}#race-btn:hover .race-text{max-width:120px}#race-btn:disabled{opacity:.3;cursor:not-allowed}#concert-btn{background:none;border:none;color:var(--text-color);font-size:1rem;padding:6px 10px;border-radius:6px;cursor:pointer;transition:all .3s ease;margin-right:8px;opacity:.7;position:relative;top:-2px;display:none}#concert-btn:hover{opacity:1}.concert-text{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:1px;margin-right:4px;max-width:0;overflow:hidden;display:inline-block;vertical-align:baseline;position:relative;top:3px;transition:max-width .5s ease;white-space:nowrap}#concert-btn:hover .concert-text{max-width:180px}#concert-btn:disabled{opacity:.3;cursor:not-allowed}.runner{position:absolute;font-size:1.5rem;pointer-events:none;z-index:50;transform:scaleX(-1);left:0;bottom:0;width:4.5rem;text-align:left}.runner .fire{display:inline-block;transform:rotate(90deg)}.runner .smoke{display:inline-block;transform:rotate(180deg)}.race-timer{position:absolute;top:5%;left:50%;transform:translate(-50%);font-size:1.5rem;font-weight:700;color:#ffffffb3;text-align:center;font-family:monospace;z-index:20}.race-timer.finished{color:var(--accent-color)}.race-timer.winner{color:gold;text-shadow:0 0 10px rgba(255,215,0,.5)}.runner.at-start{transform:scaleX(-1);animation:runnerBounce .5s ease-in-out infinite}.runner.get-set{transform:scaleX(-1) scaleY(.8);animation:runnerReady .3s ease-out forwards}@keyframes runnerBounce{0%,to{transform:scaleX(-1) translateY(0)}50%{transform:scaleX(-1) translateY(-3px)}}@keyframes runnerReady{0%{transform:scaleX(-1) scaleY(1)}to{transform:scaleX(-1) scaleY(.85) translateY(2px)}}.runner-smoke{position:absolute;font-size:1.5rem;pointer-events:none;z-index:49;animation:smokePuff 1s ease-out forwards;transform:scaleX(-1)}@keyframes smokePuff{0%{opacity:1;transform:scaleX(-1) scale(1)}to{opacity:0;transform:scaleX(-1) scale(2) translate(20px)}}.runner.winner{animation:winnerCelebration .5s ease-out forwards}@keyframes winnerCelebration{0%{transform:scaleX(-1) scale(1)}50%{transform:scaleX(-1) scale(1.8);filter:drop-shadow(0 0 15px gold)}to{transform:scaleX(-1) scale(1.3);filter:drop-shadow(0 0 10px gold)}}.race-countdown{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);font-size:8rem;font-weight:900;color:gold;text-shadow:0 0 20px rgba(255,215,0,.8),0 0 40px rgba(255,215,0,.5),0 0 60px rgba(255,215,0,.3);z-index:1000;animation:countdownPulse 1s ease-out;pointer-events:none}.race-countdown.ready{font-size:4rem;animation:readyPulse 2s ease-in-out forwards}.race-countdown.pulse{animation:countdownPulse 1s ease-out}.race-countdown.go{color:#0f0;text-shadow:0 0 20px rgba(0,255,0,.8),0 0 40px rgba(0,255,0,.5),0 0 60px rgba(0,255,0,.3);animation:goFlash 1s ease-out}.race-countdown.winner-announcement{font-size:4rem;color:gold;animation:winnerPulse 3s ease-in-out infinite}@keyframes winnerPulse{0%,to{transform:translate(-50%,-50%) scale(1);opacity:1}50%{transform:translate(-50%,-50%) scale(1.1);opacity:.9}}@keyframes readyPulse{0%{transform:translate(-50%,-50%) scale(.9);opacity:0}40%{transform:translate(-50%,-50%) scale(1);opacity:1}60%{transform:translate(-50%,-50%) scale(1);opacity:1}to{transform:translate(-50%,-50%) scale(1.05);opacity:0}}@keyframes countdownPulse{0%{transform:translate(-50%,-50%) scale(1.5);opacity:0}20%{transform:translate(-50%,-50%) scale(1);opacity:1}80%{transform:translate(-50%,-50%) scale(1);opacity:1}to{transform:translate(-50%,-50%) scale(.8);opacity:.7}}@keyframes goFlash{0%{transform:translate(-50%,-50%) scale(1.5);opacity:0}30%{transform:translate(-50%,-50%) scale(1.2);opacity:1}to{transform:translate(-50%,-50%) scale(2);opacity:0}}.supernova-particle{position:absolute;width:6px;height:6px;border-radius:50%;pointer-events:none;animation:supernovaBurst .8s ease-out forwards}@keyframes supernovaBurst{0%{transform:translate(-50%,-50%) scale(1);opacity:1}to{transform:translate(-50%,-50%) scale(0);opacity:0}}.supernova-flash{position:absolute;border-radius:50%;pointer-events:none;animation:supernovaFlash .5s ease-out forwards}.quadrant-concert-status{position:absolute;top:10px;right:10px;z-index:100;pointer-events:none;animation:statusFadeIn .2s ease-out}.quadrant-concert-status .supernova-count{font-size:2rem;font-weight:900;text-shadow:0 0 20px var(--player-color),0 0 40px var(--player-color);letter-spacing:2px}@keyframes statusFadeIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes supernovaFlash{0%{transform:translate(-50%,-50%) scale(0);opacity:1}50%{transform:translate(-50%,-50%) scale(3);opacity:.8}to{transform:translate(-50%,-50%) scale(5);opacity:0}}#toggle-btn{background:#ffffff1a;border:1px solid rgba(255,255,255,.3);color:var(--text-color);font-family:var(--font-main);font-size:.75rem;font-weight:700;padding:6px 12px;border-radius:6px;cursor:pointer;text-transform:uppercase;letter-spacing:1px;transition:all .3s ease}#toggle-btn:hover{background:#fff3;border-color:#ffffff80;box-shadow:0 0 20px #fff3}#app{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;height:100%;width:100%}.quadrant{position:relative;display:flex;flex-direction:column;justify-content:flex-start;align-items:center;padding-top:10%;border:1px solid rgba(255,255,255,.1);background:#ffffff05;transition:all .3s ease}.quadrant:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at center,var(--accent-color),transparent 70%);opacity:.05;pointer-events:none}.quadrant:hover{background:#ffffff0d;box-shadow:inset 0 0 20px var(--accent-color-dim)}.user-info{position:absolute;top:20px;left:20px;z-index:10}.user-name{font-size:1.5rem;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--accent-color);text-shadow:0 0 10px var(--accent-color-dim)}.stats-container{display:flex;gap:.75rem;font-size:.75rem;opacity:.7;margin-top:4px}.stat{display:flex;align-items:center;gap:.25rem}.stat.firepower{color:gold}.stat.supernovas{color:#87cefa}.stat.medal{display:inline-flex;align-items:center}.medal-text{position:relative;top:2px}.score-container{display:flex;align-items:center;gap:1rem;position:relative;z-index:10}.score{font-size:12vw;font-weight:800;line-height:1;text-shadow:0 0 20px rgba(0,0,0,.5)}.emoji{font-size:8vw;filter:drop-shadow(0 0 10px rgba(255,255,255,.2));opacity:.9}.user-graeme{--accent-color: var(--color-graeme);--accent-color-dim: rgba(65, 105, 225, .2)}.user-jamal{--accent-color: var(--color-jamal);--accent-color-dim: rgba(255, 215, 0, .2)}.user-runako{--accent-color: var(--color-runako);--accent-color-dim: rgba(255, 0, 255, .2)}.user-carlyle{--accent-color: var(--color-carlyle);--accent-color-dim: rgba(255, 94, 0, .2)}@media(max-width:768px){#app{grid-template-columns:1fr;grid-template-rows:repeat(4,22vh)}#period-toggle{top:44vh;left:50%;right:auto;transform:translate(-50%,-50%)}.quadrant{justify-content:flex-start;padding-top:7%}.score{font-size:8vh}.emoji{font-size:5.5vh}.user-name{font-size:.85rem;top:6px;left:10px}.score-container{margin-bottom:0}.timeline-container,.flame-container,.data-container{height:70%;bottom:2%}}.timeline-container{position:absolute;bottom:0;left:0;width:100%;height:40%;padding:0 20px 10px;opacity:.8;transition:opacity .3s ease}.flame-container,.data-container{position:absolute;bottom:0;left:0;width:100%;height:40%;padding:0 20px 10px;opacity:.8;transition:opacity .3s ease;pointer-events:none}.flame-container{z-index:1}.data-container{z-index:30;pointer-events:all}.quadrant:hover .timeline-container,.quadrant:hover .flame-container,.quadrant:hover .data-container{opacity:1}.timeline-svg{width:100%;height:100%;overflow:visible}.constellation-line{stroke:#ffffff4d;stroke-dasharray:10000;stroke-dashoffset:10000;animation:drawLine 2.5s ease-out forwards;opacity:1}.star-hit-area{fill:transparent;cursor:pointer;pointer-events:all}.star{fill:#fff;filter:drop-shadow(0 0 3px var(--accent-color));animation-name:twinkle;animation-duration:var(--twinkle-duration, 4s);animation-iteration-count:infinite;animation-timing-function:ease-in-out;animation-delay:var(--delay);transform-box:fill-box;transform-origin:center;pointer-events:none;transition:r .2s ease,fill .2s ease,filter .2s ease}.star.slow-glow{animation-name:slowGlow}.star-hit-area:hover+.star,.star.highlighted{r:8px;fill:var(--accent-color);filter:drop-shadow(0 0 8px var(--accent-color))}.sun-node{pointer-events:all;cursor:pointer}.gate-line{stroke:#ffffff0d;stroke-width:1;stroke-dasharray:4 4}.gate-label{fill:#ffffff4d;font-size:10px;font-family:var(--font-main);font-weight:700;letter-spacing:1px;text-anchor:middle}.tooltip{position:absolute;background:#000c;border:1px solid var(--accent-color);color:#fff;padding:5px 10px;border-radius:4px;font-size:.8rem;pointer-events:none;opacity:0;transition:opacity .2s ease;white-space:nowrap;transform:translate(-50%);z-index:20;box-shadow:0 0 10px #00000080}@keyframes drawLine{to{stroke-dashoffset:0}}@keyframes twinkle{0%,to{opacity:.4;transform:scale(1)}50%{opacity:1;transform:scale(1.2)}}@keyframes slowGlow{0%,to{opacity:.25;transform:scale(.9);filter:drop-shadow(0 0 1px var(--accent-color))}50%{opacity:1;transform:scale(1.3);filter:drop-shadow(0 0 12px var(--accent-color))}}@keyframes sunBlink{0%,to{opacity:0;transform:scale(.8)}50%{opacity:1;transform:scale(1.2)}}.sun-node{animation:sunBlink 4s infinite ease-in-out;animation-delay:var(--delay)}.glint{fill:#fff;pointer-events:none;transform-box:fill-box;transform-origin:center;animation:shine var(--duration) ease-in-out infinite;animation-delay:var(--delay);opacity:0}@keyframes shine{0%{opacity:0;transform:scale(0) rotate(0)}15%{opacity:1;transform:scale(1.2) rotate(45deg)}30%{opacity:0;transform:scale(0) rotate(90deg)}to{opacity:0;transform:scale(0) rotate(90deg)}}.flame-bg{pointer-events:none;transform-origin:bottom;animation:flameFlicker var(--flame-duration, 2s) ease-in-out infinite;animation-delay:var(--flame-delay, 0s)}@keyframes flameFlicker{0%,to{transform:scaleY(1);opacity:.6}25%{transform:scaleY(.9);opacity:.8}50%{transform:scaleY(1.1);opacity:.7}75%{transform:scaleY(.95);opacity:.9}}.sun-icon{animation:sunPulse 2s ease-in-out infinite;filter:drop-shadow(0 0 4px #FFD700) drop-shadow(0 0 8px #FFA500);vertical-align:middle;position:relative;top:-2px}@keyframes sunPulse{0%,to{transform:scale(1);filter:drop-shadow(0 0 4px #FFD700) drop-shadow(0 0 8px #FFA500)}50%{transform:scale(1.15);filter:drop-shadow(0 0 6px #FFD700) drop-shadow(0 0 12px #FFA500)}}
