/* ==================================================================
   全网监控（#page-market）· 专属样式 · 2026-10-12
   ------------------------------------------------------------------
   为什么单开一个文件，而不是追加到 ec-overview.css：
     ec-overview.css 的既定规矩是「@media 必须留在该文件最末尾，
     最后一个 @media 之后不许有顶层规则」。新主块只能插在 @media 之前，
     而本页样式已有 4 个断点，继续往里塞极易踩这条规矩。
     改为独立文件 + index.html 里排在 ec-overview.css 之后引入 ——
     加载顺序仍在最后（覆盖力最强），且与那条例规互不干扰。

   作用域纪律：**所有选择器都带 #page-market 前缀**，不写无前缀的裸类名，
   避免连带改到其它页（历史上「作用域写错＝静默全裸」踩过）。

   配色：全部走既有 token（--ink-1/2/3、--panel-bg、--panel-line、--accent）。
     涨跌四个保留色（#e5484d/#12a150/#f2b544/#cbd5e1）本页一概不用 ——
     控价看的是「结论性质色」：低于指导价=异常红(#b42318)、
     高于=正常绿(#067647)、持平灰(#475569)。
   ================================================================== */

#page-market .mkx-kpis {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(172px, 1fr));
  gap: 10px;
  margin: 0 0 14px;
}
#page-market .mkx-kpi {
  display: flex; align-items: flex-start; gap: 10px;
  background: var(--panel-bg); border: 1px solid var(--panel-line);
  border-radius: 12px; padding: 12px 13px;
  box-shadow: var(--shadow-panel);
}
#page-market .mkx-kpi-i {
  flex: none; width: 32px; height: 32px; border-radius: 9px;
  display: flex; align-items: center; justify-content: center; font-size: 13px;
}
#page-market .mkx-kpi-b { min-width: 0; flex: 1 1 auto; }
#page-market .mkx-kpi-t { font-size: 11.5px; color: var(--ink-3); line-height: 1.3; }
#page-market .mkx-kpi-v {
  font-size: 19px; font-weight: 680; color: var(--ink-1);
  line-height: 1.3; margin-top: 1px; font-variant-numeric: tabular-nums;
}
#page-market .mkx-kpi-s {
  font-size: 11px; color: var(--ink-3); margin-top: 2px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
#page-market .mkx-kpi-ell { display: block; max-width: 100%; }

/* ---------------- 监控对象卡 ---------------- */
#page-market .mkx-wbar {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(236px, 1fr));
  gap: 10px; margin: 0 0 14px;
}
#page-market .mkx-wcard {
  background: var(--panel-bg); border: 1px solid var(--panel-line);
  border-radius: 12px; padding: 11px 12px; cursor: pointer;
  transition: border-color .16s, box-shadow .16s, transform .16s;
}
#page-market .mkx-wcard:hover { border-color: #c7cbd4; box-shadow: var(--shadow-pop); }
#page-market .mkx-wcard.is-on { border-color: var(--accent); box-shadow: 0 0 0 2px rgba(79,70,229,.12); }
#page-market .mkx-wcard.is-off { opacity: .6; }
#page-market .mkx-wcard-h { display: flex; align-items: center; gap: 6px; min-width: 0; }
#page-market .mkx-dot { flex: none; width: 7px; height: 7px; border-radius: 9999px; }
#page-market .mkx-wcard-t {
  font-size: 13.5px; font-weight: 640; color: var(--ink-1);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
#page-market .mkx-wcard-brand {
  flex: none; font-size: 10.5px; color: var(--ink-3);
  border: 1px solid var(--panel-line); border-radius: 9999px; padding: 0 6px; line-height: 16px;
}
#page-market .mkx-off-tag {
  flex: none; font-size: 10.5px; color: #475467; background: #f2f4f7;
  border-radius: 9999px; padding: 0 6px; line-height: 16px;
}
#page-market .mkx-wcard-plats { display: flex; gap: 5px; margin: 5px 0 8px; }
#page-market .mkx-plat { font-size: 11px; font-weight: 560; }
#page-market .mkx-wcard-nums {
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 4px; border-top: 1px solid var(--panel-line-soft); padding-top: 8px;
}
#page-market .mkx-num { min-width: 0; }
#page-market .mkx-num > em {
  display: block; font-style: normal; font-size: 10.5px; color: var(--ink-3);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
#page-market .mkx-num > b {
  display: block; font-size: 13px; font-weight: 620; color: var(--ink-1);
  font-variant-numeric: tabular-nums;
}
#page-market .mkx-wcard-f {
  display: flex; align-items: center; justify-content: space-between;
  gap: 6px; margin-top: 9px;
}
#page-market .mkx-wcard-time { font-size: 10.5px; color: var(--ink-3); white-space: nowrap; }
#page-market .mkx-wcard-time > i { margin-right: 3px; }
#page-market .mkx-ops { display: flex; gap: 2px; }
#page-market .mkx-ibtn {
  border: 0; background: transparent; cursor: pointer; padding: 4px 6px;
  border-radius: 7px; color: var(--ink-3); font-size: 12px; line-height: 1;
  transition: background .14s, color .14s;
}
#page-market .mkx-ibtn:hover { background: #eef1f5; color: var(--ink-1); }
#page-market .mkx-ibtn.is-danger:hover { background: #fee4e2; color: #b42318; }
#page-market .mkx-ibtn:disabled { opacity: .45; cursor: default; }

/* ---------------- 工具栏 ---------------- */
#page-market .mkx-tools {
  display: flex; align-items: center; flex-wrap: wrap; gap: 8px;
  background: var(--panel-bg); border: 1px solid var(--panel-line);
  border-radius: 12px; padding: 9px 11px; margin: 0 0 12px;
}
#page-market .mkx-search {
  display: flex; align-items: center; gap: 6px; flex: 0 1 268px;
  border: 1px solid var(--panel-line); border-radius: 9px; padding: 0 9px;
  background: #fbfcfd;
}
#page-market .mkx-search > i { color: var(--ink-3); font-size: 12px; }
#page-market .mkx-search > input {
  flex: 1 1 auto; min-width: 0; border: 0; outline: 0; background: transparent;
  font-size: 12.5px; padding: 7px 0; color: var(--ink-1);
}
#page-market .mkx-seg {
  display: flex; gap: 2px; background: #f2f4f7; border-radius: 9px; padding: 2px;
}
#page-market .mkx-seg-b {
  border: 0; background: transparent; cursor: pointer; font-size: 12px;
  padding: 5px 11px; border-radius: 7px; color: var(--ink-2);
  transition: background .14s, color .14s;
}
#page-market .mkx-seg-b.is-on { background: #fff; color: var(--ink-1); font-weight: 600; box-shadow: 0 1px 2px rgba(16,24,40,.08); }
#page-market .mkx-sw {
  display: flex; align-items: center; gap: 6px; font-size: 12.5px;
  color: var(--ink-2); cursor: pointer;
}
#page-market .mkx-sw > input { accent-color: var(--accent); width: 14px; height: 14px; }
#page-market .mkx-spacer { flex: 1 1 auto; }
#page-market .mkx-sel { font-size: 12px; color: var(--ink-3); display: flex; align-items: center; gap: 4px; }
#page-market .mkx-sel > select {
  border: 1px solid var(--panel-line); border-radius: 7px; padding: 4px 6px;
  font-size: 12px; color: var(--ink-1); background: #fff; outline: 0;
}

/* ---------------- 两栏布局 ---------------- */
#page-market .mkx-layout {
  display: grid; grid-template-columns: minmax(0, 1fr) 302px;
  gap: 12px; align-items: start;
}
#page-market .mkx-main { min-width: 0; }
#page-market .mkx-side { min-width: 0; display: flex; flex-direction: column; gap: 12px; }

/* ---------------- 主表 ---------------- */
#page-market .mkx-tb-head {
  display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap;
  margin: 0 0 8px;
}
#page-market .mkx-tb-head > h4 { font-size: 14px; font-weight: 640; color: var(--ink-1); margin: 0; }
#page-market .mkx-tb-head > .hint { font-size: 11.5px; color: var(--ink-3); }
#page-market .mkx-tbwrap {
  background: var(--panel-bg); border: 1px solid var(--panel-line);
  border-radius: 12px; overflow-x: auto; box-shadow: var(--shadow-panel);
}
#page-market table.mkx-tb { width: 100%; min-width: 792px; border-collapse: collapse; }
#page-market table.mkx-tb thead th {
  position: sticky; top: 0; z-index: 1;
  background: #fbfcfd; color: var(--ink-3); font-size: 11.5px; font-weight: 560;
  text-align: left; padding: 8px 8px; border-bottom: 1px solid var(--panel-line);
  white-space: nowrap;
}
#page-market table.mkx-tb thead th.mkx-c-r { text-align: right; }
#page-market table.mkx-tb thead th[data-mkx-sort] { cursor: pointer; user-select: none; }
#page-market table.mkx-tb thead th[data-mkx-sort]:hover { color: var(--ink-1); }
#page-market table.mkx-tb thead th > i { margin-left: 3px; font-size: 9px; opacity: .55; }
#page-market table.mkx-tb thead th.is-on { color: var(--accent); }
#page-market table.mkx-tb thead th.is-on > i { opacity: 1; }
#page-market table.mkx-tb tbody td {
  padding: 7px 8px; border-bottom: 1px solid var(--panel-line-soft);
  font-size: 12.5px; color: var(--ink-1); vertical-align: middle;
}
#page-market table.mkx-tb tbody tr { cursor: pointer; transition: background .12s; }
#page-market table.mkx-tb tbody tr:hover { background: #f7f9fc; }
#page-market table.mkx-tb tbody td.mkx-c-r { text-align: right; font-variant-numeric: tabular-nums; }
#page-market table.mkx-tb tbody td.mkx-c-img { width: 46px; padding-right: 0; }
#page-market .mkx-thumb-w {
  width: 38px; height: 38px; border-radius: 8px;
  background: #f2f4f7; border: 1px solid var(--panel-line-soft);
  overflow: hidden; display: flex; align-items: center; justify-content: center;
  color: #cbd5e1; font-size: 13px;
}
#page-market .mkx-thumb { width: 100%; height: 100%; object-fit: cover; display: block; }
#page-market .mkx-thumb.is-broken, #page-market img.is-broken { visibility: hidden; }
#page-market .mkx-plat-tag {
  font-size: 11px; font-weight: 580; white-space: nowrap;
}
/* ★ 第 76 轮（老板）：「平台列 直接用对应的logo来显示吧」—— logo 用内联 SVG，这里只管对齐与轻投影 */
#page-market .mkx-plat-tag.is-logo { display: inline-flex; align-items: center; line-height: 0; vertical-align: middle; }
#page-market .mkx-plat-tag.is-logo svg { display: block; border-radius: 5px; box-shadow: 0 1px 2px rgba(15, 23, 42, .14); }
#page-market td.mkx-c-tt { max-width: 300px; }
#page-market .mkx-tt {
  color: var(--ink-1); white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  font-weight: 520;
}
/* ★ 第 76 轮（老板）：「商品列的正确格式 —— 商品标题 / ID 品牌 标签 / ml 瓶」
   第 2 行改成一条 flex 行：ID（等宽数字）· 品牌（深灰加粗）· 标签（小 chip）· 促销（末位橙色）
   ★★ 第 76 轮补：关键词不再渲染（老板：「第二行怎么会有两个黄尾袋鼠」）、旧独立促销行已删
   ⇒ 对应的 `.mkx-sub-kw` / `.mkx-tt-promo` 两条死规则同步删除 */
#page-market .mkx-tt-sub {
  font-size: 10.5px; color: var(--ink-3); margin-top: 1px;
  display: flex; align-items: center; gap: 6px; flex-wrap: nowrap; overflow: hidden;
}
#page-market .mkx-sub-id { font-variant-numeric: tabular-nums; white-space: nowrap; }
/* ★ 第 77 轮（老板）：「商品ID旁边那个黄尾袋鼠 的字应该也是跟商品ID一样的颜色 灰色的」
   ⇒ 品牌段与 ID 段同色（--ink-3）。字重仍是 600（老板只提颜色）。 */
#page-market .mkx-sub-brand {
  color: var(--ink-3); font-weight: 600; white-space: nowrap;
  overflow: hidden; text-overflow: ellipsis; max-width: 110px;
}
#page-market .mkx-sub-tag {
  display: inline-flex; align-items: center; flex: none;
  padding: 0 5px; border-radius: 4px; font-size: 10px; line-height: 15px; font-weight: 600;
  color: #475467; background: #f2f4f7; border: 1px solid #e4e7ec; white-space: nowrap;
}
/* ★ 第 76 轮（老板格式：`ID 品牌 标签 包邮`）——「包邮」＝promoText 并入本行的末位段
   （旧 `.mkx-tt-promo` 独立行已随 U8 下线，其样式已在本轮清理） */
