/* ============================================================
 * v5.css —— v4.css 的升级版（2026-10-30）
 *
 * 改动 1：font-display: swap → block
 *   ⚠ 为什么要改：
 *     swap 会在字体下载完成前先用 fallback（系统字体）渲染，
 *     字体到位后再换成 Inter —— 肉眼看到「字形先一变再一变」。
 *     block 则是字体没到位前先不显示文字（最多 3s），
 *     到位后一次性以 Inter 呈现，视觉上更稳。
 *     配合 <link rel="preload"> 预加载 woff2，实际等待通常 <100ms。
 *
 * 改动 2：@font-face 的 unicode-range 与 src 不变（可变字体 400~900）
 *
 * ⚠ 文件名必须换新：_headers 里 /_assets/* 是 immutable 一年缓存，
 *   直接改 v4.css 的内容，线上用户一年内拿到的还是旧文件。
 * ============================================================ */
/* ==========================================================================
   全站排版规范 V4 —— 对齐 i-am-marketplace.com/filaments 实测值
   --------------------------------------------------------------------------
   本轮只改「字体 / 字号 / 行高 / 字重 / 字距 / 区块垂直间距 / 按钮」，
   不动颜色、不动布局结构、不动图片。所有数值均来自对参考站的
   puppeteer computed-style 实测（参考站排版测量.json / 参考站间距测量.json），
   不是目测估值。

   ⚠ 文件名带版本号的原因：站点 _headers 对 /_assets/* 配了 immutable 一年缓存，
     改已有 css 文件的内容，线上用户一年内拿到的还是旧版本。
     所以每次改动都用新文件名（v4 → v5 …），并同步改 HTML 引用。

   【本轮补充改动】
     导航        36px → 16px（用户要求；参考站顶部导航同为 16px）
     侧栏标题    15px → 20px（用户要求）
     商品标题    首页 25px → 13px，与 products 列表页完全一致
     Get a Quote 隐藏（见文件末尾第 14 节）

   【参考站实测基线】
     字体家族   Inter（187 个文本节点里 177 个在用，占 94.6%）
     正文字号   16px / 行高 31px（比例 1.94 —— 非常宽松）
     H1(主标题) 38px / 49.4px / w800
     H2(卡片主标)36px / 36px / w700
     H3(区块标题)25px / 36px / w700
     H4(次级)    25px / 30px / w800
     副标题      20px / 31px / w400
     眉标小字    16px / 31px / w400（不加大写）
     区块内边距  标准 48px / 容器 50px
     容器宽      1200px
     按钮        16px / w500 / 圆角 30px / padding 10px 20px
                胶囊按钮 15px / w700 / 圆角 50px / padding 14px 30px

   【与诺睿站原值的差异及本次取舍】
     正文字号    16px → 16px（不变）
     正文行高    27.2px → 31px     ← 参考站的呼吸感主要来源，改
     H1          40px → 38px，行高 46px → 49.4px，字重 700 → 800
     H2          34px → 36px，行高 40.8px → 36px（收紧，更硬朗）
     H3          20px → 25px，行高 27px → 36px（放大，卡片标题够分量）
     眉标        15px/700/0.08em 大写 → 16px/400/不加字距（参考站不加大写）
     按钮        圆角 0 → 30px，padding 13.6/23.2 → 10/20px，字重 700 → 500

   【实现原则】
     1) 所有字号/行高一律走 CSS 变量（--nf-*），与既有 V2.1 体系对接，
        页面级样式仍可用更具体的选择器覆盖。
     2) 选择器一律带 body 前缀提特异性，压过模板的全局样式，
        不依赖样式表加载顺序。
     3) 保留 .iconfont / .qico 等图标字体族不被覆盖（见 type/index.css 说明）。
     4) 回滚 = 删掉本文件的 <link> 即可，无需改 HTML。
   ========================================================================== */

