:root {
  color-scheme: light;
  --bg: #f2f5f9;
  --surface: #ffffff;
  --surface-soft: #f7f9fc;
  --ink: #172238;
  --muted: #69788d;
  --faint: #93a0b2;
  --line: #dfe6ef;
  --line-strong: #cbd6e3;
  --blue: #216be6;
  --blue-hover: #165ac7;
  --blue-soft: #eaf2ff;
  --cyan: #0a91b9;
  --up: #df334d;
  --up-soft: #fff0f2;
  --down: #07946d;
  --down-soft: #eaf9f4;
  --warning: #a56700;
  --warning-soft: #fff7e2;
  --dark: #0d1728;
  --dark-soft: #132139;
  --radius: 12px;
  --radius-sm: 8px;
  --shadow: 0 7px 24px rgba(22, 41, 72, .065);
  --focus: 0 0 0 3px rgba(33, 107, 230, .18);
}
* { box-sizing: border-box; }
html { min-width: 0; background: var(--bg); }
body {
  margin: 0;
  min-width: 0;
  overflow-x: hidden;
  color: var(--ink);
  background:
    radial-gradient(circle at 90% -10%, rgba(44, 121, 238, .08), transparent 28rem),
    var(--bg);
  font: 13px/1.55 Inter, "Segoe UI", "Microsoft YaHei UI", "PingFang SC", system-ui, sans-serif;
  -webkit-font-smoothing: antialiased;
}
button, input, select { font: inherit; }
button { color: inherit; }
button, [role="button"], summary { -webkit-tap-highlight-color: transparent; }
button:focus-visible, input:focus-visible, select:focus-visible, summary:focus-visible {
  outline: none;
  box-shadow: var(--focus);
}
svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
a { color: var(--blue); text-decoration: none; }
a:hover { text-decoration: underline; }
h1, h2, h3, p { margin-top: 0; }
h1, h2, h3 { letter-spacing: -.02em; }
.sr-only {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0;
}

