/* finxyz 报告样式 —— 纸面感金融研报。支持多套配色方案切换（默认松墨黄铜 + 巴塞尔藏青 / 瑞士铅印 / 黑金松墨 / 曜石藏青）。 */
:root, :root[data-theme="pine"] {
  color-scheme: light;
  --paper: #f5f2ec;
  --card: #ffffff;
  --card-2: #faf8f4;
  --line: #e4ded3;
  --line-2: #efeae1;
  --ink: #1a1f1c;
  --ink-2: #5b5750;
  --ink-3: #77716a;
  --brand: #0e4d3a;
  --brand-2: #0b3a2c;
  --brand-on: #ffffff;
  --brand-tint: #e5efe9;
  --brand-border: #cfe1d7;
  --night: #10261d;
  --top-ink: #e9e4d8;
  --top-muted: #cfc8b8;
  --top-dim: #a59f90;
  --brass: #a8792b;
  --brass-ink: #7a5718;
  --brass-tint: #f4ecdd;
  --brass-border: #e6d5b3;
  --pos: #127a4b;
  --pos-tint: #e3f1e9;
  --pos-border: #bfe0ce;
  --neg: #b42318;
  --neg-tint: #f8e6e3;
  --neg-border: #ecc8c4;
  --row-hover: #fbf8f1;
  --row-hl: #fbf6ea;
  --grid-zero: #cdc6b8;
  --zone-hold: #efe7d6;
  /* 市场标识色：A股朱红、港股青绿、美股铜金（白字对比度均 ≥ 4.5:1） */
  --mkt-cn: #b5402a;
  --mkt-hk: #0f7468;
  --mkt-us: #94681f;
  /* 图表分类色（固定顺序） */
  --s1: #0e7c57;
  --s2: #d18b1f;
  --s3: #a3324f;
  --s4: #c9772b;
  --s5: #1f8a70;
  --s0: #a39e93;
  --serif: "Songti SC", "Noto Serif SC", "Source Han Serif SC", "STSong", Georgia, serif;
  --sans: -apple-system, "PingFang SC", "Hiragino Sans GB", "Noto Sans SC", "Microsoft YaHei", "Helvetica Neue", Arial, sans-serif;
  --mono: "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace;
  --radius: 10px;
  --shadow: 0 1px 2px rgba(26, 31, 28, 0.04), 0 4px 16px rgba(26, 31, 28, 0.04);
}

/* 方案 A · 巴塞尔藏青（瑞银/投行研报冷白风） */
:root[data-theme="basel"] {
  color-scheme: light;
  --paper: #f1f4f8;
  --card: #ffffff;
  --card-2: #f7f9fc;
  --line: #d9e1ec;
  --line-2: #eaeff5;
  --ink: #121a26;
  --ink-2: #475467;
  --ink-3: #687588;
  --brand: #164378;
  --brand-2: #0f3159;
  --brand-on: #ffffff;
  --brand-tint: #e6effa;
  --brand-border: #c5d9f2;
  --night: #0c192c;
  --top-ink: #e6edf5;
  --top-muted: #c2cfde;
  --top-dim: #8fa1b8;
  --brass: #b07224;
  --brass-ink: #7c4f15;
  --brass-tint: #f6ecdb;
  --brass-border: #e5d1b0;
  --pos: #0f7647;
  --pos-tint: #e1f2ea;
  --pos-border: #bce0cf;
  --neg: #b9251a;
  --neg-tint: #fae6e5;
  --neg-border: #eec5c2;
  --row-hover: #f4f7fb;
  --row-hl: #eef3fa;
  --grid-zero: #c1ccd9;
  --zone-hold: #e3ebf5;
  --mkt-cn: #b5382a;
  --mkt-hk: #0d6e6e;
  --mkt-us: #164378;
  --s1: #1b5699;
  --s2: #d18821;
  --s3: #0f7d68;
  --s4: #a8334c;
  --s5: #637083;
  --s0: #98a2b3;
  --shadow: 0 1px 2px rgba(18, 26, 38, 0.04), 0 4px 16px rgba(18, 26, 38, 0.05);
}

/* 方案 D · 瑞士铅印（现代极简石膏白与石墨铅黑） */
:root[data-theme="swiss"] {
  color-scheme: light;
  --paper: #f4f4f3;
  --card: #ffffff;
  --card-2: #f8f8f7;
  --line: #e0e0dc;
  --line-2: #ebebea;
  --ink: #141413;
  --ink-2: #52524e;
  --ink-3: #787873;
  --brand: #27272a;
  --brand-2: #18181b;
  --brand-on: #ffffff;
  --brand-tint: #ebebea;
  --brand-border: #d4d4d0;
  --night: #141413;
  --top-ink: #ededeb;
  --top-muted: #c7c7c2;
  --top-dim: #969690;
  --brass: #8c6527;
  --brass-ink: #664818;
  --brass-tint: #f0e8da;
  --brass-border: #dfd1b8;
  --pos: #157347;
  --pos-tint: #e3f1ea;
  --pos-border: #bfdfd0;
  --neg: #b42318;
  --neg-tint: #f9e6e5;
  --neg-border: #ecc8c5;
  --row-hover: #f6f5f2;
  --row-hl: #f3efe6;
  --grid-zero: #c8c8c2;
  --zone-hold: #e6e4dc;
  --mkt-cn: #a83825;
  --mkt-hk: #1f6b64;
  --mkt-us: #715120;
  --s1: #27272a;
  --s2: #c27d24;
  --s3: #0f766e;
  --s4: #9f2c42;
  --s5: #6b7280;
  --s0: #a1a1aa;
  --shadow: 0 1px 2px rgba(20, 20, 19, 0.04), 0 4px 16px rgba(20, 20, 19, 0.04);
}

/* 方案 E · 黑金松墨（暗色温润护眼模式） */
:root[data-theme="dark-pine"] {
  color-scheme: dark;
  --paper: #0f1412;
  --card: #161d1a;
  --card-2: #1c2521;
  --line: #28352f;
  --line-2: #202b26;
  --ink: #e8e5dd;
  --ink-2: #a9a49a;
  --ink-3: #78746c;
  --brand: #38b284;
  --brand-2: #52c79b;
  --brand-on: #061810;
  --brand-tint: #163328;
  --brand-border: #235240;
  --night: #080c0a;
  --top-ink: #e8e5dd;
  --top-muted: #b5b0a4;
  --top-dim: #7f7b72;
  --brass: #d49b42;
  --brass-ink: #e5b567;
  --brass-tint: #2e2517;
  --brass-border: #523e22;
  --pos: #34c77b;
  --pos-tint: #143323;
  --pos-border: #21543a;
  --neg: #f0655b;
  --neg-tint: #381c1a;
  --neg-border: #5c2b28;
  --row-hover: #1e2823;
  --row-hl: #262319;
  --grid-zero: #3b4b43;
  --zone-hold: #29332d;
  --mkt-cn: #c44731;
  --mkt-hk: #138275;
  --mkt-us: #a67423;
  --s1: #38b284;
  --s2: #e5a336;
  --s3: #e05a76;
  --s4: #de8740;
  --s5: #42b89c;
  --s0: #6b726e;
  --shadow: 0 1px 3px rgba(0, 0, 0, 0.35), 0 6px 20px rgba(0, 0, 0, 0.28);
}

/* 方案 F · 曜石藏青（暗色华尔街专业终端风） */
:root[data-theme="dark-slate"] {
  color-scheme: dark;
  --paper: #0d1117;
  --card: #151b23;
  --card-2: #1b222c;
  --line: #283240;
  --line-2: #1f2733;
  --ink: #e6edf3;
  --ink-2: #9ca7b5;
  --ink-3: #6e7885;
  --brand: #4da3ff;
  --brand-2: #75b8ff;
  --brand-on: #071324;
  --brand-tint: #162840;
  --brand-border: #24436b;
  --night: #070a0e;
  --top-ink: #e6edf3;
  --top-muted: #b1bac4;
  --top-dim: #7d8590;
  --brass: #d6993a;
  --brass-ink: #e8b361;
  --brass-tint: #2d2315;
  --brass-border: #523d20;
  --pos: #2fd180;
  --pos-tint: #123124;
  --pos-border: #1e523c;
  --neg: #f4665c;
  --neg-tint: #381b1c;
  --neg-border: #5e2a2c;
  --row-hover: #1c2430;
  --row-hl: #262218;
  --grid-zero: #384659;
  --zone-hold: #232d3b;
  --mkt-cn: #c44332;
  --mkt-hk: #127d7d;
  --mkt-us: #2560c4;
  --s1: #4da3ff;
  --s2: #e59e35;
  --s3: #2cc49b;
  --s4: #e05d75;
  --s5: #8b97a8;
  --s0: #5c6775;
  --shadow: 0 1px 3px rgba(0, 0, 0, 0.4), 0 6px 20px rgba(0, 0, 0, 0.32);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 112px; }
body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font: 15px/1.7 var(--sans);
  -webkit-font-smoothing: antialiased;
  font-variant-numeric: tabular-nums;
}
a { color: var(--brand); text-decoration: none; }
a:hover { text-decoration: underline; text-underline-offset: 3px; }
h1, h2, h3 { font-family: var(--serif); font-weight: 700; color: var(--ink); line-height: 1.35; }
h1 { font-size: 30px; margin: 0; letter-spacing: 0.01em; }
h2 { font-size: 21px; margin: 0 0 14px; display: flex; align-items: center; gap: 10px; }
h2::before { content: ""; width: 4px; height: 18px; border-radius: 2px; background: var(--brass); }
h3 { font-size: 16.5px; margin: 20px 0 8px; }
p { margin: 0 0 10px; }
ul, ol { margin: 0 0 10px; padding-left: 22px; }
li { margin: 4px 0; }
strong { font-weight: 650; }
code { font-family: var(--mono); font-size: 0.86em; background: var(--line-2); padding: 1px 5px; border-radius: 4px; }
.muted { color: var(--ink-3); }
.small { font-size: 13px; }
.num { font-variant-numeric: tabular-nums; white-space: nowrap; }

/* ---------- 顶栏 ---------- */
.topbar { background: var(--night); color: var(--top-ink); border-bottom: 2px solid var(--brass); }
.topbar-in { max-width: 1240px; margin: 0 auto; padding: 0 24px; height: 52px; display: flex; align-items: center; gap: 16px; }
.brand { font-family: var(--serif); font-size: 17px; color: #fff; letter-spacing: 0.04em; display: flex; align-items: center; gap: 10px; margin-right: 8px; }
.brand b { color: var(--brass); font-weight: 700; }
.brand:hover { text-decoration: none; }
.topnav { display: flex; gap: 4px; }
.topnav a { color: var(--top-muted); font-size: 14px; padding: 6px 12px; border-radius: 6px; }
.topnav a:hover, .topnav a.on { color: #fff; background: rgba(255, 255, 255, 0.08); text-decoration: none; }
.topbar .asof { margin-left: auto; font-size: 12px; color: var(--top-dim); white-space: nowrap; }

/* ---------- 页面骨架 ---------- */
.wrap { max-width: 1240px; margin: 0 auto; padding: 0 24px; }
.crumbs { font-size: 13px; color: var(--ink-3); padding: 16px 0 0; }
.crumbs a { color: var(--ink-2); }
.crumbs span { margin: 0 6px; color: var(--line); }
.layout { display: grid; grid-template-columns: minmax(0, 1fr) 220px; gap: 28px; align-items: start; padding: 20px 0 48px; }
.layout.wide { grid-template-columns: minmax(0, 1fr); }
main > section, .stack > section { margin-bottom: 22px; }
.card { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow); padding: 22px 24px; }
.card + .card { margin-top: 18px; }
.card.flat { box-shadow: none; }
.card .card-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
.card .card-head h2 { margin: 0; }
.grid-2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.grid-3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; }
.grid-2 > .card + .card,
.grid-3 > .card + .card,
.comp-roster > .card + .card,
.comp-bg-stack > .card + .card { margin-top: 0; }
.section-note { font-size: 13px; color: var(--ink-3); margin-top: 8px; }

/* ---------- 公司头部 ---------- */
.company-head { background: var(--card); }
.company-head-in { max-width: 1240px; margin: 0 auto; padding: 22px 24px 0; display: grid; grid-template-columns: 1fr auto; gap: 24px; align-items: end; }
.ticker { font-family: var(--mono); font-size: 13px; font-weight: 600; color: var(--brass-ink); border: 1px solid var(--brass); background: var(--brass-tint); padding: 2px 8px; border-radius: 5px; vertical-align: middle; margin-left: 10px; }
.head-meta { color: var(--ink-2); font-size: 13.5px; margin-top: 6px; display: flex; flex-wrap: wrap; gap: 6px 16px; }
.quote-box { text-align: right; }
.price { font-size: 30px; font-weight: 650; letter-spacing: -0.01em; }
.price small { font-size: 14px; color: var(--ink-2); font-weight: 500; margin-left: 4px; }
.quote-sub { font-size: 13px; color: var(--ink-2); }
.quote-sub .pe-headline[data-tip], .quote-sub .pe-actual[data-tip] { cursor: help; border-bottom: 1px dotted var(--ink-3); }
.quote-sub .pe-actual { color: var(--brand); }
.quote-sub .pe-actual b { font-weight: 650; }
.quote-sub .pe-actual.is-loss { color: var(--ink-3); }
.co-card .pe-actual { color: var(--brand); }
.co-card .kv-pe-line { display: block; font-size: 12.5px; font-weight: 600; color: var(--ink-2); margin-top: 2px; white-space: normal; line-height: 1.3; }
.co-card .kv-pe-line .pe-actual { color: var(--brand); font-weight: 650; }
.quote-note { font-size: 12px; color: var(--ink-3); margin: 2px 0 6px; }
.range52 { width: 220px; margin: 8px 0 0 auto; font-size: 11.5px; color: var(--ink-3); }
.range52 .track { position: relative; height: 4px; background: var(--line); border-radius: 2px; margin: 4px 0; }
.range52 .pin { position: absolute; top: -4px; width: 2px; height: 12px; background: var(--ink); border-radius: 1px; }
.range52 .ends { display: flex; justify-content: space-between; }

.company-nav { position: sticky; top: 0; z-index: 20; background: var(--card); border-bottom: 1px solid var(--line); }
.company-nav.stuck { box-shadow: 0 2px 10px rgba(16, 38, 29, 0.08); }
.company-nav-in { max-width: 1240px; margin: 0 auto; padding: 0 24px; display: flex; align-items: center; gap: 12px; }
.company-nav-links { display: flex; gap: 2px; overflow-x: auto; flex: 1; min-width: 0; }
.company-nav-links a { padding: 12px 14px 11px; color: var(--ink-2); font-size: 14px; border-bottom: 2px solid transparent; white-space: nowrap; }
.company-nav-links a:hover { color: var(--ink); text-decoration: none; }
.company-nav-links a.on { color: var(--brand); border-bottom-color: var(--brass); font-weight: 600; }

