/* UI UX Pro Max：机构投研工作台。组件使用语义色，主题与行情口径独立。 */
:root {
  --bg:#f1f3f7; --panel:#fff; --panel2:#f5f7fb; --tx:#17243a; --tx2:#47576e; --tx3:#607087;
  --line:#e1e6ef; --line2:#c9d3e2; --accent:#2b57d9; --gold:#94681d;
  --up:#bd4057; --down:#087f72; --grid:#e9edf4; --th-bg:#f5f7fb;
  --sidebar:#111f36; --sidebar-tx:#d3deee; --sidebar-active:#223854;
  --radius:14px; --rail:208px; --header-height:64px;
  --shadow:0 2px 5px #16274404; --shadow-h:0 8px 24px #17243c0d;
  --prog-track:#edf1f5; --prog-fill:#15826e;
  --toast-bg:#17243c; --toast-fg:#fff;
  /* Type scale: 12 / 14 / 18 + 28 (design-r1). Latin = IBM Plex Sans; CJK = system. */
  --fs-1:12px; --fs-2:14px; --fs-3:18px; --fs-4:32px;
  /* Brand research-blue — AI entry / primary CTAs; eye theme must not tint this green */
  --brand:#3159ce;
  --font-latin:"IBM Plex Sans", "Avenir Next", "Segoe UI", Helvetica, Arial, sans-serif;
  --font-body:var(--font-latin), -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
  /* KPIs / numbers: same Latin family + tabular nums — no monospace/terminal feel */
  --font-data:var(--font-latin), -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif;
}
[data-theme="dark"] {
  --bg:#101927; --panel:#172337; --panel2:#1e2d43; --tx:#edf2fa; --tx2:#bdcadd; --tx3:#9dacbf;
  --line:#2c3c52; --line2:#455a74; --accent:#9bb6ff; --brand:#9bb6ff; --gold:#e6bb70;
  --up:#ff929b; --down:#59d3b5; --grid:#2d3d56; --th-bg:#1d2d44;
  --sidebar:#0c1627; --sidebar-tx:#d2dded; --sidebar-active:#243d63;
  --prog-track:#243247; --prog-fill:#59d3b5;
  --toast-bg:#e7edf7; --toast-fg:#101a2c;
}
html[data-theme="eye"] {
  /* Eye-care: shift bg/body contrast only. Accent stays research-blue (desaturated OK). */
  --bg:#edf2eb; --panel:#fafcf7; --panel2:#f1f5ed; --tx:#203126; --tx2:#4e6455; --tx3:#596e5b;
  --line:#dce4d5; --line2:#becdba; --accent:#2f5fc9; --brand:#3159ce; --gold:#87641e;
  --up:#b83445; --down:#175c46; --grid:#dde6d8; --th-bg:#f1f5ed;
  --prog-track:#e0ebd6; --prog-fill:#217c5d;
  --toast-bg:#203126; --toast-fg:#fafcf7;
}
html { scroll-padding-top:var(--sticky-offset); }
/* 确保各主题中的辅助文字、操作按钮均保持足够对比度。 */
html[data-theme="dark"] #rdAiLauncher { color:#101927; }
html[data-theme="dark"] .ov-mini-clock span.on { color:#101927; }
#instStatusFilter button.on, #instStatusFilter button:hover { color:var(--down); border-color:var(--down); }
body { padding:0; margin:0; max-width:none; font:var(--fs-2)/1.65 var(--font-body); font-optical-sizing:auto; }
.num, .ov-big, .kpi .v, .trend-headline strong { font-variant-numeric:tabular-nums; font-feature-settings:"tnum" 1; }
button,input,select { font-family:inherit; }
button,a,summary,select { touch-action:manipulation; }
button { cursor:pointer; }
button:disabled { cursor:not-allowed; opacity:.55; }
a { color:var(--accent); }
.ui-icon { width:20px; height:20px; fill:none; stroke:currentColor; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; flex-shrink:0; }
.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; }
.skip-link { position:fixed; left:230px; top:-80px; z-index:100; padding:12px 20px; background:var(--panel); border:2px solid var(--accent); border-radius:6px; }
.skip-link:focus { top:12px; }
#sidebar { position:fixed; inset:0 auto 0 0; width:var(--rail); background:var(--sidebar); color:var(--sidebar-tx); display:flex; flex-direction:column; z-index:60; padding:30px 16px 18px; }
.workspace-brand { display:flex; align-items:center; gap:12px; color:#fff; text-decoration:none; margin:0 8px 34px; }
.workspace-brand img { object-fit:contain; }
.workspace-brand b { display:block; font-size:23px; line-height:1.2; font-weight:650; letter-spacing:1.5px; }
.workspace-brand small { display:block; color:#adbfd7; font-size:11px; margin-top:4px; letter-spacing:1px; }
.sidebar-section-label { color:#94a8c4; font-size:11px; padding:0 14px; margin:8px 0 12px; }
#tbNav { display:flex; flex-direction:column; position:static; gap:6px; margin-bottom:32px; }
#tbNav button, #tbNav button.on[data-pg] { display:flex; align-items:center; gap:12px; background:transparent; color:var(--sidebar-tx); border:0; padding:13px 14px; min-height:48px; width:100%; font-size:14px; border-radius:7px; font-weight:500; box-shadow:none; transition:background .16s,color .16s; text-align:left; }
#tbNav button:hover, #tbNav button.on[data-pg] { color:#fff; background:var(--sidebar-active); transform:none; }
#tbNav button.on[data-pg] { box-shadow:inset 3px 0 #91b2ff; }
#tbNav .nav-chevron { margin-left:auto; width:14px; opacity:0; }
#tbNav .on .nav-chevron { opacity:1; }
.sidebar-shortcuts { display:grid; grid-template-columns:20px 1fr; gap:12px; align-items:center; padding:0 14px; color:#94a8c4; }
.sidebar-shortcuts .ui-icon { width:17px; }
.sidebar-shortcuts button { background:transparent; border:0; color:#bac9de; font:inherit; font-size:13px; text-align:left; min-height:40px; }
.sidebar-shortcuts button:hover { color:white; }
.sidebar-bottom { margin-top:auto; padding:22px 4px 0; }
.sidebar-data { padding:15px; border:1px solid #344760; border-radius:8px; background:#1b2d47; }
.sidebar-data > span { font-size:12px; color:#f0f4fa; }
.sidebar-data p { margin:7px 0 12px; font-size:12px; color:#adbfd7; line-height:1.8; }
.sidebar-data a { display:flex; align-items:center; justify-content:space-between; color:#d4e2ff; text-decoration:none; font-size:12px; }
.sidebar-data .ui-icon { width:16px; }
.sidebar-market { display:block; text-align:center; font-size:10px; color:#9db0ca; margin-top:20px; }
#workspace { margin-left:var(--rail); min-width:0; }
#topbar, [data-theme="dark"] #topbar { position:sticky; top:0; margin:0; border:0; border-bottom:1px solid var(--line); border-radius:0; box-shadow:none; background:var(--panel); backdrop-filter:none; z-index:40; overflow:visible; }
.workspace-topline { display:flex; align-items:center; gap:24px; height:var(--header-height); padding:0 32px; }
.workspace-context { font-size:12px; color:var(--tx3); white-space:nowrap; }
.context-divider { margin:0 12px; color:var(--line2); }
#workspaceLocation { color:var(--tx); font-weight:500; }
.tb-search { display:flex; align-items:center; position:relative; margin-left:auto; flex:0 1 320px; min-width:160px; align-self:auto; background:var(--panel2); border:1px solid var(--line); border-radius:7px; }
.tb-search > .ui-icon { width:16px; height:16px; color:var(--tx3); margin-left:12px; }
.tb-search input, [data-theme="dark"] .tb-search input, [data-theme="eye"] .tb-search input { background:transparent; border:0; padding:9px 8px; min-width:0; width:100%; color:var(--tx); font-size:12px; border-radius:7px; }
.tb-search input:focus { outline:0; box-shadow:none; }
.tb-search:focus-within { outline:2px solid var(--accent); outline-offset:2px; }
.tb-search kbd { margin-right:9px; font:10px var(--font-data); color:var(--tx3); border:1px solid var(--line2); border-radius:3px; padding:2px 4px; white-space:nowrap; }
.tb-drop { top:calc(100% + 10px); width:380px; max-width:calc(100vw - 30px); border-radius:8px; box-shadow:0 10px 30px #13254320; }
#topbar .theme-sw { margin:0; padding:0 0 0 20px; border:0; border-left:1px solid var(--line); background:none; border-radius:0; gap:2px; }
.theme-sw button { padding:8px; border-radius:6px; min-height:36px; min-width:36px; line-height:1; color:var(--tx3); }
.theme-sw .ui-icon { width:17px; height:17px; }
.theme-sw button.on { color:var(--accent); background:var(--panel2); }
#workspaceMain { padding:26px 32px 40px; max-width:1600px; margin:0 auto; }
.workspace-heading { display:flex; justify-content:space-between; align-items:center; gap:20px; margin-bottom:24px; }
.workspace-heading h1 { font-size:var(--fs-4); font-weight:650; letter-spacing:-.6px; line-height:1.35; font-optical-sizing:auto; }
.workspace-heading p { margin-top:7px; color:var(--tx3); font-size:var(--fs-1); }
.heading-actions { display:flex; align-items:center; gap:12px; }
.market-date { display:flex; align-items:center; gap:7px; color:var(--tx2); font-size:12px; white-space:nowrap; }
.market-date .ui-icon { width:15px; }
.secondary-button, .text-button, .icon-button { display:inline-flex; align-items:center; justify-content:center; gap:7px; border:1px solid var(--line2); border-radius:6px; background:var(--panel); color:var(--tx2); padding:9px 12px; min-height:38px; font:500 12px var(--font-body); transition:background .16s; }
.secondary-button:hover, .icon-button:hover { background:var(--panel2); color:var(--accent); }
.secondary-button .ui-icon { width:15px; height:15px; }
.text-button { border:0; padding:12px 0 0; background:none; color:var(--accent); }
.text-button .ui-icon { width:15px; }
.mobile-menu { display:none; }
#subbar { position:sticky; top:var(--header-height); z-index:30; display:block; padding:0; background:var(--bg); border:0; border-bottom:1px solid var(--line2); border-radius:0; margin-bottom:18px; }
#subbar .sub { gap:22px; padding:0; overflow:auto; scrollbar-width:none; mask-image:none; -webkit-mask-image:none; }
#subbar .sub button { position:relative; padding:11px 0 13px; min-height:44px; font-size:13px; font-weight:500; background:transparent; border-radius:0; color:var(--tx3); border-bottom:2px solid transparent; transition:color .15s; flex-shrink:0; }
#subbar[data-cur] .sub button.on, [data-theme="dark"] #subbar .sub button.on { color:var(--accent); background:transparent; box-shadow:none; border-bottom-color:var(--accent); font-weight:650; }
#subbar .sub button:hover { color:var(--accent); transform:none; background:transparent; }
.data-meta { font-size:11px; color:var(--tx3); margin:-4px 0 18px; padding:0; }
.page > .sec-head { display:none; }
.page:not([hidden]), .view:not([hidden]), .page:not([hidden]) .card, .page:not([hidden]) .kpi, #v-heatmap .card, #v-advice .card { animation:none; }
.card { border:1px solid var(--line); background:var(--panel); border-radius:12px; padding:22px 24px; box-shadow:var(--shadow); transition:none; }
.card:hover { transform:none; box-shadow:var(--shadow); }
.card h2 { font-size:var(--fs-3); font-weight:650; line-height:1.5; letter-spacing:0; margin-bottom:6px; font-optical-sizing:auto; }
.card .note { color:var(--tx3); font-size:var(--fs-1); line-height:1.8; }
.kpis { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); margin:0 0 22px; gap:16px; padding:0; overflow:visible; }
.kpi { background:var(--panel); border:1px solid var(--line); padding:18px 20px; border-radius:10px; box-shadow:var(--shadow); min-width:0; }
.kpi.kpi-idx { background:var(--panel); border-color:var(--line); }
.kpi .k { font-size:var(--fs-1); font-weight:500; color:var(--tx3); margin-bottom:10px; }
.kpi .v { font:600 var(--fs-4)/1.25 var(--font-data); letter-spacing:-.5px; color:var(--tx); }
.kpi .v.up { color:var(--up); } .kpi .v.down { color:var(--down); }
.kpi .s { margin-top:10px; font-size:11px; font-weight:400; white-space:normal; color:var(--tx3); }
.market-analysis-grid { display:grid; grid-template-columns:minmax(0,1.85fr) minmax(270px,1fr); gap:20px; margin-bottom:20px; }
.panel-heading { display:flex; justify-content:space-between; align-items:flex-start; gap:14px; margin-bottom:14px; }
.panel-heading h2 { margin:0; font-size:15px; }
.panel-heading p { color:var(--tx3); font-size:11px; margin-top:5px; }
.segmented { display:inline-flex; padding:3px; background:var(--panel2); border:1px solid var(--line); border-radius:6px; gap:3px; }
.segmented button { border:0; border-radius:4px; padding:5px 8px; background:transparent; color:var(--tx3); font-size:11px; min-height:28px; white-space:nowrap; }
.segmented .on { background:var(--panel); color:var(--accent); box-shadow:0 1px 4px #17243c12; }
.trend-headline { display:flex; gap:12px; align-items:baseline; flex-wrap:wrap; margin:4px 0 4px; }
.trend-headline strong { font:600 var(--fs-4) var(--font-data); letter-spacing:-.5px; }
#workspaceTrendChange { font:12px var(--font-data); }
.trend-period { font-size:10px; color:var(--tx3); margin-left:auto; }
#workspaceTrend { height:216px; width:100%; }
.chart-placeholder { padding:60px 12px; color:var(--tx3); text-align:center; font-size:12px; }
.chart-data-details { font-size:11px; color:var(--tx3); }
.chart-data-details summary { width:max-content; cursor:pointer; padding:4px 0; }
.chart-data-details .table-scroll { max-height:240px; margin-top:10px; }
.neutral-label { color:var(--tx3); border:1px solid var(--line); padding:3px 7px; border-radius:4px; font-size:10px; white-space:nowrap; }
.sector-comparison { display:grid; gap:10px; margin-top:22px; }
.sector-line { display:grid; grid-template-columns:72px minmax(0,1fr) 53px; gap:10px; align-items:center; width:100%; min-height:22px; font-size:11px; color:var(--tx2); background:none; border:0; padding:0; text-align:left; }
.sector-line:hover .sector-label { color:var(--accent); }
.sector-line .sector-value { text-align:right; font:11px var(--font-data); }
.sector-track { height:7px; background:var(--panel2); position:relative; border-radius:2px; }
.sector-track i { display:block; height:7px; border-radius:2px; }
.market-detail-grid { display:grid; grid-template-columns:minmax(0,1.85fr) minmax(270px,1fr); gap:20px; }
.market-side-stack { display:flex; flex-direction:column; gap:20px; min-width:0; }
#marketContext .kpi { padding:13px 0; border:0; border-bottom:1px solid var(--line); border-radius:0; box-shadow:none; display:grid; grid-template-columns:1fr auto; align-items:center; gap:4px 8px; }
#marketContext .kpi:last-child { border:0; padding-bottom:0; }
#marketContext .kpi .k { margin:0; font-size:11px; }
#marketContext .kpi .v { font-size:19px; letter-spacing:-.5px; }
#marketContext .kpi .s { margin:0; grid-column:1/-1; font-size:10px; }
.active-asset { display:grid; grid-template-columns:1fr auto; gap:3px 8px; width:100%; border:0; border-bottom:1px solid var(--line); padding:12px 0; background:none; color:var(--tx); text-align:left; font:12px var(--font-body); }
.active-asset:last-child { border:0; }
.active-asset small { color:var(--tx3); font:10px var(--font-data); }
.active-asset span:last-child { color:var(--tx2); font:11px var(--font-data); }
#heatmapCard .filters { gap:6px; }
#heatmapCard > h2 { font-size:15px; }
#heatmapCard .chip { font-size:11px; padding:5px 8px; border-radius:4px; }
#heatmapCard .range-btn { font-size:11px; padding:5px 10px; border-radius:4px; }
#heatmapCard .note { font-size:11px; }
#treemap { height:380px !important; }
.chip,.range-btn { border-radius:6px; box-shadow:none; }
.chip.on,.range-btn.on { border-color:var(--accent); background:var(--accent); color:var(--panel); }
.range-btn.on { color:#fff; }
[data-theme="dark"] .range-btn.on { color:#101a2c; }
.filters { gap:8px; margin:16px 0; }
.filters input,.filters select,#instSearch { min-height:38px; border-radius:6px !important; font:13px var(--font-body); background:var(--panel2); border:1px solid var(--line2); color:var(--tx); }
.table-scroll,.tbl-wrap { border-radius:8px; border-color:var(--line); }
th,td,.matrix th,.matrix td { padding:12px 14px; font-size:12px; border-color:var(--line); }
th,.matrix th { font-size:11px; font-weight:500; background:var(--th-bg); color:var(--tx3); }
.num { font-family:var(--font-data); font-variant-numeric:tabular-nums; }
.grid,.grid3,.grid4 { gap:20px; }
.view > .card + .card,section > .card + .card { margin-top:20px; }
#pg-advice .research-header { display:none; }
#v-advice { display:block; }
#v-advice > .card { margin:0; }
#v-advice > .card[hidden] { display:none !important; }
#v-advice > .card > h2 { font-size:21px; margin-bottom:10px; }
#v-advice p { line-height:1.85; font-size:14px; }
#v-advice .note { font-size:12px; color:var(--tx3); }
#advOverview { padding:0; background:none; border:0; box-shadow:none; }
.allocation-overview { background:var(--panel); border:1px solid var(--line); border-radius:12px; padding:30px; grid-template-columns:minmax(0,1.55fr) minmax(250px,1fr); gap:36px; box-shadow:var(--shadow); }
.research-label { font-size:11px; font-weight:600; color:var(--gold); }
#v-advice .allocation-overview .thesis { font-size:28px; line-height:1.5; font-weight:650; white-space:pre-line; margin:12px 0 16px; letter-spacing:-.7px; }
.allocation-overview > div > p { max-width:48em; }
#v-advice .research-caveat { font-size:12px; color:var(--tx3); }
.evidence-status { align-self:stretch; padding-left:28px; border-left:1px solid var(--line); }
.evidence-status dl { gap:22px 18px; }
.evidence-status dt { font-size:11px; color:var(--tx3); }
.evidence-status dd { font:500 15px/1.5 var(--font-data); margin-top:6px; }
.decision-list { margin:20px 0; padding:0; gap:16px; border:0; }
.decision-list li { padding:20px; background:var(--panel); border:1px solid var(--line); border-radius:10px; }
.decision-list li::before { content:""; display:block; width:24px; height:3px; background:var(--accent); margin-bottom:14px; border-radius:2px; }
.decision-list li:nth-child(2)::before { background:var(--alloc-ow); }
.decision-list li:nth-child(3)::before { background:var(--alloc-uw); box-shadow:inset 0 0 0 1px var(--alloc-n); }
.decision-list b { font-size:14px; margin-bottom:8px; }
#v-advice .decision-list p { font-size:12px; color:var(--tx3); }
.research-entry-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:16px; }
.research-entry { position:relative; padding:20px; min-height:156px; border:1px solid var(--line); border-radius:10px; background:var(--panel); text-align:left; color:var(--tx); transition:border-color .16s,background .16s; }
.research-entry:hover { border-color:var(--accent); background:var(--panel2); }
.entry-number { display:block; color:var(--tx3); font:11px var(--font-data); margin-bottom:20px; }
.research-entry b { font-size:14px; font-weight:600; }
#v-advice .research-entry p { font-size:12px; color:var(--tx3); margin-top:8px; line-height:1.75; }
.research-entry > .ui-icon { position:absolute; top:19px; right:18px; width:16px; color:var(--accent); }
.valuation-grid { gap:30px; margin-top:24px; }
.valuation-grid > div { background:var(--panel2); border:1px solid var(--line); border-radius:10px; padding:24px; }
.valuation-grid > div + div { padding:24px; border:1px solid var(--line); }
.formula { padding:16px; background:var(--panel); border:1px solid var(--line); font-size:12px; }
.research-detail { margin-top:24px; }
.research-detail summary { font-size:13px; }
.research-table { min-width:800px; }
.research-table th,.research-table td { font-size:12px; padding:16px; }
.cash-bridge { margin:24px 0; border:1px solid var(--line); background:var(--panel2); border-radius:8px; }
.cash-bridge > div { padding:20px; }
#v-advice .cash-bridge p { font-size:12px; }
.scenario { border:1px solid var(--line); border-radius:10px; margin-top:24px; padding:24px; }
.scenario-value { font:600 44px var(--font-data); letter-spacing:-2px; }
#v-advice .scenario-output p { font-size:12px; }
.scenario-form input,.scenario-form select,.table-tools select { border-radius:6px; min-height:42px; font-size:13px; }
.reference-list { columns:2; column-gap:40px; margin:24px 0; }
.reference-list li { font-size:13px; }
.reference-list small { font-size:11px; }
#foot { margin:0 32px; padding:20px 0 30px; color:var(--tx3); font-size:10px; border-color:var(--line); }
#instKpis { grid-template-columns:repeat(4,minmax(0,1fr)); }
.sidebar-scrim { display:none; }
@media (max-width:1200px) {
  :root { --rail:188px; }
  #sidebar { padding:26px 12px 18px; }
  .workspace-brand { gap:9px; margin-left:4px; }
  #tbNav button { padding:12px; font-size:13px; gap:9px; }
  .workspace-topline { padding:0 24px; gap:16px; }
  #workspaceMain { padding:24px; }
  .heading-actions { gap:8px; }
  .market-analysis-grid,.market-detail-grid { grid-template-columns:minmax(0,1.5fr) minmax(250px,1fr); gap:16px; }
  .kpi { padding:16px; }
  .kpi .v { font-size:23px; }
  .trend-headline { gap:8px; }
  .trend-period { width:100%; margin:0; }
  .allocation-overview { grid-template-columns:minmax(0,1.4fr) minmax(210px,1fr); padding:24px; gap:24px; }
  #v-advice .allocation-overview .thesis { font-size:25px; }
}
@media (max-width:1023px) {
  .market-analysis-grid,.market-detail-grid { grid-template-columns:1fr; }
  .sector-comparison { grid-template-columns:1fr 1fr; gap:14px 28px; margin-top:20px; }
  .market-side-stack { display:grid; grid-template-columns:1fr 1fr; }
  .kpis { gap:10px; }
  .kpi .v { font-size:20px; }
  .kpi .k { font-size:11px; white-space:normal; }
  .workspace-heading { align-items:flex-start; }
  .market-date { display:none; }
  .allocation-overview { grid-template-columns:1fr; }
  .evidence-status { border:0; border-top:1px solid var(--line); padding:20px 0 0; }
  .evidence-status dl { grid-template-columns:repeat(4,1fr); }
  .research-entry-grid { grid-template-columns:repeat(2,1fr); }
  .valuation-grid { grid-template-columns:1fr; }
}
@media (max-width:767px) {
  :root { --rail:0px; --header-height:60px; }
  body { padding:0; max-width:100%; }
  #sidebar { transform:translateX(-100%); width:244px; transition:transform .18s; padding:24px 16px; }
  body.sidebar-open #sidebar { transform:none; }
  .sidebar-scrim:not([hidden]) { display:block; position:fixed; inset:0; background:#0b162c80; z-index:50; }
  body.sidebar-open { overflow:hidden; }
  #workspace { margin:0; }
  .workspace-topline { padding:0 16px; gap:12px; }
  .mobile-menu { display:inline-flex; padding:8px; min-width:40px; min-height:40px; border:0; background:none; }
  .workspace-context { display:none; }
  .tb-search { flex:1; margin:0; min-width:0; }
  .tb-search input { font-size:16px; padding:8px; }
  .tb-search kbd { display:none; }
  #topbar .theme-sw { padding:0; border:0; }
  .theme-sw button { padding:8px; min-width:36px; min-height:40px; }
  .theme-sw button[data-t="eye"] { display:none; }
  #workspaceMain { padding:22px 16px 32px; }
  .workspace-heading { gap:10px; margin-bottom:18px; }
  .workspace-heading h1 { font-size:25px; }
  .workspace-heading p { font-size:12px; max-width:22em; }
  #exportMarket { font-size:0; width:40px; height:40px; padding:0; }
  #exportMarket .ui-icon { width:18px; height:18px; }
  #subbar { margin:0 -16px 16px; padding:0 16px; }
  #subbar .sub { gap:22px; }
  #subbar .sub button { min-height:46px; font-size:13px; }
  .data-meta { font-size:10px; margin-bottom:16px; }
  .kpis { grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; margin-bottom:16px; }
  .kpi:last-child { grid-column:auto; }
  .kpi { padding:16px; }
  .kpi .v { font-size:24px; }
  .kpi .k { margin-bottom:10px; font-size:11px; }
  .kpi .s { font-size:10px; margin-top:8px; }
  .card { padding:18px; border-radius:10px; }
  .market-analysis-grid,.market-detail-grid { gap:16px; margin-bottom:16px; }
  .panel-heading { gap:10px; }
  .panel-heading h2 { font-size:15px; }
  .panel-heading p { font-size:10px; }
  .segmented button { min-height:36px; padding:6px 8px; }
  .trend-headline strong { font-size:27px; }
  .trend-period { margin:0 0 2px; }
  .sector-comparison { grid-template-columns:1fr; gap:14px; }
  .sector-line { grid-template-columns:80px 1fr 56px; font-size:12px; min-height:30px; }
  .sector-line .sector-value { font-size:12px; }
  .market-side-stack { display:flex; }
  #treemap { height:340px !important; }
  .allocation-overview { padding:22px; border-radius:10px; gap:20px; }
  #v-advice .allocation-overview .thesis { font-size:25px; }
  #v-advice p { font-size:16px; }
  #v-advice .research-caveat { font-size:12px; }
  .evidence-status dl { grid-template-columns:1fr 1fr; }
  .decision-list { grid-template-columns:1fr; gap:10px; margin:14px 0; }
  .decision-list li { padding:18px; }
  .decision-list li::before { width:20px; margin-bottom:10px; }
  #v-advice .decision-list p { font-size:13px; }
  .research-entry-grid { gap:10px; }
  .research-entry { padding:16px; min-height:174px; }
  #v-advice .research-entry p { font-size:12px; }
  .entry-number { margin-bottom:16px; }
  .valuation-grid > div,.valuation-grid > div + div { padding:18px; }
  .formula { font-size:12px; padding:12px; }
  .cash-bridge { grid-template-columns:1fr 1fr; }
  .cash-bridge > div { padding:14px; }
  .scenario { padding:16px; gap:24px; }
  .scenario-form { grid-template-columns:1fr; }
  .scenario-form input,.scenario-form select,.table-tools select { font-size:16px; min-height:44px; }
  .reference-list { columns:1; }
  #instKpis { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .filters input,.filters select { font-size:16px; min-height:44px; max-width:100%; }
  #foot { margin:0 16px; font-size:10px; }
  .skip-link:focus { left:16px; }
}
@media (prefers-reduced-motion:reduce) { #sidebar { transition:none; } *,*::before,*::after { animation:none !important; transition:none !important; scroll-behavior:auto !important; } }
/* 覆盖旧窄屏工具栏顺序，保证菜单、搜索、主题在同一行。 */
.workspace-topline > .tb-search { order:0; }
#topbar .workspace-topline > .theme-sw { order:0; }
@media (max-width:767px) { .workspace-topline { gap:8px; } .theme-sw button { min-width:32px; padding:6px; } }
#sidebar #tbNav { order:0; overflow:visible; flex-shrink:0; }
#sidebar #tbNav button.on[data-pg] { color:#fff; background:var(--sidebar-active); border:0; border-left:3px solid #8eafff; box-shadow:none; }
#sidebar { overflow-y:auto; }
.rv-item { flex-wrap:wrap; gap:6px 10px; }
.rv-item .nm { min-width:0; flex:1 1 110px; }
.rv-item .vl { min-width:0; flex:1 1 155px; overflow-wrap:anywhere; }
.rv-item .ds { flex:1 1 100%; }
/* 资产线稿和研究路径：原创矢量，无额外图片请求。 */
.heading-sketch { width:190px; height:86px; margin-left:auto; opacity:.8; }
.heading-sketch + .heading-actions { margin-left:0; }
.asset-sketch { width:100%; height:100%; color:var(--accent); overflow:visible; }
.asset-sketch path,.asset-sketch circle { vector-effect:non-scaling-stroke; stroke:currentColor; stroke-width:1; fill:none; stroke-linejoin:round; stroke-linecap:round; }
.asset-sketch .sketch-ground { opacity:.18; }
.asset-sketch .sketch-face { fill:var(--panel); }
.asset-sketch .sketch-shade { fill:var(--panel2); }
.asset-sketch .sketch-accent { fill:var(--accent); fill-opacity:.1; }
.asset-sketch .sketch-annotation { opacity:.45; stroke-dasharray:3 4; }
.research-sketch { margin:-10px 0 22px; }
.research-sketch .asset-sketch { display:block; height:162px; }
.research-sketch figcaption { display:flex; justify-content:space-between; gap:8px; font-size:11px; color:var(--tx2); margin-top:8px; }
.research-sketch figcaption span { color:var(--tx3); white-space:nowrap; }
.concept-board { margin:22px 0 28px; padding:24px; border:1px solid var(--line); border-radius:10px; background:var(--panel2); }
.diagram-kicker { font:10px/1.5 var(--font-data); letter-spacing:1.5px; color:var(--accent); }
.concept-board h3 { margin:8px 0 4px; font-size:18px; }
.concept-board figcaption p { margin:0; color:var(--tx2); font-size:12px; }
.concept-options { display:flex; gap:10px; margin:22px 0; flex-wrap:wrap; }
.concept-options button { border:1px solid var(--line2); border-radius:6px; padding:11px 14px; background:var(--panel); color:var(--tx2); font-size:12px; min-height:44px; }
.concept-options button.on { border-color:var(--accent); color:var(--accent); box-shadow:inset 0 0 0 1px var(--accent); }
.rights-timeline { display:grid; grid-template-columns:100px 1fr 115px; align-items:center; gap:24px; margin:30px 0; }
.timeline-origin,.timeline-terminal { display:flex; flex-direction:column; gap:10px; text-align:center; padding:20px 8px; border:1px solid var(--line2); border-radius:8px; background:var(--panel); }
.timeline-origin span,.timeline-terminal span,.timeline-cash>span { font-size:12px; color:var(--tx2); }
.timeline-origin b,.timeline-terminal b { font-size:20px; color:var(--accent); }
.timeline-cash { text-align:center; min-width:0; }
.timeline-cash svg { width:100%; height:86px; display:block; }
.timeline-cash small { color:var(--tx3); font:11px var(--font-data); }
.timeline-axis { stroke:var(--line2); fill:none; }
.cash-arrows { fill:none; stroke:var(--accent); stroke-width:2; stroke-linecap:round; }
.diagram-explanation { border-left:3px solid var(--accent); padding:12px 16px; background:var(--panel); color:var(--tx2); font-size:13px; line-height:1.8; margin:14px 0 0; min-height:48px; }
.cash-kicker { margin-top:28px; }
.cash-bridge { position:relative; gap:16px; margin:16px 0; }
.cash-bridge > button { position:relative; text-align:left; border:1px solid var(--line); background:var(--panel2); border-radius:8px; padding:20px; color:var(--tx); transition:transform .18s,border-color .18s; min-width:0; }
.cash-bridge > button.on { border-color:var(--accent); background:var(--panel); }
.cash-bridge > button:hover { transform:translateY(-3px); border-color:var(--accent); }
.cash-bridge > button b { display:block; margin-top:20px; font-size:15px; }
.cash-bridge > button p { font-size:12px; color:var(--tx2); margin-bottom:0; }
.cash-bridge > button:not(:last-child)::after { content:'→'; position:absolute; right:-14px; top:40%; color:var(--accent); z-index:1; }
.flow-number { font:24px var(--font-data); color:var(--accent); opacity:.75; }
.risk-route { display:grid; grid-template-columns:1fr 24px 1fr 24px 1fr; gap:12px; align-items:center; margin:24px 0; }
.risk-route button { background:var(--panel); border:1px solid var(--line2); padding:20px 16px; border-radius:8px; display:flex; flex-direction:column; gap:12px; color:var(--tx); text-align:left; min-height:132px; }
.risk-route button.on { border-color:var(--accent); box-shadow:inset 0 0 0 1px var(--accent); }
.risk-route button span,.risk-route button small { font-size:12px; color:var(--tx2); }
.risk-route button b { font-size:17px; }
.route-arrow { text-align:center; font-size:22px; color:var(--accent); }
@keyframes sketch-arrive { from { opacity:0; transform:translateY(7px); } to { opacity:1; transform:translateY(0); } }
@keyframes flow-draw { from { stroke-dashoffset:420; } to { stroke-dashoffset:0; } }
.visual-reveal.is-revealed { animation:sketch-arrive .45s ease-out both; }
.research-sketch.is-revealed .sketch-building { animation:sketch-arrive .7s ease-out both; }
.visual-reveal.is-revealed .cash-arrows { stroke-dasharray:420; animation:flow-draw .9s ease-out both; }
@media(max-width:1100px) { .heading-sketch { width:125px; } .rights-timeline { gap:12px; grid-template-columns:85px 1fr 95px; } }
@media(max-width:767px) { .heading-sketch { display:none; } .research-sketch .asset-sketch { height:150px; } .concept-board { padding:18px; } .rights-timeline { grid-template-columns:1fr 1fr; } .timeline-cash { grid-column:1/-1; grid-row:2; } .concept-options button { width:100%; text-align:left; } .cash-bridge > button:not(:last-child)::after { content:'↓'; right:24px; top:auto; bottom:-19px; } .cash-bridge { gap:22px; } .risk-route { grid-template-columns:1fr; gap:8px; } .risk-route button { min-height:110px; } .route-arrow { transform:rotate(90deg); } }
@media(prefers-reduced-motion:reduce) { .visual-reveal.is-revealed,.research-sketch.is-revealed .sketch-building,.visual-reveal.is-revealed .cash-arrows { animation:none; } .cash-bridge > button:hover { transform:none; } }
/* 总览线稿与正文并列，研究状态独立成横向信息带。 */
.allocation-overview { align-items:center; gap:22px 36px; }
.allocation-overview > .research-sketch { margin:0; }
.allocation-overview > .research-sketch .asset-sketch { height:210px; }
.allocation-overview > .evidence-status { grid-column:1/-1; border-left:0; border-top:1px solid var(--line); padding:18px 0 0; display:grid; grid-template-columns:1.3fr 1fr; gap:10px 30px; }
.allocation-overview > .evidence-status dl { grid-column:1/-1; display:grid; grid-template-columns:repeat(4,1fr); gap:16px; margin:0; }
.allocation-overview > .evidence-status p { margin:0; font-size:11px; }
@media(max-width:1023px) { .allocation-overview > .research-sketch .asset-sketch { height:160px; } }
@media(max-width:767px) { .allocation-overview > .evidence-status { grid-template-columns:1fr; } .allocation-overview > .evidence-status dl { grid-template-columns:1fr 1fr; } }

.tender-status { margin:16px 0; padding:12px 16px; border-left:3px solid var(--accent); background:var(--panel2); font-size:12px; color:var(--tx2); overflow-wrap:anywhere; }
.tender-status p { margin:4px 0; }
.tender-status summary { cursor:pointer; padding:8px 0; }
.tender-status details p { font-size:12px; }
.tender-warning { color:var(--warn); }

/* ===================================================================
   市场总览 / 配置建议 重排（设计师线框 2026-09-30：结论 → 证据 → 明细）
   · 首屏（结论横幅 + 4 张状态卡）纯 HTML/CSS，无图表；卡片与图表容器定高 → CLS≈0
   · 数字 tabular-nums；圆角统一 var(--radius)=12px；间距 8 / 12 / 16 / 20
   · 颜色：红/绿只用于价格（且带 ▲▼）；蓝阶 = 配置倾向；橙 = 预警/临界（描边 + ⚠）；品红 = 风险
   =================================================================== */
.ov-tier, .adv-tier { display:flex; align-items:center; gap:10px; margin:22px 0 10px; font-size:11px; letter-spacing:1.5px; color:var(--tx3); font-weight:600; }
.ov-tier::after, .adv-tier::after { content:""; flex:1; border-top:1px dashed var(--line2); }
#v-heatmap > .ov-tier:first-child { margin-top:0; }
@keyframes ov-rise { from { opacity:0; transform:translateY(12px); } to { opacity:1; transform:none; } }
.ov-hero { display:flex; justify-content:space-between; align-items:center; gap:20px; background:var(--panel); border:1px solid var(--line2); border-left:4px solid var(--accent); border-radius:var(--radius); padding:18px 22px; box-shadow:var(--shadow); min-height:132px; animation:ov-rise .42s cubic-bezier(.22,.9,.28,1) both; }
.ov-hero-main { min-width:0; flex:1; }
.ov-kicker { font-size:var(--fs-1); color:var(--tx3); margin:0 0 6px; letter-spacing:.5px; }
.ov-kicker-src { margin-left:6px; opacity:.85; }
.ov-headline { font-size:var(--fs-3); line-height:1.45; font-weight:650; letter-spacing:-.2px; margin:0; min-height:32px; overflow-wrap:anywhere; font-optical-sizing:auto; }
.ov-headline .ov-arrow { color:var(--tx3); font-weight:500; margin:0 6px; }
.ov-headline .ov-stance { color:var(--accent); }
.ov-headline .rc-tag { vertical-align:4px; margin-left:4px; }
.ov-sub { margin:8px 0 0; font-size:var(--fs-1); color:var(--tx2); display:flex; flex-wrap:wrap; align-items:center; gap:6px 10px; }
.ov-tag-switch { display:inline-flex; align-items:center; height:20px; padding:0 8px; border-radius:10px; font-size:11px; font-weight:650; color:var(--tx); border:1px solid var(--tx2); }
.ov-tag-switch::before { content:"⇄\00a0" / ""; }
.ov-switch-note { margin:8px 0 0; display:inline-block; font-size:12px; line-height:1.6; color:var(--tx2); background:var(--panel2); border:1px solid var(--line2); border-radius:6px; padding:4px 10px; }
.ov-switch-note::before { content:"ⓘ\00a0" / ""; color:var(--accent); }
.ov-hero-side { text-align:right; font-size:var(--fs-1); color:var(--tx2); display:flex; flex-direction:column; gap:6px; align-items:flex-end; flex-shrink:0; }
.ov-hero-side p { margin:0; }
.ov-link { background:none; border:0; padding:4px 0; color:var(--accent); font-size:12.5px; font-weight:600; min-height:32px; }
.ov-link:hover { text-decoration:underline; }
.ov-cards { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:16px; margin-top:16px; }
.ov-card { position:relative; background:var(--panel); border:1px solid var(--line); border-radius:var(--radius); padding:16px 18px 14px; box-shadow:var(--shadow); min-height:212px; display:flex; flex-direction:column; cursor:pointer; transition:border-color .15s, box-shadow .15s; animation:ov-rise .42s cubic-bezier(.22,.9,.28,1) both; }
.ov-card:nth-child(1) { animation-delay:40ms; }
.ov-card:nth-child(2) { animation-delay:80ms; }
.ov-card:nth-child(3) { animation-delay:120ms; }
.ov-card:nth-child(4) { animation-delay:160ms; }
@media (prefers-reduced-motion:reduce) { .ov-hero, .ov-card { animation:none; } }
.ov-card:hover, .ov-card:focus-visible { border-color:var(--accent); box-shadow:var(--shadow-h); outline:none; }
.ov-card h3 { font-size:var(--fs-1); font-weight:600; color:var(--tx3); margin:0; padding-right:70px; }
.ov-card .ov-go { position:absolute; right:14px; top:14px; font-size:11px; color:var(--accent); }
.ov-card[data-ds] .ov-go { top:auto; bottom:12px; }
.ov-big { font:650 var(--fs-4)/1.2 var(--font-data); letter-spacing:-.5px; margin:10px 0 4px; font-variant-numeric:tabular-nums; color:var(--tx); white-space:nowrap; }
.ov-big.ov-big-text { font:650 var(--fs-3)/1.3 var(--font-body); letter-spacing:0; }
.ov-big small { font-size:13px; font-weight:500; color:var(--tx3); margin-left:6px; letter-spacing:0; }
.ov-big .ov-dir { font-size:18px; color:var(--tx2); margin-left:4px; }
.ov-note { font-size:var(--fs-1); color:var(--tx2); line-height:1.6; margin:0; font-variant-numeric:tabular-nums; }
.ov-note-gap { margin-top:6px; }
.ov-note + .ov-note { margin-top:2px; }
.ov-note b { color:var(--tx); font-weight:600; }
.ov-foot { margin-top:auto; padding-top:10px; display:flex; flex-wrap:wrap; align-items:center; gap:6px 8px; font-size:11px; color:var(--tx3); }
.ov-pill { display:inline-flex; align-items:center; height:20px; padding:0 8px; border-radius:10px; font-size:11px; color:var(--tx2); border:1px solid var(--line2); white-space:nowrap; }
.ov-pill-grey { color:var(--tx3); background:var(--panel2); border-color:var(--line); font-weight:500; }
.ov-bar { height:6px; border-radius:3px; background:var(--prog-track); margin-top:10px; overflow:hidden; }
.ov-bar > i { display:block; height:100%; border-radius:3px; background:var(--tilt-pos); }
.ov-dots { display:inline-flex; gap:4px; vertical-align:-1px; margin-right:4px; }
.ov-dots i { width:9px; height:9px; border-radius:50%; border:1.5px solid var(--warn); display:inline-block; }
.ov-dots i.on { background:var(--warn); }
.ov-confirm { margin-top:8px; font-size:var(--fs-1); color:var(--tx2); font-variant-numeric:tabular-nums; }
.ov-confirm b { color:var(--tx); font-weight:600; }
.ov-confirm small { display:block; color:var(--tx3); font-size:11px; line-height:1.5; margin-top:2px; }
.ov-mini-clock { float:right; display:grid; grid-template-columns:1fr 1fr; width:76px; height:76px; border:1px solid var(--line2); border-radius:50%; overflow:hidden; margin:-2px 0 4px 8px; font-size:9.5px; }
.ov-mini-clock span { display:flex; align-items:center; justify-content:center; color:var(--tx3); border:.5px solid var(--line); }
.ov-mini-clock span.on { background:var(--tilt-pos); color:#fff; font-weight:650; }
.ov-mini-clock span.lean { outline:1.5px dashed var(--tilt-pos); outline-offset:-3px; color:var(--tilt-pos); }
.ov-crit { color:var(--warn); font-weight:600; }
.ov-skel { color:var(--tx3); }
/* design-r2: loading / empty / error state objects (not just badges) */
@keyframes ov-shimmer {
  0% { background-position: 100% 0; }
  100% { background-position: -100% 0; }
}
.ov-skel-block {
  display:block; border-radius:8px;
  background: linear-gradient(90deg, var(--panel2) 0%, var(--line) 45%, var(--panel2) 90%);
  background-size: 200% 100%;
  animation: ov-shimmer 1.2s ease-in-out infinite;
  color:transparent !important; user-select:none; pointer-events:none;
}
.ov-skel-line { height:12px; margin:8px 0 0; max-width:78%; }
.ov-skel-line.short { max-width:42%; height:10px; }
.ov-skel-kpi { height:28px; width:56%; margin:12px 0 6px; }
.ov-card.is-loading .ov-go { visibility:hidden; }
.ov-card.is-empty .ov-big, .ov-card.is-error .ov-big { color:var(--tx3); font-size:var(--fs-3); font-weight:600; }
.ov-card.is-empty .ov-note, .ov-card.is-error .ov-note { color:var(--tx3); }
.ov-state-empty, .ov-state-error {
  display:flex; flex-direction:column; align-items:flex-start; justify-content:center;
  gap:6px; min-height:120px; color:var(--tx3); font-size:var(--fs-1); line-height:1.6;
}
.ov-state-error { color:var(--tx2); border-left:3px solid var(--warn, #d4a017); padding-left:10px; }
.hm-skel {
  position:absolute; inset:0; display:grid;
  grid-template-columns:repeat(4,1fr); grid-template-rows:repeat(3,1fr);
  gap:6px; padding:8px; z-index:1;
}
.hm-skel span {
  display:block; border-radius:6px;
  background: linear-gradient(90deg, var(--panel2) 0%, var(--line) 45%, var(--panel2) 90%);
  background-size: 200% 100%;
  animation: ov-shimmer 1.2s ease-in-out infinite;
}
.hm-skel span:nth-child(1) { grid-column: span 2; grid-row: span 2; }
.hm-skel span:nth-child(2) { grid-column: span 2; }
.hm-skel span:nth-child(5) { grid-column: span 2; }
.hm-empty, .hm-error {
  position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  flex-direction:column; gap:8px; z-index:1; background:var(--panel2);
  color:var(--tx3); font-size:var(--fs-1); text-align:center; padding:24px; border-radius:8px;
}
.hm-error { color:var(--tx2); border:1px dashed var(--warn, #d4a017); }
.chart-box { position:relative; }
.chart-box.is-loading .hm-skel { display:grid; }
.chart-box:not(.is-loading) .hm-skel { display:none; }
.chart-box.is-empty .hm-empty { display:flex; }
.chart-box:not(.is-empty) .hm-empty { display:none; }
.chart-box.is-error .hm-error { display:flex; }
.chart-box:not(.is-error) .hm-error { display:none; }
@media (prefers-reduced-motion:reduce) {
  .ov-skel-block, .hm-skel span { animation:none; background:var(--panel2); }
}
/* home + strategy L2 type utilities (replace inline font-size) */
.fs-1 { font-size:var(--fs-1); }
.fs-2 { font-size:var(--fs-2); }
.fs-3 { font-size:var(--fs-3); }
.fs-4 { font-size:var(--fs-4); }
.fs-meta { font-size:var(--fs-1); color:var(--tx3); }
.fs-meta-2 { font-size:var(--fs-1); color:var(--tx2); }
.hm-crumb-hint { font-size:var(--fs-1); color:var(--tx3); }
.hm-crumb-now { font-size:var(--fs-1); color:var(--tx2); }
.strat-today { font-size:var(--fs-1); color:var(--tx3); }
.strat-sub { font-size:var(--fs-1); color:var(--tx2); }
.cell-code { font-size:var(--fs-1); color:var(--tx3); }
.cell-count { font-size:10px; color:var(--tx3); }
.ov-grid2 { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:20px; margin-bottom:20px; }
.ov-grid2-wide { grid-template-columns:minmax(0,1.6fr) minmax(280px,1fr); }
.ov-grid2 > .card { margin:0; min-width:0; }
.ov-points-list { list-style:none; margin:4px 0 0; padding:0; display:flex; flex-direction:column; gap:10px; min-height:132px; }
.ov-points-list li { position:relative; padding-left:14px; font-size:12.5px; line-height:1.65; color:var(--tx2); }
.ov-points-list li::before { content:""; position:absolute; left:0; top:.7em; width:5px; height:5px; border-radius:50%; background:var(--accent); }
.ov-points-list li b { color:var(--tx); }
.ov-fold { background:var(--panel); border:1px solid var(--line); border-radius:var(--radius); margin-bottom:10px; }
.ov-fold > summary { list-style:none; display:flex; justify-content:space-between; align-items:center; gap:12px; padding:13px 18px; cursor:pointer; font-size:13px; color:var(--tx2); min-height:48px; }
.ov-fold > summary::-webkit-details-marker { display:none; }
.ov-fold > summary > span:first-child::before { content:"▸"; display:inline-block; width:16px; color:var(--tx3); transition:transform .15s; }
.ov-fold[open] > summary > span:first-child::before { transform:rotate(90deg); }
.ov-fold-act { font-size:12px; color:var(--accent); white-space:nowrap; }
.ov-fold[open] > summary .ov-fold-act { visibility:hidden; }
.ov-fold > .card, .ov-fold > .kpis, .ov-fold-grid, .ov-fold-links { margin:0 16px 16px; }
.ov-fold > .card { box-shadow:none; }
.ov-fold-grid { display:grid; grid-template-columns:minmax(0,1.4fr) minmax(260px,1fr); gap:16px; }
.ov-fold-grid > .card { margin:0; }
.ov-fold-links { display:flex; flex-wrap:wrap; gap:10px; align-items:center; }
.ov-fold-links .note { flex:1 1 100%; margin:0; font-size:12px; color:var(--tx3); }
/* 热力图半宽后仍定高 */
.ov-grid2 #treemap { height:360px !important; }
.sector-line .sector-value.up::before, .sector-line .sector-value.down::before { font-size:.75em; }

/* ---- 配置建议页（① 建议 → ② 理由 → ③ 风险 → ④ 操作） ---- */
.adv-overview > .adv-tier:first-child { margin-top:0; }
.adv-hero { display:flex; justify-content:space-between; align-items:center; gap:20px; padding:16px 20px; border:1px solid var(--line2); border-left:4px solid var(--tilt-pos); border-radius:var(--radius); background:var(--panel2); margin-bottom:14px; }
.adv-headline { font-size:21px; font-weight:650; line-height:1.45; margin:0; }
.adv-sub { margin:6px 0 0; font-size:12px; color:var(--tx2); }
.adv-legend { font-size:11px; color:var(--tx3); text-align:right; margin:0; line-height:1.6; flex-shrink:0; }
.adv-rec { min-width:560px; }
.adv-rec td, .adv-rec th { vertical-align:middle; text-align:left; }
.adv-rec th { font-weight:600; }
.adv-rec tr.adv-right td { background:var(--panel2); font-weight:650; }
.adv-rec tr.adv-sector td:first-child { padding-left:26px; }
.adv-rec td.adv-reason-cell { color:var(--tx2); font-size:12px; line-height:1.6; }
.adv-rec .adv-conf { font-size:11px; color:var(--tx3); margin-left:6px; white-space:nowrap; }
.adv-reasons { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; }
.adv-reason { margin:0; padding:14px 16px; border:1px solid var(--line); border-radius:var(--radius); background:var(--panel); position:relative; min-width:0; }
.adv-reason h3 { font-size:13px; margin:0; }
.adv-reason figcaption .note { margin:2px 0 0; font-size:11px; }
.adv-mini { height:128px; margin-top:8px; }
.adv-mini svg { width:100%; height:100%; display:block; overflow:visible; }
.adv-mini text { font:10px var(--font-data); fill:var(--tx3); }
.adv-reason-read { margin:8px 0 0; font-size:12px; line-height:1.6; color:var(--tx2); min-height:38px; }
.adv-evidence { margin-top:12px; }
.adv-risks { display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:14px; }
.adv-risk { position:relative; padding:14px 16px; border:1px solid var(--line); border-left:4px solid var(--risk); border-radius:var(--radius); background:var(--panel); min-width:0; }
.adv-risk.is-near { border-left-color:var(--warn); }
.adv-risk.is-pending { border-left-style:dashed; border-left-color:var(--tx3); }
.adv-risk h3 { font-size:13px; margin:0 0 6px; }
.adv-risk h3::before { content:"⚠\00a0" / ""; color:var(--risk); }
.adv-risk.is-near h3::before { color:var(--warn); }
.adv-risk.is-pending h3::before { color:var(--tx3); }
.adv-risk .ov-note { font-size:11.5px; }
.adv-risk .ov-bar > i { background:var(--risk); }
.adv-risk.is-near .ov-bar > i { background:var(--warn); }
.adv-risk-dist { margin-top:6px; font-size:12px; font-variant-numeric:tabular-nums; }
.adv-risk-dist b { font-weight:650; }
.adv-risk-pending { margin-top:4px; font-size:11px; color:var(--tx3); }
.adv-risk-list { margin:8px 0 0; padding-left:0; list-style:none; display:grid; gap:8px; }
.adv-risk-list li { font-size:12px; line-height:1.6; color:var(--tx2); }
.adv-risk-list li b { color:var(--tx); margin-right:6px; }
.adv-steps { list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px; counter-reset:none; }
.adv-steps li { border:1px solid var(--line); border-radius:var(--radius); background:var(--panel); padding:14px 16px; min-width:0; }
.adv-steps li b { display:block; font-size:13px; margin-bottom:4px; }
.adv-steps li p { margin:0; font-size:12px; color:var(--tx2); line-height:1.6; }
.adv-step-go { all:unset; cursor:pointer; display:block; }
.adv-step-go:focus-visible { outline:2px solid var(--accent); outline-offset:4px; border-radius:4px; }
.adv-step-go p { color:var(--accent) !important; }
.allocation-legacy { margin-top:14px; }
@media (max-width:1180px) { .ov-cards { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:1023px) { .ov-grid2, .ov-grid2-wide, .ov-fold-grid { grid-template-columns:1fr; } .adv-reasons { grid-template-columns:1fr 1fr; } .adv-steps { grid-template-columns:1fr 1fr; } }
@media (max-width:767px) {
  .ov-hero { flex-direction:column; align-items:flex-start; padding:14px 16px; gap:10px; min-height:0; }
  .ov-hero-side { text-align:left; align-items:flex-start; flex-direction:row; flex-wrap:wrap; gap:4px 12px; }
  .ov-headline { font-size:18px; }
  .ov-cards { gap:10px; margin-top:12px; }
  .ov-card { padding:12px 12px 10px; min-height:196px; }
  .ov-card h3 { padding-right:0; font-size:11.5px; }
  .ov-card .ov-go { display:none; }
  .ov-big { font-size:22px; margin:8px 0 2px; }
  .ov-big.ov-big-text { font-size:16px; }
  .ov-mini-clock { width:52px; height:52px; font-size:8px; }
  .ov-note { font-size:11px; }
  .ov-fold > .card, .ov-fold > .kpis, .ov-fold-grid, .ov-fold-links { margin:0 10px 10px; }
  .adv-hero { flex-direction:column; align-items:flex-start; }
  .adv-legend { text-align:left; }
  .adv-reasons, .adv-steps { grid-template-columns:1fr; }
}
@media (max-width:380px) { .ov-cards { grid-template-columns:1fr; } }
/* 首页卡片细节：数据状态角标放在标题下一行（不与标题/详情重叠）；时钟卡迷你象限在宽屏靠右 */
.ov-card > h3 { order:-2; }
.ov-card > .ds-badge.ds-corner { position:static; order:-1; align-self:flex-start; margin:6px 0 0; }
.ov-card[data-ds] h3 { padding-right:70px; }
.ov-card[data-ds] .ov-go { top:14px; bottom:auto; }
.ov-headline .ov-stance { display:inline-block; }
@media (min-width:768px) {
  #ovCardClock .ov-mini-clock { position:absolute; right:16px; top:40px; float:none; margin:0; }
  #ovCardClock .ov-big, #ovCardClock .ov-big + .ov-note { padding-right:84px; }
}
/* CLS：首屏结论与卡片按断点预留高度（取当前内容最大高度；内容变短时不回缩） */
.ov-switch-note-plain { color:var(--tx3); }
.ov-switch-note-plain::before { color:var(--tx3); }
.ov-switch-note .ov-link { min-height:0; padding:0; font-size:12px; }
.ov-hero { min-height:176px; }
.ov-card { min-height:262px; }
@media (max-width:1180px) { .ov-hero { min-height:212px; } .ov-card { min-height:236px; } }
@media (max-width:1023px) {
  .ov-hero { flex-direction:column; align-items:flex-start; gap:10px; min-height:250px; }
  .ov-hero-side { text-align:left; align-items:flex-start; flex-direction:row; flex-wrap:wrap; gap:4px 14px; }
  .ov-card { min-height:262px; }
}
@media (max-width:767px) {
  .ov-hero { min-height:284px; }
  .ov-card { min-height:252px; }
  #ovCardClock, #ovCardSpread { min-height:324px; }
}
@media (max-width:380px) {
  .ov-hero { min-height:336px; }
  .ov-card, #ovCardSpread { min-height:200px; }
  #ovCardClock { min-height:252px; }
}
/* 首屏以下的明细折叠区：跳过屏外渲染 */
.ov-fold:not([open]) { content-visibility:auto; contain-intrinsic-size:auto 50px; }
.ov-headline { min-height:32px; }
@media (max-width:1180px) { .ov-headline { min-height:64px; } }
@media (max-width:767px) { .ov-headline { min-height:52px; } }
@media (max-width:380px) { .ov-headline { min-height:104px; } }
@media (max-width:1023px) { .ov-hero { justify-content:flex-start; } .ov-hero-main { flex:none; width:100%; } }
/* ===== 2026-09-30 团队反馈：结论横幅依据行 + 窄屏首屏压缩 ===== */
.ov-basis { margin:6px 0 0; font-size:13px; line-height:1.55; color:var(--tx); display:flex; flex-wrap:wrap; align-items:baseline; gap:2px 10px; }
.ov-basis-main { font-weight:500; }
.ov-basis-aux { font-size:11.5px; color:var(--tx3); }
.adv-hero .ov-basis { margin:4px 0 2px; }
.ov-nw { white-space:nowrap; }
.ov-tag-sm { height:18px; padding:0 6px; font-size:10.5px; vertical-align:1px; }
@media (max-width:767px) {
  .is-home #workspaceSubtitle, .is-home #meta { display:none; }
  .is-home #v-heatmap > .ov-tier:first-child { display:none; }
  .ov-hero { padding:12px 14px 10px; gap:8px; }
  .ov-kicker { margin-bottom:4px; }
  .ov-basis { font-size:12.5px; margin-top:4px; }
  .ov-basis-aux { font-size:11px; }
  .ov-sub { margin-top:6px; }
  .ov-switch-note { margin-top:6px; padding:3px 8px; font-size:11.5px; }
  .ov-cards { grid-template-columns:repeat(2,minmax(0,1fr)); }
  #ovCardClock { grid-column:1 / -1; }
  #ovCardClock .ov-mini-clock { float:right; width:64px; height:64px; font-size:9px; margin:-4px 0 4px 8px; }
}
@media (max-width:380px) { .ov-cards { grid-template-columns:1fr; } }
/* CLS 预留高度（依据行加入 + 窄屏重排后按实测重设） */
.ov-hero { min-height:188px; }
.ov-headline { min-height:32px; }
.ov-card { min-height:262px; }
@media (max-width:1180px) { .ov-hero { min-height:190px; } .ov-headline { min-height:32px; } .ov-card { min-height:214px; } }
@media (max-width:1023px) { .ov-hero { min-height:232px; } .ov-card { min-height:262px; } }
@media (max-width:767px) {
  .ov-hero { min-height:284px; } .ov-headline { min-height:52px; }
  .ov-card, #ovCardSpread { min-height:252px; } #ovCardClock { min-height:256px; }
}
@media (max-width:380px) { .ov-hero { min-height:286px; } .ov-headline { min-height:52px; } .ov-card, #ovCardSpread { min-height:192px; } #ovCardClock { min-height:256px; } }
@media (max-width:767px) {
  #ovCardClock .ov-mini-clock { position:absolute; right:14px; top:12px; float:none; margin:0; }
  #ovCardClock .ov-big { padding-right:76px; }
}
@media (max-width:767px) { #ovCardClock { min-height:192px; } }
@media (max-width:767px) { .ov-hero { min-height:300px; } }
.ov-basis { min-height:20px; }
@media (max-width:767px) { .ov-basis { min-height:38px; } }
@media (min-width:768px) { .ov-hero-side { min-height:96px; justify-content:center; } }
@media (max-width:767px) { .ov-switch-note { min-height:44px; } }
@media (min-width:768px) and (max-width:1023px) { .ov-hero { min-height:296px; } }

.ov-basis-skip, .ov-basis-note { display: block; margin-top: 4px; font-size: 12px; color: var(--tx3); font-weight: 400; }
.ov-basis-note { color: var(--warn); }

/* ---- design-r1 type scale utilities (12 / 14 / 18+28) ---- */
.panel-subhead { font-size:var(--fs-2); font-weight:600; margin:0 0 6px; line-height:1.45; color:var(--tx); }
.panel-subhead + .panel-subhead,
.panel-subhead.panel-subhead-spaced { margin-top:16px; }
.panel-l2-stamp { font-size:var(--fs-1); color:var(--tx3); margin:0 0 10px; font-variant-numeric:tabular-nums; }
.callout-box { background:var(--panel2); border-radius:10px; padding:12px 14px; }
.callout-box h3 { font-size:var(--fs-1); font-weight:600; margin:0 0 6px; color:var(--tx); }
.callout-box p { font-size:var(--fs-1); color:var(--tx2); line-height:1.7; margin:0; }
.note-block { font-size:var(--fs-1); color:var(--tx2); line-height:1.75; margin-top:10px; }
.note-tight { margin-bottom:8px; }
.hm-summary { display:flex; justify-content:space-between; font-size:var(--fs-1); color:var(--tx2); margin-bottom:10px; font-variant-numeric:tabular-nums; }
.inst-search-inline { margin-left:auto; width:260px; max-width:100%; background:var(--panel2); border:1px solid var(--line); border-radius:10px; padding:7px 14px; font:inherit; font-size:var(--fs-1); font-weight:400; color:var(--tx); }

/* design-r2 layout utilities (home + strategy L2) */
.filters-tight { margin-bottom:8px; }
.hm-crumb { display:flex; align-items:center; gap:10px; margin-bottom:10px; flex-wrap:wrap; }
.hm-legend .hm-leg-up { background:#c2413d; }
.hm-legend .hm-leg-flat { background:#7a8494; }
.hm-legend .hm-leg-dn { background:#1f7a5c; }
.chart-box-hm { position:relative; width:100%; height:360px; }
.chart-h-300 { height:300px; }
.chart-h-320 { height:320px; overflow:visible; }
.chart-h-360 { height:360px; }
.grid-flush { margin-bottom:0; }
.table-gap { margin-top:12px; }

/* design-r3: chart height + scroll panel utilities (kill height/max-height inline) */
.chart-h-sm { height:300px; }
.chart-h-md { height:380px; }
.chart-h-lg { height:400px; }
.scroll-panel { overflow:auto; overscroll-behavior:contain; }
.scroll-panel-sm { max-height:420px; }
.scroll-panel-md { max-height:460px; }
.scroll-panel-lg { max-height:520px; }
.scroll-panel-xl { max-height:560px; }
.scroll-panel-xxl { max-height:620px; }
.mt-8 { margin-top:8px; }
.mt-10 { margin-top:10px; }
.mt-12 { margin-top:12px; }
.mt-14 { margin-top:14px; }
.mb-0 { margin-bottom:0; }
.mb-8 { margin-bottom:8px; }
.mb-10 { margin-bottom:10px; }
.mt-10-flush { margin:10px 0 0; }
.mt-8-flush { margin:8px 0 0; }
.note-inline { display:inline; }
.tone-risk-text { color:var(--risk); }
.tone-warn-text { color:var(--warn); }
.tone-pos-text { color:var(--tilt-pos); }
.heading-row { display:flex; align-items:baseline; gap:14px; flex-wrap:wrap; }
.fw-400 { font-weight:400; }
.grid-flush-top { margin-top:14px; margin-bottom:0; }

/* design-r3: skeleton → content fade (150–200ms) */
@keyframes ov-content-in {
  from { opacity:0; }
  to { opacity:1; }
}
.ov-card.is-content-in > *:not(h3):not(.ov-go):not(.ds-badge) {
  animation: ov-content-in 180ms var(--ease, cubic-bezier(.22,.9,.28,1)) both;
}
.chart-box.is-content-in {
  animation: ov-content-in 180ms var(--ease, cubic-bezier(.22,.9,.28,1)) both;
}
@media (prefers-reduced-motion:reduce) {
  .ov-card.is-content-in > *:not(h3):not(.ov-go):not(.ds-badge),
  .chart-box.is-content-in { animation:none; }
}

#usCoupleStats.table-scroll, #usMemberStats.table-scroll { margin-top:14px; }

/* 2026-10-07：市场判断、量化证据、主体地图组成同一阅读路径。
   沿用站内数据、主题与图标，动效仅用于导航反馈和内容进入。 */
#workspaceMain { padding:30px 34px 48px; max-width:1660px; }
#topbar, [data-theme="dark"] #topbar { margin:0; border-radius:0; background:var(--bg); }
.workspace-topline { padding:0 34px; }
.workspace-heading { margin-bottom:24px; min-height:66px; }
.workspace-heading h1 { font-size:34px; line-height:1.25; letter-spacing:-.8px; }
.workspace-heading p { font-size:13px; color:var(--tx2); margin-top:9px; }
.heading-sketch { width:178px; opacity:.68; }
.workspace-brand { margin:0 8px 38px; gap:11px; }
.workspace-brand b { font-size:25px; letter-spacing:1px; }
#sidebar { padding-top:34px; }
#tbNav button, #tbNav button.on[data-pg] { border-radius:8px; min-height:48px; }
#tbNav button.on[data-pg] { box-shadow:inset 2px 0 #a5bfff; }
.sidebar-section-label { letter-spacing:.5px; font-size:11px; }
.sidebar-data { background:transparent; border-color:#34435b; border-radius:10px; }
.sidebar-shortcuts button { font-size:12px; }
#subbar { border-bottom:1px solid var(--line2); background:var(--bg); margin-bottom:14px; border-radius:0; }
#subbar .sub { gap:25px; padding:0; }
#subbar .sub button { padding:12px 0; font-size:13px; border-radius:0; min-height:44px; }
#subbar[data-cur] .sub button.on, [data-theme="dark"] #subbar .sub button.on { background:transparent; color:var(--accent); box-shadow:none; border-bottom:2px solid var(--accent); }
.data-meta { font-size:11px; margin:0 0 20px; line-height:1.7; }
.card { padding:24px; border-radius:var(--radius); box-shadow:var(--shadow); }
.panel-heading { gap:12px; margin-bottom:16px; }
.panel-heading h2, .card h2 { font-size:17px; font-weight:650; letter-spacing:-.15px; }
.panel-heading p { font-size:12px; line-height:1.65; color:var(--tx2); }
.card .note { color:var(--tx2); font-size:12px; }
.segmented { border-color:var(--line); background:var(--panel2); padding:3px; border-radius:7px; }
.segmented button { min-height:30px; padding:5px 9px; font-size:11px; border-radius:4px; }
.secondary-button { min-height:38px; border-radius:7px; }
.ov-tier { font-size:12px; font-weight:600; letter-spacing:.4px; color:var(--tx2); margin:28px 0 14px; }
.ov-tier::after { border-top:1px solid var(--line2); }
#v-heatmap > .ov-tier:first-child { margin-top:0; }
.market-lead { display:grid; grid-template-columns:minmax(0,1.2fr) minmax(0,1fr); gap:18px; align-items:stretch; }
.market-lead > .card { margin:0; }
.market-lead .ov-hero { position:relative; isolation:isolate; overflow:hidden; min-height:332px; display:flex; flex-direction:column; align-items:stretch; justify-content:space-between; padding:27px 30px 22px; gap:20px; border:1px solid #263c5e; border-left-width:1px; border-radius:var(--radius); background:#162b49; box-shadow:none; color:#f2f6fc; }
.market-lead .ov-hero::before { content:""; position:absolute; inset:0; z-index:-1; background-image:linear-gradient(#6c8baa0c 1px,transparent 1px),linear-gradient(90deg,#6c8baa0c 1px,transparent 1px); background-size:48px 48px; mask-image:linear-gradient(90deg,transparent,#000); pointer-events:none; }
.market-lead .ov-hero-main { flex:1; width:100%; }
.ov-hero .ov-kicker { font-size:12px; color:#c4d1e3; letter-spacing:.7px; margin:0 0 20px; }
.ov-hero .ov-kicker-src { display:inline; margin-left:12px; font-size:11px; color:#a6b9d2; }
.ov-hero .ov-headline { min-height:0; margin:0 0 18px; font-size:30px; line-height:1.35; letter-spacing:-.6px; font-weight:600; }
.ov-hero .ov-rate-label { display:block; color:#aabddb; font-size:14px; font-weight:500; line-height:1.4; margin-bottom:7px; letter-spacing:.3px; }
.ov-hero .ov-arrow { display:none; }
.ov-hero .ov-headline .ov-stance { color:#fff; display:block; }
.ov-hero .ov-basis { color:#e0e9f6; font-size:12px; line-height:1.7; min-height:0; display:block; }
.ov-hero .ov-basis-main { font-weight:500; }
.ov-hero .ov-basis-summary { font-size:13px; line-height:1.75; color:#e2ebf8; margin:0; }
.ov-basis-summary small { display:block; color:#aebfd7; font-size:11px; margin-top:4px; }
.ov-method { margin-top:14px; font-size:11px; color:#c2d4ed; }
.ov-method > summary { width:max-content; max-width:100%; min-height:28px; padding:3px 0; cursor:pointer; text-underline-offset:4px; }
.ov-method > summary:hover { color:#fff; }
.ov-method > div { padding:10px 12px; border:1px solid #ffffff20; border-radius:6px; margin-top:8px; background:#122441; }
.ov-method[open] .ov-basis { margin:0; }
.ov-hero .ov-basis-aux, .ov-hero .ov-basis-skip { color:#acbdd6; font-size:11px; margin-top:5px; }
.ov-hero .ov-basis-note { color:#ffd099; font-size:11px; margin-top:5px; }
.ov-hero .ov-sub { color:#aabddb; font-size:11px; margin:14px 0 0; }
.ov-hero .ov-switch-note { display:block; min-height:0; padding:8px 0 0; margin:7px 0 0; background:none; border:0; color:#bacbe1; font-size:11px; line-height:1.65; }
.ov-hero .ov-switch-note::before { color:#a8c0e7; }
.ov-hero .ov-link { color:#bfd4ff; font-size:12px; }
.ov-hero .ov-tag-switch { border-color:#657c9d; color:#d4e3ff; background:#ffffff08; }
.market-lead .ov-hero-side { display:grid; grid-template-columns:1fr auto; align-items:center; text-align:left; gap:4px 12px; min-height:0; padding-top:16px; border-top:1px solid #ffffff20; color:#c4d3e8; }
.ov-hero-side #ovUniverse { grid-column:1; font-size:12px; }
.ov-hero-side #ovReval { grid-column:1; }
.ov-hero .ov-hero-side > button { grid-column:2; grid-row:1 / span 2; padding:9px 12px; border:1px solid #7999c9; background:#e7efff; border-radius:6px; color:#1d3555; font-size:12px; }
.ov-hero-side > button:hover { background:#fff; text-decoration:none; }
.lead-trend { display:flex; flex-direction:column; padding:24px; min-height:332px; }
.lead-trend .panel-heading { flex-wrap:wrap; margin-bottom:15px; }
.lead-trend .panel-heading h2 { font-size:15px; }
.lead-trend .panel-heading p { font-size:11px; }
.lead-trend .trend-headline { align-items:baseline; gap:10px; margin:0; }
.lead-trend .trend-headline strong { font-size:36px; letter-spacing:-1.2px; line-height:1.15; }
.lead-trend #workspaceTrendChange { font-size:14px; }
.lead-trend .trend-period { width:100%; margin:3px 0 0; font-size:10px; }
.lead-trend #workspaceTrend { height:172px; min-height:172px; flex:1; margin:6px 0 0; }
.lead-trend #workspaceTrend { position:relative; outline-offset:4px; }
.trend-svg { width:100%; height:100%; position:absolute; inset:0; display:block; overflow:visible; }
.trend-line { fill:none; stroke:var(--accent); stroke-width:2.5; stroke-linejoin:round; stroke-linecap:round; }
.trend-grid { stroke:var(--grid); stroke-width:1; stroke-dasharray:3 3; }
.trend-axis { fill:var(--tx3); font:10px var(--font-data); }
.trend-endpoint { fill:var(--accent); stroke:var(--panel); stroke-width:1.5; }
.trend-cursor line { stroke:var(--line2); stroke-width:1; stroke-dasharray:3 3; }
.trend-cursor circle { fill:var(--panel); stroke:var(--accent); stroke-width:2; }
.trend-tooltip { position:absolute; z-index:1; width:134px; padding:8px 10px; border:1px solid var(--line2); background:var(--panel); border-radius:6px; box-shadow:var(--shadow-h); pointer-events:none; font-size:11px; color:var(--tx2); }
.trend-tooltip b { display:block; font-weight:500; font-size:10px; color:var(--tx3); margin-bottom:4px; }
#workspaceTrend:focus-visible { outline:2px solid var(--accent); border-radius:4px; }
.lead-trend .chart-data-details { font-size:10px; margin-top:2px; }
.ov-cards { gap:0; margin-top:18px; border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; background:var(--panel); }
.ov-cards .ov-card, #ovCardClock, #ovCardSpread { min-height:258px; background:transparent; border:0; border-right:1px solid var(--line); border-radius:0; padding:20px 21px 17px; box-shadow:none; transition:background .18s; }
.ov-cards .ov-card:last-child { border-right:0; }
.ov-cards .ov-card:hover { background:var(--panel2); box-shadow:none; }
.ov-cards .ov-card:focus-visible { outline:2px solid var(--accent); outline-offset:-3px; background:var(--panel2); }
.ov-card h3, .ov-card[data-ds] h3 { padding-right:0; color:var(--tx2); font-size:12px; font-weight:600; }
.ov-cards .ov-card .ov-go, .ov-cards .ov-card[data-ds] .ov-go { position:absolute; top:19px; bottom:auto; right:16px; font-size:0; }
.ov-card .ov-go::after { content:"↗"; font-size:15px; }
.ov-cards .ov-card > .ds-badge.ds-corner { position:static; margin:7px 0 0; font-size:10px; }
.ov-cards .ov-big { font-size:32px; margin:15px 0 8px; font-weight:600; line-height:1.2; letter-spacing:-.8px; }
.ov-cards .ov-big.ov-big-text { font-size:18px; letter-spacing:-.2px; padding-right:55px; }
.ov-big small, .ov-big .ov-dir { font-size:12px; letter-spacing:0; }
.ov-card .ov-note { font-size:11px; line-height:1.7; }
.ov-card .ov-note b { font-weight:600; }
.ov-cards .ov-foot { font-size:10px; gap:8px; margin-top:auto; padding-top:14px; }
#ovCardClock .ov-mini-clock { width:58px; height:58px; right:16px; top:52px; font-size:8px; margin:0; float:none; position:absolute; }
#ovCardClock .ov-big, #ovCardClock .ov-big + .ov-note { padding-right:50px; }
.ov-card .ov-confirm { font-size:11px; margin-top:9px; }
.ov-card .ov-confirm small { font-size:10px; line-height:1.65; }
.ov-grid2 { grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr); gap:18px; }
.sector-comparison { gap:12px; margin-top:25px; }
.sector-line { grid-template-columns:82px minmax(0,1fr) 64px; min-height:27px; font-size:12px; gap:12px; }
.sector-line .sector-value { font-size:12px; font-weight:500; }
.sector-track, .sector-track i { height:5px; border-radius:2px; }
.sector-line:focus-visible { outline:2px solid var(--accent); outline-offset:4px; border-radius:3px; }
#heatmapCard .filters { gap:5px; }
#heatmapCard .filters button { font-size:10px; min-height:30px; padding:5px 8px; }
#heatmapCard .chip.on { background:var(--accent); color:var(--panel); }
#heatmapCard .chip.on b { color:inherit; opacity:1; }
.ov-grid2 #treemap { height:290px !important; }
#ovPointsCard { margin:0 0 22px; background:var(--panel2); border:1px solid var(--line); }
#ovPointsCard .panel-heading { align-items:center; margin-bottom:18px; }
#ovPointsCard .text-button { padding:0; font-size:12px; }
.ov-points-list { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:24px; min-height:0; }
.ov-points-list li { padding-left:16px; font-size:13px; line-height:1.8; }
.ov-points-list li::before { width:4px; height:4px; top:.82em; border-radius:0; }
.ov-fold { border-radius:var(--radius); border-color:var(--line); }
.ov-fold > summary { padding:17px 22px; font-size:13px; font-weight:500; }
#foldGeo[open] { border-color:var(--line2); }
#foldGeo > summary { padding-top:20px; padding-bottom:4px; }
#foldGeo > .geo-panel { padding:20px 8px 12px!important; margin:0 20px 20px; background:transparent; border:0; }
.geo-heading h2 { font-size:22px!important; letter-spacing:-.4px; }
.geo-heading p { color:var(--tx2); }
.geo-kicker { font-size:10px; color:var(--tx3); letter-spacing:1.5px; }
.geo-map-stage { border:1px solid var(--line); background:var(--panel2); }
.geo-sector-filter { min-height:34px; padding:7px 10px; border-radius:6px; font-size:11px; }
.geo-sector-filter:not(.on) { opacity:.6; }
.geo-sector-filter:focus-visible { outline:2px solid var(--accent); outline-offset:2px; }
.geo-sector-filter.on { background:var(--panel2); border-color:var(--line2); }
.geo-rank-row { min-height:38px; font-size:12px; }
.geo-project { border-radius:8px; padding:16px; }
.geo-project p { font-size:12px; }
.geo-projects { max-height:288px; }
.geo-province { fill:#e5eaf3; stroke:#b6c3d7; }
.adv-hero { padding:25px 26px; border-left-width:3px; }
.adv-headline { font-size:27px; line-height:1.4; letter-spacing:-.5px; }
#v-advice .adv-headline { font-size:27px; }
.adv-rec { width:100%; table-layout:fixed; }
.adv-rec th:nth-child(1) { width:14%; }
.adv-rec th:nth-child(2) { width:19%; }
.adv-rec th:nth-child(3) { width:67%; }
.adv-rec td, .adv-rec th { white-space:normal; overflow-wrap:anywhere; }
.adv-rec td.adv-reason-cell { font-size:12px; line-height:1.8; }
.review-timeline { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:0; margin-top:28px; border:1px solid var(--line); border-radius:10px; overflow:hidden; }
.review-stage-tab { position:relative; display:flex; flex-direction:column; align-items:flex-start; text-align:left; gap:13px; padding:20px 17px; background:var(--panel); color:var(--tx); border:0; border-right:1px solid var(--line); min-width:0; min-height:166px; transition:background .16s; }
.review-stage-tab:last-child { border-right:0; }
.review-stage-tab::after { content:""; position:absolute; left:17px; right:17px; bottom:0; height:3px; background:transparent; }
.review-stage-tab.on { background:var(--panel2); }
.review-stage-tab.on::after { background:var(--accent); }
.review-stage-tab:hover { background:var(--panel2); }
.review-stage-tab:focus-visible { outline:2px solid var(--accent); outline-offset:-3px; }
.review-stage-date { font-size:10px; color:var(--tx3); font-variant-numeric:tabular-nums; white-space:nowrap; }
.review-stage-tab > b { font-size:13px; line-height:1.6; font-weight:600; }
.review-stage-return { font-size:13px; line-height:1.55; margin-top:auto; font-variant-numeric:tabular-nums; font-weight:600; }
.review-stage-detail { display:grid; grid-template-columns:minmax(0,1fr) 240px; gap:32px; padding:28px 0 4px; }
.review-stage-detail h3 { font-size:23px; line-height:1.4; margin:7px 0 12px; letter-spacing:-.3px; }
.review-stage-detail p { font-size:13px; color:var(--tx2); line-height:1.9; max-width:65em; }
.review-stage-detail aside { border-left:1px solid var(--line); padding:10px 0 10px 25px; }
.review-stage-detail aside > span { display:block; font-size:11px; color:var(--tx3); }
.review-stage-detail aside > b { display:block; font-size:17px; margin:9px 0 15px; }
.review-factor-row { display:grid; grid-template-columns:1fr 1fr; gap:8px; font-size:12px; color:var(--tx2); }
.review-factor-row > span { padding:7px 0; border-bottom:1px solid var(--line); }
.adv-tier { margin:24px 0 14px; color:var(--tx2); }
.adv-reason { padding:20px; }
.adv-reason h3 { font-size:14px; }
.adv-reason-read, .adv-risk-list li, .adv-steps li p { font-size:13px; line-height:1.8; }
.adv-risk { padding:20px; border-left-width:3px; }
.adv-risk h3 { font-size:14px; }
.table-scroll { border-radius:8px; }
table.matrix th, .fund-table th { font-size:11px; font-weight:600; letter-spacing:.1px; padding-top:13px; padding-bottom:13px; }
table.matrix td, .fund-table td { padding-top:13px; padding-bottom:13px; }
table tbody tr:hover td { background:var(--panel2); }
#newsFeed .news-item { padding-top:20px; padding-bottom:20px; }
.news-title { font-size:15px; line-height:1.65; }
footer { color:var(--tx3); line-height:1.9; padding-top:28px; }
.foot-quote { max-width:760px; margin:20px auto 0; opacity:.85; }
[data-theme="dark"] .market-lead .ov-hero { background:#1b3454; border-color:#3a5272; }
[data-theme="eye"] .market-lead .ov-hero { background:#223a3e; border-color:#3a5653; }
@media (min-width:1600px) { .market-lead { grid-template-columns:minmax(0,1.25fr) minmax(0,1fr); } .market-lead .ov-hero { min-height:330px; } }
@media (max-width:1279px) {
  #workspaceMain { padding:26px 25px 40px; }
  .workspace-topline { padding:0 25px; }
  .market-lead { grid-template-columns:minmax(0,1.1fr) minmax(0,1fr); }
  .market-lead .ov-hero { padding:24px; min-height:360px; }
  .ov-hero .ov-headline { font-size:26px; }
  .ov-cards { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .ov-cards .ov-card:nth-child(2) { border-right:0; }
  .ov-cards .ov-card:nth-child(-n+2) { border-bottom:1px solid var(--line); }
  .ov-cards .ov-card, #ovCardClock, #ovCardSpread { min-height:244px; }
}
@media (max-width:1023px) {
  .market-lead { grid-template-columns:1fr; }
  .market-lead .ov-hero { min-height:300px; }
  .lead-trend { min-height:310px; }
  .lead-trend #workspaceTrend { height:178px; }
  .ov-grid2 { grid-template-columns:1fr; }
  .ov-grid2 #treemap { height:320px!important; }
  .ov-points-list { grid-template-columns:1fr; gap:14px; }
  .review-timeline { grid-template-columns:repeat(6,158px); overflow-x:auto; scroll-snap-type:x proximity; }
  .review-stage-tab { scroll-snap-align:start; }
  .review-stage-detail { grid-template-columns:1fr; gap:22px; }
  .review-stage-detail aside { border-left:0; border-top:1px solid var(--line); padding:17px 0 0; }
}
@media (max-width:767px) {
  #workspaceMain { padding:22px 16px 32px; }
  .workspace-topline { padding:0 16px; }
  .workspace-heading { margin-bottom:18px; min-height:0; gap:12px; }
  .workspace-heading h1 { font-size:28px; }
  .workspace-heading p { font-size:12px; }
  .heading-actions { gap:8px; }
  .heading-actions .market-date { font-size:10px; }
  .is-home #workspaceSubtitle { display:block; }
  .is-home #meta { display:block; font-size:10px; margin:0 0 16px; }
  #subbar .sub { gap:20px; }
  #subbar .sub button { font-size:12px; }
  .card { padding:20px; }
  .market-lead { gap:14px; }
  .market-lead .ov-hero { padding:24px 21px 20px; min-height:342px; gap:18px; }
  .ov-hero .ov-kicker { margin-bottom:18px; font-size:11px; }
  .ov-hero .ov-kicker-src { font-size:10px; margin-left:8px; }
  .ov-hero .ov-headline { font-size:27px; margin-bottom:15px; }
  .ov-hero .ov-rate-label { font-size:13px; }
  .ov-hero .ov-basis { font-size:12px; }
  .market-lead .ov-hero-side { gap:5px 8px; }
  .ov-hero-side > button { padding:8px; font-size:11px; }
  .ov-hero-side #ovUniverse { font-size:11px; }
  .ov-hero-side #ovReval .ov-link { font-size:10px; }
  .lead-trend { min-height:315px; padding:21px; }
  .lead-trend .trend-headline strong { font-size:35px; }
  .ov-cards { margin-top:14px; grid-template-columns:1fr; }
  .ov-cards .ov-card, #ovCardClock, #ovCardSpread { min-height:0; padding:20px 22px; border-right:0; border-bottom:1px solid var(--line); }
  .ov-cards .ov-card:last-child { border-bottom:0; }
  .ov-card .ov-note { font-size:12px; }
  .ov-cards .ov-big { font-size:32px; margin:12px 0 8px; }
  .ov-cards .ov-big.ov-big-text { font-size:20px; }
  #ovCardClock .ov-mini-clock { top:51px; right:24px; width:68px; height:68px; font-size:9px; }
  .ov-cards .ov-foot { padding-top:12px; font-size:11px; }
  .ov-card .ov-confirm small { font-size:11px; }
  .ov-grid2 { gap:14px; }
  .ov-tier { margin:26px 0 13px; }
  .panel-heading h2, .card h2 { font-size:16px; }
  .sector-line { min-height:30px; }
  #ovPointsCard { padding:20px; }
  #ovPointsCard .panel-heading { align-items:flex-start; }
  .ov-points-list li { font-size:12px; }
  #foldGeo > summary { padding:18px 16px 4px; font-size:12px; }
  #foldGeo > .geo-panel { margin:0 12px 12px; padding:18px 2px!important; }
  .geo-heading h2 { font-size:20px!important; }
  .geo-map-legend { line-height:1.7; }
  .adv-headline { font-size:22px; }
  #v-advice .adv-headline { font-size:22px; }
  .adv-hero { padding:20px; }
}
@media (prefers-reduced-motion:reduce) {
  .ov-cards .ov-card { transition:none; }
  .market-lead .ov-hero { animation:none; }
}
