/* Shared directory proportions for the live catalog and decoration preview. */
.catalog-directory { background:#fff; border:1px solid #edf0f4; border-radius:6px; overflow:hidden; }
.directory-row { display:grid; grid-template-columns:78px minmax(0,1fr) auto; border-bottom:1px solid #edf0f4; }
.directory-row:last-child { border-bottom:0; }
.directory-label { display:flex; align-items:center; justify-content:center; color:#697585; background:#f7f8fa; font-size:14px; }
.directory-options { display:grid; grid-template-columns:repeat(auto-fill,minmax(86px,1fr)); align-content:start; gap:8px 12px; padding:16px; min-width:0; }
.directory-options .directory-option { display:flex; flex-direction:column; align-items:center; justify-content:flex-start; gap:6px; min-width:0; min-height:86px; padding:8px 4px; border:1px solid transparent; border-radius:6px; color:#3b4656; background:#fafbfd; font-size:13px; line-height:20px; cursor:pointer; }
.directory-options .directory-option:hover { background:#f0f7ff; color:#1677e8; }
.directory-options .directory-option.is-active { border-color:#d2e5fb; border-bottom:3px solid #4c98e8; padding-bottom:6px; color:#1677e8; background:#edf6ff; }
.directory-name { max-width:100%; overflow-wrap:anywhere; text-align:center; }
.directory-badge { display:inline-block; max-width:100%; padding:2px 6px; border-radius:3px; background:#fff1e8; color:#af4312; font-size:11px; font-weight:500; overflow-wrap:anywhere; }
.directory-icon { display:grid; place-items:center; width:40px; height:40px; flex-shrink:0; border-radius:10px; color:#3286e6; background:#e9f3ff; }
.directory-icon[data-tone="1"] { color:#ec725f; background:#fff0eb; }
.directory-icon[data-tone="2"] { color:#8670cf; background:#f1edfb; }
.directory-icon[data-tone="3"] { color:#d89324; background:#fff6dd; }
.directory-icon[data-tone="4"] { color:#27a58d; background:#e6f7f2; }
.directory-icon[data-tone="5"] { color:#bf6c9d; background:#faecf5; }
.directory-icon svg { display:block; width:28px; height:28px; stroke-width:1.8; }
.directory-icon img { width:100%; height:100%; object-fit:contain; border-radius:6px; }
.directory-toggle { align-self:start; min-width:64px; min-height:36px; margin:22px 18px 0 0; padding:6px 12px; border:0; border-radius:4px; background:#2389ef; color:white; cursor:pointer; }
.directory-options[data-collapsed="true"] .directory-option:not(.is-active) { display:none; }
.directory-empty { padding:12px 20px; color:#7d8896; }
body[data-app="mall-pc"] #products.catalog-shell { width:calc(100% - 32px); max-width:min(var(--store-body-width,1280px),1240px); margin:0 auto; padding:18px 0 60px; }
body[data-app="mall-pc"] #categories.catalog-directory { display:block; position:static; margin:0 0 18px; padding:0; background:#fff; box-shadow:none; }
body[data-app="mall-pc"] #categories #catalogCategories { display:grid; gap:8px 12px; padding:16px; }
body[data-app="mall-pc"] #categories #catalogCategories button { flex-direction:column; justify-content:flex-start; width:auto; min-width:0; min-height:86px; padding:8px 4px; gap:6px; border:1px solid transparent; border-radius:6px; background:#fafbfd; box-shadow:none; color:#3b4656; font-size:13px; line-height:20px; transform:none; }
body[data-app="mall-pc"] #categories #catalogCategories button.is-active { border-color:#d2e5fb; border-bottom:3px solid #4c98e8; padding-bottom:6px; color:#1677e8; background:#edf6ff; }
body[data-app="mall-pc"] #categories #catalogCategories[data-collapsed="true"] button:not(.is-active) { display:none; }
body[data-app="mall-pc"] #categories .directory-icon svg { display:block; width:28px; height:28px; }
body[data-app="mall-pc"] #products .catalog-main { background:white; border:1px solid #edf0f4; border-radius:6px; overflow:hidden; }
body[data-app="mall-pc"] #products .catalog-toolbar { min-height:48px; margin:0; padding:0 20px; border:0; border-bottom:1px solid #edf0f4; background:#fafbfd; border-radius:0; }
body[data-app="mall-pc"] #products .catalog-toolbar h2 { font-size:15px; }
.catalog-sort { display:flex; gap:22px; align-items:center; }
.catalog-sort button { min-height:44px; background:none; border:0; padding:6px 0; font-size:13px; color:#727f90; cursor:pointer; }
.catalog-sort button[aria-pressed="true"] { color:#2389ef; }
body[data-app="mall-pc"] #products .catalog-result-meta { margin:0; padding:10px 22px; min-height:36px; font-size:12px; }
body[data-app="mall-pc"] #products .product-grid { padding:0 20px 20px; }
body[data-app="mall-pc"] #products .product-code { display:inline-block; font-size:12px; color:#83909c; margin:0 0 6px; }
.product-delivery,.product-stock { display:inline-block; margin:0 5px 0 0; padding:2px 6px; font-size:12px; line-height:20px; background:#eaf4ff; color:#3986d5; border-radius:3px; }
.product-stock { background:#edf8f2; color:#388d69; }
.product-stock.is-empty { background:#f9eded; color:#b55b5b; }
body[data-product-show-stock="false"] .product-stock { display:none; }
body[data-app="mall-pc"] #products .product-meta strong { color:#24988f; font-size:20px; }
body[data-app="mall-pc"] #products .product-meta button { min-width:112px; min-height:36px; border:0; border-radius:4px; background:#2389ef; color:#fff; }
body[data-app="mall-pc"] #products .product-meta button:disabled { background:#adb5be; cursor:not-allowed; }
body[data-app="mall-pc"][data-product-display-mode="list"] #products .product-grid { display:block; padding:0; }
body[data-app="mall-pc"][data-product-display-mode="list"] #products .product-card:not(.store-product-tile) { display:flex; flex-direction:row; align-items:center; gap:18px; min-height:140px; padding:20px 24px; border:0; border-bottom:1px solid #f0f2f5; border-radius:0; box-shadow:none; transform:none; }
body[data-app="mall-pc"][data-product-display-mode="list"] #products .product-card:hover { background:#fafcff; }
body[data-app="mall-pc"][data-product-display-mode="list"] #products .product-card > .mf-toggle-wrap { position:static; flex:0 0 auto; align-self:center; }
body[data-app="mall-pc"][data-product-display-mode="list"] #products .product-card .mf-toggle { width:34px; height:34px; }
body[data-app="mall-pc"][data-product-display-mode="list"] #products .product-card:not(.store-product-tile) .product-visual { flex:0 0 96px; width:96px; height:96px; min-height:0; border:1px solid #eff2f6; border-radius:6px; }
body[data-app="mall-pc"][data-product-display-mode="list"] #products .product-visual img { width:100%; height:100%; padding:0; object-fit:contain; }
body[data-app="mall-pc"][data-product-display-mode="list"] #products .product-card:not(.store-product-tile) .product-body { display:grid !important; grid-template-columns:minmax(0,1fr) auto; grid-template-rows:auto auto; align-items:start; flex:1; min-width:0; padding:0; }
body[data-app="mall-pc"][data-product-display-mode="list"] #products .product-card:not(.store-product-tile) .product-body h3 { grid-column:1; grid-row:1; font-size:15px; margin:0 0 12px; overflow-wrap:anywhere; }
body[data-app="mall-pc"][data-product-display-mode="list"] #products .product-label { display:none; }
body[data-app="mall-pc"][data-product-display-mode="list"] #products .product-body > p { display:none; }
body[data-app="mall-pc"][data-product-display-mode="list"] #products .product-identifiers { grid-column:1; }
/* Legacy cards nest price/actions in the body; separate action grids own their tracks. */
body[data-app="mall-pc"][data-product-display-mode="list"] #products .product-body > .product-meta { grid-column:2; grid-row:1 / span 2; display:flex; flex-direction:column; align-items:flex-end; gap:10px; margin:0 0 0 18px; }
.catalog-pagination { display:flex; align-items:center; justify-content:center; flex-wrap:wrap; gap:10px; padding:22px; font-size:13px; color:#798696; }
.catalog-pagination button { min-width:34px; min-height:34px; padding:5px 10px; border:1px solid #e1e7ee; border-radius:4px; background:#fff; color:#536273; cursor:pointer; }
.catalog-pagination button[aria-current="page"] { background:#2389ef; color:#fff; border-color:#2389ef; }
.catalog-pagination button:disabled { opacity:.5; cursor:not-allowed; }
.directory-preview { padding:18px; background:#f3f5f7; }
.directory-preview-products { margin-top:18px; background:#fff; }
.directory-preview-toolbar { padding:14px 20px; background:#fafbfd; color:#428bd3; font-size:13px; }
.directory-preview-product { display:flex; align-items:center; gap:20px; padding:20px; border-bottom:1px solid #edf0f4; }
.directory-preview-cover { display:grid; place-items:center; width:80px; height:80px; background:#edf4fc; color:#7b9ec1; }
.directory-preview-product > div:nth-child(2) { flex:1; }
.directory-preview-product p { font-size:12px; color:#8b98a5; }
.directory-preview-product > span { font-size:13px; padding:8px 16px; background:#2389ef; color:white; border-radius:4px; }
@media (max-width:760px) {
  .directory-row { grid-template-columns:46px minmax(0,1fr) auto; }
  .directory-options { grid-template-columns:repeat(auto-fill,minmax(64px,1fr)); padding:10px; gap:6px; }
  .directory-toggle { margin:14px 8px 0 0; min-width:48px; padding:6px; }
  body[data-app="mall-pc"] #products.catalog-shell { padding:12px 0 30px; }
  body[data-app="mall-pc"] #categories #catalogCategories { padding:10px; gap:6px; }
  body[data-app="mall-pc"][data-product-display-mode="list"] #products .product-card:not(.store-product-tile) { padding:14px; gap:12px; }
  body[data-app="mall-pc"][data-product-display-mode="list"] #products .product-card:not(.store-product-tile) .product-visual { flex-basis:64px; width:64px; height:64px; }
  body[data-app="mall-pc"][data-product-display-mode="list"] #products .product-card:not(.store-product-tile) .product-body { display:block !important; }
  body[data-app="mall-pc"][data-product-display-mode="list"] #products .product-body > .product-meta { flex-direction:row; justify-content:space-between; align-items:center; margin:8px 0 0; }
  body[data-app="mall-pc"] #products .product-meta button { min-width:80px; }
}
/* modern 指定分类页：真实路径蓝条与文字子分类，全部商品仍保留目录导航。 */
body[data-app="mall-pc"] #products:has(.catalog-directory-compact) { width:calc(100% - 40px); max-width:1360px; padding-top:16px; }
body[data-app="mall-pc"] #categories.catalog-directory-compact { margin-bottom:0; border:0; border-radius:8px 8px 0 0; }
body[data-app="mall-pc"] #categories.catalog-directory-compact > .directory-row:first-of-type { display:none; }
body[data-app="mall-pc"] .catalog-path-bar { display:flex; align-items:center; flex-wrap:wrap; gap:9px; min-height:44px; padding:10px 14px; color:#fff; background:linear-gradient(100deg,#24b3f4,#1677ff); font-size:14px; }
body[data-app="mall-pc"] .catalog-path-bar :is(a,button) { max-width:100%; min-height:24px; margin:0; padding:0; border:0; color:#fff; background:none; font:inherit; text-decoration:none; overflow-wrap:anywhere; cursor:pointer; }
body[data-app="mall-pc"] .catalog-path-bar :is(a,button):hover { text-decoration:underline; }
body[data-app="mall-pc"] #categories.catalog-directory-compact .directory-row { display:block; border:0; }
body[data-app="mall-pc"] #categories.catalog-directory-compact .directory-label,body[data-app="mall-pc"] #categories.catalog-directory-compact .directory-icon { display:none; }
body[data-app="mall-pc"] #categories.catalog-directory-compact .directory-options { display:flex; align-items:center; flex-wrap:wrap; gap:7px; padding:12px 16px; }
body[data-app="mall-pc"] #categories.catalog-directory-compact .directory-option { display:flex; flex-direction:row; min-width:0; min-height:30px; gap:5px; padding:6px 12px; border:1px solid #d4d9e0; border-radius:7px; background:#fff; color:#555; font-size:13px; line-height:18px; }
body[data-app="mall-pc"] #categories.catalog-directory-compact .directory-option.is-active { padding:6px 12px; border:1px solid #ddd; color:#222; background:#ddd; }
body[data-app="mall-pc"] #products:has(.catalog-directory-compact) .catalog-main { border:0; border-radius:0 0 8px 8px; }
body[data-app="mall-pc"] #products:has(.catalog-directory-compact) .catalog-toolbar { min-height:38px; padding:0 16px; background:#fff; border-top:1px solid #edf0f4; }
body[data-app="mall-pc"] #products:has(.catalog-directory-compact) .catalog-sort button { min-height:36px; }
body[data-app="mall-pc"] #products:has(.catalog-directory-compact) .catalog-result-meta { min-height:0; padding:4px 16px; }
body[data-app="mall-pc"] #products:has(.catalog-directory-compact) .product-grid { padding:0 16px 16px; }
@media(max-width:760px) { body[data-app="mall-pc"] #products:has(.catalog-directory-compact) { width:calc(100% - 20px); } body[data-app="mall-pc"] #categories.catalog-directory-compact .directory-options { gap:6px; padding:10px; } }

/* 分类商品页视觉收口：目录、工具栏和商品列表共用顶部 Logo 的内容轨道。 */
body[data-app="mall-pc"] #products.catalog-shell {
  box-sizing:border-box;
  width:var(--store-layout-rail,calc(100% - 48px));
  max-width:var(--store-content-width,1240px);
  margin-inline:auto;
}
body[data-app="mall-pc"] #categories.catalog-directory {
  border-color:#e6ebf2;
  border-radius:10px;
  box-shadow:0 8px 26px rgba(29,65,112,.04);
}
body[data-app="mall-pc"] #categories .directory-row {
  min-height:122px;
  border-bottom-color:#edf1f6;
}
body[data-app="mall-pc"] #categories .directory-label {
  color:#516277;
  background:#f7f9fc;
  font-weight:600;
  letter-spacing:.04em;
}
body[data-app="mall-pc"] #categories .directory-options {
  grid-template-columns:repeat(auto-fill,minmax(86px,1fr));
  gap:10px 12px;
  padding:16px 18px;
}
body[data-app="mall-pc"] #categories .directory-options .directory-option {
  position:relative;
  min-height:88px;
  border-color:transparent;
  background:#fbfcfe;
  transition:transform .2s ease,background-color .2s ease,border-color .2s ease,box-shadow .2s ease,color .2s ease;
}
body[data-app="mall-pc"] #categories .directory-options .directory-option:hover,
body[data-app="mall-pc"] #categories .directory-options .directory-option:focus-visible {
  z-index:1;
  transform:translateY(-3px);
  border-color:#d9e8ff;
  background:#f3f8ff;
  box-shadow:0 9px 18px rgba(44,118,220,.12);
  outline:0;
}
body[data-app="mall-pc"] #categories .directory-options .directory-option.is-active {
  transform:translateY(-1px);
  border-color:#c3ddff;
  background:linear-gradient(180deg,#f0f7ff 0%,#e8f2ff 100%);
  box-shadow:0 5px 14px rgba(40,125,236,.12);
}
body[data-app="mall-pc"] #categories .directory-icon {
  transition:transform .2s ease,box-shadow .2s ease;
}
body[data-app="mall-pc"] #categories .directory-option:hover .directory-icon,
body[data-app="mall-pc"] #categories .directory-option:focus-visible .directory-icon {
  transform:scale(1.08) rotate(-2deg);
  box-shadow:0 5px 12px rgba(48,121,220,.14);
}
body[data-app="mall-pc"] #categories .directory-toggle {
  align-self:center;
  margin:0 16px 0 0;
  border:1px solid #2e86ee;
  background:linear-gradient(180deg,#318df5,#2474e8);
  box-shadow:0 6px 14px rgba(36,116,232,.18);
  transition:transform .2s ease,box-shadow .2s ease,filter .2s ease;
}
body[data-app="mall-pc"] #categories .directory-toggle:hover,
body[data-app="mall-pc"] #categories .directory-toggle:focus-visible {
  transform:translateY(-2px);
  box-shadow:0 10px 18px rgba(36,116,232,.27);
  filter:saturate(1.08);
  outline:0;
}

/* 商品行与网格卡片共用轻量的悬浮反馈，数据和购买事件仍由原 JS/API 提供。 */
body[data-app="mall-pc"] #products .product-card {
  position:relative;
  overflow:hidden;
  border-color:#e8edf3;
  background:#fff;
  transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease,background-color .22s ease;
}
body[data-app="mall-pc"] #products .product-card::after {
  position:absolute;
  inset:0;
  pointer-events:none;
  content:"";
  border-radius:inherit;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.9);
  opacity:.8;
}
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .product-card:hover,
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .product-card:focus-within {
  z-index:1;
  transform:translateY(-5px);
  border-color:#cfe1fb;
  box-shadow:0 16px 30px rgba(32,86,151,.14);
}
body[data-app="mall-pc"][data-product-display-mode="list"] #products .product-card:hover {
  transform:none;
  background:#fbfdff;
  box-shadow:0 5px 16px rgba(32,86,151,.08);
}
body[data-app="mall-pc"] #products .product-visual {
  position:relative;
  background:linear-gradient(145deg,#f7faff,#f1f5fa);
}
body[data-app="mall-pc"] #products .product-visual img {
  transition:transform .35s cubic-bezier(.2,.7,.2,1),filter .35s ease;
}
body[data-app="mall-pc"] #products .product-card:hover .product-visual img,
body[data-app="mall-pc"] #products .product-card:focus-within .product-visual img {
  transform:scale(1.045);
  filter:saturate(1.04);
}
body[data-app="mall-pc"] #products .product-card .store-product-title {
  transition:color .2s ease;
}
body[data-app="mall-pc"] #products .product-card:hover .store-product-title,
body[data-app="mall-pc"] #products .product-card:focus-within .store-product-title {
  color:#146ee8;
}
body[data-app="mall-pc"] #products .product-card .store-product-buy {
  position:relative;
  overflow:hidden;
  transition:transform .2s ease,box-shadow .2s ease,background-color .2s ease,border-color .2s ease;
}
body[data-app="mall-pc"] #products .product-card .store-product-buy::before {
  position:absolute;
  top:0;
  bottom:0;
  left:-45%;
  width:28%;
  content:"";
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.42),transparent);
  transform:skewX(-18deg);
  transition:left .5s ease;
}
body[data-app="mall-pc"] #products .product-card .store-product-buy:hover:not(:disabled),
body[data-app="mall-pc"] #products .product-card .store-product-buy:focus-visible:not(:disabled) {
  transform:translateY(-2px);
  box-shadow:0 7px 14px rgba(35,137,239,.24);
  outline:0;
}
body[data-app="mall-pc"] #products .product-card .store-product-buy:hover:not(:disabled)::before,
body[data-app="mall-pc"] #products .product-card .store-product-buy:focus-visible:not(:disabled)::before { left:125%; }

/* 服务标签只使用 API 返回的 serviceTags；空数组不会占用操作区。 */
body[data-app="mall-pc"] #products .product-services {
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:flex-start;
  gap:6px;
  min-width:0;
}
body[data-app="mall-pc"] #products .product-service-tag {
  display:inline-flex;
  align-items:center;
  gap:4px;
  min-width:0;
  color:#66758b;
  font-size:11px;
  line-height:18px;
  white-space:nowrap;
}
body[data-app="mall-pc"] #products .product-service-tag svg {
  width:17px;
  height:17px;
  color:#48c5ea;
  stroke-width:2.5;
}
body[data-app="mall-pc"] #products .product-service-tag:nth-child(2) svg { color:#243f95; }
body[data-app="mall-pc"] #products .product-actions.has-services {
  grid-template-columns:minmax(110px,1fr) minmax(86px,auto) 42px minmax(112px,120px);
}
body[data-app="mall-pc"] #products .product-actions.has-services > .product-services { grid-column:1; }
body[data-app="mall-pc"] #products .product-actions.has-services > .price-and-limit { grid-column:2; }
body[data-app="mall-pc"] #products .product-actions.has-services > .mf-toggle-wrap { grid-column:3; }
body[data-app="mall-pc"] #products .product-actions.has-services > .store-product-buy { grid-column:4; }
/* 网格卡片空间较窄：服务标签收为图标列，价格和购买按钮仍保持同一行。 */
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .product-actions.has-services {
  grid-template-columns:36px minmax(0,1fr) 36px minmax(88px,100px);
  gap:6px;
}
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .product-actions.has-services > .product-services { grid-column:1; grid-row:1; flex-direction:column; gap:2px; }
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .product-actions.has-services > .price-and-limit { grid-column:2; grid-row:1; }
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .product-actions.has-services > .mf-toggle-wrap { grid-column:3; grid-row:1; }
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .product-actions.has-services > .store-product-buy { grid-column:4; grid-row:1; min-width:0; padding-inline:6px; }
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .product-service-tag { width:18px; overflow:hidden; font-size:0; }
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .product-service-tag svg { flex:0 0 17px; }
body[data-app="mall-pc"][data-product-display-mode="list"] #products .store-product-tile .store-product-title { color:#111827; }

@media (max-width:900px) {
  body[data-app="mall-pc"] #products .product-actions.has-services {
    grid-template-columns:minmax(90px,1fr) minmax(80px,auto) 42px minmax(100px,112px);
  }
  body[data-app="mall-pc"][data-product-display-mode="grid"] #products .product-actions.has-services {
    grid-template-columns:30px minmax(0,1fr) 32px minmax(80px,96px);
    gap:5px;
  }
}
@media (max-width:600px) {
  body[data-app="mall-pc"] #products.catalog-shell { width:calc(100% - 20px); }
  body[data-app="mall-pc"] #categories .directory-row { min-height:0; }
  body[data-app="mall-pc"] #categories .directory-options { grid-template-columns:repeat(auto-fill,minmax(64px,1fr)); gap:6px; padding:10px; }
  body[data-app="mall-pc"] #categories .directory-options .directory-option { min-height:76px; }
  body[data-app="mall-pc"] #categories .directory-toggle { min-width:50px; margin-right:8px; padding:6px 8px; }
  body[data-app="mall-pc"] #products .product-card:not(.store-product-tile) { transform:none; }
  body[data-app="mall-pc"] #products .product-actions.has-services { grid-template-columns:minmax(0,1fr) 42px minmax(82px,100px); }
  body[data-app="mall-pc"] #products .product-actions.has-services > .product-services { grid-column:1 / -1; }
  body[data-app="mall-pc"] #products .product-actions.has-services > .price-and-limit { grid-column:1; grid-row:2; }
  body[data-app="mall-pc"] #products .product-actions.has-services > .mf-toggle-wrap { grid-column:2; grid-row:2; }
  body[data-app="mall-pc"] #products .product-actions.has-services > .store-product-buy { grid-column:3; grid-row:2; }
}
@media (prefers-reduced-motion:reduce) {
  body[data-app="mall-pc"] #categories .directory-options .directory-option,
  body[data-app="mall-pc"] #categories .directory-icon,
  body[data-app="mall-pc"] #categories .directory-toggle,
  body[data-app="mall-pc"] #products .product-card,
  body[data-app="mall-pc"] #products .product-visual img,
  body[data-app="mall-pc"] #products .product-card .store-product-title,
  body[data-app="mall-pc"] #products .product-card .store-product-buy { transition:none; }
  body[data-app="mall-pc"] #products .product-card:hover,
  body[data-app="mall-pc"] #products .product-card:focus-within,
  body[data-app="mall-pc"] #categories .directory-options .directory-option:hover,
  body[data-app="mall-pc"] #categories .directory-options .directory-option:focus-visible { transform:none; }
  body[data-app="mall-pc"] #products .product-card .store-product-buy::before { display:none; }
}

/* ==========================================================================
   V2 视觉层（catalog-v2-20261002）
   只覆盖视觉与动效，不改变既有 DOM 结构与数据流；回滚时删除本段即可。
   ========================================================================== */
:root {
  --v2-blue:#2b7fff; --v2-blue-deep:#1668dc; --v2-blue-bg:#e8f1ff; --v2-blue-bg-hover:#f2f7ff;
  --v2-red:#f5222d; --v2-orange:#fa541c; --v2-ease:cubic-bezier(.22,.68,.32,1);
  --v2-spring:cubic-bezier(.34,1.56,.64,1);
}

/* ---------- 目录区 ---------- */
body[data-app="mall-pc"] .catalog-directory { border-radius:14px; border-color:#eef0f4; box-shadow:0 6px 24px -8px rgba(30,60,120,.10); }
body[data-app="mall-pc"] .directory-row { grid-template-columns:64px minmax(0,1fr) auto; align-items:start; }
body[data-app="mall-pc"] .directory-label {
  position:relative; justify-content:flex-start; padding:22px 0 0 18px; background:transparent;
  font-size:13px; font-weight:600; color:#5a6472;
}
body[data-app="mall-pc"] .directory-label::before {
  content:""; width:6px; height:6px; border-radius:2px; background:var(--v2-blue);
  transform:rotate(45deg); margin-right:6px; flex-shrink:0;
}
body[data-app="mall-pc"] .directory-row:nth-child(2) .directory-label::before { background:#18a058; }
body[data-app="mall-pc"] .directory-row:nth-child(3) .directory-label::before { background:#fa8c16; }

body[data-app="mall-pc"] .directory-options { gap:6px; padding:12px 16px; max-height:640px; overflow:hidden; transition:max-height .45s var(--v2-ease); }
body[data-app="mall-pc"] .directory-options[data-collapsed="true"] { max-height:100px; }
body[data-app="mall-pc"] #categories #catalogCategories[data-collapsed="true"] button:not(.is-active) { display:flex; }
body[data-app="mall-pc"] .directory-options .directory-option,
body[data-app="mall-pc"] #categories #catalogCategories button {
  position:relative; min-height:76px; padding:10px 10px 8px; border-radius:11px; background:transparent;
  transition:background .2s var(--v2-ease), transform .2s var(--v2-spring), box-shadow .2s;
}
body[data-app="mall-pc"] .directory-options .directory-option:hover,
body[data-app="mall-pc"] #categories #catalogCategories button:hover {
  background:var(--v2-blue-bg-hover); transform:translateY(-3px); box-shadow:0 8px 18px -8px rgba(43,127,255,.25);
}
body[data-app="mall-pc"] .directory-options .directory-option.is-active,
body[data-app="mall-pc"] #categories #catalogCategories button.is-active {
  background:linear-gradient(160deg,#e8f1ff,#dbe9ff); border:1px solid transparent; border-bottom:1px solid transparent; padding:10px 10px 8px;
}
body[data-app="mall-pc"] .directory-options .directory-option.is-active::after,
body[data-app="mall-pc"] #categories #catalogCategories button.is-active::after {
  content:""; position:absolute; left:50%; bottom:3px; transform:translateX(-50%);
  width:22px; height:3px; border-radius:2px; background:var(--v2-blue);
  box-shadow:0 0 8px rgba(43,127,255,.6); animation:v2-bar-in .3s var(--v2-ease);
}
@keyframes v2-bar-in { from { width:0; opacity:0; } to { width:22px; opacity:1; } }
body[data-app="mall-pc"] .directory-icon { width:44px; height:44px; border-radius:12px; box-shadow:inset 0 1px 0 rgba(255,255,255,.65),0 2px 6px rgba(30,60,120,.08); transition:transform .3s var(--v2-spring), box-shadow .3s; }
body[data-app="mall-pc"] .directory-option:hover .directory-icon { animation:v2-jelly .6s var(--v2-ease); }
@keyframes v2-jelly { 0%{transform:scale(1,1)} 25%{transform:scale(.9,1.1)} 50%{transform:scale(1.12,.88)} 70%{transform:scale(.96,1.04)} 100%{transform:scale(1,1)} }
body[data-app="mall-pc"] .directory-option.is-active .directory-icon { box-shadow:0 0 0 2px var(--v2-blue),0 4px 12px rgba(43,127,255,.3); }
body[data-app="mall-pc"] .directory-name { font-size:13px; transition:color .18s; }
body[data-app="mall-pc"] .directory-option:hover .directory-name { color:var(--v2-blue); }
body[data-app="mall-pc"] .directory-option.is-active .directory-name { color:var(--v2-blue); font-weight:600; }
body[data-app="mall-pc"] .directory-toggle {
  margin:20px 16px 0 0; border-radius:8px; padding:6px 14px; min-height:32px;
  background:var(--v2-blue); transition:all .2s var(--v2-spring);
}
body[data-app="mall-pc"] .directory-toggle:hover { background:var(--v2-blue-deep); transform:translateY(-2px); box-shadow:0 6px 14px rgba(43,127,255,.35); }

/* ---------- 排序与视图切换 ---------- */
body[data-app="mall-pc"] #products .catalog-toolbar { background:#fff; padding:8px 16px; }
body[data-app="mall-pc"] .catalog-sort { display:flex; background:#f5f7fa; border:1px solid #eef0f4; border-radius:10px; padding:3px; gap:2px; }
body[data-app="mall-pc"] .catalog-sort button { min-height:30px; padding:4px 14px; border-radius:7px; font-size:13px; color:#8a919c; transition:all .2s var(--v2-ease); }
body[data-app="mall-pc"] .catalog-sort button:hover { color:var(--v2-blue); }
body[data-app="mall-pc"] .catalog-sort button[aria-pressed="true"] {
  background:linear-gradient(135deg,var(--v2-blue),var(--v2-blue-deep)); color:#fff; font-weight:600;
  box-shadow:0 3px 8px rgba(43,127,255,.35);
}
body[data-app="mall-pc"] .catalog-layout-switch { display:flex; gap:6px; background:#f5f7fa; border:1px solid #eef0f4; border-radius:10px; padding:3px; }
body[data-app="mall-pc"] .catalog-layout-switch button {
  width:30px; height:30px; border:0; border-radius:7px; background:transparent; color:#8a919c;
  display:grid; place-items:center; cursor:pointer; transition:all .2s var(--v2-spring);
}
body[data-app="mall-pc"] .catalog-layout-switch button:hover { color:var(--v2-blue); }
body[data-app="mall-pc"] .catalog-layout-switch button.is-active,
body[data-app="mall-pc"] .catalog-layout-switch button[aria-pressed="true"] { background:var(--v2-blue); color:#fff; box-shadow:0 3px 8px rgba(43,127,255,.4); }

/* ---------- 商品卡片（网格） ---------- */
body[data-app="mall-pc"] #products .product-card {
  border-radius:14px; border:1px solid #eef0f4; transform-style:preserve-3d; will-change:transform;
  transition:transform .3s var(--v2-ease), box-shadow .3s, border-color .3s;
}
body[data-app="mall-pc"] #products .product-card::before {
  content:""; position:absolute; inset:0; pointer-events:none; z-index:0; border-radius:inherit;
  opacity:0; transition:opacity .3s;
  background:radial-gradient(260px circle at var(--mx,50%) var(--my,50%), rgba(43,127,255,.10), transparent 65%);
}
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .product-card:hover::before,
body[data-app="mall-pc"][data-product-display-mode="list"] #products .product-card:hover::before { opacity:1; }
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .product-card:hover,
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .product-card:focus-within {
  border-color:#a9cdff; box-shadow:0 20px 40px -12px rgba(43,127,255,.25),0 4px 12px rgba(30,60,120,.08);
}
body[data-app="mall-pc"] #products .product-card::after {
  content:""; position:absolute; inset:0; pointer-events:none; z-index:1;
  background:linear-gradient(105deg,transparent 40%,rgba(255,255,255,.45) 50%,transparent 60%);
  transform:translateX(-120%); transition:transform .7s var(--v2-ease); box-shadow:none; opacity:1;
}
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .product-card:hover::after { transform:translateX(120%); }

body[data-app="mall-pc"] #products .product-visual { border-radius:13px 13px 0 0; }
body[data-app="mall-pc"] #products .product-visual::before {
  content:""; position:absolute; inset:0; z-index:0;
  background:radial-gradient(60% 80% at 50% 20%, rgba(255,255,255,.5), transparent 70%);
}
body[data-app="mall-pc"] #products .product-card:hover .product-visual img { transform:scale(1.08); }

/* ---------- 价格（大小字层级 + 渐变） ---------- */
body[data-app="mall-pc"] #products .price-v2 {
  display:inline-flex; align-items:baseline; line-height:1;
  background:linear-gradient(120deg,#f5222d,#ff7a45);
  -webkit-background-clip:text; background-clip:text; color:transparent;
  filter:drop-shadow(0 2px 6px rgba(245,34,45,.18));
  transition:transform .25s var(--v2-spring), filter .25s;
}
body[data-app="mall-pc"] #products .price-v2 small { font-size:13px; font-weight:700; margin-right:1px; transform:translateY(-1px); }
body[data-app="mall-pc"] #products .price-v2 b { font-size:23px; font-weight:800; letter-spacing:-.5px; }
body[data-app="mall-pc"] #products .price-v2 i { font-size:14px; font-weight:700; font-style:normal; margin-left:1px; }
body[data-app="mall-pc"] #products .price-v2 .price-suffix { font-size:12px; font-weight:600; margin-left:3px; }
body[data-app="mall-pc"] #products .product-card:hover .price-v2 { transform:scale(1.07); filter:drop-shadow(0 3px 10px rgba(245,34,45,.35)); }
body[data-app="mall-pc"] #products .product-meta strong { color:inherit; font-size:inherit; }

/* ---------- 购买按钮（流动渐变） ---------- */
@keyframes v2-gradient-flow { 0%{background-position:0% 50%} 50%{background-position:100% 50%} 100%{background-position:0% 50%} }
body[data-app="mall-pc"] #products .product-card .store-product-buy {
  border:0; color:#fff; border-radius:8px;
  background:linear-gradient(120deg,#2b7fff,#38bdf8,#2b7fff); background-size:220% 220%;
  animation:v2-gradient-flow 4s ease infinite;
  transition:transform .2s var(--v2-spring), box-shadow .2s;
}
body[data-app="mall-pc"] #products .product-card .store-product-buy:hover:not(:disabled) { transform:scale(1.06); box-shadow:0 8px 20px rgba(43,127,255,.4); }
body[data-app="mall-pc"] #products .product-card .store-product-buy:active:not(:disabled) { transform:scale(.95); }
body[data-app="mall-pc"] #products .product-card .store-product-buy:disabled { background:#f0f1f3; color:#9aa0a8; animation:none; box-shadow:none; }
body[data-app="mall-pc"] #products .product-meta button { background:linear-gradient(120deg,#2b7fff,#38bdf8,#2b7fff); background-size:220% 220%; animation:v2-gradient-flow 4s ease infinite; border-radius:8px; }
body[data-app="mall-pc"] #products .product-meta button:disabled { background:#f0f1f3; color:#9aa0a8; animation:none; }

/* ---------- 标签体系 ---------- */
body[data-app="mall-pc"] #products .product-code { display:inline-block; padding:2px 8px; border-radius:4px; background:#fff1f0; color:#d4380d; font-size:11px; }
body[data-app="mall-pc"] #products .product-stock { padding:2px 8px; border-radius:4px; background:#fff1e8; color:#fa541c; font-size:11px; }
body[data-app="mall-pc"] #products .product-stock.is-empty { background:#f5f5f5; color:#999; }
body[data-app="mall-pc"] #products .product-delivery { padding:2px 8px; border-radius:4px; background:#e8f1ff; color:#2b7fff; font-size:11px; }
body[data-app="mall-pc"] #products .product-duration,
body[data-app="mall-pc"] #products .product-type { font-size:11px; color:#98a1ad; }
body[data-app="mall-pc"] #products .product-service-tag {
  padding:2px 7px; border-radius:4px; font-size:10.5px;
  background:#e8f1ff; color:var(--v2-blue);
}
body[data-app="mall-pc"] #products .product-service-tag:nth-child(2n) { background:#f0faf4; color:#18a058; }
body[data-app="mall-pc"] #products .product-service-tag:nth-child(2n) svg { color:#18a058; }
body[data-app="mall-pc"] #products .product-service-tag svg { color:var(--v2-blue); width:13px; height:13px; }

/* ---------- 列表模式 ---------- */
body[data-app="mall-pc"][data-product-display-mode="list"] #products .product-card {
  border:1px solid #eef0f4; border-radius:13px; margin-bottom:12px;
  transition:transform .25s var(--v2-ease), box-shadow .25s, border-color .25s;
}
body[data-app="mall-pc"][data-product-display-mode="list"] #products .product-card::after { display:none; }
body[data-app="mall-pc"][data-product-display-mode="list"] #products .product-card:hover {
  transform:translateX(5px); border-color:#bcd9ff; box-shadow:0 10px 26px -8px rgba(43,127,255,.2); background:#fff;
}
body[data-app="mall-pc"][data-product-display-mode="list"] #products .product-card > * { position:relative; z-index:1; }
body[data-app="mall-pc"][data-product-display-mode="list"] #products .product-visual { border-radius:11px; }

/* ---------- 入场瀑布 ---------- */
@keyframes v2-rise-in { from { opacity:0; transform:translateY(22px) scale(.985); } to { opacity:1; transform:none; } }
body[data-app="mall-pc"] #products .product-card.v2-rise { animation:v2-rise-in .5s var(--v2-ease) both; }

/* ---------- 分页 ---------- */
body[data-app="mall-pc"] .catalog-pagination button { border-radius:7px; transition:all .18s var(--v2-ease); }
body[data-app="mall-pc"] .catalog-pagination button:hover:not(:disabled):not([aria-current="page"]) { border-color:var(--v2-blue); color:var(--v2-blue); }
body[data-app="mall-pc"] .catalog-pagination button[aria-current="page"] { background:linear-gradient(135deg,var(--v2-blue),var(--v2-blue-deep)); border-color:transparent; box-shadow:0 3px 8px rgba(43,127,255,.35); }

/* ---------- 移动端安全降级：不倾斜 ---------- */
@media (max-width:760px) {
  body[data-app="mall-pc"] #products .product-card { transform:none !important; }
}

/* ==========================================================================
   V2 一模一样修正段（catalog-v2-fix-20261002）
   原因：page-sections.css 对 .store-product-tile 隐藏了 label/简介/编号库存，
   storefront.css 把封面强制为 1.4 宽高比。此处对齐设计稿版式。
   ========================================================================== */

/* 封面：对齐设计稿的紧凑比例（≈130px 高） */
body[data-app="mall-pc"] #products .store-product-tile .product-visual,
body[data-app="mall-pc"] #products .product-card .product-visual { aspect-ratio: 2.05; min-height:118px; max-height:170px; }

/* 标题：设计稿为两行截断，旧规则是单行省略 */
body[data-app="mall-pc"] #products .store-product-tile h3,
body[data-app="mall-pc"] #products .product-card h3 {
  white-space:normal; overflow:hidden; display:-webkit-box;
  -webkit-line-clamp:2; -webkit-box-orient:vertical;
  font-size:13.5px; line-height:1.45; min-height:39px;
}

