/* ============ 产品展厅 · 设计系统 v2 ============ */
:root{
  --pri:#2563eb; --pri-2:#1d4ed8; --pri-soft:#eaf1ff;
  --bg:#f4f6fa; --card:#fff; --line:#e6eaf0; --line-2:#f0f2f7;
  --txt:#182230; --mut:#6c7889; --mut-2:#9aa4b2;
  --ok:#16a34a; --ok-soft:#e7f7ee;
  --warn:#d97706; --warn-soft:#fff5e5;
  --err:#dc2626; --err-soft:#fdeceb;
  --info:#0891b2; --info-soft:#e5f6fa;
  --r:14px; --r-sm:10px; --r-lg:18px;
  --sh:0 1px 2px rgba(16,24,40,.04), 0 4px 14px rgba(16,24,40,.05);
  --sh-lg:0 10px 34px rgba(16,24,40,.12);
  --side-w:226px;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0;overflow-x:hidden}
body{background:var(--bg);color:var(--txt);
  font:14px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
  -webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%}
a{color:inherit;text-decoration:none}
img{display:block;max-width:100%}
h1,h2,h3,h4,p,ul{margin:0}
ul{padding:0;list-style:none}
input,select,textarea,button{font:inherit;color:inherit}
button{cursor:pointer}
::selection{background:#cfe0ff}

/* ---------- 图标 ---------- */
.ico{width:18px;height:18px;flex:none;stroke:currentColor;fill:none;stroke-width:2;
  stroke-linecap:round;stroke-linejoin:round}
.ico.sm{width:15px;height:15px}
.ico.lg{width:22px;height:22px}

/* ---------- 布局：侧栏 + 主区 ---------- */
.shell{display:flex;min-height:100vh}
.side{width:var(--side-w);flex:none;background:linear-gradient(180deg,#1e293b 0%,#131c2e 100%);
  color:#cbd5e1;display:flex;flex-direction:column;position:fixed;inset:0 auto 0 0;z-index:20}
.side .brand{display:flex;align-items:center;gap:10px;padding:18px 18px 14px;color:#fff;font-weight:700;font-size:15px;letter-spacing:.3px}
.side .brand .logo{width:32px;height:32px;border-radius:9px;background:linear-gradient(135deg,#3b82f6,#6366f1);
  display:flex;align-items:center;justify-content:center;flex:none}
.side .brand small{display:block;font-weight:400;font-size:11px;color:#7f8ea8;letter-spacing:0}
.side nav{flex:1;overflow:auto;padding:6px 10px 10px}
.nav-title{font-size:11px;color:#64748b;padding:12px 10px 6px;letter-spacing:1px}
.nav-item{display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:10px;
  color:#c3cddb;font-size:14px;margin-bottom:2px;transition:.15s}
.nav-item:hover{background:rgba(255,255,255,.07);color:#fff}
.nav-item.active{background:linear-gradient(90deg,#2563eb,#3b82f6);color:#fff;
  box-shadow:0 2px 10px rgba(37,99,235,.4)}
.nav-item .ico{opacity:.9}
/* 侧栏待办红点：询价待报价 / 订单待出合同+待核凭证+待发货 */
.nav-item .n{margin-left:auto;min-width:18px;height:18px;padding:0 5px;border-radius:9px;
  background:var(--err);color:#fff;font-size:11px;font-weight:700;line-height:18px;
  display:inline-block;text-align:center;font-variant-numeric:tabular-nums}
.side-foot{padding:12px;border-top:1px solid rgba(255,255,255,.08);font-size:12px;color:#8494a9}
.side-foot .who{display:flex;align-items:center;gap:9px;margin-bottom:9px}
.side-foot .avatar{width:30px;height:30px;border-radius:9px;background:#334155;color:#fff;
  display:flex;align-items:center;justify-content:center;font-weight:600;font-size:13px;flex:none}
.side-foot a{display:flex;align-items:center;gap:8px;padding:6px 9px;border-radius:8px;color:#c3cddb}
.side-foot a:hover{background:rgba(255,255,255,.07);color:#fff}

.main{flex:1;margin-left:var(--side-w);min-width:0;display:flex;flex-direction:column}
.topbar{position:sticky;top:0;z-index:15;background:rgba(255,255,255,.86);backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);padding:12px 22px;display:flex;align-items:center;gap:12px;min-height:56px}
.topbar h1{font-size:13px;font-weight:500;color:var(--mut);display:flex;align-items:center;gap:8px;letter-spacing:.2px}
.topbar .crumb{font-size:12px;color:var(--mut)}
.topbar .spacer{flex:1}
.page{padding:20px 22px 40px;max-width:1320px;width:100%;margin-inline:auto}

/* ---------- 卡片 / 区块 ---------- */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);
  box-shadow:var(--sh);padding:16px 18px;margin-bottom:16px}
.card.tight{padding:0;overflow:hidden}
.card-h{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.card-h h2{font-size:15px;font-weight:650}
.card-h .spacer{flex:1}
.card-h .mut{font-size:12px}
/* 品类卡片：改名/删除行 */
.cat-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:-2px 0 6px;
  padding-bottom:12px;border-bottom:1px dashed var(--line-2)}
.cat-meta form{margin:0}
.sec-title{font-size:12px;color:var(--mut);letter-spacing:1px;margin:22px 0 10px;font-weight:600}
.sec-title:first-child{margin-top:0}

/* ---------- 页面头 ---------- */
.page-head{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:16px}
.page-head .ph-main h1{font-size:20px;font-weight:700;letter-spacing:-.2px}
.page-head .ph-main .sub{font-size:13px;color:var(--mut);margin-top:3px}
.page-head .spacer{flex:1}
.page-head .actions{display:flex;gap:8px;flex-wrap:wrap}

/* ---------- 按钮 ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;
  background:var(--pri);color:#fff;border:1px solid transparent;border-radius:10px;
  padding:9px 15px;font-size:14px;font-weight:500;line-height:1.2;transition:.15s;white-space:nowrap}
.btn:hover{background:var(--pri-2);transform:translateY(-1px);box-shadow:0 4px 12px rgba(37,99,235,.28)}
.btn:active{transform:none}
.btn.ghost{background:#fff;color:var(--txt);border-color:var(--line)}
.btn.ghost:hover{background:#f7f9fc;border-color:#cfd8e5;box-shadow:none;color:var(--pri)}
.btn.soft{background:var(--pri-soft);color:var(--pri-2);border-color:transparent}
.btn.soft:hover{background:#dbe7ff;box-shadow:none}
.btn.ok{background:var(--ok)} .btn.ok:hover{background:#12803c;box-shadow:0 4px 12px rgba(22,163,74,.25)}
.btn.warn{background:var(--warn)} .btn.warn:hover{background:#b46005}
.btn.err{background:var(--err)} .btn.err:hover{background:#b91c1c;box-shadow:0 4px 12px rgba(220,38,38,.25)}
.btn.sm{padding:6px 11px;font-size:13px;border-radius:8px}
.btn.lg{padding:12px 22px;font-size:15px;border-radius:12px}
.btn.block{width:100%}
.btn[disabled]{opacity:.5;pointer-events:none}
.btn-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}

/* ---------- 徽章 / 状态 ---------- */
.badge{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border-radius:999px;
  font-size:12px;font-weight:500;background:#eef2f7;color:#475569;white-space:nowrap;line-height:1.5}
.badge.ok{background:var(--ok-soft);color:#15803d}
.badge.warn{background:var(--warn-soft);color:#b45309}
.badge.err{background:var(--err-soft);color:#b91c1c}
.badge.info{background:var(--info-soft);color:#0e7490}
.badge.pri{background:var(--pri-soft);color:var(--pri-2)}
.badge.gray{background:#f1f4f8;color:#64748b}
.dot{width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}

/* ---------- 筛选 tabs ---------- */
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}
.tab{padding:7px 14px;border-radius:999px;background:#fff;border:1px solid var(--line);
  font-size:13px;color:var(--mut);transition:.15s}
.tab:hover{border-color:#c7d3e3;color:var(--txt)}
.tab.active{background:var(--txt);border-color:var(--txt);color:#fff;font-weight:500}
/* 列表页签待办数：红底白字圆圈 */
.tab .n{display:inline-block;margin-left:5px;min-width:18px;height:18px;padding:0 5px;
  border-radius:9px;background:var(--err);color:#fff;font-size:11px;font-weight:700;
  line-height:18px;text-align:center;font-variant-numeric:tabular-nums;vertical-align:1px}
.tab.active .n{background:#fff;color:var(--txt)}

/* ---------- 搜索 / 筛选栏 ---------- */
.filters{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.filters .grow{flex:1;min-width:180px}
.searchbox{position:relative;flex:1;min-width:200px}
.searchbox .ico{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--mut-2)}
.searchbox input{padding-left:36px}

/* ---------- 表单 ---------- */
label{display:block;font-size:12.5px;color:var(--mut);margin:0 0 5px;font-weight:500}
input[type=text],input[type=email],input[type=tel],input[type=number],input[type=password],input[type=date],input:not([type]),select,textarea{
  width:100%;padding:9px 12px;border:1px solid #dde3ec;border-radius:10px;background:#fff;
  font-size:14px;transition:.15s;outline:none}
input:focus,select:focus,textarea:focus{border-color:var(--pri);box-shadow:0 0 0 3px rgba(37,99,235,.12)}
select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236c7889' stroke-width='3' stroke-linecap='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 11px center;padding-right:30px}
textarea{min-height:80px;resize:vertical;line-height:1.6}
input[type=file]{padding:7px 10px;font-size:13px;background:#fafbfd;border:1px dashed #cfd8e5;border-radius:10px;width:100%}
input[type=checkbox]{width:16px;height:16px;accent-color:var(--pri)}
.check{display:inline-flex;align-items:center;gap:7px;font-size:14px;color:var(--txt);margin:0}
.field{margin-bottom:14px}
.field:last-child{margin-bottom:0}
.fgrid{display:grid;gap:14px;grid-template-columns:repeat(2,minmax(0,1fr))}
.fgrid.c3{grid-template-columns:repeat(3,minmax(0,1fr))}
.fgrid.c4{grid-template-columns:repeat(4,minmax(0,1fr))}
.savebar{position:sticky;bottom:0;background:rgba(255,255,255,.92);backdrop-filter:blur(8px);
  border-top:1px solid var(--line);padding:12px 22px;display:flex;gap:10px;align-items:center;
  margin:0 -22px -40px;padding-left:22px;padding-right:22px;z-index:12}
.savebar .spacer{flex:1}
.hint{font-size:12px;color:var(--mut);line-height:1.6}

/* ---------- 商品网格 ---------- */
.grid{display:grid;gap:14px}
.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
.g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
.g5{grid-template-columns:repeat(5,minmax(0,1fr))}
.g6{grid-template-columns:repeat(6,minmax(0,1fr))}
.prod{background:#fff;border:1px solid var(--line);border-radius:var(--r);overflow:hidden;
  display:flex;flex-direction:column;transition:.18s;box-shadow:var(--sh)}
.prod:hover{transform:translateY(-3px);box-shadow:var(--sh-lg);border-color:#d3dcea}
.prod .ph{position:relative;aspect-ratio:1/1;background:linear-gradient(135deg,#f4f6fa,#eaeff6);
  display:flex;align-items:center;justify-content:center;overflow:hidden}
.prod .ph img{width:100%;height:100%;object-fit:contain;padding:6px}
.prod .ph .noimg{color:#c3ccdb}
.prod .ph .flag{position:absolute;left:8px;top:8px;background:rgba(220,38,38,.92);color:#fff;
  font-size:11px;padding:2px 8px;border-radius:6px;font-weight:500}
.prod .pb{padding:11px 12px 13px;display:flex;flex-direction:column;gap:3px;flex:1}
.prod .pb .nm{font-weight:600;font-size:14px;line-height:1.4;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:39px}
.prod .pb .md{font-size:12px;color:var(--mut)}
.prod .pb .pr{margin-top:6px;color:var(--err);font-weight:700;font-size:17px;letter-spacing:-.2px}
.prod .pb .pr small{font-size:12px;font-weight:500;opacity:.75}
.prod .pb .tags{display:flex;gap:5px;flex-wrap:wrap;margin-top:7px}

/* ---------- 列表（订单/询价） ---------- */
.list{display:flex;flex-direction:column;gap:10px}
.li{display:flex;align-items:center;gap:14px;background:#fff;border:1px solid var(--line);
  border-radius:var(--r);padding:13px 16px;box-shadow:var(--sh);transition:.15s}
.li:hover{border-color:#cdd8e8;box-shadow:var(--sh-lg)}
.li .li-ic{width:40px;height:40px;border-radius:11px;background:var(--pri-soft);color:var(--pri-2);
  display:flex;align-items:center;justify-content:center;flex:none}
.li .li-ic.ok{background:var(--ok-soft);color:var(--ok)}
.li .li-ic.warn{background:var(--warn-soft);color:var(--warn)}
.li .li-m{flex:1;min-width:0}
.li .li-t{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-weight:600;font-size:14.5px}
.li .li-s{font-size:12.5px;color:var(--mut);margin-top:3px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.li .li-r{text-align:right;flex:none}
.li .li-r .amt{font-weight:700;font-size:16px;color:var(--err);margin-top:3px}
.li .li-r .sub{font-size:12px;color:var(--mut)}
.li .li-go{color:var(--mut-2);flex:none}
/* 询价列表：商品 SKU 缩略图 + 名称 + 数量/单价 */
.li .li-thumb{width:60px;height:60px;border-radius:10px;overflow:hidden;flex:none;
  background:#f2f5f9;border:1px solid var(--line);display:flex;align-items:center;justify-content:center}
.li .li-thumb img{width:100%;height:100%;object-fit:contain}
.li .li-thumb .noimg{color:#c3ccdb}
.li .li-p{font-size:13.5px;font-weight:600;margin-top:2px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.li .li-p .more{font-weight:400;color:var(--mut);font-size:12px;margin-left:6px}
.li .li-model{display:inline-block;margin-left:8px;padding:1px 7px;border-radius:6px;
  background:#f1f4f9;border:1px solid var(--line);color:var(--mut);font-size:11.5px;font-weight:500;
  vertical-align:1px}
/* 报价记录 */
.plog{display:flex;flex-direction:column;gap:8px}
.plog-i{display:flex;align-items:center;gap:10px;font-size:12.5px;padding:6px 0;
  border-bottom:1px dashed var(--line-2)}
.plog-i:last-child{border-bottom:0}
.plog-i .pl-m{flex:1;min-width:0;color:var(--mut);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.plog-i .pl-v{display:flex;align-items:center;gap:5px;flex:none}
.plog-i .pl-v .old{color:var(--mut-2);text-decoration:line-through}
.plog-i .pl-v .new{color:var(--err);font-weight:700}
.plog-i .pl-t{flex:none;color:var(--mut-2);font-size:11.5px}
/* 修改记录（询价前后两轮 diff） */
.rlog{display:flex;flex-direction:column;gap:10px}
.rlog-i{border:1px solid var(--line);border-radius:10px;padding:9px 11px;background:#fbfcfe}
.rlog-i .rl-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12px}
.rlog-i .rl-n{font-weight:700;color:var(--txt);font-size:12px}
.rlog-i .rl-a{padding:1px 7px;border-radius:6px;background:#eef3fb;border:1px solid var(--line);
  color:var(--pri);font-size:11.5px}
.rlog-i .rl-w{color:var(--mut)}
.rlog-i .rl-t{margin-left:auto;color:var(--mut-2);font-size:11.5px}
.rlog-i .rl-d{margin-top:7px;display:flex;flex-direction:column;gap:5px}
.rl-row{display:flex;align-items:center;gap:6px;font-size:12.5px;flex-wrap:wrap}
.rl-row .rl-k{flex:none;min-width:104px;color:var(--mut-2)}
.rl-row .rl-old{color:var(--mut-2);text-decoration:line-through;word-break:break-all}
.rl-row .rl-new{color:var(--err);font-weight:600;word-break:break-all}
.rl-row .ico{color:var(--mut-2);flex:none}
/* 编辑询价：单价只读展示（商家报价） */
.qrow .qprice{flex:none;min-width:86px;text-align:right;font-size:13px;color:var(--err);
  font-weight:600;font-variant-numeric:tabular-nums}
.qrow .qprice.pending{color:var(--mut-2);font-weight:400;font-size:12px}
.li .li-q{font-size:12.5px;color:var(--mut);margin-top:2px}
.li .li-q b{color:var(--err);font-weight:700}
/* 列表：单号 + 关联单号（询价↔订单） */
.li .li-no{font-variant-numeric:tabular-nums;letter-spacing:.2px}
.li .li-link{display:inline-flex;align-items:center;gap:3px;padding:1px 8px;border-radius:20px;
  background:var(--pri-soft);border:1px solid #d6e2f6;color:var(--pri-2);
  font-size:11.5px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
.li .li-link .ico{color:currentColor;opacity:.85}
/* 行内次级链接（询价↔订单单号）可点：整行本身是 <a>，用 [data-href] 拦截跳转 */
.li .li-link{cursor:pointer;transition:.15s}
.li .li-link:hover{background:#dbe7ff;border-color:#b9cdf0}
/* 列表左栏：日期 + 倒计时（同一行）、付款类型/支付类型、客户 */
.li .li-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:6px}
.li .li-time{display:flex;align-items:center;gap:4px;font-size:13px;color:var(--mut);
  font-variant-numeric:tabular-nums}
.li .li-time .ico{color:var(--mut-2)}
.li .li-kv{font-size:12px;color:var(--mut);white-space:nowrap}
.li .li-kv b{color:var(--txt);font-weight:600;margin-left:2px}
/* 列表右栏：数量单价 / 金额 / 未付尾款 / 状态 */
.li .li-r{min-width:200px}
.li .li-r .li-qty{font-size:14px;color:var(--txt);font-weight:600;
  font-variant-numeric:tabular-nums}
.li .li-r .li-st{margin-top:6px}
.li .li-cd{display:inline-block;padding:2px 9px;border-radius:20px;
  font-size:12.5px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:.3px;
  white-space:nowrap}
.li .li-cd.ok{background:var(--ok-soft);color:var(--ok)}
.li .li-cd.warn{background:var(--warn-soft);color:var(--warn)}
.li .li-cd.err{background:var(--err-soft);color:var(--err)}
/* 列表：未付尾款（定金 + 尾款分次付款时一直显示，直到付清） */
.li .li-due{display:inline-block;margin-top:5px;padding:1px 9px;border-radius:20px;
  background:var(--err-soft);color:var(--err);font-size:12.5px;font-weight:700;
  font-variant-numeric:tabular-nums;white-space:nowrap}

/* ---------- 表格 ---------- */
.tbl-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
table{width:100%;border-collapse:collapse;font-size:13.5px}
th{text-align:left;font-weight:600;font-size:12.5px;color:var(--mut);padding:10px 10px;
  border-bottom:1px solid var(--line);white-space:nowrap;background:#fbfcfe}
th:first-child,td:first-child{padding-left:16px}
th:last-child,td:last-child{padding-right:16px}
td{padding:11px 10px;border-bottom:1px solid var(--line-2);vertical-align:middle}
tbody tr:last-child td{border-bottom:0}
tbody tr:hover td{background:#fafbfd}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}
.tbl-foot{padding:11px 16px;font-size:12.5px;color:var(--mut);border-top:1px solid var(--line);background:#fbfcfe}

/* ---------- 详情：图库 ---------- */
.gallery{display:flex;flex-direction:column;gap:10px}
.gal-main{position:relative;border-radius:var(--r);overflow:hidden;background:#f2f5f9;
  aspect-ratio:1/1;display:flex;align-items:center;justify-content:center;cursor:zoom-in}
.gal-main img{width:100%;height:100%;object-fit:contain}
.gal-main .noimg{color:#c3ccdb;display:flex;flex-direction:column;align-items:center;gap:6px}
.gal-thumbs{display:flex;gap:8px;overflow-x:auto;padding-bottom:2px}
.gal-thumbs button{border:2px solid transparent;background:#f2f5f9;border-radius:10px;padding:0;
  width:66px;height:66px;flex:none;overflow:hidden;transition:.15s}
.gal-thumbs button.active{border-color:var(--pri)}
.gal-thumbs img{width:100%;height:100%;object-fit:cover}

/* ---------- 参数表 ---------- */
.spec{border:1px solid var(--line);border-radius:var(--r);overflow:hidden;background:#fff}
.spec-g{border-bottom:1px solid var(--line-2)}
.spec-g:last-child{border-bottom:0}
.spec-g>summary{padding:12px 16px;font-weight:600;font-size:14px;cursor:pointer;
  display:flex;align-items:center;gap:8px;list-style:none;background:#fbfcfe}
.spec-g>summary::-webkit-details-marker{display:none}
.spec-g>summary .ico{margin-left:auto;color:var(--mut-2);transition:.2s}
.spec-g[open]>summary .ico{transform:rotate(180deg)}
.spec-g .kv{padding:6px 16px 14px;display:grid;grid-template-columns:120px 1fr;gap:8px 12px;font-size:13.5px}
.spec-g .kv>div:nth-child(odd){color:var(--mut)}
.spec-g .kv>div:nth-child(even){word-break:break-all}
.kv.simple{display:grid;grid-template-columns:110px 1fr;gap:8px 12px;font-size:14px}
.kv.simple>div:nth-child(odd){color:var(--mut)}
/* 订单发货卡顶部的收货信息（收货人 / 电话 / 地址） */
.rc-box{background:#f8fafc;border:1px dashed var(--line);border-radius:10px;padding:10px 12px;margin-bottom:12px}
/* 发票类型右侧：商家含运费开关 */
.inv-line{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.fr-opt{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--mut);font-weight:500}
.fr-opt select{width:62px;padding:3px 6px;font-size:13px;border-radius:7px}
.fr-opt.ro b{color:var(--txt);font-weight:600}

/* ---------- 媒体分组 ---------- */
.mgroup{border:1px solid var(--line);border-radius:var(--r);margin-bottom:12px;overflow:hidden}
.mgroup-h{display:flex;align-items:center;gap:10px;padding:11px 14px;background:#fbfcfe;border-bottom:1px solid var(--line-2)}
.mgroup-h .nm{font-weight:600;font-size:14px}
.mgroup-h .spacer{flex:1}
.mgroup-b{padding:12px 14px}
.mgrid{display:flex;gap:10px;flex-wrap:wrap}
/* 图片：150px 正方形，contain 完整展示；不足的方向用同图虚化铺满 */
.mgrid .cell{position:relative;width:150px;height:150px;max-width:100%;overflow:hidden;
  border-radius:10px;border:1px solid var(--line);background:#f2f5f9}
.mgrid .cell::before{content:'';position:absolute;inset:-14px;z-index:0;pointer-events:none;
  background-image:var(--bg,none);background-size:cover;background-position:center;
  filter:blur(12px) saturate(.92);opacity:.62}
.mgrid .cell img{position:relative;z-index:1;width:100%;height:100%;object-fit:contain}
/* 视频：撑满整个区域宽度 */
.mgrid.videos{flex-direction:column;gap:12px}
.mgrid.videos .cell{width:100%;height:auto;overflow:visible;border:0;background:none}
.mgrid.videos .cell::before{content:none}
/* 编辑页的视频格子固定 250px 宽（详情页仍撑满整行） */
.mgroup-b .mgrid.videos .cell{width:250px}
.mgroup-b .mgrid.videos .cell video{max-height:none}
.mgrid .cell video{width:100%;height:auto;max-height:70vh;display:block;
  background:#000;border-radius:10px}
.mgrid .cell .del{position:absolute;right:4px;top:4px;z-index:2;width:22px;height:22px;border-radius:50%;
  background:#fff;border:1px solid var(--line);box-shadow:var(--sh);display:flex;align-items:center;
  justify-content:center;color:var(--err);padding:0}
.mgrid .cell .del:hover{background:var(--err);color:#fff;border-color:var(--err)}
.uploader{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:10px;
  border-top:1px dashed var(--line);padding-top:12px}
.uploader .snap{display:inline-flex;align-items:center;gap:6px}
/* 付款凭证：拖拽 / 粘贴上传区 */
.dropzone{position:relative;border:1.5px dashed #cfd8e5;border-radius:12px;background:#fafbfd;
  padding:18px 16px;text-align:center;color:var(--mut);cursor:pointer;transition:.15s}
.dropzone:hover{border-color:#b9c6d8}
.dropzone.on{border-color:var(--pri);background:var(--pri-soft)}
.dropzone .dz-hint .ico{color:#c3ccdb}
.dropzone .dz-t{font-size:13.5px;color:#374151;margin-top:6px}
.dropzone .dz-t b{color:var(--pri-2)}
.dropzone .dz-s{font-size:12px;margin-top:3px}
.dropzone .dz-prev{align-items:center;justify-content:center;gap:12px;margin-top:6px;flex-wrap:wrap}
.dropzone .dz-prev img{width:120px;height:120px;object-fit:contain;border-radius:8px;
  border:1px solid var(--line);background:#fff}
.dropzone .dz-prev .dzf{font-size:12px;color:var(--mut);max-width:210px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}
.dropzone .dz-prev .dzx{font-size:12px;color:var(--err);cursor:pointer;border:0;
  background:none;padding:0;margin-top:4px;text-align:left}

/* ---------- 价格 ---------- */
.price-hero{display:flex;align-items:baseline;gap:10px;margin:12px 0}
.price-hero .v{font-size:30px;font-weight:800;color:var(--err);letter-spacing:-.5px}
.price-hero .v small{font-size:16px;font-weight:600}
.price-hero .lb{font-size:12px;color:var(--mut)}
.buybox{display:flex;flex-direction:column;gap:9px;margin-top:14px}
.buybox .btn{width:100%}

/* ---------- 空状态 ---------- */
.empty{background:#fff;border:1px dashed #d8e0ea;border-radius:var(--r);padding:44px 20px;text-align:center}
.empty .em{font-size:34px;opacity:.5;margin-bottom:8px}
.empty .t{font-weight:600;margin-bottom:4px}
.empty .d{font-size:13px;color:var(--mut)}

/* ---------- toast / lightbox ---------- */
.toast{position:fixed;left:50%;bottom:34px;transform:translateX(-50%) translateY(8px);
  background:#111827;color:#fff;padding:11px 18px;border-radius:12px;font-size:14px;z-index:200;
  box-shadow:var(--sh-lg);opacity:0;transition:.22s;pointer-events:none}
.toast.on{opacity:1;transform:translateX(-50%) translateY(0)}
.lb{position:fixed;inset:0;background:rgba(10,15,25,.86);z-index:300;display:none;
  align-items:center;justify-content:center;padding:20px;backdrop-filter:blur(3px)}
.lb.on{display:flex}
.lb img{max-width:100%;max-height:88vh;border-radius:10px;box-shadow:0 20px 60px rgba(0,0,0,.5)}
.lb .x{position:absolute;right:18px;top:18px;color:#fff;background:rgba(255,255,255,.14);
  border:0;width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center}

/* ---------- 登录页 ---------- */
.guest{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;
  background:radial-gradient(1200px 500px at 50% -10%,#dbe7ff 0%,transparent 60%),
             linear-gradient(160deg,#f4f6fa,#eef2f8)}
.login-card{width:100%;max-width:392px;background:#fff;border:1px solid var(--line);
  border-radius:20px;box-shadow:0 20px 60px rgba(16,24,40,.12);padding:34px 30px 28px}
.login-card .lg{display:flex;align-items:center;gap:11px;margin-bottom:20px}
.login-card .lg .logo{width:40px;height:40px;border-radius:12px;
  background:linear-gradient(135deg,#3b82f6,#6366f1);color:#fff;display:flex;align-items:center;justify-content:center}
.login-card .lg b{font-size:17px;display:block}
.login-card .lg span{font-size:12px;color:var(--mut)}
.login-card h2{font-size:20px;font-weight:700;margin-bottom:6px}
.login-card .sub{font-size:13px;color:var(--mut);margin-bottom:20px}
.login-card .field{margin-bottom:14px}
.alert{padding:10px 13px;border-radius:10px;font-size:13px;margin-bottom:14px;display:flex;gap:8px;align-items:center}
.alert.err{background:var(--err-soft);color:#b91c1c}
.alert.ok{background:var(--ok-soft);color:#15803d}
.alert.warn{background:var(--warn-soft);color:#b45309}
.login-foot{margin-top:18px;text-align:center;font-size:12px;color:var(--mut-2)}

/* ---------- 移动端底部导航 ---------- */
.tabbar{display:none;position:fixed;left:0;right:0;bottom:0;z-index:30;background:rgba(255,255,255,.96);
  backdrop-filter:blur(10px);border-top:1px solid var(--line);padding:6px 4px calc(6px + env(safe-area-inset-bottom))}
.tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:5px 2px;
  font-size:11px;color:var(--mut)}
.tabbar a.active{color:var(--pri)}
.tabbar a .ico{width:21px;height:21px}

/* ---------- 两栏详情 ---------- */
.split{display:grid;gap:16px;grid-template-columns:minmax(0,1.02fr) minmax(0,.98fr);align-items:start}
/* 询价 / 订单详情：左 6 右 4（主内容更宽，右侧信息栏收窄） */
.split.s64{grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr)}
.split.sticky-left>div:first-child{position:sticky;top:74px}

/* ---------- 订单进度条 ---------- */
.steps{display:flex;align-items:center;gap:8px;overflow-x:auto;padding:2px 0}
.steps .step{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--mut-2);white-space:nowrap}
.steps .step .n{width:22px;height:22px;border-radius:50%;background:#eef2f7;color:#94a3b8;
  display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex:none}
.steps .step.done{color:var(--ok)}
.steps .step.done .n{background:var(--ok-soft);color:var(--ok)}
.steps .step.cur{color:var(--pri-2);font-weight:600}
.steps .step.cur .n{background:var(--pri);color:#fff;box-shadow:0 0 0 3px rgba(37,99,235,.16)}
.steps .bar{width:16px;height:2px;background:#e6eaf0;border-radius:2px;flex:none}

/* ---------- 视频组 ---------- */
/* 视频宽度已在上方 .mgrid.videos 统一为 100%，此处不再覆盖 */

/* ---------- 省市区乡镇选择 ---------- */
.region{display:flex;gap:8px;flex-wrap:wrap}
.region select{flex:1 1 120px;min-width:110px}
.region .detail{flex:1 1 100%;margin-top:8px}
.region-sum{font-size:13px;color:var(--txt);margin-top:6px;padding:8px 11px;background:#f7f9fc;
  border:1px dashed var(--line);border-radius:10px;min-height:36px;word-break:break-all}
.region-sum.bad{color:var(--err);border-color:#fecaca;background:#fef2f2}

/* ---------- 询价多商品行 ---------- */
.qrow{display:flex;gap:8px;align-items:center;margin-bottom:9px}
.qrow select{flex:1;min-width:0}
.qrow input{width:92px;flex:none}
.qrow .del{flex:none}
.qrow-tpl{display:none}

/* 商品搜索选择器（新建询价）：输入即筛选 名称/品牌/型号/规格 */
.qrow .pick{flex:1;min-width:0;position:relative}
.qrow .pick .pick-in{width:100%;flex:1 1 auto}
.pick-menu{position:absolute;z-index:40;left:0;right:0;top:calc(100% + 4px);background:#fff;
  border:1px solid var(--line);border-radius:10px;box-shadow:0 12px 28px rgba(16,24,40,.16);
  max-height:300px;overflow:auto;padding:4px}
.pick-i{display:flex;align-items:center;gap:10px;padding:8px 9px;border-radius:8px;cursor:pointer;font-size:13px}
.pick-i:hover{background:var(--pri-soft)}
.pick-i .pi-n{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pick-i .pi-p{flex:none;color:var(--err);font-weight:600;font-size:12.5px;font-variant-numeric:tabular-nums}
.pick-empty{padding:10px 9px;color:var(--mut);font-size:12.5px}

/* 可点跳转的文字链接（商品名称等） */
.lnk{color:var(--pri);border-bottom:1px dashed rgba(37,99,235,.35)}
.lnk:hover{color:var(--pri-2);border-bottom-color:var(--pri-2)}

/* 询价详情：按商品逐条展示参数 */
.qparam{padding:12px 0;border-top:1px solid var(--line-2)}
.qparam:first-of-type{border-top:0;padding-top:0}
.qparam .qp-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px;font-weight:600;font-size:14px}
.qparam .qp-q{margin-left:auto;color:var(--mut);font-size:12.5px;font-weight:500}

/* ---------- 品类字段可视化编辑 ---------- */
.ftable td{padding:6px 6px}
.ftable td.idx{color:var(--mut-2);font-size:12px;text-align:center;font-variant-numeric:tabular-nums}
.ftable td.c{text-align:center}
.ftable input[type=text],.ftable select{padding:6px 9px;font-size:13px;border-radius:8px}
.ftable select{padding-right:26px;background-position:right 8px center}
.ftable input[readonly]{background:#f6f8fb;color:var(--mut);cursor:not-allowed}
.ftable td.ops{white-space:nowrap}
.ftable td.ops .btn{padding:3px 8px;min-width:28px;font-size:12px;border-radius:7px;margin-right:3px}
.cat-json{margin-top:14px;border-top:1px dashed var(--line);padding-top:12px}
.cat-json>summary{cursor:pointer;font-size:12.5px;color:var(--mut);list-style:none;display:flex;align-items:center;gap:6px}
.cat-json>summary::-webkit-details-marker{display:none}
.cat-json>summary:before{content:'▸';font-size:11px}
.cat-json[open]>summary:before{content:'▾'}

/* ---------- 上传进度 ---------- */
.uprog{display:none;align-items:center;gap:9px;margin-top:10px;font-size:12px;color:var(--mut)}
.uprog.on{display:flex;flex-wrap:wrap}
.uprog .track{width:160px;flex:none;height:7px;border-radius:99px;background:#edf1f6;overflow:hidden}
.uprog .bar{height:100%;width:0;border-radius:99px;background:linear-gradient(90deg,#3b82f6,#6366f1);transition:width .15s}
.uprog .t{width:42px;text-align:right;font-variant-numeric:tabular-nums}
.uprog .n{flex:1 1 160px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.uprog.state-ok .bar{background:linear-gradient(90deg,#10b981,#059669)}
.uprog.state-ok .t,.uprog.state-ok .n{color:#059669;font-weight:600}
.uprog.state-err .bar{background:linear-gradient(90deg,#ef4444,#dc2626)}
.uprog.state-err .t,.uprog.state-err .n{color:#dc2626;font-weight:600}

/* 商家编码：一个商品多个供应商，多行成对输入 */
.coderows{display:flex;flex-direction:column;gap:8px}
.coderow{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.coderow input{flex:1 1 0;min-width:0;width:auto}
.coderow input[name=sc_supplier]{flex:0 1 22%}
.coderow input[name=sc_price]{flex:0 0 96px}
.coderow input[name=sc_note]{flex:0 1 26%}
@media (max-width:700px){
  .coderow input[name=sc_supplier],.coderow input[name=sc_note]{flex:1 1 100%}
  .coderow input[name=sc_price]{flex:1 1 100%}
}
.mgroup-b .uploader{border-top:1px dashed var(--line);padding-top:12px;margin-top:10px}
.mgroup-b .uploader .btn{min-height:34px}

/* ---------- 付款方式 / 收款信息 ---------- */
.pay-grid{display:grid;gap:10px;grid-template-columns:repeat(3,minmax(0,1fr))}
.pay-opt{position:relative;display:flex;flex-direction:column;align-items:center;gap:7px;
  padding:14px 8px;border:1.5px solid var(--line);border-radius:14px;cursor:pointer;background:#fff;
  transition:.15s;font-size:13.5px;font-weight:600}
.pay-opt input{position:absolute;opacity:0;pointer-events:none}
.pay-opt .ico{width:22px;height:22px;color:var(--mut)}
.pay-opt:hover{border-color:#c7d3e3}
.pay-opt.sel{border-color:var(--pri);background:var(--pri-soft);color:var(--pri-2);
  box-shadow:0 0 0 3px rgba(37,99,235,.1)}
.pay-opt.sel .ico{color:var(--pri)}
.pay-detail{margin-top:12px;border:1px solid var(--line);border-radius:14px;padding:16px;background:#fbfcfe}
/* 不开票：微信 / 支付宝 两个收款信息并排 */
.pay-two{display:grid;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr))}
.pay-two .pay-detail{margin-top:0}
.pay-tag{font-size:13px;font-weight:700;color:var(--pri-2);text-align:center;margin-bottom:8px}
.qr-box{display:flex;flex-direction:column;align-items:center;gap:8px}
.qr-box img{width:210px;height:210px;object-fit:contain;background:#fff;border:1px solid var(--line);
  border-radius:12px;padding:8px}
.bank-box .row{display:flex;gap:10px;font-size:14px;padding:7px 0;border-bottom:1px dashed var(--line-2)}
.bank-box .row:last-child{border-bottom:0}
.bank-box .row .k{width:76px;color:var(--mut);flex:none}
.bank-box .row .v{font-weight:600;word-break:break-all}
.bank-warn{font-size:12.5px;color:#b45309;background:var(--warn-soft);border-radius:10px;
  padding:9px 12px;margin-top:10px;line-height:1.6}
/* 收款设置：左边收款码预览，右边账号/姓名 */
.fgrid .span2{grid-column:1/-1}
.payqr{display:flex;gap:16px;align-items:flex-start}
.payqr-img{flex:none}
.payqr-img img{width:150px;height:150px;object-fit:contain;background:#fff;border:1px solid var(--line);
  border-radius:12px;padding:6px}
.payqr-ph{width:150px;height:150px;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:4px;border:1px dashed var(--line);border-radius:12px;color:var(--mut-2);font-size:12px;background:#fbfcfe}
.payqr-f{flex:1;min-width:0;display:flex;flex-direction:column;gap:10px}
.pay-who{font-size:13px;color:var(--mut);background:#f1f5ff;border:1px solid #dbe4ff;border-radius:10px;
  padding:7px 11px;word-break:break-all}
.pay-who b{color:var(--txt);font-weight:600}
@media (max-width:560px){
  .payqr{flex-direction:column}
  .payqr-img img,.payqr-ph{width:100%;height:180px}
}

/* ---------- 采购主体卡片 ---------- */
.ent-card{border:1px solid var(--line);border-radius:14px;padding:14px;margin-bottom:12px;background:#fff}
.ent-card.def{border-color:var(--pri);box-shadow:0 0 0 3px rgba(37,99,235,.08)}
.ent-card .eh{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.ent-card .eh b{font-size:14.5px}
.ent-card .eh .spacer{flex:1}
.ent-card .grid{display:grid;gap:8px 14px;grid-template-columns:repeat(2,minmax(0,1fr));font-size:13px}
.ent-card .grid .k{color:var(--mut);font-size:12px}
.ent-form{border:1px dashed var(--line);border-radius:14px;padding:14px;background:#fbfcfe}
/* 只读视图 / 编辑视图切换：默认只显示文字，点「修改」才展开表单 */
.ent-card .eform{display:none}
.ent-card.editing .eform{display:block}
.ent-card.editing .eview{display:none}
.ent-empty{color:var(--mut);font-size:13px;padding:8px 0}

/* ---------- 合同双文件 ---------- */
.contract-two{display:grid;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr))}
.cfile{border:1px solid var(--line);border-radius:14px;padding:13px;background:#fff}
.cfile .t{font-size:13px;font-weight:600;margin-bottom:8px;display:flex;align-items:center;gap:7px}
.cfile .a{display:flex;gap:8px;flex-wrap:wrap}

/* ---------- 响应式 ---------- */
@media (max-width:1100px){
  .split{grid-template-columns:1fr}
  .g6{grid-template-columns:repeat(5,minmax(0,1fr))}
  .g5{grid-template-columns:repeat(4,minmax(0,1fr))}
  .g4{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media (max-width:960px){
  :root{--side-w:0px}
  .side{display:none}
  .main{margin-left:0}
  .tabbar{display:flex}
  .page{padding:16px 14px 86px}
  .topbar{padding:10px 14px}
  .savebar{margin:0 -14px;left:0;right:0;padding-left:14px;padding-right:14px}
  .g6,.g5,.g4,.g3{grid-template-columns:repeat(2,minmax(0,1fr))}
  .fgrid,.fgrid.c3,.fgrid.c4{grid-template-columns:repeat(2,minmax(0,1fr))}
  .filters select,.filters input{min-width:0 !important}
  .searchbox{min-width:0}
}
@media (max-width:640px){
  .hide-sm{display:none}
  .topbar h1{display:none}
  .searchbox{flex:1 1 100%;min-width:0}
  .filters select,.filters input{min-width:0}
  .filters>.btn{flex:1 1 auto}
  .mgroup-b .uploader input[type=file]{min-width:0}
  .steps .bar{width:10px}
  .page{padding:14px 12px 86px}
  .card{padding:14px;border-radius:12px}
  .g6,.g5,.g4,.g3,.g2{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .fgrid,.fgrid.c3,.fgrid.c4{grid-template-columns:1fr}
  .topbar h1{font-size:16px}
  /* 窄屏：缩略图 + 正文两列，数量/金额/状态换到卡片底部一行（避免单号把行撑出屏幕） */
  .li{padding:12px;display:grid;grid-template-columns:48px minmax(0,1fr);gap:6px 10px}
  .li .li-ic{display:none}
  .li .li-thumb{width:48px;height:48px;grid-column:1;grid-row:1}
  .li .li-m{grid-column:2;grid-row:1;min-width:0}
  .li .li-r{grid-column:1/-1;grid-row:2;min-width:0;display:flex;align-items:center;
    justify-content:flex-start;flex-wrap:wrap;gap:8px;text-align:left;margin-top:6px;
    padding-top:8px;border-top:1px dashed var(--line-2)}
  .li .li-r .amt{font-size:15px;margin:0}
  .li .li-r .li-qty{font-size:13px}
  .li .li-r .li-st{margin:0 0 0 auto}
  .li .li-due{margin:0}
  .li .li-go{display:none}
  .li .li-meta{gap:6px;margin-top:5px}
  .li .li-time{font-size:12px}
  .li .li-kv{font-size:11px}
  .li .li-s{font-size:11.5px}
  .li .li-cd{font-size:11.5px;padding:1px 7px}
  .li .li-due{font-size:11.5px;padding:1px 7px}
  .li .li-link{font-size:11px}
  .price-hero .v{font-size:26px}
  .spec-g .kv{grid-template-columns:100px 1fr}
  .prod .pb .nm{min-height:0}
  .pay-grid{grid-template-columns:1fr}
  .pay-two{grid-template-columns:1fr}
  .contract-two{grid-template-columns:1fr}
  .ent-card .grid{grid-template-columns:1fr}
  .region select{flex:1 1 45%}
  .qrow{flex-wrap:wrap}
  .qrow select{flex:1 1 100%}
  .qrow .pick{flex:1 1 100%}
  .qrow input{width:80px}
  .qrow .pick .pick-in{width:100%}
  .qr-box img{width:180px;height:180px}
}
@media (max-width:400px){
  .g4,.g5,.g3{grid-template-columns:1fr}
}

/* ---------- 询价详情：成本核算（仅商家可见） ---------- */
.costcard .cost-more summary{font-size:12px;color:var(--pri);cursor:pointer;margin-top:2px}
.costcard .cost-sum td{padding-top:10px}
.cost-form{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}
.cost-form label{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--mut);white-space:nowrap}
.cost-form input{width:96px}
/* 客户询价选定的运费方式：红字提示商家（客户自提 / 需含运费） */
.cost-frt{color:var(--err);font-weight:600}
.cost-out{margin-top:12px;border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:#fbfcfe}
.co-row{display:flex;align-items:baseline;gap:10px;padding:3px 0;font-size:13px;color:var(--mut)}
.co-row b{margin-left:auto;color:var(--ink);font-variant-numeric:tabular-nums}
.co-row.total{border-top:1px dashed var(--line);margin-top:4px;padding-top:8px;font-weight:600;color:var(--ink)}
.co-row.total b{font-size:16px;color:var(--pri-2)}
.co-row.up b{color:var(--err)}
.co-row.down b{color:var(--ok)}

/* ==================================================================
   移动端（≤768px）—— 全部规则只在此媒体查询内生效，桌面端一行不改
   三条通用坍塌规则：双栏→单列 / 表格→卡片(table.mc) / 主操作→底部固定栏(.mbar)
   ================================================================== */
/* 桌面端隐藏的移动端专属组件（默认不显示，防止误出） */
.mbar,.mfilter-bar,.mmask,.mdrawer-h{display:none}
.mc-sub{display:none}                                 /* 卡片标题下的小字（型号），桌面端不显示 */
.mc-cur{display:none}                                 /* 金额 ¥ 前缀：桌面端表头已有语义，只在手机卡片里补 */
/* 表格卡片化的「字段名」由 data-label 生成，桌面端不显示 */
table.mc td::before{content:none}

@media (max-width:768px){
  /* ---------- 表单触控基线（iOS 输入框 <16px 会自动放大页面） ---------- */
  input[type=text],input[type=email],input[type=tel],input[type=number],
  input[type=password],input[type=date],input:not([type]),select,textarea{
    font-size:16px;padding:11px 12px;border-radius:11px}
  textarea{min-height:84px}
  .btn{min-height:42px}
  .btn.sm{min-height:36px;font-size:13.5px}
  .btn.lg{min-height:48px}
  .check{font-size:14.5px}
  /* 点击区之间留空，避免误触 */
  .btn-row{gap:9px}

  /* ---------- 布局：双栏一律单列（.split.s64 原来优先级压过媒体查询，这里显式打平） ---------- */
  .split,.split.s64,.split.sticky-left{grid-template-columns:1fr;gap:12px}
  .split.sticky-left>div:first-child{position:static}
  .page-head{gap:8px;margin-bottom:12px}
  .page-head .ph-main h1{font-size:17px;line-height:1.35}
  .page-head .actions{width:100%;gap:8px}
  .page-head .actions .btn{flex:1 1 auto}
  .card{padding:13px;border-radius:12px;margin-bottom:12px}
  .card-h{margin-bottom:10px;gap:8px;flex-wrap:wrap;row-gap:2px}
  .card-h h2{font-size:14.5px;white-space:nowrap}       /* 标题不许被右侧说明挤成两行 */
  .card-h .hint{flex:1 1 100%;order:9;margin-top:2px;font-size:11.5px;line-height:1.4;text-align:left}

  /* ---------- 页签：不换行、可横滑 ---------- */
  .tabs{flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;
    margin:0 -12px 12px;padding:0 12px 3px;scrollbar-width:none}
  .tabs::-webkit-scrollbar{display:none}
  .tab{flex:none;padding:7px 13px}

  /* ---------- 表格 → 卡片（table.mc） ---------- */
  table.mc{display:block;font-size:14px}
  table.mc thead,table.mc tbody{display:block}
  table.mc tr{display:block;border:1px solid var(--line);border-radius:12px;background:#fff;
    padding:2px 12px 8px;margin-bottom:10px}
  table.mc tr.mch{display:none}                       /* 表头行在手机上隐藏 */
  table.mc td{display:flex;align-items:center;justify-content:space-between;gap:10px;
    padding:7px 0;border:0;border-bottom:1px dashed var(--line-2);min-height:34px;text-align:left}
  table.mc tr td:last-child{border-bottom:0}
  table.mc td::before{content:attr(data-label);flex:0 0 76px;color:var(--mut);
    font-size:12.5px;font-weight:500;white-space:nowrap}
  table.mc td[data-label=""]::before,table.mc td:not([data-label])::before{content:none}
  /* 卡片标题行：账号 / 型号 / 单号，不带字段名 */
  table.mc td.mc-title{display:block;font-weight:700;font-size:15px;padding:9px 0 7px;
    border-bottom:1px solid var(--line);margin-bottom:2px;line-height:1.4}
  table.mc td.mc-title::before{display:none}
  table.mc td.mc-title .mut{font-weight:400}
  /* 整宽控件（表单类单元格） */
  table.mc td.mc-full{display:block;padding:7px 0}
  table.mc td.mc-full::before{content:none}
  table.mc td input,table.mc td select{width:100%;min-width:0;flex:1 1 auto}
  table.mc td .filters{flex-wrap:nowrap;width:100%}
  table.mc td .check{justify-content:flex-end;width:100%;white-space:nowrap}
  /* 合计行 */
  table.mc tr.mc-sum{background:#fbfcfe;border-color:#dfe7f2}
  table.mc tr.mc-sum td{font-size:14px;justify-content:space-between;min-height:28px;padding:5px 0}
  table.mc tr.mc-sum td.num{justify-content:flex-end}
  table.mc tr.mc-sum td b{font-size:15px}
  /* 卡片标题（名称类单元格）/ 隐藏重复列 / 标题下小字 */
  table.mc td.mc-name{display:block;font-weight:700;font-size:15px;padding:8px 0 7px;
    border-bottom:1px solid var(--line);margin-bottom:2px;line-height:1.35}
  table.mc td.mc-name::before{display:none}
  table.mc td.mc-hide{display:none}
  table.mc .mc-sub{display:block;font-size:12px;color:var(--mut);font-weight:400;margin-top:2px}
  table.mc .mc-cur{display:inline}
  table.mc .mv{white-space:nowrap}                    /* 金额+¥ 必须粘成一个整体，否则 flex 会把它拆成两列 */
  table.mc td .mvd{flex:1 1 auto;min-width:0;text-align:right;line-height:1.5}
  table.mc td .mvd>span.mut{display:block}            /* 供应商/编号 说明另起一行，不跟价格抢宽度 */
  /* 空状态行 */
  table.mc tr td[colspan]{display:block}
  table.mc tr td[colspan]::before{content:none}
  /* 卡片内不再需要横向滚动 */
  table.mc+.tbl-foot{border-top:0;background:none}
  .tbl-wrap:has(table.mc){overflow:visible}

  /* ---------- 列表卡片瘦身（询价 / 订单） ---------- */
  .li{padding:11px 12px;gap:6px 10px}
  .li .li-t{gap:6px;font-size:14px}
  .li .li-p{font-size:13px;line-height:1.45;
    display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;white-space:normal}
  .li .li-model{display:none}                         /* 型号在第二行名称里已有，窄屏省空间 */
  .li .li-s{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .li .li-r .amt{font-size:16px}

  /* ---------- 底部固定操作栏 .mbar ---------- */
  .mbar{display:flex;position:fixed;left:0;right:0;z-index:26;align-items:center;gap:8px;
    bottom:calc(56px + env(safe-area-inset-bottom));
    background:rgba(255,255,255,.97);backdrop-filter:blur(12px);
    border-top:1px solid var(--line);padding:8px 12px;box-shadow:0 -6px 18px -12px rgba(16,24,40,.28)}
  .mbar .sum{flex:none;font-size:11.5px;color:var(--mut);line-height:1.25;padding-right:2px}
  .mbar .sum b{display:block;color:var(--err);font-size:15.5px;font-variant-numeric:tabular-nums;letter-spacing:-.2px}
  .mbar .btn{flex:1 1 0;min-width:0;padding-left:10px;padding-right:10px}
  .mbar .btn.ghost{flex:0 0 auto}
  .page.has-mbar{padding-bottom:154px}                /* 给底栏 + 底部导航留位 */
  .savebar{bottom:0}

  /* ---------- 筛选抽屉 ---------- */
  .mfilter-bar{display:flex;align-items:center;gap:9px;margin:0 0 10px}
  .mfilter-bar .btn{flex:none}
  .mfilter-bar .tab-n{display:inline-block;min-width:18px;height:18px;padding:0 5px;margin-left:5px;
    border-radius:9px;background:var(--err);color:#fff;font-size:11px;font-weight:700;line-height:18px}
  .mfilter-bar .res{flex:1;text-align:right;font-size:12.5px;color:var(--mut)}
  .filters.mdrawer{display:none}
  .filters.mdrawer.on{display:flex;flex-direction:column;align-items:stretch;gap:9px;
    position:fixed;left:0;right:0;bottom:0;top:auto;z-index:60;max-height:86vh;overflow:auto;
    background:#fff;border-radius:16px 16px 0 0;padding:14px 14px calc(14px + env(safe-area-inset-bottom));
    box-shadow:0 -14px 40px rgba(16,24,40,.24)}
  .filters.mdrawer.on input,.filters.mdrawer.on select{width:100% !important;min-width:0 !important}
  .filters.mdrawer.on .btn{width:100%}
  .mdrawer-h{display:flex;align-items:center;gap:10px;padding-bottom:4px;border-bottom:1px solid var(--line);
    margin-bottom:2px;font-weight:700;font-size:15px}
  .mdrawer-h .x{margin-left:auto;border:0;background:none;color:var(--mut);font-size:20px;line-height:1;padding:4px 6px}
  .mmask{position:fixed;inset:0;background:rgba(15,23,42,.44);z-index:55;display:none}
  .mmask.on{display:block}
  body.noscroll{overflow:hidden}

  /* ---------- 询价明细 / 成本核算的表单行 ---------- */
  .cost-form{display:grid;grid-template-columns:1fr 1fr;gap:10px}
  .cost-form label{display:block;white-space:normal;font-size:12.5px;line-height:1.5}
  .cost-form label input{display:block;width:100%;margin-top:5px}
  .cost-form .hint{grid-column:1/-1}
  .costcard .cost-frt{display:block;margin-top:1px}
  .co-row{font-size:13.5px}
  .co-row.total b{font-size:17px}
  /* 添加商品 / 生成报价单等表单：竖排、整宽 */
  .uploader{flex-direction:column;align-items:stretch;gap:9px}
  .uploader>*{width:100% !important;flex:1 1 auto !important}
  .uploader .btn{width:100%}
  .uploader label{white-space:normal !important}
  .uploader label input[type=text]{flex:1}

  /* ---------- 详情页杂项 ---------- */
  .kv.simple{grid-template-columns:88px 1fr;font-size:14px;gap:7px 10px}
  .spec-g .kv{grid-template-columns:92px 1fr;font-size:13.5px}
  .steps{gap:5px}
  .steps .step{font-size:12px}
  .steps .step .n{width:20px;height:20px;font-size:11px}
  .rc-box{font-size:13.5px}
  .region select{flex:1 1 calc(50% - 4px);min-width:0}
  .region .detail{flex:1 1 100%}
  .pay-grid{grid-template-columns:1fr}
  .pay-two,.contract-two{grid-template-columns:1fr}
  .dropzone{padding:16px 12px}
  .qr-box img{width:100%;max-width:220px;height:auto}
  .gal-thumbs button{width:58px;height:58px}
  .mgroup-b .mgrid .cell,.mgrid .cell{width:calc(50% - 5px);height:auto;aspect-ratio:1/1}
  .mgroup-b .mgrid.videos .cell{width:100%}
  .mgrid.videos .cell video{max-height:60vh}
  /* 商品网格：2 列，图更大 */
  .g6,.g5,.g4,.g3,.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
  .prod .pb{padding:9px 10px 11px}
  .prod .pb .nm{font-size:13px;min-height:0}
  .prod .pb .pr{font-size:16px}
  /* 新建询价行：商品选择器整宽，数量另起一行 */
  .qrow{gap:8px}
  .qrow .pick{flex:1 1 100%}
  .qrow input{width:100%}
  .pick-menu{max-height:46vh}
  /* 品类字段这类可编辑表格：保留横向滚动（列多且要对照），但收紧内边距 */
  .ftable{font-size:13px}
  .ftable td{padding:5px 4px}
  .ftable input[type=text],.ftable select{padding:6px 7px;font-size:13px}
  .savebar{margin:0 -12px -40px;padding-left:12px;padding-right:12px}
}

/* ==================================================================
   商品详情页 · 媒体分组折叠（通用）+ 手机端重排
   ================================================================== */
details.mgroup{display:block}
details.mgroup>summary{list-style:none;cursor:pointer}
details.mgroup>summary::-webkit-details-marker{display:none}
details.mgroup>summary .chev{margin-left:2px;transition:transform .2s}
details.mgroup[open]>summary .chev{transform:rotate(180deg)}

/* 桌面端：全部展开、标题不可点、不显示折叠箭头（保持原有阅读习惯） */
@media (min-width:769px){
  details.mgroup>summary{pointer-events:none}
  details.mgroup>summary .chev{display:none}
  details.mgroup:not([open])>.mgrid{display:flex}
}

@media (max-width:768px){
  /* 根因修复：1fr 的最小宽度会被内容撑破，必须用 minmax(0,1fr) 强制收敛 */
  .split.product{grid-template-columns:minmax(0,1fr)}
  .split.product>div{display:contents}          /* 打散两栏，让每张卡片单独参与排序 */
  .split.product>div>.card{margin-bottom:0}     /* 间距交给 grid gap，避免叠成 24px */

  /* 手机端阅读顺序：图 → 价 → 图册 → 参数 → 商家编码 */
  .split.product .p-gal{order:1}
  .split.product .p-buy{order:2}
  .split.product .p-media{order:3}
  .split.product .p-spec{order:4}
  .split.product .p-code{order:6}

  .split.product .gal-main{max-height:52vh}     /* 窄屏兜底：不让方图吃掉整屏 */
  .split.product .mgrid .cell:only-child{margin-left:auto;margin-right:auto}  /* 单图组居中，别贴着左边留一大块白 */
  details.mgroup:not([open])>summary{margin-bottom:0}

  /* 商家编码：普通 .kv 没有基础网格（桌面本来就是单列堆叠），手机上给成两列 */
  .card.p-code .kv{display:grid;grid-template-columns:94px 1fr;gap:7px 10px;font-size:13.5px}
  .card.p-code .kv>div:nth-child(odd){color:var(--mut)}

  /* 顶栏「返回列表」收成小按钮，不再独占一行 */
  .page-head.ph-product{flex-wrap:nowrap;align-items:flex-start}
  .page-head.ph-product .actions{width:auto;margin-left:auto;flex:none}
  .page-head.ph-product .actions .btn{padding:7px 11px;min-height:34px;font-size:12.5px;flex:0 0 auto}
}
