/*
 * Bootstrap 3 → 5 兼容垫片
 *
 * 为什么需要它：
 *   旧站的 header / footer 是 Bootstrap 3 标记，而 OC 4.1 的商品/分类/结账/账户页是
 *   Bootstrap 5 标记。两套框架的 CSS 同时加载会互相覆盖（.container/.row/.col-* 同名不同实现），
 *   这正是上一轮首页排版崩掉的原因。
 *
 * 所以只在【首页】整套换成 BS3（首页正文 1292 行全是 BS3 标记，非换不可），
 * 其余页面保持 BS5，靠这个文件把 header/footer 用到的少数 BS3 独有类补回来。
 * 补的是 BS5 里【不存在】的类 —— 绝不重定义 .container/.row/.col-*，那会打架。
 *
 * 首页也会加载本文件：BS3 已经原生提供这些类，此处规则与 BS3 等价，重复无害。
 */

/* ── 内容宽度 ───────────────────────────────────────────────────
   旧站 .container 是 Bootstrap 3 的 1170px；BS5 到 xxl 会放到 1320px，
   页脚会比旧站宽一截。钉死 1170，两种模式下与旧站一致。 */
.container { max-width: 1170px; }

/* ── 浮动（BS5 叫 float-start/float-end）─────────────────────────── */
.pull-left  { float: left  !important; }
.pull-right { float: right !important; }

/* ── 响应式显隐（BS5 叫 d-none / d-*-block，断点也不同）───────────── */
@media (max-width: 767px)  { .hidden-xs { display: none !important; } }
@media (min-width: 768px) and (max-width: 991px)  { .hidden-sm { display: none !important; } }
@media (min-width: 992px) and (max-width: 1199px) { .hidden-md { display: none !important; } }
@media (min-width: 1200px) { .hidden-lg { display: none !important; } }

/* ── 栅格偏移（BS5 叫 offset-md-*）───────────────────────────────── */
.col-xs-offset-3 { margin-left: 25%; }
@media (min-width: 768px)  { .col-sm-offset-3 { margin-left: 25%; } }
@media (min-width: 992px)  { .col-md-offset-6 { margin-left: 50%; } }

/* ── 图片与块（BS5 叫 img-fluid / mx-auto d-block）──────────────── */
.img-responsive { display: block; max-width: 100%; height: auto; }
.center-block   { display: block; margin-left: auto; margin-right: auto; }

/* ── 行内列表（BS5 需要 .list-inline-item，旧标记没有）──────────── */
.list-inline { padding-left: 0; list-style: none; margin-left: -5px; }
.list-inline > li { display: inline-block; padding-left: 5px; padding-right: 5px; }

/* ── .well（BS5 已移除，移动端菜单用它）─────────────────────────── */
.well {
    min-height: 20px; padding: 19px; margin-bottom: 20px;
    background-color: #f5f5f5; border: 1px solid #e3e3e3; border-radius: 4px;
}

/* ── 下拉箭头（BS5 用伪元素，旧标记用 <span class="caret">）─────── */
.caret {
    display: inline-block; width: 0; height: 0; margin-left: 2px;
    vertical-align: middle; border-top: 4px dashed; border-right: 4px solid transparent;
    border-left: 4px solid transparent;
}
.dropdown-menu-right { right: 0; left: auto; }

/* ── Glyphicons（BS3 自带字体，BS5 完全移除）─────────────────────
   只补 header/footer 实际用到的 5 个图标，字体文件随扩展一起部署。 */
@font-face {
    font-family: 'Glyphicons Halflings';
    src: url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),
         url(../fonts/glyphicons-halflings-regular.woff)  format('woff'),
         url(../fonts/glyphicons-halflings-regular.ttf)   format('truetype');
    font-display: swap;
}
.glyphicon {
    position: relative; top: 1px; display: inline-block;
    font-family: 'Glyphicons Halflings'; font-style: normal; font-weight: 400;
    line-height: 1; -webkit-font-smoothing: antialiased;
}
.glyphicon-search:before        { content: "\e003"; }
.glyphicon-heart-empty:before   { content: "\e143"; }
.glyphicon-shopping-cart:before { content: "\e116"; }
.glyphicon-list:before          { content: "\e056"; }
.glyphicon-map-marker:before    { content: "\e062"; }
.glyphicon-arrow-right:before   { content: "\e092"; }   /* 知识库面包屑 */

/* ── 折叠（BS3 的 .collapse 默认 display:none，BS5 相同，无需补）──
   但 BS5 的 .collapse:not(.show) 才隐藏 —— 旧标记不带 .show，行为一致。 */

/* ── xs 栅格（BS5 的最小断点叫 .col-*，没有 -xs- 这一档）──────────
   ⚠️ 必须锁在 <768px 里。BS3 的 .col-xs-* 是无条件规则，靠【文件内的先后顺序】
   被后面的 .col-sm-*/.col-md-* 覆盖；本文件在 bootstrap.min.css 之后加载，
   不加媒体查询就会反过来压住 .col-md-3，首页 logo 列会从 25% 变成 50%、
   把右侧图标挤到下一行。只补 <768px 这一段，正是 BS5 缺的那一段。 */
@media (max-width: 767px) {
    .col-xs-3  { position: relative; float: left; width: 25%;  padding-right: 15px; padding-left: 15px; }
    .col-xs-6  { position: relative; float: left; width: 50%;  padding-right: 15px; padding-left: 15px; }
    .col-xs-12 { position: relative; float: left; width: 100%; padding-right: 15px; padding-left: 15px; }
}

/* ── 旧站正文里的 BS3 浮动栅格（信息页内容存在数据库里，改不动）────
   download_app 的三张图用 col-xs-12 col-lg-4，父元素 .app_info 不是 .row。
   BS3 里这些列是 float 所以并排；BS5 里是 flex 子项，父元素不是 flex 就竖排。
   给这几个已知的旧版块单独恢复浮动，不动 BS5 自己的栅格。 */
.app_info::after { content: ""; display: table; clear: both; }
.app_info > [class*="col-"] { float: left; }

