/* ==========================================================================
   ANIMATIONS & KEYFRAMES
   ========================================================================== */

@keyframes pulseBeat {
  0% { transform: scale(1); }
  14% { transform: scale(1.15); }
  28% { transform: scale(1); }
  42% { transform: scale(1.22); }
  70% { transform: scale(1); }
}

@keyframes sealFloat {
  0% { transform: translateY(0); }
  100% { transform: translateY(-4px); }
}

@keyframes floatUpDown {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(6px); }
}

@keyframes particleMoveLR {
  0% { left: 0%; opacity: 0; }
  15% { opacity: 1; }
  85% { opacity: 1; }
  100% { left: 85%; opacity: 0; }
}

@keyframes particleMoveRL {
  0% { right: 0%; opacity: 0; }
  15% { opacity: 0.9; }
  85% { opacity: 0.9; }
  100% { right: 85%; opacity: 0; }
}

@keyframes blink {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.3; }
}

@keyframes glowText {
  0% { filter: drop-shadow(0 0 10px rgba(255, 77, 109, 0.4)); }
  100% { filter: drop-shadow(0 0 25px rgba(255, 209, 102, 0.7)); }
}

@keyframes fadeIn {
  from { opacity: 0; transform: translateY(10px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes stampPop {
  0% { transform: scale(2) rotate(-30deg); opacity: 0; }
  60% { transform: scale(0.9) rotate(-10deg); opacity: 0.9; }
  100% { transform: scale(1.1) rotate(-12deg); opacity: 1; }
}

/* Floating heart animation when liking cards */
.floating-heart {
  position: fixed;
  font-size: 24px;
  pointer-events: none;
  z-index: 2000;
  animation: floatHeart 1.8s ease-out forwards;
}

@keyframes floatHeart {
  0% {
    transform: translate(0, 0) scale(0.5);
    opacity: 1;
  }
  50% {
    transform: translate(calc(var(--rand-x) * 40px), -60px) scale(1.2);
    opacity: 0.9;
  }
  100% {
    transform: translate(calc(var(--rand-x) * 80px), -140px) scale(0.8);
    opacity: 0;
  }
}
