/* ============================================================
   animations.css —— 所有 @keyframes 动画定义
   ============================================================ */

/* 粒子飘落 */
@keyframes fall {
  0%   { transform: translateY(-40px) rotate(0deg); }
  100% { transform: translateY(105vh) rotate(360deg); }
}

/* 弹幕飞行 */
@keyframes danmaku-fly {
  0%   { transform: translateX(100vw); }
  100% { transform: translateX(-100%); }
}

/* 打字机光标闪烁 */
@keyframes blink { 0%, 50% { opacity: 1; } 51%, 100% { opacity: 0; } }

/* 淡入上移 */
@keyframes fade-up {
  from { opacity: 0; transform: translateY(20px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* 气球漂浮 */
@keyframes float {
  0%, 100% { transform: translateY(0) rotate(-3deg); }
  50%      { transform: translateY(-20px) rotate(3deg); }
}

/* 蛋糕弹跳 */
@keyframes cake-bounce {
  0%, 100% { transform: translateY(0) scale(1); }
  50%      { transform: translateY(-15px) scale(1.05); }
}

/* 向下滚动提示 */
@keyframes scroll-bounce {
  0%, 100% { transform: translateY(0); opacity: 0.7; }
  50%      { transform: translateY(10px); opacity: 1; }
}

/* 倒计时金色脉冲 */
@keyframes pulse-gold {
  0%, 100% { text-shadow: 0 0 20px rgba(255, 215, 0, 0.6); transform: scale(1); }
  50%      { text-shadow: 0 0 40px rgba(255, 215, 0, 0.9); transform: scale(1.08); }
}

/* 许愿按钮渐变流动 */
@keyframes gradient-shift {
  0%   { background-position: 0% 50%; }
  50%  { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}

/* 音乐波纹 */
@keyframes wave {
  0%, 100% { height: 4px; }
  50%      { height: 18px; }
}

/* 蜡烛火焰闪烁 */
@keyframes flicker {
  from { transform: scale(1) rotate(-2deg); opacity: 1; }
  to   { transform: scale(1.15) rotate(2deg); opacity: 0.85; }
}

/* 烟雾上升 */
@keyframes smoke-rise {
  0%   { opacity: 0.8; transform: translateY(0) scale(0.5); }
  100% { opacity: 0; transform: translateY(-80px) scale(1.5); }
}

/* 愿望成真爆发 */
@keyframes wish-burst {
  0%   { transform: translate(-50%, -50%) scale(0); opacity: 0; }
  30%  { transform: translate(-50%, -50%) scale(1.2); opacity: 1; }
  50%  { transform: translate(-50%, -50%) scale(1); opacity: 1; }
  100% { transform: translate(-50%, -50%) scale(1.5); opacity: 0; }
}
