/* ===================================================================
   情报研判台 · Intel Assessment Console
   令牌 / 基础层 / 通用组件（.btn .chip .inp .toast .modal .ai-search* .brand
   .site-nav）统一由 /assets/theme.css 提供，此处只写研判台专属版式。
   =================================================================== */

/* ---------------- 顶栏 ---------------- */
.site-header{ position:sticky; top:0; z-index:60; }
.topbar{ max-width:1680px; margin:0 auto; align-items:center; }
/* 搜索栈：现在独占顶栏一整行 —— 去掉 760px 上限，输入框才真能拉长
   （此前被右侧栏目按钮挤到只剩 22px，压根没法用） */
.topbar-stack{
  position:relative; flex:1 1 auto; min-width:0; max-width:none;
  display:flex; flex-direction:column; gap:8px;
}
/* 副行：框框旁边的文字（情报搜标识）与栏目按钮都落到搜索栏下面 */
.topbar-sub{
  display:flex; align-items:center; gap:12px; flex-wrap:wrap;
  padding:0 24px 9px; max-width:1680px; margin:0 auto;
}
.topbar-sub .ai-search-brand{ gap:6px; flex:none; }
.topbar-sub .ai-search-logo{ font-size:17px; }
.topbar-sub .ai-search-name{ font-size:14px; font-weight:700; letter-spacing:.04em; }
.topbar-sub .topbar-actions{
  display:flex; flex-wrap:wrap; align-items:center; gap:8px; flex:none;
}
.topbar-hot{
  flex:0 1 auto; min-width:0; margin:0; padding:0;
}
.topbar-hot .ai-search-hot{ padding-left:0; min-height:0; margin-top:0; }
/* 导航与顶栏、副行左边界对齐（此前 1520 宽导致比顶栏右移 40px） */
.site-nav{ max-width:1680px; padding:0 24px 10px; }
.tabs{ display:flex; gap:4px; align-items:center; flex-wrap:nowrap;
  padding:0 22px 9px; overflow-x:auto; scrollbar-width:none; max-width:1680px; margin:0 auto; }
.tabs::-webkit-scrollbar{ display:none; }
.tab{
  display:inline-flex; align-items:center; padding:6px 11px; border-radius:var(--r-sm);
  font-size:14px; font-weight:600; color:var(--text-2); white-space:nowrap;
  border:1px solid transparent; background:transparent; transition:all var(--dur) var(--ease);
  text-decoration:none; cursor:pointer;
}
.tab:hover{ background:var(--panel-2); color:var(--text); border-color:var(--border); }
.tab.active,.tab.on{
  background:var(--accent-soft); color:var(--accent); font-weight:600;
  border-color:color-mix(in srgb,var(--accent) 32%,transparent);
}

/* ---------------- 基线状态条 ---------------- */
.banner{
  display:flex; align-items:center; gap:14px; flex-wrap:wrap;
  padding:11px 22px; background:var(--panel-glass);
  backdrop-filter:saturate(180%) blur(14px); -webkit-backdrop-filter:saturate(180%) blur(14px);
  border-bottom:1px solid var(--border);
  max-width:1680px; margin:0 auto;
}
.bl-pill{
  display:inline-flex; align-items:center; gap:7px; padding:4px 12px; border-radius:var(--r-full);
  font-size:14px; font-weight:650; border:1px solid;
}
.bl-pill.stable{ color:var(--accent); border-color:color-mix(in srgb,var(--accent) 38%,transparent); background:var(--accent-soft); }
.bl-pill.building{ color:var(--finance); border-color:color-mix(in srgb,var(--finance) 38%,transparent); background:color-mix(in srgb,var(--finance) 10%,transparent); }
.bl-pill.insufficient{ color:var(--up); border-color:color-mix(in srgb,var(--up) 34%,transparent); background:color-mix(in srgb,var(--up) 9%,transparent); }
.bl-note{ font-size:14px; color:var(--muted); max-width:560px; line-height:1.6; }
.bl-spark{ margin-left:auto; display:flex; align-items:center; gap:10px; }

.stat-strip{
  display:flex; gap:26px; flex-wrap:wrap; padding:16px 22px 0;
  max-width:1680px; margin:0 auto;
}
.stat{ display:flex; flex-direction:column; gap:2px; min-width:76px; }
.stat .k{ font-size:10.5px; color:var(--muted-2); letter-spacing:.4px; }
.stat .v{ font-size:24px; font-weight:750; letter-spacing:-.8px; line-height:1.15; font-variant-numeric:tabular-nums; }
.stat .v small{ font-size:13.5px; font-weight:500; color:var(--muted); margin-left:3px; letter-spacing:0; }

/* ---------------- 视图容器 ---------------- */
main{ padding:18px 22px 56px; max-width:1680px; margin:0 auto; }
.view{ display:none; }
.view.active{ display:block; animation:fadeUp .26s var(--ease-out); }
@keyframes fadeUp{ from{ opacity:0; transform:translateY(6px) } to{ opacity:1; transform:none } }

.view-head{
  display:flex; align-items:baseline; gap:12px; flex-wrap:wrap;
  margin:6px 2px 16px; padding-bottom:12px; border-bottom:1px solid var(--border);
}
.view-head h2{
  margin:0; font-size:25px; font-weight:700; letter-spacing:.01em;
  font-family:var(--font-display); color:var(--text);
  display:flex; align-items:center; gap:10px;
}
.view-head h2::before{
  content:""; width:5px; height:22px; border-radius:2px; background:var(--accent); flex:none;
}
.view-head .sub{ font-size:14.5px; color:var(--text-2); line-height:1.7; }
.view-head .spacer{ flex:1; }

/* 过滤器 */
.filterbar{ display:flex; gap:8px; flex-wrap:wrap; align-items:center; margin-bottom:14px; }
.fb-sep{ width:1px; height:20px; background:var(--border); margin:0 2px; }

