/* Chinese reading system: 16px prose, 14px compact UI; sizes follow user scaling. */
:root {
  --type-caption: .875rem;
  --type-body: 1rem;
  --type-title: 1.125rem;
  --type-section: 1.25rem;
  --type-data: 1.5rem;
  --type-page: 1.75rem;
  --type-key: 2rem;
  font-size: 100%;
  font-family: "Microsoft YaHei UI", "Microsoft YaHei", "PingFang SC", "Noto Sans CJK SC", "Segoe UI", sans-serif;
  line-height: 1.65;
  letter-spacing: normal;
  line-break: strict;
  word-break: normal;
  overflow-wrap: break-word;
  font-kerning: normal;
  text-autospace: normal;
}
body { font-size: var(--type-body); }
h1,h2,h3,h4 { text-wrap: balance; letter-spacing: normal; }
h1 { font-size: var(--type-page); font-weight: 700; line-height: 1.5; }
p { text-wrap: pretty; line-height: 1.85; }
button,input,select,textarea { line-height: 1.5; }
.button,.text-button,.control-label,select,.label,.search-field input { font-size: var(--type-caption); }
.button { min-height: 42px; padding: 9px 14px; }
.button.small { min-height: 36px; padding: 7px 10px; }
.label { padding: 3px 8px; line-height: 1.5; }
.icon-button { min-width: 44px; min-height: 44px; }
input,textarea,.form-field input,.form-field textarea,.stock-lookup input { font-size: var(--type-body); }
.form-field>span { font-size: var(--type-body); margin-bottom: 10px; }
.form-field small { font-size: var(--type-caption); line-height: 1.8; }
.form-field { margin-bottom: 24px; }
.form-field textarea { min-height: 140px; line-height: 1.85; }
.search-field { height: auto; min-height: 42px; }
.search-field input { padding: 8px 0; }
.sidebar { width: 232px; }
.workspace { margin-left: 232px; }
.brand { letter-spacing: normal; font-weight: 700; font-size: var(--type-data); padding-inline: 8px; }
.brand small { letter-spacing: normal; line-height: 1.6; }
.brand-mark { flex-shrink: 0; }
.nav-item { font-size: var(--type-body); line-height: 1.6; gap: 10px; }
.nav-item svg { flex-shrink: 0; }
.nav-count { padding-inline: 4px; }
.nav-group-label,.local-label,.sidebar-bottom p,.method-link,.version { font-size: var(--type-caption); }
.sidebar-bottom { padding-inline: 8px; }
.sidebar-bottom p { line-height: 1.9; }
.page-heading p { font-size: var(--type-body); line-height: 1.8; max-width: 42em; }
.page-heading { gap: 22px; align-items: flex-start; }
.heading-actions { padding-top: 5px; flex-shrink: 0; }
.toolbar { flex-wrap: wrap; }
.toolbar-controls { flex-wrap: wrap; gap: 12px 18px; }
.data-banner { padding: 13px 16px; gap: 8px 12px; line-height: 1.85; }
.data-banner>span { flex: 1 1 28em; }
.data-banner button { flex-shrink: 0; }
.stock-lookup { padding: 15px 0 20px; gap: 12px; }
.stock-lookup label { font-size: var(--type-body); }
.stock-lookup input { width: 230px; }
.panel-title,.theme-heading h3,.evidence-item h3,.stock-modal .evidence-item h3,
.drawer .evidence-item h3,.lane-header h3,.method-item h3,.verification-heading h3 { font-size: var(--type-title); line-height: 1.65; font-weight: 700; }
.panel-subtitle { line-height: 1.8; margin-top: 8px; max-width: 42em; }
.panel-head { padding: 23px 24px 0; }
.chart-note,.table-caption,.page-footer { line-height: 1.85; }
.section-intro { align-items: flex-start; gap: 20px; }
.section-intro p { font-size: var(--type-body); line-height: 1.8; }
.metric-strip { padding: 22px 0; align-items: start; }
.metric-label { line-height: 1.6; }
.metric-value { font-size: var(--type-key); font-weight: 700; letter-spacing: normal; }
.metric-note { white-space: normal; overflow: visible; line-height: 1.75; }
.heat-overview h2 { font-size: var(--type-title); flex-wrap: wrap; }
.topic-reason p,.evidence-item p,.drawer-section p,.method-item p,.form-note,.analysis-note {
  max-width: 42em;
}
.heat-breakdown { gap: 24px 28px; }
.heat-breakdown>div { gap: 8px; }
.heat-breakdown span { flex-wrap: wrap; }
.heat-breakdown small { line-height: 1.75; }
.heat-breakdown b { font-size: var(--type-title); }
.heat-method,.analysis-method { font-size: var(--type-caption); line-height: 1.85; }
.heat-method p,.analysis-method p { font-size: var(--type-body); line-height: 1.85; max-width: 42em; }
.topic-row { grid-template-columns: 160px minmax(0,1fr) 86px; padding: 23px 0; gap: 24px; }
.topic-name .stock-name { font-size: var(--type-title); line-height: 1.65; }
.topic-name>span { line-height: 1.75; }
.topic-reason p { margin-bottom: 12px; }
.topic-reason .text-button { font-size: var(--type-caption); line-height: 1.75; }
.topic-heat strong { font-size: var(--type-data); }
.theme-grid { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 20px; }
.theme-card { padding: 24px; }
.theme-heading { align-items: flex-start; flex-wrap: wrap; }
.theme-logic { margin: 16px 0 20px; min-height: 0; }
.theme-bottom { flex-wrap: wrap; line-height: 1.8; }
.stock-name { font-size: var(--type-body); line-height: 1.6; }
.stock-code { font-size: var(--type-caption); line-height: 1.65; }
table,th,td { font-size: var(--type-caption); line-height: 1.6; }
td { padding-block: 16px; }
th { padding-block: 12px; }
.table-toolbar { gap: 14px; }
.table-filters { gap: 10px; }
.evidence-item { padding-block: 24px; }
.evidence-item h3 { margin: 13px 0 10px; max-width: 36em; }
.evidence-top,.evidence-footer,.verification-meta { line-height: 1.8; }
.radar-list article { font-size: var(--type-body); line-height: 1.85; padding-block: 20px; }
.radar-list article p { line-height: 1.8; margin-top: 10px; }
.observation { padding-block: 20px; }
.observation h3 { font-size: var(--type-body); font-weight: 700; line-height: 1.75; margin-bottom: 9px; }
.observation-meta { flex-wrap: wrap; gap: 8px; }
.lane-stock p { margin-top: 12px; }
.lane-stock-top { gap: 14px; flex-wrap: wrap; }
.replay-facts { gap: 28px; }
.replay-fact strong { line-height: 1.5; }
.replay-fact p { margin-top: 12px; }
.drawer { width: min(560px,100%); }
.drawer-head { padding: 20px 24px; gap: 16px; }
.drawer-head h2,.stock-modal .drawer-head h2 { font-size: var(--type-section); line-height: 1.6; }
.drawer-section { margin-top: 30px; }
.drawer-section h3 { font-size: var(--type-title); line-height: 1.7; margin-bottom: 13px; }
.drawer-section p { margin-block: 12px; }
.detail-grid { gap: 22px; }
.detail-grid dt { font-size: var(--type-caption); line-height: 1.7; }
.detail-grid dd { font-size: var(--type-body); }
.drawer.stock-modal { width: min(1200px,calc(100vw - 64px)); }
.stock-modal #drawer-body { padding: 24px 30px 34px; }
.stock-modal-meta { gap: 12px; flex-wrap: wrap; line-height: 1.75; }
.volume-summary { padding-bottom: 24px; gap: 24px; }
.volume-summary h3 { font-size: var(--type-section); line-height: 1.65; margin-bottom: 12px; }
.volume-summary p { max-width: 40em; }
.analysis-price { padding-top: 3px; }
.analysis-price strong { font-size: var(--type-key); }
.analysis-price small { line-height: 1.75; }
.volume-metrics { grid-template-columns: repeat(6,minmax(0,1fr)); gap: 22px; padding-block: 22px; }
.volume-metrics span { line-height: 1.75; }
.volume-metrics strong { font-size: var(--type-data); letter-spacing: normal; }
.analysis-note { margin: 18px 0; }
.chart-caption { align-items: flex-start; flex-wrap: wrap; gap: 8px 20px; }
.chart-caption h3 { font-size: var(--type-body); }
.chart-caption span { line-height: 1.8; }
.ma-values dt { font-size: var(--type-caption); }
.ma-values dd { font-size: var(--type-body); }
.stock-context { column-gap: 32px; }
.analysis-warnings { padding: 16px 20px; }
.analysis-method { margin-top: 24px; }
.toast { font-size: var(--type-body); line-height: 1.7; }
@media(min-width:1600px) {
  .theme-grid { grid-template-columns: repeat(3,minmax(0,1fr)); }
  .volume-metrics { grid-template-columns: repeat(6,minmax(0,1fr)); }
}
@media(max-width:1200px) {
  .heat-panel,.overview-grid { grid-template-columns: minmax(0,1fr); }
  .heat-overview { border-right: 0; border-bottom: 1px solid var(--line); }
  .relay-lanes { grid-template-columns: 1fr; }
  .two-columns { grid-template-columns: minmax(0,1fr); }
}
@media(max-width:900px) {
  .theme-grid,.radar-list { grid-template-columns: minmax(0,1fr); }
  .topic-row { grid-template-columns: minmax(0,1fr) 90px; gap: 12px; }
  .topic-name { grid-column: 1; }
  .topic-reason { grid-column: 1/-1; grid-row: 2; }
  .topic-heat { grid-column: 2; grid-row: 1; }
  .page-heading { flex-wrap: wrap; }
  .replay-facts { grid-template-columns: minmax(0,1fr); }
}
@media(max-width:700px) {
  .sidebar { width: 100%; padding: 18px 16px 0; }
  .workspace { margin-left: 0; }
  .brand { padding: 0 0 18px; }
  .brand small { display: block; margin: 4px 0 0; }
  #navigation { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 6px; overflow: visible; padding-bottom: 12px; }
  .nav-item { width: 100%; margin: 0; padding: 9px 3px; min-height: 44px; justify-content: center; white-space: normal; font-size: var(--type-caption); line-height: 1.6; }
  .topbar { padding: 12px 16px; height: auto; min-height: 48px; flex-wrap: wrap; gap: 8px; }
  .breadcrumb span { margin-inline: 7px; }
  .topbar-meta .timezone { display: none; }
  main { padding: 24px 16px 0; }
  h1 { font-size: var(--type-page); }
  .page-heading { gap: 14px; }
  .page-heading p { font-size: var(--type-body); max-width: none; }
  .heading-actions { padding: 0; }
  .heading-actions .button { font-size: var(--type-caption); padding: 10px 12px; }
  .toolbar-controls { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1.15fr); align-items: start; gap: 12px; }
  .control-label { display: flex; flex-direction: column; align-items: stretch; gap: 8px; }
  .control-label select { min-height: 42px; font-size: var(--type-caption); }
  .data-banner { padding: 13px; }
  .data-banner>span { flex-basis: 100%; }
  .data-banner button { margin-left: 0; font-size: var(--type-caption); }
  .stock-lookup input { flex: 1 1 160px; width: 160px; min-width: 0; }
  .stock-lookup .button { flex: 1 1 130px; }
  .stock-lookup>span { font-size: var(--type-caption); line-height: 1.8; }
  .heat-overview,.heat-breakdown { padding: 22px 18px; }
  .heat-reading { gap: 12px 16px; }
  .heat-breakdown { gap: 24px 20px; }
  .heat-method { padding: 14px 18px; }
  .heat-scale-labels { font-size: var(--type-caption); }
  .topic-list { padding-inline: 18px; }
  .topic-row { padding-block: 22px; }
  .panel-head { padding: 20px 18px 0; flex-wrap: wrap; }
  .panel-title { font-size: var(--type-title); }
  .chart-note { padding-inline: 18px; }
  .metric { padding-inline: 16px; }
  .metric-value { font-size: var(--type-key); }
  .metric-note { font-size: var(--type-caption); }
  .theme-card { padding: 20px; }
  .section-intro { flex-wrap: wrap; }
  .table-filters { gap: 10px; }
  .search-field { flex-basis: 100%; }
  .search-field input { font-size: var(--type-body); }
  .table-filters select { font-size: var(--type-caption); }
  .table-caption { flex-wrap: wrap; }
  .verification-heading,.verification-rule { flex-wrap: wrap; }
  .drawer.stock-modal { width: calc(100vw - 16px); max-height: 95dvh; }
  .stock-modal #drawer-body { padding: 20px 16px 28px; }
  .stock-modal .drawer-head { padding: 14px 16px; }
  .volume-metrics { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 20px 18px; }
  .volume-summary { gap: 16px; }
  .volume-summary h3 { font-size: var(--type-section); }
  .analysis-price { gap: 12px; align-items: baseline; }
  .analysis-price small { flex-basis: 100%; }
  .ma-values { gap: 14px; }
  .stock-context { grid-template-columns: minmax(0,1fr); }
  .page-footer { font-size: var(--type-caption); }
  .page-footer button { font-size: var(--type-caption); }
}

@media(min-width:701px) and (max-width:1100px){.volume-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}}
