/* Reactive game-feel layer: progressively hotter streak atmosphere, answer bursts and sound control. */
.streak-atmosphere{position:fixed;inset:0;pointer-events:none;z-index:-1;overflow:hidden;opacity:0;transition:opacity .55s ease}
.streak-atmosphere i{position:absolute;width:4px;height:4px;border-radius:50%;background:#f8a6d6;box-shadow:0 0 16px currentColor;animation:streak-float 5s linear infinite;opacity:.55}
.streak-atmosphere i:nth-child(1){left:12%;bottom:-5%;animation-delay:-.4s}.streak-atmosphere i:nth-child(2){left:28%;bottom:-8%;animation-delay:-2.2s;animation-duration:6.4s}.streak-atmosphere i:nth-child(3){left:47%;bottom:-6%;animation-delay:-1.2s;animation-duration:4.7s}.streak-atmosphere i:nth-child(4){left:68%;bottom:-7%;animation-delay:-3.1s;animation-duration:6.9s}.streak-atmosphere i:nth-child(5){left:82%;bottom:-4%;animation-delay:-.8s;animation-duration:5.6s}.streak-atmosphere i:nth-child(6){left:93%;bottom:-9%;animation-delay:-4.2s;animation-duration:7.1s}
body:has(.game-view.streak-warm:not(.hidden)) .streak-atmosphere{opacity:.24}body:has(.game-view.streak-hot:not(.hidden)) .streak-atmosphere{opacity:.45}body:has(.game-view.streak-blazing:not(.hidden)) .streak-atmosphere{opacity:.7}body:has(.game-view.streak-legendary:not(.hidden)) .streak-atmosphere{opacity:.95}
body:has(.game-view.streak-hot:not(.hidden)){background:radial-gradient(circle at 50% 85%,#6f33261f 0,transparent 42%),var(--bg)}body:has(.game-view.streak-blazing:not(.hidden)){background:radial-gradient(circle at 50% 85%,#b64a2c25 0,transparent 48%),radial-gradient(circle at 50% 20%,#8446c71b 0,transparent 40%),var(--bg)}body:has(.game-view.streak-legendary:not(.hidden)){background:radial-gradient(circle at 50% 90%,#ff74322f 0,transparent 50%),radial-gradient(circle at 50% 15%,#cb61dc27 0,transparent 45%),var(--bg)}
.game-view .scoreboard{position:relative;isolation:isolate;transition:border-color .4s,box-shadow .4s,transform .4s,background .4s}.game-view .scoreboard:before{content:"";position:absolute;inset:-1px;border-radius:inherit;z-index:-1;opacity:0;transition:opacity .35s;background:linear-gradient(110deg,#f8a6d6,#a78bfa,#ffe29a);filter:blur(13px)}
.game-view.streak-warm .scoreboard{border-color:#f8a6d62b}.game-view.streak-hot .scoreboard{border-color:#ffb36b55;background:#ff8b3a0a;box-shadow:0 0 24px #ff7b2818}.game-view.streak-hot .scoreboard:before{opacity:.14}.game-view.streak-blazing .scoreboard{border-color:#ff865e77;background:#ff673710;box-shadow:0 0 34px #ff6a2e25}.game-view.streak-blazing .scoreboard:before{opacity:.25}.game-view.streak-legendary .scoreboard{border-color:#ffd0818c;background:#ff873612;box-shadow:0 0 45px #ff7a2930,0 0 80px #c05cff12}.game-view.streak-legendary .scoreboard:before{opacity:.38;animation:aura-breathe 1.3s ease-in-out infinite alternate}
.game-view.streak-hot .score-flame{color:#ffb068;text-shadow:0 0 11px #ff783a88}.game-view.streak-blazing .score-flame{color:#ff8a55;text-shadow:0 0 14px #ff673acc;animation:flame-beat .8s ease-in-out infinite alternate}.game-view.streak-legendary .score-flame{color:#ffe294;text-shadow:0 0 18px #ffb04d,0 0 30px #e653ff88;animation:flame-beat .45s ease-in-out infinite alternate}
.score-pop{animation:score-pop .42s cubic-bezier(.2,.9,.25,1.5)}
.streak-state{align-self:center;margin-left:auto;margin-right:10px;font-size:8px;letter-spacing:1.5px;font-weight:850;color:#f4b7df;border:1px solid #f8a6d62e;background:#f8a6d60b;border-radius:999px;padding:5px 10px;white-space:nowrap;animation:badge-in .34s ease}.streak-hot .streak-state{color:#ffbf79;border-color:#ff99404a;background:#ff853811}.streak-blazing .streak-state{color:#ff9a6f;border-color:#ff734f66;background:#ff5e3b13;box-shadow:0 0 18px #ff653522}.streak-legendary .streak-state{color:#ffe5a5;border-color:#ffd07477;background:linear-gradient(100deg,#ff7b4117,#c258ff18);box-shadow:0 0 24px #ff9c452b;animation:badge-in .34s ease,legendary-shimmer 1.5s linear infinite}
.game-view.streak-hot .question-section h1{filter:drop-shadow(0 0 15px #ff824314)}.game-view.streak-blazing .question-section h1{filter:drop-shadow(0 0 18px #ff744927)}.game-view.streak-legendary .question-section h1{filter:drop-shadow(0 0 21px #ffb04b30)}
.game-view.streak-hot .pokemon-card:not(.wrong-choice):not(.correct-card){box-shadow:inset 0 0 50px #ff774006}.game-view.streak-blazing .pokemon-card:not(.wrong-choice):not(.correct-card){box-shadow:inset 0 0 65px #ff70440a}.game-view.streak-legendary .pokemon-card:not(.wrong-choice):not(.correct-card){box-shadow:inset 0 0 75px #ff99440d,0 0 18px #bd59e00b}
.answer-win-pulse .correct-card{animation:winner-card-pulse .72s cubic-bezier(.2,.9,.25,1.1)}.answer-loss-pulse .wrong-choice{animation:wrong-card-shake .48s ease}.answer-loss-pulse:after{content:"";position:fixed;inset:0;pointer-events:none;z-index:40;background:#ff375510;animation:loss-screen .55s ease forwards}.milestone-pulse:before{content:"";position:fixed;inset:-20%;pointer-events:none;z-index:35;background:radial-gradient(circle at center,#ffe49216 0,#ff76450e 22%,transparent 58%);animation:milestone-flash .9s ease-out forwards}
.fx-layer{position:fixed;inset:0;z-index:100;pointer-events:none;overflow:hidden}.fx-particle{position:absolute;display:block;border-radius:2px;background:#7ae0b4;box-shadow:0 0 12px currentColor;animation:particle-burst .9s cubic-bezier(.14,.65,.28,1) var(--delay) forwards}.fx-win .p1{background:#ffe29a}.fx-win .p2{background:#a78bfa}.fx-win .p3{background:#f8a6d6}.fx-loss .fx-particle{background:#fb8999;border-radius:50%}.fx-loss .p1{background:#d95f78}.fx-loss .p2{background:#f6c1c8}.fx-loss .p3{background:#81556a}.fx-ring{position:absolute;width:22px;height:22px;border-radius:50%;border:3px solid #7ae0b4;transform:translate(-50%,-50%);animation:ring-burst .62s ease-out forwards}.fx-loss .fx-ring{border-color:#fb8999}
.sound-toggle{margin-left:auto;border:1px solid #ffffff12;background:#ffffff03;color:var(--muted);border-radius:9px;padding:7px 10px;display:inline-flex;gap:7px;align-items:center;font-size:9px;font-weight:650;transition:.2s}.sound-toggle:hover{color:var(--ink);background:#ffffff07;border-color:#ffffff20}.sound-bars{display:inline-flex;gap:2px;align-items:end;height:10px}.sound-bars i{display:block;width:2px;border-radius:2px;background:currentColor}.sound-bars i:nth-child(1){height:4px}.sound-bars i:nth-child(2){height:8px}.sound-bars i:nth-child(3){height:6px}.sound-toggle[aria-pressed="true"] .sound-bars i{animation:sound-bars .8s ease-in-out infinite alternate}.sound-toggle[aria-pressed="true"] .sound-bars i:nth-child(2){animation-delay:-.3s}.sound-toggle[aria-pressed="true"] .sound-bars i:nth-child(3){animation-delay:-.55s}.sound-toggle[aria-pressed="false"]{opacity:.65}.sound-toggle[aria-pressed="false"] .sound-bars i{height:2px!important}
@keyframes particle-burst{0%{opacity:0;transform:translate(-50%,-50%) scale(.4) rotate(0)}12%{opacity:1}100%{opacity:0;transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) scale(.15) rotate(var(--rot))}}
@keyframes ring-burst{0%{opacity:.9;width:22px;height:22px}100%{opacity:0;width:240px;height:240px;border-width:1px}}
@keyframes winner-card-pulse{0%{transform:scale(1)}38%{transform:scale(1.025);box-shadow:0 0 48px #7ae0b43b}100%{transform:scale(1)}}
@keyframes wrong-card-shake{0%,100%{transform:translateX(0)}20%{transform:translateX(-7px) rotate(-.4deg)}40%{transform:translateX(6px) rotate(.4deg)}60%{transform:translateX(-4px)}80%{transform:translateX(2px)}}
@keyframes loss-screen{0%{opacity:1}100%{opacity:0}}
@keyframes milestone-flash{0%{opacity:0;transform:scale(.75)}25%{opacity:1}100%{opacity:0;transform:scale(1.2)}}
@keyframes score-pop{0%{transform:scale(1)}45%{transform:scale(1.55);color:#ffe29a;text-shadow:0 0 18px #ffad54}100%{transform:scale(1)}}
@keyframes aura-breathe{from{filter:blur(12px);transform:scale(.99)}to{filter:blur(17px);transform:scale(1.015)}}
@keyframes flame-beat{from{transform:scale(.92) rotate(-5deg)}to{transform:scale(1.12) rotate(4deg)}}
@keyframes badge-in{from{opacity:0;transform:translateY(-5px) scale(.96)}to{opacity:1;transform:none}}
@keyframes legendary-shimmer{0%,100%{filter:brightness(1)}50%{filter:brightness(1.3)}}
@keyframes streak-float{0%{transform:translateY(0) scale(.7);opacity:0}15%{opacity:.6}80%{opacity:.4}100%{transform:translateY(-110vh) scale(1.4);opacity:0}}
@keyframes sound-bars{from{transform:scaleY(.55)}to{transform:scaleY(1)}}
@media(max-width:650px){.streak-state{order:2;margin:6px auto 0;font-size:6px;padding:4px 7px;letter-spacing:1px}.game-toolbar{flex-wrap:wrap}.scoreboard{margin-left:auto}.game-bottom{gap:9px}.sound-toggle{margin-left:0;font-size:8px;padding:6px 8px}}
@media(prefers-reduced-motion:reduce){.streak-atmosphere,.fx-layer{display:none!important}.score-pop,.answer-win-pulse .correct-card,.answer-loss-pulse .wrong-choice,.milestone-pulse:before,.sound-toggle[aria-pressed="true"] .sound-bars i{animation:none!important}}
