/* ========== CSS Variables ========== */
:root {
  --bg-primary: #0d1117;
  --bg-secondary: #161b22;
  --bg-tertiary: #21262d;
  --bg-card: #1c2333;
  --bg-hover: #2a3444;
  --border-color: #30363d;
  --border-light: #3a4455;
  --text-primary: #e6edf3;
  --text-secondary: #8b949e;
  --text-muted: #6e7681;
  --accent-blue: #58a6ff;
  --accent-green: #3fb950;
  --accent-red: #f85149;
  --accent-yellow: #d2991d;
  --accent-purple: #a371f7;
  --accent-cyan: #39d2c0;
  --accent-orange: #f0883e;
  --up-color: #f85149;
  --down-color: #3fb950;
  --sidebar-width: 240px;
  --radius-sm: 6px;
  --radius-md: 10px;
  --radius-lg: 14px;
  --shadow-card: 0 2px 8px rgba(0,0,0,0.3);
  --shadow-modal: 0 8px 32px rgba(0,0,0,0.5);
  --transition-fast: 0.15s ease;
  --transition-normal: 0.25s ease;
}
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
html{font-size:14px}
body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;background:var(--bg-primary);color:var(--text-primary);display:flex;min-height:100vh;line-height:1.5;-webkit-font-smoothing:antialiased}
a{color:var(--accent-blue);text-decoration:none}
a:hover{text-decoration:underline}
::-webkit-scrollbar{width:6px;height:6px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:3px}
::-webkit-scrollbar-thumb:hover{background:var(--border-light)}

/* Sidebar */
.sidebar{width:var(--sidebar-width);min-width:var(--sidebar-width);background:var(--bg-secondary);border-right:1px solid var(--border-color);display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:100;transition:transform var(--transition-normal)}
.sidebar-brand{display:flex;align-items:center;gap:10px;padding:22px 20px;border-bottom:1px solid var(--border-color)}
.brand-icon{width:28px;height:28px;color:var(--accent-blue)}
.brand-text{font-size:1.25rem;font-weight:700;letter-spacing:-0.5px;color:var(--text-primary)}
.sidebar-nav{flex:1;padding:12px 8px;display:flex;flex-direction:column;gap:2px;overflow-y:auto}
.nav-item{display:flex;align-items:center;gap:12px;padding:10px 14px;border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);font-size:0.92rem;font-weight:500;user-select:none}
.nav-item:hover{background:var(--bg-hover);color:var(--text-primary)}
.nav-item.active{background:rgba(88,166,255,0.12);color:var(--accent-blue)}
.nav-item svg{width:20px;height:20px;flex-shrink:0}
.sidebar-footer{padding:16px 20px;border-top:1px solid var(--border-color)}
.market-status{display:flex;align-items:center;gap:8px;font-size:0.82rem;color:var(--text-muted)}
.status-dot{width:8px;height:8px;border-radius:50%;background:var(--accent-green)}
.status-dot.closed{background:var(--text-muted)}

/* Main */
.main-content{margin-left:var(--sidebar-width);flex:1;padding:28px 32px;overflow-y:auto;min-height:100vh}
.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px;flex-wrap:wrap;gap:12px}
.page-title{font-size:1.6rem;font-weight:700;color:var(--text-primary)}
.page-subtitle{font-size:0.85rem;color:var(--text-muted);margin-top:2px}

/* Cards */
.card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:20px;box-shadow:var(--shadow-card)}
.card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}
.card-title{font-size:1rem;font-weight:600;color:var(--text-primary)}
.card-badge{font-size:0.75rem;padding:3px 10px;border-radius:12px;background:rgba(88,166,255,0.12);color:var(--accent-blue);cursor:pointer}

/* Grids */
.grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}

