/* 个人工作台 · 设计令牌
 *
 * 方向：亮调类似色 · 终端打印 · 等宽
 *   五级紫色阶，色相在 268 → 285 → 317 之间游走（真的"类似色"，不是一支紫加一片灰）
 *   唯一字体族：等宽。唯一圆角 12px。紧凑密度。
 *   斜纹只作为摘要带顶边的一道"撕口"，全站一处。
 *
 * 改这一个文件就能换掉整站配色，别处不许写死颜色。
 * 改完必须跑：node tools/contrast.js（所有配对要 ≥4.5:1，非文本 ≥3:1） */

:root {
  /* —— 亮调：带紫的纸 */
  --bg: oklch(0.972 0.016 268);          /* 纸底 */
  --surface: oklch(0.932 0.028 274);     /* 纸暗一档 */
  --surface-2: oklch(0.902 0.034 274);
  --fg: oklch(0.245 0.045 276);          /* 墨 */
  --muted: oklch(0.470 0.055 280);       /* 次级文字（唯一的一级灰） */
  --line: oklch(0.800 0.045 278);        /* 行内发线 */
  --line-strong: oklch(0.600 0.055 280); /* 区块发线 / 控件边框，非文本 ≥3:1 */
  --accent: oklch(0.500 0.160 285);      /* 唯一强调色：当前状态 + 主行动 */
  --accent-soft: oklch(0.940 0.045 285);
  --accent-2: oklch(0.600 0.130 317);    /* 用得比强调色还少 */
  --on-accent: #ffffff;
  --danger: oklch(0.460 0.160 22);       /* 只用于报错和销毁性操作，不做状态色 */
  --shadow: 0 1px 0 var(--line-strong);

  /* —— 字体：只有一套 */
  --mono: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas,
          "Noto Sans Mono CJK SC", "Sarasa Mono SC", monospace;

  /* —— 尺寸 */
  --r: 12px;          /* 全站唯一的圆角 */
  --r-sm: 8px;
  --control-h: 38px;  /* 输入框与按钮统一高度 */
  --pad: 14px;
  --gap: 14px;
  --maxw: 940px;      /* 一页的度量：所有页面共用同一个右边界 */

  /* 五级字阶，每一级之间有明确落差，不留"13 / 13.8 / 15"这种挤在一起的中间层 */
  --step--1: 12px;                       /* 元数据 */
  --step-0: 13px;                        /* 正文 */
  --step-1: 15px;                        /* 行标题、区块标题 */
  --step-2: 20px;                        /* 强调句、空状态大标题 */
  --step-3: clamp(22px, 2.6vw, 28px);    /* 次级页标题 */
  --step-4: clamp(26px, 3.6vw, 36px);    /* 页标题 */

  --t: 140ms linear;
  color-scheme: light;
}

/* 暗调：不是把亮调取反，是"夜里印的紫纸"。
   白字压到 0.89 而不是 0.95——15:1 以上的对比读久了会累。 */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --bg: oklch(0.190 0.028 275);
    --surface: oklch(0.250 0.034 275);
    --surface-2: oklch(0.295 0.038 275);
    --fg: oklch(0.890 0.022 278);
    --muted: oklch(0.700 0.040 278);
    --line: oklch(0.400 0.040 277);
    --line-strong: oklch(0.530 0.050 278);
    --accent: oklch(0.760 0.150 288);
    --accent-soft: oklch(0.310 0.060 285);
    --accent-2: oklch(0.700 0.130 317);
    --on-accent: oklch(0.190 0.028 285);
    --danger: oklch(0.720 0.150 25);
    color-scheme: dark;
  }
}

:root[data-theme="dark"] {
  --bg: oklch(0.190 0.028 275);
  --surface: oklch(0.250 0.034 275);
  --surface-2: oklch(0.295 0.038 275);
  --fg: oklch(0.890 0.022 278);
  --muted: oklch(0.700 0.040 278);
  --line: oklch(0.400 0.040 277);
  --line-strong: oklch(0.530 0.050 278);
  --accent: oklch(0.760 0.150 288);
  --accent-soft: oklch(0.310 0.060 285);
  --accent-2: oklch(0.700 0.130 317);
  --on-accent: oklch(0.190 0.028 285);
  --danger: oklch(0.720 0.150 25);
  color-scheme: dark;
}
