/* ================================================================
   羊驼考务 Design System · Colors + Type
   Extracted from v6.0-YangTuoDesignBase.html + YangTuoDesignSystem.impl.forWeb.md
   Themes: 4 light (110/100/90/80) + 2 dark (70/60)
   ================================================================ */

/* ---------- Fonts — 全部本地自托管，运行时零外部依赖（支持纯内网环境） ----------
   · Fira Code        · mono · VF · weight 300-700 · OFL（子集内部名 Fira Code YT）
   · Roboto            · display · VF · weight 100-900 · Apache-2.0
   · Plus Jakarta Sans · UI sans · VF · weight 300-700 · OFL（子集内部名 Plus Jakarta Sans YT）
   三款均为 latin+数字+常用符号**子集版**（2026-07-02 起，180KB→105KB）：保变量轴
   + 全部 layout features（含 Fira Code 连字）；OFL 两款按 RFN 条款改内部名，
   本 CSS 的 font-family 标签独立于内部名、全站零改动。
   全量原件 + 子集脚本 + 重生成步骤 → ../fonts-fullsrc/（suite 根，不随产品发布）；
   禁拿上游全量直接覆盖 fonts/。
-------------------------------------------------------------------------- */
@font-face {
  font-family: 'Fira Code';
  font-style: normal; font-weight: 300 700;
  src: url('fonts/FiraCode-VF.woff2') format('woff2');
  font-display: swap;
}
@font-face {
  font-family: 'Roboto';
  font-style: normal; font-weight: 100 900;
  src: url('fonts/Roboto-VF.woff2') format('woff2');
  font-display: swap;
}
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal; font-weight: 300 700;
  src: url('fonts/PlusJakartaSans-VF.woff2') format('woff2');
  font-display: swap;
}

/* ================================================================
   BRAND COLORS — from YangTuoDesignSystem.impl.forWeb.md §1
   ================================================================ */
