/* A股量化选股助手 · 视觉规范（v2 §9） */
:root {
  --up: #E64545;        /* 涨=红 */
  --down: #1FA97A;      /* 跌=绿 */
  --neutral: #8A8F99;   /* 中性灰 */
  --bg: #F5F6F8;
  --card-border: #E3E5E9;
  --orange: #E88B2E;
  --purple: #8E6BD8;
}

* { box-sizing: border-box; margin: 0; padding: 0; }

/* hidden 属性优先于一切 display 规则（如 .filter-row 的 flex），保证占位态正确隐藏 */
[hidden] { display: none !important; }

body {
  font-family: system-ui, -apple-system, "Segoe UI", "Microsoft YaHei", "PingFang SC", sans-serif;
  background: var(--bg);
  color: #2B2F36;
  font-size: 14px;
  line-height: 1.55;
}

.num, td, .big-num { font-variant-numeric: tabular-nums; }

/* ---------- 顶栏 ---------- */
.topbar { background: #fff; border-bottom: 1px solid var(--card-border); position: sticky; top: 0; z-index: 50; }
.topbar-inner {
  max-width: 1280px; margin: 0 auto; padding: 12px 16px;
  display: flex; align-items: baseline; gap: 12px;
}
.site-title { font-size: 18px; font-weight: 700; }
.date-badge {
  font-size: 12px; color: var(--neutral);
  border: 1px solid var(--card-border); border-radius: 10px; padding: 1px 10px;
}
.sync-badge {
  font-size: 12px; border-radius: 10px; padding: 1px 10px;
}
.sync-badge.ok   { color: #1a7f4b; background: #e8f6ee; border: 1px solid #bfe6cf; }
.sync-badge.warn { color: #ad6800; background: #fdf3e3; border: 1px solid #f2d8a8; }
.sync-badge.err  { color: #c0392b; background: #fdecec; border: 1px solid #f5c6c0; }
.focus-jump {
  margin-left: 10px; font-size: 12px; color: #E88B2E;
  cursor: pointer; text-decoration: underline; user-select: none;
}
/* 三处联动：M2 表格中被聚焦板块的行高亮（橙条） */
tr.focus-row td { background: #fdf6ec; }
tr.focus-row td:first-child { box-shadow: inset 3px 0 0 #E88B2E; }
.warn-bar {
  background: #FFF7E6; color: #AD6800; border-top: 1px solid #FFE1A6;
  padding: 7px 16px; font-size: 13px; text-align: center;
}
.warn-bar.proto { background: #FFF1F0; color: #CF1322; border-top-color: #FFCCC7; }

.container { max-width: 1280px; margin: 0 auto; padding: 16px; }

/* ---------- 卡片 ---------- */
.card {
  background: #fff; border: 1px solid var(--card-border); border-radius: 8px;
  padding: 16px; margin-bottom: 16px;
}
.card-title { font-size: 16px; margin-bottom: 12px; }
.src-tag { font-size: 12px; font-weight: 400; color: var(--neutral); margin-left: 8px; }
.sub-title { font-size: 14px; margin: 16px 0 8px; color: #4B5058; }
.subcard {
  background: var(--bg); border: 1px solid var(--card-border); border-radius: 8px;
  padding: 12px;
}
.placeholder {
  padding: 24px; text-align: center; color: var(--neutral);
  background: var(--bg); border: 1px dashed var(--card-border); border-radius: 8px;
}

/* ---------- M1 ---------- */
.m1-grid { display: grid; grid-template-columns: 1.2fr 1fr 1fr; gap: 12px; margin-bottom: 12px; }
.big-num { font-size: 34px; font-weight: 700; }
.big-num.up { color: var(--up); }
.big-num.down { color: var(--down); }
.big-num.flat { color: var(--neutral); }
.meta-line { color: var(--neutral); font-size: 12px; margin-top: 4px; }
.tri-line { display: flex; justify-content: space-between; padding: 3px 0; }
.jz-bar-row { display: flex; align-items: center; gap: 8px; margin: 4px 0; }
.jz-bar-label { width: 42px; color: var(--neutral); font-size: 12px; }
.jz-bar-track { flex: 1; background: #ECEDF0; border-radius: 4px; height: 12px; overflow: hidden; }
.jz-bar-fill { height: 100%; background: #5B8FF9; border-radius: 4px; }
.jz-bar-val { width: 48px; text-align: right; font-size: 12px; }
.summary-box {
  margin-top: 12px; padding: 12px; background: #FBFBFC; border: 1px solid var(--card-border);
  border-radius: 8px; font-family: Consolas, "Courier New", monospace; font-size: 12px;
  white-space: pre-wrap;
}
.chart-wrap { width: 100%; height: 340px; margin-top: 12px; }
.chart-wrap.tall { height: 420px; }

/* ---------- M2 ---------- */
/* v1.57：.databand-box 已随区间带删除 */
/* 拐点预警横幅 */
.alert-head { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; margin-bottom: 8px; }
.alert-title {
  font-size: 16px; font-weight: 700; color: #D4380D;
  padding: 2px 12px; border-radius: 6px;
  background: #FFF2E8; border: 1px solid #FFBB96;
}
.alert-legend { font-size: 12.5px; color: #4B5058; }
.alert-legend b { font-weight: 700; }
.alert-count {
  font-size: 12px; color: #D4380D; font-weight: 600;
  border: 1px solid #FFBB96; border-radius: 10px; padding: 0 8px;
}
.alert-body { display: flex; flex-wrap: wrap; gap: 8px; }
.alert-item {
  display: inline-flex; align-items: center;
  padding: 7px 14px; border-radius: 8px; font-size: 14px; font-weight: 600;
  cursor: pointer; transition: box-shadow .15s;
}
.alert-item.buy { background: #FDEDEC; color: var(--up); border: 1.5px solid #F1948A; }
.alert-item.sell { background: #E8F8F2; color: var(--down); border: 1.5px solid #7DCEA0; }
.alert-item.buy:hover { box-shadow: 0 2px 8px rgba(230,69,69,.25); }
.alert-item.sell:hover { box-shadow: 0 2px 8px rgba(31,169,122,.25); }
.advice-tag { font-size: 11px; border-radius: 4px; padding: 0 5px; margin-left: 6px; background: #fff; }
.advice-tag.valid { color: var(--up); border: 1px solid var(--up); }
.advice-tag.caution { color: var(--orange); border: 1px solid var(--orange); }
.advice-tag.downgrade { color: var(--neutral); border: 1px solid var(--neutral); }

.group-tabs { margin: 12px 0; }
/* 三签分组看板（常驻六列；group-tab-btn 仍被视图切换按钮复用） */
.group-cols { display: grid; grid-template-columns: repeat(6, 1fr); gap: 10px; margin: 12px 0; }
.group-col {
  border: 1px solid var(--card-border); border-radius: 8px; background: #fff;
  padding: 8px 10px 10px;
}
.group-col.gcol-watch { border-top: 3px solid #5B8FF9; }
.group-col.gcol-reduce { border-top: 3px solid #E88B2E; }
.group-col.gcol-avoid { border-top: 3px solid #8A8F99; }
/* 观察三组（v1.30，配色对齐脚本 gcolors：流入绿/流出蓝/平灰） */
.group-col.gcol-in { border-top: 3px solid #2CA02C; }
.group-col.gcol-out { border-top: 3px solid #1F77B4; }
.group-col.gcol-flat { border-top: 3px solid #BBBBBB; }
.group-col-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 6px; }
.group-col-name { font-size: 13.5px; font-weight: 700; }
.gcol-watch .group-col-name { color: #2F6BDD; }
.gcol-reduce .group-col-name { color: #C9701B; }
.gcol-avoid .group-col-name { color: #5A6068; }
.gcol-in .group-col-name { color: #1F7A1F; }
.gcol-out .group-col-name { color: #175A8A; }
.gcol-flat .group-col-name { color: #8A8F99; }
.group-col-cnt {
  font-size: 12px; font-weight: 700; border-radius: 10px; padding: 0 9px;
}
.cnt-watch { background: #EBF2FE; color: #2F6BDD; }
.cnt-reduce { background: #FDF3E7; color: #C9701B; }
.cnt-avoid { background: #F0F1F3; color: #5A6068; }
.cnt-in { background: #E8F5E9; color: #1F7A1F; }
.cnt-out { background: #E8F1F8; color: #175A8A; }
.cnt-flat { background: #F0F1F3; color: #8A8F99; }
.group-col-body { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; min-height: 30px; }
.group-chip {
  border-radius: 6px; padding: 4px 11px; font-size: 12.5px; cursor: pointer;
  border: 1px solid var(--card-border); background: var(--bg);
}
.group-chip:hover { border-color: #5B8FF9; }
.group-tab-btn {
  border: 1px solid var(--card-border); background: #fff; border-radius: 6px;
  padding: 4px 14px; cursor: pointer; font-size: 13px;
}
.group-tab-btn.active { border-color: #5B8FF9; color: #5B8FF9; font-weight: 600; }
.caution-tag {
  font-size: 11px; color: var(--neutral); border: 1px solid var(--neutral);
  border-radius: 4px; padding: 0 4px; margin-left: 5px;
}

.overlay-head { display: flex; justify-content: space-between; align-items: center; margin: 12px 0 6px; gap: 10px; flex-wrap: wrap; }
.view-switch { display: inline-flex; gap: 6px; }
.overlay-focus { display: flex; flex-wrap: wrap; gap: 4px; margin: 4px 0 8px; }
.focus-chip {
  border: 1px solid var(--card-border); background: #fff; border-radius: 5px;
  padding: 1px 8px; font-size: 11.5px; cursor: pointer; color: #4B5058;
}
.focus-chip:hover { border-color: #5B8FF9; }
.focus-chip.active { border-color: #E88B2E; color: #E88B2E; font-weight: 600; background: #FDF6EE; }
.focus-chip.all { border-style: dashed; color: var(--neutral); }
.focus-chip.all.active { border-color: #5B8FF9; color: #5B8FF9; background: #F0F6FF; font-weight: 600; }

/* ---------- 表格 ---------- */
.table-wrap { overflow-x: auto; }
.data-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.data-table th, .data-table td {
  padding: 6px 10px; text-align: left; border-bottom: 1px solid #EFF0F2; white-space: nowrap;
}
.data-table th { color: var(--neutral); font-weight: 500; font-size: 12px; background: #FBFBFC; }
/* v1.71 M7 表头排序：可排序列加hover 反馈 + 箭头指示（纯展示层，不改任何指标） */
.data-table th.sortable { cursor: pointer; user-select: none; position: relative; padding-right: 18px; }
.data-table th.sortable:hover { color: #2B3038; background: #F2F4F7; }
.data-table th.sortable::after {
  content: '⇅'; position: absolute; right: 6px; top: 50%; transform: translateY(-50%);
  font-size: 9px; color: #C4C7CE; line-height: 1;
}
.data-table th.sortable.sort-desc::after { content: '▼'; font-size: 8px; color: #185FA5; }
.data-table th.sortable.sort-asc::after  { content: '▲'; font-size: 8px; color: #185FA5; }
.data-table th.sortable.sorted { color: #185FA5; background: #F0F6FF; }
.data-table th.sortable:focus-visible { outline: 2px solid #378ADD; outline-offset: -2px; }
.data-table tbody tr:hover { background: #F7F8FA; }
.data-table tbody tr.clickable { cursor: pointer; }
.data-table tbody tr.expanded { background: #F0F6FF; }
tr.badge-row td { padding: 0 10px 8px; border-bottom: 1px solid var(--card-border); }
.v-up { color: var(--up); }
.v-down { color: var(--down); }
.v-flat { color: var(--neutral); }
.v-miss { color: #C0C3C9; }

.sig-badge {
  display: inline-block; font-size: 11.5px; border-radius: 4px; padding: 1px 7px; white-space: nowrap;
}
.sig-ICE_REVERSAL { color: var(--orange); border: 1px solid var(--orange); }
.sig-GOLDEN_CROSS, .sig-RALLY { color: var(--up); border: 1px solid var(--up); }
.sig-OVERHEAT { color: var(--purple); border: 1px solid var(--purple); }
.sig-DEAD_CROSS { color: var(--down); border: 1px solid var(--down); }
.sig-NONE, .sig-unknown { color: var(--neutral); border: 1px solid var(--neutral); }
/* M6 月周双红类型徽标：强势红（两周期 DIF 均>0）橙底强调，修复红中性 */
.sig-STRONG { color: #fff; background: var(--orange); border: 1px solid var(--orange); font-weight: 600; }
.sig-REPAIR { color: var(--neutral); border: 1px solid var(--neutral); }

.env-badge { display: inline-block; font-size: 12px; border-radius: 4px; padding: 1px 8px; margin-left: 8px; }
.env-积极 { color: var(--up); border: 1px solid var(--up); }
.env-中性 { color: var(--orange); border: 1px solid var(--orange); }
.env-谨慎 { color: var(--down); border: 1px solid var(--down); }

.p-badge {
  display: inline-block; font-size: 11px; border-radius: 4px; padding: 0 6px; margin-right: 3px;
  border: 1px solid #5B8FF9; color: #5B8FF9;
}
.p-badge.off { border-color: #D5D8DD; color: #C0C3C9; }
.st-active { color: var(--up); border: 1px solid var(--up); border-radius: 4px; padding: 0 7px; font-size: 12px; }
.st-watch { color: var(--orange); border: 1px solid var(--orange); border-radius: 4px; padding: 0 7px; font-size: 12px; }

.count-badge {
  font-size: 12px; color: #fff; background: #5B8FF9; border-radius: 10px; padding: 1px 9px; margin-left: 6px;
}

/* ---------- M3 ---------- */
.multi-hit { color: #D46B08; font-weight: 600; background: #FFF7E6; }
.multi-badge {
  font-size: 10.5px; font-weight: 600; color: #D46B08;
  border: 1px solid #FFD591; border-radius: 8px; padding: 0 5px; margin-left: 4px; background: #fff;
}
.m3a-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.m3a-col h4 { font-size: 13px; margin-bottom: 6px; color: #4B5058; }
.m3a-col table { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.m3a-col th, .m3a-col td { padding: 3px 6px; text-align: left; border-bottom: 1px solid #EFF0F2; }
.m3a-col th { color: var(--neutral); font-weight: 500; font-size: 11.5px; }
.filter-row { display: flex; align-items: center; gap: 10px; margin: 8px 0; }
.filter-input {
  border: 1px solid var(--card-border); border-radius: 6px; padding: 6px 12px; width: 280px; font-size: 13px;
}
.filter-hint { color: var(--neutral); font-size: 12px; }
.his-summary-row { padding: 3px 0; font-size: 12.5px; color: #4B5058; border-bottom: 1px dashed #EFF0F2; }
.his-detail { margin-top: 8px; font-size: 12.5px; max-height: 260px; overflow-y: auto; }
.his-detail .his-day { margin-bottom: 8px; }
.his-detail .his-day-title { font-weight: 600; margin-bottom: 3px; }
.his-detail .his-item { color: #4B5058; padding-left: 10px; }
.his-item .dir-new { color: var(--up); }
.his-item .dir-out { color: var(--down); }

/* ---------- 附件（折叠明细） ---------- */
details.appendix > summary {
  cursor: pointer; list-style: none; font-size: 15px; font-weight: 600; color: #4B5058;
  padding: 2px 0;
}
details.appendix > summary::-webkit-details-marker { display: none; }
details.appendix > summary::before { content: "▸ "; color: var(--neutral); }
details.appendix[open] > summary::before { content: "▾ "; }
.appendix-hint { font-weight: 400; font-size: 12.5px; color: var(--neutral); margin-left: 6px; }
details.appendix[open] > summary {
  margin-bottom: 10px; padding-bottom: 8px;
  border-bottom: 1px dashed var(--card-border);
}

/* ---------- 页脚 ---------- */
.footer { max-width: 1280px; margin: 0 auto; padding: 16px; color: var(--neutral); font-size: 12.5px; }
.footer-title { font-weight: 600; margin-bottom: 6px; color: #4B5058; }
.file-status { list-style: none; display: flex; flex-wrap: wrap; gap: 6px 18px; }
.footer-pub { font-size: 12.5px; }
.footer-pub a { color: #3367D6; text-decoration: none; word-break: break-all; }
.footer-pub a:hover { text-decoration: underline; }
/* M2/M7 微图例（v1.46/v1.47）：表头上方一行小字，非帮助模块 */
.m7-legend, .m2-legend { font-size: 11.5px; color: #8A8F99; margin: 2px 0 8px; line-height: 1.6; }
/* 双拐共振星标（v1.49 建/v1.52 终态）：短线+中线同时由向下拐头向上 */
.m7-star { color: #E88B2E; font-weight: 700; }
.m7-dual { background: #FDF3E7; color: #B96A15; }

/* ---------- v1.76 M7 剪刀差列 + 双拐质量四象限（展示层，不改判定） ---------- */
/* 剪刀差 = short − mid：正=短线领先(刚启动) / 负=中线领先(蓄力待发) */
.m7-gap { font-variant-numeric: tabular-nums; }
.m7-gap .v-item { font-weight: 500; }
.m7-gap.gap-up .v-item { color: var(--up); }     /* A股习惯：涨=红 */
.m7-gap.gap-dn .v-item { color: var(--down); }   /* 跌=绿 */
.m7-gap.gap-up { background: rgba(232, 139, 46, .06); }
.m7-gap.gap-dn { background: rgba(22, 160, 130, .05); }
/* 表头二级说明文字（<br> 内的 span） */
.data-table th .th-sub { font-size: 10px; color: #9AA0A8; font-weight: 400; letter-spacing: .3px; }

/* 双拐质量四象限标签：挂在行业名单元格内，不另开一列 */
.m7-quad {
  display: inline-block; margin-left: 6px; padding: 0 6px;
  font-size: 11px; line-height: 17px; border-radius: 9px;
  vertical-align: middle; white-space: nowrap; cursor: help;
  border: 1px solid transparent;
}
.m7-quad.q1 { background: #EAF3DE; color: #3B6D11; border-color: #C0DD97; }  /* 优先 */
.m7-quad.q2 { background: #FAEEDA; color: #854F0B; border-color: #FAC775; }  /* 关注 */
.m7-quad.q3 { background: #E6F1FB; color: #185FA5; border-color: #B5D4F4; }  /* 偏强 */
.m7-quad.q4 { background: #FCEBEB; color: #A32D2D; border-color: #F7C1C1; }  /* 回避 */
/* 说明行内的统计标签：稍小一号、带间距 */
#m7-quad-note { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 6px; }
#m7-quad-note .m7-quad { margin-left: 0; }
/* v1.73 索引降级/超时态：橙色虚线边框 + 标题警示，绝不静默展示与脚本不同的结论 */
.alert-count.is-degraded { background: #FCEBEB; color: #A32D2D; border: 1px dashed #E24B4A; cursor: help; }
.fs-ok::before { content: "✓ "; color: var(--down); }
.fs-miss::before { content: "✗ "; color: var(--up); }
.fs-warn::before { content: "⚠ "; color: var(--orange); }

/* ---------- 展开图表行 ---------- */
.expanded-chart-cell { padding: 8px 10px 12px !important; }
.expanded-chart { width: 100%; height: 300px; }

@media (max-width: 900px) {
  .m1-grid, .m3a-grid, .group-cols { grid-template-columns: 1fr; }
}

/* ---------- M1 多周期操作罗盘（v1.17） ---------- */
.compass { margin-top: 10px; padding: 10px 14px; border: 1px solid var(--card-border); border-radius: 8px; background: #FBFCFE; }
.compass-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.cp-chip { display: inline-block; font-size: 12.5px; font-weight: 600; border-radius: 5px; padding: 2px 10px; white-space: nowrap; }
.cp-ok      { color: #fff; background: var(--up); }
.cp-warn    { color: #fff; background: var(--orange); }
.cp-caution { color: var(--orange); border: 1.5px solid var(--orange); }
.cp-probe   { color: #fff; background: #5B8FF9; }
.cp-idle    { color: var(--neutral); border: 1px solid var(--neutral); }
.cp-liquidate { color: #fff; background: #B03A3A; }
.compass-title { font-size: 13px; font-weight: 600; color: #3A3F47; }
.compass-guide { margin-top: 6px; font-size: 12.5px; line-height: 1.7; color: #4A4F57; }

.doctrine { margin-top: 8px; border: 1px dashed var(--card-border); border-radius: 8px; padding: 0 12px; }
.doctrine-summary { cursor: pointer; font-size: 12.5px; color: #6A6F77; padding: 8px 0; user-select: none; }
.doctrine[open] .doctrine-summary { border-bottom: 1px dashed var(--card-border); }
.doctrine-body { padding: 8px 0 10px; }
.doctrine-item { display: flex; gap: 10px; align-items: baseline; padding: 3px 0; }
.doctrine-tag { flex: none; font-size: 11.5px; font-weight: 600; border-radius: 4px; padding: 1px 8px; white-space: nowrap; }
.dt-def   { color: var(--neutral); border: 1px solid var(--neutral); }
.dt-probe { color: #fff; background: #5B8FF9; }
.dt-cut   { color: #fff; background: var(--orange); }
.dt-add   { color: var(--down); border: 1px solid var(--down); }
.dt-div   { color: var(--purple); border: 1px solid var(--purple); }
.doctrine-text { font-size: 12.5px; line-height: 1.7; color: #4A4F57; }

/* ---------- M1 减仓链进度行（v1.18，消费 F1.chain，纯展示） ---------- */
.chain-row { display: flex; align-items: center; gap: 10px; margin-top: 8px; flex-wrap: wrap; }
.chain-label { font-size: 12px; font-weight: 600; color: #6A6F77; }
.chain-stage { font-size: 12px; font-weight: 600; border-radius: 4px; padding: 1px 8px; }
.ch-none       { color: var(--neutral); border: 1px solid var(--neutral); }
.ch-cut        { color: var(--orange); border: 1.5px solid var(--orange); }
.ch-readd      { color: #5B8FF9; border: 1.5px solid #5B8FF9; }
.ch-liquidated { color: #fff; background: #B03A3A; }
.chain-adjust { font-size: 12.5px; font-weight: 600; }
.chain-adjust.neg { color: var(--orange); }
.chain-adjust.pos { color: var(--down); }
.chain-timeline { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.chain-event { font-size: 11.5px; border-radius: 4px; padding: 1px 7px; white-space: nowrap; }
.chain-event.cut   { color: var(--orange); background: #FDF3E7; border: 1px solid #F0D9BC; }
.chain-event.readd { color: var(--down); background: #E9F7F2; border: 1px solid #BFE8DA; }
.chain-hint { margin-top: 6px; font-size: 12.5px; line-height: 1.7; color: #3A3F47; font-weight: 600; }

/* v1.19 M2 轮动图三看法：位置速览实时行 + 位置标签 */
.reading-live{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:4px 0 8px;border-bottom:1px dashed var(--card-border);margin-bottom:6px}
.reading-label{font-size:12px;font-weight:600;color:#6A6F77}
.reading-name{font-size:12.5px;color:#3A3F47}
.pos-chip{font-size:11.5px;border-radius:4px;padding:1px 7px;white-space:nowrap}
.pos-high{color:var(--up);border:1px solid var(--up)}
.pos-low{color:var(--down);border:1px solid var(--down)}
.pos-mid{color:var(--neutral);border:1px solid var(--neutral)}

/* v1.22 全站一屏摘要条：跨模块只读汇总卡 */
.summary-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin-bottom:16px}
.sum-card{background:#fff;border:1px solid var(--card-border);border-radius:8px;padding:10px 12px;cursor:pointer;transition:box-shadow .15s}
.sum-card:hover{box-shadow:0 2px 10px rgba(0,0,0,.09)}
.sum-label{font-size:11.5px;font-weight:600;color:#8A8F99}
.sum-value{font-size:16px;font-weight:700;color:#3A3F47;margin-top:4px}
.sum-value .cp-chip{font-size:11px;font-weight:600;vertical-align:2px}
.sum-sub{font-size:11.5px;color:#6A6F77;margin-top:3px}
.sum-miss{color:var(--neutral)}
.sum-warn{color:var(--orange)}

/* v1.24 警示条分级：≤3 天软提示（浅黄）；>3 天维持高亮 */
.warn-bar.soft { background: #FFFBE6; color: #AD6800; border-top-color: #FFE58F; font-weight: 400; }
/* v1.24 F6 诊断串图例 */
.diag-legend { font-size: 11.5px; color: #8A8F99; margin: -4px 0 8px; }

/* v1.30 分组看板六列：中窄屏降为 3 列 */
@media (max-width: 1200px) {
  .group-cols { grid-template-columns: repeat(3, 1fr); }
}

/* ===== v1.34：F9 均占深潜面板 + M7 二级行业排名 ===== */
.jz-deep { margin-top: 12px; border-top: 1px dashed var(--card-border); padding-top: 10px; }
.jz-deep-head { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; margin-bottom: 8px; }
.jz-deep-title { font-size: 14px; font-weight: 700; color: #3A3F47; }
.jz-deep-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 12px; margin-bottom: 10px; }
.jz-deep-card { background: #FAFBFC; border: 1px solid var(--card-border); border-radius: 8px; padding: 10px 12px; }
.jz-deep-chart { width: 100%; height: 320px; }
.jz-deep-summary { font-family: inherit; white-space: pre-wrap; font-size: 12.5px; color: #4A4F57; line-height: 1.7; background: #FAFBFC; border: 1px solid var(--card-border); border-radius: 8px; padding: 10px 12px; margin: 10px 0 0; }
.jz-deep-missing { font-size: 12.5px; color: var(--neutral); background: #F0F1F3; border-radius: 8px; padding: 10px 12px; }
.struct-tag { display: inline-block; font-size: 11.5px; border-radius: 10px; padding: 1px 10px; margin-top: 6px; }
.struct-tag.st-bottom { color: var(--up); border: 1px solid var(--up); }      /* 多头排列=红 */
.struct-tag.st-top { color: var(--down); border: 1px solid var(--down); }      /* 空头排列=绿 */
.struct-tag.st-mixed { color: var(--neutral); border: 1px solid var(--neutral); } /* 缠绕=灰 */
.v-item { margin-right: 10px; }
.m7-wrap { max-height: 560px; overflow: auto; }
#m7-table tbody tr { cursor: pointer; }
#m7-table tbody tr:hover { background: #F7F8FA; }

/* v1.55 M5 双条件筛选：开关按钮 + 行内徽标 */
.m5-filter { font-size: 11.5px; padding: 1px 10px; margin-left: 8px; border-radius: 10px;
  border: 1px solid var(--orange, #E88B2E); color: var(--orange, #E88B2E); background: #fff; cursor: pointer; }
.m5-filter.on { background: var(--orange, #E88B2E); color: #fff; font-weight: 600; }
.m5-tag { font-size: 11px; border-radius: 4px; padding: 0 4px; margin-left: 4px; white-space: nowrap; }
.m5-tag.m5-macd { color: #2F6BDD; border: 1px solid #5B8FF9; }
.m5-tag.m5-dual { color: #E88B2E; border: 1px solid #E88B2E; font-weight: 600; }