/* 简介（副标题）：恢复显示，单行省略 */
body[data-app="mall-pc"] #products .store-product-tile .product-body > p {
  display:block !important; margin:5px 0 0; font-size:11.5px; color:#8a919c;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}

/* 编号/库存/耗时/类型标识区：恢复为紧凑标签行 */
body[data-app="mall-pc"] #products .store-product-tile .product-identifiers {
  display:flex !important; flex-wrap:wrap; align-items:center; gap:6px; margin:9px 0 0;
}
body[data-app="mall-pc"] #products .store-product-tile .product-identifiers > span { margin:0; }

/* 分类小标签行（影视会员 · 直充）：设计稿没有，保持隐藏 */
body[data-app="mall-pc"] #products .store-product-tile .product-label { display:none !important; }

/* 列表模式：缩略图对齐设计稿（左 80px 方图），标识区恢复紧凑标签 */
body[data-app="mall-pc"][data-product-display-mode="list"] #products .store-product-tile .product-visual { width:80px; flex:0 0 80px; height:80px; min-height:0; aspect-ratio:auto; max-height:none; border-radius:11px; }
body[data-app="mall-pc"][data-product-display-mode="list"] #products .store-product-tile .product-identifiers { display:flex !important; flex-wrap:wrap; gap:6px; margin:7px 0 0; }
body[data-app="mall-pc"][data-product-display-mode="list"] #products .store-product-tile .product-body > p { display:block !important; }

