/* =====================================================================
 * Web UI · Design Tokens
 * ---------------------------------------------------------------------
 * 视觉契约的唯一事实源。颜色 / 圆角 / 阴影 / 字体 / 间距档位只在此处定义。
 * 业务样式一律引用 var(--xxx),禁止硬编码具体值。
 *
 * 主色板说明:Web 主色沿用原本紫色色板硬编码(web-ui-unify spec 2026-10-02
 * 用户决策),**不**接入 tenant theme --brand-primary。--brand-primary
 * 仅由 _Layout.cshtml 注入,用于头部 slogan 文字色与 customCss 注入位。
 *
 * 结构与 Edge 项目 css/tokens.css 同构(两项目共用 docs/ui-tokens.md 契约,
 * 但各自实现、各自色板)。
 * ===================================================================== */

@import url('../fonts/fonts.css');

:root {
  /* ---------- 主色板(硬编码保留,不 token 化) ---------- */
  --primary-deep: #4338CA;
  --primary-main: #5B4FCF;
  --primary-bright: #7C3AED;
  --primary-accent: #8B5CF6;
  --primary-dark: #4338CA;
  --primary-light: #A78BFA;

  /* v2 旗舰版(2026-10-13):紫色色板明度延伸,用于登录页 hero / dashboard 暗面。
     与 v1 主色板同色相,不改变品牌色。详见 docs/web/redesign-preview/design-spec.md §2.1 */
  --primary-electric:   #6E4DFF;  /* 旗舰展示色:hero 节点、按钮高光 */
  --primary-deep-night: #0F0824;  /* 深面:hero 背景、暗色 widget */
  --primary-twilight:   #1B1240;  /* 中间过渡:渐变中段 */

  /* 单一纯色,不铺多色渐变(反 AI 味)。
     ⚠️ 2026-11-02 修复:此前 .text-gradient 引用 var(--primary-gradient),
     但本仓 :root 从未定义该 token ⇒ 整条规则静默失效(AGENTS「CSS 变量未定义
     导致样式失效」教训)。此处补齐为纯色,与 Edge tokens.css 同构。 */
  --primary-gradient: var(--primary-main);

  /* ---------- 语义色(中性,不与主色板联动) ----------
     ⚠️ 2026-11-02 单色相收敛:success 88°→142°(消除黄绿),warning/danger/info
     同步换到各自色相的 600 实心档(白字对比度达标)。详见
     docs/web/round2-button-color-contract.md §2.1。 */
  --color-success: #16a34a;
  --color-warning: #d97706;
  --color-danger:  #dc2626;
  --color-info:    #0891b2;

  /* ---------- 语义色·深色档(浅底上的文字) ----------
     --color-* 是**实心色**,只用于图标底纹块 / 实心按钮 / 进度条填充。
     直接放到浅底上当文字用对比度不足 ⇒ 浅底载体(状态徽章 / 提示条 /
     解读条目)一律用这一档。
     ⚠️ 2026-11-02 补齐:Web 此前没有这套档位,导致状态色只能硬编码 hex。 */
  --text-success: #15803d;
  --text-warning: #b45309;
  --text-danger:  #b91c1c;
  --text-info:    #0e7490;

  /* ---------- 语义色·描边档(浅底上的边框) ----------
     用 --surface-* 当描边色会与底色同色 ⇒ 边框等于看不见。 */
  --border-success: #bbf7d0;
  --border-warning: #fde68a;
  --border-danger:  #fecaca;
  --border-info:    #a5f3fc;

  /* ---------- 基础黑白 ---------- */
  --color-black: #000000;
  --color-white: #FFFFFF;

  /* ---------- 表面 ---------- */
  --surface-card: #FFFFFF;
  --surface-elevated: #FAFBFC;
  --surface-sunken: #F1F5F9;
  --surface-page: #F8FAFC;

  /* ---------- 状态浅底(tint) ----------
     供 badge / 提示条 / 状态行做"淡色底 + 深色字"。
     底色只负责承载体量;落在这些底色上的文字走上面的 --text-* 深色档,
     边框走 --border-* 描边档。 */
  --surface-primary: #EDE9FE;
  --surface-success: #f0fdf4;
  --surface-warning: #fffbeb;
  --surface-danger:  #fef2f2;
  --surface-info:    #ecfeff;

  /* ---- 接管 Bootstrap 语义色系列(本地 token 是唯一事实源) ----
   背景:wwwroot/css/** 未定义 .bg-success/.text-success/.badge.bg-success,
   这些类全部继承自 Bootstrap 5.3.3 的 --bs-success(#198754) ⇒ 与本地
   --text-success(#15803d) 并排出现时用户看到的是两种绿。
   在此重绑 ⇒ 全站绿色徽章/提示条一处统一,且不改任何 .cshtml。

   ⚠️ 2026-11-02 一并接管 --bs-primary:Bootstrap 主色是蓝(#0d6efd),
   而本项目主色是紫(--primary-main #5B4FCF)。此前 .text-primary /
   .bg-primary / .modal-header.bg-primary 全是那一块蓝 —— 紫色页面里
   冒出的第 5 个色相,也是各页面用「页面级覆盖」去压它的根因
   (如 Projects.css 的 .stat-box .text-primary)。
   接管后全站主色只剩一档,且页面级覆盖可以删除。 */
  --bs-success-rgb: 22, 163, 74;
  --bs-success: #16a34a;
  --bs-success-bg-subtle: #f0fdf4;
  --bs-success-border-subtle: #bbf7d0;
  --bs-success-border: #bbf7d0;
  --bs-success-text-emphasis: #15803d;
  --bs-warning-rgb: 217, 119, 6;
  --bs-warning: #d97706;
  --bs-warning-bg-subtle: #fffbeb;
  --bs-warning-border-subtle: #fde68a;
  --bs-warning-border: #fde68a;
  --bs-warning-text-emphasis: #b45309;
  --bs-danger-rgb: 220, 38, 38;
  --bs-danger: #dc2626;
  --bs-danger-bg-subtle: #fef2f2;
  --bs-danger-border-subtle: #fecaca;
  --bs-danger-border: #fecaca;
  --bs-danger-text-emphasis: #b91c1c;
  --bs-info-rgb: 8, 145, 178;
  --bs-info: #0891b2;
  --bs-info-bg-subtle: #ecfeff;
  --bs-info-border-subtle: #a5f3fc;
  --bs-info-border: #a5f3fc;
  --bs-info-text-emphasis: #0e7490;

  /* 主色接管:Bootstrap 蓝 → 本项目紫(见上方说明) */
  --bs-primary-rgb: 91, 79, 207;
  --bs-primary: #5B4FCF;
  --bs-primary-bg-subtle: var(--surface-primary);
  --bs-primary-border-subtle: var(--primary-light);
  --bs-primary-text-emphasis: var(--primary-deep);

  /* ---------- 文字 ---------- */
  --text-heading: #0F172A;
  /* ⚠️ 2026-11-02 补齐:此前 .table thead th / .section-title 引用
     var(--text-primary),但 :root 从未定义 ⇒ 颜色声明静默失效。 */
  --text-primary: #1a1a2e;
  --text-body: #334155;
  --text-secondary: #4a4a6a;
  --text-muted: #64748B;

  /* ---------- 边框 ---------- */
  --border-default: #E2E8F0;
  --border-subtle: #E2E8F0;
  --border-accent: #CBD5E1;

  /* ---------- 阴影(业务侧仅两档) ----------
     --shadow-hero 是登录页 v2 旗舰版专用(1 处),显式豁免,
     业务页面 SHALL NOT 引用(见 docs/web/UI规范.md §2.4)。 */
  --shadow-sm:   0 1px 2px rgba(0, 0, 0, 0.05);
  --shadow-md:   0 2px 4px rgba(0, 0, 0, 0.08);
  --shadow-hero: 0 24px 48px -12px rgba(91, 79, 207, 0.25);

  /* ---------- 圆角(业务侧仅三档) ----------
     --radius-xl / --radius-2xl 是登录页 v2 旗舰版专用(2 处),显式豁免。 */
  --radius-sm:   4px;
  --radius-md:   6px;
  --radius-lg:   8px;
  --radius-xl:   12px;  /* 登录页豁免:登录卡 */
  --radius-2xl:  20px;  /* 登录页豁免:hero 容器 */

  /* ---------- 动效(v2 全新,见 design-spec.md §2.5) ----------
     pulse / 数据流时长 2026-10-13 多轮调整,最终落在 1Hz 心跳节奏:
     stagger 只播一次入场,pulse 持续 1Hz 闪烁提供"系统在运行"的视觉信号。 */
  --motion-fast:  150ms;
  --motion-base:  250ms;
  --motion-slow:  400ms;
  --motion-pulse: 1000ms;
  --ease-out:      cubic-bezier(0.25, 0.46, 0.45, 0.94);
  --ease-in-out:   cubic-bezier(0.4, 0, 0.2, 1);
  --ease-spring:   cubic-bezier(0.34, 1.56, 0.64, 1);
  --ease-emphasis: cubic-bezier(0.2, 0, 0, 1);

  /* ---------- 过渡 ---------- */
  --transition-fast: 0.15s ease;
  --transition-smooth: 0.25s ease;
  --transition-bounce: 0.3s ease;

  /* ---------- 间距节奏 ---------- */
  --space-page: 24px;
  --space-card: 16px 20px;
  --space-block: 24px;

  /* ---------- 控件尺寸 ---------- */
  /* 表单控件的统一高度(= 实测 .form-control 盒高 42px:
     padding 10px 上下 + 14px 字号行高)。
     ⚠️ 2026-11-02(第三轮)新增:此前 Bootstrap 的 .btn 只有 36px
     (padding .375rem 上下),而 .form-control 是 42px ⇒ 同一行里
     按钮与输入框上下边缘错位(实拍:命令下发页按钮比下拉框低 16px)。
     统一由本 token 承载,components.css 的筛选区控件与按钮都引它,
     避免两处各写死数值。 */
  --control-height: 42px;

  /* 紧凑筛选面板(.filter-panel)的控件高度:padding 6px 上下 + 13px 字号
     ⇒ 实测约 33.5px,取 34px。
     ⚠️ 必须与 --control-height 分档:紧凑面板是**刻意做密**的过滤区
     (13px 字号),套 42px 会让它们整体长高 25%,属未经用户要求的连带改动。 */
  --control-height-compact: 34px;

  /* ---------- 字体族 ---------- */
  --font-body: 'DM Sans', -apple-system, BlinkMacSystemFont, sans-serif;
  --font-heading: 'Plus Jakarta Sans', sans-serif;
  --font-mono: 'JetBrains Mono', monospace;
}
