/* TextRadar v0.2 demo — Swiss-light, 读看分离 */

@import url("tokens.css");

* { box-sizing: border-box; }

html, body {
  margin: 0; padding: 0;
  background: var(--bg); color: var(--fg);
  font-family: -apple-system, BlinkMacSystemFont, "Helvetica Neue",
               "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
  font-size: 14px;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  line-height: 1.45;
}

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

.wrap {
  max-width: 1320px;
  margin: 0 auto;
  padding: 0 24px;
}

/* ================== TOP BAR ================== */
.topbar {
  border-bottom: 2px solid var(--line-strong);
  background: var(--bg);
  position: sticky; top: 0; z-index: 50;
  box-shadow: 0 1px 0 rgba(0,0,0,0.02);
}
.topbar-inner {
  max-width: 1320px;
  margin: 0 auto;
  padding: 0 24px;
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: stretch;
  gap: 24px;
  height: 66px;
}
.brand {
  display: flex; flex-direction: row; align-items: center;
  color: var(--fg);
  gap: 8px;
}
.brand-mark {
  display: inline-block;
  width: 4px; height: 22px;
  background: var(--accent);
}
.brand-text {
  font-weight: 800; letter-spacing: 0.06em; font-size: 15px;
}
.nav {
  display: flex; align-items: stretch;
  gap: 0;
}
.nav-tab {
  display: flex; align-items: center; gap: 8px;
  padding: 0 18px;
  color: var(--fg-soft);
  font-size: 13.5px;
  font-weight: 500;
  position: relative;
  transition: color 0.1s;
}
.nav-tab:hover { color: var(--accent); text-decoration: none; }
.nav-tab.active {
  color: var(--accent);
  font-weight: 700;
}
.nt-icon { font-size: 16px; color: var(--accent); opacity: 0.85; }
.nt-date {
  font-size: 10px;
  color: var(--fg-mute);
  font-family: "SF Mono", Menlo, monospace;
  font-variant-numeric: tabular-nums;
  padding: 1px 6px;
  background: var(--bg-strong);
  margin-left: 4px;
}
.nav-tab.active .nt-date { background: var(--accent-soft); color: var(--accent); }

.meta-build {
  font-size: 11px;
  color: var(--fg-mute);
  font-variant-numeric: tabular-nums;
  font-family: "SF Mono", Menlo, monospace;
  align-self: center;
}

