/* Editorial styles for ER Cardio Weekly (Hugo section). Source: handoff-bundle/styles.css */

/* ─── Hugo standalone baseline reset (added 2026-04-29) ─── */




.ecw-content img { max-width: 100%; height: auto; }
.ecw-content button { font: inherit; }
.ecw-content .container { max-width: 1100px; margin: 0 auto; padding: 0 32px; }
@media (max-width: 760px) {
  .ecw-content .container { padding: 0 18px; }
  .ecw-content .layout-list { grid-template-columns: minmax(0, 1fr) !important; gap: 24px; padding: 0 18px; }
  .ecw-content .layout-article { grid-template-columns: minmax(0, 1fr) !important; gap: 24px; padding: 0 18px; }
  .ecw-content .layout-article .left, .ecw-content .layout-article .right { display: none; }
  .ecw-content .row { grid-template-columns: 1fr !important; gap: 8px; padding: 22px 0; }
  .ecw-content .row .week { font-size: 22px; }
  .ecw-content .row .head { font-size: 18px; }
  .ecw-content .article { padding: 24px 0 60px; max-width: 100%; }
  .ecw-content .article .article-title { font-size: 36px; line-height: 1.12; }
  .ecw-content .article .article-sub { font-size: 22px; line-height: 1.3; }
  .ecw-content .article p, .ecw-content .article li { font-size: 18px; }
  .ecw-content .article h2 { font-size: 26px; margin: 2.4em 0 0.6em; }
  .ecw-content .article .lede { font-size: 19px; }
  .ecw-content .topbar { padding: 0 16px; height: 52px; }
  .ecw-content .hero { padding: 32px 0 24px; }
  .ecw-content .hero .tagline { font-size: 26px; }
}

/* ─── Theme tokens — Hallmark-aligned + First Round Review DNA pivot ───
 * studied from review.firstround.com (URL mode, 2026-05-22):
 *   paper #FBFBF6, near-pure-black ink, deep aubergine accent #3B1044,
 *   100% serif typography (single-font discipline).
 * Kept ECW heritage: dark mode toggle, 3-col layout, progress bar.
 * Differentiator from main Hallmark site:
 *   main site accent = orange #F35F00 (every.to-derived)
 *   ECW accent     = deep aubergine #3B1044 (First Round-derived)
 *   — visual identity for the weekly section. */
.ecw-content {
  --bg: #FBFBF6;            /* warm cream paper (was #FAF8F3) */
  --ink: #000503;            /* near-pure-black (was #1A1A1A) */
  --ink-2: #3a3a3a;
  --muted: #666;
  --hairline: #E6E0D3;
  --hairline-2: #EFEAE0;
  --accent: #3B1044;         /* deep aubergine (was #7A2828 deep wine) */
  --accent-soft: #3B10441A;
  --accent-bg: #F2EBF3;      /* round-5: warm grey-mauve (was cold #F8E8FF fluoro lavender) */
  --code-bg: #F2EEE3;
  --row-zebra: #F5F1E6;
  --selection: #3B10441f;

  background: var(--bg);
  color: var(--ink);
  /* Body 100% serif — round-5: CJK-first stack. Noto Serif TC's Latin glyphs
   * share the CJK design so mixed 中英文 lines stop size-jumping; Newsreader
   * kept only for pure-Latin decorative bits (.num, toc-num). */
  font-family: var(--font-display-zh);
  font-feature-settings: "ss01", "cv11";
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}



.ecw-content ::selection { background: var(--selection); }

/* Display / serif title font for headings (First Round single-font serif) */
.ecw-content h1, .ecw-content h2, .ecw-content h3, .ecw-content h4,
.ecw-content .display {
  font-family: var(--font-display-zh);
  font-weight: 600;
  letter-spacing: 0;              /* round-5: no negative tracking on 全形字 */
  color: var(--ink);
}

/* Legacy .serif class kept for backwards compatibility (already serif now) */
.ecw-content .serif {
  font-family: var(--font-display-zh);
}

/* Sans utility for chips / eyebrows / labels (allow narrow sans for UI bits) */
.ecw-content .sans {
  font-family: var(--font-body-zh);
}

/* Body — bigger reading size per First Round DNA (was 17px) */
.ecw-content p, .ecw-content li {
  font-size: 20px;
  line-height: 1.7;
  color: var(--ink);
}

.ecw-content a {
  color: var(--ink);
  text-decoration: underline;
  text-decoration-color: var(--accent);
  text-underline-offset: 3px;
  text-decoration-thickness: 1px;
}

.ecw-content a:hover {
  color: var(--accent);
}

/* round-5: long raw URLs (footnotes / references) must never blow out the
 * grid track — this was causing horizontal overflow on mobile. */
.ecw-content .article-content a { overflow-wrap: anywhere; }
.ecw-content .article-content .footnotes a,
.ecw-content .refs a { word-break: break-all; }

/* Hairline divider */
.ecw-content .rule {
  height: 1px;
  background: var(--hairline);
  border: 0;
}

/* Tag chip — 1px border, square corners (1-2px radius) */
.ecw-content .chip {
  display: inline-flex;
  align-items: center;
  height: 22px;
  padding: 0 8px;
  border: 1px solid var(--hairline);
  border-radius: 2px;
  font-size: 11.5px;
  letter-spacing: 0.04em;
  color: var(--muted);
  font-weight: 500;
  background: transparent;
  text-transform: uppercase;
  font-family: var(--font-body-zh);
  white-space: nowrap;
}
.ecw-content .chip:hover { color: var(--accent); border-color: var(--accent); }

/* Reading progress bar */
.ecw-content .progress-track {
  position: fixed;                 /* round-5: was absolute — scrolled out of view instantly */
  top: 0; left: 0; right: 0;
  height: 2px;
  background: transparent;
  z-index: 60;
}
.ecw-content .progress-bar {
  height: 100%;
  background: var(--accent);
  width: var(--progress, 38%);
  transition: width 80ms linear;
}

/* Bottom-line callout */
.ecw-content .bottom-line {
  border-left: 3px solid var(--accent);
  background: transparent;
  padding: 12px 16px;
  margin: 20px 0 8px;
}
.ecw-content .bottom-line .label {
  font-size: 11px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--accent);
  font-weight: 600;
  margin-bottom: 4px;
}
.ecw-content .bottom-line p {
  font-size: 15.5px;
  line-height: 1.65;
  margin: 0;
  color: var(--ink);
}