#page-market .mkx-sub-promo {
  color: #b54708; font-weight: 600; white-space: nowrap;
  overflow: hidden; text-overflow: ellipsis; max-width: 118px;
}
#page-market td.mkx-c-sh { max-width: 132px; }
#page-market .mkx-sh {
  display: block; color: var(--ink-2); font-size: 12px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
#page-market .mkx-price { font-weight: 660; color: var(--ink-1); font-size: 13px; }
#page-market .mkx-price-sub { font-size: 10.5px; color: var(--ink-3); margin-top: 1px; }
#page-market td.mkx-c-time { color: var(--ink-2); font-size: 11.5px; white-space: nowrap; }
#page-market .mkx-dev { white-space: nowrap; font-weight: 620; font-size: 12.5px; font-variant-numeric: tabular-nums; }
#page-market .mkx-dev > i { font-size: 10px; margin-right: 2px; }
#page-market .mkx-dev.is-none { color: var(--ink-3); font-weight: 500; }

/* ---------------- 分页 ---------------- */
#page-market .mkx-pager {
  display: flex; align-items: center; justify-content: space-between;
  gap: 8px; flex-wrap: wrap; margin-top: 9px;
}
#page-market .mkx-pager-info { font-size: 11.5px; color: var(--ink-3); }
#page-market .mkx-pager-btns { display: flex; align-items: center; gap: 4px; }
#page-market .mkx-pg-b {
  border: 1px solid var(--panel-line); background: #fff; cursor: pointer;
  font-size: 12px; color: var(--ink-2); padding: 4px 10px; border-radius: 8px;
  transition: background .14s, color .14s, border-color .14s;
}
#page-market .mkx-pg-b:hover:not(:disabled) { border-color: #c7cbd4; color: var(--ink-1); }
#page-market .mkx-pg-b:disabled { opacity: .42; cursor: default; }
#page-market .mkx-pg-now {
  min-width: 26px; text-align: center; font-size: 12px; font-weight: 620;
  color: var(--accent);
}

/* ---------------- 侧栏卡 ---------------- */
#page-market .mkx-scard {
  background: var(--panel-bg); border: 1px solid var(--panel-line);
  border-radius: 12px; padding: 11px 12px; box-shadow: var(--shadow-panel);
}
#page-market .mkx-scard > h5 {
  display: flex; align-items: center; gap: 6px; margin: 0 0 9px;
  font-size: 12.5px; font-weight: 620; color: var(--ink-1);
}
#page-market .mkx-scard > h5 > i { font-size: 12px; }
#page-market .mkx-scard > h5 > em {
  margin-left: auto; font-style: normal; font-weight: 500;
  font-size: 10.5px; color: var(--ink-3);
}
#page-market .mkx-side-empty { font-size: 11.5px; color: var(--ink-3); padding: 6px 0; line-height: 1.6; }

#page-market ol.mkx-rank { list-style: none; margin: 0; padding: 0; }
#page-market ol.mkx-rank > li {
  display: flex; gap: 7px; padding: 6px 0; cursor: pointer;
  border-bottom: 1px solid var(--panel-line-soft);
}
#page-market ol.mkx-rank > li:last-child { border-bottom: 0; padding-bottom: 0; }
#page-market ol.mkx-rank > li:hover .mkx-rank-t { color: var(--accent); }
#page-market .mkx-rank-n {
  flex: none; width: 17px; height: 17px; border-radius: 5px; margin-top: 1px;
  background: #f2f4f7; color: var(--ink-3); font-size: 10.5px; font-weight: 620;
  display: flex; align-items: center; justify-content: center;
}
#page-market .mkx-rank-n.is-top { background: #fee4e2; color: #b42318; }
#page-market .mkx-rank-b { flex: 1 1 auto; min-width: 0; }
#page-market .mkx-rank-t {
  font-size: 12px; color: var(--ink-1); white-space: nowrap;
  overflow: hidden; text-overflow: ellipsis; transition: color .14s;
}
#page-market .mkx-rank-bar {
  height: 4px; border-radius: 9999px; background: #f2f4f7;
  margin: 3px 0 3px; overflow: hidden;
}
#page-market .mkx-rank-bar > i {
  display: block; height: 100%; border-radius: 9999px;
  background: linear-gradient(90deg, #f97066, #b42318);
}
#page-market .mkx-rank-m {
  display: flex; align-items: baseline; gap: 6px; font-size: 10.5px; color: var(--ink-3);
}
#page-market .mkx-rank-m > span { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#page-market .mkx-rank-m > b { color: var(--ink-1); font-variant-numeric: tabular-nums; }
#page-market .mkx-rank-m > em { font-style: normal; font-weight: 620; color: #b42318; font-variant-numeric: tabular-nums; }

#page-market .mkx-dist { display: flex; flex-direction: column; gap: 6px; }
#page-market .mkx-dist-r { display: flex; align-items: center; gap: 7px; }
#page-market .mkx-dist-lb { flex: none; width: 62px; font-size: 11px; color: var(--ink-2); }
#page-market .mkx-dist-bar {
  flex: 1 1 auto; height: 8px; border-radius: 9999px; background: #f2f4f7;
  overflow: hidden; display: block;
}
#page-market .mkx-dist-bar > i {
  display: block; height: 100%; border-radius: 9999px;
  background: linear-gradient(90deg, #a5b4fc, #4f46e5);
}
#page-market .mkx-dist-r > b {
  flex: none; width: 34px; text-align: right; font-size: 11.5px;
  color: var(--ink-1); font-variant-numeric: tabular-nums;
}
#page-market .mkx-dist-note { font-size: 10.5px; color: var(--ink-3); margin-top: 2px; line-height: 1.5; }

#page-market ul.mkx-tasks { list-style: none; margin: 0; padding: 0; }
#page-market ul.mkx-tasks > li {
  display: flex; gap: 7px; align-items: flex-start; padding: 6px 0;
  border-bottom: 1px solid var(--panel-line-soft);
}
#page-market ul.mkx-tasks > li:last-child { border-bottom: 0; padding-bottom: 0; }
#page-market .mkx-tag {
  flex: none; font-size: 10.5px; border-radius: 9999px; padding: 1px 7px;
  font-weight: 560; white-space: nowrap;
}
#page-market .mkx-task-b { min-width: 0; flex: 1 1 auto; }
#page-market .mkx-task-t {
  font-size: 12px; color: var(--ink-1); white-space: nowrap;
  overflow: hidden; text-overflow: ellipsis;
}
#page-market .mkx-task-m { font-size: 10.5px; color: var(--ink-3); margin-top: 1px; }

/* ---------------- 弹窗（新增/编辑、详情） ----------------
   弹窗挂到 <body> 下（不在 #page-market 里），所以这批选择器不带页面前缀；
   靠 `mkx-` 这个全站唯一前缀保证不误伤其它页。 */