/* ================== MACRO STRIP ================== */
.macro-strip {
  border-bottom: 1px solid var(--line);
  background: var(--bg-soft);
}
.macro-inner {
  max-width: 1320px;
  margin: 0 auto;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(10, 1fr);
}
@media (max-width: 980px) {
  .macro-inner { grid-template-columns: repeat(5, 1fr); }
  .macro-inner > .macro-cell:nth-child(n+6) { border-top: 1px solid var(--line); }
}
.macro-cell {
  padding: 10px 12px;
  border-right: 1px solid var(--line);
  min-width: 0;
}
.macro-cell:last-child { border-right: none; }
.macro-cell[data-tier="primary"] .macro-value {
  font-weight: 700;
}
.macro-cell[data-tier="secondary"] .macro-value {
  font-size: 14px;
  color: var(--fg-soft);
  font-weight: 500;
}
.macro-cell[data-tier="secondary"] .macro-label {
  color: var(--fg-mute);
}
.macro-label {
  font-size: 11px;
  color: var(--fg-mute);
  letter-spacing: 0.02em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.macro-value-row {
  display: flex; align-items: baseline; gap: 6px;
  margin-top: 2px;
  min-width: 0;
  white-space: nowrap;
  overflow: hidden; text-overflow: ellipsis;
}
.macro-value {
  font-size: 16px; font-weight: 600;
  font-variant-numeric: tabular-nums;
  font-family: "Songti SC", "STSong", Georgia, serif;  /* 报纸财经版气质 */
  letter-spacing: 0;
}
.macro-change {
  font-size: 11px;
  font-variant-numeric: tabular-nums;
  font-family: "SF Mono", Menlo, monospace;
}
.macro-change.up   { color: #1e7b1e; }
.macro-change.down { color: var(--accent); }
.macro-change.flat { color: var(--fg-mute); }

/* ================== LAYOUT INDEX ================== */
.layout-index {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 320px;
  gap: 32px;
  padding-top: 24px;
  padding-bottom: 48px;
}
@media (max-width: 980px) { .layout-index { grid-template-columns: 1fr; } }

/* ================== HOT FEED ================== */
.section-head {
  display: flex; justify-content: space-between; align-items: baseline;
  border-bottom: 1px solid var(--line-strong);
  padding-bottom: 6px; margin-bottom: 10px;
}
.section-head h2 {
  margin: 0; font-size: 20px; font-weight: 700; letter-spacing: 0.01em;
}
.section-meta { font-size: 11.5px; color: var(--fg-mute); }
.section-meta strong { color: var(--fg-soft); }

/* ---------- Lede(今日头条 / 头版头条 — 压缩单行 + 可展开) ---------- */
.lede {
  border: 1px solid var(--line);
  border-left: 3px solid var(--accent);
  background: var(--bg-soft);
  padding: 8px 14px;
  margin: 0 0 10px 0;
}
.lede.has-detail .lede-row { cursor: pointer; }
.lede-row {
  display: flex; align-items: baseline; gap: 10px;
  font-size: 13.5px; line-height: 1.5;
}
.lede-stars {
  font-size: 12px; letter-spacing: -1px;
  flex-shrink: 0; white-space: nowrap;
}
.lede-stars-on  { color: var(--fg-mute); }
.lede-stars[data-stars="4"] .lede-stars-on,
.lede-stars[data-stars="5"] .lede-stars-on { color: var(--accent); }
.lede-stars-off { color: var(--line); }
.lede-title {
  font-family: "Songti SC", "STSong", Georgia, serif;
  font-size: 16px; font-weight: 700; line-height: 1.4;
  color: var(--fg);
  text-decoration: none;
  flex: 1;
  min-width: 0;
}
.lede-title:hover { color: var(--accent); }
.lede-srcct {
  font-family: "SF Mono", Menlo, monospace;
  font-size: 11px; color: var(--fg-soft);
  flex-shrink: 0;
}
.lede-meta {
  display: flex; align-items: baseline; gap: 6px;
  font-size: 11.5px; color: var(--fg-mute);
  flex-shrink: 0; white-space: nowrap;
}
.lede-cat { color: currentColor; font-weight: 600; }
.lede-sep { color: var(--line); }
.lede-time time {
  font-family: "SF Mono", Menlo, monospace;
  font-variant-numeric: tabular-nums;
}
.lede-toggle {
  color: var(--fg-mute); font-size: 11px;
  flex-shrink: 0;
  transition: transform 0.15s;
}
.lede.expanded .lede-toggle { transform: rotate(180deg); }
.lede-detail {
  display: none;
  margin: 6px 0 2px;
  padding-left: 70px;  /* 与 stars 视觉对齐(stars + gap ≈ 70px) */
}
.lede.expanded .lede-detail { display: block; }
.lede-summary {
  font-size: 13px; line-height: 1.65; color: var(--fg-soft);
  margin: 0 0 6px 0;
}
.lede-srclist {
  color: var(--fg-soft);
  font-family: "SF Mono", Menlo, monospace;
  font-size: 10.5px;
}
@media (max-width: 720px) {
  .lede-detail { padding-left: 0; }
  .lede-meta { font-size: 10.5px; }
}

/* ---------- Daybreak divider(时间分桶) ---------- */
.daybreak {
  display: flex; align-items: center; gap: 14px;
  list-style: none;
  margin: 18px 0 12px;
  padding: 0;
  font-size: 10.5px; letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--fg-mute);
}
.daybreak::before,
.daybreak::after {
  content: ""; flex: 1; height: 1px; background: var(--line);
}
.daybreak span { white-space: nowrap; padding: 0 4px; }
.daybreak:first-child { margin-top: 4px; }

.cat-tabs {
  display: flex; flex-wrap: wrap; gap: 4px;
  margin: 0 0 12px 0;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--line);
}
.cat-tab {
  background: transparent;
  border: 1px solid var(--line);
  padding: 4px 12px;
  font-size: 12px;
  color: var(--fg-soft);
  cursor: pointer;
  font-family: inherit;
  display: flex; align-items: center; gap: 6px;
  transition: all 0.1s;
}
.cat-tab:hover { border-color: var(--fg-soft); color: var(--fg); }
.cat-tab:hover:not(.active) { border-color: var(--accent); color: var(--accent); }
.cat-tab.active {
  background: var(--fg);
  color: var(--bg);
  border-color: var(--fg);
}
.ct-num {
  font-size: 10px;
  font-variant-numeric: tabular-nums;
  font-family: "SF Mono", Menlo, monospace;
  opacity: 0.7;
}
.cat-tab.active .ct-num { opacity: 0.85; }

.cluster-list { list-style: none; margin: 0; padding: 0; }
.cluster {
  border-bottom: 1px solid var(--line);
  padding: 6px 0;
}
.cluster:hover { background: var(--bg-soft); }
.cluster-row {
  display: grid;
  grid-template-columns: 78px 64px 1fr auto;
  align-items: start;
  gap: 12px;
  font-size: 13.5px;
  line-height: 1.45;
}
.cluster.has-detail .cluster-row { cursor: pointer; }
/* 切类后:cat 列隐藏,grid 改 3 列,cluster-detail margin 缩到 90px(78 time + 12 gap) */
.hotfeed.cat-filtered .cl-cat { display: none; }
.hotfeed.cat-filtered .cluster-row {
  grid-template-columns: 78px 1fr auto;
}
.hotfeed.cat-filtered .cluster-detail {
  margin-left: 90px;
}
/* sub-stat 行:切类后顶部出现,简短上下文反馈 */
.cat-sub-stat {
  font-size: 11.5px;
  color: var(--fg-mute);
  padding: 4px 0 10px 2px;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.01em;
}
/* cl-title-cell: title 占 1fr,srcct 角标紧贴 title 末尾(inline),不再占独立 grid 列 —
   解决 stars 因 srcct 占位左右跳的问题。 */
