/* finesse · register=product · A=tinted-cobalt-slate+cobalt · B=650/400 · C=sidebar-shell+centered-column
 * D=CSS-only · E=hairline-paper · SOUL=4 SPECTACLE=2 DENSITY=7 · build=2026-10-20 */
/* ================================================================
   DESIGN TOKENS — 全站唯一真源
   ----------------------------------------------------------------
   智能刷题系统 · 产品端（前台 / 管理后台 / 安装向导）共用一套令牌。
   任何一处样式都不应再写死颜色、间距、圆角、阴影 —— 一律取用本文件。

   · 色彩：HSL 通道三元组，配合 hsl(var(--x) / <alpha>) 使用
   · 主色：钴蓝 Cobalt（品牌既有资产，前后台统一）
   · 中性：冷调蓝灰 ramp，底色与卡片均做着色，绝不使用纯白/纯黑
   · 语义：success / warning / destructive 与品牌色严格分离
   ================================================================ */

:root {
  /* ============================================================
     1 · 品牌色 — Cobalt
     ============================================================ */
  --brand-h: 222;
  --brand-s: 85%;
  --brand-l: 55%;        /* #3B62F6 —— 与 <meta theme-color> 保持一致 */

  --primary: var(--brand-h) var(--brand-s) var(--brand-l);
  --primary-foreground: 0 0% 100%;
  --primary-soft: var(--brand-h) var(--brand-s) var(--brand-l);
  --primary-ink: 222 60% 38%;          /* 主色深一档：浅底上的主色文字 */
  --ring: var(--brand-h) var(--brand-s) var(--brand-l);

  /* 第二色 · 琥珀（VIP / 成就 / 榜单）— 与钴蓝跨色轮配对，不撞语义色 */
  --gold: 32 92% 44%;
  --gold-soft: 32 92% 50%;
  --gold-ink: 26 84% 34%;

  /* ============================================================
     2 · 中性 ramp — 冷调蓝灰（统一前台暖奶油与后台冷白的分歧）
     ============================================================ */
  --background: 220 20% 98.2%;         /* 页面底纸 */
  --foreground: 222 30% 11%;           /* 主文字 */
  --card: 220 24% 99.5%;               /* 卡片 / 面板 —— 着色的近白 */
  --card-foreground: 222 30% 11%;
  --popover: 220 24% 99.5%;
  --popover-foreground: 222 30% 11%;

  --muted: 220 18% 95.6%;              /* 次级底：表头、内嵌槽、禁用态 */
  --muted-foreground: 220 9% 42%;      /* 标签 / 说明文字（≥4.5:1 on --card）*/
  --secondary: 220 18% 95.6%;
  --secondary-foreground: 222 30% 11%;
  --accent: 220 18% 95.6%;             /* hover 填充 */
  --accent-foreground: 222 30% 11%;

  --border: 220 14% 88%;               /* 发丝线基准 */
  --input: 220 14% 88%;
  --overlay: 222 30% 11%;              /* 遮罩底色（配 alpha 使用） */

  /* ============================================================
     3 · 语义色 — 与品牌色分离，永不挪作装饰
     ============================================================ */
  --success: 152 52% 36%;              /* 沉稳偏青的绿：仍是"对/通过"，但不与品牌蓝撞色 */
  --success-soft: 152 52% 42%;
  --warning: 32 90% 42%;
  --destructive: 0 72% 47%;
  --destructive-foreground: 0 0% 100%;
  --info: 200 80% 38%;

  /* ============================================================
     4 · 着色近白 / 近黑 —— 替代 #fff / #000
     ============================================================ */
  --white: 220 30% 100%;         /* 着色的近白，用法 hsl(var(--white) / .06) */
  --black: 222 30% 8%;           /* 着色的近黑 */
  --shadow-color: 222 30% 11%;         /* 阴影由文字色派生，保证整体同源 */

  /* ============================================================
     5 · 字体
     ============================================================ */
  --font-sans: "PingFang SC", "HarmonyOS Sans SC", "MiSans", "Noto Sans SC",
               -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
               "Helvetica Neue", "Microsoft YaHei", Arial, sans-serif;
  --font-serif: "Noto Serif SC", "Songti SC", "SimSun", Georgia, serif;
  --font-mono: "SF Mono", "Cascadia Code", "JetBrains Mono", "Ubuntu Mono",
               Consolas, "PingFang SC", monospace;

  --font-size-base: 16px;

  /* ============================================================
     6 · 字号阶梯（1.15 比例，中文可读性优先）
     ============================================================ */
  --text-2xs: 0.6875rem;   /* 11px — 角标、极细标签 */
  --text-xs:  0.75rem;     /* 12px — 标签、caption */
  --text-sm:  0.8125rem;   /* 13px — 次要正文 */
  --text-ui:  0.9375rem;   /* 15px — 控件字号（按钮 / 输入 / 单元格）*/
  --text-base: 1rem;       /* 16px — 界面与阅读正文基准 */
  --text-md:  1.0625rem;   /* 17px — 强调正文 */
  --text-lg:  1.125rem;    /* 18px — 卡片标题 */
  --text-xl:  1.25rem;     /* 20px — 区块标题 */
  --text-2xl: 1.5rem;      /* 24px — 页标题 */
  --text-3xl: 1.875rem;    /* 30px — 关键数值 */
  --text-4xl: 2.25rem;     /* 36px — 成绩 / 大数 */
  --text-5xl: 3rem;        /* 48px — 首屏数字 */

  /* ============================================================
     7 · 行高 / 字距
     ============================================================ */
  --leading-tight:   1.15;   /* ≥24px 标题 */
  --leading-snug:    1.3;    /* 18–20px UI 标题 */
  --leading-normal:  1.5;    /* 14–16px 正文 */
  --leading-relaxed: 1.65;   /* 长文阅读 */
  --leading-caps:    1.05;   /* 全大写 / 纯大写标题的行高下限 */

  --tracking-tight:  -0.02em;  /* 大标题 */
  --tracking-snug:   -0.01em;  /* 中标题、按钮 */
  --tracking-normal: 0;
  --tracking-wide:   0.06em;   /* ≤13px 大写标签 */

  /* ============================================================
     8 · 间距 — 4/8 栅格
     ============================================================ */
  --space-0:  0;
  --space-1:  4px;
  --space-2:  8px;
  --space-3:  12px;
  --space-4:  16px;
  --space-5:  20px;
  --space-6:  24px;
  --space-7:  28px;
  --space-8:  32px;
  --space-10: 40px;
  --space-12: 48px;
  --space-16: 64px;
  --space-20: 80px;

  /* ============================================================
     9 · 圆角阶梯
     ============================================================ */
  --radius-xs: 6px;
  --radius-sm: 10px;      /* 输入、徽章、小按钮 */
  --radius:    14px;      /* 卡片、按钮 —— 全站主圆角 */
  --radius-md: 18px;      /* 大卡片、区块 */
  --radius-lg: 24px;      /* 面板、底部弹层 */
  --radius-xl: 32px;      /* 全屏面板 */
  --radius-pill: 999px;   /* 胶囊 */

  /* ============================================================
     10 · 阴影阶梯 —— 全部由文字色派生，透明分层
     ============================================================ */
  --shadow-xs: 0 1px 2px 0 var(--shadow-color-0_04, rgba(20, 25, 36, 0.04));
  --shadow-sm: 0 1px 2px -1px var(--shadow-color-0_06, rgba(20, 25, 36, 0.06)),
               0 1px 3px 0 var(--shadow-color-0_04, rgba(20, 25, 36, 0.04));
  --shadow-md: 0 4px 6px -1px var(--shadow-color-0_05, rgba(20, 25, 36, 0.05)),
               0 2px 4px -2px var(--shadow-color-0_05, rgba(20, 25, 36, 0.05));
  --shadow-lg: 0 10px 15px -3px var(--shadow-color-0_06, rgba(20, 25, 36, 0.06)),
               0 4px 6px -4px var(--shadow-color-0_04, rgba(20, 25, 36, 0.04));
  --shadow-xl: 0 20px 25px -5px var(--shadow-color-0_08, rgba(20, 25, 36, 0.08)),
               0 8px 10px -6px var(--shadow-color-0_04, rgba(20, 25, 36, 0.04));
  --shadow-card: 0 1px 3px var(--shadow-color-0_04, rgba(20, 25, 36, 0.04)),
                 0 0 0 1px var(--shadow-color-0_03, rgba(20, 25, 36, 0.03));
  --shadow-card-hover: 0 8px 24px var(--shadow-color-0_08, rgba(20, 25, 36, 0.08)),
                       0 0 0 1px var(--shadow-color-0_04, rgba(20, 25, 36, 0.04));
  --shadow-nav: 0 -1px 3px var(--shadow-color-0_04, rgba(20, 25, 36, 0.04)),
                0 0 20px var(--shadow-color-0_03, rgba(20, 25, 36, 0.03));
  --shadow-float: 0 12px 40px var(--shadow-color-0_10, rgba(20, 25, 36, 0.1));
  --shadow-glow: 0 0 20px var(--primary-0_15, rgba(70, 138, 246, 0.15));

  /* ============================================================
     11 · 层级
     ============================================================ */
  --z-base: 0;
  --z-raised: 10;
  --z-sticky: 50;
  --z-nav: 100;
  --z-dropdown: 200;
  --z-overlay: 300;
  --z-modal: 400;
  --z-toast: 500;

  /* ============================================================
     12 · 动效
     ============================================================ */
  --ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1);
  --ease-out-back: cubic-bezier(0.34, 1.56, 0.64, 1);
  --ease-spring: cubic-bezier(0.175, 0.885, 0.32, 1.275);
  --ease-smooth: cubic-bezier(0.4, 0, 0.2, 1);

  --motion-micro: 120ms;   /* hover / press 反馈 */
  --transition-fast: 180ms var(--ease-out-expo);
  --transition-normal: 300ms var(--ease-out-expo);
  --transition-slow: 500ms var(--ease-out-expo);

  --focus-ring: 0 0 0 3px var(--ring-0_22, rgba(70, 138, 246, 0.22));

  /* ============================================================
     13 · 布局尺度
     ============================================================ */
  --container-sm: 480px;    /* 前台手机容器 */
  --content-max: 1440px;    /* 后台内容最大宽 */
  --sidebar-w: 260px;       /* 后台侧栏 */
  --topbar-h: 58px;
  --bottom-nav-h: 60px;
  --border-w: 1px;
  --border-w-input: 1px;
  --tap-min: 44px;          /* 最小触控目标 */

  /* VIP 金（保留旧名，兼容既有选择器） */
  --vip-gold: var(--gold-solid, rgb(215, 119, 9));
  --vip-gold-dark: var(--gold-ink-solid, rgb(160, 77, 14));
  --vip-gold-glow: var(--gold-0_25, rgba(215, 119, 9, 0.25));
}