/* LLM verdict chip — outline only */
.ecw-content .verdict {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  height: 24px;
  padding: 0 10px;
  border: 1px solid var(--hairline);
  border-radius: 2px;
  font-size: 12px;
  font-weight: 500;
  color: var(--ink-2);
  background: transparent;
  letter-spacing: 0.01em;
}
.ecw-content .verdict::before {
  content: "";
  width: 6px; height: 6px;
  border-radius: 50%;
  background: var(--muted);
}
.ecw-content .verdict.practice::before { background: var(--accent); }
.ecw-content .verdict.hypothesis::before { background: #B8860B; }
.ecw-content .verdict.context::before { background: var(--muted); }

/* Pull quote — First Round signature move: bold serif 44px, breaks out
 * wider than the 680px reading column (920px ≈ +120px each side).
 * Top + bottom hairline rules in accent, no left bar. */
.ecw-content blockquote {
  font-family: var(--font-display-zh);
  font-size: 30px;          /* round-5: 42 → 30 — 42px×Noto Serif TC 900 is a CJK 黑塊 */
  line-height: 1.5;
  font-weight: 600;         /* round-5: 700 → 600 */
  letter-spacing: 0;
  font-style: normal;
  color: var(--ink);
  margin: 56px auto;
  padding: 24px 0 28px;
  border-top: 1px solid var(--accent);
  border-bottom: 1px solid var(--accent);
  text-wrap: balance;
  /* round-6: was viewport-centred breakout (left:50%/translateX) — that only
   * aligns when the article is viewport-centred, which it no longer is.
   * Full content-column width instead; still visually distinct via the rules. */
  width: auto;
  max-width: none;
  text-align: left;
}
.ecw-content blockquote::before {
  content: "“";
  display: block;
  font-family: var(--font-display-zh);
  font-size: 56px;
  line-height: 0.5;
  color: var(--accent);
  margin-bottom: 12px;
  font-weight: 600;
}
.ecw-content blockquote cite {
  display: block;
  margin-top: 18px;
  font-style: normal;
  font-size: 14px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--accent);
  font-family: var(--font-body-zh);
  font-weight: 600;
}
@media (max-width: 760px) {
  .ecw-content blockquote {
    font-size: 24px;
    width: 100%;
    left: 0;
    transform: none;
    padding: 18px 0 20px;
    margin: 36px 0;
  }
  .ecw-content blockquote::before { font-size: 40px; }
}

/* Tables */
.ecw-content table {
  width: 100%;
  border-collapse: collapse;
  font-size: 14.5px;
  margin: 18px 0;
}
.ecw-content table th, .ecw-content table td {
  padding: 9px 12px;
  text-align: left;
  border: 1px solid var(--hairline);
  vertical-align: top;
}
.ecw-content table th {
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  font-weight: 600;
  color: var(--muted);
  background: var(--hairline-2);
}
.ecw-content table tbody tr:nth-child(even) td {
  background: var(--row-zebra);
}

/* Inline code */
.ecw-content code {
  font-family: var(--font-body-zh);
  font-size: 14px;
  background: var(--code-bg);
  padding: 1px 5px;
  border-radius: 2px;
}

/* Section H2 — 大標、上方 hairline 強調 */
.ecw-content .article h2,
.ecw-content .article-content h2 {
  font-size: 30px;
  line-height: 1.25;
  margin: 4em 0 0.9em;
  font-weight: 600;
  letter-spacing: 0;
  scroll-margin-top: 100px;
  display: flex;
  align-items: baseline;
  gap: 12px;
  padding-top: 28px;
  border-top: 1px solid var(--hairline);
}
.ecw-content .article h2 .num,
.ecw-content .article-content h2 .num {
  font-family: var(--font-display-zh);
  font-style: italic;
  font-weight: 400;
  font-size: 18px;
  color: var(--muted);
  font-feature-settings: "lnum";
}
.ecw-content .article h2 .toggle,
.ecw-content .article-content h2 .toggle {
  margin-left: auto;
  font-size: 12px;
  color: var(--muted);
  cursor: pointer;
  user-select: none;
  font-family: var(--font-body-zh);
  font-weight: 400;
  letter-spacing: 0.05em;
}

/* H3 子標題 — 視覺與 body 拉開 */
.ecw-content .article h3,
.ecw-content .article-content h3 {
  font-size: 20px;
  line-height: 1.35;
  margin: 2em 0 0.55em;
  font-weight: 600;
  letter-spacing: -0.005em;
  color: var(--ink);
}

/* H4 — 第三層 */
.ecw-content .article h4,
.ecw-content .article-content h4 {
  font-size: 16px;
  line-height: 1.4;
  margin: 1.6em 0 0.4em;
  font-weight: 600;
  color: var(--ink-2);
  text-transform: uppercase;
  letter-spacing: 0.06em;
}

/* Body paragraph 強調 + 段落呼吸 */
.ecw-content .article-content p {
  color: var(--ink);
  font-size: 17px;
  line-height: 1.85;
  margin: 0 0 1.4em;
}
.ecw-content .article-content li {
  color: var(--ink);
  font-size: 17px;
  line-height: 1.75;
  margin: 0.5em 0;
}

/* Strong — 加粗 + 黑體（讓掃讀眼睛抓得到）*/
.ecw-content .article-content strong,
.ecw-content .article-content b {
  font-weight: 700;
  color: var(--ink);
}

/* 「**標題**：內文」段落升級成 sub-heading 視覺
 * JS 在 ecw.js 偵測「<strong> 開頭 + 接著是「：」」的 <p>，加 .para-with-title class
 * 不用 hairline 上邊（部分段落含 PMID/DOI 連結夾層抓不到，視覺會不一致） */
.ecw-content .article-content p.para-with-title {
  margin-top: 2em;
}
.ecw-content .article-content p.para-with-title > strong:first-child {
  display: block;
  margin-bottom: 4px;
  font-family: var(--font-body-zh);
  font-size: 15px;
  font-weight: 700;
  letter-spacing: 0.02em;
  line-height: 1.4;
  color: var(--ink);
}

/* Em — serif italic. round-5: fallback was 'Noto Sans TC' (黑體假斜);
 * use Noto Serif TC + font-synthesis-style:none so CJK never fakes an italic
 * slant while Latin book titles still get a real italic. */
.ecw-content .article-content em,
.ecw-content .article-content i {
  font-family: var(--font-display-zh);
  font-style: italic;
  font-synthesis-style: none;
  color: var(--ink-2);
}

/* mark 螢光標記. round-5: was 改版前 wine rgba(122,40,40) — now accent family
 * so the whole page carries a single hue. */
.ecw-content .article-content mark {
  background: linear-gradient(transparent 62%, rgba(59, 16, 68, 0.13) 62%);
  color: var(--ink);
  padding: 0 1px;
  font-weight: 600;
}
.ecw-content.is-dark .article-content mark {
  background: linear-gradient(transparent 62%, rgba(228, 173, 255, 0.26) 62%);
}