:root {
  /* =========================================================
     主色（Primary）· 朱砂红 · v2 设计改版
     之前的主色是品牌蓝 (#4667AC)，v2 起降为"点缀色"（见 --brand 下）；
     页面"主按钮、主激活态、主链接、Hero 强调"全部走 --primary。
     ========================================================= */
  --primary:       #A63429;  /* 朱砂红主色 */
  --primary-dark:  #842B21;  /* hover / active / 亮底文字 */
  --primary-light: #F4DBD6;  /* 浅底填充 / tag / 禁用态 */
  --primary-text:  #842B21;  /* 正文 / 强调 / <code> 前景文字（默认亮档 = primary-dark；70/60 翻亮红保对比度） */

  /* --- 品牌蓝（Brand Blue）· 点缀色（v2 降级） ---
     用途：品牌 LOGO 源文件、次要信息点、数据线、info 徽章。
     禁止：主按钮、主链接、主激活下划线（改用 --primary）。 */
  --brand:            #4667AC;
  --brand-dark:       #354E83;
  --brand-light:      #DAE0ED;

  /* Alt brand aliases used in v6 HTML · legacy alias，勿新增消费（仅 --brutal-shadow 链引用） */
  --brand-blue:       #4f6fb5;
  --brand-blue-deep:  #3c5897;

  /* --- Gold / Amber scale (kraft-paper warm tones, accent) --- */
  --gold-deep:    #4A3B22;
  --gold-dark:    #7D6232;
  --gold-mid:     #B08E4A;
  --gold-warm:    #C2A15B;
  --gold-bright:  #D4B776;
  --gold-light:   #E2CA92;
  --gold-pale:    #F0E1B6;
  --gold-cream:   #F8EED4;

  /* legacy alias（与 gold-warm / gold-bright 同值）· 勿新增消费 */
  --amber:        #C2A15B;
  --amber-glow:   #D4B776;

  /* --- Semantic (functional) --- */
  --success:       #2A8C60;
  --success-dim:   #1F6A48;
  --warning:       #D4B240;
  --warning-dim:   #B8970A;
  --danger:        #c0392b;
  --danger-accent: #e67e22;
  --info:          var(--brand);

  /* --- 语义色作"文字"时的可读版 · -text 家族（2026-07-03 · 镜像 --primary-text 机制）---
     描边 / 填充 / 色条仍用 --success/--warning/--danger（装饰 3:1 已够）；
     需要阅读的文字（错误提示、状态词、徽章文字）一律走对应 -text。
     以下为亮档（110/100/90/80）默认值，70/60 档在下方主题块翻亮。 */
  --success-text:  #175A3C;  /* 4.9:1 on #D6C6AA */
  --warning-text:  #6E5806;  /* 4.1:1 on #D6C6AA */
  --danger-text:   #8E2A1F;  /* 5.0:1 on #D6C6AA */

  /* Neo-brutal accents (per YangTuoDesignSystem.impl.forWeb.md §5.2) */
  --brutal-yellow: #FFE156;
  --brutal-red:    #FF6B6B;
  --brutal-teal:   #4ECDC4;
  --brutal-gold:   #C4A661;

  /* =========================================================
     THEME: 100% — Vintage Kraft (default light)
     ========================================================= */
  --bg:           #D6C6AA;
  --surface:      rgba(235, 225, 206, 0.84);
  --text:         #332616;
  --text-dim:     #5c4b37;
  --text-muted:   #695540;   /* 2026-07-03 修复：原 :root 兜底遗留 v2 修订前旧值 #8a7b6a（仅 2.4:1），
                                与 [data-theme="100"] 对齐为 #695540（~4.2:1），防无 data-theme 宿主落回不合格值 */
  --glass-bg:     rgba(230, 218, 196, 0.5);
  --glass-border: rgba(160, 125, 60, 0.18);
  --glass-shine:  rgba(255, 245, 230, 0.2); /* legacy · 当前全站无消费，勿新增引用 */
  --island-bg:    #F9F9F9; /* Neumorphism island, see YangTuoDesignSystem.impl.forWeb.md §11.1 */

  /* =========================================================
     TYPOGRAPHY
     ========================================================= */
  /* Font families
     2026-07-03：display/sans 尾部显式并入中文栈（同 --font-zh 连名）——
     西文命中前排字体，CJK 逐字回落时不再依赖各系统 fontconfig 兜底
     （Windows/macOS 原本就对，此改主要收敛信创/低配 Linux 的中文落字确定性）。
     2026-07-06：中文栈补 Linux 发行版实际包名兜底 'Noto Sans CJK SC'（Debian/Ubuntu/UOS 的
     fonts-noto-cjk 家族名带 CJK）/ 'WenQuanYi Micro Hei'（老麒麟）→ 六连名，display/sans 尾部同批
     （与 Client Tokens.axaml、导航条 colors_and_type.css 副本同源）。 */
  --font-display: 'Roboto', ui-sans-serif, system-ui, 'PingFang SC', 'Microsoft YaHei', 'Source Han Sans SC', 'Noto Sans SC', 'Noto Sans CJK SC', 'WenQuanYi Micro Hei', sans-serif;
  --font-sans:    'Plus Jakarta Sans', ui-sans-serif, system-ui, -apple-system, 'PingFang SC', 'Microsoft YaHei', 'Source Han Sans SC', 'Noto Sans SC', 'Noto Sans CJK SC', 'WenQuanYi Micro Hei', sans-serif;
  --font-zh:      'PingFang SC', 'Microsoft YaHei', 'Source Han Sans SC', 'Noto Sans SC', 'Noto Sans CJK SC', 'WenQuanYi Micro Hei', sans-serif;
  --font-mono:    'Fira Code', ui-monospace, SFMono-Regular, Menlo, monospace;

  /* Type scale (fluid at display sizes)
     两轨分工（2026-07-03 注）：display-* 轨 = 营销面 / 分节大标题（语义类
     .h-hero / h2 已挂 display-xl / display-l）；fs-h1~h4 轨 = 普通文档层级，
     供页面手动选用（h3/h4 语义类挂 fs-h3/h4；裸 h1 有意不设默认、--fs-display-m
     无语义类挂载）。两轨并存是设计如此，新页面按场景选轨，勿混用。 */
  --fs-display-xl: clamp(44px, 8vw, 90px); /* Hero H1 */
  --fs-display-l:  clamp(30px, 4vw, 50px); /* Section title */
  --fs-display-m:  clamp(26px, 3vw, 42px); /* Subsection */
  --fs-h1: 36px;
  --fs-h2: 28px;
  --fs-h3: 22px;
  --fs-h4: 18px;
  --fs-body-lg: 17px;
  --fs-body:    15px;
  --fs-body-sm: 14px;
  --fs-caption: 13px;
  --fs-label:   12px;
  --fs-micro:   11px;

  /* Line-heights */
  --lh-tight: 1.1;
  --lh-snug:  1.25;
  --lh-base:  1.5;
  --lh-body:  1.75;

  /* Letter-spacing
     2026-07-03：display/hero 由固定 px 改 em——固定 px 挂在 clamp 流体字号上，
     移动端（44px）时 -3px 收成 -6.8% 过挤；em 按 clamp 上限锚定换算
     （-0.033em × 90px ≈ -3px / -0.03em × 50px = -1.5px），大屏视觉不变、小屏自动放松。
     --ls-label 挂固定 11px，保持 px。 */
  --ls-display: -0.03em;
  --ls-hero:    -0.033em;
  --ls-label:   3px;

  /* =========================================================
     SPACING / RADII / SHADOWS
     ========================================================= */
  --space-1:  4px;
  --space-2:  8px;
  --space-3:  12px;
  --space-4:  16px;
  --space-5:  20px;
  --space-6:  24px;
  --space-8:  32px;
  --space-10: 40px;
  --space-12: 48px;
  --space-16: 64px;
  --space-20: 80px;
  --space-24: 96px;  /* 2026-07-03：原 100px 破 4px 命名网格（24×4=96），对齐；全站无消费仅 Sample 展示 */

  --radius-sm:   6px;
  --radius-md:   12px;
  --radius-lg:   16px;
  --radius-xl:   20px;
  --radius-2xl:  24px;
  --radius-3xl:  28px;
  --radius-4xl:  32px;
  --radius-pill: 100px;

  /* Shadows — soft gold-warm (light themes) */
  --shadow-xs:  0 2px 8px rgba(180,145,30,0.06);
  --shadow-sm:  0 2px 12px rgba(180,145,30,0.08);
  --shadow-md:  0 4px 24px rgba(180,145,30,0.10);
  --shadow-lg:  0 8px 32px rgba(180,145,30,0.14);
  --shadow-xl:  0 16px 48px rgba(180,145,30,0.18);
  --shadow-primary: 0 8px 28px rgba(180,145,30,0.30); /* 金色大阴影：secondary 金按钮 / hero 表面。
                                                         注意：primary 朱砂红按钮的红光晕是 --glow-primary，勿混（名字系历史遗留） */

  /* Neumorphism dual shadows (light island bg #F9F9F9) */
  --neu-out: 8px 8px 16px #dfe3eb, -8px -8px 16px #ffffff;
  --neu-in:  inset 4px 4px 8px #dfe3eb, inset -4px -4px 8px #ffffff;

  /* Neo-brutalism hard drop */
  --brutal-shadow:       6px 6px 0 var(--brand-blue-deep);
  --brutal-shadow-hover: 9px 9px 0 var(--brand-blue-deep);
  --brutal-shadow-press: 2px 2px 0 var(--brand-blue-deep);

  /* Primary-red interaction tokens (focus rings, active glow) */
  --ring-primary: 0 0 0 3px rgba(166, 52, 41, 0.22);
  --ring-primary-subtle: 0 0 0 3px rgba(166, 52, 41, 0.12);
  --glow-primary: 0 8px 28px rgba(166, 52, 41, 0.30);
  --glow-primary-sm: 0 2px 8px rgba(166, 52, 41, 0.25);
  --glow-primary-line: 0 2px 8px rgba(166, 52, 41, 0.4);

  /* Overlay / panel surfaces */
  --backdrop-overlay: rgba(30, 22, 10, 0.45);
  --panel-glass-bg: rgba(245, 235, 215, 0.94);
  --dropdown-glass-bg: rgba(245, 235, 215, 0.92);

  /* Table interaction */
  --table-row-hover: rgba(218, 224, 237, 0.3);

  /* Subtle control surfaces (switcher, chips) */
  --control-subtle-bg: rgba(125, 98, 50, 0.08);
  --control-subtle-border: rgba(125, 98, 50, 0.12);
  --card-opaque-border: rgba(210, 180, 80, 0.2);

  /* Glass inset highlight */
  --glass-shine-inset: inset 0 1px 0 rgba(255,255,255,0.9), inset 0 0 0 1px rgba(255,255,255,0.5);

  /* Motion */
  --ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
  --ease-out:    cubic-bezier(0.16, 1, 0.3, 1);
  --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
  --dur-fast:   150ms;
  --dur-base:   200ms;
  --dur-slow:   300ms;
  --dur-theme:  500ms;

  /* =========================================================
     Glass-morphism 参数（v2.4 · 运行时降级）
     ---------------------------------------------------------
     默认值 = 高品质档（现代 GPU 机器）。
     低配 / 无 GPU 环境会被 index.html 的 inline 脚本检测到，
     在 <html> 上打 data-perf="low"，触发下方 html[data-perf="low"]
     覆盖块，blur 降至 1/3 以下，paint cost 大幅下降。
     所有 backdrop-filter 必须引用这些变量，禁止硬编码 blur 数值。
     详见 docs/YangTuoDesignSystem.impl.forWeb.md §玻璃降级策略。
     ========================================================= */
  --glass-blur-xl:  36px;  /* 大型浮层 / 模态（导航条 2026-06-21 去雾·不再用 blur，impl.forWeb §8.4） */
  --glass-blur-lg:  28px;  /* GlassCard 标准卡片 */
  --glass-blur-md:  20px;  /* BrandTable / 二级面板 */
  --glass-blur-sm:  10px;  /* BrandButton outline 等小控件 */
  --glass-sat-high: 1.6;   /* 高饱和档（色彩更跳；导航条去雾后不用） */
  --glass-sat-med:  1.4;   /* 其他玻璃组件默认饱和度 */
}

