/* ============================================================
   泰华液压 · Taihua Equipment —— 模板样式（CMS 零样式：模板自带全部样式）
   ------------------------------------------------------------
   架构：CMS 不带任何样式；本文件 + widgets 骨架 HTML + scripts/main.js
        就是最终视觉与交互，CMS 只负责提供字段数据。

   来源：严格对照已确认的原型 prototype/styles.css（2026-09-17 用户评审通过）
        · 设计令牌（--tp-*）原样保留
        · 新增：极简 reset 取代 Tailwind preflight（避免 h1 字重/字号被重置，
          原型依赖浏览器默认标题样式，而 preflight 会把标题变成 inherit）
        · 新增：骨架需要的类（轮播分层、导航下拉/移动菜单、图库、Tab、弹窗、
          里程碑表、询盘两栏）——按原型同类语言续写

   结构约定：模板驱动模式下 CMS 会展平容器，所以「一个骨架 = 一个完整版块」，
             版块背景/内边距/标题行全部在本文件 + 骨架里表达。
   ============================================================ */

/* ---------- 字体（Fontsource via jsDelivr）----------
   为什么不用 fonts.googleapis.com：本站 CSP 的 style-src 白名单只放了 cdn.jsdelivr.net，
   Google 那支 CSS 会被直接拦掉（实测全站 Poppins/Inter 从未加载，一直在吃后备字体）。
   Fontsource 的字体文件是相对路径 ./files/xxx.woff2，解析后仍落在 cdn.jsdelivr.net 上，
   style-src 与 font-src 两个白名单都放行。
   权重按原型：Poppins 500/600/700/800 + Inter 400/500/600/700。 */
@import url('https://cdn.jsdelivr.net/npm/@fontsource/poppins@5/500.css');
@import url('https://cdn.jsdelivr.net/npm/@fontsource/poppins@5/600.css');
@import url('https://cdn.jsdelivr.net/npm/@fontsource/poppins@5/700.css');
@import url('https://cdn.jsdelivr.net/npm/@fontsource/poppins@5/800.css');
@import url('https://cdn.jsdelivr.net/npm/@fontsource/inter@5/400.css');
@import url('https://cdn.jsdelivr.net/npm/@fontsource/inter@5/500.css');
@import url('https://cdn.jsdelivr.net/npm/@fontsource/inter@5/600.css');
@import url('https://cdn.jsdelivr.net/npm/@fontsource/inter@5/700.css');

/* ---------- reset ---------- */
*,*::before,*::after{box-sizing:border-box;border:0 solid}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;font-family:var(--tp-font);color:var(--tp-text);background:var(--tp-bg);line-height:1.6;-webkit-font-smoothing:antialiased}
h1,h2,h3,h4,h5,h6{margin:0;font-size:inherit;font-weight:inherit}
p,figure,blockquote,dl,dd{margin:0}
ul,ol{margin:0;padding:0;list-style:none}
img,svg,video{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit;color:inherit;margin:0}
button{background:none;cursor:pointer;padding:0}
table{border-collapse:collapse;border-spacing:0}
[hidden]{display:none}
main{display:block}

/* ---------- 设计令牌（与原型一致，勿随意改） ---------- */
:root{
  --tp-navy:#16324f; --tp-navy-deep:#122c47; --tp-navy-900:#0e2740;
  --tp-blue:#2563eb; --tp-blue-700:#1d4ed8; --tp-blue-soft:#5aa2ff;
  --tp-bg:#ffffff; --tp-tint:#f4f7fa; --tp-surface:#fff;
  --tp-text:#1f2937; --tp-text-2:#5b6b7d; --tp-muted:#94a3b8; --tp-border:#e5eaf1;
  --tp-shadow-sm:0 1px 2px rgba(16,24,40,.06); --tp-shadow-md:0 10px 26px rgba(16,24,40,.10);
  --tp-font:'Inter',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  --tp-head:'Poppins','Inter',system-ui,sans-serif;
  --tp-container:1200px;
}

/* ---------- 通用 ---------- */
.container{max-width:var(--tp-container);margin:0 auto;padding:0 24px}
.section{padding:72px 0}
.section--tint{background:var(--tp-tint)}
.eyebrow{color:var(--tp-muted);font-weight:600;letter-spacing:.16em;text-transform:uppercase;font-size:.7rem;margin-bottom:12px}
h1,h2,h3,h4{font-family:var(--tp-head)}
.h2{font-size:1.65rem;font-weight:700;color:var(--tp-navy);line-height:1.25}
.h2 .hl{color:var(--tp-blue)}
.section-sub{color:var(--tp-text-2);font-size:.95rem;margin-top:8px}
.section-sub p+p{margin-top:10px}
.section-head{margin-bottom:34px}

/* CMS 区块外壳兜底：非模板驱动路径下 tag="block" 会产出 .block-section，
   Tailwind 的 max-w-7xl 在 CMS 零样式下不存在，这里补上容器宽度，避免内容贴边 */