/* Lede 首段 drop-cap（可加 class="lede" 觸發）*/
.ecw-content .article-content > p:first-of-type {
  font-size: 18px;
  line-height: 1.7;
  color: var(--ink);
}

/* Bullet list 加緊一些 */
.ecw-content .article-content ul li,
.ecw-content .article-content ol li {
  margin: 8px 0;
  line-height: 1.7;
}

/* HR 分隔線 */
.ecw-content .article-content hr {
  border: 0;
  border-top: 1px solid var(--hairline);
  margin: 3em 0;
}

/* Paragraph deep-link affordance */
.ecw-content .article .para {
  position: relative;
}
.ecw-content .article .para .anchor {
  position: absolute;
  left: -24px;
  top: 6px;
  color: var(--muted);
  opacity: 0;
  font-size: 14px;
  text-decoration: none;
  font-family: var(--font-body-zh);
}
.ecw-content .article .para:hover .anchor { opacity: 0.5; }

/* TOC — sticky + scroll-spy with prominent active highlight (round-4) */
.ecw-content .toc {
  font-family: var(--font-body-zh);
  font-size: 14px;
  line-height: 1.6;
}
.ecw-content .toc .toc-label {
  font-size: 11px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--accent);
  font-weight: 700;
  margin-bottom: 16px;
}
.ecw-content .toc ol {
  list-style: none;
  padding: 0;
  margin: 0;
}
.ecw-content .toc li {
  padding: 8px 0 8px 16px;            /* round-4: bigger touch target, was 4px */
  border-left: 2px solid var(--hairline); /* round-4: 1 → 2px */
  color: var(--muted);
  font-size: 14px;
  cursor: pointer;
  transition: color 120ms, border-left-color 120ms, background 120ms, padding 120ms;
  margin-bottom: 2px;
}
.ecw-content .toc li:hover {
  color: var(--ink);
  border-left-color: var(--accent-soft);
}
.ecw-content .toc li.active {
  border-left-color: var(--accent);
  border-left-width: 3px;
  color: var(--ink);
  font-weight: 600;
  background: var(--accent-bg);        /* round-4: highlight bg, not just border */
  padding-left: 18px;                  /* round-4: slight indent shift */
}
.ecw-content.is-dark .toc li.active { background: var(--accent-soft); }
.ecw-content .toc li .toc-num {
  font-family: var(--font-display-zh);
  font-style: italic;
  color: var(--muted);
  font-size: 13px;
  margin-right: 8px;
  transition: color 120ms;
}
.ecw-content .toc li.active .toc-num { color: var(--accent); font-weight: 600; }

/* List page row */
.ecw-content .row {
  padding: 28px 0;
  border-bottom: 1px solid var(--hairline);
  display: grid;
  grid-template-columns: 110px 1fr;
  gap: 32px;
  align-items: start;
}
.ecw-content .row .week {
  font-family: var(--font-body-zh);
  font-size: 28px;
  font-weight: 600;
  letter-spacing: -0.02em;
  line-height: 1;
  color: var(--ink);
}
.ecw-content .row .week-sub {
  font-size: 11px;
  color: var(--muted);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  margin-top: 6px;
  font-weight: 500;
}
.ecw-content .row .head {
  font-family: var(--font-body-zh);
  font-size: 22px;
  line-height: 1.35;
  font-weight: 600;
  letter-spacing: -0.01em;
  color: var(--ink);
  margin: 0 0 10px;
}
.ecw-content .row .head:hover { color: var(--accent); }
.ecw-content .row .meta {
  font-size: 12.5px;
  color: var(--muted);
  margin-top: 14px;
  display: flex;
  gap: 14px;
  align-items: center;
}
.ecw-content .row .meta .dot {
  width: 2px; height: 2px; border-radius: 50%; background: var(--muted);
}
.ecw-content .row .tags {
  display: flex;
  gap: 6px;
  margin-top: 14px;
  flex-wrap: wrap;
}

/* Hero — 兩欄 editorial 排版（左：品牌+大標 / 右：副文+訂閱）*/
.ecw-content .hero {
  padding: 96px 0 80px;
  border-bottom: 1px solid var(--hairline);
  position: relative;
}
.ecw-content .hero-inner {
  max-width: 1480px;
  margin: 0 auto;
  padding: 0 80px 0 96px;          /* 左 96 / 右 80：左欄稍微靠近左側邊緣 */
  display: grid;
  grid-template-columns: 1.35fr 1fr;
  gap: 96px;
  align-items: end;
}
/* 左：品牌標誌 + 大標題堆疊 */
.ecw-content .hero-left { display: flex; flex-direction: column; gap: 28px; }
.ecw-content .hero-left .wordmark {
  font-size: 12px;
  letter-spacing: 0.36em;
  margin-bottom: 0;
}
.ecw-content .hero-left .tagline {
  font-size: 56px;
  line-height: 1.1;
  font-weight: 600;
  letter-spacing: -0.025em;
  text-wrap: balance;
  max-width: 720px;
  margin: 0;
}
.ecw-content .hero-left .tagline .accent {
  color: var(--accent);
  font-weight: 600;
}
/* 左下角期次 indicator — 同一列、不換行 */
.ecw-content .hero-left .issue-meta {
  display: flex;
  align-items: center;
  flex-wrap: nowrap;
  gap: 14px;
  font-family: var(--font-body-zh);
  font-size: 11px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--muted);
  font-weight: 500;
  margin-top: 12px;
  padding-top: 16px;
  border-top: 1px solid var(--hairline);
  max-width: 720px;
  white-space: nowrap;
}
.ecw-content .hero-left .issue-meta > span { white-space: nowrap; }
.ecw-content .hero-left .issue-meta .num {
  font-family: var(--font-display-zh);
  font-style: italic;
  font-weight: 500;
  font-size: 14px;
  color: var(--accent);
  letter-spacing: 0;
  text-transform: none;
  white-space: nowrap;
}

/* 右：副文 + 訂閱 */
.ecw-content .hero-right {
  display: flex;
  flex-direction: column;
  gap: 28px;
  padding-bottom: 8px;
  max-width: 480px;
}
.ecw-content .hero-right .sub {
  max-width: 100%;
  margin: 0;
  font-size: 16.5px;
  line-height: 1.65;
}
.ecw-content .hero-right .subscribe { max-width: 100%; margin: 0; }
.ecw-content .hero-right .subscribe-label {
  font-size: 11px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--muted);
  font-weight: 600;
  margin-bottom: -8px;
}