/* ---------------- 分类目录 ---------------- */
.catalog{
  display:flex; flex-direction:column; gap:8px; margin:0 2px 16px; padding:12px 14px;
  border:1px solid var(--border); border-radius:var(--r-lg);
  background:var(--panel);
  box-shadow:var(--shadow);
}
.catalog-row{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.catalog-row:empty{ display:none; }
.catalog-label{
  display:inline-flex; align-items:center; gap:5px; font-size:11px; font-weight:650;
  color:var(--muted); min-width:60px; flex:none; letter-spacing:.02em; user-select:none;
}
.catalog-label::before{ content:"▸"; font-size:9px; opacity:.55; }
.catalog-row:first-child .catalog-label::before{ content:"▾"; }
.catalog-row .chips{ flex:1; }
.catalog-hint{ font-size:11px; color:var(--muted-2); margin:-6px 4px 12px; }

/* 页内锚点目录 */
.anchor-bar{ display:flex; gap:6px; flex-wrap:wrap; margin:0 2px 14px; }
.anchor-bar a{
  padding:4px 11px; font-size:13.5px; border-radius:var(--r-full); border:1px solid var(--border);
  background:var(--panel); color:var(--muted); text-decoration:none; transition:all var(--dur) var(--ease);
}
.anchor-bar a:hover{ border-color:var(--accent); color:var(--accent); background:var(--accent-soft); }
.anchor-bar a .n{ opacity:.55; margin-left:4px; font-size:11px; }

/* ---------------- 会员中心 ---------------- */
.mc-status{
  border:1px solid var(--border); border-radius:var(--r); padding:13px 15px;
  background:var(--panel);
}
.mc-status.pro{
  border-color:color-mix(in srgb,var(--finance) 42%,var(--border));
  background:var(--warn-soft);
}
.mc-tier{ font-size:16px; font-weight:750; }
.mc-exp{ font-size:14px; color:var(--muted); margin-top:4px; line-height:1.6; }
.mc-sec{ margin-top:18px; }
.mc-sec h4{ margin:0 0 9px; font-size:14px; font-weight:700; color:var(--muted); }
.mc-quota{ width:100%; border-collapse:collapse; font-size:14px; }
.mc-quota td{ padding:5px 8px; border-bottom:1px solid var(--border); }
.mc-quota td:last-child{ text-align:right; color:var(--text); font-weight:600; }
.mc-form{ display:flex; gap:7px; flex-wrap:wrap; }
.mc-form .inp{ flex:1; min-width:120px; }
.mc-note{ font-size:11.5px; color:var(--muted-2); margin-top:7px; line-height:1.6; }
.mc-watch-list{ display:flex; gap:6px; flex-wrap:wrap; margin-top:9px; font-size:13.5px; }
.mc-watch{
  display:inline-flex; align-items:center; gap:6px; padding:3px 6px 3px 10px;
  border:1px solid var(--border); border-radius:var(--r-full); background:var(--panel);
}
.mc-watch i{ font-style:normal; color:var(--muted); font-size:11px; }
.mc-watch button{ border:0; background:transparent; color:var(--muted); cursor:pointer; font-size:11px; padding:0 2px; }
.mc-watch button:hover{ color:var(--up); }

/* ---------------- 科研情报 ---------------- */
.rs-hero{
  display:flex; align-items:center; gap:14px; flex-wrap:wrap; margin:0 2px 16px; padding:15px 18px;
  border:1px solid var(--border); border-radius:var(--r-lg);
  background:var(--panel);
  box-shadow:var(--shadow);
}
.rs-hero-mark{ display:flex; align-items:center; gap:9px; flex:none; }
.rs-hero-badge{
  padding:2px 9px; border-radius:var(--r-full); font-size:10.5px; font-weight:700; letter-spacing:.04em;
  color:#fff; background:linear-gradient(120deg,var(--ai),color-mix(in srgb,var(--accent-2) 70%,var(--ai)));
}
.rs-hero-t{ font-size:18px; font-weight:400; font-family:var(--font-display); color:var(--text); }
.rs-hero-s{ flex:1; min-width:220px; font-size:14px; color:var(--muted); line-height:1.6; }
.rs-hero-n{ font-size:13.5px; color:var(--muted); white-space:nowrap; }
.rs-hero-n b{ font-size:16px; color:var(--ai); font-weight:750; margin-right:1px; }
.rs-hero-btn{
  padding:6px 15px; font-size:14px; font-weight:600; border-radius:var(--r-full); cursor:pointer; flex:none;
  border:1px solid var(--ai); background:var(--ai); color:#fff; transition:all var(--dur) var(--ease);
}
.rs-hero-btn:hover{ filter:brightness(1.08); transform:translateY(-1px); }
.rs-ai{
  padding:1px 7px; border-radius:var(--r-xs); font-size:10px; font-weight:700;
  background:color-mix(in srgb,var(--ai) 14%,transparent); color:var(--ai);
  border:1px solid color-mix(in srgb,var(--ai) 30%,transparent);
}
.rs-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:11px; margin-bottom:16px; }
.rs-pf{
  background:var(--panel); border:1px solid var(--border); border-radius:var(--r-lg);
  box-shadow:var(--shadow); padding:15px 17px; display:flex; flex-direction:column; gap:9px;
  transition:transform var(--dur) var(--ease-out), box-shadow var(--dur) var(--ease);
}
.rs-pf:hover{ transform:translateY(-2px); box-shadow:var(--shadow); }
.rs-pf-h{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.rs-pf-n{ font-size:16px; font-weight:650; }
.rs-fee{ padding:1px 7px; border-radius:var(--r-full); font-size:10.5px; font-weight:600; border:1px solid; }
.rs-fee-free{ color:var(--down); border-color:color-mix(in srgb,var(--down) 32%,transparent); background:color-mix(in srgb,var(--down) 9%,transparent); }
.rs-fee-read{ color:var(--ai); border-color:color-mix(in srgb,var(--ai) 32%,transparent); background:color-mix(in srgb,var(--ai) 9%,transparent); }
.rs-fee-apc{ color:var(--muted); border-color:color-mix(in srgb,var(--muted) 30%,transparent); background:transparent; }
.rs-pf-tags{ display:flex; gap:5px; flex-wrap:wrap; }
.rs-pf-d{ font-size:14px; color:var(--muted); line-height:1.65; }
.rs-pf-a{ display:flex; gap:6px; flex-wrap:wrap; margin-top:auto; }
.rs-pf-a .btn{ padding:4px 12px; font-size:13.5px; text-decoration:none; }
.rs-list{ display:flex; flex-direction:column; gap:9px; }
.rs-item{
  background:var(--panel); border:1px solid var(--border); border-left:3px solid var(--industry);
  border-radius:var(--r); padding:12px 16px; transition:all var(--dur) var(--ease);
}
.rs-item.paper{ border-left-color:var(--ai); }
.rs-item:hover{ border-color:var(--border-strong); box-shadow:var(--shadow-sm); }
.rs-item-top{ display:flex; align-items:center; gap:7px; flex-wrap:wrap; font-size:11.5px; color:var(--muted); margin-bottom:5px; }
.rs-kind{
  padding:1px 7px; border-radius:var(--r-xs); font-weight:600; font-size:10.5px;
  background:color-mix(in srgb,var(--industry) 12%,transparent); color:var(--industry);
}
.rs-item.paper .rs-kind{ background:color-mix(in srgb,var(--ai) 12%,transparent); color:var(--ai); }
.rs-item-t{ margin:0 0 4px; font-size:16.5px; font-weight:650; line-height:1.5; }
.rs-item-t a{ color:var(--text); text-decoration:none; }
.rs-item-t a:hover{ color:var(--accent); }
.rs-item-s{
  margin:0; font-size:14px; color:var(--muted); line-height:1.65;
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;
}

/* ---------------- 通用结论卡 ---------------- */
.card{
  position:relative; background:var(--panel); border:1px solid var(--border);
  border-radius:var(--r-lg); box-shadow:var(--shadow); margin-bottom:12px; overflow:hidden;
  transition:transform var(--dur) var(--ease-out), box-shadow var(--dur) var(--ease), border-color var(--dur) var(--ease);
}
.card::before{ content:""; position:absolute; left:0; top:0; bottom:0; width:3px; background:var(--tc,var(--industry)); }
.card:hover{ transform:translateY(-1px); box-shadow:var(--shadow); border-color:var(--border-strong); }
.card-body{ padding:16px 19px 15px 21px; }
.card-top{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-bottom:9px; }
.tier-tag{
  padding:2px 8px; border-radius:var(--r-xs); font-weight:650; font-size:11px;
  background:color-mix(in srgb,var(--tc) 12%,transparent); color:var(--tc);
  border:1px solid color-mix(in srgb,var(--tc) 26%,transparent);
}
.badge{ padding:2px 8px; border-radius:var(--r-xs); font-size:11px; font-weight:600; border:1px solid; }
.sev-high{ color:var(--up); border-color:color-mix(in srgb,var(--up) 32%,transparent); background:color-mix(in srgb,var(--up) 9%,transparent); }
.sev-medium{ color:var(--finance); border-color:color-mix(in srgb,var(--finance) 32%,transparent); background:color-mix(in srgb,var(--finance) 9%,transparent); }
.sev-low{ color:var(--muted); border-color:color-mix(in srgb,var(--muted) 30%,transparent); background:var(--panel-2); }
.grade-tag{ padding:2px 8px; border-radius:var(--r-xs); font-size:11px; font-weight:600; border:1px solid; white-space:nowrap; }
.grade-confirmed{ color:var(--down); border-color:color-mix(in srgb,var(--down) 32%,transparent); background:color-mix(in srgb,var(--down) 9%,transparent); }
.grade-probable{ color:var(--ai); border-color:color-mix(in srgb,var(--ai) 32%,transparent); background:color-mix(in srgb,var(--ai) 9%,transparent); }
.grade-possible{ color:var(--muted); border-color:color-mix(in srgb,var(--muted) 30%,transparent); background:var(--panel-2); }
.grade-unverifiable{ color:var(--muted-2); border-color:color-mix(in srgb,var(--muted-2) 26%,transparent); background:transparent; }
.ruleid{
  font-size:10.5px; color:var(--muted-2); margin-left:auto;
  font-family:var(--font-mono); letter-spacing:.02em;
}
.hl{ margin:0 0 8px; font-size:18px; font-weight:700; line-height:1.52; letter-spacing:-.15px; }
.card-sub{ font-size:14px; color:var(--muted); margin:0 0 12px; }

/* 影响链 */
.chain{ list-style:none; margin:0 0 13px; padding:0; counter-reset:ch; }
.chain li{ position:relative; padding:5px 0 5px 30px; font-size:14.5px; color:var(--text); counter-increment:ch; }
.chain li::before{
  content:counter(ch); position:absolute; left:0; top:5px; width:19px; height:19px; border-radius:50%;
  background:var(--accent-soft); color:var(--accent);
  font-size:10.5px; font-weight:700; display:flex; align-items:center; justify-content:center;
  border:1px solid color-mix(in srgb,var(--accent) 32%,transparent);
}
.chain li::after{
  content:""; position:absolute; left:9px; top:26px; bottom:-3px; width:1px;
  background:linear-gradient(var(--border-strong),transparent);
}
.chain li:last-child::after{ display:none; }

.sect{ margin-bottom:11px; }
.sect-h{
  font-size:16.5px; font-weight:700; color:var(--text); letter-spacing:.02em;
  font-family:var(--font-display);
  display:flex; align-items:center; gap:8px; margin-bottom:8px;
}
.sect-h .ln{ flex:1; height:1px; background:var(--border); }
/* 判断正文：引述块样式（左侧陶土条 + 浅底） */
.verdict-text{
  font-size:15.5px; line-height:1.8; padding:12px 15px;
  border-radius:0 var(--r-sm) var(--r-sm) 0;
  background:var(--accent-soft); border-left:3px solid var(--accent);
}
ul.dots{ margin:0; padding-left:18px; font-size:14.5px; line-height:1.78; color:var(--text); }
ul.dots li{ margin-bottom:3px; }
ul.dots.check{ list-style:none; padding-left:0; }
ul.dots.check li{ padding-left:20px; position:relative; color:var(--muted); }
ul.dots.check li::before{ content:"◻"; position:absolute; left:0; color:var(--muted-2); font-size:11px; top:1px; }

/* 折叠依据 */
.fold{ border-top:1px solid var(--border); margin-top:10px; padding-top:9px; }
.fold summary{
  cursor:pointer; font-size:13.5px; color:var(--accent); font-weight:600; list-style:none;
  display:flex; align-items:center; gap:6px; transition:color var(--dur) var(--ease);
}
.fold summary::-webkit-details-marker{ display:none; }
.fold summary::before{ content:"▸"; transition:transform .16s var(--ease); display:inline-block; }
.fold[open] summary::before{ transform:rotate(90deg); }
.fold summary:hover{ color:var(--accent-2); }
.ev{ display:flex; flex-direction:column; gap:8px; margin-top:9px; }
.ev-row{ font-size:14px; padding-left:12px; border-left:2px solid var(--border); line-height:1.55; }
.ev-row a{ color:var(--text); font-weight:500; }
.ev-row a:hover{ color:var(--accent); }
.ev-meta{ font-size:11px; color:var(--muted-2); margin-top:2px; display:flex; gap:8px; flex-wrap:wrap; }

/* 指标 chips */
.mchips{ display:flex; gap:6px; flex-wrap:wrap; margin-top:8px; }
.mchip{ font-size:11.5px; padding:2px 8px; border-radius:var(--r-xs); background:var(--panel-2); border:1px solid var(--border); color:var(--muted); }

/* 置信度条 */
.conf{ display:flex; align-items:center; gap:8px; margin-top:10px; font-size:11px; color:var(--muted-2); }
.conf .track{
  flex:1; max-width:170px; height:5px; border-radius:var(--r-full);
  background:var(--panel-3); border:1px solid var(--border); overflow:hidden;
}
.conf .fill{
  height:100%; border-radius:var(--r-full);
  background:linear-gradient(90deg,var(--accent),var(--accent-2));
}

/* ---------------- 信号 ---------------- */
.sig-group{ margin-bottom:20px; }
.sig-group-h{ display:flex; align-items:center; gap:9px; margin:0 2px 9px; }
.sig-group-h h3{ margin:0; font-size:18px; font-weight:700; font-family:var(--font-display); color:var(--text); }
.sig-group-h .cnt{
  font-size:11.5px; padding:1px 8px; border-radius:var(--r-full);
  background:var(--panel-2); border:1px solid var(--border); color:var(--muted);
}
.sig{
  display:flex; gap:12px; align-items:flex-start; background:var(--panel);
  border:1px solid var(--border); border-radius:var(--r); padding:12px 15px; margin-bottom:8px;
  box-shadow:var(--shadow-xs); transition:all var(--dur) var(--ease);
}
.sig:hover{ border-color:var(--border-strong); transform:translateX(3px); box-shadow:var(--shadow-sm); }
.sig-ico{ font-size:17px; line-height:1.3; flex-shrink:0; }
.sig-main{ flex:1; min-width:0; }
.sig-title{ font-size:15.5px; font-weight:650; display:flex; align-items:center; gap:7px; flex-wrap:wrap; }
.sig-stat{ font-size:13.5px; color:var(--muted); margin-top:3px; }
.lv-dot{ width:8px; height:8px; border-radius:50%; flex-shrink:0; display:inline-block; }
.sig-side{ display:flex; flex-direction:column; align-items:flex-end; gap:4px; flex-shrink:0; }
.sig-spark{ width:96px; height:26px; }

/* ---------------- 实体 ---------------- */
.ent-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(272px,1fr)); gap:12px; }
.ent{
  background:var(--panel); border:1px solid var(--border); border-radius:var(--r-lg);
  padding:15px 17px; box-shadow:var(--shadow); position:relative; overflow:hidden;
  transition:all var(--dur) var(--ease);
}
.ent::before{ content:""; position:absolute; left:0; top:0; right:0; height:3px; background:var(--tc); }
.ent:hover{ border-color:var(--border-strong); transform:translateY(-2px); box-shadow:var(--shadow); }
.ent-h{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.ent-name{ font-size:17px; font-weight:650; }
.ent-tags{ display:flex; gap:5px; flex-wrap:wrap; margin:6px 0 9px; }
.mini{
  font-size:10.5px; padding:1px 7px; border-radius:var(--r-xs);
  background:var(--panel-2); border:1px solid var(--border); color:var(--muted);
}
.mini.auto{ border-style:dashed; color:var(--accent); border-color:color-mix(in srgb,var(--accent) 35%,transparent); }
.ent-nums{ display:flex; gap:16px; align-items:flex-end; margin-bottom:8px; }
.ent-nums .n{ display:flex; flex-direction:column; }
.ent-nums .n b{ font-size:20px; font-weight:750; letter-spacing:-.5px; line-height:1.1; font-variant-numeric:tabular-nums; }
.ent-nums .n span{ font-size:10.5px; color:var(--muted-2); }
.ent-spark{ width:100%; height:34px; display:block; margin:2px 0 6px; }
.trend-up{ color:var(--up); font-weight:650; }
.trend-down{ color:var(--down); font-weight:650; }

/* ---------------- 图谱 ---------------- */
.graph-wrap{ display:grid; grid-template-columns:minmax(0,1fr) 268px; gap:16px; align-items:start; }
.graph-box{
  background:var(--panel); border:1px solid var(--border); border-radius:var(--r-lg);
  box-shadow:var(--shadow); position:relative; overflow:hidden;
}
#graph-svg{ display:block; width:100%; touch-action:none; }
.legend{
  display:flex; gap:14px; flex-wrap:wrap; padding:10px 14px;
  border-top:1px solid var(--border); font-size:11.5px; color:var(--muted);
}
.legend i{ width:10px; height:10px; border-radius:50%; display:inline-block; margin-right:5px; vertical-align:-1px; }
.gpanel{ background:var(--panel); border:1px solid var(--border); border-radius:var(--r-lg); box-shadow:var(--shadow); }
.gpanel .blk{ padding:13px 15px; border-bottom:1px solid var(--border); }
.gpanel .blk:last-child{ border-bottom:none; }
.gpanel h4{
  margin:0 0 9px; font-size:11.5px; font-weight:700; color:var(--muted);
  letter-spacing:.6px; text-transform:uppercase;
}
.hub-row{ display:flex; align-items:center; gap:8px; font-size:14px; padding:3px 0; }
.hub-bar{ height:5px; border-radius:var(--r-full); background:var(--panel-3); flex:1; overflow:hidden; border:1px solid var(--border); }
.hub-bar i{ display:block; height:100%; border-radius:var(--r-full); }
.riv{ font-size:14px; padding:7px 0; border-bottom:1px dashed var(--border); }
.riv:last-child{ border-bottom:none; }
.riv b{ font-weight:600; }
.riv .rel{ font-size:10.5px; padding:1px 6px; border-radius:var(--r-xs); margin-left:6px; border:1px solid; }
.rel-竞争{ color:var(--up); border-color:color-mix(in srgb,var(--up) 30%,transparent); background:color-mix(in srgb,var(--up) 8%,transparent); }
.rel-上下游{ color:var(--accent); border-color:color-mix(in srgb,var(--accent) 30%,transparent); background:color-mix(in srgb,var(--accent) 8%,transparent); }
.rel-同赛道,.rel-关联{ color:var(--muted); border-color:var(--border); }
.gtip{
  position:absolute; pointer-events:none; background:var(--text); color:var(--bg); font-size:11.5px;
  padding:5px 9px; border-radius:var(--r-xs); opacity:0; transition:opacity .12s; z-index:5; white-space:nowrap;
}
.gtip.show{ opacity:1; }
.gnode{ cursor:pointer; }
.gnode text{
  font-size:10px; fill:var(--text); paint-order:stroke; stroke:var(--panel);
  stroke-width:3px; stroke-linejoin:round; pointer-events:none;
}
.gnode.dim{ opacity:.16; }
.glink{ stroke-linecap:round; }
.glink.dim{ opacity:.06; }

/* ---------------- 事件清单 ---------------- */
.ev-table{
  width:100%; border-collapse:collapse; background:var(--panel);
  border:1px solid var(--border); border-radius:var(--r-lg); overflow:hidden; box-shadow:var(--shadow);
}
.ev-table th{
  text-align:left; font-size:11px; color:var(--muted); letter-spacing:.5px; text-transform:uppercase;
  padding:11px 15px; background:var(--panel-2); border-bottom:1px solid var(--border);
  font-weight:700; white-space:nowrap; position:sticky; top:0; backdrop-filter:blur(6px);
}
.ev-table td{ padding:11px 15px; border-bottom:1px solid var(--border); font-size:14.5px; vertical-align:top; }
.ev-table tr:last-child td{ border-bottom:none; }
.ev-table tbody tr{ transition:background var(--dur) var(--ease); }
.ev-table tbody tr:hover td{ background:var(--panel-2); }
.act-tag{ font-size:11px; padding:2px 8px; border-radius:var(--r-xs); white-space:nowrap; border:1px solid; font-weight:600; }
.pol-pos{ color:var(--down); border-color:color-mix(in srgb,var(--down) 30%,transparent); background:color-mix(in srgb,var(--down) 8%,transparent); }
.pol-neg{ color:var(--up); border-color:color-mix(in srgb,var(--up) 30%,transparent); background:color-mix(in srgb,var(--up) 8%,transparent); }
.pol-neu{ color:var(--muted); border-color:var(--border); background:var(--panel-2); }

/* loader */
.loading{ display:flex; align-items:center; justify-content:center; gap:10px; padding:70px; color:var(--muted); }
.loading .spin{
  width:17px; height:17px; border-radius:50%; display:inline-block;
  border:2px solid var(--border-strong); border-top-color:var(--accent);
  animation:spin .8s linear infinite;
}

/* ---------------- AI 研判视图 ---------------- */
.btn-ghost{ border-style:dashed; background:transparent; }

.brief-hero{
  position:relative; margin:0 0 18px; padding:24px 26px; border-radius:var(--r-lg); overflow:hidden;
  background:var(--panel);
  border:1px solid var(--border);
  box-shadow:var(--shadow);
}
.brief-hero::after{
  content:""; position:absolute; right:-80px; bottom:-110px; width:280px; height:280px; border-radius:50%;
  background:radial-gradient(circle,color-mix(in srgb,var(--accent) 13%,transparent),transparent 70%);
}
.brief-tag{
  display:inline-block; font-size:11px; font-weight:600; letter-spacing:.13em; text-transform:uppercase; color:var(--accent);
  padding:4px 12px; border-radius:var(--r-full); border:1px solid rgba(201,123,63,.24);
  background:var(--accent-soft); margin-bottom:13px;
}
.brief-headline{
  margin:0 0 12px; font-size:22px; line-height:1.62; font-weight:400; letter-spacing:.01em;
  font-family:var(--font-display); color:var(--text); position:relative;
}
.brief-summary{ margin:0; font-size:16px; line-height:1.9; color:var(--muted); position:relative; }

.ai-sec{ scroll-margin-top:90px; }

.kp-list{ display:flex; flex-direction:column; gap:13px; }
.kp{ padding-left:13px; border-left:2px solid color-mix(in srgb,var(--ai) 38%,transparent); }
.kp-p{ font-size:15.5px; font-weight:600; line-height:1.75; }
.kp-b{ margin-top:5px; font-size:13.5px; color:var(--muted); line-height:1.75; }
.kp-conf{
  display:inline-block; margin-right:6px; padding:1px 6px; border-radius:var(--r-xs);
  font-size:10.5px; font-weight:600; border:1px solid; vertical-align:1px;
}
.kp-conf.c-high{ color:var(--up); border-color:color-mix(in srgb,var(--up) 35%,transparent); background:color-mix(in srgb,var(--up) 9%,transparent); }
.kp-conf.c-medium{ color:var(--finance); border-color:color-mix(in srgb,var(--finance) 35%,transparent); background:color-mix(in srgb,var(--finance) 9%,transparent); }
.kp-conf.c-low{ color:var(--muted); border-color:var(--border-strong); background:var(--panel-2); }

.ct{ padding:12px 0; border-bottom:1px dashed var(--border); }
.ct:last-child{ border-bottom:0; padding-bottom:0; }
.ct-route{ display:flex; align-items:center; gap:9px; flex-wrap:wrap; margin-bottom:6px; }
.ct-node{
  font-size:14px; font-weight:600; padding:3px 11px; border-radius:var(--r-full);
  background:var(--accent-soft); border:1px solid color-mix(in srgb,var(--accent) 30%,transparent); color:var(--accent);
}
.ct-arrow{ color:var(--muted-2); font-size:16px; }
.ct-logic{ font-size:14.5px; line-height:1.85; }
.ct-sig{ margin-top:5px; font-size:11.5px; color:var(--muted); }

.watch-list{ display:flex; flex-direction:column; gap:14px; }
.watch{ display:flex; gap:11px; align-items:flex-start; }
.watch-i{
  flex:none; width:21px; height:21px; border-radius:50%; display:grid; place-items:center; margin-top:2px;
  font-size:11px; font-weight:700; color:var(--finance);
  background:color-mix(in srgb,var(--finance) 13%,transparent);
  border:1px solid color-mix(in srgb,var(--finance) 38%,transparent);
}
.watch-w{ font-size:15.5px; font-weight:650; line-height:1.75; }
.watch-y{ font-size:14px; color:var(--muted); line-height:1.8; margin-top:3px; }
.watch-t{
  font-size:13.5px; margin-top:6px; padding:5px 10px; border-radius:var(--r-xs); line-height:1.7;
  color:var(--finance); background:color-mix(in srgb,var(--finance) 9%,transparent);
  border-left:2px solid color-mix(in srgb,var(--finance) 45%,transparent);
}

.learn-grid{ display:flex; flex-wrap:wrap; gap:8px; }
.learn-item{
  display:flex; flex-direction:column; gap:2px; padding:9px 13px; border-radius:var(--r-sm); min-width:130px;
  background:var(--panel-2); border:1px solid var(--border);
}
.learn-item.dim{ opacity:.6; }
.learn-name{ font-size:14.5px; font-weight:600; }
.learn-meta{ font-size:11px; color:var(--muted); }
.learn-cnt{ font-size:10.5px; color:var(--muted-2); font-variant-numeric:tabular-nums; }
.learn-note{ margin-top:11px; font-size:11.5px; color:var(--muted); line-height:1.8; }
.learn-note code{
  background:var(--panel-2); border:1px solid var(--border); border-radius:var(--r-xs);
  padding:1px 5px; font-size:11px; font-family:var(--font-mono);
}

.llmev{ display:flex; flex-direction:column; gap:1px; }
.llmev-row{
  display:grid; grid-template-columns:22px minmax(90px,auto) minmax(70px,auto) 1fr auto;
  gap:10px; align-items:baseline; padding:8px 10px; border-radius:var(--r-xs); font-size:14px;
}
.llmev-row:nth-child(odd){ background:var(--panel-2); }
.llmev-tier{ text-align:center; }
.llmev-s{ font-weight:600; }
.llmev-a{ color:var(--accent); font-size:11.5px; font-weight:600; }
.llmev-o{ color:var(--text); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.llmev-src{ font-size:11px; color:var(--muted-2); white-space:nowrap; }

.ai-note{
  padding:12px 14px; border-radius:var(--r-sm);
  background:color-mix(in srgb,var(--ai) 6%,transparent);
  border:1px dashed color-mix(in srgb,var(--ai) 32%,transparent);
}
.ai-badge{
  color:var(--ai); border-color:color-mix(in srgb,var(--ai) 35%,transparent);
  background:color-mix(in srgb,var(--ai) 10%,transparent);
}
.ai-rows{ display:flex; flex-direction:column; gap:7px; margin-top:8px; }
.ai-row{ display:grid; grid-template-columns:58px 1fr; gap:10px; font-size:14px; line-height:1.8; }
.ai-k{ flex:none; font-weight:600; color:var(--ai); font-size:11.5px; text-align:right; padding-top:1px; }
.ai-v{ color:var(--text); }

.caveat{
  font-size:14px; line-height:1.85; padding:10px 13px; border-radius:var(--r-sm);
  margin:4px 0 11px; background:var(--panel-2);
  border-left:2px solid var(--border-strong); color:var(--muted);
}
.ai-meta{
  display:flex; flex-wrap:wrap; gap:6px 18px; font-size:11.5px; color:var(--muted);
  font-variant-numeric:tabular-nums;
}
.ai-meta b{ color:var(--text); font-weight:600; }

.mchain{ display:flex; flex-direction:column; gap:5px; margin-top:4px; }
.mc{
  display:grid; grid-template-columns:26px 1fr auto; gap:10px; align-items:center;
  padding:8px 11px; border-radius:var(--r-sm); background:var(--panel-2);
  border:1px solid var(--border); font-size:14px;
}
.mc.hit{
  border-color:color-mix(in srgb,var(--ai) 45%,transparent);
  background:color-mix(in srgb,var(--ai) 8%,transparent);
}
.mc.stale{ opacity:.62; }
.mc-i{
  width:22px; height:22px; border-radius:var(--r-xs); display:grid; place-items:center;
  font-size:11px; font-weight:700; background:var(--panel); border:1px solid var(--border-strong); color:var(--muted);
}
.mc.hit .mc-i{
  background:color-mix(in srgb,var(--ai) 18%,transparent);
  border-color:color-mix(in srgb,var(--ai) 45%,transparent); color:var(--ai);
}
.mc-n{ font-family:var(--font-mono); font-size:13.5px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.mc-t{ font-size:11px; color:var(--muted-2); white-space:nowrap; }
.mc-role{ font-size:10.5px; padding:1px 6px; border-radius:var(--r-full); border:1px solid var(--border-strong); color:var(--muted); margin-left:7px; }

.pgrid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(228px,1fr)); gap:9px; margin-top:10px; }
.pg{
  padding:11px 12px; border-radius:var(--r-sm); background:var(--panel-2);
  border:1px solid var(--border); display:flex; flex-direction:column; gap:5px;
}
.pg.used{ border-color:color-mix(in srgb,var(--ai) 38%,transparent); background:color-mix(in srgb,var(--ai) 5%,transparent); }
.pg.last{ box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ai) 30%,transparent); }
.pg-h{ display:flex; align-items:center; gap:0; flex-wrap:wrap; }
.pg-n{ font-size:14px; font-weight:600; }
.pg-c{ margin-left:auto; font-size:10.5px; color:var(--muted-2); white-space:nowrap; }
.pg.used .pg-c{ color:var(--ai); }
.pg-d{ font-size:11px; color:var(--muted); line-height:1.5; }
.pg-l{ display:flex; flex-wrap:wrap; gap:4px; margin-top:2px; }
.pg-m{
  font-family:var(--font-mono); font-size:10.5px; padding:2px 7px; border-radius:var(--r-full);
  background:var(--panel); border:1px solid var(--border-strong); color:var(--text);
}
.pg-m.alt{ color:var(--muted); border-style:dashed; }
.pg-m.hit{
  background:color-mix(in srgb,var(--ai) 15%,transparent);
  border-color:color-mix(in srgb,var(--ai) 45%,transparent); color:var(--ai);
}
.pg-m.none{ border-style:dashed; border-color:color-mix(in srgb,var(--finance) 40%,transparent); color:var(--finance); background:transparent; }

