/* ==========================================================================
   ANIMAÇÕES — scroll reveal, fade-in discreto
   ========================================================================== */

.reveal {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity var(--t-slow) var(--ease-out), transform var(--t-slow) var(--ease-out);
}

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

/* stagger leve para grids de cards */
.card-grid .reveal:nth-child(2),
.offer-grid .reveal:nth-child(2),
.solutions-grid .reveal:nth-child(2),
.timeline .reveal:nth-child(2) { transition-delay: 60ms; }

.card-grid .reveal:nth-child(3),
.offer-grid .reveal:nth-child(3),
.solutions-grid .reveal:nth-child(3),
.timeline .reveal:nth-child(3) { transition-delay: 120ms; }

.card-grid .reveal:nth-child(4),
.offer-grid .reveal:nth-child(4),
.solutions-grid .reveal:nth-child(4),
.timeline .reveal:nth-child(4) { transition-delay: 180ms; }

.card-grid .reveal:nth-child(5),
.offer-grid .reveal:nth-child(5) { transition-delay: 240ms; }

.card-grid .reveal:nth-child(6),
.offer-grid .reveal:nth-child(6) { transition-delay: 300ms; }

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

/* ---- Fade-in inicial do hero ---- */
@keyframes heroFadeUp {
  from { opacity: 0; transform: translateY(14px); }
  to { opacity: 1; transform: translateY(0); }
}

.hero-copy > * {
  animation: heroFadeUp 0.8s var(--ease-out) both;
}
.hero-copy .eyebrow { animation-delay: 0ms; }
.hero-copy h1 { animation-delay: 80ms; }
.hero-copy p { animation-delay: 160ms; }
.hero-copy .hero-actions { animation-delay: 240ms; }
.hero-copy .hero-stats { animation-delay: 320ms; }

.hero-media {
  animation: heroFadeUp 0.9s var(--ease-out) 120ms both;
}

@media (prefers-reduced-motion: reduce) {
  .hero-copy > *, .hero-media { animation: none; }
}