.cl-title-cell {
  min-width: 0;  /* 让 inline 内容可换行不溢出 */
}
.cl-time {
  font-family: "SF Mono", Menlo, monospace;
  font-size: 11px; color: var(--fg-mute);
  font-variant-numeric: tabular-nums;
  padding-top: 2px;
  white-space: nowrap;
  display: block;
  text-align: right;  /* 短 HH:MM 贴右边,与首行 MM-DD HH:MM 末尾对齐(报纸表格梯子) */
}
.cl-cat {
  font-size: 10px;
  letter-spacing: 0.05em;
  padding: 1px 6px;
  border: 1px solid currentColor;
  align-self: start;
  margin-top: 1px;
  white-space: nowrap; text-align: center;
}
.cluster.cat-frontier_tech .cl-cat { color: var(--cat-frontier_tech); }
.cluster.cat-web3 .cl-cat          { color: var(--cat-web3); }
.cluster.cat-us_markets .cl-cat    { color: var(--cat-us_markets); }
.cluster.cat-geopolitics .cl-cat   { color: var(--cat-geopolitics); }
.cluster.cat-other_major .cl-cat   { color: var(--cat-other_major); }
.cl-title { color: var(--fg); font-weight: 500; }
.cl-title:hover { color: var(--accent); text-decoration: none; }
/* Sprint 2 排印分层:top 5 by weighted_score 加粗放大,16+ 灰阶降一档 */
.cluster.rank-top .cl-title { font-size: 15px; font-weight: 700; }
.cluster.rank-top .cl-srcct { color: var(--fg-soft); font-weight: 600; }
.cluster.rank-lower .cl-title { color: var(--fg-soft); }
.cluster.rank-lower .cl-cat { opacity: 0.7; }
.cluster.rank-lower .cl-stars-off,
.cluster.rank-lower .cl-stars-on { opacity: 0.7; }
/* srcct 作为 title 末尾角标:浅色小字,inline 紧贴 title,不抢 stars 位置 */
.cl-srcct {
  font-size: 10.5px;
  color: var(--fg-mute);
  margin-left: 6px;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0;
  vertical-align: 1px;
}
/* 永远渲染 5 颗:on 实色 + off 浅灰,固定 56px 容纳 5 颗 11px 星(实测占 ~52px),
   amazon 5-star 风格 — 第 1/5 颗在每行完全同一位置。 */
.cl-stars {
  font-size: 11px; letter-spacing: -1px;
  width: 56px; text-align: left;
  white-space: nowrap;
}
/* Sprint 2 朱红降地毯:默认星灰阶,仅 ≥4★ 才上朱红(6.4% of N=125)*/
.cl-stars-on  { color: var(--fg-mute); }
.cl-stars-off { color: var(--line); }
.cl-stars[data-stars="4"] .cl-stars-on,
.cl-stars[data-stars="5"] .cl-stars-on { color: var(--accent); }
/* cluster-detail:默认隐藏,.cluster.expanded 时显示。click row toggle,不再需要"展开"按钮独占一行。 */
.cluster-detail {
  display: none;
  margin: 4px 0 6px 154px;  /* 154 = 78 time + 64 cat + 12 gap*2,与 title 列对齐 */
  padding: 0;
}
.cluster.expanded .cluster-detail { display: block; }
.cl-original {
  font-size: 11px; color: var(--fg-mute);
  font-style: italic;
  padding: 2px 0;
}
.cl-summary {
  font-size: 12.5px; color: var(--fg-soft);
  line-height: 1.55;
  padding: 4px 0;
}
.cl-srclist {
  margin-top: 4px;
  display: flex; flex-wrap: wrap; gap: 4px;
}
.src-chip {
  font-size: 10px;
  background: var(--bg-soft);
  border: 1px solid var(--line);
  padding: 1px 6px;
  color: var(--fg-soft);
  font-family: "SF Mono", Menlo, monospace;
}

/* ================== SIDEBAR (D+E pulse panels) ================== */
:root {
  --gold: #b8862f;
  --gold-soft: rgba(184, 134, 47, 0.07);
}
.sidebar {
  display: flex; flex-direction: column; gap: 14px;
  position: sticky; top: 84px;
  max-height: calc(100vh - 110px);
  overflow-y: auto;
}
.card-pulse {
  border: 1px solid var(--line);
  background: var(--bg);
  padding: 14px 16px;
}
.pulse-head { margin-bottom: 12px; }
.pulse-head h3 {
  margin: 0 0 2px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--fg);
}
.pulse-meta { font-size: 10.5px; color: var(--fg-mute); }

