/* ============================================================
   KEYFRAMES
   ============================================================ */
@keyframes fadeInUp {
  from { opacity: 0; transform: translateY(32px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes fadeInDown {
  from { opacity: 0; transform: translateY(-24px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes fadeInLeft {
  from { opacity: 0; transform: translateX(-48px); }
  to   { opacity: 1; transform: translateX(0); }
}
@keyframes fadeInRight {
  from { opacity: 0; transform: translateX(48px); }
  to   { opacity: 1; transform: translateX(0); }
}
@keyframes fadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}
@keyframes scaleUp {
  from { opacity: 0; transform: scale(.88); }
  to   { opacity: 1; transform: scale(1); }
}
@keyframes kenBurns {
  0%   { transform: scale(1)    translateX(0)    translateY(0); }
  33%  { transform: scale(1.06) translateX(-1%)  translateY(.5%); }
  66%  { transform: scale(1.1)  translateX(1%)   translateY(-.5%); }
  100% { transform: scale(1)    translateX(0)    translateY(0); }
}

/* ============================================================
   HERO — entradas escalonadas
   ============================================================ */
.hero-bg { animation: kenBurns 20s ease-in-out infinite; }

.hero-badge    { animation: fadeInDown .7s ease both; animation-delay: .2s; }
.hero-titulo   { animation: fadeInUp   .8s ease both; animation-delay: .45s; }
.hero-subtitulo{ animation: fadeInUp   .8s ease both; animation-delay: .7s; }
.hero-acoes    { animation: fadeInUp   .8s ease both; animation-delay: .95s; }
.hero-scroll-hint { animation: fadeIn  1s ease both;  animation-delay: 1.6s; }

/* ============================================================
   SCROLL REVEAL — estados iniciais
   ============================================================ */
.reveal {
  opacity: 0;
  transition: opacity .7s ease, transform .7s ease;
}
.reveal.reveal-left  { transform: translateX(-48px); }
.reveal.reveal-right { transform: translateX(48px); }
.reveal.reveal-up    { transform: translateY(40px); }
.reveal.reveal-scale { transform: scale(.9); }

.reveal.visivel {
  opacity: 1;
  transform: none;
}

/* delays em cascata para cards */
.reveal-delay-1 { transition-delay: .1s; }
.reveal-delay-2 { transition-delay: .2s; }
.reveal-delay-3 { transition-delay: .3s; }
.reveal-delay-4 { transition-delay: .4s; }
.reveal-delay-5 { transition-delay: .5s; }

/* ============================================================
   CONTADOR ANIMADO
   ============================================================ */
.numero-valor.contando {
  animation: pulse-number .15s ease-in-out;
}
@keyframes pulse-number {
  0%,100% { transform: scale(1); }
  50%      { transform: scale(1.04); }
}

/* ============================================================
   PREFERS-REDUCED-MOTION
   ============================================================ */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }
  .reveal { opacity: 1 !important; transform: none !important; }
}
