/* ============================================================
   股票多维研判系统 · 前台主题 v3（JOBICK 风格 · 参考 moban5757）
   模板要素：浅灰底 #F8F8F8 · 主橙 #F93A0B · 深青 #145650
   白色大圆角轻阴影卡片 · 浅底表头 · 橙色高亮
   规范：A股 红涨 #e0342c / 绿跌 #0aa858（沿用 A股习惯）
   ============================================================ */
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  font-family:"PingFang SC","Microsoft YaHei","Hiragino Sans GB",Roboto,Arial,sans-serif;
  background:var(--bg);color:#3a3f4b;font-size:14px;line-height:1.5;
  --panel:#fff;--panel2:#f7f8fa;--line:#eef0f4;--line2:#dfe3ea;
  --text:#23283a;--muted:#6b7280;--faint:#9aa1ad;
  --pri:#F93A0B;--pri-h:#cc2c05;--pri-bg:rgba(249,58,11,.08);--pri-line:rgba(249,58,11,.28);
  --sec:#145650;
  --bg:#f8f8f8;
  --blue:#2f6bff;--red:#e0342c;--green:#0aa858;--gold:#b98200;--orange:#ff7e00;
  transition:background .2s,color .2s;
}
a{color:var(--blue);text-decoration:none}
a:hover{opacity:.85}

/* ================= 布局（左侧栏 + 顶栏，亮底悬浮卡片观感） ================= */
.app{display:flex;min-height:100vh;background:var(--bg)}
.side{width:248px;flex:0 0 248px;background:var(--panel);
  position:fixed;top:0;left:0;bottom:0;z-index:100;display:flex;flex-direction:column;
  border:0;box-shadow:0 .9375rem 1.875rem 0 rgba(0,0,0,.05);border-radius:0 1.2rem 1.2rem 0}
