/* ============================================================
   Watchpilot · market-v3.css
   行情 Tab v3: 板块全景 + 个股聚焦 + 盘口 + 实时榜单
   (原 main.css 行 6207-7564)
   ============================================================ */

  /* ─── 板块全景:左热力图 + 右盘面 ─── */
  .sector-row {
    display: grid;
    grid-template-columns: 1.85fr 1fr;
    gap: 14px;
    margin-bottom: 32px;
  }
  .sector-list-card {
    background: var(--bg-card);
    border: 1px solid var(--border-subtle);
    display: flex;
    flex-direction: column;
    height: 520px;
    overflow: hidden;
  }
  .sector-list-tabs {
    display: flex;
    gap: 2px;
    border-bottom: 1px solid var(--border-subtle);
    padding: 6px 8px;
    background: var(--bg-subtle);
    flex-shrink: 0;
  }
  .sl-tab {
    padding: 4px 10px;
    font-size: 12px;
    font-weight: 500;
    color: var(--text-3);
    cursor: pointer;
    border-radius: 3px;
    user-select: none;
    transition: all 0.12s;
  }
  .sl-tab:hover { color: var(--text-1); background: var(--bg-hover); }
  .sl-tab.active {
    color: var(--text-1);
    font-weight: 600;
    background: var(--bg-card);
    box-shadow: 0 0 0 1px var(--border-subtle);
  }
  .sector-list-rows {
    flex: 1;
    overflow: hidden;
    padding: 2px 0;
    min-height: 0;
    display: flex;
    flex-direction: column;
  }
  .sl-row {
    display: grid;
    grid-template-columns: 1fr 60px 92px 76px;
    align-items: center;
    gap: 8px;
    padding: 5px 14px;
    cursor: pointer;
    font-size: 12px;
    transition: background 0.1s;
    flex: 1 1 0;
    min-height: 26px;
  }
  .sl-row:hover { background: var(--bg-hover); }
  .sl-row.divider {
    border-top: 1px dashed var(--border-subtle);
    margin-top: 4px;
    padding-top: 8px;
  }
  .sl-name {
    color: var(--text-1);
    font-weight: 600;
    letter-spacing: -0.1px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .sl-pct {
    font-family: var(--font-mono);
    font-variant-numeric: tabular-nums;
    font-weight: 700;
    text-align: right;
    letter-spacing: -0.3px;
    font-size: 12px;
  }
  .sl-breadth {
    font-family: var(--font-mono);
    color: var(--text-3);
    font-size: 11px;
    font-variant-numeric: tabular-nums;
    text-align: right;
  }
  .sl-flow {
    font-family: var(--font-mono);
    font-variant-numeric: tabular-nums;
    font-weight: 600;
    text-align: right;
    font-size: 11px;
    letter-spacing: -0.2px;
  }
  .sector-list-foot {
    flex-shrink: 0;
    padding: 8px 14px;
    border-top: 1px solid var(--border-subtle);
    background: var(--bg-subtle);
    font-size: 11px;
    color: var(--text-3);
    display: flex;
    align-items: center;
    justify-content: space-between;
  }
  .sector-list-foot a {
    color: var(--accent);
    cursor: pointer;
    font-weight: 500;
    transition: opacity 0.12s;
  }
  .sector-list-foot a:hover { opacity: 0.7; }
  
  /* ─── 个股聚焦:左 K线 + 右盘口 ─── */
  .stock-row {
    display: grid;
    grid-template-columns: 1.85fr 1fr;
    gap: 14px;
    margin-bottom: 32px;
  }
  .kline-card, .orderbook-card {
    background: var(--bg-card);
    border: 1px solid var(--border-subtle);
    display: flex;
    flex-direction: column;
  }
  .kline-head {
    display: flex;
    flex-direction: column;
    border-bottom: 1px solid var(--border-subtle);
  }
  .kline-stock-bar {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 16px 10px 16px;
  }
  .kline-stock-icon {
    font-size: 20px;
    line-height: 1;
  }
  .kline-stock-name {
    font-size: 16px;
    font-weight: 700;
    color: var(--text-1);
    letter-spacing: -0.3px;
  }
  .kline-stock-code {
    font-family: var(--font-mono);
    font-size: 12px;
    color: var(--text-3);
    font-variant-numeric: tabular-nums;
  }
  .kline-stock-price {
    font-family: var(--font-mono);
    font-size: 22px;
    font-weight: 700;
    letter-spacing: -0.6px;
    font-variant-numeric: tabular-nums;
    margin-left: auto;
  }
  .kline-stock-change {
    font-family: var(--font-mono);
    font-size: 13px;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
  }
  .kline-picker-toggle {
    font-size: 12px;
    color: var(--text-3);
    cursor: pointer;
    padding: 4px 10px;
    border: 1px solid var(--border-subtle);
    border-radius: 3px;
    transition: all 0.12s;
  }
  .kline-picker-toggle:hover {
    color: var(--text-1);
    border-color: var(--border-strong);
  }
  .kline-tf {
    display: flex;
    gap: 0;
    padding: 0 12px;
    border-top: 1px dashed var(--border-subtle);
    background: var(--bg-subtle);
  }
  .kline-tf-item {
    padding: 7px 12px;
    font-size: 11px;
    font-weight: 600;
    color: var(--text-3);
    cursor: pointer;
    font-family: var(--font-mono);
    border-bottom: 2px solid transparent;
    transition: all 0.12s;
    letter-spacing: 0.05em;
  }
  .kline-tf-item:hover { color: var(--text-1); }
  .kline-tf-item.active {
    color: var(--text-1);
    border-bottom-color: var(--accent);
  }
  .kline-body {
    display: grid;
    grid-template-columns: 1fr;  /* 去掉右侧面板 */
    gap: 0;
  }
  .kline-chart-area {
    padding: 0;
  }
  .kline-chart {
    width: 100%;
    height: 280px;
    display: block;
  }
  .kline-volume {
    width: 100%;
    height: 70px;
    display: block;
    margin-top: 4px;
  }
  .kline-side-info {
    padding: 12px 14px;
    display: flex;
    flex-direction: column;
    gap: 8px;
    background: var(--bg-main);
  }
  .kside-row {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    font-size: 12px;
  }
  .kside-label {
    color: var(--text-3);
  }
  .kside-val {
    font-family: var(--font-mono);
    font-variant-numeric: tabular-nums;
    font-weight: 600;
    color: var(--text-1);
    letter-spacing: -0.2px;
  }
  .kside-divider {
    height: 1px;
    background: var(--border-subtle);
    margin: 2px 0;
  }
  .kside-ai-quip {
    margin-top: auto;
    padding: 10px;
    background: var(--bg-card);
    border: 1px solid var(--border-subtle);
    border-left: 2px solid var(--accent);
  }
  .kside-ai-tag {
    font-size: 9px;
    font-weight: 700;
    color: var(--text-3);
    letter-spacing: 1.4px;
    text-transform: uppercase;
    margin-bottom: 4px;
  }
  .kside-ai-body {
    font-family: var(--font-display);
    font-style: italic;
    font-size: 12px;
    line-height: 1.55;
    color: var(--text-2);
  }
  
  /* ─── 盘口 ─── */
  .ob-head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px 14px;
    border-bottom: 1px solid var(--border-subtle);
    background: var(--bg-subtle);
  }
  .ob-head-title {
    font-size: 12px;
    font-weight: 700;
    color: var(--text-2);
    letter-spacing: 0.05em;
  }
  .ob-head-stock {
    font-size: 11px;
    color: var(--text-3);
    font-family: var(--font-mono);
  }
  .ob-rows {
    padding: 4px 0;
  }
  .ob-row {
    display: grid;
    grid-template-columns: 40px 1fr auto 64px;
    align-items: center;
    gap: 8px;
    padding: 4px 14px;
    font-size: 11px;
    font-family: var(--font-mono);
    font-variant-numeric: tabular-nums;
    position: relative;
  }
  .ob-tier {
    color: var(--text-3);
    font-weight: 600;
  }
  .ob-price {
    font-weight: 700;
    text-align: left;
    letter-spacing: -0.2px;
  }
  .ob-row.ask .ob-price { color: var(--down); }
  .ob-row.bid .ob-price { color: var(--up); }
  .ob-vol {
    color: var(--text-2);
    text-align: right;
    font-weight: 600;
  }
  .ob-bar-wrap {
    height: 6px;
    position: relative;
    background: transparent;
  }
  .ob-bar-fill {
    position: absolute;
    top: 0;
    bottom: 0;
    opacity: 0.35;
  }
  .ob-row.ask .ob-bar-fill { background: var(--down); right: 0; }
  .ob-row.bid .ob-bar-fill { background: var(--up); right: 0; }
  .ob-mid {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 8px 14px;
    margin: 2px 0;
    background: var(--bg-subtle);
    border-top: 1px solid var(--border-soft);
    border-bottom: 1px solid var(--border-soft);
    font-family: var(--font-mono);
    font-variant-numeric: tabular-nums;
  }
  .ob-mid-price {
    font-size: 18px;
    font-weight: 700;
    letter-spacing: -0.4px;
  }
  .ob-mid-change {
    font-size: 12px;
    font-weight: 600;
  }
  .ob-mid-meta {
    font-size: 10px;
    color: var(--text-3);
    text-transform: uppercase;
    letter-spacing: 1.2px;
    font-family: var(--font-sans);
    font-weight: 600;
  }
  .ob-ticks-head {
    padding: 10px 14px 6px 14px;
    border-top: 1px solid var(--border-subtle);
    font-size: 10px;
    font-weight: 700;
    color: var(--text-3);
    letter-spacing: 1.4px;
    text-transform: uppercase;
  }
  .ob-ticks {
    max-height: 200px;
    overflow-y: auto;
    padding-bottom: 6px;
  }
  .ob-tick {
    display: grid;
    grid-template-columns: 70px 60px 1fr 50px;
    align-items: center;
    gap: 8px;
    padding: 4px 14px;
    font-size: 11px;
    font-family: var(--font-mono);
    font-variant-numeric: tabular-nums;
  }
  .ob-tick-time { color: var(--text-3); }
  .ob-tick-vol { font-weight: 700; text-align: right; }
  .ob-tick-price { color: var(--text-2); }
  .ob-tick-side {
    font-size: 9px;
    text-align: right;
    font-family: var(--font-sans);
    font-weight: 700;
    letter-spacing: 0.5px;
  }
  
  /* ─── 实时榜单(两列:涨跌排行 + 涨跌停监控) ─── */
  .rank-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px;
    margin-bottom: 32px;
  }
  .rank-card {
    background: var(--bg-card);
    border: 1px solid var(--border-subtle);
    display: flex;
    flex-direction: column;
    min-height: 480px;
  }
  .rank-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 10px 14px;
    border-bottom: 1px solid var(--border-subtle);
    background: var(--bg-subtle);
  }
  .rank-title {
    font-size: 13px;
    font-weight: 700;
    color: var(--text-1);
    letter-spacing: -0.1px;
  }
  .rank-sub {
    font-size: 11px;
    color: var(--text-3);
    font-family: var(--font-mono);
  }
  .rank-chips {
    display: flex;
    gap: 2px;
  }
  .rc-chip {
    padding: 3px 8px;
    font-size: 11px;
    font-weight: 500;
    color: var(--text-3);
    cursor: pointer;
    border-radius: 3px;
    user-select: none;
    transition: all 0.12s;
  }
  .rc-chip:hover { color: var(--text-1); background: var(--bg-hover); }
  .rc-chip.active {
    color: var(--text-1);
    font-weight: 700;
    background: var(--bg-card);
    box-shadow: 0 0 0 1px var(--border-subtle);
  }
  .rank-rows {
    flex: 1;
    overflow-y: auto;
    padding: 4px 0;
  }
  .rank-row-item {
    display: grid;
    grid-template-columns: 22px 1fr auto auto;
    align-items: center;
    gap: 10px;
    padding: 7px 14px;
    cursor: pointer;
    transition: background 0.1s;
  }
  .rank-row-item:hover { background: var(--bg-hover); }
  .rk-rank {
    font-family: var(--font-mono);
    font-size: 11px;
    font-weight: 700;
    color: var(--text-3);
    font-variant-numeric: tabular-nums;
    text-align: right;
  }
  .rk-name {
    font-size: 13px;
    font-weight: 600;
    color: var(--text-1);
    letter-spacing: -0.1px;
  }
  .rk-code {
    font-size: 10px;
    color: var(--text-3);
    font-family: var(--font-mono);
    font-variant-numeric: tabular-nums;
    margin-top: 1px;
  }
  .rk-price {
    font-family: var(--font-mono);
    font-size: 12px;
    color: var(--text-2);
    font-variant-numeric: tabular-nums;
    text-align: right;
  }
  .rk-pct {
    font-family: var(--font-mono);
    font-size: 13px;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    text-align: right;
    letter-spacing: -0.3px;
    min-width: 64px;
  }
  .limit-kpi-row {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    border-bottom: 1px solid var(--border-subtle);
    background: var(--bg-subtle);
  }
  .lk-item {
    padding: 10px 8px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2px;
    border-right: 1px solid var(--border-subtle);
  }
  .lk-item:last-child { border-right: none; }
  .lk-val {
    font-family: var(--font-mono);
    font-size: 18px;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    letter-spacing: -0.4px;
  }
  .lk-label {
    font-size: 10px;
    color: var(--text-3);
    font-weight: 600;
    letter-spacing: 0.05em;
  }
  .lm-head {
    padding: 10px 14px 4px 14px;
    font-size: 10px;
    font-weight: 700;
    color: var(--text-3);
    letter-spacing: 1.4px;
    text-transform: uppercase;
  }
  .lm-rows {
    padding: 0 0 6px 0;
  }
  .lm-row {
    display: grid;
    grid-template-columns: 38px 1fr auto;
    align-items: center;
    gap: 10px;
    padding: 7px 14px;
    cursor: pointer;
    transition: background 0.1s;
  }
  .lm-row:hover { background: var(--bg-hover); }
  .ld-tier {
    font-family: var(--font-mono);
    font-size: 11px;
    font-weight: 700;
    color: white;
    background: var(--up);
    padding: 3px 6px;
    border-radius: 3px;
    text-align: center;
    letter-spacing: -0.2px;
  }
  .ld-tier.t3 { background: #d4374a; }
  .ld-tier.t2 { background: #c01f2c; }
  .ld-tier.t1 { background: var(--text-3); }
  .ld-name {
    font-size: 13px;
    font-weight: 600;
    color: var(--text-1);
    letter-spacing: -0.1px;
  }
  .ld-code {
    font-size: 10px;
    color: var(--text-3);
    font-family: var(--font-mono);
    margin-top: 1px;
  }
  .ld-seal {
    font-family: var(--font-mono);
    font-size: 11px;
    color: var(--text-2);
    font-variant-numeric: tabular-nums;
    text-align: right;
  }
  .lm-footnote {
    padding: 8px 14px;
    font-size: 11px;
    color: var(--text-3);
    border-top: 1px solid var(--border-subtle);
    background: var(--bg-subtle);
    text-align: center;
  }
  .watch-rows {
    flex: 1;
    overflow-y: auto;
    padding: 2px 0;
  }
  .watch-group-head {
    padding: 8px 14px 4px 14px;
    font-size: 10px;
    font-weight: 700;
    color: var(--text-3);
    letter-spacing: 1.4px;
    text-transform: uppercase;
    border-top: 1px solid var(--border-subtle);
    background: var(--bg-subtle);
  }
  .watch-group-head:first-child { border-top: none; }
  .watch-row {
    display: grid;
    grid-template-columns: 22px 1fr 58px 56px 60px;
    align-items: center;
    gap: 6px;
    padding: 7px 12px;
    cursor: pointer;
    transition: background 0.15s, box-shadow 0.15s;
    border-bottom: 1px dashed transparent;
  }
  .watch-row:hover { background: var(--bg-hover); }
  .watch-row.blink-up { background: rgba(230, 57, 70, 0.08); }
  .watch-row.blink-down { background: rgba(6, 167, 125, 0.08); }
  .w-icon { font-size: 16px; line-height: 1; }
  .w-name {
    font-size: 12px;
    font-weight: 600;
    color: var(--text-1);
    letter-spacing: -0.1px;
  }
  .w-cost {
    font-size: 10px;
    color: var(--text-3);
    font-family: var(--font-mono);
    margin-top: 1px;
  }
  .w-price {
    font-family: var(--font-mono);
    font-size: 11px;
    font-variant-numeric: tabular-nums;
    text-align: right;
    font-weight: 600;
  }
  .w-pct {
    font-family: var(--font-mono);
    font-size: 12px;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    text-align: right;
    letter-spacing: -0.2px;
  }
  .w-pnl {
    font-family: var(--font-mono);
    font-size: 11px;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    text-align: right;
    letter-spacing: -0.2px;
  }
  .w-push-dot {
    display: inline-block;
    width: 6px;
    height: 6px;
    border-radius: 50%;
    margin-left: 3px;
    vertical-align: middle;
  }
  .w-push-dot.urgent { background: var(--urgent); }
  .w-push-dot.important { background: var(--important); }
  
  /* 数据 Tab 一览页新模块组 */
  .data-section-h {
    font-family: var(--font-display);
    font-size: 16px;
    font-weight: 600;
    color: var(--text-1);
    letter-spacing: -0.3px;
    margin: 20px 0 10px 0;
    display: flex;
    align-items: baseline;
    gap: 12px;
  }
  .data-section-h:first-of-type { margin-top: 12px; }
  .dsh-sub {
    font-size: 10px;
    color: var(--text-3);
    text-transform: uppercase;
    letter-spacing: 1.4px;
    font-weight: 600;
    font-family: var(--font-mono);
  }
  .kpi-strip {
    display: grid;
    grid-template-columns: repeat(6, 1fr);
    background: var(--bg-card);
    border: 1px solid var(--border-subtle);
    margin-bottom: 20px;
  }
  .kpi-cell {
    padding: 14px 12px;
    border-right: 1px solid var(--border-subtle);
    display: flex;
    flex-direction: column;
    gap: 4px;
  }
  .kpi-cell:last-child { border-right: none; }
  .kpi-cell:hover { background: var(--bg-hover); }
  .kpi-label {
    font-size: 10px;
    font-weight: 600;
    color: var(--text-3);
    letter-spacing: 0.05em;
    text-transform: uppercase;
  }
  .kpi-val {
    font-family: var(--font-mono);
    font-size: 18px;
    font-weight: 700;
    color: var(--text-1);
    letter-spacing: -0.5px;
    font-variant-numeric: tabular-nums;
    line-height: 1.1;
  }
  .kpi-val.up { color: var(--up); }
  .kpi-val.down { color: var(--down); }
  .kpi-unit {
    font-size: 11px;
    color: var(--text-3);
    font-weight: 600;
    margin-left: 2px;
  }
  .kpi-ctx {
    font-size: 10px;
    color: var(--text-3);
    font-family: var(--font-mono);
    font-variant-numeric: tabular-nums;
  }
  @media (max-width: 1200px) {
    .kpi-strip { grid-template-columns: repeat(3, 1fr); }
  }
  .data-two-col {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px;
    margin-bottom: 20px;
  }
  @media (max-width: 1100px) {
    .data-two-col { grid-template-columns: 1fr; }
  }
  .dt-chips {
    display: flex;
    gap: 2px;
  }
  .dt-chip {
    padding: 3px 8px;
    font-size: 11px;
    font-weight: 500;
    color: var(--text-3);
    cursor: pointer;
    border-radius: 3px;
    user-select: none;
    transition: all 0.12s;
    font-family: var(--font-mono);
  }
  .dt-chip:hover { color: var(--text-1); background: var(--bg-hover); }
  .dt-chip.active {
    color: var(--text-1);
    font-weight: 700;
    background: var(--bg-subtle);
  }
  .flow-section-label {
    font-size: 10px;
    font-weight: 700;
    color: var(--text-3);
    letter-spacing: 1.4px;
    text-transform: uppercase;
    margin-bottom: 8px;
  }
  .flow-rows {
    display: flex;
    flex-direction: column;
    gap: 5px;
  }
  .flow-row {
    display: grid;
    grid-template-columns: 80px 1fr 56px;
    align-items: center;
    gap: 10px;
    font-size: 12px;
  }
  .flow-name {
    color: var(--text-1);
    font-weight: 500;
    letter-spacing: -0.1px;
  }
  .flow-bar-track {
    height: 8px;
    background: var(--bg-subtle);
    position: relative;
  }
  .flow-bar-fill {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
  }
  .flow-bar-fill.up { background: var(--up); }
  .flow-bar-fill.down {
    background: var(--down);
    left: auto;
    right: 0;
  }
  .flow-val {
    font-family: var(--font-mono);
    font-size: 12px;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    text-align: right;
    letter-spacing: -0.2px;
  }
  .capital-sub-label {
    font-size: 10px;
    font-weight: 700;
    color: var(--text-3);
    letter-spacing: 1.4px;
    text-transform: uppercase;
    margin-bottom: 6px;
  }
  .capital-ts {
    width: 100%;
    height: 100px;
    display: block;
    margin: 4px 0 6px 0;
  }
  .stack-bars-h {
    display: flex;
    flex-direction: column;
    gap: 4px;
  }
  .sb-row {
    display: grid;
    grid-template-columns: 40px 1fr;
    align-items: center;
    gap: 10px;
    font-size: 11px;
  }
  .sb-date {
    color: var(--text-3);
    font-family: var(--font-mono);
    font-variant-numeric: tabular-nums;
    font-weight: 600;
  }
  .sb-bar {
    height: 14px;
    display: flex;
    position: relative;
    background: var(--bg-subtle);
  }
  .sb-bar-mid {
    position: absolute;
    left: 50%;
    top: -1px;
    bottom: -1px;
    width: 1px;
    background: var(--text-4);
    z-index: 2;
  }
  .sb-seg {
    height: 100%;
  }
  .sb-seg.inst { background: var(--up); }
  .sb-seg.large { background: rgba(230, 57, 70, 0.55); }
  .sb-seg.med { background: rgba(6, 167, 125, 0.55); }
  .sb-seg.retail { background: var(--down); }
  .sb-legend {
    display: flex;
    gap: 12px;
    margin-top: 6px;
    font-size: 10px;
    color: var(--text-3);
    font-family: var(--font-mono);
  }
  .sb-legend i {
    display: inline-block;
    width: 8px;
    height: 8px;
    margin-right: 3px;
    vertical-align: middle;
  }
  .vol-three-col {
    display: grid;
    grid-template-columns: 1.6fr 1fr 1fr;
    padding: 14px 0;
  }
  .vol-block {
    padding: 0 18px;
    border-right: 1px solid var(--border-subtle);
    display: flex;
    flex-direction: column;
  }
  .vol-block:last-child { border-right: none; }
  .vol-label {
    font-size: 10px;
    font-weight: 700;
    color: var(--text-3);
    letter-spacing: 1.4px;
    text-transform: uppercase;
    margin-bottom: 8px;
  }
  .vol-ts {
    width: 100%;
    height: 120px;
    display: block;
  }
  .vol-meta {
    font-size: 10px;
    color: var(--text-3);
    font-family: var(--font-mono);
    margin-top: 6px;
  }
  .vol-bars {
    display: flex;
    flex-direction: column;
    gap: 5px;
  }
  .vb-row {
    display: grid;
    grid-template-columns: 56px 1fr 40px;
    align-items: center;
    gap: 8px;
    font-size: 11px;
    font-family: var(--font-mono);
    font-variant-numeric: tabular-nums;
  }
  .vb-track {
    height: 8px;
    background: var(--bg-subtle);
    position: relative;
  }
  .vb-fill {
    height: 100%;
    background: var(--text-2);
  }
  .vb-row span:first-child { color: var(--text-3); }
  .vb-row span:last-child { text-align: right; color: var(--text-1); font-weight: 600; }
  .pct-big {
    font-family: var(--font-mono);
    font-size: 38px;
    font-weight: 700;
    color: var(--text-1);
    letter-spacing: -1.2px;
    font-variant-numeric: tabular-nums;
    line-height: 1;
  }
  .vol-note {
    font-family: var(--font-display);
    font-style: italic;
    font-size: 12px;
    color: var(--text-2);
    line-height: 1.5;
    margin-top: 4px;
  }
  .valuation-table {
    padding: 4px 0;
  }
  .vt-head {
    display: grid;
    grid-template-columns: 1.2fr 0.6fr 1.4fr 0.6fr 0.6fr 0.7fr;
    gap: 6px;
    padding: 8px 16px;
    font-size: 10px;
    font-weight: 700;
    color: var(--text-3);
    letter-spacing: 1.2px;
    text-transform: uppercase;
    border-bottom: 1px solid var(--border-subtle);
    background: var(--bg-subtle);
  }
  .vt-row {
    display: grid;
    grid-template-columns: 1.2fr 0.6fr 1.4fr 0.6fr 0.6fr 0.7fr;
    gap: 6px;
    padding: 8px 16px;
    font-size: 12px;
    cursor: pointer;
    transition: background 0.1s;
    border-bottom: 1px dashed var(--border-subtle);
    align-items: center;
  }
  .vt-row:hover { background: var(--bg-hover); }
  .vt-row:last-child { border-bottom: none; }
  .vt-name {
    color: var(--text-1);
    font-weight: 600;
    letter-spacing: -0.1px;
  }
  .vt-row .mono {
    font-family: var(--font-mono);
    font-variant-numeric: tabular-nums;
    color: var(--text-2);
    text-align: right;
  }
  .vt-row .mono.up { color: var(--up); font-weight: 600; }
  .vt-row .mono.down { color: var(--down); font-weight: 600; }
  .vt-pct {
    display: flex;
    align-items: center;
    gap: 6px;
  }
  .vt-pct-bar {
    flex: 1;
    height: 4px;
    background: var(--bg-subtle);
    position: relative;
  }
  .vt-pct-fill {
    height: 100%;
    background: var(--text-3);
  }
  .vt-pct-fill.low { background: var(--down); }
  .vt-pct-fill.high { background: var(--up); }
  .vt-pct-num {
    font-family: var(--font-mono);
    font-variant-numeric: tabular-nums;
    font-size: 11px;
    color: var(--text-3);
    min-width: 22px;
    text-align: right;
  }
  .fund-search {
    padding: 12px 14px;
    border-bottom: 1px solid var(--border-subtle);
  }
  .fund-input {
    width: 100%;
    padding: 8px 12px;
    border: 1px solid var(--border-subtle);
    background: var(--bg-main);
    font-size: 13px;
    color: var(--text-1);
    font-family: var(--font-sans);
    border-radius: 3px;
  }
  .fund-input:focus {
    outline: none;
    border-color: var(--accent);
  }
  .fund-recent {
    display: flex;
    gap: 6px;
    margin-top: 8px;
    flex-wrap: wrap;
  }
  .fund-tag {
    padding: 3px 10px;
    font-size: 11px;
    color: var(--text-2);
    background: var(--bg-subtle);
    border: 1px solid var(--border-subtle);
    border-radius: 12px;
    cursor: pointer;
    transition: all 0.12s;
  }
  .fund-tag:hover { color: var(--text-1); }
  .fund-tag.active {
    background: var(--accent);
    color: white;
    border-color: var(--accent);
  }
  .fund-card {
    padding: 14px;
  }
  .fund-stock-head {
    display: grid;
    grid-template-columns: 32px 1fr auto;
    align-items: center;
    gap: 10px;
    margin-bottom: 12px;
    padding-bottom: 10px;
    border-bottom: 1px dashed var(--border-subtle);
  }
  .fund-icon { font-size: 22px; line-height: 1; }
  .fund-name {
    font-size: 14px;
    font-weight: 700;
    color: var(--text-1);
    letter-spacing: -0.2px;
  }
  .fund-code {
    font-size: 10px;
    color: var(--text-3);
    font-family: var(--font-mono);
    margin-top: 2px;
  }
  .fund-cap {
    font-size: 11px;
    color: var(--text-3);
    text-align: right;
  }
  .fund-cap strong {
    display: block;
    font-family: var(--font-mono);
    font-size: 13px;
    color: var(--text-1);
    font-weight: 700;
    font-variant-numeric: tabular-nums;
  }
  .fund-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 1px;
    background: var(--border-subtle);
    border: 1px solid var(--border-subtle);
  }
  .fund-cell {
    background: var(--bg-card);
    padding: 10px;
    display: flex;
    flex-direction: column;
    gap: 2px;
  }
  .fund-cell-label {
    font-size: 10px;
    font-weight: 600;
    color: var(--text-3);
    letter-spacing: 0.05em;
    text-transform: uppercase;
  }
  .fund-cell-val {
    font-family: var(--font-mono);
    font-size: 14px;
    font-weight: 700;
    color: var(--text-1);
    letter-spacing: -0.3px;
    font-variant-numeric: tabular-nums;
  }
  .fund-cell-ctx {
    font-size: 10px;
    color: var(--text-3);
    font-family: var(--font-mono);
    font-variant-numeric: tabular-nums;
  }
  .fund-cell-ctx.up { color: var(--up); font-weight: 600; }
  .fund-cell-ctx.down { color: var(--down); font-weight: 600; }
  .fund-cta {
    display: flex;
    justify-content: space-between;
    margin-top: 10px;
    padding-top: 10px;
    border-top: 1px dashed var(--border-subtle);
    font-size: 11px;
  }
  .fund-cta span {
    color: var(--accent);
    cursor: pointer;
    transition: opacity 0.12s;
  }
  .fund-cta span:hover { opacity: 0.7; }
  .backtest-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1px;
    background: var(--border-subtle);
    border-bottom: 1px solid var(--border-subtle);
  }
  .bt-card {
    background: var(--bg-card);
    padding: 14px;
    display: flex;
    flex-direction: column;
    gap: 6px;
  }
  .bt-eyebrow {
    font-size: 10px;
    font-weight: 700;
    color: var(--text-3);
    letter-spacing: 1.4px;
    text-transform: uppercase;
  }
  .bt-title {
    font-family: var(--font-display);
    font-size: 16px;
    font-weight: 600;
    color: var(--text-1);
    letter-spacing: -0.3px;
    line-height: 1.25;
  }
  .bt-meta {
    font-size: 10px;
    color: var(--text-3);
    font-family: var(--font-mono);
    margin-bottom: 4px;
  }
  .bt-rows {
    display: flex;
    flex-direction: column;
    gap: 5px;
    padding: 8px 0;
    border-top: 1px dashed var(--border-subtle);
  }
  .bt-row {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    font-size: 11px;
  }
  .bt-tag {
    color: var(--text-3);
    letter-spacing: 0.05em;
  }
  .bt-val {
    font-family: var(--font-mono);
    font-variant-numeric: tabular-nums;
    font-weight: 700;
    letter-spacing: -0.2px;
    color: var(--text-1);
  }
  .bt-val.up { color: var(--up); }
  .bt-val.down { color: var(--down); }
  .bt-link {
    color: var(--accent);
    font-size: 11px;
    margin-top: auto;
    cursor: pointer;
    text-decoration: none;
    transition: opacity 0.12s;
  }
  .bt-link:hover { opacity: 0.7; }
  .margin-section {
    padding: 14px 16px 12px 16px;
    border-bottom: 1px solid var(--border-subtle);
  }
  .margin-headline {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    gap: 12px;
    margin-bottom: 12px;
  }
  .margin-headline > div {
    border-left: 2px solid var(--border-subtle);
    padding-left: 10px;
  }
  .margin-headline > div:first-child {
    border-color: var(--up);
  }
  .margin-headline > div:nth-child(2) {
    border-color: var(--down);
  }
  .m-label {
    font-size: 10px;
    color: var(--text-3);
    letter-spacing: 0.05em;
    font-weight: 600;
  }
  .m-val {
    font-family: var(--font-mono);
    font-size: 16px;
    font-weight: 700;
    color: var(--text-1);
    letter-spacing: -0.4px;
    font-variant-numeric: tabular-nums;
    margin-top: 2px;
  }
  .m-ctx {
    font-size: 10px;
    color: var(--text-3);
    font-family: var(--font-mono);
    margin-top: 2px;
  }
  .margin-ts {
    width: 100%;
    height: 80px;
    display: block;
  }
  .margin-ts-legend {
    display: flex;
    gap: 14px;
    font-size: 10px;
    color: var(--text-3);
    font-family: var(--font-mono);
    margin-top: 4px;
  }
  .margin-ts-legend span::before {
    content: '';
    display: inline-block;
    width: 8px;
    height: 2px;
    margin-right: 4px;
    vertical-align: middle;
  }
  .margin-ts-legend .lg-up::before { background: var(--up); }
  .margin-ts-legend .lg-down::before { background: var(--down); }
  .margin-tops {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1px;
    background: var(--border-subtle);
  }
  .margin-top-block {
    background: var(--bg-card);
    padding: 12px 14px;
  }
  .margin-top-head {
    font-size: 10px;
    font-weight: 700;
    color: var(--text-3);
    letter-spacing: 1.4px;
    text-transform: uppercase;
    margin-bottom: 8px;
  }
  .mt-row {
    display: grid;
    grid-template-columns: 18px 1fr auto;
    align-items: center;
    gap: 8px;
    padding: 4px 0;
    font-size: 12px;
  }
  .mt-rk {
    font-family: var(--font-mono);
    font-size: 10px;
    color: var(--text-3);
    font-weight: 700;
    text-align: right;
  }
  .mt-name {
    color: var(--text-1);
    font-weight: 500;
    letter-spacing: -0.1px;
  }
  .mt-val {
    font-family: var(--font-mono);
    font-variant-numeric: tabular-nums;
    font-weight: 700;
    letter-spacing: -0.2px;
    font-size: 11px;
  }
  .data-footer-stamp {
    text-align: center;
    font-size: 11px;
    color: var(--text-3);
    font-family: var(--font-mono);
    padding: 20px 0;
    line-height: 1.6;
    border-top: 1px dashed var(--border-subtle);
    margin-top: 16px;
  }
  
  /* 行情 Tab 顶部 AI Recap 间距 */
  .market-row + .ai-recap { margin-top: 8px; }
  .ai-recap + .section-heading { margin-top: 24px; }



  /* ===== TradingView K线容器 ===== */
  .tv-chart-mount, #bpTvChart { width: 100%; height: 400px; min-height: 400px; }
  .kline-chart-area:has(#bpTvChart) { padding: 0; }
  #bpTvChart.tv-fullscreen { position: fixed; inset: 0; width: 100vw !important; height: 100vh !important; z-index: 9999; background: #fff; }
  body.tv-fs-open { overflow: hidden; }
  #bpTvFsClose { position: fixed; top: 16px; right: 18px; z-index: 10000; padding: 7px 14px; font-size: 13px;
    font-family: var(--font-mono); color: var(--text-1); background: var(--bg-card); border: 1px solid var(--border-strong); border-radius: 7px; cursor: pointer; }
  #bpTvFsClose:hover { border-color: var(--accent); }


  /* ===== 指数大图 (TradingView 全屏) ===== */
  #bpIndexTvModal { position: fixed; inset: 0; z-index: 9998; display: none; flex-direction: column; background: #fff; }
  #bpIndexTvModal.open { display: flex; }
  #bpIndexTvModal .idx-tv-head { display: flex; align-items: center; justify-content: space-between; padding: 12px 18px; background: var(--bg-card); border-bottom: 1px solid var(--border-subtle); }
  #bpIndexTvModal .idx-tv-title { font-weight: 700; font-size: 15px; color: var(--text-1); }
  #bpIndexTvModal .idx-tv-close { cursor: pointer; border: 1px solid var(--border-strong); background: var(--bg-card); border-radius: 7px; padding: 6px 13px; font-family: var(--font-mono); font-size: 13px; color: var(--text-1); }
  #bpIndexTvModal .idx-tv-close:hover { border-color: var(--accent); }
  #bpIndexTvChart { flex: 1 1 auto; min-height: 0; background: #fff; }


  /* ===== TVFILL-FIX: TV 图填满高度, 消除盘口比图高造成的下方留白 ===== */
  .stock-row { align-items: stretch; }
  .kline-card { min-height: 0; }
  .kline-card .kline-body { flex: 1 1 auto; min-height: 0; }
  .kline-card .kline-chart-area { min-height: 0; }
  #bpTvChart, .tv-chart-mount { height: 100% !important; min-height: 360px; }


  /* ════════════════════════════════════════════════════════════════════
     响应式自适应 (行情 Tab) — 把写死的宽双列/三列在窄屏降级为单列,
     固定高卡片改 min-height, 大号数字用 clamp; 防 1366/1440 笔记本溢出/挤压。
     A股红涨绿跌色不变, 仅改布局尺寸。
     ════════════════════════════════════════════════════════════════════ */
  /* 大号数字/价格流式: 随视口轻缩, 避免窄列里撑爆换行 */
  .pct-big      { font-size: clamp(28px, 2.4vw, 38px); }
  .kline-stock-price { font-size: clamp(18px, 1.5vw, 22px); }
  .lk-val, .kpi-val, .m-val { font-size: clamp(15px, 1.2vw, 18px); }
  /* 固定高的卡片在窄屏放开为最小高, 防内部被压 */
  .sector-list-card { height: auto; min-height: 420px; }

  /* 中窄屏 (≈1440 及以下笔记本) — 主区已被左右栏夹窄, 先把 1.85:1 的左右结构收紧 */
  @media (max-width: 1440px) {
    .sector-row, .stock-row { grid-template-columns: 1.6fr 1fr; }
    .vol-three-col { grid-template-columns: 1fr 1fr; }   /* 三列→两列 */
    .vol-block:nth-child(3) { border-right: none; }
  }
  /* 窄屏 (≈1280 及以下) — KPI/估值条收列 */
  @media (max-width: 1280px) {
    .kpi-strip { grid-template-columns: repeat(3, 1fr); }
  }
  /* 真窄屏 (<1024) — 一律降单列, 杜绝横向溢出 */
  @media (max-width: 1024px) {
    .sector-row, .stock-row, .rank-row { grid-template-columns: 1fr; }
    .vol-three-col { grid-template-columns: 1fr; }
    .vol-block { border-right: none; border-bottom: 1px solid var(--border-subtle); padding-bottom: 12px; }
    .vol-block:last-child { border-bottom: none; }
    .margin-headline, .margin-tops { grid-template-columns: 1fr; }
    .kpi-strip { grid-template-columns: repeat(2, 1fr); }
  }
