/* ========== 极光漂移动画 ========== */
@keyframes auroraDrift1 {
  0%   { transform: translate(0, 0) scale(1); }
  33%  { transform: translate(3%, -2%) scale(1.05); }
  66%  { transform: translate(-1%, 1%) scale(0.97); }
  100% { transform: translate(2%, -1%) scale(1.02); }
}

@keyframes auroraDrift2 {
  0%   { transform: translate(0, 0) scale(1); }
  33%  { transform: translate(-2%, 3%) scale(1.04); }
  66%  { transform: translate(2%, -1%) scale(0.96); }
  100% { transform: translate(-3%, 2%) scale(1.03); }
}

@keyframes auroraDrift3 {
  0%   { transform: translate(0, 0) scale(1); }
  33%  { transform: translate(2%, -3%) scale(1.06); }
  66%  { transform: translate(-3%, 1%) scale(0.95); }
  100% { transform: translate(1%, -2%) scale(1.01); }
}

/* ========== 呼吸发光动画 ========== */
@keyframes breathe {
  0%, 100% { box-shadow: 0 0 15px rgba(168,85,247,0.2), 0 0 30px rgba(168,85,247,0.05); }
  50%      { box-shadow: 0 0 30px rgba(168,85,247,0.4), 0 0 60px rgba(168,85,247,0.15); }
}

/* ========== 入场动画 ========== */
@keyframes fadeInUp {
  from { opacity: 0; transform: translateY(40px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ========== 水波纹扩散 ========== */
@keyframes rippleOut {
  0%   { transform: scale(0.2); opacity: 0.8; }
  40%  { opacity: 0.25; }
  100% { transform: scale(1.3); opacity: 0; }
}
