/* =========================================================
   动画与可见性过渡
   原则：动效为内容服务，全部尊重 prefers-reduced-motion
   ========================================================= */

@keyframes flameFlicker{
  0%,100%{transform:scale(1) rotate(-1deg);opacity:1;}
  25%{transform:scale(1.07) rotate(1.5deg);opacity:.9;}
  50%{transform:scale(.96) rotate(-1deg);opacity:1;}
  75%{transform:scale(1.05) rotate(1deg);opacity:.93;}
}
.streak-flame .flame-emoji{animation:flameFlicker 1.6s ease-in-out infinite;transform-origin:50% 70%;}

@keyframes noticeScroll{
  from{transform:translateY(0);}
  to{transform:translateY(-20%);}
}
.notice-track{
  animation:noticeScroll 10s cubic-bezier(.65,.05,.35,1) infinite;
  will-change:transform;
}
.notice-rail:hover .notice-track{
  animation-play-state:paused;
}

@keyframes pulseRing{
  0%{box-shadow:0 0 0 0 rgba(224,179,96,.55);}
  70%{box-shadow:0 0 0 12px rgba(224,179,96,0);}
  100%{box-shadow:0 0 0 0 rgba(224,179,96,0);}
}
.btn-signin:not(:disabled){animation:pulseRing 2.6s infinite;}

@keyframes cardIn{
  from{opacity:0;transform:translateY(18px);}
  to{opacity:1;transform:translateY(0);}
}
.card,.news-main,.news-list li,.review-item,.faq-list details,.hero-signin,.kf-table{
  animation:cardIn .6s ease both;
}
.cards .card:nth-child(2){animation-delay:.07s;}
.cards .card:nth-child(3){animation-delay:.14s;}
.cards .card:nth-child(4){animation-delay:.21s;}
.cards .card:nth-child(5){animation-delay:.28s;}
.cards .card:nth-child(6){animation-delay:.35s;}
.news-list li:nth-child(2){animation-delay:.06s;}
.news-list li:nth-child(3){animation-delay:.12s;}
.news-list li:nth-child(4){animation-delay:.18s;}
.news-list li:nth-child(5){animation-delay:.24s;}

@keyframes spin{to{transform:rotate(360deg);}}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.001ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
    scroll-behavior:auto !important;
  }
}
