/* 全站自定义样式（主控统一收口）
 * 来源：原 xts-woodmart-options[custom_css]，2026-09-26 迁移到独立文件，
 * 原因：多个并行代理 read-modify-write 同一 option 会互相覆盖（已实际发生丢更新）。
 * 各代理请把 CSS 片段写到 rebuild-auvaper/reports/<slug>.css，由主控合并进本文件。
 */

/* 全局: 内容区块间距归零,区块间距由各区块自身 padding/margin 控制
 * 必须带 `html` 前缀: 主题 css/style.css:7252 有同特异性的 `.wd-content-layout{padding-block:40px}`,
 * 而子主题样式在主题之前加载 —— 裸类名会被主题压掉(实测 contact 仍为 40px)。
 * 原站实测: 正文容器紧贴页眉(main padding 全 0, 首块 y == 页眉底 191)。 */
html .wd-content-layout { padding-block: 0; }

/* AUVAPER 商品详情页微调 */
/* 价格顺序对齐原站（现价在前、原价在后；删除线走块属性 oldPriceTpTextDecoration） */
.single-product .wd-single-price .tiered-pricing-dynamic-price-wrapper { display: flex; flex-direction: row-reverse; justify-content: flex-end; align-items: baseline; gap: 6px; flex-wrap: wrap; }
/* 商品描述图按列宽铺满（原站描述图 854px 满宽） */
.single-product .wd-single-content img { width: 100%; height: auto; }
/* 评价区限宽居中，不出容器（原站 1380px @x30） */
.single-product #reviews { width: 100%; max-width: 1380px; margin-left: auto; margin-right: auto; }