.vgrid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(280px,1fr)); gap:9px; margin-top:10px; }
.vg{
  padding:11px 12px; border-radius:var(--r-sm); background:var(--panel-2);
  border:1px solid var(--border); border-left:2px solid color-mix(in srgb,var(--accent) 55%,transparent);
  display:flex; flex-direction:column; gap:5px;
}
.vg-h{ display:flex; align-items:center; gap:6px; }
.vg-k{
  font-size:10.5px; padding:1px 7px; border-radius:var(--r-full);
  color:var(--accent); border:1px solid color-mix(in srgb,var(--accent) 35%,transparent);
  background:var(--accent-soft);
}
.vg-s{ font-size:10.5px; color:var(--muted-2); margin-left:auto; }
.vg-t{ font-size:13.5px; font-weight:500; line-height:1.45; }
.vg-c{ font-size:11.5px; color:var(--muted); }
.vg-d{ display:flex; flex-wrap:wrap; gap:5px; }
.vg-p{
  font-size:11px; padding:2px 8px; border-radius:var(--r-xs); background:var(--panel);
  border:1px solid var(--border); font-variant-numeric:tabular-nums;
}
.vg-p i{ font-style:normal; color:var(--muted-2); margin-right:5px; }
.vg-x{
  font-size:11px; color:var(--muted); padding:7px 9px; border-radius:var(--r-xs);
  background:color-mix(in srgb,var(--accent) 6%,transparent);
  border:1px dashed color-mix(in srgb,var(--accent) 28%,transparent); line-height:1.55;
}
.vg-i{ font-size:11.5px; color:var(--text); opacity:.85; line-height:1.55; }