.main{flex:1;/* margin-left:248px; */min-width:0;display:flex;flex-direction:column}
.topbar{height:64px;background:var(--panel);
  position:sticky;top:0;z-index:90;display:flex;align-items:center;padding:0 20px;gap:14px;
  box-shadow:0 1px 0 rgba(35,40,58,.04);border-bottom:3px solid transparent;
  border-image:linear-gradient(90deg,var(--pri),#ff7a45 45%,transparent 90%) 1}
.content{padding:22px 22px 40px;flex:1}

/* Logo 区（侧栏顶部） */
.side-logo{height:64px;display:flex;align-items:center;gap:10px;padding:0 18px;font-weight:800;color:var(--text);font-size:15.5px;border-bottom:1px solid var(--line);letter-spacing:.2px}
.side-logo .logo-mark{width:36px;height:36px;border-radius:12px;background:linear-gradient(135deg,var(--pri),#ff8a5c);
  display:flex;align-items:center;justify-content:center;color:#fff;font-size:18px;box-shadow:0 6px 14px rgba(249,58,11,.28)}

/* 菜单（橙点激活，仿模板 metismenu 观感） */
.side-nav{flex:1;overflow-y:auto;padding:14px 12px 6px}
.side-nav ul{list-style:none;margin:0;padding:0}
.side-nav li{margin:2px 0}
.side-nav a{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:12px;color:var(--text);font-weight:500;font-size:13.5px;position:relative;transition:background .15s,color .15s}
.side-nav a i{width:20px;text-align:center;color:var(--faint);font-style:normal;font-size:14px}
.side-nav a:hover{color:var(--pri)}
.side-nav li.active>a{color:var(--pri);font-weight:700;background:transparent}
.side-nav li.active>a::before{content:"";position:absolute;left:0;top:22%;height:56%;width:4px;border-radius:4px;background:var(--pri)}
.side-nav .grp>a{color:#3a3f4b}
.side-nav .sub{margin:0 0 8px 14px;border-left:2px solid var(--line);padding-left:10px}
.side-nav .sub a{font-size:12.8px;color:#5a6474;padding:7px 10px;border-radius:9px}
.side-nav .sub a:hover{color:var(--pri)}
.side-status{margin:auto 12px 16px;border:0;border-radius:14px;background:#fff7f4;border:1px solid #ffe4d9;padding:12px 14px;font-size:12.3px;color:var(--muted);line-height:2}
.side-status .sr{display:flex;justify-content:space-between}
.side-status b{color:var(--text);font-variant-numeric:tabular-nums;font-weight:700}
.side-status .ms-open{color:var(--red)}.side-status .ms-pre{color:var(--blue)}.side-status .ms-break{color:var(--orange)}.side-status .ms-close{color:var(--faint)}
#barToggle{background:#fff;border:1px solid var(--line2);border-radius:10px;width:36px;height:36px;font-size:16px;cursor:pointer;color:var(--text);box-shadow:0 2px 8px rgba(0,0,0,.04)}
.top-title{font-size:15.5px;font-weight:800;color:var(--text)}
.top-right{margin-left:auto;display:flex;align-items:center;gap:10px;font-size:12.5px;color:var(--muted)}
.chip,.poschip{white-space:nowrap}
.chip b,.poschip b{font-weight:800}
#posB.pos-hi{color:var(--red)}#posB.pos-mid{color:var(--orange)}#posB.pos-ok{color:var(--blue)}#posB.pos-lo{color:var(--green)}
@media (max-width:991px){
  .side{left:-252px;transition:left .2s;border-radius:0}
  body.sidebar-open .side{left:0;box-shadow:8px 0 24px rgba(20,30,50,.18)}
  .main{margin-left:0}
}

/* ================= 页面标题区（模板 page-titles 观感） ================= */
.page-title{margin:2px 0 18px;display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:6px;padding:0 2px}
.page-title h2{margin:0;font-size:20px;color:var(--text);font-weight:800;letter-spacing:.2px}
.page-title .sub{color:var(--faint);font-size:12.5px}
.pt-col{display:flex;flex-direction:column;align-items:flex-end;gap:3px}
.niu-live{font-size:12px;font-weight:600;padding:2px 12px;border-radius:20px;border:1px solid transparent;line-height:1.7}
.niu-live.pending{color:#b26a00;background:rgba(255,193,7,.12);border-color:rgba(255,193,7,.4)}
.niu-live.ok{color:#0a7a45;background:rgba(22,163,74,.1);border-color:rgba(22,163,74,.32)}
.niu-live.found{color:#b91c1c;background:rgba(239,68,68,.1);border-color:rgba(239,68,68,.4);animation:niuFlash 1.2s ease-in-out 2}
@keyframes niuFlash{50%{background:rgba(239,68,68,.32)}}

/* ================= 卡片（JOBICK：白底圆角轻阴影、无边框） ================= */
.card{background:var(--panel);border:0;border-radius:1rem;margin-bottom:16px;
  box-shadow:0 .5rem 1.5rem rgba(35,40,58,.05);overflow:hidden}
.card-hd{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--line);gap:8px;background:var(--panel)}
.card-hd h4{margin:0;font-size:14.5px;color:var(--text);font-weight:700}
.card-hd h4::before{content:"";display:inline-block;width:4px;height:14px;border-radius:3px;background:var(--pri);margin-right:8px;vertical-align:-2px}
.card-hd .cnt{font-weight:400;color:var(--faint);font-size:12px}
.card-hd .rt{font-size:12px;color:var(--faint)}
.ksb{border:1px solid var(--line,#dfe5ee);background:var(--panel2,#f4f6fb);color:var(--text,#1d2733);border-radius:8px;padding:4px 12px;cursor:pointer;font-size:12.5px;line-height:1.6;white-space:nowrap;display:inline-flex;align-items:center;gap:4px}
.ksb:hover{border-color:var(--blue,#2b7de9);color:var(--blue,#2b7de9)}
.ksb:disabled{opacity:.6;cursor:wait}
.card-bd{padding:16px 18px}

/* ================= 资产五卡（模板统计卡风：小标题灰 + 大数字） ================= */
.asset-row{display:grid;grid-template-columns:repeat(6,1fr);gap:14px;margin-bottom:18px}
@media(max-width:1200px){.asset-row{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.asset-row{grid-template-columns:repeat(2,1fr)}}
.asset{position:relative;overflow:hidden}
.asset::after{content:"";position:absolute;right:-22px;bottom:-26px;width:84px;height:84px;border-radius:50%;background:var(--pri-bg)}
.asset .cap{font-size:12px;color:var(--muted);font-weight:600;letter-spacing:.3px}
.asset .val{font-size:23px;font-weight:800;color:var(--text);font-variant-numeric:tabular-nums;margin:5px 0 3px;word-break:break-all;letter-spacing:.2px}
.asset .sub{font-size:12px;color:var(--faint)}
.up{color:var(--red)!important}.down{color:var(--green)!important}.flat{color:var(--faint)!important}
/* 涨红跌绿：!important 防止被 .tbl tbody td 等更高特异性规则覆盖 */
.price-up{color:var(--red)!important;font-weight:700}.price-down{color:var(--green)!important;font-weight:700}.price-flat{color:var(--faint)!important}
.pv{font-variant-numeric:tabular-nums}.pp{font-weight:700}

/* ================= 指数卡 ================= */
.idx-row{display:grid;grid-template-columns:repeat(6,1fr);gap:14px}
@media(max-width:1400px){.idx-row{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.idx-row{grid-template-columns:repeat(2,1fr)}}
.idx .nm{font-weight:700;color:var(--text);font-size:14px}
.idx .code{font-size:11px;color:var(--faint)}
.idx .px{font-size:22px;font-weight:800;font-variant-numeric:tabular-nums;margin:6px 0 0}

/* ================= 表格（模板表头：浅底小字灰；行 hover 微橙） ================= */
.tbl-wrap{overflow-x:auto}
table.tbl{width:100%;border-collapse:collapse;font-size:13px;background:var(--panel)}
.tbl thead th{background:#fafbfc;color:#8792a2;font-weight:600;font-size:12px;text-align:left;
  padding:10px 12px;border-bottom:1px solid var(--line);white-space:nowrap;letter-spacing:.2px}
.tbl tbody td{padding:9px 12px;border-bottom:1px solid #f3f5f8;white-space:nowrap;vertical-align:middle;color:#3a3f4b}
.tbl tbody tr:hover{background:#fff8f5}
.tbl .stk{font-weight:700;color:var(--text)}
.tbl .cd{display:block;font-size:11px;color:var(--faint);font-weight:400}
/* 盈亏百分比：保持小号但跟随所在单元格红绿 */
.ppl{display:inline-block;font-size:11px;font-weight:400;margin-left:2px;vertical-align:1px}
.tbl .num{font-variant-numeric:tabular-nums}
.tbl .wd{max-width:520px;min-width:220px;white-space:normal;color:var(--muted);font-size:12.3px;line-height:1.6}
.tbl .wd .rs{color:var(--gold);font-size:12px}
.td-empty{text-align:center;color:var(--faint);padding:24px 0!important}

/* ================= 决策 / 评分标签 ================= */
.dc{display:inline-block;padding:4px 11px;border-radius:8px;font-size:12.3px;font-weight:700;white-space:nowrap;box-shadow:inset 0 0 0 1px rgba(0,0,0,.04)}
.dc-add{background:#d92d20;color:#fff}
.dc-buy{background:#fff1ef;color:#d92d20;box-shadow:inset 0 0 0 1px #ffd6cf}
.dc-hold{background:#fff7e6;color:#9a6a00;box-shadow:inset 0 0 0 1px #ffe3a3}
.dc-reduce{background:#e8f8ef;color:#0a7a45;box-shadow:inset 0 0 0 1px #bfe8d0}
.dc-wait{background:#f1f3f6;color:#5a6474;box-shadow:inset 0 0 0 1px #e0e4ea}
.dc-sell{background:var(--green);color:#fff}
.badge{display:inline-block;min-width:44px;text-align:center;padding:4px 9px;border-radius:999px;color:#fff;font-weight:800;font-size:12.5px;letter-spacing:.3px;box-shadow:0 3px 8px rgba(0,0,0,.12)}
.score-s{background:linear-gradient(135deg,#f5a623,#ef7d00)}
.score-a{background:linear-gradient(135deg,#ff7a45,var(--pri))}
.score-b{background:linear-gradient(135deg,#ffb266,#ff8f3d)}
.score-c{background:linear-gradient(135deg,#b6c0cc,#96a1ae)}
.score-d{background:linear-gradient(135deg,#8a94a1,#6d7785)}

/* 富文本着色 */
.warn{color:var(--red);font-weight:700}.w{color:var(--text);font-weight:600}
.k{color:var(--gold);font-weight:700}.up2{color:var(--red);font-weight:700}
.dn2{color:var(--green);font-weight:700}.lab{color:var(--faint);font-weight:800}

/* ================= 研判卡 ================= */
.diag-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
/* 研判卡片单行（宽屏 ≥1025px）：行情看板3 / 热门板块2 / 智能研判多维4 */
@media (min-width:1025px){
.diag-grid[data-ai-mod='market']{grid-template-columns:repeat(3,minmax(0,1fr))}
.diag-grid[data-ai-mod='sector']{grid-template-columns:repeat(2,minmax(0,1fr))}
.diag-grid[data-ai-mod='analyze']{grid-template-columns:repeat(4,minmax(0,1fr))}
}
@media(max-width:900px){.diag-grid{grid-template-columns:1fr}}
.diag-card{background:var(--panel2);border:0;border-left:3px solid var(--pri);border-radius:12px;padding:14px 16px;font-size:13px;line-height:1.85;color:#4a5262;min-width:0;box-shadow:0 4px 12px rgba(35,40,58,.04)}
.diag-card.full{grid-column:1/-1}
.diag-card .dc-title{font-weight:800;color:var(--pri);margin-bottom:6px;font-size:13.5px}
.diag-card p{margin:0 0 6px}
.diag-card p:last-child{margin-bottom:0}

/* ================= Top3 精选卡 ================= */
#top3{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px;padding:16px}
.t3{background:var(--panel);border:0;border-radius:1rem;padding:16px 18px;box-shadow:0 .5rem 1.4rem rgba(35,40,58,.06);position:relative;overflow:hidden}
.t3::before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,var(--pri),#ffb38f)}
.t3 .hd{display:flex;align-items:center;justify-content:space-between}
.t3 .nm{font-weight:700;color:var(--text);font-size:13px}
.t3 .px{font-size:21px;font-weight:800;font-variant-numeric:tabular-nums;margin:7px 0 2px}
.t3 .meta{display:flex;justify-content:space-between;align-items:center;margin-top:9px}
.t3 .rng{text-align:right;font-size:12px;color:var(--muted);line-height:1.6}
.t3 .ana{border-top:1px dashed var(--line);margin-top:9px;padding-top:9px;font-size:12.3px;color:var(--muted);line-height:1.6}

/* ================= 板块强度条 ================= */
.sb{display:inline-block;width:70px;height:8px;border-radius:6px;background:#edf0f4;vertical-align:middle;overflow:hidden}
.sb i{display:block;height:100%;background:linear-gradient(90deg,var(--pri),#ff9b73);border-radius:6px}
.sb.dn i{background:linear-gradient(90deg,var(--green),#6fe0a8)}

/* ================= 节奏提醒网格 ================= */
#rhythmList{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px;align-items:stretch}
#rhythmList .pd-line{font-size:12.5px;color:var(--muted);grid-column:1/-1;display:flex;flex-wrap:wrap;gap:8px;align-items:center}
#rhythmList .pr{display:flex;gap:8px 10px;align-items:flex-start;padding:11px 13px;border:0;background:var(--panel2);border-radius:12px;font-size:12.6px;flex-wrap:wrap;margin:0;box-shadow:0 3px 10px rgba(35,40,58,.04)}
#rhythmList .pr:hover{box-shadow:0 6px 16px rgba(249,58,11,.10)}
@media (max-width:860px){#rhythmList{grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}}
@media (max-width:600px){#rhythmList{grid-template-columns:1fr}}
.pr .pnm{min-width:96px;font-weight:700;color:var(--text)}
.pr .pnm small{display:block;color:var(--faint);font-weight:400;font-size:11px}
.pr .pt{color:var(--muted);flex:1;min-width:150px;line-height:1.5}

/* ================= 管理（若启用） ================= */
.mgr summary{cursor:pointer;list-style:none;font-weight:800;color:var(--text);padding:2px 0;font-size:13px}
.mgr summary::-webkit-details-marker{display:none}
.mgr-in{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}
.mgr-in input{background:var(--panel);border:1px solid var(--line2);color:var(--text);border-radius:9px;padding:7px 10px;font-size:12.5px;min-width:130px}
.mgr-in input:focus{outline:none;border-color:var(--pri)}
.btn{display:inline-block;background:var(--pri);border:0;color:#fff;border-radius:10px;padding:8px 18px;font-size:12.8px;font-weight:700;cursor:pointer;box-shadow:0 5px 14px rgba(249,58,11,.24);transition:filter .15s,transform .1s}
.btn:hover{filter:brightness(1.06);transform:translateY(-1px)}
.btn.ghost{background:#fff;color:var(--muted);border:1px solid var(--line2);box-shadow:none}
.btn.danger{background:#fff1ef;color:#d92d20;box-shadow:none}
.mgr-list{border:1px solid var(--line);border-radius:12px;overflow:hidden}
.mrow{display:flex;align-items:center;gap:10px;padding:7px 12px;border-bottom:1px solid #f3f5f8;font-size:12.5px;color:var(--muted);flex-wrap:wrap}
.mrow:last-child{border-bottom:0}.mrow:hover{background:#fff8f5}
.mrow .no{color:var(--pri);font-weight:800;width:26px}
.mrow .nm{font-weight:700;color:var(--text)}
.mrow .x{border:1px solid #f1c1bf;background:#fdecea;color:#d32f2f;border-radius:6px;padding:2px 10px;cursor:pointer;font-size:11.5px}
.mrow .tag{padding:1px 8px;font-size:10.8px;border-radius:4px}

/* ================= 系统说明 ================= */
.about h4{color:var(--text);font-size:14px;margin:0 0 8px}
.about .blk{font-size:13px;color:#4a5262;line-height:2;margin:0}
.about .blk code{background:var(--panel2);border:1px solid var(--line);border-radius:5px;padding:1px 6px;color:var(--pri)}

/* ================= 通用 ================= */
.muted{color:var(--faint)}
.small{font-size:12px}
.mt2{margin-top:8px}.mb0{margin-bottom:0}
footer{text-align:center;color:var(--faint);font-size:12px;padding:20px 0 8px;border-top:1px dashed var(--line)}
#backTop{position:fixed;right:26px;bottom:28px;width:40px;height:40px;border-radius:12px;border:0;background:var(--pri);color:#fff;font-size:17px;cursor:pointer;display:none;box-shadow:0 8px 20px rgba(249,58,11,.3);z-index:80}
#backTop:hover{transform:translateY(-2px)}
.pill-blue{display:inline-block;background:var(--pri-bg);color:var(--pri);font-size:11.5px;border-radius:999px;padding:3px 11px;font-weight:700}
.notice{background:#fff8e6;border:1px solid #f3dfae;color:#8a6d1a;border-radius:10px;padding:8px 12px;font-size:12.5px;line-height:1.8;margin-bottom:12px}
.ok{background:#e6f4ea;border-color:#b7e0c5;color:#0a7a43}

/* ================= 暗色主题（JOBICK 暗色观感） ================= */
body.dark{background:#12161f;color:#cdd6e3;
  --bg:#12161f;--panel:#1e232e;--panel2:#242b38;--line:#2e3646;--line2:#3a4456;
  --text:#eef2f8;--muted:#a7b2c2;--faint:#8592a5;--gold:#f5c344;--blue:#6ea3ff;
  --pri:#ff6a3d;--pri-bg:rgba(255,106,61,.12);--pri-line:rgba(255,106,61,.3);
  --red:#ff7a6e;--green:#3ddc97;--orange:#ffb266}
body.dark .side,body.dark .topbar,body.dark .card{background:var(--panel)}
body.dark .main,body.dark .content,body.dark .page{background:transparent}
body.dark #barToggle{background:#242b38;border-color:#3a4456;color:#eef2f8}
body.dark .side-status{background:rgba(255,106,61,.07)}
body.dark .side{box-shadow:0 .9375rem 1.875rem rgba(0,0,0,.35)}
body.dark .topbar{border-image:linear-gradient(90deg,var(--pri),#ff8a5c 45%,transparent 90%) 1}
body.dark .side-nav a{color:#aebbd0}
body.dark .side-nav a:hover{color:#ff8a5c}
body.dark .side-nav li.active>a{color:#ff8a5c;background:transparent}
body.dark .side-nav .sub a{color:#93a5bb}
body.dark .tbl thead th{background:#1a202b;color:#8a97a9}
body.dark .tbl tbody td{color:#d3dce8;border-color:var(--line)}
body.dark .tbl tbody tr:hover{background:rgba(255,106,61,.07)}
body.dark .card-hd{border-color:var(--line)}
body.dark .diag-card{background:var(--panel2);color:#c3cedc;box-shadow:0 4px 12px rgba(0,0,0,.2)}
body.dark .w{color:#e9f0f8}.body-dark .w{color:#e9f0f8}
body.dark .t3{background:var(--panel);box-shadow:0 .5rem 1.4rem rgba(0,0,0,.3)}
body.dark .side-status{border-color:var(--pri-line);background:rgba(255,106,61,.06)}
body.dark .side-status b,body.dark .side-logo{color:#e6edf5}
body.dark .mrow:hover{background:var(--panel2)}
body.dark input{background:#151a23;border-color:#2e3646;color:#d5deea}
body.dark .about .blk{color:#a9bacd}
body.dark .btn.ghost{background:#242b38;color:#a7b2c2}
body.dark .tbl .stk,body.dark .idx .nm,body.dark .asset .val{color:#eef2f8}
body.dark .dc-wait{background:#2a3342;color:#a7b2c2;box-shadow:inset 0 0 0 1px #39455a}
body.dark .sb{background:#2a3342}

/* ============================================================
   v3.1 · 模板侧栏形态与图标（JOBICK dlabnav 观感）
   更宽（324/332px）、悬浮白栏、品牌区加大、flaticon 图标排版
   ============================================================ */
.side{width:324px;flex:0 0 324px;border-radius:0 1.4rem 1.4rem 0;box-shadow:0 .9375rem 2rem 0 rgba(0,0,0,.07)}
.main{margin-left:324px}
.side-logo{height:92px;padding:0 20px;gap:12px;border-bottom:1px solid var(--line)}
.side-logo .logo-mark{width:46px;height:46px;border-radius:14px;font-size:23px}
.side-logo .logo-tx{display:flex;flex-direction:column;line-height:1.35;min-width:0}
.side-logo .logo-tx b{font-size:15.5px;color:var(--text);white-space:nowrap}
.side-logo .logo-tx small{font-size:11px;color:var(--faint);font-weight:500;letter-spacing:.4px;white-space:nowrap}
.side-nav{padding:18px 14px 8px}
.side-nav a{padding:11px 14px;border-radius:13px;gap:12px;font-size:13.8px}
.side-nav a i{font-size:17px;width:22px}
.side-nav li.active>a::before{left:0;width:4px}
.side-nav .sub a{font-size:13px;padding:8px 12px}
.side-status{margin:auto 14px 18px;padding:13px 15px}
/* 宽桌面更贴近模板 20.5rem=328px */
@media (min-width:1400px){
  .side{width:332px;flex:0 0 332px}
  .main{margin-left:332px}
}
@media (max-width:991px){
  .side{left:-330px;width:324px}
  .main{margin-left:0}
  body.sidebar-open .side{left:0}
}
body.dark .side-logo{background:linear-gradient(180deg,#1e232e,#202632)}

/* 二级菜单图标排版 */
.side-nav .sub a{display:flex;align-items:center;gap:8px}
.side-nav .sub a i{width:16px;font-size:12.5px;color:var(--faint);text-align:center}
.side-nav .sub a:hover i,.side-nav .sub li.active a i{color:var(--pri)}
.side-nav .sub li.active>a{color:var(--pri);font-weight:600;background:transparent}

/* v3.2 · 菜单 SVG 图标（阿里图标库同风格线性图标，零依赖必定显示） */.side-nav a .mi{display:inline-flex;align-items:center;justify-content:center;flex:0 0 20px;width:20px;height:20px;color:var(--faint)}
.side-nav a .mi svg{width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.side-nav .sub a .mi{flex:0 0 15px;width:15px;height:15px}
.side-nav .sub a .mi svg{stroke-width:2.2}
.side-nav a:hover .mi,.side-nav li.active>a .mi,.side-nav .sub a:hover .mi,.side-nav .sub li.active>a .mi{color:var(--pri)}
/* 激活项图标着色独立于默认 i 样式（清除旧 emoji 规则干扰） */
.side-nav a i{font-style:normal}

/* ============================================================
   v3.3 · 牛人新股票 · 全站右下角长条弹窗
   ============================================================ */
#niuToastWrap{position:fixed;right:16px;bottom:16px;z-index:3000;display:flex;flex-direction:column-reverse;gap:10px;width:495px;max-width:calc(100vw - 32px);max-height:70vh;overflow-y:auto;scrollbar-width:thin}
#niuToastWrap::-webkit-scrollbar{width:5px}
#niuToastWrap::-webkit-scrollbar-thumb{background:var(--line2);border-radius:3px}
.niu-toast{position:relative;background:var(--panel);border:1px solid var(--line);border-left:4px solid var(--pri);
  border-radius:14px;padding:11px 38px 11px 14px;box-shadow:0 12px 32px rgba(30,20,10,.16);cursor:pointer;
  animation:niuToastIn .28s ease-out}
@keyframes niuToastIn{from{opacity:0;transform:translateX(26px)}to{opacity:1;transform:none}}
.niu-toast:hover{box-shadow:0 16px 40px rgba(249,58,11,.2)}
.niu-toast .nt-x{position:absolute;top:6px;right:8px;border:0;background:none;color:var(--faint);font-size:18px;line-height:1;cursor:pointer;padding:2px 6px;border-radius:6px}
.niu-toast .nt-x:hover{color:var(--pri);background:var(--pri-bg)}
.niu-toast .nt-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:5px}
.niu-toast .nt-live{font-size:11px;font-weight:800;color:#fff;background:var(--pri);border-radius:999px;padding:2px 9px;letter-spacing:.3px}
.niu-toast .nt-who{font-size:11px;color:var(--faint)}
.niu-toast .nt-nm{font-weight:800;color:var(--text);font-size:15px;display:flex;align-items:center;gap:7px;margin-bottom:4px}
.niu-toast .nt-nm small{font-size:11px;color:var(--faint);font-weight:500;letter-spacing:.3px}
.niu-toast .nt-sc{margin-left:auto;font-size:11px;font-weight:800;color:#fff;background:linear-gradient(135deg,#ff7a45,var(--pri));border-radius:999px;padding:2px 8px}
.niu-toast .nt-row{display:flex;align-items:center;gap:12px}
.niu-toast .nt-px{font-size:19px;font-weight:800;font-variant-numeric:tabular-nums;color:var(--text)}
.niu-toast .nt-ch{font-size:13px;font-weight:700;font-variant-numeric:tabular-nums}
.niu-toast .dc{margin-left:auto;font-size:12px}
.niu-toast .nt-time{font-size:10.5px;color:var(--faint);margin-top:6px;padding-top:5px;border-top:1px dashed var(--line)}
body.dark .niu-toast{border-color:var(--line);box-shadow:0 12px 32px rgba(0,0,0,.45)}

/* v3.4 · 左上角品牌 LOGO 图片 */
.side-logo .logo-img{width:44px;height:44px;flex:0 0 44px;object-fit:contain;display:block;border-radius:11px}
body.dark .side-logo .logo-img{border-radius:11px;background:#fff;padding:4px}

/* ============================================================
   v3.5 · 牛人新股票弹窗模板 v2：现价/涨幅随代码同行、决策同行最右、
          新增标题行、底部“查看原文”链接；牛人列表“原文”列
   ============================================================ */
.niu-toast .nt-stk{display:flex;align-items:center;flex-wrap:wrap;gap:3px 8px;margin:1px 0 6px;line-height:1.35}
.niu-toast .nt-stk .nt-name{font-weight:800;color:var(--text);font-size:15px;white-space:nowrap}
.niu-toast .nt-stk small{font-size:11px;color:var(--faint);font-weight:500;letter-spacing:.3px;white-space:nowrap}
.niu-toast .nt-stk .nt-px{font-size:16.5px;font-weight:800;color:var(--text);font-variant-numeric:tabular-nums;margin-left:2px}
.niu-toast .nt-stk .nt-ch{font-size:12.5px;font-weight:700;font-variant-numeric:tabular-nums}
.niu-toast .nt-stk .nt-sc{margin-left:0;font-size:10.5px;padding:1px 7px;min-width:0}
.niu-toast .nt-stk .dc{margin-left:auto;font-size:11.5px;padding:3px 9px}
.niu-toast .nt-tl{font-size:12.3px;color:var(--muted);line-height:1.55;margin:0 0 7px;max-height:3.2em;overflow:hidden;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;word-break:break-all}
.niu-toast .nt-ft{display:flex;align-items:center;justify-content:flex-start;gap:8px;
  border-top:1px dashed var(--line);margin-top:0;padding-top:7px}
.niu-toast .nt-ft .nt-time{border-top:0;margin-top:0;padding-top:0;font-size:10.5px;color:var(--faint);line-height:1.6}
.niu-toast .nt-link{color:var(--blue);font-size:11.5px;font-weight:700;white-space:nowrap;text-decoration:none;line-height:1.6;padding-left:8px;border-left:1px solid var(--line2)}
.niu-toast .nt-link:hover{opacity:.82;text-decoration:underline}
/* 牛人提及列表（前台二级页）原文列 */
.tbl a.tbl-src{color:var(--blue);font-size:11.5px;font-weight:600;white-space:nowrap;text-decoration:none}
.tbl a.tbl-src:hover{opacity:.8;text-decoration:underline}
.tbl .src-empty{color:var(--faint);font-size:11.5px}
body.dark .niu-toast .nt-link,body.dark .tbl a.tbl-src{color:var(--blue)}

/* ============================================================
   v3.6 · 首页「牛人长文解读」卡片
   ============================================================ */
#niuNewsBody{min-height:40px}
.nn-lead{background:var(--panel2);border-left:3px solid var(--pri);border-radius:10px;padding:10px 12px;margin-bottom:10px}
.nn-hd{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:5px}
.nn-t{font-weight:800;color:var(--text);font-size:13.5px;text-decoration:none}
.nn-t:hover{color:var(--pri)}
.nn-tm{font-size:11px;color:var(--faint);white-space:nowrap}
.nn-sum{font-size:12.3px;color:var(--muted);line-height:1.7;margin-bottom:6px;background:rgba(249,58,11,.05);border-radius:7px;padding:5px 9px}
.nn-row{display:flex;align-items:flex-start;gap:8px;font-size:12.3px;line-height:1.65;margin-top:4px}
.nn-k{flex:0 0 64px;font-size:11px;font-weight:800;text-align:center;border-radius:5px;padding:2px 0;color:#fff;margin-top:1px}
.nn-k.c{background:#e0342c}
.nn-k.h{background:#145650}
.nn-k.w{background:#b98200}
.nn-v{color:#4a5262;min-width:0;word-break:break-all}
.nn-chip{display:inline-block;background:var(--panel);border:1px solid var(--line2);border-radius:999px;padding:1px 9px;font-size:11.5px;font-weight:700;color:var(--text);margin:0 5px 4px 0}
.nn-chip em{font-style:normal;color:var(--faint);font-weight:500;margin-left:4px;font-size:10.5px}
.nn-more{display:flex;flex-direction:column;gap:5px}
.nn-mt{font-size:12.3px;color:var(--muted);text-decoration:none;line-height:1.6;max-width:70%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nn-more a:hover{color:var(--pri)}
.nn-more{position:relative;padding-top:8px;border-top:1px dashed var(--line)}
.nn-more .nn-tm{position:absolute;right:0}
body.dark .nn-lead{background:var(--panel2)}
body.dark .nn-sum{background:rgba(255,106,61,.08)}

/* ============================================================
   v3.7 · 牛人弹窗重排版：加宽 590、高度压缩、三行布局
   （时间并入头部行；标题与查看原文同一行右对齐）
   ============================================================ */
#niuToastWrap{width:590px;max-width:calc(100vw - 24px);gap:8px}
.niu-toast{padding:8px 30px 8px 13px;border-left-width:4px;border-radius:12px;box-shadow:0 10px 26px rgba(30,20,10,.15)}
.niu-toast .nt-x{top:3px;right:6px;font-size:16px;padding:1px 5px}
.niu-toast .nt-hd{display:flex;align-items:center;gap:8px;margin-bottom:2px;line-height:1.4}
.niu-toast .nt-who{font-size:11px;color:var(--faint)}
.niu-toast .nt-time{margin-left:auto;font-size:10.5px;color:var(--faint);border:0;padding:0;white-space:nowrap}
.niu-toast .nt-stk{margin:0 0 4px;gap:4px 8px;line-height:1.5;min-height:0}
.niu-toast .nt-stk .nt-px{font-size:15px;margin-left:1px}
.niu-toast .nt-stk .nt-ch{font-size:12px}
.niu-toast .nt-stk .dc{font-size:11px;padding:2px 8px}
.niu-toast .nt-tl{display:flex;align-items:center;gap:10px;margin:0;line-height:1.6;max-height:none}
.niu-toast .nt-txt{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:12.3px}
.niu-toast .nt-link{margin:0;padding:0;border:0;font-size:11.5px;flex:0 0 auto}
.niu-toast .nt-ft{display:none}
body.dark .niu-toast{box-shadow:0 10px 26px rgba(0,0,0,.4)}

/* v3.8 · 牛人长文解读卡：发布人 + 发布日期（完整日期） */
.nn-hd{gap:6px 10px}
.nn-who{font-size:11px;color:var(--faint);white-space:nowrap;max-width:130px;overflow:hidden;text-overflow:ellipsis}
.nn-more{position:static}
.nn-li{display:flex;align-items:center;gap:10px;min-width:0}
.nn-li .nn-mt{flex:1;max-width:none}
.nn-li .nn-tm{position:static;flex:0 0 auto}
.nn-li .nn-who{flex:0 0 auto}
/* v3.8a · 牛人长文列表：日期置首并对齐 */
.nn-li .nn-tm{min-width:148px;font-variant-numeric:tabular-nums}
/* v3.9 · 牛人长文列表序号 #2… */
.nn-li .nn-no{flex:0 0 auto;min-width:22px;font-size:11.5px;font-weight:800;color:var(--pri)}

/* v3.10 · 牛人新帖弹窗：一帖一卡，帖内多只股票各自一行 */
.niu-toast .nt-tl{margin:0 0 4px}
.niu-toast .nt-stk{margin:0 0 3px}
.niu-toast .nt-stk:last-child{margin:0}
