/* vfl-reveal — 滚动加入场弹性弹跳动画（配套 vfl-reveal.js）
 * 柔和幅度：translateY 42px 起步，20px 过渡 + 4px/1px 回弹三次衰减
 * 配合脚本为 .vfl-reveal 增删 .vfl-in 控制播放/复现
 */
.vfl-reveal {
  opacity: 0;
  transform: translateY(42px);
  will-change: opacity, transform;
}
.vfl-reveal.vfl-in {
  opacity: 1;
  transform: translateY(0);
  /* 弹性回弹：快滑入 → 冲一点 → 回弹衰减（柔和不夸张） */
  transition:
    opacity .5s ease,
    transform .7s cubic-bezier(.22, 1.2, .36, 1);
}
/* 错峰延迟（可叠加 data-delay 覆盖） */
.vfl-reveal[data-delay="100"].vfl-in { transition-delay: .1s; }
.vfl-reveal[data-delay="200"].vfl-in { transition-delay: .2s; }
.vfl-reveal[data-delay="300"].vfl-in { transition-delay: .3s; }
.vfl-reveal[data-delay="400"].vfl-in { transition-delay: .4s; }
.vfl-reveal[data-delay="500"].vfl-in { transition-delay: .5s; }

/* 尊重系统"减弱动效"偏好：直接显示，不播动画 */
@media (prefers-reduced-motion: reduce) {
  .vfl-reveal { opacity: 1 !important; transform: none !important; transition: none !important; }
}
