@keyframes colonBlink {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.35; }
}

@keyframes floatUp {
  0% { transform: translateY(0) scale(1); opacity: 0.8; }
  100% { transform: translateY(-120vh) scale(0.6); opacity: 0; }
}

@keyframes drift {
  0% { transform: translateX(-10vw); }
  100% { transform: translateX(110vw); }
}

@keyframes twinkle {
  0%, 100% { opacity: 0.3; transform: scale(0.8); }
  50% { opacity: 1; transform: scale(1.2); }
}

@keyframes auroraPulse {
  0%, 100% { opacity: 0.4; }
  50% { opacity: 0.8; }
}

@keyframes heartbeat {
  0%, 100% { transform: scale(1); }
  14% { transform: scale(1.15); }
  28% { transform: scale(1); }
  42% { transform: scale(1.15); }
  70% { transform: scale(1); }
}

@keyframes slideDown {
  from { opacity: 0; transform: translate(-50%, -20px); }
  to { opacity: 1; transform: translate(-50%, 0); }
}

@keyframes wingFlap {
  0%, 100% { transform: rotate(0deg); }
  50% { transform: rotate(20deg); }
}

@keyframes shoot {
  0% { transform: translate(-20px, 20px) rotate(-35deg); opacity: 0; }
  10% { opacity: 1; }
  100% { transform: translate(120px, -120px) rotate(-35deg); opacity: 0; }
}

@keyframes rayRotate {
  0% { transform: rotate(-10deg) translateY(0); opacity: 0.35; }
  100% { transform: rotate(10deg) translateY(-5vh); opacity: 0.6; }
}

@keyframes rainDrop {
  0% { transform: translateY(0); opacity: 0.6; }
  100% { transform: translateY(110vh); opacity: 0; }
}

@keyframes leafFall {
  0% { transform: translate(0, 0) rotate(0deg); opacity: 0.8; }
  25% { transform: translate(20px, 25vh) rotate(45deg); }
  50% { transform: translate(-15px, 50vh) rotate(90deg); }
  75% { transform: translate(25px, 75vh) rotate(135deg); }
  100% { transform: translate(-10px, 110vh) rotate(180deg); opacity: 0; }
}

@keyframes steamRise {
  0% { transform: translateY(0) scale(0.8); opacity: 0.3; }
  50% { opacity: 0.6; }
  100% { transform: translateY(-60vh) scale(1.6); opacity: 0; }
}
