/* ==========================================================================
   全站字体与字号统一  V2.1（2026-10-29）
   --------------------------------------------------------------------------
   字体：DM Sans（SIL Open Font License 1.1 —— 可免费商用、可自托管、可随网站
        分发；授权全文见 _assets/noray/fonts/OFL.txt）。回退到 Inter（同为
        OFL 1.1）与系统字体。站点原有的 Roboto 是 Apache License 2.0，同样免费
        可商用，本轮只是不再作为主字体使用。
   字号：参照 dd3.cc 的比例定成 7 级阶梯（dd3 正文 16 / 区块标题 49.6 / 表格
        14.4 / 微标 12，我们容器 1200px 比它窄，故区块标题取 34）。
   原则：只改字体、字号、字重、行高，不动颜色、间距与布局；
        所有规则都可被更具体的页面级样式覆盖，回滚只需删掉 <link>。
   ========================================================================== */

/* ---------- 1. 字体文件（自带，无外部请求） ---------- */
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url('../../fonts/DMSans-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: 'DM Sans';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url('../../fonts/DMSans-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
    U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
    U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

:root {
  --nf-sans: 'DM Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI',
    Roboto, 'Helvetica Neue', Arial, 'Noto Sans', 'PingFang SC',
    'Hiragino Sans GB', 'Microsoft YaHei', sans-serif;

  /* 字号阶梯 */
  --nf-h1: 40px;      /* 页面主标题、详情页产品名 */
  --nf-h2: 34px;      /* 区块标题 */
  --nf-h3: 20px;      /* 卡片 / 子块标题 */
  --nf-h4: 17px;      /* 小标题 */
  --nf-eyebrow: 15px; /* 区块上方小字（大写） */
  --nf-body: 16px;    /* 正文 */
  --nf-body-s: 14.4px;/* 表格、说明、辅助信息 */
  --nf-label: 13px;   /* 表单标签、角标 */
  --nf-micro: 12px;   /* 极小的注释 */
  --nf-stat: 40px;    /* 数字大字 */
}

/* ---------- 2. 字体家族：整站收敛到一个 ----------
   注意排除 <i> 与 iconfont —— 站上图标（qico / iconfont / swiper）走的是
   独立图标字体，一旦被覆盖就会变成一片方框。 */
html,
body,
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;
}

/* ---------- 3. 顶部导航 ---------- */
.nav ul li a,
.goods-type-nav .item h3 {
  font-size: var(--nf-body) !important;
  font-weight: 500 !important;
}

/* 顶部大图 banner：与 Application 页模板原生保持一致，锁死 36 / 15
   注意 p 规则必须保持 (0,1,3)：第 7 节的 html:not(.nrd3) p（正文 16px）是
   (0,1,2)!important，两个 !important 相遇比特异性，裸 .sidebanner-rightint2 p
   (0,1,1) 会输给它 → 面包屑从 15px 涨到 16px（V2.1 期间的隐藏回归）。 */
.sidebanner-rightint2 h1,
.sidebanner-rightint2 h2 {
  font-size: 36px !important;
  font-weight: 700 !important;
  line-height: 1.15 !important;
}
html body .sidebanner-rightint2 p { font-size: 15px !important; }

/* ---------- 4. 区块标题 34px ---------- */
.indextit h2,
.witr_section_title_inner h3,
.guanxiang-about-quality .title h2,
.noray-faq .title h2,
.noray-cat .cat-block > h2,
.rightint-case-list .app-list h3,
.rightint-about .txt h3,
.rightint-factory .container h3,
h2.inqury_title_text {
  font-size: var(--nf-h2) !important;
  font-weight: 700 !important;
  line-height: 1.2 !important;
  letter-spacing: -0.3px !important;
}

/* 区块上方的小字（大写眉标） */
.witr_section_title_inner h2,
.atf-section-title h5,
#qili-iframe .tit h3,
.arshine2-foot h5 {
  font-size: var(--nf-eyebrow) !important;
  font-weight: 700 !important;
  line-height: 1.4 !important;
  letter-spacing: 0.08em !important;
  text-transform: uppercase !important;
}

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