@media (max-width: 1100px) {
  .ecw-content .hero-inner {
    padding: 0 48px;
    gap: 64px;
  }
  .ecw-content .hero-left .tagline { font-size: 44px; }
}
@media (max-width: 900px) {
  .ecw-content .hero { padding: 56px 0 40px; }
  .ecw-content .hero-inner {
    grid-template-columns: 1fr;
    gap: 32px;
    padding: 0 24px;
  }
  .ecw-content .hero-left .tagline { font-size: 32px; }
  .ecw-content .hero-right { max-width: 100%; }
}
.ecw-content .hero .wordmark {
  font-family: var(--font-body-zh);
  font-weight: 700;
  font-size: 13px;
  letter-spacing: 0.32em;
  text-transform: uppercase;
  color: var(--accent);
  margin-bottom: 18px;
  display: inline-flex;
  align-items: center;
  gap: 10px;
}
.ecw-content .hero .tagline {
  font-family: var(--font-body-zh);
  font-size: 38px;
  line-height: 1.18;
  font-weight: 600;
  letter-spacing: -0.018em;
  color: var(--ink);
  max-width: 620px;
  margin: 0;
  text-wrap: balance;
}
.ecw-content .hero .sub {
  margin-top: 18px;
  font-size: 16px;
  color: var(--muted);
  max-width: 520px;
  line-height: 1.6;
}

/* Subscribe form */
.ecw-content .subscribe {
  margin-top: 28px;
  display: flex;
  gap: 8px;
  max-width: 460px;
}
.ecw-content .subscribe input {
  flex: 1;
  background: transparent;
  border: 1px solid var(--hairline);
  border-radius: 2px;
  padding: 0 14px;
  height: 40px;
  font-size: 14px;
  color: var(--ink);
  font-family: var(--font-body-zh);
  outline: none;
}
.ecw-content .subscribe input:focus { border-color: var(--accent); }
.ecw-content .subscribe button {
  height: 40px;
  padding: 0 18px;
  background: var(--accent);
  color: #fff;
  border: 0;
  border-radius: 2px;
  font-size: 14px;
  font-weight: 500;
  cursor: pointer;
  font-family: var(--font-body-zh);
  letter-spacing: 0.01em;
}
.ecw-content .subscribe .rss {
  height: 40px;
  width: 40px;
  display: inline-flex; align-items: center; justify-content: center;
  border: 1px solid var(--hairline);
  border-radius: 2px;
  color: var(--muted);
  text-decoration: none;
}
.ecw-content .subscribe .rss:hover { color: var(--accent); border-color: var(--accent); }

/* Sticky right rail */
.ecw-content .rail {
  position: sticky;
  top: 60px;
  font-family: var(--font-body-zh);
}
.ecw-content .rail input.search {
  width: 100%;
  background: transparent;
  border: 1px solid var(--hairline);
  border-radius: 2px;
  height: 36px;
  padding: 0 12px;
  font-size: 13px;
  color: var(--ink);
  outline: none;
  font-family: var(--font-body-zh);
}
.ecw-content .rail input.search:focus { border-color: var(--accent); }
.ecw-content .rail .filter-label {
  font-size: 10.5px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--muted);
  font-weight: 600;
  margin: 28px 0 10px;
}
.ecw-content .rail .filter-list {
  display: flex; flex-direction: column; gap: 2px;
}
.ecw-content .rail .filter-list label {
  font-size: 13px;
  display: flex; align-items: center; gap: 10px;
  padding: 5px 0;
  color: var(--ink-2);
  cursor: pointer;
}
.ecw-content .rail .filter-list .count {
  margin-left: auto; color: var(--muted); font-size: 12px;
  font-feature-settings: "tnum";
}
.ecw-content .rail .filter-list input[type=checkbox] { accent-color: var(--accent); }

/* Toggle button (dark mode) */
.ecw-content .icon-btn {
  width: 32px; height: 32px;
  display: inline-flex; align-items: center; justify-content: center;
  border: 1px solid var(--hairline);
  border-radius: 2px;
  background: transparent;
  color: var(--ink-2);
  cursor: pointer;
}
.ecw-content .icon-btn:hover { color: var(--accent); border-color: var(--accent); }

/* Top bar (article view) */
.ecw-content .topbar {
  position: sticky;
  top: 0;
  background: var(--bg);
  border-bottom: 1px solid var(--hairline);
  z-index: 40;
  height: 56px;
  display: flex;
  align-items: center;
  padding: 0 32px;
}
.ecw-content .topbar .brand {
  font-family: var(--font-body-zh);
  font-weight: 700;
  font-size: 12px;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: var(--accent);
}
.ecw-content .topbar .crumb {
  margin-left: 16px;
  color: var(--muted);
  font-size: 13px;
}
.ecw-content .topbar .actions {
  margin-left: auto;
  display: flex; gap: 8px; align-items: center;
}

/* Article meta */
.ecw-content .article-meta {
  font-size: 13px;
  color: var(--muted);
  display: flex;
  gap: 12px;
  align-items: center;
  margin: 14px 0 0;
}
.ecw-content .article-meta .dot { width: 2px; height: 2px; background: var(--muted); border-radius: 50%; }

/* Article — First Round Review layout discipline
 * Reading column kept narrow (~680px) so pull quotes / figures break out wider.
 * H1 = 60px serif Newsreader Medium (First Round 64px Skandia Medium)
 * Deck = 32px Inter SANS regular (First Round Leif Regular sans, intentional
 *        pairing — serif H1 + sans deck so they don't compete)
 * Drop cap = 72px serif for editorial drama */
.ecw-content .article {
  max-width: 820px;              /* round-6: 680 → 820, wider column (was reading as a thin strip) */
  margin: 0 auto;
  padding: 56px 0 96px;
}
.ecw-content .article .article-title {
  font-family: var(--font-display-zh);
  font-size: 44px;
  line-height: 1.14;        /* round-5: a touch more air for 全形字 */
  font-weight: 600;         /* round-5: 700 → 600 — 700 fell to Noto Serif TC 900 Black */
  letter-spacing: 0;        /* round-5: no negative tracking on CJK */
  margin: 0;
  text-wrap: balance;
  color: var(--ink);
}
.ecw-content .article .article-sub {
  font-family: var(--font-body-zh);
  font-size: 20px;          /* round-5: 24 → 20 so it stops fighting H1 */
  line-height: 1.55;
  color: var(--ink-2);
  margin: 24px 0 0;
  font-weight: 400;
  font-style: normal;
  letter-spacing: 0;
  max-width: 38em;
}

/* Opening flourish — 48×2px accent rule after meta, before body (round-3 structure review) */
.ecw-content .article .opening-rule {
  width: 48px;
  height: 2px;
  background: var(--accent);
  margin: 32px 0 36px;
  border: none;
}

.ecw-content .article .lede {
  font-size: 21px;
  line-height: 1.75;
  margin-top: 40px;
  color: var(--ink);
  font-family: var(--font-display-zh);
}