.mkx-mask {
  position: fixed; inset: 0; z-index: 320;
  display: flex; align-items: center; justify-content: center;
  background: rgba(16, 24, 40, .44); padding: 20px;
}
.mkx-modal {
  width: 100%; max-width: 452px; max-height: 88vh; overflow: hidden;
  background: #fff; border-radius: 16px; box-shadow: 0 24px 64px rgba(16,24,40,.22);
  display: flex; flex-direction: column;
}
.mkx-modal.is-wide { max-width: 720px; }
.mkx-modal-h {
  flex: none; display: flex; align-items: center; justify-content: space-between;
  padding: 14px 18px; border-bottom: 1px solid var(--panel-line);
}
.mkx-modal-h > h4 { margin: 0; font-size: 14.5px; font-weight: 660; color: var(--ink-1); }
.mkx-x {
  border: 0; background: transparent; cursor: pointer; color: var(--ink-3);
  font-size: 15px; padding: 2px 6px; border-radius: 7px; line-height: 1;
}
.mkx-x:hover { background: #f2f4f7; color: var(--ink-1); }
.mkx-modal-b { padding: 14px 18px; overflow-y: auto; }
.mkx-modal-f {
  flex: none; display: flex; justify-content: flex-end; gap: 8px;
  padding: 11px 18px; border-top: 1px solid var(--panel-line); background: #fbfcfd;
}
.mkx-field { display: block; margin-bottom: 11px; }
.mkx-field > span { display: block; font-size: 11.5px; color: var(--ink-2); margin-bottom: 4px; }
.mkx-field > span > i { color: #b42318; font-style: normal; }
.mkx-field > input, .mkx-field > select {
  width: 100%; box-sizing: border-box; border: 1px solid var(--panel-line);
  border-radius: 9px; padding: 8px 10px; font-size: 13px; color: var(--ink-1);
  background: #fff; outline: 0; transition: border-color .14s, box-shadow .14s;
}
.mkx-field > input:focus {
  border-color: var(--accent); box-shadow: 0 0 0 3px rgba(79,70,229,.12);
}
.mkx-field-row { display: flex; gap: 10px; }
.mkx-field-row > .mkx-field { flex: 1 1 0; min-width: 0; }
.mkx-field-note { display: block; font-size: 10.5px; color: var(--ink-3); margin: -4px 0 10px; line-height: 1.55; }
.mkx-plat-pick { display: flex; gap: 6px; flex-wrap: wrap; }
.mkx-plat-p {
  display: inline-flex; align-items: center; gap: 5px; cursor: pointer;
  border: 1px solid var(--panel-line); background: #fff; border-radius: 9999px;
  padding: 5px 12px; font-size: 12.5px; color: var(--ink-2);
  transition: border-color .14s, background .14s, color .14s;
}
.mkx-plat-p.is-on { border-color: var(--accent); background: #eef2ff; color: var(--accent); font-weight: 600; }
.mkx-plat-dot { width: 7px; height: 7px; border-radius: 9999px; }
.mkx-check { display: flex; align-items: center; gap: 7px; font-size: 12.5px; color: var(--ink-2); cursor: pointer; }
.mkx-check > input { accent-color: var(--accent); width: 14px; height: 14px; }

/* ---------------- 第 62 轮：标题跳转 + 参数小字 ---------------- */
#page-market .mkx-tt-link {
  color: var(--ink-1); text-decoration: none;
  display: inline-flex; align-items: center; gap: 4px; max-width: 100%;
}
#page-market .mkx-tt-link > span { overflow: hidden; text-overflow: ellipsis; }
#page-market .mkx-tt-link:hover { color: var(--accent); text-decoration: underline; }
#page-market .mkx-tt-link > i { font-size: 9px; color: var(--ink-3); opacity: .75; flex: none; }
#page-market .mkx-tt-link:hover > i { color: var(--accent); opacity: 1; }
#page-market .mkx-tt-link.is-guess > i { opacity: .4; }
#page-market .mkx-thumb-w.is-link.is-guess { border-style: dashed; }
#page-market .mkx-thumb-w.is-link.is-guess:hover { border-color: #94a3b8; box-shadow: 0 0 0 2px rgba(100,116,139,.18); }
#page-market .mkx-tt.is-nolink { cursor: pointer; }
#page-market td.mkx-c-min { width: 66px; max-width: 66px; }
#page-market .mkx-txt {
  display: block; color: var(--ink-2); font-size: 11.5px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
#page-market .mkx-dimv { color: #cbd5e1; }
#page-market .mkx-thumb-w.is-link { transition: border-color .14s, box-shadow .14s; }
#page-market .mkx-thumb-w.is-link:hover { border-color: var(--accent); box-shadow: 0 0 0 2px rgba(79,70,229,.14); }
#page-market .mkx-thumb { transition: transform .18s; }
  #page-market .mkx-thumb-w.is-link:hover > img.mkx-thumb { transform: scale(1.05); }

/* 详情弹窗 */
.mkx-dt-top { display: flex; gap: 14px; margin-bottom: 12px; }
.mkx-dt-img {
  flex: none; width: 122px; height: 122px; border-radius: 12px; overflow: hidden;
  background: #f2f4f7; border: 1px solid var(--panel-line-soft);
  display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-size: 20px;
}
.mkx-dt-img > img { width: 100%; height: 100%; object-fit: cover; display: block; }
.mkx-dt-meta { flex: 1 1 auto; min-width: 0; }
.mkx-dt-title { font-size: 13.5px; font-weight: 600; color: var(--ink-1); line-height: 1.45; }
.mkx-dt-sub {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  font-size: 11.5px; color: var(--ink-3); margin: 5px 0 9px;
}
.mkx-dt-prices { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
.mkx-dtp {
  background: #fbfcfd; border: 1px solid var(--panel-line-soft);
  border-radius: 9px; padding: 7px 9px; min-width: 0;
}
.mkx-dtp > em {
  display: block; font-style: normal; font-size: 10.5px; color: var(--ink-3);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.mkx-dtp > b {
  display: block; font-size: 14px; font-weight: 660; color: var(--ink-1);
  margin-top: 2px; font-variant-numeric: tabular-nums;
}
.mkx-dtp > b.mkx-dim { color: var(--ink-2); font-weight: 560; }
.mkx-dt-sub2 { font-size: 11.5px; color: var(--ink-3); margin-top: 9px; }
.mkx-dt-link {
  display: inline-block; margin-top: 6px; font-size: 11.5px;
  color: var(--accent); text-decoration: none;
}
.mkx-dt-link:hover { text-decoration: underline; }
.mkx-chart-w { height: 168px; margin: 4px 0 10px; }
.mkx-hist-wrap { border: 1px solid var(--panel-line-soft); border-radius: 10px; overflow: hidden; }
table.mkx-hist { width: 100%; border-collapse: collapse; }
table.mkx-hist thead th {
  background: #fbfcfd; font-size: 11px; font-weight: 560; color: var(--ink-3);
  text-align: left; padding: 6px 10px; border-bottom: 1px solid var(--panel-line-soft);
}
table.mkx-hist tbody td {
  font-size: 12px; color: var(--ink-1); padding: 5px 10px;
  border-bottom: 1px solid var(--panel-line-soft); font-variant-numeric: tabular-nums;
}
table.mkx-hist tbody tr:last-child td { border-bottom: 0; }
.mkx-dt-title-link { color: var(--ink-1); text-decoration: none; }
.mkx-dt-title-link:hover { color: var(--accent); text-decoration: underline; }
.mkx-dt-title-link > i { font-size: 10px; color: var(--ink-3); margin-left: 4px; }
.mkx-dt-title-link:hover > i { color: var(--accent); }
.mkx-dt-links { display: flex; gap: 14px; flex-wrap: wrap; }
.mkx-dt-params {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 1px; background: var(--panel-line-soft);
  border: 1px solid var(--panel-line-soft); border-radius: 10px;
  overflow: hidden; margin: 0 0 11px;
}
.mkx-dt-param { background: #fbfcfd; padding: 7px 10px; min-width: 0; }
.mkx-dt-pk { display: block; font-style: normal; font-size: 10.5px; color: var(--ink-3); }
.mkx-dt-pv {
  display: block; font-size: 12.5px; font-weight: 560; color: var(--ink-1);
  margin-top: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.mkx-dt-pv > a { color: var(--accent); text-decoration: none; }
.mkx-dt-pv > a:hover { text-decoration: underline; }
.mkx-dt-pv > a > i { font-size: 10px; }
.mkx-dt-pv .mkx-dimv { color: #cbd5e1; }   /* 弹窗挂在 body 下，不吃 #page-market 前缀那条 */

/* ---------------- 第 63 轮：规格分档控价 + 任务取消 ----------------
   ★ 插在第一个 @media 之前 —— 遵守本文件「@media 必须留在最末尾」的既有规矩。 */

/* 编辑弹窗里的分档编辑器 */
.mkx-tiers { display: flex; flex-direction: column; gap: 6px; }
.mkx-trow {
  display: grid; grid-template-columns: 1.05fr 1.35fr .78fr .78fr 26px;
  gap: 5px; align-items: center;
}
.mkx-ti {
  width: 100%; box-sizing: border-box; border: 1px solid var(--panel-line);
  border-radius: 8px; padding: 6px 8px; font-size: 12px; color: var(--ink-1);
  background: #fff; outline: 0; min-width: 0;
}
.mkx-ti:focus { border-color: var(--accent); box-shadow: 0 0 0 3px rgba(79,70,229,.12); }
.mkx-ti.is-num { text-align: right; font-variant-numeric: tabular-nums; }
.mkx-tdel {
  border: 1px solid var(--panel-line); background: #fff; border-radius: 8px;
  width: 26px; height: 26px; cursor: pointer; color: var(--ink-3); font-size: 11px;
  display: flex; align-items: center; justify-content: center; padding: 0;
}
.mkx-tdel:hover { border-color: #fda29b; color: #b42318; background: #fef3f2; }
.mkx-tiers-ops { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 7px; }
.mkx-tiers-hint { font-size: 10.5px; color: var(--ink-3); }
.mkx-field-note > code {
  background: #f2f4f7; border-radius: 4px; padding: 0 4px;
  font-size: 10.5px; color: #3538cd;
}

/* 任务卡上的取消按钮 + 「取消全部未完成」 */
#page-market .mkx-tcancel {
  flex: none; border: 1px solid var(--panel-line); background: #fff;
  border-radius: 7px; width: 24px; height: 24px; padding: 0; cursor: pointer;
  color: var(--ink-3); font-size: 10.5px;
  display: flex; align-items: center; justify-content: center;
}
#page-market .mkx-tcancel:hover { border-color: #fda29b; color: #b42318; background: #fef3f2; }
#page-market .mkx-tcancel:disabled { opacity: .5; cursor: default; }
#page-market .mkx-tcancel-all {
  width: 100%; margin-top: 9px; justify-content: center;
  color: #b42318; border-color: #fda29b;
}
#page-market .mkx-tcancel-all:hover { background: #fef3f2; }


   弹窗/浮层挂在 body 下 ⇒ 这几个类必须**同时**写带 #page-market 前缀与不带前缀两条。 */
#page-market .mkx-spec-mark, .mkx-spec-mark {
  display: inline-block; margin-left: 4px; padding: 0 4px; font-size: 9px;
  border-radius: 3px; background: rgba(100, 116, 139, .14); color: #475569;
}
#page-market .mkx-spec-mark.is-price, .mkx-spec-mark.is-price {
  background: rgba(180, 120, 10, .16); color: #8a5a00;
}
#page-market .mkx-thumb-w { cursor: zoom-in; }
/* 悬停放大浮层：跟随鼠标、绝不挡操作 */
.mkx-zoom {
  position: fixed; left: -9999px; top: -9999px; z-index: 9600; width: 300px;
  padding: 8px; border-radius: 12px; background: #fff; border: 1px solid rgba(15, 23, 42, .12);
  box-shadow: 0 12px 32px rgba(15, 23, 42, .18); opacity: 0; visibility: hidden;
  transform: scale(.96); transition: opacity .12s, transform .12s, visibility .12s;
  pointer-events: none;
}
.mkx-zoom.is-on { opacity: 1; visibility: visible; transform: scale(1); }
.mkx-zoom-img {
  display: block; width: 100%; height: 284px; object-fit: contain;
  background: #fff; border-radius: 8px;
}
.mkx-zoom-cap { margin-top: 6px; font-size: 11px; line-height: 1.5; color: #334155; }
.mkx-zoom-cap b {
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
  font-weight: 600; color: #0f172a;
}
.mkx-zoom-cap span { color: #64748b; }
/* 分档编辑区的「样本依据」备注行（跨 5 列） */
.mkx-trow-note {
  grid-column: 1 / -1; margin-top: 4px; font-size: 10px; line-height: 1.5; color: #64748b;
}

/* 分档编辑区：重复 match 提示（橙） */
.mkx-tiers-warn {
  margin-top: 6px; padding: 6px 8px; border-radius: 7px; font-size: 10.5px; line-height: 1.5;
  background: rgba(242, 181, 68, .13); border: 1px solid rgba(180, 120, 10, .32); color: #8a5a00;
}
.mkx-tiers-warn > i { margin-right: 4px; }
.mkx-tiers-warn code {
  padding: 0 4px; border-radius: 4px; background: rgba(180, 120, 10, .14);
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
}
/* ---------------- 窄屏 ---------------- */
/* ---- 第 69 轮：把「采到但没露脸」的字段显示出来（广告位标记） ----
   保留色避让：涨 #e5484d / 跌 #12a150 / 未归类 #f2b544 / 其他 #cbd5e1 都不用。 */
#page-market .mkx-ad-tag {
  display: inline-block; margin-left: 4px; padding: 0 5px;
  border-radius: 4px; font-size: 11px; line-height: 16px; font-weight: 600;
  color: #b45309; background: #fef3c7; border: 1px solid #fde68a;
  vertical-align: middle; white-space: nowrap;
}
/* 弹窗挂在 body 下 ⇒ 不带页面前缀 */
.mkx-ad-chip {
  display: inline-block; padding: 0 6px; border-radius: 4px;
  font-size: 11px; line-height: 17px; font-weight: 600;
  color: #b45309; background: #fef3c7; border: 1px solid #fde68a;
}

@media (max-width: 1250px) {
  #page-market .mkx-layout { grid-template-columns: minmax(0, 1fr) 268px; }
}
@media (max-width: 1080px) {
  #page-market .mkx-layout { grid-template-columns: minmax(0, 1fr); }
  #page-market .mkx-side { flex-direction: row; flex-wrap: wrap; }
  #page-market .mkx-side > .mkx-scard { flex: 1 1 280px; }
}
@media (max-width: 880px) {
  #page-market .mkx-kpis { grid-template-columns: repeat(auto-fit, minmax(148px, 1fr)); }
  #page-market .mkx-dt-top { flex-direction: column; }
  #page-market .mkx-dt-prices { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* ================= 第 70 轮（2026-10-13）：关注 / 逐 SKU 控价 / 图片搜索 / 项目条 ================= */
/* ★ 第 90 轮 P：关注列挪到图片前 + 改成开关窗体（老板：「五角星控件移到图片前、做成开关窗体」） */
.mkx-c-fav{width:46px;text-align:center}
.mkx-fav{background:none;border:0;cursor:pointer;padding:0;font-size:14px;line-height:1}
/* ★★★ 第 90 轮 AB（老板）：「开关要用五角星的图标，跟自动采集那个一样就行」
   ⇒ 几何与 .mkx-pauto-sw 完全一致（30×16、钮 12×12），钮里那颗五角星 9px 才看得清。 */
.mkx-favsw{position:relative;display:inline-block;width:30px;height:16px;border-radius:8px;background:#e2e8f0;border:1px solid #d8dee9;transition:background .16s,border-color .16s,box-shadow .16s;vertical-align:middle}
.mkx-favsw:hover{border-color:#f59e0b}
.mkx-favsw:focus-visible{outline:2px solid rgba(245,158,11,.45);outline-offset:1px}
.mkx-favsw > .mkx-favsw-k{position:absolute;top:1px;left:1px;width:12px;height:12px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(16,24,40,.18);display:flex;align-items:center;justify-content:center;font-size:9px;line-height:1;color:#94a3b8;font-style:normal;transition:left .16s,color .16s}
.mkx-favsw.is-on{background:#f59e0b;border-color:#f59e0b}
.mkx-favsw.is-on > .mkx-favsw-k{left:16px;color:#f59e0b}
/* ★★★ 第 90 轮 AD（老板）：钮里不放图标（跟「自动采集」那条开关完全一致）；
   项目总闸关着时略微变淡，但仍可点（点了只写单品开关，不会删关注）。 */
.mkx-favsw.is-gated{opacity:.72}
.mkx-favsw.is-gated:hover{border-color:#cbd5e1;opacity:.9}
/* ★ 第 90 轮 AE：单品行里的自动采集开关（与项目条同款），只补行内对齐 */
.mkx-favsw--auto{display:inline-block;vertical-align:middle;flex:0 0 auto;margin:0}

/* ★ 第 90 轮 AB：批量移动到分组 —— 第二步的面包屑 + 「换分组」 */
.mkx-bpp-crumb{display:flex;align-items:center;gap:8px;font-size:12px;color:#64748b;background:#f8fafc;border:1px solid #e8edf5;border-radius:8px;padding:6px 10px;margin-bottom:8px}
.mkx-bpp-crumb b{color:#0f172a;font-weight:600}
.mkx-bpp-back{margin-left:auto;display:inline-flex;align-items:center;gap:5px;border:1px solid #e2e8f0;background:#fff;border-radius:6px;padding:3px 8px;font-size:11.5px;color:#475569;cursor:pointer}
.mkx-bpp-back:hover{border-color:#d97706;color:#b45309}
/* 项目条上的项目级总闸 */
.mkx-pauto{display:inline-flex;align-items:center;gap:7px;border:1px solid #e6eaf2;background:#fff;border-radius:999px;padding:3px 11px 3px 5px;font-size:12px;color:#64748b;cursor:pointer;transition:border-color .14s,color .14s,background .14s}
.mkx-pauto:hover{border-color:#f59e0b}
.mkx-pauto.is-on{border-color:#f59e0b;color:#b45309;background:#fffbeb}
.mkx-pauto-sw{position:relative;display:inline-block;width:30px;height:16px;border-radius:8px;background:#e2e8f0;transition:background .16s}
.mkx-pauto.is-on .mkx-pauto-sw{background:#f59e0b}
.mkx-pauto-k{position:absolute;top:2px;left:2px;width:12px;height:12px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(16,24,40,.18);transition:left .16s}
.mkx-pauto.is-on .mkx-pauto-k{left:16px}
#page-market .mkx-sw.is-off{opacity:.55;cursor:not-allowed}
#page-market .mkx-sw.is-off > span{text-decoration:none}
.mkx-fav-b{display:inline-flex;align-items:center;gap:6px;border:1px solid #e2e8f0;background:#fff;border-radius:8px;padding:5px 10px;font-size:13px;cursor:pointer;color:#475569}
.mkx-fav-b.is-on{border-color:#f59e0b;color:#b45309;background:#fffbeb}
.mkx-fbox{margin-top:12px;border:1px solid #e6eaf2;border-radius:12px;background:#fbfcfe;padding:12px 14px}
.mkx-fbox-h{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.mkx-fbox-src{margin-left:auto;font-size:12px;color:#64748b}
.mkx-fbox-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:10px}
.mkx-fbox-f{display:flex;align-items:center;gap:12px;margin-top:10px;flex-wrap:wrap}
.mkx-fbox-note{font-size:12px;color:#64748b;line-height:1.5;flex:1 1 320px}
.mkx-projbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:#f6f8fc;border:1px solid #e6eaf2;border-radius:12px;padding:8px 12px;margin-bottom:10px}
.mkx-projbar-t{font-size:14px;color:#0f172a}
.mkx-projbar-b{font-size:12px;color:#475569;background:#eef2f7;border-radius:6px;padding:1px 7px}
.mkx-projbar-i{font-size:12px;color:#475569;background:#fff;border:1px solid #e6eaf2;border-radius:6px;padding:2px 8px}
.mkx-imgpick{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.mkx-imgpick-p{width:96px;height:96px;border:1px dashed #cbd5e1;border-radius:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;color:#94a3b8;font-size:11px;overflow:hidden;background:#fafbfd}
.mkx-imgpick-p img{width:100%;height:100%;object-fit:cover}
.mkx-imgpick-p em{font-style:normal}
.mkx-fbox .mkx-field span{font-size:12px}
.mkx-fbox .mkx-field input[type=number],.mkx-fbox .mkx-field input[type=text]{width:100%}
@media (max-width:900px){.mkx-fbox-row{grid-template-columns:1fr}}

@media (max-width: 640px) {
  #page-market .mkx-search { flex-basis: 100%; }
  #page-market .mkx-spacer { display: none; }
  #page-market .mkx-wbar { grid-template-columns: minmax(0, 1fr); }
  /* 第 63 轮：分档编辑行塌成两列（弹窗挂在 body 下 ⇒ 不带页面前缀） */
  .mkx-trow { grid-template-columns: 1fr 1fr; }
  .mkx-trow > .mkx-tdel { grid-column: 2 / 3; justify-self: end; }
}
/* ================= 第 71 轮（2026-10-13）：左侧项目列表框 / 商品加入项目 / SKU 详情模版 =================
   弹窗挂在 body 下 ⇒ 弹窗内的类（.mkx-pp-* / .mkx-dcard*）必须**不带** #page-market 前缀。
   保留色避让：涨 #e5484d / 跌 #12a150 / 未归类 #f2b544 / 其他 #cbd5e1 都不用。 */

/* ---- 三栏布局：项目列表 | 商品表 | 分布·任务 ---- */
#page-market .mkx-layout { grid-template-columns: 236px minmax(0, 1fr) 302px; }
#page-market .mkx-plist {
  min-width: 0; background: var(--panel-bg); border: 1px solid var(--panel-line);
  border-radius: 12px; padding: 10px; display: flex; flex-direction: column; gap: 6px;
}
#page-market .mkx-pl-head { display: flex; align-items: center; gap: 6px; padding: 2px 2px 6px; }
#page-market .mkx-pl-head > i { color: var(--ink-3); font-size: 12px; }
#page-market .mkx-pl-head > b { font-size: 13px; color: var(--ink-1); }
#page-market .mkx-pl-n {
  font-size: 11px; color: var(--ink-3); background: #f2f4f7; border-radius: 9999px;
  padding: 1px 7px; line-height: 15px;
}
#page-market .mkx-pl-add {
  margin-left: auto; border: 1px solid var(--panel-line); background: #fff; border-radius: 8px;
  width: 24px; height: 24px; cursor: pointer; color: var(--ink-2); font-size: 11px; padding: 0;
  display: flex; align-items: center; justify-content: center;
}
#page-market .mkx-pl-add:hover { border-color: var(--accent); color: var(--accent); }
#page-market .mkx-pl-grp { display: flex; flex-direction: column; gap: 4px; margin-top: 6px; }
/* ★ 第 75 轮（老板）：「左侧项目窗体改成这种可以收起来的」⇒ 组头变可点折叠按钮 */
#page-market .mkx-pl-grp-h {
  display: flex; align-items: center; gap: 6px; width: 100%; text-align: left;
  border: 0; background: transparent; cursor: pointer; margin: 0; padding: 5px 2px;
  font-size: 11.5px; font-weight: 620; color: var(--ink-3);
}
#page-market .mkx-pl-grp-h:hover { color: var(--accent); }
#page-market .mkx-pl-grp-h > i { font-size: 10.5px; }
#page-market .mkx-pl-grp.is-focus > .mkx-pl-grp-h { color: #b45309; }
#page-market .mkx-pl-grp-h > em {
  font-style: normal; margin-left: auto; font-size: 10.5px; color: var(--ink-3);
  background: #f2f4f7; border-radius: 9999px; padding: 0 6px; line-height: 15px;
}
#page-market .mkx-pl-grp-b { display: none; flex-direction: column; gap: 4px; }
#page-market .mkx-pl-grp.is-open > .mkx-pl-grp-b { display: flex; }
#page-market .mkx-pl-chev { font-size: 9.5px; width: 10px; flex: none; opacity: .75; }
#page-market .mkx-pl-i {
  display: flex; align-items: flex-start; gap: 7px; cursor: pointer;
  border: 1px solid transparent; border-radius: 9px; padding: 7px 8px;
  transition: background .14s, border-color .14s;
}
#page-market .mkx-pl-i:hover { background: #f8fafc; border-color: var(--panel-line); }
#page-market .mkx-pl-i.is-on { background: #eef2ff; border-color: var(--accent); }
#page-market .mkx-pl-i.is-off { opacity: .6; }
#page-market .mkx-pl-i .mkx-dot { margin-top: 5px; }
#page-market .mkx-pl-b {
  min-width: 0; flex: 1 1 auto; display: flex; align-items: center; flex-wrap: wrap; gap: 4px;
}
#page-market .mkx-pl-t {
  font-size: 12.5px; font-weight: 620; color: var(--ink-1); max-width: 100%;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
#page-market .mkx-pl-brand { font-size: 10px; color: var(--ink-3); }
#page-market .mkx-pl-m { flex: 1 1 100%; font-size: 10.5px; color: var(--ink-3); line-height: 1.5; }
#page-market .mkx-pl-a { color: #b42318; }
#page-market .mkx-pl-ops { display: none; gap: 1px; flex: none; }
#page-market .mkx-pl-i:hover .mkx-pl-ops,
#page-market .mkx-pl-i.is-on .mkx-pl-ops { display: flex; }
#page-market .mkx-pl-i .mkx-ibtn { padding: 3px 4px; font-size: 11px; }
#page-market .mkx-pl-empty { font-size: 10.5px; color: var(--ink-3); line-height: 1.5; padding: 4px 6px; }

/* ---- 主表「项目」列 ---- */
#page-market .mkx-c-proj { width: 92px; }
#page-market .mkx-proj-chip {
  display: inline-flex; align-items: center; gap: 4px; max-width: 100%;
  border: 1px dashed var(--panel-line); background: #fff; border-radius: 9999px;
  padding: 1px 7px; font-size: 10.5px; line-height: 17px; cursor: pointer; color: var(--ink-3);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
#page-market .mkx-proj-chip:hover { border-color: #d97706; color: #b45309; background: #fffbeb; }
#page-market .mkx-proj-chip.is-on {
  border-style: solid; border-color: #f59e0b; color: #b45309; background: #fffbeb; font-weight: 600;
}
#page-market .mkx-proj-chip.is-loose {
  border-style: solid; border-color: var(--panel-line); color: var(--ink-3); background: #f8fafc;
}
#page-market .mkx-projbar-k {
  font-size: 10.5px; font-weight: 620; color: #475467; background: #eef2f7;
  border-radius: 6px; padding: 1px 7px;
}
#page-market .mkx-projbar-k.is-focus { color: #b45309; background: #fef3c7; }

/* ---- 项目选择弹窗（挂 body 下 ⇒ 不带页面前缀） ---- */
.mkx-modal.is-narrow { max-width: 440px; }
.mkx-pp-sku { font-size: 12.5px; color: var(--ink-2); margin-bottom: 10px; }
.mkx-pp-sku > i { margin-right: 5px; color: var(--ink-3); }
.mkx-pp-list { display: flex; flex-direction: column; gap: 6px; max-height: 260px; overflow: auto; }
.mkx-pp-i {
  display: flex; align-items: center; gap: 8px; width: 100%; text-align: left; cursor: pointer;
  border: 1px solid var(--panel-line); background: #fff; border-radius: 9px; padding: 8px 10px;
  font-size: 12.5px; color: var(--ink-1);
}
.mkx-pp-i:hover { border-color: #d97706; background: #fffbeb; }
.mkx-pp-i.is-on { border-color: #f59e0b; background: #fffbeb; }
.mkx-pp-i > i { color: #d97706; font-size: 11px; }
.mkx-pp-i > em { font-style: normal; font-size: 10.5px; color: var(--ink-3); }
.mkx-pp-n { margin-left: auto; font-size: 10.5px; color: var(--ink-3); }
.mkx-pp-ck { font-size: 10.5px; color: #b45309; }
.mkx-pp-new { display: flex; gap: 6px; margin-top: 10px; }
.mkx-pp-new > input {
  flex: 1 1 auto; min-width: 0; border: 1px solid var(--panel-line); border-radius: 8px;
  padding: 6px 9px; font-size: 12px; color: var(--ink-1); background: #fff; outline: 0;
}
.mkx-pp-off { margin-top: 8px; color: #b42318; border-color: #fda29b; }
.mkx-pp-off:hover { background: #fef3f2; }

/* ---- SKU 详情模版（详情弹窗内） ---- */
.mkx-dcard {
  margin-top: 12px; border: 1px solid #e6eaf2; border-radius: 12px;
  background: #fbfcfe; padding: 12px 14px;
}
.mkx-dcard > h5 {
  display: flex; align-items: center; gap: 7px; margin: 0 0 10px;
  font-size: 13px; color: var(--ink-1);
}
.mkx-dcard > h5 > i { color: var(--ink-3); font-size: 12px; }
.mkx-dcard-st { font-style: normal; font-size: 11px; color: var(--ink-3); font-weight: 400; }
.mkx-dcard-hint { font-size: 12px; color: #475569; line-height: 1.7; }
.mkx-dcard-err {
  margin-top: 8px; font-size: 12px; color: #b42318; background: #fef3f2;
  border: 1px solid #fda29b; border-radius: 8px; padding: 6px 9px;
}
.mkx-dcard-err > i { margin-right: 5px; }

/* ---- 窄屏（放在最后 ⇒ 覆盖本文件前面那两条旧 @media 的列数） ---- */
@media (max-width: 1400px) {
  #page-market .mkx-layout { grid-template-columns: 218px minmax(0, 1fr) 282px; }
}
@media (max-width: 1250px) {
  #page-market .mkx-layout { grid-template-columns: 206px minmax(0, 1fr) 262px; }
}
@media (max-width: 1080px) {
  #page-market .mkx-layout { grid-template-columns: 200px minmax(0, 1fr); }
  #page-market .mkx-side { grid-column: 1 / -1; flex-direction: row; flex-wrap: wrap; }
  #page-market .mkx-side > .mkx-scard { flex: 1 1 280px; }
}
@media (max-width: 880px) {
  #page-market .mkx-layout { grid-template-columns: minmax(0, 1fr); }
  #page-market .mkx-side { grid-column: auto; }
}

/* ================= 第 72 轮（2026-10-13）：右栏撤掉 · 价格分布顶部折叠 · 采集任务入左栏 =================
   老板：「价格分布放在标题上面，以隐藏点击出现的方式；采集任务放在其他位置；我要把商品价格窗体拉通页面」
   「左侧底部，然后左侧的项目框也要长一点吧。页面现在美观度太差了，文字多的要死。」
   ★ 本块追加在文件末尾（也即第 71 轮 @media 之后）⇒ 覆盖力最强；@media 必须留在**本文件最末尾**。 */

/* ---- 三栏 → 两栏：左（项目列表 + 采集任务）| 右（商品价格表拉通） ---- */
#page-market .mkx-layout {
  grid-template-columns: 264px minmax(0, 1fr);
  align-items: start;
}
/* ★ 老板「采集任务放左侧底部」「项目框长一点」：左栏贴顶跟随滚动，
   项目框给足高度（360~520）并可滚，采集任务钉在它下面 —— 两块都在首屏可见。 */
#page-market .mkx-lcol {
  min-width: 0; display: flex; flex-direction: column; gap: 12px;
  align-self: start; position: sticky; top: 12px;
}
#page-market .mkx-lcol > .mkx-plist {
  flex: 0 0 auto; min-height: 360px; max-height: 520px; overflow: auto;
}
#page-market .mkx-lcol > #mk-tbox { flex: 0 0 auto; max-height: 300px; overflow: auto; }
#page-market .mkx-side { display: none; }   /* 第 72 轮已撤掉右栏（保留选择器作反向守卫） */

/* ---- 价格分布：页标题之上的折叠条（默认收起） ---- */
#page-market .mkx-dwrap { margin: 0 0 12px; }
#page-market .mkx-distbar {
  display: flex; align-items: center; gap: 8px; width: 100%; text-align: left; cursor: pointer;
  border: 1px solid var(--panel-line); background: var(--panel-bg); border-radius: 10px;
  padding: 7px 12px; font-size: 12.5px; color: var(--ink-1); box-shadow: var(--shadow-panel);
  font-family: inherit;
}
#page-market .mkx-distbar:hover { border-color: var(--accent); }
#page-market .mkx-distbar > i { color: #4f46e5; font-size: 12px; }
#page-market .mkx-distbar > b { font-size: 12.5px; font-weight: 620; }
#page-market .mkx-distbar-m { font-size: 11.5px; color: var(--ink-3); }
#page-market .mkx-distbar-a { font-style: normal; color: #b42318; }
#page-market .mkx-distbar-chev {
  margin-left: auto; color: var(--ink-3); font-size: 11px; transition: transform .16s;
}
#page-market .mkx-distbar-chev > i { font-size: 11px; }
#page-market .mkx-dwrap.is-open .mkx-distbar-chev { transform: rotate(180deg); }
#page-market .mkx-distbody { display: none; }
#page-market .mkx-dwrap.is-open .mkx-distbody {
  display: block; margin-top: 8px; padding: 11px 13px;
  background: var(--panel-bg); border: 1px solid var(--panel-line);
  border-radius: 10px; box-shadow: var(--shadow-panel);
}
#page-market .mkx-distbody .mkx-dist { display: flex; flex-direction: column; gap: 7px; }

/* ---- 采集任务（左栏底部）：行更紧凑 ---- */
#page-market .mkx-lcol > #mk-tbox { padding: 10px 10px 12px; }
/* ★ 第 75 轮（老板）：「……底下的采集任务」也要能收起来 */
#page-market .mkx-lcol > #mk-tbox > .mkx-scard-h {
  display: flex; align-items: center; gap: 6px; width: 100%; text-align: left;
  border: 0; background: transparent; cursor: pointer; margin: 0 0 8px; padding: 0;
  font-size: 12.5px; font-weight: 620; color: var(--ink-1);
}
#page-market .mkx-lcol > #mk-tbox > .mkx-scard-h:hover { color: var(--accent); }
#page-market .mkx-lcol > #mk-tbox > .mkx-scard-h > i { font-size: 12px; color: #0e7490; }
#page-market .mkx-lcol > #mk-tbox > .mkx-scard-h > em {
  margin-left: auto; font-style: normal; font-weight: 500; font-size: 10.5px; color: var(--ink-3);
}
#page-market .mkx-lcol > #mk-tbox > .mkx-scard-h.is-fold + .mkx-scard-b { display: none; }
#page-market .mkx-dcard .ec-btn.is-busy { border-color: #fedf89; background: #fffaeb; color: #b54708; }
#page-market #mk-tbox ul.mkx-tasks > li { padding: 4px 0; gap: 6px; }
#page-market #mk-tbox .mkx-task-t { font-size: 11.5px; }
#page-market #mk-tbox .mkx-task-m { font-size: 10px; }

/* ================= 第 90 轮 R（2026-10-18）：批量选择 ================= */
.mkx-c-sel{width:34px;text-align:center}
.mkx-sel-cb,#mk-sel-all{width:14px;height:14px;accent-color:#f59e0b;cursor:pointer;vertical-align:middle;margin:0}
/* ---- 第 90 轮 AD：常驻工具条（老板：挪到「容量」下面 + UI 优化） ---- */
.mkx-batch{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:#fcfcfd;border:1px solid #e8edf5;border-radius:10px;padding:8px 12px;margin:2px 0 10px;transition:background .16s,border-color .16s,box-shadow .16s}
.mkx-batch.is-on{background:#fffbeb;border-color:#fde68a;box-shadow:0 1px 2px rgba(217,119,6,.07)}
.mkx-batch-n{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:#64748b;background:#fff;border:1px solid #e8edf5;border-radius:999px;padding:3px 10px;white-space:nowrap;transition:color .16s,border-color .16s}
.mkx-batch.is-on .mkx-batch-n{color:#b45309;border-color:#fde68a}
.mkx-batch-n b{font-size:13.5px;margin:0 1px;font-variant-numeric:tabular-nums}
.mkx-batch-tip{font-size:11.5px;color:#94a3b8;white-space:nowrap}
.mkx-batch .ec-btn{height:26px;padding:0 10px;font-size:12px;border-radius:8px}
.mkx-batch .ec-btn:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}
.mkx-batch .mkx-batch-main{border-color:#fcd34d;color:#b45309;background:#fff;font-weight:500}
.mkx-batch.is-on .mkx-batch-main{border-color:#f59e0b}
.mkx-batch .mkx-batch-x{border-color:transparent;background:transparent;color:#94a3b8}
.mkx-batch .mkx-batch-x:hover:not(:disabled){color:#b45309;background:#fff7ed;border-color:#fde68a}
/* ★ 第 90 轮 AE：勾选态下主操作实心化（老板：UI 优化一下） */
.mkx-batch.is-on .mkx-batch-n{background:#fff;color:#b45309;border-color:#fcd34d;font-weight:500}
.mkx-batch.is-on .mkx-batch-main{background:#f59e0b;border-color:#f59e0b;color:#fff}
.mkx-batch.is-on .mkx-batch-main:hover:not(:disabled){background:#d97706;border-color:#d97706;color:#fff}
@media (max-width: 1080px){
  .mkx-batch .mkx-batch-tip{display:none}
}

/* ---- 窄屏（必须留最末尾 ⇒ 覆盖本文件前面所有 @media 的列数） ---- */
@media (max-width: 1180px) {
  #page-market .mkx-layout { grid-template-columns: 232px minmax(0, 1fr); }
  #page-market .mkx-lcol > .mkx-plist { min-height: 300px; max-height: 420px; }
}
@media (max-width: 980px) {
  #page-market .mkx-layout { grid-template-columns: minmax(0, 1fr); }
  #page-market .mkx-lcol { position: static; }
  #page-market .mkx-lcol > .mkx-plist { min-height: 0; max-height: none; }
  #page-market .mkx-lcol > #mk-tbox { max-height: none; }
}


/* ==================================================================
   第 73 轮（2026-10-13）：平台归组 · 列改版 · 分档两格 · 标题筛选
   ------------------------------------------------------------------
   · 表单里的「?」提示（老板：所有解释字体都要隐藏，用 ? 表示）
   · 列表标题上的规格/分档筛选 chips（容量 / 瓶数 / 档位 三轴）
   · 商品列的「容量 / 瓶数」双标签 + 销售额
   · 分档编辑器改成「容量 + 瓶数」两格
   · 采集任务块的「排队中」行
   ★ 遵守本文件既有规矩：@media 一律留在**最末尾**。
   ================================================================== */

/* ---- 表单「?」提示：hover/聚焦「?」⇒ 在**字段里**展开一行说明，移开即消失 ----
   ★ 第 74 轮（老板）：「不要气泡的……还有有的字都在窗体外面了显示不全」
     ⇒ 丢掉绝对定位的气泡（会跑出弹窗边界被裁），改成**文档流 block**：
       它落在 .mkx-field > span（display:block）里 ⇒ 天然占一行，
       由弹窗内容区（overflow-y:auto）正常滚动 ⇒ **不可能显示不全、不可能出窗体**。
   ★ 提示元素与「?」是**兄弟**（`~` 选择器）⇒ 默认 display:none，移开立刻消失。 */
.mkx-help {
  display: inline-flex; align-items: center; justify-content: center;
  width: 14px; height: 14px; border-radius: 50%;
  font-size: 9.5px; line-height: 1; font-weight: 700; font-style: normal;
  color: #475467; background: #eef2f6; border: 1px solid var(--panel-line);
  cursor: help; margin-left: 4px; vertical-align: 1px;
  user-select: none; flex: none;
}
.mkx-help:hover, .mkx-help:focus { color: #fff; background: #3538cd; border-color: #3538cd; outline: 0; }
.mkx-help-tip { display: none; }
.mkx-help:hover ~ .mkx-help-tip,
.mkx-help:focus ~ .mkx-help-tip {
  display: block;
  margin: 5px 0 2px; padding: 6px 9px;
  background: #f5f7fa; border-left: 3px solid #3538cd; border-radius: 0 6px 6px 0;
  font-size: 11px; line-height: 1.6; color: var(--ink-2);
  font-style: normal; font-weight: 400; letter-spacing: 0;
  white-space: normal; word-break: break-word;
}

/* 多关键词输入框（textarea）沿用输入框的外观 */
.mkx-field > textarea {
  width: 100%; box-sizing: border-box; border: 1px solid var(--panel-line);
  border-radius: 8px; padding: 7px 9px; font-size: 12.5px; color: var(--ink-1);
  background: #fff; outline: 0; resize: vertical; min-height: 46px;
  font-family: inherit; line-height: 1.5;
}
.mkx-field > textarea:focus { border-color: var(--accent); box-shadow: 0 0 0 3px rgba(79, 70, 229, .12); }

/* ---- 分档编辑器：容量 + 瓶数 两格（不再手打 '750ml+1瓶'） ---- */
.mkx-trow { grid-template-columns: .92fr .58fr .8fr .8fr 26px; }
.mkx-ti.is-ml { font-variant-numeric: tabular-nums; }
.mkx-ti.is-pk { text-align: right; font-variant-numeric: tabular-nums; }

/* ---- 商品列：容量 / 瓶数 两个独立标签（老板：750ml 和 1 要分开） ---- */
#page-market .mkx-spec-tags {
  display: flex; flex-wrap: wrap; gap: 4px; margin-top: 3px;
}
#page-market .mkx-spec-tag {
  display: inline-flex; align-items: center;
  font-size: 10px; line-height: 16px; font-weight: 600;
  border-radius: 5px; padding: 0 5px; white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
#page-market .mkx-spec-tag.is-ml { color: #3538cd; background: #eef2ff; border: 1px solid #d6dcfb; }
/* ★ 第 76 轮（老板）：「没有标注 187ml 的 默认算成 750ml」⇒ 兜底值用**虚线框**区分
   （一眼看出这条的容量不是标题写的，是默认兜底的），颜色调淡一档避免抢眼。 */
#page-market .mkx-spec-tag.is-ml.is-def { border-style: dashed; color: #4b5589; background: #f6f7ff; }
#page-market .mkx-spec-tag.is-pk { color: #067647; background: #ecfdf3; border: 1px solid #abefc6; }
#page-market .mkx-spec-tag.is-push { color: #b54708; background: #fffaeb; border: 1px solid #fedf89; font-weight: 700; }

/* ---- 销售额列 ---- */
#page-market .mkx-gmv { font-variant-numeric: tabular-nums; font-weight: 650; color: var(--ink-1); }

/* ---- 列表标题上的规格/分档筛选 chips ---- */
#page-market .mkx-fchips-wrap {
  display: flex; flex-wrap: wrap; align-items: center; gap: 6px 14px;
  padding: 8px 10px; margin: 0 0 8px;
  background: var(--panel-bg); border: 1px solid var(--panel-line-soft);
  border-radius: 10px;
}
#page-market .mkx-fchips { display: flex; align-items: center; gap: 7px; flex-wrap: wrap; }
#page-market .mkx-fchips-l { font-size: 11.5px; color: var(--ink-3); margin-right: 2px; flex: none; }
/* ★ 第 75 轮（老板）：「这几个按钮做大一点 看不清」⇒ 字号/行高/内边距一起放大 */
#page-market .mkx-fchip {
  border: 1px solid var(--panel-line); background: #fff; color: var(--ink-2);
  font-size: 12.5px; line-height: 27px; border-radius: 9999px; padding: 0 13px;
  cursor: pointer; font-variant-numeric: tabular-nums; white-space: nowrap;
  transition: background .12s, color .12s, border-color .12s;
}
#page-market .mkx-fchip:hover { border-color: var(--accent); color: var(--accent); }
#page-market .mkx-fchip.is-on { background: #3538cd; border-color: #3538cd; color: #fff; font-weight: 600; }
#page-market .mkx-fchip.is-clear { margin-left: auto; color: #b54708; border-color: #fedf89; background: #fffaeb; }
#page-market .mkx-fchip.is-clear:hover { background: #fff4e5; border-color: #f79009; color: #b54708; }

/* ---- 采集任务块的「排队中」行（定时/限速排队时也要看得见） ---- */
#page-market ul.mkx-tasks > li.is-queued { opacity: .92; }
#page-market ul.mkx-tasks > li.is-queued .mkx-task-t { color: var(--ink-2); }
#page-market ul.mkx-tasks > li.is-queued .mkx-task-m { color: #b54708; }

/* ---- 采集任务：自动刷新指示（第 78 轮） ----
   老板：「采集任务 不是实时更新的，还要刷新一下才知道有没有完成」
   ⇒ 页面自己轮询，这里只把「它在自己刷新」显示出来（绿点呼吸 = 正在轮询）。 */
#page-market .mkx-live-dot {
  display: inline-block; flex: none; width: 7px; height: 7px; margin-left: 6px;
  border-radius: 9999px; background: #12b76a;
  box-shadow: 0 0 0 0 rgba(18, 183, 106, .55);
  animation: mkx-live-pulse 1.6s ease-out infinite;
}
#page-market .mkx-live-dot.is-off { background: #cbd5e1; animation: none; box-shadow: none; }
@keyframes mkx-live-pulse {
  0%   { box-shadow: 0 0 0 0 rgba(18, 183, 106, .55); }
  70%  { box-shadow: 0 0 0 6px rgba(18, 183, 106, 0); }
  100% { box-shadow: 0 0 0 0 rgba(18, 183, 106, 0); }
}
#page-market .mkx-live-note { margin-top: 6px; font-size: 10px; color: var(--ink-3); }
#page-market .mkx-live-note:empty { display: none; }

/* ================= 第 79 轮 =================
   老板（2026-10-14）：
     「左侧项目 的+主要就是 用来新建分组的，分组旁边可以弄一个+来加具体的任务。
       然后分组的形式要改成正儿八经的飞组的样式，现在看着不好看。」
     「这个全网监控的页面，可以加一些阴影 多一些按钮 少一些文字，美观度重点做起来。乱糟糟的难看死了。」
   ⇒ 本块四件事：① 飞书式分组；② 全局柔和阴影/圆角；③ 按钮更「像按钮」；④ 阿里妈妈券两列。
   ★ 追加在「窄屏 @media」**之前**（@media 必须留最末尾，它覆盖前面所有列数规则）。
   ============================================================ */

/* ---------- ① 左侧「项目」——飞书式分组 ---------- */
#page-market .mkx-plist { box-shadow: var(--shadow-panel); }
#page-market .mkx-pl-head { padding: 4px 4px 8px; gap: 7px; }
#page-market .mkx-pl-head > b { font-size: 13.5px; letter-spacing: .2px; }
#page-market .mkx-pl-n {
  font-size: 11px; color: var(--ink-3); background: #f1f3f7;
  border-radius: 9999px; padding: 1px 8px; font-variant-numeric: tabular-nums;
}
/* 顶部 + = 新建**分组**（老板指定的语义）
   ★★★ 第 89 轮（老板）：「他们自己的外面的框要把字体包进去」——
   主块那版是**纯图标方钮**（width/height 都是 24px、padding 0），这版加了图标 + 文字
   却没解掉宽度 ⇒ 框固定 24px、文字要 41/53px，实测 overflowX = 10/16，**文字溢出到边框外**。
   ⇒ 必须 `width: auto`，让框随内容撑开（这才是「框包住字」的根因修复）。 */
#page-market .mkx-pl-add {
  margin-left: auto; display: inline-flex; align-items: center; gap: 5px;
  width: auto; height: 26px; padding: 0 10px; border-radius: 7px; cursor: pointer;
  border: 1px solid var(--panel-line); background: #fff; color: var(--ink-2);
  font-size: 12px; font-weight: 600; transition: all .13s;
}
#page-market .mkx-pl-add:hover { border-color: var(--accent); color: var(--accent); background: #f5f7ff; }

/* 分组容器：飞书那种「一坨一坨」的呼吸感 */
#page-market .mkx-pl-grp { margin-top: 10px; }
#page-market .mkx-pl-grp-h {
  display: flex; align-items: center; gap: 6px; width: 100%;
  height: 32px; padding: 0 8px; border: 0; border-radius: 7px;
  background: transparent; cursor: pointer; text-align: left;
  font-size: 12.5px; font-weight: 600; color: var(--ink-1);
  transition: background .13s;
}
#page-market .mkx-pl-grp-h:hover { background: #f4f5f7; }
#page-market .mkx-pl-grp-h:hover .mkx-pl-gops { opacity: 1; }
#page-market .mkx-pl-grp-h > i.mkx-pl-chev { font-size: 9.5px; width: 10px; color: var(--ink-3); }
#page-market .mkx-pl-grp-h > i.mkx-pl-gi { font-size: 11.5px; color: var(--ink-3); }
#page-market .mkx-pl-grp-h > .mkx-pl-gn {
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0;
}
#page-market .mkx-pl-grp-h > em {
  font-style: normal; font-size: 11px; font-weight: 500; color: var(--ink-3);
  margin-left: 2px; font-variant-numeric: tabular-nums; flex: none;
  background: #f1f3f7; border-radius: 9999px; padding: 0 7px; line-height: 17px;
}
#page-market .mkx-pl-grp.is-focus > .mkx-pl-grp-h { color: #b45309; }
#page-market .mkx-pl-grp.is-focus > .mkx-pl-grp-h > em { background: #fef3c7; color: #b45309; }
/* 分组头上的「+ 加任务 / 改名 / 删组」
   ★★★ 第 89 轮（老板）：「每个分组的右侧要有个 + 号的新增任务的入口」——
   组尾那个常显的虚按钮删掉之后，如果 + 还要悬停才出现，**界面上就一个可见的「新建任务」入口都没有了**
   （实拍截图抓到的：三个分组一个 + 都看不见）。
   ⇒ 容器常显（opacity: 1）；「改名 / 删组」靠自身的 width:0 + opacity:0 继续藏（见下面两条规则），
   于是只有 + 号真正露出来。 */
#page-market .mkx-pl-gops { display: flex; gap: 1px; flex: none; margin-left: auto; opacity: 1; transition: opacity .13s; }
#page-market .mkx-pl-gops .mkx-ibtn { padding: 2px 5px; font-size: 10.5px; border-radius: 5px; }
#page-market .mkx-pl-grp-b { padding-left: 9px; margin-left: 9px; border-left: 1px solid #eef0f4; }
#page-market .mkx-pl-grp.is-open > .mkx-pl-grp-b { display: flex; }
/* ★★★ 第 89 轮（老板）：「每个项目下的新建任务不要了」+「回收站放在最下面去」
   ⇒ 组尾那个「+ 新建任务」虚按钮下线；分组列表最下面换成「回收站」整行条目。
   ★ 框同样要求**包住文字**：height 30 + padding 0 10 + width 100%（不是 24 的图标钮）。 */
#page-market .mkx-pl-trash {
  display: flex; align-items: center; justify-content: center; gap: 6px;
  width: 100%; height: 30px; margin-top: 12px; padding: 0 10px; box-sizing: border-box;
  border: 1px dashed var(--panel-line); border-radius: 7px; background: #fff;
  color: var(--ink-2); font-size: 12px; font-weight: 600; cursor: pointer;
  transition: all .13s;
}
#page-market .mkx-pl-trash:hover { border-color: var(--accent); color: var(--accent); background: #f5f7ff; }
#page-market .mkx-pl-empty { font-size: 11.5px; color: var(--ink-3); padding: 3px 4px; }

/* 项目条目：飞书列表那种「圆角块 + 悬停浅灰」 */
#page-market .mkx-pl-i { border-radius: 8px; transition: background .13s, border-color .13s; }
#page-market .mkx-pl-i:hover { background: #f4f5f7; border-color: transparent; }
#page-market .mkx-pl-i.is-on { background: #eef2ff; border-color: #c7d2fe; }
#page-market .mkx-pl-t { font-size: 12.5px; }
#page-market .mkx-pl-m { font-size: 11px; }

/* ---------- ② 全局柔和阴影 + 圆角（「多一些阴影」） ---------- */
#page-market .mkx-kpi {
  border-radius: 14px; border-color: #eef0f4;
  box-shadow: 0 1px 2px rgba(16, 24, 40, .04), 0 8px 20px -12px rgba(16, 24, 40, .16);
  transition: box-shadow .16s, transform .16s;
}
#page-market .mkx-kpi:hover { box-shadow: 0 2px 4px rgba(16, 24, 40, .05), 0 14px 28px -14px rgba(16, 24, 40, .22); transform: translateY(-1px); }
#page-market .mkx-tools {
  border-radius: 12px; border-color: #eef0f4;
  box-shadow: 0 1px 2px rgba(16, 24, 40, .04), 0 10px 22px -16px rgba(16, 24, 40, .18);
}
#page-market .mkx-tbwrap {
  border-radius: 14px; border-color: #eef0f4;
  box-shadow: 0 1px 2px rgba(16, 24, 40, .04), 0 12px 26px -18px rgba(16, 24, 40, .2);
}
#page-market .mkx-scard {
  border-radius: 12px; border-color: #eef0f4;
  box-shadow: 0 1px 2px rgba(16, 24, 40, .04), 0 10px 22px -16px rgba(16, 24, 40, .18);
}
#page-market .mkx-projbar {
  border-radius: 12px;
  box-shadow: 0 1px 2px rgba(16, 24, 40, .04), 0 8px 18px -14px rgba(16, 24, 40, .18);
}

/* ---------- ③ 按钮更「像按钮」（「多一些按钮」） ---------- */
#page-market .mkx-tools .ec-btn,
#page-market .mkx-plist .ec-btn,
#page-market .mkx-scard .ec-btn {
  border-radius: 8px; box-shadow: 0 1px 2px rgba(16, 24, 40, .05);
}
#page-market .mkx-tools .ec-btn:hover,
#page-market .mkx-scard .ec-btn:hover { box-shadow: 0 2px 6px rgba(16, 24, 40, .1); }
#page-market .mkx-seg {
  border-radius: 9px; border-color: #eef0f4;
  box-shadow: inset 0 1px 2px rgba(16, 24, 40, .03);
}
#page-market .mkx-seg-b { border-radius: 7px; }
#page-market .mkx-search { border-radius: 9px; }
#page-market .mkx-ibtn { border-radius: 7px; transition: background .12s, color .12s; }
/* 行内操作按钮只在悬停出现 —— 但**给了明显的悬停底**，不至于「看不见」 */
#page-market .mkx-pl-i:hover .mkx-ibtn { background: #fff; box-shadow: 0 1px 2px rgba(16, 24, 40, .06); }

/* ---------- ④ 阿里妈妈优惠券 / 券后价（第 79 轮新增两列） ---------- */
#page-market .mkx-c-mc { white-space: nowrap; }
#page-market .mkx-c-mc .mkx-mc {
  display: inline-block; max-width: 132px; overflow: hidden; text-overflow: ellipsis;
  vertical-align: middle; white-space: nowrap;
  font-size: 11px; line-height: 18px; padding: 0 7px; border-radius: 5px;
  color: #b54708; background: #fffaeb; border: 1px solid #fedf89;
}
#page-market .mkx-c-mp .mkx-mp { font-size: 13.5px; font-variant-numeric: tabular-nums; color: var(--ink-1); }
/* ★ 老板：「如果低于控价要变成红色」 */
#page-market .mkx-c-mp .mkx-mp.is-bad { color: #d92d20; font-weight: 800; }
#page-market .mkx-c-mp .mkx-dimv,
#page-market .mkx-c-mc .mkx-dimv { color: var(--ink-3); }

/* ---------- 分组弹窗（窄版） ---------- */
/* ★★ 弹窗是 `document.body.appendChild(mask)` 挂上去的 —— **不在 `#page-market` 里面** ⇒
   带 `#page-market` 前缀的弹窗选择器**一条都不会命中**（第 79 轮自查发现：分组弹窗的窄宽度
   与图标选择器一直是死规则）。弹窗类一律**不带页面前缀**。 */
.mkx-modal.is-narrow { max-width: 420px; }

/* ★ 第 87 轮：**分组颜色**色板（替掉原「分组图标」十选一）。
   ★★ 弹窗由 `document.body.appendChild(mask)` 挂上去 ⇒ 类名一律**不带** `#page-market`
   前缀（带了就是永不命中的死规则，见上面第 1130 行的同款教训）。 */
.mkx-gcolor { display: flex; flex-wrap: wrap; gap: 8px; }
.mkx-gcolor-b {
  width: 28px; height: 28px; padding: 0; border-radius: 50%; cursor: pointer;
  border: 1px solid var(--panel-line); background: var(--c, #fff); color: var(--ink-3);
  font-size: 11px; display: inline-flex; align-items: center; justify-content: center;
  transition: transform .12s, box-shadow .12s;
}
.mkx-gcolor-b:hover { transform: scale(1.1); }
.mkx-gcolor-b.is-on { box-shadow: 0 0 0 2px #fff, 0 0 0 4px var(--accent); }

/* ★ 第 87 轮：**回收站**弹窗里的项目行（同样挂在 body 下 ⇒ 不带页面前缀） */
.mkx-trash-i {
  display: flex; align-items: center; gap: 10px;
  padding: 9px 10px; border: 1px solid var(--panel-line); border-radius: 9px;
  background: #fff; margin-bottom: 8px;
}
.mkx-trash-t { min-width: 0; flex: 1 1 auto; display: flex; align-items: center; gap: 6px; }
.mkx-trash-t > b { font-size: 12.5px; font-weight: 620; color: var(--ink-1); }
.mkx-trash-t > span {
  font-size: 10.5px; color: var(--ink-3); background: #f2f4f7;
  border-radius: 5px; padding: 0 5px; line-height: 15px;
}
.mkx-trash-m { font-size: 10.5px; color: var(--ink-3); flex: none; }

/* ---- 第 79 轮补 F（截图审查修复） ----
   ① 顶部「+ 分组」按钮不许换行（竖成两行的按钮最难看）；
   ② 分组头操作区默认**不占布局宽度**（只留常显的「+ 加任务」），组名不再被无故截断。 */
#page-market .mkx-pl-head { flex-wrap: nowrap; }
#page-market .mkx-pl-add { flex: none; white-space: nowrap; }
/* 「+ 加任务」常显；「改名 / 删组」悬停才占位出现 */
#page-market .mkx-pl-gops .mkx-ibtn {
  width: 0; padding-left: 0; padding-right: 0; opacity: 0; overflow: hidden;
  transition: width .13s, opacity .13s, padding .13s;
}
/* ★★★ 第 90 轮（老板）：「当有项目的时候 不能直接删除分组」——
   组里有项目时「删除分组」置灰+锁形光标。**故意不置 disabled**：Chrome 下 disabled 按钮不弹 title，
   老板会只看到「点不动」却不知道为什么；保持可点、点了立刻给原因，体验才是对的。 */
#page-market .mkx-pl-gops .mkx-ibtn.is-locked { opacity: .4; cursor: not-allowed; }
#page-market .mkx-pl-gops .mkx-ibtn.is-locked:hover { color: var(--ink-3); background: transparent; }
#page-market .mkx-pl-gops .mkx-ibtn:first-child {
  width: auto; padding-left: 5px; padding-right: 5px; opacity: 1;
}
#page-market .mkx-pl-grp-h:hover .mkx-pl-gops .mkx-ibtn {
  width: auto; padding-left: 5px; padding-right: 5px; opacity: 1;
}

/* ★★★ 第 97 轮 · 累计评价的档位数字（`.mkx-sold`）
   来由：第 96 轮 `mkSoldAllHtml` 用了 `class="mkx-sold"` 却没写样式，
        全站类名自查 B2 一直报「本轮新增类无 CSS 定义」（第 96 轮漏的账）。
   作用：等宽数字，让 `60+ / 10万+` 这类档位在列里对齐；**只改字形不改色**。 */
.mkx-sold {
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum" 1;
}

/* ==================================================================
   ★★★ 第 98 轮 · 视觉收敛（老板 2026-10-26）
   ------------------------------------------------------------------
   老板原话：「整个页面的美观度需要提升一个档次！目前太乱了！
              ……然后把页面上所有的用来解释的小字给隐藏掉！包括弹窗页的！
              ……一些没必要的图标也太多！」

   【诊断（实拍 + 计算样式取证，见 `_r98_diag_shots.js` 的 metrics.json）】
     ① ~字号 12 档~：10 / 10.5 / 11 / 11.5 / 12 / 12.5 / 13 / 13.5 / 14 / 16 / 17 / 19
        六档挤在 10~12.5 之间，肉眼分不出主次 ⇒ 全页读起来是"一片小字"。
     ② ~颜色 66 个硬编码~，其中至少 15 组肉眼难辨：
        #b45309(16) vs #b54708(7) 两个几乎一样的橙；
        #fffbeb / #fffaeb / #fef3c7 / #fedf89 四种近似米黄底；
        #f2f4f7 / #fbfcfd / #f8fafc / #eef0f4 / #e6eaf2 五种近似浅灰蓝底；
        #475467(4) vs #475569(7) 两个几乎一样的蓝灰字。
     ③ ~301 / 524 个文本节点是 ≤12px 的解释小字~（"指导 ¥328.00"、"覆盖 568 家店铺"、
        "占已采 18.7%"、"全不选 = 收录全部采集项目"…）⇒ 版面被注解填满。
     ④ ~104 个 FontAwesome 图标~（KPI 彩色图标块 ×6、项目 chip、任务行、按钮…），
        多数只是装饰，不承载信息。
     ⑤ ~7 层横向条~：价格分布条 → 页头 → KPI → 工具栏 → 项目条 → 规格 chips → 批量条 → 表头，
        每层一种底色，碎成一片。

   【整改口径】
     · 字号只留 5 档：19(关键数字) / 14(区块与商品标题) / 13(正文数值) / 12(表头·标签) / 11(规格 chip)
     · 色板归一：坏/好/平/警示/强调 各 1 个，近似色合并（见下面 --mk-* 定义）
     · **解释性小字一律 display:none**（DOM 保留 ⇒ 老探针断言不红；信息全在 title 悬停里）
     · 装饰性图标 display:none，只留"能点"的（外链、排序箭头、勾选框）
     · KPI 从 6 张卡片 → 1 条扁平指标带；表格去斑马纹、行高收紧、表头变轻

   ★ 作用域纪律：
     · 除 ④b 的 `.mkx-gate-empty`（「没有分组控价」引导条，本轮**唯一**新增类，样式在同名注释块里）
       之外，本块**只覆盖既有类名，不新增类** —— 新增类要同步写样式，否则
       `_r98_classdiff.py` 的 B2 会判「裸奔类」。
     · 弹窗是 `document.body.appendChild(mask)` 出来的，在 `#page-market` **之外** ⇒
       所有弹窗规则必须用 `.mkx-mask` 作用域，写 `#page-market .xxx` 对弹窗完全无效。
   ★ 本块必须在文件末尾那两条 @media **之前**（本文件既有规矩）；
     任何新 `@media` 只能追加在文件最末尾（见末尾「触屏兜底」块）。
   ================================================================== */
#page-market {
  /* ---- 字号阶梯（全页只允许这 5 档） ---- */
  --mk-fs-xl: 19px;
  --mk-fs-lg: 14px;
  --mk-fs-md: 13px;
  --mk-fs-sm: 12px;
  --mk-fs-xs: 11px;
  /* ★ 徽标字形（`.mkx-help` 的 `?`）—— 13px 圆点里塞不进 11px 字，
     它是**图形元素**不是正文，故单列一个 token，不进正文档阶梯。 */
  --mk-fs-dot: 9px;
  /* ---- 色板（近似色合并后的唯一真源） ---- */
  --mk-1: #15181d;        /* 主文字 */
  --mk-2: #4a5260;        /* 次要文字 */
  --mk-3: #8b93a1;        /* 弱化文字（表头 / 单位） */
  --mk-line: #e8ebf0;     /* 分割线（比原 #e2e8f0 更浅，减少噪音） */
  --mk-line-2: #f1f3f6;   /* 更浅的内部分割 */
  --mk-bg: #f6f7f9;       /* 行 hover */
  --mk-bad: #b42318;      /* 低于控价 */
  --mk-ok: #067647;       /* 高于控价 */
  --mk-flat: #475569;     /* 持平 */
  --mk-warn: #b45309;     /* 唯一橙（合并了 #b54708） */
  --mk-accent: #3538cd;
}

/* ---------------- ① KPI：6 张卡片 → 1 条扁平指标带 ---------------- */
#page-market .mkx-kpis {
  display: flex;
  gap: 0;
  margin: 0 0 12px;
  background: var(--panel-bg);
  border: 1px solid var(--mk-line);
  border-radius: 12px;
  overflow: hidden;
}
#page-market .mkx-kpi {
  flex: 1 1 0;
  min-width: 0;
  display: block;
  background: none;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  padding: 12px 16px;
  position: relative;
}
/* 竖向细分隔线（除第一个） */
#page-market .mkx-kpi + .mkx-kpi::before {
  content: "";
  position: absolute;
  left: 0;
  top: 14px;
  bottom: 14px;
  width: 1px;
  background: var(--mk-line-2);
}
/* ★ 装饰性图标块整块去掉（老板：没必要的图标太多） */
#page-market .mkx-kpi-i { display: none; }
#page-market .mkx-kpi-t {
  font-size: var(--mk-fs-sm);
  color: var(--mk-3);
  line-height: 1.2;
  font-weight: 400;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
#page-market .mkx-kpi-v {
  font-size: var(--mk-fs-xl);
  font-weight: 600;
  color: var(--mk-1);
  line-height: 1.25;
  margin-top: 3px;
  letter-spacing: -.2px;
  font-variant-numeric: tabular-nums;
}
/* ★★★ 解释小字：隐藏（信息挪进 .mkx-kpi 的 title 悬停） */
#page-market .mkx-kpi-s { display: none; }
#page-market .mkx-kpi-ell { display: block; max-width: 100%; }

/* ---------------- ② 工具栏：一条，控件等高 ---------------- */
#page-market .mkx-tools {
  background: var(--panel-bg);
  border: 1px solid var(--mk-line);
  border-radius: 12px;
  padding: 8px 10px;
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  margin: 0 0 12px;
}
#page-market .mkx-tools .ec-btn-sm {
  height: 30px;
  padding: 0 10px;
  font-size: var(--mk-fs-sm);
}
#page-market .mkx-search {
  height: 30px;
  border-radius: 8px;
  border-color: var(--mk-line);
  background: #fbfcfd;
}
#page-market .mkx-search input { font-size: var(--mk-fs-sm); }
#page-market .mkx-seg {
  border-radius: 8px;
  border-color: var(--mk-line);
  overflow: hidden;
}
#page-market .mkx-seg-b {
  height: 28px;
  padding: 0 11px;
  font-size: var(--mk-fs-sm);
  color: var(--mk-2);
}
#page-market .mkx-sw span,
#page-market .mkx-sel { font-size: var(--mk-fs-sm); color: var(--mk-2); }

/* ---------------- ③ 表格：去斑马纹 / 行高收紧 / 表头变轻 ---------------- */
#page-market .mkx-tb { border-collapse: separate; border-spacing: 0; }
#page-market .mkx-tb thead th {
  font-size: var(--mk-fs-sm);
  font-weight: 500;
  color: var(--mk-3);
  background: var(--panel-bg);
  border-bottom: 1px solid var(--mk-line);
  padding: 9px 10px;
  white-space: nowrap;
  position: sticky;
  top: 0;
  z-index: 2;
}
#page-market .mkx-tb thead th[data-mkx-sort] { cursor: pointer; }
#page-market .mkx-tb thead th[data-mkx-sort]:hover { color: var(--mk-1); }
#page-market .mkx-tb thead th i {
  font-size: 9px;
  margin-left: 3px;
  opacity: .45;
}
#page-market .mkx-tb thead th.is-on { color: var(--mk-1); }
#page-market .mkx-tb thead th.is-on i { opacity: 1; color: var(--mk-accent); }

/* 行：统一底色，只留 hover（斑马纹是最吵的一种"美化"） */
#page-market .mkx-tb tbody tr,
#page-market .mkx-tb tbody tr:nth-child(2n) { background: var(--panel-bg); }
#page-market .mkx-tb tbody tr:hover { background: #f7f9fc; }
#page-market .mkx-tb tbody td {
  border-bottom: 1px solid var(--mk-line-2);
  padding: 5px 10px;
  font-size: var(--mk-fs-md);
  color: var(--mk-1);
  vertical-align: middle;
}
#page-market .mkx-tb tbody tr:last-child td { border-bottom: 0; }
/* ★ 行高 74 → 约 60：商品格原本是「标题 / 副行 / 规格 chip」三行，
   行距全按 1.5 排 ⇒ 白白撑高。三行都压到 1.35、去掉多余 margin，一屏能多看 3~4 行。 */
