/* ============================================================
   EXODO LATAM — Animaciones
   transform + opacity únicamente · respeta prefers-reduced-motion
   ============================================================ */

@keyframes fade-in-up {
  0% { opacity: 0; transform: translateY(8px); }
  100% { opacity: 1; transform: translateY(0); }
}
.animate-fade-in-up { animation: fade-in-up 220ms ease-out both; }

@keyframes pulse-dot {
  0%, 100% { opacity: 1; }
  50% { opacity: .4; }
}
.pulse { animation: pulse-dot 2s ease-in-out infinite; }

/* Card hover lift */
.card-hover { transition: transform .3s ease-out, box-shadow .3s ease-out; }
.card-hover:hover { transform: translateY(-.25rem); box-shadow: 0 10px 15px -3px rgba(0,0,0,.1), 0 4px 6px -4px rgba(0,0,0,.1); }

/* Image zoom on hover (wrap with .zoom-wrap) */
.zoom-wrap { overflow: hidden; }
.zoom-wrap img { transition: transform .5s ease-out; }
.zoom-wrap:hover img { transform: scale(1.05); }

/* Scroll reveal — elements get .reveal, JS adds .is-visible */
.reveal {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity .6s ease-out, transform .6s ease-out;
  will-change: opacity, transform;
}
.reveal.is-visible { opacity: 1; transform: translateY(0); }

/* staggered children */
.reveal[data-delay="1"] { transition-delay: .08s; }
.reveal[data-delay="2"] { transition-delay: .16s; }
.reveal[data-delay="3"] { transition-delay: .24s; }
.reveal[data-delay="4"] { transition-delay: .32s; }
.reveal[data-delay="5"] { transition-delay: .40s; }

/* generic smooth transition utility */
.t-all { transition: all .25s ease; }

@media (prefers-reduced-motion: reduce) {
  * { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; scroll-behavior: auto !important; }
  .reveal { opacity: 1; transform: none; }
  .flip-card-inner { transition: none; }
  .flip-card:hover .flip-card-inner,
  .flip-card:focus-within .flip-card-inner,
  .flip-card.is-flipped .flip-card-inner { transform: none; }
  .zoom-wrap:hover img { transform: none; }
}