/* ---------- 6. 卡片 / 子块标题 20px ---------- */
li.swiper-slide h3,
.atf-about-list h3,
.em_testi_title h2,
.iptz h3,
.app-card h3,
.app-list li a h6 {
  font-size: var(--nf-h3) !important;
  font-weight: 700 !important;
  line-height: 1.35 !important;
}
.nf-group-head span {
  font-size: var(--nf-body) !important;
  font-weight: 700 !important;
}

/* ---------- 7. 正文 ----------
   站上正文有的写成 <p>，有的直接塞在 <div class="txt"> 里，两种都要收。
   详情页 #nrd3 里的字号已经由 pd-v3 单独定过（html.nrd3），这里不重复干预。 */
html:not(.nrd3) p {
  font-size: var(--nf-body) !important;
  line-height: 1.7 !important;
}
.qili-iframe1 .down .txt,
.rightint-about .txt p,
.atf-single-about .atf-about-list p {
  font-size: var(--nf-body) !important;
  line-height: 1.7 !important;
}
.arshine2-foot p,
.arshine2-foot li a,
.cat-lead,
.noray-cat p,
.noray-faq .title p {
  font-size: var(--nf-body) !important;
  line-height: 1.7 !important;
}
.faq-item .faq-q {
  font-size: var(--nf-h4) !important;
  font-weight: 600 !important;
  line-height: 1.45 !important;
}
button.submit,
.inqury_submit {
  font-size: var(--nf-body) !important;
  font-weight: 600 !important;
  letter-spacing: 0.02em !important;
}

/* ---------- 8. 数字大字 ---------- */
.stat-number,
.counter {
  font-size: var(--nf-stat) !important;
  font-weight: 700 !important;
  line-height: 1.1 !important;
}

/* ---------- 9. 手机端同比例缩小 ---------- */
@media (max-width: 900px) {
  :root {
    --nf-h1: 30px;
    --nf-h2: 26px;
    --nf-h3: 18px;
    --nf-stat: 32px;
  }
  .sidebanner-rightint2 h1,
  .sidebanner-rightint2 h2 { font-size: 28px !important; }
  html body .sidebanner-rightint2 p { font-size: 14px !important; }
}


/* ---------- 10. 标题通配映射（V2.2，2026-10-30） ----------
   模板每页内联 reset（h1 36 / h2 32 / h3 24 / h4 16 / h5 14）此前只对未被本文件
   更具体选择器命中的标题生效，造成层级漂移。这里兜底：未被锁定的标题一律走令牌。

   两个特异性关键点（勿动）：
   1) :where(html:not(.nrd3)) 整体计 0 特异性 —— 既能豁免 V3 详情页
      （html.nrd3，其 #nrd3 ID 规则无 !important，会被任何带 !important 的
      通配反压），又保持选择器实际特异性只有 (0,0,1)/(0,1,0)，
      让 banner 36px、眉标 15px 等本文件内 (0,1,1) 的锁定规则稳赢。
   2) 不能直接写 html:not(.nrd3) 前缀：(0,1,2) 会反压 banner 的 (0,1,1)。 */
:where(html:not(.nrd3)) h1, :where(html:not(.nrd3)) .h1 { font-size: var(--nf-h1) !important; font-weight: 700 !important; line-height: 1.15 !important; letter-spacing: -.5px !important; }
:where(html:not(.nrd3)) h2, :where(html:not(.nrd3)) .h2 { font-size: var(--nf-h2) !important; font-weight: 700 !important; line-height: 1.2 !important; letter-spacing: -.3px !important; }
:where(html:not(.nrd3)) h3, :where(html:not(.nrd3)) .h3 { font-size: var(--nf-h3) !important; font-weight: 700 !important; line-height: 1.35 !important; }
:where(html:not(.nrd3)) h4, :where(html:not(.nrd3)) .h4 { font-size: var(--nf-h4) !important; font-weight: 600 !important; line-height: 1.45 !important; }
:where(html:not(.nrd3)) h5, :where(html:not(.nrd3)) .h5 { font-size: var(--nf-body-s) !important; font-weight: 400 !important; line-height: 1.5 !important; }
:where(html:not(.nrd3)) h6, :where(html:not(.nrd3)) .h6 { font-size: var(--nf-label) !important; font-weight: 600 !important; line-height: 1.5 !important; }
