/* QuantArt 实况台 — 仪表台深色风格。A股惯例：红涨绿跌。 */
:root {
  --bg: #0a0c10;
  --bg-2: #0e1116;
  --panel: rgba(255, 255, 255, 0.022);
  --panel-2: rgba(255, 255, 255, 0.04);
  --line: rgba(255, 255, 255, 0.07);
  --line-strong: rgba(255, 255, 255, 0.13);
  --ink: #eef1f6;
  --muted: #8a93a3;
  --faint: #59616f;
  --brass: #e3b261;
  --brass-dim: #9a7b3f;
  --up: #f6465d;     /* 涨=红（精炼绯红，深色背景更高级） */
  --down: #2ebd85;   /* 跌=绿（精炼翡翠绿） */
  --watch: #e3b261;
  --radius: 14px;
  --mono: ui-monospace, "SF Mono", "JetBrains Mono", "Menlo", "Consolas", monospace;
  --sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC",
    "Hiragino Sans GB", "Microsoft YaHei", system-ui, sans-serif;
}

* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
  font-family: var(--sans);
  color: var(--ink);
  background:
    radial-gradient(1200px 700px at 78% -10%, rgba(227, 178, 97, 0.07), transparent 60%),
    radial-gradient(900px 600px at 10% 0%, rgba(80, 120, 200, 0.06), transparent 55%),
    var(--bg);
  background-attachment: fixed;
  min-height: 100vh;
  -webkit-font-smoothing: antialiased;
  letter-spacing: 0.01em;
}
body::before {
  /* 极淡颗粒，增加质感 */
  content: "";
  position: fixed; inset: 0; pointer-events: none; opacity: 0.035; z-index: 0;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
.num { font-family: var(--mono); font-variant-numeric: tabular-nums; }
.up { color: var(--up); }
.down { color: var(--down); }
.flat { color: var(--muted); }

.wrap { max-width: 1180px; margin: 0 auto; padding: 0 22px; position: relative; z-index: 1; }

/* ---------- 顶栏 ---------- */
.topbar {
  position: sticky; top: 0; z-index: 20;
  backdrop-filter: blur(14px);
  background: linear-gradient(180deg, rgba(10, 12, 16, 0.92), rgba(10, 12, 16, 0.66));
  border-bottom: 1px solid var(--line);
}
.topbar .wrap { display: flex; align-items: center; gap: 16px; height: 64px; }
.brand { display: flex; align-items: baseline; gap: 10px; font-weight: 600; }
.brand .mark {
  font-family: var(--mono); font-weight: 700; letter-spacing: 0.06em;
  color: var(--brass);
}
.brand .sub { color: var(--muted); font-size: 13px; letter-spacing: 0.04em; }
.topbar .spacer { flex: 1; }

/* ---------- 14:30 决策快捷条（窗口内 sticky） ---------- */
.decision-quickbar {
  display: none;
  position: sticky;
  top: 64px;
  z-index: 19;
  background: linear-gradient(180deg, rgba(18, 22, 28, 0.97), rgba(14, 17, 22, 0.92));
  border-bottom: 1px solid rgba(201, 162, 90, 0.45);
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.25);
}
.decision-quickbar.show { display: block; }
.decision-quickbar.prelude {
  display: block;
  background: rgba(227, 178, 97, 0.06);
  border-bottom: 1px solid rgba(227, 178, 97, 0.2);
}
.decision-quickbar.prelude .dq-pulse { opacity: 0.75; animation: none; }
.decision-quickbar.post-market {
  display: block;
  background: rgba(100, 116, 139, 0.08);
  border-bottom: 1px solid rgba(100, 116, 139, 0.25);
}
.decision-quickbar.post-market .dq-pulse { opacity: 0.65; animation: none; color: var(--muted, #8ea0cc); }
.decision-quickbar-inner {
  display: flex;
  flex-direction: column;
  gap: 0;
  padding: 8px 0;
  font-size: 12.5px;
}
.dq-row { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.dq-row-main { width: 100%; }
.dq-row-risk {
  width: 100%;
  overflow: hidden;
  max-height: 0;
  opacity: 0;
  border-top: 0 solid transparent;
  transition: max-height 0.25s ease, opacity 0.2s ease, padding 0.2s ease, border-color 0.2s ease;
  padding: 0;
}
.decision-quickbar.has-risk .dq-row-risk {
  max-height: 48px;
  opacity: 1;
  padding-top: 6px;
  margin-top: 4px;
  border-top: 1px solid rgba(201, 162, 90, 0.25);
}
.dq-row-risk[hidden] { display: block; }
.dq-pulse {
  color: var(--brass);
  font-weight: 600;
  letter-spacing: 0.02em;
}
.dq-pulse::before {
  content: "";
  display: inline-block;
  width: 7px;
  height: 7px;
  margin-right: 7px;
  border-radius: 50%;
  background: var(--brass);
  box-shadow: 0 0 8px var(--brass);
  animation: dq-pulse 1.4s ease-in-out infinite;
}
@keyframes dq-pulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50% { opacity: 0.45; transform: scale(0.85); }
}
.dq-countdown { color: var(--muted); white-space: nowrap; }
.dq-proxy { flex: 1; min-width: 140px; color: var(--ink); }
.dq-align {
  flex: 0 1 auto;
  font-size: 11px;
  padding: 2px 8px;
  border-radius: 4px;
  white-space: nowrap;
}
.dq-align.dec-align-ok { background: rgba(46, 160, 67, 0.12); color: var(--up); }
.dq-align.dec-align-warn { background: rgba(200, 120, 0, 0.15); color: var(--brass); }
.dq-gsz-ts { font-size: 11px; opacity: 0.92; }
.dq-gsz-ts b { font-family: var(--mono); font-weight: 600; }
.dq-gsz-missing { font-size: 11px; color: var(--down); font-weight: 600; }
.dq-dual {
  flex: 0 1 auto;
  font-size: 11px;
  padding: 2px 8px;
  border-radius: 4px;
  white-space: nowrap;
}
.dq-dual.dec-align-warn { background: rgba(255, 93, 93, 0.15); color: var(--down); }
.dq-dual.dq-dual-info { background: rgba(227, 178, 97, 0.12); color: var(--brass); }
.dq-co-window {
  flex: 0 1 auto;
  font-size: 11px;
  padding: 2px 8px;
  border-radius: 4px;
  white-space: nowrap;
}
.dq-co-window.dec-co-ok { background: rgba(46, 160, 67, 0.12); color: var(--up); }
.dq-co-window.dec-co-warn { background: rgba(200, 120, 0, 0.15); color: var(--brass); }
.dec-co-strip {
  margin: 0 0 10px;
  padding: 8px 12px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 8px;
  border: 1px solid var(--line);
}
.dec-co-strip.dec-co-ok { border-color: rgba(46, 160, 67, 0.35); background: rgba(46, 160, 67, 0.06); color: var(--up); font-weight: 600; }
.dec-co-strip.dec-co-warn { border-color: rgba(200, 120, 0, 0.4); background: rgba(200, 120, 0, 0.08); color: var(--brass); font-weight: 600; }
/* R376 · co-window 窗内 E2E 文档 */
.dec-co-e2e-doc {
  margin: 0 0 12px;
  padding: 0;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: rgba(110, 140, 200, 0.04);
}
.dec-co-e2e-summary {
  cursor: pointer;
  padding: 10px 12px;
  font-size: 12px;
  font-weight: 600;
  list-style: none;
}
.dec-co-e2e-summary::-webkit-details-marker { display: none; }
.dec-co-e2e-k { font-size: 10px; letter-spacing: 0.06em; color: var(--muted); margin-right: 6px; }
.dec-co-e2e-body { padding: 0 12px 12px; font-size: 12px; line-height: 1.5; }
.dec-co-e2e-steps { margin: 8px 0 0; padding-left: 18px; }
.dec-co-e2e-live { margin: 8px 0 0; font-weight: 600; font-size: 12px; }
.dec-co-e2e-live.dec-co-ok { color: var(--up); }
.dec-co-e2e-live.dec-co-warn { color: var(--brass); }
.dec-co-e2e-foot { margin: 8px 0 0; font-size: 11px; }
.dec-co-e2e-foot a { color: var(--brass); }
.dec-dual-teaser {
  font-size: 12.5px; line-height: 1.5; padding: 8px 12px; border-radius: 8px; margin-bottom: 12px;
  border: 1px solid rgba(227, 178, 97, 0.28); background: rgba(227, 178, 97, 0.06);
}
.dec-dual-teaser-warn { border-color: rgba(255, 93, 93, 0.35); background: rgba(255, 93, 93, 0.06); }
.dec-dual-jump.btn-link {
  background: none; border: none; padding: 0; margin-left: 4px; color: var(--brass);
  font-size: inherit; cursor: pointer; text-decoration: underline; font-weight: 600;
}
.dec-dual-jump.btn-link:hover { color: var(--ink); }
.dq-holdings {
  flex: 0 1 auto;
  max-width: 320px;
  color: var(--ink);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.dq-hold-item { margin-right: 4px; }
.dq-hold-est { font-size: 10px; color: var(--muted); margin-left: 2px; }
.dq-risk {
  flex: 1;
  font-size: 11.5px;
  line-height: 1.4;
}
.dq-risk-loss { color: var(--down); }
.dq-risk-gain { color: var(--brass); }
.dec-hold-risk { font-size: 11px; margin-top: 6px; }
.dec-hold-risk.loss { color: var(--down); }
.dec-hold-risk.gain { color: var(--brass); }
.dec-risk-ref { font-size: 11.5px; }
.dq-nav { display: flex; gap: 8px; margin-left: auto; }
.dq-nav a {
  font-size: 12px;
  padding: 4px 10px;
  border-radius: 999px;
  border: 1px solid var(--line);
  color: var(--muted);
  text-decoration: none;
  display: inline-flex;
  align-items: center;
}
.dq-nav a:hover { color: var(--brass); border-color: var(--brass); }

.meta { display: flex; align-items: center; gap: 14px; color: var(--muted); font-size: 12.5px; }
.meta .dot { width: 6px; height: 6px; border-radius: 50%; background: var(--down); box-shadow: 0 0 10px var(--down); }
.meta .num { color: var(--ink); }
.btn {
  font: inherit; font-size: 13px; color: var(--ink); cursor: pointer;
  background: var(--panel-2); border: 1px solid var(--line-strong);
  border-radius: 9px; padding: 7px 13px; transition: 0.18s ease;
  display: inline-flex; align-items: center; gap: 7px;
}
.btn:hover { border-color: var(--brass-dim); color: var(--brass); transform: translateY(-1px); }
.btn:active { transform: translateY(0); }
.btn.spin svg { animation: spin 0.9s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }

/* ---------- 区块标题 ---------- */
.section { margin: 34px 0; }
.section-head { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; }
.section-head h2 { font-size: 15px; font-weight: 600; margin: 0; letter-spacing: 0.05em; color: var(--ink); }
.section-head .kicker { font-family: var(--mono); font-size: 11px; color: var(--brass-dim); letter-spacing: 0.18em; text-transform: uppercase; }
.section-head .rule { flex: 1; height: 1px; background: linear-gradient(90deg, var(--line-strong), transparent); }
.weight-toggle { display: inline-flex; gap: 6px; flex-shrink: 0; }
.wt-btn { padding: 5px 10px; font-size: 12px; opacity: 0.75; }
.wt-btn.active { opacity: 1; border-color: var(--brass-dim); color: var(--brass); background: rgba(227,178,97,.1); }
#weights-banner { margin-bottom: 12px; }
.muted-note { color: var(--muted); font-size: 12px; margin-bottom: 10px; }
.info-grid { display: grid; grid-template-columns: 1.4fr 1fr; gap: 20px; }
@media (max-width: 900px) { .info-grid { grid-template-columns: 1fr; } }
.news-list { display: flex; flex-direction: column; gap: 12px; max-height: 420px; overflow: auto; }
.news-item a { color: var(--ink); text-decoration: none; font-weight: 500; }
.news-item a:hover { color: var(--brass); }
.news-meta { font-size: 12px; color: var(--faint); margin-top: 4px; }
.news-sum { font-size: 13px; color: var(--muted); margin: 6px 0 0; line-height: 1.5; }
.etf-list { margin: 8px 0 0; padding-left: 18px; font-size: 13px; line-height: 1.7; }
.holdings-table { width: 100%; border-collapse: collapse; margin-top: 8px; font-size: 12px; }
.holdings-table th, .holdings-table td { border-bottom: 1px solid var(--border); padding: 4px 6px; text-align: left; }
.holdings-table th:last-child, .holdings-table td:last-child { text-align: right; }
.ticker-news-grid { display: grid; gap: 12px; margin-top: 12px; }
.ticker-news-block { border-top: 1px solid var(--border); padding-top: 8px; }
.info-holdings-block { margin-bottom: 16px; }
.info-holdings-block:last-of-type { margin-bottom: 8px; }
.info-sector-partial { margin: 0 0 8px; font-size: 12px; }
.dec-align-stack { display: flex; flex-direction: column; gap: 8px; }
.dec-align-fund { font-size: 11px; font-weight: 700; color: var(--brass); }
.news-item.compact { margin-bottom: 8px; }

/* ---------- 大盘状态横幅 ---------- */
.regime {
  position: relative; overflow: hidden;
  border: 1px solid var(--line); border-radius: var(--radius);
  background: linear-gradient(180deg, var(--panel-2), var(--panel));
  padding: 20px 22px; display: flex; align-items: center; gap: 26px; flex-wrap: wrap;
}
.regime::after {
  content: ""; position: absolute; left: 0; right: 0; top: 0; height: 2px;
  background: linear-gradient(90deg, transparent, var(--brass), transparent);
  background-size: 220px 100%; animation: sweep 5.5s linear infinite;
}
@keyframes sweep { 0% { background-position: -220px 0; } 100% { background-position: 120% 0; } }
.regime .big {
  font-size: 30px; font-weight: 700; letter-spacing: 0.04em; line-height: 1;
}
.regime .label { color: var(--faint); font-size: 11px; letter-spacing: 0.16em; text-transform: uppercase; margin-bottom: 8px; }
.regime .stat { display: flex; flex-direction: column; gap: 2px; }
.regime .stat .v { font-size: 21px; font-weight: 600; }
.regime .stat .v.num { font-size: 22px; }
.ic-sentiment-note em { color: var(--brass); font-style: normal; }
.tag-attack { color: var(--up); }
.tag-neutral { color: var(--brass); }
.tag-defense { color: var(--down); }

/* ---------- 指数三卡 ---------- */
.grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.idx-card {
  border: 1px solid var(--line); border-radius: var(--radius);
  background: linear-gradient(180deg, var(--panel-2), var(--panel));
  padding: 18px; position: relative; overflow: hidden;
  transition: 0.2s ease;
}
.idx-card:hover { border-color: var(--line-strong); transform: translateY(-2px); }
.idx-card .name { font-size: 13.5px; color: var(--muted); display: flex; justify-content: space-between; align-items: center; }
.idx-card .price { font-size: 30px; font-weight: 600; margin: 10px 0 4px; }
.idx-card .chg { font-size: 14px; font-weight: 600; }
.trend-pill { font-size: 11px; padding: 3px 9px; border-radius: 20px; border: 1px solid var(--line-strong); color: var(--muted); }

/* ---------- 研判榜搜索补全 ---------- */
.board-search { position: relative; margin-left: auto; width: min(360px, 46vw); }
.board-search .bs-ic { position: absolute; left: 11px; top: 50%; transform: translateY(-50%); color: var(--faint); pointer-events: none; }
#bs-input {
  width: 100%; box-sizing: border-box; padding: 9px 12px 9px 34px;
  background: var(--panel-2); border: 1px solid var(--line-strong); border-radius: 9px;
  color: var(--text); font-size: 13px; font-family: inherit; outline: none; transition: border-color .15s ease;
}
#bs-input:focus { border-color: var(--brass-dim); }
#bs-input::placeholder { color: var(--faint); }
.bs-dropdown {
  position: absolute; top: calc(100% + 6px); left: 0; right: 0; z-index: 30;
  background: var(--bg-2); border: 1px solid var(--line-strong); border-radius: 10px;
  box-shadow: 0 18px 44px rgba(0,0,0,.5); overflow: hidden; max-height: 340px; overflow-y: auto;
}
.bs-item { display: flex; align-items: center; gap: 10px; padding: 9px 13px; cursor: pointer; border-bottom: 1px solid var(--line); }
.bs-item:last-child { border-bottom: none; }
.bs-item:hover, .bs-item.active { background: var(--panel-2); }
.bs-item .nm { font-size: 13px; font-weight: 600; }
.bs-item .cd { font-family: var(--mono); font-size: 11.5px; color: var(--faint); }
.bs-item .tp { margin-left: auto; font-size: 10px; color: var(--muted); border: 1px solid var(--line); border-radius: 5px; padding: 1px 6px; }
.bs-item .tp.etf { color: var(--brass); border-color: var(--brass-dim); }
.bs-msg { padding: 11px 13px; font-size: 12px; color: var(--faint); }
.row .del-btn {
  width: 22px; height: 22px; border-radius: 6px; border: 1px solid var(--line-strong);
  background: transparent; color: var(--faint); cursor: pointer; font-size: 13px; line-height: 1;
  display: none; align-items: center; justify-content: center; flex: none;
}
.row .del-btn:hover { color: var(--up); border-color: rgba(255,93,93,.4); }
.row:hover .del-btn { display: inline-flex; }
.custom-pill { font-size: 9.5px; color: var(--brass); border: 1px solid var(--brass-dim); border-radius: 5px; padding: 1px 4px; }

/* ---------- 详情：AI 智能体聚合 ---------- */
.agent-head { display: flex; align-items: center; gap: 12px; }
.agent-actions { margin-left: auto; display: flex; gap: 8px; }
.agent-hint { font-size: 11.5px; color: var(--faint); margin-top: 8px; line-height: 1.5; }
.agent-frame-wrap { margin-top: var(--agent-gap-lg); border: 1px solid var(--line-strong); border-radius: var(--agent-radius-md); overflow: hidden; background: var(--bg-2); }
.agent-frame { width: 100%; height: 600px; border: 0; display: block; }
a.btn { text-decoration: none; display: inline-flex; align-items: center; }

/* 顶栏自检指示灯 */
.sc-led { width: 8px; height: 8px; border-radius: 50%; background: var(--muted);
  box-shadow: 0 0 8px var(--muted); transition: background .2s ease, box-shadow .2s ease; }

/* ---------- 研判榜 ---------- */
.board { border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; background: var(--panel); }
.row {
  display: grid;
  grid-template-columns: 38px minmax(130px, 1.25fr) minmax(96px, 0.95fr) 84px minmax(66px, 0.8fr) 86px 70px 84px 26px;
  align-items: center; gap: 12px;
  padding: 15px 16px; border-bottom: 1px solid var(--line);
  cursor: pointer; transition: background 0.16s ease;
}
.row > div { min-width: 0; }
.row:last-child { border-bottom: none; }
.row:hover { background: var(--panel-2); }
.row.head { cursor: default; color: var(--faint); font-size: 11px; letter-spacing: 0.12em; text-transform: uppercase; padding: 11px 18px; background: rgba(255,255,255,0.015); }
.row.head:hover { background: rgba(255,255,255,0.015); }

.rank { font-family: var(--mono); font-size: 15px; font-weight: 700; color: var(--faint); }
.rank.top { color: var(--brass); }
.identity .nm { font-weight: 600; font-size: 14px; display: flex; align-items: center; gap: 8px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.identity .nm .dup { flex: none; }
.identity .code { font-family: var(--mono); font-size: 11.5px; color: var(--faint); margin-top: 3px; }
.identity .eod-src { font-family: var(--mono); font-size: 10px; color: var(--faint); margin-top: 2px; opacity: 0.85; letter-spacing: 0.02em; }
.col-idx { overflow: hidden; }
.idx-tag {
  display: inline-block; max-width: 100%; vertical-align: middle;
  font-size: 10px; color: var(--muted); border: 1px solid var(--line);
  border-radius: 6px; padding: 2px 6px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.dup { font-size: 10px; color: var(--brass-dim); border: 1px solid var(--brass-dim); border-radius: 5px; padding: 1px 5px; }
.proxy-badge { font-size: 10px; color: var(--brass); border: 1px solid var(--brass-dim); border-radius: 5px; padding: 1px 5px; background: rgba(227,178,97,.12); }
.proxy-boundary-chip {
  font-size: 10px; color: var(--down); border: 1px solid rgba(255, 93, 93, 0.35);
  border-radius: 5px; padding: 1px 5px; background: rgba(255, 93, 93, 0.08); white-space: nowrap;
}
.dec-proxy-boundary {
  font-size: 12px; line-height: 1.55; padding: 8px 10px; border-radius: 8px; margin-bottom: 10px;
  border: 1px solid rgba(255, 93, 93, 0.28); background: rgba(255, 93, 93, 0.06); color: var(--ink);
}
.dec-proxy-boundary strong { color: var(--brass); font-weight: 600; }
.d-proxy-boundary {
  font-size: 11.5px; line-height: 1.45; margin-top: 8px; padding: 8px 10px; border-radius: 8px;
  border: 1px solid rgba(255, 93, 93, 0.35); background: rgba(255, 93, 93, 0.08); color: var(--down); font-weight: 600;
}
.eod-stale-badge { font-size: 10px; color: var(--up); border: 1px solid rgba(255,93,93,.45); border-radius: 5px; padding: 1px 5px; background: rgba(255,93,93,.08); }
.data-gap-badge { font-size: 10px; color: var(--up); border: 1px solid rgba(255,93,93,.55); border-radius: 5px; padding: 1px 5px; background: rgba(255,93,93,.12); font-weight: 600; }
.data-gap-intraday { border-color: rgba(200,120,0,.45); color: var(--brass); background: rgba(200,120,0,.1); }
.known-reg { font-size: 10px; color: var(--brass); border: 1px solid var(--brass-dim); border-radius: 4px; padding: 0 4px; }
.known-gaps-panel { margin: 12px 0; }
.known-gaps-title { font-size: 13px; font-weight: 600; color: var(--brass); margin-bottom: 8px; }
.known-gap-card { border: 1px solid rgba(255,93,93,.35); border-radius: 8px; padding: 10px 12px; margin-bottom: 8px; background: rgba(255,93,93,.05); }
.known-gap-head { font-size: 13px; margin-bottom: 6px; }
.known-gap-list { margin: 0 0 8px; padding-left: 18px; font-size: 12px; }
.known-gap-list .k { font-weight: 600; margin-right: 4px; }
.known-gap-summary { margin: 0 0 8px; font-size: 13px; line-height: 1.45; }
.known-gap-action { margin: 0 0 8px; font-size: 12px; line-height: 1.45; color: var(--muted); }
.known-gap-tech { margin: 0 0 8px; font-size: 12px; }
.known-gap-tech-toggle { cursor: pointer; color: var(--faint); font-size: 11px; }
.known-gap-tech-toggle::-webkit-details-marker { display: none; }
.dec-known-gaps-note { font-size: 12px; margin: 0 0 10px; line-height: 1.45; }
.dec-known-gaps-note a { color: var(--brass); }
.known-gap-detail-banner { margin-bottom: 10px; padding: 10px 12px; border-radius: 6px; border: 1px solid rgba(255,93,93,.4); background: rgba(255,93,93,.08); font-size: 12.5px; }
.known-gap-detail-title { font-weight: 600; color: var(--up); margin-bottom: 4px; }
.known-gap-link { color: inherit; text-decoration: underline; text-decoration-style: dotted; }
.eod-src-stale { color: var(--up); }
.eod-stale-warn { margin-top: 8px; font-size: 12px; color: var(--up); line-height: 1.45; }
.sec-note.eod-has-stale { border-color: rgba(255,93,93,.25); }
.nb-stale { opacity: 0.72; }
.nb-primary .num { color: var(--brass); }
.row.row-proxy { background: rgba(227, 178, 97, 0.06); border-left: 3px solid var(--brass); }
.row.row-proxy:hover { background: rgba(227, 178, 97, 0.1); }
.row.row-proxy .rank { color: var(--brass); }
.drift-badge { font-size: 10px; color: var(--up); border: 1px solid rgba(255, 93, 93, 0.45); border-radius: 5px; padding: 1px 5px; }
.row.row-drift { background: rgba(255, 93, 93, 0.04); }
.row.row-drift:hover { background: rgba(255, 93, 93, 0.07); }
.identity .nm .drift-badge { flex: none; }

.cell-price { white-space: nowrap; }
.cell-price .p { font-family: var(--mono); font-size: 13.5px; }
.cell-price .c { font-family: var(--mono); font-size: 11.5px; font-weight: 600; }

.spark { width: 100%; height: 34px; display: block; }
.spark path.line { fill: none; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }

.fbars { display: flex; gap: 4px; align-items: flex-end; height: 34px; }
.fbar { flex: 1; background: var(--panel-2); border-radius: 3px 3px 2px 2px; position: relative; min-height: 3px; overflow: hidden; }
.fbar > span { position: absolute; left: 0; right: 0; bottom: 0; background: linear-gradient(180deg, var(--brass), var(--brass-dim)); border-radius: 3px; transition: height 0.9s cubic-bezier(.2,.8,.2,1); }

.score-wrap { display: flex; flex-direction: column; align-items: flex-start; gap: 5px; }
.score-num { font-family: var(--mono); font-size: 20px; font-weight: 700; line-height: 1; }
.score-track { width: 64px; height: 4px; border-radius: 3px; background: var(--panel-2); overflow: hidden; }
.score-fill { height: 100%; border-radius: 3px; width: 0; transition: width 1s cubic-bezier(.2,.8,.2,1); }
.conf { font-size: 10.5px; color: var(--faint); }

.act { font-size: 12px; font-weight: 600; padding: 6px 10px; border-radius: 8px; text-align: center; border: 1px solid transparent; }
.act-buy { color: var(--up); background: rgba(255, 93, 93, 0.1); border-color: rgba(255, 93, 93, 0.3); }
.act-hold { color: var(--brass); background: rgba(227, 178, 97, 0.1); border-color: rgba(227, 178, 97, 0.28); }
.act-watch { color: var(--muted); background: var(--panel-2); border-color: var(--line-strong); }
.act-reduce { color: var(--down); background: rgba(39, 192, 138, 0.08); border-color: rgba(39, 192, 138, 0.28); }
.act-sell { color: var(--down); background: rgba(39, 192, 138, 0.14); border-color: rgba(39, 192, 138, 0.4); }

.reasons { grid-column: 2 / -1; display: flex; flex-wrap: wrap; gap: 6px; margin-top: -4px; padding-left: 0; }
.reason { font-size: 11px; color: var(--muted); background: var(--panel); border: 1px solid var(--line); border-radius: 20px; padding: 2px 9px; }
.warn { color: var(--up); border-color: rgba(255,93,93,.3); }

/* ---------- 播报 / 策略 ---------- */
.cols { display: grid; grid-template-columns: 1.3fr 1fr; gap: 14px; }
.panel {
  border: 1px solid var(--line); border-radius: var(--radius); padding: 20px 22px;
  background: linear-gradient(180deg, var(--panel-2), var(--panel));
}
.panel h3 { margin: 0 0 14px; font-size: 13px; letter-spacing: 0.08em; color: var(--brass); font-weight: 600; }
.report-line { display: flex; gap: 10px; padding: 9px 0; border-bottom: 1px dashed var(--line); font-size: 13.5px; }
.report-line:last-child { border-bottom: none; }
.report-line .b { color: var(--brass-dim); font-family: var(--mono); }
.strat-item { font-size: 13.5px; color: var(--ink); padding: 8px 0 8px 16px; position: relative; line-height: 1.5; }
.strat-item::before { content: ""; position: absolute; left: 0; top: 15px; width: 6px; height: 6px; border-radius: 50%; background: var(--brass); }

/* ---------- 我的持仓 ---------- */
.btn.primary { background: rgba(227,178,97,.16); border-color: var(--brass-dim); color: var(--brass); }
.hold-form { border: 1px solid var(--line-strong); border-radius: var(--radius); background: var(--panel-2); padding: 16px 18px; margin-bottom: 14px; }
.hf-row { display: flex; gap: 14px; align-items: flex-end; flex-wrap: wrap; }
.hf-row label { display: flex; flex-direction: column; gap: 6px; font-size: 12px; color: var(--muted); }
.hf-row input, .hf-row select {
  font: inherit; font-size: 14px; color: var(--ink); background: var(--bg-2);
  border: 1px solid var(--line-strong); border-radius: 8px; padding: 8px 10px; min-width: 150px;
}
.hf-row input:focus, .hf-row select:focus { outline: none; border-color: var(--brass-dim); }
.hf-tip { margin-top: 12px; font-size: 11.5px; color: var(--faint); line-height: 1.55; }
.hf-tip b { color: var(--brass); }
.hold-recon-banner {
  display: flex; gap: 10px; align-items: flex-start;
  margin-bottom: 12px; padding: 10px 12px;
  font-size: 12px; line-height: 1.55;
  border-radius: 8px;
  border: 1px solid rgba(227, 178, 97, 0.4);
  background: rgba(227, 178, 97, 0.08);
  color: var(--muted);
}
.hold-recon-banner b { color: var(--brass); }
.hold-recon-banner.hold-recon-ok {
  border-color: rgba(46, 160, 67, 0.45);
  background: rgba(46, 160, 67, 0.08);
}
.hold-recon-banner.hold-recon-ok b,
.hold-recon-banner.hold-recon-ok .hold-recon-icon { color: var(--up); }
.hold-recon-icon { color: var(--brass); font-weight: 700; flex-shrink: 0; }
.hold-recon-btn {
  flex-shrink: 0;
  font: inherit;
  font-size: 11px;
  font-weight: 600;
  padding: 4px 10px;
  margin-left: 4px;
  border-radius: 6px;
  border: 1px solid rgba(227, 178, 97, 0.55);
  background: rgba(227, 178, 97, 0.12);
  color: var(--brass);
  cursor: pointer;
}
.hold-recon-btn:hover { background: rgba(227, 178, 97, 0.2); }
.hold-recon-flash {
  margin-bottom: 10px; padding: 8px 12px;
  font-size: 12px; font-weight: 600;
  border-radius: 8px;
  border: 1px solid rgba(46, 160, 67, 0.4);
  background: rgba(46, 160, 67, 0.1);
  color: var(--up);
}
/* R378 · 顶栏/复盘持仓对账提示 */
.dq-hold-recon { font-size: 10.5px; font-weight: 600; color: var(--brass); opacity: 0.92; }
.dq-hold-recon-ok { color: var(--up); opacity: 1; }
.dec-recap-recon { margin: 8px 0 0; font-size: 11.5px; line-height: 1.45; }
.hold-card .hc-recon { margin-top: 4px; font-size: 10.5px; color: var(--brass); font-weight: 600; }
.hold-empty { color: var(--faint); font-size: 13px; padding: 22px; text-align: center; border: 1px dashed var(--line); border-radius: var(--radius); }
.hold-empty-title { margin: 0 0 8px; font-size: 15px; color: var(--text); font-weight: 600; }
.hold-empty-desc { margin: 0 0 14px; font-size: 12px; line-height: 1.5; }
.hold-empty-steps { margin: 0 0 12px; padding-left: 20px; text-align: left; font-size: 12px; line-height: 1.55; color: var(--muted); }
.hold-empty-steps li { margin-bottom: 4px; }
.hold-empty-actions, .dec-today-actions {
  display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; align-items: center; margin-top: 4px;
}
.agent-empty-analyze { border-color: var(--brass, #e3b261); color: var(--brass, #e3b261); }
.agent-empty-analyze:hover { background: rgba(227, 178, 97, 0.08); }
.hc-actions .agent-hold-analyze { color: var(--brass, #e3b261); border-color: var(--brass-dim, #a88b4a); }
.dec-empty-hint { margin: 0 0 10px; font-size: 12px; line-height: 1.45; }
.dec-today-hold-cta { margin-top: 10px; width: 100%; max-width: 280px; }

.hold-card {
  border: 1px solid var(--line); border-radius: var(--radius); padding: 18px 20px; margin-bottom: 12px;
  background: linear-gradient(180deg, var(--panel-2), var(--panel));
  display: grid; grid-template-columns: 1.4fr repeat(4, 1fr) 1.3fr auto; gap: 16px; align-items: center;
}
/* v2 · 盈亏主视觉重构（P0-b）：单列纵向，盈亏为视觉主体 */
.hold-card-v2 {
  display: flex; flex-direction: column; gap: 14px; align-items: stretch;
}
.hold-card-v2 .hc-head { display: flex; flex-direction: column; gap: 2px; }
.hc-hero {
  display: grid; grid-template-columns: 1.5fr 1fr; gap: 16px; align-items: end;
  padding: 14px 16px; border-radius: 12px;
  background: linear-gradient(180deg, rgba(255,255,255,0.03), rgba(255,255,255,0.008));
  border: 1px solid var(--line);
}
.hc-hero-k { font-size: 11px; color: var(--muted); letter-spacing: 0.02em; }
.hc-hero-v { font-family: var(--mono); font-size: 30px; font-weight: 700; line-height: 1.05; margin-top: 4px; font-variant-numeric: tabular-nums; }
.hc-hero-pct { font-family: var(--mono); font-size: 15px; font-weight: 600; margin-top: 2px; font-variant-numeric: tabular-nums; }
.hc-hero-today { text-align: right; border-left: 1px solid var(--line); padding-left: 16px; }
.hc-hero-today-v { font-family: var(--mono); font-size: 20px; font-weight: 700; margin-top: 4px; font-variant-numeric: tabular-nums; }
.hc-hero-today-sub { font-size: 10.5px; color: var(--faint); margin-top: 3px; font-family: var(--mono); }
.hc-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }
.hc-settle {
  font-size: 11.5px; color: var(--muted); line-height: 1.4;
  padding: 7px 10px; border-radius: 8px;
  background: rgba(227, 178, 97, 0.05); border: 1px solid rgba(227, 178, 97, 0.14);
}
.hc-settle-ico { margin-right: 5px; opacity: 0.8; }
.hold-card-v2 .hc-proxy-live { border-left: none; padding-left: 0; }
.hold-card-v2 .hc-actions { flex-direction: row; flex-wrap: wrap; }
.hold-card .hc-name { font-weight: 600; font-size: 14.5px; }
.hold-card .hc-code { font-family: var(--mono); font-size: 11px; color: var(--faint); margin-top: 3px; }
.hold-card .hc-k { font-size: 11px; color: var(--faint); }
.hold-card .hc-v { font-family: var(--mono); font-size: 16px; font-weight: 600; margin-top: 3px; }
.hc-est { font-size: 10.5px; color: var(--faint); margin-top: 2px; }
.hc-advice { border-left: 1px solid var(--line); padding-left: 16px; }
.hc-advice .a { font-size: 13px; font-weight: 600; }
.hc-advice .r { font-size: 11px; color: var(--muted); margin-top: 4px; line-height: 1.4; }
.hc-proxy-live { border-left: 1px solid var(--line); padding-left: 16px; }
.hc-proxy-price { font-size: 13px; font-weight: 600; color: var(--ink); }
.hc-research-demote { font-size: 11px; color: var(--faint); margin-top: 4px; line-height: 1.45; }
.hc-research-demote a { color: var(--brass); }
.dec-research-demote a { color: var(--brass); }
.hc-actions { display: flex; flex-direction: column; gap: 6px; }
.hc-actions button { font: inherit; font-size: 11px; color: var(--muted); background: none; border: 1px solid var(--line); border-radius: 6px; padding: 4px 8px; cursor: pointer; }
.hc-actions button:hover { border-color: var(--brass-dim); color: var(--brass); }
.hc-warn { grid-column: 1 / -1; font-size: 11.5px; color: var(--up); padding-top: 4px; border-top: 1px dashed var(--line); }
.hc-decision {
  grid-column: 1 / -1;
  font-size: 12.5px;
  line-height: 1.45;
  padding: 8px 10px;
  margin-bottom: 2px;
  border-radius: 8px;
  background: rgba(46, 160, 67, 0.06);
  border: 1px solid rgba(46, 160, 67, 0.2);
}
.hc-decision-warn { background: rgba(255, 93, 93, 0.08); border-color: rgba(255, 93, 93, 0.25); }
.hc-decision-label { font-size: 10px; font-weight: 700; color: var(--brass); letter-spacing: 0.04em; margin-right: 4px; }
.dec-hold-summary {
  font-size: 12px;
  line-height: 1.45;
  margin-bottom: 8px;
  padding: 6px 8px;
  border-radius: 6px;
  background: rgba(227, 178, 97, 0.06);
  border-left: 3px solid var(--brass-dim);
}
.dec-hold-summary-warn { border-left-color: var(--up); color: var(--brass); font-weight: 600; }

@media (max-width: 880px) {
  .hold-card { grid-template-columns: 1fr 1fr; }
  .hc-advice,
  .hc-proxy-live { grid-column: 1 / -1; border-left: none; padding-left: 0; border-top: 1px solid var(--line); padding-top: 12px; }
}

/* ---------- 详情抽屉 ---------- */
.drawer-mask { position: fixed; inset: 0; background: rgba(4,6,9,0.6); backdrop-filter: blur(2px); opacity: 0; pointer-events: none; transition: 0.25s; z-index: 40; }
.drawer-mask.open { opacity: 1; pointer-events: auto; }
.drawer {
  position: fixed; top: 0; right: 0; height: 100%; width: min(1040px, 98vw); z-index: 41;
  background: var(--bg-2); border-left: 1px solid var(--line-strong);
  transform: translateX(100%); transition: transform 0.32s cubic-bezier(.2,.8,.2,1);
  display: flex; flex-direction: column; box-shadow: -30px 0 60px rgba(0,0,0,.5);
}
.drawer.open { transform: translateX(0); }
.drawer .dh { padding: 22px 24px; border-bottom: 1px solid var(--line); display: flex; align-items: flex-start; justify-content: space-between; }
.drawer .db { padding: 22px 24px; overflow-y: auto; }
.drawer .close { cursor: pointer; color: var(--muted); background: none; border: none; font-size: 22px; line-height: 1; }
.drawer .close:hover { color: var(--ink); }
.drawer-tabs { display: flex; gap: 4px; margin-bottom: 14px; border-bottom: 1px solid var(--line); padding-bottom: 8px; }
.drawer-tab {
  background: none; border: 1px solid transparent; color: var(--muted);
  font-size: 13px; padding: 6px 12px; cursor: pointer; border-radius: 4px;
}
.drawer-tab:hover { color: var(--ink); }
.drawer-tab.active { color: var(--ink); border-color: var(--line); background: var(--panel, rgba(255,255,255,0.04)); }
.dec-wt-history-cl-list {
  margin: 4px 0 0 0; padding-left: 18px; font-size: 11px; color: var(--muted);
}
.dec-wt-history-cl-list .dec-wt-cl-bad { color: var(--warn, #f59e0b); }
.d-provenance { margin-top: 10px; font-size: 11px; }
.d-provenance .prov-title { color: var(--brass); font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; margin-bottom: 6px; }
.d-provenance .prov-table { width: 100%; border-collapse: collapse; font-family: var(--mono); }
.d-provenance .prov-table th, .d-provenance .prov-table td { padding: 4px 6px; text-align: left; border-bottom: 1px solid var(--line); vertical-align: top; }
.d-provenance .prov-table th { color: var(--faint); font-weight: 500; width: 72px; }
.d-provenance .prov-table td.src { color: var(--ink); }
.d-provenance .prov-table td.hint { color: var(--faint); font-family: var(--sans); font-size: 10px; }
.d-provenance .prov-note { margin-top: 6px; color: var(--faint); font-size: 10px; line-height: 1.4; }
.d-provenance .prov-drift { margin-top: 8px; padding: 8px 10px; border-radius: 6px; font-size: 11px; line-height: 1.45; }
.d-provenance .prov-drift.warn { background: rgba(255, 93, 93, 0.1); border: 1px solid rgba(255, 93, 93, 0.35); color: var(--up); }
.d-provenance .prov-drift.ok { background: rgba(39, 192, 138, 0.08); border: 1px solid rgba(39, 192, 138, 0.25); color: var(--down); }
.metric-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; margin-top: 16px; }
.metric { border: 1px solid var(--line); border-radius: 10px; padding: 12px 14px; }
.metric .k { font-size: 11px; color: var(--faint); letter-spacing: 0.05em; }
.metric .v { font-family: var(--mono); font-size: 18px; font-weight: 600; margin-top: 5px; }
.chart-bar { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 4px; }
.chart-readout { font-size: 12.5px; color: var(--muted); min-height: 18px; display: flex; gap: 14px; align-items: baseline; }
.chart-readout .ph { font-family: var(--mono); font-size: 15px; font-weight: 600; color: var(--ink); }
.chart-readout .pd { font-family: var(--mono); }
.period-switch { display: inline-flex; border: 1px solid var(--line-strong); border-radius: 8px; overflow: hidden; }
.period-switch button { font: inherit; font-size: 12px; color: var(--muted); background: transparent; border: none; padding: 5px 13px; cursor: pointer; transition: 0.15s; }
.period-switch button + button { border-left: 1px solid var(--line); }
.period-switch button:hover { color: var(--ink); }
.period-switch button.active { background: rgba(227,178,97,.16); color: var(--brass); }

.ma-legend { display: flex; gap: 14px; flex-wrap: wrap; font-family: var(--mono); font-size: 11px; color: var(--muted); margin-top: 10px; min-height: 14px; }
.ma-legend i { display: inline-block; width: 14px; height: 2px; vertical-align: middle; margin-right: 5px; }
.chart-wrap {
  position: relative; margin-top: 10px; padding: 10px 8px 4px;
  background: linear-gradient(180deg, rgba(255,255,255,0.022), rgba(255,255,255,0.004));
  border: 1px solid var(--line); border-radius: 14px;
}
.kchart { width: 100%; height: 334px; display: block; cursor: crosshair; }
.vchart { width: 100%; height: 100px; display: block; cursor: crosshair; margin-top: 2px; }
.kchart path.line, .vchart path.line { fill: none; stroke: var(--brass); stroke-width: 1.6; }
.kchart path.area { opacity: 1; }
.kchart path.aline { fill: none; stroke-width: 1.9; stroke-linecap: round; stroke-linejoin: round; }
.kchart .ann, .vchart .ann { fill: var(--muted); font-size: 9.5px; font-family: var(--mono); letter-spacing: 0.02em; }
.kchart .pulse { animation: pulseRing 1.9s ease-out infinite; }
@keyframes pulseRing { 0% { r: 3; opacity: 0.7; } 100% { r: 13; opacity: 0; } }
.kchart .cross-x, .vchart .cross-x { stroke: rgba(255,255,255,0.28); stroke-width: 0.8; stroke-dasharray: 3 3; }
.kchart .cross-y { stroke: rgba(255,255,255,0.28); stroke-width: 0.8; stroke-dasharray: 3 3; }
.kchart .cross-dot { fill: #fff; stroke: var(--bg-2); stroke-width: 1.5; }
.kchart .tag-y { fill: var(--brass); }
.kchart .tag-yt { fill: #14171c; font-size: 9.5px; font-family: var(--mono); font-weight: 700; }
.kchart .grid, .vchart .grid { stroke: rgba(255,255,255,0.045); stroke-width: 1; }
.kchart .grid.vgrid, .vchart .grid.vgrid { stroke: rgba(255,255,255,0.03); }
.kchart text.axis, .vchart text.axis { fill: var(--muted); font-size: 10px; font-family: var(--mono); letter-spacing: 0.02em; }
.kchart .ma { fill: none; stroke-width: 1.1; opacity: 0.92; }
.chart-tip {
  position: absolute; pointer-events: none; z-index: 5; transform: translate(-50%, -125%);
  background: rgba(14,17,22,0.82); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.12); border-radius: 10px;
  padding: 9px 12px; font-size: 11.5px; white-space: nowrap; line-height: 1.55;
  box-shadow: 0 10px 30px rgba(0,0,0,.5);
}
.chart-tip .d { color: var(--muted); font-family: var(--mono); }
.chart-tip .p { font-family: var(--mono); font-size: 13.5px; font-weight: 700; margin: 2px 0; }

/* ---------- 策略验证 Research ---------- */
.research-actions { display: flex; gap: 8px; margin-left: auto; }
.research-meta { font-size: 12.5px; color: var(--muted); margin: 10px 0 14px; font-family: var(--mono); line-height: 1.5; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.research-grid {
  display: grid; grid-template-columns: repeat(6, 1fr); gap: 10px; margin-bottom: 14px;
}
.rs-stat {
  background: var(--panel); border: 1px solid var(--line); border-radius: 12px; padding: 12px 14px;
}
.rs-stat .k { font-size: 11px; color: var(--faint); margin-bottom: 4px; }
.rs-stat .v { font-family: var(--mono); font-size: 17px; font-weight: 600; }
.research-panels { display: grid; grid-template-columns: 1.2fr 1fr; gap: 14px; }
.research-panels h3 .sub-h { font-size: 11px; color: var(--faint); font-weight: 400; margin-left: 6px; }
.eq-chart { width: 100%; height: 180px; display: block; margin-top: 8px; }
.eq-legend { display: flex; gap: 16px; margin-top: 8px; font-size: 11.5px; color: var(--muted); }
.eq-legend i { display: inline-block; width: 14px; height: 2px; vertical-align: middle; margin-right: 5px; }
.ic-table { margin-top: 8px; font-size: 12px; }
.ic-row {
  display: grid; grid-template-columns: 72px 1fr 1fr 56px;
  gap: 8px; padding: 7px 0; border-bottom: 1px solid var(--line);
  font-family: var(--mono);
}
.ic-row.head { color: var(--faint); font-size: 11px; font-family: inherit; }
.ic-notes { margin-top: 10px; font-size: 12px; color: var(--muted); line-height: 1.6; }
.trades { font-size: 12px; }
.trade-row {
  display: grid; grid-template-columns: 88px 56px 1fr 52px;
  gap: 8px; padding: 8px 0; border-bottom: 1px solid var(--line); align-items: center;
}
.trade-row .picks { color: var(--muted); font-size: 11.5px; }
.research-disclaimer { margin-top: 12px; font-size: 11.5px; color: var(--faint); line-height: 1.6; }
.info-section-hint { font-size: 11px; margin-left: 8px; }
.info-honesty-banner {
  margin-bottom: 12px; padding: 10px 12px;
  border-radius: 8px;
  border: 1px solid rgba(148, 163, 184, 0.35);
  background: rgba(148, 163, 184, 0.06);
  font-size: 12px; line-height: 1.55;
}
.info-honesty-title { font-weight: 700; color: var(--brass); margin-bottom: 4px; }
.info-honesty-body { margin: 0; color: var(--muted); }
.info-honesty-meta { margin: 6px 0 0; font-size: 11px; }
.info-honesty-disc { margin-bottom: 10px; line-height: 1.5; }
.info-holdings-lag { margin: 4px 0 8px; font-size: 11px; color: var(--brass); }
.info-empty, .info-fail-loud { font-size: 12px; line-height: 1.5; }
.news-meta { font-size: 11px; color: var(--faint); margin-top: 4px; }

.signal-panel { margin-bottom: 14px; padding: 14px 16px; }
.signal-panel h3 .sub-h { font-size: 11px; color: var(--faint); font-weight: 400; margin-left: 6px; }
.signal-body { font-size: 13px; line-height: 1.65; color: var(--muted); }
.signal-hold { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.signal-chip {
  padding: 6px 10px; border-radius: 8px; background: var(--panel-2); border: 1px solid var(--line);
  font-size: 12px; font-family: var(--mono);
}
.signal-chip b { color: var(--ink); }
.trade-row { grid-template-columns: 88px 48px 52px 1fr 48px; }
.trade-type { font-size: 11px; color: var(--brass); }

/* ---------- 状态 ---------- */
.disclaimer { color: var(--faint); font-size: 12px; line-height: 1.7; margin: 30px 0 50px; padding-top: 18px; border-top: 1px solid var(--line); }
.banner-err { display: none; margin: 14px 0; padding: 12px 16px; border-radius: 10px; background: rgba(255,93,93,.08); border: 1px solid rgba(255,93,93,.3); color: var(--up); font-size: 13px; }
.banner-err.show { display: block; }
.banner-warn { display: none; margin: 14px 0; padding: 12px 16px; border-radius: 10px; background: rgba(255,184,77,.08); border: 1px solid rgba(255,184,77,.35); color: #ffb84d; font-size: 13px; }
.banner-warn.show { display: block; }
.banner-warn a { color: #ffd28a; }
.banner-p0-gap { border-color: rgba(255, 93, 93, 0.45); background: rgba(255, 93, 93, 0.08); color: #ff9a9a; }
.banner-p0-gap a { color: #ffb4b4; }
.banner-p0-gap code { font-family: var(--mono); font-size: 11px; color: #ffc9c9; }
.gap-p0 { margin-bottom: 8px; font-size: 12px; line-height: 1.5; }
.gap-partial { margin-bottom: 6px; font-size: 12px; line-height: 1.45; color: var(--brass); }

/* P0-3 硬免责条 + 各区说明 */
.hard-disclaimer {
  display: flex; align-items: flex-start; gap: 10px;
  margin: 16px 0 6px; padding: 11px 15px; border-radius: 10px;
  background: linear-gradient(180deg, rgba(227,178,97,.10), rgba(227,178,97,.04));
  border: 1px solid var(--brass-dim); color: var(--ink);
  font-size: 12.5px; line-height: 1.6;
}
.hard-disclaimer .hd-tag {
  flex: none; font-weight: 700; font-size: 11px; letter-spacing: .08em;
  color: #0a0c10; background: var(--brass); border-radius: 6px; padding: 2px 8px; margin-top: 1px;
}
.hard-disclaimer b { color: var(--brass); font-weight: 600; }
.sec-note {
  margin: -4px 0 12px; padding: 8px 12px; border-radius: 8px;
  background: var(--panel); border: 1px solid var(--line);
  font-size: 11.5px; line-height: 1.6; color: var(--muted);
}
.sec-note b { color: var(--ink); font-weight: 600; }
.sec-note.warn-note { border-color: var(--brass-dim); background: rgba(227,178,97,.05); }
.sec-note.warn-note b { color: var(--brass); }
/* 研判榜分组分隔行（P0-4 个股/ETF 分池） */
.group-head {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 18px; background: rgba(255,255,255,0.02);
  border-bottom: 1px solid var(--line);
  font-size: 11.5px; letter-spacing: .06em; color: var(--brass-dim);
}
.group-head b { color: var(--ink); font-weight: 600; letter-spacing: .04em; }
.group-head .gh-note { color: var(--faint); font-weight: 400; letter-spacing: 0; }
.skeleton { background: linear-gradient(90deg, var(--panel) 25%, var(--panel-2) 37%, var(--panel) 63%); background-size: 400% 100%; animation: shimmer 1.4s ease infinite; border-radius: 6px; color: transparent !important; }
@keyframes shimmer { 0% { background-position: 100% 0; } 100% { background-position: -100% 0; } }

/* ---------- 入场动画 ---------- */
.reveal { opacity: 0; transform: translateY(14px); animation: fadeUp 0.6s cubic-bezier(.2,.8,.2,1) forwards; }
@keyframes fadeUp { to { opacity: 1; transform: translateY(0); } }

.wf-table { width: 100%; border-collapse: collapse; font-size: 12px; margin-top: 8px; }
.wf-table th, .wf-table td { border-bottom: 1px solid var(--line); padding: 6px 8px; text-align: left; }
.wf-table th { color: var(--muted); font-weight: 500; }
.ic-pool { margin-top: 10px; border: 1px solid var(--line); border-radius: 8px; padding: 8px 12px; background: var(--panel-2); }
.ic-pool summary { cursor: pointer; font-size: 13px; color: var(--ink); }
.ic-interp { font-size: 12px; margin: 8px 0 0; padding-left: 18px; line-height: 1.55; }
.ic-sign { font-family: var(--mono); font-size: 11px; padding: 2px 6px; border-radius: 4px; white-space: nowrap; }
.ic-pos { color: #6ee7a0; background: rgba(46, 125, 79, 0.2); }
.ic-neg { color: #f5a8a8; background: rgba(139, 46, 46, 0.25); }
.ic-flat { color: var(--muted); background: var(--panel); }
.ic-row-neg td { background: rgba(139, 46, 46, 0.06); }
.ic-hint-warn { color: #ffb84d; font-size: 11px; }
.ic-hint-muted { color: var(--muted); font-size: 11px; }
.ic-hint-ok { color: #6ee7a0; font-size: 11px; }

/* ---------- 14:30 决策简报 ---------- */
.dec-fresh-banner {
  display: none;
  margin: 0 0 12px;
  padding: 10px 14px;
  border-radius: 10px;
  font-size: 13px;
  line-height: 1.45;
}
.dec-fresh-banner.show { display: block; }
.dec-fresh-banner-warn {
  border-color: rgba(255, 184, 77, 0.35);
  background: rgba(255, 184, 77, 0.1);
  color: var(--brass);
}
.dec-fresh-banner-warn strong { color: #ffb84d; }
.dec-fresh-banner-ok {
  border-color: rgba(46, 160, 67, 0.28);
  background: rgba(46, 160, 67, 0.08);
  color: var(--up);
  font-size: 12.5px;
}
.dec-fresh-banner-ok strong { color: var(--up); }
.dq-fresh {
  flex: 0 1 auto;
  font-size: 11px;
  padding: 2px 8px;
  border-radius: 4px;
  white-space: nowrap;
}
.dq-fresh-ok { background: rgba(46, 160, 67, 0.12); color: var(--up); }
.dq-fresh-warn { background: rgba(255, 184, 77, 0.15); color: var(--brass); }
.dec-execution-note {
  font-size: 12px;
  line-height: 1.45;
  color: var(--muted);
  margin: 0 0 10px;
  padding: 8px 10px;
  border-radius: 6px;
  border: 1px solid rgba(227, 178, 97, 0.25);
  background: rgba(227, 178, 97, 0.06);
}
.dec-execution-window {
  border-color: rgba(227, 178, 97, 0.45);
  color: var(--ink);
}
.dq-exec { font-size: 11px; flex: 0 1 auto; max-width: 220px; line-height: 1.3; }
.dec-fresh-reload {
  font: inherit;
  font-size: 12px;
  margin-left: 6px;
  padding: 2px 8px;
  border-radius: 6px;
  border: 1px solid rgba(255, 184, 77, 0.45);
  background: rgba(0, 0, 0, 0.15);
  color: #ffd28a;
  cursor: pointer;
}
.dec-fresh-reload:hover { border-color: #ffb84d; color: #fff; }
.section-priority { margin-top: 22px; }
.section-priority:first-of-type { margin-top: 8px; }
.section-head .sec-sub { font-size: 11px; margin-left: 4px; }
.decision-brief {
  border: 1px solid var(--line-strong);
  border-radius: var(--radius);
  background: linear-gradient(165deg, rgba(227, 178, 97, 0.08), var(--panel));
  padding: 18px 20px;
}
.dec-glance {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin: 0 0 12px;
}
.dec-glance-user {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.dec-glance-ops {
  margin-top: 2px;
}
.dec-glance-ops-toggle {
  font-size: 11px;
  color: var(--muted);
  cursor: pointer;
  list-style: none;
  user-select: none;
}
.dec-glance-ops-toggle::-webkit-details-marker { display: none; }
.dec-glance-ops[open] .dec-glance-ops-toggle { color: var(--brass); }
.dec-glance-ops-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 6px;
  padding-top: 6px;
  border-top: 1px dashed var(--line);
}
.dec-glance-chip {
  font-size: 11.5px;
  padding: 4px 10px;
  border-radius: 999px;
  border: 1px solid var(--line);
  white-space: nowrap;
}
.dec-glance-ok {
  background: rgba(46, 160, 67, 0.1);
  border-color: rgba(46, 160, 67, 0.3);
  color: var(--up);
}
.dec-glance-warn {
  background: rgba(255, 93, 93, 0.1);
  border-color: rgba(255, 93, 93, 0.35);
  color: var(--down);
}
.dec-meta { font-size: 12.5px; color: var(--muted); margin-bottom: 12px; line-height: 1.6; }
.dq-nav .dq-agent { color: var(--brass); font-weight: 600; }
.dq-nav .dq-agent:hover { color: #fbbf24; }
.dec-today-three {
  margin: 0 0 14px;
  padding: 12px 14px;
  border: 1px solid var(--line-strong);
  border-radius: 10px;
  background: rgba(227, 178, 97, 0.06);
}
.dec-today-title { font-size: 12px; font-weight: 700; color: var(--brass); letter-spacing: 0.04em; margin-bottom: 8px; }
.dec-today-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.dec-today-item { display: grid; grid-template-columns: 22px 52px 1fr; gap: 8px; align-items: baseline; font-size: 13px; line-height: 1.45; }
.dec-today-n {
  width: 20px; height: 20px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center;
  font-size: 11px; font-weight: 700; background: var(--panel-2); border: 1px solid var(--line); color: var(--brass);
}
.dec-today-k { font-size: 11px; color: var(--faint); font-weight: 600; text-transform: uppercase; letter-spacing: 0.03em; }
.dec-today-v { color: var(--ink); }
.dec-today-warn .dec-today-v { color: var(--brass); font-weight: 600; }
.dec-today-ok .dec-today-v { color: var(--ink); }
.dec-today-muted .dec-today-v { color: var(--muted); }
/* R371 · 盘后复盘摘要卡 */
.dec-post-recap {
  margin: 0 0 14px;
  padding: 12px 14px;
  border: 1px solid rgba(110, 140, 200, 0.35);
  border-radius: 10px;
  background: linear-gradient(135deg, rgba(110, 140, 200, 0.08), rgba(110, 140, 200, 0.02));
}
.dec-recap-head { display: flex; align-items: baseline; gap: 10px; margin-bottom: 10px; }
.dec-recap-kicker { font-size: 10px; font-weight: 700; letter-spacing: 0.08em; color: var(--muted); text-transform: uppercase; }
.dec-recap-title { font-size: 14px; font-weight: 700; color: var(--ink); }
.dec-recap-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.dec-recap-row { padding-bottom: 10px; border-bottom: 1px solid var(--line); }
.dec-recap-row:last-child { border-bottom: 0; padding-bottom: 0; }
.dec-recap-fund { font-size: 13px; margin-bottom: 6px; }
.dec-recap-metrics { display: flex; flex-wrap: wrap; gap: 8px 16px; font-size: 12px; line-height: 1.45; }
.dec-recap-k { font-size: 10px; color: var(--faint); font-weight: 600; text-transform: uppercase; letter-spacing: 0.03em; margin-right: 4px; }
.dec-recap-total { margin-top: 10px; padding-top: 10px; border-top: 1px dashed var(--line-strong); font-size: 13px; font-weight: 600; }
.dec-recap-regime { margin-top: 10px; font-size: 12px; line-height: 1.5; }
.dec-recap-wt, .dec-recap-foot { margin: 8px 0 0; font-size: 11px; line-height: 1.5; }
.dec-recap-empty { margin: 0 0 10px; font-size: 12px; }
.dec-recap-hold-cta { margin-top: 4px; }
.dec-recap-foot a { color: var(--brass); font-weight: 600; }
.dec-recap-nav-chip {
  margin: 0 0 10px;
  padding: 8px 10px;
  border-radius: 8px;
  border: 1px solid rgba(46, 160, 67, 0.28);
  background: rgba(46, 160, 67, 0.06);
  font-size: 11.5px;
  line-height: 1.5;
  color: var(--muted);
}
/* R375 · 盘中官方 NAV 结算提示 */
.dec-nav-settle {
  margin: 0 0 12px;
  padding: 10px 12px;
  border-radius: 10px;
  border: 1px solid rgba(46, 160, 67, 0.32);
  background: rgba(46, 160, 67, 0.07);
  font-size: 12px;
  line-height: 1.5;
}
.dec-nav-settle-k { font-size: 10px; font-weight: 700; letter-spacing: 0.06em; color: var(--up); margin-right: 6px; }
.dec-nav-settle-note { margin: 6px 0 0; font-size: 11px; }
.dq-nav-settle { font-size: 11px; color: var(--muted); white-space: nowrap; }
.dq-nav-settle:not([hidden]) { display: inline-flex; align-items: center; }
/* R360 · 决策闭环进度条 */
.dec-loop-progress {
  margin: 0 0 12px;
  padding: 10px 12px;
  border: 1px solid var(--line-strong);
  border-radius: 10px;
  background: rgba(227, 178, 97, 0.04);
}
.dec-loop-title { font-size: 11px; font-weight: 700; color: var(--brass); letter-spacing: 0.05em; margin-bottom: 8px; }
.dec-loop-steps {
  list-style: none; margin: 0; padding: 0;
  display: flex; flex-wrap: wrap; gap: 8px 16px;
}
.dec-loop-step {
  display: flex; align-items: center; gap: 8px; flex: 1 1 160px;
  font-size: 12px; line-height: 1.4; min-width: 0;
}
.dec-loop-n {
  width: 22px; height: 22px; border-radius: 50%; flex-shrink: 0;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 11px; font-weight: 700; border: 1px solid var(--line);
  background: var(--panel-2); color: var(--muted);
}
.dec-loop-done .dec-loop-n { background: rgba(46, 160, 67, 0.15); border-color: rgba(46, 160, 67, 0.4); color: var(--up); }
.dec-loop-current .dec-loop-n { background: rgba(227, 178, 97, 0.2); border-color: var(--brass-dim); color: var(--brass); }
.dec-loop-current .dec-loop-label { color: var(--brass); font-weight: 600; }
.dec-loop-pending .dec-loop-label { color: var(--muted); }
.dec-loop-optional .dec-loop-label { color: var(--faint); }
.dec-loop-action {
  margin-left: auto; flex-shrink: 0;
  background: none; border: none; padding: 0;
  font: inherit; font-size: 11px; color: var(--brass);
  cursor: pointer; text-decoration: underline; font-weight: 600;
}
.dec-brief-detail { margin: 10px 0 12px; }
.dec-brief-detail-toggle { font-size: 12px; color: var(--muted); cursor: pointer; user-select: none; }
.dec-brief-detail[open] .dec-brief-detail-toggle { color: var(--brass); margin-bottom: 10px; }
.dec-brief-detail-body { padding-top: 4px; border-top: 1px dashed var(--line); }
.dec-win.active { color: var(--brass); font-weight: 600; }
.dec-regime { font-size: 14px; margin-bottom: 14px; line-height: 1.55; }
.dec-regime strong { font-weight: 600; }
.dec-holdings { display: flex; flex-direction: column; gap: 12px; }
.dec-hold {
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--panel-2);
  padding: 12px 14px;
}
.dec-hold-name { font-weight: 600; font-size: 14px; margin-bottom: 8px; }
.dec-hold-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 10px;
  font-size: 12.5px;
}
.dec-hold-grid .k { display: block; color: var(--faint); font-size: 11px; margin-bottom: 2px; }
.dec-hold-grid .v { font-family: var(--mono); font-weight: 600; }
.dec-audit-ts { display: block; margin-top: 4px; font-size: 10.5px; color: var(--muted); line-height: 1.35; }
.dec-audit-ts b { font-family: var(--mono); font-weight: 600; color: var(--ink); }
.dec-audit-stale-action { color: var(--brass); font-weight: 600; }
.dec-audit-missing { display: block; margin-top: 4px; font-size: 10.5px; color: var(--down); font-weight: 600; }
.dec-fresh-warn { color: var(--brass); font-weight: 600; }
.hc-audit { font-size: 10.5px; color: var(--muted); margin-top: 2px; }
.hc-audit .dec-audit-missing { display: inline; margin-top: 0; }
.dec-hold-grid-3 { grid-template-columns: repeat(3, 1fr); }
.dec-align {
  font-size: 12.5px;
  margin: 10px 0 12px;
  padding: 8px 12px;
  border-radius: 6px;
  border: 1px solid var(--line);
}
.dec-align-ok { background: rgba(46, 160, 67, 0.08); border-color: rgba(46, 160, 67, 0.25); }
.dec-align-warn { background: rgba(200, 120, 0, 0.1); border-color: rgba(200, 120, 0, 0.35); }
.dec-align-muted { border-style: dashed; }
.dec-align-k { font-weight: 600; margin-right: 6px; }
.dec-align-tag { font-weight: 600; margin-left: 4px; }
.dec-align-stale { font-size: 10px; color: var(--brass); border: 1px solid var(--brass-dim); border-radius: 4px; padding: 0 4px; margin-left: 4px; }
.dec-align-band {
  margin: 0 0 12px;
  padding: 10px 12px;
  border-radius: 10px;
  border: 1px solid var(--line);
  background: var(--panel-2);
  font-size: 12px;
  line-height: 1.5;
}
.dec-align-band-ok { border-color: rgba(46, 160, 67, 0.35); background: rgba(46, 160, 67, 0.06); }
.dec-align-band-warn { border-color: rgba(200, 120, 0, 0.4); background: rgba(200, 120, 0, 0.08); }
.dec-align-band-opp.dec-align-band-warn { border-color: rgba(255, 93, 93, 0.4); background: rgba(255, 93, 93, 0.08); }
.dec-align-band-head { font-weight: 600; margin-bottom: 8px; color: var(--ink); font-size: 12px; }
.dec-align-band-track {
  position: relative;
  height: 10px;
  border-radius: 5px;
  background: rgba(255, 255, 255, 0.06);
  border: 1px solid var(--line);
  margin: 6px 0 4px;
}
.dec-align-band-okzone {
  position: absolute;
  top: 0; bottom: 0;
  background: rgba(46, 160, 67, 0.25);
  border-radius: 4px;
}
.dec-align-band-center {
  position: absolute;
  left: 50%; top: -2px; bottom: -2px;
  width: 2px;
  margin-left: -1px;
  background: var(--muted);
  opacity: 0.5;
}
.dec-align-band-marker {
  position: absolute;
  top: -4px;
  width: 8px; height: 18px;
  margin-left: -4px;
  border-radius: 3px;
  background: var(--brass);
  box-shadow: 0 0 6px rgba(227, 178, 97, 0.5);
}
.dec-align-band-warn .dec-align-band-marker { background: #f59e0b; }
.dec-align-band-opp .dec-align-band-marker { background: var(--down); }
.dec-align-band-scale {
  display: flex;
  justify-content: space-between;
  font-size: 10px;
  color: var(--faint);
  margin-bottom: 6px;
}
.dec-align-band-action { margin: 0; font-size: 11.5px; color: var(--muted); }
.dec-align-band-warn .dec-align-band-action { color: var(--brass); font-weight: 600; }
.dec-align-band-opp .dec-align-band-action { color: var(--down); }

.dec-dual-warn {
  font-size: 12.5px;
  margin: 0 0 12px;
  padding: 10px 12px;
  border-radius: 6px;
  border: 1px solid rgba(255, 93, 93, 0.45);
  background: rgba(255, 93, 93, 0.1);
  color: var(--down);
}
.dec-dual-explain {
  font-size: 12.5px;
  margin: 0 0 12px;
  padding: 10px 12px;
  border-radius: 6px;
  border: 1px solid var(--line);
  background: rgba(227, 178, 97, 0.06);
}
.dec-dual-explain-warn { border-color: rgba(255, 93, 93, 0.35); background: rgba(255, 93, 93, 0.06); }
.dec-dual-explain-title { font-weight: 600; margin-bottom: 6px; color: var(--brass); }
.dec-dual-explain-list { margin: 0 0 8px; padding-left: 18px; }
.dec-dual-explain-list li { margin: 4px 0; }
.dec-dual-explain-list .k { font-weight: 600; margin-right: 4px; }
.dec-dual-explain-action { margin: 0; font-size: 12px; line-height: 1.45; color: var(--muted); }
.dec-dual-inline {
  display: inline-block;
  margin-left: 4px;
  font-size: 10px;
  padding: 1px 5px;
  border-radius: 3px;
  background: rgba(255, 93, 93, 0.15);
  color: var(--down);
  font-weight: 600;
}
.dec-proxy-row {
  margin: 14px 0;
  padding: 12px 14px;
  border: 1px solid var(--brass-dim);
  border-radius: 10px;
  background: rgba(227, 178, 97, 0.06);
}
.dec-proxy-title { font-size: 13px; font-weight: 600; color: var(--brass); margin-bottom: 8px; }
.dec-proxy-clickable { cursor: pointer; transition: background 0.12s; }
.dec-proxy-clickable:hover, .dec-proxy-clickable:focus-visible { background: rgba(227, 178, 97, 0.14); outline: none; }
.dec-hold-note { margin-top: 8px; font-size: 11.5px; color: var(--muted); }
.dec-empty { font-size: 13px; color: var(--muted); padding: 8px 0; }
.dec-empty p { margin: 0 0 10px; }
.dec-empty-cta { margin-top: 4px; }
.dq-link-btn {
  background: none; border: none; padding: 0; font: inherit; color: var(--brass);
  cursor: pointer; text-decoration: underline;
}
.dec-proxy-only { font-size: 13px; margin-top: 8px; color: var(--muted); }
.dec-disclaimer { margin-top: 14px; font-size: 11px; color: var(--faint); line-height: 1.5; }
.dec-walkthrough {
  margin: 10px 0 4px;
  padding: 10px 12px;
  font-size: 12px;
  line-height: 1.55;
  border-radius: 8px;
  border: 1px solid var(--border);
}
.dec-glance-ops .dec-glance-link { cursor: pointer; text-decoration: underline; text-decoration-color: rgba(227, 178, 97, 0.45); }
.dec-walkthrough.prelude { border-color: rgba(34, 197, 94, 0.35); color: var(--muted); }
.dec-wt-head { margin-bottom: 8px; }
.dec-wt-checklist { font-size: 11.5px; color: var(--brass); margin-bottom: 6px; font-weight: 600; }
.dec-wt-steps {
  margin: 0 0 10px; padding-left: 1.2em; font-size: 12px; line-height: 1.5; color: var(--ink);
}
.dec-wt-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.dec-wt-notes {
  flex: 1; min-width: 160px; font-size: 12px; padding: 6px 10px; border-radius: 6px;
  border: 1px solid var(--line); background: var(--panel-2); color: var(--ink);
}
.dec-wt-status { font-size: 11.5px; }
.dec-wt-status-ok { color: var(--up); font-weight: 600; }
.dec-wt-history {
  margin: 8px 0 4px;
  font-size: 12px;
  border-radius: 8px;
  border: 1px solid var(--border);
  background: var(--panel-2);
}
.dec-wt-history-summary {
  padding: 8px 12px;
  cursor: pointer;
  font-weight: 600;
  color: var(--brass);
  list-style: none;
}
.dec-wt-history-summary::-webkit-details-marker { display: none; }
.dec-wt-history-list {
  margin: 0;
  padding: 0 12px 10px 28px;
  line-height: 1.55;
}
.dec-wt-history-item { margin-bottom: 6px; }
.dec-wt-history-time { font-weight: 600; color: var(--ink); margin-right: 8px; }
.dec-wt-history-cl { color: var(--brass); font-size: 11px; margin-right: 8px; }
.dec-wt-history-notes { color: var(--muted); font-size: 11.5px; }

/* ---------- 研究区折叠 ---------- */
.research-fold {
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--panel);
  overflow: hidden;
}
.research-summary {
  list-style: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  padding: 14px 18px;
  user-select: none;
}
.research-summary::-webkit-details-marker { display: none; }
.research-summary::before {
  content: "▸";
  color: var(--brass);
  font-size: 12px;
  transition: transform 0.2s ease;
}
.research-fold[open] > .research-summary::before { transform: rotate(90deg); }
.research-title { font-weight: 600; font-size: 14px; }
.stock-pool-fold {
  margin-top: 14px;
  border: 1px dashed var(--line);
  border-radius: var(--radius);
  background: rgba(0, 0, 0, 0.15);
}
.stock-pool-summary {
  list-style: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  padding: 10px 14px;
  font-size: 13px;
  user-select: none;
}
.stock-pool-summary::-webkit-details-marker { display: none; }
.stock-pool-summary::before {
  content: "▸";
  color: var(--muted);
  font-size: 11px;
}
.stock-pool-fold[open] > .stock-pool-summary::before { transform: rotate(90deg); display: inline-block; }
.stock-pool-fold .sec-note { margin: 0 14px 10px; }
.stock-pool-board { margin: 0 14px 14px; }
.research-hint { font-size: 11.5px; margin-left: auto; }
.research-honesty-banner {
  font-size: 12px; line-height: 1.55; padding: 10px 12px; border-radius: var(--radius);
  margin-bottom: 12px; border: 1px solid rgba(227, 178, 97, 0.25);
}
/* R352 · §14 局限折叠卡（决策简报下方 · 默认折叠） */
.limitations-fold {
  margin-top: 14px;
  border: 1px solid rgba(227, 178, 97, 0.22);
  border-radius: var(--radius);
  background: rgba(227, 178, 97, 0.04);
  overflow: hidden;
}
.limitations-summary {
  list-style: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  padding: 12px 16px;
  user-select: none;
}
.limitations-summary::-webkit-details-marker { display: none; }
.limitations-summary::before {
  content: "▸";
  color: var(--brass);
  font-size: 12px;
  transition: transform 0.2s ease;
}
.limitations-fold[open] > .limitations-summary::before { transform: rotate(90deg); }
.limitations-title { font-weight: 600; font-size: 13.5px; }
.limitations-hint { font-size: 11.5px; margin-left: auto; }
.limitations-inner { padding: 0 16px 14px; font-size: 12.5px; line-height: 1.6; }
.limitations-conclusion {
  font-size: 12.5px; line-height: 1.55; padding: 10px 12px; border-radius: var(--radius);
  margin-bottom: 10px; border: 1px solid rgba(227, 178, 97, 0.25);
}
.limitations-list {
  margin: 0 0 10px;
  padding-left: 1.2em;
  display: flex;
  flex-direction: column;
  gap: 8px;
  color: var(--ink);
}
.limitations-list strong { color: var(--brass); font-weight: 600; }
.limitations-next { font-size: 11.5px; margin: 0; line-height: 1.5; }
.research-inner { padding: 0 18px 18px; border-top: 1px solid var(--line); }
.research-nav {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  padding: 12px 0 10px;
  position: sticky;
  top: 0;
  z-index: 2;
  background: var(--panel);
  border-bottom: 1px solid var(--line);
  margin-bottom: 4px;
}
.research-nav a {
  font-size: 12px;
  padding: 4px 10px;
  border-radius: 999px;
  border: 1px solid var(--line);
  color: var(--muted);
  text-decoration: none;
  transition: color 0.15s, border-color 0.15s;
}
.research-nav a:hover,
.research-nav a.active { color: var(--brass); border-color: var(--brass); }
.section-nested { margin: 18px 0 14px; }
.section-nested .section-head { margin-bottom: 12px; }

@media (max-width: 880px) {
  .dec-hold-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 880px) {
  .grid-3 { grid-template-columns: 1fr; }
  .cols { grid-template-columns: 1fr; }
  .research-grid { grid-template-columns: repeat(2, 1fr); }
  .research-panels { grid-template-columns: 1fr; }
  .row { grid-template-columns: 36px 1.3fr 70px 64px; gap: 10px; }
  .row .col-idx, .row .col-spark, .row .col-fbars, .row .head-idx, .row .head-spark, .row .head-fbars { display: none; }
}

/* R342 · 决策链 mobile（首屏三件事 / glance / quickbar / 持仓摘要） */
@media (max-width: 640px) {
  .wrap { padding: 0 12px; }
  .decision-quickbar { top: 52px; }
  .decision-quickbar-inner { padding: 6px 0; font-size: 11.5px; }
  .dq-row-main { flex-direction: column; align-items: flex-start; gap: 6px; }
  .dq-proxy, .dq-align, .dq-dual, .dq-co-window, .dq-fresh { min-width: 0; max-width: 100%; white-space: normal; line-height: 1.4; }
  .dq-row-main > .dq-fresh,
  .dq-row-main > .dq-align,
  .dq-row-main > .dq-dual,
  .dq-row-main > .dq-co-window { width: 100%; flex: 1 1 100%; }
  .dq-nav { width: 100%; flex-wrap: wrap; gap: 8px; }
  .dec-co-strip { font-size: 11.5px; }
  .dec-align-band-head { font-size: 11.5px; }
  .decision-brief { padding: 14px 12px; }
  .dec-today-item {
    grid-template-columns: 22px minmax(0, 1fr);
    grid-template-rows: auto auto;
    gap: 4px 8px;
  }
  .dec-today-n { grid-row: 1 / span 2; align-self: start; margin-top: 2px; }
  .dec-today-k { grid-column: 2; }
  .dec-today-v { grid-column: 2; white-space: normal; word-break: break-word; }
  .dec-glance-chip { white-space: normal; max-width: 100%; line-height: 1.35; }
  .dec-fresh-banner { font-size: 12px; padding: 8px 10px; }
  .dec-fresh-reload { margin-left: 0; margin-top: 6px; display: inline-block; }
  .dec-hold-grid, .dec-hold-grid-3 { grid-template-columns: 1fr; }
  .dec-align, .dec-proxy-row { overflow-x: auto; -webkit-overflow-scrolling: touch; }
  .hc-decision { font-size: 12px; line-height: 1.4; }
  .dec-brief-detail-toggle { font-size: 11px; line-height: 1.4; }
  /* R357 · 持仓区 mobile polish */
  .hold-card {
    grid-template-columns: 1fr 1fr;
    gap: 10px 12px;
    padding: 14px 12px;
    align-items: start;
  }
  .hold-card .hc-decision,
  .hold-card .hc-advice,
  .hold-card .hc-proxy-live,
  .hold-card .hc-actions,
  .hold-card .hc-warn,
  .hold-card > div:nth-child(2) { grid-column: 1 / -1; }
  .hold-card .hc-actions {
    flex-direction: row;
    gap: 8px;
  }
  .hold-card .hc-actions button {
    flex: 1;
    min-height: 40px;
    font-size: 12px;
    padding: 8px 10px;
  }
  .hold-card .hc-v { font-size: 15px; }
  .hold-card .hc-advice,
  .hold-card .hc-proxy-live { padding-top: 10px; margin-top: 2px; }
  .hold-card .hc-advice .r,
  .hold-card .hc-research-demote { word-break: break-word; line-height: 1.45; }
  .hold-card .hc-warn { line-height: 1.45; word-break: break-word; }
  .hold-form { padding: 12px; }
  .hf-row { flex-direction: column; align-items: stretch; gap: 10px; }
  .hf-row label { width: 100%; }
  .hf-row input, .hf-row select { min-width: 0; width: 100%; box-sizing: border-box; }
  .hf-row .btn { width: 100%; min-height: 40px; }
  .hold-empty { padding: 16px 12px; }
  .hold-empty-cta, .hold-empty .btn.primary { width: 100%; max-width: none; box-sizing: border-box; }
  #sec-holdings .section-head { flex-wrap: wrap; gap: 8px; }
  #sec-holdings #add-holding { flex: 1 1 100%; min-height: 40px; }
  /* R358 · 局限/走查/双源 teaser mobile */
  .limitations-summary { padding: 10px 12px; gap: 6px; }
  .limitations-hint { margin-left: 0; flex: 1 1 100%; font-size: 11px; }
  .limitations-inner { padding: 0 12px 12px; font-size: 12px; }
  .limitations-title { font-size: 13px; }
  /* R504 · 已知局限内字段说明链在 390px 可点 */
  .limitations-inner .limitations-m3-fields,
  .limitations-inner [data-agent-m3-fields] {
    display: inline-flex;
    align-items: center;
    min-height: 28px;
    padding: 2px 0;
    word-break: break-all;
  }
  .dec-wt-actions { flex-direction: column; align-items: stretch; }
  .dec-wt-record, .dec-wt-notes { width: 100%; box-sizing: border-box; min-height: 40px; }
  .dec-wt-history-item { display: flex; flex-direction: column; gap: 2px; }
  .agent-slot-inner { flex-direction: column; align-items: stretch; }
  .agent-slot-cta { width: 100%; text-align: center; box-sizing: border-box; min-height: 40px; }
  /* R456 · ≤640 首页健康行（mode + remain）必须可读可见 */
  .agent-home-health {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    width: 100%;
    margin: 10px 0 0;
    padding: 8px 10px;
    box-sizing: border-box;
    font-size: 12px;
    line-height: 1.4;
    border-radius: 8px;
    border: 1px solid rgba(138, 132, 148, 0.28);
    background: rgba(15, 23, 42, 0.35);
  }
  .agent-home-health .agent-llm-mode {
    font-size: 11px;
    padding: 2px 8px;
  }
  .agent-home-health .agent-home-remain {
    flex: 1 1 auto;
    min-width: 0;
    word-break: break-word;
  }
  /* R497 · Key / 字段说明 / M3 链在 390px 可点 */
  .agent-home-health .agent-home-key-link {
    display: inline-flex;
    align-items: center;
    min-height: 28px;
    padding: 2px 0;
    font-size: 11px;
    line-height: 1.3;
  }
  .agent-return-inner { flex-direction: column; align-items: flex-start; gap: 6px; }
  .agent-return-steps { padding-left: 16px; font-size: 11.5px; }
  .dec-post-recap { padding: 12px; }
  .dec-recap-metrics { flex-direction: column; gap: 4px; }
  .dec-recap-nav-chip { font-size: 11px; padding: 7px 8px; }
  .dec-dual-teaser { font-size: 12px; padding: 8px 10px; }
  .dec-dual-jump { display: inline-block; margin: 6px 0 0; }
  .dec-proxy-boundary { font-size: 11px; }
  #disclaimer { font-size: 11px; line-height: 1.5; padding: 0 4px 20px; }
  .dec-loop-steps { flex-direction: column; gap: 10px; }
  .dec-loop-step { flex: 1 1 100%; }
  .dec-loop-action { margin-left: 0; }
  /* R377 · mobile agent/实况链 polish */
  .dq-row-main > .dq-nav-settle {
    width: 100%;
    flex: 1 1 100%;
    white-space: normal;
    line-height: 1.4;
  }
  .dq-row-main .dq-holdings { width: 100%; flex: 1 1 100%; line-height: 1.4; }
  .dq-row-main .dq-nav { margin-left: 0; justify-content: stretch; }
  .dq-nav a.dq-agent {
    flex: 1 1 100%;
    min-height: 40px;
    justify-content: center;
    border-color: rgba(227, 178, 97, 0.45);
    background: rgba(227, 178, 97, 0.1);
    font-weight: 700;
  }
  .dq-nav a:not(.dq-agent), .dq-nav .dq-link-btn {
    flex: 1 1 calc(33.33% - 6px);
    min-height: 36px;
    justify-content: center;
    text-align: center;
  }
  .agent-slot, .agent-return-strip { padding: 12px; }
  /* R418 · mobile 抽屉分析页可读性 */
  .drawer {
    width: 100vw;
    max-width: 100vw;
  }
  .drawer .dh { padding: 14px 14px 12px; }
  .drawer .db { padding: 12px 14px 24px; -webkit-overflow-scrolling: touch; }
  .drawer .close {
    min-width: 44px; min-height: 44px;
    font-size: 26px; display: flex; align-items: center; justify-content: center;
  }
  #d-name { font-size: 16px !important; line-height: 1.3; word-break: break-word; }
  #d-code { font-size: 11px !important; word-break: break-all; }
  .drawer-tabs { gap: 6px; margin-bottom: 12px; position: sticky; top: 0; z-index: 2; background: var(--bg-2); padding-top: 2px; }
  .drawer-tab {
    flex: 1;
    min-height: 40px;
    font-size: 14px;
    padding: 8px 10px;
    text-align: center;
  }
  .agent-report-body { font-size: 13px; line-height: 1.6; }
  .agent-report-head { flex-direction: column; align-items: flex-start; gap: 4px; }
  .agent-report-signal { font-size: 18px; }
  .agent-report-meta { font-size: 11.5px; line-height: 1.4; word-break: break-word; }
  .agent-report-summary { font-size: 13px; line-height: 1.55; }
  .agent-report-section h4 { font-size: 12px; margin-bottom: 6px; }
  .agent-report-section p { font-size: 12.5px; line-height: 1.55; word-break: break-word; overflow-wrap: anywhere; }
  .agent-report-stub, .agent-report-partial { font-size: 11.5px; line-height: 1.4; padding: 8px; }
  .agent-live-check { padding: 10px; margin-top: 12px; }
  .agent-live-head { flex-direction: column; align-items: flex-start; gap: 4px; }
  .agent-live-list { padding-left: 16px; font-size: 11.5px; line-height: 1.45; }
  .agent-live-actions { flex-direction: column; align-items: stretch; gap: 8px; }
  .agent-live-jump {
    min-height: 40px;
    display: flex; align-items: center; justify-content: center;
    border: 1px solid var(--line); border-radius: 6px; padding: 8px 10px;
    text-align: center; box-sizing: border-box;
  }
  .agent-report-decision ul { padding-left: 16px; }
  .hold-empty-actions { flex-direction: column; align-items: stretch; }
  .hold-empty-actions .btn { width: 100%; min-height: 40px; box-sizing: border-box; }
  .agent-slot-title { font-size: 14px; }
  .agent-slot-sub, .agent-slot-rhythm, .agent-slot-deeplink { word-break: break-word; }
  .agent-return-title { flex: 1 1 100%; font-size: 13px; }
  .agent-return-jump {
    white-space: normal;
    width: 100%;
    min-height: 40px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 8px 12px;
    border: 1px solid rgba(227, 178, 97, 0.35);
    border-radius: 8px;
    box-sizing: border-box;
  }
  .dec-co-e2e-summary { font-size: 11.5px; line-height: 1.45; }
  .dec-co-e2e-k { display: block; margin: 0 0 4px; }
  .dec-co-e2e-body { font-size: 11.5px; }
  .dec-co-e2e-steps { padding-left: 16px; font-size: 11.5px; }
  .dec-co-e2e-foot { word-break: break-word; line-height: 1.45; }
  .dec-co-strip { padding: 8px 10px; line-height: 1.45; }
  .dq-hold-recon { display: inline-block; margin-top: 2px; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
}

/* ============ 2026-07-07 · 首页决策动线重排（decision-first IA） ============ */

/* 使用指引：三步动线 */
.usage-guide {
  display: flex; gap: 10px; margin: 10px 0 22px; padding: 0;
  list-style: none; flex-wrap: wrap;
}
.usage-guide li {
  flex: 1 1 210px; display: flex; align-items: center; gap: 10px;
  padding: 11px 14px; border: 1px solid var(--line); border-radius: 10px;
  background: linear-gradient(180deg, var(--panel-2), var(--panel));
  font-size: 12.5px; color: var(--muted); line-height: 1.4;
}
.usage-guide .ug-n {
  flex: none; width: 22px; height: 22px; border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center;
  font-family: var(--mono); font-size: 12px; font-weight: 700;
  color: var(--brass); border: 1px solid var(--brass-dim); background: rgba(227, 178, 97, 0.1);
}
.usage-guide .ug-t b { color: var(--ink); font-weight: 600; }

/* Hero 决策区 */
.section-hero { margin-top: 18px; }
.section-hero .section-head h2 { color: var(--brass); }

/* 证据小标题（净值/估值/新鲜度） */
.brief-sub-head {
  display: flex; align-items: center; gap: 10px; margin: 22px 0 10px;
  font-size: 12px; color: var(--muted);
}
.brief-sub-head .kicker {
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.16em;
  text-transform: uppercase; color: var(--brass-dim);
}

/* 今日结论卡 */
.agent-verdict {
  border: 1px solid rgba(227, 178, 97, 0.34); border-radius: var(--radius);
  background: linear-gradient(180deg, rgba(227, 178, 97, 0.06), rgba(255, 255, 255, 0.015));
  padding: 18px 20px; margin-top: 6px;
}
.av-top { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; margin-bottom: 12px; }
.av-kicker { font-family: var(--mono); font-size: 10px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--brass); }
.av-fund { font-size: 14px; font-weight: 600; color: var(--ink); }
.av-date { font-size: 11px; color: var(--faint); margin-left: auto; }
.av-headline { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.av-badge {
  font-family: var(--mono); font-size: 15px; font-weight: 700; letter-spacing: 0.04em;
  padding: 6px 12px; border-radius: 8px; border: 1px solid transparent;
}
.av-badge.av-buy { color: var(--up); background: rgba(246, 70, 93, 0.12); border-color: rgba(246, 70, 93, 0.35); }
.av-badge.av-hold { color: var(--brass); background: rgba(227, 178, 97, 0.12); border-color: rgba(227, 178, 97, 0.32); }
.av-badge.av-sell { color: var(--down); background: rgba(46, 189, 133, 0.12); border-color: rgba(46, 189, 133, 0.35); }
.av-action { font-size: 14px; color: var(--ink); }
.av-action b { color: var(--brass); }
.av-conf { font-size: 12px; color: var(--muted); font-family: var(--mono); }
.av-chips { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.av-chip { font-size: 11px; padding: 2px 8px; border-radius: 6px; border: 1px solid var(--line-strong); color: var(--muted); }
.av-chip-warn { color: var(--brass); border-color: var(--brass-dim); background: rgba(227, 178, 97, 0.08); }
.av-chip-bad { color: var(--down); border-color: rgba(46, 189, 133, 0.4); background: rgba(46, 189, 133, 0.08); font-weight: 600; }
.av-summary { margin: 12px 0 0; font-size: 13.5px; line-height: 1.6; color: var(--ink); }
.av-tracks { margin: 10px 0 0; padding-left: 18px; font-size: 12.5px; line-height: 1.6; color: var(--muted); }
.av-stub-note { font-size: 13px; color: var(--muted); line-height: 1.55; }
.av-cta-row { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin-top: 16px; }
.av-open { min-height: 36px; }
.av-hint { font-size: 11px; }

/* 背景/参考区 demote */
.section-context .section-head h2 { color: var(--muted); font-weight: 600; }
.h2-tag { font-size: 11px; font-weight: 500; margin-left: 6px; }

@media (max-width: 640px) {
  .usage-guide li { flex: 1 1 100%; }
  .av-date { margin-left: 0; }
  .agent-verdict { padding: 14px; }
}

/* ===== §C 重设计：决策摘要条 + 双栏 + 移动端优先级 ===== */
.decision-summary {
  display: flex; align-items: center; gap: 18px;
  margin: 4px 0 18px; padding: 14px 18px;
  border: 1px solid var(--line-strong); border-radius: var(--radius);
  background: linear-gradient(135deg, rgba(227,178,97,0.06), rgba(255,255,255,0.012));
}
.decision-summary .ds-left { display: flex; flex-direction: column; gap: 6px; align-items: flex-start; flex-shrink: 0; }
.ds-badge { font-size: 12px; font-weight: 700; letter-spacing: 0.03em; padding: 4px 10px; border-radius: 999px; white-space: nowrap; }
.ds-badge-open { color: var(--brass); background: rgba(227,178,97,0.14); border: 1px solid rgba(227,178,97,0.35); }
.ds-badge-cutoff { color: var(--muted); background: rgba(255,255,255,0.04); border: 1px solid var(--line-strong); }
.ds-badge-pre { color: var(--ink); background: rgba(255,255,255,0.05); border: 1px solid var(--line-strong); }
.ds-badge-post { color: var(--muted); background: rgba(255,255,255,0.03); border: 1px solid var(--line); }
.ds-badge-closed { color: var(--faint); background: rgba(255,255,255,0.02); border: 1px solid var(--line); }
.ds-countdown { font-family: var(--mono); font-size: 15px; font-weight: 700; color: var(--brass); font-variant-numeric: tabular-nums; }
.ds-countdown-urgent { animation: dsPulse 1.6s ease-in-out infinite; }
@keyframes dsPulse { 0%,100% { opacity: 1; } 50% { opacity: 0.55; } }
.decision-summary .ds-mid { flex: 1 1 auto; min-width: 0; }
.ds-line { font-size: 15px; line-height: 1.4; color: var(--ink); }
.ds-line b { font-family: var(--mono); font-weight: 700; font-variant-numeric: tabular-nums; }
.ds-sub { font-size: 11.5px; margin-top: 4px; }
.decision-summary .ds-right { flex-shrink: 0; }
.ds-trust { display: inline-flex; align-items: center; gap: 7px; font-size: 12px; color: var(--muted); }
.ds-trust-dot { width: 9px; height: 9px; border-radius: 50%; background: var(--muted); }
.ds-trust-ok { background: var(--down); box-shadow: 0 0 8px var(--down); }
.ds-trust-warn { background: var(--brass); box-shadow: 0 0 8px var(--brass); }
.ds-trust-fail { background: var(--up); box-shadow: 0 0 8px var(--up); }

/* P1-a · ①今日结论 + ②我的持仓 桌面并排双栏 */
@media (min-width: 981px) {
  .decision-duo { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; align-items: start; }
  .decision-duo .section { margin-bottom: 0; }
}

/* P2-b · 移动端决策优先级：摘要条状态吸顶 + 大盘折叠靠后 */
@media (max-width: 640px) {
  .decision-summary { flex-wrap: wrap; gap: 10px; padding: 12px 14px; }
  .decision-summary .ds-right { width: 100%; }
  .hc-hero { grid-template-columns: 1fr; gap: 10px; }
  .hc-hero-today { text-align: left; border-left: none; padding-left: 0; border-top: 1px solid var(--line); padding-top: 10px; }
  .hc-hero-v { font-size: 26px; }
  .hc-grid { grid-template-columns: 1fr 1fr; }
}

/* P1-b · ③大盘趋势折叠 */
.market-fold { display: block; }
.market-fold > .market-fold-summary { cursor: pointer; list-style: none; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.market-fold > .market-fold-summary::-webkit-details-marker { display: none; }
.market-fold .market-fold-oneline { font-size: 12.5px; flex: 1 1 auto; }
.market-fold .market-fold-oneline b { color: var(--brass); font-weight: 700; }
.market-fold-caret { color: var(--faint); transition: transform 0.2s ease; }
.market-fold[open] .market-fold-caret { transform: rotate(180deg); }
.market-fold:not([open]) .rule { display: none; }

/* ===== 行情看板（重头重构 · 小卡片 / 热力图 / 榜单 / 新闻）===== */
.mb-stamp { font-size: 11.5px; margin: 2px 0 14px; }
.mb-block { margin: 0 0 22px; }
.mb-h { display: flex; align-items: baseline; gap: 10px; margin: 0 0 10px; }
.mb-h-t { font-size: 14px; font-weight: 700; color: var(--ink); letter-spacing: 0.01em; }
.mb-h-t::before { content: ''; display: inline-block; width: 3px; height: 13px; background: var(--brass); margin-right: 8px; vertical-align: -1px; border-radius: 2px; }
.mb-empty { font-size: 12px; color: var(--faint); padding: 10px 0; }

.mb-idx-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; }
.mb-idx { border: 1px solid var(--line); border-radius: 10px; padding: 12px 14px; background: linear-gradient(180deg, var(--panel-2), var(--panel)); position: relative; overflow: hidden; }
.mb-idx-head { display: flex; align-items: center; gap: 6px; }
.mb-idx-name { font-size: 12.5px; color: var(--muted); font-weight: 600; }
.mb-idx-tag { font-size: 10px; padding: 1px 5px; border-radius: 4px; background: rgba(227,178,97,0.16); color: var(--brass); }
.mb-idx-close { font-family: var(--mono); font-size: 20px; font-weight: 700; margin-top: 6px; font-variant-numeric: tabular-nums; }
.mb-idx-pct { font-family: var(--mono); font-size: 13px; font-weight: 600; font-variant-numeric: tabular-nums; }
.mb-spark { width: 100%; height: 26px; margin-top: 6px; display: block; }
.mb-spark path { fill: none; stroke-width: 1.6; }
.mb-idx-off { opacity: 0.6; }
.mb-idx-off-note { font-size: 11px; color: var(--faint); margin-top: 6px; }
.up { color: var(--up); } .down { color: var(--down); } .flat { color: var(--muted); }

.mb-heatmap { display: grid; grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); gap: 8px; }
.mb-tile { border-radius: 10px; padding: 12px 14px; border: 1px solid var(--line); }
.mb-tile-name { font-size: 12.5px; font-weight: 600; color: var(--ink); }
.mb-tile-pct { font-family: var(--mono); font-size: 16px; font-weight: 700; margin-top: 4px; }
.mb-tile-flow { font-family: var(--mono); font-size: 11px; color: var(--muted); margin-top: 2px; }

.mb-mini-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 10px; }
.mb-mini { border: 1px solid var(--line); border-radius: 10px; padding: 10px 12px; background: var(--panel); }
.mb-mini-top { display: flex; justify-content: space-between; align-items: baseline; gap: 6px; }
.mb-mini-name { font-size: 12px; font-weight: 600; color: var(--ink); }
.mb-mini-close { font-family: var(--mono); font-size: 15px; font-weight: 600; margin-top: 4px; }
.mb-stock-top { display: flex; justify-content: space-between; gap: 6px; }
.mb-stock-name { font-size: 12.5px; font-weight: 600; }
.mb-stock-sector { font-size: 10px; color: var(--faint); }
.mb-stock-row { display: flex; justify-content: space-between; align-items: baseline; margin-top: 4px; }
.mb-stock { border: 1px solid var(--line); border-radius: 10px; padding: 10px 12px; background: var(--panel); }

.mb-boards { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 12px; }
.mb-card { border: 1px solid var(--line); border-radius: 10px; padding: 12px 14px; background: var(--panel); }
.mb-card-h { font-size: 12.5px; font-weight: 700; color: var(--brass); margin-bottom: 8px; }
.mb-list { display: flex; flex-direction: column; gap: 5px; }
.mb-row { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; font-size: 12px; }
.mb-row-name { color: var(--ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mb-row-v { font-family: var(--mono); font-variant-numeric: tabular-nums; }
.mb-row-total { border-top: 1px dashed var(--line); margin-top: 4px; padding-top: 5px; font-weight: 600; }

.mb-news { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 10px; }
.mb-news-item { display: block; border: 1px solid var(--line); border-radius: 10px; padding: 11px 13px; background: var(--panel); text-decoration: none; color: inherit; transition: border-color 0.15s ease; }
a.mb-news-item:hover { border-color: var(--brass-dim); }
.mb-news-title { font-size: 12.5px; line-height: 1.45; color: var(--ink); }
.mb-news-meta { font-size: 10.5px; margin-top: 5px; }

.mb-fold { border: 1px solid var(--line); border-radius: var(--radius); background: var(--panel); padding: 2px 16px; margin-bottom: 18px; }
.mb-fold-sum { cursor: pointer; list-style: none; display: flex; align-items: center; gap: 10px; padding: 13px 0; }
.mb-fold-sum::-webkit-details-marker { display: none; }
.mb-fold-caret { margin-left: auto; color: var(--faint); transition: transform 0.2s ease; }
.mb-fold[open] .mb-fold-caret { transform: rotate(180deg); }
.mb-fold-body { padding: 6px 0 16px; }
.hold-toolbar { margin-bottom: 12px; }

@media (max-width: 640px) {
  .mb-idx-grid, .mb-mini-grid { grid-template-columns: repeat(2, 1fr); }
  .mb-heatmap { grid-template-columns: repeat(2, 1fr); }
  .mb-news { grid-template-columns: 1fr; }
}

.mb-analyze { border: 1px solid var(--line); border-radius: 12px; padding: 16px 18px; background: linear-gradient(135deg, rgba(227,178,97,0.06), rgba(255,255,255,0.012)); }
.mb-analyze-sub { font-size: 12px; margin: 0 0 12px; }
.mb-analyze-btns { display: flex; flex-wrap: wrap; gap: 10px; }