#page-market .mkx-tt { line-height: 1.35; }
#page-market .mkx-tt-sub { line-height: 1.35; margin-top: 0; }
#page-market .mkx-spec-tags { margin-top: 0; line-height: 1.35; }
#page-market .mkx-spec-tag { line-height: 1.35; }

/* 商品单元格：标题 13px，副行 12px，规格 chip 11px —— 三档拉开层级 */
#page-market .mkx-tt,
#page-market .mkx-tt span { font-size: var(--mk-fs-md); }
#page-market .mkx-tt { color: var(--mk-1); font-weight: 500; }
#page-market .mkx-tt:hover { color: var(--mk-accent); }
/* 外链小箭头：淡到几乎看不见，不再抢眼 */
#page-market .mkx-tt i { font-size: 9px; opacity: .22; margin-left: 3px; }
#page-market .mkx-tt:hover i { opacity: .8; }

#page-market .mkx-tt-sub {
  font-size: var(--mk-fs-sm);
  color: var(--mk-3);
  line-height: 1.5;
  margin-top: 1px;
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: nowrap;
  overflow: hidden;
}
#page-market .mkx-tt-sub > span { white-space: nowrap; }

#page-market .mkx-spec-tag {
  font-size: var(--mk-fs-xs);
  line-height: 1.5;
  padding: 0 5px;
  border-radius: 4px;
  font-weight: 400;
}

