/* ── Keyframes ──────────────────────────────────────────────── */
@keyframes fly-right {
  0%   { transform: translateX(0) rotate(0deg); opacity: 1; }
  100% { transform: translateX(130vw) rotate(30deg); opacity: 0; }
}

@keyframes fly-left {
  0%   { transform: translateX(0) rotate(0deg); opacity: 1; }
  100% { transform: translateX(-130vw) rotate(-30deg); opacity: 0; }
}

@keyframes spin {
  to { transform: rotate(360deg); }
}

@keyframes pop-in {
  0%   { transform: scale(0.85); opacity: 0; }
  70%  { transform: scale(1.03); opacity: 1; }
  100% { transform: scale(1); opacity: 1; }
}

@keyframes bounce-in {
  0%   { transform: scale(0.6) translateY(40px); opacity: 0; }
  60%  { transform: scale(1.05) translateY(-8px); opacity: 1; }
  100% { transform: scale(1) translateY(0); opacity: 1; }
}

/* ── Applied classes ────────────────────────────────────────── */
.fly-right {
  animation: fly-right 0.45s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards;
  pointer-events: none;
}

.fly-left {
  animation: fly-left 0.45s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards;
  pointer-events: none;
}

/* Card stack depth animation — behind card scales up when top card leaves */
.movie-card.card-behind {
  animation: none;
  transition: transform 0.3s ease, filter 0.3s ease;
}

/* Winner entrance */
#screen-winner.active .winner-poster-wrap {
  animation: pop-in 0.4s ease forwards;
}

#screen-winner.active .winner-info {
  animation: bounce-in 0.5s 0.15s ease both;
}

/* Handoff icon bounce */
#screen-handoff.active .handoff-icon {
  animation: bounce-in 0.5s ease forwards;
}

@keyframes stepper-pop {
  0%   { transform: scale(1); }
  40%  { transform: scale(1.35); }
  70%  { transform: scale(0.9); }
  100% { transform: scale(1); }
}
.stepper-pop { animation: stepper-pop 0.25s ease; }

@keyframes pulse-dot {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.2; }
}
.pulse-dot { display: inline-block; animation: pulse-dot 1.2s ease infinite; }

