/* ============================================================
   形构 FORMSTRUCT · 滚动入场动画（全站共享）
   使用独立 translate 属性，避免与卡片 hover 的 transform 冲突
   ============================================================ */
/* 仅当 JS 可用（html.js 由 <head> 内联脚本立即打上）才隐藏入场元素；
   无 JS / 内联脚本被 CSP 拦截时内容默认可见，杜绝“永久白屏” */
html.js [data-reveal]{
  opacity:0;
  translate:0 22px;
  transition:opacity .7s cubic-bezier(.22,.61,.36,1),
             translate .7s cubic-bezier(.22,.61,.36,1);
  will-change:opacity, translate;
}
html.js [data-reveal].revealed{
  opacity:1;
  translate:0 0;
}
/* 同容器内连续卡片的错落延迟（由 ardot-anim.js 写入） */
[data-reveal][data-reveal-delay="1"]{transition-delay:.07s}
[data-reveal][data-reveal-delay="2"]{transition-delay:.14s}
[data-reveal][data-reveal-delay="3"]{transition-delay:.21s}
[data-reveal][data-reveal-delay="4"]{transition-delay:.28s}

/* 尊重系统“减少动态效果”偏好 */
@media (prefers-reduced-motion: reduce){
  [data-reveal]{opacity:1 !important;translate:0 0 !important;transition:none !important}
}