/* 列表模式卡片行高收紧，对齐设计稿 */
body[data-app="mall-pc"][data-product-display-mode="list"] #products .product-card:not(.store-product-tile),
body[data-app="mall-pc"][data-product-display-mode="list"] #products .product-card { min-height:0; padding:14px 18px; }

/* ==========================================================================
   V2 一模一样修正段 ②（catalog-v2-fix2-20261002）
   目标：标签样式、字段取舍、列表行布局与设计稿逐一致。
   ========================================================================== */

/* ---------- 网格卡：标识区只保留「编号 + 库存」，与设计稿一致 ---------- */
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .store-product-tile .product-duration,
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .store-product-tile .product-type,
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .store-product-tile .product-delivery { display:none !important; }

/* 编号：红色渐变胶囊（白字），对齐设计稿 */
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .product-code {
  display:inline-block; padding:2px 9px; border-radius:4px;
  background:linear-gradient(90deg,#ff7875,#f5222d); color:#fff; font-size:11px;
}
/* 库存：橙色胶囊 */
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .product-stock {
  padding:2px 8px; border-radius:4px; background:var(--v2-orange-bg,#fff1e8); color:var(--v2-orange,#fa541c); font-size:11px;
}
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .product-stock.is-empty { background:#f5f5f5; color:#999; }

/* ---------- 列表行：对齐设计稿（编号灰字 + 商家发货蓝胶囊 + 库存橙胶囊） ---------- */
/* 隐藏设计稿没有的 耗时/类型 字段 */
body[data-app="mall-pc"][data-product-display-mode="list"] #products .store-product-tile .product-duration,
body[data-app="mall-pc"][data-product-display-mode="list"] #products .store-product-tile .product-type { display:none !important; }

/* 编号：纯灰字，无底色 */
body[data-app="mall-pc"][data-product-display-mode="list"] #products .product-code {
  display:block; padding:0; background:none; color:#8a919c; font-size:12px; margin-top:6px;
}
/* 发货渠道 → “商家发货”蓝色胶囊（带店铺图标） */
body[data-app="mall-pc"][data-product-display-mode="list"] #products .product-delivery {
  display:inline-flex; align-items:center; gap:3px; padding:2px 8px; border-radius:4px;
  background:#e8f1ff; color:var(--v2-blue); font-size:11px;
}
body[data-app="mall-pc"][data-product-display-mode="list"] #products .product-delivery::before { content:"🏪"; font-size:10px; }
/* 库存：橙色胶囊 */
body[data-app="mall-pc"][data-product-display-mode="list"] #products .product-stock {
  padding:2px 8px; border-radius:4px; background:var(--v2-orange-bg,#fff1e8); color:var(--v2-orange,#fa541c); font-size:11px;
}
body[data-app="mall-pc"][data-product-display-mode="list"] #products .product-stock.is-empty { background:#f5f5f5; color:#999; }

/* 列表行标识区纵向排布：编号在上，标签行在下（对齐设计稿） */
body[data-app="mall-pc"][data-product-display-mode="list"] #products .store-product-tile .product-identifiers {
  display:flex !important; flex-direction:column; align-items:flex-start; gap:7px; margin-top:6px;
}
body[data-app="mall-pc"][data-product-display-mode="list"] #products .store-product-tile .product-identifiers .product-delivery,
body[data-app="mall-pc"][data-product-display-mode="list"] #products .store-product-tile .product-identifiers .product-stock { display:inline-flex; }

