

@keyframes cta-pulse {
  0%,
  100% {
    transform: scale(1);
  }
  50% {
    transform: scale(1.03);
  }
}

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

@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;
}

.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);
}

.sticky-cta {
  transition: opacity 0.5s ease-out, transform 0.5s ease-out;
}

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