/* === AUVAPER footer (wd components) tweaks === */
/* 订阅表单：原站为 407x56 白框，内嵌输入框 + 32x32 圆形提交按钮 */
.wd-footer .auv-ft-sec .wpcf7{max-width:407px}
.wd-footer .auv-ft-sec .wpcf7 form{display:flex;align-items:center;justify-content:space-between;height:56px;padding:0 6px 0 16px;border:1px solid #fff;border-radius:0}
.wd-footer .auv-ft-sec .wpcf7 form p{margin:0;flex:1 1 auto;display:flex;align-items:center;width:100%}
.wd-footer .auv-ft-sec .wpcf7 form label{display:flex;align-items:center;width:100%;margin:0;font-size:0;line-height:0}
.wd-footer .auv-ft-sec .wpcf7 input[type=email]{flex:1 1 auto;height:52px;padding:0;border:0;background:transparent;color:#fff;font-size:13px;font-weight:300;box-shadow:none}
.wd-footer .auv-ft-sec .wpcf7 input[type=email]::placeholder{color:rgba(255,255,255,.75);opacity:1}
.wd-footer .auv-ft-sec .wpcf7 input[type=submit]{flex:0 0 auto;width:32px;height:32px;min-width:32px;padding:0;border:0;border-radius:50%;background:#fff url('https://lanevape.com/wp-content/uploads/2026/09/footer-03.svg') center/18px 18px no-repeat;color:transparent;font-size:0;line-height:0;cursor:pointer;box-shadow:none}
.wd-footer .auv-ft-sec .wpcf7 .wpcf7-response-output{margin:8px 0 0;font-size:11px}
/* 社交图标 36x36 */
.wd-footer .auv-ft-soc .wd-social-icon{width:36px;height:36px}
/* wd/row 自带下边距会叠加，间距改由各区 margin 精确控制 */
/* 2026-09-27 技术债清理：原此处有一条 input[type=submit] 的 height/line-height/padding 声明，
 * 与下方带 !important 的同选择器规则声明集完全相同且被其完全覆盖（同特异性、后定义胜）→ 已删。 */
.wd-footer .auv-ft-sec .wpcf7 input[type=submit]{height:32px !important;min-height:32px;line-height:32px !important;padding:0 !important}

/* ===== blog-list-vape-guide.css ===== */
/* auvaper 博客归档页样式微调 —— 由 blog-list-vape-guide 代理产出，供主控统一收口进 custom_css
   作用域：body.woodmart-archive-blog（博客归档页 body class），不污染其他页面
   内容仅样式，无任何结构标记 */

/* auv-blog-archive —— 仅主题层样式微调，结构全部由 wd/* 块承载 */
body.woodmart-archive-blog, body.woodmart-archive-blog .wd-page-wrapper,
body.woodmart-archive-blog .wd-content-layout, body.woodmart-archive-blog .wd-content-area { background-color: #141414; }
body.woodmart-archive-blog .wd-page-title .wd-page-title-bg { display: none; }
body.woodmart-archive-blog .wd-page-title h1.entry-title { font-family: 'Montserrat', sans-serif; font-size: 30px;
  font-weight: 500; color: #ffa113; line-height: 36px; margin: 0 0 60px; text-align: start; }
/* 2026-09-27 技术债清理：原此处有 `body.woodmart-archive-blog .archive-meta{display:none}`，
 * 实测在 blog 归档页（/category/vape-guide/）`.archive-meta` 命中 0 → 死代码，已删。 */
body.woodmart-archive-blog .wd-blog-holder { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 50px 22px; }
body.woodmart-archive-blog .wd-post-img { border-radius: 8px; overflow: hidden; }
body.woodmart-archive-blog .wd-post-img img { width: 100%; height: auto; aspect-ratio: 443 / 248;
  object-fit: cover; display: block; }
body.woodmart-archive-blog .wd-post-thumb .wd-post-date { display: none !important; }
/* 2026-09-27 清理：本条原含 `.wd-post-thumb .wd-post-cat`（实测 0 命中，死选择器）已删；
   保留的 `.wd-post-cat` 实测命中 24。 */
body.woodmart-archive-blog .wd-post-cat { display: none !important; }
body.woodmart-archive-blog .wd-post-author img, body.woodmart-archive-blog .wd-post-author > span { display: none; }
body.woodmart-archive-blog .wd-post-title, body.woodmart-archive-blog .wd-entities-title {
  font-family: 'Montserrat', sans-serif; font-size: 21.6px; font-weight: 500; color: #ffa113;
  line-height: 25.92px; text-align: center; margin: 0; }
body.woodmart-archive-blog .wd-post-meta { justify-content: center; font-family: 'Poppins', sans-serif;
  font-size: 14px; font-weight: 300; color: #ffa113; gap: 0; }
body.woodmart-archive-blog .wd-content-layout.container { padding-left: 30px; padding-right: 30px; }
body.woodmart-archive-blog .wd-breadcrumbs, body.woodmart-archive-blog .wd-breadcrumbs a,
body.woodmart-archive-blog .wd-breadcrumbs span, body.woodmart-archive-blog .woocommerce-breadcrumb {
  font-family: 'Poppins', sans-serif; font-size: 14px; font-weight: 300; color: #ffa113; }
/* 2026-09-27 清理：原此处 `... .wd-post-comments, ... .wd-post-author > span{display:none}` 整条删除 ——
   第一选择器 `.wd-post-comments` 实测 0 命中（死选择器），第二选择器与上文 L64 的
   `.wd-post-author > span{display:none}` 同声明重复。 */
body.woodmart-archive-blog .wd-breadcrumbs { margin-top: 60px !important; padding-top: 0 !important; }
body.woodmart-archive-blog .wd-page-title-el { margin-top: 0 !important; }
body.woodmart-archive-blog .wd-page-title .container { padding-left: 30px; padding-right: 30px; }
body.woodmart-archive-blog .wd-page-title { padding-top: 0 !important; padding-bottom: 0 !important; }
body.woodmart-archive-blog .wd-page-title-el { margin-bottom: 0 !important; padding-bottom: 0 !important; }
body.woodmart-archive-blog .wd-post-meta .wd-post-reply { display: none !important; }
body.woodmart-archive-blog .wd-post-meta .wd-post-author { gap: 0; }
body.woodmart-archive-blog .wd-post-meta .wd-replies-count,
body.woodmart-archive-blog .wd-post-meta a:has(.wd-replies-count) { display: none !important; }
body.woodmart-archive-blog .wd-post-meta .wd-post-author { display: flex; align-items: center; }
body.woodmart-archive-blog .wd-post-meta .wd-post-author a.author { order: 2; }
/* 2026-09-27 清理：`.wd-post-meta .wd-post-author time{order:1}` 实测 0 命中（DOM 里 time 不在
   .wd-post-author 内，而是 .wd-modified-date 下）→ 死选择器，已删。 */
body.woodmart-archive-blog .wd-post-meta time,
body.woodmart-archive-blog .wd-post-meta .updated { display: inline-block !important; visibility: visible !important; order: 1; }
body.woodmart-archive-blog .wd-post-meta .wd-post-author { order: 2; }
body.woodmart-archive-blog .wd-post-meta .wd-post-author { display: contents !important; }
body.woodmart-archive-blog .wd-post-meta .wd-post-author img,
body.woodmart-archive-blog .wd-post-meta .wd-post-author > span { display: none !important; }
body.woodmart-archive-blog .wd-post-meta .wd-modified-date { display: flex !important; order: 1; align-items: center; }
body.woodmart-archive-blog .wd-post-meta .wd-modified-date time { display: inline-block !important; }
body.woodmart-archive-blog .wd-post-meta .wd-modified-date:after { content: "\00b7"; display: inline-block;
  margin: 0 15px; font-size: 25px; line-height: 1; color: #ffa113; vertical-align: middle; }
/* 2026-09-27 清理：原此处又有一条 `... .wd-post-meta .wd-post-author{order:2}`，与上方同名规则
 * 逐字重复（同选择器同声明）→ 已删。 */

/* ===== zyn.css ===== */
/* ===== ZYN 品牌落地页（page id 2090）=====
   收口项：hero 区域 wd/section 的背景图尺寸。

   背景：主控实测 wd/section 无背景尺寸属性 —— 两种命名（backgroundImageSize/bgImageSize、
   backgroundRepeat/bgImageRepeat、backgroundPosition/bgImagePosition）写进块属性后
   computed 均为 auto / repeat / 0% 0%。根因是 wd/section 没有自己的 attributes.php，
   属性取自 cover（wd_get_block_cover_attrs() 只注册 size / aspectRatio）加基类通用样式属性，
   背景图的 size/repeat/position 不在其中，写了会被静默忽略。

   现状：hero 图的原始尺寸（1440×400）恰好等于容器尺寸，桌面端平铺一次视觉正确；
   窄屏（容器 < 1440）时既不缩放也不平铺，会露馅。故在此收口。

   作用域：限定到该 hero section 的 wd-{id8}，不外泄；其余页面不受影响。
   由主控统一并入主题 custom_css，代理不自行修改 custom_css。
*/
body.page-id-2090 .wp-block-wd-section.wd-96afa796{
	background-size: cover;
	background-repeat: no-repeat;
	background-position: center center;
}


/* AUVAPER header (wd components) tweaks */
/* WHB 行通栏：橙区与公告条必须贴边全宽（原手写版里的覆盖规则，改块组件后仍需保留） */
.whb-auv-header-row>.container{max-width:100%;width:100%;padding-left:0;padding-right:0}
.whb-auv-header-row .whb-flex-row{width:100%;padding:0}
.whb-auv-header-row .whb-column{width:100%;max-width:100%;flex:1 1 100%;padding:0}
.whb-auv-header-row .wd-header-html{width:100%;flex:1 1 100%;padding-left:0;padding-right:0;max-width:100%}
/* logo 230x60（原站实测） */
/* 导航 56px 高、18px/500 Montserrat（原站实测） */
.wd-header-html .auv-hd-nav ul{display:flex;justify-content:center;align-items:center;margin:0;padding:0;list-style:none;height:56px}
.wd-header-html .auv-hd-nav ul>li{position:relative;height:100%;display:flex;align-items:center}
.wd-header-html .auv-hd-nav ul>li>a{display:inline-flex;align-items:center;height:100%;padding:16px 14px;color:#000;font-family:'Montserrat','Poppins',sans-serif;font-size:18px;font-weight:500;line-height:1.2;white-space:nowrap}
.wd-header-html .auv-hd-nav ul>li:hover>a{background:#111;color:#fff}
.wd-header-html .auv-hd-tools img{display:block}


/* AUVAPER header banner —— 旧版段（`.wd-header-banner`）已删除（2026-09-27 技术债清理）
 * 依据：本节的 4 条规则 + 第 1 份 @keyframes auv-hd-roll，其选择器 `.wd-header-banner` 及全部
 * 子选择器（`.container` / `.auv-hd-bar` / `.auv-hd-bar-i`）在 10 个页面 × 2 视口
 * （1440 / 375，共 20 次采样）**全部 0 命中** → 从未生效的死代码。
 * 取证：tools/auv-css-coverage.mjs → reports/css-cleanup/coverage.json。
 * 现网公告条由下方「header banner (component version)」段（`.auv-hd-bar-sec` / `.auv-hd-bar`）承载，
 * `auv-hd-roll` 动画由该段的同名 keyframes 定义提供，故本段可整体删除。 */
/* 导航大小写还原为原站形态（主题 wd-nav 默认 uppercase） */
.wd-header-html .auv-hd-nav ul>li>a{text-transform:none}

/* AUVAPER header banner (component version) */
/* 公告条：固定 38px，靠 section 裁剪实现竖直轮播 */
.wd-header-html .auv-hd-bar-sec{background:#2c2c2c;color:#fff;height:38px !important;overflow:hidden !important;padding:0 !important}
.wd-header-html .auv-hd-bar{animation:auv-hd-roll 13.8s cubic-bezier(.65,.05,.36,1) infinite}
.wd-header-html .auv-hd-bar-i{height:38px !important;flex:0 0 38px !important;display:flex;align-items:center;justify-content:center;line-height:22.4px;white-space:nowrap;padding:0 16px}
@keyframes auv-hd-roll{0%,28%{transform:translateY(0)}33.3%,61.3%{transform:translateY(-38px)}66.6%,94.6%{transform:translateY(-76px)}100%{transform:translateY(-114px)}}

/* AUVAPER mega panel
 * ⚠️ `.auv-mega` 是 `wd/section`，而主题对 `.wp-block-wd-section` 有「全宽跳出容器」规则：
 *      width: calc(100vw - scroll-w - sticky-nav-w);
 *      inset-inline-start: calc(50% - 50vw + scroll-w/2 + sticky-nav-w/2);
 *    在 1000px 宽的下拉里，`50%`(=470) − `50vw`(=720) ≈ −242 → 面板整体左溢出 220px、
 *    压到页面内容上（CDP 实测 .auv-mega offsetLeft=-220，offsetParent=.wd-dropdown-menu）。
 *    必须显式 `inset-inline-start:auto` 抵消（`width` 我原有规则已能胜出，`inset` 没有）。
 * ⚠️ 宽度不能写死 1000：`.wd-dropdown-menu` 有 30px 左右 padding，其内容区（.container）只有 940，
 *    写 1000 会再溢出 60。改成跟随容器（面板整体仍是 1000，与源站一致）。 */
/* padding 归零：面板的 `24px 18px` 由 `.wd-dropdown-menu` 提供（源站是单层 .mega-horizontal）。
 * 注意：`.auv-mega` 的 padding 由**块属性**产生，其生成的规则 `.wd.wd .wd-1c3fd9fe{padding:24px 18px}`
 * 特异性 (0,3,0) 高于本文件的 `.wd-header-html .auv-mega`(0,2,0)，**CSS 压不动** ——
 * 已在 cms_block 2340 的 `wd/section` 块属性里把四个 padding 归零。
 * max-height 552 = 源站面板总高 600 − 上下 padding 48（源站 .mega-horizontal 的 600 是含 padding 的总高）。 */
.wd-header-html .auv-mega{width:100%;max-width:100%;inset-inline-start:auto;max-height:552px;overflow-y:auto;overflow-x:hidden}
.wd-header-html .auv-mega .wp-block-wd-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;margin:0}
.wd-header-html .auv-mega .wp-block-wd-column{width:auto;max-width:none}
/* 面板定位对齐源站：源站面板左缘在页面容器左缘 x=22、顶边贴页眉底部（y≈186~191）。
 * 默认 `.wd-dropdown-menu` 是 `absolute` 相对所属菜单项 li 定位（实测 x=411，浮在页中间），
 * 故改为 `fixed` + 视口坐标；用 `:has(.auv-mega)` 只作用于含 mega 面板的那个下拉，
 * 不影响 Nicotine Pouches / Support 等普通下拉。页眉是 sticky，fixed 面板与其相对关系保持一致。 */
.wd-header-html .wd-dropdown-menu.wd-design-sized:has(.auv-mega){position:fixed;left:22px;top:191px;right:auto;bottom:auto;
	/* 主题给该下拉自带 `margin-left:-10px` 与 `transform:translateY(15px)`（进场动画初始位移），
	 * 不抵消的话 left/top 会分别落在 12 / 206，与源站的 22 / 186 差 10 与 20。 */
	/* 主题 `.wd-dropdown` 自带 `margin-top:15px`（进场间距），叠加后 y 会变成 206 而非 191。 */
	margin-left:0;margin-top:0;transform:none !important;
	/* 源站面板内边距 24px 18px（本地原为 30px，导致列标题比源站低 24px）。 */
	padding:24px 18px;
	/* 源站是内阴影 rgba(0,0,0,.1) 0 16px 16px -16px inset；主题默认给的是外阴影 0 0 3px。 */
	box-shadow:rgba(0,0,0,.1) 0 16px 16px -16px inset}
/* ul 必须放开高度 + 显式纵向：主题 `.wd-list` 是 `display:flex` 但**没有 `flex-direction`**（默认 row，
 * 7 个项会挤成一行）；且其高度约束会让 ul 的 rect 恒为 56px（=1 个 li），7 个 li 的实际位置
 * 分散到 y=86..508 —— 首项因此跑到列标题上方（YG 看到的"图标/徽章压住标题"）。
 * 实测：加 `height:auto !important` 后 ul=483、首项与标题间距 gap=10，恢复正常。 */
.wd-header-html .auv-mega ul.wd-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;height:auto !important;max-height:none !important;align-items:stretch;justify-content:flex-start}
/* li 必须 flex（内部图标与文字要垂直居中）+ 尺寸不伸缩，否则会被拉伸/撑满容器高度 */
.wd-header-html .auv-mega .wp-block-wd-list-item{display:flex;align-items:center;gap:8px;flex:0 0 auto;height:auto;min-height:0}
.wd-header-html .auv-mega .wp-block-wd-list-item .wd-icon{flex:0 0 20px;display:flex;align-items:center}
.wd-header-html .auv-mega .wp-block-wd-list-item .wd-list-content{color:#121212}
.wd-header-html .auv-badge{display:inline-block;margin-left:4px;padding:1px 8px;border-radius:20px;font-size:11px;font-weight:400;line-height:17px;vertical-align:2px}
.wd-header-html .auv-badge-in{background:#ffa113;color:#fff}
.wd-header-html .auv-badge-out{background:#e6e6e6;color:#5c5c5c}
.wd-header-html .auv-badge-update{background:#ff0000;color:#fff;padding:2px 4px;border-radius:99px;font-size:12px;font-weight:300;line-height:14px;margin-left:5px;vertical-align:1px}
/* Nicotine Pouches mega（菜单项 2270 / cms_block 2437）—— 新增段落，与 .auv-mega 段并列，不改动既有规则 */
.wd-header-html .auv-mega-nic{width:100%;max-width:100%;margin-left:0;margin-right:0;margin-inline:0}
.wd-header-html .auv-mega-nic .wp-block-wd-list{display:block;height:auto;margin:0;padding:0;list-style:none}
.wd-header-html .auv-mega-nic .wp-block-wd-list-item .wd-icon img{border-radius:4px;object-fit:contain}
.wd-header-html .auv-mega-nic .wd-list-content{color:#000}
.wd-header-html .auv-mega .wp-block-wd-image img{width:120px;height:auto;display:block}

/* ===== 主控补充：深色基调提权（body 背景在所有页面类型生效）===== */
html body,
html .wd-page-content,
html .wd-content-layout {
	background-color: #141414 !important;
}

/* ===== 全局字体：已由**主题设置**承担（2026-09-27 技术债清理，B 类替代）=====
 * 原为 body 上的 CSS 变量覆盖（--wd-text-font / --wd-title-font / --wd-alternative-font），现已删除。
 * 替代依据：主题设置 → Typography 的 `text-font` / `primary-font` / `secondary-font` 三个选项，
 *   其 `selector_var` 与这三条变量**同名同效**（源码 inc/admin/settings/typography.php
 *   L21-27 → --wd-text-font / L50-56 → --wd-title-font / L114-117 → --wd-alternative-font）。
 * 生成结果（xts-theme_settings_default-css-data）：
 *   --wd-text-font: "Poppins", Arial, Helvetica, sans-serif;
 *   --wd-title-font: "Montserrat", Arial, Helvetica, sans-serif;
 *   --wd-alternative-font: "Montserrat", Arial, Helvetica, sans-serif;
 * ⚠️ 备用字体链写法不同（原 CSS 为 'Helvetica Neue', Helvetica，框架固定 Arial, Helvetica）：
 *   运行时实测两条链在 Poppins 已加载时**渲染宽度完全相同**（327.234px vs 327.234px，差 0.000px）。
 * 保留依据（2026-09-27 第三轮恢复，判据=「与源站一致」）：源站 contact / home / collections-all 三页
 *   都加载并生效 Poppins 400（渲染宽度实测 397.66px，≠ fallback 349.83 / serif 320.08）；本地只有
 *   本选项生效时 shop 页才请求 `Poppins:wght@400;600` 并实测 397.66，关掉只剩 `wght@300` → 400
 *   实测 393.45（偏离源站）。
 * ⚠️ 本块原先写的「改前主题只加载 300、本替代修复了正文 Poppins 未生效」**已被实测推翻**：
 *   contact / home 的 Poppins 400 来自**块级字体**，与这三个选项无关。详见
 *   reports/css-cleanup.md §B.4 / §B.5 —— 勿再引用旧结论。
 * 回滚：先备份当前 option → 删这 3 键 → 清 `xts-theme_settings_default-*` → 用
 *   backup/auv-css-cleanup/auv-global.css.before-B-font-rule.txt 换回原 html body{...} 规则。
 *   上一轮回滚前备份：backup/auv-css-cleanup/options-before-B-rollback.json。 */


/* ===== iget.css (合并自 landing-iget-brand 代理) ===== */
/* IGET 落地页（page-id-2328）微调 —— 待主控合并进主题 custom_css（§9.16：代理不直接读改写 custom_css）
   仅含样式、不含结构标记；选择器统一限定在 page-id-2328 内，避免影响其他页面。 */

/* 1. 标题居中：wd/title 没有对齐属性（components/controls/text-area 为空、textAlign 只存在于个别 layout 块），
      故按 §9.12 走 className + 主题层 CSS。类名由块注释的 className 与 HTML 同时写入。 */
body.page-id-2328 .auv-iget-h1,
body.page-id-2328 .auv-iget-c { text-align: center; }

/* 2. hero 三张 banner 等宽 —— 已删除（2026-09-27 技术债清理）
 * 依据：本条要求 `.auv-iget-hero-cols` 类被挂到 hero 的 wd/row 上才生效，而**该类从未挂上**
 * （iget 页 138 个块注释里无此 className，实测查询 0 命中）→ 从未生效的死代码。
 * 若确需三列等宽，改法见 C 类清单（hero 的 wd/column 用 `colWidth:33.33` + `adjacentCount:3`）。 */

/* 3. 评价轮播可见性：首个 .wd-carousel-item 实测 x=-7（被位移到容器外），
      给轮播项稳定宽度，避免初始化后内容落在可视区外。 */
body.page-id-2328 .wd-carousel-wrap > .wp-block-wd-carousel-item { flex: 0 0 auto; }


/* ===== blog-single.css (合并自 auv-tweaks.css) ===== */
/* single_post（Layout 2288）修正项 —— 来源：blog-single 代理实测。 */
/* 1) 文章主标题颜色：原站 rgb(255,161,19)。实测命中（single-post 页 `.single-post .wd-post-title` = 1）→ 保留。 */
.single-post .wd-post-title,
.single-post h1.wd-post-title {
	color: #ffa113;
}
/* 2) 正文区留白/最大宽度 与 3) 特色图尺寸 —— 已删除（2026-09-27 技术债清理）
 * 依据：4 个选择器在 single-post 实测页（/can-you-take-a-vape-on-a-plane/）**全部 0 命中**：
 *   `.single-post .wd-entry-content > .wp-block-wd-post-content` = 0
 *   `.single-post .wp-block-wd-post-content` = 0
 *   `.single-post .wd-post-image img` = 0
 * （`.wd-entry-content` 本身存在、内含 80 张图，但类名与规则不符）→ 从未生效的死代码。
 * 若确需这些效果，改 Layout 2288 的 `wd/post-content` / `wd/post-image` 块属性（见 C 类清单）。 */


/* ===== contact.css (合并自 auv-tweaks.css) ===== */
/* Contact 页样式微调（从页面 id 2004 的 wp:html 块抽出，供主控统一收口）
   复刻 auvaper.com/pages/contact 实测值；作用域限定 .page-id-2004，不含结构标记。 */
/* Contact 页微调（复刻 auvaper.com/pages/contact 实测值）。仅样式，不承载结构。 */
.page-id-2004 .auv-contact-wrap{max-width:726px;margin-left:auto;margin-right:auto;}
.page-id-2004 .auv-contact-title{font-family:'Montserrat','Poppins',sans-serif;line-height:1.2;}
/* 2026-09-27 清理：原含 `.auv-contact-title .title` 子选择器（实测 0 命中 —— 该元素自身同时带
   `title` 与 `auv-contact-title` 两个类，不存在后代 `.title`）→ 已删，保留本体。 */
.page-id-2004 .auv-contact-polimg{max-width:310px;margin-left:auto;margin-right:auto;border-radius:50%;}
.page-id-2004 .auv-contact-polimg img{display:block;}
.page-id-2004 .auv-contact-polname{font-family:'Poppins','Helvetica Neue',Helvetica,Arial,sans-serif;line-height:1.44;text-align:center;}
/* Read 水平居中：源站每列居中（x=178/528/878/1228，列宽 310）；本地 a 是列 flex 容器里的
   shrink-to-fit 项（w=33），text-align:center 对自身无效 → 用 flex 的 auto margin 居中。
   已实测：改前 x=43/395/748/1100（左对齐），改后应回到列内居中。 */
.page-id-2004 .auv-contact-polread{margin-inline:auto;}
/* Read：源站有下划线（实测 text-decoration-line:underline）。主题对 .btn 打了
   `text-decoration-line:none !important`，普通声明压不住，故此处必须同样带 !important
   （已实测：不带 !important 时最终计算为 none）。回滚：删掉该声明即可。 */
/* 2026-09-27 清理：原含 `.auv-contact-polread a` 子选择器（实测 0 命中 —— `.auv-contact-polread`
   本身就渲染为 `<a>`，不存在后代 a）→ 已删，保留本体。
   同因：原 `... .auv-contact-polread a:hover{color:#fff}` 整条亦为死规则，已删。 */
.page-id-2004 .auv-contact-polread{font-family:'Montserrat','Poppins',sans-serif;line-height:1.6;text-align:center;text-decoration:underline !important;}


/* ===== landing-switch-plus.css (合并自 auv-tweaks.css) ===== */
/* AUVAPER switch-plus 页 CSS 收口片段
   用途：由主控合并进主题 custom_css（改后必须删 xts-theme_settings_default-* 清缓存）。
   作用域统一限定 .page-id-2262，避免影响全站。 */

/* ① hero 右侧 #292929 文字块的特性列表行距
   原站（advc-body）：16px / line-height 1.6 ≈ 25.6px，7 行紧凑。
   现状：wd/paragraph 的 lineHeight / marginBottom 块属性未生效，实测每行约 60px，
   hero 区高 574（原站 483）。 */
.page-id-2262 .wp-block-wd-column .wp-block-wd-paragraph {
	margin-top: 0;
	margin-bottom: 0;
	line-height: 25.6px;
}

/* ② 商品卡标题字号 —— 已删除（2026-09-27 技术债清理）
 * 依据：两个选择器 `.wd-loop-item-2121 .wd-product-title a` 与 `.wd-loop-item-2121 a[href*="/products/"]`
 * 在 10 页 × 2 视口**均 0 命中**：商品卡标题链接指向品牌页（如 `/arvo/`），DOM 里不存在
 * `.wd-product-title` 类（实测 `.wd-product-title a` = 0）。本条从未生效，属死代码。
 * 若确需本页小字号：改 loop item 2121 的 `wd/li-product-title` 块属性（会全站生效，需主控裁决）。 */

/* ③ 字体族兜底 —— 部分收敛（2026-09-27 技术债清理）
 * 删除：`main` 与 `.wp-block-wd-paragraph`（值 == 全局 `--wd-text-font` 的 Poppins，实测等价）、
 *       `main h1, main h2`（值 == 全局 `--wd-title-font` 的 Montserrat；h2 本就被下条覆盖，实测等价）。
 * 保留：`.wp-block-wd-title` —— 本页把它显式设为 Poppins，而全局 `--wd-title-font` 是 Montserrat，
 *       删除会改变本页标题字体（实测 sp-title = Poppins）→ 需按 C 类清单走块属性/主题裁决。
 * 全局字体本身已改由主题设置承担（见文件顶部「主题设置承担的样式」段）。 */
.page-id-2262 .wp-block-wd-title {
	font-family: 'Poppins', 'Helvetica Neue', Helvetica, Arial, sans-serif;
}


/* ===== packages.css (合并自 auv-tweaks.css) ===== */
/* packages 页 CSS 片段（按 PAGE-SPEC §9.16：代理写片段、主控合并进 custom_css 并清缓存）
 *
 * ⚠️ 下面两条在原站是**全站行为**（不是 packages 页特例），合并时请评估作用域：
 *    若要全站生效，去掉 .page-id-2263 前缀；若只在本页验证，保留前缀。
 */

/* 1) 价格顺序：原站「现价 在前 / 原价 在后」；WooCommerce 默认输出 <del>原价</del><ins>现价</ins>，顺序相反 */
.page-id-2263 .wd-products .price {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	flex-direction: row-reverse;
	justify-content: flex-end;
}

/* 2) "View all"：原站是橙色 14px/600 纯文字链接（无底色无边框），本地 wd/button 渲染成实心按钮 */
.page-id-2263 .wp-block-wd-button.btn {
	background-color: transparent;
	border: 0;
	padding: 0;
	min-height: 0;
	color: var(--wd-primary-color);
	font-size: 14px;
	font-weight: 600;
}

/* 3) 商品卡底色：原站卡片是透明底、融进全站深色背景（本地为白卡）。
      这一条依赖主控先定全站 body 背景；若全站改深色，取消注释即可。 */
/*
.page-id-2263 .wd-products .wd-product,
.page-id-2263 .wd-products .wd-product-wrapper { background-color: transparent; }
*/


/* ===== Contact 页偏移修复（主控，2026-09-26）=====
   实测：本地 main.wd-content-layout 有 padding-top:40px（原站无）→ 区块整体下移 40px；
   政策列图片块另有 20px 下边距（原站 img margin 实测 0px）。两条都在此归零。
   ⚠️ 2026-09-27 清理：原第一条 `.page-id-2004 main.wd-content-layout{padding-top:0}` 已删 ——
   其 padding-top 已由本文件顶部 `html .wd-content-layout{padding-block:0}` 提供（值同为 0），
   实测删除前后 contact 页 `.wd-content-layout` / `main.wd-content-layout` padding-top 均为 0px。 */

/* ===== 从页面  wp:html/style 迁移（2026-09-26 主控，配合 §2.3 硬禁令二）===== */
/* 来源：post 2004 的 html 块，原文已备份 /home/sky/project/php/wp/backup/auv-style-migration/2004.before.html */
/* ⚠️ 2026-09-27 技术债清理：本段原含 17 行 Contact 样式，与上方「contact.css」段（L276-292）
 * **逐字节完全相同**（`diff` 无输出，双方 md5 均为 0c87e7db42548e19675a14e4d16593f1）——
 * 迁移时未去重。已删除本段重复副本，保留上方那份（其注释含定位依据）。
 * 删除前后 contact 页 computed style 逐项一致：reports/css-cleanup/probe-A-before2.json vs probe-A-after.json。 */

/* ---- CF7 表单复刻原站（auvaper.com/pages/contact 实测）---- */
/* 布局：Name+Mail 两列，Phone / Your message 全宽，按钮居中（原站 .contact__fields 两列 + 单列堆叠） */
.page-id-2004 form.wpcf7-form{display:grid;grid-template-columns:1fr 1fr;gap:20px 24px;max-width:666px;margin-left:auto;margin-right:auto;}
.page-id-2004 form.wpcf7-form p{margin:0;}
.page-id-2004 form.wpcf7-form p:nth-of-type(3),
.page-id-2004 form.wpcf7-form p:nth-of-type(4){grid-column:1 / -1;}
/* 字段：半宽 56 高 / textarea 全宽 100 高（原站 323×56 与 666×100） */
.page-id-2004 form.wpcf7-form input[type=text],
.page-id-2004 form.wpcf7-form input[type=email],
.page-id-2004 form.wpcf7-form input[type=tel]{width:100%;height:56px;box-sizing:border-box;border:1px solid rgba(255,255,255,.35);background:transparent;color:#fff;font-size:14px;font-weight:300;font-family:'Poppins',sans-serif;padding:0 16px;}
.page-id-2004 form.wpcf7-form textarea{width:100%;height:100px;min-height:0;box-sizing:border-box;border:1px solid rgba(255,255,255,.35);background:transparent;color:#fff;font-size:14px;font-weight:300;font-family:'Poppins',sans-serif;padding:12px 16px;resize:none;}
.page-id-2004 form.wpcf7-form ::placeholder{color:rgba(255,255,255,.6);opacity:1;}
/* 按钮：136×42 圆角 42、橙字（原站 x652 居中）。2026-09-27 清理：原含
   `p:has(button[type=submit])` 选择器（实测 0 命中 —— CF7 输出 `<input type=submit>`，无 button）→ 已删。 */
.page-id-2004 form.wpcf7-form p:has(input[type=submit]){grid-column:1 / -1;justify-self:center;margin-top:20px;}
/* 按钮：源站实测 = **白底 + 橙字 + 无边框**（bg rgb(255,255,255)、border 0、color rgb(255,161,19)、136×42 圆角 42）。
   原先写成「透明底 + 橙字 + 橙边框」，压在同样是 rgb(255,161,19) 的橙色 section 上 → 按钮肉眼完全不可见。
   hover 保持橙底深字（原站未取到 hover 态，按现有值保留）。 */
/* 2026-09-27 清理：本条原含三个 `button[type=submit]` 选择器（本体与 :hover），实测均 0 命中
   （CF7 该表单输出 `<input type=submit>` ×2，无 `<button>`）→ 已删，仅保留 input 分支。 */
.page-id-2004 form.wpcf7-form input[type=submit]{grid-column:1 / -1;justify-self:center;width:136px;height:42px;box-sizing:border-box;border:0;border-radius:42px;background:#fff;color:#ffa113;font-size:14px;font-weight:600;font-family:'Poppins',sans-serif;cursor:pointer;transition:all .25s ease;}
.page-id-2004 form.wpcf7-form input[type=submit]:hover{background:#ffa113;color:#1a1a1a;}

/* ===== 从页面  wp:html/style 迁移（2026-09-26 主控，配合 §2.3 硬禁令二）===== */
/* 来源：post 2313 的 html 块，原文已备份 /home/sky/project/php/wp/backup/auv-style-migration/2313.before.html */
.auv-ot-narrow{max-width:726px!important;margin-left:auto!important;margin-right:auto!important;}
.auv-ot-narrow iframe{display:block!important;width:100%!important;min-height:356px!important;max-height:800px!important;border:0;}

/* ===== wd/section 的内容回到容器宽度（修「正文贴到屏幕边缘」）=====
 * 背景：`wd/section` 官方定义是 "Full width section — Stretches inner content outside the site container"，
 * 它用 100vw 居中跳出 `.wd-content-layout`（实测 section x=-7、宽 1440，而容器 x=15、宽 1395）。
 * 本站正文内容（row / container / products / blog …）**直接挂在 section 下**，于是只能吃到
 * section 自带的 15px 内边距 → 商品卡实测 x=8，而源站首页内容是 x=30（图卡 x=40）。
 *
 * 为什么走 CSS（§2.3 第 4 层）：
 *   · `wd/section` **没有**任何宽度/内容宽度属性（block.json 只有 bgColorCode / padding* / marginBottom / colorScheme）
 *   · 主题选项 `site_width` 改的是**站点容器**，会连页眉页脚、归档页一起变窄 —— 不是同一件事
 *   · 给 section 加 `paddingLeft/Right` 是魔法数字（依赖 100vw 与容器的固定错位量），换视口就错
 * 取值依据：源站 1440 视口实测内容区 1380px（左右各 30px）。
 * 作用域：仅 section 的**直接子内容块**，并排除 `.wd-stretched`（全宽 banner/slider 必须保持全宽）。
 */
/* ⚠️ 必须带 `html` 前缀提权：主题对 section 内的 container 有一条**同特异性**规则
 *   `.wp-block-wd-section > .wp-block-wd-container:not(.wd-custom-width){max-width:calc(var(--wd-container-w) - 30px)}`
 * 计算值 1570px（--wd-container-w=1600），在 1440 视口下等于不限宽 —— 实测 CDP 匹配顺序里它排在后面（赢）。
 * 加 `html` 后特异性 0,3,1 > 0,3,0，本规则才生效。 */
/* 用「排除法」而不是枚举块类型：枚举已连漏三次（先漏 wd/container、再漏 <a> 链接占位 ——
 * 首页商品区的 section 直接子是个 link 元素，类型清单永远追不上实际结构）。
 * 排除项：`.wd-stretched`（全屏 banner/slider 必须保持全宽）、`.wp-block-wd-slider`（同上）。 */
/* ⛔ 原规则已于 2026-09-26 删除（P0 第 2 步）。原文：
 *   html .wp-block-wd-section > *:not(.wd-stretched):not(.wp-block-wd-slider):not(.wd-slider){
 *       max-width:min(100%,1380px); margin-left:auto; margin-right:auto }
 *
 * 删除理由（三条，都有实测）：
 *   ① 各 section 已按源站档位补好 `paddingLeft/Right` 块属性 → 宽度改由「section 全宽 1440 − 两侧 padding」
 *      决定，与源站 `.page-width`(30/30→1380) / `.advc-container`(40/40→1360) 的实现同构；
 *   ② 它是**直接子元素**选择器，会把**嵌套在 section 内部的 section** 也限到 1380
 *      （zyn 两个商品区因此只有 1380 → 内容 1300，比源站 1360 少 60px）；
 *   ③ 它带的 `margin-inline:auto` 让「宽度贴内容」的标题/短段落被**伪居中**
 *      （实测 34 处：alibarbar 8 / whyChooseUs 8 / iget 7 / wholesale 5 / switchPlus 4 / home 1 / packages 1，
 *       源站同类元素全部左对齐）。
 * 回滚：`cp backup/auv-width/auv-global.css.*.before-delrule.bak auv-global.css`
 * 收尾清单（删规则后需精调）：见 rebuild-auvaper/reports/width-survey.md §12 */

/* ===== CSS 例外登记：商品卡促销标签大小写（Sale / SALE）2026-09-26 =====
 * 触发：源站商品卡左上角促销标签是 `Sale`（仅首字母大写），本地渲染成全大写 `SALE`。
 *
 * 取证（判据，非过程）：
 *   ① 本地 DOM 文本本来就是 `Sale` —— 全大写来自主题**静态 CSS**
 *      `woodmart/css/parts/woo-mod-product-labels-default.css` 的 `.product-label{…text-transform:uppercase…}`
 *      （同一规则亦见 `css/style.css`）；
 *   ② 渲染链：`woocommerce_sale_flash → woodmart_product_label()`
 *      （`inc/integrations/woocommerce/template-tags.php:1813-1849`）；
 *   ③ 主题选项 `xts-woodmart-options` **77 键逐键排除**：`sale_label` 是 switcher(开关)、
 *      `label_shape` 是 buttons(形状)、`percentage_label`/`stock_label` 是 switcher、
 *      `sale_label_bg_color`/`sale_label_text_color` 是 color —— **整段没有「文案 / 大小写」字段**；
 *   ④ 块属性排除：2121 的 `wd/li-product-labels` 只有 position / textAlign / verticalAlign。
 *   ⇒ 属「古腾堡与 wd 实在无法解决」的例外情形（§2.3 硬禁令二的唯一开口）。
 *
 * 作用域：覆盖**所有**商品标签（`.product-label`）的文本变形。
 *   实测依据：主题对 `.product-label` 统一加了 `text-transform:uppercase`，
 *   于是 `Sale` 变 `SALE`、**`Sold out` 也变 `SOLD OUT`**（源站两者都是首字母大写：
 *   `Sale` / `Sold out`）。DOM 文本本来就是正确的，所以整类关掉 text-transform 即可。
 *   本规则同时覆盖本轮新增的 `Save $xx AUD` 金额徽章（它复用 `.onsale` 类）。
 * 实测命中：shop 72 / arvo 19 / switch-plus 23 / alibarbar-ingot 40（改后与源站一致）。
 * 回滚：删除本段即可（规则独立，与其它段无耦合）；
 *       改前整份备份：`backup/auv-sale-label/auv-global.css.*.before-salelabel.bak`
 * 留档：rebuild-auvaper/reports/sale-label-case.md（含三列证据与 9 张特写） */
.wd .product-label {
	text-transform: none;
}

/* ==== Header Builder（WHB）下的滚动公告条：裁剪层必须放在「不含 transform 的外层」（2026-09-27）====
   原设计是两层：外层 .auv-hd-bar-sec（wd/section：height:38px + overflow:hidden，不参与位移）
   ＋ 内层 .auv-hd-bar（wd/container：auv-hd-roll 位移动画）。
   改用 Header Builder 的 HTML Block 后只剩内层这一个 container；此时若把 overflow:hidden
   加在**同一元素**上，它会与 transform 同步移动 → 裁剪恒不生效（整块内容一起移出视窗）。
   实测反证：hidden 加在 .auv-hd-bar 上时，18 帧采样里可见文字恒为同一条，呈现为空白条。
   故裁剪放在外层 .wd-header-html（它不含 transform），内层继续滚动。 */
.whb-top-bar .wd-header-html,
.whb-main-header .wd-header-html{height:38px !important;overflow:hidden !important}

/* ===== 对比度修复（PageSpeed A11y，2026-10-12）===== */
/* 1) 导航当前项：原 fg #70542c / bg #ffa01a = 3.43 → #3d2a00 = 6.76
   注意：该项颜色由 WoodMart 计算样式给出，用菜单 ID 直接锚定以提升优先级 */
#menu-lanevape-main > li.current-menu-item > a,
#menu-lanevape-main > li.current_page_item > a,
#menu-lanevape-main > li.current-menu-item > a span,
#menu-lanevape-main > li.current_page_item > a span,
#menu-lanevape-main > li.current-menu-item > a .nav-link-text,
#menu-lanevape-main > li.current_page_item > a .nav-link-text{color:#3d2a00 !important}
/* 2) 页脚橙色区：原 bg #ffa113 + fg #ffffff = 2.02 → 底色加深 #8a4b00 = 6.78 */
.wd-footer .auv-ft-sec{background-color:#000000 !important}
/* 3) 客户评价·评论者名：原 #767676 / #f5f5f5 = 4.16 → #5c5c5c = 6.03 */
.wp-block-wd-testimonial.wd-design-2 .wp-block-wd-container > p.wp-block-wd-paragraph:first-of-type{color:#5c5c5c !important}
/* 4) 客户评价·产品名：原 #ffa113 / #f5f5f5 = 1.85 → #8a4b00 = 6.31 */
.wp-block-wd-testimonial.wd-design-2 .wp-block-wd-container > p.wp-block-wd-paragraph:last-of-type{color:#8a4b00 !important}

/* 5) 首屏轮播按钮（READ MORE / SHOP NOW）：原 fg #ffffff / bg #ffa113 = 2.02 → #141414 = 9.01 */
.wd-slide-container .wp-block-wd-button,
.wd-slide-container .wp-block-wd-button > span,
.wd-slide-container a.wp-block-wd-button span,
.wd-slide-container a.wp-block-wd-button{color:#141414 !important}

/* 4) 购物车「继续购物」按钮（axe 实测）：原 fg #ffffff / bg #ffa113 = 2.02 → 文字改 #3d2a00 = 6.72
   与导航当前项同一修法，保持品牌橙底不变、只压深文字。 */
.wc-backward,
.wc-backward:hover,
.wc-backward:focus,
a.button.wc-backward,
.btn.wc-backward {
	color: #3d2a00 !important;
}

/* 6) 首页深色区块内的产品促销价（ins）：axe 实测 fg #e02020 / bg #141414 = 3.84 → #ff6b6b = 6.67
   取证：ego 实测首页 48 个 <ins> 的背景 100% 为 rgb(20,20,20)，全部落在下列 8 个
   bgColorCode=#141414 的 wd/section 块内（blockId 前 8 位即类名后缀）。
   同时实测 .onsale 的「Sale」「Save $xx」徽章为 #ffffff on #e32619 = 6.10，无需改动。
   显式列深色块而非用 body.home 通配：首页另有 #f5f5f5/#ffffff/#ffa113 三个浅色 section，
   若日后在其中放入产品网格，本条不会误伤。 */
.wp-block-wd-section.wd-3b019dea ins,
.wp-block-wd-section.wd-3b019dea ins bdi,
.wp-block-wd-section.wd-77287856 ins,
.wp-block-wd-section.wd-77287856 ins bdi,
.wp-block-wd-section.wd-14a929df ins,
.wp-block-wd-section.wd-14a929df ins bdi,
.wp-block-wd-section.wd-21103f90 ins,
.wp-block-wd-section.wd-21103f90 ins bdi,
.wp-block-wd-section.wd-f76ee5b4 ins,
.wp-block-wd-section.wd-f76ee5b4 ins bdi,
.wp-block-wd-section.wd-9e7d3573 ins,
.wp-block-wd-section.wd-9e7d3573 ins bdi,
.wp-block-wd-section.wd-01afc1d7 ins,
.wp-block-wd-section.wd-01afc1d7 ins bdi,
.wp-block-wd-section.wd-31f6d6df ins,
.wp-block-wd-section.wd-31f6d6df ins bdi,
.wp-block-wd-section.wd-21103f90 ins .woocommerce-Price-amount,
.wp-block-wd-section.wd-21103f90 ins .woocommerce-Price-amount bdi,
.wp-block-wd-section.wd-3b019dea ins .woocommerce-Price-amount,
.wp-block-wd-section.wd-3b019dea ins .woocommerce-Price-amount bdi,
.wp-block-wd-section.wd-77287856 ins .woocommerce-Price-amount,
.wp-block-wd-section.wd-77287856 ins .woocommerce-Price-amount bdi,
.wp-block-wd-section.wd-14a929df ins .woocommerce-Price-amount,
.wp-block-wd-section.wd-14a929df ins .woocommerce-Price-amount bdi,
.wp-block-wd-section.wd-f76ee5b4 ins .woocommerce-Price-amount,
.wp-block-wd-section.wd-f76ee5b4 ins .woocommerce-Price-amount bdi,
.wp-block-wd-section.wd-9e7d3573 ins .woocommerce-Price-amount,
.wp-block-wd-section.wd-9e7d3573 ins .woocommerce-Price-amount bdi,
.wp-block-wd-section.wd-01afc1d7 ins .woocommerce-Price-amount,
.wp-block-wd-section.wd-01afc1d7 ins .woocommerce-Price-amount bdi,
.wp-block-wd-section.wd-31f6d6df ins .woocommerce-Price-amount,
.wp-block-wd-section.wd-31f6d6df ins .woocommerce-Price-amount bdi {
	color: #ff6b6b;
}