/* Stat Cards */
.stat-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:18px 20px;display:flex;flex-direction:column;gap:8px}
.stat-label{font-size:0.8rem;color:var(--text-muted);font-weight:500}
.stat-value{font-size:1.5rem;font-weight:700}
.stat-change{font-size:0.82rem;display:flex;align-items:center;gap:4px}
.stat-change.up{color:var(--up-color)}
.stat-change.down{color:var(--down-color)}

/* Data Table */
.data-table-wrapper{overflow-x:auto}
.data-table{width:100%;border-collapse:collapse;font-size:0.88rem}
.data-table thead th{text-align:left;padding:10px 12px;color:var(--text-muted);font-weight:600;font-size:0.78rem;text-transform:uppercase;letter-spacing:0.5px;border-bottom:1px solid var(--border-color);white-space:nowrap;cursor:pointer;user-select:none}
.data-table thead th:hover{color:var(--text-primary)}
.data-table thead th .sort-arrow{margin-left:4px;font-size:0.7rem;opacity:0.5}
.data-table thead th.sorted .sort-arrow{opacity:1;color:var(--accent-blue)}
.data-table tbody td{padding:10px 12px;border-bottom:1px solid var(--border-color);white-space:nowrap;vertical-align:middle}
.data-table tbody tr{transition:background var(--transition-fast)}
.data-table tbody tr:hover{background:var(--bg-hover)}

/* Scrollable table wrappers with sticky header */
.ranking-scroll{max-height:400px;overflow-y:auto}
.ranking-scroll .data-table thead th{position:sticky;top:0;z-index:2;background:var(--bg-card)}
.stocklist-scroll{max-height:calc(100vh - 280px);overflow-y:auto}
.stocklist-scroll .data-table thead th{position:sticky;top:0;z-index:2;background:var(--bg-card)}
.sector-detail-scroll{max-height:500px;overflow-y:auto}
.sector-detail-scroll .data-table thead th{position:sticky;top:0;z-index:2;background:var(--bg-card)}
.col-name{font-weight:600;color:var(--text-primary)}
.col-code{color:var(--text-muted);font-size:0.8rem}
.price-up{color:var(--up-color)}
.price-down{color:var(--down-color)}
.price-flat{color:var(--text-secondary)}
.change-pct{display:inline-block;padding:2px 8px;border-radius:4px;font-weight:600;font-size:0.82rem}
.change-pct.up{background:rgba(248,81,73,0.12);color:var(--up-color)}
.change-pct.down{background:rgba(63,185,80,0.12);color:var(--down-color)}
.change-pct.flat{background:rgba(139,148,158,0.1);color:var(--text-secondary)}