/* 金额与偏差：等宽数字 + 只有色不做底 */
#page-market .mkx-price { font-size: var(--mk-fs-md); font-weight: 600; color: var(--mk-1); }
#page-market .mkx-gmv,
#page-market .mkx-sold { font-size: var(--mk-fs-md); font-weight: 500; color: var(--mk-2); }
#page-market .mkx-dev { font-size: var(--mk-fs-md); font-weight: 500; }
#page-market .mkx-dev i { font-size: 9px; opacity: .6; margin-right: 2px; }
#page-market .mkx-dev.is-none { color: var(--mk-3); font-weight: 400; }
#page-market .mkx-dimv { color: var(--mk-3); }

/* ★★★ 行内的「券后」「指导 ¥328.00」这类注解：隐藏（老板：解释小字全隐藏） */
#page-market .mkx-price-sub { display: none; }

/* ---------------- ④ 左侧项目列表 / 任务卡：降噪 ---------------- */
#page-market .mkx-tb-head h4 { font-size: var(--mk-fs-lg); }
#page-market .mkx-tb-head .hint { display: none; }   /* 「64 条 / 全量 2,268」解释小字 */

/* ---------------- ④c 批量条：没勾选就不占版面 ----------------
   第 90 轮 R 把它做成「常驻 + 未选中时整条置灰」——置灰的一整条按钮组是纯噪音
   （老板原话「太乱了」）。改成**勾选了才出现**；DOM 不删（老探针照样查得到）。 */
