/* ===== 动画样式 ===== */

/* 按钮脉冲阴影动画 */
@keyframes pulse-shadow {
  0%, 100% {
      box-shadow: 0 10px 30px rgba(99, 102, 241, 0.5),
                  0 0 0 0 rgba(99, 102, 241, 0.7);
  }
  50% {
      box-shadow: 0 10px 30px rgba(99, 102, 241, 0.5),
                  0 0 0 10px rgba(99, 102, 241, 0);
  }
}

/* 渐变旋转动画 */
@keyframes gradient-rotate {
  0% { background-position: 0% 50%; }
  50% { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}

/* 滚动指示器动画 */
@keyframes scroll {
  0%, 100% { opacity: 1; transform: translateX(-50%) translateY(0); }
  50% { opacity: 0.3; transform: translateX(-50%) translateY(15px); }
}

/* 闪烁加载动画 */
@keyframes shimmer {
  0% {
      background-position: -1000px 0;
  }
  100% {
      background-position: 1000px 0;
  }
}

/* 旋转加载动画 */
@keyframes spin {
  to { transform: rotate(360deg); }
}

/* 脉冲动画 */
@keyframes pulse {
  0%, 100% {
      opacity: 1;
  }
  50% {
      opacity: 0.5;
  }
}

/* Showcase Ken Burns 动画 */
@keyframes showcase-kenburns {
  0%   { transform: scale(1) translate3d(0, 0, 0); }
  25%  { transform: scale(1.03) translate3d(-2px, -3px, 0); }
  50%  { transform: scale(1.06) translate3d(0px, -6px, 0); }
  75%  { transform: scale(1.09) translate3d(2px, -9px, 0); }
  100% { transform: scale(1.12) translate3d(0px, -12px, 0); }
}

/* Showcase 扫光动画 */
@keyframes showcase-sweep {
  0%   { transform: translateX(-15%) scale(1); opacity: 0.5; }
  25%  { transform: translateX(-5%) scale(1.05); opacity: 0.65; }
  50%  { transform: translateX(0%) scale(1.1); opacity: 0.7; }
  75%  { transform: translateX(5%) scale(1.05); opacity: 0.65; }
  100% { transform: translateX(15%) scale(1); opacity: 0.5; }
}

/* Tag 脉冲动画 - 1 */
@keyframes tag-pulse-1 {
  0%, 100% {
      box-shadow: 0 4px 16px rgba(99, 102, 241, 0.25), inset 0 1px 0 rgba(255, 255, 255, 0.1);
  }
  50% {
      box-shadow: 0 6px 24px rgba(99, 102, 241, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.15);
  }
}

/* Tag 脉冲动画 - 2 */
@keyframes tag-pulse-2 {
  0%, 100% {
      box-shadow: 0 4px 16px rgba(139, 92, 246, 0.25), inset 0 1px 0 rgba(255, 255, 255, 0.1);
  }
  50% {
      box-shadow: 0 6px 24px rgba(139, 92, 246, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.15);
  }
}

/* Tag 脉冲动画 - 3 */
@keyframes tag-pulse-3 {
  0%, 100% {
      box-shadow: 0 4px 16px rgba(236, 72, 153, 0.25), inset 0 1px 0 rgba(255, 255, 255, 0.1);
  }
  50% {
      box-shadow: 0 6px 24px rgba(236, 72, 153, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.15);
  }
}

/* Tag 脉冲动画 - 4 */
@keyframes tag-pulse-4 {
  0%, 100% {
      box-shadow: 0 4px 16px rgba(59, 130, 246, 0.25), inset 0 1px 0 rgba(255, 255, 255, 0.1);
  }
  50% {
      box-shadow: 0 6px 24px rgba(59, 130, 246, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.15);
  }
}

/* 新闻 Ken Burns 动画 */
@keyframes news-kenburns {
  0% {
      transform: scale(1) translate3d(0, 0, 0);
  }
  100% {
      transform: scale(1.08) translate3d(0, -10px, 0);
  }
}

