/* ===========================================================
   ALPINO — animations.css
   Keyframes + scroll reveal system
=========================================================== */

@keyframes loaderMove{
  0%{transform:translateX(-100%);}
  50%{transform:translateX(160%);}
  100%{transform:translateX(-100%);}
}

@keyframes scrollCue{
  0%{transform:translateY(0); opacity:1;}
  60%{transform:translateY(14px); opacity:0.3;}
  100%{transform:translateY(0); opacity:1;}
}

@keyframes whatsappPulse{
  0%, 100%{box-shadow:0 12px 30px rgba(37,211,102,0.4);}
  50%{box-shadow:0 12px 30px rgba(37,211,102,0.7), 0 0 0 8px rgba(37,211,102,0.12);}
}

@keyframes modalIn{
  from{opacity:0; transform:translateY(14px) scale(0.98);}
  to{opacity:1; transform:translateY(0) scale(1);}
}

/* Scroll reveal: elements fade + rise into place when they enter the viewport.
   JS toggles the .in-view class via IntersectionObserver. */
.reveal-up{
  opacity:0;
  transform:translateY(28px);
  transition:opacity .7s cubic-bezier(.22,.68,0,1), transform .7s cubic-bezier(.22,.68,0,1);
}
.reveal-up.in-view{
  opacity:1;
  transform:translateY(0);
}

/* Stagger children of a grid/list slightly for a nicer cascade */
.grid .reveal-up:nth-child(1){transition-delay:0s;}
.grid .reveal-up:nth-child(2){transition-delay:.05s;}
.grid .reveal-up:nth-child(3){transition-delay:.1s;}
.grid .reveal-up:nth-child(4){transition-delay:.15s;}
.grid .reveal-up:nth-child(5){transition-delay:.2s;}
.grid .reveal-up:nth-child(6){transition-delay:.25s;}
.grid .reveal-up:nth-child(7){transition-delay:.3s;}
.grid .reveal-up:nth-child(8){transition-delay:.35s;}

.why-grid .reveal-up:nth-child(1){transition-delay:0s;}
.why-grid .reveal-up:nth-child(2){transition-delay:.05s;}
.why-grid .reveal-up:nth-child(3){transition-delay:.1s;}
.why-grid .reveal-up:nth-child(4){transition-delay:.15s;}
.why-grid .reveal-up:nth-child(5){transition-delay:.2s;}
.why-grid .reveal-up:nth-child(6){transition-delay:.25s;}

/* Respect reduced motion preference */
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto;}
  .reveal-up{opacity:1; transform:none; transition:none;}
  .loader-bar span{animation:none;}
  .scroll-cue span{animation:none;}
  .float-whatsapp{animation:none;}
  *{animation-duration:0.001ms !important; transition-duration:0.001ms !important;}
}