.block-section > div{max-width:var(--tp-container);margin:0 auto;padding:0 24px}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 20px;border-radius:6px;font-weight:600;font-size:.88rem;font-family:var(--tp-font);cursor:pointer;border:1px solid transparent;transition:background .2s,transform .2s,box-shadow .2s,border-color .2s,color .2s}
.btn .ar{font-weight:600}
.btn-primary{background:var(--tp-blue);color:#fff}
.btn-primary:hover{background:var(--tp-blue-700);transform:translateY(-1px)}
.btn-outline{background:transparent;color:#fff;border-color:rgba(255,255,255,.65)}
.btn-outline:hover{border-color:#fff;background:rgba(255,255,255,.08)}
.btn-ghost{background:#fff;color:var(--tp-navy);border-color:var(--tp-border)}
.btn-ghost:hover{border-color:var(--tp-blue);color:var(--tp-blue)}

/* ===== 页头（logo 左 / 导航居中 / 搜索 + CTA 右） ===== */
.site-header{position:sticky;top:0;z-index:50;background:#fff;border-bottom:1px solid var(--tp-border)}
.nav{display:flex;align-items:center;gap:28px;height:64px}
.brand{display:flex;align-items:center;gap:10px;flex:0 0 auto}
.brand .logo{width:34px;height:34px;border-radius:7px;background:linear-gradient(135deg,#2f7bf6,#1656b8);color:#fff;display:flex;align-items:center;justify-content:center;font-family:var(--tp-head);font-weight:800;font-size:1.05rem;flex:0 0 auto}
.brand .name{display:flex;flex-direction:column;font-family:var(--tp-head);font-weight:700;color:var(--tp-navy);font-size:1.02rem;line-height:1.15}
.brand .name small{font-family:var(--tp-font);font-weight:500;font-size:.6rem;color:var(--tp-muted);letter-spacing:.01em}
.nav-links{display:flex;gap:30px;margin:0 auto;font-weight:500;font-size:.9rem;color:var(--tp-text-2)}
.nav-links a{display:flex;align-items:center;gap:5px;height:64px;position:relative}
.nav-links a:hover{color:var(--tp-blue)}
.nav-links a.active{color:var(--tp-blue)}
.nav-links a.active::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--tp-blue)}
.nav-chev{width:11px;height:11px;flex:0 0 auto;display:none}
.nav-links a:has(.nav-chev:not([hidden])) .nav-chev{display:block}
.nav-actions{display:flex;align-items:center;gap:16px;flex:0 0 auto}
.nav-search{color:var(--tp-text-2);display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:6px}
.nav-search svg{width:17px;height:17px}
.nav-search:hover{color:var(--tp-blue)}
.nav-burger{display:none;width:36px;height:36px;border:1px solid var(--tp-border);border-radius:6px;color:var(--tp-navy);align-items:center;justify-content:center}
.nav-burger svg{width:18px;height:18px}

/* 下拉面板 */
.nav-panel{position:absolute;left:0;right:0;top:100%;z-index:40}
.nav-panel-inner{background:#fff;border:1px solid var(--tp-border);border-top:0;border-radius:0 0 10px 10px;box-shadow:var(--tp-shadow-md)}
.nav-panel-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:4px 20px;padding:20px}
.nav-panel-item{display:flex;flex-direction:column;gap:3px;padding:9px 10px;border-radius:7px}
.nav-panel-item:hover{background:var(--tp-tint)}
.nav-panel-item .t{font-weight:600;color:var(--tp-navy);font-size:.86rem}
.nav-panel-item .d{font-size:.76rem;color:var(--tp-muted);line-height:1.45}

/* 移动端菜单 */
.nav-mobile{display:grid;grid-template-rows:0fr;overflow:hidden;transition:grid-template-rows .28s ease}
.nav-mobile.on{grid-template-rows:1fr}
.nav-mobile-inner{overflow:hidden;border-top:1px solid var(--tp-border);padding:10px 24px 18px;background:#fff}
.nav-mob-row{display:flex;align-items:center;justify-content:space-between;gap:8px;border-bottom:1px solid var(--tp-tint)}
.nav-mob-row>a{display:block;flex:1 1 auto;padding:11px 0;font-weight:600;font-size:.92rem;color:var(--tp-navy)}
.nav-mob-row>a:hover{color:var(--tp-blue)}
.nav-mob-row>button{display:none;width:32px;height:32px;align-items:center;justify-content:center;color:var(--tp-text-2)}
.nav-mob-row.has-children>button{display:flex}
.nav-mob-row>button .nav-chev{display:block;width:12px;height:12px;transition:transform .2s}
.nav-mob-row>button.on .nav-chev{transform:rotate(180deg)}
.nav-mob-sub{display:grid;grid-template-rows:0fr;overflow:hidden;transition:grid-template-rows .24s ease}
.nav-mob-sub.on{grid-template-rows:1fr}
.nav-mob-sub-inner{overflow:hidden}
.nav-mob-sub-inner a{display:block;padding:9px 0 9px 12px;font-size:.86rem;color:var(--tp-text-2);border-bottom:1px solid var(--tp-tint)}
.nav-mobile-inner>.btn{width:100%;margin-top:16px}
@media(max-width:920px){
  .nav-links{display:none}
  .nav-actions{margin-left:auto}
  .nav-burger{display:flex}
  .nav-actions>.btn-primary{display:none}
}
@media(min-width:921px){.nav-mobile{display:none}}

/* ===== 首屏轮播（高度写死，文案超出由 JS 等比缩放） ===== */
.hero{position:relative;color:#fff;overflow:hidden;height:clamp(440px,58vh,560px);display:flex;align-items:center;background:var(--tp-navy-900)}
.hero-media{position:absolute;inset:0;overflow:hidden}
.hero-slide{position:absolute;inset:0;opacity:0;transition:opacity .6s ease}
.hero-slide.on{opacity:1}
.hero-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.hero-scrim{position:absolute;inset:0;background:linear-gradient(90deg,rgba(10,29,50,.94) 0%,rgba(10,29,50,.78) 42%,rgba(10,29,50,.30) 100%)}
.hero-body{position:relative;width:100%;padding:0 24px}
.hero-copys{display:grid}
.hero-slide-copy{grid-area:1/1;max-width:600px;opacity:0;transition:opacity .35s ease;transform-origin:left center;pointer-events:none;visibility:hidden}
.hero-slide-copy.on{opacity:1;pointer-events:auto;visibility:visible}
.hero .eyebrow{color:#c6d8ec;font-size:.68rem;letter-spacing:.2em;margin-bottom:14px}
.hero h1{font-size:clamp(1.8rem,3.4vw,2.6rem);font-weight:700;line-height:1.22;margin-bottom:16px}
.hero h1 .hl{color:var(--tp-blue-soft)}
.hero p.lead{color:#c3d2e2;font-size:.94rem;max-width:440px;margin-bottom:28px}
.hero-cta{display:flex;gap:14px;flex-wrap:wrap}
.hero-dots{position:absolute;right:44px;bottom:24px;display:flex;gap:7px;z-index:2}
.hero-dot{width:8px;height:8px;border-radius:50%;background:rgba(255,255,255,.45);cursor:pointer;transition:.2s}
.hero-dot.on{background:#fff}
@media(max-width:720px){
  .hero{height:clamp(430px,72vh,540px)}
  .hero-slide-copy{max-width:100%}
  .hero-dots{right:24px}
}

/* ===== 内页头图 ===== */
.page-hero{background:linear-gradient(90deg,var(--tp-navy-900),var(--tp-navy-deep) 60%,#1a3c60);color:#fff;padding:58px 0}
.page-hero .eyebrow{color:#8fb4dd}
.page-hero h1{color:#fff;font-size:1.9rem;font-weight:700}
.page-hero p{color:#a9bdd2;margin-top:10px;max-width:620px;font-size:.95rem}

/* ===== 通用标题行（左标题 + 右链接） ===== */
.row-head{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:34px;flex-wrap:wrap}
.view-all{color:var(--tp-blue);font-weight:600;font-size:.9rem;white-space:nowrap}
.view-all:hover{text-decoration:underline}

/* ===== 产品线卡（一行 6 张） ===== */
.cat-strip{display:grid;grid-template-columns:repeat(6,1fr);gap:16px}
.cat-card{background:#fff;border:1px solid var(--tp-border);border-radius:10px;padding:10px 12px 14px;display:block;transition:transform .2s,box-shadow .2s}
.cat-card:hover{transform:translateY(-4px);box-shadow:var(--tp-shadow-md)}
.cat-card .pic{width:100%;aspect-ratio:3/4;border-radius:8px;object-fit:cover;background:#eef2f7}
.cat-card .t{text-align:center;font-family:var(--tp-head);font-weight:600;color:var(--tp-navy);font-size:.84rem;line-height:1.3;margin-top:12px;min-height:2.2em;display:block}
@media(max-width:1024px){.cat-strip{grid-template-columns:repeat(3,1fr)}}
@media(max-width:560px){.cat-strip{grid-template-columns:repeat(2,1fr)}}

/* ===== 深色方案带（左文案 + 右竖图卡） ===== */
.band-dark{background:var(--tp-navy-deep);color:#fff}
.band-dark .eyebrow{color:#8fb4dd}
.sol-wrap{display:grid;grid-template-columns:290px 1fr;gap:38px;align-items:center}
.sol-wrap .h2{color:#fff}
.sol-wrap .section-sub{color:#a9bdd2}
.sol-more{margin-top:22px}
.sol-strip{display:grid;grid-template-columns:repeat(5,1fr);gap:14px}
.sol-card{position:relative;border-radius:10px;overflow:hidden;aspect-ratio:3/4;display:block;background:#1c3c5c}
.sol-card .bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .3s}
.sol-card:hover .bg{transform:scale(1.05)}
.sol-card .scrim{position:absolute;inset:0;background:linear-gradient(180deg,rgba(10,29,50,.02) 40%,rgba(10,29,50,.88))}
.sol-card .cap{position:absolute;left:12px;right:12px;bottom:12px;z-index:1;color:#fff;font-size:.76rem;font-weight:600;line-height:1.35;display:flex;justify-content:space-between;gap:6px;align-items:flex-end}
.sol-card .cap .ar{color:#8fc0ff}
@media(max-width:1024px){.sol-wrap{grid-template-columns:1fr}.sol-strip{grid-template-columns:repeat(3,1fr)}}
@media(max-width:560px){.sol-strip{grid-template-columns:repeat(2,1fr)}}

/* ===== 要点卡（4 列，蓝色线性图标） ===== */
.why-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:30px;margin-top:36px}
.why-item .wic{width:42px;height:42px;color:var(--tp-blue);margin-bottom:14px;font-family:var(--tp-head);font-weight:700;font-size:1.15rem;display:flex;align-items:center;justify-content:center}
.why-item .wic svg{width:100%;height:100%}
.why-item h3{color:var(--tp-blue);font-size:.92rem;font-weight:600;margin-bottom:8px}
.why-item p{font-size:.85rem;color:var(--tp-text-2)}
@media(max-width:900px){.why-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.why-grid{grid-template-columns:1fr}}

/* ===== 图文版块（左文案 + 右 1 大 4 小图） ===== */
.about-grid{display:grid;grid-template-columns:1fr 1.15fr;gap:44px;align-items:center}
.about-copy .btn{margin-top:24px}
.about-copy .section-sub{margin-bottom:0}
.about-imgs{display:grid;grid-template-columns:1fr 1.15fr;gap:12px}
.about-imgs .big{width:100%;height:100%;object-fit:cover;border-radius:10px}
.about-imgs .mini{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.about-imgs .mini img{width:100%;height:100%;object-fit:cover;border-radius:10px;aspect-ratio:4/3}
@media(max-width:860px){.about-grid{grid-template-columns:1fr}.about-imgs{grid-template-columns:1fr}.about-imgs .big{aspect-ratio:16/9;max-height:none}}

/* ===== CTA 通栏 ===== */
.cta-band{background:var(--tp-navy-deep);color:#fff;padding:36px 0}
.cta-wrap{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap}
.cta-left{display:flex;align-items:center;gap:16px}
.cta-ic{flex:0 0 46px;width:46px;height:46px;border-radius:10px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.16);display:flex;align-items:center;justify-content:center;color:#8fc0ff}
.cta-ic svg{width:22px;height:22px}
.cta-band h2{color:#fff;font-size:1.22rem;font-weight:700;margin-bottom:4px}
.cta-band p{color:#a9bdd2;font-size:.88rem;margin:0}

/* ===== 页脚 ===== */
.site-footer{background:var(--tp-navy-deep);color:#a9bdd2;padding:56px 0 0}
.footer-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr 1.25fr;gap:30px;padding-bottom:44px}
.site-footer h4{color:#fff;font-size:.92rem;font-weight:600;margin-bottom:16px}
.site-footer a{color:#a9bdd2;display:block;padding:4px 0;font-size:.86rem}
.site-footer a:hover{color:#fff}
.site-footer .brand .name{color:#fff}
.site-footer .brand .name small{color:#7e94ab}
.site-footer .fdesc{font-size:.85rem;margin-top:14px;max-width:260px}
.site-footer .contact p{font-size:.85rem;margin-bottom:8px}
.site-footer .contact a{display:inline;padding:0}
.footer-feedback{color:#8fc0ff;font-size:.85rem;padding:4px 0}
.footer-feedback:hover{color:#fff;text-decoration:underline}
.footer-bottom{border-top:1px solid rgba(255,255,255,.10);background:var(--tp-navy-900)}
.footer-bottom .container{display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;padding-top:14px;padding-bottom:14px;font-size:.78rem;color:#7e94ab}
.footer-bottom a:hover{color:#fff}
.footer-bottom .container{position:relative}
.footer-bottom .legal{display:flex;flex-wrap:nowrap;gap:20px;list-style:none;margin:0;padding:0;flex-shrink:0;white-space:nowrap}
.footer-bottom .legal li{white-space:nowrap;width:max-content}
.footer-bottom .legal a{color:inherit}
.footer-bottom .legal a:hover{color:#fff}
@media(max-width:920px){.footer-grid{grid-template-columns:1fr 1fr}}

/* ===== 产品目录页 ===== */
.catalog-bar{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;margin:0 0 22px}
.catalog-bar .count{font-size:.9rem;color:var(--tp-text-2)}
.prod-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.prod-card{background:#fff;border:1px solid var(--tp-border);border-radius:10px;padding:10px 12px 14px;display:block;transition:transform .2s,box-shadow .2s}
.prod-card:hover{transform:translateY(-4px);box-shadow:var(--tp-shadow-md)}
.prod-card .thumb{position:relative;display:block;overflow:hidden;aspect-ratio:4/3.4;border-radius:8px;background:#eef2f7}
.prod-card .thumb img{width:100%;height:100%;object-fit:cover}
.badge{position:absolute;top:8px;left:8px;font-size:.66rem;font-weight:700;padding:3px 9px;border-radius:999px}
.badge.best{background:#fef3c7;color:#92600a}
.badge.new{background:#dbeafe;color:#1e40af}
.badge.stock{background:#dcfce7;color:#166534}
.badge.pop{background:#ede9fe;color:#5b21b6}
.prod-card .body{padding-top:12px;text-align:center;display:flex;flex-direction:column;gap:4px}
.prod-card .cat{font-size:.68rem;color:var(--tp-muted);font-weight:600;letter-spacing:.06em;text-transform:uppercase}
/* 列表卡（pcard）上的变体摘要 */
.pcard-variants{font-size:.7rem;line-height:1.45;color:var(--tp-text-2);margin:2px 0 0;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* 卡片上的变体摘要（如「标准款 · 铁管专用」）：小字灰，一行内省略 */
.prod-card .variants{font-size:.7rem;line-height:1.45;color:var(--tp-text-2);margin-top:1px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.prod-card h3{font-size:.92rem;font-weight:600;color:var(--tp-navy);line-height:1.3}
.prod-card .cap{font-size:.76rem;color:var(--tp-blue);font-weight:600}
/* 骨架解析会丢掉「纯空白文本节点」，内联片段之间的间距一律用 CSS 补 */
.prod-card .cap>span+span{margin-left:.3em}
.prod-card .desc{font-size:.8rem;color:var(--tp-text-2)}
.prod-card .more{color:var(--tp-blue);font-weight:700;font-size:.85rem;margin-top:4px}
@media(max-width:1024px){.prod-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:680px){.prod-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:420px){.prod-grid{grid-template-columns:1fr}}

/* ===== 产品线详情 ===== */
.detail-section{padding-top:0}
.breadcrumb{font-size:.82rem;color:var(--tp-muted);padding:18px 0;display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.breadcrumb a:hover{color:var(--tp-blue)}
.detail-layout{display:grid;grid-template-columns:270px 1fr;gap:36px;align-items:start}
.sidebar{min-width:0}
.cat-tree{background:#fff;border:1px solid var(--tp-border);border-radius:10px;padding:14px 16px;margin-bottom:18px;max-height:460px;overflow:auto}
.cat-tree .tt{font-size:.7rem;color:var(--tp-muted);letter-spacing:.1em;margin-bottom:8px;font-weight:600}
.cat-tree a{display:block;padding:6px 0;color:var(--tp-text-2);font-size:.86rem;border-bottom:1px solid var(--tp-tint)}
.cat-tree a:last-child{border-bottom:0}
.cat-tree a:hover,.cat-tree a.active{color:var(--tp-blue)}
.contact-box{background:var(--tp-navy-deep);color:#fff;border-radius:10px;padding:18px}
.contact-box h4{color:#fff;font-size:.92rem;font-weight:600;margin-bottom:8px}
.contact-box p{font-size:.8rem;color:#a9bdd2;margin-bottom:12px}
.contact-box .btn{width:100%}
.detail-main{min-width:0}
.detail-main h1{font-size:1.7rem;font-weight:700;margin-bottom:6px}
.detail-main .code{color:var(--tp-blue);font-weight:600;font-size:.85rem;margin-bottom:8px}
.detail-main .sub{color:var(--tp-text-2);margin-bottom:18px}
.spec-icons{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:18px 0;padding:18px;background:var(--tp-tint);border-radius:10px}
.spec-icons .si{text-align:center}
.spec-icons .si .v{font-family:var(--tp-head);font-weight:700;color:var(--tp-navy);font-size:.98rem}
.spec-icons .si .k{font-size:.72rem;color:var(--tp-muted)}
.gallery{display:grid;grid-template-columns:1fr;gap:10px;margin:18px 0}
.gallery .main{display:block;width:100%;height:auto;max-height:640px;border-radius:10px;object-fit:contain;background:#eef2f7}
.gallery .thumbs{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.gallery .thumbs img{width:100%;aspect-ratio:1;border-radius:8px;object-fit:contain;background:#eef2f7;cursor:pointer}
.pd-tabs-wrap{margin-top:6px}
.tabs{display:flex;flex-wrap:wrap;gap:8px;border-bottom:1px solid var(--tp-border);margin:22px 0 14px}
.tabs button{padding:10px 4px;margin-right:18px;font-weight:600;font-size:.9rem;color:var(--tp-muted);border-bottom:2px solid transparent}
.tabs button.on{color:var(--tp-blue);border-color:var(--tp-blue)}
.tab-panel{display:none;color:var(--tp-text-2);font-size:.92rem}
.tab-panel.on{display:block}
.tab-panel ul{margin-left:18px;list-style:disc}
.tab-panel li{margin-bottom:5px}
.spec-table{width:100%;border-collapse:collapse;margin-top:8px;font-size:.88rem}
.spec-table th,.spec-table td{border:1px solid var(--tp-border);padding:9px 12px;text-align:left}
.spec-table th{background:var(--tp-tint);color:var(--tp-navy);font-weight:600;width:220px}
.detail-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:24px}
.related{margin-top:30px}
.related .h2{margin-top:34px;margin-bottom:18px}
.related-grid{grid-template-columns:repeat(5,1fr)}
@media(max-width:1024px){.related-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:860px){.detail-layout{grid-template-columns:1fr}.spec-icons{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.related-grid{grid-template-columns:repeat(2,1fr)}}

/* ===== 询盘版块 ===== */
.inquiry-layout{display:grid;grid-template-columns:1fr 1.1fr;gap:48px;align-items:start}
.inquiry-left h1{font-size:1.8rem;font-weight:700;margin-bottom:14px}
.inquiry-left>.inquiry-sub{color:var(--tp-text-2)}
.inquiry-left>.inquiry-sub p+p{margin-top:10px}
.inquiry-left .vals{margin-top:18px;display:flex;flex-direction:column;gap:12px}
.inquiry-left .vals div{display:flex;gap:10px;align-items:flex-start;color:var(--tp-text-2);font-size:.9rem}
.inquiry-left .vals .tick{color:var(--tp-blue);font-weight:800}
.inquiry-left .contact-info{margin-top:24px;font-size:.88rem;color:var(--tp-text-2)}
.inquiry-left .contact-info p{margin-bottom:6px;display:flex;gap:8px}
.inquiry-left .contact-info strong{color:var(--tp-navy)}
.form-card{background:#fff;border:1px solid var(--tp-border);border-radius:12px;padding:28px;box-shadow:var(--tp-shadow-sm)}
.field{margin-bottom:16px}
.field label{display:block;font-size:.84rem;font-weight:600;color:var(--tp-navy);margin-bottom:6px}
.field input,.field select,.field textarea{width:100%;padding:11px 12px;border:1px solid var(--tp-border);border-radius:8px;font-family:inherit;font-size:.9rem;color:var(--tp-text);background:#fff}
.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--tp-blue);border-color:var(--tp-blue)}
.field .err{color:#dc2626;font-size:.76rem;margin-top:4px;display:none}
.field.invalid .err{display:block}
.field.invalid input,.field.invalid select,.field.invalid textarea{border-color:#dc2626}
.form-2col{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.form-success{display:none;background:#dcfce7;color:#166534;border-radius:10px;padding:14px;font-weight:600;margin-bottom:14px}
.form-submit{width:100%}
.form-note{font-size:.76rem;color:var(--tp-muted);margin-top:10px}
@media(max-width:860px){.inquiry-layout{grid-template-columns:1fr}.form-2col{grid-template-columns:1fr}}

/* ===== 询盘 / 反馈弹窗（标记由 scripts/main.js 注入，页面无需任何弹窗 HTML） ===== */
.modal-mask{position:fixed;inset:0;background:rgba(10,29,50,.55);display:none;align-items:center;justify-content:center;z-index:100;padding:20px}
.modal-mask.open{display:flex}
.modal{background:#fff;border-radius:14px;max-width:520px;width:100%;padding:26px;position:relative;max-height:90vh;overflow:auto}
.modal .x{position:absolute;top:12px;right:16px;font-size:1.5rem;line-height:1;color:var(--tp-muted)}
.modal .x:hover{color:var(--tp-navy)}
.modal h3{font-size:1.25rem;font-weight:700;color:var(--tp-navy);margin-bottom:6px}
.modal p.hint{color:var(--tp-text-2);font-size:.85rem;margin-bottom:16px}
.stars{display:flex;gap:4px;font-size:1.6rem;margin-bottom:10px}
.stars span{color:#cbd5e1;transition:color .15s;cursor:pointer}
.stars span:hover{color:#fbbf24}

/* ===== 逐列吸顶（框架 widget flex-row 的 sticky 变体） =====
   框架 render-widget.tsx 按 colSticky 给列加 .widget-flex-row__cell--sticky，
   并写行内 top（默认 96px，避开固定页头）。
   ⚠ 公共侧是「零 CMS 样式」：styles/base/widgets.css 只被后台布局引入，
   所以这条规则【必须由模板包提供】。缺了它 → 勾了「逐列吸顶」毫无反应，
   而后台编辑器里看着却是好的（那边加载了 widgets.css），极易误判成操作错误。
   护栏：本注释内勿写「星号+斜杠」连续序列，会提前闭合注释（本包曾因此吞掉 @import 与 :root{}）。 */
.widget-flex-row__cell--sticky{position:sticky;align-self:start;z-index:1}
/* 手机窄屏不分栏 → 吸顶失去意义，退回普通流 */
@media(max-width:767px){
  .widget-flex-row__cell--sticky{position:static}
}

/* ===== 404 页面版块（骨架 widgets/error/404.html） =====
   深色海军蓝底 + 工程网格 + 蓝色光晕 + 幽灵数字 404。
   全部纯 CSS（不依赖图片），因为它是"任意错误地址"的落点，必须永远能显示。
   护栏：本注释内勿写「星号+斜杠」连续序列，会提前闭合注释。 */
.error-404{position:relative;overflow:hidden;background:var(--tp-navy-900);color:#fff;padding:92px 0 100px;text-align:center}
.error-404::before{content:'';position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.045) 1px,transparent 1px);background-size:64px 64px;pointer-events:none}
.error-404::after{content:'';position:absolute;left:50%;top:-34%;width:820px;height:820px;transform:translateX(-50%);background:radial-gradient(circle,rgba(37,99,235,.30),transparent 62%);pointer-events:none}
.error-404__inner{position:relative}
.error-404__code{display:block;font-family:var(--tp-head);font-weight:800;font-size:clamp(96px,17vw,208px);line-height:.86;letter-spacing:.02em;color:transparent;-webkit-text-stroke:2px rgba(90,162,255,.55);user-select:none}
.error-404 .eyebrow{color:var(--tp-blue-soft);margin-top:16px}
.error-404__title{color:#fff;font-family:var(--tp-head);font-weight:700;font-size:clamp(1.35rem,2.6vw,2rem);line-height:1.2;margin-top:10px}
.error-404__summary{color:#a9bdd2;font-size:.95rem;margin:14px auto 0;max-width:600px}
.error-404__actions{display:flex;justify-content:center;flex-wrap:wrap;gap:12px;margin-top:28px}
.error-404__links{display:flex;justify-content:center;flex-wrap:wrap;gap:26px;margin-top:36px;padding-top:22px;border-top:1px solid rgba(255,255,255,.12)}
.error-404__link{display:inline-flex;align-items:center;gap:7px;color:#cfe0f5;font-size:.85rem;font-weight:600;text-decoration:none;transition:color .18s}
.error-404__link::after{content:'→';color:var(--tp-blue-soft);transition:transform .18s}
.error-404__link:hover{color:#fff}
.error-404__link:hover::after{transform:translateX(3px)}
@media(max-width:767px){
  .error-404{padding:64px 0 72px}
  .error-404__code{font-size:clamp(78px,26vw,132px);-webkit-text-stroke-width:1.5px}
  .error-404__links{gap:16px;margin-top:28px}
}

  /* ===== 页头语言切换器（下拉式，骨架 nav 的 langSwitcher 容器）=====
     前端按站点已启用语言生成触发按钮 + 菜单；展开/收起由 main.js 的 initLang 驱动。
     动效：菜单 透明度+位移+轻微缩放，箭头 180° 旋转；收起后 visibility:hidden 不可误点。
     护栏：本注释内勿写「星号+斜杠」连续序列，会提前闭合注释。 */
  .nav-lang{position:relative;margin-right:4px}
  .nav-lang:empty{display:none}
  .nav-lang-btn{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 11px;border:1px solid var(--tp-border);border-radius:999px;background:var(--tp-bg);color:var(--tp-text-2);font-size:.78rem;font-weight:700;letter-spacing:.01em;cursor:pointer;transition:color .18s,border-color .18s,box-shadow .18s,background .18s}
  .nav-lang-btn:hover{color:var(--tp-navy);border-color:var(--tp-navy)}
  .nav-lang.open .nav-lang-btn{color:var(--tp-navy);border-color:var(--tp-navy);background:#fff;box-shadow:0 0 0 3px var(--tp-blue-soft)}
  .nav-lang-globe{width:14px;height:14px;flex-shrink:0}
  .nav-lang-caret{width:10px;height:10px;flex-shrink:0;transition:transform .22s cubic-bezier(.4,0,.2,1)}
  .nav-lang.open .nav-lang-caret{transform:rotate(180deg)}
  .nav-lang-menu{position:absolute;right:0;top:calc(100% + 8px);min-width:158px;margin:0;padding:6px;list-style:none;background:#fff;border:1px solid var(--tp-border);border-radius:12px;box-shadow:var(--tp-shadow-md);opacity:0;visibility:hidden;transform:translateY(8px) scale(.97);transform-origin:top right;transition:opacity .2s ease,transform .2s cubic-bezier(.4,0,.2,1),visibility .2s;z-index:80}
  .nav-lang.open .nav-lang-menu{opacity:1;visibility:visible;transform:none}
  .nav-lang-menu li+li{margin-top:2px}
  .nav-lang-menu a{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 11px;border-radius:8px;color:var(--tp-text-2);font-size:.8rem;font-weight:600;text-decoration:none;transition:background .16s,color .16s}
  .nav-lang-menu a:hover{background:var(--tp-tint);color:var(--tp-navy)}
  .nav-lang-menu a.on{color:var(--tp-blue);background:var(--tp-blue-soft)}
  .nav-lang-tick{width:11px;height:11px;flex-shrink:0}
  @media(max-width:1023px){
    .nav-lang{margin-right:0}
    .nav-lang-menu{right:-8px}
  }
  @media(prefers-reduced-motion:reduce){
    .nav-lang-menu,.nav-lang-caret{transition:none}
  }
/* ===== 版式容器（混合模式 P6a：容器带 settings.layout 时由渲染器输出的外壳）=====
   分割方式与比例由这里定义（安全档位）；内容部件（.tp-w-*）只管内容、宽度自适应。
   护栏：本注释内勿写「星号+斜杠」连续序列，会提前闭合注释。 */
.tp-layout{display:grid;align-items:start}
.tp-layout-cols-2{grid-template-columns:1fr 1fr;gap:32px}
.tp-layout-cols-2.tp-ratio-2-1{grid-template-columns:2fr 1fr}
.tp-layout-cols-2.tp-ratio-1-2{grid-template-columns:1fr 2fr}
.tp-layout-cols-3{grid-template-columns:1fr 1fr 1fr;gap:28px}
.tp-layout-cols-4{grid-template-columns:repeat(4,1fr);gap:24px}
.tp-layout.tp-gap-s{gap:20px}
.tp-layout.tp-gap-m{gap:32px}
.tp-layout.tp-gap-l{gap:48px}
@media(max-width:1023px){
  .tp-layout-cols-2,.tp-layout-cols-3,.tp-layout-cols-4{grid-template-columns:1fr}
  .tp-layout-cols-2.tp-stack-right > :first-child{order:2}
}
/* ===== 容器友好内容部件（只显示字段，无版式）===== */
.tp-w-text{color:var(--tp-text);font-size:1rem;line-height:1.75}
.tp-w-text h2{color:var(--tp-navy);font-size:1.45rem;font-weight:700;margin:0 0 14px;letter-spacing:-.01em}
.tp-w-text h3{color:var(--tp-navy);font-size:1.12rem;font-weight:700;margin:22px 0 10px}
.tp-w-text p{margin:0 0 12px}
.tp-w-text p:last-child{margin-bottom:0}
.tp-w-text ul{margin:0 0 12px;padding-left:1.2em}
.tp-w-text li{margin-bottom:6px}
.tp-w-text strong{color:var(--tp-navy);font-weight:700}
.tp-w-image{margin:0}
.tp-w-image img{width:100%;height:auto;display:block;border-radius:14px;box-shadow:var(--tp-shadow-sm)}
.tp-w-image figcaption{margin-top:10px;color:var(--tp-muted);font-size:.82rem;text-align:center}
/* ===== 页头容器化增量规则（部件复用 .brand/.nav-links/.nav-panel 原有类）===== */
.nav-links li{display:flex;list-style:none}
.nav-links li>.nav-panel{opacity:0;visibility:hidden;transform:translateY(6px);transition:opacity .18s ease,transform .18s ease,visibility .18s}
.nav-links li:hover>.nav-panel,.nav-links li:focus-within>.nav-panel{opacity:1;visibility:visible;transform:none}
.brand .brand-logo-img{height:34px;width:auto;display:block}
@media(max-width:1023px){
  .nav-links{flex-wrap:wrap;gap:2px 14px}
  .nav-links a{height:44px}
  .nav-links li>.nav-panel{display:none}
}
@media(prefers-reduced-motion:reduce){
  .nav-links li>.nav-panel{transition:none}
}
/* ===== row 版式 + 位置标记档位（H2 位置系统：引擎只输出 data-pos，表现由模板定义）===== */
.tp-layout-row{display:flex;align-items:center}
.tp-layout-row[data-pos$="-center"]{justify-content:center;justify-items:center}
.tp-layout-row[data-pos$="-right"]{justify-content:flex-end;justify-items:end}
.tp-layout-row[data-pos^="top"]{align-items:flex-start}
.tp-layout-row[data-pos^="bottom"]{align-items:flex-end}
.tp-layout-row[data-pos^="center"]{align-items:center}
.tp-layout-cols-2[data-pos^="top"],.tp-layout-cols-3[data-pos^="top"],.tp-layout-cols-4[data-pos^="top"]{align-items:start}
.tp-layout-cols-2[data-pos^="center"],.tp-layout-cols-3[data-pos^="center"],.tp-layout-cols-4[data-pos^="center"]{align-items:center}
.tp-layout-cols-2[data-pos^="bottom"],.tp-layout-cols-3[data-pos^="bottom"],.tp-layout-cols-4[data-pos^="bottom"]{align-items:end}
/* ===== 部件级对齐档位（两级模型：容器 data-pos=组默认；部件 data-self-pos=自身覆盖）===== */
/* 部件在列内的位置档位（data-self-pos → 九宫格；列是 flex 纵向，align-self 管横向、margin 自动管纵向） */
.tp-col>[data-self-pos$="-left"]{align-self:flex-start}
.tp-col>[data-self-pos="center"],.tp-col>[data-self-pos$="-center"]{align-self:center}
.tp-col>[data-self-pos$="-right"]{align-self:flex-end}
.tp-col>[data-self-pos^="top"]{margin-bottom:auto}
.tp-col>[data-self-pos^="bottom"]{margin-top:auto}
.tp-col>[data-self-pos="center"],.tp-col>[data-self-pos^="center"]{margin-top:auto;margin-bottom:auto}
/* ===== 列块（TMP v1 列实体）+ 列宽神圣硬约束 =====
   列宽只由容器设定，列内内容绝不允许撑开/挤压/重叠其他列 */
.tp-col{display:flex;flex-direction:column;min-width:0;max-width:100%;overflow-wrap:anywhere}
.tp-col>*{min-width:0;max-width:100%}
.tp-col img,.tp-col video,.tp-col svg,.tp-col table{max-width:100%}
.tp-col pre,.tp-col code{white-space:pre-wrap;word-break:break-word}
/* 空列占位（仅画布可见） */
.tp-col-empty{display:inline-flex;align-items:center;justify-content:center;min-width:64px;min-height:32px;padding:0 8px;border:1px dashed rgba(47,123,246,.45);border-radius:6px;color:rgba(47,123,246,.75);font-size:.7rem;font-weight:600}
/* ===== 编辑画布参考线（三色：容器蓝 / 列绿带列号 / 部件橙；仅画布，前台无 data-editor）===== */
.tp-layout[data-editor="1"]{outline:2px dashed rgba(47,123,246,.8);outline-offset:-2px}
.tp-layout[data-editor="1"]>.tp-col{outline:2px dashed rgba(22,163,74,.85);outline-offset:-2px;background:rgba(22,163,74,.06);position:relative;min-height:28px;min-width:56px}
.tp-layout[data-editor="1"]>.tp-col::before{content:"列" attr(data-col);position:absolute;left:2px;top:1px;z-index:5;font-size:9px;line-height:1.4;color:#15803d;background:rgba(255,255,255,.9);padding:0 4px;border-radius:3px;pointer-events:none}
.tp-layout[data-editor="1"] .tp-col>[data-ruyi-skeleton]{outline:1px dashed rgba(245,158,11,.85);outline-offset:-1px}
/* ===== 滚动揭示 ===== */
.reveal{opacity:0;transform:translateY(16px);transition:opacity .5s,transform .5s}
.reveal.in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){
  .reveal{opacity:1;transform:none;transition:none}
  .cat-card:hover,.prod-card:hover,.sol-card:hover .bg{transform:none;transition:none}
  html{scroll-behavior:auto}
}

/* ==========================================================================
   产品浏览（cards/product-filter-list）· 二次开发 2026-10-17
   两列：左侧筛选（品牌 / 分类，链接式）＋ 右侧产品网格
   hover 显示关键参数是**纯 CSS**，不经过 React —— 换模板样式也跟着走。
   变量沿用模板既有的 --tp-*（本模板没有 --tp-primary，主色是 --tp-blue）
   ========================================================================== */
.browse-layout{display:grid;grid-template-columns:240px minmax(0,1fr);gap:32px;align-items:start}
.browse-side{position:sticky;top:96px}
.browse-group{margin-bottom:26px}
.browse-group-title{font-size:.9rem;font-weight:600;color:var(--tp-navy);margin:0 0 10px;padding-bottom:8px;border-bottom:1px solid var(--tp-border)}
.browse-options{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}
.browse-opt{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:7px 10px;border-radius:6px;font-size:.875rem;color:var(--tp-text);transition:background .15s,color .15s}
.browse-opt:hover{background:var(--tp-tint);color:var(--tp-blue)}
.browse-opt.is-on{background:var(--tp-blue);color:#fff}
.browse-opt em{font-style:normal;font-size:.75rem;color:var(--tp-muted)}
.browse-opt.is-on em{color:rgba(255,255,255,.85)}
.browse-main{min-width:0}
.browse-bar{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px;flex-wrap:wrap}
.browse-count{font-size:.9rem;color:var(--tp-text-2)}
.browse-clear{font-size:.85rem;color:var(--tp-blue)}
.browse-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.pcard{display:flex;flex-direction:column;background:#fff;border:1px solid var(--tp-border);border-radius:10px;overflow:hidden;transition:transform .2s,box-shadow .2s,border-color .2s}
.pcard:hover{transform:translateY(-2px);box-shadow:var(--tp-shadow-md);border-color:var(--tp-blue)}
.pcard-media{display:block;aspect-ratio:4/3;background:var(--tp-tint);overflow:hidden}
.pcard-media img{width:100%;height:100%;object-fit:contain;padding:12px}
.pcard-body{padding:12px 14px 14px;display:flex;flex-direction:column;gap:4px;flex:1}
.pcard-name{font-size:.95rem;font-weight:600;color:var(--tp-navy);line-height:1.35}
.pcard-name:hover{color:var(--tp-blue)}
.pcard-brand{font-size:.75rem;color:var(--tp-muted);align-self:flex-start}
.pcard-brand:hover{color:var(--tp-blue)}
.pcard-price{font-size:.95rem;color:var(--tp-blue);margin-top:2px}
.pcard-price-label{font-size:.72rem;color:var(--tp-muted);margin-right:4px}
.pcard-specs{margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:2px;max-height:0;opacity:0;overflow:hidden;transition:max-height .25s ease,opacity .2s ease}
.pcard:hover .pcard-specs{max-height:140px;opacity:1}
.pcard-spec{display:flex;justify-content:space-between;gap:8px;font-size:.72rem}
.pcard-spec dt{color:var(--tp-muted);margin:0}
.pcard-spec dd{margin:0;color:var(--tp-text);font-weight:600;text-align:right}
.pcard-wish{margin-top:auto;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:7px 10px;border:1px solid var(--tp-border);border-radius:6px;background:#fff;font-size:.8rem;color:var(--tp-text);cursor:pointer;transition:border-color .15s,color .15s,background .15s}
.pcard-wish:hover{border-color:var(--tp-blue);color:var(--tp-blue)}
.pcard-wish.is-added{border-color:var(--tp-blue);color:var(--tp-blue);background:var(--tp-tint)}
.pcard-wish-icon{font-size:.95rem;line-height:1}
/* 已加入愿望清单：空心 ♡ → 实心 ♥（纯 CSS，不依赖 JS 改文案） */
.pcard-wish.is-added .pcard-wish-icon{font-size:0}
.pcard-wish.is-added .pcard-wish-icon::after{content:"\2665";font-size:.95rem;color:var(--tp-blue)}
.browse-empty{padding:60px 0;text-align:center;color:var(--tp-muted);font-size:.9rem}
@media(max-width:1024px){
  .browse-layout{grid-template-columns:200px minmax(0,1fr);gap:22px}
  .browse-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:760px){
  .browse-layout{grid-template-columns:1fr}
  .browse-side{position:static}
  .browse-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(prefers-reduced-motion:reduce){
  .pcard:hover{transform:none}
  .pcard-specs{transition:none}
}

/* ==========================================================================
   产品详情新增元素（二次开发 2026-10-17）
   品牌行 / 零售价 / 愿望清单按钮 / 社交分享
   沿用模板既有 --tp-* 变量；详情页主色是 --tp-blue，标题色 --tp-navy
   ========================================================================== */
.pd-brand{display:inline-block;margin:2px 0 6px;font-size:.82rem;color:var(--tp-muted);letter-spacing:.01em}
.pd-brand:hover{color:var(--tp-blue)}
.pd-price{display:flex;align-items:baseline;gap:8px;margin:10px 0 4px}
.pd-price-label{font-size:.78rem;color:var(--tp-muted)}
.pd-price b{font-size:1.35rem;font-weight:700;color:var(--tp-blue);letter-spacing:-.01em}

/* 愿望清单按钮：与主 CTA 并排，样式更轻，避免抢「Request a Quote」 */
.btn-wish{display:inline-flex;align-items:center;gap:7px;padding:10px 16px;border:1px solid var(--tp-border);border-radius:6px;background:#fff;font-size:.9rem;color:var(--tp-text);cursor:pointer;transition:border-color .15s,color .15s,background .15s}
.btn-wish:hover{border-color:var(--tp-blue);color:var(--tp-blue)}
.btn-wish.is-added{border-color:var(--tp-blue);color:var(--tp-blue);background:var(--tp-tint)}
.btn-wish .wish-icon{font-size:1rem;line-height:1}
.btn-wish.is-added .wish-icon{font-size:0}
.btn-wish.is-added .wish-icon::after{content:"\2665";font-size:1rem;color:var(--tp-blue)}

/* 社交分享 */
.share-bar{display:flex;align-items:center;gap:10px;margin-top:22px;padding-top:18px;border-top:1px solid var(--tp-border);flex-wrap:wrap}
.share-label{font-size:.78rem;color:var(--tp-muted);letter-spacing:.04em;text-transform:uppercase}
.share-list{display:inline-flex;align-items:center;gap:8px}
.share-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px solid var(--tp-border);border-radius:50%;color:var(--tp-text-2);background:#fff;transition:border-color .15s,color .15s,background .15s,transform .15s}
.share-btn:hover{border-color:var(--tp-blue);color:var(--tp-blue);transform:translateY(-1px)}
.share-btn.is-copied{border-color:var(--tp-blue);color:var(--tp-blue);background:var(--tp-tint)}
.share-btn.is-copied svg{display:none}
.share-btn.is-copied::after{content:"\2713";font-size:14px;line-height:1}
.share-btn.is-copy-failed{border-color:#d9534f;color:#d9534f}
@media(prefers-reduced-motion:reduce){
  .share-btn:hover{transform:none}
}

/* ==========================================================================
   愿望清单（二次开发 2026-10-17）
   页 `/wishlist` 的动态区（条目/数量/删除/提交）由客户端渲染，
   但**所有视觉规则都在这里** —— 换模板换样式照常生效。
   另含右下角浮动计数徽标 .wish-fab（有清单才出现）
   ========================================================================== */
.wish-page{padding-bottom:8px}
.wish-head{margin-bottom:26px}
.wish-title{font-size:1.6rem;font-weight:700;color:var(--tp-navy);margin:0 0 8px}
.wish-intro{color:var(--tp-text-2);font-size:.95rem;margin:0}
.wish-note{margin:26px 0 0;font-size:.78rem;color:var(--tp-muted);line-height:1.6}

.wish-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;padding-bottom:12px;border-bottom:1px solid var(--tp-border);flex-wrap:wrap}
.wish-count{font-size:.9rem;color:var(--tp-text-2)}
.wish-clear{background:none;border:0;padding:0;font-size:.85rem;color:var(--tp-muted);cursor:pointer;text-decoration:underline}
.wish-clear:hover{color:#d9534f}

.wish-list{list-style:none;margin:0;padding:0}
.wish-row{display:grid;grid-template-columns:88px minmax(0,1fr) auto 32px;gap:16px;align-items:center;padding:16px 0;border-bottom:1px solid var(--tp-border)}
.wish-thumb{display:block;width:88px;height:66px;border:1px solid var(--tp-border);border-radius:8px;background:var(--tp-tint);overflow:hidden}
.wish-thumb img{width:100%;height:100%;object-fit:contain;padding:6px}
.wish-thumb-ph{display:flex;align-items:center;justify-content:center;height:100%;color:var(--tp-muted);font-size:.8rem}
.wish-info{min-width:0}
.wish-name{display:block;font-size:.98rem;font-weight:600;color:var(--tp-navy);line-height:1.35}
.wish-name:hover{color:var(--tp-blue)}
.wish-model{margin-top:3px;font-size:.76rem;color:var(--tp-muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace}

.wish-qty{display:inline-flex;align-items:center;border:1px solid var(--tp-border);border-radius:6px;overflow:hidden}
.wish-qty button{width:30px;height:32px;border:0;background:#fff;color:var(--tp-text);font-size:1rem;line-height:1;cursor:pointer}
.wish-qty button:hover:not(:disabled){background:var(--tp-tint);color:var(--tp-blue)}
.wish-qty button:disabled{opacity:.35;cursor:not-allowed}
.wish-qty input{width:46px;height:32px;border:0;border-left:1px solid var(--tp-border);border-right:1px solid var(--tp-border);text-align:center;font-size:.9rem;color:var(--tp-text);background:#fff;-moz-appearance:textfield}
.wish-qty input::-webkit-outer-spin-button,.wish-qty input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}

.wish-remove{width:32px;height:32px;border:0;background:none;color:var(--tp-muted);font-size:1.25rem;line-height:1;cursor:pointer;border-radius:6px}
.wish-remove:hover{background:var(--tp-tint);color:#d9534f}

.wish-actions{display:flex;align-items:center;gap:12px;margin-top:26px;flex-wrap:wrap}

.wish-empty{padding:56px 24px;text-align:center;border:1px dashed var(--tp-border);border-radius:12px;background:var(--tp-tint)}
.wish-empty-icon{font-size:2.4rem;line-height:1;color:var(--tp-muted);margin-bottom:10px}
.wish-empty-title{font-size:1.05rem;font-weight:600;color:var(--tp-navy);margin:0 0 6px}
.wish-empty-text{font-size:.9rem;color:var(--tp-text-2);margin:0 auto 18px;max-width:420px;line-height:1.6}

/* 浮动计数徽标：只在有清单时出现（hidden 由脚本控制） */
.wish-fab{position:fixed;right:24px;bottom:24px;z-index:60;display:inline-flex;align-items:center;gap:6px;padding:10px 14px;border-radius:999px;background:var(--tp-blue);color:#fff;box-shadow:var(--tp-shadow-md);font-size:.85rem;font-weight:600;text-decoration:none;transition:transform .15s,opacity .15s}
.wish-fab:hover{transform:translateY(-2px);color:#fff}
.wish-fab[hidden]{display:none}
.wish-fab-icon{font-size:1.05rem;line-height:1}
.wish-fab-count{min-width:18px;text-align:center}

@media(max-width:640px){
  .wish-row{grid-template-columns:64px minmax(0,1fr) auto;gap:12px}
  .wish-thumb{width:64px;height:52px}
  .wish-remove{grid-column:3;justify-self:end}
  .wish-fab{right:16px;bottom:16px}
}
@media(prefers-reduced-motion:reduce){
  .wish-fab:hover{transform:none}
}

/* 询盘弹窗里的「随询盘提交愿望清单」勾选框（2026-10-17 二次开发 · 需求 6） */
.form-check{display:flex;align-items:center;gap:8px;margin:12px 0 6px;font-size:.85rem;color:var(--tp-text-2);cursor:pointer;user-select:none}
.form-check[hidden]{display:none}
.form-check input{width:16px;height:16px;accent-color:var(--tp-blue);cursor:pointer;flex:none}

/* 国家/地区选择器（2026-10-17）
   与表单其他输入框对齐；下拉面板可搜索、常用置顶、时区推断项高亮。
   样式放模板里（而不是组件内联），换模板时跟着换皮。 */
.csel{position:relative}
.csel-input{cursor:pointer}
.csel-panel{position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:70;background:#fff;border:1px solid var(--tp-border);border-radius:10px;box-shadow:var(--tp-shadow-md);overflow:hidden}
.csel-search-wrap{padding:8px;border-bottom:1px solid var(--tp-border);background:#fff}
.csel-search{width:100%;box-sizing:border-box;padding:8px 10px;border:1px solid var(--tp-border);border-radius:8px;font-size:13px;outline:none;font-family:inherit}
.csel-search:focus{border-color:var(--tp-blue)}
.csel-list{max-height:240px;overflow-y:auto}
.csel-hint{padding:6px 10px;font-size:10.5px;letter-spacing:.03em;text-transform:uppercase;color:var(--tp-muted)}
.csel-item{display:flex;width:100%;gap:8px;padding:9px 12px;border:0;background:transparent;cursor:pointer;font-size:13px;color:var(--tp-text);text-align:left;font-family:inherit}
.csel-item:hover{background:var(--tp-tint);color:var(--tp-blue)}
.csel-item-detected{background:var(--tp-blue-soft);color:var(--tp-blue);font-weight:600}
.csel-item-detected:hover{background:var(--tp-blue-soft)}
.csel-empty{padding:14px;font-size:12.5px;color:var(--tp-muted);text-align:center}

/* 产品列表分页（2026-10-17）：超过一页才出现 */
.browse-pager{display:flex;align-items:center;justify-content:center;gap:14px;margin-top:34px;padding-top:22px;border-top:1px solid var(--tp-border)}
.browse-pager-info{font-size:.85rem;color:var(--tp-muted);white-space:nowrap}
.browse-pager-btn{padding:8px 16px;border:1px solid var(--tp-border);border-radius:6px;background:#fff;font-size:.875rem;color:var(--tp-text);transition:border-color .15s,color .15s}
.browse-pager-btn:hover{border-color:var(--tp-blue);color:var(--tp-blue)}
@media(prefers-reduced-motion:reduce){.browse-pager-btn{transition:none}}

/* ============================================================
   产品详情页改版（2026-10-17）
   左侧相关产品 · 右侧图库+信息（参数表）· 下方单一富文本描述
   ============================================================ */
.pd-layout{display:grid;grid-template-columns:260px minmax(0,1fr);gap:36px;align-items:start;margin-top:26px}

/* ---- 左：相关产品 ---- */
.pd-side{position:sticky;top:20px;min-width:0}
.pd-side-title{font-size:.72rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--tp-muted);margin-bottom:12px}
.pd-rel-list{display:grid;gap:10px}
.pd-rel{display:flex;gap:10px;align-items:center;padding:8px;border:1px solid var(--tp-border);border-radius:8px;background:#fff;transition:border-color .15s,box-shadow .15s;min-width:0}
.pd-rel:hover{border-color:#c7d2e3;box-shadow:var(--tp-shadow-sm)}
.pd-rel-thumb{width:52px;height:52px;border-radius:6px;background:var(--tp-tint);display:grid;place-items:center;flex:none;overflow:hidden}
.pd-rel-thumb img{width:100%;height:100%;object-fit:contain}
.pd-rel-meta{min-width:0;display:block}
.pd-rel-meta b{display:block;font-family:var(--tp-head);font-size:.8rem;font-weight:600;color:var(--tp-navy);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pd-rel-meta em{display:block;font-style:normal;font-size:.7rem;color:var(--tp-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ---- 右：图库 + 信息 ---- */
.pd-hero{display:grid;grid-template-columns:minmax(0,1fr) 400px;gap:36px;align-items:start}
.pd-gmain{position:relative;aspect-ratio:3/4;border:1px solid var(--tp-border);border-radius:12px;background:linear-gradient(180deg,#fbfcfe,#f3f6fb);display:grid;place-items:center;overflow:hidden}
.pd-gmain img{width:86%;height:86%;object-fit:contain}
.pd-gbadge{position:absolute;left:14px;top:14px;background:var(--tp-navy);color:#fff;font-size:.7rem;font-weight:600;letter-spacing:.04em;padding:4px 9px;border-radius:4px}
.pd-gthumbs{display:flex;gap:10px;margin-top:12px;flex-wrap:wrap}
.pd-gthumb{width:64px;height:82px;border:1.5px solid var(--tp-border);border-radius:8px;background:var(--tp-tint);display:grid;place-items:center;cursor:pointer;transition:border-color .15s;padding:0}
.pd-gthumb img{width:100%;height:100%;object-fit:contain}
.pd-gthumb.is-on{border-color:var(--tp-blue)}
.pd-gthumb:hover{border-color:#b9c7db}

.pd-brand{display:inline-block;font-size:.7rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--tp-blue);background:#eff5ff;padding:3px 8px;border-radius:4px;margin-bottom:10px}
.pd-info h1{font-size:1.55rem;line-height:1.3;font-weight:700;color:var(--tp-navy)}
.pd-sub{margin-top:6px;font-size:.88rem;color:var(--tp-text-2)}
.pd-price-row{display:flex;align-items:flex-end;gap:10px;margin-top:18px;padding:16px 0;border-top:1px solid var(--tp-border);border-bottom:1px solid var(--tp-border)}
.pd-price-label{font-size:.75rem;color:var(--tp-muted);padding-bottom:4px}
.pd-price{font-family:var(--tp-head);font-size:2rem;font-weight:700;color:var(--tp-navy);line-height:1}

/* 变体属性组（JS 渲染） */
.pd-attrs{margin-top:18px;display:grid;gap:14px}
.pd-attr-name{font-size:.8rem;font-weight:600;color:var(--tp-text);margin-bottom:8px}
.pd-opts{display:flex;flex-wrap:wrap;gap:8px}
.pd-opt{padding:8px 16px;border:1.5px solid var(--tp-border);border-radius:7px;background:#fff;font-size:.84rem;color:var(--tp-text);cursor:pointer;font-family:inherit;transition:border-color .15s,color .15s,background .15s}
.pd-opt:hover{border-color:#b9c7db}
.pd-opt.is-on{border-color:var(--tp-blue);background:#eff5ff;color:var(--tp-blue-700);font-weight:600}

.pd-sku{display:flex;flex-wrap:wrap;gap:18px;margin-top:16px;font-size:.78rem;color:var(--tp-muted)}
.pd-sku b{color:var(--tp-text-2);font-weight:600}
.pd-sku code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:var(--tp-tint);padding:2px 6px;border-radius:4px;color:var(--tp-text)}

/* 参数表 */
.pd-spec{margin-top:18px;border:1px solid var(--tp-border);border-radius:8px;overflow:hidden}
.pd-spec-head{padding:9px 14px;background:#fafbfd;border-bottom:1px solid var(--tp-border);font-size:.76rem;font-weight:600;color:var(--tp-navy)}
.pd-spec table{width:100%;border-collapse:collapse;font-size:.82rem}
.pd-spec th,.pd-spec td{padding:8px 14px;border-bottom:1px solid var(--tp-border);text-align:left;vertical-align:top}
.pd-spec th{width:38%;color:var(--tp-text-2);font-weight:500}
.pd-spec tr:last-child th,.pd-spec tr:last-child td{border-bottom:0}

/* 单一描述 */
.pd-desc{margin-top:46px;border-top:1px solid var(--tp-border);padding-top:26px}
.pd-desc-title{font-size:1.05rem;font-weight:700;color:var(--tp-navy);margin-bottom:16px}
.pd-rich{font-size:.92rem;color:var(--tp-text-2);line-height:1.9;max-width:900px}
.pd-rich p+p{margin-top:14px}
.pd-rich h3,.pd-rich h4{font-family:var(--tp-head);font-size:.95rem;font-weight:600;color:var(--tp-navy);margin:20px 0 8px}
.pd-rich ul,.pd-rich ol{margin:10px 0 0;padding-left:18px}
.pd-rich ul{list-style:disc}
.pd-rich ol{list-style:decimal}
.pd-rich li{margin:5px 0}
.pd-rich strong{color:var(--tp-text);font-weight:600}

@media (max-width:1024px){
  .pd-layout{grid-template-columns:1fr}
  .pd-side{position:static;order:2}
  .pd-hero{grid-template-columns:1fr}
}

/* ============================================================
   站内搜索页（2026-10-17）
   顶部 tab 切换 · 分组小标题 · 关键词高亮 · 分页
   ============================================================ */
.search-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 4px}
.search-tab{display:inline-flex;align-items:center;padding:6px 16px;border-radius:999px;
  border:1px solid var(--tp-border);font-size:.85rem;color:var(--tp-text-2);
  transition:background .15s,border-color .15s,color .15s}
.search-tab:hover{border-color:#b9c7db;color:var(--tp-ink,var(--tp-text))}
.search-tab.is-on{background:var(--tp-navy);border-color:var(--tp-navy);color:#fff;font-weight:600}
.search-tab em{font-style:normal;margin-left:5px;font-size:.78em;opacity:.75}
.search-heading{font-family:var(--tp-head);font-size:1.05rem;font-weight:700;color:var(--tp-navy);margin:22px 0 10px}
.search-empty{padding:34px 0;color:var(--tp-text-2);font-size:.92rem}
.search-pager{display:flex;align-items:center;gap:14px;margin-top:26px}
.search-page-btn{padding:6px 15px;border:1px solid var(--tp-border);border-radius:6px;font-size:.85rem;color:var(--tp-text)}
.search-page-btn:hover{border-color:var(--tp-navy);color:var(--tp-navy)}
.search-page-info{font-size:.8rem;color:var(--tp-muted)}
/* 命中关键词 */
mark{background:#fde68a;color:inherit;padding:0 1px;border-radius:2px}
/* 搜索结果的卡片上，变体摘要与摘要文字保持小字 */
.prod-card .variants{font-size:.7rem;color:var(--tp-text-2)}

/* 搜索页：分组标题 / tab / 分页所在的那几个 section 不需要整段大 padding */
section:has(> .container > .tp-w-text > .search-tabs){padding:26px 0 0}
section:has(> .container > .tp-w-text > .search-heading){padding:18px 0 0}
section:has(> .container > .tp-w-text > .search-empty){padding:24px 0 0}
section:has(> .container > .tp-w-text > .search-pager){padding:26px 0 44px}

/* ── 页头列宽（2026-10-18）────────────────────────────────────────
   英文站页头有 5 列（品牌/菜单/语言/搜索/CTA），而它的 logo 是文字
   （「T + Taihua Equipment + 副标题」），比中文的图片 logo 宽得多。
   渲染器生成的 `1fr` 菜单列带 min-content 下限，总宽顶出容器后
   Contact 按钮就被挤到第二行。改成 minmax(0,1fr) 允许菜单列收缩。 */
.site-header.tp-layout{grid-template-columns:auto minmax(0,1fr) auto auto auto;}

/* 解决方案正文富文本（2026-10-18）：description 由纯文本改为 HTML 后需要的基本样式 */
.sol-detail-p p{margin:0 0 12px}
.sol-detail-p div{margin:0 0 8px}
.sol-detail-p p:last-child{margin-bottom:0}
.sol-detail-p strong,.sol-detail-p b{font-weight:600;color:var(--ink)}
.sol-detail-p em,.sol-detail-p i{font-style:italic}
.sol-detail-p u{text-decoration:underline}
/* padding-left 不能是 0：list-style-position 默认 outside，
   圆点画在 padding 区域里，padding 为 0 时点位跑到容器外、看起来"没有圆点" */
.sol-detail-p ul,.sol-detail-p ol{margin:12px 0;padding-left:22px}
.sol-detail-p li{margin:6px 0;line-height:1.75}
.sol-detail-p ul{list-style:disc}
.sol-detail-p ol{list-style:decimal}
.sol-detail-p a{color:var(--ink);text-decoration:underline;text-underline-offset:2px}
.sol-detail-p a:hover{color:var(--cinnabar)}

/* ===== 5 列骨架 · 移动端适配（2026-10-18）===== */

/* 新骨架是 5 个平级列，没有旧 .nav 的 64px 定高，导致内容贴着上下边。
   这里补回页头的垂直呼吸感与居中。 */
.site-header.tp-layout{padding-block:14px;align-items:center}

/* nav-menu 的根容器：补齐移动端后新增，作为 flex 列内容器 */
.site-header .nav-menu-root{display:flex;align-items:center;gap:16px;min-width:0}
@media(max-width:920px){
  /* 抽屉挂在「导航列」里，列宽只有几十 px —— 必须脱离列宽，按视口铺满 */
  .site-header .nav-menu-root>.nav-mobile{
    position:absolute;left:0;right:0;top:100%;
    width:auto;min-width:0;flex:none;
  }
  /* ⚠ 绝对定位后 grid-template-rows:0fr 不再把内容压扁（容器脱离文档流，行高按内容最小高度算），
     关闭状态会留下一条约 29px 的白条盖在轮播上，看着像 header 下方多了一大块空白。
     这里在未展开时直接不渲染。 */
  .site-header .nav-menu-root>.nav-mobile:not(.on){display:none}
}

/* 防逐字换行：语言按钮与 CTA 被挤窄时原来会变成 "n g li s" */
.site-header .nav-lang-btn,
.site-header .nav-lang,
.site-header .btn{white-space:nowrap;flex-shrink:0}

/* 窄屏收起次要列：原有的 .nav-actions>.btn-primary 规则匹配不到新骨架的平级列，
   这里按 data-col 直接选中（列3=搜索，列5=CTA；CTA 在抽屉里有替代入口） */
@media(max-width:920px){
  /* 只收起 CTA（抽屉里有 Get a Quote）；搜索与语言保留。
     ⚠ grid-template-columns 是渲染器写进 style 属性的内联值（auto 1fr auto auto auto;gap:28px），
     只 display:none 第 5 列的话，轨道和 gap 都还在 → 右边会多出一大块空白。
     所以这里用 !important 覆盖成 4 列，并缩小 gap。 */
  .site-header.tp-layout{
    grid-template-columns:auto auto 1fr auto !important;
    gap:12px !important;
    padding-inline:16px;
  }
  .site-header .tp-col[data-col="5"]{display:none}
  /* 汉堡不能被挤成细条 */
  .site-header .nav-burger{flex:0 0 38px;width:38px;min-width:38px;height:38px}
  .site-header .nav-lang-btn{height:28px;padding:0 8px;font-size:.68rem;gap:4px}
  .site-header .nav-search{width:28px;height:28px;flex:0 0 28px}
  /* 搜索落在 1fr 这一列里，默认靠左 → 推到右边紧挨语言按钮 */
  .site-header .tp-col[data-col="3"]{justify-self:end}
}