/* ── 涨跌配色：A 股惯例，涨红跌绿 ── */
.up{ color:var(--up); }
.down{ color:var(--down); }

/* ── 金融预测卡 ── */
.fin-hero{
  margin-top:11px; padding:13px 15px; border-radius:var(--r-sm);
  background:color-mix(in srgb,var(--finance) 7%,var(--panel-2));
  border:1px solid color-mix(in srgb,var(--finance) 22%,transparent);
}
.fin-tag{ font-size:10.5px; font-weight:700; color:var(--finance); letter-spacing:.06em; }
.fin-hl{ font-size:17px; font-weight:400; line-height:1.6; margin-top:6px; font-family:var(--font-display); }
.fin-mv{ font-size:13.5px; color:var(--muted); line-height:1.75; margin-top:7px; }

.fin-macro{ display:flex; flex-wrap:wrap; gap:7px; margin-top:11px; }
.fm{
  display:flex; align-items:baseline; gap:6px; padding:5px 10px; border-radius:var(--r-full);
  background:var(--panel-2); border:1px solid var(--border);
}
.fm i{ font-style:normal; font-size:10.5px; color:var(--muted-2); }
.fm b{ font-size:14px; font-weight:600; font-variant-numeric:tabular-nums; }
.fm em{ font-style:normal; font-size:10.5px; margin-left:4px; font-weight:600; }

