/* ==========================================================================
   万格积木 WANGE · 设计系统 v4
   --------------------------------------------------------------------------
   视觉语言参考 apple.com.cn/store：
     · 中性灰白底（白 / #f5f5f7）为主，纯黑区块做节奏切换
     · 展示级排版：大字号、紧凑字距、短行高、次级信息统一 #6e6e73
     · 胶囊按钮、18~28px 大圆角、1px 发丝线代替重描边
     · 动效克制：滚动渐入、视差、轨道横滑、数字滚动
   配色原则：红色只存在于 LOGO 图片（assets/img/logo.png）内部像素，
             本文件绝不产生任何红色。强调色为品牌金（源自 LOGO 皇冠黄）。
   ========================================================================== */

:root{
  /* —— 中性系统（对齐 Apple 灰阶，冷调中性） —— */
  --ink:#1D1D1F;        /* 主文字 */
  --ink-2:#424245;
  --ink2:#6E6E73;       /* 次级文字：白底 5.07:1 / 浅灰底 4.66:1 —— 达 AA */
  --mute:#6B6B70;       /* 弱化文字：原 #86868B 仅 3.62:1 不达 AA，已加深至 5.30:1 */
  --bg:#FFFFFF;
  --soft:#F5F5F7;       /* 区块浅灰 */
  --soft2:#FAFAFC;
  --line:#D2D2D7;       /* 发丝线（纯装饰分隔用） */
  --line-strong:#8E8E93;/* 控件描边：白底 3.26:1 —— 满足 WCAG 1.4.11 非文本 3:1 */
  --line2:#E8E8ED;
  --dark:#000000;       /* 深色区块 */
  --dark-2:#1D1D1F;

  /* —— 品牌金（源自 LOGO 皇冠黄 #FFD100，降饱和至白底可读） —— */
  --gold:#C7901A; --gold-d:#95690B; --gold-l:#FBF6E9; --gold-v:#FFD100;
  --gold-line:#EBDCB4;
  --grad-gold:linear-gradient(135deg,#E2B94C 0%,#BE8615 100%);
  --ok:#1D8A4E;

  /* —— 形状 —— */
  --r:18px; --r-s:12px; --r-l:28px; --r-btn:980px;
  --max:1220px;

  /* —— 光影（Apple 式极轻） —— */
  --sh:0 2px 8px rgba(0,0,0,.04), 0 12px 32px rgba(0,0,0,.06);
  --sh-h:0 4px 16px rgba(0,0,0,.07), 0 24px 60px rgba(0,0,0,.12);
  --sh-s:0 1px 2px rgba(0,0,0,.05);

  /* —— 节奏 —— */
  --sec-p:clamp(64px,8.4vw,116px);
  --ease:cubic-bezier(.16,.84,.44,1);
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;
  font:17px/1.52 "SF Pro Text",-apple-system,BlinkMacSystemFont,system-ui,"PingFang SC",
       "HarmonyOS Sans SC","Microsoft YaHei UI","Microsoft YaHei","Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  color:var(--ink);background:var(--bg);letter-spacing:-.012em;
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;
  overflow-x:hidden}
img{max-width:100%;height:auto;display:block;border:0}
a{color:inherit;text-decoration:none}
button{font:inherit;cursor:pointer;color:inherit}

/* ---------- 中文按词断行 ---------- */
/* 构建时把词包成 <span class="nw">：折行只发生在词与词之间，
   行末不再出现「销售及服务于一 / 体」「兼具创 / 意」这类切断词的情况。 */
.nw{white-space:nowrap}
/* 窄屏兜底：手机上部分列很窄（如详情页 3 列 pblock 每列仅 ~100px），
   此时放开词内不断行，宁可按老规则折行也不要溢出。 */
@media (max-width:560px){.nw{white-space:normal}}

/* ---------- 仅供屏幕阅读器 ---------- */
.sr{position:absolute;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}
[hidden]{display:none !important}

/* ---------- 键盘可访问性 ---------- */
/* 跳转到主内容：仅键盘聚焦时可见 */
.skip{position:absolute;left:14px;top:-60px;z-index:200;background:var(--ink);color:#fff;
  padding:11px 20px;border-radius:var(--r-btn);font-size:14.5px;font-weight:600;
  transition:top .2s var(--ease)}
.skip:focus{top:14px}
/* 统一焦点指示（WCAG 2.4.7）：键盘可见，鼠标点击不出现 */
a:focus-visible,button:focus-visible,summary:focus-visible,[tabindex]:focus-visible{
  outline:2px solid var(--gold-d);outline-offset:3px;border-radius:6px}
/* 深色区块上的焦点环要反色才看得见 */
.band a:focus-visible,.band button:focus-visible,footer.site a:focus-visible{
  outline-color:var(--gold-v)}
/* 表单控件已有 border+ring，这里只做兜底 */
input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid var(--gold-d);outline-offset:1px}
h1,h2,h3,h4{margin:0;font-weight:600;letter-spacing:-.028em;line-height:1.08;text-wrap:balance}
h1{font-size:clamp(34px,5.2vw,60px)}
h2{font-size:clamp(28px,4.2vw,52px)}
h3{font-size:clamp(19px,2.2vw,26px)}
h4{font-size:16px;letter-spacing:-.02em}
p{margin:0}

.wrap{max-width:var(--max);margin:0 auto;padding:0 22px}
.sec{padding:var(--sec-p) 0;position:relative}
.sec.soft{background:var(--soft)}
.sec.tight{padding:clamp(34px,4.6vw,56px) 0}
.center{text-align:center}
.mt{margin-top:30px}
.hair{height:1px;background:var(--line);border:0;margin:0}

/* ---------- 眉标 · 次级说明 ---------- */
.eyebrow{display:inline-block;font-size:13.5px;font-weight:600;letter-spacing:-.005em;
  color:var(--gold-d);margin-bottom:14px}
.center .eyebrow{margin-left:auto;margin-right:auto}
.lead{color:var(--ink2);font-size:clamp(17px,1.7vw,21px);line-height:1.42;font-weight:400;
  max-width:72ch;margin-top:16px;letter-spacing:-.014em}
.center .lead{margin-left:auto;margin-right:auto}
.note{color:var(--mute);font-size:13px}
.more{display:inline-flex;align-items:center;gap:6px;color:var(--gold-d);font-weight:600;font-size:16px}
.more::after{content:"›";font-size:20px;line-height:1;transition:transform .28s var(--ease)}
.more:hover::after{transform:translateX(4px)}