.pulse-cat { margin-bottom: 6px; }
.pulse-cat[open] { margin-bottom: 12px; }
.pulse-cat:last-child { margin-bottom: 0; }
.pulse-cat > summary {
  list-style: none; cursor: pointer;
  display: flex; align-items: center; gap: 6px;
  padding-bottom: 4px; margin-bottom: 6px;
  border-bottom: 1px solid var(--line);
  font-size: 11px; font-weight: 600;
  letter-spacing: 0.06em; text-transform: uppercase;
}
.pulse-cat > summary:hover { color: var(--accent); }
.pulse-cat > summary::-webkit-details-marker { display: none; }
.pulse-cat > summary::before {
  content: "▸"; color: var(--fg-mute); font-size: 9px;
  margin-right: 2px;
}
.pulse-cat[open] > summary::before { content: "▾"; }
.pulse-cat-count {
  margin-left: auto;
  color: var(--fg-mute);
  font-family: "SF Mono", Menlo, monospace; font-size: 10px;
  font-weight: 400; letter-spacing: 0;
}
/* cat 颜色仍由 .pulse-cat-label.cat-X 规则覆盖(summary 已是 .pulse-cat-label) */
.pulse-cat-label.cat-frontier_tech { color: var(--cat-frontier_tech); }
.pulse-cat-label.cat-web3          { color: var(--cat-web3); }
.pulse-cat-label.cat-us_markets    { color: var(--cat-us_markets); }
.pulse-cat-label.cat-geopolitics   { color: var(--cat-geopolitics); }
.pulse-cat-label.cat-other_major   { color: var(--cat-other_major); }

.pulse-list { list-style: none; padding: 0; margin: 0; }
.pulse-item a {
  display: flex; align-items: baseline; gap: 8px;
  padding: 4px 0;
  color: var(--fg); text-decoration: none;
  font-size: 12px; line-height: 1.5;
}
.pulse-item a:hover .pulse-title { color: var(--accent); }
.pulse-rank {
  font-family: "SF Mono", Menlo, monospace;
  font-variant-numeric: tabular-nums;
  font-size: 10px; color: var(--fg-mute); min-width: 14px;
}
.pulse-title { flex: 1; color: var(--fg); font-weight: 500; }
.pulse-score {
  font-family: "SF Mono", Menlo, monospace;
  font-variant-numeric: tabular-nums;
  font-size: 10px; color: var(--fg-mute);
}
/* v5.1: 段 1 删 ≥4★ 朱红(每类 top 5 小池子里 ≥4★ 占比过高,失去信号意义)
   依赖三重信号:rank 编号 + score 数字 + 排序顺序;hover 仍朱红保留 affordance。
   data-stars 属性 HTML 保留,以后想换阈值方案随时可加回。 */

/* 段 2 本周热点 — .sidebar 整体 sticky,段 2 自然流跟段 1 后 */
.pulse-week-list { list-style: none; padding: 0; margin: 0; }
.pulse-week-item a {
  display: flex; align-items: baseline; gap: 8px;
  padding: 6px 0; color: var(--fg); text-decoration: none;
  font-size: 12px; line-height: 1.4;
  border-bottom: 1px solid var(--line);
}
.pulse-week-item:last-child a { border-bottom: none; }
.pulse-week-item a:hover .pulse-week-title { color: var(--accent); }
.pulse-week-title { flex: 1; color: var(--fg); font-weight: 500; }
.pulse-week-badge {
  font-family: "SF Mono", Menlo, monospace;
  font-variant-numeric: tabular-nums;
  font-size: 10px; color: var(--fg-mute); white-space: nowrap;
}
.pwb-days { color: var(--accent); font-weight: 600; }
.pwb-srcs { margin-left: 4px; }

/* 段 0 独家爆点 — 金色描边突出"被海啸压住的独家",2026-05-27 落地 */
.pulse-s0 {
  border-color: var(--gold);
  background: linear-gradient(180deg, var(--gold-soft) 0%, var(--bg) 70%);
}
.pulse-s0 .pulse-head h3 { color: var(--gold); }
.pulse-excl-list { list-style: none; padding: 0; margin: 0; }
.pulse-excl-item {
  padding: 6px 0;
  border-bottom: 1px solid var(--line);
}
.pulse-excl-item:last-child { border-bottom: none; }
.pulse-excl-item a {
  display: flex; align-items: baseline; gap: 8px;
  color: var(--fg); text-decoration: none;
  font-size: 12px; line-height: 1.4;
}
.pulse-excl-item a:hover .pulse-excl-title { color: var(--accent); }
.pulse-excl-rank {
  font-family: "SF Mono", Menlo, monospace;
  font-variant-numeric: tabular-nums;
  font-size: 10px; color: var(--gold); font-weight: 700; min-width: 14px;
}
.pulse-excl-title { flex: 1; color: var(--fg); font-weight: 600; }
/* 2026-05-29:独家爆点收成一行 — 源数随标题同排,去掉 tag 名(第二行)省地方 */
.pulse-excl-srcs {
  font-family: "SF Mono", Menlo, monospace;
  font-variant-numeric: tabular-nums;
  font-size: 10px; color: var(--fg-mute); white-space: nowrap;
}
.pulse-excl-score {
  font-family: "SF Mono", Menlo, monospace;
  font-variant-numeric: tabular-nums;
  font-size: 11px; color: var(--gold); font-weight: 700;
}
.pwb-active {
  color: var(--accent);
  font-size: 11px;
  margin-right: 4px;
  vertical-align: 1px;
}

