/**
 * ===================================================================
 * BLOOM 2.0 — Cinematic Motion Keyframes & GPU Transitions
 * ===================================================================
 */

/* Audio Wave Bar Animation */
@keyframes soundBar {
  0%, 100% { height: 4px; }
  50% { height: 16px; }
}

/* Pulse Opening Silhouette */
@keyframes pulseSilhouette {
  0% {
    transform: translate3d(-50%, -55%, 0) scale(0.96);
    opacity: 0.06;
  }
  100% {
    transform: translate3d(-50%, -55%, 0) scale(1.04);
    opacity: 0.12;
  }
}

/* Organic Gentle Flower Sway */
@keyframes gentleSway {
  0% {
    transform: rotate(0deg) translateY(0);
  }
  30% {
    transform: rotate(2deg) translateY(-3px);
  }
  70% {
    transform: rotate(-2.5deg) translateY(2px);
  }
  100% {
    transform: rotate(0deg) translateY(0);
  }
}

/* Radiant Blossom Luminescence */
@keyframes blossomGlow {
  0% {
    filter: drop-shadow(0 15px 35px rgba(0, 0, 0, 0.45)) drop-shadow(0 0 10px rgba(244, 183, 200, 0.3));
    transform: scale(1);
  }
  100% {
    filter: drop-shadow(0 20px 45px rgba(0, 0, 0, 0.55)) drop-shadow(0 0 28px rgba(244, 183, 200, 0.65));
    transform: scale(1.02);
  }
}

/* Ink / Letter Paragraph Staggered Reveal */
@keyframes inkReveal {
  0% {
    opacity: 0;
    transform: translateY(12px);
    filter: blur(4px);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
    filter: blur(0px);
  }
}

/* Wax Seal Hint Pulse */
@keyframes pulseHint {
  0%, 100% {
    opacity: 0.5;
    transform: translateY(0);
  }
  50% {
    opacity: 0.9;
    transform: translateY(-2px);
  }
}

/* Subtle Cinematic Slow Zoom (Ken Burns Climax) */
@keyframes cinematicSlowZoom {
  0% {
    transform: scale(1) translateY(0);
  }
  100% {
    transform: scale(1.06) translateY(-8px);
  }
}

/* Fade In Up Utility Class */
.fade-in-up {
  animation: fadeInUpAnim 0.9s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

@keyframes fadeInUpAnim {
  0% {
    opacity: 0;
    transform: translateY(20px);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

/* Floating Envelope Soft Levitation */
.floating-levitation {
  animation: softFloat 5s infinite ease-in-out;
}

@keyframes softFloat {
  0%, 100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-8px);
  }
}

/* Blooming Unfurl Transitions for SVG Elements */
.blooming #flowerPetals {
  animation: petalUnfurl 2.2s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

@keyframes petalUnfurl {
  0% {
    transform: translate(400px, 390px) scale(0.65) rotate(-15deg);
    opacity: 0.8;
  }
  50% {
    transform: translate(400px, 390px) scale(1.08) rotate(2deg);
  }
  100% {
    transform: translate(400px, 390px) scale(1) rotate(0deg);
    opacity: 1;
  }
}

/* Interactive Lily Sparkle Halo (GPU-friendly in-bounds pulse) */
.node-sparkle-halo {
  position: absolute;
  inset: 4px;
  border-radius: 16px;
  border: 1px dashed rgba(232, 214, 183, 0.4);
  opacity: 0.2;
  pointer-events: none;
  animation: haloPulse 3s infinite ease-in-out;
}

@keyframes haloPulse {
  0%, 100% {
    opacity: 0.2;
  }
  50% {
    opacity: 0.65;
  }
}

/* Proposal Response Sweet Celebration Pulse */
.proposal-celebrate {
  animation: celebratePop 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

@keyframes celebratePop {
  0% {
    transform: scale(0.9);
    opacity: 0;
  }
  60% {
    transform: scale(1.03);
  }
  100% {
    transform: scale(1);
    opacity: 1;
  }
}

/* Signature Title Floating Petals & Sparkle Keyframes */
@keyframes floatPetalLeft {
  0% {
    transform: rotate(-6deg) translateY(0) scale(0.96);
  }
  100% {
    transform: rotate(8deg) translateY(-8px) scale(1.04);
  }
}

@keyframes floatPetalRight {
  0% {
    transform: rotate(6deg) translateY(0) scale(0.96);
  }
  100% {
    transform: rotate(-8deg) translateY(-8px) scale(1.04);
  }
}

@keyframes sparkleTwinkle {
  0%, 100% {
    opacity: 0.4;
    transform: scale(0.85);
  }
  50% {
    opacity: 0.95;
    transform: scale(1.15);
  }
}
