/* ============================================================
   设计令牌 Design Tokens · 唯一真源（Single Source of Truth）
   ------------------------------------------------------------
   整个界面的「颜色 / 字号 / 间距 / 圆角 / 阴影 / 动效」全部出自这里。
   组件库 components.css 只引用令牌、不写死数值；
   以后要换配色、调密度、加暗色模式，只改这一个文件。

   命名约定
     ① 原始色    --c-<色名>-<档位>   例 --c-blue-600
     ② 语义色    --c-<用途>          例 --c-brand / --c-text-2
     ③ 兼容别名  --<旧变量名>         例 --pri / --bg
   ⚠ ③ 是给旧样式表（admin.css）用的，它里面 40+ 处直接引用旧变量名，
     删掉别名会让老规则失真 —— 所以只允许「保留」，不允许「清理」。
   ============================================================ */
:root{
  /* ================= ① 原始色板 ================= */
  --c-white:#ffffff;
  --c-page:#e9edf4;

  --c-blue-25:#f7faff;
  --c-blue-50:#f5f9ff;
  --c-blue-500:#2563eb;
  --c-blue-600:#1d4ed8;
  --c-blue-rgb:47,107,255;      /* 品牌点缀的 RGB 分量（透明度阶梯用） */
  --c-cyan-rgb:14,165,233;

  --c-ink-900:#0f172a;
  --c-ink-700:#33405a;
  --c-ink-500:#5a6675;
  --c-ink-400:#64748b;
  --c-ink-300:#9aa7b8;

  --c-gray-25:#fcfdff;
  --c-gray-50:#f8fafc;
  --c-gray-75:#f7f9fc;
  --c-gray-100:#f2f5fa;
  --c-gray-150:#eef2f7;
  --c-gray-175:#eef2f8;
  --c-gray-200:#e4e9f1;
  --c-gray-250:#e8edf5;
  --c-gray-300:#d9e0ea;
  --c-gray-350:#cdd6e3;
  --c-gray-400:#cfd8e6;
  --c-topbar-2:#f9fbfe;

  --c-red-500:#c22545;
  --c-red-600:#be123c;
  --c-red-700:#b01d3e;
  --c-green-600:#16a34a;
  --c-green-700:#15803d;
  --c-green-800:#166534;
  --c-amber-600:#b45309;
  --c-amber-soft:#fff8ef;

  /* ================= ② 语义色 ================= */
  /* 品牌 */
  --c-brand:var(--c-blue-500);
  --c-brand-strong:var(--c-blue-600);
  --c-brand-soft:rgba(47,107,255,.10);         /* 选中态 / 浅底 */
  --c-brand-hover:rgba(37,99,235,.08);         /* 悬停浅底 */
  --c-brand-ghost:rgba(47,107,255,.12);        /* 幽灵态浅底 */
  --c-brand-halo:rgba(47,107,255,.08);         /* 选中卡外发光 */
  --c-brand-ring:rgba(47,107,255,.22);         /* 主按钮投影 */
  --c-brand-line-soft:rgba(47,107,255,.24);    /* 描边·弱 */
  --c-brand-line:rgba(47,107,255,.36);         /* 描边·常规 */
  --c-brand-line-mid:rgba(47,107,255,.34);
  --c-brand-line-strong:rgba(47,107,255,.45);  /* 描边·聚焦 */
  --c-brand-sel:rgba(47,107,255,.16);          /* 文本选区 */
  --glow-brand:rgba(47,107,255,.09);           /* 页面光晕 1 */
  --glow-cyan:rgba(14,165,233,.07);            /* 页面光晕 2 */

  /* 文本（对比度均 ≥ 4.5，符合 WCAG AA） */
  --c-text:var(--c-ink-900);        /* 正文          21:1 */
  --c-text-strong:var(--c-ink-700); /* 字段标题 */
  --c-text-2:var(--c-ink-500);      /* 次要文字      ~7:1 */
  --c-text-3:var(--c-ink-400);      /* 说明/日期     4.85:1 */
  --c-text-4:var(--c-ink-300);      /* 仅占位符 */

  /* 面 */
  --c-bg:var(--c-page);
  --c-surface:var(--c-white);          /* 卡片 / 面板 */
  --c-surface-2:var(--c-gray-50);      /* 表头 / 隔行 */
  --c-surface-3:var(--c-gray-75);      /* 搜索框 / 预览底 */
  --c-fill:var(--c-gray-100);          /* 标签底 */
  --c-field:var(--c-gray-25);          /* 表单字段底 */
  --c-row-alt:#fbfcfe;                 /* 隔行浅底 */
  --c-row-hover:var(--c-blue-25);      /* 表格行悬停 */
  --c-row-hover-2:var(--c-blue-50);
  --c-topbar-end:var(--c-topbar-2);    /* 顶栏渐变末端 */
  --c-close-hover:var(--c-gray-250);
  --c-mini-hover:var(--c-gray-175);
  --c-scrollbar:var(--c-gray-400);

  /* 描边 */
  --c-border:var(--c-gray-200);
  --c-border-soft:var(--c-gray-150);
  --c-border-strong:var(--c-gray-300);
  --c-border-hover:var(--c-gray-350);

  /* 状态：危险 */
  --c-danger:var(--c-red-500);
  --c-danger-2:var(--c-red-600);
  --c-danger-strong:var(--c-red-700);
  --c-danger-bg:rgba(220,47,69,.08);
  --c-danger-soft:rgba(220,47,69,.10);
  --c-danger-fill:rgba(220,47,69,.14);
  --c-danger-line:rgba(220,47,69,.24);
  --c-danger-line-strong:rgba(220,47,69,.4);
  /* 状态：成功 */
  --c-ok:var(--c-green-600);
  --c-ok-2:var(--c-green-700);
  --c-ok-3:var(--c-green-800);
  --c-ok-bg:rgba(22,163,74,.10);
  --c-ok-line:rgba(22,163,74,.24);
  /* 状态：警告 */
  --c-warn:var(--c-amber-600);
  --c-warn-bg:rgba(217,119,6,.10);
  --c-warn-line:rgba(217,119,6,.26);
  --c-warn-line-soft:rgba(217,119,6,.24);
  --c-warn-fill:var(--c-amber-soft);

  /* 组件层补齐（原为字面值） */
  --c-danger-line-mid:rgba(220,47,69,.26);
  --c-brand-ghost-line:rgba(47,107,255,.3);
  --c-cyan-soft:rgba(14,165,233,.10);

  /* 阴影 */
  --sh-1:0 1px 2px rgba(16,24,40,.03);
  --sh-2:0 1px 2px rgba(16,24,40,.04),0 10px 24px rgba(16,24,40,.06);
  --sh-3:0 1px 2px rgba(16,24,40,.05);
  --sh-pop:0 24px 60px rgba(16,24,40,.22);
  --sh-toast:0 14px 30px rgba(15,23,42,.18);
  --c-overlay:rgba(15,23,42,.42);

  /* 圆角 */
  --r-pill:999px;
  --r:14px;
  --r-md:12px;
  --r-sm:10px;
  --r-xs:9px;

  /* 字号 / 字重 */
  --fs-xs:11px;
  --fs-sm:12px;
  --fs-base:13px;
  --fs-md:13.5px;
  --fs-lg:15px;
  --fw-md:600;
  --fw-bold:700;
  --fw-black:800;

  /* 间距（4px 基准） */
  --sp-1:4px;
  --sp-2:8px;
  --sp-3:12px;
  --sp-4:14px;
  --sp-5:16px;
  --sp-6:18px;
  --sp-7:20px;
  --sp-8:22px;

  /* 动效 */
  --dur-fast:.16s;
  --dur:.18s;
  --dur-slow:.24s;

  /* ============ ③ 兼容别名（旧样式表在用，勿删） ============ */
  --pri:var(--c-brand);
  --pri2:var(--c-brand-strong);
  --pri-soft:var(--c-brand-soft);
  --bg:var(--c-bg);
  --panel:var(--c-surface);
  --text:var(--c-text);
  --muted:var(--c-text-2);
  --border:var(--c-border);
  --border-soft:var(--c-border-soft);
  --danger:var(--c-danger);
  --ok:var(--c-ok);
  --warn:var(--c-warn);
  /* A 主题早期使用的变量名，一并别名化 */
  --a-r:var(--r);
  --a-r-sm:var(--r-sm);
  --a-tx3:var(--c-text-3);
  --a-soft:var(--c-surface-3);
  --a-head:var(--c-surface-2);
  --a-row-hover:var(--c-row-hover);
  --a-shadow:var(--sh-2);
  --a-shadow-sm:var(--sh-3);
  --a-shadow-pop:var(--sh-pop);

  /* ============ ④ 历史色板（admin.css 原样搬进来，值一字未改） ============
     admin.css 是基础层，里面原本写死了 100 个色值；这里给它们一一建令牌，
     改这里就能改到基础层。语义色不够用时优先用 ②，别直接改这一段。 */
  /* 旧品牌紫（历史遗留；A 主题已改用 --c-brand） */
  --c-indigo-50:#eef2ff;
  --c-indigo-100:#e0e7ff;
  --c-indigo-200:#c7d2fe;
  --c-indigo-500:#6366f1;
  --c-indigo-600:#4f46e5;
  --c-indigo-700:#4338ca;
  --c-violet-500:#8b5cf6;
  /* 蓝 / 天蓝 / 青 */
  --c-blue-30:#f8faff;
  --c-blue-35:#f8fbff;
  --c-blue-100:#eff6ff;
  --c-blue-200:#bfdbfe;
  --c-blue-550:#3b82f6;
  --c-sky-100:#e0f2fe;
  --c-sky-500:#0ea5e9;
  --c-cyan-400:#22d3ee;
  /* 危险（红 / 玫红） */
  --c-red-25:#fef2f2;
  --c-red-100:#fee2e2;
  --c-red-200:#fecaca;
  --c-red-450:#ef4444;
  --c-red-550:#dc2626;
  --c-rose-25:#fff1f2;
  --c-rose-100:#ffe4e6;
  --c-rose-200:#fecdd3;
  --c-rose-400:#fb7185;
  --c-rose-600:#e11d48;
  /* 成功（绿 / 翠） */
  --c-emerald-25:#ecfdf5;
  --c-emerald-400:#34d399;
  --c-emerald-500:#10b981;
  --c-green-25:#f0fdf4;
  --c-green-100:#dcfce7;
  --c-green-200:#bbf7d0;
  /* 警告（琥珀 / 橙） */
  --c-amber-50:#fffbeb;
  --c-amber-100:#fef3c7;
  --c-amber-400:#fbbf24;
  --c-amber-500:#f59e0b;
  --c-amber-700:#d97706;
  --c-orange-50:#fff7ed;
  --c-orange-200:#fed7aa;
  --c-orange-700:#c2410c;
  /* 墨色 / 中性灰 */
  --c-ink-350:#94a3b8;
  --c-ink-360:#9ca3af;
  --c-ink-450:#6b7280;
  --c-ink-600:#475569;
  --c-ink-650:#334155;
  --c-ink-800:#1e293b;
  --c-ink-950:#111827;
  --c-ink-920:#1f2937;
  --c-ink-1000:#1d1d1f;
  --c-ink-990:#0b1220;
  /* 灰阶 */
  --c-gray-55:#fafbfc;
  --c-gray-60:#fafafa;
  --c-gray-105:#f4f6fb;
  --c-gray-110:#f5f7fb;
  --c-gray-115:#f1f4fa;
  --c-gray-120:#f3f4f6;
  --c-gray-130:#f1f5f9;
  --c-gray-160:#eef0f3;
  --c-gray-210:#e6e9f2;
  --c-gray-220:#e5e7eb;
  --c-gray-230:#e2e8f0;
  --c-gray-240:#d7dbe2;
  --c-gray-245:#dbe1ea;
  --c-gray-320:#d1d5db;
  --c-gray-330:#cbd5e1;
  /* 半透明：靛 / 蓝 / 天蓝 */
  --c-indigo-soft:rgba(79,70,229,0.1);
  --c-indigo-line:rgba(79,70,229,0.16);
  --c-indigo-shadow:rgba(79,70,229,0.22);
  --c-indigo-shadow-lg:rgba(79,70,229,0.28);
  --c-indigo-soft-2:rgba(99,102,241,0.1);
  --c-indigo-soft-3:rgba(129,140,248,0.18);
  --c-blue-soft-2:rgba(59,130,246,0.1);
  --c-blue-soft:rgba(59,130,246,0.12);
  --c-blue-800-soft:rgba(30,64,175,0.12);
  --c-sky-soft:rgba(14,165,233,0.08);
  --c-sky-soft-2:rgba(56,189,248,0.12);
  /* 半透明：墨色投影阶梯 */
  --c-ink-a03:rgba(15,23,42,0.03);
  --c-ink-a035:rgba(15,23,42,0.035);
  --c-ink-a04:rgba(15,23,42,0.04);
  --c-ink-a045:rgba(15,23,42,0.045);
  --c-ink-a05:rgba(15,23,42,0.05);
  --c-ink-a08:rgba(15,23,42,0.08);
  --c-ink-a09:rgba(15,23,42,0.09);
  --c-ink-a10:rgba(15,23,42,0.1);
  --c-ink-a16:rgba(15,23,42,0.16);
  --c-ink-a18:rgba(15,23,42,0.18);
  --c-ink-a22:rgba(15,23,42,0.22);
  --c-ink-a25:rgba(15,23,42,0.25);
  --c-ink-a45:rgba(15,23,42,0.45);
  --c-ink-a48:rgba(17,24,39,0.48);
  --c-ink-a14:rgba(30,41,59,0.14);
  /* 半透明：白 / 灰 */
  --c-white-a00:rgba(255,255,255,0);
  --c-white-a06:rgba(255,255,255,0.06);
  --c-white-a07:rgba(255,255,255,0.07);
  --c-white-a10:rgba(255,255,255,0.1);
  --c-white-a70:rgba(255,255,255,0.7);
  --c-white-a90:rgba(255,255,255,0.9);
  --c-white-a96:rgba(255,255,255,0.96);
  --c-gray-a90:rgba(226,232,240,0.9);
  --c-gray-105-a82:rgba(244,246,251,0.82);
  --c-gray-210-a90:rgba(230,233,242,0.9);
}

/* ================= 基础层（body / 选区 / 通用文本） ================= */
body{
  background:
    radial-gradient(circle at 12% -10%, var(--glow-brand), transparent 34%),
    radial-gradient(circle at 92% 0%, var(--glow-cyan), transparent 32%),
    var(--c-bg);
  color:var(--c-text);
}
::selection{background:var(--c-brand-sel)}
.muted,.sub{color:var(--c-text-2)}
.user-cell span{color:var(--c-text-3)}
