/* ==========================================================================
   Material You (Material Design 3) 设计令牌
   —— 由 tools/gen-md3-tokens.mjs 自动生成，请勿手改本文件
   种子色（seed）：#e60012   生成时间：2026/11/10 12:38:30

   分层约定（与 MD3 官方一致）：
     ① 参考调色板 --md-ref-*    ：由种子色推导的 tone 阶梯
     ② 语义令牌   --md-sys-*    ：组件只允许引用这一层
     ③ 形状/动效/状态            ：跨组件复用的非颜色令牌
   换品牌色：改 tools/gen-md3-tokens.mjs 里的 SEED 常量并重跑即可。
   ========================================================================== */

:root {
  /* ========== ① 参考调色板（tone 0–100，勿在组件中直接引用） ========== */
  /* primary */
  --md-ref-primary-0: #000000;
  --md-ref-primary-10: #610008;
  --md-ref-primary-20: #94000C;
  --md-ref-primary-30: #C70010;
  --md-ref-primary-40: #E60012;
  --md-ref-primary-50: #F62334;
  --md-ref-primary-60: #F85461;
  --md-ref-primary-70: #FA8A93;
  --md-ref-primary-80: #F9CED1;
  --md-ref-primary-90: #FFFFFF;
  --md-ref-primary-95: #FFFFFF;
  --md-ref-primary-99: #FFFFFF;
  --md-ref-primary-100: #FFFFFF;
  /* secondary */
  --md-ref-secondary-0: #000000;
  --md-ref-secondary-10: #461B1F;
  --md-ref-secondary-20: #692B30;
  --md-ref-secondary-30: #8E3A40;
  --md-ref-secondary-40: #A3434A;
  --md-ref-secondary-50: #B96067;
  --md-ref-secondary-60: #C88489;
  --md-ref-secondary-70: #DAAAAE;
  --md-ref-secondary-80: #ECDADC;
  --md-ref-secondary-90: #FFFFFF;
  --md-ref-secondary-95: #FFFFFF;
  --md-ref-secondary-99: #FFFFFF;
  --md-ref-secondary-100: #FFFFFF;
  /* tertiary */
  --md-ref-tertiary-0: #000000;
  --md-ref-tertiary-10: #504611;
  --md-ref-tertiary-20: #78691C;
  --md-ref-tertiary-30: #A28E26;
  --md-ref-tertiary-40: #BAA32C;
  --md-ref-tertiary-50: #CEB94B;
  --md-ref-tertiary-60: #D9C873;
  --md-ref-tertiary-70: #E5DA9F;
  --md-ref-tertiary-80: #F1ECD6;
  --md-ref-tertiary-90: #FFFFFF;
  --md-ref-tertiary-95: #FFFFFF;
  --md-ref-tertiary-99: #FFFFFF;
  --md-ref-tertiary-100: #FFFFFF;
  /* neutral */
  --md-ref-neutral-0: #000000;
  --md-ref-neutral-10: #362B2C;
  --md-ref-neutral-20: #524243;
  --md-ref-neutral-30: #6F595A;
  --md-ref-neutral-40: #806668;
  --md-ref-neutral-50: #988183;
  --md-ref-neutral-60: #AF9D9E;
  --md-ref-neutral-70: #C8BCBD;
  --md-ref-neutral-80: #E6E1E1;
  --md-ref-neutral-90: #FFFFFF;
  --md-ref-neutral-95: #FFFFFF;
  --md-ref-neutral-99: #FFFFFF;
  --md-ref-neutral-100: #FFFFFF;
  /* neutral-variant */
  --md-ref-neutral-variant-0: #000000;
  --md-ref-neutral-variant-10: #3B2628;
  --md-ref-neutral-variant-20: #593B3E;
  --md-ref-neutral-variant-30: #785053;
  --md-ref-neutral-variant-40: #8A5C60;
  --md-ref-neutral-variant-50: #A2777B;
  --md-ref-neutral-variant-60: #B69698;
  --md-ref-neutral-variant-70: #CDB7B9;
  --md-ref-neutral-variant-80: #E8DFE0;
  --md-ref-neutral-variant-90: #FFFFFF;
  --md-ref-neutral-variant-95: #FFFFFF;
  --md-ref-neutral-variant-99: #FFFFFF;
  --md-ref-neutral-variant-100: #FFFFFF;
  /* error */
  --md-ref-error-0: #000000;
  --md-ref-error-10: #560C10;
  --md-ref-error-20: #80151A;
  --md-ref-error-30: #AB1C23;
  --md-ref-error-40: #C62028;
  --md-ref-error-50: #D84148;
  --md-ref-error-60: #E16B71;
  --md-ref-error-70: #EA9A9E;
  --md-ref-error-80: #F3D4D5;
  --md-ref-error-90: #FFFFFF;
  --md-ref-error-95: #FFFFFF;
  --md-ref-error-99: #FFFFFF;
  --md-ref-error-100: #FFFFFF;
  /* success */
  --md-ref-success-0: #000000;
  --md-ref-success-10: #134E33;
  --md-ref-success-20: #1F754D;
  --md-ref-success-30: #2A9E68;
  --md-ref-success-40: #30B677;
  --md-ref-success-50: #4FCA91;
  --md-ref-success-60: #77D5A9;
  --md-ref-success-70: #A2E3C4;
  --md-ref-success-80: #D7F0E4;
  --md-ref-success-90: #FFFFFF;
  --md-ref-success-95: #FFFFFF;
  --md-ref-success-99: #FFFFFF;
  --md-ref-success-100: #FFFFFF;
  /* warning */
  --md-ref-warning-0: #000000;
  --md-ref-warning-10: #5F3D03;
  --md-ref-warning-20: #8D5C07;
  --md-ref-warning-30: #BD7C0A;
  --md-ref-warning-40: #DB8F0C;
  --md-ref-warning-50: #EBA62E;
  --md-ref-warning-60: #F0BA5C;
  --md-ref-warning-70: #F5D090;
  --md-ref-warning-80: #F7E8D0;
  --md-ref-warning-90: #FFFFFF;
  --md-ref-warning-95: #FFFFFF;
  --md-ref-warning-99: #FFFFFF;
  --md-ref-warning-100: #FFFFFF;

  /* ========== ③ 形状（MD3 shape scale） ========== */
  --md-sys-shape-corner-none: 0;
  --md-sys-shape-corner-xs: 8px;
  --md-sys-shape-corner-sm: 12px;
  --md-sys-shape-corner-md: 16px;
  --md-sys-shape-corner-lg: 24px;
  --md-sys-shape-corner-xl: 28px;
  --md-sys-shape-corner-2xl: 32px;
  --md-sys-shape-corner-3xl: 48px;
  --md-sys-shape-corner-full: 9999px;

  /* ========== ③ 高程（MD3 elevation：与色调表面配合，而非单纯投影） ========== */
  --md-sys-elevation-0: none;
  --md-sys-elevation-1: 0 1px 2px rgba(0, 0, 0, .10), 0 1px 3px 1px rgba(0, 0, 0, .06);
  --md-sys-elevation-2: 0 1px 2px rgba(0, 0, 0, .10), 0 2px 6px 2px rgba(0, 0, 0, .07);
  --md-sys-elevation-3: 0 4px 8px 3px rgba(0, 0, 0, .08), 0 1px 3px rgba(0, 0, 0, .12);
  --md-sys-elevation-4: 0 6px 10px 4px rgba(0, 0, 0, .08), 0 2px 3px rgba(0, 0, 0, .12);
  --md-sys-elevation-5: 0 8px 12px 6px rgba(0, 0, 0, .08), 0 4px 4px rgba(0, 0, 0, .12);

  /* ========== ③ 动效（MD3 motion） ========== */
  --md-sys-motion-easing-standard: cubic-bezier(0.2, 0, 0, 1);
  --md-sys-motion-easing-emphasized: cubic-bezier(0.2, 0, 0, 1);
  --md-sys-motion-duration-short: 200ms;
  --md-sys-motion-duration-medium: 300ms;
  --md-sys-motion-duration-long: 450ms;

  /* ========== ③ 状态层（MD3 state layer：叠加不透明度，而非改颜色） ========== */
  --md-sys-state-hover-opacity: 0.08;
  --md-sys-state-focus-opacity: 0.10;
  --md-sys-state-pressed-opacity: 0.10;
  --md-sys-state-disabled-opacity: 0.38;
  --md-sys-state-disabled-container-opacity: 0.12;

  /* ========== ③ 字体（Roboto 优先，中文回落到系统字体，离线可用） ========== */
  --md-sys-typescale-font: Roboto, "PingFang SC", "Microsoft YaHei", "Hiragino Sans GB", "Source Han Sans SC", system-ui, -apple-system, "Segoe UI", sans-serif;
  --md-sys-typescale-font-mono: "Roboto Mono", "JetBrains Mono", "Cascadia Mono", Consolas, "Courier New", monospace;
  /* 字号阶梯：display 56 / headline 32 / title 24 / body 16 / label 14 */
  --md-sys-typescale-display-large: 3.5rem;
  --md-sys-typescale-headline-large: 2rem;
  --md-sys-typescale-headline-small: 1.5rem;
  --md-sys-typescale-title-large: 1.375rem;
  --md-sys-typescale-title-medium: 1rem;
  --md-sys-typescale-body-large: 1rem;
  --md-sys-typescale-body-medium: 0.9375rem;
  --md-sys-typescale-label-large: 0.875rem;
  --md-sys-typescale-label-small: 0.75rem;

  /* ========== ② 语义令牌 · 浅色模式 ========== */
  --md-sys-color-primary: #E60012;
  --md-sys-color-on-primary: #FFFFFF;
  --md-sys-color-primary-container: #FFFFFF;
  --md-sys-color-on-primary-container: #610008;
  --md-sys-color-secondary: #A3434A;
  --md-sys-color-on-secondary: #FFFFFF;
  --md-sys-color-secondary-container: #FFFFFF;
  --md-sys-color-on-secondary-container: #461B1F;
  --md-sys-color-tertiary: #BAA32C;
  --md-sys-color-on-tertiary: #FFFFFF;
  --md-sys-color-tertiary-container: #FFFFFF;
  --md-sys-color-on-tertiary-container: #504611;
  --md-sys-color-error: #C62028;
  --md-sys-color-on-error: #FFFFFF;
  --md-sys-color-error-container: #FFFFFF;
  --md-sys-color-on-error-container: #560C10;
  --md-sys-color-success: #30B677;
  --md-sys-color-on-success: #FFFFFF;
  --md-sys-color-success-container: #FFFFFF;
  --md-sys-color-on-success-container: #134E33;
  --md-sys-color-warning: #DB8F0C;
  --md-sys-color-on-warning: #FFFFFF;
  --md-sys-color-warning-container: #FFFFFF;
  --md-sys-color-on-warning-container: #5F3D03;
  --md-sys-color-surface: #FFFFFF;
  --md-sys-color-surface-dim: #F3F1F1;
  --md-sys-color-surface-bright: #FFFFFF;
  --md-sys-color-surface-container-lowest: #FFFFFF;
  --md-sys-color-surface-container-low: #FFFFFF;
  --md-sys-color-surface-container: #FFFFFF;
  --md-sys-color-surface-container-high: #FFFFFF;
  --md-sys-color-surface-container-highest: #FFFFFF;
  --md-sys-color-on-surface: #362B2C;
  --md-sys-color-on-surface-variant: #785053;
  --md-sys-color-outline: #A2777B;
  --md-sys-color-outline-variant: #E8DFE0;
  --md-sys-color-inverse-surface: #524243;
  --md-sys-color-inverse-on-surface: #FFFFFF;
  --md-sys-color-scrim: #000000;
}

