/* ==========================================================================
   animations.css — fade-in/slide-up on scroll (IntersectionObserver + CSS)
   Ligero, sin librerías externas.
   ========================================================================== */

[data-reveal] {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity 0.7s ease, transform 0.7s ease;
  will-change: opacity, transform;
}

[data-reveal].is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* Retraso escalonado para grupos de tarjetas */
[data-reveal-group] > * {
  transition-delay: calc(var(--reveal-index, 0) * 90ms);
}

@keyframes floatSlow {
  0%, 100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-10px);
  }
}

@keyframes pulseRing {
  0% {
    box-shadow: 0 0 0 0 rgba(37, 211, 102, 0.45);
  }
  70% {
    box-shadow: 0 0 0 14px rgba(37, 211, 102, 0);
  }
  100% {
    box-shadow: 0 0 0 0 rgba(37, 211, 102, 0);
  }
}

.whatsapp-float {
  animation: pulseRing 2.6s infinite;
}

@media (prefers-reduced-motion: reduce) {
  [data-reveal] {
    opacity: 1;
    transform: none;
    transition: none;
  }

  .whatsapp-float {
    animation: none;
  }

  html {
    scroll-behavior: auto;
  }
}