/* Buttons */
.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:var(--radius-sm);font-size:0.85rem;font-weight:600;cursor:pointer;transition:all var(--transition-fast);border:1px solid transparent;user-select:none}
.btn-primary{background:var(--accent-blue);color:#fff;border-color:var(--accent-blue)}
.btn-primary:hover{background:#4090e0}
.btn-outline{background:transparent;border-color:var(--border-color);color:var(--text-primary)}
.btn-outline:hover{background:var(--bg-hover);border-color:var(--border-light)}
.btn-sm{padding:5px 12px;font-size:0.78rem}
.btn-danger{color:var(--accent-red);border-color:rgba(248,81,73,0.3)}
.btn-danger:hover{background:rgba(248,81,73,0.12)}
.btn-icon{padding:6px;border-radius:var(--radius-sm)}
.btn-star{color:var(--text-muted);background:transparent;border:none;cursor:pointer;padding:4px;font-size:1rem;transition:all var(--transition-fast)}
.btn-star:hover{color:var(--accent-yellow)}
.btn-star.active{color:var(--accent-yellow)}

/* Tabs */
.tabs{display:flex;gap:4px;margin-bottom:20px;flex-wrap:wrap}
.tab{padding:7px 16px;border-radius:var(--radius-sm);font-size:0.85rem;cursor:pointer;color:var(--text-secondary);transition:all var(--transition-fast);border:none;background:transparent;font-weight:500}
.tab:hover{color:var(--text-primary);background:var(--bg-hover)}
.tab.active{background:var(--accent-blue);color:#fff}

/* Filter Bar */
.filter-bar{display:flex;gap:12px;margin-bottom:20px;flex-wrap:wrap;align-items:center}
.filter-bar select,.filter-bar input{background:var(--bg-tertiary);border:1px solid var(--border-color);color:var(--text-primary);padding:7px 12px;border-radius:var(--radius-sm);font-size:0.85rem;outline:none}
.filter-bar select:focus,.filter-bar input:focus{border-color:var(--accent-blue)}
.filter-bar .refresh-btn{margin-left:auto}
.filter-item{margin-bottom:8px}
.filter-item label{font-size:0.8rem;color:var(--text-muted)}
.filter-item input{background:var(--bg-tertiary);border:1px solid var(--border-color);color:var(--text-primary);padding:5px 8px;border-radius:4px;font-size:0.82rem;outline:none;width:100px}
.filter-item input:focus{border-color:var(--accent-blue)}

/* Search Box */
.search-box{position:relative}
.search-box input{width:100%;background:var(--bg-tertiary);border:1px solid var(--border-color);color:var(--text-primary);padding:10px 14px;border-radius:var(--radius-sm);font-size:0.9rem;outline:none}
.search-box input:focus{border-color:var(--accent-blue)}

/* Sector Grid */
.sector-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
.sector-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:16px;cursor:pointer;transition:all var(--transition-fast)}
.sector-card:hover{border-color:var(--accent-blue);background:var(--bg-hover)}
.sector-card .sector-name{font-weight:600;font-size:0.95rem;margin-bottom:6px}
.sector-card .sector-pct{font-size:1.2rem;font-weight:700}
.sector-card .sector-lead{font-size:0.78rem;color:var(--text-muted);margin-top:4px}
.sector-card .sector-count{font-size:0.75rem;color:var(--text-muted)}

/* Heatmap */
.heatmap-container{overflow-x:auto}
.heatmap-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:6px}
.heatmap-cell{padding:10px 8px;border-radius:var(--radius-sm);text-align:center;cursor:pointer;transition:transform var(--transition-fast)}
.heatmap-cell:hover{transform:scale(1.05)}
.heatmap-cell .hm-code{font-size:0.78rem;font-weight:600}
.heatmap-cell .hm-pct{font-size:0.72rem;margin-top:2px;opacity:0.85}

/* News */
.news-list{display:flex;flex-direction:column;gap:12px}
.news-item{display:flex;gap:14px;padding:14px 16px;background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}
.news-item:hover{border-color:var(--accent-blue)}
.news-thumb{width:120px;height:80px;border-radius:var(--radius-sm);background:var(--bg-tertiary);flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:0.75rem;color:var(--text-muted)}
.news-content{flex:1;display:flex;flex-direction:column;gap:6px}
.news-title{font-weight:600;font-size:0.95rem;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.news-meta{font-size:0.75rem;color:var(--text-muted);display:flex;gap:12px}
.news-tag{display:inline-block;padding:2px 8px;border-radius:4px;font-size:0.7rem;font-weight:600}
.news-tag.hot{background:rgba(248,81,73,0.15);color:var(--accent-red)}
.news-tag.macro{background:rgba(163,113,247,0.15);color:var(--accent-purple)}
.news-tag.sector{background:rgba(57,210,192,0.15);color:var(--accent-cyan)}
.news-tag.company{background:rgba(88,166,255,0.15);color:var(--accent-blue)}

/* Watchlist */
.watchlist-header{display:flex;gap:12px;margin-bottom:20px;flex-wrap:wrap;align-items:center}
.watchlist-groups{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}
.watchlist-group-tag{padding:5px 14px;border-radius:20px;font-size:0.82rem;cursor:pointer;transition:all var(--transition-fast);background:var(--bg-tertiary);color:var(--text-secondary);border:1px solid var(--border-color)}
.watchlist-group-tag:hover{border-color:var(--border-light)}
.watchlist-group-tag.active{background:var(--accent-blue);color:#fff;border-color:var(--accent-blue)}
.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted)}
.empty-state svg{width:64px;height:64px;margin-bottom:16px;opacity:0.3}
.empty-state p{font-size:0.95rem}

/* Toast */
.toast-container{position:fixed;top:20px;right:20px;z-index:2000;display:flex;flex-direction:column;gap:8px}
.toast{padding:12px 18px;border-radius:var(--radius-sm);font-size:0.85rem;font-weight:500;animation:slideIn 0.3s ease;box-shadow:var(--shadow-card)}
.toast.success{background:#1a3d2b;color:var(--accent-green);border:1px solid rgba(63,185,80,0.3)}
.toast.error{background:#3d1a1a;color:var(--accent-red);border:1px solid rgba(248,81,73,0.3)}
.toast.info{background:#1a2d3d;color:var(--accent-blue);border:1px solid rgba(88,166,255,0.3)}
@keyframes slideIn{from{transform:translateX(100%);opacity:0}to{transform:translateX(0);opacity:1}}

/* Loading */
.loading-pulse{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--accent-blue);animation:pulse 1.2s infinite ease-in-out}
@keyframes pulse{0%,100%{opacity:0.3}50%{opacity:1}}
.skeleton{background:linear-gradient(90deg,var(--bg-tertiary)25%,var(--bg-hover)50%,var(--bg-tertiary)75%);background-size:200% 100%;animation:shimmer 1.5s ease-in-out infinite;border-radius:var(--radius-sm)}
@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}

/* Responsive */
@media(max-width:1200px){.grid-4{grid-template-columns:repeat(2,1fr)}}
@media(max-width:900px){.sidebar{transform:translateX(-100%)}.sidebar.open{transform:translateX(0)}.main-content{margin-left:0}.grid-2,.grid-3{grid-template-columns:1fr}}

/* ========== 走势图 ========== */
.chart-container { width:100%; height:280px; position:relative; background:var(--bg-card); border-radius:12px; overflow:hidden; }
.chart-legend { display:flex; gap:16px; margin-bottom:12px; flex-wrap:wrap; }
.chart-legend-item { display:flex; align-items:center; gap:6px; font-size:0.82rem; cursor:pointer; padding:4px 10px; border-radius:20px; border:1px solid var(--border-color); transition:all 0.2s; }
.chart-legend-item.active { background:var(--accent-blue); color:#fff; border-color:var(--accent-blue); }
.chart-legend-dot { width:10px; height:10px; border-radius:50%; }
.period-switch { display:flex; gap:4px; margin-bottom:16px; }
.period-btn { padding:4px 14px; border-radius:20px; font-size:0.78rem; background:transparent; border:1px solid var(--border-color); color:var(--text-muted); cursor:pointer; transition:all 0.2s; }
.period-btn.active { background:var(--accent-blue); color:#fff; border-color:var(--accent-blue); }
.period-btn:hover { border-color:var(--accent-blue); }

/* 板块异动 */
.alert-list { display:flex; flex-direction:column; gap:8px; }
.alert-item { display:flex; align-items:center; justify-content:space-between; padding:10px 14px; border-radius:8px; background:var(--bg-hover); cursor:pointer; transition:all 0.2s; }
.alert-item:hover { background:var(--border-color); }
.alert-item .alert-name { font-weight:500; }
.alert-item .alert-reason { font-size:0.75rem; color:var(--text-muted); }

/* 热点列表 */
.hot-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(280px,1fr)); gap:12px; }
.hot-card { padding:14px; border-radius:10px; background:var(--bg-hover); border:1px solid var(--border-color); cursor:pointer; transition:all 0.2s; }
.hot-card:hover { border-color:var(--accent-blue); transform:translateY(-1px); }
.hot-card .hot-title { font-weight:500; font-size:0.9rem; margin-bottom:4px; line-height:1.4; }
.hot-card .hot-meta { font-size:0.72rem; color:var(--text-muted); }

/* 概念板块排行网格 */
.concept-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; }
.concept-item { padding:12px 14px; border-radius:8px; background:var(--bg-hover); border:1px solid transparent; cursor:pointer; transition:all 0.15s; }
.concept-item:hover { border-color:var(--accent-blue); background:var(--border-color); }
.concept-item .ci-header { display:flex; justify-content:space-between; align-items:center; margin-bottom:6px; }
.concept-item .ci-name { font-weight:600; font-size:0.88rem; }
.concept-item .ci-pct { font-weight:700; font-size:1rem; white-space:nowrap; }
.concept-item .ci-stocks { font-size:0.74rem; color:var(--text-muted); line-height:1.5; display:flex; flex-wrap:wrap; gap:2px 8px; }
@media(max-width:1400px) { .concept-grid { grid-template-columns:repeat(3,1fr); } }
@media(max-width:900px) { .concept-grid { grid-template-columns:repeat(2,1fr); } }
@media(max-width:600px) { .concept-grid { grid-template-columns:1fr; } }

/* 关注按钮 */
.btn-watch { padding:3px 10px; border-radius:12px; font-size:0.72rem; cursor:pointer; border:1px solid var(--accent-blue); background:transparent; color:var(--accent-blue); transition:all 0.2s; white-space:nowrap; }
.btn-watch:hover { background:var(--accent-blue); color:#fff; }
.btn-watch.watched { background:var(--accent-blue); color:#fff; }

/* 关注卡片 */
.watch-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:16px; }
.watch-card { padding:16px; border-radius:12px; background:var(--bg-card); border:1px solid var(--border-color); transition:all 0.2s; }
.watch-card:hover { border-color:var(--accent-blue); }
.watch-card .wc-header { display:flex; justify-content:space-between; align-items:center; margin-bottom:12px; }
.watch-card .wc-name { font-size:1rem; font-weight:600; }
.watch-card .wc-code { font-size:0.75rem; color:var(--text-muted); }
.watch-card .wc-price { font-size:1.2rem; font-weight:700; margin-bottom:4px; }
.watch-card .wc-change { font-size:0.85rem; }
.watch-card .wc-mini-chart { height:80px; margin-top:10px; }

/* 关注卡片周期切换按钮 */
.wc-period-switch { display:flex; gap:3px; margin-top:10px; }
.wc-period-btn { padding:2px 10px; border-radius:12px; font-size:0.68rem; background:transparent; border:1px solid var(--border-color); color:var(--text-muted); cursor:pointer; transition:all 0.2s; }
.wc-period-btn.active { background:var(--accent-blue); color:#fff; border-color:var(--accent-blue); }
.wc-period-btn:hover { border-color:var(--accent-blue); }

/* 分页 */
.pagination { display:flex; justify-content:center; align-items:center; gap:6px; margin:16px 0; }
.pagination button { padding:6px 12px; border-radius:6px; border:1px solid var(--border-color); background:transparent; color:var(--text-primary); cursor:pointer; font-size:0.82rem; transition:all 0.2s; }
.pagination button:hover:not(:disabled) { border-color:var(--accent-blue); color:var(--accent-blue); }
.pagination button.active { background:var(--accent-blue); color:#fff; border-color:var(--accent-blue); }
.pagination button:disabled { opacity:0.4; cursor:not-allowed; }
.pagination .page-info { font-size:0.82rem; color:var(--text-muted); padding:0 8px; }

/* 筛选栏 */
.filter-bar { display:flex; gap:10px; flex-wrap:wrap; align-items:center; margin-bottom:16px; padding:12px 16px; background:var(--bg-card); border-radius:10px; border:1px solid var(--border-color); }
.filter-bar select, .filter-bar input { padding:6px 12px; border-radius:8px; border:1px solid var(--border-color); background:var(--bg-primary); color:var(--text-primary); font-size:0.85rem; }
.filter-bar select:focus, .filter-bar input:focus { outline:none; border-color:var(--accent-blue); }
.filter-bar label { font-size:0.82rem; color:var(--text-muted); margin-right:4px; }

/* 概念弹窗 */
.concept-modal-overlay { position:fixed; top:0; left:0; right:0; bottom:0; background:rgba(0,0,0,0.55); z-index:999; display:flex; align-items:center; justify-content:center; animation:fadeIn 0.15s ease; }
.concept-modal { background:var(--bg-card); border-radius:14px; width:680px; max-width:92vw; max-height:82vh; overflow:hidden; display:flex; flex-direction:column; border:1px solid var(--border-color); box-shadow:0 8px 40px rgba(0,0,0,0.4); }
.concept-modal-header { display:flex; justify-content:space-between; align-items:center; padding:16px 20px; border-bottom:1px solid var(--border-color); }
.concept-modal-header h3 { font-size:1.15rem; font-weight:700; }
.concept-modal-close { background:none; border:none; font-size:1.4rem; cursor:pointer; color:var(--text-muted); padding:0 4px; line-height:1; }
.concept-modal-close:hover { color:var(--text-primary); }
.concept-modal-body { padding:8px 0; overflow-y:auto; flex:1; }
.concept-stock-row { display:grid; grid-template-columns:1fr 100px 100px 80px 80px; gap:8px; align-items:center; padding:10px 20px; border-bottom:1px solid rgba(128,128,128,0.1); font-size:0.85rem; transition:background 0.15s; }
.concept-stock-row:hover { background:rgba(64,158,255,0.05); }
.concept-stock-row.header { font-size:0.72rem; color:var(--text-muted); border-bottom:1px solid var(--border-color); position:sticky; top:0; background:var(--bg-card); z-index:1; }
.concept-stock-row .cs-name { font-weight:500; }
.concept-stock-row .cs-code { color:var(--text-muted); font-size:0.78rem; }
.concept-stock-row .cs-price { text-align:right; font-variant-numeric:tabular-nums; }
.concept-stock-row .cs-change { text-align:right; font-weight:600; }
.concept-stock-row .cs-volume { text-align:right; font-size:0.75rem; color:var(--text-muted); }
.concept-stock-row .up { color:var(--red,#e55c5c); }
.concept-stock-row .down { color:var(--green,#4caf50); }
.leader-stock.clickable { cursor:pointer; display:inline-block; transition:color 0.15s; }
.leader-stock.clickable:hover { color:var(--accent-color); }
/* 概念板块排行：固定列宽，表头与数据列对齐 */
#conceptRankingTable { table-layout:fixed; }
#conceptRankingTable thead th:nth-child(1) { width:20%; }
#conceptRankingTable thead th:nth-child(2) { width:12%; }
#conceptRankingTable thead th:nth-child(3) { width:68%; }
.concept-rank-row { cursor:pointer; }
.concept-rank-row:hover { background:var(--bg-hover); }
.concept-modal-loading { text-align:center; padding:40px; color:var(--text-muted); }
@keyframes fadeIn { from{opacity:0} to{opacity:1} }

/* ========== 个股详情弹窗 ========== */
.stock-link { cursor:pointer; transition:color 0.15s; }
.stock-link:hover { color:var(--accent-color); }

.stock-modal-overlay { position:fixed; top:0; left:0; right:0; bottom:0; background:rgba(0,0,0,0.55); z-index:1000; display:flex; align-items:center; justify-content:center; animation:fadeIn 0.15s ease; }
.stock-modal { background:var(--bg-card); border-radius:14px; width:720px; max-width:94vw; max-height:88vh; display:flex; flex-direction:column; border:1px solid var(--border-color); box-shadow:0 8px 40px rgba(0,0,0,0.4); }
.stock-modal-header { padding:20px 24px 16px; border-bottom:1px solid var(--border-color); flex-shrink:0; position:sticky; top:0; z-index:10; background:var(--bg-card); border-radius:14px 14px 0 0; }
.sm-header-row { display:flex; justify-content:space-between; align-items:center; }
.sm-header-row h3 { font-size:1.2rem; font-weight:700; }
.sm-price-row { display:flex; align-items:baseline; gap:14px; margin-top:8px; }
.sm-price { font-size:2rem; font-weight:700; }
.sm-change { font-size:1.2rem; font-weight:600; }
.stock-modal-close { background:none; border:none; font-size:1.5rem; cursor:pointer; color:var(--text-muted); padding:0 4px; line-height:1; }
.stock-modal-close:hover { color:var(--text-primary); }

.stock-modal-body { padding:0 24px 24px; overflow-y:auto; flex:1; }
.stock-info-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; padding:16px 0; border-bottom:1px solid var(--border-color); }
.si-item { display:flex; flex-direction:column; gap:3px; }
.si-label { font-size:0.78rem; color:var(--text-muted); }
.si-item span:last-child { font-size:0.95rem; font-weight:500; }

.stock-chart-periods { display:flex; gap:6px; margin:16px 0 8px; }
.stock-chart-periods .period-btn { padding:5px 14px; border-radius:6px; border:1px solid var(--border-color); background:var(--bg-tertiary); color:var(--text-muted); font-size:0.85rem; cursor:pointer; transition:all 0.15s; }
.stock-chart-periods .period-btn:hover { border-color:var(--accent-color); color:var(--text-primary); }
.stock-chart-periods .period-btn.active { background:var(--accent-color); color:#fff; border-color:var(--accent-color); }
.stock-chart-wrap { height:320px; position:relative; }
.stock-chart-wrap canvas { display:block; width:100% !important; height:100% !important; }

/* 所属板块/概念 */
.sectors-title { font-size:0.82rem; color:var(--text-muted); margin:20px 0 10px; font-weight:600; }
.sectors-tags { display:flex; flex-wrap:wrap; gap:8px; }
.sector-tag { padding:4px 12px; border-radius:14px; font-size:0.82rem; font-weight:500; }
.industry-tag { background:rgba(88,166,255,0.12); color:#58a6ff; border:1px solid rgba(88,166,255,0.25); }
.concept-tag { background:rgba(63,185,80,0.1); color:#3fb950; border:1px solid rgba(63,185,80,0.2); }

/* F10 信息 */
.stock-f10-section { margin-top:20px; border-top:1px solid var(--border-color); padding-top:16px; }
.f10-row { display:flex; gap:12px; padding:8px 0; border-bottom:1px solid rgba(48,54,61,0.3); }
.f10-row:last-child { border-bottom:none; }
.f10-label { flex-shrink:0; width:80px; font-size:0.82rem; color:var(--text-muted); font-weight:500; }
.f10-value { flex:1; font-size:0.88rem; color:var(--text-primary); line-height:1.5; }

@media (max-width:600px) {
  .stock-info-grid { grid-template-columns:repeat(2,1fr); }
  .stock-chart-wrap { height:220px; }
}

/* ========== 板块/概念标签增强 ========== */
.sector-tag.clickable { cursor: pointer; transition: all 0.15s; }
.sector-tag.clickable:hover { transform: scale(1.05); filter: brightness(1.2); }
.tag-change { font-size: 0.75rem; margin-left: 2px; }
.f10-section-title { font-size: 0.85rem; font-weight: 600; color: var(--text-primary); margin-bottom: 8px; }

/* 涨停板滚动区域 */
.limit-board-scroll { overflow-y: auto; max-height: 400px; }
.limit-board-scroll .data-table { width: 100%; }
.limit-board-scroll .data-table thead { position: sticky; top: 0; z-index: 5; }
.limit-board-scroll .data-table thead th { background: var(--bg-card); }

/* 分页控件 */
#slPageControl button { margin: 0 2px; }
#slPageControl button:disabled { opacity: 0.4; cursor: not-allowed; }

@media (max-width:600px) {
