/**
 * 全站滚动淡入(fade-in-up):滚动到组件时,组件内的文本内容从下往上淡入。
 *
 * 安全设计:
 * 1) 初始隐藏只在 html.mt-rv-ready 下生效,该 class 只有 JS 成功初始化才加
 *    → JS 失败 / 不支持 IntersectionObserver / 偏好减少动效时,内容一律照常显示。
 * 2) 显示规则(.mt-rv-in)带与隐藏规则相同的 :not() 链 + 额外的 .mt-rv-in,
 *    特异性严格高于隐藏规则,确保进入视口后一定能覆盖 opacity:0。
 *    (曾因显示规则特异性低于隐藏规则,导致文本永久不可见)
 */

/* 初始态:隐藏并下移。排除顶部框架(全局页眉/公告条) */
html.mt-rv-ready [class*="elementor-widget-mt_"]:not(.elementor-widget-mt_global_header):not(.elementor-widget-mt_announcement_bar)
	:is(h1, h2, h3, h4, h5, h6, p,
	    [class*="-title"], [class*="-subtitle"], [class*="-desc"], [class*="-text"], [class*="-label"]) {
	opacity: 0;
	transform: translateY(18px);
	will-change: opacity, transform;
}

/* 进入视口:淡入 + 归位。特异性 = 隐藏规则 + .mt-rv-in,严格更高 */
html.mt-rv-ready [class*="elementor-widget-mt_"]:not(.elementor-widget-mt_global_header):not(.elementor-widget-mt_announcement_bar).mt-rv-in
	:is(h1, h2, h3, h4, h5, h6, p,
	    [class*="-title"], [class*="-subtitle"], [class*="-desc"], [class*="-text"], [class*="-label"]) {
	opacity: 1;
	transform: none;
	transition: opacity 0.55s cubic-bezier(0.22, 1, 0.36, 1),
	            transform 0.55s cubic-bezier(0.22, 1, 0.36, 1);
}

/* 轻微错峰:同组件内元素依次入场,更像"刚加载出来" */
html.mt-rv-ready [class*="elementor-widget-mt_"].mt-rv-in :is(h1, h2, h3, h4, h5, h6, p):nth-of-type(1) { transition-delay: 0s; }
html.mt-rv-ready [class*="elementor-widget-mt_"].mt-rv-in :is(h1, h2, h3, h4, h5, h6, p):nth-of-type(2) { transition-delay: 0.07s; }
html.mt-rv-ready [class*="elementor-widget-mt_"].mt-rv-in :is(h1, h2, h3, h4, h5, h6, p):nth-of-type(3) { transition-delay: 0.14s; }
html.mt-rv-ready [class*="elementor-widget-mt_"].mt-rv-in :is(h1, h2, h3, h4, h5, h6, p):nth-of-type(4) { transition-delay: 0.21s; }
html.mt-rv-ready [class*="elementor-widget-mt_"].mt-rv-in :is(h1, h2, h3, h4, h5, h6, p):nth-of-type(n+5) { transition-delay: 0.28s; }

/* 兜底:JS 标记为强制显示时,无条件可见(优先级最高) */
html.mt-rv-ready [class*="elementor-widget-mt_"].mt-rv-force
	:is(h1, h2, h3, h4, h5, h6, p,
	    [class*="-title"], [class*="-subtitle"], [class*="-desc"], [class*="-text"], [class*="-label"]) {
	opacity: 1 !important;
	transform: none !important;
}

/* 尊重"减少动效"偏好:直接显示 */
@media (prefers-reduced-motion: reduce) {
	html.mt-rv-ready [class*="elementor-widget-mt_"]
		:is(h1, h2, h3, h4, h5, h6, p,
		    [class*="-title"], [class*="-subtitle"], [class*="-desc"], [class*="-text"], [class*="-label"]) {
		opacity: 1 !important;
		transform: none !important;
		transition: none !important;
	}
}