/* ================================================================
   暗色主题 —— 统一前后台：底色最深，面板逐级提亮（亮度即纵深）
   ================================================================ */
[data-theme="dark"] {
  --background: 222 25% 6%;
  --foreground: 213 22% 94%;
  --card: 222 20% 9%;
  --card-foreground: 213 22% 94%;
  --popover: 222 20% 9%;
  --popover-foreground: 213 22% 94%;

  --primary: 217 91% 62%;
  --primary-foreground: 222 30% 8%;
  --primary-ink: 217 91% 74%;
  --ring: 217 91% 62%;

  --gold: 38 92% 58%;
  --gold-soft: 38 92% 62%;
  --gold-ink: 38 92% 72%;

  --muted: 217 20% 15%;
  --muted-foreground: 215 16% 62%;     /* 暗色下取 62% 而非 55%，保证 4.5:1 */
  --secondary: 217 20% 15%;
  --secondary-foreground: 213 22% 94%;
  --accent: 217 20% 15%;
  --accent-foreground: 213 22% 94%;

  --border: 217 18% 19%;
  --input: 217 18% 19%;
  --overlay: 0 0% 0%;

  --success: 152 48% 55%;
  --success-soft: 152 52% 62%;
  --warning: 38 92% 58%;
  --destructive: 0 70% 58%;
  --destructive-foreground: 222 30% 8%;
  --info: 200 70% 60%;

  --white: 213 22% 98%;
  --black: 222 30% 4%;
  --shadow-color: 0 0% 0%;

  --shadow-card: 0 1px 3px hsl(0 0% 0% / 0.30),
                 0 0 0 1px hsl(213 22% 94% / 0.05);
  --shadow-card-hover: 0 8px 24px hsl(0 0% 0% / 0.40),
                       0 0 0 1px hsl(213 22% 94% / 0.07);
  --shadow-nav: 0 -1px 3px hsl(0 0% 0% / 0.30),
                0 0 20px hsl(0 0% 0% / 0.20);
  --shadow-float: 0 12px 40px hsl(0 0% 0% / 0.50);
  --shadow-glow: 0 0 20px var(--primary-0_22, rgba(70, 138, 246, 0.22));
  --focus-ring: 0 0 0 3px var(--ring-0_32, rgba(70, 138, 246, 0.32));

  --vip-gold: var(--gold-solid, rgb(215, 119, 9));
  --vip-gold-dark: var(--gold-ink-solid, rgb(160, 77, 14));
  --vip-gold-glow: var(--gold-0_3, rgba(215, 119, 9, 0.3));
}

