/* celebration-keyframes.css — the celebration entrances, ONE copy (architecture review D4, step 1;
   2026-10-12). These fp* keyframes were pasted, identical, into four scripts that each injected
   them at runtime: display/fastest-view.js, display.js, player/display-fx.js, player/fastest-popup.js.
   Loaded by player.html and host_display.html; the scripts keep their own non-fp keyframes.
   The entrance names are the ones the host picks from (players-panel / show-fx-panel / Stats).
   Next steps of D4 (not done): a generic celebration queue, then device-tiered confetti caps. */

/* Entrances: zoom, slides, drop, spin */
@keyframes fpZoomIn { from{opacity:0;transform:scale(0.4)} to{opacity:1;transform:scale(1)} }
@keyframes fpSlideLeft { from{opacity:0;transform:translateX(-100vw)} to{opacity:1;transform:translateX(0)} }
@keyframes fpSlideRight { from{opacity:0;transform:translateX(100vw)} to{opacity:1;transform:translateX(0)} }
@keyframes fpSlideBottom { from{opacity:0;transform:translateY(100vh)} to{opacity:1;transform:translateY(0)} }
@keyframes fpDrop { 0%{opacity:0;transform:translateY(-100vh)} 70%{opacity:1;transform:translateY(18px)} 100%{transform:translateY(0)} }
@keyframes fpSpin { from{opacity:0;transform:scale(0.3) rotate(-360deg)} to{opacity:1;transform:scale(1) rotate(0)} }

/* Film transitions: iris, box wipe, 3D flip */
@keyframes fpIris { from{clip-path:circle(0% at 50% 50%)} to{clip-path:circle(150% at 50% 50%)} }
@keyframes fpBoxWipe { from{clip-path:inset(0 100% 0 0)} to{clip-path:inset(0 0 0 0)} }
@keyframes fpFlipIn { from{opacity:0;transform:perspective(1200px) rotateY(90deg)} to{opacity:1;transform:perspective(1200px) rotateY(0)} }

/* Round 2: banner pop, highway-sign swing-down */
@keyframes fpBannerPop { 0%{opacity:0;transform:scale(0.2) rotate(-8deg)} 55%{opacity:1;transform:scale(1.15) rotate(3deg)} 80%{transform:scale(0.96) rotate(-1deg)} 100%{opacity:1;transform:scale(1) rotate(0)} }
@keyframes fpSignDrop { 0%{opacity:0;transform:perspective(900px) rotateX(-92deg);transform-origin:top center} 60%{opacity:1;transform:perspective(900px) rotateX(12deg);transform-origin:top center} 80%{transform:perspective(900px) rotateX(-6deg);transform-origin:top center} 100%{opacity:1;transform:perspective(900px) rotateX(0);transform-origin:top center} }

/* Emphasis loops (the fastest card on the TV) */
@keyframes fpWobble { 0%,100%{transform:rotate(0)} 25%{transform:rotate(-4deg)} 75%{transform:rotate(4deg)} }
@keyframes fpGlow { 0%,100%{text-shadow:0 0 8px currentColor} 50%{text-shadow:0 0 26px currentColor,0 0 42px currentColor} }
@keyframes fpShake { 0%,100%{transform:translateX(0)} 20%{transform:translateX(-12px)} 40%{transform:translateX(12px)} 60%{transform:translateX(-8px)} 80%{transform:translateX(8px)} }
