/* Semantic, code-owned design tokens. Legacy crawl values stay in tokens.css. */
:root {
 --font-body: "Ubuntu", "Noto Sans CJK SC", "PingFang SC", "Microsoft YaHei", sans-serif;
 --font-heading: "Montserrat", "Noto Sans CJK SC", "PingFang SC", "Microsoft YaHei", sans-serif;
 --ink: #132a3d; --ink-muted: #5a6f80; --brand: #123A5A; --accent: #E4483B;
 --accent-hover: #c93a2e; --accent-text: #b9362b; --sky: #2E8FC4;
 --sky-soft: #e5f2fa; --footer-muted: #b7cad9;
 --paper: #ffffff; --panel: #EEF4F8; --surface: var(--panel); --line: #dde7ee;
 --text-sm: .875rem; --text-base: 1rem; --text-lg: 1.125rem;
 --heading-1: clamp(2rem, 1.5rem + 2vw, 3.5rem);
 --heading-2: clamp(1.5rem, 1.2rem + 1vw, 2.25rem);
 --heading-3: clamp(1.125rem, 1rem + .5vw, 1.5rem);
 --leading-body: 1.65; --leading-heading: 1.25;
 --gap-1: .5rem; --gap-2: 1rem; --gap-3: 1.5rem; --gap-4: 2rem;
 --section-space: clamp(2.5rem, 6vw, 5rem); --page-gutter: clamp(1rem, 4vw, 3rem);
 --page-width: 76rem; --reading-width: 68ch; --radius-card: 1.125rem; --radius-pill: 1.875rem; --gap-card: 1.25rem;
 --shadow-card: 0 0.125rem 0.25rem rgb(18 58 90 / 4%), 0 1rem 2.125rem rgb(18 58 90 / 7%);
 --shadow-card-hover: 0 0.375rem 0.625rem rgb(18 58 90 / 6%), 0 1.375rem 2.75rem rgb(18 58 90 / 12%);
 --color-accent: var(--accent); --color-primary: var(--brand);
 --font-brandon-grotesque: var(--font-heading);
 --font-arial-helvetica-neue-helvetica-sans-serif: var(--font-body);
}

/* Bricolage is absent from the offline bundle; use packaged Montserrat 700.
   Chinese pages retain the existing local/system CJK stack in every component. */
html[lang="zh-CN"] { --font-body: var(--font-chinese); --font-heading: var(--font-chinese); }