/* round-5: CJK drop-cap removed — ::first-letter drama is a Latin convention,
 * on 方塊字 it renders like a bug and tore「是什麼：」into「是」+「什麼：」. */
.ecw-content .article-content > p:first-of-type {
  font-size: 18px;
}

/* Body type — round-5: tighter, denser magazine rhythm.
 * line-height 1.95 → 1.82 and para margin 1.8em → 1.2em stop the page from
 * feeling stretched apart. "onum" (old-style figures) dropped so medical
 * numbers (38%, QTc 550) render as even lining figures. */
.ecw-content .article-content p,
.ecw-content .article-content li {
  font-size: 18px;
  line-height: 1.82;
  font-feature-settings: "ss01", "kern";
}
.ecw-content .article-content p {
  margin: 0 0 1.2em;
}
.ecw-content .article-content ul,
.ecw-content .article-content ol {
  margin: 1.2em 0 1.4em;
}
.ecw-content .article-content ul li,
.ecw-content .article-content ol li {
  margin-bottom: 8px;
  line-height: 1.78;
}

/* Section divider — round-5: § chapter mark removed (Latin editorial drama).
 * A plain hairline is enough of a breather; the § stacked on top of the H2
 * border-top was a double divider. */
.ecw-content .article-content hr {
  border: 0;
  border-top: 1px solid var(--hairline-2);
  height: 0;
  margin: 32px 0;
}
.ecw-content .article-content hr::after { content: none; }

/* H2 section heads — round-5: tightened from the 4em "sky".
 * Section breaks now come from ONE mechanism — the H2 hairline + 編號 —
 * so the page stops reading as a stretched-open wall of text. */
.ecw-content .article-content h2 {
  margin-top: 2.4em;
  margin-bottom: 0.7em;
  padding-top: 26px;
}

/* Article-end CTA — return to overview + next-issue link (round-3 structure review) */
.ecw-content .article-end {
  margin: 80px 0 0;
  padding-top: 32px;
  border-top: 1px solid var(--accent);
  display: flex;
  flex-wrap: wrap;
  gap: 24px;
  font-family: var(--font-body-zh);
  font-size: 14px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-2);
}
.ecw-content .article-end .end-link {
  color: var(--accent);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  padding-bottom: 2px;
  transition: border-color 120ms ease;
  font-weight: 600;
}
.ecw-content .article-end .end-link:hover { border-bottom-color: var(--accent); }

/* Author card — block-level credit (round-3 structure review) */
.ecw-content .author-card {
  margin: 48px 0 0;
  padding: 24px;
  background: var(--accent-bg);
  display: flex;
  gap: 18px;
  align-items: flex-start;
  border-radius: 4px;
}
.ecw-content.is-dark .author-card { background: var(--accent-soft); }
.ecw-content .author-card .author-avatar {
  flex: 0 0 48px;
  width: 48px;
  height: 48px;
  background: var(--bg);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 28px;
  line-height: 1;
  border: 1px solid var(--accent);
}
.ecw-content .author-card .author-name {
  font-family: var(--font-display-zh);
  font-size: 18px;
  font-weight: 600;
  color: var(--ink);
  letter-spacing: -0.01em;
}
.ecw-content .author-card .author-bio {
  font-family: var(--font-body-zh);
  font-size: 14px;
  line-height: 1.6;
  color: var(--ink-2);
  margin-top: 6px;
}

.ecw-content .article ul, .ecw-content .article ol {
  padding-left: 22px;
}
.ecw-content .article ul li, .ecw-content .article ol li {
  margin: 6px 0;
}

/* Figure */
.ecw-content figure {
  margin: 28px 0;
}
.ecw-content figure .ph {
  width: 100%;
  aspect-ratio: 16 / 7;
  border: 1px solid var(--hairline);
  background:
    repeating-linear-gradient(135deg, transparent 0 14px, var(--hairline-2) 14px 15px),
    var(--bg);
  display: flex; align-items: center; justify-content: center;
  color: var(--muted);
  font-size: 12px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}
.ecw-content figcaption {
  font-size: 12.5px;
  color: var(--muted);
  margin-top: 8px;
  line-height: 1.55;
  font-family: var(--font-body-zh);
}
.ecw-content figcaption b {
  color: var(--ink-2);
  font-weight: 600;
}

/* Sources appendix — 4 卡片 grid（衝出 720 文章欄到 1280）*/
.ecw-content .sources-appendix {
  margin-top: 96px;
  padding-top: 32px;
  border-top: 1px solid var(--hairline);
  /* round-6: was a viewport-centred breakout (width:min(1280..); left:50%;
   * translateX(-50%)). Once the article stopped being viewport-centred that
   * pushed the block to left:-79px on old issues. Sit within the column. */
  width: auto;
}
.ecw-content .sources-title {
  font-size: 12px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--muted);
  font-weight: 600;
  margin: 0 0 6px;
  font-family: var(--font-body-zh);
}
.ecw-content .sources-intro {
  font-size: 13.5px;
  color: var(--muted);
  margin: 0 0 24px;
  font-family: var(--font-display-zh);
  font-style: italic;
  max-width: 540px;
}
.ecw-content .sources-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));   /* round-6: adapt to the reading column width */
  gap: 16px;
}
.ecw-content .source-card {
  border: 1px solid var(--hairline);
  border-radius: 2px;
  padding: 18px 16px 14px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  background: transparent;
}
.ecw-content .source-card .source-label {
  font-size: 10.5px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--muted);
  font-weight: 600;
  font-family: var(--font-body-zh);
}
.ecw-content .source-card .source-count {
  font-family: var(--font-body-zh);
  font-size: 32px;
  font-weight: 600;
  letter-spacing: -0.025em;
  color: var(--ink);
  line-height: 1;
  font-feature-settings: "tnum";
}
.ecw-content .source-card .source-count .unit {
  font-size: 11.5px;
  font-weight: 500;
  color: var(--muted);
  letter-spacing: 0.04em;
  margin-left: 6px;
  font-family: var(--font-body-zh);
}
.ecw-content .source-card .source-count .pending {
  font-family: var(--font-display-zh);
  font-style: italic;
  font-size: 22px;
  color: var(--muted);
  font-weight: 400;
}
.ecw-content .source-card ul {
  list-style: none;
  padding: 0;
  margin: 2px 0 0;
  font-size: 13px;
  line-height: 1.5;
  color: var(--ink-2);
  /* 主動允許單詞 wrap，但不要逐字斷 */
  word-break: keep-all;
  overflow-wrap: anywhere;
}
.ecw-content .source-card ul li {
  padding: 6px 0;
  border-bottom: 1px solid var(--hairline-2);
  white-space: normal;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.ecw-content .source-card ul li .li-zh {
  font-size: 11.5px;
  color: var(--muted);
  letter-spacing: 0.02em;
  line-height: 1.45;
}
.ecw-content .source-card ul li:last-child { border-bottom: 0; }
.ecw-content .source-card .source-more {
  margin-top: auto;
  padding-top: 10px;
  font-size: 11.5px;
  color: var(--accent);
  text-decoration: none;
  letter-spacing: 0.04em;
  font-weight: 500;
  font-family: var(--font-body-zh);
}
.ecw-content .source-card .source-more:hover { text-decoration: underline; text-underline-offset: 3px; }

@media (max-width: 1100px) {
  .ecw-content .sources-grid { grid-template-columns: repeat(2, 1fr); }
  .ecw-content .sources-appendix { width: calc(100vw - 48px); }
}
@media (max-width: 600px) {
  .ecw-content .sources-grid { grid-template-columns: 1fr; }
  .ecw-content .sources-appendix { width: calc(100vw - 24px); }
}

/* References list */
.ecw-content .refs {
  margin-top: 64px;
  padding-top: 24px;
  border-top: 1px solid var(--hairline);
  font-family: var(--font-body-zh);
}
.ecw-content .refs h3 {
  font-size: 11px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--muted);
  margin: 0 0 12px;
  font-weight: 600;
}
.ecw-content .refs ol {
  list-style: decimal;
  padding-left: 22px;
}
.ecw-content .refs li {
  font-size: 13.5px;
  line-height: 1.6;
  color: var(--ink-2);
  margin: 8px 0;
}
.ecw-content .refs li i { font-style: italic; color: var(--muted); }

