/* ============================================================
   理财工作台 WealthDesk · 现代 SaaS 玻璃拟态设计系统
   设计原则：8px 网格 / 毛玻璃 / 柔和阴影 / 圆角卡片 / 清晰层级
   ============================================================ */
:root{
  --font: -apple-system,BlinkMacSystemFont,"PingFang SC","Helvetica Neue","Microsoft YaHei",sans-serif;
  --mono: "SF Mono","JetBrains Mono",Menlo,Consolas,monospace;
  --radius: 16px;
  --radius-sm: 10px;
  --sidebar-w: 232px;
  --ease: cubic-bezier(.25,.6,.3,1);
  --dur: .28s;
}

/* ---------- 主题色板：暗色（默认） ---------- */
[data-theme="dark"]{
  color-scheme: dark;                     /* 原生控件（数字微调/滚动条/自动填充）跟随暗色 */
  --bg: #070b16;
  --bg-grad: radial-gradient(1200px 600px at 85% -10%, rgba(64,120,255,.16), transparent 60%),
             radial-gradient(900px 500px at -10% 20%, rgba(0,212,255,.10), transparent 55%),
             radial-gradient(1000px 600px at 50% 110%, rgba(124,92,255,.12), transparent 60%),
             linear-gradient(160deg,#0a0f1e 0%,#0c1426 45%,#0a1120 100%);
  --glass: rgba(18,26,48,.55);            /* 玻璃面板 */
  --glass-2: rgba(28,40,72,.48);          /* 玻璃面板-次级 */
  --glass-hover: rgba(36,52,92,.55);
  --card: rgba(146,178,255,.055);
  --card-2: rgba(146,178,255,.09);
  --border: rgba(146,178,255,.14);
  --border-strong: rgba(146,178,255,.26);
  --border-soft: rgba(146,178,255,.09);
  --grid: rgba(146,178,255,.09);        /* 图表网格线：细而浅 */
  --axis: rgba(146,178,255,.18);        /* 坐标轴：略强于网格线 */
  --text: #e9edf6;
  --text-2: #aab3c8;
  --muted: #7c869c;
  --accent: #4d8dff;
  --accent-2: #00d4ff;
  --accent-3: #8f6bff;
  --up: #f2545b;      /* 涨 = 红 */
  --down: #2ec27e;    /* 跌 = 绿 */
  --flat: #8b93a7;
  --toast-bg: rgba(20,30,55,.96);
  /* 表单控件（暗色下用深色凹陷底，避免原生白底刺眼） */
  --input-bg: rgba(8,13,26,.62);
  --input-bg-hover: rgba(12,19,36,.72);
  --input-border: rgba(146,178,255,.16);
  --input-text: #dfe6f5;
  --input-ph: #6b7488;
  /* 阴影系统（柔和多层） */
  --shadow-xs: 0 1px 2px rgba(0,0,0,.22), 0 1px 3px rgba(0,0,0,.14);
  --shadow-sm: 0 2px 8px rgba(0,0,0,.25), 0 1px 3px rgba(0,0,0,.18);
  --shadow: 0 8px 32px rgba(0,0,0,.34), 0 2px 8px rgba(0,0,0,.2);
  --shadow-lg: 0 24px 64px rgba(0,0,0,.5), 0 8px 24px rgba(0,0,0,.3);
  --hl: inset 0 1px 0 rgba(255,255,255,.06);   /* 顶部高光内线 */
  --chart-surface: #070b16;                    /* 图表分隔线/描边取色（等于页面底色） */
  --toast-text: #fff;
}

/* ---------- 主题色板：浅色 ---------- */
[data-theme="light"]{
  color-scheme: light;
  --bg: #e9edf6;
  --bg-grad: linear-gradient(160deg,#eef3fb 0%,#e3e9f5 50%,#edf2fa 100%);
  /* 亮色：卡片改实色白 + 内嵌块浅灰蓝，靠底色差与边框建立层次（半透明在白底上等于没有边界） */
  --glass: #fff;
  --glass-2: #f1f5fc;
  --glass-hover: #eef3fb;
  --card: #fff;
  --card-2: #e6edf7;
  --border: rgba(20,40,90,.18);
  --border-strong: rgba(20,40,90,.32);
  --border-soft: rgba(20,40,90,.10);
  --grid: rgba(20,40,90,.10);
  --axis: rgba(20,40,90,.20);
  --chart-surface: #fff;
  --text: #1c2434;
  --text-2: #46506a;
  --muted: #4d586f;
  --accent: #2f6bff;
  --accent-2: #0891b2;
  --accent-3: #6d4fd6;
  /* 涨=红 跌=绿；白底上需压深才能达到 4.5:1 对比度（原 #e03232/#0f9d63 仅 4.49/3.49） */
  --up: #d62b2b;
  --down: #0a8050;
  --flat: #667085;
  --toast-bg: #fff;
  --toast-text: #1c2434;
  /* 表单控件（亮色下保持浅底深字，与原有观感一致） */
  --input-bg: rgba(255,255,255,.92);
  --input-bg-hover: #fff;
  --input-border: rgba(20,40,90,.14);
  --input-text: #1c2434;
  --input-ph: #8a93a6;
  --shadow-xs: 0 1px 2px rgba(30,50,100,.07), 0 1px 3px rgba(30,50,100,.06);
  --shadow-sm: 0 2px 8px rgba(30,50,100,.10), 0 1px 3px rgba(30,50,100,.07);
  --shadow: 0 4px 16px rgba(30,50,100,.10), 0 1px 3px rgba(30,50,100,.06);
  --shadow-lg: 0 12px 32px rgba(30,50,100,.16), 0 4px 12px rgba(30,50,100,.10);
  /* 亮色白卡片不需要白色高光内线（会形成多余亮边），置为无效果的透明阴影 */
  --hl: 0 0 0 rgba(0,0,0,0);
}

*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
html{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent} /* Firefox 滚动条回退 */
body{
  font-family:var(--font);
  background:var(--bg);
  background-image:var(--bg-grad);
  background-attachment:fixed;              /* iOS Safari 不支持 fixed，触屏端下方降级为滚动 */
  color:var(--text);
  font-size:14px;
  line-height:1.6;                      /* 增加行高呼吸感 */
  -webkit-font-smoothing:antialiased;
  -webkit-tap-highlight-color:transparent;  /* 去掉移动端点击系统灰块 */
  transition:background .35s,color .35s;
}
.app{min-height:100vh;min-height:100dvh}  /* dvh：iOS 地址栏收放不跳动（渐进增强） */
@supports (-webkit-touch-callout:none){   /* iOS：背景 fixed 退化，避免滚动抖动 */
  body{background-attachment:scroll}
}

/* ============================================================
   左侧固定边栏（position:fixed，滚动不移动）
   ============================================================ */
.sidebar{
  position:fixed;top:0;left:0;bottom:0;width:var(--sidebar-w);z-index:60;
  display:flex;flex-direction:column;
  padding:24px 16px 16px;
  background:var(--glass);
  backdrop-filter:blur(20px) saturate(1.4);
  -webkit-backdrop-filter:blur(20px) saturate(1.4);
  border-right:1px solid var(--border);
  box-shadow:var(--shadow-sm);
}
.sidebar .brand{
  display:flex;align-items:center;gap:12px;
  padding:0 8px 20px;margin-bottom:16px;
  border-bottom:1px solid var(--border);
}
.sidebar .logo{
  width:34px;height:34px;border-radius:10px;flex-shrink:0;
  display:grid;place-items:center;color:#fff;font-size:16px;
  background:linear-gradient(135deg,var(--accent),var(--accent-3));
  box-shadow:0 6px 18px rgba(77,141,255,.4);
}
.brand-txt{display:flex;flex-direction:column;min-width:0}
.brand-name{font-weight:700;font-size:15px;letter-spacing:.4px;white-space:nowrap}
.brand-en{font-size:10.5px;color:var(--muted);letter-spacing:1.2px;margin-top:2px}

.sidebar .nav{display:flex;flex-direction:column;gap:4px;flex:1}
.sidebar .tab{
  border:0;background:transparent;color:var(--text-2);
  font-size:13.5px;padding:10px 14px;border-radius:10px;cursor:pointer;
  font-family:var(--font);transition:all var(--dur) var(--ease);
  display:flex;align-items:center;gap:11px;text-align:left;white-space:nowrap;
  position:relative;
}
.sidebar .tab .nav-ico{
  width:22px;height:22px;flex-shrink:0;display:grid;place-items:center;
  font-size:15px;border-radius:7px;background:var(--card-2);
  transition:all var(--dur) var(--ease);
}
.sidebar .tab:hover{
  color:var(--text);background:var(--glass-hover);
  transform:translateX(3px);
}
.sidebar .tab:hover .nav-ico{background:var(--card);transform:scale(1.08)}
.sidebar .tab.active{
  color:#fff;
  background:linear-gradient(135deg,rgba(77,141,255,.92),rgba(143,107,255,.88));
  box-shadow:0 6px 18px rgba(77,141,255,.32);
}
.sidebar .tab.active::before{
  content:"";position:absolute;left:-16px;top:50%;transform:translateY(-50%);
  width:4px;height:22px;border-radius:0 4px 4px 0;
  background:linear-gradient(180deg,var(--accent),var(--accent-2));
  box-shadow:0 0 12px rgba(77,141,255,.7);
}
.sidebar .tab.active .nav-ico{background:rgba(255,255,255,.18)}
.side-foot{
  margin-top:16px;padding:12px 8px 0;border-top:1px solid var(--border);
  font-size:10.5px;color:var(--muted);text-align:center;letter-spacing:.3px;
}

/* ============================================================
   顶部栏（仅 5 元素：设置 / 刷新 / 主题 / 语言 / 时间）
   ============================================================ */
.topbar{
  position:sticky;top:0;z-index:50;
  display:flex;align-items:center;justify-content:flex-end;
  margin-left:var(--sidebar-w);
  padding:10px 24px;
  background:var(--glass);
  backdrop-filter:blur(20px) saturate(1.4);
  -webkit-backdrop-filter:blur(20px) saturate(1.4);
  border-bottom:1px solid var(--border);
  box-shadow:var(--shadow-xs);
}
.top-actions{display:flex;align-items:center;gap:10px}
/* 顶栏按钮组：统一收缩行为与留白，避免文字被挤压截断 */
.top-actions .icon-btn{flex-shrink:0}
.top-actions .clock{flex-shrink:0;margin-left:2px}
.icon-btn{
  border:1px solid var(--border);background:var(--glass-2);color:var(--text-2);
  width:36px;height:36px;border-radius:10px;cursor:pointer;font-size:15px;
  display:grid;place-items:center;transition:all var(--dur) var(--ease);font-family:var(--font);
  box-shadow:var(--shadow-xs);
}
.icon-btn:hover{
  color:var(--accent);border-color:var(--accent);
  transform:translateY(-1px) scale(1.05);
  box-shadow:0 4px 14px rgba(77,141,255,.22);
}
.icon-btn:active{transform:scale(.95)}
.lang-btn{width:46px;font-size:12px;font-weight:600}
.clock{font-family:var(--mono);font-size:12px;color:var(--muted);padding:0 4px}

/* ============================================================
   内容区与标题层级
   ============================================================ */
.page{
  margin-left:var(--sidebar-w);
  max-width:1440px;
  padding:24px 32px 48px;
}
.footer{
  margin-left:var(--sidebar-w);
  text-align:center;color:var(--muted);font-size:11px;
  padding:8px 24px 24px;
  display:flex;flex-direction:column;gap:4px;
}

/* 标题层级：h2 卡片标题 → h3 区块标题 → sub-title 小标 */
.card-head{display:flex;align-items:center;gap:10px;margin-bottom:16px;flex-wrap:wrap}
.card-head h2{font-size:16.5px;font-weight:650;display:flex;align-items:center;gap:8px;color:var(--text);letter-spacing:.2px}
.card-head .muted{margin-left:auto}
.bar{
  width:4px;height:17px;border-radius:2px;
  background:linear-gradient(180deg,var(--accent),var(--accent-2));
  box-shadow:0 0 10px rgba(77,141,255,.6);
}
h3{font-size:14.5px;font-weight:600;color:var(--text);line-height:1.5}
h4{font-size:13px;font-weight:600;color:var(--text-2)}
.muted{color:var(--muted);font-size:12px}
.sub-title{font-size:12.5px;color:var(--text-2);margin:12px 0 8px;font-weight:550;letter-spacing:.2px}
.sub-title.up{color:var(--up)}
.sub-title.down{color:var(--down)}
.link{border:0;background:none;color:var(--accent);cursor:pointer;font-size:12.5px;font-family:var(--font);transition:opacity .15s}
.link:hover{text-decoration:underline;opacity:.85}

/* ============================================================
   卡片（玻璃拟态）
   ============================================================ */
.card{
  background:var(--glass);
  border:1px solid var(--border);
  border-radius:var(--radius);
  padding:20px 24px;
  margin-bottom:16px;
  box-shadow:var(--shadow),var(--hl);
  backdrop-filter:blur(18px) saturate(1.3);
  -webkit-backdrop-filter:blur(18px) saturate(1.3);
  transition:box-shadow var(--dur) var(--ease),transform var(--dur) var(--ease);
}
.card:hover{box-shadow:var(--shadow-lg),var(--hl)}

/* ============================================================
   持仓总览
   ============================================================ */
.port-total{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;
  padding:16px;border-radius:var(--radius-sm);
  background:linear-gradient(120deg,rgba(77,141,255,.12),rgba(0,212,255,.06));
  border:1px solid var(--border-strong);
  margin-bottom:16px;
  box-shadow:var(--shadow-xs);
}
.pt-item{display:flex;flex-direction:column;gap:3px}
.pt-label{font-size:11.5px;color:var(--muted)}
.pt-val{font-family:var(--mono);font-size:20px;font-weight:650}
.pt-sub{font-family:var(--mono);font-size:12px}
.port-groups{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px}
.pg-card{
  background:var(--glass-2);border:1px solid var(--border);border-radius:var(--radius-sm);
  padding:14px 16px;cursor:pointer;transition:all var(--dur) var(--ease);box-shadow:var(--shadow-xs);
}
.pg-card:hover{border-color:var(--accent);transform:translateY(-2px);box-shadow:var(--shadow)}
.pg-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.pg-name{font-size:13.5px;font-weight:600}
.pg-count{font-size:11px;color:var(--muted)}
/* 两列等宽网格：今日盈亏 / 持有收益 在每张卡片里都对齐同一条基线 */
.pg-nums{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 16px}
.pg-num b{font-family:var(--mono);font-size:14px;font-weight:600}
.pg-num span{font-size:11px;color:var(--muted);display:block}
.pg-items{margin-top:8px;padding-top:8px;border-top:1px dashed var(--border);display:none}
.pg-card.open .pg-items{display:block}
.pg-item{display:flex;justify-content:space-between;font-size:12px;padding:3px 0;color:var(--text-2)}
.pg-item .nm{max-width:46%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.empty{text-align:center;padding:32px 0;color:var(--muted)}
.empty .btn{margin-top:12px}
.hidden{display:none !important}

/* ============================================================
   指数
   ============================================================ */
.idx-region{margin-bottom:16px}
.idx-region:last-child{margin-bottom:0}
.idx-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px}
.idx-card{
  background:var(--glass-2);border:1px solid var(--border);border-radius:var(--radius-sm);
  padding:12px 14px;position:relative;box-shadow:var(--shadow-xs);
  transition:transform var(--dur) var(--ease),border-color var(--dur);
}
.idx-card:hover{transform:translateY(-2px);border-color:var(--border-strong)}
.idx-name{font-size:12.5px;color:var(--text-2);display:flex;align-items:center;gap:6px}
.idx-price{font-family:var(--mono);font-size:21px;font-weight:650;margin:4px 0 2px}
.idx-pct{font-family:var(--mono);font-size:13px;font-weight:600}
.idx-sub{font-family:var(--mono);font-size:10.5px;color:var(--muted);margin-top:6px}
.session-chip{
  font-size:9.5px;padding:1px 6px;border-radius:20px;border:1px solid var(--border-strong);
  color:var(--accent-2);font-weight:500;
}
.session-chip.pre{color:var(--accent-3);border-color:var(--accent-3)}
.session-chip.regular{color:var(--up);border-color:var(--up)}
.session-chip.post{color:var(--down);border-color:var(--down)}
.session-chip.closed{color:var(--muted)}
.pre-price{margin-left:4px}

/* ============================================================
   情绪
   ============================================================ */
.sent-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:12px}
.sent-card{
  background:var(--glass-2);border:1px solid var(--border);border-radius:var(--radius-sm);
  padding:14px 16px;text-align:center;box-shadow:var(--shadow-xs);
  transition:transform var(--dur) var(--ease);
}
.sent-card:hover{transform:translateY(-2px)}
.sent-card .v{font-family:var(--mono);font-size:23px;font-weight:650}
.sent-card .l{font-size:11.5px;color:var(--muted);margin-top:3px}
.chart-sm{height:130px;margin-top:8px}
.chart-lg{height:340px}
.chart-md{height:300px}

/* ============================================================
   行业
   ============================================================ */
.sec-layout{display:grid;grid-template-columns:1.6fr 1fr;gap:16px}
.sec-left,.sec-right{min-width:0}
/* 加宽最小列宽：238px 时四列会挤压到数值被裁切 */
.sec-flow{display:grid;grid-template-columns:repeat(auto-fit,minmax(272px,1fr));gap:16px;margin-top:16px}
.flow-box{
  background:var(--glass-2);border:1px solid var(--border);border-radius:var(--radius-sm);
  padding:12px 14px;box-shadow:var(--shadow-xs);
}
.flow-row{display:flex;justify-content:space-between;font-size:12px;padding:4px 0;font-family:var(--mono)}
.flow-row .nm{color:var(--text-2);max-width:55%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rank{font-size:10px;color:var(--muted);width:18px;display:inline-block}
.mainline{display:flex;gap:8px;flex-wrap:wrap}
.ml-chip{
  background:linear-gradient(120deg,rgba(242,84,91,.15),rgba(242,84,91,.05));
  border:1px solid rgba(242,84,91,.4);color:var(--up);
  font-size:12px;padding:6px 12px;border-radius:20px;font-weight:500;
}
.ml-chip .w{color:var(--muted);font-weight:400;font-size:11px;font-family:var(--mono)}

/* ============================================================
   新闻
   ============================================================ */
/* 行与行之间留足间距：时间戳与下一条标题不再贴在一起 */
.news-list{display:flex;flex-direction:column;gap:10px}
.news-item{
  display:flex;gap:12px;padding:12px 14px;border-radius:10px;cursor:pointer;
  transition:background .15s;align-items:flex-start;
}
.news-item:hover{background:var(--glass-hover)}
.news-tag{flex-shrink:0;width:58px;text-align:center}
.news-src{
  font-size:10px;color:var(--accent-2);border:1px solid var(--border-strong);
  border-radius:6px;padding:1px 5px;white-space:nowrap;
}
.news-body{flex:1;min-width:0}
.news-title{font-size:13px;font-weight:500;display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.news-title .rel{font-size:10px;color:#fff;background:linear-gradient(120deg,var(--accent),var(--accent-3));border-radius:20px;padding:1px 8px}
.news-summary{font-size:11.5px;color:var(--muted);margin-top:3px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.news-summary.expanded{-webkit-line-clamp:unset}
.news-meta{font-size:10.5px;color:var(--muted);margin-top:5px;line-height:1.5}
.idx-region-tag{font-size:11.5px;color:var(--muted);margin:8px 0 6px;font-weight:550;display:flex;gap:6px;align-items:center}

/* ============================================================
   P2 基金中心
   ============================================================ */
.funds-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:12px;margin-bottom:16px}
.filter-row{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap}
.filter-row select,.filter-row input{
  background:var(--glass-2);border:1px solid var(--border);color:var(--text);
  border-radius:10px;padding:8px 12px;font-size:12.5px;font-family:var(--font);outline:none;
  box-shadow:var(--shadow-xs);transition:border-color .15s;
}
.filter-row input{flex:0 1 220px}
.filter-row select:focus,.filter-row input:focus{border-color:var(--accent)}
.cal-nav{display:flex;align-items:center;gap:10px;margin-left:auto}
.cal-month{font-size:14px;font-weight:550;min-width:86px;text-align:center;font-family:var(--mono)}
.calendar{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.cal-head{font-size:10.5px;color:var(--muted);text-align:center;padding:4px 0}
.cal-cell{
  border-radius:8px;padding:6px 4px;text-align:center;min-height:46px;
  background:var(--glass-2);border:1px solid transparent;font-size:11px;
  display:flex;flex-direction:column;justify-content:center;gap:2px;
  transition:transform .15s,border-color .15s;
}
.cal-cell:hover{transform:scale(1.04)}
.cal-cell .d{font-size:10px;color:var(--muted);font-family:var(--mono)}
.cal-cell .p{font-family:var(--mono);font-weight:550;font-size:11px}
.cal-cell.blank{background:transparent}
.cal-cell.today{border-color:var(--accent)}
.dist-layout{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media (max-width:900px){.dist-layout{grid-template-columns:1fr}}

/* ============================================================
   P2 ETF
   ============================================================ */
.etf-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:16px}
.etf-card{
  background:var(--glass-2);border:1px solid var(--border);border-radius:var(--radius-sm);
  padding:14px 16px;cursor:pointer;transition:all var(--dur) var(--ease);box-shadow:var(--shadow-xs);
}
.etf-card:hover,.etf-card.active{border-color:var(--border-strong);box-shadow:0 0 0 1.5px var(--accent),var(--shadow);transform:translateY(-2px)}
.etf-card .nm{font-size:13.5px;font-weight:600;display:flex;justify-content:space-between;gap:6px}
.etf-card .sub{font-size:11.5px;color:var(--muted);margin-top:5px;display:flex;justify-content:space-between}
.demo-tag{font-size:10px;color:var(--accent);border:1px solid color-mix(in srgb,var(--accent) 45%,transparent);border-radius:99px;padding:0 7px;line-height:1.7;flex-shrink:0}
.card-hint{font-size:11.5px;color:var(--muted);opacity:.85;margin-left:2px}
.etf-detail{display:grid;grid-template-columns:1.5fr 1fr;gap:16px;margin-bottom:16px}
@media (max-width:900px){.etf-detail{grid-template-columns:1fr}}

/* ---- ETF 深度对比（独立模块，左右两栏） ---- */
.etf-cmp-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.etf-cmp-select{
  flex:1;min-width:170px;max-width:330px;
  background:var(--glass-2);border:1px solid var(--border);color:var(--text);
  border-radius:10px;padding:9px 12px;font-size:13px;font-family:var(--font);outline:none;cursor:pointer;
  transition:border-color var(--dur) var(--ease);
}
.etf-cmp-select:focus,.etf-cmp-select:hover{border-color:var(--accent)}
.etf-cmp-grid{display:grid;grid-template-columns:1fr auto 1fr;gap:14px;align-items:stretch}
@media (max-width:900px){.etf-cmp-grid{grid-template-columns:1fr;gap:10px}}
.etf-cmp-vs{
  display:flex;align-items:center;justify-content:center;
  font-size:24px;font-weight:900;color:var(--accent);letter-spacing:1px;
  min-width:40px;-webkit-user-select:none;user-select:none;
}
.etf-cmp-card{
  background:var(--glass-2);border:1px solid var(--border);border-radius:var(--radius-sm);
  padding:16px 18px;box-shadow:var(--shadow-xs);height:100%;
}
.etf-cmp-card.etf-cmp-a{border-top:3px solid var(--accent)}
.etf-cmp-card.etf-cmp-b{border-top:3px solid #f5b73d}
.etf-cmp-card .c-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:12px;padding-bottom:12px;border-bottom:1px dashed var(--border)}
.etf-cmp-card .c-name{display:flex;flex-direction:column;gap:3px;min-width:0}
.etf-cmp-card .c-name b{font-size:15px;line-height:1.3}
.etf-cmp-card .c-name .muted{font-size:11.5px}
.etf-cmp-row{
  display:flex;justify-content:space-between;align-items:center;gap:10px;
  padding:7px 0;font-size:12.5px;border-bottom:1px dashed var(--border);
}
.etf-cmp-row:last-child{border-bottom:none}
.etf-cmp-row span{color:var(--muted);flex-shrink:0}
.etf-cmp-row b{font-family:var(--mono);font-size:12px;text-align:right;word-break:break-all}
.cmp-chart{height:260px;width:100%}
.cmp-table-wrap{overflow-x:auto}

/* ============================================================
   P2 个股
   ============================================================ */
.stk-tabs{display:flex;gap:8px;margin-bottom:16px}
.stk-tab{
  border:1px solid var(--border);background:var(--glass-2);color:var(--text-2);
  border-radius:10px;padding:8px 18px;font-size:13px;cursor:pointer;font-family:var(--font);
  transition:all var(--dur) var(--ease);box-shadow:var(--shadow-xs);
}
.stk-tab:hover{border-color:var(--accent);color:var(--accent)}
.stk-tab.active{background:linear-gradient(135deg,var(--accent),var(--accent-3));color:#fff;border-color:transparent}
.stk-ops{display:flex;gap:8px;margin-left:auto;flex-wrap:wrap}
.stk-ops input{
  background:var(--glass-2);border:1px solid var(--border);color:var(--text);
  border-radius:10px;padding:8px 12px;font-size:12.5px;font-family:var(--font);outline:none;width:200px;
}
.stk-ops input:focus{border-color:var(--accent)}
.stock-list-row{
  display:flex;justify-content:space-between;align-items:center;gap:10px;
  padding:10px 12px;border-radius:10px;cursor:pointer;transition:background .15s;
}
.stock-list-row:hover{background:var(--glass-hover)}
.stock-list-row .nm{font-size:13px;font-weight:550;display:flex;gap:8px;align-items:center}
.stock-list-row .info{font-size:12px;color:var(--text-2);font-family:var(--mono);display:flex;gap:12px}
.scan-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;margin-bottom:18px}
.scan-block{background:var(--glass-2);border:1px solid var(--border);border-radius:10px;padding:14px 16px}
.scan-block .l{font-size:11.5px;color:var(--muted);letter-spacing:.2px}
.scan-block .v{font-size:16px;font-weight:550;font-family:var(--mono);margin-top:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.scan-block .v.sm{font-size:12.5px}
.scan-block .v.xs{font-size:11px}
.kv{display:flex;justify-content:space-between;padding:4px 0;font-size:12px;font-family:var(--mono)}
.kv .k{color:var(--muted)}
.fund-row{display:flex;justify-content:space-between;gap:8px;padding:5px 0;font-size:12px;font-family:var(--mono)}
.fund-row .nm{max-width:40%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--font)}

/* ============================================================
   个股中心改版：展开行 / AI 报告 / 体检 / 同业 / 建议
   ============================================================ */
.stock-list-row{position:relative}
.stock-list-row.open{background:var(--glass-hover);border:1px solid var(--border-strong)}
.stock-list-row .chev{font-size:12px;color:var(--muted);flex-shrink:0}
.stock-list-row .chip.mock{background:rgba(239,159,39,.14);border:1px solid rgba(239,159,39,.4);color:#d9900a}
.stk-board{display:inline-flex;margin:8px 0 0;padding:2px 10px;border-radius:20px;font-size:11px;
  background:var(--glass-2);border:1px solid var(--border);color:var(--text-2)}
.stk-desc{font-size:12.5px;color:var(--text-2);line-height:1.8;margin:10px 0 0;padding:10px 12px;
  background:var(--glass-2);border:1px solid var(--border);border-radius:10px}
.md-body{margin:12px 0 0}
.md-body h4{font-size:13.5px;margin:18px 0 8px;color:var(--text)}
.md-body h4.md-h2{font-size:13px;color:var(--accent)}
.md-body h4.md-h1{font-size:14px;color:var(--accent-3)}
.md-body h4.md-hl{
  /* var() 后不能直接拼透明度后缀（原 var(--accent-3)12 无效），用 color-mix 兼容 */
  color:var(--accent-3);background:rgba(143,107,255,.09);
  background:color-mix(in srgb,var(--accent-3) 9%,transparent);
  border-left:3px solid var(--accent-3);border-radius:0 8px 8px 0;
  padding:6px 12px;font-weight:700;letter-spacing:.3px;
}
.md-body p.md-p{font-size:13px;line-height:2;color:var(--text-2);margin:6px 0}
.md-body ul.md-list{margin:6px 0 10px;padding-left:20px;font-size:13px;line-height:2;color:var(--text-2)}
.md-body ul.md-list li{margin:4px 0}
.md-body blockquote.md-quote{border-left:3px solid var(--accent-2);padding:8px 14px;margin:10px 0;
  background:var(--glass-2);border-radius:0 8px 8px 0;font-size:13px;color:var(--text-2);line-height:1.9}
.md-body hr.md-hr{border:0;border-top:1px dashed var(--border);margin:12px 0}
.health-items{margin:10px 0 4px;display:flex;flex-direction:column;gap:7px}
.hi-row{display:grid;grid-template-columns:64px 1fr 34px;gap:10px;align-items:center}
.hi-k{font-size:12px;color:var(--text-2);white-space:nowrap}
.hi-bar{height:8px;border-radius:5px;background:var(--glass-2);border:1px solid var(--border);overflow:hidden}
.hi-bar i{display:block;height:100%;border-radius:5px;transition:width .5s var(--ease)}
.hi-v{font-size:12px;font-family:var(--mono);text-align:right;color:var(--text-2)}
.hi-note{grid-column:1 / -1;font-size:11px;color:var(--muted);margin-top:-2px;padding-left:74px}
.adv-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px;margin:8px 0 4px}
.adv-cell{background:var(--glass-2);border:1px solid var(--border);border-radius:10px;padding:10px 12px}
.adv-k{font-size:11px;color:var(--muted);margin-bottom:4px}
.adv-v{font-size:12.5px;color:var(--text);line-height:1.7}
.health-charts{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:14px}
.health-charts .chart-scan{height:170px}
.fund-list{margin:4px 0}

/* ---- 个股中心 v34：表头 / 搜索框入卡头 / AI解读 Tab / 财报可视化 ---- */
.stk-searchbox{display:flex;gap:8px;align-items:center;margin-left:auto}
.stk-searchbox input{
  border:1px solid var(--border);background:var(--glass-2);color:var(--text);
  border-radius:10px;padding:7px 12px;font-size:12.5px;font-family:var(--font);outline:none;width:260px;
}
.stk-searchbox input:focus{border-color:var(--accent)}
.stock-table-head{
  display:flex;justify-content:space-between;align-items:center;gap:10px;
  padding:6px 12px 4px;margin-top:8px;border-bottom:1px solid var(--border);
  font-size:11px;color:var(--muted);
}
.stock-table-head .sth-name{flex:1;min-width:0}
.stock-table-head .sth-nums{display:flex;gap:12px;font-family:var(--mono)}
.stock-table-head .sth-nums span{width:70px;text-align:center}
.stock-table-head .sth-chev{width:14px}
.stock-list-row .nm{flex:1;min-width:0;overflow:hidden}
.stock-list-row .info{font-size:12px;color:var(--text-2);font-family:var(--mono);display:flex;gap:12px;flex-shrink:0}
.stock-list-row .info span{width:70px;text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stock-list-row .nm .code{font-size:11px;color:var(--muted);font-family:var(--mono)}
.stock-list-row .nm .ind-tag{font-size:10.5px}
.insight-tabs{display:flex;gap:6px;margin:12px 0 10px;flex-wrap:wrap}
.insight-tab{
  border:1px solid var(--border);background:var(--glass-2);color:var(--text-2);
  border-radius:20px;padding:5px 16px;font-size:12.5px;cursor:pointer;font-family:var(--font);
  transition:all .18s var(--ease);
}
.insight-tab:hover{border-color:var(--accent);color:var(--accent)}
.insight-tab.active{background:linear-gradient(135deg,var(--accent),var(--accent-3));color:#fff;border-color:transparent}
.insight-summary{
  border:0;background:var(--glass-2);
  border-radius:10px;padding:12px 16px;margin:12px 0 0;
}
.insight-summary .is-tag{font-size:12px;font-weight:700;color:var(--accent-3);margin-bottom:6px;letter-spacing:.5px}
.insight-summary .md-p{font-size:13px;line-height:2;color:var(--text);margin:4px 0}
.insight-summary ul.md-list{color:var(--text)}
.insight-panel{animation:fadeUp .25s var(--ease)}
@keyframes fadeUp{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.fin-trend{font-size:13px;margin:12px 0 0;color:var(--text-2);line-height:1.9;
  background:var(--glass-2);border:1px solid var(--border);border-radius:10px;padding:10px 14px}
.fin-vis{margin:14px 0 0}
.fin-vis .chart-md{height:230px}
.fin-metrics{display:flex;gap:10px;flex-wrap:wrap;margin:12px 0 0}
.fin-metric{flex:1;min-width:140px;background:var(--glass-2);border:1px solid var(--border);border-radius:10px;padding:10px 12px}
.fin-metric .k{font-size:11px;color:var(--muted);letter-spacing:.2px}
.fin-metric .v{font-size:14px;font-weight:550;font-family:var(--mono);margin-top:5px}
.fin-points{margin:14px 0 0;padding:12px 16px;background:var(--glass-2);border:1px solid var(--border);border-radius:10px}
.fin-points .fp-head{font-size:12.5px;color:var(--text-2);margin-bottom:6px}
.fin-points ul{margin:0;padding-left:18px;font-size:13px;line-height:2;color:var(--text-2)}
.fin-hist{margin:16px 0 0}
/* 公司全景价格走势图（体检同款双栏） */
.scan-charts{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:16px}
.scan-charts .chart-scan{height:160px}
/* 公司全景醒目小标题：左侧渐变竖条 + 加大加粗 */
.sec-title{
  display:flex;align-items:center;gap:8px;
  font-size:14px;font-weight:650;color:var(--text);
  margin:16px 0 10px;letter-spacing:.3px;
}
.sec-title::before{
  content:'';width:4px;height:15px;border-radius:2px;flex-shrink:0;
  background:linear-gradient(180deg,var(--accent),var(--accent-3));
}
/* 二级标题（图小标题）：圆点前缀，无 emoji、无竖条，与一级 sec-title 区分 */
.sec-title.dot{font-size:13px;font-weight:600}
.sec-title.dot::before{content:'';width:6px;height:6px;border-radius:50%;
  background:var(--accent);box-shadow:0 0 6px rgba(77,141,255,.4);box-shadow:0 0 6px color-mix(in srgb,var(--accent) 40%,transparent)}
/* 四维 Tab 结构化：结论条 + 要点指标卡 + 数字趋势高亮 */
.tab-concl{margin-bottom:10px;padding:9px 12px;
  background:rgba(77,141,255,.06);background:color-mix(in srgb,var(--accent) 6%,transparent);
  border-radius:8px;font-size:12.5px;line-height:1.8;color:var(--text)}
.tab-points{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:10px}
.tab-point{background:var(--glass-2);border:1px solid var(--border);border-radius:10px;padding:10px 12px}
.tab-point .tp-k{font-size:12px;font-weight:650;color:var(--accent-3);margin-bottom:5px}
.tab-point .tp-v{font-size:12.5px;line-height:1.8;color:var(--text-2)}
.tnum{font-weight:700;font-family:var(--mono);color:var(--text)}
.tnum.up{color:var(--up)}
.tnum.dn{color:var(--down)}
.tab-chart{margin-top:12px}
.tab-chart .chart-tab{height:170px}
.tab-chart-title{font-size:12px;color:var(--muted);margin-bottom:4px}
/* 核心结论 + 四维 Tab 整体卡片（指标卡同款底色，与其他模块区隔） */
.insight-wrap{
  background:var(--glass-2);border:1px solid var(--border);border-radius:12px;
  padding:14px 16px;margin-top:14px;
}
.insight-wrap .insight-summary{margin-top:0}
.insight-wrap .insight-tabs{margin-top:12px}
.insight-disc{
  margin-top:12px;padding-top:10px;border-top:1px dashed var(--border);
  font-size:11px;color:var(--muted);line-height:1.8;
}
/* 财报核心解读雷达图 */
.fin-radar{margin:14px 0 0}
.fin-radar .chart-radar{height:250px}


/* ============================================================
   P3 新闻中心
   ============================================================ */
.news-tools{display:flex;gap:10px 12px;margin-bottom:16px;flex-wrap:wrap;align-items:center}
.cat-chips{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.chip-btn{
  border:1px solid var(--border);background:var(--glass-2);color:var(--text-2);
  border-radius:20px;padding:6px 14px;font-size:12px;line-height:1.2;cursor:pointer;font-family:var(--font);
  transition:all .18s var(--ease);box-shadow:var(--shadow-xs);
}
.chip-btn:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-1px)}
.chip-btn.active{background:linear-gradient(135deg,var(--accent),var(--accent-3));color:#fff;border-color:transparent}
/* 筛选工具组：宽屏（内容区≥约1190px，中英文标签均放得下）保持单行右贴；
   其余视口整体换行并左对齐（避免 margin-left:auto 悬空右对齐），刷新按钮固定行尾 */
.news-tools-right{display:flex;gap:8px;align-items:center;margin-left:auto;flex-wrap:wrap}
@media (max-width:1500px){
  .news-tools-right{flex:1 1 100%;min-width:0}
  .news-tools-right .icon-btn{margin-left:auto}
}
.news-tools-right select,.news-tools-right input:not([type="checkbox"]){
  background:var(--glass-2);border:1px solid var(--border);color:var(--text);
  border-radius:10px;padding:6px 12px;font-size:12px;line-height:1.2;font-family:var(--font);outline:none;
}
.news-tools-right input:not([type="checkbox"]){width:150px}
.rel-toggle{display:flex;align-items:center;gap:5px;font-size:12px;color:var(--text-2);cursor:pointer;white-space:nowrap}
.rel-toggle input{accent-color:var(--accent);margin:0;width:14px;height:14px;flex:none}
.news-headline{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px;margin-bottom:16px}
.hl-card{
  background:linear-gradient(120deg,rgba(77,141,255,.12),rgba(0,212,255,.05));
  border:1px solid var(--border-strong);border-radius:var(--radius-sm);
  padding:16px 18px;cursor:pointer;transition:all var(--dur) var(--ease);box-shadow:var(--shadow-xs);
}
.hl-card:hover{border-color:var(--accent);transform:translateY(-2px);box-shadow:var(--shadow)}
.hl-card .hl-title{font-size:13.5px;font-weight:550;line-height:1.55;display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.hl-card .hl-meta{font-size:11px;color:var(--muted);margin-top:8px;display:flex;gap:10px;align-items:center}
.src-badge{font-size:10px;padding:1px 7px;border-radius:6px;border:1px solid var(--border-strong);color:var(--accent-2);white-space:nowrap}
.cat-tag{font-size:10px;padding:1px 7px;border-radius:20px;background:var(--glass-2);color:var(--muted);white-space:nowrap}

/* ============================================================
   P4 体检弹层
   ============================================================ */
.modal-mask{
  position:fixed;top:0;left:0;right:0;bottom:0;z-index:100;background:rgba(5,8,18,.66);
  display:flex;align-items:center;justify-content:center;padding:20px;
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
}
.modal{
  background:var(--bg);border:1px solid var(--border-strong);border-radius:18px;
  max-width:760px;width:100%;max-height:86vh;overflow:auto;
  box-shadow:var(--shadow-lg);animation:popIn .26s var(--ease);
}
@keyframes popIn{from{opacity:0;transform:scale(.95) translateY(8px)}to{opacity:1;transform:none}}
.modal-head{
  display:flex;justify-content:space-between;align-items:center;
  padding:16px 24px;border-bottom:1px solid var(--border);position:sticky;top:0;
  background:var(--glass);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);z-index:2;
}
.modal-head h3{font-size:15.5px;font-weight:650}
.modal-body{padding:20px 24px 24px}
.health-top{display:grid;grid-template-columns:auto 1fr;gap:18px;margin-bottom:16px;align-items:center}
.score-ring{width:104px;height:104px;position:relative}
.score-ring .sv{
  position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;
}
.score-ring .sv b{font-size:27px;font-family:var(--mono)}
.score-ring .sv span{font-size:10.5px;color:var(--muted)}
.grade-badge{
  display:inline-block;padding:4px 16px;border-radius:20px;font-size:13px;font-weight:550;
  background:linear-gradient(120deg,var(--accent),var(--accent-3));color:#fff;
}
.grade-badge.good{background:linear-gradient(120deg,#16a34a,#0f8f6e);color:#fff}
.grade-badge.mid{background:linear-gradient(120deg,#f5b73d,#d97706);color:#fff}
.grade-badge.caution{background:linear-gradient(120deg,#f2545b,#d63a4e);color:#fff}
.kv-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;margin:12px 0}
.kv-cell{background:var(--glass-2);border:1px solid var(--border);border-radius:10px;padding:10px 12px}
.kv-cell .k{font-size:11px;color:var(--muted)}
.kv-cell .v{font-size:14px;font-weight:550;font-family:var(--mono);margin-top:3px}
.hl-box{border-radius:10px;padding:12px 16px;margin-top:8px;font-size:12.5px;line-height:1.75}
.hl-box ul{padding-left:16px;margin-top:4px}
.hl-box.hl{background:rgba(46,194,126,.08);border:1px solid rgba(46,194,126,.3)}
.hl-box.rk{background:rgba(242,84,91,.08);border:1px solid rgba(242,84,91,.3)}
.compare-table td, .compare-table th{padding:9px;text-align:center}
.compare-table .name-cell{text-align:left;font-family:var(--font)}
.pctbar{height:8px;border-radius:4px;background:var(--glass-2);overflow:hidden;position:relative}
.pctbar i{position:absolute;inset:0;background:linear-gradient(90deg,var(--accent),var(--accent-2));border-radius:4px}
.advice-box{
  margin-top:12px;padding:14px 16px;border-radius:10px;font-size:12.5px;line-height:1.75;
  background:linear-gradient(120deg,rgba(77,141,255,.12),rgba(0,212,255,.06));
  border:1px solid var(--border-strong);
}
.chart-scan{height:200px;margin-top:8px}

/* ============================================================
   P5 行业研究
   ============================================================ */
.ind-hot{background:var(--glass);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px;margin-bottom:16px;box-shadow:var(--shadow),var(--hl);backdrop-filter:blur(18px) saturate(1.3);-webkit-backdrop-filter:blur(18px) saturate(1.3)}
.ind-hot-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}
.ind-hot-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.ind-hot-card{border:1px solid var(--border);border-radius:10px;padding:14px 16px;background:var(--glass-2);box-shadow:var(--shadow-xs);transition:transform var(--dur) var(--ease)}
.ind-hot-card:hover{transform:translateY(-2px)}
.ind-hot-card .nm{font-weight:600;font-size:13.5px}
.ind-hot-card .pct{font-size:18px;font-weight:700;margin:5px 0}
.ind-hot-card .net{font-size:11.5px;color:var(--muted)}
.ind-grid{display:grid;grid-template-columns:3fr 2fr;gap:16px;margin-bottom:16px}
.chain-tabs{display:flex;gap:4px;margin-left:auto;max-width:min(100%,560px);overflow-x:auto;flex-wrap:nowrap;scrollbar-width:none;padding-bottom:2px}
.chain-tabs::-webkit-scrollbar{display:none}
.chain-tab{font-size:11px;padding:3px 10px;border-radius:20px;border:1px solid var(--border);background:none;color:var(--text-2);cursor:pointer;white-space:nowrap;flex-shrink:0;font-family:var(--font);transition:all .18s var(--ease)}
.chain-tab:hover{border-color:var(--accent);color:var(--accent)}
.chain-tab.active{background:var(--accent);border-color:var(--accent);color:#fff}
.chain-seg{border:1px solid var(--border);border-radius:12px;padding:14px 16px;margin-bottom:12px;background:var(--glass-2);box-shadow:var(--shadow-xs)}
.chain-seg-head{display:flex;align-items:center;gap:10px;margin-bottom:10px;flex-wrap:wrap}
.chain-seg-head .seg-name{font-weight:600;font-size:13px}
.chain-seg-head .seg-avg{font-size:12.5px;font-weight:600}
.chain-boards{display:flex;gap:8px;flex-wrap:wrap}
.chain-board{border:1px solid var(--border);border-radius:10px;padding:10px 12px;min-width:150px;flex:1;background:var(--glass);transition:border-color .15s}
.chain-board:hover{border-color:var(--border-strong)}
.chain-board .bn{font-size:12px;font-weight:600;display:flex;justify-content:space-between;gap:8px}
.chain-board .bl{font-size:11px;color:var(--muted);margin-top:6px}
.chain-board .bl b{color:var(--text-2);font-weight:550}
.chain-board .bl i.lm{font-style:normal;color:var(--accent-2);margin-left:6px;font-size:10px;opacity:.9}
/* 上中下游整体容器：三段合一，与其他卡片区分 */
.chain-flow{border:1px solid var(--border);border-radius:14px;background:var(--glass-2);box-shadow:var(--shadow-xs);overflow:hidden;position:relative}
.chain-flow::before{content:'';display:block;height:3px;background:linear-gradient(90deg,var(--accent),var(--accent-3),var(--accent-2));opacity:.85}
.chain-flow .chain-seg{border:0;border-radius:0;background:none;box-shadow:none;padding:16px 18px;margin:0}
.chain-flow .chain-seg + .chain-seg{border-top:1px dashed var(--border)}
.chain-flow .chain-seg.hl{background:rgba(77,141,255,.07)}
.chain-flow .chain-arrow{text-align:center;color:var(--accent-3);font-size:14px;line-height:1;padding:7px 0;opacity:.9;margin:0;background:linear-gradient(90deg,transparent,rgba(77,141,255,.14),transparent)}
.chain-flow .chain-seg-head .seg-name{background:linear-gradient(135deg,var(--accent),var(--accent-3));color:#fff;padding:3px 13px;border-radius:20px;font-size:11.5px;font-weight:600;letter-spacing:.3px;box-shadow:0 2px 10px rgba(77,141,255,.3)}
.ind-leader-row{display:flex;align-items:center;justify-content:space-between;padding:10px 4px;border-bottom:1px dashed var(--border)}
.ind-leader-row:last-child{border-bottom:none}
.ind-updown{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:8px}
.ind-updown .col{background:var(--glass-2);border:1px solid var(--border);border-radius:10px;padding:12px 14px;box-shadow:var(--shadow-xs)}
.ind-updown .col h4{margin:0 0 8px;font-size:12px;color:var(--muted)}
.ind-updown .row{display:flex;justify-content:space-between;font-size:12.5px;padding:4px 0}

/* --- 研报中心 --- */
.rsc-search{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:12px;align-items:center}
.rsc-search input{flex:1;min-width:220px}
.btn-clear{background:var(--glass-2);border:1px solid var(--border);color:var(--muted);border-radius:10px;padding:9px 12px;font-size:12.5px;font-family:var(--font);cursor:pointer;transition:all .18s var(--ease);white-space:nowrap}
.btn-clear:hover{color:var(--up);border-color:var(--up);background:rgba(242,84,91,.08)}
.rsc-history{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:12px;font-size:12px}
.rsc-his-label{color:var(--muted);white-space:nowrap}
.rsc-his-chip{display:inline-block;padding:3px 11px;border-radius:14px;border:1px solid var(--border);background:var(--glass);color:var(--text-2);cursor:pointer;font-size:11.5px;transition:all .15s var(--ease)}
.rsc-his-chip:hover{color:var(--accent);border-color:var(--accent);transform:translateY(-1px)}
.rsc-his-clear{margin-left:auto;color:var(--muted);cursor:pointer;font-size:11.5px;text-decoration:underline;opacity:.75}
.rsc-his-clear:hover{color:var(--up);opacity:1}
.rsc-types{display:inline-flex;gap:4px;background:var(--glass-2);border:1px solid var(--border);border-radius:10px;padding:3px}
.rsc-type{border:0;background:none;color:var(--muted);font-size:12px;padding:5px 12px;border-radius:8px;cursor:pointer;font-family:var(--font);transition:all .15s}
.rsc-type:hover{color:var(--accent)}
.rsc-type.active{background:var(--accent);color:#fff;font-weight:600}
.rsc-reco{background:var(--glass-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px 14px;box-shadow:var(--shadow-xs)}
.rsc-reco-tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}
.rsc-reco-tab{font-size:11.5px;padding:5px 13px;border-radius:18px;border:1px solid var(--border-strong);background:var(--glass);color:var(--text-2);cursor:pointer;font-family:var(--font);transition:all .18s var(--ease)}
.rsc-reco-tab:hover{border-color:var(--accent);color:var(--accent)}
.rsc-reco-tab.active{background:linear-gradient(135deg,var(--accent),var(--accent-3));color:#fff;border-color:transparent;font-weight:600}
.rsc-wp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:8px;margin-top:6px}
.rsc-wp-card{display:flex;flex-direction:column;gap:3px;border:1px solid var(--border);border-radius:10px;padding:10px 12px;background:var(--glass);text-decoration:none;transition:all .18s var(--ease)}
.rsc-wp-card:hover{border-color:var(--accent-2);transform:translateY(-2px);box-shadow:var(--shadow-xs)}
.rsc-wp-card .wp-nm{font-size:12px;font-weight:600;color:var(--text)}
.rsc-wp-card .wp-org{font-size:10.5px;color:var(--accent-2)}
.rsc-result{margin-top:12px}
.rsc-item{padding:9px 2px;border-bottom:1px dashed var(--border);transition:background .15s}
.rsc-item:hover{background:var(--card-2)}
.rsc-item:last-child{border-bottom:none}
.rsc-title{display:block;font-size:13px;font-weight:600;color:var(--text);text-decoration:none;line-height:1.5;cursor:pointer}
.rsc-title:hover{color:var(--accent)}
.rsc-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:11px;margin-top:4px;color:var(--muted)}
.rsc-rating{font-weight:700;color:var(--accent-3);font-size:10.5px;border:1px solid currentColor;border-radius:6px;padding:0 5px}
.rsc-rating.up{color:var(--up)}
.rsc-stock{font-size:11px;font-weight:600;color:var(--text-2)}
.rsc-go{margin-left:auto;font-size:10.5px;color:var(--accent);font-weight:600}

/* --- 产业链新闻：摘要展开 --- */
.news-x .nl{cursor:pointer}
.news-x .nl:hover .nt{color:var(--accent)}
.news-x .nsum{font-size:11.5px;color:var(--muted);margin:4px 0 2px;line-height:1.7;padding-left:2px}
#chainNews .news-item .go{color:var(--muted);font-size:11px;opacity:.85;text-decoration:none;white-space:nowrap;align-self:center;transition:color .18s,opacity .18s}
#chainNews .news-item .go:hover{color:var(--accent);opacity:1}

/* ============================================================
   P6 知识库与推送
   ============================================================ */
.kb-hero{display:flex;justify-content:space-between;align-items:center;gap:16px;background:var(--glass);border:1px solid var(--border);border-radius:var(--radius);padding:22px 24px;margin-bottom:16px;flex-wrap:wrap;box-shadow:var(--shadow),var(--hl);backdrop-filter:blur(18px) saturate(1.3);-webkit-backdrop-filter:blur(18px) saturate(1.3)}
/* 一级大标题：理财投资100问 */
@supports not ((-webkit-background-clip:text) or (background-clip:text)){
  .kb-hero h3{color:var(--text);-webkit-text-fill-color:currentColor} /* 极旧浏览器：退化为纯色，避免透明字 */
}
.kb-hero h3{
  margin:0 0 6px;font-size:26px;font-weight:800;letter-spacing:.5px;line-height:1.25;
  background:linear-gradient(120deg,var(--accent) 10%,var(--accent-2) 60%,var(--accent-3));
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;
  text-fill-color:transparent;
}
.kb-hero .muted{font-size:12.5px}
.kb-search{width:100%;box-sizing:border-box;padding:11px 16px;border:1px solid var(--border);border-radius:12px;background:var(--glass);color:var(--text);font-size:13.5px;margin-bottom:16px;font-family:var(--font);box-shadow:var(--shadow-xs);transition:border-color .15s,box-shadow .15s}
.kb-search:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(77,141,255,.15)}
.kb-sec{margin-bottom:16px}
.kb-item{border:1px solid var(--border);border-radius:12px;background:var(--glass);margin-bottom:8px;overflow:hidden;box-shadow:var(--shadow-xs);transition:border-color .15s}
.kb-item:hover{border-color:var(--border-strong)}
.kb-q{width:100%;text-align:left;background:none;border:none;color:var(--text);font-size:13.5px;font-weight:600;padding:14px 16px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;font-family:var(--font);transition:color .15s}
.kb-q:hover{color:var(--accent)}
.kb-q .arrow{color:var(--muted);font-size:11px;transition:transform .25s var(--ease)}
.kb-item.open .kb-q .arrow{transform:rotate(180deg)}
.kb-a{display:none;padding:0 16px 14px;font-size:12.8px;line-height:1.9;color:var(--text-2);border-top:1px dashed var(--border);padding-top:12px;animation:fadeIn .3s ease}
.kb-item.open .kb-a{display:block}
.push-mail{display:flex;gap:8px;flex-wrap:wrap;flex:1}
.push-mail input{flex:1;min-width:140px}
.switch{position:relative;display:inline-block;width:42px;height:23px}
.switch input{opacity:0;width:0;height:0}
.switch span{position:absolute;top:0;left:0;right:0;bottom:0;background:var(--border-strong);border-radius:23px;transition:.25s var(--ease);cursor:pointer}
.switch span:before{content:"";position:absolute;width:17px;height:17px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.25s var(--ease);box-shadow:var(--shadow-xs)}
.switch input:checked+span{background:var(--accent)}
.switch input:checked+span:before{transform:translateX(19px)}

/* ============================================================
   按钮 / 输入 / 表格 / 设置
   ============================================================ */
.btn{
  border:1px solid var(--border-strong);background:var(--glass-2);color:var(--text);
  border-radius:10px;padding:9px 18px;font-size:13px;cursor:pointer;font-family:var(--font);
  transition:all var(--dur) var(--ease);box-shadow:var(--shadow-xs);
}
.btn:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-1px);box-shadow:var(--shadow-sm)}
.btn:active{transform:scale(.97)}
.btn.primary{
  background:linear-gradient(135deg,var(--accent),var(--accent-3));
  border:0;color:#fff;font-weight:550;box-shadow:0 4px 14px rgba(77,141,255,.28);
}
.btn.primary:hover{filter:brightness(1.1);color:#fff;box-shadow:0 6px 20px rgba(77,141,255,.4)}
.btn-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}
textarea{
  width:100%;background:var(--glass-2);border:1px solid var(--border);color:var(--text);
  border-radius:10px;padding:12px;font-size:12.5px;font-family:var(--mono);resize:vertical;outline:none;
  transition:border-color .15s;
}
textarea:focus{border-color:var(--accent)}
.import-result{font-size:12.5px;margin-top:12px;color:var(--accent-2)}
.table-wrap{margin-top:8px;overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:12.5px;min-width:720px}
th{color:var(--muted);font-weight:550;text-align:left;padding:8px 10px;border-bottom:1px solid var(--border);font-size:11.5px}
td{padding:8px 10px;border-bottom:1px solid var(--border);font-family:var(--mono)}

/* ---------- 表单控件统一底色（防止暗色下出现原生白底） ---------- */
/* 兜底规则：元素级选择器优先级最低，已有的 class 规则会照常覆盖，不影响既有外观。
   textarea 已有独立样式，此处不覆盖，避免改变导入框原观感。 */
input,select{
  background:var(--input-bg);
  border:1px solid var(--input-border);
  color:var(--input-text);
  font-family:var(--font);
}
input::placeholder,textarea::placeholder{color:var(--input-ph)}
/* 表格内可编辑单元格输入：份额 / 成本价 —— 深色凹陷小输入框，弱边框低对比 */
.table-wrap input.ed{
  width:70px;background:var(--input-bg);border:1px solid var(--input-border);
  color:var(--input-text);border-radius:7px;padding:4px 7px;
  font-size:12px;font-family:var(--mono);text-align:right;outline:none;
  /* 内阴影营造"可编辑凹陷感"，避免亮面外凸显眼 */
  box-shadow:inset 0 1px 2px rgba(0,0,0,.18);
  transition:border-color .15s,background .15s,box-shadow .15s;
}
.table-wrap input.ed:hover{background:var(--input-bg-hover);border-color:var(--border-strong)}
.table-wrap input.ed:focus{
  border-color:var(--accent);background:var(--input-bg-hover);
  box-shadow:inset 0 1px 2px rgba(0,0,0,.18),0 0 0 3px rgba(77,141,255,.16);
}
/* 去掉数字框上下微调箭头（暗色下易发白、且此处不需要） */
.table-wrap input.ed::-webkit-outer-spin-button,
.table-wrap input.ed::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.table-wrap input.ed[type="number"]{-moz-appearance:textfield;appearance:textfield}
/* 浏览器自动填充：覆盖默认的白底黑字 */
input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,
textarea:-webkit-autofill{
  -webkit-text-fill-color:var(--input-text);
  -webkit-box-shadow:0 0 0 1000px var(--input-bg) inset;
  box-shadow:0 0 0 1000px var(--input-bg) inset;
  caret-color:var(--input-text);
  transition:background-color 9999s ease-out 0s;
}
td.name{font-family:var(--font)}
.num{text-align:right}
/* 基金表行：弱化边框，按波动淡色底 + 左侧色点区分（去"条条框框"感） */
.frow{transition:background .15s}
.frow td{border-bottom:1px solid transparent}
.frow:hover td{border-bottom:1px solid var(--border)}
.frow-high td{background:rgba(242,84,91,.045)}
.frow-mid td{background:rgba(245,183,61,.04)}
.frow-low td{background:rgba(46,194,126,.04)}
.frow-qdii td{background:rgba(143,107,255,.05)}
.frow td:first-child{border-left:3px solid transparent;border-radius:0}
.frow-high td:first-child{border-left-color:var(--up)}
.frow-mid td:first-child{border-left-color:#f5b73d}
.frow-low td:first-child{border-left-color:var(--down)}
.frow-qdii td:first-child{border-left-color:var(--accent-3)}
.fund-name-cell{display:flex;align-items:center;min-width:0}
.fund-name-cell .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ftype-cell{display:inline-block;padding:2px 9px;border-radius:20px;font-size:11px;white-space:nowrap;font-family:var(--font)}
.ftype-cell.t-股票型{background:rgba(77,141,255,.13);color:#4d8dff}
.ftype-cell.t-指数型{background:rgba(245,183,61,.15);color:#c7901a}
.ftype-cell.t-混合型{background:rgba(143,107,255,.14);color:#8f6bff}
.ftype-cell.t-债券型{background:rgba(46,194,126,.13);color:#1d9e75}
.ftype-cell.t-货币型{background:rgba(29,158,117,.13);color:#1d9e75}
.ftype-cell.t-QDII{background:rgba(0,212,255,.13);color:#0a9ab8}
.ops button{
  border:1px solid var(--border);background:none;color:var(--text-2);border-radius:7px;
  padding:3px 9px;font-size:11px;cursor:pointer;margin-left:4px;font-family:var(--font);
  transition:all .15s;
}
.ops button:hover{color:var(--accent);border-color:var(--accent);transform:translateY(-1px)}
.ops button.del:hover{color:var(--up);border-color:var(--up)}
.ops button.hl-btn{color:var(--accent-2);border-color:var(--accent-2)}
.ops button.hl-btn:hover{background:var(--accent-2);color:var(--bg)}
.cmp-chk{accent-color:var(--accent);width:14px;height:14px;cursor:pointer}
.pref-row{display:flex;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap}
.pref-row label{font-size:13px;color:var(--text-2);width:110px}
.pref-row input{flex:0 1 240px}
.add-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px;margin-bottom:16px}
.add-form input,.add-form select,.pref-row input,.pref-row select{
  background:var(--glass-2);border:1px solid var(--border);color:var(--text);
  border-radius:10px;padding:9px 12px;font-size:13px;font-family:var(--font);
  outline:none;transition:border-color .15s,box-shadow .15s;box-shadow:var(--shadow-xs);
}
.add-form input:focus,.pref-row input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(77,141,255,.12)}

/* ---------- 其他 ---------- */
.up{color:var(--up)}
.down{color:var(--down)}
.flat{color:var(--flat)}
.toast{
  position:fixed;bottom:calc(28px + env(safe-area-inset-bottom,0px));left:50%;transform:translateX(-50%) translateY(20px);
  background:var(--toast-bg);color:var(--toast-text);padding:11px 22px;border-radius:12px;
  font-size:13px;opacity:0;pointer-events:none;transition:all .3s var(--ease);z-index:99;
  box-shadow:var(--shadow-lg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);
}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.page{display:none}
.page.active{display:block;animation:fadeUp .38s var(--ease)}
@keyframes fadeUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}

/* ---------- 滚动条 ---------- */
::-webkit-scrollbar{width:9px;height:9px}
::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:9px}
::-webkit-scrollbar-thumb:hover{background:var(--muted)}
::-webkit-scrollbar-track{background:transparent}

/* ============================================================
   改版 v8：统一标题icon / 盘面结论 / 榜单交互 / 今日关键词 / 小眼睛
   ============================================================ */

/* --- 统一小标题：SVG icon 块（差异化底色，替代 emoji） --- */
.head-ico{
  width:24px;height:24px;border-radius:8px;display:inline-grid;place-items:center;
  margin-right:8px;flex-shrink:0;vertical-align:-5px;
  background:linear-gradient(135deg,rgba(77,141,255,.18),rgba(0,212,255,.08));
  color:var(--accent-2);border:1px solid rgba(0,212,255,.25);
  box-shadow:0 2px 8px rgba(0,212,255,.12);
}
.head-ico svg{width:14px;height:14px}
.hi-wallet{background:linear-gradient(135deg,rgba(245,183,61,.16),rgba(242,84,91,.07));color:#f5b73d;border-color:rgba(245,183,61,.3)}
.hi-chart{background:linear-gradient(135deg,rgba(242,84,91,.15),rgba(245,183,61,.06));color:var(--up);border-color:rgba(242,84,91,.3)}
.hi-thermo{background:linear-gradient(135deg,rgba(0,212,255,.18),rgba(143,107,255,.08));color:var(--accent-2);border-color:rgba(0,212,255,.3)}
.hi-flow{background:linear-gradient(135deg,rgba(143,107,255,.18),rgba(77,141,255,.08));color:var(--accent-3);border-color:rgba(143,107,255,.3)}
.hi-news{background:linear-gradient(135deg,rgba(46,194,126,.15),rgba(0,212,255,.07));color:#2ec27e;border-color:rgba(46,194,126,.3)}
.card-head h2{display:flex;align-items:center}
.sg-ico{width:16px;height:16px;display:inline-grid;place-items:center;margin-right:5px;vertical-align:-3px;color:inherit}
.sg-ico svg{width:13px;height:13px}
.g-profit .sg-ico{color:var(--up)}
.g-liquid .sg-ico{color:var(--accent-2)}
.g-strength .sg-ico{color:#f5b73d}
.g-ladder .sg-ico{color:var(--up)}

/* --- 盘面结论总结栏（无框无竖线，醒目色强调） --- */
.sent-summary{
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  padding:10px 16px 12px;margin-bottom:10px;
  background:linear-gradient(90deg,rgba(77,141,255,.10),transparent 55%);
  border-radius:10px;font-size:12.5px;
  position:relative;
}
.sent-summary .ss-tag{font-size:11px;font-weight:700;color:var(--accent-2);flex-shrink:0}
.sent-summary .ss-text{font-weight:700;color:var(--accent);font-size:13px}
.sent-summary .ss-src{font-size:10.5px;color:var(--muted);margin-left:auto;padding-left:12px}

/* --- 持仓小眼睛（无外框·纯文字） --- */
.eye-btn{
  display:inline-flex;align-items:center;gap:6px;
  padding:5px 10px;border:0;background:transparent;
  border-radius:8px;cursor:pointer;font-family:var(--font);
  color:var(--text-2);
  transition:all .18s var(--ease);
}
.eye-btn:hover{background:var(--glass-2);color:var(--accent)}
.eye-btn:active{transform:scale(.94)}
.eye-btn .ci{font-size:15px;line-height:1;transition:transform .25s var(--ease);display:inline-block}
.eye-btn .cl{font-size:12.5px;font-weight:600;letter-spacing:.2px}
.eye-btn.toggle-on .ci{transform:scale(1.08)}
.eye-btn.toggle-on{color:var(--muted)}
.pt-val.masked,.g-item .v.masked{color:var(--muted)}

/* --- 今日关键词弹幕 --- */
.kw-bar{
  overflow:hidden;border-radius:10px;margin-bottom:12px;
  background:var(--glass-2);border:1px solid var(--border);box-shadow:var(--shadow-xs);
  position:relative;
}
.kw-track{
  display:flex;align-items:center;gap:8px;padding:8px 12px;white-space:nowrap;
  animation:kwScroll 26s linear infinite;
}
.kw-bar:hover .kw-track{animation-play-state:paused}
@keyframes kwScroll{from{transform:translateX(0)}to{transform:translateX(-32%)}}
.kw-hint{font-size:11px;font-weight:700;color:var(--accent-2);flex-shrink:0;margin-right:4px}
.kw-tag{
  font-size:12px;padding:3px 12px;border-radius:20px;cursor:pointer;flex-shrink:0;
  background:var(--glass);border:1px solid var(--border-strong);color:var(--text-2);
  transition:all .18s var(--ease);
}
.kw-tag:hover{color:#fff;background:linear-gradient(135deg,var(--accent),var(--accent-3));border-color:transparent;transform:translateY(-1px)}
.kw-tag.kw-hot{font-size:13.5px;font-weight:700;color:var(--accent-2);border-color:rgba(0,212,255,.4)}
.kw-tag.kw-co,.kw-tag.kw-stock{font-weight:600}
.kw-tag.kw-index,.kw-tag.kw-people{opacity:.88}
.kw-tag.kw-loading{cursor:default}
.kw-tag.kw-loading:hover{background:var(--glass);color:var(--muted)}

/* --- 榜单交互：渐变柱 + 排序态 + 入场动画 --- */
/* 固定 4 列网格：名称 / 柱 / 数值 / 涨跌。
   四张榜单（净流入、净流出、涨幅、跌幅）列位完全一致，间距由 gap 统一控制，不再随内容长短漂移 */
.flow-row{
  display:grid;align-items:center;
  grid-template-columns:minmax(0,1.35fr) minmax(22px,.65fr) 58px 52px;
  gap:8px;padding:5px 8px;border-radius:8px;
  cursor:default;transition:background .15s;
}
.flow-row:hover{background:var(--card-2)}
.flow-row .fr-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;color:var(--text-2)}
.flow-row .fr-bar{min-width:0;height:8px;border-radius:4px;background:var(--card-2);overflow:hidden;position:relative}
.flow-row .fr-bar i{display:block;height:100%;border-radius:4px;transition:width .5s cubic-bezier(.22,1,.36,1)}
.flow-row .fr-val{min-width:0;text-align:right;font-family:var(--mono);font-size:11.5px;white-space:nowrap;overflow:hidden}
.flow-row .fr-pct{min-width:0;text-align:right;font-family:var(--mono);font-size:11.5px;white-space:nowrap;overflow:hidden}
.sub-title.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;transition:color .15s}
.sub-title.sortable:hover{color:var(--accent)}
.sub-title.sorting{color:var(--accent)}
.flow-box .fr-list{opacity:0;transform:translateY(4px);animation:frIn .4s var(--ease) forwards}
@keyframes frIn{to{opacity:1;transform:translateY(0)}}

/* --- 榜单周期筛选 --- */
.period-tabs{display:flex;gap:4px;margin-left:auto}
.period-tabs .idx-tab{padding:3px 10px;font-size:11px}

/* ============================================================
   改版 v7：基金分类卡 / ETF对比 / 资产配置适配 / 知识库链接弱化 / 行业分析 / 体检模块
   ============================================================ */

/* --- 基金：分类层级（全部 + 类型分类，色点+占比条） --- */
.fund-cats{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:12px;margin-bottom:16px}
.fc-card{
  border:1px solid transparent;border-radius:var(--radius-sm);padding:12px 14px;
  background:var(--glass-2);box-shadow:var(--shadow-xs);cursor:pointer;
  transition:all .18s var(--ease);position:relative;overflow:hidden;
}
/* 分类底色（无框感，浅色渐变区分） */
.fc-card.fc-all{background:linear-gradient(135deg,rgba(77,141,255,.16),rgba(77,141,255,.04) 60%,var(--glass-2))}
.fc-card.fc-qdii{background:linear-gradient(135deg,rgba(143,107,255,.14),rgba(143,107,255,.03) 60%,var(--glass-2))}
.fc-card.fc-股票型{background:linear-gradient(135deg,rgba(77,141,255,.14),rgba(77,141,255,.03) 60%,var(--glass-2))}
.fc-card.fc-指数型{background:linear-gradient(135deg,rgba(245,183,61,.14),rgba(245,183,61,.03) 60%,var(--glass-2))}
.fc-card.fc-混合型{background:linear-gradient(135deg,rgba(143,107,255,.14),rgba(143,107,255,.03) 60%,var(--glass-2))}
.fc-card:hover{transform:translateY(-2px);box-shadow:var(--shadow)}
.fc-card.active{border-color:var(--accent);box-shadow:0 0 0 1.5px var(--accent)}
.fc-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}
.fc-name{font-size:12.5px;font-weight:600;display:flex;align-items:center;gap:6px}
.fc-name::before{content:"";width:8px;height:8px;border-radius:50%;flex-shrink:0}
.fc-all .fc-name::before{background:var(--accent)}
.fc-qdii .fc-name::before{background:var(--accent-3)}
.fc-股票型 .fc-name::before{background:#4d8dff}
.fc-指数型 .fc-name::before{background:#f5b73d}
.fc-混合型 .fc-name::before{background:#8f6bff}
.fc-count{font-family:var(--mono);font-size:18px;font-weight:700}
.fc-bar{height:5px;border-radius:3px;background:rgba(128,138,160,.18);overflow:hidden;margin-top:6px}
.fc-bar i{display:block;height:100%;border-radius:3px}
.fc-all .fc-bar i{background:var(--accent)}
.fc-qdii .fc-bar i{background:var(--accent-3)}
.fc-股票型 .fc-bar i{background:#4d8dff}
.fc-指数型 .fc-bar i{background:#f5b73d}
.fc-混合型 .fc-bar i{background:#8f6bff}
.fc-pct{font-size:10.5px;color:var(--muted);margin-top:4px;font-family:var(--mono)}

/* --- ETF 对比勾选 --- */
.etf-card{position:relative}
.etf-card .etf-cmp{
  position:absolute;top:10px;right:10px;width:15px;height:15px;z-index:3;
  accent-color:var(--accent);cursor:pointer;opacity:.55;transition:opacity .15s;
}
.etf-card:hover .etf-cmp,.etf-card .etf-cmp:checked{opacity:1}
.etf-card .nm{padding-right:18px}

/* --- ETF 资产配置适配 --- */
.etf-detail{grid-template-columns:minmax(0,1.45fr) minmax(0,1fr)}
.etf-detail .flow-box{min-width:0}
.alloc-box .chart-alloc{height:220px;width:100%}
.alloc-box .chart-mini{height:150px;width:100%}

/* --- 知识库链接弱化：取消高亮，仅 hover 变色 + 手型 --- */
.kb-item.kb-link .kb-q{color:var(--text);text-decoration:none;font-weight:550}
.kb-item.kb-link .kb-q:hover{color:var(--accent)}
.kb-item.kb-link .kb-q .go{color:var(--muted);font-size:11px;opacity:.7;transition:transform .2s var(--ease)}
.kb-item.kb-link .kb-q:hover .go{transform:translate(2px,-2px);color:var(--accent);opacity:1}
a.kb-q{cursor:pointer}

.rsc-search input{flex:1;min-width:220px;background:var(--glass-2);border:1px solid var(--border);color:var(--text);border-radius:10px;padding:10px 14px;font-size:13px;font-family:var(--font);outline:none;box-shadow:var(--shadow-xs);transition:border-color .15s,box-shadow .15s}
.rsc-search input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(77,141,255,.12)}

/* ============================================================
   改版 v6：顶部胶囊 / 头条强化 / 泳道整卡着色 / 环形图 / 清除筛选
   ============================================================ */

/* --- 顶部按钮：图标 + 常驻中文标签胶囊 --- */
.icon-btn.cap{width:auto;padding:0 12px;gap:7px;display:inline-flex;align-items:center;border-radius:10px}
.icon-btn.cap .ci{font-size:14px;line-height:1}
.icon-btn.cap .cl{font-size:12px;font-weight:550;letter-spacing:.2px;white-space:nowrap}
/* 语言按钮与其他顶栏按钮保持同一套底色/文字色，不再另成一套 */
.icon-btn.cap.lang-btn{width:auto;color:var(--text-2)}
.icon-btn.cap.lang-btn .ci{color:inherit;font-size:14px}
@media (max-width:640px){.icon-btn.cap .cl{display:none}}

/* --- 新闻头条卡：与列表明显区分 --- */
.news-headline .hl-card{
  background:linear-gradient(135deg,rgba(77,141,255,.16),rgba(0,212,255,.07) 55%,rgba(143,107,255,.05));
  border:1px solid var(--border-strong);
  box-shadow:var(--shadow-sm);
  position:relative;overflow:hidden;
}
.news-headline .hl-card::before{
  content:"";position:absolute;top:0;left:0;width:4px;height:100%;
  background:linear-gradient(180deg,var(--accent),var(--accent-2));
}
.news-headline .hl-card::after{
  content:"🔥";position:absolute;top:10px;right:12px;font-size:15px;opacity:.55;
}
.news-headline .hl-card .hl-title{font-size:14px;font-weight:650;padding-right:24px}

/* --- 基金类型着色：渐变底色区分（无彩色横条） --- */
.sl-seg[data-type="股票型"]{background:linear-gradient(180deg,rgba(77,141,255,.13),var(--glass-2) 45%)}
.sl-seg[data-type="指数型"]{background:linear-gradient(180deg,rgba(245,183,61,.13),var(--glass-2) 45%)}
.sl-seg[data-type="混合型"]{background:linear-gradient(180deg,rgba(143,107,255,.13),var(--glass-2) 45%)}
.sl-seg[data-type="债券型"]{background:linear-gradient(180deg,rgba(46,194,126,.13),var(--glass-2) 45%)}
.sl-seg[data-type="QDII"]{background:linear-gradient(180deg,rgba(0,212,255,.13),var(--glass-2) 45%)}
.sl-seg .sl-head{font-size:12.5px;font-weight:650}
.sl-clear{
  align-self:stretch;display:flex;align-items:center;padding:0 12px;font-size:11.5px;
  border:1px dashed var(--border-strong);border-radius:10px;color:var(--muted);cursor:pointer;
  background:var(--glass-2);transition:all .18s var(--ease);font-family:var(--font);
}
.sl-clear:hover{color:var(--up);border-color:var(--up);transform:translateY(-1px)}

/* --- 首页行业区块：资金占比环形图 --- */
.sec-flow-extra{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:16px}
.donut-wrap{background:var(--glass-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px 14px;box-shadow:var(--shadow-xs)}
.chart-donut{height:170px}
.donut-legend{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:6px}
.donut-legend .dl{display:flex;align-items:center;gap:5px;font-size:10.5px;color:var(--muted)}
.donut-legend .dl i{width:8px;height:8px;border-radius:3px}

/* --- 新闻中心：板块筛选下拉 --- */
.news-tools-right select{min-width:90px}
#newsInd{max-width:130px}

@media (max-width:900px){
  .sec-flow-extra{grid-template-columns:1fr}
  .health-charts{grid-template-columns:1fr}
  .adv-grid{grid-template-columns:1fr}
  .scan-charts{grid-template-columns:1fr}
  .stk-searchbox{width:100%;margin-left:0;margin-top:8px}
  .stk-searchbox input{flex:1;width:auto}
  .stock-table-head .sth-nums span{width:56px}
  .stock-list-row .info span{width:56px}
}

/* ============================================================
   改版 v4：SVG图标 / tooltip / 指数Tab+spark / 情绪驾驶舱 / 泳道 / 折叠 / 微交互
   ============================================================ */

/* --- 侧边栏 SVG 线性图标：hover 半填充动效 --- */
.sidebar .nav-ico svg{width:16px;height:16px;display:block;transition:fill .25s var(--ease),fill-opacity .25s,transform .25s var(--ease)}
.sidebar .tab:hover .nav-ico svg{fill:currentColor;fill-opacity:.14;transform:scale(1.12)}
.sidebar .tab.active .nav-ico svg{fill:currentColor;fill-opacity:.2}
.sidebar .tab .nav-ico{border-radius:8px}
.sidebar .tab{padding:10px 14px;font-size:14px;font-weight:550}
.sidebar .brand-name{font-size:17px;font-weight:700}

/* --- 顶部按钮 tooltip（深色气泡，1.5s 延迟淡入） --- */
.icon-btn{position:relative}
.icon-btn[data-tip]::after{
  content:attr(data-tip);
  position:absolute;top:calc(100% + 8px);left:50%;transform:translateX(-50%) translateY(-3px);
  background:var(--toast-bg);color:var(--toast-text);font-size:11px;padding:4px 10px;border-radius:7px;
  white-space:nowrap;opacity:0;pointer-events:none;z-index:80;
  box-shadow:var(--shadow-sm);
  transition:opacity .2s var(--ease) 1.5s,transform .2s var(--ease) 1.5s;
}
.icon-btn[data-tip]:hover::after{opacity:1;transform:translateX(-50%) translateY(0)}
.icon-btn[data-tip]::before{
  content:"";position:absolute;top:calc(100% + 3px);left:50%;transform:translateX(-50%);
  border:5px solid transparent;border-bottom-color:var(--toast-bg);
  opacity:0;transition:opacity .2s var(--ease) 1.5s;z-index:80;
}
.icon-btn[data-tip]:hover::before{opacity:1}

/* --- 浅色模式：去掉暗色系发光 / 关闭毛玻璃 / 提升次要信息可读（暗色取值完全不变） --- */
[data-theme="light"]{
  --muted:#4d586f;
  --border:rgba(20,40,90,.18);
  --border-strong:rgba(20,40,90,.32);
  --grid:rgba(20,40,90,.10);
  --axis:rgba(20,40,90,.20);
  --card-2:#e6edf7;
}
/* 卡片/顶栏改实色，不再做毛玻璃（白底上半透明只会发糊、看不出边界） */
[data-theme="light"] .card,
[data-theme="light"] .topbar{backdrop-filter:none;-webkit-backdrop-filter:none}
/* 发光是暗色美学，白底上会变成脏光斑：标题竖条 / 侧栏指示 / 状态点 / 图例点 全部去掉 */
[data-theme="light"] .bar,
[data-theme="light"] .sidebar .tab.active::before,
[data-theme="light"] .tdot,
[data-theme="light"] .pg-card .pg-name::before,
[data-theme="light"] .gauge-legend i{box-shadow:none}
[data-theme="light"] .sidebar .logo{box-shadow:0 4px 12px rgba(30,50,100,.16)}
[data-theme="light"] .icon-btn:hover{box-shadow:0 4px 12px rgba(30,50,100,.14)}
[data-theme="light"] .btn.primary{box-shadow:0 4px 12px rgba(47,107,255,.22)}
[data-theme="light"] .btn.primary:hover{box-shadow:0 6px 16px rgba(47,107,255,.30)}
/* 次要文字不再叠乘 opacity */
[data-theme="light"] .card-hint{opacity:1}
[data-theme="light"] .idx-sub,[data-theme="light"] .pg-num span,[data-theme="light"] .sent-card .l{font-size:11.5px}
[data-theme="light"] .indcomp-matrix-wrap .m-empty{opacity:.8}
[data-theme="light"] .sub-title.sortable::after{opacity:.7}
[data-theme="light"] .chart-empty .ce-sub{opacity:.9}
/* 亮色吐司：浅底深字 + 边框 */
[data-theme="light"] .toast,
[data-theme="light"] .icon-btn[data-tip]::before{border:1px solid var(--border-strong)}

/* ============================================================
   亮色：容器去渐变
   渐变底在白底上会显脏、边界发糊，统一改为低饱和平涂。
   只对 [data-theme="light"] 生效，暗色保持原设计不变。
   ============================================================ */
[data-theme="light"] .port-total,
[data-theme="light"] .hl-card,
[data-theme="light"] .advice-box,
[data-theme="light"] .d-hero{background:#eef3fc}
[data-theme="light"] .ml-chip{background:#fdecec}
[data-theme="light"] .head-ico{background:#e8eefb}
[data-theme="light"] .hi-wallet,[data-theme="light"] .hi-bell{background:#fdf4e3}
[data-theme="light"] .hi-chart,[data-theme="light"] .hi-health{background:#fdecec}
[data-theme="light"] .hi-thermo{background:#e6f8fd}
[data-theme="light"] .hi-flow{background:#f1ecfe}
[data-theme="light"] .hi-news{background:#e7f8f0}
[data-theme="light"] .hi-search{background:#eaf0fe}

/* 盘面结论条：不再用渐变底，改纯色 + 细边框，与卡片语言一致 */
[data-theme="light"] .sent-summary{
  background:var(--card-2);
  border:1px solid var(--border);
  padding:10px 14px;
  margin-bottom:16px;
}
/* 亮色下时间戳等最小号灰字再压深一档，避免和摘要同色分不开层级 */
[data-theme="light"] .news-meta,[data-theme="light"] .news-summary{color:#525c74}

/* 基金分类卡 / 类型分布分段：平涂替代渐变 */
[data-theme="light"] .fc-card.fc-all,
[data-theme="light"] .fc-card.fc-股票型,
[data-theme="light"] .sl-seg[data-type="股票型"]{background:#eef3fc}
[data-theme="light"] .fc-card.fc-qdii,
[data-theme="light"] .fc-card.fc-混合型,
[data-theme="light"] .sl-seg[data-type="混合型"]{background:#f1ecfe}
[data-theme="light"] .fc-card.fc-指数型,
[data-theme="light"] .sl-seg[data-type="指数型"]{background:#fdf6e8}
[data-theme="light"] .sl-seg[data-type="债券型"]{background:#e7f8f0}
[data-theme="light"] .sl-seg[data-type="QDII"]{background:#e6f8fd}

/* 持仓分组卡：左侧色条收窄并降饱和，底色改平涂（原先 4px 高饱和竖条像渲染异常） */
[data-theme="light"] .pg-card{border-left-width:3px}
[data-theme="light"] .pg-A_fund{border-left-color:#7aa7f0;background:#f2f7ff}
[data-theme="light"] .pg-US_fund{border-left-color:#5cc9de;background:#effbfe}
[data-theme="light"] .pg-A_etf{border-left-color:#e0a63f;background:#fdf8ec}
[data-theme="light"] .pg-A_stock{border-left-color:#e06a70;background:#fdf0f1}
[data-theme="light"] .pg-HK_fund,[data-theme="light"] .pg-HK_etf,[data-theme="light"] .pg-HK_stock{
  border-left-color:#a58ce0;background:#f5f1ff}
[data-theme="light"] .pg-US_etf,[data-theme="light"] .pg-US_stock{
  border-left-color:#5bbd92;background:#eefaf4}
[data-theme="light"] .pg-card .pg-name::before{box-shadow:none}

/* 侧边栏选中项：亮色下改实色浅底 + 细边框，去掉蓝紫渐变与投影 */
/* 所有项预留透明边框，选中时才上色，避免行高跳动 1px */
[data-theme="light"] .sidebar .tab{border:1px solid transparent}
[data-theme="light"] .sidebar .tab.active{
  color:var(--accent);background:#dfeaff;
  border:1px solid rgba(47,107,255,.30);
  box-shadow:none;font-weight:600;
}
[data-theme="light"] .sidebar .tab.active .nav-ico{background:rgba(47,107,255,.20)}
/* 指示条贴住选中块左缘，不再悬在侧栏最外边显得脱节 */
[data-theme="light"] .sidebar .tab.active::before{background:var(--accent);left:-8px;width:3px}

/* 榜单小字不再叠乘 opacity；面板边框加强，四栏边界看得见 */
[data-theme="light"] .flow-row .fr-pct{opacity:1}
[data-theme="light"] .flow-box{border-color:var(--border-strong)}

/* 亮色下把人为加重的半粗字重降一档（白底上 550/600 会显得发闷、发脏） */
[data-theme="light"] .sidebar .tab{font-weight:500}
[data-theme="light"] .icon-btn.cap .cl{font-weight:500}
[data-theme="light"] .lang-btn{font-weight:500}
[data-theme="light"] .pg-card .pg-num b{font-weight:650}
[data-theme="light"] .clock{color:var(--text-2)}

/* --- 大盘指数：地区 Tab + 徽标 + sparkline --- */
.idx-tabs{display:flex;gap:4px;margin-left:auto}
.idx-tab{
  border:1px solid var(--border);background:var(--glass-2);color:var(--text-2);
  border-radius:20px;padding:4px 12px;font-size:11.5px;cursor:pointer;font-family:var(--font);
  transition:all .18s var(--ease);
}
.idx-tab:hover{border-color:var(--accent);color:var(--accent)}
.idx-tab.active{background:linear-gradient(135deg,var(--accent),var(--accent-3));color:#fff;border-color:transparent}
.idx-region{transition:opacity .25s var(--ease)}
.idx-region.hidden{display:none}
.idx-row{border-bottom:1px solid var(--border);padding:4px 0 8px;margin-bottom:8px}
.idx-row:last-child{border-bottom:none;margin-bottom:0}
.idx-badge{
  display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;
  padding:2px 10px;border-radius:20px;margin:2px 0 6px;
}
.idx-badge.bA{color:var(--up);background:rgba(242,84,91,.1);border:1px solid rgba(242,84,91,.3)}
.idx-badge.bHK{color:var(--accent-3);background:rgba(143,107,255,.1);border:1px solid rgba(143,107,255,.3)}
.idx-badge.bUS{color:var(--accent-2);background:rgba(0,212,255,.1);border:1px solid rgba(0,212,255,.3)}
.idx-card{position:relative}
.idx-spark{width:100%;height:34px;margin-top:6px;display:block}

/* --- 情绪驾驶舱：仪表居中无框 + 左右分组 --- */
.sent-cockpit{display:grid;grid-template-columns:minmax(0,1fr) 320px minmax(0,1fr);gap:16px;align-items:stretch}
.cockpit-center{align-self:center;padding:4px 4px 0}
.cockpit-center .chart-cockpit{height:220px}
.cockpit-side{display:flex;flex-direction:column;justify-content:center;gap:10px;min-width:0}
.cockpit-side .sent-group{margin:0}
.cockpit-side .sent-card{text-align:center}
.cockpit-side .sent-card .v{font-size:25px;font-weight:700}
.chart-cockpit{height:220px}
.gauge-legend{display:flex;justify-content:center;gap:14px;margin-top:2px;padding-top:6px;border-top:1px dashed var(--border)}
.gauge-legend .gl{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--muted)}
.gauge-legend .gl i{width:10px;height:10px;border-radius:3px;display:inline-block}
.gauge-legend .gl-cold i{background:var(--down);box-shadow:0 0 6px var(--down)}
.gauge-legend .gl-mid i{background:#f5b73d;box-shadow:0 0 6px #f5b73d}
.gauge-legend .gl-hot i{background:var(--up);box-shadow:0 0 6px var(--up)}
.sent-group{border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;background:var(--glass-2);box-shadow:var(--shadow-xs);position:relative;overflow:hidden}
.sent-group::before{content:"";position:absolute;top:0;left:0;right:0;height:3px}
.g-profit::before{background:linear-gradient(90deg,var(--up),var(--accent-3))}
.g-liquid::before{background:linear-gradient(90deg,var(--accent-2),var(--accent))}
.g-strength::before{background:linear-gradient(90deg,#f5b73d,var(--accent-3))}
.g-ladder::before{background:linear-gradient(90deg,var(--up),#f5b73d)}
.sg-head{font-size:12px;font-weight:600;color:var(--text-2);margin-bottom:6px}
.sg-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.sg-grid .sent-card{padding:10px 8px;margin:0}
.sg-grid .sent-card .v{font-size:22px}
.sent-card .u{display:none}

/* --- 大盘指数：grid 自适应撑满整行 --- */
.idx-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}
.idx-card{min-width:0}

/* --- 题材行业侧栏 --- */
.themes-wrap{display:grid;grid-template-columns:1fr 150px;gap:14px;align-items:start}
.industry-side{display:flex;flex-direction:column;gap:6px}
.industry-side .is-title{font-size:11px;color:var(--muted);font-weight:600;margin-bottom:2px}
.industry-side .is-row{
  display:flex;justify-content:space-between;align-items:center;gap:6px;
  font-size:11px;padding:6px 10px;border-radius:8px;cursor:pointer;
  border:1px solid var(--border);background:var(--glass-2);transition:all .15s;
}
.industry-side .is-row:hover{border-color:var(--accent);transform:translateX(2px)}
.industry-side .is-row.active{border-color:var(--accent);background:rgba(77,141,255,.1)}
.industry-side .is-row .n{color:var(--text-2);font-weight:550}
.industry-side .is-row .c{font-family:var(--mono);font-size:10.5px;color:var(--muted)}

/* --- 基金泳道图 --- */
.swimlane{display:flex;gap:6px;margin-bottom:12px;flex-wrap:wrap}
.sl-seg{
  flex:1;min-width:110px;border:1px solid var(--border);border-radius:10px;overflow:hidden;
  cursor:pointer;background:var(--glass-2);transition:all .18s var(--ease);
}
.sl-seg:hover{transform:translateY(-2px);box-shadow:var(--shadow-sm)}
.sl-seg.active{border-color:var(--accent);box-shadow:0 0 0 1.5px var(--accent)}
.sl-head{display:flex;justify-content:space-between;align-items:center;padding:7px 10px;font-size:12px;font-weight:600}
.sl-count{font-size:10.5px;color:var(--muted);font-weight:400;font-family:var(--mono)}
.sl-bar{display:flex;height:10px}
.sl-bar i{display:block;height:100%}

/* --- ETF 重仓卡片 --- */
.etf-hl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.etf-hl-card{border:1px solid var(--border);border-radius:10px;padding:10px 12px;background:var(--glass-2);display:flex;align-items:center;gap:10px;transition:all .18s var(--ease)}
.etf-hl-card:hover{transform:translateY(-2px);border-color:var(--border-strong);box-shadow:var(--shadow-xs)}
.etf-hl-card .rank{font-size:10px;color:var(--muted);width:14px}
.etf-hl-card .nm{font-size:12.5px;font-weight:600;line-height:1.35}
.etf-hl-card .wt{font-family:var(--mono);font-size:11.5px;color:var(--text-2)}
.etf-hl-card .ind-tag{margin-top:3px}
.etf-hl-card .ring{width:34px;height:34px;flex-shrink:0}

/* --- 行业箭头引导 --- */
.chain-seg{position:relative}
.chain-arrow{text-align:center;color:var(--accent-3);font-size:16px;line-height:1;margin:-4px 0 2px;opacity:.75;animation:arrowPulse 2s ease infinite}
@keyframes arrowPulse{0%,100%{transform:translateY(0);opacity:.75}50%{transform:translateY(3px);opacity:1}}
.chain-seg.hl{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}

/* --- 知识库卡片网格 + 栏目色带 --- */
.kb-sec{position:relative;padding-top:14px}
.kb-sec::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;border-radius:3px}
.kb-sec.c-basic::before{background:#4d8dff}
.kb-sec.c-fund::before{background:#f5b73d}
.kb-sec.c-trade::before{background:#00d4ff}
.kb-sec.c-macro::before{background:#8f6bff}
.kb-sec.c-invest::before{background:#2ec27e}
.kb-sec .kb-items{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:8px}
.kb-item{margin-bottom:0}
.kb-a{font-size:12.3px}

/* --- 知识库栏目导航 --- */
.kb-nav{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  padding:10px 14px;margin-bottom:14px;
  background:var(--glass);border:1px solid var(--border);border-radius:12px;
  box-shadow:var(--shadow-xs);position:sticky;top:64px;z-index:30;
  backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
}
.kb-nav-title{font-size:11.5px;color:var(--muted);font-weight:600;margin-right:4px}
/* 栏目导航：突出醒目，每栏目独立色 */
.kb-nav{padding:12px 16px;border-width:1.5px;border-color:var(--border-strong);box-shadow:var(--shadow-sm)}
.kb-nav-btn{
  border:1.5px solid var(--border-strong);background:var(--glass-2);color:var(--text-2);
  border-radius:22px;padding:6px 15px;font-size:12.5px;font-weight:600;cursor:pointer;font-family:var(--font);
  transition:all .2s var(--ease);
}
.kb-nav-btn:hover{transform:translateY(-1px);box-shadow:var(--shadow-xs)}
.kb-nav-btn.kb-nav-basic{color:#4d8dff;border-color:rgba(77,141,255,.55);background:rgba(77,141,255,.08)}
.kb-nav-btn.kb-nav-basic:hover,.kb-nav-btn.kb-nav-basic.active{background:#4d8dff;color:#fff;border-color:#4d8dff}
.kb-nav-btn.kb-nav-fund{color:#f5b73d;border-color:rgba(245,183,61,.55);background:rgba(245,183,61,.08)}
.kb-nav-btn.kb-nav-fund:hover,.kb-nav-btn.kb-nav-fund.active{background:#f5b73d;color:#fff;border-color:#f5b73d}
.kb-nav-btn.kb-nav-trade{color:#00d4ff;border-color:rgba(0,212,255,.5);background:rgba(0,212,255,.08)}
.kb-nav-btn.kb-nav-trade:hover,.kb-nav-btn.kb-nav-trade.active{background:#00a8c8;color:#fff;border-color:#00a8c8}
.kb-nav-btn.kb-nav-macro{color:#8f6bff;border-color:rgba(143,107,255,.55);background:rgba(143,107,255,.08)}
.kb-nav-btn.kb-nav-macro:hover,.kb-nav-btn.kb-nav-macro.active{background:#8f6bff;color:#fff;border-color:#8f6bff}
.kb-nav-btn.kb-nav-invest{color:#2ec27e;border-color:rgba(46,194,126,.5);background:rgba(46,194,126,.08)}
.kb-nav-btn.kb-nav-invest:hover,.kb-nav-btn.kb-nav-invest.active{background:#2ec27e;color:#fff;border-color:#2ec27e}
/* 栏目标题（仅栏目处 emoji） */
.kb-sec-title{margin:0 0 10px;font-size:15.5px;font-weight:700;color:var(--text)}
/* 链接型条目：弱化视觉强调，仅 hover 变色 + 手型（v7 覆盖高亮） */
.kb-item.kb-link .kb-q{color:var(--text);text-decoration:none;font-weight:550}
.kb-item.kb-link .kb-q:hover{color:var(--accent)}
.kb-item.kb-link .kb-q .go{font-size:11px;color:var(--muted);opacity:.7;transition:transform .2s var(--ease)}
.kb-item.kb-link .kb-q:hover .go{transform:translate(2px,-2px);color:var(--accent);opacity:1}
/* （kb-nav 移动端定位已并入 <960px 侧栏横排断点统一管理） */

/* --- 设置折叠分区 --- */
.set-sec{transition:box-shadow var(--dur) var(--ease)}
.set-sec .sec-head{cursor:pointer;-webkit-user-select:none;user-select:none;position:relative;padding-right:28px}
.set-sec .sec-head::after{
  content:"▾";position:absolute;right:6px;top:50%;transform:translateY(-50%);
  color:var(--muted);font-size:13px;transition:transform .25s var(--ease);
}
.set-sec.collapsed .sec-head::after{transform:translateY(-50%) rotate(-90deg)}
.set-sec.collapsed .sec-body{display:none}
.sec-num{
  width:22px;height:22px;border-radius:7px;flex-shrink:0;
  display:grid;place-items:center;font-size:12px;font-weight:700;color:#fff;
  background:linear-gradient(135deg,var(--accent),var(--accent-3));
  box-shadow:0 2px 8px rgba(77,141,255,.35);
}

/* --- 微交互：刷新旋转 / 卡片 stagger / 主题转场 / 空状态 --- */
#btnRefresh.spinning{animation:spin .7s ease}
@keyframes spin{to{transform:rotate(360deg)}}
.page.active .card,.page.active .kb-hero,.page.active .ind-hot{animation:fadeUp .38s var(--ease) both}
body.theme-fade::after{
  content:"";position:fixed;top:0;left:0;right:0;bottom:0;z-index:200;pointer-events:none;
  background:radial-gradient(circle at var(--fx,50% 50%),rgba(77,141,255,.18),transparent 60%);
  animation:themeWash .6s ease forwards;
}
@keyframes themeWash{from{opacity:1}to{opacity:0}}
.port-empty-art{font-size:52px;margin-bottom:10px;opacity:.85}
.sent-card.hot-pulse .v{animation:pulse 1.6s ease infinite}
@keyframes pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.06)}}
.news-more{text-align:center;margin-top:14px}
.news-more.hidden{display:none}
.news-day{font-size:11px;color:var(--muted);font-weight:600;margin:12px 0 4px;display:flex;align-items:center;gap:8px}
.news-day::after{content:"";flex:1;height:1px;background:var(--border)}
mark.hl{background:rgba(245,183,61,.3);color:inherit;border-radius:3px;padding:0 2px}

@media (max-width:900px){
  .sent-cockpit{grid-template-columns:1fr}
  .chart-cockpit{height:230px}
  .themes-wrap{grid-template-columns:1fr}
  .idx-tabs{width:100%;margin-left:0}
  .kb-sec .kb-items{grid-template-columns:1fr}
}

/* ============================================================
   通用原则迁移 v3：数字分级 / 色块编码 / 标签 / 说明 / 动效
   ============================================================ */
.hint{font-size:11px;color:var(--muted);margin:-6px 0 10px;line-height:1.6}
/* 数字分级放大 */
.scan-block .v{font-size:19px;font-weight:650}
.scan-block .v.sm{font-size:13px}
.kv-cell .v{font-size:15.5px;font-weight:600}
.etf-card .nm > span:last-child{font-size:18px;font-weight:700}
.stock-list-row .info{font-size:13px}
.ind-hot-card .pct{font-size:20px}
.fund-row .ind-tag,.stock-list-row .ind-tag{margin-left:2px}
/* 类型色点（设置页持仓表） */
.tdot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;vertical-align:1px;box-shadow:0 0 6px currentColor}
.t-fund{background:#4d8dff;color:#4d8dff}
.t-etf{background:#f5b73d;color:#f5b73d}
.t-stock{background:#f2545b;color:#f2545b}
/* ETF 卡市场色条 */
.etf-card{border-left:4px solid var(--border)}
.etf-A,.etf-A.active{border-left-color:#f5b73d}
.etf-US,.etf-US.active{border-left-color:#00d4ff}
.etf-HK,.etf-HK.active{border-left-color:#8f6bff}
/* 表格行 hover */
tr{transition:background .15s}
tbody tr:hover{background:var(--card-2)}
/* 资金流面板 hover 上浮 */
.flow-box{transition:transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}
.flow-box:hover{transform:translateY(-2px);box-shadow:var(--shadow-sm)}
/* 日历格 hover 已有 scale，补充 tooltip 提示 */
.cal-cell{position:relative}
/* 新闻中心行业标签对齐 */
.hl-title .ind-tag,.news-title .ind-tag{vertical-align:1px}
/* 个股扫描块 hover */
.scan-block{transition:transform var(--dur) var(--ease),border-color .15s}
.scan-block:hover{transform:translateY(-2px);border-color:var(--border-strong)}

@media (max-width:900px){
  .etf-card .nm > span:last-child{font-size:16px}
  .scan-block .v{font-size:17px}
}

/* ============================================================
   首页改版 v2：色块持仓 / 紧凑指数 / 情绪主体 / 行业标签
   ============================================================ */

/* --- 持仓总览：数字放大 --- */
.pt-val{font-size:27px;font-weight:700;letter-spacing:-.3px}
.pt-sub{font-size:13px}
.pt-item{gap:4px}

/* --- 持仓分组色块（不同市场×品种 = 不同颜色） --- */
.pg-card{position:relative;overflow:hidden;border-left:4px solid var(--border)}
.pg-A_fund{--pc:#4d8dff;border-left-color:var(--pc);background:linear-gradient(135deg,rgba(77,141,255,.16),rgba(77,141,255,.03) 55%)}
.pg-US_fund{--pc:#00d4ff;border-left-color:var(--pc);background:linear-gradient(135deg,rgba(0,212,255,.14),rgba(0,212,255,.03) 55%)}
.pg-A_etf{--pc:#f5b73d;border-left-color:var(--pc);background:linear-gradient(135deg,rgba(245,183,61,.16),rgba(245,183,61,.03) 55%)}
.pg-A_stock{--pc:#f2545b;border-left-color:var(--pc);background:linear-gradient(135deg,rgba(242,84,91,.16),rgba(242,84,91,.03) 55%)}
.pg-HK_fund,.pg-HK_etf,.pg-HK_stock{--pc:#8f6bff;border-left-color:var(--pc);background:linear-gradient(135deg,rgba(143,107,255,.16),rgba(143,107,255,.03) 55%)}
.pg-US_etf,.pg-US_stock{--pc:#2ec27e;border-left-color:var(--pc);background:linear-gradient(135deg,rgba(46,194,126,.16),rgba(46,194,126,.03) 55%)}
.pg-A_watch,.pg-HK_watch,.pg-US_watch{--pc:var(--muted)}
.pg-card .pg-name{display:flex;align-items:center;gap:7px}
.pg-card .pg-name::before{content:"";width:9px;height:9px;border-radius:50%;background:var(--pc);box-shadow:0 0 8px var(--pc)}
.pg-card .pg-num b{font-size:16px;font-weight:700}

/* --- 大盘指数（卡内文字保留紧凑）--- */
.idx-price{font-size:20px}
.idx-sub{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* --- 市场情绪：仪表盘为主体 --- */
.sent-layout{display:grid;grid-template-columns:340px 1fr;gap:20px;align-items:center}
.sent-gauge{background:var(--glass-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px;box-shadow:var(--shadow-xs)}
.chart-ga{height:250px}
.sent-right{min-width:0}
.sent-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:12px}
.sent-card .v{font-size:26px;font-weight:700}
.sent-note{font-size:11px;color:var(--muted);margin-top:12px;line-height:1.6;padding:0 4px}

/* --- 新闻行业标签 --- */
.ind-tag{
  display:inline-block;font-size:10px;font-weight:550;color:var(--accent-2);
  border:1px solid rgba(0,212,255,.35);background:rgba(0,212,255,.08);
  border-radius:6px;padding:1px 6px;white-space:nowrap;flex-shrink:0;
}
.news-title .ind-tag{order:-1}

@media (max-width:900px){
  .sent-layout{grid-template-columns:1fr}
  .chart-ga{height:220px}
}

/* ============================================================
   响应式：<960px 侧边栏收为顶部横排
   --side-h 由 JS 按侧栏实测高度写入（避免 top:54px 硬编码错位）
   ============================================================ */
@media (max-width: 960px){
  :root{--side-h:60px;--topbar-h:52px}
  .sidebar{
    position:fixed;top:0;left:0;right:0;bottom:auto;width:100%;height:auto;
    flex-direction:row;align-items:center;gap:8px;
    padding:10px 12px;overflow-x:auto;border-right:0;border-bottom:1px solid var(--border);
    -webkit-overflow-scrolling:touch;
  }
  .sidebar::-webkit-scrollbar{display:none}
  .sidebar .brand{display:none}
  .sidebar .nav{flex-direction:row;gap:4px;flex:1;flex-wrap:nowrap}
  .sidebar .tab{padding:8px 12px;white-space:nowrap;min-height:38px}
  .sidebar .tab .nav-ico{display:none}
  .sidebar .tab.active::before{display:none}
  .side-foot{display:none}
  .topbar{top:var(--side-h);margin-left:0;padding:8px 12px}
  .page{margin-left:0;padding:calc(14px + env(safe-area-inset-top,0px)) calc(14px + env(safe-area-inset-right,0px)) 40px calc(14px + env(safe-area-inset-left,0px))}
  .footer{margin-left:0;padding:8px 16px calc(20px + env(safe-area-inset-bottom,0px))}
  .sec-layout{grid-template-columns:1fr}
  .ind-hot-cards{grid-template-columns:repeat(2,1fr)}
  .ind-grid{grid-template-columns:1fr}
  .kb-nav{top:calc(var(--side-h) + var(--topbar-h) + 4px)} /* sticky 导航避开顶栏，原 top:58px 会被遮挡 */
}

/* --- 知识库 hero 双按钮 --- */
.kb-hero-actions{display:flex;gap:8px;flex-wrap:wrap}
.btn.ghost{background:transparent;border-style:dashed}
.hi-health{background:linear-gradient(135deg,rgba(242,84,91,.16),rgba(245,183,61,.06));color:var(--up);border-color:rgba(242,84,91,.3)}
.hi-search{background:linear-gradient(135deg,rgba(77,141,255,.18),rgba(143,107,255,.08));color:var(--accent);border-color:rgba(77,141,255,.3)}
.hi-bell{background:linear-gradient(135deg,rgba(245,183,61,.16),rgba(242,84,91,.06));color:#f5b73d;border-color:rgba(245,183,61,.3)}

/* ============================================================
   骨架屏 / 空态占位 / 排序指示（体验优化）
   ============================================================ */
.skeleton{
  border-radius:8px;position:relative;overflow:hidden;
  background:var(--card-2);
}
.skeleton::after{
  content:"";position:absolute;top:0;left:0;right:0;bottom:0; /* inset 简写旧 Safari 不识别，展开写 */
  background:linear-gradient(100deg,transparent 30%,var(--glass-hover) 50%,transparent 70%);
  transform:translateX(-100%);
  animation:skShine 1.4s ease-in-out infinite;
}
@keyframes skShine{to{transform:translateX(100%)}}
.sk-line{height:12px;margin:6px 0}
.sk-line.w60{width:60%}
.sk-line.w80{width:80%}
.sk-line.w40{width:40%}
.sk-block{height:120px;margin-top:8px}
.sk-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.sk-grid .skeleton{height:52px}
.sk-row{display:flex;gap:10px;align-items:center;padding:7px 0}
.sk-row .skeleton:nth-child(1){width:64px;height:12px;flex-shrink:0}
.sk-row .skeleton:nth-child(2){flex:1;height:12px}
.sk-row .skeleton:nth-child(3){width:70px;height:12px;flex-shrink:0}

/* 图表空态占位 */
.chart-empty{
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:8px;height:100%;min-height:120px;color:var(--muted);font-size:12.5px;
  border:1px dashed var(--border-strong);border-radius:var(--radius-sm);
  background:var(--card);
}
.chart-empty .ce-ico{font-size:22px;opacity:.7}
.chart-empty .ce-sub{font-size:11px;opacity:.75}

/* 榜单排序指示（↕ 点击切换） */
.sub-title.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;transition:color .15s}
.sub-title.sortable::after{
  content:"↕";font-size:10px;margin-left:3px;opacity:.45;font-family:var(--mono);
}
.sub-title.sortable:hover{color:var(--accent)}
.sub-title.sortable.sorting::after{opacity:1}
.sub-title.sortable.sorting.up::after{content:"▲"}
.sub-title.sortable.sorting.down::after{content:"▼"}

/* 加载超时/失败提示条 */
.loading-bar{
  display:flex;align-items:center;gap:8px;color:var(--muted);font-size:12px;
  padding:10px 0;animation:frIn .3s var(--ease) both;
}
.loading-bar .lb-dot{
  width:10px;height:10px;border-radius:50%;flex-shrink:0;
  background:var(--accent);                                   /* 旧浏览器回退：实心圆 */
  background:conic-gradient(var(--accent),var(--accent-2));   /* 支持 conic-gradient 时呈双色转圈 */
  animation:lbSpin 1s linear infinite;
}
@keyframes lbSpin{to{transform:rotate(360deg)}}

/* ============================================================
   基金详情抽屉
   ============================================================ */
.drawer-mask{
  position:fixed;top:0;left:0;right:0;bottom:0;z-index:80;background:rgba(5,8,18,.5);
  -webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:fadeIn .2s ease both;
}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
.drawer{
  position:fixed;top:0;right:0;bottom:0;z-index:81;width:520px;max-width:94vw;
  background:var(--glass);backdrop-filter:blur(24px) saturate(1.4);
  -webkit-backdrop-filter:blur(24px) saturate(1.4);
  border-left:1px solid var(--border-strong);
  box-shadow:var(--shadow-lg);
  display:flex;flex-direction:column;
  animation:drawerIn .3s var(--ease) both;
}
@keyframes drawerIn{from{transform:translateX(40px);opacity:0}to{transform:none;opacity:1}}
.drawer-head{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:16px 20px;border-bottom:1px solid var(--border);flex-shrink:0;
}
.drawer-head h3{font-size:15px;font-weight:650;display:flex;align-items:center;gap:8px;min-width:0}
.drawer-head h3 .dname{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.drawer-body{flex:1;overflow-y:auto;padding:18px 20px 32px}
.d-sec{margin-bottom:20px}
.d-sec-title{
  font-size:12.5px;font-weight:600;color:var(--text-2);letter-spacing:.3px;
  display:flex;align-items:center;gap:8px;margin-bottom:10px;padding-left:10px;
  border-left:3px solid var(--accent);border-radius:2px;
}
.d-hero{
  display:flex;gap:16px;align-items:center;padding:14px 16px;border-radius:var(--radius-sm);
  background:linear-gradient(120deg,rgba(77,141,255,.12),rgba(0,212,255,.05));
  border:1px solid var(--border-strong);margin-bottom:6px;overflow:hidden;
}
.d-hero .dh-info{flex:1;min-width:0}
.d-hero .dh-name{font-size:15.5px;font-weight:650;display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0}
.d-hero .dh-name .grade-badge{flex-shrink:0;padding:2px 10px;font-size:12px;white-space:nowrap}
.d-hero .dh-sub{font-size:11.5px;color:var(--muted);margin-top:4px;display:flex;gap:8px;flex-wrap:wrap}
.d-hero .dh-nums{display:flex;gap:18px;margin-top:10px;flex-wrap:wrap}
.d-hero .dh-nums b{font-family:var(--mono);font-size:16px;font-weight:650}
.d-hero .dh-nums .n-label{font-size:10.5px;color:var(--muted);display:block}
.d-hero .dh-ring{flex-shrink:0;width:104px;height:104px}
.perf-matrix{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.pm-cell{
  background:var(--card-2);border:1px solid var(--border);border-radius:var(--radius-sm);
  padding:8px 10px;text-align:center;
}
.pm-cell .p{font-family:var(--mono);font-size:14px;font-weight:650}
.pm-cell .l{font-size:10.5px;color:var(--muted);margin-top:2px}
.pm-cell .r{font-size:10px;color:var(--muted);margin-top:1px}
.rank-bar{position:relative;height:8px;border-radius:4px;background:linear-gradient(90deg,var(--down),var(--flat),var(--up));margin:14px 6px 26px}
.rank-bar i{position:absolute;top:-4px;width:3px;height:16px;border-radius:2px;background:var(--text);transform:translateX(-50%)}
.rank-bar .rb-label{position:absolute;top:12px;transform:translateX(-50%);font-size:10px;color:var(--muted);white-space:nowrap}
.risk-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.risk-cards .pm-cell .p{font-size:13px}
.hd-stock{display:flex;align-items:center;gap:8px;font-size:12px;padding:4px 0}
.hd-stock .nm{width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-2)}
.hd-stock .bar{flex:1;height:8px;border-radius:4px;background:var(--card-2);overflow:hidden}
.hd-stock .bar i{display:block;height:100%;border-radius:4px;background:linear-gradient(90deg,rgba(77,141,255,.53),var(--accent))}
.hd-stock .pct{width:52px;text-align:right;font-family:var(--mono);font-size:11px}
.hold-bar{display:flex;height:10px;border-radius:5px;overflow:hidden;margin:8px 0 6px}
.hold-bar i:nth-child(1){background:linear-gradient(90deg,var(--accent),var(--accent-2))}
.hold-bar i:nth-child(2){background:var(--card-2)}
.hold-legend{display:flex;gap:16px;font-size:11px;color:var(--muted)}
.hold-legend b{font-family:var(--mono)}
.d-concl{display:flex;gap:10px;flex-wrap:wrap;margin-top:8px}
.dc-chip{font-size:12px;padding:6px 12px;border-radius:20px;background:var(--card-2);border:1px solid var(--border)}
.dc-chip b{font-family:var(--mono)}
.dc-chip.style{color:var(--accent-2);border-color:var(--accent-2)}
.dc-chip.back{color:var(--up);border-color:var(--up)}

/* ============================================================
   组合行业穿透
   ============================================================ */
.indcomp-layout{display:grid;grid-template-columns:1.6fr 1fr;gap:16px}
.indcomp-main,.indcomp-side{min-width:0}
.indcomp-side .ind-row{
  display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:8px;cursor:pointer;
  transition:background .15s;font-size:12px;
}
.indcomp-side .ind-row:hover{background:var(--glass-hover)}
.indcomp-side .ind-row .nm{width:118px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-2);flex-shrink:0}
.indcomp-side .ind-row .bar{flex:1;height:10px;border-radius:5px;background:var(--card-2);overflow:hidden}
.indcomp-side .ind-row .bar i{display:block;height:100%;border-radius:5px;transition:width .5s var(--ease)}
.indcomp-side .ind-row .wt{width:56px;text-align:right;font-family:var(--mono);font-size:11px;flex-shrink:0}
.indcomp-side .ind-row .chg{width:52px;text-align:right;font-family:var(--mono);font-size:11px;flex-shrink:0}
.indcomp-side .ind-row.active{background:var(--glass-hover);box-shadow:inset 0 0 0 1px var(--accent)}
.indcomp-drill{
  margin-top:14px;padding:14px 16px;border-radius:var(--radius-sm);
  background:var(--card-2);border:1px solid var(--border);animation:frIn .3s var(--ease) both;
}
.indcomp-matrix{margin-top:16px;padding:14px 16px;border-radius:var(--radius-sm);background:var(--card);border:1px dashed var(--border-strong)}
.indcomp-matrix-wrap{overflow-x:auto}
.indcomp-matrix-wrap table{border-collapse:collapse;font-size:11px;width:100%}
.indcomp-matrix-wrap th,.indcomp-matrix-wrap td{padding:5px 7px;text-align:center;border-bottom:1px solid var(--border);white-space:nowrap}
.indcomp-matrix-wrap th{color:var(--muted);font-weight:500;position:sticky;top:0}
.indcomp-matrix-wrap td.fname{text-align:left;max-width:140px;overflow:hidden;text-overflow:ellipsis}
.indcomp-matrix-wrap td.cell{font-family:var(--mono);font-size:10.5px}
.indcomp-matrix-wrap .m-empty{color:var(--muted);opacity:.5}
.dist-tabs{display:flex;gap:6px;flex-wrap:wrap;margin-left:auto}
.dist-list{display:flex;flex-direction:column;gap:4px;max-height:300px;overflow-y:auto}
.dl-row{
  display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;cursor:pointer;
  font-size:12px;transition:background .15s;
}
.dl-row:hover{background:var(--glass-hover)}
.dl-row .nm{width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-2);flex-shrink:0}
.dl-row .bar{flex:1;height:9px;border-radius:5px;background:var(--card-2);overflow:hidden}
.dl-row .bar i{display:block;height:100%;border-radius:5px;transition:width .5s var(--ease)}
.dl-row .wt{width:70px;text-align:right;font-family:var(--mono);font-size:11px;flex-shrink:0}
.dl-row .ct{width:44px;text-align:right;font-size:10.5px;color:var(--muted);flex-shrink:0}
.dl-row.active{background:var(--glass-hover);box-shadow:inset 0 0 0 1px var(--accent)}
@media (max-width:1100px){.indcomp-layout{grid-template-columns:1fr}.dist-tabs{width:100%}}

/* --- 盈亏日历：日视图（每日明细列表）/ 年视图（柱状 + 月度表） --- */
.calendar-day{display:flex;flex-direction:column;gap:6px}
.cal-day-row{
  display:flex;align-items:center;gap:12px;padding:8px 12px;border-radius:8px;font-size:12px;
  border:1px solid transparent;transition:transform .15s;
}
.cal-day-row:hover{transform:translateX(3px)}
.cal-day-row.today{border-color:var(--accent)}
.cal-day-row .d{width:52px;font-family:var(--mono);color:var(--text-2);flex-shrink:0}
.cal-day-row .bar{flex:1;height:8px;border-radius:4px;background:var(--card-2);overflow:hidden}
.cal-day-row .bar i{display:block;height:100%;border-radius:4px}
.cal-day-row .p{width:96px;text-align:right;font-family:var(--mono);font-weight:550;flex-shrink:0}
.cal-year-table{display:flex;flex-direction:column;gap:5px;margin-top:12px}
.cal-year-row{display:flex;align-items:center;gap:10px;font-size:12px;padding:5px 4px}
.cal-year-row .m{width:34px;color:var(--text-2);font-family:var(--mono);flex-shrink:0}
.cal-year-row .bar{flex:1;height:8px;border-radius:4px;background:var(--card-2);overflow:hidden}
.cal-year-row .bar i{display:block;height:100%;border-radius:4px}
.cal-year-row .p{width:96px;text-align:right;font-family:var(--mono);font-weight:550;flex-shrink:0}
.cal-year-row .td{width:40px;text-align:right;font-size:10.5px;color:var(--muted);flex-shrink:0}

/* ============================================================
   去框感 v37：小卡片去边框、以底色/阴影分层（"色块"代替"格子"）
   原则：主容器保留阴影层级，页内小卡片去 1px 边框，
         hover 仍以底色/阴影/位移反馈；表格行间线淡化
   ============================================================ */
/* 页内小卡片：边框透明化（保留占位，hover 显示反馈） */
.port-total,.pg-card,.idx-card,.sent-card,.sent-group,.flow-box,
.donut-wrap,.etf-card,.etf-hl-card,.scan-block,.adv-cell,.hl-card,
.kb-item,.rsc-wp-card,.rsc-reco,.ind-updown .col,.stk-desc,
.fin-hero,.fin-points,.sl-seg,.stock-list-row.open{
  border-color:transparent;
}
/* 进度条背景去边框 */
.hi-bar{border-color:transparent;background:var(--card-2)}
/* 主卡片弱化边框（仍保留阴影层级） */
.card{border-color:var(--border);}
/* 表格行间线淡化（frow 保持 hover 显示） */
[data-theme="dark"] th,[data-theme="dark"] td{border-bottom-color:rgba(146,178,255,.05)}
[data-theme="light"] th,[data-theme="light"] td{border-bottom-color:rgba(20,40,90,.05)}
[data-theme="dark"] .frow td,[data-theme="light"] .frow td{border-bottom-color:transparent}

/* 补充：弹幕条 / 体检绩效卡 / 概览条 去边框 */
.kw-bar,.perf-matrix .pm-cell,.risk-cards .pm-cell,.adv-cell,.donut-wrap{
  border-color:transparent;
}

/* 补充：行业热点卡 / 产业链段 / 产业板块 去边框（色块+阴影分层） */
.ind-hot-card,.chain-seg,.chain-board,.etf-detail .flow-box,.alloc-box{
  border-color:transparent;
}

/* ETF 选中态：去边框，仅保留 accent 外圈阴影反馈 */
.etf-card.active{border-color:transparent}

/* ============================================================
   响应式与浏览器兼容层：触屏适配 / iOS 安全区 / 窄屏细化
   原则：只增强移动端与旧浏览器表现，桌面暗色视觉完全不变
   ============================================================ */

/* --- 触屏设备：禁用 hover 型 tooltip（触屏上会"粘滞"不消失） --- */
@media (hover:none){
  .icon-btn[data-tip]::after,.icon-btn[data-tip]::before{display:none}
}

/* --- 触屏手机：输入字号≥16px 防 iOS 聚焦自动缩放；触控目标≥36px --- */
@media (hover:none) and (max-width:960px){
  input,select,textarea{font-size:16px}
  .chip-btn,.idx-tab,.stk-tab,.insight-tab,.rsc-reco-tab,.chain-tab,.rsc-type,
  .ops button,.kb-nav-btn,.rel-toggle{min-height:36px}
  .icon-btn{width:40px;height:40px}
  .ops button{padding:6px 12px}
}

/* --- 窄屏手机（≤640px）：布局细化 --- */
@media (max-width:640px){
  .page{padding-left:12px;padding-right:12px}
  .card{padding:16px 14px;border-radius:12px}
  /* 绩效/风险 4 列过挤 → 2 列 */
  .perf-matrix,.risk-cards,.ind-hot-cards{grid-template-columns:repeat(2,1fr)}
  .modal-mask{padding:10px}
  .modal{max-height:92vh;max-height:92dvh;border-radius:14px}
  .modal-head{padding:12px 16px}
  .modal-body{padding:14px 14px 18px}
  .drawer{width:100vw;max-width:100vw;border-left:0}
  .table-wrap,.cmp-table-wrap,.indcomp-matrix-wrap{-webkit-overflow-scrolling:touch}
  /* 固定宽输入框在窄屏溢出 → 可收缩 */
  .stk-tabs,.stk-ops{flex-wrap:wrap}
  .stk-ops{flex:1 1 100%;min-width:0}
  .stk-ops input{width:auto;flex:1 1 120px;min-width:0;max-width:200px}
  .stk-searchbox input{width:auto;flex:1 1 120px;min-width:0;max-width:260px}
  .filter-row input{flex:1 1 140px}
  .rsc-search input{flex:1 1 100%}
  /* 关键数字略收，防窄屏换行溢出 */
  .pt-val{font-size:22px}
  .idx-price{font-size:17px}
  .sent-card .v{font-size:20px}
  .etf-cmp-select{max-width:none}
  /* 分类 chips 改横滑（贴合移动 App 习惯，节省纵向空间） */
  .cat-chips{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;max-width:100%}
  .cat-chips::-webkit-scrollbar{display:none}
  .cat-chips .chip-btn{flex-shrink:0}
  .news-tools-right{gap:6px}
  .news-tools-right input:not([type="checkbox"]){width:120px}
  .flow-row .fr-val{width:64px}
  .hi-row{grid-template-columns:56px 1fr 34px}
  .hi-note{padding-left:66px}
  .stock-list-row .info{gap:8px}
  .stock-table-head .sth-nums span,.stock-list-row .info span{width:52px}
  /* 基金详情抽屉 hero 竖排，环形图居中 */
  .d-hero{flex-direction:column;align-items:flex-start}
  .d-hero .dh-ring{align-self:center}
  .score-ring{width:88px;height:88px}
  .kb-hero h3{font-size:21px}
  .pg-nums{gap:10px}
}
