/* Accepted-name celebrations stay over the route and never resize its artwork. */
#spinGame{position:relative}
#spinRoute .route-hud,#spinRoute .route-message,#spinRoute .connection-notice{z-index:10}
.rally-score-overlay{position:absolute;inset:0;z-index:6;pointer-events:none;overflow:hidden;opacity:0;transition:opacity 200ms}
.rally-score-overlay.visible{opacity:1}
.rally-score-overlay[hidden],.score-reveal-flyer[hidden]{display:none!important}
.score-reveal-scrim{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 48%,#0e2938a6,#12293c65 40%,#0e293800 74%)}
.score-reveal-stage{position:absolute;left:50%;top:var(--score-reveal-y,48%);width:min(320px,94%);height:300px;transform:translate(-50%,-50%);isolation:isolate}
.score-reveal-content{position:absolute;inset:0;display:flex;align-items:center;flex-direction:column;z-index:4;text-align:center;gap:0}
.score-reveal-name{max-width:96%;font:11px/1.6 Pixel,'Courier New',monospace;color:#fff4bc;text-shadow:0 2px 0 #263746,0 0 8px #0b1c2b;overflow-wrap:anywhere}
.score-reveal-pokemon{width:68px;height:68px;object-fit:contain;image-rendering:pixelated;filter:drop-shadow(0 4px 1px #0d223c60)}
.score-reveal-number{position:relative;margin-top:-6px;font:900 clamp(70px,20vw,100px)/1 Impact,'Arial Black',sans-serif;letter-spacing:-3px;transform:rotate(-7deg);filter:drop-shadow(0 5px 0 #071b29);transform-origin:center 75%;color:#c9f0ff}
.score-reveal-number>span{display:block;background:linear-gradient(#f0fdff 10%,#9ce9ff 40%,#2fa0e1 95%);background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;-webkit-text-stroke:1px #82cce7}
.score-reveal-number.gold>span{background-image:linear-gradient(#ffffe4 10%,#ffe995 35%,#ffd05a 55%,#d48023 100%);-webkit-text-stroke-color:#ffe3a0}
.score-reveal-number.gold{filter:drop-shadow(0 5px 0 #72451b) drop-shadow(0 0 16px #ffc95780)}
.score-reveal-gleam{position:absolute;inset:9px -10px 0;background:linear-gradient(115deg,transparent 40%,#ffffff75 46%,#ffffffbf 50%,transparent 58%);clip-path:polygon(8% 9%,89% 9%,96% 93%,1% 93%);opacity:0;mix-blend-mode:screen}
.score-reveal-number.impact{animation:score-reveal-impact 650ms cubic-bezier(.18,.72,.2,1) both}
.score-reveal-number.impact .score-reveal-gleam{animation:score-reveal-gleam 600ms 180ms ease-out both}
.score-reveal-label{color:#fff2bf;font:700 11px/1.4 'Courier New',monospace;letter-spacing:2px;margin-top:7px;text-shadow:0 2px 0 #243241}
.score-reveal-perfect{color:#ffedb0;letter-spacing:2px;font:700 13px/1.4 'Courier New',monospace;margin-top:8px;opacity:0;text-shadow:0 2px 0 #604315}
.score-reveal-perfect.show{animation:score-reveal-perfect 500ms ease-out both}
.score-reveal-bonuses{display:flex;justify-content:center;gap:5px;flex-wrap:wrap;margin-top:8px;padding:0 4px}
.score-reveal-bonuses span{padding:4px 5px;font:700 11px/1.3 'Courier New',monospace;white-space:normal;overflow-wrap:anywhere;background:#203d4a;color:#d4e3e8;border:1px solid #587c87;border-radius:3px;transition:background 150ms,color 150ms}
.score-reveal-bonuses span.active{background:#ffe298;color:#4a351f;border-color:#fff0b8;animation:score-reveal-chip 400ms ease-out}
.score-reveal-reward{font:900 27px/1.2 Impact,'Arial Black',sans-serif;color:#fff3bd;text-shadow:0 3px 0 #6a491a;opacity:0;margin-top:8px}
.score-reveal-reward.show{animation:score-reveal-reward 500ms ease-out both}
.score-reveal-rays{position:absolute;left:50%;top:43%;width:440px;height:440px;background:repeating-conic-gradient(from 8deg,#ffd26735 0deg 8deg,transparent 8deg 28deg);mask-image:radial-gradient(circle,transparent 19%,#000 23%,transparent 66%);transform:translate(-50%,-50%);opacity:0;z-index:0}
.rally-score-overlay.final .score-reveal-rays{animation:score-reveal-rays 1200ms ease-out both}
.score-reveal-halo{position:absolute;left:50%;top:43%;width:260px;height:220px;transform:translate(-50%,-50%);background:radial-gradient(ellipse,#51cffa45,transparent 68%);transition:background 300ms;z-index:1}
.rally-score-overlay.final .score-reveal-halo{background:radial-gradient(ellipse,#ffcb5c85,transparent 66%)}
.score-reveal-wave{position:absolute;z-index:2;left:50%;top:43%;width:140px;height:140px;border:3px solid #ffedb0;border-radius:50%;opacity:0}
.score-reveal-wave.wave{animation:score-reveal-wave 700ms ease-out both}
.score-reveal-flash{position:absolute;inset:0;z-index:6;background:#fff0b0;opacity:0}
.score-reveal-flash.flash{animation:score-reveal-flash 250ms ease-out both}
.score-reveal-particles{position:absolute;inset:0;z-index:5}
.score-reveal-spark{position:absolute;left:50%;top:43%;width:var(--size);height:var(--size);opacity:0;background:var(--spark);box-shadow:0 0 8px var(--spark);animation:score-reveal-spark var(--life) ease-out both}
.score-reveal-spark.streak{width:17px;height:3px;box-shadow:none}
.score-reveal-flyer{position:absolute;z-index:30;color:#ffe99c;font:900 26px/1.2 Impact,'Arial Black',sans-serif;text-shadow:0 2px 0 #5d431a;opacity:0;pointer-events:none;transform:translateX(-50%)}
.score-reveal-flyer.fly{animation:score-reveal-fly 720ms cubic-bezier(.35,.15,.3,1) both}
.score-reveal-kick{animation:score-reveal-kick 300ms ease-out}
.score-reveal-tally{display:inline-block;animation:score-reveal-tally 550ms ease-out}
.rally-score-overlay.compact .score-reveal-stage{height:230px}
.rally-score-overlay.compact .score-reveal-pokemon{width:44px;height:44px}
.rally-score-overlay.compact .score-reveal-number{font-size:68px}
.rally-score-overlay.compact .score-reveal-perfect,.rally-score-overlay.compact .score-reveal-label,.rally-score-overlay.compact .score-reveal-bonuses,.rally-score-overlay.compact .score-reveal-reward{margin-top:4px}
.rally-score-overlay.compact .score-reveal-name{font-size:10px}
.rally-score-overlay.compact .score-reveal-reward{font-size:23px}
.rally-score-overlay.tiny .score-reveal-stage{height:132px}
.rally-score-overlay.tiny .score-reveal-name,.rally-score-overlay.tiny .score-reveal-pokemon,.rally-score-overlay.tiny .score-reveal-bonuses,.rally-score-overlay.tiny .score-reveal-perfect{display:none}
.rally-score-overlay.tiny .score-reveal-number{font-size:62px}
@keyframes score-reveal-impact{0%{transform:rotate(-14deg) scale(.52);filter:blur(3px)}32%{transform:rotate(-3deg) scale(1.28,1.14);filter:blur(0)}52%{transform:rotate(-9deg) scale(.94,1.05)}76%{transform:rotate(-6deg) scale(1.05,.99)}100%{transform:rotate(-7deg) scale(1)}}
@keyframes score-reveal-gleam{0%{transform:translateX(-75%);opacity:0}30%{opacity:.5}100%{transform:translateX(75%);opacity:0}}
@keyframes score-reveal-wave{0%{transform:translate(-50%,-50%) scale(.55);opacity:.8}100%{transform:translate(-50%,-50%) scale(2.25);opacity:0}}
@keyframes score-reveal-rays{0%{opacity:0;transform:translate(-50%,-50%) rotate(-25deg) scale(.5)}25%{opacity:1}100%{opacity:.7;transform:translate(-50%,-50%) rotate(0deg) scale(1)}}
@keyframes score-reveal-flash{from{opacity:.2}to{opacity:0}}
@keyframes score-reveal-spark{0%{transform:translate(-50%,-50%) rotate(var(--angle)) scale(.3);opacity:0}12%{opacity:1}100%{transform:translate(calc(-50% + var(--x)),calc(-50% + var(--y))) rotate(var(--angle)) scale(.35);opacity:0}}
@keyframes score-reveal-perfect{0%{transform:translateY(8px) scale(1.2);opacity:0}100%{transform:translateY(0) scale(1);opacity:1}}
@keyframes score-reveal-chip{35%{transform:translateY(-3px)}100%{transform:translateY(0)}}
@keyframes score-reveal-reward{from{transform:translateY(10px) scale(.7);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}
@keyframes score-reveal-fly{0%{opacity:0;transform:translate(-50%,0) scale(.7)}15%{opacity:1}90%{opacity:.9}100%{opacity:0;transform:translate(calc(-50% + var(--fly-x)),var(--fly-y)) scale(.4)}}
@keyframes score-reveal-kick{15%{transform:translate(-3px,2px)}35%{transform:translate(3px,-2px)}65%{transform:translate(-1px,1px)}100%{transform:translate(0)}}
@keyframes score-reveal-tally{35%{transform:scale(1.2);color:#bd8917}100%{transform:scale(1)}}
@media(prefers-reduced-motion:reduce){.rally-score-overlay *,.score-reveal-flyer,.score-reveal-kick,.score-reveal-tally{animation:none!important;transition:none!important}.score-reveal-rays,.score-reveal-wave,.score-reveal-flash,.score-reveal-particles,.score-reveal-flyer{display:none}.score-reveal-perfect.show,.score-reveal-reward.show{opacity:1}}
