/* ==========================================================================
   Animations & Transitions
   ========================================================================== */

/* Keyframe Animations */

/* Floating Hero graphics */
@keyframes float {
  0% {
    transform: translateY(0px);
  }
  50% {
    transform: translateY(-12px);
  }
  100% {
    transform: translateY(0px);
  }
}

/* Floating reverse */
@keyframes floatReverse {
  0% {
    transform: translateY(0px);
  }
  50% {
    transform: translateY(12px);
  }
  100% {
    transform: translateY(0px);
  }
}

/* Partner Logo Scroll Marquee */
@keyframes logoScroll {
  0% {
    transform: translateX(0);
  }
  100% {
    transform: translateX(-50%);
  }
}

/* Animated pulses for highlights */
@keyframes pulseGlow {
  0% {
    box-shadow: 0 0 0 0 rgba(37, 99, 235, 0.4);
  }
  70% {
    box-shadow: 0 0 0 10px rgba(37, 99, 235, 0);
  }
  100% {
    box-shadow: 0 0 0 0 rgba(37, 99, 235, 0);
  }
}

/* Apply animation defaults */
.animate-float {
  animation: float 6s ease-in-out infinite;
}

.animate-float-reverse {
  animation: floatReverse 6s ease-in-out infinite;
}

.animate-float-slow {
  animation: float 8s ease-in-out infinite;
}

.pulse-badge {
  animation: pulseGlow 2s infinite;
}

/* ==========================================================================
   Scroll Reveal States (Triggered by IntersectionObserver in main.js)
   ========================================================================== */
.reveal {
  opacity: 0;
  will-change: transform, opacity;
  transition: opacity 0.8s cubic-bezier(0.16, 1, 0.3, 1), 
              transform 0.8s cubic-bezier(0.16, 1, 0.3, 1);
}

.reveal.fade-up {
  transform: translateY(40px);
}

.reveal.slide-left {
  transform: translateX(-40px);
}

.reveal.slide-right {
  transform: translateX(40px);
}

.reveal.zoom-in {
  transform: scale(0.92);
}

/* Animated active state */
.reveal.active {
  opacity: 1;
  transform: translateY(0) translateX(0) scale(1);
}

/* Staggered Delay Utilities */
.delay-100 { transition-delay: 100ms; }
.delay-200 { transition-delay: 200ms; }
.delay-300 { transition-delay: 300ms; }
.delay-400 { transition-delay: 400ms; }
.delay-500 { transition-delay: 500ms; }
.delay-600 { transition-delay: 600ms; }

/* Interactive Hover States */
.hover-lift {
  transition: var(--transition-normal);
}

.hover-lift:hover {
  transform: translateY(-6px);
  box-shadow: var(--shadow-premium);
}

/* Course Card scale elements */
.zoom-img-wrapper {
  overflow: hidden;
}

.zoom-img-wrapper img {
  transition: var(--transition-slow);
}

.zoom-img-wrapper:hover img {
  transform: scale(1.06);
}
