/* ════════════════════════════════════════════════════════════
 * djdata 全局样式
 * 从 templates/base.html 提取（行 11-175）
 * ──────────────────────────────────────────────────────────── */

/* ── CSS 变量 ── */
:root {
  color-scheme:light;
  --bg:#f5f5f7; --card-bg:rgba(255,255,255,.94); --text:#1d1d1f; --text2:#4b4b50; --text3:#7c7c82;
  --border:rgba(60,60,67,.13); --table-bg:#fff; --th-bg:rgba(248,248,250,.98); --th-text:#535358;
  --hover-bg:rgba(0,122,255,.075); --row-up:rgba(255,59,48,.045); --row-down:rgba(52,199,89,.045);
  --prem-up-bg:rgba(255,59,48,.075); --prem-down-bg:rgba(52,199,89,.075); --footer-text:#9a9aa0;
  --slider-track:rgba(60,60,67,.16); --btn-bg:rgba(255,255,255,.86); --btn-border:rgba(60,60,67,.16); --btn-text:#5d5d63;
  --sidebar-bg:rgba(249,249,251,.82); --sidebar-hover:rgba(0,122,255,.08); --sidebar-active:#007aff; --sidebar-text:#45454a; --accent:#007aff;
  --surface-muted:#f2f2f7; --material-bg:rgba(255,255,255,.76); --up-color:#ff3b30; --down-color:#00a76f;
  --radius-card:16px; --radius-control:10px; --shadow-card:0 1px 2px rgba(0,0,0,.025),0 12px 32px rgba(15,23,42,.055);
  --shadow-control:0 1px 2px rgba(0,0,0,.05); --material-filter:saturate(180%) blur(22px);
}
[data-theme="dark"] {
  color-scheme:dark;
  --bg:#0e0e11; --card-bg:rgba(29,29,32,.96); --text:#f5f5f7; --text2:#d0d0d4; --text3:#929298;
  --border:rgba(235,235,245,.12); --table-bg:#141416; --th-bg:rgba(36,36,39,.98); --th-text:#d7d7dc;
  --hover-bg:rgba(10,132,255,.14); --row-up:rgba(255,69,58,.075); --row-down:rgba(48,209,88,.07);
  --prem-up-bg:rgba(255,69,58,.09); --prem-down-bg:rgba(48,209,88,.08); --footer-text:#66666c;
  --slider-track:rgba(235,235,245,.16); --btn-bg:rgba(44,44,47,.88); --btn-border:rgba(235,235,245,.14); --btn-text:#b8b8be;
  --sidebar-bg:rgba(24,24,27,.84); --sidebar-hover:rgba(10,132,255,.16); --sidebar-active:#0a84ff; --sidebar-text:#d0d0d4; --accent:#0a84ff;
  --surface-muted:#242427; --material-bg:rgba(32,32,35,.78); --up-color:#ff453a; --down-color:#30d158;
  --shadow-card:0 1px 1px rgba(255,255,255,.02),0 16px 38px rgba(0,0,0,.28); --shadow-control:0 1px 2px rgba(0,0,0,.3);
}

* { margin:0; padding:0; box-sizing:border-box; }

/* ── 整体布局：左右两栏 ── */
html,body { height:100vh; overflow:hidden; }
body { font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif; background:var(--bg); color:var(--text); display:flex; flex-direction:row; }

/* ── 侧边栏 ── */
.sidebar { flex-shrink:0; width:220px; background:var(--sidebar-bg); border-right:1px solid var(--border); display:flex; flex-direction:column; transition:width .25s ease; overflow:hidden; z-index:20; }
.sidebar.collapsed { width:52px; }
.sidebar-header { padding:12px 10px; border-bottom:1px solid var(--border); min-height:48px; position:relative; }
.sidebar-logo { position:absolute; left:10px; top:0; height:48px; line-height:48px; font-size:14px; font-weight:700; white-space:nowrap; color:var(--text); opacity:1; transition:opacity .25s ease; }
.sidebar.collapsed .sidebar-logo { opacity:0; pointer-events:none; }
.sidebar-toggle { position:absolute; right:10px; top:50%; transform:translateY(-50%); width:36px; height:36px; background:none; border:none; cursor:pointer; padding:0; }
.sidebar-toggle:hover .line { background:var(--text); }
.sidebar-toggle .line { position:absolute; left:8px; top:17px; width:18px; height:2px; background:var(--text3); border-radius:2px; transition:transform .35s ease, left .35s ease; transform-origin:0% 50%; }
/* 展开态：顶点朝左，三线从左侧同一点向右放射 */
.sidebar:not(.collapsed) .line:nth-child(1) { transform:rotate(-32deg); }
.sidebar:not(.collapsed) .line:nth-child(3) { transform:rotate(32deg); }
/* 收缩态：顶点朝右，三线从右侧同一点向左放射 */
.sidebar.collapsed .sidebar-toggle .line { left:10px; transform-origin:100% 50%; }
.sidebar.collapsed .sidebar-toggle .line:nth-child(1) { transform:rotate(-32deg); }
.sidebar.collapsed .sidebar-toggle .line:nth-child(3) { transform:rotate(32deg); }
.nav-list { list-style:none; padding:8px 0; flex:1; }
.nav-item { display:flex; align-items:center; gap:10px; padding:10px 14px; cursor:pointer; color:var(--sidebar-text); font-size:13px; transition:all .15s; white-space:nowrap; border-left:3px solid transparent; user-select:none; }
.nav-item:hover { background:var(--sidebar-hover); }
.nav-item.active { color:var(--sidebar-active); background:var(--sidebar-hover); border-left-color:var(--sidebar-active); font-weight:600; }
.nav-item .nav-icon { font-size:16px; width:22px; text-align:center; flex-shrink:0; }
.nav-item .nav-label { opacity:1; transition:opacity .2s; }
.sidebar.collapsed .nav-item .nav-label { opacity:0; width:0; overflow:hidden; }
.sidebar.collapsed .nav-item { justify-content:center; padding:10px 0; }
.sidebar.collapsed .nav-item .nav-icon { font-size:18px; }
.sidebar-footer { flex:0 0 auto; padding:10px; border-top:1px solid var(--border); }
.sidebar-footer .theme-toggle { width:100%; min-height:36px; display:flex; align-items:center; justify-content:center; gap:8px; padding:6px 10px; white-space:nowrap; overflow:hidden; }
.sidebar-footer .theme-icon { flex:0 0 auto; font-size:15px; line-height:1; }
.sidebar-footer .theme-label { opacity:1; transition:opacity .2s; }
.sidebar.collapsed .sidebar-footer { padding:8px; }
.sidebar.collapsed .sidebar-footer .theme-toggle { width:36px; padding:6px; }
.sidebar.collapsed .sidebar-footer .theme-label { display:none; }

/* ── 展开状态：main 内部滚动（不改变 html/body） ── */
.main.expanded { overflow-y:auto; overflow-x:hidden; }
.main.expanded .panel.active { flex:none; height:auto; overflow:visible; min-width:0; }
.main.expanded .top-scroll { max-height:none; overflow:visible; padding-bottom:6px; min-width:0; }
.main.expanded .slider-bar { position:sticky; top:0; z-index:3; margin-bottom:4px; background:var(--bg); min-width:0; }
.main.expanded .slider-bar::before { content:""; position:absolute; top:0; left:50%; transform:translateX(-50%); width:100vw; height:100%; background:var(--bg); z-index:-1; }
.main.expanded .table-wrap { flex:none; height:auto; overflow:visible; min-width:0; }
.main.expanded .head-table,.main.expanded .body-table { min-width:0; }
.main.expanded .sticky-head { top:52px; }

/* ── 主内容区 ── */
.main { flex:1; display:flex; flex-direction:column; overflow:hidden; min-width:0; position:relative; }

/* ── 面板 ── */
.panel { display:none; flex-direction:column; height:100%; overflow:hidden; }
.panel.active { display:flex; }
.panel-placeholder { display:flex; align-items:center; justify-content:center; height:100%; color:var(--text3); font-size:16px; flex-direction:column; gap:8px; }
.panel-placeholder .ph-icon { font-size:48px; }

/* ── 顶部区域（LOF 面板内） ── */
.top-scroll { flex:0 0 auto; max-height:38vh; overflow-y:auto; padding:8px 10px 4px; }
.header { text-align:center; padding:4px 0; display:flex; align-items:center; justify-content:center; gap:12px; flex-wrap:wrap; }
.header h1 { font-size:20px; color:var(--text); margin:0; }
.header .time { font-size:12px; color:var(--text3); }
.theme-toggle { background:var(--card-bg); border:1px solid var(--border); border-radius:20px; padding:4px 12px; font-size:12px; cursor:pointer; color:var(--text2); }
.theme-toggle:hover { background:var(--hover-bg); }

