@keyframes petalFall {
  0% { transform: translate3d(0, -6vh, 0) rotate(0deg); opacity: 0; }
  6% { opacity: 0.9; }
  50% { transform: translate3d(-5vw, 52vh, 0) rotate(160deg); opacity: 0.9; }
  92% { opacity: 0.8; }
  100% { transform: translate3d(2vw, 110vh, 0) rotate(330deg); opacity: 0; }
}
@keyframes driftA {
  0%, 100% { transform: translate(0, 0); }
  25% { transform: translate(-5vw, -6vh); }
  50% { transform: translate(3vw, -10vh); }
  75% { transform: translate(6vw, -3vh); }
}
@keyframes driftB {
  0%, 100% { transform: translate(0, 0); }
  30% { transform: translate(6vw, 4vh); }
  60% { transform: translate(-4vw, 8vh); }
  80% { transform: translate(-7vw, 2vh); }
}
@keyframes driftC {
  0%, 100% { transform: translate(0, 0); }
  20% { transform: translate(-3vw, 5vh); }
  45% { transform: translate(-8vw, -2vh); }
  70% { transform: translate(4vw, -7vh); }
}
@keyframes flapL {
  from { transform: rotateZ(-8deg) rotateY(16deg); }
  to { transform: rotateZ(-8deg) rotateY(74deg); }
}
@keyframes flapR {
  from { transform: rotateZ(8deg) rotateY(-16deg); }
  to { transform: rotateZ(8deg) rotateY(-74deg); }
}
@keyframes scrollPulse {
  0% { transform: translateY(0); opacity: 0.9; }
  70%, 100% { transform: translateY(26px); opacity: 0; }
}
@keyframes glowBreathe {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.8; }
}
@keyframes foliageSway {
  0%, 100% { transform: translate3d(0, 0, 0) rotate(0deg); }
  50% { transform: translate3d(1.05%, 0.35%, 0) rotate(0.4deg); }
}
@keyframes vineSway {
  0%, 100% { transform: rotate(0deg) translate3d(0, 0, 0); }
  50% { transform: rotate(0.65deg) translate3d(0.7%, 0.4%, 0); }
}
@keyframes sunDrift {
  0%, 100% { transform: translate3d(0, 0, 0); opacity: 0.65; }
  50% { transform: translate3d(1.8%, 1.2%, 0); opacity: 0.9; }
}
@keyframes rayShift {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(12deg); }
}
@keyframes lineTravel {
  0% { transform: translateX(-15%); }
  100% { transform: translateX(115%); }
}
