/* 北京清析技术研究院官网 · 全站样式表（开发版生成）
   由 _脚本/build_dev_site.py 从 移动端与SEO/ 的共享内联样式抽出，请勿手改。
   要改样式请改 _脚本/build_design_pages.py，再依次重跑三层脚本。*/

*{margin:0;padding:0;box-sizing:border-box}
:root{
  /* 品牌紫（清华紫 Pantone 2593C = #660874） */
  --p900:#2E0736; --p800:#4A0553; --p700:#660874; --p600:#7C1C90;
  --p500:#8A1F9C; --p400:#A855C4; --p300:#C79BD8; --p200:#E2CDEC;
  --p100:#F0E2F5; --p50:#F9F4FB;
  /* 中性 */
  --ink:#1F1A22; --ink2:#4A4450; --ink3:#7A7380; --ink4:#A79FAC;
  --line:#EDE7F0; --line2:#DED4E4; --pagebg:#FBFAFC;
  /* 徽章金（仅用于资质徽章，克制使用） */
  --gold:#B8934A; --goldbg:#FBF5E8; --goldline:#E8D9B4;
  /* 功能色（仅状态与数据，不做品牌表达） */
  --ok:#1F7A4D; --okbg:#EBF6F0; --warn:#B47B1E; --warnbg:#FDF6E9;
  --err:#B3402E; --errbg:#FCEEEC; --info:#2A6BA8; --infobg:#EEF5FC;
  --r:8px; --rs:6px; --rl:12px;
  --sh:0 1px 2px rgba(58,7,69,.05);
  --sh2:0 8px 24px rgba(58,7,69,.10);
}
body{font-family:"PingFang SC","HarmonyOS Sans SC","Source Han Sans SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;background:var(--pagebg);color:var(--ink);line-height:1.7;-webkit-font-smoothing:antialiased}
a{text-decoration:none;color:inherit}
code{font-family:Menlo,Consolas,monospace;font-size:12.5px;background:var(--p50);color:var(--p800);padding:1.5px 6px;border-radius:4px;border:1px solid var(--line)}

/* ============================================================
   站点样式（设计稿内部使用）—— 命名不加前缀，与文档外壳隔离
   ============================================================ */
.pg{background:#fff;color:var(--ink);font-size:15px;line-height:1.75;font-family:inherit}
.pg *{box-sizing:border-box}
.pg img{display:block;max-width:100%}
.ct2{max-width:1200px;margin:0 auto;padding:0 24px}

/* --- 头部（V1.2：单行 92px · logo/导航同列 · 导航悬停二级菜单） --- */
.hd-main{background:#fff;border-bottom:1px solid var(--line);position:relative;z-index:50}
.hd-main .ct2{display:flex;align-items:center;gap:16px;height:92px}
.logo{display:flex;align-items:center;flex:0 0 auto}
.logo-img{height:40px;width:auto;flex:0 0 auto;object-fit:contain;display:block}
.hd-cert{display:flex;align-items:center;gap:14px;padding-left:17px;border-left:1px solid var(--line2);flex:0 0 auto}
/* V1.95：徽章为现网同款资质图标，悬停在下方弹出白底证书卡（纯 CSS :hover，不引 JS） */
.cert-ico{position:relative;flex:0 0 auto;display:flex;align-items:center;height:44px}
.cert-ico .ci-img{display:block;height:32px;width:auto}
.cert-pop{position:absolute;top:100%;left:50%;transform:translateX(-50%);display:none;width:280px;padding-top:26px;z-index:60}
.cert-ico:hover .cert-pop,.cert-ico:focus-within .cert-pop{display:block}
.cert-card{display:block;position:relative;background:#fff;border:1px solid var(--line2);border-radius:8px;box-shadow:0 12px 32px rgba(58,7,69,.16);padding:8px}
.cert-card::before{content:"";position:absolute;top:-5px;left:50%;margin-left:-5px;width:9px;height:9px;background:#fff;border-left:1px solid var(--line2);border-top:1px solid var(--line2);transform:rotate(45deg)}
.cert-card img{display:block;width:100%;height:auto;border-radius:4px}
/* 导航：与 logo 同处一行，左起对齐栅格；整列 92px 拉满，保证 hover 热区与菜单不断层 */
.hd-nav{display:flex;align-items:stretch;gap:6px;flex:0 1 auto;margin-left:2px;align-self:stretch}
.ni{position:relative;display:flex;align-items:center}
.ni>a{height:38px;padding:0 17px;display:flex;align-items:center;font-size:15px;letter-spacing:.2px;color:var(--ink2);border-radius:6px;white-space:nowrap;transition:background .16s,color .16s}
.ni>a:hover{background:var(--p50);color:var(--p700)}
.ni.on>a{background:var(--p700);color:#fff;font-weight:600}
.ni.on>a:hover{background:var(--p800);color:#fff}
/* 二级菜单：整列 92px 为热区，鼠标移到频道名即展开 */
.drop{position:absolute;top:100%;left:-6px;z-index:40;padding-top:0;opacity:0;visibility:hidden;transform:translateY(6px);transition:opacity .18s ease,transform .18s ease,visibility .18s}
.ni:hover .drop,.ni:focus-within .drop{opacity:1;visibility:visible;transform:translateY(0)}
.drop::before{content:"";position:absolute;top:-5px;left:26px;width:9px;height:9px;background:#fff;border-left:1px solid var(--line2);border-top:1px solid var(--line2);transform:rotate(45deg)}
.drop-in{background:#fff;border:1px solid var(--line2);border-radius:10px;box-shadow:0 12px 32px rgba(58,7,69,.13);padding:12px;min-width:186px}
.drop-in a{display:block;font-size:13.5px;color:var(--ink2);padding:8px 10px;border-radius:6px;white-space:nowrap;transition:.14s}
.drop-in a:hover{background:var(--p50);color:var(--p700)}
.drop-in a b{font-weight:500;color:var(--ink)}
.drop-in a:hover b{color:var(--p700)}
.drop-in .all{margin-top:6px;padding-top:8px;border-top:1px solid var(--line);color:var(--p700);font-size:13px}
.drop.wide{left:-14px}
.drop.wide .drop-in{min-width:0;padding:14px}
.drop-mega{display:grid;grid-template-columns:repeat(3,194px);gap:2px}
.drop-mega a{padding:9px 11px}
.drop-mega a span{display:block;font-size:11.5px;color:var(--ink3);margin-top:3px;line-height:1.5;white-space:normal}
.drop.wide .all{margin:10px 11px 2px}
.drop.demo{position:static;opacity:1;visibility:visible;transform:none}
.drop.demo::before{display:none}
.hd-cta{margin-left:auto;display:flex;align-items:center;gap:16px;flex:0 0 auto}
/* 电话（V1.20：图标 + 号码单行；原「号码 / 免费咨询·工作日」两层已废，服务时间不在头部公开） */
.tel{display:flex;align-items:center;gap:10px;white-space:nowrap}
.tel-ico{width:36px;height:36px;flex:0 0 auto;border-radius:10px;background:var(--p50);border:1px solid var(--p100);color:var(--p700);display:flex;align-items:center;justify-content:center}
.tel-ico svg{width:19px;height:19px;display:block}
.tel b{color:var(--p700);font-size:19px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:.4px;line-height:1}
/* 窄屏压缩：不隐藏任何元素，只收间距与字号 */
@media (max-width:1180px){.hd-main .ct2{gap:10px}.hd-cert{padding-left:11px;gap:10px}.cert-ico{height:40px}.cert-ico .ci-img{height:28px}.cert-pop{width:236px}.ni>a{padding:0 9px;font-size:14px}.tel{gap:8px}.tel b{font-size:16px}.tel-ico{width:32px;height:32px;border-radius:8px}.tel-ico svg{width:17px;height:17px}}
.mb-cert{font-size:9.5px;color:#8A6D2E;background:var(--goldbg);border:1px solid var(--goldline);border-radius:4px;padding:2px 6px;letter-spacing:.3px;white-space:nowrap}

/* --- 按钮 --- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:42px;padding:0 22px;border-radius:var(--rs);font-size:15px;border:1px solid transparent;cursor:pointer;white-space:nowrap;font-family:inherit;transition:.16s}
.btn-p{background:var(--p700);color:#fff;border-color:var(--p700)}
.btn-p:hover{background:var(--p800);border-color:var(--p800)}
.btn-o{background:#fff;color:var(--p700);border-color:var(--p300)}
.btn-o:hover{background:var(--p50)}
.btn-g{background:#fff;color:var(--ink2);border-color:var(--line2)}
.btn-lg{height:50px;padding:0 32px;font-size:16px}
.btn-sm{height:34px;padding:0 15px;font-size:13.5px}
.btn-blk{width:100%}

/* --- 通用区块 --- */
.s{padding:62px 0}
.s.tint{background:var(--p50)}
.s.dark{background:linear-gradient(135deg,var(--p800),var(--p600))}
.s-head{text-align:center;max-width:820px;margin:0 auto 34px}
.s-head .kicker{display:inline-block;font-size:12px;letter-spacing:2px;color:var(--p700);background:var(--p100);border-radius:20px;padding:3px 14px;margin-bottom:13px}
.s-head h2{font-size:28px;font-weight:600;letter-spacing:.5px;line-height:1.4}
.s-head p{margin-top:11px;font-size:14.5px;color:var(--ink3)}
.s-head.inv h2{color:#fff}
.s-head.inv p{color:#DCC3E6}
.s-head.inv .kicker{background:rgba(255,255,255,.16);color:#fff}
.h3bar{display:flex;align-items:center;gap:10px;margin-bottom:18px}
.h3bar::before{content:"";width:4px;height:18px;border-radius:2px;background:var(--p700)}
.h3bar b{font-size:19px;font-weight:600}
.h3bar .more{margin-left:auto;font-size:13.5px;color:var(--ink3);font-weight:400}
.grid{display:grid;gap:20px}
.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
.g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
.g6{grid-template-columns:repeat(6,minmax(0,1fr))}

/* --- 卡片 --- */
.card{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:20px;box-shadow:var(--sh);transition:.16s}
.card:hover{border-color:var(--p300);box-shadow:var(--sh2)}
.card h4{font-size:16px;font-weight:600;margin-bottom:7px}
.card p{font-size:13.5px;color:var(--ink3);line-height:1.7}
.card .thumb{height:104px;border-radius:var(--rs);background:linear-gradient(140deg,var(--p100),var(--p200));margin-bottom:14px;display:flex;align-items:center;justify-content:center;color:var(--p500);font-size:12px;letter-spacing:1px}

/* --- 标签 / 徽章 --- */
.tg{display:inline-block;font-size:11.5px;border-radius:5px;padding:2px 9px;white-space:nowrap;line-height:1.7}
.tg.p{background:var(--p100);color:var(--p700);border:1px solid var(--p200)}
.tg.o{background:#fff;color:var(--ink3);border:1px solid var(--line2)}
.tg.ok{background:var(--okbg);color:var(--ok);border:1px solid #CFE7D9}
.tg.wr{background:var(--warnbg);color:var(--warn);border:1px solid #EFDDB8}
.tg.er{background:var(--errbg);color:var(--err);border:1px solid #F2D5D0}
.tg.gold{background:var(--goldbg);color:var(--gold);border:1px solid var(--goldline)}
.cma{display:inline-flex;align-items:center;gap:6px;background:var(--goldbg);border:1px solid var(--goldline);border-radius:20px;padding:4px 13px;font-size:12.5px;color:#8A6D2E;font-weight:500}
.cma::before{content:"";width:13px;height:13px;border-radius:50%;background:var(--gold);opacity:.85}

/* --- 表格 --- */
.tb{width:100%;border-collapse:collapse;border:1px solid var(--line);border-radius:var(--r);overflow:hidden;font-size:14px}
.tb th{background:var(--p50);color:var(--p800);font-weight:600;text-align:left;padding:11px 14px;font-size:13px;border-bottom:1px solid var(--line);white-space:nowrap}
.tb td{padding:11px 14px;border-bottom:1px solid var(--line);color:var(--ink2);font-size:13.5px}
.tb tr:last-child td{border-bottom:none}
.tb tbody tr:nth-child(even){background:#FCFAFD}

/* --- 富文本（后台 wangEditor 产出，经白名单过滤后 |raw 直出） ---
   编辑器里：h2/h3 = 内容小标题，p/ul/table 常规排版；表格自动套用与 .tb 一致的皮肤 */
.rt{font-size:15px;line-height:1.95;color:var(--ink2)}
.rt p{margin-bottom:12px}
.rt p:last-child{margin-bottom:0}
/* H2/H3 与设计稿小节标题（.prose h3 / .prose h4）逐字一致：18px 墨色 + 左侧 4px 紫条（2026-10-16） */
.rt h2{font-size:18px;font-weight:600;color:var(--ink);margin:26px 0 10px;padding-left:13px;border-left:4px solid var(--p700);line-height:1.5}
.rt h3{font-size:15.5px;font-weight:600;color:var(--p800);margin:18px 0 8px}
.rt h4{font-size:14.5px;font-weight:600;color:var(--ink2);margin:14px 0 6px}
.rt ul,.rt ol{margin:0 0 12px 20px}
.rt li{margin:5px 0;font-size:14.5px}
.rt a{color:var(--p700);text-decoration:underline}
.rt img{max-width:100%;height:auto;border-radius:var(--r)}
.rt blockquote{margin:0 0 12px;padding:10px 16px;border-left:4px solid var(--p100);background:var(--p50);border-radius:0 var(--r) var(--r) 0}
.rt table{width:100%;border-collapse:collapse;border:1px solid var(--line);border-radius:var(--r);overflow:hidden;font-size:14px;margin:4px 0 16px}
.rt th{background:var(--p50);color:var(--p800);font-weight:600;text-align:left;padding:11px 14px;font-size:13px;border-bottom:1px solid var(--line)}
.rt td{padding:11px 14px;border-bottom:1px solid var(--line);color:var(--ink2);font-size:13.5px}
.rt tr:last-child td{border-bottom:none}
.rt tbody tr:nth-child(even){background:#FCFAFD}

/* --- 面包屑 --- */
.bc{display:flex;align-items:center;gap:7px;font-size:13px;color:var(--ink3);padding:16px 0}
.bc a:hover{color:var(--p700)}
.bc em{font-style:normal;color:var(--ink4)}
.bc b{color:var(--ink2);font-weight:500}

/* --- 分页 --- */
.pgno{display:flex;align-items:center;justify-content:center;gap:7px;padding:30px 0 6px}
.pgno a{min-width:36px;height:36px;display:flex;align-items:center;justify-content:center;border:1px solid var(--line2);border-radius:var(--rs);font-size:13.5px;color:var(--ink2);padding:0 11px}
.pgno a.on{background:var(--p700);border-color:var(--p700);color:#fff;font-weight:600}
.pgno span{font-size:13.5px;color:var(--ink3);padding:0 4px}

/* --- 侧栏 --- */
.side{display:grid;grid-template-columns:250px minmax(0,1fr);gap:28px;align-items:start}
.side.rev{grid-template-columns:minmax(0,1fr) 300px}
.sbox{background:#fff;border:1px solid var(--line);border-radius:var(--r);overflow:hidden;margin-bottom:18px}
.sbox-t{padding:13px 16px;background:var(--p50);border-bottom:1px solid var(--line);font-size:14.5px;font-weight:600;color:var(--p800)}
.sbox-b{padding:8px 6px}
.sbox-b a{display:block;padding:9px 12px;font-size:14px;color:var(--ink2);border-radius:var(--rs)}
.sbox-b a.on{background:var(--p100);color:var(--p700);font-weight:600}
.sbox-b a:hover{background:var(--p50);color:var(--p700)}
.sbox-b.plain a{display:flex;justify-content:space-between;gap:10px;padding:9px 16px}
.sbox-b.plain a span{color:var(--ink4);font-size:12.5px}

/* --- 咨询卡 --- */
.cta-card{background:linear-gradient(150deg,var(--p800),var(--p600));border-radius:var(--r);padding:22px;color:#fff;text-align:center}
.cta-card h4{font-size:16px;font-weight:600;margin-bottom:6px}
.cta-card p{font-size:12.5px;color:#DCC3E6;margin-bottom:14px}
.cta-card .num{font-size:24px;font-weight:600;letter-spacing:1px;font-variant-numeric:tabular-nums;margin-bottom:4px}
.cta-card .hint{font-size:11.5px;color:#C9A9D6;margin-bottom:16px}
.cta-card .btn+.btn{margin-top:9px}

/* --- 表单 --- */
.fld{margin-bottom:14px}
.fld label{display:block;font-size:13.5px;color:var(--ink2);margin-bottom:6px}
.fld label em{color:var(--err);font-style:normal;margin-left:3px}
.fld .in{width:100%;height:44px;border:1px solid var(--line2);border-radius:var(--rs);padding:0 14px;font-size:14px;color:var(--ink);font-family:inherit;background:#fff}
.fld textarea.in{height:96px;padding:12px 14px;resize:none;line-height:1.6}
.fld .in::placeholder{color:var(--ink4)}

/* --- 数据带 --- */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:0;background:#fff;border:1px solid var(--line);border-radius:var(--rl);overflow:hidden;box-shadow:var(--sh)}
.stats div{padding:24px 16px;text-align:center;border-right:1px solid var(--line)}
.stats div:last-child{border-right:none}
.stats b{display:block;font-size:30px;font-weight:600;color:var(--p700);font-variant-numeric:tabular-nums;line-height:1.2}
.stats b small{font-size:14px;font-weight:500;margin-left:2px}
.stats span{display:block;font-size:13px;color:var(--ink3);margin-top:6px}

/* --- 页脚 --- */
.ft{background:var(--p900);color:#C9B7D1;font-size:13px}
.ft-top{padding:46px 0 4px;display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr 1fr;gap:24px}
.ft-top .ft-contact{grid-column:1/-1;display:grid;grid-template-columns:auto auto;justify-content:center;align-items:baseline;gap:6px 14px}
.ft-top .ft-contact i{justify-self:end;font-style:normal;font-size:14px;color:#A992B5;letter-spacing:.5px;white-space:nowrap;line-height:1.8}
.ft-top .ft-contact span{color:#B9A4C3;font-size:13px;line-height:1.8}
@media (max-width:1180px){.ft-top{grid-template-columns:1.3fr .9fr .9fr .9fr .9fr;gap:20px}}
@media (max-width:1020px){.ft-top{grid-template-columns:repeat(3,1fr);gap:30px 22px;padding:40px 0 4px}.ft-brand{grid-column:1/-1}}
@media (max-width:600px){.ft-top{grid-template-columns:repeat(2,1fr);gap:26px 18px}.ft-top .ft-contact{gap:7px 10px}}
.ft-top .ft-brand .logo-img{height:34px;width:auto}

.ft-top h5{color:#fff;font-size:14.5px;font-weight:600;margin-bottom:14px}
.ft-top a,.ft-top p{display:block;color:#B9A4C3;font-size:13px;line-height:2.05}
.ft-top a:hover{color:#fff}
.ft-brand p{margin-top:14px;line-height:1.85;color:#A992B5}
.ft-bot{border-top:1px solid rgba(255,255,255,.1);padding:16px 0 22px;display:flex;flex-wrap:wrap;gap:8px 20px;font-size:12.5px;color:#8D7899}
.ft a.btn{display:inline-flex;height:34px;padding:0 15px;font-size:13.5px;line-height:1;color:#fff}

/* --- 悬浮工具栏 --- */
.fabs{position:absolute;right:22px;top:290px;display:flex;flex-direction:column;gap:8px;z-index:20}
.fabs a{width:54px;height:54px;background:#fff;border:1px solid var(--line2);border-radius:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:10.5px;color:var(--ink2);box-shadow:var(--sh)}
.fabs a b{font-size:17px;font-weight:400;color:var(--p700);line-height:1}
.fabs a.hi{background:var(--p700);border-color:var(--p700);color:#fff}
.fabs a.hi b{color:#fff}
/* 电话浮动钮：悬停弹出 400 号码卡（号码读后台「咨询电话」，与全站同一处维护；
   悬浮钮本身不再默认高亮、不直接拨号 —— 2026-10-16 用户定稿） */
.fab-tel{position:relative;display:flex}
.fab-pop{position:absolute;right:calc(100% + 12px);top:50%;transform:translateY(-50%) translateX(6px);display:flex;flex-direction:column;gap:3px;background:#fff;border:1px solid var(--line2);border-radius:8px;box-shadow:var(--sh2);padding:10px 16px;white-space:nowrap;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .18s ease,transform .18s ease,visibility .18s}
.fab-pop::after{content:"";position:absolute;right:-5px;top:50%;margin-top:-5px;width:9px;height:9px;background:#fff;border-right:1px solid var(--line2);border-top:1px solid var(--line2);transform:rotate(45deg)}
.fab-pop i{font-style:normal;font-size:11.5px;color:var(--ink3);letter-spacing:1px}
.fab-pop a{display:block;width:auto;height:auto;padding:0;margin:0;border:0;background:none;box-shadow:none;border-radius:0;font-size:19px;font-weight:600;color:var(--p700);letter-spacing:.4px;font-variant-numeric:tabular-nums;line-height:1.25}
.fab-pop a:hover{background:none;color:var(--p800)}
.fab-tel:hover .fab-pop,.fab-tel:focus-within .fab-pop{opacity:1;visibility:visible;pointer-events:auto;transform:translateY(-50%) translateX(0)}
/* 微信钮：点击弹出二维码卡（视觉隐藏 checkbox + label 联动，再点一次收起） */
.fab-wx{position:relative;display:flex}
.fab-wx-tog{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.fab-wx-tog:focus-visible + label{outline:2px solid var(--p600);outline-offset:2px}
.fab-qr{position:absolute;right:calc(100% + 12px);top:50%;transform:translateY(-50%) translateX(6px);display:flex;flex-direction:column;align-items:center;gap:10px;background:#fff;border:1px solid var(--line2);border-radius:12px;box-shadow:var(--sh2);padding:18px 20px;white-space:nowrap;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .18s ease,transform .18s ease,visibility .18s}
.fab-qr::after{content:"";position:absolute;right:-5px;top:50%;margin-top:-5px;width:9px;height:9px;background:#fff;border-right:1px solid var(--line2);border-top:1px solid var(--line2);transform:rotate(45deg)}
.fab-qr i{font-style:normal;font-size:13px;font-weight:600;color:var(--ink);letter-spacing:.3px}
.fab-qr img{width:190px;height:190px;border:1px solid var(--line2);border-radius:8px;display:block}
.fab-qr em{font-style:normal;font-size:11.5px;color:var(--ink3)}
.fab-wx-tog:checked ~ .fab-qr{opacity:1;visibility:visible;pointer-events:auto;transform:translateY(-50%) translateX(0)}

/* --- FAQ --- */
.faq{border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.faq details{border-bottom:1px solid var(--line)}
.faq details:last-child{border-bottom:none}
.faq summary{padding:15px 18px;font-size:15px;font-weight:500;cursor:pointer;display:flex;align-items:center;gap:10px;list-style:none;background:#fff}
.faq summary::-webkit-details-marker{display:none}
.faq summary::before{content:"Q";width:20px;height:20px;border-radius:5px;background:var(--p100);color:var(--p700);font-size:11.5px;font-weight:600;display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.faq summary::after{content:"+";margin-left:auto;color:var(--ink4);font-size:17px}
.faq details[open] summary::after{content:"–"}
.faq .ans{padding:0 18px 17px 48px;font-size:14px;color:var(--ink2);line-height:1.85}

/* --- 内容排版 --- */
.prose{font-size:15px;line-height:1.95;color:var(--ink2)}
.prose h3{font-size:18px;font-weight:600;color:var(--ink);margin:26px 0 10px;padding-left:13px;border-left:4px solid var(--p700);line-height:1.5}
.prose h4{font-size:15.5px;font-weight:600;color:var(--p800);margin:18px 0 8px}
.prose p{margin-bottom:12px}
.prose ul{margin:0 0 12px 20px}
.prose li{margin:5px 0;font-size:14.5px}
.answer{background:var(--p50);border:1px solid var(--p200);border-left:4px solid var(--p700);border-radius:8px;padding:15px 18px;font-size:14.5px;line-height:1.85;color:var(--p800);margin-bottom:20px}
.answer b{color:var(--p700)}

/* --- 移动端画布 --- */
.mob-row{display:flex;gap:26px;flex-wrap:wrap;align-items:flex-start}
.mob{width:352px;border:1px solid var(--line2);border-radius:26px;padding:10px;background:#F4F1F7;box-shadow:var(--sh2)}
.mob-in{width:100%;background:#fff;border-radius:18px;overflow:hidden;font-size:13px}
.mob .m-cap{text-align:center;font-size:12px;color:var(--ink3);padding:9px 0 3px}

/* ============================================================
   6 大检测领域 · 领域矩阵卡（V3）
   色彩：全部取自品牌紫阶（p900→p400），每领域一个深浅站位，
        不引入第二种品牌色相；靠「色块面积」而非「新色相」做模块区分。
   ============================================================ */
.dm-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
html.anim .dm-grid>.dm{opacity:0;transform:translateY(22px)}
html.anim .dm-grid>.dm.din{opacity:1;transform:translateY(0)}
/* 系统开启"减弱动态效果"时不做进场位移，卡片直接可见 */
@media (prefers-reduced-motion:reduce){html.anim .dm-grid>.dm{opacity:1;transform:none}
html.anim .dm-grid>.dm.din:hover{transform:none}}
.dm{position:relative;display:block;background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden;box-shadow:0 1px 2px rgba(58,7,69,.045);transition:transform .34s cubic-bezier(.2,.7,.3,1),box-shadow .34s,border-color .34s,opacity .5s ease}
.dm:hover{transform:translateY(-7px);box-shadow:0 24px 48px -18px rgba(58,7,69,.42);border-color:var(--p300)}
html.anim .dm-grid>.dm.din:hover{transform:translateY(-7px)}
.dm-top{position:relative;display:block;overflow:hidden;padding:20px 22px 21px;background:linear-gradient(135deg,var(--a) 0%,var(--b) 100%)}
.dm-top::after{content:"";position:absolute;top:-60%;left:-75%;width:46%;height:230%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.30),transparent);transform:rotate(16deg);opacity:0;pointer-events:none}
.dm:hover .dm-top::after{opacity:1;animation:dmSheen .9s cubic-bezier(.3,.6,.3,1)}
@keyframes dmSheen{from{transform:rotate(16deg) translateX(0)}to{transform:rotate(16deg) translateX(700%)}}
.dm-wm{position:absolute;right:-12px;bottom:-42px;font-size:120px;font-weight:600;line-height:1;color:#fff;opacity:.085;pointer-events:none;transition:transform .5s cubic-bezier(.2,.7,.3,1),opacity .5s}
.dm:hover .dm-wm{transform:translate(-8px,-8px) scale(1.08);opacity:.13}
.dm-tr{position:relative;display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:17px}
.dm-ico{width:46px;height:46px;border-radius:13px;background:rgba(255,255,255,.15);border:1px solid rgba(255,255,255,.3);display:flex;align-items:center;justify-content:center;color:#fff;flex:0 0 auto;transition:transform .34s cubic-bezier(.2,.7,.3,1),background .3s}
.dm-ico svg{width:25px;height:25px;display:block}
.dm:hover .dm-ico{transform:translateY(-3px) scale(1.07);background:rgba(255,255,255,.24)}
.dm-cnt{text-align:right;color:#fff;line-height:1.05}
.dm-cnt b{display:block;font-size:21px;font-weight:600;letter-spacing:.5px;font-variant-numeric:tabular-nums}
.dm-cnt i{display:block;font-style:normal;font-size:10.5px;color:rgba(255,255,255,.62);letter-spacing:.8px;margin-top:4px}
.dm-name{position:relative;display:block;font-size:19.5px;font-weight:600;color:#fff;letter-spacing:.9px;line-height:1.35}
.dm-en{position:relative;display:block;font-size:9.5px;color:rgba(255,255,255,.55);letter-spacing:2.1px;margin-top:6px}
.dm-bd{display:block;padding:16px 22px 18px}
.dm-kw{display:block;font-size:13px;color:var(--ink2);line-height:1.75}
.dm-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
.dm-chips i{font-style:normal;font-size:11.5px;color:var(--p800);background:var(--p50);border:1px solid var(--p100);border-radius:5px;padding:3px 9px;line-height:1.5;white-space:nowrap}
.dm-go{display:flex;align-items:center;gap:5px;margin-top:15px;padding-top:13px;border-top:1px solid var(--line);font-size:13.5px;font-weight:500;color:var(--p700)}
.dm-go em{font-style:normal;font-size:15px;transition:transform .28s cubic-bezier(.2,.7,.3,1)}
.dm:hover .dm-go em{transform:translateX(5px)}
/* 领域色胶囊（原用于频道页尾部「按领域进入」，V1.27 该内链已由「送检场景」取代；
   组件保留备用，当前无调用点） */
.dp{display:inline-flex;align-items:center;gap:9px;height:42px;padding:0 18px;border-radius:8px;font-size:14px;color:var(--ink2);background:#fff;border:1px solid var(--line);transition:transform .22s,border-color .22s,color .22s,box-shadow .22s}
.dp i{width:9px;height:9px;border-radius:3px;background:linear-gradient(135deg,var(--a),var(--b));flex:0 0 auto}
.dp:hover{transform:translateY(-2px);border-color:var(--b);color:var(--b);box-shadow:0 10px 22px -10px rgba(58,7,69,.36)}
/* ------------------------------------------------------------
   章节小标签 kicker（V3.1 重做）
   旧版：12px 纯色胶囊，用户反馈「字体太小、没分量」。
   新版：14px + 前置 6px 圆点 + 浅紫底 + 1px 浅紫描边 + 8px 圆角，
        内边距同步放大（3px 14px → 6px 17px）。仍然只用品牌紫。
   注：原「领域色彩图例」（.dm-legend）已按用户要求整块删除。
   ------------------------------------------------------------ */
.s-head .kicker{display:inline-block;font-size:14px;font-weight:600;letter-spacing:2.1px;color:var(--p700);background:var(--p50);border:1px solid var(--p200);border-radius:8px;padding:6px 17px;margin-bottom:15px;line-height:1.5}
.s-head .kicker::before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:currentColor;margin-right:9px;vertical-align:2px}
.s-head.inv .kicker{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.34);color:#fff}
/* 领域板块：极淡紫底晕，让六块彩色卡浮起来 */
.dm-sec{position:relative;overflow:hidden}
.dm-sec::before{content:"";position:absolute;left:50%;top:-170px;width:960px;height:440px;transform:translateX(-50%);background:radial-gradient(closest-side,rgba(102,8,116,.075),transparent);pointer-events:none}
.dm-sec>.ct2{position:relative}
.sbox-b>a>.dd{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:8px;vertical-align:middle;position:relative;top:-1px}
.sbox-b>a.on>.dd{box-shadow:0 0 0 3px rgba(255,255,255,.18)}
@media (max-width:1020px){.dm-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){.dm-grid{grid-template-columns:1fr}}

/* ============================================================
   检测能力板块（原「能力数据带」）
   V3.2：4 个裸数字 → 板块头 + 能力卡组
   色彩：4 张卡顶部色条取品牌紫阶四段，不引入第二种色相
   ============================================================ */
/* 本板块底色为 --p50，章节标签改用白底，否则与板块底色同色而"消失" */
.cap-sec .kicker,.cap-head .kicker{background:#fff}
.cap-head h2::after{content:"";display:block;width:44px;height:3px;border-radius:2px;margin:16px auto 0;background:linear-gradient(90deg,var(--p700),var(--p400))}
.cap-head p{margin-top:16px;font-size:15px;color:var(--ink3);line-height:1.85}
.cap-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px;margin-top:40px}
html.anim .cap-grid>.cap{opacity:0;transform:translateY(20px)}
html.anim .cap-grid>.cap.din{opacity:1;transform:translateY(0)}
@media (prefers-reduced-motion:reduce){html.anim .cap-grid>.cap{opacity:1;transform:none}}
.cap{position:relative;background:#fff;border:1px solid var(--line);border-radius:14px;padding:30px 20px 26px;text-align:center;overflow:hidden;box-shadow:0 1px 2px rgba(58,7,69,.045);transition:transform .34s cubic-bezier(.2,.7,.3,1),box-shadow .34s,border-color .34s,opacity .5s ease}
.cap::before{content:"";position:absolute;left:0;top:0;width:100%;height:4px;background:linear-gradient(90deg,var(--ca),var(--cb))}
.cap::after{content:"";position:absolute;left:50%;top:-86px;width:280px;height:180px;transform:translateX(-50%);background:radial-gradient(closest-side,rgba(102,8,116,.10),transparent);opacity:0;transition:opacity .34s;pointer-events:none}
.cap:hover{transform:translateY(-6px);box-shadow:0 22px 42px -18px rgba(58,7,69,.4);border-color:var(--p200)}
.cap:hover::after{opacity:1}
.cap-ico{position:relative;width:46px;height:46px;border-radius:13px;background:var(--p50);border:1px solid var(--p100);display:flex;align-items:center;justify-content:center;margin:0 auto 15px;color:var(--p700);transition:transform .34s cubic-bezier(.2,.7,.3,1),background .3s}
.cap-ico svg{width:24px;height:24px;display:block}
.cap:hover .cap-ico{transform:translateY(-3px) scale(1.06);background:var(--p100)}
.cap-n{position:relative;display:block;font-size:34px;font-weight:600;color:var(--p700);line-height:1.08;letter-spacing:-.4px;font-variant-numeric:tabular-nums}
.cap-n small{font-size:15px;font-weight:500;margin-left:3px;letter-spacing:0}
.cap-t{position:relative;display:block;font-size:14.5px;font-weight:600;color:var(--ink);margin-top:11px;letter-spacing:.3px}
.cap-d{position:relative;display:block;font-size:12px;color:var(--ink4);margin-top:8px;line-height:1.75}
@media (max-width:1020px){.cap-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){.cap-grid{grid-template-columns:1fr}}

/* ============================================================
   检测案例 · 图文卡片语言 V1.8
   隐喻：案例 = 一份带封面的检测档案
   结构：领域筛选条 → 案例卡片网格（领域色意象封面 + 信息区）
         → 详情页：频道 banner（V1.83：一级文字「环境检测案例」）+ 案例标题 + 五段轨道 + 页尾通铺卡
            （V1.82 与 09 项目页同构 · V1.83 删「现场记录」与页尾咨询条 ·
              V1.84 删标题下方概览条、加页尾通铺留资卡 ·
              V1.87 正文方案段与数据段改纯文本表格 · 删数值条形与结论彩色标签）
   与检测项目明确区分：项目卡是**纯文字**栅格卡（服务目录），
   案例卡**每张都带封面**（渐变底 + 检测意象图案）——
   这是两个频道最直观的分野。
   色彩只用品牌紫阶 + 中性灰，不引入第二色相。
   ============================================================ */

/* ---- 频道页：领域切换卡（V1.31 重做：取代 32px 领域胶囊）----
   V1.31：原 .cf-bar / .cf-p 是 32px 高的小胶囊，尺寸过小、信息量不足。
   改为「白卡 + 7 列等宽切换格」：每格 = 38×38 领域色渐变方块（领域单字）
   + 领域名 + 档案数，与检测服务频道页左栏的领域导航同一套视觉语言。
   格子用 <button> 而非 <a>：这是筛选控件不是链接，同时避免落进页头脚本
   「无 href 的 <a> 按文案自动补链接」的映射（此前会把「材料检测」等
   文案匹配到检测服务频道页，点领域跳到检测服务）。 */
.cf-switch{background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px 20px 20px;box-shadow:0 1px 2px rgba(58,7,69,.04)}
.cf-switch-h{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding-bottom:14px;border-bottom:1px solid var(--line)}
.cf-switch-h .k{display:inline-flex;align-items:center;gap:8px;font-size:13.5px;font-weight:600;color:var(--ink)}
.cf-switch-h .k::before{content:"";width:3px;height:13px;border-radius:3px;background:linear-gradient(180deg,#8A1F9C,#660874)}
.cf-switch-h .n{margin-left:auto;font-size:12.5px;color:var(--ink3)}
.cf-switch-h .n b{color:var(--p700);font-weight:600;font-variant-numeric:tabular-nums}
.cf-switch-g{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px;margin-top:16px}
.cf-d{display:flex;flex-direction:column;align-items:center;gap:7px;width:100%;padding:15px 6px 13px;border:1px solid var(--line);border-radius:12px;background:#fff;font-family:inherit;text-align:center;cursor:pointer;appearance:none;-webkit-appearance:none;transition:border-color .24s,background .24s,box-shadow .24s}
.cf-d:hover{border-color:var(--p300);background:var(--p50)}
.cf-d i{display:flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:11px;color:#fff;font-style:normal;font-size:16px;font-weight:600;line-height:1;box-shadow:0 8px 18px -12px rgba(58,7,69,.85);transition:transform .3s cubic-bezier(.2,.7,.3,1)}
.cf-d b{font-size:13.5px;font-weight:600;color:var(--ink);letter-spacing:.2px;white-space:nowrap}
.cf-d em{font-style:normal;font-size:11px;color:var(--ink4);font-variant-numeric:tabular-nums}
.cf-d.on{border-color:var(--p300);background:var(--p50);box-shadow:0 14px 26px -22px rgba(58,7,69,.65)}
.cf-d.on i{transform:scale(1.06)}
.cf-d.on b{color:var(--p800)}
.cf-d.on em{color:var(--p700)}
@media (max-width:1020px){.cf-switch-g{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media (max-width:720px){.cf-switch{padding:16px}.cf-switch-g{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.cf-d{padding:13px 6px 11px}.cf-d b{font-size:12.5px}}

/* ---- 案例卡片网格 ---- */
.cf-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.cf-grid.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
.cf-card{position:relative;display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);border-radius:16px;overflow:hidden;box-shadow:0 1px 2px rgba(58,7,69,.04);transition:translate .62s cubic-bezier(.2,.7,.3,1),opacity .62s ease,transform .36s cubic-bezier(.2,.7,.3,1),box-shadow .36s,border-color .36s}
.cf-card:hover{transform:translateY(-6px);border-color:var(--p200);box-shadow:0 34px 62px -34px rgba(58,7,69,.62)}

/* ---- 封面：领域色渐变 + 检测意象底纹（图案见 _CASE_PAT）---- */
.cf-cov{position:relative;display:block;aspect-ratio:16/10;overflow:hidden;background:linear-gradient(145deg,var(--ca),var(--cb))}
/* 缩略图（三级取图：后台缩略图 / 正文首图）：铺满封面，无图时回落下面的领域渐变+底纹 */
.cf-cov .cf-cov-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .75s cubic-bezier(.2,.7,.3,1)}
.cf-card:hover .cf-cov .cf-cov-img{transform:scale(1.06)}
.cf-pat{position:absolute;inset:0;width:100%;height:100%;color:rgba(255,255,255,.19);transition:transform .75s cubic-bezier(.2,.7,.3,1)}
.cf-card:hover .cf-pat{transform:scale(1.07)}
.cf-cov::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,rgba(46,7,54,.36),rgba(46,7,54,0) 40%,rgba(46,7,54,.44))}
.cf-dom2{position:absolute;top:12px;right:12px;z-index:1;font-size:11.5px;color:#fff;background:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.36);border-radius:5px;padding:2px 8px}
.cf-ym{position:absolute;right:13px;bottom:11px;z-index:1;font-size:11px;letter-spacing:1.3px;color:rgba(255,255,255,.8);font-variant-numeric:tabular-nums}

/* ---- 卡内信息区 ---- */
.cf-bd2{display:flex;flex-direction:column;flex:1;padding:16px 19px 15px}
.cf-t2{font-size:15.5px;font-weight:600;color:var(--ink);line-height:1.55;letter-spacing:.2px;transition:color .22s}
.cf-card:hover .cf-t2{color:var(--p800)}
.cf-d2{font-size:12.8px;color:var(--ink3);line-height:1.8;margin-top:8px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
.cf-foot{display:flex;align-items:center;justify-content:flex-end;margin-top:auto;padding-top:14px}
.cf-go2{flex:0 0 auto;width:30px;height:30px;border-radius:50%;border:1px solid var(--p200);color:var(--p700);display:flex;align-items:center;justify-content:center;font-size:14px;line-height:1;transition:background .26s,color .26s,border-color .26s,transform .26s}
.cf-card:hover .cf-go2{background:var(--p700);border-color:var(--p700);color:#fff;transform:translateX(3px)}

/* ---- 首页案例板块头：副标题 ---- */
.case-head p{margin-top:16px;font-size:15px;color:var(--ink3);line-height:1.85}

/* ---- 详情页：案例概览数据条（V1.82：由 banner 移入正文列，改浅紫卡）---- */

/* ---- 详情页：五段轨道 ---- */
.cs-track{position:relative;padding-left:56px}
.cs-track>.line{position:absolute;left:14px;top:18px;bottom:18px;width:2px;border-radius:2px;background:linear-gradient(180deg,var(--p300),var(--p100))}
.cs-step{position:relative;margin-bottom:14px}
.cs-step:last-child{margin-bottom:0}
.cs-node{position:absolute;left:-56px;top:16px;z-index:1;width:30px;height:30px;border-radius:50%;background:#fff;border:2px solid var(--p400);color:var(--p700);font-size:13px;font-weight:600;display:flex;align-items:center;justify-content:center;font-variant-numeric:tabular-nums;box-shadow:0 0 0 5px #fff;transition:background .26s,color .26s,border-color .26s}
.cs-step:hover .cs-node{background:var(--p700);border-color:var(--p700);color:#fff}
.cs-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:20px 24px;box-shadow:0 1px 2px rgba(58,7,69,.04);transition:border-color .28s,box-shadow .28s}
.cs-step:hover .cs-card{border-color:var(--p200);box-shadow:0 18px 34px -24px rgba(58,7,69,.5)}
.cs-hd{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.cs-hd b{font-size:16.5px;font-weight:600;color:var(--ink)}
.cs-hd i{font-style:normal;font-family:Menlo,monospace;font-size:10.5px;letter-spacing:1.6px;color:var(--p300);text-transform:uppercase}
.cs-card p{font-size:14px;color:var(--ink2);line-height:1.9}
.cs-card ul{padding-left:0;list-style:none}
.cs-card ul li{position:relative;padding-left:18px;font-size:14px;color:var(--ink2);line-height:1.9}
.cs-card ul li::before{content:"";position:absolute;left:2px;top:11px;width:6px;height:6px;border-radius:2px;background:var(--p300)}

/* ---- 详情页：正文表格（V1.87 由「方案四格 .cs-spec + 结果矩阵 .cs-mx」合并改造）----
   V1.87：① 方案段由 2×2 浅紫信息格改为「两列键值表」；② 数据段去掉每个数值后的相对条形
   （.cs-v / --w）与结论彩色标签（.tg.ok / .tg.wr），只留纯文本表格 —— 用户口径
   「检测方案可以通过文本、表格展示；数据结果通过表格展现即可，不需要条形长度、结论标签」。
   两表共用同一套边框 / 表头 / 行样式，列数由修饰类决定（.c2 = 方案键值表，.c5 = 数据表）。
   条形长度需手填百分比、结论色标需按状态配色，二者都是后台最难维护的字段，
   去掉后表格退化为最普通的「表头 +数值行」，六个领域的案例页可复用同一套建模。 */
.cs-tb{border:1px solid var(--line);border-radius:10px;overflow:hidden}
.cs-tb-h,.cs-tb-r{display:grid;gap:12px;align-items:center;padding:11px 15px}
.cs-tb-h{background:var(--p50);border-bottom:1px solid var(--line);font-size:12px;color:var(--p800);letter-spacing:.4px}
.cs-tb-r{border-bottom:1px solid var(--p50);font-size:13px;color:var(--ink2);transition:background .2s}
.cs-tb-r:last-child{border-bottom:0}
.cs-tb-r:hover{background:var(--p50)}
.cs-tb.c2 .cs-tb-h,.cs-tb.c2 .cs-tb-r{grid-template-columns:.78fr 2.22fr}
.cs-tb.c2 .cs-tb-r>span:first-child{color:var(--p600);font-weight:500}
.cs-tb.c5 .cs-tb-h,.cs-tb.c5 .cs-tb-r{grid-template-columns:1.1fr 1fr 1fr 1fr 1.1fr}
.cs-tb-note{font-size:12px;color:var(--ink4);margin-top:10px}

/* ---- 详情页：结论卡（V1.83 起「现场记录」段已删 · V1.87 起方案段改用 .cs-tb 键值表
        · V1.103 起「图标 + 判定结论」并为一行、正文整行通排）----
   V1.103 改前：`.cs-concl` 是 flex 行（图标 + 内容 div 并排），图标 38px 与标题 14.5px
   不等高 → 图标比标题多探出一截，正文首行正好从图标下半段起排（文字绕在图标右下角），
   读起来「标题、图标、正文三者各走各的」。改后：**图标与标题同一行**（`.cs-concl-hd`
   为 flex + align-items:center，38px 图标与标题行盒垂直居中），**正文另起一行、占满整行宽度**
   （margin-top:12px）。DOM 相应改为 hd 包住「图标 + 标题」、`<p>` 提到卡片级。 */
.cs-concl{position:relative;background:var(--p50);border:1px solid var(--p100);border-left:4px solid var(--p700);border-radius:0 12px 12px 0;padding:18px 22px}
.cs-concl-hd{display:flex;align-items:center;gap:12px}
.cs-concl .ic{flex:0 0 auto;width:38px;height:38px;border-radius:10px;background:#fff;border:1px solid var(--p200);color:var(--p700);display:flex;align-items:center;justify-content:center}
.cs-concl .ic svg{width:20px;height:20px}
.cs-concl b{font-size:14.5px;color:var(--p800);letter-spacing:.2px}
.cs-concl p{margin-top:12px;font-size:13.5px;color:var(--ink2);line-height:1.9}

/* ---- 详情页侧栏：更多案例（V1.82 重设计：领域色缩略块 + 标题；V1.86 删右侧日期）---- */
.sbox.cs-more .sbox-t{display:flex;align-items:center;justify-content:space-between;gap:10px}
.cs-more-all{font-size:12px;font-weight:500;color:var(--p600);letter-spacing:.2px;transition:color .2s}
.cs-more-all:hover{color:var(--p800)}
.cs-more-ls{padding:8px 8px 10px;display:flex;flex-direction:column;gap:2px}
.cs-more-ls a{display:flex;align-items:center;gap:11px;padding:9px 10px;border-radius:10px;transition:background .22s}
.cs-more-ls i{flex:0 0 auto;display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:10px;color:#fff;font-style:normal;font-size:13px;font-weight:600;line-height:1;box-shadow:0 9px 18px -13px rgba(58,7,69,.95)}
.cs-more-ls span{flex:1;min-width:0;font-size:13.5px;color:var(--ink2);line-height:1.55;transition:color .22s}
.cs-more-ls a:hover{background:var(--p50)}
.cs-more-ls a:hover span{color:var(--p700)}

/* ---- 详情页侧栏：相关检测服务（V1.83 重设计：按点击排行，序号 + 项目名逐行列出；
   V1.84 删卡头「按点击排行」提示小字 —— 排序口径不变，只是不再在页面标注）---- */
.cs-rel-ls{padding:8px 8px 10px;display:flex;flex-direction:column;gap:2px}
.cs-rel-ls a{display:flex;align-items:center;gap:11px;padding:9px 10px;border-radius:10px;transition:background .22s}
.cs-rel-ls em{flex:0 0 auto;display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:9px;background:var(--p50);border:1px solid var(--p100);color:var(--p600);font-style:normal;font-size:11.5px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:.3px;transition:background .22s,color .22s,border-color .22s}
.cs-rel-ls a:first-child em{background:linear-gradient(140deg,#660874,#A241BC);border-color:transparent;color:#fff;box-shadow:0 9px 18px -13px rgba(58,7,69,.95)}
.cs-rel-ls span{flex:1;min-width:0;font-size:13.5px;color:var(--ink2);line-height:1.55;transition:color .22s}
.cs-rel-ls i{flex:0 0 auto;font-style:normal;font-size:12px;color:var(--p300);line-height:1;transition:color .22s,transform .22s}
.cs-rel-ls a:hover{background:var(--p50)}
.cs-rel-ls a:hover span{color:var(--p700)}
.cs-rel-ls a:hover i{color:var(--p700);transform:translateX(2px)}

/* ---- 滚动进场（复用领域卡 / 能力卡那套 IntersectionObserver，70ms 错峰）----
   用 translate 而不是 transform 做入场位移：transform 留给悬停右移，
   两套位移互不覆盖。html.anim 由页头脚本添加，禁 JS 时直接可见。 */
html.anim .cf-grid>*{opacity:0;translate:0 18px}
html.anim .cf-grid>*.din{opacity:1;translate:0 0}
@media (prefers-reduced-motion:reduce){
  html.anim .cf-grid>*{opacity:1;translate:none}
}

/* ---- 响应式 ---- */
@media (max-width:1020px){
  .cf-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:720px){
  .cf-grid,.cf-grid.g2{grid-template-columns:1fr;gap:14px}
  .cf-d2{-webkit-line-clamp:3}
  .cs-track{padding-left:44px}
  .cs-track>.line{left:11px}
  .cs-node{left:-44px;top:14px;width:26px;height:26px;font-size:12px;box-shadow:0 0 0 4px #fff}
  .cs-card{padding:16px 18px}
  .cs-tb-h,.cs-tb-r{gap:8px;padding:10px 12px;font-size:12px}
  .cs-tb-h{font-size:11px}
  .cs-tb.c2 .cs-tb-h,.cs-tb.c2 .cs-tb-r{grid-template-columns:.86fr 2.14fr}
  .cs-tb.c5 .cs-tb-h,.cs-tb.c5 .cs-tb-r{grid-template-columns:1fr .92fr 1fr .92fr 1.16fr}
}

/* ---- 页尾「常见问题汇总」（V1.36：两列卡片 FAQ，展开动画 + 滚动错峰淡入） ---- */
.cq-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:14px}
.cq{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden;box-shadow:0 1px 2px rgba(58,7,69,.04);transition:translate .62s cubic-bezier(.2,.7,.3,1),opacity .62s ease,border-color .3s,box-shadow .3s}
.cq:hover{border-color:var(--p200);box-shadow:0 20px 34px -28px rgba(58,7,69,.6)}
.cq[open]{border-color:var(--p300);box-shadow:0 24px 38px -30px rgba(58,7,69,.6)}
.cq summary{display:flex;align-items:center;gap:14px;padding:17px 20px;list-style:none;cursor:pointer}
.cq summary::-webkit-details-marker{display:none}
.cq summary i{flex:0 0 auto;display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:10px;background:var(--p50);border:1px solid var(--p100);color:var(--p700);font-style:normal;font-size:12px;font-weight:600;letter-spacing:.5px;font-variant-numeric:tabular-nums;transition:background .26s,border-color .26s,color .26s,transform .26s cubic-bezier(.2,.7,.3,1)}
.cq summary b{font-size:15px;font-weight:600;color:var(--ink);line-height:1.6;letter-spacing:.1px}
.cq:hover summary i{transform:scale(1.05)}
.cq[open] summary i{background:linear-gradient(140deg,#660874,#8A1F9C);border-color:transparent;color:#fff}
.cq[open] summary b{color:var(--p800)}
.cq-x{position:relative;flex:0 0 auto;margin-left:auto;width:28px;height:28px;border-radius:9px;background:var(--p50);border:1px solid var(--p100);transition:background .26s,border-color .26s,transform .3s cubic-bezier(.2,.7,.3,1)}
.cq-x::before,.cq-x::after{content:"";position:absolute;left:50%;top:50%;width:11px;height:1.6px;border-radius:2px;background:var(--p700);transform:translate(-50%,-50%);transition:transform .3s cubic-bezier(.2,.7,.3,1),background .26s}
.cq-x::after{transform:translate(-50%,-50%) rotate(90deg)}
.cq[open] .cq-x{background:var(--p700);border-color:var(--p700);transform:rotate(180deg)}
.cq[open] .cq-x::before,.cq[open] .cq-x::after{background:#fff}
.cq[open] .cq-x::after{transform:translate(-50%,-50%) rotate(0)}
.cq-a{padding:0 20px 19px 68px;font-size:13.5px;color:var(--ink2);line-height:1.9}
.cq[open] .cq-a{animation:cqIn .34s cubic-bezier(.2,.7,.3,1) both}
@keyframes cqIn{from{opacity:0;translate:0 -6px}to{opacity:1;translate:0 0}}
/* 浅紫底板块内的 kicker 底改白（沿用检测能力板块同一处理），否则与底色同色而"消失" */
.s.tint .kicker{background:#fff}
/* 滚动错峰淡入：复用全站 IO（本页 .cq-grid 由主脚本 + 页头兜底脚本统一处理） */
html.anim .cq-grid>*{opacity:0;translate:0 18px}
html.anim .cq-grid>*.din{opacity:1;translate:0 0}
@media (prefers-reduced-motion:reduce){
  html.anim .cq-grid>*{opacity:1;translate:none}
  .cq[open] .cq-a{animation:none}
  .cq-x,.cq summary i{transition:none}
}
@media (max-width:1020px){
  .cq-grid{grid-template-columns:1fr}
}

/* ============================================================
   检测服务频道页 · 目录模板（V1.23 · V1.27 条目去标签 · V1.28 页尾静态四问 · V1.29 加转化按钮与交互 · V1.30 六领域齐备
   · V1.94 条目标题行右侧补「发布日期」）
   领域页「用色块面积和布局节奏做区分」而非新增色相；
   条目回到三行（标题 / 摘要 / 双按钮），决策信息交给项目页与左栏。
   ============================================================ */
.svc-list{display:flex;flex-direction:column;gap:16px}
.svc{position:relative;display:flex;gap:18px;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:16px;transition:border-color .26s,box-shadow .26s}
.svc:hover{border-color:var(--p300);box-shadow:0 18px 36px -22px rgba(58,7,69,.38)}
.svc-th{position:relative;flex:0 0 288px;width:288px;aspect-ratio:16/9;border-radius:var(--rs);overflow:hidden;display:block;background:linear-gradient(145deg,var(--ca),var(--cb))}
.svc-th .cf-pat{color:rgba(255,255,255,.17);transition:transform .7s cubic-bezier(.2,.7,.3,1)}
.svc-th .svc-th-img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .7s cubic-bezier(.2,.7,.3,1)}
.svc:hover .svc-th .svc-th-img{transform:scale(1.06)}
.svc:hover .svc-th .cf-pat{transform:scale(1.06)}
.svc-ico{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:rgba(255,255,255,.94)}
.svc-ico svg{width:42px;height:42px;display:block}
.svc-dom{position:absolute;left:12px;bottom:10px;font-size:11.5px;letter-spacing:.6px;color:#fff;background:rgba(46,7,54,.34);border:1px solid rgba(255,255,255,.24);border-radius:5px;padding:2px 8px;line-height:1.6}
.svc-bd{flex:1;min-width:0;display:flex;flex-direction:column}
.svc-t{font-size:17px;font-weight:600;line-height:1.45;letter-spacing:.2px}
.svc-t a{color:var(--ink);transition:color .2s}
.svc-t a:hover{color:var(--p700)}
/* V1.94：条目标题行（标题左 + 发布日期右）——标题是可伸缩的 flex 项，日期固定不压缩 */
.svc-hd{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px}
.svc-hd .svc-t{flex:1 1 auto;min-width:0}
.svc-date{flex:0 0 auto;font-size:12.5px;color:var(--ink4);font-variant-numeric:tabular-nums;letter-spacing:.2px;white-space:nowrap}
.svc-d{margin-top:9px;font-size:13.5px;color:var(--ink3);line-height:1.8}
.svc-act{display:flex;align-items:center;gap:9px;margin-top:auto;padding-top:13px}
/* 预约检测卡：与复达同构——400 电话为第一入口，微信为第二入口
   V1.75：整卡回滚到 V1.73 版式（V1.74 的 kicker / 可点电话块 / 「或」双线 / 隐私注脚已撤） */
.svc-cta{padding:20px 18px}
.svc-cta .num{font-size:26px;letter-spacing:.5px;margin:10px 0 0}
.svc-cta .hint{margin:6px 0 0}
.svc-cta .sep{position:relative;height:1px;background:rgba(255,255,255,.2);margin:16px 0}
.svc-cta .sep i{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background:var(--p700);color:#C9A9D6;font-style:normal;font-size:11.5px;padding:0 9px}
.svc-cta .qr{width:112px;height:112px;margin:0 auto;border-radius:10px;background:#fff;display:flex;align-items:center;justify-content:center;text-align:center;font-size:11.5px;color:var(--p400);line-height:1.6;padding:8px}
.svc-cta .qr em{font-style:normal;display:block;font-size:10.5px;color:var(--ink4);margin-top:4px}
/* 列表头 + 分页 */
.svc-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:14px 18px;margin-bottom:16px}
.svc-bar .lab{font-size:13.5px;color:var(--ink3)}
.svc-bar .lab b{color:var(--p700);font-variant-numeric:tabular-nums}
.svc-bar .sort{margin-left:auto;display:flex;gap:2px;align-items:center;font-size:13px;color:var(--ink3)}
.svc-bar .sort>span{margin-right:4px}
.pgno .off{min-width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line2);border-radius:var(--rs);font-size:13.5px;color:var(--ink4);padding:0 11px;background:#fff}
.pgno .sum{font-size:12.5px;color:var(--ink4);padding-left:6px}
/* ① 检测服务领域：白卡 + 领域色图标块列表（V1.26 重做，取代深紫渐变卡）
   V1.44：卡头右侧「6 大领域」浅紫胶囊删除（.sbox-t i 规则同步移除）——卡内已逐行列着六个领域，
          胶囊属重复信息；本卡同时被 12 公正性声明页复用，删除在 02/03/12 三页一致生效。 */
.sbox.svc-domcard .sbox-t{display:flex;align-items:center;gap:9px;padding:14px 16px;background:#fff;border-bottom:1px solid var(--line);color:var(--ink);font-size:14.5px;font-weight:600}
.sbox.svc-domcard .sbox-t::before{content:"";flex:0 0 auto;width:3px;height:13px;border-radius:2px;background:linear-gradient(180deg,#8A1F9C,#660874)}
.sbox.svc-domcard .sbox-b{padding:9px 9px 11px}
.svc-dom-nav a{position:relative;display:flex;align-items:center;gap:11px;padding:8px 10px;border-radius:12px;font-size:14px;color:var(--ink2);transition:background .2s,color .2s}
/* ⚠️ V1.26 修正：全站无 i 标签斜体重置（只有 *{margin/padding/box-sizing}），
   色块内放中文字符必须显式 font-style:normal，否则中文被合成倾斜 → 看着像错位/乱 */
.svc-side i,.svc-side em{font-style:normal}
.svc-dom-nav a .svc-tile{flex:0 0 auto;display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:10px;color:#fff;font-style:normal;font-size:15px;font-weight:600;line-height:1;letter-spacing:0;text-indent:0;box-shadow:0 7px 15px -9px rgba(46,7,54,.8);transition:transform .22s,box-shadow .22s}
.svc-tile-all{background:linear-gradient(140deg,#2E0736,#4C0A57 32%,#660874 54%,#7A1A93 74%,#8A1F9C)}
/* 行间发丝分割线（V1.26 新增）：左端与文字对齐（10 内边距 + 32 色块 + 11 间距 = 53px），右端留 10px */
.svc-dom-nav a:not(:last-child)::after{content:"";position:absolute;left:53px;right:10px;bottom:0;height:1px;background:var(--line)}
.svc-dom-nav a.on:not(:last-child)::after{background:var(--p200)}
.svc-dom-nav a span{flex:1;min-width:0}
.svc-dom-nav a em{font-style:normal;font-size:11.5px;color:var(--ink4);font-variant-numeric:tabular-nums;transition:color .2s}
.svc-dom-nav a:hover{background:var(--p50);color:var(--p700)}
.svc-dom-nav a:hover .svc-tile{transform:translateY(-1px) scale(1.05);box-shadow:0 11px 20px -11px rgba(46,7,54,.85)}
.svc-dom-nav a.on{background:var(--p50);color:var(--p800);font-weight:600}
.svc-dom-nav a.on::before{content:"";position:absolute;left:0;top:9px;bottom:9px;width:3px;border-radius:3px;background:var(--p700)}
.svc-dom-nav a.on em{color:var(--p700);font-weight:600}
.svc-dom-nav a.on .svc-tile{box-shadow:0 11px 22px -11px rgba(46,7,54,.9)}
/* ② 热门检测项目：白卡 + 左侧紫条 + 序号 */
.sbox.svc-hot{border-left:3px solid var(--p300)}
.svc-hot-list a{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:10px;font-size:13.5px;color:var(--ink2);transition:background .2s,color .2s,transform .2s}
.svc-hot-list a em{flex:0 0 auto;font-style:normal;font-size:11px;font-weight:600;letter-spacing:.4px;color:var(--p400);font-variant-numeric:tabular-nums}
.svc-hot-list a:hover{background:var(--p50);color:var(--p700);transform:translateX(3px)}
.svc-hot-list a:hover em{color:var(--p700)}
/* ---------- 页尾「送检决策四问」四卡（V1.26 建块 · V1.28 静态内容不跳转 · V1.29 去序号 + 转化按钮 + 交互 · V1.30 六领域齐备 + 本领域色） ----------
   V1.28：卡片不再是链接（无 href、无 hover 位移、无箭头）——内容写死在页面；
   V1.29：① 删除卡顶「01 · 该测什么」序号标签（用户要求）；
          ② 每卡底部加转化按钮行「提交检测需求」（实心紫）+「立即咨询」（描边紫），
             按钮不单独跳转，沿用全站占位约定（无 href，聊天挂件 / 400）；
          ③ 补交互：滚动错峰淡入（与领域卡/能力卡同一套 IntersectionObserver）、
             悬停时顶部色条自左向右展开、标题转深紫、要点色点放大、提醒条底色加深。
   注意：入场位移用 translate 属性（不是 transform），与案例卡 `.cf-card` 同一手法——
        transition 统一声明在 `.scn` 上（含 translate/opacity/border/shadow），进场规则只切值。 */
.scn-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.scn{position:relative;display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);border-radius:14px;padding:26px 26px 22px;overflow:hidden;transition:translate .62s cubic-bezier(.2,.7,.3,1),opacity .62s ease,border-color .36s,box-shadow .36s}
.scn::before{content:"";position:absolute;left:0;top:0;width:100%;height:3px;background:linear-gradient(90deg,var(--ca),var(--cb));transform-origin:left center;transform:scaleX(.42);transition:transform .5s cubic-bezier(.2,.7,.3,1)}
.scn:hover::before{transform:scaleX(1)}
.scn:hover{border-color:var(--p200);box-shadow:0 22px 40px -28px rgba(58,7,69,.5)}
.scn h3{font-size:17.5px;font-weight:600;color:var(--ink);letter-spacing:.2px;transition:color .25s}
.scn:hover h3{color:var(--p800)}
.scn .lead{margin-top:10px;font-size:13.5px;color:var(--ink2);line-height:1.9}
.scn .pts{margin:16px 0 0;padding:15px 0 0;list-style:none;border-top:1px dashed var(--line);display:flex;flex-direction:column;gap:9px}
.scn .pts li{position:relative;margin:0;padding-left:15px;font-size:12.5px;color:var(--ink2);line-height:1.8}
.scn .pts li::before{content:"";position:absolute;left:0;top:8px;width:5px;height:5px;border-radius:2px;background:linear-gradient(135deg,var(--ca),var(--cb));transition:transform .26s cubic-bezier(.2,.7,.3,1)}
.scn:hover .pts li::before{transform:scale(1.4)}
.scn .tip{display:flex;align-items:flex-start;gap:8px;margin-top:auto;padding:10px 13px;border-radius:9px;background:var(--p50);font-size:12.5px;color:var(--p800);line-height:1.75;transition:background .28s}
.scn:hover .tip{background:var(--p100)}
.scn .tip b{flex:0 0 auto;margin-top:1px;padding:2px 7px;border-radius:5px;background:linear-gradient(135deg,var(--ca),var(--cb));color:#fff;font-size:11px;font-weight:600;letter-spacing:.6px}
.scn .acts{display:flex;align-items:center;gap:10px;margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}
.scn .acts .btn{transition:transform .22s cubic-bezier(.2,.7,.3,1),background .22s,color .22s,border-color .22s,box-shadow .22s}
.scn .acts .btn:hover{transform:translateY(-1px)}
.scn .acts .btn:active{transform:translateY(0)}
/* 滚动进场：复用领域卡 / 能力卡 / 案例卡那套 IO，4 卡 70ms 错峰 */
html.anim .scn-grid>*{opacity:0;translate:0 18px}
html.anim .scn-grid>*.din{opacity:1;translate:0 0}
@media (prefers-reduced-motion:reduce){
  html.anim .scn-grid>*{opacity:1;translate:none}
  .scn::before{transform:none}
}
@media (max-width:1020px){.scn-grid{grid-template-columns:1fr}}
@media (max-width:720px){.scn{padding:22px 20px 18px}}
/* ③ 预约检测卡：整体提亮一档，与深紫领域卡拉开明度层次（V1.75 恢复） */
.svc-cta{background:linear-gradient(150deg,#6A0F7D,#A241BC)}
.svc-cta .sep i{background:#8A1F9C;color:#F1DDEE}
/* ---------- 频道 banner（V1.24：高度加大 + 实拍融层；面包屑移至 banner 下方白底） ---------- */
.svc-hero-ph{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.svc-hero-ph img{position:absolute;top:0;right:0;width:62%;height:100%;object-fit:cover;object-position:60% 32%;opacity:.38;filter:saturate(.78) contrast(1.03) brightness(.96);-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 55%);mask-image:linear-gradient(90deg,transparent 0,#000 55%)}
.svc-hero-ph::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(40,4,48,.30),rgba(40,4,48,.10) 45%,rgba(40,4,48,.34))}
.svc-hero-in{position:relative;z-index:1;display:flex;flex-direction:column;justify-content:center;min-height:300px;padding-top:60px;padding-bottom:62px}
.svc-hero-in h1,.svc-hero-in .svc-hero-t{font-size:34px;font-weight:600;letter-spacing:1px;line-height:1.35}
.svc-hero-in .svc-hero-k{margin:0 0 10px;font-size:12.5px;letter-spacing:2.4px;color:rgba(255,255,255,.72)}
.svc-hero-in p{margin-top:12px;font-size:15px;color:#EAD9F2;max-width:920px;line-height:1.9}
@media (max-width:1020px){
  .svc-hero-in{min-height:220px;padding-top:40px;padding-bottom:42px}
  .svc-hero-in h1,.svc-hero-in .svc-hero-t{font-size:26px}
  .svc-hero-in .svc-hero-k{margin-bottom:8px;font-size:11.5px;letter-spacing:2px}
  .svc-hero-ph img{width:100%;opacity:.28;-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 72%);mask-image:linear-gradient(90deg,transparent 0,#000 72%)}
}
/* 左栏吸顶（复达同款：10 条条目 ≈ 2400px，领域导航与预约卡必须常驻） */
@media (min-width:1181px){.side>.svc-side{position:sticky;top:16px}}
@media (max-width:1020px){
  .svc-th{flex:0 0 224px;width:224px}
  .svc-d{font-size:13px}
}
@media (max-width:820px){
  .svc{flex-direction:column;gap:14px}
  .svc-th{flex:none;width:100%}
  .svc-act{flex-wrap:wrap}
}

.hero-ph{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.hero-ph img{position:absolute;top:0;right:0;width:68%;height:100%;object-fit:cover;object-position:52% 26%;opacity:.4;filter:saturate(.8) contrast(1.03) brightness(.95);-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 56%);mask-image:linear-gradient(90deg,transparent 0,#000 56%)}
.hero-ph::after{content:"";position:absolute;top:0;right:0;width:70%;height:100%;background:linear-gradient(180deg,rgba(56,5,66,.52),rgba(56,5,66,.24) 40%,rgba(56,5,66,.26) 60%,rgba(48,4,56,.58));-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 32%);mask-image:linear-gradient(90deg,transparent 0,#000 32%)}
@media (max-width:1020px){.hero-ph img{width:100%;opacity:.3;-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 70%);mask-image:linear-gradient(90deg,transparent 0,#000 70%)}}

/* V1.81：底色改「整块浅紫」——原为 白 → --p50 → #F7F0FA 纵向渐变，顶端是白色，
   与上方同为白底的「检测案例」板块连成一片、看不出板块分界；同时收紧上下内边距
   （78/84 → 56/64），消除两板块间 140px 的白底空档。 */
.ab-sec{padding:56px 0 64px;background:linear-gradient(180deg,var(--p50),#F7F0FA)}
/* 浅紫板块内的 kicker 底改白（同 .cap-sec .kicker / .s.tint .kicker），否则与板块底色同色而"消失" */
.ab-sec .kicker{background:#fff}
.ab-wrap{display:grid;grid-template-columns:minmax(0,1.16fr) minmax(0,1fr);gap:48px;align-items:stretch}
/* 左：实验室实拍图（单图静态；素材宽幅裁切，cover 填满；高度随右栏内容，不强制撑高）*/
.ab-media{position:relative;min-height:520px;border-radius:16px;overflow:hidden;background:#EDE7F0;box-shadow:0 44px 86px -50px rgba(46,7,54,.92)}
.ab-shot{position:absolute;inset:0;margin:0;background-image:var(--ab-img);background-size:cover;background-repeat:no-repeat;background-position:50% 40%}
/* 右：介绍文字 */
.ab-body{display:flex;flex-direction:column}
.ab-lead{font-size:15px;color:var(--ink2);line-height:1.95}
.ab-lead b{color:var(--p700);font-weight:600}
.ab-kpi{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px;margin:22px 0 4px}
.ab-kpi>div{background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px 18px}
.ab-kpi b{display:block;font-size:28px;font-weight:600;color:var(--p700);line-height:1.1;letter-spacing:-.5px;font-variant-numeric:tabular-nums}
.ab-kpi b small{font-size:13px;font-weight:500;margin-left:3px;letter-spacing:0}
.ab-kpi span{display:block;font-size:12px;color:var(--ink4);margin-top:7px}
.ab-blk{margin-top:24px}
.ab-blk h3{font-size:15px;font-weight:600;color:var(--ink);letter-spacing:.3px}
.ab-blk h3 em{font-style:normal;font-size:11.5px;letter-spacing:1.4px;color:var(--p300);margin-left:9px;text-transform:uppercase}
.ab-blk p{font-size:14px;color:var(--ink2);line-height:1.95;margin-top:8px}
.ab-tags{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}
.ab-tags i{font-style:normal;font-size:12px;color:var(--ink2);background:#fff;border:1px solid var(--line);border-radius:7px;padding:5px 11px}
.ab-more{margin-top:24px;align-self:flex-start}
/* 通栏：司法鉴定所 */
.ab-cert{display:grid;grid-template-columns:minmax(0,320px) minmax(0,1fr);gap:34px;align-items:start;margin-top:26px;background:#fff;border:1px solid var(--p100);border-left:4px solid var(--p700);border-radius:0 14px 14px 0;padding:26px 30px}
.ab-cert-l{display:flex;gap:14px}
.ab-cert-ico{flex:0 0 auto;width:44px;height:44px;border-radius:11px;background:linear-gradient(140deg,#4A0553,#8A1F9C);color:#fff;display:flex;align-items:center;justify-content:center}
.ab-cert-ico svg{width:22px;height:22px}
.ab-cert-l b{display:block;font-size:15px;font-weight:600;color:var(--ink);line-height:1.5}
.ab-cert-l .seal{display:flex;gap:8px;flex-wrap:wrap;margin-top:11px}
.ab-cert-l .seal em{font-style:normal;font-size:11.5px;color:#7A4A16;background:#F6EEDC;border:1px solid #E4D2AE;border-radius:5px;padding:3px 9px}
.ab-cert p{font-size:13.5px;color:var(--ink2);line-height:2}
@media (max-width:1020px){
  .ab-sec{padding:46px 0 52px}
  .ab-wrap{grid-template-columns:1fr;gap:30px}
  .ab-media{min-height:460px}
  .ab-cert{grid-template-columns:1fr;gap:18px;padding:22px 22px}
}

/* ---------- 页尾通铺转化带（V1.13 新增 / V1.14 沿用：全屏通铺，取代原居中圆角卡） ---------- */
.cta-bleed{position:relative;overflow:hidden;color:#fff;background:linear-gradient(120deg,#4A0553 0%,#6A0F7D 46%,#8A1F9C 100%)}
.cta-bleed::before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(56% 140% at 88% 0%,rgba(255,255,255,.16),rgba(255,255,255,0) 60%),radial-gradient(42% 120% at 0% 100%,rgba(46,7,54,.40),rgba(46,7,54,0) 72%)}
.cta-bleed::after{content:"";position:absolute;right:-64px;bottom:-112px;width:330px;height:330px;border-radius:50%;border:1px solid rgba(255,255,255,.10);box-shadow:0 0 0 52px rgba(255,255,255,.035),0 0 0 118px rgba(255,255,255,.02);pointer-events:none}
.cta-in{position:relative;z-index:1;display:flex;align-items:center;gap:44px;flex-wrap:wrap;padding-top:60px;padding-bottom:60px}
.cta-l{flex:1;min-width:320px}
.cta-kick{display:inline-block;font-size:14px;font-weight:600;letter-spacing:2.1px;color:#fff;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.34);border-radius:8px;padding:6px 17px;line-height:1.5;margin-bottom:16px}
.cta-kick::before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:currentColor;margin-right:9px;vertical-align:2px}
.cta-bleed h3{font-size:27px;font-weight:600;letter-spacing:.6px;line-height:1.45}
.cta-sub{margin-top:11px;font-size:14.5px;color:#E2CDEC;line-height:1.9;max-width:660px}
.cta-r{display:flex;gap:12px;flex-wrap:wrap;flex:0 0 auto}
.cta-btn{height:50px;padding:0 30px;font-size:15.5px}
.cta-btn.p{background:#fff;color:var(--p800);border-color:#fff;box-shadow:0 12px 28px rgba(18,2,22,.30)}
.cta-btn.p:hover{background:#F3E6F8;border-color:#F3E6F8;color:var(--p900)}
.cta-btn.g{background:transparent;color:#fff;border-color:rgba(255,255,255,.5)}
.cta-btn.g:hover{background:rgba(255,255,255,.14);border-color:#fff}
.cta-btn:hover{transform:translateY(-2px)}
@media (max-width:900px){
  .cta-in{gap:22px;padding-top:46px;padding-bottom:48px}
  .cta-bleed h3{font-size:22px}
  .cta-r{width:100%;gap:10px}
  .cta-btn{flex:1 1 46%;min-width:140px;padding:0 16px}
  .cta-bleed::after{display:none}
}

/* ---------- 页脚底部条（V1.16 删公安备案与右下链接组、剩余两项居中 · V1.72 在 ICP 备案右侧补「网站地图」兜底入口） ---------- */
.ft-bot{border-top:1px solid rgba(255,255,255,.1);padding:16px 0 22px;display:flex;flex-wrap:wrap;justify-content:center;gap:8px 20px;font-size:12.5px;color:#8D7899}
.ft-bot a{transition:color .16s}
.ft-bot a:hover{color:#fff}

/* ---------- 转化带与页脚之间 · 友情链接带（V1.14：上移到页脚之前；V1.15：只保留友情链接一行） ---------- */
.fr-band{background:var(--p50);border-top:1px solid var(--p100);padding:22px 0 24px}
.fr-row{display:flex;gap:16px;align-items:flex-start;padding:8px 0}
.fr-k{flex:0 0 auto;width:80px;font-size:13px;font-weight:600;color:var(--p800);letter-spacing:1px;display:flex;align-items:center;gap:8px;padding-top:2px}
.fr-k::before{content:"";flex:0 0 auto;width:3px;height:12px;border-radius:2px;background:var(--p700)}
.fr-ls{display:flex;flex-wrap:wrap;align-items:center;flex:1;min-width:0}
.fr-ls a{font-size:12.5px;color:var(--ink2);padding:3px 15px;line-height:1.7;position:relative;transition:.16s;white-space:nowrap}
.fr-ls a:first-child{padding-left:0}
.fr-ls a+a::before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:1px;height:11px;background:var(--line2)}
.fr-ls a:hover{color:var(--p700)}
.fr-ls a.fr-more{color:var(--p700);font-weight:500}
@media (max-width:820px){
  .fr-band{padding:18px 0 20px}
  .fr-row{flex-direction:column;gap:8px}
  .fr-k{width:auto;padding-top:0}
}

/* ---------- 06 · 检测流程：① 五阶段纵向时间轴（V1.39 五段全部展开 · V1.100 序号并入卡片） ----------
   V1.100 用户口径「流程保障板块，序号要与内容在一列，现在是分两列，很难看且占用页面长度」：
   ⚠️ 事后确认该句指的是 **③ 流程保障的 6 张控制点卡**（见 V1.101），五阶段是当轮确认位置后的
   连带调整。此处保留五阶段的做法：序号方块原占卡片
   左侧的**独立一列**（`.pf-step` 的 padding-left:64px 让出）—— 现改为落在**卡片内左上角、与阶段
   标题同一行**。卡片因此占满整行宽度（1200 版心 1136 → 1200px；375px 屏 289 → 343px），正文每行
   多放约 3~4 字，整块明显变短。配套取舍：左侧时间轴竖线（`.pf-step::before`）取消 —— 卡片占满整行
   后已无空间容纳竖线，顺序感由卡内序号方块承担。序号与标题的垂直居中由 `.pf-box-h{min-height:32px}`
   兜住（方块 top:20px + 32px 高，中心 36px；`.pf-box-h` 内容区 20px 起、32px 高居中，中心同为 36px）。 */
.pf-steps{display:flex;flex-direction:column;gap:16px;margin-top:2px}
.pf-step{position:relative;transition:opacity .62s ease,translate .62s cubic-bezier(.2,.7,.3,1)}
.pf-no{position:absolute;left:22px;top:20px;display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:10px;background:var(--p50);border:1px solid var(--p100);color:var(--p700);font-style:normal;font-size:12.5px;font-weight:600;letter-spacing:.6px;font-variant-numeric:tabular-nums;transition:background .38s,border-color .38s,color .38s}
html.anim .pf-steps>*.din .pf-no{background:linear-gradient(140deg,#660874,#8A1F9C);border-color:transparent;color:#fff}
.pf-box{background:#fff;border:1px solid var(--line);border-radius:16px;padding:20px 22px 20px;transition:border-color .3s,box-shadow .3s}
.pf-step:hover .pf-box{border-color:var(--p200);box-shadow:0 22px 40px -32px rgba(58,7,69,.6)}
.pf-box-h{display:flex;align-items:center;gap:14px;min-height:32px;padding-left:44px}   /* 44px = 序号方块 32px + 12px 间距（V1.100） */
.pf-box-h b{font-size:17px;font-weight:600;color:var(--ink);letter-spacing:.2px}
.pf-cols{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:17px}
.pf-col{background:var(--pagebg);border:1px solid var(--line);border-radius:14px;padding:18px 20px 19px}
.pf-col h4{display:flex;align-items:center;gap:9px;font-size:15px;font-weight:600;color:var(--ink)}
.pf-col h4::before{content:"";flex:0 0 auto;width:3px;height:14px;border-radius:2px;background:var(--p700)}
.pf-col.pf-us{background:linear-gradient(150deg,var(--p50),#fff);border-color:var(--p200)}
.pf-col.pf-us h4::before{background:linear-gradient(180deg,#8A1F9C,#660874)}
.pf-ul{margin-top:13px;padding-left:0;list-style:none;display:flex;flex-direction:column;gap:10px}
.pf-ul li{position:relative;padding-left:17px;font-size:13.5px;color:var(--ink2);line-height:1.85}
.pf-ul li::before{content:"";position:absolute;left:0;top:9px;width:5px;height:5px;border-radius:1px;background:var(--p400)}
.pf-meta{display:flex;gap:12px;margin-top:14px}
.pf-meta span{background:var(--pagebg);border:1px solid var(--line);border-radius:12px;padding:11px 16px 12px}
.pf-meta i{display:block;font-style:normal;font-size:11.5px;color:var(--ink4);letter-spacing:.4px}
.pf-meta b{display:block;margin-top:5px;font-size:14px;font-weight:600;color:var(--p800)}
.pf-note{margin-top:16px;font-size:12.5px;color:var(--ink4);line-height:1.85}
.pf-note b{color:var(--p700);font-weight:600}
/* ---------- 06 · ② 送样清单与委托信息 ---------- */
.pf-smp{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;align-items:start}
.pf-sc{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden;transition:border-color .3s,box-shadow .3s,translate .62s cubic-bezier(.2,.7,.3,1),opacity .62s ease}
.pf-sc:hover{border-color:var(--p300);box-shadow:0 20px 34px -26px rgba(58,7,69,.55)}
.pf-sc .h{display:flex;align-items:center;gap:10px;padding:13px 17px;background:var(--p50);border-bottom:1px solid var(--p100)}
.pf-sc .h i{flex:0 0 auto;display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:9px;color:#fff;font-style:normal;font-size:13px;font-weight:600;line-height:1}
.pf-sc .h b{font-size:14.5px;font-weight:600;color:var(--p800)}
.pf-sc dl{margin:14px 17px 17px;display:flex;flex-direction:column;gap:9px}
.pf-sc dl>div{display:flex;gap:10px}
.pf-sc dt{flex:0 0 52px;font-size:12.5px;color:var(--ink4);line-height:1.75}
.pf-sc dd{flex:1;min-width:0;font-size:12.5px;color:var(--ink2);line-height:1.75}
.pf-info{margin-top:16px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:21px 22px 20px}
.pf-info h4{display:flex;align-items:center;gap:9px;font-size:15px;font-weight:600;color:var(--ink)}
.pf-info h4::before{content:"";flex:0 0 auto;width:3px;height:14px;border-radius:2px;background:var(--p700)}
.pf-info ol{margin-top:15px;padding-left:0;list-style:none;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 24px}
.pf-info li{position:relative;padding-left:35px;font-size:13.5px;color:var(--ink2);line-height:1.85}
.pf-info li b{position:absolute;left:0;top:2px;display:flex;align-items:center;justify-content:center;width:23px;height:23px;border-radius:7px;background:var(--p50);border:1px solid var(--p200);color:var(--p700);font-size:11px;font-weight:600;font-variant-numeric:tabular-nums}
.pf-info .pf-note{margin-top:14px;padding-top:13px;border-top:1px solid var(--line)}
/* ---------- 06 · ③ 流程保障（深紫带） ---------- */
.pf-guard{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
/* V1.101：序号胶囊与标题同一行（原为「胶囊独占一行 + 标题另起」）——卡片改 2 列网格：
   第 1 行 = 序号(auto 列) + 标题(1fr 列)，第 2 行 = 说明段落（跨两列，保持整行宽度）。
   每张卡省下一行 + 12px 间距，6 张卡整块明显变短；DOM 与文案零改动。 */
.pf-gc{display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:10px;align-items:center;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.16);border-radius:14px;padding:19px 20px 18px;transition:background .3s,border-color .3s,translate .62s cubic-bezier(.2,.7,.3,1),opacity .62s ease}
.pf-gc:hover{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.32)}
.pf-gc .no{grid-column:1;grid-row:1;display:inline-block;font-size:11.5px;font-weight:600;color:#E7D3F0;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.2);border-radius:7px;padding:3px 9px;letter-spacing:.5px;font-variant-numeric:tabular-nums}
.pf-gc b{grid-column:2;grid-row:1;display:block;font-size:15px;font-weight:600;color:#fff;letter-spacing:.1px;min-width:0}
.pf-gc p{grid-column:1/-1;grid-row:2;margin-top:8px;font-size:13px;color:#DCC3E6;line-height:1.85}
.pf-data{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;margin-top:28px;padding-top:26px;border-top:1px solid rgba(255,255,255,.16)}
.pf-num{text-align:center;padding:0 12px;border-right:1px solid rgba(255,255,255,.12)}
.pf-num:last-child{border-right:0}
.pf-num b{font-size:32px;font-weight:600;color:#fff;letter-spacing:.5px;font-variant-numeric:tabular-nums}
.pf-num i{font-style:normal;font-size:15px;font-weight:600;color:#DCC3E6;margin-left:2px}
.pf-num span{display:block;margin-top:7px;font-size:12.5px;color:#C9A9D6;line-height:1.7}
.pf-num span em{display:block;font-style:normal;font-size:11.5px;color:#B892C6;margin-top:3px}
.pf-start{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:24px}
.pf-start .btn{height:50px;padding:0 30px;font-size:15.5px}
.pf-b-p{background:#fff;color:var(--p800);border-color:#fff;box-shadow:0 12px 28px rgba(18,2,22,.30)}
.pf-b-p:hover{background:#F3E6F8;border-color:#F3E6F8;color:var(--p900);transform:translateY(-2px)}
.pf-b-g{background:transparent;color:#fff;border-color:rgba(255,255,255,.5)}
.pf-b-g:hover{background:rgba(255,255,255,.14);border-color:#fff;transform:translateY(-2px)}
.pf-start-tip{font-size:12.5px;color:#C9A9D6}
/* ---------- 06 · 滚动错峰淡入（复用全站 IO：主脚本 + 页头兜底脚本统一处理） ---------- */
html.anim .pf-steps>*,html.anim .pf-smp>*,html.anim .pf-guard>*,html.anim .pf-data>*{opacity:0;translate:0 18px}
html.anim .pf-steps>*.din,html.anim .pf-smp>*.din,html.anim .pf-guard>*.din,html.anim .pf-data>*.din{opacity:1;translate:0 0}
@media (prefers-reduced-motion:reduce){
  html.anim .pf-steps>*,html.anim .pf-smp>*,html.anim .pf-guard>*,html.anim .pf-data>*{opacity:1;translate:none}
  .pf-step,.pf-no,.pf-sc,.pf-gc{transition:none}
}
@media (max-width:1020px){
  .pf-cols{grid-template-columns:1fr}
  .pf-smp{grid-template-columns:repeat(2,minmax(0,1fr))}
  .pf-guard{grid-template-columns:repeat(2,minmax(0,1fr))}
  .pf-info ol{grid-template-columns:1fr}
  .pf-num b{font-size:27px}
}
@media (max-width:720px){
  .pf-no{left:17px;top:17px}      /* 跟随窄屏卡片内边距 17px（V1.100：序号在卡片内） */
  .pf-box{padding:17px 17px 18px}
  .pf-smp,.pf-guard{grid-template-columns:1fr}
  .pf-data{grid-template-columns:repeat(2,minmax(0,1fr));gap:22px 0}
  .pf-num:nth-child(2n){border-right:0}
  .pf-start{flex-direction:column;align-items:stretch}
  .pf-start .btn{width:100%}
}

/* ---------- 12 · 公正性声明（声明书版式 · V1.42 新增 / V1.43–V1.45 调整） ---------- */
.pj-wrap{display:grid;grid-template-columns:252px minmax(0,1fr);gap:34px;align-items:start}
/* 左栏 = 声明条款目录 + 检测服务领域卡 + 预约检测卡（整栏 sticky）
   V1.44：两张入口卡不再自建样式，直接复用频道页左栏组件 .sbox.svc-domcard / .cta-card.svc-cta
          —— 同一个组件全站一处维护；此处只做容器适配（纵向 grid + 间距由栅格接管）。 */
.pj-side{display:grid;grid-template-columns:minmax(0,1fr);gap:16px}
.pj-side .svc-side{display:grid;grid-template-columns:minmax(0,1fr);gap:16px}
.pj-side .sbox{margin-bottom:0}
.pj-body{min-width:0}
/* 右栏顶部标题（V1.43：下移入右栏、与条款卡左对齐，取代居中的 .s-head） */
.pj-head{margin-bottom:24px}
.pj-head h2{font-size:28px;font-weight:600;color:var(--ink);letter-spacing:.4px;line-height:1.4}
.pj-head p{margin-top:11px;font-size:14.5px;color:var(--ink3);line-height:1.95}
/* 左栏：声明条款目录 */
.pj-nav{background:#fff;border:1px solid var(--line);border-radius:16px;overflow:hidden}
.pj-nav-h{display:flex;align-items:center;gap:9px;background:var(--p50);border-bottom:1px solid var(--p100);padding:13px 15px}
.pj-nav-h i{flex:0 0 auto;width:3px;height:14px;border-radius:2px;background:var(--p700);font-style:normal}
.pj-nav-h b{font-size:13.5px;font-weight:600;color:var(--p800);letter-spacing:.3px}
.pj-lnk{position:relative;display:grid;grid-template-columns:32px minmax(0,1fr);gap:10px;align-items:center;padding:12px 15px;font-size:13.5px;color:var(--ink3);line-height:1.5;text-decoration:none;transition:background .26s,color .26s}
.pj-lnk+.pj-lnk{border-top:1px solid var(--p50)}
.pj-lnk i{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:10px;background:var(--p50);border:1px solid var(--p100);color:var(--p700);font-style:normal;font-size:11.5px;font-weight:600;letter-spacing:.4px;font-variant-numeric:tabular-nums;transition:background .26s,border-color .26s,color .26s}
.pj-lnk:hover{background:#FBF7FC;color:var(--p700)}
.pj-lnk:hover i{background:var(--p100);border-color:var(--p200)}
.pj-lnk.on{background:var(--p50);color:var(--p800);font-weight:600}
.pj-lnk.on i{background:linear-gradient(140deg,#660874,#8A1F9C);border-color:transparent;color:#fff}
.pj-lnk.on::before{content:"";position:absolute;left:0;top:9px;bottom:9px;width:3px;border-radius:0 3px 3px 0;background:var(--p700)}
.pj-nav-f{border-top:1px solid var(--p100);padding:12px 15px;font-size:11.5px;color:var(--ink4);line-height:1.75}
/* 声明导语（浅紫底 → 其中的小标签必须白底） */
.pj-lead{position:relative;overflow:hidden;background:var(--p50);border:1px solid var(--p100);border-radius:16px;padding:22px 25px 23px 27px}
.pj-lead::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(180deg,var(--p700),var(--p400))}
.pj-lead .k{display:inline-flex;align-items:center;gap:7px;background:#fff;border:1px solid var(--p100);border-radius:8px;padding:4px 11px;font-size:11.5px;font-weight:600;color:var(--p700);letter-spacing:.6px}
.pj-lead .k::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--p600)}
.pj-lead p{margin-top:13px;font-size:14.5px;color:var(--ink2);line-height:2.05}
/* 条款 */
.pj-list{margin-top:18px;display:flex;flex-direction:column;gap:16px}
.pj-item{position:relative;display:grid;grid-template-columns:50px minmax(0,1fr);gap:20px;background:#fff;border:1px solid var(--line);border-radius:16px;padding:24px 26px 25px;transition:border-color .3s,box-shadow .3s,translate .62s cubic-bezier(.2,.7,.3,1),opacity .62s ease}
.pj-item:hover{border-color:var(--p300);box-shadow:0 24px 40px -32px rgba(58,7,69,.5)}
.pj-no{display:flex;align-items:center;justify-content:center;width:50px;height:50px;border-radius:14px;background:var(--p50);border:1px solid var(--p100);color:var(--p700);font-style:normal;font-size:14px;font-weight:600;letter-spacing:.6px;font-variant-numeric:tabular-nums;transition:background .4s,border-color .4s,color .4s}
.pj-item.din .pj-no{background:linear-gradient(140deg,#660874,#8A1F9C);border-color:transparent;color:#fff}
.pj-item h3{font-size:17.5px;font-weight:600;color:var(--ink);letter-spacing:.2px;line-height:1.5}
.pj-item .pj-p{margin-top:11px;font-size:14.5px;color:var(--ink2);line-height:2.02}
.pj-item .pj-p+.pj-p{margin-top:10px}
.pj-item .pj-p b{color:var(--p800);font-weight:600}
.pj-ul{margin-top:13px;display:flex;flex-direction:column;gap:9px;list-style:none;padding-left:0}
.pj-ul li{position:relative;padding-left:17px;font-size:14px;color:var(--ink2);line-height:1.95}
.pj-ul li::before{content:"";position:absolute;left:0;top:9px;width:5px;height:5px;border-radius:1.5px;background:var(--p400)}
/* 监督与投诉渠道（深紫带） */
.pj-watch{margin-top:16px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));background:linear-gradient(150deg,#2E0736,#5C1069);border-radius:16px;overflow:hidden;color:#fff}
.pj-wt{padding:20px 22px 21px;border-right:1px solid rgba(255,255,255,.14)}
.pj-wt:last-child{border-right:0}
.pj-wt .k{font-size:11.5px;color:#C3A6D2;letter-spacing:.4px}
.pj-wt b{display:block;margin-top:9px;font-size:17px;font-weight:600;color:#fff;letter-spacing:.4px;font-variant-numeric:tabular-nums}
.pj-wt p{margin-top:8px;font-size:12.5px;color:#C9A9D6;line-height:1.85}
/* 进场（复用全站 IO：reveal 给 .pj-list 子项加 .din） */
html.anim .pj-list>*{opacity:0;translate:0 18px}
html.anim .pj-list>*.din{opacity:1;translate:0 0}
@media (prefers-reduced-motion:reduce){
  html.anim .pj-list>*{opacity:1;translate:none}
  .pj-item,.pj-no,.pj-lnk,.pj-lnk i{transition:none}
}
@media (min-width:1181px){.pj-side{position:sticky;top:16px}}
@media (max-width:1020px){
  .pj-wrap{grid-template-columns:1fr;gap:18px}
  .pj-side .svc-side{grid-template-columns:repeat(2,minmax(0,1fr))}
  .pj-nav-f{display:none}
}
@media (max-width:720px){
  .pj-side .svc-side{grid-template-columns:1fr}
  .pj-item{grid-template-columns:1fr;gap:14px;padding:20px 20px 21px}
  .pj-no{width:42px;height:42px;border-radius:12px;font-size:13px}
  .pj-lnk{padding:11px 14px}
  .pj-watch{grid-template-columns:1fr}
  .pj-wt{border-right:0;border-bottom:1px solid rgba(255,255,255,.14)}
  .pj-wt:last-child{border-bottom:0}
}
/* ---------- 工具类：视觉隐藏（仍在无障碍树与搜索引擎抓取范围内，不是 display:none） ----------
   2026-10-22：内容页的 <h1> 改为「只给搜索引擎看」的标签，页面视觉大字改用 div.pj-h，
   两者分离后，后台「自定义 H1」怎么填都不会改变页面上看到的那行标题。 */
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap;border:0}
/* ---------- 09 · 检测项目详情：正文居中标题块（V1.74：由 banner 移入正文，h1 归正文；
   V1.75 删除标题下方说明行，标题块只留 h1）
   2026-10-22：标题块内改为 h1.sr-only（SEO 用）+ div.pj-h（可见，= 后台文章标题）
   双栏页面不在版心正中放标题（居中的 .s-head 会与左栏边界错位）——标题块放在**主内容列内**居中。 */
.pj-title{position:relative;padding:6px 0 24px;margin-bottom:26px;border-bottom:1px solid var(--line);text-align:center}
.pj-title .pj-h{font-size:30px;font-weight:600;line-height:1.42;letter-spacing:.4px;color:var(--ink)}
@media (max-width:820px){
  .pj-title{padding-top:2px;padding-bottom:18px;margin-bottom:20px}
  .pj-title .pj-h{font-size:23px}
}
/* ---------- 09 · 页尾横幅留资卡（V1.76 新增：横向转化条 · 纯静态、无交互、无需后台维护） ----------
   V1.75 的「用水场景自查」板块因内容需后台逐页维护、成本不可控，V1.76 取消，页尾改用本横幅卡收口。
   与右栏竖版留资卡分工：右栏随滚动常驻、本卡落在正文末节之后做最后一道转化；文案写死在页面，
   不依赖任何配置表，也不承接任何跳转以外的行为。
   V1.77：由「只占主内容列（≈824px）」改为跨满版心（1152px），同时整体压低卡内高度。
   V1.78：改「全屏通铺」——整块移出主版心 .ct2，作为页面级收尾块（页面模板里 .pg 的直接子级，
   与友情链接带同级）：外层 .pj-cta 只管背景满屏出血，内层复用 .ct2 做版心限宽（1200px + 左右 24px），
   与全站页尾转化带 `.cta-bleed > .ct2` 完全同构——不引 100vw，所以不会产生横向滚动条。
   V1.84：本组件**由 09 项目详情页扩用到 10 案例详情页**（同一份结构，只换文案 —— 09 走「送检决策」、
   10 走「检测咨询」）；两页的落点一致：正文版心之外、友情链接带之前。改样式即两页同改。
   V1.85：10 页文案重写为**跨领域通用口径**（原版含「场地 / 取样点位 / 报告怎么用」等环境语境词，
   只适用于环境检测案例；现在六个领域的案例页可直接复用同一套文案）。 */
.pj-cta{position:relative;overflow:hidden;margin:0;color:#fff;
  background:linear-gradient(128deg,#5C0A6C,#8A1F9C 56%,#A84CC0)}
.pj-cta .pj-cta-in{position:relative;padding:19px 24px 15px}
.pj-cta-in::after{content:"";position:absolute;right:-30px;top:-96px;width:260px;height:260px;border-radius:50%;
  background:radial-gradient(circle,rgba(255,255,255,.2),transparent 68%);pointer-events:none}
.pj-cta-hd{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:13px 30px;align-items:center}
.pj-cta-k{display:inline-block;padding:3px 10px;border-radius:999px;background:rgba(255,255,255,.15);
  border:1px solid rgba(255,255,255,.24);font-size:11.5px;letter-spacing:2px;color:#F4E3F9}
.pj-cta h3{margin:8px 0 0;font-size:19.5px;font-weight:600;line-height:1.45;color:#fff}
.pj-cta p{margin:6px 0 0;max-width:660px;font-size:12.5px;line-height:1.7;color:rgba(255,255,255,.78)}
.pj-cta-act{display:flex;flex-direction:column;gap:8px;min-width:186px}
.pj-cta-act .btn{width:100%;height:38px;padding:0 20px;font-size:13.5px}
.pj-cta-tel{margin-top:2px;text-align:center;font-size:12px;color:rgba(255,255,255,.66)}
.pj-cta-tel em{font-style:normal;font-size:13.5px;color:#fff;letter-spacing:.3px}
.pj-cta-q{position:relative;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;margin-top:14px;
  padding-top:13px;border-top:1px solid rgba(255,255,255,.18)}
.pj-cta-q span{display:block;font-size:12.5px;line-height:1.65;color:rgba(255,255,255,.72)}
.pj-cta-q em{display:block;margin-bottom:3px;font-style:normal;font-size:13px;font-weight:600;color:#fff}
@media (max-width:900px){
  .pj-cta .pj-cta-in{padding:17px 18px 14px}
  .pj-cta-hd{grid-template-columns:minmax(0,1fr)}
  .pj-cta-act{flex-direction:row;min-width:0}
  .pj-cta-tel{display:none}
  .pj-cta-q{grid-template-columns:minmax(0,1fr);gap:12px;margin-top:13px}
}


/* ---------- 08 · 关于我们（研究院介绍 / 资质展示 / 实验室展示 三合一 · V1.46 重建，V1.48 精简、V1.49 下属机构重做、V1.50 资质展示简化、V1.51 资质展示改证书图墙、V1.52 证书位缩为 3×3、V1.53 图墙铺满版心、V1.54 图幅降高 1:1、V1.55 图宽收至 280px、V1.56 图宽回 320px 且改横版 4:3、V1.57 图框铺满列宽且改 16:9、V1.58 比例更正为竖版 9:16、V1.59 预留图片按 9:16 缩小至 240×427、V1.60 预留图高再缩至 200×356、V1.61 实验室展示删通栏大图、V1.62 删六领域实验室卡与仪器清单、V1.63 实验室图墙改 3×3 九格 + 图内文字移出图框居中、V1.64 资质图墙对齐实验室规格（3×3 / 4:3 / 图下居中名）并补齐 9 条证书名、V1.65 新增「④ 在线留言」卡〔左信息栏 + 右表单〕、V1.66 留言卡字段精简（删单位 / 邮箱 / 确认勾选）并加二维码占位、V1.67 删除页尾深紫转化带〔与 ④ 在线留言功能重复〕、V1.69 全站「联系我们」改指 ④ 在线留言板块锚点 #msg 并加锚点避让） ---------- */
/* 吸顶子导航：三板块锚点 + 滚动高亮（JS 见页尾；其他页面无 .au-navbar，脚本自动跳过） */
.au-navbar{position:sticky;top:0;z-index:40;background:#fff;border-bottom:1px solid var(--line);box-shadow:0 12px 28px -26px rgba(58,7,69,.6)}
/* V1.69 锚点避让：本页有 62px 吸顶子导航，站内锚点跳转（#intro / #cert / #lab / #msg）须留出高度，否则板块头被压住 */
.au-sec[id]{scroll-margin-top:78px}
.au-nav{display:flex;align-items:center;gap:20px;height:62px}
.au-nav-k{display:flex;align-items:center;gap:8px;flex:0 0 auto}
.au-nav-k i{width:3px;height:15px;border-radius:2px;background:var(--p700)}
.au-nav-k b{font-size:13.5px;font-weight:600;color:var(--p800);letter-spacing:.4px}
.au-lnks{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.au-lnk{display:inline-flex;align-items:center;gap:7px;padding:8px 15px;border-radius:8px;font-size:13.5px;color:var(--ink3);text-decoration:none;transition:background .26s,color .26s,box-shadow .26s}
.au-lnk i{font-style:normal;font-size:11.5px;color:var(--p400);letter-spacing:.3px;font-variant-numeric:tabular-nums;transition:color .26s}
.au-lnk:hover{background:var(--p50);color:var(--p700)}
.au-lnk.on{background:var(--p700);color:#fff;box-shadow:0 10px 20px -14px rgba(58,7,69,.7)}
.au-lnk.on i{color:#D9B9E4}
.au-nav-r{margin-left:auto;flex:0 0 auto}

/* ① 研究院介绍（V1.48 精简为两段：机构概况〔含下属机构〕/ 技术服务五项卡；V1.49 下属机构改并列双卡） */
/* A · 机构概况：左叙事 + 右规模矩阵 */
.au-ov{display:grid;grid-template-columns:minmax(0,1.06fr) minmax(0,.94fr);gap:40px;align-items:start}
.au-ov-n{display:flex;align-items:center;gap:11px;font-size:21px;font-weight:600;color:var(--ink);letter-spacing:.8px}
.au-ov-n i{flex:0 0 auto;width:4px;height:22px;border-radius:2px;background:linear-gradient(180deg,var(--p700),var(--p400))}
.au-ov-l p{margin-top:14px;font-size:14.5px;color:var(--ink2);line-height:2.1}
.au-ov-l p.au-ov-lead{margin-top:17px;font-size:15.5px;color:var(--ink);line-height:2.12}
.au-ov-l b{color:var(--p800);font-weight:600}
.au-cli{margin-top:17px;display:flex;flex-wrap:wrap;gap:10px}
.au-cli span{display:inline-flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--line);border-radius:9px;padding:8px 14px;font-size:13px;color:var(--ink2);transition:border-color .3s,color .3s,box-shadow .3s}
.au-cli span::before{content:"";width:6px;height:6px;border-radius:2px;background:linear-gradient(140deg,var(--p700),var(--p400))}
.au-cli span:hover{border-color:var(--p300);color:var(--p800);box-shadow:0 14px 26px -22px rgba(58,7,69,.75)}
.au-mx{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.au-m{position:relative;overflow:hidden;background:#fff;border:1px solid var(--line);border-radius:16px;padding:22px 20px 21px;transition:border-color .3s,box-shadow .3s,translate .62s cubic-bezier(.2,.7,.3,1),opacity .62s ease}
.au-m::after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;background:linear-gradient(90deg,var(--p700),var(--p300));transform:scaleX(0);transform-origin:left;transition:transform .8s cubic-bezier(.2,.7,.3,1)}
.au-m.din::after{transform:scaleX(1)}
.au-m:hover{border-color:var(--p300);box-shadow:0 26px 46px -40px rgba(58,7,69,.6)}
.au-m>b{font-size:36px;font-weight:600;color:var(--p800);letter-spacing:.5px;line-height:1;font-variant-numeric:tabular-nums}
.au-m>i{font-style:normal;font-size:16px;font-weight:600;color:var(--p400);margin-left:3px}
.au-m>span{display:block;margin-top:12px;font-size:14px;font-weight:600;color:var(--ink);letter-spacing:.2px}
.au-m>em{display:block;margin-top:6px;font-style:normal;font-size:12px;color:var(--ink4);line-height:1.75}

/* A2 · 下属机构：两张并列方框卡（V1.49 重做；方框语言 = 卡外框 / 机构单字块 / 序号方框 / 数字方框 / 荣誉条 / 范围胶囊） */
.au-units{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;align-items:stretch}
.au-unit{position:relative;overflow:hidden;display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);border-radius:18px;padding:24px 24px 22px;transition:border-color .3s,box-shadow .3s,translate .62s cubic-bezier(.2,.7,.3,1),opacity .62s ease}
.au-unit::before{content:"";position:absolute;left:0;top:0;right:0;height:3px;background:linear-gradient(90deg,var(--p700),var(--p300));transform:scaleX(.34);transform-origin:left;transition:transform .48s cubic-bezier(.2,.7,.3,1)}
.au-unit:hover{border-color:var(--p300);box-shadow:0 28px 50px -40px rgba(58,7,69,.6)}
.au-unit:hover::before{transform:scaleX(1)}
.au-unit-no{position:absolute;right:22px;top:24px;display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:11px;border:1px solid var(--p100);color:var(--p300);font-size:12px;font-weight:600;letter-spacing:.6px;font-variant-numeric:tabular-nums}
.au-unit-h{padding-right:46px;display:flex;align-items:center;gap:14px;min-width:0}
.au-unit-h>i{flex:0 0 auto;width:48px;height:48px;border-radius:15px;display:flex;align-items:center;justify-content:center;font-style:normal;font-size:20px;font-weight:600;color:#fff;background:linear-gradient(140deg,#660874,#8A1F9C);box-shadow:0 16px 26px -20px rgba(102,8,116,.95)}
.au-unit-h h3{font-size:17px;font-weight:600;color:var(--ink);letter-spacing:.3px;line-height:1.5}
.au-unit-h span{display:block;margin-top:4px;font-size:12px;color:var(--ink4);line-height:1.7}
.au-unit-k{margin-top:16px;display:flex;align-items:baseline;background:var(--p50);border:1px solid var(--p100);border-radius:14px;padding:15px 17px}
.au-unit-k>b{flex:0 0 auto;font-size:30px;font-weight:600;color:var(--p800);line-height:1;letter-spacing:.5px;font-variant-numeric:tabular-nums}
.au-unit-k>i{flex:0 0 auto;font-style:normal;font-size:15px;font-weight:600;color:var(--p400);margin-left:4px}
.au-unit-k>span{min-width:0;margin-left:16px;font-size:12.5px;color:var(--ink3);line-height:1.75}
.au-unit-hot{margin-top:12px;display:flex;align-items:center;gap:10px;border-radius:12px;padding:11px 14px;font-size:12.5px;font-weight:600;color:#fff;letter-spacing:.2px;line-height:1.7;background:linear-gradient(140deg,#660874,#8A1F9C);box-shadow:0 16px 30px -26px rgba(102,8,116,.95)}
.au-unit-hot::before{content:"";flex:0 0 auto;width:14px;height:14px;border-radius:4px;border:1px solid rgba(255,255,255,.55);background:rgba(255,255,255,.18)}
.au-unit-g{margin-top:16px}
.au-unit-gt{display:inline-flex;align-items:center;gap:7px;font-size:12px;font-weight:600;color:var(--p700);letter-spacing:.3px}
.au-unit-gt::before{content:"";width:3px;height:12px;border-radius:2px;background:var(--p400)}
.au-unit-g.dim .au-unit-gt{color:var(--ink3)}
.au-unit-g.dim .au-unit-gt::before{background:var(--line)}
.au-chips{margin-top:10px;display:flex;flex-wrap:wrap;gap:8px}
.au-chips span{display:inline-flex;align-items:center;font-size:12.5px;color:var(--ink2);background:#FDFAFE;border:1px solid var(--p100);border-radius:8px;padding:7px 12px;line-height:1.5;transition:border-color .26s,color .26s,background .26s}
.au-chips span:hover{border-color:var(--p300);color:var(--p800);background:var(--p50)}
.au-chips.dim span{border-style:dashed;border-color:var(--line);color:var(--ink3);font-size:12px}
.au-chips.dim span:hover{border-color:var(--p200);color:var(--p700)}
.au-tags{display:flex;flex-wrap:wrap;gap:8px}
.au-unit .au-tags{margin-top:auto;padding-top:16px;border-top:1px dashed var(--line)}
.au-tag{display:inline-flex;align-items:center;font-size:12px;border-radius:7px;padding:6px 11px;background:var(--p50);border:1px solid var(--p100);color:var(--p800);line-height:1.6}

/* C · 技术服务（V1.48 回到 V1.46 卡式；五项 = 检测 / 分析 / 测试 / 鉴定 / 研发）
   V1.104：序号方块与标题<b>同一行</b>——卡体由块级流改 2 列网格（auto + minmax(0,1fr)），
   序号占格 1、标题占格 2 同行垂直居中，说明与要点各占整行（grid-column:1/-1）。
   DOM 零改动（<i class="au-no"> / <h3> / <p> / <ul> 顺序不变）。 */
.au-sub{margin:40px 0 18px;display:flex;align-items:center;gap:11px}
.au-sub i{flex:0 0 auto;width:3px;height:16px;border-radius:2px;background:linear-gradient(180deg,var(--p700),var(--p400))}
.au-sub h3{font-size:19px;font-weight:600;color:var(--ink);letter-spacing:.3px}
.au-sub span{margin-left:auto;font-size:12.5px;color:var(--ink4)}
.au-biz{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px}
.au-b{position:relative;overflow:hidden;display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:11px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:16px;padding:21px 20px 22px;transition:border-color .3s,box-shadow .3s,translate .62s cubic-bezier(.2,.7,.3,1),opacity .62s ease}
.au-b::before{content:"";position:absolute;left:0;top:0;right:0;height:3px;background:linear-gradient(90deg,var(--p700),var(--p300));transform:scaleX(.34);transform-origin:left;transition:transform .48s cubic-bezier(.2,.7,.3,1)}
.au-b:hover{border-color:var(--p300);box-shadow:0 26px 44px -36px rgba(58,7,69,.55)}
.au-b:hover::before{transform:scaleX(1)}
.au-b .au-no{grid-column:1;grid-row:1;display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:12px;background:var(--p50);border:1px solid var(--p100);color:var(--p700);font-style:normal;font-size:15px;font-weight:600;transition:background .4s,border-color .4s,color .4s}
.au-b.din .au-no{background:linear-gradient(140deg,#660874,#8A1F9C);border-color:transparent;color:#fff}
.au-b h3{grid-column:2;grid-row:1;min-width:0;margin-top:0;font-size:16.5px;font-weight:600;color:var(--ink);letter-spacing:.3px}
.au-b p{grid-column:1/-1;grid-row:2;margin-top:8px;font-size:13px;color:var(--ink2);line-height:1.95}
.au-b ul{grid-column:1/-1;grid-row:3;margin-top:12px;padding-top:11px;border-top:1px dashed var(--line);display:flex;flex-direction:column;gap:7px;list-style:none;padding-left:0}
.au-b ul li{position:relative;padding-left:14px;font-size:12.5px;color:var(--ink3);line-height:1.8}
.au-b ul li::before{content:"";position:absolute;left:0;top:8px;width:4px;height:4px;border-radius:1.5px;background:var(--p400)}

/* ② 资质展示：证书图墙（V1.51 照参考站布局重做 —— 图片平铺网格、图下证书名一行；
   V1.52 按 3×3 预留 9 个证书位、「证书名称待补充」占位名挂 .is-ph 淡色弱化。
   V1.53 网格铺满版心：列宽由固定 252px 改为等分 1fr（此前 800px 居中块与上下
   1200px 版心板块左右不齐，用户判「不伦不类地挤在一起」）；单张证书图另设
   max-width:320px 上限（与参考站图宽同口径），避免等分后图幅过大。
   V1.54 按用户要求降低图幅高度：比例 3:4 → 1:1（宽 320px 不变，高 427 → 320px），
   九宫格三行总高随之收紧约 340px。
   V1.55 按用户要求再把宽度也适当降低：max-width 320 → 280px（方形 280×280），
   列宽约 368px，图在列内居中、左右各留白约 44px。
   V1.56 用户要求「宽度要与研究院介绍板块一致、回滚到上一版本，同时适当减少预留图片的
   长度，目前的版本看起来像正方形了」—— 图幅上限回到 320px（撤销 V1.55 的收窄），
   比例由方形 1:1 改为横版 4:3（320×240，高度再降 80px），图框不再像正方形。
   V1.57 用户指出「未与上方的板块表格对齐」—— 320px 图在 368px 列内居中会让每格左右
   各内缩约 24px，图墙视觉边界比上方贴版心的板块窄一圈。现**去掉单图 max-width**，
   让 .au-fig 铺满列宽（368px），并把比例改为 **16:9**（368×207）——图墙左右边界与
   同版心其他板块（机构概况 / 技术服务 / 实验室展示）严格对齐，每张证书位为 16:9。
   V1.58 用户更正「证书的比例是 9:16」—— 比例由横版 16:9 改为**竖版 9:16**：
   宽度仍铺满列宽（内容区 1152px、3 列各约 368px），单图高 = 368 × 16 / 9 ≈ 654px，
   九宫格三行总高约 2022px。证书扫描件本身即竖版，9:16 与其形态一致。
   V1.59 用户要求「图片按照 9:16 的比例缩小」—— 368×654 过大，给 .au-fig 加
   **max-width:240px**（比例保持竖版 9:16），单图为 **240×427px**（宽 −35%、高 −35%），
   图在 368px 列内居中、九宫格三行总高约 1341px。**网格仍 3 列等分铺满版心**——
   收窄的是单张预留图幅，不是图墙的排布宽度。缩放只调这一个数值即可。
   V1.60 用户要求「高度进一步缩小」—— 比例锁定 9:16 时图幅只能等比缩，max-width
   240 → **200px**，单图为 **200×356px**（宽 / 高各 −17%），九宫格三行总高约 1128px。
   ⚠️ 教训：图墙类板块要与上方板块对齐，图**必须铺满列宽**；一旦给单图设 max-width，
   就会在列内居中内缩、失去版心对齐。
   图片不可点击放大：不套 <a>、无 cursor:zoom-in、无 lightbox 脚本）
   V1.64 用户要求「资质展示按照下方的实验室展示布局，3*3，尺寸与实验室展示下方的图片一致，
   同时补齐资质展示下方的二级标题介绍」—— ② 与 ③ 统一为同一套图文单元语言：
   网格 gap 30/24 → **26/20px**；图框 .au-fig 去掉 max-width 与竖版 9:16，改 **width:100%
   + aspect-ratio:4/3**（与 .au-shot 同尺寸同圆角 16px）；**框内不再放任何文字**
   （删 .au-fig b / .au-fig span 与模板里的「证书实拍位 / 由院方提供后替换」）；
   图下证书名 .au-cert-cap 由「14.5px / 600 / 深色」改为与 .au-cell-t 一致的
   「14px / 常规 / --ink2 / 行高 1.6 / 居中」，去 .is-ph 分级；9 条证书名称全部补齐。
   V1.96 已录入 9 张真实证书扫描件：.au-fig 内为 <img>（object-fit:contain，白底不裁切），
   虚线占位框样式已删（含窄屏断点），图下名称行保留。*/
.au-certs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:26px 20px}
.au-cert{display:flex;flex-direction:column;align-items:center;transition:translate .62s cubic-bezier(.2,.7,.3,1),opacity .62s ease}
.au-fig{position:relative;overflow:hidden;width:100%;aspect-ratio:4/3;background:#fff;border:1px solid var(--line);border-radius:16px}
.au-fig img{width:100%;height:100%;object-fit:contain}
.au-cert-cap{margin-top:12px;font-size:14px;line-height:1.6;color:var(--ink2);text-align:center;letter-spacing:.2px}
.au-cert-note{margin-top:22px;font-size:12px;line-height:1.9;color:#9C90A8;text-align:center;letter-spacing:.2px}

/* ③ 实验室展示：3×3 九格实拍图墙（V1.61 删通栏大图 .au-wide、V1.62 删六领域实验室卡与仪器清单、V1.63 改 3×3 九格 + 说明文字移出图框居中） */
.au-wall{margin-top:34px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:26px 20px}
.au-cell{display:flex;flex-direction:column;align-items:center;transition:translate .62s cubic-bezier(.2,.7,.3,1),opacity .62s ease}
.au-shot{position:relative;overflow:hidden;width:100%;border-radius:16px;aspect-ratio:4/3;background:var(--p50);border:1px solid var(--line);transition:border-color .34s,box-shadow .34s}
.au-shot img{width:100%;height:100%;object-fit:cover;transition:transform .85s cubic-bezier(.2,.7,.3,1)}
.au-shot:hover{border-color:var(--p300);box-shadow:0 26px 46px -38px rgba(58,7,69,.6)}
.au-shot:hover img{transform:scale(1.06)}
.au-cell-t{margin-top:12px;font-size:14px;line-height:1.6;color:var(--ink2);text-align:center;letter-spacing:.2px}
.au-cell-t.is-ph{color:var(--ink4)}
.au-shot.ph{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;background:repeating-linear-gradient(135deg,#FBF7FC,#FBF7FC 12px,#F6EEF9 12px,#F6EEF9 24px)}
.au-shot.ph::after{content:"";position:absolute;inset:13px;border:1px dashed var(--p200);border-radius:10px}

/* ④ 在线留言：左信息栏 + 右表单 横向双栏卡（V1.65 新增 · V1.66 字段精简 + 二维码占位 ·
   V1.104 二维码预留位 88 → 120px，窄屏 78 → 108px） */
.au-msg{margin-top:34px;display:grid;grid-template-columns:minmax(0,.88fr) minmax(0,1.12fr);background:#fff;border:1px solid var(--line);border-radius:20px;overflow:hidden;box-shadow:0 46px 88px -70px rgba(58,7,69,.6)}
.au-msg-l{position:relative;overflow:hidden;display:flex;flex-direction:column;padding:30px 32px 26px;color:#fff;background:linear-gradient(158deg,#410449 0%,#6A0F7D 54%,#8A1F9C 100%);transition:translate .62s cubic-bezier(.2,.7,.3,1),opacity .62s ease}
.au-msg-l::after{content:"";position:absolute;right:-96px;bottom:-116px;width:300px;height:300px;border-radius:50%;border:1px solid rgba(255,255,255,.18);box-shadow:0 0 0 32px rgba(255,255,255,.05),0 0 0 68px rgba(255,255,255,.028);pointer-events:none}
.au-k2{position:relative;z-index:1;align-self:flex-start;display:inline-flex;align-items:center;gap:7px;padding:7px 13px;border-radius:8px;background:rgba(255,255,255,.15);color:#fff;font-size:12.5px;font-weight:600;letter-spacing:2.1px}
.au-k2::before{content:"";width:6px;height:6px;border-radius:50%;background:#E9D3F1}
.au-msg-l h3{position:relative;z-index:1;width:100%;min-width:0;margin-top:14px;font-size:21px;font-weight:600;line-height:1.5;letter-spacing:0;color:#fff;word-break:normal;overflow-wrap:break-word;text-wrap:balance}
.au-msg-l>p{position:relative;z-index:1;margin-top:10px;font-size:12.5px;line-height:1.85;color:#DFC6E9}
.au-msg-pts{position:relative;z-index:1;margin-top:16px;display:flex;flex-direction:column;gap:9px}
.au-msg-pts li{display:flex;align-items:flex-start;gap:10px;font-size:12.5px;line-height:1.7;color:#F0E2F5}
.au-msg-pts li i{flex:0 0 auto;margin-top:7px;width:6px;height:6px;border-radius:2px;background:#E9D3F1;font-style:normal}
.au-msg-foot{position:relative;z-index:1;margin-top:auto;padding-top:20px;display:flex;align-items:center;gap:16px;border-top:1px solid rgba(255,255,255,.18)}
.au-qr{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;gap:7px}
.au-qr i{display:flex;align-items:center;justify-content:center;width:120px;height:120px;border-radius:14px;background:#fff;box-shadow:0 16px 28px -20px rgba(0,0,0,.7);font-style:normal}
.au-qr svg{display:block;width:92px;height:92px}
.au-qr span{font-size:10.5px;color:#C9A9D6;letter-spacing:.2px}
.au-msg-fx{min-width:0;display:flex;flex-direction:column;gap:5px}
.au-msg-fx b{font-size:14px;font-weight:600;color:#fff;letter-spacing:.3px}
.au-msg-fx span{font-size:12px;color:#C9A9D6}
.au-msg-fx em{font-style:normal;font-size:20px;font-weight:600;color:#fff;letter-spacing:.6px;font-variant-numeric:tabular-nums}
.au-msg-r{padding:28px 34px 24px;transition:translate .62s cubic-bezier(.2,.7,.3,1),opacity .62s ease}
.au-msg-h{display:flex;align-items:center;justify-content:space-between;gap:14px;padding-bottom:13px;border-bottom:1px solid var(--line2)}
.au-msg-h b{font-size:15.5px;font-weight:600;color:var(--ink);letter-spacing:.3px}
.au-msg-h span{font-size:12px;color:var(--ink4)}
.au-form{margin-top:18px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 18px}
.au-fld{display:flex;flex-direction:column;gap:8px;min-width:0}
.au-fld.wide{grid-column:1/-1}
.au-fld>label{font-size:12.5px;color:var(--ink2);letter-spacing:.2px}
.au-fld>label em{font-style:normal;margin-left:3px;color:var(--p700)}
.au-fld>label span{color:var(--ink4)}
.au-in{width:100%;height:44px;padding:0 14px;border:1px solid var(--line);border-radius:10px;background:var(--p50);font-family:inherit;font-size:13.5px;color:var(--ink);transition:border-color .24s,background .24s,box-shadow .24s}
.au-in::placeholder{color:var(--ink4)}
.au-in:hover{border-color:var(--p200)}
.au-in:focus{outline:none;background:#fff;border-color:var(--p700);box-shadow:0 0 0 4px rgba(102,8,116,.09)}
textarea.au-in{height:auto;min-height:88px;padding:12px 14px;line-height:1.75;resize:vertical}
.au-picks{display:flex;flex-wrap:wrap;gap:9px}
.au-pick{position:relative;display:inline-flex}
.au-pick input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.au-pick i{display:inline-flex;align-items:center;gap:7px;padding:8px 14px;border:1px solid var(--line);border-radius:9px;background:var(--p50);font-size:12.5px;font-style:normal;color:var(--ink2);cursor:pointer;transition:border-color .24s,background .24s,color .24s,box-shadow .24s}
.au-pick i::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--p200);transition:background .24s}
.au-pick:hover i{border-color:var(--p300);color:var(--p700)}
.au-pick input:checked+i{background:var(--p700);border-color:var(--p700);color:#fff;box-shadow:0 12px 22px -16px rgba(58,7,69,.85)}
.au-pick input:checked+i::before{background:#E9D3F1}
.au-pick input:focus-visible+i{box-shadow:0 0 0 4px rgba(102,8,116,.12)}
.au-form-b{grid-column:1/-1;display:flex;align-items:center;justify-content:flex-end;gap:16px;flex-wrap:wrap;margin-top:2px}
.au-submit{display:inline-flex;align-items:center;gap:9px;padding:13px 26px;border:0;border-radius:10px;background:var(--p700);color:#fff;font-family:inherit;font-size:14.5px;font-weight:600;letter-spacing:.3px;cursor:pointer;transition:background .26s,transform .26s,box-shadow .26s}
.au-submit i{font-style:normal;transition:transform .26s}
.au-submit:hover{background:var(--p800);transform:translateY(-1px);box-shadow:0 18px 32px -20px rgba(58,7,69,.85)}
.au-submit:hover i{transform:translateX(3px)}
.au-submit:active{transform:translateY(0)}

/* 进场（复用全站 IO：给 .au-rev 子项加 .din） */
html.anim .au-rev>*{opacity:0;translate:0 18px}
html.anim .au-rev>*.din{opacity:1;translate:0 0}
@media (prefers-reduced-motion:reduce){
  html.anim .au-rev>*{opacity:1;translate:none}
  .au-m,.au-m::after,.au-b,.au-b::before,.au-b .au-no,.au-unit,.au-unit::before,.au-cert,.au-cell,.au-shot,.au-shot img,.au-msg-l,.au-msg-r,.au-lnk{transition:none}
}
@media (max-width:1180px){
  .au-ov{grid-template-columns:1fr;gap:30px}
  .au-biz{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media (max-width:1020px){
  .au-nav{gap:14px;height:56px}
  .au-nav-k{display:none}
  .au-nav-r{display:none}
  .au-navbar{overflow-x:auto}
  .au-wall{grid-template-columns:repeat(2,minmax(0,1fr))}
  .au-certs{grid-template-columns:repeat(2,minmax(0,1fr))}
  .au-units{grid-template-columns:1fr}
  .au-unit{padding:22px 20px 20px}
  .au-biz{grid-template-columns:repeat(2,minmax(0,1fr))}
  .au-msg{grid-template-columns:1fr}
  .au-msg-l{padding:30px 26px 28px}
  .au-msg-r{padding:26px 26px 28px}
  .au-form{grid-template-columns:1fr}
}
@media (max-width:720px){
  .au-sec{padding:46px 0 48px}
  .au-certs{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 14px}
  .au-cert-cap{font-size:12.5px;margin-top:9px}
  .au-fig{border-radius:10px}
  .au-ov-n{font-size:19px}
  .au-mx{grid-template-columns:1fr}
  .au-m{padding:19px 17px 18px}
  .au-m>b{font-size:31px}
  .au-unit{padding:20px 18px 18px}
  .au-unit-h>i{width:42px;height:42px;border-radius:13px;font-size:18px}
  .au-unit-h h3{font-size:16px}
  .au-unit-no{top:20px;right:18px;width:30px;height:30px;border-radius:9px}
  .au-unit-k{flex-wrap:wrap;padding:13px 15px}
  .au-unit-k>b{font-size:26px}
  .au-unit-k>span{margin-left:0;width:100%;margin-top:7px}
  .au-biz{grid-template-columns:1fr}
  .au-b{padding:19px 18px 20px}
  .au-wall{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 14px}
  .au-cell-t{font-size:12.5px;margin-top:9px}
  .au-sub{margin-top:32px}
  .au-msg{margin-top:26px;border-radius:16px}
  .au-msg-l{padding:26px 20px 24px}
  .au-msg-l h3{font-size:19px}
  .au-msg-r{padding:20px 20px 22px}
  .au-pick i{padding:7px 12px;font-size:12px}
  .au-msg-foot{gap:14px;padding-top:18px}
  .au-qr i{width:108px;height:108px}
  .au-qr svg{width:82px;height:82px}
  .au-form-b{align-items:stretch}
  .au-submit{width:100%;justify-content:center}
}


/* ---------- 13 · 404 页面（V1.79 全新重做 · V1.80 删快捷入口行） ---------- */
.e404-hero{position:relative;overflow:hidden;background:linear-gradient(180deg,#F9F4FB 0%,#FFFFFF 82%);border-bottom:1px solid var(--line)}
.e404-hero::before{content:"";position:absolute;left:50%;top:-150px;width:660px;height:400px;margin-left:-330px;background:radial-gradient(closest-side,rgba(168,85,196,.18),rgba(168,85,196,0));pointer-events:none}
.e404-in{position:relative;padding:74px 0 64px;text-align:center}
.e404-code{font-size:126px;font-weight:600;line-height:1;letter-spacing:10px;text-indent:10px;background:linear-gradient(138deg,#4A0553,#660874 44%,#A855C4);-webkit-background-clip:text;background-clip:text;color:transparent}
.e404-hero h1{margin:20px 0 0;font-size:28px;font-weight:600;letter-spacing:.4px}
.e404-sub{margin:13px auto 0;max-width:660px;font-size:14.5px;color:var(--ink3);line-height:1.95}
.e404-act{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin-top:28px}
.e404-tel{margin-top:19px;font-size:13px;color:var(--ink3)}
.e404-tel b{margin:0 4px;font-size:19px;font-weight:600;color:var(--p700);letter-spacing:.5px;font-variant-numeric:tabular-nums}
.e404-tel span{margin-left:9px;color:var(--ink4)}
@media (max-width:820px){
  .e404-in{padding:52px 0 46px}
  .e404-code{font-size:82px;letter-spacing:6px;text-indent:6px}
  .e404-hero h1{font-size:22px}
  .e404-sub{font-size:13.5px;line-height:1.9}
  .e404-act{gap:10px;margin-top:24px}
  .e404-act .btn{flex:1 1 46%;min-width:132px;height:46px;padding:0 16px;font-size:14.5px}
  .e404-tel b{font-size:17.5px}
  .e404-tel span{display:block;margin:6px 0 0}
}

/* ---------- 独立页面文件附加样式 ---------- */
html,body{background:#fff}
body.site .pg{min-height:100vh}
.fabs{position:fixed;right:18px;top:300px;z-index:60}
a{cursor:pointer}
.mob-page{padding:44px 0 70px}
.mob-page .mob-row{justify-content:center}


/* ================= V2.0 移动端适配（派生版追加段） =================
   本段仅在「移动端与SEO」交付版中存在，PC 基准样式（设计稿/）不含本段。
   原则：只做「布局与可读性」修正，不删内容、不改文案、不动配色。 */
html{-webkit-text-size-adjust:100%}
body{overflow-x:hidden}
a,button,summary,label{-webkit-tap-highlight-color:rgba(102,8,116,.12)}

/* 移动端专属件：抽屉开关 / 遮罩 / 右上汉堡 / 底部固定入口条 —— PC 端一律不显示 */
.ms-nav-tog{display:none}
.ms-burger,.ms-mask,.ms-tabs{display:none}

/* 抽屉二级开关 / 一级项 label / 展开箭头：PC 端一律不显示
   —— PC（>760px）仍是一级 `<a>` + hover 浮层，行为与本段无关 */
.ms-subtog,.ms-sub-h,.ms-ar{display:none}

/* 友情链接折叠件：开关（checkbox）与折叠箭头 PC 端不显示 —— PC 恒展开，由 ≤760 段接管 */
.fr-tog{display:none}
.fr-ar{display:none}

/* 表格横向可滑动容器（脚本自动包裹 <table>；.cs-tb 为 div 网格表，用自身滚动） */
.ms-x{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}
.ms-x>table{min-width:560px;margin:0}

/* 触屏设备无 hover：表格行不做悬停高亮
   （证书弹层已改为「手机端整体不展示」，见 ≤760 段） */
@media (hover:none){
  .cs-tb-r:hover{background:none}
}

/* 双栏塌陷（V2.0 补齐）：PC 共用样式里 .side（250px 侧栏 + 内容，02/03 页）与
   .side.rev（内容 + 300px 右栏，09/10 页）**在所有断点都没有塌陷规则**——同族的
   .pj-wrap 在 ≤1020 已塌陷，这两条被漏掉。实测 375px 下 .side 仍是「250px + 69px」，
   正文列被压成竖条（不溢出但完全不可读）。按同族口径补 ≤1020 单列。 */
@media (max-width:1020px){
  .side,.side.rev{grid-template-columns:minmax(0,1fr)!important;gap:22px}
  /* 09 / 10 页（`.side.rev` = 正文 + 300px 右栏）：塌陷成单列后，右栏最末的留资卡
     `.cta-card.svc-cta` 与紧随其后的**页尾通铺留资卡 `.pj-cta`** 上下相邻 —— 两块同功能
     转化卡叠在一起（用户口径「功能性重合…既不美观，也不实用」）。窄屏起隐藏右栏那块，
     只保留页尾通铺卡（信息更全：kicker + 标题 + 说明 + 两枚按钮 + 电话 + 三项口径说明）。
     ⚠️ 只影响 ≤1020px（双栏已塌陷时）；桌面端右栏留资卡照常吸顶展示。
     ⚠️ 02 / 03 页用的是 `.side`（无 `.rev`，且页尾没有 `.pj-cta` 带），不受本规则影响。 */
  .side.rev .cta-card.svc-cta{display:none}
  /* 首页 Hero：PC 稿的双栏写在**内联样式**上（`minmax(0,1fr) 372px` 询价卡），
     内联声明优先级高于样式表 → 媒体查询改不动它，窄屏时右栏 372px 把左栏压扁，
     再被 Hero 的 overflow:hidden 裁掉。已在派生层给外壳/栅格容器加了类，
     这里把右栏改成可收缩（图仍是铺底压图方式，不改 PC 观感）。 */
  .ms-hero-grid{grid-template-columns:minmax(0,1fr) minmax(0,304px)!important;gap:26px!important;
    padding-top:64px!important;padding-bottom:70px!important}
  .ms-hero-grid>div:first-child>h1{font-size:29px!important;line-height:1.46!important}
  .ms-hero-grid>div:first-child>p{margin-top:20px!important}
  .ms-hero-grid>div:first-child>div{margin-top:28px!important}
}

@media (max-width:760px){
  /* ---- 头部：单行 = logo + 三枚资质图标 + 右上角汉堡（频道切换改为右侧抽屉） ----
     400 电话在移动端不展示（底部固定条保留「热线电话」入口）。
     宽度核算：实测 logo 512×80、图标 100×60 / 41×31 / 71×60、汉堡 44px；
     375px 可用 343px → logo 26px 高 ≈166px + 11 + 图标 19px 高 ≈97px + 11 + 44 ≈ 330px，余 13px；
     ≤430 档再各降一档（360px 可用 332px → ≈304px，余 28px）。 */
  .hd-main{height:auto;position:relative}
  .hd-main .ct2{flex-wrap:nowrap;gap:11px;padding:12px 16px;height:auto;min-height:0;align-items:center}
  .logo{flex:0 0 auto;margin:0;min-width:0;display:flex;align-items:center}
  .logo-img{height:26px;width:auto}
  .hd-cert{order:0;margin:0;padding-left:0;gap:9px;flex:0 1 auto;min-width:0;
    border-left:0;align-items:center}
  .cert-ico{height:26px}
  .cert-ico .ci-img{height:19px}
  .hd-cta{display:none}         /* 400 电话：移动端不展示 */

  /* 汉堡按钮（三条杠 → 打开时变叉）：DOM 中位于资质图标之后，靠 margin-left:auto 顶到最右 */
  .ms-burger{display:flex;flex-direction:column;justify-content:center;align-items:stretch;
    position:relative;top:auto;right:auto;flex:0 0 auto;margin-left:auto;
    width:44px;height:44px;padding:0 12px;box-sizing:border-box;border-radius:10px;cursor:pointer;
    background:var(--p50);z-index:130}
  .ms-burger span{display:block;height:2px;border-radius:2px;background:var(--p700);
    transition:transform .26s,opacity .2s}
  .ms-burger span+span{margin-top:5px}
  /* 抽屉开关本体：随抽屉一起只在手机档出现（视觉隐藏但键盘可达） */
  .ms-nav-tog{display:block;position:absolute;top:0;left:0;width:1px;height:1px;margin:-1px;
    padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
  /* 两个隐藏开关的包含块（V2.8 修「点友情链接直接跳页顶」）：
     #ms-nav / #fr-tog 都是 position:absolute;top:0;left:0 的 1px 视觉隐藏 checkbox，
     父级若无定位 → 相对**初始包含块（整个页面左上角）**定位；点 <label> 时浏览器会把
     聚焦的开关滚动进视野 = 页面猛跳（页尾的友情链接最明显；页面拉长后点页头汉堡也会跳）。
     给两个 .ct2 补 position:relative，开关回到各自标签旁边，跳转即消、PC 端不受影响
     （本规则只在 ≤760 段内，两个开关在 PC 都是 display:none）。 */
  .hd-main .ct2,.fr-band .ct2{position:relative}
  #ms-nav:checked ~ .ms-burger span:nth-child(1){transform:translateY(7px) rotate(45deg)}
  #ms-nav:checked ~ .ms-burger span:nth-child(2){opacity:0}
  #ms-nav:checked ~ .ms-burger span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

  /* 遮罩：点击关闭抽屉；抽屉打开时页面锁滚动、底部入口条让位 */
  .ms-mask{display:block;position:fixed;inset:0;z-index:120;background:rgba(32,7,38,.46);
    opacity:0;visibility:hidden;transition:opacity .28s,visibility .28s}
  #ms-nav:checked ~ .ms-mask{opacity:1;visibility:visible}
  body:has(#ms-nav:checked){overflow:hidden}
  body:has(#ms-nav:checked) .ms-tabs{opacity:0;visibility:hidden;pointer-events:none}

  /* 抽屉主体：复用 .hd-nav（纯 CSS 免 JS）
     V2.5 改版：**去卡片化** —— 底色仍是品牌清华紫 --p700（Pantone 2593C），
     一级频道不再用白色圆角方框，改为通透的纯文字行，**频道之间用一条半透明白细分隔线**
     （下划线）区隔；当前页 = 纯白 + 加粗。抽屉默认**只列一级频道**，
     点一级项才展开该频道的二级（纯 CSS :checked 手风琴）。 */
  .hd-nav{position:fixed;top:0;right:0;bottom:0;left:auto;width:min(86vw,332px);
    display:flex;flex-direction:column;align-items:stretch;gap:0;margin:0;padding:14px 18px 30px;
    background:var(--p700);border:0;
    overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;
    transform:translateX(103%);transition:transform .3s cubic-bezier(.32,.72,.28,1);
    z-index:125;box-shadow:-12px 0 36px rgba(44,8,52,.28)}
  #ms-nav:checked ~ .hd-nav{transform:none}
  .hd-nav::before{content:"频道导航";display:block;padding:2px 0 13px;text-align:left;
    font-size:12.5px;color:rgba(255,255,255,.74);letter-spacing:1.5px}
  .hd-nav .ni{position:relative;flex:0 0 auto;background:none;border-radius:0;margin-bottom:0;
    overflow:visible;box-shadow:none;border-bottom:1px solid rgba(255,255,255,.16)}
  .hd-nav .ni:last-child{border-bottom:0}
  .hd-nav .ni>a{display:block;padding:16px 0;font-size:15.5px;line-height:1.4;text-align:left;
    min-height:0;color:rgba(255,255,255,.88);white-space:normal;border-radius:0;height:auto}
  .hd-nav .ni.on>a{color:#fff;font-weight:600;background:none}
  /* 有二级的一级项：这一行改由 <label> 承接（点它展开 / 收起二级），原一级 `<a>` 在手机端隐藏。
     ⚠️ PC 端（>760px）反过来 —— `<a>` 正常显示可点、hover 弹浮层，label 与开关 display:none，
     所以 >760px 的观感与交互与 PC 稿逐字节一致。 */
  .hd-nav .ni>a.ms-l1{display:none}
  .hd-nav .ms-sub-h{display:flex;align-items:center;justify-content:space-between;gap:12px;
    padding:16px 0;font-size:15.5px;line-height:1.4;color:rgba(255,255,255,.88);cursor:pointer}
  .hd-nav .ni.on>.ms-sub-h{color:#fff;font-weight:600;background:none}
  .hd-nav .ms-sub-h>span{min-width:0}
  .hd-nav .ms-ar{display:block;flex:0 0 auto;width:8px;height:8px;margin:-3px 3px 0 0;
    border-right:1.6px solid rgba(255,255,255,.55);border-bottom:1.6px solid rgba(255,255,255,.55);
    transform:rotate(45deg);transition:transform .24s}
  .hd-nav .ms-subtog{display:block;position:absolute;top:0;left:0;width:1px;height:1px;margin:-1px;
    padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
  /* 二级：默认收起；开关选中 → 箭头转向 + 二级展开（紫底上直接列出，左缩进 14px 出层级） */
  .hd-nav .drop{position:static;display:none;opacity:1;visibility:visible;transform:none;
    padding:0 0 14px;background:none;border:0;box-shadow:none;left:auto;top:auto;width:auto}
  .hd-nav .ms-subtog:checked ~ .drop{display:block}
  .hd-nav .ms-subtog:checked ~ .ms-sub-h .ms-ar{transform:rotate(-135deg);margin-top:4px}
  .hd-nav .drop::before{display:none}
  .hd-nav .drop-in{min-width:0;padding:0;background:none;border:0;border-radius:0;box-shadow:none}
  .hd-nav .drop-mega{display:block;grid-template-columns:none;gap:0}
  .hd-nav .drop-in a{display:block;padding:9px 0 9px 14px;font-size:13.5px;line-height:1.5;text-align:left;
    color:rgba(255,255,255,.66);white-space:normal;border-radius:0}
  .hd-nav .drop-in a b{font-weight:500;color:rgba(255,255,255,.9)}
  .hd-nav .drop-in a span{display:none}      /* 二级说明文字在抽屉里省掉，保持清爽 */
  .hd-nav .drop-in a.all{margin:8px 0 0;padding:10px 0 0;text-align:left;
    border-top:1px solid rgba(255,255,255,.18);color:#fff}
  /* 触屏无 hover：其余位置的 .drop 浮层一律收起（.hd-nav 内的二级由上面的开关接管） */
  .drop{display:none}
  /* 证书弹层：移动端整体不展示 —— 触屏无 hover，「点一下图标弹证书」对手机用户意义不大，
     资质信息在 08 页「资质展示」板块有完整呈现。图标与 alt 仍保留在源码中。 */
  .cert-ico .cert-pop{display:none!important}

  /* ---- 首页 Hero：banner 图「融进图层」（V2.5 改版） ----
     V2.2 曾把图做成顶部独立色块（图在上、文在下），但图与渐变之间是一条硬接缝、
     且构图被裁得只剩局部 —— 用户口径「直接把工程师设计到图层里面，不要做分隔」。
     本版回到 PC 的**铺底图层**做法：照片绝对定位铺在 Hero 顶部一段高度内，
     半透明 + 底缘渐隐 mask 融进品牌渐变 —— 工程师在图层里、没有任何接缝；
     文字区从渐隐带以下开始，白字可读性不受影响。素材 1440×720，人物面部约在
     横向 17%–30%、持试管手约 40%–48%：object-position 30% 可同框容纳面部 + 试管。 */
  .ms-hero .hero-ph{position:absolute;top:0;left:0;right:0;bottom:auto;
    height:min(88vw,330px);overflow:hidden}
  .ms-hero .hero-ph img{position:absolute;top:0;left:0;width:100%;height:100%;
    object-fit:cover;object-position:30% 20%;opacity:.55;filter:saturate(.82);
    -webkit-mask-image:linear-gradient(180deg,#000 0,#000 44%,rgba(0,0,0,.5) 74%,rgba(0,0,0,0) 100%);
    mask-image:linear-gradient(180deg,#000 0,#000 44%,rgba(0,0,0,.5) 74%,rgba(0,0,0,0) 100%)}
  .ms-hero .hero-ph::after{display:block;position:absolute;top:0;left:0;width:100%;height:100%;
    right:auto;bottom:auto;
    background:linear-gradient(180deg,rgba(46,7,54,.10) 0,rgba(46,7,54,.04) 42%,rgba(46,7,54,.46) 100%)}
  .ms-hero-grid{display:block!important;
    padding-top:calc(min(88vw,330px) - 44px)!important;padding-bottom:34px!important}
  .ms-hero-grid>div:first-child>h1{font-size:23px!important;line-height:1.52!important;letter-spacing:.4px!important}
  .ms-hero-grid>div:first-child>p{margin-top:16px!important;font-size:14px!important;line-height:1.85!important}
  .ms-hero-grid>div:first-child>div{margin-top:22px!important;gap:12px!important}
  .ms-hero-grid .btn-lg{flex:1 1 100%;height:46px;font-size:15px}
  .ms-hero-grid>div:last-child{margin-top:28px}

  /* ---- 友情链接：手机端折叠（纯 CSS checkbox，与抽屉同一套做法；PC 恒展开、观感不变） ----
     链接文本仍**静态写在 HTML 源码**里，只是 CSS 折叠 → 爬虫照常抓取与收录。 */
  .fr-tog{display:block;position:absolute;top:0;left:0;width:1px;height:1px;margin:-1px;
    padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
  .fr-row{gap:0;padding:4px 0 0}
  .fr-k{display:flex;justify-content:space-between;align-items:center;width:100%;
    min-height:46px;padding:0;cursor:pointer}
  .fr-k span{flex:1 1 auto}
  .fr-ar{display:block;flex:0 0 auto;width:9px;height:9px;margin:-4px 3px 0 0;
    border-right:1.7px solid var(--p700);border-bottom:1.7px solid var(--p700);
    transform:rotate(45deg);transition:transform .22s}
  #fr-tog:checked ~ .fr-row .fr-ar{transform:rotate(-135deg);margin-top:4px}
  .fr-ls{display:none;padding:0 0 6px}
  #fr-tog:checked ~ .fr-row .fr-ls{display:flex}
  .fr-ls a{padding:9px 14px;min-height:40px;display:inline-flex;align-items:center}

  /* ---- 02 / 07 / 09 页实测溢出修复（390px 下 right 曾达 506 / 405 / 395） ---- */
  .sort{margin-left:0;flex-wrap:wrap;gap:6px}
  .svc-act .btn{flex:1 1 130px;min-width:0}   /* 条目标签行按钮换行，不撑破卡片 */
  .card [style*="display:flex"]{flex-wrap:wrap!important}   /* 07 页网点卡内联 flex 行 */
  .h3bar{flex-wrap:wrap;gap:8px}
  .svc-hd .svc-date{white-space:normal}
  .pgno{flex-wrap:wrap;justify-content:center;row-gap:8px}   /* 分页原为不换行 flex */
  .pgno .sum{padding-left:0;width:100%;text-align:center}
  /* 内联 grid（09 页「检测流程」5 列小卡）降为 2 列；.grid 系列（07 页网点卡等）降为 1 列 */
  [style*="grid-template-columns:repeat(5"],[style*="grid-template-columns:repeat(4"],
  [style*="grid-template-columns:repeat(3"]{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .grid{grid-template-columns:1fr!important;gap:16px!important}

  /* ---- 字号下限（实测：手机上大量 9.5–12.5px） ---- */
  .ct2{padding:0 16px}
  h1{font-size:26px;line-height:1.35}
  h2{font-size:22px;line-height:1.4}
  h3{font-size:18px}
  p{font-size:15px}
  /* 内联写死的小字号（PC 稿里用于说明文字，手机端提到 13px 才可读） */
  [style*="font-size:11px"],[style*="font-size:11.5px"],[style*="font-size:12px"],
  [style*="font-size:12.5px"],[style*="font-size: 11px"],[style*="font-size: 11.5px"],
  [style*="font-size: 12px"],[style*="font-size: 12.5px"]{font-size:13px!important}
  /* 次要说明类：统一 12.5px（不再低于 11px） */
  .kicker,.hint,.note,.lab,.sort,.sum,.fr-k,.fr-more,.svc-date,.svc-dom,.svc-dom2,
  .cf-ym,.cf-d,.cf-d2,.cf-dom2,.cap-d,.tg,.k,.no,.more,.pj-cta-k,.svc-hero-k,
  .pf-note,.pf-start-tip,.au-unit-no,.au-unit-gt,.au-unit-hot,.cs-node,.cs-tb-h,
  .cs-tb-note,.au-cert-note,.bc em{font-size:12.5px!important}
  .dm-en{font-size:11.5px!important}          /* 领域卡英文名（原 9.5px） */

  /* ---- 触控热区 ≥40/44px（实测：导航 38、页脚内链 27、面包屑 23、底部条 22） ---- */
  .pgno a{min-width:40px;min-height:40px;display:inline-flex;align-items:center;justify-content:center}
  .ft-top a{min-height:40px;display:flex;align-items:center}
  .ft-bot a{display:inline-block;padding:9px 0}
  .bc a,.bc b{display:inline-block;padding:9px 0}
  .logo{padding:5px 0}
  .cs-more-all,.more,.au-unit-gt{padding:6px 0;display:inline-block}
  .fabs a{min-height:46px}
  .btn,button,summary{min-height:44px}
  .btn{display:inline-flex;align-items:center;justify-content:center}
  summary{padding:14px 16px;font-size:15px}
  .cq summary{line-height:1.6}

  /* ---- 表单：iOS 聚焦不放大 ---- */
  input,select,textarea{font-size:16px}

  /* ---- div 网格表（.cs-tb，09/10 页方案表与数据表）：PC 稿是 overflow:hidden，
         直接把行 min-width 撑出的部分「裁掉」（右侧列消失、非横滑）→ 改为可横滑 ---- */
  .cs-tb{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}
  .cs-tb-h,.cs-tb-r{min-width:520px}

  /* ---- 00 设计规范页文档头：品牌 + 9 条快捷链接一行放不下（375px 实测右缘 381）→ 换行 ---- */
  .dt-top .ct{flex-wrap:wrap;height:auto;gap:6px 14px;padding:10px 16px}
  .dt-brand{width:100%}
  .dt-links{margin-left:0;width:100%;gap:0 2px}
  .dt-links a{padding:9px 10px}
  .dt-wrap{padding:0 16px 60px}
  .dt-hero{padding:36px 16px 32px}
  .dt-hero h1{font-size:24px;line-height:1.4}

  /* ---- 页尾通铺卡 + 板块级标题 ----
     ① 板块级 h2：裸元素规则 `h2{font-size:22px}` **打不过** PC 的 `.s-head h2` / `.pj-head h2`
        （28px，同权重 0,1,1 但写在派生段之前）→ 手机端板块头仍是桌面字号。14~18 字的板块标题
        在 375px 屏一行只放得下 12 个字，于是出现「12 + 孤字 2」这种难看的换行。这里显式接管，
        并加 `text-wrap:balance`（支持则两行均分，不支持则退回普通换行，只影响断行位置）。
     ② 首页转化带 `.cta-bleed`：上留白 46 → 56px（kicker 不再贴顶）、下留白 48 → 40px；
        两个按钮由「各占整行」改为**并排两列**（grid），400 电话不再孤零零挂在整条带的最下方，
        号码 `nowrap` + `min-width:0` 保证任何宽度下都不折行、不被裁切。 */
  .s-head h2,.pj-head h2{font-size:24px;line-height:1.42;letter-spacing:.3px;text-wrap:balance}
  .pj-cta-act{flex-wrap:wrap;gap:10px}
  .pj-cta .btn,.cta-btn{flex:1 1 100%;min-width:0}
  .cta-bleed .cta-in{gap:20px;align-items:stretch;padding-top:56px;padding-bottom:40px}
  .cta-bleed .cta-l{flex:1 1 100%;min-width:0}
  .cta-bleed .cta-sub{max-width:none}
  .cta-bleed .cta-r{display:grid;grid-template-columns:1fr 1fr;gap:10px;width:100%}
  .cta-bleed .btn{flex:none;width:100%;min-width:0;height:48px;padding:0 10px;font-size:15px;white-space:nowrap}

  /* ---- 02 / 03 列表题头（`.svc-bar`）：由「浮在列表上方的一张卡」改成与列表一体的题头行----
     原样式是**独立的圆角白卡**（`border` + `border-radius` + 16px 下边距），与下方一堆同样式的
     项目卡并列 → 读作「又一张卡」，割裂。改法：去掉卡框与底色，只留一条**与项目卡描边同色同粗的
     分隔线**当题头底线；「共 1520 个」的数字做成浅紫胶囊作视觉锚点，排序行紧随其下、整体左对齐。 */
  .svc-bar{display:block;background:none;border:0;border-bottom:1px solid var(--line);
    border-radius:0;padding:0 0 12px;margin-bottom:14px}
  .svc-bar .lab{display:block;width:auto;font-size:14.5px;color:var(--ink2);letter-spacing:.2px}
  .svc-bar .lab b{display:inline-block;margin:0 3px;padding:1px 10px;border-radius:20px;
    background:var(--p100);color:var(--p700);font-size:13.5px;font-weight:600;letter-spacing:0}
  .svc-bar .sort{display:flex;gap:7px;align-items:center;width:100%;margin:10px 0 0;
    font-size:12.5px;color:var(--ink4)}
  .svc-bar .sort>span{margin-right:2px}
  .svc-bar .sort .btn-sm{padding:0 16px;font-size:13px}

  /* ---- 常见问题答案块（`.faq .ans`，02 / 03 / 09 三页同构）：原来 `padding:0 18px 17px 48px`
     **上内边距为 0** → 回答文字直接顶在问题框底边线上，视觉上像粘在一起。改为独立浅紫答案块：
     上留白 14px + 与问题之间一条分隔线 + 下留白 16px，左缩进与问题文字对齐（46px = 16px 内边距
     + 20px 的 Q 徽标 + 10px 间距）；底色 `--p50:#F9F4FB`，在白色问题行下形成清晰的问答层次。 */
  .faq .ans{padding:14px 16px 16px 46px;font-size:13.5px;line-height:1.9;
    background:var(--p50);border-top:1px solid var(--line)}

  /* ---- 06 检测流程页：板块间距收紧（PC 内联 padding 手机上原样继承，窄屏偏空） ----
     原值：`.s` 默认 62px 上下；#pf-sample 56/58、#pf-guard 58/60、#pf-faq 52/56（后三者是
     内联 style，须 !important 才能覆盖）。改后：面包屑→「送检全流程」= 16+32 = 48px；
     板块之间（全流程→送样 / 送样→保障 / 保障→FAQ）= 80 / 84 / 82px，深浅底色交替处依然清晰。 */
  #pf-flow{padding:32px 0 38px}
  #pf-sample{padding:42px 0 44px!important}
  #pf-guard{padding:40px 0 42px!important}
  #pf-faq{padding:40px 0 44px!important}

  /* ---- 12 公正性声明页（V2.9 / V1.99）：条款序号与标题同一行（≤760） ----
     ⚠️ 面包屑 → 「声明内容」的间距**不在本段**：该间距 = 面包屑下内边距 16px + 正文容器
     `#pj-main` 的上内边距，后者写在 PC 稿的**内联 style** 上，已在 **V1.99 直接改 PC 稿**
     （44 → 20px，合计 60 → 36px，**全宽度生效**）。派生层不做重复声明，避免两处取值打架。
     条款卡 `.pj-item` 在 PC 稿的 **≤720px 档被改成单列**（`grid-template-columns:1fr`）——
        序号方块独占一行、标题与正文都挤在下方，手机上读作「上面是序号、下面是内容」。
        手机端改回**序号与标题同一行**、正文占满整行宽度：
        · 卡片走普通流（`display:block` 覆盖 PC 的 grid）；
        · 序号方块 `float:left`，与标题**首行同排**（`margin-top:-3px` 让 32px 方块与
          26px 的标题行盒垂直居中对齐）；
        · 正文段落 / 列表 `clear:left`，不吃浮动缩进、**占满整行宽度**（不做 50px 左侧栏位：
          375px 下栏位会把文字列压到约 253px，长段落每行少放约 3 个字）。
        ⚠️ 一并压掉 PC 同一档的 `.pj-no{width:42px;height:42px;border-radius:12px;font-size:13px}`
        （同权重、本段在其后 → 生效）。**DOM 与文案零改动，>760px 桌面端不变。** */
  .pj-item{display:block}
  .pj-no{float:left;width:32px;height:32px;margin:-3px 10px 0 0;border-radius:10px;font-size:12.5px}
  .pj-item .pj-p,.pj-item .pj-ul{clear:left}

  /* ---- 原 PC 右侧漂浮栏取消，改为底部固定 4 入口（首页 / 关于清析 / 在线咨询 / 热线电话） ---- */
  .fabs{display:none!important}
  .ms-tabs{display:grid;grid-template-columns:repeat(4,1fr);position:fixed;left:0;right:0;bottom:0;
    z-index:140;background:#fff;border-top:1px solid var(--line);
    padding-bottom:env(safe-area-inset-bottom);box-shadow:0 -2px 16px rgba(44,8,52,.09);
    transition:opacity .24s,visibility .24s}
  .ms-tabs a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
    padding:8px 2px 7px;font-size:11.5px;line-height:1.15;color:var(--ink2);min-height:54px;
    text-align:center}
  .ms-tabs a svg{width:21px;height:21px;flex:0 0 auto}
  .ms-tabs a i{font-style:normal}
  .ms-tabs a.on,.ms-tabs a.hi{color:var(--p700)}
  .ft{padding-bottom:calc(58px + env(safe-area-inset-bottom))}   /* 固定条不压页脚 */
}

@media (max-width:430px){
  /* 02 / 03 页列表条目：窄屏时「标题 + 发布日期」强制堆叠（360px 实测溢出 26px）
     ⚠️ 列表头 `.svc-bar` 的堆叠规则已上移到 ≤760（V2.7 改为「题头行」，≤430 不再重复声明） */
  .svc-hd{display:block}
  .svc-hd .svc-date{display:block;margin-top:2px;white-space:normal}
  .ct2{padding:0 14px}
  h1{font-size:23px}
  h2{font-size:20px}
  /* 板块级 h2 与转化带按钮再收一档（360px 实测：14 字标题 24px 放不下 → 22px；号码按钮 15px 会挤） */
  .s-head h2,.pj-head h2{font-size:22px;letter-spacing:.2px}
  .cta-bleed .cta-in{padding-top:48px;padding-bottom:34px}
  .cta-bleed .btn{height:46px;font-size:14px;padding:0 6px}
  .ms-x>table{min-width:520px}
  .side,.side.rev{gap:18px}
  .ms-tabs a{font-size:11px;padding-left:0;padding-right:0}
  /* 头部单行再收一档：360px 可用 332px → logo + 三枚图标 + 汉堡 ≈304px（余 28px） */
  .hd-main .ct2{gap:10px}
  .logo-img{height:24px}
  .hd-cert{gap:8px}
  .cert-ico .ci-img{height:17px}
  /* 首页 Hero：360px 下 h1 第二行「分析｜检测｜测试｜鉴定｜研发」共 14 字全角，
     23px 时约 327px ≈ 可用宽 332px，贴边 → 再降一档并去掉字距 */
  .ms-hero-grid>div:first-child>h1{font-size:21px!important;letter-spacing:0!important}
  .fr-ls a{padding:8px 12px}
}



/* ==== 页面专属规则（原页面内联样式并入，按页生效）==== */
.ab-sec{--ab-img:url(/static/img/bg-0fe706e0.jpg)}

/* ==== 开发版补丁：语义化元素补齐（声明逐字沿用原规则，视觉不变）==== */
.fabs button{font-family:inherit;line-height:inherit;cursor:pointer;padding:0;width:54px;height:54px;background:#fff;border:1px solid var(--line2);border-radius:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:10.5px;color:var(--ink2);box-shadow:var(--sh)}
.fabs button b{font-family:inherit;line-height:inherit;cursor:pointer;padding:0;font-size:17px;font-weight:400;color:var(--p700);line-height:1}
@media (max-width:760px){.fabs button{font-family:inherit;line-height:inherit;cursor:pointer;padding:0;min-height:46px}}


/* ==========================================================================
   后台可自定义列数的案例数据表（10 案例详情页 ④ 检测数据与结果）
   --------------------------------------------------------------------------
   设计稿只给了 c2（检测方案两列）与 c5（检测数据五列）两套栅格；
   后台录入的数据表列数由表头个数决定，2 / 5 列沿用设计稿原规则，
   其余列数（3 / 4 / 6 …）在这里按列数均分，避免出现空轨道或错位。
   由 app/view/detail/case.html 输出 data-cn 与 --cn 两个属性触发。
   ========================================================================== */
.cs-tb[data-cn]:not(.c2):not(.c5) .cs-tb-h,
.cs-tb[data-cn]:not(.c2):not(.c5) .cs-tb-r{grid-template-columns:repeat(var(--cn),minmax(0,1fr))}

/* ==========================================================================
   08 关于我们 · 留言表单提交结果提示条（?sent=ok / ?sent=err 时显示）
   表单为原生 POST，提交后回跳本页并带参数，用这一条提示代替弹窗 / JS 提示。
   ========================================================================== */
.au-sent{margin:0 0 16px;padding:11px 14px;border-radius:10px;font-size:13px;line-height:1.6;border:1px solid}
.au-sent.ok{background:#EFF8F1;border-color:#CBE7D3;color:#1E6B3A}
.au-sent.err{background:#FDF1F1;border-color:#F1CFCF;color:#9C2B2B}

/* 首页 hero 询价卡提交结果条（与 08 页 .au-sent 同一套配色） */
.qf-note{margin:0 0 14px;padding:10px 13px;border-radius:9px;font-size:12.5px;line-height:1.6;border:1px solid}
.qf-note.ok{background:#EFF8F1;border-color:#CBE7D3;color:#1E6B3A}
.qf-note.err{background:#FDF1F1;border-color:#F1CFCF;color:#9C2B2B}
.qf-form .btn[disabled]{opacity:.65;cursor:default}
/* 二维码真图：随容器自适应，未上传时回退到文字/占位图 */
.qr img{display:block;width:100%;height:100%;object-fit:contain;border-radius:8px}
.au-qr img{display:block;width:100%;height:100%;object-fit:contain;border-radius:14px}
