/* ============================================================
   animations.css — keyframes, AOS overrides
   ============================================================ */

/* AOS overrides for refined motion */
[data-aos] { transition-timing-function: cubic-bezier(0.16, 1, 0.3, 1) !important; }

/* Floating cards */
@keyframes float1 {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-12px); }
}
@keyframes float2 {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-16px); }
}
@keyframes float3 {
  0%, 100% { transform: translateY(-50%); }
  50% { transform: translateY(calc(-50% - 14px)); }
}

/* Bobble for hero scroll cue */
@keyframes bobble {
  0%, 100% { transform: translate(-50%, 0); opacity: 0.85; }
  50% { transform: translate(-50%, 8px); opacity: 1; }
}

/* Marquee for partners */
@keyframes marquee {
  from { transform: translateX(0); }
  to { transform: translateX(50%); } /* RTL: scroll content rightward */
}

/* Hero text reveal — line by line */
@keyframes lineReveal {
  from {
    transform: translateY(40px);
    opacity: 0;
    filter: blur(6px);
  }
  to {
    transform: translateY(0);
    opacity: 1;
    filter: blur(0);
  }
}
.hero-text h1 .line {
  display: block;
  opacity: 0;
  animation: lineReveal 0.9s var(--ease-out) forwards;
}
.hero-text h1 .line.l1 { animation-delay: 0.1s; }
.hero-text h1 .line.l2 { animation-delay: 0.3s; }
.hero-text h1 .line.l3 { animation-delay: 0.5s; }

@keyframes fadeUp {
  from { opacity: 0; transform: translateY(20px); }
  to { opacity: 1; transform: translateY(0); }
}
.fade-up { animation: fadeUp 0.8s var(--ease-out) forwards; }
.delay-1 { animation-delay: 0.7s; opacity: 0; }
.delay-2 { animation-delay: 0.9s; opacity: 0; }
.delay-3 { animation-delay: 1.1s; opacity: 0; }
.delay-4 { animation-delay: 1.3s; opacity: 0; }

/* Subtle parallax floating shapes */
@keyframes drift {
  0%, 100% { transform: translate(0, 0) rotate(0deg); }
  33% { transform: translate(20px, -30px) rotate(4deg); }
  66% { transform: translate(-15px, 20px) rotate(-3deg); }
}
.hero-shape { animation: drift 14s var(--ease) infinite; }
.hero-shape.s2 { animation-duration: 18s; animation-direction: reverse; }

/* Glow ring for stat cards */
@keyframes glowRing {
  0%, 100% { box-shadow: 0 10px 30px rgba(20,20,20,0.07), 0 0 0 0 rgba(207,170,63,0.0); }
  50% { box-shadow: 0 10px 30px rgba(20,20,20,0.07), 0 0 0 10px rgba(207,170,63,0.04); }
}

/* Counter pulse on activate */
@keyframes pop {
  0% { transform: scale(0.92); opacity: 0; }
  60% { transform: scale(1.04); opacity: 1; }
  100% { transform: scale(1); }
}
.stat .num.activated { animation: pop 0.6s var(--ease-out); }

/* Reveal animation on AOS replacement */
.reveal {
  opacity: 0;
  transform: translateY(30px);
  transition: all 0.8s var(--ease-out);
}
.reveal.visible { opacity: 1; transform: translateY(0); }

/* Reduce motion */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
  }
}
