/* ==========================================================================
   JojoPlay - Animationen & Micro-Interactions
   Flüssige GPU-beschleunigte Effekte für modernes Gaming-Feeling
   ========================================================================== */

/* Keyframes */
@keyframes floatSlow {
  0%, 100% { transform: translateY(0px) rotate(0deg); }
  50% { transform: translateY(-8px) rotate(1deg); }
}

@keyframes pulseGlow {
  0%, 100% {
    box-shadow: 0 0 15px rgba(0, 242, 254, 0.25), inset 0 0 10px rgba(0, 242, 254, 0.1);
  }
  50% {
    box-shadow: 0 0 25px rgba(0, 242, 254, 0.5), inset 0 0 15px rgba(0, 242, 254, 0.2);
  }
}

@keyframes shimmer {
  0% { background-position: -200% 0; }
  100% { background-position: 200% 0; }
}

@keyframes neonBorder {
  0%, 100% { border-color: rgba(0, 242, 254, 0.4); }
  50% { border-color: rgba(157, 78, 221, 0.6); }
}

@keyframes scaleIn {
  0% { transform: scale(0.9); opacity: 0; }
  100% { transform: scale(1); opacity: 1; }
}

@keyframes slideDownFade {
  0% { transform: translateY(-12px); opacity: 0; }
  100% { transform: translateY(0); opacity: 1; }
}

/* Helper Classes */
.animate-float {
  animation: floatSlow 4s ease-in-out infinite;
}

.animate-glow {
  animation: pulseGlow 2.5s infinite ease-in-out;
}

.animate-neon-border {
  animation: neonBorder 3s infinite ease-in-out;
}

.shimmer-card {
  background: linear-gradient(90deg, rgba(255,255,255,0) 0%, rgba(255,255,255,0.06) 50%, rgba(255,255,255,0) 100%);
  background-size: 200% 100%;
  animation: shimmer 2s infinite;
}

.fade-in {
  animation: slideDownFade 0.4s ease-out forwards;
}

/* Card Hover Micro-Interactions */
.game-card::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: var(--radius-md);
  border: 2px solid transparent;
  pointer-events: none;
  transition: border-color var(--transition-fast);
}

.game-card:hover::after {
  border-color: rgba(0, 242, 254, 0.6);
}

/* Button Ripple & Hover */
.btn-cta-play {
  position: relative;
  overflow: hidden;
}

.btn-cta-play::after {
  content: '';
  position: absolute;
  top: -50%;
  left: -50%;
  width: 200%;
  height: 200%;
  background: linear-gradient(
    60deg,
    transparent 20%,
    rgba(255, 255, 255, 0.35) 25%,
    transparent 30%
  );
  transform: rotate(25deg);
  animation: shimmer 4s infinite linear;
}

/* Badge Pulse */
.game-card-badge.hot {
  animation: pulseHot 2s infinite;
}

@keyframes pulseHot {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.05); }
}