/* ================================================================
   THEMES — applied via data-theme attribute on <html>
   （勿挂 body：配套 yt-bg.css 的暗档/彩光选择器锚定 html[data-theme]，
   挂 body 会出现「token 翻暗、背景仍亮」的半暗态）
   Matches the 6 brightness stops in v6.0-YangTuoDesignBase.html
   ================================================================ */

/* ================================================================
   可读性红线（v2 修订）
   亮档（110/100/90/80）的 --text-muted 原来过浅（WCAG ≈ 2:1），
   已整体调深至 4.5:1 附近；caption / label-cap 默认走 --text-dim，
   不再借用色阶装饰色（--gold-dark 等）做正文色。
   详细约定见 YangTuoDesignSystem.impl.forWeb.md §4.3 可读性约定。
   ================================================================ */

/* 110% — VIBRANT (kraft-paper, highest contrast, most saturated gold) */
[data-theme="110"] {
  --bg:           #E7D8B8;
  --surface:      rgba(245, 235, 215, 0.88);
  --text:         #1F1608;
  --text-dim:     #463521;   /* ~7.5:1 on bg */
  --text-muted:   #5A4834;   /* ~5.5:1 on bg（原 #776250 ≈ 3.5:1 不合格） */
  --glass-bg:     rgba(245, 235, 215, 0.65);
  --glass-border: rgba(160, 125, 60, 0.28);
}