.fin-list{ display:grid; gap:10px; margin-top:12px; }
.fin{ padding:13px 14px; border-radius:var(--r-sm); background:var(--panel-2); border:1px solid var(--border); }
.fin-h{ display:flex; align-items:baseline; justify-content:space-between; gap:10px; }
.fin-n{ font-size:15.5px; font-weight:650; }
.fin-n i{ font-style:normal; font-size:10.5px; color:var(--muted-2); margin-left:7px; font-weight:400; }
.fin-p{ font-size:17px; font-weight:750; font-variant-numeric:tabular-nums; }
.fin-p em{ font-style:normal; font-size:11.5px; margin-left:5px; font-weight:600; }

.fin-tags{ display:flex; flex-wrap:wrap; gap:5px; margin-top:8px; }
.ft{
  font-size:10.5px; padding:2px 8px; border-radius:var(--r-full); background:var(--bg);
  border:1px solid var(--border); color:var(--muted);
}
.ft i{ font-style:normal; opacity:.75; margin-left:3px; }
.ft em{ font-style:normal; margin-left:4px; font-weight:700; }
.ft-up{ border-color:color-mix(in srgb,var(--up) 40%,transparent); color:var(--up); }
.ft-down{ border-color:color-mix(in srgb,var(--down) 40%,transparent); color:var(--down); }
.ft-flat{ border-color:var(--border-strong); }

/* 蒙特卡洛区间条 */
.fin-mc{ margin-top:10px; }
.fmc-h{ display:flex; justify-content:space-between; font-size:10.5px; color:var(--muted-2); }
.fmc-bar{ position:relative; height:26px; margin:5px 0 3px; }
.fmc-zone{
  position:absolute; top:9px; left:5%; width:90%; height:8px; border-radius:4px;
  background:linear-gradient(90deg,color-mix(in srgb,var(--down) 26%,transparent),
    color-mix(in srgb,var(--border-strong) 26%,transparent) 50%,
    color-mix(in srgb,var(--up) 26%,transparent));
}
.fmc-cur{
  position:absolute; top:3px; width:3px; height:20px; border-radius:2px; background:var(--text);
  transform:translateX(-50%); box-shadow:0 0 0 2px var(--panel-2);
}
.fmc-l,.fmc-m,.fmc-r{
  position:absolute; top:19px; font-size:10px; color:var(--muted-2);
  font-variant-numeric:tabular-nums; transform:translateX(-50%);
}
.fmc-l{ left:5%; } .fmc-m{ left:50%; } .fmc-r{ left:95%; }
.fmc-f{ display:flex; flex-wrap:wrap; gap:12px; font-size:11px; color:var(--muted); }
.fmc-f b{ font-weight:600; font-variant-numeric:tabular-nums; }
.fmc-f i{ font-style:normal; font-size:10px; opacity:.7; margin-left:3px; }
.fmc-warn{ color:var(--finance); font-weight:600; }

.tape{ display:grid; gap:8px; margin-top:10px; }
.tape-row{
  display:grid; grid-template-columns:36px minmax(120px,1.3fr) 110px minmax(160px,1.4fr) 92px;
  gap:10px; align-items:center; padding:11px 13px; border-radius:var(--r-sm);
  background:var(--panel-2); border:1px solid var(--border); transition:all var(--dur) var(--ease);
}
.tape-row:hover{ border-color:var(--border-strong); background:var(--panel-3); }
.tape-rank{ font-size:16px; font-weight:750; color:var(--muted-2); font-variant-numeric:tabular-nums; }
.tape-name{ font-size:15.5px; font-weight:650; }
.tape-name i{ display:block; font-style:normal; font-size:10.5px; font-weight:400; color:var(--muted-2); margin-top:2px; }
.tape-px{ font-size:16px; font-weight:750; font-variant-numeric:tabular-nums; text-align:right; }
.tape-px em{ display:block; font-style:normal; font-size:11px; font-weight:600; }
.tape-meta{ font-size:11.5px; color:var(--muted); line-height:1.5; }
.tape-band{ justify-self:end; font-size:11px; font-weight:700; padding:3px 8px; border-radius:var(--r-full); white-space:nowrap; }
.tape-band.up{ background:color-mix(in srgb,var(--up) 14%,transparent); color:var(--up); }
.tape-band.down{ background:color-mix(in srgb,var(--down) 14%,transparent); color:var(--down); }
.tape-band.flat{ background:var(--bg); color:var(--muted); border:1px solid var(--border); }
.tape-card{ padding:13px 14px; border-radius:var(--r-sm); background:var(--panel-2); border:1px solid var(--border); }
.tape-why{ margin-top:8px; font-size:13.5px; line-height:1.7; color:var(--text); }
.tape-sub{ margin-top:4px; font-size:11.5px; line-height:1.65; color:var(--muted); }
@media(max-width:720px){
  .tape-row{ grid-template-columns:28px 1fr auto; grid-template-areas:'r n p' 'r m b'; }
  .tape-rank{ grid-area:r; } .tape-name{ grid-area:n; } .tape-px{ grid-area:p; text-align:right; }
  .tape-meta{ grid-area:m; } .tape-band{ grid-area:b; }
}

.fin-cap{ display:flex; flex-wrap:wrap; gap:8px 14px; margin-top:8px; font-size:11px; color:var(--muted); }
.fin-cap b{ font-weight:600; font-variant-numeric:tabular-nums; color:var(--text); }
.fin-cap i{ font-style:normal; margin-left:4px; opacity:.75; }
.fin-cap-note{ flex-basis:100%; font-size:10.5px; line-height:1.6; color:var(--muted-2); }

.fin-risk{ display:flex; flex-wrap:wrap; gap:12px; margin-top:9px; padding-top:9px; border-top:1px dashed var(--border); font-size:11px; color:var(--muted); }
.fin-risk b{ font-weight:600; font-variant-numeric:tabular-nums; color:var(--text); }

.fin-ai{
  margin-top:9px; padding:10px 12px; border-radius:var(--r-sm); background:var(--bg);
  border-left:2px solid var(--ai); font-size:13.5px; line-height:1.75;
}
.fa-s{
  display:inline-block; font-size:10.5px; font-weight:700; padding:1px 8px; border-radius:var(--r-full);
  margin-right:8px; vertical-align:1px;
}
.fa-s-up{ background:color-mix(in srgb,var(--up) 14%,transparent); color:var(--up); }
.fa-s-down{ background:color-mix(in srgb,var(--down) 14%,transparent); color:var(--down); }
.fa-s-flat{ background:var(--panel-2); color:var(--muted); }
.fa-v{ color:var(--text); }
.fa-w{ display:block; font-size:11px; color:var(--muted); margin-top:5px; }

.fin-disc{ margin-top:12px; font-size:11px; color:var(--muted); line-height:1.75; }
.fin-disc b{ display:block; color:var(--finance); font-size:11.5px; margin-bottom:3px; }

