/* Animações que no bundle original eram produzidas em runtime pelo Framer Motion.
   Reescritas como keyframes CSS para funcionarem sem o framework. */

/* Pulso contínuo dos botões de CTA (hero fixo e CTA final). */
@keyframes cta-pulse {
  0%,
  100% {
    transform: scale(1);
  }
  50% {
    transform: scale(1.03);
  }
}

.cta-pulse {
  animation: cta-pulse 2s ease-in-out infinite;
}

/* Pulso do marcador ativo da timeline de módulos (desktop). */
@keyframes timeline-dot-pulse {
  0%,
  100% {
    transform: scale(1);
  }
  50% {
    transform: scale(1.5);
  }
}

.timeline-dot.is-active {
  animation: timeline-dot-pulse 1.5s ease-in-out infinite;
}

/* Entrada dos blocos revelados no scroll (substitui o whileInView do Framer). */
.reveal-on-scroll {
  transition: opacity 0.6s cubic-bezier(0.16, 1, 0.3, 1),
    transform 0.6s cubic-bezier(0.16, 1, 0.3, 1);
}

/* Barra de CTA fixa: desliza de baixo para cima quando o scroll passa do limiar. */
.sticky-cta {
  transition: opacity 0.5s ease-out, transform 0.5s ease-out;
}

.sticky-cta.is-visible {
  opacity: 1;
  transform: translate(-50%, 0);
}
