/* ==========================================================================
   Animations & Keyframes - Jwan Modern Pharma
   Smooth, Calming & Ultra-Modern Pharmaceutical Micro-Interactions
   ========================================================================== */

@keyframes floatSlow {
  0%, 100% {
    transform: translateY(0) rotate(0deg);
  }
  50% {
    transform: translateY(-12px) rotate(2deg);
  }
}

@keyframes floatSlowReverse {
  0%, 100% {
    transform: translateY(0) rotate(0deg);
  }
  50% {
    transform: translateY(10px) rotate(-2deg);
  }
}

@keyframes pulseGlow {
  0%, 100% {
    box-shadow: 0 0 0 0 rgba(11, 98, 196, 0.4), 0 10px 25px rgba(11, 98, 196, 0.15);
  }
  50% {
    box-shadow: 0 0 0 14px rgba(11, 98, 196, 0), 0 15px 35px rgba(11, 98, 196, 0.25);
  }
}

@keyframes pulseGlowGreen {
  0%, 100% {
    box-shadow: 0 0 0 0 rgba(104, 166, 44, 0.45);
  }
  50% {
    box-shadow: 0 0 0 12px rgba(104, 166, 44, 0);
  }
}

@keyframes mapPing {
  0% {
    transform: scale(0.95);
    opacity: 0.8;
  }
  70% {
    transform: scale(2.2);
    opacity: 0;
  }
  100% {
    transform: scale(2.2);
    opacity: 0;
  }
}

@keyframes waveGradient {
  0% {
    background-position: 0% 50%;
  }
  50% {
    background-position: 100% 50%;
  }
  100% {
    background-position: 0% 50%;
  }
}

@keyframes shimmerEffect {
  0% {
    transform: translateX(-100%);
  }
  100% {
    transform: translateX(100%);
  }
}

@keyframes spinSlow {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}

@keyframes dashFlow {
  to {
    stroke-dashoffset: -100;
  }
}

@keyframes modalFadeIn {
  from {
    opacity: 0;
    transform: translateY(20px) scale(0.96);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

/* Reusable Animation Utility Classes */
.animate-float {
  animation: floatSlow 6s ease-in-out infinite;
}

.animate-float-reverse {
  animation: floatSlowReverse 7s ease-in-out infinite;
}

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

.animate-pulse-green {
  animation: pulseGlowGreen 2.5s ease-in-out infinite;
}

.animate-spin-slow {
  animation: spinSlow 20s linear infinite;
}

/* Reveal on Scroll Elements */
.reveal-on-scroll {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 0.8s cubic-bezier(0.16, 1, 0.3, 1), transform 0.8s cubic-bezier(0.16, 1, 0.3, 1);
  will-change: opacity, transform;
}

.reveal-on-scroll.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.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; }
