/* ============== 关键帧 ============== */
@keyframes rotateGlobe{
  from{transform: translateY(-50%) rotate(0deg)}
  to  {transform: translateY(-50%) rotate(360deg)}
}
@keyframes pulseDot{
  0%,100%{box-shadow: 0 0 0 4px rgba(201,169,97,.18)}
  50%{box-shadow: 0 0 0 8px rgba(201,169,97,.0)}
}
@keyframes floatY{
  0%,100%{transform: translateY(0)}
  50%{transform: translateY(-12px)}
}
@keyframes scrollDot{
  0%{transform: translate(-50%, 0); opacity: 1}
  100%{transform: translate(-50%, 14px); opacity: 0}
}
@keyframes fadeUp{
  from{opacity:0; transform: translateY(28px)}
  to  {opacity:1; transform: translateY(0)}
}
@keyframes fadeIn{
  from{opacity:0}
  to  {opacity:1}
}
@keyframes shimmer{
  0%{background-position: -200% 0}
  100%{background-position: 200% 0}
}

/* ============== 进场动画 ============== */
[data-reveal]{
  opacity: 0;
  transform: translateY(28px);
  transition: opacity .8s var(--t), transform .8s var(--t);
  will-change: opacity, transform;
}
[data-reveal].is-in{
  opacity: 1;
  transform: translateY(0);
}

/* 首屏元素优先展示 */
.hero-tag[data-reveal]{transition-delay: 0s}
.hero-title[data-reveal]{transition-delay: .08s}
.hero-desc[data-reveal]{transition-delay: .16s}
.hero-actions[data-reveal]{transition-delay: .24s}
.hero-stats[data-reveal]{transition-delay: .32s}
.hero-visual[data-reveal]{transition-delay: .2s}

/* ============== 导航滚动 ============== */
.topbar{
  animation: fadeIn .8s var(--t) both;
}

/* ============== 减少动画偏好 ============== */
@media (prefers-reduced-motion: reduce){
  *,
  *::before,
  *::after{
    animation-duration: 0.001s !important;
    transition-duration: 0.001s !important;
  }
  [data-reveal]{opacity:1; transform:none}
  .globe-svg{animation: none}
}
