/* =========================================================
 * reveal.css — 滚动进入动效样式
 * 配合 js/reveal.js 使用：
 *   .reveal  大区块：初始隐藏，进入视口后由 JS 加 .on 淡入上移
 *   .rv-item 容器内卡片：父级 .reveal 进入后依次错峰出现
 * JS 未执行时无这些类，内容正常显示（优雅降级）
 * ========================================================= */

.reveal {
  opacity: 0;
  transform: translateY(40px);
  transition: opacity .7s cubic-bezier(.22, .61, .36, 1),
              transform .7s cubic-bezier(.22, .61, .36, 1);
}
.reveal.on { opacity: 1; transform: none; }

.rv-item {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity .6s cubic-bezier(.22, .61, .36, 1),
              transform .6s cubic-bezier(.22, .61, .36, 1);
}
.reveal.on .rv-item { opacity: 1; transform: none; }

/* 卡片错峰：父级 .reveal 进入后子元素依次延迟 */
.reveal.on .rv-item:nth-child(2) { transition-delay: .08s; }
.reveal.on .rv-item:nth-child(3) { transition-delay: .16s; }
.reveal.on .rv-item:nth-child(4) { transition-delay: .24s; }
.reveal.on .rv-item:nth-child(5) { transition-delay: .32s; }
.reveal.on .rv-item:nth-child(6) { transition-delay: .40s; }
.reveal.on .rv-item:nth-child(7) { transition-delay: .48s; }
.reveal.on .rv-item:nth-child(8) { transition-delay: .56s; }

/* 移动端：位移幅度更小，节奏更快 */
@media (max-width: 1024px) {
  .reveal { transform: translateY(24px); }
  .rv-item { transform: translateY(18px); }
}

/* 用户系统偏好减少动效：禁用动画，直接显示 */
@media (prefers-reduced-motion: reduce) {
  .reveal, .rv-item { transition: none; opacity: 1; transform: none; }
}
