/*
 * Web font stack — Chinese UI copy uses Noto Sans SC and Chinese editorial
 * copy uses Noto Serif SC, both loaded from Google Fonts (with the local
 * @font-face copies in fonts.css kept as an offline fallback). Latin stays
 * on Geist / Newsreader. The stacks deliberately avoid Microsoft YaHei /
 * SimSun on Windows hosts.
 */
/*
 * Socrates brand layer
 *
 * This file is intentionally loaded last on every static site page. The
 * original pages use three generations of CSS and several functional pages
 * keep inline styles for their JS hooks. This layer owns the shared visual
 * language while leaving those hooks and component names intact.
 */
:root {
  --site-paper: #f4f1e9;
  --site-paper-soft: #faf9f5;
  --site-paper-strong: #eee8dc;
  --site-sand: #e5dbc9;
  --site-ink: #171716;
  --site-ink-soft: #56534e;
  --site-ink-muted: #77716a;
  --site-line: #d9d0c3;
  --site-black: #171716;
  --site-clay: #9a5a3b;
  /* Latin UI sans — Geist is the product's default. Inter is a visual
     sibling that most readers already have, so it's a safe fallback. The
     system stacks after Inter are deliberately limited so CJK characters
     never collapse onto Microsoft YaHei / SimSun on Windows hosts. */
  --site-sans-latin: var(--font-sans);
  /* CJK UI sans — the Latin families (Geist / Inter) are listed FIRST so
     any Latin glyph inside a Chinese page renders with the English-interface
     sans, and CJK glyphs fall through to Noto Sans SC (Google Fonts). */
  --site-sans-cjk: var(--font-sans);
  /* Latin editorial serif — Newsreader is a contemporary book serif that
     stays comfortable at long measure without the museum-piece weight of
     Spectral or Source Serif. Geist is intentionally NOT in this stack:
     it reads as "UI sans" and loses the quiet differentiation we want
     between the marketing display and the body copy. */
  --site-serif-latin: var(--font-serif);
  /* CJK editorial serif — the Latin families (Newsreader …) are listed
     FIRST so embedded English inside a Chinese page matches the
     English-interface serif; CJK glyphs fall through to Noto Serif SC
     (Google Fonts), with Songti SC kept only as a local fallback. */
  --site-serif-cjk: var(--font-serif);
  --site-mono: var(--font-mono);
  --site-shadow: none;

  /* HSL aliases retained for the functional pages' inline styles. */
  --bg-000: 0 0% 100%;
  --bg-100: 40 24% 98%;
  --bg-200: 38 25% 95%;
  --bg-300: 35 17% 90%;
  --bg-400: 30 8% 9%;
  --neu-bg: 40 24% 98%;
  --neu-bg-deep: 38 25% 95%;
  --neu-bg-darker: 35 17% 90%;
  --neu-surface: 0 0% 100%;
  --neu-line: 34 18% 78%;
  --neu-line-soft: 34 18% 86%;
  --neu-line-strong: 30 8% 9%;
  --text-000: 30 8% 9%;
  --text-100: 30 8% 14%;
  --text-200: 30 6% 29%;
  --text-300: 30 5% 43%;
  --text-400: 30 4% 49%;
  --text-500: 30 4% 56%;
  --accent-000: 30 8% 9%;
  --accent-100: 30 7% 18%;
  --accent-200: 30 5% 33%;
  --accent-soft: 30 5% 43%;
  --accent-900: 40 24% 98%;
  --border-100: 34 18% 78%;
  --border-300: 34 18% 78%;
  --brand-000: 30 8% 9%;
  --brand-100: 30 8% 9%;
  --oncolor-100: 40 24% 98%;
  /* --font-sans / --font-serif / --font-mono are canonical in fonts.css.
     Do NOT redefine them here (a previous alias created a resolution cycle). */
  --font-display: var(--font-sans);

  /* Legacy marketing aliases. */
  --mk-bg: var(--site-paper);
  --mk-bg-deep: var(--site-paper-strong);
  --mk-surface: var(--site-paper-soft);
  --mk-surface-2: var(--site-paper-strong);
  --mk-line: rgba(23, 23, 22, .14);
  --mk-line-soft: rgba(23, 23, 22, .08);
  --mk-line-strong: rgba(23, 23, 22, .28);
  --mk-text: var(--site-ink);
  --mk-text-90: rgba(23, 23, 22, .90);
  --mk-text-70: rgba(23, 23, 22, .70);
  --mk-text-60: rgba(23, 23, 22, .60);
  --mk-text-50: rgba(23, 23, 22, .50);
  --mk-text-40: rgba(23, 23, 22, .40);
  --mk-text-30: rgba(23, 23, 22, .30);
  --mk-sunset: var(--site-clay);
  --mk-sunset-border: rgba(154, 90, 59, .42);
  --mk-sans: var(--site-sans-latin);
  --mk-mono: var(--site-mono);
}

html:lang(zh) {
  /* Display uses the serif CJK stack so embedded Latin matches the
     English-interface display (Newsreader) and Chinese uses Noto Serif SC. */
  --font-display: var(--font-serif);
  --mk-sans: var(--site-sans-cjk);
}

*, *::before, *::after { box-sizing: border-box; }
html {
  background: var(--site-paper);
  scroll-behavior: smooth;
}
body {
  min-width: 320px;
  margin: 0;
  padding-top: 0 !important;
  overflow-x: hidden;
  color: var(--site-ink);
  background: var(--site-paper);
  font-family: var(--site-sans-latin);
  font-size: 16px;
  line-height: 1.55;
  letter-spacing: -.012em;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}
html:lang(zh) body {
  font-family: var(--site-sans-cjk);
  letter-spacing: .01em;
  line-height: 1.72;
}
body::selection { color: var(--site-paper); background: var(--site-ink); }
a { color: inherit; }
button, input, select, textarea { font: inherit; }
img { display: block; max-width: 100%; height: auto; }
:focus-visible { outline: 2px solid var(--site-clay); outline-offset: 4px; }
.bg-grid { display: none !important; }