/* ── Goldmark footnotes（「引用」區）— round-5 ──────────────────────────
 * These inherit 18px body size and expand into a second article; drop two
 * levels so the citations read as an appendix, not a follow-up essay. */
.ecw-content .article-content .footnotes {
  font-size: 14px;
  margin-top: 8px;
}
.ecw-content .article-content .footnotes hr {
  display: none;                   /* the 引用 H2 already separates it */
}
.ecw-content .article-content .footnotes ol { padding-left: 20px; }
.ecw-content .article-content .footnotes li {
  font-size: 14px;
  margin: 0.4em 0;
}
.ecw-content .article-content .footnotes li p {
  font-size: 14px;
  line-height: 1.7;
  color: var(--ink-2);
  font-family: var(--font-body-zh);
  margin: 0 0 0.4em;
}
.ecw-content .article-content .footnotes a { color: var(--muted); }
.ecw-content .article-content .footnotes a:hover { color: var(--accent); }
.ecw-content .footnote-backref { text-decoration: none; font-size: 12px; margin-left: 4px; }
/* Adjacent footnote refs [^a][^b] rendered「12」— separate them into「1, 2」*/
.ecw-content .article-content sup + sup::before {
  content: ", ";
  color: var(--muted);
}

/* 列表頁 rail 「本週各源新增」 stat list */
.ecw-content .source-stat-list {
  display: flex;
  flex-direction: column;
  gap: 0;
}
.ecw-content .source-stat {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  padding: 10px 0;
  border-bottom: 1px solid var(--hairline-2);
  text-decoration: none;
  color: inherit;
  font-family: var(--font-body-zh);
}
.ecw-content .source-stat:last-child { border-bottom: 0; }
.ecw-content .source-stat:hover { color: var(--accent); }
.ecw-content .source-stat .source-stat-label {
  font-size: 12.5px;
  color: var(--ink-2);
  font-weight: 500;
}
.ecw-content .source-stat:hover .source-stat-label { color: var(--accent); }
.ecw-content .source-stat .source-stat-count {
  font-family: var(--font-body-zh);
  font-size: 18px;
  font-weight: 600;
  letter-spacing: -0.02em;
  font-feature-settings: "tnum";
  color: var(--ink);
}
.ecw-content .source-stat:hover .source-stat-count { color: var(--accent); }

/* Sources archive list（時間流，hairline 分隔，no card 陰影）*/
.ecw-content .archive-list {
  display: flex;
  flex-direction: column;
}
.ecw-content .archive-item {
  padding: 24px 0;
  border-bottom: 1px solid var(--hairline);
}
.ecw-content .archive-item:last-child { border-bottom: 0; }
.ecw-content .archive-item .archive-source {
  font-size: 11px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--muted);
  font-weight: 600;
  font-family: var(--font-body-zh);
  margin-bottom: 8px;
}
.ecw-content .archive-item .archive-title {
  font-family: var(--font-body-zh);
  font-size: 19px;
  font-weight: 600;
  line-height: 1.35;
  letter-spacing: -0.01em;
  color: var(--ink);
  margin: 0 0 10px;
}
.ecw-content .archive-item .archive-title a {
  color: inherit;
  text-decoration: none;
  background-image: linear-gradient(transparent calc(100% - 1px), var(--hairline) calc(100% - 1px));
  background-repeat: no-repeat;
  background-size: 0 100%;
  transition: background-size 200ms, color 200ms;
}
.ecw-content .archive-item .archive-title a:hover {
  color: var(--accent);
  background-size: 100% 100%;
  background-image: linear-gradient(transparent calc(100% - 1px), var(--accent) calc(100% - 1px));
}
.ecw-content .archive-item .archive-summary {
  font-size: 14.5px;
  line-height: 1.65;
  color: var(--ink-2);
  margin: 0 0 12px;
  max-width: 760px;
}
.ecw-content .archive-item .archive-meta-row {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  align-items: center;
  font-size: 12px;
  color: var(--muted);
  font-family: var(--font-body-zh);
}
.ecw-content .archive-item .archive-meta-row .chip {
  height: 20px;
  padding: 0 7px;
  font-size: 10.5px;
}
.ecw-content .archive-item code {
  font-family: var(--font-body-zh);
  font-size: 13px;
  background: var(--code-bg);
  padding: 1px 6px;
  border-radius: 2px;
}

/* Mobile-specific */
.ecw-content.mobile {
  font-size: 16px;
}
.ecw-content.mobile .row {
  grid-template-columns: 1fr;
  gap: 8px;
  padding: 22px 0;
}
.ecw-content.mobile .row .week { font-size: 22px; }
.ecw-content.mobile .row .head { font-size: 18px; }
.ecw-content.mobile .article .article-title { font-size: 36px; line-height: 1.12; }
.ecw-content.mobile .article .article-sub { font-size: 22px; line-height: 1.3; }
.ecw-content.mobile .article p, .ecw-content.mobile .article li { font-size: 18px; }
.ecw-content.mobile .hero { padding: 32px 0 24px; }
.ecw-content.mobile .hero .tagline { font-size: 26px; }
.ecw-content.mobile .article { padding: 24px 0 60px; max-width: 100%; }
.ecw-content.mobile .article h2 { font-size: 22px; margin: 2.4em 0 0.6em; }

