/* ==========================================================================
   GPULoom · Design v2  (U1 令牌层 / 字体统一 · U0 兜底)
   --------------------------------------------------------------------------
   目的：把「已现代化的内容层（--gp-*，见 part-a/part-b/about-refresh）」与
         「仍用 Arial + --gd-* + 方角的旧外壳层（header/shell-subpage/ui-product/
          shell-search/shell-upload/ui-inquiry/gp-seo-blocks）」统一到同一套令牌，
          并补上 modern 能力（毛玻璃）与无障碍/动效基线。

   加载：由 80-design 模块的 gpuloom_dp_enqueue_layer()（默认 enqueue）在
         part-a / part-b 之后入队 assets/design-v2.css（同名指纹路径直出）。
         并且令牌/字体规则用 `html:root` / `html ` **抬升特异性**，从而无视
         源序赢过 head 里的合并样式表、旧外壳层，以及 body 内联的旧外壳副本。

   ⚠️ 三条硬前提（技能铁律）：
     1) 原选择器带 `!important` 的，这里必须**同样带 `!important`**（并抬特异性）；
     2) **字体要么全改要么全不改**：把实测的 Arial 选择器**原样重写**（见 §2）；
     3) **媒体查询不增加特异性**：优先 fluid `clamp()`；必须重写断点的才写同名断点。

   ⚠️ `assets/header.css` 由 build-header-css.py 生成，**禁止手改**；本层通过
      「入队 + `html` 前缀抬特异性」覆盖它。改 header 的“源头”要动生成器或其输入。

   ⚠️ 特异性说明（2026-10-09 实测）：部分手工页（/catalog/ /about/ 等）的
      post_content 里**内联**了一份旧外壳样式 `<style id="gpuloom-subpage-system">`
      （shell-subpage.css 的副本），它位于 **body 内、head 之后**。
      同特异性 + 同为 !important 时文档顺序里它更靠后 → 会压过本层。
      因此本层的令牌与字体规则**统一加 `html` / `html:root` 前缀抬升特异性**
      （技能正解：对无法靠顺序取胜的旧层用「提升特异性」），从而无视顺序取胜。
   ========================================================================== */

/* ==========================================================================
   §1  令牌：在既有 --gp-* 之上扩展（不重复定义，只补缺）
   ========================================================================== */
html:root{
  /* --- 强调色阶（沿用品牌蓝 #0672ce）--- */
  --gp-accent:         #0672ce;
  --gp-accent-strong:  #055ba8;
  --gp-accent-soft:    #e8f3fd;
  --gp-accent-ring:    rgb(6 114 206 / .35);

  /* --- 毛玻璃（仅悬浮层用，见 §3）--- */
  --gp-glass-bg:       rgb(255 255 255 / .72);
  --gp-glass-line:     rgb(255 255 255 / .55);
  --gp-glass-blur:     blur(14px) saturate(1.4);
  --gp-glass-tint:     rgb(14 40 65 / .55);   /* 深色玻璃（深蓝带/头部滚动态）*/

  /* --- 等宽（型号/SKU/规格数字）--- */
  --gp-font-mono: ui-monospace, "SFMono-Regular", "Roboto Mono", Menlo, Consolas, monospace;

  /* --- 基底面（§7/§8/§12 引用；此前未定义导致 var() 失效，V1 补齐）--- */
  --gp-surface: #ffffff;

  /* --- 字号阶梯（1.25 模数；hero/大标题用 clamp 覆盖）--- */
  --gp-text-xs:   .75rem;    /* 12 */
  --gp-text-sm:   .8125rem;  /* 13 */
  --gp-text-base: .875rem;   /* 14 */
  --gp-text-md:   1rem;      /* 16 */
  --gp-text-lg:   1.125rem;  /* 18 */
  --gp-text-xl:   1.25rem;   /* 20 */
  --gp-text-2xl:  1.5625rem; /* 25 */
  --gp-text-3xl:  1.9375rem; /* 31 */
  --gp-text-4xl:  2.4375rem; /* 39 */

  /* --- 间距（4px 基）--- */
  --gp-space-1:4px;  --gp-space-2:8px;  --gp-space-3:12px; --gp-space-4:16px;
  --gp-space-5:20px; --gp-space-6:24px; --gp-space-8:32px; --gp-space-10:40px;
  --gp-space-12:48px;--gp-space-16:64px;--gp-space-20:80px;--gp-space-24:96px;

  /* --- 旧令牌别名：统一到 --gp-*（含 header.css/subpage 的 --gd-*）--- */
  --gd-blue:      var(--gp-accent);
  --gd-blue-dark: var(--gp-accent-strong);
  --gd-navy:      var(--gp-ink);
  --gd-pale:      var(--gp-accent-soft);
  --gd-gray:      var(--gp-surface-2);
  --gd-line:      var(--gp-hairline);
  --gd-text:      var(--gp-ink);
  --gd-muted:     var(--gp-ink-3);
  --ga-r-m:       var(--gp-r-md);
}

/* ==========================================================================
   §2  字体统一（“全改”）：把实测的 Arial 选择器**原样重写** + 同带 !important
   --------------------------------------------------------------------------
   来源 = 对 assets/*.css 的实测 grep（header / shell-subpage / shell-search /
   shell-upload / ui-product / ui-inquiry / gp-seo-blocks / about-refresh）。
   `html` 前缀抬升特异性 → 同带 !important 时无视文档顺序赢过旧外壳层（含
   body 内联的 gpuloom-subpage-system）。先设 body 基线，再逐个覆盖自带
   font / font-family 的元素。
   ========================================================================== */
/* 2.1 基线（含更高特异性的 body.* 规则，必须显式重写）*/
html body,
html body:not(.home),
html body.single-product,
html body.search{
  font-family: var(--gp-font-sans) !important;
}

/* 2.2 容器（后代继承）：header / subpage / product / seo-blocks / about */
html .gd-global-header,
html .gd-page-hero,
html .gd-static-content,
html .gd-global-footer,
html .gpp-header,
html .gp-links,
html .gp-hub,
html .gp-hubdir,
html .gnx-static,
html .gp-postlinks,
html .ga-page,
html .woocommerce-products-header,
html .woocommerce-products-header *{
  font-family: var(--gp-font-sans) !important;
}

/* 2.3 自带 font 简写 / font-family 的元素（原带 !important，须同样 !important）*/
html .gd-global-nav a, html .gd-global-nav button,
html .gpp-nav a, html .gpp-nav button,
html .gd-global-search input,
html .gd-language select,
html .gd-mega__head, html .gd-mega__subhead,
html .gd-static-content > div,
html .gd-static-content h1, html .gd-static-content h2,
html .gd-static-content h3, html .gd-static-content h4,
html .gpi-field input, html .gpi-field textarea,
html .gpi-contact-form input[type="file"],
html .woocommerce-result-count,
html body.search .woocommerce-products-header,
html body.search .woocommerce-products-header *,
html body.search .woocommerce-result-count{
  font-family: var(--gp-font-sans) !important;
}

/* 文件选择按钮（伪元素，原 :13px Arial）*/
html .gpi-field input[type="file"]::file-selector-button,
html .gpi-contact-form input[type="file"]::file-selector-button{
  font-family: var(--gp-font-sans) !important;
}

/* 2.4 首页正文（.gd-* 由页面内联 CSS 定义；U1 曾漏，U4 补齐）*/
html .gd,
html .gd h1, html .gd h2, html .gd h3, html .gd h4, html .gd p,
html .gd-story h1, html .gd-story h2{
  font-family: var(--gp-font-sans) !important;
}

/* 2.5 型号 / 数据用等宽（tabular 数字）——放在最后，靠顺序覆盖上面的容器/元素规则 */
html .gd-spec-table td:first-child,
html .gp-links__id, html .gp-hub__sku, html .gp-hubdir__n,
html .gpp-spec-key, html .gpc-sku, html .gd-model,
html .woocommerce-product-details__short-description table td:first-child{
  font-family: var(--gp-font-mono) !important;
  font-variant-numeric: tabular-nums;
}

/* ==========================================================================
   §3  毛玻璃工具类 + 回退（仅悬浮/瞬时层可用，见 §6.1）
   ========================================================================== */