/* ── 知识库（newsblog）补齐 ─────────────────────────────────────
   旧模板把这几处写成内联的绝对定位（left:630px / left:450px），
   窗口一窄就跑出容器。改成类，行为一致但不会溢出。 */
.kb-search { position: relative; text-align: right; margin: 20px 0; padding-right: 90px; }
.kb-search .select_input { max-width: 100%; padding-left: 8px; }
.kb-search .button_input { right: 0; top: 0; cursor: pointer; }
.body-kb ul { list-style: none; padding-left: 0; }
/* 原为三栏绝对定位（标题 / 简介 left:450px / 浏览数贴右）—— .cn 的内容区
   宽度不足 450px，三者会互相覆盖。改为：标题与浏览数同一行（数右对齐），
   简介另起一行。旧站本来不显示简介，这里保留但不让它压住任何东西。 */
.list_li { position: relative; padding-right: 110px; }
.list_li > a { display: inline-block; max-width: 100%; vertical-align: top; }
.list_li .list_viewed { position: absolute; right: 0; top: 0; white-space: nowrap; color: #999; font-size: 13px; }
.list_li .list_desc {
    position: static; display: block; margin: 4px 0 0; padding: 0;
    color: #888; font-size: 13px; line-height: 1.6;
    overflow: hidden; text-overflow: ellipsis; display: -webkit-box;
    -webkit-line-clamp: 2; -webkit-box-orient: vertical;
}
.kb-empty { font-size: 20px; text-align: center; padding: 40px 0; }
@media (max-width: 991px) {
    .list_li .list_desc, .list_li .list_viewed { position: static; display: block; }
    .kb-search { padding-right: 0; }
    .kb-search .button_input { position: static; }
}

/* ── 账户下拉（用户反馈"样式太难看"，这里是有意比旧站好看）────── */
#top-links .dropdown-menu {
    min-width: 170px; padding: 6px 0; margin-top: 6px;
    border: 1px solid #e3e8ea; border-radius: 6px;
    box-shadow: 0 6px 20px rgba(0, 0, 0, .12);
    background: #fff; font-size: 13px;
}
#top-links .dropdown-menu > li > a {
    display: block; padding: 8px 16px; color: #333; white-space: nowrap;
    text-decoration: none; border-left: 3px solid transparent;
}
#top-links .dropdown-menu > li > a:hover {
    background: #f2faff; color: #0099ff; border-left-color: #40bcf6;
}