/* ---------- 按钮 · 胶囊 ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;
  min-height:46px;padding:12px 26px;border-radius:var(--r-btn);border:1px solid transparent;
  background:var(--soft);color:var(--ink);font-weight:500;font-size:16px;letter-spacing:-.014em;
  transition:background .26s var(--ease),color .26s var(--ease),border-color .26s var(--ease),
             transform .26s var(--ease),box-shadow .26s var(--ease);white-space:nowrap}
.btn:hover{transform:translateY(-1px)}
.btn:active{transform:translateY(0) scale(.985)}
/* #2A1D00 对金渐变最深端 #BE8615 达 4.99:1（原 #3A2900 仅 4.42:1，差 0.08 不达 AA） */
.btn.pri{background:var(--grad-gold);color:#2A1D00;font-weight:600;box-shadow:0 1px 2px rgba(140,100,10,.18)}
.btn.pri:hover{box-shadow:0 8px 24px rgba(160,115,15,.28)}
.btn.ink{background:var(--ink);color:#fff}
.btn.ink:hover{background:#000}
.btn.gh{background:transparent;border-color:var(--line);color:var(--ink)}
.btn.gh:hover{border-color:var(--ink);background:var(--soft2)}
.btn.wa{background:#25D366;color:#fff}
.btn.wa:hover{background:#1EBE5A}
.btn.sm{min-height:36px;padding:8px 18px;font-size:14px}
/* 页头「询价」：浅金材质款（参考认证墙 .cert .ic 的淡金底 + 发丝金描边）。
   页头按钮是常驻元素，实心金渐变整条导航里最重；降为淡金后与认证图标同一材质，
   仍是导航里唯一的彩色元素，主视觉焦点交给页面本身。首页大 CTA 仍用实心 .btn.pri。 */
.btn.soft{background:var(--gold-l);border-color:var(--gold-line);color:var(--gold-d);font-weight:600;
  box-shadow:none}
.btn.soft:hover{background:#F6EDD6;border-color:var(--gold);color:var(--gold-d)}
.btn-row{display:flex;gap:12px;flex-wrap:wrap}
.center .btn-row{justify-content:center}

/* ---------- 顶栏 ---------- */
header.site{position:sticky;top:0;z-index:60;
  background:rgba(255,255,255,.72);
  backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);
  transition:background .35s var(--ease),border-color .35s var(--ease)}
header.site::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;
  background:var(--line2);opacity:0;transition:opacity .35s var(--ease)}
header.site.stuck{background:rgba(255,255,255,.86)}
header.site.stuck::after{opacity:1}
.hbar{display:flex;align-items:center;gap:clamp(10px,1.8vw,26px);height:52px;
  transition:height .35s var(--ease)}
header.site.stuck .hbar{height:48px}
.logo{display:flex;align-items:center;gap:9px;flex:0 0 auto}
/* LOGO 源图为白底不透明截图：给 img 本体加圆角，白底呈圆角卡片（参考用户 2026-10-15 提供样式） */
.logo img,footer.site .br .mark img{border-radius:10px}
.logo img{height:28px;width:auto;transition:height .35s var(--ease)}
header.site.stuck .logo img{height:25px}
nav.main{display:flex;gap:clamp(12px,2vw,30px);margin-left:auto}
nav.main a{font-size:14px;font-weight:400;color:var(--ink);opacity:.82;padding:6px 0;
  position:relative;transition:opacity .2s}
nav.main a:hover{opacity:1}
nav.main a.on{opacity:1;font-weight:500}
nav.main a.on::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1.5px;
  background:var(--ink);border-radius:2px}
.icon-btn{width:36px;height:36px;border-radius:50%;border:1px solid transparent;background:transparent;
  display:grid;place-items:center;flex:0 0 auto;font-size:15px;
  transition:background .2s var(--ease)}
.icon-btn:hover{background:var(--soft)}
.burger{display:none;width:38px;height:38px;border:0;background:transparent;border-radius:50%;
  flex-direction:column;justify-content:center;align-items:center;gap:4px}
.burger i{display:block;width:17px;height:1.5px;background:var(--ink);border-radius:2px;transition:transform .3s var(--ease)}
.lang{font-size:13.5px;font-weight:500;color:var(--ink);opacity:.8;padding:6px 4px;flex:0 0 auto}
.lang:hover{opacity:1}
#mnav{display:none;border-top:1px solid var(--line2);background:rgba(255,255,255,.96);
  backdrop-filter:blur(20px)}
#mnav .in{padding:10px 22px 20px;display:flex;flex-direction:column}
#mnav a{padding:14px 0;font-size:17px;font-weight:500;border-bottom:1px solid var(--line2)}

/* ---------- 首页 Hero（中心化大字） ---------- */
.hero{position:relative;overflow:hidden;background:var(--bg);
  padding:clamp(52px,7vw,104px) 0 clamp(56px,7vw,96px)}
.hero::before{content:"";position:absolute;left:50%;top:-32%;transform:translateX(-50%);
  width:1180px;height:760px;border-radius:50%;pointer-events:none;
  background:radial-gradient(circle,rgba(199,144,26,.10),rgba(199,144,26,0) 62%)}
.hero .in{position:relative;z-index:1;text-align:center;max-width:940px;margin:0 auto;padding:0 22px}
.hero h1{font-size:clamp(38px,6.6vw,84px);line-height:1.05;letter-spacing:-.035em;font-weight:600}
.hero h1 .hl{color:var(--gold-d)}
.hero .sub{color:var(--ink2);font-size:clamp(17px,1.7vw,21px);line-height:1.45;margin:22px auto 0;max-width:64ch}
/* CTA：与标题同轴居中。原写法只有 margin-top，flex 默认左对齐，
   造成按钮贴左、下方 ✓ 行与认证行居中，三行三个轴线。 */
.hero .btn-row{margin-top:clamp(30px,3.4vw,38px);justify-content:center;gap:14px}
.hero .btn-row .btn{min-width:164px}
/* 信任带：承诺（✓）× 认证（资质图标）收进同一条带，
   与 CTA 之间以细线分隔，避免两行小字糊成一团。 */
.hero .trust{display:flex;flex-direction:column;align-items:center;
  gap:clamp(12px,1.5vw,17px);
  max-width:min(100%,760px);margin:clamp(28px,3.4vw,40px) auto 0;
  padding-top:clamp(18px,2.2vw,24px);border-top:1px solid var(--line)}
.hero .pts{display:flex;gap:10px 26px;flex-wrap:wrap;justify-content:center;
  color:var(--ink-2);font-size:14.5px}
.hero .pts span{display:inline-flex;align-items:center;gap:7px}
.hero .pts b{color:var(--ok);font-weight:600}
/* 认证是「证据」，压在承诺之下：字号更小、字重更轻，避免两条小字互抢。 */
.hero .trust .cst b{color:var(--ink-2)}

/* 全宽产品舞台 */
.stage{position:relative;margin-top:clamp(40px,5.6vw,72px);padding:0 22px}
.stage .frame{position:relative;max-width:var(--max);margin:0 auto;border-radius:var(--r-l);
  background:linear-gradient(168deg,#FFFFFF 0%,#F3F3F5 100%);
  border:1px solid var(--line2);
  padding:clamp(28px,5vw,64px);display:flex;flex-direction:column;
  align-items:center;justify-content:center;overflow:hidden}
.stage .frame::after{content:"";position:absolute;left:50%;bottom:-46%;transform:translateX(-50%);
  width:820px;height:520px;border-radius:50%;pointer-events:none;
  background:radial-gradient(circle,rgba(199,144,26,.13),rgba(199,144,26,0) 66%)}
.stage img{position:relative;z-index:1;width:100%;max-width:620px;height:auto;
  filter:drop-shadow(0 30px 60px rgba(0,0,0,.14));
  mix-blend-mode:multiply;will-change:transform}
/* 主推海报（画册单页排版里的实景主视觉大图）：照片自带背景与光影，不能再用
   multiply 与展台底色叠乘（会发灰发脏），改成一张「嵌在展台里的画片」——
   圆角 + 双层柔和投影，尺寸也放大到 700px 让它撑得住主推位。 */
.stage img.poster{max-width:700px;border-radius:16px;mix-blend-mode:normal;filter:none;
  box-shadow:0 1px 2px rgba(11,13,17,.05),0 24px 52px -18px rgba(11,13,17,.34)}
.stage .tag{position:absolute;z-index:2;top:clamp(18px,3vw,34px);left:clamp(18px,3vw,34px);
  display:flex;align-items:center;gap:10px}
.stage .tag span{background:rgba(255,255,255,.86);backdrop-filter:blur(10px);
  border:1px solid var(--line2);border-radius:999px;padding:7px 15px;font-size:13px;font-weight:600}
.stage .tag span.g{background:var(--grad-gold);border-color:transparent;color:#3A2900}
/* 右下文案：原本悬浮在展台右下角——彩盒图是白底透明图，压上去看不出来；
   换成实景海报（照片是实心的，右下角正好是深色木桌）后深色字会读不清，
   故改为图片下方的静态一行，右对齐。 */
.stage .cap{position:relative;z-index:2;align-self:stretch;margin-top:clamp(14px,2vw,24px);
  text-align:right}
.stage .cap b{display:block;font-size:clamp(16px,1.8vw,21px);font-weight:600;letter-spacing:-.02em}
.stage .cap small{color:var(--mute);font-size:13px}

/* ---------- 通用图片展台 ---------- */
.art{position:relative;border-radius:var(--r-l);overflow:hidden;
  background:linear-gradient(168deg,#FFFFFF,#F3F3F5);border:1px solid var(--line2);
  aspect-ratio:4/3;display:grid;place-items:center;padding:clamp(20px,3vw,34px)}
/* 图片展台：比例写在 img 自身（aspect-ratio + height:auto），不依赖容器的
   aspect-ratio + 百分比高度——后者会被 grid 子项的自动最小尺寸撑破，
   竖图会把图框撑高、与前后的横图大小不一致。object-fit:contain 再保证
   图片本身不变形，letterbox 由展台背景统一兜底。 */
.art img{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:contain;
  mix-blend-mode:multiply}

/* ---------- 数据条（纯黑） ---------- */
.stats{background:var(--dark);color:#fff;position:relative;overflow:hidden}
.stats::after{content:"";position:absolute;left:50%;top:-70%;transform:translateX(-50%);
  width:1000px;height:900px;border-radius:50%;pointer-events:none;
  background:radial-gradient(circle,rgba(199,144,26,.20),rgba(199,144,26,0) 62%)}
.stats .grid{position:relative;z-index:1;display:grid;grid-template-columns:repeat(4,1fr)}
.stats .cell{padding:clamp(28px,3.6vw,46px) 16px;text-align:center;position:relative}
.stats .cell+.cell::before{content:"";position:absolute;left:0;top:26%;bottom:26%;width:1px;
  background:rgba(255,255,255,.14)}
.stats .n{font-size:clamp(30px,4vw,54px);font-weight:600;letter-spacing:-.04em;
  font-variant-numeric:tabular-nums;line-height:1}
.stats .n em{font-style:normal;color:var(--gold-v)}
.stats .l{color:#A1A1A6;font-size:13.5px;margin-top:10px;letter-spacing:-.01em}
/* g5：销售能力通栏 5 格数据带（内联 grid-template 会压过媒体查询，故用类） */
.stats .grid.g5{grid-template-columns:repeat(5,1fr)}
.stats .grid.g5 .n{font-size:clamp(26px,3vw,42px);white-space:nowrap}
.stats .grid.g5 .n em{font-size:.5em;letter-spacing:0;margin-left:2px;white-space:nowrap}
@media (max-width:900px){
  .stats .grid.g5{grid-template-columns:repeat(3,1fr)}
  .stats .grid.g5 .cell:nth-child(4)::before{display:none}
}
@media (max-width:560px){
  .stats .grid.g5{grid-template-columns:repeat(2,1fr)}
  .stats .grid.g5 .cell:nth-child(3)::before,
  .stats .grid.g5 .cell:nth-child(5)::before{display:none}
}
/* 销售渠道卡内「线上 / 线下」小标签 */
.chlab{margin-top:14px;font-size:12px;color:var(--mute);letter-spacing:.06em}
.chlab:first-of-type{margin-top:16px}
/* 卡片(.pblock)本身是 soft 底，胶囊默认也是 soft 底会隐形 → 仅此卡内改白底描边 */
.chcard .badge{background:#fff;border:1px solid var(--line)}
/* 建筑系列详情页逐款介绍：金色竖线引文式，收紧留白 */
.archnote{max-width:860px;border-left:3px solid var(--gold);padding:2px 0 2px 26px}
.archnote .eyebrow{margin-bottom:12px}
.archnote p{font-size:14.5px;line-height:1.95;color:var(--ink2);text-align:justify}

/* ---------- 网格 ---------- */
.grid-s,.grid-p{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(16px,2vw,24px)}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(16px,2.2vw,26px)}
.grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(18px,2.6vw,32px)}
/* 产品筛选：隐藏状态必须落在栅格子项 .cell 上（而非内层 .pcard），
   否则外层仍占一个单元，筛完会留下成片空格。
   .off 同时承载「筛选掉」与「不在当前翻页页」，所以翻页也走同一条规则。 */
.grid-p>.cell.off{display:none}

/* ---------- 分页 ---------- */
.pager{display:flex;gap:8px;justify-content:center;align-items:center;flex-wrap:wrap;
  margin:clamp(28px,3.4vw,40px) 0 6px}
.pager button{min-width:40px;height:40px;padding:0 12px;border-radius:999px;
  border:1px solid var(--line-strong);background:transparent;color:var(--ink-2);
  font:inherit;font-size:14px;cursor:pointer;
  transition:background .24s var(--ease),color .24s var(--ease),border-color .24s var(--ease)}
.pager button:hover:not(.on):not(:disabled){border-color:var(--ink);color:var(--ink)}
.pager button.on{background:var(--ink);color:#fff;border-color:var(--ink);font-weight:500}
.pager button:disabled{opacity:.35;cursor:default}
.pager .dots{color:var(--mute);padding:0 2px;user-select:none}

/* ---------- 系列瓦片 ---------- */
.cat{display:block;border-radius:var(--r);background:var(--soft);overflow:hidden;
  transition:transform .4s var(--ease),box-shadow .4s var(--ease)}
.cat:hover{transform:translateY(-4px);box-shadow:var(--sh-h)}
.cat .im{aspect-ratio:4/3;display:grid;place-items:center;padding:20px;overflow:hidden}
/* 系列瓦片：图框保持 4:3 与卡片边框不变，图片整体缩小 20%（width:81%），
   竖图/横图都完整落在框内，大小一致。 */
.cat .im img{display:block;width:81%;height:auto;aspect-ratio:4/3;object-fit:contain;
  mix-blend-mode:multiply;transition:transform .55s var(--ease)}
.cat:hover .im img{transform:scale(1.05)}
.cat .tx{padding:0 22px 24px}
.cat b{display:block;font-size:19px;font-weight:600;letter-spacing:-.022em}
.cat small{color:var(--ink2);font-size:13.5px;display:block;margin-top:7px;line-height:1.4}
/* 系列海报瓦片：画册主视觉铺满图框（cover），底部加一道轻渐变，文字仍落在下方 .tx。
   配色仅用 ink / soft / gold，不引入红系。 */
.cat.poster .im{aspect-ratio:3/2;padding:0;position:relative}
.cat.poster .im img{width:100%;height:100%;aspect-ratio:3/2;object-fit:cover;mix-blend-mode:normal}
.cat.poster .im::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(29,29,31,0) 58%,rgba(29,29,31,.34) 100%)}
.cat.poster .tx{position:relative;z-index:1}

/* ---------- 系列页顶海报横幅 ---------- */
.shero{position:relative;overflow:hidden;display:flex;align-items:flex-end;color:#fff;
  isolation:isolate;min-height:clamp(300px,40vw,480px);background:var(--ink)}
.shero.has-media .shero-media{position:absolute;inset:0;z-index:-1}
.shero.has-media .shero-media img{width:100%;height:100%;object-fit:cover;display:block}
.shero-ov{position:absolute;inset:0;
  background:linear-gradient(100deg,rgba(29,29,31,.92) 0%,rgba(29,29,31,.70) 40%,
  rgba(29,29,31,.22) 74%,rgba(29,29,31,.34) 100%)}
.shero-in{position:relative;z-index:1;padding:clamp(26px,4.6vw,60px) 0;max-width:790px}
.shero .eyebrow{color:var(--gold-v)}
.shero h1{color:#fff;font-size:clamp(30px,4.6vw,52px);line-height:1.05;letter-spacing:-.03em;font-weight:600;
  margin:6px 0 0;text-wrap:balance}
.shero .lead{color:rgba(255,255,255,.88);margin-top:14px;max-width:62ch}
.shero .badges{margin-top:18px}
.shero .badge{background:rgba(255,255,255,.14);color:#fff;border:1px solid rgba(255,255,255,.30)}
.shero .badge.ok{background:rgba(255,255,255,.14);color:#BFF3D2;border-color:rgba(191,243,210,.36)}
.shero-plain{color:var(--ink);background:var(--soft)}
.shero-plain .eyebrow{color:var(--gold-d)}
.shero-plain h1{color:var(--ink)}
.shero-plain .lead{color:var(--ink2)}
.shero-plain .badge{background:#fff;color:var(--ink-2);border:1px solid var(--line)}
.shero-plain .badge.ok{background:#EAF7EF;color:#0B7A44;border-color:transparent}

/* ---------- 产品卡片 ---------- */
.pcard{display:block;border-radius:var(--r);background:var(--soft);overflow:hidden;position:relative;
  transition:transform .4s var(--ease),box-shadow .4s var(--ease)}
.pcard:hover{transform:translateY(-4px);box-shadow:var(--sh-h)}
.pcard .im{aspect-ratio:4/3;display:grid;place-items:center;padding:16px;position:relative}
/* 与系列瓦片 .cat .im img 同一套：4:3 展台 + 81% 宽（在 90% 基础上再缩 10%）。
   1:1 方框会让图片按宽度撑满、高度随固有比例飘（1.11 的图占框 90%、
   1.35 的只占 74%），视觉大小不一；4:3 框让所有图按高度归一。 */
.pcard .im img{display:block;width:81%;height:auto;aspect-ratio:4/3;object-fit:contain;
  mix-blend-mode:multiply;transition:transform .55s var(--ease)}
.pcard:hover .im img{transform:scale(1.055)}
.pcard .tx{padding:0 18px 20px}
.pcard .nm{font-weight:500;font-size:15px;line-height:1.35;letter-spacing:-.018em;min-height:2.7em;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pcard .meta{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:11px;
  font-size:12.5px;color:var(--mute)}
.pcard .meta .pcs{background:rgba(255,255,255,.9);border-radius:999px;padding:4px 11px;font-weight:500;color:var(--ink-2)}
.tag-new,.tag-hot{position:absolute;top:14px;left:14px;font-size:12px;font-weight:600;z-index:2;
  padding:5px 12px;border-radius:999px;letter-spacing:-.005em;backdrop-filter:blur(8px)}
.tag-new{background:rgba(255,255,255,.88);color:var(--ink)}
.tag-hot{background:var(--grad-gold);color:#3A2900}

/* ---------- 筛选胶囊 ---------- */
.chips{display:flex;gap:9px;flex-wrap:wrap;margin:26px 0 4px}
.chip{border:1px solid var(--line-strong);background:transparent;border-radius:999px;padding:9px 18px;
  font-size:14.5px;font-weight:400;color:var(--ink-2);
  transition:background .24s var(--ease),color .24s var(--ease),border-color .24s var(--ease)}
.chip.on{background:var(--ink);color:#fff;border-color:var(--ink);font-weight:500}
.chip:hover:not(.on){border-color:var(--ink);color:var(--ink)}

/* 二级分类（著名建筑系列 → 中国 / 国外）：金线缩进 + 文字标签，与一级胶囊区分开 */
.chips.sub{position:relative;margin:6px 0 6px;padding-left:16px;align-items:center}
/* 紧跟一级胶囊下面时给 10px 呼吸位。
   曾经写成 margin-top:-14px：与 .chips 自身的 margin-bottom:4px 折叠后净 -10px，
   二级整行直接压在一级胶囊最后一行上（胶囊折行越多压得越明显，用户截图即此）。 */
.chips + .chips.sub{margin-top:10px}
.chips.sub::before{content:"";position:absolute;left:2px;top:5px;bottom:5px;width:2px;
  background:var(--gold);border-radius:2px}
.chips.sub .slab{font-size:13px;color:var(--mute);letter-spacing:.02em;padding-right:2px;white-space:nowrap}
/* .chips 是 display:flex，会把 [hidden] 顶掉，必须显式关掉 */
.chips.sub[hidden]{display:none}
.chip.s{padding:6px 15px;font-size:13.5px}
.chip.s.on{background:var(--gold);color:#3A2900;border-color:var(--gold)}
.chip.s:hover:not(.on){border-color:var(--gold-d);color:var(--gold-d)}

/* ---------- 横向轨道（Apple 配件区） ---------- */
.rail-wrap{position:relative}
.rail-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;flex-wrap:wrap}
.rail-nav{display:flex;gap:10px}
.rail-nav button{width:38px;height:38px;border-radius:50%;border:0;background:rgba(0,0,0,.06);
  display:grid;place-items:center;font-size:17px;line-height:1;color:var(--ink);
  transition:background .24s var(--ease),opacity .24s var(--ease)}
.rail-nav button:hover{background:rgba(0,0,0,.12)}
.rail-nav button[disabled]{opacity:.3;cursor:default}
.rail{display:flex;gap:22px;overflow-x:auto;scroll-snap-type:x mandatory;
  scrollbar-width:none;-ms-overflow-style:none;padding:6px 0 10px;
  scroll-padding-left:0}
.rail::-webkit-scrollbar{display:none}
.rail>*{flex:0 0 clamp(230px,24vw,286px);scroll-snap-align:start}
.rail .pcard{background:var(--soft)}
.rail-bar{position:relative;height:3px;border-radius:2px;background:var(--line2);overflow:hidden;margin-top:6px}
.rail-bar i{position:absolute;left:0;top:0;bottom:0;width:20%;border-radius:2px;
  background:var(--ink-2);transition:transform .2s linear}
.on-dark .rail-bar{background:rgba(255,255,255,.2)}
.on-dark .rail-bar i{background:#fff}

/* ---------- 深色横幅 ---------- */
.band{background:var(--dark);color:#fff;position:relative;overflow:hidden}
.band::after{content:"";position:absolute;right:-100px;top:-140px;width:520px;height:520px;border-radius:50%;
  background:radial-gradient(circle,rgba(199,144,26,.24),rgba(199,144,26,0) 68%)}
.band .in{padding:clamp(52px,6.4vw,88px) 0;position:relative;z-index:1}
.band h2{color:#fff;letter-spacing:-.032em}
.band h2.h3s{font-size:clamp(22px,2.6vw,32px)}
.band p{color:#A1A1A6;margin-top:16px;max-width:68ch;font-size:17px}
.band .btn.gh{background:transparent;border-color:rgba(255,255,255,.42);color:#fff}
.band .btn.gh:hover{border-color:#fff;background:rgba(255,255,255,.1)}

/* ---------- 面包屑 ---------- */
/* 面包屑已移除（用户要求），用等高占位保住页头与 H1 之间原本的呼吸位 */
.crumb-gap{height:26px}
.crumb-gap + section .wrap{padding-top:2px}

/* ---------- 产品详情 ---------- */
.detail{display:grid;grid-template-columns:minmax(0,1.04fr) minmax(0,.96fr);
  gap:clamp(28px,4.6vw,64px);padding:22px 0 clamp(52px,7vw,92px);align-items:start}
.detail>*{min-width:0}
.gal{position:sticky;top:84px}
.gal .main{border-radius:var(--r-l);background:linear-gradient(168deg,#FFFFFF,#F3F3F5);
  border:1px solid var(--line2);
  aspect-ratio:1/1;display:grid;place-items:center;padding:clamp(20px,3.4vw,40px);position:relative;
  overflow:hidden}
.gal .main img{display:block;width:100%;height:auto;aspect-ratio:1/1;object-fit:contain;
  mix-blend-mode:multiply;transition:transform .6s var(--ease),opacity .3s linear}
.gal .main:hover img{transform:scale(1.04)}
.gal .zoom{position:absolute;right:16px;bottom:16px;background:rgba(255,255,255,.86);color:var(--ink);
  border:1px solid var(--line2);border-radius:999px;padding:9px 16px;font-size:13px;font-weight:500;
  backdrop-filter:blur(10px)}
.gal .th{display:flex;gap:11px;margin-top:16px;overflow-x:auto;padding-bottom:4px;scrollbar-width:none}
.gal .th::-webkit-scrollbar{display:none}
.gal .th button{flex:0 0 76px;width:76px;height:76px;border:1px solid var(--line2);border-radius:14px;
  background:var(--soft);padding:8px;overflow:hidden;
  transition:border-color .24s var(--ease),box-shadow .24s var(--ease),transform .24s var(--ease)}
.gal .th button:hover{transform:translateY(-2px)}
.gal .th button.on{border-color:var(--gold);box-shadow:0 0 0 3px var(--gold-l)}
.gal .th img{display:block;width:100%;height:auto;aspect-ratio:1/1;object-fit:contain;
  mix-blend-mode:multiply}
/* 品名标题：字号 = 版面预算 / 名称 em 宽度（--emw 由构建时按字符宽度算好写入行内）
   —— 长品名自动降字号，保证桌面端单行排下，不再被 text-wrap:balance 从半行处折行。 */
.info h1{--tbud:545px;font-size:clamp(22px,calc(var(--tbud)/var(--emw,13)),42px);letter-spacing:-.032em}
@media (max-width:1219px){.info h1{--tbud:calc((100vw - 20px)*.46)}}
.badges{display:flex;gap:9px;flex-wrap:wrap;margin-top:18px}
.badge{display:inline-flex;align-items:center;gap:6px;background:var(--soft);border-radius:999px;
  padding:7px 15px;font-size:13px;font-weight:400;color:var(--ink-2)}
.badge.red,.badge.yel{background:var(--gold-l);color:var(--gold-d);font-weight:500}
.badge.ok{background:#EAF7EF;color:#0B7A44}
.spec{margin-top:26px;border-radius:var(--r);overflow:hidden;width:100%;border-collapse:separate;
  border-spacing:0;font-size:14.5px;background:var(--soft)}
.spec tr:not(:last-child) td{border-bottom:1px solid var(--line2)}
.spec td{padding:13px 18px;vertical-align:top}
.spec td:first-child{color:var(--ink2);width:38%;font-weight:400}
/* 联系信息表里的电话 / 邮箱带 tel: / mailto:，给一个轻量可点提示
   （全局 a 是 color:inherit;text-decoration:none，不提示就完全看不出来） */
.spec td a{text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:3px;
  transition:color .2s var(--ease),text-decoration-color .2s var(--ease)}
.spec td a:hover{color:var(--gold-d);text-decoration-color:currentColor}
.buy{margin-top:26px;border-radius:var(--r);padding:24px;background:var(--soft)}
.buy .t{font-weight:600;font-size:17px;letter-spacing:-.02em}
.buy .d{color:var(--ink2);font-size:14.5px;margin-top:8px}
.buy .btn-row{margin-top:18px}
.promise{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:24px}
.promise div{background:var(--soft2);border:1px solid var(--line2);border-radius:var(--r-s);
  padding:14px;font-size:13px;color:var(--ink2);text-align:center}
.promise b{display:block;color:var(--ink);font-size:13.5px;font-weight:600;margin-bottom:4px}
.pblocks{margin-top:26px;display:grid;gap:14px}
.pblock{border-radius:var(--r);padding:22px 24px;background:var(--soft)}
.pblock h3{font-size:16px;font-weight:600}
.pblock p{color:var(--ink2);font-size:14.5px;margin-top:9px;line-height:1.55}
.pblock ul{margin:10px 0 0 18px;padding:0;color:var(--ink2);font-size:14.5px}
.pblock li{margin:5px 0}

/* ---------- 服务瓦片 ---------- */
.svc{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(16px,2.2vw,24px)}
.svc a{display:block;border-radius:var(--r-l);padding:clamp(26px,3vw,38px);background:var(--soft);
  transition:transform .4s var(--ease),box-shadow .4s var(--ease)}
.svc a:hover{transform:translateY(-4px);box-shadow:var(--sh)}
/* 图标瓦片：与认证墙 .cert .ic 同一套材质（浅金底 + 发丝金描边 + 金色细线图标）。
   原来是实心金渐变 + 系统表情字符——表情各平台渲染不一、尺寸失控，
   问号表情还是红色字形（违反禁红铁律），已全部换成本文件的线型 SVG。 */
.svc .ic{width:46px;height:46px;border-radius:13px;background:var(--gold-l);
  border:1px solid var(--gold-line);color:var(--gold-d);display:grid;place-items:center;
  transition:background .26s var(--ease),border-color .26s var(--ease)}
.svc a:hover .ic{background:#F6EDD6;border-color:var(--gold)}
.svc .ic .ci{width:25px;height:25px;display:block}
.svc h2{margin-top:20px;font-size:21px;letter-spacing:-.024em}
.svc p{color:var(--ink2);font-size:14.5px;margin-top:9px}
.svc .more{margin-top:16px;font-size:15px}

/* ---------- 说明书查询 / 表单 ---------- */
.msearch{display:flex;gap:11px;flex-wrap:wrap;margin-top:26px}
.msearch input{flex:1 1 260px;min-width:0;min-height:52px;border:1px solid var(--line-strong);
  border-radius:var(--r-btn);padding:13px 22px;font:inherit;background:#fff;
  transition:border-color .24s var(--ease),box-shadow .24s var(--ease)}
.msearch input:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 4px var(--gold-l)}
#mres{margin-top:22px}
.mrow{display:flex;align-items:center;gap:16px;border-radius:var(--r);padding:15px 18px;
  background:var(--soft);margin-bottom:11px;flex-wrap:wrap;
  transition:box-shadow .3s var(--ease),transform .3s var(--ease)}
.mrow:hover{transform:translateY(-2px);box-shadow:var(--sh)}
.mrow .im{width:58px;height:58px;border-radius:14px;background:#fff;flex:0 0 auto;
  display:grid;place-items:center;overflow:hidden}
.mrow .im img{display:block;width:100%;height:auto;aspect-ratio:1/1;object-fit:contain;
  mix-blend-mode:multiply}
.mrow .tx{flex:1 1 180px;min-width:0}
.mrow b{font-size:15px;font-weight:600}
.mrow small{display:block;color:var(--mute);font-size:13px;margin-top:3px}
.faq{border-radius:var(--r);overflow:hidden;background:var(--soft)}
.faq details{border-bottom:1px solid var(--line2)}
.faq details:last-child{border-bottom:0}
.faq summary{padding:20px 24px;font-weight:500;cursor:pointer;list-style:none;font-size:16.5px;
  display:flex;justify-content:space-between;gap:16px;align-items:center;
  transition:background .24s var(--ease)}
.faq summary:hover{background:rgba(0,0,0,.03)}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"＋";color:var(--gold-d);font-weight:400;font-size:17px;line-height:1;
  transition:transform .3s var(--ease)}
.faq details[open] summary::after{content:"－"}
.faq .a{padding:0 24px 22px;color:var(--ink2);font-size:15px;line-height:1.6}

form.inq{display:grid;gap:22px}
form.inq .row2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
form.inq input,form.inq textarea,form.inq select{width:100%;min-height:52px;border:1px solid var(--line-strong);
  border-radius:14px;padding:14px 18px;font:inherit;background:#fff;
  transition:border-color .24s var(--ease),box-shadow .24s var(--ease)}
form.inq textarea{min-height:130px;resize:vertical}
form.inq input:focus,form.inq textarea:focus,form.inq select:focus{outline:none;border-color:var(--gold);
  box-shadow:0 0 0 4px var(--gold-l)}
/* 标签与输入框：组内紧（8px），组间由 form gap:22px 拉开——
   此前 margin-bottom:-6px 会让标签文字与输入框边框重叠 6px（实测 label 底 216 > input 顶 210），
   且组内距（负）小于组间距（14px），分组关系颠倒。 */
form.inq label{font-size:13.5px;font-weight:500;color:var(--ink2);margin-bottom:8px;display:block;line-height:1.3}
.ok-box{background:#EAF7EF;color:#0B7A44;border-radius:14px;padding:15px 18px;font-size:14.5px}

/* ---------- 页脚（Apple 浅色式） ----------
   五栏：品牌简介 / 产品中心 / 服务与支持 / 联系我们 / 公众号二维码。
   前四栏用弹性比例，末栏 auto 固定为二维码卡片的实际宽度（96px 图 + 内边距），
   这样加公众号时不用挤其他三栏的比例。 */
footer.site{background:var(--soft);color:var(--ink2);padding:clamp(44px,5.4vw,64px) 0 26px;
  font-size:13px;line-height:1.6}
footer.site .grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1.15fr auto;gap:clamp(20px,3vw,44px)}
footer.site h2{color:var(--ink);font-size:13px;font-weight:600;margin-bottom:14px;letter-spacing:-.01em}
footer.site a{transition:color .2s}
footer.site a:hover{color:var(--ink);text-decoration:underline;text-underline-offset:3px}
footer.site .lk{display:flex;flex-direction:column;gap:9px}
footer.site a.ext{display:inline-flex;align-items:center;gap:4px;font-weight:700;color:var(--ink)}
footer.site .br{display:flex;align-items:center;gap:10px;margin-bottom:14px}
footer.site .br .mark{display:grid;place-items:center;background:#fff;border-radius:10px;padding:7px 10px}
footer.site .br .mark img{height:26px;width:auto;display:block}
footer.site .ct{display:flex;flex-direction:column;gap:9px}
/* 公众号二维码：白卡 + 发丝线描边，与页头 Logo 徽标同一材质 */
footer.site .mp .qr{display:grid;place-items:center;width:112px;height:112px;background:#fff;
  border:1px solid var(--line);border-radius:14px;padding:8px}
footer.site .mp .qr img{width:96px;height:96px;display:block}
footer.site .mp small{display:block;margin-top:10px;color:var(--mute);font-size:12px;line-height:1.55;
  max-width:130px}
footer.site .bar{margin-top:40px;padding-top:20px;border-top:1px solid var(--line);
  display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;font-size:12.5px;color:var(--mute)}
/* 悬浮按钮（WhatsApp/询价/回顶部）固定在视口右下，窄于 ~1400px 时会盖住页脚最右列——
   公众号二维码和 ICP 备案号都在那里，给整列和版权行留出按钮宽度。 */
@media (max-width:1400px){
  footer.site .mp{margin-right:58px}
  footer.site .bar{padding-right:58px}
}

/* ---------- 关于万格（画册 10P 内容页） ---------- */
/* 图文两列：图 + 内容，移动端单列 */
.abrow{display:grid;grid-template-columns:1fr 1fr;gap:clamp(20px,2.6vw,40px);align-items:center}
.abrow>div{min-width:0}
.abrow img{width:100%;height:auto;border-radius:var(--r);display:block;background:#fff}
.abrow img.tr{background:transparent}
/* 不对称两列（资质与荣誉：证书架图左、奖项列表右）；内联 style 会压过媒体查询，故用类 */
.abrow.im135{grid-template-columns:1.35fr 1fr}
/* 荣誉奖项紧凑列表：金色底线分隔 */
.medals{list-style:none;margin:16px 0 0;padding:0}
.medals li{display:flex;gap:12px;align-items:baseline;justify-content:space-between;
  padding:11px 2px;border-bottom:1px dashed var(--line2)}
.medals li:last-child{border-bottom:0}
.medals b{font-size:15px;font-weight:600;color:var(--ink);letter-spacing:-.01em}
.medals small{font-size:12px;color:var(--mute);text-align:right}
/* 流程步骤条：横向 6 步 / 纵向（flow-v）5 步 */
.flow{display:grid;grid-template-columns:repeat(6,1fr);gap:12px}
.flow.flow-v{grid-template-columns:1fr;gap:10px}
.flow .st{background:var(--soft);border-radius:16px;padding:16px 16px 14px;position:relative}
.flow .st b{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:50%;
  background:var(--ink);color:#fff;font-size:13px;font-weight:600;margin-bottom:10px}
.flow .st h4{font-size:14.5px;font-weight:600;color:var(--ink);margin-bottom:5px;letter-spacing:-.015em}
.flow .st p{font-size:12.5px;color:var(--ink2);line-height:1.5}
/* ODM 客户墙 */
.wall{display:flex;flex-wrap:wrap;gap:10px}
.wall .badge{font-size:13px;padding:8px 15px}
/* 数据卡小字 */
.stats .cell small,.cell small{display:block;margin-top:5px;font-size:11.5px;color:var(--mute);line-height:1.4}
/* 英文小字（跟在中文标题后） */
.sub-en{font-size:11.5px;font-weight:500;color:var(--mute);letter-spacing:.02em;margin-top:2px}
.pblock .sub-en{margin-top:3px}
/* 五项保障条 */
.promise{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}
.promise .pcell{background:var(--soft);border-radius:16px;padding:16px;text-align:center}
.promise .pcell b{display:block;font-size:15px;font-weight:600;color:var(--ink);margin-bottom:4px}
.promise .pcell span{display:block;font-size:10.5px;color:var(--gold-d);letter-spacing:.04em;margin-bottom:6px}
.promise .pcell small{font-size:12px;color:var(--ink2)}

/* ---------- 资质认证：图标墙 ----------
   图标全部是 currentColor 单色矢量（certs.py 自绘），CSS 决定颜色：
   浅色底 → 金色图标 + 墨黑字；深色底 → 白/金图标 + 白字。
   铁律：这里不出现任何红系色值。 */
.certwall{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px}
.cert{display:flex;gap:12px;align-items:flex-start;background:#fff;border:1px solid var(--line2);
  border-radius:var(--r-s);padding:15px 16px;
  transition:border-color .24s var(--ease),box-shadow .24s var(--ease),transform .24s var(--ease)}
.cert:hover{border-color:var(--gold-line);box-shadow:var(--sh-s);transform:translateY(-2px)}
.cert .ic{flex:0 0 40px;width:40px;height:40px;border-radius:11px;display:grid;place-items:center;
  background:var(--gold-l);color:var(--gold-d)}
.cert .ic .ci{width:23px;height:23px;display:block}
.cert b{display:block;font-size:14.5px;font-weight:600;color:var(--ink);letter-spacing:-.015em}
.cert small{display:block;font-size:12px;color:var(--ink2);line-height:1.45;margin-top:3px}
/* 深色区块内的认证卡 */
.certwall.dark .cert{background:rgba(255,255,255,.055);border-color:rgba(255,255,255,.14)}
.certwall.dark .cert:hover{border-color:rgba(255,209,0,.42);box-shadow:none}
.certwall.dark .cert .ic{background:rgba(255,209,0,.13);color:var(--gold-v)}
.certwall.dark .cert b{color:#fff}
.certwall.dark .cert small{color:#A1A1A6}
.certwall.dark .cert .ic .ci{color:var(--gold-v)}

/* ---------- 资质认证：一行式认证条（hero / 页头） ---------- */
.certstrip{display:flex;flex-wrap:wrap;gap:8px 0;align-items:center;justify-content:center}
.cst{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--ink2);
  padding:0 15px;line-height:1.2}
.cst+.cst{border-left:1px solid var(--line2)}
.cst .ci{width:17px;height:17px;color:var(--gold-d);flex:none}
.cst b{font-weight:600;color:var(--ink);letter-spacing:-.01em}
/* hero 内的认证条改由 .trust 的 gap 控制间距，不再单独加外边距 */
.hero .certstrip{margin-top:0}
.certstrip.left{justify-content:flex-start}
.certstrip.left .cst:first-child{padding-left:0}
/* 认证徽章内嵌小图标（产品页 / 系列页头部） */
.badge .bci{display:inline-flex;align-items:center;margin-right:5px}
.badge .bci .ci{width:13px;height:13px;display:block}
.shero .badge .bci .ci{color:var(--gold-v)}
@media (max-width:1024px){
  .abrow{grid-template-columns:1fr}
  .abrow.im135{grid-template-columns:1fr}
  .flow{grid-template-columns:repeat(3,1fr)}
  .promise{grid-template-columns:repeat(3,1fr)}
}
@media (max-width:760px){
  .flow{grid-template-columns:repeat(2,1fr)}
  .promise{grid-template-columns:repeat(2,1fr)}
  .abrow img{border-radius:14px}
  .certwall{grid-template-columns:1fr}
  .cst{font-size:12px;padding:0 11px}
  .cert{padding:13px 14px}
}
/* ---------- 浮动客服 ---------- */
.fab{position:fixed;right:20px;bottom:22px;z-index:70;display:flex;flex-direction:column;gap:10px}
.fab a{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;color:#fff;font-size:18px;
  box-shadow:0 8px 24px rgba(0,0,0,.18);background:#25D366;
  transition:transform .3s var(--ease),box-shadow .3s var(--ease)}
.fab a.top{background:var(--ink);font-size:16px}
.fab a:hover{transform:translateY(-3px);box-shadow:0 12px 30px rgba(0,0,0,.24)}

/* ---------- 搜索浮层 ---------- */
#search{position:fixed;inset:0;background:rgba(0,0,0,.42);backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);z-index:90;display:none}
#search.on{display:block;animation:fadein .28s var(--ease)}
@keyframes fadein{from{opacity:0}to{opacity:1}}
#search .sclose{position:absolute;top:14px;right:16px;width:34px;height:34px;border:0;border-radius:50%;
  background:rgba(0,0,0,.06);font-size:15px;line-height:1;display:grid;place-items:center}
#search .sclose:hover{background:rgba(0,0,0,.12)}
#search .panel{position:relative;max-width:720px;margin:9vh auto 0;background:#fff;border-radius:24px;padding:22px;
  box-shadow:0 30px 80px rgba(0,0,0,.28);animation:pop .34s var(--ease)}
@keyframes pop{from{opacity:0;transform:translateY(14px) scale(.985)}to{opacity:1;transform:none}}
#search input{width:100%;min-height:56px;border:1px solid var(--line-strong);border-radius:var(--r-btn);
  padding:15px 22px;font:inherit;transition:border-color .24s var(--ease),box-shadow .24s var(--ease)}
#search input:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 4px var(--gold-l)}
#sres{max-height:60vh;overflow:auto;margin-top:14px}
#sres a{display:flex;gap:14px;align-items:center;padding:11px;border-radius:14px;
  transition:background .2s var(--ease),transform .2s var(--ease)}
#sres a:hover{background:var(--soft);transform:translateX(3px)}
#sres .im{width:56px;height:56px;border-radius:12px;background:var(--soft);overflow:hidden;flex:0 0 auto}
#sres img{display:block;width:100%;height:auto;aspect-ratio:1/1;object-fit:contain;
  mix-blend-mode:multiply}
#sres b{display:block;font-size:14.5px;font-weight:500}
#sres small{color:var(--mute);font-size:12.5px}

/* ==========================================================================
   动效系统
   说明：渐入使用独立的 translate / scale 属性（而非 transform），
        这样卡片自身的 hover 位移 transform 不会被覆盖，两者可叠加。
   ========================================================================== */
/* 滚动渐入 */
html.js .rv{opacity:0;translate:0 30px;
  transition:opacity .85s var(--ease),translate .85s var(--ease);
  transition-delay:calc(var(--d,0) * 1ms);will-change:opacity,translate}
/* 状态类用 is-in：不能叫 in，否则会命中 .hero .in / .band .in 这类布局类 */
html.js .rv.is-in{opacity:1;translate:0 0}
html.js .rv.s{scale:.97;transition:opacity .85s var(--ease),translate .85s var(--ease),scale .85s var(--ease)}
html.js .rv.s.is-in{scale:1}
/* 重播入场前的瞬时复位（筛选切换时用），必须压过上面的 transition */
html.js .rv.replay{transition:none !important}

/* hero 入场 */
html.js .hi{opacity:0;translate:0 22px;
  transition:opacity .95s var(--ease),translate .95s var(--ease);
  transition-delay:calc(var(--d,0) * 1ms)}
html.js.ready .hi{opacity:1;translate:0 0}

/* LCP 关键文字（各页最大标题）：只位移，绝不碰 opacity。
   原因：元素 opacity<1 期间不计入 LCP 候选，等淡入结束才登记，
   实测把首页 LCP 从 ~540ms 拖到 3072ms。 */
html.js .hi-t{translate:0 22px;transition:translate .95s var(--ease);
  transition-delay:calc(var(--d,0) * 1ms)}
html.js.ready .hi-t{translate:0 0}

/* 悬浮呼吸（仅产品主图展台） */
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-11px)}}
.stage .frame.float img{animation:float 7s ease-in-out infinite}

/* 视差层 */
[data-par]{will-change:transform}

@media (prefers-reduced-motion:reduce){
  *{animation-duration:.001ms !important;animation-iteration-count:1 !important;
    transition-duration:.001ms !important;scroll-behavior:auto !important}
  html.js .rv,html.js .hi,html.js .hi-t{opacity:1 !important;translate:none !important;scale:none !important}
}

/* ---------- 响应式 ---------- */
@media (max-width:1180px){
  .grid-s,.grid-p{grid-template-columns:repeat(3,1fr)}
  nav.main{gap:16px}
}
@media (max-width:1024px){
  .detail{grid-template-columns:1fr;gap:28px}
  .info h1{--tbud:calc(100vw - 72px)}
  .gal{position:static;max-width:600px}
  nav.main,.hbar>.btn.pri,.search-btn{display:none}
  .burger{display:flex}
  footer.site .grid{grid-template-columns:1fr 1fr 1fr}
  .stats .grid{grid-template-columns:repeat(2,1fr)}
  .stats .cell:nth-child(3)::before{display:none}
  .svc,.grid-3{grid-template-columns:repeat(2,1fr)}
  .grid-2{grid-template-columns:1fr}
  .hero .in{max-width:100%}
}
@media (max-width:760px){
  body{font-size:16px}
  .wrap{padding:0 18px}
  .grid-s,.grid-p{grid-template-columns:repeat(2,1fr);gap:12px}
  .pcard .nm{font-size:14px}
  .pcard .meta{font-size:11.5px}
  .pcard .tx{padding:0 14px 16px}
  .cat .tx{padding:0 16px 18px}
  .promise{grid-template-columns:1fr}
  .svc,.grid-3{grid-template-columns:1fr}
  form.inq .row2{grid-template-columns:1fr}
  .spec td{padding:12px 14px;font-size:14px}
  .spec td:first-child{width:42%}
  #search .panel{margin:3vh 14px 0;padding:16px}
  .fab{right:13px;bottom:15px;gap:9px}
  .fab a{width:44px;height:44px;font-size:16px}
  .gal .main{aspect-ratio:4/3}
  .gal .main img{aspect-ratio:4/3}
  .gal .th button{flex:0 0 64px;width:64px;height:64px}
  .buy{padding:18px}
  .sec{padding:clamp(46px,10vw,68px) 0}
  .stage{padding:0 14px}
  .stage .frame{padding:26px 18px}
  .stage .cap{display:none}
  .rail{gap:14px}
  .rail>*{flex:0 0 68vw}
  .rail-nav{display:none}
}
@media (max-width:420px){
  .grid-s,.grid-p{grid-template-columns:1fr}
  .stats .grid{grid-template-columns:1fr}
  .stats .cell::before{display:none !important}
  footer.site .grid{grid-template-columns:1fr;gap:26px}
  footer.site .mp .qr{width:120px;height:120px}
  footer.site .mp .qr img{width:104px;height:104px}
  /* 窄屏：按钮按内容宽度居中，避免 164px 最小宽把整行顶满甚至折行 */
  .hero .btn-row{gap:10px}
  .hero .btn-row .btn{min-width:0;padding:12px 20px}
  .hero .trust{gap:14px}
  .hero .pts{font-size:13px;gap:8px 16px}
  .lead{font-size:16px}
}
@media print{
  header.site,.fab,.band,.rail-nav,footer.site .grid{display:none}
}