.gp-glass{
  background: var(--gp-glass-bg);
  -webkit-backdrop-filter: var(--gp-glass-blur);
          backdrop-filter: var(--gp-glass-blur);
  border-bottom: 1px solid var(--gp-glass-line);
}
.gp-glass--dark{
  background: var(--gp-glass-tint);
  border-bottom-color: rgb(255 255 255 / .12);
}
/* 不支持 backdrop-filter → 实底，避免透出脏背景 */
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))){
  .gp-glass{ background:#fff; }
  .gp-glass--dark{ background: var(--gp-ink); }
}
/* 性能预算：全站 backdrop-filter ≤ 3–4 处（header / 下拉 / 弹窗 / 浮层）*/

/* ==========================================================================
   §4  无障碍 / 动效基线（技能硬规则）
   ========================================================================== */
:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{
  outline:2px solid var(--gp-accent) !important;
  outline-offset:2px;
  border-radius: inherit;
}
/* 按压反馈 */
.gp-press{ transition: transform var(--gp-dur-press) var(--gp-ease-out); }
.gp-press:active{ transform: scale(.98); }
/* hover 只在真悬停设备生效 */
@media (hover:hover) and (pointer:fine){
  .gp-hoverlift{ transition: transform var(--gp-dur-ui) var(--gp-ease-out),
                            box-shadow var(--gp-dur-ui) var(--gp-ease-out); }
  .gp-hoverlift:hover{ transform: translateY(-2px); box-shadow: var(--gp-shadow-2); }
}
/* iOS 聚焦缩放：移动端输入框字号 ≥16px */
@media (max-width:700px){
  .gpi-field input, .gpi-field textarea, .gd-global-search input{ font-size:16px !important; }
}
/* 减少动效：去位移/停动画，**保留短淡入**（≠ 零动效）*/
@media (prefers-reduced-motion: reduce){
  .gp-press:active{ transform:none; }
  .gp-hoverlift:hover{ transform:none; }
  html .gd-story__slide, html .gd-story__scene{ transition:none !important; }
  html .gd-feature:hover, html .gpc-card:hover,
  html .single-product .related.products li.product:hover{ transform:none !important; }
  *{ animation-duration:.01ms !important; animation-iteration-count:1 !important; }
}

/* ==========================================================================
   §5  U0 兜底：商品主图——LiteSpeed JS 延迟期间也可见
   --------------------------------------------------------------------------
   根因：WooCommerce 图库元素带**内联** style="opacity:0"，等 flexslider 初始化
         后置 1；而 LiteSpeed 的 JS 延迟把 jQuery 与含 flexslider 的合并包
         (litespeed/js/<hash>.js) 推迟到用户首次交互。图片文件本身正常，
         是容器透明（实测：img.complete && naturalWidth=600，opacity=0）。
   治本：LiteSpeed 设置项——JS 延迟排除 jQuery / flexslider / WooCommerce
         single-product（见 design.php 中 U0 注释；属 wp-admin 设置，非代码）。
   本条为兜底：stylesheet 的 !important 可压过内联 opacity:0（内联非 !important）。
   ========================================================================== */
html .woocommerce-product-gallery{ opacity:1 !important; }
/* 但 flexslider 初始化前（尚未注入 .flex-viewport）多图会竖排“闪现”：
   只显示首图，等 flexslider 接管（:has(.flex-viewport)）后本规则自动失效。
   用 :has() 而非 `.flex-active-slide`，以免用户切换图片后规则误伤后续图。 */
html .woocommerce-product-gallery:not(:has(.flex-viewport)) .woocommerce-product-gallery__wrapper > .woocommerce-product-gallery__image ~ .woocommerce-product-gallery__image{
  display:none;
}

/* ==========================================================================
   §6  TODO —— 组件级改造（骨架占位；每条实现前先离线 harness + 截图评审）
   --------------------------------------------------------------------------
   [ ] 6.1 sticky 毛玻璃头部 (.gd-global-header 吸顶 + .gp-glass；@supports 回退)
   [ ] 6.2 Hero（clamp 排版 + 细网格/mesh 渐变；首图直出保 LCP）
   [ ] 6.3 商品卡（统一图框比例/底色；去“每卡整宽按钮”噪声；hover 抬升）
   [ ] 6.4 筛选侧栏（计数、分组、选中态、可折叠）
   [ ] 6.5 商品页（图库/摘要/规格表：分组 + 等宽数字 + 弱化斑马纹）
   [ ] 6.6 规格表 / Related products
   [ ] 6.7 Footer 统一
   [ ] 6.8 断点补齐（现主断点仅 700px）：1020/860 —— clamp 或同名断点重写
   ========================================================================== */

/* ==========================================================================
   §7  U2 · 商品页重构（summary / tabs / 规格表 / related）
   --------------------------------------------------------------------------
   覆盖对象：ui-product.css（已并入 LiteSpeed 合并 CSS，**在 head 更靠前**）
   与 Astra/Woo。本层在其后打印 → 同选择器 + 同 !important 即赢；再用
   `html body.single-product` 前缀抬特异性兜底。方向 A：略圆角 + hairline +
   柔和阴影 + hover 轻抬升 + 等宽数字（tabular-nums），取代旧的方角/实边。
   TODO(内容型)：规格表"分组标题"需要 label→group 的映射（跨 695 商品各异），
   属内容/PHP 任务，本轮以「等宽数字 + 行密度 + hairline + 标签列」保证可扫读。
   ========================================================================== */

/* --- 7.1 摘要区 --------------------------------------------------------- */
html body.single-product .woocommerce-breadcrumb{ color: var(--gp-ink-3); font-size: 12.5px; }

html body.single-product div.product .product_title{
  color: var(--gp-ink) !important;
  font-size: clamp(28px, 3.2vw, 40px) !important;
  font-weight: 600 !important;
  line-height: 1.15 !important;
  letter-spacing: -.02em !important;
}
html body.single-product .woocommerce-product-details__short-description{
  max-width: 62ch;
  color: var(--gp-ink-2) !important;
  font-size: 15px !important;
  line-height: 1.7 !important;
}
html body.single-product form.cart{ gap: 12px !important; margin: 0 0 22px !important; }
html body.single-product form.cart .quantity .qty{
  width: 74px !important; height: 46px !important;
  border: 1px solid var(--gp-hairline-2) !important;
  border-radius: var(--gp-r-sm) !important;
  background: var(--gp-surface) !important;
  color: var(--gp-ink) !important; font-size: 15px;
  transition: border-color var(--gp-dur-ui) var(--gp-ease-out), box-shadow var(--gp-dur-ui) var(--gp-ease-out);
}
html body.single-product form.cart .quantity .qty:focus{
  border-color: var(--gp-accent) !important;
  box-shadow: 0 0 0 3px var(--gp-accent-ring);
  outline: none;
}
html body.single-product form.cart .single_add_to_cart_button{
  min-height: 46px !important; padding: 0 24px !important;
  border: 1px solid var(--gp-accent) !important;
  border-radius: var(--gp-r-sm) !important;
  background: var(--gp-accent) !important; color: #fff !important; font-weight: 600 !important;
  box-shadow: var(--gp-shadow-1) !important;
  transition: background-color var(--gp-dur-ui) var(--gp-ease-out),
    box-shadow var(--gp-dur-ui) var(--gp-ease-out), transform var(--gp-dur-press) var(--gp-ease-out);
}
html body.single-product form.cart .single_add_to_cart_button:active{ transform: scale(.98); }
@media (hover:hover) and (pointer:fine){
  html body.single-product form.cart .single_add_to_cart_button:hover{
    background: var(--gp-accent-strong) !important; border-color: var(--gp-accent-strong) !important;
    box-shadow: var(--gp-shadow-2) !important;
  }
}
html body.single-product .product_meta{
  max-width: 62ch;
  padding: 14px 16px !important;
  border: 1px solid var(--gp-hairline) !important;
  border-radius: var(--gp-r-md);
  background: var(--gp-surface-2);
  color: var(--gp-ink-2) !important; font-size: 13px;
}
html body.single-product .product_meta > span{ display: inline-block; margin: 0 22px 4px 0; }
html body.single-product .product_meta .sku{ font-family: var(--gp-font-mono); color: var(--gp-ink); }

/* --- 7.2 标签页 --------------------------------------------------------- */
html body.single-product .woocommerce-tabs ul.tabs li a{
  color: var(--gp-ink-3) !important; font-weight: 600 !important; letter-spacing: 0;
}
html body.single-product .woocommerce-tabs ul.tabs li.active a{ color: var(--gp-ink) !important; }
html body.single-product .woocommerce-tabs .panel{ color: var(--gp-ink-2); line-height: 1.72; }
html body.single-product .woocommerce-tabs .panel h2{
  color: var(--gp-ink) !important; font-weight: 600 !important;
  font-size: clamp(22px, 2.2vw, 28px) !important; letter-spacing: -.01em;
}

/* --- 7.3 规格表（可扫读：hairline 行、标签列、等宽数字；值列纯白、无斑马）--- */
html body.single-product .woocommerce-product-attributes{
  width: 100% !important;
  border-collapse: separate !important; border-spacing: 0 !important;
  border: 1px solid var(--gp-hairline) !important;
  border-radius: var(--gp-r-md) !important;
  overflow: hidden;
  box-shadow: var(--gp-shadow-1);
}
html body.single-product .woocommerce-product-attributes th,
html body.single-product .woocommerce-product-attributes td{
  padding: 13px 18px !important;
  border: 0 !important;
  border-bottom: 1px solid var(--gp-hairline) !important;
  vertical-align: top; text-align: left;
}
html body.single-product .woocommerce-product-attributes tr:last-child th,
html body.single-product .woocommerce-product-attributes tr:last-child td{ border-bottom: 0 !important; }
html body.single-product .woocommerce-product-attributes th{
  width: 240px !important;
  background: var(--gp-surface-2) !important;
  color: var(--gp-ink-3) !important;
  font-size: 13px !important; font-weight: 600 !important; letter-spacing: .01em;
}
html body.single-product .woocommerce-product-attributes td{
  background: var(--gp-surface) !important;
  color: var(--gp-ink) !important;
  font-size: 14px !important; line-height: 1.55;
  font-variant-numeric: tabular-nums;   /* 等宽数字 */
}
html body.single-product .woocommerce-product-attributes p{ margin: 0 !important; }

/* --- 7.4 Related products（沿用新卡样式：hairline+圆角+柔影+抬升）------ */
html .single-product .related.products{ padding: 48px 0 70px !important; border-top: 1px solid var(--gp-hairline) !important; }
html .single-product .related.products > h2{
  color: var(--gp-ink) !important; font-weight: 600 !important;
  font-size: clamp(22px, 2.4vw, 30px) !important; letter-spacing: -.01em;
}
html .single-product .related.products ul.products,
html .single-product .related.products .products{
  display: grid !important; grid-template-columns: repeat(4, minmax(0,1fr)) !important; gap: 20px !important;
}
html .single-product .related.products li.product{
  width: auto !important; margin: 0 !important;
  border: 1px solid var(--gp-hairline) !important;
  border-radius: var(--gp-r-md) !important;
  background: var(--gp-surface);
  padding: 14px !important;
  box-shadow: var(--gp-shadow-1);
  transition: transform var(--gp-dur-ui) var(--gp-ease-out),
    box-shadow var(--gp-dur-ui) var(--gp-ease-out), border-color var(--gp-dur-ui) var(--gp-ease-out);
}
html .single-product .related.products li.product img{
  width: 100% !important; height: auto !important;
  aspect-ratio: 1 / 1; object-fit: contain !important;
  padding: 10px; border-radius: var(--gp-r-sm); background: var(--gp-surface-2);
}
html .single-product .related.products li.product .woocommerce-loop-product__title{
  font-size: 15px !important; font-weight: 600 !important; line-height: 1.35 !important;
  color: var(--gp-ink) !important; min-height: calc(2 * 1.35em);
}
html .single-product .related.products li.product .button{
  width: 100%; min-height: 40px !important; justify-content: center;
  border: 1px solid var(--gp-accent) !important; border-radius: var(--gp-r-sm) !important;
  background: var(--gp-accent-soft) !important; color: var(--gp-accent-strong) !important; font-weight: 600 !important;
  transition: background-color var(--gp-dur-ui) var(--gp-ease-out),
    color var(--gp-dur-ui) var(--gp-ease-out), box-shadow var(--gp-dur-ui) var(--gp-ease-out);
}
/* 去掉 Astra 覆盖在卡片图上的圆形快捷按钮（与本卡主按钮重复，噪声） */
html .single-product .related.products li.product .ast-on-card-button{ display: none !important; }
@media (hover:hover) and (pointer:fine){
  html .single-product .related.products li.product:hover{
    transform: translateY(-3px);
    box-shadow: var(--gp-shadow-3);
    border-color: var(--gp-hairline-2) !important;
  }
  html .single-product .related.products li.product .button:hover{
    background: var(--gp-accent) !important; color: #fff !important;
    box-shadow: var(--gp-shadow-2) !important;
  }
}

/* --- 7.5 商品页断点 ----------------------------------------------------- */
@media (max-width: 980px){
  html .single-product .related.products ul.products,
  html .single-product .related.products .products{ grid-template-columns: repeat(2, minmax(0,1fr)) !important; }
}
@media (max-width: 700px){
  html body.single-product .woocommerce-product-attributes th{ width: 42% !important; }
  html body.single-product .woocommerce-product-attributes th,
  html body.single-product .woocommerce-product-attributes td{ padding: 11px 12px !important; }
  html .single-product .related.products ul.products,
  html .single-product .related.products .products{ grid-template-columns: 1fr !important; }
}

/* ==========================================================================
   §8  U3 · 目录页（/catalog/，gpc-* 客户端应用）——商品卡 + 筛选侧栏
   --------------------------------------------------------------------------
   覆盖对象：`.gpc-*` 规则来自 head 的 LiteSpeed **合并 CSS**（在 design-v2 之前）
   → 同选择器 + 同 !important + 本层更靠后即赢；再以 `html` 前缀兜底。
   卡片：去"整宽重蓝按钮"（改文字链）、图框统一 4:3 + 底色、字阶、hover 抬升。
   侧栏：选中态、计数徽标、桌面 sticky、移动可折叠（toggle 由 design.php 注入）。
   ========================================================================== */

/* --- 8.1 商品卡 --------------------------------------------------------- */
html .gpc-grid{ gap: 20px !important; }
html .gpc-card{
  border: 1px solid var(--gp-hairline) !important;
  border-radius: var(--gp-r-md);
  background: var(--gp-surface);
  box-shadow: var(--gp-shadow-1);
  overflow: hidden;
  transition: transform var(--gp-dur-ui) var(--gp-ease-out),
    box-shadow var(--gp-dur-ui) var(--gp-ease-out), border-color var(--gp-dur-ui) var(--gp-ease-out);
}
html .gpc-card__image{
  aspect-ratio: 4 / 3 !important;
  padding: 18px !important;
  background: var(--gp-surface-2) !important;
  border-bottom: 1px solid var(--gp-hairline);
}
html .gpc-card__image img{ object-fit: contain !important; }
html .gpc-card__body{ padding: 16px 16px 14px !important; }
html .gpc-card h3{ font-size: 16px !important; font-weight: 600 !important; color: var(--gp-ink) !important; line-height: 1.35 !important; }
html .gpc-card h3 a{ color: inherit !important; }
html .gpc-card p{
  margin: 8px 0 12px !important; color: var(--gp-ink-3) !important; font-size: 13px !important; line-height: 1.55 !important;
  display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;   /* 保持网格节奏 */
  max-height: calc(3 * 1.55em);   /* 硬上限，兼容 line-clamp 不可用时 */
}
/* 去"整宽重蓝按钮" → 轻量文字链（触屏也始终可见、可用）*/
html .gpc-add{
  display: inline-flex !important; align-items: center; gap: 6px;
  min-height: 0 !important; width: auto !important; margin-top: auto !important;
  padding: 6px 0 !important;
  border: 0 !important; background: transparent !important;
  color: var(--gp-accent) !important; font-size: 13.5px !important; font-weight: 600 !important;
}
html .gpc-add::after{ content: "\2192"; transition: transform var(--gp-dur-ui) var(--gp-ease-out); }
html .gpc-add.is-added{ color: #168343 !important; }
@media (hover:hover) and (pointer:fine){
  html .gpc-card:hover{
    transform: translateY(-3px);
    box-shadow: var(--gp-shadow-3);
    border-color: var(--gp-hairline-2) !important;
  }
  html .gpc-add:hover{ color: var(--gp-accent-strong) !important; }
  html .gpc-add:hover::after{ transform: translateX(3px); }
}

/* --- 8.2 筛选侧栏 ------------------------------------------------------- */
html .gpc-filters{ border-right: 1px solid var(--gp-hairline) !important; padding-right: 20px !important; }
@media (min-width: 981px){
  html .gpc-filters{ position: sticky; top: 84px; align-self: start; }
}
html .gpc-filters h2{
  margin: 0 0 12px !important; color: var(--gp-ink-3) !important;
  font-size: 13px !important; font-weight: 600 !important; text-transform: uppercase; letter-spacing: .06em;
}
html .gpc-category-list{ gap: 2px !important; }
html .gpc-category-list a{
  display: flex !important; align-items: center; gap: 10px;
  padding: 9px 12px !important; border: 0 !important; border-radius: var(--gp-r-sm);
  color: var(--gp-ink-2) !important; font-size: 14px !important; text-decoration: none !important;
  transition: background-color var(--gp-dur-ui) var(--gp-ease-out), color var(--gp-dur-ui) var(--gp-ease-out);
}
html .gpc-category-list a.is-active{
  background: var(--gp-accent-soft) !important; color: var(--gp-accent-strong) !important; font-weight: 600 !important;
}
@media (hover:hover) and (pointer:fine){
  html .gpc-category-list a:hover{ background: var(--gp-surface-2) !important; color: var(--gp-ink) !important; }
  html .gpc-category-list a.is-active:hover{ background: var(--gp-accent-soft) !important; color: var(--gp-accent-strong) !important; }
}
/* 计数徽标（由 design.php 注入）*/
html .gpc-cat-count{
  margin-left: auto; font-variant-numeric: tabular-nums;
  font-size: 12px; color: var(--gp-ink-3);
}
html .gpc-category-list a.is-active .gpc-cat-count{ color: var(--gp-accent-strong); }
/* 移动端折叠开关（由 design.php 注入按钮）*/
html .gpc-filter-toggle{
  display: none; align-items: center; gap: 8px; width: 100%; min-height: 44px;
  margin: 0 0 12px; padding: 0 12px;
  border: 1px solid var(--gp-hairline-2); border-radius: var(--gp-r-sm);
  background: var(--gp-surface); color: var(--gp-ink); font: inherit; font-weight: 600;
  cursor: pointer;
}
html .gpc-filter-toggle::after{ content: "\25BE"; margin-left: auto; transition: transform var(--gp-dur-ui) var(--gp-ease-out); }
html .gpc-filters.is-collapsed .gpc-filter-toggle::after{ transform: rotate(-90deg); }

/* --- 8.3 品牌 chips / 结果头 / 分页 ------------------------------------ */
html .gpc-results h2{ font-size: clamp(24px, 2.6vw, 32px) !important; font-weight: 600 !important; color: var(--gp-ink) !important; letter-spacing: -.01em; }
html .gpc-brand{
  border-radius: var(--gp-r-pill) !important;
  border-color: var(--gp-hairline-2) !important;
  color: var(--gp-ink-2) !important;
  font-size: 13px !important;
  transition: background-color var(--gp-dur-ui) var(--gp-ease-out), border-color var(--gp-dur-ui) var(--gp-ease-out), color var(--gp-dur-ui) var(--gp-ease-out);
}
html .gpc-brand:hover, html .gpc-brand.is-active{
  border-color: var(--gp-accent) !important; background: var(--gp-accent-soft) !important; color: var(--gp-accent-strong) !important;
}
html .gpc-page{
  border-radius: var(--gp-r-sm) !important;
  border-color: var(--gp-hairline-2) !important;
  color: var(--gp-ink-2) !important;
  transition: background-color var(--gp-dur-ui) var(--gp-ease-out), border-color var(--gp-dur-ui) var(--gp-ease-out), color var(--gp-dur-ui) var(--gp-ease-out);
}
html .gpc-page.is-active{ border-color: var(--gp-accent) !important; background: var(--gp-accent) !important; color: #fff !important; }
html .gpc-page:hover:not(.is-active):not(.is-disabled){ border-color: var(--gp-accent) !important; color: var(--gp-accent-strong) !important; }

/* --- 8.4 目录页断点（复刻应用原有断点，仅补本层需要的）---------------- */
@media (max-width: 980px){
  html .gpc-filters{ border-right: 0 !important; border-bottom: 1px solid var(--gp-hairline) !important; padding: 0 0 18px !important; }
  html .gpc-category-list{ gap: 6px !important; }
  html .gpc-category-list a{ border-radius: var(--gp-r-pill); border: 1px solid var(--gp-hairline) !important; }
  html .gpc-filter-toggle{ display: inline-flex; }
  html .gpc-filters.is-collapsed .gpc-category-list{ display: none !important; }
}

/* ==========================================================================
   §9  U4 · 首页 Hero + 品牌条 + Featured 卡片（材质细节）
   --------------------------------------------------------------------------
   首页正文样式来自**页面内联** `<style id="gp-dell-inspired-home">`（位于 body、
   head 之后）→ 必须 `html` 前缀抬特异性 + !important 才赢。
   本轮只做"材质工艺"：Hero 叠加层用 mesh + 噪点（消色带、减弱平涂）、标题加粗；
   Featured 卡片圆角+柔影+hover；品牌 chips 药丸；深蓝带加噪点。
   ⚠️ 玻璃（backdrop-filter）**不用于** Hero/卡片（性能 + 可读性双输），仍严格
      限定在悬浮层（见 §3 .gp-glass）。
   ⚠️ Hero 首图是 LCP：本层**不改其 <img>**（保持 fetchpriority=high / 非 lazy）。
   ========================================================================== */

/* --- 9.1 Hero：叠加层 mesh + 噪点（不加 blur，不改首图）----------------- */
html .gd-story__slide:after{
  content:""; position:absolute; z-index:1; inset:0;
  background-image:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.5'/%3E%3C/svg%3E"),
    radial-gradient(58% 78% at 8% 16%, rgb(6 114 206 / .10), transparent 60%),
    radial-gradient(52% 70% at 94% 88%, rgb(14 40 65 / .10), transparent 62%),
    linear-gradient(180deg, rgb(239 248 252 / .97) 0%, rgb(239 248 252 / .90) 42%, rgb(239 248 252 / .42) 72%, rgb(239 248 252 / .10) 100%);
  background-size: 140px 140px, auto, auto, auto;
  background-blend-mode: soft-light, normal, normal, normal;
}
html .gd-story__slide--dark:after{
  background-image:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.5'/%3E%3C/svg%3E"),
    radial-gradient(60% 80% at 10% 14%, rgb(6 114 206 / .20), transparent 60%),
    linear-gradient(180deg, rgb(4 25 45 / .97) 0%, rgb(4 25 45 / .92) 43%, rgb(4 25 45 / .46) 74%, rgb(4 25 45 / .12) 100%);
  background-size: 140px 140px, auto, auto;
  background-blend-mode: soft-light, normal, normal;
}
/* 大字号 + 更"镇得住"的字重（几何冷峻对位柔性弥散）*/
html .gd-story h1, html .gd-story h2{
  font-weight: 600 !important; letter-spacing: -.02em !important;
}
html .gd-story__label{ letter-spacing: .08em !important; font-weight: 600 !important; }
/* 分页点：药丸 + accent 选中 */
html .gd-story__dot{ height: 4px !important; border-radius: 999px !important; background: rgb(14 40 65 / .20) !important; }
html .gd-story__dot[aria-current="true"]{ background: var(--gp-accent) !important; }
html .gd-story__slide--dark.is-active ~ .gd-story__controls .gd-story__dot:not([aria-current="true"]){ background: rgb(255 255 255 / .35) !important; }

/* --- 9.2 Featured 卡片（材质：圆角 + hairline + 柔影 + hover 抬升）------ */
html .gd-feature{
  border: 1px solid var(--gp-hairline) !important;
  border-radius: var(--gp-r-md);
  background: var(--gp-surface);
  box-shadow: var(--gp-shadow-1);
  overflow: hidden;
  transition: transform var(--gp-dur-ui) var(--gp-ease-out),
    box-shadow var(--gp-dur-ui) var(--gp-ease-out), border-color var(--gp-dur-ui) var(--gp-ease-out);
}
html .gd-feature__image,
html .gd-feature:nth-child(2) .gd-feature__image,
html .gd-feature:nth-child(3) .gd-feature__image{ background: var(--gp-surface-2) !important; }
html .gd-feature h3{ font-weight: 600 !important; color: var(--gp-ink) !important; }
html .gd-feature p{ color: var(--gp-ink-3) !important; }
@media (hover:hover) and (pointer:fine){
  html .gd-feature:hover{
    transform: translateY(-3px);
    box-shadow: var(--gp-shadow-3);
    border-color: var(--gp-hairline-2) !important;
  }
}

/* --- 9.3 品牌条 chips（方框 → 药丸，与目录 .gpc-brand 一致）------------- */
html .gp-links .gp-links__brands a,
html .gp-hub .gp-hub__brands a,
html .gp-hubdir .gp-hubdir__brands a{
  min-height: 34px !important; padding: 0 13px !important;
  border: 1px solid var(--gp-hairline-2) !important;
  border-radius: var(--gp-r-pill) !important;
  background: var(--gp-surface) !important; color: var(--gp-ink-2) !important;
  font-size: 13px !important;
  transition: background-color var(--gp-dur-ui) var(--gp-ease-out),
    border-color var(--gp-dur-ui) var(--gp-ease-out), color var(--gp-dur-ui) var(--gp-ease-out);
}
html .gp-links .gp-links__brands a:hover, html .gp-links .gp-links__brands a:focus,
html .gp-hub .gp-hub__brands a:hover,
html .gp-hubdir .gp-hubdir__brands a:hover{
  border-color: var(--gp-accent) !important; background: var(--gp-accent-soft) !important; color: var(--gp-accent-strong) !important;
}

/* --- 9.4 深蓝带（Built for project procurement）：细噪点 + 顶部 rim light -- */
html .gd-project{ position: relative; }
html .gd-project::before{
  content:""; position:absolute; inset:0; z-index:0; pointer-events:none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.5'/%3E%3C/svg%3E");
  background-size: 140px 140px; opacity: .05;
}
html .gd-project > *{ position: relative; z-index: 1; }
html .gd-project-item{ border-color: rgba(255,255,255,.14) !important; }

/* ==========================================================================
   §10  U5 · Header 统一 + sticky 毛玻璃（玻璃的正确落点：悬浮层）
   --------------------------------------------------------------------------
   共享型组件：header/footer 由 00-shell 全局渲染（`assets/header.css` 是
   build-header-css.py 生成物，**禁止手改**）→ 本层靠文档顺序/特异性覆盖。
   玻璃规范（技能）：半透明白底 .72 + 1px hairline + backdrop-filter(14px,1.4)
   + @supports 回退实底；对比 ≥4.5:1；全站 backdrop-filter ≤3–4 处（此处仅 1 处）。
   sticky 仅 ≥981px（移动端 header 高约 122px，固定会遮挡内容，暂保持静态）。
   注意：header 自带 `transform:translateZ(0)` + `isolation:isolate` + z-index:9999；
   超级菜单 `.gd-mega` 仍为实底白（大面板玻璃会伤可读性 + 性能）。
   ========================================================================== */
html .gd-global-header{
  background: var(--gp-glass-bg) !important;
  -webkit-backdrop-filter: var(--gp-glass-blur);
          backdrop-filter: var(--gp-glass-blur);
  border-bottom: 1px solid var(--gp-glass-line);
}
/* 导航条透明，让玻璃在 header 两行上连续 */
html .gd-global-header .gd-global-nav{ background: transparent !important; }
/* 顶栏 hairline：滚动态下与内容分隔（原来只有 nav 的底边线）*/
html .gd-global-header .gd-global-nav{ border-bottom-color: var(--gp-hairline) !important; }

@media (min-width: 981px){
  html .gd-global-header{ position: sticky !important; top: 0; }
}
/* 回退：不支持 backdrop-filter → 实底（避免透出脏背景、保对比）*/
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))){
  html .gd-global-header{ background: #fff !important; }
}
/* 减少动效/低端设备：无额外动效需求（玻璃为静态材质）*/

/* ==========================================================================
   §11  U6 · 微交互 / 可访问性收尾（技能硬规则）
   --------------------------------------------------------------------------
   审计结论：插件 assets **无** `transition:all` / `ease-in` / `scale(0)`
   （已合规）；part-a/part-b 已有 `:focus-visible` / `:active` / reduced-motion。
   本节只补齐缺口：① 新组件（U2/U3/U4）的按压反馈；② 弹出层 transform-origin
   指向触发点；③ 移动端输入框 ≥16px（防 iOS 聚焦缩放，含 header 搜索）。
   ========================================================================== */

/* 11.1 按压反馈（新组件：目录卡 CTA / 分页 / 品牌 chip / 相关商品按钮等）*/
html .gpc-add:active,
html .gpc-page:active:not(.is-disabled),
html .gpc-brand:active,
html .gp-links .gp-links__brands a:active,
html .gp-hub .gp-hub__brands a:active,
html .gpc-category-list a:active,
html .gd-feature .gd-link:active,
html .gp-links .gp-links__list a:active,
html .single-product .related.products li.product .button:active,
html .gpi-add-button:active{
  transform: scale(.97);
}

/* 11.2 弹出层从触发点生长（技能硬规则）*/
html .gd-global-dropdown{ transform-origin: top left; }
html .gd-global-header .gd-mega{ transform-origin: top center; }

/* 11.3 移动端输入框 ≥16px（防 iOS 聚焦缩放；含 header 搜索，带 html 前缀压过旧层）*/
@media (max-width:700px){
  html input:not([type]),
  html input[type="text"], html input[type="search"], html input[type="email"],
  html input[type="tel"], html input[type="url"], html input[type="number"],
  html input[type="password"], html textarea, html select{
    font-size: 16px !important;
  }
}

/* ==========================================================================
   §12  V1 · 品牌/分类归档页卡片统一（Woo 归档 → 目录页 .gpc-card 同款观感）
   --------------------------------------------------------------------------
   覆盖对象：`ul.products li.product`（Astra/Woo 默认卡，方角 + 整宽重蓝按钮 + 图上
   圆形快捷按钮），以及 part-b-chrome 的旧方角覆盖（`.woocommerce ul.products
   li.product{border-radius:0}`）。本层在其后 + `html body.archive.woocommerce`
   前缀抬特异性 + 同带 !important → 无视源序取胜。
   范围：仅 `body.archive.woocommerce`（品牌归档 /brand/<slug>/），**不含** search
   （body.search 自有外壳，V7 再统一）、single-product（§7 自有）、related（§7.4）。
   与目录页 `.gpc-card` 对齐项：圆角 14 / hairline / shadow-1 / hover 抬升 3px、
   图框 4:3 + 浅底 + 内边距、分类标签 accent 小字、标题 600、CTA 弱化为文字链。
   ========================================================================== */

/* --- 12.1 网格与卡片外壳（结构对齐目录 .gpc-card：内容区留白在 body）----- */
html body.archive.woocommerce ul.products{ gap: 20px !important; }
html body.archive.woocommerce ul.products li.product{
  display: flex !important;
  flex-direction: column !important;
  width: auto !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 1px solid var(--gp-hairline) !important;
  border-radius: var(--gp-r-md) !important;
  background: var(--gp-surface) !important;
  box-shadow: var(--gp-shadow-1) !important;
  overflow: hidden;
  list-style: none;
  transition: transform var(--gp-dur-ui) var(--gp-ease-out),
    box-shadow var(--gp-dur-ui) var(--gp-ease-out),
    border-color var(--gp-dur-ui) var(--gp-ease-out);
}
html body.archive.woocommerce ul.products li.product .astra-shop-thumbnail-wrap{
  position: relative; margin: 0 !important;
}
html body.archive.woocommerce ul.products li.product .astra-shop-summary-wrap{
  display: flex !important; flex-direction: column !important; flex: 1 1 auto !important;
  padding: 16px 16px 14px !important;
}
html body.archive.woocommerce ul.products li.product:hover{
  border-color: var(--gp-hairline-2) !important;
}

/* --- 12.2 图框（顶带宽幅 4:3 + 浅底 + 内边距，与 .gpc-card__image 对齐）-- */
html body.archive.woocommerce ul.products li.product img{
  width: 100% !important; height: auto !important;
  aspect-ratio: 4 / 3 !important;
  object-fit: contain !important;
  padding: 18px !important;
  background: var(--gp-surface-2) !important;
  border-bottom: 1px solid var(--gp-hairline) !important;
  border-radius: 0 !important;
  display: block !important;
}
/* 图上圆形快捷按钮（与主 CTA 重复）——隐藏 */
html body.archive.woocommerce ul.products li.product .ast-on-card-button{ display: none !important; }

/* --- 12.3 文案层级（分类标签 / 标题）----------------------------------- */
html body.archive.woocommerce ul.products li.product .ast-woo-product-category{
  display: block !important; margin: 0 0 6px !important;
  color: var(--gp-accent) !important; font-size: 11px !important; font-weight: 700 !important;
  letter-spacing: .06em !important; text-transform: uppercase !important;
}
html body.archive.woocommerce ul.products li.product .woocommerce-loop-product__title{
  min-height: calc(2 * 1.35em) !important;
  margin: 0 0 10px !important; padding: 0 !important;
  color: var(--gp-ink) !important;
  font-size: 16px !important; font-weight: 600 !important; line-height: 1.35 !important;
}

/* --- 12.4 CTA：整宽重蓝按钮 → 轻量文字链（同目录 .gpc-add）------------- */
html body.archive.woocommerce ul.products li.product .gpi-add-button{
  display: inline-flex !important; align-items: center !important; gap: 6px !important;
  width: auto !important; min-height: 0 !important; margin-top: auto !important;
  padding: 6px 0 !important;
  border: 0 !important; background: transparent !important; box-shadow: none !important;
  color: var(--gp-accent) !important;
  font-size: 13.5px !important; font-weight: 600 !important; text-decoration: none !important;
}
html body.archive.woocommerce ul.products li.product .gpi-add-button::after{
  content: "\2192"; transition: transform var(--gp-dur-ui) var(--gp-ease-out);
}
html body.archive.woocommerce ul.products li.product .gpi-add-button.is-added{ color: #168343 !important; }

/* --- 12.5 hover（真悬停设备）------------------------------------------- */
@media (hover:hover) and (pointer:fine){
  html body.archive.woocommerce ul.products li.product:hover{
    transform: translateY(-3px);
    box-shadow: var(--gp-shadow-3) !important;
    border-color: var(--gp-hairline-2) !important;
  }
  html body.archive.woocommerce ul.products li.product .gpi-add-button:hover{ color: var(--gp-accent-strong) !important; }
  html body.archive.woocommerce ul.products li.product .gpi-add-button:hover::after{ transform: translateX(3px); }
}

/* --- 12.6 归档页头（面包屑 / 标题 / 结果计数 / 排序，与搜索页对齐）------ */
html body.archive.woocommerce .woocommerce-breadcrumb{ color: var(--gp-ink-3) !important; font-size: 12.5px !important; }
html body.archive.woocommerce .woocommerce-breadcrumb a{ color: var(--gp-ink-3) !important; }
html body.archive.woocommerce .woocommerce-products-header__title{
  color: var(--gp-ink) !important;
  font-size: clamp(28px, 3.4vw, 40px) !important;
  font-weight: 600 !important; letter-spacing: -.02em !important; line-height: 1.12 !important;
}
html body.archive.woocommerce .woocommerce-result-count{ color: var(--gp-ink-3) !important; font-size: 13px !important; }
html body.archive.woocommerce .woocommerce-ordering select{
  height: 40px !important; min-height: 40px !important;
  padding: 0 34px 0 12px !important;
  border: 1px solid var(--gp-hairline-2) !important;
  border-radius: var(--gp-r-sm) !important;
  background: var(--gp-surface) !important; color: var(--gp-ink) !important;
  font-size: 13.5px !important;
}

/* --- 12.7 减少动效 ------------------------------------------------------ */
@media (prefers-reduced-motion: reduce){
  html body.archive.woocommerce ul.products li.product:hover{ transform: none !important; }
}

/* ==========================================================================
   §13  V2 · 页面横幅 `.gd-page-hero` 现代化（复用 U4 首页 Hero 材质）
   --------------------------------------------------------------------------
   覆盖对象：`shell-subpage.css` 的平涂 `.gd-page-hero{background:linear-gradient(
   90deg,#d9f1fb,#eaf7fc)}`——它同时被**页面内联**副本 `<style id=
   "gpuloom-subpage-system">`（body、head 之后）重复，故必须 `html` 前缀 + 同带
   !important 才稳赢（技能：head vs body 内联的源序陷阱）。
   配方与 §9.1 首页 Hero 同源：light mesh 径向渐变 + 内联 SVG 噪点（消色带），
   但**不加 blur**（性能 + 可读性），保持浅蓝家族，标题 clamp + 600。
   ⚠️ 不改任何 <img>（本横幅无 LCP 图）。
   ========================================================================== */
html .gd-page-hero{
  position: relative !important;
  overflow: hidden;
  background:
    linear-gradient(180deg, #eef7fc 0%, #e8f3fb 58%, #eaf4fb 100%) !important;
  border-bottom: 1px solid var(--gp-hairline) !important;
}
/* 噪点（消色带，2–5% 不透明度）*/
html .gd-page-hero::before{
  content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.5'/%3E%3C/svg%3E");
  background-size: 140px 140px; opacity: .05;
}
/* mesh 径向渐变（柔和弥散，替代平涂）*/
html .gd-page-hero::after{
  content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background-image:
    radial-gradient(58% 82% at 6% 10%, rgb(6 114 206 / .10), transparent 60%),
    radial-gradient(52% 74% at 96% 92%, rgb(14 40 65 / .08), transparent 62%);
}
html .gd-page-hero > *{ position: relative; z-index: 1; }

/* 排版：标题 clamp + 600；正文 ink-2；面包屑 ink-3 */
html .gd-page-hero h1{
  font-size: clamp(32px, 4vw, 48px) !important;
  font-weight: 600 !important; letter-spacing: -.02em !important; line-height: 1.12 !important;
  color: var(--gp-ink) !important;
}
html .gd-page-hero p{
  color: var(--gp-ink-2) !important;
  font-size: clamp(15px, 1.15vw, 17px) !important; line-height: 1.6 !important;
}
html .gd-page-hero .gd-breadcrumb{ color: var(--gp-ink-3) !important; }
html .gd-page-hero .gd-breadcrumb a{ color: var(--gp-ink-3) !important; }

/* ==========================================================================
   §14  V3 · WooCommerce 购物车 / 结账 / 账户页（方角默认 → 令牌化）
   --------------------------------------------------------------------------
   覆盖对象：Woo/Astra 默认（方角按钮、方角输入、默认表格、3px 顶条通知）。
   作用域：`body.woocommerce-cart` / `body.woocommerce-checkout` /
   `body.woocommerce-account`（本站支付关闭，/checkout/ 实际重定向回购物车）。
   ========================================================================== */

/* --- 14.1 通知条（去掉 Astra 的 3px 顶条，圆形 hairline 卡）----------- */
html body.woocommerce-cart .woocommerce-message,
html body.woocommerce-cart .woocommerce-info,
html body.woocommerce-cart .woocommerce-error,
html body.woocommerce-account .woocommerce-message,
html body.woocommerce-account .woocommerce-info,
html body.woocommerce-account .woocommerce-error{
  margin: 0 0 22px !important;
  padding: 15px 18px 15px 46px !important;
  border: 1px solid var(--gp-hairline) !important;
  border-top: 1px solid var(--gp-hairline) !important;
  border-radius: var(--gp-r-md) !important;
  background: var(--gp-surface-2) !important;
  color: var(--gp-ink-2) !important;
  font-size: 14px !important; line-height: 1.5 !important;
  box-shadow: none !important;
}
html body.woocommerce-cart .woocommerce-message .button,
html body.woocommerce-account .woocommerce-message .button{ float: right; }

/* --- 14.2 按钮（令牌化：accent 实底 / 次要项 ghost）------------------ */
html body.woocommerce-cart .woocommerce a.button,
html body.woocommerce-cart .woocommerce button.button,
html body.woocommerce-cart .woocommerce input.button,
html body.woocommerce-account .woocommerce a.button,
html body.woocommerce-account .woocommerce button.button,
html body.woocommerce-account .woocommerce input.button{
  display: inline-flex !important; align-items: center !important; justify-content: center !important;
  min-height: 46px !important; padding: 0 24px !important;
  border: 1px solid var(--gp-accent) !important;
  border-radius: var(--gp-r-sm) !important;
  background: var(--gp-accent) !important; color: #fff !important;
  font-size: 14px !important; font-weight: 600 !important;
  box-shadow: var(--gp-shadow-1) !important;
  transition: background-color var(--gp-dur-ui) var(--gp-ease-out),
    border-color var(--gp-dur-ui) var(--gp-ease-out), box-shadow var(--gp-dur-ui) var(--gp-ease-out),
    transform var(--gp-dur-press) var(--gp-ease-out);
}
@media (hover:hover) and (pointer:fine){
  html body.woocommerce-cart .woocommerce a.button:hover,
  html body.woocommerce-cart .woocommerce button.button:hover,
  html body.woocommerce-account .woocommerce a.button:hover,
  html body.woocommerce-account .woocommerce button.button:hover{
    background: var(--gp-accent-strong) !important; border-color: var(--gp-accent-strong) !important;
    box-shadow: var(--gp-shadow-2) !important;
  }
}
html body.woocommerce-cart .woocommerce button.button:active,
html body.woocommerce-account .woocommerce button.button:active{ transform: scale(.985); }
/* 次要动作（购物车"Clear/Update"）→ ghost 描边 */
html body.woocommerce-cart .woocommerce-cart-form .actions button.button{
  background: var(--gp-surface) !important; color: var(--gp-accent-strong) !important;
  border-color: var(--gp-hairline-2) !important; box-shadow: none !important;
}
@media (hover:hover) and (pointer:fine){
  html body.woocommerce-cart .woocommerce-cart-form .actions button.button:hover{
    background: var(--gp-accent-soft) !important; border-color: var(--gp-accent) !important;
  }
}

/* --- 14.3 表单控件（输入/select/textarea）--------------------------- */
html body.woocommerce-cart .woocommerce input[type="text"],
html body.woocommerce-cart .woocommerce input[type="email"],
html body.woocommerce-cart .woocommerce input[type="tel"],
html body.woocommerce-cart .woocommerce input[type="password"],
html body.woocommerce-cart .woocommerce input[type="number"],
html body.woocommerce-cart .woocommerce input[type="search"],
html body.woocommerce-cart .woocommerce select,
html body.woocommerce-cart .woocommerce textarea,
html body.woocommerce-account .woocommerce input[type="text"],
html body.woocommerce-account .woocommerce input[type="email"],
html body.woocommerce-account .woocommerce input[type="tel"],
html body.woocommerce-account .woocommerce input[type="password"],
html body.woocommerce-account .woocommerce input[type="number"],
html body.woocommerce-account .woocommerce input[type="search"],
html body.woocommerce-account .woocommerce select,
html body.woocommerce-account .woocommerce textarea{
  min-height: 44px !important; padding: 10px 12px !important;
  border: 1px solid var(--gp-hairline-2) !important;
  border-radius: var(--gp-r-sm) !important;
  background: var(--gp-surface) !important; color: var(--gp-ink) !important;
  font-size: 14px !important;
  box-shadow: none !important;
}
html body.woocommerce-cart .woocommerce input:focus,
html body.woocommerce-account .woocommerce input:focus,
html body.woocommerce-account .woocommerce select:focus,
html body.woocommerce-account .woocommerce textarea:focus{
  border-color: var(--gp-accent) !important;
  box-shadow: 0 0 0 3px var(--gp-accent-ring) !important;
  outline: none !important;
}
html body.woocommerce-account .woocommerce form .form-row label,
html body.woocommerce-account .woocommerce-form-row label{
  color: var(--gp-ink) !important; font-size: 13px !important; font-weight: 600 !important;
}

/* --- 14.4 购物车表格（卡片化：圆角 + hairline + 左对齐）------------- */
html body.woocommerce-cart table.shop_table{
  width: 100% !important;
  border: 1px solid var(--gp-hairline) !important;
  border-radius: var(--gp-r-md) !important;
  border-collapse: separate !important; border-spacing: 0 !important;
  overflow: hidden;
  background: var(--gp-surface) !important;
  box-shadow: var(--gp-shadow-1);
}
html body.woocommerce-cart table.shop_table th{
  padding: 12px 16px !important;
  border: 0 !important; border-bottom: 1px solid var(--gp-hairline) !important;
  background: var(--gp-surface-2) !important;
  color: var(--gp-ink-3) !important;
  text-align: left !important;
  font-size: 12px !important; font-weight: 600 !important; letter-spacing: .06em; text-transform: uppercase;
}
html body.woocommerce-cart table.shop_table td{
  padding: 14px 16px !important;
  border: 0 !important; border-top: 1px solid var(--gp-hairline) !important;
  vertical-align: middle; text-align: left !important;
}
html body.woocommerce-cart table.shop_table tbody tr:first-child td{ border-top: 0 !important; }
html body.woocommerce-cart table.shop_table .product-name a{
  color: var(--gp-ink) !important; font-size: 14.5px !important; font-weight: 600 !important; text-decoration: none !important;
}
html body.woocommerce-cart table.shop_table .product-thumbnail img{
  width: 64px !important; height: auto !important;
  border: 1px solid var(--gp-hairline) !important; border-radius: var(--gp-r-sm) !important;
  background: var(--gp-surface-2) !important; padding: 4px;
}
html body.woocommerce-cart table.shop_table .product-remove a.remove{
  display: inline-grid !important; place-items: center;
  width: 28px !important; height: 28px !important;
  border-radius: var(--gp-r-pill) !important;
  background: var(--gp-surface-2) !important; color: var(--gp-ink-3) !important;
  font-size: 15px !important; font-weight: 400 !important; line-height: 1 !important; text-decoration: none !important;
  transition: background-color var(--gp-dur-ui) var(--gp-ease-out), color var(--gp-dur-ui) var(--gp-ease-out);
}
@media (hover:hover) and (pointer:fine){
  html body.woocommerce-cart table.shop_table .product-remove a.remove:hover{
    background: #fdecec !important; color: #b42318 !important;
  }
}
/* 数量输入：修掉"整宽"（实测 448px）→ 74px */
html body.woocommerce-cart table.shop_table .quantity input.qty{
  width: 74px !important; height: 44px !important;
  padding: 0 8px !important; text-align: center;
  border: 1px solid var(--gp-hairline-2) !important; border-radius: var(--gp-r-sm) !important;
  background: var(--gp-surface) !important; color: var(--gp-ink) !important; font-size: 15px !important;
}
html body.woocommerce-cart .woocommerce-cart-form td.actions{
  padding: 16px !important;
}
html body.woocommerce-cart .gpi-auto-update-note{
  color: var(--gp-ink-3) !important; font-size: 13px !important;
}

/* --- 14.5 空车状态（友好化：居中卡 + 图标）-------------------------- */
html body.woocommerce-cart .cart-empty.woocommerce-info{
  position: relative;
  margin: 0 0 6px !important;
  padding: 40px 28px 40px 28px !important;
  border: 1px solid var(--gp-hairline) !important;
  border-radius: var(--gp-r-md) !important;
  background: var(--gp-surface-2) !important;
  color: var(--gp-ink-2) !important;
  text-align: center; font-size: 15px !important;
}
html body.woocommerce-cart .cart-empty.woocommerce-info::before{
  content: "" !important;                   /* 去掉 Woo 的 "i" 图标 */
  display: block !important; width: 44px !important; height: 44px !important;
  margin: 0 auto 14px !important;
  background: no-repeat center/28px 28px
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2368808f' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 5h2l2.4 10.4a1 1 0 0 0 1 .8h8.2a1 1 0 0 0 1-.8L19 8H6'/%3E%3Ccircle cx='9.5' cy='19' r='1.3'/%3E%3Ccircle cx='17' cy='19' r='1.3'/%3E%3C/svg%3E") !important;
}
html body.woocommerce-cart .return-to-shop{ text-align: center !important; }

/* --- 14.6 账户页（登录/注册卡）------------------------------------- */
html body.woocommerce-account .woocommerce form.login,
html body.woocommerce-account .woocommerce form.register,
html body.woocommerce-account .woocommerce-form{
  padding: 28px !important;
  border: 1px solid var(--gp-hairline) !important;
  border-radius: var(--gp-r-md) !important;
  background: var(--gp-surface) !important;
  box-shadow: var(--gp-shadow-1);
}
html body.woocommerce-account .woocommerce h2{
  color: var(--gp-ink) !important; font-weight: 600 !important; letter-spacing: -.01em;
}
html body.woocommerce-account .woocommerce-MyAccount-navigation ul{ list-style: none; margin: 0; padding: 0; }
html body.woocommerce-account .woocommerce-MyAccount-navigation a{
  display: block !important; padding: 10px 14px !important;
  border: 1px solid var(--gp-hairline) !important; border-radius: var(--gp-r-sm) !important;
  margin: 0 0 6px !important; color: var(--gp-ink-2) !important; text-decoration: none !important;
  transition: background-color var(--gp-dur-ui) var(--gp-ease-out), color var(--gp-dur-ui) var(--gp-ease-out);
}
html body.woocommerce-account .woocommerce-MyAccount-navigation a:hover,
html body.woocommerce-account .woocommerce-MyAccount-navigation .is-active a{
  background: var(--gp-accent-soft) !important; color: var(--gp-accent-strong) !important;
}
/* 移动端：responsive 表叠加模式下的间距 */
@media (max-width:700px){
  html body.woocommerce-cart table.shop_table th{ display: none !important; }
  html body.woocommerce-cart table.shop_table td{ border-top: 0 !important; padding: 8px 14px !important; }
  html body.woocommerce-cart table.shop_table td.product-thumbnail{ padding-top: 16px !important; }
  html body.woocommerce-cart table.shop_table td.product-remove{ padding-bottom: 0 !important; }
  html body.woocommerce-cart table.shop_table td.actions{ border-top: 1px solid var(--gp-hairline) !important; }
}

/* ==========================================================================
   §15  V4 · SEO 链接块（.gp-hub / .gp-hubdir / .gp-links / .gnx-static / .gp-postlinks）
   --------------------------------------------------------------------------
   覆盖对象：assets/gp-seo-blocks.css（在 head 合并包内、本层之前）。策略：
   「群组标题层级 + 行 hover 高亮 + 行距 + SKU 等宽右对齐 + 整体留白」，
   选择器用 `html` 前缀 + 同带 !important → 无视源序取胜。
   ========================================================================== */

/* --- 15.1 群组标题（accent 小竖条 + 小写字距）------------------------ */
html .gp-hub h2, html .gp-links__col h2, html .gp-links__wrap > h2,
html .gp-hubdir h2, html .gnx-static h2, html .gp-postlinks h2{
  position: relative;
  margin: 26px 0 14px !important;
  padding-left: 12px !important;
  color: var(--gp-ink) !important;
  font-size: 13px !important; font-weight: 700 !important;
  line-height: 1.3 !important; letter-spacing: .08em !important; text-transform: uppercase;
}
html .gp-hub h2::before, html .gp-links__col h2::before, html .gp-links__wrap > h2::before,
html .gp-hubdir h2::before, html .gnx-static h2::before, html .gp-postlinks h2::before{
  content: ""; position: absolute; left: 0; top: 50%; transform: translateY(-50%);
  width: 3px; height: 14px; border-radius: 2px; background: var(--gp-accent);
}
html .gp-links__col h2, html .gp-links__wrap > h2{ margin-top: 0 !important; }

/* --- 15.2 列表行（去"纯文字"：hover 高亮 + 行距 + 圆角高亮）---------- */
html .gp-links .gp-links__list li,
html .gp-hub .gp-hub__list li,
html .gp-hubdir .gp-hubdir__list li,
html section.gp-postlinks ul li{
  margin: 0 !important;
  padding: 11px 12px !important;
  border-bottom: 1px solid var(--gp-hairline) !important;
  border-radius: var(--gp-r-sm);
  font-size: 14px !important; line-height: 1.5 !important;
  transition: background-color var(--gp-dur-ui) var(--gp-ease-out);
}
html .gp-hub .gp-hub__list li{ gap: 18px !important; }
html .gp-links .gp-links__list li:last-child,
html .gp-hub .gp-hub__list li:last-child,
html .gp-hubdir .gp-hubdir__list li:last-child,
html section.gp-postlinks ul li:last-child{ border-bottom: 0 !important; }
@media (hover:hover) and (pointer:fine){
  html .gp-links .gp-links__list li:hover,
  html .gp-hub .gp-hub__list li:hover,
  html .gp-hubdir .gp-hubdir__list li:hover,
  html section.gp-postlinks ul li:hover{ background: var(--gp-surface-2); }
}
html .gp-links .gp-links__list a,
html .gp-hub .gp-hub__list a,
html .gp-hubdir .gp-hubdir__list a{
  color: var(--gp-ink-2) !important; font-weight: 500 !important; text-decoration: none !important;
}
html .gp-links .gp-links__list a:hover, html .gp-links .gp-links__list a:focus,
html .gp-hub .gp-hub__list a:hover, html .gp-hub .gp-hub__list a:focus,
html .gp-hubdir .gp-hubdir__list a:hover, html .gp-hubdir .gp-hubdir__list a:focus{
  color: var(--gp-accent) !important; text-decoration: none !important;
}
/* SKU / 计数：等宽、右对齐、弱色 */
html .gp-links__id, html .gp-hub__sku, html .gp-hubdir__n{
  color: var(--gp-ink-4) !important;
  font-family: var(--gp-font-mono) !important; font-variant-numeric: tabular-nums;
  font-size: 11.5px !important;
}
html .gp-hub .gp-hub__list .gp-hub__sku{ text-align: right; }

/* --- 15.3 脚注 / see-also / 卡片（令牌化）-------------------------- */
html .gp-links__more, html .gp-hub__more, html .gp-hubdir__more, html .gnx-static__more{
  color: var(--gp-ink-3) !important; font-size: 13px !important;
}
html .gp-hub__seealso{
  margin: 18px 0 0 !important;
  padding: 12px 16px !important;
  border: 1px solid var(--gp-hairline) !important;
  border-left: 3px solid var(--gp-accent) !important;
  border-radius: 0 var(--gp-r-sm) var(--gp-r-sm) 0 !important;
  background: var(--gp-surface-2) !important; color: var(--gp-ink-2) !important;
}
html .gnx-static .gnx-static__list a{
  border: 1px solid var(--gp-hairline) !important;
  border-radius: var(--gp-r-md) !important;
  background: var(--gp-surface) !important; color: var(--gp-ink-2) !important;
  box-shadow: var(--gp-shadow-1);
  transition: transform var(--gp-dur-ui) var(--gp-ease-out), box-shadow var(--gp-dur-ui) var(--gp-ease-out),
    border-color var(--gp-dur-ui) var(--gp-ease-out), color var(--gp-dur-ui) var(--gp-ease-out);
}
@media (hover:hover) and (pointer:fine){
  html .gnx-static .gnx-static__list a:hover{
    transform: translateY(-2px);
    box-shadow: var(--gp-shadow-2); border-color: var(--gp-hairline-2) !important; color: var(--gp-accent) !important;
  }
}
html .gp-postlinks{
  padding: 24px 26px !important;
  border: 1px solid var(--gp-hairline) !important;
  border-radius: var(--gp-r-md) !important;
  background: var(--gp-surface-2) !important;
}
html .gp-postlinks p{ border-top-color: var(--gp-hairline) !important; }

/* ==========================================================================
   §16  V5 · 超级菜单 .gd-mega 现代化（保守：只动面板/颜色，绝不碰定位与度量）
   --------------------------------------------------------------------------
   `header.css` 是生成物禁止手改；mega 的列宽（--gd-col1…）与命中区由
   shell-nav.js 实测驱动 —— 只加圆角/柔影/hairline 与令牌色，**不改行盒几何**。
   ========================================================================== */
html .gd-global-header .gd-mega{
  border-top: 0 !important;
  border-bottom: 1px solid var(--gp-hairline) !important;
  border-radius: 0 0 var(--gp-r-lg) var(--gp-r-lg) !important;
  box-shadow: var(--gp-shadow-3) !important;
  overflow: hidden;
}
html .gd-mega__head, html .gd-mega__subhead{ color: var(--gp-ink-3) !important; }
html .gd-mega__cat-link{ color: var(--gp-ink-2) !important; border-bottom-color: var(--gp-hairline) !important; }
html .gd-mega__brand-link{ color: var(--gp-ink-2) !important; border-bottom-color: var(--gp-hairline) !important; }
html .gd-mega__models a{ color: var(--gp-ink) !important; border-bottom-color: var(--gp-hairline) !important; }
html .gd-mega__n{ color: var(--gp-ink-4) !important; }
html .gd-mega .gd-mega__cat-link:hover, html .gd-mega__cat.is-open > .gd-mega__cat-link,
html .gd-mega .gd-mega__brand-link:hover, html .gd-mega__brand.is-open > .gd-mega__brand-link,
html .gd-mega__models a:hover, html .gd-mega__models a:focus{
  background: var(--gp-accent-soft) !important; color: var(--gp-accent) !important;
}
html .gd-mega__models .gd-mega__all{ color: var(--gp-accent) !important; }
html .gd-mega__brands, html .gd-mega--js .gd-mega__models{ scrollbar-color: var(--gp-hairline-2) var(--gp-surface-2); }

/* ==========================================================================
   §17  V6 · 表单控件统一（联系表单 08-contact-form.php 内联 + 询盘弹窗 04-frontend.php）
   --------------------------------------------------------------------------
   联系表单的内联 CSS 带 !important（border 0/radius 0/Arial）→ 本层用
   `html body .gpi-contact-form …` 抬特异性 + 同带 !important 取胜；询盘弹窗
   （ui-inquiry.css）无 !important，用 `html` 前缀即赢。集中在本层管理。
   ========================================================================== */

/* --- 17.1 联系表单 ------------------------------------------------ */
html body .gpi-contact-form form{
  padding: 28px !important;
  border: 1px solid var(--gp-hairline) !important;
  border-radius: var(--gp-r-md) !important;
  background: var(--gp-surface) !important;
  box-shadow: var(--gp-shadow-1);
}
html body .gpi-contact-grid label span,
html body .gpi-contact-label{ color: var(--gp-ink) !important; font-size: 13px !important; font-weight: 600 !important; }
html body .gpi-contact-grid input, html body .gpi-contact-grid textarea,
html body .gpi-contact-challenge input,
html body .gpi-field input, html body .gpi-field textarea{
  padding: 11px 12px !important;
  border: 1px solid var(--gp-hairline-2) !important;
  border-radius: var(--gp-r-sm) !important;
  background: var(--gp-surface) !important; color: var(--gp-ink) !important;
  font-family: var(--gp-font-sans) !important; font-size: 14px !important;
}
html body .gpi-contact-grid input:focus, html body .gpi-contact-grid textarea:focus,
html body .gpi-contact-challenge input:focus,
html body .gpi-field input:focus, html body .gpi-field textarea:focus{
  border-color: var(--gp-accent) !important;
  box-shadow: 0 0 0 3px var(--gp-accent-ring) !important; outline: none !important;
}
html body .gpi-contact-challenge{
  border: 1px solid var(--gp-hairline) !important; border-radius: var(--gp-r-sm) !important;
  background: var(--gp-surface-2) !important;
}
html body .gpi-contact-form button,
html body .gpi-submit{
  min-height: 48px !important; padding: 0 24px !important;
  border: 1px solid var(--gp-accent) !important;
  border-radius: var(--gp-r-sm) !important;
  background: var(--gp-accent) !important; color: #fff !important;
  font-family: var(--gp-font-sans) !important; font-size: 15px !important; font-weight: 600 !important;
  box-shadow: var(--gp-shadow-1) !important;
}
@media (hover:hover) and (pointer:fine){
  html body .gpi-contact-form button:hover, html body .gpi-submit:hover{
    background: var(--gp-accent-strong) !important; border-color: var(--gp-accent-strong) !important;
  }
}
html body .gpi-contact-status{
  border-radius: var(--gp-r-sm) !important; border-left-width: 4px !important;
}
html body .gpi-contact-note{ color: var(--gp-ink-3) !important; font-family: var(--gp-font-sans) !important; }
html body .gpi-contact-fallback{ border-radius: var(--gp-r-sm) !important; font-family: var(--gp-font-sans) !important; }

/* --- 17.2 询盘弹窗（cart "Submit Inquiry"）------------------------- */
html body .gpi-modal__dialog{
  border: 1px solid var(--gp-hairline) !important;
  border-radius: var(--gp-r-lg) !important;
  box-shadow: var(--gp-shadow-3) !important;
}
html body .gpi-modal h2{ font-weight: 600 !important; letter-spacing: -.01em; }
html body .gpi-modal__close{ border-radius: var(--gp-r-sm) !important; transition: background-color var(--gp-dur-ui) var(--gp-ease-out); }
html body .gpi-modal__close:hover{ background: var(--gp-surface-2) !important; }
html body .gpi-field label{ color: var(--gp-ink) !important; font-size: 13px !important; font-weight: 600 !important; }
html body .gpi-field small{ color: var(--gp-ink-3) !important; }
html body .gpi-open-modal{
  border-radius: var(--gp-r-sm) !important; background: var(--gp-accent) !important; border-color: var(--gp-accent) !important;
  font-weight: 600 !important; box-shadow: var(--gp-shadow-1) !important;
}
html body .gpi-success__id{ border-radius: var(--gp-r-sm) !important; background: var(--gp-accent-soft) !important; color: var(--gp-ink) !important; }
html body .gpi-success a{ border-radius: var(--gp-r-sm) !important; background: var(--gp-accent) !important; }
html body .gpi-add-button{ border-radius: var(--gp-r-sm) !important; }

/* ==========================================================================
   §18  V7 · 搜索结果页 + 空状态
   --------------------------------------------------------------------------
   本站搜索结果由 Astra 默认归档渲染（`article.ast-article-post`，blog-layout-4
   网格；`shell-search.css` 的 `ul.products` 规则并不命中）→ 本层直接对 Astra
   标记做「容器 + 卡片」重建。空状态用 `.no-results .page-content` 卡片化，
   横幅复用 §13 的材质配方（`.ast-archive-description`，仅无结果时 Astra 才渲染）。
   ========================================================================== */

/* --- 18.1 结果容器与卡片 ------------------------------------------ */
html body.search .site-content .ast-container{ width: min(1320px, calc(100% - 48px)) !important; margin-inline: auto !important; }
html body.search .ast-row{
  display: grid !important; grid-template-columns: repeat(3, minmax(0,1fr)) !important;
  gap: 22px !important; margin: 32px 0 0 !important;
}
html body.search article.ast-article-post{
  float: none !important; width: auto !important; margin: 0 !important;
  padding: 0 !important;
  border: 1px solid var(--gp-hairline) !important;
  border-radius: var(--gp-r-md) !important;
  background: var(--gp-surface) !important;
  box-shadow: var(--gp-shadow-1);
  overflow: hidden;
  transition: transform var(--gp-dur-ui) var(--gp-ease-out), box-shadow var(--gp-dur-ui) var(--gp-ease-out), border-color var(--gp-dur-ui) var(--gp-ease-out);
}
@media (hover:hover) and (pointer:fine){
  html body.search article.ast-article-post:hover{
    transform: translateY(-3px); box-shadow: var(--gp-shadow-3); border-color: var(--gp-hairline-2) !important;
  }
}
html body.search article.ast-article-post .post-content > *:not(.ast-blog-featured-section){ padding-left: 16px; padding-right: 16px; }
html body.search article.ast-article-post .ast-blog-featured-section{ margin: 0 !important; }
html body.search article.ast-article-post .post-thumb img{
  display: block !important; width: 100% !important; height: auto !important;
  aspect-ratio: 4 / 3 !important; object-fit: cover !important;
  border-radius: 0 !important; background: var(--gp-surface-2) !important;
}
html body.search article.ast-article-post .entry-title{
  margin: 14px 0 8px !important;
  font-size: 16px !important; font-weight: 600 !important; line-height: 1.35 !important;
}
html body.search article.ast-article-post .entry-title a{ color: var(--gp-ink) !important; text-decoration: none !important; }
html body.search article.ast-article-post .entry-title a:hover{ color: var(--gp-accent) !important; }
html body.search article.ast-article-post .entry-meta,
html body.search article.ast-article-post .entry-meta *{ color: var(--gp-ink-4) !important; font-size: 12px !important; }
html body.search article.ast-article-post .ast-excerpt-container{ padding-bottom: 16px; }
html body.search article.ast-article-post .ast-excerpt-container p{
  margin: 0 !important; color: var(--gp-ink-3) !important; font-size: 13.5px !important; line-height: 1.6 !important;
  display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;
  max-height: calc(3 * 1.6em);
}
/* 分页（若有）*/
html body.search .ast-pagination .page-numbers{
  border: 1px solid var(--gp-hairline-2) !important; border-radius: var(--gp-r-sm) !important;
  color: var(--gp-ink-2) !important;
}
html body.search .ast-pagination .page-numbers.current{ border-color: var(--gp-accent) !important; background: var(--gp-accent) !important; color: #fff !important; }

/* --- 18.2 横幅（Astra 仅在无结果时渲染 .ast-archive-description）------ */
html body.search .ast-archive-description{
  position: relative; overflow: hidden;
  padding: 44px 24px 38px !important;
  border-bottom: 1px solid var(--gp-hairline) !important;
  background: linear-gradient(180deg, #eef7fc 0%, #e8f3fb 60%, #eaf4fb 100%) !important;
  text-align: center;
}
html body.search .ast-archive-description::before{
  content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.5'/%3E%3C/svg%3E");
  background-size: 140px 140px; opacity: .05;
}
html body.search .ast-archive-description::after{
  content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background-image:
    radial-gradient(58% 82% at 6% 10%, rgb(6 114 206 / .10), transparent 60%),
    radial-gradient(52% 74% at 96% 92%, rgb(14 40 65 / .08), transparent 62%);
}
html body.search .ast-archive-description > *{ position: relative; z-index: 1; }
html body.search .ast-archive-title{
  margin: 0 !important; color: var(--gp-ink) !important;
  font-size: clamp(26px, 3.4vw, 38px) !important; font-weight: 600 !important;
  letter-spacing: -.02em !important; line-height: 1.15 !important;
}
html body.search .ast-breadcrumbs-wrapper, html body.search .ast-breadcrumbs{ color: var(--gp-ink-3) !important; font-size: 12.5px !important; }
html body.search .ast-breadcrumbs a{ color: var(--gp-ink-3) !important; }

/* --- 18.3 空状态（友好卡 + 令牌化搜索框）-------------------------- */
html body.search .no-results .page-content{
  max-width: 620px !important; margin: 44px auto !important;
  padding: 40px 28px 36px !important;
  border: 1px solid var(--gp-hairline) !important;
  border-radius: var(--gp-r-lg) !important;
  background: var(--gp-surface) !important;
  box-shadow: var(--gp-shadow-1); text-align: center;
}
html body.search .no-results .page-content > p:first-child{
  margin: 0 0 20px !important; color: var(--gp-ink-2) !important; font-size: 15px !important; line-height: 1.6 !important;
}
html body.search .no-results .search-form{
  position: relative !important;
  display: block !important; max-width: 440px !important; margin: 0 auto !important;
}
html body.search .no-results .search-form .search-field{
  width: 100% !important; height: 48px !important; min-height: 48px !important;
  padding: 0 52px 0 16px !important;
  border: 1px solid var(--gp-hairline-2) !important;
  border-radius: var(--gp-r-sm) !important; background: var(--gp-surface) !important; font-size: 14px !important;
}
html body.search .no-results .search-form .search-field:focus{
  border-color: var(--gp-accent) !important; box-shadow: 0 0 0 3px var(--gp-accent-ring) !important; outline: none !important;
}
/* Astra 输出两个 submit（图标 button + input），只留图标按钮并放进输入框右端 */
html body.search .no-results .search-form button.search-submit{
  position: absolute !important; top: 0 !important; right: 0 !important;
  width: 48px !important; height: 48px !important; min-height: 0 !important;
  margin: 0 !important; padding: 0 !important;
  border: 0 !important; background: transparent !important; color: var(--gp-accent) !important;
  display: grid !important; place-items: center; cursor: pointer;
}
html body.search .no-results .search-form input.search-submit{ display: none !important; }

@media (max-width:980px){
  html body.search .ast-row{ grid-template-columns: repeat(2, minmax(0,1fr)) !important; }
}
@media (max-width:700px){
  html body.search .ast-row{ grid-template-columns: 1fr !important; }
  html body.search .ast-archive-description{ padding: 32px 20px 28px !important; }
}

/* ==========================================================================
   §19  V8 · 页脚令牌化（颜色/分隔线对齐 --gp-*；`gpuloom-fu-css` 内联带
   !important，故用 `html` 前缀抬特异性）
   ========================================================================== */
html .gd-global-footer{
  background: var(--gp-surface-2) !important;
  border-top: 1px solid var(--gp-hairline) !important;
  color: var(--gp-ink-2) !important;
}
html .gd-global-footer h3{ color: var(--gp-ink-3) !important; letter-spacing: .12em !important; }
html .gd-global-footer a, html .gd-global-footer span{ color: var(--gp-ink-2) !important; }
html .gd-global-footer a:hover{ color: var(--gp-accent) !important; }
html .gd-global-footer__about p{ color: var(--gp-ink-3) !important; }
html .gd-global-footer__contact-row{ border-top-color: var(--gp-hairline) !important; }
html .gd-global-footer__contact-row b{ color: var(--gp-ink) !important; }
html .gd-global-footer__contact-icon{ stroke: var(--gp-accent) !important; }

/* ==========================================================================
   §20  V9 · 移动端 sticky Header（≤700px 常驻吸顶 + 滚动压缩）
   --------------------------------------------------------------------------
   桌面 sticky 已在 §10（≥981px）。移动端 header 约 122px，直接吸顶会遮挡，
   故：① 常驻 `position:sticky`（在页顶时本就位于顶部，无跳动）；② 滚动过阈值
   由 JS（design.php 注入，data-no-optimize）加 `.is-scrolled` → 隐藏搜索行、
   缩矮主行到 56px。JS 失效时退回"122px 吸顶"，不破版。
   ========================================================================== */
@media (max-width:700px){
  html .gd-global-header{ position: sticky !important; top: 0; }
  html .gd-global-header.is-scrolled{
    box-shadow: var(--gp-shadow-2);
  }
  html .gd-global-header.is-scrolled .gd-global-search{ display: none !important; }
  html .gd-global-header.is-scrolled .gd-global-header__main{
    min-height: 56px !important; padding: 6px 0 !important;
  }
}

/* ============================================================================
   §21  brand/分类归档 · 分页与工具条统一（Woo `woocommerce-pagination` /
        `woocommerce-ordering` / `woocommerce-result-count`）
   背景：目录页/搜索页分页早已统一（§17/§18），但 **Woo 商品归档**
   （`/brand/*`、`/product-category/*`）走的是另一套标记
   `<nav class="woocommerce-pagination">`，此前无样式 → 与目录不一致（第 1 期遗留）。
   作用域：`html body.archive.woocommerce`（只命中归档，不碰搜索/单页/相关商品）。
   ========================================================================== */
html body.archive.woocommerce .woocommerce-result-count{
  margin:0 !important; color:var(--gp-ink-3) !important; font-size:14px !important;
}
html body.archive.woocommerce .woocommerce-ordering{ margin:0 !important; }
html body.archive.woocommerce .woocommerce-ordering select{
  appearance:none !important; -webkit-appearance:none !important;
  height:40px !important; padding:0 38px 0 14px !important;
  border:1px solid var(--gp-hairline-2) !important; border-radius:var(--gp-r-sm) !important;
  background-color:#fff !important; color:var(--gp-ink) !important;
  font-size:14px !important; font-weight:500 !important; box-shadow:var(--gp-shadow-1) !important;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%2368808f' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") !important;
  background-repeat:no-repeat !important; background-position:right 13px center !important; background-size:12px 8px !important;
}
html body.archive.woocommerce .woocommerce-ordering select:focus{
  outline:2px solid var(--gp-accent) !important; outline-offset:2px;
}
/* 分页：与目录/搜索同款（白底 hairline 药丸，当前页实心蓝） */
html body.archive.woocommerce .woocommerce-pagination ul.page-numbers{
  display:flex !important; flex-wrap:wrap; gap:8px; justify-content:center;
  align-items:center; margin:40px 0 8px !important; padding:0 !important;
  border:0 !important; list-style:none !important; clear:both;
}
html body.archive.woocommerce .woocommerce-pagination ul.page-numbers li{
  border:0 !important; margin:0 !important; padding:0 !important; width:auto !important;
}
html body.archive.woocommerce .woocommerce-pagination .page-numbers{
  display:inline-flex !important; align-items:center; justify-content:center;
  min-width:40px; height:40px; padding:0 12px;
  border:1px solid var(--gp-hairline-2) !important; border-radius:var(--gp-r-sm) !important;
  background:#fff !important; color:var(--gp-ink-2) !important;
  font-size:14px !important; font-weight:600 !important; line-height:1 !important;
  text-decoration:none !important; box-shadow:var(--gp-shadow-1);
  transition:border-color var(--gp-dur-ui) var(--gp-ease-out),color var(--gp-dur-ui) var(--gp-ease-out),background-color var(--gp-dur-ui) var(--gp-ease-out);
}
html body.archive.woocommerce .woocommerce-pagination a.page-numbers:hover{
  border-color:var(--gp-accent) !important; color:var(--gp-accent-strong) !important;
}
html body.archive.woocommerce .woocommerce-pagination .page-numbers.current{
  border-color:var(--gp-accent) !important; background:var(--gp-accent) !important; color:#fff !important;
}
html body.archive.woocommerce .woocommerce-pagination .page-numbers.dots{
  border:0 !important; background:transparent !important; box-shadow:none !important; color:var(--gp-ink-3) !important;
}
@media(max-width:700px){
  html body.archive.woocommerce .woocommerce-pagination .page-numbers{ min-width:36px; height:36px; padding:0 9px; }
}

/* ============================================================================
   §21  V10 · 页眉「Support」下拉触发器：聚焦/展开态不再被主题刷成蓝底
   --------------------------------------------------------------------------
   来源：2026-10-14 新增页眉 Support 项后实测——点击/键盘聚焦时 Astra 的 focus
         规则给 <button> 上了 var(--ast-global-color-1)(#045cb4) 底色，而文字仍是
         链接蓝(#0672ce) → 触发按钮近乎「一个没有字的蓝块」。
   header.css 里对 mega 触发器早有同类覆盖（.gd-global-nav-item--mega +
   [aria-expanded="true"]），但那是**生成物**（禁止手改），且只覆盖 mega 一项。
   本层用等价特异性 + `!important` 把规则补到「任意 gd-global-nav-item 的触发器」，
   并**保留可见焦点环**（无障碍：焦点必须看得见，只是不能再吃掉文字）。
   ========================================================================== */
html body .gd-global-header .gd-global-nav-item > .gd-global-nav-trigger:hover,
html body .gd-global-header .gd-global-nav-item > .gd-global-nav-trigger:focus,
html body .gd-global-header .gd-global-nav-item > .gd-global-nav-trigger:focus-visible,
html body .gd-global-header .gd-global-nav-item > .gd-global-nav-trigger[aria-expanded="true"],
html body .gd-global-header .gd-global-nav-item.is-open > .gd-global-nav-trigger{
  background: transparent !important;
  color: #243946 !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
}
html body .gd-global-header .gd-global-nav-item > .gd-global-nav-trigger:focus-visible{
  outline: 2px solid var(--gp-accent) !important;
  outline-offset: 3px;
}

/* ============================================================================
   §22  V11 · About 两张地图对齐（左「中国网络」/ 右「全球网络」）
   --------------------------------------------------------------------------
   症状（2026-10-14 实测，1440 宽）：两栏文案行数不同——左栏标题 2 行 + 正文 3 行，
   右栏标题 1 行 + 正文 2 行；`.gab-net2` 又是 `align-items:start`，于是左栏地图被
   推低 **65px**，两张 .gab-map 顶部/底部都错开（各 683×512，尺寸本身一致）。
   修法：让两栏等高（stretch），列内用 flex 纵向排布，并让 **正文段落吸收差额**
   （`.gab-lead{flex:1}`）——于是下面的地图在两栏中**同时顶对齐且底对齐**，
   多出来的空间表现为段落下方留白，观感自然。
   只在 ≥1021px 生效（≤1020px 是单栏布局，不需要也不该改）。
   ========================================================================== */
@media(min-width:1021px){
  html .ga-page .gab-net2{ align-items: stretch !important; }
  html .ga-page .gab-netcol{ display: flex !important; flex-direction: column !important; }
  html .ga-page .gab-netcol > .gab-lead{ flex: 1 1 auto !important; }
  html .ga-page .gab-netcol > .gab-map{ flex: 0 0 auto !important; min-height: 0 !important; }
  /* min-height:0 是必需的：两张地图图片固有比例不同（中国 1.336 / 世界 1.520），
     而 flex 项默认 min-height:auto → 左图的 min-content 高（≈517px）会**压过**
     aspect-ratio 的 512.25px，导致两图差 4.7px。归零后两图严格按 4:3 取高、完全对齐。 */
}

/* ============================================================================
   §23  V12 · 页眉 Products 下拉 = 与 Support 同款单列
   --------------------------------------------------------------------------
   2026-10-14 二次调整：先上线了「两列 mega（品类 + 品牌）」，用户实测反馈观感仍不好，
   明确要求**照 Support 做**。故导航重写为单列 `.gd-global-dropdown`
   （结构/间距/边框/hover/键盘交互**全部复用 header.css + shell-nav.js 既有契约**，
   本模块不再自带任何布局）；本层只补一件事：把品类数量做成淡色、右对齐
   （`.gd-navprod__row` / `.gd-navprod__n`，`.gd-global-dropdown` 本身宽度 290px 不动）。
   上一版针对 `.gd-mega--cats2` / `.gd-navprod`（含 560px 卡片、品牌列铺满、单面板兜底）
   的规则已随结构一并**移除**，避免留下失效样式误导后人。
   ========================================================================== */
html .gd-global-header .gd-global-dropdown a.gd-navprod__row{
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 14px;
}
html .gd-global-header .gd-global-dropdown .gd-navprod__n{
  margin-left: auto;
  color: #8b9aa5 !important;
  font-size: 12px !important;
  font-weight: 400 !important;
}

/* ============================================================================
   §26  V15 · /news/ 文章列表：卡片标题去掉下划线（hover 才出现）
   --------------------------------------------------------------------------
   下划线来自 Astra 的 `.ast-single-post .entry-content a`（/news/ 是页面，标题结构为
   `article.gnx-item > .gnx-item__body > h3 > a`，链接本身没有 class 可挂）。
   卡片式列表按站点既有做法：**常态无下划线、hover/focus 才有**。
   `.gnx-` 前缀是该列表页自带命名空间，只作用于 /news/（已核对其余页面无该类名）。
   ========================================================================== */
html .gnx-item a{ text-decoration: none !important; }
html .gnx-item a:hover,
html .gnx-item a:focus-visible{ text-decoration: underline !important; }

/* ============================================================================
   §27  V16 · /news/ 底部"Browse all N articles"块 → 保留 DOM、视觉隐藏
   --------------------------------------------------------------------------
   2026-10-14 用户反馈"这个 browse all 太丑，删去或隐藏"。
   该块是 50-routing/post-urls.php 注入的**服务端可爬文章索引**：/news/ 的文章列表
   是 JS 从 REST 渲染的，若删掉此块，页面 HTML 里就没有任何文章链接（只能靠 sitemap）。
   故按用户给的第二个选项：**保留在 DOM（爬虫可读）、视觉隐藏**——而且这 5 条链接
   用户在上方卡片里本就能看到，隐藏重复索引不涉及"隐藏内容"。
   注意：只用属性选择器限定**本模块注入的那个块**（`/support/` 用的是 `.gp-sup` 卡片，不受影响）。
   回滚：删除本段（指纹自动更新）。
   ========================================================================== */
html .gpcl-index[data-gpuloom="postroute-hub"]{
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  margin: -1px !important;
  padding: 0 !important;
  border: 0 !important;
  overflow: hidden !important;
  white-space: nowrap !important;
  clip: rect(0 0 0 0) !important;
  clip-path: inset(50%) !important;
}

/* ============================================================================
   §24  V13 · 目录品类页的注入头（.gpc-cathead）改为"视觉隐藏、DOM 保留"
   --------------------------------------------------------------------------
   ⚠️ 2026-10-14 复原：本节与 §25 曾在一次"替换 §23"的文件重写中被**误删**
   （用 `s[:start] + 新内容` 截断，把 §23 之后的内容整段丢掉）。用户随后在
   "产品页点 Category 回 /catalog/<品类>/"时看到这块又冒出来 → 才发现。
   教训：**不要用切片截断 CSS 文件**；改完必须核对节标记清单（见文件末尾 CHANGELOG 区）。
   --------------------------------------------------------------------------
   来源（2026-10-14 用户反馈）：目录页顶部这块（面包屑 Home › Catalog › <品类> + 大字 H1 +
   导语）"影响观感"。实测两个问题：
     ① 目录页本身已有标题区（PRODUCTS 侧栏 + 品类高亮 + "N products"），再顶一块
        126px 高的空白区，重复且突兀；
     ② SPA 内部切品类**不刷新服务端** → 该块的 H1/导语会**停在旧品类**。
   处理：**不删除**（它是该页唯一的"非 display:none"H1 与面包屑；主题自带
   `h1.entry-title` 实测高度为 0 = display:none），改为标准 sr-only 视觉隐藏。
   ========================================================================== */
html body .gpc-cathead{
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  margin: -1px !important;
  padding: 0 !important;
  border: 0 !important;
  overflow: hidden !important;
  white-space: nowrap !important;
  clip: rect(0 0 0 0) !important;
  clip-path: inset(50%) !important;
}

/* ============================================================================
   §25  V14 · 首页观感统一（用户 2026-10-14 五条反馈）
   --------------------------------------------------------------------------
   ⚠️ 2026-10-14 复原（同 §24，在一次文件重写中被误删）。
   ① 首屏轮播每 4 秒轮换 —— JS 在页面正文里（间隔 8s→4s），且该脚本原被 LiteSpeed
      延迟（静置 18s 仍停在第 1 张）→ 已在正文给 `<script>` 加 `data-no-optimize="1"`。
   ② 第 2/4 张 slide 由深色改浅色 —— 正文里 `--dark` 已换成 `--soft`；本层给浅底 +
      半透明照片（配合既有浅色 `:after` 蒙版）。
   ③ 所有大标题 ≤2 行 —— 只有首屏 H1 超行；文案区放宽到 52vw、标题改更保守的 fluid。
      关键：**clamp 下限必须够低**，否则窄断点比例被破坏反而超行（27px 下限 → 900/768 变 3 行）。
   ④ `.gd-project`（深色带）不再通栏拉伸 → 收进 1320px + 圆角。
   ⑤ `.gd-quote__panel`（RFQ）→ 圆角 + 毛玻璃（含 @supports 回退）。
   全部用 `html` 前缀抬特异性压过页面内联 CSS。
   ========================================================================== */
@media(min-width:700px){
  html .gd .gd-story__copy{ width: min(880px, 52vw) !important; }
  html .gd .gd-story h1,
  html .gd .gd-story h2{
    font-size: clamp(20px, 2.75vw, 42px) !important;
    line-height: 1.13 !important;
    text-wrap: balance;
  }
}
html .gd .gd-story__slide--soft{
  background: #eef7fb !important;
  color: #0e2841 !important;
}
html .gd .gd-story__slide--soft .gd-story__scene{
  opacity: .42 !important;
  filter: saturate(.92) brightness(1.04) contrast(.96) !important;
}
html .gd .gd-story__slide--soft h1,
html .gd .gd-story__slide--soft h2{ color: #0e2841 !important; }

html .gd .gd-project{
  width: min(1320px, calc(100% - 48px)) !important;
  margin-inline: auto !important;
  border-radius: 24px !important;
  padding-left: clamp(24px, 4vw, 58px) !important;
  padding-right: clamp(24px, 4vw, 58px) !important;
}
html .gd .gd-project-item{ padding-inline: clamp(16px, 2.4vw, 30px) !important; }

html .gd .gd-quote{
  background:
    radial-gradient(120% 130% at 10% 0%, rgba(238,246,251,.95) 0%, rgba(238,246,251,0) 58%),
    radial-gradient(90% 120% at 92% 100%, rgba(232,241,248,.9) 0%, rgba(232,241,248,0) 62%);
}
html .gd .gd-quote__panel{
  border-radius: 22px !important;
  border: 1px solid rgba(255,255,255,.72) !important;
  background: rgba(255,255,255,.62) !important;
  box-shadow: 0 18px 44px rgba(12,28,42,.10), inset 0 1px 0 rgba(255,255,255,.75) !important;
  -webkit-backdrop-filter: blur(16px) saturate(1.15);
  backdrop-filter: blur(16px) saturate(1.15);
}
@supports not ((backdrop-filter: blur(2px)) or (-webkit-backdrop-filter: blur(2px))){
  html .gd .gd-quote__panel{ background: #f7f9fa !important; }
}

/* ============================================================================
   §28  V17 · 商品页 Related products 卡片等高（标题 1/2/3 行不再撑高卡片）
   --------------------------------------------------------------------------
   2026-10-14 用户反馈："Related products 的 add to list 窗高度受文字高度影响，不一样高"。
   实测（`/catalog/workstation/dell/precision-7960-tower-workstation/`）：同名卡片
   卡片高 **413 vs 433**、标题高 **41（两行下限）vs 61（三行）** → 名字特别长的商品把
   卡片撑高 20px，同行按钮跟着错位。
   修法三件套：
     ① 卡片拉伸填满网格行（`height:100%`）→ 同一行等高；
     ② 按钮 `margin-top:auto` → 贴底对齐；
     ③ 标题**封顶两行**（已有 `min-height` 两行下限 → 上下都锁死，所有卡片完全等高）。
   注意：`-webkit-line-clamp` 在有别的规则改 `display` 时会静默失效，
   故显式写 `display:-webkit-box !important` 并加 `max-height` 硬上限兜底。
   回滚：删除本段。
   ========================================================================== */
html .single-product .related.products li.product{
  height: 100% !important;
}
html .single-product .related.products li.product .woocommerce-loop-product__title{
  display: -webkit-box !important;
  -webkit-box-orient: vertical !important;
  -webkit-line-clamp: 2 !important;
  overflow: hidden !important;
  min-height: calc(2 * 1.35em) !important;
  max-height: calc(2 * 1.35em) !important;
}
html .single-product .related.products li.product .button{
  margin-top: auto !important;
}

/* ============================================================================
   §29  V18 · 目录页两处修补（2026-10-14）
   --------------------------------------------------------------------------
   ① **空品类顶掉 `[hidden]`**：SPA 用 `hidden` 属性隐藏 0 商品的品类
      （页面 5057 的脚本按术语表核对后 `a.hidden = true`），但 `.gpc-category-list a`
      的 `display:flex` 比 `[hidden]{display:none}` 优先级高（同为 0,1,0 时后者在源序上输）
      → 实测 "Memory 0" 仍显示；且 `hidden` 属性带 display 值时会失效。本规则让空品类**真的消失**。
   ② ~~**品牌筛选提示**~~（`.gpc-brandfilter`）已于 2026-10-14 移除；
      实现记录见 `archive/SEO-URL重构/品牌筛选提示-实现记录-2026-10-14.md`。
   ========================================================================== */
html .gpc-category-list a[hidden]{ display: none !important; }
/* （原 §29-② 品牌筛选提示的样式 .gpc-brandfilter* 已于 2026-10-14 移除；
   实现记录见 archive/SEO-URL重构/品牌筛选提示-实现记录-2026-10-14.md） */

/* ============================================================================
   §30  V19 · 目录/品类页底部两块 SEO 内容 → 保留 DOM、视觉隐藏（2026-10-14 用户）
   --------------------------------------------------------------------------
   用户："这个整体都隐藏……就不能保持可爬的同时然后隐藏吗"。
   涉及两块（都只在 page-id-5057 = /catalog/ 及其品类页出现）：
     ① .gp-hubdir —— 页 5057 正文的 "Quick links"（h2 + 快捷链接 + more 行）
     ② .gpcl-index —— 服务端可爬商品索引，折叠为 "Browse all N products"
        （/catalog/ 由 12-crawlable-links.php 注入 696 条；品类页由 catalog-taxonomy
          注入该类全部商品）。它本就是给爬虫留的链接，隐藏后**链接仍在 DOM**。
   做法：与 §27（/news/ 的 browse-all）一致的 sr-only 视觉隐藏。回滚：删本段。
   ⚠️ 改本文件禁止切片截断（§24/§25 曾被误删）；改完核对节标记。
   ========================================================================== */
html body.page-id-5057 .gp-hubdir,
html body.page-id-5057 .gpcl-index{
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  margin: -1px !important;
  padding: 0 !important;
  border: 0 !important;
  overflow: hidden !important;
  white-space: nowrap !important;
  clip: rect(0 0 0 0) !important;
  clip-path: inset(50%) !important;
}

/* ============================================================================
   §31  V20 · 点击后的浏览器默认"虚线方框" → 去掉（2026-10-14 用户反馈）
   --------------------------------------------------------------------------
   现象：点「Add to Inquiry List / Added →」等**链接**后，元素保留焦点，浏览器
   画出默认的**虚线方框**。它是 UA 的 `:focus` 圈，不是本站样式——本站的
   `:focus-visible` 圈是蓝色实线（part-a/part-b + 设计层），只在**键盘**操作时出现。
   处理：鼠标/触摸产生的 `:focus`（非 `:focus-visible`）不画圈；键盘导航仍由
   `:focus-visible` 提供可见焦点环，无障碍不受影响。
   回滚：删本段。
   ========================================================================== */
html :where(a, button, summary, [role="button"]):focus:not(:focus-visible){
  outline: none !important;
}