/* ── 顶部购物车：图标 + 数量角标 + 下拉 ─────────────────────── */
.sw-cart { display: inline-block; position: relative; }
.sw-cart > a { color: inherit; text-decoration: none; }
.sw-cart-count {
    position: absolute; top: -6px; right: -10px; min-width: 17px; height: 17px;
    padding: 0 4px; border-radius: 9px; background: #e0162a; color: #fff;
    font-size: 11px; line-height: 17px; text-align: center; font-weight: 700;
}
.sw-cart-menu {
    min-width: 340px; max-width: 92vw; padding: 10px;
    border: 1px solid #e3e8ea; border-radius: 6px;
    box-shadow: 0 6px 20px rgba(0, 0, 0, .12); font-size: 13px; text-align: left;
}
.sw-cart-table, .sw-cart-sum { width: 100%; }
.sw-cart-table td { padding: 6px 4px; border-bottom: 1px solid #f0f0f0; vertical-align: top; }
.sw-cart-thumb img { width: 46px; height: auto; border: 1px solid #eee; }
.sw-cart-opt { color: #999; font-size: 11px; }
.sw-cart-qty, .sw-cart-total { white-space: nowrap; text-align: right; }
.sw-cart-rm { border: 0; background: none; color: #e0162a; font-size: 18px; line-height: 1; cursor: pointer; }
.sw-cart-sum td { padding: 3px 4px; text-align: right; }
.sw-cart-sum tr:last-child td { font-weight: 700; }
.sw-cart-act { margin: 8px 0 0; display: flex; justify-content: space-between; }
.sw-cart-empty { padding: 26px 10px; text-align: center; color: #999; }

/* ── 商品数量加减 ──────────────────────────────────────────── */
.sw-qty { display: inline-flex; align-items: stretch; }
.sw-qty .sw-qty-btn {
    width: 36px; border: 1px solid #ced4da; background: #f5f7f8; color: #333;
    font-size: 16px; line-height: 1; cursor: pointer; user-select: none;
}
.sw-qty .sw-qty-btn:hover { background: #40bcf6; border-color: #40bcf6; color: #fff; }
.sw-qty input[name="quantity"] {
    width: 56px; text-align: center; border-radius: 0;
    border-left: 0; border-right: 0; min-width: 0;
}
/* 商品页的数量在 BS5 的 .input-group 里，圆角要交给最外面那两个按钮 */
.input-group > .sw-qty { display: inline-flex; }
.input-group > .sw-qty .sw-qty-btn:first-child { border-radius: 0; }

/* 两个下拉都靠右对齐：BS5 交给 Popper 定位（会写内联 transform/left），
   而顶栏这两个在页面最右侧，Popper 算出来会溢出视口。直接钉死右对齐。 */
.sw-cart .dropdown-menu,
#top-links .dropdown-menu {
    right: 0 !important; left: auto !important;
    top: 100% !important; transform: none !important;
}

/* 旧主题给 .dropdown-menu / td a 定了宽度与 16px 字号，购物车下拉会被挤成一列一个词。
   这里按 .sw-cart 作用域覆盖掉，不影响其他下拉。 */
.sw-cart .sw-cart-menu { width: 370px; min-width: 370px; }
.sw-cart .sw-cart-table { table-layout: fixed; }
.sw-cart .sw-cart-table td { font-size: 13px; line-height: 1.45; }
.sw-cart .sw-cart-table td a { font-size: 13px; color: #232323; }
.sw-cart .sw-cart-table td a:hover { color: #0099ff; }
.sw-cart-thumb { width: 58px; }
.sw-cart-qty   { width: 38px; }
.sw-cart-total { width: 72px; }
.sw-cart-rm    { padding: 0 2px; }
.sw-cart .sw-cart-act a { font-size: 13px; }

/* 旧主题的 .well / #top-links li 规则会渗进来：下拉底色发灰、行高过大、
   底部两个按钮被拆成两行。按作用域收一下。 */
.sw-cart .sw-cart-menu { background: #fff; }
.sw-cart .sw-cart-menu > li { display: block; padding: 0; line-height: 1.45; }
.sw-cart .sw-cart-act {
    display: flex !important; align-items: center; justify-content: space-between;
    gap: 12px; padding-top: 8px; border-top: 1px solid #f0f0f0;
}
.sw-cart .sw-cart-act a { white-space: nowrap; }
#top-links .dropdown-menu > li { line-height: 1.3; }

/* 商品名列要宽一点，否则长名字一行一个词 */
.sw-cart .sw-cart-menu { width: 420px; min-width: 420px; }
.sw-cart .sw-cart-table { table-layout: auto; }
.sw-cart .sw-cart-table td:nth-child(2) { width: 52%; }

/* ═══ 顶部大菜单（用户反馈"太素"）══════════════════════════════════
   结构完全是旧站的，这里只加视觉：蓝色顶边、圆角、投影、条目悬停。
   Model / Accessories 的红黑配色由旧站的 func()/func1() 用内联样式控制，
   不去动它 —— 那是"当前选中"的指示。 */
.nav-goods-content {
    border: 0 !important;
    border-top: 3px solid #40bcf6 !important;
    border-radius: 0 0 10px 10px;
    box-shadow: 0 14px 34px rgba(0, 0, 0, .15);
    padding: 16px 0 20px !important;
}
.nav-goods-content .top-goods-nav > li {
    padding: 9px 16px 9px 10px; margin: 0 8px 4px 0;
    border-radius: 6px; cursor: pointer; transition: background .15s;
}
.nav-goods-content .top-goods-nav > li:hover { background: #f2faff; }
.nav-goods-content .top-goods-nav > li > div {
    width: 8px !important; height: 8px !important;
    border-radius: 50%; right: 6px !important;
}
.nav-goods-content .top-goods-list { border-left: 1px solid #eef2f4; padding-left: 14px; }
.nav-goods-content .top-goods-list li { margin-top: 0 !important; }
.nav-goods-content .top-goods-list li a {
    display: block; padding: 8px 12px; border-radius: 5px;
    color: #4a4a4a; transition: background .15s, color .15s, padding .15s;
}
.nav-goods-content .top-goods-list li a:hover {
    background: #f2faff; color: #0099ff; padding-left: 18px; text-decoration: none;
}

/* ═══ 左上角币种：与同一行其它文字同字号同颜色 ═══════════════════
   核心那版是 .btn.btn-link，Bootstrap 给了自己的字号/内边距/链接色。 */
#top #form-currency .btn,
#top #form-currency .btn:hover,
#top #form-currency .btn:focus {
    font-size: 14px; color: #888; padding: 0; border: 0;
    text-decoration: none; box-shadow: none; vertical-align: baseline;
}
#top #form-currency .btn:hover { color: #0099ff; }
#top #form-currency { margin: 0 14px 0 0; }

/* ═══ 知识库分类页：压缩搜索区与结果区，分类图上移 ═══════════════ */
.kb-nav { padding-top: 26px; }
.kb-nav .row { display: flex; flex-wrap: wrap; justify-content: center; }
.body-kb { padding: 18px 0 !important; }
.kb-search { margin: 0 0 14px; }
.kb-pager { padding: 10px 0 24px; }
.kb-pager .row { align-items: center; }

/* 大菜单再收一版：条目左对齐、字号收到 14、悬停加左侧蓝条 */
.nav-goods-content .top-goods-list,
.nav-goods-content .top-goods-list li,
.nav-goods-content .top-goods-list li a { text-align: left; }
.nav-goods-content .top-goods-list { width: 168px; }
.nav-goods-content .top-goods-list li { margin: 0 !important; padding: 0 !important; }
.nav-goods-content .top-goods-list li a {
    font-size: 14px; padding: 7px 10px 7px 12px;
    border-left: 3px solid transparent; border-radius: 0 5px 5px 0;
}
.nav-goods-content .top-goods-list li a:hover {
    padding-left: 12px; border-left-color: #40bcf6;
}
.nav-goods-content .top-goods-nav { width: 150px; }
.nav-goods-content .top-goods-nav > li { font-size: 15px; }

/* ═══ 内建论坛 ═════════════════════════════════════════════════ */
.sw-forum { padding: 26px 0 40px; }
.sw-forum-error {
    margin-bottom: 16px; padding: 10px 14px; border-radius: 6px;
    background: #fdecee; border: 1px solid #f5c2c7; color: #a4232f;
}
.sw-forum-bar { display: flex; gap: 12px; align-items: center; justify-content: space-between; flex-wrap: wrap; margin-bottom: 16px; }
.sw-forum-search { display: flex; }
.sw-forum-search input {
    width: 260px; max-width: 60vw; height: 38px; padding: 0 10px;
    border: 1px solid #ced4da; border-right: 0; border-radius: 5px 0 0 5px;
}
.sw-forum-search button {
    height: 38px; padding: 0 16px; border: 0; border-radius: 0 5px 5px 0;
    background: #0099ff; color: #fff; cursor: pointer;
}
.sw-btn {
    display: inline-block; height: 38px; line-height: 38px; padding: 0 20px;
    border: 0; border-radius: 5px; background: #40bcf6; color: #fff !important;
    text-decoration: none !important; cursor: pointer; font-size: 14px;
}
.sw-btn:hover { background: #1ba3e0; }
.sw-forum-form {
    margin-bottom: 22px; padding: 16px; background: #fff;
    border: 1px solid #e6ebee; border-radius: 8px;
}
.sw-forum-form input[type=text], .sw-forum-form textarea {
    width: 100%; margin-bottom: 10px; padding: 9px 12px;
    border: 1px solid #ced4da; border-radius: 5px; font: inherit;
}
.sw-forum-form .sw-hp { position: absolute; left: -9999px; width: 1px; height: 1px; }
.sw-forum-note { color: #999; font-size: 12px; margin-bottom: 10px; }
.sw-topics { width: 100%; background: #fff; border: 1px solid #e6ebee; border-radius: 8px; overflow: hidden; }
.sw-topics th {
    padding: 11px 14px; background: #f5f9fb; border-bottom: 1px solid #e6ebee;
    font-size: 13px; color: #667; font-weight: 600; text-align: left;
}
.sw-topics td { padding: 13px 14px; border-bottom: 1px solid #f1f4f6; vertical-align: top; }
.sw-topics tr:last-child td { border-bottom: 0; }
.sw-topics td a { color: #232323; font-size: 15px; }
.sw-topics td a:hover { color: #0099ff; }
.sw-excerpt { color: #9aa2a8; font-size: 12px; margin-top: 4px; }
.sw-num, .sw-date { text-align: center; white-space: nowrap; color: #667; font-size: 13px; }
.sw-pin { display: inline-block; margin-right: 6px; padding: 1px 7px; border-radius: 3px; background: #e0162a; color: #fff; font-size: 11px; }
.sw-forum-empty { padding: 44px 10px; text-align: center; color: #999; }
.sw-topic-title { font-size: 22px; margin: 0 0 16px; }
.sw-post { margin-bottom: 14px; padding: 16px 18px; background: #fff; border: 1px solid #e6ebee; border-radius: 8px; }
.sw-post-first { border-left: 3px solid #40bcf6; }
.sw-post-meta { color: #9aa2a8; font-size: 12px; margin-bottom: 8px; }
.sw-post-body { line-height: 1.75; word-break: break-word; }
.sw-del { margin-left: 10px; color: #e0162a; }
@media (max-width: 767px) {
    .sw-topics th:nth-child(n+2), .sw-topics td:nth-child(n+2) { display: none; }
}

/* 分类页左栏：OC4 默认是灰底列表，贴一下站点的蓝色调 */
#column-left .list-group-item, #content .list-group-item { border-color: #e6ebee; }
#column-left .list-group-item a, .list-group-item > a { color: #333; }
#column-left .list-group-item a:hover { color: #0099ff; }
#column-left .list-group-item.active,
#column-left .list-group-item.active:hover {
    background: #f2faff; border-color: #cfe9fb; color: #0099ff;
    border-left: 3px solid #40bcf6;
}

/* 配件子菜单合成一列共 12 条，条目间距收紧一点，菜单不至于太高 */
.nav-goods-content .top-goods-list { width: 210px; }
.nav-goods-content .top-goods-list li a { padding: 5px 10px 5px 12px; }

/* main.css 给菜单钉死了 height:330px（当年配件排两列刚好放得下）。
   合成一列 12 条后会溢出白底，改成按内容自适应，并给个最小高度保持原来的观感。 */
.nav-goods-content { height: auto !important; min-height: 330px; }
/* 三列都是 float:left，父元素 height:auto 会塌成 0（只剩 min-height），
   条目多了就漏在白底外面。补个 clearfix 让它真的按内容撑开。 */
.nav-goods-content::after { content: ""; display: block; clear: both; }
/* main.css 的 .top-goods-list 也钉死了 height:260px（两列各 6 条时够用）。
   合成一列 12 条后要按内容撑开，右侧那根 2px 分隔线也随之拉满。 */
.nav-goods-content .top-goods-list { height: auto !important; min-height: 260px; }

/* ═══ 主导航字体：大一号 + 圆润字形 ══════════════════════════════
   Quicksand（SIL OFL，可商用）自托管，不走 Google Fonts ——
   外链字体在大陆会被拖慢甚至打不开，而这套代码将来还要给 .cn 用。
   中文回落到微软雅黑：雅黑本身字形就偏圆，与 Quicksand 搭起来不违和。 */
@font-face {
    font-family: 'Quicksand';
    src: url('../fonts/quicksand.woff2') format('woff2');
    font-weight: 400 700;
    font-display: swap;
}
.nav-text,
.nav-text a,
.nav-goods-content .top-goods-nav a,
.xs-menu .hei16 a {
    font-family: Quicksand, ui-rounded, 'Microsoft YaHei', '微软雅黑', 'PingFang SC', sans-serif;
    font-weight: 600;
    letter-spacing: .2px;
}
.nav-text, .nav-text a { font-size: 18px; }   /* 旧站 .hei16 是 16px */

/* ═══ 大菜单的 Model / Accessories 改成 Tab ═════════════════════ */
.nav-goods-content .top-goods-nav > li.sw-tab {
    position: relative; margin: 0 10px 6px 0; padding: 0;
    border-radius: 6px; background: transparent; cursor: pointer;
    transition: background .15s, color .15s;
}
.nav-goods-content .top-goods-nav > li.sw-tab > a {
    display: block; padding: 10px 18px 10px 20px;
    color: #4a4a4a; font-size: 16px; text-decoration: none;
    border-left: 3px solid transparent; border-radius: 6px;
}
.nav-goods-content .top-goods-nav > li.sw-tab:hover > a { background: #f2faff; color: #0099ff; }
.nav-goods-content .top-goods-nav > li.sw-tab.is-active > a {
    background: #eaf6fe; color: #0080d6; border-left-color: #40bcf6;
}

/* ═══ 顶栏邮箱：与同排文字同色，字号小一号，点击直接写信 ═════════
   旧站是内联的 color:#F00 / 20px / bold，在一排灰色小字里太刺眼。 */
#top-links a.sw-mail, #top-links a.sw-mail:hover { font-size: 18px; font-weight: 700; }
#top-links a.sw-mail { color: #888; }
#top-links a.sw-mail:hover { color: #0099ff; }

/* ═══ 主导航悬停：只换颜色，字体本身不动 ═══════════════════════
   font.css 有一条 .hei16 a:hover { font-size:16px; font-family:微软雅黑 }，
   而导航的 <ul> 正好带 .hei16 —— 鼠标一划字体就从 Quicksand 18px 掉回雅黑 16px，
   宽度跟着跳（实测 144px → 113px）。这里把 hover 态钉回与常态完全一致。 */
.nav-text a,
.nav-text a:hover,
.nav-text a:focus,
.xs-menu .hei16 a,
.xs-menu .hei16 a:hover {
    font-family: Quicksand, ui-rounded, 'Microsoft YaHei', '微软雅黑', 'PingFang SC', sans-serif;
    font-weight: 600;
    text-decoration: none;
}
.nav-text a, .nav-text a:hover, .nav-text a:focus { font-size: 18px; }
.nav-text a:hover, .nav-text a:focus { color: #0099ff; }

/* 关于我们：简介原来被错标成 <h3>（所以又粗又是 18px）。改回 <p> 后字号会掉到
   正文的 14px，比同页其它段落还小 —— 这里补回 16px，与页面下方的大事记段落一致。 */
#case-tabs .captain p { font-size: 16px; line-height: 1.8; }

/* 知识库分类图：每行 3 个、两行、整体居中。
   原来是 col-md-2 一行六个；改成 col-md-4 后单格宽了一倍，
   给图片加个上限，免得图被拉大糊掉。 */
.kb-nav .kb-cell { display: flex; justify-content: center; margin-bottom: 26px; }
.kb-nav .kb-cell .kb-img { display: block; width: 100%; max-width: 330px; }
.kb-nav .kb-cell .blur img { width: 100%; height: auto; }
/* 外层是 container-fluid（整屏宽），三张图会被推到屏幕最左最右。
   收到和全站内容一样的 1170px 并居中，整组看着才是"居中放置"。 */
.kb-nav { max-width: 1170px; margin: 0 auto; }

/* ===== BS5-UTILITIES =====================================================
   OC 4.1 的核心模板（product/category、product/product、cms/* 等）是按
   Bootstrap 5 写的，而本主题加载的是 Bootstrap 3.3.5。下面补齐核心模板
   实际用到的那批 BS5 工具类 —— 不补，商品栅格会整体塌掉（元素在 HTML 里
   但不可见）。只补用到的，不整包引入 BS5，避免与 BS3 打架。
   ======================================================================== */

/* 显示/隐藏 */
.d-none{display:none!important}
.d-block{display:block!important}
.d-inline{display:inline!important}
.d-inline-block{display:inline-block!important}
.d-flex{display:flex!important}
@media (min-width:768px){.d-md-inline{display:inline!important}.d-md-block{display:block!important}.d-md-none{display:none!important}}
@media (min-width:1200px){.d-xl-inline{display:inline!important}.d-xl-block{display:block!important}.d-xl-none{display:none!important}}

/* 栅格：row-cols-N —— 商品列表靠它排版 */
.row-cols-1>*{flex:0 0 100%;max-width:100%}
.row-cols-2>*{flex:0 0 50%;max-width:50%}
.row-cols-3>*{flex:0 0 33.333333%;max-width:33.333333%}
.row-cols-4>*{flex:0 0 25%;max-width:25%}
@media (min-width:576px){.row-cols-sm-2>*{flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{flex:0 0 33.333333%;max-width:33.333333%}}
@media (min-width:768px){.row-cols-md-2>*{flex:0 0 50%;max-width:50%}.row-cols-md-3>*{flex:0 0 33.333333%;max-width:33.333333%}.row-cols-md-4>*{flex:0 0 25%;max-width:25%}}
@media (min-width:992px){.row-cols-lg-3>*{flex:0 0 33.333333%;max-width:33.333333%}.row-cols-lg-4>*{flex:0 0 25%;max-width:25%}}
@media (min-width:1200px){.row-cols-xl-4>*{flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{flex:0 0 20%;max-width:20%}}
/* BS3 的 .row 是 float 布局，row-cols-* 需要 flex 父容器才生效 */
[class*="row-cols-"]{display:flex;flex-wrap:wrap}
[class*="row-cols-"]>*{float:none}

/* 间距 */
.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}
.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}
.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}
.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}
.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}
.p-0{padding:0!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}
.g-0{margin:0}.g-0>*{padding:0}

/* 对齐与浮动（BS5 改名） */
.text-end{text-align:right!important}
.text-start{text-align:left!important}
.float-end{float:right!important}
.float-start{float:left!important}
.w-100{width:100%!important}
.h-100{height:100%!important}

/* 按钮（BS5 新增 btn-light / btn-outline-*） */
.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}
.btn-light:hover{background-color:#e2e6ea;border-color:#dae0e5}
.btn-outline-secondary{color:#6c757d;background:transparent;border-color:#6c757d}
.btn-outline-secondary:hover{color:#fff;background-color:#6c757d}

/* ===== BS5-PART2：裸 .col 与改名的工具类 =================================
   商品栅格的外层是 <div class="col mb-3"> —— BS5 的裸 .col，BS3 没有这个类，
   不补的话商品块宽度为 0，元素在 HTML 里但整排看不见。
   ======================================================================== */
.col{flex:1 0 0%;max-width:100%;position:relative;width:100%;padding-right:15px;padding-left:15px}
[class*="row-cols-"]>.col{flex:0 0 auto}

/* BS5 改了名的 */
.img-fluid{max-width:100%;height:auto}
.form-select{display:block;width:100%;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;border:1px solid #ccc;border-radius:4px}
.form-label{display:inline-block;margin-bottom:5px;font-weight:700}
.form-check{position:relative;display:block;padding-left:1.25rem}
.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}
.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
.input-group-text{padding:6px 12px;background-color:#eee;border:1px solid #ccc;border-radius:4px}

/* 卡片（BS3 的 .panel 对应 BS5 的 .card） */
.card{position:relative;display:flex;flex-direction:column;background:#fff;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}
.card-body{flex:1 1 auto;padding:1rem}
.card-header{padding:.5rem 1rem;background:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}
.card-footer{padding:.5rem 1rem;background:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}

/* flex 工具 */
.align-items-center{align-items:center!important}
.justify-content-center{justify-content:center!important}
.justify-content-between{justify-content:space-between!important}
.flex-wrap{flex-wrap:wrap!important}
.gy-3{row-gap:1rem}.gx-3{column-gap:1rem}

/* ===== BS3-RESPONSIVE ====================================================
   BS5 移除了 BS3 的 .hidden-*/.visible-* 响应式显隐类，而本主题的 header.twig
   正是靠它们在「桌面导航」与「手机汉堡菜单」之间切换。在加载 BS5 的页面
   （分类页/商品页等核心模板页）上，两套导航会【同时渲染】，购物车与搜索
   图标就压到菜单文字上。补齐这批类即可。
   断点沿用 BS3：xs <768, sm 768-991, md 992-1199, lg >=1200
   ======================================================================== */
@media (max-width:767px){
  .hidden-xs{display:none!important}
  .visible-xs{display:block!important}
  .visible-xs-inline{display:inline!important}
  .visible-xs-inline-block{display:inline-block!important}
}
@media (min-width:768px) and (max-width:991px){
  .hidden-sm{display:none!important}
  .visible-sm{display:block!important}
  .visible-sm-inline{display:inline!important}
}
@media (min-width:992px) and (max-width:1199px){
  .hidden-md{display:none!important}
  .visible-md{display:block!important}
  .visible-md-inline{display:inline!important}
}
@media (min-width:1200px){
  .hidden-lg{display:none!important}
  .visible-lg{display:block!important}
  .visible-lg-inline{display:inline!important}
}
/* 默认态：visible-* 在非对应断点下隐藏 */
.visible-xs,.visible-sm,.visible-md,.visible-lg,
.visible-xs-inline,.visible-sm-inline,.visible-md-inline,.visible-lg-inline{display:none!important}

/* ===== BS5-GRID-FIX ======================================================
   必须放在 .col 之后：前面的 .col{flex:1 0 0%;max-width:100%} 会把
   row-cols-* 的宽度限制覆盖掉，结果商品一行一个、撑满整屏。
   用 [class*="row-cols-"] > .col 提高优先级重新约束。
   ======================================================================== */
[class*="row-cols-"]{display:flex!important;flex-wrap:wrap!important;margin-left:-15px;margin-right:-15px}
[class*="row-cols-"]>.col{float:none!important;flex:0 0 auto!important;padding:0 15px;box-sizing:border-box}

.row-cols-1>.col{width:100%!important;max-width:100%!important}
.row-cols-2>.col{width:50%!important;max-width:50%!important}
.row-cols-3>.col{width:33.333333%!important;max-width:33.333333%!important}
.row-cols-4>.col{width:25%!important;max-width:25%!important}
@media (min-width:768px){
  .row-cols-sm-2>.col{width:50%!important;max-width:50%!important}
  .row-cols-sm-3>.col{width:33.333333%!important;max-width:33.333333%!important}
}
@media (min-width:992px){
  .row-cols-md-2>.col{width:50%!important;max-width:50%!important}
  .row-cols-md-3>.col{width:33.333333%!important;max-width:33.333333%!important}
  .row-cols-md-4>.col{width:25%!important;max-width:25%!important}
}
@media (min-width:1200px){
  .row-cols-lg-3>.col{width:33.333333%!important;max-width:33.333333%!important}
  .row-cols-lg-4>.col{width:25%!important;max-width:25%!important}
}
/* 商品图不要撑爆格子 */
.product-thumb .image img,.product-thumb img.img-fluid{max-width:100%;height:auto;display:block;margin:0 auto}
.product-thumb{margin-bottom:20px;border:1px solid #eee;background:#fff}
.product-thumb .image{overflow:hidden}

/* ===== BS5-COLN =========================================================
   BS5 的无断点列 col-1..col-12 与 offset-*，BS3 里不存在。
   核心模板的左右栏用的就是 <aside class="col-3">，不补的话左栏占满整行、
   压住面包屑，正文被挤到下面去。
   ======================================================================== */
.row{display:flex;flex-wrap:wrap}
.row>[class^="col"],.row>[class*=" col"]{box-sizing:border-box}
.col-1{flex:0 0 8.333333%;max-width:8.333333%;width:8.333333%;position:relative;padding-left:15px;padding-right:15px;float:none}
.col-2{flex:0 0 16.666667%;max-width:16.666667%;width:16.666667%;position:relative;padding-left:15px;padding-right:15px;float:none}
.col-3{flex:0 0 25.0%;max-width:25.0%;width:25.0%;position:relative;padding-left:15px;padding-right:15px;float:none}
.col-4{flex:0 0 33.333333%;max-width:33.333333%;width:33.333333%;position:relative;padding-left:15px;padding-right:15px;float:none}
.col-5{flex:0 0 41.666667%;max-width:41.666667%;width:41.666667%;position:relative;padding-left:15px;padding-right:15px;float:none}
.col-6{flex:0 0 50.0%;max-width:50.0%;width:50.0%;position:relative;padding-left:15px;padding-right:15px;float:none}
.col-7{flex:0 0 58.333333%;max-width:58.333333%;width:58.333333%;position:relative;padding-left:15px;padding-right:15px;float:none}
.col-8{flex:0 0 66.666667%;max-width:66.666667%;width:66.666667%;position:relative;padding-left:15px;padding-right:15px;float:none}
.col-9{flex:0 0 75.0%;max-width:75.0%;width:75.0%;position:relative;padding-left:15px;padding-right:15px;float:none}
.col-10{flex:0 0 83.333333%;max-width:83.333333%;width:83.333333%;position:relative;padding-left:15px;padding-right:15px;float:none}
.col-11{flex:0 0 91.666667%;max-width:91.666667%;width:91.666667%;position:relative;padding-left:15px;padding-right:15px;float:none}
.col-12{flex:0 0 100.0%;max-width:100.0%;width:100.0%;position:relative;padding-left:15px;padding-right:15px;float:none}
@media (min-width:576px){.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25.0%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50.0%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75.0%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}.offset-sm-12{margin-left:100.0%}}
@media (min-width:768px){.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25.0%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50.0%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75.0%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}.offset-md-12{margin-left:100.0%}}
@media (min-width:992px){.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25.0%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50.0%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75.0%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}.offset-lg-12{margin-left:100.0%}}
@media (min-width:1200px){.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25.0%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50.0%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75.0%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}.offset-xl-12{margin-left:100.0%}}
.offset-0{margin-left:0.0%}
.offset-1{margin-left:8.333333%}
.offset-2{margin-left:16.666667%}
.offset-3{margin-left:25.0%}
.offset-4{margin-left:33.333333%}
.offset-5{margin-left:41.666667%}
.offset-6{margin-left:50.0%}
.offset-7{margin-left:58.333333%}
.offset-8{margin-left:66.666667%}
.offset-9{margin-left:75.0%}
.offset-10{margin-left:83.333333%}
.offset-11{margin-left:91.666667%}
.offset-12{margin-left:100.0%}

/* ===== IZL-RMENU 右侧悬浮客服条 =========================================
   照搬旧 .cn 站 footer.tpl 里的内联样式，图片路径改到 extension/sweatec/。
   悬停展开改用纯 CSS（旧站用 jQuery fadeIn），去掉 service.js 依赖。
   ======================================================================== */
.izl-rmenu{position:fixed;right:10px;bottom:10px;z-index:999}
.izl-rmenu .btns{width:72px;margin-bottom:1px;cursor:pointer;position:relative;box-sizing:content-box;
  height:20px;padding-top:52px;text-align:center;color:#fff;background-color:#67C8DE;
  background-repeat:no-repeat;background-position:0 0;font-size:12px}
.izl-rmenu .btns:hover{background-color:#36A2B9}
.izl-rmenu a,.izl-rmenu a:hover,.izl-rmenu a:visited{color:#fff;text-decoration:none}
.izl-rmenu .btn-qq   {background-image:url(../images/r_qq.png)}
.izl-rmenu .btn-wx   {background-image:url(../images/r_wx.png)}
.izl-rmenu .btn-phone{background-image:url(../images/r_phone.png)}
.izl-rmenu .btn-yyzz {background-image:url(../images/r_yyzz.png)}
.izl-rmenu .btn-top  {display:block;background-image:url(../images/r_top.png);background-position:center center;
  height:40px;padding-top:0;background-color:#a0a0a0}
.izl-rmenu .btn-top:hover{background-color:#7c7c7c}
/* 悬停展开的面板 */
.izl-rmenu .qq,.izl-rmenu .phone{background-color:#5EB9CE;position:absolute;width:170px;left:-200px;top:0;
  line-height:72px;color:#fff;font-size:17px;text-align:center;display:none;padding:0 20px 0 10px;box-sizing:content-box}
.izl-rmenu .pic{position:absolute;left:-166px;top:0;display:none;width:160px;height:160px;border:3px solid #5EB9CE}
.izl-rmenu .yyzz{position:absolute;left:-326px;top:0;display:none;width:320px;background:#fff;border:3px solid #5EB9CE}
.izl-rmenu .yyzz img{width:100%;height:auto;display:block}
.izl-rmenu .btns:hover .qq,.izl-rmenu .btns:hover .phone,
.izl-rmenu .btns:hover .pic,.izl-rmenu .btns:hover .yyzz{display:block}
@media (max-width:767px){.izl-rmenu{display:none}}

/* ===== SW-INNER 非首页的顶部留白 ========================================
   #top-all 是 position:fixed（main.css:757）。首页第一屏是整幅横幅，页头
   叠在上面正是旧站的设计；但分类页/商品页没有横幅，内容会被页头盖住
   （面包屑整条看不见）。给非首页补一段等于页头高度的留白。
   ======================================================================== */
body.sw-inner #container,
body.sw-inner > .container:first-of-type{padding-top:112px}
@media (max-width:991px){body.sw-inner #container,body.sw-inner > .container:first-of-type{padding-top:96px}}

/* ===== BS5-TAB-SHOW ======================================================
   BS5 用 .fade.show 控制淡入，BS3 用的是 .fade.in。核心模板写的是
   class="tab-pane fade show active" —— 在 BS3 下 .show 不存在，.fade 让它
   opacity:0，结果「商品描述」内容在 DOM 里但完全透明，看着像没有默认标签页。
   ======================================================================== */
.fade.show{opacity:1!important}
.tab-content>.tab-pane.active{display:block!important}
.tab-content>.tab-pane:not(.active){display:none}
.collapse.show{display:block!important}
.dropdown-menu.show{display:block!important}


/* ===== IZL-RMENU-V2 淘宝/抖店/公众号 ====================================
   QQ 客服已撤；新增淘宝、抖音小店两个外链按钮（图标用 FA4，没有专用图）。
   URL 留空时模板不渲染该项，不会出现点了没反应的死按钮。
   ======================================================================== */
.izl-rmenu .btn-taobao,.izl-rmenu .btn-douyin{
  display:block;height:auto;padding:14px 4px 10px;background-image:none;
  background-color:#67C8DE;color:#fff;text-align:center;text-decoration:none;line-height:1.3}
.izl-rmenu .btn-taobao:hover,.izl-rmenu .btn-douyin:hover{background-color:#36A2B9}
.izl-rmenu .btn-taobao i,.izl-rmenu .btn-douyin i{display:block;font-size:24px;margin-bottom:6px}
.izl-rmenu .btn-taobao span,.izl-rmenu .btn-douyin span{display:block;font-size:12px}
/* 公众号二维码比客服头像大一些，看得清 */
.izl-rmenu .btn-wx .pic{width:180px;height:180px;left:-186px}

/* ===== BUY-ROW 购买区一行排布 ==========================================
   标记是 BS5 的 .input-group（flex），但 BS3 里 .input-group 是 display:table、
   没有 .input-group-text，加上 .btn-block 强制整行 —— 结果「数量」「− 1 +」
   「加入购物车」各占一行。这里让它们回到一行，总宽 100%，与上面的
   「止汗套餐」下拉（.form-select）等宽。
   ======================================================================== */
#product .input-group,
#content .input-group{display:flex!important;flex-wrap:nowrap;width:100%;align-items:stretch}
#product .input-group>.input-group-text,
#content .input-group>.input-group-text{
  flex:0 0 auto;display:flex;align-items:center;white-space:nowrap;
  padding:6px 12px;background:#eee;border:1px solid #ced4da;border-right:0;
  border-radius:4px 0 0 4px;font-size:14px;color:#555}
#product .input-group>.sw-qty,
#content .input-group>.sw-qty{flex:0 0 auto}
#product .input-group>.sw-qty .sw-qty-btn:first-child,
#content .input-group>.sw-qty .sw-qty-btn:first-child{border-radius:0}
/* 加入购物车占满剩余宽度 —— 整条就和上面的下拉一样宽 */
#product .input-group>#button-cart,
#content .input-group>#button-cart{
  flex:1 1 auto;width:auto!important;display:block;
  border-radius:0 4px 4px 0;margin-left:-1px;white-space:nowrap}
/* .btn-block 在 BS3 里是 display:block;width:100% —— 会把按钮顶下去 */
#button-cart.btn-block{display:block;width:auto}

/* ===== BUY-ROW-V2 数字区加宽、按钮缩短 =================================
   原来 #button-cart 用 flex:1 1 auto 吃掉全部剩余宽度，数字框只有 56px。
   改成：数字框弹性增长，按钮固定宽度（文字两侧留足内边距）。
   目标形态： 数量 │ −      1      + │ ─加入购物车─
   ======================================================================== */
#product .input-group>.sw-qty,
#content .input-group>.sw-qty{flex:1 1 auto;display:flex}
#product .input-group>.sw-qty input[name="quantity"],
#content .input-group>.sw-qty input[name="quantity"]{
  flex:1 1 auto;width:auto!important;min-width:60px;text-align:center}
#product .input-group>.sw-qty .sw-qty-btn,
#content .input-group>.sw-qty .sw-qty-btn{flex:0 0 40px}
#product .input-group>#button-cart,
#content .input-group>#button-cart{
  flex:0 0 auto;width:auto!important;min-width:150px;padding-left:22px;padding-right:22px}

/* ===== RMENU-V3 悬浮条等宽 =============================================
   .btns 原本只在 div 上设了 width:72px，<a> 版的淘宝/抖店按钮宽度由内容撑，
   结果几块宽窄不一。统一用 box-sizing + 固定宽度。
   ======================================================================== */
/* 三块统一 72x72：原来微信块是 content-box（52px 内边距 + 20px 文字 = 72px），
   我先前加 border-box 把总高压成 20px，文字被挤没了。改成显式等高。 */
.izl-rmenu .btns{width:72px!important;height:72px!important;box-sizing:border-box!important;
  margin-bottom:1px;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;
  padding:0 2px 8px!important;background-position:center 10px!important;background-size:30px auto!important}
.izl-rmenu .btn-taobao,.izl-rmenu .btn-douyin{height:72px!important;padding:0 2px 8px!important}
.izl-rmenu .btn-taobao i,.izl-rmenu .btn-douyin i{font-size:26px;margin:0 0 6px;line-height:1}
.izl-rmenu .btn-top{height:40px!important;justify-content:center;padding:0!important;
  background-position:center center!important;background-size:auto!important}
.izl-rmenu .btn-taobao span,.izl-rmenu .btn-douyin span{
  font-size:12px;white-space:nowrap;letter-spacing:-.5px}
.izl-rmenu .btn-top{width:72px!important;box-sizing:border-box}
/* URL 尚未配置时的样子：不跳转、半透明，一眼能看出是待办 */
.izl-rmenu .btn-todo{opacity:.55;cursor:not-allowed}

/* ===== BUY-ROW-V3 数字框等高 + 加减号橘色 ==============================
   数字框原来靠 .form-control 的默认高度，与 .sw-qty-btn 不一致，看着错位。
   三者统一 42px；加减号改橘色，与「加入购物车」的蓝色区分开。
   ======================================================================== */
#product .input-group,#content .input-group{height:42px}
#product .input-group>.input-group-text,#content .input-group>.input-group-text,
#product .input-group>#button-cart,#content .input-group>#button-cart{height:42px;line-height:1}
#product .input-group>.sw-qty,#content .input-group>.sw-qty{height:42px}
#product .input-group>.sw-qty .sw-qty-btn,#content .input-group>.sw-qty .sw-qty-btn{
  height:42px;line-height:40px;padding:0;
  background:#fff4e8;border-color:#f0a44e;color:#e8740c;font-size:18px;font-weight:700}
#product .input-group>.sw-qty .sw-qty-btn:hover,#content .input-group>.sw-qty .sw-qty-btn:hover{
  background:#f28c21;border-color:#f28c21;color:#fff}
#product .input-group>.sw-qty .sw-qty-btn:active,#content .input-group>.sw-qty .sw-qty-btn:active{
  background:#d9720d;border-color:#d9720d;color:#fff}
#product .input-group>.sw-qty input[name="quantity"],
#content .input-group>.sw-qty input[name="quantity"]{
  height:42px;line-height:42px;padding:0 6px;border-color:#f0a44e;border-left:0;border-right:0}

/* ===== PRODUCT-GUTTER ===================================================
   产品详情页主图与右侧信息栏之间没有任何间距。实测（playwright 取计算样式）：
   两个 .col-sm 的 padding-left/right 全是 0（被前面的栅格修正清零了），
   图片右边 645px、h1 左边也是 645px —— 缝隙literally为 0。
   只给这一行的第二列补间距，【不动全局 .col】—— 改全局会让全站栅格一起移位。
   加 media 查询：.col-sm 在 <576px 时上下堆叠，那时左缩进只会让内容错位。
   ======================================================================== */
@media (min-width:576px){
  #content > .row.mb-3 > .col-sm:first-child + .col-sm{ padding-left:36px }
}

/* ===== DESC-CENTER ======================================================
   商品描述整体居中。描述里大多是整张长图（inline 元素），text-align 就能居中；
   夹杂的说明文字也一并居中。
   只作用于 #tab-description，不碰商品评论 tab。
   ======================================================================== */
#tab-description{ text-align:center }
#tab-description img{ max-width:100%;height:auto }
#tab-description table{ margin-left:auto;margin-right:auto }