/* 财报分析二级条：报告期选择器 + 单期栏目 | 跨期栏目 */
.subnav { border-top: 1px solid var(--line-2); background: var(--card-2); }
.subnav-in { max-width: 1240px; margin: 0 auto; padding: 0 24px; display: flex; align-items: center; gap: 10px; }
.subnav-tabs { display: flex; align-items: center; gap: 2px; overflow-x: auto; flex: 1; min-width: 0; }
.subnav-tabs a, .subnav-tabs .off { padding: 9px 12px 8px; font-size: 13px; color: var(--ink-2); border-bottom: 2px solid transparent; white-space: nowrap; }
.subnav-tabs a:hover { color: var(--ink); text-decoration: none; }
.subnav-tabs a.on { color: var(--brand); border-bottom-color: var(--brand); font-weight: 600; }
.subnav-tabs .off { color: var(--ink-3); opacity: .55; cursor: not-allowed; }
.subnav-sep { width: 1px; height: 16px; background: var(--line); margin: 0 8px; flex: none; }
.subnav-grp { font-size: 12px; color: var(--ink-3); margin-right: 2px; white-space: nowrap; }
.period-pick { position: relative; flex: none; }
.period-pick > summary { list-style: none; cursor: pointer; display: inline-flex; align-items: center; gap: 6px; height: 28px; padding: 0 10px; border: 1px solid var(--brass); border-radius: 6px; background: var(--card); font-size: 13px; font-weight: 600; color: var(--ink); font-variant-numeric: tabular-nums; }
.period-pick > summary::-webkit-details-marker { display: none; }
.period-pick[open] > summary, .period-pick > summary:hover { background: var(--brass-tint); }
.pp-caret { width: 10px; height: 6px; stroke: var(--ink-2); }
.period-panel { position: absolute; top: calc(100% + 6px); left: 0; z-index: 30; width: 260px; max-height: 60vh; overflow-y: auto; background: var(--card); border: 1px solid var(--line); border-radius: 8px; box-shadow: 0 8px 24px rgba(16, 38, 29, 0.14); padding: 4px; }
.pp-item { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 6px 8px; border-radius: 5px; color: var(--ink); font-size: 13px; }
.pp-item:hover { background: var(--card-2); text-decoration: none; }
.pp-item.on { background: var(--brass-tint); font-weight: 600; }
.pp-f { font-variant-numeric: tabular-nums; }
.pp-marks { display: flex; gap: 3px; }
.pp-marks i { font-style: normal; font-size: 11px; padding: 0 5px; border-radius: 3px; color: var(--ink-3); background: var(--line-2); font-weight: 500; }
.pp-marks i.on { color: var(--brand); background: var(--brand-tint); }
@media (max-width: 720px) { .subnav-in { padding: 0 16px; } .subnav-grp { display: none; } .subnav-sep { margin: 0 4px; } }

/* ---------- 徽章与芯片 ---------- */
.badge { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; font-weight: 600; padding: 2px 9px; border-radius: 999px; border: 1px solid transparent; white-space: nowrap; max-width: 100%; }
@media (max-width: 720px) { .badge { white-space: normal; border-radius: 10px; } }  /* 长徽章（如估值区间）在手机上换行，避免横向滚动 */
.badge.tracking { color: var(--brand); background: var(--brand-tint); border-color: var(--brand-border); }
.badge.researching { color: var(--brass-ink); background: var(--brass-tint); border-color: var(--brass-border); }
.badge.archived { color: var(--ink-2); background: var(--line-2); }
.badge.pos-strong { color: #fff; background: var(--pos); }
.badge.pos { color: var(--pos); background: var(--pos-tint); }
.badge.mid { color: var(--brass-ink); background: var(--brass-tint); }
.badge.neg { color: var(--neg); background: var(--neg-tint); }
.badge.open { color: var(--ink-2); background: var(--line-2); }
.badge.due { color: var(--brass-ink); background: var(--brass-tint); border-color: var(--brass-border); }
.badge.hit { color: var(--pos); background: var(--pos-tint); }
.badge.beat { color: var(--brand); background: linear-gradient(90deg, var(--pos-tint) 0%, var(--brass-tint) 100%); border-color: var(--brass); }
.badge.miss { color: var(--neg); background: var(--neg-tint); }
.badge.void { color: var(--ink-3); background: var(--line-2); text-decoration: line-through; }
.badge.focus-guidance { color: var(--brand); background: var(--brand-tint); border-color: var(--brand-border); }
.badge.focus-thesis { color: var(--brass-ink); background: var(--brass-tint); border-color: var(--brass-border); }
.badge.focus-risk { color: var(--neg); background: var(--neg-tint); border-color: var(--neg-border); }
.badge.focus-relieved { color: var(--pos); background: var(--pos-tint); border-color: var(--pos-border); }
.badge.focus-anomaly { color: var(--brass-ink); background: var(--brass-tint); border-color: var(--brass-border); }
.chg { font-weight: 600; white-space: nowrap; }
.chg.up { color: var(--pos); }
.chg.down { color: var(--neg); }
.chg.flat { color: var(--ink-2); }

/* 引用：中文译文（悬停看英文原文；无译文时显示英文）+ 段落芯片 */
.quote q { font-family: Georgia, "Times New Roman", var(--serif); font-style: italic; color: var(--ink); quotes: "“" "”"; }
.quote q[lang="zh-CN"] { font-family: var(--serif); font-style: normal; cursor: help; text-decoration: underline dotted var(--brass); text-underline-offset: 4px; }
.cite { display: inline-flex; align-items: center; gap: 3px; margin-left: 5px; font: 600 11.5px/1 var(--sans); color: var(--brass-ink); background: var(--brass-tint); border: 1px solid var(--brass-border); border-radius: 999px; padding: 3px 8px 3px 6px; vertical-align: 1px; white-space: nowrap; }
.cite:hover { background: var(--brass-border); text-decoration: none; }
.cite-ic { font-family: Georgia, serif; font-size: 12px; }
a[href="#external-refs"] { display: inline-flex; align-items: center; margin-left: 4px; font: 600 11px/1 var(--sans); color: var(--brand); background: var(--brand-tint); border: 1px solid var(--brand-border); border-radius: 999px; padding: 2px 7px; vertical-align: 1px; white-space: nowrap; }
a[href="#external-refs"]:hover { background: var(--brand-border); text-decoration: none; }
.datum { color: var(--ink); border-bottom: 1.5px dotted var(--brand); font-weight: 600; }
.datum:hover { background: var(--brand-tint); text-decoration: none; }
/* 与知识库不符的数字：标红并加 ≠ 记号（不只靠颜色），悬停给出报告值与知识库值 */
.datum.bad { color: var(--neg); background: var(--neg-tint); border-bottom: 1.5px solid var(--neg); border-radius: 2px; padding: 0 2px; }
.datum.bad::after { content: "≠"; margin-left: 2px; font-size: 0.85em; font-weight: 700; }
.datum.bad:hover { background: var(--neg-border); }
.period, .pred-ref, .doc-ref { font-weight: 600; }
blockquote { margin: 10px 0; padding: 8px 14px; border-left: 3px solid var(--brass); background: var(--card-2); color: var(--ink-2); border-radius: 0 6px 6px 0; }

/* ---------- KPI 磁贴 ---------- */
.kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; }
.kpi { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: 14px 16px 10px; box-shadow: var(--shadow); }
.kpi .lab { font-size: 12.5px; color: var(--ink-3); letter-spacing: 0.02em; }
.kpi .val { font-size: 25px; font-weight: 650; margin: 2px 0; letter-spacing: -0.01em; }
.kpi .val small { font-size: 13px; color: var(--ink-2); font-weight: 500; margin-left: 2px; }
.kpi .foot { display: flex; align-items: center; justify-content: space-between; gap: 8px; font-size: 12.5px; }
.spark { width: 110px; height: 30px; }

/* ---------- 表格 ---------- */
.table-wrap { overflow-x: auto; margin: 6px 0 4px; }
table.data { border-collapse: separate; border-spacing: 0; width: 100%; font-size: 13.5px; }
table.data th, table.data td { padding: 7px 10px; border-bottom: 1px solid var(--line-2); text-align: right; white-space: nowrap; }
table.data thead th { background: var(--card-2); color: var(--ink-2); font-weight: 600; font-size: 12.5px; border-bottom: 1px solid var(--line); position: sticky; top: 0; }
table.data th:first-child, table.data td:first-child { text-align: left; position: sticky; left: 0; background: var(--card); z-index: 1; }
table.data thead th:first-child { background: var(--card-2); z-index: 2; }
table.data tbody tr:hover td, table.data tbody tr:hover th { background: var(--row-hover); }
table.data td.text, table.data th.text { text-align: left; white-space: normal; }
table.data .code { font-family: var(--mono); font-size: 11px; color: var(--ink-3); margin-left: 6px; }
table.data tr.group td { background: var(--card-2); font-weight: 600; color: var(--ink-2); font-size: 12.5px; }
table.data td.d { color: var(--ink-2); }
table.data td.d::after { content: "*"; color: var(--brass); margin-left: 1px; }
table.data td:target, table.data tr:target td, table.data tr:target th { background: var(--brass-tint) !important; box-shadow: inset 0 0 0 1px var(--brass); }
table.data.md td, table.data.md th { white-space: normal; text-align: left; }
table.data.compact th, table.data.compact td { padding: 4px 8px; font-size: 12.5px; }
table.data tr.hl td, table.data tr.hl th { background: var(--row-hl); }

/* ---------- Tab ---------- */
.tabs { display: inline-flex; background: var(--line-2); border-radius: 8px; padding: 3px; gap: 2px; margin-bottom: 14px; }
.tabs button { border: 0; background: transparent; font: 600 13px var(--sans); color: var(--ink-2); padding: 6px 14px; border-radius: 6px; cursor: pointer; }
.tabs button.on { background: var(--card); color: var(--brand); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08); }
[data-panel][hidden] { display: none; }

/* ---------- 页内目录 ---------- */
.toc { position: sticky; top: 64px; font-size: 13px; }
.toc .toc-title { font-size: 12px; color: var(--ink-3); letter-spacing: 0.08em; margin-bottom: 8px; }
.toc a { display: block; color: var(--ink-2); padding: 4px 0 4px 12px; border-left: 2px solid var(--line); }
.toc a.sub { padding-left: 24px; font-size: 12.5px; }
.toc a.on { color: var(--brand); border-left-color: var(--brass); font-weight: 600; }
.toc a:hover { text-decoration: none; color: var(--ink); }
.toc .toc-links { margin-top: 18px; padding-top: 12px; border-top: 1px solid var(--line); }
.toc .toc-links a { border-left: 0; padding-left: 0; }

