/* ==========================================================================
   Research OS · 本地知识库站点样式
   亮色主题，无外部依赖，离线可用
   ========================================================================== */

:root {
  --bg: #f6f7f9;
  --surface: #ffffff;
  --surface-2: #f0f2f5;
  --border: #dfe3e8;
  --border-strong: #c8cfd8;
  --text: #1f2328;
  --text-2: #57606a;
  --text-3: #8b949e;
  --accent: #2f6feb;
  --accent-soft: #e8f0fe;
  --accent-text: #1a56c4;
  --warn: #b45309;
  --warn-soft: #fdf3e3;
  --danger: #c0392b;
  --ok: #1a7f5a;
  --up: #d13b34;   /* 涨 · 红 */
  --down: #128a5b; /* 跌 · 绿 */
  --signal-bull:var(--up);
  --signal-bull-bg:#fff5f3;
  --signal-bull-border:#efc4c0;
  --signal-bear:var(--down);
  --signal-bear-bg:#f2faf6;
  --signal-bear-border:#bfe2d1;
  --radius: 10px;
  /* 四象限定局象限色（home-D）：大盘走向·红 / 资金情绪·橙 / 关注主线·蓝 / 作战目标·绿 */
  --red: #d64541;
  --red-bg: #fdeeed;
  --orange: #e2973a;
  --orange-bg: #fdf3e3;
  --blue: #3b6ef0;
  --blue-bg: #eef2fe;
  --green: #1e9e6a;
  --green-bg: #e9f7f1;
  --radius-sm: 6px;
  --shadow: 0 1px 2px rgba(16, 24, 40, .06), 0 1px 3px rgba(16, 24, 40, .04);
  --font: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC",
          "Hiragino Sans GB", "Microsoft YaHei", "Source Han Sans SC", sans-serif;
  --mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas,
          "Liberation Mono", monospace;
  --topbar-h: 56px;
  --sidebar-w: 268px;
}

* { box-sizing: border-box; }

html {
  background: var(--bg);
}

html, body {
  margin: 0;
  padding: 0;
}

body {
  background: var(--bg);
  color: var(--text);
  font-family: var(--font);
  font-size: 15px;
  line-height: 1.7;
  -webkit-font-smoothing: antialiased;
  width: 100%;
  min-width: 0;
}

a { color: var(--accent-text); text-decoration: none; }
a:hover { text-decoration: underline; }

svg {
  width: 16px;
  height: 16px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.muted { color: var(--text-2); }
.small { font-size: 13px; }
.loading, .empty {
  padding: 48px 8px;
  color: var(--text-3);
  text-align: center;
}

/* --------------------------------- 顶栏 --------------------------------- */

.topbar {
  position: sticky;
  top: 0;
  z-index: 40;
  height: var(--topbar-h);
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 0 18px;
  background: rgba(255, 255, 255, .92);
  backdrop-filter: saturate(180%) blur(8px);
  border-bottom: 1px solid var(--border);
}

.brand {
  display: flex;
  align-items: center;
  gap: 10px;
  color: var(--text);
  flex-shrink: 0;
}
.brand:hover { text-decoration: none; }

.brand-mark {
  width: 30px;
  height: 30px;
  display: grid;
  place-items: center;
  border-radius: 8px;
  background: var(--accent);
  color: #fff;
  font-weight: 700;
  font-size: 15px;
}

.brand-text { display: flex; flex-direction: column; line-height: 1.15; }
.brand-text strong { font-size: 15px; letter-spacing: .2px; }
.brand-text small { color: var(--text-3); font-size: 11px; }

.searchbox {
  position: relative;
  flex: 1;
  max-width: 520px;
  margin-left: auto;
  display: flex;
  align-items: center;
}

.search-icon {
  position: absolute;
  left: 11px;
  color: var(--text-3);
  pointer-events: none;
}

#search {
  width: 100%;
  height: 36px;
  padding: 0 42px 0 34px;
  font: inherit;
  font-size: 14px;
  color: var(--text);
  background: var(--surface-2);
  border: 1px solid transparent;
  border-radius: 999px;
  outline: none;
  transition: border-color .15s, background .15s;
}
#search:focus {
  background: var(--surface);
  border-color: var(--accent);
  box-shadow: 0 0 0 3px rgba(47, 111, 235, .12);
}
#search::-webkit-search-cancel-button { cursor: pointer; }

.searchbox kbd {
  position: absolute;
  right: 11px;
  padding: 1px 6px;
  font-family: var(--mono);
  font-size: 11px;
  color: var(--text-3);
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 4px;
  pointer-events: none;
}
#search:focus ~ kbd { display: none; }

.icon-btn {
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  color: var(--text-2);
  background: transparent;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  cursor: pointer;
}
.icon-btn:hover { background: var(--surface-2); color: var(--text); }

/* -------------------------------- 布局 -------------------------------- */

.layout {
  display: flex;
  align-items: flex-start;
  /* 铺满 body 收窄后的同框宽度，侧边栏与顶栏品牌左缘对齐 */
  max-width: none;
}

/* 侧栏默认收起为 52px 图标栏；完整目录面板悬浮展开，不挤压正文 */
.sidebar {
  position: sticky;
  top: var(--topbar-h);
  flex: 0 0 52px;
  width: 52px;
  height: calc(100vh - var(--topbar-h));
  overflow: visible;
  border-right: 1px solid var(--border);
  background: var(--surface);
  z-index: 30;
}

.sidebar.is-hidden { display: none; }

.side-rail {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  padding: 12px 0;
}

.rail-icon {
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  font-family: inherit;
  font-size: 14px;
  color: var(--text-2);
  background: none;
  border: 0;
  border-radius: var(--radius-sm);
  cursor: pointer;
  text-decoration: none;
}

.rail-icon:hover {
  background: var(--surface-2);
  color: var(--text);
  text-decoration: none;
}

.rail-icon.active {
  background: var(--accent-soft);
  color: var(--accent-text);
  font-weight: 700;
}

.rail-gap {
  width: 22px;
  height: 1px;
  margin: 8px 0;
  background: var(--border);
}

.side-panel {
  position: absolute;
  top: 0;
  left: 0;
  width: var(--sidebar-w);
  height: 100%;
  padding: 16px 12px 32px;
  overflow-y: auto;
  background: var(--surface);
  border-right: 1px solid var(--border);
  box-shadow: 12px 0 24px rgba(16, 24, 40, .1);
  opacity: 0;
  visibility: hidden;
  transform: translateX(-8px);
  transition: opacity .16s ease, transform .16s ease, visibility .16s;
}

.sidebar.ck-open .side-panel {
  opacity: 1;
  visibility: visible;
  transform: translateX(0);
}

@media (hover: none) {
  .side-panel { transition: none; }
}

.nav-primary { display: flex; flex-direction: column; gap: 2px; }

.nav-primary a {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 7px 10px;
  font-size: 14px;
  color: var(--text-2);
  border-radius: var(--radius-sm);
}
.nav-primary a:hover { background: var(--surface-2); text-decoration: none; color: var(--text); }
.nav-primary a.active { background: var(--accent-soft); color: var(--accent-text); font-weight: 600; }

.nav-icon { width: 16px; text-align: center; opacity: .75; font-size: 13px; }

.nav-count {
  margin-left: auto;
  padding: 0 6px;
  font-size: 11px;
  color: var(--text-3);
  background: var(--surface-2);
  border-radius: 999px;
}

.sidebar-section { margin-top: 22px; }

.sidebar-title {
  padding: 0 10px 6px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--text-3);
}

.tree { font-size: 13.5px; }

.tree-node-folder > .tree-label {
  display: flex;
  align-items: center;
  gap: 6px;
  width: 100%;
  padding: 5px 10px;
  font: inherit;
  color: var(--text-2);
  background: none;
  border: 0;
  border-radius: var(--radius-sm);
  cursor: pointer;
  text-align: left;
}
.tree-node-folder > .tree-label:hover { background: var(--surface-2); }

.tree-caret {
  display: inline-block;
  width: 10px;
  font-size: 9px;
  color: var(--text-3);
  transition: transform .15s;
}
.tree-node-folder.collapsed .tree-caret { transform: rotate(-90deg); }

.tree-children { margin-left: 10px; padding-left: 8px; border-left: 1px solid var(--border); }
.tree-node-folder.collapsed > .tree-children { display: none; }

.tree-link {
  display: block;
  padding: 4px 10px;
  color: var(--text-2);
  border-radius: var(--radius-sm);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.tree-link:hover { background: var(--surface-2); text-decoration: none; }
.tree-link.active { background: var(--accent-soft); color: var(--accent-text); font-weight: 600; }

.sidebar-footer {
  margin-top: 24px;
  padding: 0 10px;
  border-top: 1px solid var(--border);
  padding-top: 12px;
}

.content {
  flex: 1;
  min-width: 0;
  padding: 28px 32px 80px;
}

/* ------------------------------ 通用组件 ------------------------------ */

.page-head { margin-bottom: 22px; }

.page-head h1 {
  margin: 0 0 6px;
  font-size: 24px;
  font-weight: 700;
  letter-spacing: -.01em;
}

.page-head .subtitle { margin: 0; color: var(--text-2); font-size: 14px; }

.card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
}

.stat-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
  gap: 12px;
  margin-bottom: 26px;
}

.stat {
  padding: 14px 16px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
}
.stat-label { font-size: 12px; color: var(--text-3); }
.stat-value { font-size: 24px; font-weight: 700; letter-spacing: -.02em; }
.stat-value small { font-size: 13px; font-weight: 500; color: var(--text-3); margin-left: 3px; }
.stat-hint { font-size: 12px; color: var(--text-2); }

.section { margin-bottom: 30px; }

.section-title {
  display: flex;
  align-items: baseline;
  gap: 10px;
  margin: 0 0 12px;
  font-size: 15px;
  font-weight: 700;
}
.section-title .more { margin-left: auto; font-size: 13px; font-weight: 400; }

.badge {
  display: inline-block;
  padding: 1px 8px;
  font-size: 12px;
  line-height: 1.6;
  color: var(--text-2);
  background: var(--surface-2);
  border: 1px solid var(--border);
  border-radius: 999px;
  white-space: nowrap;
}
.badge-accent { color: var(--accent-text); background: var(--accent-soft); border-color: #cfe0fb; }
.badge-warn { color: var(--warn); background: var(--warn-soft); border-color: #f3e0c2; }
.badge-ok { color: var(--ok); background: #e7f6ef; border-color: #c6e8d8; }

.chip-row { display: flex; flex-wrap: wrap; gap: 6px; }

.chip {
  padding: 3px 10px;
  font-size: 13px;
  color: var(--text-2);
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 999px;
  cursor: pointer;
}
.chip:hover { border-color: var(--border-strong); }
.chip.active { color: #fff; background: var(--accent); border-color: var(--accent); }

/* ------------------------------ 文档卡片 ------------------------------ */

.doc-list { display: flex; flex-direction: column; gap: 10px; }

.doc-card {
  display: block;
  padding: 14px 16px;
  color: inherit;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  transition: border-color .15s, transform .15s;
}
.doc-card:hover {
  border-color: var(--accent);
  text-decoration: none;
  transform: translateY(-1px);
}

.doc-card h3 { margin: 0 0 4px; font-size: 15.5px; font-weight: 650; }
.doc-card p { margin: 0 0 8px; color: var(--text-2); font-size: 13.5px; }

.doc-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  font-size: 12px;
  color: var(--text-3);
}

.doc-path { font-family: var(--mono); font-size: 11.5px; }

/* ------------------------------ 文档正文 ------------------------------ */

.doc-view { max-width: 820px; }

.doc-header {
  padding-bottom: 16px;
  margin-bottom: 24px;
  border-bottom: 1px solid var(--border);
}

.doc-header h1 { margin: 0 0 10px; font-size: 27px; line-height: 1.3; letter-spacing: -.02em; }

.doc-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }

.btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 5px 12px;
  font-size: 13px;
  color: var(--text-2);
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  cursor: pointer;
}
.btn:hover { color: var(--text); border-color: var(--border-strong); text-decoration: none; }

.prose { font-size: 15.5px; }

.prose h1, .prose h2, .prose h3, .prose h4, .prose h5, .prose h6 {
  margin: 1.6em 0 .6em;
  font-weight: 700;
  line-height: 1.35;
  scroll-margin-top: calc(var(--topbar-h) + 16px);
}
.prose h1 { font-size: 23px; padding-bottom: .3em; border-bottom: 1px solid var(--border); }
.prose h2 { font-size: 19px; }
.prose h3 { font-size: 16.5px; }
.prose h4 { font-size: 15px; }

.prose p { margin: 0 0 1em; }
.prose ul, .prose ol { margin: 0 0 1em; padding-left: 1.6em; }
.prose li { margin: .25em 0; }
.prose ul.sub, .prose ol.sub { margin: .25em 0 .35em; }

.prose blockquote {
  margin: 0 0 1em;
  padding: 2px 0 2px 14px;
  color: var(--text-2);
  border-left: 3px solid var(--border-strong);
}

.prose hr { height: 1px; margin: 2em 0; background: var(--border); border: 0; }

.prose code {
  padding: .12em .38em;
  font-family: var(--mono);
  font-size: .88em;
  color: #b4345f;
  background: var(--surface-2);
  border-radius: 4px;
}

.prose pre.code-block {
  position: relative;
  margin: 0 0 1.2em;
  padding: 14px 16px;
  overflow-x: auto;
  background: #f7f8fa;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
}
.prose pre.code-block code {
  padding: 0;
  font-size: 13px;
  line-height: 1.65;
  color: var(--text);
  background: none;
}
.prose pre.code-block[data-lang]::before {
  content: attr(data-lang);
  position: absolute;
  top: 6px;
  right: 10px;
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-3);
}

.table-wrap { margin: 0 0 1.2em; overflow-x: auto; }
.prose table {
  width: 100%;
  border-collapse: collapse;
  font-size: 14px;
}
.prose th, .prose td {
  padding: 8px 12px;
  border: 1px solid var(--border);
}
.prose th { background: var(--surface-2); font-weight: 650; }
.prose tbody tr:nth-child(even) { background: #fafbfc; }

.prose img { max-width: 100%; border-radius: var(--radius-sm); }

.prose mark { padding: 0 .2em; background: #fff3c4; }

.wiki-link {
  padding-bottom: 1px;
  border-bottom: 1px dashed var(--accent);
}
.wiki-link:hover { text-decoration: none; background: var(--accent-soft); }
.wiki-broken {
  color: var(--text-3);
  border-bottom: 1px dashed var(--border-strong);
  cursor: help;
}

/* ------------------------------ 观察池 ------------------------------ */

.filter-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  margin-bottom: 18px;
}

.filter-bar input[type="search"] {
  height: 34px;
  padding: 0 12px;
  font: inherit;
  font-size: 14px;
  color: var(--text);
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  outline: none;
  min-width: 200px;
}
.filter-bar input[type="search"]:focus { border-color: var(--accent); }

.filter-bar select {
  height: 34px;
  padding: 0 8px;
  font: inherit;
  font-size: 14px;
  color: var(--text);
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
}

.group-title {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 22px 0 10px;
  font-size: 14px;
  font-weight: 700;
  color: var(--text);
}
.group-title::after {
  content: "";
  flex: 1;
  height: 1px;
  background: var(--border);
}

.watch-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(236px, 300px));
  gap: 12px;
}

.watch-card {
  padding: 14px 16px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
}

.watch-card h4 { margin: 0 0 6px; font-size: 15px; font-weight: 650; }

.watch-card .code {
  font-family: var(--mono);
  font-size: 12.5px;
  color: var(--text-2);
}

.watch-line {
  display: flex;
  gap: 6px;
  margin-top: 6px;
  font-size: 13px;
  color: var(--text-2);
}
.watch-line .k { flex: 0 0 42px; color: var(--text-3); }

.related-list { margin-top: 10px; padding-top: 10px; border-top: 1px dashed var(--border); }
.related-list .rl-title { font-size: 12px; color: var(--text-3); margin-bottom: 4px; }
.related-list a { display: block; font-size: 13px; }
.related-list .weak { color: var(--text-3); font-size: 12.5px; }