/* ==========================================================================
   V2 一模一样修正段 ③（catalog-v2-fix3-20261002）
   网格卡服务标签：从 36px 图标列恢复为完整胶囊行（对齐设计稿的授权标签行）。
   ========================================================================== */
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .product-actions.has-services {
  grid-template-columns:1fr auto auto !important;
  row-gap:8px;
}
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .product-actions.has-services > .product-services {
  grid-column:1 / -1 !important; grid-row:auto !important;
  flex-direction:row !important; flex-wrap:wrap; gap:4px;
}
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .product-actions.has-services > .price-and-limit { grid-column:1 !important; }
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .product-actions.has-services > .mf-toggle-wrap { grid-column:2 !important; width:auto !important; max-width:none !important; min-width:0 !important; }
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .product-actions.has-services > .store-product-buy { grid-column:3 !important; }
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .product-service-tag {
  width:auto !important; overflow:visible !important; font-size:10.5px !important;
  display:inline-flex; align-items:center; gap:3px; padding:2px 7px; border-radius:4px;
  background:#e8f1ff; color:var(--v2-blue);
}
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .product-service-tag:nth-child(2n) { background:#f0faf4; color:#18a058; }
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .product-service-tag svg { width:13px; height:13px; flex:0 0 13px; }

/* ==========================================================================
   V2 一模一样修正段 ④（catalog-v2-fix4-20261002）
   编号/库存/发货标签：选择器补 .store-product-tile，压过 page-sections.css 旧规则。
   ========================================================================== */
/* 网格：编号红色渐变胶囊 + 库存橙色胶囊 */
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .store-product-tile .product-code {
  display:inline-block; padding:2px 9px; border-radius:4px;
  background:linear-gradient(90deg,#ff7875,#f5222d); color:#fff; font-size:11px; font-weight:400;
}
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .store-product-tile .product-stock {
  padding:2px 8px; border-radius:4px; background:#fff1e8; color:#fa541c; font-size:11px; font-weight:400;
}
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .store-product-tile .product-stock.is-empty { background:#f5f5f5; color:#999; }

/* 列表：编号纯灰字、库存橙色胶囊、发货蓝色胶囊 */
body[data-app="mall-pc"][data-product-display-mode="list"] #products .store-product-tile .product-code {
  display:block; padding:0; background:none; color:#8a919c; font-size:12px; font-weight:400; margin-top:6px;
}
body[data-app="mall-pc"][data-product-display-mode="list"] #products .store-product-tile .product-stock {
  display:inline-flex; align-items:center; padding:2px 8px; border-radius:4px;
  background:#fff1e8; color:#fa541c; font-size:11px; font-weight:400;
}
body[data-app="mall-pc"][data-product-display-mode="list"] #products .store-product-tile .product-stock.is-empty { background:#f5f5f5; color:#999; }
body[data-app="mall-pc"][data-product-display-mode="list"] #products .store-product-tile .product-delivery {
  display:inline-flex; align-items:center; gap:3px; padding:2px 8px; border-radius:4px;
  background:#e8f1ff; color:var(--v2-blue); font-size:11px; font-weight:400;
}
body[data-app="mall-pc"][data-product-display-mode="list"] #products .store-product-tile .product-delivery::before { content:"🏪"; font-size:10px; }