/* ---------- 图表 ---------- */
.fig { margin: 4px 0 0; }
.chart { width: 100%; height: auto; display: block; }
.chart text { font-family: var(--sans); fill: var(--ink-3); }
.chart .tick { font-size: 10.5px; }
.chart .val, .chart .end-label { font-size: 11px; fill: var(--ink); font-weight: 600; }
.chart .row-label { font-size: 12px; fill: var(--ink); font-weight: 600; }
.chart .mini { font-size: 10px; fill: var(--ink-3); }
.chart .grid { stroke: var(--line-2); stroke-width: 1; }
.chart .grid.zero { stroke: var(--grid-zero); }
.chart .bar { stroke: none; }
.chart .line { fill: none; stroke-width: 2; stroke-linejoin: round; stroke-linecap: round; }
.chart .hit { fill: transparent; cursor: default; }
.chart .dot { stroke: var(--card); stroke-width: 2; }
.s1.bar, .s1.dot, i.s1, .share-fill.s1 { fill: var(--s1); background: var(--s1); }
.s2.bar, .s2.dot, i.s2, .share-fill.s2 { fill: var(--s2); background: var(--s2); }
.s3.bar, .s3.dot, i.s3, .share-fill.s3 { fill: var(--s3); background: var(--s3); }
.s4.bar, .s4.dot, i.s4, .share-fill.s4 { fill: var(--s4); background: var(--s4); }
.s5.bar, .s5.dot, i.s5, .share-fill.s5 { fill: var(--s5); background: var(--s5); }
.s0.bar, .s0.dot, i.s0, .share-fill.s0 { fill: var(--s0); background: var(--s0); }
.line.s1 { stroke: var(--s1); } .line.s2 { stroke: var(--s2); } .line.s3 { stroke: var(--s3); } .line.s4 { stroke: var(--s4); } .line.s5 { stroke: var(--s5); }
.chart .bar:hover { opacity: 0.85; }
.legend { display: flex; flex-wrap: wrap; gap: 4px 16px; font-size: 12.5px; color: var(--ink-2); margin-bottom: 4px; }
.legend-item { display: inline-flex; align-items: center; gap: 6px; }
.sw { width: 10px; height: 10px; border-radius: 3px; display: inline-block; }
.chart .line.dashed { stroke-dasharray: 5 4; }
.sw.dashed { width: 14px; height: 2px; border-radius: 0; -webkit-mask: repeating-linear-gradient(90deg, #000 0 4px, transparent 4px 7px); mask: repeating-linear-gradient(90deg, #000 0 4px, transparent 4px 7px); }
.chart .zone-hold { fill: var(--zone-hold); }
.chart .zone-buy { fill: var(--pos); }
.chart .zone-sell { fill: var(--neg); }
.chart .zone-fair { fill: var(--brand); stroke: var(--card); stroke-width: 2; }
.chart .marker { stroke: var(--ink); stroke-width: 2; stroke-dasharray: 4 3; }
.chart .marker-label { font-size: 11px; fill: var(--ink); font-weight: 700; }
.chart .group-label { font-size: 12.5px; fill: var(--ink); font-weight: 700; }
.chart .wf-pos { fill: var(--pos); }
.chart .wf-neg { fill: var(--neg); }
.chart .wf-total { fill: var(--brand); }
.chart .wf-range { stroke: var(--ink); stroke-width: 1.5; }
.chart .wf-link { stroke: var(--ink-3); stroke-width: 1; stroke-dasharray: 2 2; }
.chart .growth-hist { fill: var(--card); stroke: var(--ink-2); stroke-width: 2; }
.chart .growth-implied { fill: var(--brand); stroke: var(--card); stroke-width: 2; }
.chart-table { margin-top: 6px; font-size: 12.5px; }
.chart-table summary { cursor: pointer; color: var(--ink-3); }
.fig-title { font-size: 13.5px; font-weight: 650; color: var(--ink); margin-bottom: 2px; }
.fig-sub { font-size: 12px; color: var(--ink-3); margin-bottom: 4px; }

/* 部分-整体横条 */
.share-row { display: grid; grid-template-columns: 170px 1fr 110px; align-items: center; gap: 12px; padding: 5px 0; font-size: 13.5px; }
.share-name { color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.share-track { height: 10px; background: var(--line-2); border-radius: 5px; overflow: hidden; }
.share-fill { display: block; height: 100%; border-radius: 5px; }
.share-val { text-align: right; font-weight: 600; }
.share-val span { color: var(--ink-3); font-weight: 500; margin-left: 8px; font-size: 12px; }

/* 超预期 */
.sp-row { display: grid; grid-template-columns: 56px 1fr 78px; gap: 10px; align-items: center; font-size: 12.5px; padding: 2px 0; }
.sp-track { position: relative; height: 10px; background: linear-gradient(90deg, transparent calc(50% - 0.5px), var(--grid-zero) calc(50% - 0.5px), var(--grid-zero) calc(50% + 0.5px), transparent calc(50% + 0.5px)); }
.sp-bar { position: absolute; top: 0; height: 10px; border-radius: 3px; }
.sp-bar.pos { background: var(--pos); } .sp-bar.neg { background: var(--neg); }
.sp-v { text-align: right; font-weight: 600; } .sp-v.pos { color: var(--pos); } .sp-v.neg { color: var(--neg); }
.sp-p { color: var(--ink-2); }

/* ---------- 季度时间线 ---------- */
.timeline { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(118px, 1fr); gap: 8px; overflow-x: auto; padding-bottom: 4px; }
.tq { border: 1px solid var(--line); border-radius: 8px; padding: 10px 12px; background: var(--card-2); font-size: 12.5px; color: var(--ink-2); display: block; }
.tq:hover { border-color: var(--brass); text-decoration: none; background: var(--row-hover); }
.tq .q { font: 700 14px var(--serif); color: var(--ink); }
.tq .rev { font-size: 13px; color: var(--ink); font-weight: 600; margin-top: 2px; }
.tq .marks { display: flex; gap: 4px; margin-top: 6px; }
.tq .mk { font-size: 10.5px; padding: 1px 6px; border-radius: 4px; background: var(--line-2); color: var(--ink-3); }
.tq .mk.on { background: var(--brand-tint); color: var(--brand); }
.tq.cur { border-color: var(--brand); box-shadow: inset 0 0 0 1px var(--brand); }

/* ---------- 正文排版（AI 撰写块） ---------- */
.prose { font-size: 15px; }
.prose > ul > li::marker { color: var(--brass); }
.prose h3 { font-family: var(--serif); }
.prose img { display: block; max-width: 100%; height: auto; margin: 12px 0; border: 1px solid var(--line); border-radius: 6px; }
.takeaways ol { counter-reset: t; list-style: none; padding: 0; }
.takeaways ol > li { counter-increment: t; position: relative; padding: 10px 0 10px 40px; border-bottom: 1px solid var(--line-2); }
.takeaways ol > li:last-child { border-bottom: 0; }
.takeaways ol > li::before { content: counter(t); position: absolute; left: 0; top: 10px; width: 26px; height: 26px; border-radius: 50%; background: var(--brand); color: var(--brand-on); font: 700 13px/26px var(--sans); text-align: center; }
.dims { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.dim { border: 1px solid var(--line); border-radius: 8px; padding: 14px 16px; background: var(--card-2); }
.dim h3 { margin: 0 0 6px; font-size: 15.5px; display: flex; align-items: center; gap: 8px; }
.dim h3 i { width: 8px; height: 8px; border-radius: 2px; background: var(--brass); display: inline-block; }
.dim ul { padding-left: 18px; }
.dim.wide { grid-column: 1 / -1; }
.impact h3:nth-of-type(1)::before { content: "▲ "; color: var(--pos); }
.impact h3:nth-of-type(2)::before { content: "▼ "; color: var(--neg); }
/* ---------- 风险提示：统一用红色系（--neg），回避/未回答用琥珀色 ---------- */
.risk-icon { display: inline-flex; align-items: center; justify-content: center; flex: none; width: 18px; height: 18px; border-radius: 50%; background: var(--neg); color: #fff; font: 800 12px/1 var(--sans); }
.card.risk-card { border-left: 4px solid var(--neg); }
.risk-card h2::before { display: none; }
.risk-card h2 { color: var(--neg); white-space: nowrap; }
.risk-count { font: 600 12px var(--sans); color: var(--neg); background: var(--neg-tint); border-radius: 999px; padding: 1px 9px; white-space: nowrap; }
.risk-lead { margin-bottom: 8px; }
/* 风险清单：一行一条（序号 | 短名 | 说明），细线分隔，不套卡片 */
.risks { list-style: none; padding: 0; margin: 0; counter-reset: rk; }
.risks .risk { margin: 0; display: grid; grid-template-columns: 34px 168px minmax(0, 1fr); column-gap: 14px; align-items: baseline; padding: 13px 0; border-top: 1px solid var(--line-2); }
.risks .risk:first-child { border-top: 0; padding-top: 4px; }
.risks .risk:last-child { padding-bottom: 0; }
.risk-n { font: 700 15px/1 var(--serif); color: var(--neg); font-variant-numeric: tabular-nums; }
.risk-n::before { content: "0"; }
.risks .risk:nth-child(n+10) .risk-n::before { content: ""; }
.risk-t { font-weight: 650; color: var(--ink); line-height: 1.5; }
.risk-d { font-size: 14.5px; color: var(--ink-2); line-height: 1.65; }
.risk.no-title .risk-d { grid-column: 2 / -1; color: var(--ink); }
.risk-lv { display: inline-block; vertical-align: 1px; font: 700 11px/1 var(--sans); padding: 3px 6px; border-radius: 4px; margin-left: 6px; color: var(--ink-2); background: var(--line-2); }
.risk-d > .risk-lv:first-child { margin: 0 8px 0 0; }
.risk.lv-hi .risk-lv { color: #fff; background: var(--neg); }
.risk.lv-mid .risk-lv { color: var(--brass-ink); background: var(--brass-tint); }
/* 公司主页：投资要点 / 主要风险的短标题清单（看多绿、看空红） */
.summary-line { font-size: 15.5px; margin-bottom: 18px; }
.bull-bear { margin-bottom: 18px; }
.bull-bear .card + .card { margin-top: 0; }
.card.thesis-card { border-left: 4px solid var(--brand); }
.thesis-card h2::before { display: none; }
.thesis-card h2 { color: var(--brand); }
.head-count { font: 600 12px var(--sans); color: var(--brand); background: var(--brand-tint); border-radius: 999px; padding: 1px 9px; white-space: nowrap; }
.heads { list-style: none; padding: 0; margin: 0; }
.heads li { margin: 0; border-top: 1px solid var(--line-2); }
.heads li:first-child { border-top: 0; }
.heads a { display: flex; align-items: baseline; gap: 12px; padding: 10px 0; color: var(--ink); }
.heads a:hover { text-decoration: none; }
.heads a:hover .heads-t { text-decoration: underline; text-underline-offset: 3px; }
.heads-n { flex: none; width: 22px; font: 700 14px/1 var(--serif); }
.heads-n::before { content: "0"; }
.heads-t { flex: 1; font-weight: 600; line-height: 1.5; }
.heads .risk-lv { flex: none; }
.heads.thesis .heads-n { color: var(--brand); }
.heads.risks-heads .heads-n { color: var(--neg); }
.heads.risks-heads li.lv-hi .risk-lv { color: #fff; background: var(--neg); }
.heads.risks-heads li.lv-mid .risk-lv { color: var(--brass-ink); background: var(--brass-tint); }
/* 从主页点进来时，高亮档案里对应的那一条 */
#thesis li:target, .risks .risk:target { background: var(--brass-tint); border-radius: 6px; scroll-margin-top: 120px; }
#thesis li:target { padding: 4px 10px; margin-left: -10px; margin-right: -10px; }
.risks .risk:target { padding-left: 10px; padding-right: 10px; margin: 0 -10px; }
.dim.risk { border-color: var(--neg-border); background: var(--neg-tint); border-left: 4px solid var(--neg); }
.dim.risk h3 { color: var(--neg); }
.prose h3.risk-h { color: var(--neg); display: flex; align-items: center; gap: 8px; }
.prose h3.risk-h::before { content: "!"; display: inline-flex; align-items: center; justify-content: center; width: 18px; height: 18px; border-radius: 50%; background: var(--neg); color: #fff; font: 800 12px/1 var(--sans); }
.prose ul > li.risk-li { list-style: none; margin-left: -22px; padding: 8px 12px; background: var(--neg-tint); border-left: 3px solid var(--neg); border-radius: 0 6px 6px 0; }
/* 有序列表（如结论摘要的编号圆点）里只把标签标红，不改行的版式 */
.prose li.risk-li > strong:first-child, .prose li.risk-li > p > strong:first-child { color: var(--neg); }
.card.caution-card { border-left: 4px solid var(--brass); }
.caution-card h2::before { display: none; }
.caution-card .risk-icon { background: var(--brass); }
.callout { border: 1px solid var(--brass-border); background: var(--brass-tint); border-radius: 8px; padding: 12px 16px; color: var(--brass-ink); font-size: 14px; }

/* ---------- 估值 ---------- */
.val-summary { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; margin-bottom: 14px; }
/* 估值页：方法选择、按方法分组的区块 */
.method-type { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 10px; }
.badge.type { color: var(--ink); background: var(--line-2); border-color: var(--line); font-size: 13px; }
.badge.role.primary { color: var(--brand-on); background: var(--brand); }
.badge.role.cross_check { color: var(--brand); background: var(--brand-tint); border-color: var(--brand-border); }
.badge.role.reference { color: var(--brass-ink); background: var(--brass-tint); border-color: var(--brass-border); }
.badge.role.not_applicable, .badge.role.none { color: var(--ink-3); background: var(--line-2); }
.status.done { color: var(--pos); font-weight: 600; }
.status.planned { color: var(--brass-ink); font-weight: 600; }
.status.todo { color: var(--ink-2); }
.status.na { color: var(--ink-3); }
.methods-table tr.role-not_applicable th, .methods-table tr.role-not_applicable td.text { color: var(--ink-3); }
.unused-methods { margin-top: 10px; }
.unused-methods summary { cursor: pointer; color: var(--ink-3); font-size: 13px; }
.method-lines { display: grid; gap: 8px; margin-bottom: 4px; }
.method-line { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: 14px; }
.method { margin-top: 30px; }
.method-head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding-bottom: 10px; border-bottom: 2px solid var(--brass); margin-bottom: 12px; }
.method-head h2 { margin: 0; font-size: 22px; }
.method-why { font-size: 14px; color: var(--ink-2); margin: 0 0 12px; }
.method .val-summary { margin-bottom: 14px; }
.method .card + .card { margin-top: 14px; }
.card-title { margin: 0 0 10px; }
.premise { display: grid; grid-template-columns: 150px 120px 1fr; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--line-2); font-size: 14px; }
.premise:last-child { border-bottom: 0; }
.sig { font-weight: 700; } .sig.pass { color: var(--pos); } .sig.warn { color: var(--brass-ink); } .sig.fail { color: var(--neg); }

/* ---------- 逐字稿 ---------- */
.spk-table td { cursor: pointer; }
.spk-table tr.is-mgmt td:first-child::before { content: ""; display: inline-block; width: 7px; height: 7px; border-radius: 50%; background: var(--brand); margin-right: 8px; }
.spk-table tr.is-ext td:first-child::before { content: ""; display: inline-block; width: 7px; height: 7px; border-radius: 50%; background: var(--brass); margin-right: 8px; }
.spk-table tr.on td { background: var(--brand-tint); }
.para { display: grid; grid-template-columns: 74px minmax(0, 1fr); gap: 14px; padding: 12px 10px; border-radius: 8px; scroll-margin-top: 112px; }
.para:target, .para.flash { background: var(--brass-tint); box-shadow: inset 3px 0 0 var(--brass); }
.para .pid { font: 600 12px var(--mono); color: var(--ink-3); padding-top: 3px; }
.para .pid a { color: var(--ink-3); }
.para .ts { display: block; font-size: 11px; color: var(--ink-3); margin-top: 2px; font-family: var(--mono); }
.para .who, .spk-pin .who { font-weight: 650; font-size: 14px; color: var(--ink); }
.para .who .role, .spk-pin .who .role { font-weight: 400; color: var(--ink-3); margin-left: 6px; font-size: 13px; }
.spk-pin .who { display: flex; align-items: center; min-width: 0; line-height: 1.2; text-box: trim-both cap alphabetic; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.spk-pin .who .role { display: inline-flex; align-items: center; line-height: 1.2; color: var(--ink-2); margin-left: 8px; padding-left: 8px; border-left: 1px solid var(--line); overflow: hidden; text-overflow: ellipsis; }
.who .fixed { font-weight: 500; font-size: 11px; line-height: 1.2; color: var(--ink-3); border: 1px solid var(--line); border-radius: 4px; padding: 1px 5px; margin-left: 8px; cursor: help; flex: none; }
.para.ext .who, .spk-pin-in.ext .who { color: var(--brass-ink); }
.para .who.is-pinned { visibility: hidden; }
.spk-pin { position: sticky; top: var(--nav-h, 83px); z-index: 10; height: 0; margin: 0 -24px; overflow: visible; clip-path: inset(0 0 -80px 0); pointer-events: none; }
.spk-pin-in {
  display: grid; grid-template-columns: 74px minmax(0, 1fr); gap: 14px; align-items: center;
  height: 40px; padding: 0 24px 0 34px;
  background: linear-gradient(90deg, color-mix(in srgb, var(--brand-tint) 75%, var(--card)) 0%, color-mix(in srgb, var(--card-2) 96%, transparent) 24%, color-mix(in srgb, var(--card) 96%, transparent) 100%);
  backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
  border-bottom: 1px solid var(--line);
  box-shadow: inset 3px 0 0 var(--brand), 0 4px 14px rgba(16, 38, 29, 0.07);
  opacity: 0; visibility: hidden;
  transition: opacity 0.16s ease, box-shadow 0.2s ease;
}
.spk-pin-in.ext {
  background: linear-gradient(90deg, color-mix(in srgb, var(--brass-tint) 78%, var(--card)) 0%, color-mix(in srgb, var(--card-2) 96%, transparent) 24%, color-mix(in srgb, var(--card) 96%, transparent) 100%);
  box-shadow: inset 3px 0 0 var(--brass), 0 4px 14px rgba(16, 38, 29, 0.07);
}
.spk-pin-in.show { opacity: 1; visibility: visible; pointer-events: auto; }
.spk-pin-tag { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 600; line-height: 1; text-box: trim-both cap alphabetic; color: var(--brand); white-space: nowrap; }
.spk-pin-in.ext .spk-pin-tag { color: var(--brass-ink); }
.spk-pin-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--brand); box-shadow: 0 0 0 3px rgba(14, 77, 58, 0.14); flex: none; }
.spk-pin-in.ext .spk-pin-dot { background: var(--brass); box-shadow: 0 0 0 3px rgba(168, 121, 43, 0.18); }
.spk-pin-main { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-width: 0; }
.spk-pin-actions { display: flex; align-items: center; gap: 6px; flex: none; }
.spk-pin-loc, .spk-pin-btn { display: inline-flex; align-items: center; justify-content: center; height: 24px; padding: 0 10px; color: var(--ink-2); background: var(--card); border: 1px solid var(--line); border-radius: 999px; line-height: 1; text-box: trim-both cap alphabetic; white-space: nowrap; transition: border-color 0.15s, color 0.15s, background-color 0.15s; }
.spk-pin-loc { font: 600 11.5px/1 var(--mono); }
.spk-pin-loc:hover { color: var(--brand); border-color: var(--brass); background: var(--brass-tint); text-decoration: none; }
.spk-pin-btn { font: 600 11.5px/1 var(--sans); cursor: pointer; }
.spk-pin-btn:hover { color: var(--brand); border-color: var(--brand); background: var(--brand-tint); }
.spk-pin-btn.on { color: var(--brand-on); background: var(--brand); border-color: var(--brand); }
.spk-pin-in.ext .spk-pin-btn.on { color: #fff; background: var(--brass); border-color: var(--brass); }
@keyframes spk-slide-in { from { opacity: 0.35; transform: translateY(3px); } to { opacity: 1; transform: translateY(0); } }
.spk-pin-in.switched .who { animation: spk-slide-in 0.16s ease-out; }
body.focus .spk-pin-in[data-spk]:not(.focus-on) .who, body.focus .spk-pin-in[data-spk]:not(.focus-on) .spk-pin-tag { opacity: 0.35; }
.para .txt { font-family: Georgia, "Times New Roman", serif; font-size: 15.5px; line-height: 1.75; color: var(--ink); margin-top: 2px; }
.para .refs { margin-top: 6px; display: flex; flex-wrap: wrap; gap: 6px; }
.ref-badge { font-size: 11.5px; color: var(--brand); background: var(--brand-tint); border-radius: 999px; padding: 2px 9px; font-weight: 600; }
.ref-badge:hover { text-decoration: none; background: var(--brand-border); }
body.focus .para[data-spk]:not(.focus-on) { opacity: 0.35; }
.qa-divider { margin: 22px 0 8px; padding: 10px 14px; background: var(--night); color: var(--top-ink); border-radius: 8px; font-family: var(--serif); font-size: 16px; }

/* ---------- 首页 ---------- */
.hero { padding: 30px 0 6px; }
.hero h1 { font-size: 32px; }
.hero p { color: var(--ink-2); margin-top: 6px; }
.stats { display: flex; gap: 32px; margin-top: 16px; }
.stats div { font-size: 13px; color: var(--ink-3); }
.stats b { display: block; font-size: 24px; color: var(--ink); font-weight: 650; }
.co-sec-head { display: flex; align-items: center; justify-content: space-between; gap: 10px 16px; flex-wrap: wrap; margin-bottom: 12px; }
.co-sec-title { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; }
.co-sec-title h2 { margin: 0; }
.co-sort-note { font-size: 13px; color: var(--ink-2); }
.co-sort-note b { color: var(--brand); font-weight: 650; font-variant-numeric: tabular-nums; }
.co-controls { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.co-sorts { display: inline-flex; align-items: center; background: var(--line-2); border: 1px solid var(--line); border-radius: 8px; padding: 2px; gap: 2px; flex-wrap: wrap; }
.co-ctrl-lbl { font-size: 12px; color: var(--ink-3); padding: 0 6px 0 8px; font-weight: 500; user-select: none; }
.co-sorts button { border: 0; background: transparent; font: 600 12.5px var(--sans); color: var(--ink-2); padding: 5px 10px; border-radius: 6px; cursor: pointer; white-space: nowrap; transition: background-color 0.12s, color 0.12s; }
.co-sorts button:hover { color: var(--ink); }
.co-sorts button.on { background: var(--card); color: var(--brand); box-shadow: 0 1px 2px rgba(26, 31, 28, 0.08); }
.co-group-btn { border: 1px solid var(--line); background: var(--card); font: 600 12.5px var(--sans); color: var(--ink-2); padding: 6px 12px; border-radius: 8px; cursor: pointer; white-space: nowrap; transition: border-color 0.12s, background-color 0.12s, color 0.12s; }
.co-group-btn:hover { border-color: var(--brass); color: var(--ink); }
.co-group-btn.on { background: var(--brand); border-color: var(--brand); color: var(--brand-on); }
.co-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 10px 16px; flex-wrap: wrap; padding: 10px 14px; margin-bottom: 14px; background: var(--card-2); border: 1px solid var(--line); border-radius: var(--radius); }
.co-cats { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.co-pill { display: inline-flex; align-items: center; gap: 5px; font: 500 13px var(--sans); color: var(--ink-2); background: var(--card); border: 1px solid var(--line); border-radius: 999px; padding: 4px 12px; cursor: pointer; transition: border-color 0.12s, background-color 0.12s, color 0.12s; }
.co-pill:hover { border-color: var(--brass); color: var(--ink); }
.co-pill.on { color: var(--brand-on); background: var(--brand); border-color: var(--brand); font-weight: 600; }
.co-pill .cnt { font-size: 11.5px; color: var(--ink-3); font-variant-numeric: tabular-nums; }
.co-pill.on .cnt { color: var(--brand-on); opacity: 0.84; }
.co-fresh-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--pos); display: inline-block; box-shadow: 0 0 0 2px var(--pos-tint); }
.co-pill.on .co-fresh-dot { background: currentColor; box-shadow: none; }
.co-mkts { display: flex; align-items: center; gap: 4px; flex-wrap: wrap; margin-left: auto; }
.co-mkt-pill { display: inline-flex; align-items: center; gap: 5px; font: 500 12.5px var(--sans); color: var(--ink-2); background: transparent; border: 1px solid transparent; border-radius: 999px; padding: 3px 10px; cursor: pointer; }
.co-mkt-pill:hover { background: var(--card); border-color: var(--line); color: var(--ink); }
.co-mkt-pill.on { background: var(--card); border-color: var(--brass); color: var(--brass-ink); font-weight: 600; box-shadow: 0 1px 2px rgba(26, 31, 28, 0.05); }
.co-mkt-pill span { color: var(--ink-3); font-size: 11.5px; font-variant-numeric: tabular-nums; }
.co-mkt-pill.on span { color: var(--brass-ink); }
[data-mkt-code="CN"] { --mkt: var(--mkt-cn); }
[data-mkt-code="HK"] { --mkt: var(--mkt-hk); }
[data-mkt-code="US"] { --mkt: var(--mkt-us); }
.co-mkt-dot { width: 7px; height: 7px; border-radius: 2px; background: var(--mkt, var(--brass)); display: inline-block; }
.co-cat-callout { padding: 9px 14px; margin: -4px 0 14px; background: var(--row-hover); border: 1px solid var(--brass-border); border-left: 3px solid var(--brass); border-radius: 8px; font-size: 13px; color: var(--ink-2); line-height: 1.55; }
.co-cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; }
.co-card { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow); padding: 16px; display: flex; flex-direction: column; gap: 10px; color: var(--ink); transition: border-color 0.15s, box-shadow 0.15s; }
.co-card:hover { border-color: var(--brass); box-shadow: 0 4px 18px rgba(26, 31, 28, 0.08); text-decoration: none; }
.co-card.is-fresh { border-top: 3px solid var(--brand); }
.co-card.disabled { opacity: 0.6; pointer-events: none; }
.co-card[hidden], .co-cat-sec[hidden], .co-cat-groups[hidden], .co-cards[hidden], .co-cat-callout[hidden], .co-empty[hidden] { display: none !important; }
.co-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; white-space: nowrap; }
.co-card .t { display: flex; align-items: center; gap: 6px; flex-wrap: nowrap; min-width: 0; overflow: hidden; }
.co-mkt-tag { flex: none; font: 700 10.5px/1 var(--sans); color: #fff; background: var(--mkt, var(--brass)); border-radius: 4px; padding: 3.5px 5px; letter-spacing: 0.02em; }
.co-card .n { font: 700 18px/1.25 var(--serif); color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.co-card .ticker { flex: none; font-size: 12px; padding: 1px 6px; }
.co-meta-tags { display: flex; align-items: center; gap: 4px; flex: none; white-space: nowrap; }
.badge.cat-badge { color: var(--ink-2); background: var(--card-2); border-color: var(--line); font-weight: 600; font-size: 11.5px; padding: 2px 8px; }
.co-earn { display: flex; align-items: center; justify-content: space-between; gap: 6px; padding: 6px 10px; border-radius: 7px; background: var(--card-2); border: 1px solid var(--line-2); font-size: 12px; line-height: 1.3; white-space: nowrap; overflow: hidden; }
.co-earn.fresh { background: linear-gradient(90deg, var(--brand-tint) 0%, var(--card-2) 100%); border-color: var(--brand-border); }
.co-earn-main { display: flex; align-items: center; gap: 5px; flex-wrap: nowrap; min-width: 0; overflow: hidden; }
.co-fresh-tag { display: inline-flex; align-items: center; gap: 3px; flex: none; font: 700 11px/1 var(--sans); color: var(--brand-on); background: var(--brand); border-radius: 4px; padding: 3px 5px; white-space: nowrap; }
.co-earn-p { font-family: var(--mono); font-size: 12px; font-weight: 700; color: var(--ink); flex: none; }
.co-earn-dt { color: var(--ink-2); font-variant-numeric: tabular-nums; white-space: nowrap; }
.co-earn.fresh .co-earn-dt { color: var(--brand-2); font-weight: 600; }
.co-earn-note { font-size: 11px; color: var(--brass-ink); background: var(--brass-tint); border-radius: 4px; padding: 1px 5px; font-weight: 600; white-space: nowrap; flex: none; }
.co-earn-nxt { font-size: 11.5px; color: var(--ink-3); font-variant-numeric: tabular-nums; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.co-earn-marks { display: flex; align-items: center; gap: 4px; flex: none; }
.co-mk { font-style: normal; font-size: 11px; font-weight: 600; padding: 1px 5px; border-radius: 4px; background: var(--line-2); color: var(--ink-3); white-space: nowrap; }
.co-mk.on { background: var(--card); color: var(--brand); border: 1px solid var(--brand-border); }
.co-card .kv { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 8px 10px; font-size: 12.5px; color: var(--ink-2); padding: 2px 0; }
.co-card .kv > div { min-width: 0; }
.co-card .kv b { display: block; color: var(--ink); font-size: 13.5px; line-height: 1.35; letter-spacing: -0.01em; margin-top: 2px; }
.co-cat-groups { display: flex; flex-direction: column; gap: 20px; }
.co-cat-sec { background: color-mix(in srgb, var(--card) 55%, var(--paper)); border: 1px solid var(--line); border-radius: 12px; padding: 16px 18px 18px; }
.co-cat-head { margin-bottom: 14px; padding-bottom: 10px; border-bottom: 1px solid var(--line-2); }
.co-cat-title { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.co-cat-title h3 { margin: 0; font-size: 18px; color: var(--ink); }
.co-cat-cnt { font-size: 12px; font-weight: 600; color: var(--ink-2); background: var(--line-2); border-radius: 999px; padding: 1px 9px; font-variant-numeric: tabular-nums; }
.co-cat-sub { margin: 4px 0 0; font-size: 13px; color: var(--ink-2); line-height: 1.55; }
.co-empty { padding: 32px 16px; text-align: center; color: var(--ink-3); background: var(--card-2); border: 1px dashed var(--line); border-radius: var(--radius); font-size: 14px; }

/* ---------- 页脚与提示 ---------- */
footer { border-top: 1px solid var(--line); color: var(--ink-3); font-size: 12.5px; padding: 18px 0 36px; }
.footer-in { display: flex; align-items: baseline; justify-content: space-between; gap: 6px 20px; flex-wrap: wrap; }
.footer-meta { font-size: 12px; color: var(--ink-3); font-variant-numeric: tabular-nums; white-space: nowrap; }
@media (max-width: 720px) { .footer-meta { white-space: normal; } }
.tip { position: fixed; z-index: 100; max-width: 380px; background: var(--night); color: var(--top-ink); font-size: 12.5px; line-height: 1.55; padding: 8px 11px; border-radius: 7px; pointer-events: none; box-shadow: 0 6px 24px rgba(0, 0, 0, 0.25); opacity: 0; transition: opacity 0.08s; }
.tip.show { opacity: 1; }
.tip { white-space: pre-line; }

@media (max-width: 1060px) {
  .layout { grid-template-columns: minmax(0, 1fr); }
  .toc { display: none; }
  .co-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 720px) {
  .wrap, .company-head-in, .company-nav-in, .topbar-in { padding-left: 16px; padding-right: 16px; }
  .company-head-in { grid-template-columns: 1fr; }
  .quote-box { text-align: left; }
  .range52 { margin-left: 0; }
  .kpis, .val-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .grid-2, .grid-3, .dims, .co-cards { grid-template-columns: minmax(0, 1fr); }
  .risks .risk { grid-template-columns: 28px minmax(0, 1fr); row-gap: 2px; }
  .risks .risk .risk-d, .risk.no-title .risk-d { grid-column: 2; }
  .share-row { grid-template-columns: 110px 1fr 90px; }
  .premise { grid-template-columns: 1fr; gap: 2px; }
  .para { grid-template-columns: 1fr; gap: 2px; }
  .spk-pin-in { grid-template-columns: 1fr; padding: 0 16px 0 24px; }
  .spk-pin-tag, .spk-pin-btn { display: none; }
  .topnav { display: none; }
}
@media print {
  .topbar, .company-nav, .toc, .chart-table, .tabs, .flow-zoom-btn, .flow-dialog, .spk-pin { display: none !important; }
  .para .who.is-pinned { visibility: visible !important; }
  body { background: #fff; }
  .card { box-shadow: none; break-inside: avoid; }
  [data-panel][hidden] { display: block !important; }
}

/* ---------- 补充 ---------- */
.spark .line { fill: none; stroke-width: 1.6; stroke-linejoin: round; stroke-linecap: round; }
.spark .dot { stroke: var(--card); stroke-width: 1.5; }
.grid-2 > .card + .card, .grid-3 > .card + .card { margin-top: 0; }
a.plain { color: inherit; }
a.plain:hover { color: var(--brand); }
.metric-ref { color: var(--ink); border-bottom: 1px solid var(--line); }
.metric-ref:hover { border-bottom-color: var(--brand); text-decoration: none; }
.sankey-wrap { overflow-x: auto; border-radius: 6px; }
.flow-holder { position: relative; }
.flow-holder .sankey-wrap { cursor: zoom-in; }
.sankey { width: 100%; min-width: 760px; height: auto; display: block; }
.sankey .ribbon { transition: opacity .15s ease; }
.sankey:hover .ribbon { opacity: .3; }
.sankey .ribbon:hover { opacity: .95; }
.card .card-head .flow-tabs, .flow-dialog-head .flow-tabs { margin-bottom: 0; flex-wrap: wrap; }
.flow-zoom-btn {
  position: absolute; top: 10px; right: 10px; z-index: 2;
  display: inline-flex; align-items: center; justify-content: center;
  width: 32px; height: 32px; padding: 0;
  color: var(--ink-2); background: color-mix(in srgb, var(--card) 88%, transparent);
  border: 1px solid var(--line); border-radius: 8px;
  backdrop-filter: blur(4px); box-shadow: 0 2px 6px rgba(26, 31, 28, 0.08);
  cursor: pointer;
}
.flow-zoom-btn:hover { border-color: var(--brass); color: var(--brand); background: var(--card); }
.flow-zoom-btn:focus-visible { outline: 2px solid var(--brand); outline-offset: 2px; }
.flow-zoom-btn svg { width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-width: 1.65; stroke-linecap: round; stroke-linejoin: round; }
.flow-dialog {
  border: 1px solid var(--line); border-radius: 12px;
  background: var(--card); color: var(--ink);
  padding: 0; width: min(96vw, 1520px); max-width: 96vw;
  max-height: 92vh; max-height: 92dvh;
  box-shadow: 0 20px 60px rgba(16, 38, 29, 0.28);
}
.flow-dialog[open] { display: flex; flex-direction: column; }
.flow-dialog::backdrop { background: rgba(16, 38, 29, 0.55); backdrop-filter: blur(2px); }
.flow-dialog-head {
  display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap;
  padding: 14px 22px; border-bottom: 1px solid var(--line); background: var(--card-2);
}
.flow-dialog-head h2 { margin: 0; font-size: 19px; }
.flow-dialog-body { padding: 18px 22px 20px; overflow: auto; overscroll-behavior: contain; flex: 1; min-height: 0; }
.flow-dialog-body .sankey { min-width: 960px; }
.legend-note { color: var(--ink-3); margin-left: auto; }
@media (max-width: 640px) {
  #flow .card-head { flex-wrap: wrap; }
  .flow-dialog-head, .flow-dialog-body { padding-left: 14px; padding-right: 14px; }
  .legend-note { margin-left: 0; flex-basis: 100%; }
}
@media (prefers-reduced-motion: reduce) { .sankey .ribbon { transition: none; } }
.kpi:hover { border-color: var(--brass); }
.page-head { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 4px 16px; align-items: start; margin-bottom: 18px; }
.page-head > .small { padding-top: 8px; white-space: nowrap; }
.company-head-in { align-items: center; padding-top: 18px; }
.metric-ref { font: 600 12px/1.2 var(--sans, inherit); color: var(--brand); background: var(--brand-tint); border: 0; border-radius: 4px; padding: 2px 5px; vertical-align: 1px; }
.metric-ref:hover { background: var(--brand-border); }
table.data tr.group td { position: static; }
table.data tr.group td span { position: sticky; left: 10px; }
table.data tr.group td span { display: inline-block; }

/* ---------- 中英对照逐字稿 ---------- */
.lang-bar { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-top: 10px; }
.lang-bar .tabs { margin-bottom: 0; }
.para .bi { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 22px; }
.para .txt.zh { font-family: var(--sans); font-size: 15px; line-height: 1.85; color: var(--ink); }
body[data-lang="en"] .para .bi, body[data-lang="zh"] .para .bi { grid-template-columns: minmax(0, 1fr); }
body[data-lang="en"] .para .txt.zh, body[data-lang="zh"] .para .txt.en { display: none; }
body[data-lang="both"] .para .txt.en { border-right: 1px dashed var(--line); padding-right: 22px; }

/* ---------- 电话会解析 ---------- */
.exec { border-left: 3px solid var(--brand); padding: 4px 0 4px 16px; margin: 16px 0; }
.exec h3 { margin-top: 0; }
.qa-list { display: grid; gap: 12px; }
.qa-card { border: 1px solid var(--line); border-radius: 8px; background: var(--card-2); padding: 12px 16px; scroll-margin-top: 112px; }
.qa-card:target { box-shadow: inset 0 0 0 1px var(--brass); }
.qa-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.qa-head h3 { margin: 0 0 6px; font-size: 15.5px; }

/* 指引变化徽章：方向用箭头表达，不用涨跌色（上调资本开支不等于利好） */
.badge.chg-raised::before { content: "▲ "; }
.badge.chg-lowered::before, .badge.chg-withdrawn::before { content: "▼ "; }
.badge.chg-raised, .badge.chg-lowered { color: var(--brass-ink); background: var(--brass-tint); }
.badge.chg-new { color: var(--brand); background: var(--brand-tint); }
.badge.chg-maintained, .badge.chg-reiterated { color: var(--ink-2); background: var(--line-2); }
.badge.chg-narrowed, .badge.chg-widened { color: var(--ink-2); background: var(--line-2); border-color: var(--line); }
.badge.chg-withdrawn { color: var(--neg); background: var(--neg-tint); }
.guide-matrix td { vertical-align: top; min-width: 150px; font-size: 13px; line-height: 1.5; }
.gcell + .gcell { margin-top: 8px; padding-top: 8px; border-top: 1px dashed var(--line); }
.gcell .badge { margin-bottom: 3px; }

/* 语气热力（发散：红 ← 灰 → 绿），格内同时写分值与文字 */
.heat-table td { text-align: center; }
td.heat { font-weight: 600; font-size: 12.5px; white-space: nowrap; }
td.heat--2 { background: #f1c7c1 !important; color: #7d1a12; }
td.heat--1 { background: #f8e3df !important; color: #8e2318; }
td.heat-0 { background: #efebe3 !important; color: var(--ink-2); }
td.heat-1 { background: #dcefe3 !important; color: #0f6a40; }
td.heat-2 { background: #b9e0c9 !important; color: #0b5532; }
td.heat-na { color: var(--ink-3); }
/* 关键词顺序色（单一绿色由浅到深） */
td.seq-0 { background: var(--card-2); color: var(--ink-3); }
td.seq-1 { background: #eef5f0; }
td.seq-2 { background: #d9eadf; }
td.seq-3 { background: #b9d8c5; }
td.seq-4 { background: #8fc0a3; color: #0b3a24; font-weight: 600; }
:root[data-theme="dark-pine"] td.heat--2, :root[data-theme="dark-slate"] td.heat--2 { background: #4a1c1a !important; color: #fca5a1; }
:root[data-theme="dark-pine"] td.heat--1, :root[data-theme="dark-slate"] td.heat--1 { background: #361b1a !important; color: #f8b4b0; }
:root[data-theme="dark-pine"] td.heat-0, :root[data-theme="dark-slate"] td.heat-0 { background: var(--card-2) !important; color: var(--ink-2); }
:root[data-theme="dark-pine"] td.heat-1, :root[data-theme="dark-slate"] td.heat-1 { background: #153526 !important; color: #86efac; }
:root[data-theme="dark-pine"] td.heat-2, :root[data-theme="dark-slate"] td.heat-2 { background: #194732 !important; color: #bbf7d0; }
:root[data-theme="dark-pine"] td.seq-1, :root[data-theme="dark-slate"] td.seq-1 { background: #14261f; color: var(--ink-2); }
:root[data-theme="dark-pine"] td.seq-2, :root[data-theme="dark-slate"] td.seq-2 { background: #18362a; color: var(--ink); }
:root[data-theme="dark-pine"] td.seq-3, :root[data-theme="dark-slate"] td.seq-3 { background: #1f4938; color: #d1fae5; }
:root[data-theme="dark-pine"] td.seq-4, :root[data-theme="dark-slate"] td.seq-4 { background: #286049; color: #ecfdf5; font-weight: 600; }
:root[data-theme="dark-pine"] .sankey-wrap, :root[data-theme="dark-slate"] .sankey-wrap { background: #f4f2ec; padding: 6px; border: 1px solid var(--line); }
@media (max-width: 720px) {
  .para .bi { grid-template-columns: minmax(0, 1fr); gap: 6px; }
  body[data-lang="both"] .para .txt.en { border-right: 0; padding-right: 0; }
}
.guide-matrix th:first-child { min-width: 7.5em; white-space: nowrap; }
.guide-matrix td:nth-child(2) { background: var(--row-hover); }

/* ---------- 顶栏公司切换（公司多时可搜索、按市场筛选） ---------- */
.cosw { position: relative; flex: none; }
.cosw [hidden] { display: none !important; }
.cosw > summary { list-style: none; }
.cosw > summary::-webkit-details-marker { display: none; }
.cosw-btn { display: flex; align-items: center; gap: 9px; height: 36px; padding: 0 11px 0 6px; border: 1.5px solid var(--brass); border-radius: 9px; background: rgba(255, 255, 255, 0.04); color: #fff; cursor: pointer; user-select: none; max-width: 440px; }
.cosw-btn:hover, .cosw[open] > .cosw-btn { background: rgba(255, 255, 255, 0.1); }
.cosw-btn:focus-visible { outline: 2px solid #e2c48c; outline-offset: 2px; }
.cosw [data-mkt="CN"] { --mkt: var(--mkt-cn); }
.cosw [data-mkt="HK"] { --mkt: var(--mkt-hk); }
.cosw [data-mkt="US"] { --mkt: var(--mkt-us); }
.cosw-mkt { flex: none; font: 700 11px/1 var(--sans); letter-spacing: 0.04em; color: #fff; background: var(--mkt, var(--brass)); border-radius: 4px; padding: 4px 5px; }
.cosw-name { min-width: 0; font-size: 15px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cosw-tk::before { content: "("; }
.cosw-tk::after { content: ")"; }
.cosw-ph { color: var(--top-ink); font-weight: 500; padding-left: 4px; }
.cosw-count { flex: none; font-size: 12.5px; color: var(--top-muted); background: rgba(255, 255, 255, 0.1); border-radius: 999px; padding: 3px 10px; white-space: nowrap; font-variant-numeric: tabular-nums; }
.cosw-caret { flex: none; width: 10px; height: 6px; fill: none; stroke: var(--top-muted); stroke-width: 1.6; transition: transform 0.15s; }
.cosw[open] .cosw-caret { transform: rotate(180deg); }
.cosw-panel { position: absolute; top: calc(100% + 9px); left: 0; z-index: 60; width: 420px; max-height: min(580px, calc(100vh - 76px)); display: flex; flex-direction: column; background: var(--card); color: var(--ink); border: 1px solid var(--line); border-radius: 12px; box-shadow: 0 14px 44px rgba(16, 38, 29, 0.24); overflow: hidden; }
.cosw-search { position: relative; padding: 10px; border-bottom: 1px solid var(--line); }
.cosw-search svg { position: absolute; left: 21px; top: 50%; width: 15px; height: 15px; transform: translateY(-50%); fill: none; stroke: var(--ink-3); stroke-width: 1.6; stroke-linecap: round; }
.cosw-search input { width: 100%; height: 38px; padding: 0 36px 0 34px; border: 1px solid var(--line); border-radius: 8px; background: var(--paper); color: var(--ink); font: 14px var(--sans); }
.cosw-search input::placeholder { color: var(--ink-3); }
.cosw-search input:focus { outline: none; border-color: var(--brand); background: var(--card); box-shadow: 0 0 0 3px var(--brand-tint); }
.cosw-search input::-webkit-search-cancel-button { display: none; }
.cosw-search kbd { position: absolute; right: 20px; top: 50%; transform: translateY(-50%); }
.cosw kbd { font: 600 11px/1 var(--mono); color: var(--ink-2); background: var(--card); border: 1px solid var(--line); border-bottom-width: 2px; border-radius: 4px; padding: 2px 5px; }
.cosw-mkts { display: flex; flex-wrap: wrap; gap: 6px; padding: 9px 10px 2px; }
.cosw-mkts button { font: 13px var(--sans); color: var(--ink-2); background: var(--card); border: 1px solid var(--line); border-radius: 999px; padding: 4px 11px; cursor: pointer; }
.cosw-mkts button span { margin-left: 5px; color: var(--ink-3); font-variant-numeric: tabular-nums; }
.cosw-mkts button[data-mkt]:not([data-mkt=""])::before { content: ""; display: inline-block; width: 7px; height: 7px; margin-right: 6px; border-radius: 2px; background: var(--mkt); vertical-align: 1px; }
.cosw-mkts button:hover { border-color: var(--ink-3); }
.cosw-mkts button.on { color: var(--brand); border-color: var(--brand); background: var(--brand-tint); font-weight: 600; }
.cosw-mkts button.on span { color: var(--brand); }
.cosw-list { flex: 1; overflow-y: auto; overscroll-behavior: contain; padding: 4px 6px 8px; }
.cosw-gh { display: flex; gap: 6px; padding: 10px 10px 4px; font-size: 12px; font-weight: 600; color: var(--ink-3); letter-spacing: 0.04em; }
.cosw-gh span { font-weight: 400; font-variant-numeric: tabular-nums; }
.cosw-gh { align-items: center; position: sticky; top: -4px; z-index: 1; background: var(--card); }
.cosw-dot { width: 7px; height: 7px; border-radius: 2px; background: var(--mkt, var(--brass)); }
.cosw-gh em { margin-left: auto; font-style: normal; font-weight: 400; letter-spacing: 0; }
.cosw-group + .cosw-group { border-top: 1px solid var(--line-2); margin-top: 4px; }
.cosw-st { flex: none; font-size: 11.5px; color: var(--ink-3); background: var(--line-2); border-radius: 999px; padding: 2px 8px; }
.cosw-item { display: flex; align-items: center; gap: 10px; padding: 7px 10px; border-radius: 8px; color: var(--ink); scroll-margin: 6px; }
.cosw-item:hover { text-decoration: none; }
.cosw-item.active { background: var(--brand-tint); }
.cosw-item.cur { box-shadow: inset 3px 0 0 var(--brass); }
.cosw-item .cosw-mkt { font-size: 10px; padding: 3px 4px; min-width: 22px; text-align: center; }
.cosw-main { flex: 1; min-width: 0; display: flex; flex-direction: column; line-height: 1.35; }
.cosw-main b { font-size: 14px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cosw-sub { font-size: 12px; color: var(--ink-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cosw-cur { flex: none; font-size: 11.5px; font-weight: 600; color: var(--brass-ink); background: var(--brass-tint); border-radius: 999px; padding: 2px 8px; }
.cosw-empty { padding: 24px 10px; text-align: center; color: var(--ink-3); font-size: 13px; }
.cosw-foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 8px 12px; border-top: 1px solid var(--line); background: var(--paper); font-size: 12px; color: var(--ink-3); }
.cosw-keys kbd { margin-right: 2px; }
.cosw-foot a { margin-left: auto; font-weight: 600; white-space: nowrap; }
.company-nav .cosw { margin-left: auto; }
.company-nav .cosw-btn { height: 32px; background: var(--card-2); color: var(--ink); border-color: var(--brass); }
.company-nav .cosw-btn:hover, .company-nav .cosw[open] > .cosw-btn { background: var(--brass-tint); }
.company-nav .cosw-btn:focus-visible { outline-color: var(--brand); }
.company-nav .cosw-ph { color: var(--ink-2); }
.company-nav .cosw-count { color: var(--ink-2); background: var(--line-2); }
.company-nav .cosw-caret { stroke: var(--ink-2); }
.company-nav .cosw-panel { left: auto; right: 0; }

/* ---------- 顶栏配色切换 ---------- */
.themesw { position: relative; flex: none; margin-left: auto; }
.themesw > summary { list-style: none; }
.themesw > summary::-webkit-details-marker { display: none; }
.themesw-btn { display: inline-flex; align-items: center; gap: 7px; height: 32px; padding: 0 10px; border: 1px solid rgba(255, 255, 255, 0.18); border-radius: 8px; background: rgba(255, 255, 255, 0.05); color: var(--top-ink); font: 500 12.5px/1 var(--sans); cursor: pointer; user-select: none; white-space: nowrap; }
.themesw-btn:hover, .themesw[open] > .themesw-btn { background: rgba(255, 255, 255, 0.11); border-color: var(--brass); color: #fff; }
.themesw-btn:focus-visible { outline: 2px solid #e2c48c; outline-offset: 2px; }
.themesw[open] .cosw-caret { transform: rotate(180deg); }
.themesw-dots { display: inline-flex; align-items: center; }
.themesw-dots i { width: 9px; height: 9px; border-radius: 50%; border: 1px solid rgba(255, 255, 255, 0.35); display: inline-block; }
.themesw-dots i + i { margin-left: -3px; }
.themesw-dots i:nth-child(1) { background: var(--paper); }
.themesw-dots i:nth-child(2) { background: var(--brand); }
.themesw-dots i:nth-child(3) { background: var(--brass); }
.themesw-panel { position: absolute; top: calc(100% + 8px); right: 0; z-index: 65; width: 256px; padding: 6px; background: var(--card); color: var(--ink); border: 1px solid var(--line); border-radius: 11px; box-shadow: 0 14px 40px rgba(0, 0, 0, 0.26); display: flex; flex-direction: column; gap: 2px; }
.themesw-hd { padding: 4px 8px 5px; font-size: 11.5px; font-weight: 600; color: var(--ink-3); letter-spacing: 0.04em; }
.themesw-sep { height: 1px; background: var(--line-2); margin: 3px 4px; }
.themesw-opt { display: flex; align-items: center; gap: 10px; width: 100%; padding: 7px 9px; border: 0; border-radius: 8px; background: transparent; color: var(--ink); font: 13px/1.3 var(--sans); text-align: left; cursor: pointer; }
.themesw-opt:hover { background: var(--card-2); }
.themesw-opt.on { background: var(--brass-tint); box-shadow: inset 2.5px 0 0 var(--brass); }
.themesw-sw { display: grid; grid-template-columns: 1fr 1fr; width: 24px; height: 24px; border-radius: 6px; overflow: hidden; border: 1px solid var(--line); flex: none; }
.themesw-sw i:nth-child(1) { background: var(--sw-p); }
.themesw-sw i:nth-child(2) { background: var(--sw-n); }
.themesw-sw i:nth-child(3) { background: var(--sw-b); }
.themesw-sw i:nth-child(4) { background: var(--sw-a); }
.themesw-txt { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.themesw-txt b { font-size: 13px; font-weight: 600; color: var(--ink); }
.themesw-txt small { font-size: 11.5px; color: var(--ink-3); }
.themesw-opt.on .themesw-txt small { color: var(--brass-ink); }
.themesw-ck { font-size: 13px; font-weight: 700; color: var(--brass-ink); opacity: 0; flex: none; }
.themesw-opt.on .themesw-ck { opacity: 1; }

@media (max-width: 720px) {
  .topbar-in { gap: 10px; }
  .topbar .asof { display: none; }
  .themesw { margin-left: auto; }
  .themesw-label { display: none; }
  .cosw { position: static; min-width: 0; }
  .cosw-btn { height: 34px; gap: 7px; max-width: 100%; }
  .cosw-nm { display: none; }
  .cosw-tk::before, .cosw-tk::after { content: none; }
  .cosw-panel, .company-nav .cosw-panel { position: fixed; top: 60px; left: 8px; right: 8px; width: auto; max-height: calc(100vh - 72px); max-height: calc(100dvh - 72px); }
  .cosw-search kbd, .cosw-keys { display: none; }
}
.co-chart { margin: 2px 0 4px; }
.co-chart-t { font-size: 13px; color: var(--ink-2); }
.co-chart-t span { font-size: 12px; color: var(--ink-3); }
.co-val { display: flex; align-items: center; gap: 6px 10px; flex-wrap: wrap; margin: 8px 0 2px; color: var(--ink-2); }
.co-val-item { display: inline-flex; align-items: center; gap: 4px; }
.trend-item { padding: 10px 0; border-top: 1px solid var(--line-2); }
.trend-item:first-of-type { border-top: 0; }
.trend-item p { margin: 0 0 4px; }
.trend-item ul { margin: 4px 0 0; padding-left: 18px; }
#trends table .badge { white-space: nowrap; }  /* 状态徽章短，逐字换行会把行撑高 */

/* 跨期页高亮所选报告期（?p=）：所在列 + 所在财年的年度列（放在表格样式之后以覆盖表头底色） */
table.data td.col-on:not(.heat), table.data thead th.col-on { background: var(--brass-tint); }
table.data thead th.col-on { color: var(--brass-ink); box-shadow: inset 0 -2px 0 var(--brass); }
table.data td.heat.col-on { box-shadow: inset 0 0 0 2px var(--brass); }
table.data td.col-year, table.data thead th.col-year { background: var(--card-2); }
table.data thead th.col-year { color: var(--ink); }
table.data tr.col-on > * { background: var(--brass-tint); }

/* 预测台账与近期验证焦点 */
.pred-strip { display: flex; flex-wrap: wrap; gap: 6px 14px; padding: 8px 12px; margin-bottom: 12px; background: var(--card-2); border: 1px solid var(--line-2); border-radius: 7px; font-size: 13px; color: var(--ink-2); }
.pred-strip b { color: var(--ink); font-variant-numeric: tabular-nums; }
.pred-subhead { font-size: 12.5px; font-weight: 600; color: var(--ink-3); letter-spacing: 0.03em; margin: 6px 0 6px; }
.pred-groups { display: flex; flex-direction: column; gap: 10px; }
.pred-group { border: 1px solid var(--line-2); border-radius: 8px; padding: 10px 12px; background: var(--card-2); }
.pred-gh { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; flex-wrap: wrap; margin-bottom: 6px; padding-bottom: 5px; border-bottom: 1px solid var(--line-2); }
.pred-glist { display: flex; flex-direction: column; gap: 5px; }
.pred-gitem { display: flex; align-items: baseline; gap: 7px; flex-wrap: wrap; padding: 5px 7px; border-radius: 6px; color: var(--ink); font-size: 13.5px; line-height: 1.45; background: var(--card); border: 1px solid var(--line-2); }
.pred-gitem:hover { border-color: var(--brass); background: var(--row-hover); text-decoration: none; }
.pred-gstmt { flex: 1 1 200px; min-width: 0; }
.pred-grng { font-size: 12.5px; color: var(--ink-2); font-variant-numeric: tabular-nums; margin-left: auto; white-space: nowrap; }
@media (max-width: 720px) { .pred-grng { white-space: normal; margin-left: 0; } }
table.pred-data td { vertical-align: top; }
.pred-stmt { font-weight: 500; line-height: 1.45; }
.pred-anchor { color: var(--ink); }
.pred-anchor:hover { color: var(--brand); }
.pred-meta { margin-top: 3px; line-height: 1.45; }
.pred-metric { font-size: 12.5px; color: var(--ink-2); margin-bottom: 1px; }
.pred-res-head { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.pred-delta { font-size: 11.5px; font-weight: 600; padding: 1px 6px; border-radius: 4px; font-variant-numeric: tabular-nums; white-space: nowrap; }
.pred-delta.pos { color: var(--pos); background: var(--pos-tint); }
.pred-delta.neg { color: var(--neg); background: var(--neg-tint); }
.pred-meter { width: 176px; max-width: 100%; margin: 6px 0 2px; }
.pred-meter .pm-track { position: relative; height: 6px; background: var(--line-2); border-radius: 3px; }
.pred-meter .pm-band { position: absolute; top: 0; height: 6px; background: var(--grid-zero); border-radius: 3px; }
.pred-meter .pm-ext { position: absolute; top: 1px; height: 4px; border-radius: 2px; background: var(--pos); opacity: 0.45; }
.pred-meter.beat .pm-ext { background: linear-gradient(90deg, var(--brass), var(--pos)); opacity: 0.7; }
.pred-meter.miss .pm-ext { background: var(--neg); opacity: 0.55; }
.pred-meter .pm-pin { position: absolute; top: -2px; width: 10px; height: 10px; margin-left: -5px; border-radius: 50%; background: var(--pos); border: 2px solid var(--card); box-shadow: 0 1px 3px rgba(16, 38, 29, 0.25); }
.pred-meter.beat .pm-pin { background: var(--brand); border-color: var(--brass-tint); box-shadow: 0 0 0 1.5px var(--brass); }
.pred-meter.miss .pm-pin { background: var(--neg); }
.pred-meter .pm-ends { display: flex; justify-content: space-between; font-size: 11px; color: var(--ink-3); margin-top: 3px; line-height: 1.2; font-variant-numeric: tabular-nums; }

/* ---------- 财报复盘 5 模块视觉重构（结构化结论卡 / 五维 Bento / 异动折叠桥 / 叙事核对矩阵 / 多空双栏天平） ---------- */
.prose .cite,
.takeaway-cards .cite,
.breakdown-dims .cite,
.narrative-table .cite,
.blindspot-box .cite,
.impact-balance .cite,
.impact-verdict .cite {
  font: 600 11px/1.25 var(--mono);
  color: var(--ink-3);
  background: var(--line-2);
  border: 1px solid var(--line);
  border-radius: 4px;
  padding: 1px 5px;
  margin-left: 3px;
  vertical-align: 1px;
  transition: color 0.12s ease, background-color 0.12s ease, border-color 0.12s ease;
}
.prose .cite .cite-ic, .prose .cite .cite-who,
.takeaway-cards .cite .cite-ic, .takeaway-cards .cite .cite-who,
.breakdown-dims .cite .cite-ic, .breakdown-dims .cite .cite-who,
.narrative-table .cite .cite-ic, .narrative-table .cite .cite-who,
.blindspot-box .cite .cite-ic, .blindspot-box .cite .cite-who,
.impact-balance .cite .cite-ic, .impact-balance .cite .cite-who,
.impact-verdict .cite .cite-ic, .impact-verdict .cite .cite-who {
  display: none;
}
.prose .cite:hover,
.takeaway-cards .cite:hover,
.breakdown-dims .cite:hover,
.narrative-table .cite:hover,
.blindspot-box .cite:hover,
.impact-balance .cite:hover,
.impact-verdict .cite:hover {
  color: var(--brass-ink);
  background: var(--brass-tint);
  border-color: var(--brass);
  text-decoration: none;
}

/* ① 结论摘要：结构化结论卡 */
.takeaway-cards { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.takeaway-card {
  list-style: none;
  background: var(--card-2);
  border: 1px solid var(--line);
  border-left: 3.5px solid var(--brand);
  border-radius: 8px;
  padding: 12px 16px;
}
.takeaway-card.is-caution { border-left-color: var(--brass); }
.takeaway-head { display: flex; align-items: baseline; gap: 10px; }
.takeaway-num {
  flex: none;
  font: 700 12px/21px var(--mono);
  width: 24px;
  height: 21px;
  border-radius: 5px;
  background: var(--brand);
  color: var(--brand-on);
  text-align: center;
}
.takeaway-card.is-caution .takeaway-num { background: var(--brass); color: #fff; }
.takeaway-title { font-size: 15px; font-weight: 650; color: var(--ink); line-height: 1.48; }
.takeaway-bullets { margin: 6px 0 0; padding-left: 34px; list-style: none; }
.takeaway-bullets li { position: relative; font-size: 14px; color: var(--ink-2); line-height: 1.62; margin: 4px 0; }
.takeaway-bullets li::before { content: "▸"; position: absolute; left: -14px; color: var(--brass); font-size: 11px; top: 1px; }
.takeaways-tail img[src*="income-flow"],
#flow ~ #breakdown .dim-images img[src*="income-flow"] { display: none; }

/* ② 财务拆解：五维 Bento 网格 + 顶部关键指标胶囊 + 首句判断提取 */
.breakdown-dims { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.breakdown-dim {
  display: flex;
  flex-direction: column;
  gap: 8px;
  background: var(--card-2);
  border: 1px solid var(--line);
  border-radius: 9px;
  padding: 15px 18px;
}
.breakdown-dim.wide {
  grid-column: 1 / -1;
  background: linear-gradient(180deg, var(--brand-tint) 0%, var(--card-2) 64px);
  border-color: var(--brand-border);
}
.dim-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  flex-wrap: wrap;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--line-2);
}
.dim-head h3 { margin: 0; font-size: 16px; display: flex; align-items: center; gap: 8px; }
.dim-badges { display: flex; flex-wrap: wrap; gap: 6px; }
.dim-badge {
  display: inline-flex;
  align-items: baseline;
  gap: 5px;
  font-size: 12px;
  padding: 2px 8px;
  border-radius: 6px;
  background: var(--card);
  border: 1px solid var(--line);
  color: var(--ink-2);
  text-decoration: none;
  font-variant-numeric: tabular-nums;
}
.dim-badge:hover { border-color: var(--brass); background: var(--brass-tint); text-decoration: none; }
.dim-badge-k { font-size: 11.5px; color: var(--ink-3); }
.dim-badge-v { font-weight: 650; color: var(--brand); font-family: var(--mono); font-size: 12px; }
.dim-lead {
  font-size: 14.5px;
  font-weight: 600;
  color: var(--ink);
  line-height: 1.58;
  padding: 7px 11px;
  background: var(--card);
  border-left: 3px solid var(--brass);
  border-radius: 0 6px 6px 0;
}
.dim-body { font-size: 14px; color: var(--ink-2); line-height: 1.65; }
.dim-body ul, .dim-list { margin: 2px 0 0; padding-left: 18px; }
.dim-body li, .dim-list li { margin: 5px 0; line-height: 1.62; }
.dim-body li::marker, .dim-list li::marker { color: var(--brass); }
.prose-cards { list-style: none; margin: 4px 0 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.prose-cards > li { padding: 9px 12px; background: var(--card-2); border: 1px solid var(--line-2); border-radius: 7px; }
.structured-li { margin: 8px 0; line-height: 1.62; }
.structured-li .li-head { font-size: 14px; font-weight: 650; color: var(--ink); margin-bottom: 2px; }
.structured-li .li-body { font-size: 13.8px; color: var(--ink-2); line-height: 1.62; }

/* ③ 当季异动 & 长期趋势：折叠式定量归因桥 */
.anom-prose, .trend-prose { margin-top: 12px; padding-top: 10px; border-top: 1px solid var(--line-2); }
details.bridge-fold {
  margin-top: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--card-2);
  overflow: hidden;
}
summary.bridge-summary {
  list-style: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  padding: 9px 14px;
  font-size: 13px;
  color: var(--ink-2);
  user-select: none;
  transition: background-color 0.12s ease;
}
summary.bridge-summary::-webkit-details-marker { display: none; }
summary.bridge-summary:hover { background: var(--row-hover); color: var(--ink); }
summary.bridge-summary:focus-visible { outline: 2px solid var(--brand); outline-offset: -2px; }
.bridge-title { font-weight: 600; color: var(--ink); display: inline-flex; align-items: center; gap: 7px; }
.bridge-title::before {
  content: "▸";
  display: inline-block;
  color: var(--brass);
  font-size: 12px;
  transition: transform 0.15s ease;
}
details.bridge-fold[open] > summary.bridge-summary .bridge-title::before { transform: rotate(90deg); }
details.bridge-fold[open] > summary.bridge-summary { border-bottom: 1px solid var(--line-2); background: var(--card); }
.bridge-meta { font-size: 12px; color: var(--ink-3); }
.bridge-body { padding: 10px 14px 12px; background: var(--card); }

/* ④ 叙事 vs 报表：三列核对矩阵 + 琥珀色「报表盲点雷达」框 */
table.data.narrative-table th,
table.data.narrative-table td { vertical-align: top; padding: 10px 12px; font-size: 13.5px; line-height: 1.6; }
table.data.narrative-table th:first-child,
table.data.narrative-table td:first-child { position: static; width: 34%; }
table.data.narrative-table th:nth-child(2),
table.data.narrative-table td:nth-child(2) { width: 42%; }
table.data.narrative-table th:nth-child(3),
table.data.narrative-table td:nth-child(3) { width: 24%; }
.verdict-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 12px;
  font-weight: 650;
  padding: 2px 8px;
  border-radius: 6px;
  margin-right: 4px;
  white-space: nowrap;
}
.verdict-badge.pos { color: var(--pos); background: var(--pos-tint); border: 1px solid var(--pos-border); }
.verdict-badge.mid { color: var(--brass-ink); background: var(--brass-tint); border: 1px solid var(--brass-border); }
.verdict-badge.neg { color: var(--neg); background: var(--neg-tint); border: 1px solid var(--neg-border); }
.verdict-note { display: block; margin-top: 4px; color: var(--ink-2); font-size: 13px; line-height: 1.55; }
.blindspot-box {
  margin-top: 14px;
  border: 1px solid var(--brass-border);
  border-left: 4px solid var(--brass);
  border-radius: 8px;
  background: var(--brass-tint);
  padding: 12px 16px;
}
.blindspot-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 6px; }
.blindspot-badge {
  font: 700 11.5px/1.2 var(--sans);
  color: #fff;
  background: var(--brass);
  padding: 3px 8px;
  border-radius: 4px;
  letter-spacing: 0.03em;
}
.blindspot-title { font-size: 13.5px; font-weight: 650; color: var(--brass-ink); }
.blindspot-body { font-size: 14px; color: var(--ink); line-height: 1.65; }
.blindspot-body p:last-child, .blindspot-body ul:last-child { margin-bottom: 0; }

/* ⑤ 对投资逻辑的影响：左右多空双栏天平 */
.impact-balance { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.impact-balance.single { grid-template-columns: minmax(0, 1fr); }
.impact-col {
  border: 1px solid var(--line);
  border-radius: 9px;
  padding: 14px 16px;
  background: var(--card-2);
}
.impact-col.bull {
  border-top: 3px solid var(--pos);
  background: linear-gradient(180deg, var(--pos-tint) 0%, var(--card-2) 54px);
}
.impact-col.bear {
  border-top: 3px solid var(--neg);
  background: linear-gradient(180deg, var(--neg-tint) 0%, var(--card-2) 54px);
}
.impact-col-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 10px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--line-2);
  font-size: 14px;
  font-weight: 650;
  color: var(--ink);
}
.impact-pill {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font: 700 11.5px/1.2 var(--sans);
  padding: 3px 8px;
  border-radius: 5px;
}
.impact-pill.bull, .impact-pill.pos { color: var(--pos); background: var(--pos-tint); border: 1px solid var(--pos-border); }
.impact-pill.bear, .impact-pill.neg { color: var(--neg); background: var(--neg-tint); border: 1px solid var(--neg-border); }
.impact-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.impact-list > li {
  margin: 0;
  padding: 9px 11px;
  background: var(--card);
  border: 1px solid var(--line-2);
  border-radius: 7px;
  font-size: 13.8px;
  line-height: 1.6;
}
.impact-verdict {
  margin-top: 12px;
  border: 1px solid var(--line);
  border-left: 3.5px solid var(--brand);
  border-radius: 8px;
  background: var(--card-2);
  padding: 11px 15px;
}
.impact-verdict-head { font-size: 12.5px; font-weight: 700; color: var(--brand); letter-spacing: 0.03em; margin-bottom: 4px; }
.impact-verdict-body { font-size: 14px; color: var(--ink); line-height: 1.62; }
.impact-verdict-body p:last-child { margin-bottom: 0; }

/* ⑥ 基本面档案（profile.html）：三层风险传导卡片 + 图表看板区 + 变更时间线 */
.takeaway-card:target {
  outline: 2px solid var(--brass);
  outline-offset: 1px;
  background: var(--brass-tint);
}
.dim-intro {
  margin-bottom: 12px;
  padding: 9px 13px;
  background: var(--card-2);
  border-left: 3px solid var(--brand);
  border-radius: 0 7px 7px 0;
  font-size: 14px;
  color: var(--ink-2);
}
.dim-intro p:last-child { margin-bottom: 0; }
.risk-chain {
  font-size: 14px;
  color: var(--ink);
  line-height: 1.62;
  font-weight: 500;
}
.risk-arrow {
  display: inline-block;
  color: var(--neg);
  font-weight: 700;
  padding: 0 2px;
  font-family: var(--sans);
}
.risk-meta {
  display: flex;
  flex-direction: column;
  gap: 5px;
  margin-top: 8px;
  padding-top: 8px;
  border-top: 1px dashed var(--line);
}
.risk-meta-row {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  font-size: 13px;
  line-height: 1.56;
  color: var(--ink-2);
}
.risk-tag {
  flex: 0 0 auto;
  font: 700 11px/1.2 var(--sans);
  padding: 2px 6px;
  border-radius: 4px;
  margin-top: 2px;
  color: var(--ink-2);
  background: var(--card-2);
  border: 1px solid var(--line);
}
.risk-tag.track {
  color: var(--brass-ink);
  background: var(--brass-tint);
  border-color: var(--brass-border);
}
.risk-meta-txt { flex: 1 1 auto; min-width: 0; }
.biz-charts, .portrait-charts {
  padding: 14px 16px;
  background: var(--card-2);
  border: 1px solid var(--line);
  border-radius: 9px;
}
.changelog-prose ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.chglog-li {
  display: flex;
  align-items: baseline;
  gap: 12px;
  padding: 8px 12px;
  background: var(--card-2);
  border: 1px solid var(--line-2);
  border-radius: 7px;
  margin: 0 !important;
}
.chglog-date {
  flex: 0 0 auto;
  font: 600 12px/1.4 var(--mono);
  color: var(--brand);
  background: var(--brand-tint);
  border: 1px solid var(--brand-border);
  padding: 2px 8px;
  border-radius: 5px;
  white-space: nowrap;
}
.chglog-body {
  flex: 1 1 auto;
  font-size: 13.8px;
  color: var(--ink-2);
  line-height: 1.58;
}
.event-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.event-item {
  padding: 12px 14px;
  background: var(--card-2);
  border: 1px solid var(--line-2);
  border-radius: 8px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.event-head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
}
.event-title {
  font-size: 14.5px;
  color: var(--ink);
}
.event-src {
  margin-left: auto;
  text-decoration: none;
}
.event-src:hover {
  text-decoration: underline;
}
.event-body {
  font-size: 13.8px;
  color: var(--ink-2);
  line-height: 1.6;
}
.event-foot {
  display: flex;
  align-items: baseline;
  gap: 8px;
  font-size: 13px;
  color: var(--ink-2);
}

@media (max-width: 720px) {
  .breakdown-dims, .impact-balance { grid-template-columns: minmax(0, 1fr); }
  .chglog-li { flex-direction: column; gap: 4px; }
  table.data.narrative-table th:first-child, table.data.narrative-table td:first-child,
  table.data.narrative-table th:nth-child(2), table.data.narrative-table td:nth-child(2),
  table.data.narrative-table th:nth-child(3), table.data.narrative-table td:nth-child(3) { width: auto; }
}

/* ---------- ⑦ 多公司专题横向对比（comparisons/） ---------- */
.comp-link-pill {
  color: var(--brass-ink) !important;
  background: var(--brass-tint) !important;
  border: 1px solid var(--brass-border) !important;
  font-weight: 650;
  text-decoration: none;
  transition: background-color 0.15s, border-color 0.15s;
}
.comp-link-pill:hover {
  background: var(--brass) !important;
  color: #fff !important;
  text-decoration: none;
}

.comp-home-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
}
@media (max-width: 860px) {
  .comp-home-grid {
    grid-template-columns: 1fr;
  }
}
.comp-home-card {
  display: flex;
  flex-direction: column;
  gap: 12px;
  min-width: 0;
  overflow: hidden;
  background: var(--card);
  border: 1px solid var(--line);
  border-top: 3px solid var(--brand);
  border-radius: var(--radius);
  box-shadow: var(--shadow-sm);
  padding: 20px 22px 18px;
  color: var(--ink);
  text-decoration: none;
  transition: border-color 0.15s, box-shadow 0.15s, transform 0.15s;
}
.comp-home-card:hover {
  border-color: var(--brass);
  border-top-color: var(--brand);
  box-shadow: 0 8px 24px rgba(16, 38, 29, 0.09);
  transform: translateY(-1px);
  text-decoration: none;
}
.comp-home-top {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.comp-cal-pill {
  font: 600 11.5px/1.3 var(--mono);
  color: var(--brand);
  background: var(--brand-tint);
  border: 1px solid var(--brand-border);
  border-radius: 5px;
  padding: 2px 7px;
}
.comp-home-title {
  font: 700 18.5px/1.4 var(--serif);
  color: var(--ink);
}
.comp-home-card:hover .comp-home-title {
  color: var(--brand);
}
.comp-home-sub {
  font-size: 13.5px;
  color: var(--ink-2);
  line-height: 1.65;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.comp-home-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-top: auto;
  padding-top: 12px;
  border-top: 1px dashed var(--line);
  flex-wrap: wrap;
}
.comp-home-tickers {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.comp-tk-chip {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 3px 8px;
  border-radius: 6px;
  background: var(--card-2);
  border: 1px solid var(--line);
  font-size: 12.5px;
}
.comp-tk-chip[data-mkt="CN"] { --mkt: var(--mkt-cn); }
.comp-tk-chip[data-mkt="HK"] { --mkt: var(--mkt-hk); }
.comp-tk-chip[data-mkt="US"] { --mkt: var(--mkt-us); }
.comp-home-cta {
  font-size: 13px;
  font-weight: 650;
  color: var(--brand);
  white-space: nowrap;
  margin-left: auto;
}
.comp-home-card:hover .comp-home-cta {
  color: var(--brass-ink);
}

.comp-head-badges {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  margin-bottom: 8px;
}
.comp-verdict-strip {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 12px;
  margin-bottom: 14px;
}
.comp-verdict-card {
  background: var(--brass-tint);
  border: 1px solid var(--brass-border);
  border-left: 3.5px solid var(--brass);
  border-radius: 8px;
  padding: 10px 14px;
}
.comp-vc-top {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px;
  flex-wrap: wrap;
}
.comp-vc-label {
  font-size: 13.5px;
  font-weight: 700;
  color: var(--brass-ink);
}
.comp-vc-tk {
  font-size: 13px;
  font-weight: 650;
  color: var(--ink);
  text-decoration: none;
}
.comp-vc-tk:hover { color: var(--brand); }
.comp-vc-note {
  font-size: 12.5px;
  color: var(--ink-2);
  margin-top: 3px;
  line-height: 1.45;
}

.comp-roster {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
}
.comp-roster.cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.comp-roster.cols-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.comp-co-card {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 16px 18px;
  border-top: 3px solid var(--brand);
  margin-top: 0;
}
.comp-co-card[data-mkt="CN"] { --mkt: var(--mkt-cn); }
.comp-co-card[data-mkt="HK"] { --mkt: var(--mkt-hk); }
.comp-co-card[data-mkt="US"] { --mkt: var(--mkt-us); }
.comp-co-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  flex-wrap: wrap;
}
.comp-co-title {
  display: flex;
  align-items: center;
  gap: 7px;
}
.comp-co-name {
  font: 700 18px/1.25 var(--serif);
  color: var(--ink);
  text-decoration: none;
}
.comp-co-name:hover { color: var(--brand); }
.comp-co-verdict-pill {
  font-size: 11px;
  font-weight: 700;
  color: var(--brass);
  background: var(--brass-tint);
  border: 1px solid color-mix(in srgb, var(--brass) 35%, transparent);
  padding: 2px 8px;
  border-radius: 999px;
  white-space: nowrap;
}
.comp-co-role-bar {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 3px;
  min-height: 66px;
  background: var(--card-2);
  border-left: 3px solid var(--brass);
  padding: 7px 11px;
  border-radius: 0 6px 6px 0;
}
.comp-co-role-txt {
  font-size: 13px;
  font-weight: 600;
  color: var(--ink);
  line-height: 1.45;
}
.comp-co-q {
  font-size: 11.5px;
  color: var(--ink-3);
}
.comp-co-role {
  font-size: 13px;
  color: var(--ink-2);
  background: var(--card-2);
  border-left: 3px solid var(--brass);
  padding: 6px 10px;
  border-radius: 0 6px 6px 0;
  line-height: 1.5;
}
.comp-co-period {
  display: flex;
  flex-direction: column;
  gap: 2px;
  font-size: 12px;
  color: var(--ink-3);
  padding-bottom: 6px;
  border-bottom: 1px solid var(--line-2);
}
.comp-co-kpis {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px 10px;
  font-size: 12px;
  color: var(--ink-2);
}
.comp-co-kpis b {
  display: block;
  font-size: 13.5px;
  color: var(--ink);
  font-variant-numeric: tabular-nums;
  margin-top: 2px;
}
.comp-co-kpis small.pos { color: var(--pos); font-weight: 600; }
.comp-co-kpis small.neg { color: var(--neg); font-weight: 600; }
.comp-co-links {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 6px;
  margin-top: auto;
  padding-top: 8px;
  border-top: 1px dashed var(--line);
  font-size: 12px;
  font-weight: 600;
  white-space: nowrap;
}

.comp-th-sub {
  font-size: 11px;
  font-weight: 400;
  color: var(--ink-3);
  font-family: var(--mono);
  margin-top: 2px;
}
.comp-scoreboard td.best-cell {
  background: var(--brand-tint);
  font-weight: 650;
}
.best-mark {
  display: inline-block;
  font-size: 10.5px;
  color: var(--brand);
  margin-left: 3px;
  vertical-align: 1px;
}
.comp-best-dot {
  display: inline-block;
  font-size: 11.5px;
  font-weight: 650;
  color: var(--brand);
  background: var(--brand-tint);
  border: 1px solid var(--brand-border);
  border-radius: 4px;
  padding: 0 5px;
  margin: 0 2px;
}
.comp-cell-sub {
  font-size: 11.5px;
  font-weight: 400;
  color: var(--ink-3);
  font-variant-numeric: tabular-nums;
  margin-top: 1px;
}
.comp-table-note {
  padding: 9px 16px;
  font-size: 12px;
  color: var(--ink-3);
  background: var(--card-2);
  border-top: 1px solid var(--line-2);
  line-height: 1.5;
}
.comp-appendix-body { padding: 12px 14px 14px; }
.comp-appendix-body .card { margin: 0 0 12px; }
.comp-appendix-body .card:last-child { margin-bottom: 0; }
.comp-appendix-body .card-head { flex-wrap: wrap; }
.comp-appendix-body .card-head h3 { margin: 0; font-size: 15px; }
table.data.comp-tone-table { table-layout: fixed; width: 100%; }
table.data.comp-tone-table th,
table.data.comp-tone-table td {
  text-align: left;
  white-space: normal;
  vertical-align: top;
  padding: 9px 11px;
}
table.data.comp-tone-table th:first-child,
table.data.comp-tone-table td:first-child { width: 96px; }
.comp-tone-rat {
  font-size: 12px;
  font-weight: 400;
  line-height: 1.45;
  margin-top: 3px;
  opacity: 0.92;
  white-space: normal;
}

.comp-thesis-box {
  background: var(--card);
  border: 1px solid var(--brand-border);
  border-left: 4px solid var(--brand);
  border-radius: var(--radius);
  padding: 20px 24px;
  margin-bottom: 18px;
  box-shadow: var(--shadow-sm);
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.comp-thesis-q, .comp-thesis-v {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  line-height: 1.7;
}
.comp-thesis-q p {
  margin: 0;
  font: 650 15.5px/1.65 var(--serif);
  color: var(--ink);
}
.comp-thesis-v {
  padding-top: 13px;
  border-top: 1px dashed var(--line);
}
.comp-thesis-v p {
  margin: 0;
  font-size: 14.2px;
  line-height: 1.72;
  color: var(--ink-2);
}
.comp-thesis-tag {
  flex-shrink: 0;
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: 0.04em;
  padding: 3px 9px;
  border-radius: 5px;
  background: var(--brand-tint);
  color: var(--brand);
  border: 1px solid var(--brand-border);
  margin-top: 2px;
}
.comp-thesis-tag.verdict {
  background: var(--brass-tint);
  color: var(--brass);
  border-color: color-mix(in srgb, var(--brass) 35%, transparent);
}
.comp-co-highlights {
  display: grid;
  grid-auto-rows: 1fr;
  gap: 7px;
  font-size: 12.5px;
  flex: 1;
}
.comp-hl-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 7px 11px;
  background: var(--card-2);
  border-radius: 6px;
}
.comp-hl-lbl {
  font-size: 11.5px;
  color: var(--ink-3);
  font-weight: 600;
  flex-shrink: 0;
}
.comp-hl-val {
  font-size: 12.5px;
  color: var(--ink);
  line-height: 1.4;
  text-align: right;
  font-variant-numeric: tabular-nums;
}

/* 核心判断：双栏高留白决策卡片（标题 + 胜负胶囊 + 三家分列微行） */
.comp-takeaways .takeaway-cards {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}
.comp-takeaways .takeaway-card {
  margin: 0;
  background: var(--card);
  box-shadow: var(--shadow-sm);
  padding: 18px 20px;
  border-radius: 10px;
  display: flex;
  flex-direction: column;
  gap: 13px;
}
.comp-takeaways .takeaway-head {
  align-items: flex-start;
  gap: 11px;
  padding-bottom: 11px;
  border-bottom: 1px solid var(--line-2);
}
.comp-takeaways .takeaway-num {
  margin-top: 2px;
}
.comp-takeaways .takeaway-title {
  display: flex;
  flex-direction: column;
  gap: 6px;
  flex: 1;
}
.comp-takeaways .tk-main-title {
  font: 700 15.8px/1.38 var(--serif);
  color: var(--ink);
}
.comp-takeaways .tk-verdict-pill {
  display: inline-flex;
  align-self: flex-start;
  font: 600 12px/1.35 var(--sans);
  color: var(--brass-ink);
  background: var(--brass-tint);
  border: 1px solid color-mix(in srgb, var(--brass) 35%, transparent);
  border-radius: 6px;
  padding: 3px 9px;
}
.comp-takeaways .takeaway-bullets {
  margin: 0;
  padding-left: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.comp-takeaways .takeaway-bullets li {
  margin: 0;
  padding: 8px 11px;
  background: var(--card-2);
  border: 1px solid var(--line-2);
  border-radius: 7px;
  display: flex;
  align-items: baseline;
  gap: 10px;
  font-size: 13.2px;
  line-height: 1.55;
}
.comp-takeaways .takeaway-bullets li::before {
  display: none;
}
.comp-takeaways .tk-b-tag {
  flex-shrink: 0;
  min-width: 48px;
  text-align: center;
  font-size: 11.5px;
  font-weight: 700;
  color: var(--brand);
  background: var(--brand-tint);
  border: 1px solid var(--brand-border);
  border-radius: 5px;
  padding: 2px 7px;
}
.comp-takeaways .tk-b-txt {
  flex: 1;
  color: var(--ink-2);
}

/* 核心争议拆解与掌门人对质：全宽通栏卡片 + 内部三列横向并排对比 */
.comp-bg-stack {
  display: flex;
  flex-direction: column;
  gap: 18px;
}
.comp-bg-card {
  padding: 20px 24px;
  border-top: 3px solid var(--brand);
}
.comp-bg-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  flex-wrap: wrap;
  padding-bottom: 13px;
  margin-bottom: 14px;
  border-bottom: 1px solid var(--line-2);
}
.comp-bg-title {
  display: flex;
  align-items: center;
  gap: 10px;
}
.comp-bg-num {
  font: 700 12px/1 var(--mono);
  padding: 4px 8px;
  border-radius: 5px;
  background: var(--brand-tint);
  color: var(--brand);
  border: 1px solid var(--brand-border);
  flex-shrink: 0;
}
.comp-bg-title h3 {
  margin: 0;
  font: 700 16.5px/1.38 var(--serif);
  color: var(--ink);
}
.comp-bg-verdict-pill {
  font-size: 12.2px;
  font-weight: 650;
  color: var(--brass-ink);
  background: var(--brass-tint);
  border: 1px solid color-mix(in srgb, var(--brass) 38%, transparent);
  border-radius: 999px;
  padding: 4px 12px;
  line-height: 1.35;
}
.comp-bg-lead {
  font-size: 13.8px;
  line-height: 1.68;
  color: var(--ink);
  background: var(--card-2);
  border-left: 3px solid var(--brass);
  padding: 10px 15px;
  border-radius: 0 6px 6px 0;
  margin-bottom: 16px;
}
.comp-bg-body > ul,
.comp-bg-body > ul.dim-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
}
.comp-bg-body > ol,
.comp-bg-body > ol.dim-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
  counter-reset: bg-ol;
}
.comp-bg-body > ul > li,
.comp-bg-body > ol > li {
  background: var(--card-2);
  border: 1px solid var(--line);
  border-radius: 9px;
  padding: 15px 17px;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 9px;
}
.comp-bg-body > ul > li::before,
.comp-bg-body > ol > li::before {
  display: none !important;
}
.comp-bg-body > ul > li .li-head,
.comp-bg-body > ol > li .li-head {
  font-size: 13.5px;
  line-height: 1.4;
  color: var(--brand);
  padding-bottom: 8px;
  border-bottom: 1px dashed var(--line);
}
.comp-bg-body > ul > li .li-head.has-co-tag {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  flex-wrap: wrap;
  padding-bottom: 9px;
  border-bottom: 1px solid var(--line-2);
}
.comp-bg-body > ul > li .li-co-name {
  font-size: 14.5px;
  font-weight: 700;
  color: var(--ink);
}
.comp-bg-body > ul > li .li-co-tag {
  font-size: 11.5px;
  font-weight: 600;
  color: var(--brand);
  background: var(--brand-tint);
  border: 1px solid var(--brand-border);
  border-radius: 5px;
  padding: 2px 8px;
}
.comp-bg-body > ul > li .li-body,
.comp-bg-body > ol > li .li-body {
  font-size: 13.2px;
  line-height: 1.7;
  color: var(--ink-2);
}
.comp-matrix-card table.data td,
.comp-matrix-card table.data th {
  padding: 11px 14px;
  line-height: 1.58;
}

@media (max-width: 960px) {
  .comp-roster, .comp-roster.cols-2, .comp-roster.cols-4, .comp-home-grid,
  .comp-takeaways .takeaway-cards,
  .comp-bg-body > ul, .comp-bg-body > ul.dim-list,
  .comp-bg-body > ol, .comp-bg-body > ol.dim-list {
    grid-template-columns: minmax(0, 1fr);
  }
  .comp-thesis-q, .comp-thesis-v {
    flex-direction: column;
    gap: 6px;
  }
}

/* ---- 全库横评总表（表观 vs 实际市盈率 / ROIC 排名） ---- */
.comp-jump-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}
.comp-jump-pill {
  display: inline-flex;
  align-items: center;
  padding: 6px 12px;
  border-radius: 999px;
  font-size: 12.5px;
  font-weight: 600;
  color: var(--brand);
  background: var(--brand-tint);
  border: 1px solid var(--brand-border);
  text-decoration: none;
  transition: background 0.15s, border-color 0.15s;
}
.comp-jump-pill:hover {
  border-color: var(--brass);
  text-decoration: none;
}
.lb-section {
  border-top: 3px solid var(--brand);
}
.lb-head {
  margin-bottom: 14px;
}
.lb-desc {
  margin: 6px 0 0;
  font-size: 13.2px;
  line-height: 1.65;
  color: var(--ink-2);
}
.lb-kpi-strip {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  margin-bottom: 14px;
}
.lb-kpi-strip.lb-kpi-4 {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
.lb-kpi-card {
  padding: 12px 14px;
  border-radius: var(--radius-sm);
  border: 1px solid var(--line);
  background: var(--bg-soft);
}
.lb-kpi-card.pos {
  border-left: 3px solid var(--pos);
}
.lb-kpi-card.warn {
  border-left: 3px solid var(--brass);
}
.lb-kpi-card.neutral {
  border-left: 3px solid var(--brand);
}
.lb-kpi-title {
  font-size: 12px;
  font-weight: 600;
  color: var(--muted);
}
.lb-kpi-val {
  font-size: 18px;
  margin: 4px 0;
  color: var(--ink);
}
.lb-kpi-val b {
  font-size: 22px;
  font-variant-numeric: tabular-nums;
}
.lb-kpi-sub {
  font-size: 12px;
  line-height: 1.5;
  color: var(--ink-2);
}
.lb-toolbar {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  align-items: center;
  gap: 8px 14px;
  margin-bottom: 10px;
}
.lb-cap-sub {
  font-size: 11px;
  color: var(--muted);
  font-weight: 400;
  line-height: 1.3;
  margin-top: 2px;
}
.lb-sort-arrow {
  display: inline-block;
  margin-left: 2px;
  font-weight: 700;
}
.lb-table th.lb-sortable {
  cursor: pointer;
  user-select: none;
  transition: color 0.15s ease, background-color 0.15s ease;
}
.lb-table th.lb-sortable:hover {
  color: var(--brand);
  background: var(--brand-tint);
}
.lb-table th.lb-sortable::after {
  content: " ↕";
  font-size: 11px;
  opacity: 0.35;
}
.lb-table th.lb-sortable[data-sort-state="asc"] {
  color: var(--brand);
}
.lb-table th.lb-sortable[data-sort-state="asc"]::after {
  content: " ↑";
  opacity: 1;
  font-weight: 700;
}
.lb-table th.lb-sortable[data-sort-state="desc"] {
  color: var(--brand);
}
.lb-table th.lb-sortable[data-sort-state="desc"]::after {
  content: " ↓";
  opacity: 1;
  font-weight: 700;
}
.lb-table th,
.lb-table td {
  white-space: nowrap;
  vertical-align: middle;
}
.lb-co-cell {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.lb-diag-cell {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.lb-note {
  font-size: 12.2px;
  color: var(--ink-2);
}
.lb-rank {
  display: inline-block;
  min-width: 28px;
  text-align: center;
  font-weight: 700;
  padding: 2px 6px;
  border-radius: 4px;
  font-size: 12px;
}
.lb-rank.tier-1 {
  background: var(--brand-tint);
  color: var(--brand);
  border: 1px solid var(--brand-border);
}
.lb-rank.tier-2 {
  background: var(--bg-soft);
  color: var(--ink);
}
.lb-footnote {
  margin-top: 14px;
  padding: 12px 16px;
  border-radius: var(--radius-sm);
  background: var(--bg-soft);
  border: 1px dashed var(--line);
  font-size: 12.8px;
  line-height: 1.65;
  color: var(--ink-2);
}
.lb-footnote-title {
  font-weight: 700;
  color: var(--ink);
  margin-bottom: 4px;
}
.lb-footnote ul {
  margin: 4px 0 0;
  padding-left: 18px;
}
@media (max-width: 960px) {
  .lb-kpi-strip,
  .lb-kpi-strip.lb-kpi-4 {
    grid-template-columns: 1fr;
  }
}