/* 100% — DEFAULT KRAFT (above) */
[data-theme="100"] {
  --bg:           #D6C6AA;
  --surface:      rgba(235, 225, 206, 0.84);
  --text:         #332616;
  --text-dim:     #5c4b37;   /* ~4.8:1 on bg */
  --text-muted:   #695540;   /* ~4.2:1 on bg（原 #8a7b6a ≈ 2.4:1 不合格） */
  --glass-bg:     rgba(230, 218, 196, 0.5);
  --glass-border: rgba(160, 125, 60, 0.18);
}

/* 90% — SOFT CARAMEL (lower contrast, calmer) */
[data-theme="90"] {
  --bg:           #CABA9C;
  --surface:      rgba(220, 208, 188, 0.82);
  --text:         #3B2D1C;
  --text-dim:     #5D4A34;   /* ~5:1 on bg */
  --text-muted:   #6F5B42;   /* ~4.5:1 on bg（原 #968672 ≈ 1.85:1 严重不合格） */
  --glass-bg:     rgba(220, 208, 188, 0.5);
  --glass-border: rgba(160, 125, 60, 0.18);
}

/* 80% — EYE-CARE SEPIA (coolest light, warmest paper — default fallback) */
[data-theme="80"] {
  --bg:           #BCAC8E;
  --surface:      rgba(208, 196, 174, 0.8);
  --text:         #3A2912;
  --text-dim:     #54402A;   /* ~4.9:1 on bg */
  --text-muted:   #66503A;   /* ~4.5:1 on bg（原 #A0917D ≈ 1.43:1 严重不合格 — 用户截图问题就是这条） */
  --glass-bg:     rgba(208, 196, 174, 0.45);
  --glass-border: rgba(160, 125, 60, 0.22);
}

