/* ==========================================================================
   夜色服饰 B2B 独立站 · S1.7 极简过渡动画系统
   --------------------------------------------------------------------------
   只允许两类过渡：opacity 淡入淡出 + 轻微位移（≤ 8px）。
   时长统一走 var(--nc-transition)（240ms ease-out）。
   禁止：弹跳 / 回弹 / 弹簧 / 视差 / 粒子 / 发光 / 自动播放。

   关键安全设计（避免「动画禁用后内容被藏起来」这一致命 bug）：
     ① 隐藏态只在 <html> 带 .nc-has-js 时生效 —— 由 motion.js 在执行时添加。
        因此无 JS 环境下元素保持立即可见，绝不 opacity:0。
     ② 隐藏态整段包在 @media (prefers-reduced-motion: no-preference) 内，
        系统要求「减少动态效果」时根本不应用。
     ③ 仍额外加一段 prefers-reduced-motion: reduce 的强制可见规则（双保险）。

   依赖令牌（来自 assets/css/tokens.css）：
     --nc-transition
   ========================================================================== */

/* 仅对显式标记的元素生效：[data-nc-reveal] 或 .nc-reveal */
@media (prefers-reduced-motion: no-preference) {

	.nc-has-js :where([data-nc-reveal], .nc-reveal) {
		transition: opacity var(--nc-transition), transform var(--nc-transition);
		transition-delay: var(--nc-motion-delay, 0ms);
	}

	/* 未出现时：淡出 + 下移 8px（位移 ≤ 8px） */
	.nc-has-js :where([data-nc-reveal], .nc-reveal):not(.is-revealed) {
		opacity: 0;
		transform: translateY(var(--nc-motion-shift, 8px));
	}

	/* 已出现：完全可见、归位 */
	.nc-has-js :where([data-nc-reveal], .nc-reveal).is-revealed {
		opacity: 1;
		transform: translateY(0);
	}
}

/* 双保险：系统偏好「减少动态效果」时，元素立即可见、无任何过渡 */
@media (prefers-reduced-motion: reduce) {
	.nc-has-js :where([data-nc-reveal], .nc-reveal) {
		opacity: 1 !important;
		transform: none !important;
		transition: none !important;
	}
}