.summary-cards { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; width:calc(100% - 40px); max-width:none; margin:8px 20px; justify-content:center; }
.summary-card { min-width:0; min-height:92px; background:var(--card-bg); border-radius:8px; padding:12px 18px; text-align:center; box-shadow:0 1px 4px rgba(0,0,0,.06); display:flex; flex-direction:column; justify-content:center; align-items:center; }
.summary-card .val { font-size:22px; font-weight:700; }
.summary-card .lbl { font-size:11px; color:var(--text3); margin-top:2px; }
.summary-card .val.up-color { color:#e74c3c; }
.summary-card .val.down-color { color:#27ae60; }
[data-theme="dark"] .summary-card .val.up-color { color:#ff6b6b; }
[data-theme="dark"] .summary-card .val.down-color { color:#51cf66; }

.filter-bar { width:calc(100% - 40px); max-width:none; margin:6px 20px 8px; padding:4px 0; display:flex; gap:8px; align-items:center; flex-wrap:nowrap; }
.filter-bar input { flex:1; min-width:140px; padding:6px 10px; border:1px solid var(--border); border-radius:6px; font-size:12px; outline:none; background:var(--card-bg); color:var(--text); }
.filter-bar input:focus { border-color:#4a90d9; }

.tag { display:inline-block; padding:1px 6px; border-radius:4px; font-size:11px; font-weight:500; }
.tag-open { background:#e8f5e9; color:#2e7d32; }
.tag-limit { background:#fff3e0; color:#e65100; }
.tag-paused { background:#fce4ec; color:#c62828; }
.filter-btn { padding:5px 14px; border:2px solid var(--btn-border); border-radius:6px; font-size:12px; cursor:pointer; background:var(--btn-bg); color:var(--btn-text); transition:all .15s; white-space:nowrap; }
.filter-btn:hover { border-color:#4a90d9; color:#4a90d9; background:#f0f6ff; }
.filter-btn.active { background:#2563eb; color:#fff; border-color:#2563eb; font-weight:600; box-shadow:0 2px 6px rgba(37,99,235,.30); }

/* ── 进度条 + 按钮 ── */
.slider-bar { flex-shrink:0; width:calc(100% - 40px); max-width:none; margin:0 20px; padding:5px 0; background:var(--bg); display:flex; align-items:center; gap:14px; }
.slider-bar .slider-left { flex:1; min-width:0; }
.slider-labels { display:flex; justify-content:space-between; font-size:11px; color:var(--text3); margin-bottom:2px; }
.slider-range { position:relative; height:28px; }
.slider-range input[type=range] { width:100%; height:6px; -webkit-appearance:none; appearance:none; background:var(--slider-track); border-radius:3px; outline:none; cursor:pointer; }
.slider-range input[type=range]::-webkit-slider-thumb { -webkit-appearance:none; appearance:none; width:18px; height:18px; border-radius:50%; background:#4a90d9; border:2px solid #fff; box-shadow:0 1px 3px rgba(0,0,0,.2); }
.expand-btn { padding:5px 14px; background:#2563eb; color:#fff; border:none; border-radius:6px; font-size:12px; cursor:pointer; font-weight:600; white-space:nowrap; }
.expand-btn:hover { background:#1d4ed8; }

/* ── 表格区域 ── */
.table-wrap { flex:1 1 0; overflow:auto; min-height:0; border-radius:8px 8px 0 0; box-shadow:0 1px 4px rgba(0,0,0,.08); background:var(--bg); padding:0 20px; }
.sticky-head { position:sticky; top:0; z-index:2; background:var(--th-bg); border-radius:6px 6px 0 0; }
.head-table th { background:var(--th-bg); color:var(--th-text); font-weight:500; white-space:nowrap; cursor:pointer; user-select:none; border-bottom:2px solid var(--border); }
.head-table,.body-table { width:100%; table-layout:fixed; border-collapse:separate; border-spacing:0; font-size:14px; min-width:1050px; }
.head-table th,.body-table td { padding:7px 8px; text-align:center; }
.head-table th:hover { filter:brightness(1.1); }
.head-table th.sorted::after { content:" ▼"; font-size:10px; }
.head-table th.sorted.asc::after { content:" ▲"; }
.body-table td { border-bottom:1px solid var(--border); vertical-align:middle; }

svg.spark { display:block; margin:0 auto; }
[data-theme="dark"] svg.spark text { stroke:var(--bg)!important; paint-order:stroke; }
[data-theme="dark"] svg.spark text[fill="#d63031"] { fill:#ff6b6b!important; }
[data-theme="dark"] svg.spark text[fill="#00b894"] { fill:#51cf66!important; }
.body-table tbody tr:hover { background:#e8eeff!important; }
[data-theme="dark"] .body-table tbody tr:hover { background:#1f2d50!important; }
tr.alert-row td:first-child { border-left:3px solid #e74c3c; }
td.code { font-family:monospace; color:var(--text2); }
td.name { text-align:center; max-width:160px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.premium-up { background:var(--prem-up-bg); color:#e74c3c; font-weight:600; }
.premium-down { background:var(--prem-down-bg); color:#27ae60; font-weight:600; }
tr.row-up { background:var(--row-up); }
tr.row-down { background:var(--row-down); }
[data-theme="dark"] .premium-up { color:#ff6b6b; }
[data-theme="dark"] .premium-down { color:#51cf66; }
.live-dot { display:inline-block; width:8px; height:8px; border-radius:50%; background:#27ae60; animation:pulse 1.5s infinite; vertical-align:middle; margin-right:2px; }
.source-status-badge { display:none; margin-left:6px; padding:2px 7px; border-radius:5px; font-size:11px; background:#fff3cd; color:#8a5a00; border:1px solid #f1d48a; }
[data-theme="dark"] .source-status-badge { background:#2b2412; color:#f6d173; border-color:#5d4a18; }
@keyframes pulse { 0%,100%{opacity:1} 50%{opacity:0.3} }

/* 手机端布局统一由 mobile.css 负责。 */
.mobile-menu-btn { display:none; position:fixed; top:10px; left:10px; z-index:30; background:var(--card-bg); border:1px solid var(--border); border-radius:6px; padding:6px 10px; font-size:18px; cursor:pointer; color:var(--text); }
.sidebar-overlay { display:none; position:fixed; inset:0; background:rgba(0,0,0,.35); z-index:19; }
.sidebar-overlay.show { display:block; }
/* ── 资金流向图表 ── */
.cf-widget { position:relative; width:100%; height:100%; background:var(--card-bg); border:1px solid var(--border); border-radius:10px; box-shadow:0 2px 16px rgba(0,0,0,.08); display:flex; flex-direction:column; overflow:hidden; }
.cf-widget canvas { border:none!important; outline:none!important; transition:filter .15s; }
.cf-widget canvas.sf-dimmed { filter:opacity(0.25) saturate(0.5); }
.cf-widget.pin { position:fixed; z-index:100; }
/* 展开/收缩动画由 Web Animations API (Element.animate) 控制，无需 CSS transition */
.cf-widget-hdr { display:flex; justify-content:space-between; align-items:center; padding:5px 10px; border-bottom:1px solid var(--border); flex-shrink:0; background:var(--card-bg); }
.cf-widget-title { font-size:12px; font-weight:600; color:var(--text); }
.cf-widget-actions { display:flex; gap:4px; }
.cf-widget-btn { background:var(--btn-bg); border:1px solid var(--btn-border); border-radius:4px; padding:3px 7px; font-size:13px; cursor:pointer; color:var(--btn-text); line-height:1; }
.cf-widget-btn:hover { background:var(--hover-bg); color:var(--text); }
/* 板块 Tab 切换按钮 */
.sf-tab { background:transparent; border:1px solid var(--btn-border); border-radius:4px; padding:2px 10px; font-size:12px; cursor:pointer; color:var(--text3); line-height:1.5; transition:all .15s; }
.sf-tab:hover { background:var(--hover-bg); color:var(--text); }
.sf-tab.active { background:var(--accent); color:#fff; border-color:var(--accent); }
.cf-widget-body { flex:1; min-height:0; padding:2px 6px 4px; position:relative; }
.cf-widget-body canvas { display:block; width:100%!important; height:100%!important; }
.sf-widget-body { display:grid; grid-template-columns:minmax(0,3fr) minmax(220px,2fr); gap:8px; padding:8px 8px 10px; }
.sf-chart-pane { min-width:0; min-height:0; position:relative; }
.sf-chart-pane canvas { cursor:crosshair; }
.sf-ranking { min-width:0; min-height:0; display:flex; flex-direction:column; overflow:hidden; border-left:1px solid var(--border); padding-left:8px; color:var(--text2); }
.sf-rank-head,.sf-rank-row { display:grid; grid-template-columns:minmax(76px,1fr) 70px 54px; align-items:center; column-gap:5px; }
.sf-rank-head { flex:0 0 auto; padding:2px 7px 6px; color:var(--text3); font-size:10px; border-bottom:1px solid var(--border); }
.sf-rank-head span:not(:first-child),.sf-rank-value,.sf-rank-change { text-align:right; }
.sf-rank-groups { flex:1; min-height:0; display:grid; grid-template-rows:1fr 1fr; gap:6px; }
.sf-rank-group { min-height:0; display:flex; flex-direction:column; }
.sf-rank-group-title { flex:0 0 auto; padding:6px 7px 3px; color:var(--text3); font-size:10px; font-weight:600; }
.sf-rank-list { flex:1; min-height:0; display:grid; grid-template-rows:repeat(5,minmax(0,1fr)); }
.sf-rank-row { position:relative; padding:2px 7px; border-radius:5px; font-size:11px; cursor:default; transition:background-color .12s ease,box-shadow .12s ease; }
.sf-rank-row:hover,.sf-rank-row.is-hovered { background:var(--hover-bg); box-shadow:inset 3px 0 0 var(--sf-row-color,var(--accent)); }
.sf-rank-name { display:flex; min-width:0; align-items:center; gap:5px; }
.sf-rank-index { flex:0 0 13px; text-align:right; color:var(--text3); font-variant-numeric:tabular-nums; }
.sf-rank-dot { flex:0 0 7px; width:7px; height:7px; border-radius:50%; background:var(--sf-row-color); }
.sf-rank-label { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--text); }
.sf-rank-value,.sf-rank-change { white-space:nowrap; font-variant-numeric:tabular-nums; font-weight:600; }
.sf-rank-positive { color:var(--up-color,#dc2626); }
.sf-rank-negative { color:var(--down-color,#16a34a); }
.cf-widget.expanded .sf-widget-body { grid-template-columns:minmax(0,7fr) minmax(280px,3fr); gap:14px; }
.cf-widget.expanded .sf-ranking { padding-left:14px; }
.cf-widget.expanded .sf-rank-row { font-size:12px; }
.cf-backdrop { opacity:0; pointer-events:none; position:fixed; left:220px; right:0; top:0; bottom:0; background:rgba(0,0,0,.35); z-index:99; transition:opacity var(--chart-animation-ms, 220ms) ease; }
.cf-backdrop.show { opacity:1; pointer-events:auto; }
.sidebar.collapsed ~ .main .cf-backdrop { left:52px; }
.chart-expand-placeholder { visibility:hidden; pointer-events:none; background:transparent; border:0; box-shadow:none; }
[data-theme="dark"] .cf-widget { box-shadow:0 2px 16px rgba(0,0,0,.3); }
[data-theme="dark"] .cf-backdrop { background:rgba(0,0,0,.6); }

/* ── 两融数据 widget ── */
.mf-tabs { display:flex; gap:4px; }
.mf-tab { background:transparent; border:1px solid var(--btn-border); border-radius:4px; padding:2px 10px; font-size:12px; cursor:pointer; color:var(--text3); line-height:1.5; transition:all .15s; }
.mf-tab:hover { background:var(--hover-bg); color:var(--text); }
.mf-tab.active { background:var(--accent); color:#fff; border-color:var(--accent); }
.mf-history-toolbar{position:relative;z-index:3;min-height:32px;display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;padding:2px 4px;}
.mf-history-legend{grid-column:2;display:flex;align-items:center;justify-content:center;gap:8px;min-width:0;}
.mf-history-legend button{display:flex;align-items:center;gap:4px;padding:3px 2px;border:0;background:transparent;color:var(--text2);font-size:10px;line-height:1;cursor:pointer;white-space:nowrap;}
.mf-history-legend button i{width:10px;height:10px;flex:0 0 auto;border:2px solid var(--mf-series-color);border-radius:50%;background:var(--mf-series-color);}
.mf-history-legend button.is-hidden i{background:transparent;}
.mf-history-legend button:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px;}
.mf-history-toolbar .mf-overlay-wrap{grid-column:3;justify-self:end;margin-left:12px;}
.mf-overlay-wrap{position:relative;margin-left:auto;}
.mf-overlay-toggle{min-height:28px;padding:3px 11px;border:1px solid var(--btn-border);border-radius:8px;background:var(--card-bg);color:var(--text2);cursor:pointer;}
.mf-overlay-toggle[aria-expanded="true"]{border-color:var(--accent);color:var(--accent);box-shadow:0 0 0 3px rgba(0,122,255,.10);}
.mf-overlay-menu{position:absolute;top:calc(100% + 7px);right:0;z-index:1150;width:220px;padding:6px;border:1px solid var(--border);border-radius:12px;background:var(--card-bg);box-shadow:var(--shadow-card);}
.mf-overlay-menu[hidden]{display:none!important;}
.mf-overlay-menu label{display:flex;align-items:center;gap:8px;min-height:34px;padding:5px 7px;border-radius:8px;color:var(--text2);font-size:12px;cursor:pointer;}
.mf-overlay-menu label:hover{background:var(--hover-bg);}
.mf-overlay-menu i{width:8px;height:8px;border-radius:50%;flex:0 0 auto;}
.mf-overlay-status{margin-left:auto;color:var(--text3);font-size:10px;white-space:nowrap;}
.mf-overlay-menu input{margin-left:0;}
#mf-widget.expanded .mf-overlay-toggle{min-height:38px;padding:7px 15px;font-size:14px;}
#mf-widget.expanded .cf-widget-hdr{overflow:visible;flex-wrap:nowrap;}
#mf-widget.expanded .mf-overlay-menu{top:calc(100% + 8px);right:0;width:230px;}
#mf-widget.expanded #mf-expand-btn{position:relative;z-index:1160;}
.mf-body { display:flex; flex-direction:column; }
.mf-latest-panel { flex:1; display:flex; flex-direction:column; padding:4px; min-height:0; }
.mf-stats-area { display:flex; flex-direction:column; align-items:center; gap:4px; }
.mf-big-number { display:flex; align-items:baseline; gap:4px; }
.mf-label { font-size:11px; color:var(--text3); }
.mf-value { font-size:24px; font-weight:700; color:var(--accent); }
.mf-unit { font-size:12px; color:var(--text3); }
.mf-sub-row { display:flex; gap:12px; justify-content:center; width:100%; }
.mf-sub-item { display:flex; align-items:baseline; gap:3px; }
.mf-sub-label { font-size:10px; color:var(--text3); }
.mf-sub-val { font-size:13px; font-weight:600; color:var(--text2); }
.mf-sub-unit { font-size:10px; color:var(--text3); }
.mf-change { font-size:10px; font-weight:600; margin-left:2px; }
.mf-change.up { color:var(--up-color, #dc2626); }
.mf-change.down { color:var(--down-color, #16a34a); }
.mf-rank-section { flex:1; display:flex; flex-direction:column; min-height:0; margin-top:4px; }
.mf-rank-tabs { display:flex; gap:3px; margin-bottom:2px; }
.mf-rank-tab { background:transparent; border:1px solid var(--btn-border); border-radius:3px; padding:1px 8px; font-size:10px; cursor:pointer; color:var(--text3); line-height:1.4; transition:all .15s; }
.mf-rank-tab:hover { background:var(--hover-bg); color:var(--text); }
.mf-rank-tab.active { background:var(--accent); color:#fff; border-color:var(--accent); }
.mf-rank-table-wrap { flex:1; overflow-y:auto; min-height:0; }
.mf-rank-table { width:100%; border-collapse:collapse; font-size:10px; }
.mf-rank-table th { padding:2px 4px; text-align:right; color:var(--text3); font-weight:500; border-bottom:1px solid var(--btn-border); white-space:nowrap; }
.mf-rank-table th.rank-cell { text-align:center; width:28px; }
.mf-rank-table th.name-cell { text-align:left; }
.mf-rank-table td { padding:2px 4px; text-align:right; color:var(--text2); white-space:nowrap; }
.mf-rank-table td.rank-cell { text-align:center; color:var(--text3); width:28px; }
.mf-rank-table td.name-cell { text-align:left; }
.mf-rank-table tbody tr:nth-child(even) { background:var(--hover-bg); }
.mf-rank-table tr.mf-rank-divider td { height:1px; padding:0; background:var(--border); }
.mf-rank-table tr.mf-rank-divider+tr td { border-top:1px solid var(--border); }
.mf-rank-table .num-up { color:var(--up-color, #dc2626); }
.mf-rank-table .num-down { color:var(--down-color, #16a34a); }
.mf-rank-date { font-size:9px; color:var(--text3); text-align:right; padding:2px 4px; }
.mf-date { font-size:10px; color:var(--text3); margin-top:4px; text-align:center; }
.mf-history-panel { flex:1; min-height:0; position:relative; flex-direction:column; }
.mf-history-chart-wrap{position:relative;flex:1;min-height:0;}
.mf-history-chart-wrap canvas { display:block; width:100%!important; height:100%!important; }
/* 放大态 */
#mf-widget.expanded .mf-value { font-size:42px; }
#mf-widget.expanded .mf-sub-val { font-size:20px; }
#mf-widget.expanded .mf-label { font-size:14px; }
#mf-widget.expanded .mf-sub-label { font-size:12px; }
#mf-widget.expanded .mf-sub-unit { font-size:12px; }
#mf-widget.expanded .mf-unit { font-size:16px; }
#mf-widget.expanded .mf-rank-table { font-size:13px; }
#mf-widget.expanded .mf-rank-table th, #mf-widget.expanded .mf-rank-table td { padding:6px 10px; }
#mf-widget.expanded .mf-rank-table th.rank-cell { width:36px; }
#mf-widget.expanded .mf-rank-table td.rank-cell { width:36px; }
#mf-widget.expanded .mf-rank-date { font-size:11px; }
#mf-widget.expanded .mf-date { font-size:12px; }

/* ═══════════ 环球指数 ═══════════ */

/* 2行3列网格布局 */
.gi-grid {
  flex:1;
  display:grid;
  grid-template-columns:1.25fr 1.25fr 1fr;
  grid-template-rows:minmax(0,1fr) 180px;
  gap:12px;
  min-height:0;
}
.gi-map-widget {
  grid-column:1 / 3;
  grid-row:1;
}
.gi-table-widget {
  grid-column:3;
  grid-row:1 / 3;
}
.gi-footer-space {
  grid-column:1 / 3;
  grid-row:2;
  min-height:0;
}

.gi-overview { padding:10px 14px 8px; }
.gi-overview-head { display:flex; justify-content:space-between; align-items:center; font-size:12px; color:var(--text); margin-bottom:6px; }
.gi-overview-head span { color:var(--text3); font-size:10px; }
.gi-overview-body{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(250px,.85fr);gap:12px;flex:1;min-height:0;}
.gi-overview-summary{display:flex;flex-direction:column;min-width:0;min-height:0;}
.gi-overview-metrics { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); flex:1; min-height:0; }
.gi-overview-metric { appearance:none;position:relative;display:flex;flex-direction:column;justify-content:center;padding:3px 10px;border:0;border-right:1px solid var(--border);border-radius:7px;background:transparent;text-align:left;min-width:0;cursor:pointer;transition:background-color .16s ease,box-shadow .16s ease; }
.gi-overview-metric:not([data-overview-metric="turnover_cny"]){padding-bottom:22px;}
.gi-overview-metric:last-child { border-right:0; }
.gi-overview-metric:hover{background:var(--hover-bg);}
.gi-overview-metric.active{background:rgba(0,122,255,.08);box-shadow:inset 0 0 0 1px rgba(0,122,255,.18);}
.gi-overview-metric:focus-visible{z-index:1;outline:2px solid var(--accent);outline-offset:1px;}
.gi-overview-metric > span { color:var(--text3); font-size:10px; }
.gi-overview-metric strong { color:var(--text); font-size:20px; line-height:1.15; margin-top:3px; white-space:nowrap; }
.gi-overview-metric small { color:var(--text3); font-size:9px; line-height:1.2; }
.gi-overview .up { color:#ef476f; }
.gi-overview .down { color:#00a77b; }
.gi-overview .flat { color:#9aa3ad; }
.gi-spark { position:absolute; right:6px; bottom:4px; width:50%; height:14px; overflow:visible; }
.gi-spark polyline { fill:none; stroke:currentColor; stroke-width:1.8; vector-effect:non-scaling-stroke; }
.gi-overview-insights{display:grid;grid-template-columns:126px minmax(0,1fr);align-items:center;gap:10px;padding-top:4px;}
.gi-sentiment { display:grid;grid-template-columns:auto auto 1fr;align-items:center;gap:5px;text-align:left;min-width:0; }
.gi-sentiment>span,.gi-sentiment>small{color:var(--text3);font-size:9px;white-space:nowrap;}
.gi-sentiment>strong{font-size:11px;white-space:nowrap;}
.gi-gauge { width:56px; height:28px; margin-top:2px; overflow:hidden; position:relative; border-radius:56px 56px 0 0; background:conic-gradient(from 270deg at 50% 100%,#ef7d00 0deg 60deg,#eab308 60deg 120deg,#22a45d 120deg 180deg,transparent 180deg 360deg); }
.gi-gauge::after { content:""; position:absolute; left:9px; right:9px; bottom:-1px; height:15px; background:var(--card-bg); border-radius:30px 30px 0 0; }
.gi-gauge i { position:absolute; z-index:2; left:27px; bottom:0; width:2px; height:23px; background:var(--text2); transform-origin:50% 100%; transform:rotate(-90deg); transition:transform .25s ease; }
.gi-breadth { display:grid; grid-template-columns:64px 1fr; align-items:center; gap:2px 8px; font-size:10px; color:var(--text2); }
.gi-breadth-bar { height:7px; display:flex; overflow:hidden; border-radius:6px; background:var(--hover-bg); }
.gi-breadth-bar i { display:block; height:100%; min-width:0; }
.gi-breadth-bar .up { background:#ef476f; }.gi-breadth-bar .flat { background:#cbd2db; }.gi-breadth-bar .down { background:#00a77b; }
.gi-breadth-labels { grid-column:2; display:flex; justify-content:space-between; font-size:9px; }
.gi-overview-history{display:flex;flex-direction:column;min-width:0;min-height:0;padding-left:12px;border-left:1px solid var(--border);}
.gi-overview-history-head{display:flex;align-items:center;justify-content:space-between;gap:8px;color:var(--text);font-size:10px;}
.gi-overview-history-head span{color:var(--text3);font-size:9px;}
.gi-overview-chart-wrap{position:relative;flex:1;min-height:0;margin-top:3px;}
.gi-overview-chart-wrap canvas{position:absolute;inset:0;width:100%!important;height:100%!important;}
.gi-overview-chart-empty{position:absolute;inset:0;display:none;align-items:center;justify-content:center;color:var(--text3);font-size:10px;}

.gi-widget {
  background:var(--card-bg);
  border:1px solid var(--border);
  border-radius:8px;
  display:flex;
  flex-direction:column;
  overflow:hidden;
  min-height:0;
}

.gi-map-body {
  flex:1;
  position:relative;
  min-height:0;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:8px;
}
.gi-map-body svg {
  width:100%;
  height:100%;
  max-height:100%;
}
.gi-map-label { cursor:pointer; transition:opacity .15s ease; }
.gi-map-label:hover { opacity:.72; }
.gi-map-label-name { fill:var(--text); font-size:17px; font-weight:500; }
.gi-map-label-value { font-size:19px; font-weight:750; }
[data-theme="dark"] .gi-map-label-name { fill:#f7f9fc; font-weight:650; }
.gi-market-pin { stroke:var(--card-bg); stroke-width:3; }
.gi-market-halo { opacity:.14; }
.gi-exchange-pin-group { cursor:pointer; }

/* 地图标注 hover 效果 */
.gi-marker:hover {
  opacity:0.85;
}

/* 指数表格 */
.gi-table-body {
  flex:1;
  overflow-y:auto;
  min-height:0;
  padding:4px 0;
}
.gi-table {
  width:100%;
  border-collapse:collapse;
  font-size:12px;
}
.gi-table th {
  position:sticky;
  top:0;
  background:var(--card-bg);
  z-index:1;
  padding:6px 8px;
  text-align:right;
  font-weight:600;
  font-size:11px;
  color:var(--text2);
  border-bottom:1px solid var(--border);
  cursor:pointer;
  user-select:none;
  white-space:nowrap;
}
.gi-table th:first-child { text-align:left; }
.gi-table th .gi-sort-arrow {
  font-size:9px;
  margin-left:2px;
  color:var(--text3);
}
.gi-table td {
  padding:4px 8px;
  text-align:right;
  color:var(--text2);
  border-bottom:1px solid var(--border);
  white-space:nowrap;
}
.gi-table td:first-child { text-align:left; }
.gi-table tbody tr:hover {
  background:var(--hover-bg);
}

/* 放大态 */
.gi-map-widget.expanded {
  position:fixed;
  left:238px;
  right:18px;
  top:18px;
  bottom:18px;
  z-index:1002;
  border-radius:12px;
  box-shadow:0 12px 36px rgba(15,23,42,.18);
}
.sidebar.collapsed ~ .main .gi-map-widget.expanded { left:70px; }
.gi-map-widget.expanded .gi-map-body { padding:20px; }
.gi-map-widget.expanded .gi-map-label-name { font-size:20px; }
.gi-map-widget.expanded .gi-map-label-value { font-size:24px; }
.gi-widget.expanded .gi-table { font-size:14px; }
.gi-widget.expanded .gi-table th { font-size:13px; padding:8px 12px; }
.gi-widget.expanded .gi-table td { padding:6px 12px; }

/* 走势图弹出层（复用 cf-expanded 样式） */
#gi-chart-expanded {
  position:fixed;
  left:238px;
  right:18px;
  top:42px;
  bottom:42px;
  background:var(--card-bg);
  border-radius:10px;
  padding:20px;
  z-index:1001;
  box-shadow:0 8px 32px rgba(0,0,0,0.2);
  transform-origin:center;
}
.sidebar.collapsed ~ .main #gi-chart-expanded { left:70px; }
#gi-backdrop { z-index:1000; }
.gi-chart-toolbar{display:flex;align-items:center;gap:4px;margin-left:auto;margin-right:10px;}
.gi-range-btn{border:1px solid var(--btn-border);background:var(--btn-bg);color:var(--text3);border-radius:5px;padding:4px 12px;font-size:12px;cursor:pointer;}
.gi-range-btn.active{background:var(--accent);border-color:var(--accent);color:#fff;}
.gi-chart-help{font-size:11px;font-weight:400;color:var(--text3);margin-left:14px;}
.gi-chart-session{font-size:11px;font-weight:400;color:var(--text3);margin-top:4px;}
.gi-chart-stage{position:relative;flex:1;min-width:0;min-height:0;}
.gi-chart-stage canvas{position:absolute;inset:0;width:100%!important;height:100%!important;}
.gi-chart-crosshair-info{
  position:absolute;z-index:3;top:10px;right:12px;display:grid;grid-template-columns:repeat(3,max-content);
  align-items:center;gap:4px 10px;max-width:calc(100% - 24px);padding:8px 10px;border:1px solid var(--border);
  border-radius:9px;background:color-mix(in srgb,var(--card-bg) 92%,transparent);box-shadow:0 4px 16px rgba(15,23,42,.14);
  color:var(--text2);font-size:11px;line-height:1.25;pointer-events:none;backdrop-filter:blur(8px);
}
.gi-chart-crosshair-info[hidden]{display:none!important;}
.gi-chart-crosshair-info.align-right{right:auto;left:12px;}
.gi-chart-crosshair-info strong{grid-column:1/-1;color:var(--text);font-size:12px;}
.gi-chart-crosshair-info em{font-style:normal;font-weight:700;}
.gi-chart-crosshair-info .up{color:var(--up-color);}
.gi-chart-crosshair-info .down{color:var(--down-color);}

/* ════════════════════════════════════════════════════════════
 * 申万一、二级行业估值（日终快照）
 * ════════════════════════════════════════════════════════════ */
.iv-page{width:100%;height:100%;min-height:0;padding:18px;display:flex;flex-direction:column;gap:14px;overflow:auto;background:var(--bg);}
.iv-toolbar,.iv-stats-card,.iv-chart-card,.iv-table-card{background:var(--card-bg);border:1px solid var(--border);border-radius:14px;box-shadow:0 4px 18px rgba(15,23,42,.045);}
.iv-toolbar{position:relative;z-index:5;overflow:visible;flex:0 0 auto;padding:14px 16px;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;}
.iv-heading{display:flex;align-items:baseline;gap:12px;min-width:230px;}
.iv-heading>div{display:flex;align-items:baseline;gap:9px;}
.iv-heading strong{font-size:20px;letter-spacing:-.02em;}
.iv-heading span,.iv-heading small{font-size:11px;color:var(--text3);font-weight:400;}
.iv-heading small{padding-left:12px;border-left:1px solid var(--border);}
.iv-controls{display:flex;align-items:center;justify-content:flex-end;gap:9px;flex-wrap:wrap;}
.iv-select-wrap{position:relative;height:32px;display:flex;align-items:center;gap:7px;padding:0 9px 0 10px;border:0;border-radius:0;background:transparent;box-shadow:none;font-size:11px;color:var(--text3);overflow:visible;}
.iv-select-wrap select{max-width:150px;border:0;outline:0;background-color:transparent;color:var(--text);font-size:12px;cursor:pointer;}
.site-select{position:relative;display:inline-block;width:150px;min-width:0;vertical-align:middle;z-index:auto;border:0;background:transparent;box-shadow:none;}
.site-select[data-select-id="sf-date-selector"]{width:112px;}
.site-select[data-select-id="etf-status-filter"]{width:120px;}
select.site-select-enhanced{display:none;}
.site-select-trigger{width:100%;height:30px;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 9px 0 10px;border:1px solid var(--border);border-radius:9px;background:#fff;color:var(--text);font:inherit;font-size:12px;text-align:left;cursor:pointer;box-shadow:none;touch-action:none;}
.site-select-trigger:hover{border-color:color-mix(in srgb,var(--accent) 38%,var(--border));}
.site-select-trigger:focus-visible{outline:2px solid color-mix(in srgb,var(--accent) 38%,transparent);outline-offset:2px;}
.site-select-trigger:disabled{opacity:.5;cursor:not-allowed;}
.site-select-trigger-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.site-select-trigger i{flex:0 0 8px;width:8px;height:8px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:translateY(-2px) rotate(45deg);transition:transform .15s ease;}
.site-select.open .site-select-trigger{border-radius:9px 9px 0 0;border-color:var(--accent);}
.site-select.open.open-above .site-select-trigger{border-radius:0 0 9px 9px;}
.site-select.open .site-select-trigger i{transform:translateY(2px) rotate(225deg);}
.site-select-listbox{position:fixed;z-index:1200;box-sizing:border-box;max-height:min(320px,55vh);overflow-x:hidden;overflow-y:auto;padding:4px;border:1px solid var(--accent);border-top:0;border-radius:0 0 9px 9px;background:#fff;color:var(--text);box-shadow:0 12px 28px rgba(15,23,42,.16);overscroll-behavior:contain;scrollbar-gutter:stable;}
.site-select-listbox.open-above{border-top:1px solid var(--accent);border-bottom:0;border-radius:9px 9px 0 0;box-shadow:0 -12px 28px rgba(15,23,42,.16);}
.site-select-listbox[hidden]{display:none!important;}
.site-select-option{min-height:32px;display:flex;align-items:center;padding:6px 9px;border-radius:6px;color:var(--text);font-size:12px;line-height:1.35;cursor:pointer;user-select:none;}
.site-select-option:hover,.site-select-option.highlighted{background:color-mix(in srgb,var(--accent) 8%,#f5f7fa);}
.site-select-option[aria-selected="true"]{background:color-mix(in srgb,var(--accent) 12%,#fff);color:var(--accent);font-weight:650;}
.sf-status-warning{color:#b45309!important;}
.sf-status-critical{color:var(--up-color)!important;font-weight:650;}
.sf-status-static{color:var(--text3)!important;}
.site-select-option[aria-disabled="true"]{opacity:.45;cursor:not-allowed;}
[data-theme="dark"] .site-select-trigger,[data-theme="dark"] .site-select-listbox{background:var(--card-bg);color:var(--text);}
[data-theme="dark"] .site-select-option:hover,[data-theme="dark"] .site-select-option.highlighted{background:rgba(255,255,255,.07);}
[data-theme="dark"] .site-select-option[aria-selected="true"]{background:color-mix(in srgb,var(--accent) 22%,var(--card-bg));color:#8ec5ff;}
@media(max-width:768px),(hover:none) and (pointer:coarse){
  .site-select{display:inline-block;}
  select.site-select-enhanced{display:none;}
  .site-select-listbox{max-height:45dvh;}
}
.iv-segment{display:flex;padding:2px;background:var(--bg);border:1px solid var(--border);border-radius:10px;}
.iv-segment button{height:28px;padding:0 12px;border:0;border-radius:7px;background:transparent;color:var(--text3);font-size:11px;cursor:pointer;transition:background .16s ease,color .16s ease,box-shadow .16s ease;white-space:nowrap;}
.iv-segment button:hover{color:var(--text);}
.iv-segment button.active{background:var(--card-bg);color:var(--accent);font-weight:650;box-shadow:0 1px 5px rgba(15,23,42,.12);}
.iv-segment button:disabled{opacity:.4;cursor:not-allowed;}
.iv-level-tabs button.active{background:var(--accent);color:#fff;box-shadow:0 2px 7px rgba(37,99,235,.25);}
#iv-metric-tabs button.active,#iv-range-tabs button.active{background:var(--accent);color:#fff;box-shadow:0 2px 7px rgba(37,99,235,.25);}
.iv-detail-grid{flex:1 1 440px;min-height:390px;display:grid;grid-template-columns:230px minmax(0,1fr);gap:14px;}
.iv-stats-card{padding:18px;min-height:0;overflow:auto;touch-action:pan-y;display:flex;flex-direction:column;}
.iv-industry-title{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding-bottom:14px;border-bottom:1px solid var(--border);}
.iv-industry-title>div{display:flex;flex-direction:column;gap:2px;}
.iv-industry-title strong{font-size:17px;}
.iv-industry-title span{font:11px ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--text3);}
.iv-industry-title em{font-size:12px;font-style:normal;font-weight:650;}
.iv-industry-title>.iv-title-actions{align-items:flex-end;gap:6px;}
.iv-industry-nav{display:none;align-items:center;gap:6px;}
.iv-industry-nav button{width:30px;height:28px;border:1px solid var(--border);border-radius:8px;background:var(--btn-bg);color:var(--text);font-size:20px;line-height:1;cursor:pointer;}
.iv-industry-nav button:disabled{opacity:.35;cursor:not-allowed;}
.iv-current{padding:16px 0 13px;display:flex;align-items:flex-end;justify-content:space-between;}
.iv-current span{font-size:11px;color:var(--text3);}
.iv-current strong{font-size:28px;letter-spacing:-.04em;}
.iv-stats-list{display:flex;flex-direction:column;gap:8px;}
.iv-stats-list>div{display:flex;justify-content:space-between;gap:10px;font-size:12px;}
.iv-stats-list dt{color:var(--text3);}
.iv-stats-list dd{font-weight:650;font-variant-numeric:tabular-nums;}
.iv-stats-list .iv-stats-divider{padding-top:12px;margin-top:5px;border-top:1px solid var(--border);}
.iv-wheel-hint{display:flex;align-items:center;gap:6px;margin:auto 0 0;padding-top:10px;color:var(--text3);font-size:10px;line-height:1.35;}
.iv-wheel-hint span{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border:1px solid var(--border);border-radius:6px;font-size:12px;}
@media(hover:none),(pointer:coarse){.iv-wheel-hint{display:none;}}
.iv-threshold-guide{display:flex;flex-direction:column;gap:8px;margin-top:16px;padding-top:14px;border-top:1px solid var(--border);}
.iv-threshold-guide>div{display:flex;align-items:center;gap:9px;color:var(--text3);font-size:10px;line-height:1.35;white-space:nowrap;}
.iv-guide-line{display:block;flex:0 0 30px;height:0;border-top:1.5px dashed currentColor;}
.iv-guide-line.danger{color:#ef4444;}.iv-guide-line.median{color:#7b8794;}.iv-guide-line.opportunity{color:#16a06a;}
.iv-chart-card{min-width:0;min-height:0;padding:14px 16px 10px;display:flex;flex-direction:column;}
.iv-chart-head{flex:0 0 auto;display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:0 2px 9px;}
.iv-chart-head>div{display:flex;align-items:baseline;gap:9px;}
.iv-chart-head strong{font-size:13px;}
.iv-chart-head span{font-size:10px;color:var(--text3);}
.iv-chart-mobile-nav-slot{display:none;}
.iv-chart-help{white-space:nowrap;}
.iv-card-actions{display:flex;align-items:center!important;justify-content:flex-end;gap:8px!important;min-width:0;}
.iv-chart-wrap{position:relative;flex:1;min-height:310px;}
.iv-chart-wrap canvas{position:absolute;inset:0;width:100%!important;height:100%!important;}
.iv-empty{position:absolute;inset:0;display:none;align-items:center;justify-content:center;color:var(--text3);font-size:13px;text-align:center;padding:20px;}
.iv-table-card{flex:0 0 min(245px,28vh);min-height:190px;display:flex;flex-direction:column;overflow:hidden;}
.iv-table-head{flex:0 0 auto;padding:12px 15px;display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--border);}
.iv-table-head>div{display:flex;align-items:baseline;gap:9px;}
.iv-table-head strong{font-size:13px;}.iv-table-head span{font-size:10px;color:var(--text3);}
.iv-table-head input{width:160px;height:29px;padding:0 10px;border:1px solid var(--border);border-radius:8px;background:var(--bg);color:var(--text);outline:none;font-size:11px;}
.iv-table-head input:focus{border-color:var(--accent);}
.iv-table-scroll{flex:1;min-height:0;overflow:auto;}
.iv-table{width:100%;border-collapse:collapse;font-size:11px;font-variant-numeric:tabular-nums;}
.iv-table th{position:sticky;top:0;z-index:1;background:var(--card-bg);color:var(--text3);font-weight:500;text-align:right;padding:8px 12px;border-bottom:1px solid var(--border);white-space:nowrap;}
.iv-table th.iv-sortable{cursor:pointer;user-select:none;transition:color .14s ease,background .14s ease;}
.iv-table th.iv-sortable:hover,.iv-table th.iv-sortable.active{color:var(--accent);background:var(--hover-bg);}
.iv-table th.iv-sortable i{display:inline-block;min-width:10px;font-style:normal;font-size:9px;color:currentColor;}
.iv-table th:first-child,.iv-table td:first-child{text-align:left;padding-left:16px;}
.iv-table td{text-align:right;padding:7px 12px;border-bottom:1px solid var(--border);white-space:nowrap;}
.iv-table tbody tr{cursor:pointer;transition:background .12s ease;}
.iv-table tbody tr:hover,.iv-table tbody tr.active{background:var(--hover-bg);}
.iv-table .iv-name{font-weight:600;color:var(--text);}.iv-table .iv-code{margin-left:7px;color:var(--text3);font:9px ui-monospace,SFMono-Regular,Menlo,monospace;}
.iv-table .iv-up{color:#ef4444}.iv-table .iv-down{color:#00a878}.iv-table .iv-percentile-pill{display:inline-block;min-width:44px;padding:2px 7px;border-radius:999px;background:rgba(37,99,235,.1);color:var(--accent);text-align:center;font-weight:650;}
[data-theme="dark"] .iv-toolbar,[data-theme="dark"] .iv-stats-card,[data-theme="dark"] .iv-chart-card,[data-theme="dark"] .iv-table-card{box-shadow:0 8px 28px rgba(0,0,0,.2);}
[data-theme="dark"] .iv-segment button.active{box-shadow:0 1px 6px rgba(0,0,0,.5);}
[data-theme="dark"] .iv-level-tabs button.active{background:var(--accent);color:#fff;box-shadow:0 2px 8px rgba(0,0,0,.42);}
[data-theme="dark"] #iv-metric-tabs button.active,[data-theme="dark"] #iv-range-tabs button.active{background:var(--accent);color:#fff;box-shadow:0 2px 8px rgba(0,0,0,.42);}
.iv-chart-card.expanded,.iv-table-card.expanded{position:fixed;left:238px;right:18px;top:18px;bottom:18px;width:auto;height:auto;max-height:none;z-index:110;background:var(--card-bg);border-radius:14px;box-shadow:0 14px 42px rgba(15,23,42,.24);}
.iv-chart-card.expanded{padding:18px 20px 14px;}
.iv-chart-card.expanded .iv-chart-wrap{min-height:0;}
.iv-table-card.expanded{flex:none;}
.iv-table-card.expanded .iv-table-scroll{min-height:0;}
.iv-table-card.expanded .iv-table{font-size:13px;}
.iv-table-card.expanded .iv-table th,.iv-table-card.expanded .iv-table td{padding-top:10px;padding-bottom:10px;}
.sidebar.collapsed ~ .main .iv-chart-card.expanded,.sidebar.collapsed ~ .main .iv-table-card.expanded{left:70px;}
#iv-backdrop{z-index:109;}

/* ════════════════════════════════════════════════════════════
 * 市场信号（日终快照）
 * ════════════════════════════════════════════════════════════ */
.ms-page{width:100%;height:100%;min-height:0;padding:18px;display:flex;flex-direction:column;gap:14px;overflow:auto;background:var(--bg);}
.ms-toolbar,.ms-card{background:var(--card-bg);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow-card);}
.ms-toolbar{flex:0 0 auto;min-height:62px;padding:13px 16px;display:flex;align-items:center;justify-content:space-between;gap:16px;}
.ms-heading,.ms-update{display:flex;flex-direction:column;gap:3px;}
.ms-heading strong{font-size:20px;letter-spacing:-.025em;}
.ms-heading span,.ms-update small{color:var(--text3);font-size:11px;}
.ms-update{align-items:flex-end;text-align:right;}
.ms-update strong{font-size:12px;font-weight:650;color:var(--text2);}
.ms-grid{flex:1 0 auto;min-height:690px;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));grid-template-rows:repeat(2,minmax(325px,1fr));gap:14px;}
.ms-card{grid-column:span 2;min-width:0;min-height:0;padding:14px 15px 13px;display:grid;grid-template-rows:auto auto minmax(190px,1fr) auto;gap:8px;overflow:hidden;}
.ms-card.ms-card-wide{grid-column:span 3;}
.ms-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;}
.ms-card-head>div{min-width:0;display:flex;flex-direction:column;gap:3px;}
.ms-card-head strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;}
.ms-card-head span{color:var(--text3);font-size:10px;}
.ms-card-head .ms-basis-components{color:var(--text2);font-size:10px;font-weight:600;font-variant-numeric:tabular-nums;}
.ms-current{min-height:32px;display:flex;align-items:flex-end;gap:9px;}
.ms-current>strong{font-size:26px;line-height:1;font-weight:750;letter-spacing:-.035em;font-variant-numeric:tabular-nums;}
.ms-direction-hint{padding-bottom:1px;color:inherit;font-size:12px;font-weight:400;line-height:1.5;white-space:nowrap;}
.ms-badge{display:inline-flex;align-items:center;min-height:22px;padding:2px 8px;border-radius:999px;background:rgba(0,122,255,.09);color:var(--accent);font-size:10px;font-weight:650;white-space:nowrap;}
.ms-badge.positive{background:rgba(52,199,89,.12);color:var(--down-color);}
.ms-badge.negative{background:rgba(255,59,48,.1);color:var(--up-color);}
.ms-badge.neutral{background:var(--surface-muted);color:var(--text3);}
.ms-chart-wrap{position:relative;min-width:0;min-height:190px;}
.ms-chart-wrap canvas{position:absolute;inset:0;width:100%!important;height:100%!important;cursor:crosshair;}
.ms-empty{position:absolute;inset:0;display:none;align-items:center;justify-content:center;padding:20px;color:var(--text3);font-size:12px;text-align:center;}
.ms-card footer{min-height:45px;padding-top:9px;border-top:1px solid var(--border);display:flex;align-items:flex-start;justify-content:space-between;gap:12px;}
.ms-card footer p{max-width:76%;color:var(--text2);font-size:12px;line-height:1.5;overflow-wrap:anywhere;}
.ms-card footer span{color:var(--text3);font-size:11px;line-height:1.5;text-align:right;overflow-wrap:anywhere;}
.ms-card footer span.error{color:var(--up-color);}
.ms-card.expanded{position:fixed;left:238px;right:18px;top:18px;bottom:18px;width:auto;height:auto;max-height:none;z-index:110;padding:18px 20px 15px;grid-template-rows:auto auto minmax(0,1fr) auto;background:var(--card-bg);border-radius:14px;box-shadow:0 14px 42px rgba(15,23,42,.24);}
.ms-card.expanded .ms-card-head strong{font-size:17px;}
.ms-card.expanded .ms-current>strong{font-size:34px;}
.ms-card.expanded .ms-chart-wrap{min-height:0;}
.ms-card.expanded .ms-chart-wrap canvas{cursor:grab;}
.ms-card.expanded .ms-chart-wrap canvas:active{cursor:grabbing;}
.sidebar.collapsed~.main .ms-card.expanded{left:70px;}
#ms-backdrop{z-index:109;}
[data-theme="dark"] .ms-toolbar,[data-theme="dark"] .ms-card{box-shadow:0 8px 28px rgba(0,0,0,.2);}

/* 宽基 ETF 监控页：沿用现有卡片与图表视觉语言 */
.etf-page{width:100%;height:100%;min-height:0;padding:18px;display:flex;flex-direction:column;gap:14px;overflow:auto;background:var(--bg);}
.etf-summary-card,.etf-chart-card,.etf-table-card{background:var(--card-bg);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow-card);}
.etf-status{font-size:11px!important;}.etf-status-ok{color:var(--down-color)!important;}.etf-status-pending,.etf-status-estimated{color:#b76e00!important;}.etf-status-error,.etf-status-missing{color:var(--up-color)!important;}
.etf-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;flex:0 0 auto;}.etf-summary-card{min-width:0;padding:14px 16px;display:flex;flex-direction:column;gap:5px;}.etf-summary-card span{color:var(--text3);font-size:11px;}.etf-summary-card strong{font-size:23px;line-height:1.1;font-variant-numeric:tabular-nums;}.etf-summary-card small{color:var(--text3);font-size:10px;}
.etf-summary-date-card{gap:4px;}.etf-date-row{display:flex;align-items:baseline;justify-content:space-between;gap:8px;min-width:0;}.etf-date-row small{flex:0 0 auto;}.etf-date-row strong{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.etf-index-section{display:flex;flex-direction:column;gap:8px;flex:0 0 auto;}.etf-section-head{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:28px;}.etf-section-head strong{font-size:13px;}.etf-index-expand-btn{border:1px solid var(--btn-border);border-radius:8px;background:var(--btn-bg);color:var(--btn-text);padding:5px 10px;font:inherit;font-size:10px;cursor:pointer;}.etf-index-expand-btn:hover{background:var(--hover-bg);color:var(--text);}.etf-index-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;flex:0 0 auto;}.etf-index-card{min-width:0;overflow:hidden;border:1px solid var(--border);border-left:3px solid var(--etf-index-accent,#007aff);border-radius:12px;background:var(--card-bg);box-shadow:var(--shadow-card);cursor:pointer;outline:none;transition:box-shadow .16s ease,border-color .16s ease;}.etf-index-card:hover,.etf-index-card:focus-visible,.etf-index-card.expanded{border-color:color-mix(in srgb,var(--etf-index-accent,#007aff) 55%,var(--border));box-shadow:0 6px 20px rgba(15,23,42,.12);}.etf-index-card>header{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;padding:11px 12px 7px;}.etf-index-card>header strong{display:block;font-size:14px;}.etf-index-card>header small{display:block;margin-top:4px;color:var(--text3);font-size:10px;}.etf-index-score{color:var(--etf-index-accent,#007aff);font-size:12px;font-weight:700;white-space:nowrap;}.etf-index-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;padding:7px 10px 10px;}.etf-index-metrics span{min-width:0;display:flex;flex-direction:column;gap:3px;}.etf-index-metrics span+span{padding-left:8px;border-left:1px solid var(--border);}.etf-index-metrics small{color:var(--text3);font-size:9px;}.etf-index-metrics strong{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums;}.etf-index-card-details{padding:0 10px 9px;border-top:1px solid var(--border);cursor:default;}.etf-index-detail-row{display:grid;grid-template-columns:minmax(150px,1.35fr) repeat(5,minmax(90px,1fr));gap:8px;align-items:center;padding:8px 2px;border-bottom:1px solid var(--border);font-size:10px;}.etf-index-detail-row:last-child{border-bottom:0;}.etf-index-detail-row>div{min-width:0;}.etf-index-detail-row span,.etf-index-detail-row small{display:block;color:var(--text3);font-size:9px;line-height:1.3;}.etf-index-detail-row strong{display:block;margin-top:2px;font-size:10px;line-height:1.35;overflow:hidden;text-overflow:ellipsis;}.etf-index-detail-row a{color:var(--accent);text-decoration:none;}.etf-index-detail-row a:hover{text-decoration:underline;}.etf-index-card>footer{display:flex;justify-content:space-between;gap:8px;padding:7px 11px 9px;color:var(--text3);font-size:9px;line-height:1.3;}.etf-index-card-hint{color:var(--etf-index-accent,#007aff);white-space:nowrap;}.etf-index-empty{grid-column:1/-1;padding:18px;text-align:center;color:var(--text3);font-size:11px;border:1px dashed var(--border);border-radius:12px;}
.etf-chart-card{display:flex;flex-direction:column;min-height:350px;flex:1 0 370px;overflow:hidden;}.etf-card-head,.etf-table-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 15px;border-bottom:1px solid var(--border);}.etf-card-head>div,.etf-table-head>div:first-child{display:flex;flex-direction:column;gap:3px;min-width:0;}.etf-card-head strong,.etf-table-head strong{font-size:14px;}.etf-card-head span,.etf-table-head span{color:var(--text3);font-size:10px;}.etf-chart-controls{display:flex;align-items:center;gap:9px;flex-wrap:wrap;padding:8px 13px;}.etf-chart-controls label{display:flex;align-items:center;gap:5px;color:var(--text3);font-size:11px;}.etf-chart-controls select{min-height:30px;padding:3px 23px 3px 8px;border:1px solid var(--btn-border);border-radius:8px;background:var(--btn-bg);color:var(--text2);font:inherit;}.etf-chart-wrap{position:relative;min-height:245px;flex:1 1 auto;margin:0 12px;}.etf-chart-wrap canvas{position:absolute;inset:0;width:100%!important;height:100%!important;}.etf-empty{position:absolute;inset:0;display:none;align-items:center;justify-content:center;color:var(--text3);font-size:12px;text-align:center;padding:20px;}.etf-legend{display:flex;flex-wrap:wrap;gap:8px 14px;padding:6px 14px 10px;color:var(--text3);font-size:10px;}.etf-legend span{display:inline-flex;align-items:center;gap:4px;}.etf-legend i{width:8px;height:8px;border-radius:50%;display:inline-block;}
.etf-chart-card:not(.expanded){height:auto;min-height:0;flex:0 0 auto;}.etf-chart-card:not(.expanded) .etf-chart-wrap{min-height:245px;flex:0 0 clamp(245px,34dvh,320px);}
.etf-table-card{flex:0 0 auto;overflow:hidden;}.etf-table-actions{display:flex;align-items:center;gap:7px;}.etf-table-actions input{width:180px;min-height:30px;padding:5px 9px;border:1px solid transparent;border-radius:8px;background:var(--surface-muted);color:var(--text);font:inherit;font-size:11px;outline:none;}.etf-table-actions input:focus{border-color:rgba(0,122,255,.45);background:var(--card-bg);}.etf-table-scroll{overflow:auto;max-height:420px;}.etf-table{width:100%;border-collapse:collapse;table-layout:auto;font-size:11px;white-space:nowrap;}.etf-table th{position:sticky;top:0;z-index:1;background:var(--th-bg);color:var(--th-text);font-weight:600;text-align:left;padding:9px 10px;border-bottom:1px solid var(--border);cursor:pointer;}.etf-table td{padding:9px 10px;border-bottom:1px solid var(--border);font-variant-numeric:tabular-nums;}.etf-table td:first-child{min-width:140px;}.etf-table td strong,.etf-table td small{display:block;}.etf-table td small{color:var(--text3);font-size:9px;margin-top:2px;}.etf-table-empty{text-align:center!important;color:var(--text3);padding:28px!important;}.etf-up{color:var(--up-color)!important;}.etf-down{color:var(--down-color)!important;}.etf-status-pill{display:inline-flex;align-items:center;padding:3px 7px;border-radius:999px;font-size:9px;line-height:1;white-space:nowrap;}.etf-status-pill.etf-status-ok{background:rgba(52,199,89,.12);}.etf-status-pill.etf-status-pending,.etf-status-pill.etf-status-estimated{background:rgba(255,159,10,.14);}.etf-status-pill.etf-status-error,.etf-status-pill.etf-status-missing{background:rgba(255,59,48,.1);}.etf-mobile-list{display:none;}
.etf-chart-card.expanded,.etf-table-card.expanded{position:fixed;left:238px;right:18px;top:18px;bottom:18px;width:auto;height:auto;z-index:110;padding:0;max-height:none;overflow:hidden;border-radius:14px;box-shadow:0 14px 42px rgba(15,23,42,.24);}.etf-chart-card.expanded .etf-chart-wrap{min-height:0;}.etf-table-card.expanded{display:flex;flex-direction:column;min-height:0;}.etf-table-card.expanded .etf-table-scroll{overflow:auto;max-height:none;flex:1;min-height:0;}.sidebar.collapsed~.main .etf-chart-card.expanded,.sidebar.collapsed~.main .etf-table-card.expanded{left:70px;}

.etf-index-picker{display:none;position:relative;}
.etf-index-picker>button{min-height:30px;padding:4px 10px;border:1px solid var(--btn-border);border-radius:9px;background:var(--btn-bg);color:var(--text2);font:inherit;font-size:10px;white-space:nowrap;}
.etf-index-picker-listbox{position:fixed;z-index:1250;box-sizing:border-box;max-height:45dvh;overflow:auto;padding:4px;border:1px solid var(--accent);border-radius:9px;background:var(--card-bg);box-shadow:0 12px 28px rgba(15,23,42,.2);overscroll-behavior:contain;}
.etf-index-picker-listbox[hidden]{display:none!important;}
.etf-index-picker-option{width:100%;min-height:34px;display:flex;align-items:center;gap:8px;padding:6px 9px;border:0;border-radius:7px;background:transparent;color:var(--text);font:inherit;font-size:11px;text-align:left;}
.etf-index-picker-option:hover{background:var(--hover-bg);}
.etf-index-picker-option i{width:10px;height:10px;flex:0 0 auto;border:2px solid var(--etf-index-color);border-radius:50%;background:transparent;}
.etf-index-picker-option[aria-selected="true"]{color:var(--accent);font-weight:650;background:color-mix(in srgb,var(--accent) 10%,var(--card-bg));}
.etf-index-picker-option[aria-selected="true"] i{background:var(--etf-index-color);}
.etf-trend-mobile-info{display:none;}

@media(max-width:980px){
  .iv-heading{width:100%;justify-content:space-between;}.iv-controls{width:100%;justify-content:flex-start;}
  .iv-detail-grid{grid-template-columns:200px minmax(0,1fr);}
  .ms-grid{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(3,minmax(320px,1fr));}
  .ms-card,.ms-card.ms-card-wide{grid-column:span 1;}
  .ms-card:last-child{grid-column:1/-1;}
}
/* ════════════════════════════════════════════════════════════
 * Apple 风格基础层（阶段 1/2）
 * 只统一视觉系统与应用框架，不改变业务布局或交互逻辑。
 * 环球指数地图卡片在本段末尾单独恢复原样。
 * ════════════════════════════════════════════════════════════ */
html,body{background:var(--bg);}
body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;letter-spacing:-.008em;}
button,input,select{font-family:inherit;}
select{appearance:none;-webkit-appearance:none;min-height:32px;max-width:100%;padding:5px 31px 5px 10px;border:1px solid var(--btn-border);border-radius:var(--radius-control);background-color:var(--btn-bg);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.25 6 6.25l5-5' fill='none' stroke='%238e8e93' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;background-size:10px 7px;color:var(--text);cursor:pointer;text-overflow:ellipsis;transition:border-color .16s ease,background-color .16s ease,box-shadow .16s ease;}
select:hover{border-color:color-mix(in srgb,var(--accent) 42%,var(--btn-border));background-color:var(--hover-bg);}
select:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px rgba(0,122,255,.14);}
select:disabled{cursor:not-allowed;opacity:.5;background-color:var(--surface-muted);}
[data-theme="dark"] select{color-scheme:dark;}
.etf-chart-controls select{background-color:var(--btn-bg);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.25 6 6.25l5-5' fill='none' stroke='%238e8e93' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;background-size:10px 7px;}
button{touch-action:manipulation;-webkit-tap-highlight-color:transparent;}
button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid rgba(0,122,255,.22);outline-offset:2px;}
::selection{background:rgba(0,122,255,.18);}
*{scrollbar-width:thin;scrollbar-color:rgba(120,120,128,.36) transparent;}
*::-webkit-scrollbar{width:9px;height:9px;}
*::-webkit-scrollbar-track{background:transparent;}
*::-webkit-scrollbar-thumb{background:rgba(120,120,128,.32);border:2px solid transparent;border-radius:999px;background-clip:padding-box;}
*::-webkit-scrollbar-thumb:hover{background:rgba(120,120,128,.48);border:2px solid transparent;background-clip:padding-box;}

/* 应用框架与侧边栏 */
.sidebar{background:var(--sidebar-bg);border-right:1px solid var(--border);box-shadow:1px 0 0 rgba(255,255,255,.28);backdrop-filter:var(--material-filter);-webkit-backdrop-filter:var(--material-filter);}
[data-theme="dark"] .sidebar{box-shadow:1px 0 0 rgba(255,255,255,.025);}
.sidebar-header{min-height:60px;padding:0 12px;border-bottom:1px solid var(--border);}
.sidebar-logo{left:14px;height:60px;line-height:normal;display:flex;align-items:center;gap:9px;font-size:15px;font-weight:680;letter-spacing:-.025em;}
.brand-mark{width:25px;height:25px;display:grid;place-items:center;border-radius:8px;color:var(--accent);background:rgba(0,122,255,.1);box-shadow:inset 0 0 0 1px rgba(0,122,255,.08);}
.brand-mark svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;}
.sidebar-toggle{right:9px;width:34px;height:34px;border-radius:10px;transition:background .16s ease;}
.sidebar-toggle:hover{background:var(--hover-bg);}
.sidebar-toggle .line{left:8px;top:16px;width:18px;height:1.5px;background:var(--text3);}
.nav-list{padding:14px 9px;display:flex;flex-direction:column;gap:5px;}
.nav-item{position:relative;gap:11px;margin:0;padding:10px 11px;border:0;border-radius:12px;color:var(--sidebar-text);font-size:13px;font-weight:480;transition:background-color .16s ease,color .16s ease,transform .16s ease;}
.nav-item:hover{background:rgba(120,120,128,.09);}
.nav-item.active{color:var(--sidebar-active);background:var(--sidebar-hover);border:0;font-weight:620;box-shadow:inset 0 0 0 1px rgba(0,122,255,.045);}
.nav-item:active{transform:scale(.985);}
.nav-item .nav-icon{width:22px;height:22px;display:grid;place-items:center;font-size:0;color:currentColor;}
.nav-item .nav-icon::before{content:"";display:block;width:18px;height:18px;background:currentColor;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;}
.nav-item[data-id="global"] .nav-icon::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M3.5 9h17M3.5 15h17M12 3c2.4 2.5 3.6 5.5 3.6 9S14.4 18.5 12 21M12 3C9.6 5.5 8.4 8.5 8.4 12s1.2 6.5 3.6 9'/%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M3.5 9h17M3.5 15h17M12 3c2.4 2.5 3.6 5.5 3.6 9S14.4 18.5 12 21M12 3C9.6 5.5 8.4 8.5 8.4 12s1.2 6.5 3.6 9'/%3E%3C/g%3E%3C/svg%3E");}
.nav-item[data-id="watchlist"] .nav-icon::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M3 17l5-5 3 3 6-8 4 3' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M3 17l5-5 3 3 6-8 4 3' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");}
.nav-item[data-id="lof"] .nav-icon::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='black' stroke-width='1.8' stroke-linejoin='round'%3E%3Cpath d='M4 20V10h4v10M10 20V4h4v16M16 20v-7h4v7'/%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='black' stroke-width='1.8' stroke-linejoin='round'%3E%3Cpath d='M4 20V10h4v10M10 20V4h4v16M16 20v-7h4v7'/%3E%3C/g%3E%3C/svg%3E");}
.nav-item[data-id="valuation"] .nav-icon::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 19V5M4 19h16M7 15l4-5 3 2 5-7'/%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 19V5M4 19h16M7 15l4-5 3 2 5-7'/%3E%3C/g%3E%3C/svg%3E");}
.nav-item[data-id="signals"] .nav-icon::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 17l4-4 3 2 4-7 3 3 4-5'/%3E%3Ccircle cx='7' cy='13' r='1' fill='black' stroke='none'/%3E%3Ccircle cx='14' cy='8' r='1' fill='black' stroke='none'/%3E%3Ccircle cx='21' cy='6' r='1' fill='black' stroke='none'/%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 17l4-4 3 2 4-7 3 3 4-5'/%3E%3Ccircle cx='7' cy='13' r='1' fill='black' stroke='none'/%3E%3Ccircle cx='14' cy='8' r='1' fill='black' stroke='none'/%3E%3Ccircle cx='21' cy='6' r='1' fill='black' stroke='none'/%3E%3C/g%3E%3C/svg%3E");}
.nav-item[data-id="etf-monitor"] .nav-icon::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 19V5M4 19h16M8 16v-4h3v4M13 16V8h3v8M18 16V4h2v12'/%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 19V5M4 19h16M8 16v-4h3v4M13 16V8h3v8M18 16V4h2v12'/%3E%3C/g%3E%3C/svg%3E");}
.sidebar.collapsed .nav-item{padding:9px 0;border-radius:11px;}
.sidebar.collapsed .nav-item .nav-icon{font-size:0;}
.sidebar-footer{padding:10px;border-top:1px solid var(--border);}
.theme-toggle{min-height:38px;background:var(--material-bg);border:1px solid var(--btn-border);border-radius:999px;color:var(--text2);box-shadow:var(--shadow-control);backdrop-filter:var(--material-filter);-webkit-backdrop-filter:var(--material-filter);transition:background .16s ease,color .16s ease,transform .16s ease;}
.theme-toggle:hover{background:var(--hover-bg);color:var(--text);}
.theme-toggle:active{transform:scale(.98);}
.theme-icon{width:16px;height:16px;display:grid;place-items:center;font-size:0!important;}
.sidebar-footer{display:grid;gap:8px;}
.sidebar-footer-controls{display:flex;align-items:center;gap:8px;min-width:0;}
.sidebar-footer-controls .theme-toggle{width:auto;min-width:0;flex:1 1 auto;}
.pwa-refresh-sidebar{width:38px;height:38px;flex:0 0 38px;display:grid;place-items:center;padding:0;border:1px solid var(--btn-border);border-radius:11px;background:var(--material-bg);color:var(--text2);box-shadow:var(--shadow-control);backdrop-filter:var(--material-filter);-webkit-backdrop-filter:var(--material-filter);cursor:pointer;transition:background .16s ease,color .16s ease,transform .16s ease;}
.pwa-refresh-sidebar:hover{background:var(--hover-bg);color:var(--text);}
.pwa-refresh-sidebar:active{transform:scale(.96);}
.pwa-refresh-sidebar:disabled{opacity:.7;cursor:default;}
.pwa-refresh-sidebar>span{width:17px;height:17px;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20 6v5h-5l1.9-1.9A6.8 6.8 0 1 0 18.8 16l1.7 1A8.8 8.8 0 1 1 18.3 7.7L20 6Z'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20 6v5h-5l1.9-1.9A6.8 6.8 0 1 0 18.8 16l1.7 1A8.8 8.8 0 1 1 18.3 7.7L20 6Z'/%3E%3C/svg%3E") center/contain no-repeat;}
.pwa-refresh-sidebar.is-spinning>span{animation:pwa-refresh-spin .8s linear infinite;}
@keyframes pwa-refresh-spin{to{transform:rotate(360deg);}}
.file-snapshot-status[hidden]{display:none!important;}
.file-snapshot-status{position:static;display:block;width:100%;max-width:100%;padding:7px 9px;border:1px solid rgba(0,122,255,.28);border-radius:10px;background:var(--material-bg);color:var(--text2);box-shadow:var(--shadow-control);backdrop-filter:var(--material-filter);-webkit-backdrop-filter:var(--material-filter);font-size:11px;line-height:1.3;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.data-health-status{width:100%;max-width:100%;border:1px solid var(--btn-border);border-radius:10px;background:var(--material-bg);color:var(--text2);box-shadow:var(--shadow-control);backdrop-filter:var(--material-filter);-webkit-backdrop-filter:var(--material-filter);font-size:11px;line-height:1.35;overflow:hidden;}
.data-health-status>summary{padding:7px 9px;cursor:pointer;list-style:none;font-weight:620;text-align:center;user-select:none;}
.data-health-status>summary::-webkit-details-marker{display:none;}
.data-health-status>summary::before{content:'◉';margin-right:5px;color:var(--accent);font-size:9px;}
.data-health-list{display:grid;gap:5px;max-height:220px;overflow:auto;padding:0 8px 8px;overscroll-behavior:contain;}
.data-health-item{display:grid;gap:1px;padding-top:5px;border-top:1px solid var(--border);min-width:0;}
.data-health-item strong{font-size:10px;color:var(--text);font-weight:620;}
.data-health-item span,.data-health-item small{font-size:9px;color:var(--text3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.data-health-item[data-state="当天数据完整"] strong{color:var(--down-color);}
.data-health-item[data-state="采集失败"] strong,.data-health-item[data-state="暂无可用数据"] strong{color:var(--up-color);}
.sidebar.collapsed .data-health-status{width:36px;background:transparent;box-shadow:none;border-color:transparent;}
.sidebar.collapsed .data-health-status>summary{padding:7px 3px;font-size:0;}
.sidebar.collapsed .data-health-status>summary::before{margin:0;font-size:14px;}
.sidebar.collapsed .data-health-status .data-health-list{display:none;}
.sidebar.collapsed .sidebar-footer-controls{display:grid;gap:8px;}
.pwa-install-btn{border:1px solid var(--btn-border);background:var(--material-bg);color:var(--accent);box-shadow:var(--shadow-control);backdrop-filter:var(--material-filter);-webkit-backdrop-filter:var(--material-filter);cursor:pointer;font:inherit;font-weight:620;transition:background .16s ease,color .16s ease,transform .16s ease;}
.pwa-install-btn:hover{background:var(--hover-bg);color:var(--accent);}
.pwa-install-btn:active{transform:scale(.98);}
.pwa-install-sidebar{width:100%;min-height:38px;display:flex;align-items:center;justify-content:center;gap:8px;padding:6px 10px;border-radius:999px;white-space:nowrap;overflow:hidden;}
.pwa-install-sidebar>span:first-child{font-size:16px;line-height:1;}
.sidebar.collapsed .pwa-install-sidebar{width:36px;padding:6px;}
.sidebar.collapsed .pwa-install-sidebar>span:last-child{display:none;}
.pwa-notice[hidden],.pwa-ios-help[hidden],.pwa-install-btn[hidden],.pwa-notice button[hidden]{display:none!important;}
.pwa-notice{position:fixed;z-index:1200;left:50%;bottom:16px;width:calc(100% - 16px);max-width:520px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid var(--border);border-radius:14px;background:var(--material-bg);color:var(--text);box-shadow:0 12px 32px rgba(15,23,42,.18);backdrop-filter:var(--material-filter);-webkit-backdrop-filter:var(--material-filter);transform:translateX(-50%);font-size:13px;}
.pwa-notice>span{min-width:0;line-height:1.45;}
.pwa-notice[data-kind="offline"]{border-color:rgba(225,112,85,.38);}
.pwa-notice[data-kind="error"]{border-color:rgba(231,76,60,.38);}
.pwa-notice[data-kind="updating"]{border-color:rgba(0,122,255,.38);}
.pwa-notice-actions{display:flex;flex:0 0 auto;gap:7px;}
.pwa-notice-actions button,.pwa-ios-help button{min-height:34px;padding:6px 11px;border:1px solid var(--btn-border);border-radius:10px;background:var(--btn-bg);color:var(--text2);font:inherit;font-size:12px;font-weight:620;cursor:pointer;}
#pwa-update-now,.pwa-ios-help button{border-color:transparent;background:var(--accent);color:#fff;}
.pwa-ios-help{position:fixed;z-index:1250;inset:0;display:grid;place-items:center;padding:20px;background:rgba(10,10,12,.28);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);}
.pwa-ios-help-card{width:min(100%,360px);padding:18px;border:1px solid var(--border);border-radius:16px;background:var(--card-bg);color:var(--text);box-shadow:0 16px 44px rgba(15,23,42,.24);}
.pwa-ios-help-card strong{display:block;font-size:16px;}
.pwa-ios-help-card p{margin:8px 0 16px;color:var(--text2);font-size:13px;line-height:1.55;}
.theme-icon::before{content:"";width:15px;height:15px;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20 15.5A8.5 8.5 0 0 1 8.5 4 8.5 8.5 0 1 0 20 15.5Z' fill='black'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20 15.5A8.5 8.5 0 0 1 8.5 4 8.5 8.5 0 1 0 20 15.5Z' fill='black'/%3E%3C/svg%3E") center/contain no-repeat;}
[data-theme="dark"] .theme-icon::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M2 12h2M20 12h2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M19.1 4.9l-1.4 1.4M6.3 17.7l-1.4 1.4'/%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M2 12h2M20 12h2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M19.1 4.9l-1.4 1.4M6.3 17.7l-1.4 1.4'/%3E%3C/g%3E%3C/svg%3E");}
.mobile-menu-btn{width:38px;height:38px;padding:0;border-radius:11px;background:var(--material-bg);border-color:var(--btn-border);box-shadow:var(--shadow-control);backdrop-filter:var(--material-filter);-webkit-backdrop-filter:var(--material-filter);}
.sidebar-overlay{background:rgba(10,10,12,.28);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);}
.main,.panel{background:var(--bg);}

/* 通用标题、卡片、按钮与输入控件 */
.top-scroll{padding:14px 18px 8px;}
.header{min-height:44px;padding:2px 0 6px;gap:11px;}
.header h1{font-size:22px;font-weight:700;letter-spacing:-.035em;}
.header .time{font-size:11px;}
.summary-cards{gap:12px;margin:8px 20px 10px;}
.summary-card{min-height:96px;padding:14px 18px;background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius-card);box-shadow:var(--shadow-card);}
.summary-card .val{font-size:23px;font-weight:720;letter-spacing:-.025em;font-variant-numeric:tabular-nums;}
.summary-card .val.up-color{color:var(--up-color);}.summary-card .val.down-color{color:var(--down-color);}
.summary-card .lbl{font-size:11px;margin-top:4px;}
.filter-bar{margin:6px 20px 8px;padding:6px;background:var(--material-bg);border:1px solid var(--border);border-radius:13px;box-shadow:var(--shadow-control);backdrop-filter:var(--material-filter);-webkit-backdrop-filter:var(--material-filter);}
.filter-bar input,.iv-table-head input{border:1px solid transparent;background:var(--surface-muted);border-radius:9px;box-shadow:inset 0 0 0 1px rgba(60,60,67,.05);transition:border-color .16s ease,box-shadow .16s ease,background .16s ease;}
.filter-bar input{min-height:32px;padding:6px 11px;}
.filter-bar input:focus,.iv-table-head input:focus{border-color:rgba(0,122,255,.5);background:var(--card-bg);box-shadow:0 0 0 3px rgba(0,122,255,.12);}
#sf-date-selector{min-height:28px;padding:3px 26px 3px 9px!important;border:1px solid var(--btn-border)!important;border-radius:8px!important;background-color:var(--btn-bg)!important;color:var(--text2)!important;box-shadow:var(--shadow-control);}
#sf-date-selector:hover{border-color:rgba(0,122,255,.34)!important;color:var(--text)!important;}
.source-status-badge{border-radius:999px;border-color:rgba(255,159,10,.25);background:rgba(255,159,10,.1);color:#9a5400;}
[data-theme="dark"] .source-status-badge{border-color:rgba(255,159,10,.22);background:rgba(255,159,10,.12);color:#ffb340;}
.filter-btn,.expand-btn,.cf-widget-btn,.sf-tab,.mf-tab,.mf-rank-tab,.gi-range-btn{transition:background-color .16s ease,color .16s ease,border-color .16s ease,box-shadow .16s ease,transform .16s ease;}
.filter-btn{min-height:32px;padding:5px 14px;border:1px solid var(--btn-border);border-radius:9px;background:var(--btn-bg);color:var(--btn-text);}
.filter-btn:hover{border-color:rgba(0,122,255,.38);color:var(--accent);background:var(--hover-bg);}
.filter-btn.active{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 3px 10px rgba(0,122,255,.2);}
.filter-btn:active,.expand-btn:active,.cf-widget-btn:active,.sf-tab:active,.mf-tab:active,.mf-rank-tab:active,.gi-range-btn:active{transform:scale(.97);}
.tag{border-radius:999px;padding:2px 7px;}
.tag-open{background:rgba(52,199,89,.1);color:#248a3d}.tag-limit{background:rgba(255,159,10,.12);color:#b25000}.tag-paused{background:rgba(255,59,48,.1);color:#c9342c}
[data-theme="dark"] .tag-open{color:#56d66f}[data-theme="dark"] .tag-limit{color:#ffb340}[data-theme="dark"] .tag-paused{color:#ff6961}
.slider-bar{padding:6px 0 8px;background:transparent;}
.slider-range input[type=range]{height:5px;background:var(--slider-track);}
.slider-range input[type=range]::-webkit-slider-thumb{width:17px;height:17px;background:var(--accent);border:3px solid var(--card-bg);box-shadow:0 1px 4px rgba(0,0,0,.2);}
.expand-btn{min-height:32px;padding:5px 14px;background:var(--accent);border-radius:9px;box-shadow:0 3px 10px rgba(0,122,255,.2);}
.expand-btn:hover{background:#0877df;}
[data-theme="dark"] .expand-btn:hover{background:#1689f8;}

/* LOF 表格采用轻量吸顶表头 */
.table-wrap{margin:0 20px 16px;padding:0;background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius-card);box-shadow:var(--shadow-card);}
.sticky-head{background:var(--th-bg);border-radius:var(--radius-card) var(--radius-card) 0 0;backdrop-filter:saturate(160%) blur(16px);-webkit-backdrop-filter:saturate(160%) blur(16px);}
.head-table th{background:var(--th-bg);color:var(--th-text);font-weight:600;border-bottom:1px solid var(--border);}
.head-table th:hover{background:var(--hover-bg);filter:none;color:var(--accent);}
.body-table td{border-bottom:1px solid var(--border);font-variant-numeric:tabular-nums;}
.body-table tbody tr{transition:background-color .13s ease;}
.body-table tbody tr:hover{background:var(--hover-bg)!important;}
[data-theme="dark"] .body-table tbody tr:hover{background:var(--hover-bg)!important;}
.premium-up{color:var(--up-color);}.premium-down{color:var(--down-color);}

/* 资金流向与通用数据卡片 */
.cf-widget{background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius-card);box-shadow:var(--shadow-card);}
.cf-widget-hdr{min-height:44px;padding:8px 13px;border-bottom:1px solid var(--border);background:transparent;}
.cf-widget-title{font-size:13px;font-weight:650;letter-spacing:-.015em;}
.cf-widget-btn{--cf-widget-btn-size:29px;inline-size:var(--cf-widget-btn-size);block-size:var(--cf-widget-btn-size);min-inline-size:var(--cf-widget-btn-size);min-block-size:var(--cf-widget-btn-size);aspect-ratio:1 / 1;flex:0 0 var(--cf-widget-btn-size);box-sizing:border-box;display:inline-grid;place-items:center;padding:0;border:1px solid var(--btn-border);border-radius:9px;background:var(--btn-bg);color:var(--btn-text);font-size:13px;box-shadow:var(--shadow-control);}
.cf-widget-btn:hover{background:var(--hover-bg);border-color:rgba(0,122,255,.28);color:var(--accent);}
.sf-tab,.mf-tab{min-height:28px;padding:3px 11px;border:1px solid transparent;border-radius:8px;background:transparent;}
.sf-tab:hover,.mf-tab:hover{background:rgba(120,120,128,.09);}
.sf-tab.active,.mf-tab.active{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 2px 8px rgba(0,122,255,.18);}
.mf-rank-tab{border-radius:7px;padding:2px 9px;}
.sf-rank-row{border-radius:8px;}
.cf-backdrop{background:rgba(10,10,12,.32);backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px);}
[data-theme="dark"] .cf-backdrop{background:rgba(0,0,0,.56);}

/* 环球页面中除地图外的卡片参与新视觉系统 */
.gi-widget:not(.gi-map-widget){border-radius:var(--radius-card);box-shadow:var(--shadow-card);}
.gi-table th{background:var(--th-bg);}
.gi-table tbody tr{transition:background-color .13s ease;}
.gi-table tbody tr:hover{background:var(--hover-bg);}

/* 行业估值页面统一公共材质 */
.iv-toolbar,.iv-stats-card,.iv-chart-card,.iv-table-card{border-radius:var(--radius-card);box-shadow:var(--shadow-card);}
.iv-toolbar{background:var(--material-bg);backdrop-filter:var(--material-filter);-webkit-backdrop-filter:var(--material-filter);}
.iv-select-wrap{border:0;border-radius:0;background:transparent;box-shadow:none;}
.iv-segment{background:var(--surface-muted);border-color:transparent;border-radius:11px;}
.iv-segment button{border-radius:8px;}
.iv-segment button.active{background:var(--card-bg);color:var(--accent);box-shadow:var(--shadow-control);}
.iv-level-tabs button.active,#iv-metric-tabs button.active,#iv-range-tabs button.active{background:var(--accent);color:#fff;box-shadow:0 2px 8px rgba(0,122,255,.2);}
.iv-table-head input{background:var(--surface-muted);}
.iv-table th{background:var(--th-bg);}
[data-theme="dark"] .iv-toolbar,[data-theme="dark"] .iv-stats-card,[data-theme="dark"] .iv-chart-card,[data-theme="dark"] .iv-table-card{box-shadow:var(--shadow-card);}

/* ════════════════════════════════════════════════════════════
 * Apple 风格页面层（阶段 3/4/5）
 * 页面信息层级、数据组件细节、响应式与微交互。
 * 环球指数地图本体由下一节保护区覆盖，不参与本段改造。
 * ════════════════════════════════════════════════════════════ */

/* 阶段 3：页面级信息层级 */
.page-heading{flex:0 0 auto;display:flex;align-items:flex-end;justify-content:space-between;gap:18px;padding:0 4px 12px;color:var(--text);}
.page-heading h1{margin:0;font-size:24px;line-height:1.15;font-weight:720;letter-spacing:-.04em;}
.page-heading p{margin:4px 0 0;color:var(--text3);font-size:11px;letter-spacing:0;}
.page-heading-note{color:var(--text3);font-size:10px;white-space:nowrap;}

.cf-page{gap:0;overflow:hidden;background:var(--bg);}
.cf-dashboard-grid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:minmax(0,1.25fr) minmax(0,.85fr);gap:14px!important;}
.cf-side-stack{display:contents!important;}
#sf-widget{grid-column:1 / -1;grid-row:1;}
#cf-widget{grid-column:1;grid-row:2;}
#mf-widget{grid-column:2;grid-row:2;}

#panel-lof{padding-top:0;}
#panel-lof .top-scroll{max-height:none;padding:12px 18px 6px;overflow:visible;}
#panel-lof .header{justify-content:space-between;padding:3px 2px 7px;text-align:left;}
#panel-lof .header h1{font-size:24px;}
#panel-lof .header .time{text-align:right;line-height:1.7;}
#panel-lof .summary-cards{margin:6px 0 10px;width:100%;}
#panel-lof .filter-bar{margin:0;width:100%;}
#panel-lof .slider-bar{width:auto;margin:0 18px;padding:8px 0 10px;}
#panel-lof .table-wrap{margin:0 18px 18px;}

.iv-page{gap:12px;padding:16px 18px 18px;}
.iv-toolbar{padding:12px 15px;}
.iv-detail-grid{grid-template-columns:240px minmax(0,1fr);gap:12px;}
.iv-table-card{flex-basis:min(252px,29vh);}

/* 阶段 4：统计卡、排行榜、表格与非地图数据组件 */
.summary-card{position:relative;align-items:flex-start;text-align:left;overflow:hidden;}
.summary-card::after{content:"";position:absolute;top:15px;right:16px;width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 5px rgba(0,122,255,.08);}
.summary-card:nth-child(1)::after{background:var(--up-color);box-shadow:0 0 0 5px rgba(255,59,48,.08);}
.summary-card:nth-child(2)::after{background:var(--down-color);box-shadow:0 0 0 5px rgba(52,199,89,.08);}
.summary-card:nth-child(4)::after{background:#af52de;box-shadow:0 0 0 5px rgba(175,82,222,.08);}
.summary-card .lbl{order:-1;margin:0 22px 9px 0;color:var(--text3);font-size:11px;font-weight:540;}
.summary-card .val{line-height:1.05;}
#card-up,#card-down{font-variant-numeric:tabular-nums;}

.filter-bar{gap:5px;}
.filter-bar input{margin-left:4px;}
.slider-labels>span:first-child,.slider-labels>span:last-child{font-size:9px;font-weight:650;letter-spacing:.06em;}
.expand-btn{display:inline-flex;align-items:center;justify-content:center;gap:5px;}

.head-table th,.body-table td{padding-top:8px;padding-bottom:8px;}
.head-table th{font-size:12px;letter-spacing:.005em;}
.body-table tbody tr:last-child td{border-bottom:0;}
.body-table td.code{font-family:"SFMono-Regular",Consolas,monospace;font-size:12px;}
.body-table td.name{font-weight:560;}
.premium-up,.premium-down{font-weight:680;}

#panel-watchlist .cf-widget{border-color:var(--border);box-shadow:var(--shadow-card);}
#panel-watchlist .cf-widget-hdr{min-height:46px;padding:8px 13px;}
#panel-watchlist .cf-widget-body{padding:7px 10px 10px;}
#panel-watchlist .sf-widget-body{grid-template-columns:minmax(0,3fr) minmax(260px,2fr);gap:14px;padding:10px 12px 12px;}
#panel-watchlist .sf-ranking{padding:0;border:0;border-radius:12px;background:var(--surface-muted);overflow:hidden;}
.sf-rank-head{padding:8px 10px;color:var(--text3);background:rgba(120,120,128,.055);font-weight:600;}
.sf-rank-groups{gap:0;}
.sf-rank-group{padding:0 5px 5px;}
.sf-rank-group+.sf-rank-group{border-top:1px solid var(--border);}
.sf-rank-group-title{padding:7px 7px 4px;color:var(--text2);font-size:10px;letter-spacing:.01em;}
.sf-rank-row{padding:3px 7px;}
.sf-rank-row:focus-visible{outline:2px solid rgba(0,122,255,.38);outline-offset:-2px;}

.mf-latest-panel{padding:8px 9px 6px;}
.mf-stats-area{gap:6px;padding:10px 8px;border:1px solid var(--border);border-radius:12px;background:var(--surface-muted);}
.mf-value{font-size:27px;letter-spacing:-.035em;font-variant-numeric:tabular-nums;}
.mf-sub-row{gap:18px;}
.mf-rank-section{margin-top:8px;}
.mf-rank-tabs{padding:2px;border-radius:9px;background:var(--surface-muted);align-self:flex-start;}
.mf-rank-tab{min-height:23px;border:0;border-radius:7px;padding:2px 9px;}
.mf-rank-table tbody tr{transition:background-color .13s ease;}
.mf-rank-table tbody tr:hover{background:var(--hover-bg);}
.mf-rank-table tbody tr:nth-child(even){background:rgba(120,120,128,.035);}
.mf-rank-table tbody tr:nth-child(even):hover{background:var(--hover-bg);}

.gi-table-widget>.cf-widget-hdr{min-height:44px;padding:8px 12px;}
.gi-table-body{padding:2px 7px 8px;}
.gi-table{font-variant-numeric:tabular-nums;}
.gi-table th{padding:8px 7px;font-size:10px;letter-spacing:.015em;}
.gi-table td{padding:7px;border-bottom-color:rgba(60,60,67,.09);}
.gi-table tbody tr:last-child td{border-bottom:0;}
.gi-table tbody tr{border-radius:8px;}
.gi-overview{padding:12px 15px 10px;}
.gi-overview-head{margin-bottom:8px;}
.gi-overview-metric{padding:0 16px;}
.gi-overview-metric strong{font-size:21px;letter-spacing:-.035em;font-variant-numeric:tabular-nums;}
.gi-breadth-bar{height:8px;}

.iv-stats-card{padding:17px 16px;background:linear-gradient(180deg,var(--card-bg),var(--material-bg));}
.iv-industry-title strong{font-size:18px;letter-spacing:-.02em;}
.iv-current{margin:13px 0 10px;padding:13px 12px;border:1px solid var(--border);border-radius:12px;background:var(--surface-muted);}
.iv-current strong{font-size:30px;font-variant-numeric:tabular-nums;}
.iv-stats-list{gap:4px;}
.iv-stats-list>div{padding:4px 2px;border-radius:6px;}
.iv-stats-list>div:hover{background:rgba(120,120,128,.055);}
.iv-threshold-guide{gap:7px;margin-top:13px;padding-top:12px;}
.iv-chart-card{padding:13px 15px 10px;}
.iv-chart-head{min-height:30px;align-items:center;padding-bottom:8px;}
.iv-chart-head strong,.iv-table-head strong{font-size:14px;}
.iv-table-head{min-height:48px;padding:9px 13px;}
.iv-table th{padding-top:9px;padding-bottom:9px;background:var(--th-bg);backdrop-filter:saturate(160%) blur(14px);-webkit-backdrop-filter:saturate(160%) blur(14px);}
.iv-table td{padding-top:8px;padding-bottom:8px;}
.iv-table tbody tr:last-child td{border-bottom:0;}
.iv-percentile-pill{box-shadow:inset 0 0 0 1px rgba(0,122,255,.06);}

/* 阶段 5：夜间层级、微交互、窄屏与可访问性 */
.summary-card,.cf-widget,.gi-widget:not(.gi-map-widget),.iv-toolbar,.iv-stats-card,.iv-chart-card,.iv-table-card{transition:border-color .18s ease,box-shadow .18s ease,background-color .18s ease;}
@media(hover:hover){
  .summary-card:hover,.gi-widget:not(.gi-map-widget):hover,.iv-stats-card:hover,.iv-chart-card:hover,.iv-table-card:hover{border-color:rgba(0,122,255,.2);box-shadow:0 2px 4px rgba(0,0,0,.035),0 16px 38px rgba(15,23,42,.075);}
}
[data-theme="dark"] .summary-card::after{box-shadow:0 0 0 5px rgba(255,255,255,.045);}
[data-theme="dark"] .sf-rank-head,[data-theme="dark"] .mf-rank-table tbody tr:nth-child(even){background:rgba(255,255,255,.025);}
[data-theme="dark"] .iv-current{background:rgba(255,255,255,.035);}
[data-theme="dark"] .gi-table td{border-bottom-color:rgba(235,235,245,.085);}
[data-theme="dark"] select option{background:#242427;color:#f5f5f7;}
#panel-watchlist .cf-widget.expanded{background:var(--card-bg)!important;border-radius:var(--radius-card)!important;box-shadow:0 18px 48px rgba(0,0,0,.24)!important;}

/* 本轮信息密度与固定结构优化 */
#panel-watchlist .sf-rank-head,
#panel-watchlist .sf-rank-row{grid-template-columns:minmax(112px,1fr) 88px 68px;column-gap:8px;}
#panel-watchlist .sf-rank-head{font-size:12px;padding:9px 11px;}
#panel-watchlist .sf-rank-group-title{font-size:12px;padding:8px 9px 5px;}
#panel-watchlist .sf-rank-row{font-size:13px;padding:6px 9px;line-height:1.25;}
#panel-watchlist .sf-rank-index{flex-basis:16px;}
#panel-watchlist .sf-rank-dot{flex-basis:8px;width:8px;height:8px;}
.cf-widget.expanded .sf-rank-head,
.cf-widget.expanded .sf-rank-row{grid-template-columns:minmax(150px,1fr) 116px 86px;}
.cf-widget.expanded .sf-rank-head{font-size:14px;padding:12px 14px;}
.cf-widget.expanded .sf-rank-group-title{font-size:14px;padding:12px 12px 7px;}
.cf-widget.expanded .sf-rank-row{font-size:15px;padding:9px 12px;}

#mf-widget.expanded{padding:20px!important;overflow:hidden!important;}
#mf-widget.expanded .cf-widget-hdr{min-height:52px;padding:7px 8px 12px;}
#mf-widget.expanded .cf-widget-btn{--cf-widget-btn-size:38px;font-size:19px;}
#mf-widget.expanded .mf-tab{min-height:38px;padding:7px 17px;font-size:15px;font-weight:600;}
#mf-widget.expanded .mf-latest-panel{padding:14px 18px 10px;}
#mf-widget.expanded .mf-stats-area{min-height:150px;justify-content:center;gap:12px;padding:20px 24px;}
#mf-widget.expanded .mf-value{font-size:56px;line-height:1;}
#mf-widget.expanded .mf-label{font-size:18px;}
#mf-widget.expanded .mf-sub-row{gap:34px;}
#mf-widget.expanded .mf-sub-label{font-size:16px;}
#mf-widget.expanded .mf-sub-val{font-size:25px;}
#mf-widget.expanded .mf-unit,#mf-widget.expanded .mf-sub-unit{font-size:15px;}
#mf-widget.expanded .mf-change{font-size:15px;}
#mf-widget.expanded .mf-rank-section{margin-top:14px;}
#mf-widget.expanded .mf-rank-tabs{gap:6px;margin-bottom:8px;}
#mf-widget.expanded .mf-rank-tab{min-height:36px;padding:7px 18px;font-size:15px;font-weight:600;}
#mf-widget.expanded .mf-rank-table{font-size:18px;line-height:1.3;}
#mf-widget.expanded .mf-rank-table th,
#mf-widget.expanded .mf-rank-table td{padding:10px 16px;}
#mf-widget.expanded .mf-rank-table th.rank-cell,
#mf-widget.expanded .mf-rank-table td.rank-cell{width:48px;}
#mf-widget.expanded .mf-rank-date,#mf-widget.expanded .mf-date{font-size:15px;}

.gi-table-body{display:flex;align-items:stretch;overflow:hidden;padding:4px 9px 10px;}
.gi-table{height:100%;table-layout:fixed;font-size:13px;}
.gi-table thead{height:42px;}
.gi-table th{font-size:12px;padding:9px 9px;}
.gi-table td{font-size:14px;padding:8px 9px;vertical-align:middle;}
.gi-table th:first-child,.gi-table td:first-child{width:52%;}
.gi-table th:nth-child(2),.gi-table td:nth-child(2){width:25%;}
.gi-table th:nth-child(3),.gi-table td:nth-child(3){width:23%;}
.gi-table tbody tr{height:calc((100% - 42px)/13);}
.gi-drag-handle{cursor:grab;color:var(--text3);font-size:12px;}
.gi-country-badge{display:inline-block;flex:0 0 20px;width:20px;height:20px;border-radius:50%;color:#fff;font-size:9px;text-align:center;line-height:20px;font-weight:700;}
.gi-name-cell{display:flex;align-items:center;gap:7px;min-width:0;white-space:nowrap;}
.gi-index-name{min-width:0;overflow:hidden;text-overflow:ellipsis;font-size:15px;font-weight:600;line-height:1.2;}

@media(min-width:769px){
  .iv-page{overflow:hidden;}
  .iv-toolbar{min-height:58px;flex-wrap:nowrap;overflow:hidden;}
  .iv-heading{flex:0 0 auto;}
  .iv-controls{min-width:0;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;}
  .iv-controls::-webkit-scrollbar{display:none;}
  .iv-detail-grid{flex:1 1 0;min-height:0;}
  .iv-stats-card{overflow:hidden;padding:13px 15px;}
  .iv-industry-title{padding-bottom:10px;}
  .iv-current{margin:8px 0;padding:10px 11px;}
  .iv-stats-list{gap:2px;}
  .iv-stats-list>div{padding:3px 2px;}
  .iv-stats-list .iv-stats-divider{padding-top:8px;margin-top:3px;}
  .iv-threshold-guide{gap:5px;margin-top:9px;padding-top:9px;}
  .iv-table-card{flex:0 0 252px;min-height:252px;}
}

@media(max-width:1180px){
  .iv-controls{justify-content:flex-start;}
}
@media(max-width:900px){
  #panel-lof .header{align-items:flex-start;flex-direction:column;gap:2px;}
  #panel-lof .header .time{text-align:left;}
  #panel-lof .filter-bar{flex-wrap:wrap;}
  #panel-lof .filter-bar input{flex-basis:100%;margin-left:0;order:2;}
  .iv-detail-grid{grid-template-columns:210px minmax(0,1fr);}
}
@media(prefers-contrast:more){
  :root{--border:rgba(60,60,67,.28);--text3:#606066;}
  [data-theme="dark"]{--border:rgba(235,235,245,.26);--text3:#b5b5bb;}
  button:focus-visible,input:focus-visible,select:focus-visible{outline-width:4px;}
}

/* 环球指数地图视觉保护区：继承新页面框架，但卡片内部保持改造前样式 */
.gi-map-widget{
  --card-bg:#fff;--text:#333;--text2:#555;--text3:#888;--border:#e8e8e8;--hover-bg:#f0f4ff;
  --btn-bg:#fff;--btn-border:#ddd;--btn-text:#888;
  background:#fff;border:1px solid #e8e8e8;border-radius:8px;box-shadow:none;letter-spacing:normal;
}
[data-theme="dark"] .gi-map-widget{
  --card-bg:#141419;--text:#e0e0e0;--text2:#ccc;--text3:#999;--border:#252530;--hover-bg:#1a2744;
  --btn-bg:#141419;--btn-border:#252530;--btn-text:#999;
  background:#141419;border-color:#252530;box-shadow:none;
}
.gi-map-widget>.cf-widget-hdr{min-height:0;padding:5px 10px;background:var(--card-bg);}
.gi-map-widget .cf-widget-title{font-size:12px;font-weight:600;letter-spacing:normal;}
.gi-map-widget .cf-widget-btn{border-radius:4px;background:var(--btn-bg);border-color:var(--btn-border);color:var(--btn-text);box-shadow:none;transition:none;}
.gi-map-widget .cf-widget-btn:hover{background:var(--hover-bg);color:var(--text);border-color:var(--btn-border);}
.gi-map-widget .cf-widget-btn:active{transform:none;}
.gi-map-widget.expanded{border-radius:12px;box-shadow:0 12px 36px rgba(15,23,42,.18);}

/* 中小窗口响应式适配：宽屏布局保持不变，窗口缩小时优先保证数据完整可见。 */
@media(min-width:769px) and (max-width:1180px){
  /* 中等宽度仍尊重真实的侧栏 collapsed 状态。 */
  .sidebar:not(.collapsed){width:220px;}
  .sidebar.collapsed{width:68px;}
  .sidebar-toggle{display:block;}
  .sidebar.collapsed .sidebar-toggle{right:16px;}
  .sidebar:not(.collapsed) .nav-item{justify-content:flex-start;gap:11px;padding:10px 11px;}
  .sidebar:not(.collapsed) .nav-item .nav-label{display:inline;width:auto;opacity:1;overflow:visible;}
  .sidebar.collapsed .nav-item{justify-content:center;gap:0;padding:9px 0;}
  .sidebar.collapsed .nav-item .nav-label{display:none;width:0;opacity:0;overflow:hidden;}
  .sidebar:not(.collapsed) .sidebar-footer{padding:10px;}
  .sidebar.collapsed .sidebar-footer{padding:10px 16px;}
  .sidebar.collapsed .sidebar-footer-controls{display:grid;grid-template-columns:36px;justify-items:center;gap:8px;}
  .sidebar.collapsed .sidebar-footer-controls .theme-toggle,
  .sidebar.collapsed .pwa-refresh-sidebar,
  .sidebar.collapsed .pwa-install-sidebar{width:36px;margin:0;}
  .sidebar.collapsed .pwa-refresh-sidebar{flex-basis:36px;}
  .cf-backdrop{left:220px;}
  .sidebar.collapsed~.main .cf-backdrop{left:68px;}
  .sidebar.collapsed~.main .gi-map-widget.expanded,
  .sidebar.collapsed~.main #gi-chart-expanded,
  .sidebar.collapsed~.main .iv-chart-card.expanded,
  .sidebar.collapsed~.main .iv-table-card.expanded,
  .sidebar.collapsed~.main .ms-card.expanded{left:70px;}
  .gi-map-widget.expanded,#gi-chart-expanded,
  .iv-chart-card.expanded,.iv-table-card.expanded,.ms-card.expanded{left:238px;}

  /* 环球指数在窄桌面单列，概览拥有独立且可读的底部行。 */
  #panel-global{overflow-x:hidden!important;overflow-y:auto!important;}
  #panel-global>div:first-child{height:auto!important;min-height:100%!important;padding:14px!important;}
  .gi-grid{flex:none;width:100%;height:auto!important;min-height:0;grid-template-columns:minmax(0,1fr);grid-template-rows:clamp(320px,52dvh,480px) clamp(360px,58dvh,520px) clamp(190px,30dvh,220px);gap:12px;}
  .gi-map-widget{grid-column:1;grid-row:1;}
  .gi-table-widget{grid-column:1;grid-row:2;}
  .gi-footer-space{grid-column:1;grid-row:3;height:clamp(190px,30dvh,220px);min-height:190px;}
  .gi-overview-body{grid-template-columns:minmax(0,1.15fr) minmax(250px,.85fr);gap:10px;}
  .gi-overview-metric{padding-left:clamp(4px,1vw,10px);padding-right:clamp(4px,1vw,10px);}
  .gi-overview-metric strong{font-size:clamp(15px,1.8vw,20px);}

  /* 资金流向三张卡纵向排列，但各卡只取自身的明确高度。 */
  .cf-page{overflow-x:hidden!important;overflow-y:auto!important;}
  .cf-dashboard-grid{display:grid!important;width:100%;height:auto!important;min-height:0!important;flex:none!important;grid-template-columns:1fr;grid-template-rows:clamp(360px,55dvh,520px) clamp(280px,42dvh,380px) clamp(400px,55dvh,520px);gap:14px!important;}
  #sf-widget{grid-column:1;grid-row:1;}
  #cf-widget{grid-column:1;grid-row:2;}
  #mf-widget{grid-column:1;grid-row:3;}
  #sf-widget,#cf-widget,#mf-widget,#panel-watchlist .cf-widget-body,#panel-watchlist .sf-chart-pane,#panel-watchlist .sf-ranking{min-width:0;}
  #panel-watchlist .cf-widget-hdr{flex-wrap:wrap;row-gap:6px;}

  .iv-page{overflow-x:hidden;overflow-y:auto;}
  .iv-toolbar{overflow:visible;flex-wrap:wrap;}
  .iv-controls{overflow:visible;flex-wrap:wrap;}
  .iv-detail-grid{flex:0 0 610px;min-height:610px;}
  .iv-table-card{flex:0 0 360px;min-height:300px;}
  .ms-grid{flex:none;min-height:1050px;}
}

@media(min-width:769px) and (max-width:900px){
  .cf-page-heading{align-items:flex-start;flex-wrap:wrap;}
  .cf-page-heading .page-heading-note{white-space:normal;}
  .cf-dashboard-grid{
    grid-template-rows:clamp(620px,80dvh,740px) clamp(280px,42dvh,380px) clamp(400px,55dvh,520px);
  }
  #panel-watchlist .sf-widget-body{
    grid-template-columns:minmax(0,1fr);
    grid-template-rows:minmax(300px,1fr) minmax(0,1fr);
    gap:10px;
  }
  #panel-watchlist .sf-chart-pane{min-height:300px;}
  #panel-watchlist .sf-ranking{
    min-height:0;
    max-height:none;
    overflow:auto;
    border-left:0;
    border-top:1px solid var(--border);
    padding:8px 0 0;
  }
}

@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;}
}

.etf-index-selector{display:flex;align-items:center;flex:1 1 auto;flex-wrap:wrap;gap:4px 9px;min-width:0;}
.etf-index-selector button{display:flex;align-items:center;gap:5px;min-height:28px;padding:3px 2px;border:0;background:transparent;color:var(--text2);font:inherit;font-size:10px;line-height:1;cursor:pointer;white-space:nowrap;}
.etf-index-selector button i{width:10px;height:10px;flex:0 0 auto;border:2px solid var(--etf-index-color);border-radius:50%;background:var(--etf-index-color);}
.etf-index-selector button.is-hidden i{background:transparent;}
.etf-index-selector button:hover{color:var(--text);}
.etf-index-selector button:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px;}
.sidebar.collapsed .file-snapshot-status{width:36px;padding:7px 3px;font-size:0;}
.sidebar.collapsed .file-snapshot-status::before{content:'◌';font-size:14px;line-height:1;}