/* ================== REPORT (daily / weekly) ================== */
.section-jump {
  position: sticky; top: 66px;
  background: var(--bg);
  border-bottom: 1px solid var(--line);
  z-index: 40;
}
.sj-inner {
  max-width: 980px;
  margin: 0 auto;
  padding: 8px 24px;
  display: flex; flex-wrap: wrap; gap: 6px 12px;
  align-items: center;
  font-size: 12px;
}
.sj-label {
  font-size: 10px; color: var(--fg-mute);
  text-transform: uppercase; letter-spacing: 0.06em;
  margin-right: 8px;
}
.sj-inner a {
  color: var(--fg-soft);
  padding: 2px 6px;
  border: 1px solid transparent;
}
.sj-inner a:hover {
  color: var(--accent);
  border-color: var(--line);
  text-decoration: none;
}

/* 报纸感:宽 920px(中文一行 ~40 字,接近报纸列宽);标题用衬线(报纸刊头感),正文保持 sans 可读 */
.layout-report {
  max-width: 920px;
  margin: 0 auto;
  padding: 32px 28px 80px 28px;
}
.report-window-meta {
  font-size: 13px;
  color: var(--fg-mute);
  margin: 0 0 24px 0;
  padding: 10px 14px;
  background: var(--bg-soft);
  border-left: 2px solid var(--line);
  letter-spacing: 0.02em;
}
.report-window-meta time {
  font-variant-numeric: tabular-nums;
  color: var(--fg);
  font-weight: 500;
}
.rwm-note { margin-left: 8px; color: var(--fg-mute); }

/* Markdown body — 报纸读感:大字 + 宽行距 + 段间喘息 */
.markdown-body {
  font-size: 16.5px;
  line-height: 1.95;
  color: #111;
  letter-spacing: 0.005em;
}
/* 标题 serif:中文用宋体系,英文用 Georgia,刊头感更强 */
.markdown-body h1,
.markdown-body h2,
.markdown-body h3 {
  font-family: "Songti SC", "STSong", "Noto Serif SC", "Source Han Serif SC",
               Georgia, "Times New Roman", serif;
}
.markdown-body h1 {
  font-size: 36px;
  font-weight: 800;
  margin: 0 0 40px 0;
  padding-bottom: 20px;
  border-bottom: 3px double var(--line-strong);
  line-height: 1.25;
  letter-spacing: -0.005em;
  text-align: center;
}
.markdown-body h2 {
  font-size: 26px;
  font-weight: 700;
  margin: 64px 0 22px 0;
  padding-bottom: 10px;
  border-bottom: 2px solid var(--line-strong);
  line-height: 1.3;
  letter-spacing: -0.005em;
  position: relative;
}
.markdown-body h2::before {
  content: "";
  display: inline-block;
  width: 5px; height: 24px;
  background: var(--accent);
  margin-right: 12px;
  vertical-align: -3px;
}
.markdown-body h3 {
  font-size: 19px;
  font-weight: 700;
  margin: 40px 0 14px 0;
  line-height: 1.4;
  color: #111;
  padding: 4px 0 4px 14px;
  border-left: 1px solid var(--line);
}
/* Sprint 4 C 派:H3 score 改左竖线粗细+颜色,sup 数字隐藏。
   score 5/6/7 灰阶递进粗细;8+ 用 accent 朱红,top tier 视觉特权独享。 */
.markdown-body h3 sup { display: none; }
.markdown-body h3[data-score="5"] { border-left: 1px solid var(--line); }
.markdown-body h3[data-score="6"] { border-left: 2px solid var(--line); }
.markdown-body h3[data-score="7"] { border-left: 3px solid var(--line-strong); }
.markdown-body h3[data-score="8"] { border-left: 4px solid var(--accent); }
.markdown-body h3[data-score="9"],
.markdown-body h3[data-score="10"] { border-left: 5px solid var(--accent); }

/* desktop daily/weekly 事件折叠:<details class="event-fold">.
   replaces H3 + 紧随 event-card 段。默认收起,标题列表式扫读;点击展开正文。
   保留 H3 同款 score-based 左竖线,加右侧 chevron。 */