/* 70% — DARK COFFEE (soft dark) */
[data-theme="70"] {
  --bg:           #2a241c;
  --surface:      rgba(45, 35, 25, 0.86);
  --text:         #FBF4DC;   /* WCAG AA on #2a241c: ~13:1 */
  --text-dim:     #E8D7A8;   /* ~9:1 */
  --text-muted:   #C9B584;   /* ~6:1 (captions) */
  --glass-bg:     rgba(25, 20, 15, 0.6);
  --glass-border: rgba(230, 205, 130, 0.35);
  --primary-text: #E88E80;   /* ~6.3:1 on #2a241c — 暗档下红色文字/code 必须走这个，不能用 --primary-dark (仅 1.74:1) */
  --success-text: #7FC9A0;   /* ~7.9:1 on #2a241c（--success 直接作文字仅 3.7:1） */
  --warning-text: #E5C96E;   /* ~9.4:1 on #2a241c */
  --danger-text:  #EE9384;   /* ~6.7:1 on #2a241c（--danger 直接作文字仅 2.8:1，错误提示必须走这个） */
}

/* 60% — DEEP CHARCOAL (darkest) — toned down, softer than 70 */
[data-theme="60"] {
  --bg:           #1A1612;
  --surface:      rgba(35, 28, 20, 0.88);
  --text:         #EDE0B8;   /* ~10:1 on #1A1612 — comfortable night */
  --text-dim:     #D4C08C;   /* ~7:1 */
  --text-muted:   #9E8A5E;   /* ~4.5:1 */
  --glass-bg:     rgba(18, 14, 10, 0.65);
  --glass-border: rgba(215, 190, 125, 0.35);
  --primary-text: #F0A599;   /* ~8.8:1 on #1A1612 */
  --success-text: #8FD4AC;   /* ~10.4:1 on #1A1612 */
  --warning-text: #EDD98A;   /* ~12.8:1 on #1A1612 */
  --danger-text:  #F2A497;   /* ~9.0:1 on #1A1612 */
}

/* Dark-mode flag (70 + 60) — mirror of body.dark-mode-active in v6 */
[data-theme="70"],
[data-theme="60"] {
  --is-dark: 1;
  --shadow-xs:  0 2px 8px rgba(0,0,0,0.35);
  --shadow-sm:  0 4px 16px rgba(0,0,0,0.45);
  --shadow-md:  0 8px 32px rgba(0,0,0,0.55);
  --shadow-lg:  0 15px 50px rgba(0,0,0,0.60);
  --shadow-xl:  0 24px 64px rgba(0,0,0,0.70);
  --shadow-primary: 0 8px 28px rgba(0,0,0,0.5);
  --island-bg: #2a241c;

  --neu-out: 6px 6px 14px rgba(0,0,0,0.8), -5px -5px 12px rgba(255,255,255,0.08);
  --neu-in:  inset 5px 5px 12px rgba(0,0,0,0.8), inset -4px -4px 10px rgba(255,255,255,0.05);

  --brutal-shadow:       6px 6px 0 var(--gold-pale);
  --brutal-shadow-hover: 9px 9px 0 var(--gold-pale);
  --brutal-shadow-press: 2px 2px 0 var(--gold-pale);

  --glass-shine-inset: inset 0 1px 1px rgba(255,255,255,0.05);

  /* 2026-07-03：暗档 focus ring alpha 0.12/0.08 → 0.32/0.20——原值合成后与底色仅差 1.39:1
     键盘焦点几乎不可见；0.32 合成 ~2.6:1（WCAG 2.2 焦点指示建议 ≥3:1 的工程折中，视觉仍克制） */
  --ring-primary: 0 0 0 3px rgba(240, 225, 182, 0.32);
  --ring-primary-subtle: 0 0 0 3px rgba(240, 225, 182, 0.20);
  /* 2026-07-03：暗档主按钮由纯黑影改微红光——对齐 §7.3「亮色阴影拉长；暗色发光效果」的既定动效语言 */
  --glow-primary: 0 8px 28px rgba(232, 142, 128, 0.18);
  --glow-primary-sm: 0 2px 8px rgba(0, 0, 0, 0.35);
  --glow-primary-line: 0 2px 6px rgba(232, 142, 128, 0.35);
  --backdrop-overlay: rgba(10, 8, 5, 0.6);
  --panel-glass-bg: rgba(42, 36, 28, 0.96);
  --dropdown-glass-bg: rgba(42, 36, 28, 0.94);
  --table-row-hover: rgba(53, 78, 131, 0.15);
  --control-subtle-bg: rgba(240, 225, 182, 0.05);
  --control-subtle-border: rgba(240, 225, 182, 0.1);
  --card-opaque-border: rgba(240, 225, 182, 0.12);
}

