/* ============================================
   Animations — Centralized Keyframes
   ============================================ */

/* Section label pulsing dot */
@keyframes pulse-dot {
  0%, 100% { opacity: 1; transform: scale(1); }
  50% { opacity: 0.5; transform: scale(0.75); }
}

/* Button hover shine sweep */
@keyframes btn-shine {
  0% { transform: translateX(-100%) skewX(-15deg); }
  100% { transform: translateX(200%) skewX(-15deg); }
}

/* CTA/hero background gradient movement */
@keyframes gradient-shift {
  0% { background-position: 0% 50%; }
  50% { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}

/* Hero image continuous float */
@keyframes gentle-float {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-12px); }
}

/* Tech scan line effect */
@keyframes scan-line {
  0% { transform: translateY(-100%); opacity: 0; }
  10% { opacity: 1; }
  90% { opacity: 1; }
  100% { transform: translateY(100%); opacity: 0; }
}

/* Hero badge glow */
@keyframes badge-pulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(13, 155, 133, 0.4); }
  50% { box-shadow: 0 0 0 8px rgba(13, 155, 133, 0); }
}

/* Composite scroll entry — scale + fade */
@keyframes fade-up-scale {
  from {
    opacity: 0;
    transform: translateY(32px) scale(0.95);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

/* Blur to clear entry */
@keyframes blur-in {
  from {
    opacity: 0;
    filter: blur(8px);
  }
  to {
    opacity: 1;
    filter: blur(0);
  }
}

/* Clip reveal left to right */
@keyframes clip-reveal {
  from {
    clip-path: inset(0 100% 0 0);
    opacity: 0;
  }
  to {
    clip-path: inset(0 0 0 0);
    opacity: 1;
  }
}

/* Glow pulse for buttons */
@keyframes glow-pulse {
  0%, 100% { box-shadow: 0 0 12px rgba(13, 155, 133, 0.3), 0 0 24px rgba(13, 155, 133, 0.15); }
  50% { box-shadow: 0 0 20px rgba(13, 155, 133, 0.5), 0 0 40px rgba(13, 155, 133, 0.25); }
}

/* Shimmer for badges */
@keyframes shimmer {
  0% { background-position: -200% 0; }
  100% { background-position: 200% 0; }
}

/* ---- Utility delay classes ---- */
.anim-delay-100 { animation-delay: 100ms; }
.anim-delay-200 { animation-delay: 200ms; }
.anim-delay-300 { animation-delay: 300ms; }
.anim-delay-400 { animation-delay: 400ms; }
.anim-delay-500 { animation-delay: 500ms; }

/* ---- Reduced motion guard ---- */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    animation-delay: 0ms !important;
    transition-duration: 0.01ms !important;
  }
}