.app-header {
  position: sticky;
  z-index: 100;
  top: 0;
  border-bottom: 1px solid rgba(203, 214, 227, .9);
  background: rgba(255, 255, 255, .94);
  box-shadow: 0 4px 18px rgba(17, 34, 59, .055);
  backdrop-filter: blur(16px);
}
.app-bar {
  display: flex;
  align-items: center;
  width: min(100%, 1560px);
  min-height: 62px;
  margin: auto;
  padding: 0 22px;
  gap: 18px;
}
.brand { display: flex; flex: 0 0 auto; align-items: center; gap: 10px; }
.brand-mark {
  display: grid;
  width: 35px;
  height: 35px;
  place-items: center;
  border-radius: 10px;
  color: #fff;
  background: linear-gradient(145deg, #2d7bf0, #1555c5);
  box-shadow: 0 6px 14px rgba(33, 107, 230, .24);
}
.brand-mark svg { width: 21px; height: 21px; }
.brand-copy h1 { margin: 0; font-size: 15px; line-height: 1.2; }
.brand-copy span { display: block; max-width: 160px; margin-top: 2px; overflow: hidden; color: var(--muted); font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
.app-nav {
  display: flex;
  flex: 1;
  align-self: stretch;
  justify-content: center;
  min-width: 0;
  overflow-x: auto;
  scrollbar-width: none;
}
.app-nav::-webkit-scrollbar { display: none; }
.nav-button {
  position: relative;
  display: flex;
  flex: 0 0 auto;
  align-items: center;
  gap: 6px;
  min-width: 0;
  padding: 0 12px;
  border: 0;
  color: #64748a;
  background: transparent;
  cursor: pointer;
  font-size: 12px;
  font-weight: 650;
  white-space: nowrap;
}
.nav-button::after {
  position: absolute;
  right: 10px;
  bottom: 0;
  left: 10px;
  height: 3px;
  border-radius: 3px 3px 0 0;
  background: var(--blue);
  content: "";
  opacity: 0;
  transform: scaleX(.3);
  transition: .18s ease;
}
.nav-button:hover { color: var(--blue); background: #f6f9ff; }
.nav-button.active { color: var(--blue); }
.nav-button.active::after { opacity: 1; transform: scaleX(1); }
.nav-button svg { width: 16px; height: 16px; }
.header-actions { display: flex; flex: 0 0 auto; align-items: center; gap: 9px; }
.market-state {
  display: inline-flex;
  align-items: center;
  max-width: 128px;
  gap: 6px;
  overflow: hidden;
  color: var(--muted);
  font-size: 11px;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.market-state i { width: 7px; height: 7px; border-radius: 50%; background: var(--down); box-shadow: 0 0 0 4px var(--down-soft); }
.refresh {
  display: grid;
  width: 36px;
  height: 36px;
  place-items: center;
  border: 1px solid var(--line);
  border-radius: 9px;
  color: var(--blue);
  background: #fff;
  cursor: pointer;
}
.refresh:hover { border-color: #a9c6f5; background: var(--blue-soft); }
.refresh:disabled { opacity: .55; cursor: wait; }
.refresh:disabled svg { animation: spin .8s linear infinite; }

main { width: min(100%, 1480px); margin: 0 auto; padding: 14px 22px 48px; }
.page-note {
  margin: 0 0 10px;
  padding: 7px 11px;
  border: 1px solid #dce6f3;
  border-radius: var(--radius-sm);
  color: #64758b;
  background: rgba(255,255,255,.7);
  font-size: 11px;
}
.app-view { display: none; }
.app-view.active { display: block; animation: view-in .18s ease-out; }
.view-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  min-height: 47px;
  margin-bottom: 10px;
  gap: 16px;
}
.view-heading h2 { margin: 0; font-size: 20px; }
.view-heading p { margin: 2px 0 0; color: var(--muted); font-size: 12px; }
.view-badge, .kline-platform-badge, .provider-badge, .severity {
  display: inline-flex;
  align-items: center;
  flex: 0 0 auto;
  min-height: 24px;
  padding: 2px 9px;
  border-radius: 999px;
  color: #1759bc;
  background: var(--blue-soft);
  font-size: 10px;
  font-weight: 750;
}
.panel {
  min-width: 0;
  margin-bottom: 12px;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--surface);
  box-shadow: var(--shadow);
}
.section-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  min-height: 30px;
  margin-bottom: 10px;
  gap: 12px;
}
.section-heading h2 { margin: 0; font-size: 15px; }
.section-meta, .small-label, .market-name, .coverage { color: var(--muted); font-size: 11px; }
.small-label { display: block; margin-bottom: 3px; }
.empty {
  display: grid;
  min-height: 90px;
  place-items: center;
  padding: 20px;
  color: var(--muted);
  text-align: center;
}
.positive { color: var(--up) !important; }
.negative { color: var(--down) !important; }

.metrics {
  display: grid;
  grid-template-columns: repeat(8, minmax(0, 1fr));
  margin-bottom: 12px;
  gap: 8px;
}
.metric {
  position: relative;
  min-width: 0;
  min-height: 84px;
  padding: 13px;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--surface);
  box-shadow: 0 4px 14px rgba(22, 41, 72, .045);
}
.metric::before {
  position: absolute;
  top: 0;
  right: 0;
  left: 0;
  height: 2px;
  background: #b8c5d5;
  content: "";
}
.metric.primary { background: linear-gradient(145deg, #fff, #f0f6ff); }
.metric.primary::before { background: var(--blue); }
.metric-label {
  overflow: hidden;
  color: var(--muted);
  font-size: 10px;
  font-weight: 650;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.metric-value { margin-top: 10px; overflow: hidden; font-size: clamp(15px, 1.3vw, 21px); font-weight: 780; letter-spacing: -.03em; text-overflow: ellipsis; white-space: nowrap; }

.overview-grid { display: grid; grid-template-columns: minmax(350px, .8fr) minmax(0, 1.2fr); gap: 12px; align-items: stretch; }
.overview-grid > .panel { margin: 0; }
.report-toolbar, .research-toolbar, .trend-toolbar, .trend-toolbar-group, .ai-controls, .filter-bar, .pagination, .window-tabs, .rank-tabs, .horizon-tabs {
  display: flex;
  align-items: center;
  gap: 7px;
}
.report-toolbar { flex-wrap: wrap; justify-content: flex-end; }
.report-card { overflow: hidden; border: 1px solid var(--line); border-radius: 10px; background: var(--surface-soft); }
.report-head { display: grid; grid-template-columns: 62px 1fr; align-items: center; gap: 12px; padding: 12px; }
.report-score { display: grid; width: 58px; height: 58px; place-items: center; border-radius: 50%; color: #fff; background: linear-gradient(145deg, #2f7ef6, #174fae); font-size: 20px; font-weight: 800; }
.report-score span { display: block; margin-top: -14px; font-size: 9px; font-weight: 500; opacity: .8; }
.report-title { margin: 0 0 3px; font-size: 15px; }
.report-subtitle { color: var(--muted); font-size: 11px; }
.rule-brief { padding: 10px 12px; border-top: 1px solid var(--line); background: #fff; }
.rule-brief-main { font-weight: 650; }
.rule-highlights { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.rule-highlight { padding: 3px 7px; border-radius: 6px; color: var(--down); background: var(--down-soft); font-size: 10px; }
.rule-highlight.caution { color: var(--warning); background: var(--warning-soft); }
.compact-details { border-top: 1px solid var(--line); }
.compact-details summary, .more-filters summary { list-style: none; color: var(--blue); cursor: pointer; font-size: 11px; font-weight: 650; }
.compact-details summary::-webkit-details-marker, .more-filters summary::-webkit-details-marker { display: none; }
.report-copy { max-height: 360px; margin: 10px 0 0; overflow: auto; white-space: pre-wrap; font: 12px/1.7 "Segoe UI", sans-serif; }
.copy-button, .apply-filter, .research-refresh, .pagination button, .rank-tab, .window-tab, .horizon-tab, .ai-generate {
  min-height: 34px;
  padding: 6px 11px;
  border: 1px solid var(--line-strong);
  border-radius: 7px;
  color: #53657b;
  background: #fff;
  cursor: pointer;
  font-weight: 650;
}
.copy-button:hover, .rank-tab:hover, .window-tab:hover, .horizon-tab:hover { color: var(--blue); border-color: #a7c6f7; }
.apply-filter, .ai-generate { color: #fff; border-color: var(--blue); background: var(--blue); }
.apply-filter:hover, .ai-generate:hover { border-color: var(--blue-hover); background: var(--blue-hover); }
button:disabled { opacity: .55; cursor: not-allowed; }
.rank-tab.active, .window-tab.active, .horizon-tab.active { color: var(--blue); border-color: #a8c7f7; background: var(--blue-soft); }

.chart-wrap, .kline-chart-stage { position: relative; min-width: 0; overflow: hidden; }
.chart-wrap { min-height: 272px; border: 1px solid var(--line); border-radius: 10px; background: linear-gradient(180deg, #fff, #f7faff); }
.chart-wrap canvas { display: block; width: 100%; height: 270px; cursor: crosshair; }
.chart-tooltip, .kline-tooltip {
  position: absolute;
  z-index: 8;
  display: none;
  min-width: 195px;
  padding: 9px 11px;
  border: 1px solid rgba(134, 157, 189, .35);
  border-radius: 8px;
  color: #dce7f7;
  background: rgba(10, 20, 38, .94);
  box-shadow: 0 12px 30px rgba(6, 17, 35, .28);
  pointer-events: none;
  font-size: 11px;
}
.chart-tooltip.visible, .kline-tooltip.visible { display: grid; gap: 3px; }
.chart-tooltip strong, .kline-tooltip strong { color: #fff; }
.chart-tooltip b, .kline-tooltip b { font-weight: 750; }
.tip-up { color: #ff6d7d; }
.tip-down { color: #35d19e; }

.ai-workbench { padding: 10px 12px; }
.ai-widget-head { display: flex; align-items: center; justify-content: space-between; gap: 14px; }
.ai-widget-title { display: flex; align-items: center; min-width: 0; gap: 9px; }
.ai-widget-title h2 { margin: 0; font-size: 14px; }
.ai-widget-title p { margin: 1px 0 0; overflow: hidden; color: var(--muted); font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
.ai-orb { display: grid; width: 32px; height: 32px; place-items: center; flex: 0 0 auto; border-radius: 9px; color: #fff; background: linear-gradient(145deg, #6657e9, #2379e5); font-size: 10px; font-weight: 800; box-shadow: 0 5px 13px rgba(69, 79, 215, .2); }
.ai-output:has(.ai-placeholder) { margin: 0; }
.ai-placeholder { margin: 7px 0 0 41px; color: var(--muted); font-size: 10px; }
.ai-center-intro { margin-bottom: 12px; padding: 12px 15px; border: 1px solid #cfdfff; border-radius: var(--radius); color: #40597d; background: linear-gradient(120deg, #f4f7ff, #f5fbff); }
.ai-report-head, .ai-report-grid, .ai-highlights, .ai-lists, .profile-grid, .event-detail-grid, .kline-signal-grid { display: grid; gap: 9px; }
.ai-report { margin-top: 10px; padding-top: 11px; border-top: 1px solid var(--line); }
.ai-output:not(:has(.ai-placeholder)) { margin-top: 11px; }
.ai-report-head { grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; padding: 11px 12px; border: 1px solid #d8e4f5; border-radius: 10px; background: linear-gradient(110deg, #f4f8ff, #fbfdff); }
.ai-report-heading { min-width: 0; }
.ai-report-title { margin: 0; overflow: hidden; font-size: 14px; text-overflow: ellipsis; white-space: nowrap; }
.ai-report-meta { margin-top: 2px; color: var(--muted); font-size: 10px; }
.ai-verdict { min-width: 62px; padding: 6px 10px; border-radius: 7px; color: #fff; background: var(--blue); text-align: center; font-size: 12px; font-weight: 800; }
.ai-verdict.可关注 { background: #12765f; }
.ai-verdict.等待确认 { color: #815600; background: #fff0c7; }
.ai-verdict.暂时回避, .ai-verdict.不可用 { background: #b94a59; }
.ai-verdict.数据不足, .ai-verdict.降级 { background: #718096; }
.ai-source-badge { padding: 4px 8px; border: 1px solid #c8daf5; border-radius: 999px; color: #42658f; background: #fff; font-size: 9px; font-weight: 700; white-space: nowrap; }
.ai-summary-professional { margin: 10px 2px 0; color: #273b57; font-size: 13px; font-weight: 600; line-height: 1.7; }
.evidence-chips { display: flex; min-width: 0; flex-wrap: wrap; gap: 6px; margin-top: 9px; }
.evidence-chip { display: inline-flex; align-items: baseline; gap: 5px; max-width: 100%; padding: 5px 8px; border: 1px solid #dce5f1; border-radius: 6px; color: #52657e; background: #f7f9fc; font-size: 10px; }
.evidence-chip strong { overflow: hidden; color: #233b5d; text-overflow: ellipsis; white-space: nowrap; }
.ai-report-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); margin-top: 9px; }
.ai-report-block { min-width: 0; padding: 10px 11px; border: 1px solid var(--line); border-radius: 8px; background: #fff; }
.ai-report-block h3 { margin: 0 0 6px; color: #304866; font-size: 11px; }
.ai-report-block ul { margin: 0; padding-left: 16px; color: #4a5d75; font-size: 11px; }
.ai-report-block li { margin: 2px 0; overflow-wrap: anywhere; }
.ai-highlights { grid-template-columns: repeat(3, minmax(0, 1fr)); margin-top: 9px; }
.ai-highlight-pro { min-width: 0; padding: 10px 11px; border: 1px solid #dce5f1; border-radius: 9px; background: var(--surface-soft); }
.ai-highlight-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; }
.ai-highlight-head h3 { margin: 0; overflow: hidden; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.ai-highlight-head span { flex: 0 0 auto; padding: 2px 6px; border-radius: 5px; color: #31577f; background: #e8f1ff; font-size: 9px; font-weight: 700; }
.ai-highlight-pro p { margin: 7px 0 0; color: #4b5e76; font-size: 11px; line-height: 1.6; }
.ai-highlight-pro .evidence-chips { margin-top: 7px; }
.ai-highlight-pro .evidence-chip { background: #fff; }
.ai-highlight, .ai-list-card, .ai-item-card, .profile-card, .event-card, .kline-signal-card { padding: 10px; border: 1px solid var(--line); border-radius: 9px; background: var(--surface-soft); }
.ai-lists { grid-template-columns: repeat(2, 1fr); margin-top: 9px; }
.ai-list-card h4, .ai-item-card h4 { margin: 0 0 6px; font-size: 12px; }
.ai-list-card ul, .research-list { margin: 5px 0 0; padding-left: 17px; }
.ai-list-card li, .research-list li { margin: 3px 0; }
.ai-items { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin-top: 9px; }
.ai-meta, .ai-data-quality { color: var(--muted); font-size: 10px; }
.ai-stale { color: var(--warning); }
.ai-error { margin: 8px 0 0; color: #a13b22; }
.compact-details { margin-top: 9px; padding: 9px 11px; border: 1px solid var(--line); border-radius: 8px; }
.ai-evidence-details { color: #52657e; background: #fbfcfe; }
.ai-evidence-details summary { cursor: pointer; color: var(--blue); font-size: 10px; font-weight: 700; }
.compact-details-body { padding-top: 3px; }

.filter-bar { position: relative; flex-wrap: wrap; margin-bottom: 10px; }
.filter-bar input, .filter-bar select, .watch-form input {
  min-width: 0;
  min-height: 36px;
  padding: 7px 10px;
  border: 1px solid var(--line-strong);
  border-radius: 7px;
  color: var(--ink);
  background: #fff;
}
.filter-bar input:focus, .filter-bar select:focus, .watch-form input:focus { border-color: #85aff0; }
.primary-filters > input { flex: 1 1 180px; }
.primary-filters > select { flex: 0 1 145px; }
.more-filters { position: relative; margin-left: auto; }
.more-filters > summary { min-height: 34px; padding: 7px 10px; border: 1px solid var(--line); border-radius: 7px; background: #fff; }
.more-filters[open] > summary { color: #fff; border-color: var(--blue); background: var(--blue); }
.more-filter-grid {
  position: absolute;
  z-index: 15;
  top: calc(100% + 6px);
  right: 0;
  display: grid;
  width: min(560px, 82vw);
  grid-template-columns: repeat(3, minmax(130px, 1fr));
  gap: 8px;
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: #fff;
  box-shadow: 0 15px 35px rgba(22, 41, 72, .16);
}
.quality-note, .research-note, .signal {
  margin: 0 0 10px;
  padding: 8px 10px;
  border-radius: 7px;
  color: #5d6f85;
  background: #f3f6fa;
  font-size: 11px;
}
.signal { color: #925300; background: var(--warning-soft); }

.table-wrap { overflow: auto; border: 1px solid var(--line); border-radius: 9px; }
table { width: 100%; border-collapse: separate; border-spacing: 0; }
thead { position: sticky; z-index: 3; top: 61px; }
th { padding: 9px 11px; color: #69798e; background: #f5f7fa; font-size: 10px; font-weight: 750; text-align: left; white-space: nowrap; }
td { padding: 10px 11px; border-top: 1px solid #edf1f6; vertical-align: top; }
tbody tr { transition: background .12s; }
tbody tr:hover { background: #f7faff; }
.item-name { overflow: hidden; font-weight: 720; text-overflow: ellipsis; white-space: nowrap; }
.score { display: inline-grid; min-width: 36px; height: 27px; place-items: center; border-radius: 7px; color: #fff; background: #506887; font-weight: 800; }
.severity.high, .score.high { color: #b42139; background: var(--up-soft); }
.severity.medium, .score.medium { color: #956000; background: var(--warning-soft); }
.severity.low, .score.low { color: #376282; background: #edf4f9; }
.pagination { justify-content: center; margin-top: 10px; }
.pagination button { min-width: 74px; }
.event-detail { margin-top: 10px; padding: 11px; border: 1px solid var(--line); border-radius: 9px; background: var(--surface-soft); }
.event-detail-grid, .profile-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.event-timeline { display: grid; gap: 7px; }
.event-row { padding: 8px 10px; border-left: 3px solid #93b8ee; border-radius: 0 7px 7px 0; background: #fff; }

.provider-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 9px; }
.provider-card { padding: 12px; border: 1px solid var(--line); border-radius: 9px; background: var(--surface-soft); }
.provider-card.primary { border-color: #b9d0f5; background: #f2f7ff; }
.provider-card h3 { margin: 0 0 6px; font-size: 14px; }
.liquidity-list { display: grid; gap: 7px; }
.liquidity-row {
  display: grid;
  grid-template-columns: minmax(220px, 2fr) repeat(5, minmax(100px, 1fr)) auto;
  align-items: center;
  gap: 10px;
  padding: 10px 11px;
  border: 1px solid var(--line);
  border-radius: 9px;
  background: #fff;
}
.liquidity-row:hover { border-color: #b5cbec; background: #f9fbff; }
.liquidity-detail-button { min-height: 32px; border: 1px solid #b6cff5; border-radius: 7px; color: var(--blue); background: var(--blue-soft); cursor: pointer; }
.card-actions { display: flex; align-items: stretch; justify-content: flex-end; gap: 6px; }
.quick-watch { min-height: 32px; padding: 5px 9px; border: 1px solid #9fbff0; border-radius: 7px; color: #1457ad; background: #f2f7ff; cursor: pointer; font-size: 10px; font-weight: 750; white-space: nowrap; }
.quick-watch:hover { color: #fff; border-color: var(--blue); background: var(--blue); }
.quick-watch:disabled { cursor: wait; opacity: .7; }
.quick-watch.watched { color: #327358; border-color: #abd8c4; background: #edf9f3; cursor: default; }

.trend-toolbar { justify-content: space-between; flex-wrap: wrap; margin-bottom: 10px; padding: 8px 10px; border-radius: 9px; background: var(--surface-soft); }
.trend-toolbar-label { color: var(--muted); font-size: 10px; font-weight: 700; }
.trend-workspace { display: grid; grid-template-columns: minmax(235px, .25fr) minmax(0, .75fr); gap: 10px; align-items: start; }
.trend-sidebar { max-height: 548px; overflow: auto; scrollbar-width: thin; }
.trend-list { display: grid; gap: 6px; padding-right: 3px; }
.trend-item {
  display: grid;
  width: 100%;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 3px 8px;
  padding: 9px 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  color: var(--ink);
  background: #fff;
  cursor: pointer;
  text-align: left;
}
.trend-item:hover { border-color: #abc7ef; }
.trend-item.active { color: #164a97; border-color: #7ba9ee; background: #edf5ff; box-shadow: inset 3px 0 var(--blue); }
.trend-item-name { overflow: hidden; font-weight: 700; text-overflow: ellipsis; white-space: nowrap; }
.trend-item-change { font-size: 14px; font-weight: 800; }
.trend-item-meta { grid-column: 1/-1; overflow: hidden; color: var(--muted); font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
.trend-chart-shell { min-width: 0; overflow: hidden; border: 1px solid #24334d; border-radius: 11px; color: #dce7f7; background: var(--dark); box-shadow: 0 14px 35px rgba(10, 24, 45, .17); }
.kline-hero { display: grid; grid-template-columns: minmax(210px, 1.5fr) repeat(4, minmax(90px, 1fr)); gap: 1px; background: #263650; }
.kline-hero-cell { min-height: 64px; padding: 10px 12px; background: #14223a; }
.kline-hero-value { display: block; margin-top: 4px; color: #fff; font-size: 17px; }
.kline-hero-name { overflow: hidden; color: #fff; font-size: 14px; font-weight: 750; text-overflow: ellipsis; white-space: nowrap; }
.kline-platform-badge { min-height: 19px; margin-top: 4px; padding: 1px 6px; color: #80b0ff; background: rgba(58, 124, 229, .17); }
.kline-platform-badge.fallback { color: #f6c75e; background: rgba(246, 185, 77, .14); }
.kline-hero .section-meta, .kline-hero .small-label { color: #8fa2bd; }
.kline-chart-stage { min-height: 390px; background: var(--dark); }
.kline-chart-stage canvas { display: block; width: 100%; height: 390px; cursor: crosshair; }
.kline-signal { padding: 10px; border-top: 1px solid #263650; background: #111e33; }
.kline-signal-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.kline-signal-card { color: #cad7e9; border-color: #2a3a55; background: #182740; }
.kline-signal-card .small-label, .kline-signal-card .section-meta { color: #8fa2bd; }
.kline-empty { min-height: 390px; display: grid; place-items: center; color: #8fa2bd; }

.research-toolbar { justify-content: space-between; flex-wrap: wrap; }
.research-tabs { display: flex; flex-wrap: wrap; gap: 6px; }
.research-tab { min-height: 34px; padding: 6px 10px; border: 1px solid var(--line); border-radius: 7px; background: #fff; cursor: pointer; }
.research-tab.active { color: var(--blue); border-color: #aac7f4; background: var(--blue-soft); }
.research-group { margin-top: 10px; overflow: hidden; border: 1px solid var(--line); border-radius: 9px; }
.research-group-head { display: flex; align-items: center; justify-content: space-between; padding: 10px 12px; background: var(--surface-soft); }
.research-group-title { margin: 0; font-size: 13px; }
.research-group-meta { color: var(--muted); font-size: 10px; }
.research-card-list { display: grid; gap: 8px; padding: 9px; background: #f7f9fc; }
.research-card { display: grid; grid-template-columns: 96px minmax(0, 1fr); min-width: 0; overflow: hidden; border: 1px solid var(--line); border-radius: 10px; background: #fff; box-shadow: 0 2px 8px rgba(25, 48, 83, .04); }
.research-card-media { position: relative; display: grid; min-height: 118px; place-items: center; padding: 8px; background: linear-gradient(145deg,#f4f7fb,#eaf0f8); }
.research-image { width: 78px; height: 64px; object-fit: contain; }
.research-score { position: absolute; right: 7px; bottom: 7px; display: inline-flex; align-items: baseline; padding: 3px 7px; gap: 4px; border-radius: 6px; color: #fff; background: #49698f; font-size: 14px; font-weight: 800; }
.research-score small { opacity: .8; font-size: 9px; font-weight: 600; }
.research-card-main { min-width: 0; padding: 10px 12px; }
.research-card-title { display: flex; align-items: flex-start; justify-content: space-between; min-width: 0; gap: 12px; }
.research-card-title > div { min-width: 0; }
.research-card-actions { display: flex; flex: 0 0 auto; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 6px; }
.research-card-title strong, .research-card-title span { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.research-card-title strong { font-size: 14px; }
.research-card-title > div > span { margin-top: 2px; color: var(--muted); font-size: 10px; }
.research-verdict { flex: 0 0 auto; padding: 3px 7px; border-radius: 999px; color: #53647b; background: #edf1f6; font-size: 10px; }
.research-verdict.candidate { color: #1555a2; background: #e7f1ff; }
.entry-observation-badge { display: inline-flex; flex: 0 0 auto; align-items: center; padding: 3px 7px; border-radius: 999px; color: #667085; background: #f0f2f5; font-size: 9px; font-weight: 700; white-space: nowrap; }
.entry-observation-badge.qualified { color: #17603a; background: #dcf6e8; box-shadow: inset 0 0 0 1px #a9dfc0; }
.entry-observation-badge.insufficient_data { color: #80611a; background: #fff3cf; }
.entry-observation-badge.not_qualified { color: #7b4c49; background: #f8e8e6; }
.research-facts { display: grid; grid-template-columns: repeat(3,minmax(70px,1fr)); margin-top: 8px; overflow: hidden; border: 1px solid #e8edf4; border-radius: 7px; }
.research-facts span { min-width: 0; padding: 6px 8px; border-right: 1px solid #e8edf4; }
.research-facts span:last-child { border-right: 0; }
.research-facts small, .research-facts b { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.research-facts small { color: var(--muted); font-size: 9px; }
.research-facts b { margin-top: 2px; font-size: 12px; }
.research-brief { display: flex; flex-wrap: wrap; margin-top: 8px; gap: 5px; }
.research-brief span { max-width: 100%; overflow: hidden; padding: 3px 7px; border-radius: 5px; color: #38516f; background: #f1f5fa; font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
.research-evidence { margin-top: 7px; font-size: 10px; }
.research-evidence summary { color: var(--blue); cursor: pointer; }
.research-evidence .market-name { margin-top: 7px; }
.entry-observation-panel { margin: 8px 0; padding: 9px; border: 1px solid #dfe7f1; border-radius: 8px; background: #f8fafc; }
.entry-observation-panel h4 { margin: 0 0 7px; font-size: 11px; }
.entry-observation-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 7px; gap: 8px; color: var(--muted); font-size: 9px; }
.entry-check-list { display: grid; margin: 0; padding: 0; gap: 5px; list-style: none; }
.entry-check-list li { display: grid; grid-template-columns: 42px minmax(0,1fr) minmax(140px,.6fr); align-items: center; padding: 6px 7px; gap: 7px; border: 1px solid #e4e9f0; border-radius: 6px; background: #fff; }
.entry-check-list i { padding: 2px 5px; border-radius: 4px; color: #5d6674; background: #edf0f4; font-size: 8px; font-style: normal; text-align: center; }
.entry-check-list li.pass i { color: #17603a; background: #dcf6e8; }
.entry-check-list li.fail i { color: #913f36; background: #fde8e5; }
.entry-check-list li.missing i { color: #80611a; background: #fff3cf; }
.entry-check-list span { min-width: 0; color: #3e4d61; font-size: 9px; }
.entry-check-list span b { display: block; margin-bottom: 2px; color: #1f2d40; font-size: 10px; }
.entry-check-list em { color: var(--muted); font-size: 8px; font-style: normal; text-align: right; }
.factor-family-grid { display: grid; grid-template-columns: repeat(5,minmax(70px,1fr)); gap: 5px; margin-top: 8px; }
.factor-family-grid span { min-width: 0; padding: 6px; border: 1px solid #e8edf4; border-radius: 6px; background: #f8fafc; }
.factor-family-grid small, .factor-family-grid b, .factor-family-grid em { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.factor-family-grid small, .factor-family-grid em { color: var(--muted); font-size: 9px; font-style: normal; }
.factor-family-grid b { margin: 2px 0; color: #244b78; font-size: 12px; }
.advice { margin-top: 5px; color: var(--muted); font-size: 11px; }
.advice.watch { color: #24639d; }
.advice.risk { color: #a34935; }
.action { max-width: 600px; }

.watch-form { display: flex; align-items: flex-start; max-width: 850px; gap: 8px; }
.autocomplete { position: relative; flex: 1; min-width: 0; }
.watch-form input { width: 100%; min-height: 42px; padding-left: 13px; }
.add-watch {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 42px;
  padding: 8px 15px;
  gap: 6px;
  border: 1px solid var(--blue);
  border-radius: 8px;
  color: #fff;
  background: var(--blue);
  cursor: pointer;
  font-weight: 700;
}
.add-watch:hover { background: var(--blue-hover); }
.add-watch svg { width: 16px; }
.suggestions {
  position: absolute;
  z-index: 30;
  top: calc(100% + 6px);
  right: 0;
  left: 0;
  max-height: 390px;
  overflow: auto;
  border: 1px solid var(--line-strong);
  border-radius: 10px;
  background: #fff;
  box-shadow: 0 18px 45px rgba(21, 41, 71, .18);
}
.suggestion {
  display: grid;
  width: 100%;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 2px 10px;
  padding: 10px 12px;
  border: 0;
  border-bottom: 1px solid #edf1f6;
  background: #fff;
  cursor: pointer;
  text-align: left;
}
.suggestion:last-child { border-bottom: 0; }
.suggestion:hover, .suggestion.active { background: #edf5ff; }
.suggestion-state { display: flex; align-items: center; min-height: 64px; padding: 12px 14px; gap: 10px; color: var(--muted); line-height: 1.55; }
.suggestion-state.error { color: #a32338; background: #fff7f8; }
.suggestion-state-icon { display: inline-flex; align-items: center; justify-content: center; width: 27px; height: 27px; flex: 0 0 27px; border-radius: 50%; color: var(--blue); background: var(--blue-soft); font-weight: 800; }
.suggestion-state.error .suggestion-state-icon { color: #a32338; background: #ffe5e9; }
.suggestion-title { overflow: hidden; font-weight: 720; text-overflow: ellipsis; white-space: nowrap; }
.suggestion-price { grid-row: 1 / 3; grid-column: 2; align-self: center; color: var(--ink); font-weight: 760; }
.suggestion-meta { overflow: hidden; color: var(--muted); font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
.suggestion-provider { display: inline-block; margin-right: 5px; color: var(--blue); font-weight: 750; }
.inline-feedback { min-height: 20px; margin: 5px 0 3px; color: var(--muted); font-size: 11px; }
.inline-feedback.error { color: #b32b40; }
.inline-feedback.success { color: var(--down); }
.inline-feedback.warning { color: #94620d; }
.suggestion-warning { padding: 7px 11px; border-bottom: 1px solid #f0ddb2; color: #80540b; background: #fff9e9; font-size: 10px; }
.watchlist { display: grid; gap: 8px; margin-top: 9px; }
.watch-item {
  display: grid;
  grid-template-columns: minmax(260px, 2fr) repeat(4, minmax(100px, 1fr)) auto;
  align-items: center;
  gap: 10px;
  padding: 10px 11px;
  border: 1px solid var(--line);
  border-radius: 9px;
}
.watch-name { display: flex; align-items: center; min-width: 0; gap: 9px; }
.watch-enriching { margin-top: 4px; color: #94620d; font-size: 10px; }
.watch-image { width: 42px; height: 42px; object-fit: contain; border-radius: 7px; background: #eef3f8; }
.watch-image.item-image-placeholder { display: inline-grid; flex: 0 0 auto; place-items: center; border: 1px solid #dce6f2; color: #8091aa; font-size: 9px; font-weight: 800; }
.remove { display: grid; width: 32px; height: 32px; place-items: center; border: 1px solid #f0cbd1; border-radius: 7px; color: #bb3b50; background: #fff5f6; cursor: pointer; }

.status-strip { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.status-cell { min-width: 0; padding: 10px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface-soft); overflow-wrap: anywhere; }
.status-label { display: block; margin-bottom: 3px; color: var(--muted); font-size: 10px; font-weight: 700; }

.app-toast {
  position: fixed;
  z-index: 200;
  right: 20px;
  bottom: 20px;
  max-width: min(380px, calc(100vw - 32px));
  padding: 10px 13px;
  border-radius: 9px;
  color: #fff;
  background: #253751;
  box-shadow: 0 12px 35px rgba(15, 30, 54, .25);
  opacity: 0;
  pointer-events: none;
  transform: translateY(12px);
  transition: .2s ease;
}
.app-toast.visible { opacity: 1; transform: translateY(0); }
.app-toast.error { background: #9e3042; }
.app-toast.success { background: #087b5d; }

/* Rich item identities and inline details */
.item-identity { display: flex; align-items: center; min-width: 0; gap: 10px; }
.item-copy { display: grid; min-width: 0; gap: 3px; }
.item-copy strong, .item-identity strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.item-copy span, .item-identity span:not(.item-thumb) { color: var(--muted); font-size: 10px; }
.item-thumb, .trend-image, .suggestion-image, .profile-image {
  display: inline-grid;
  flex: 0 0 auto;
  width: 52px;
  height: 52px;
  place-items: center;
  object-fit: contain;
  border: 1px solid #dce6f2;
  border-radius: 10px;
  color: #8091aa;
  background: radial-gradient(circle at 50% 35%, #fff, #edf3fa);
  font-size: 9px;
  font-weight: 800;
}
.profile-image { width: 120px; height: 94px; border-radius: 12px; }
.trend-image { grid-row: 1 / 3; width: 44px; height: 44px; }
.suggestion-image { grid-row: 1 / 3; width: 42px; height: 42px; }
.item-image-placeholder { user-select: none; }
.item-image-placeholder[hidden] { display: none !important; }

.liquidity-item { overflow: hidden; border: 1px solid var(--line); border-radius: 10px; background: #fff; }
.liquidity-item:hover { border-color: #b5cbec; }
.liquidity-item .liquidity-row { border: 0; border-radius: 0; }
.liquidity-item .liquidity-row:hover { background: #f9fbff; }
.inline-profile, .anomaly-inline-detail {
  padding: 16px;
  border-top: 1px solid #dbe5f1;
  background: linear-gradient(145deg, #f8fbff, #f3f7fc);
}
.inline-loading, .inline-error { padding: 26px; color: var(--muted); text-align: center; }
.inline-error { color: #ae3045; background: #fff4f5; }
.profile-hero, .anomaly-detail-head { display: flex; align-items: center; gap: 14px; margin-bottom: 13px; }
.profile-hero h3, .anomaly-detail-head h3 { margin: 0 0 4px; font-size: 16px; }
.profile-hero span, .anomaly-detail-head span { color: var(--muted); font-size: 11px; }
.profile-stat-row { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 9px; }
.profile-stat-row b { padding: 4px 7px; border-radius: 6px; color: #35618f; background: #e8f2ff; font-size: 10px; }
.profile-lines { display: grid; gap: 4px; color: #4f6076; font-size: 11px; }
.formula-box { margin-top: 10px; padding: 10px 12px; border: 1px solid #d6e2f0; border-radius: 8px; background: #fff; }

/* Responsive anomaly cards replace the dense six-column table. */
.anomaly-list { display: grid; gap: 8px; }
.anomaly-card { overflow: hidden; border: 1px solid var(--line); border-radius: 11px; background: #fff; transition: border-color .15s, box-shadow .15s; }
.anomaly-card:hover { border-color: #aec8ed; box-shadow: 0 6px 18px rgba(27, 54, 91, .07); }
.anomaly-summary {
  display: grid;
  grid-template-columns: 76px minmax(260px, 2fr) repeat(3, minmax(100px, .75fr)) auto;
  align-items: center;
  gap: 12px;
  padding: 11px 12px 7px;
}
.anomaly-score { display: grid; justify-items: start; gap: 4px; }
.anomaly-score .severity { padding: 2px 6px; border-radius: 5px; font-size: 9px; }
.anomaly-kpi { display: grid; min-width: 0; gap: 3px; }
.anomaly-kpi span { color: var(--muted); font-size: 9px; }
.anomaly-kpi b { overflow: hidden; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.anomaly-expand { min-height: 34px; padding: 6px 10px; border: 1px solid #b7cff2; border-radius: 7px; color: var(--blue); background: #eef5ff; cursor: pointer; }
.anomaly-summary .card-actions { flex-direction: column; }
.anomaly-brief { display: flex; min-width: 0; flex-wrap: wrap; gap: 6px; padding: 0 12px 10px 100px; color: var(--muted); font-size: 10px; }
.anomaly-brief b { max-width: 420px; overflow: hidden; padding: 3px 7px; border-radius: 5px; color: #4d6079; background: #f1f4f8; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }
.anomaly-detail-grid { display: grid; grid-template-columns: minmax(280px, .8fr) minmax(420px, 1.2fr); gap: 12px; }
.anomaly-detail-grid h4 { margin: 0 0 7px; }
.inline-kline { position: relative; min-width: 0; overflow: hidden; border: 1px solid #263650; border-radius: 10px; background: var(--dark); }
.inline-kline canvas { display: block; width: 100%; height: 320px; }
.inline-kline-meta { padding: 8px 10px; color: #9eb0c8; border-bottom: 1px solid #263650; font-size: 10px; }
.event-pill { padding: 9px; border: 1px solid var(--line); border-radius: 7px; background: #fff; }

/* Market-wide professional daily K line. */
.market-chart-panel { min-width: 0; }
.market-kline-hero { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1px; margin-bottom: 8px; overflow: hidden; border-radius: 9px; background: #263650; }
.market-kline-hero > div { display: grid; min-height: 58px; align-content: center; gap: 4px; padding: 9px 11px; color: #fff; background: #14223a; }
.market-kline-hero span { color: #8fa2bd; font-size: 9px; }
.market-kline-hero strong { font-size: 16px; }
.market-kline-hero .market-kline-fallback { grid-column: 1/-1; min-height: 44px; color: #f3c761; font-size: 11px; }
.market-kline-stage { position: relative; min-height: 410px; overflow: hidden; border: 1px solid #24334d; border-radius: 10px; background: var(--dark); }
.market-kline-stage canvas { display: block; width: 100%; height: 410px; cursor: crosshair; }

/* Compact evidence-grounded Q&A. */
.ai-question-form { display: flex; gap: 7px; margin-top: 9px; padding-top: 9px; border-top: 1px solid var(--line); }
.ai-question-form input { flex: 1; min-width: 0; min-height: 34px; padding: 6px 9px; border: 1px solid var(--line-strong); border-radius: 7px; }
.ai-question-form button { min-width: 64px; border: 1px solid #aec7ef; border-radius: 7px; color: var(--blue); background: var(--blue-soft); cursor: pointer; }
.ai-question-output:not(:empty) { margin-top: 8px; }
.ai-answer { display: grid; gap: 7px; padding: 10px 12px; border: 1px solid #cdddf4; border-radius: 8px; background: #f4f8ff; }
.ai-answer-limits { color: #7e5b27; font-size: 10px; }
.ai-question-suggestions { display: flex; flex-wrap: wrap; gap: 6px; }
.ai-question-suggestions button { padding: 4px 7px; border: 1px solid #cad9ef; border-radius: 999px; color: #41658f; background: #fff; cursor: pointer; font-size: 10px; }

@keyframes spin { to { transform: rotate(360deg); } }
@keyframes view-in { from { opacity: .55; transform: translateY(3px); } }
@media (max-width: 1250px) {
  .app-bar { padding: 0 14px; gap: 10px; }
  .brand-copy { display: none; }
  .nav-button { padding: 0 9px; }
  .metrics { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .overview-grid { grid-template-columns: 1fr; }
  .watch-item { grid-template-columns: minmax(240px, 2fr) repeat(2, 1fr) auto; }
  .watch-item > div:nth-child(4), .watch-item > div:nth-child(5) { display: none; }
  .liquidity-row { grid-template-columns: minmax(220px, 2fr) repeat(3, 1fr) auto; }
  .liquidity-row > div:nth-child(5), .liquidity-row > div:nth-child(6) { display: none; }
  .ai-report-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 850px) {
  .app-bar { display: grid; grid-template-columns: auto 1fr auto; min-height: auto; padding: 8px 12px 0; }
  .brand { grid-column: 1; grid-row: 1; }
  .brand-copy { display: block; }
  .brand-copy span { max-width: 120px; }
  .header-actions { grid-column: 3; grid-row: 1; }
  .app-nav { grid-column: 1 / -1; grid-row: 2; justify-content: flex-start; width: calc(100vw - 24px); min-height: 42px; }
  .nav-button { min-height: 42px; }
  main { padding: 11px 12px 36px; }
  .page-note { display: none; }
  .metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .metric { min-height: 78px; }
  .ai-widget-head { align-items: flex-start; flex-direction: column; }
  .ai-controls { width: 100%; flex-wrap: wrap; }
  .ai-widget-title p { white-space: normal; }
  .ai-placeholder { margin-left: 0; }
  .ai-report-grid, .ai-highlights, .ai-lists, .ai-items, .profile-grid, .event-detail-grid { grid-template-columns: 1fr; }
  .trend-workspace { grid-template-columns: 1fr; }
  .trend-sidebar { max-height: none; overflow: hidden; }
  .trend-list { display: flex; overflow-x: auto; padding: 0 0 5px; scroll-snap-type: x proximity; }
  .trend-item { min-width: 220px; scroll-snap-align: start; }
  .kline-hero { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .kline-hero-cell:first-child { grid-column: 1 / -1; }
  .kline-chart-stage, .kline-chart-stage canvas { min-height: 350px; height: 350px; }
  .kline-signal-grid { grid-template-columns: 1fr; }
  .status-strip, .provider-grid { grid-template-columns: 1fr; }
  .watch-item { grid-template-columns: 1fr 1fr auto; align-items: start; }
  .watch-name { grid-column: 1 / -1; }
  .watch-item > div:nth-child(4), .watch-item > div:nth-child(5) { display: none; }
  .more-filter-grid { position: fixed; top: auto; right: 12px; bottom: 12px; left: 12px; width: auto; grid-template-columns: repeat(2, minmax(0,1fr)); }
  .liquidity-row { grid-template-columns: 1fr 1fr; align-items: start; }
  .liquidity-row > div, .liquidity-row > div:nth-child(5), .liquidity-row > div:nth-child(6) { display: block; }
  .liquidity-row > div:first-child { grid-column: 1/-1; }
  .liquidity-row > .card-actions { display: flex; grid-column: 1/-1; }
  .liquidity-row > .card-actions > * { flex: 1; }
  .liquidity-detail-button { grid-column: 1/-1; width: 100%; }
  .table-wrap { overflow: visible; border: 0; }
  table, tbody { display: block; }
  thead { display: none; }
  tbody { display: grid; gap: 8px; }
  tbody tr { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); padding: 10px; border: 1px solid var(--line); border-radius: 9px; background: #fff; box-shadow: 0 4px 12px rgba(22,41,72,.04); }
  tbody td { display: block; min-width: 0; padding: 6px; border: 0; }
  tbody td:nth-child(2), tbody td:last-child { grid-column: 1/-1; }
  tbody td::before { display: block; margin-bottom: 2px; color: var(--muted); font-size: 9px; font-weight: 700; }
  #skin-anomalies td:nth-child(1)::before { content: "异常分"; }
  #skin-anomalies td:nth-child(2)::before { content: "饰品"; }
  #skin-anomalies td:nth-child(3)::before { content: "当前价"; }
  #skin-anomalies td:nth-child(4)::before { content: "窗口变化"; }
  #skin-anomalies td:nth-child(5)::before { content: "事件活跃度"; }
  #skin-anomalies td:nth-child(6)::before { content: "触发依据"; }
}
@media (max-width: 520px) {
  .brand-copy h1 { font-size: 13px; }
  .brand-copy span, .market-state { display: none; }
  .app-bar { grid-template-columns: 1fr auto; }
  .brand { grid-column: 1; }
  .header-actions { grid-column: 2; }
  .app-nav { grid-column: 1/-1; }
  .nav-button { padding: 0 10px; }
  .nav-button svg { display: none; }
  .view-heading { align-items: flex-start; }
  .view-heading h2 { font-size: 18px; }
  .view-badge { display: none; }
  .metrics { grid-template-columns: repeat(2, minmax(0,1fr)); gap: 6px; }
  .metric { min-height: 74px; padding: 11px; }
  .metric-value { font-size: 16px; }
  .panel { padding: 11px; }
  .overview-grid { grid-template-columns: minmax(0, 1fr); }
  .section-heading { align-items: flex-start; flex-direction: column; }
  .report-toolbar { width: 100%; justify-content: flex-start; }
  .report-toolbar .section-meta { display: none; }
  .report-card { max-width: 100%; }
  .report-head { grid-template-columns: 54px minmax(0, 1fr); gap: 9px; padding: 10px; }
  .report-score { width: 50px; height: 50px; font-size: 17px; }
  .report-subtitle { overflow-wrap: anywhere; }
  .chart-wrap, .chart-wrap canvas { min-height: 240px; height: 240px; }
  .filter-bar > input, .filter-bar > select { flex: 1 1 calc(50% - 5px); }
  .window-tabs { width: 100%; }
  .window-tab { flex: 1; }
  .more-filters { margin-left: 0; }
  .more-filter-grid { grid-template-columns: 1fr 1fr; }
  .watch-form { flex-direction: column; }
  .add-watch { width: 100%; }
  .suggestions { position: fixed; top: auto; right: 12px; bottom: 12px; left: 12px; max-height: 60vh; }
  .research-card { grid-template-columns: 78px minmax(0,1fr); }
  .research-card-media { min-height: 112px; padding: 5px; }
  .research-image { width: 65px; height: 55px; }
  .research-card-main { padding: 9px; }
  .research-facts { grid-template-columns: 1fr 1fr; }
  .research-facts span:nth-child(even) { border-right: 0; }
  .research-facts span:nth-child(-n+4) { border-bottom: 1px solid #e8edf4; }
  .factor-family-grid { grid-template-columns: 1fr 1fr; }
  .kline-hero { grid-template-columns: 1fr 1fr; }
  .kline-chart-stage, .kline-chart-stage canvas { min-height: 315px; height: 315px; }
  .pagination button { min-height: 40px; }
  .ai-widget-status { display: none; }
  .ai-report-head { grid-template-columns: auto minmax(0, 1fr); padding: 9px; }
  .ai-source-badge { grid-column: 2; justify-self: start; }
  .ai-summary-professional { font-size: 12px; }
  .evidence-chip { flex: 1 1 calc(50% - 4px); }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; transition-duration: .01ms !important; }
}
@media (forced-colors: active) {
  button, input, select, .panel, .metric { border: 1px solid CanvasText; }
}

.suggestion { grid-template-columns: 42px minmax(0, 1fr) auto; }
.suggestion-image { grid-column: 1; grid-row: 1 / 3; }
.suggestion-title { grid-column: 2; grid-row: 1; }
.suggestion-meta { grid-column: 2; grid-row: 2; }
.suggestion-price { grid-column: 3; grid-row: 1 / 3; }
.trend-item { grid-template-columns: 44px minmax(0, 1fr) auto auto; align-items: center; }
.trend-image { grid-column: 1; }
.trend-item-name { grid-column: 2; }
.trend-item-change { grid-column: 3; }
.trend-item .quick-watch { grid-column: 4; grid-row: 1; min-height: 27px; padding: 3px 6px; }
.trend-item-meta { grid-column: 2 / 5; }

@media (max-width: 1250px) {
  .anomaly-summary { grid-template-columns: 70px minmax(230px, 2fr) repeat(2, minmax(100px, 1fr)) auto; }
  .anomaly-summary .anomaly-kpi:nth-of-type(5) { display: none; }
  .anomaly-detail-grid { grid-template-columns: 1fr 1.2fr; }
}
@media (max-width: 850px) {
  .anomaly-summary { grid-template-columns: 64px minmax(0, 1fr) auto; align-items: start; }
  .anomaly-summary .anomaly-kpi { display: grid; grid-row: 2; }
  .anomaly-summary .anomaly-kpi:nth-of-type(5) { display: grid; }
  .anomaly-summary .anomaly-kpi:nth-of-type(3) { grid-column: 1; }
  .anomaly-summary .anomaly-kpi:nth-of-type(4) { grid-column: 2; }
  .anomaly-summary .anomaly-kpi:nth-of-type(5) { grid-column: 3; }
  .anomaly-summary .card-actions { grid-column: 1/-1; grid-row: 3; flex-direction: row; }
  .anomaly-summary .card-actions > * { flex: 1; }
  .anomaly-expand { grid-column: auto; grid-row: auto; }
  .anomaly-brief { padding-left: 12px; }
  .anomaly-detail-grid { grid-template-columns: 1fr; }
  .market-kline-stage, .market-kline-stage canvas { min-height: 360px; height: 360px; }
  .profile-image { width: 96px; height: 78px; }
  .entry-check-list li { grid-template-columns: 42px minmax(0,1fr); }
  .entry-check-list em { grid-column: 2; text-align: left; }
}
@media (max-width: 520px) {
  .anomaly-summary { grid-template-columns: 58px minmax(0, 1fr); gap: 8px; }
  .anomaly-summary .item-identity { min-width: 0; }
  .anomaly-summary .anomaly-kpi { grid-row: auto; }
  .anomaly-summary .anomaly-kpi:nth-of-type(3) { grid-column: 1; }
  .anomaly-summary .anomaly-kpi:nth-of-type(4) { grid-column: 2; }
  .anomaly-summary .anomaly-kpi:nth-of-type(5) { display: none; }
  .anomaly-summary .card-actions { grid-column: 1/-1; grid-row: auto; }
  .anomaly-brief b { max-width: 100%; white-space: normal; }
  .market-kline-hero { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .market-kline-stage, .market-kline-stage canvas { min-height: 330px; height: 330px; }
  .profile-hero, .anomaly-detail-head { align-items: flex-start; }
  .profile-image { width: 82px; height: 70px; }
  .ai-question-form { flex-direction: column; }
  .ai-question-form button { min-height: 36px; }
}

/* 7 日 CD 学习中心 */
.learning-summary-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr) minmax(260px, .72fr);
  gap: 12px;
  margin-bottom: 12px;
}
.learning-summary-grid > .panel { min-width: 0; }
.learning-comparison { display: grid; gap: 8px; padding: 12px; }
.learning-stat-card {
  display: grid;
  grid-template-columns: minmax(110px, 1.15fr) repeat(3, minmax(82px, 1fr));
  align-items: center;
  gap: 8px;
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--surface-soft);
}
.learning-stat-card > strong { grid-row: 1; }
.learning-stat-card > span { grid-column: 1; color: var(--muted); font-size: 11px; }
.learning-stat-card > div { display: grid; grid-row: 1 / 3; text-align: right; }
.learning-stat-card b { font-size: 15px; }
.learning-stat-card small { color: var(--muted); }
.learning-calibration { padding: 12px; }
.calibration-rules { display: grid; gap: 6px; }
.calibration-rules span { padding: 8px; border-radius: 7px; background: var(--blue-soft); color: #325375; }
.learning-replay { margin-top: 10px; border-top: 1px solid var(--line); padding-top: 8px; }
.learning-replay summary { cursor: pointer; color: var(--blue); font-weight: 650; }
.learning-segment-list { display: grid; gap: 5px; margin-top: 8px; }
.learning-segment-list span { padding: 6px 8px; border: 1px solid var(--line); border-radius: 6px; font-size: 11px; }
.learning-causes { display: flex; flex-wrap: wrap; gap: 7px; padding: 12px; }
.learning-causes > span { display: flex; justify-content: space-between; min-width: 135px; padding: 8px; border-radius: 7px; background: var(--surface-soft); }
.learning-causes em { color: var(--muted); font-style: normal; }
.learning-log-panel { margin-bottom: 20px; }
.learning-filters { padding: 12px; }
.learning-episode-list { display: grid; gap: 8px; padding: 0 12px 12px; }
.learning-episode { overflow: hidden; border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--surface); }
.learning-episode-row {
  display: grid;
  grid-template-columns: 72px minmax(210px, 1.65fr) minmax(115px, .7fr) minmax(150px, .9fr) minmax(135px, 1fr) auto;
  align-items: center;
  gap: 10px;
  padding: 10px;
}
.learning-image { width: 66px; height: 55px; object-fit: contain; border-radius: 6px; background: var(--surface-soft); }
.learning-episode-name { display: grid; min-width: 0; gap: 3px; }
.learning-episode-name > div { display: flex; flex-wrap: wrap; gap: 5px; }
.learning-episode-name > strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.learning-episode-name > span, .learning-price span, .learning-price small { color: var(--muted); font-size: 11px; }
.learning-kind, .learning-platform, .learning-result, .learning-confidence {
  display: inline-flex;
  align-items: center;
  width: fit-content;
  min-height: 21px;
  padding: 2px 7px;
  border-radius: 999px;
  background: var(--blue-soft);
  color: var(--blue);
  font-size: 11px;
  font-weight: 700;
}
.learning-kind.shadow { background: #f0ecff; color: #6747bc; }
.learning-kind.universe { background: #edf2f7; color: #536479; }
.learning-result.win, .learning-confidence.high { background: var(--up-soft); color: var(--up); }
.learning-result.loss, .learning-confidence.low { background: var(--down-soft); color: var(--down); }
.learning-result.flat, .learning-confidence.medium { background: var(--warning-soft); color: var(--warning); }
.learning-confidence.warming { background: #edf2f7; color: #536479; }
.learning-price { display: grid; gap: 2px; }
.learning-price b { font-size: 14px; }
.learning-causes-mini { display: flex; flex-wrap: wrap; gap: 4px; }
.learning-causes-mini span { padding: 3px 6px; border-radius: 5px; background: var(--warning-soft); color: var(--warning); font-size: 10px; }
.learning-detail-button, .learning-ai-button {
  min-height: 32px;
  border: 1px solid var(--line-strong);
  border-radius: 7px;
  background: var(--surface);
  cursor: pointer;
}
.learning-detail-button:hover, .learning-ai-button:hover { border-color: var(--blue); color: var(--blue); }
.learning-countdown { color: var(--warning); font-size: 11px; }
.learning-episode-detail { border-top: 1px solid var(--line); padding: 12px; background: var(--surface-soft); }
.learning-detail-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 16px; }
.learning-detail-grid h4 { margin: 0 0 9px; }
.learning-evidence-grid, .learning-outcome-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; }
.learning-evidence-grid span, .learning-outcome-grid span { display: grid; padding: 7px; border: 1px solid var(--line); border-radius: 6px; background: var(--surface); color: var(--muted); }
.learning-evidence-grid b, .learning-outcome-grid b { color: var(--ink); }
.learning-checks { display: grid; gap: 4px; margin: 9px 0 0; padding: 0; list-style: none; }
.learning-checks li { display: grid; grid-template-columns: 110px minmax(0,1fr); gap: 8px; padding: 5px 7px; border-radius: 5px; background: var(--surface); }
.learning-checks li.pass b { color: var(--up); }
.learning-checks li.fail b { color: var(--down); }
.learning-checks span { color: var(--muted); }
.learning-reflection-list { display: grid; gap: 6px; margin-top: 9px; }
.learning-reflection-list article { display: grid; gap: 2px; padding: 8px; border-left: 3px solid var(--warning); background: var(--surface); }
.learning-reflection-list span { color: var(--muted); }
.learning-ai-button { margin-top: 6px; padding: 5px 10px; }
.learning-ai-output { margin-top: 7px; padding: 9px; border-radius: 7px; background: var(--blue-soft); }
.learning-ai-output p { margin: 0; white-space: pre-wrap; }
.learning-card-note { margin: 0 10px 8px; padding: 7px 9px; border-radius: 6px; background: var(--blue-soft); color: #325375; }
.learning-card-note.warning { background: var(--warning-soft); color: var(--warning); }

@media (max-width: 1180px) {
  .learning-summary-grid { grid-template-columns: 1fr 1fr; }
  .learning-summary-grid > :last-child { grid-column: 1 / -1; }
  .learning-episode-row { grid-template-columns: 62px minmax(190px, 1.5fr) repeat(2, minmax(120px, 1fr)) auto; }
  .learning-causes-mini { grid-column: 2 / 5; }
  .learning-detail-button { grid-column: 5; grid-row: 1; }
}
@media (max-width: 760px) {
  .learning-summary-grid, .learning-detail-grid { grid-template-columns: 1fr; }
  .learning-summary-grid > :last-child { grid-column: auto; }
  .learning-stat-card { grid-template-columns: 1fr 1fr 1fr; }
  .learning-stat-card > strong, .learning-stat-card > span { grid-column: 1 / -1; }
  .learning-stat-card > div { grid-row: auto; text-align: left; }
  .learning-episode-row { grid-template-columns: 56px minmax(0,1fr); align-items: start; }
  .learning-image { width: 52px; height: 46px; }
  .learning-price, .learning-causes-mini, .learning-detail-button { grid-column: 2; grid-row: auto; }
  .learning-detail-button { width: 100%; }
  .learning-evidence-grid, .learning-outcome-grid { grid-template-columns: 1fr 1fr; }
}
