/* =========================================
   ANIMATIONS — Keyframes, transitions,
   efeitos de entrada e reveal
   ========================================= */

/* ── Keyframes ── */
@keyframes fadeUp {
  to { opacity: 1; transform: translateY(0); }
}
@keyframes scrollPulse {
  0%, 100% { opacity: 1; }
  50%       { opacity: 0.2; }
}

/* ── Animações do Hero ── */
.hero-tag     { opacity: 0; transform: translateY(16px); animation: fadeUp 0.7s ease forwards 0.2s; }
.hero-title   { opacity: 0; transform: translateY(20px); animation: fadeUp 0.8s ease forwards 0.35s; }
.hero-sub     { opacity: 0; transform: translateY(20px); animation: fadeUp 0.8s ease forwards 0.5s; }
.hero-actions { opacity: 0; transform: translateY(20px); animation: fadeUp 0.8s ease forwards 0.65s; }
.hero-scroll  { opacity: 0; animation: fadeUp 0.8s ease forwards 1s; }

.scroll-line  { animation: scrollPulse 2s ease-in-out infinite; }

/* ── Reveal on scroll (ativado pelo reveal.js) ── */
.reveal {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity 0.7s ease, transform 0.7s ease;
}
.reveal-left {
  opacity: 0;
  transform: translateX(-28px);
  transition: opacity 0.7s ease, transform 0.7s ease;
}
.reveal-right {
  opacity: 0;
  transform: translateX(28px);
  transition: opacity 0.7s ease, transform 0.7s ease;
}
.reveal.visible,
.reveal-left.visible,
.reveal-right.visible {
  opacity: 1;
  transform: none;
}

/* ── Acessibilidade: respeita preferência do usuário ── */
@media (prefers-reduced-motion: reduce) {
  .reveal, .reveal-left, .reveal-right {
    opacity: 1; transform: none; transition: none;
  }
  * {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
  }
}