/* ================================================================
   PERF MODE · html[data-perf="low"] —— 低配机运行时降档
   index.html <head> 的 inline 探测脚本根据硬件指标（核心数 ≤ 2 / 内存 ≤ 2GB /
   WebGL renderer 为 SwiftShader / llvmpipe / Software）自动在 <html> 打上
   data-perf="low"，所有玻璃组件通过变量自动获得低开销版本。
   用户可通过 localStorage.setItem('yt-perf','high') 或 'low' 手动覆盖。
   视觉上保留玻璃识别度，paint cost 粗估下降 8-9 倍。
   ================================================================ */
html[data-perf="low"] {
  --glass-blur-xl:  12px;
  --glass-blur-lg:  12px;
  --glass-blur-md:  10px;
  --glass-blur-sm:  8px;
  --glass-sat-high: 1.3;
  --glass-sat-med:  1.2;
}

/* ================================================================
   SEMANTIC TYPOGRAPHY ROLES
   Use these in components instead of raw sizes where possible.
   裸 h1 有意不设默认样式：hero 用 .h-hero / h1.display 显式选入
   （display-xl），分节标题语义走 h2（display-l）；勿给裸 h1 补全局
   字阶——阶梯里没有它的位置，会与 h2 尺寸倒挂。
   ================================================================ */
.h-hero,
h1.display {
  font-family: var(--font-display);
  font-weight: 800;
  font-size: var(--fs-display-xl);
  letter-spacing: var(--ls-hero);
  line-height: var(--lh-tight);
  color: var(--text);
}

.h-section,
h2 {
  font-family: var(--font-display);
  font-weight: 800;
  font-size: var(--fs-display-l);
  letter-spacing: var(--ls-display);
  line-height: var(--lh-snug);
  color: var(--text);
}

h3 {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: var(--fs-h3);
  line-height: var(--lh-snug); /* 2026-07-03 补：原缺行高声明，卡片标题行高随容器漂 */
  color: var(--text);
}

h4 {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: var(--fs-h4);
  line-height: var(--lh-snug);
  color: var(--text);
}

p, .body {
  font-family: var(--font-sans);
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  color: var(--text-dim);
}

.caption {
  font-family: var(--font-sans);
  font-size: var(--fs-caption);
  /* v2：caption 要求可读，走 text-dim（≥ 4.5:1）；
     原来用 --text-muted 在 80/90/100 档不可读 */
  color: var(--text-dim);
}

.label-cap {
  font-family: var(--font-sans);
  font-size: var(--fs-micro);
  letter-spacing: var(--ls-label);
  text-transform: uppercase;
  font-weight: 600;
  /* v2：label-cap 不再借用色阶装饰色 --gold-dark（在亮档对比度不足），
     改用 --text-dim 保证各档可读；特殊场景（hero 上方 eyebrow）可单独覆盖 */
  color: var(--text-dim);
}

code, .code, pre {
  font-family: var(--font-mono);
  font-size: 0.85em; /* 2026-07-03：原固定 12px 在 17px 大正文里比例失衡（0.7），改相对值
                        （15px 正文下 ≈12.75px 视觉几乎不变，大正文自动跟随） */
  line-height: 1.7;
  font-feature-settings: 'liga' 1, 'calt' 1; /* Fira Code ligatures */
}

/* The signature shimmering champagne-gold text */
.shine-text {
  background: linear-gradient(120deg,
    #9A7520, #C9A227, #D4B240, #EDD98A,
    #C9A227, #B8970A, #C9A227);
  background-size: 300%;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  animation: goldShift 4s ease infinite;
}
@keyframes goldShift {
  0%,100% { background-position:   0% 50%; }
  50%     { background-position: 100% 50%; }
}

/* 减动效环境停用流光动画（与 yt-bg.css 的 body transition gate 同向；
   上游登记：impl.forWeb.md §5.4 语义类 .shine-text 条目） */
@media (prefers-reduced-motion: reduce) {
  .shine-text { animation: none; }
}
