/* ============================================================
   PX-News 主题样式
   设计来源：.temp/px-homepage-v2.html（与其余 .temp 设计稿共用同一设计系统）
   说明：本文件为全站共享样式；后续列表 / 详情页沿用本设计系统。
   ============================================================ */

/* ---------- WEBFONT ---------- */
/* Nunito Sans 自托管（不是系统字体，不 @font-face 进来，--bs-body-font-family 里写了也白写）。
   取自 Google Fonts 的可变字体（weight 200-1000 一个文件覆盖，站点用到的 700/800/900 都在里面），
   但字体文件放本地：全站其余依赖（bootstrap、fontawesome）都没走外部 CDN，
   而且欧洲客户那边 Google Fonts 传 IP 有 GDPR 争议，自托管省事。
   分了 latin / latin-ext 两个子集，浏览器按 unicode-range 只下用得上的那个（英文页面只取 latin，约 48KB）。
   注意：字体文件同样是「模板 assets/ 是源、public/assets/ 是前台真正加载的那份」，改了要两边同步。 */
/* latin-ext */
@font-face {
  font-family: 'Nunito Sans';
  font-style: italic;
  font-weight: 200 1000;
  font-stretch: 100%;
  font-display: swap;
  src: url(/assets/fonts/nunito-sans-latin-ext-italic.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-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Nunito Sans';
  font-style: italic;
  font-weight: 200 1000;
  font-stretch: 100%;
  font-display: swap;
  src: url(/assets/fonts/nunito-sans-latin-italic.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;
}
/* latin-ext */
@font-face {
  font-family: 'Nunito Sans';
  font-style: normal;
  font-weight: 200 1000;
  font-stretch: 100%;
  font-display: swap;
  src: url(/assets/fonts/nunito-sans-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-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Nunito Sans';
  font-style: normal;
  font-weight: 200 1000;
  font-stretch: 100%;
  font-display: swap;
  src: url(/assets/fonts/nunito-sans-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;
}

/* ---------- TOKENS ---------- */
:root{
  --blue:#078dc8; --deep:#06467e; --navy:#06355f;
  --orange:#f5a300; --yellow:#ffc425;
  --ink:#172330; --muted:#697887; --line:#e3e9ee; --soft:#f4f7f9;
  --wrap:1240px;

  /* 品牌值喂给 Bootstrap 的变量，Bootstrap 自己的组件（表单、表格、分页…）
     就能直接长成本站样子，不用再一个个写覆盖规则 */
  --bs-body-color:var(--ink);
  --bs-body-bg:#fff;
  --bs-body-font-family:"Nunito Sans",sans-serif,Arial,Helvetica;
  --bs-body-font-size:16px;
  --bs-body-line-height:1.6;
  --bs-emphasis-color:var(--navy);
  --bs-border-color:var(--line);
  --bs-secondary-color:var(--muted);
  --bs-link-color:inherit;
  --bs-link-hover-color:var(--orange);
  --bs-primary:var(--deep);
  --bs-border-radius:0;      /* 本设计系统全直角 */
  --bs-border-radius-sm:0; --bs-border-radius-lg:0; --bs-border-radius-xl:0;
}

/* box-sizing / scroll-behavior / prefers-reduced-motion 由 Bootstrap Reboot 提供，本文件不再重复 */

/* ---------- 锚点落点避开吸顶层 ----------
   Reboot 开了 scroll-behavior:smooth，跳锚点时浏览器把目标顶到 y=0，
   而本站顶部钉着页头（88px / 窄屏 70px），产品详情页下面还叠一条 sticky 的
   页内导航（55px）—— 不给 scroll-margin-top 的话标题整个埋在横条底下。
   --anchor-offset 由 site.js 实测当前吸顶元素后写入 <html> 的行内样式；
   这里 96px 只是脚本跑起来之前（含带 hash 直接打开的第一帧）的兜底值。 */
:root{--anchor-offset:96px}
[id]{scroll-margin-top:var(--anchor-offset)}

/* 过渡期兼容层 —— Bootstrap 迁移完成后整块删除。
   Reboot 除了给 h1-h6 / p / ul 加 margin-bottom、给 ul 加 padding-left，
   还把标题的字号和字重换成了自己那一套（h1-h6 一律 font-weight:500）。
   本设计系统的间距由各组件自己控制、字重靠浏览器默认的 bold，
   所以这里先整体还原成浏览器默认值，保证引入 Bootstrap 前后像素一致。
   页面逐个改用 Bootstrap 间距工具类之后，这几行就能删掉。
   注意：本段注释里不要出现星号加斜杠的组合，会提前闭合注释把下面的规则吞掉。 */
h1,h2,h3,h4,p,ul{margin:0}
ul{padding-left:0;list-style:none}
figure{margin:1em 40px}   /* 原来吃 UA 默认值，Reboot 改成了 0 0 1rem，按 UA 还原 */
h1,h2,h3,h4,h5,h6{font-weight:bold;line-height:inherit}
h1{font-size:2em}h2{font-size:1.5em}h3{font-size:1.17em}h4{font-size:1em}h5{font-size:.83em}h6{font-size:.67em}
button,input,optgroup,select,textarea{line-height:normal}
/* Reboot 给 code 加了 .875em 字号和粉色 #d63384；本设计里它只是页脚的一段普通行内文字 */
code{font-size:inherit;color:inherit;font-family:monospace}
/* 原来的 reset 是 *{box-sizing:border-box}，星号选择器不匹配伪元素，
   所以 ::before/::after 一直是 content-box；Reboot 写的是 *,::before,::after，
   把伪元素也改成了 border-box —— .photo::after 那类「max-width + padding」的占位标签
   可用文字宽度因此变窄、换行位置改变（关于页窄屏高度就差在这 15px）。
   Phase 1 先还原；等占位组件改用 Bootstrap 写法后删掉这行。 */
::before,::after{box-sizing:content-box}
/* Bootstrap 的分页项靠 margin-left:-1px 把边框叠在一起；本设计是 gap:8px 的独立方块 */
.pagination .page-link input{font-size:13.3333px}
/* Reboot 把表格标题挪到了表格下方，还给 caption 加了上下 .5rem 内边距和灰色字 */
table{caption-side:top}
caption{padding-top:0;padding-bottom:0;color:inherit;text-align:inherit}
/* .card / .badge 与 Bootstrap 同名：模板只想要自己那套外观，
   把 Bootstrap 多带的盒模型属性挡掉（Phase 3 改用 Bootstrap 组件后这两行删掉） */
.pg-contact .card{display:block;height:auto;position:static}
.pg-blog-index .badge{line-height:inherit;vertical-align:baseline}
/* 以下三条是设计系统本身的规则，不属于过渡期，迁移完成后保留 */
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
:focus-visible{outline:3px solid var(--orange);outline-offset:2px}

/* .container 沿用 Bootstrap 的类名，只把宽度换成设计稿的 1240px：
   Bootstrap 按断点给了 max-width（xl 是 1140px）和 .75rem 的左右 gutter，
   不清掉的话页面会整体窄一圈、两侧还多出内边距 */
.container{width:min(var(--wrap),calc(100% - 40px));max-width:none;padding-right:0;padding-left:0;margin:auto}

/* ---------- 通用排版 ---------- */
.eyebrow{display:block;color:var(--blue);font-size:12px;font-weight:900;letter-spacing:2px;text-transform:uppercase}
.sec-title{margin:9px 0 0;color:var(--navy);font-size:clamp(28px,3.4vw,42px);line-height:1.15}
.sec-lead{max-width:620px;margin:14px 0 0;color:var(--muted);font-size:15px}
.sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:28px;margin-bottom:38px}
.section{padding:82px 0}
.section--soft{background:var(--soft)}
.section--deep{background:var(--deep);color:#fff}
.section--deep .sec-title{color:#fff}
.section--deep .sec-lead{color:#ffffffb8}
.section--deep .eyebrow{color:var(--yellow)}

.btn{display:inline-block;padding:15px 24px;font-size:13px;font-weight:900;letter-spacing:.4px;text-transform:uppercase;border:2px solid transparent;border-radius:0;line-height:inherit;cursor:pointer;transition:.2s}
button.btn{line-height:normal}
.btn--primary{background:var(--orange);color:#fff}
.btn--primary:hover{background:#dd9200}
.btn--outline{border-color:var(--deep);color:var(--deep)}
.btn--outline:hover{background:var(--deep);color:#fff}
.btn--ghost{border-color:#ffffff66;color:#fff}
.btn--ghost:hover{border-color:#fff;background:#ffffff1a}
.textlink{display:inline-block;margin-top:14px;color:var(--blue);font-size:13px;font-weight:900;text-transform:uppercase}
.textlink:hover{color:var(--orange)}
.textlink::after{content:" →"}

/* ---------- 图片与占位 ---------- */
/* .photo 同时用于 <img> 与占位 <div>：<img> 用 object-fit 铺满，占位块用条纹底 + 文字 */
.photo{display:block;width:100%;object-fit:cover;background:repeating-linear-gradient(135deg,#dbe6ee 0 14px,#e8eff5 14px 28px)}
.photo--empty{display:grid;place-items:center;overflow:hidden;color:#6b7f90;font-size:12px;font-weight:700;letter-spacing:.4px;text-align:center;padding:12px}

/* ---------- TOPBAR + NAV ---------- */
.topbar{background:var(--navy);color:#d8e3ec;font-size:12px}
.topbar .container{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:38px}
.topbar-contacts{display:flex;gap:22px;flex-wrap:wrap}
.topbar a:hover{color:var(--yellow)}
.topbar-social{display:flex;gap:14px}

.header{position:sticky;top:0;z-index:40;background:#fff;box-shadow:0 3px 16px #0f2e4b12}
.px-nav{display:flex;align-items:center;gap:26px;min-height:88px}
.logo{width:210px;margin-right:auto}
.logo-img{display:block;max-height:56px;width:auto;max-width:210px}
.logo-text{display:block;color:var(--navy);font-size:22px;font-weight:900;line-height:1.2}
.navlinks{display:flex}
.navlinks>ul{display:flex;gap:24px;font-size:13px;font-weight:800;text-transform:uppercase}
.navlinks a{position:relative;padding:34px 0}
.navlinks>ul>li{position:relative}
.navlinks>ul>li>a:hover::after,.navlinks>ul>li>a[aria-current="page"]::after{content:"";position:absolute;right:0;bottom:24px;left:0;height:3px;background:var(--orange)}
/* 二级下拉。默认实心白底 —— 下面 @supports 里才转成磨砂玻璃，
   不支持 backdrop-filter 的浏览器（旧 Firefox / 部分安卓 WebView）就停在这条规则上，
   否则它们只吃到半透明、吃不到模糊，下拉后面的图片会直接透上来把字糊掉。 */
.sub{display:none;position:absolute;top:100%;left:0;min-width:220px;background:#fff;border:1px solid var(--line);box-shadow:0 16px 30px #06355f1f;padding:8px 0}
@supports ( (backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px)) ){
  /* 白底压到 86% 透明度：再低文字对比度就掉出 4.5:1 了（下拉字只有 12.5px）。
     saturate 提一点，免得模糊后底下的图片发灰。 */
  .sub{background:#ffffffdb;-webkit-backdrop-filter:blur(16px) saturate(150%);backdrop-filter:blur(16px) saturate(150%);
       border-color:#ffffffa6;box-shadow:0 16px 30px #06355f24,inset 0 1px 0 #ffffffb3}
}
.navlinks li:hover>.sub{display:block}
.sub a{display:block;padding:10px 18px;font-size:12.5px;font-weight:700;text-transform:none;white-space:nowrap}
.sub a:hover{color:var(--blue)}
.sub a::after{display:none!important}
.nav-cta{flex-shrink:0}
/* 语言切换条（Language_model->code()->bar，位于 Get a Quote 前）。
   组件自带的 app.css 在 body 内才加载，晚于本文件，同特异性会被它盖掉，所以选择器多带一层 .px-nav。
   组件默认 position:fixed 悬浮在右上角，嵌入导航栏要覆写成 static（开发资料 §5.3）。 */
.px-nav .yf-language-switch{position:static;flex-shrink:0;font-size:13px}
.px-nav .yf-btn{padding:10px 14px;border:1px solid var(--line);border-radius:0;background:#fff;color:var(--navy);font-weight:700;line-height:normal;white-space:nowrap}
.px-nav .yf-btn:hover{border-color:var(--deep)}
.px-nav .yf-dropdown-menu{right:0;left:auto;min-width:150px;border-color:var(--line);border-radius:0}
.px-nav .yf-dropdown-item{padding:10px 16px;color:var(--navy);font-weight:700}
.px-nav .yf-dropdown-item.yf-current{color:var(--blue)}
/* ≤1199：头部一行要放 logo / 菜单 / 语言 / 询盘（≤991 起菜单收进汉堡），语言条进来后不收紧会横向溢出
   （实测 1024 溢出 122px、1100 溢出 46px）。去掉按钮里的国旗、缩内边距；992–1199 再收紧两处间距。
   国旗必须用 #language-btn：组件自带 css 里 #language-btn img{display:inline-block} 带 ID，class 选择器压不过它。 */
@media(max-width:1199.98px){
  .px-nav .yf-btn{padding:8px 10px}
  .px-nav #language-btn img{display:none}
}
@media(min-width:992px) and (max-width:1199.98px){
  .px-nav{gap:14px}
  .navlinks>ul{gap:14px}
}
.navtoggle{display:none;padding:10px;border:1px solid var(--line);background:#fff;font-size:20px;cursor:pointer;color:var(--navy)}

/* ---------- HERO ---------- */
/* 设计稿把 .hero-photo 设成 z-index:-1，但 .hero 只有 position:relative、没建堆叠上下文，
   负层级会冒到 root，反而被 .hero 自己的渐变背景整块盖住 —— 后台传了首屏图也看不见。
   改为：底图 → 渐变遮罩(::before) → 内容，三层显式排序，设计稿的视觉意图不变。 */
.hero{position:relative;color:#fff}
.hero::before{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(92deg,#032b4df2 0%,#06467ed6 58%,#078dc8a6 100%)}
.hero-photo{position:absolute;inset:0;z-index:0;height:100%}
/* 下留白写在容器上，不靠 .hero-facts 的 padding 兜底：数据条是模板参数（hero_facts），
   客户把行清空时整块 .hero-facts 不输出，靠它撑的那 26px 底距会一起消失 ——
   表现是「按钮直接贴在版块底边上」。下 26px 放容器、上 26px 留在数据条自身，
   两者都在时与原来像素一致，数据条没了也不会塌。 */
.hero .container{position:relative;z-index:2;padding:96px 0 26px}
.hero h1{max-width:900px;margin:16px 0 0;font-size:clamp(32px,4.6vw,58px);line-height:1.08}
.hero p{max-width:660px;margin:20px 0 0;color:#ffffffd6;font-size:17px}
.hero .eyebrow{color:var(--yellow)}
.hero-actions{display:flex;flex-wrap:wrap;gap:14px;margin-top:32px}
.hero-facts{display:grid;grid-template-columns:repeat(4,1fr);gap:22px;margin-top:56px;padding:26px 0 0;border-top:1px solid #ffffff3d}
.hero-fact strong{display:block;font-size:24px;line-height:1.2}
.hero-fact span{display:block;margin-top:4px;color:#ffffffa8;font-size:11px;font-weight:700;letter-spacing:1px;text-transform:uppercase}

/* ---------- TRUST BAR ---------- */
.trustbar{background:#fff;box-shadow:0 14px 40px #06355f1f;border-top:4px solid var(--orange)}
.trustbar ul{display:grid;grid-template-columns:repeat(5,1fr)}
.trustbar li{padding:26px 22px;border-left:1px solid var(--line)}
.trustbar li:first-child{border-left:0}
.trustbar b{display:block;color:var(--deep);font-size:21px}
.trustbar span{display:block;margin-top:2px;color:var(--muted);font-size:12px;font-weight:700;letter-spacing:.5px;text-transform:uppercase}

/* ---------- SOLUTIONS ---------- */
.solutions{display:grid;grid-template-columns:repeat(4,1fr);gap:22px}
.sol{display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);transition:.22s}
.sol:hover{transform:translateY(-5px);box-shadow:0 16px 34px #06355f1f;border-color:var(--blue)}
.sol .photo{height:172px}
.sol-body{display:flex;flex-direction:column;flex:1;padding:24px}
.sol h3{color:var(--navy);font-size:19px;line-height:1.3}
.sol p{margin-top:10px;color:var(--muted);font-size:13.5px;flex:1}
.sol-spec{margin-top:14px;padding-top:14px;border-top:1px dashed var(--line);color:var(--deep);font-size:12px;font-weight:800;letter-spacing:.4px}

/* ---------- PRODUCTS ---------- */
.prodgrid{display:grid;grid-template-columns:repeat(5,1fr);gap:18px}
.prod{padding:24px 20px;background:#fff;border:1px solid var(--line);transition:.22s}
.prod:hover{border-color:var(--orange);box-shadow:0 12px 28px #06355f14}
.prod b{display:block;color:var(--navy);font-size:15.5px;line-height:1.3}
.prod span{display:block;margin-top:8px;color:var(--muted);font-size:12.5px}
.prod em{display:block;margin-top:12px;color:var(--blue);font-size:11px;font-weight:900;font-style:normal;letter-spacing:.6px;text-transform:uppercase}

/* ---------- CAPACITY TABLE ---------- */
/* 全站表格统一走 Bootstrap 的 .table：宽度、边框合并、hover 状态交给 --bs-table-* 变量。
   原先 captable / spec / cmp / cfg / pat / terms 各写了一份几乎相同的基础样式（7 份重复），
   现在只在下面各自留「与基座不同的那几个值」。
   注意 Bootstrap 的单元格背景是靠 box-shadow:inset ... var(--bs-table-bg) 画的，
   要改某个单元格底色得改 --bs-table-bg，直接写 background 会被那层 inset 盖住。 */
.table{
  --bs-table-bg:#fff;
  --bs-table-color:var(--ink);
  --bs-table-border-color:var(--line);
  --bs-table-hover-bg:var(--soft);
  --bs-table-hover-color:var(--ink);
  margin-bottom:0;font-size:14px
}
.table>:not(caption)>*>*{padding:14px 15px;text-align:left;vertical-align:top}
.table>thead>tr>th{--bs-table-bg:var(--deep);color:#fff;font-size:12px;letter-spacing:.6px;text-transform:uppercase;border-bottom-width:0}
.table>caption{caption-side:top;padding:0 0 13px;color:var(--muted);font-size:13px;text-align:left}

.captable>:not(caption)>*>*{padding:15px 16px}
.captable>caption{padding-bottom:14px}
.captable td b{color:var(--navy)}
.captable .yes{color:#0a8a4d;font-weight:900}
.captable .no{color:#b9c4cd}
.captable a{color:var(--blue);font-weight:800}
.captable a:hover{color:var(--orange)}

/* ---------- FACTORY / QC ---------- */
.split{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center}
.split .photo{height:420px}
.qc{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:26px}
.qc li{padding:16px 18px;background:var(--soft);border-left:3px solid var(--blue)}
.qc b{display:block;color:var(--navy);font-size:14px}
.qc span{color:var(--muted);font-size:12.5px}

/* ---------- 图片轮播（首屏底图 / 工厂实拍：那个位子上有多张图时才出现） ----------
   交互整套复用页头 banner 那一套 JS：容器 data-hero-carousel、格子 [data-hero-slide]、
   圆点 [data-hero-dot]、箭头 [data-hero-prev]/[data-hero-next]，JS 只负责切 .is-active。
   这里只管版式：格子绝对定位叠放，靠 opacity 交叉淡入。
   同样不用 Bootstrap 的 Carousel —— 它靠 display:none 换页，容器高度只跟着当前那张走，
   客户上传的图比例参差不齐，翻一页整页内容就往上下弹一次（页头 banner 也是这个理由）。 */
.slidebox{position:relative}
.slidebox>[data-hero-slide]{position:absolute;inset:0;z-index:0;opacity:0;pointer-events:none;transition:opacity .55s ease}
.slidebox>[data-hero-slide].is-active{z-index:1;opacity:1;pointer-events:auto}
/* 箭头 / 圆点配色与 .pagehero-arrow / .certnav 同源（半透明白底 + 深蓝图标，hover 反色）：
   底下压着的是白底的渲染图还是深色车间照都看得见，投影保证浅色照片上也不糊。 */
.slidenav{position:absolute;top:50%;z-index:2;transform:translateY(-50%);display:grid;place-items:center;width:44px;height:44px;padding:0;border:0;background:#ffffffd9;color:var(--navy);font-size:15px;cursor:pointer;box-shadow:0 2px 12px #06355f2e;transition:background .18s,color .18s}
.slidenav:hover{background:var(--navy);color:#fff}
.slidenav--prev{left:0}
.slidenav--next{right:0}
.slidedots{position:absolute;right:0;bottom:12px;left:0;z-index:2;display:flex;justify-content:center;gap:8px}
.slidedot{width:28px;height:4px;padding:0;border:0;background:#9fb0bf;cursor:pointer;box-shadow:0 1px 4px #06355f4d;transition:background .18s}
.slidedot:hover{background:var(--navy)}
.slidedot.is-active{background:var(--orange)}

/* 首屏底图位：容器就是原来那张 .hero-photo 的位置 —— 绝对铺满 .hero，压在渐变遮罩(z-index:1)之下、
   文字(z-index:2)之上。自带 z-index 还顺带建了层叠上下文，格子切 .is-active 时的 z-index:1
   不会冒出去跟遮罩抢层级。 */
.hero-media{position:absolute;inset:0;z-index:0;overflow:hidden}
/* 圆点落在 .hero .container 的 26px 下留白里：数据条是容器内容区的最后一块，
   底边离 .hero 底还有 26px，所以圆点不会压在数据条文字上；客户把数据条清空时，
   这条空白带也还在（下留白写在容器上，不靠数据条撑），圆点位置不动。 */
.hero-media .slidedots{bottom:9px}
/* 箭头只在 ≥992px 出：更窄时容器满宽、标题顶到左右边，箭头必然压住标题开头，
   触屏用户点圆点切换即可（这块是淡入淡出、不是可滑动的轨道，本来也没有滑动交互）。 */
.hero-media .slidenav{display:none}
@media(min-width:992px){
  .hero-media .slidenav{display:grid}
}

/* 工厂实拍位：格子全是绝对定位、撑不开高度，容器得自己定高 —— 数值与断点都跟 .split .photo 走
   （见下方「响应式」段），单张那条 <img> 与轮播切换时高度一致，不会跳。 */
.factory-media{height:420px;overflow:hidden}
/* 选择器比 .split .photo（只给 height）长一层：小屏断点里那条 .split .photo{height:320px}
   同样命中轮播里的 <img>，这里必须是「跟随容器高度」才不会被它钉死。 */
.factory-media [data-hero-slide] .photo{position:absolute;inset:0;height:100%}
.factory-media .slidenav--prev{left:0}
.factory-media .slidenav--next{right:0}
@media(max-width:991.98px){
  .factory-media{height:320px}
}

/* ---------- CERTIFICATES ---------- */
.certs{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
.cert .photo{height:210px;background:repeating-linear-gradient(135deg,#eef3f7 0 14px,#f7fafc 14px 28px)}
.cert b{display:block;margin-top:12px;color:var(--navy);font-size:14px}
.cert span{color:var(--muted);font-size:12.5px}
/* 证书卡多于 4 张时的一屏 4 张横向轮播（.certwrap--rail 由 site/index.php 按张数决定加不加，
   4 张及以内仍是上面的自适应网格，一个字都不受影响）。
   轨道本身就是可横向滚动的：触屏 / 触控板直接滑，箭头只是替鼠标用户推一格。 */
.certwrap--rail{position:relative}
.certwrap--rail .certs{display:flex;gap:20px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;-ms-overflow-style:none}
/* 滚动条藏起来 —— 有了箭头再拖一条灰槽，桌面端很难看；触屏上本来也不显示 */
.certwrap--rail .certs::-webkit-scrollbar{display:none}
/* 一屏 4 张：宽度里先扣掉 3 个 20px 间距，剩下的四等分 */
.certwrap--rail .cert{flex:0 0 calc((100% - 60px)/4);scroll-snap-align:start}
/* 箭头配色与 .pagehero-arrow 同源（半透明白底 + 深蓝图标，hover 反色）：
   底下压着的是白底扫描件还是深色实拍照都看得见，投影保证浅色照片上也不糊。
   top 是照片中线：照片定高 210px，减去按钮自身高度的一半。 */
.certwrap--rail .certnav{position:absolute;top:83px;z-index:2;display:grid;place-items:center;width:44px;height:44px;padding:0;border:0;background:#ffffffd9;color:var(--navy);font-size:15px;cursor:pointer;box-shadow:0 2px 12px #06355f2e;transition:background .18s,color .18s,opacity .18s}
.certwrap--rail .certnav:hover{background:var(--navy);color:#fff}
.certwrap--rail .certnav--prev{left:0}
.certwrap--rail .certnav--next{right:0}
/* 已经滚到头的方向直接淡出：留一个点了没反应的按钮比没有还糟 */
.certwrap--rail .certnav[disabled]{opacity:0;pointer-events:none}
@media(max-width:991.98px){
  /* 与 .certs 网格的断点保持一致：一屏 2 张 */
  .certwrap--rail .cert{flex:0 0 calc((100% - 20px)/2)}
}
@media(max-width:767.98px){
  /* 一屏 1 张；箭头跟着照片中线缩小（210/2 - 34/2） */
  .certwrap--rail .cert{flex:0 0 100%}
  .certwrap--rail .certnav{width:34px;height:34px;font-size:12px;top:88px}
}

/* ---------- CLIENTS ---------- */
/* 列宽用 minmax(0,1fr)：纯 1fr 的下限是内容最小宽度，大尺寸 logo 会把列撑宽、整排溢出容器（与 about 同规格） */
.clients{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:14px;margin-top:8px}
.client-chip{display:grid;place-items:center;min-width:0;overflow:hidden;height:74px;padding:8px 6px;background:#ffffff14;border:1px solid #ffffff2e;color:#fff;font-size:12px;font-weight:800;letter-spacing:.4px;text-align:center}
/* 传了 logo 的品牌：同一个格子换成白底承载图片 —— 客户上传的 logo 多是深色或透明底的 PNG，
   压在深蓝版块上那层半透明白底（上面那条规则，本来是给纯文字用的）上会看不清。
   尺寸用 contain 收在格子里，牌子之间的留白与文字格子一致，混排不会参差。 */
/* 格子内只有一格、且上下限都是 0：img 的 100% 才有确定的参照尺寸，不会按原图大小顶出格子 */
.client-chip--logo{grid-template:minmax(0,1fr)/minmax(0,1fr);padding:9px;background:#fff}
.client-chip--logo img{display:block;width:100%;height:100%;object-fit:contain}

/* ---------- PROJECTS ---------- */
.projects{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.proj{background:#fff;border:1px solid var(--line)}
.proj .photo{height:190px}
.proj-body{padding:22px}
.proj-cap{display:inline-block;padding:5px 11px;background:var(--deep);color:#fff;font-size:12px;font-weight:900;letter-spacing:.5px}
.proj h3{margin-top:12px;color:var(--navy);font-size:17px;line-height:1.35}
.proj p{margin-top:9px;color:var(--muted);font-size:13px}

/* ---------- PROCESS ---------- */
.steps{display:grid;grid-template-columns:repeat(5,1fr);gap:18px;counter-reset:s}
.step{position:relative;padding:26px 20px;background:#ffffff14;border:1px solid #ffffff2b}
.step::before{counter-increment:s;content:"0" counter(s);display:block;margin-bottom:14px;color:var(--yellow);font-size:22px;font-weight:900}
.step b{display:block;font-size:15px}
.step span{display:block;margin-top:7px;color:#ffffffab;font-size:12.5px}

/* ---------- INSIGHTS ---------- */
.posts{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.post{background:#fff;border:1px solid var(--line);transition:.22s}
.post:hover{box-shadow:0 14px 30px #06355f17;border-color:var(--blue)}
.post .photo{height:180px}
.post-body{padding:22px}
.post-cat{color:var(--orange);font-size:11px;font-weight:900;letter-spacing:1px;text-transform:uppercase}
.post h3{margin-top:9px;color:var(--navy);font-size:17px;line-height:1.35}
.post p{margin-top:9px;color:var(--muted);font-size:13px}

/* ---------- FAQ ---------- */
.faqwrap{display:grid;grid-template-columns:.8fr 1.2fr;gap:64px;align-items:start}
.faqlist{border-top:1px solid var(--line)}
.faqlist details{border-bottom:1px solid var(--line)}
.faqlist summary{position:relative;padding:20px 40px 20px 0;font-size:15.5px;font-weight:800;color:var(--navy);cursor:pointer;list-style:none}
.faqlist summary::-webkit-details-marker{display:none}
.faqlist summary::after{content:"+";position:absolute;right:6px;top:16px;color:var(--orange);font-size:24px;font-weight:400}
.faqlist details[open] summary::after{content:"–"}
.faqlist p{padding:0 30px 22px 0;color:var(--muted);font-size:14px}

/* ---------- CONTACT ---------- */
.contactgrid{display:grid;grid-template-columns:1fr 1.1fr;gap:56px;align-items:start}
.needlist li{padding:11px 0;border-bottom:1px solid #ffffff2b;font-size:14px;color:#ffffffd0}
.needlist li b{color:#fff}
.form{padding:30px;background:#fff}
.form h3{color:var(--navy);font-size:20px}
/* 两列布局交给 .row + .row-cols-md-2（子元素不用加类），这里只留设计稿的 14px 间距。
   margin-top 要减掉 gutter-y：Bootstrap 的行间距是「每个子元素 margin-top:gutter-y
   + 行自身 margin-top:-gutter-y」实现的，直接写 margin-top:16px 会把那个负值覆盖掉，
   每个 form-row 就凭空多出 14px（四个 row 合计约 56px）。 */
.form-row{--bs-gutter-x:14px;--bs-gutter-y:14px;margin-top:calc(16px - var(--bs-gutter-y))}
/* 表单控件用 Bootstrap 的 .form-control / .form-select / .form-check-input，
   focus / disabled / placeholder / 文件选择按钮 / select 箭头这些状态交给它，
   本文件只覆盖设计稿的尺寸与配色。原先联系页、产品详情、方案详情各抄了一份
   完全相同的 .field input 规则，现在合并到这一处。 */
.field label{display:block;margin-bottom:6px;color:var(--navy);font-size:12px;font-weight:800;letter-spacing:.4px;text-transform:uppercase}
.field .form-control,.field .form-select{padding:13px;font-size:14px;line-height:1.6;color:var(--ink);border-color:var(--line);background-color:#fff}
.field .form-control:focus,.field .form-select:focus{border-color:var(--blue);box-shadow:none}
/* 文件选择器换成自定义按钮 + 文件名展示：原生 input[type=file] 的按钮文案（Choose File）
   和未选文件时的提示文字（No file chosen）跟浏览器界面语言走，不跟页面语言走，
   CSS 也没有覆盖这两段文字的入口——浏览器中文、页面英文时用户会看到中文提示。
   原生 input 只做视觉隐藏（压到 1px，不用 display:none），键盘 Tab 和读屏器仍能定位到它，
   真正可见的按钮换成受 t() 翻译控制的 <label for>，交互与逻辑见 site.js。 */
.filepick{position:relative;display:flex;align-items:center;gap:12px;padding:12px 13px;border:1px solid var(--line);background:#fff}
.filepick__input{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
/* 选择器写成 label.filepick__btn（而不是单一 class）：specificity 要压过上面
   .field label 那条通用规则（它把 .field 里所有 <label> 都设成大写、6px 下边距），
   否则按钮文字会被那条规则改成大写，跟 t() 译文对不上。 */
label.filepick__btn{display:inline-flex;align-items:center;flex-shrink:0;margin:0;padding:7px 14px;font-size:12px;font-weight:800;letter-spacing:0;text-transform:none;color:var(--navy);background:var(--soft);border:1px solid var(--line);border-radius:3px;cursor:pointer}
.filepick__input:focus-visible+.filepick__btn{outline:2px solid var(--blue);outline-offset:2px}
.filepick__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;color:var(--muted)}
.filepick__name.has-file{color:var(--ink)}
/* :root 里把 --bs-border-color 设成了很浅的 --line（给输入框用），复选框跟着变得几乎看不见，
   单独给它一档更深的边框；选中态用品牌蓝而不是 Bootstrap 默认的 #0d6efd */
.form-check-input{border-color:var(--muted)}
.form-check-input:checked{background-color:var(--deep);border-color:var(--deep)}
.form-check-input:focus{border-color:var(--blue);box-shadow:none}
.field textarea{height:104px;resize:vertical}
.consent{display:flex;gap:10px;margin-top:16px;color:var(--muted);font-size:12.5px}
.consent input{margin-top:3px}
.form .btn{width:100%;margin-top:18px}

/* ---------- FOOTER ---------- */
.footer{padding-top:58px;background:#222d35;color:#aeb8bf;overflow-x:hidden}
/* .footgrid 自定义 gutter(40px) 与 Bootstrap .row 的负边距在窄屏对不齐，
   会把页面撑出 10px 横向滚动（375 视口下 scrollWidth 385）。footer 是简单
   列布局、没有需要溢出展示的内容，直接裁掉横向即可。 */
/* 栅格交给 Bootstrap 的 .row/.col，这里只留设计稿的 40px 间距（不是 Bootstrap 的档位值） */
.footgrid{--bs-gutter-x:40px;--bs-gutter-y:40px;padding-bottom:40px}
.footer h4{margin-bottom:14px;color:#fff;font-size:14px;letter-spacing:.6px;text-transform:uppercase}
.footer li{margin:9px 0;font-size:13px}
/* 链接明显偏多的那一列（见 layouts/footer.php 的 $col_is_split）：给的宽度已经比邻列宽，
   再让 <ul> 内部两列排版，列表不会比旁边的列高出一大截。column-count 按可用内联空间自动
   分栏、不是定宽，所以从手机整行到桌面 3/12 栅格宽度都不会横向溢出。
   li 加 break-inside:avoid 防止单条链接被从中间断成两截。 */
.footcol--split ul{column-count:2;column-gap:24px}
.footcol--split li{break-inside:avoid}
.footer a:hover{color:var(--yellow)}
.footlogo{display:grid;place-items:center;height:56px;width:190px;background:#ffffff12;color:#ffffffa8;font-size:12px;font-weight:800}
/* 页脚 LOGO 与页头同一张图，但那是白底 JPG，直接贴在 #222d35 上就是一块白矩形；
   垫一层白底板（宽度对齐 .footlogo 占位块的 190px，本设计系统全直角所以不加圆角）让它看着是块品牌牌子。
   不复用 .logo-img：那条规则连着页头的 210px / 56px 和 1080px 断点下的 44px 限高，页脚跟着变没道理。 */
.footlogo-link{display:inline-block}
.footlogo-img{display:block;width:190px;max-width:100%;height:auto;padding:8px 10px;background:#fff}
.footbrand p{margin-top:16px;font-size:13px;max-width:330px}
.footsocial{display:flex;flex-wrap:wrap;gap:16px;margin-top:18px;font-size:13px}
.footother{padding:16px 0;border-top:1px solid #ffffff17;font-size:12.5px}
.copy{display:flex;justify-content:space-between;gap:18px;flex-wrap:wrap;padding:18px 0;border-top:1px solid #ffffff17;font-size:12px}

/* ---------- 悬浮联系条（layouts/floating-contact.php） ----------
   右侧竖排：WhatsApp / 微信 / 询盘 / YouTube / Facebook。
   取代了原来右下角那个单独的 WhatsApp 胶囊（.floatwa）。
   层级 60：高于吸顶页头（40），低于 Bootstrap Modal（1055），询盘弹窗打开时它会被遮住，符合预期。 */
/* 竖直位置比页面正中略低一点：正中那条水平线上通常正好是内页 banner 的标题区。
   min() 是矮屏兜底 —— 下移之后最后一个按钮不能被顶出视口底部
   （按 5 个按钮 300px 高算，中心线最低只能到 视口底 -170px）。 */
.floatbar{position:fixed;top:min(calc(50% + 72px),calc(100vh - 170px));right:0;z-index:60;transform:translateY(-50%)}
.floatbar__cell{position:relative}
/* 圆角只做左侧两个角，半径 = 半个按钮高 = 左端一个半圆；右侧贴着视口边缘，留直角。
   26px 与 height:52px 是绑死的，改高度这里要一起改。 */
.floatbar__btn{position:relative;display:flex;width:52px;height:52px;margin:4px 0;padding:0;
  align-items:center;justify-content:center;border:0;border-radius:26px 0 0 26px;color:#fff;font-size:21px;
  background:var(--deep);box-shadow:0 4px 14px #08223e33;cursor:pointer;transition:filter .2s,border-radius .18s ease}
/* 悬停展开文字标签后，按钮变成这条胶囊的中段，半圆要交给标签的左端（见下面 .floatbar__btn>b） */
.floatbar__btn:hover,.floatbar__btn:focus-visible{color:#fff;border-radius:0;filter:brightness(1.12)}
/* 悬停时从按钮左侧滑出的文字标签。背景 inherit 让它自动跟随各按钮的品牌色 */
.floatbar__btn>b{position:absolute;top:0;right:100%;display:flex;height:52px;padding:0 16px 0 20px;
  visibility:hidden;align-items:center;background:inherit;border-radius:26px 0 0 26px;color:#fff;font-size:13px;font-weight:800;
  white-space:nowrap;opacity:0;transform:translateX(8px);
  transition:opacity .18s ease,transform .18s ease,visibility .18s}
.floatbar__btn:hover>b,.floatbar__btn:focus-visible>b{visibility:visible;opacity:1;transform:none}
/* 二维码面板展开时标签就多余了，两块白底叠在一起反而看不清 */
.floatbar__cell.is-open .floatbar__btn>b{display:none}
/* 标签既然不出现，左端半圆就还给按钮自己 —— 否则展开面板时按钮是个光秃秃的方块 */
.floatbar__cell.is-open .floatbar__btn{border-radius:26px 0 0 26px}
.floatbar__btn--whatsapp{background:#25d366}
.floatbar__btn--wechat{background:#07c160}
.floatbar__btn--inquiry{background:var(--deep)}
.floatbar__btn--youtube{background:#ff0000}
.floatbar__btn--facebook{background:#1877f2}

/* 磨砂玻璃。写法同二级下拉（.sub）：上面几条实心色是回退，不支持 backdrop-filter 的
   浏览器停在那里，否则它们只吃到半透明、吃不到模糊，图标就糊在底下的图片上了。
   只做到 85% 不透明度 —— 再透白色图标压不住浅色照片（图标 21px、没有描边）。
   限桌面：手机上这条已经变成贴底的实心横条，透出来的是正文，反而看不清。 */
@media(min-width:768px){
  @supports ( (backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px)) ){
    .floatbar__btn,.floatbar__btn>b{-webkit-backdrop-filter:blur(14px) saturate(160%);backdrop-filter:blur(14px) saturate(160%)}
    .floatbar__btn{box-shadow:0 4px 14px #08223e2e,inset 0 0 0 1px #ffffff2e}
    .floatbar__btn--whatsapp{background:#25d366d9}
    .floatbar__btn--wechat{background:#07c160d9}
    .floatbar__btn--inquiry{background:#06467ed9}
    .floatbar__btn--youtube{background:#ff0000d9}
    .floatbar__btn--facebook{background:#1877f2d9}
  }
}

/* 二维码面板：默认 hidden，由 site.js 切换 */
/* 展开的那一格要压过后面几格 —— 否则鼠标扫过下面的按钮时，滑出的文字标签会盖在面板上 */
.floatbar__cell.is-open{z-index:2}
.floatbar__panel{position:absolute;top:50%;right:calc(100% + 10px);z-index:1;
  max-height:calc(100vh - 40px);overflow:auto;                 /* 矮屏（600px 的笔记本横屏）上不至于顶出视口 */
  padding:14px;background:#fff;border:1px solid var(--line);box-shadow:0 18px 40px #06355f2e;
  transform:translateY(-50%)}
.floatbar__panel[hidden]{display:none}
@supports ( (backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px)) ){
  /* 面板里是 12px 的说明文字，白底压到 90% 就到头了；二维码图本身不透明，扫码不受影响 */
  .floatbar__panel{background:#ffffffe6;-webkit-backdrop-filter:blur(18px) saturate(150%);backdrop-filter:blur(18px) saturate(150%);
    border-color:#ffffffb3;box-shadow:0 18px 40px #06355f2e,inset 0 1px 0 #ffffffcc}
}
.floatbar__panel-head{display:flex;gap:14px;align-items:center;justify-content:space-between;
  margin-bottom:12px;color:var(--navy);font-size:13px;font-weight:900;white-space:nowrap}
.floatbar__close{padding:0 2px;border:0;background:none;color:var(--muted);font-size:15px;line-height:1;cursor:pointer}
.floatbar__close:hover{color:var(--navy)}
.floatbar__qrs{display:flex;gap:14px}
.floatbar__qr{width:150px;text-align:center}
.floatbar__qr img{display:block;width:150px;height:150px;border:1px solid var(--line)}
.floatbar__qr-label{display:block;margin-top:8px;color:var(--navy);font-size:12px;font-weight:800}
.floatbar__qr-link{display:block;margin-top:3px;color:var(--muted);font-size:12px}
.floatbar__qr-link:hover{color:var(--blue)}
.floatbar__panel-cta{display:block;margin-top:12px;padding:10px;background:#25d366;color:#fff;
  font-size:12px;font-weight:900;text-align:center;text-transform:uppercase;letter-spacing:.4px}
.floatbar__panel-cta:hover{background:#1fb857;color:#fff}
.floatbar__panel-note{margin-top:10px;color:var(--muted);font-size:12px;text-align:center}

/* 询盘弹窗：复用 .form 的输入框样式，但 .form 自带的 30px 内边距要让位给 modal 自己的 */
.fcform .form{padding:0;background:none}
.fcform .modal-content{border:0;border-radius:0}
.fcform .modal-header,.fcform .modal-footer{border-color:var(--line)}
.fcform .modal-title{color:var(--navy);font-size:21px}
.fcform .hint{color:var(--muted);font-size:13px}
.fcform .consent{display:flex;gap:10px;margin-top:18px;padding:14px;background:var(--soft);
  color:var(--muted);font-size:12.5px}
.fcform .consent input{margin-top:3px;flex-shrink:0}
.fcform .modal-footer{display:flex;gap:14px;flex-wrap:nowrap;align-items:center;justify-content:space-between}
.fcform .formfoot{margin:0;color:var(--muted);font-size:12px}
/* .form .btn 是 width:100%（联系页里表单独占一列），弹窗页脚里按钮该按内容宽 */
.fcform .form .btn{width:auto;margin-top:0;flex-shrink:0}
.fcform textarea.form-control{min-height:110px}

/* ---------- 响应式 ---------- */
@media(max-width:991.98px){
  .solutions{grid-template-columns:repeat(2,1fr)}
  .prodgrid{grid-template-columns:repeat(3,1fr)}
  .trustbar ul{grid-template-columns:repeat(3,1fr)}
  .certs,.projects,.posts{grid-template-columns:repeat(2,1fr)}
  .steps{grid-template-columns:repeat(3,1fr)}
  .navlinks{display:none}
  .navlinks.open{display:block;position:absolute;top:100%;left:0;right:0;background:#fff;border-top:1px solid var(--line);box-shadow:0 18px 34px #06355f26;max-height:calc(100vh - 88px);overflow:auto}
  .navlinks.open>ul{flex-direction:column;gap:0;padding:6px 20px 16px}
  .navlinks.open>ul>li>a{display:block;padding:14px 0;border-bottom:1px solid var(--soft)}
  .navlinks.open>ul>li>a::after{display:none}
  /* 移动端子菜单是嵌在白色菜单面板里静态展开的，磨砂在这里既看不出效果，
     又会白白多出一个层叠上下文和一次模糊合成，直接关掉 */
  .navlinks.open .sub{display:block;position:static;border:0;box-shadow:none;padding:0 0 6px 14px;min-width:0;
                      background:none;-webkit-backdrop-filter:none;backdrop-filter:none}
  .navlinks.open .sub a{padding:8px 0;border-bottom:1px solid var(--soft)}
  .navtoggle{display:block}
  .trustbar li:nth-child(4){border-left:0}
  .hero-facts{grid-template-columns:repeat(2,1fr)}
  .split,.faqwrap,.contactgrid{grid-template-columns:1fr;gap:36px}
  .split .photo{height:320px}
  .clients{grid-template-columns:repeat(4,minmax(0,1fr))}
  .captable{font-size:13px}
  .captable th,.captable td{padding:12px 10px}
}
@media(max-width:767.98px){
  .solutions,.prodgrid,.certs,.projects,.posts,.qc{grid-template-columns:1fr}
  .trustbar ul{grid-template-columns:1fr 1fr}
  .steps{grid-template-columns:1fr 1fr}
  .container{width:calc(100% - 28px)}
  .topbar{display:none}
  .section{padding:58px 0}
  .px-nav{min-height:70px}
  .logo{width:160px}
  .nav-cta{padding:10px 14px;font-size:12px}
  .px-nav .yf-btn{font-size:12px}   /* 语言按钮跟 Get a Quote 一档；其余缩小见上面 ≤1199 那组 */
  .sec-head{display:block}
  .sec-head .btn{margin-top:20px}
  .hero .container{padding-top:64px}
  .hero-facts{margin-top:38px}
  .trustbar li{border-left:0;border-top:1px solid var(--line)}
  .clients{grid-template-columns:repeat(2,minmax(0,1fr))}
  .tablescroll{overflow-x:auto}
  .captable{min-width:640px}
}

/* ============================================================
   以下为内页样式（来源：.temp/*.html 设计稿）
   组织方式：
     1) 跨多个内页定义一致的规则 → 提升为全站共享（无前缀）
     2) 各页专属 / 同名但语义不同的规则 → 作用域到 .pg-<页面名>
   之所以要作用域：设计稿之间存在 85 处同名类冲突 ——
   .cat 在文章页是标签徽章、在产品总览页是卡片容器；
   .layout 在 5 个页面是 5 种不同的网格。直接合并会互相打架。
   视图里给最外层容器加 class="pg-<页面名>" 即可命中。
   ============================================================ */

/* ---------- 内页共享组件（面包屑 / 页头 / 小按钮 / CTA 条等） ---------- */
.block h2{color:var(--navy);font-size:24px}
.block h3{margin-top:26px;color:var(--navy);font-size:17px}
.block p,.block>.rich{margin-top:13px;color:var(--muted);font-size:14.5px;max-width:820px}
/* .rich = 内容来自后台模板参数、允许客户写 HTML 的容器。容器必须是 div —— <p> 里嵌 <p>/<ul>
   浏览器会把标签拆掉。麻烦在于全局 reset 清了 p/ul 的 margin 和项目符号，.block p 又给 p
   补了 13px，客户写的多段落会一会儿贴死一会儿多一截，所以这里统一成「首段贴顶、段间 10px」。
   .block .rich 那一份是为了压过 .block p 的 (0,1,1)，光靠 .rich>* 的 (0,1,0) 顶不过去。 */
.rich>*,.block .rich>*{margin-top:0}
.rich>*+*,.block .rich>*+*{margin-top:10px}
.rich ul{padding-left:18px;list-style:disc}
.btn--sm{padding:11px 17px;font-size:12px}
.btn--wa{background:#25d366;color:#fff}
.btn--wa:hover{background:#1fb857}
.btn--video{border-color:var(--deep);color:var(--deep);background:transparent}
.btn--video:hover{background:var(--deep);color:#fff}
.btn--video i{margin-right:6px;font-size:.85em}
.caps{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.clients .photo{height:74px;background:#ffffff14;border:1px solid #ffffff2e}
.clients .photo::after{background:transparent;color:#fff;font-size:11px;font-weight:800}
.cmp{font-size:13.5px}
.crumbs a:hover{color:var(--blue)}
.crumbs span[aria-current]{color:var(--navy);font-weight:700}
.ctabar{display:flex;align-items:center;justify-content:space-between;gap:30px;flex-wrap:wrap}
.ctabar h2{color:#fff;font-size:clamp(23px,2.6vw,32px)}
.ctabar p{margin-top:8px;color:#ffffffb5;font-size:14.5px}
.factbar{background:#fff;border-top:4px solid var(--orange);box-shadow:0 14px 36px #06355f1c}
.factbar li:first-child{border-left:0}
.factbar span{display:block;margin-top:2px;color:var(--muted);font-size:11px;font-weight:700;letter-spacing:.6px;text-transform:uppercase}
.factbar ul{display:grid;grid-template-columns:repeat(5,1fr)}
.fields b{display:block;color:var(--navy);font-size:10.5px;font-weight:900;letter-spacing:.7px;text-transform:uppercase}
.grouphead span{color:var(--muted);font-size:13px}
.jump a:hover{color:var(--blue);box-shadow:inset 0 -3px 0 var(--orange)}
.needlist b{color:#fff}
/* 同 .hero：设计稿的 z-index:-1 会让背景图被自身渐变盖住，改为 底图→遮罩→内容 三层 */
.pagehero{position:relative;color:#fff}
.pagehero::before{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(92deg,#032b4df2,#06467ecc 60%,#078dc8a1)}
.pagehero .container{position:relative;z-index:2}
.pagehero .eyebrow{color:var(--yellow)}
.pagehero-photo{position:absolute;inset:0;z-index:0;width:100%;height:100%;object-fit:cover}
.related{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.side nav a i{font-style:normal;color:var(--muted);font-weight:400;font-size:12px}
.side nav a:hover{color:var(--blue)}
.side nav a[aria-current]{color:var(--blue);border-left:3px solid var(--orange);padding-left:11px}
.sidecta p{margin-top:8px;color:#ffffffb5;font-size:13px}
.todo b{display:block;color:var(--navy);font-size:15px}
.todo i{font-style:normal;color:var(--orange);font-weight:900}
.todo li{display:flex;gap:10px;padding:7px 0;border-bottom:1px solid #efe0bd;color:#7a6224;font-size:13.5px}
.todobox b{display:block;color:var(--navy);font-size:15px}
.todobox i{font-style:normal;color:var(--orange);font-weight:900}
.todobox li{display:flex;gap:10px;padding:7px 0;border-bottom:1px solid #efe0bd;color:#7a6224;font-size:13.5px}
.todobox ul{margin-top:12px}

/* ---------- 关于我们（about） ---------- */
.pg-about .sec-title{margin:9px 0 0;color:var(--navy);font-size:clamp(25px,3vw,36px);line-height:1.16}
.pg-about .sec-lead{max-width:700px;margin:14px 0 0;color:var(--muted);font-size:15px}
.pg-about .sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:28px;margin-bottom:34px}
.pg-about .section{padding:72px 0}
.pg-about .photo{position:relative;background:repeating-linear-gradient(135deg,#dbe6ee 0 14px,#e8eff5 14px 28px); display:grid;place-items:center;overflow:hidden}
.pg-about .photo::after{content:attr(data-shot);max-width:84%;padding:7px 11px;background:#06355fd9;color:#fff; font-size:11px;font-weight:700;text-align:center;line-height:1.4}
.pg-about .pagehero .container{position:relative;padding:54px 0 46px}
.pg-about .pagehero h1{max-width:840px;margin:14px 0 0;font-size:clamp(28px,3.7vw,44px);line-height:1.13}
.pg-about .pagehero p{max-width:660px;margin:16px 0 0;color:#ffffffd0;font-size:16px}
.pg-about .crumbs{display:flex;gap:9px;flex-wrap:wrap;padding:13px 0;font-size:12.5px;color:var(--muted);border-bottom:1px solid var(--line)}
.pg-about .factbar li{padding:24px 20px;border-left:1px solid var(--line)}
.pg-about .factbar b{display:block;color:var(--deep);font-size:20px}
.pg-about .split{display:grid;grid-template-columns:1fr 1fr;gap:54px;align-items:center}
.pg-about .split p + p{margin-top:14px}
.pg-about .split p{color:var(--muted);font-size:14.5px}
.pg-about .timeline{display:grid;grid-template-columns:repeat(5,1fr);gap:0;margin-top:8px}
.pg-about .ms{position:relative;padding:26px 18px 0;border-top:2px solid #ffffff33}
.pg-about .ms::before{content:"";position:absolute;top:-7px;left:0;width:12px;height:12px;border-radius:50%;background:var(--yellow)}
.pg-about .ms b{display:block;color:var(--yellow);font-size:19px}
.pg-about .ms span{display:block;margin-top:7px;font-size:13.5px;line-height:1.45}
.pg-about .ms.todo b{color:#ffffff70}
.pg-about .ms.todo span{color:#ffffff70;font-style:italic}
.pg-about .cap{padding:24px;background:#fff;border-left:4px solid var(--blue)}
.pg-about .cap b{display:block;color:var(--navy);font-size:15.5px}
.pg-about .cap span{display:block;margin-top:8px;color:var(--muted);font-size:13px}
.pg-about .tech{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.pg-about .techcard{padding:26px;background:#fff;border:1px solid var(--line)}
.pg-about .techcard b{display:block;color:var(--navy);font-size:16.5px}
.pg-about .techcard p{margin-top:10px;color:var(--muted);font-size:13.5px}
.pg-about .certrow{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-top:6px}
.pg-about .certmini{background:#fff;border:1px solid var(--line);transition:.2s}
.pg-about .certmini:hover{border-color:var(--orange);box-shadow:0 12px 26px #06355f14}
.pg-about .certmini .photo{height:190px;background:repeating-linear-gradient(135deg,#eef3f7 0 14px,#f7fafc 14px 28px)}
.pg-about .certmini div{padding:18px}
.pg-about .certmini b{display:block;color:var(--navy);font-size:14.5px}
.pg-about .certmini span{display:block;margin-top:6px;color:var(--muted);font-size:12.5px}
.pg-about .clients{display:grid;grid-template-columns:repeat(8,1fr);gap:14px;margin-top:24px}
.pg-about .team{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:8px}
.pg-about .slot{background:#fff;border:2px dashed #b9cbdb}
.pg-about .slot .photo{height:210px;background:repeating-linear-gradient(135deg,#e6eef5 0 12px,#f1f6fa 12px 24px)}
.pg-about .slot div{padding:22px}
.pg-about .slotnum{display:inline-block;padding:4px 10px;background:#eef4fa;color:var(--blue);font-size:11px;font-weight:900;letter-spacing:.6px;text-transform:uppercase}
.pg-about .fields{margin-top:14px}
.pg-about .fields li{padding:8px 0;border-bottom:1px dashed var(--line)}
.pg-about .fields span{display:block;margin-top:4px;color:#a8b6c2;font-size:12.5px;font-style:italic}
.pg-about .visit{display:grid;grid-template-columns:1.15fr .85fr;gap:44px;align-items:center}
.pg-about .visit .photo{height:340px}
.pg-about .addr li{display:flex;gap:16px;padding:13px 0;border-bottom:1px solid var(--line);font-size:14px}
.pg-about .addr b{min-width:130px;color:var(--navy)}
.pg-about .addr span{color:var(--muted)}
.pg-about .addr a{color:var(--blue);font-weight:700}
.pg-about .todobox{margin-top:28px;padding:24px;background:#fff8e8;border-left:4px solid var(--orange)}

/* ---------- 技术文章详情（blog-article） ---------- */
.pg-blog-article .sec-title{margin:9px 0 0;color:var(--navy);font-size:clamp(23px,2.6vw,32px);line-height:1.18}
.pg-blog-article .sec-lead{max-width:700px;margin:13px 0 0;color:var(--muted);font-size:15px}
.pg-blog-article .section{padding:64px 0}
.pg-blog-article .photo{position:relative;background:repeating-linear-gradient(135deg,#dbe6ee 0 14px,#e8eff5 14px 28px); display:grid;place-items:center;overflow:hidden}
.pg-blog-article .photo::after{content:attr(data-shot);max-width:84%;padding:7px 11px;background:#06355fd9;color:#fff; font-size:11px;font-weight:700;text-align:center;line-height:1.4}
.pg-blog-article .crumbs{display:flex;gap:9px;flex-wrap:wrap;padding:15px 0;font-size:12.5px;color:var(--muted);border-bottom:1px solid var(--line)}
.pg-blog-article .arthead{padding:40px 0 30px;max-width:860px}
.pg-blog-article .cat{display:inline-block;padding:5px 12px;background:var(--soft);border:1px solid var(--line);color:var(--blue);font-size:11px;font-weight:900;letter-spacing:.8px;text-transform:uppercase}
.pg-blog-article .arthead h1{margin-top:15px;color:var(--navy);font-size:clamp(27px,3.5vw,42px);line-height:1.16}
.pg-blog-article .standfirst{margin-top:16px;color:var(--muted);font-size:17px}
.pg-blog-article .artmeta{display:flex;flex-wrap:wrap;gap:20px;margin-top:22px;padding-top:18px;border-top:1px solid var(--line);color:var(--muted);font-size:13px}
.pg-blog-article .artmeta b{color:var(--navy)}
.pg-blog-article .herofig{margin-top:8px}
.pg-blog-article .herofig .photo{height:400px}
.pg-blog-article .herofig figcaption{margin-top:9px;color:var(--muted);font-size:12.5px;font-style:italic}
.pg-blog-article .layout{display:grid;grid-template-columns:250px 1fr;gap:52px;align-items:start;padding:44px 0 68px}
.pg-blog-article .toc{position:sticky;top:110px}
.pg-blog-article .toc h2{padding-bottom:11px;border-bottom:2px solid var(--orange);color:var(--navy);font-size:13px;letter-spacing:.7px;text-transform:uppercase}
.pg-blog-article .toc a{display:block;padding:10px 0;border-bottom:1px solid var(--line);color:var(--muted);font-size:13px;font-weight:700}
.pg-blog-article .toc a:hover{color:var(--blue)}
.pg-blog-article .tocbox{margin-top:22px;padding:22px;background:var(--deep);color:#fff}
.pg-blog-article .tocbox b{display:block;font-size:15px}
.pg-blog-article .tocbox p{margin-top:8px;color:#ffffffb5;font-size:12.5px}
.pg-blog-article .tocbox .btn{margin-top:13px;width:100%;text-align:center}
.pg-blog-article .article{max-width:780px;font-size:16px}
/* scroll-margin-top 原来写死 110px，改吃全局变量（见顶部「锚点落点避开吸顶层」）——
   这条的特异性比 [id] 高，不改的话正文小标题还是按旧数字定位 */
.pg-blog-article .article h2{margin-top:44px;color:var(--navy);font-size:26px;line-height:1.26;scroll-margin-top:var(--anchor-offset)}
.pg-blog-article .article h3{margin-top:28px;color:var(--navy);font-size:19px}
.pg-blog-article .article p{margin-top:16px;color:#38495a}
.pg-blog-article .article a{color:var(--blue);font-weight:700;border-bottom:1px solid #078dc84d}
.pg-blog-article .article a:hover{color:var(--orange);border-bottom-color:var(--orange)}
.pg-blog-article .article ul.bul{margin-top:16px}
.pg-blog-article .article ul.bul li{display:flex;gap:11px;padding:7px 0;color:#38495a}
.pg-blog-article .article ul.bul i{font-style:normal;color:var(--blue);font-weight:900}
.pg-blog-article .article figure{margin:30px 0 0}
.pg-blog-article .article figure .photo{height:320px}
.pg-blog-article .article figcaption{margin-top:9px;color:var(--muted);font-size:12.5px;font-style:italic}
.pg-blog-article .takeaways{margin-top:26px;padding:28px;background:var(--soft);border-left:4px solid var(--orange)}
.pg-blog-article .takeaways b{display:block;color:var(--navy);font-size:15px;letter-spacing:.6px;text-transform:uppercase}
.pg-blog-article .takeaways li{display:flex;gap:12px;padding:9px 0;color:#38495a;font-size:14.5px}
.pg-blog-article .takeaways i{font-style:normal;color:var(--orange);font-weight:900}
.pg-blog-article .takeaways ul{margin-top:12px}
.pg-blog-article .callout{margin-top:26px;padding:24px;background:#eef6fb;border-left:4px solid var(--blue)}
.pg-blog-article .callout b{display:block;color:var(--navy);font-size:15px}
.pg-blog-article .callout p{margin-top:8px;color:#38495a;font-size:14.5px}
.pg-blog-article .tablescroll{overflow-x:auto;margin-top:24px}
.pg-blog-article .tbl{width:100%;border-collapse:collapse;background:#fff;font-size:14px}
.pg-blog-article .tbl caption{padding-bottom:11px;color:var(--muted);font-size:12.5px;text-align:left;font-style:italic}
.pg-blog-article .tbl th,.pg-blog-article .tbl td{padding:13px 15px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.pg-blog-article .tbl thead th{background:var(--deep);color:#fff;font-size:12px;letter-spacing:.6px;text-transform:uppercase;border-bottom:0}
.pg-blog-article .tbl th[scope=row]{color:var(--navy);background:var(--soft);width:190px}
.pg-blog-article .tbl tbody tr:hover td{background:#fcfdfe}
.pg-blog-article .inlinecta{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap; margin-top:34px;padding:26px;background:var(--navy);color:#fff}
.pg-blog-article .inlinecta b{display:block;font-size:17px}
.pg-blog-article .inlinecta p{margin-top:7px;color:#ffffffb5;font-size:13.5px}
.pg-blog-article .faqlist{margin-top:20px;border-top:1px solid var(--line)}
.pg-blog-article .faqlist summary{position:relative;padding:18px 40px 18px 0;font-size:15.5px;font-weight:800;color:var(--navy);cursor:pointer;list-style:none}
.pg-blog-article .faqlist summary::after{content:"+";position:absolute;right:6px;top:14px;color:var(--orange);font-size:23px;font-weight:400}
.pg-blog-article .faqlist p{padding:0 30px 20px 0;color:#38495a;font-size:14.5px}
.pg-blog-article .author{display:flex;gap:20px;align-items:flex-start;margin-top:44px;padding:28px;background:var(--soft)}
.pg-blog-article .author .photo{width:82px;height:82px;flex-shrink:0;border-radius:50%}
.pg-blog-article .author .photo::after{font-size:9px}
.pg-blog-article .author b{display:block;color:var(--navy);font-size:16.5px}
.pg-blog-article .author span{display:block;margin-top:3px;color:var(--blue);font-size:12.5px;font-weight:700}
.pg-blog-article .author p{margin-top:10px;color:var(--muted);font-size:13.5px}
.pg-blog-article .relgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.pg-blog-article .rel{display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);transition:.22s}
.pg-blog-article .rel:hover{border-color:var(--orange);box-shadow:0 12px 28px #06355f16}
.pg-blog-article .rel .photo{height:158px}
.pg-blog-article .rel div{display:flex;flex-direction:column;flex:1;padding:22px}
.pg-blog-article .rel .c{color:var(--orange);font-size:10.5px;font-weight:900;letter-spacing:1px;text-transform:uppercase}
.pg-blog-article .rel b{display:block;margin-top:8px;color:var(--navy);font-size:16px;line-height:1.34}
.pg-blog-article .rel span{display:block;margin-top:8px;color:var(--muted);font-size:13px;flex:1}

/* ---------- 技术文章列表（blog-index） ---------- */
.pg-blog-index .sec-title{margin:9px 0 0;color:var(--navy);font-size:clamp(24px,2.8vw,34px);line-height:1.17}
.pg-blog-index .sec-lead{max-width:700px;margin:13px 0 0;color:var(--muted);font-size:15px}
.pg-blog-index .sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:28px;margin-bottom:32px}
.pg-blog-index .section{padding:68px 0}
.pg-blog-index .photo{position:relative;background:repeating-linear-gradient(135deg,#dbe6ee 0 14px,#e8eff5 14px 28px); display:grid;place-items:center;overflow:hidden}
.pg-blog-index .photo::after{content:attr(data-shot);max-width:84%;padding:7px 11px;background:#06355fd9;color:#fff; font-size:11px;font-weight:700;text-align:center;line-height:1.4}
.pg-blog-index .pagehero .container{position:relative;padding:52px 0 44px}
.pg-blog-index .pagehero h1{max-width:820px;margin:14px 0 0;font-size:clamp(27px,3.5vw,42px);line-height:1.14}
.pg-blog-index .pagehero p{max-width:660px;margin:15px 0 0;color:#ffffffd0;font-size:16px}
.pg-blog-index .crumbs{display:flex;gap:9px;flex-wrap:wrap;padding:13px 0;font-size:12.5px;color:var(--muted)}
.pg-blog-index .cat{color:var(--orange);font-size:10.5px;font-weight:900;letter-spacing:1px;text-transform:uppercase}
.pg-blog-index .resnav{border-top:1px solid var(--line);border-bottom:1px solid var(--line);box-shadow:0 4px 14px #12304b0a}
.pg-blog-index .resnav .container{display:grid;grid-template-columns:1fr 1fr}
.pg-blog-index .resnav a{display:grid;place-items:center;min-height:68px;border-left:1px solid var(--line);font-size:13px;font-weight:800;letter-spacing:.5px;text-transform:uppercase}
.pg-blog-index .resnav a:first-child{border-left:0}
.pg-blog-index .resnav a:hover{color:var(--blue)}
.pg-blog-index .resnav a[aria-current]{color:var(--blue);box-shadow:inset 0 -4px 0 var(--orange)}
.pg-blog-index .featured{display:grid;grid-template-columns:1.15fr .85fr;gap:0;background:#fff;border:1px solid var(--line);transition:.22s}
.pg-blog-index .featured:hover{border-color:var(--orange);box-shadow:0 16px 36px #06355f18}
.pg-blog-index .featured .photo{min-height:330px}
.pg-blog-index .featbody{display:flex;flex-direction:column;justify-content:center;padding:40px}
.pg-blog-index .badge{display:inline-block;align-self:flex-start;padding:5px 12px;background:var(--orange);color:#fff;font-size:11px;font-weight:900;letter-spacing:.7px;text-transform:uppercase}
.pg-blog-index .featbody h2{margin-top:15px;color:var(--navy);font-size:clamp(21px,2.4vw,29px);line-height:1.26}
.pg-blog-index .featbody p{margin-top:13px;color:var(--muted);font-size:14.5px}
.pg-blog-index .meta{display:flex;flex-wrap:wrap;gap:16px;margin-top:18px;color:var(--muted);font-size:12.5px}
.pg-blog-index .meta b{color:var(--navy);font-weight:700}
.pg-blog-index .readmore{margin-top:20px;color:var(--blue);font-size:12.5px;font-weight:900;text-transform:uppercase}
.pg-blog-index .readmore::after{content:" →"}
.pg-blog-index .filters{display:flex;flex-wrap:wrap;gap:9px;margin-bottom:28px}
.pg-blog-index .filters a{padding:10px 16px;border:1px solid var(--line);background:#fff;color:var(--navy);font-size:12.5px;font-weight:800;transition:.2s}
.pg-blog-index .filters a:hover{border-color:var(--blue);color:var(--blue)}
.pg-blog-index .filters a[aria-current]{background:var(--deep);border-color:var(--deep);color:#fff}
.pg-blog-index .filters a i{font-style:normal;opacity:.6;font-weight:400}
.pg-blog-index .posts{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.pg-blog-index .post{display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);transition:.22s}
.pg-blog-index .post:hover{border-color:var(--orange);box-shadow:0 14px 30px #06355f16;transform:translateY(-4px)}
.pg-blog-index .postbody{display:flex;flex-direction:column;flex:1;padding:24px}
.pg-blog-index .post h3{margin-top:9px;color:var(--navy);font-size:17px;line-height:1.34}
.pg-blog-index .post p{margin-top:10px;color:var(--muted);font-size:13.5px;flex:1}
.pg-blog-index .post .meta{margin-top:15px;padding-top:13px;border-top:1px solid var(--line);gap:14px;font-size:12px}
.pg-blog-index .pager{display:flex;justify-content:center;align-items:center;gap:8px;margin-top:46px}
.pg-blog-index .pager a,.pg-blog-index .pager span{display:grid;place-items:center;min-width:42px;height:42px;padding:0 12px;border:1px solid var(--line);background:#fff;font-size:13px;font-weight:800}
.pg-blog-index .pager a:hover{border-color:var(--orange);color:var(--orange)}
.pg-blog-index .pager [aria-current]{background:var(--deep);border-color:var(--deep);color:#fff}
.pg-blog-index .pager .dots{border:0;background:transparent;color:var(--muted)}
.pg-blog-index .subgrid{display:grid;grid-template-columns:1fr 1fr;gap:34px;align-items:center}
.pg-blog-index .subform{display:flex;gap:10px;margin-top:20px;flex-wrap:wrap}
.pg-blog-index .subform input{flex:1;min-width:220px;padding:14px;border:1px solid var(--line);background:#fff;font:inherit;font-size:14px}
.pg-blog-index .subform input:focus{border-color:var(--blue);outline:none}
.pg-blog-index .subnote{margin-top:11px;color:#ffffff9e;font-size:12px}

/* ---------- 产品分类页（category-water-treatment） ---------- */
.pg-category-water-treatment .sec-title{margin:9px 0 0;color:var(--navy);font-size:clamp(25px,3vw,36px);line-height:1.16}
.pg-category-water-treatment .sec-lead{max-width:680px;margin:14px 0 0;color:var(--muted);font-size:15px}
.pg-category-water-treatment .sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:28px;margin-bottom:34px}
.pg-category-water-treatment .section{padding:72px 0}
.pg-category-water-treatment .photo{position:relative;background:repeating-linear-gradient(135deg,#dbe6ee 0 14px,#e8eff5 14px 28px); display:grid;place-items:center;overflow:hidden}
.pg-category-water-treatment .photo::after{content:attr(data-shot);max-width:84%;padding:7px 11px;background:#06355fd9;color:#fff; font-size:11px;font-weight:700;text-align:center;line-height:1.4}
.pg-category-water-treatment .pagehero .container{position:relative;padding:52px 0 44px}
.pg-category-water-treatment .pagehero h1{max-width:800px;margin:14px 0 0;font-size:clamp(27px,3.6vw,42px);line-height:1.13}
.pg-category-water-treatment .pagehero p{max-width:640px;margin:16px 0 0;color:#ffffffd0;font-size:16px}
.pg-category-water-treatment .crumbs{display:flex;gap:9px;flex-wrap:wrap;padding:13px 0;font-size:12.5px;color:var(--muted);border-bottom:1px solid var(--line)}
.pg-category-water-treatment .layout{display:grid;grid-template-columns:270px 1fr;gap:44px;align-items:start;padding:56px 0 76px}
.pg-category-water-treatment .tablescroll{overflow-x:auto}
.pg-category-water-treatment .faqlist summary{position:relative;padding:19px 40px 19px 0;font-size:15.5px;font-weight:800;color:var(--navy);cursor:pointer;list-style:none}
.pg-category-water-treatment .faqlist summary::after{content:"+";position:absolute;right:6px;top:15px;color:var(--orange);font-size:24px;font-weight:400}
.pg-category-water-treatment .faqlist p{padding:0 30px 21px 0;color:var(--muted);font-size:14px}
.pg-category-water-treatment .rel{padding:24px;background:#fff;border:1px solid var(--line);transition:.22s}
.pg-category-water-treatment .rel:hover{border-color:var(--blue);box-shadow:0 12px 26px #06355f14}
.pg-category-water-treatment .rel b{display:block;color:var(--navy);font-size:16px}
.pg-category-water-treatment .rel span{display:block;margin-top:8px;color:var(--muted);font-size:13px}
.pg-category-water-treatment .side{position:sticky;top:104px}
.pg-category-water-treatment .side h2{padding-bottom:12px;border-bottom:2px solid var(--orange);color:var(--navy);font-size:15px;letter-spacing:.6px;text-transform:uppercase}
.pg-category-water-treatment .side nav{margin-top:6px}
.pg-category-water-treatment .side nav a{display:flex;justify-content:space-between;gap:10px;padding:12px 4px;border-bottom:1px solid var(--line);font-size:13.5px;font-weight:700;color:var(--ink)}
.pg-category-water-treatment .sidecta{margin-top:26px;padding:22px;background:var(--deep);color:#fff}
.pg-category-water-treatment .sidecta b{display:block;font-size:16px}
.pg-category-water-treatment .sidecta .btn{margin-top:14px;width:100%;text-align:center}
.pg-category-water-treatment .catintro h2{color:var(--navy);font-size:24px}
.pg-category-water-treatment .catintro p{margin-top:12px;color:var(--muted);font-size:14.5px;max-width:760px}
.pg-category-water-treatment .stage{display:flex;flex-wrap:wrap;gap:8px;margin-top:20px}
.pg-category-water-treatment .stage span{padding:7px 13px;background:var(--soft);border:1px solid var(--line);color:var(--navy);font-size:12px;font-weight:700}
.pg-category-water-treatment .stage span.on{background:var(--deep);border-color:var(--deep);color:#fff}
.pg-category-water-treatment .listhead{display:flex;align-items:baseline;justify-content:space-between;gap:18px;margin:38px 0 18px;padding-bottom:12px;border-bottom:1px solid var(--line)}
.pg-category-water-treatment .listhead h2{color:var(--navy);font-size:21px}
.pg-category-water-treatment .listhead span{color:var(--muted);font-size:13px}
.pg-category-water-treatment .machines{display:grid;gap:18px}
.pg-category-water-treatment .machine{display:grid;grid-template-columns:230px 1fr;gap:24px;padding:20px;background:#fff;border:1px solid var(--line);transition:.2s}
.pg-category-water-treatment .machine:hover{border-color:var(--orange);box-shadow:0 12px 28px #06355f14}
.pg-category-water-treatment .machine .photo{height:168px}
.pg-category-water-treatment .machine h3{color:var(--navy);font-size:18px;line-height:1.3}
.pg-category-water-treatment .machine h3 a:hover{color:var(--blue)}
.pg-category-water-treatment .machine p{margin-top:9px;color:var(--muted);font-size:13.5px}
.pg-category-water-treatment .mspecs{display:flex;flex-wrap:wrap;gap:7px;margin-top:13px}
.pg-category-water-treatment .mspecs b{padding:5px 10px;background:var(--soft);border:1px solid var(--line);color:var(--navy);font-size:11.5px;font-weight:700}
.pg-category-water-treatment .mact{display:flex;flex-wrap:wrap;gap:10px;margin-top:15px}
.pg-category-water-treatment .guide{display:grid;grid-template-columns:repeat(2,1fr);gap:22px}
.pg-category-water-treatment .gcard{padding:26px;background:#fff;border-left:4px solid var(--blue)}
.pg-category-water-treatment .gcard b{display:block;color:var(--navy);font-size:16.5px}
.pg-category-water-treatment .gcard p{margin-top:10px;color:var(--muted);font-size:14px}
.pg-category-water-treatment .cmp>:not(caption)>*>*{padding:13px 14px}
.pg-category-water-treatment .cmp th[scope=row] a{color:var(--navy);font-weight:800}
.pg-category-water-treatment .cmp th[scope=row] a:hover{color:var(--blue)}
.pg-category-water-treatment .faqwrap{display:grid;grid-template-columns:.8fr 1.2fr;gap:58px;align-items:start}

/* ---------- 资质证书（certifications） ---------- */
.pg-certifications .sec-title{margin:9px 0 0;color:var(--navy);font-size:clamp(24px,2.9vw,34px);line-height:1.17}
.pg-certifications .sec-lead{max-width:720px;margin:14px 0 0;color:var(--muted);font-size:15px}
.pg-certifications .sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:28px;margin-bottom:32px}
.pg-certifications .section{padding:68px 0}
.pg-certifications .photo{position:relative;background:repeating-linear-gradient(135deg,#dbe6ee 0 14px,#e8eff5 14px 28px); display:grid;place-items:center;overflow:hidden}
.pg-certifications .photo::after{content:attr(data-shot);max-width:84%;padding:7px 11px;background:#06355fd9;color:#fff; font-size:11px;font-weight:700;text-align:center;line-height:1.4}
.pg-certifications .pagehero .container{position:relative;padding:52px 0 44px}
.pg-certifications .pagehero h1{max-width:840px;margin:14px 0 0;font-size:clamp(27px,3.6vw,42px);line-height:1.14}
.pg-certifications .pagehero p{max-width:660px;margin:15px 0 0;color:#ffffffd0;font-size:16px}
.pg-certifications .crumbs{display:flex;gap:9px;flex-wrap:wrap;padding:13px 0;font-size:12.5px;color:var(--muted);border-bottom:1px solid var(--line)}
.pg-certifications .slotnum{align-self:flex-start;padding:4px 10px;background:#eef4fa;color:var(--blue);font-size:11px;font-weight:900;letter-spacing:.6px;text-transform:uppercase}
.pg-certifications .fields{margin-top:14px}
.pg-certifications .fields li{padding:9px 0;border-bottom:1px dashed var(--line)}
.pg-certifications .fields span{display:block;margin-top:5px;color:#a8b6c2;font-size:13px;font-style:italic}
.pg-certifications .todobox{margin-top:34px;padding:24px;background:#fff8e8;border-left:4px solid var(--orange)}
.pg-certifications .tablescroll{overflow-x:auto;margin-top:8px}
.pg-certifications .jump{background:#fff;border-bottom:1px solid var(--line);box-shadow:0 4px 14px #06355f0d}
.pg-certifications .jump .container{display:flex;overflow-x:auto}
.pg-certifications .jump a{flex:1;min-width:150px;padding:18px 14px;border-left:1px solid var(--line);text-align:center;font-size:12.5px;font-weight:800;white-space:nowrap}
.pg-certifications .jump a:first-child{border-left:0}
.pg-certifications .jump a i{display:block;margin-bottom:4px;color:var(--orange);font-style:normal;font-size:11px;font-weight:900}
.pg-certifications .why{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:6px}
.pg-certifications .whycard{padding:24px;background:#fff;border-left:4px solid var(--blue)}
.pg-certifications .whycard b{display:block;color:var(--navy);font-size:15.5px}
.pg-certifications .whycard p{margin-top:9px;color:var(--muted);font-size:13.5px}
.pg-certifications .group + .group{margin-top:52px}
.pg-certifications .grouphead{display:flex;align-items:baseline;gap:16px;margin-bottom:24px;padding-bottom:12px;border-bottom:2px solid var(--orange)}
.pg-certifications .grouphead h2{color:var(--navy);font-size:21px}
.pg-certifications .certs{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.pg-certifications .cert{display:flex;flex-direction:column;background:#fff;border:2px dashed #b9cbdb}
.pg-certifications .cert .photo{height:280px;background:repeating-linear-gradient(135deg,#eef3f7 0 12px,#f7fafc 12px 24px)}
.pg-certifications .certbody{display:flex;flex-direction:column;flex:1;padding:22px}
.pg-certifications .pat{font-size:13.5px}
.pg-certifications .pat>caption{padding-bottom:12px}
.pg-certifications .pat>:not(caption)>*>*{padding:13px 15px}
.pg-certifications .pat th[scope=row]{--bs-table-bg:var(--soft);color:var(--navy);width:60px}
.pg-certifications .pat td.empty{color:#a8b6c2;font-style:italic}

/* 窄屏（≤575.98px，Bootstrap sm 断点）下专利表卡片化：
   5 列横滚体验差，转成每行一张卡，单元格「字段名: 值」竖排。
   字段名来自视图里每格的 data-label（与表头同一句翻译，互不漂移）。
   表头整行隐藏；序号列保留（No. 01），方便口语指代某条专利。 */
@media(max-width:575.98px){
  /* 991.98px 断点里 .pat{min-width:640px}（给横滚用）声明在后、会压掉卡片化，
     这里用更高特异性强制归零，别只写 .pat */
  .pg-certifications .tablescroll .pat{min-width:0;width:100%}
  .pg-certifications .tablescroll{overflow:visible;margin-top:4px}
  .pg-certifications .pat,.pg-certifications .pat>tbody,.pg-certifications .pat>tbody>tr{display:block}
  .pg-certifications .pat>thead{display:none}
  /* caption 保持 table-caption 时,表格转 block 后它塌缩成内容最小宽度(实测 61px),
     长表注被挤成一条竖行。必须显式转 block 并占满表格宽 */
  .pg-certifications .pat>caption{display:block;width:100%;padding:0 2px 10px}
  .pg-certifications .pat>tbody>tr{
    margin-bottom:12px;padding:6px 14px 10px;
    background:#fff;border:1px solid var(--line);border-left:4px solid var(--orange);
  }
  .pg-certifications .pat>tbody>tr>th,.pg-certifications .pat>tbody>tr>td{
    display:flex;justify-content:space-between;align-items:baseline;gap:16px;
    padding:8px 0;border:0;background:transparent;text-align:left;width:auto;
  }
  .pg-certifications .pat>tbody>tr>th::before,.pg-certifications .pat>tbody>tr>td::before{
    content:attr(data-label);flex-shrink:0;color:var(--muted);
    font-size:11.5px;font-weight:800;letter-spacing:.4px;text-transform:uppercase;
  }
  .pg-certifications .pat>tbody>tr>th::after{content:""}   /* 清掉 Bootstrap 表格的伪元素干扰 */
  .pg-certifications .pat>tbody>tr>td:last-child{padding-bottom:12px}
}
.pg-certifications .verify{display:grid;grid-template-columns:repeat(2,1fr);gap:22px;margin-top:6px}
.pg-certifications .vcard{padding:26px;background:#ffffff12;border:1px solid #ffffff2b}
.pg-certifications .vcard b{display:block;font-size:16px}
.pg-certifications .vcard p{margin-top:9px;color:#ffffffab;font-size:13.5px}
.pg-certifications .docs{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:20px; color:#0a8a4d;}
.pg-certifications .docs li{display:flex;gap:11px;padding:12px 15px;background:#fff;border:1px solid var(--line);font-size:13.5px}
.pg-certifications .docs i{font-style:normal;color:#0a8a4d;font-weight:900}
.pg-certifications .todobox p{margin-top:8px;color:#7a6224;font-size:13.5px}

/* ---------- 联系我们（contact） ---------- */
.pg-contact .sec-title{margin:9px 0 0;color:var(--navy);font-size:clamp(24px,2.8vw,34px);line-height:1.17}
.pg-contact .sec-lead{max-width:700px;margin:13px 0 0;color:var(--muted);font-size:15px}
.pg-contact .sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:28px;margin-bottom:32px}
.pg-contact .section{padding:68px 0}
.pg-contact .photo{position:relative;background:repeating-linear-gradient(135deg,#dbe6ee 0 14px,#e8eff5 14px 28px); display:grid;place-items:center;overflow:hidden}
.pg-contact .photo::after{content:attr(data-shot);max-width:84%;padding:7px 11px;background:#06355fd9;color:#fff; font-size:11px;font-weight:700;text-align:center;line-height:1.4}
.pg-contact .pagehero .container{position:relative;padding:52px 0 44px}
.pg-contact .pagehero h1{max-width:820px;margin:14px 0 0;font-size:clamp(27px,3.5vw,42px);line-height:1.14}
.pg-contact .pagehero p{max-width:640px;margin:15px 0 0;color:#ffffffd0;font-size:16px}
.pg-contact .crumbs{display:flex;gap:9px;flex-wrap:wrap;padding:13px 0;font-size:12.5px;color:var(--muted);border-bottom:1px solid var(--line)}
.pg-contact .layout{display:grid;grid-template-columns:1.15fr .85fr;gap:52px;align-items:start;padding:56px 0 68px}
.pg-contact .faqlist{margin-top:22px;border-top:1px solid var(--line)}
.pg-contact .faqlist summary{position:relative;padding:18px 40px 18px 0;font-size:15px;font-weight:800;color:var(--navy);cursor:pointer;list-style:none}
.pg-contact .faqlist summary::after{content:"+";position:absolute;right:6px;top:14px;color:var(--orange);font-size:23px;font-weight:400}
.pg-contact .faqlist p{padding:0 30px 20px 0;color:var(--muted);font-size:14px}
.pg-contact .channels{background:#fff;border-top:4px solid var(--orange);box-shadow:0 14px 36px #06355f1c}
.pg-contact .channels ul{display:grid;grid-template-columns:repeat(4,1fr)}
.pg-contact .channels li{border-left:1px solid var(--line)}
.pg-contact .channels li:first-child{border-left:0}
.pg-contact .channels a,.pg-contact .channels div{display:block;padding:22px 20px;transition:.2s}
.pg-contact .channels a:hover{background:var(--soft)}
.pg-contact .channels b{display:block;color:var(--muted);font-size:11px;font-weight:900;letter-spacing:.7px;text-transform:uppercase}
.pg-contact .channels strong{display:block;margin-top:6px;color:var(--deep);font-size:15.5px}
.pg-contact .channels span{display:block;margin-top:3px;color:var(--muted);font-size:12.5px}
.pg-contact .form{padding:32px;background:#fff;border:1px solid var(--line);box-shadow:0 14px 34px #06355f0f}
.pg-contact .form h2{color:var(--navy);font-size:23px}
.pg-contact .form .hint{margin-top:9px;color:var(--muted);font-size:13.5px}
.pg-contact .field textarea{height:118px;resize:vertical}
.pg-contact .field .note{margin-top:5px;color:var(--muted);font-size:11.5px}
.pg-contact .consent{display:flex;gap:10px;margin-top:18px;padding:14px;background:var(--soft);color:var(--muted);font-size:12.5px}
.pg-contact .consent input{margin-top:3px;flex-shrink:0}
.pg-contact .formfoot{margin-top:14px;color:var(--muted);font-size:12px;text-align:center}
.pg-contact .side > * + *{margin-top:20px}
.pg-contact .card{padding:26px;background:#fff;border:1px solid var(--line)}
.pg-contact .card--dark{background:var(--deep);color:#fff;border-color:var(--deep)}
.pg-contact .card h2{color:var(--navy);font-size:17px;letter-spacing:.4px;text-transform:uppercase}
.pg-contact .card--dark h2{color:#fff}
.pg-contact .card li{padding:12px 0;border-bottom:1px solid var(--line);font-size:13.5px}
.pg-contact .card--dark li{border-bottom-color:#ffffff2b}
.pg-contact .card li:last-child{border-bottom:0}
.pg-contact .card li b{display:block;color:var(--navy);font-size:10.5px;font-weight:900;letter-spacing:.7px;text-transform:uppercase}
.pg-contact .card--dark li b{color:var(--yellow)}
.pg-contact .card li span{display:block;margin-top:4px;color:var(--muted)}
.pg-contact .card--dark li span{color:#ffffffcc}
.pg-contact .card li a:hover{color:var(--blue)}
.pg-contact .card--dark li a:hover{color:var(--yellow)}
.pg-contact .card p{margin-top:10px;color:var(--muted);font-size:13.5px}
.pg-contact .card--dark p{color:#ffffffb5}
.pg-contact .card .btn{margin-top:16px;width:100%;text-align:center}
.pg-contact .person{display:flex;gap:16px;align-items:center;margin-top:16px}
.pg-contact .person .photo{width:72px;height:72px;flex-shrink:0;border-radius:50%}
.pg-contact .person .photo::after{font-size:9px}
.pg-contact .person b{display:block;color:var(--navy);font-size:15.5px}
.pg-contact .person span{display:block;margin-top:2px;color:var(--muted);font-size:12.5px}
.pg-contact .needgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.pg-contact .need{padding:24px;background:#fff;border-left:4px solid var(--blue)}
.pg-contact .need b{display:block;color:var(--navy);font-size:15.5px}
.pg-contact .need p{margin-top:9px;color:var(--muted);font-size:13.5px}
.pg-contact .mapsplit{display:grid;grid-template-columns:1.25fr .75fr;gap:34px;align-items:stretch}
.pg-contact .mapsplit .photo{min-height:400px}
.pg-contact .visit li{display:flex;gap:14px;padding:13px 0;border-bottom:1px solid var(--line);font-size:13.5px}
.pg-contact .visit b{min-width:130px;color:var(--navy)}
.pg-contact .visit span{color:var(--muted)}

/* ---------- 产品详情（product-ro-system） ---------- */
.pg-product-ro-system .sec-title{margin:9px 0 0;color:var(--navy);font-size:clamp(23px,2.7vw,32px);line-height:1.18}
.pg-product-ro-system .sec-lead{max-width:700px;margin:13px 0 0;color:var(--muted);font-size:14.5px}
.pg-product-ro-system .section{padding:64px 0}
.pg-product-ro-system .photo{position:relative;background:repeating-linear-gradient(135deg,#dbe6ee 0 14px,#e8eff5 14px 28px); display:grid;place-items:center;overflow:hidden}
.pg-product-ro-system .photo::after{content:attr(data-shot);max-width:84%;padding:7px 11px;background:#06355fd9;color:#fff; font-size:11px;font-weight:700;text-align:center;line-height:1.4}
.pg-product-ro-system .crumbs{display:flex;gap:9px;flex-wrap:wrap;padding:15px 0;font-size:12.5px;color:var(--muted);border-bottom:1px solid var(--line)}
.pg-product-ro-system .layout{display:grid;grid-template-columns:1fr 280px;gap:48px;align-items:start;padding:30px 0 70px}
.pg-product-ro-system .tablescroll{overflow-x:auto;margin-top:20px}
.pg-product-ro-system .faqlist{margin-top:18px;border-top:1px solid var(--line)}
.pg-product-ro-system .faqlist summary{position:relative;padding:18px 40px 18px 0;font-size:15px;font-weight:800;color:var(--navy);cursor:pointer;list-style:none}
.pg-product-ro-system .faqlist summary::after{content:"+";position:absolute;right:6px;top:14px;color:var(--orange);font-size:23px;font-weight:400}
.pg-product-ro-system .faqlist p{padding:0 30px 20px 0;font-size:14px}
.pg-product-ro-system .relgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.pg-product-ro-system .rel{background:#fff;border:1px solid var(--line);transition:.22s}
.pg-product-ro-system .rel:hover{border-color:var(--orange);box-shadow:0 12px 26px #06355f14}
.pg-product-ro-system .rel .photo{height:150px}
.pg-product-ro-system .rel div{padding:18px}
.pg-product-ro-system .rel b{display:block;color:var(--navy);font-size:15px;line-height:1.3}
.pg-product-ro-system .rel span{display:block;margin-top:7px;color:var(--muted);font-size:12.5px}
.pg-product-ro-system .side{position:sticky;top:150px}
.pg-product-ro-system .side h2{padding-bottom:11px;border-bottom:2px solid var(--orange);color:var(--navy);font-size:14px;letter-spacing:.6px;text-transform:uppercase}
.pg-product-ro-system .side nav a{display:flex;justify-content:space-between;gap:10px;padding:11px 4px;border-bottom:1px solid var(--line);font-size:13px;font-weight:700}
.pg-product-ro-system .sidecta{margin-top:24px;padding:22px;background:var(--deep);color:#fff}
.pg-product-ro-system .sidecta b{display:block;font-size:15.5px}
.pg-product-ro-system .sidecta .btn{margin-top:13px;width:100%;text-align:center}
.pg-product-ro-system .jump{position:sticky;top:88px;z-index:30;background:#fff;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.pg-product-ro-system .jump .container{display:flex;gap:28px;overflow-x:auto;font-size:13px;font-weight:800;text-transform:uppercase}
.pg-product-ro-system .jump a{padding:16px 0;white-space:nowrap}
.pg-product-ro-system .field textarea{height:100px;resize:vertical}
.pg-product-ro-system .top{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:start;padding:44px 0 8px}
.pg-product-ro-system .gallery .photo{height:400px}
.pg-product-ro-system .thumbs{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:10px}
.pg-product-ro-system .thumbs .photo{height:78px}
.pg-product-ro-system .thumbs img[data-full]{cursor:pointer;outline:2px solid transparent;outline-offset:-2px;transition:outline-color .15s,opacity .15s}
.pg-product-ro-system .thumbs img[data-full]:hover{opacity:.9}
.pg-product-ro-system .thumbs img[data-full][aria-current]{outline-color:var(--orange)}
.pg-product-ro-system .galnote{margin-top:20px;color:var(--muted);font-size:14px}
.pg-product-ro-system .summary h1{margin-top:10px;color:var(--navy);font-size:clamp(25px,3vw,35px);line-height:1.18}
.pg-product-ro-system .summary .intro{margin-top:14px;color:var(--muted);font-size:14.5px}
.pg-product-ro-system .keyspecs{margin-top:22px;border-top:1px solid var(--line)}
.pg-product-ro-system .keyspecs li{display:flex;gap:16px;padding:11px 0;border-bottom:1px solid var(--line);font-size:14px}
.pg-product-ro-system .keyspecs b{min-width:160px;color:var(--navy)}
.pg-product-ro-system .keyspecs span{color:var(--muted)}
.pg-product-ro-system .acts{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}
.pg-product-ro-system .assure{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}
.pg-product-ro-system .assure span{padding:6px 11px;background:var(--soft);border:1px solid var(--line);color:var(--navy);font-size:11.5px;font-weight:700}
.pg-product-ro-system .block{padding-top:8px}
.pg-product-ro-system .block + .block{margin-top:50px;padding-top:44px;border-top:1px solid var(--line)}
.pg-product-ro-system .spec>caption{padding-bottom:12px}
.pg-product-ro-system .spec>:not(caption)>*>*{padding:13px 15px}
.pg-product-ro-system .spec th[scope=row]{--bs-table-bg:var(--soft);width:230px;color:var(--navy)}
.pg-product-ro-system .spec{--bs-table-hover-bg:#fcfdfe}
.pg-product-ro-system .opts{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:22px}
.pg-product-ro-system .opt{padding:22px;background:var(--soft);border-left:4px solid var(--blue)}
.pg-product-ro-system .opt b{display:block;color:var(--navy);font-size:15.5px}
.pg-product-ro-system .opt p{margin-top:8px;color:var(--muted);font-size:13.5px}
.pg-product-ro-system .scope{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:20px}
.pg-product-ro-system .scope li{display:flex;gap:11px;padding:12px 15px;background:#fff;border:1px solid var(--line);font-size:13.5px}
.pg-product-ro-system .scope i{font-style:normal;color:#0a8a4d;font-weight:900}
.pg-product-ro-system .utils li{display:flex;gap:16px;padding:12px 0;border-bottom:1px solid var(--line);font-size:14px}
.pg-product-ro-system .utils b{min-width:190px;color:var(--navy)}
.pg-product-ro-system .utils span{color:var(--muted)}
.pg-product-ro-system .contactgrid{display:grid;grid-template-columns:1fr 1.05fr;gap:52px;align-items:start}
.pg-product-ro-system .lines{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:8px}
.pg-product-ro-system .line-card{padding:22px;background:#ffffff12;border:1px solid #ffffff2b}
.pg-product-ro-system .line-card b{display:block;font-size:16px}
.pg-product-ro-system .line-card span{display:block;margin-top:7px;color:#ffffffab;font-size:13px}

/* ---------- 产品总览（products-index） ---------- */
.pg-products-index .sec-title{margin:9px 0 0;color:var(--navy);font-size:clamp(25px,3vw,36px);line-height:1.16}
.pg-products-index .sec-lead{max-width:700px;margin:14px 0 0;color:var(--muted);font-size:15px}
.pg-products-index .sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:28px;margin-bottom:34px}
.pg-products-index .section{padding:72px 0}
.pg-products-index .photo{position:relative;background:repeating-linear-gradient(135deg,#dbe6ee 0 14px,#e8eff5 14px 28px); display:grid;place-items:center;overflow:hidden}
.pg-products-index .photo::after{content:attr(data-shot);max-width:84%;padding:7px 11px;background:#06355fd9;color:#fff; font-size:11px;font-weight:700;text-align:center;line-height:1.4}
.pg-products-index .pagehero .container{position:relative;padding:54px 0 46px}
.pg-products-index .pagehero h1{max-width:820px;margin:14px 0 0;font-size:clamp(28px,3.8vw,44px);line-height:1.13}
.pg-products-index .pagehero p{max-width:660px;margin:16px 0 0;color:#ffffffd0;font-size:16px}
.pg-products-index .crumbs{display:flex;gap:9px;flex-wrap:wrap;padding:13px 0;font-size:12.5px;color:var(--muted);border-bottom:1px solid var(--line)}
.pg-products-index .cat{display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);transition:.22s}
.pg-products-index .faqlist summary{position:relative;padding:19px 40px 19px 0;font-size:15.5px;font-weight:800;color:var(--navy);cursor:pointer;list-style:none}
.pg-products-index .faqlist summary::after{content:"+";position:absolute;right:6px;top:15px;color:var(--orange);font-size:24px;font-weight:400}
.pg-products-index .faqlist p{padding:0 30px 21px 0;color:var(--muted);font-size:14px}
.pg-products-index .machines{display:flex;flex-wrap:wrap;gap:6px;margin-top:13px}
.pg-products-index .faqwrap{display:grid;grid-template-columns:.8fr 1.2fr;gap:58px;align-items:start}
.pg-products-index .group + .group{margin-top:56px}
.pg-products-index .grouphead{display:flex;align-items:baseline;gap:16px;margin:0 0 24px;padding-bottom:12px;border-bottom:2px solid var(--orange)}
.pg-products-index .grouphead h2{color:var(--navy);font-size:22px}
.pg-products-index .processbar{background:#fff;border-bottom:1px solid var(--line);box-shadow:0 4px 14px #06355f0d}
.pg-products-index .processbar .container{display:flex;gap:0;overflow-x:auto}
.pg-products-index .processbar a{flex:1;min-width:118px;padding:18px 12px;border-left:1px solid var(--line);text-align:center;font-size:12.5px;font-weight:800;white-space:nowrap}
.pg-products-index .processbar a:first-child{border-left:0}
.pg-products-index .processbar a:hover{color:var(--blue);box-shadow:inset 0 -3px 0 var(--orange)}
.pg-products-index .processbar a i{display:block;margin-bottom:4px;color:var(--orange);font-style:normal;font-size:11px;font-weight:900}
.pg-products-index .cats{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.pg-products-index .cat:hover{border-color:var(--orange);box-shadow:0 14px 30px #06355f16;transform:translateY(-4px)}
.pg-products-index .cat .photo{height:172px}
.pg-products-index .catbody{display:flex;flex-direction:column;flex:1;padding:22px}
.pg-products-index .cat h3{color:var(--navy);font-size:18px;line-height:1.3}
.pg-products-index .cat p{margin-top:9px;color:var(--muted);font-size:13.5px;flex:1}
.pg-products-index .machines b{padding:5px 9px;background:var(--soft);border:1px solid var(--line);color:var(--navy);font-size:11px;font-weight:700}
.pg-products-index .catfoot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:15px;padding-top:13px;border-top:1px dashed var(--line)}
.pg-products-index .catfoot em{color:var(--muted);font-style:normal;font-size:12px;font-weight:700}
.pg-products-index .catfoot span{color:var(--blue);font-size:12px;font-weight:900;text-transform:uppercase}
.pg-products-index .catfoot span::after{content:" →"}
.pg-products-index .bylines{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.pg-products-index .byline{padding:24px;background:#ffffff12;border:1px solid #ffffff2b;transition:.2s}
.pg-products-index .byline:hover{background:#ffffff1f}
.pg-products-index .byline b{display:block;font-size:16px}
.pg-products-index .byline span{display:block;margin-top:8px;color:#ffffffab;font-size:13px}
.pg-products-index .promise{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
.pg-products-index .pr{padding:24px;background:#fff;border-left:4px solid var(--blue)}
.pg-products-index .pr b{display:block;color:var(--navy);font-size:15.5px}
.pg-products-index .pr span{display:block;margin-top:8px;color:var(--muted);font-size:13px}

/* ---------- 案例详情（project-case-yingjia） ---------- */
.pg-project-case-yingjia .sec-title{margin:9px 0 0;color:var(--navy);font-size:clamp(24px,2.8vw,34px);line-height:1.17}
.pg-project-case-yingjia .sec-lead{max-width:700px;margin:13px 0 0;color:var(--muted);font-size:15px}
.pg-project-case-yingjia .sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:28px;margin-bottom:32px}
.pg-project-case-yingjia .section{padding:68px 0}
.pg-project-case-yingjia .photo{position:relative;background:repeating-linear-gradient(135deg,#dbe6ee 0 14px,#e8eff5 14px 28px); display:grid;place-items:center;overflow:hidden}
.pg-project-case-yingjia .photo::after{content:attr(data-shot);max-width:84%;padding:7px 11px;background:#06355fd9;color:#fff; font-size:11px;font-weight:700;text-align:center;line-height:1.4}
.pg-project-case-yingjia .pagehero .container{position:relative;padding:52px 0 44px}
.pg-project-case-yingjia .pagehero h1{max-width:860px;margin:16px 0 0;font-size:clamp(27px,3.6vw,42px);line-height:1.14}
.pg-project-case-yingjia .pagehero p{max-width:660px;margin:15px 0 0;color:#ffffffd0;font-size:16px}
.pg-project-case-yingjia .crumbs{display:flex;gap:9px;flex-wrap:wrap;padding:13px 0;font-size:12.5px;color:var(--muted);border-bottom:1px solid var(--line)}
.pg-project-case-yingjia .factbar li{padding:22px 20px;border-left:1px solid var(--line)}
.pg-project-case-yingjia .factbar b{display:block;color:var(--deep);font-size:17px}
.pg-project-case-yingjia .layout{display:grid;grid-template-columns:1fr 290px;gap:52px;align-items:start;padding:56px 0 68px}
.pg-project-case-yingjia .tablescroll{overflow-x:auto;margin-top:20px}
.pg-project-case-yingjia .relgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.pg-project-case-yingjia .rel{background:#fff;border:1px solid var(--line);transition:.22s}
.pg-project-case-yingjia .rel:hover{border-color:var(--orange);box-shadow:0 12px 28px #06355f16}
.pg-project-case-yingjia .rel .photo{height:158px}
.pg-project-case-yingjia .rel div{padding:20px}
.pg-project-case-yingjia .rel b{display:block;margin-top:10px;color:var(--navy);font-size:15.5px;line-height:1.32}
.pg-project-case-yingjia .rel span{display:block;margin-top:7px;color:var(--muted);font-size:12.5px}
.pg-project-case-yingjia .side{position:sticky;top:110px}
.pg-project-case-yingjia .sidecta{margin-top:22px;padding:24px;background:var(--deep);color:#fff}
.pg-project-case-yingjia .sidecta b{display:block;font-size:16px}
.pg-project-case-yingjia .sidecta .btn{margin-top:14px;width:100%;text-align:center}
.pg-project-case-yingjia .gallery .photo{height:172px}
.pg-project-case-yingjia .block + .block{margin-top:44px;padding-top:40px;border-top:1px solid var(--line)}
.pg-project-case-yingjia .pagehero .cap{display:inline-block;padding:6px 13px;background:var(--orange);color:#fff;font-size:13px;font-weight:900;letter-spacing:.5px}
.pg-project-case-yingjia .sidebox{padding:24px;background:var(--soft);border-top:3px solid var(--blue)}
.pg-project-case-yingjia .sidebox h2{color:var(--navy);font-size:15px;letter-spacing:.5px;text-transform:uppercase}
.pg-project-case-yingjia .sidebox li{padding:11px 0;border-bottom:1px solid var(--line);font-size:13.5px}
.pg-project-case-yingjia .sidebox li b{display:block;color:var(--navy);font-size:11px;font-weight:900;letter-spacing:.6px;text-transform:uppercase}
.pg-project-case-yingjia .sidebox li span{color:var(--muted)}
.pg-project-case-yingjia .bullets{margin-top:16px}
.pg-project-case-yingjia .bullets li{display:flex;gap:11px;padding:9px 0;color:var(--muted);font-size:14px}
.pg-project-case-yingjia .bullets i{font-style:normal;color:#0a8a4d;font-weight:900}
.pg-project-case-yingjia .eqtable{width:100%;border-collapse:collapse;background:#fff;font-size:13.5px}
.pg-project-case-yingjia .eqtable caption{padding-bottom:12px;color:var(--muted);font-size:13px;text-align:left}
.pg-project-case-yingjia .eqtable th,.pg-project-case-yingjia .eqtable td{padding:13px 15px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.pg-project-case-yingjia .eqtable thead th{background:var(--deep);color:#fff;font-size:12px;letter-spacing:.6px;text-transform:uppercase;border-bottom:0}
.pg-project-case-yingjia .eqtable th[scope=row]{color:var(--navy);background:var(--soft);width:60px}
.pg-project-case-yingjia .eqtable a{color:var(--blue);font-weight:800}
.pg-project-case-yingjia .eqtable a:hover{color:var(--orange)}
.pg-project-case-yingjia .eqtable tbody tr:hover td{background:#fcfdfe}
.pg-project-case-yingjia .gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:20px}
.pg-project-case-yingjia .gallery .photo.wide{grid-column:span 2;height:236px}
.pg-project-case-yingjia .gallery .photo.tall{grid-row:span 2;height:auto;min-height:236px}
.pg-project-case-yingjia .quote{margin-top:26px;padding:30px;background:#fff;border:2px dashed #b9cbdb}
.pg-project-case-yingjia .quote .slotnum{display:inline-block;padding:4px 10px;background:#eef4fa;color:var(--blue);font-size:11px;font-weight:900;letter-spacing:.6px;text-transform:uppercase}
.pg-project-case-yingjia .quote .fields{margin-top:16px}
.pg-project-case-yingjia .quote .fields li{padding:9px 0;border-bottom:1px dashed var(--line)}
.pg-project-case-yingjia .quote .fields b{display:block;color:var(--navy);font-size:10.5px;font-weight:900;letter-spacing:.7px;text-transform:uppercase}
.pg-project-case-yingjia .quote .fields span{display:block;margin-top:5px;color:#a8b6c2;font-size:13px;font-style:italic}
.pg-project-case-yingjia .timeline{margin-top:20px;border-top:1px solid var(--line)}
.pg-project-case-yingjia .timeline li{display:flex;align-items:baseline;gap:14px;padding:13px 2px;border-bottom:1px solid var(--line)}
.pg-project-case-yingjia .timeline i{flex:none;min-width:22px;padding:3px 0;background:var(--soft);color:var(--deep);font-style:normal;font-size:11px;font-weight:900;text-align:center}
.pg-project-case-yingjia .timeline b{flex:1;color:var(--navy);font-size:14px;font-weight:700}
.pg-project-case-yingjia .timeline span{flex:none;color:var(--muted);font-size:13px;text-align:right}
.pg-project-case-yingjia .rel .cap{display:inline-block;padding:4px 10px;background:var(--deep);color:#fff;font-size:11.5px;font-weight:900}

/* ---------- 案例列表（projects-index） ---------- */
.pg-projects-index .sec-title{margin:9px 0 0;color:var(--navy);font-size:clamp(25px,3vw,36px);line-height:1.16}
.pg-projects-index .sec-lead{max-width:700px;margin:14px 0 0;color:var(--muted);font-size:15px}
.pg-projects-index .sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:28px;margin-bottom:34px}
.pg-projects-index .section{padding:72px 0}
.pg-projects-index .photo{position:relative;background:repeating-linear-gradient(135deg,#dbe6ee 0 14px,#e8eff5 14px 28px); display:grid;place-items:center;overflow:hidden}
.pg-projects-index .photo::after{content:attr(data-shot);max-width:84%;padding:7px 11px;background:#06355fd9;color:#fff; font-size:11px;font-weight:700;text-align:center;line-height:1.4}
.pg-projects-index .pagehero .container{position:relative;padding:54px 0 46px}
.pg-projects-index .pagehero h1{max-width:820px;margin:14px 0 0;font-size:clamp(28px,3.8vw,44px);line-height:1.13}
.pg-projects-index .pagehero p{max-width:660px;margin:16px 0 0;color:#ffffffd0;font-size:16px}
.pg-projects-index .crumbs{display:flex;gap:9px;flex-wrap:wrap;padding:13px 0;font-size:12.5px;color:var(--muted);border-bottom:1px solid var(--line)}
.pg-projects-index .cap{display:inline-block;align-self:flex-start;padding:5px 11px;background:var(--deep);color:#fff;font-size:12px;font-weight:900;letter-spacing:.4px}
/* 客户 logo 墙：格数由后台录入的行数决定，用 auto-fill 让它按容器宽度自己换行
   （固定 8 列时录 5 个会被拉成 5 个大格子，录 12 个又会挤扁）。
   下限取 140px：1240px 容器正好还是 8 列（跟改造前的观感一致），第 9 个起自动换行；
   auto-fill 让末行不满时保持格子等宽，logo 不会被拉大。 */
.pg-projects-index .clients{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:14px;margin-top:26px}
/* logo 是白底图，铺满会被裁切变形：contain + 内边距 + 白底衬在深色区块上 */
.pg-projects-index .clients img.photo{object-fit:contain;padding:10px;background:#fff}
.pg-projects-index .slot{display:flex;flex-direction:column;background:#fff;border:2px dashed #b9cbdb}
/* 选了 slot_article 时整卡渲染成 <a>（见 article/list-projects.php 渲染循环）；没选还是 <article>，
   下面这条只认标签+class，占位卡不会被误套上手型指针 / 悬浮效果 */
.pg-projects-index a.slot{color:inherit;text-decoration:none;transition:.22s}
.pg-projects-index a.slot:hover{border-color:var(--orange);box-shadow:0 16px 34px #06355f18;transform:translateY(-4px)}
.pg-projects-index .slot .photo{height:186px;background:repeating-linear-gradient(135deg,#e6eef5 0 12px,#f1f6fa 12px 24px)}
.pg-projects-index .slotnum{align-self:flex-start;padding:4px 10px;background:#eef4fa;color:var(--blue);font-size:11px;font-weight:900;letter-spacing:.6px;text-transform:uppercase}
.pg-projects-index .fields{margin-top:16px}
.pg-projects-index .fields li{padding:9px 0;border-bottom:1px dashed var(--line)}
.pg-projects-index .fields span{display:block;margin-top:5px;color:#a8b6c2;font-size:13px;font-style:italic}
.pg-projects-index .meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px}
.pg-projects-index .meta b{padding:5px 9px;background:var(--soft);border:1px solid var(--line);color:var(--navy);font-size:11px;font-weight:700}
.pg-projects-index .filters{display:flex;flex-wrap:wrap;gap:9px;margin-bottom:26px}
.pg-projects-index .statbar{background:#fff;border-top:4px solid var(--orange);box-shadow:0 14px 36px #06355f1c}
.pg-projects-index .statbar ul{display:grid;grid-template-columns:repeat(4,1fr)}
.pg-projects-index .statbar li{padding:24px 22px;border-left:1px solid var(--line)}
.pg-projects-index .statbar li:first-child{border-left:0}
.pg-projects-index .statbar b{display:block;color:var(--deep);font-size:20px}
.pg-projects-index .statbar span{display:block;margin-top:2px;color:var(--muted);font-size:11.5px;font-weight:700;letter-spacing:.6px;text-transform:uppercase}
.pg-projects-index .filters button{padding:10px 16px;border:1px solid var(--line);background:#fff;color:var(--navy);font:inherit;font-size:12.5px;font-weight:800;cursor:pointer;transition:.2s}
.pg-projects-index .filters button:hover{border-color:var(--blue);color:var(--blue)}
.pg-projects-index .filters button[aria-pressed="true"]{background:var(--deep);border-color:var(--deep);color:#fff}
.pg-projects-index .cases{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.pg-projects-index .case{display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);color:inherit;text-decoration:none;transition:.22s}
.pg-projects-index .case:hover{border-color:var(--orange);box-shadow:0 16px 34px #06355f18;transform:translateY(-4px)}
.pg-projects-index .case .photo{height:196px}
.pg-projects-index .casebody{display:flex;flex-direction:column;flex:1;padding:24px}
.pg-projects-index .case h2{margin-top:13px;color:var(--navy);font-size:18px;line-height:1.32}
.pg-projects-index .case:hover h2{color:var(--blue)}
.pg-projects-index .case p{margin-top:10px;color:var(--muted);font-size:13.5px;flex:1}
.pg-projects-index .more{margin-top:15px;color:var(--blue);font-size:12px;font-weight:900;text-transform:uppercase}
.pg-projects-index .more::after{content:" →"}
.pg-projects-index .mapwrap{display:grid;grid-template-columns:1.35fr .65fr;gap:30px;align-items:stretch;margin-bottom:34px}
.pg-projects-index .mapwrap .photo{min-height:330px}
.pg-projects-index .intlcases{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.pg-projects-index .slotbody{display:flex;flex-direction:column;flex:1;padding:22px}
.pg-projects-index .brief{margin-top:30px;padding:26px;background:#fff;border-left:4px solid var(--orange)}
.pg-projects-index .brief b{display:block;color:var(--navy);font-size:15.5px}
.pg-projects-index .brief p{margin-top:8px;color:var(--muted);font-size:13.5px}
.pg-projects-index .briefgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:6px 28px;margin-top:14px}
.pg-projects-index .briefgrid li{display:flex;gap:10px;padding:7px 0;color:var(--muted);font-size:13px;border-bottom:1px solid var(--line)}
.pg-projects-index .briefgrid i{font-style:normal;color:var(--orange);font-weight:900}
.pg-projects-index .capcard{padding:24px;background:#ffffff12;border:1px solid #ffffff2b}
.pg-projects-index .capcard b{display:block;font-size:15.5px}
.pg-projects-index .capcard span{display:block;margin-top:8px;color:#ffffffab;font-size:13px}

/* ---------- 服务与支持（services） ---------- */
.pg-services .sec-title{margin:9px 0 0;color:var(--navy);font-size:clamp(25px,3vw,36px);line-height:1.16}
.pg-services .sec-lead{max-width:700px;margin:14px 0 0;color:var(--muted);font-size:15px}
.pg-services .sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:28px;margin-bottom:34px}
.pg-services .section{padding:72px 0}
.pg-services .photo{position:relative;background:repeating-linear-gradient(135deg,#dbe6ee 0 14px,#e8eff5 14px 28px); display:grid;place-items:center;overflow:hidden}
.pg-services .photo::after{content:attr(data-shot);max-width:84%;padding:7px 11px;background:#06355fd9;color:#fff; font-size:11px;font-weight:700;text-align:center;line-height:1.4}
.pg-services .pagehero .container{position:relative;padding:54px 0 46px}
.pg-services .pagehero h1{max-width:860px;margin:14px 0 0;font-size:clamp(28px,3.7vw,44px);line-height:1.13}
.pg-services .pagehero p{max-width:660px;margin:16px 0 0;color:#ffffffd0;font-size:16px}
.pg-services .crumbs{display:flex;gap:9px;flex-wrap:wrap;padding:13px 0;font-size:12.5px;color:var(--muted);border-bottom:1px solid var(--line)}
.pg-services .split{display:grid;grid-template-columns:1fr 1fr;gap:52px;align-items:center}
.pg-services .tablescroll{overflow-x:auto;margin-top:20px}
.pg-services .faqlist summary{position:relative;padding:19px 40px 19px 0;font-size:15.5px;font-weight:800;color:var(--navy);cursor:pointer;list-style:none}
.pg-services .faqlist summary::after{content:"+";position:absolute;right:6px;top:15px;color:var(--orange);font-size:24px;font-weight:400}
.pg-services .faqlist p{padding:0 30px 21px 0;color:var(--muted);font-size:14px}
.pg-services .faqwrap{display:grid;grid-template-columns:.8fr 1.2fr;gap:58px;align-items:start}
.pg-services .todo{margin-top:28px;padding:24px;background:#fff8e8;border-left:4px solid var(--orange)}
.pg-services .todo ul{display:grid;grid-template-columns:1fr 1fr;gap:0 28px;margin-top:12px}
.pg-services .promisebar{background:#fff;border-top:4px solid var(--orange);box-shadow:0 14px 36px #06355f1c}
.pg-services .promisebar ul{display:grid;grid-template-columns:repeat(4,1fr)}
.pg-services .promisebar li{padding:24px 20px;border-left:1px solid var(--line)}
.pg-services .promisebar li:first-child{border-left:0}
.pg-services .promisebar b{display:block;color:var(--deep);font-size:19px}
.pg-services .promisebar b.is-todo{color:#a8b6c2}
.pg-services .promisebar span{display:block;margin-top:2px;color:var(--muted);font-size:11px;font-weight:700;letter-spacing:.6px;text-transform:uppercase}
.pg-services .phases{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;counter-reset:p}
.pg-services .phase{position:relative;padding:26px 22px;background:#fff;border:1px solid var(--line);transition:.2s}
.pg-services .phase:hover{border-color:var(--orange);box-shadow:0 12px 28px #06355f14}
.pg-services .phase::before{counter-increment:p;content:"0" counter(p);display:block;margin-bottom:12px;color:var(--orange);font-size:20px;font-weight:900}
.pg-services .phase b{display:block;color:var(--navy);font-size:16.5px}
.pg-services .phase p{margin-top:9px;color:var(--muted);font-size:13.5px}
.pg-services .phase ul{margin-top:13px}
.pg-services .phase li{display:flex;gap:9px;padding:5px 0;color:var(--muted);font-size:12.5px}
.pg-services .phase i{font-style:normal;color:#0a8a4d;font-weight:900}
.pg-services .steps{display:grid;grid-template-columns:repeat(5,1fr);gap:16px;counter-reset:s}
.pg-services .step{position:relative;padding:24px 20px;background:#ffffff12;border:1px solid #ffffff2b}
.pg-services .step::before{counter-increment:s;content:"0" counter(s);display:block;margin-bottom:12px;color:var(--yellow);font-size:20px;font-weight:900}
.pg-services .step span{display:block;margin-top:6px;color:#ffffffa8;font-size:12.5px}
.pg-services .terms>:not(caption)>*>*{padding:14px 16px}
.pg-services .terms thead th{background:var(--deep);color:#fff;font-size:12px;letter-spacing:.6px;text-transform:uppercase;border-bottom:0}
.pg-services .terms th[scope=row]{width:250px;color:var(--navy);background:var(--soft)}
.pg-services .terms tbody tr:hover td{background:#fcfdfe}
.pg-services .terms .fill{color:#a8b6c2;font-style:italic}
.pg-services .terms .known{color:var(--navy);font-weight:700}
.pg-services .cover{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin-top:22px}
.pg-services .covbox{padding:26px;background:#fff;border-top:3px solid var(--blue)}
.pg-services .covbox.out{border-top-color:#c3d2de}
.pg-services .covbox b{display:block;color:var(--navy);font-size:16px}
.pg-services .covbox li{display:flex;gap:10px;padding:9px 0;border-bottom:1px solid var(--line);color:var(--muted);font-size:13.5px}
.pg-services .covbox i{font-style:normal;font-weight:900}
.pg-services .covbox .yes i{color:#0a8a4d}
.pg-services .covbox .no i{color:#b9c4cd}
.pg-services .covbox p{margin-top:14px;color:#a8b6c2;font-size:12.5px;font-style:italic}
.pg-services .parts{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.pg-services .part{padding:24px;background:#fff;border-left:4px solid var(--blue)}
.pg-services .part b{display:block;color:var(--navy);font-size:15.5px}
.pg-services .part span{display:block;margin-top:8px;color:var(--muted);font-size:13px}
.pg-services .split .photo{height:400px}
.pg-services .trainlist{margin-top:20px}
.pg-services .trainlist li{display:flex;gap:14px;padding:13px 0;border-bottom:1px solid var(--line);font-size:14px}
.pg-services .trainlist b{min-width:160px;color:var(--navy)}
.pg-services .trainlist span{color:var(--muted)}
.pg-services .remote{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.pg-services .rm{padding:26px;background:#ffffff12;border:1px solid #ffffff2b}
.pg-services .rm b{display:block;font-size:16px}
.pg-services .rm p{margin-top:9px;color:#ffffffab;font-size:13.5px}
.pg-services .todo p{margin-top:8px;color:#7a6224;font-size:13.5px}

/* ---------- 方案详情（solution-bottled-water-line） ---------- */
.pg-solution-bottled-water-line .sec-title{margin:9px 0 0;color:var(--navy);font-size:clamp(26px,3.1vw,38px);line-height:1.16}
.pg-solution-bottled-water-line .sec-lead{max-width:660px;margin:14px 0 0;color:var(--muted);font-size:15px}
.pg-solution-bottled-water-line .sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:28px;margin-bottom:36px}
.pg-solution-bottled-water-line .section{padding:76px 0}
.pg-solution-bottled-water-line .photo{position:relative;background:repeating-linear-gradient(135deg,#dbe6ee 0 14px,#e8eff5 14px 28px); display:grid;place-items:center;overflow:hidden}
.pg-solution-bottled-water-line .photo::after{content:attr(data-shot);max-width:82%;padding:8px 12px;background:#06355fd9;color:#fff; font-size:11px;font-weight:700;text-align:center;line-height:1.4}
.pg-solution-bottled-water-line .pagehero .container{position:relative;padding:56px 0 46px}
.pg-solution-bottled-water-line .pagehero h1{max-width:820px;margin:14px 0 0;font-size:clamp(28px,3.9vw,46px);line-height:1.12}
.pg-solution-bottled-water-line .pagehero p{margin:16px 0 0;color:#ffffffd0;font-size:16px}
.pg-solution-bottled-water-line .crumbs{display:flex;gap:9px;flex-wrap:wrap;padding:13px 0;font-size:12.5px;color:var(--muted);border-bottom:1px solid var(--line)}
.pg-solution-bottled-water-line .split{display:grid;grid-template-columns:1fr 1fr;gap:54px;align-items:center}
.pg-solution-bottled-water-line .tablescroll{overflow-x:auto}
.pg-solution-bottled-water-line .faqlist summary{position:relative;padding:19px 40px 19px 0;font-size:15.5px;font-weight:800;color:var(--navy);cursor:pointer;list-style:none}
.pg-solution-bottled-water-line .faqlist summary::after{content:"+";position:absolute;right:6px;top:15px;color:var(--orange);font-size:24px;font-weight:400}
.pg-solution-bottled-water-line .faqlist p{padding:0 30px 21px 0;color:var(--muted);font-size:14px}
.pg-solution-bottled-water-line .rel{padding:24px;background:#fff;border:1px solid var(--line);transition:.22s}
.pg-solution-bottled-water-line .rel:hover{border-color:var(--blue);box-shadow:0 12px 26px #06355f14}
.pg-solution-bottled-water-line .rel b{display:block;color:var(--navy);font-size:16px}
.pg-solution-bottled-water-line .rel span{display:block;margin-top:8px;color:var(--muted);font-size:13px}
.pg-solution-bottled-water-line .faqwrap{display:grid;grid-template-columns:.8fr 1.2fr;gap:60px;align-items:start}
.pg-solution-bottled-water-line .field textarea{height:100px;resize:vertical}
.pg-solution-bottled-water-line .contactgrid{display:grid;grid-template-columns:1fr 1.05fr;gap:54px;align-items:start}
.pg-solution-bottled-water-line .casebody{padding:36px}
.pg-solution-bottled-water-line .split .photo{height:400px}
.pg-solution-bottled-water-line .specbar{background:#fff;border-top:4px solid var(--orange);box-shadow:0 14px 36px #06355f1c}
.pg-solution-bottled-water-line .specbar ul{display:grid;grid-template-columns:repeat(4,1fr)}
.pg-solution-bottled-water-line .specbar li{padding:24px 22px;border-left:1px solid var(--line)}
.pg-solution-bottled-water-line .specbar li:first-child{border-left:0}
.pg-solution-bottled-water-line .specbar b{display:block;color:var(--deep);font-size:19px}
.pg-solution-bottled-water-line .specbar span{display:block;margin-top:2px;color:var(--muted);font-size:11.5px;font-weight:700;letter-spacing:.6px;text-transform:uppercase}
.pg-solution-bottled-water-line .flow{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;counter-reset:f}
.pg-solution-bottled-water-line .fstep{position:relative;padding:24px 20px;background:#ffffff12;border:1px solid #ffffff2b}
.pg-solution-bottled-water-line .fstep::before{counter-increment:f;content:"0" counter(f);display:block;margin-bottom:12px;color:var(--yellow);font-size:20px;font-weight:900}
.pg-solution-bottled-water-line .fstep b{display:block;font-size:15px}
.pg-solution-bottled-water-line .fstep span{display:block;margin-top:6px;color:#ffffffa8;font-size:12.5px}
.pg-solution-bottled-water-line .fstep em{display:block;margin-top:10px;color:var(--yellow);font-size:11px;font-style:normal;font-weight:800;letter-spacing:.5px;text-transform:uppercase}
.pg-solution-bottled-water-line .cfg>caption{padding-bottom:14px}
.pg-solution-bottled-water-line .cfg th[scope=row]{color:var(--navy);font-size:14px}
.pg-solution-bottled-water-line .cfg .yes{color:#0a8a4d;font-weight:900}
.pg-solution-bottled-water-line .cfg .opt{color:var(--orange);font-weight:800}
.pg-solution-bottled-water-line .cfg .no{color:#b9c4cd}
.pg-solution-bottled-water-line .eqgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.pg-solution-bottled-water-line .eq{display:block;padding:24px;background:#fff;border:1px solid var(--line);transition:.22s}
.pg-solution-bottled-water-line .eq:hover{border-color:var(--orange);box-shadow:0 12px 28px #06355f14}
.pg-solution-bottled-water-line .eq b{display:block;color:var(--navy);font-size:16px}
.pg-solution-bottled-water-line .eq p{margin-top:9px;color:var(--muted);font-size:13px}
.pg-solution-bottled-water-line .eq em{display:block;margin-top:12px;color:var(--blue);font-size:11.5px;font-style:normal;font-weight:900;letter-spacing:.5px;text-transform:uppercase}
.pg-solution-bottled-water-line .eq em::after{content:" →"}
.pg-solution-bottled-water-line .factors{display:grid;grid-template-columns:repeat(2,1fr);gap:22px}
.pg-solution-bottled-water-line .factor{padding:26px;background:#fff;border-left:4px solid var(--blue)}
.pg-solution-bottled-water-line .factor b{display:block;color:var(--navy);font-size:17px}
.pg-solution-bottled-water-line .factor p{margin-top:10px;color:var(--muted);font-size:14px}
.pg-solution-bottled-water-line .reqlist li{display:flex;gap:14px;padding:13px 0;border-bottom:1px solid var(--line);font-size:14px}
.pg-solution-bottled-water-line .reqlist b{min-width:150px;color:var(--navy)}
.pg-solution-bottled-water-line .reqlist span{color:var(--muted)}
.pg-solution-bottled-water-line .casecard{display:grid;grid-template-columns:.9fr 1.1fr;gap:0;background:#fff;border:1px solid var(--line)}
.pg-solution-bottled-water-line .casecard .photo{min-height:290px}
.pg-solution-bottled-water-line .casecap{display:inline-block;padding:6px 12px;background:var(--deep);color:#fff;font-size:12px;font-weight:900}
.pg-solution-bottled-water-line .casebody h3{margin-top:14px;color:var(--navy);font-size:22px;line-height:1.3}
.pg-solution-bottled-water-line .casebody p{margin-top:12px;color:var(--muted);font-size:14px}

/* ---------- 方案总览（solutions-index） ---------- */
.pg-solutions-index .sec-title{margin:9px 0 0;color:var(--navy);font-size:clamp(25px,3vw,36px);line-height:1.16}
.pg-solutions-index .sec-lead{max-width:680px;margin:14px 0 0;color:var(--muted);font-size:15px}
.pg-solutions-index .sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:28px;margin-bottom:36px}
.pg-solutions-index .section{padding:72px 0}
.pg-solutions-index .photo{position:relative;background:repeating-linear-gradient(135deg,#dbe6ee 0 14px,#e8eff5 14px 28px); display:grid;place-items:center;overflow:hidden}
.pg-solutions-index .photo::after{content:attr(data-shot);max-width:84%;padding:7px 11px;background:#06355fd9;color:#fff; font-size:11px;font-weight:700;text-align:center;line-height:1.4}
.pg-solutions-index .pagehero .container{position:relative;padding:54px 0 46px}
.pg-solutions-index .pagehero h1{max-width:820px;margin:14px 0 0;font-size:clamp(28px,3.8vw,44px);line-height:1.13}
.pg-solutions-index .pagehero p{max-width:660px;margin:16px 0 0;color:#ffffffd0;font-size:16px}
.pg-solutions-index .crumbs{display:flex;gap:9px;flex-wrap:wrap;padding:13px 0;font-size:12.5px;color:var(--muted);border-bottom:1px solid var(--line)}
.pg-solutions-index .tablescroll{overflow-x:auto}
.pg-solutions-index .faqlist summary{position:relative;padding:19px 40px 19px 0;font-size:15.5px;font-weight:800;color:var(--navy);cursor:pointer;list-style:none}
.pg-solutions-index .faqlist summary::after{content:"+";position:absolute;right:6px;top:15px;color:var(--orange);font-size:24px;font-weight:400}
.pg-solutions-index .faqlist p{padding:0 30px 21px 0;color:var(--muted);font-size:14px}
.pg-solutions-index .cmp>:not(caption)>*>*{padding:14px 15px}
.pg-solutions-index .faqwrap{display:grid;grid-template-columns:.8fr 1.2fr;gap:58px;align-items:start}
.pg-solutions-index .lines{display:grid;gap:22px}
.pg-solutions-index .steps{display:grid;grid-template-columns:repeat(5,1fr);gap:16px;counter-reset:s}
.pg-solutions-index .step{position:relative;padding:24px 20px;background:#ffffff12;border:1px solid #ffffff2b}
.pg-solutions-index .step::before{counter-increment:s;content:"0" counter(s);display:block;margin-bottom:12px;color:var(--yellow);font-size:20px;font-weight:900}
.pg-solutions-index .step span{display:block;margin-top:6px;color:#ffffffa8;font-size:12.5px}
.pg-solutions-index .paths{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin-top:-40px;position:relative;z-index:5}
.pg-solutions-index .path{padding:30px;background:#fff;border-top:4px solid var(--orange);box-shadow:0 16px 40px #06355f1f}
.pg-solutions-index .path b{display:block;color:var(--navy);font-size:19px}
.pg-solutions-index .path p{margin-top:9px;color:var(--muted);font-size:14px}
.pg-solutions-index .path .btn{margin-top:16px}
.pg-solutions-index .lineitem{display:grid;grid-template-columns:340px 1fr;gap:32px;padding:24px;background:#fff;border:1px solid var(--line);transition:.2s}
.pg-solutions-index .lineitem:hover{border-color:var(--orange);box-shadow:0 14px 32px #06355f16}
.pg-solutions-index .lineitem .photo{height:230px}
.pg-solutions-index .lineitem h2{color:var(--navy);font-size:22px}
.pg-solutions-index .lineitem h2 a:hover{color:var(--blue)}
.pg-solutions-index .lineitem .desc{margin-top:11px;color:var(--muted);font-size:14px}
.pg-solutions-index .tags{display:flex;flex-wrap:wrap;gap:7px;margin-top:14px}
.pg-solutions-index .tags b{padding:6px 11px;background:var(--soft);border:1px solid var(--line);color:var(--navy);font-size:11.5px;font-weight:700}
.pg-solutions-index .incl{display:grid;grid-template-columns:1fr 1fr;gap:5px 18px;margin-top:15px}
.pg-solutions-index .incl li{display:flex;gap:9px;color:var(--muted);font-size:13px}
.pg-solutions-index .incl i{font-style:normal;color:#0a8a4d;font-weight:900}
.pg-solutions-index .lineacts{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}
.pg-solutions-index .cmp th[scope=row]{--bs-table-bg:var(--soft);color:var(--navy);width:190px}
.pg-solutions-index .cmp{--bs-table-hover-bg:#fcfdfe}
.pg-solutions-index .cmp a{color:var(--blue);font-weight:800}
.pg-solutions-index .cmp a:hover{color:var(--orange)}

/* ---------- 提交成功（thank-you） ---------- */
.pg-thank-you .sec-title{margin:9px 0 0;color:var(--navy);font-size:clamp(24px,2.8vw,34px);line-height:1.17}
.pg-thank-you .sec-lead{max-width:700px;margin:13px 0 0;color:var(--muted);font-size:15px}
.pg-thank-you .section{padding:68px 0}
.pg-thank-you .photo{position:relative;background:repeating-linear-gradient(135deg,#dbe6ee 0 14px,#e8eff5 14px 28px); display:grid;place-items:center;overflow:hidden}
.pg-thank-you .photo::after{content:attr(data-shot);max-width:84%;padding:7px 11px;background:#06355fd9;color:#fff; font-size:11px;font-weight:700;text-align:center;line-height:1.4}
.pg-thank-you .steps{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;counter-reset:s}
.pg-thank-you .step{position:relative;padding:26px 22px;background:#fff;border:1px solid var(--line)}
.pg-thank-you .step::before{counter-increment:s;content:"0" counter(s);display:block;margin-bottom:12px;color:var(--orange);font-size:20px;font-weight:900}
.pg-thank-you .step span{display:block;margin-top:8px;color:var(--muted);font-size:13.5px}
.pg-thank-you .confirm{padding:78px 0 68px;background:linear-gradient(92deg,#032b4d,#06467e 58%,#078dc8)}
.pg-thank-you .confirm .container{max-width:760px;text-align:center;color:#fff}
.pg-thank-you .tick{display:grid;place-items:center;width:74px;height:74px;margin:0 auto 24px;border:3px solid var(--yellow);border-radius:50%;color:var(--yellow);font-size:34px}
.pg-thank-you .confirm h1{font-size:clamp(28px,3.6vw,42px);line-height:1.14}
.pg-thank-you .confirm p{margin-top:16px;color:#ffffffd4;font-size:16.5px}
.pg-thank-you .confirm .ref{display:inline-block;margin-top:22px;padding:10px 18px;background:#ffffff1a;border:1px solid #ffffff38;font-size:13px}
.pg-thank-you .confirm .ref b{color:var(--yellow)}
.pg-thank-you .step b{display:block;color:var(--navy);font-size:16px}
.pg-thank-you .step em{display:block;margin-top:11px;color:var(--blue);font-style:normal;font-size:11.5px;font-weight:900;letter-spacing:.5px;text-transform:uppercase}
.pg-thank-you .urgent{display:flex;align-items:center;justify-content:space-between;gap:28px;flex-wrap:wrap; padding:30px;background:var(--soft);border-left:4px solid var(--orange);margin-top:32px}
.pg-thank-you .urgent b{display:block;color:var(--navy);font-size:17px}
.pg-thank-you .urgent p{margin-top:7px;color:var(--muted);font-size:14px}
.pg-thank-you .browse{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.pg-thank-you .bcard{display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);transition:.22s}
.pg-thank-you .bcard:hover{border-color:var(--orange);box-shadow:0 14px 30px #06355f16;transform:translateY(-4px)}
.pg-thank-you .bcard .photo{height:168px}
.pg-thank-you .bbody{display:flex;flex-direction:column;flex:1;padding:24px}
.pg-thank-you .bcard b{display:block;color:var(--navy);font-size:17px}
.pg-thank-you .bcard p{margin-top:9px;color:var(--muted);font-size:13.5px;flex:1}
.pg-thank-you .bcard em{display:block;margin-top:14px;color:var(--blue);font-style:normal;font-size:12px;font-weight:900;text-transform:uppercase}
.pg-thank-you .bcard em::after{content:" →"}
.pg-thank-you .social{display:grid;grid-template-columns:repeat(5,1fr);gap:16px;margin-top:8px}
.pg-thank-you .soc{padding:22px;background:#ffffff12;border:1px solid #ffffff2b;text-align:center;transition:.2s}
.pg-thank-you .soc:hover{background:#ffffff1f}
.pg-thank-you .soc b{display:block;font-size:15px}
.pg-thank-you .soc span{display:block;margin-top:6px;color:#ffffffa8;font-size:12px}

/* ---------- 内页共享响应式 ---------- */
@media(max-width:991.98px){
  .factbar ul{grid-template-columns:repeat(3,1fr)}
  .factbar li:nth-child(4){border-left:0}
  .relgrid{grid-template-columns:1fr 1fr}
  .side{position:static}
  .side nav{display:grid;grid-template-columns:1fr 1fr;gap:0 20px}
  .faqwrap{grid-template-columns:1fr;gap:32px}
}
@media(max-width:767.98px){
  .factbar ul{grid-template-columns:1fr 1fr}
  .factbar li{border-left:0;border-top:1px solid var(--line)}
  .relgrid{grid-template-columns:1fr}
  .sec-head,.grouphead{display:block}
  .grouphead span{display:block;margin-top:5px}
}

/* ---------- 关于我们 响应式 ---------- */
@media(max-width:991.98px){
  .pg-about .split,.pg-about .visit{grid-template-columns:1fr;gap:34px}
  .pg-about .timeline{grid-template-columns:repeat(2,1fr);gap:24px 0}
  .pg-about .caps,.pg-about .certrow,.pg-about .tech,.pg-about .team{grid-template-columns:1fr 1fr}
}
@media(max-width:767.98px){
  .pg-about .section{padding:50px 0}
  .pg-about .sec-head .btn{margin-top:18px}
  .pg-about .timeline,.pg-about .caps,.pg-about .certrow,.pg-about .tech,.pg-about .team{grid-template-columns:1fr}
  .pg-about .addr li{display:block}
  .pg-about .addr b{display:block;margin-bottom:3px}
}

/* ---------- 技术文章详情 响应式 ---------- */
@media(max-width:991.98px){
  .pg-blog-article .layout{grid-template-columns:1fr;gap:30px}
  .pg-blog-article .toc{position:static}
  .pg-blog-article .toc a{display:inline-block;margin-right:16px;border-bottom:0;padding:7px 0}
  .pg-blog-article .article{max-width:none}
  .pg-blog-article .herofig .photo{height:300px}
  .pg-blog-article .tbl{min-width:620px}
}
@media(max-width:767.98px){
  .pg-blog-article .section{padding:46px 0}
  .pg-blog-article .arthead{padding:28px 0 22px}
  .pg-blog-article .herofig .photo{height:210px}
  .pg-blog-article .article{font-size:15.5px}
  .pg-blog-article .article h2{font-size:22px}
  .pg-blog-article .author{display:block}
  .pg-blog-article .author .photo{margin-bottom:14px}
}

/* ---------- 技术文章列表 响应式 ---------- */
@media(max-width:991.98px){
  .pg-blog-index .posts{grid-template-columns:1fr 1fr}
  .pg-blog-index .featured{grid-template-columns:1fr}
  .pg-blog-index .featured .photo{min-height:240px}
  .pg-blog-index .featbody{padding:28px}
  .pg-blog-index .subgrid{grid-template-columns:1fr;gap:24px}
}
@media(max-width:767.98px){
  .pg-blog-index .posts{grid-template-columns:1fr}
  .pg-blog-index .section{padding:48px 0}
  .pg-blog-index .sec-head .btn{margin-top:18px}
}

/* ---------- 产品分类页 响应式 ---------- */
@media(max-width:991.98px){
  .pg-category-water-treatment .layout{grid-template-columns:1fr;gap:34px}
  .pg-category-water-treatment .guide,.pg-category-water-treatment .related{grid-template-columns:1fr 1fr}
  .pg-category-water-treatment .cmp{min-width:700px}
}
@media(max-width:767.98px){
  .pg-category-water-treatment .section{padding:50px 0}
  .pg-category-water-treatment .sec-head,.pg-category-water-treatment .listhead{display:block}
  .pg-category-water-treatment .listhead span{display:block;margin-top:6px}
  .pg-category-water-treatment .side nav{grid-template-columns:1fr}
  .pg-category-water-treatment .machine{grid-template-columns:1fr;gap:16px}
  .pg-category-water-treatment .machine .photo{height:190px}
  .pg-category-water-treatment .guide,.pg-category-water-treatment .related{grid-template-columns:1fr}
}

/* ---------- 资质证书 响应式 ---------- */
@media(max-width:991.98px){
  .pg-certifications .why,.pg-certifications .certs{grid-template-columns:1fr 1fr}
  .pg-certifications .verify{grid-template-columns:1fr}
  .pg-certifications .pat{min-width:640px}
}
@media(max-width:767.98px){
  .pg-certifications .section{padding:48px 0}
  .pg-certifications .why,.pg-certifications .certs,.pg-certifications .docs{grid-template-columns:1fr}
}

/* ---------- 联系我们 响应式 ---------- */
@media(max-width:991.98px){
  .pg-contact .layout{grid-template-columns:1fr;gap:34px}
  .pg-contact .channels ul{grid-template-columns:1fr 1fr}
  .pg-contact .channels li:nth-child(3){border-left:0}
  .pg-contact .needgrid{grid-template-columns:1fr}
  .pg-contact .mapsplit{grid-template-columns:1fr}
  .pg-contact .mapsplit .photo{min-height:280px}
}
@media(max-width:767.98px){
  .pg-contact .section{padding:48px 0}
  .pg-contact .channels ul{grid-template-columns:1fr}
  .pg-contact .channels li{border-left:0;border-top:1px solid var(--line)}
  .pg-contact .form{padding:22px}
  .pg-contact .form-row{grid-template-columns:1fr}
  .pg-contact .visit li{display:block}
  .pg-contact .visit b{display:block;margin-bottom:3px}
}

/* ---------- 产品详情 响应式 ---------- */
@media(max-width:991.98px){
  .pg-product-ro-system .layout{grid-template-columns:1fr;gap:36px}
  .pg-product-ro-system .top{grid-template-columns:1fr;gap:32px}
  .pg-product-ro-system .gallery .photo{height:320px}
  .pg-product-ro-system .lines{grid-template-columns:1fr}
  .pg-product-ro-system .contactgrid{grid-template-columns:1fr;gap:32px}
  .pg-product-ro-system .spec{min-width:640px}
  .pg-product-ro-system .jump{top:70px}
}
@media(max-width:767.98px){
  .pg-product-ro-system .section{padding:48px 0}
  .pg-product-ro-system .keyspecs li,.pg-product-ro-system .utils li{display:block}
  .pg-product-ro-system .keyspecs b,.pg-product-ro-system .utils b{display:block;margin-bottom:3px}
  .pg-product-ro-system .opts,.pg-product-ro-system .scope,.pg-product-ro-system .form-row,.pg-product-ro-system .relgrid,.pg-product-ro-system .side nav{grid-template-columns:1fr}
  .pg-product-ro-system .acts .btn{flex:1;text-align:center}
}

/* ---------- 产品总览 响应式 ---------- */
@media(max-width:991.98px){
  .pg-products-index .cats{grid-template-columns:1fr 1fr}
  .pg-products-index .bylines,.pg-products-index .promise{grid-template-columns:1fr 1fr}
}
@media(max-width:767.98px){
  .pg-products-index .section{padding:50px 0}
  .pg-products-index .cats,.pg-products-index .bylines,.pg-products-index .promise{grid-template-columns:1fr}
}

/* ---------- 案例详情 响应式 ---------- */
@media(max-width:991.98px){
  .pg-project-case-yingjia .layout{grid-template-columns:1fr;gap:36px}
  .pg-project-case-yingjia .eqtable{min-width:680px}
}
@media(max-width:767.98px){
  .pg-project-case-yingjia .section{padding:48px 0}
  .pg-project-case-yingjia .sec-head .btn{margin-top:18px}
  .pg-project-case-yingjia .gallery{grid-template-columns:1fr}
  .pg-project-case-yingjia .timeline li{flex-wrap:wrap;gap:3px 14px}
  .pg-project-case-yingjia .timeline span{width:100%;padding-left:36px;text-align:left}
  .pg-project-case-yingjia .gallery .photo.wide,.pg-project-case-yingjia .gallery .photo.tall{grid-column:auto;grid-row:auto;height:190px}
}

/* ---------- 案例列表 响应式 ---------- */
@media(max-width:991.98px){
  .pg-projects-index .statbar ul{grid-template-columns:1fr 1fr}
  .pg-projects-index .statbar li:nth-child(3){border-left:0}
  .pg-projects-index .cases{grid-template-columns:1fr 1fr}
  .pg-projects-index .caps{grid-template-columns:1fr 1fr}
}
@media(max-width:767.98px){
  .pg-projects-index .section{padding:50px 0}
  .pg-projects-index .sec-head .btn{margin-top:18px}
  .pg-projects-index .statbar ul{grid-template-columns:1fr}
  .pg-projects-index .statbar li{border-left:0;border-top:1px solid var(--line)}
  .pg-projects-index .cases,.pg-projects-index .caps{grid-template-columns:1fr}
}

/* ---------- 服务与支持 响应式 ---------- */
@media(max-width:991.98px){
  .pg-services .steps,.pg-solutions-index .steps{grid-template-columns:repeat(3,minmax(0,1fr))}
  .pg-services .promisebar ul{grid-template-columns:1fr 1fr}
  .pg-services .promisebar li:nth-child(3){border-left:0}
  .pg-services .phases,.pg-services .parts{grid-template-columns:1fr 1fr}
  .pg-services .remote{grid-template-columns:1fr}
  .pg-services .split{grid-template-columns:1fr;gap:34px}
  .pg-services .split .photo{height:300px}
  .pg-services .terms{min-width:660px}
}
@media(max-width:767.98px){
  .pg-services .section{padding:50px 0}
  .pg-services .sec-head .btn{margin-top:18px}
  .pg-services .promisebar ul{grid-template-columns:1fr}
  .pg-services .promisebar li{border-left:0;border-top:1px solid var(--line)}
  .pg-services .phases,.pg-services .parts,.pg-services .cover{grid-template-columns:1fr}
  .pg-services .trainlist li{display:block}
  .pg-services .trainlist b{display:block;margin-bottom:3px}
  .pg-services .todo ul{grid-template-columns:1fr}
}

/* ---------- 方案详情 响应式 ---------- */
@media(max-width:991.98px){
  .pg-solution-bottled-water-line .split .photo{height:300px}
  .pg-solution-bottled-water-line .specbar ul{grid-template-columns:1fr 1fr}
  .pg-solution-bottled-water-line .specbar li:nth-child(3){border-left:0}
  .pg-solution-bottled-water-line .flow{grid-template-columns:repeat(2,1fr)}
  .pg-solution-bottled-water-line .eqgrid,.pg-solution-bottled-water-line .related{grid-template-columns:repeat(2,1fr)}
  .pg-solution-bottled-water-line .factors{grid-template-columns:1fr}
  .pg-solution-bottled-water-line .split,.pg-solution-bottled-water-line .faqwrap,.pg-solution-bottled-water-line .contactgrid{grid-template-columns:1fr;gap:34px}
  .pg-solution-bottled-water-line .casecard{grid-template-columns:1fr}
  .pg-solution-bottled-water-line .casecard .photo{min-height:220px}
  .pg-solution-bottled-water-line .cfg{min-width:760px}
}
@media(max-width:767.98px){
  .pg-solution-bottled-water-line .section{padding:52px 0}
  .pg-solution-bottled-water-line .sec-head .btn{margin-top:18px}
  .pg-solution-bottled-water-line .specbar ul{grid-template-columns:1fr}
  .pg-solution-bottled-water-line .specbar li{border-left:0;border-top:1px solid var(--line)}
  .pg-solution-bottled-water-line .flow,.pg-solution-bottled-water-line .eqgrid,.pg-solution-bottled-water-line .related,.pg-solution-bottled-water-line .form-row{grid-template-columns:1fr}
  .pg-solution-bottled-water-line .reqlist li{display:block}
  .pg-solution-bottled-water-line .reqlist b{display:block;margin-bottom:3px}
  .pg-solution-bottled-water-line .casebody{padding:24px}
}

/* ---------- 方案总览 响应式 ---------- */
@media(max-width:991.98px){
  .pg-solutions-index .cmp{min-width:820px}
  .pg-solutions-index .paths{grid-template-columns:1fr;margin-top:-24px}
  .pg-solutions-index .lineitem{grid-template-columns:1fr;gap:20px}
  .pg-solutions-index .lineitem .photo{height:230px}
}
@media(max-width:767.98px){
  .pg-solutions-index .section{padding:50px 0}
  .pg-solutions-index .sec-head .btn{margin-top:18px}
  .pg-solutions-index .incl{grid-template-columns:1fr}
}

/* ---------- 提交成功 响应式 ---------- */
@media(max-width:991.98px){
  .pg-thank-you .browse{grid-template-columns:1fr 1fr}
  .pg-thank-you .social{grid-template-columns:repeat(3,1fr)}
}
@media(max-width:767.98px){
  .pg-thank-you .steps{grid-template-columns:1fr 1fr}
  .pg-thank-you .section{padding:48px 0}
  .pg-thank-you .confirm{padding:56px 0 48px}
  .pg-thank-you .steps,.pg-thank-you .browse{grid-template-columns:1fr}
  .pg-thank-you .social{grid-template-columns:1fr 1fr}
}

/* ---------- 系统分页器外观（把设计稿的 .pager 样式映射到 CI 的 Bootstrap 结构） ----------
   $pager_code 由 app/config/pagination.php 生成，结构固定为
   <nav><ul class="pagination"><li class="page-item"><a class="page-link">…
   设计稿画的是 .pager > a/span，这里按同一视觉规格套到系统结构上，
   模板里直接 <?= $pager_code ?> 即可，不要再自己包一层 .pager。 */
/* 分页直接用 Bootstrap 的 .pagination 组件，各种状态（hover / active / disabled）
   交给它自己的 --bs-pagination-* 变量，本文件只喂品牌值。
   原来那 6 条写死颜色的规则因此全部删掉 —— 以后要调分页外观改变量就行。 */
.pagination{
  --bs-pagination-padding-x:12px;
  --bs-pagination-padding-y:0;
  --bs-pagination-font-size:13px;
  --bs-pagination-color:var(--ink);
  --bs-pagination-bg:#fff;
  --bs-pagination-border-color:var(--line);
  --bs-pagination-border-radius:0;
  --bs-pagination-hover-color:var(--orange);
  --bs-pagination-hover-bg:#fff;
  --bs-pagination-hover-border-color:var(--orange);
  --bs-pagination-focus-color:var(--orange);
  --bs-pagination-focus-bg:#fff;
  --bs-pagination-focus-box-shadow:none;
  --bs-pagination-active-color:#fff;
  --bs-pagination-active-bg:var(--deep);
  --bs-pagination-active-border-color:var(--deep);
  --bs-pagination-disabled-color:var(--muted);
  --bs-pagination-disabled-bg:var(--soft);
  --bs-pagination-disabled-border-color:var(--line);
  justify-content:center;align-items:center;gap:8px;margin-top:46px;flex-wrap:wrap
}

/* 设计稿的分页项是 42×42 的独立方块、字重 800；Bootstrap 默认是行内 padding 撑开、
   相邻项靠 margin-left:-1px 把边框叠一起，这两点要盖掉 */
.pagination .page-item{display:block}
.pagination .page-link{display:grid;place-items:center;min-width:42px;height:42px;font-weight:800}
.pagination .page-item:not(:first-child) .page-link{margin-left:0}

/* 「共 N 条，每页显示 M 条」那一项不是方块按钮：它内部是 <b> + <input> + 三段文字，
   被上面那条 display:grid 当成 5 个网格项塞进单列里竖着堆起来
   （实测内容高 101px，撑破 42px 的固定高度，宽度也只有 104px）。
   这一项恢复普通行内流，按一行文字排；宽度交给内容自己撑。
   markup 由 app/config/pagination.php 生成、动不得，只能在样式这边兜。 */
.pagination .page-link[data-pagination-summary]{
  display:block;width:auto;min-width:0;height:42px;line-height:40px;   /* 42 - 上下各 1px 边框 */
  white-space:nowrap;font-weight:400;color:var(--muted)
}
/* 每页条数输入框：框架给它写了 border:0 的行内样式（权重压不过，只能 !important），
   不补一条下划线的话它看着就是段死文字，没人知道能改 */
.pagination .page-link[data-pagination-summary] input{
  vertical-align:baseline;border-bottom:1px solid var(--line)!important;color:var(--ink);font-weight:700
}
.pagination .page-link[data-pagination-summary] input:focus{
  border-bottom-color:var(--orange)!important;outline:none
}

/* ---------- 详情页补充组件（设计稿未画，对接后台后需要） ---------- */
/* 目录由正文 h2 自动生成；正文没有 h2 时目录整块不输出，此时正文占满整行 */
.pg-blog-article .layout--notoc{grid-template-columns:1fr}
.pg-blog-article .tags{display:flex;flex-wrap:wrap;gap:8px}
/* 上一篇 / 下一篇 */
.artnav{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:40px;padding-top:28px;border-top:1px solid var(--line)}
.artnav a{display:block;padding:18px 20px;background:var(--soft);border:1px solid var(--line);transition:.2s}
.artnav a:hover{border-color:var(--blue);background:#fff}
.artnav a:last-child:nth-child(odd){grid-column:2}
.artnav i{display:block;font-style:normal;color:var(--blue);font-size:11px;font-weight:900;letter-spacing:.8px;text-transform:uppercase}
.artnav span{display:block;margin-top:7px;color:var(--navy);font-size:14px;font-weight:800;line-height:1.4}
@media(max-width:767.98px){
  .artnav{grid-template-columns:1fr}
  .artnav a:last-child:nth-child(odd){grid-column:auto}
}

/* ---------- 证书页：扫描件可点击全屏查看（与产品详情主图同一套 lightbox） ---------- */
.pg-certifications .certs img.photo{cursor:zoom-in;transition:opacity .15s}
.pg-certifications .certs img.photo:hover{opacity:.92}

/* ---------- 产品图全屏相册（Bootstrap Modal 的皮肤，DOM 由 site.js 建在 <body> 下） ----------
   所以选择器不能带 .pg-product-ro-system 作用域。
   图片高度不设上限：宽度顶满、超高的长图交给 .modal-body 纵向滚动（客户的机型
   细节图常是竖长图，按视口 contain 缩下去等于看不清）。
   .pdlb-stage 用 min-height:100% 而不是 height:100%——flex 居中一旦内容比容器高，
   height 会把顶部挤成负溢出、滚动条也够不着，min-height 则由内容把它撑高。 */
.pdlb .modal-content{background:#091121f7;border:0;border-radius:0}
.pdlb .modal-body{padding:0;overflow:auto;overscroll-behavior:contain}
.pdlb .pdlb-stage{min-height:100%;display:flex;align-items:center;justify-content:center;padding:60px 16px}
.pdlb .pdlb-img{display:block;max-width:100%;height:auto}
/* 视频不像图片那样交给纵向滚动：必须整块落在视口里才能看到控制条，所以宽高都封顶
   （上下各让出 60px 给关闭钮 / 页码，与 .pdlb-stage 的 padding 一致） */
.pdlb .pdlb-video{display:block;max-width:100%;max-height:calc(100vh - 120px);background:#000}
.pdlb [hidden]{display:none!important}
.pdlb .pdlb-btn{position:absolute;z-index:5;display:flex;align-items:center;justify-content:center;
  width:46px;height:46px;padding:0;border:0;border-radius:50%;background:#ffffff24;color:#fff;font-size:18px;transition:background .18s}
.pdlb .pdlb-btn:hover{background:var(--orange)}
.pdlb .pdlb-close{top:16px;right:16px}
.pdlb .pdlb-prev{top:50%;left:16px;transform:translateY(-50%)}
.pdlb .pdlb-next{top:50%;right:16px;transform:translateY(-50%)}
.pdlb .pdlb-count{position:absolute;z-index:5;bottom:16px;left:50%;transform:translateX(-50%);
  padding:5px 13px;border-radius:999px;background:#ffffff24;color:#fff;font-size:13px;font-weight:700;letter-spacing:.04em}
@media(max-width:700px){
  .pdlb .pdlb-btn{width:38px;height:38px;font-size:15px}
  .pdlb .pdlb-prev{left:8px}
  .pdlb .pdlb-next{right:8px}
  .pdlb .pdlb-stage{padding:54px 8px}
  .pdlb .pdlb-video{max-height:calc(100vh - 108px)}
}

/* ============================================================
   响应式补强（PC / 平板 / 手机三档实机校准）
   ------------------------------------------------------------
   本节修的是同一类根因：内页作用域规则（.pg-xxx .foo，两个类）特异性高于
   共享响应式规则（.foo，一个类），断点里改 .foo 对带作用域的页面不生效 ——
   表现是「手机上还是 5 列 / 3 列，整页能左右拖动」。
   新增页面作用域样式时，凡是多列网格，必须同时在本节按 .pg-xxx .foo 补断点。
   本节必须排在文件末尾「深色区文字覆盖·重申」之前。
   ============================================================ */

/* ---------- ① 网格轨道被子项 min-content 顶开 ----------
   网格子项默认 min-width:auto，其 min-content 会把 1fr 轨道撑开；
   案例详情页正文里的宽表格就把塌陷后的单列顶到 680px，
   整页（含侧栏）跟着横向溢出。给这些布局网格的子项显式 min-width:0。 */
.layout>*,.split>*,.faqwrap>*,.contactgrid>*,.top>*,.visit>*,.mapsplit>*,
.mapwrap>*,.subgrid>*,.casecard>*,.lineitem>*,.machine>*,.featured>*,
.related>*,.relgrid>*,.cases>*,.posts>*,.cats>*,.solutions>*,.projects>*,
.eqgrid>*,.intlcases>*,.machines>*{min-width:0}

/* ---------- ② 宽表格一律横滚 ----------
   基础 .tablescroll 原本只在 ≤700 才有 overflow-x，
   700–1080 这一档（平板竖屏）表格会直接顶破容器。 */
.tablescroll{overflow-x:auto;max-width:100%;-webkit-overflow-scrolling:touch}
/* 后台富文本里没套 .tablescroll 的裸表格兜底（套了的是 .tablescroll>table，命中不到） */
.article>table,.block>table{display:block;overflow-x:auto;max-width:100%}

/* ---------- ③ 富文本媒体与长串不撑破容器 ---------- */
img{height:auto}                       /* 只兜底没写高度的图；.photo 等带类的高度不受影响 */
iframe,video,embed,object{max-width:100%}
.article,.block,.crumbs,.footer,.card,.sidebox{overflow-wrap:break-word}

/* ---------- ④ ≤1080（平板横屏 / 窄笔记本） ---------- */
@media(max-width:991.98px){
  /* 流程步骤：作用域版本仍是 5 列，手机上直接溢出一屏半 */
  /* 相关内容卡片：作用域版本 3/4 列 */
  .pg-blog-article .relgrid,.pg-project-case-yingjia .relgrid,
  .pg-product-ro-system .relgrid,
  .pg-projects-index .intlcases,.related,.caps{grid-template-columns:repeat(2,minmax(0,1fr))}
  /* FAQ 左右分栏：共享规则已塌陷，作用域版本没跟上 */
  .pg-category-water-treatment .faqwrap,.pg-products-index .faqwrap,
  .pg-services .faqwrap,.pg-solutions-index .faqwrap{grid-template-columns:minmax(0,1fr);gap:32px}
  /* 客户 logo 墙：8 列在平板上每格不到 90px（案例页那面墙已改 auto-fill 自适应，不在此列） */
  .pg-about .clients{grid-template-columns:repeat(4,minmax(0,1fr))}
  /* 案例地图 + 区域列表 */
  .pg-projects-index .mapwrap{grid-template-columns:minmax(0,1fr)}
  .pg-projects-index .mapwrap .photo{min-height:260px}
  /* 单列布局里侧栏不该再吸顶（共享 .side{position:static} 被作用域版本盖掉了） */
  .pg-category-water-treatment .side,.pg-product-ro-system .side,
  .pg-project-case-yingjia .side{position:static;top:auto}
  /* 产品详情锚点条：本档头部仍是 88px，原来的 70px 会被压进头部底下 */
  .pg-product-ro-system .jump{top:88px}
}

/* ---------- ⑤ ≤700（手机） ---------- */
@media(max-width:767.98px){
  /* 悬浮联系条：右侧竖条在手机上会压住正文右边，改成贴底横条五等分，
     并给页脚垫出它的高度 —— 否则滚到底时它正好盖住「隐私政策 · Sitemap」那一行 */
  .floatbar{top:auto;right:0;bottom:0;left:0;display:flex;background:var(--navy);transform:none}
  .floatbar__cell{flex:1;min-width:0}
  .floatbar__btn{width:100%;height:50px;margin:0;border-right:1px solid #ffffff29;border-radius:0;box-shadow:none}
  .floatbar__cell.is-open .floatbar__btn{border-radius:0}
  .floatbar__cell:last-child .floatbar__btn{border-right:0}
  .floatbar__btn>b{display:none}                 /* 五格里再塞文字，360px 屏每格只剩 72px */
  /* 面板脱离按钮，改成吸在横条正上方铺满宽度 */
  .floatbar__panel{position:fixed;top:auto;right:10px;bottom:60px;left:10px;transform:none}
  .floatbar__panel-head{white-space:normal}
  .floatbar__qrs{justify-content:center}
  .floatbar__qr{width:auto;max-width:180px;flex:1}
  .floatbar__qr img{width:100%;height:auto;aspect-ratio:1}
  .footer{padding-bottom:64px}
  /* 弹窗页脚：一行放不下「回复时效 + 提交按钮」，让按钮换行占满 */
  .fcform .modal-footer{flex-wrap:wrap}
  .fcform .form .btn{width:100%}
  .pg-services .steps,.pg-solutions-index .steps,
  .pg-about .clients{grid-template-columns:repeat(2,minmax(0,1fr))}
  /* 案例页 logo 墙不在此列：140px 下限在手机上自然落成 2 列，不用再加断点 */
  .pg-blog-article .relgrid,.pg-project-case-yingjia .relgrid,
  .pg-projects-index .intlcases,.pg-projects-index .briefgrid,
  .related,.caps{grid-template-columns:minmax(0,1fr)}
  .pg-product-ro-system .jump{top:70px}   /* 本档头部收到 70px */

  /* 头部一行：logo 固定 160px + 不可压缩的 CTA + 汉堡，360px 屏放不下 */
  .px-nav{gap:14px}
  .logo{width:auto;min-width:0;flex:0 1 auto}
  .logo-img{max-width:100%;max-height:44px}
  /* 展开的菜单按可视视口限高；dvh 让 iOS 地址栏收起时不留空档 */
  .navlinks.open{max-height:calc(100vh - 70px);max-height:calc(100dvh - 70px)}

  /* 段落标题栏：共享规则在本档已改成 display:block（标题一行、按钮另起一行），
     但各内页作用域版本仍是 flex:nowrap，标题和按钮硬挤在一行 ——
     窄到 320px 时按钮直接被挤出屏幕（实测 /about/ 的 View All Certificates 溢出 22px）。 */
  .pg-about .sec-head,.pg-blog-index .sec-head,.pg-certifications .sec-head,
  .pg-contact .sec-head,.pg-products-index .sec-head,.pg-project-case-yingjia .sec-head,
  .pg-projects-index .sec-head,.pg-services .sec-head,
  .pg-solution-bottled-water-line .sec-head,.pg-solutions-index .sec-head,
  .pg-certifications .grouphead,.pg-products-index .grouphead{display:block}
  .pg-certifications .grouphead span,.pg-products-index .grouphead span{display:block;margin-top:5px}

  /* iOS Safari 对 <16px 的输入框会在聚焦时自动放大整页，且不会缩回来 */
  .field input,.field select,.field textarea,
  .pg-contact .field input,.pg-contact .field select,.pg-contact .field textarea,
  .pg-product-ro-system .field input,.pg-product-ro-system .field select,.pg-product-ro-system .field textarea,
  .pg-solution-bottled-water-line .field input,.pg-solution-bottled-water-line .field select,
  .pg-solution-bottled-water-line .field textarea,
  .pg-blog-index .subform input{font-size:16px}

  /* 页脚链接点击热区（原来行高 15px，指尖点不准） */
  .footer li{margin:2px 0}
  .footer li a{display:inline-block;padding:7px 0}
  .footsocial{gap:14px 18px}
  .footsocial a{padding:5px 0}

  .pagination{margin-bottom:8px}
}

/* ---------- ⑥ ≤400（小屏手机 iPhone SE / 安卓 360） ---------- */
@media(max-width:400px){
  .container{width:calc(100% - 20px)}
  .px-nav{gap:8px}
  .logo-text{font-size:19px}
  .nav-cta{padding:9px 10px;font-size:11px;letter-spacing:0}
  .navtoggle{padding:7px 10px}
  .hero-facts{gap:16px}
  .trustbar li{padding:18px 14px}
  .form,.pg-contact .form{padding:20px 16px}
}

/* ---------- 页头 banner（.pagehero，见 layouts/pagehero.php） ----------
   客户在后台上传的图直接整幅展示：不裁切、不叠遮罩、不铺底色。
   文字从图上移到图的下方并改成深色 —— 压在图上就必须加一层深色遮罩才读得出来，
   而那层遮罩正是客户要求去掉的东西；何况后台的图既有白底的产线渲染图
   也有车间实拍照，压在上面的白字必然有一种读不出来。
   本节位置：必须排在所有 .pg-<页面> 作用域规则之后 —— 那些规则里的
   color:#ffffffd0 与本节同为「两个类 + 一个元素」，只能靠源顺序压过去。 */
.pagehero--photo{color:var(--navy)}
.pagehero--photo::before{content:none}                       /* 去掉蓝色渐变遮罩 */
.pagehero--photo .eyebrow{color:var(--blue)}
.pagehero.pagehero--photo .container{padding:26px 0 24px}
.pagehero.pagehero--photo h1{color:var(--navy)}
.pagehero.pagehero--photo p{color:var(--muted)}

/* banner 的高度 = 第一张（封面图）按页宽等比缩放后的高度：只有它留在文档流里，
   后面几张绝对定位盖在同一块区域上、用 contain 等比内缩。
   客户传的几张图比例差得很远（白底产线渲染图 1912×544、车间实拍 1920×720、
   还有 1408×685 的），固定高度 + cover 会把超宽的渲染图裁掉两头，
   让每张各自撑高又会翻一页跳一次；这一版两样都不会发生。
   max-height 是给竖图兜底的：真传了竖图也不会把整屏顶满。
   淡入淡出不能两张一起半透明 —— 中间那一帧两张各剩一半不透明度，
   白底图叠出来就是闪一下白。改成「新图在上层淡入，旧图原样待着，
   等淡完再瞬间撤掉」：退场用 0s 过渡 + .55s 延时，到点直接消失，
   此时它已被新图完全盖住，看不见。 */
.pagehero-media{position:relative;overflow:hidden}
.pagehero-slide{position:absolute;inset:0;z-index:0;opacity:0;pointer-events:none;transition:opacity 0s linear .55s}
.pagehero-slide:first-child{position:relative}
.pagehero-slide.is-active{z-index:1;opacity:1;pointer-events:auto;transition:opacity .55s ease}
.pagehero-slide img{display:block;width:100%;height:100%;object-fit:contain;margin:0 auto}
.pagehero-slide:first-child img{height:auto;max-height:78vh}

/* 控件配色要同时压得住白底渲染图和深色实拍照：箭头用半透明白底 + 深蓝图标，
   圆点用中灰（白底、深底上都看得见），当前页用品牌橙 */
.pagehero-arrow{position:absolute;top:50%;z-index:2;transform:translateY(-50%);display:grid;place-items:center;width:44px;height:44px;padding:0;border:0;background:#ffffffd9;color:var(--navy);font-size:15px;cursor:pointer;box-shadow:0 2px 12px #06355f2e;transition:background .18s,color .18s}
.pagehero-arrow:hover{background:var(--navy);color:#fff}
/* 右边要给悬浮联系条（.floatbar，固定在 right:0、宽 52px）让位，
   否则「下一张」箭头被它压掉大半，只剩左边一条边可点。左右取同一个值保持对称。
   手机端不受影响：那边悬浮条是贴底横条，箭头在下面的媒体查询里回到 8px。 */
.pagehero-arrow--prev{left:76px}
.pagehero-arrow--next{right:76px}
.pagehero-dots{position:absolute;right:0;bottom:14px;left:0;z-index:2;display:flex;justify-content:center;gap:8px}
/* 圆点压在客户的图上，底下是白底渲染图还是深色实拍都有可能：
   中灰本身两种底都看得见，再加一点投影保证浅色照片上也不糊 */
.pagehero-dot{width:28px;height:4px;padding:0;border:0;background:#9fb0bf;cursor:pointer;box-shadow:0 1px 4px #06355f4d;transition:background .18s}
.pagehero-dot:hover{background:var(--navy)}
.pagehero-dot.is-active{background:var(--orange)}

@media(max-width:767.98px){
  .pagehero-arrow{width:34px;height:34px;font-size:12px}
  .pagehero-arrow--prev{left:8px}
  .pagehero-arrow--next{right:8px}
  .pagehero-dots{bottom:9px;gap:6px}
  .pagehero-dot{width:20px;height:3px}
  .pagehero.pagehero--photo .container{padding:20px 0 18px}
}

/* ---------- 深色区文字覆盖·重申 ----------
   内页作用域规则（.pg-xxx .sec-title 等）位于文件后部，特异性与第 33-35 行的
   .section--deep 覆盖相同（均为两个类），按源顺序会反把深蓝底上的标题染回
   navy/灰色。在所有作用域规则之后重申一次，保证深色区文字始终可读。
   本节必须保持在文件末尾；新增页面作用域样式请加在本节之前。 */
.section--deep .sec-title{color:#fff}
.section--deep .sec-lead{color:#ffffffb8}
.section--deep .eyebrow{color:var(--yellow)}
