/* ============================================================
   设计令牌 Design Tokens
   风格定位：专业生产力工具 —— 克制、高密度、可信赖
   视觉基调：墨绿（法规/专业可信）+ 暖金铜（强调/提示）
   ============================================================ */

:root {
  /* ---------- 品牌色：墨绿 ---------- */
  --brand-900: #0A2E27;
  --brand-800: #0E3B31;
  --brand-700: #0F4C3F;
  --brand-600: #15614F;
  --brand-500: #1C7A63;
  --brand-400: #3E9C82;
  --brand-100: #E3F0EB;
  --brand-50:  #F1F8F5;

  /* ---------- 强调色：暖金铜 ---------- */
  --accent-700: #8A6224;
  --accent-600: #B07D2B;
  --accent-500: #C89A45;
  --accent-300: #E3C98F;
  --accent-100: #F6EEDA;

  /* ---------- 中性色 ---------- */
  --ink-900: #111A17;
  --ink-800: #1E2A26;
  --ink-700: #2E3A36;
  --ink-600: #4A5651;
  --ink-500: #6B7873;
  --ink-400: #8E9A95;
  --ink-300: #B4BEB9;
  --ink-200: #D6DDD9;
  --ink-150: #E5EAE7;
  --ink-100: #EFF2F0;
  --ink-50:  #F7F9F8;
  --white:   #FFFFFF;

  /* ---------- 语义色 ---------- */
  --ok-700: #14713F;
  --ok-600: #1B8A4E;
  --ok-500: #22A05C;
  --ok-100: #E2F4EA;

  --warn-700: #8A5A0B;
  --warn-600: #B4780F;
  --warn-500: #D18F16;
  --warn-300: #EFD9A6;
  --warn-100: #FCF1DC;

  --danger-700: #8E2626;
  --danger-600: #B32C2C;
  --danger-500: #CC3A38;
  --danger-100: #FBEAEA;

  --info-700: #1E4E7A;
  --info-600: #26619A;
  --info-500: #2F76B8;
  --info-100: #E6F0F9;

  /* ---------- 排版 ---------- */
  --font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC",
               "Hiragino Sans GB", "Microsoft YaHei", "Source Han Sans SC",
               "Noto Sans CJK SC", sans-serif;
  --font-mono: "SFMono-Regular", Consolas, "Cascadia Mono", "Roboto Mono",
               "Liberation Mono", monospace;

  /* ---------- 排版：字号（严格 9 级字阶 · 2026-10-09 定） ----------
     ★ 铁律：界面里**只允许**写 `font-size: var(--fs-*)`，
       不许再出现 `font-size: 13px` 这类写死的数字（tokens.css 自己除外）。
       违例会由 `web/tools/_check-font-scale.mjs` 在回归里拦下来。
     ★ 取值口径见《字号管理制度_V1.0》：正文基准 15px 起，最小 12px 且只给角标/单位用。
     ★ 老板反馈「全站字号偏小、读着有压力」，本轮整体上调：
       原 10~11px 堆 → 12px；原 11.5~12px 堆 → 13px；原 13px 正文 → 15px。 */
  --fs-2xs:  13px;   /* ① 极小：角标 / 单位 / 上标 / 表内编号（全站最小，不得再低） */
  --fs-xs:   14px;   /* ② 辅助：说明文字 / 次级表头 / 时间戳 / 面包屑 */
  --fs-sm:   15px;   /* ③ 紧凑正文：表格单元格 / 表单辅助 / 徽标 */
  --fs-base: 16px;   /* ④ 正文基准：body 默认 / 导航 / 按钮 / 输入框 */
  --fs-md:   18px;   /* ⑤ 强调正文：卡片正文 / 关键数值 / 表头 */
  --fs-lg:   20px;   /* ⑥ 小节标题：卡片标题 / 弹窗标题 / 详情页标题 */
  --fs-xl:   24px;   /* ⑦ 区块标题：页面标题 / 大号数值 */
  --fs-2xl:  28px;   /* ⑧ 大标题：概览大数 / 报告封面 / 空态标题 */
  --fs-3xl:  36px;   /* ⑨ 视觉主数：首页巨型数字（全站仅首页允许） */

  /* 行高也一并收紧口径：正文行高走 --lh-normal，密排走 --lh-tight，
     需要像素级钉死的（如角标胶囊）才用行内 px，且不得小于同处字号。 */

  --fw-normal: 400;
  --fw-medium: 500;
  --fw-semibold: 600;
  --fw-bold: 700;

  --lh-tight: 1.25;
  --lh-normal: 1.5;
  --lh-loose: 1.7;

  /* ---------- 间距 ---------- */
  --sp-1: 4px;
  --sp-2: 6px;
  --sp-3: 8px;
  --sp-4: 12px;
  --sp-5: 16px;
  --sp-6: 20px;
  --sp-7: 24px;
  --sp-8: 32px;
  --sp-9: 40px;

  /* ---------- 圆角 ---------- */
  --r-sm: 4px;
  --r-md: 6px;
  /* 历史别名（2026-10-09 补）：早期样式里写的是 `--r-1` / `--r-2`，而令牌表里
     从来没有这两个名字 —— CSS 变量取不到值时**整条声明被丢弃**，
     所以那几处 `border-radius` 一直等于 0（等于没写）。补上别名一次修好所有旧引用。 */
  --r-1: var(--r-sm);
  --r-2: var(--r-md);
  --r-lg: 10px;
  --r-xl: 14px;
  --r-full: 999px;

  /* ---------- 阴影 ---------- */
  --sh-xs: 0 1px 1px rgba(16, 32, 27, 0.04);
  --sh-sm: 0 1px 3px rgba(16, 32, 27, 0.06), 0 1px 2px rgba(16, 32, 27, 0.04);
  --sh-md: 0 4px 14px rgba(16, 32, 27, 0.08);
  --sh-lg: 0 12px 32px rgba(16, 32, 27, 0.12);
  --sh-focus: 0 0 0 3px rgba(28, 122, 99, 0.18);

  /* ---------- 结构与密度 ---------- */
  --sidebar-w: 232px;
  --topbar-h: 56px;
  --statusbar-h: 30px;
  --row-h: 38px;
  --row-h-compact: 32px;
  --border: 1px solid var(--ink-200);
  --border-soft: 1px solid var(--ink-150);

  --t-fast: 120ms cubic-bezier(0.4, 0, 0.2, 1);
  --t-base: 200ms cubic-bezier(0.4, 0, 0.2, 1);
}

/* ---------- 密度变体 ----------
   紧凑档只压行高与内距，**不压字号**（2026-10-09 定）：
   字号一旦跟着密度走，「同一屏谁大谁小」就说不清了，老板要的是稳定可读。
   需要更小字号的场景一律走 ① 极小档（12px），不要再另开一档。 */
[data-density="compact"] {
  --row-h: 32px;
  --row-h-compact: 28px;
}
