/* ============================================
   ANIMATIONS — Keyframes & Reveal States
   ============================================ */

/* --- Intro --- */
@keyframes intro-pulse {
  0% { opacity: 0; transform: scale(0.8); }
  50% { opacity: 1; transform: scale(1.05); }
  100% { opacity: 1; transform: scale(1); }
}

/* --- Scroll Indicator --- */
@keyframes scroll-bounce {
  0%, 100% { transform: translateX(-50%) translateY(0); opacity: 0.6; }
  50% { transform: translateX(-50%) translateY(10px); opacity: 1; }
}

/* --- WhatsApp Pulse --- */
@keyframes wa-pulse {
  0% { transform: scale(1); opacity: 0.6; }
  50% { transform: scale(1.3); opacity: 0; }
  100% { transform: scale(1.3); opacity: 0; }
}

/* --- WhatsApp Bounce --- */
@keyframes wa-bounce {
  0%, 100% { transform: scale(1); }
  25% { transform: scale(1.15); }
  50% { transform: scale(0.95); }
  75% { transform: scale(1.05); }
}

/* --- Ripple --- */
@keyframes ripple-anim {
  to {
    transform: scale(4);
    opacity: 0;
  }
}

/* --- Reveal Base States --- */
[data-reveal] {
  opacity: 0;
  transition: opacity 0.7s ease, transform 0.7s ease, filter 0.7s ease;
  will-change: opacity, transform;
}

[data-reveal].revealed {
  opacity: 1;
  transform: none !important;
  filter: none !important;
}

[data-reveal="fade-up"] {
  transform: translateY(40px);
}

[data-reveal="fade-down"] {
  transform: translateY(-40px);
}

[data-reveal="fade-left"] {
  transform: translateX(-40px);
}

[data-reveal="fade-right"] {
  transform: translateX(40px);
}

[data-reveal="scale"] {
  transform: scale(0.85);
}

[data-reveal="blur"] {
  filter: blur(10px);
  transform: translateY(20px);
}

/* Word reveal (hero) doesn't use the generic system */
[data-reveal="words"] {
  opacity: 1;
  transform: none;
}

/* --- Stat counter glow pulse on count --- */
@keyframes stat-glow {
  0% { text-shadow: none; }
  50% { text-shadow: 0 0 20px rgba(0, 212, 170, 0.5); }
  100% { text-shadow: none; }
}

.stat__number.counting {
  animation: stat-glow 2s ease;
}