#page-market .mkx-batch:not(.is-on) { display: none; }

/* ---------------- ④d 左侧行的操作键：统一成淡灰小方块 + 悬停才出现 ----------------
   ★ 项目行 `.mkx-pl-ops` 原本就「悬停才显示」（规则 729 行），这里只把里面的按钮
     从「彩色图标」压成「淡灰小方块」，一行里不再挤 4 种颜色。
   ★ 分组行 `.mkx-pl-gops` 是**常驻**的（历史上没写 hover 规则）—— 组长名后面永远
     蹲着 4 个彩色小图标，比项目行还吵。这里补成同样的「悬停/展开才出现」。
     ※ 教训：上一版注释把 `.mkx-pl-gops` 写成「死类」，那是错的（它就在
       `ec-pages.js` 分组头 `mkx-pl-grp-h` 里，只是**没有样式**）⇒ 差点漏掉分组行。 */
#page-market .mkx-pl-ops .mkx-ibtn,
#page-market .mkx-pl-gops .mkx-ibtn {
  width: 20px;
  height: 20px;
  border-radius: 5px;
  font-size: 10px;
  color: var(--mk-3);
  background: none;
  border: 1px solid transparent;
}
#page-market .mkx-pl-ops .mkx-ibtn:hover,
#page-market .mkx-pl-gops .mkx-ibtn:hover { background: #eef1f6; color: var(--mk-1); border-color: var(--mk-line); }