/* ==========================================================================
   V2 一模一样修正段 ⑤（catalog-v2-fix5-20261002）
   列表行标签排布：编号独占一行，发货+库存同行（对齐设计稿）。
   ========================================================================== */
body[data-app="mall-pc"][data-product-display-mode="list"] #products .store-product-tile .product-identifiers {
  display:flex !important; flex-direction:row !important; flex-wrap:wrap; align-items:center; gap:6px; margin-top:6px;
}
body[data-app="mall-pc"][data-product-display-mode="list"] #products .store-product-tile .product-identifiers .product-code { flex:0 0 100%; margin-top:0; }
body[data-app="mall-pc"][data-product-display-mode="list"] #products .store-product-tile .product-identifiers .product-delivery { order:1; }
body[data-app="mall-pc"][data-product-display-mode="list"] #products .store-product-tile .product-identifiers .product-stock { order:2; }

/* ==========================================================================
   V2 一模一样修正段 ⑥（catalog-v2-fix6-20261002）
   按用户要求：隐藏收藏按钮与「N 个商品」计数，与设计稿完全一致。
   ========================================================================== */
/* 收藏心形（仅目录/商品区隐藏，不影响会员中心收藏功能本身） */
body[data-app="mall-pc"] #products .mf-toggle-wrap,
body[data-app="mall-pc"] #products .mf-toggle { display:none !important; }

