/* === 策略实验室 tab（lab）=== */
.lab-warning {
  background: #fff9e6;
  border: 1px solid #ffe58f;
  border-radius: 6px;
  padding: 8px 14px;
  margin-bottom: 12px;
  font-size: 13px;
  color: #ad6800;
  font-weight: 500;
}
.lab-title {
  font-size: 16px;
  color: var(--text-1);
  margin: 0 0 12px;
}
.lab-signal-stat {
  padding: 8px 0;
  font-size: 13px;
  color: var(--text-2);
}
.lab-signal-stat b { color: #9c27b0; }

/* 分区 tab */
.lab-zone-tabs {
  display: flex;
  gap: 4px;
  margin-bottom: 8px;
  flex-wrap: wrap;
}
.lab-zone-tab {
  padding: 7px 14px;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  background: var(--bg-card);
  color: var(--text-2);
  font-size: 13px;
  cursor: pointer;
  transition: all 0.15s;
}
.lab-zone-tab:hover { background: var(--bg-hover); }
.lab-zone-tab.active {
  background: var(--primary);
  color: #fff;
  border-color: var(--primary);
}
.lab-zone-count {
  font-size: 11px;
  opacity: 0.7;
  margin-left: 2px;
}
.lab-zone-desc {
  font-size: 12px;
  color: var(--text-3);
  margin-bottom: 12px;
  padding: 0 2px;
}

/* 融合信号搜索框（按策略名/条件模糊过滤卡片列表） */
.lab-fusion-search-wrap { margin-bottom: 10px; }
.lab-fusion-search {
  width: 100%;
  padding: 8px 12px;
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-sm);
  font-size: 13px;
  background: var(--bg-card);
  color: var(--text-1);
  -webkit-appearance: none;
  appearance: none;
  transition: border-color 0.15s;
  box-sizing: border-box;
}
.lab-fusion-search:focus {
  outline: 2px solid var(--primary);
  outline-offset: -1px;
  border-color: var(--primary);
}
.lab-fusion-search::placeholder { color: var(--text-4); }

/* 策略卡片列表 */
.lab-strategy-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
  gap: 10px;
  max-height: 640px; overflow-y: auto;
}
.lab-strategy-card {
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 12px 14px;
  cursor: pointer;
  transition: all 0.15s;
  background: var(--bg-card);
}
.lab-strategy-card:hover {
  border-color: #9c27b0;
  box-shadow: 0 2px 8px rgba(156, 39, 176, 0.1);
}
.lab-card-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 6px;
}
.lab-card-name {
  font-size: 14px;
  font-weight: 600;
  color: var(--text-1);
}
.lab-card-trigger {
  font-size: 12px;
  color: var(--text-2);
  line-height: 1.5;
  margin-bottom: 4px;
}
.lab-card-summary {
  font-size: 11px;
  color: var(--text-3);
  margin-bottom: 4px;
  font-family: monospace;
}
.lab-card-conclusion {
  font-size: 12px;
  color: #9c27b0;
  line-height: 1.5;
  padding-top: 4px;
  border-top: 1px dashed var(--border);
}