#page-market .mkx-pl-gops { display: flex; gap: 1px; flex: none; opacity: 0; transition: opacity .12s; }
#page-market .mkx-pl-grp-h:hover .mkx-pl-gops,
#page-market .mkx-pl-grp-h:focus-within .mkx-pl-gops,
#page-market .mkx-pl-grp-h.is-open .mkx-pl-gops { opacity: 1; }
/* ※ 触屏没有 hover ⇒ 常驻显示的兜底写在**文件最末尾**的 `@media (hover: none)` 里
   （本文件规矩：任何 `@media` 都不许出现在主块中间，否则「@media 后无顶层规则」校验会失败）。 */

/* ---------------- ④b 「没有分组控价」引导条（第 98 轮新增类，必须在样式里出现） ----------------
   老板口径：「公共采集的商品如果分组中没设置控价，那么不匹配价格」⇒ 整表 `--`。
   满屏 `--` 不解释会让人以为"数据丢了"，所以给一条**可操作**的引导（状态 + 一个按钮），
   不是解释小字：13px、一行、不带图标，有分组控价生效时自动消失。 */
#page-market .mkx-gate-empty {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0 0 10px;
  padding: 8px 12px;
  border: 1px solid #f0e3cf;
  background: #fffdf7;
  border-radius: 10px;
}
#page-market .mkx-gate-empty-t {
  font-size: var(--mk-fs-md);
  color: var(--mk-2);
  line-height: 1.4;
}
#page-market .mkx-gate-empty .ec-btn { margin-left: auto; flex: none; }