/* 「N 个商品」计数（设计稿无此元素；清除搜索按钮保留原逻辑不受影响） */
body[data-app="mall-pc"] #products #productCount { display:none !important; }
body[data-app="mall-pc"] #products .catalog-result-meta { min-height:0; padding:0 22px; }
body[data-app="mall-pc"] #products .catalog-result-meta:has(#catalogClearSearch[hidden]) { display:none; }

/* ==========================================================================
   V2 一模一样修正段 ⑦（catalog-v2-fix7-20261002）
   商品封面：object-fit 由 contain 改为 cover —— 上传图片后填满整个封面区，
   与设计稿/参考站一致（contain 时宽幅图两侧留白、方形图上下留白）。
   注意：cover 会按封面比例居中裁剪超出部分，不拉伸、不变形。
   ========================================================================== */
body[data-app="mall-pc"] #products .store-product-tile > .product-visual img,
body[data-app="mall-pc"] #products .product-card .product-visual img {
  object-fit: cover; object-position: center;
}
body[data-app="mall-pc"][data-product-display-mode="list"] #products .store-product-tile .product-visual img {
  object-fit: cover; object-position: center;
}

/* ==========================================================================
   V2 一模一样修正段 ⑧（catalog-v2-fix8-20261002）
   封面条缝根因：旧规则给商品图加了 12px padding，形成白内框。
   清零后图片才能真正顶满封面框。
   ========================================================================== */
body[data-app="mall-pc"] #products .store-product-tile > .product-visual img,
body[data-app="mall-pc"] #products .product-card .product-visual img,
body[data-app="mall-pc"] #products .product-visual img {
  padding: 0 !important; border: 0 !important; margin: 0 !important;
  width: 100%; height: 100%; display: block;
}

/* ==========================================================================
   V2 一模一样修正段 ⑨（catalog-v2-fix9-20261002）
   封面容器背景改透明：旧规则的浅灰白渐变底会在图片周围形成一圈白晕。
   图片 cover 铺满后底色本应完全不露出；加载中/无图时回退到卡片白底即可。
   ========================================================================== */
body[data-app="mall-pc"] #products .product-visual,
body[data-app="mall-pc"] #products .store-product-tile > .product-visual {
  background: transparent !important;
}

/* ==========================================================================
   V2 一模一样修正段 ⑩（catalog-v2-fix10-20261002）
   商品区容器去白底：旧模板把商品包在白色 .catalog-main 容器里，空位是一大块白；
   设计稿是卡片直接浮在页面底色上。容器与工具栏改透明，仅保留布局作用。
   ========================================================================== */
body[data-app="mall-pc"] #products .catalog-main {
  background: transparent !important; border: 0 !important; box-shadow: none !important;
}
body[data-app="mall-pc"] #products .catalog-toolbar {
  background: transparent !important; border: 0 !important; padding-left: 4px; padding-right: 4px;
}

/* ==========================================================================
   V2 一模一样修正段 ⑪（catalog-v2-fix11-20261002）
   目录卡与商品区左右对齐：统一为同一最大宽度与居中约束。
   ========================================================================== */
body[data-app="mall-pc"] #categories.catalog-directory,
body[data-app="mall-pc"] .catalog-directory,
body[data-app="mall-pc"] #products.catalog-shell {
  width: calc(100% - 32px) !important;
  max-width: 1240px !important;
  margin-left: auto !important;
  margin-right: auto !important;
  box-sizing: border-box;
}
/* 目录卡内边距与商品网格内边距对齐（视觉左右边界一致） */
body[data-app="mall-pc"] #products .catalog-toolbar { padding-left: 0; padding-right: 0; }
body[data-app="mall-pc"] #products .product-grid { padding-left: 0; padding-right: 0; }