/* 3-col layout for desktop list */
.ecw-content .layout-list {
  display: grid;
  grid-template-columns: 1fr 220px;
  gap: 64px;
  max-width: 1100px;
  margin: 0 auto;
  padding: 0 32px;
}

/* round-6: content + right-TOC pair, no empty left gutter.
 * round-5 centred the 680 article between two empty side columns — on wide
 * screens that read as a thin strip floating in whitespace. Now the reading
 * column is wider (820) and left-anchored to the outer margin; the pair is
 * centred as a block, so the content actually uses the horizontal space. */
.ecw-content .layout-article {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 240px;
  gap: 64px;
  max-width: 1220px;
  margin: 0 auto;
  padding: 0 48px;
  align-items: start;
}
.ecw-content .layout-article .left { display: none; }   /* round-6: empty spacer dropped */
/* Below 1080 the TOC gives way to the reading column. */
@media (max-width: 1080px) {
  .ecw-content .layout-article {
    grid-template-columns: minmax(0, 1fr);
    gap: 24px;
    padding: 0 24px;
  }
  .ecw-content .layout-article .right { display: none; }
}
.ecw-content .layout-article .right {
  padding-top: 80px;
  position: sticky;
  top: 76px;                       /* topbar 高 56 + 20 緩衝 */
  align-self: start;
  max-height: calc(100vh - 80px);
  overflow-y: auto;                /* TOC 太長時自己捲，不影響主文 */
  transition: opacity 250ms ease, visibility 250ms ease;
}
.ecw-content .layout-article .right.is-hidden {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

/* small note row */
.ecw-content .note-row {
  font-family: var(--font-body-zh);
  font-size: 12px;
  color: var(--muted);
  letter-spacing: 0.04em;
}

/* Logo mark — single-stroke ECG */
.ecw-content .ecg-mark {
  display: inline-block;
  width: 28px; height: 14px;
  vertical-align: middle;
}
.ecw-content .ecg-mark path {
  stroke: var(--accent);
  stroke-width: 1.4;
  fill: none;
}

/* Mobile TOC drawer */
.ecw-content.mobile .topbar { padding: 0 16px; height: 52px; }
.ecw-content.mobile .topbar .brand { font-size: 11px; letter-spacing: 0.24em; }

/* Frame card outer (the artboard's own frame) */
.ecw-content .artboard-frame {
  background: var(--bg);
  height: 100%;
  width: 100%;
  position: relative;
  overflow: hidden;
}

/* Reset for mobile artboards */
.ecw-content .mobile-screen {
  height: 100%;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
.ecw-content .mobile-screen .scroll {
  flex: 1;
  overflow: hidden;
  padding: 0 18px;
}

/* ── h3bi（雙語 H3：英文主標 + 繁中副標分行） ──────────────────────────── */
.ecw-content .article-content h3.h3bi,
.ecw-content .article h3.h3bi {
  margin-top: 36px;
  margin-bottom: 18px;
  line-height: 1.35;
  letter-spacing: 0;
}
.ecw-content .h3bi .h3bi-en {
  display: block;
  font-size: 22px;
  font-weight: 700;
  letter-spacing: 0.005em;
  color: var(--ink);
}
.ecw-content .h3bi .h3bi-zh {
  display: block;
  font-size: 17px;
  font-weight: 500;
  color: var(--ink);
  margin-top: 6px;
  letter-spacing: 0.04em;
}
.ecw-content .h3bi .h3bi-meta {
  color: var(--ink-2);
  font-weight: 400;
  font-style: italic;
  font-size: 14px;
  margin-left: 4px;
}

/* ── 表格內中文副標（接在英文 paper title 之後的繁中翻譯）─────────────── */
.ecw-content table .zh-sub {
  display: block;
  font-size: 13px;
  color: var(--ink-2);
  margin-top: 4px;
  line-height: 1.55;
  letter-spacing: 0.02em;
}

/* ═══════════════════════════════════════════════════════════════════════
 * ER Cardio Weekly — 三層訊號驅動改版（2026-W27 recast）
 * 全部沿用既有 token；暗色由 .ecw-content.is-dark override token 自動生效。
 * ═══════════════════════════════════════════════════════════════════════ */

/* ── Tier-1：本週臨床改動卡 ─────────────────────────────────────────── */
.ecw-content .practice-changes {
  border: 1px solid var(--accent);
  background: var(--accent-bg);
  border-radius: 4px;
  padding: 22px 24px;
  margin: 32px 0 40px;
}
.ecw-content .practice-changes .pc-head {
  font-family: var(--font-body-zh);
  font-size: 12px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  font-weight: 700;
  color: var(--accent);
}
.ecw-content .practice-changes .pc-sub {
  font-size: 12.5px;
  color: var(--muted);
  margin-top: 6px;
}
.ecw-content .practice-changes ol {
  list-style: none;
  padding: 0;
  margin: 16px 0 0;
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.ecw-content .practice-changes li {
  display: grid;
  grid-template-columns: 26px 1fr;
  gap: 12px;
  align-items: baseline;
}
.ecw-content .practice-changes .pc-n {
  font-family: var(--font-body-zh);
  font-weight: 700;
  color: var(--accent);
  font-feature-settings: "tnum";
}
.ecw-content .practice-changes .pc-text {
  font-size: 16px;
  line-height: 1.55;
  color: var(--ink);
}
.ecw-content .practice-changes .pc-text b { font-weight: 700; color: var(--ink); }
.ecw-content .practice-changes .pc-src {
  font-family: var(--font-body-zh);
  font-size: 11.5px;
  color: var(--accent);
  text-decoration: none;
  margin-left: 6px;
  white-space: nowrap;
}
.ecw-content .practice-changes a.pc-src:hover { text-decoration: underline; text-underline-offset: 2px; }
@media (max-width: 760px) {
  .ecw-content .practice-changes { padding: 16px 18px; }
  .ecw-content .practice-changes .pc-text { font-size: 15px; }
}
.ecw-content.is-dark .practice-changes { background: var(--accent-soft); }

/* ── 證據分級 chip（inline）────────────────────────────────────────── */
.ecw-content .ev-chip {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-family: var(--font-body-zh);
  font-size: 11.5px;
  letter-spacing: 0.02em;
  padding: 0;
  background: transparent;         /* round-5: was a grey pill — it read as a UI button
                                    * inside serif prose; evidence grade is a note, not a control. */
  border: 0;
  color: var(--muted);
  vertical-align: middle;
  white-space: nowrap;
}
.ecw-content .ev-chip::before {
  content: "";
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--muted);
  flex: 0 0 auto;
}
.ecw-content .ev-chip.rct::before { background: var(--accent); }
.ecw-content .ev-chip.guide::before { background: #0F8A6A; }
.ecw-content .ev-chip.retro::before { background: #B8860B; }
.ecw-content .ev-chip.opinion::before { background: var(--muted); }

/* ── 標註式外連（版權不能轉載時）──────────────────────────────────── */
/* round-5: was a beige ticket-stub card with a punched perforation strip —
 * too much UI texture per section. Now a quiet left-rule epigraph so the page
 * card vocabulary stays within「紫框卡(Tier-1)＋左線題詞＋hairline」. */
.ecw-content .ecg-linkout {
  border: 0;
  border-left: 2px solid var(--accent);
  border-radius: 0;
  background: transparent;
  margin: 24px 0 28px;
  overflow: hidden;
}
.ecw-content .ecg-linkout .elo-strip { display: none; }
.ecw-content .ecg-linkout .elo-body {
  padding: 2px 0 2px 18px;
  display: flex;
  gap: 12px;
}
.ecw-content .ecg-linkout .elo-ic {
  color: var(--accent);
  font-size: 18px;
  line-height: 1.5;
  flex: 0 0 auto;
}
.ecw-content .ecg-linkout .elo-anno {
  font-size: 15px;
  line-height: 1.75;
  color: var(--ink-2);
}
.ecw-content .ecg-linkout .elo-anno b { color: var(--ink); font-weight: 600; }
.ecw-content .ecg-linkout .elo-link {
  font-family: var(--font-body-zh);
  font-size: 12px;
  color: var(--accent);
  font-weight: 600;
  text-decoration: none;
  display: inline-block;
  margin-top: 8px;
}
.ecw-content .ecg-linkout .elo-link:hover { text-decoration: underline; text-underline-offset: 2px; }

/* ── 列表頁策展一句話 ──────────────────────────────────────────────── */
.ecw-content .curation {
  font-family: var(--font-body-zh);
  font-size: 13px;
  line-height: 1.6;
  color: var(--ink-2);
}
.ecw-content .curation .big {
  font-family: var(--font-body-zh);
  font-size: 15px;
  font-weight: 600;
  color: var(--ink);
  font-feature-settings: "tnum";
}
.ecw-content .curation .muted { color: var(--muted); }

/* ── 雙軌閱讀時間：核心時間強調 ────────────────────────────────────── */
.ecw-content .article-meta .core-time { color: var(--accent); font-weight: 600; }

/* ── 列表搜尋：隱藏列 + 無結果提示 ─────────────────────────────────── */
.ecw-content .row.is-hidden { display: none; }
.ecw-content .no-result {
  padding: 40px 0;
  color: var(--muted);
  font-family: var(--font-body-zh);
  font-size: 14px;
}

/* 與 Hallmark 共用視覺變數；僅作用於週報內容。 */
.ecw-content {--bg:var(--color-paper);--ink:var(--color-ink);--ink-2:var(--color-ink-2);--muted:var(--color-ink-3);--hairline:var(--color-rule);--hairline-2:var(--color-paper-3);--accent:var(--color-accent-ink);--accent-soft:var(--color-paper-2);--accent-bg:var(--color-paper-2);--code-bg:var(--color-paper-2);--row-zebra:var(--color-paper-2);--selection:var(--color-paper-3);font-family:var(--font-display-zh);}
.ecw-content .ecw-breadcrumb {max-width:1240px;margin:0 auto;padding:28px 32px 0;display:flex;flex-wrap:wrap;gap:10px;font:12px/1.7 var(--font-body-zh);color:var(--muted);}
.ecw-content .ecw-breadcrumb a {color:var(--accent);}
.ecw-content .layout-article {max-width:1240px;grid-template-columns:minmax(0,1fr) 200px;gap:64px;padding:0 32px;margin:auto;}
.ecw-content .layout-article>.left {display:none;}
.ecw-content .article {min-width:0;padding-top:36px;}
.ecw-content .article-title {font-size:clamp(32px,4vw,54px);line-height:1.3;letter-spacing:-.02em;}
.ecw-content .article-sub {font-size:20px;line-height:1.75;color:var(--ink-2);font-family:var(--font-body-zh);}
.ecw-content .article p,.ecw-content .article li {line-height:1.85;}
.ecw-content .right {padding-top:45px;}
.ecw-content .toc {top:90px;}
.ecw-content h2[id],.ecw-content h3[id],.ecw-content [id^="fn:"] {scroll-margin-top:85px;}
.ecw-content .practice-changes {border:0;border-left:3px solid var(--color-accent);border-radius:0;background:var(--color-paper-2);}
.ecw-content .hero {border-bottom:1px solid var(--color-rule);padding:40px 0;}
.ecw-content .hero .tagline {font-size:clamp(36px,5vw,58px);line-height:1.25;}
.ecw-content .wordmark .ecg-mark {display:none;}
.ecw-content .hero-inner {max-width:1240px;padding:0 32px;}
.ecw-content .layout-list {max-width:1240px;padding-left:32px;padding-right:32px;margin:auto;}
.ecw-content .progress-track {z-index:50;}
@media(max-width:760px){.ecw-content .layout-article{grid-template-columns:minmax(0,1fr)!important;padding:0 20px;gap:0;}.ecw-content .ecw-breadcrumb{padding:22px 20px 0;gap:8px;font-size:11px;}.ecw-content .article{padding-top:24px;}.ecw-content .article-sub{font-size:17px;line-height:1.7;}.ecw-content .article p,.ecw-content .article li{font-size:17px;}.ecw-content .hero-inner{padding:0 20px;}.ecw-content .subscribe{flex-wrap:wrap;}.ecw-content .subscribe>span{flex-basis:100%!important;}}
@media(min-width:761px) and (max-width:1080px){.ecw-content .layout-article{grid-template-columns:minmax(0,1fr);max-width:920px;gap:0;}}
@media(max-width:760px){
  .ecw-content .article .article-title{font-size:32px;line-height:1.35;letter-spacing:-.02em;}
  .ecw-content .article .article-sub{font-size:17px;line-height:1.75;}
  .ecw-content .article-meta{display:flex;flex-wrap:wrap;gap:8px 12px;font-size:12px;line-height:1.6;}
  .ecw-content .article-meta>span{white-space:nowrap;}
  .ecw-content .article-meta>.dot{display:none;}
}
.ecw-content .hero-left .tagline,.ecw-content .row .head{font-family:var(--font-display-zh);}
.ecw-content .row .week{font-family:var(--font-body);font-size:20px;white-space:nowrap;letter-spacing:-.03em;}