/* ========== ② 语义令牌 · 深色模式（MD3 dark scheme）
   选择器与现有实现对齐：ui.js 的主题切换给 body 加 .dark 类 ========== */
body.dark,
[data-theme="dark"] {
  --md-sys-color-primary: #F9CED1;
  --md-sys-color-on-primary: #94000C;
  --md-sys-color-primary-container: #C70010;
  --md-sys-color-on-primary-container: #FFFFFF;
  --md-sys-color-secondary: #ECDADC;
  --md-sys-color-on-secondary: #692B30;
  --md-sys-color-secondary-container: #8E3A40;
  --md-sys-color-on-secondary-container: #FFFFFF;
  --md-sys-color-tertiary: #F1ECD6;
  --md-sys-color-on-tertiary: #78691C;
  --md-sys-color-tertiary-container: #A28E26;
  --md-sys-color-on-tertiary-container: #FFFFFF;
  --md-sys-color-error: #F3D4D5;
  --md-sys-color-on-error: #80151A;
  --md-sys-color-error-container: #AB1C23;
  --md-sys-color-on-error-container: #FFFFFF;
  --md-sys-color-success: #D7F0E4;
  --md-sys-color-on-success: #1F754D;
  --md-sys-color-success-container: #2A9E68;
  --md-sys-color-on-success-container: #FFFFFF;
  --md-sys-color-warning: #F7E8D0;
  --md-sys-color-on-warning: #8D5C07;
  --md-sys-color-warning-container: #BD7C0A;
  --md-sys-color-on-warning-container: #FFFFFF;
  --md-sys-color-surface: #110E0E;
  --md-sys-color-surface-dim: #110E0E;
  --md-sys-color-surface-bright: #443638;
  --md-sys-color-surface-container-lowest: #0B0909;
  --md-sys-color-surface-container-low: #1C1717;
  --md-sys-color-surface-container: #221B1C;
  --md-sys-color-surface-container-high: #302727;
  --md-sys-color-surface-container-highest: #3E3233;
  --md-sys-color-on-surface: #FFFFFF;
  --md-sys-color-on-surface-variant: #E8DFE0;
  --md-sys-color-outline: #B69698;
  --md-sys-color-outline-variant: #785053;
  --md-sys-color-inverse-surface: #FFFFFF;
  --md-sys-color-inverse-on-surface: #524243;
  --md-sys-color-scrim: #000000;
}

/* ========== 无障碍：尊重系统的「减少动态效果」偏好 ========== */
@media (prefers-reduced-motion: reduce) {
  :root {
    --md-sys-motion-duration-short: 0.01ms;
    --md-sys-motion-duration-medium: 0.01ms;
    --md-sys-motion-duration-long: 0.01ms;
  }
}
