@keyframes fadeIn {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes neonPulse {
  0%, 100% {
    box-shadow: 0 0 15px var(--accent-glow);
  }
  50% {
    box-shadow: 0 0 25px var(--accent-glow-strong), 0 0 35px var(--cyan-glow);
  }
}

@keyframes floatSlow {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-8px); }
}

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

.animate-fade-in {
  animation: fadeIn 0.35s ease-out forwards;
}

.animate-pulse-neon {
  animation: neonPulse 3s infinite;
}

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

.animate-spin {
  animation: spin 1s linear infinite;
}

/* Ticker / Announcement Bar Animation */
@keyframes tickerScroll {
  0% { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}

.ticker-track {
  display: flex;
  width: 200%;
  animation: tickerScroll 24s linear infinite;
}

.ticker-track:hover {
  animation-play-state: paused;
}