/* 状态标签 */
.lab-tag {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 4px;
  font-size: 11px;
  font-weight: 500;
  white-space: nowrap;
}
.lab-tag-live { background: #e8f5e9; color: #2e7d32; border: 1px solid #c8e6c9; }
.lab-tag-partial { background: #fff8e1; color: #f57c00; border: 1px solid #ffe082; }
.lab-tag-exp { background: #f3e5f5; color: #9c27b0; border: 1px solid #e1bee7; }
.lab-tag-dev { background: var(--bg-hover); color: var(--text-3); border: 1px solid var(--border-strong); }
.lab-tag-excluded { background: #fbe9e7; color: #bf360c; border: 1px solid #ffccbc; }
.lab-tag-side {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 4px;
  font-size: 11px;
  color: var(--text-3);
  background: var(--bg-hover);
  border: 1px solid var(--border);
  margin-left: 6px;
}

/* 详情页 */
.lab-back-btn {
  padding: 5px 14px;
  border: 1px solid var(--border-strong);
  border-radius: 6px;
  background: var(--bg-card);
  color: var(--text-2);
  font-size: 13px;
  cursor: pointer;
  margin-bottom: 12px;
  transition: all 0.15s;
}
.lab-back-btn:hover { border-color: var(--primary); color: var(--primary); }
.lab-detail-header {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 12px;
}
.lab-detail-title {
  font-size: 18px;
  color: var(--text-1);
  margin: 0;
  font-weight: 600;
}
.lab-detail-key {
  font-size: 12px;
  color: var(--text-3);
  background: var(--bg-hover);
  padding: 1px 6px;
  border-radius: 3px;
  font-family: monospace;
}
.lab-doc-card { border-left: 3px solid var(--primary); }
.lab-doc-content p {
  margin: 6px 0;
  font-size: 13px;
  line-height: 1.7;
  color: var(--text-2);
}
.lab-doc-content b { color: var(--text-1); }

/* 图表区 + 占位 */
.lab-chart-section { margin-bottom: 12px; }
.lab-placeholder {
  border: 2px dashed var(--border-strong);
  border-radius: 8px;
  padding: 40px 20px;
  text-align: center;
  background: var(--bg-hover);
}
.lab-placeholder-icon { font-size: 32px; margin-bottom: 8px; }
.lab-placeholder-text { font-size: 15px; color: var(--text-3); font-weight: 500; margin-bottom: 4px; }
.lab-placeholder-sub { font-size: 12px; color: var(--text-4); }

/* 多周期回测矩阵 */
.lab-matrix-card { border-left: 3px solid #9c27b0; }
.lab-matrix-wrap { overflow-x: auto; margin-bottom: 8px; }
.lab-matrix-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 12px;
  min-width: 420px;
}
.lab-matrix-table th,
.lab-matrix-table td {
  padding: 5px 6px;
  text-align: center;
  border: 1px solid var(--border);
}
.lab-matrix-table th {
  background: var(--bg-hover);
  color: var(--text-2);
  font-weight: 500;
  white-space: nowrap;
}
.lab-matrix-rowhead {
  font-weight: 500;
  color: var(--text-1);
  background: var(--bg-hover);
  white-space: nowrap;
}
.lab-matrix-cell {
  vertical-align: top;
  line-height: 1.4;
}
.lab-matrix-cell span { display: block; }
.lab-mw { font-weight: 600; color: var(--text-1); }
.lab-mp { font-size: 11px; color: var(--text-3); }
.lab-mn { font-size: 10px; color: var(--text-4); }
.lab-matrix-pass {
  border: 2px solid #c92a2a;
}
.lab-matrix-pass .lab-mw { color: #c92a2a; }
.lab-matrix-na { color: var(--text-4); }
.lab-matrix-foot { padding-top: 8px; border-top: 1px dashed var(--border); }
.lab-matrix-source { font-size: 11px; color: var(--text-3); margin-bottom: 2px; }
.lab-matrix-note { font-size: 11px; color: var(--text-4); }
.lab-matrix-empty { font-size: 13px; color: var(--text-4); text-align: center; padding: 20px; }
.lab-matrix-loading { font-size: 13px; color: var(--text-3); text-align: center; padding: 20px; }

/* 自白黄块（多段） */
.lab-warning-essay { padding: 10px 14px; line-height: 1.6; }
.lab-warning-essay .lab-warning-head { font-weight: 600; margin-bottom: 4px; }
.lab-warning-essay p { margin: 4px 0; font-weight: 400; font-size: 12.5px; color: #874d00; }
.lab-warning-essay strong { color: #d4380d; font-weight: 700; }

/* 矩阵三色分级 */
.lab-matrix-good { background: #fff1f0; }
.lab-matrix-warn { background: #fffbe6; }
.lab-matrix-bad { background: #f0f9eb; }
.lab-matrix-bad .lab-mw { color: #2e7d32; }
.lab-matrix-good .lab-mw { color: #c92a2a; }

/* 矩阵格内：平均收益 + 100元换算 */
.lab-mm { font-size: 11px; color: var(--text-2); }
.lab-my { font-size: 10px; color: #9c27b0; }

/* 矩阵图例栏 */
.lab-matrix-legend {
  font-size: 12px; color: var(--text-2); background: var(--bg-hover);
  padding: 8px 10px; border-radius: 6px; margin-bottom: 8px;
  display: flex; flex-wrap: wrap; gap: 4px 12px;
}
.lab-matrix-legend b { color: var(--text-1); }
.lab-matrix-legend span { white-space: nowrap; }
.lab-matrix-tip {
  font-size: 11px; color: #ad6800; background: #fff9e6;
  padding: 6px 10px; border-radius: 4px; margin-bottom: 8px;
}
.lab-matrix-legend-color {
  display: flex; gap: 10px; margin-top: 6px; font-size: 11px;
}
.lab-matrix-legend-color span { padding: 2px 8px; border-radius: 3px; font-weight: 500; }

/* 模拟回测卡片（配对交易） */
.lab-sim-card { margin-top: 16px; }
.lab-sim-card h3 { margin-bottom: 4px; }
.lab-sim-controls { display: flex; gap: 12px; align-items: center; margin-bottom: 8px; flex-wrap: wrap; }
/* 配对策略卡片切换（替代下拉，带摘要+三色分级） */
.lab-sim-pair-section { margin-bottom: 10px; }
.lab-sim-pair-label { font-size: 12px; font-weight: 600; color: var(--text-2); margin-bottom: 6px; }
.lab-sim-pair-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(128px, 1fr));
  gap: 6px;
}
.lab-sim-pair-card {
  display: flex;
  flex-direction: column;
  gap: 3px;
  border: 2px solid transparent;
  border-radius: 8px;
  padding: 7px 9px;
  cursor: pointer;
  transition: all 0.15s;
  text-align: left;
  font-family: inherit;
  min-width: 0;
  -webkit-appearance: none;
  appearance: none;
}
.lab-sim-pair-card:hover { box-shadow: 0 2px 8px var(--shadow); transform: translateY(-1px); }
.lab-sim-pair-card.active {
  border-color: var(--primary);
  box-shadow: 0 0 0 2px rgba(51,112,255,0.25);
}
.lab-sim-pair-card .pc-name {
  font-size: 12px;
  font-weight: 600;
  color: var(--text-1);
  line-height: 1.3;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.lab-sim-pair-card .pc-ret { font-size: 15px; font-weight: 700; line-height: 1.2; }
.lab-sim-pair-card .pc-meta { font-size: 10px; color: var(--text-3); display: flex; gap: 6px; flex-wrap: wrap; align-items: center; }
.lab-sim-pair-card .pc-win { font-weight: 600; }
.lab-sim-pair-card .pc-n { color: var(--text-4); }
/* 三色分级：背景复用 .lab-matrix-good/warn/bad，数值色红好/绿差（国人风格） */
.lab-sim-pair-card .pc-lvl-good { color: #c92a2a; }
.lab-sim-pair-card .pc-lvl-warn { color: #ad6800; }
.lab-sim-pair-card .pc-lvl-bad { color: #2e7d32; }
.lab-sim-mode-toggle { display: flex; gap: 0; border-radius: 6px; overflow: hidden; border: 1px solid var(--border-strong); }
.lab-sim-mode-toggle button { padding: 4px 12px; border: none; background: var(--bg-card); font-size: 12px; cursor: pointer; color: var(--text-2); transition: all 0.15s; }
.lab-sim-mode-toggle button.active { background: var(--primary); color: #fff; font-weight: 600; }
.lab-sim-mode-toggle button:hover:not(.active) { background: var(--bg-hover); }
.lab-sim-desc { font-size: 12px; color: var(--text-3); margin-bottom: 12px; line-height: 1.5; }
.lab-sim-empty { font-size: 13px; color: var(--text-4); text-align: center; padding: 20px; }
.lab-sim-full-loading { font-size: 13px; color: var(--text-3); text-align: center; padding: 24px 16px; background: var(--bg-hover); border-radius: 8px; }
.lab-full-prog { height: 6px; background: var(--border); border-radius: 3px; margin-top: 8px; overflow: hidden; }
.lab-full-prog > div { height: 100%; background: var(--primary); border-radius: 3px; transition: width .2s; }
.lab-sim-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin-bottom: 16px; }
.lab-sim-stat { background: var(--bg-hover); border-radius: 8px; padding: 12px 14px; }
.lab-sim-stat .k { display: block; font-size: 12px; color: var(--text-3); margin-bottom: 4px; }
.lab-sim-stat .v { display: block; font-size: 18px; font-weight: 700; }
.lab-sim-stat .sub { display: block; font-size: 11px; color: var(--text-3); margin-top: 2px; }
.lab-sim-equity { margin-bottom: 16px; }
.lab-sim-equity-label { font-size: 13px; font-weight: 600; color: var(--text-1); margin-bottom: 2px; }
.lab-sim-trades { }
.lab-sim-trades-label { font-size: 13px; font-weight: 600; color: var(--text-1); margin-bottom: 6px; }
.lab-sim-table-wrap { overflow-x: auto; }
.lab-sim-table-wrap table { width: 100%; border-collapse: collapse; font-size: 12px; }
.lab-sim-table-wrap th { background: var(--bg-hover); padding: 6px 10px; text-align: left; font-weight: 600; color: var(--text-2); white-space: nowrap; border-bottom: 1px solid var(--border); }
.lab-sim-table-wrap td { padding: 5px 10px; border-bottom: 1px solid var(--bg-hover); white-space: nowrap; }
.lab-sim-table-wrap tr:nth-child(even) td { background: var(--bg-hover); }
.lab-sim-table-wrap tr:hover td { background: var(--bg-hover); }
.lab-sim-pager { display: flex; align-items: center; justify-content: center; gap: 12px; margin-top: 8px; }
.lab-sim-pager button { padding: 4px 12px; border: 1px solid var(--border-strong); border-radius: 4px; background: var(--bg-card); font-size: 12px; cursor: pointer; color: var(--text-2); transition: all 0.15s; }
.lab-sim-pager button:hover:not(:disabled) { background: var(--bg-hover); }
.lab-sim-pager button:disabled { opacity: 0.4; cursor: not-allowed; }
.lab-sim-page-info { font-size: 12px; color: var(--text-3); }

/* 双策略上下常驻布局（取消左右双栏/tab切换，2策略各自独立） */
.lab-sim-strat-section {
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 14px;
  background: var(--bg-card);
  margin-bottom: 16px;
}
.lab-sim-strat-section:last-child { margin-bottom: 0; }
.lab-sim-strat-head {
  display: flex;
  align-items: baseline;
  gap: 8px;
  margin-bottom: 10px;
  padding: 6px 0 8px;
  border-bottom: 1px solid var(--border);
  position: sticky;        /* UX：滚动时吸顶，常驻显示当前配对名 */
  top: var(--tab-h, 41px);
  background: var(--bg-card);
  z-index: 30;
}
.lab-sim-strat-name { font-size: 15px; font-weight: 700; color: var(--text-1); flex-shrink: 0; }
.lab-sim-strat-pair { font-size: 13px; font-weight: 600; color: var(--primary); flex-shrink: 0; }
.lab-sim-strat-desc { font-size: 12px; color: var(--text-3); }
/* mode-block 嵌入 section 内，无边框/padding */
.lab-sim-mode-block { min-width: 0; }
/* 当前配对名标注（stats 数据前，标注当前是哪个配对策略） */
.lab-sim-cur-pair {
  font-size: 12px;
  font-weight: 600;
  color: var(--primary);
  background: var(--primary-bg);
  padding: 4px 10px;
  border-radius: 4px;
  margin-bottom: 10px;
  display: inline-block;
}
/* 配对买卖点描述（策略卡与数据卡片之间的内容隔断 + 当前配对标注） */
.lab-sim-pair-desc {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  padding: 8px 12px;
  margin-bottom: 12px;
  background: linear-gradient(90deg, var(--primary-bg) 0%, var(--bg-hover) 100%);
  border-left: 3px solid var(--primary);
  border-radius: 4px;
  font-size: 12px;
  line-height: 1.5;
}
.lab-sim-pair-desc .ps-buy, .lab-sim-pair-desc .ps-sell {
  display: flex;
  align-items: center;
  gap: 5px;
  flex-wrap: wrap;
}
.lab-sim-pair-desc .ps-tag {
  font-size: 11px;
  font-weight: 700;
  padding: 1px 6px;
  border-radius: 3px;
  color: #fff;
  flex-shrink: 0;
}
.lab-sim-pair-desc .ps-buy .ps-tag { background: #c92a2a; }
.lab-sim-pair-desc .ps-sell .ps-tag { background: #2e7d32; }
.lab-sim-pair-desc .ps-trig { font-size: 11px; color: var(--text-3); }
.lab-sim-pair-desc .ps-x { font-size: 13px; font-weight: 700; color: var(--primary); flex-shrink: 0; }
/* 交易记录折叠 */
.lab-sim-trades-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  cursor: pointer;
  padding: 8px 10px;
  background: var(--bg-hover);
  border-radius: 6px;
  transition: background 0.15s;
  user-select: none;
}
.lab-sim-trades-header:hover { background: var(--bg-hover); }
.lab-sim-trades-toggle { font-size: 12px; color: var(--primary); font-weight: 600; }
.lab-sim-trades-body { margin-top: 8px; }
/* pair card 双模式摘要 */
.lab-sim-pair-card .pc-mode-row { display: flex; align-items: center; gap: 4px; font-size: 11px; }
.lab-sim-pair-card .pc-mode-tag { color: var(--text-3); font-size: 10px; min-width: 24px; }
.lab-sim-pair-card .pc-ret-sm { font-size: 12px; font-weight: 600; }
.lab-sim-pair-card .pc-win-sm { font-size: 10px; color: var(--text-3); }

/* H5 适配 */
@media (max-width: 600px) {
  .lab-strategy-list { grid-template-columns: 1fr; }
  .lab-detail-title { font-size: 16px; }
  .lab-zone-tab { padding: 6px 10px; font-size: 12px; }
  .lab-sim-controls { flex-direction: column; align-items: stretch; gap: 6px; }
  .lab-sim-pair-list { grid-template-columns: repeat(auto-fill, minmax(108px, 1fr)); }
  .lab-sim-pair-card .pc-ret { font-size: 14px; }
  .lab-sim-stats { grid-template-columns: repeat(2, 1fr); }
  .lab-sim-stat .v { font-size: 16px; }
  .lab-sim-table-wrap th, .lab-sim-table-wrap td { padding: 4px 6px; font-size: 11px; }
  /* 吸顶标题移动端精简：隐藏描述，保留策略名+配对名 */
  .lab-sim-strat-desc { display: none; }
  .lab-sim-strat-name { font-size: 14px; }
  .lab-sim-strat-pair { font-size: 12px; }
  .lab-sim-pair-desc { padding: 6px 8px; font-size: 11px; gap: 6px; }
  .lab-sim-cur-pair { font-size: 11px; padding: 3px 8px; }
}

/* === 列表页左右2栏布局（策略卡左 + 回测推荐榜右）=== */
.lab-list-2col {
  display: grid;
  grid-template-columns: 3fr 7fr;
  gap: 16px;
  align-items: start;
}
.lab-list-2col > * {
  display: flex;
  flex-direction: column;
  min-width: 0;
}

/* === 回测推荐榜（列表页底部）=== */
.lab-rank-card > h3 { margin-bottom: 8px; }
.lab-rank-loading, .lab-rank-empty {
  font-size: 13px; color: var(--text-4); text-align: center; padding: 24px;
}
.lab-rank-tabs { display: flex; gap: 4px; flex-wrap: wrap; margin-bottom: 8px; }
.lab-rank-tab {
  padding: 6px 12px; border: 1px solid var(--border); border-radius: 6px;
  background: var(--bg-card); color: var(--text-2); font-size: 13px; cursor: pointer;
  transition: all 0.15s; -webkit-appearance: none; appearance: none;
}
.lab-rank-tab:hover { background: var(--bg-hover); }
.lab-rank-tab.active { background: #9c27b0; color: #fff; border-color: #9c27b0; }
/* 5窗口切换条（模拟回测+推荐榜共用） */
.lab-win-bar {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  margin: 6px 0 10px; padding: 8px 10px; background: var(--bg-hover); border-radius: 8px;
}
.lab-win-bar-label { font-size: 12px; color: var(--text-3); flex-shrink: 0; }
.lab-win-bar-cur { font-size: 12px; color: #9c27b0; font-weight: 600; margin-left: auto; }
.lab-win-tabs { display: flex; gap: 4px; flex-wrap: wrap; }
.lab-win-tab {
  padding: 5px 11px; border: 1px solid var(--border); border-radius: 6px;
  background: var(--bg-card); color: var(--text-2); font-size: 12px; cursor: pointer;
  transition: all 0.15s; -webkit-appearance: none; appearance: none;
}
.lab-win-tab:hover { background: var(--bg-hover); }
.lab-win-tab.active { background: var(--primary); color: #fff; border-color: var(--primary); }
/* 指数选择按钮组：与 .lab-win-tab 同尺寸/字号/间距（风格一致），独立类避免与窗口按钮的事件绑定冲突 */
.lab-idx-tab {
  padding: 5px 11px; border: 1px solid var(--border); border-radius: 6px;
  background: var(--bg-card); color: var(--text-2); font-size: 12px; cursor: pointer;
  transition: all 0.15s; -webkit-appearance: none; appearance: none;
}
.lab-idx-tab:hover { background: var(--bg-hover); }
.lab-idx-tab.active { background: var(--primary); color: #fff; border-color: var(--primary); }
/* 矩阵当前窗口行高亮 */
.lab-matrix-table tr.lab-matrix-row-active > td { background: var(--primary-bg); }
.lab-matrix-table tr.lab-matrix-row-active > .lab-matrix-rowhead { color: var(--primary); font-weight: 700; }
.lab-rank-legend {
  font-size: 12px; color: var(--text-3); background: var(--bg-hover);
  padding: 8px 10px; border-radius: 6px; margin-bottom: 10px; line-height: 1.6;
}
.lab-rank-list {
  display: flex; flex-direction: column; gap: 6px; max-width: none;
  max-height: 640px; overflow-y: auto;
}
.lab-rank-item {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  padding: 9px 12px; border: 1px solid var(--border); border-radius: 8px;
  background: var(--bg-card); cursor: pointer; transition: all 0.15s;
  text-align: left; font-family: inherit; width: 100%;
}
.lab-rank-item:hover { border-color: #9c27b0; box-shadow: 0 2px 8px rgba(156, 39, 176, 0.1); transform: translateY(-1px); }
.lab-rank-no {
  font-size: 13px; font-weight: 700; color: var(--text-3);
  min-width: 36px; text-align: center; flex-shrink: 0;
}
.lab-rank-name {
  font-size: 13px; font-weight: 600; color: var(--text-1);
  flex: 0 1 auto; min-width: 0;
}
.lab-rank-stats { display: flex; gap: 10px; flex-wrap: wrap; font-size: 12px; font-weight: 600; }
.lab-rank-stats .lab-rank-n { color: var(--text-4); font-weight: 400; }
.lab-rank-score {
  font-size: 12px; font-weight: 700; color: #9c27b0;
  background: #f3e5f5; padding: 2px 8px; border-radius: 4px; flex-shrink: 0;
}
.lab-rank-retest {
  font-size: 11px; font-weight: 700; color: #b8860b;
  background: linear-gradient(135deg, #fff8e1, #ffe082);
  padding: 2px 8px; border-radius: 4px; flex-shrink: 0;
  border: 1px solid #ffd54f; white-space: nowrap;
}
.lab-rank-retest-rule {
  font-size: 11px; color: #b8860b; background: #fffdf5;
  padding: 6px 10px; border-radius: 6px; margin-bottom: 10px;
  border: 1px dashed #ffd54f; line-height: 1.6;
}
.lab-rank-more {
  display: block; margin: 10px auto 0; padding: 6px 18px;
  border: 1px solid var(--border-strong); border-radius: 6px; background: var(--bg-card);
  color: var(--text-2); font-size: 12px; cursor: pointer; transition: all 0.15s;
}
.lab-rank-more:hover { background: var(--bg-hover); }

/* 维度榜：tab 维度明细子行（综合/分年/样本外/极端 的分项展示，整行换行到下一行）*/
.lab-rank-dim-sub {
  flex: 1 1 100%;
  font-size: 11px;
  color: var(--text-3);
  font-weight: 400;
  line-height: 1.5;
  padding-top: 2px;
}
/* 小样本/无交易 灰色标注 */
.lab-rank-small {
  font-size: 10px;
  color: var(--text-4);
  background: var(--bg-hover);
  padding: 1px 5px;
  border-radius: 3px;
  font-weight: 400;
}
/* 荣誉共享标注：策略在其他(指数×窗口)下的 Top3 排名徽章，点击跳转对应条件 */
.lab-rank-honors { display: flex; gap: 4px; flex-wrap: wrap; flex: 1 1 100%; padding-top: 2px; }
.lab-rank-honor-badge {
  font-size: 10.5px; font-weight: 600; cursor: pointer;
  padding: 1px 6px; border-radius: 4px; white-space: nowrap;
  border: 1px solid transparent; transition: all 0.15s; line-height: 1.5;
}
.lab-rank-honor-badge:hover { transform: translateY(-1px); box-shadow: 0 1px 4px rgba(0,0,0,0.12); }
.lab-rank-honor-badge[data-rank="1"] { color: #b8860b; background: linear-gradient(135deg,#fff8e1,#ffe082); border-color: #ffd54f; }
.lab-rank-honor-badge[data-rank="2"] { color: #6b6b6b; background: linear-gradient(135deg,#f5f5f5,#e0e0e0); border-color: #bdbdbd; }
.lab-rank-honor-badge[data-rank="3"] { color: #a0522d; background: linear-gradient(135deg,#fbe9e7,#ffccbc); border-color: #ffab91; }

/* 推荐榜弹窗（复用 _labSimModeBlock 渲染细节）*/
.lab-rank-overlay {
  display: none; position: fixed; inset: 0; z-index: 1000;
  background: rgba(0, 0, 0, 0.5); overflow-y: auto; padding: 20px 12px;
}
.lab-rank-overlay.show { display: block; }
.lab-rank-modal {
  width: 96vw; max-width: 1400px; max-height: 94vh; margin: 3vh auto;
  background: var(--bg-card); border: 1px solid var(--border, rgba(0,0,0,0.1));
  border-radius: 8px; box-shadow: 0 4px 24px rgba(0,0,0,0.15); overflow-y: auto;
}
.lab-rank-modal-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 12px 16px; border-bottom: 1px solid var(--border);
  position: sticky; top: 0; background: var(--bg-card); z-index: 5; gap: 8px;
}
.lab-rank-modal-title { font-size: 15px; font-weight: 700; color: var(--text-1); }
.lab-rank-modal-close {
  border: none; background: var(--bg-hover); color: var(--text-2); font-size: 16px;
  width: 30px; height: 30px; border-radius: 50%; cursor: pointer; line-height: 1;
  flex-shrink: 0;
}
.lab-rank-modal-close:hover { background: var(--border); color: var(--text-1); }
.lab-rank-modal-body { padding: 14px 16px 20px; }
.lab-rank-modal-empty { font-size: 13px; color: var(--text-4); text-align: center; padding: 30px; }

@media (max-width: 600px) {
  .lab-rank-item { padding: 8px 10px; gap: 6px; }
  .lab-rank-name { flex: 1 1 100%; font-size: 12.5px; }
  .lab-rank-stats { gap: 8px; font-size: 11px; }
  .lab-rank-no { min-width: 28px; font-size: 12px; }
  .lab-rank-tab { padding: 5px 10px; font-size: 12px; }
  .lab-rank-modal-head { padding: 10px 12px; }
  .lab-rank-modal-title { font-size: 13px; }
  .lab-rank-modal-body { padding: 10px 8px 16px; }
  .lab-rank-modal { width: calc(100vw - 24px); max-width: calc(100vw - 24px); max-height: 90vh; margin: 2vh auto; }
}

/* === 买卖信号弹窗入口按钮 === */
.lab-sim-signal-btn-wrap { text-align: center; margin-top: 12px; }
.lab-sim-signal-btn {
  padding: 7px 18px; border: 1px solid #9c27b0; border-radius: 6px;
  background: #f3e5f5; color: #9c27b0; font-size: 13px; font-weight: 600;
  cursor: pointer; transition: all 0.15s; -webkit-appearance: none; appearance: none;
}
.lab-sim-signal-btn:hover { background: #9c27b0; color: #fff; }

/* === 买卖信号弹窗 === */
.lab-signal-overlay {
  display: none; position: fixed; inset: 0; z-index: 1000;
  background: rgba(0, 0, 0, 0.5); overflow-y: auto; padding: 20px 12px;
}
.lab-signal-overlay.show { display: block; }
.lab-signal-modal {
  width: 96vw; max-width: 1400px; max-height: 94vh; margin: 3vh auto;
  background: var(--bg-card); border: 1px solid var(--border, rgba(0,0,0,0.1));
  border-radius: 8px; box-shadow: 0 4px 24px rgba(0,0,0,0.15); overflow-y: auto;
}
.lab-signal-modal-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 12px 16px; border-bottom: 1px solid var(--border);
  position: sticky; top: 0; background: var(--bg-card); z-index: 5; gap: 8px;
}
.lab-signal-modal-title { font-size: 15px; font-weight: 700; color: var(--text-1); }
.lab-signal-modal-body { padding: 14px 16px 20px; }
.lab-signal-filter { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; flex-wrap: wrap; }
.lab-signal-filter label { font-size: 13px; color: var(--text-2); white-space: nowrap; }
.lab-signal-filter select {
  padding: 4px 8px; border: 1px solid var(--border-strong); border-radius: 4px;
  font-size: 13px; color: var(--text-1); background: var(--bg-card); max-width: 160px; min-width: 0;
}
.lab-signal-period { display: inline-flex; gap: 4px; }
.lab-signal-period-btn {
  padding: 4px 12px; border: 1px solid var(--border); border-radius: 14px;
  background: var(--bg-card); color: var(--text-2); font-size: 12px; cursor: pointer;
  transition: all 0.15s; -webkit-appearance: none; appearance: none;
}
.lab-signal-period-btn:hover { background: var(--bg-hover); }
.lab-signal-period-btn.active { background: #9c27b0; color: #fff; border-color: #9c27b0; }
.lab-signal-legend { font-size: 12px; color: var(--text-2); display: inline-flex; align-items: center; gap: 4px; margin-left: auto; }
.lab-signal-legend i { display: inline-block; width: 10px; height: 10px; border-radius: 50%; margin: 0 2px 0 6px; }
.lab-signal-tabs { display: flex; gap: 4px; margin-bottom: 10px; }
.lab-signal-tab {
  padding: 6px 14px; border: 1px solid var(--border); border-radius: 6px;
  background: var(--bg-card); color: var(--text-2); font-size: 13px; cursor: pointer;
  transition: all 0.15s; -webkit-appearance: none; appearance: none;
}
.lab-signal-tab:hover { background: var(--bg-hover); }
.lab-signal-tab.active { background: #9c27b0; color: #fff; border-color: #9c27b0; }
.lab-signal-chart-area { min-height: 200px; }
.lab-signal-no-chart { font-size: 13px; color: var(--text-4); text-align: center; padding: 40px; }

@media (max-width: 600px) {
  .lab-signal-modal-head { padding: 10px 12px; }
  .lab-signal-modal-title { font-size: 13px; }
  .lab-signal-modal-body { padding: 10px 8px 16px; }
  .lab-signal-modal { width: calc(100vw - 24px); max-width: calc(100vw - 24px); max-height: 90vh; margin: 2vh auto; }
  .lab-signal-tab { padding: 5px 10px; font-size: 12px; flex: 1; text-align: center; }
  .lab-signal-period-btn { padding: 4px 10px; font-size: 11px; }
  .lab-signal-legend { margin-left: 0; width: 100%; }
  .lab-sim-signal-btn { font-size: 12px; padding: 6px 14px; }
}

/* === 融合候选配对回测弹窗 === */
.lab-fusion-clickable { cursor: pointer; transition: border-color 0.15s, box-shadow 0.15s; }
.lab-fusion-clickable:hover { border-color: #9c27b0; box-shadow: 0 2px 8px rgba(156, 39, 176, 0.15); }
.lab-fusion-pair-hint { font-size: 12px; color: #9c27b0; margin-top: 6px; font-weight: 600; }
.lab-fusion-pair-filter { display: flex; align-items: center; gap: 8px; margin-bottom: 12px; flex-wrap: wrap; }
.lab-fusion-pair-filter label { font-size: 13px; color: var(--text-2); white-space: nowrap; }
.lab-fusion-pair-filter select {
  padding: 4px 8px; border: 1px solid var(--border-strong); border-radius: 4px;
  font-size: 13px; color: var(--text-1); background: var(--bg-card); max-width: 160px; min-width: 0;
}
.lab-fusion-pair-legend { font-size: 12px; color: var(--text-3); margin-left: auto; }
.lab-fusion-pair-section { margin-bottom: 16px; }
.lab-fusion-pair-mode { font-size: 14px; font-weight: 700; color: var(--text-1); margin-bottom: 6px; }
.lab-fusion-pair-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.lab-fusion-pair-table th {
  text-align: left; padding: 6px 8px; border-bottom: 2px solid var(--border-strong);
  font-size: 12px; color: var(--text-3); font-weight: 600; white-space: nowrap;
}
.lab-fusion-pair-table td { padding: 6px 8px; border-bottom: 1px solid var(--border); white-space: nowrap; }
.lab-fusion-pair-table tr:last-child td { border-bottom: none; }
.lab-fp-win { font-weight: 600; color: var(--text-1); }
.lab-fp-n { color: var(--text-3); }
@media (max-width: 600px) {
  .lab-fusion-pair-table { font-size: 12px; }
  .lab-fusion-pair-table th, .lab-fusion-pair-table td { padding: 5px 4px; }
  .lab-fusion-pair-legend { margin-left: 0; width: 100%; }
}

/* 硬编码独立融合策略详情（Bug-A：6个无 _pairType 策略的回测结论文本） */
.lab-fusion-hardcoded { display: flex; flex-direction: column; gap: 12px; }
.lab-fusion-detail-tag { margin-bottom: -4px; }
.lab-fusion-detail-conclusion {
  font-size: 14px; font-weight: 600; color: var(--text-1);
  background: var(--bg-hover); padding: 10px 12px; border-radius: 6px; line-height: 1.6;
}
.lab-fusion-detail-row { display: flex; gap: 10px; font-size: 13px; line-height: 1.7; }
.lab-fusion-detail-label {
  flex-shrink: 0; width: 64px; color: var(--text-3); font-weight: 600;
}
.lab-fusion-detail-value { color: var(--text-2); flex: 1; word-break: break-word; }
/* 融合策略弹窗内"核心策略详情"分隔提示（融合文案与核心策略图表/回测之间） */
.lab-fusion-core-divider {
  margin: 16px 0 8px; padding: 8px 12px; font-size: 12px; line-height: 1.6;
  color: var(--text-2); background: var(--bg-hover); border-radius: 6px;
  border-left: 3px solid var(--border-strong);
}
.lab-fusion-core-detail { margin-top: 4px; }

/* === 二级导航（单一信号 / 融合信号）=== */
.lab-subnav {
  display: flex;
  gap: 0;
  margin-bottom: 12px;
  border-bottom: 2px solid var(--border);
}
.lab-subnav-tab {
  padding: 8px 18px;
  border: none;
  background: none;
  color: var(--text-3);
  font-size: 14px;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.15s;
  border-bottom: 2px solid transparent;
  margin-bottom: -2px;
  -webkit-appearance: none;
  appearance: none;
}
.lab-subnav-tab:hover { color: var(--text-2); }
.lab-subnav-tab.active {
  color: var(--primary);
  border-bottom-color: var(--primary);
  font-weight: 600;
}

/* === 融合信号卡片 === */
.lab-fusion-card { cursor: default; }
.lab-fusion-card:hover {
  border-color: var(--border);
  box-shadow: none;
}
.lab-fusion-conditions {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 4px;
  margin-bottom: 6px;
}
.lab-fusion-cond-label {
  font-size: 11px;
  color: var(--text-3);
  flex-shrink: 0;
}
.lab-fusion-cond {
  display: inline-block;
  padding: 1px 7px;
  border-radius: 3px;
  font-size: 11px;
  background: var(--primary-bg);
  color: var(--primary);
  border: 1px solid var(--border);
}
.lab-fusion-empty {
  grid-column: 1 / -1;
  text-align: center;
  padding: 40px 20px;
  color: var(--text-4);
  font-size: 14px;
}
.lab-fusion-phase-note {
  margin-top: 16px;
  padding: 10px 14px;
  background: #fff9e6;
  border: 1px solid #ffe58f;
  border-radius: 6px;
  font-size: 12px;
  color: #ad6800;
  line-height: 1.6;
}
.lab-fusion-phase-note b { color: #d4380d; }

/* 实验室策略详情：指标释义折叠块（散户白话，复用凯利折叠风格） */
.indicator-explain {
  margin-top: 8px;
  font-size: 12px;
}
.indicator-explain > summary {
  cursor: pointer;
  user-select: none;
  color: var(--primary);
  font-size: 12px;
  display: inline-block;
}
.indicator-explain > summary:hover { color: var(--primary-hover); }
.indicator-explain-body {
  margin-top: 6px;
  padding: 8px 10px;
  background: var(--bg-hover);
  border: 1px solid var(--border);
  border-radius: 4px;
  font-size: 12px;
  color: var(--text-2);
  line-height: 1.7;
}
.indicator-explain-body > div { margin: 4px 0; }
.indicator-explain-body b { color: var(--text-1); font-weight: 600; }

@media (max-width: 768px) {
  .lab-list-2col { grid-template-columns: 1fr; }
}

@media (max-width: 600px) {
  .lab-subnav-tab { padding: 6px 12px; font-size: 13px; }
  .lab-fusion-cond { font-size: 10px; padding: 1px 5px; }
}

/* === 二次测试 tab 样式 === */
.lab-retest-rule {
  font-size: 11px; color: #b8860b; background: #fffdf5;
  padding: 6px 10px; border-radius: 6px; margin-bottom: 10px;
  border: 1px dashed #ffd54f; line-height: 1.6;
}
.lab-retest-meta {
  font-size: 12px; color: var(--text-3); margin-bottom: 10px;
}
.lab-retest-pairs { display: flex; flex-direction: column; gap: 14px; }
.lab-retest-pair {
  border: 1px solid var(--border, rgba(0,0,0,0.1)); border-radius: 8px;
  padding: 12px 14px; background: var(--bg-card);
}
.lab-retest-pair-head {
  display: flex; flex-wrap: wrap; gap: 6px 14px; align-items: center;
  font-size: 13px; color: var(--text-2); padding-bottom: 8px;
  border-bottom: 1px solid var(--border); margin-bottom: 10px;
}
.lab-retest-pair-strat { font-size: 14px; font-weight: 700; color: var(--text-1); }
.lab-retest-pair-win { color: var(--primary); font-weight: 600; }
.lab-retest-section { margin-bottom: 12px; }
.lab-retest-section:last-child { margin-bottom: 0; }
.lab-retest-section-title {
  font-size: 12px; font-weight: 600; color: var(--text-2);
  margin-bottom: 6px;
}
.lab-retest-yearly, .lab-retest-oos {
  width: 100%; border-collapse: collapse; font-size: 12px;
}
.lab-retest-yearly th, .lab-retest-yearly td,
.lab-retest-oos th, .lab-retest-oos td {
  padding: 4px 8px; text-align: center; border: 1px solid var(--border);
}
.lab-retest-yearly th, .lab-retest-oos th {
  background: var(--bg-hover); font-weight: 600; color: var(--text-2);
  font-size: 11px;
}
.lab-retest-yearly td:first-child, .lab-retest-oos td:first-child {
  text-align: left; color: var(--text-3); font-weight: 500;
}
.lab-retest-regimes {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px;
}
.lab-retest-regime-card {
  padding: 8px 6px; border: 1px solid var(--border); border-radius: 6px;
  text-align: center; background: var(--bg-hover);
}
.lab-retest-regime-name { font-size: 11px; color: var(--text-3); margin-bottom: 4px; }
.lab-retest-regime-ret { font-size: 15px; font-weight: 700; }
.lab-retest-regime-dd { font-size: 11px; color: var(--text-3); margin-top: 2px; }
/* 二次测试弹窗：上半(整体回测详情)+下半(三切片)分区块 */
.lab-retest-modal-section {
  padding-bottom: 16px; margin-bottom: 16px;
  border-bottom: 1px dashed var(--border);
}
.lab-retest-modal-section:last-child { border-bottom: none; margin-bottom: 0; padding-bottom: 0; }
.lab-retest-modal-section-title {
  font-size: 14px; font-weight: 700; color: var(--text-1); margin-bottom: 4px;
}
.lab-retest-modal-hint { font-size: 12px; color: var(--text-3); margin-bottom: 10px; }
@media (max-width: 600px) {
  .lab-retest-regimes { grid-template-columns: repeat(2, 1fr); }
  .lab-retest-pair-head { font-size: 12px; }
}

/* === 二次测试实验分区（第3实验分区，复用 .lab-strategy-card / .lab-rank 样式）=== */
.lab-retest-card .lab-card-name { font-size: 13.5px; }
.lab-retest-card .lab-rank-score { font-size: 12px; }
