/* ============================================================
 * zt-polish.css v3 —— 涨停看板（/zt）移植汇贝 huibe.com/recommend 列表视觉
 * 来源：/assets/Recommend-CO4_xXcX.css（.tbl-wrap / .rank-cell / .s-cell / .pill）
 * 设计语言：
 *   · 表格底色透明，行不描边，靠 chip 色表头 + hairline 分隔
 *   · 表头 chip 底 + 次级灰字
 *   · 行首 inset 3px 色条（按等级着色，S红/A橙/B蓝/C灰）
 *   · 灰色小号粗体序号（不抢镜）
 *   · 名称深色粗体 + 代码灰色小字同行
 *   · 关键价格 15px/800，涨跌 12px/700
 *   · 标签胶囊化（radius 9px）
 * 作用域：body.zt-page（zt-polish.js 按路由 /zt 打标）
 * ============================================================ */

/* ---------- 0. 字体：与 huibe 完全一致（Inter 优先，未安装自动回落） ---------- */
body.zt-page .table-wrap {
  font-family: Inter, -apple-system, BlinkMacSystemFont, "PingFang SC",
               "Hiragino Sans GB", "noto sans", "Microsoft YaHei",
               "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 12px;
  -webkit-font-smoothing: antialiased;
}

/* ---------- 令牌：浅色 / 深色（取自 huibe 主题变量） ---------- */
body.zt-page {
  --zt-tx: #1f2536;
  --zt-sub: #656d7a;
  --zt-bd: #eceef2;
  --zt-chip: #f2f3f5;
  --zt-hover: #ffece8;
  --zt-danger: #f56c6c;
  --zt-warning: #e6a23c;
  --zt-success: #67c23a;
  --zt-brand: #2f7fe0;
  --zt-up: #e0342f;
  --zt-down: #08703f;
  /* 共振灯带：huibe .lamp4 原值（light: --up / --down-bright） */
  --zt-lamp-on: #e0342f;
  --zt-lamp-off: #14a038;
  --zt-lamp-base: #e5eaf1;

  /* ---- 表格卡片底色（浅色主题：白卡片） ---- */
  --zt-panel: #ffffff;
  --zt-card-shadow: 0 2px 10px rgba(0, 0, 0, .10);

  /* ---- 标签 chip（浅色主题用深色系，保证白底上对比度 ≥4.5） ---- */
  --zt-chip-blue-bg: #e8f2fe;
  --zt-chip-blue-fg: #1668c4;
  --zt-chip-blue-bd: #a8cdf5;
  --zt-chip-green-bg: #eaf7f1;
  --zt-chip-green-fg: #0b7a4b;
  --zt-chip-green-bd: #a5dbc4;
  --zt-chip-red-bg: #fdecec;
  --zt-chip-red-fg: #c22a1c;
  --zt-chip-red-bd: #f5b8b4;
  --zt-chip-warn-bg: #fdf6ec;
  --zt-chip-warn-fg: #9a6a08;
  --zt-chip-warn-bd: #f0d5a8;

  /* ---- 等级徽章 ---- */
  --zt-grade-a-bg: #fdeaea;
  --zt-grade-a-fg: #c3271f;
  --zt-grade-a-bd: #f2b5b1;
  --zt-grade-b-bg: #e9f2fd;
  --zt-grade-b-fg: #1a6bc4;
  --zt-grade-b-bd: #aacdf3;
  --zt-grade-c-bg: #eff1f5;
  --zt-grade-c-fg: #5a6472;
  --zt-grade-c-bd: #d3d9e2;
  --zt-grade-d-bg: #f4f5f8;
  --zt-grade-d-fg: #6d7787;
  --zt-grade-d-bd: #dde1e8;
}
html.dark body.zt-page {
  --zt-tx: #e6ecf5;
  --zt-sub: #7d8ba3;
  --zt-bd: #1b2334;
  --zt-chip: #1b2334;
  --zt-hover: #16233a;
  --zt-danger: #f85149;
  --zt-warning: #d29922;
  --zt-success: #3fb950;
  --zt-brand: #5aa2ff;
  --zt-up: #ff6b62;
  --zt-down: #3fb950;
  /* 共振灯带：huibe .lamp4 原值（dark: --danger / --success） */
  --zt-lamp-on: #f85149;
  --zt-lamp-off: #3fb950;
  --zt-lamp-base: #2a3446;

  /* ---- 表格卡片底色（深色主题：深色卡片，不刺眼） ---- */
  --zt-panel: #121722;
  --zt-card-shadow: 0 4px 18px rgba(0, 0, 0, .45);

  /* ---- 标签 chip（深色主题用亮色系，深底上对比度足够） ---- */
  --zt-chip-blue-bg: rgba(74, 158, 255, .14);
  --zt-chip-blue-fg: #6cb0ff;
  --zt-chip-blue-bd: rgba(74, 158, 255, .42);
  --zt-chip-green-bg: rgba(38, 194, 129, .14);
  --zt-chip-green-fg: #4fd39a;
  --zt-chip-green-bd: rgba(38, 194, 129, .42);
  --zt-chip-red-bg: rgba(255, 82, 82, .14);
  --zt-chip-red-fg: #ff8a8a;
  --zt-chip-red-bd: rgba(255, 82, 82, .42);
  --zt-chip-warn-bg: rgba(240, 185, 11, .14);
  --zt-chip-warn-fg: #f0c453;
  --zt-chip-warn-bd: rgba(240, 185, 11, .42);

  /* ---- 等级徽章 ---- */
  --zt-grade-a-bg: rgba(255, 82, 82, .16);
  --zt-grade-a-fg: #ff8a8a;
  --zt-grade-a-bd: rgba(255, 82, 82, .45);
  --zt-grade-b-bg: rgba(74, 158, 255, .16);
  --zt-grade-b-fg: #6cb0ff;
  --zt-grade-b-bd: rgba(74, 158, 255, .45);
  --zt-grade-c-bg: rgba(127, 140, 159, .16);
  --zt-grade-c-fg: #9aa7ba;
  --zt-grade-c-bd: rgba(127, 140, 159, .38);
  --zt-grade-d-bg: rgba(127, 140, 159, .10);
  --zt-grade-d-fg: #7d8ba3;
  --zt-grade-d-bd: rgba(127, 140, 159, .28);
}

