/* ═══════════════════════════════════════════════════════
   Festivus Arcade — Shared Animations
   Reusable keyframes and utility classes for all games.
   ═══════════════════════════════════════════════════════ */

/* Screen shake on ejection / dramatic moments */
@keyframes festivus-shake {
  0%, 100% { transform: translateX(0); }
  10% { transform: translateX(-6px); }
  20% { transform: translateX(6px); }
  30% { transform: translateX(-4px); }
  40% { transform: translateX(4px); }
  50% { transform: translateX(-2px); }
  60% { transform: translateX(2px); }
}

/* Button jitter under time pressure */
@keyframes festivus-jitter {
  0% { transform: translate(0, 0); }
  25% { transform: translate(-2px, 1px); }
  50% { transform: translate(2px, -1px); }
  75% { transform: translate(-1px, -1px); }
  100% { transform: translate(1px, 1px); }
}

/* Fade in with upward slide */
@keyframes festivus-fadein {
  0% { opacity: 0; transform: translateY(8px); }
  100% { opacity: 1; transform: translateY(0); }
}

/* Pulse effect for timers / emphasis */
@keyframes festivus-pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.5; }
}

/* Blink for cursors / active indicators */
@keyframes festivus-blink {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.4; }
}

/* Slide in from left */
@keyframes festivus-slide-in {
  0% { transform: translateX(-100%); opacity: 0; }
  100% { transform: translateX(0); opacity: 1; }
}

/* Splash text scale-in */
@keyframes festivus-splash-in {
  0% { opacity: 0; transform: scale(1.5); }
  100% { opacity: 1; transform: scale(1); }
}

/* Falling paper / recipe rain */
@keyframes festivus-fall {
  0% { transform: translateY(-20px) rotate(0deg); opacity: 0; }
  10% { opacity: 1; }
  90% { opacity: 1; }
  100% { transform: translateY(130px) rotate(360deg); opacity: 0; }
}

/* Scanline overlay for screen bezels */
.screen-bezel::after {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0; bottom: 0;
  background: repeating-linear-gradient(0deg, transparent, transparent 2px, rgba(0, 0, 0, 0.03) 2px, rgba(0, 0, 0, 0.03) 4px);
  pointer-events: none;
  z-index: 2;
}