/* Editorial pages ------------------------------------------------------ */
body.ed-site {
  color: var(--site-ink);
  background: var(--site-paper);
  font-family: var(--site-sans-latin);
  letter-spacing: -.012em;
}
html:lang(zh) body.ed-site { font-family: var(--site-sans-cjk); letter-spacing: .01em; }
body.ed-site .ed-shell { width: min(1272px, calc(100% - 64px)); }
body.ed-site .ed-header { padding-top: 16px; background: var(--site-paper); }
body.ed-site .ed-header-inner { min-height: 52px; }
body.ed-site .ed-brand { color: var(--site-ink); }
body.ed-site .ed-footer .ed-brand { color: var(--ed-paper); }
body.ed-site .ed-brand img {
  width: 26px;
  height: 26px;
  flex: 0 0 26px;
  border-radius: 7px;
  background: var(--site-black);
  padding: 3px;
  box-sizing: border-box;
  object-fit: contain;
}
body.ed-site .ed-nav-links a,
body.ed-site .ed-header-language { color: var(--site-ink-soft); }
body.ed-site .ed-nav-links a:hover,
body.ed-site .ed-nav-links a[aria-current="page"],
body.ed-site .ed-header-language:hover { color: var(--site-ink); }
body.ed-site .ed-button { color: var(--site-paper); background: var(--site-ink); border-color: var(--site-ink); }
body.ed-site .ed-button:hover { color: #fff; background: #000; border-color: #000; }
body.ed-site .ed-button-quiet {
  background: transparent;
  color: var(--site-ink);
  border: 1px solid var(--site-line);
}
body.ed-site .ed-button-quiet:hover {
  background: var(--site-paper-soft);
  border-color: var(--site-ink);
  color: var(--site-ink);
}
/* Anthropic-style type hierarchy: serif for display + prose, sans for UI chrome.
   The serif is now Newsreader (loaded as a webfont) so English editorial
   copy reads as a book face rather than a UI sans. Chinese pages fall
   back to Noto Serif SC through html:lang(zh) overrides below. */
body.ed-site .ed-display,
body.ed-site .ed-page-title,
body.ed-site .ed-title,
body.ed-site .ed-statement-title,
body.ed-site .ed-reference-title,
body.ed-site .ed-news-hero h1,
body.ed-site .ed-learning-hero h1,
body.ed-site .ed-research-coda h2,
body.ed-site .ed-policy-manifesto h2,
body.ed-site .ed-course-intro h2,
body.ed-site .ed-learning-object h2,
body.ed-site .ed-network-copy h2 {
  font-family: var(--site-serif-latin);
  font-weight: 500;
  letter-spacing: -.014em;
  line-height: 1.08;
  font-feature-settings: "kern", "liga", "calt";
}
body.ed-site .ed-display { font-size: clamp(44px, 5.4vw, 80px); line-height: 1.06; }
body.ed-site .ed-page-title { max-width: 14ch; font-size: clamp(44px, 5.2vw, 72px); }
body.ed-site .ed-title { font-size: clamp(32px, 3.4vw, 52px); font-weight: 400; line-height: 1.1; }
body.ed-site .ed-title.ed-artifact {
  font-family: var(--site-sans-latin);
  font-weight: 600;
  letter-spacing: -.03em;
  line-height: 1.06;
}
body.ed-site .ed-statement-title { font-size: clamp(34px, 3.6vw, 56px); }
body.ed-site .ed-reference-title,
body.ed-site .ed-news-hero h1,
body.ed-site .ed-learning-hero h1 { font-size: clamp(44px, 5.4vw, 80px); }
body.ed-site .ed-research-coda h2,
body.ed-site .ed-policy-manifesto h2,
body.ed-site .ed-policy-visual h2,
body.ed-site .ed-course-intro h2,
body.ed-site .ed-learning-object h2,
body.ed-site .ed-network-copy h2 { font-size: clamp(32px, 3.8vw, 56px); }
body.ed-site .ed-serif,
body.ed-site .ed-copy-serif,
body.ed-site .ed-footer-brand p,
body.ed-site .ed-product-block h2,
body.ed-site .ed-contact-card h2,
body.ed-site .ed-price-card h2,
body.ed-site .ed-policy-visual h2 { font-family: var(--site-serif-latin); font-weight: 500; }
body.ed-site .ed-copy { font-size: 17px; line-height: 1.62; }
body.ed-site .ed-copy-serif { font-size: clamp(18px, 1.4vw, 22px); line-height: 1.48; }
body.ed-site .ed-team-grid h2,
body.ed-site .ed-showcase-entry h2,
body.ed-site .ed-principle h3,
body.ed-site .ed-essay-row .ed-essay-title {
  font-family: var(--site-sans-latin);
  font-weight: 500;
  letter-spacing: -.018em;
}
html:lang(zh) body.ed-site .ed-display,
html:lang(zh) body.ed-site .ed-page-title,
html:lang(zh) body.ed-site .ed-title,
html:lang(zh) body.ed-site .ed-statement-title,
html:lang(zh) body.ed-site .ed-reference-title,
html:lang(zh) body.ed-site .ed-news-hero h1,
html:lang(zh) body.ed-site .ed-learning-hero h1,
html:lang(zh) body.ed-site .ed-serif,
html:lang(zh) body.ed-site .ed-copy-serif,
html:lang(zh) body.ed-site .ed-footer-brand p,
html:lang(zh) body.ed-site .ed-product-block h2,
html:lang(zh) body.ed-site .ed-contact-card h2,
html:lang(zh) body.ed-site .ed-price-card h2 {
  /* Mirror the English interface: display/headings use the serif stack
     (Latin → Newsreader), so Chinese uses Noto Serif SC from Google Fonts. */
  font-family: var(--site-serif-cjk);
  letter-spacing: .02em;
  line-height: 1.3;
  font-weight: 600;
  text-wrap: balance;
}
html:lang(zh) body.ed-site .ed-serif,
html:lang(zh) body.ed-site .ed-copy-serif,
html:lang(zh) body.ed-site .ed-footer-brand p {
  font-family: var(--site-serif-cjk);
  line-height: 1.72;
  letter-spacing: .02em;
  font-weight: 500;
  text-wrap: pretty;
}
body.ed-site .ed-page-hero { padding: clamp(72px, 9vw, 116px) 0 46px; }
body.ed-site .ed-section { padding: clamp(62px, 8vw, 120px) 0; }
body.ed-site .ed-section-tight { padding: clamp(44px, 6vw, 84px) 0; }
body.ed-site .ed-footer { padding: 18px 0 28px; }
body.ed-site .ed-footer-frame { background: var(--site-black); }

/* Old marketing pages ------------------------------------------------- */
body.mk-page {
  color: var(--site-ink);
  background: var(--site-paper);
  font-family: var(--site-sans-latin);
  letter-spacing: -.012em;
}
html:lang(zh) body.mk-page { font-family: var(--site-sans-cjk); letter-spacing: .01em; }
body.mk-page .mk-shell { width: min(1272px, calc(100% - 64px)); }
body.mk-page .mk-nav {
  position: relative;
  background: var(--site-paper);
  border-bottom: 1px solid var(--site-line);
  box-shadow: none;
  backdrop-filter: none;
}
body.mk-page .mk-nav-inner { min-height: 68px; }
body.mk-page .mk-brand,
body.mk-page .mk-brand-word { color: var(--site-ink); }
body.mk-page .mk-nav-links a { color: var(--site-ink-soft); border-radius: 0; }
body.mk-page .mk-nav-links a:hover,
body.mk-page .mk-nav-links a[aria-current="page"] { color: var(--site-ink); background: transparent; text-decoration: underline; text-underline-offset: 6px; }
body.mk-page .mk-nav-login { color: var(--site-ink-soft) !important; border-color: var(--site-line); }
body.mk-page .mk-nav-login:hover { color: var(--site-ink) !important; border-color: var(--site-ink); }
body.mk-page .mk-btn-primary,
body.mk-page .mk-btn-dark { color: var(--site-paper); background: var(--site-ink); border-color: var(--site-ink); }
body.mk-page .mk-btn-primary:hover,
body.mk-page .mk-btn-dark:hover { color: #fff; background: #000; border-color: #000; }
body.mk-page .mk-btn-quiet { color: var(--site-ink); border-color: var(--site-line); }
body.mk-page .mk-display,
body.mk-page .mk-title {
  color: var(--site-ink);
  font-size: clamp(48px, 6vw, 88px);
  letter-spacing: -.045em;
  line-height: .98;
}
body.mk-page .mk-title em,
body.mk-page .mk-title .dim,
body.mk-page .mk-display em,
body.mk-page .mk-display .dim { color: var(--site-ink-muted); }
body.mk-page .mk-lede,
body.mk-page .mk-copy { color: var(--site-ink-soft); }
body.mk-page .mk-module,
body.mk-page .mk-plan-row,
body.mk-page .mk-faq-item,
body.mk-page .mk-cta-band { border-color: var(--site-line); background: var(--site-paper-soft); color: var(--site-ink); }
body.mk-page .mk-module p,
body.mk-page .mk-plan-summary,
body.mk-page .mk-faq-answer,
body.mk-page .mk-cta-band p { color: var(--site-ink-soft); }
body.mk-page .mk-section-line,
body.mk-page .mk-changelog,
body.mk-page .mk-rail { border-color: var(--site-line); }
body.mk-page .mk-tag,
body.mk-page .mk-compatibility-chip { color: var(--site-ink-soft); border-color: var(--site-line); background: transparent; }
body.mk-page .mk-footer { color: var(--site-paper); background: var(--site-black); border-top: 0; }
body.mk-page .mk-footer a { color: rgba(244, 241, 233, .72); }
body.mk-page .mk-footer a:hover { color: #fff; }
html:lang(zh) body.mk-page .mk-display,
html:lang(zh) body.mk-page .mk-title,
html:lang(zh) body.mk-page h1,
html:lang(zh) body.mk-page h2,
html:lang(zh) body.mk-page h3,
html:lang(zh) body.mk-page h4 {
  font-family: var(--site-sans-cjk);
  letter-spacing: 0;
  line-height: 1.14;
}

/* Account / billing / API pages -------------------------------------- */
body:not(.ed-site):not(.mk-page) .page { background: var(--site-paper); }
body:not(.ed-site):not(.mk-page):not(.xa-page) {
  color: var(--site-ink) !important;
  background: var(--site-paper) !important;
}
body:not(.ed-site):not(.mk-page):not(.xa-page) .page { background: var(--site-paper) !important; }
body:not(.ed-site):not(.mk-page) .page > nav {
  position: relative;
  z-index: 10;
  background: var(--site-paper);
  border-bottom: 1px solid var(--site-line);
  box-shadow: none;
}
body:not(.ed-site):not(.mk-page) .page > nav .nav-inner {
  width: min(1272px, calc(100% - 64px));
  min-height: 68px;
  margin: 0 auto;
}
body:not(.ed-site):not(.mk-page) .page > nav .nav-logo,
body:not(.ed-site):not(.mk-page) .page > nav .nav-logo span { color: var(--site-ink); }
body:not(.ed-site):not(.mk-page) .page > nav .nav-links a { color: var(--site-ink-soft); }
body:not(.ed-site):not(.mk-page) .page > nav .nav-links a:hover,
body:not(.ed-site):not(.mk-page) .page > nav .nav-links a.nav-active { color: var(--site-ink); }
body:not(.ed-site):not(.mk-page) .page > nav .nav-links .cta-btn {
  color: var(--site-paper) !important;
  background: var(--site-ink);
  border-color: var(--site-ink);
}
body:not(.ed-site):not(.mk-page) .page > nav .nav-links .cta-btn:hover { color: #fff !important; background: #000; }
body:not(.ed-site):not(.mk-page) .page-header {
  width: min(1272px, calc(100% - 64px));
  margin: 0 auto;
  padding: clamp(70px, 8vw, 112px) 0 42px;
  text-align: left;
}
body:not(.ed-site):not(.mk-page) .page-header h1 {
  max-width: 12ch;
  color: var(--site-ink);
  font-family: var(--site-sans-latin);
  font-size: clamp(46px, 6vw, 76px);
  font-weight: 600;
  letter-spacing: -.045em;
  line-height: .98;
}
body:not(.ed-site):not(.mk-page) .page-header h1 strong { color: var(--site-ink-muted); font-weight: 500; }
body:not(.ed-site):not(.mk-page) .page-header p { max-width: 42ch; color: var(--site-ink-soft); }
body:not(.ed-site):not(.mk-page) section { background: transparent; }
body:not(.ed-site):not(.mk-page) .section-inner { width: min(780px, calc(100% - 64px)); }
body:not(.ed-site):not(.mk-page) .section-eyebrow { color: var(--site-ink-muted); }
body:not(.ed-site):not(.mk-page) .btn-primary,
body:not(.ed-site):not(.mk-page) .confirm-btn.primary,
body:not(.ed-site):not(.mk-page) .checkout-submit {
  color: var(--site-paper) !important;
  background: var(--site-ink);
  border-color: var(--site-ink);
}
body:not(.ed-site):not(.mk-page) .btn-primary:hover,
body:not(.ed-site):not(.mk-page) .confirm-btn.primary:hover,
body:not(.ed-site):not(.mk-page) .checkout-submit:hover { color: #fff !important; background: #000; }
body:not(.ed-site):not(.mk-page) .btn-outline { color: var(--site-ink) !important; border-color: var(--site-line); }
body:not(.ed-site):not(.mk-page) .btn-outline:hover { background: var(--site-paper-strong); }
body:not(.ed-site):not(.mk-page) input,
body:not(.ed-site):not(.mk-page) select,
body:not(.ed-site):not(.mk-page) textarea,
body:not(.ed-site):not(.mk-page) .checkout-card,
body:not(.ed-site):not(.mk-page) .profile-card,
body:not(.ed-site):not(.mk-page) .apikey-form,
body:not(.ed-site):not(.mk-page) .apikey-card,
body:not(.ed-site):not(.mk-page) .acct-card,
body:not(.ed-site):not(.mk-page) .checkout-plan {
  color: var(--site-ink);
  background: var(--site-paper-soft);
  border-color: var(--site-line);
  box-shadow: none;
}
body:not(.ed-site):not(.mk-page) input::placeholder,
body:not(.ed-site):not(.mk-page) textarea::placeholder { color: var(--site-ink-muted); }
body:not(.ed-site):not(.mk-page) label,
body:not(.ed-site):not(.mk-page) .hint,
body:not(.ed-site):not(.mk-page) .checkout-footnote { color: var(--site-ink-muted); }
body:not(.ed-site):not(.mk-page) .checkout-plan.featured,
body:not(.ed-site):not(.mk-page) .checkout-plan:has(input:checked) { border-color: var(--site-ink); }
body:not(.ed-site):not(.mk-page) .modal-box,
body:not(.ed-site):not(.mk-page) .payment-card,
body:not(.ed-site):not(.mk-page) .toast { color: var(--site-ink); background: var(--site-paper-soft); border-color: var(--site-line); }
body:not(.ed-site):not(.mk-page) footer {
  margin-top: 72px;
  color: var(--site-paper);
  background: var(--site-black);
  border-top: 0;
}
body:not(.ed-site):not(.mk-page) footer .footer-inner { width: min(1272px, calc(100% - 64px)); }
body:not(.ed-site):not(.mk-page) footer a { color: rgba(244, 241, 233, .72); }
body:not(.ed-site):not(.mk-page) footer a:hover { color: #fff; }
html:lang(zh) body:not(.ed-site):not(.mk-page) .page-header h1,
html:lang(zh) body:not(.ed-site):not(.mk-page) h1,
html:lang(zh) body:not(.ed-site):not(.mk-page) h2,
html:lang(zh) body:not(.ed-site):not(.mk-page) h3,
html:lang(zh) body:not(.ed-site):not(.mk-page) button,
html:lang(zh) body:not(.ed-site):not(.mk-page) input,
html:lang(zh) body:not(.ed-site):not(.mk-page) select,
html:lang(zh) body:not(.ed-site):not(.mk-page) textarea { font-family: var(--site-sans-cjk); letter-spacing: 0; }
html:lang(zh) body:not(.ed-site):not(.mk-page) h1,
html:lang(zh) body:not(.ed-site):not(.mk-page) h2,
html:lang(zh) body:not(.ed-site):not(.mk-page) h3 { letter-spacing: 0 !important; }

/* Legal pages --------------------------------------------------------- */
body.legal-page .page-header {
  width: min(1272px, calc(100% - 64px));
  max-width: none;
  padding-top: clamp(72px, 8vw, 112px);
  padding-bottom: 44px;
}
body.legal-page .page-header h1 { max-width: none; font-size: clamp(48px, 5.2vw, 64px); }
body.legal-page .page-header p { margin-top: 20px; font-family: var(--site-serif-latin); font-size: 17px; line-height: 1.55; }
/* Legal pages fill the available width on desktop. The reader expects
   line length to sit around 70–80 characters, so the text column caps
   near 760px on narrow screens and grows with the viewport. */
body.legal-page .section-inner {
  width: min(100%, 1180px);
  max-width: 1180px;
}
body.legal-page .legal-section,
body.legal-page .ed-legal-section { margin-bottom: 48px; scroll-margin-top: 36px; }
body.legal-page .legal-section h3,
body.legal-page .ed-legal-section h3 {
  margin: 0 0 14px;
  padding: 0;
  color: var(--site-ink);
  font-family: var(--site-sans-latin);
  font-size: 26px;
  font-weight: 600;
  letter-spacing: -.025em;
  line-height: 1.18;
  border: 0;
}
body.legal-page .legal-section h4,
body.legal-page .ed-legal-section h4 { margin: 26px 0 10px; color: var(--site-ink); font-size: 17px; font-weight: 600; }
body.legal-page .legal-section p,
body.legal-page .legal-section li,
body.legal-page .ed-legal-section p,
body.legal-page .ed-legal-section li {
  color: var(--site-ink-soft);
  font-family: var(--site-serif-latin);
  font-size: 17px;
  line-height: 1.72;
  max-width: 76ch;
}
body.legal-page .legal-section p,
body.legal-page .ed-legal-section p { margin-bottom: 16px; }
body.legal-page .legal-section ul,
body.legal-page .legal-section ol,
body.legal-page .ed-legal-section ul,
body.legal-page .ed-legal-section ol { padding-left: 24px; margin-bottom: 18px; }
body.legal-page .legal-section strong,
body.legal-page .ed-legal-section strong { color: var(--site-ink); font-weight: 600; }
body.legal-page .legal-section a,
body.legal-page .ed-legal-section a { color: var(--site-ink); text-decoration: underline; text-decoration-color: var(--site-line); text-underline-offset: 3px; }
body.legal-page .legal-section a:hover,
body.legal-page .ed-legal-section a:hover { color: var(--site-clay); text-decoration-color: var(--site-clay); }
body.legal-page .legal-table,
body.legal-page .ed-legal-section table { width: 100%; margin: 20px 0 24px; border-collapse: collapse; font-size: 15px; }
body.legal-page .legal-table th,
body.legal-page .legal-table td,
body.legal-page .ed-legal-section th,
body.legal-page .ed-legal-section td { padding: 12px 14px; color: var(--site-ink-soft); border-bottom: 1px solid var(--site-line); text-align: left; vertical-align: top; line-height: 1.5; }
body.legal-page .legal-table th,
body.legal-page .ed-legal-section th { color: var(--site-ink-muted); font-family: var(--site-mono); font-size: 10px; letter-spacing: .07em; text-transform: uppercase; }
body.legal-page .legal-date { color: var(--site-ink-muted); font-family: var(--site-mono); font-size: 11px; }
body.legal-page .ed-legal-layout { display: block; }
body.legal-page .ed-legal-toc { display: none; }
body.legal-page .ed-legal-body { width: min(100%, 1180px); max-width: 1180px; margin: 0 auto; }
body.legal-page:not(.ed-site):not(.mk-page):not(.xa-page) .section-inner {
  width: min(100%, 1180px);
  max-width: 1180px;
  margin-inline: auto;
}
body.ed-site.legal-page .ed-page-hero { padding: clamp(72px, 8vw, 112px) 0 40px; }
body.ed-site.legal-page .ed-legal-hero { display: grid; gap: 28px; }
body.ed-site.legal-page .ed-legal-hero h1 { max-width: none; font-size: clamp(48px, 5.2vw, 64px); }
body.ed-site.legal-page .ed-legal-meta { display: flex; flex-wrap: wrap; gap: 10px 22px; align-items: center; padding-top: 20px; border-top: 1px solid var(--site-line); color: var(--site-ink-muted); font-family: var(--site-mono); font-size: 11px; letter-spacing: .045em; }
body.ed-site.legal-page .ed-legal-meta p { margin: 0; }
body.ed-site.legal-page .ed-legal-meta a { color: var(--site-ink); text-decoration: underline; text-underline-offset: 3px; }
body.ed-site.legal-page .ed-legal-meta select { min-height: 32px; padding: 5px 28px 5px 10px; color: var(--site-ink); border: 1px solid var(--site-line); border-radius: 8px; background: var(--site-paper-soft); font-family: inherit; font-size: 11px; }
body.legal-page .ed-legal-meta { display: flex; flex-wrap: wrap; gap: 10px 22px; align-items: center; margin-top: 20px; padding-top: 20px; border-top: 1px solid var(--site-line); color: var(--site-ink-muted); font-family: var(--site-mono); font-size: 11px; letter-spacing: .045em; }
body.legal-page .ed-legal-meta p { margin: 0; }
body.legal-page .ed-legal-meta a { color: var(--site-ink); text-decoration: underline; text-underline-offset: 3px; }
body.legal-page .ed-legal-meta label { display: inline-flex; align-items: center; gap: 8px; color: var(--site-ink-muted); font-family: inherit; font-size: inherit; }
body.legal-page .ed-legal-meta select { min-height: 32px; padding: 5px 28px 5px 10px; color: var(--site-ink); border: 1px solid var(--site-line); border-radius: 8px; background: var(--site-paper-soft); font-family: inherit; font-size: 11px; }
body.ed-site.legal-page .ed-legal-section h3 { font-family: var(--site-sans-latin); font-size: 26px; font-weight: 600; letter-spacing: -.025em; line-height: 1.2; }
body.ed-site.legal-page .ed-legal-section p,
body.ed-site.legal-page .ed-legal-section li { font-family: var(--site-serif-latin); font-size: 17px; line-height: 1.72; max-width: 76ch; }
html:lang(zh) body.legal-page .page-header h1,
html:lang(zh) body.legal-page .legal-section h3,
html:lang(zh) body.legal-page .ed-legal-section h3 { font-family: var(--site-sans-cjk); letter-spacing: 0; line-height: 1.18; }
html:lang(zh) body.legal-page .page-header p,
html:lang(zh) body.legal-page .legal-section p,
html:lang(zh) body.legal-page .legal-section li,
html:lang(zh) body.legal-page .ed-legal-section p,
html:lang(zh) body.legal-page .ed-legal-section li { font-family: var(--site-serif-cjk); line-height: 1.75; }

/* Reveal fallbacks: content must remain available without an observer. */
.ed-reveal, .mk-reveal, .sr { opacity: 1 !important; transform: none !important; }

@media (max-width: 820px) {
  body.ed-site .ed-shell,
  body.mk-page .mk-shell,
  body:not(.ed-site):not(.mk-page) .page > nav .nav-inner,
  body:not(.ed-site):not(.mk-page) .page-header,
  body:not(.ed-site):not(.mk-page) footer .footer-inner { width: min(100% - 48px, 680px); }
  body:not(.ed-site):not(.mk-page) .section-inner { width: min(100% - 48px, 680px); }
}

@media (max-width: 620px) {
  body.ed-site .ed-shell,
  body.mk-page .mk-shell,
  body:not(.ed-site):not(.mk-page) .page > nav .nav-inner,
  body:not(.ed-site):not(.mk-page) .page-header,
  body:not(.ed-site):not(.mk-page) footer .footer-inner { width: calc(100% - 44px); }
  body:not(.ed-site):not(.mk-page) .section-inner { width: calc(100% - 36px); }
  body.ed-site.legal-page .ed-shell,
  body.ed-site.legal-page .ed-legal-layout { width: calc(100% - 44px); }
  body.ed-site.legal-page .ed-legal-body { width: 100%; max-width: 640px; }
  body.ed-site.legal-page .ed-legal-toc nav {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
  }
  body.ed-site.legal-page .ed-legal-toc a {
    padding: 7px 10px;
    border: 1px solid var(--site-line);
    border-radius: 999px;
    background: var(--site-paper-soft);
    font-size: 12px;
    line-height: 1.35;
  }
  body.ed-site.legal-page .ed-legal-section { scroll-margin-top: 20px; }
  body.legal-page:not(.ed-site) .page-header { padding-left: 0; padding-right: 0; }
  body.legal-page:not(.ed-site) .page > section { padding-left: 32px; padding-right: 32px; }
  body.ed-site .ed-display { font-size: clamp(36px, 9.2vw, 48px); letter-spacing: -.008em; line-height: 1.1; }
  body.ed-site .ed-page-title,
  body.mk-page .mk-display,
  body.mk-page .mk-title { font-size: clamp(34px, 8.8vw, 46px); letter-spacing: -.008em; line-height: 1.1; }
  body.ed-site .ed-title,
  body.ed-site .ed-statement-title { font-size: clamp(28px, 7.2vw, 38px); letter-spacing: -.008em; line-height: 1.12; }
  body.ed-site .ed-reference-title,
  body.ed-site .ed-news-hero h1,
  body.ed-site .ed-learning-hero h1 { font-size: clamp(36px, 9.2vw, 48px); letter-spacing: -.008em; line-height: 1.1; }
  body.ed-site .ed-copy { font-size: 16px; line-height: 1.65; }
  body.ed-site .ed-copy-serif { font-size: 18px; line-height: 1.5; }
  body.ed-site .ed-essay-row .ed-essay-title { font-size: 19px; font-weight: 500; line-height: 1.22; }
  body:not(.ed-site):not(.mk-page) .page-header h1,
  body.legal-page .page-header h1 { font-size: clamp(38px, 11vw, 52px); letter-spacing: 0; line-height: 1.08; }
  body.legal-page:not(.ed-site) .page > nav .nav-inner,
  body.legal-page:not(.ed-site) .page-header,
  body.legal-page:not(.ed-site) footer .footer-inner { width: calc(100% - 64px); }
  body.legal-page:not(.ed-site):not(.mk-page):not(.xa-page) .section-inner { width: 100%; max-width: 640px; }
  body.legal-page .legal-section h3,
  body.legal-page .ed-legal-section h3 { font-size: 21px; }
  body.legal-page .legal-section p,
  body.legal-page .legal-section li,
  body.legal-page .ed-legal-section p,
  body.legal-page .ed-legal-section li { font-size: 17px; line-height: 1.75; }
  body.legal-page .legal-table,
  body.legal-page .ed-legal-section table { display: block; overflow-x: auto; white-space: nowrap; }
  body.legal-page .ed-legal-meta { align-items: flex-start; flex-direction: column; }
  body.legal-page .ed-legal-meta select { width: 100%; }
}

/* -------------------------------------------------------------------------
 * 2026 editorial polish
 *
 * The marketing surface should feel composed before it feels clever. Keep
 * the paper/ink palette, but remove the dense SaaS cues: oversized display
 * type, monospaced labels everywhere, floating logo chrome, and card-heavy
 * mobile navigation.
 * ------------------------------------------------------------------------- */
body.ed-site .ed-shell {
  width: min(1280px, calc(100% - 120px));
}

body.ed-site .ed-header {
  padding: 16px 0 12px;
  border-bottom-color: transparent;
}

body.ed-site .ed-header.is-scrolled {
  padding: 12px 0 10px;
  border-bottom-color: var(--site-line);
}

body.ed-site .ed-header-inner {
  min-height: 40px;
}

body.ed-site .ed-brand {
  gap: 0;
  font-size: 17px;
  font-weight: 600;
  letter-spacing: .07em;
}

body.ed-site .ed-brand-mark,
body.ed-site .ed-brand img { display: block; }

body.ed-site .ed-nav-links { gap: 28px; }
body.ed-site .ed-nav-links a { font-size: 14px; }

body.ed-site .ed-button {
  min-height: 38px;
  padding: 8px 16px;
  border-radius: 10px;
  font-size: 14px;
  font-weight: 500;
}

/* Anthropic's strongest contrast is typographic: a weighty sans headline
   paired with a quieter serif explanation. Apply that contrast only to the
   home hero so the editorial sub-pages can keep their more literary rhythm. */
body.ed-site .ed-home-hero .ed-hero-grid {
  grid-template-columns: minmax(0, 1.08fr) minmax(260px, .62fr);
  gap: clamp(40px, 8vw, 132px);
  align-items: end;
}

body.ed-site .ed-home-hero .ed-hero-lead {
  max-width: none;
}

body.ed-site .ed-home-hero .ed-display {
  max-width: 680px;
  font-family: var(--site-sans-latin);
  font-size: clamp(56px, 6.3vw, 88px);
  font-weight: 600;
  letter-spacing: -.055em;
  line-height: .98;
}

body.ed-site .ed-home-hero .ed-hero-sub {
  max-width: 27ch;
  margin: 0 0 6px;
  font-family: var(--site-serif-latin);
  font-size: clamp(22px, 2vw, 30px);
  line-height: 1.2;
  letter-spacing: -.02em;
}

body.ed-site .ed-home-stage {
  margin-top: clamp(68px, 8vw, 112px);
  border-radius: 18px;
  box-shadow: none;
}

body.ed-site .ed-home-stage img {
  aspect-ratio: 1.86;
}

body.ed-site .ed-kicker,
body.ed-site .ed-meta,
body.ed-site .ed-row-meta,
body.ed-site .ed-essay-date,
body.ed-site .ed-essay-tag {
  font-family: var(--site-sans-latin);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: .035em;
  text-transform: none;
}

body.ed-site .ed-link {
  font-size: 14px;
  font-weight: 500;
  letter-spacing: 0;
}

body.ed-site .ed-footer-frame {
  border-radius: 18px;
}

@media (max-width: 980px) {
  body.ed-site .ed-shell { width: min(100% - 48px, 680px); }

  body.ed-site .ed-home-hero .ed-hero-grid {
    grid-template-columns: 1fr;
    gap: 22px;
    align-items: start;
  }

  body.ed-site .ed-home-hero .ed-hero-lead { max-width: none; }
  body.ed-site .ed-home-hero .ed-display { max-width: 680px; }
  body.ed-site .ed-home-hero .ed-hero-sub { margin: 0; max-width: 34ch; }
}

@media (max-width: 820px) {
  body.ed-site .ed-nav-links {
    top: 68px;
    right: 0;
    left: 0;
    display: flex;
    gap: 8px;
    padding: 28px 24px 36px;
    border: 0;
    border-top: 1px solid var(--site-line);
    border-radius: 0;
    background: var(--site-paper);
  }

  body.ed-site .ed-header-inner.is-open .ed-nav-links {
    position: fixed;
    z-index: 40;
    min-height: calc(100dvh - 68px);
    overflow-y: auto;
    border-bottom: 0;
  }

  body.ed-site .ed-nav-links a {
    padding: 10px 0;
    border-radius: 0;
    font-size: 16px;
  }

  body.ed-site .ed-nav-links a:hover { background: transparent; }
}

@media (max-width: 620px) {
  body.ed-site .ed-shell { width: calc(100% - 48px); }
  body.ed-site .ed-header { padding: 16px 0 12px; }
  body.ed-site .ed-brand { font-size: 16px; }

  body.ed-site .ed-home-hero {
    padding-top: 76px;
    padding-bottom: 34px;
  }

  body.ed-site .ed-home-hero .ed-display {
    max-width: none;
    font-size: clamp(42px, 11.2vw, 50px);
    letter-spacing: -.052em;
    line-height: .99;
  }

  body.ed-site .ed-home-hero .ed-hero-sub {
    max-width: 28ch;
    font-size: 20px;
    line-height: 1.28;
  }

  body.ed-site .ed-home-stage {
    margin-top: 56px;
    border-radius: 14px;
  }

  body.ed-site .ed-home-stage img {
    aspect-ratio: 1.2;
    border-radius: 14px;
  }

  body.ed-site .ed-kicker,
  body.ed-site .ed-meta,
  body.ed-site .ed-row-meta,
  body.ed-site .ed-essay-date,
  body.ed-site .ed-essay-tag {
    font-size: 12px;
    letter-spacing: .015em;
  }

  body.ed-site .ed-footer-frame { border-radius: 14px; }
}

/* Research imagery and safe text zones ----------------------------------
   The stage copy is a two column band pinned to the same inset as the stage
   nav and the caption: headline flush left, standfirst flush right, both
   starting on one line. */
@media (min-width: 981px) {
  body.ed-site .ed-home-stage .ed-network-copy {
    inset: auto;
    top: calc(var(--ed-stage-inset) + 40px);
    left: 0;
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, clamp(220px, 24vw, 340px));
    column-gap: clamp(32px, 5vw, 80px);
    align-items: start;
    justify-items: stretch;
    width: 100%;
    padding: 0 var(--ed-stage-inset);
    text-align: left;
  }

  body.ed-site .ed-home-stage .ed-network-copy h2 {
    width: auto;
    max-width: 18ch;
    font-size: clamp(38px, 3.4vw, 54px);
    line-height: 1.02;
    letter-spacing: -.032em;
    text-wrap: balance;
  }

  body.ed-site .ed-home-stage .ed-network-copy p {
    position: static;
    width: auto;
    max-width: none;
    margin: 0;
    font-size: clamp(15px, 1.15vw, 17px);
    line-height: 1.48;
    text-align: right;
    text-wrap: pretty;
  }
}

body.ed-site .ed-article-hero-aside {
  display: grid;
  gap: 22px;
  align-content: start;
}

body.ed-site .ed-article-hero-media {
  margin: 0;
  overflow: hidden;
  border-radius: 18px;
  background: var(--site-black);
}

body.ed-site .ed-article-hero-media img {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 9;
  object-fit: cover;
}

body.ed-site .ed-publication-row {
  grid-template-columns: minmax(0, 1fr) minmax(180px, 220px);
  gap: clamp(24px, 4vw, 60px);
  align-items: start;
}

body.ed-site .ed-publication-copy { min-width: 0; }

body.ed-site .ed-publication-side {
  display: grid;
  gap: 14px;
  align-content: end;
  justify-items: end;
  min-width: 0;
}

body.ed-site .ed-publication-side img {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  border-radius: 12px;
  background: var(--site-black);
}

body.ed-site .ed-publication-side .ed-link {
  justify-self: end;
}

/* The stage stacks at 980px (editorial.css), so the copy has to follow the
   same breakpoint or it keeps the desktop column widths while flowing. */
@media (max-width: 980px) {
  body.ed-site .ed-home-stage .ed-network-copy {
    position: static;
    inset: auto;
    display: block;
    width: auto;
    padding: 22px 0 0;
    color: var(--site-ink);
    text-align: left;
  }

  body.ed-site .ed-home-stage .ed-network-copy h2 {
    width: auto;
    max-width: 20ch;
    color: var(--site-ink);
    font-size: clamp(28px, 4vw, 40px);
    line-height: 1.06;
    letter-spacing: -.028em;
    text-wrap: balance;
  }

  body.ed-site .ed-home-stage .ed-network-copy p {
    max-width: 36ch;
    margin-top: 12px;
    color: var(--site-ink-soft);
    font-size: 16px;
    line-height: 1.5;
    text-align: left;
    text-wrap: pretty;
  }
}

@media (max-width: 820px) {
  body.ed-site .ed-article-hero-aside { gap: 18px; }
  body.ed-site .ed-article-hero-media { border-radius: 14px; }

  body.ed-site .ed-publication-row {
    grid-template-columns: 1fr;
    gap: 18px;
  }

  body.ed-site .ed-publication-side {
    grid-template-columns: minmax(140px, 180px) auto;
    align-items: end;
    justify-items: start;
    gap: 16px;
  }

  body.ed-site .ed-publication-side img { width: min(48vw, 180px); }
  body.ed-site .ed-publication-side .ed-link { justify-self: start; }
}

/* Shared navigation, type scale, and wide legal reading frame. */
body.ed-site .ed-brand {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  font-size: 17px;
  font-weight: 600;
  letter-spacing: -.025em;
  text-transform: none;
}

body.ed-site .ed-brand-mark,
body.ed-site .ed-brand img {
  display: block !important;
  width: 26px;
  height: 26px;
  flex: 0 0 26px;
  border-radius: 7px;
  padding: 3px;
  box-sizing: border-box;
  object-fit: contain;
}

/* Footer brand mark needs a subtle backdrop because the logo's dark
   circle would otherwise sink into the dark footer background. */
body.ed-site .ed-footer .ed-brand-mark,
body.ed-site .ed-footer .ed-brand img {
  background: rgba(255, 255, 255, .08);
  filter: none;
}

body.ed-site .ed-brand-word {
  white-space: nowrap;
  font-family: var(--site-serif-latin);
  font-weight: 500;
  letter-spacing: -.02em;
  line-height: 1;
}
body.mk-page .mk-brand { gap: 9px; letter-spacing: -.025em; }
body.mk-page .mk-brand img { width: 24px; height: 24px; border-radius: 6px; }
body.mk-page .mk-brand-word em { font-style: normal; }

body.ed-site .ed-display,
body.ed-site .ed-page-title,
body.ed-site .ed-title,
body.ed-site .ed-statement-title,
body.ed-site .ed-reference-title,
body.ed-site .ed-news-hero h1,
body.ed-site .ed-learning-hero h1,
body.ed-site .ed-research-coda h2,
body.ed-site .ed-policy-manifesto h2,
body.ed-site .ed-policy-visual h2,
body.ed-site .ed-course-intro h2,
body.ed-site .ed-learning-object h2,
body.ed-site .ed-network-copy h2,
body.ed-site .ed-serif,
body.ed-site .ed-copy-serif,
body.ed-site .ed-footer-brand p,
body.ed-site .ed-product-block h2,
body.ed-site .ed-contact-card h2,
body.ed-site .ed-price-card h2 {
  font-family: var(--site-sans-latin);
}

/* Chinese display/headings mirror the English interface (serif Latin),
   so Latin → Newsreader and Chinese → 思源黑体. */
html:lang(zh) body.ed-site .ed-display,
html:lang(zh) body.ed-site .ed-page-title,
html:lang(zh) body.ed-site .ed-title,
html:lang(zh) body.ed-site .ed-statement-title,
html:lang(zh) body.ed-site .ed-reference-title,
html:lang(zh) body.ed-site .ed-news-hero h1,
html:lang(zh) body.ed-site .ed-learning-hero h1,
html:lang(zh) body.ed-site .ed-serif,
html:lang(zh) body.ed-site .ed-copy-serif,
html:lang(zh) body.ed-site .ed-footer-brand p,
html:lang(zh) body.ed-site .ed-product-block h2,
html:lang(zh) body.ed-site .ed-contact-card h2,
html:lang(zh) body.ed-site .ed-price-card h2 {
  font-family: var(--site-serif-cjk);
  letter-spacing: .02em;
  line-height: 1.3;
  text-wrap: balance;
}

html:lang(zh) body.ed-site .ed-course-card h3 {
  font-family: var(--site-serif-cjk);
  font-size: clamp(22px, 2.1vw, 30px);
  line-height: 1.25;
  letter-spacing: 0;
  max-width: none;
}

html:lang(zh) body.ed-site .ed-course-intro h2,
html:lang(zh) body.ed-site .ed-learning-object h2,
html:lang(zh) body.ed-site .ed-policy-visual h2,
html:lang(zh) body.ed-site .ed-policy-manifesto h2,
html:lang(zh) body.ed-site .ed-research-coda h2 {
  max-width: none;
  font-size: clamp(28px, 3.2vw, 44px);
  line-height: 1.2;
  letter-spacing: 0;
}

body.ed-site .ed-team-grid {
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: clamp(24px, 3vw, 40px);
}

html:lang(zh) body.ed-site .ed-team-grid p,
html:lang(zh) body.ed-site .ed-showcase-entry p {
  font-family: var(--site-sans-cjk);
  font-size: 14.5px;
  line-height: 1.55;
  color: var(--site-ink-soft);
}

/* Old marketing pages are intentionally ALL SANS — keep their Chinese
   stack on the sans CJK variable (Latin → Geist). */
html:lang(zh) body.mk-page h1,
html:lang(zh) body.mk-page h2,
html:lang(zh) body.mk-page h3,
html:lang(zh) body.mk-page p,
html:lang(zh) body.mk-page a,
html:lang(zh) body.mk-page button {
  font-family: var(--site-sans-cjk);
  letter-spacing: .01em;
}

body.ed-site .ed-product-block {
  grid-template-columns: minmax(140px, .32fr) minmax(280px, 1.04fr) minmax(240px, .72fr);
  gap: clamp(24px, 4vw, 56px);
  padding: 32px 0;
  align-items: start;
}

body.ed-site .ed-product-meta-col {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

body.ed-site .ed-product-meta-text {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

body.ed-site .ed-product-meta-text .ed-kicker { margin: 0; }
body.ed-site .ed-product-meta-text .ed-meta { margin: 0; }

body.ed-site .ed-ledger-row > *:first-child,
body.ed-site .ed-essay-date,
body.ed-site .ed-row-meta > span {
  white-space: nowrap;
}

/* Balanced product-block type scale — the kicker (12px), headline (24px),
   and body (17px) now sit on a tighter ratio so the row reads as a unit
   instead of a 38px headline floating next to 16px prose. */
body.ed-site .ed-product-block h2 {
  max-width: 22ch;
  font-size: clamp(22px, 2.05vw, 26px);
  font-weight: 500;
  letter-spacing: -.018em;
  line-height: 1.18;
  font-family: var(--site-serif-latin);
}

body.ed-site .ed-product-block p {
  max-width: 36ch;
  margin-top: 0;
  font-size: 17px;
  line-height: 1.6;
  color: var(--site-ink-soft);
}

body.ed-site .ed-product-block .ed-kicker {
  font-size: 12px;
  line-height: 1.35;
  letter-spacing: .04em;
}

body.ed-site .ed-product-block .ed-meta {
  margin-top: 8px;
  font-size: 14px;
  line-height: 1.5;
  letter-spacing: 0;
  color: var(--site-ink-muted);
}

body.ed-site .ed-page-hero .ed-page-title,
body.ed-site .ed-legal-hero h1 { letter-spacing: -.045em; }

body.ed-site.legal-page .ed-legal-layout {
  display: grid;
  grid-template-columns: minmax(220px, .34fr) minmax(0, 1.66fr);
  gap: clamp(48px, 8vw, 124px);
  align-items: start;
  width: min(1280px, calc(100% - 120px));
}

body.ed-site.legal-page .ed-legal-toc {
  display: block;
  position: sticky;
  top: 32px;
}

body.ed-site.legal-page .ed-legal-body {
  width: auto;
  max-width: 900px;
  margin: 0;
}

/* Let the legal grid shrink on small screens instead of expanding to the
   widest unbreakable table/URL. The table wrappers keep their own
   horizontal scroll. */
body.ed-site.legal-page .ed-legal-layout,
body.ed-site.legal-page .ed-legal-toc,
body.ed-site.legal-page .ed-legal-body,
body.ed-site.legal-page .ed-legal-section {
  min-width: 0;
}
body.ed-site.legal-page .ed-legal-table-scroll {
  max-width: 100%;
  scrollbar-width: thin;
  scrollbar-color: var(--site-line) transparent;
  -webkit-overflow-scrolling: touch;
}
body.ed-site.legal-page .ed-legal-table-scroll::-webkit-scrollbar {
  height: 6px;
}
body.ed-site.legal-page .ed-legal-table-scroll::-webkit-scrollbar-thumb {
  background: var(--site-line);
  border-radius: 999px;
}

body.ed-site.legal-page .ed-legal-section p,
body.ed-site.legal-page .ed-legal-section li {
  font-family: var(--site-sans-latin);
  font-size: 16px;
  line-height: 1.72;
  overflow-wrap: anywhere;
  word-break: break-word;
}

html:lang(zh) body.ed-site.legal-page .ed-legal-section p,
html:lang(zh) body.ed-site.legal-page .ed-legal-section li {
  /* English legal body copy uses the serif Latin stack; keep the Chinese
     page in step (Latin → Newsreader, Chinese → Noto Serif SC). */
  font-family: var(--site-serif-cjk);
  font-size: 16px;
  line-height: 1.75;
  letter-spacing: .02em;
}

body.legal-page:not(.ed-site):not(.mk-page):not(.xa-page) .section-inner {
  width: min(920px, calc(100% - 120px));
  max-width: 920px;
  margin-inline: auto;
}

body.legal-page:not(.ed-site):not(.mk-page) .legal-section p,
body.legal-page:not(.ed-site):not(.mk-page) .legal-section li {
  font-family: var(--site-sans-latin);
  font-size: 16px;
  line-height: 1.72;
}

html:lang(zh) body.legal-page:not(.ed-site):not(.mk-page) .legal-section p,
html:lang(zh) body.legal-page:not(.ed-site):not(.mk-page) .legal-section li {
  font-family: var(--site-serif-cjk);
  line-height: 1.75;
  letter-spacing: .02em;
}

/* Account shortcut — only shown inside the mobile slide-out menu and
   as a footer column. No desktop header button (it looked duplicated). */
.ed-account-menu-link { display: none; }

/* Mobile-only "Log in" button injected by locale.js. Hidden on desktop
   because the header already shows the "Try Socrates" button there. */
.ed-header-login { display: none; }

/* Footer account column — added by locale.js on non-app pages so visitors
   have a clear path to /account without scrolling past the marketing nav. */
.ed-footer-account a { color: rgba(244, 241, 233, .78); }

@media (max-width: 980px) {
  body.ed-site .ed-product-block {
    grid-template-columns: minmax(96px, .26fr) minmax(0, 1fr);
    gap: 18px 28px;
  }

  body.ed-site .ed-product-block > p { grid-column: 2; }

  body.ed-site.legal-page .ed-legal-layout {
    grid-template-columns: 1fr;
    gap: 36px;
    width: min(100% - 48px, 880px);
  }

  body.ed-site.legal-page .ed-legal-toc { position: static; }
  body.ed-site.legal-page .ed-legal-body { max-width: none; }
}

@media (max-width: 820px) {
  body.ed-site .ed-account-menu-link {
    display: block;
    margin-top: 12px;
    padding-top: 16px;
    border-top: 1px solid var(--site-line);
    color: var(--site-ink);
    font-weight: 600;
  }

  /* On tablet/mobile show the static "Try Socrates" CTA top-right; the
     "Log in" link is a logged-in affordance kept for desktop only. */
  body .ed-header-actions {
    display: flex;
    gap: 8px;
  }
  body .ed-header-actions .ed-button { white-space: nowrap; }
  body .ed-header-actions .ed-button:not(.ed-header-login) { display: inline-flex; }
  body .ed-header-login { display: none; }
}

@media (max-width: 620px) {
  body.ed-site .ed-brand { gap: 8px; font-size: 16px; }
  body.ed-site .ed-brand img { width: 22px; height: 22px; flex-basis: 22px; }
  body.mk-page .mk-brand img { width: 22px; height: 22px; }
  body.ed-site .ed-product-block {
    grid-template-columns: 1fr;
    gap: 12px;
    padding: 24px 0;
  }

  body.ed-site .ed-product-block > p { grid-column: auto; }
  body.ed-site .ed-product-block h2 { max-width: 18ch; font-size: clamp(28px, 8.5vw, 34px); }
  body.ed-site .ed-product-block .ed-meta { margin-top: 8px; }
  body.ed-site.legal-page .ed-legal-layout { width: calc(100% - 44px); }
  body.legal-page:not(.ed-site):not(.mk-page):not(.xa-page) .section-inner { width: calc(100% - 44px); }
}

@media (max-width: 480px) {
  body.ed-site.legal-page .ed-shell,
  body.ed-site.legal-page .ed-legal-layout { width: calc(100% - 32px); }
  body.ed-site.legal-page .ed-legal-layout { gap: 28px; }
  body.ed-site.legal-page .ed-legal-toc a {
    padding: 6px 9px;
    font-size: 11.5px;
  }
  body.ed-site.legal-page .ed-legal-section h3 { font-size: 20px; line-height: 1.3; }
  body.ed-site.legal-page .ed-legal-section h4 { font-size: 16px; }
  body.ed-site.legal-page .ed-legal-section p,
  body.ed-site.legal-page .ed-legal-section li { font-size: 15px; line-height: 1.7; }
  body.ed-site.legal-page .ed-legal-table-scroll th,
  body.ed-site.legal-page .ed-legal-table-scroll td {
    min-width: 124px;
    padding: 9px 10px;
  }
}

body.legal-page:not(.ed-site):not(.mk-page):not(.xa-page) .site-legal-layout {
  display: grid;
  grid-template-columns: minmax(200px, .34fr) minmax(0, 1.66fr);
  gap: clamp(48px, 8vw, 124px);
  align-items: start;
  width: min(1280px, calc(100% - 120px));
  max-width: none;
}

body.legal-page:not(.ed-site):not(.mk-page):not(.xa-page) .site-legal-toc {
  position: sticky;
  top: 32px;
}

body.legal-page:not(.ed-site):not(.mk-page):not(.xa-page) .site-legal-toc h2 {
  margin: 0 0 18px;
  color: var(--site-ink-muted);
  font-family: var(--site-mono);
  font-size: 10px;
  font-weight: 500;
  letter-spacing: .08em;
}

body.legal-page:not(.ed-site):not(.mk-page):not(.xa-page) .site-legal-toc nav {
  position: static;
  inset: auto;
  display: grid;
  gap: 2px;
  width: auto;
  min-height: 0;
  padding: 0;
  background: transparent;
  border: 0;
}
body.legal-page:not(.ed-site):not(.mk-page):not(.xa-page) .site-legal-toc a {
  display: block;
  padding: 6px 0;
  color: var(--site-ink-soft);
  font-size: 13px;
  line-height: 1.35;
  text-decoration: none;
}

body.legal-page:not(.ed-site):not(.mk-page):not(.xa-page) .site-legal-toc a:hover {
  color: var(--site-ink);
  text-decoration: underline;
  text-underline-offset: 4px;
}

body.legal-page:not(.ed-site):not(.mk-page):not(.xa-page) .site-legal-body {
  min-width: 0;
  max-width: 900px;
}

body.legal-page .page > nav .nav-links .lang-switch {
  color: var(--site-ink) !important;
  border-color: var(--site-line) !important;
  background: var(--site-paper-soft);
}

@media (max-width: 900px) {
  body.legal-page:not(.ed-site):not(.mk-page):not(.xa-page) .site-legal-layout {
    grid-template-columns: 1fr;
    gap: 36px;
    width: min(100% - 48px, 760px);
  }

  body.legal-page:not(.ed-site):not(.mk-page):not(.xa-page) .site-legal-toc { position: static; }
  body.legal-page:not(.ed-site):not(.mk-page):not(.xa-page) .site-legal-toc nav { display: flex; flex-wrap: wrap; gap: 6px 14px; }
  body.legal-page:not(.ed-site):not(.mk-page):not(.xa-page) .site-legal-toc a { padding: 3px 0; font-size: 12px; }
}

/* ── Custom language switcher (designed UI, not a native <select>) ──────
   A "Language" toggle that reveals a small menu listing the available
   locales. Used in the top bar (.ed-header-actions) and in the legal
   page meta row. Locale.js (enhanceLangDropdown) wires open/close,
   outside-click, Escape, and item selection → SocratesLocale.setLocale. */
.ed-lang { position: relative; display: inline-flex; }
.ed-lang-toggle {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  margin: 0;
  padding: 6px 8px;
  font: inherit;
  font-size: 14px;
  font-weight: 500;
  line-height: 1;
  color: var(--site-ink-soft);
  background: transparent;
  border: 1px solid transparent;
  border-radius: 8px;
  cursor: pointer;
  white-space: nowrap;
  transition: color .15s ease, background .15s ease;
}
.ed-lang-toggle:hover { color: var(--site-ink); background: transparent; }
.ed-lang-toggle:focus-visible { outline: 2px solid var(--site-clay); outline-offset: 2px; }
.ed-lang-globe { display: none; }
.ed-lang-caret { width: 10px; height: 10px; display: block; color: var(--site-ink-soft); transition: transform .18s ease; }
.ed-lang.is-open .ed-lang-caret { transform: rotate(180deg); }
.ed-lang-menu {
  position: absolute;
  top: calc(100% + 8px);
  right: 0;
  min-width: 172px;
  margin: 0;
  padding: 6px;
  list-style: none;
  background: var(--site-paper-soft);
  border: 1px solid var(--site-line);
  border-radius: 12px;
  box-shadow: none;
  z-index: 60;
  display: none;
}
.ed-lang.is-open .ed-lang-menu { display: block; }
.ed-lang-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  width: 100%;
  padding: 9px 10px;
  border: 0;
  border-radius: 8px;
  background: none;
  color: var(--site-ink);
  font: inherit;
  font-size: 14px;
  text-align: left;
  cursor: pointer;
}
.ed-lang-item:hover { background: var(--site-paper-strong); }
.ed-lang-item:focus-visible { outline: 2px solid var(--site-clay); outline-offset: -2px; }
.ed-lang-item[aria-current="true"] { color: var(--site-clay); font-weight: 600; }
.ed-lang-check { width: 14px; height: 14px; color: var(--site-clay); opacity: 0; flex: 0 0 auto; }
.ed-lang-item[aria-current="true"] .ed-lang-check { opacity: 1; }

@media (max-width: 820px) {
  .ed-lang-label { display: none; }
  .ed-lang-globe { display: block; width: 20px; height: 20px; }
  .ed-lang-caret { width: 12px; height: 12px; }
  .ed-lang-toggle { gap: 5px; padding: 10px; }
}

/* =========================================================================
   2026-08 · "Signal" polish layer — Silicon Valley-grade surface work
   Appended last so it wins the cascade without touching older layers.
   The identity stays warm-paper + ink; what changes is depth, motion,
   and typographic finish.
   ========================================================================= */

/* ── A. Tokens & globals ──────────────────────────────────────────────── */
:root {
  --sv-ease: cubic-bezier(.16, 1, .3, 1);
  --sv-speed: .35s;
  --sv-clay: #9a5a3b;
  --sv-clay-bright: #b86a45;
  --sv-glow-clay: rgba(184, 106, 69, .15);
  --sv-glow-sand: rgba(210, 192, 162, .40);
  --sv-shadow-sm: none;
  --sv-shadow-md: none;
  --sv-shadow-lg: none;
  accent-color: var(--sv-clay);
}

html { scrollbar-gutter: stable; }

/* Warm clay selection instead of pure ink. */
body.ed-site::selection,
body.ed-site ::selection { background: rgba(184, 106, 69, .9); color: #fff; }

/* Anchored headings clear the sticky header. */
body.ed-site [id] { scroll-margin-top: 108px; }

/* Numerals line up in dates, prices, and metadata. */
body.ed-site .ed-meta,
body.ed-site .ed-row-meta,
body.ed-site .ed-essay-date,
body.ed-site .ed-essay-tag,
body.ed-site .ed-price,
body.ed-site .ed-article-meta,
body.ed-site .ed-article-byline { font-variant-numeric: tabular-nums; }

/* ── B. Typography finish ─────────────────────────────────────────────── */
body.ed-site h1, body.ed-site h2, body.ed-site h3 { text-wrap: balance; }
body.ed-site p { text-wrap: pretty; }
/* Headings that JS splits into inline-block word spans must opt out of
   balancing — atomic inlines + balance overlap in Chromium. */
body.ed-site [data-animate-text] { text-wrap: initial; }

/* NOTE: deliberately NO background-clip:text gradient on .ed-display.
   The hero headline is word-animated (inline-block spans, own composite
   layers); clipped-gradient text garbles under that structure. */

/* The standfirst answers in Newsreader italic — the editorial counterpoint.
   Chinese pages keep upright glyphs (synthetic italics look wrong on CJK). */
body.ed-site .ed-home-hero .ed-hero-sub { font-style: italic; }
html:lang(zh) body.ed-site .ed-home-hero .ed-hero-sub { font-style: normal; }

/* Eyebrows get a small clay marker — a quiet signature across pages. */
body.ed-site .ed-kicker {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
body.ed-site .ed-kicker::before {
  content: "";
  flex: 0 0 auto;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--sv-clay-bright);
  box-shadow: none;
}

/* Long-form reading details. */
body.ed-site .ed-article li::marker { color: var(--sv-clay); }
body.ed-site .ed-article strong { color: var(--site-ink); font-weight: 600; }
body.ed-site .ed-article hr {
  background: linear-gradient(90deg, transparent, var(--site-line) 28%, var(--site-line) 72%, transparent);
}
body.ed-site .ed-year-rule::after {
  background: linear-gradient(90deg, var(--site-line), transparent);
}

/* ── C. Header: glass on scroll, animated nav underlines ──────────────── */
body.ed-site .ed-header.is-scrolled {
  background: rgba(244, 241, 233, .8);
  -webkit-backdrop-filter: blur(14px) saturate(160%);
  backdrop-filter: blur(14px) saturate(160%);
  border-image: linear-gradient(90deg, transparent, rgba(23, 23, 22, .26) 18%, rgba(23, 23, 22, .26) 82%, transparent) 1;
}
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  body.ed-site .ed-header.is-scrolled { background: var(--site-paper); }
}

@media (min-width: 821px) {
  body.ed-site .ed-nav-links a { position: relative; }
  body.ed-site .ed-nav-links a::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: -2px;
    height: 1.5px;
    border-radius: 2px;
    background: currentColor;
    transform: scaleX(0);
    transform-origin: left center;
    transition: transform .3s var(--sv-ease);
  }
  body.ed-site .ed-nav-links a:hover::after,
  body.ed-site .ed-nav-links a[aria-current="page"]::after { transform: scaleX(1); }
  body.ed-site .ed-nav-links a[aria-current="page"] { box-shadow: none; }
}

/* Brand mark tilts on hover — a small living detail. */
body.ed-site .ed-brand img { transition: transform .45s var(--sv-ease); }
body.ed-site .ed-brand:hover img { transform: rotate(-8deg) scale(1.08); }

/* Language menu: frosted panel with a soft entrance. */
body.ed-site .ed-lang-menu {
  background: rgba(250, 249, 245, .92);
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
  box-shadow: none;
  animation: sv-pop .18s var(--sv-ease);
}
@keyframes sv-pop {
  from { opacity: 0; transform: translateY(-4px) scale(.98); }
}

/* ── D. Buttons: lift, press, and a light sweep ───────────────────────── */
body.ed-site .ed-button,
body.ed-site .ed-button-quiet {
  position: relative;
  overflow: hidden;
  transition:
    transform var(--sv-speed) var(--sv-ease),
    box-shadow var(--sv-speed) var(--sv-ease),
    background-color .18s ease,
    border-color .18s ease,
    color .18s ease;
}
body.ed-site .ed-button:active,
body.ed-site .ed-button-quiet:active {
  transform: translateY(0) scale(.985);
  transition-duration: .08s;
}
body.ed-site .ed-button-quiet:hover { background: #fff; }

@media (hover: hover) and (pointer: fine) {
  body.ed-site .ed-button:hover {
    transform: translateY(-1px);
  }
  body.ed-site .ed-button-quiet:hover {
    transform: translateY(-1px);
  }
}

/* ── E. Hero aurora + stage depth ─────────────────────────────────────── */
body.ed-site .ed-home-hero,
body.ed-site .ed-page-hero,
body.ed-site .ed-reference-hero,
body.ed-site .ed-learning-hero,
body.ed-site .ed-news-hero {
  position: relative;
  isolation: isolate;
}
body.ed-site .ed-home-hero::before,
body.ed-site .ed-page-hero::before,
body.ed-site .ed-reference-hero::before,
body.ed-site .ed-learning-hero::before,
body.ed-site .ed-news-hero::before {
  content: "";
  position: absolute;
  z-index: -1;
  top: clamp(-120px, -6vw, -40px);
  left: 50%;
  width: min(1160px, 96vw);
  height: clamp(360px, 44vw, 660px);
  transform: translateX(-50%);
  background:
    radial-gradient(46% 54% at 26% 34%, var(--sv-glow-clay), transparent 70%),
    radial-gradient(40% 48% at 74% 24%, var(--sv-glow-sand), transparent 72%),
    radial-gradient(30% 36% at 56% 62%, rgba(154, 90, 59, .07), transparent 70%);
  pointer-events: none;
}

/* The home stage reads as a physical object on the paper. */
body.ed-site .ed-home-stage {
  box-shadow: 0 0 0 1px rgba(23, 23, 22, .05);
}
body.ed-site .ed-stage-index a { position: relative; }
body.ed-site .ed-stage-index a::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -3px;
  height: 1px;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform .3s var(--sv-ease);
}
body.ed-site .ed-stage-index a:hover::after { transform: scaleX(1); }

/* Stage headline keeps solid warm white — no background-clip:text here
   either (same compositing risk as the hero, and it sits over an image). */

/* ── F. Cards: resting shadow, hover lift ─────────────────────────────── */
body.ed-site .ed-portal,
body.ed-site .ed-story-card,
body.ed-site .ed-price-card,
body.ed-site .ed-contact-card,
body.ed-site .ed-course-card,
body.ed-site .ed-course-band,
body.ed-site .ed-featured {
  transition:
    transform var(--sv-speed) var(--sv-ease),
    box-shadow var(--sv-speed) var(--sv-ease),
    border-color .2s ease,
    background-color .2s ease;
}
body.ed-site .ed-portal,
body.ed-site .ed-story-card,
body.ed-site .ed-contact-card,
body.ed-site .ed-course-band,
body.ed-site .ed-featured { box-shadow: none; }
body.ed-site .ed-price-card { box-shadow: none; }
body.ed-site .ed-price-card.is-featured {
  box-shadow: 0 0 0 1px rgba(23, 23, 22, .85);
}

/* Imagery breathes inside its card on hover. */
body.ed-site .ed-story-card-media img,
body.ed-site .ed-featured-media img { transition: transform .8s var(--sv-ease); }
body.ed-site .ed-story-card:hover .ed-story-card-media img,
body.ed-site .ed-featured:hover .ed-featured-media img { transform: scale(1.045); }

/* Large media objects carry the same depth language. */
body.ed-site .ed-showcase-media { box-shadow: none; }
body.ed-site .ed-policy-visual img,
body.ed-site .ed-learning-object img { box-shadow: 0 0 0 1px rgba(23, 23, 22, .07); }
body.ed-site .ed-news-split figure { box-shadow: none; }

@media (hover: hover) and (pointer: fine) {
  body.ed-site .ed-portal:hover,
  body.ed-site .ed-story-card:hover,
  body.ed-site .ed-contact-card:hover,
  body.ed-site .ed-course-card:hover,
  body.ed-site .ed-price-card:hover {
    transform: translateY(-4px);
  }
  body.ed-site .ed-price-card.is-featured:hover {
    transform: translateY(-4px);
    box-shadow: 0 0 0 1px rgba(23, 23, 22, .85);
  }
}

/* ── G. Lists & rows: slide, washes, ticks ────────────────────────────── */
body.ed-site .ed-essay-row,
body.ed-site .ed-publication-row,
body.ed-site .ed-showcase-entry,
body.ed-site .ed-news-item {
  transition: transform var(--sv-speed) var(--sv-ease);
}
body.ed-site .ed-ledger-row { transition: background-color .2s ease; }
body.ed-site .ed-ledger-row:hover {
  background: linear-gradient(90deg, rgba(184, 106, 69, .05), transparent 55%);
}
body.ed-site .ed-team-grid h2 { transition: color .18s ease; }
body.ed-site .ed-team-grid article:hover h2 { color: var(--sv-clay); }

/* Product blocks and principles grow a clay tick on hover. */
body.ed-site .ed-principle,
body.ed-site .ed-product-block { position: relative; }
body.ed-site .ed-principle::before,
body.ed-site .ed-product-block::before {
  content: "";
  position: absolute;
  left: 0;
  top: 28px;
  bottom: 28px;
  width: 2px;
  border-radius: 2px;
  background: linear-gradient(180deg, var(--sv-clay-bright), rgba(184, 106, 69, 0));
  transform: scaleY(0);
  transform-origin: top center;
  transition: transform .35s var(--sv-ease);
}
body.ed-site .ed-principle:hover::before,
body.ed-site .ed-product-block:hover::before { transform: scaleY(1); }

@media (hover: hover) and (pointer: fine) {
  body.ed-site .ed-essay-row:hover,
  body.ed-site .ed-publication-row:hover,
  body.ed-site .ed-showcase-entry:hover,
  body.ed-site .ed-news-item:hover { transform: translateX(6px); }
}

/* ── H. Filters, search, pills ────────────────────────────────────────── */
body.ed-site .ed-filter-bar button {
  border-radius: 999px;
  transition:
    color .18s ease,
    background-color .18s ease,
    border-color .18s ease,
    transform .18s var(--sv-ease),
    box-shadow .18s ease;
}
body.ed-site .ed-filter-bar button:hover {
  border-color: rgba(23, 23, 22, .4);
}
body.ed-site .ed-filter-bar button.is-active {
  background: linear-gradient(180deg, #2c2925, var(--site-ink));
  border-color: var(--site-ink);
}
body.ed-site .ed-search-field input {
  border-radius: 12px;
  transition:
    border-color .18s ease,
    background-color .18s ease,
    box-shadow .25s var(--sv-ease);
}
body.ed-site .ed-search-field input:focus {
  border-color: var(--sv-clay);
  background: #fff;
  outline: 2px solid rgba(184, 106, 69, .40);
  outline-offset: 1px;
}
body.ed-site .ed-pill,
body.ed-site .ed-thread {
  transition: border-color .18s ease, color .18s ease;
}
body.ed-site .ed-pill:hover { border-color: rgba(23, 23, 22, .35); }

/* ── I. Dark surfaces & footer ────────────────────────────────────────── */
body.ed-site .ed-black-band,
body.ed-site .ed-inline-feature {
  box-shadow: none;
}
body.ed-site .ed-footer-frame {
  overflow: hidden;
  background: var(--site-black);
}
body.ed-site .ed-footer-social a {
  transition:
    transform .25s var(--sv-ease),
    color .18s ease,
    background-color .18s ease,
    border-color .18s ease,
    box-shadow .25s ease;
}
@media (hover: hover) and (pointer: fine) {
  body.ed-site .ed-footer-social a:hover {
    transform: translateY(-2px);
  }
}

/* Article footer prev/next cards join the lift family. */
body.ed-site .ed-article-foot a {
  transition:
    transform var(--sv-speed) var(--sv-ease),
    box-shadow var(--sv-speed) var(--sv-ease),
    border-color .18s ease,
    background-color .18s ease;
}
@media (hover: hover) and (pointer: fine) {
  body.ed-site .ed-article-foot a:hover {
    transform: translateY(-2px);
  }
}

/* ── J. Motion safety ─────────────────────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
  body.ed-site *,
  body.ed-site *::before,
  body.ed-site *::after {
    transition-duration: .01ms !important;
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-delay: 0ms !important;
  }
  body.ed-site .ed-button::after { display: none; }
  body.ed-site main { animation: none !important; }
  .ed-marquee-track { animation: none !important; }
}

/* =========================================================================
   2026-08 · "Motion" layer — award-site presence, kept quiet.
   Everything below is gated:
   · html.ed-js      → editorial.js sets it before first paint, so content
                       is never hidden when scripts don't run.
   · reduced-motion  → all movement collapses to static states.
   ========================================================================= */

/* ── K1. Scroll reveals (re-enables the site's own .ed-reveal system) ─── */
html.ed-js body.ed-site .ed-reveal:not(.is-visible) {
  opacity: 0 !important;
  transform: translateY(26px) !important;
}
body.ed-site .ed-reveal {
  transition: opacity .9s var(--sv-ease), transform .9s var(--sv-ease);
}
html.ed-js body.ed-site .ed-reveal-stagger > * {
  transition: opacity .8s var(--sv-ease), transform .8s var(--sv-ease);
}
/* Without JS, stagger children must not stay hidden either. */
html:not(.ed-js) body.ed-site .ed-reveal-stagger > * {
  opacity: 1 !important;
  transform: none !important;
}

/* ── K2. Page entrance — one quiet rise, then it never moves again ────── */
@keyframes sv-page-in {
  from { opacity: 0; transform: translateY(14px); }
  to   { opacity: 1; transform: none; }
}
html.ed-js body.ed-site main { animation: sv-page-in .8s var(--sv-ease) both; }

/* ── K3. Aurora drift — the hero glow breathes very slowly ────────────── */
@keyframes sv-drift {
  from { transform: translateX(-50%) translate3d(-1.5%, 0, 0) scale(1); }
  to   { transform: translateX(-50%) translate3d(1.5%, 2%, 0) scale(1.05); }
}
body.ed-site .ed-home-hero::before,
body.ed-site .ed-page-hero::before,
body.ed-site .ed-reference-hero::before,
body.ed-site .ed-learning-hero::before,
body.ed-site .ed-news-hero::before {
  animation: sv-drift 18s ease-in-out infinite alternate;
  will-change: transform;
}

/* ── K4. Stage wipe-in — the home artwork unveils instead of fading ───── */
@media (min-width: 981px) {
  html.ed-js body.ed-site .ed-home-stage {
    clip-path: inset(7% 5% 7% 5% round 18px);
    transition:
      clip-path 1.15s var(--sv-ease),
      box-shadow var(--sv-speed) var(--sv-ease);
  }
  html.ed-js body.ed-site .ed-home-stage.is-visible {
    clip-path: inset(0 0 0 0 round 18px);
  }
}

/* ── K5. Marquee band — a slow "trusted by" logo wall ─────────────────── */
.ed-marquee {
  overflow: hidden;
  margin-top: clamp(56px, 7vw, 96px);
  padding: clamp(26px, 3.6vw, 44px) 0 clamp(30px, 4vw, 50px);
  border-top: 1px solid var(--site-line);
  border-bottom: 1px solid var(--site-line);
}
.ed-marquee-title {
  margin: 0 0 clamp(18px, 2.4vw, 28px);
  padding: 0 clamp(20px, 5vw, 64px);
  font-family: var(--site-serif-latin);
  font-size: 13px;
  font-weight: 500;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: rgba(23, 23, 22, .52);
}
html:lang(zh) .ed-marquee-title { font-family: var(--site-serif-cjk); letter-spacing: .3em; }
.ed-marquee-track {
  display: flex;
  width: max-content;
  animation: sv-marquee 44s linear infinite;
  will-change: transform;
}
.ed-marquee:hover .ed-marquee-track { animation-play-state: paused; }
@keyframes sv-marquee { to { transform: translateX(-50%); } }
.ed-marquee-seq {
  display: inline-flex;
  align-items: center;
  gap: clamp(40px, 5.5vw, 84px);
  padding-right: clamp(40px, 5.5vw, 84px);
  white-space: nowrap;
}
.ed-logo-item {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: clamp(22px, 2.6vw, 32px);
  width: clamp(96px, 11vw, 150px);
  color: rgba(23, 23, 22, .58);
  transition: color .35s ease;
}
.ed-logo-item:hover { color: var(--site-black); }
.ed-logo-item svg {
  display: block;
  width: 100%;
  height: 100%;
}

/* ── K6. (removed) logo masks — marks are now inlined with currentColor ─ */

/* ── K7. Reading progress — a clay hairline along the very top ────────── */
.ed-progress {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  height: 2px;
  z-index: 97;
  background: linear-gradient(90deg, var(--sv-clay), var(--sv-clay-bright));
  transform: scaleX(0);
  transform-origin: 0 50%;
  pointer-events: none;
}

/* ── K8. Paper grain — a faint film that makes flat color feel tactile ── */
body.ed-site::after {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 95;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.55'/%3E%3C/svg%3E");
  background-size: 160px 160px;
  mix-blend-mode: soft-light;
  opacity: .3;
  pointer-events: none;
}

/* =========================================================================
   L. Brand-study layer — patterns studied on the twelve reference sites
   (Stripe · Anthropic · OpenAI · NVIDIA · Google · Meta · Netflix ·
    Alibaba · Tencent · ByteDance · Spotify · Microsoft), translated into
   the warm-paper system. Appended last, so it wins by cascade order.
   ========================================================================= */

/* ── L1. Forms — Stripe-grade fields (api-keys / profile / checkout) ──── */
body.ed-site main input:not([type=radio]):not([type=checkbox]):not([type=submit]):not([type=button]):not([type=file]),
body.ed-site main textarea,
body.ed-site main select {
  display: block;
  width: 100%;
  padding: 11px 14px;
  font: inherit;
  font-size: 15px;
  color: var(--site-black);
  background: #fffdf8;
  border: 1px solid var(--site-line);
  border-radius: 10px;
  transition: border-color .18s ease, background-color .18s ease;
}
body.ed-site main input::placeholder,
body.ed-site main textarea::placeholder { color: rgba(23, 23, 22, .38); opacity: 1; }
body.ed-site main input:focus,
body.ed-site main textarea:focus,
body.ed-site main select:focus {
  outline: none;
  border-color: var(--sv-clay-bright);
  background: #fff;
  outline: 2px solid rgba(184, 106, 69, .40);
  outline-offset: 1px;
}
/* The seamless three-part card field keeps its own chrome. */
body.ed-site .ed-card-input input {
  display: block;
  width: auto;
  min-width: 0;
  padding: 8px 4px;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}
body.ed-site .ed-card-input input:focus {
  border: 0;
  background: transparent;
  box-shadow: none;
}
/* Field labels read as quiet mono eyebrows, Stripe-style. */
body.ed-site main .ed-field > label {
  display: block;
  margin-bottom: 6px;
  font-family: var(--ed-mono, monospace);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: rgba(23, 23, 22, .62);
}

/* ── L2. Pull quotes — Anthropic's serif editorial voice ──────────────── */
body.ed-site main blockquote {
  margin: clamp(28px, 4vw, 44px) 0;
  padding: 6px 0 6px clamp(20px, 3vw, 32px);
  border-left: 3px solid var(--sv-clay-bright);
  font-family: var(--site-serif-latin);
  font-size: clamp(19px, 2vw, 24px);
  font-style: italic;
  line-height: 1.5;
  color: rgba(23, 23, 22, .82);
}
html:lang(zh) body.ed-site main blockquote { font-family: var(--site-serif-cjk); }

/* ── L3. Kickers — NVIDIA's category eyebrow, with a clay tick ────────── */
body.ed-site .ed-kicker::before {
  content: "";
  display: inline-block;
  width: 18px;
  height: 1px;
  margin-right: 10px;
  vertical-align: middle;
  transform: translateY(-1px);
  background: var(--sv-clay-bright);
}

/* ── L4. Tables — Stripe's data discipline + legal-table structure ────── */
body.ed-site main table {
  width: 100%;
  border-collapse: collapse;
  font-variant-numeric: tabular-nums lining-nums;
}
body.ed-site main th {
  padding: 10px 14px;
  text-align: left;
  font-family: var(--ed-mono, monospace);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: rgba(23, 23, 22, .55);
  border-bottom: 1px solid rgba(23, 23, 22, .28);
}
body.ed-site main td {
  padding: 12px 14px;
  vertical-align: top;
  border-bottom: 1px solid var(--site-line);
}
body.ed-site main tbody tr { transition: background-color .15s ease; }
body.ed-site main tbody tr:hover { background-color: rgba(184, 106, 69, .05); }

/* ── L5. Keyboard focus — Material-crisp rings for every interactive ──── */
body.ed-site :focus-visible {
  outline: 2px solid var(--sv-clay-bright);
  outline-offset: 2px;
}

/* ── L6. Figure captions — quiet mono metadata under research media ───── */
body.ed-site main figcaption {
  margin-top: 10px;
  font-family: var(--ed-mono, monospace);
  font-size: 11.5px;
  letter-spacing: .04em;
  color: rgba(23, 23, 22, .55);
}

/* ── L7. In-prose links — Google's crafted underline, clay on hover ───── */
body.ed-site main p a:not(.ed-button),
body.ed-site main li a:not(.ed-button) {
  color: inherit;
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-decoration-color: rgba(184, 106, 69, .45);
  text-underline-offset: 3px;
  transition: color .18s ease, text-decoration-color .18s ease;
}
body.ed-site main p a:not(.ed-button):hover,
body.ed-site main li a:not(.ed-button):hover {
  color: var(--sv-clay-bright);
  text-decoration-color: currentColor;
}

/* =========================================================================
   M. Daylight layer — Anthropic-style warm paper.
   The home opening returns to the ivory page: a bold sans display at
   poster scale on the left, serif supporting copy and actions in a right
   column, and the stage artwork framed as a quiet rounded panel. The
   trusted-by marquee sits on the same paper between hairlines. The sticky
   header keeps its standard light skin everywhere — the old dark-zone
   flip is retired in both CSS and JS.
   ========================================================================= */

/* ── M1. Paper canvas ─────────────────────────────────────────────────── */
body.ed-site .ed-home-hero {
  background: transparent;
  color: #1a1918;
  padding-top: clamp(72px, 9vw, 128px);
  padding-bottom: clamp(56px, 7vw, 104px);
}

/* ── M2. Typography & actions — bold sans headline, serif support ─────── */
body.ed-site .ed-home-hero .ed-hero-grid {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  text-align: left;
}
body.ed-site .ed-home-hero .ed-hero-lead { max-width: none; }
body.ed-site .ed-home-hero .ed-display {
  font-family: var(--font-sans);
  font-size: clamp(40px, 5vw, 74px);
  font-weight: 700;
  line-height: 1.04;
  letter-spacing: -.03em;
  color: #1a1918;
  max-width: 16ch;
  margin-inline: 0;
}
html:lang(zh) body.ed-site .ed-home-hero .ed-display {
  font-size: clamp(32px, 4.2vw, 58px);
  line-height: 1.14;
  letter-spacing: -.01em;
  max-width: none;
}
body.ed-site .ed-home-hero .ed-hero-sub {
  margin-top: 18px;
  font-size: clamp(17px, 1.3vw, 20px);
  line-height: 1.55;
  color: rgba(26, 25, 24, .78);
}
@media (min-width: 981px) {
  body.ed-site .ed-home-hero .ed-hero-grid {
    display: grid;
    grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr);
    column-gap: clamp(40px, 6vw, 96px);
    align-items: end;
  }
  body.ed-site .ed-home-hero .ed-hero-lead { grid-column: 1; grid-row: 1 / span 2; }
  body.ed-site .ed-home-hero .ed-hero-sub { grid-column: 2; grid-row: 1; align-self: end; margin-top: 0; }
  body.ed-site .ed-home-hero .ed-hero-actions { grid-column: 2; grid-row: 2; justify-content: flex-start; margin-top: 22px; }
}
body.ed-site .ed-home-hero .ed-hero-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 26px;
}
/* Primary — Anthropic charcoal pill. */
body.ed-site .ed-home-hero .ed-button {
  background: #191919;
  border-color: #191919;
  color: #f5f3ee;
  font-weight: 500;
  border-radius: 999px;
}
@media (hover: hover) and (pointer: fine) {
  body.ed-site .ed-home-hero .ed-button:hover {
    background: #000000;
    border-color: #000000;
    transform: translateY(-1px);
  }
}
/* Secondary — quiet outline pill. */
body.ed-site .ed-home-hero .ed-button-ghost {
  background: transparent;
  border: 1px solid rgba(25, 25, 25, .25);
  color: #1a1918;
}
body.ed-site .ed-home-hero .ed-button-ghost:hover {
  background: rgba(25, 25, 25, .05);
  border-color: rgba(25, 25, 25, .5);
}
/* Announcement tag — hairline pill with a book-cloth pulse dot. */
body.ed-site .ed-home-hero .ed-hero-flag {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin: 0 0 22px;
  padding: 6px 14px;
  border: 1px solid rgba(25, 25, 25, .16);
  border-radius: 999px;
  font-family: var(--ed-mono, monospace);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: rgba(26, 25, 24, .62);
}
html:lang(zh) body.ed-site .ed-home-hero .ed-hero-flag { letter-spacing: .26em; }
body.ed-site .ed-home-hero .ed-hero-flag span {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #c15f3c;
  animation: sv-flag-pulse 2.4s ease-in-out infinite;
}
@keyframes sv-flag-pulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50%      { opacity: .45; transform: scale(.82); }
}

/* ── M3. The stage — a quiet rounded panel on the paper ───────────────── */
body.ed-site .ed-home-stage {
  border-radius: 18px;
  box-shadow: 0 0 0 1px rgba(23, 23, 22, .09);
}
body.ed-site .ed-home-hero .ed-stage-index a { color: rgba(255, 255, 255, .6); }
body.ed-site .ed-home-hero .ed-stage-index a:hover { color: #ffffff; }
body.ed-site .ed-home-hero .ed-network-copy h2 { color: #fafafa; }
body.ed-site .ed-home-hero .ed-network-copy p { color: rgba(255, 255, 255, .58); }
body.ed-site .ed-home-hero .ed-stage-caption { color: rgba(255, 255, 255, .38); }

/* ── M4. Marquee back on the paper, between hairlines ─────────────────── */
body.ed-site .ed-home-hero + .ed-marquee {
  margin-top: 0;
  background: transparent;
  border-top-color: rgba(23, 23, 22, .1);
  border-bottom-color: rgba(23, 23, 22, .14);
}
body.ed-site .ed-home-hero + .ed-marquee .ed-marquee-title { color: rgba(26, 25, 24, .5); }
body.ed-site .ed-home-hero + .ed-marquee .ed-logo-item { color: rgba(26, 25, 24, .68); }
body.ed-site .ed-home-hero + .ed-marquee .ed-logo-item:hover { color: #14130f; }

/* ── M5. Header dark skin retired ─────────────────────────────────────── */
/* The hero is daylight paper again, so the light-on-dark nav flip and    */
/* the no-JS dark glass bar are gone. editorial.js pins darkEnd to 0 so   */
/* .ed-over-dark is never applied; the standard light header serves all   */
/* scroll states.                                                         */

/* ── M6. Below the fold — flat paper under the statement ──────────────── */
body.ed-site main > section:has(.ed-home-statement) {
  background: transparent;
}
body.ed-site .ed-home-statement .ed-statement-title {
  font-size: clamp(32px, 3.8vw, 58px);
  line-height: 1.08;
  letter-spacing: -.018em;
}

/* ── M7. Essay rows — quiet editorial slide on hover ──────────────────── */
body.ed-site .ed-essay-row {
  transition:
    padding-left .25s var(--sv-ease, ease),
    transform var(--sv-speed, .25s) var(--sv-ease, ease),
    background-color .2s ease;
}
@media (hover: hover) and (pointer: fine) {
  body.ed-site .ed-essay-row:hover { padding-left: 14px; }
}

/* =========================================================================
   N. Living background — retired with the Nocturne poster.
   The daylight page keeps the flat Anthropic-style paper: the three-mass
   aurora and every home-hero glow layer are switched off, and the K3/E
   soft glow no longer paints on the home hero. Other pages keep their
   gentle drift glow untouched. The hero keeps its stacking fix so any
   future negative-z layer still paints above the paper.
   ========================================================================= */

/* ── N1. Stacking fix (kept — future-proofs negative-z layers) ────────── */
body.ed-site .ed-home-hero {
  position: relative;
  isolation: isolate;
}

/* ── N2. Aurora off — a flat paper hero, Anthropic-style ──────────────── */
body.ed-site .ed-home-hero::before,
body.ed-site .ed-home-hero::after,
body.ed-site .ed-home-hero .ed-hero-nebula { display: none; }

/* ── N5. Marquee glow stays retired ───────────────────────────────────── */
body.ed-site .ed-home-hero + .ed-marquee {
  position: relative;
  isolation: isolate;
}
body.ed-site .ed-home-hero + .ed-marquee::before { content: none; }

/* ── N6. Motion safety — only the flag dot pulses; freeze it too ──────── */
@media (prefers-reduced-motion: reduce) {
  body.ed-site .ed-home-hero .ed-hero-flag span { animation: none !important; }
}

/* ==========================================================================
   P. Anthropic premium layer — media frames, spotlight, article furniture
   Appended last. Additive to the warm-paper system.
   ========================================================================== */

/* ── P0. Soft living glow behind the home hero (replaces retired aurora) ─ */
body.ed-site .ed-home-hero::before {
  content: "";
  display: block;
  position: absolute;
  z-index: -1;
  top: clamp(-160px, -8vw, -60px);
  left: 50%;
  width: min(1180px, 96vw);
  height: clamp(420px, 48vw, 720px);
  transform: translateX(-50%);
  background:
    radial-gradient(44% 52% at 24% 32%, rgba(184, 106, 69, .13), transparent 70%),
    radial-gradient(38% 46% at 76% 22%, rgba(23, 23, 22, .05), transparent 72%),
    radial-gradient(34% 40% at 52% 66%, rgba(184, 106, 69, .06), transparent 70%);
  animation: sv-drift 20s ease-in-out infinite alternate;
  pointer-events: none;
}

/* ── P1. Home stage: deeper product-surface frame + glass chips ───────── */
body.ed-site .ed-home-stage {
  border-radius: 18px;
  box-shadow: 0 0 0 1px rgba(23, 23, 22, .06);
}

/* Soft vignette + top light so the artwork sits inside a physical panel. */
body.ed-site .ed-home-stage::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  background:
    linear-gradient(180deg, transparent 62%, rgba(23, 23, 22, .42) 100%),
    radial-gradient(120% 90% at 50% 0%, rgba(255, 255, 255, .07), transparent 58%);
  pointer-events: none;
}

body.ed-site .ed-stage-index a {
  padding: 7px 14px;
  border-radius: 999px;
  background: rgba(255, 255, 255, .08);
  border: 1px solid rgba(255, 255, 255, .14);
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
  color: rgba(255, 255, 255, .82);
  transition: background .2s ease, color .2s ease, border-color .2s ease, transform .2s var(--sv-ease);
}
body.ed-site .ed-stage-index a::after { display: none; }
body.ed-site .ed-stage-index a:hover {
  background: rgba(255, 255, 255, .16);
  color: #fff;
  border-color: rgba(255, 255, 255, .28);
  transform: translateY(-1px);
}
body.ed-site .ed-stage-caption { letter-spacing: .05em; }

/* ── P2. Media frames: hairline ring, soft shadow, hover zoom ─────────── */
body.ed-site .ed-publication-side img,
body.ed-site .ed-showcase-media img,
body.ed-site .ed-article-hero-media img,
body.ed-site .ed-black-band-media img,
body.ed-site .ed-inline-feature img,
body.ed-site .ed-policy-visual img,
body.ed-site .ed-learning-object img {
  border-radius: 12px;
  box-shadow: 0 0 0 1px rgba(23, 23, 22, .07);
}

body.ed-site .ed-publication-side img,
body.ed-site .ed-showcase-media img,
body.ed-site .ed-article-hero-media img,
body.ed-site .ed-black-band-media img,
body.ed-site .ed-inline-feature img {
  transition: transform .9s var(--sv-ease), box-shadow .45s ease;
  will-change: transform;
}

body.ed-site .ed-article-hero-media:hover,
body.ed-site .ed-black-band-media:hover,
body.ed-site .ed-showcase-media:hover,
body.ed-site .ed-publication-side:hover {
  box-shadow: 0 0 0 1px rgba(184, 106, 69, .35);
}

body.ed-site .ed-article-hero-media:hover img,
body.ed-site .ed-black-band-media:hover img,
body.ed-site .ed-showcase-media:hover img,
body.ed-site .ed-publication-side:hover img {
  transform: translateY(var(--parallax-y, 0)) scale(1.045);
}

body.ed-site .ed-showcase-media {
  overflow: hidden;
  border-radius: 18px;
}

/* ── P3. Pointer spotlight on cards and dark bands ────────────────────── */
body.ed-site .ed-portal,
body.ed-site .ed-story-card,
body.ed-site .ed-price-card,
body.ed-site .ed-contact-card,
body.ed-site .ed-course-card,
body.ed-site .ed-featured {
  background-image: radial-gradient(620px circle at var(--spot-x, 50%) var(--spot-y, 50%), rgba(184, 106, 69, .08), transparent 44%);
}
body.ed-site .ed-black-band,
body.ed-site .ed-inline-feature {
  background-image: radial-gradient(760px circle at var(--spot-x, 50%) var(--spot-y, 50%), rgba(184, 106, 69, .10), transparent 46%);
}

/* ── P4. Essay/publication rows: wash sweep on hover ──────────────────── */
body.ed-site .ed-essay-row,
body.ed-site .ed-publication-row {
  border-radius: 10px;
  background-image: linear-gradient(90deg, rgba(184, 106, 69, .07), transparent 65%);
  background-size: 0% 100%;
  background-repeat: no-repeat;
  background-position: left center;
  transition: transform .35s var(--sv-ease), background-size .4s ease;
}
body.ed-site .ed-essay-row:hover,
body.ed-site .ed-publication-row:hover { background-size: 100% 100%; }

/* ── P5. Staggered children inside reveal containers ──────────────────── */
html.ed-js body.ed-site .ed-reveal > .ed-essay-row,
html.ed-js body.ed-site .ed-reveal > .ed-publication-row,
html.ed-js body.ed-site .ed-reveal > article {
  opacity: 1;
  transform: none;
  transition:
    opacity .45s ease var(--d, 0s),
    transform .45s var(--sv-ease) var(--d, 0s),
    box-shadow .35s ease,
    border-color .2s ease,
    background-size .4s ease;
}
html.ed-js body.ed-site .ed-reveal.is-visible > .ed-essay-row,
html.ed-js body.ed-site .ed-reveal.is-visible > .ed-publication-row,
html.ed-js body.ed-site .ed-reveal.is-visible > article {
  opacity: 1;
  transform: none;
}
html.ed-js body.ed-site .ed-reveal > *:nth-child(1) { --d: 60ms; }
html.ed-js body.ed-site .ed-reveal > *:nth-child(2) { --d: 130ms; }
html.ed-js body.ed-site .ed-reveal > *:nth-child(3) { --d: 200ms; }
html.ed-js body.ed-site .ed-reveal > *:nth-child(4) { --d: 270ms; }
html.ed-js body.ed-site .ed-reveal > *:nth-child(5) { --d: 340ms; }
html.ed-js body.ed-site .ed-reveal > *:nth-child(n+6) { --d: 410ms; }

/* ── P6. Article furniture: contents card, result bars, references ────── */
body.ed-site .ed-article-toc {
  margin: 0 0 3.2em;
  padding: 22px 26px;
  border: 1px solid var(--site-line);
  border-left: 2px solid var(--sv-clay);
  border-radius: 0 14px 14px 0;
  background: var(--site-paper-soft);
}
body.ed-site .ed-article-toc .ed-kicker { margin: 0 0 12px; }
body.ed-site .ed-article-toc ol {
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: 8px;
}
body.ed-site .ed-article-toc a {
  display: inline-flex;
  align-items: baseline;
  gap: 10px;
  color: var(--site-ink-soft);
  font-size: 15px;
  font-weight: 500;
  text-decoration: none;
  transition: color .18s ease;
}
body.ed-site .ed-article-toc a::before {
  content: "";
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--sv-clay);
  opacity: .35;
  align-self: center;
  transition: opacity .18s ease, transform .18s ease;
}
body.ed-site .ed-article-toc a:hover,
body.ed-site .ed-article-toc a.is-active { color: var(--site-ink); }
body.ed-site .ed-article-toc a.is-active::before { opacity: 1; transform: scale(1.4); }

body.ed-site .ed-result {
  margin: 2.2em 0;
  padding: 24px 26px;
  border: 1px solid var(--site-line);
  border-radius: 14px;
  background: var(--site-paper-soft);
  font-family: var(--ed-sans);
}
body.ed-site .ed-result-head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 12px;
  margin-bottom: 16px;
}
body.ed-site .ed-result-head .ed-kicker { margin: 0; }
body.ed-site .ed-result-head span {
  font-family: var(--ed-mono);
  font-size: 11px;
  letter-spacing: .06em;
  color: var(--site-ink-muted);
  text-transform: uppercase;
}
body.ed-site .ed-result-row {
  display: grid;
  grid-template-columns: minmax(120px, 1fr) minmax(140px, 2fr) 52px;
  gap: 14px;
  align-items: center;
  padding: 9px 0;
  border-top: 1px solid var(--site-line);
}
body.ed-site .ed-result-row:first-of-type { border-top: 0; }
body.ed-site .ed-result-row span { font-size: 14.5px; color: var(--site-ink-soft); }
body.ed-site .ed-result-row b {
  font-variant-numeric: tabular-nums;
  font-size: 14.5px;
  color: var(--site-ink);
  text-align: right;
}
body.ed-site .ed-result-track {
  height: 6px;
  border-radius: 999px;
  background: rgba(23, 23, 22, .08);
  overflow: hidden;
}
body.ed-site .ed-result-track i {
  display: block;
  height: 100%;
  width: var(--w, 50%);
  border-radius: inherit;
  background: linear-gradient(90deg, var(--sv-clay), #d97b56);
  transform-origin: left;
  animation: edResultGrow 1s var(--sv-ease) .25s both;
}
@keyframes edResultGrow {
  from { transform: scaleX(0); }
  to   { transform: scaleX(1); }
}

body.ed-site .ed-references {
  margin: 2.6em 0 0;
  padding-top: 1.4em;
  border-top: 1px solid var(--site-line);
}
body.ed-site .ed-references ol {
  margin: 0;
  padding-left: 1.2em;
  font-family: var(--ed-sans);
  font-size: 14.5px;
  line-height: 1.7;
  color: var(--site-ink-muted);
}
body.ed-site .ed-references li { margin-bottom: .55em; }

/* ── P7. Article hero media parallax target ───────────────────────────── */
body.ed-site .ed-article-hero-media img {
  transform: translateY(var(--parallax-y, 0));
}

@media (prefers-reduced-motion: reduce) {
  body.ed-site .ed-result-track i { animation: none !important; }
  body.ed-site .ed-stage-index a:hover { transform: none !important; }
  body.ed-site .ed-article-hero-media:hover img,
  body.ed-site .ed-black-band-media:hover img,
  body.ed-site .ed-showcase-media:hover img,
  body.ed-site .ed-publication-side:hover img {
    transform: translateY(var(--parallax-y, 0)) !important;
  }
  body.ed-site .ed-tilt { transform: none !important; }
  body.ed-site .ed-chat-bubble { opacity: 1 !important; transform: none !important; }
  body.ed-site .ed-stat-value { transition: none !important; }
  body.ed-site .ed-svg-bar rect { animation: none !important; }
  body.ed-site .ed-timeline path { animation: none !important; stroke-dashoffset: 0 !important; }
  body.ed-site .ed-mini-demo .ed-mini-bubble-a,
  body.ed-site .ed-mini-demo .ed-mini-bubble-b { opacity: 1 !important; }
  body.ed-site .ed-mini-card { transform: none !important; }
  body.ed-site .ed-mini-pulse { animation: none !important; }
}

/* ==========================================================================
   P8-P15.  Premium layer extension — counter, tilt, mini-demos, author,
   svg-bar, timeline, hero chat, paragraph wave. All additive.
   ========================================================================== */

/* ── P8. Hover 3D tilt: ±3° on cards and dark bands ────────────────────── */
body.ed-site .ed-tilt {
  transform: perspective(900px) rotateX(calc(var(--sv-tilt-y, 0) * -.8deg))
                                rotateY(calc(var(--sv-tilt-x, 0) * .8deg));
  transition: transform .45s var(--sv-ease);
  will-change: transform;
}
body.ed-site .ed-portal.ed-tilt,
body.ed-site .ed-story-card.ed-tilt,
body.ed-site .ed-price-card.ed-tilt,
body.ed-site .ed-publication-side.ed-tilt,
body.ed-site .ed-black-band-media.ed-tilt,
body.ed-site .ed-showcase-media.ed-tilt,
body.ed-site .ed-article-hero-media.ed-tilt,
body.ed-site .ed-inline-feature.ed-tilt {
  transform: perspective(900px) rotateX(calc(var(--sv-tilt-y, 0) * -.8deg))
                                rotateY(calc(var(--sv-tilt-x, 0) * .8deg));
}

/* ── P9. Stat counter: animated number on enter ────────────────────────── */
body.ed-site .ed-stat {
  display: inline-flex;
  align-items: baseline;
  gap: .12em;
  font-variant-numeric: tabular-nums;
}
body.ed-site .ed-stat-value {
  display: inline-block;
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum" 1;
  transition: color .2s ease;
}
body.ed-site .ed-stat-suffix {
  font-variant-numeric: tabular-nums;
}
body.ed-site .ed-stat.is-animating .ed-stat-value { color: var(--sv-clay, #b86a45); }
body.ed-site .ed-stat.is-done .ed-stat-value { color: inherit; }

/* ── P10. Paragraph wave reveal ────────────────────────────────────────── */
html.ed-js body.ed-site .ed-reveal-paragraphs p {
  opacity: 1;
  transform: none;
}
html.ed-js body.ed-site .ed-reveal-paragraphs.is-visible p {
  opacity: 1;
  transform: none;
  transition: opacity .45s ease var(--d, 0s), transform .45s var(--sv-ease) var(--d, 0s);
}
html.ed-js body.ed-site .ed-reveal-paragraphs.is-visible p:nth-child(1) { --d: 0ms; }
html.ed-js body.ed-site .ed-reveal-paragraphs.is-visible p:nth-child(2) { --d: 70ms; }
html.ed-js body.ed-site .ed-reveal-paragraphs.is-visible p:nth-child(3) { --d: 140ms; }
html.ed-js body.ed-site .ed-reveal-paragraphs.is-visible p:nth-child(4) { --d: 210ms; }
html.ed-js body.ed-site .ed-reveal-paragraphs.is-visible p:nth-child(5) { --d: 280ms; }
html.ed-js body.ed-site .ed-reveal-paragraphs.is-visible p:nth-child(6) { --d: 350ms; }
html.ed-js body.ed-site .ed-reveal-paragraphs.is-visible p:nth-child(n+7) { --d: 420ms; }

/* ── P11. SVG bar chart (inline research viz) ──────────────────────────── */
body.ed-site .ed-svg-bar {
  display: block;
  width: 100%;
  height: auto;
  font-family: var(--ed-sans, sans-serif);
}
body.ed-site .ed-svg-bar-wrap {
  margin: 2em 0;
  padding: 22px;
  border: 1px solid var(--ed-line, #d9d0c3);
  border-radius: 14px;
  background: var(--ed-paper-soft, #faf9f5);
}
body.ed-site .ed-figure-caption {
  margin: 10px 0 0;
  font-family: var(--ed-mono, monospace);
  font-size: 11px;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--ed-ink-muted, #77716a);
  text-align: left;
}
body.ed-site .ed-svg-bar rect {
  transform-origin: left center;
  transform-box: fill-box;
  animation: edBarFill .9s var(--sv-ease) .15s both;
}
body.ed-site .ed-svg-bar .ed-bar-label {
  fill: var(--ed-ink-soft, #56534e);
  font-size: 13px;
  font-weight: 500;
}
body.ed-site .ed-svg-bar .ed-bar-value {
  fill: var(--ed-ink, #171716);
  font-size: 13px;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}
body.ed-site .ed-svg-bar .ed-bar-track {
  fill: rgba(23, 23, 22, .08);
}
body.ed-site .ed-svg-bar .ed-bar-fill {
  fill: url(#edBarGrad);
}
@keyframes edBarFill {
  from { transform: scaleX(0); }
  to   { transform: scaleX(1); }
}

/* ── P12. Inline methodology timeline ──────────────────────────────────── */
body.ed-site .ed-timeline {
  margin: 1.6em 0;
  padding: 18px 0 8px;
  border: 1px solid var(--ed-line, #d9d0c3);
  border-radius: 14px;
  background: var(--ed-paper-soft, #faf9f5);
  font-family: var(--ed-sans, sans-serif);
}
body.ed-site .ed-timeline-row {
  display: grid;
  grid-template-columns: 64px 1fr;
  gap: 18px;
  align-items: start;
  padding: 10px 22px;
}
body.ed-site .ed-timeline-row + .ed-timeline-row {
  border-top: 1px dashed var(--ed-line, #d9d0c3);
}
body.ed-site .ed-timeline-step {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border: 1px solid var(--sv-clay, #b86a45);
  border-radius: 999px;
  background: var(--ed-paper, #f4f1e9);
  color: var(--sv-clay, #b86a45);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: .04em;
}
body.ed-site .ed-timeline-row strong {
  display: block;
  font-size: 14px;
  color: var(--ed-ink, #171716);
  font-weight: 600;
}
body.ed-site .ed-timeline-row span {
  display: block;
  font-size: 13px;
  color: var(--ed-ink-muted, #77716a);
  line-height: 1.55;
  margin-top: 2px;
}

/* ── P13. Author card — initial avatar + role + one-liner ─────────────── */
body.ed-site .ed-author {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  padding: 10px 14px 10px 10px;
  border: 1px solid var(--ed-line, #d9d0c3);
  border-radius: 999px;
  background: var(--ed-paper-soft, #faf9f5);
}
body.ed-site .ed-author-avatar {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border-radius: 999px;
  background: var(--sv-clay, #b86a45);
  color: #fff;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: .04em;
}
body.ed-site .ed-author-meta {
  display: flex;
  flex-direction: column;
  line-height: 1.2;
}
body.ed-site .ed-author-meta strong {
  font-size: 14px;
  font-weight: 600;
  color: var(--ed-ink, #171716);
}
body.ed-site .ed-author-meta span {
  font-size: 12px;
  color: var(--ed-ink-muted, #77716a);
  font-family: var(--ed-mono, monospace);
  letter-spacing: .04em;
  text-transform: uppercase;
}

/* ── P14. Hero chat bubble demo (homepage) ─────────────────────────────── */
body.ed-site .ed-chat-demo {
  margin: 56px auto 0;
  padding: 28px;
  border: 1px solid var(--ed-line, #d9d0c3);
  border-radius: 22px;
  background: var(--ed-paper-soft, #faf9f5);
  box-shadow: none;
}
body.ed-site .ed-chat-head {
  display: flex;
  align-items: center;
  gap: 10px;
  padding-bottom: 16px;
  margin-bottom: 18px;
  border-bottom: 1px solid var(--ed-line, #d9d0c3);
  font-family: var(--ed-mono, monospace);
  font-size: 11px;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--ed-ink-muted, #77716a);
}
body.ed-site .ed-chat-head-dot {
  width: 10px;
  height: 10px;
  border-radius: 999px;
  background: var(--sv-clay, #b86a45);
  box-shadow: none;
}
body.ed-site .ed-chat-thread {
  display: grid;
  gap: 14px;
}
body.ed-site .ed-chat-bubble {
  max-width: 78%;
  padding: 12px 16px;
  border-radius: 16px;
  font-size: 15px;
  line-height: 1.55;
  opacity: 1;
  transform: none;
  transition: opacity .45s ease var(--d, 0s), transform .45s var(--sv-ease) var(--d, 0s);
}
body.ed-site .ed-chat-thread.is-visible .ed-chat-bubble {
  opacity: 1;
  transform: none;
}
body.ed-site .ed-chat-bubble.user {
  justify-self: end;
  background: var(--ed-ink, #171716);
  color: var(--ed-paper, #f4f1e9);
  border-bottom-right-radius: 4px;
}
body.ed-site .ed-chat-bubble.tutor {
  justify-self: start;
  background: var(--ed-paper-strong, #eee8dc);
  color: var(--ed-ink, #171716);
  border: 1px solid var(--ed-line, #d9d0c3);
  border-bottom-left-radius: 4px;
}
body.ed-site .ed-chat-bubble:nth-child(1) { --d: 0ms; }
body.ed-site .ed-chat-bubble:nth-child(2) { --d: 250ms; }
body.ed-site .ed-chat-bubble:nth-child(3) { --d: 500ms; }
body.ed-site .ed-chat-bubble:nth-child(4) { --d: 750ms; }
body.ed-site .ed-chat-caret {
  display: inline-block;
  width: 6px;
  height: 14px;
  margin-left: 4px;
  background: currentColor;
  vertical-align: text-bottom;
  animation: edCaret 1s steps(2) infinite;
  opacity: .85;
}
@keyframes edCaret {
  50% { opacity: 0; }
}
@media (max-width: 720px) {
  body.ed-site .ed-chat-demo { margin-top: 32px; padding: 18px; }
  body.ed-site .ed-chat-bubble { font-size: 14px; }
}

/* ── P15. Mini demo (product card previews) ────────────────────────────── */
body.ed-site .ed-mini-demo {
  position: relative;
  width: 168px;
  height: 112px;
  border-radius: 14px;
  background: linear-gradient(180deg, #faf9f5 0%, #f4f1e9 100%);
  border: 1px solid var(--ed-line, #d9d0c3);
  overflow: hidden;
  flex: 0 0 auto;
}
body.ed-site .ed-mini-bubble-a,
body.ed-site .ed-mini-bubble-b {
  position: absolute;
  padding: 8px 10px;
  border-radius: 10px;
  font-size: 11px;
  line-height: 1.35;
  opacity: 1;
  transform: none;
  transition: opacity .4s ease var(--d, 0s), transform .4s var(--sv-ease) var(--d, 0s);
}
body.ed-site .ed-product-block:hover .ed-mini-bubble-a,
body.ed-site .ed-product-block:hover .ed-mini-bubble-b,
body.ed-site .ed-mini-demo.is-visible .ed-mini-bubble-a,
body.ed-site .ed-mini-demo.is-visible .ed-mini-bubble-b {
  opacity: 1;
  transform: none;
}
body.ed-site .ed-mini-bubble-a {
  top: 18px; left: 14px;
  max-width: 70%;
  background: var(--ed-paper-strong, #eee8dc);
  color: var(--ed-ink, #171716);
  border-bottom-left-radius: 2px;
  --d: 0ms;
}
body.ed-site .ed-mini-bubble-b {
  right: 14px; bottom: 16px;
  max-width: 70%;
  background: var(--ed-ink, #171716);
  color: var(--ed-paper, #f4f1e9);
  border-bottom-right-radius: 2px;
  --d: 280ms;
}
body.ed-site .ed-mini-card {
  position: absolute;
  inset: 22px 28px 22px 28px;
  display: grid;
  place-items: center;
  background: var(--ed-paper, #f4f1e9);
  border: 1px solid var(--ed-line, #d9d0c3);
  border-radius: 10px;
  font-size: 12px;
  font-weight: 600;
  color: var(--ed-ink, #171716);
  transform: rotateY(180deg);
  transform-style: preserve-3d;
  transition: transform .8s var(--sv-ease);
}
body.ed-site .ed-mini-demo.is-visible .ed-mini-card,
body.ed-site .ed-product-block:hover .ed-mini-card {
  transform: rotateY(0deg);
}
body.ed-site .ed-mini-card::after {
  content: attr(data-back);
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  background: var(--sv-clay, #b86a45);
  color: #fff;
  border-radius: 10px;
  transform: rotateY(180deg);
  backface-visibility: hidden;
}
body.ed-site .ed-mini-card-front,
body.ed-site .ed-mini-card-back {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  backface-visibility: hidden;
  border-radius: 10px;
}
body.ed-site .ed-mini-card-front { background: var(--ed-paper, #f4f1e9); border: 1px solid var(--ed-line, #d9d0c3); }
body.ed-site .ed-mini-card-back {
  background: var(--sv-clay, #b86a45);
  color: #fff;
  transform: rotateY(180deg);
}
body.ed-site .ed-mini-node {
  position: absolute;
  width: 14px;
  height: 14px;
  border-radius: 999px;
  background: var(--sv-clay, #b86a45);
  box-shadow: none;
  opacity: 0;
  transform: scale(.5);
  transition: opacity .4s ease var(--d, 0s), transform .4s var(--sv-ease) var(--d, 0s);
}
body.ed-site .ed-mini-demo.is-visible .ed-mini-node,
body.ed-site .ed-product-block:hover .ed-mini-node {
  opacity: 1;
  transform: scale(1);
}
body.ed-site .ed-mini-node:nth-child(1) { top: 20%; left: 20%; --d: 0ms; }
body.ed-site .ed-mini-node:nth-child(2) { top: 30%; left: 60%; --d: 120ms; }
body.ed-site .ed-mini-node:nth-child(3) { top: 60%; left: 40%; --d: 240ms; }
body.ed-site .ed-mini-node:nth-child(4) { top: 70%; left: 75%; --d: 360ms; }
body.ed-site .ed-mini-pulse {
  position: absolute;
  top: 50%; left: 50%;
  width: 32px; height: 32px;
  border-radius: 999px;
  background: rgba(184, 106, 69, .35);
  transform: translate(-50%, -50%) scale(.5);
  opacity: 0;
  animation: edMiniPulse 2.2s ease-out infinite;
}
body.ed-site .ed-mini-demo.is-visible .ed-mini-pulse,
body.ed-site .ed-product-block:hover .ed-mini-pulse {
  opacity: 1;
}
@keyframes edMiniPulse {
  0%   { transform: translate(-50%, -50%) scale(.5); opacity: .65; }
  70%  { transform: translate(-50%, -50%) scale(2.6); opacity: 0; }
  100% { transform: translate(-50%, -50%) scale(2.6); opacity: 0; }
}

/* ── P16. Coming-next preview + related chips (article footer) ────────── */
body.ed-site .ed-coming-next {
  margin: 1.8em 0 0;
  padding: 18px 22px;
  border: 1px solid var(--ed-line, #d9d0c3);
  border-left: 2px solid var(--sv-clay, #b86a45);
  border-radius: 0 14px 14px 0;
  background: var(--ed-paper-soft, #faf9f5);
}
body.ed-site .ed-coming-next .ed-kicker { margin: 0 0 6px; }
body.ed-site .ed-coming-next h3 {
  margin: 0 0 6px;
  font-size: 19px;
  font-weight: 600;
  letter-spacing: -.01em;
  color: var(--ed-ink, #171716);
}
body.ed-site .ed-coming-next p { margin: 0; font-size: 15px; color: var(--ed-ink-soft, #56534e); }
body.ed-site .ed-related {
  margin: 1.4em 0 0;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
body.ed-site .ed-related-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 7px 12px;
  border-radius: 999px;
  border: 1px solid var(--ed-line, #d9d0c3);
  background: var(--ed-paper, #f4f1e9);
  color: var(--ed-ink-soft, #56534e);
  font-size: 12px;
  font-weight: 500;
  text-decoration: none;
  transition: color .18s ease, border-color .18s ease, background .18s ease;
}
body.ed-site .ed-related-chip::before {
  content: "";
  width: 5px; height: 5px;
  border-radius: 999px;
  background: var(--sv-clay, #b86a45);
  opacity: .55;
}
body.ed-site .ed-related-chip:hover {
  color: var(--ed-ink, #171716);
  border-color: var(--sv-clay, #b86a45);
  background: var(--ed-paper-soft, #faf9f5);
}

/* ── P17. Research hero stats strip ────────────────────────────────────── */
body.ed-site .ed-stats-strip {
  margin-top: 36px;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0;
  border: 1px solid var(--ed-line, #d9d0c3);
  border-radius: 16px;
  background: var(--ed-paper-soft, #faf9f5);
  overflow: hidden;
}
body.ed-site .ed-stats-strip > div {
  padding: 18px 22px;
  border-right: 1px solid var(--ed-line, #d9d0c3);
}
body.ed-site .ed-stats-strip > div:last-child { border-right: 0; }
body.ed-site .ed-stats-strip p {
  margin: 0 0 4px;
  font-family: var(--ed-mono, monospace);
  font-size: 11px;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--ed-ink-muted, #77716a);
}
body.ed-site .ed-stats-strip b {
  display: block;
  font-size: clamp(22px, 2.4vw, 30px);
  font-weight: 600;
  color: var(--ed-ink, #171716);
  letter-spacing: -.012em;
  font-variant-numeric: tabular-nums;
}
@media (max-width: 720px) {
  body.ed-site .ed-stats-strip { grid-template-columns: 1fr; }
  body.ed-site .ed-stats-strip > div { border-right: 0; border-bottom: 1px solid var(--ed-line, #d9d0c3); }
  body.ed-site .ed-stats-strip > div:last-child { border-bottom: 0; }
}

/* ── P18. Filter row hover lift ────────────────────────────────────────── */
body.ed-site .ed-publication-row {
  transition: transform .35s var(--sv-ease), background-size .4s ease, box-shadow .25s ease;
}
body.ed-site .ed-publication-row:hover .ed-publication-side img { transform: translateY(-3px); }
body.ed-site .ed-filter-bar button { transition: background .2s ease, color .2s ease, border-color .2s ease, transform .2s var(--sv-ease); }
body.ed-site .ed-filter-bar button:hover { transform: translateY(-1px); }

/* ── P19. Product timeline (path fill on scroll) ───────────────────────── */
body.ed-site .ed-path-timeline {
  position: relative;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0;
  margin: 56px 0 24px;
  padding: 24px 0;
}
body.ed-site .ed-path-timeline::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 6%;
  right: 6%;
  height: 1px;
  background: var(--ed-line, #d9d0c3);
  z-index: 0;
}
body.ed-site .ed-path-step {
  position: relative;
  z-index: 1;
  text-align: center;
  padding: 8px 12px;
}
body.ed-site .ed-path-node {
  width: 14px; height: 14px;
  border-radius: 999px;
  background: var(--ed-paper, #f4f1e9);
  border: 1.5px solid var(--sv-clay, #b86a45);
  margin: 0 auto 14px;
  position: relative;
}
body.ed-site .ed-path-node::after {
  content: "";
  position: absolute;
  inset: -3px;
  border-radius: inherit;
  background: var(--sv-clay, #b86a45);
  transform: scale(0);
  transition: transform .5s var(--sv-ease);
}
body.ed-site .ed-path-timeline.is-visible .ed-path-node::after { transform: scale(1); }
body.ed-site .ed-path-timeline .ed-path-node { transition-delay: var(--d, 0s); }
body.ed-site .ed-path-timeline .ed-path-step:nth-child(1) .ed-path-node { --d: 0ms; }
body.ed-site .ed-path-timeline .ed-path-step:nth-child(2) .ed-path-node { --d: 220ms; }
body.ed-site .ed-path-timeline .ed-path-step:nth-child(3) .ed-path-node { --d: 440ms; }
body.ed-site .ed-path-timeline .ed-path-step:nth-child(4) .ed-path-node { --d: 660ms; }
body.ed-site .ed-path-step strong {
  display: block;
  font-size: 15px;
  font-weight: 600;
  color: var(--ed-ink, #171716);
  letter-spacing: -.005em;
}
body.ed-site .ed-path-step span {
  display: block;
  font-size: 12.5px;
  color: var(--ed-ink-muted, #77716a);
  margin-top: 4px;
}
@media (max-width: 720px) {
  body.ed-site .ed-path-timeline { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
  body.ed-site .ed-path-timeline::before { display: none; }
}

/* ── P20. Article hero byline upgrade: author pill ─────────────────────── */
body.ed-site .ed-article-byline {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  align-items: center;
  font-family: var(--ed-mono, monospace);
  font-size: 12px;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--ed-ink-muted, #77716a);
}
body.ed-site .ed-article-byline .ed-author {
  text-transform: none;
  letter-spacing: 0;
  font-family: var(--ed-sans, sans-serif);
}
body.ed-site .ed-article-byline > span:not(.ed-author) {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

/* =========================================================================
   R. 2026-08 · "Detail" polish layer — final-pass refinement of every page.
   Appended last so it wins the cascade. Targets:
     R1. Typography rhythm  — paragraph spacing, prose max-width, heading
                              rhythm, link underlines, list spacing.
     R2. Buttons            — comfortable padding + uniform button-row gap
                              across hero / page-hero / inline-feature.
     R3. Images             — universal border-radius + aspect-ratio for
                              every editorial media frame, lazy defaults.
     R4. Tablet (820–980)   — explicit two-column fallbacks so the desktop
                              two-up grids don't snap straight to mobile.
     R5. Mobile (≤620)      — slightly tighter shell padding and smaller
                              eyebrow fonts so the smallest phones breathe.
     R6. Footer             — column link gap + social spacing + language
                              pill on the brand column.
     R7. Article reading    — prose rhythm + figure spacing + blockquote
                              indent + reference list rhythm.
     R8. Forms & tables     — uniform control height + table cell padding
                              on account / api-keys / checkout pages.
     R9. Misc cleanup       — paper grain opacity on dark bands, hairline
                              dividers between sections, link contrast.
   ========================================================================= */

/* ── R1. Typography rhythm ─────────────────────────────────────────────── */
:root {
  --sv-prose-rhythm: 1.55em;
  --sv-prose-max: 68ch;
  --sv-shell-pad: clamp(20px, 5vw, 60px);
  --sv-btn-pad-y: 9px;
  --sv-btn-pad-x: 18px;
  --sv-btn-min-h: 38px;
  --sv-input-min-h: 38px;
}

body.ed-site .ed-copy,
body.ed-site .ed-copy-serif,
body.ed-site .ed-product-block p,
body.ed-site .ed-showcase-entry p,
body.ed-site .ed-publication-row p,
body.ed-site .ed-team-grid article p,
body.ed-site .ed-hero-sub {
  text-wrap: pretty;
  hyphens: auto;
  -webkit-hyphens: auto;
}

body.ed-site .ed-copy {
  max-width: var(--sv-prose-max);
  line-height: 1.62;
}
body.ed-site .ed-copy-serif {
  max-width: 64ch;
  line-height: 1.5;
}
body.ed-site .ed-copy + .ed-copy,
body.ed-site .ed-copy-serif + .ed-copy-serif { margin-top: .85em; }

body.ed-site .ed-product-block p { line-height: 1.6; }
body.ed-site .ed-publication-row p { line-height: 1.6; max-width: 56ch; }
body.ed-site .ed-showcase-entry p { line-height: 1.55; max-width: 48ch; }
body.ed-site .ed-team-grid article p { line-height: 1.6; max-width: 36ch; }

body.ed-site .ed-statement-title,
body.ed-site .ed-title,
body.ed-site .ed-reference-title,
body.ed-site .ed-page-title {
  letter-spacing: -.018em;
}
body.ed-site .ed-display { letter-spacing: -.025em; }

body.ed-site .ed-kicker {
  margin: 0 0 14px;
  letter-spacing: .045em;
}
body.ed-site .ed-kicker:empty { display: none; }

body.ed-site .ed-hero-actions { gap: 14px; }
body.ed-site .ed-section-line + .ed-section-line { padding-top: clamp(48px, 6vw, 96px); }

body.ed-site .ed-shell {
  width: min(1280px, calc(100% - var(--sv-shell-pad)));
}
body.ed-site .ed-page-hero { padding: clamp(72px, 8vw, 112px) 0 clamp(40px, 5vw, 56px); }
body.ed-site .ed-section { padding: clamp(56px, 7vw, 104px) 0; }
body.ed-site .ed-section-tight { padding: clamp(40px, 5vw, 80px) 0; }

/* ── R2. Buttons ──────────────────────────────────────────────────────── */
body.ed-site .ed-button,
body.ed-site .ed-button-quiet {
  min-height: var(--sv-btn-min-h);
  padding: var(--sv-btn-pad-y) var(--sv-btn-pad-x);
  border-radius: 999px;
  font-size: 14px;
  font-weight: 500;
  letter-spacing: -.005em;
}
body.ed-site .ed-button-quiet { border-radius: 999px; }

body.ed-site .ed-hero-actions .ed-button + .ed-button { margin-left: 0; }

/* Article hero / product CTA groups: same gap. */
body.ed-site .ed-black-band-copy .ed-link,
body.ed-site .ed-black-band-copy .ed-button { margin-top: 6px; }

/* ── R3. Images: universal radius + lazy defaults + stable aspect ──────── */
body.ed-site img {
  background: var(--site-paper-strong, #eee8dc);
}
body.ed-site main img {
  border-radius: 14px;
  height: auto;
}
body.ed-site .ed-publication-side img,
body.ed-site .ed-black-band-media img,
body.ed-site .ed-inline-feature img,
body.ed-site .ed-article-hero-media img {
  border-radius: 14px;
}
body.ed-site .ed-home-stage img,
body.ed-site .ed-showcase-media img {
  border-radius: 18px;
}

/* Hero / showcase media: enforce a graceful aspect so the layout doesn't
   jump when an image hasn't loaded. */
body.ed-site .ed-home-stage img { aspect-ratio: 16 / 9; }
body.ed-site .ed-showcase-media img { aspect-ratio: 16 / 9; }
body.ed-site .ed-article-hero-media img { aspect-ratio: 16 / 9; }
body.ed-site .ed-publication-side img { aspect-ratio: 16 / 9; }
body.ed-site .ed-black-band-media img { aspect-ratio: 4 / 3; }
body.ed-site .ed-inline-feature img { aspect-ratio: 4 / 5; }

/* Ensure inline feature image doesn't grow taller than its grid cell on PC. */
body.ed-site .ed-inline-feature {
  grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr);
  gap: clamp(36px, 6vw, 96px);
  align-items: center;
}
body.ed-site .ed-inline-feature > img { max-height: 560px; width: 100%; object-fit: cover; }

/* ── R4. Tablet (820–980): two-column fallbacks ───────────────────────── */
@media (min-width: 821px) and (max-width: 980px) {
  body.ed-site .ed-publication-row {
    grid-template-columns: minmax(0, 1fr) minmax(160px, 200px);
    gap: 24px;
  }
  body.ed-site .ed-product-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px;
  }
  body.ed-site .ed-product-block {
    grid-template-columns: minmax(0, 1fr);
    padding: 24px 0;
  }
  body.ed-site .ed-black-band-inner {
    grid-template-columns: 1fr;
    gap: 24px;
  }
  body.ed-site .ed-stats-strip {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  body.ed-site .ed-stats-strip > div { padding: 16px 18px; }
  body.ed-site .ed-stats-strip b { font-size: 24px; }
}

/* ── R5. Mobile (≤620) refinements ─────────────────────────────────────── */
@media (max-width: 620px) {
  body.ed-site .ed-section { padding: clamp(40px, 12vw, 64px) 0; }
  body.ed-site .ed-section-tight { padding: clamp(28px, 9vw, 48px) 0; }
  body.ed-site .ed-page-hero { padding-top: clamp(48px, 13vw, 76px); padding-bottom: 24px; }
  body.ed-site .ed-hero-actions { gap: 10px; }
  body.ed-site .ed-button,
  body.ed-site .ed-button-quiet {
    padding: 9px 16px;
    font-size: 13.5px;
  }
  body.ed-site .ed-product-grid { gap: 6px; }
  body.ed-site .ed-product-block { padding: 22px 0; }
  body.ed-site .ed-product-block h2 { line-height: 1.16; }
  body.ed-site .ed-publication-row { grid-template-columns: 1fr; gap: 14px; }
  body.ed-site .ed-publication-side {
    grid-template-columns: minmax(110px, 140px) auto;
    align-items: end;
    gap: 14px;
  }
  body.ed-site .ed-publication-side img { width: 100%; }
  body.ed-site .ed-stats-strip > div { padding: 14px 16px; }
  body.ed-site .ed-stats-strip p { font-size: 10.5px; }
  body.ed-site .ed-stats-strip b { font-size: 22px; }
  body.ed-site .ed-coming-next,
  body.ed-site .ed-result,
  body.ed-site .ed-article-toc { padding: 16px 18px; border-radius: 10px; }
  body.ed-site .ed-coming-next h3 { font-size: 17px; }
  body.ed-site .ed-article-byline { font-size: 11px; gap: 10px; }
  body.ed-site .ed-author { padding: 8px 12px 8px 8px; gap: 10px; }
  body.ed-site .ed-author-avatar { width: 30px; height: 30px; font-size: 11px; }
  body.ed-site .ed-author-meta strong { font-size: 13px; }
  body.ed-site .ed-author-meta span { font-size: 10.5px; letter-spacing: .03em; }
  body.ed-site .ed-timeline-row { grid-template-columns: 44px 1fr; padding: 10px 16px; gap: 12px; }
  body.ed-site .ed-timeline-step { width: 32px; height: 32px; font-size: 11px; }
}

/* ── R6. Footer refinement ─────────────────────────────────────────────── */
body.ed-site .ed-footer-top {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) repeat(4, minmax(0, 1fr));
  gap: clamp(24px, 4vw, 64px);
  padding: clamp(40px, 5vw, 64px) 0 clamp(28px, 4vw, 40px);
}
body.ed-site .ed-footer-column h2 {
  margin: 0 0 14px;
  font-family: var(--ed-mono, monospace);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .07em;
  text-transform: uppercase;
  color: rgba(244, 241, 233, .55);
}
body.ed-site .ed-footer-column a {
  display: block;
  padding: 4px 0;
  font-size: 14px;
  line-height: 1.5;
}
body.ed-site .ed-footer-brand p {
  margin: 14px 0 0;
  max-width: 36ch;
  font-size: 14px;
  line-height: 1.55;
  color: rgba(244, 241, 233, .68);
}
body.ed-site .ed-footer-bottom {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 18px 0 28px;
  border-top: 1px solid rgba(244, 241, 233, .12);
  font-size: 12.5px;
  color: rgba(244, 241, 233, .52);
}
body.ed-site .ed-footer-bottom > span + span { margin-left: 0; }
@media (max-width: 820px) {
  body.ed-site .ed-footer-top {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 28px 24px;
  }
  body.ed-site .ed-footer-brand { grid-column: 1 / -1; }
  body.ed-site .ed-footer-bottom { flex-direction: column; align-items: flex-start; gap: 6px; }
}

/* ── R7. Article reading frame: prose rhythm + figure spacing ──────────── */
body.ed-site .ed-article > p,
body.ed-site .ed-article > h2,
body.ed-site .ed-article > h3,
body.ed-site .ed-article > blockquote,
body.ed-site .ed-article > figure,
body.ed-site .ed-article > .ed-result,
body.ed-site .ed-article > .ed-svg-bar-wrap,
body.ed-site .ed-article > .ed-timeline,
body.ed-site .ed-article > .ed-coming-next,
body.ed-site .ed-article > .ed-related,
body.ed-site .ed-article > .ed-references,
body.ed-site .ed-article > hr,
body.ed-site .ed-article > .ed-meta {
  max-width: 68ch;
  margin-left: auto;
  margin-right: auto;
}
body.ed-site .ed-article > p {
  font-family: var(--site-serif-latin);
  font-size: clamp(17px, 1.45vw, 19.5px);
  line-height: 1.72;
  color: var(--site-ink-soft);
}
html:lang(zh) body.ed-site .ed-article > p {
  font-family: var(--site-serif-cjk);
  line-height: 1.85;
  font-size: clamp(16.5px, 1.42vw, 19px);
  letter-spacing: .01em;
  color: var(--site-ink);
}
body.ed-site .ed-article > p + p { margin-top: 1.15em; }
body.ed-site .ed-article > h2 {
  margin-top: clamp(40px, 5vw, 64px);
  margin-bottom: .8em;
  font-family: var(--site-serif-latin);
  font-size: clamp(24px, 2.5vw, 32px);
  font-weight: 500;
  line-height: 1.18;
  letter-spacing: -.012em;
  color: var(--site-ink);
  scroll-margin-top: 100px;
}
html:lang(zh) body.ed-site .ed-article > h2 {
  font-family: var(--site-serif-cjk);
  letter-spacing: .01em;
}
body.ed-site .ed-article > h2 + p { margin-top: 0; }
body.ed-site .ed-article blockquote {
  font-family: var(--site-serif-latin);
  font-size: clamp(20px, 2vw, 26px);
  font-style: italic;
  line-height: 1.5;
  color: var(--site-ink);
  padding: 4px 0 4px clamp(20px, 3vw, 32px);
  border-left: 3px solid var(--sv-clay-bright);
  margin: clamp(28px, 4vw, 48px) auto;
}
html:lang(zh) body.ed-site .ed-article blockquote {
  font-family: var(--site-serif-cjk);
  font-style: normal;
  line-height: 1.78;
  letter-spacing: .01em;
}
body.ed-site .ed-article > figure { margin: clamp(24px, 3vw, 40px) auto; }
body.ed-site .ed-article > hr {
  border: 0;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--site-line) 28%, var(--site-line) 72%, transparent);
  margin: clamp(36px, 5vw, 56px) auto;
}
body.ed-site .ed-article > .ed-result,
body.ed-site .ed-article > .ed-svg-bar-wrap,
body.ed-site .ed-article > .ed-timeline,
body.ed-site .ed-article > .ed-coming-next { margin-top: clamp(28px, 4vw, 44px); }
body.ed-site .ed-article > .ed-related { margin-top: 1.4em; margin-bottom: clamp(24px, 3vw, 40px); }
body.ed-site .ed-article > .ed-references { padding-top: 1.4em; border-top: 1px solid var(--site-line); }

body.ed-site .ed-article .ed-kicker { margin: 0 0 14px; }

/* TOC + lede: smaller max width so the side card stays useful. */
body.ed-site .ed-article-toc { max-width: 68ch; margin-left: auto; margin-right: auto; }
body.ed-site .ed-article > p.lede {
  margin: 0 0 2em;
  padding: 22px 26px;
  border-left: 2px solid var(--sv-clay-bright);
  border-radius: 0 14px 14px 0;
  background: var(--site-paper-soft);
  font-family: var(--site-serif-latin);
  font-size: clamp(19px, 1.7vw, 22px);
  line-height: 1.48;
  font-style: italic;
  color: var(--site-ink);
  max-width: 68ch;
}
html:lang(zh) body.ed-site .ed-article > p.lede {
  font-family: var(--site-serif-cjk);
  font-style: normal;
  line-height: 1.78;
  letter-spacing: .01em;
}

/* Reference list (numbered) — tighten spacing + opacity. */
body.ed-site .ed-references ol {
  padding-left: 1.4em;
  font-family: var(--site-serif-latin);
  font-size: 15.5px;
  line-height: 1.6;
  color: var(--site-ink-soft);
}
body.ed-site .ed-references li { margin-bottom: .55em; padding-left: .35em; }
body.ed-site .ed-references em { color: var(--site-ink); }

/* ── R8. Forms & tables (account, api-keys, profile, checkout) ─────────── */
body.ed-site main input:not([type=radio]):not([type=checkbox]):not([type=submit]):not([type=button]):not([type=file]),
body.ed-site main textarea,
body.ed-site main select {
  min-height: var(--sv-input-min-h);
}
body.ed-site main table th,
body.ed-site main table td {
  padding: 14px 16px;
}
body.ed-site main table th {
  font-family: var(--ed-mono, monospace);
  font-size: 11px;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--site-ink-muted);
  border-bottom: 1px solid rgba(23, 23, 22, .28);
}

/* ── R9. Misc cleanup ─────────────────────────────────────────────────── */
/* Hairline separator used between dark bands and the next light section. */
body.ed-site .ed-section-line + .ed-section-line { border-top: 1px solid var(--site-line); }

/* Marquee on small phones: smaller logo cell width. */
@media (max-width: 620px) {
  .ed-logo-item { width: clamp(80px, 22vw, 110px); height: clamp(20px, 5vw, 28px); }
  .ed-marquee-seq { gap: clamp(28px, 8vw, 56px); padding-right: clamp(28px, 8vw, 56px); }
}

/* Showcase entry padding on mobile. */
@media (max-width: 620px) {
  body.ed-site .ed-showcase-entry { padding: 14px 0; }
  body.ed-site .ed-showcase-entry h2 { font-size: 17px; }
}

/* Reference / research hero stats strip: keep three columns but tighter. */
@media (max-width: 720px) {
  body.ed-site .ed-stats-strip { grid-template-columns: 1fr; }
  body.ed-site .ed-stats-strip > div { border-right: 0; border-bottom: 1px solid var(--site-line); }
  body.ed-site .ed-stats-strip > div:last-child { border-bottom: 0; }
}
@media (min-width: 721px) and (max-width: 980px) {
  body.ed-site .ed-stats-strip > div { padding: 14px 16px; }
  body.ed-site .ed-stats-strip p { font-size: 10.5px; }
  body.ed-site .ed-stats-strip b { font-size: 22px; }
}

/* Reference hero: title sits on its own line above the right-side copy. */
body.ed-site .ed-reference-hero-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
  gap: clamp(40px, 6vw, 96px);
  align-items: end;
}
@media (max-width: 820px) {
  body.ed-site .ed-reference-hero-grid { grid-template-columns: 1fr; gap: 18px; }
}

/* Method note at end of articles: a small card with mono label. */
body.ed-site .ed-method-note {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  padding: 16px 18px;
  border: 1px dashed var(--site-line);
  border-radius: 12px;
  background: var(--site-paper-soft);
  font-family: var(--site-serif-latin);
  font-size: 14.5px;
  line-height: 1.6;
  color: var(--site-ink-soft);
  margin-top: clamp(28px, 4vw, 40px) !important;
}
body.ed-site .ed-method-note .ed-method-label {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  font-family: var(--ed-mono, monospace);
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--sv-clay);
  padding: 4px 8px;
  border: 1px solid var(--sv-clay);
  border-radius: 999px;
  background: rgba(184, 106, 69, .08);
}

/* Article foot nav cards. */
body.ed-site .ed-article-foot { padding: clamp(36px, 5vw, 56px) 0 clamp(48px, 6vw, 80px); }
body.ed-site .ed-article-foot-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  padding: 0 var(--sv-shell-pad);
  max-width: 1280px;
  margin: 0 auto;
}
body.ed-site .ed-article-foot a {
  display: block;
  padding: 22px 24px;
  border: 1px solid var(--site-line);
  border-radius: 14px;
  background: var(--site-paper-soft);
  color: var(--site-ink);
  text-decoration: none;
  transition: border-color .18s ease, transform .25s var(--sv-ease), box-shadow .25s ease;
}
body.ed-site .ed-article-foot a:hover {
  border-color: var(--sv-clay-bright);
  transform: translateY(-2px);
}
body.ed-site .ed-article-foot .ed-meta {
  display: block;
  margin: 0 0 6px;
  font-family: var(--ed-mono, monospace);
  font-size: 11px;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--site-ink-muted);
}
body.ed-site .ed-article-foot .ed-link-arrow {
  display: block;
  font-family: var(--site-serif-latin);
  font-size: 17px;
  font-weight: 500;
  letter-spacing: -.01em;
  color: var(--site-ink);
}
html:lang(zh) body.ed-site .ed-article-foot .ed-link-arrow { font-family: var(--site-serif-cjk); }
@media (max-width: 620px) {
  body.ed-site .ed-article-foot-grid { grid-template-columns: 1fr; }
  body.ed-site .ed-article-foot a { padding: 18px 18px; }
}

/* Hero nebula (unused but kept for backward compat). */
body.ed-site .ed-hero-nebula { display: none; }

/* Hero flag (new/announcement) refinements. */
body.ed-site .ed-hero-flag { letter-spacing: .12em; }
body.ed-site .ed-hero-flag + .ed-display { margin-top: 6px; }

/* Stage index: small inline dots between items. */
body.ed-site .ed-stage-index {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  padding: 16px 22px;
}

/* Chat demo wrapper: prevent overflow on smallest phones. */
@media (max-width: 480px) {
  body.ed-site .ed-chat-bubble { max-width: 88%; }
  body.ed-site .ed-chat-demo { padding: 14px; border-radius: 16px; }
}

/* ── R10. Subtle consistency: hairlines between sections, footer links ─ */
body.ed-site .ed-section-line { border-color: rgba(23, 23, 22, .12); }
body.ed-site .ed-hero-actions .ed-button-ghost { background: transparent; }

/* Article hero aside: gap between media and byline. */
body.ed-site .ed-article-hero-aside { gap: 18px; }

/* Research hero: kicker + meta below title. */
body.ed-site .ed-reference-hero .ed-reference-title { margin: 0; }
body.ed-site .ed-reference-hero .ed-reference-copy { margin: 0; line-height: 1.55; color: var(--site-ink-soft); }
body.ed-site .ed-reference-links {
  margin: 14px 0 0;
  font-size: 13px;
  color: var(--site-ink-muted);
}
body.ed-site .ed-reference-links strong { margin-right: 6px; font-weight: 600; }
body.ed-site .ed-reference-links a {
  display: inline-block;
  margin-right: 12px;
  color: var(--site-ink);
  text-decoration: underline;
  text-decoration-color: rgba(184, 106, 69, .35);
  text-underline-offset: 3px;
}
body.ed-site .ed-reference-links a:hover { color: var(--sv-clay-bright); text-decoration-color: currentColor; }

/* Filter bar: tighter spacing between buttons. */
body.ed-site .ed-filter-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 24px 0 18px;
}
body.ed-site .ed-filter-bar button {
  padding: 8px 14px;
  font-size: 13px;
  font-weight: 500;
}
@media (max-width: 620px) {
  body.ed-site .ed-filter-bar button { padding: 7px 12px; font-size: 12.5px; }
}

/* Search field: full width on mobile. */
body.ed-site .ed-search-field {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 6px 12px;
  border: 1px solid var(--site-line);
  border-radius: 999px;
  background: var(--site-paper-soft);
  min-width: 220px;
  transition: border-color .18s ease, background .18s ease;
}
body.ed-site .ed-search-field:focus-within { border-color: var(--sv-clay-bright); background: #fff; }
body.ed-site .ed-search-field input {
  flex: 1;
  border: 0;
  background: transparent;
  outline: none;
  font: inherit;
  font-size: 14px;
  color: var(--site-ink);
  padding: 4px 0;
}
body.ed-site .ed-search-field span {
  font-family: var(--ed-mono, monospace);
  font-size: 11px;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--site-ink-muted);
}
@media (max-width: 620px) {
  body.ed-site .ed-search-field { width: 100%; min-width: 0; }
}

/* Footer: ensure brand column stretches on its own row. */
body.ed-site .ed-footer-brand .ed-brand { color: var(--site-paper); }
body.ed-site .ed-footer-brand .ed-brand-word { color: var(--site-paper); }
body.ed-site .ed-footer-social {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 18px;
}
body.ed-site .ed-footer-social a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  border-radius: 999px;
  border: 1px solid rgba(244, 241, 233, .18);
  color: rgba(244, 241, 233, .72);
}
body.ed-site .ed-footer-social a svg { width: 16px; height: 16px; }
body.ed-site .ed-footer-social a:hover { color: #fff; border-color: rgba(244, 241, 233, .42); }
body.ed-site .ed-footer-lang {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-top: 18px;
  padding: 6px 12px;
  border: 1px solid rgba(244, 241, 233, .18);
  border-radius: 999px;
  font-size: 12.5px;
  color: rgba(244, 241, 233, .72);
}
body.ed-site .ed-footer-lang:hover { color: #fff; border-color: rgba(244, 241, 233, .42); }

/* Essay rows: a little more breathing room between rows. */
body.ed-site .ed-essay-list { display: grid; gap: 4px; }
body.ed-site .ed-essay-row {
  display: grid;
  grid-template-columns: 110px minmax(0, 1fr) auto;
  gap: clamp(20px, 4vw, 56px);
  align-items: baseline;
  padding: 22px 16px;
  border-bottom: 1px solid var(--site-line);
}
body.ed-site .ed-essay-row:last-child { border-bottom: 0; }
body.ed-site .ed-essay-date { font-family: var(--ed-mono, monospace); font-size: 12px; letter-spacing: .04em; color: var(--site-ink-muted); }
body.ed-site .ed-essay-title {
  font-family: var(--site-serif-latin);
  font-size: clamp(18px, 1.5vw, 22px);
  font-weight: 500;
  letter-spacing: -.012em;
  color: var(--site-ink);
}
body.ed-site .ed-essay-tag {
  font-family: var(--ed-mono, monospace);
  font-size: 11.5px;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--site-ink-muted);
}
html:lang(zh) body.ed-site .ed-essay-title { font-family: var(--site-serif-cjk); letter-spacing: .01em; }
@media (max-width: 620px) {
  body.ed-site .ed-essay-row {
    grid-template-columns: 1fr;
    gap: 4px;
    padding: 18px 12px;
  }
  body.ed-site .ed-essay-tag { justify-self: start; }
}

/* Essay row hover wash: extends to title. */
body.ed-site .ed-essay-row:hover .ed-essay-title { color: var(--sv-clay-bright); }

/* Essay row: more comfortable padding in research index. */
body.ed-site .ed-publication-list { display: grid; gap: 0; }
body.ed-site .ed-publication-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(220px, 280px);
  gap: clamp(28px, 4vw, 60px);
  align-items: start;
  padding: clamp(22px, 3vw, 32px) 0;
  border-bottom: 1px solid var(--site-line);
}
body.ed-site .ed-publication-row:last-child { border-bottom: 0; }
body.ed-site .ed-publication-row h2 {
  margin: 12px 0 10px;
  font-family: var(--site-serif-latin);
  font-size: clamp(22px, 2vw, 30px);
  font-weight: 500;
  letter-spacing: -.014em;
  line-height: 1.18;
  color: var(--site-ink);
}
html:lang(zh) body.ed-site .ed-publication-row h2 { font-family: var(--site-serif-cjk); }
body.ed-site .ed-publication-row .ed-publication-copy p { margin: 0; font-size: 15.5px; line-height: 1.6; color: var(--site-ink-soft); }
@media (max-width: 820px) {
  body.ed-site .ed-publication-row { grid-template-columns: 1fr; gap: 16px; }
}

/* Row meta (date · read time). */
body.ed-site .ed-row-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 12px;
  align-items: center;
  font-family: var(--ed-mono, monospace);
  font-size: 11px;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--site-ink-muted);
}
body.ed-site .ed-row-meta > span:not(.ed-pill) {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
body.ed-site .ed-row-meta > span + span:not(.ed-pill)::before {
  content: "·";
  color: var(--site-line);
  margin-right: 2px;
}
body.ed-site .ed-pill {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 9px;
  border: 1px solid var(--site-line);
  border-radius: 999px;
  background: var(--site-paper-soft);
  font-family: var(--ed-mono, monospace);
  font-size: 10.5px;
  letter-spacing: .05em;
  text-transform: uppercase;
  color: var(--site-ink-soft);
}
body.ed-site .ed-pill::before {
  content: "";
  width: 5px;
  height: 5px;
  border-radius: 999px;
  background: var(--sv-clay-bright);
}

/* Pill color tones per category — match the editorial design. */
body.ed-site .ed-pill[data-cat="Memory"]::before { background: #b86a45; }
body.ed-site .ed-pill[data-cat="Explanation"]::before { background: #5e8d6b; }
body.ed-site .ed-pill[data-cat="Practice"]::before { background: #6b6db8; }
body.ed-site .ed-pill[data-cat="Knowledge mapping"]::before { background: #c89442; }
body.ed-site .ed-pill[data-cat="Tutoring"]::before { background: #b86a8a; }

/* Showcase entries (research index). */
body.ed-site .ed-showcase-rail { display: grid; gap: 6px; }
body.ed-site .ed-showcase-entry {
  display: block;
  padding: 22px 20px;
  border-bottom: 1px solid var(--site-line);
  text-decoration: none;
  color: inherit;
}
body.ed-site .ed-showcase-entry:last-child { border-bottom: 0; }
body.ed-site .ed-showcase-entry h2 {
  margin: 10px 0 6px;
  font-family: var(--site-serif-latin);
  font-size: clamp(20px, 1.7vw, 26px);
  font-weight: 500;
  letter-spacing: -.012em;
  line-height: 1.22;
}
html:lang(zh) body.ed-site .ed-showcase-entry h2 { font-family: var(--site-serif-cjk); }
body.ed-site .ed-showcase-entry p { margin: 0; font-size: 14.5px; line-height: 1.55; color: var(--site-ink-soft); }
body.ed-site .ed-showcase-entry:hover h2 { color: var(--sv-clay-bright); }

/* Team grid (research threads). */
body.ed-site .ed-team-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 22px clamp(28px, 3vw, 48px);
  padding: clamp(28px, 4vw, 48px) 0;
  border-top: 1px solid var(--site-line);
  border-bottom: 1px solid var(--site-line);
}
body.ed-site .ed-team-grid h2 {
  margin: 0 0 8px;
  font-family: var(--site-serif-latin);
  font-size: clamp(20px, 1.4vw, 24px);
  font-weight: 500;
  letter-spacing: -.012em;
  color: var(--site-ink);
}
html:lang(zh) body.ed-site .ed-team-grid h2 { font-family: var(--site-serif-cjk); }

/* Coda (bottom research statement). */
body.ed-site .ed-research-coda {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr);
  gap: clamp(40px, 6vw, 96px);
  align-items: end;
  padding: clamp(40px, 6vw, 80px) 0;
}
body.ed-site .ed-research-coda h2 {
  margin: 0;
  font-family: var(--site-serif-latin);
  font-size: clamp(28px, 3vw, 44px);
  font-weight: 500;
  line-height: 1.16;
  letter-spacing: -.014em;
  color: var(--site-ink);
}
html:lang(zh) body.ed-site .ed-research-coda h2 { font-family: var(--site-serif-cjk); }
body.ed-site .ed-research-coda p { margin: 0 0 14px; font-size: 15.5px; line-height: 1.6; color: var(--site-ink-soft); }
@media (max-width: 820px) { body.ed-site .ed-research-coda { grid-template-columns: 1fr; gap: 18px; } }

/* Publications toolbar (search + title row). */
body.ed-site .ed-publications-toolbar {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: clamp(20px, 4vw, 48px);
  margin-bottom: 12px;
  padding: clamp(24px, 4vw, 36px) 0 clamp(8px, 1.4vw, 14px);
  border-bottom: 1px solid var(--site-line);
  flex-wrap: wrap;
}
body.ed-site .ed-publications-toolbar > div { flex: 1 1 280px; min-width: 0; }
body.ed-site .ed-publications-toolbar h2 { margin: 0 0 6px; }
body.ed-site .ed-publications-toolbar p { margin: 0; max-width: 52ch; font-size: 14.5px; line-height: 1.55; color: var(--site-ink-soft); }

/* Subject ledger (product page). */
body.ed-site .ed-ledger { display: grid; gap: 0; }
body.ed-site .ed-ledger-row {
  display: grid;
  grid-template-columns: 56px minmax(120px, 200px) minmax(0, 1fr);
  gap: clamp(16px, 2vw, 32px);
  align-items: baseline;
  padding: 16px 0;
  border-top: 1px solid var(--site-line);
}
body.ed-site .ed-ledger-row:last-child { border-bottom: 1px solid var(--site-line); }
body.ed-site .ed-ledger-row > span:first-child {
  font-family: var(--ed-mono, monospace);
  font-size: 11.5px;
  letter-spacing: .06em;
  color: var(--site-ink-muted);
}
body.ed-site .ed-ledger-row > strong {
  font-family: var(--site-serif-latin);
  font-size: clamp(17px, 1.3vw, 20px);
  font-weight: 500;
  letter-spacing: -.01em;
  color: var(--site-ink);
}
html:lang(zh) body.ed-site .ed-ledger-row > strong { font-family: var(--site-serif-cjk); }
body.ed-site .ed-ledger-row > span:last-child {
  font-size: 14.5px;
  color: var(--site-ink-soft);
  line-height: 1.5;
}
@media (max-width: 620px) {
  body.ed-site .ed-ledger-row { grid-template-columns: 32px 1fr; row-gap: 4px; padding: 14px 0; }
  body.ed-site .ed-ledger-row > span:last-child { grid-column: 2; }
}

/* Hero flag & eyebrow: keep on light paper. */
body.ed-site .ed-home-hero .ed-hero-flag {
  background: transparent;
  border: 1px solid rgba(25, 25, 25, .18);
  color: rgba(26, 25, 24, .66);
}

/* Network copy in stage: better line-length. */
body.ed-site .ed-home-stage .ed-network-copy p { line-height: 1.55; max-width: 38ch; }

/* Inline-feature (product / research): standardize layout. */
body.ed-site .ed-inline-feature { padding: clamp(36px, 5vw, 60px); border-radius: 22px; }
body.ed-site .ed-inline-feature h2 {
  font-family: var(--site-serif-latin);
  font-size: clamp(26px, 2.6vw, 36px);
  font-weight: 500;
  letter-spacing: -.014em;
  line-height: 1.18;
  color: var(--ed-paper, #f4f1e9);
}
html:lang(zh) body.ed-site .ed-inline-feature h2 { font-family: var(--site-serif-cjk); }
body.ed-site .ed-inline-feature p { color: rgba(244, 241, 233, .74); line-height: 1.6; }
body.ed-site .ed-inline-feature .ed-kicker { color: rgba(244, 241, 233, .55); }
body.ed-site .ed-inline-feature .ed-link { color: rgba(244, 241, 233, .85); }

/* Black-band heading uses serif. */
body.ed-site .ed-black-band h2,
body.ed-site .ed-black-band .ed-black-band-copy h2 {
  font-family: var(--site-serif-latin);
  font-size: clamp(28px, 2.8vw, 42px);
  font-weight: 500;
  letter-spacing: -.012em;
  line-height: 1.18;
  color: var(--site-paper);
}
html:lang(zh) body.ed-site .ed-black-band h2,
html:lang(zh) body.ed-site .ed-black-band .ed-black-band-copy h2 { font-family: var(--site-serif-cjk); }
body.ed-site .ed-black-band p { color: rgba(244, 241, 233, .74); line-height: 1.6; }

/* Statement title copy block. */
body.ed-site .ed-home-statement {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
  gap: clamp(40px, 6vw, 96px);
  align-items: start;
}
@media (max-width: 820px) { body.ed-site .ed-home-statement { grid-template-columns: 1fr; gap: 18px; } }
body.ed-site .ed-home-statement-copy { display: grid; gap: 14px; }
body.ed-site .ed-home-statement-copy .ed-link { margin-top: 8px; }

/* Subject grid (product) - title + ledger side-by-side. */
body.ed-site .ed-subject-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr);
  gap: clamp(40px, 6vw, 96px);
  align-items: start;
}
@media (max-width: 820px) { body.ed-site .ed-subject-grid { grid-template-columns: 1fr; gap: 22px; } }

/* Latest research heading row. */
body.ed-site .ed-home-research-heading {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 18px;
  margin-bottom: 18px;
  flex-wrap: wrap;
}

/* Stats strip on home page sits in a more comfortable container. */
body.ed-site .ed-stats-strip { margin-top: clamp(28px, 4vw, 44px); }

/* Reference title kerning. */
body.ed-site .ed-reference-title {
  font-family: var(--site-serif-latin);
  font-size: clamp(48px, 6.4vw, 92px);
  font-weight: 500;
  letter-spacing: -.022em;
  line-height: 1.02;
  color: var(--site-ink);
}
html:lang(zh) body.ed-site .ed-reference-title { font-family: var(--site-serif-cjk); letter-spacing: .01em; }

/* Hero neon for home page bottom buttons: keep equal weight. */
body.ed-site .ed-hero-actions .ed-button-ghost {
  border-radius: 999px;
  border: 1px solid rgba(23, 23, 22, .25);
  color: var(--site-ink);
}

/* Page hero: title + lede layout. */
body.ed-site .ed-page-hero-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr);
  gap: clamp(36px, 5vw, 80px);
  align-items: end;
}
body.ed-site .ed-page-hero-grid .ed-copy-serif { grid-column: 2; margin: 0; max-width: 44ch; }
@media (max-width: 820px) {
  body.ed-site .ed-page-hero-grid { grid-template-columns: 1fr; gap: 18px; }
  body.ed-site .ed-page-hero-grid .ed-copy-serif { grid-column: auto; }
}

/* Article hero (research notes). */
body.ed-site .ed-article-hero-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(280px, 460px);
  gap: clamp(40px, 6vw, 96px);
  align-items: start;
}
body.ed-site .ed-article-hero-grid .ed-copy-serif { grid-column: 1; max-width: 52ch; margin: 18px 0 0; }
@media (max-width: 820px) {
  body.ed-site .ed-article-hero-grid { grid-template-columns: 1fr; gap: 22px; }
  body.ed-site .ed-article-hero-grid .ed-copy-serif { grid-column: auto; }
}

/* Research page: hero stats sit right under hero. */
body.ed-site .ed-reference-hero + .ed-reference-rule { margin-top: 0; }

/* Tablet and mobile tweaks for publication rows. */
@media (max-width: 480px) {
  body.ed-site .ed-publication-row h2 { font-size: 20px; }
  body.ed-site .ed-publication-row .ed-publication-copy p { font-size: 14px; }
  body.ed-site .ed-row-meta { font-size: 10.5px; }
}

/* Reference publication side image: prevent oversized rendering. */
body.ed-site .ed-publication-side img { width: 100%; max-width: 280px; }

/* "Coming next" panel: align with content. */
body.ed-site .ed-coming-next h3 {
  font-family: var(--site-serif-latin);
  font-weight: 500;
  letter-spacing: -.01em;
}
html:lang(zh) body.ed-site .ed-coming-next h3 { font-family: var(--site-serif-cjk); }

/* Editor "Method note" pill-style at end of articles. */
body.ed-site .ed-method-note { font-family: var(--site-sans-latin); }
html:lang(zh) body.ed-site .ed-method-note { font-family: var(--site-serif-cjk); }

/* ── R11. Quiet focus on kicker + meta to keep uppercase labels readable on small screens. */
body.ed-site .ed-row-meta,
body.ed-site .ed-meta,
body.ed-site .ed-pill { letter-spacing: .04em; }
@media (max-width: 620px) {
  body.ed-site .ed-row-meta,
  body.ed-site .ed-meta,
  body.ed-site .ed-pill { letter-spacing: .02em; }
}

/* ── R12. Make sure footer column link lines breathe on dark background. */
body.ed-site .ed-footer-column a:hover { color: #fff; text-decoration: underline; text-underline-offset: 3px; }

/* =========================================================================
   2026-08-24 · Marketing detail refinement
   Anthropic/x.ai-inspired rhythm: calmer contrast, tighter grid, stronger
   paragraph cadence, and predictable responsive spacing.
   ========================================================================= */
:root {
  --sf-paper: #f7f4ee;
  --sf-paper-deep: #efe8dd;
  --sf-ink: #151311;
  --sf-ink-soft: #4f4942;
  --sf-line: rgba(21, 19, 17, .14);
  --sf-card: rgba(255, 255, 255, .46);
  --sf-accent: #9b5f41;
}

body.ed-site {
  color: var(--sf-ink);
  background:
    radial-gradient(1200px 540px at 14% -12%, rgba(168, 129, 102, .10), transparent 68%),
    radial-gradient(1040px 500px at 86% -18%, rgba(148, 167, 190, .08), transparent 72%),
    var(--sf-paper);
  line-height: 1.6;
  letter-spacing: -.009em;
}
html:lang(zh) body.ed-site {
  line-height: 1.76;
  letter-spacing: .008em;
}

body.ed-site .ed-shell { width: min(1220px, calc(100% - 72px)); }
@media (max-width: 980px) {
  body.ed-site .ed-shell { width: calc(100% - 56px); }
}
@media (max-width: 620px) {
  body.ed-site .ed-shell { width: calc(100% - 34px); }
}

body.ed-site .ed-page-hero,
body.ed-site .ed-reference-hero,
body.ed-site .ed-learning-hero,
body.ed-site .ed-news-hero { padding-top: clamp(58px, 8vw, 116px); }

body.ed-site .ed-section { padding: clamp(84px, 8vw, 132px) 0; }
body.ed-site .ed-section-tight { padding: clamp(56px, 6vw, 92px) 0; }
body.ed-site .ed-section-line { border-top-color: var(--sf-line); }

body.ed-site .ed-page-title,
body.ed-site .ed-display,
body.ed-site .ed-title,
body.ed-site .ed-statement-title {
  color: var(--sf-ink);
  letter-spacing: -.024em;
  line-height: 1.06;
}
html:lang(zh) body.ed-site .ed-page-title,
html:lang(zh) body.ed-site .ed-display,
html:lang(zh) body.ed-site .ed-title,
html:lang(zh) body.ed-site .ed-statement-title {
  line-height: 1.24;
  letter-spacing: .012em;
}

body.ed-site .ed-copy,
body.ed-site .ed-copy-serif,
body.ed-site p,
body.ed-site li {
  color: var(--sf-ink-soft);
  line-height: 1.72;
}
html:lang(zh) body.ed-site .ed-copy,
html:lang(zh) body.ed-site .ed-copy-serif,
html:lang(zh) body.ed-site p,
html:lang(zh) body.ed-site li { line-height: 1.9; }

body.ed-site .ed-copy,
body.ed-site .ed-copy-serif,
body.ed-site p { max-width: 68ch; }
body.ed-site .ed-product-block > p,
body.ed-site .ed-principle > p,
body.ed-site .ed-price-card > p,
body.ed-site .ed-black-band-copy p,
body.ed-site .ed-inline-feature p { max-width: 56ch; }

body.ed-site .ed-kicker,
body.ed-site .ed-meta,
body.ed-site .ed-row-meta {
  color: rgba(21, 19, 17, .62);
  letter-spacing: .05em;
}

body.ed-site .ed-button,
body.ed-site .ed-button-quiet,
body.ed-site .ed-link {
  min-height: 42px;
  gap: 8px;
  border-radius: 10px;
}
body.ed-site .ed-button {
  background: linear-gradient(180deg, #25211d, #171512);
  border-color: #1d1a17;
}
body.ed-site .ed-button:hover {
  background: linear-gradient(180deg, #2b2622, #191613);
  border-color: #171512;
}
body.ed-site .ed-button-quiet {
  border-color: var(--sf-line);
  background: rgba(255, 255, 255, .36);
}
body.ed-site .ed-button-quiet:hover {
  border-color: rgba(21, 19, 17, .3);
  background: rgba(255, 255, 255, .58);
}

body.ed-site .ed-portal,
body.ed-site .ed-price-card,
body.ed-site .ed-product-block,
body.ed-site .ed-principle,
body.ed-site .ed-contact-card,
body.ed-site .ed-course-card,
body.ed-site .ed-featured,
body.ed-site .ed-story-card {
  border-color: var(--sf-line);
  background: var(--sf-card);
  backdrop-filter: blur(2px);
}

body.ed-site .ed-black-band,
body.ed-site .ed-inline-feature {
  border: 1px solid rgba(244, 241, 233, .14);
}

body.ed-site .ed-product-block,
body.ed-site .ed-principle { padding-block: clamp(26px, 3vw, 38px); }
body.ed-site .ed-pricing-grid { gap: clamp(16px, 1.8vw, 26px); }

body.ed-site .ed-black-band-media img,
body.ed-site .ed-inline-feature > img,
body.ed-site .ed-featured-media img,
body.ed-site .ed-story-card-media img,
body.ed-site .ed-article-hero-media img,
body.ed-site .ed-publication-side img {
  border-radius: 14px;
  object-fit: cover;
}

@media (max-width: 980px) {
  body.ed-site .ed-page-hero-grid {
    grid-template-columns: 1fr;
    gap: 20px;
    align-items: start;
  }
  body.ed-site .ed-page-hero-grid .ed-copy-serif { max-width: 40ch; }
}

@media (max-width: 820px) {
  body.ed-site .ed-header { padding: 12px 0 10px; }
  body.ed-site .ed-header-inner { gap: 14px; }
  body.ed-site .ed-nav-links a { font-size: 15px; line-height: 1.4; }
  body.ed-site .ed-button,
  body.ed-site .ed-button-quiet { min-height: 40px; padding: 9px 15px; }
  body.ed-site .ed-copy,
  body.ed-site .ed-copy-serif,
  body.ed-site p,
  body.ed-site li { line-height: 1.78; }
  html:lang(zh) body.ed-site .ed-copy,
  html:lang(zh) body.ed-site .ed-copy-serif,
  html:lang(zh) body.ed-site p,
  html:lang(zh) body.ed-site li { line-height: 1.94; }
}

@media (max-width: 620px) {
  body.ed-site .ed-page-title { font-size: clamp(34px, 10.2vw, 44px); }
  body.ed-site .ed-title { font-size: clamp(28px, 8vw, 36px); }
  body.ed-site .ed-kicker,
  body.ed-site .ed-meta,
  body.ed-site .ed-row-meta { font-size: 11px; }
  body.ed-site .ed-product-block,
  body.ed-site .ed-principle,
  body.ed-site .ed-price-card { padding: 20px 0; }
}

@media (min-width: 1460px) {
  body.ed-site .ed-shell { width: min(1320px, calc(100% - 120px)); }
  body.ed-site .ed-page-title { max-width: 13ch; }
  body.ed-site .ed-copy,
  body.ed-site .ed-copy-serif,
  body.ed-site p { max-width: 72ch; }
}

/* =========================================================================
   2026-08-24 · Anthropic / Claude fidelity pass
   Final shared layer for every English and Chinese marketing surface.
   ========================================================================= */
:root {
  --site-paper: #f5f2ea;
  --site-paper-soft: #faf8f3;
  --site-paper-strong: #e9e1d4;
  --site-ink: #171614;
  --site-ink-soft: #504b45;
  --site-ink-muted: #706a62;
  --site-line: #d6cec1;
  --site-black: #171715;
  --site-clay: #a35f3f;
  --site-shadow: 0 18px 46px rgba(30, 25, 20, .07);
  --sf-paper: var(--site-paper);
  --sf-paper-deep: var(--site-paper-strong);
  --sf-ink: var(--site-ink);
  --sf-ink-soft: var(--site-ink-soft);
  --sf-line: rgba(23, 22, 20, .14);
  --sf-card: rgba(255, 255, 255, .30);
  --sf-accent: var(--site-clay);
}

body.ed-site {
  background: var(--site-paper);
  color: var(--site-ink);
  font-size: 16px;
  line-height: 1.58;
  letter-spacing: -.008em;
}
html:lang(zh) body.ed-site {
  font-size: 16px;
  line-height: 1.78;
  letter-spacing: .006em;
}

body.ed-site .ed-shell { width: min(1312px, calc(100% - 64px)); }
body.ed-site .ed-header {
  padding: 0;
  border-bottom: 1px solid rgba(23, 22, 20, .08);
  background: rgba(245, 242, 234, .96);
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}
body.ed-site .ed-header-inner { min-height: 70px; }
body.ed-site .ed-brand { gap: 10px; }
body.ed-site .ed-brand-word { font-size: 17px; line-height: 1; letter-spacing: -.02em; }
body.ed-site .ed-nav-links { gap: 26px; }
body.ed-site .ed-nav-links a,
body.ed-site .ed-header-language,
body.ed-site .ed-lang-toggle { font-size: 14px; line-height: 1.25; }

body.ed-site .ed-page-hero,
body.ed-site .ed-reference-hero,
body.ed-site .ed-learning-hero,
body.ed-site .ed-news-hero { padding: clamp(86px, 8vw, 124px) 0 clamp(64px, 6.5vw, 96px); }
body.ed-site .ed-home-hero { padding: clamp(88px, 8vw, 124px) 0 clamp(70px, 7vw, 108px); }
body.ed-site .ed-section { padding: clamp(72px, 6.7vw, 108px) 0; }
body.ed-site .ed-section-tight { padding: clamp(48px, 4.8vw, 76px) 0; }
body.ed-site .ed-section-line + .ed-section-line { padding-top: clamp(64px, 6.2vw, 100px); }

body.ed-site .ed-display {
  max-width: 11ch;
  font-size: clamp(58px, 6vw, 88px);
  font-weight: 600;
  line-height: .98;
  letter-spacing: -.055em;
}
body.ed-site .ed-page-title {
  max-width: 12ch;
  font-size: clamp(52px, 5.2vw, 76px);
  font-weight: 500;
  line-height: 1.01;
  letter-spacing: -.048em;
}
body.ed-site .ed-title {
  font-family: var(--site-serif-latin);
  font-size: clamp(34px, 3.25vw, 50px);
  font-weight: 500;
  line-height: 1.08;
  letter-spacing: -.028em;
}
body.ed-site .ed-statement-title {
  font-size: clamp(42px, 4.4vw, 66px);
  font-weight: 500;
  line-height: 1.01;
  letter-spacing: -.046em;
}
html:lang(zh) body.ed-site .ed-display,
html:lang(zh) body.ed-site .ed-page-title,
html:lang(zh) body.ed-site .ed-statement-title {
  font-family: var(--site-sans-cjk);
  font-weight: 500;
  line-height: 1.13;
  letter-spacing: -.035em;
}
html:lang(zh) body.ed-site .ed-title {
  font-family: var(--site-serif-cjk);
  line-height: 1.28;
  letter-spacing: .01em;
}

body.ed-site .ed-copy-serif {
  max-width: 38ch;
  color: var(--site-ink-soft);
  font-family: var(--site-serif-latin);
  font-size: clamp(20px, 1.75vw, 27px);
  font-weight: 400;
  line-height: 1.42;
  letter-spacing: -.014em;
}
html:lang(zh) body.ed-site .ed-copy-serif {
  font-family: var(--site-serif-cjk);
  font-size: clamp(18px, 1.55vw, 23px);
  line-height: 1.76;
  letter-spacing: .01em;
}
body.ed-site .ed-copy,
body.ed-site p,
body.ed-site li { line-height: 1.66; }
html:lang(zh) body.ed-site .ed-copy,
html:lang(zh) body.ed-site p,
html:lang(zh) body.ed-site li { line-height: 1.86; }
body.ed-site p + p { margin-top: .9em; }

body.ed-site .ed-kicker,
body.ed-site .ed-meta,
body.ed-site .ed-row-meta {
  color: var(--site-ink-muted);
  font-size: 11px;
  line-height: 1.35;
  letter-spacing: .045em;
}
body.ed-site .ed-kicker::before { width: 22px; }

body.ed-site .ed-button,
body.ed-site .ed-button-quiet,
body.ed-site .ed-hero-actions .ed-button-ghost {
  min-height: 40px;
  padding: 9px 16px;
  border-radius: 8px;
  font-size: 13.5px;
  font-weight: 600;
  line-height: 1;
}
body.ed-site .ed-button {
  color: var(--site-paper);
  border-color: var(--site-black);
  background: var(--site-black);
  box-shadow: none;
}
body.ed-site .ed-button:hover { color: #fff; border-color: #000; background: #000; }
body.ed-site .ed-button-quiet,
body.ed-site .ed-hero-actions .ed-button-ghost { background: transparent; }
body.ed-site .ed-hero-actions { gap: 10px; }
body.ed-site .ed-link { min-height: 0; border-radius: 0; font-weight: 600; }

body.ed-site .ed-page-hero-grid { grid-template-columns: minmax(0, 1.08fr) minmax(320px, .92fr); }
body.ed-site .ed-home-hero .ed-hero-grid {
  grid-template-columns: minmax(0, 1.08fr) minmax(320px, .92fr);
  gap: clamp(56px, 7vw, 112px);
}
body.ed-site .ed-home-hero .ed-hero-sub { max-width: 30ch; }
body.ed-site .ed-home-hero .ed-hero-flag {
  padding: 0;
  border: 0;
  border-radius: 0;
  font-size: 10px;
}

body.ed-site .ed-home-stage,
body.ed-site .ed-black-band,
body.ed-site .ed-inline-feature,
body.ed-site .ed-footer-frame { border-radius: 10px; box-shadow: none; }
body.ed-site .ed-home-stage { margin-top: clamp(70px, 7vw, 108px); }
body.ed-site .ed-black-band,
body.ed-site .ed-inline-feature { border-color: rgba(245, 242, 234, .12); background: var(--site-black); }
body.ed-site .ed-black-band-media img,
body.ed-site .ed-inline-feature > img,
body.ed-site .ed-featured-media img,
body.ed-site .ed-story-card-media img,
body.ed-site .ed-article-hero-media img,
body.ed-site .ed-publication-side img { border-radius: 8px; }

body.ed-site .ed-portal,
body.ed-site .ed-price-card,
body.ed-site .ed-product-block,
body.ed-site .ed-principle,
body.ed-site .ed-contact-card,
body.ed-site .ed-course-card,
body.ed-site .ed-featured,
body.ed-site .ed-story-card {
  border-color: rgba(23, 22, 20, .14);
  background: transparent;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  box-shadow: none;
}
body.ed-site .ed-product-grid { gap: 0; }
body.ed-site .ed-product-block { padding: clamp(28px, 3vw, 42px) 0; border-radius: 0; }
body.ed-site .ed-product-block h2 {
  font-family: var(--site-serif-latin);
  font-size: clamp(23px, 2vw, 31px);
  font-weight: 500;
  line-height: 1.16;
  letter-spacing: -.02em;
}
html:lang(zh) body.ed-site .ed-product-block h2 { font-family: var(--site-serif-cjk); line-height: 1.4; }
body.ed-site .ed-stats-strip { border-radius: 10px; background: rgba(255,255,255,.28); }
body.ed-site .ed-ledger-row { padding: 13px 0; }

body.ed-site .ed-footer { padding: 0 0 24px; }
body.ed-site .ed-footer-frame { padding: clamp(50px, 5vw, 72px); }
body.ed-site .ed-footer-top { gap: clamp(28px, 4vw, 56px); }
body.ed-site .ed-footer-column { gap: 10px; }
body.ed-site .ed-footer-column a { font-size: 13px; line-height: 1.4; }
body.ed-site .ed-footer-bottom { margin-top: clamp(46px, 5vw, 70px); }

body.ed-site.legal-page .ed-legal-body { width: min(100%, 760px); max-width: 760px; }
body.ed-site.legal-page .ed-legal-section { margin-bottom: 42px; }
body.ed-site.legal-page .ed-legal-section h3 { margin-bottom: 16px; }
body.ed-site.legal-page .ed-legal-section p,
body.ed-site.legal-page .ed-legal-section li { max-width: 70ch; font-size: 17px; line-height: 1.74; }

@media (max-width: 980px) {
  body.ed-site .ed-shell { width: calc(100% - 48px); }
  body.ed-site .ed-nav-links { gap: 18px; }
  body.ed-site .ed-page-hero-grid,
  body.ed-site .ed-home-hero .ed-hero-grid { grid-template-columns: 1fr; gap: 24px; }
  body.ed-site .ed-page-hero-grid .ed-copy-serif { grid-column: auto; max-width: 34ch; }
  body.ed-site .ed-home-hero .ed-hero-lead,
  body.ed-site .ed-home-hero .ed-hero-sub,
  body.ed-site .ed-home-hero .ed-hero-actions { grid-column: auto; grid-row: auto; }
  body.ed-site .ed-home-hero .ed-hero-actions { margin-top: 4px; }
}

@media (max-width: 620px) {
  body.ed-site .ed-shell { width: calc(100% - 36px); }
  body.ed-site .ed-header-inner { min-height: 64px; }
  body.ed-site .ed-brand-word { font-size: 16px; }
  body.ed-site .ed-page-hero,
  body.ed-site .ed-reference-hero,
  body.ed-site .ed-learning-hero,
  body.ed-site .ed-news-hero { padding: 64px 0 46px; }
  body.ed-site .ed-home-hero { padding: 62px 0 52px; }
  body.ed-site .ed-section { padding: 54px 0; }
  body.ed-site .ed-section-tight { padding: 38px 0; }
  body.ed-site .ed-section-line + .ed-section-line { padding-top: 50px; }
  body.ed-site .ed-display { max-width: none; font-size: clamp(43px, 13vw, 58px); line-height: .98; }
  body.ed-site .ed-page-title { max-width: none; font-size: clamp(39px, 11.6vw, 52px); line-height: 1.02; }
  body.ed-site .ed-title { font-size: clamp(30px, 9vw, 39px); line-height: 1.08; }
  body.ed-site .ed-statement-title { font-size: clamp(36px, 10.8vw, 48px); }
  html:lang(zh) body.ed-site .ed-display,
  html:lang(zh) body.ed-site .ed-page-title,
  html:lang(zh) body.ed-site .ed-statement-title { line-height: 1.14; }
  body.ed-site .ed-copy-serif { font-size: 20px; line-height: 1.48; }
  html:lang(zh) body.ed-site .ed-copy-serif { font-size: 18px; line-height: 1.72; }
  body.ed-site .ed-copy,
  body.ed-site p,
  body.ed-site li { font-size: 15px; line-height: 1.68; }
  html:lang(zh) body.ed-site .ed-copy,
  html:lang(zh) body.ed-site p,
  html:lang(zh) body.ed-site li { line-height: 1.84; }
  body.ed-site .ed-button,
  body.ed-site .ed-button-quiet,
  body.ed-site .ed-hero-actions .ed-button-ghost { min-height: 42px; padding: 10px 14px; font-size: 13px; }
  body.ed-site .ed-hero-actions { display: grid; grid-template-columns: 1fr 1fr; width: 100%; }
  body.ed-site .ed-hero-actions .ed-button { justify-content: center; text-align: center; }
  body.ed-site .ed-home-stage { margin-top: 52px; border-radius: 8px; }
  body.ed-site .ed-black-band,
  body.ed-site .ed-inline-feature,
  body.ed-site .ed-footer-frame { border-radius: 8px; }
  body.ed-site .ed-inline-feature { padding: 24px; }
  body.ed-site .ed-footer { padding-bottom: 14px; }
  body.ed-site .ed-footer-frame { padding: 36px 24px 28px; }
  body.ed-site .ed-footer-top { grid-template-columns: 1fr 1fr; gap: 30px 22px; }
  body.ed-site .ed-footer-brand { grid-column: 1 / -1; }
  body.ed-site .ed-footer-bottom { margin-top: 38px; }
  body.ed-site.legal-page .ed-legal-section p,
  body.ed-site.legal-page .ed-legal-section li { font-size: 15.5px; line-height: 1.78; }
}

@media (max-width: 390px) {
  body.ed-site .ed-shell { width: calc(100% - 28px); }
  body.ed-site .ed-display { font-size: clamp(40px, 12.6vw, 50px); }
  body.ed-site .ed-page-title { font-size: clamp(37px, 11.2vw, 46px); }
  body.ed-site .ed-hero-actions { grid-template-columns: 1fr; }
}

@media (min-width: 1460px) {
  body.ed-site .ed-shell { width: min(1360px, calc(100% - 128px)); }
}
/* =========================================================================
   Z. FINAL · Anthropic fidelity pass (2026-08-24)
   Single authoritative layer. Loaded last; wins the cascade.
   Reference: anthropic.com + claude.com/product/overview + direction board.
   -------------------------------------------------------------------------
   Z1  Tokens          — Anthropic ivory paper, slate ink, clay accent
   Z2  Typography      — serif display family, sizes, rhythm, CJK mirror
   Z3  Header          — 64px bar, hairline, nav, active clay underline
   Z4  Buttons & links — one radius, one height, one gap
   Z5  Hero (home)     — right column stack, bottom-aligned
   Z6  Page heroes     — kicker / title / standfirst rhythm
   Z7  Sections        — unified padding + hairlines
   Z8  Dark bands      — 24px panels, serif headlines, clay links
   Z9  Product blocks  — 3-column editorial rows
   Z10 Path timeline   — clay nodes on a hairline
   Z11 Stats strip     — bordered panel, serif figures
   Z12 Ledger          — numbered subjects, right-aligned notes
   Z13 Essay rows      — date / serif title / tag
   Z14 Chat demo       — session card
   Z15 Marquee         — quiet trusted-by band
   Z16 Footer          — dark rounded panel, mono headers
   Z17 CJK overrides   — Noto Serif SC display, CJK line-height
   Z18 Responsive      — tablet, mobile, wide
   Z19 Motion safety   — reduced-motion collapses
   ========================================================================= */

/* ── Z1. Tokens ───────────────────────────────────────────────────────── */
:root {
  --an-paper: #f0eee6;          /* Anthropic ivory */
  --an-paper-soft: #faf9f5;
  --an-paper-deep: #e6e1d3;
  --an-ink: #191919;            /* Anthropic slate */
  --an-ink-soft: #40403e;
  --an-ink-muted: #6e6b64;
  --an-line: rgba(25, 25, 25, .14);
  --an-line-strong: rgba(25, 25, 25, .26);
  --an-black: #141413;
  --an-clay: #c15f3c;           /* direction-board terracotta */
  --an-clay-bright: #d97757;    /* Anthropic crail */
  --an-paper-text: #f5f3ec;
  --an-serif: var(--font-serif);
  --an-sans: var(--font-sans);
  --an-mono: var(--font-mono);
  --an-band-radius: 24px;
  --an-media-radius: 12px;
  --an-btn-radius: 10px;
}
:root {
  --site-paper: var(--an-paper);
  --site-paper-soft: var(--an-paper-soft);
  --site-paper-strong: var(--an-paper-deep);
  --site-ink: var(--an-ink);
  --site-ink-soft: var(--an-ink-soft);
  --site-ink-muted: var(--an-ink-muted);
  --site-line: #d8d2c4;
  --site-black: var(--an-black);
  --site-clay: var(--an-clay);
  --sf-paper: var(--an-paper);
  --sf-paper-deep: var(--an-paper-deep);
  --sf-ink: var(--an-ink);
  --sf-ink-soft: var(--an-ink-soft);
  --sf-line: var(--an-line);
  --sf-card: transparent;
  --sf-accent: var(--an-clay);
  --ed-paper: var(--an-paper);
  --ed-paper-soft: var(--an-paper-soft);
  --ed-paper-strong: var(--an-paper-deep);
  --ed-ink: var(--an-ink);
  --ed-ink-soft: var(--an-ink-soft);
  --ed-ink-muted: var(--an-ink-muted);
  --ed-line: #d8d2c4;
  --ed-black: var(--an-black);
  --ed-black-soft: #1d1c1a;
  --ed-clay: var(--an-clay);
  --ed-clay-warm: var(--an-clay-bright);
  --ed-serif: var(--an-serif);
  --ed-sans: var(--an-sans);
  --ed-mono: var(--an-mono);
}
html { background: var(--an-paper); }
body.ed-site {
  background: var(--an-paper);
  color: var(--an-ink);
  font-family: var(--an-sans);
  font-size: 16px;
  line-height: 1.6;
  letter-spacing: -.011em;
}
/* Calm paper: keep a whisper of grain, nothing more. */
body.ed-site::after { opacity: .16; }

/* ── Z2. Typography ───────────────────────────────────────────────────── */
/* Every display/headline face becomes the editorial serif, exactly like the
   direction board. Weight 500, gentle tracking, tight leading. */
body.ed-site .ed-display,
body.ed-site .ed-page-title,
body.ed-site .ed-title,
body.ed-site .ed-statement-title,
body.ed-site .ed-reference-title,
body.ed-site .ed-news-hero h1,
body.ed-site .ed-learning-hero h1,
body.ed-site .ed-research-coda h2,
body.ed-site .ed-policy-manifesto h2,
body.ed-site .ed-policy-visual h2,
body.ed-site .ed-course-intro h2,
body.ed-site .ed-learning-object h2,
body.ed-site .ed-network-copy h2,
body.ed-site .ed-split-heading,
body.ed-site .ed-manifesto .ed-statement-title,
body.ed-site .ed-title.ed-artifact {
  font-family: var(--an-serif);
  font-weight: 500;
  letter-spacing: -.022em;
  line-height: 1.05;
  font-feature-settings: "kern", "liga", "calt";
  text-wrap: balance;
}
body.ed-site .ed-display { font-size: clamp(44px, 5.4vw, 80px); line-height: 1.02; }
body.ed-site .ed-page-title { max-width: 15ch; font-size: clamp(42px, 4.9vw, 70px); line-height: 1.04; }
body.ed-site .ed-title { font-size: clamp(30px, 3.2vw, 48px); line-height: 1.08; }
body.ed-site .ed-statement-title { font-size: clamp(32px, 3.5vw, 54px); line-height: 1.06; }
body.ed-site .ed-reference-title { font-size: clamp(42px, 5vw, 74px); line-height: 1.04; }

/* Serif support faces. */
body.ed-site .ed-serif,
body.ed-site .ed-copy-serif {
  font-family: var(--an-serif);
  font-weight: 400;
  letter-spacing: -.008em;
}
body.ed-site .ed-serif { font-size: clamp(19px, 1.6vw, 24px); line-height: 1.45; }
body.ed-site .ed-copy-serif { font-size: clamp(19px, 1.55vw, 24px); line-height: 1.5; max-width: 34ch; color: var(--an-ink-soft); }
body.ed-site .ed-copy { font-size: 16.5px; line-height: 1.68; color: var(--an-ink-soft); max-width: 62ch; }
body.ed-site p + p { margin-top: 1em; }

/* Kickers — small clay-dash eyebrows, sentence case. */
body.ed-site .ed-kicker,
body.ed-site .ed-meta,
body.ed-site .ed-row-meta {
  font-family: var(--an-sans);
  color: var(--an-ink-muted);
  font-size: 12px;
  font-weight: 500;
  letter-spacing: .015em;
  line-height: 1.4;
  text-transform: none;
}
body.ed-site .ed-kicker {
  display: inline-flex;
  align-items: center;
  margin: 0 0 16px;
}
body.ed-site .ed-kicker::before {
  content: "";
  display: inline-block;
  width: 20px;
  height: 1px;
  margin-right: 10px;
  background: var(--an-clay);
  transform: translateY(-1px);
}
body.ed-site .ed-meta { font-size: 12.5px; letter-spacing: .01em; }

/* ── Z3. Header ───────────────────────────────────────────────────────── */
body.ed-site .ed-header {
  padding: 0;
  min-height: 0;
  background: rgba(240, 238, 230, .92);
  -webkit-backdrop-filter: blur(10px) saturate(150%);
  backdrop-filter: blur(10px) saturate(150%);
  border-bottom: 1px solid transparent;
  transition: border-color .2s ease, background .2s ease;
}
body.ed-site .ed-header.is-scrolled {
  padding: 0;
  border-bottom-color: var(--an-line);
  background: rgba(240, 238, 230, .94);
}
body.ed-site .ed-header .ed-shell { width: min(1280px, calc(100% - 48px)); }
body.ed-site .ed-header-inner {
  grid-template-columns: minmax(150px, 1fr) auto auto;
  gap: 24px;
  min-height: 64px;
}
body.ed-site .ed-brand { gap: 10px; font-family: var(--an-serif); font-size: 17.5px; font-weight: 600; letter-spacing: -.01em; }
body.ed-site .ed-brand img {
  width: 26px; height: 26px; flex: 0 0 26px;
  border-radius: 7px; padding: 0; background: transparent;
}
body.ed-site .ed-brand-word { font-family: var(--an-serif); font-weight: 600; letter-spacing: -.01em; }
body.ed-site .ed-nav-links { gap: 26px; }
body.ed-site .ed-nav-links a,
body.ed-site .ed-lang-toggle {
  color: var(--an-ink-soft);
  font-size: 13.5px;
  font-weight: 500;
  letter-spacing: -.002em;
}
body.ed-site .ed-nav-links a:hover,
body.ed-site .ed-nav-links a[aria-current="page"],
body.ed-site .ed-lang-toggle:hover { color: var(--an-ink); }
body.ed-site .ed-header-actions { gap: 14px; }
body.ed-site .ed-lang-toggle { padding: 6px 4px; border: 0; }

/* ── Z4. Buttons & links ──────────────────────────────────────────────── */
body.ed-site .ed-button,
body.ed-site .ed-button-quiet,
body.ed-site .ed-hero-actions .ed-button-ghost {
  min-height: 40px;
  padding: 10px 18px;
  border-radius: var(--an-btn-radius);
  font-family: var(--an-sans);
  font-size: 13.5px;
  font-weight: 500;
  letter-spacing: .002em;
  line-height: 1;
}
body.ed-site .ed-button {
  color: var(--an-paper-text);
  background: var(--an-ink);
  border-color: var(--an-ink);
  box-shadow: none;
}
body.ed-site .ed-button:hover { color: #fff; background: #000; border-color: #000; }
body.ed-site .ed-button-quiet,
body.ed-site .ed-hero-actions .ed-button-ghost {
  color: var(--an-ink);
  background: transparent;
  border: 1px solid var(--an-line-strong);
}
body.ed-site .ed-button-quiet:hover,
body.ed-site .ed-hero-actions .ed-button-ghost:hover {
  color: var(--an-ink);
  background: rgba(25, 25, 25, .05);
  border-color: rgba(25, 25, 25, .45);
}
body.ed-site .ed-price-card.is-featured .ed-button {
  color: var(--an-ink);
  background: var(--an-paper-text);
  border-color: var(--an-paper-text);
}
body.ed-site .ed-link {
  color: var(--an-ink);
  font-size: 14px;
  font-weight: 500;
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 4px;
  text-decoration-color: rgba(25, 25, 25, .3);
  transition: color .15s ease, text-decoration-color .15s ease;
}
body.ed-site .ed-link:hover { color: var(--an-clay); text-decoration-color: currentColor; }
body.ed-site .ed-link-light { color: var(--an-paper-text); text-decoration-color: rgba(245, 243, 236, .35); }
body.ed-site .ed-link-light:hover { color: var(--an-clay-bright); }

/* ── Z5. Home hero ────────────────────────────────────────────────────── */
body.ed-site .ed-home-hero { padding: clamp(64px, 7.5vw, 116px) 0 clamp(56px, 6vw, 92px); }
body.ed-site .ed-home-hero .ed-hero-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.12fr) minmax(0, .88fr);
  grid-template-rows: auto auto;
  column-gap: clamp(48px, 7vw, 120px);
  align-items: end;
}
body.ed-site .ed-home-hero .ed-hero-lead { grid-column: 1; grid-row: 1 / span 2; max-width: none; }
body.ed-site .ed-home-hero .ed-hero-flag {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin: 0 0 24px;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: none;
  font-family: var(--an-mono);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--an-ink-muted);
}
body.ed-site .ed-home-hero .ed-hero-flag::before {
  content: "";
  width: 20px; height: 1px;
  background: var(--an-clay);
}
body.ed-site .ed-home-hero .ed-hero-flag span { display: none; }
body.ed-site .ed-home-hero .ed-display { max-width: 13ch; }
body.ed-site .ed-home-hero .ed-hero-sub {
  grid-column: 2;
  grid-row: 1;
  align-self: end;
  max-width: 30ch;
  margin: 0;
  font-style: normal;
  font-size: clamp(17px, 1.35vw, 20px);
  line-height: 1.55;
  color: var(--an-ink-soft);
}
body.ed-site .ed-home-hero .ed-hero-actions {
  grid-column: 2;
  grid-row: 2;
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin: 28px 0 4px;
}
body.ed-site .ed-home-hero + .ed-marquee { border-top-color: var(--an-line); border-bottom-color: var(--an-line); }
body.ed-site .ed-marquee-title {
  font-family: var(--an-mono);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--an-ink-muted);
}
body.ed-site .ed-logo-item { color: rgba(25, 25, 25, .55); }
body.ed-site .ed-logo-item:hover { color: var(--an-ink); }

/* Home stage panel. */
body.ed-site .ed-home-stage {
  margin-top: clamp(56px, 6.5vw, 96px);
  border-radius: var(--an-band-radius);
  box-shadow: 0 0 0 1px rgba(25, 25, 25, .08);
  overflow: hidden;
}
body.ed-site .ed-home-stage img { border-radius: 0; aspect-ratio: 16 / 8.4; }
body.ed-site .ed-home-stage::after { border-radius: 0; }
body.ed-site .ed-stage-index {
  gap: 8px;
  padding: 0;
  background: none;
}
body.ed-site .ed-stage-index a {
  padding: 7px 14px;
  border-radius: 999px;
  border: 1px solid rgba(255, 255, 255, .22);
  background: rgba(20, 20, 19, .35);
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
  color: rgba(255, 255, 255, .85);
  font-size: 12.5px;
}
body.ed-site .ed-stage-index a:hover { background: rgba(255, 255, 255, .14); color: #fff; border-color: rgba(255, 255, 255, .38); }
body.ed-site .ed-stage-caption {
  font-family: var(--an-mono);
  font-size: 11px;
  letter-spacing: .08em;
  color: rgba(255, 255, 255, .45);
}
body.ed-site .ed-home-stage .ed-network-copy h2 {
  color: #faf9f4;
  font-size: clamp(34px, 3.6vw, 56px);
  line-height: 1.04;
  letter-spacing: -.022em;
}
body.ed-site .ed-home-stage .ed-network-copy p { color: rgba(250, 249, 244, .66); line-height: 1.55; }

/* ── Z6. Page heroes ──────────────────────────────────────────────────── */
body.ed-site .ed-page-hero { padding: clamp(64px, 7.5vw, 112px) 0 clamp(44px, 5vw, 72px); }
body.ed-site .ed-page-hero .ed-kicker { margin-bottom: 20px; }
body.ed-site .ed-page-hero-grid,
body.ed-site .ed-reference-hero-grid {
  grid-template-columns: minmax(0, 1.12fr) minmax(0, .88fr);
  column-gap: clamp(48px, 7vw, 120px);
  align-items: end;
}
body.ed-site .ed-page-hero-grid .ed-copy-serif { grid-column: 2; margin: 0 0 6px; }
body.ed-site .ed-reference-hero { padding: clamp(64px, 7.5vw, 112px) 0 clamp(44px, 5vw, 72px); }
body.ed-site .ed-reference-copy {
  max-width: 34ch;
  font-family: var(--an-serif);
  font-size: clamp(19px, 1.6vw, 24px);
  line-height: 1.45;
  color: var(--an-ink-soft);
}
body.ed-site .ed-reference-links { margin-top: 20px; font-size: 13.5px; }

/* ── Z7. Sections ─────────────────────────────────────────────────────── */
body.ed-site .ed-section { padding: clamp(72px, 7.5vw, 116px) 0; }
body.ed-site .ed-section-tight { padding: clamp(52px, 5.5vw, 84px) 0; }
body.ed-site .ed-section-line { border-top: 1px solid var(--an-line); }
body.ed-site .ed-section-line + .ed-section-line { padding-top: clamp(72px, 7.5vw, 116px); }

/* ── Z8. Dark bands ───────────────────────────────────────────────────── */
body.ed-site .ed-black-band,
body.ed-site .ed-inline-feature {
  border-radius: var(--an-band-radius);
  background: var(--an-black);
  border: 0;
  box-shadow: 0 0 0 1px rgba(25, 25, 25, .06);
  background-image: none;
}
body.ed-site .ed-black-band-copy { padding: clamp(36px, 4.5vw, 68px); }
body.ed-site .ed-black-band-copy h2 {
  max-width: 15ch;
  margin: 18px 0 0;
  color: var(--an-paper-text);
  font-family: var(--an-serif);
  font-size: clamp(30px, 3.1vw, 46px);
  font-weight: 500;
  line-height: 1.08;
  letter-spacing: -.022em;
}
body.ed-site .ed-black-band-copy p {
  max-width: 38ch;
  margin: 22px 0 0;
  color: rgba(245, 243, 236, .68);
  font-size: 15.5px;
  line-height: 1.65;
}
body.ed-site .ed-black-band .ed-kicker,
body.ed-site .ed-inline-feature .ed-kicker { color: rgba(245, 243, 236, .52); }
body.ed-site .ed-black-band .ed-kicker::before,
body.ed-site .ed-inline-feature .ed-kicker::before { background: var(--an-clay-bright); }
body.ed-site .ed-black-band-copy .ed-link,
body.ed-site .ed-inline-feature .ed-link {
  color: var(--an-clay-bright);
  text-decoration-color: rgba(217, 119, 87, .4);
}
body.ed-site .ed-black-band-copy .ed-link:hover,
body.ed-site .ed-inline-feature .ed-link:hover { color: #e88a63; text-decoration-color: currentColor; }
body.ed-site .ed-black-band-media img { border-radius: 0; }
body.ed-site .ed-inline-feature { padding: clamp(28px, 4vw, 56px); }
body.ed-site .ed-inline-feature > img { border-radius: var(--an-media-radius); aspect-ratio: 4 / 4.4; max-height: 620px; }
body.ed-site .ed-inline-feature h2 {
  max-width: 15ch;
  margin: 16px 0 0;
  font-family: var(--an-serif);
  font-size: clamp(28px, 2.9vw, 42px);
  font-weight: 500;
  line-height: 1.1;
  letter-spacing: -.022em;
  color: var(--an-paper-text);
}
body.ed-site .ed-inline-feature p { color: rgba(245, 243, 236, .68); font-size: 15.5px; line-height: 1.65; }

/* ── Z9. Product blocks ───────────────────────────────────────────────── */
body.ed-site .ed-product-grid { gap: 0; }
body.ed-site .ed-product-block {
  grid-template-columns: minmax(170px, 200px) minmax(0, 1fr) minmax(260px, .74fr);
  gap: clamp(28px, 4.5vw, 72px);
  align-items: start;
  padding: clamp(30px, 3.4vw, 44px) 0;
  border-top: 1px solid var(--an-line);
  background: transparent;
}
body.ed-site .ed-product-block:first-child { border-top: 0; }
body.ed-site .ed-product-block:last-child { border-bottom: 1px solid var(--an-line); }
body.ed-site .ed-product-block::before { display: none; }
body.ed-site .ed-product-block h2 {
  max-width: 21ch;
  margin: 0;
  font-family: var(--an-serif);
  font-size: clamp(22px, 2vw, 28px);
  font-weight: 500;
  line-height: 1.22;
  letter-spacing: -.018em;
  color: var(--an-ink);
}
body.ed-site .ed-product-block:hover h2 { color: var(--an-clay); }
body.ed-site .ed-product-block p {
  max-width: 40ch;
  margin: 0;
  color: var(--an-ink-soft);
  font-size: 15px;
  line-height: 1.68;
}
body.ed-site .ed-product-meta-col { gap: 16px; }
body.ed-site .ed-product-meta-text { gap: 5px; }
body.ed-site .ed-product-meta-text .ed-kicker { margin: 0; color: var(--an-ink); font-size: 12px; }
body.ed-site .ed-product-meta-text .ed-kicker::before { display: none; }
body.ed-site .ed-product-meta-text .ed-meta { margin: 0; font-size: 12.5px; }
body.ed-site .ed-mini-demo { border-radius: 12px; }

/* ── Z10. Path timeline ───────────────────────────────────────────────── */
body.ed-site .ed-path-timeline { margin: clamp(40px, 5vw, 64px) 0 8px; padding: 8px 0 0; }
body.ed-site .ed-path-timeline::before { top: 17px; left: 12%; right: 12%; background: var(--an-line); }
body.ed-site .ed-path-step { padding: 0 16px 8px; }
body.ed-site .ed-path-node {
  width: 11px; height: 11px;
  margin: 0 auto 16px;
  background: var(--an-paper);
  border: 1.5px solid var(--an-clay);
}
body.ed-site .ed-path-node::after { background: var(--an-clay); }
body.ed-site .ed-path-step strong { font-size: 14.5px; font-weight: 600; letter-spacing: -.005em; }
body.ed-site .ed-path-step span { margin: 5px auto 0; max-width: 24ch; font-size: 13px; line-height: 1.5; color: var(--an-ink-muted); }

/* ── Z11. Stats strip ─────────────────────────────────────────────────── */
body.ed-site .ed-stats-strip {
  margin-top: clamp(36px, 4.5vw, 56px);
  grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
  border: 1px solid var(--an-line);
  border-radius: 16px;
  background: var(--an-paper-soft);
}
body.ed-site .ed-stats-strip > div { padding: 20px 24px 22px; border-right: 1px solid var(--an-line); }
body.ed-site .ed-stats-strip p {
  margin: 0 0 10px;
  font-family: var(--an-mono);
  font-size: 10.5px;
  font-weight: 500;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--an-ink-muted);
}
body.ed-site .ed-stats-strip b {
  font-family: var(--an-serif);
  font-size: clamp(26px, 2.6vw, 36px);
  font-weight: 500;
  letter-spacing: -.015em;
  color: var(--an-ink);
}

/* ── Z12. Ledger ──────────────────────────────────────────────────────── */
body.ed-site .ed-ledger { border-top: 1px solid var(--an-line); }
body.ed-site .ed-ledger-row {
  grid-template-columns: 44px minmax(0, 1fr) minmax(150px, .38fr);
  gap: clamp(16px, 2.5vw, 40px);
  padding: 15px 0;
  border-top: 0;
  border-bottom: 1px solid var(--an-line);
}
body.ed-site .ed-ledger-row:last-child { border-bottom: 0; }
body.ed-site .ed-ledger-row > span:first-child { font-family: var(--an-mono); font-size: 11.5px; color: var(--an-ink-muted); }
body.ed-site .ed-ledger-row > strong {
  font-family: var(--an-serif);
  font-size: 17px;
  font-weight: 500;
  letter-spacing: -.01em;
}
body.ed-site .ed-ledger-row > span:last-child {
  font-family: var(--an-sans);
  font-size: 13.5px;
  line-height: 1.5;
  color: var(--an-ink-muted);
  text-align: right;
}
body.ed-site .ed-ledger-row:hover > strong { color: var(--an-clay); }
body.ed-site .ed-subject-grid { grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: clamp(48px, 7vw, 120px); align-items: center; }
body.ed-site .ed-subject-grid .ed-statement-title { max-width: 15ch; }

/* Statement split (home). */
body.ed-site .ed-home-statement { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(44px, 6vw, 104px); align-items: start; }
body.ed-site .ed-home-statement .ed-statement-title { max-width: 14ch; margin-top: 0; }
body.ed-site .ed-home-statement-copy { padding-top: 6px; }
body.ed-site .ed-home-statement-copy .ed-copy-serif { max-width: 30ch; }
body.ed-site .ed-home-statement-copy .ed-copy { margin-top: 18px; }
body.ed-site .ed-home-statement-copy .ed-link { margin-top: 24px; }

/* ── Z13. Essay rows ──────────────────────────────────────────────────── */
body.ed-site .ed-essay-list { margin-top: clamp(32px, 4vw, 52px); }
body.ed-site .ed-essay-row {
  grid-template-columns: 110px minmax(0, 1fr) auto;
  gap: clamp(20px, 3vw, 48px);
  padding: 22px 4px;
  border-top: 1px solid var(--an-line);
  border-radius: 0;
  background-image: none;
}
body.ed-site .ed-essay-row:last-child { border-bottom: 1px solid var(--an-line); }
body.ed-site .ed-essay-row .ed-essay-date { font-family: var(--an-mono); font-size: 11.5px; letter-spacing: .04em; }
body.ed-site .ed-essay-row .ed-essay-title {
  font-family: var(--an-serif);
  font-size: clamp(19px, 1.6vw, 23px);
  font-weight: 500;
  letter-spacing: -.014em;
  line-height: 1.25;
}
body.ed-site .ed-essay-row:hover .ed-essay-title { color: var(--an-clay); }
body.ed-site .ed-essay-row .ed-essay-tag { font-family: var(--an-mono); font-size: 11px; letter-spacing: .05em; text-transform: uppercase; }
body.ed-site .ed-home-research-heading { align-items: end; margin-bottom: 0; }
body.ed-site .ed-home-research-heading .ed-title { max-width: 16ch; }

/* ── Z14. Chat demo ───────────────────────────────────────────────────── */
body.ed-site .ed-chat-demo {
  margin: clamp(36px, 4.5vw, 60px) auto 0;
  max-width: 880px;
  padding: clamp(20px, 2.6vw, 32px);
  border: 1px solid var(--an-line);
  border-radius: 20px;
  background: var(--an-paper-soft);
  box-shadow: none;
}
body.ed-site .ed-chat-head { font-family: var(--an-mono); font-size: 10.5px; letter-spacing: .1em; }
body.ed-site .ed-chat-bubble { font-size: 14.5px; line-height: 1.6; }
body.ed-site .ed-chat-bubble.user { background: var(--an-ink); color: var(--an-paper-text); }
body.ed-site .ed-chat-bubble.tutor { background: #fffdf8; border: 1px solid var(--an-line); }

/* ── Z15. Marquee ─────────────────────────────────────────────────────── */
.ed-marquee { border-top: 1px solid var(--an-line); border-bottom: 1px solid var(--an-line); }

/* ── Z16. Footer ──────────────────────────────────────────────────────── */
body.ed-site .ed-footer { padding: 24px 0 28px; }
body.ed-site .ed-footer-frame {
  padding: clamp(40px, 5vw, 64px);
  border-radius: var(--an-band-radius);
  background: var(--an-black);
  color: var(--an-paper-text);
}
body.ed-site .ed-footer-top {
  grid-template-columns: minmax(200px, 1.3fr) repeat(4, minmax(0, 1fr));
  gap: clamp(28px, 4vw, 56px);
  padding: 0 0 clamp(36px, 4.5vw, 56px);
}
body.ed-site .ed-footer .ed-brand { color: var(--an-paper-text); font-size: 16.5px; }
body.ed-site .ed-footer .ed-brand img { background: rgba(255, 255, 255, .08); }
body.ed-site .ed-footer-brand p {
  max-width: 26ch;
  margin: 18px 0 0;
  color: rgba(245, 243, 236, .6);
  font-family: var(--an-sans);
  font-size: 14px;
  line-height: 1.6;
}
body.ed-site .ed-footer-social { gap: 8px; margin-top: 24px; }
body.ed-site .ed-footer-social a {
  width: 34px; height: 34px;
  border-color: rgba(245, 243, 236, .18);
  color: rgba(245, 243, 236, .72);
}
body.ed-site .ed-footer-social a:hover { color: #fff; border-color: rgba(245, 243, 236, .4); background: rgba(255, 255, 255, .06); }
body.ed-site .ed-footer-column { gap: 2px; }
body.ed-site .ed-footer-column h2 {
  margin: 0 0 14px;
  font-family: var(--an-mono);
  font-size: 10.5px;
  font-weight: 500;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: rgba(245, 243, 236, .44);
}
body.ed-site .ed-footer-column a { padding: 5px 0; color: rgba(245, 243, 236, .76); font-size: 13.5px; }
body.ed-site .ed-footer-column a:hover { color: #fff; text-decoration: underline; text-underline-offset: 3px; }
body.ed-site .ed-footer-bottom {
  margin-top: 0;
  padding: 22px 0 0;
  border-top: 1px solid rgba(245, 243, 236, .12);
  font-family: var(--an-mono);
  font-size: 10.5px;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: rgba(245, 243, 236, .42);
}

/* ── Z17. CJK mirrors ─────────────────────────────────────────────────── */
html:lang(zh) body.ed-site {
  font-family: var(--site-sans-cjk, var(--an-sans));
  line-height: 1.78;
  letter-spacing: .005em;
}
html:lang(zh) body.ed-site .ed-display,
html:lang(zh) body.ed-site .ed-page-title,
html:lang(zh) body.ed-site .ed-title,
html:lang(zh) body.ed-site .ed-statement-title,
html:lang(zh) body.ed-site .ed-reference-title,
html:lang(zh) body.ed-site .ed-news-hero h1,
html:lang(zh) body.ed-site .ed-learning-hero h1,
html:lang(zh) body.ed-site .ed-research-coda h2,
html:lang(zh) body.ed-site .ed-policy-manifesto h2,
html:lang(zh) body.ed-site .ed-policy-visual h2,
html:lang(zh) body.ed-site .ed-network-copy h2,
html:lang(zh) body.ed-site .ed-black-band-copy h2,
html:lang(zh) body.ed-site .ed-inline-feature h2,
html:lang(zh) body.ed-site .ed-product-block h2,
html:lang(zh) body.ed-site .ed-title.ed-artifact {
  font-family: var(--font-serif);
  font-weight: 600;
  line-height: 1.22;
  letter-spacing: .015em;
}
html:lang(zh) body.ed-site .ed-display { line-height: 1.18; }
html:lang(zh) body.ed-site .ed-serif,
html:lang(zh) body.ed-site .ed-copy-serif {
  font-family: var(--font-serif);
  font-weight: 500;
  line-height: 1.85;
  letter-spacing: .01em;
}
html:lang(zh) body.ed-site .ed-copy { line-height: 1.85; }
html:lang(zh) body.ed-site .ed-kicker { letter-spacing: .06em; }
html:lang(zh) body.ed-site .ed-stats-strip b { font-family: var(--font-serif); }
html:lang(zh) body.ed-site .ed-ledger-row > strong { font-family: var(--font-serif); }
html:lang(zh) body.ed-site .ed-essay-row .ed-essay-title { font-family: var(--font-serif); }

/* ── Z18. Responsive ──────────────────────────────────────────────────── */
@media (min-width: 1460px) {
  body.ed-site .ed-shell { width: min(1320px, calc(100% - 128px)); }
}

@media (max-width: 1160px) {
  body.ed-site .ed-product-block { grid-template-columns: minmax(150px, 180px) minmax(0, 1fr) minmax(220px, .8fr); gap: clamp(20px, 3vw, 40px); }
}

@media (max-width: 980px) {
  body.ed-site .ed-shell { width: calc(100% - 48px); }
  body.ed-site .ed-home-hero .ed-hero-grid,
  body.ed-site .ed-page-hero-grid,
  body.ed-site .ed-reference-hero-grid { grid-template-columns: 1fr; row-gap: 20px; align-items: start; }
  body.ed-site .ed-home-hero .ed-hero-lead { grid-column: 1; grid-row: auto; }
  body.ed-site .ed-home-hero .ed-hero-sub { grid-column: 1; grid-row: auto; max-width: 36ch; }
  body.ed-site .ed-home-hero .ed-hero-actions { grid-column: 1; grid-row: auto; margin-top: 4px; }
  body.ed-site .ed-page-hero-grid .ed-copy-serif { grid-column: 1; max-width: 36ch; }
  body.ed-site .ed-product-block { grid-template-columns: minmax(130px, 160px) minmax(0, 1fr); row-gap: 14px; }
  body.ed-site .ed-product-block > p { grid-column: 2; }
  body.ed-site .ed-subject-grid,
  body.ed-site .ed-home-statement { grid-template-columns: 1fr; gap: 28px; }
  body.ed-site .ed-black-band-inner { grid-template-columns: 1fr; }
  body.ed-site .ed-black-band-media { min-height: 300px; }
  body.ed-site .ed-black-band-media img { aspect-ratio: 16 / 9; }
  body.ed-site .ed-inline-feature { grid-template-columns: 1fr; }
  body.ed-site .ed-inline-feature > img { aspect-ratio: 16 / 10; max-height: 460px; }
  body.ed-site .ed-ledger-row > span:last-child { text-align: left; }
  body.ed-site .ed-home-stage img { aspect-ratio: 16 / 10; }
}

@media (max-width: 820px) {
  body.ed-site .ed-header-inner { min-height: 58px; }
  body.ed-site .ed-section { padding: 56px 0; }
  body.ed-site .ed-section-tight { padding: 44px 0; }
  body.ed-site .ed-section-line + .ed-section-line { padding-top: 56px; }
  body.ed-site .ed-black-band-copy { padding: 28px 24px; }
  body.ed-site .ed-black-band-copy h2 { font-size: clamp(26px, 6.6vw, 34px); }
  body.ed-site .ed-inline-feature { padding: 24px 22px; }
  body.ed-site .ed-inline-feature h2 { font-size: clamp(25px, 6.2vw, 32px); }
  body.ed-site .ed-stats-strip { grid-template-columns: 1fr 1fr; }
  body.ed-site .ed-stats-strip > div:nth-child(2n) { border-right: 0; }
  body.ed-site .ed-stats-strip > div:nth-child(-n+2) { border-bottom: 1px solid var(--an-line); }
  body.ed-site .ed-path-timeline { grid-template-columns: 1fr 1fr; row-gap: 28px; }
  body.ed-site .ed-path-timeline::before { display: none; }
  body.ed-site .ed-footer-top { grid-template-columns: 1fr 1fr; gap: 30px 24px; padding-bottom: 8px; }
  body.ed-site .ed-footer-brand { grid-column: 1 / -1; }
}

@media (max-width: 620px) {
  body.ed-site .ed-shell { width: calc(100% - 40px); }
  body.ed-site .ed-header .ed-shell { width: calc(100% - 40px); }
  body.ed-site .ed-home-hero { padding: 48px 0 40px; }
  body.ed-site .ed-home-hero .ed-hero-flag { margin-bottom: 18px; }
  body.ed-site .ed-display { font-size: clamp(37px, 10.4vw, 46px); line-height: 1.05; }
  body.ed-site .ed-page-title { font-size: clamp(34px, 9.6vw, 42px); }
  body.ed-site .ed-title { font-size: clamp(26px, 7.2vw, 32px); }
  body.ed-site .ed-statement-title { font-size: clamp(28px, 7.6vw, 34px); }
  body.ed-site .ed-copy { font-size: 15.5px; line-height: 1.7; }
  body.ed-site .ed-copy-serif { font-size: 18px; line-height: 1.55; }
  body.ed-site .ed-hero-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; width: 100%; }
  body.ed-site .ed-hero-actions .ed-button { justify-content: center; }
  body.ed-site .ed-home-stage { margin-top: 40px; border-radius: 16px; --ed-stage-inset: 30px; }
  body.ed-site .ed-home-stage img { aspect-ratio: 4 / 3.4; }
  body.ed-site .ed-home-stage .ed-stage-caption { color: rgba(255, 255, 255, .82); bottom: clamp(30px, 6vw, 40px); font-size: 12px; left: clamp(18px, 5vw, 30px); }
  body.ed-site .ed-home-stage::after { background: linear-gradient(180deg, transparent 68%, rgba(23, 23, 22, .32) 100%), radial-gradient(120% 90% at 50% 0%, rgba(255, 255, 255, .07), transparent 58%); }
  body.ed-site .ed-page-hero { padding: 52px 0 36px; }
  body.ed-site .ed-section { padding: 52px 0; }
  body.ed-site .ed-section-tight { padding: 40px 0; }
  body.ed-site .ed-product-block { grid-template-columns: 1fr; gap: 12px; padding: 24px 0; }
  body.ed-site .ed-product-block > p { grid-column: 1; }
  body.ed-site .ed-product-block h2 { max-width: none; }
  body.ed-site .ed-stats-strip { grid-template-columns: 1fr; }
  body.ed-site .ed-stats-strip > div { border-right: 0; border-bottom: 1px solid var(--an-line); padding: 16px 18px; }
  body.ed-site .ed-stats-strip > div:last-child { border-bottom: 0; }
  body.ed-site .ed-path-timeline { grid-template-columns: 1fr; }
  body.ed-site .ed-essay-row { grid-template-columns: 1fr; gap: 5px; padding: 18px 2px; }
  body.ed-site .ed-essay-row .ed-essay-tag { justify-self: start; }
  body.ed-site .ed-ledger-row { grid-template-columns: 34px minmax(0, 1fr); row-gap: 3px; }
  body.ed-site .ed-ledger-row > span:last-child { grid-column: 2; }
  body.ed-site .ed-black-band,
  body.ed-site .ed-inline-feature,
  body.ed-site .ed-footer-frame { border-radius: 16px; }
  body.ed-site .ed-black-band-media { min-height: 220px; }
  body.ed-site .ed-footer-frame { padding: 32px 22px 26px; }
  body.ed-site .ed-footer-bottom { flex-direction: column; align-items: flex-start; gap: 8px; }
  html:lang(zh) body.ed-site .ed-display { line-height: 1.24; }
}

@media (max-width: 390px) {
  body.ed-site .ed-shell,
  body.ed-site .ed-header .ed-shell { width: calc(100% - 32px); }
  body.ed-site .ed-hero-actions { grid-template-columns: 1fr; }
}

/* ── Z22. Mobile polish (homepage focus) ─────────────────────────────────
   The earlier Z18 block handled broad column stacks; this block fixes
   the specific regressions that show up at iPhone widths: the hamburger
   toggle never gets a grid slot, the hero "research stage" stays dark
   with white overlay text, and a handful of pill decorations crowd the
   viewport. Stack at the end so it always wins over earlier body.ed-site
   rules. */
@media (max-width: 820px) {
  /* Header: switch to flex so the hamburger is guaranteed a slot,
     hide the inline nav (it lives inside the dropdown), hide the
     language globe (the footer carries the same switcher), keep the
     primary CTA visible. */
  body.ed-site .ed-header-inner {
    display: flex;
    align-items: center;
    gap: 10px;
    min-height: 56px;
  }
  body.ed-site .ed-nav-links { display: none; }
  body.ed-site .ed-header-actions {
    margin-left: auto;
    gap: 8px;
  }
  body.ed-site .ed-header-actions .ed-lang { display: none; }
  body.ed-site .ed-header-actions .ed-button {
    min-height: 36px;
    padding: 8px 14px;
    font-size: 13px;
  }
  body.ed-site .ed-menu-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    flex: 0 0 40px;
    color: var(--an-ink);
    background: transparent;
    border: 1px solid var(--an-line);
    border-radius: 999px;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
    transition: background .15s ease, border-color .15s ease;
  }
  body.ed-site .ed-menu-toggle:hover { background: rgba(0, 0, 0, .04); border-color: rgba(0, 0, 0, .25); }
  body.ed-site .ed-menu-icon { width: 18px; height: 12px; }
  body.ed-site .ed-menu-icon span { background: currentColor; height: 1.5px; }
  /* Reveal the nav as a dropdown sheet when the hamburger is open. */
  body.ed-site .ed-header-inner.is-open .ed-nav-links {
    display: flex;
    position: absolute;
    top: calc(100% + 6px);
    left: 12px;
    right: 12px;
    z-index: 25;
    flex-direction: column;
    gap: 2px;
    padding: 8px;
    background: var(--an-paper);
    border: 1px solid var(--an-line);
    border-radius: 14px;
    box-shadow: 0 14px 36px rgba(20, 20, 19, .1);
    min-height: 0;
    max-height: calc(100dvh - 120px);
    overflow-y: auto;
  }
  body.ed-site .ed-header-inner.is-open .ed-nav-links a {
    width: 100%;
    padding: 12px 14px;
    border-radius: 10px;
    font-size: 15px;
    font-weight: 500;
  }
  body.ed-site .ed-header-inner.is-open .ed-nav-links a:hover,
  body.ed-site .ed-header-inner.is-open .ed-nav-links a[aria-current="page"] {
    background: rgba(0, 0, 0, .04);
    color: var(--an-ink);
  }

  /* Hero stage: drop the dark band, drop the gradient overlays, hide
     the floating stage-index pills, and let the network-copy inherit
     ink colour so it reads on the warm paper background. */
  body.ed-site .ed-home-stage {
    background: transparent;
    box-shadow: none;
    border-radius: 16px;
    overflow: visible;
  }
  body.ed-site .ed-home-stage::before,
  body.ed-site .ed-home-stage::after { display: none; }
  body.ed-site .ed-home-stage img {
    width: 100%;
    aspect-ratio: 4 / 3;
    border-radius: 16px;
    box-shadow: 0 0 0 1px rgba(25, 25, 25, .08);
  }
  body.ed-site .ed-stage-index { display: none; }
  body.ed-site .ed-stage-caption {
    position: static;
    display: block;
    margin-top: 12px;
    color: var(--an-ink-muted);
    font-size: 10.5px;
    letter-spacing: .08em;
    text-transform: uppercase;
  }
  body.ed-site .ed-network-copy {
    position: static;
    display: block;
    padding: 22px 0 4px;
    color: var(--an-ink);
    text-align: left;
    pointer-events: auto;
  }
  body.ed-site .ed-home-stage .ed-network-copy h2 {
    color: var(--an-ink);
    font-family: var(--an-serif);
    font-size: clamp(24px, 7vw, 32px);
    font-weight: 500;
    line-height: 1.14;
    letter-spacing: -.02em;
  }
  body.ed-site .ed-home-stage .ed-network-copy p {
    max-width: none;
    margin-top: 10px;
    color: var(--an-ink-soft);
    font-family: var(--an-serif);
    font-size: 15.5px;
    line-height: 1.55;
  }

  /* Hero: pill flag shouldn't show its 20px clay dash on narrow
     screens (it sits flush against the headline and reads as a
     typo). Drop it; keep the label. */
  body.ed-site .ed-home-hero .ed-hero-flag::before { display: none; }
  body.ed-site .ed-home-hero .ed-hero-flag { padding-left: 0; }

  /* Marquee band: tighter padding on narrow phones so the row of
     logos hugs the viewport edge instead of floating in a wide slab. */
  body.ed-site .ed-home-hero + .ed-marquee {
    margin-top: clamp(28px, 7vw, 48px);
    padding: clamp(18px, 5vw, 28px) 0;
  }
  body.ed-site .ed-marquee-title {
    padding: 0 clamp(16px, 5vw, 24px);
    margin-bottom: 14px;
  }
}

@media (max-width: 620px) {
  /* Chat demo: keep the head label and bubbles comfortable without
     letting the longest tutor line stretch the card beyond the
     viewport. */
  body.ed-site .ed-chat-demo { padding: 16px; border-radius: 14px; }
  body.ed-site .ed-chat-bubble { max-width: 92%; font-size: 14.5px; line-height: 1.55; }
  body.ed-site .ed-chat-head { font-size: 10.5px; letter-spacing: .06em; }

  /* Stats strip: tighten inner padding so each card stays a tidy
     rectangle rather than a long ribbon. */
  body.ed-site .ed-stats-strip > div { padding: 14px 16px; }
  body.ed-site .ed-stats-strip p { font-size: 10.5px; line-height: 1.45; }
  body.ed-site .ed-stats-strip b { font-size: 28px; }

  /* Footer: stack the meta row and tidy up column spacing. */
  body.ed-site .ed-footer-frame { padding: 28px 20px 24px; border-radius: 14px; }
  body.ed-site .ed-footer-top { gap: 26px 18px; }
  body.ed-site .ed-footer-column h2 { font-size: 10.5px; }
  body.ed-site .ed-footer-column a { font-size: 13.5px; }
  body.ed-site .ed-footer-bottom { font-size: 10px; gap: 6px; }

  /* Hero copy column: keep the sub-line from running edge to edge
     on phones by giving it a comfortable max-width. */
  body.ed-site .ed-home-hero .ed-hero-sub { max-width: none; }
}

/* ── Z19. Motion safety ───────────────────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
  body.ed-site .ed-home-stage,
  body.ed-site .ed-button,
  body.ed-site .ed-button-quiet { transition: none !important; }
}

/* ── Z20. Hero corrections (post-audit) ─────────────────────────────────
   The home hero display must be the editorial serif (an earlier layer
   pins Inter 700 with higher specificity), the right column stacks
   sub + actions against the headline baseline, and the flat paper of
   the direction board means no glow seam behind the hero. */
body.ed-site .ed-home-hero .ed-hero-lead .ed-display {
  font-family: var(--an-serif);
  font-weight: 500;
  letter-spacing: -.024em;
  line-height: 1.02;
}
html:lang(zh) body.ed-site .ed-home-hero .ed-hero-lead .ed-display {
  font-family: var(--font-serif);
  font-weight: 600;
  line-height: 1.2;
  letter-spacing: .015em;
}
body.ed-site .ed-home-hero .ed-hero-grid {
  grid-template-rows: minmax(0, 1fr) auto;
}
body.ed-site .ed-home-hero::before,
body.ed-site .ed-home-hero::after { content: none; display: none; }
body.ed-site .ed-home-hero .ed-hero-sub {
  font-size: clamp(18px, 1.45vw, 21px);
  line-height: 1.55;
}
/* ── Z21. Pricing cards ─────────────────────────────────────────────────
   The featured plan is the single dark panel on the shelf (an earlier
   layer flattened every card background, which left its paper text
   invisible). Restore the ink panel and give the row an even rhythm. */
body.ed-site .ed-price-card {
  border: 1px solid var(--an-line);
  border-radius: 16px;
  background: var(--an-paper-soft);
  box-shadow: none;
}
body.ed-site .ed-price-card.is-featured {
  color: var(--an-paper-text);
  border-color: var(--an-black);
  background: var(--an-black);
  box-shadow: none;
}
body.ed-site .ed-price-card.is-featured p,
body.ed-site .ed-price-card.is-featured ul { color: rgba(245, 243, 236, .7); }
body.ed-site .ed-price-card.is-featured h2 { color: var(--an-paper-text); }
body.ed-site .ed-price-card.is-featured .ed-price { color: var(--an-paper-text); }
body.ed-site .ed-price-card.is-featured .ed-kicker { color: rgba(245, 243, 236, .52); }
body.ed-site .ed-price-card.is-featured .ed-kicker::before { background: var(--an-clay-bright); }
body.ed-site .ed-price-card h2 {
  font-family: var(--an-serif);
  font-size: 30px;
  font-weight: 500;
  letter-spacing: -.018em;
}
body.ed-site .ed-price-card .ed-price { font-family: var(--an-serif); letter-spacing: -.02em; }
body.ed-site .ed-price-card ul { gap: 9px; font-size: 13.5px; line-height: 1.55; }
body.ed-site .ed-pricing-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (max-width: 1160px) {
  body.ed-site .ed-pricing-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 620px) {
  body.ed-site .ed-pricing-grid { grid-template-columns: 1fr; }
  body.ed-site .ed-price-card { min-height: 0; }
}
/* ── Z22. Article reading corrections (user pass) ───────────────────────
   1. No decorative left rules: quotes and callouts read as plain
      editorial type (Anthropic-style), no clay border-left.
   2. No table of contents inside research reports.
   3. Code never falls through to a CJK serif (SimSun/Songti): the mono
      stack carries an explicit CJK sans fallback before the generic. */
body.ed-site main blockquote,
body.ed-site .ed-article blockquote {
  border-left: 0;
  padding-left: 0;
  padding-right: 0;
}
body.ed-site .ed-article > p.lede,
body.ed-site .ed-article-summary {
  border-left: 0;
  border-radius: 14px;
  padding: 22px 26px;
}
body.ed-site .ed-coming-next {
  border-left: 1px solid var(--an-line);
  border-radius: 14px;
}
body.ed-site .ed-article-toc { display: none !important; }

body.ed-site code,
body.ed-site pre,
body.ed-site kbd,
body.ed-site samp {
  font-family: var(--font-mono);
  font-feature-settings: "kern" 0;
  letter-spacing: 0;
}
body.ed-site :not(pre) > code {
  padding: 2px 6px;
  border: 1px solid var(--an-line);
  border-radius: 6px;
  background: var(--an-paper-soft);
  font-size: .88em;
  color: var(--an-ink);
}
body.ed-site pre {
  padding: 18px 20px;
  border: 1px solid var(--an-line);
  border-radius: 12px;
  background: var(--an-paper-soft);
  overflow-x: auto;
  line-height: 1.6;
  font-size: 13.5px;
}
body.ed-site pre code { border: 0; background: none; padding: 0; font-size: inherit; }
:root {
  --an-mono: var(--font-mono);
  --ed-mono: var(--an-mono);
}
/* ── Z23. Newsroom split ────────────────────────────────────────────────
   The feed is the primary column; the sticky artwork supports it from
   the left. Mirrors the editorial hierarchy of the reference site. */
body.ed-site .ed-news-split {
  grid-template-columns: minmax(300px, .68fr) minmax(0, 1.32fr);
  column-gap: clamp(40px, 6vw, 96px);
}
body.ed-site .ed-news-split figure { height: clamp(340px, 34vw, 520px); }
@media (max-width: 980px) {
  body.ed-site .ed-news-split { grid-template-columns: 1fr; }
  body.ed-site .ed-news-split figure { position: static; height: auto; min-height: 260px; }
}
/* ── Z24. Mobile login button: never wrap ─────────────────────────────── */
body .ed-header-login { white-space: nowrap; flex: 0 0 auto; }

/* ==========================================================================
   RR. Research report template — Anthropic-style long-form articles.
   Centered hero, full-width media card, rich figures, takeaways, tables,
   author cards, related-content grid. Additive: wins the cascade.
   ========================================================================== */

/* ── RR1. Centered report hero ─────────────────────────────────────────── */
body.ed-site .ed-report-hero {
  padding: clamp(64px, 8.5vw, 116px) 0 0;
  text-align: center;
}
body.ed-site .ed-report-hero .ed-kicker { justify-content: center; }
body.ed-site .ed-report-title {
  max-width: 24ch;
  margin: 20px auto 0;
  font-family: var(--font-serif);
  font-weight: 500;
  font-size: clamp(38px, 4.8vw, 68px);
  line-height: 1.07;
  letter-spacing: -.016em;
  text-wrap: balance;
}
body.ed-site .ed-report-standfirst {
  max-width: 54ch;
  margin: 24px auto 0;
  font-family: var(--font-serif);
  font-size: clamp(18px, 1.5vw, 22px);
  line-height: 1.52;
  letter-spacing: -.008em;
  color: var(--site-ink-soft);
}
body.ed-site .ed-report-byline {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: 8px 22px;
  margin: 26px 0 0;
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: .07em;
  text-transform: uppercase;
  color: var(--site-ink-muted);
}
body.ed-site .ed-report-byline strong { color: var(--site-ink); font-weight: 600; }
body.ed-site .ed-report-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 12px;
  margin-top: 28px;
}
body.ed-site .ed-button-dark {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 13px 26px;
  border-radius: 12px;
  background: var(--site-ink);
  border: 1px solid var(--site-ink);
  color: #faf9f5;
  font-family: var(--font-sans);
  font-size: 15.5px;
  font-weight: 600;
  letter-spacing: -.01em;
  text-decoration: none;
  transition: background-color .18s ease, transform .18s var(--sv-ease);
}
body.ed-site .ed-button-dark:hover { background: #33302b; transform: translateY(-1px); }
body.ed-site .ed-button-dark svg { width: 15px; height: 15px; }

/* ── RR2. Full-width hero media card ───────────────────────────────────── */
body.ed-site .ed-report-hero-media { margin: clamp(44px, 6vw, 76px) auto 0; }
body.ed-site .ed-report-hero-card {
  position: relative;
  overflow: hidden;
  border-radius: 24px;
  border: 1px solid rgba(23, 23, 22, .12);
  background: var(--report-tint, #7d8b6f);
  aspect-ratio: 16 / 8;
  display: grid;
  place-items: center;
  padding: 0;
}
body.ed-site .ed-report-hero-card > img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
body.ed-site .ed-report-hero-card.is-illustration > svg,
body.ed-site .ed-report-hero-card.is-illustration > img {
  width: auto;
  height: 74%;
  max-width: 72%;
  object-fit: contain;
}
body.ed-site .ed-report-hero-caption {
  margin: 14px auto 0;
  max-width: 72ch;
  text-align: center;
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--site-ink-muted);
}

/* ── RR3. Inline links inside article body ─────────────────────────────── */
body.ed-site .ed-article p a,
body.ed-site .ed-article li a {
  color: inherit;
  text-decoration: underline;
  text-decoration-color: rgba(154, 90, 59, .45);
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
  transition: color .15s ease, text-decoration-color .15s ease;
}
body.ed-site .ed-article p a:hover,
body.ed-site .ed-article li a:hover {
  color: var(--sv-clay, #9a5a3b);
  text-decoration-color: currentColor;
}

/* ── RR4. Key takeaways box ────────────────────────────────────────────── */
body.ed-site .ed-key-takeaways {
  margin: 2.8em 0;
  padding: 28px 32px;
  border: 1px solid var(--site-line);
  border-radius: 16px;
  background: var(--site-paper-soft);
}
body.ed-site .ed-key-takeaways h2 {
  margin: 0 0 16px;
  font-family: var(--font-mono);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--site-ink-muted);
}
body.ed-site .ed-key-takeaways ul {
  margin: 0;
  padding: 0;
  list-style: none;
}
body.ed-site .ed-key-takeaways li {
  position: relative;
  margin: 0 0 12px;
  padding-left: 22px;
  font-family: var(--font-sans);
  font-size: 15.5px;
  line-height: 1.6;
  letter-spacing: -.005em;
  color: var(--site-ink-soft);
}
body.ed-site .ed-key-takeaways li:last-child { margin-bottom: 0; }
body.ed-site .ed-key-takeaways li::before {
  content: "";
  position: absolute;
  left: 2px;
  top: .58em;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--sv-clay, #9a5a3b);
}
body.ed-site .ed-key-takeaways li strong { color: var(--site-ink); font-weight: 600; }

/* ── RR5. Pull quote ───────────────────────────────────────────────────── */
body.ed-site .ed-pull-quote {
  margin: 3em auto;
  max-width: 30ch;
  text-align: center;
  font-family: var(--font-serif);
  font-size: clamp(24px, 2.4vw, 33px);
  line-height: 1.32;
  letter-spacing: -.016em;
  color: var(--site-ink);
}
body.ed-site .ed-pull-quote::before {
  content: "";
  display: block;
  width: 44px;
  height: 2px;
  margin: 0 auto 24px;
  background: var(--sv-clay, #9a5a3b);
}
body.ed-site .ed-pull-quote cite {
  display: block;
  margin-top: 18px;
  font-family: var(--font-mono);
  font-style: normal;
  font-size: 11px;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--site-ink-muted);
}

/* ── RR6. Data table ───────────────────────────────────────────────────── */
body.ed-site .ed-table-wrap {
  margin: 2.4em 0;
  border: 1px solid var(--site-line);
  border-radius: 14px;
  background: var(--site-paper-soft);
  overflow-x: auto;
}
body.ed-site table.ed-data-table {
  width: 100%;
  min-width: 480px;
  border-collapse: collapse;
  font-family: var(--font-sans);
  font-size: 14.5px;
}
body.ed-site .ed-data-table th {
  padding: 13px 20px;
  text-align: left;
  border-bottom: 1px solid var(--site-line);
  background: var(--site-paper);
  font-family: var(--font-mono);
  font-size: 10.5px;
  font-weight: 500;
  letter-spacing: .09em;
  text-transform: uppercase;
  color: var(--site-ink-muted);
  white-space: nowrap;
}
body.ed-site .ed-data-table td {
  padding: 13px 20px;
  border-bottom: 1px solid var(--site-line);
  color: var(--site-ink-soft);
  line-height: 1.5;
}
body.ed-site .ed-data-table tr:last-child td { border-bottom: 0; }
body.ed-site .ed-data-table td.num {
  font-variant-numeric: tabular-nums;
  text-align: right;
  font-weight: 600;
  color: var(--site-ink);
  white-space: nowrap;
}
body.ed-site .ed-data-table td.hl { color: var(--sv-clay, #9a5a3b); font-weight: 600; }

/* ── RR7. Chart frame (line charts, distributions) ─────────────────────── */
body.ed-site .ed-chart-frame {
  margin: 2.6em 0;
  padding: clamp(20px, 3vw, 34px);
  border: 1px solid var(--site-line);
  border-radius: 18px;
  background: var(--site-paper-soft);
}
body.ed-site .ed-chart-title {
  margin: 0 0 18px;
  text-align: center;
  font-family: var(--font-sans);
  font-size: 15.5px;
  font-weight: 600;
  letter-spacing: -.01em;
  color: var(--site-ink);
}
body.ed-site .ed-chart-frame svg { display: block; width: 100%; height: auto; }
body.ed-site .ed-chart-legend {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px 22px;
  margin-top: 16px;
  font-family: var(--font-sans);
  font-size: 12.5px;
  color: var(--site-ink-soft);
}
body.ed-site .ed-chart-legend span {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
body.ed-site .ed-chart-legend i {
  display: inline-block;
  width: 18px;
  height: 0;
  border-top: 3px solid var(--sw, var(--site-ink));
  border-radius: 2px;
}
body.ed-site .ed-chart-legend i.is-dotted { border-top-style: dotted; }
body.ed-site .ed-chart-legend i.is-dashed { border-top-style: dashed; }
body.ed-site .ed-chart-axis {
  stroke: rgba(23, 23, 22, .18);
  stroke-width: 1;
}
body.ed-site .ed-chart-grid {
  stroke: rgba(23, 23, 22, .07);
  stroke-width: 1;
}
body.ed-site .ed-chart-tick text {
  fill: var(--site-ink-muted);
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: .04em;
}
body.ed-site .ed-chart-label text {
  fill: var(--site-ink-soft);
  font-family: var(--font-mono);
  font-size: 10.5px;
  letter-spacing: .06em;
  text-transform: uppercase;
}
body.ed-site .ed-chart-anno {
  font-family: var(--font-mono);
  font-size: 11px;
  fill: var(--site-ink-muted);
}

/* ── RR8. Figure with number ───────────────────────────────────────────── */
body.ed-site .ed-figure { margin: 2.6em 0; }
body.ed-site .ed-figure .ed-figure-caption { margin-top: 14px; }
body.ed-site .ed-figure .ed-fig-no {
  color: var(--sv-clay, #9a5a3b);
  font-weight: 600;
}

/* ── RR9. Author cards ─────────────────────────────────────────────────── */
body.ed-site .ed-author-cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
  gap: 14px;
  margin: 2.6em 0;
}
body.ed-site .ed-author-card {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 16px 18px;
  border: 1px solid var(--site-line);
  border-radius: 14px;
  background: var(--site-paper-soft);
}
body.ed-site .ed-author-card .ed-author-avatar {
  flex: 0 0 auto;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: var(--sv-clay, #9a5a3b);
  color: #faf9f5;
  font-family: var(--font-mono);
  font-size: 13px;
  letter-spacing: .04em;
}
body.ed-site .ed-author-card .ed-author-meta {
  display: grid;
  gap: 2px;
  font-family: var(--font-sans);
}
body.ed-site .ed-author-card .ed-author-meta strong {
  font-size: 15px;
  font-weight: 600;
  color: var(--site-ink);
}
body.ed-site .ed-author-card .ed-author-meta span {
  font-size: 12.5px;
  color: var(--site-ink-muted);
}

/* ── RR10. Related content grid ────────────────────────────────────────── */
body.ed-site .ed-related-section {
  margin: 3.4em 0 0;
  padding-top: 2.2em;
  border-top: 1px solid var(--site-line);
}
body.ed-site .ed-related-section > h2 {
  margin: 0 0 24px;
  font-family: var(--font-serif);
  font-size: clamp(24px, 2.4vw, 32px);
  font-weight: 500;
  letter-spacing: -.016em;
}
body.ed-site .ed-related-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(22px, 3vw, 44px);
}
body.ed-site .ed-related-card {
  display: grid;
  align-content: start;
  gap: 10px;
  color: inherit;
  text-decoration: none;
}
body.ed-site .ed-related-card .ed-row-meta {
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: .07em;
  text-transform: uppercase;
  color: var(--site-ink-muted);
}
body.ed-site .ed-related-card h3 {
  margin: 0;
  font-family: var(--font-serif);
  font-size: 20.5px;
  font-weight: 500;
  line-height: 1.28;
  letter-spacing: -.012em;
  color: var(--site-ink);
}
body.ed-site .ed-related-card p {
  margin: 0;
  font-family: var(--font-sans);
  font-size: 14.5px;
  line-height: 1.6;
  color: var(--site-ink-muted);
}
body.ed-site .ed-related-card .ed-link {
  margin-top: 4px;
  font-family: var(--font-sans);
  font-size: 14px;
  font-weight: 600;
  color: var(--site-ink);
}
body.ed-site .ed-related-card:hover h3 { text-decoration: underline; text-underline-offset: 3px; text-decoration-thickness: 1px; }

/* ── RR11. Report end matter ───────────────────────────────────────────── */
body.ed-site .ed-report-end {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin: 3.2em 0 0;
  padding-top: 22px;
  border-top: 1px solid var(--site-line);
}
body.ed-site .ed-report-end .ed-endmark {
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--site-ink-muted);
}

@media (max-width: 900px) {
  body.ed-site .ed-related-grid { grid-template-columns: 1fr; gap: 26px; }
  body.ed-site .ed-report-hero-card { border-radius: 18px; aspect-ratio: 4 / 3; }
  body.ed-site .ed-key-takeaways { padding: 22px 20px; }
}

/* ═══ RESEARCH — OpenAI-style simplification (scoped to .ed-article) ═══
   Intent: flatter, neutral, clean sans-serif, generous whitespace.
   Reversible: delete this whole block to restore the editorial treatment. */
body.ed-site .ed-article-hero {
  padding: clamp(64px, 8vw, 104px) 0 clamp(30px, 4vw, 52px);
  border-bottom: 1px solid var(--ed-line);
}
body.ed-site .ed-article-hero-grid {
  grid-template-columns: minmax(0, 1fr);
  gap: 20px;
  max-width: 760px;
  margin: 0 auto;
}
body.ed-site .ed-article-hero-media { display: none; }
body.ed-site .ed-article-hero .ed-page-title {
  font-family: var(--ed-sans);
  font-weight: 700;
  letter-spacing: -.03em;
  line-height: 1.05;
  font-size: clamp(34px, 5vw, 52px);
  color: var(--ed-ink);
}
body.ed-site .ed-article-hero .ed-copy-serif {
  font-family: var(--ed-sans);
  font-weight: 400;
  color: var(--ed-ink-soft);
  max-width: 56ch;
}
body.ed-site .ed-article-byline {
  font-family: var(--ed-sans);
  text-transform: none;
  letter-spacing: 0;
  font-size: 13px;
  color: var(--ed-ink-muted);
  margin-top: 18px;
}
body.ed-site .ed-article-byline strong { font-weight: 600; color: var(--ed-ink); }

/* body copy: clean sans, neutral */
body.ed-site .ed-article { width: min(720px, calc(100% - 40px)); padding-bottom: clamp(56px, 8vw, 112px); }
body.ed-site .ed-article p {
  font-family: var(--ed-sans);
  color: var(--ed-ink);
  font-size: clamp(17px, .4vw + 16px, 19px);
  line-height: 1.74;
  letter-spacing: 0;
  margin: 0 0 1.55em;
}
body.ed-site .ed-article ul,
body.ed-site .ed-article ol { font-family: var(--ed-sans); font-size: 17px; line-height: 1.7; color: var(--ed-ink); }
body.ed-site .ed-article li { margin-bottom: .5em; }

/* lede: plain intro, drop the clay box */
body.ed-site .ed-article p.lede {
  border: 0; border-radius: 0; background: none; padding: 0;
  font-family: var(--ed-sans) !important;
  font-size: clamp(19px, .6vw + 17px, 22px);
  line-height: 1.5; color: var(--ed-ink);
  margin: 0 0 2.4em;
}

/* headings: simpler, neutral */
body.ed-site .ed-article h2 {
  font-family: var(--ed-sans); font-weight: 650; letter-spacing: -.02em;
  font-size: clamp(22px, 1.6vw, 28px); margin: 2.6em 0 .9em; color: var(--ed-ink);
}
body.ed-site .ed-article h3 {
  font-family: var(--ed-sans); font-weight: 600; letter-spacing: -.01em;
  font-size: clamp(18px, 1.2vw, 21px); margin: 2.2em 0 .8em; color: var(--ed-ink);
}

/* blockquote: thin neutral rule, no italic serif */
body.ed-site .ed-article blockquote {
  border-left: 2px solid var(--ed-ink); border-radius: 0;
  font-family: var(--ed-sans); font-style: normal;
  font-size: 19px; line-height: 1.55; color: var(--ed-ink);
  padding: 4px 0 4px 20px; margin: 1.9em 0;
}

/* method note: flatten */
body.ed-site .ed-article p.ed-method-note {
  border: 0; border-top: 1px solid var(--ed-line); border-bottom: 1px solid var(--ed-line);
  border-left: 0; border-radius: 0; background: none;
  padding: 16px 0; font-family: var(--ed-sans); font-size: 13px; line-height: 1.7;
}
body.ed-site .ed-article p.ed-method-note .ed-method-label { font-family: var(--ed-sans); }

/* key takeaways: simple list, no box */
body.ed-site .ed-key-takeaways { border: 0; background: none; padding: 0; margin: 0 0 2.6em; }
body.ed-site .ed-key-takeaways h2 {
  font-family: var(--ed-sans); font-weight: 600; text-transform: uppercase;
  letter-spacing: .08em; font-size: 13px; color: var(--ed-ink-muted); margin: 0 0 .9em;
}
body.ed-site .ed-key-takeaways ul { padding-left: 20px; }
body.ed-site .ed-key-takeaways li { font-family: var(--ed-sans); font-size: 16px; line-height: 1.6; color: var(--ed-ink); }

/* neutralise warm clay accents -> ink (monochrome, OpenAI-like) */
body.ed-site .ed-bar-fill { fill: var(--ed-ink) !important; }
body.ed-site .ed-result-track i { background: var(--ed-ink) !important; }
body.ed-site .ed-figure-caption,
body.ed-site .ed-fig-no { color: var(--ed-ink-muted); font-family: var(--ed-sans); }

/* timeline + data table: lighten */
body.ed-site .ed-timeline { background: none; border: 0; padding: 0; }
body.ed-site .ed-timeline-row { border-top: 1px solid var(--ed-line); padding: 16px 0; }
body.ed-site table.ed-data-table { border: 0; }
body.ed-site table.ed-data-table th,
body.ed-site table.ed-data-table td { border-bottom: 1px solid var(--ed-line); }
body.ed-site .ed-article-foot a { border-radius: 10px; }
/* ═══ END RESEARCH simplification ═══ */

/* ensure research headings read in ink (override later brand rule) */
body.ed-site .ed-article h2,
body.ed-site .ed-article h3 { color: var(--ed-ink) !important; }

/* ── Research cleanup pass 2 ──
   Remove the "方法说明" (Method note) box and its divider,
   and drop the 01-04 step numbers on the methodology timeline. */
body.ed-site .ed-article p.ed-method-note { display: none; }
body.ed-site .ed-article hr:has(+ p.ed-method-note) { display: none; }
body.ed-site .ed-timeline-step { display: none !important; }
body.ed-site .ed-timeline-row { grid-template-columns: 1fr; }
/* ── END Research cleanup pass 2 ── */
