
/* Custom Animations and Utilities */

/* Scroll Triggered Reveal Animations */
.scroll-reveal {
  opacity: 0;
  will-change: transform, opacity;
  transition-property: transform, opacity;
  transition-timing-function: cubic-bezier(0.25, 0.1, 0.25, 1);
  transition-duration: 0.8s;
}

.scroll-reveal[data-animate="fade-up"] {
  transform: translateY(28px);
}

.scroll-reveal[data-animate="scale-up"] {
  transform: translateY(20px) scale(0.92);
}

.scroll-reveal[data-animate="fade-in"] {
  transform: scale(0.96);
}

/* Active State when in Viewport */
.scroll-reveal.in-view {
  opacity: 1 !important;
  transform: translateY(0) scale(1) !important;
}

/* Ripple Rings */
@keyframes ripple {
  0% { transform: scale(0.6); opacity: 0.7; }
  100% { transform: scale(2.2); opacity: 0; }
}

.ripple-ring-1 { animation: ripple 2s infinite ease-out; }
.ripple-ring-2 { animation: ripple 2s infinite ease-out 0.6s; }
.ripple-ring-3 { animation: ripple 2s infinite ease-out 1.2s; }

/* Hourglass Slow Spin */
@keyframes spinSlow {
  0%, 40% { transform: rotate(0deg); }
  50%, 90% { transform: rotate(180deg); }
  100% { transform: rotate(360deg); }
}

.animate-spin-slow {
  animation: spinSlow 8s infinite ease-in-out;
}

/* Floating Love Birds */
@keyframes birdFlyLeft {
  0% { transform: translateX(-15vw) translateY(15px) scale(0.85); opacity: 0; }
  15% { opacity: 0.7; }
  85% { opacity: 0.7; }
  100% { transform: translateX(115vw) translateY(-15px) scale(0.85); opacity: 0; }
}

@keyframes birdFlyRight {
  0% { transform: translateX(115vw) translateY(35px) scale(0.75); opacity: 0; }
  15% { opacity: 0.6; }
  85% { opacity: 0.6; }
  100% { transform: translateX(-15vw) translateY(5px) scale(0.75); opacity: 0; }
}

.floating-birds.top-left {
  position: absolute;
  top: 9%;
  left: 0;
  pointer-events: none;
  z-index: 10;
  animation: birdFlyLeft 20s infinite linear;
}

.floating-birds.top-right {
  position: absolute;
  top: 15%;
  left: 0;
  pointer-events: none;
  z-index: 10;
  animation: birdFlyRight 22s infinite linear;
}

/* Sparkles Pulse */
.sparkle {
  position: absolute;
  pointer-events: none;
  animation: pulseSparkle 4.5s infinite ease-in-out;
}

@keyframes pulseSparkle {
  0%, 100% { transform: scale(0.8) rotate(0deg); opacity: 0.2; }
  50% { transform: scale(1.3) rotate(90deg); opacity: 0.8; }
}