/* ==== alpha 预编译 BEGIN（脚本生成，勿手改）==== */
/* 用途：把 hsl(var(--x) / a) 预编译成固定 rgba，供不支持“空格分隔 + 斜杠透明度”
   的旧内核（安卓微信 X5 / iOS 15 以下 WebView）兜底。用法 var(--x-0_5, rgba(...))。
   亮色取值挂在 :root，暗色仅重写与亮色不同的项。 */
:root {
  --accent-0_3: rgba(242, 243, 246, 0.3);
  --accent-0_5: rgba(242, 243, 246, 0.5);
  --background-0_7: rgba(249, 250, 251, 0.7);
  --border-0_2: rgba(220, 223, 229, 0.2);
  --border-0_25: rgba(220, 223, 229, 0.25);
  --border-0_3: rgba(220, 223, 229, 0.3);
  --border-0_35: rgba(220, 223, 229, 0.35);
  --border-0_4: rgba(220, 223, 229, 0.4);
  --border-0_5: rgba(220, 223, 229, 0.5);
  --border-0_6: rgba(220, 223, 229, 0.6);
  --border-0_7: rgba(220, 223, 229, 0.7);
  --border-0_8: rgba(220, 223, 229, 0.8);
  --border-0_9: rgba(220, 223, 229, 0.9);
  --card-0_85: rgba(253, 254, 254, 0.85);
  --card-0_88: rgba(253, 254, 254, 0.88);
  --card-0_92: rgba(253, 254, 254, 0.92);
  --destructive-0: rgba(206, 34, 34, 0);
  --destructive-0_02: rgba(206, 34, 34, 0.02);
  --destructive-0_05: rgba(206, 34, 34, 0.05);
  --destructive-0_08: rgba(206, 34, 34, 0.08);
  --destructive-0_1: rgba(206, 34, 34, 0.1);
  --destructive-0_12: rgba(206, 34, 34, 0.12);
  --destructive-0_15: rgba(206, 34, 34, 0.15);
  --destructive-0_2: rgba(206, 34, 34, 0.2);
  --destructive-0_22: rgba(206, 34, 34, 0.22);
  --destructive-0_25: rgba(206, 34, 34, 0.25);
  --destructive-0_3: rgba(206, 34, 34, 0.3);
  --destructive-0_32: rgba(206, 34, 34, 0.32);
  --destructive-0_35: rgba(206, 34, 34, 0.35);
  --destructive-0_4: rgba(206, 34, 34, 0.4);
  --destructive-0_6: rgba(206, 34, 34, 0.6);
  --destructive-0_7: rgba(206, 34, 34, 0.7);
  --destructive-0_92: rgba(206, 34, 34, 0.92);
  --destructive-0_95: rgba(206, 34, 34, 0.95);
  --foreground-0_3: rgba(20, 25, 36, 0.3);
  --foreground-0_9: rgba(20, 25, 36, 0.9);
  --gold-0_16: rgba(215, 119, 9, 0.16);
  --gold-0_25: rgba(215, 119, 9, 0.25);
  --gold-0_3: rgba(215, 119, 9, 0.3);
  --gold-0_32: rgba(215, 119, 9, 0.32);
  --input-0_9: rgba(220, 223, 229, 0.9);
  --muted-0_15: rgba(242, 243, 246, 0.15);
  --muted-0_2: rgba(242, 243, 246, 0.2);
  --muted-0_25: rgba(242, 243, 246, 0.25);
  --muted-0_3: rgba(242, 243, 246, 0.3);
  --muted-0_4: rgba(242, 243, 246, 0.4);
  --muted-0_45: rgba(242, 243, 246, 0.45);
  --muted-0_5: rgba(242, 243, 246, 0.5);
  --muted-0_55: rgba(242, 243, 246, 0.55);
  --muted-0_6: rgba(242, 243, 246, 0.6);
  --muted-0_7: rgba(242, 243, 246, 0.7);
  --muted-foreground-0_15: rgba(97, 104, 117, 0.15);
  --muted-foreground-0_18: rgba(97, 104, 117, 0.18);
  --muted-foreground-0_22: rgba(97, 104, 117, 0.22);
  --muted-foreground-0_3: rgba(97, 104, 117, 0.3);
  --muted-foreground-0_34: rgba(97, 104, 117, 0.34);
  --muted-foreground-0_35: rgba(97, 104, 117, 0.35);
  --muted-foreground-0_38: rgba(97, 104, 117, 0.38);
  --muted-foreground-0_5: rgba(97, 104, 117, 0.5);
  --muted-foreground-0_55: rgba(97, 104, 117, 0.55);
  --muted-foreground-0_6: rgba(97, 104, 117, 0.6);
  --muted-foreground-0_7: rgba(97, 104, 117, 0.7);
  --muted-foreground-0_75: rgba(97, 104, 117, 0.75);
  --overlay-0_03: rgba(20, 25, 36, 0.03);
  --overlay-0_4: rgba(20, 25, 36, 0.4);
  --overlay-0_45: rgba(20, 25, 36, 0.45);
  --overlay-0_55: rgba(20, 25, 36, 0.55);
  --secondary-0_3: rgba(242, 243, 246, 0.3);
  --secondary-0_85: rgba(242, 243, 246, 0.85);
  --secondary-0_9: rgba(242, 243, 246, 0.9);
  --shadow-color-0_03: rgba(20, 25, 36, 0.03);
  --shadow-color-0_04: rgba(20, 25, 36, 0.04);
  --shadow-color-0_05: rgba(20, 25, 36, 0.05);
  --shadow-color-0_06: rgba(20, 25, 36, 0.06);
  --shadow-color-0_08: rgba(20, 25, 36, 0.08);
  --shadow-color-0_1: rgba(20, 25, 36, 0.1);
  --shadow-color-0_10: rgba(20, 25, 36, 0.1);
  --shadow-color-0_12: rgba(20, 25, 36, 0.12);
  --shadow-color-0_15: rgba(20, 25, 36, 0.15);
  --shadow-color-0_18: rgba(20, 25, 36, 0.18);
  --shadow-color-0_5: rgba(20, 25, 36, 0.5);
  --success-0_05: rgba(44, 140, 95, 0.05);
  --success-0_08: rgba(44, 140, 95, 0.08);
  --success-0_1: rgba(44, 140, 95, 0.1);
  --success-0_12: rgba(44, 140, 95, 0.12);
  --success-0_15: rgba(44, 140, 95, 0.15);
  --success-0_25: rgba(44, 140, 95, 0.25);
  --success-0_35: rgba(44, 140, 95, 0.35);
  --success-0_4: rgba(44, 140, 95, 0.4);
  --success-0_6: rgba(44, 140, 95, 0.6);
  --success-0_7: rgba(44, 140, 95, 0.7);
  --success-0_92: rgba(44, 140, 95, 0.92);
  --success-0_95: rgba(44, 140, 95, 0.95);
  --warning-0_08: rgba(203, 114, 11, 0.08);
  --warning-0_1: rgba(203, 114, 11, 0.1);
  --warning-0_12: rgba(203, 114, 11, 0.12);
  --warning-0_14: rgba(203, 114, 11, 0.14);
  --warning-0_15: rgba(203, 114, 11, 0.15);
  --warning-0_30: rgba(203, 114, 11, 0.3);
  --warning-0_4: rgba(203, 114, 11, 0.4);
  --warning-0_6: rgba(203, 114, 11, 0.6);
  --white-0: rgba(255, 255, 255, 0);
  --white-0_04: rgba(255, 255, 255, 0.04);
  --white-0_05: rgba(255, 255, 255, 0.05);
  --white-0_06: rgba(255, 255, 255, 0.06);
  --white-0_07: rgba(255, 255, 255, 0.07);
  --white-0_08: rgba(255, 255, 255, 0.08);
  --white-0_1: rgba(255, 255, 255, 0.1);
  --white-0_12: rgba(255, 255, 255, 0.12);
  --white-0_14: rgba(255, 255, 255, 0.14);
  --white-0_15: rgba(255, 255, 255, 0.15);
  --white-0_18: rgba(255, 255, 255, 0.18);
  --white-0_2: rgba(255, 255, 255, 0.2);
  --white-0_22: rgba(255, 255, 255, 0.22);
  --white-0_25: rgba(255, 255, 255, 0.25);
  --white-0_3: rgba(255, 255, 255, 0.3);
  --white-0_35: rgba(255, 255, 255, 0.35);
  --white-0_4: rgba(255, 255, 255, 0.4);
  --white-0_45: rgba(255, 255, 255, 0.45);
  --white-0_5: rgba(255, 255, 255, 0.5);
  --white-0_6: rgba(255, 255, 255, 0.6);
  --white-0_7: rgba(255, 255, 255, 0.7);
  --white-0_85: rgba(255, 255, 255, 0.85);
  --white-_35: rgba(255, 255, 255, 0.35);
}
[data-theme="dark"] {
  --accent-0_3: rgba(31, 36, 46, 0.3);
  --accent-0_5: rgba(31, 36, 46, 0.5);
  --background-0_7: rgba(11, 14, 19, 0.7);
  --border-0_2: rgba(40, 46, 57, 0.2);
  --border-0_25: rgba(40, 46, 57, 0.25);
  --border-0_3: rgba(40, 46, 57, 0.3);
  --border-0_35: rgba(40, 46, 57, 0.35);
  --border-0_4: rgba(40, 46, 57, 0.4);
  --border-0_5: rgba(40, 46, 57, 0.5);
  --border-0_6: rgba(40, 46, 57, 0.6);
  --border-0_7: rgba(40, 46, 57, 0.7);
  --border-0_8: rgba(40, 46, 57, 0.8);
  --border-0_9: rgba(40, 46, 57, 0.9);
  --card-0_85: rgba(18, 21, 28, 0.85);
  --card-0_88: rgba(18, 21, 28, 0.88);
  --card-0_92: rgba(18, 21, 28, 0.92);
  --destructive-0: rgba(223, 73, 73, 0);
  --destructive-0_02: rgba(223, 73, 73, 0.02);
  --destructive-0_05: rgba(223, 73, 73, 0.05);
  --destructive-0_08: rgba(223, 73, 73, 0.08);
  --destructive-0_1: rgba(223, 73, 73, 0.1);
  --destructive-0_12: rgba(223, 73, 73, 0.12);
  --destructive-0_15: rgba(223, 73, 73, 0.15);
  --destructive-0_2: rgba(223, 73, 73, 0.2);
  --destructive-0_22: rgba(223, 73, 73, 0.22);
  --destructive-0_25: rgba(223, 73, 73, 0.25);
  --destructive-0_3: rgba(223, 73, 73, 0.3);
  --destructive-0_32: rgba(223, 73, 73, 0.32);
  --destructive-0_35: rgba(223, 73, 73, 0.35);
  --destructive-0_4: rgba(223, 73, 73, 0.4);
  --destructive-0_6: rgba(223, 73, 73, 0.6);
  --destructive-0_7: rgba(223, 73, 73, 0.7);
  --destructive-0_92: rgba(223, 73, 73, 0.92);
  --destructive-0_95: rgba(223, 73, 73, 0.95);
  --foreground-0_3: rgba(236, 239, 243, 0.3);
  --foreground-0_9: rgba(236, 239, 243, 0.9);
  --gold-0_16: rgba(246, 174, 49, 0.16);
  --gold-0_25: rgba(246, 174, 49, 0.25);
  --gold-0_3: rgba(246, 174, 49, 0.3);
  --gold-0_32: rgba(246, 174, 49, 0.32);
  --input-0_9: rgba(40, 46, 57, 0.9);
  --muted-0_15: rgba(31, 36, 46, 0.15);
  --muted-0_2: rgba(31, 36, 46, 0.2);
  --muted-0_25: rgba(31, 36, 46, 0.25);
  --muted-0_3: rgba(31, 36, 46, 0.3);
  --muted-0_4: rgba(31, 36, 46, 0.4);
  --muted-0_45: rgba(31, 36, 46, 0.45);
  --muted-0_5: rgba(31, 36, 46, 0.5);
  --muted-0_55: rgba(31, 36, 46, 0.55);
  --muted-0_6: rgba(31, 36, 46, 0.6);
  --muted-0_7: rgba(31, 36, 46, 0.7);
  --muted-foreground-0_15: rgba(143, 156, 174, 0.15);
  --muted-foreground-0_18: rgba(143, 156, 174, 0.18);
  --muted-foreground-0_22: rgba(143, 156, 174, 0.22);
  --muted-foreground-0_3: rgba(143, 156, 174, 0.3);
  --muted-foreground-0_34: rgba(143, 156, 174, 0.34);
  --muted-foreground-0_35: rgba(143, 156, 174, 0.35);
  --muted-foreground-0_38: rgba(143, 156, 174, 0.38);
  --muted-foreground-0_5: rgba(143, 156, 174, 0.5);
  --muted-foreground-0_55: rgba(143, 156, 174, 0.55);
  --muted-foreground-0_6: rgba(143, 156, 174, 0.6);
  --muted-foreground-0_7: rgba(143, 156, 174, 0.7);
  --muted-foreground-0_75: rgba(143, 156, 174, 0.75);
  --overlay-0_03: rgba(0, 0, 0, 0.03);
  --overlay-0_4: rgba(0, 0, 0, 0.4);
  --overlay-0_45: rgba(0, 0, 0, 0.45);
  --overlay-0_55: rgba(0, 0, 0, 0.55);
  --primary-0_025: rgba(70, 138, 246, 0.025);
  --primary-0_03: rgba(70, 138, 246, 0.03);
  --primary-0_04: rgba(70, 138, 246, 0.04);
  --primary-0_045: rgba(70, 138, 246, 0.045);
  --primary-0_05: rgba(70, 138, 246, 0.05);
  --primary-0_06: rgba(70, 138, 246, 0.06);
  --primary-0_07: rgba(70, 138, 246, 0.07);
  --primary-0_08: rgba(70, 138, 246, 0.08);
  --primary-0_1: rgba(70, 138, 246, 0.1);
  --primary-0_10: rgba(70, 138, 246, 0.1);
  --primary-0_12: rgba(70, 138, 246, 0.12);
  --primary-0_14: rgba(70, 138, 246, 0.14);
  --primary-0_15: rgba(70, 138, 246, 0.15);
  --primary-0_16: rgba(70, 138, 246, 0.16);
  --primary-0_18: rgba(70, 138, 246, 0.18);
  --primary-0_2: rgba(70, 138, 246, 0.2);
  --primary-0_22: rgba(70, 138, 246, 0.22);
  --primary-0_25: rgba(70, 138, 246, 0.25);
  --primary-0_28: rgba(70, 138, 246, 0.28);
  --primary-0_3: rgba(70, 138, 246, 0.3);
  --primary-0_35: rgba(70, 138, 246, 0.35);
  --primary-0_38: rgba(70, 138, 246, 0.38);
  --primary-0_4: rgba(70, 138, 246, 0.4);
  --primary-0_45: rgba(70, 138, 246, 0.45);
  --primary-0_5: rgba(70, 138, 246, 0.5);
  --primary-0_55: rgba(70, 138, 246, 0.55);
  --primary-0_6: rgba(70, 138, 246, 0.6);
  --primary-0_7: rgba(70, 138, 246, 0.7);
  --primary-0_75: rgba(70, 138, 246, 0.75);
  --primary-0_9: rgba(70, 138, 246, 0.9);
  --primary-0_92: rgba(70, 138, 246, 0.92);
  --primary-0_95: rgba(70, 138, 246, 0.95);
  --ring-0_12: rgba(70, 138, 246, 0.12);
  --ring-0_14: rgba(70, 138, 246, 0.14);
  --ring-0_15: rgba(70, 138, 246, 0.15);
  --ring-0_22: rgba(70, 138, 246, 0.22);
  --ring-0_32: rgba(70, 138, 246, 0.32);
  --secondary-0_3: rgba(31, 36, 46, 0.3);
  --secondary-0_85: rgba(31, 36, 46, 0.85);
  --secondary-0_9: rgba(31, 36, 46, 0.9);
  --shadow-color-0_03: rgba(0, 0, 0, 0.03);
  --shadow-color-0_04: rgba(0, 0, 0, 0.04);
  --shadow-color-0_05: rgba(0, 0, 0, 0.05);
  --shadow-color-0_06: rgba(0, 0, 0, 0.06);
  --shadow-color-0_08: rgba(0, 0, 0, 0.08);
  --shadow-color-0_1: rgba(0, 0, 0, 0.1);
  --shadow-color-0_10: rgba(0, 0, 0, 0.1);
  --shadow-color-0_12: rgba(0, 0, 0, 0.12);
  --shadow-color-0_15: rgba(0, 0, 0, 0.15);
  --shadow-color-0_18: rgba(0, 0, 0, 0.18);
  --shadow-color-0_5: rgba(0, 0, 0, 0.5);
  --success-0_05: rgba(85, 195, 144, 0.05);
  --success-0_08: rgba(85, 195, 144, 0.08);
  --success-0_1: rgba(85, 195, 144, 0.1);
  --success-0_12: rgba(85, 195, 144, 0.12);
  --success-0_15: rgba(85, 195, 144, 0.15);
  --success-0_25: rgba(85, 195, 144, 0.25);
  --success-0_35: rgba(85, 195, 144, 0.35);
  --success-0_4: rgba(85, 195, 144, 0.4);
  --success-0_6: rgba(85, 195, 144, 0.6);
  --success-0_7: rgba(85, 195, 144, 0.7);
  --success-0_92: rgba(85, 195, 144, 0.92);
  --success-0_95: rgba(85, 195, 144, 0.95);
  --warning-0_08: rgba(246, 174, 49, 0.08);
  --warning-0_1: rgba(246, 174, 49, 0.1);
  --warning-0_12: rgba(246, 174, 49, 0.12);
  --warning-0_14: rgba(246, 174, 49, 0.14);
  --warning-0_15: rgba(246, 174, 49, 0.15);
  --warning-0_30: rgba(246, 174, 49, 0.3);
  --warning-0_4: rgba(246, 174, 49, 0.4);
  --warning-0_6: rgba(246, 174, 49, 0.6);
  --white-0: rgba(249, 250, 251, 0);
  --white-0_04: rgba(249, 250, 251, 0.04);
  --white-0_05: rgba(249, 250, 251, 0.05);
  --white-0_06: rgba(249, 250, 251, 0.06);
  --white-0_07: rgba(249, 250, 251, 0.07);
  --white-0_08: rgba(249, 250, 251, 0.08);
  --white-0_1: rgba(249, 250, 251, 0.1);
  --white-0_12: rgba(249, 250, 251, 0.12);
  --white-0_14: rgba(249, 250, 251, 0.14);
  --white-0_15: rgba(249, 250, 251, 0.15);
  --white-0_18: rgba(249, 250, 251, 0.18);
  --white-0_2: rgba(249, 250, 251, 0.2);
  --white-0_22: rgba(249, 250, 251, 0.22);
  --white-0_25: rgba(249, 250, 251, 0.25);
  --white-0_3: rgba(249, 250, 251, 0.3);
  --white-0_35: rgba(249, 250, 251, 0.35);
  --white-0_4: rgba(249, 250, 251, 0.4);
  --white-0_45: rgba(249, 250, 251, 0.45);
  --white-0_5: rgba(249, 250, 251, 0.5);
  --white-0_6: rgba(249, 250, 251, 0.6);
  --white-0_7: rgba(249, 250, 251, 0.7);
  --white-0_85: rgba(249, 250, 251, 0.85);
  --white-_35: rgba(249, 250, 251, 0.35);
}
/* ==== alpha 预编译 END ==== */