/* ---------- 1. Inter 字体（可变字重 400–800，自托管，无外部请求） ----------
   Inter 为 SIL Open Font License 1.1，可免费商用、自托管、随站分发。
   同一个 woff2 覆盖 400/700/800 三个字重（可变字体），因此只需 latin +
   latin-ext 两个文件。

   ⚠ 路径：本文件位于 /_assets/noray/typography/，字体在 /_assets/noray/fonts/，
     所以是「上一级」../fonts/，不是 ../../fonts/。写成 ../../ 会解析到
     /_assets/fonts/ → 404 → 浏览器回退系统字体。 */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 100 900;
  font-display: block;
  src: url('../fonts/Inter-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
    U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 100 900;
  font-display: block;
  src: url('../fonts/Inter-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304,
    U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+2020, U+20A0-20AB, U+20AD-20C4,
    U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* ---------- 2. 排版 token ---------- */
:root {
  /* 字体家族：Inter 优先，中文/日文等回退到系统字（与参考站一致） */
  --nf-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI',
    Roboto, 'Helvetica Neue', Arial, 'Noto Sans', 'PingFang SC',
    'Hiragino Sans GB', 'Microsoft YaHei', sans-serif;

  /* 字号阶梯（参考站实测值） */
  --nf-h1: 38px;        /* 页面主标题 */
  --nf-h2: 36px;        /* 卡片主标题 */
  --nf-h3: 25px;        /* 区块标题 */
  --nf-h4: 20px;        /* 小标题 / 副标题 */
  --nf-eyebrow: 16px;   /* 区块上方小字（参考站不加字距、不加大写） */
  --nf-body: 16px;      /* 正文 */
  --nf-body-s: 14px;    /* 表格、说明、辅助信息 */
  --nf-label: 13px;     /* 表单标签、角标 */
  --nf-micro: 12px;     /* 极小的注释 */
  --nf-stat: 40px;      /* 数字大字 */

  /* 行高（参考站实测：正文 16/31 = 1.94，非常宽松） */
  --nf-lh-body: 31px;    /* 正文行高 */
  --nf-lh-tight: 1.2;   /* 标题行高 */
  --nf-lh-snug: 36px;   /* 区块标题行高 */

  /* 区块垂直节奏（参考站实测：标准 48px / 容器 50px） */
  --nr-section-pad: 48px;
  --nr-section-pad-lg: 50px;
  --nr-section-gap: 24px;  /* 相邻区块间距 */

  /* 按钮（参考站实测：16px / w500 / 圆角 30px / padding 10px 20px） */
  --nr-btn-radius: 30px;
  --nr-btn-pad-y: 10px;
  --nr-btn-pad-x: 20px;
  --nr-btn-size: 16px;
  --nr-btn-weight: 500;
}

/* ---------- 3. 字体家族：整站收敛到 Inter ----------
   与 type/index.css 的规则同构，但用 body 前缀提高权重，
   确保在模板样式之后加载时依然生效。
   排除 <i>：站上部分图标（iconfont / qico）走独立图标字体，
   覆盖后会变成一片方框。 */
body :where(
  div, span, p, a, li, ul, ol, dl, dt, dd,
  h1, h2, h3, h4, h5, h6,
  strong, b, em, small, sub, sup, blockquote, cite,
  figure, figcaption, table, caption, thead, tbody, tfoot, tr, td, th,
  form, label, fieldset, legend, button, input, textarea, select, option,
  summary, details, article, aside, header, footer, nav, main, section
) {
  font-family: var(--nf-sans) !important;
}

/* ---------- 4. 正文行高：27.2px → 31px（参考站的呼吸感） ----------
   ⚠ 特异性要点：type/index2.css 里有 `html:not(.nrd3) p`（特异性 0,1,3）
     和 `html:not(.nrd3) h1` 等规则，且都带 !important。
     单纯写 `body p`（0,0,2）压不住 → 必须沿用同样的
     `html:not(.nrd3) X` 结构，让特异性完全对齐（0,1,3）。
     :not(.nrd3) 同时覆盖首页/列表页；详情页有 .nrd3 类，
     由下面第 5 节的 html.nrd3 分支处理（不与 :not 互斥）。 */
html:not(.nrd3) p,
html.nrd3 p {
  font-size: var(--nf-body) !important;
  line-height: var(--nf-lh-body) !important;
  margin-bottom: 24px !important;
}

/* 直接塞在 .txt 容器里的正文（不是 <p>），同样收口 */
html:not(.nrd3) .rightint-about .txt,
html:not(.nrd3) .atf-single-about .atf-about-list {
  line-height: var(--nf-lh-body) !important;
}

/* ⚠ 上面这几条具名规则在原体系 index2.css 里也是 `line-height: 1.7 !important`，
   特异性 (0,2,1) 高于 html:not(.nrd3) p 的 (0,1,3)，
   所以必须逐条点名覆盖，否则这些段落仍是 27.2px：
     .qili-iframe1 .down .txt / .rightint-about .txt p
     .atf-single-about .atf-about-list p
     .arshine2-foot p / .arshine2-foot li a / .cat-lead
     .noray-cat p / .noray-faq .title p
   （footer 里的说明文字原本就刻意压缩过，这里只统一行高比例，
     不改它们的字号，避免页脚被撑高。） */
html:not(.nrd3) .qili-iframe1 .down .txt,
html:not(.nrd3) .rightint-about .txt p,
html:not(.nrd3) .atf-single-about .atf-about-list p,
html:not(.nrd3) .noray-cat p,
html:not(.nrd3) .noray-faq .title p,
html.nrd3 .noray-cat p,
html.nrd3 .noray-faq .title p {
  line-height: var(--nf-lh-body) !important;
}

/* ---------- 5~8. 标题：38 / 36 / 25 / 20（参考站实测） ----------
   同样用 html:not(.nrd3) 与 html.nrd3 双分支对齐 type/index2.css 的特异性，
   不能只写 `body h1`（压不住 0,1,3 的旧规则）。 */

/* H1：38px / 49.4px / w800 */
html:not(.nrd3) h1, html.nrd3 h1,
html:not(.nrd3) .h1, html.nrd3 .h1 {
  font-size: var(--nf-h1) !important;
  font-weight: 800 !important;
  line-height: 49.4px !important;
  letter-spacing: -0.5px !important;
}

/* H2：36px / 36px / w700（行高收紧到 1.0，硬朗） */
html:not(.nrd3) h2, html.nrd3 h2,
html:not(.nrd3) .h2, html.nrd3 .h2 {
  font-size: var(--nf-h2) !important;
  font-weight: 700 !important;
  line-height: 36px !important;
  letter-spacing: -0.3px !important;
}

/* H3：25px / 36px / w700 */
html:not(.nrd3) h3, html.nrd3 h3,
html:not(.nrd3) .h3, html.nrd3 .h3 {
  font-size: var(--nf-h3) !important;
  font-weight: 700 !important;
  line-height: var(--nf-lh-snug) !important;
  letter-spacing: -0.2px !important;
}

/* H4：20px / w700（参考站副标题层级） */
html:not(.nrd3) h4, html.nrd3 h4,
html:not(.nrd3) .h4, html.nrd3 .h4 {
  font-size: var(--nf-h4) !important;
  font-weight: 700 !important;
  line-height: 1.45 !important;
}

/* ---------- 9. 眉标小字：16px / w400 / 不加大写（对齐参考站） ----------
   参考站的 "FROM PROTOTYPES TO PRODUCTION" 是 16px/w400 的正文大小，
   靠位置和留白区分层级，而不是靠字距或大写。

   ⚠ 语义归属要跟原体系一致，别把「区块标题」误当成「眉标」：
     眉标 = 区块标题上方那句小字（原体系就是这四条）：
       .witr_section_title_inner h2  / .atf-section-title h5
       #qili-iframe .tit h3           / .arshine2-foot h5
     注意 #qili-iframe .tit h3 是「WHO WE Are」这类小字；
     而同容器里的 .indextit h2（Company Profile）才是区块大标题，
     两者不能混为一谈。 */
body .witr_section_title_inner h2,
body .atf-section-title h5,
body #qili-iframe .tit h3,
body .arshine2-foot h5 {
  font-size: var(--nf-eyebrow) !important;
  font-weight: 400 !important;
  line-height: var(--nf-lh-body) !important;
  letter-spacing: normal !important;
  text-transform: none !important;
}

/* 首页首屏主标题（.atf-section-title h1 / #qili-iframe h1.mb-3） */
body .atf-section-title h1,
body #qili-iframe h1.mb-3 {
  font-size: var(--nf-h1) !important;
  font-weight: 800 !important;
  line-height: 49.4px !important;
  letter-spacing: -0.5px !important;
}

/* ---------- 9b. 区块标题（H2 级语义，对应参考站 36px） ----------
   原体系这组是「区块标题 34px」，语义上等同于参考站的 H2（36px），
   不是 H3。这组类名必须与原体系 index2.css 第 88-98 行完全一致，
   否则会把「区块标题」错降成 25px、或把「卡片标题」错升成 36px。
   特异性说明：这些类名 (0,2,1) 低于 html:not(.nrd3) h2 的 (0,1,3)？
   不 —— 类名数量 2 > 1，class 优先于元素，所以 (0,2,1) 更高，直接覆盖。 */
body .indextit h2,
body .witr_section_title_inner h3,
body .guanxiang-about-quality .title h2,
body .noray-faq .title h2,
body .noray-cat .cat-block > h2,
body .rightint-case-list .app-list h3,
body .rightint-about .txt h3,
body .rightint-factory .container h3,
body h2.inqury_title_text {
  font-size: var(--nf-h2) !important;
  font-weight: 700 !important;
  line-height: 36px !important;
  letter-spacing: -0.3px !important;
}

/* ---------- 9c. 卡片 / 子块标题（H3 级语义，对应参考站 25px） ----------
   原体系这组是「卡片 / 子块标题 20px」，语义等同于参考站的 H3（25px）。
   类名与原体系 index2.css 第 122-129 行保持一致。

   ⚠ 例外：.iptz h3 是「产品卡片里的商品标题」，不是内容层级标题 ——
     它在首页 Our Product 的商品网格里，和 products 列表页的卡片标题
     是同一种东西，必须两处完全一致（见 9c-2）。 */
body li.swiper-slide h3,
body .atf-about-list h3,
body .em_testi_title h2,
body .app-card h3,
body .app-list li a h6 {
  font-size: var(--nf-h3) !important;
  font-weight: 700 !important;
  line-height: var(--nf-lh-snug) !important;
  letter-spacing: -0.2px !important;
}

/* ---------- 9c-2. 商品卡片标题：首页与列表页统一 ----------
   列表页（products/）卡片标题结构：`.main-right ul.cl li > .t > h6 > a`
   实测计算值（1440px 视口）：13px / 18.2px / w600 / #2f353b / clamp 2 行

   首页 Our Product 的商品标题结构：`.ipto > a > .iptz > h3`
   原本跟随 --nf-h3（25px/1.35/w700）→ 行高 36px，
   而 .iptz 容器高度按 --qi-goods-type-list-card-font(18px)×3 = 54px 算
   → 内容 324px 被硬切，截图里出现「PLA 1.75mm 1kg 3d Printing」下半截字。

   这里把首页改成与列表页**实测值完全一致**：
     13px（= --nf-label，与列表页 h6 通用规则同源）
     line-height 1.4（= 18.2px，与列表页实际渲染一致）
     w600 / #2f353b / 两行省略号

   ⚠ 另：文字直接是 h3 的纯文本（外层 a 是图片链接），
     模板的 clamp 挂在 `.iptz h3 a` 上 → 首页这层没有 a，clamp 从不生效，
     纯靠容器 overflow:hidden 硬切。必须把两行省略号直接加到 h3 上，
     并让容器高度自适应。 */
body .iptz h3 {
  font-size: 13px !important;
  line-height: 1.4 !important;
  font-weight: 600 !important;
  letter-spacing: normal !important;
  color: #2f353b !important;
  margin: 0 !important;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* 容器高度自适应（模板原本是固定 height，会把文字硬切一半） */
body .qili-iframe3 .list .context .ipto .iptz {
  height: auto !important;
  min-height: calc(13px * 1.4 * 2) !important;
}

body .iptz h3 a,
body .iptz h3 .to {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* ---------- 10b. 侧栏筛选面板标题：20px ----------
   「Products / 13 materials」是筛选面板的标题（控件标签，不是内容标题），
   按用户要求定为 20px。
   注意行高要随字号走（1.3 → 26px），不能沿用通用 H2 的固定 36px，
   否则 20px 字号配 36px 行高会上下空一大块。 */
body .rightint-goods-list .sidemenu.nf-sidebar > h2 {
  font-size: 20px !important;
  font-weight: 800 !important;
  line-height: 1.3 !important;
  letter-spacing: -0.3px !important;
}

/* 筛选面板里的分组标题（.nf-group-head）保持模板原设计 17px/w600，
   不套用内容层级的 H3（25px）——
   侧栏主标题已是 20px，分组标题若用 25px 会反超主标题，层级颠倒。
   层级：主标题 20px > 分组标题 17px > 列表项 16px。

   ⚠ 特异性：filter/index6.css 里是
     `.rightint-goods-list .sidemenu.nf-sidebar .nf-group-head`（0,3,0），
     比裸 `body .nf-group-head`（0,2,0）高 → 必须用完整选择器对齐。 */
body .rightint-goods-list .sidemenu.nf-sidebar .nf-group-head {
  font-size: 17px !important;
  font-weight: 600 !important;
  line-height: 1.4 !important;
}

/* ---------- 9d. 详情页（.nrd3）的 H2 降级为区块标题级 ----------
   详情页 V3 的区块标题是 JS 动态生成的裸 <h2>（无类名，见 pd-v3/index12.js
   「MNAME + ': Product Overview' / ': Key Features' / ': Applications'」）。
   这些在详情页里是「区块小标题」，语义上等同参考站的 H3（25px），
   若沿用通用 H2 的 36px，会与上方 38px 的产品名挤在同一层级、失去主次。
   这里限定在 .nrd3 内降级，首页/列表页的 H2 保持 36px 不受影响。 */
html.nrd3 h2 {
  font-size: var(--nf-h3) !important;
  font-weight: 700 !important;
  line-height: var(--nf-lh-snug) !important;
  letter-spacing: -0.2px !important;
}

/* 询价框标题（"Get a Free Quote"）是表单标题，单独保持稍大一号 */
html.nrd3 h2.inqury_title_text {
  font-size: var(--nf-h2) !important;
  line-height: 36px !important;
  letter-spacing: -0.3px !important;
}

/* ---------- 10. 导航栏：字号 16px，字体族对齐 Inter ----------
   ⚠ 为什么改在这里而不是 navfont.css：
     _headers 里 /_assets/* 是 immutable 一年缓存，直接改 navfont.css
     的内容，线上用户一年内拿到的还是旧文件（36px）。
     v4.css 是新文件名、本轮首次上线，且注入位置在 navfont.css 之后
     （同特异性时后者生效）→ 覆盖可靠。
   ⚠ 特异性：navfont.css 的 `body .header-song .nav>ul>li>a` 是 (0,2,3)，
     这里用完全相同的选择器 + !important，靠加载顺序取胜。

   字号档位：桌面 16px / ≤1200px 14px / ≤990px 13px。
   参考站顶部导航实测也是 16px（Inter / w500 / ls normal）。 */
body .header-song .nav>ul>li>a {
  font-family: var(--nf-sans) !important;
  font-size: 16px !important;
  font-weight: 500 !important;
  line-height: 1.4 !important;
  letter-spacing: normal !important;
}

/* 一级菜单项间距随字号收窄（原 18px 是配 36px 字号的） */
body .header-song .nav>ul>li {
  margin: 0 14px !important;
}

/* 窄屏：字号继续收回，避免顶栏挤爆。
   必须同时覆盖 navfont.css 的 1200px/990px 两档（那里是 24px / 20px）。 */
@media screen and (max-width: 1200px) {
  body .header-song .nav>ul>li>a { font-size: 14px !important; }
  body .header-song .nav>ul>li { margin: 0 10px !important; }
}
@media screen and (max-width: 990px) {
  body .header-song .nav>ul>li>a { font-size: 13px !important; }
}

/* ---------- 11. 按钮：圆角 30px / padding 10px 20px / w500 ----------
   参考站主 CTA 的实测值。诺睿站原为直角(r=0) + w700，偏"电商促销风"，
   改成参考站的胶囊 + 中字重后更接近工业 B2B 的克制感。

   ⚠ 排除清单（不能套胶囊的）：
     .submit_btn（搜索框的 GO）、.nf-tel（浮动电话）、
     a.pic（卡片图片链接）、.disabled/.page 按钮（分页）、
     .nr-arrow（轮播箭头）、.cookie-policy__*（Cookie 条）
   这些是功能性控件而非内容 CTA，套 30px 圆角会变形。 */
body .btn,
body a.btn,
body button.btn,
body .atf-btn,
body .nr-btn,
body .rightint-inquiry button,
body .nr-quote-form button[type='submit'],
body button.submit,
body .inqury_submit {
  border-radius: var(--nr-btn-radius) !important;
  padding: var(--nr-btn-pad-y) var(--nr-btn-pad-x) !important;
  font-size: var(--nr-btn-size) !important;
  font-weight: var(--nr-btn-weight) !important;
  font-family: var(--nf-sans) !important;
  line-height: 1.5 !important;
  letter-spacing: normal !important;
}

/* ---------- 11b. 模板按钮圆角变量 ----------
   模板（custom_inquiry_form 系列）把询价提交按钮的圆角写成
   `border-radius: var(--button-radius)`，而 --button-radius 在页面内联
   style 里定义成 10px。那个内联 style 写在 <head> 的 <style> 块中，
   优先级高于本文件（外部样式表），所以直接改变量值即可让所有引用
   var(--button-radius) 的按钮统一变成 30px —— 比逐个点名按钮类更彻底，
   也不会漏掉模板后续新增的表单组件。 */
body {
  --button-radius: var(--nr-btn-radius);
}

/* 询价表单提交按钮：把模板的 padding 10px 40px 收成参考站的 10px 20px */
body .crm_inquiry_form_box .inqury_submit,
body .inqury_submit,
body .create-form-submit {
  border-radius: var(--nr-btn-radius) !important;
  padding: var(--nr-btn-pad-y) var(--nr-btn-pad-x) !important;
  font-size: var(--nr-btn-size) !important;
  font-weight: var(--nr-btn-weight) !important;
  font-family: var(--nf-sans) !important;
  line-height: 1.5 !important;
}

/* ---------- 12. 区块垂直内边距：48px / 50px ----------
   参考站实测：标准区块 48px，uagb 容器级 50px。

   诺睿站现状（实测）：
     详情页 .nr-section  48/48  ✓ 已符合
     详情页 .nr-contact  64/64  ✗ → 归到 50px（容器级）
     详情页 .nr-quote    54.4    ✗ → 归到 50px（容器级）
     首页 .atf-section-padding 90px ✗ → 归到 48px
     首页 .guanxiang-about-quality 80px ✗ → 归到 48px
     首页 .noray-faq 100px ✗ → 归到 48px
     列表页 .rightint-goods-list 50/60 → 归到 50/50

   ⚠ 只点名改站上自有区块，不碰 banner / 轮播 / 轮播图容器等
     高度敏感的模板原生结构（.sidebanner-rightint2、swiper 等）。 */
body .nr-section {
  padding-top: var(--nr-section-pad) !important;
  padding-bottom: var(--nr-section-pad) !important;
}

/* 容器级区块（联系 / 询价）→ 50px */
body .nr-contact,
body .nr-quote,
body .nr-pd-v3 .nr-contact,
body .nr-pd-v3 .nr-quote {
  padding-top: var(--nr-section-pad-lg) !important;
  padding-bottom: var(--nr-section-pad-lg) !important;
}

/* 首页三大区块 → 48px */
body .atf-section-padding,
body .guanxiang-about-quality,
body .noray-faq {
  padding-top: var(--nr-section-pad) !important;
}

/* 列表页主容器 → 50/50 */
body .rightint-goods-list.main.container {
  padding-top: var(--nr-section-pad-lg) !important;
  padding-bottom: var(--nr-section-pad-lg) !important;
}

/* ---------- 13. 窄屏适配：参考站的移动端字号降幅约 40% ----------
   实测参考站移动端：H2 36→约 22px、正文 16→保持。
   这里取 H1 38→30、H2 36→28、H3 25→21，行高随字号缩放
   （桌面端 49.4px 是为 38px 定的，移动端字号变小后必须同步收，
   否则标题上下会空出一大块）。 */
@media screen and (max-width: 991px) {
  :root {
    --nf-h1: 30px;
    --nf-h2: 28px;
    --nf-h3: 21px;
    --nf-lh-body: 26px;
    --nr-section-pad: 36px;
    --nr-section-pad-lg: 36px;
  }

  /* H1 行高改为随字号走（1.3），不再用桌面端的固定 49.4px */
  html:not(.nrd3) h1, html.nrd3 h1,
  html:not(.nrd3) .h1, html.nrd3 .h1,
  body .atf-section-title h1,
  body #qili-iframe h1.mb-3 {
    line-height: 1.3 !important;
  }

  /* H2 行高同步收（桌面 36px 是为 36px 字号定的） */
  html:not(.nrd3) h2, html.nrd3 h2,
  html:not(.nrd3) .h2, html.nrd3 .h2,
  body .indextit h2,
  body .witr_section_title_inner h3,
  body .guanxiang-about-quality .title h2,
  body .noray-faq .title h2,
  body .noray-cat .cat-block > h2,
  body .rightint-case-list .app-list h3,
  body .rightint-about .txt h3,
  body .rightint-factory .container h3,
  body h2.inqury_title_text {
    line-height: 1.25 !important;
  }

  /* H3 行高同理
     ⚠ 不含 .iptz h3 —— 商品卡片标题在窄屏沿用列表页的 13px/1.45，
       不参与内容层级的行高缩放（见 9c-2）。 */
  html:not(.nrd3) h3, html.nrd3 h3,
  html:not(.nrd3) .h3, html.nrd3 .h3,
  body li.swiper-slide h3,
  body .atf-about-list h3,
  body .em_testi_title h2,
  body .app-card h3,
  body .app-list li a h6 {
    line-height: 1.3 !important;
  }
}


/* ==========================================================================
   14. 隐藏详情页页脚上方的 "Get a Quote" 残块
   --------------------------------------------------------------------------
   现象：产品详情页底部、页脚上方偏左出现一个孤零零的 "Get a Quote"
        文字（无按钮样式、无容器背景），位置 x=0，紧贴页脚上沿。

   根因：pd-v3/index12.js 第 822-828 行会把原模板的询价触发器
        （.main-href > a.cd-popup-trigger）挪进一个隐藏容器 .n3-src：
            var hide = el('div', 'n3-src');
            hide.appendChild(mh || D.trigger);
            host.appendChild(hide);
        注释写明「不能 display:none，弹窗脚本可能依赖它的位置」。

        这个隐藏容器需要配套 CSS 把它移出可视区，而：
          pd-v3/index10.css 第 42 行有这条规则：
            #nrd3 .n3-src { position:absolute; left:-9999px; top:0;
                            width:1px; height:1px; overflow:hidden; }
          pd-v3/index12.css 里 **没有**（grep 计数 = 0）
        → 隐藏容器失效，触发器裸露在页面上。

        index10.css 当前已无页面引用（0 页），index12.css 才是生效版本，
        所以这个隐藏规则在版本迭代中丢了。

   修法：把 index10.css 原有的隐藏规则补回（改用 v4.css 承载，
        因为 index12.css 是 immutable 缓存文件，直接改不生效）。

   影响面：仅 15 个引用 pd-v3/index12.js 的 V3 详情页。
        隐藏的是「裸露的残块」，不影响功能：
          · 弹窗脚本仍能取到该元素（用 left:-9999px 而非 display:none，
            正是为了这个）
          · 页面上另有 3 个可见询价入口（Request Sample / Contact Us /
            Send inquiry）+ 完整询价表单 .nr-quote，功能不受影响
   ========================================================================== */
#nrd3 .n3-src {
  position: absolute !important;
  left: -9999px !important;
  top: 0 !important;
  width: 1px !important;
  height: 1px !important;
  overflow: hidden !important;
}
