/* ========================================
   animate.css — ERP 全局通用动效
   ======================================== */

/* ---------- 淡入 ---------- */
@keyframes fadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}

@keyframes fadeInUp {
  from { opacity: 0; transform: translateY(24px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes fadeInDown {
  from { opacity: 0; transform: translateY(-16px); }
  to   { opacity: 1; transform: translateY(0); }
}

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

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

/* ---------- 缩放 ---------- */
@keyframes scaleIn {
  from { opacity: 0; transform: scale(0.92); }
  to   { opacity: 1; transform: scale(1); }
}

@keyframes scaleInBounce {
  from { opacity: 0; transform: scale(0.85); }
  60%  { transform: scale(1.03); }
  to   { opacity: 1; transform: scale(1); }
}

/* ---------- 脉冲 ---------- */
@keyframes pulse {
  0%, 100% { opacity: 1; }
  50%      { opacity: 0.5; }
}

@keyframes pulseDot {
  0%, 100% { transform: scale(1); opacity: 1; }
  50%      { transform: scale(1.6); opacity: 0.3; }
}

/* ---------- 旋转 ---------- */
@keyframes spin {
  to { transform: rotate(360deg); }
}

/* ---------- 浮动 ---------- */
@keyframes float {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-12px); }
}

@keyframes floatSlow {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-8px); }
}

/* ---------- 光晕流动 ---------- */
@keyframes glowDrift {
  0%, 100% { transform: translate(0, 0); }
  50%      { transform: translate(6%, 4%); }
}

@keyframes glowDrift2 {
  0%, 100% { transform: translate(0, 0); }
  50%      { transform: translate(-4%, -6%); }
}

/* ---------- 进度条 ---------- */
@keyframes progressFill {
  from { width: 0; }
}

/* ---------- 滚动指示箭头 ---------- */
@keyframes scrollBounce {
  0%, 100% { transform: rotate(45deg) translate(0, 0); opacity: 0.5; }
  50%      { transform: rotate(45deg) translate(4px, 4px); opacity: 1; }
}

/* ---------- 渐变移动 ---------- */
@keyframes gradientShift {
  0%   { background-position: 0% 50%; }
  50%  { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}

/* ---------- 线条动画 ---------- */
@keyframes lineGrow {
  from { transform: scaleX(0); }
  to   { transform: scaleX(1); }
}

@keyframes dashMove {
  to { stroke-dashoffset: -20; }
}

/* ---------- 计数器动画 ---------- */
@keyframes countUp {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ---------- 工具类 ---------- */
.anim-fade-in       { animation: fadeIn 0.6s var(--ease) both; }
.anim-fade-in-up    { animation: fadeInUp 0.7s var(--ease) both; }
.anim-fade-in-down  { animation: fadeInDown 0.5s var(--ease) both; }
.anim-fade-in-left  { animation: fadeInLeft 0.7s var(--ease) both; }
.anim-fade-in-right { animation: fadeInRight 0.7s var(--ease) both; }
.anim-scale-in      { animation: scaleIn 0.5s var(--ease) both; }
.anim-scale-bounce  { animation: scaleInBounce 0.6s var(--ease) both; }
.anim-float         { animation: float 4s ease-in-out infinite; }
.anim-float-slow    { animation: floatSlow 6s ease-in-out infinite; }
.anim-pulse         { animation: pulse 2s ease-in-out infinite; }
.anim-spin          { animation: spin 1s linear infinite; }

/* 延迟辅助类 */
.delay-1  { animation-delay: 0.1s; }
.delay-2  { animation-delay: 0.2s; }
.delay-3  { animation-delay: 0.3s; }
.delay-4  { animation-delay: 0.4s; }
.delay-5  { animation-delay: 0.5s; }
.delay-6  { animation-delay: 0.6s; }
.delay-7  { animation-delay: 0.7s; }
.delay-8  { animation-delay: 0.8s; }
