/**
 * Classical Animations & Keyframes
 * Royal Gujarati Wedding Invitation
 */

@keyframes sunburstRotate {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

@keyframes divinePulse {
  0%, 100% {
    box-shadow: 0 0 35px rgba(255, 215, 0, 0.4), 0 0 80px rgba(255, 140, 0, 0.25);
    transform: scale(1);
  }
  50% {
    box-shadow: 0 0 55px rgba(255, 215, 0, 0.7), 0 0 110px rgba(255, 140, 0, 0.45);
    transform: scale(1.015);
  }
}

@keyframes diyaFlicker {
  0%, 100% {
    transform: scale(1) translate(0, 0) rotate(-1deg);
    opacity: 0.95;
    filter: drop-shadow(0 -5px 12px #ff9800);
  }
  25% {
    transform: scale(1.08, 1.15) translate(-1px, -2px) rotate(1.5deg);
    opacity: 1;
    filter: drop-shadow(0 -8px 18px #ffb300);
  }
  50% {
    transform: scale(0.95, 0.92) translate(1px, 1px) rotate(-1deg);
    opacity: 0.9;
    filter: drop-shadow(0 -4px 10px #ff6f00);
  }
  75% {
    transform: scale(1.04, 1.06) translate(0, -1px) rotate(0.5deg);
    opacity: 0.98;
    filter: drop-shadow(0 -6px 15px #ffa000);
  }
}

@keyframes bellSwingAnim {
  0% { transform: rotate(0deg); }
  15% { transform: rotate(24deg); }
  30% { transform: rotate(-20deg); }
  45% { transform: rotate(14deg); }
  60% { transform: rotate(-10deg); }
  75% { transform: rotate(5deg); }
  100% { transform: rotate(0deg); }
}

.bell-swing {
  animation: bellSwingAnim 1.6s cubic-bezier(0.36, 0.07, 0.19, 0.97) both;
  transform-origin: top center;
}

@keyframes goldShimmer {
  0% { background-position: -200% 0; }
  100% { background-position: 200% 0; }
}

.gold-shimmer-text {
  background: linear-gradient(
    90deg,
    #780d19 0%,
    #b8860b 25%,
    #520811 50%,
    #c69214 75%,
    #780d19 100%
  );
  background-size: 200% auto;
  color: transparent;
  -webkit-background-clip: text;
  background-clip: text;
  animation: goldShimmer 5s linear infinite;
}

@keyframes toranSway {
  0%, 100% { transform: rotate(0deg) translateY(0); }
  50% { transform: rotate(0.6deg) translateY(3px); }
}

.floating-toran {
  animation: toranSway 6s ease-in-out infinite;
  transform-origin: top center;
}

@keyframes strikeLeftAnim {
  0% { transform: rotate(-25deg) translate(0, 0); }
  40% { transform: rotate(18deg) translate(40px, -15px); }
  100% { transform: rotate(-25deg) translate(0, 0); }
}

@keyframes strikeRightAnim {
  0% { transform: rotate(25deg) translate(0, 0); }
  40% { transform: rotate(-18deg) translate(-40px, -15px); }
  100% { transform: rotate(25deg) translate(0, 0); }
}

.strike-left {
  animation: strikeLeftAnim 0.35s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}

.strike-right {
  animation: strikeRightAnim 0.35s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}

@keyframes sparkShockwave {
  0% { transform: scale(0.2); opacity: 1; filter: brightness(2); }
  50% { transform: scale(1.6); opacity: 0.9; }
  100% { transform: scale(2.4); opacity: 0; }
}

.active-spark {
  animation: sparkShockwave 0.4s ease-out forwards;
}

@keyframes popCheerAnim {
  0% { transform: scale(0.6); opacity: 0; }
  50% { transform: scale(1.15); opacity: 1; }
  100% { transform: scale(1); opacity: 1; }
}

.pop-cheer {
  animation: popCheerAnim 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
}

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

@keyframes dancerSwirlAnim {
  0% { transform: rotate(0deg) scale(1); }
  50% { transform: rotate(6deg) scale(1.05) translateY(-6px); }
  100% { transform: rotate(0deg) scale(1); }
}

.beat-bounce {
  animation: beatBounceAnim 0.2s ease-in-out;
}

.dancer-swirl {
  animation: dancerSwirlAnim 0.35s ease-in-out;
}

@keyframes pulseStickAnim {
  0%, 100% { filter: drop-shadow(0 0 4px #ffd700); }
  50% { filter: drop-shadow(0 0 16px #ffeb3b); }
}

.pulse-stick {
  animation: pulseStickAnim 0.15s ease;
}

@keyframes aartiGlowAnim {
  0% { box-shadow: 0 0 20px rgba(255, 215, 0, 0.3); }
  50% { box-shadow: 0 0 60px rgba(255, 152, 0, 0.85), 0 0 100px rgba(255, 235, 59, 0.5); }
  100% { box-shadow: 0 0 20px rgba(255, 215, 0, 0.3); }
}

.aarti-glow {
  animation: aartiGlowAnim 1.8s ease-in-out;
}

@keyframes spinDisc {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

.playing .music-disc-icon {
  display: inline-block;
  animation: spinDisc 3s linear infinite;
}