/* ==== solid 预编译 BEGIN（脚本生成，勿手改）==== */
/* 用途：把 hsl(var(--x)) 预编译成固定 rgb，供不支持 hsl() 内变量插值的旧内核兜底。
   用法 var(--x-solid, rgb(...))。 */
:root {
  --accent-solid: rgb(242, 243, 246);
  --accent-foreground-solid: rgb(20, 25, 36);
  --background-solid: rgb(249, 250, 251);
  --black-solid: rgb(14, 18, 27);
  --border-solid: rgb(220, 223, 229);
  --card-solid: rgb(253, 254, 254);
  --card-foreground-solid: rgb(20, 25, 36);
  --destructive-solid: rgb(206, 34, 34);
  --destructive-foreground-solid: rgb(255, 255, 255);
  --foreground-solid: rgb(20, 25, 36);
  --gold-solid: rgb(215, 119, 9);
  --gold-ink-solid: rgb(160, 77, 14);
  --input-solid: rgb(220, 223, 229);
  --muted-solid: rgb(242, 243, 246);
  --muted-foreground-solid: rgb(97, 104, 117);
  --primary-solid: rgb(43, 101, 238);
  --primary-foreground-solid: rgb(255, 255, 255);
  --primary-ink-solid: rgb(39, 74, 155);
  --ring-solid: rgb(43, 101, 238);
  --secondary-solid: rgb(242, 243, 246);
  --secondary-foreground-solid: rgb(20, 25, 36);
  --success-solid: rgb(44, 140, 95);
  --warning-solid: rgb(203, 114, 11);
  --white-solid: rgb(255, 255, 255);
}
[data-theme="dark"] {
  --accent-solid: rgb(31, 36, 46);
  --accent-foreground-solid: rgb(236, 239, 243);
  --background-solid: rgb(11, 14, 19);
  --black-solid: rgb(7, 9, 13);
  --border-solid: rgb(40, 46, 57);
  --card-solid: rgb(18, 21, 28);
  --card-foreground-solid: rgb(236, 239, 243);
  --destructive-solid: rgb(223, 73, 73);
  --destructive-foreground-solid: rgb(14, 18, 27);
  --foreground-solid: rgb(236, 239, 243);
  --gold-solid: rgb(246, 174, 49);
  --gold-ink-solid: rgb(249, 201, 118);
  --input-solid: rgb(40, 46, 57);
  --muted-solid: rgb(31, 36, 46);
  --muted-foreground-solid: rgb(143, 156, 174);
  --primary-solid: rgb(70, 138, 246);
  --primary-foreground-solid: rgb(14, 18, 27);
  --primary-ink-solid: rgb(128, 175, 249);
  --ring-solid: rgb(70, 138, 246);
  --secondary-solid: rgb(31, 36, 46);
  --secondary-foreground-solid: rgb(236, 239, 243);
  --success-solid: rgb(85, 195, 144);
  --warning-solid: rgb(246, 174, 49);
  --white-solid: rgb(249, 250, 251);
}
/* ==== solid 预编译 END ==== */

/* ================================================================
   断点约定（CSS 无法变量化 media query，此处仅作文档）
   ----------------------------------------------------------------
   xs  ≤380px   超小屏手机
   sm  ≤480px   小屏手机
   md  ≤640px   大屏手机 —— 模态转底部动作面板
   lg  ≤768px   平板竖屏 / 大屏手机横屏 —— 后台侧栏转抽屉
   xl  ≤1024px  平板横屏 —— 后台侧栏收窄
   2xl ≤1280px  小笔电 —— 栅格降列
   ================================================================ */
