/* ==========================================================================
   SINREGE — homepage design system (pilot, v2)
   Apple-referenced: restrained palette, one accent, 8-step type scale,
   128/64 section rhythm, 52px glass chrome, pill buttons, soft elevation.
   Loaded on the three `body.home` pages — index.html, products.html
   (page-catalogue) and guides/index.html. The other standard pages load
   style.css only; the three redirect stubs are standalone.
   Rules are scoped `.home` (plus the products-catalogue overrides at the end
   of this file) so they outrank the shared style.css defaults; the reset
   block below neutralises the old hairline-grid look deliberately.
   ========================================================================== */

.home{
  /* 颜色一律取后台「主题与外观」的 token（/themes/active/tokens.css），
     这里只保留原值作 fallback —— 写死就等于后台改色首页不跟。 */
  --ink:var(--color-ink-900,#0a0a0c);
  --ink-2:var(--color-ink-600,#545458);
  --ink-3:var(--color-ink-400,#86868b);
  --surface:var(--color-surface,#f5f5f7);
  --surface-2:#fafafc;
  --line:var(--color-hairline,#e3e3e6);
  --brand:var(--color-accent,#16436c);
  --brand-2:var(--color-accent-soft,#0f3355);
  --radius:20px;
  --pill:980px;
  --sec:128px;
  --ease:cubic-bezier(.2,.8,.2,1);
  /* 兼容老模版里仍在用到的变量名（--color-ink-6/9/4、--color-hairline
     由 tokens.css 提供，这里不再重复声明，否则会反过来盖掉 token） */
  --color-line:var(--color-hairline,#e3e3e6);
  --color-brand:var(--brand);
  --color-sage-ink:#86868b;
  background:var(--color-bg,#fff);
  color:var(--ink);
  font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  font-size:17px;
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
}

.home .container{max-width:1120px; margin:0 auto; padding:0 24px}

/* ── 页头：52px 毛玻璃 ───────────────────────────────────────────── */
.home .header{
  position:sticky; top:0; z-index:60; height:52px;
  background:rgba(255,255,255,.72);
  -webkit-backdrop-filter:saturate(180%) blur(20px);
  backdrop-filter:saturate(180%) blur(20px);
  border-bottom:1px solid rgba(0,0,0,.08);
  display:flex; align-items:center;
}
.home .header__inner{display:flex; align-items:center; gap:34px; width:100%; height:52px; min-height:52px}
.home .logo{gap:8px; color:var(--ink); font-size:16px}
.home .logo__mark{width:18px; height:18px; opacity:.85}
.home .logo__text{
  font-family:"Instrument Sans",Inter,sans-serif; font-size:16px; font-weight:600;
  letter-spacing:-.01em; white-space:nowrap;
}
.home .nav{display:flex; align-items:center; gap:26px; margin-left:auto}
.home .nav__link{
  font-size:14px; color:var(--ink-2); padding:6px 0; border-bottom:0;
  transition:color .2s var(--ease);
}
.home .nav__link:hover,.home .nav__link[aria-current="true"]{color:var(--ink); border-bottom-color:transparent}
.home .nav__caret{transform:rotate(45deg) translateY(-1px); width:7px; height:7px; opacity:.7}
.home .header__actions{display:flex; align-items:center; gap:14px; margin-left:6px}
.home .cart-link{display:inline-flex; align-items:center; gap:6px; font-size:13px; color:var(--ink-2)}
.home .cart-link__label{display:none}
.home .cart-link__count{background:var(--brand)}
.home .burger{display:none}

/* ── 按钮：胶囊 ─────────────────────────────────────────────────── */
.home .btn{
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  height:44px; min-height:0; padding:0 24px; border-radius:var(--pill);
  font-size:15px; font-weight:500; letter-spacing:-.01em; line-height:1; cursor:pointer;
  border:1px solid transparent;
  transition:background .2s var(--ease), transform .25s var(--ease), color .2s var(--ease), border-color .2s var(--ease);
}
.home .btn--primary{background:var(--brand); color:#fff}
.home .btn--primary:hover{background:var(--brand-2); transform:translateY(-1px)}
.home .btn--ghost{background:transparent; border-color:#d6d6da; color:var(--ink)}
.home .btn--ghost:hover{border-color:var(--ink); background:transparent}
.home .btn--on-image{background:#fff; color:var(--ink)}
.home .btn--on-image:hover{background:#ececf0}
.home .btn--on-image-ghost{background:transparent; border-color:rgba(255,255,255,.42); color:#fff; -webkit-backdrop-filter:none; backdrop-filter:none}
.home .btn--on-image-ghost:hover{background:rgba(255,255,255,.14); border-color:rgba(255,255,255,.72)}
.home .btn--sm{height:34px; min-height:0; padding:0 16px; font-size:14px}
.home .link-arrow{display:inline-flex; align-items:center; gap:6px; font-size:15px; font-weight:500; color:var(--brand)}
.home .link-arrow::after{content:"›"; font-size:17px; line-height:1; transition:transform .25s var(--ease)}
.home .link-arrow:hover::after{transform:translateX(3px)}

/* ── Hero：全幅图 + 单侧遮罩 ─────────────────────────────────────── */
.home .hero{position:relative; display:block; overflow:hidden; background:#0a0a0c; color:#fff; padding:0; min-height:0}
.home .hero__media{position:absolute; inset:0}
.home .hero__media img{width:100%; height:100%; object-fit:cover; object-position:62% 50%; opacity:.94}
/* 遮罩沿用 style.css 里那层暖褐 scrim（已按对比度实测调过），这里只补左侧压深 */
.home .hero__media::after{
  background:
    linear-gradient(100deg, rgba(8,10,14,.9) 0%, rgba(8,10,14,.62) 46%, rgba(8,10,14,.06) 84%),
    linear-gradient(0deg, rgba(8,10,14,.5), rgba(8,10,14,0) 44%);
}
.home .hero__inner{
  position:relative; z-index:2;
  min-height:min(80vh, 660px); display:flex; align-items:center;
  padding-top:88px; padding-bottom:88px;
}
.home .hero__text{max-width:600px}
.home .hero__title{
  font-family:"Instrument Sans",Inter,sans-serif;
  font-size:clamp(40px,5.2vw,72px); font-weight:500; letter-spacing:-.035em; line-height:1.03;
  margin:0; max-width:15ch; text-wrap:balance;
}
.home .hero__sub{
  margin-top:22px; font-size:19px; line-height:1.6; font-weight:300;
  color:rgba(255,255,255,.84); max-width:50ch;
}
.home .hero__ctas{display:flex; align-items:center; gap:12px; margin-top:34px; flex-wrap:wrap}
.home .hero__facts{
  display:flex; flex-wrap:wrap; gap:8px; margin-top:30px; padding-top:0;
  border-top:0; font-size:12px; letter-spacing:normal;
}
.home .hero__facts span + span::before{content:none; margin:0}
.home .hero__facts span{
  font-size:12px; letter-spacing:.1em; text-transform:uppercase;
  color:rgba(255,255,255,.76); border:1px solid rgba(255,255,255,.26);
  border-radius:var(--pill); padding:7px 12px; line-height:1;
}
/* 询价区复用了 .hero__facts 但落在浅色底上 —— 换成描边墨色胶囊 */
.home #inquiry .hero__facts span{color:var(--ink-2); border-color:#dcdce0}

/* ── 区块节奏 ───────────────────────────────────────────────────── */
.home .section{padding:var(--sec) 0}
.home .section--surface{background:var(--surface)}
.home .section__head{max-width:760px; margin-bottom:0}
.home .eyebrow{
  font-family:"Instrument Sans",Inter,sans-serif; font-size:12px; font-weight:500;
  letter-spacing:.18em; text-transform:uppercase; color:var(--ink-3); margin:0;
}
.home .section__title{
  font-family:"Instrument Sans",Inter,sans-serif;
  font-size:clamp(30px,3.3vw,46px); font-weight:500; letter-spacing:-.032em; line-height:1.08;
  margin:14px 0 0;
}
.home .section__lead{margin-top:18px; font-size:19px; line-height:1.6; font-weight:300; color:var(--ink-2); max-width:62ch}

/* ── 产品线：4 条分隔行（无图、无卡片，最轻视觉重量） ────────────── */
.home .cats{display:block; margin-top:44px; border-top:0}
.home .cats__item,
.home .cats__item:not(:first-child){
  display:grid;
  grid-template-columns:56px minmax(0,264px) minmax(0,1fr) 128px;
  align-items:baseline; column-gap:32px;
  padding:30px 0; margin:0; border:0; border-top:1px solid var(--line);
  border-radius:0; background:none; color:var(--ink);
  transition:border-color .3s var(--ease);
}
.home .cats__item:last-child{border-bottom:1px solid var(--line)}
.home .cats__item:hover{border-top-color:rgba(10,10,12,.24)}
.home .cats__num{
  position:static; display:block; background:none; padding:0; border-radius:0;
  font-family:"Instrument Sans",Inter,sans-serif; font-size:12px; letter-spacing:.18em;
  color:#b8bcc4; line-height:1.9;
}
.home .cats__name,
.home .cats__desc{display:block}
.home .cats__name{
  font-family:"Instrument Sans",Inter,sans-serif; font-size:27px; font-weight:500;
  letter-spacing:-.026em; line-height:1.2; margin:0; background:none; color:var(--ink);
  transition:color .3s var(--ease);
}
.home .cats__item:hover .cats__name{color:var(--brand)}
.home .cats__desc{
  font-size:15.5px; font-weight:300; line-height:1.6; color:var(--ink-2);
  margin:0; max-width:640px;
}
.home .cats__item .link-arrow{
  margin:0; padding-top:0; justify-self:end; font-size:14.5px; color:var(--brand); white-space:nowrap;
}
.home .cats__item .link-arrow::after{transition:transform .3s var(--ease)}
.home .cats__item:hover .link-arrow::after{transform:translateX(3px)}

/* ── 精选产品卡 ─────────────────────────────────────────────────── */
.home .products__grid{
  display:grid; grid-template-columns:repeat(3,1fr); gap:20px; margin-top:52px;
  border:0; background:none;
}
.home .pcard{
  display:flex; flex-direction:column; background:#fff; border-radius:var(--radius);
  overflow:hidden; transition:transform .35s var(--ease), box-shadow .35s var(--ease);
}
.home .pcard:hover{transform:translateY(-3px); box-shadow:0 18px 40px rgba(0,0,0,.07)}
.home .pcard__media{aspect-ratio:1/1; display:flex; align-items:center; justify-content:center}
.home .pcard__media--photo{background:#f0f0f3}
.home .pcard__media--photo::before,
.home .pcard__media--photo::after{display:none}
.home .pcard__media img{width:100%; height:100%; object-fit:cover; display:block}
.home .pcard__body{padding:22px 22px 24px; display:flex; flex-direction:column; gap:0; flex:1}
.home .pcard__name{font-family:"Instrument Sans",Inter,sans-serif; font-size:20px; font-weight:500; letter-spacing:-.02em; margin:0}
.home .pcard__type{margin:6px 0 0; font-size:14px; color:var(--ink-3); font-weight:300}
.home .pcard__specs{margin-top:18px; border-top:0; padding-top:0; font-size:14px}
.home .pcard__specs div{
  display:flex; justify-content:space-between; gap:12px; align-items:baseline;
  padding:9px 0; border-bottom:1px solid var(--line);
}
.home .pcard__specs div span:first-child{color:var(--ink-3)}
.home .pcard__specs div span:last-child{color:var(--ink); text-align:right}
.home .pcard__foot{display:flex; align-items:center; justify-content:space-between; gap:10px; margin-top:auto; padding-top:20px}
.home .pcard__moq{font-size:13px; color:var(--ink-3)}

/* 无实拍图的精选卡：不用模糊剪影（在真图旁边像加载失败），改成编号 + 品类文字版块 */
.home .pcard__media--type{
  flex-direction:column; gap:10px;
  background:linear-gradient(160deg,#fbfbfd 0%,#eef0f3 100%);
}
.home .pcard__media--type::before,
.home .pcard__media--type::after{display:none}
.home .pcard__media--type span{
  position:static; width:auto; height:auto; margin:0; padding:0;
  overflow:visible; clip-path:none; white-space:normal;
}
.home .pcard__type-num{
  font-family:"Instrument Sans",Inter,sans-serif; font-size:46px; font-weight:300;
  letter-spacing:-.04em; line-height:1; color:#c3c7cf;
}
.home .pcard__type-key{font-size:11px; letter-spacing:.2em; text-transform:uppercase; color:var(--ink-3)}

/* ── Why us / 认证：沿用 structure，只校尺度 ────────────────────── */
.home .why__body{font-size:17px; font-weight:300; color:var(--ink-2)}
.home .why__list{border-top:1px solid var(--line)}
.home .why__list li{padding:16px 0; border-bottom:1px solid var(--line)}
.home .why__list strong{font-size:15px}
.home .why__list span{font-size:14px; color:var(--ink-2)}
.home .why__idx{color:var(--ink-3)}
.home .certs{border-top:1px solid var(--line); margin-top:44px}
.home .certs__item{border-bottom:1px solid var(--line); border-right:1px solid var(--line)}
.home .certs__market{font-size:12px; color:var(--ink-3)}
.home .certs__names{font-family:"Instrument Sans",Inter,sans-serif; font-size:20px; font-weight:500; letter-spacing:-.02em}
.home .certs__note{color:var(--ink-3)}

/* ── FAQ ────────────────────────────────────────────────────────── */
.home .faq{border-top:1px solid var(--line); margin-top:44px; max-width:880px}
.home .faq details{border-bottom:1px solid var(--line)}
.home .faq summary{font-size:19px; font-weight:500; letter-spacing:-.015em; padding:24px 40px 24px 0}
.home .faq__answer{font-size:16px; font-weight:300; color:var(--ink-2)}

/* ── 询价表单：圆角输入、无边框卡片感 ───────────────────────────── */
.home .field label{font-size:13px; color:var(--ink-2); font-weight:500}
.home .field input,
.home .field select,
.home .field textarea{border-radius:12px; border-color:#dcdce0; min-height:48px; font-size:15px; background:#fff}
.home .field input:focus,
.home .field select:focus,
.home .field textarea:focus{border-color:var(--ink); box-shadow:0 0 0 3px rgba(10,10,12,.06)}
.home .file-drop{border-radius:12px; border-color:#dcdce0}
.home .file-drop__btn{border-radius:var(--pill); background:#fff; border-color:#dcdce0}
.home .form__captcha{display:none}
.home .form__privacy a{color:var(--brand)}

/* ── 页脚：5 列 ─────────────────────────────────────────────────── */
.home .footer{
  background:var(--surface); border-top:1px solid var(--line);
  padding:64px 0 48px; color:var(--ink-2);
}
.home .footer__grid{display:grid; grid-template-columns:1.5fr repeat(4,1fr); gap:40px}
.home .footer__grid > div > h4{
  font-family:Inter,sans-serif; font-size:12px; font-weight:500; letter-spacing:.14em;
  text-transform:uppercase; color:var(--ink-3); margin:0 0 14px;
}
.home .footer ul{list-style:none; margin:0; padding:0}
.home .footer li{margin:0}
.home .footer li a{display:block; font-size:14px; color:var(--ink-2); padding:5px 0}
.home .footer li a:hover{color:var(--ink)}
.home .footer .logo__text{font-size:17px}
.home .footer__lang{
  display:flex; flex-wrap:wrap; gap:14px; margin-top:40px; padding-top:18px;
  border-top:1px solid var(--line); font-size:13px; color:var(--ink-3); align-items:center;
}
.home .footer__lang a{color:var(--ink-2)}
.home .footer__lang [aria-current="true"]{color:var(--ink); font-weight:500}
.home .footer__legal{
  display:flex; flex-wrap:wrap; gap:18px; align-items:center;
  margin-top:14px; padding-top:18px; border-top:1px solid var(--line);
  font-size:12px; color:var(--ink-3);
}
.home .footer__legal a{color:var(--ink-3)}
.home .footer__legal a:hover{color:var(--ink)}

/* ── 响应式 ─────────────────────────────────────────────────────── */
@media (max-width:1200px){
  .home .cats__item, .home .cats__item:not(:first-child){
    grid-template-columns:48px minmax(0,240px) minmax(0,1fr) 118px; column-gap:24px;
  }
}
/* 与 style.css 的 1120 同步：nav 收起要早于版式断点，否则 1025~1120 之间 header 溢出 */
@media (max-width:1120px){
  .home .nav{display:none}
  .home .burger{
    display:inline-flex; flex-direction:column; justify-content:center; gap:4px;
    width:44px; height:44px; margin-left:auto; background:none; border:0; border-radius:0; padding:0;
  }
  .home .burger span{display:block; width:17px; height:1.5px; background:var(--ink); margin:0 auto; border-radius:2px}
  .home .header__actions{margin-left:auto}
}
@media (max-width:1000px){
  .home{--sec:96px}
  .home .products__grid{grid-template-columns:repeat(2,1fr)}
  .home .footer__grid{grid-template-columns:1fr 1fr}
}
@media (max-width:720px){
  .home .header__inner{gap:16px}
  .home .header__actions{margin-left:auto; gap:12px}
  .home .header__actions .btn{display:none}
}
@media (max-width:720px){
  .home{--sec:64px; font-size:17px}
  .home .container{padding:0 20px}
  .home .hero__inner{min-height:auto; padding-top:72px; padding-bottom:64px}
  .home .hero__title{font-size:38px; max-width:100%}
  .home .hero__sub{font-size:17px; margin-top:16px}
  .home .hero__ctas{margin-top:26px; gap:10px}
  .home .btn{height:46px; padding:0 22px; font-size:15px}
  .home .hero__ctas .btn{flex:1 1 100%; max-width:320px}
  .home .hero__facts{gap:6px; margin-top:24px}
  .home .cats{margin-top:30px}
  .home .cats__item, .home .cats__item:not(:first-child){
    grid-template-columns:38px minmax(0,1fr); column-gap:14px; row-gap:8px; padding:22px 0;
  }
  .home .cats__num{line-height:1.5}
  .home .cats__name{font-size:21px}
  .home .cats__desc{grid-column:2; font-size:14.5px; max-width:100%}
  .home .cats__item .link-arrow{grid-column:2; justify-self:start; margin-top:2px}
  .home .products__grid{grid-template-columns:1fr; margin-top:34px}
  .home .footer__grid{grid-template-columns:1fr; gap:28px}
  .home .footer{padding:48px 0 36px}
  .home .why{grid-template-columns:1fr}
  .home .certs{grid-template-columns:1fr 1fr}
  .home .inquiry{grid-template-columns:1fr}
}
/* 移动端底栏：文案与按钮都别折行（375px 下会挤成两行两行） */
@media (max-width:430px){
  .home .quote-bar__text{display:none}
  .home .quote-bar__inner{justify-content:flex-end}
  .home .quote-bar .btn{white-space:nowrap}
}
@media (prefers-reduced-motion:reduce){
  .home *{transition:none !important; animation:none !important}
}

/* 产品卡标题现在带详情页链接：沿用正文颜色，悬停才出现下划线，避免整块卡片看起来像一堆超链接 */
.home .pcard__name a{color:inherit;text-decoration:none}
.home .pcard__name a:hover{text-decoration:underline;text-underline-offset:3px}

/* ═══════════════════════════════════════════════════════════════════════════
   内页复用（2026-11-04）：products.html 与 guides 列表页的 body 也带 `.home`，
   只借用「token + 卡模块」，首页专属的 hero / 128px 区块节奏不参与 ——
   那两页用的是 .block / .pdp 骨架，`.home .section` 不会命中。
   这样产品卡与文章卡和首页是**同一份定义**，不存在两套代码各自漂移。
   ═══════════════════════════════════════════════════════════════════════════ */

/* 浅底带：首页白卡落在 #f5f5f7 上才有立体感，内页是纯白底 ⇒ 卡片等于消失。
   给卡片区一条满幅浅底（= 首页 .section--surface 的等价物）。
   `box-shadow 0 0 0 100vmax` + `clip-path` 是满幅出血的标准写法：
   不依赖 vw（会把滚动条宽度算进去，横向溢出 15px）。 */
.band{
  background:var(--surface);
  box-shadow:0 0 0 100vmax var(--surface);
  clip-path:inset(0 -100vmax);
  padding-top:clamp(40px,5vw,68px);
  padding-bottom:clamp(40px,5vw,68px);
}

/* 标题与导语取首页的字面（同一套字距/字重），页面骨架与断点不动 */
.home .pdp__title,
.home .block__title{
  font-family:"Instrument Sans",Inter,sans-serif;
  font-weight:500; letter-spacing:-.032em;
}
.home .pdp__title{font-size:clamp(30px,3.4vw,44px); line-height:1.08}
.home .pdp__lead,
.home .block__lead{font-weight:300; color:var(--ink-2)}

/* 产品目录（products.html）：分组节奏 + 卡片栅格 */
.home .cat-group + .cat-group{margin-top:clamp(34px,4vw,52px)}
.home .cat-group__title{
  font-family:"Instrument Sans",Inter,sans-serif; font-size:21px; font-weight:500;
  letter-spacing:-.02em; margin:0 0 18px; padding-top:26px;
  border-top:1px solid var(--line);
}
.home .cat-group:first-of-type .cat-group__title{padding-top:0; border-top:0}
.home .cat-group .products__grid{margin-top:0}
@media (max-width:1000px){
  .home .cat-group .products__grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:720px){
  .home .cat-group .products__grid{grid-template-columns:minmax(0,1fr)}
}

/* 指南列表：卡片之间不需要再额外留白，浅底带自己带内边距 */
.home #articles .pcard__media{background:#f0f0f3}

/* ── 产品目录：4 个分组合并成一条连续栅格 ────────────────────────────────
   分组各占一行时，只有 1~2 张卡的分组会剩下 2/3 的空槽（Air purifiers、
   Dehumidifiers 各一张），看起来像图没加载。合并后与首页精选完全同构：
   一条 3 列栅格，卡片按 品类顺序 连续排下去。
   分组标题退到无障碍层（SEO 文字与 #锚点都还在），品类改由卡片眉标承担 ——
   眉标用 `::before` + 分组 id 生成，不动后端卡片模板。 */
.page-catalogue #catalogue{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:20px}
.page-catalogue #catalogue > .section__head{grid-column:1/-1; margin-bottom:8px}
.page-catalogue #catalogue .cat-group,
.page-catalogue #catalogue .cat-group .products__grid{display:contents}
.page-catalogue #catalogue .cat-group__title{
  position:absolute; width:1px; height:1px; margin:-1px; padding:0;
  overflow:hidden; clip-path:inset(50%); white-space:nowrap; border:0;
}
.page-catalogue #catalogue .pcard__body::before{
  display:block; margin:0 0 10px; font-size:11px; font-weight:500;
  letter-spacing:.16em; text-transform:uppercase; color:var(--ink-3);
}
.page-catalogue #catalogue #humidifiers .pcard__body::before{content:"Humidifiers"}
.page-catalogue #catalogue #aroma-diffusers .pcard__body::before{content:"Aroma diffusers"}
.page-catalogue #catalogue #air-purifiers .pcard__body::before{content:"Air purifiers"}
.page-catalogue #catalogue #dehumidifiers .pcard__body::before{content:"Dehumidifiers"}
@media (max-width:1000px){
  .page-catalogue #catalogue{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:720px){
  .page-catalogue #catalogue{grid-template-columns:minmax(0,1fr)}
}

/* ── 卡片封面必须真填满方框（2026-11-04 修偏移）─────────────────────────
   DB 生成的产品卡结构是 <div class="pcard__media"><a><img></a></div>：
   ① `width/height:100%` 是写在 img 上的，而它的包含块是中间那层 `<a>`
      （inline、高度 auto）⇒ 百分比高度解不出来，图退化成"按内容尺寸"排版：
      344 的方框里图只有 314、还贴右，四周露出一圈米色占位渐变；
   ② 这类卡没有 `--photo` 类，style.css 给的器物剪影 `::before` 与雾光 `::after`
      仍在绘制，就算图铺满也会被压上一层假影。
   两处一起修：把 `<a>` 拉成 100% 的定高盒子，并在真有图时关掉占位装饰。 */
.home .pcard__media > a{display:block; width:100%; height:100%}
.home .pcard__media:has(img)::before,
.home .pcard__media:has(img)::after{display:none}
.home .pcard__media:has(img){background:#f0f0f3}

/* ── 产品类目：缩略图 + 类目名 + 一句说明（2026-11-05 紧凑版） ──────────
   原来是 4 条纯文字分隔行；改成带图后仍要保持「分类导航」的轻量：
   桌面 4 列、图 4:3 限高 190；平板 2 列；手机直接换行列表（小额图 + 两行说明）。 */
.home .cats{
  display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:16px;
  margin-top:30px; border-top:0;
}
.home .cats__item,
.home .cats__item:not(:first-child){
  display:block; padding:0; margin:0; border:0; background:none; row-gap:0; column-gap:0;
}
.home .cats__media{
  display:block; width:100%; aspect-ratio:4 / 3; max-height:190px; overflow:hidden; margin:0;
  background:var(--color-surface); border:0;
}
.home .cats__media img{
  display:block; width:100%; height:100%; object-fit:cover;
  transition:transform .45s var(--ease);
}
.home .cats__item:hover .cats__media img{transform:scale(1.03)}
.home .cats__head{display:flex; align-items:baseline; gap:8px; padding-top:9px}
.home .cats__num{font-size:10.5px; letter-spacing:.16em; line-height:1; color:#b8bcc4}
.home .cats__name{font-size:17px; line-height:1.3; letter-spacing:-.02em}
.home .cats__name::after{content:" →"; font-family:Inter,sans-serif; font-size:13px; color:var(--brand)}
.home .cats__desc{
  margin:3px 0 0; font-size:13px; line-height:1.45; font-weight:300; color:var(--ink-2);
  max-width:100%; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;
}
@media (max-width:1200px){
  .home .cats{gap:14px}
}
@media (max-width:1080px){
  /* 保持四列：改两列会让 4:3 图被限高压成横条、产品被横切 */
  .home .cats{gap:14px 12px}
  .home .cats__name{font-size:15px}
  .home .cats__desc{font-size:12.5px}
}
@media (max-width:720px){
  /* 手机：分类菜单形态 —— 小额图占左列、名称与说明占右列，四行一条线排下来 */
  .home .cats{display:grid; grid-template-columns:minmax(0,1fr); gap:0; margin-top:22px; border-top:1px solid var(--line)}
  .home .cats__item,
  .home .cats__item:not(:first-child){
    display:grid; grid-template-columns:64px minmax(0,1fr); column-gap:12px;
    align-items:center; padding:8px 0 !important; border-bottom:1px solid var(--line);
  }
  .home .cats__media{grid-row:1 / span 2; aspect-ratio:4 / 3; max-height:none}
  .home .cats__head{grid-column:2; padding-top:0}
  .home .cats__num{display:none}
  .home .cats__name{font-size:15px; line-height:1.25; letter-spacing:-.015em}
  .home .cats__name::after{font-size:12px}
  .home .cats__desc{grid-column:2; margin-top:2px; font-size:12px; line-height:1.4}
}

/* ════════════════════════════════════════════════════════════════════════
   产品目录页（body.page-catalogue + main.pdp）：文字分隔行变体
   2026-11-09：原先放在 products.html 的页内 <style>，现集中到本文件维护。
   顺序要求：必须排在上方「2026-11-05 紧凑版」之后 —— 与
   `.home .cats__item:not(:first-child)` 特异性相同（(0,3,0)），靠后出现取胜。
   ════════════════════════════════════════════════════════════════════════ */
/* 2026-10-28 产品线改为无图分隔行（与首页口径一致，沿用本页配色） */
.pdp .cats{display:block; border-top:1px solid var(--color-hairline)}
/* 2026-11-08：`.home .cats__item:not(:first-child)` 是 (0,3,0)，而单独
   `.pdp .cats__item` 只有 (0,2,0) —— 特异性输一档，第 2/3/4 行会被压回
   display:block 竖排。补上 :not(:first-child) 变体拉平到 (0,3,0)，
   再靠“排在文件末尾”取胜。 */
.pdp .cats__item,
.pdp .cats__item:not(:first-child){
  display:grid; grid-template-columns:56px minmax(0,260px) minmax(0,1fr) 132px;
  align-items:baseline; column-gap:32px; padding:28px 0 !important;
  border:0; border-bottom:1px solid var(--color-hairline); background:none; text-decoration:none;
}
.pdp .cats__item:not(:first-child){padding-left:0 !important}
.pdp .cats__num{font-size:12px; letter-spacing:.18em; color:var(--color-ink-400); line-height:1.9}
.pdp .cats__name{font-family:var(--font-display); font-size:26px; font-weight:500; letter-spacing:-.026em; line-height:1.2; color:var(--color-ink-900); transition:color .3s var(--ease)}
.pdp .cats__desc{margin:0; font-size:15.5px; line-height:1.6; color:var(--color-ink-600); max-width:none}
.pdp .cats__item .link-arrow{justify-self:end; white-space:nowrap; font-size:14.5px; color:var(--color-accent)}
.pdp .cats__item:hover .cats__name{color:var(--color-accent)}
.cat-group + .cat-group{margin-top:clamp(26px,3vw,40px)}
.cat-group__title{font-family:var(--font-display);font-size:20px;font-weight:500;letter-spacing:-.02em;margin:0 0 14px;padding-top:18px;border-top:1px solid var(--color-hairline)}
.cat-group:first-of-type .cat-group__title{padding-top:0;border-top:0}
@media (max-width:767px){
  .pdp .cats__item{grid-template-columns:38px minmax(0,1fr); column-gap:14px; row-gap:8px; padding:20px 0 !important}
  .pdp .cats__name{font-size:21px}
  .pdp .cats__desc{grid-column:2; max-width:100%}
  .pdp .cats__item .link-arrow{grid-column:2; justify-self:start}
}
/* 目录分组：卡片版式统一交给本文件上方的共享卡模块（首页同款），
   这里只留锚点落点——吸顶头 52px，别把分组标题压住。 */
.cat-group{scroll-margin-top:78px}
