:root {
  --navy: #1F4E79;
  --navy-d: #163a5a;
  --gold: #806000;
  --yellow: #FFF2CC;
  --cream: #FFF8E1;
  --red: #C00000;
  --line: #d9dee6;
  --bg: #f4f6f9;
  --card: #ffffff;
  --txt: #23303f;
  --muted: #7587a0;
}
* { box-sizing: border-box; }
/* 图片防盗：禁止拖拽 / 选中复制（普通用户层保护） */
img {
  -webkit-user-drag: none;
  -khtml-user-drag: none;
  -moz-user-drag: none;
  user-drag: none;
  -webkit-user-select: none;
  -moz-user-select: none;
  user-select: none;
  -webkit-touch-callout: none;
}
img.thumb-img, .pv-img img { -webkit-user-drag: none; user-drag: none; }

/* 鼠标悬停放大浮层 */
.img-zoom {
  position: fixed;
  width: 320px; height: 320px;
  background-size: contain; background-repeat: no-repeat; background-position: center;
  background-color: #fff;
  border: 1px solid var(--line); border-radius: 8px;
  box-shadow: 0 10px 34px rgba(0,0,0,.28);
  z-index: 200; pointer-events: none;
}
.img-zoom.hidden { display: none; }
body {
  margin: 0;
  font-family: -apple-system, "Segoe UI", "Microsoft YaHei", Arial, sans-serif;
  background: var(--bg);
  color: var(--txt);
  font-size: 14px;
}
/* 顶部冻结容器：品牌+公司信息+工具栏整体粘在视口顶部 */
.sticky-shell {
  position: sticky;
  top: 0;
  z-index: 50;
  background: var(--bg);
  box-shadow: 0 2px 8px rgba(20,40,70,.08);
}
.topbar {
  display: flex; flex-direction: column; padding: 0;
  background: var(--navy); color: #fff;
}
.topbar-row {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 12px 22px;
}
.topbar-row.topbar-main { padding: 12px 22px; }
.topbar-row.topbar-company {
  background: var(--navy-d);
  font-size: 12.5px;
  padding: 7px 22px;
  flex-wrap: wrap;
  gap: 4px 10px;
  border-top: 1px solid rgba(255,255,255,.12);
}
.topbar-row.topbar-company .co-name { font-weight: 700; letter-spacing: .2px; }
.topbar-row.topbar-company .co-item { opacity: .92; }
.topbar-row.topbar-company .co-sep { opacity: .45; }
@media (max-width: 760px) {
  .topbar-row.topbar-company .co-sep { display: none; }
  .topbar-row.topbar-company .co-item { margin-right: 12px; }
}
.brand { display: flex; align-items: center; gap: 12px; }
.topbar-row.topbar-main { position: relative; }
.logo-center {
  position: absolute; left: 50%; top: 50%;
  transform: translate(-50%, -50%);
  display: flex; align-items: center;
}
.logo-center img {
  height: 26px; width: auto; display: block; object-fit: contain;
  opacity: .8;
  transition: opacity .25s ease;
}
.logo-center img:hover { opacity: 1; }
.topbar h1 { margin: 0; font-size: 18px; }
.topbar #subtitle { margin: 2px 0 0; font-size: 12px; opacity: .8; }
.params { display: flex; align-items: center; gap: 16px; }
.params label { font-size: 12px; display: flex; flex-direction: column; gap: 3px; }
.params input {
  width: 80px; padding: 5px 8px; border: 1px solid #2f5f8a; border-radius: 6px;
  background: rgba(255,255,255,.12); color: #fff; font-size: 14px;
}
.params input:focus { outline: 2px solid #fff; }
.totals { display: flex; align-items: center; gap: 10px; }
.badge {
  background: rgba(255,255,255,.15); padding: 6px 16px; border-radius: 20px;
  font-size: 13px; white-space: nowrap; display: inline-flex; align-items: center; gap: 6px;
}
.badge.clickable { cursor: pointer; position: relative; }
.badge.clickable:hover { background: rgba(255,255,255,.28); }
.badge b { font-size: 15px; }
.badge.total { background: var(--yellow); color: var(--gold); font-weight: 600; }
.badge.total b { color: var(--red); }

/* Selection preview panel */
.sel-preview-wrap { position: relative; }
.sel-preview {
  display: none; position: absolute; top: calc(100% + 6px); left: 0; z-index: 100;
  width: auto; max-width: 420px; max-height: 280px; overflow-y: auto;
  background: #fff; border-radius: 10px; box-shadow: 0 8px 30px rgba(0,0,0,.2);
  padding: 10px;
}
.sel-preview.open { display: flex; flex-wrap: wrap; gap: 6px; }
.sel-prev-item {
  position: relative; flex-shrink: 0;
  display: flex; align-items: center; gap: 5px;
}
.sel-prev-item:hover .sel-prev-del { opacity: 1; }
.sel-prev-img {
  width: 56px; height: 56px; object-fit: contain; border: 1px solid #e0e0e0; border-radius: 6px;
  display: block; background: #fafafa;
  -webkit-user-drag: none; user-select: none;
}
.sel-prev-del {
  position: absolute; top: -4px; right: -4px;
  width: 18px; height: 18px; border: none; background: #c00; color: #fff; border-radius: 50%;
  cursor: pointer; font-size: 12px; line-height: 1;
  display: flex; align-items: center; justify-content: center;
  opacity: 0; transition: opacity .15s;
}
.sel-prev-del:hover { background: #900; opacity: 1; }
.sel-prev-qty {
  background: var(--navy); color: #fff;
  border-radius: 999px; font-size: 11px; line-height: 1.4;
  padding: 1px 6px; font-weight: 500; pointer-events: none;
  white-space: nowrap;
}

.toolbar {
  display: flex; align-items: center; gap: 12px; padding: 12px 22px;
  background: var(--card); border-bottom: 1px solid var(--line);
}
.filter { font-size: 12px; color: var(--muted); display: flex; flex-direction: column; gap: 3px; }
.filter select { padding: 6px 10px; border: 1px solid var(--line); border-radius: 6px; font-size: 14px; }
.spacer { flex: 1; }
.btn {
  padding: 9px 16px; border-radius: 7px; border: 1px solid transparent; cursor: pointer;
  font-size: 14px; font-weight: 600;
}
.btn.primary { background: var(--navy); color: #fff; }
.btn.primary:hover { background: var(--navy-d); }
.btn.primary:disabled { opacity: .55; cursor: progress; }
.btn.ghost { background: #fff; border-color: var(--line); color: var(--txt); }
.btn.ghost:hover { background: #f0f3f7; }
/* 禁用态统一：防误触（08-17：客户信息表单 Skip/Continue 实时校验） */
.btn:disabled { opacity: .45; cursor: not-allowed; pointer-events: none; box-shadow: none; transform: none; }
.cust-clear-btn { padding: 9px 12px; font-weight: 500; color: #6b7684; }

main.layout {
  padding: 18px 22px 60px; max-width: 1280px; margin: 0 auto;
  display: flex !important;
  flex-direction: row !important;
  align-items: stretch;
  gap: 18px;
  overflow: visible;
}
.catalog-wrap { flex: 1; min-width: 0; overflow: visible; }

/* ===== 右侧「产品家族 + 联系」链接栏 ===== */
.link-sidebar {
  flex: 0 0 200px;
  width: 200px;
  min-width: 200px;
  max-width: 200px;
  align-self: flex-start;
  position: sticky;
  top: calc(var(--top-h, 110px) + 12px);
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.ls-card {
  background: var(--card); border: 1px solid var(--line); border-radius: 10px;
  padding: 12px 10px; box-shadow: 0 1px 3px rgba(20,40,70,.05);
}
.ls-head {
  font-size: 12px; font-weight: 700; color: var(--navy);
  padding: 0 4px 8px; border-bottom: 1px solid var(--line); margin-bottom: 8px;
}
.ls-item {
  display: flex; align-items: center; gap: 8px;
  width: 100%; text-align: left; padding: 8px 6px; border-radius: 8px;
  color: #24303c; text-decoration: none; cursor: pointer;
  border: 1px solid transparent; background: transparent;
  font-family: inherit; font-size: inherit;
  transition: background .15s, border-color .15s;
}
.ls-item:hover { background: #f0f3f7; border-color: var(--line); }
.ls-ico { font-size: 18px; flex-shrink: 0; line-height: 1; }
.ls-txt { display: flex; flex-direction: column; min-width: 0; flex: 1; }
.ls-txt b { font-size: 13px; color: #24303c; }
.ls-sub { font-size: 11px; color: #7a8896; margin-top: 1px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ls-arrow { color: #9aa8b6; font-size: 13px; flex-shrink: 0; }
.ls-current { background: #eef4fb; border-color: #d7e3f0; }
.ls-current .ls-txt b { color: var(--navy); }
.ls-current .ls-sub { color: #1f4e79; }
.ls-qr-hint { font-size: 10px; color: #2e7d32; background: #e8f5e9; border-radius: 4px; padding: 2px 6px; flex-shrink: 0; font-weight: 600; }

/* 二维码浮层（点击按钮右侧弹出，无 backdrop） */
#qrPopover {
  position: fixed;
  z-index: 200;
  /* top/left 由 JS 根据点击按钮位置动态设置 */
}
#qrPopover.hidden { display: none; }
/* 弹窗精确等于二维码尺寸（280×280），padding 全部用在标题/描述/按钮上，二维码 0 padding 填满弹窗 */
.qr-card { background: #fff; border-radius: 14px; width: 320px; max-width: calc(100vw - 16px); text-align: center; box-shadow: 0 12px 32px/ rgba(0,0,0,.25); border: 1px solid var(--line); padding: 0; overflow: hidden; }
.qr-title { font-size: 15px; font-weight: 700; color: var(--navy); padding: 12px 14px 8px; border-bottom: 1px solid var(--line); margin: 0; }
/* 二维码 240×240 在 320 弹窗里水平居中，四周留白，不铺满弹窗（客户面向国际客户，统一精致留白） */
.qr-img { width: 240px; height: 240px; object-fit: contain; background: #fff; display: block; margin: 16px auto 10px; padding: 0; border: none; border-radius: 8px; }
.qr-desc { font-size: 12px; color: #5a6b7b; padding: 10px 14px; margin: 0; line-height: 1.55; }
#qrClose { margin: 0 14px 12px; width: calc(100% - 28px); }

/* ===== Search Bar — 内嵌于 toolbar，占据左侧空间 ===== */
.toolbar .search-bar {
  display: flex; align-items: center; gap: 6px;
  flex: 1; padding: 0; margin: 0;
  background: transparent; border: none; box-shadow: none;
}
.toolbar .search-icon { width: 16px; height: 16px; color: var(--muted); flex-shrink: 0; }
.toolbar .search-bar input {
  flex: 1; border: 1px solid var(--line); outline: none; font-size: 13px;
  color: var(--navy); background: #fff; min-width: 0; max-width: 520px;
  padding: 6px 10px; border-radius: 6px;
}
.toolbar .search-bar input:focus { border-color: #2c5aa0; box-shadow: 0 0 0 2px rgba(44,90,160,.12); }
.toolbar .search-bar input::placeholder { color: var(--muted); opacity: .65; }
.toolbar .search-clear {
  border: none; background: none; cursor: pointer;
  font-size: 18px; line-height: 1; color: var(--muted); padding: 0 2px;
}
.toolbar .search-clear:hover { color: var(--navy); }
.toolbar .search-count {
  font-size: 11.5px; color: var(--muted); white-space: nowrap;
  flex-shrink: 0; font-weight: 500; margin-left: 4px;
}
.cat-card {
  background: var(--card); border: 1px solid var(--line);
  margin-bottom: 18px;
  overflow: visible;
  display: flex;
  flex-direction: column;
  /* 性能优化：跳过屏幕外板块的渲染/布局/绘制（李总 Mate60 卡顿优化），滚动到附近才渲染 */
  content-visibility: auto;
  contain-intrinsic-size: auto 720px;   /* 屏外板块预估高度，避免滚动条跳动 */
}
/* 渐进挂载占位符：屏外板块先放轻量 div，滚动到附近才替换为真实卡片（移动端大列表优化） */
.cat-ph {
  background: var(--card); border: 1px dashed var(--line);
  border-radius: 10px; margin-bottom: 18px;
  min-height: 720px;
  display: flex; align-items: center; justify-content: center;
  color: #b0b8c4; font-size: 13px;
}
/* 单一 sticky 容器：cat-head + thead 整体吸顶（不再嵌套 sticky，避免滚动中失稳） */
.cat-sticky {
  position: sticky; top: var(--top-h, 110px); z-index: 40;
  background: var(--card);
}
.cat-head {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 12px 16px; background: var(--cream); border-bottom: 1px solid var(--line);
}
.cat-title { font-weight: 700; font-size: 15px; color: var(--navy); }
.cat-meta { font-size: 12px; color: var(--muted); margin-top: 3px; }

.cat-tier { font-size: 11px; color: #806000; margin-top: 4px; background: #fff8e1; display: inline-block; padding: 2px 8px; border-radius: 4px; }
.cat-head .btn { padding: 5px 12px; font-size: 12px; }

/* 内腔几何形状标签 */
.cavity-tag {
  display: inline-block; padding: 1px 7px; border-radius: 4px; font-size: 11px; font-weight: 700;
  letter-spacing: .3px; margin-right: 2px; vertical-align: middle;
}
.cavity-6pt { background: #e3f2fd; color: #1565c0; border: 1px solid #90caf9; }
.cavity-12pt { background: #fce4ec; color: #c62828; border: 1px solid #f48fb1; }
.cavity-4pt { background: #fff3e0; color: #e65100; border: 1px solid #ffcc80; }
.cavity-driver-bit { background: #ede7f6; color: #5e35b1; border: 1px solid #b39ddb; }
.cavity-extension { background: #fbe9e7; color: #bf360c; border: 1px solid #ffab91; }
.cavity-adapter { background: #eceff1; color: #37474F; border: 1px solid #90a4ae; }
.cavity-eset { background: #e0f2f1; color: #00695C; border: 1px solid #80cbc4; }
.cavity-spiral { background: #e0f7fa; color: #00838F; border: 1px solid #4dd0e1; }
.cavity-slide { background: #e3f2fd; color: #1565C0; border: 1px solid #64b5f6; }
.cavity-bend { background: #ffebee; color: #C62828; border: 1px solid #ef9a9a; }

table { width: 100%; border-collapse: separate; border-spacing: 0; }
.cat-thead-tbl, .cat-body-tbl { table-layout: fixed; }
.cat-thead-tbl th {
  background: var(--navy); color: #fff; font-weight: 600; font-size: 12px;
  padding: 8px 10px; text-align: center;
}
tbody td { padding: 7px 10px; border-bottom: 1px solid #eef1f5; font-size: 13px; text-align: center; }
tbody tr:hover { background: #fafbfd; }
td.size { font-weight: 600; }
td.size-multiline { white-space: pre-line; font-size: 12px; line-height: 1.5; vertical-align: middle; }
td.height { color: var(--muted); font-size: 13px; font-weight: 500; }
td.usd { color: var(--red); font-weight: 700; }
/* 单件重量列（2026-09-14 新增，李总：统一千克） */
td.wt, th.th-wt { white-space: nowrap; font-variant-numeric: tabular-nums; }
td.wt { color: #4a5766; font-weight: 600; }
td.thumb img { width: 46px; height: 46px; object-fit: contain; border: 1px solid var(--line); border-radius: 4px; background: #fff; }
.qty {
  width: 64px; padding: 5px 6px; border: 1px solid var(--line); border-radius: 5px; text-align: center;
  background: var(--yellow);
}
.sel-chk { width: 16px; height: 16px; cursor: pointer; }
.empty { padding: 30px; text-align: center; color: var(--muted); }

.toast {
  position: fixed; bottom: 24px; left: 50%; transform: translateX(-50%);
  background: #23303f; color: #fff; padding: 10px 18px; border-radius: 8px; font-size: 14px;
  box-shadow: 0 6px 20px rgba(0,0,0,.2); z-index: 50;
}
.toast.hidden { display: none; }
.toast.ok { background: #1f7a44; }
.toast.err { background: #b3261e; }

/* ===== 预览 PDF 模态 ===== */
.modal {
  position: fixed; inset: 0; background: rgba(20,30,45,.55);
  display: flex; flex-direction: column; z-index: 9999;
  overflow: hidden;
}
.modal.hidden { display: none; }
.modal-bar {
  display: flex; align-items: center; justify-content: space-between;
  padding: 10px 18px; background: var(--navy); color: #fff;
  flex-shrink: 0;
}
.modal-title { font-weight: 700; font-size: 15px; }
.modal-actions { display: flex; gap: 10px; }
/* 离开确认弹窗（紧凑居中卡片 + 按钮在内容下方） */
#leaveModal { align-items: center; justify-content: center; }
.confirm-card {
  background: #fff; border-radius: 10px;
  width: min(440px, 92vw); padding: 26px 28px 22px;
  box-shadow: 0 16px 50px rgba(15,25,45,.35);
  display: flex; flex-direction: column; gap: 14px;
}
.confirm-title { margin: 0; font-size: 19px; font-weight: 700; color: var(--navy); }
.confirm-body p { margin: 0; font-size: 14.5px; color: #26303e; line-height: 1.6; }
.confirm-body p + p { margin-top: 4px; }
.confirm-body .confirm-hint { font-size: 12.5px; color: var(--muted); margin-top: 8px; }
.confirm-actions { display: flex; gap: 10px; justify-content: flex-end; margin-top: 6px; }
.preview-sheet {
  flex: 1; overflow: auto; padding: 0 22px 22px; background: #e9edf2;
  min-height: 0;
}
/* 预览内文档（白纸） */
.pv-cover { background: #fff; padding: 22px 34px 30px; border-radius: 8px 8px 0 0; border-bottom: 3px solid var(--navy); display: flex; justify-content: space-between; align-items: flex-start; gap: 24px; }
.pv-cover-l { flex: 1; min-width: 0; }
.pv-cover-r { flex-shrink: 0; padding-top: 4px; }
.pv-cover-r img { height: 28px; width: auto; display: block; }
.pv-co { font-size: 20px; font-weight: 800; color: var(--navy); }
.pv-ct { font-size: 15px; color: var(--gold); font-weight: 600; margin-top: 2px; }
.pv-cm { font-size: 12px; color: var(--muted); margin-top: 8px; line-height: 1.6; }
.pv-date { font-size: 12px; color: var(--muted); margin-top: 10px; }
.pv-cat { background: #fff; padding: 0 34px 18px; }
.pv-cat:last-of-type { border-radius: 0 0 8px 8px; }
.pv-cat-h { font-size: 15px; font-weight: 700; color: var(--navy); padding: 16px 0 8px; border-bottom: 2px solid var(--cream); margin-bottom: 8px; }
.pv-tbl { width: 100%; border-collapse: separate; border-spacing: 0; table-layout: fixed; }
.pv-tbl col:nth-child(1) { width: 70px; }   /* Image */
.pv-tbl col:nth-child(2) { width: 22%; }    /* Size */
.pv-tbl col:nth-child(3) { width: 18%; }    /* Unit USD */
.pv-tbl col:nth-child(4) { width: 10%; }    /* Qty */
.pv-tbl col:nth-child(5) { width: auto; }    /* Subtotal */
.pv-tbl col:nth-child(6) { width: 13%; }     /* Weight (kg) 2026-09-14 新增（与 PDF/Excel 同为最右列） */
.pv-fixed-header {
  position: sticky; top: 0; z-index: 10;
  background: var(--navy); border-radius: 0;
}
.pv-fixed-header .pv-tbl th { padding: 8px 10px; }
.pv-tbl th { background: var(--navy); color: #fff; font-size: 12px; padding: 7px 8px; text-align: center; }
.pv-tbl thead tr:first-child th { font-weight: 600; }
.pv-tbl thead tr.pv-th-zh th { font-size: 10.5px; font-weight: 400; opacity: .78; padding-top: 3px; padding-bottom: 8px; border-top: 1px solid rgba(255,255,255,.18); letter-spacing: 1px; }
.pv-tbl td { padding: 6px 8px; border-bottom: 1px solid #eef1f5; font-size: 13px; text-align: center; }
.pv-qty { display: inline-block; width: 56px; padding: 3px 4px; text-align: center; border: 1px solid #ccc; border-radius: 4px; font-size: 13px; box-sizing: border-box; min-height: 1em; }
.pv-qty:focus { outline: 2px solid var(--navy); border-color: var(--navy); }
.pv-tbl tfoot td { font-weight: 700; background: var(--cream); }
.pv-sub { background: var(--cream); }
.pv-sub td { font-weight: 700; padding: 6px 8px; border-bottom: none; text-align: center; }
.pv-img img { width: 40px; height: 40px; object-fit: contain; border: 1px solid var(--line); border-radius: 4px; background: #fff; }
.pv-usd { color: var(--red); font-weight: 700; }
.pv-rt { text-align: right !important; }
.pv-wt { white-space: nowrap; color: #333; font-weight: 600; }   /* 重量列（单件净重 / 小计合计）*/
.pv-wt-note { font-size: 11px; color: #8a8a8a; padding: 6px 34px 0; text-align: left; line-height: 1.5; }   /* 重量口径脚注（仅当有款式缺净重时出现）*/
.pv-grand { background: var(--yellow); color: var(--gold); font-size: 16px; font-weight: 700; padding: 16px 34px; border-radius: 0 0 8px 8px; display: flex; justify-content: center; align-items: center; gap: 0; page-break-before: avoid; break-before: avoid; }
.pv-grand > span { padding: 0 15px; position: relative; }   /* 22px→15px：2026-09-14 新增 Weight 段后收窄，避免四段总宽溢出 */
.pv-grand > span + span::before { content: ''; position: absolute; left: 0; top: 50%; transform: translateY(-50%); width: 1px; height: 20px; background: rgba(128,96,0,.25); }
.pv-grand b { color: var(--red); font-size: 18px; }
.pv-zh { font-size: 12px; opacity: .55; font-weight: 400; margin-left: 4px; letter-spacing: .5px; }
.pv-break { height: 0; }

/* ===== 左侧大类侧栏（复合版本） ===== */
.series-nav {
  position: sticky;
  top: calc(var(--top-h, 110px) + 12px);
  flex: 0 0 240px !important;
  width: 240px;
  min-width: 240px;
  max-width: 240px;
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 10px 10px 0;
  box-shadow: 0 1px 3px rgba(20,40,70,.05);
  /* 高度限制 + 内部滚动：SERIES 标题 sticky 黏顶、列表与 DRIVE SIZE 内部独立滚动 */
  max-height: calc(100vh - var(--top-h, 110px) - 12px);
  overflow-y: auto;
  align-self: stretch;
}
/* 移动端吸顶筛选栏容器（桌面隐藏；移动端显示为两个按钮一排） */
.m-filters { display: none; }
/* 折叠面板：桌面 display:contents 完全还原原布局（drive-section/nav-all/nav-grid 直接参与 sidebar） */
.m-panel { display: contents; }
.series-nav .nav-item {
  display: flex; align-items: center; gap: 10px;
  padding: 9px 10px; border-radius: 7px; cursor: pointer;
  color: var(--txt); font-size: 13.5px; font-weight: 600;
  border: 1px solid transparent; margin-bottom: 4px;
  transition: background .12s, color .12s, border-color .12s;
  user-select: none;
}
.series-nav .nav-item:hover { background: #f0f3f7; }
.series-nav .nav-item.active {
  background: var(--navy); color: #fff; border-color: var(--navy-d);
  box-shadow: 0 2px 8px rgba(31,78,121,.28);
}
.series-nav .nav-item.active .nav-count { background: rgba(255,255,255,.22); color: #fff; }
.series-nav .nav-item.active .nav-en { opacity: .85; }
.series-nav .nav-item .nav-icon {
  width: 30px; height: 30px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  border-radius: 6px; background: #eef2f7;
}
.series-nav .nav-item.active .nav-icon { background: rgba(255,255,255,.18); }
.series-nav .nav-item .nav-icon svg { width: 20px; height: 20px; display: block; }
.series-nav .nav-item .nav-text {
  flex: 1; min-width: 0;
  display: flex; flex-direction: column; gap: 1px;
}
.series-nav .nav-item .nav-en {
  font-size: 12.5px; font-weight: 700; line-height: 1.2;
  word-break: normal;            /* 单个单词字母不拆 */
  overflow-wrap: break-word;       /* 极长时按字断（保留空格处优先） */
}
.series-nav .nav-item .nav-zh { font-size: 11px; opacity: .7; font-weight: 500; line-height: 1.2; }
.series-nav .nav-item .nav-count {
  font-size: 11px; background: #eef1f5; color: var(--muted);
  padding: 2px 8px; border-radius: 10px; font-weight: 700; white-space: nowrap;
}

/* 大类分组（含展开小类） */
.series-nav .nav-group { margin-bottom: 2px; }

/* ===== 大类两列网格（仅桌面端 >768px）：一屏看全所有系列，无需下滑 ===== */
@media (min-width: 769px) {
  .series-nav .nav-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);  /* minmax(0,..) 防内容撑开列溢出 */
    gap: 4px;
    align-items: start;
  }
  .series-nav .nav-grid .nav-group { margin-bottom: 0; }
  /* 选中/展开的大类占满两列，给 Drive 子类目留全宽 */
  .series-nav .nav-grid .nav-group.active { grid-column: 1 / -1; }
  /* 网格内 item 紧凑卡片：第一行 icon+count，第二行 名称整行（en/zh 同行换行，不拆字母） */
  .series-nav .nav-grid .nav-item {
    flex-wrap: wrap;
    padding: 6px 7px; gap: 4px 6px; margin-bottom: 0;
  }
  .series-nav .nav-grid .nav-item .nav-icon {
    width: 18px; height: 18px; border-radius: 4px;
  }
  .series-nav .nav-grid .nav-item .nav-icon svg { width: 12px; height: 12px; }
  .series-nav .nav-grid .nav-item .nav-count {
    order: 1; margin-left: auto; flex-shrink: 0;
    font-size: 10px; padding: 1px 5px;
  }
  .series-nav .nav-grid .nav-item .nav-text {
    order: 2; flex-basis: 100%;
    flex-direction: row; flex-wrap: wrap; gap: 1px 5px; align-items: baseline;
  }
  .series-nav .nav-grid .nav-item .nav-en { font-size: 11.5px; line-height: 1.25; }
  .series-nav .nav-grid .nav-item .nav-zh { font-size: 10px; }
  .series-nav .nav-grid .nav-item .nav-arrow { display: none; }
  /* 展开的大类头部恢复原有横排宽松布局 */
  .series-nav .nav-grid .nav-group.active > .nav-series-head {
    padding: 8px 10px; flex-wrap: nowrap;
  }
  .series-nav .nav-grid .nav-group.active > .nav-series-head .nav-icon { width: 26px; height: 26px; border-radius: 6px; }
  .series-nav .nav-grid .nav-group.active > .nav-series-head .nav-icon svg { width: 18px; height: 18px; }
  .series-nav .nav-grid .nav-group.active > .nav-series-head .nav-text {
    order: 0; flex-basis: auto; flex-direction: column; flex-wrap: nowrap; gap: 0;
  }
  .series-nav .nav-grid .nav-group.active > .nav-series-head .nav-en { font-size: 13px; }
  .series-nav .nav-grid .nav-group.active > .nav-series-head .nav-zh { font-size: 11px; }
  .series-nav .nav-grid .nav-group.active > .nav-series-head .nav-count { order: 0; margin-left: 0; }
  .series-nav .nav-grid .nav-group.active > .nav-series-head .nav-arrow { display: block; }
}
.series-nav .nav-group.active .nav-series-head {
  background: var(--navy); color: #fff; border-color: var(--navy-d);
  box-shadow: 0 2px 8px rgba(31,78,121,.28);
}
.series-nav .nav-group.active .nav-series-head .nav-icon { background: rgba(255,255,255,.18); }
.series-nav .nav-group.active .nav-series-head .nav-en { opacity: .85; }
.series-nav .nav-group.active .nav-series-head .nav-count { background: rgba(255,255,255,.22); color: #fff; }

/* 展开/收起箭头 */
.series-nav .nav-arrow {
  font-size: 12px; color: var(--muted); transition: transform .2s;
  flex-shrink: 0; width: 16px; text-align: center;
}
.series-nav .nav-group.active .nav-series-head .nav-arrow { color: rgba(255,255,255,.7); }

/* 小类（Drive 子分类）容器 */
.series-nav .nav-sub {
  padding: 4px 0 6px 18px;
  border-left: 2px solid var(--line);
  margin-left: 23px;
}

/* 小类单项 */
.series-nav .nav-sub-item {
  display: flex; align-items: center; gap: 8px;
  padding: 5px 10px; border-radius: 6px; cursor: pointer;
  color: var(--txt); font-size: 12.5px; font-weight: 600;
  transition: background .12s, color .12s;
  user-select: none;
}
.series-nav .nav-sub-item:hover { background: #f0f3f7; }
.series-nav .nav-sub-item.active {
  background: #e8eef5; color: var(--navy);
  box-shadow: inset 2px 0 0 var(--navy);
}
.series-nav .sub-bullet {
  width: 6px; height: 6px; border-radius: 50%;
  background: var(--line); flex-shrink: 0;
  transition: background .15s;
}
.series-nav .nav-sub-item.active .sub-bullet { background: var(--navy); }
.series-nav .sub-label { flex: 1; }
.series-nav .sub-count {
  font-size: 10.5px; background: #f4f6f9; color: var(--muted);
  padding: 1px 7px; border-radius: 8px; font-weight: 700;
}

/* 驱动方口展开箭头（小类右侧，指示其下还有长度层） */
.series-nav .sub-arrow {
  font-size: 10px; color: var(--muted); flex-shrink: 0; width: 14px; text-align: center;
  transition: transform .2s;
}
.series-nav .nav-sub-item.expanded .sub-arrow { color: var(--navy); }

/* 第三级：长度类（Short / Long / Extra-Long / Special） */
.series-nav .nav-sub2 {
  padding: 2px 0 3px 14px;
  border-left: 2px dashed #e0e5ec;
  margin-left: 16px;
}
.series-nav .nav-sub2-item {
  display: flex; align-items: center; gap: 7px;
  padding: 3px 10px; border-radius: 6px; cursor: pointer;
  color: #6b7585; font-size: 11.5px; font-weight: 600;
  transition: background .12s, color .12s;
  user-select: none;
}
.series-nav .nav-sub2-item:hover { background: #f0f3f7; color: var(--navy); }
.series-nav .nav-sub2-item.active {
  background: #e8eef5; color: var(--navy);
  box-shadow: inset 2px 0 0 var(--navy);
}
.series-nav .sub-bullet2 {
  width: 5px; height: 5px; border-radius: 2px;
  background: #cfd6e0; flex-shrink: 0;
  transition: background .15s;
}
.series-nav .nav-sub2-item.active .sub-bullet2 { background: var(--navy); }
.series-nav .sub-label2 { flex: 1; }
.series-nav .sub-count2 {
  font-size: 10px; background: #f4f6f9; color: var(--muted);
  padding: 1px 6px; border-radius: 7px; font-weight: 700;
}
.series-nav .nav-divider { height: 1px; background: var(--line); margin: 6px 4px; }
.series-nav .nav-hint {
  display: none;
}
.series-nav .nav-hint b { color: var(--navy); }

/* 侧栏内"驱动方口"分组 + chip 按钮组 */
.series-nav .drive-section {
  margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--line);
  position: sticky; bottom: 0; background: var(--card); z-index: 10;
}
.series-nav .drive-title {
  font-size: 11px; color: var(--muted); letter-spacing: .6px;
  text-transform: uppercase; font-weight: 700;
  padding: 0 8px 8px;
}
.series-nav .drive-title b { color: var(--navy); font-weight: 700; }
.series-nav .drive-chips {
  display: grid;
  grid-template-columns: repeat(3, 1fr);  /* 三列等宽，每排长度一致 */
  gap: 6px; padding: 0 8px;
}
.series-nav .drive-chip {
  font-size: 12px; padding: 5px 8px; border-radius: 14px;
  border: 1px solid var(--line); background: #fff; color: var(--muted);
  cursor: pointer; font-weight: 600; user-select: none;
  display: flex; align-items: center; justify-content: center;  /* flex 让文字真正居中（text-align 对 inline 元素不生效） */
  text-align: center; overflow-wrap: break-word; line-height: 1.2;
  min-height: 26px;  /* 保证多行文字（如 "1-1/4" (32mm)" 两行）chip 高度一致 */
  transition: background .12s, color .12s, border-color .12s;
}
.series-nav .drive-chip:hover { background: #f0f3f7; color: var(--txt); border-color: #c2cdd9; }
.series-nav .drive-chip.active {
  background: var(--navy); color: #fff; border-color: var(--navy-d);
  box-shadow: 0 2px 6px rgba(31,78,121,.22);
}

/* ===== 移动端（手机/平板竖屏 ≤768px）：单列垂直 + 排头精简 ===== */
/* 排头占比优化：导航改水平 chips（不再占 218px 垂直列表）、隐藏公司信息行、头部紧凑，给产品列表更多首屏空间 */
@media (max-width: 768px) {
  main.layout {
    flex-direction: column !important;  /* 覆盖基础样式的 row !important，实现单列 */
    padding: 10px 8px 40px;
    gap: 10px;
    align-items: stretch;
  }
  .catalog-wrap { width: 100%; }

  /* === 移动端链接栏：横向滚动卡片行（产品家族 + 联系） === */
  .link-sidebar {
    flex: 0 0 auto !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    position: static;
    flex-direction: row;
    flex-wrap: nowrap;
    gap: 8px;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    padding: 4px 2px 8px;
    order: 3;   /* 排在产品列表之后 */
  }
  .link-sidebar .ls-card {
    flex: 0 0 auto;
    min-width: 240px;
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    align-items: center;
    gap: 4px;
    padding: 8px 10px;
  }
  .link-sidebar .ls-head {
    flex: 0 0 100%;
    width: 100%;
    font-size: 11px;
    padding: 0 2px 6px;
    margin-bottom: 4px;
  }
  .link-sidebar .ls-item {
    width: auto;
    flex: 0 0 auto;
    padding: 6px 8px;
    gap: 6px;
  }
  .link-sidebar .ls-sub { display: none; }   /* 移动端隐藏副标题，省空间 */


  /* === 导航 v6：吸顶筛选栏（Drive Size / Series 两按钮 + 折叠面板） === */
  .series-nav {
    position: sticky;
    top: var(--top-h, 110px);          /* 吸顶：下滑时随时可见，可重新选择 */
    z-index: 55;
    flex: 0 0 auto !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    max-height: none !important;
    align-self: stretch;
    display: flex;
    flex-direction: column;
    gap: 0;
    overflow: visible;
    padding: 0;
    background: var(--card);
    border: none;
    border-bottom: 1px solid var(--line);
    border-radius: 0;
    box-shadow: none;
  }
  /* 吸顶按钮排：两个按钮一行（Drive Size | Series） */
  .series-nav .m-filters {
    display: flex;
    gap: 6px;
    padding: 8px 10px;
    background: var(--card);
  }
  .series-nav .m-filter {
    flex: 1 1 0;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    padding: 8px 6px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fff;
    font-size: 12.5px;
    color: var(--txt);
    cursor: pointer;
    min-width: 0;
  }
  .series-nav .m-filter:active { background: #f0f3f7; }
  .series-nav .m-filter .mf-lbl { color: #5A6B7B; font-size: 11px; white-space: nowrap; }
  .series-nav .m-filter .mf-val { color: var(--navy); font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 55%; }
  .series-nav .m-filter .mf-arrow { color: var(--navy); font-size: 10px; }
  /* 折叠面板：绝对定位向下展开（覆盖在内容上方，不占布局） */
  .series-nav .m-panel {
    display: none;
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    background: #fff;
    border: 1px solid var(--line);
    border-top: none;
    border-radius: 0 0 10px 10px;
    box-shadow: 0 8px 24px rgba(20,40,70,.18);
    z-index: 56;
    max-height: 62vh;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    padding: 8px 10px 6px;
  }
  .series-nav .m-panel.open { display: block; }
  /* backdrop：面板打开时给产品区加半透明遮罩（区分视觉层级；点击关闭） */
  body.m-panel-open::after {
    content: '';
    position: fixed;
    top: calc(var(--top-h, 110px) + 48px);    /* sticky-shell 高 + 筛选按钮排高 */
    left: 0; right: 0; bottom: 0;
    background: rgba(0, 0, 0, .35);
    z-index: 54;
  }
  /* 手机端隐藏：三级展开、标题、提示、箭头、分隔线 */
  .series-nav .nav-hint,
  .series-nav .nav-divider,
  .series-nav .nav-sub,
  .series-nav .nav-sub2,
  .series-nav .nav-arrow { display: none !important; }
  /* === 移动端大图查看器：点击小图 → 全屏居中 contain（不超出屏幕） === */
  .img-zoom.zoom-full {
    position: fixed !important;
    inset: 0 !important;
    width: 100vw !important;
    height: 100vh !important;
    background-color: rgba(0, 0, 0, .68) !important;
    background-size: contain !important;
    background-position: center !important;
    border: none !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    z-index: 300 !important;
    pointer-events: auto !important;
    cursor: zoom-out;
  }
  /* === 移动端 panel 里 .active chip 保留深蓝底白字（m-panel 默认 background:#fff 覆盖了 desktop 规则造成"白底白字"看不见） === */
  .series-nav .m-panel[data-panel="series"] .nav-item.active,
  .series-nav .m-panel[data-panel="drive"] .drive-chip.active {
    background: var(--navy) !important;
    color: #fff !important;
    border-color: var(--navy-d) !important;
  }
  .series-nav .m-panel[data-panel="series"] .nav-item.active .nav-en,
  .series-nav .m-panel[data-panel="series"] .nav-item.active .nav-count { color: #fff !important; opacity: .85; }
  .series-nav .m-panel[data-panel="series"] .nav-item.active .nav-icon { background: rgba(255,255,255,.18); }
  .series-nav .m-panel[data-panel="drive"] .drive-chip.active { color: #fff !important; }
  /* Drive 面板：chips 网格 3 列（不滚动，全部可见；不再显示多余 DRIVE SIZE 标题，按钮已有标签） */
  .series-nav .m-panel[data-panel="drive"] .drive-section { border: none; padding: 0; margin: 0; }
  .series-nav .m-panel[data-panel="drive"] .drive-title { display: none; }   /* 删除冗余标题 */
  .series-nav .m-panel[data-panel="drive"] .drive-chips { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; padding: 0; }
  .series-nav .m-panel[data-panel="drive"] .drive-chip {
    flex: none !important;
    text-align: center;
    padding: 8px 4px !important;
    font-size: 12px;
    border: 1px solid var(--line);
    border-radius: 7px;
    background: #fff;
    cursor: pointer;
  }
  .series-nav .m-panel[data-panel="drive"] .drive-chip.active {
    background: var(--navy); color: #fff; border-color: var(--navy-d);
  }
  /* Series 面板：网格两列（All Series + 各大类）；min-width:0 防止右侧列溢出屏幕 */
  /* 关键：.nav-all 保留 display:flex 让子元素一行排列（只设 grid-column 占满整行），不要把它也变 grid */
  .series-nav .m-panel[data-panel="series"] .nav-all { display: flex; grid-column: 1 / -1; padding: 8px 10px; gap: 6px; border: 1px solid var(--line); border-radius: 7px; font-size: 12px; background: #fff; margin: 0; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
  .series-nav .m-panel[data-panel="series"] .nav-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; align-items: start; }   /* align-items:start 防止未展开的 cell 被拉高 */
  /* 关键：.nav-group display:contents 让其子项（.nav-series-head + .nav-sub）直接成为 grid 子项，.nav-sub 才能 grid-column 1/-1 占整行换行 */
  .series-nav .m-panel[data-panel="series"] .nav-group { display: contents; }
  .series-nav .m-panel[data-panel="series"] .nav-sub { grid-column: 1 / -1; padding: 0 0 6px; }
  .series-nav .m-panel[data-panel="series"] .nav-group { flex: none; margin: 0; min-width: 0; }
  .series-nav .m-panel[data-panel="series"] .nav-item {
    flex: none;
    white-space: nowrap;
    padding: 8px 10px;
    gap: 6px;
    border: 1px solid var(--line);
    border-radius: 7px;
    font-size: 12px;
    background: #fff;
    margin: 0;
    min-width: 0;             /* 允许 grid 收缩 */
    overflow: hidden;
    text-overflow: ellipsis;
  }
  .series-nav .m-panel[data-panel="series"] .nav-item .nav-icon { width: 16px; height: 16px; flex: 0 0 auto; }
  .series-nav .m-panel[data-panel="series"] .nav-item .nav-icon svg { width: 13px; height: 13px; }
  .series-nav .m-panel[data-panel="series"] .nav-item .nav-text { flex: 1 1 auto; min-width: 0; overflow: hidden; }
  .series-nav .m-panel[data-panel="series"] .nav-item .nav-en { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .series-nav .m-panel[data-panel="series"] .nav-item .nav-zh { display: none; }   /* 移动端隐藏中文标签省空间 */
  .series-nav .m-panel[data-panel="series"] .nav-item .nav-count { font-size: 10px; padding: 1px 5px; flex: 0 0 auto; }
  /* 展开的 drive chips（.nav-sub-item）独占整行显示 */
  .series-nav .m-panel[data-panel="series"] .nav-sub-item {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 6px 10px;
    margin: 4px 0 0;
    border: 1px solid var(--line);
    border-radius: 7px;
    font-size: 12px;
    background: #fff;
    cursor: pointer;
  }
  .series-nav .m-panel[data-panel="series"] .nav-sub-item .sub-bullet { width: 6px; height: 6px; border-radius: 50%; background: var(--navy); flex: 0 0 auto; }
  .series-nav .m-panel[data-panel="series"] .nav-sub-item .sub-label { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .series-nav .m-panel[data-panel="series"] .nav-sub-item .sub-count { font-size: 10px; padding: 1px 5px; flex: 0 0 auto; color: var(--muted); }
  /* Series 面板：导航子项（drive 展开项）也展示为可点击项 */
  .series-nav .m-panel[data-panel="series"] .nav-sub { display: block !important; grid-column: 1 / -1; padding: 2px 0 0; }
  .series-nav .m-panel[data-panel="series"] .nav-sub-item { display: flex; padding: 6px 8px; font-size: 12px; border-radius: 6px; }

  /* === 头部精简：隐藏公司信息行与副标题 === */
  .topbar-row.topbar-company { display: none; }
  .topbar-row.topbar-main { padding: 8px 12px; }
  .topbar h1 { font-size: 14px; }
  .topbar #subtitle { display: none; }
  .logo-center { display: none; }
  .params { gap: 8px; }
  .badge { padding: 4px 10px; font-size: 11.5px; }

  /* === 工具栏：搜索框独占一行在最上，按钮组一行 === */
  .toolbar { flex-wrap: wrap; gap: 6px; padding: 6px 10px; }
  .toolbar .search-bar { flex: 1 1 100%; order: -1; }
  .toolbar .search-bar input { max-width: none; height: 32px; font-size: 13px; padding: 4px 10px; }
  .toolbar .btn { padding: 6px 10px; font-size: 12px; flex: 1 1 auto; height: 32px; }

  /* === 产品表格手机端紧凑化（产品表优化 v2：表格横向滚动+隐藏 Height 冗余列） === */
  .cat-card { overflow-x: auto; -webkit-overflow-scrolling: touch; }   /* 整张卡片内表格可左右滑动 */
  .cat-thead-tbl, .cat-body-tbl { min-width: 380px; }
  /* 移动端隐藏 Total Height/Content 列（第 4 列）—— cat-meta 已显示高度信息，避免冗余 */
  .cat-thead-tbl th:nth-child(4),
  .cat-thead-tbl colgroup col:nth-child(4),
  .cat-body-tbl td.height,
  .cat-body-tbl colgroup col:nth-child(4) { display: none; }
  /* === cat-head / sticky 紧凑化（省 ~80px 让首屏看到产品） */
  .cat-sticky { top: var(--top-h, 110px); }
  /* 移动端：取消 cat-sticky 吸顶，cat-head 内联在 cat-card 顶部（紧贴筛选栏），避免 flex+overflow-x:auto 容器干扰 sticky 行为 */
  @media (max-width: 768px) {
    .cat-sticky { position: static !important; top: auto !important; background: transparent !important; }
  }
  .cat-head { flex-direction: column; align-items: flex-start; gap: 4px; padding: 8px 10px; }
  .cat-head > div { gap: 2px !important; }
  /* 板块级 Select All / Clear 按钮：移动端紧凑显示（李总要求板块可全选/清空，不用去顶部全局按钮） */
  .cat-head .btn { display: inline-block !important; padding: 4px 10px; font-size: 11px; margin-top: 4px; }
  .cat-head .btn + .btn { margin-left: 6px; }
  .cat-title { font-size: 13px; line-height: 1.25; }
  .cat-meta { font-size: 10.5px; line-height: 1.4; gap: 4px; }
  .cat-meta .cavity-tag { font-size: 9.5px; padding: 1px 5px; }
  .cat-tier { font-size: 10px; line-height: 1.4; padding-top: 2px; }
  .cat-thead-tbl th { padding: 5px 4px; font-size: 10.5px; }
  .cat-body-tbl td { padding: 5px 3px; font-size: 12px; }
  .cat-body-tbl td.wt { font-size: 11.5px; padding: 5px 2px; }
  .cat-body-tbl td.thumb img { width: 34px; height: 34px; }
  .qty { width: 46px; padding: 4px 3px; font-size: 12px; }
  .sel-chk { width: 15px; height: 15px; }

  /* === 离开确认弹窗移动端：按钮全宽易点、卡片贴边留呼吸 === */
  .confirm-card { width: calc(100vw - 32px); padding: 22px 20px 18px; }
  .confirm-title { font-size: 17px; }
  .confirm-body p { font-size: 13.5px; }
  .confirm-actions { flex-direction: column; gap: 8px; margin-top: 8px; }
  .confirm-actions .btn { display: block; width: 100%; padding: 12px 0; font-size: 14px; text-align: center; }
}

/* ===== 打印（存为 PDF）===== */
@media print {
  body > *:not(#previewModal) { display: none !important; }   /* 关键：脱离布局，否则 body scrollHeight 93918px 打印出 ~120 页空白 */
  #previewModal, #previewModal * { visibility: visible; }
  #previewModal {
    position: absolute; inset: 0; background: #fff; overflow: visible; display: block !important;
  }
  #previewModal .modal-bar, .no-print { display: none !important; }
  .preview-sheet { padding: 0; overflow: visible; background: #fff; }
  .pv-fixed-header { position: static; }   /* 去掉 sticky 避免每页占位产生空白页 */
  .pv-fixed-header { display: none !important; }   /* 打印时让 thead 自动重复接管 */
  .pv-tbl thead { display: table-header-group; }   /* 分页时 thead 自动重复到下一页 */
  /* 只让第二个及之后的类目整块不断页；第一个类目允许接在封面后面自然分页，避免首页空白 */
  .pv-cat ~ .pv-cat { page-break-inside: avoid; }
  .pv-cat-h { page-break-after: avoid; }
  .pv-tbl tr { page-break-inside: avoid; }
  .pv-break { page-break-before: always; }
  .pv-grand { page-break-after: avoid; break-after: avoid; }   /* 防止总计后再起一页 */
  /* qty input 在 PDF 里静态化：禁用交互、隐藏光标/原生外观，避免 Chrome PDF Viewer 出文本光标闪烁 / 框选 */
  .pv-qty {
    pointer-events: none !important;
    -webkit-appearance: none !important;
    appearance: none !important;
    caret-color: transparent !important;
    background: transparent !important;
    border-color: transparent !important;
    color: inherit !important;
    user-select: none !important;
    -webkit-user-select: none !important;
    -webkit-touch-callout: none !important;
  }
}
/* === 微信内置浏览器下载浮层 === */
.wx-dl-modal { position: fixed; inset: 0; background: rgba(0, 0, 0, 0.55); display: flex; align-items: center; justify-content: center; z-index: 10000; padding: 16px; animation: wxDlFade 0.2s ease; }
@keyframes wxDlFade { from { opacity: 0; } to { opacity: 1; } }
.wx-dl-card { background: #fff; border-radius: 14px; width: 100%; max-width: 340px; padding: 22px 20px 16px; box-shadow: 0 16px 40px rgba(0, 0, 0, 0.3); }
.wx-dl-tit { font-size: 16px; font-weight: 700; color: #1f4e79; margin-bottom: 14px; }
.wx-dl-name { font-size: 12px; color: #6b7280; padding: 8px 10px; background: #f3f4f6; border-radius: 6px; margin-bottom: 12px; word-break: break-all; }
.wx-dl-tip { font-size: 13px; color: #374151; margin-bottom: 10px; }
.wx-dl-step { font-size: 12.5px; color: #4b5563; line-height: 1.7; margin-bottom: 6px; padding-left: 4px; }
.wx-dl-link { display: block; margin: 14px 0; padding: 12px 14px; background: #1f4e79; color: #fff !important; border-radius: 8px; text-align: center; font-size: 13.5px; font-weight: 600; text-decoration: none; word-break: break-all; }
.wx-dl-link:active { background: #163d5e; }
.wx-dl-close { width: 100%; margin-top: 4px; padding: 10px; background: transparent; border: 1px solid #d1d5db; border-radius: 8px; color: #4b5563; font-size: 14px; cursor: pointer; }
.wx-dl-close:active { background: #f3f4f6; }

/* ===== 语言切换器（多语言 i18n 2026-08-15）===== */
.lang-switch { position: relative; margin-left: auto; flex-shrink: 0; }
/* topbar 操作按钮（MY INFO）：与 lang-btn 款式完全一致（08-17 李总要求） */
.lang-btn, .topbar-action-btn { background: #fff; border: 1px solid var(--line, #d8dee4); border-radius: 6px; padding: 3px 10px; font-size: 12px; line-height: 1.4; color: #24303c; cursor: pointer; display: inline-flex; align-items: center; gap: 4px; white-space: nowrap; }
.lang-btn:hover, .topbar-action-btn:hover { border-color: #b8c4cf; background: #f7f9fb; }
.topbar-action-btn { margin-left: 8px; flex-shrink: 0; position: relative; --avatar: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Ccircle cx='24' cy='24' r='22' fill='%231F4E79' stroke='%23FFFFFF' stroke-width='3'/%3E%3Ccircle cx='24' cy='19' r='7' fill='%23FFFFFF'/%3E%3Cpath d='M 8 41 C 8 29 40 29 40 41 Z' fill='%23FFFFFF'/%3E%3C/svg%3E"); }
/* 圆形头像图标（08-17 李总选定 Brand navy）——电脑端 MY INFO 文字旁、手机端独立头像 */
.topbar-action-btn::before { content: ''; width: 18px; height: 18px; background: var(--avatar) center/contain no-repeat; display: inline-block; }
/* 未填引导：头像右上角小橙点（不改变按钮底色） */
.topbar-action-btn.attention::after { content: ''; position: absolute; top: -2px; right: -2px; width: 7px; height: 7px; border-radius: 50%; background: #f59e0b; }
@media (max-width: 768px) {
  .lang-btn { font-size: 11px; padding: 4px 8px; }
  /* 手机端：MY INFO 移到第一排右上角，透明底只留头像本体（08-17 李总：不要大块白框） */
  .totals .topbar-action-btn {
    position: absolute; right: 10px; top: 4px; order: 0; margin-left: 0;
    background: transparent; border: none; padding: 2px; font-size: 0; z-index: 5;
  }
  .topbar-action-btn::before { width: 20px; height: 20px; }
  /* 橙点位置尺寸保持不变（08-17 李总要求） */
  .topbar-action-btn.attention::after { top: -1px; right: -1px; width: 5px; height: 5px; }
  /* 标题留出右上角图标空间，避免长标题被遮挡 */
  .brand h1 { max-width: calc(100% - 36px); }
}
.lang-menu { position: absolute; right: 0; top: calc(100% + 4px); background: #fff; border: 1px solid var(--line, #d8dee4); border-radius: 8px; box-shadow: 0 8px 24px rgba(0,0,0,.14); padding: 4px; z-index: 300; min-width: 132px; margin: 0; list-style: none; }
.lang-menu.hidden { display: none; }
.lang-menu .lang-item { list-style: none; padding: 7px 12px; font-size: 13px; color: #24303c; cursor: pointer; border-radius: 6px; white-space: nowrap; }
.lang-menu .lang-item:hover { background: #f0f3f7; }
.lang-menu .lang-item.active { background: #eef4fb; color: var(--navy, #1f4e79); font-weight: 600; }
#companyBar .lang-switch { margin-left: 14px; }
@media (max-width: 768px) {
  .lang-btn { font-size: 11px; padding: 2px 8px; }
  #companyBar .lang-switch { margin-left: 8px; }
}

/* ===== 品牌标题多语言长文本适配（2026-08-15）===== */
.topbar h1 { max-width: min(40vw, 430px); line-height: 1.2; overflow-wrap: break-word; word-break: break-word; }
@media (max-width: 768px) {
  .topbar h1 { max-width: calc(100vw - 150px); font-size: 13px; line-height: 1.25; }
}

/* ===== 移动端语言切换器可见性修复（2026-08-15）=====
   原规则把 .topbar-row.topbar-company 整体 display:none，语言切换器被一起藏掉。
   移动端保留该行但只显示 lang-switch（隐藏公司信息项），保证手机客户能切换语言 */
@media (max-width: 768px) {
  .topbar-row.topbar-company { display: flex; padding: 5px 12px; justify-content: flex-end; }
  .topbar-row.topbar-company .co-name,
  .topbar-row.topbar-company .co-sep,
  .topbar-row.topbar-company .co-item { display: none !important; }
}

/* ===== 语言菜单 z-index 终极修复（2026-08-15）=====
   移动端展开菜单时，第 5 项 Русский 被左侧 .series-nav 的 nav-item 元素遮挡。
   根因：series-nav 创建独立 stacking context（sticky/transform 等），菜单 z-index:300
   不够高被覆盖。提到 9999 脱离任何同级 stacking 竞争，确保始终在最上层。 */
.lang-menu { z-index: 9999 !important; }

/* ===== 顶栏与导航 stacking context 修复（2026-08-15）=====
   根因：.sticky-shell (z-index:50) 与兄弟 .series-nav (sticky 创建 SC 但 z-index:auto)
   各自创建独立 stacking context。语言菜单在 sticky-shell 内部 z-index:9999 跨不过
   sticky-shell 的 SC 边界，被 series-nav 覆盖。提升 sticky-shell 到 100 + series-nav 显式 1。 */
.sticky-shell { z-index: 100; }
.series-nav { z-index: 1; }

/* ===== 客户信息表单（可选填 + SKIP，2026-08-15）===== */
.cust-form { text-align: left; margin-top: 6px; }
.cust-form label { display: block; margin-bottom: 9px; font-size: 12px; color: #5a6b7b; }
.cust-form label > span { display: block; margin-bottom: 2px; }
.cust-form input[type="text"], .cust-form input[type="email"] { width: 100%; box-sizing: border-box; padding: 7px 9px; border: 1px solid #d8dee4; border-radius: 6px; font-size: 13px; color: #24303c; }
.cust-form input:focus { outline: none; border-color: var(--navy, #1f4e79); box-shadow: 0 0 0 2px rgba(31,78,121,.12); }
.cust-form .cust-remember { display: flex; align-items: center; gap: 6px; font-size: 12.5px; color: #4b5563; cursor: pointer; margin-bottom: 2px; }
.cust-form .cust-remember input { width: 14px; height: 14px; margin: 0; cursor: pointer; }

/* ===== 客户信息表单：居中 + 标签大写 + 同号打勾区域（2026-08-15）===== */
#custModal { align-items: center; justify-content: center; }
#custModal .confirm-card { width: min(480px, 92vw); padding: 28px 32px 24px; }
#custModal .confirm-title { font-size: 17px; letter-spacing: 0.3px; }
.cust-form label { text-transform: uppercase; letter-spacing: 0.6px; font-weight: 700; color: #24303c; font-size: 11.5px; margin-bottom: 6px; }
.cust-form label > span { display: block; margin-bottom: 4px; color: #1f4e79; }
.cust-form input[type="text"], .cust-form input[type="email"], .cust-form input[type="tel"] { width: 100%; box-sizing: border-box; padding: 8px 10px; border: 1px solid #d8dee4; border-radius: 6px; font-size: 14px; color: #24303c; }
.cust-form input:focus { outline: none; border-color: var(--navy, #1f4e79); box-shadow: 0 0 0 2px rgba(31,78,121,.12); }
.cust-form .cust-same-block { background: #f5f8fc; border: 1.5px dashed var(--navy, #1f4e79); border-radius: 8px; padding: 10px 12px; margin-top: 6px; margin-bottom: 12px; }
.cust-form .cust-same-block-title { display: block; font-size: 11.5px; font-weight: 700; color: var(--navy, #1f4e79); text-transform: uppercase; letter-spacing: 0.6px; margin-bottom: 8px; }
.cust-form .cust-same-block label { display: flex; align-items: center; gap: 7px; margin-bottom: 6px; font-size: 13px; font-weight: 600; color: #24303c; text-transform: none; letter-spacing: 0; cursor: pointer; }
.cust-form .cust-same-block label:last-child { margin-bottom: 0; }
.cust-form .cust-same-block input[type="checkbox"] { width: 16px; height: 16px; margin: 0; cursor: pointer; }
.cust-form .cust-remember { display: flex; align-items: center; gap: 6px; font-size: 13px; color: #4b5563; cursor: pointer; margin-top: 4px; margin-bottom: 0; text-transform: none; letter-spacing: 0; font-weight: 500; }
.cust-form .cust-remember input { width: 15px; height: 15px; margin: 0; cursor: pointer; }

/* ===== 一键发询盘（WhatsApp/Email，2026-08-15）===== */
#inqModal { align-items: center; justify-content: center; }
.inq-channels { display: flex; gap: 12px; margin-top: 8px; }
.inq-btn { flex: 1; padding: 16px 10px; border-radius: 8px; font-size: 14.5px; font-weight: 700; cursor: pointer; border: none; color: #fff; letter-spacing: .3px; transition: transform .08s, filter .12s; }
.inq-btn:hover { filter: brightness(1.06); }
.inq-btn:active { transform: scale(.97); }
.inq-wa { background: #25D366; }
.inq-em { background: #1f4e79; }

/* ===== 多币种选择器（2026-08-15）===== */
.cur-sel { background: #fff; border: 1px solid #d8dee4; border-radius: 5px; font-size: 12px; padding: 2px 5px; margin-left: 4px; color: var(--navy, #1f4e79); font-weight: 700; cursor: pointer; }
.cur-sel:focus { outline: none; border-color: var(--navy, #1f4e79); }

/* ===== 产品详情抽屉（右侧滑出，2026-08-15）===== */
.detail-drawer { position: fixed; inset: 0; z-index: 9998; pointer-events: none; }
.detail-drawer.hidden { display: block; visibility: hidden; }
.detail-drawer:not(.hidden) { pointer-events: auto; visibility: visible; }
.detail-drawer .dd-backdrop { position: absolute; inset: 0; background: rgba(20,30,45,.45); opacity: 0; transition: opacity .22s; }
.detail-drawer:not(.hidden) .dd-backdrop { opacity: 1; }
.detail-drawer .dd-panel { position: absolute; top: 0; right: 0; bottom: 0; width: min(400px, 86vw); background: #fff; box-shadow: -8px 0 30px rgba(15,25,45,.25); transform: translateX(102%); transition: transform .24s ease; overflow-y: auto; z-index: 2; }
.detail-drawer:not(.hidden) .dd-panel { transform: translateX(0); }
.dd-close { position: sticky; top: 10px; float: right; margin: 8px 10px 0 0; z-index: 3; width: 32px; height: 32px; font-size: 22px; line-height: 1; border: none; border-radius: 50%; background: #f0f3f7; color: #445; cursor: pointer; }
.dd-close:hover { background: #e2e8ef; }
#ddContent { padding: 8px 22px 26px; }
#ddContent .dd-img { text-align: center; margin: 8px 0 10px; }
/* 注：详情大图重量角标方案已否决（2026-09-14 李总：与产品图上的供应商文字视觉冲突）→ 重量只在规格表出现 */
#ddContent .dd-img img { max-width: 100%; max-height: 240px; object-fit: contain; border-radius: 8px; background: #fff; border: 1px solid #eef1f5; }
#ddContent h3 { margin: 6px 0 2px; font-size: 16px; color: var(--navy, #1f4e79); line-height: 1.35; }
#ddContent .dd-model { font-size: 13px; color: #556; font-weight: 600; margin-bottom: 12px; }
#ddContent .dd-spec { width: 100%; border-collapse: collapse; font-size: 13px; }
#ddContent .dd-spec td { padding: 7px 8px; border-bottom: 1px solid #eef1f5; }
#ddContent .dd-spec td:first-child { color: #7a8494; width: 38%; }
#ddContent .dd-spec td:last-child { font-weight: 600; color: #24303c; }
#ddContent .dd-price { margin-top: 14px; font-size: 20px; font-weight: 800; color: var(--navy, #1f4e79); }
#ddContent .dd-price .cur { font-size: 13px; font-weight: 600; color: #8a94a2; }
#ddContent .dd-tier { margin-top: 6px; font-size: 12px; color: #8a94a2; line-height: 1.6; }
@media (max-width: 768px) {
  .detail-drawer .dd-panel { width: 100vw; }
}

/* ===== 移动端筛选面板被灰色遮罩覆盖修复（2026-08-15）=====
   根因：body.m-panel-open::after backdrop z-index:54 是 body 直接子层；
   .series-nav（sticky + z-index:1）是独立 stacking context，m-panel 在其内部 z:56
   跨 SC 比较只继承 series-nav 的 1 → 54 > 1，灰色遮罩盖住整个筛选面板，选项无法点击。
   修复：backdrop z-index 54 → 0（低于 series-nav 1；catalog 默认 0 且 DOM 在前，backdrop 仍盖住产品区）。 */
body.m-panel-open::after { z-index: 0; }

/* ===== 所有 modal 默认居中（08-16 waHintModal 同样 bug 修复 + 防止新 modal 复发）=====
   原 .modal { display: flex; flex-direction: column; } 不带居中 → 新 modal 默认左上角。
   现在全局改默认居中；各 modal 内部内容仍按 column 排版不受影响。 */
.modal { align-items: center; justify-content: center; }

/* ===== 移动端顶栏重排（08-16 李总：标题一行顶层 + 语言|已选|Total 一排，Total 默认 USD）===== */
@media (max-width: 768px) {
  /* 标题独占一行（居中完整显示，不再缩左上角）；副标题与 LOGO 隐藏省空间 */
  .topbar-row.topbar-main { flex-direction: column; align-items: stretch; padding: 8px 12px 6px; gap: 4px; }
  .brand { justify-content: center; width: 100%; }
  .brand h1 { max-width: 100%; font-size: 15px; text-align: center; white-space: normal; }
  .brand #subtitle { display: none; }
  .logo-center { display: none; }
  /* 第二排：语言 | 已选 | Total 三选项横排（语言在最左，Total 最右） */
  .params { width: 100%; }
  .totals { display: flex; justify-content: space-between; align-items: center; gap: 6px; }
  .totals .sel-preview-wrap { order: 2; }
  .totals .badge.total { order: 3; flex: 1; justify-content: center; }
  .totals .lang-switch { order: 1; margin-left: 0; }
  .lang-btn { padding: 4px 8px; font-size: 11px; }
  /* companyBar 整行隐藏（语言切换器已移到 totals） */
  .topbar-row.topbar-company { display: none; }
  .sel-preview { display: none; }
}

/* ===== 第二排三选项均分对齐（08-16 李总：左右靠边距离一致）=====
   之前 lang/selected 按内容宽、total flex:1 撑满 → 左右不对称。
   现在三项各 flex:1 + 内容居中 → 三等分，左右边界对称。 */
@media (max-width: 768px) {
  .totals { gap: 4px; }
  .totals .sel-preview-wrap,
  .totals .badge.total,
  .totals .lang-switch { flex: 1; justify-content: center; }
  .totals .sel-preview-wrap { display: flex; }
  .totals .lang-switch { display: flex; }
}

/* ===== 第二排三选项真正三等分（08-16 二次修复：右侧留白 57px 根因 space-between+flex:1+min-width:auto）===== */
@media (max-width: 768px) {
  .params { width: 100%; }
  .totals { display: flex; gap: 0; }
  .totals > .sel-preview-wrap,
  .totals > .badge.total,
  .totals > .lang-switch { flex: 1 1 0; min-width: 0; justify-content: center; }
  .totals .badge.total { padding: 6px 4px; font-size: 12px; white-space: nowrap; overflow: hidden; }
  .lang-btn { font-size: 11px; padding: 4px 6px; max-width: 100%; overflow: hidden; }
}

/* ===== 第二排容器占满（08-16 三次修复：wrap 298px 未占满 → 右侧留白）===== */
@media (max-width: 768px) {
  .totals { width: 100%; }
}

/* ===== 第二排恢复紧凑布局（08-16 李总：不要三等分拉伸，要"之前布局+Total靠右+左右对称"）=====
   之前三等分 flex:1 拉伸 → 蓝色背景块大且吃文字。
   恢复：三项按内容宽（flex:0 0 auto）+ space-between → 语言贴左 / Total 贴右 / 已选居中，左右距边框对称 12px。 */
@media (max-width: 768px) {
  .totals { justify-content: space-between; gap: 6px; }
  .totals > .sel-preview-wrap,
  .totals > .badge.total,
  .totals > .lang-switch { flex: 0 0 auto; min-width: 0; justify-content: flex-start; }
  .totals .badge.total { padding: 6px 16px; font-size: 13px; }
  .lang-btn { font-size: 12px; padding: 3px 10px; }
}

/* ===== Total 黄块不超屏（08-16 李总：选数量出金额后黄色部分超出屏幕）=====
   金额变大 → badge 内容变宽撑破容器。移动端限制 badge 最大宽度 + 金额超长省略号。 */
@media (max-width: 768px) {
  .totals .badge.total { max-width: 46%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .totals .badge.total b { flex-shrink: 1; overflow: hidden; text-overflow: ellipsis; max-width: 88px; }
  .cur-sel { max-width: 62px; padding: 2px 3px; font-size: 11px; }
}

/* ===== 移动端标题行加 LOGO（08-16 李总"顶层那排 LOGO 放左侧"）=====
   flex-wrap 两行：order1 = LOGO(左 30px) + 标题(剩余居中)；order2 = params 第二排。不动 HTML/桌面。 */
@media (max-width: 768px) {
  .topbar-row.topbar-main { flex-direction: row; flex-wrap: wrap; }
  .logo-center { display: flex; order: 1; width: 30px; flex-shrink: 0; justify-content: flex-start; }
  .logo-center img { height: 20px; width: auto; }
  .brand { order: 1; width: calc(100% - 36px); justify-content: center; }
  .params { order: 2; width: 100%; }
}

/* ===== 修正：logo 必须排标题前（order: logo=1 brand=2 params=3）+ 垂直居中（08-16）===== */
@media (max-width: 768px) {
  .topbar-row.topbar-main { align-items: center; }
  .logo-center { order: 1; width: 30px; }
  .brand { order: 2; width: calc(100% - 36px); }
  .params { order: 3; width: 100%; }
}

/* ===== LOGO 绝对定位方案（08-16 修正：flex-wrap+order 渲染异常，改 column+absolute）===== */
@media (max-width: 768px) {
  .topbar-row.topbar-main { flex-direction: column; flex-wrap: nowrap; align-items: stretch; }
  .logo-center { position: absolute; left: 12px; top: 9px; display: flex; width: 30px; justify-content: flex-start; }
  .logo-center img { height: 20px; width: auto; }
  .brand { width: 100%; padding-left: 36px; justify-content: center; }
  .params { width: 100%; }
}

/* ===== LOGO transform 重置（08-16：桌面 translate(-50%,-50%) 残留导致左偏出屏）===== */
@media (max-width: 768px) {
  .logo-center { transform: none; }
}

/* ===== LOGO 缩小 + 金额完整（08-16 李总截图反馈：LOGO 太大、金额变 ...看不完全）=====
   LOGO：height 20 → 16px，容器 width 28px，title padding-left 34px 让位。
   金额：b 取消 max-width（永远完整），badge max-width 兜底极端大金额；压缩 select 让正常宽度不触发。 */
@media (max-width: 768px) {
  .logo-center { width: 28px; top: 11px; }
  .logo-center img { height: 16px; }
  .brand { padding-left: 34px; }
  .totals .badge.total { padding: 6px 8px; max-width: 52%; }
  .totals .badge.total b { max-width: none; overflow: visible; text-overflow: clip; }
  .cur-sel { max-width: 52px; padding: 1px 3px; font-size: 10px; }
}

/* ===== LOGO 再缩小 1/3（08-16 李总：16px → 10px）===== */
@media (max-width: 768px) {
  .logo-center { width: 20px; top: 13px; }
  .logo-center img { height: 10px; }
  .brand { padding-left: 26px; }
}

/* ===== LOGO 微调（08-16 李总：再大一点点 + 颜色加深）=====
   height 10 → 12px；opacity .8 → 1（原半透明白显浅，全不透明更白更深） */
@media (max-width: 768px) {
  .logo-center { width: 22px; top: 12px; }
  .logo-center img { height: 12px; opacity: 1; }
  .brand { padding-left: 28px; }
}

/* ===== LOGO 上移 + 货币下拉加宽（08-16 李总：LOGO 向上一点 / 货币字母被吃如 USD 剩一半 S）=====
   原 cur-sel max-width:52px 太窄：原生 select 有内置 padding+箭头，3 字符被裁。
   改 min-width 62px + font 11px；LOGO top 12 → 9px 上移对齐标题行。 */
@media (max-width: 768px) {
  .logo-center { top: 9px; }
  .cur-sel { max-width: none; min-width: 62px; padding: 2px 4px; font-size: 11px; }
}

/* ===== LOGO 垂直居中于标题行（08-16 李总：与文字高度一致，横向垂直居中）=====
   标题 h1 15px 行高 ~18px top8 → 文字中心 ≈17px；LOGO 12px 高 → top = 17-6 = 11px 居中。 */
@media (max-width: 768px) {
  .logo-center { top: 11px; }
}

/* ===== 移动端语言菜单左对齐（08-16 李总：手机端点语言选项超出屏幕）=====
   根因：.lang-menu 默认 right:0 对齐按钮右缘 + min-width:132px。
   桌面语言按钮在右侧 OK；移动端按钮移到第二排最左侧，菜单向左展开 132px 超出左屏。
   修复：移动端 left:0 对齐按钮左缘，向右展开，永不超屏。 */
@media (max-width: 768px) {
  .lang-switch { position: relative; }
  .lang-menu { left: 0; right: auto; min-width: 132px; }
}


/* ============================================================
 * 客户优化建议渠道 (2026-09-19)
 * 弹窗复用 .modal / .confirm-card / .cust-form 骨架，这里只补
 * textarea、select 与状态提示。蜜罐字段用视觉隐藏而非
 * display:none —— 后者会被常见爬虫规则直接跳过，失去拦截作用。
 * ============================================================ */
.fb-hp { position: absolute; left: -9999px; width: 1px; height: 1px; opacity: 0; pointer-events: none; }

.cust-form textarea {
  width: 100%; box-sizing: border-box; padding: 8px 10px;
  border: 1px solid #d8dee4; border-radius: 6px; font-size: 14px;
  color: #24303c; font-family: inherit; line-height: 1.5;
  resize: vertical; min-height: 84px;
}
.cust-form select {
  width: 100%; box-sizing: border-box; padding: 8px 10px;
  border: 1px solid #d8dee4; border-radius: 6px; font-size: 14px;
  color: #24303c; font-family: inherit; background: #fff; cursor: pointer;
}
.cust-form textarea:focus, .cust-form select:focus {
  outline: none; border-color: var(--navy, #1f4e79);
  box-shadow: 0 0 0 2px rgba(31,78,121,.12);
}

.fb-note {
  font-size: 11.5px; color: #2e7d32; background: #e8f5e9;
  border: 1px solid #c8e6c9; border-radius: 6px;
  padding: 7px 10px; margin: 10px 0 0; text-align: left;
}
.fb-status { font-size: 12.5px; margin: 8px 0 0; text-align: left; }
.fb-status.fb-ok   { color: #2e7d32; }
.fb-status.fb-warn { color: #b26a00; }
.fb-status.fb-err  { color: #c62828; }
.fb-status.hidden  { display: none; }

/* 侧边栏条目标题防折行 (2026-09-19)
 * 原 .ls-txt b 只有 font-size/color，是 white-space:normal；可用宽度不足时
 * 会折成两行把整张卡撑高（建议入口踩到：hint 较宽 37px + 文案较长）。
 * 改为单行 + 省略号，保证任何语种下卡片高度都与相邻卡片一致。 */
.link-sidebar .ls-txt b,
.link-sidebar .ls-txt b[data-i18n] {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