/* ---------------- ⑤ 解释小字：全隐藏 ---------------- */
/* ★ 两种作用域都要写：弹窗是 `document.body.appendChild(mask)` 出来的，
   在 `#page-market` **之外**（`mkForm` / `mkProjPicker` / 详情弹窗都是），
   只写 `#page-market` 前缀对弹窗完全无效 —— 这是本轮差点漏掉的一处。 */
#page-market .mkx-tiers-hint,
#page-market .mkx-batch-tip,          /* 「勾选商品后可批量操作移动到分组…」——批量条只在勾选后才出现，这句已成废话 */
#page-market .mkx-field-note,
#page-market .mkx-live-note,
#page-market .mkx-dt-sub,
#page-market .mkx-dt-sub2,
#page-market .mkx-side-empty,
.mkx-mask .mkx-tiers-hint,
.mkx-mask .mkx-field-note,
.mkx-mask .mkx-dt-sub,
.mkx-mask .mkx-dt-sub2,
.mkx-mask .mkx-field > small,
.mkx-mask .mkx-modal-b > small,
.mkx-mask .mkx-side-empty,
/* 「当前控价来源：规格分档 / 本 SKU 单独配的价」——纯解释行；
   来源在 R1 之后已经能从"这一行有价 / --"看出来，信息挪进输入框 title。 */
.mkx-mask .mkx-fbox-src { display: none; }

/* ★ 详情弹窗里的「自动采集这个 SKU」开关：它的字号规则原来只写在
   `#page-market .mkx-sw`（第 131 行）里 —— 弹窗在 `#page-market` **之外**
   ⇒ 一路继承到 16px（`_r98_dialog_census` 实测抓到的唯一一个越档元素）。
   这里补弹窗作用域，按正文档 13px。 */
.mkx-mask .mkx-sw,
.mkx-mask .mkx-sw span { font-size: var(--mk-fs-md, 13px); color: var(--mk-2, #4a5260); }

/* ---------------- ⑥ 帮助徽标：从"彩色问号"降成"淡灰圆点" ---------------- */
#page-market .mkx-help,
.mkx-mask .mkx-help {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 13px;
  height: 13px;
  margin-left: 4px;
  border-radius: 50%;
  border: 1px solid var(--mk-line, #e8ebf0);
  background: none;
  color: #b9c0cc;
  font-size: var(--mk-fs-dot, 9px);
  font-weight: 500;
  line-height: 1;
  cursor: help;
  vertical-align: 1px;
}
#page-market .mkx-help:hover,
.mkx-mask .mkx-help:hover { color: #4a5260; border-color: #cfd5df; }

/* ---------------- ⑦ 颜色归一：把近似色收敛到 --mk-* ---------------- */
#page-market .mkx-dev.is-bad { color: var(--mk-bad); }
#page-market .mkx-dev.is-good { color: var(--mk-ok); }
#page-market .mkx-dev.is-flat { color: var(--mk-flat); }

/* 弹窗：字段说明与徽标同口径（★ 用 `.mkx-mask` 作用域 —— 弹窗在 #page-market 之外） */
.mkx-mask .mkx-modal { border-radius: 14px; }
.mkx-mask .mkx-modal-h > h4 { font-size: 14px; font-weight: 600; }
.mkx-mask .mkx-field > span { font-size: 12px; color: var(--mk-2, #4a5260); }
.mkx-mask .mkx-check { font-size: 12px; }

/* ---------------- ⑧ 滚动条：细一点，别抢视线 ---------------- */
#page-market .mkx-tbwrap::-webkit-scrollbar { width: 10px; height: 10px; }
#page-market .mkx-tbwrap::-webkit-scrollbar-thumb {
  background: #d7dce5;
  border-radius: 8px;
  border: 3px solid var(--panel-bg);
}
#page-market .mkx-tbwrap::-webkit-scrollbar-thumb:hover { background: #c2c9d6; }
#page-market .mkx-tbwrap::-webkit-scrollbar-track { background: none; }

/* ---------------- ⑨ 字号吸附：把残留碎字号全部收到 5 档 ----------------
   来由：第 98 轮改造前全页有 **12 档**字号（10 / 10.5 / 11 / 11.5 / 12 / 12.5 /
        13 / 13.5 / 14 / 16 / 17 / 19），六档挤在 10~12.5 之间 ⇒ 主次分不出来。
   口径：10 与 10.5 → 11（三级信息）；11.5 → 12（二级）；12.5 → 13（正文）；
        13.5 与 14.5 → 14（小标题）。
   清单由 `outputs/runtime/_r98_scan_fontsize.js` 扫出（不是拍脑袋列的）——
   ★ 以后再加样式，跑这个脚本就能发现有没有偷偷引入第 6 档。 */
#page-market .mkx-sub-tag,
#page-market .mkx-pl-brand,
#page-market .mkx-task-m,
/* ★ 这一条必须带 `#mk-tbox`：原样式里有一条 `#page-market #mk-tbox .mkx-task-m{font-size:10px}`
   （两个 id + 一个类），只用单个 `#page-market` 前缀**压不住**它 —— 第一版就是这么漏的。 */
#page-market #mk-tbox .mkx-task-m,
#page-market .mkx-trow-note,
#page-market .mkx-off-tag,
#page-market .mkx-tt-sub,
#page-market .mkx-price-sub,
#page-market .mkx-scard > h5 > em,
#page-market .mkx-dist-note,
#page-market .mkx-tag,
#page-market .mkx-tcancel,
#page-market .mkx-pl-grp-h > em,
#page-market .mkx-pl-m,
#page-market .mkx-pl-empty,
#page-market .mkx-proj-chip,
#page-market .mkx-projbar-k,
#page-market .mkx-lcol > #mk-tbox > .mkx-scard-h > em,
.mkx-field-note,
.mkx-dtp > em,
.mkx-dt-pk,
.mkx-tiers-hint,
.mkx-tiers-warn,
.mkx-pp-i > em,
.mkx-pp-n,
.mkx-pp-ck,
.mkx-trash-t > span,
.mkx-trash-m {
  font-size: var(--mk-fs-xs, 11px);
}

#page-market .mkx-kpi-t,
#page-market .mkx-tb-head > .hint,
#page-market table.mkx-tb thead th,
#page-market td.mkx-c-time,
#page-market .mkx-pager-info,
#page-market .mkx-side-empty,
#page-market .mkx-dist-r > b,
#page-market .mkx-txt,
#page-market .mkx-pl-grp-h,
#page-market .mkx-distbar-m,
#page-market #mk-tbox .mkx-task-t,
#page-market .mkx-fchips-l,
.mkx-field > span,
.mkx-dt-sub,
.mkx-dt-sub2,
.mkx-dt-link,
.mkx-bpp-back,
.mkx-batch-tip {
  font-size: var(--mk-fs-sm, 12px);
}

#page-market .mkx-search > input,
#page-market .mkx-sw,
#page-market table.mkx-tb tbody td,
#page-market .mkx-dev,
#page-market .mkx-scard > h5,
#page-market .mkx-pl-t,
#page-market .mkx-distbar,
#page-market .mkx-distbar > b,
#page-market .mkx-lcol > #mk-tbox > .mkx-scard-h,
#page-market .mkx-fchip,
.mkx-plat-p,
.mkx-check,
.mkx-dt-pv,
.mkx-pp-sku,
.mkx-pp-i,
.mkx-field > textarea,
.mkx-trash-t > b {
  font-size: var(--mk-fs-md, 13px);
}

#page-market .mkx-pl-head > b,
#page-market .mkx-c-mp .mkx-mp,
.mkx-dt-title,
.mkx-batch-n b,
.mkx-modal-h > h4 {
  font-size: var(--mk-fs-lg, 14px);
}

/* ---- 窄屏（必须留最末尾 ⇒ 覆盖本文件前面所有 @media 的列数） ---- */
@media (max-width: 1180px) {
  #page-market .mkx-fchips-wrap { gap: 6px 10px; }
}
@media (max-width: 980px) {
  .mkx-trow { grid-template-columns: 1fr 1fr; }
  .mkx-trow > .mkx-tdel { grid-column: 2 / 3; justify-self: end; }
}


/* ---- 触屏兜底（第 98 轮）：没有 hover 的设备上，分组行操作键必须常驻 ----
   分组行操作键改成「悬停才出现」是为了降噪，但触屏设备永远等不到 hover ⇒
   这里显式放开，别把功能藏没了。本块必须留在**文件最末尾**。 */
@media (hover: none) {
  #page-market .mkx-pl-gops { opacity: 1; }
}
