: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);min-height:100vh;min-height:100svh;height:100vh;height:100svh;width:100vw;overflow:hidden;padding-bottom:env(safe-area-inset-bottom,0px)}#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:#000;border:1px solid rgba(255,255,255,.2);border-radius:4px;padding:8px;transition:opacity .3s ease}.rules-dropdown.hidden,#rules-btn-mobile,#rules-dropdown-mobile{display:none}#rules-dropdown-mobile:not(.hidden){display:block}.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:0;opacity:.7;position:relative;top:-2.5px}#refresh-btn:hover{opacity:1}.refresh-text{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:1px;margin-left: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:-5px;display:none}#race-btn:hover{opacity:1}.race-text{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:1px;margin-right:4px;display:inline-block;vertical-align:baseline;position:relative;top:0;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:-4px;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{font-size:1.2rem;font-weight:700;color:#ffffffb3;font-family:monospace;margin-left:.5rem;vertical-align:middle;text-transform:none}.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;white-space:nowrap}.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}.sound-on-badge{position:absolute;bottom:-8px;left:40%;transform:translate(-50%);font-size:.6rem;color:#fff;opacity:0;white-space:nowrap;transition:opacity .3s ease}#race-btn:hover .sound-on-badge,#race-btn.sound-active .sound-on-badge{opacity:.7}@keyframes slowFade{0%{opacity:0;transform:translate(-50%,-50%) scale(.95)}40%{opacity:1;transform:translate(-50%,-50%) scale(1)}75%{opacity:1;transform:translate(-50%,-50%) scale(1)}to{opacity:0;transform:translate(-50%,-50%) scale(1)}}@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.3);opacity:.5}30%{transform:translate(-50%,-50%) scale(1);opacity:1}to{transform:translate(-50%,-50%) scale(1);opacity:1}}@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;will-change:transform,opacity;contain:layout style}@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;will-change:transform,opacity;contain:layout style}.quadrant-concert-status{position:absolute;top:10px;right:10px;z-index:100;pointer-events:none;animation:statusFadeIn .2s ease-out}.quadrant:nth-child(2) .quadrant-concert-status{top:62px;right:20px}.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;position:relative;top:-3px;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%;min-height:100%;width:100%}.quadrant{position:relative;display:flex;flex-direction:column;justify-content:flex-start;align-items:center;padding-top:6%;border:1px solid rgba(255,255,255,.1);background:#ffffff05;transition:all .3s ease;overflow:hidden}.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)}.name-medal{margin-left:6px;font-size:.75rem;text-transform:none;opacity:.7;font-weight:400;letter-spacing:0;color:var(--text-color);position:relative;top:-2px}.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;position:relative;top:-2px}.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}.year-total{display:none}.year-total-desktop{display:flex;align-items:center}.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,minmax(0,1fr));min-height:100%}#period-toggle{top:calc(44vh - 17px);left:auto;right:10px;transform:none}.quadrant{justify-content:flex-start;padding-top:6%;padding-bottom:1%}.score{font-size:8vh}.emoji{font-size:5.5vh}.user-info{top:8px;left:8px;z-index:50}.user-name{font-size:.85rem}.stats-container{margin-top:-2px;max-width:70%;flex-direction:column;align-items:flex-start;gap:.15rem}.year-total{display:inline;font-size:3vw;opacity:.5;font-weight:600;margin-left:-.5rem;align-self:center}.year-total-desktop{display:none}.score-container{margin-bottom:0;margin-top:20px;gap:.3rem}.year-total{display:inline;font-size:2vw;opacity:.5;font-weight:600;margin-left:.5rem}.timeline-container,.flame-container,.data-container{height:70%;bottom:2%}.star{animation-duration:8s!important}#period-toggle{gap:6px}#toggle-btn,#race-btn,#concert-btn{font-size:.9rem;padding:5px 8px}#race-btn{position:fixed!important;top:50svh;transform:translateY(-50%);right:8px;left:auto;margin-right:0;z-index:210}#concert-btn{position:fixed!important;top:30px!important;right:-4px!important;left:auto!important;font-size:.8rem;padding:2px 5px;border:1px solid rgba(255,255,255,.5);border-radius:4px;background:#ffffff1a;z-index:200;display:flex;align-items:center;justify-content:center;opacity:1}#toggle-btn{font-size:.55rem;letter-spacing:0;padding:3px 5px;position:fixed!important;top:calc(23vh + 5px)!important;right:5px!important;left:auto!important;z-index:200}.race-countdown.ready{font-size:1.7rem;padding:0 15px;top:48%;text-align:center}.race-countdown.winner-announcement{font-size:2rem}.race-text{max-width:150px;font-size:.6rem;letter-spacing:0}.concert-text{max-width:150px;font-size:.55rem;letter-spacing:0;position:relative;top:1px;font-family:var(--font-main);font-weight:700;margin-right:4px}#refresh-btn{position:fixed!important;top:2px!important;right:-5px!important;left:auto!important;font-size:.8rem;padding:4px 6px;z-index:200}@supports (-webkit-touch-callout: none){#toggle-btn{top:calc(22vh + 5px)!important}}.refresh-text{max-width:150px;font-size:.55rem}.refresh-icon{font-size:.7rem}.rules-btn-inline{font-size:.45rem;padding:2px 4px;margin-top:2px}.rules-btn-inline,.rules-dropdown{display:none!important}#rules-btn-mobile{display:block;font-size:.55rem;padding:3px 5px;background:#ffffff1a;border:1px solid rgba(255,255,255,.3);color:#fff;border-radius:6px;cursor:pointer;position:fixed!important;top:calc(23vh + 28px)!important;right:5px!important;z-index:200}#rules-dropdown-mobile{background:#000;padding:6px 8px;border-radius:4px;position:fixed!important;top:calc(23vh + 50px)!important;right:5px!important;z-index:200}#rules-dropdown-mobile .rule{font-size:.5rem;margin-bottom:2px;opacity:.8}.quadrant-concert-status{top:55px;right:5px}.quadrant:nth-child(2) .quadrant-concert-status{top:75px}.quadrant-concert-status .supernova-count{font-size:1.2rem}}.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;touch-action:manipulation}.quadrant:hover .timeline-container,.quadrant:hover .flame-container,.quadrant:hover .data-container{opacity:1}.timeline-svg{width:100%;height:100%;overflow:visible}.timeline-svg.data-layer{pointer-events:all}.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;touch-action:manipulation}.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:none}.sun-hit-area{fill:transparent;pointer-events:all;cursor:pointer;touch-action:manipulation}.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:.6;transform:scale(.9)}50%{opacity:1;transform:scale(1.1)}}.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)}}.quadrant-cog{position:absolute;bottom:8px;right:8px;z-index:50;width:24px;height:24px;border-radius:50%;background:transparent;border:none;color:var(--text-color);font-size:.7rem;cursor:pointer;transition:all .3s ease;display:flex;align-items:center;justify-content:center;opacity:.2}.quadrant-cog:hover{opacity:.6;transform:rotate(45deg)}.modal{position:fixed;top:0;left:0;width:100%;height:100%;background:#000c;display:flex;align-items:center;justify-content:center;z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal.hidden{display:none}.modal-content{background:#1a1a1a;border:1px solid rgba(255,255,255,.2);border-radius:12px;padding:24px;width:90%;max-width:320px;box-shadow:0 8px 32px #00000080}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.modal-header h3{font-size:1.25rem;font-weight:700;color:var(--text-color);margin:0}.modal-close{background:none;border:none;color:var(--text-color);font-size:1.5rem;cursor:pointer;opacity:.7;transition:opacity .2s;line-height:1;padding:0}.modal-close:hover{opacity:1}.form-group{margin-bottom:16px}.form-group label{display:block;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:#ffffffb3;margin-bottom:6px}.form-group select,.form-group input{width:100%;padding:10px 12px;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:6px;color:var(--text-color);font-family:var(--font-main);font-size:.9rem;transition:border-color .2s}.form-group select:focus,.form-group input:focus{outline:none;border-color:#ffffff80}.form-group select option{background:#1a1a1a;color:var(--text-color)}.submit-btn{width:100%;padding:12px;background:linear-gradient(135deg,#4169e1,#6a5acd);border:none;border-radius:6px;color:#fff;font-family:var(--font-main);font-size:.9rem;font-weight:700;cursor:pointer;transition:all .3s ease;margin-top:8px}.submit-btn:hover{transform:translateY(-2px);box-shadow:0 4px 12px #4169e166}.submit-btn:active{transform:translateY(0)}@media(max-width:768px){.quadrant-cog{bottom:6px;right:6px;width:20px;height:20px;font-size:.6rem}.tooltip{font-size:.6rem;padding:3px 6px}}
