/* 页面动画关键帧 */

/* 向上滑动动画 */
@keyframes slideUp {
  from { transform: translateY(100%); }
  to   { transform: translateY(0); }
}

/* LIVE 脉冲动画 */
@keyframes livePulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50%      { opacity: 0.4; transform: scale(0.7); }
}

/* Toast 滑入动画 */
@keyframes toastSlideIn {
  from { transform: translateX(100%); opacity: 0; }
  to   { transform: translateX(0); opacity: 1; }
}

/* Toast 滑出动画 */
@keyframes toastSlideOut {
  from { transform: translateX(0); opacity: 1; }
  to   { transform: translateX(100%); opacity: 0; }
}

/* 淡入向上动画 */
@keyframes fadeUp {
  from {
    opacity: 0;
    transform: translateY(20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* 分数填充动画 */
@keyframes scoreFill {
  from { width: 0%; }
}

/* 脉冲高亮动画 */
@keyframes pulseHighlight {
  0%, 100% {
    transform: scale(1);
    text-shadow: none;
  }
  50% {
    transform: scale(1.25);
    text-shadow: 0 0 16px rgba(255, 214, 102, 0.85);
  }
}

/* 加载动画 */
@keyframes loadingPulse {
  0%, 100% { opacity: 0.4; }
  50% { opacity: 1; }
}