/* ---------- 1. 表格容器：透明底、主题边框 ---------- */
body.zt-page .table-wrap .el-table {
  background: transparent;
  --el-table-bg-color: transparent;
  --el-table-tr-bg-color: transparent;
  --el-table-header-bg-color: var(--zt-chip);
  --el-table-border-color: var(--zt-bd);
  --el-table-row-hover-bg-color: var(--zt-hover);
  --el-table-text-color: var(--zt-tx);
  color: var(--zt-tx);
}
body.zt-page .table-wrap .el-table__body tr.el-table__row > td.el-table__cell {
  background: transparent;
}

/* ---------- 2. 表头：chip 底色 + 次级灰字 ---------- */
body.zt-page .table-wrap .el-table__header th.el-table__cell {
  background: var(--zt-chip) !important;
  color: var(--zt-sub) !important;
  font-size: 12px !important;
  font-weight: 600;
  letter-spacing: .3px;
  border-bottom: 1px solid var(--zt-bd) !important;
}

/* ---------- 3. 行：无斑马纹、hover 暖底 ---------- */
body.zt-page .table-wrap .el-table__body tr.el-table__row:hover > td.el-table__cell {
  background: var(--zt-hover) !important;
}

/* ---------- 4. 行首色条：按等级着色，与站点等级徽章同一套色系 ----------
 * 取色来自 index-bck_9uib.css 的 .grade-* 原值：
 *   S 金渐变 / A 红 / B 蓝 / C 灰 / D 淡灰 / X 深红
 * 用 ::before 而非 box-shadow —— 只有伪元素能做渐变 + 圆角 + 发光。
 * 注意：S/A/B 之外 C/D/X 也必须有色（实测 C 24 只 + D 6 只 = 42 行里的 30 行，
 * 原来这 30 行完全没色条，等于形同虚设）。
 */
body.zt-page .table-wrap .el-table__body tr > td.el-table__cell:first-child {
  position: relative;
}
body.zt-page .table-wrap .el-table__body tr > td.el-table__cell:first-child::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 2.5px;          /* 细条：4px 偏宽抢视线，2.5px 仍能分辨等级色 */
  border-radius: 0 1.5px 1.5px 0;
  background: transparent;
  z-index: 1;
}

