/* Core Animations */
.fade-up {
  opacity: 0;
  transform: translateY(40px);
  transition: opacity 0.8s cubic-bezier(0.4, 0, 0.2, 1), transform 0.8s cubic-bezier(0.4, 0, 0.2, 1);
}

.fade-up.visible {
  opacity: 1;
  transform: translateY(0);
}

.stagger-1 { transition-delay: 0.1s; }
.stagger-2 { transition-delay: 0.2s; }
.stagger-3 { transition-delay: 0.3s; }
.stagger-4 { transition-delay: 0.4s; }

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

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

@keyframes pulseGlow {
  0% { box-shadow: 0 0 0 0 rgba(34, 197, 94, 0.4); }
  70% { box-shadow: 0 0 0 20px rgba(34, 197, 94, 0); }
  100% { box-shadow: 0 0 0 0 rgba(34, 197, 94, 0); }
}

.pulse-btn {
  animation: pulseGlow 3s infinite;
}

@keyframes ambientShift {
  0% { transform: scale(1) translate(0, 0); opacity: 0.5; }
  50% { transform: scale(1.2) translate(20px, -20px); opacity: 0.8; }
  100% { transform: scale(1) translate(0, 0); opacity: 0.5; }
}

.ambient-glow {
  animation: ambientShift 15s ease-in-out infinite alternate;
}