/* ==========================================================================
   Animações. Arquivo separado para que a regra de prefers-reduced-motion
   cubra tudo num lugar só, no fim.
   ========================================================================== */

.revela {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 600ms cubic-bezier(.16, 1, .3, 1),
              transform 600ms cubic-bezier(.16, 1, .3, 1);
}
.revela.visivel { opacity: 1; transform: none; }

/* Escalona os filhos de uma grade para entrarem em cascata. */
.revela-cascata > * {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 500ms cubic-bezier(.16, 1, .3, 1),
              transform 500ms cubic-bezier(.16, 1, .3, 1);
}
.revela-cascata.visivel > * { opacity: 1; transform: none; }
.revela-cascata.visivel > *:nth-child(1) { transition-delay: 0ms; }
.revela-cascata.visivel > *:nth-child(2) { transition-delay: 60ms; }
.revela-cascata.visivel > *:nth-child(3) { transition-delay: 120ms; }
.revela-cascata.visivel > *:nth-child(4) { transition-delay: 180ms; }
.revela-cascata.visivel > *:nth-child(5) { transition-delay: 240ms; }
.revela-cascata.visivel > *:nth-child(6) { transition-delay: 300ms; }
.revela-cascata.visivel > *:nth-child(n+7) { transition-delay: 360ms; }

@keyframes pulsar {
  0%, 100% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--vinho) 45%, transparent); }
  70%      { box-shadow: 0 0 0 14px transparent; }
}
.pulsa { animation: pulsar 2.4s infinite; }

@keyframes girar { to { transform: rotate(360deg); } }
.girando { animation: girar 800ms linear infinite; }

/* ----------------------------------------------------------------------- */
/* Quem pede menos movimento recebe o estado final na hora, não nada.       */
@media (prefers-reduced-motion: reduce) {
  .revela, .revela-cascata > * { opacity: 1 !important; transform: none !important; }

  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    scroll-behavior: auto !important;
  }
}
