/* ============================================================
   AOS Overrides & Custom Keyframe Animations
   ============================================================ */

/* AOS custom easing */
[data-aos] { pointer-events: none; }
[data-aos].aos-animate { pointer-events: auto; }

[data-aos="fade-up"] {
  transform: translate3d(0, 30px, 0);
  opacity: 0;
}
[data-aos="fade-up"].aos-animate {
  transform: translate3d(0, 0, 0);
  opacity: 1;
}

/* Hero text reveal */
@keyframes heroReveal {
  from { opacity: 0; transform: translateY(24px); }
  to   { opacity: 1; transform: translateY(0); }
}
.hero-title  { animation: heroReveal 0.8s ease forwards; }
.hero-sub    { animation: heroReveal 0.8s 0.2s ease both; }
.hero-cta    { animation: heroReveal 0.8s 0.4s ease both; }
.hero-badges { animation: heroReveal 0.8s 0.6s ease both; }
.hero-image  { animation: heroReveal 0.9s 0.3s ease both; }

/* Shimmer on stats */
@keyframes shimmer {
  0%   { background-position: -200% 0; }
  100% { background-position: 200% 0; }
}
.shimmer-text {
  background: linear-gradient(90deg, #fff 25%, #FCD34D 50%, #fff 75%);
  background-size: 200% auto;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  animation: shimmer 3s linear infinite;
}

/* Step number pulse */
@keyframes stepPulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(30,58,138,0.4); }
  50%       { box-shadow: 0 0 0 12px rgba(30,58,138,0); }
}
.step-num { animation: stepPulse 2.5s ease-in-out infinite; }

/* Badge check bounce */
@keyframes checkBounce {
  0%, 100% { transform: scale(1); }
  50%       { transform: scale(1.15); }
}
.check-icon { animation: checkBounce 1.5s ease-in-out infinite; }

/* Gradient border glow on hover */
.glow-card {
  position: relative;
  isolation: isolate;
}
.glow-card::before {
  content: '';
  position: absolute;
  inset: -1px;
  border-radius: inherit;
  background: linear-gradient(135deg, #1E3A8A, #B45309);
  opacity: 0;
  transition: opacity 0.3s ease;
  z-index: -1;
}
.glow-card:hover::before { opacity: 1; }

/* Scroll indicator */
@keyframes scrollBounce {
  0%, 100% { transform: translateY(0); opacity: 1; }
  50%       { transform: translateY(8px); opacity: 0.5; }
}
.scroll-indicator { animation: scrollBounce 1.8s ease-in-out infinite; }