.markdown-body .event-fold {
  margin: 32px 0 16px 0;
}
.markdown-body .event-fold > .event-summary {
  list-style: none;
  cursor: pointer;
  font-size: 19px;
  font-weight: 700;
  line-height: 1.4;
  color: #111;
  padding: 6px 12px 6px 14px;
  border-left: 1px solid var(--line);
  display: flex;
  align-items: flex-start;
  gap: 12px;
  transition: background 0.12s ease;
}
.markdown-body .event-fold > .event-summary::-webkit-details-marker { display: none; }
.markdown-body .event-fold > .event-summary::after {
  content: "▾";
  color: var(--fg-mute);
  font-size: 13px;
  margin-left: auto;
  flex-shrink: 0;
  transition: transform 0.18s ease;
  margin-top: 4px;
}
.markdown-body .event-fold[open] > .event-summary::after { transform: rotate(180deg); }
.markdown-body .event-fold > .event-summary:hover { background: var(--bg-soft); }
.markdown-body .event-fold > .event-summary .event-title { flex: 1; min-width: 0; }
.markdown-body .event-summary[data-score="5"] { border-left: 1px solid var(--line); }
.markdown-body .event-summary[data-score="6"] { border-left: 2px solid var(--line); }
.markdown-body .event-summary[data-score="7"] { border-left: 3px solid var(--line-strong); }
.markdown-body .event-summary[data-score="8"] { border-left: 4px solid var(--accent); }
.markdown-body .event-summary[data-score="9"],
.markdown-body .event-summary[data-score="10"] { border-left: 5px solid var(--accent); }
.markdown-body .event-fold > .event-card {
  margin: 12px 0 0 0;
}
.markdown-body .event-fold[open] > .event-card {
  margin-bottom: 8px;
}

/* report controls:全部展开/收起 toggle */
.report-controls {
  display: flex;
  justify-content: flex-end;
  margin: 0 0 8px 0;
  padding: 0 4px;
}
.report-controls .toggle-all-btn {
  background: transparent;
  border: 1px solid var(--line);
  color: var(--fg-mute);
  font-size: 12px;
  padding: 5px 12px;
  border-radius: 3px;
  cursor: pointer;
  transition: color 0.12s, border-color 0.12s, background 0.12s;
}
.report-controls .toggle-all-btn:hover {
  color: var(--fg);
  border-color: var(--line-strong);
  background: var(--bg-soft);
}
.markdown-body p {
  margin: 16px 0;
  text-align: justify;
  text-justify: inter-character;
}
/* Event-card 容器:H3 后的导语+正文+信源被包成一个 box,标题留在 box 外。
   导语段不再单独高亮(box 本身提供视觉强调),所有段落字号字重统一。
   报纸感升级:padding 加大、box 之间间距更喘息。 */
.markdown-body .event-card {
  border: 1px solid var(--accent-soft);
  background: var(--bg-soft);
  border-radius: 4px;
  padding: 24px 30px;
  margin: 16px 0 36px 0;
}
.markdown-body .event-card > p { margin: 14px 0; }
.markdown-body .event-card > p:first-child { margin-top: 0; }
.markdown-body .event-card > p:last-child { margin-bottom: 0; }

/* 信源段 (*信源 N:...*) — 在 box 内,用 top border 替代之前的 left bar */
.markdown-body .event-card > p:last-child > em:only-child {
  display: block;
  font-size: 13px;
  color: var(--fg-mute);
  font-style: normal;
  padding-top: 14px;
  margin-top: 4px;
  border-top: 1px solid var(--line);
}
/* Fallback:不在 event-card 里的孤立 em-only-child(罕见,例如未被 H3 包裹的段) */
.markdown-body > p > em:only-child {
  display: block;
  font-size: 13px;
  color: var(--fg-mute);
  font-style: normal;
  margin-top: 14px;
}
.markdown-body em {
  color: var(--fg-soft);
  font-style: italic;
}
.markdown-body ul, .markdown-body ol { padding-left: 1.6em; }
.markdown-body li { margin: 6px 0; }

