/* Animations landing page */

@keyframes fadeInUp {
  from {
    opacity: 0;
    transform: translateY(30px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes float {
  0%, 100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-10px);
  }
}

@keyframes pulseGlow {
  0%, 100% {
    box-shadow: 0 0 0 0 rgba(37, 99, 235, 0.4);
  }
  50% {
    box-shadow: 0 0 25px 12px rgba(37, 99, 235, 0);
  }
}

.animate-on-scroll {
  opacity: 0;
  will-change: opacity, transform;
  transition: opacity 0.8s cubic-bezier(0.25, 0.46, 0.45, 0.94),
              transform 0.8s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

.animate-on-scroll.is-visible {
  opacity: 1;
}

.fade-up {
  transform: translateY(30px);
}
.fade-up.is-visible {
  transform: translateY(0);
}

.fade-left {
  transform: translateX(-40px);
}
.fade-left.is-visible {
  transform: translateX(0);
}

.fade-right {
  transform: translateX(40px);
}
.fade-right.is-visible {
  transform: translateX(0);
}

.scale-in {
  transform: scale(0.92);
}
.scale-in.is-visible {
  transform: scale(1);
}

.float-animation {
  animation: float 3s ease-in-out infinite;
}

.pulse-glow {
  animation: pulseGlow 2s infinite;
}

/* Smooth scroll */
html {
  scroll-behavior: smooth;
}

/* Focus transitions */
input,
textarea,
select,
button,
a {
  transition-property: color, background-color, border-color, box-shadow, transform;
  transition-duration: 300ms;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}