/* 金融研报：Nova financial_analyst.py 的单页版式，嵌在情报台里 */
.rec-desk{ margin-bottom:12px; }
.rec-seats{ display:grid; grid-template-columns:repeat(4,1fr); gap:8px; margin-top:10px; }
.rec-seat{
  border:1px solid var(--border); border-radius:var(--r-sm); padding:9px 11px; background:var(--panel-2);
  transition:all var(--dur) var(--ease);
}
.rec-seat:hover{ border-color:var(--border-strong); background:var(--panel-3); }
.rec-seat b{ display:block; font-size:13.5px; }
.rec-seat i{ display:block; font-style:normal; font-size:11px; color:var(--muted); margin-top:2px; }
.rec-seat span{ display:block; font-size:11px; line-height:1.5; margin-top:4px; color:var(--text); }
.rec-list{ margin:10px 0 0; padding-left:18px; font-size:14px; line-height:1.65; }
.nr-jump{
  margin-left:8px; padding:0 7px; height:18px; border-radius:9px;
  border:1px solid color-mix(in srgb,var(--finance) 45%,transparent);
  background:transparent; color:var(--finance); font-size:10.5px; font-weight:700; cursor:pointer; vertical-align:1px;
}
.nr-jump:hover{ background:color-mix(in srgb,var(--finance) 12%,transparent); }
.nova-report{
  background:linear-gradient(180deg,#1e1c18,#26231e); color:#e8e2d6;
  border-radius:var(--r-lg); overflow:hidden; border:1px solid rgba(255,255,255,.10);
  box-shadow:0 18px 50px rgba(20,18,14,.40);
}
.nr-head{
  background:linear-gradient(135deg,#24211c,#302619); padding:19px 23px;
  display:flex; justify-content:space-between; gap:16px; align-items:flex-start;
  border-bottom:1px solid rgba(255,255,255,.09);
}
.nr-sym{ font-size:26px; font-weight:900; letter-spacing:1px; }
.nr-sub{ font-size:13.5px; color:#a49b8c; margin-top:4px; }
.nr-px{ text-align:right; font-size:32px; font-weight:900; font-variant-numeric:tabular-nums; }
.nr-chg{ font-size:14.5px; font-weight:700; margin-top:2px; }
.nr-ts{ font-size:11px; color:#8c8478; margin-top:4px; }
/* 涨跌沿用 A 股惯例：涨红跌绿 */
.nr-up{ color:#d98a8d; } .nr-down{ color:#7fbf9e; } .nr-flat{ color:#d9b66a; }
.nr-layout{ display:grid; grid-template-columns:168px 1fr; gap:0; }
.nr-side{ border-right:1px solid rgba(255,255,255,.08); padding:8px; }
.nr-pick{
  display:block; width:100%; text-align:left; background:transparent; color:#d5cec0;
  border:0; border-radius:var(--r-sm); padding:8px 10px; cursor:pointer; margin-bottom:4px;
  transition:all var(--dur) var(--ease);
}
.nr-pick:hover{ background:rgba(224,164,106,.08); }
.nr-pick.on{ background:rgba(224,164,106,.14); color:#e0a46a; }
.nr-pick b{ display:block; font-size:14.5px; }
.nr-pick i{ display:block; font-style:normal; font-size:11px; color:#8c8478; margin-top:2px; }
.nr-main{ padding:14px 16px; display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.nr-card{ background:#26231e; border:1px solid rgba(255,255,255,.08); border-radius:var(--r); padding:14px; }
.nr-card.big{ grid-column:1/-1; }
.nr-title{
  font-size:11px; font-weight:800; letter-spacing:2px; color:#8c8478; text-transform:uppercase;
  margin-bottom:10px; border-bottom:1px solid rgba(255,255,255,.07); padding-bottom:8px;
}
.nr-grid3{ display:grid; grid-template-columns:1fr 1fr 1fr; gap:8px; }
.nr-metric{ background:rgba(255,255,255,.045); border-radius:var(--r-sm); padding:10px; text-align:center; }
.nr-mval{ font-size:20px; font-weight:900; color:#e0a46a; }
.nr-mlbl{ font-size:10px; color:#8c8478; margin-top:4px; letter-spacing:1px; }
.nr-sig{ font-size:13.5px; font-weight:700; margin-top:4px; }
.nr-kv{ display:grid; grid-template-columns:repeat(4,1fr); gap:8px; margin-top:12px; }
.nr-kv span{ display:block; font-size:10px; color:#8c8478; margin-bottom:3px; }
.nr-kv b{ font-size:16px; }
.nr-mc{ display:grid; grid-template-columns:repeat(3,1fr); gap:8px; }
.nr-mc div{ background:rgba(255,255,255,.045); border-radius:var(--r-sm); padding:10px; text-align:center; }
.nr-mc b{ display:block; font-size:16px; color:#e0a46a; }
.nr-mc i{ display:block; font-style:normal; font-size:10px; color:#8c8478; margin-top:3px; }
.nr-row{
  display:flex; justify-content:space-between; gap:8px; padding:6px 0;
  font-size:14.5px; border-bottom:1px solid rgba(255,255,255,.06);
}
.nr-row span{ color:#8c8478; }
.nr-note{ font-size:11px; color:#8c8478; line-height:1.65; margin-top:8px; }
.nr-advice{
  background:rgba(224,164,106,.08); border:1px solid rgba(224,164,106,.24);
  border-radius:var(--r-sm); padding:12px; font-size:14.5px; line-height:1.75;
}
.nr-advice strong{ color:#e0a46a; }
.nr-svg{ width:100%; height:280px; background:#1b1915; border-radius:var(--r-sm); display:block; }
.nr-foot{ text-align:center; padding:14px 16px 18px; font-size:11px; color:#6b6357; border-top:1px solid rgba(255,255,255,.06); }
.nr-badge{
  display:inline-block; margin-left:8px; padding:2px 8px; border-radius:99px;
  font-size:11px; font-weight:800; background:rgba(224,164,106,.14); color:#e0a46a; letter-spacing:0; vertical-align:3px;
}

/* ═══ 机会雷达 ═══ */
.opp-head{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:10px; }
.opp-count{ font-size:13.5px; color:var(--muted); }
.opp-hot{
  display:inline-flex; align-items:center; gap:4px; font-size:11.5px; font-weight:700;
  color:var(--up); background:color-mix(in srgb,var(--up) 8%,transparent);
  border:1px solid color-mix(in srgb,var(--up) 30%,transparent); border-radius:999px; padding:2px 9px;
}
.opp-tabs{ display:flex; gap:6px; flex-wrap:wrap; margin-bottom:12px; }
.opp-tab{
  font-size:13.5px; padding:4px 11px; border-radius:999px; border:1px solid var(--border);
  background:var(--panel-2); color:var(--muted); cursor:pointer; transition:all var(--dur) var(--ease);
}
.opp-tab.on{
  border-color:var(--opportunity); color:var(--opportunity);
  background:color-mix(in srgb,var(--opportunity) 9%,transparent); font-weight:650;
}
.opp-list{ display:flex; flex-direction:column; gap:8px; }
.opp-item{
  border:1px solid var(--border); border-left:3px solid var(--opportunity);
  border-radius:var(--r-sm); padding:10px 13px; background:var(--panel-2);
  transition:all var(--dur) var(--ease);
}
.opp-item:hover{ border-color:var(--border-strong); background:var(--panel-3); }
.opp-item.hot{ border-left-color:var(--up); background:color-mix(in srgb,var(--up) 5%,var(--panel-2)); }
.opp-t{ font-size:14.5px; font-weight:650; color:var(--text); }
.opp-t a{ color:inherit; text-decoration:none; }
.opp-t a:hover{ color:var(--opportunity); text-decoration:underline; }
.opp-m{ display:flex; gap:8px; flex-wrap:wrap; font-size:11.5px; color:var(--muted); margin-top:3px; }
.opp-dl{ font-weight:700; color:var(--opportunity); }
.opp-item.hot .opp-dl{ color:var(--up); }
.opp-prize{ font-size:11.5px; color:var(--muted); margin-top:3px; }
.opp-note{ font-size:11.5px; color:var(--muted-2); margin-top:10px; line-height:1.65; }

/* ═══ 比赛先知（赛事监控页） ═══ */
.bl-toolbar{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin-bottom:14px; }
.bl-form{ display:grid; grid-template-columns:1.4fr 1.6fr 0.7fr 0.9fr auto; gap:8px; width:100%; margin-bottom:14px; }
@media(max-width:900px){ .bl-form{ grid-template-columns:1fr; } }
.bl-form input,.bl-form textarea{
  font:inherit; font-size:14px; padding:8px 10px; border:1px solid var(--border);
  border-radius:var(--r-sm); background:var(--panel-2); color:var(--text); outline:none;
}
.bl-form input:focus,.bl-form textarea:focus{ border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-soft); }
.bl-form textarea{ grid-column:1/-1; min-height:56px; resize:vertical; }
.bl-meta{ display:flex; flex-wrap:wrap; gap:10px; font-size:13.5px; color:var(--muted); margin-bottom:12px; }
.bl-meta b{ color:var(--text); }
.bl-list{ display:flex; flex-direction:column; gap:10px; }
.bl-card{
  border:1px solid var(--border); border-radius:var(--r); padding:13px 15px;
  background:var(--panel-2); border-left:4px solid var(--opportunity);
  transition:all var(--dur) var(--ease);
}
.bl-card:hover{ border-color:var(--border-strong); background:var(--panel-3); }
.bl-card.hot{ border-left-color:var(--up); box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--up) 12%,transparent); }
.bl-card.changed{ border-left-color:var(--warn); }
.bl-title{ font-size:16.5px; font-weight:700; line-height:1.4; margin:0 0 7px; }
.bl-title a{ color:var(--text); text-decoration:none; }
.bl-title a:hover{ color:var(--opportunity); text-decoration:underline; }
.bl-row{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; font-size:13.5px; color:var(--muted); margin-bottom:4px; }
.bl-tag{
  display:inline-flex; align-items:center; gap:3px; padding:2px 8px; border-radius:999px;
  border:1px solid var(--border); background:var(--panel); font-size:11px;
}
.bl-tag.hot{ color:var(--up); border-color:color-mix(in srgb,var(--up) 35%,transparent); background:color-mix(in srgb,var(--up) 8%,transparent); font-weight:700; }
.bl-tag.watch{ color:var(--opportunity); border-color:color-mix(in srgb,var(--opportunity) 35%,transparent); }
.bl-tag.chg{ color:var(--warn); border-color:color-mix(in srgb,var(--warn) 40%,transparent); background:var(--warn-soft); font-weight:700; }
.bl-prize{ font-size:14px; margin:7px 0; color:var(--text); }
.bl-notes{ font-size:13.5px; color:var(--muted); line-height:1.6; margin:4px 0 9px; white-space:pre-wrap; }
.bl-actions{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.bl-link{ font-size:11.5px; color:var(--muted-2); word-break:break-all; flex:1; min-width:140px; }
.bl-empty{ padding:28px; text-align:center; color:var(--muted); }
.bl-copy{ font-size:13.5px; }

/* ---------------- 响应式 ---------------- */
@media (max-width:1100px){
  .graph-wrap{ grid-template-columns:1fr; }
  .banner{ gap:10px; }
  .bl-spark{ margin-left:0; }
  .topbar{ flex-wrap:wrap; }
  .topbar-stack{ flex:1 1 100%; order:3; max-width:none; }
}
@media (max-width:760px){
  .topbar{ flex-wrap:wrap; gap:10px; padding:10px 14px; }
  .brand-text h1{ font-size:21px; letter-spacing:2px; }
  .brand-logo{ font-size:24px; }
  .tabs{ padding:0 14px 9px; }
  .topbar-sub{ padding:0 14px 9px; gap:10px; }
  .site-nav{ padding:0 14px 10px; }
  main,.banner,.stat-strip{ padding-left:14px; padding-right:14px; }
  .stat-strip{ gap:16px; }
  .hl{ font-size:17px; }
}
@media(max-width:720px){
  .mc{ grid-template-columns:22px 1fr; gap:6px; }
  .mc-t{ grid-column:2; }
  .pgrid{ grid-template-columns:1fr; }
  .vgrid{ grid-template-columns:1fr; }
  .llmev-row{ grid-template-columns:20px 1fr; gap:4px; }
  .llmev-o,.llmev-src{ grid-column:2; }
  .ai-row{ grid-template-columns:1fr; gap:2px; }
  .ai-k{ text-align:left; }
  .brief-headline{ font-size:17px; }
  .fin-h{ flex-direction:column; gap:2px; }
  .fin-p{ font-size:17px; }
  .fin-risk{ gap:8px 12px; }
  .nr-main{ grid-template-columns:1fr; }
  .rec-seats{ grid-template-columns:1fr 1fr; }
  .nr-layout{ grid-template-columns:1fr; }
  .nr-side{ border-right:0; border-bottom:1px solid rgba(255,255,255,.06); }
}

/* ===================================================================
   足球情报 · 热门场景
   =================================================================== */
.fb-stat{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(112px,1fr)); gap:10px;
  margin:0 0 16px;
}
.fb-stat>div{
  background:var(--panel); border:1px solid var(--border); border-radius:var(--r-md,10px);
  padding:11px 13px; display:flex; flex-direction:column; gap:2px;
}
.fb-stat b{ font-family:var(--font-mono); font-size:21px; line-height:1.15; color:var(--text); }
.fb-stat span{ font-size:13.5px; color:var(--muted); }

/* 赛前研判卡片 */
.fb-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(390px,1fr)); gap:14px; }
.fb-card{
  background:var(--panel); border:1px solid var(--border); border-radius:var(--r-md,12px);
  padding:14px 16px 13px; display:flex; flex-direction:column; gap:10px;
}
.fb-h{ display:flex; align-items:center; gap:9px; flex-wrap:wrap; font-size:13.5px; color:var(--muted); }
.fb-lg{
  font-weight:650; color:var(--accent); background:var(--accent-soft);
  padding:2px 9px; border-radius:var(--r-full); font-size:11.5px;
}
.fb-vn{ color:var(--muted-2); }
.fb-team{ display:flex; align-items:center; gap:10px; }
.fb-tn{ flex:1; font-size:17.5px; font-weight:650; color:var(--text); }
.fb-tn-a{ text-align:right; }
.fb-prob{ display:flex; flex-direction:column; gap:5px; }
.fb-pb{ display:flex; height:8px; border-radius:var(--r-full); overflow:hidden; background:var(--panel-3); }
.fb-bar{ display:block; height:100%; }
.fb-bar.h{ background:var(--accent); }
.fb-bar.d{ background:var(--muted-2); }
.fb-bar.a{ background:var(--accent-2); }
.fb-pl{ display:flex; justify-content:space-between; font-size:13.5px; color:var(--text-2); font-family:var(--font-mono); }
.fb-lam{ font-size:13.5px; color:var(--muted); }
.fb-facs{ display:flex; flex-direction:column; gap:5px; }
.fb-fac{ display:flex; gap:8px; align-items:flex-start; font-size:14px; line-height:1.5; color:var(--text-2); }
.fb-fac b{
  flex:none; font-size:11px; font-weight:650; padding:1px 7px; border-radius:var(--r-full);
  border:1px solid var(--border-strong); color:var(--muted); white-space:nowrap;
}
.fb-fac b.w-高{ color:#b4441f; border-color:color-mix(in srgb,#b4441f 40%,transparent); background:color-mix(in srgb,#b4441f 10%,transparent); }
.fb-fac b.w-中{ color:var(--accent-2); border-color:color-mix(in srgb,var(--accent-2) 40%,transparent); background:color-mix(in srgb,var(--accent-2) 10%,transparent); }
.fb-out{
  margin:0; font-size:14.5px; line-height:1.62; color:var(--text);
  padding:9px 11px; background:var(--panel-2); border-radius:8px; border-left:3px solid var(--accent);
}
.fb-link{ font-size:14px; color:var(--accent); text-decoration:none; }
.fb-link:hover{ text-decoration:underline; }

/* 积分榜 / 往年画像 */
.fb-sec{ margin:0 0 22px; }
.fb-sec h3{ margin:0 0 10px; font-size:17px; font-weight:650; color:var(--text); }
.fb-sec h3 em{ font-style:normal; font-size:13.5px; color:var(--muted); font-weight:400; margin-left:6px; }
.fb-table-wrap{ overflow-x:auto; border:1px solid var(--border); border-radius:var(--r-md,10px); background:var(--panel); }
.fb-table{ width:100%; border-collapse:collapse; font-size:14.5px; min-width:640px; }
.fb-table th,.fb-table td{ padding:7px 10px; text-align:right; border-bottom:1px solid var(--hairline); white-space:nowrap; }
.fb-table th{ font-size:11.5px; color:var(--muted); font-weight:600; background:var(--panel-2); position:sticky; top:0; }
.fb-table th:nth-child(2),.fb-table td:nth-child(2){ text-align:left; }
.fb-table tr:last-child td{ border-bottom:none; }
.fb-table td{ font-family:var(--font-mono); color:var(--text-2); }
.fb-table td.fb-tname{ font-family:var(--font-sans); color:var(--text); }
.fb-table td.up{ color:#b4441f; }
.fb-table td.dn{ color:var(--accent-2); }
.fb-table td.fb-form{ letter-spacing:1px; font-size:13.5px; }
.fb-zone{
  margin-left:6px; font-size:10.5px; padding:1px 6px; border-radius:var(--r-full);
  background:var(--panel-3); color:var(--muted); font-family:var(--font-sans);
}
.fb-trend-note{
  margin:0 0 10px; font-size:14px; line-height:1.6; color:var(--text-2);
  padding:9px 12px; background:var(--panel-2); border-radius:8px;
}

/* 近期赛果 */
.fb-results{ display:grid; grid-template-columns:repeat(auto-fill,minmax(330px,1fr)); gap:8px; }
.fb-res{
  display:flex; align-items:center; gap:9px; font-size:14px;
  background:var(--panel); border:1px solid var(--border); border-radius:8px; padding:7px 11px;
}
.fb-rlg{ color:var(--accent); font-weight:650; font-size:11.5px; flex:none; }
.fb-rdt{ color:var(--muted); font-family:var(--font-mono); flex:none; }
.fb-rs{ flex:1; display:flex; align-items:center; justify-content:space-between; gap:7px; color:var(--text); }
.fb-rs em{ font-family:var(--font-mono); font-style:normal; color:var(--accent); font-weight:650; }
.fb-rv{ color:var(--muted-2); font-size:11px; max-width:120px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.fb-note{
  margin-top:18px; font-size:13.5px; line-height:1.7; color:var(--muted);
  padding:10px 13px; border:1px dashed var(--border); border-radius:8px;
}

/* 热门场景 */
.hs-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(178px,1fr)); gap:11px; margin:0 0 18px; }
.hs-card{
  text-align:left; cursor:pointer; font-family:inherit;
  background:var(--panel); border:1px solid var(--border); border-radius:var(--r-md,10px);
  padding:11px 13px; display:flex; flex-direction:column; gap:6px;
  transition:border-color var(--dur) var(--ease), background var(--dur) var(--ease);
}
.hs-card:hover{ border-color:var(--border-strong); }
.hs-card.active{ border-color:var(--accent); background:var(--accent-soft); }
.hs-top{ display:flex; align-items:center; gap:6px; }
.hs-ic{ font-size:17px; }
.hs-name{ font-size:15.5px; font-weight:650; color:var(--text); flex:1; }
.hs-heat{ font-size:10.5px; font-weight:650; padding:1px 7px; border-radius:var(--r-full); }
.hs-爆发{ color:#fff; background:#c0392b; }
.hs-热{ color:#b4441f; background:color-mix(in srgb,#c97b3f 18%,transparent); }
.hs-温{ color:var(--muted); background:var(--panel-3); }
.hs-淡{ color:var(--muted-2); background:var(--panel-2); }
.hs-num{ display:flex; align-items:baseline; gap:5px; }
.hs-num b{ font-family:var(--font-mono); font-size:19px; color:var(--text); }
.hs-num span{ font-size:11px; color:var(--muted); }
.hs-spark{ display:flex; align-items:flex-end; gap:2px; height:26px; }
.hs-spark i{ flex:1; min-width:2px; background:var(--accent); opacity:.35; border-radius:2px 2px 0 0; }
.hs-foot{ display:flex; justify-content:space-between; font-size:11px; color:var(--muted); font-family:var(--font-mono); }
.hs-surges{ display:flex; flex-direction:column; gap:7px; }
.hs-surge{
  display:flex; align-items:center; gap:10px; flex-wrap:wrap;
  background:var(--panel); border:1px solid var(--border); border-left:3px solid #c0392b;
  border-radius:8px; padding:8px 12px; font-size:14.5px;
}
.hs-surge b{ color:var(--text); }
.hs-surge span{ color:var(--text-2); font-size:14px; }
.hs-detail{
  margin:0 0 20px; background:var(--panel); border:1px solid var(--border);
  border-radius:var(--r-md,12px); padding:14px 16px;
}
.hs-detail h3{ margin:0 0 8px; font-size:17px; color:var(--text); }
.hs-detail h3 em{ font-style:normal; font-size:13.5px; color:var(--muted); font-weight:400; margin-left:7px; }
.hs-meta{ font-size:14px; color:var(--text-2); margin-bottom:9px; }
.hs-meta b{ font-family:var(--font-mono); color:var(--text); }
.hs-warn{ display:inline-block; margin-left:8px; font-size:11px; color:#b4441f; }
.hs-words{ display:flex; flex-wrap:wrap; gap:6px; margin-bottom:10px; }
.hs-w{
  font-size:13.5px; padding:2px 9px; border-radius:var(--r-full);
  background:var(--panel-2); border:1px solid var(--border); color:var(--text-2);
}
.hs-w em{ font-style:normal; color:var(--muted); font-family:var(--font-mono); font-size:11px; margin-left:4px; }
.hs-teams{ display:flex; flex-wrap:wrap; gap:6px; margin-bottom:10px; }
.hs-team{
  font-size:13.5px; padding:3px 9px; border-radius:8px;
  background:var(--panel-2); border:1px solid var(--border); color:var(--text-2);
}
.hs-team em{ font-style:normal; color:var(--muted); font-family:var(--font-mono); font-size:11px; margin-left:5px; }
.hs-fix{ display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:7px; margin-bottom:11px; }
.hs-fx{
  display:flex; flex-direction:column; gap:2px; font-size:14px;
  background:var(--panel-2); border:1px solid var(--border); border-radius:8px; padding:7px 11px;
}
.hs-fx b{ color:var(--text); }
.hs-fx span{ color:var(--muted); font-size:11.5px; }
.hs-fx em{ font-style:normal; color:var(--accent); font-family:var(--font-mono); font-size:11.5px; }
.hs-boards{ display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:14px; }
.hs-board h4{ margin:0 0 7px; font-size:14.5px; color:var(--text); }
.hs-board ol{ margin:0; padding-left:20px; display:flex; flex-direction:column; gap:4px; }
.hs-board li{ font-size:14px; color:var(--text-2); }
.hs-board a{ color:var(--text-2); text-decoration:none; }
.hs-board a:hover{ color:var(--accent); }
.hs-board em{ font-style:normal; color:var(--muted); font-family:var(--font-mono); font-size:11px; margin-left:6px; }
.empty.small{ padding:20px 14px; font-size:14.5px; }

/* ===================================================================
   全域态势（跨域聚合 + 人群情报 + AI 首席情报官）
   =================================================================== */
.st-chief{
  background:var(--panel); border:1px solid var(--border); border-left:4px solid var(--accent);
  border-radius:var(--r-md,12px); padding:16px 18px 14px; margin:0 0 20px;
}
.st-chief-ai{ border-left-color:#7c5cff; }
.st-chief-h{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:6px; }
.st-badge{
  font-size:11.5px; font-weight:650; padding:2px 10px; border-radius:var(--r-full);
  background:var(--accent-soft); color:var(--accent); white-space:nowrap;
}
.st-chief-ai .st-badge{ background:color-mix(in srgb,#7c5cff 14%,transparent); color:#7c5cff; }
.st-chief h3{ margin:0; font-size:17px; color:var(--text); }
.st-summary{ margin:4px 0 10px; font-size:15.5px; line-height:1.7; color:var(--text-2); }
.st-advice{ display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:7px; }
.st-adv{
  display:flex; gap:8px; align-items:flex-start; font-size:14px; line-height:1.55; color:var(--text-2);
  background:var(--panel-2); border-radius:8px; padding:8px 11px;
}
.st-adv b{
  flex:none; font-size:11px; font-weight:650; color:var(--accent);
  background:var(--accent-soft); padding:1px 8px; border-radius:var(--r-full); margin-top:1px; white-space:nowrap;
}
.st-risks{ margin-top:10px; font-size:13.5px; line-height:1.7; color:var(--muted); }

.st-domains{ display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:10px; }
.st-dom{
  background:var(--panel); border:1px solid var(--border); border-radius:var(--r-md,10px);
  padding:10px 13px; display:flex; flex-direction:column; gap:5px;
}
.st-dom-h{ display:flex; align-items:center; gap:8px; }
.st-ic{ font-size:16px; flex:none; }
.st-name{ font-size:15.5px; font-weight:650; color:var(--text); flex:1; }
.st-trend{ font-size:10.5px; font-weight:650; padding:1px 7px; border-radius:var(--r-full); }
.st-up{ color:#b4441f; background:color-mix(in srgb,#c97b3f 16%,transparent); }
.st-flat{ color:var(--muted); background:var(--panel-3); }
.st-down{ color:var(--accent-2); background:color-mix(in srgb,var(--accent-2) 12%,transparent); }
.st-heat{ font-family:var(--font-mono); font-size:17px; color:var(--text); }
.st-dom-bar{ height:6px; border-radius:var(--r-full); background:var(--panel-3); overflow:hidden; }
.st-dom-bar i{ display:block; height:100%; background:var(--accent); border-radius:var(--r-full); }
.st-dom-note{ font-size:11.5px; color:var(--muted); line-height:1.5; }

.st-prio{ display:flex; flex-direction:column; gap:6px; }
.st-pi{
  display:flex; align-items:center; gap:10px;
  background:var(--panel); border:1px solid var(--border); border-radius:8px; padding:8px 12px;
}
.st-pn{
  flex:none; width:22px; height:22px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  font-size:11.5px; font-weight:700; font-family:var(--font-mono); color:var(--accent); background:var(--accent-soft);
}
.st-pi-ic{ flex:none; }
.st-pi-main{ flex:1; display:flex; flex-direction:column; gap:1px; min-width:0; }
.st-pi-main b{ font-size:14.5px; color:var(--text); }
.st-pi-main span{ font-size:13.5px; color:var(--muted); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.st-pk{
  flex:none; font-size:10.5px; font-weight:650; padding:2px 8px; border-radius:var(--r-full);
  border:1px solid var(--border-strong); color:var(--muted);
}

.st-links{ display:flex; flex-direction:column; gap:6px; }
.st-link{
  font-size:14.5px; line-height:1.6; color:var(--text-2);
  background:var(--panel); border:1px solid var(--border); border-left:3px solid #7c5cff;
  border-radius:8px; padding:8px 12px;
}

.st-personas{ display:grid; grid-template-columns:repeat(auto-fill,minmax(330px,1fr)); gap:12px; margin-top:8px; }
.st-pf{
  background:var(--panel); border:1px solid var(--border); border-radius:var(--r-md,12px);
  padding:13px 15px 12px; display:flex; flex-direction:column; gap:9px;
}
.st-pf-h{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.st-pf-h b{ font-size:16.5px; color:var(--text); }
.st-pf-desc{ font-size:11.5px; color:var(--muted); }
.st-pf-must{ display:flex; flex-direction:column; gap:5px; }
.st-must{ display:flex; gap:8px; align-items:flex-start; }
.st-must-main{ min-width:0; display:flex; flex-direction:column; }
.st-must-main b{ font-size:14px; line-height:1.45; color:var(--text); font-weight:500; }
.st-must-main b a{ color:var(--text); text-decoration:none; }
.st-must-main b a:hover{ color:var(--accent); }
.st-must-main span{ font-size:11.5px; color:var(--muted); }
.st-must-empty{ font-size:13.5px; color:var(--muted); padding:4px 0; }
.st-pf-adv{ font-size:13.5px; line-height:1.6; color:var(--text-2); background:var(--panel-2); border-radius:8px; padding:7px 10px; }

/* ===================================================================
   AI 情报分析师 · 对话面板
   =================================================================== */
.analyst-fab{
  position:fixed; right:22px; bottom:22px; z-index:90;
  width:52px; height:52px; border-radius:50%; border:0; cursor:pointer;
  background:linear-gradient(135deg,var(--accent),color-mix(in srgb,var(--accent) 60%,#7c3aed));
  color:#fff; font-size:22px; box-shadow:0 6px 22px color-mix(in srgb,var(--accent) 42%,transparent);
  transition:transform .18s, box-shadow .18s;
}
.analyst-fab:hover{ transform:translateY(-2px) scale(1.05); box-shadow:0 10px 28px color-mix(in srgb,var(--accent) 55%,transparent); }

.analyst-panel{
  position:fixed; top:0; right:0; bottom:0; z-index:95;
  width:min(400px, 100vw); display:flex; flex-direction:column;
  background:var(--card,#fff); border-left:1px solid var(--line,#e2e8f0);
  box-shadow:-12px 0 40px rgba(2,8,20,.14);
  transform:translateX(105%); transition:transform .22s cubic-bezier(.2,.8,.25,1);
}
.analyst-panel.on{ transform:translateX(0); }

.analyst-head{
  display:flex; align-items:center; gap:10px; padding:14px 16px; flex:none;
  border-bottom:1px solid var(--line,#e2e8f0); background:var(--accent-soft,rgba(14,165,233,.06));
}
.analyst-logo{ font-size:22px; line-height:1; }
.analyst-title{ display:flex; flex-direction:column; min-width:0; }
.analyst-title b{ font-size:15px; }
.analyst-title i{ font-style:normal; color:var(--muted,#64748b); font-size:12px; margin-top:2px; }
.analyst-x{
  margin-left:auto; border:1px solid var(--line,#e2e8f0); background:transparent; color:var(--muted,#64748b);
  width:30px; height:30px; border-radius:8px; cursor:pointer; font-size:13px;
}
.analyst-x:hover{ color:var(--accent,#0ea5e9); border-color:var(--accent,#0ea5e9); }

.analyst-msgs{ flex:1; overflow-y:auto; padding:14px 14px 6px; display:flex; flex-direction:column; gap:10px; }
.an-msg{ max-width:88%; padding:9px 12px; border-radius:12px; font-size:13.5px; line-height:1.65; word-break:break-word; }
.an-user{
  align-self:flex-end; background:var(--accent,#0ea5e9); color:#fff;
  border-bottom-right-radius:4px;
}
.an-ai{
  align-self:flex-start; background:var(--hover,#f1f5f9); color:var(--text,#0f172a);
  border:1px solid var(--line,#e2e8f0); border-bottom-left-radius:4px;
}
.an-src{
  display:inline-block; font-size:11px; font-weight:700; padding:1px 7px; margin-right:5px;
  border-radius:999px; vertical-align:1px;
  color:var(--accent,#0ea5e9); border:1px solid color-mix(in srgb,var(--accent,#0ea5e9) 35%,transparent);
  background:color-mix(in srgb,var(--accent,#0ea5e9) 8%,transparent);
}
.an-meta{ margin-top:7px; font-size:11.5px; color:var(--muted,#94a3b8); }
.an-typing{ color:var(--muted,#94a3b8); animation:an-pulse 1.4s ease-in-out infinite; }
@keyframes an-pulse{ 0%,100%{opacity:.55} 50%{opacity:1} }

.analyst-chips{
  display:flex; gap:6px; flex-wrap:wrap; padding:4px 14px 8px; flex:none;
}
.an-chip{
  font:inherit; font-size:12px; padding:5px 11px; border-radius:999px; cursor:pointer;
  border:1px dashed var(--line,#cbd5e1); background:transparent; color:var(--muted,#64748b);
  transition:all .15s;
}
.an-chip:hover{ color:var(--accent,#0ea5e9); border-color:var(--accent,#0ea5e9); background:var(--accent-soft,rgba(14,165,233,.06)); }

.analyst-input{
  display:flex; gap:8px; padding:12px 14px; flex:none; border-top:1px solid var(--line,#e2e8f0);
}
.analyst-input input{
  flex:1; font:inherit; font-size:13.5px; padding:9px 12px; border-radius:10px;
  border:1px solid var(--line,#cbd5e1); background:var(--bg,#fff); color:var(--text,#0f172a);
  outline:none; transition:border-color .15s;
}
.analyst-input input:focus{ border-color:var(--accent,#0ea5e9); }
.analyst-send{
  font:inherit; font-size:13.5px; font-weight:600; padding:0 16px; border-radius:10px; border:0; cursor:pointer;
  background:var(--accent,#0ea5e9); color:#fff;
}
.analyst-send:disabled{ opacity:.55; cursor:wait; }

@media (max-width:640px){
  .analyst-panel{ width:100vw; }
  .analyst-fab{ right:14px; bottom:14px; }
}