/* S —— 金色（站点 .grade-S 用 #f0b90b → #ff8f1f 渐变） */
body.zt-page .table-wrap .el-table__body tr:has(.grade-S) > td.el-table__cell:first-child::before {
  background: linear-gradient(180deg, #ffd666 0%, #f0b90b 50%, #e08a00 100%);
  box-shadow: 0 0 6px rgba(240, 185, 11, .45);
}
/* A —— 涨红 #e03131（站点 .grade-A color: var(--up)） */
body.zt-page .table-wrap .el-table__body tr:has(.grade-A) > td.el-table__cell:first-child::before {
  background: linear-gradient(180deg, #ff6b6b 0%, #e03131 100%);
  box-shadow: 0 0 6px rgba(224, 49, 49, .35);
}
/* B —— 蓝 #2f7fe0（站点 .grade-B color: var(--blue)） */
body.zt-page .table-wrap .el-table__body tr:has(.grade-B) > td.el-table__cell:first-child::before {
  background: linear-gradient(180deg, #6aa9ff 0%, #2f7fe0 100%);
}
/* C —— 灰 #788598（站点 .grade-C，占比最大，不能无色） */
body.zt-page .table-wrap .el-table__body tr:has(.grade-C) > td.el-table__cell:first-child::before {
  background: #8792a5;
}
/* D —— 更淡的灰（站点 .grade-D，弱于 C） */
body.zt-page .table-wrap .el-table__body tr:has(.grade-D) > td.el-table__cell:first-child::before {
  background: #6b7688;
  opacity: .75;
}
/* X —— 深红 #b02020（站点 .grade-X） */
body.zt-page .table-wrap .el-table__body tr:has(.grade-X) > td.el-table__cell:first-child::before {
  background: linear-gradient(180deg, #d63a3a 0%, #961414 100%);
}
/* 无等级（盘前待评）—— 不画条 */
body.zt-page .table-wrap .el-table__body tr:not(:has(.grade)) > td.el-table__cell:first-child::before {
  background: transparent;
}

/* 暗色主题：灰档提亮，避免在深底上糊掉 */
html.dark body.zt-page .table-wrap .el-table__body tr:has(.grade-C) > td.el-table__cell:first-child::before {
  background: #9aa5b8;
}
html.dark body.zt-page .table-wrap .el-table__body tr:has(.grade-D) > td.el-table__cell:first-child::before {
  background: #7d8ba3;
  opacity: .7;
}

/* ---------- 5. 序号列：huibe 式三件套（排名 + 评分条 + MACD 金/死） ---------- */
body.zt-page .table-wrap .el-table__body tr > td.el-table__cell:first-child .cell {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 2px;
  padding-left: 6px !important;
  padding-right: 6px !important;
}
.zt-rank {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 3px;
}
.zt-rank .zt-rk {
  font-size: 12px;
  font-weight: 700;
  line-height: 1.2;
  color: var(--zt-sub, #656d7a);
  font-variant-numeric: tabular-nums;
}
.zt-rank .zt-bar {
  display: block;
  width: 34px;
  height: 3px;
  border-radius: 2px;
  background: var(--zt-bd, rgba(128, 138, 157, .25));
  overflow: hidden;
}
.zt-rank .zt-bar i {
  display: block;
  height: 100%;
  border-radius: 2px;
  background: linear-gradient(90deg, #f0b90b, var(--zt-danger, #f56c6c));
}
/* MACD 金/死：金=涨红，死=跌绿，与 huibe 同口径 */
.zt-rank .macd-dot {
  font-size: 11px;
  font-weight: 800;
  line-height: 1.3;
}
.zt-rank .macd-dot.up { color: var(--zt-danger, #f56c6c); }
.zt-rank .macd-dot.dn { color: var(--zt-success, #67c23a); }

/* 等级徽章挪进名称列后缩小一号 */
body.zt-page .table-wrap .el-table__body td.el-table__cell:nth-child(2) .cell .grade {
  min-width: 20px;
  height: 18px;
  /* line-height 必须压到 1：继承来的 20px 会让字形在 18px 盒内偏上 1~2px */
  line-height: 1;
  padding: 0 5px;
  border-radius: 5px;
  font-size: 10px;
  margin: 0;
  flex: none;
}

/* ---------- 6. 名称：深色粗体 + 代码灰色小字同行（huibe .s-cell） ---------- */
/* 名称单元格重排为两列网格（由 zt-polish.js 打 .zt-namegrid + .zt-namecol）
 *   左列 = 等级徽章，align-self:center → 相对整行垂直居中
 *   右列 = 名称行 + 共振灯带，灯带左缘与名称文字左缘严格对齐 */
body.zt-page .table-wrap .el-table__body td.el-table__cell:nth-child(2) .cell.zt-namegrid {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  column-gap: 6px;
  align-items: center;
}
/* 等级：占第一列，上下居中；旧规则里的 margin 全部清零避免偏移 */
body.zt-page .table-wrap .el-table__body td.el-table__cell:nth-child(2) .cell.zt-namegrid > .grade {
  grid-column: 1;
  grid-row: 1;
  align-self: center;
  margin: 0 !important;
}
.zt-namecol {
  grid-column: 2;
  grid-row: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  align-items: flex-start;   /* 灯带与名称都靠左，起点同一 x */
  gap: 2px;
}
/* 名称 + 代码行 */
.zt-namecol > div {
  display: flex;
  align-items: center;
  gap: 6px;
  max-width: 100%;
  white-space: nowrap;
  color: var(--zt-tx);
  font-weight: 700;
  /* Vue 组件把 font-size:13px 写成内联样式，只能 !important 覆盖 */
  font-size: 12px !important;
}
.zt-namecol > div .sub {
  color: var(--zt-sub);
  font-size: 11px;
  font-weight: 400;
  letter-spacing: .2px;
}
/* 灯带在列内不再需要上边距（由 gap 控制） */
.zt-namecol > .lamps { margin-top: 0; }

/* ---------- 7. 涨跌幅类数值：huibe .cur-d = 12px/700 ---------- */
body.zt-page .table-wrap .el-table__body td.el-table__cell:nth-child(12) .cell,
body.zt-page .table-wrap .el-table__body td.el-table__cell:nth-child(13) .cell {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .2px;
  font-variant-numeric: tabular-nums;
}

/* ---------- 8. 其余数值：12.5px/700，等宽对齐 ---------- */
body.zt-page .table-wrap .el-table__body td .num {
  font-size: 12px;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}
body.zt-page .table-wrap .el-table__body td .mono {
  font-variant-numeric: tabular-nums;
}

/* ---------- 9. 标签胶囊（huibe .pill：11px/600，radius 9px） ---------- */
body.zt-page .table-wrap .el-table__body .chip {
  border-radius: 9px;
  padding: 1px 8px;
  font-size: 11px;
  font-weight: 600;
}

/* ---------- 10. 等级徽章：小一号，避免抢镜 ---------- */
body.zt-page .table-wrap .el-table__body .grade {
  min-width: 24px;
  height: 20px;
  padding: 0 6px;
  border-radius: 6px;
  font-size: 11px;
  font-weight: 700;
}

/* ---------- 11. 行业 / 涨停原因：次级灰字辅助信息 ---------- */
body.zt-page .table-wrap .el-table__body .reason {
  color: var(--zt-sub);
  font-size: 11px;
  line-height: 1.5;
  display: block;
  white-space: normal;
}

/* ---------- 12. 行距与分隔线 ---------- */
body.zt-page .table-wrap .el-table__body td.el-table__cell {
  padding-top: 9px !important;
  padding-bottom: 9px !important;
  border-bottom: 1px solid var(--zt-bd) !important;
}
body.zt-page .table-wrap .el-table__body tr:last-child td.el-table__cell {
  border-bottom: 0 !important;
}

/* ---------- 13. 晋级概率进度条：细长圆角（huibe 同风格） ---------- */
body.zt-page .table-wrap .el-table__body .bar {
  height: 4px;
  border-radius: 2px;
}

/* ---------- 15. 共振灯带（已移到名称/代码下方，原列隐藏） ---------- */
/* 注意：不能 display:none —— 固定布局下隐藏单元格会让后面的列整体左移错位。
   只把列宽压到 0，单元格保留占位、内容隐藏（内容必须彻底隐藏，
   否则 0 宽格里文字会一字一行，把整行撑到 100px+）。 */
.zt-hidecol {
  padding-left: 0 !important;
  padding-right: 0 !important;
  overflow: hidden !important;
  white-space: nowrap !important;
}
.zt-hidecol .cell {
  display: none !important;
}
/* 灯带本体：完全照 huibe .lamp4（.tbl-wrap 内尺寸）
 *   display:flex; gap:2px; margin-top:2px
 *   i { width:10px; height:3px; border-radius:1px; flex:none; 无边框 }
 *   l-on = 金叉红 / l-off = 死叉绿
 * 注意：xeev 原生 i 带 border:1px，必须清零，否则 3px 高会变成 5px。 */
body.zt-page .table-wrap .lamps,
body.zt-page .table-wrap .el-table__body td.el-table__cell:nth-child(2) .cell .zt-lamps {
  display: flex;
  align-items: center;
  gap: 2px;
  margin-top: 2px;
}
body.zt-page .table-wrap .lamps i,
body.zt-page .table-wrap .el-table__body td.el-table__cell:nth-child(2) .cell .zt-lamps i {
  width: 10px;
  height: 3px;
  border-radius: 1px;
  border: 0;
  flex: none;
  background: var(--zt-lamp-base, #e5eaf1);
}
/* on / off：优先于 xeev 组件自带的 on/off 规则 */
body.zt-page .table-wrap .lamps i.on,
body.zt-page .table-wrap .el-table__body td.el-table__cell:nth-child(2) .cell .zt-lamps i.on {
  background: var(--zt-lamp-on, #e0342f);
}
body.zt-page .table-wrap .lamps i.off,
body.zt-page .table-wrap .el-table__body td.el-table__cell:nth-child(2) .cell .zt-lamps i.off {
  background: var(--zt-lamp-off, #14a038);
}
/* 缺数据维：huibe 没有这态，保留极淡底，不干扰读数 */
body.zt-page .table-wrap .lamps i.na,
body.zt-page .table-wrap .el-table__body td.el-table__cell:nth-child(2) .cell .zt-lamps i.na {
  background: transparent;
  border: 1px dashed var(--zt-lamp-base, #e5eaf1);
}
/* 计数 4/5：huibe 无此项，压小让灯带是主角 */
body.zt-page .table-wrap .lamps .cnt,
body.zt-page .table-wrap .el-table__body td.el-table__cell:nth-child(2) .cell .zt-lamps .cnt {
  font-size: 10.5px;
  font-weight: 700;
  line-height: 1;
  margin-left: 3px;
}

/* ============================================================
 * 16. 共振悬浮信息框 —— 完整移植 huibe 的 .lamp-tip
 *     来源：huibe index-lxl-Aua5.css 的 .lamp-tip 规则块
 *     结构：lt-hd(标题+计数) / lt-li(每维一行) / lt-ft(结论) / lt-note(口径)
 * ============================================================ */
.lamp-tip {
  position: fixed;
  z-index: 3100;
  left: 0;
  top: 0;
  width: 340px;
  max-width: calc(100vw - 24px);
  box-sizing: border-box;
  padding: 11px 13px;
  border-radius: 8px;
  background: var(--tip-bg);
  color: var(--tip-tx);
  border: 1px solid var(--tip-bd);
  box-shadow: var(--tip-shadow);
  font-family: Inter, -apple-system, BlinkMacSystemFont, "PingFang SC",
               "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Arial, sans-serif;
  font-size: 12px;
  line-height: 1.7;
  opacity: 0;
  visibility: hidden;
  transform: translateY(-3px);
  transition: opacity .13s ease, transform .13s ease, visibility .13s;
  pointer-events: none;
  text-align: left;
}
.lamp-tip.on {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
  pointer-events: auto;
}
.lamp-tip .lt-hd {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  padding-bottom: 7px;
  margin-bottom: 7px;
  border-bottom: 1px solid var(--tip-sep);
}
.lamp-tip .lt-title {
  font-weight: 800;
  font-size: 13px;
  color: var(--tip-tx);
}
.lamp-tip .lt-n {
  padding: 1px 7px;
  border-radius: 4px;
  font-weight: 700;
  font-size: 11.5px;
  background: var(--tip-soft);
  color: var(--tip-tx);
}
.lamp-tip .lt-n.up { background: #f53f3f42; color: #ffb3b3; }
.lamp-tip .lt-n.mid { background: var(--tip-soft); color: var(--tip-tx); }
.lamp-tip .lt-n.dn { background: #3cbe7838; color: #8fe0b0; }
.lamp-tip .lt-li {
  display: flex;
  align-items: baseline;
  gap: 6px;
  padding: 2px 0;
}
.lamp-tip .lt-dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  flex: none;
  transform: translateY(-1px);
}
.lamp-tip .lt-dot.on { background: #ff5a5a; box-shadow: 0 0 0 2px #ff5a5a3d; }
.lamp-tip .lt-dot.off { background: #3ec97b; box-shadow: 0 0 0 2px #3ec97b33; }
.lamp-tip .lt-dot.na { background: #7d8ba3; box-shadow: none; }
.lamp-tip .lt-k {
  flex: none;
  min-width: 30px;
  color: var(--tip-tx-2);
}
.lamp-tip .lt-s { flex: none; font-weight: 700; }
.lamp-tip .lt-s.up { color: #ffb3b3; }
.lamp-tip .lt-s.dn { color: #8fe0b0; }
.lamp-tip .lt-s.na { color: var(--tip-tx-3); }
.lamp-tip .lt-d {
  color: var(--tip-tx-3);
  font-size: 11px;
}
.lamp-tip .lt-d em { font-style: normal; opacity: .78; }
.lamp-tip .lt-ft {
  margin-top: 7px;
  padding-top: 7px;
  border-top: 1px solid var(--tip-sep);
  font-weight: 700;
  color: var(--tip-tx);
}
.lamp-tip .lt-note {
  margin-top: 6px;
  padding-top: 6px;
  border-top: 1px solid var(--tip-sep);
  font-size: 11px;
  line-height: 1.6;
  color: var(--tip-tx-3);
}
.lamp-tip .lt-note b { color: var(--tip-tx-2); font-weight: 700; }

/* tip 主题变量：跟随 xeev 明暗（huibe 的 --tip-* 在这里自备，避免依赖宿主） */
body.zt-page, .lamp-tip {
  --tip-bg: #303133;
  --tip-bd: rgba(255, 255, 255, .08);
  --tip-tx: #ffffff;
  --tip-tx-2: rgba(255, 255, 255, .68);
  --tip-tx-3: rgba(255, 255, 255, .58);
  --tip-sep: rgba(255, 255, 255, .14);
  --tip-soft: rgba(255, 255, 255, .06);
  --tip-shadow: 0 6px 20px rgba(0, 0, 0, .28);
}
html.dark .lamp-tip {
  --tip-bg: #2b3446;
  --tip-bd: #5b6f92;
  --tip-tx: #f0f4fa;
  --tip-tx-2: rgba(240, 244, 250, .74);
  --tip-tx-3: rgba(240, 244, 250, .64);
  --tip-sep: rgba(255, 255, 255, .16);
  --tip-soft: rgba(255, 255, 255, .07);
  --tip-shadow: 0 8px 28px rgba(0, 0, 0, .6);
}

/* 悬停手势（huibe: [data-lamps]{cursor:help}） */
body.zt-page .table-wrap .lamps { cursor: help; }

/* ============================================================
 * 17. 去掉固定高度 + 内部滚动，表格随内容撑开、由页面滚动
 *     el-table 原本内联 height: calc(100vh - 210px)，42 行只能看 12 行
 * ============================================================ */
body.zt-page .table-wrap .el-table {
  height: auto !important;
}
body.zt-page .table-wrap .el-table__inner-wrapper {
  height: auto !important;
}
body.zt-page .table-wrap .el-table__body-wrapper,
body.zt-page .table-wrap .el-table__body-wrapper .el-scrollbar__wrap {
  height: auto !important;
  max-height: none !important;
  overflow: visible !important;
}
/* 原生滚动条（横/纵）全部隐藏，改由页面滚动 */
body.zt-page .table-wrap .el-scrollbar__bar,
body.zt-page .table-wrap .el-table__body-wrapper > .el-scrollbar__bar {
  display: none !important;
}

/* 表格宽度由 zt-polish.js 的 fitColumns 按列宽总和精确设置（px），
   这里不能写 width:100% —— el-table 是 inline-block 撑开的，
   100% 会等于旧的 1820px，列又被拉回去。 */
body.zt-page .table-wrap .el-scrollbar__view {
  display: block !important;
}

/* ============================================================
 * 18. 行高固定 80px
 *     上下 padding 归零，让 height 成为精确值（table-cell 的 height
 *     是"最小高度"语义，padding 还在就会变成 80 + padding）
 * ============================================================ */
body.zt-page .table-wrap .el-table__body td.el-table__cell {
  height: 80px;
  padding-top: 0 !important;
  padding-bottom: 0 !important;
  vertical-align: middle;
}
/* 名称列的两行内容（名称+代码 / 灯带）在 80px 内垂直居中 */
body.zt-page .table-wrap .el-table__body td.el-table__cell:nth-child(2) .cell.zt-namegrid {
  height: 100%;
}
body.zt-page .table-wrap .el-table__body .zt-namecol {
  justify-content: center;
}

/* ============================================================
 * 19. 表格底色：跟随主题（深色模式用深色卡片，不再强制白底）
 *
 * 历史：V1.2.1 曾把深色模式下的表格改成白底卡片，用户反馈
 *      「深色模式下还是显示白色」，改为跟随主题。
 *      这里统一由 --zt-panel / --zt-chip 两个令牌控制，深色浅色各取各值，
 *      不再有任何 !important 白底覆盖。
 *
 * 注意：table-flat.css 里有 `.table-wrap{background:transparent !important}`，
 *      所以底色要落在 .level 卡片和 .el-table 上，不能指望 .table-wrap。
 * ============================================================ */
body.zt-page .table-wrap {
  /* 令牌定义在 body.zt-page 上（见文件开头），此处只负责让表格吃到底色 */
  background: transparent !important;
  border-radius: 0;
}

/* el-table 自身变量跟随主题 */
body.zt-page .table-wrap .el-table {
  --el-table-bg-color: var(--zt-panel, transparent);
  --el-table-tr-bg-color: var(--zt-panel, transparent);
  --el-table-header-bg-color: var(--zt-chip);
  --el-table-border-color: var(--zt-bd);
  --el-table-text-color: var(--zt-tx);
  --el-table-row-hover-bg-color: var(--zt-hover);
  color: var(--zt-tx);
}

/* 逐层压掉 el-table 内部那几层透明容器，让它们吃 --zt-panel */
body.zt-page .table-wrap .el-table,
body.zt-page .table-wrap .el-table__inner-wrapper,
body.zt-page .table-wrap .el-table__body-wrapper,
body.zt-page .table-wrap .el-scrollbar,
body.zt-page .table-wrap .el-scrollbar__wrap,
body.zt-page .table-wrap .el-scrollbar__view,
body.zt-page .table-wrap .el-table__header-wrapper {
  background: var(--zt-panel, transparent);
}

body.zt-page .table-wrap .el-table__body tr.el-table__row > td.el-table__cell {
  background: var(--zt-panel, transparent);
  color: var(--zt-tx);
}

/* 表头：chip 底 + 次级灰字（两主题通用，颜色由令牌决定） */
body.zt-page .table-wrap .el-table__header th.el-table__cell {
  background: var(--zt-chip) !important;
  color: var(--zt-sub) !important;
  border-bottom: 1px solid var(--zt-bd) !important;
}

/* hover：令牌色淡底 */
body.zt-page .table-wrap .el-table__body tr.el-table__row:hover > td.el-table__cell {
  background: var(--zt-hover) !important;
}

/* 名称行、序号、代码统一用主题文字色 */
body.zt-page .table-wrap .zt-namecol > div,
body.zt-page .table-wrap .el-table__body td .num,
body.zt-page .table-wrap .el-table__body .mono {
  color: var(--zt-tx);
}
body.zt-page .table-wrap .zt-namecol > div .sub,
body.zt-page .table-wrap .zt-rank .zt-rk,
body.zt-page .table-wrap .el-table__body .reason {
  color: var(--zt-sub);
}

/* 涨跌色：令牌已按主题定义（深色 #ff6b62/#3fb950，浅色 #e0342f/#08703f） */
body.zt-page .table-wrap .el-table__body .num.up,
body.zt-page .table-wrap .el-table__body .up {
  color: var(--zt-up);
}
body.zt-page .table-wrap .el-table__body .num.dn,
body.zt-page .table-wrap .el-table__body .dn {
  color: var(--zt-down);
}
body.zt-page .table-wrap .el-table__body .flat {
  color: var(--zt-sub);
}
body.zt-page .table-wrap .el-table__empty-text {
  color: var(--zt-sub);
}

/* ============================================================
 * 20. 表格外层卡片容器 .level（跟随主题）
 *     结构：<div class="level" data-v-fdbb2621> <div class="table-wrap">…</div> </div>
 *     由 zt-polish.js 的 wrapInLevel() 动态包裹（幂等）。
 *     底色/边框全部走 --zt-panel / --zt-bd，切主题自动跟随。
 * ============================================================ */
body.zt-page .level[data-v-fdbb2621] {
  /* 覆盖 Ladder 组件的 var(--card)，改用本页令牌 */
  background: var(--zt-panel) !important;
  border: 1px solid var(--zt-bd) !important;
  border-radius: 10px !important;
  padding: 10px !important;
  box-shadow: var(--zt-card-shadow, 0 2px 10px rgba(0, 0, 0, .16));
  min-width: 0 !important;
  color: var(--zt-tx);
}

/* 卡片内部：表格自己带底色，去掉重复的边框与圆角 */
body.zt-page .level[data-v-fdbb2621] > .table-wrap {
  background: transparent !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none;
}

/* ============================================================
 * 21. 标签与等级徽章：把主题令牌接到组件类上
 *
 * .chip-* / .grade-* 的颜色是组件样式里写死的十六进制，不读 --zt-*，
 * 所以这里要把它们接到令牌上。深色主题用亮色系（对比度足够），
 * 浅色主题用深色系，两套都在文件开头的令牌里定义好。
 * ============================================================ */
body.zt-page .table-wrap .el-table__body .chip {
  background: var(--zt-chip) !important;
  color: var(--zt-sub) !important;
  border-color: var(--zt-bd) !important;
}
body.zt-page .table-wrap .el-table__body .chip-exec-ok,
body.zt-page .table-wrap .el-table__body .chip-blue {
  background: var(--zt-chip-blue-bg) !important;
  color: var(--zt-chip-blue-fg) !important;
  border-color: var(--zt-chip-blue-bd) !important;
}
body.zt-page .table-wrap .el-table__body .chip-green,
body.zt-page .table-wrap .el-table__body .chip-exec-no {
  background: var(--zt-chip-green-bg) !important;
  color: var(--zt-chip-green-fg) !important;
  border-color: var(--zt-chip-green-bd) !important;
}
body.zt-page .table-wrap .el-table__body .chip-red,
body.zt-page .table-wrap .el-table__body .chip-gold {
  background: var(--zt-chip-red-bg) !important;
  color: var(--zt-chip-red-fg) !important;
  border-color: var(--zt-chip-red-bd) !important;
}
body.zt-page .table-wrap .el-table__body .chip-warn,
body.zt-page .table-wrap .el-table__body .chip-warning {
  background: var(--zt-chip-warn-bg) !important;
  color: var(--zt-chip-warn-fg) !important;
  border-color: var(--zt-chip-warn-bd) !important;
}

/* 等级徽章：与行首色条同色系 */
body.zt-page .table-wrap .el-table__body .grade-A {
  background: var(--zt-grade-a-bg) !important;
  color: var(--zt-grade-a-fg) !important;
  border-color: var(--zt-grade-a-bd) !important;
}
body.zt-page .table-wrap .el-table__body .grade-B {
  background: var(--zt-grade-b-bg) !important;
  color: var(--zt-grade-b-fg) !important;
  border-color: var(--zt-grade-b-bd) !important;
}
body.zt-page .table-wrap .el-table__body .grade-C {
  background: var(--zt-grade-c-bg) !important;
  color: var(--zt-grade-c-fg) !important;
  border-color: var(--zt-grade-c-bd) !important;
}
body.zt-page .table-wrap .el-table__body .grade-D {
  background: var(--zt-grade-d-bg) !important;
  color: var(--zt-grade-d-fg) !important;
  border-color: var(--zt-grade-d-bd) !important;
}
/* S 是金色渐变实心，深色文字在两种主题下都够亮；X 深红本就够深 */
body.zt-page .table-wrap .el-table__body .grade-S {
  color: #3a2a06 !important;
}
