/* ═══════════════════════════════════════════════════
   NEXA FM STUDIO — Animations
   ═══════════════════════════════════════════════════ */

@keyframes fadeUp {
  from { opacity: 0; transform: translateY(24px); }
  to { opacity: 1; transform: translateY(0); }
}
@keyframes fadeIn {
  from { opacity: 0; } to { opacity: 1; }
}
@keyframes gradientShift {
  0% { background-position: 0% 50%; }
  50% { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}
@keyframes scrollPulse {
  0%,100% { opacity: 0.3; transform: scaleY(1); }
  50% { opacity: 1; transform: scaleY(1.1); }
}
.reveal { opacity: 0; transition: all 0.8s cubic-bezier(0.19,1,0.22,1); }
.reveal.visible { opacity: 1; }
.reveal-up { transform: translateY(40px); }
.reveal-up.visible { transform: translateY(0); }
.reveal-left { transform: translateX(-40px); }
.reveal-left.visible { transform: translateX(0); }
.reveal-right { transform: translateX(40px); }
.reveal-right.visible { transform: translateX(0); }
.reveal-scale { transform: scale(0.9); }
.reveal-scale.visible { transform: scale(1); }
.reveal-delay-1 { transition-delay: 0.1s; }
.reveal-delay-2 { transition-delay: 0.2s; }
.reveal-delay-3 { transition-delay: 0.3s; }
.reveal-delay-4 { transition-delay: 0.4s; }
.reveal-delay-5 { transition-delay: 0.5s; }
.reveal-delay-6 { transition-delay: 0.6s; }