/* ------------------------------ 观察池·观测裁决 ------------------------------ */
.watch-card { position: relative; }
.watch-card > summary { list-style: none; cursor: pointer; }
.watch-card > summary::-webkit-details-marker { display: none; }
.watch-card > summary::after { content: '展开'; margin-left: auto; color: var(--primary); font-size: 11px; font-weight: 650; }
.watch-card[open] > summary::after { content: '收起'; }
.watch-card.is-buy  { border-left: 3px solid #d64541; }
.watch-card.is-hold  { border-left: 3px solid #b6bcc4; }
.watch-card.is-sell { border-left: 3px solid #1e9e6a; }
.watch-head {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 6px;
}
.watch-head .wh-title {
  display: flex; align-items: baseline; gap: 6px; min-width: 0;
}
.watch-head .wh-title h4 {
  margin: 0; min-width: 0; font-size: 15px; font-weight: 650;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.watch-head .wh-title .code { flex: 0 0 auto; }
.watch-head .chip-row { flex-wrap: nowrap; gap: 4px; }
.watch-head .chip-row .badge { flex: 0 1 auto; min-width: 0; padding: 1px 7px; font-size: 11px; line-height: 1.6; }
.watch-summary-signals { display:flex; flex-wrap:wrap; gap:6px; padding-right:28px; }
.watch-summary-signal { display:inline-flex; align-items:center; gap:5px; min-width:0; padding:3px 7px; border:1px solid var(--border); border-radius:999px; color:var(--text-2); background:var(--surface-2); font-size:11.5px; font-weight:650; line-height:1.35; white-space:nowrap; }
.watch-summary-signal i { width:7px; height:7px; flex:none; border-radius:50%; background:currentColor; }
.watch-summary-signal.ta-bull, .watch-summary-signal.news-bull { color:#c33a36; background:#fff4f2; border-color:#f3c8c4; }
.watch-summary-signal.ta-bear, .watch-summary-signal.news-bear { color:#156e4a; background:#f1faf5; border-color:#c5e8d5; }
.watch-summary-signal.ta-neutral, .watch-summary-signal.news-neutral { color:#6b7887; background:#f6f8fa; border-color:#dfe4ea; }
.watch-position { color: #3b6ef0; background: rgba(59,110,240,.10); border-color: rgba(59,110,240,.22); }
.watch-card-brief { margin-top: 9px; color: var(--text-2); font-size: 12.5px; line-height: 1.55; }
.watch-card-detail { margin-top: 10px; padding-top: 10px; border-top: 1px dashed var(--border); }
.watch-context { margin: 0 0 9px; padding: 8px 10px; border-radius: 8px; background: rgba(59,110,240,.08); color: var(--text-2); font-size: 12px; line-height: 1.55; }
.watch-compare-toggle { margin: 9px 0 2px; padding: 5px 9px; border: 1px solid rgba(59,110,240,.28); border-radius: 7px; background: #fff; color: var(--primary); font-size: 12px; cursor: pointer; }
.watch-card.is-target { outline: 3px solid rgba(59,110,240,.32); outline-offset: 2px; }
.watch-group.is-target { scroll-margin-top: 18px; }
.watch-group-directory { display:flex; flex-wrap:wrap; gap:7px; margin:0 0 14px; }
.watch-anomaly, .watch-compare { margin: 0 0 14px; padding: 13px 15px; border: 1px solid var(--border); border-radius: 12px; background: #fff; }
.watch-anomaly { display:grid; grid-template-columns:minmax(170px,.65fr) minmax(0,1.35fr); gap:14px; align-items:start; border-color: rgba(224, 91, 91, .25); }
.watch-anomaly h2, .watch-compare h2 { margin:0; font-size:15px; }.watch-anomaly p, .watch-compare p { margin:4px 0 0; color:var(--text-3); font-size:12px; line-height:1.5; }
.watch-anomaly-links { display:flex; flex-wrap:wrap; gap:7px; }.watch-anomaly-links button { padding:7px 9px; border:1px solid var(--border); border-radius:8px; background:#fff; text-align:left; cursor:pointer; }.watch-anomaly-links b,.watch-anomaly-links span { display:block; }.watch-anomaly-links b { font-size:12px; }.watch-anomaly-links span { margin-top:2px; color:var(--text-3); font-size:11px; }
.watch-compare-head { display:flex; justify-content:space-between; gap:12px; align-items:start; }.watch-compare-table { margin-top:10px; overflow-x:auto; }.watch-compare-row { display:grid; grid-template-columns:minmax(120px,1.1fr) 90px 90px 110px 90px minmax(150px,1.5fr); gap:8px; min-width:760px; padding:8px 0; border-top:1px solid var(--border); color:var(--text-2); font-size:12px; line-height:1.45; }.watch-compare-label { color:var(--text-3); font-size:11px; }.watch-compare-row strong { color:var(--text); }.watch-compare-row small { display:block; color:var(--text-3); font-weight:400; }
.watch-group-directory button { appearance:none; border:1px solid var(--border); border-radius:999px; padding:5px 10px; color:var(--text-2); background:var(--surface); font:inherit; font-size:12px; cursor:pointer; }
.watch-group-directory button:hover { border-color:var(--primary); color:var(--primary); }
.watch-group-directory b { margin-left:3px; font-variant-numeric:tabular-nums; }

/* 裁决总览带：交通灯色块统计 */
.wv-band {
  display: flex; flex-wrap: wrap; gap: 8px; align-items: center;
  background: var(--surface); border: 1px solid var(--border);
  border-radius: var(--radius); padding: 10px 14px; margin-bottom: 8px;
  font-size: 13px; box-shadow: var(--shadow);
}
.wv-band-title { font-weight: 700; color: var(--text-2); margin-right: 2px; }
.wv-chip {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 13px; font-weight: 650; padding: 3px 11px; border-radius: 20px;
  border: 1px solid var(--border); white-space: nowrap;
}
.wv-chip::before { content: ""; width: 9px; height: 9px; border-radius: 50%; background: currentColor; }
.wv-chip b { font-variant-numeric: tabular-nums; }
.wv-chip-buy  { color: #d64541; background: #fbeceb; border-color: #f3c8c6; }
.wv-chip-hold { color: #6b7480; background: #f1f2f4; border-color: #dde0e4; }
.wv-chip-sell { color: #1e9e6a; background: #e8f6ef; border-color: #c4e8d4; }
.wv-clock { margin-left: auto; color: var(--text-3); font-size: 12px; white-space: nowrap; }
.wv-note { font-size: 12px; color: var(--text-3); margin: 0 0 10px; }
.wv-no-data { color: var(--text-3); font-size: 13px; padding: 14px; }

/* 颜色图例：与主页 sa-legend 同风格 */
.wv-legend {
  display: flex; align-items: center; flex-wrap: wrap; gap: 8px 16px;
  padding: 9px 13px; background: var(--surface); border: 1px solid var(--border);
  border-radius: 11px; font-size: 11.5px; color: var(--text-3);
  margin-bottom: 6px; line-height: 1.7;
}
.wv-legend-t { font-weight: 700; color: var(--text-2); }
.wv-legend-item { display: inline-flex; align-items: center; gap: 6px; }

/* 交通灯徽章：● 白芯圆点 + 实心标签 */
.wv-badge {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 12.5px; font-weight: 700; padding: 2px 10px 2px 7px;
  border-radius: 20px; color: #fff; white-space: nowrap; line-height: 1.6;
}
.wv-badge::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: #fff; box-shadow: 0 0 0 2px rgba(255,255,255,.32); }
.wv-badge.buy  { background: #d64541; }
.wv-badge.hold { background: #8a929e; }
.wv-badge.sell { background: #1e9e6a; }
.wv-badge.big  { font-size: 13.5px; padding: 4px 12px 4px 8px; }
.wv-badge.big::before { width: 9px; height: 9px; }

.wv-topline { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin: 8px 0 3px; }
.wv-reason { font-size: 12.5px; color: var(--text-2); line-height: 1.55; }
.wv-change { font-size: 11px; font-weight: 650; padding: 1px 7px; border-radius: 12px; }
.wv-change.up   { color: #8a4708; background: var(--warn-soft); }
.wv-change.down { color: #1a7f5a; background: #e7f5ee; }
.wv-hold { font-size: 11px; color: #3b6ef0; background: rgba(59,110,240,.10); padding: 1px 7px; border-radius: 12px; }
.wv-score { font-size: 11px; color: var(--text-3); font-variant-numeric: tabular-nums; }
.wv-ev { margin-top: 6px; padding-top: 6px; border-top: 1px dashed var(--border); font-size: 12px; color: var(--text-3); display: flex; flex-direction: column; gap: 2px; }
.wv-ev .ev-tag { color: var(--text-2); }

/* 观察池双信号：金融终端式紧凑总览，候选与依据分层阅读 */
.wv-band-note { color: var(--text-2); font-size: 12px; }
.watch-filter-tabs {
  display: flex; gap: 8px; overflow-x: auto; max-width: 100%;
  padding: 5px 1px 12px; margin-bottom: 6px; scrollbar-width: thin;
}
.watch-filter-tabs button {
  flex: 0 0 auto; display: inline-flex; align-items: center; gap: 9px;
  border: 1px solid var(--border); border-radius: 9px; background: var(--surface);
  color: var(--text-2); padding: 8px 11px; font: inherit; font-size: 12.5px;
  cursor: pointer; transition: border-color .15s, background .15s, transform .15s;
}
.watch-filter-tabs button:hover { border-color: #7692bc; transform: translateY(-1px); }
.watch-filter-tabs button.active { background: #203c62; border-color: #203c62; color: #fff; }
.watch-filter-tabs button b {
  font-variant-numeric: tabular-nums; border-radius: 5px; padding: 1px 5px;
  background: rgba(120,145,180,.13); color: inherit;
}
.watch-filter-tabs button.active b { background: rgba(255,255,255,.18); }
.watch-card { min-width: 0; overflow-wrap: anywhere; }
.watch-quality { align-self: center; margin-left: 10px; color: var(--text-3); font-size: 12px; font-weight: 500; }
.watch-signals { display: grid; grid-template-columns: minmax(0,1fr); gap: 8px; margin-top: 11px; }
.watch-signal {
  min-width: 0; display: flex; flex-direction: column; gap: 3px;
  padding: 9px 11px; border: 1px solid var(--border); border-left-width: 3px;
  border-radius: 8px; background: var(--surface-2);
}
.watch-signal-label { color: var(--text-3); font-size: 11px; letter-spacing: .02em; }
.watch-signal strong { color: var(--text); font-size: 14px; line-height: 1.35; }
.watch-signal small { color: var(--text-3); font-size: 11px; line-height: 1.45; }
/* 技术信号整卡按方向着色：浅底色 + 左侧色条 + 文字色，中性与新闻卡保持素色不抢文字 */
.watch-signal.ta-bull { background: #fff4f2; border-color: #f3c8c4; }
.watch-signal.ta-bull .watch-signal-label { color: #d64541; }
.watch-signal.ta-bull strong { color: #c33a36; }
.watch-signal.ta-bear { background: #f1faf5; border-color: #c5e8d5; }
.watch-signal.ta-bear .watch-signal-label { color: #1b8a5c; }
.watch-signal.ta-bear strong { color: #156e4a; }
.watch-signal.ta-neutral { background: #f6f8fa; border-color: #dfe4ea; }
.watch-signal.ta-neutral .watch-signal-label { color: #7c8896; }
.watch-signal.ta-neutral strong { color: #6b7887; }
/* 新闻轴只表达已核验事件的利多/利空/待核实，不与技术轴混成单一买卖判断。 */
.watch-signal.news-bull { background: #fff4f2; border-color: #f3c8c4; }
.watch-signal.news-bull .watch-signal-label { color: #d64541; }
.watch-signal.news-bull strong { color: #c33a36; }
.watch-signal.news-bear { background: #f1faf5; border-color: #c5e8d5; }
.watch-signal.news-bear .watch-signal-label { color: #1b8a5c; }
.watch-signal.news-bear strong { color: #156e4a; }
.watch-signal.news-neutral { background: #f6f8fa; border-color: #dfe4ea; }
.watch-signal.news-neutral .watch-signal-label { color: #7c8896; }
.watch-signal.news-neutral strong { color: #6b7887; }
.watch-verdict { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin: 11px 0 6px; font-size: 11px; color: var(--text-3); }
.watch-news-links { border-top: 1px solid var(--border); margin: 9px 0 0; }
.watch-news-links summary { display: flex; align-items: center; gap: 5px; padding: 8px 0 2px; cursor: pointer; color: var(--primary); font-size: 12px; font-weight: 600; list-style: none; }
.watch-news-links summary::-webkit-details-marker { display: none; }
.watch-news-links summary::before { content: '▸'; display: inline-block; transition: transform .16s ease; }
.watch-news-links[open] summary::before { transform: rotate(90deg); }
.watch-news-list { padding-top: 6px; }
.watch-news-links a { display: block; font-size: 12px; line-height: 1.5; overflow-wrap: anywhere; }
.watch-news-links time { display: block; margin-bottom: 7px; color: var(--text-3); font-size: 11px; }

/* 动态阶段卡中的观察池双轴：默认直接展示对象与后续验证条件，不把有效信息藏进折叠层。 */
.b6-analysis-grid { display:grid; grid-template-columns:minmax(0,1.15fr) minmax(320px,.85fr); gap:12px; margin:8px 0; }
.b6-stage-analysis, .b6-watchmatrix { min-width:0; border:1px solid rgba(173,196,231,.28); border-radius:11px; background:rgba(12,33,69,.25); }
.b6-stage-analysis { padding:13px 14px; }
.b6-analysis-head, .b6-wm-title { display:flex; align-items:flex-start; justify-content:space-between; gap:10px; }
.b6-analysis-head h3, .b6-wm-title h3 { margin:0; color:#eef2fa; font-size:14px; letter-spacing:.02em; }
.b6-analysis-head span { color:#8fa0b8; font-size:11px; white-space:nowrap; }
.b6-stage-analysis p { margin:9px 0 0; color:#dce8fb; font-size:14px; line-height:1.6; }
.b6-stage-analysis p b { display:inline-block; width:88px; color:#aebed4; font-size:11.5px; letter-spacing:.03em; }
.b6-stage-analysis .b6-inference { color:#fff; font-weight:600; }
.b6-stage-analysis .b6-inference b { color:#f1c86b; }
.b6-stage-analysis .b6-next b { color:#9cc4ff; }
.b6-inherit { margin-top:10px; padding-top:9px; border-top:1px dashed rgba(255,255,255,.16); color:#9fb0c8; font-size:11.5px; line-height:1.5; }
.b6-watchmatrix { padding:13px 14px; }
.b6-wm-title h3 + p { margin:4px 0 0; color:#9fb0c8; font-size:11.5px; line-height:1.45; }
.b6-wm-link { flex:none; color:#9cc4ff; font-size:12px; font-weight:700; white-space:nowrap; text-decoration:none; }
.b6-wm-link:hover { color:#d8e6ff; text-decoration:underline; }
.b6-wm-compact { display:grid; gap:8px; margin-top:10px; }
.b6-wm-row { min-width:0; padding:9px 10px; border-left:3px solid #f1c86b; border-radius:7px; background:rgba(255,255,255,.045); }
.b6-wm-head { display:flex; align-items:center; gap:7px; flex-wrap:wrap; }
.b6-wm-head span { color:#dce8fb; font-size:12px; }
.b6-wm-head b { color:#f1c86b; font-size:12.5px; }
.b6-wm-head em { margin-left:auto; color:#aebed4; font-size:11px; font-style:normal; }
.b6-wm-row p { margin:5px 0 0; color:#d3ddec; font-size:12px; line-height:1.48; }
.b6-wm-names { margin-top:6px; color:#9cc4ff; font-size:11.5px; line-height:1.45; }
.b6-watchmatrix-missing { display:flex; align-items:center; justify-content:space-between; gap:10px; color:#c5d1e5; font-size:12px; }
.b6-watchmatrix-missing h3 { margin:0; color:#eef2fa; font-size:14px; }
.b6-watchmatrix-missing p { margin:5px 0 0; line-height:1.5; }
.b6-watchmatrix-missing a { color:#9cc4ff; font-weight:700; white-space:nowrap; text-decoration:none; }
@media (max-width: 900px) { .b6-analysis-grid { grid-template-columns:1fr; } }
@media (max-width: 640px) { .b6-analysis-head, .b6-wm-title { flex-direction:column; gap:5px; } .b6-stage-analysis p b { width:auto; margin-right:7px; } }
@media (max-width: 640px) {
  .watch-grid { grid-template-columns: minmax(0,1fr); }
  .watch-card { padding: 14px; }
  .watch-summary-signals { padding-right: 0; }
  .watch-filter-tabs { margin-left: -2px; margin-right: -2px; }
}
@media (max-width: 380px) {
  .watch-signals { grid-template-columns: minmax(0,1fr); }
}

/* ------------------------------ 搜索结果 ------------------------------ */

.result-item { padding: 14px 16px; margin-bottom: 10px; }
.result-item h3 { margin: 0 0 4px; font-size: 15.5px; }
.result-item h3 mark, .snippet mark { padding: 0 2px; background: #fff3c4; border-radius: 2px; }
.snippet { margin: 6px 0 0; font-size: 13.5px; color: var(--text-2); }

kbd.hint {
  padding: 1px 5px;
  font-family: var(--mono);
  font-size: 11px;
  border: 1px solid var(--border);
  border-radius: 4px;
  background: var(--surface-2);
}

/* ------------------------------ 提示条 ------------------------------ */

.notice {
  display: flex;
  gap: 10px;
  padding: 12px 14px;
  margin-bottom: 20px;
  font-size: 13.5px;
  background: var(--warn-soft);
  border: 1px solid #f3e0c2;
  border-radius: var(--radius-sm);
  color: #7a4a10;
}
.notice.info { background: var(--accent-soft); border-color: #cfe0fb; color: var(--accent-text); }

.error-box {
  padding: 20px;
  background: #fdf0ef;
  border: 1px solid #f3cfcb;
  border-radius: var(--radius);
  color: #8c2f22;
}
.error-box code {
  padding: 2px 6px;
  font-family: var(--mono);
  font-size: 13px;
  background: #fff;
  border-radius: 4px;
}

/* ------------------------------ 响应式 ------------------------------ */

@media (max-width: 900px) {
  .sidebar {
    position: fixed;
    top: var(--topbar-h);
    left: 0;
    z-index: 30;
    box-shadow: 0 8px 24px rgba(16, 24, 40, .12);
  }
  /* 侧栏在窄屏为固定图标轨（52px），正文左留白必须让出该宽度，避免内容被轨道遮住 */
  .content {
    flex: 0 0 100%;
    width: 100%;
    max-width: 100%;
    min-width: 0;
    padding: 20px 16px 60px 64px;
    overflow-x: hidden;
  }
  /* 触屏窄屏不响应伪 hover；目录只在用户点 ☰ 后以覆盖式抽屉打开。 */
  .sidebar:hover:not(.ck-open) .side-panel {
    opacity: 0;
    visibility: hidden;
    transform: translateX(-8px);
  }
  .sidebar.ck-open .side-panel {
    position: fixed;
    top: var(--topbar-h);
    left: 0;
    width: min(82vw, var(--sidebar-w));
    height: calc(100vh - var(--topbar-h));
  }
  .brand-text { display: none; }
  .stat-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 560px) {
  .searchbox kbd { display: none; }
  .stat-grid { grid-template-columns: 1fr; }
}

/* ==========================================================================
   首页决策驾驶舱
   ========================================================================== */

.cockpit {
  padding: 20px;
  margin-bottom: 24px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 14px;
  box-shadow: var(--shadow);
}

.cockpit-head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 16px;
}

.cockpit-title {
  margin: 0;
  font-size: 15px;
  font-weight: 700;
  letter-spacing: -.01em;
}

.cockpit-legend {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
  font-size: 12.5px;
  color: var(--text-2);
}

.cockpit-legend .value { font-weight: 650; color: var(--text); }

.cap.verified { color: var(--ok); }
.cap.infer { color: var(--text-3); }

.cockpit-empty {
  padding: 14px;
  margin-bottom: 14px;
  font-size: 13.5px;
  color: var(--accent-text);
  background: var(--accent-soft);
  border: 1px solid #cfe0fb;
  border-radius: var(--radius-sm);
}

.cockpit-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
}

.cockpit-cell {
  padding: 12px 14px;
  background: var(--surface-2);
  border-radius: 10px;
}

.c-label { font-size: 12px; color: var(--text-3); }
.c-value { font-size: 21px; font-weight: 700; letter-spacing: -.02em; margin: 2px 0; }
.c-value.small { font-size: 15px; line-height: 1.4; }
.c-value small { font-size: 13px; font-weight: 500; color: var(--text-3); margin-left: 2px; }

.c-bar {
  height: 6px;
  margin: 6px 0 4px;
  background: var(--border);
  border-radius: 999px;
  overflow: hidden;
}
.c-bar i {
  display: block;
  height: 100%;
  border-radius: 999px;
  background: linear-gradient(90deg, var(--accent), #6b9af2);
}

.c-hint { font-size: 12px; color: var(--text-3); }

/* ------------------------------ 四张决策卡 ------------------------------ */

.deck-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 14px;
  margin-bottom: 28px;
}

.deck-card {
  display: flex;
  flex-direction: column;
  min-height: 212px;
  padding: 16px 16px 12px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
}

.deck-title {
  margin: 0 0 8px;
  font-size: 15px;
  font-weight: 700;
  letter-spacing: -.01em;
}

.deck-note { font-size: 12.5px; color: var(--text-3); margin-bottom: 10px; }

.card-foot {
  margin-top: auto;
  padding-top: 8px;
  font-size: 13px;
}

.src-link { color: var(--accent-text); }
.src-link:hover { text-decoration: underline; }

.fact-list { display: flex; flex-direction: column; gap: 8px; }

.fact-item {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  padding: 8px 10px;
  background: var(--surface-2);
  border-radius: 8px;
}
.fact-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.fact-topic { font-size: 12px; color: var(--text-3); }
.fact-title { font-size: 13px; color: var(--text); line-height: 1.45; }
.fact-item .cap { font-size: 12px; flex-shrink: 0; padding-top: 2px; }

.radar-row { display: flex; flex-wrap: wrap; gap: 6px; margin: 4px 0 8px; }

.radar-chip {
  padding: 3px 10px;
  font-size: 13px;
  color: var(--text-2);
  background: var(--surface-2);
  border: 1px solid var(--border);
  border-radius: 999px;
}
.radar-chip.strong {
  color: var(--accent-text);
  background: var(--accent-soft);
  border-color: #cfe0fb;
  font-weight: 600;
}

.gap-note {
  margin-top: 8px;
  font-size: 12.5px;
  color: var(--warn);
}

.etf-list { display: flex; flex-direction: column; gap: 8px; }

.etf-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 10px;
  padding: 8px 10px;
  background: var(--surface-2);
  border-radius: 8px;
  font-size: 13px;
}
.etf-name { font-weight: 650; color: var(--text); }
.etf-tag { flex: 1; color: var(--text-2); min-width: 120px; }

.risk-list { display: flex; flex-direction: column; gap: 8px; }

.risk-item {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  padding: 8px 10px;
  border-radius: 8px;
  font-size: 13px;
  background: var(--surface-2);
}
.risk-item .risk-tag {
  flex-shrink: 0;
  padding: 1px 7px;
  font-size: 11.5px;
  border-radius: 999px;
  background: var(--border);
  color: var(--text-2);
}
.risk-item.warn { background: var(--warn-soft); border: 1px solid #f3e0c2; }
.risk-item.warn .risk-tag { background: var(--warn); color: #fff; }
.risk-item.todo .risk-tag { background: var(--accent); color: #fff; }
.risk-item.muted { background: var(--surface-2); }
.risk-text { line-height: 1.5; }

/* ------------------------------ 今日研究流 ------------------------------ */

.flow-section { margin-top: 6px; }

.flow-group { margin-bottom: 18px; }

.flow-group-title {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 10px;
  font-size: 12.5px;
  font-weight: 700;
  color: var(--text-3);
  letter-spacing: .02em;
}

.flow-row {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 12px 14px;
  margin-bottom: 8px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 10px;
}

.flow-row.state-missing {
  border-style: dashed;
  background: var(--surface-2);
}

.flow-dot {
  flex: 0 0 10px;
  width: 10px;
  height: 10px;
  margin-top: 5px;
  border-radius: 50%;
  background: var(--ok);
}
.flow-row.state-missing .flow-dot { background: var(--border-strong); }

.flow-main { flex: 1; min-width: 0; }

.flow-line1 {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
}

.flow-label { font-size: 14px; font-weight: 700; color: var(--text); }
.flow-date { font-size: 12.5px; color: var(--text-3); font-family: var(--mono); }

.flow-quality {
  padding: 1px 8px;
  font-size: 11.5px;
  border-radius: 999px;
}
.flow-quality.ok { color: var(--ok); background: #e7f6ef; }

.flow-cls {
  margin-left: auto;
  font-size: 11.5px;
  color: var(--text-3);
  border: 1px solid var(--border);
  border-radius: 999px;
  padding: 0 7px;
}

.flow-summary { margin-top: 4px; font-size: 13px; color: var(--text-2); line-height: 1.5; }

.flow-link { flex-shrink: 0; font-size: 13px; }

/* ------------------------------ 本周重点 ------------------------------ */

.week-empty { padding: 16px; }

/* ------------------------------ 常驻边界提示 ------------------------------ */

.boundary-note {
  padding: 10px 14px;
  margin: -6px 0 20px;
  font-size: 12.5px;
  color: var(--text-3);
  background: var(--surface-2);
  border: 1px dashed var(--border-strong);
  border-radius: var(--radius-sm);
  line-height: 1.5;
}

/* ------------------------------ 研究推断块（来自每日分析） ------------------------------ */

.infer-block {
  margin-top: 10px;
  padding-top: 8px;
  border-top: 1px dashed var(--border);
}

.infer-title {
  font-size: 11.5px;
  font-weight: 700;
  color: var(--text-3);
  margin-bottom: 6px;
  letter-spacing: .02em;
}

.infer-item {
  font-size: 12.5px;
  color: var(--text-2);
  line-height: 1.5;
  padding: 2px 0;
}
.infer-item.muted { color: var(--text-3); }

/* ------------------------------ 研究流状态徽标 ------------------------------ */

.flow-status {
  padding: 1px 8px;
  font-size: 11.5px;
  border-radius: 999px;
  font-weight: 600;
}
.flow-status.today { color: var(--ok); background: #e7f6ef; }
.flow-status.history { color: var(--text-3); background: var(--surface-2); border: 1px solid var(--border); }
.flow-status.mismatch { color: var(--warn); background: var(--warn-soft); }
.flow-status.missing { color: var(--text-3); background: var(--surface-2); border: 1px dashed var(--border-strong); }

.flow-quality.warn { color: var(--warn); background: var(--warn-soft); }

/* 历史/日期不一致：弱化整行 */
.flow-row.state-stale { opacity: .62; }
.flow-row.state-stale .flow-dot { background: var(--border-strong); }

/* ============================ 今日指挥舱（三栏） ============================
   左：持仓态势 · 中：今日战略（品牌色聚焦，盘中/盘后双态）· 右：资金去向雷达。
   数据全部来自管线产出（每日分析 / ETF跟踪 / 每日总结 / holdings），
   空缺环节诚实空态，绝不用示意数据伪装。 */

/* 徽章（活跃假设区与指挥舱共用） */
.signal-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 2px 9px;
  margin-left: 2px;
  font-size: 12px;
  font-weight: 600;
  border-radius: 999px;
  border: 1px solid currentColor;
  vertical-align: middle;
  white-space: nowrap;
}
.signal-badge.riskoff { color: #b13a2f; background: rgba(177,58,47,.07); border-color: rgba(177,58,47,.4); }
.signal-badge.warn    { color: #a05a12; background: rgba(196,118,30,.08); border-color: rgba(196,118,30,.4); }
.signal-badge.verify  { color: #5b6f86; background: rgba(91,111,134,.08); border-color: rgba(91,111,134,.28); }
.signal-badge.infer   { color: var(--accent-text); background: var(--accent-soft); border-color: #cfe0fb; }

/* ------------------------------ 指挥舱区头 ------------------------------ */

.ck-wrap { margin-bottom: 30px; }

.ck-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 14px;
  margin-bottom: 14px;
}

.ck-title {
  margin: 0;
  font-size: 24px;
  font-weight: 700;
  letter-spacing: -.01em;
}

.ck-sub { margin: 4px 0 0; color: var(--text-2); font-size: 13px; }

.ck-mode { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; }

.ck-mode-label { font-size: 12px; color: var(--text-3); }

.ck-seg {
  display: flex;
  padding: 3px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 999px;
  box-shadow: var(--shadow);
}

.ck-seg-btn {
  padding: 4px 14px;
  font-size: 13px;
  font-family: inherit;
  color: var(--text-2);
  background: none;
  border: 0;
  border-radius: 999px;
  cursor: pointer;
  white-space: nowrap;
}

.ck-seg-btn:hover { color: var(--text); }

.ck-seg-btn.is-on {
  color: #fff;
  background: var(--accent);
  font-weight: 600;
}

.ck-mode-hint { font-size: 12px; color: var(--text-3); }

/* ------------------------------ 三栏网格 ------------------------------ */

.ck-grid {
  display: grid;
  grid-template-columns: .95fr 1.35fr .95fr;
  gap: 14px;
  align-items: stretch;
}

.ck-col {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 16px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
}

.ck-col:hover { border-color: var(--border-strong); }

.ck-center {
  border: 1.5px solid var(--accent);
  gap: 12px;
}

.ck-col-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  flex-wrap: wrap;
}

.ck-col-title {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0;
  font-size: 16px;
  font-weight: 700;
}

.ck-col-title svg { color: var(--text-3); flex: none; }
.ck-center .ck-col-title svg { color: var(--accent); }

.ck-col-sub { margin: 0; font-size: 12.5px; color: var(--text-3); }

/* ------------------------------ 通用行 / 备注 ------------------------------ */

.ck-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 8px 0;
  font-size: 14px;
  border-top: 1px solid var(--border);
}

.ck-row:first-of-type { border-top: 0; padding-top: 2px; }

.ck-row .ck-name { min-width: 0; }
.ck-row .ck-name small { display: block; font-size: 11.5px; color: var(--text-3); font-family: var(--mono); }

.ck-row .ck-val {
  flex: none;
  font-family: var(--mono);
  font-size: 13px;
  color: var(--text-2);
  text-align: right;
  white-space: nowrap;
}

.ck-pct-up { color: var(--up); font-weight: 600; }
.ck-pct-down { color: var(--down); font-weight: 600; }

.ck-note {
  margin-top: auto;
  padding: 9px 11px;
  font-size: 12.5px;
  line-height: 1.6;
  color: var(--text-2);
  background: var(--surface-2);
  border-radius: var(--radius-sm);
}

/* ------------------------------ 中栏 · 今日战略 ------------------------------ */

.ck-verify {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 4px;
  padding: 9px 11px;
  font-size: 13px;
  color: var(--text-2);
  background: var(--surface-2);
  border-radius: var(--radius-sm);
}

.ck-verify b { color: var(--text); font-weight: 600; }
.ck-verify .ck-judge { color: var(--ok); font-weight: 600; }

.ck-live,
.ck-after { display: flex; flex-direction: column; gap: 12px; }

.ck-wrap[data-mode="after"] .ck-live { display: none; }
.ck-wrap:not([data-mode="after"]) .ck-after { display: none; }

.ck-badge-live { display: inline-block; }
.ck-badge-after { display: none; }
.ck-wrap[data-mode="after"] .ck-badge-live { display: none; }
.ck-wrap[data-mode="after"] .ck-badge-after { display: inline-block; }

/* --------- 交易日双阶段：相位块（盘前作战卡 / 盘后实盘）--------- */
.ck-phase { display: flex; flex-direction: column; gap: 12px; }

.ck-phase-head {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  padding: 10px 12px;
  background: var(--surface-2);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
}

.ck-phase-basis { font-size: 12px; color: var(--text-2); }

.ck-phase-sec { display: flex; flex-direction: column; gap: 6px; }

.ck-phase-list {
  margin: 0;
  padding-left: 18px;
  display: flex;
  flex-direction: column;
  gap: 5px;
}

.ck-phase-list li { font-size: 13px; color: var(--text-2); line-height: 1.55; }

/* 相位胶囊：盘前 / 盘中 / 等待 / 盘后，四种颜色互不混淆 */
.ck-phase-chip {
  display: inline-flex;
  align-items: center;
  padding: 2px 10px;
  margin-left: 2px;
  font-size: 12px;
  font-weight: 600;
  border-radius: 999px;
  border: 1px solid currentColor;
  white-space: nowrap;
}
.ck-phase-pre      { color: #1f6feb; background: rgba(31,111,235,.08); border-color: rgba(31,111,235,.35); }
.ck-phase-live     { color: #1f6feb; background: rgba(31,111,235,.08); border-color: rgba(31,111,235,.35); }
.ck-phase-awaiting { color: #a05a12; background: rgba(196,118,30,.10); border-color: rgba(196,118,30,.42); }
.ck-phase-post     { color: #1a7f52; background: rgba(26,127,82,.08); border-color: rgba(26,127,82,.35); }

/* --------- 等待态：15:00 后至当日盘后数据就绪前 --------- */
.ck-waiting {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 16px 16px 14px;
  background: var(--warn-soft);
  border: 1px solid #f3e0c2;
  border-radius: var(--radius);
}

.ck-waiting-head { display: flex; align-items: center; gap: 9px; }

.ck-waiting-dot {
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: #c4761e;
  box-shadow: 0 0 0 3px rgba(196,118,30,.16);
  flex: none;
}

.ck-waiting-title { font-size: 16px; font-weight: 700; color: #8a4f10; letter-spacing: -.01em; }
.ck-waiting-body { font-size: 13px; color: var(--text-2); line-height: 1.65; margin: 0; }
.ck-waiting-body b { color: var(--text); font-weight: 600; }

.ck-waiting-reason {
  font-size: 12.5px;
  color: #8a4f10;
  font-family: var(--mono);
  padding: 6px 9px;
  background: rgba(196,118,30,.08);
  border-radius: var(--radius-sm);
}

.ck-waiting-list {
  margin: 0;
  padding-left: 18px;
  display: flex;
  flex-direction: column;
  gap: 5px;
}
.ck-waiting-list li { font-size: 12.5px; color: var(--text-2); }
.ck-waiting-list code { font-size: 11.5px; }

.ck-waiting-foot { font-size: 12.5px; color: var(--text-2); }

.ck-seg-btn.is-wait { color: #a05a12; border-color: rgba(196,118,30,.5); }
.ck-status-value.warn { color: #a05a12; font-weight: 600; }

/* 健康区：环节名后的相位小标 */
.health-phase {
  display: inline-block;
  margin-left: 6px;
  font-size: 11px;
  font-weight: 500;
  color: var(--text-3);
}

.ck-main-atk {
  display: flex;
  flex-direction: column;
  gap: 3px;
  padding: 12px 14px;
  background: var(--accent-soft);
  border: 1px solid #cfe0fb;
  border-radius: var(--radius);
}

.ck-main-atk .ck-k { font-size: 12px; color: var(--accent-text); }
.ck-main-atk .ck-n { font-size: 19px; font-weight: 700; letter-spacing: -.01em; }
.ck-main-atk .ck-k2 { font-size: 12.5px; color: var(--text-2); }

.ck-check { display: flex; flex-direction: column; gap: 8px; }

.ck-check-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 9px 11px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  transition: border-color .12s;
}

.ck-check-item:hover { border-color: var(--border-strong); }

.ck-box {
  flex: none;
  width: 15px;
  height: 15px;
  border: 1.5px solid var(--border-strong);
  border-radius: 4px;
}

.ck-check-item .ck-txt { font-size: 14px; min-width: 0; }
.ck-check-item .ck-txt small { display: block; font-size: 12px; color: var(--text-3); }

.ck-decide {
  flex: none;
  margin-left: auto;
  padding: 1px 9px;
  font-size: 12px;
  border-radius: 999px;
  white-space: nowrap;
}

.ck-decide-do {
  color: var(--accent-text);
  background: var(--accent-soft);
  border: 1px solid #cfe0fb;
  font-weight: 600;
}

.ck-decide-watch,
.ck-decide-hold {
  color: var(--text-2);
  background: var(--surface-2);
  border: 1px solid var(--border);
}

.ck-t0 {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 11px 13px;
  border: 1px dashed var(--border-strong);
  border-radius: var(--radius);
}

.ck-t0-head {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  font-weight: 700;
}

.ck-t0-body { font-size: 13px; line-height: 1.7; color: var(--text-2); }
.ck-t0-body b { color: var(--text); font-weight: 600; }

.ck-foot {
  padding-top: 10px;
  font-size: 12px;
  color: var(--text-3);
  border-top: 1px solid var(--border);
}

/* 盘后态 */
.ck-sub-title {
  margin: 2px 0 -4px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .06em;
  color: var(--text-3);
}

.ck-row .ck-mark {
  flex: none;
  font-size: 12px;
  font-weight: 600;
  color: var(--ok);
  white-space: nowrap;
}

.ck-row .ck-mark-pending {
  color: var(--warn);
}

/* ------------------------------ 右栏 · 资金雷达 ------------------------------ */

.ck-flow-group {
  display: flex;
  flex-direction: column;
  gap: 9px;
}

.ck-flow-label { font-size: 11px; font-weight: 700; letter-spacing: .06em; color: var(--text-3); }

.ck-flow-row { display: flex; flex-direction: column; gap: 3px; }

.ck-flow-top {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px;
  font-size: 13px;
}

.ck-flow-top .ck-amt { font-family: var(--mono); font-size: 12.5px; font-weight: 600; }

.ck-bar-track {
  height: 5px;
  background: var(--surface-2);
  border-radius: 999px;
  overflow: hidden;
}

.ck-bar { height: 100%; border-radius: 999px; }

.ck-bar-out { background: var(--down); }
.ck-bar-in { background: var(--up); }

.ck-flow-divider {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 2px 0;
  font-size: 12px;
  color: var(--text-3);
}

.ck-flow-divider::before,
.ck-flow-divider::after {
  content: "";
  flex: 1;
  border-top: 1px dashed var(--border-strong);
}

/* ---------------------------- 指挥舱响应式 ---------------------------- */
@media (max-width: 1080px) {
  .ck-grid { grid-template-columns: 1fr; }
  .ck-center { order: -1; }
}

/* ------------------------------ 驾驶舱响应式 ------------------------------ */

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

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

@media (max-width: 640px) {
  .cockpit-grid { grid-template-columns: 1fr; }
  .deck-grid { grid-template-columns: 1fr; }
  .deck-card { min-height: 0; }
}

/* ==========================================================================
   可信度栏 · 流水线健康 · 活跃假设 · 观察池类型筛选
   （第二阶段 · 数据可信度与决策闭环）
   风险信息用低饱和红/琥珀，待验证用蓝灰，克制不争抢核心信号。
   ========================================================================== */

/* ------------------------------ 状态栏（细条 · 替代原三张大卡） ------------------------------ */

.ck-status {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 4px 0;
  margin-bottom: 16px;
  padding: 7px 14px;
  font-size: 12.5px;
  color: var(--text-2);
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
}

.ck-status-item {
  display: inline-flex;
  align-items: baseline;
  gap: 6px;
  min-width: 0;
}

.ck-status-label {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .05em;
  color: var(--text-3);
  white-space: nowrap;
}

.ck-status-value {
  font-size: 12.5px;
  font-weight: 600;
  color: var(--text);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.ck-status-note { font-size: 11.5px; color: var(--text-3); white-space: nowrap; }

.ck-status-item a { font-size: 12px; white-space: nowrap; }

.ck-status-dot {
  flex: none;
  width: 5px;
  height: 5px;
  background: var(--ok);
  border-radius: 999px;
  align-self: center;
}

.ck-status-dot.warn { background: var(--warn); }
.ck-status-dot.bad { background: #b13a2f; }

.ck-status-sep {
  flex: none;
  width: 1px;
  height: 12px;
  margin: 0 12px;
  background: var(--border);
}

/* ------------------------------ 流水线健康区 ------------------------------ */

.health-sec { margin-bottom: 26px; }

.health-list {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 8px;
}

.health-row {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  padding: 9px 12px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 10px;
  font-size: 13.5px;
}

.health-dot {
  flex: 0 0 9px;
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: var(--border-strong);
}
.health-row.done .health-dot { background: var(--ok); }
.health-row.missing .health-dot { background: #b45309; }
.health-row.unreadable .health-dot { background: #b13a2f; }

.health-label { font-weight: 650; color: var(--text); }

.health-status {
  padding: 1px 8px;
  font-size: 11.5px;
  font-weight: 600;
  border-radius: 999px;
  white-space: nowrap;
}
.health-status.done { color: var(--ok); background: #e7f6ef; }
.health-status.missing { color: #a05a12; background: #fdf3e3; border: 1px dashed #e4c892; }
.health-status.unreadable { color: #8f2b22; background: #f8e4e2; border: 1px solid #ecc9c4; }

.health-note { color: var(--text-3); font-size: 12px; }

.health-link { margin-left: auto; font-size: 12.5px; white-space: nowrap; }
.health-path { font-family: var(--mono); font-size: 11px; color: var(--text-3); }

.health-banner {
  padding: 10px 14px;
  margin-bottom: 12px;
  font-size: 13px;
  line-height: 1.55;
  color: #7a4a10;
  background: var(--warn-soft);
  border: 1px solid #f3e0c2;
  border-radius: 8px;
}

.health-missing {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin-top: 10px;
  padding: 12px 14px;
  font-size: 13.5px;
  line-height: 1.55;
  color: #6e3a32;
  background: linear-gradient(135deg, rgba(177,58,47,.06) 0%, rgba(196,118,30,.10) 100%);
  border: 1px solid rgba(177,58,47,.22);
  border-radius: 10px;
}

.health-missing-tag {
  flex-shrink: 0;
  padding: 1px 9px;
  font-size: 11.5px;
  font-weight: 700;
  color: #fff;
  background: #8f2b22;
  border-radius: 999px;
}

@media (max-width: 720px) {
  .health-list { grid-template-columns: 1fr; }
}

/* ------------------------------ 活跃研究假设 ------------------------------ */

.hyp-sec { margin-bottom: 26px; }

.hyp-empty {
  padding: 18px;
  color: var(--text-2);
  font-size: 13.5px;
  background: var(--surface);
  border: 1px dashed var(--border-strong);
  border-radius: 10px;
}

.hyp-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 12px;
}

.hyp-card {
  display: flex;
  flex-direction: column;
  min-width: 0;
  padding: 14px 16px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 12px;
  box-shadow: var(--shadow);
}

.hyp-head {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 10px;
}

.hyp-id {
  padding: 1px 8px;
  font-size: 11.5px;
  font-weight: 700;
  color: #5b6f86;
  background: rgba(91,111,134,.1);
  border: 1px solid rgba(91,111,134,.28);
  border-radius: 999px;
  font-family: var(--mono);
}

.hyp-title {
  font-size: 14.5px;
  font-weight: 650;
  color: var(--text);
  line-height: 1.4;
  flex: 1 1 220px;
  min-width: 0;
}

.hyp-window {
  padding: 1px 8px;
  font-size: 11px;
  color: #5b6f86;
  background: rgba(91,111,134,.08);
  border-radius: 999px;
  white-space: nowrap;
}

.hyp-body {
  display: flex;
  flex-direction: column;
  gap: 7px;
  padding-top: 4px;
}

.hyp-field {
  display: flex;
  gap: 8px;
  font-size: 13px;
  line-height: 1.55;
  color: var(--text-2);
}

.hyp-k {
  flex: 0 0 52px;
  font-size: 11.5px;
  font-weight: 650;
  color: var(--text-3);
  padding-top: 1px;
  font-variant-numeric: tabular-nums;
}

.hyp-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-top: auto;
  padding-top: 10px;
  border-top: 1px dashed var(--border);
  font-size: 12.5px;
}

@media (max-width: 900px) {
  .hyp-grid { grid-template-columns: 1fr; }
}

/* ------------------------------ 观察池类型筛选 ------------------------------ */

.filter-seg {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 6px;
}

.filter-seg button {
  padding: 5px 14px;
  font: inherit;
  font-size: 13.5px;
  color: var(--text-2);
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 999px;
  cursor: pointer;
  transition: all .12s;
}
.filter-seg button:hover { border-color: var(--border-strong); }
.filter-seg button.active {
  color: #fff;
  background: var(--accent);
  border-color: var(--accent);
  font-weight: 600;
}

/* ==========================================================================
   午间盘势复核决策区块（首页 · 与市场状态 / 作战卡 / ETF观察并列）
   亮色 Apple 风格决策驾驶舱：状态一律「文字 + 颜色」双通道，紧凑可扫读，手机可用
   ========================================================================== */
.midday-sec {
  margin-bottom: 18px;
  padding: 14px 16px 12px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
}
.midday-sec.midday-wait {
  background: var(--surface-2);
}
.midday-head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 6px 12px;
  margin-bottom: 8px;
}
.midday-title {
  margin: 0;
  font-size: 14px;
  font-weight: 700;
}
.midday-title::before {
  content: "☀";
  display: inline-block;
  margin-right: 7px;
  color: var(--accent);
}
.mid-day {
  font-size: 13px;
  font-weight: 600;
  color: var(--text-2);
  font-variant-numeric: tabular-nums;
}
.midday-meta { font-size: 11.5px; color: var(--text-3); }
.midday-cutoff { font-size: 11.5px; color: var(--text-3); }
.midday-head .src-link { font-size: 12px; white-space: nowrap; }

.mid-state {
  display: inline-block;
  padding: 0 8px;
  font-size: 11.5px;
  font-weight: 600;
  line-height: 1.8;
  border-radius: 999px;
  border: 1px solid transparent;
}
.mid-state-on { color: var(--ok); background: rgba(26,127,90,.08); border-color: rgba(26,127,90,.35); }
.mid-state-wait { color: var(--warn); background: var(--warn-soft); border-color: rgba(180,83,9,.3); }

.mid-pre-updated {
  font-size: 11.5px;
  color: var(--accent-text);
  white-space: nowrap;
}
.mid-pre-updated .src-link { font-size: inherit; }

.midday-body { display: flex; flex-direction: column; gap: 10px; }
.mid-history { font-size: 13px; line-height: 1.6; color: var(--text-2); }
.mid-history b { color: var(--text); }

.mid-direction {
  display: flex;
  align-items: flex-start;
  gap: 8px;
}
.mid-tonebadge {
  flex: none;
  padding: 2px 9px;
  font-size: 12px;
  font-weight: 700;
  line-height: 1.7;
  border-radius: 6px;
  border: 1px solid transparent;
}
.mid-tone-up    { color: var(--up);   background: rgba(209,59,52,.08);  border-color: rgba(209,59,52,.35); }
.mid-tone-down  { color: var(--down); background: rgba(18,138,91,.08);  border-color: rgba(18,138,91,.35); }
.mid-tone-split { color: var(--warn); background: var(--warn-soft);     border-color: rgba(180,83,9,.35); }
.mid-tone-unknown { color: var(--text-2); background: var(--surface-2); border-color: var(--border-strong); }
.mid-direction-txt { font-size: 12.5px; line-height: 1.55; color: var(--text-2); }
.midnote { font-size: 12.5px; color: var(--text-3); }

.mid-stats {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
}
.mid-stat {
  min-width: 0;
  padding: 6px 10px;
  background: var(--surface-2);
  border-radius: 8px;
}
.mid-stat-k {
  display: block;
  font-size: 11px;
  font-weight: 600;
  color: var(--text-3);
  margin-bottom: 2px;
}
.mid-stat-v {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  font-size: 12px;
  line-height: 1.45;
  color: var(--text);
  word-break: break-all;
}

.mid-field { display: flex; flex-direction: column; gap: 6px; }
.mid-field-k { font-size: 12px; font-weight: 700; color: var(--text-2); }
.mid-field-hint { font-weight: 400; margin-left: 6px; color: var(--text-3); }

.mid-disp { display: flex; flex-direction: column; gap: 6px; }
.mid-disp-row {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 6px 10px;
  padding: 5px 9px;
  background: var(--surface-2);
  border-radius: 8px;
}
.mid-disp-name { font-size: 12px; font-weight: 600; color: var(--text); min-width: 0; }
.mid-disp-tag {
  padding: 0 8px;
  font-size: 11.5px;
  font-weight: 700;
  line-height: 1.7;
  border-radius: 999px;
  border: 1px solid transparent;
  white-space: nowrap;
}
.mid-disp-tag.disp-cancel { color: #b13a2f; background: rgba(177,58,47,.08); border-color: rgba(177,58,47,.4); }
.mid-disp-tag.disp-alert  { color: #a05a12; background: rgba(196,118,30,.08); border-color: rgba(196,118,30,.4); }
.mid-disp-tag.disp-partial{ color: var(--accent-text); background: var(--accent-soft); border-color: #cfe0fb; }
.mid-disp-tag.disp-keep   { color: #5b6f86; background: rgba(91,111,134,.08); border-color: rgba(91,111,134,.28); }
.mid-disp-basis { font-size: 11.5px; line-height: 1.5; color: var(--text-3); flex-basis: 100%; margin-left: 0; }

.mid-risks { margin: 0; padding-left: 17px; display: flex; flex-direction: column; gap: 4px; }
.mid-risks li { font-size: 12px; line-height: 1.5; color: var(--text-2); }

.mid-foot {
  padding-top: 8px;
  border-top: 1px dashed var(--border);
  font-size: 11.5px;
  line-height: 1.6;
  color: var(--text-3);
}
.mid-foot .src-link { font-size: inherit; }

@media (max-width: 640px) {
  .mid-stats { grid-template-columns: 1fr; }
  .mid-direction { flex-direction: column; gap: 4px; }
  .midday-head { gap: 5px 8px; }
}

/* ==========================================================================
   V4 首页板型：搜索下拉 / 相位链 / 等待横幅 / 决策区 / 持仓×信号 / 研究闭环 / 折叠区
   ========================================================================== */

/* ---- 搜索下拉（真实 searchDocs 结果） ---- */
.search-drop {
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  right: 0;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: 0 8px 24px rgba(16, 24, 40, .14);
  overflow: hidden;
  z-index: 60;
}
.search-drop[hidden] { display: none; }
.search-drop .sd-item {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  align-items: center;
  padding: 8px 12px;
  border-top: 1px solid var(--surface-2);
  font-size: 13px;
  color: var(--text);
}
.search-drop .sd-item:first-child { border-top: 0; }
.search-drop a.sd-item:hover { background: var(--accent-soft); text-decoration: none; }
.search-drop .sd-item span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.search-drop .sd-k { flex: 0 0 auto; font-size: 11px; color: var(--text-3); }
.search-drop .sd-none { color: var(--text-3); }
.search-drop .sd-foot {
  padding: 6px 12px;
  background: var(--surface-2);
  font-size: 11.5px;
  color: var(--text-3);
}

/* ---- 相位链（早间链 + 盘后链） ---- */
.phase-strip {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 7px 12px;
  margin-bottom: 12px;
  box-shadow: var(--shadow);
}
.phase-strip .grp { display: flex; align-items: center; gap: 5px; flex-wrap: wrap; }
.phase-strip .grp-label { font-size: 11px; color: var(--text-3); font-weight: 700; margin-right: 2px; white-space: nowrap; flex: 0 0 auto; }
.phase-strip .sep2 { color: var(--border-strong); margin: 0 4px; }
.pnode {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  flex: 0 0 auto;
  white-space: nowrap;
  font-size: 12px;
  border-radius: 999px;
  padding: 2.5px 9px;
  background: var(--surface-2);
  color: var(--text-2);
  border: 1px solid transparent;
}
.pnode i { width: 7px; height: 7px; border-radius: 50%; background: var(--border-strong); flex: 0 0 auto; }
.pnode .tm { font-family: var(--mono); color: var(--text-3); font-size: 10.5px; }
a.pnode:hover { text-decoration: none; border-color: var(--border-strong); }
.pnode.done { color: var(--text); }
.pnode.done i { background: var(--ok); }
.pnode.miss { color: var(--danger); border-color: rgba(192, 57, 43, .35); }
.pnode.miss i { background: var(--danger); }
.pnode.active { border-color: var(--warn); background: var(--warn-soft); color: var(--warn); }
.pnode.active i { background: var(--warn); animation: ros-pulse 1.2s infinite; }
@keyframes ros-pulse { 50% { opacity: .35; } }
.pnode.skip { opacity: .55; }
.pnote { font-size: 11.5px; color: var(--text-3); margin-left: auto; }

/* ---- 等待收盘横幅（相位 awaiting） ---- */
.waitbox {
  background: var(--warn-soft);
  border: 1px solid #ecd9b0;
  border-left: 4px solid var(--warn);
  border-radius: var(--radius);
  padding: 10px 14px;
  margin-bottom: 12px;
  font-size: 13px;
  color: var(--text-2);
  line-height: 1.65;
}
.waitbox b { color: var(--warn); }
.waitbox .chain {
  font-family: var(--mono);
  font-size: 12px;
  color: var(--text);
  background: rgba(255, 255, 255, .7);
  border-radius: 6px;
  padding: 4px 10px;
  display: inline-block;
  margin-top: 4px;
}

/* ---- 区块带标题 ---- */
.band {
  display: flex;
  align-items: baseline;
  gap: 8px;
  flex-wrap: wrap;
  margin: 22px 2px 10px;
}
.band .bar { width: 3px; height: 14px; background: var(--accent); border-radius: 2px; align-self: center; }
.band .bar-dim { background: var(--border-strong); }
.band h2 { font-size: 14px; margin: 0; font-weight: 700; }
.band .meta { color: var(--text-3); font-size: 12px; }
.band .right { margin-left: auto; font-size: 12.5px; }

/* ---- 决策区 ---- */
.concl {
  background: linear-gradient(90deg, #eef4ff, #f7f9fd);
  border: 1px solid #d7e3fb;
  border-left: 4px solid var(--accent);
  border-radius: var(--radius);
  padding: 10px 14px;
  margin-bottom: 10px;
  display: flex;
  gap: 10px;
  align-items: baseline;
  flex-wrap: wrap;
}
.concl .k { font-size: 11.5px; font-weight: 800; color: var(--accent-text); white-space: nowrap; }
.concl .t { font-size: 14px; font-weight: 650; line-height: 1.55; min-width: 0; overflow-wrap: anywhere; }
.tag {
  display: inline-block;
  font-size: 10.5px;
  font-weight: 700;
  border-radius: 4px;
  padding: 0 6px;
  vertical-align: 1px;
}
.tag-i { background: var(--warn-soft); color: var(--warn); }

.dec-grid { display: grid; grid-template-columns: 1fr 1fr 300px; gap: 10px; }
.dec-grid-2 { display: grid; grid-template-columns: 1fr 340px; gap: 10px; margin-top: 10px; }
.dec-grid > .card, .dec-grid-2 > .card { min-width: 0; }

.v4-card-h {
  padding: 9px 12px 7px;
  border-bottom: 1px solid var(--border);
  display: flex;
  align-items: baseline;
  gap: 8px;
}
.v4-card-h h3 { margin: 0; font-size: 13px; font-weight: 700; min-width: 0; }
.v4-card-h .meta { margin-left: auto; color: var(--text-3); font-size: 11px; text-align: right; }
.v4-card-h h3.v4-up { color: var(--up); }
.v4-card-h h3.v4-down { color: var(--down); }
.v4-card-foot {
  padding: 7px 12px 9px;
  border-top: 1px dashed var(--border);
  font-size: 11.5px;
  line-height: 1.6;
  color: var(--text-3);
}

/* V4 卡片正文统一间距规范：与 .v4-card-h / .v4-card-foot 的 12px 水平基线对齐，
   所有卡片正文（指数口径/关注清单/资金雷达/假设/明日关注/管线健康等）复用同一变量，
   移动端（≤640px）统一收窄为 10px，见文件末尾媒体查询。 */
.card-b {
  --v4-body-x: 12px;
  padding: 9px var(--v4-body-x) 11px;
  min-width: 0;
}

.dir-list {
  --v4-body-x: 12px;
  display: flex;
  flex-direction: column;
  padding: 2px var(--v4-body-x) 6px;
}
.dir-item {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 2px 10px;
  padding: 6px 0;
  border-top: 1px dashed var(--border);
}
.dir-item:first-child { border-top: 0; }
.dir-item .n { font-weight: 650; font-size: 13px; min-width: 0; }
.dir-item .v { font-family: var(--mono); font-size: 12.5px; font-weight: 600; text-align: right; white-space: nowrap; }
.dir-item .v.up { color: var(--up); }
.dir-item .v.down { color: var(--down); }
.dir-item .s { grid-column: 1 / -1; color: var(--text-3); font-size: 11.5px; line-height: 1.5; }
.tg { display: inline-block; font-size: 10px; font-weight: 700; border-radius: 3px; padding: 0 4px; margin-right: 4px; vertical-align: 1px; }
.tg-f { background: var(--accent-soft); color: var(--accent-text); }

.idx-table { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.idx-table td { padding: 4.5px 2px; border-top: 1px dashed var(--border); }
.idx-table tr:first-child td { border-top: 0; }
.idx-table .l { color: var(--text-2); }
.idx-table .r { text-align: right; font-family: var(--mono); font-weight: 600; }
.idx-table .r.up { color: var(--up); }
.idx-table .r.down { color: var(--down); }
.liq-note {
  margin-top: 6px;
  font-size: 11.5px;
  color: var(--text-3);
  border-top: 1px dashed var(--border);
  padding-top: 6px;
  line-height: 1.55;
}

/* ---- 持仓 × 今日信号 ---- */
.hold-wrap { overflow-x: auto; }
table.hold { width: 100%; border-collapse: collapse; font-size: 13px; }
table.hold th {
  font-size: 11.5px;
  color: var(--text-3);
  font-weight: 600;
  text-align: left;
  padding: 6px 10px;
  border-bottom: 1px solid var(--border);
  background: var(--surface-2);
  white-space: nowrap;
}
table.hold td { padding: 7px 10px; border-bottom: 1px solid var(--surface-2); vertical-align: middle; }
table.hold tr:last-child td { border-bottom: 0; }
table.hold .nm { font-weight: 650; }
table.hold .cd { color: var(--text-3); font-size: 11px; font-family: var(--mono); }
table.hold .num { font-family: var(--mono); text-align: right; white-space: nowrap; }
table.hold .num.up { color: var(--up); font-weight: 650; }
table.hold .num.down { color: var(--down); font-weight: 650; }
table.hold .num.dim { color: var(--text-2); }
table.hold .sig { font-size: 12.5px; color: var(--text-2); min-width: 180px; line-height: 1.55; }
table.hold .go { white-space: nowrap; text-align: right; font-size: 12.5px; }
.tone {
  display: inline-block;
  font-size: 10.5px;
  font-weight: 700;
  border-radius: 4px;
  padding: 0 6px;
  margin-right: 6px;
}
.tone.strong { background: #fdeceb; color: var(--up); }
.tone.weak { background: #eaf3ee; color: var(--down); }
.tone.neutral { background: var(--surface-2); color: var(--text-2); }
.hold-note { margin: 6px 2px 0; }

/* ---- 研究闭环 ---- */
.loop-grid { display: grid; grid-template-columns: 340px 1fr 320px; gap: 10px; }
.loop-grid > .card { min-width: 0; }
.hchip {
  display: flex;
  align-items: baseline;
  gap: 8px;
  padding: 5px 0;
  border-top: 1px dashed var(--border);
  font-size: 12.5px;
}
.hchip:first-child { border-top: 0; }
.hchip .hid { font-family: var(--mono); font-weight: 700; font-size: 11.5px; flex: 0 0 26px; }
.hchip .ht { min-width: 0; color: var(--text); }
.hchip .st { margin-left: auto; font-size: 10.5px; font-weight: 700; border-radius: 4px; padding: 0 6px; white-space: nowrap; }
.st.part { background: var(--warn-soft); color: var(--warn); }
.next-list { margin: 0; padding-left: 16px; font-size: 12.5px; color: var(--text-2); }
.next-list li { margin: 3px 0; line-height: 1.55; }
.pipe { display: flex; gap: 5px; flex-wrap: wrap; margin-top: 2px; }
.pdot {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 11px;
  color: var(--text-3);
  background: var(--surface-2);
  border-radius: 999px;
  padding: 2px 8px;
}
.pdot i { width: 7px; height: 7px; border-radius: 50%; background: var(--border-strong); }
.pdot.done i { background: var(--ok); }
.pdot.miss i { background: var(--danger); }
.pdot.miss { color: var(--danger); }

/* ---- 折叠区 ---- */
details.v4-fold {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  margin-top: 10px;
  box-shadow: var(--shadow);
}
details.v4-fold > summary {
  cursor: pointer;
  padding: 10px 14px;
  font-size: 13px;
  font-weight: 650;
  list-style: none;
  display: flex;
  align-items: baseline;
  gap: 8px;
}
details.v4-fold > summary::-webkit-details-marker { display: none; }
details.v4-fold > summary::after { content: "▸"; margin-left: auto; color: var(--text-3); transition: transform .15s; }
details.v4-fold[open] > summary::after { transform: rotate(90deg); }
details.v4-fold > summary .meta { font-weight: 400; color: var(--text-3); font-size: 11.5px; margin-right: 18px; }
details.v4-fold > .fold-body { padding: 4px 14px 14px; border-top: 1px solid var(--border); }
details.v4-fold .section { margin-top: 14px; }

/* ---- 响应式 ---- */
@media (max-width: 1080px) {
  .dec-grid { grid-template-columns: 1fr 1fr; }
  .dec-grid-2 { grid-template-columns: 1fr 1fr; }
  .loop-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 640px) {
  .dec-grid, .dec-grid-2, .loop-grid { grid-template-columns: 1fr; }
  .brand-text small { display: none; }
  .search-drop .sd-k { display: none; }
  /* 持仓表移动端：仅 标的 / 信号关联 / 详情，防横向溢出 */
  .col-price, .col-day, .col-cum { display: none; }
  table.hold .sig { min-width: 0; }
  .phase-strip { overflow-x: auto; flex-wrap: nowrap; }
  .phase-strip .grp { flex-wrap: nowrap; }
  .pnote { display: none; }
  .band .meta { flex-basis: 100%; }
  .concl .t { font-size: 13px; }
  /* V4 卡片正文移动端统一收窄：桌面 12px → 移动端 10px（标题/底脚同步，保持基线一致） */
  .card-b, .dir-list { --v4-body-x: 10px; }
  .v4-card-h, .v4-card-foot { padding-left: 10px; padding-right: 10px; }
}

/* ============================ 方案 B 首页（大主卡 + 六宫格 · 双栏版） ============================ */
/* 命名前缀 b6- 与既有 .card/.grid/.col 隔离，避免污染折叠区等既有组件。
   原 b6 样式使用未定义的 --panel/--line/--ink/--muted，暗色兜底导致卡片变暗；
   现于 .b6 作用域映射到站点根变量（浅色易读），深蓝主卡内再覆盖为暗色专用值。 */
.b6{
  --panel: var(--surface);
  --panel2: var(--surface-2);
  --line: var(--border);
  --line-s: var(--border-strong);
  --ink: var(--text);
  --muted: var(--text-2);
  --faint: var(--text-3);
  --good: var(--ok);
  --bad: var(--danger);
  --info: var(--accent);
  display:flex;flex-direction:column;gap:16px;padding-bottom:6px;
}
/* 双栏骨架：左侧深蓝主卡 + 验证闭环，右侧 2×3 六宫格 + 自动化健康（原方案B结构）
   主卡占内容区约 2/3（2fr/1fr = 66.7%），右侧卡约 1/3 */
.b6-layout{display:grid;grid-template-columns:minmax(0,2fr) minmax(320px,1fr);gap:20px;align-items:start;min-width:0}
.b6-left,.b6-right{display:flex;flex-direction:column;gap:16px;min-width:0}
.b6-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.b6-pill{font-size:11.5px;padding:3px 10px;border-radius:999px;border:1px solid var(--line,#2a3340);color:var(--muted,#8b98a8);white-space:nowrap}
.b6-pill.now{border-color:#1d4ed855;background:#1e3a8a1c;color:var(--info,#60a5fa)}
.b6-sp{flex:1}
.b6-prog{font-size:11.5px;color:var(--muted,#8b98a8);display:flex;align-items:center;gap:7px}
/* b6-top 位于站点浅色底上，pill/prog 用站点次级深色保证浅底对比度；深色 hero 内 pill 不受影响 */
.b6-top .b6-pill,.b6-prog{color:var(--text-2,#57606a)}
.b6-bar{width:64px;height:6px;border-radius:4px;background:var(--line,#2a3340);overflow:hidden;display:inline-block}
.b6-bar i{display:block;height:100%;background:#4ade80;border-radius:4px}

.b6-alerts{display:flex;flex-direction:column;gap:6px}
.b6-alert{display:flex;gap:8px;align-items:flex-start;font-size:12.5px;padding:8px 12px;border-radius:9px;background:var(--panel,#171c23);border:1px solid var(--line,#2a3340)}
.b6-alert .b6-dot{width:7px;height:7px;border-radius:50%;margin-top:5px;flex:none}
.b6-alert.warn{color:var(--warn,#fbbf24)}.b6-alert.warn .b6-dot{background:var(--warn,#fbbf24)}
.b6-alert.info{color:var(--muted,#8b98a8)}.b6-alert.info .b6-dot{background:var(--muted,#8b98a8)}

/* V2 重点观察：保持现有编辑台气质，用高对比状态而非装饰性仪表盘。 */
.v2-important-alerts{display:flex;flex-wrap:wrap;gap:6px;margin:2px 0 12px}
.v2-important-alerts:empty{display:none}
.v2-important-alert{display:flex;align-items:center;gap:6px;padding:3px 10px;border:1px solid #ef4444;border-left:4px solid #ef4444;border-radius:8px;background:#fff7f7;color:#6f1d1b;text-decoration:none;font-size:12px;min-height:26px}
.v2-alert-mark{padding:1px 6px;border-radius:999px;background:#b42318;color:#fff;font-size:10px;font-weight:800;letter-spacing:.06em}
.v2-important-alert time{font-size:10.5px;color:#8f514c}
.focus-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px}
.focus-kicker{font-size:11px;font-weight:800;letter-spacing:.12em;color:var(--accent);text-transform:uppercase}
.focus-published{font-size:12px;color:var(--text-3)}
.focus-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.focus-card{border:1px solid var(--line);border-top:5px solid #7a8798;border-radius:14px;background:var(--surface);padding:22px;box-shadow:0 10px 30px rgba(28,39,55,.06);min-width:0}
.focus-card.watch{border-top-color:#d69e2e}.focus-card.important{border-top-color:#c53030}.focus-card.resolved{border-top-color:#3182ce}
.focus-card header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.focus-card h2{margin:5px 0 0;font-size:25px}.focus-status{padding:5px 10px;border-radius:999px;background:var(--bg-2);font-size:12px;font-weight:800}
.focus-card.important .focus-status{background:#fee2e2;color:#991b1b}.focus-card.watch .focus-status{background:#fef3c7;color:#92400e}
.focus-conclusion{font-size:17px;line-height:1.7;font-weight:650;margin:18px 0 12px}
.focus-signals{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:16px}.focus-signal{padding:4px 8px;border-radius:6px;background:#edf2f7;font-size:12px;font-weight:700}.focus-signal.price{color:#9b2c2c}.focus-signal.fund{color:#276749}.focus-signal.event{color:#744210}.focus-signal.sentiment{color:#2c5282}
.focus-sentiment{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:14px 0;padding:11px;background:var(--bg-2);border-radius:9px;font-size:12px}
.focus-table-wrap{overflow-x:auto}.focus-table{width:100%;border-collapse:collapse;font-size:13px}.focus-table th,.focus-table td{padding:9px 7px;border-bottom:1px solid var(--line);text-align:left}.focus-table td small{display:block;color:var(--text-3);font-size:10px;margin-top:2px}.focus-table .up{color:#b42318}.focus-table .down{color:#087f5b}
.focus-card footer{display:grid;gap:5px;margin-top:15px;font-size:12px;line-height:1.55;color:var(--text-2)}.focus-card footer time{color:var(--text-3)}
@media(max-width:800px){.v2-important-alert{grid-template-columns:auto 1fr}.v2-important-alert span:nth-child(3),.v2-important-alert time{grid-column:1/-1}.focus-head{align-items:flex-start;flex-direction:column}.focus-grid{grid-template-columns:minmax(0,1fr)}.focus-sentiment{grid-template-columns:1fr}.focus-card{padding:17px}}
/* 前台同步守门状态（2026-09-16 → 2026-09-22 压成小胶囊并入顶部标签行）。
   与 .b6-alert 同族但不复用其语义——它说明的是「本站快照与当日源文件的对应关系」 */
#b6-sync-slot{display:contents}
.b6-sync{display:inline-flex;gap:6px;align-items:center;font-size:12px;line-height:1.35;padding:3px 10px;border-radius:999px;background:var(--panel);border:1px solid var(--line);min-height:26px;white-space:nowrap;margin:0}
.b6-sync-dot{flex:none;width:auto;text-align:center;font-weight:700}
.b6-sync-msg{min-width:0}
.b6-sync-health{display:block;margin-top:3px;color:var(--faint,#7c8aa0);font-size:11px}
.b6-sync.ok{color:var(--ok,#1a7f5a);border-color:rgba(26,127,90,.45);background:rgba(26,127,90,.06)}
.b6-sync.ok .b6-sync-dot{color:var(--ok,#1a7f5a)}
.b6-sync.info{color:var(--muted,#8b98a8)}
.b6-sync.info .b6-sync-dot{color:var(--accent,#2f6feb)}
.b6-sync.pending{color:#b45309;border-color:rgba(180,83,9,.45);background:rgba(180,83,9,.06)}
.b6-sync.pending .b6-sync-dot{color:#b45309}
.b6-sync.warn{color:var(--warn,#b45309);border-color:rgba(180,83,9,.5);background:rgba(180,83,9,.06)}
.b6-sync.warn .b6-sync-dot{color:var(--warn,#b45309)}

.b6-hero{
  /* 深蓝主卡：在此作用域覆盖为暗色专用值，卡片层不受影响 */
  --panel: rgba(255,255,255,.07);
  --panel2: rgba(255,255,255,.08);
  --line: rgba(255,255,255,.14);
  --ink: #eef2fa;
  --muted: #c6d2e6;
  --faint: #8fa0b8;
  --good: #7fd1a7;
  --bad: #ff8f6b;
  --info: #9cc0ff;
  position:relative;
  background:linear-gradient(158deg,#0f1c33,#1d2f52);
  border:0;border-radius:18px;padding:16px 18px 13px;color:var(--ink);
  box-shadow:0 16px 34px rgba(15,28,51,.25);overflow:hidden;
}
.b6-hero::before{content:"";position:absolute;inset:0;background:radial-gradient(120% 130% at 88% -10%,rgba(79,157,255,.34),transparent 55%),radial-gradient(90% 90% at -10% 110%,rgba(127,209,167,.14),transparent 50%);pointer-events:none}
.b6-hero>*{position:relative}
.b6-hero-top{display:flex;justify-content:space-between;align-items:flex-start;gap:8px 12px;flex-wrap:wrap;margin-bottom:9px}
/* 当前阶段徽章：主卡最高优先级信息；off = 数据缺失态 */
.b6-pill.b6-phase{font-size:13px;font-weight:800;padding:5px 14px;border-radius:999px;color:#eef2fa;background:linear-gradient(135deg,#1d4ed8,#3b82f6);border:1px solid rgba(156,192,255,.5);letter-spacing:.5px}
.b6-pill.b6-phase.off{background:rgba(251,191,36,.16);color:#fbbf24;border-color:rgba(251,191,36,.45)}
.b6-hero-title{font-size:21px;font-weight:800;letter-spacing:.3px;line-height:1.2}
.b6-hero-sub{display:none}
.b6-pose{font-size:13.5px;color:#dfe7f5;padding:9px 11px;border-radius:9px;background:var(--panel2);border:1px solid var(--line);line-height:1.5;margin-bottom:8px;overflow-wrap:anywhere;word-break:break-word}
.b6-pose::before{content:"本阶段结论";display:inline;font-size:10.5px;color:#8fa0b8;letter-spacing:.6px;margin-right:8px}
.b6-phase-strip{max-width:920px;display:flex;align-items:stretch;gap:9px;margin:0 0 8px;color:#cbd8eb;font-size:11.5px;line-height:1.45}
.b6-phase-strip span{min-width:0;flex:1;padding:7px 9px;border-radius:8px;background:rgba(255,255,255,.04);overflow-wrap:anywhere}
.b6-phase-strip b{display:inline-block;color:#8fa0b8;font-size:10.5px;margin-right:6px}
.b6-phase-strip i{width:1px;background:rgba(255,255,255,.15)}
.b6-cols{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.b6-col{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:13px 13px 11px;display:flex;flex-direction:column;gap:10px;min-width:0;color:var(--ink)}
.b6-col h3{font-size:12px;font-weight:700;letter-spacing:.6px;color:var(--muted);display:flex;align-items:center;gap:7px}
.b6-col h3 i{width:8px;height:8px;border-radius:50%}
.b6-col.focus h3 i{background:#7fd1a7}.b6-col.avoid h3 i{background:#ff8f6b}.b6-col.act h3 i{background:#9cc0ff}
.b6-chips{display:flex;gap:8px;flex-wrap:wrap;margin-top:15px}
.b6-chip{font-size:11.5px;padding:4px 9px;border-radius:7px;background:rgba(255,255,255,.1);color:#cfd9ea;border:1px solid rgba(255,255,255,.1);white-space:nowrap}
.b6-item{display:flex;flex-direction:column;gap:5px;min-width:0}
/* 条目内原位展开：默认只显示完整句；展开区 ≤3 段完整句，末尾才是「查看原始依据 →」 */
.b6-toggle{align-self:flex-start;font-size:11px;font-weight:600;color:#9cc0ff;background:rgba(156,192,255,.10);border:1px solid rgba(156,192,255,.35);border-radius:7px;padding:3px 10px;cursor:pointer;min-height:24px}
.b6-toggle:hover{background:rgba(156,192,255,.2)}
.b6-toggle:focus-visible{outline:2px solid #9cc0ff;outline-offset:2px}
.b6-more{display:flex;flex-direction:column;gap:6px;font-size:12.5px;line-height:1.6;color:#c6d2e6;border-top:1px dashed rgba(255,255,255,.16);padding-top:7px}
.b6-more[hidden]{display:none}
.b6-more p{margin:0;overflow-wrap:anywhere;word-break:break-word}
.b6-more .sa-more{align-self:flex-start;font-size:11px;color:#9cc0ff;text-decoration:none}
.b6-more .sa-more:hover{text-decoration:underline}
.b6-pose .b6-toggle{margin-top:8px}
/* 缺失态：明确「待生成 / 数据缺失」，不用旧数据冒充 */
.b6-pose.b6-pose-missing{color:#fcd34d;background:rgba(251,191,36,.08);border-color:rgba(251,191,36,.35)}
.b6-pose.b6-pose-missing::before{content:"当前阶段数据状态";color:#fbbf24}
.b6-code{font-size:10px;color:#8291a3;font-weight:600;letter-spacing:.4px}
.b6-txt{font-size:13px;line-height:1.55;overflow-wrap:anywhere;word-break:break-word}
.b6-meta{font-size:10.5px;color:#8291a3;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.b6-tag{font-size:10.5px;font-weight:700;padding:1px 7px;border-radius:5px;letter-spacing:.4px;white-space:nowrap}
.b6-tag.fact{color:#0f7a4d;background:#e7f5ee;border:1px solid #b7e3d0}
.b6-tag.inf{color:#92400e;background:var(--warn-soft,#fdf3e3);border:1px solid #f0d5b4}
.b6-tag.pend{color:var(--accent-text,#1a56c4);background:var(--accent-soft,#e8f0fe);border:1px solid #c7d9fb}
.b6-sub{font-size:11.5px;color:var(--muted)}
.b6-sub.faint{color:var(--faint)}.b6-sub.warn{color:var(--warn)}
.b6-src{font-size:11px;color:var(--accent);text-decoration:none}

.b6-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.b6-grid-brief{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:12px}
.b6-grid-brief .b6-card{padding:12px 13px;gap:8px;border-radius:12px}
/* 新版首页顶部：一条自适应小标签行（字多长大、字短就短），不再占一整条大卡 */
.b6-topbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 12px}
.b6-pill.b6-warn{border-color:rgba(244,169,44,.55);color:var(--warn,#b45309);background:rgba(244,169,44,.08)}
.b6-card{background:var(--panel);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);padding:15px 17px;display:flex;flex-direction:column;gap:11px;min-width:0;color:var(--ink)}
.b6-card h2{font-size:13px;font-weight:700;letter-spacing:.5px;display:flex;align-items:center;gap:8px;overflow-wrap:anywhere}
.b6-card .b6-hint{font-size:10.5px;color:var(--faint);font-weight:400;margin-left:auto;white-space:normal;text-align:right}
.b6-hitem{border-top:1px solid var(--line);padding-top:9px;display:flex;flex-direction:column;gap:5px;min-width:0}
.b6-hitem-public{margin-top:10px}
.b6-hsignal{margin-top:3px;padding:8px 9px;border:1px solid var(--line);border-radius:8px;background:var(--surface-2);font-size:12px;line-height:1.55}
.b6-hsignal-tags{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:4px}
.b6-hsignal-tech,.b6-hsignal-news,.b6-hsignal-action{display:inline-block;border-radius:999px;padding:1px 7px;font-size:11px;font-weight:700;line-height:1.5}
.b6-hsignal-tech{background:#edf3ff;color:#3264c8}.b6-hsignal-news{background:#fff4df;color:#9b6510}.b6-hsignal-action{background:#edf7f1;color:#23744e}
.b6-hsignal-fact{color:var(--text);font-weight:600}.b6-hsignal-condition{margin-top:3px;color:var(--text-2)}
.b6-hnews{display:inline-block;margin-top:3px;font-size:12px}
.b6-hhead{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.b6-hname{font-weight:700}.b6-hsym{font-size:10.5px;color:var(--faint)}
.b6-hstat{margin-left:auto;font-size:11px;font-weight:600}
.b6-hstat.up{color:var(--up)}.b6-hstat.down{color:var(--down)}
.b6-hrow{font-size:11.8px;color:var(--muted);display:flex;gap:6px}
.b6-hrow .b6-vl{color:var(--ink)}
.b6-hment{font-size:11.5px;color:var(--info);background:#eef4fe;border:1px solid #c9dcfb;padding:6px 8px;border-radius:7px;line-height:1.5;overflow-wrap:anywhere;word-break:break-word}
.b6-hment .b6-hmlbl{font-size:10px;font-weight:700;padding:1px 6px;border-radius:4px;margin-right:3px;letter-spacing:.3px}
.b6-hment.direct{color:#0f7a4d;background:#e7f5ee;border-color:#b7e3d0}
.b6-hment.direct .b6-hmlbl{color:#0f7a4d;background:#d3ecdf}
.b6-hment.indirect{color:#92400e;background:#fdf3e3;border-color:#f0d5b4}
.b6-hment.indirect .b6-hmlbl{color:#92400e;background:#f7e4c8}
.b6-hment.none{color:var(--faint);background:transparent;border-style:dashed}
.b6-risks{display:flex;flex-direction:column;gap:8px}
.b6-risk{display:flex;gap:9px;align-items:flex-start;font-size:12.4px;line-height:1.5;overflow-wrap:anywhere;word-break:break-word}
.b6-lv{flex:none;font-size:10.5px;font-weight:700;padding:1px 7px;border-radius:5px;margin-top:1px}
.b6-lv.hi{color:var(--bad);background:#fbeceb;border:1px solid #f0c4c0}
.b6-lv.mi{color:#92400e;background:#fdf3e3;border:1px solid #f0d5b4}
.b6-fundflow{display:grid;grid-template-columns:minmax(0,1fr);gap:10px}
.b6-flow{display:flex;flex-direction:column;gap:6px}
.b6-flow+.b6-flow{border-top:1px dashed var(--line);padding-top:10px}
.b6-flow b{font-size:11px;letter-spacing:.5px;color:var(--muted)}
.b6-flow.in b{color:var(--up)}.b6-flow.out b{color:var(--down)}
.b6-frow{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:10px;font-size:12px}
.b6-fn{overflow-wrap:anywhere;word-break:break-word;color:var(--ink);min-width:0}
.b6-fv{flex:none;font-weight:600}
.b6-fv.up{color:var(--up)}.b6-fv.down{color:var(--down)}
.b6-rotate{margin-top:2px;font-size:12px;border-top:1px dashed var(--line);padding-top:9px;color:var(--muted);line-height:1.6;overflow-wrap:anywhere;word-break:break-word}
.b6-radar{display:flex;gap:8px;flex-wrap:wrap;font-size:11.5px}
.b6-rstat{display:flex;align-items:center;gap:5px;padding:3px 9px;border-radius:999px;border:1px solid var(--line);color:var(--muted)}
.b6-rstat b{font-size:13px}
.b6-rstat.o{border-color:var(--line-s);color:var(--text-2)}
.b6-rstat.p{border-color:#f0d5b4;color:#92400e}
.b6-rstat.v{border-color:#b7e3d0;color:#0f7a4d}
.b6-rstat.r{border-color:#f0c4c0;color:var(--bad)}
.b6-open{display:flex;flex-direction:column;gap:6px;margin-top:4px}
.b6-op{font-size:12.2px;display:flex;gap:7px;align-items:flex-start;overflow-wrap:anywhere;word-break:break-word}
.b6-op .b6-code{flex:none;color:var(--faint);font-weight:700}
.b6-op .b6-dl{color:var(--faint);font-size:11px;flex:none;white-space:nowrap}
.b6-healthline{display:flex;align-items:center;gap:9px;font-size:12.6px;flex-wrap:wrap}
.b6-glow{font-weight:700;color:var(--good)}
.b6-healthline.off{color:var(--warn)}.b6-healthline.off .b6-glow{color:var(--warn)}
.b6-entry{display:flex;flex-wrap:wrap;gap:10px;margin-top:2px}
.b6-btn{border:1px solid var(--line);background:var(--panel);color:var(--ink);font-size:12.5px;padding:8px 14px;border-radius:9px;text-decoration:none}
.b6-btn:hover{border-color:var(--line-s)}
.b6-boundary{color:var(--faint);font-size:11.5px;line-height:1.7}

/* ---- 方案 B 主卡：历史时段回看切换器（b6- 命名空间，不复用遗留指挥舱 .ck-* 样式） ---- */
/* 阶段徽章由纯文本徽章升级为按钮：外观保持原样，只增加交互态与焦点环 */
button.b6-pill.b6-phase{font-family:inherit;display:inline-flex;align-items:center;gap:6px;min-height:30px;cursor:pointer}
button.b6-pill.b6-phase:hover{border-color:rgba(156,192,255,.85)}
button.b6-pill.b6-phase:focus-visible{outline:2px solid #9cc0ff;outline-offset:2px}
.b6-ss-caret{font-size:9px;line-height:1;opacity:.85}
.b6-pill.b6-review-tag{background:rgba(251,191,36,.18);border-color:rgba(251,191,36,.55);color:#fbbf24;font-weight:700}
/* 顶部状态条位于浅色底上：回看标记改用浅底可读配色 */
.b6-top .b6-pill.b6-review-tag{background:#fdf3e3;border-color:#f0d5b4;color:#92400e}
/* 时段面板：文档流内展开（不做绝对定位浮层），因此不会遮挡任何内容，窄屏自动换行 */
.b6-stage-switch{margin:0 0 15px;padding:12px 13px;border-radius:14px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.18)}
.b6-stage-switch[hidden]{display:none}
.b6-ss-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;font-size:12px;font-weight:700;letter-spacing:.4px;color:#eef2fa;margin-bottom:9px}
.b6-ss-hint{font-size:10.5px;font-weight:400;color:#8fa0b8}
.b6-ss-opts{display:flex;flex-wrap:wrap;gap:9px}
.b6-ss-opt{flex:1 1 170px;min-width:0;min-height:38px;display:flex;flex-direction:column;align-items:flex-start;gap:3px;text-align:left;font-family:inherit;font-size:12.5px;color:#eef2fa;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.18);border-radius:10px;padding:8px 11px;cursor:pointer}
.b6-ss-opt:hover:not([disabled]){border-color:rgba(156,192,255,.7);background:rgba(156,192,255,.14)}
.b6-ss-opt:focus-visible{outline:2px solid #9cc0ff;outline-offset:2px}
.b6-ss-opt[aria-pressed="true"]{background:linear-gradient(135deg,#1d4ed8,#3b82f6);border-color:rgba(156,192,255,.75)}
.b6-ss-opt[disabled]{cursor:not-allowed;opacity:.78;border-style:dashed}
.b6-ss-lbl{font-weight:750;letter-spacing:.4px;white-space:nowrap}
.b6-ss-meta{font-size:10.5px;line-height:1.5;color:#a9b8cd;overflow-wrap:anywhere;word-break:break-word}
.b6-ss-opt[disabled] .b6-ss-meta{color:#fbbf24}
.b6-ss-auto{margin-top:9px;font-size:10.5px;line-height:1.65;color:#8fa0b8}
.b6-ss-auto b{color:#c6d2e6}
/* 回看提示条：把「回看 / 数据日 / 行情口径 / 来源」四项显式写出，避免被误读成当前阶段 */
.b6-review-bar{display:flex;align-items:center;gap:9px 12px;flex-wrap:wrap;font-size:11.5px;line-height:1.5;color:#dfe7f5;background:rgba(251,191,36,.12);border:1px solid rgba(251,191,36,.45);border-radius:11px;padding:8px 11px;margin:0 0 8px}
.b6-rv-badge{flex:none;font-size:10.5px;font-weight:800;letter-spacing:.6px;color:#0f1c33;background:#fbbf24;border-radius:5px;padding:2px 7px}
.b6-rv-item{color:#c6d2e6}
.b6-rv-item b{color:#fff}
.b6-back-now{margin-left:auto;flex:none;font-family:inherit;font-size:11.5px;font-weight:700;color:#0f1c33;background:#fbbf24;border:1px solid #fcd34d;border-radius:8px;padding:6px 12px;min-height:30px;cursor:pointer}
.b6-back-now:hover{background:#fcd34d}
.b6-back-now:focus-visible{outline:2px solid #fde68a;outline-offset:2px}
.b6-rv-note{font-size:10.5px;line-height:1.65;color:#8fa0b8;margin:0 0 14px}

/* 六宫格新增：今日情绪 / 今日动作清单 */
.b6-moods{display:flex;flex-direction:column;gap:6px}
.b6-mood{display:flex;align-items:baseline;gap:8px;font-size:12.8px;border-bottom:1px dashed var(--line);padding:3px 0;min-width:0}
.b6-mood:last-child{border-bottom:0}
.b6-mdir{flex:none;font-size:10.5px}
.b6-mood.strong .b6-mdir{color:var(--up)}
.b6-mood.weak .b6-mdir{color:var(--down)}
.b6-mnm{color:var(--muted);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.b6-mpct{margin-left:auto;flex:none;font-family:var(--mono);font-weight:650}
.b6-mpct.up{color:var(--up)}.b6-mpct.down{color:var(--down)}
.b6-acts{display:flex;flex-direction:column;gap:7px}
.b6-act{display:flex;gap:9px;align-items:flex-start;font-size:12.8px;line-height:1.55;overflow-wrap:anywhere;word-break:break-word}
.b6-actno{flex:none;display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:var(--accent-soft);color:var(--accent-text);font-size:11px;font-weight:700;margin-top:1px}

@media (max-width: 1079px){
  /* 需求：≥1080px 保持多列；（明细九宫格在平板降为 2 列） */
  .b6-layout{grid-template-columns:1fr}
  .b6-cols{grid-template-columns:1fr}
  .b6-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .b6-grid-brief{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width: 640px){
  /* 单列：明细九宫格降为 1 列，order 重排 */
  .b6-layout{display:flex;flex-direction:column;gap:16px}
  .b6-left,.b6-right{display:contents}
  .b6-grid{grid-template-columns:1fr}
  .b6-grid-brief{grid-template-columns:1fr}
  .b6-fundflow{grid-template-columns:1fr}
  .b6-hero{padding:18px 15px 16px}
  .b6-hero-title{font-size:18px}
  /* 历史时段回看：窄屏触控目标 ≥44px，选项与「回到当前阶段」整行铺满 */
  button.b6-pill.b6-phase{min-height:44px;padding:9px 14px}
  .b6-ss-opt{flex:1 1 100%;min-height:44px}
  .b6-back-now{min-height:44px;margin-left:0;width:100%}
  .b6-review-bar{padding:9px 11px}
  .b6-pose{font-size:13.5px}
  /* 移动端纵向顺序统一：结论→情绪→持仓→风险→资金→板块→动作→验证→健康 */
  .b6-hero{order:1}
  #c-mood{order:2}
  #c-hold{order:3}
  #c-risk{order:4}
  #c-fund{order:5}
  #c-sector{order:6}
  #c-act{order:7}
  #c-verify{order:8}
  #c-health{order:9}
}

/* ============================================================================ */
/* 语义锚点 × 极简结论卡（2026-09-14）                                          */
/* 与 web/js/app.js 的 sa* 文本层配套：结论 / 关键点 / 页脚 三层 + 五类锚点。    */
/* 颜色语义：红＝机会·走强·流入｜绿＝走弱·流出｜橙＝风险·待验证｜蓝＝条件·动作   */
/*          灰＝元信息。每个锚点都带 data-sa/title 文字标签，另有可见图例，       */
/*          颜色永不单独承载语义；时间与口径一律不着色（灰阶元信息）。          */
/* ============================================================================ */

.sa-card { position: relative; }

/* ---- 一句话结论 ---- */
.sa-lead {
  margin: 0;
  font-size: 14.5px;
  line-height: 1.68;
  color: var(--text);
  overflow-wrap: anywhere;
  word-break: break-word;
}
.sa-lead.sa-empty { color: var(--text-3); }
.sa-lead.sa-warn-lead { color: var(--warn); }

/* ---- 关键点（最多 3 条） ---- */
.sa-points {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.sa-points li {
  position: relative;
  padding-left: 14px;
  font-size: 13.2px;
  line-height: 1.6;
  color: var(--text-2);
  overflow-wrap: anywhere;
  word-break: break-word;
}
.sa-points li::before {
  content: "";
  position: absolute;
  left: 2px;
  top: 9px;
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--border-strong);
}

/* ---- 页脚：状态 / 数据日 / 可信度 / 查看完整依据 ---- */
.sa-foot {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  margin-top: auto;
  padding-top: 10px;
  border-top: 1px solid var(--border);
  font-size: 11.5px;
  color: var(--text-3);
}
.sa-meta { color: var(--text-3); }
.sa-more {
  margin-left: auto;
  font-size: 11.5px;
  font-weight: 600;
  color: var(--accent-text);
  text-decoration: none;
  white-space: nowrap;
  border-radius: 4px;
  padding: 1px 3px;
  transition: background .12s ease, color .12s ease;
}
.sa-more:hover { background: var(--accent-soft); text-decoration: underline; }
.sa-more:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
  background: var(--accent-soft);
  text-decoration: underline;
}

/* ---- 语义锚点 ---- */
.sa {
  font-weight: 700;
  border-radius: 3px;
  padding: 0 2px;
  box-decoration-break: clone;
  -webkit-box-decoration-break: clone;
}
/* 对象 / 板块：中性强调，不占用语义色 */
.sa-obj {
  color: var(--text);
  background: var(--surface-2);
  border-bottom: 1px dashed var(--border-strong);
}
/* 核心数字：中性等宽强调 */
.sa-num {
  color: var(--text);
  background: #f3f2ee;
  font-family: var(--mono);
  font-size: .96em;
}
/* 红＝机会 / 走强 / 流入（A 股口径：涨为红） */
.sa-up { color: var(--up); background: #fdecea; }
/* 绿＝走弱 / 流出 */
.sa-down { color: var(--down); background: #e7f5ee; }
/* 橙＝风险 / 待验证 */
.sa-warn { color: #8a4708; background: var(--warn-soft); }
/* 蓝＝条件 / 动作 */
.sa-cond { color: var(--accent-text); background: var(--accent-soft); }

/* ---- 图例（颜色 ↔ 含义的文字标签） ---- */
.sa-legend {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px 10px;
  padding: 10px 13px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 11px;
  font-size: 11.5px;
  color: var(--text-3);
  line-height: 1.7;
}
.sa-legend-t {
  font-weight: 700;
  color: var(--text-2);
  letter-spacing: .3px;
}
.sa-legend .sa { white-space: nowrap; }

/* ---- 深蓝主卡内的锚点：改用半透明底 + 提亮前景，保证暗底可读 ---- */
.b6-hero .sa { padding: 0 3px; }
.b6-hero .sa-obj { color: #eef2fa; background: rgba(255,255,255,.13); border-bottom-color: rgba(255,255,255,.32); }
.b6-hero .sa-num { color: #f4f7fd; background: rgba(255,255,255,.15); }
.b6-hero .sa-up { color: #ff9d8a; background: rgba(255,110,90,.20); }
.b6-hero .sa-down { color: #7fe0b6; background: rgba(60,200,140,.18); }
.b6-hero .sa-warn { color: #f7c886; background: rgba(232,170,64,.20); }
.b6-hero .sa-cond { color: #aac9ff; background: rgba(120,160,255,.20); }
.b6-hero .sa-foot { border-top-color: rgba(255,255,255,.14); color: #8fa0b8; }
.b6-hero .sa-foot .sa-meta { color: #8fa0b8; }
.b6-hero .sa-more { color: #9cc0ff; margin-left: auto; }
.b6-hero .sa-more:hover,
.b6-hero .sa-more:focus-visible { background: rgba(156,192,255,.18); color: #cfe0ff; }
.b6-hero .sa-more:focus-visible { outline-color: #9cc0ff; }
/* 主卡三列内的依据链接同样提亮，避免深底不可见 */
.b6-hero .b6-meta .sa-more { color: #9cc0ff; font-size: 11px; }

/* ---- 响应式 ---- */
@media (max-width: 900px) {
  .sa-lead { font-size: 14px; }
  .sa-points li { font-size: 13px; }
}
@media (max-width: 640px) {
  .sa-foot { gap: 6px; }
  .sa-more { margin-left: 0; }
  .sa-legend { gap: 6px 8px; padding: 9px 11px; }
  .b6-hero .sa-more { margin-left: 0; }
}

/* ========== home-D 四象限定局 + 持仓作战台（全宽决策带） ========== */
.hd-band {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 16px 18px 18px;
  margin: 14px 0 18px;
  box-shadow: var(--shadow);
}
.hd-head {
  display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap;
  margin-bottom: 14px;
}
.hd-title { font-size: 16px; font-weight: 800; color: var(--text); }
.hd-meta { font-size: 12.5px; color: var(--text-3); flex: 1; min-width: 180px; }

.hd-quad { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; }
.hd-q {
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 12px 14px;
  background: var(--surface);
}
.hd-q-top { border-top:3px solid var(--accent); padding-top:8px; }
.hd-q-title { font-size:14px; font-weight:700; letter-spacing:.02em; }
.hd-q-word { display:block; font-size:19px; font-weight:800; margin-top:5px; line-height:1.25; color:var(--text); }
.hd-q-note { font-size:14px; color:var(--text-2); margin-top:5px; }
.hd-q-see { font-size:15px; color:var(--text); line-height:1.7; margin-top:9px; padding-top:9px; border-top:1px dashed var(--border); }
/* home-D AI 增强：重点关注象限的 pi(DeepSeek) 研判叠加区 */
.hd-q-ai {
  margin-top: 9px; padding-top: 9px; border-top: 1px dashed var(--border);
  font-size: 14px; color: var(--text); line-height: 1.7;
}
.hd-q-ai-tag { display:inline-block; font-size: 11.5px; font-weight:700; color:#fff; background:linear-gradient(135deg,#635bff,#9a5bff); border-radius:4px; padding:0 7px; margin-right:6px; vertical-align:1px; }
.hd-q-ai-ev { color: var(--text-2); }
.hd-q-ai-meta { display:block; margin-top:4px; font-size: 12.5px; color: var(--text-2); }

.hd-split {
  display: grid; grid-template-columns: 1.25fr 1fr; gap: 18px; margin-top: 16px;
}
.hd-split.hd-split-public { grid-template-columns: 1fr; }
.hd-narr, .hd-desk { min-width: 0; }
.hd-sec-head {
  font-size: 14px; font-weight: 800; color: var(--text); line-height: 1.35;
  margin-bottom: 10px;
}
.hd-sec-sub { font-size: 11.5px; font-weight: 400; color: var(--text-3); }
.hd-concl {
  font-size: 15px; font-weight: 600; color: var(--text);
  line-height: 1.7; margin-bottom: 10px;
}
.hd-acts { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.hd-acts li { font-size: 13.5px; color: var(--text-2); padding-left: 14px; position: relative; line-height: 1.6; }
.hd-acts li::before { content: '·'; position: absolute; left: 2px; color: var(--accent); font-weight: 700; }

.hd-desk { border-left: 1px solid var(--border); padding-left: 18px; }
.hd-hold {
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 10px 12px;
  margin-bottom: 10px;
  background: var(--surface-2);
}
.hd-hold-top { display: flex; justify-content: space-between; align-items: baseline; gap: 6px; }
.hd-hold-name { font-size: 13.5px; font-weight: 800; }
.hd-hold-code { font-size: 11px; color: var(--text-3); margin-left: 5px; }
.hd-hold-pl { font-size: 13px; font-weight: 800; }
.hd-hold-pl.up { color: var(--up); }
.hd-hold-pl.dn { color: var(--down); }
.hd-hold-status {
  display: inline-block; margin: 6px 0 0; padding: 2px 10px;
  border-radius: 5px; font-size: 12px; font-weight: 700; line-height: 1.5;
}
.hd-hold-status.is-buy { background: #fdeeed; color: #d64541; }   /* 可加仓·红 */
.hd-hold-status.is-sell { background: #e9f7f1; color: #1e9e6a; }  /* 需清仓·绿 */
.hd-hold-status.is-hold { background: #f1f3f6; color: #8b98a8; }  /* 观望·灰 */
.hd-hold-meta { display: flex; gap: 6px; flex-wrap: wrap; margin: 7px 0; }
.hd-chip {
  font-size: 11px; color: var(--text-2);
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 6px; padding: 1px 7px;
}
.hd-hold-rule {
  font-size: 13px; line-height: 1.65; color: var(--text);
  border-left: 3px solid var(--down);
  border-radius: 0 6px 6px 0;
  padding: 7px 10px; background: rgba(26, 127, 90, .08);
}
.hd-hold-rule.up { border-left-color: var(--up); background: rgba(209, 59, 52, .08); }
.hd-empty, .hd-risk { font-size: 13px; color: var(--text-2); line-height: 1.7; }
.hd-risk { margin-top: 11px; padding: 8px 11px; background: var(--surface-2); border-radius: 8px; }
.hd-risk b { color: var(--warn); }

@media (max-width: 1120px) {
  .hd-quad { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 860px) {
  .hd-split { grid-template-columns: 1fr; }
  .hd-desk { border-left: none; padding-left: 0; border-top: 1px solid var(--border); padding-top: 14px; }
}
@media (max-width: 560px) {
  .hd-quad { grid-template-columns: 1fr; }
  .hd-band { padding: 12px 12px 14px; }
}

/* 首页规格书 v2：战略层 → 行动层 → 数据层。只作用于首页，不覆盖观察池。 */
.home-strategy-layer { margin: 6px 0 16px; }
.home-strategy-layer .hd-quad { align-items: stretch; }
.home-strategy-layer .hd-q {
  display: flex; flex-direction: column; min-height: 156px; padding: 16px;
  border: 1px solid var(--border); border-radius: 12px; background: var(--surface);
}
.home-strategy-layer .hd-q-market { border-top: 3px solid var(--up); background: var(--red-bg); }
.home-strategy-layer .hd-q-fund { border-top: 3px solid var(--warn); background: var(--orange-bg); }
.home-strategy-layer .hd-q-focus { border-top: 3px solid var(--accent); background: var(--blue-bg); }
.home-strategy-layer .hd-q-target { border-top: 3px solid var(--down); background: var(--green-bg); }
.home-strategy-layer .hd-q-top { border: 0; padding: 0; }
.home-strategy-layer .hd-q-title { display: block; font-size: 13px; font-weight: 800; color: var(--text-2); }
.home-strategy-layer .hd-q-word { display: block; margin-top: 4px; font-size: 20px; line-height: 1.25; color: var(--text); }
.home-strategy-layer .hd-q-summary { min-height: 40px; margin: 14px 0 0; padding-top: 10px; border-top: 1px dashed var(--border); font-size: 15px; line-height: 1.55; color: var(--text-2); }
.home-strategy-layer .hd-q-detail { margin-top: auto; padding-top: 8px; }
.home-strategy-layer .hd-q-detail summary { cursor: pointer; color: var(--accent); font-size: 13px; font-weight: 700; }
.home-strategy-layer .hd-q-detail p { margin: 8px 0 0; color: var(--text-2); font-size: 14px; line-height: 1.65; }

.home-action-layout { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(320px, .75fr); gap: 16px; margin: 16px 0; align-items: stretch; }
.home-action-layer, .home-holdings-card {
  min-width: 0; padding: 18px; border: 1px solid var(--border); border-radius: 14px; background: var(--surface);
  box-shadow: 0 5px 18px rgba(27, 45, 70, .05);
}
.home-action-layer { border-top: 3px solid var(--accent); }
.home-holdings-card { border-top: 3px solid var(--warn); }
.home-action-head, .home-holdings-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.home-kicker { display: block; color: var(--text-3); font-size: 12px; font-weight: 700; }
.home-action-head h2, .home-holdings-head h2 { margin: 3px 0 0; font-size: 19px; line-height: 1.25; }
.home-action-summary { margin: 14px 0; padding: 12px 13px; border-radius: 9px; background: var(--surface-2); color: var(--text); font-size: 15px; line-height: 1.7; }
.home-analyst-note { margin: -3px 0 14px; padding: 10px 12px; border-left: 3px solid var(--accent); border-radius: 8px; background: var(--blue-bg); color: var(--text-2); }
.home-analyst-head { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 5px 10px; font-size: 13px; }
.home-analyst-head span { color: var(--text-3); font-size: 11px; }
.home-analyst-note p { margin: 7px 0 5px; font-size: 15px; line-height: 1.55; color: var(--text); }
.home-analyst-note small { display: block; font-size: 12px; line-height: 1.55; color: var(--text-3); }
.home-analyst-sources { margin-top: 6px; font-size: 12px; }
.home-analyst-sources summary { cursor: pointer; color: var(--accent); font-weight: 700; }
.home-analyst-sources a { display: block; margin-top: 5px; color: var(--text-2); line-height: 1.4; text-decoration: none; overflow-wrap: anywhere; }
.home-analyst-sources a:hover { text-decoration: underline; }
.home-condition-evidence { margin: -4px 0 14px; padding: 10px 12px; border: 1px solid var(--border); border-radius: 9px; background: #fbfcfe; }
.home-condition-evidence-head { display: flex; justify-content: space-between; gap: 8px; color: var(--text); font-size: 13px; }
.home-condition-evidence-head span { color: var(--text-3); font-size: 12px; }
.home-condition-facts { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.home-condition-facts span { padding: 4px 7px; border-radius: 6px; background: var(--blue-bg); color: var(--text-2); font-size: 12px; line-height: 1.45; }
.home-condition-gap { margin: 8px 0 0; color: var(--text-3); font-size: 12px; line-height: 1.5; }
.home-nontrading-intel { margin: -4px 0 14px; padding: 10px 12px; border: 1px solid #d9e3f6; border-radius: 9px; background: #f8fbff; }
.home-nontrading-intel-list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin-top: 8px; }
.home-nontrading-intel-item { min-width: 0; padding: 9px; border: 1px solid #e3eaf5; border-radius: 7px; background: #fff; }
.home-nontrading-intel-item > b { display: block; margin-bottom: 5px; color: var(--accent); font-size: 12px; }
.home-nontrading-intel-item a { display: block; color: var(--text); font-size: 13px; font-weight: 700; line-height: 1.45; text-decoration: none; }
.home-nontrading-intel-item a:hover { color: var(--accent); text-decoration: underline; }
.home-nontrading-intel-item p { margin: 6px 0 0; color: var(--text-3); font-size: 12px; line-height: 1.5; }
.home-nontrading-intel-item p span { color: var(--text-2); font-weight: 700; }
.home-action-checklist { border-top: 1px solid var(--border); padding-top: 11px; }
.home-action-checklist-head { display: flex; justify-content: space-between; gap: 10px; color: var(--text); font-size: 14px; }
.home-action-checklist-head span { color: var(--text-3); font-size: 12px; }
.home-action-check { display: flex; align-items: flex-start; gap: 9px; margin-top: 9px; color: var(--text-2); font-size: 14px; line-height: 1.55; cursor: pointer; }
.home-action-check input { margin-top: 4px; accent-color: var(--accent); }
.home-action-check input:checked + span { color: var(--text-3); text-decoration: line-through; }
.home-action-empty { margin: 10px 0 0; color: var(--text-3); font-size: 14px; }
.home-action-foot { display: flex; justify-content: space-between; gap: 12px; margin-top: 14px; padding-top: 10px; border-top: 1px solid var(--border); color: var(--text-3); font-size: 12px; }
.home-action-foot a, .home-holdings-head a { color: var(--accent); font-weight: 700; text-decoration: none; }
.home-stage-switch { margin-top: 12px; }
.home-review-note { margin: 12px 0 0; padding: 8px 10px; border-radius: 8px; background: var(--blue-bg); color: var(--text-2); font-size: 13px; }
.home-review-note button { margin-left: 8px; border: 0; color: var(--accent); background: transparent; font-weight: 700; cursor: pointer; }
.home-holdings-boundary { margin: 12px 0; color: var(--text-3); font-size: 13px; line-height: 1.55; }
.home-holding-row { border-top: 1px solid var(--border); padding: 9px 0; }
.home-holding-row summary { display: flex; align-items: center; flex-wrap: wrap; gap: 7px; cursor: pointer; list-style: none; color: var(--text); font-size: 14px; font-weight: 700; }
.home-holding-row summary::-webkit-details-marker { display: none; }
.home-holding-row summary > a { color: var(--text); text-decoration: none; }
.home-holding-code { color: var(--text-3); font-size: 12px; font-weight: 500; }
.home-holding-action { margin-left: auto; color: var(--text-2); font-size: 12px; font-weight: 600; }
.home-empty-hold { padding: 14px 0; color: var(--text-3); font-size: 14px; }

.home-data-layer { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; margin: 16px 0; }
.home-data-layer .b6-card { min-width: 0; margin: 0; min-height: 210px; }
.home-data-layer #c-risk { border-top: 3px solid var(--warn); }
.home-data-layer #c-fund { border-top: 3px solid var(--accent); }
.home-data-layer #c-mood { border-top: 3px solid #667085; }
.strategy-manager-card { margin: 16px 0; padding: 17px 18px; border: 1px solid var(--border); border-top: 3px solid #6b5cff; border-radius: 14px; background: var(--surface); box-shadow: 0 5px 18px rgba(27,45,70,.05); }
.sm-head { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }
.sm-head h2 { margin:3px 0 0; font-size:19px; }
.sm-head > span { color:var(--text-3); font-size:12px; }
.sm-boundary { margin:10px 0 13px; color:var(--text-3); font-size:12px; }
.sm-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.sm-row { display:grid; grid-template-columns:minmax(120px,.7fr) minmax(130px,.8fr) 1fr 1fr; gap:10px; align-items:start; padding:11px 12px; border:1px solid var(--border); border-radius:10px; background:var(--surface-2); }
.sm-name b,.sm-profile b { display:block; color:var(--text); font-size:13px; }
.sm-name span,.sm-profile span { display:block; margin-top:4px; color:var(--text-3); font-size:12px; line-height:1.45; }
.sm-axes { display:flex; gap:5px; flex-wrap:wrap; }
.sm-axis { padding:3px 7px; border-radius:999px; background:var(--blue-bg); color:var(--text-2); font-size:11.5px; font-weight:700; }
.sm-gap { grid-column:1/-1; color:var(--text-3); font-size:11.5px; }
@media (max-width:1200px) { .sm-grid { grid-template-columns:1fr; } }
@media (max-width:720px) { .sm-row { grid-template-columns:1fr 1fr; } .sm-profile { grid-column:1/-1; } }

@media (max-width: 960px) {
  .home-action-layout { grid-template-columns: 1fr; }
  .home-data-layer { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 560px) {
  .home-strategy-layer .hd-q { min-height: 0; }
  .home-action-layer, .home-holdings-card { padding: 15px; }
  .home-nontrading-intel-list { grid-template-columns: 1fr; }
  .home-data-layer { grid-template-columns: 1fr; }
  .home-action-foot, .home-action-checklist-head { flex-direction: column; align-items: flex-start; }
}

/* ===== 重点观察 · 事件推演图 v3（节点独立 + 流动脉冲连线） ===== */
.chain-summary{margin:2px 0 20px;font-size:12px;color:var(--text-2);display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.chain-summary b{color:var(--text);font-weight:800}
.chain-board{display:flex;flex-direction:column}
.chain{
  position:relative;padding:4px 0 30px;background:transparent;border:0;box-shadow:none;overflow:visible;
  --cg:52px;
  --cols:minmax(200px,1.08fr) minmax(158px,.82fr) minmax(156px,.74fr) minmax(224px,1.26fr);
}
.chain+.chain{border-top:1px dashed var(--border-strong);margin-top:10px;padding-top:24px}
.chain-head{display:flex;align-items:center;gap:10px;margin:0 0 14px;flex-wrap:wrap}
.chain-idx{font-family:var(--mono);font-size:12px;font-weight:700;color:var(--text-3);border:1px solid var(--border);border-radius:6px;padding:3px 7px;background:var(--surface)}
.chain-head h2{margin:0;font-size:16px;min-width:0}
.chain-badge{font-size:12px;padding:4px 10px;border-radius:999px;border:1px solid var(--border);white-space:nowrap}
.chain-badge.bull{color:var(--up);border-color:rgba(209,59,52,.35);background:var(--red-bg)}
.chain-badge.bear{color:var(--down);border-color:rgba(18,138,91,.35);background:var(--green-bg)}
.chain-badge.neutral{color:var(--warn);border-color:rgba(180,83,9,.3);background:var(--warn-soft)}
.chain-count{margin-left:auto;font-size:11px;color:var(--text-3);font-family:var(--mono)}

/* 列导轨：细虚线，不构成外框 */
.chain-rails{display:grid;grid-template-columns:var(--cols);column-gap:var(--cg);margin:0 0 12px}
.rail-item{font-size:11px;font-weight:700;color:var(--text-3);letter-spacing:.03em}
.rail-item::after{content:"";display:block;height:1px;margin-top:7px;background:repeating-linear-gradient(90deg,var(--border) 0 5px,transparent 5px 12px)}

/* 节点栅格：行业与其标的同排 */
.chain-grid{display:grid;grid-template-columns:var(--cols);column-gap:var(--cg);row-gap:10px;align-items:center}
.chain-grid>*{min-width:0;animation:chainNodeIn .5s cubic-bezier(.22,1,.36,1) both;animation-delay:var(--nd,0ms)}
@keyframes chainNodeIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* ① 事件卡：独立卡片 */
.ev-card{border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:10px;padding:10px 11px;background:var(--surface);box-shadow:var(--shadow);cursor:pointer;transition:border-color .15s,transform .15s,box-shadow .15s}
.ev-card:hover{border-color:var(--accent);transform:translateY(-1px);box-shadow:0 4px 12px rgba(16,24,40,.09)}
.ev-top{display:flex;align-items:center;gap:6px;font-size:10px;color:var(--text-3);margin-bottom:5px}
.ev-grade{font-weight:800;color:#fff;background:var(--accent);border-radius:4px;padding:1px 5px}
.ev-tag{font-weight:800;color:var(--text-2)}
.ev-top time{margin-left:auto;font-family:var(--mono)}
.ev-card h4{margin:0 0 4px;font-size:13px;line-height:1.45;font-weight:650}
.ev-src{font-size:10px;color:var(--text-3);line-height:1.5;margin:0}

/* ② 推演结论：中枢节点，最醒目 */
.deriv-node{border:1px solid var(--border);border-radius:14px;padding:15px 14px;display:flex;flex-direction:column;gap:4px;justify-content:center;background:var(--surface);box-shadow:0 4px 16px rgba(16,24,40,.08);position:relative}
.deriv-node.bull{border-color:rgba(209,59,52,.42);background:linear-gradient(180deg,var(--red-bg),var(--surface) 78%)}
.deriv-node.bear{border-color:rgba(18,138,91,.42);background:linear-gradient(180deg,var(--green-bg),var(--surface) 78%)}
.deriv-node.neutral{border-color:rgba(180,83,9,.35);background:linear-gradient(180deg,var(--warn-soft),var(--surface) 78%)}
.deriv-node .hub-tag{font-size:10px;font-weight:800;letter-spacing:.06em;color:var(--text-3)}
.deriv-node b{font-size:15px;line-height:1.35}
.deriv-node.bull b{color:var(--up)}
.deriv-node.bear b{color:var(--down)}
.deriv-node.neutral b{color:var(--warn)}
.deriv-node .dv-topic{font-size:12px;color:var(--text-2);line-height:1.45}
.deriv-node em{font-size:10px;color:var(--text-3);font-style:normal;line-height:1.5}

/* ③ 行业节点 */
.ind-node{border:1px solid var(--border);border-radius:10px;padding:9px 11px;background:var(--surface);box-shadow:var(--shadow);display:flex;flex-direction:column;gap:2px}
.ind-node b{font-size:12.5px}
.ind-node span{font-size:10px;color:var(--text-3);line-height:1.45}

/* ④ 标的节点 */
.asset-node{border:1px solid var(--border);border-radius:10px;padding:8px 11px;background:var(--surface);box-shadow:var(--shadow);display:flex;align-items:center;gap:7px;font:inherit;text-align:left;color:inherit;width:100%}
button.asset-node{cursor:pointer;transition:border-color .15s,background .15s,transform .15s}
button.asset-node:hover{border-color:var(--accent);background:var(--accent-soft);transform:translateY(-1px)}
.asset-node .a-code{font-family:var(--mono);font-size:11px;color:var(--text-2)}
.asset-node .a-name{flex:1;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.asset-node .a-flag{font-size:10px;font-weight:800;color:var(--text-3);white-space:nowrap}
.asset-node.in-pool{border-color:rgba(30,158,106,.5)}
.asset-node.in-pool .a-code{color:var(--green);font-weight:700}
.asset-node.in-pool .a-flag{color:var(--green)}

/* 窄屏步骤标（宽屏隐藏） */
.step-chip{display:none;font-size:10px;font-weight:800;color:var(--text-3)}

/* SVG 连线层（站点全局 svg{width:16px;height:16px} 会压尺寸，必须显式覆盖） */
.chain-links{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible;z-index:1}
.cf-base{stroke-dasharray:1;stroke-dashoffset:1;animation:cfDraw .72s cubic-bezier(.22,1,.36,1) both;animation-delay:var(--d,0ms)}
.chain[data-drawn="1"] .cf-base{animation:none;stroke-dashoffset:0}
@keyframes cfDraw{to{stroke-dashoffset:0}}
.cf-pulse{
  stroke:var(--fc,#2f6feb);stroke-width:2.4;stroke-linecap:round;fill:none;
  stroke-dasharray:.17 .83;stroke-dashoffset:0;opacity:0;
  vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 3px var(--fc,#2f6feb));
  animation:cfPulse 2.6s linear infinite;animation-delay:calc(var(--d,0ms) + var(--pd,0ms));
}
@keyframes cfPulse{0%{stroke-dashoffset:0;opacity:0}8%{opacity:.95}62%{opacity:.95}80%{stroke-dashoffset:-1;opacity:0}100%{stroke-dashoffset:-1;opacity:0}}
.cf-port{stroke-width:1.6}

/* 悬停追踪：只点亮该节点所在的推演路径 */
.chain.tracing [data-nid]{opacity:.32;transition:opacity .18s}
.chain.tracing [data-nid].is-hot{opacity:1}
.chain.tracing .cf-base{opacity:.10;transition:opacity .18s}
.chain.tracing .cf-base.is-hit{opacity:1;stroke:var(--accent);stroke-width:1.8}
.chain.tracing .cf-pulse{opacity:0}
.chain.tracing .cf-pulse.is-hit{opacity:1;animation-play-state:running}
.chain.tracing .cf-port{opacity:.2}
.chain.tracing .cf-port.is-hit{opacity:1;fill:var(--accent);stroke:var(--accent)}

@media(prefers-reduced-motion:reduce){
  .chain-grid>*{animation:none}
  .cf-base{animation:none;stroke-dashoffset:0}
  .cf-pulse{animation:none;opacity:0}
}

/* ===== 移动端（≤900px）：改为「纵向推演流 + 折叠」 ===== */
@media(max-width:900px){
  .chain-summary{font-size:11.5px;gap:8px}
  .m-toggle-all{margin-left:auto;font:inherit;font-size:11px;font-weight:800;color:var(--accent);background:var(--accent-soft);border:1px solid rgba(47,111,235,.28);border-radius:999px;padding:4px 11px;cursor:pointer}
  .m-toggle-all:active{transform:scale(.97)}

  /* 卡片壳 */
  .chain{margin:0;padding:0;border:0;box-shadow:none}
  .chain+.chain{border-top:0;margin-top:12px;padding-top:0}
  .chain-rails,.chain-grid{display:none}
  .chain-board{display:flex;flex-direction:column;gap:0}

  .chain-head{
    display:flex;flex-direction:column;gap:7px;align-items:stretch;margin:0;padding:11px 12px;
    background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow);cursor:pointer;
    transition:border-color .15s;
  }
  .chain[data-open="1"] .chain-head{border-radius:12px 12px 0 0;border-bottom-color:transparent}
  .chain-head:hover{border-color:var(--border-strong)}
  .m-row{display:flex;align-items:center;gap:9px;min-width:0}
  .m-row1 h2{flex:1;min-width:0;margin:0;font-size:14px;line-height:1.35;white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .m-row2{justify-content:space-between}
  .chain-badge{justify-self:start;font-size:11px;padding:3px 8px}
  .chain-count{justify-self:end;margin:0;font-size:10px;white-space:nowrap;color:var(--text-3)}
  .m-caret{flex:none;width:8px;height:8px;border-right:2px solid var(--text-3);border-bottom:2px solid var(--text-3);transform:rotate(45deg) translate(-2px,-2px);transition:transform .2s}
  .chain[data-open="1"] .m-caret{transform:rotate(-135deg) translate(-2px,-2px)}

  .chain-body{
    position:relative;padding:14px 12px 16px;background:var(--surface);
    border:1px solid var(--border);border-top:0;border-radius:0 0 12px 12px;box-shadow:var(--shadow);
  }
  .chain[data-open="0"] .chain-body{display:none}

  .m-layer{position:relative}
  .m-label{display:flex;align-items:center;gap:6px;width:max-content;max-width:100%;font-size:10.5px;font-weight:800;color:var(--text-3);letter-spacing:.03em;margin:0 0 8px;position:relative;z-index:2;background:var(--surface);padding-right:8px}
  .m-label .step-chip,.m-label .m-label-sep{display:inline-block}
  .m-label-sep{color:var(--border-strong);font-weight:700}

  /* ① 事件层：多条并排，便于看出"汇聚" */
  .m-layer-ev{margin-bottom:36px}
  .m-ev-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(128px,1fr));gap:8px}
  .m-ev-grid .ev-card{padding:9px 10px;box-shadow:none}
  .m-ev-grid .ev-card h4{font-size:12px;line-height:1.4}
  .m-ev-grid .ev-src{font-size:9.5px}
  .m-ev-grid .ev-top{font-size:9.5px;margin-bottom:4px}

  /* ② 结论层 */
  .m-layer-dv{margin-bottom:34px}
  .m-layer-dv .deriv-node{padding:13px 12px;box-shadow:none;gap:3px}
  .m-layer-dv .deriv-node b{font-size:15px}

  /* ③④ 行业 → 标的：缩进 + 左侧细线表示归属 */
  .m-ind-list{display:flex;flex-direction:column;gap:14px;padding-left:26px}
  .m-ind{position:relative}
  .m-ind .ind-node{box-shadow:none}
  .m-assets{display:flex;flex-direction:column;gap:6px;margin-top:7px;padding-left:12px;border-left:2px solid var(--border)}
  .m-assets .asset-node{padding:7px 9px;gap:6px;box-shadow:none;font-size:11.5px}
  .m-assets .asset-node .a-name{font-size:11.5px}
  .m-assets .asset-node .a-flag{font-size:9.5px}

  .chain-body .chain-links{display:block}
  /* 移动端不做悬停追踪（触屏无 hover），保留脉冲流动 */
  .chain.tracing [data-nid]{opacity:1}
  .chain.tracing .cf-base{opacity:1;stroke:inherit;stroke-width:1.3}
  .chain.tracing .cf-base.is-hit{stroke:var(--accent);stroke-width:1.8}
}

/* ===== v4 增量：突发告警条 / 时间序标签 / 分歧配色 ===== */
.breaking-bar{border:1px solid rgba(209,59,52,.28);border-left:3px solid var(--up);border-radius:12px;background:var(--red-bg);padding:10px 12px;margin:0 0 18px}
.bk-head{display:flex;align-items:center;gap:8px;font-size:12px;flex-wrap:wrap}
.bk-head b{color:var(--up);font-weight:800}
.bk-dot{width:8px;height:8px;border-radius:50%;background:var(--up);flex:none;animation:bkPulse 1.6s ease-in-out infinite}
@keyframes bkPulse{0%,100%{opacity:1;box-shadow:0 0 0 0 rgba(209,59,52,.45)}50%{opacity:.55;box-shadow:0 0 0 6px rgba(209,59,52,0)}}
.bk-meta{color:var(--text-2);font-size:11px}
.bk-meta b{color:var(--text)}
.bk-toggle{margin-left:auto;font:inherit;font-size:11px;font-weight:800;color:var(--up);background:transparent;border:1px solid rgba(209,59,52,.32);border-radius:999px;padding:3px 10px;cursor:pointer}
.bk-toggle:hover{background:rgba(209,59,52,.08)}
.bk-list{list-style:none;margin:9px 0 0;padding:0;display:flex;flex-direction:column;gap:1px}
.breaking-bar[data-open="0"] .bk-list{display:none}
.bk-item a{display:flex;align-items:baseline;gap:8px;padding:6px 7px;border-radius:7px;text-decoration:none;color:var(--text);border-left:2px solid transparent;transition:background .15s}
.bk-item a:hover{background:var(--surface)}
.bk-item.sev-critical a{border-left-color:var(--up)}
.bk-item.sev-high a{border-left-color:var(--warn)}
.bk-item.sev-medium a{border-left-color:var(--border-strong)}
.bk-sev{flex:none;font-size:9.5px;font-weight:800;border-radius:4px;padding:1px 5px;background:var(--surface);color:var(--text-2);border:1px solid var(--border)}
.bk-item.sev-critical .bk-sev{color:#fff;background:var(--up);border-color:var(--up)}
.bk-item.sev-high .bk-sev{color:#fff;background:var(--warn);border-color:var(--warn)}
.bk-title{flex:1;min-width:0;font-size:12px;line-height:1.45;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bk-cat{flex:none;font-size:10px;color:var(--text-3)}
.bk-when{flex:none;font-size:10px;color:var(--text-3);font-family:var(--mono)}
.bk-new{flex:none;font-size:9px;font-weight:800;color:#fff;background:var(--accent);border-radius:4px;padding:1px 5px}

.today-chip{font-size:10.5px;font-weight:800;color:#fff;background:var(--up);border-radius:5px;padding:2px 7px;white-space:nowrap}
.day-strip{display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.day-chip{font-size:10px;font-weight:700;color:var(--text-3);border:1px solid var(--border);border-radius:999px;padding:1px 7px;background:var(--surface);white-space:nowrap}
.day-chip b{margin-left:4px;color:var(--text-2)}
.day-chip.today{color:var(--up);border-color:rgba(209,59,52,.35);background:var(--red-bg)}
.day-chip.today b{color:var(--up)}
.chain-badge.mixed{color:var(--text-2);border-color:var(--border-strong);background:var(--surface);border-style:dashed}
.deriv-node.mixed{border-color:var(--border-strong);border-style:dashed;background:linear-gradient(180deg,var(--surface),var(--surface))}
.dv-votes{margin:2px 0 0;font-size:10px;line-height:1.5;color:var(--text-3);letter-spacing:.01em;font-variant-numeric:tabular-nums}
.deriv-node.mixed .dv-votes{color:var(--text-2)}
.ev-card.is-today{border-left-width:4px;background:linear-gradient(90deg,var(--red-bg),var(--surface) 62%)}
.ev-day{font-weight:800;color:var(--text-3);border:1px solid var(--border);border-radius:4px;padding:0 4px}
.ev-day.today{color:#fff;background:var(--up);border-color:var(--up)}
.ev-grade.sev-critical{background:var(--up)}
.ev-grade.sev-high{background:var(--warn)}
.ev-grade.sev-medium,.ev-grade.sev-slot{background:var(--text-3)}
.ev-grade.sev-high,.ev-grade.sev-medium,.ev-grade.sev-slot{color:#fff}

/* 新闻依据：事件卡上的原文外链。与观察池卡片的 news_evidence 同一口径命名，
   保证「新闻依据」在全站是一个概念，不是两套叫法。 */
.ev-evidence{margin:5px 0 0;font-size:11px;color:var(--text-3);display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.ev-evidence b{color:var(--text-2);font-weight:700}
.ev-evidence a{color:var(--blue,#3b82f6);text-decoration:none;border-bottom:1px dashed currentColor}
.ev-evidence a:hover{color:var(--accent,#f97316);border-bottom-style:solid}

@media(max-width:900px){
  .breaking-bar{padding:9px 10px;margin:0 0 14px}
  .bk-title{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
  .bk-cat{display:none}
  .bk-item a{gap:6px;padding:6px 4px}
  .m-row3{justify-content:flex-start}
  .m-row3 .chain-count{margin-left:0;font-size:10px}
  .m-row1 .today-chip{flex:none}
  .day-strip{gap:4px}
  .chain-head.m-head{flex-direction:column;align-items:stretch;gap:6px}
  .m-row{width:100%}
}

.hd-q-more{font-size:12px;font-weight:700;color:var(--accent);text-decoration:none}
.hd-q-more:hover{text-decoration:underline}
.chain-notice a{color:var(--accent);font-weight:700;text-decoration:none}
.chain-notice a:hover{text-decoration:underline}
/* Research OS 4.0：账户模式、真实复盘与数据来源 */
.sm-account,.review-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:14px 0}
.sm-account>div,.review-summary>div{padding:13px 15px;border:1px solid var(--border);border-radius:12px;background:var(--surface-2)}
.sm-account span,.review-summary span{display:block;color:var(--text-3);font-size:12px;margin-bottom:5px}
.sm-account b,.review-summary b{font-size:18px;color:var(--text-1)}
.sm-mode-note{padding:11px 13px;border-radius:10px;background:#f5f7fb;color:var(--text-2);line-height:1.6}
.sm-modes{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:12px 0 14px}
.sm-modes button{border:1px solid var(--border);background:#fff;border-radius:10px;padding:10px;text-align:left;color:var(--text-1);cursor:pointer}
.sm-modes button.active{border-color:var(--blue);box-shadow:0 0 0 2px color-mix(in srgb,var(--blue) 16%,transparent);background:#f3f7ff}
.sm-modes small{display:block;color:var(--text-3);margin-top:4px;line-height:1.35}
.data-source{margin-top:14px;border-top:1px solid var(--border);padding-top:10px;color:var(--text-3);font-size:12px}
.data-source summary{cursor:pointer;color:var(--blue)}
.review-ledger,.review-empty{border:1px solid var(--border);border-radius:14px;background:var(--surface);overflow:hidden;margin-top:16px}
.review-empty{padding:26px}.review-empty h2{margin:0 0 8px}.review-empty p{margin:0;color:var(--text-2);line-height:1.7}
.review-ledger-row{display:grid;grid-template-columns:1.4fr .8fr .8fr .8fr .6fr 1.8fr;gap:10px;padding:13px 15px;border-top:1px solid var(--border);align-items:center}
.review-ledger-row.head{border-top:0;background:var(--surface-2);font-size:12px;color:var(--text-3);font-weight:700}
.review-ledger-row small{display:block;color:var(--text-3);margin-top:3px}
@media(max-width:760px){.sm-account,.review-summary,.sm-modes{grid-template-columns:repeat(2,minmax(0,1fr))}.review-ledger{overflow-x:auto}.review-ledger-row{min-width:820px}.sm-row{grid-template-columns:1fr!important}}

/* Research OS 4.0：独立主页。所有类名均与旧主页隔离，避免旧布局规则回流。 */
.v4-home{width:100%;max-width:none;margin:0;padding:24px 28px 56px;color:var(--text-1)}
.v4-home-head{display:flex;justify-content:space-between;align-items:flex-end;gap:18px;margin-bottom:18px}
.v4-home-head h1{font-size:26px;line-height:1.2;margin:0 0 5px}.v4-home-head p{margin:0;color:var(--text-3)}
.v4-home-head-meta{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}.v4-home-head-meta span{border:1px solid var(--border-strong);border-radius:999px;background:#fff;padding:5px 9px;font-size:12px;color:var(--text-2)}
.v4-home-card{background:#fff;border:1px solid var(--border);border-radius:14px;padding:17px;box-shadow:0 7px 22px rgba(32,43,58,.035)}
.v4-home-hero-grid{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(300px,.75fr);gap:14px}
.v4-home-hero{border:2px solid #18212d;padding:20px}.v4-home-kicker{display:block;font-size:12px;font-weight:800;letter-spacing:.06em;color:var(--text-3);margin-bottom:5px}
.v4-home-hero h2{font-size:25px;line-height:1.35;margin:0 0 7px}.v4-home-hero>p{font-size:15px;line-height:1.7;color:var(--text-2);margin:0}
.v4-home-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:16px}.v4-home-actions>div{border-left:4px solid var(--border-strong);border-radius:8px;background:var(--surface-2);padding:10px 11px;min-width:0}.v4-home-actions b,.v4-home-actions span{display:block}.v4-home-actions b{margin-bottom:4px}.v4-home-actions span{font-size:12px;line-height:1.5;color:var(--text-2)}.v4-home-actions .is-risk{border-color:#a94f4f}.v4-home-actions .is-opportunity{border-color:#3f8460}.v4-home-actions .is-check{border-color:#a8752e}
.v4-home-profile{border:1px solid var(--border-strong);background:#fafbfc}.v4-home-profile-row{display:flex;justify-content:space-between;gap:18px;padding:10px 0;border-bottom:1px solid var(--border);font-size:13px}.v4-home-profile-row:last-child{border-bottom:0}.v4-home-profile-row span{color:var(--text-3);flex:0 0 auto}.v4-home-profile-row b{text-align:right;line-height:1.45}.v4-home-mode-buttons{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin-top:12px}.v4-home-mode-buttons button{border:1px solid var(--border-strong);border-radius:8px;background:#fff;padding:8px;color:var(--text-2);cursor:pointer;font-weight:700}.v4-home-mode-buttons button.active{background:#18212d;color:#fff;border-color:#18212d}
.v4-risk-pref{padding:11px 0 13px;border-bottom:1px solid var(--border)}.v4-risk-pref-buttons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.v4-risk-pref-buttons button{padding:8px 5px;border:1px solid var(--border-strong);border-radius:7px;background:#fff;color:var(--text-2);font:inherit;font-size:12px;font-weight:700;cursor:pointer}.v4-risk-pref-buttons button.active{border-color:#344f61;color:#203c4d;background:#edf3f5}.v4-risk-pref-buttons button:disabled{opacity:.6;cursor:default}.v4-risk-pref-state,.v4-risk-pref-error{font-size:11px;line-height:1.5;margin:8px 0 0;color:var(--text-2)}.v4-risk-pref-error{color:#9a3636}.v4-risk-pref small{display:block;margin-top:7px;color:var(--text-3);line-height:1.5}.v4-risk-pref-confirm{margin-top:9px;border:1px solid #9cb0bb;border-radius:8px;background:#f5f8f9;padding:9px;font-size:12px;line-height:1.5}.v4-risk-pref-confirm>div{display:flex;gap:7px;flex-wrap:wrap;margin-top:8px}.v4-risk-pref-confirm button{border:1px solid #405e6f;border-radius:6px;background:#405e6f;color:#fff;padding:6px 9px;font:inherit;font-weight:700;cursor:pointer}.v4-risk-pref-confirm button+button{background:#fff;color:#405e6f}.v4-risk-pref-warning{margin:0 0 10px!important;padding:6px 9px;border-left:3px solid #a8752e;background:#f8f5ef;color:#68502c!important;font-size:12px!important}
.v4-home-evidence{margin-top:12px;border-top:1px solid var(--border);padding-top:10px;color:var(--text-3);font-size:12px}.v4-home-evidence summary{cursor:pointer;color:var(--accent);font-weight:800}.v4-home-evidence p{margin:8px 0 0!important;font-size:12px!important;line-height:1.65!important}
.v4-home-quadrants{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:14px}.v4-home-quadrants .v4-home-card{min-height:124px;border-top-width:5px}.v4-home-quadrants span{font-size:12px;color:var(--text-3)}.v4-home-quadrants strong{display:block;font-size:19px;margin:6px 0}.v4-home-quadrants p{margin:0;color:var(--text-2);line-height:1.6}.v4-home-quadrants .is-market{border-top-color:#a94f4f}.v4-home-quadrants .is-fund{border-top-color:#b68036}.v4-home-quadrants .is-theme{border-top-color:#4a6fae}
.v4-home-lower{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(310px,.75fr);gap:14px;margin-top:14px}.v4-home-section-title{display:flex;justify-content:space-between;align-items:center;gap:12px}.v4-home-section-title h2{font-size:18px;margin:0}.v4-home-section-title>a{font-size:12px;font-weight:700;text-decoration:none;color:var(--accent)}.v4-home-section-title>span{font-size:12px;color:var(--text-3)}.v4-home-section-note{margin:5px 0 10px;color:var(--text-3);font-size:12px}
.v4-home-position{display:grid;grid-template-columns:minmax(160px,1.1fr) minmax(95px,.65fr) minmax(95px,.65fr) minmax(220px,1.5fr);gap:8px;align-items:center;padding:11px 0;border-top:1px solid var(--border)}.v4-home-position>div:first-child b,.v4-home-position>div:first-child span,.v4-home-position-action b,.v4-home-position-action span{display:block}.v4-home-position>div:first-child span,.v4-home-position-action span{font-size:11px;color:var(--text-3);margin-top:2px;line-height:1.45}.v4-home-axis{font-size:11px;border:1px solid var(--border);border-radius:999px;padding:4px 7px;width:max-content;max-width:100%}.v4-home-axis.is-positive{color:var(--signal-bull);border-color:var(--signal-bull-border);background:var(--signal-bull-bg)}.v4-home-axis.is-negative{color:var(--signal-bear);border-color:var(--signal-bear-border);background:var(--signal-bear-bg)}.v4-home-axis.is-neutral{color:#626d79;background:#f5f6f8}.v4-home-empty{border-top:1px solid var(--border);padding:18px 0;color:var(--text-3)}
.v4-home-sentinel{border:2px solid #65717f;background:#fafbfc}.v4-home-sentinel>.v4-home-section-title span{border:1px solid currentColor;border-radius:999px;padding:3px 7px}.v4-home-sentinel .is-ok{color:#28613b}.v4-home-sentinel .is-warning{color:#8f2727}.v4-home-sentinel>strong{display:block;font-size:20px;margin:12px 0 5px}.v4-home-sentinel>p{color:var(--text-2);line-height:1.6;margin:0 0 10px}.v4-home-sentinel>div:not(.v4-home-section-title),.v4-sentinel-details>div{display:grid;grid-template-columns:1fr auto;gap:10px;border-top:1px solid var(--border);padding:8px 0;font-size:12px}.v4-home-sentinel>div span,.v4-sentinel-details>div span{color:var(--text-3)}.v4-sentinel-details{margin-top:10px;border-top:1px solid var(--border);padding-top:8px}.v4-sentinel-details>summary{cursor:pointer;font-size:12px;font-weight:800;color:var(--accent);list-style-position:inside;margin-bottom:4px}
.v4-home-timeline{margin-top:14px}.v4-home-timeline>.v4-home-section-title{margin-bottom:12px}.v4-home-timeline>div:last-child{display:flex;gap:8px;flex-wrap:wrap}.v4-home-stage{border:1px solid var(--border-strong);border-radius:8px;padding:6px 9px;color:var(--text-3);font-size:12px}.v4-home-stage.is-done{background:#f0f5f2;color:#356448;border-color:#91b59d}.v4-home-stage.is-current{background:#18212d;color:#fff;border-color:#18212d}.v4-home-boundary{text-align:center;color:var(--text-3);font-size:11px;padding:14px 8px 0}
@media(max-width:1050px){.v4-home-quadrants{grid-template-columns:repeat(2,minmax(0,1fr))}.v4-home-actions{grid-template-columns:1fr}.v4-home-position{grid-template-columns:1.1fr .7fr .7fr}.v4-home-position-action{grid-column:1/-1}}
@media(max-width:760px){.v4-home{padding:16px 12px 44px}.v4-home-head{align-items:flex-start;flex-direction:column}.v4-home-head-meta{justify-content:flex-start}.v4-home-hero-grid,.v4-home-lower{grid-template-columns:1fr}.v4-home-hero h2{font-size:21px}.v4-home-quadrants{grid-template-columns:1fr 1fr;gap:9px}.v4-home-quadrants .v4-home-card{min-height:128px;padding:13px}.v4-home-quadrants strong{font-size:16px}.v4-home-position{grid-template-columns:1fr 1fr}.v4-home-position>div:first-child,.v4-home-position-action{grid-column:1/-1}.v4-home-axis{width:100%;text-align:center}.v4-home-mode-buttons{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:430px){.v4-home-quadrants{grid-template-columns:1fr}.v4-home-card{border-radius:12px}.v4-home-head h1{font-size:23px}}

/* Research OS 4.0 · 观察池 / 推演链 / 策略复盘 */
.v4-page{width:100%;max-width:none;margin:0;padding:24px 28px 56px;color:var(--text-1)}
.v4-page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin-bottom:18px}.v4-page-head h1{font-size:26px;margin:0 0 5px}.v4-page-head p{margin:0;color:var(--text-3)}.v4-page-head>span{border:1px solid var(--border-strong);border-radius:999px;padding:5px 9px;background:#fff;color:var(--text-2);font-size:12px;white-space:nowrap}
.v4-empty,.v4-audit-flag{border:1px solid var(--border);border-radius:12px;background:#fff;padding:20px;line-height:1.65}.v4-audit-flag{border-color:#d3a252;background:#fff8e9;margin-bottom:14px}
.v4-source{margin-top:14px;border:1px solid var(--border);border-radius:10px;background:#fff;padding:10px 13px;color:var(--text-3);font-size:12px}.v4-source summary{cursor:pointer;font-weight:700;color:var(--text-2)}.v4-source p{margin:8px 0 0;overflow-wrap:anywhere}
.v4-watch-filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}.v4-watch-filters button{border:1px solid var(--border-strong);border-radius:999px;background:#fff;padding:8px 12px;color:var(--text-2);cursor:pointer}.v4-watch-filters button.active{background:#18212d;border-color:#18212d;color:#fff}
.v4-watch-layout{display:grid;grid-template-columns:245px minmax(0,1fr);gap:14px;align-items:start}.v4-watch-layout>aside,.v4-watch-table{background:#fff;border:1px solid var(--border);border-radius:14px}.v4-watch-layout>aside{padding:16px;position:sticky;top:16px}.v4-watch-layout>aside h2{font-size:17px;margin:0 0 12px}.v4-watch-layout>aside>div{border-top:1px solid var(--border);padding:11px 0}.v4-watch-layout>aside b,.v4-watch-layout>aside span{display:block}.v4-watch-layout>aside span{color:var(--text-3);font-size:12px;line-height:1.5;margin-top:3px}
.v4-watch-table{overflow:hidden}.v4-watch-head,.v4-watch-row>summary{display:grid;grid-template-columns:minmax(150px,1.1fr) minmax(105px,.7fr) minmax(105px,.7fr) minmax(150px,1fr) minmax(230px,1.6fr) 44px;gap:10px;align-items:center}.v4-watch-head{padding:10px 14px;background:var(--surface-2);color:var(--text-3);font-size:11px;font-weight:800}.v4-watch-row{border-top:1px solid var(--border)}.v4-watch-row>summary{padding:13px 14px;cursor:pointer;list-style:none}.v4-watch-row>summary::-webkit-details-marker{display:none}.v4-watch-row>summary span:first-child b,.v4-watch-row>summary span:first-child small,.v4-watch-row>summary span:nth-child(5) b,.v4-watch-row>summary span:nth-child(5) small{display:block}.v4-watch-row small{font-size:11px;color:var(--text-3);margin-top:3px;line-height:1.45}.v4-watch-row>summary>i{font-style:normal;font-size:11px;color:var(--accent)}.v4-watch-row[open]>summary>i{font-size:0}.v4-watch-row[open]>summary>i:after{content:'收起';font-size:11px}.v4-axis{font-size:11px;border:1px solid var(--border);border-radius:999px;padding:5px 7px;text-align:center}.v4-axis.is-positive{background:var(--signal-bull-bg);color:var(--signal-bull);border-color:var(--signal-bull-border)}.v4-axis.is-negative{background:var(--signal-bear-bg);color:var(--signal-bear);border-color:var(--signal-bear-border)}.v4-axis.is-neutral{background:#f5f6f8;color:#626d79}.v4-watch-detail{padding:12px 14px 15px;background:#fafbfc;border-top:1px dashed var(--border);font-size:12px;line-height:1.6}.v4-watch-detail p{margin:4px 0}.v4-watch-detail a{display:block;color:var(--accent);margin-top:5px;text-decoration:none}.v4-watch-evidence{margin-top:10px;border-top:1px solid var(--border);padding-top:9px;color:var(--text-3)}.v4-watch-evidence summary{cursor:pointer;color:var(--accent);font-weight:800}.v4-watch-evidence p{margin-top:7px}
.v4-action-plan{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:10px}.v4-action-plan p{display:grid;grid-template-columns:72px minmax(0,1fr);gap:8px;margin:0!important;padding:9px 10px;border:1px solid var(--border);border-radius:8px;background:#fff}.v4-action-plan b{color:var(--text-1)}.v4-action-plan span{color:var(--text-2)}
.v4-focus-layout{display:grid;grid-template-columns:280px minmax(0,1fr);gap:14px}.v4-chain-list,.v4-focus-layout>main{background:#fff;border:1px solid var(--border);border-radius:14px}.v4-chain-list{padding:14px}.v4-chain-list h2{font-size:16px;margin:0 0 10px}.v4-chain-list button{display:block;width:100%;text-align:left;border:1px solid transparent;border-radius:9px;background:transparent;padding:10px;cursor:pointer;color:var(--text-2)}.v4-chain-list button+button{margin-top:5px}.v4-chain-list button.active{border-color:#7da0d8;background:#edf3ff}.v4-chain-list button b,.v4-chain-list button span{display:block}.v4-chain-list button span{font-size:11px;color:var(--text-3);margin-top:3px}.v4-focus-layout>main{padding:16px}.v4-chain-flow{display:grid;grid-template-columns:minmax(0,1.1fr) 22px minmax(0,1fr) 22px minmax(0,1fr);gap:8px;align-items:center}.v4-chain-flow>i{text-align:center;color:var(--text-3)}.v4-chain-flow>section{align-self:stretch;border:1px solid var(--border);border-radius:10px;padding:13px;background:#fafbfc}.v4-chain-flow>section>span{display:block;font-size:11px;font-weight:800;color:var(--text-3);margin-bottom:9px}.v4-chain-flow a{display:block;border-top:1px solid var(--border);padding:8px 0;text-decoration:none;color:var(--text-1)}.v4-chain-flow a:first-of-type{border-top:0}.v4-chain-flow a b,.v4-chain-flow a small{display:block}.v4-chain-flow a small,.v4-chain-flow em{font-size:11px;color:var(--text-3);font-style:normal;margin-top:3px}.v4-chain-flow h2{font-size:19px;margin:8px 0}.v4-chain-flow p{color:var(--text-2);line-height:1.65}.v4-chain-decision{display:flex;justify-content:space-between;gap:12px;align-items:center;border:1px solid #d3a252;background:#fff8e9;border-radius:10px;padding:13px;margin-top:12px}.v4-chain-decision p{margin:4px 0 0;color:var(--text-2)}.v4-chain-decision>span{border-radius:999px;padding:5px 9px;font-size:11px;white-space:nowrap}.v4-chain-decision .ok{background:#eaf6ee;color:#28613b}.v4-chain-decision .wait{background:#fff0d5;color:#8a5b16}.v4-cross-account{display:grid;grid-template-columns:auto 1fr;gap:8px 14px;border:1px solid var(--border);border-radius:10px;padding:13px;margin-top:12px}.v4-cross-account b{grid-row:1/3}.v4-cross-account span{font-size:12px;color:var(--text-2)}
.v4-chain-list button.v4-chain-card{border-left-width:3px}.v4-chain-list button.bull{border-color:var(--signal-bull-border);border-left-color:var(--signal-bull);background:var(--signal-bull-bg)}.v4-chain-list button.bear{border-color:var(--signal-bear-border);border-left-color:var(--signal-bear);background:var(--signal-bear-bg)}.v4-chain-list button.mixed{border-color:#e7c58d;border-left-color:var(--orange);background:#fff9ef}.v4-chain-list button.neutral{border-color:var(--border);border-left-color:var(--border-strong);background:var(--surface-2)}.v4-chain-list button.bull.active{border-color:var(--signal-bull);background:var(--signal-bull-bg);box-shadow:0 0 0 2px rgba(209,59,52,.10)}.v4-chain-list button.bear.active{border-color:var(--signal-bear);background:var(--signal-bear-bg);box-shadow:0 0 0 2px rgba(18,138,91,.10)}.v4-chain-list button.mixed.active{border-color:var(--orange);background:#fff9ef;box-shadow:0 0 0 2px rgba(180,83,9,.10)}.v4-chain-list button.neutral.active{border-color:var(--border-strong);background:var(--surface-2);box-shadow:0 0 0 2px rgba(98,109,121,.10)}
.v4-chain-sentiment{border-left-width:3px!important;background:#fcfcfd!important}.v4-chain-sentiment.bull{border-left-color:var(--signal-bull)}.v4-chain-sentiment.bear{border-left-color:var(--signal-bear)}.v4-chain-sentiment.mixed{border-left-color:var(--orange)}.v4-chain-sentiment.neutral{border-left-color:var(--border-strong)}.v4-chain-direction{display:inline-block;border:1px solid var(--border);border-radius:999px;padding:4px 9px;font-size:15px}.v4-chain-sentiment.bull .v4-chain-direction{color:var(--signal-bull);border-color:var(--signal-bull-border);background:var(--signal-bull-bg)}.v4-chain-sentiment.bear .v4-chain-direction{color:var(--signal-bear);border-color:var(--signal-bear-border);background:var(--signal-bear-bg)}.v4-chain-sentiment.mixed .v4-chain-direction{color:var(--orange);border-color:#e7c58d;background:#fff9ef}.v4-chain-sentiment.neutral .v4-chain-direction{color:var(--text-2);background:var(--surface-2)}
.v4-review-scores{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-bottom:14px}.v4-review-scores>div,.v4-review-bottom>section{border:1px solid var(--border);border-radius:12px;background:#fff;padding:15px}.v4-review-scores span,.v4-review-scores b{display:block}.v4-review-scores span{color:var(--text-3);font-size:12px}.v4-review-scores b{font-size:22px;margin-top:7px}.v4-review-ledger{border:1px solid var(--border);border-radius:12px;background:#fff;overflow-x:auto}.v4-review-row{display:grid;grid-template-columns:minmax(150px,1.3fr) .7fr .55fr .55fr .55fr .5fr minmax(200px,1.6fr);gap:9px;align-items:center;padding:12px 14px;border-top:1px solid var(--border);min-width:930px}.v4-review-row.head{border-top:0;background:var(--surface-2);font-size:11px;color:var(--text-3);font-weight:800}.v4-review-row small{display:block;font-size:11px;color:var(--text-3);margin-top:3px}.v4-review-bottom{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:14px}.v4-review-bottom h2{font-size:17px;margin:0 0 10px}.v4-review-bottom p{font-size:12px;line-height:1.6;color:var(--text-2)}
@media(max-width:980px){.v4-watch-layout,.v4-focus-layout{grid-template-columns:1fr}.v4-watch-layout>aside{position:static}.v4-watch-head{display:none}.v4-watch-row>summary{grid-template-columns:1fr 1fr 1fr}.v4-watch-row>summary>span:nth-child(4),.v4-watch-row>summary>span:nth-child(5){grid-column:1/-1}.v4-chain-flow{grid-template-columns:1fr}.v4-chain-flow>i{transform:rotate(90deg)}.v4-review-scores{grid-template-columns:repeat(3,minmax(0,1fr))}.v4-review-bottom{grid-template-columns:1fr}}
@media(max-width:760px){.v4-page{padding:16px 12px 44px}.v4-page-head{align-items:flex-start;flex-direction:column}.v4-page-head h1{font-size:22px}.v4-watch-row>summary{grid-template-columns:1fr 1fr}.v4-watch-row>summary>span:first-child,.v4-watch-row>summary>span:nth-child(4),.v4-watch-row>summary>span:nth-child(5){grid-column:1/-1}.v4-watch-row>summary>i{position:absolute;right:22px}.v4-review-scores{grid-template-columns:1fr 1fr}.v4-cross-account{grid-template-columns:1fr}.v4-cross-account b{grid-row:auto}}
@media(max-width:760px){.v4-action-plan{grid-template-columns:1fr}}
