.firework-layer{position:absolute;inset:0;z-index:7;overflow:hidden;pointer-events:none}.firework-burst{position:absolute;left:var(--x);top:var(--y);width:8px;height:8px;transform:scale(var(--burst-scale,1))}.firework-burst i{position:absolute;width:var(--particle-size,7px);height:var(--particle-size,7px);border-radius:50%;background:hsl(var(--h) 95% 62%);color:hsl(var(--h) 95% 62%);box-shadow:0 0 12px currentColor;animation:firework-particle 1.45s cubic-bezier(.1,.7,.2,1) forwards;transform:rotate(var(--a)) translateY(0)}

/* Die Basisanimation aus styles.css wird abgeschaltet: Pro Ereignis läuft exakt
   eine der folgenden Textanimationen. Letter-Drop animiert seine Buchstaben. */
.bingo-celebration.show[class*="effect-"]{animation:none}
.bingo-celebration.show.effect-spiral strong{animation:bingo-spiral 1.65s cubic-bezier(.15,.9,.3,1.12)}
.bingo-celebration.show.effect-warp strong{animation:bingo-warp 1.45s cubic-bezier(.1,.85,.2,1)}
.bingo-celebration.show.effect-glitch strong{animation:bingo-glitch 1.35s steps(3,end)}
.bingo-celebration.show.effect-powerup strong{animation:bingo-powerup 1.6s cubic-bezier(.1,.9,.25,1.12)}
.bingo-celebration.show.effect-pixelslam strong{animation:bingo-pixelslam 1.4s cubic-bezier(.1,.8,.2,1.1)}
.bingo-celebration.effect-letterdrop strong{display:flex;animation:none}.bingo-celebration.effect-letterdrop strong i{display:inline-block;font-style:normal;opacity:0;animation:bingo-letterdrop .95s cubic-bezier(.2,.8,.25,1.12) forwards;animation-delay:calc(var(--i)*.13s)}

@keyframes firework-particle{0%{opacity:1;transform:rotate(var(--a)) translateY(0) scale(1)}72%{opacity:1}100%{opacity:0;transform:rotate(var(--a)) translateY(calc(-1 * var(--travel,105px))) scale(.12)}}
@keyframes bingo-spiral{0%{opacity:0;transform:scale(.05) rotate(-720deg)}68%{opacity:1;transform:scale(1.15) rotate(12deg)}100%{transform:scale(1) rotate(0)}}@keyframes bingo-warp{0%{opacity:0;transform:perspective(300px) translateZ(-900px) scaleX(.08);filter:blur(18px)}68%{opacity:1;transform:perspective(300px) translateZ(60px) scaleX(1.15);filter:blur(0)}100%{transform:none}}@keyframes bingo-letterdrop{0%{opacity:0;transform:translateY(-130px) rotate(16deg) scale(.7)}68%{opacity:1;transform:translateY(12px) rotate(-3deg) scale(1.1)}100%{opacity:1;transform:none}}@keyframes bingo-glitch{0%{opacity:0;transform:translate(-40px,20px) skewX(30deg);filter:hue-rotate(180deg)}28%{opacity:1;transform:translate(25px,-10px) skewX(-18deg)}58%{transform:translate(-10px,5px);text-shadow:-12px 0 #ff3b77,12px 0 #36e7ff}100%{transform:none}}@keyframes bingo-powerup{0%{opacity:0;transform:scale(.2);filter:brightness(4)}45%{opacity:1;transform:scale(.75);filter:brightness(2)}72%{transform:scale(1.22);filter:brightness(1.4)}100%{transform:scale(1);filter:none}}@keyframes bingo-pixelslam{0%{opacity:0;transform:translateY(-55vh) scaleX(.6)}63%{opacity:1;transform:translateY(18px) scaleX(1.12)}80%{transform:translateY(-8px) scaleX(.96)}100%{transform:none}}
@media(prefers-reduced-motion:reduce){.bingo-celebration.show[class*="effect-"] strong,.bingo-celebration.effect-letterdrop strong i{animation:none!important;opacity:1}.firework-layer{display:none}}
