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

@keyframes gradientShift {
  0%, 100% {
    background-position: 0% 50%;
  }
  50% {
    background-position: 100% 50%;
  }
}

.fade-in {
  opacity: 0;
}

.fade-in.visible {
  animation: fadeIn 1.8s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}

.hero-section h1 {
  animation: gradientShift 8s ease infinite;
  background-size: 200% auto;
}