@keyframes digitFlip {
  0% { transform: rotateX(90deg); opacity: 0.3; }
  60% { transform: rotateX(-8deg); opacity: 1; }
  100% { transform: rotateX(0deg); opacity: 1; }
}

@keyframes liveBlink {
  0%, 100% { opacity: 1; transform: scale(1); }
  50% { opacity: 0.35; transform: scale(0.85); }
}

.live-badge {
  animation: livePulse 2.2s ease-in-out infinite;
}
@keyframes livePulse {
  0%, 100% { box-shadow: 0 4px 12px rgba(200,16,46,0.35); }
  50% { box-shadow: 0 4px 20px rgba(200,16,46,0.6); }
}

.season-glow {
  animation: glowDrift 14s ease-in-out infinite alternate;
}
@keyframes glowDrift {
  0% { transform: translateY(0) scale(1); }
  100% { transform: translateY(12px) scale(1.03); }
}

@keyframes petalFall {
  0% { transform: translate3d(0, -10vh, 0) rotate(0deg); }
  100% { transform: translate3d(var(--drift, 40px), 110vh, 0) rotate(360deg); }
}

@keyframes saltFall {
  0% { transform: translate3d(0, -5vh, 0); opacity: 0; }
  10% { opacity: 0.8; }
  100% { transform: translate3d(var(--drift, 10px), 105vh, 0); opacity: 0; }
}

@keyframes slideIn {
  from { transform: translateX(24px); opacity: 0.6; }
  to { transform: translateX(0); opacity: 1; }
}

@keyframes fadeUp {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}
.panel, .hero-card { animation: fadeUp 480ms ease both; }

@keyframes ropeUnfurl {
  from { transform: scaleY(0); opacity: 0; }
  to { transform: scaleY(1); opacity: 1; }
}
.yokozuna-rope {
  transform-origin: top center;
  animation: ropeUnfurl 900ms cubic-bezier(.2,.8,.2,1) both;
}