/* ==========================================================================
   V2 一模一样修正段 ⑫（catalog-v2-fix12-20261002）
   目录卡宽度修正：它位于商品容器内部，calc(100%-32px) 导致比商品区窄 32px。
   改为占满容器，与商品网格完全同宽。
   ========================================================================== */
body[data-app="mall-pc"] #categories.catalog-directory,
body[data-app="mall-pc"] #products .catalog-directory {
  width: 100% !important; max-width: 100% !important;
  margin-left: 0 !important; margin-right: 0 !important;
}

/* ==========================================================================
   V2 一模一样修正段 ⑬（catalog-v2-fix13-20261002）
   网格卡标签顺序对齐设计稿：授权标签行在「编号/库存」与「价格+购买」之间，
   旧规则把价格/按钮钉在 grid-row:1 导致授权标签掉到最底。
   ========================================================================== */
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .product-actions.has-services > .product-services {
  grid-row:1 !important;
}
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .product-actions.has-services > .price-and-limit {
  grid-row:2 !important;
}
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .product-actions.has-services > .mf-toggle-wrap,
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .product-actions.has-services > .store-product-buy {
  grid-row:2 !important;
}

/* ==========================================================================
   V2 一模一样修正段 ⑭（catalog-v2-fix14-20261002）
   网格卡「价格+购买」锚定卡片底部：设计稿上半部分是信息与标签，
   价格按钮永远贴卡片底边；旧布局是跟在标签后面挤在上半部。
   ========================================================================== */
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .store-product-tile.product-card {
  display:flex; flex-direction:column;
}
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .store-product-tile .product-actions.has-services {
  display:grid !important; grid-template-columns:1fr auto; grid-template-rows:auto 1fr auto;
  flex:1;
}
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .product-actions.has-services > .product-services {
  grid-column:1 / -1; grid-row:1 !important;
}
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .product-actions.has-services > .price-and-limit {
  grid-column:1; grid-row:3 !important; align-self:end;
}
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .product-actions.has-services > .store-product-buy {
  grid-column:2; grid-row:3 !important; align-self:end; justify-self:end;
}
/* 无服务标签的商品同样底部锚定 */
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .product-actions:not(.has-services) > .price-and-limit { align-self:end; }
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .product-actions:not(.has-services) > .store-product-buy { align-self:end; justify-self:end; }

/* ==========================================================================
   V2 一模一样修正段 ⑮（catalog-v2-fix15-20261002）
   修正⑭ 的过度留白：设计稿中授权标签与价格行是紧凑跟随（≈12px 间距），
   不是大空档底部锚定。取消撑开，恢复紧凑间距。
   ========================================================================== */
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .store-product-tile .product-actions.has-services {
  grid-template-rows:auto auto !important;
}
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .product-actions.has-services > .price-and-limit {
  grid-row:2 !important; margin-top:12px;
}
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .product-actions.has-services > .store-product-buy {
  grid-row:2 !important; margin-top:12px;
}

/* ==========================================================================
   V2 一模一样修正段 ⑯（catalog-v2-fix16-20261002）
   「编号/库存」与「授权标签」行距收紧：设计稿为紧凑的 4~6px。
   ========================================================================== */
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .product-actions.has-services { row-gap:0 !important; }
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .product-actions.has-services > .product-services { margin-top:4px; }
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .product-actions.has-services > .price-and-limit,
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .product-actions.has-services > .store-product-buy { margin-top:10px; }

/* ==========================================================================
   V2 一模一样修正段 ⑰（catalog-v2-fix17-20261002）
   编号行与授权行 42px 大缝的来源拆解：body 底 padding 14 + actions 上 margin 8
   + actions 上 padding 16 + services 上 margin 4。统一收到 ≈8px。
   ========================================================================== */
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .store-product-tile .product-body { padding-bottom:4px !important; }
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .store-product-tile .product-actions { margin-top:0 !important; padding-top:0 !important; }

/* ==========================================================================
   V2 一模一样修正段 ⑱（catalog-v2-fix18-20261002）
   价格行撑满：金额贴最左、购买按钮贴最右并适当加宽（对齐设计稿）。
   ========================================================================== */
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .store-product-tile .product-actions.has-services { width:100%; }
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .product-actions.has-services > .price-and-limit {
  justify-self:start !important; margin-left:0 !important;
}
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .product-actions.has-services > .store-product-buy {
  justify-self:end !important; min-width:96px; padding-left:20px; padding-right:20px;
}

/* ==========================================================================
   V2 一模一样修正段 ⑲（catalog-v2-fix19-20261002）
   列表视图纵向收紧：标题/简介/编号/标签之间的多余留白压缩，对齐设计稿的紧凑行。
   ========================================================================== */
body[data-app="mall-pc"][data-product-display-mode="list"] #products .store-product-tile .product-body > p { margin:2px 0 0; }
body[data-app="mall-pc"][data-product-display-mode="list"] #products .store-product-tile .product-identifiers { margin-top:4px !important; }
body[data-app="mall-pc"][data-product-display-mode="list"] #products .store-product-tile h3 { min-height:0; }
body[data-app="mall-pc"][data-product-display-mode="list"] #products .store-product-tile .product-body { gap:0; padding-top:0; padding-bottom:0; }
body[data-app="mall-pc"][data-product-display-mode="list"] #products .store-product-tile.product-card { align-items:center; }

/* ==========================================================================
   V2 一模一样修正段 ⑳（catalog-v2-fix20-20261002）
   列表标题按兩行预留 44px 的旧规则，是标题下方空白的主因；取消预留。
   ========================================================================== */
body[data-app="mall-pc"][data-product-display-mode="list"] #products .store-product-tile button.store-product-title {
  min-height:0 !important; max-height:none !important;
}
body[data-app="mall-pc"][data-product-display-mode="list"] #products .store-product-tile h3 { margin:0; }

/* ==========================================================================
   V2 一模一样修正段 ㉑（catalog-v2-fix21-20261002）
   列表缩略图：贴住卡片左缘、顶满全高的宽幅图带（120px 宽，左边圆角与卡片一致）。
   ========================================================================== */
body[data-app="mall-pc"][data-product-display-mode="list"] #products .product-card {
  padding-left:0 !important; overflow:hidden;
}
body[data-app="mall-pc"][data-product-display-mode="list"] #products .store-product-tile .product-visual {
  width:120px !important; flex:0 0 120px !important; height:auto !important; max-height:none !important;
  align-self:stretch !important; border-radius:12px 0 0 12px !important; margin:0 !important;
}
body[data-app="mall-pc"][data-product-display-mode="list"] #products .store-product-tile .product-body { padding-left:16px; }

/* ==========================================================================
   V2 一模一样修正段 ㉒（catalog-v2-fix22-20261002）
   图带上下白边：修正⑲ 的 align-items:center 阻止了拉伸，且 aspect-ratio 残留。
   列表卡片改 stretch + 图片强制满高。
   ========================================================================== */
body[data-app="mall-pc"][data-product-display-mode="list"] #products .store-product-tile.product-card { align-items:stretch !important; }
body[data-app="mall-pc"][data-product-display-mode="list"] #products .store-product-tile .product-visual {
  aspect-ratio:auto !important; align-self:stretch !important;
}
body[data-app="mall-pc"][data-product-display-mode="list"] #products .store-product-tile .product-visual img {
  width:100% !important; height:100% !important; min-height:100% !important; object-fit:cover;
}
body[data-app="mall-pc"][data-product-display-mode="list"] #products .store-product-tile .product-body {
  align-self:center; padding-top:14px; padding-bottom:14px;
}

/* ==========================================================================
   V2 一模一样修正段 ㉓（catalog-v2-fix23-20261002）
   列表行高恢复紧凑（108px），图带按此高度填充；行不再被内容撑高、图不变形。
   ========================================================================== */
body[data-app="mall-pc"][data-product-display-mode="list"] #products .store-product-tile.product-card { min-height:0 !important; height:128px; }
body[data-app="mall-pc"][data-product-display-mode="list"] #products .store-product-tile .product-visual { height:128px !important; }
body[data-app="mall-pc"][data-product-display-mode="list"] #products .store-product-tile .product-visual img {
  width:100% !important; height:128px !important; min-height:0 !important; object-fit:cover; object-position:center;
}

/* ==========================================================================
   V2 一模一样修正段 ㉔（catalog-v2-fix24-20261002）
   图带上方白边：卡片上下内边距把图往下挤了。列表卡上下内边距清零，
   图带同时贴住卡片上沿与下沿（文字区保留自己的上下内边距）。
   ========================================================================== */