/* daily 今日重大事件 — 仅美国事件标红(2026-05-29:去 tier 满屏橙,只突出美国宏观)*/
.markdown-body li.ev-us {
  list-style: none;
  margin: 4px 0 4px -1.4em;
  padding: 6px 10px 6px 12px;
  border-left: 3px solid #c5302f;
  background: #fdf3f3;
  border-radius: 0 3px 3px 0;
  line-height: 1.6;
}
.markdown-body strong { color: #000; font-weight: 700; }
.markdown-body code {
  background: var(--bg-soft);
  padding: 1px 6px;
  font-size: 13.5px;
  font-family: "SF Mono", Menlo, monospace;
  border: 1px solid var(--line);
}
.markdown-body blockquote {
  border-left: 3px solid var(--accent);
  margin: 16px 0;
  padding: 6px 14px;
  color: var(--fg-soft);
  background: var(--bg-soft);
}
.markdown-body hr {
  border: none;
  border-top: 1px solid var(--line);
  margin: 40px 0;
}

.markdown-body table {
  border-collapse: collapse;
  margin: 16px 0 20px;
  font-size: 13.5px;
  line-height: 1.5;
  width: 100%;
  max-width: 100%;
}
.markdown-body th, .markdown-body td {
  border: 1px solid var(--line);
  padding: 8px 12px;
  text-align: left;
  vertical-align: top;
}
.markdown-body th {
  background: var(--bg-soft);
  font-weight: 600;
  color: var(--fg);
  white-space: nowrap;
}
.markdown-body td:first-child {
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
  color: var(--fg-soft);
  font-family: "SF Mono", Menlo, monospace;
  font-size: 12.5px;
}
.markdown-body tbody tr:nth-child(odd) { background: var(--bg-soft); }

/* ================== CLUSTER ================== */
.layout-cluster {
  max-width: 880px;
  padding-top: 24px; padding-bottom: 64px;
}
.cluster-head { margin-bottom: 24px; }
.cl-back a { font-size: 12px; color: var(--fg-mute); }
.cluster-head h1 {
  font-size: 24px; font-weight: 800; margin: 8px 0 4px 0; line-height: 1.35;
  letter-spacing: -0.005em;
}
.cl-original-head {
  font-size: 12px; color: var(--fg-mute);
  font-style: italic;
  margin: 0 0 10px 0;
}
.cl-meta {
  display: flex; gap: 14px; font-size: 12px; color: var(--fg-mute);
}
.cl-meta .cl-cat { padding: 1px 6px; border: 1px solid currentColor; }
.cluster-canonical {
  border: 1px solid var(--line);
  padding: 16px;
  background: var(--bg-soft);
  margin-bottom: 28px;
}
.cluster-canonical h2, .cluster-timeline h2 {
  font-size: 12px; text-transform: uppercase; letter-spacing: 0.08em;
  color: var(--fg-mute); margin: 0 0 10px 0;
  border-bottom: 1px solid var(--line); padding-bottom: 4px;
}
.cluster-canonical h2 {
  display: flex; align-items: center; justify-content: space-between; gap: 8px;
}
.cc-copy-btn {
  display: inline-flex; align-items: center; gap: 4px;
  background: transparent; border: 1px solid transparent;
  color: var(--fg-mute); cursor: pointer;
  padding: 2px 6px; border-radius: 3px;
  font: inherit; line-height: 1; opacity: 0.55;
  transition: opacity 0.15s ease, background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
.cc-copy-btn:hover, .cc-copy-btn:focus-visible {
  opacity: 1; color: var(--fg); background: var(--bg); border-color: var(--line);
  outline: none;
}
.cc-copy-btn .cc-copy-icon { display: block; }
.cc-copy-btn .cc-copy-check { display: none; }
.cc-copy-btn.is-copied { color: #1f8a4c; opacity: 1; border-color: transparent; background: transparent; }
.cc-copy-btn.is-copied .cc-copy-icon { display: none; }
.cc-copy-btn.is-copied .cc-copy-check { display: block; }
.cc-copy-btn.is-failed { color: #b04848; opacity: 1; }
.cc-copy-feedback {
  font-size: 10px; letter-spacing: 0.04em; text-transform: none;
  opacity: 0; transition: opacity 0.15s ease;
}
.cc-copy-btn.is-copied .cc-copy-feedback,
.cc-copy-btn.is-failed .cc-copy-feedback { opacity: 1; }
.cc-summary { font-size: 14px; line-height: 1.7; margin: 8px 0; }
.cc-summary p { margin: 0 0 12px; }
.cc-summary p:last-child { margin-bottom: 0; }
.cc-summary h2, .cc-summary h3, .cc-summary h4 {
  font-size: 15px; font-weight: 600; color: var(--fg);
  margin: 18px 0 8px; line-height: 1.4;
}
.cc-summary h2:first-child, .cc-summary h3:first-child, .cc-summary h4:first-child { margin-top: 0; }
.cc-summary ul, .cc-summary ol { margin: 0 0 12px; padding-left: 1.5em; }
.cc-summary li { margin: 0 0 4px; }
.cc-summary blockquote {
  margin: 0 0 12px; padding: 4px 0 4px 12px;
  border-left: 3px solid var(--line); color: var(--fg-mute);
}
.cc-summary strong, .cc-summary b { font-weight: 600; color: var(--fg); }
.cc-source { font-size: 12px; font-family: "SF Mono", Menlo, monospace; }

.timeline { list-style: none; padding: 0; margin: 0; }
.timeline > li { border-bottom: 1px solid var(--line); padding: 14px 0; }
.tl-time {
  font-size: 11px; color: var(--fg-mute);
  font-family: "SF Mono", Menlo, monospace;
}
.tl-source {
  display: inline-block;
  font-size: 10px; letter-spacing: 0.05em;
  padding: 1px 6px; background: var(--bg-strong);
  color: var(--fg-soft);
  margin: 4px 8px 4px 0;
  font-family: "SF Mono", Menlo, monospace;
}
.tl-title {
  display: block;
  font-size: 14px; font-weight: 500; color: var(--fg);
  margin: 4px 0;
}
.tl-title:hover { color: var(--accent); text-decoration: none; }
.tl-original {
  font-size: 11px; color: var(--fg-mute);
  font-style: italic;
  margin: 2px 0 4px 0;
}
.tl-summary { font-size: 12.5px; color: var(--fg-soft); line-height: 1.6; }
.tl-bias {
  font-size: 11px; color: var(--fg-mute);
  margin-top: 4px; font-style: italic;
}

/* ================== AI 注解(cluster TIMELINE)================== */
.cluster-ai-note {
  border: 1px solid var(--line);
  border-left: 3px solid var(--fg-mute);
  padding: 14px 16px;
  margin-bottom: 28px;
  background: transparent;
}
.cluster-ai-note h2 {
  font-size: 12px; text-transform: uppercase; letter-spacing: 0.08em;
  color: var(--fg-mute); margin: 0 0 12px 0;
  border-bottom: 1px solid var(--line); padding-bottom: 4px;
  display: flex; align-items: baseline; gap: 10px;
}
.cluster-ai-note .ai-tag {
  font-size: 10px; letter-spacing: 0.02em; text-transform: none;
  color: var(--fg-mute); font-weight: normal;
  font-family: "SF Mono", Menlo, monospace;
}
.ai-timeline { list-style: none; padding: 0; margin: 0; }
.ai-timeline > li {
  display: flex; gap: 12px;
  padding: 6px 0;
  border-bottom: 1px dotted var(--line);
  font-size: 13.5px; line-height: 1.55;
}
.ai-timeline > li:last-child { border-bottom: none; }
.ai-t-date {
  flex-shrink: 0; width: 48px;
  font-family: "SF Mono", Menlo, monospace;
  font-size: 12px; color: var(--fg-mute);
  padding-top: 1px;
}
.ai-t-fact { color: var(--fg); }
.ai-disclaimer {
  font-size: 10.5px; color: var(--fg-mute);
  margin: 10px 0 0 0;
  font-style: italic;
  line-height: 1.5;
}

/* ================== ARCHIVE ================== */
.layout-archive {
  max-width: 880px;
  padding-top: 32px; padding-bottom: 64px;
}
.layout-archive h1 {
  font-size: 22px; margin: 0 0 24px 0;
  padding-bottom: 8px; border-bottom: 2px solid var(--line-strong);
}
.ar-section { margin-bottom: 32px; }
.ar-section h2 {
  font-size: 14px; text-transform: uppercase; letter-spacing: 0.06em;
  color: var(--fg-mute); margin: 0 0 12px 0;
}
.ar-list {
  list-style: none; padding: 0; margin: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
  gap: 6px;
}
.ar-list a {
  display: block;
  font-family: "SF Mono", Menlo, monospace;
  font-size: 13px;
  padding: 6px 8px;
  border: 1px solid var(--line);
  color: var(--fg-soft);
  text-align: center;
}
.ar-list a:hover { border-color: var(--accent); color: var(--accent); text-decoration: none; }

/* ================== FOOTER ================== */
.footbar {
  border-top: 1px solid var(--line);
  background: var(--bg-soft);
  margin-top: 40px;
}
.footbar .wrap {
  padding: 14px 24px;
  font-size: 12px;
  color: var(--fg-mute);
  display: flex; justify-content: center; gap: 16px;
}
.fp-line strong {
  color: var(--fg);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}

/* ================== UPDATE TOAST (M3) — full-width band, not in grid ============ */
.update-toast-band {
  background: var(--bg-strong);
  border-bottom: 1px solid var(--accent);
  border-top: 1px solid var(--line);
}
.update-toast-band[hidden] { display: none !important; }
.update-toast-inner {
  padding: 8px 24px;
  display: flex; align-items: center; justify-content: space-between;
  font-size: 13px;
  color: var(--fg);
  font-variant-numeric: tabular-nums;
}
.update-toast-band .ut-plus { color: var(--accent); font-weight: 800; }
.update-toast-band .ut-msg { line-height: 1.4; }
.update-toast-band .ut-age {
  color: var(--fg-mute); font-size: 11.5px; font-weight: 400;
  font-variant-numeric: tabular-nums;
  margin-left: 2px;
}
.update-toast-band .ut-reload {
  background: transparent; border: 1px solid var(--accent); color: var(--accent);
  padding: 3px 12px; font-size: 12px; font-weight: 600; cursor: pointer;
  font-family: inherit;
}
.update-toast-band .ut-reload:hover { background: var(--accent); color: #fff; }
