* { margin: 0; padding: 0; box-sizing: border-box; }
:root{--bg:#0f1117;--panel:#1a1d26;--panel-2:#22252f;--border:#2a2d35;--text:#e0e0e0;--muted:#9ca3af;--up:#ef4444;--down:#22c55e;--warn:#f59e0b;--info:#3b82f6;--side:#14161d}
html,body{height:100%}
body{font-family:-apple-system,"PingFang SC","Microsoft YaHei","Segoe UI",sans-serif;background:var(--bg);color:var(--text);font-size:14px;overflow:hidden}
.layout{display:flex;height:100vh}
.sidebar{width:200px;flex-shrink:0;background:var(--side);border-right:1px solid var(--border);display:flex;flex-direction:column}
.logo{padding:20px 16px;font-size:17px;font-weight:700;color:#fff;border-bottom:1px solid var(--border);letter-spacing:.5px}
.tabs{flex:1;padding:12px 8px;overflow-y:auto}
.tab{display:flex;align-items:center;justify-content:space-between;width:100%;padding:10px 12px;margin-bottom:4px;background:transparent;border:none;border-radius:8px;color:var(--muted);font-size:14px;text-align:left;cursor:pointer;transition:all .15s;font-family:inherit}
.tab:hover{background:var(--panel);color:var(--text)}
.tab.active{background:linear-gradient(90deg,#1e3a8a 0%,#2563eb 100%);color:#fff;font-weight:500;box-shadow:0 2px 8px rgba(37,99,235,.3)}
.tab .cnt{font-size:11px;padding:1px 7px;border-radius:10px;background:rgba(255,255,255,.08);color:var(--muted);font-weight:400;min-width:22px;text-align:center}
.tab.active .cnt{background:rgba(255,255,255,.22);color:#fff}
.sidebar-foot{padding:12px 16px;border-top:1px solid var(--border);font-size:11px;color:var(--muted)}
.content{flex:1;display:flex;flex-direction:column;overflow:hidden}
.topbar{padding:14px 24px;border-bottom:1px solid var(--border);background:var(--bg);display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px}
.date-picker{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.date-picker label{color:var(--muted);font-size:13px}
.date-picker input{padding:6px 10px;border-radius:6px;border:1px solid var(--border);background:var(--panel);color:var(--text);font-size:14px;color-scheme:dark;min-width:130px;cursor:pointer}
.date-picker button{padding:6px 16px;border-radius:6px;border:none;background:#2563eb;color:#fff;cursor:pointer;font-size:13px;font-family:inherit;transition:background .15s}
.date-picker button:hover{background:#1d4ed8}
.date-picker .btn-ghost{background:transparent;border:1px solid var(--border);color:var(--muted)}
.date-picker .btn-ghost:hover{background:var(--panel-2);color:var(--text)}
.loading{color:var(--warn);font-size:12px}
.hidden{display:none !important}
.panel{display:none;flex:1;overflow-y:auto;padding:20px 24px}
.panel.active{display:block}
.panel-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.panel-head h2{font-size:16px;font-weight:500;color:#d1d5db;display:flex;align-items:center;gap:8px}
.btn-mini{padding:4px 12px;border-radius:5px;background:transparent;border:1px solid var(--border);color:var(--muted);cursor:pointer;font-size:12px;font-family:inherit}
.btn-mini:hover{background:var(--panel-2);color:var(--text)}
.btn-mini:disabled{opacity:.5;cursor:not-allowed}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px;margin-bottom:24px}
.card{background:var(--panel);border-radius:10px;padding:18px;border-left:4px solid #333;transition:transform .15s}
.card:hover{transform:translateY(-2px)}
.card-up{border-left-color:var(--up)}
.card-down{border-left-color:var(--down)}
.card-warn{border-left-color:var(--warn)}
.card-info{border-left-color:var(--info)}
.card-label{font-size:13px;color:var(--muted);margin-bottom:6px}
.card-value{font-size:26px;font-weight:700;color:#fff}
.card-up .card-value{color:var(--up)}
.card-down .card-value{color:var(--down)}
.card-warn .card-value{color:var(--warn)}
.charts{display:grid;grid-template-columns:1fr 1fr;gap:20px}
@media (max-width:1100px){.charts{grid-template-columns:1fr}}
.chart-box{background:var(--panel);border-radius:10px;padding:16px}
.chart-box h3{font-size:14px;margin-bottom:12px;color:#d1d5db;font-weight:500}
.badge{display:inline-block;padding:1px 8px;border-radius:10px;background:var(--panel-2);color:var(--muted);font-size:12px;font-weight:400}
.table-wrap {
    display: inline-block;
    max-width: 100%;
    vertical-align: top;
    overflow: auto;
    border-radius: 10px;
    border: 1px solid var(--border);
    max-height: 420px;
}
table {
    width: auto;
    border-collapse: collapse;
    background: var(--panel);
    font-size: 13px;
}
th{background:var(--panel-2);color:var(--muted);font-weight:500;padding:10px 12px;text-align:left;white-space:nowrap;position:sticky;top:0;z-index:1}
td{padding:9px 12px;border-top:1px solid var(--border);white-space:nowrap;vertical-align:middle}
tr:hover td{background:var(--panel-2)}
td.col-ellipsis{max-width:320px;overflow:hidden;text-overflow:ellipsis}
td.col-reason{max-width:340px}
td.col-industry{max-width:130px}
td.num-col{text-align:right;font-variant-numeric:tabular-nums}
th.sortable{cursor:pointer;user-select:none;position:relative;padding-right:24px !important;transition:color .12s,background .12s}
th.sortable:hover{color:#e0e0e0;background:#262a35}
th.sortable::after{content:"⇅";position:absolute;right:8px;top:50%;transform:translateY(-50%);opacity:.22;font-size:11px}
th.sortable.sort-asc::after{content:"▲";opacity:1;color:#3b82f6}
th.sortable.sort-desc::after{content:"▼";opacity:1;color:#3b82f6}
.tag{display:inline-block;padding:2px 8px;border-radius:4px;font-size:12px;background:var(--panel-2);color:var(--muted)}
.tag-red{background:#3b1111;color:var(--up)}
.text-up{color:var(--up)}
.text-down{color:var(--down)}
.text-muted{color:var(--muted)}
footer{padding:16px 24px;border-top:1px solid var(--border);color:var(--muted);font-size:11px;text-align:center}
.flatpickr-calendar{background:#1a1d26 !important;border:1px solid #2a2d35 !important;box-shadow:0 8px 24px rgba(0,0,0,.5) !important}
.flatpickr-calendar.arrowTop::before,.flatpickr-calendar.arrowTop::after{border-bottom-color:#1a1d26 !important}
.flatpickr-calendar.arrowBottom::before,.flatpickr-calendar.arrowBottom::after{border-top-color:#1a1d26 !important}
.flatpickr-months,.flatpickr-weekdays{background:#1a1d26 !important}
.flatpickr-current-month,.flatpickr-monthDropdown-months{color:#e0e0e0 !important;background:#1a1d26 !important}
.flatpickr-current-month .numInputWrapper input{color:#e0e0e0 !important}
.flatpickr-weekday{color:#9ca3af !important;background:#1a1d26 !important}
.flatpickr-day{color:#e0e0e0 !important;border-radius:6px !important}
.flatpickr-day:hover,.flatpickr-day:focus{background:#22252f !important;border-color:#22252f !important}
.flatpickr-day.today{border-color:#3b82f6 !important;color:#3b82f6 !important}
.flatpickr-day.selected,.flatpickr-day.selected:hover{background:#2563eb !important;border-color:#2563eb !important;color:#fff !important}
.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay{color:#4b5563 !important;background:transparent !important;cursor:not-allowed !important;opacity:.45}
.flatpickr-prev-month svg,.flatpickr-next-month svg{fill:#9ca3af !important}
.flatpickr-prev-month:hover svg,.flatpickr-next-month:hover svg{fill:#e0e0e0 !important}
.sub-block{margin-bottom:28px}
.sub-block:last-child{margin-bottom:0}
.panel-head-sticky{position:sticky;top:0;z-index:10;background:var(--bg);padding:10px 0;margin-top:-10px;margin-bottom:18px;border-bottom:1px solid var(--border)}
.panel-head-sticky h2{font-size:17px;color:#fff}


/* ---------- 连板梯队卡片视图 ---------- */
.lianban-board {
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.lb-row {
    display: flex;
    align-items: flex-start;
    background: var(--panel);
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 6px 10px;
    gap: 12px;
    min-height: 44px;
}
.lb-row:hover { border-color: #3a3f4d; }
.lb-theme {
    flex-shrink: 0;
    width: 120px;
    align-self: stretch;
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 4px 8px;
    border-right: 1px solid var(--border);
}
.lb-theme-name {
    font-size: 13px;
    color: #e0e0e0;
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.lb-theme-count {
    font-size: 11px;
    color: var(--up);
    margin-top: 2px;
    font-weight: 500;
}
.lb-cards {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    flex: 1;
}
.lb-card {
    display: inline-flex;
    flex-direction: column;
    min-width: 96px;
    padding: 4px 8px;
    border: 1px solid #7a2a2a;
    border-radius: 5px;
    background: #2a1414;
    font-size: 11px;
    line-height: 1.45;
    cursor: default;
}
.lb-card .lb-head {
    display: flex;
    justify-content: space-between;
    gap: 6px;
    color: #c9c9c9;
    font-size: 10px;
}
.lb-card .lb-name {
    color: #fff;
    font-weight: 600;
    font-size: 12px;
}
.lb-card .lb-lb {
    color: var(--up);
    font-weight: 700;
    font-size: 11px;
    margin-left: 4px;
}
.lb-card .lb-status {
    color: #f59e0b;
}
.lb-card .lb-status.yizi { color: #ef4444; }
.lb-card .lb-status.weikai { color: #9ca3af; }
.lb-card .lb-theme-tag {
    color: #9ca3af;
}


/* ---------- 个股详情 Modal ---------- */
.modal-overlay {
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,.72);
    z-index: 100;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
}
.modal-overlay.hidden { display: none !important; }
.modal {
    background: var(--panel);
    border: 1px solid var(--border);
    border-radius: 12px;
    width: 100%;
    max-width: 1100px;
    max-height: 92vh;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    box-shadow: 0 20px 60px rgba(0,0,0,.7);
}
.modal-header {
    display: flex;
    align-items: center;
    gap: 20px;
    padding: 14px 20px;
    border-bottom: 1px solid var(--border);
    background: var(--panel-2);
}
.modal-title { display: flex; align-items: baseline; gap: 10px; }
.modal-title .stock-name { font-size: 18px; font-weight: 700; color: #fff; }
.modal-title .stock-code { font-size: 13px; color: var(--muted); }
.modal-price { display: flex; align-items: baseline; gap: 10px; margin-left: auto; }
.modal-price .price { font-size: 20px; font-weight: 700; color: #fff; }
.modal-price .pct { font-size: 14px; font-weight: 600; }
.modal-close {
    width: 32px; height: 32px;
    border: none; background: transparent;
    color: var(--muted); cursor: pointer;
    border-radius: 6px; font-size: 16px;
}
.modal-close:hover { background: rgba(255,255,255,.08); color: #fff; }

.modal-body {
    display: grid;
    grid-template-columns: 1fr 320px;
    gap: 0;
    overflow: hidden;
    flex: 1;
}
.modal-left {
    padding: 14px 18px;
    overflow-y: auto;
    border-right: 1px solid var(--border);
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.modal-right {
    padding: 14px 18px;
    overflow-y: auto;
}
@media (max-width: 900px) {
    .modal-body { grid-template-columns: 1fr; }
    .modal-left { border-right: none; border-bottom: 1px solid var(--border); }
}

.mini-tabs { display: flex; gap: 6px; }
.mini-tab {
    padding: 4px 14px;
    background: transparent;
    border: 1px solid var(--border);
    color: var(--muted);
    border-radius: 5px;
    font-size: 12px;
    cursor: pointer;
    font-family: inherit;
}
.mini-tab.active { background: #2563eb; border-color: #2563eb; color: #fff; }

.bid-ask {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 8px 18px;
    padding: 10px 12px;
    background: var(--panel-2);
    border-radius: 8px;
    font-size: 12px;
    color: #d1d5db;
}
.bid-ask .k { color: var(--muted); }
.bid-ask .v { color: #fff; font-weight: 600; font-variant-numeric: tabular-nums; }
.bid-ask .up { color: var(--up); }
.bid-ask .down { color: var(--down); }

.info-block {
    margin-bottom: 20px;
    padding-bottom: 16px;
    border-bottom: 1px solid var(--border);
}
.info-block:last-child { border-bottom: none; }
.info-block h4 {
    font-size: 13px;
    color: #d1d5db;
    font-weight: 500;
    margin-bottom: 10px;
    display: flex;
    align-items: center;
    justify-content: space-between;
}
.info-block h4 .small {
    font-size: 11px;
    color: var(--up);
    font-weight: 600;
}
.reason-text {
    color: #f59e0b;
    font-size: 13px;
    line-height: 1.6;
    padding: 10px 12px;
    background: var(--panel-2);
    border-radius: 6px;
    border-left: 3px solid #f59e0b;
}
.zt-history {
    display: flex;
    flex-direction: column;
    gap: 6px;
    max-height: 340px;
    overflow-y: auto;
}
.zt-item {
    display: flex;
    gap: 10px;
    align-items: center;
    padding: 6px 10px;
    background: var(--panel-2);
    border-radius: 6px;
    font-size: 12px;
}
.zt-item .d { color: var(--muted); min-width: 60px; }
.zt-item .lb { color: var(--up); font-weight: 700; min-width: 44px; }
.zt-item .ind { color: #d1d5db; }
.zt-item .pct { margin-left: auto; }

/* 表格行可点 */
#ztTable tbody tr, #zbTable tbody tr, #dtTable tbody tr, #lhbTable tbody tr {
    cursor: pointer;
}
.lb-card { cursor: pointer; }


/* ---------- 龙虎榜专属样式 ---------- */
.lhb-header {
    display: flex;
    align-items: center;
    gap: 14px;
    margin-bottom: 14px;
    flex-wrap: wrap;
}
.lhb-header h2 {
    font-size: 16px;
    color: #fff;
    font-weight: 600;
}
.lhb-meta {
    font-size: 12px;
    color: var(--muted);
}

.lhb-summary {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 20px;
    padding: 12px 16px;
    background: var(--panel);
    border: 1px solid var(--border);
    border-radius: 8px;
    margin-bottom: 14px;
    font-size: 13px;
    color: #d1d5db;
}
.lhb-sum-item b {
    color: #fff;
    font-weight: 700;
    margin: 0 2px;
}
.lhb-sum-item b.text-up { color: var(--up); }
.lhb-sum-item b.text-down { color: var(--down); }

.lhb-filters {
    display: flex;
    gap: 8px;
    margin-bottom: 14px;
}
.lhb-filter {
    padding: 5px 16px;
    background: transparent;
    border: 1px solid var(--border);
    color: var(--muted);
    border-radius: 6px;
    font-size: 13px;
    cursor: pointer;
    font-family: inherit;
    transition: all .15s;
}
.lhb-filter:hover { background: var(--panel-2); color: var(--text); }
.lhb-filter.active {
    border-color: #ef4444;
    color: #ef4444;
    background: rgba(239,68,68,.08);
}

.lhb-list {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.lhb-item-wrap {
    border: 1px solid var(--border);
    border-radius: 6px;
    overflow: hidden;
    background: var(--panel);
}
.lhb-item-wrap:hover { border-color: #3a3f4d; }

.lhb-item {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 10px 16px;
    transition: background .15s;
}
.lhb-item:hover { background: var(--panel-2); }

.lhb-item .stock-name {
    font-size: 15px;
    font-weight: 700;
    color: #fff;
    min-width: 76px;
    white-space: nowrap;
}
.lhb-item .stock-code {
    font-size: 12px;
    color: var(--muted);
    min-width: 56px;
    font-family: Consolas, monospace;
}
.lhb-item .pct {
    font-size: 13px;
    font-weight: 600;
    min-width: 62px;
    text-align: right;
    font-variant-numeric: tabular-nums;
}
.lhb-item .net-buy {
    font-size: 14px;
    font-weight: 700;
    min-width: 104px;
    text-align: right;
    font-variant-numeric: tabular-nums;
}
.lhb-item .tags {
    display: flex;
    gap: 4px;
    min-width: 76px;
}
.lhb-tag {
    font-size: 11px;
    padding: 2px 8px;
    border-radius: 3px;
    white-space: nowrap;
    font-weight: 500;
}
.lhb-tag.inst { background: #1e3a8a; color: #93c5fd; }
.lhb-tag.hot  { background: #78350f; color: #fbbf24; }

.lhb-item .reason {
    flex: 1;
    font-size: 12px;
    color: var(--muted);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
}

.lhb-item .expand-btn {
    padding: 3px 12px;
    background: transparent;
    border: 1px solid var(--border);
    color: var(--muted);
    border-radius: 4px;
    font-size: 12px;
    cursor: pointer;
    flex-shrink: 0;
    font-family: inherit;
    transition: all .15s;
}
.lhb-item .expand-btn:hover {
    background: var(--panel-2);
    color: var(--text);
}

.lhb-detail {
    display: none;
    padding: 12px 16px;
    background: #141720;
    border-top: 1px solid var(--border);
    font-size: 12px;
}
.lhb-detail.show { display: block; }
.lhb-detail-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}
@media (max-width: 900px) {
    .lhb-detail-grid { grid-template-columns: 1fr; }
}
.lhb-detail h5 {
    font-size: 12px;
    color: #d1d5db;
    margin-bottom: 8px;
    font-weight: 500;
}
.lhb-yyb-row {
    display: flex;
    align-items: center;
    padding: 4px 8px;
    border-radius: 3px;
    margin-bottom: 2px;
    font-size: 12px;
}
.lhb-yyb-row:nth-child(odd) { background: rgba(255,255,255,.02); }
.lhb-yyb-row .name {
    flex: 1;
    color: #d1d5db;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
}
.lhb-yyb-row .amt {
    font-variant-numeric: tabular-nums;
    margin-left: 10px;
    min-width: 90px;
    text-align: right;
}
.lhb-yyb-row .amt.buy  { color: var(--up); }
.lhb-yyb-row .amt.sell { color: var(--down); }


/* ---------- 游资高亮标签 ---------- */
.youzi-tag {
    display: inline-block;
    padding: 0 6px;
    margin-right: 4px;
    background: #ef4444;
    color: #fff;
    border-radius: 3px;
    font-size: 11px;
    font-weight: 500;
    line-height: 16px;
    vertical-align: middle;
    white-space: nowrap;
}
.youzi-dot {
    color: #6b7280;
    margin-right: 2px;
}
.yyb-name {
    color: #d1d5db;
    vertical-align: middle;
}
.lhb-yyb-row:hover .yyb-name { color: #fff; }


/* ---------- 龙虎榜分组（当日榜/三日榜） ---------- */
.lhb-group { margin-bottom: 22px; }
.lhb-group:last-child { margin-bottom: 0; }
.lhb-group-title {
    font-size: 14px;
    color: #e0e0e0;
    font-weight: 600;
    margin-bottom: 10px;
    padding-bottom: 6px;
    border-bottom: 1px solid var(--border);
    display: flex;
    align-items: center;
    gap: 8px;
}
.lhb-group-title .count {
    color: var(--muted);
    font-weight: 400;
    font-size: 12px;
    background: var(--panel-2);
    padding: 1px 8px;
    border-radius: 10px;
}
.lhb-items {
    display: flex;
    flex-direction: column;
    gap: 6px;
}


/* ==================================================================
   亮色主题（白底）
   ================================================================== */
[data-theme="light"] {
    --bg:      #f5f6f8;
    --panel:   #ffffff;
    --panel-2: #f0f1f3;
    --border:  #e2e4e8;
    --text:    #1f2328;
    --muted:   #6b7280;
    --side:    #ffffff;
}

[data-theme="light"] body { background: var(--bg); color: var(--text); }

/* 顶部与侧栏 */
[data-theme="light"] .topbar { background: #ffffff; border-bottom-color: #e2e4e8; }
[data-theme="light"] .sidebar { background: #ffffff; border-right-color: #e2e4e8; }
[data-theme="light"] .logo { color: #1f2328; border-bottom-color: #e2e4e8; }
[data-theme="light"] .tab { color: #4b5563; }
[data-theme="light"] .tab:hover { background: #f0f1f3; color: #1f2328; }
[data-theme="light"] .tab .cnt { background: #f0f1f3; color: #6b7280; }
[data-theme="light"] .tab.active { color: #fff; }
[data-theme="light"] .tab.active .cnt { background: rgba(255,255,255,.25); color: #fff; }
[data-theme="light"] .sidebar-foot { border-top-color: #e2e4e8; color: #6b7280; }

/* 卡片 */
[data-theme="light"] .card {
    background: #ffffff;
    border: 1px solid #e2e4e8;
    border-left-width: 4px;
    box-shadow: 0 1px 2px rgba(0,0,0,.03);
}
[data-theme="light"] .card .card-value { color: #1f2328; }

/* 图表容器 */
[data-theme="light"] .chart-box {
    background: #ffffff;
    border: 1px solid #e2e4e8;
    box-shadow: 0 1px 2px rgba(0,0,0,.03);
}
[data-theme="light"] .chart-box h3 { color: #4b5563; }

/* 表格 */
[data-theme="light"] table { background: #ffffff; color: #1f2328; }
[data-theme="light"] th {
    background: #f0f1f3;
    color: #4b5563;
    border-bottom: 1px solid #e2e4e8;
}
[data-theme="light"] td { border-top-color: #eef0f3; }
[data-theme="light"] tr:hover td { background: #f7f8fa; }
[data-theme="light"] th.sortable:hover { background: #e6e8eb; color: #1f2328; }
[data-theme="light"] th.sortable::after { color: #9ca3af; opacity: .4; }

/* 标签与文字 */
[data-theme="light"] .tag { background: #f0f1f3; color: #4b5563; }
[data-theme="light"] .tag-red { background: #fee2e2; color: #b91c1c; }
[data-theme="light"] .text-up   { color: #dc2626; }
[data-theme="light"] .text-down { color: #16a34a; }
[data-theme="light"] .text-muted { color: #6b7280; }
[data-theme="light"] .card-up   .card-value { color: #dc2626; }
[data-theme="light"] .card-down .card-value { color: #16a34a; }
[data-theme="light"] .card-warn .card-value { color: #d97706; }

/* 按钮 */
[data-theme="light"] .date-picker label { color: #4b5563; }
[data-theme="light"] .date-picker input,
[data-theme="light"] .date-picker select {
    background: #ffffff;
    border-color: #e2e4e8;
    color: #1f2328;
}
[data-theme="light"] .date-picker .btn-ghost {
    background: transparent;
    border-color: #e2e4e8;
    color: #4b5563;
}
[data-theme="light"] .date-picker .btn-ghost:hover { background: #f0f1f3; color: #1f2328; }
[data-theme="light"] .btn-mini {
    background: transparent;
    border-color: #e2e4e8;
    color: #4b5563;
}
[data-theme="light"] .btn-mini:hover { background: #f0f1f3; color: #1f2328; }

/* 连板梯队卡片 */
[data-theme="light"] .lb-row { background: #ffffff; border-color: #e2e4e8; }
[data-theme="light"] .lb-row:hover { border-color: #cbd5e1; }
[data-theme="light"] .lb-theme { border-right-color: #e2e4e8; }
[data-theme="light"] .lb-theme-name { color: #1f2328; }
[data-theme="light"] .lb-card {
    background: #fef2f2;
    border-color: #fecaca;
    color: #1f2328;
}
[data-theme="light"] .lb-card .lb-head { color: #6b7280; }
[data-theme="light"] .lb-card .lb-name { color: #1f2328; }
[data-theme="light"] .lb-card .lb-status.yizi { color: #dc2626; }
[data-theme="light"] .lb-card .lb-status.weikai { color: #6b7280; }
[data-theme="light"] .lb-card .lb-theme-tag { color: #6b7280; }

/* 龙虎榜 */
[data-theme="light"] .lhb-summary {
    background: #ffffff;
    border-color: #e2e4e8;
    color: #4b5563;
}
[data-theme="light"] .lhb-summary b { color: #1f2328; }
[data-theme="light"] .lhb-summary b.text-up   { color: #dc2626; }
[data-theme="light"] .lhb-summary b.text-down { color: #16a34a; }
[data-theme="light"] .lhb-filter {
    background: #ffffff;
    border-color: #e2e4e8;
    color: #4b5563;
}
[data-theme="light"] .lhb-filter:hover { background: #f0f1f3; color: #1f2328; }
[data-theme="light"] .lhb-filter.active {
    background: #fef2f2;
    border-color: #dc2626;
    color: #dc2626;
}
[data-theme="light"] .lhb-group-title { color: #1f2328; border-bottom-color: #e2e4e8; }
[data-theme="light"] .lhb-group-title .count { background: #f0f1f3; color: #6b7280; }
[data-theme="light"] .lhb-item-wrap { background: #ffffff; border-color: #e2e4e8; }
[data-theme="light"] .lhb-item-wrap:hover { border-color: #cbd5e1; }
[data-theme="light"] .lhb-item:hover { background: #f7f8fa; }
[data-theme="light"] .lhb-item .stock-name { color: #1f2328; }
[data-theme="light"] .lhb-item .stock-code { color: #6b7280; }
[data-theme="light"] .lhb-item .reason { color: #4b5563; }
[data-theme="light"] .lhb-tag.inst { background: #dbeafe; color: #1e40af; }
[data-theme="light"] .lhb-tag.hot  { background: #fef3c7; color: #92400e; }
[data-theme="light"] .lhb-item .expand-btn {
    background: #ffffff;
    border-color: #e2e4e8;
    color: #4b5563;
}
[data-theme="light"] .lhb-item .expand-btn:hover { background: #f0f1f3; color: #1f2328; }
[data-theme="light"] .lhb-detail {
    background: #f7f8fa;
    border-top-color: #e2e4e8;
}
[data-theme="light"] .lhb-detail h5 { color: #1f2328; }
[data-theme="light"] .lhb-yyb-row:nth-child(odd) { background: rgba(0,0,0,.02); }
[data-theme="light"] .lhb-yyb-row .yyb-name { color: #1f2328; }
[data-theme="light"] .lhb-yyb-row .amt.buy  { color: #dc2626; }
[data-theme="light"] .lhb-yyb-row .amt.sell { color: #16a34a; }
[data-theme="light"] .youzi-tag { background: #dc2626; color: #ffffff; }

/* Modal */
[data-theme="light"] .modal {
    background: #ffffff;
    border-color: #e2e4e8;
    box-shadow: 0 20px 60px rgba(0,0,0,.18);
}
[data-theme="light"] .modal-header { background: #f7f8fa; border-bottom-color: #e2e4e8; }
[data-theme="light"] .modal-title .stock-name { color: #1f2328; }
[data-theme="light"] .modal-title .stock-code { color: #6b7280; }
[data-theme="light"] .modal-price .price { color: #1f2328; }
[data-theme="light"] .modal-close { color: #6b7280; }
[data-theme="light"] .modal-close:hover { background: rgba(0,0,0,.06); color: #1f2328; }
[data-theme="light"] .modal-left { border-right-color: #e2e4e8; }
[data-theme="light"] .info-block { border-bottom-color: #e2e4e8; }
[data-theme="light"] .info-block h4 { color: #1f2328; }
[data-theme="light"] .bid-ask { background: #f7f8fa; color: #1f2328; }
[data-theme="light"] .bid-ask .k { color: #6b7280; }
[data-theme="light"] .bid-ask .v { color: #1f2328; }
[data-theme="light"] .reason-text {
    background: #fffbeb;
    color: #b45309;
    border-left-color: #f59e0b;
}
[data-theme="light"] .zt-item { background: #f7f8fa; color: #1f2328; }
[data-theme="light"] .zt-item .d { color: #6b7280; }
[data-theme="light"] .zt-item .ind { color: #1f2328; }
[data-theme="light"] .mini-tab {
    background: #ffffff;
    border-color: #e2e4e8;
    color: #4b5563;
}
[data-theme="light"] .mini-tab.active { background: #2563eb; border-color: #2563eb; color: #fff; }

/* flatpickr 亮色 */
[data-theme="light"] .flatpickr-calendar {
    background: #ffffff !important;
    border-color: #e2e4e8 !important;
    box-shadow: 0 8px 24px rgba(0,0,0,.12) !important;
}
[data-theme="light"] .flatpickr-calendar.arrowTop::before,
[data-theme="light"] .flatpickr-calendar.arrowTop::after { border-bottom-color: #ffffff !important; }
[data-theme="light"] .flatpickr-calendar.arrowBottom::before,
[data-theme="light"] .flatpickr-calendar.arrowBottom::after { border-top-color: #ffffff !important; }
[data-theme="light"] .flatpickr-months,
[data-theme="light"] .flatpickr-weekdays { background: #ffffff !important; }
[data-theme="light"] .flatpickr-current-month,
[data-theme="light"] .flatpickr-monthDropdown-months {
    color: #1f2328 !important;
    background: #ffffff !important;
}
[data-theme="light"] .flatpickr-current-month .numInputWrapper input { color: #1f2328 !important; }
[data-theme="light"] .flatpickr-weekday { color: #6b7280 !important; background: #ffffff !important; }
[data-theme="light"] .flatpickr-day { color: #1f2328 !important; }
[data-theme="light"] .flatpickr-day:hover,
[data-theme="light"] .flatpickr-day:focus { background: #f0f1f3 !important; border-color: #f0f1f3 !important; }
[data-theme="light"] .flatpickr-day.today { border-color: #2563eb !important; color: #2563eb !important; }
[data-theme="light"] .flatpickr-day.selected,
[data-theme="light"] .flatpickr-day.selected:hover {
    background: #2563eb !important; border-color: #2563eb !important; color: #fff !important;
}
[data-theme="light"] .flatpickr-day.flatpickr-disabled,
[data-theme="light"] .flatpickr-day.flatpickr-disabled:hover,
[data-theme="light"] .flatpickr-day.prevMonthDay,
[data-theme="light"] .flatpickr-day.nextMonthDay {
    color: #cbd5e1 !important;
    background: transparent !important;
}
[data-theme="light"] .flatpickr-prev-month svg,
[data-theme="light"] .flatpickr-next-month svg { fill: #6b7280 !important; }

/* footer */
[data-theme="light"] footer {
    color: #6b7280;
    border-top-color: #e2e4e8;
}

/* 主题切换按钮 */
#themeBtn {
    padding: 6px 12px;
    border-radius: 6px;
    border: 1px solid var(--border);
    background: transparent;
    color: var(--muted);
    cursor: pointer;
    font-size: 13px;
    font-family: inherit;
    transition: all .15s;
}
#themeBtn:hover { background: var(--panel-2); color: var(--text); }


/* ---------- 游资席位面板 ---------- */
.youzi-header {
    display: flex;
    align-items: baseline;
    gap: 16px;
    margin-bottom: 16px;
    flex-wrap: wrap;
}
.youzi-header h2 {
    font-size: 16px;
    color: #fff;
    font-weight: 600;
    margin: 0;
}
.youzi-meta {
    font-size: 12px;
    color: var(--muted);
}
.youzi-meta span {
    color: #ef4444;
    font-weight: 700;
}
.youzi-search {
    margin-bottom: 16px;
}
.youzi-search input {
    width: 100%;
    max-width: 480px;
    padding: 8px 14px;
    border-radius: 6px;
    border: 1px solid var(--border);
    background: var(--panel);
    color: var(--text);
    font-size: 13px;
    font-family: inherit;
    color-scheme: dark;
}
.youzi-search input:focus {
    outline: none;
    border-color: #2563eb;
}
.youzi-list {
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.youzi-item {
    background: var(--panel);
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 12px 16px;
    display: grid;
    grid-template-columns: 180px 1fr;
    gap: 16px;
    align-items: flex-start;
    transition: border-color .15s;
}
.youzi-item:hover { border-color: #3a3f4d; }
@media (max-width: 900px) {
    .youzi-item { grid-template-columns: 1fr; }
}
.youzi-name-box {
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.youzi-name-tag {
    display: inline-block;
    padding: 3px 10px;
    background: #dc2626;
    color: #fff;
    border-radius: 4px;
    font-size: 14px;
    font-weight: 700;
    width: fit-content;
}
.youzi-count {
    font-size: 11px;
    color: var(--muted);
}
.youzi-yyb-list {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}
.youzi-yyb {
    display: inline-block;
    padding: 4px 10px;
    background: var(--panel-2);
    border: 1px solid var(--border);
    border-radius: 4px;
    font-size: 12px;
    color: #d1d5db;
    transition: all .12s;
}
.youzi-yyb:hover {
    border-color: #ef4444;
    color: #fff;
    background: #2a1414;
}
.youzi-empty {
    color: #666;
    padding: 20px;
    text-align: center;
}

/* 亮色主题适配 */
[data-theme="light"] .youzi-header h2 { color: #1f2328; }
[data-theme="light"] .youzi-search input {
    background: #ffffff;
    border-color: #e2e4e8;
    color: #1f2328;
}
[data-theme="light"] .youzi-item {
    background: #ffffff;
    border-color: #e2e4e8;
}
[data-theme="light"] .youzi-item:hover { border-color: #cbd5e1; }
[data-theme="light"] .youzi-yyb {
    background: #f0f1f3;
    border-color: #e2e4e8;
    color: #4b5563;
}
[data-theme="light"] .youzi-yyb:hover {
    background: #fef2f2;
    border-color: #ef4444;
    color: #b91c1c;
}


/* 展开明细后命中的游资名标签 */
.lhb-tag.youzi-name {
    background: #7f1d1d;
    color: #fecaca;
    font-size: 11px;
    padding: 1px 6px;
    border-radius: 3px;
    margin-left: 2px;
}
[data-theme="light"] .lhb-tag.youzi-name {
    background: #fee2e2;
    color: #991b1b;
}


/* ---------- 游资追踪面板 ---------- */
.yz-trace-header {
    display: flex;
    align-items: center;
    gap: 16px;
    margin-bottom: 18px;
    flex-wrap: wrap;
}
.yz-trace-header h2 {
    font-size: 16px;
    color: #fff;
    font-weight: 600;
    margin: 0;
}
.yz-trace-meta {
    font-size: 12px;
    color: var(--muted);
    flex: 1;
}
.yz-trace-list {
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.yz-trace-item {
    background: var(--panel);
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 10px 14px;
    transition: border-color .15s;
}
.yz-trace-item:hover { border-color: #3a3f4d; }
.yz-trace-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 8px;
    gap: 12px;
}
.yz-trace-name {
    display: flex;
    align-items: center;
    gap: 8px;
}
.yz-badge {
    font-size: 10px;
    padding: 1px 7px;
    border-radius: 3px;
    font-weight: 500;
}
.yz-badge.both { background: #7c2d12; color: #fed7aa; }
.yz-trace-total {
    font-size: 12px;
    color: var(--muted);
    font-variant-numeric: tabular-nums;
}
.yz-trace-row {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 4px;
    flex-wrap: wrap;
    font-size: 12px;
}
.yz-trace-row:last-child { margin-bottom: 0; }
.yz-action {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 20px;
    height: 20px;
    border-radius: 3px;
    font-size: 11px;
    font-weight: 700;
    flex-shrink: 0;
}
.yz-action.buy  { background: #7f1d1d; color: #fecaca; }
.yz-action.sell { background: #14532d; color: #bbf7d0; }
.yz-stock {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 3px 10px;
    background: var(--panel-2);
    border: 1px solid var(--border);
    border-radius: 4px;
    cursor: pointer;
    transition: all .12s;
}
.yz-stock:hover { border-color: #ef4444; background: #2a1414; }
.yz-stock .code { color: var(--muted); font-size: 11px; font-family: Consolas, monospace; }
.yz-stock .name { color: #e0e0e0; font-weight: 500; }
.yz-stock .amt  { color: #f59e0b; font-weight: 600; font-variant-numeric: tabular-nums; }

/* 亮色主题 */
[data-theme="light"] .yz-trace-header h2 { color: #1f2328; }
[data-theme="light"] .yz-trace-item { background: #ffffff; border-color: #e2e4e8; }
[data-theme="light"] .yz-trace-item:hover { border-color: #cbd5e1; }
[data-theme="light"] .yz-badge.both { background: #fed7aa; color: #7c2d12; }
[data-theme="light"] .yz-action.buy  { background: #fee2e2; color: #991b1b; }
[data-theme="light"] .yz-action.sell { background: #dcfce7; color: #166534; }
[data-theme="light"] .yz-stock { background: #f7f8fa; border-color: #e2e4e8; }
[data-theme="light"] .yz-stock:hover { background: #fef2f2; border-color: #ef4444; }
[data-theme="light"] .yz-stock .name { color: #1f2328; }
[data-theme="light"] .yz-stock .amt  { color: #b45309; }


/* ==================================================================
   情绪监控面板
   ================================================================== */
.sentiment-panel {
    display: grid;
    grid-template-columns: 260px 1fr;
    gap: 20px;
    margin-bottom: 24px;
    padding: 20px;
    background: var(--panel);
    border: 1px solid var(--border);
    border-radius: 12px;
}
@media (max-width: 900px) {
    .sentiment-panel { grid-template-columns: 1fr; }
}

/* 左侧评分 */
.sent-gauge {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 8px;
    border-right: 1px solid var(--border);
}
@media (max-width: 900px) {
    .sent-gauge { border-right: none; border-bottom: 1px solid var(--border); padding-bottom: 16px; }
}
.sent-score {
    font-size: 56px;
    font-weight: 800;
    line-height: 1;
    color: #fff;
    font-variant-numeric: tabular-nums;
    transition: color .3s;
}
.sent-level {
    margin-top: 8px;
    font-size: 15px;
    font-weight: 600;
    padding: 3px 14px;
    border-radius: 12px;
    transition: all .3s;
}
.sent-bar {
    width: 100%;
    height: 6px;
    background: var(--panel-2);
    border-radius: 3px;
    margin-top: 14px;
    overflow: hidden;
}
.sent-bar-fill {
    height: 100%;
    width: 0;
    border-radius: 3px;
    transition: width .6s ease, background .3s;
}
.sent-hint {
    margin-top: 10px;
    font-size: 11px;
    color: var(--muted);
}

/* 评分等级配色 */
.sent-score.strong-up   { color: #dc2626; }
.sent-score.up          { color: #ef4444; }
.sent-score.neutral     { color: #f59e0b; }
.sent-score.down        { color: #22c55e; }
.sent-score.strong-down { color: #16a34a; }

.sent-level.strong-up   { background: #7f1d1d; color: #fecaca; }
.sent-level.up          { background: #991b1b; color: #fee2e2; }
.sent-level.neutral     { background: #78350f; color: #fde68a; }
.sent-level.down        { background: #14532d; color: #bbf7d0; }
.sent-level.strong-down { background: #052e16; color: #86efac; }

.sent-bar-fill.strong-up   { background: linear-gradient(90deg, #dc2626, #b91c1c); }
.sent-bar-fill.up          { background: linear-gradient(90deg, #ef4444, #dc2626); }
.sent-bar-fill.neutral     { background: linear-gradient(90deg, #f59e0b, #d97706); }
.sent-bar-fill.down        { background: linear-gradient(90deg, #22c55e, #16a34a); }
.sent-bar-fill.strong-down { background: linear-gradient(90deg, #16a34a, #15803d); }

/* 右侧子指标网格 */
.sent-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 10px;
}
.sent-item {
    padding: 10px 14px;
    background: var(--panel-2);
    border-radius: 8px;
    border-left: 3px solid #444;
    transition: transform .15s;
    cursor: default;
}
.sent-item:hover { transform: translateY(-2px); }
.sent-item.good { border-left-color: #dc2626; }
.sent-item.mid  { border-left-color: #f59e0b; }
.sent-item.bad  { border-left-color: #22c55e; }

.sent-item-head {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    margin-bottom: 4px;
}
.sent-item-label {
    font-size: 12px;
    color: var(--muted);
}
.sent-item-status {
    font-size: 10px;
    font-weight: 700;
    padding: 1px 6px;
    border-radius: 3px;
}
.sent-item.good .sent-item-status { background: #7f1d1d; color: #fecaca; }
.sent-item.mid  .sent-item-status { background: #78350f; color: #fde68a; }
.sent-item.bad  .sent-item-status { background: #14532d; color: #bbf7d0; }

.sent-item-value {
    font-size: 18px;
    font-weight: 700;
    color: #fff;
    font-variant-numeric: tabular-nums;
}
.sent-item-hint {
    font-size: 10px;
    color: var(--muted);
    margin-top: 2px;
}

/* 亮色主题 */
[data-theme="light"] .sentiment-panel { background: #ffffff; border-color: #e2e4e8; }
[data-theme="light"] .sent-gauge { border-right-color: #e2e4e8; }
[data-theme="light"] .sent-score { color: #1f2328; }
[data-theme="light"] .sent-score.strong-up   { color: #dc2626; }
[data-theme="light"] .sent-score.up          { color: #ef4444; }
[data-theme="light"] .sent-score.neutral     { color: #d97706; }
[data-theme="light"] .sent-score.down        { color: #16a34a; }
[data-theme="light"] .sent-score.strong-down { color: #15803d; }
[data-theme="light"] .sent-item { background: #f7f8fa; }
[data-theme="light"] .sent-item-value { color: #1f2328; }
[data-theme="light"] .sent-level.up          { background: #fee2e2; color: #991b1b; }
[data-theme="light"] .sent-level.strong-up   { background: #fecaca; color: #7f1d1d; }
[data-theme="light"] .sent-level.neutral     { background: #fde68a; color: #78350f; }
[data-theme="light"] .sent-level.down        { background: #dcfce7; color: #166534; }
[data-theme="light"] .sent-level.strong-down { background: #bbf7d0; color: #14532d; }
[data-theme="light"] .sent-item.good .sent-item-status { background: #fee2e2; color: #991b1b; }
[data-theme="light"] .sent-item.mid  .sent-item-status { background: #fde68a; color: #78350f; }
[data-theme="light"] .sent-item.bad  .sent-item-status { background: #dcfce7; color: #166534; }


/* ==================================================================
   板块资金流向面板
   ================================================================== */
.sector-flow-panel {
    background: var(--panel);
    border: 1px solid var(--border);
    border-radius: 12px;
    padding: 18px 20px;
    margin-bottom: 24px;
}
.sf-header {
    display: flex;
    align-items: baseline;
    gap: 16px;
    margin-bottom: 16px;
    flex-wrap: wrap;
}
.sf-header h3 {
    font-size: 15px;
    color: #fff;
    font-weight: 600;
    margin: 0;
}
.sf-meta {
    font-size: 12px;
    color: var(--muted);
}

.sf-body {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-bottom: 12px;
}
@media (max-width: 900px) {
    .sf-body { grid-template-columns: 1fr; }
}

.sf-col-title {
    font-size: 13px;
    font-weight: 600;
    margin-bottom: 8px;
    padding-bottom: 6px;
    border-bottom: 1px solid var(--border);
}
.sf-col-title.up   { color: #ef4444; }
.sf-col-title.down { color: #22c55e; }

.sf-list {
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.sf-item {
    display: grid;
    grid-template-columns: 1fr auto auto;
    gap: 12px;
    align-items: center;
    padding: 7px 10px;
    background: var(--panel-2);
    border-radius: 6px;
    font-size: 12px;
    transition: background .15s;
}
.sf-item:hover { background: #262a35; }
.sf-item .sf-name {
    color: #e0e0e0;
    font-weight: 500;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.sf-item .sf-flow {
    font-variant-numeric: tabular-nums;
    font-weight: 600;
    min-width: 72px;
    text-align: right;
}
.sf-item .sf-flow.up   { color: #ef4444; }
.sf-item .sf-flow.down { color: #22c55e; }
.sf-item .sf-flow5d {
    font-size: 11px;
    color: var(--muted);
    font-variant-numeric: tabular-nums;
    min-width: 200px;
    text-align: right;
}
.sf-item .sf-signal {
    display: inline-block;
    font-size: 10px;
    padding: 1px 6px;
    border-radius: 3px;
    margin-left: 6px;
    font-weight: 500;
    white-space: nowrap;
}
.sf-signal.accel-in   { background: #7f1d1d; color: #fecaca; }
.sf-signal.cont-in    { background: #991b1b; color: #fee2e2; }
.sf-signal.accel-out  { background: #14532d; color: #bbf7d0; }
.sf-signal.cont-out   { background: #052e16; color: #86efac; }
.sf-signal.turn-in    { background: #78350f; color: #fde68a; }
.sf-signal.turn-out   { background: #4c1d95; color: #ddd6fe; }

.sf-rotation {
    padding: 10px 14px;
    background: linear-gradient(90deg, rgba(239,68,68,.08) 0%, rgba(34,197,94,.08) 100%);
    border-radius: 8px;
    font-size: 12px;
    color: #d1d5db;
    border: 1px solid var(--border);
    line-height: 1.6;
}
.sf-rotation .sf-arrow {
    color: #f59e0b;
    font-weight: 700;
    margin: 0 8px;
    font-size: 14px;
}
.sf-rotation b.from { color: #22c55e; }
.sf-rotation b.to   { color: #ef4444; }

/* 亮色主题 */
[data-theme="light"] .sector-flow-panel { background: #ffffff; border-color: #e2e4e8; }
[data-theme="light"] .sf-header h3 { color: #1f2328; }
[data-theme="light"] .sf-col-title.up   { color: #dc2626; }
[data-theme="light"] .sf-col-title.down { color: #16a34a; }
[data-theme="light"] .sf-item { background: #f7f8fa; }
[data-theme="light"] .sf-item:hover { background: #eef0f3; }
[data-theme="light"] .sf-item .sf-name { color: #1f2328; }
[data-theme="light"] .sf-item .sf-flow.up   { color: #dc2626; }
[data-theme="light"] .sf-item .sf-flow.down { color: #16a34a; }
[data-theme="light"] .sf-rotation { color: #4b5563; }
[data-theme="light"] .sf-rotation b.from { color: #16a34a; }
[data-theme="light"] .sf-rotation b.to   { color: #dc2626; }


/* 板块资金流 Tab */
.sf-tabs {
    display: inline-flex;
    gap: 4px;
    margin-left: 12px;
}
.sf-tab {
    padding: 3px 14px;
    background: transparent;
    border: 1px solid var(--border);
    color: var(--muted);
    border-radius: 4px;
    font-size: 12px;
    cursor: pointer;
    font-family: inherit;
}
.sf-tab:hover { background: var(--panel-2); color: var(--text); }
.sf-tab.active { background: #2563eb; border-color: #2563eb; color: #fff; }

/* 板块行可点击 */
.sf-item { cursor: pointer; }
.sf-item .sf-trend-btn {
    cursor: pointer;
    opacity: .6;
    padding: 0 4px;
    color: var(--info);
    font-size: 13px;
}
.sf-item .sf-trend-btn:hover { opacity: 1; }

/* 北向资金卡片 */
.north-card {
    background: var(--panel);
    border: 1px solid var(--border);
    border-radius: 12px;
    padding: 16px 20px;
    margin-bottom: 24px;
    display: flex;
    align-items: center;
    gap: 24px;
    flex-wrap: wrap;
}
.north-title { font-size: 14px; color: #e0e0e0; font-weight: 600; }
.north-total {
    font-size: 22px;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}
.north-total.up   { color: #ef4444; }
.north-total.down { color: #22c55e; }
.north-items { display: flex; gap: 16px; margin-left: auto; font-size: 12px; }
.north-item {
    display: flex;
    gap: 6px;
    align-items: center;
    color: var(--muted);
}
.north-item b { color: #e0e0e0; font-weight: 600; font-variant-numeric: tabular-nums; }
.north-item b.up { color: #ef4444; }
.north-item b.down { color: #22c55e; }

/* Modal 单选/双 tab 内容 */
.modal-tabs { display: flex; gap: 6px; margin-left: auto; margin-right: 12px; }
.modal-body-single { padding: 16px 20px; overflow: auto; max-height: 70vh; }

/* 亮色 */
[data-theme="light"] .north-card { background: #fff; border-color: #e2e4e8; }
[data-theme="light"] .north-title { color: #1f2328; }
[data-theme="light"] .north-item b { color: #1f2328; }