body[data-app="mall-pc"][data-product-display-mode="list"] #products .store-product-tile.product-card,
body[data-app="mall-pc"][data-product-display-mode="list"] #products .product-card {
  padding-top:0 !important; padding-bottom:0 !important;
}
body[data-app="mall-pc"][data-product-display-mode="list"] #products .store-product-tile .product-visual {
  margin-top:0 !important; margin-bottom:0 !important;
}

/* ==========================================================================
   V2 一模一样修正段 ㉕（catalog-v2-fix25-20261002）
   列表右侧布局：价格置于「立即购买」上方（右对齐上下堆叠），对齐设计稿。
   ========================================================================== */
body[data-app="mall-pc"][data-product-display-mode="list"] #products .store-product-tile .product-actions {
  display:grid !important; grid-template-columns:1fr auto; grid-template-rows:auto auto;
  align-items:center; gap:6px 12px;
}
body[data-app="mall-pc"][data-product-display-mode="list"] #products .product-actions > .product-services {
  grid-column:1; grid-row:1 / span 2; align-self:center;
}
body[data-app="mall-pc"][data-product-display-mode="list"] #products .product-actions > .price-and-limit {
  grid-column:2; grid-row:1; justify-self:end; align-self:end;
}
body[data-app="mall-pc"][data-product-display-mode="list"] #products .product-actions > .store-product-buy {
  grid-column:2; grid-row:2; justify-self:end; align-self:start;
}

/* ==========================================================================
   V2 一模一样修正段 ㉖（catalog-v2-fix26-20261002）
   列表「立即购买」按钮加长。
   ========================================================================== */
body[data-app="mall-pc"][data-product-display-mode="list"] #products .store-product-buy {
  min-width:128px; padding-left:24px; padding-right:24px;
}

/* ==========================================================================
   V2 一模一样修正段 ㉗（catalog-v2-fix27-20261002）
   列表授权标签与右侧价格/按钮拉开距离（向右留出 24px 缓冲）。
   ========================================================================== */
body[data-app="mall-pc"][data-product-display-mode="list"] #products .product-actions > .product-services {
  justify-self:start; margin-right:24px;
}

/* ==========================================================================
   V2 一模一样修正段 ㉘（catalog-v2-fix28-20261002）
   「自动发货」图标升级：商店 emoji → 蓝色渐变闪电小徽章（即时达语义）。
   ========================================================================== */
body[data-app="mall-pc"] #products .store-product-tile .product-delivery::before {
  content:"⚡" !important;
  display:inline-grid; place-items:center;
  width:16px; height:16px; border-radius:5px;
  background:linear-gradient(135deg,#2b7fff,#38bdf8);
  color:#fff; font-size:10px; line-height:1;
  box-shadow:0 2px 4px rgba(43,127,255,.3);
}

/* ==========================================================================
   V2 一模一样修正段 ㉙（catalog-v2-fix29-20261002）
   目录 emoji 图标样式：与图标块同尺寸居中。
   ========================================================================== */
body[data-app="mall-pc"] .directory-icon .directory-emoji {
  font-size:24px; line-height:1; display:grid; place-items:center; width:100%; height:100%;
}

/* ==========================================================================
   V2 一模一样修正段 ㉚（catalog-v2-fix30-20261002）
   隐藏「推荐」角标；目录整体收紧（行高/内边距对齐设计稿的紧凑感）。
   ========================================================================== */
body[data-app="mall-pc"] .directory-badge { display:none !important; }

body[data-app="mall-pc"] .directory-options { padding:8px 16px; gap:4px; }
body[data-app="mall-pc"] .directory-options .directory-option,
body[data-app="mall-pc"] #categories #catalogCategories button { min-height:64px; padding:8px 8px 6px; }
body[data-app="mall-pc"] .directory-icon { width:38px; height:38px; }
body[data-app="mall-pc"] .directory-label { padding-top:16px; }
body[data-app="mall-pc"] .directory-row { min-height:0; }
body[data-app="mall-pc"] .directory-toggle { margin-top:14px; }

/* ==========================================================================
   V2 一模一样修正段 ㉛（catalog-v2-fix31-20261002）
   隐藏分页区的「共 N 个商品」计数（设计稿无此元素；分页按钮本身保留）。
   ========================================================================== */
body[data-app="mall-pc"] #products #catalogPagination > span:first-of-type { display:none !important; }

/* ==========================================================================
   V2 一模一样修正段 ㉜（catalog-v2-fix32-20261002）
   行标签美化：灰字小点 → 彩色渐变小徽章（目录蓝 / 品牌绿 / 套餐橙）。
   ========================================================================== */
body[data-app="mall-pc"] .directory-label {
  display:flex !important; align-items:center; justify-content:flex-start;
  margin:14px 0 0 12px; padding:5px 12px 5px 9px; border-radius:9px;
  font-size:13px; font-weight:700; letter-spacing:.5px;
  background:linear-gradient(135deg,rgba(43,127,255,.12),rgba(43,127,255,.04));
  color:var(--v2-blue);
  box-shadow:inset 0 0 0 1px rgba(43,127,255,.15);
}
body[data-app="mall-pc"] .directory-label::before {
  content:""; width:7px; height:7px; border-radius:2px;
  background:currentColor; transform:rotate(45deg); margin-right:7px; flex-shrink:0;
  box-shadow:0 0 6px currentColor;
}
body[data-app="mall-pc"] .directory-row:nth-child(2) .directory-label {
  background:linear-gradient(135deg,rgba(24,160,88,.12),rgba(24,160,88,.04));
  color:#18a058; box-shadow:inset 0 0 0 1px rgba(24,160,88,.16);
}
body[data-app="mall-pc"] .directory-row:nth-child(3) .directory-label {
  background:linear-gradient(135deg,rgba(250,140,22,.13),rgba(250,140,22,.04));
  color:#e8710a; box-shadow:inset 0 0 0 1px rgba(250,140,22,.18);
}

/* ==========================================================================
   V2 一模一样修正段 ㉝（catalog-v2-fix33-20261002）
   标签徽章文字竖排问题：加宽标签列并禁止换行。
   ========================================================================== */
body[data-app="mall-pc"] .directory-row { grid-template-columns:88px minmax(0,1fr) auto; }
body[data-app="mall-pc"] .directory-label { white-space:nowrap; width:fit-content; }

/* ==========================================================================
   V2 一模一样修正段 ㉞（catalog-v2-fix34-20261002）
   行标签垂直居中：从顶部对齐改为整行垂直居中。
   ========================================================================== */
body[data-app="mall-pc"] .directory-row { align-items:center; }
body[data-app="mall-pc"] .directory-label { align-self:center; margin-top:0; }
body[data-app="mall-pc"] .directory-toggle { margin-top:0; align-self:center; }

/* One action grid for both optional-service and plain cards: hidden favorites never own a track. */
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .store-product-tile .product-actions {
  display:grid; grid-template-columns:minmax(0,1fr) auto !important;
  grid-template-rows:auto !important; align-items:center; gap:10px 12px;
}
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .store-product-tile .product-actions > .product-services {
  grid-column:1 / -1 !important; grid-row:1 !important; min-width:0; margin:0;
}
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .store-product-tile .product-actions > .price-and-limit {
  grid-column:1 !important; grid-row:1 !important; justify-self:start; min-width:0; margin:0;
}
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .store-product-tile .product-actions > .store-product-buy {
  grid-column:2 !important; grid-row:1 !important; justify-self:end; align-self:center;
  width:112px; min-width:96px; max-width:none; margin:0; padding:0 12px; white-space:nowrap;
}
body[data-app="mall-pc"][data-product-display-mode="grid"] #products .store-product-tile .product-actions.has-services > :is(.price-and-limit,.store-product-buy) {
  grid-row:2 !important;
}
body[data-app="mall-pc"] #products .store-product-tile .product-body > p:empty { display:none; }
body[data-app="mall-pc"] .directory-placeholder { grid-column:1 / -1; padding:14px 8px; color:#8290a3; font-size:13px; }
body[data-app="mall-pc"] .directory-row[data-level="3"] .directory-label { color:#e8710a; }
@media (max-width:760px) {
  body[data-app="mall-pc"] .directory-row { grid-template-columns:88px minmax(0,1fr) auto; }
  body[data-app="mall-pc"] .directory-label { margin-left:8px; padding:5px 8px; }
  body[data-app="mall-pc"] .directory-toggle { min-width:52px; margin-right:8px; padding:6px; }
  body[data-app="mall-pc"][data-product-display-mode="grid"] #products .store-product-tile .product-actions > .store-product-buy { width:96px; }
}
@media (max-width:600px) {
  body[data-app="mall-pc"][data-product-display-mode="grid"] #products #catalogProducts.product-grid { grid-template-columns:minmax(0,1fr); }
}
