/* Shared motion utilities */
@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}

@keyframes gradientMove {
  0% {
    background-position: 0% 50%;
  }

  50% {
    background-position: 100% 50%;
  }

  100% {
    background-position: 0% 50%;
  }
}

@keyframes pulseSoft {
  0%,
  100% {
    box-shadow: 0 0 0 0 rgba(37, 99, 235, 0.18);
  }

  50% {
    box-shadow: 0 0 0 18px rgba(37, 99, 235, 0);
  }
}

.animate-pulse {
  animation: pulseSoft 2.6s ease-in-out infinite;
}

.reveal {
  opacity: 0;
  transition: opacity 0.7s ease;
}

.reveal.visible {
  opacity: 1;
}

.reveal.delay-1 {
  transition-delay: 0.08s;
}

.reveal.delay-2 {
  transition-delay: 0.16s;
}

.reveal.delay-3 {
  transition-delay: 0.24s;
}
