@keyframes play-float {
  from { transform: translate3d(0, 0, 0); }
  to { transform: translate3d(0, -8px, 0); }
}

@keyframes play-pop {
  0% { transform: scale(.96); opacity: .76; }
  70% { transform: scale(1.04); opacity: 1; }
  100% { transform: scale(1); opacity: 1; }
}

@keyframes play-sparkle {
  0%, 100% { opacity: .72; transform: scale(1) rotate(0deg); }
  50% { opacity: 1; transform: scale(1.06) rotate(4deg); }
}

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

@keyframes play-ticket-wiggle {
  0%, 100% { transform: rotate(0deg); }
  35% { transform: rotate(-1.2deg); }
  70% { transform: rotate(1.2deg); }
}

@keyframes play-confetti-drift {
  from { background-position: 0 0; }
  to { background-position: 120px 90px; }
}

.play-animated-float {
  animation: play-float 3.8s ease-in-out infinite alternate;
}

.play-animated-pop {
  animation: play-pop 360ms cubic-bezier(.22, 1, .36, 1) both;
}

.play-animated-sparkle {
  animation: play-sparkle 2.6s ease-in-out infinite;
}

.play-animated-slow-spin {
  animation: play-slow-spin 24s linear infinite;
}

.play-animated-ticket-wiggle {
  animation: play-ticket-wiggle 4s ease-in-out infinite;
}

.play-animated-confetti-drift {
  animation: play-confetti-drift 28s linear infinite;
}

@media (prefers-reduced-motion: reduce) {
  .play-animated-float,
  .play-animated-pop,
  .play-animated-sparkle,
  .play-animated-slow-spin,
  .play-animated-ticket-wiggle,
  .play-animated-confetti-drift {
    animation: none !important;
    transform: none !important;
  }
}
