/* ============================================
   动效：滚动入场 / 跑马灯 / 呼吸光晕 / 浮动
============================================ */

/* 滚动入场（配合 animations.js 的 IntersectionObserver） */
[data-reveal] {
  opacity: 0;
  transform: translateY(36px);
  transition: opacity .8s cubic-bezier(.22,.61,.36,1), transform .8s cubic-bezier(.22,.61,.36,1);
  will-change: opacity, transform;
}
[data-reveal="left"]  { transform: translateX(-44px); }
[data-reveal="right"] { transform: translateX(44px); }
[data-reveal="zoom"]  { transform: scale(.92); }
[data-reveal].revealed { opacity: 1; transform: none; }

/* 跑马灯 */
@keyframes marquee {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

/* 呼吸光晕 */
@keyframes breathe {
  0%, 100% { transform: scale(1); opacity: .5; }
  50%      { transform: scale(1.15); opacity: .75; }
}
.glow { animation: breathe 7s ease-in-out infinite; }
.glow-slow { animation-duration: 11s; }

/* 上下浮动 */
@keyframes floaty {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-14px); }
}
.floaty { animation: floaty 5s ease-in-out infinite; }
.floaty-delay { animation-delay: 1.6s; }

/* 闪烁小点（直播感 / 状态感） */
@keyframes blink { 0%, 100% { opacity: 1; } 50% { opacity: .25; } }
.blink { animation: blink 1.8s ease-in-out infinite; }

/* Hero 专用：AI 对话气泡 */
@keyframes pop-in {
  from { opacity: 0; transform: translateY(18px) scale(.9); }
  to   { opacity: 1; transform: none; }
}
.pop-in { animation: pop-in .7s cubic-bezier(.22,.61,.36,1) both; }

/* 数字计数容器 */
.counter { display: inline-block; }

/* 减少动态偏好：尊重系统设置 */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
  [data-reveal] { opacity: 1 !important; transform: none !important; }
}
