/* ============================================================
   AUTO-GENERATED FROM 真值源 E:\WorkBuddy-Data\assets\design-tokens\tokens.json — DO NOT EDIT BY HAND. 重生成: python E:\WorkBuddy-Data\assets\design-tokens\gen-tokens.py
   真值源: E:\WorkBuddy-Data\assets\design-tokens\tokens.json （仓库外三端共用，禁手改本文件） (v1.3.0)
   三端共用：Web / Android / HarmonyOS 刻度完全一致
   ============================================================ */

:root {
  /* ---- 字号阶梯（8 级）---- */
  --fs-mini: 11px;
  --fs-caption: 12px;
  --fs-body: 13px;
  --fs-bodyLg: 14px;
  --fs-title: 16px;
  --fs-titleLg: 18px;
  --fs-display: 20px;
  --fs-hero: 24px;

  /* ---- 间距（4pt 网格 8 档）---- */
  --sp-xxs: 2px;
  --sp-xs: 4px;
  --sp-sm: 8px;
  --sp-md: 12px;
  --sp-lg: 16px;
  --sp-xl: 20px;
  --sp-xxl: 24px;
  --sp-huge: 32px;

  /* ---- 圆角 ---- */
  --radius-xxs: 4px;
  --radius-xs: 6px;
  --radius-sm: 8px;
  --radius-md: 10px;
  --radius-lg: 12px;
  --radius-xl: 16px;
  --radius-xxl: 20px;
  --radius-full: 999px;
  --radius: var(--radius-xl);  /* 默认档 = 16px，兼容历史引用（v2.4.65 重排后 md 已变为 10px）*/

  /* ---- 控件高度 ---- */
  --ctl-primary: 48px;
  --ctl-secondary: 44px;
  --ctl-inline: 40px;
  --ctl-touch: 48px;
  --ctl-input: 56px;

  /* ---- 控件高度 · Web 桌面专属紧凑档（仅 Web 输出）---- */
  --ctl-web-xs: 28px;
  --ctl-web-sm: 30px;
  --ctl-web-md: 32px;
  --ctl-web-lg: 36px;
  --ctl-web-xl: 38px;

  /* ---- 行高（倍数）---- */
  --lh-tight: 1.25;
  --lh-normal: 1.5;
  --lh-relaxed: 1.7;
  --lh-loose: 1.9;

  /* ---- 字重（三端同源）---- */
  --fw-regular: 400;
  --fw-medium: 500;
  --fw-semibold: 600;
  --fw-bold: 700;

  /* ---- 【过渡态】装饰字符尺寸：图标收敛完成后本组应删除 ---- */
  --glyph-arrow: 26px;
  --glyph-badge: 34px;
  --glyph-splash: 40px;

  /* ---- 半透明刻度（6 族 × 3 档；禁止再直接写 rgba()/#AARRGGBB）---- */
  /* 选档法 = k-median（Σ count×|Δ| 最小）。族 = 基色×角色，档 = 弱/中/强。 */
  /* green — 品牌绿半透明(v2.4.74 立；v2.4.90 由 --a-brand-* 改名) */
  --a-green-weak: rgba(6, 185, 129, 0.12);
  --a-green-mid: rgba(6, 185, 129, 0.25);
  --a-green-strong: rgba(6, 185, 129, 0.35);
  /* blue — 品牌蓝半透明(v2.4.90 新建) */
  --a-blue-weak: rgba(30, 107, 184, 0.08);
  --a-blue-mid: rgba(30, 107, 184, 0.18);
  --a-blue-strong: rgba(30, 107, 184, 0.35);
  /* white — 白·表面叠加(深色/品牌底上的淡底、网格、悬停、边框) */
  --a-white-weak: rgba(255, 255, 255, 0.06);
  --a-white-mid: rgba(255, 255, 255, 0.15);
  --a-white-strong: rgba(255, 255, 255, 0.4);
  /* whiteHi — 白·高白度(品牌底上的前景文字/图标 + 半透明面板/底栏/忙碌遮罩) */
  --a-white-hi-weak: rgba(255, 255, 255, 0.55);
  --a-white-hi-mid: rgba(255, 255, 255, 0.75);
  --a-white-hi-strong: rgba(255, 255, 255, 0.9);
  /* black — 黑·阴影/压暗(浅色底) */
  --a-black-weak: rgba(0, 0, 0, 0.08);
  --a-black-mid: rgba(0, 0, 0, 0.2);
  --a-black-strong: rgba(0, 0, 0, 0.32);
  /* blackMask — 黑·模态遮罩(需遮挡背景的浮层) */
  --a-black-mask-weak: rgba(0, 0, 0, 0.45);
  --a-black-mask-mid: rgba(0, 0, 0, 0.6);
  --a-black-mask-strong: rgba(0, 0, 0, 0.8);

  /* ---- 层深刻度（投影专用；不含焦点环 `0 0 0 Npx` / inset 描边）---- */
  /* 选档法 = 语义归并（按层深角色，非数值就近）。详见 tokens.json elevation._method。*/
  /* ink.sm — 静置卡片 / 列表项 / 输入框组(默认态) */
  --elev-ink-sm: 0 1px 3px rgba(15, 42, 80, 0.04), 0 1px 2px rgba(15, 42, 80, 0.06);
  /* ink.md — 抬升 / 悬停 / 下拉触发(卡片 hover、小菜单) */
  --elev-ink-md: 0 2px 8px rgba(15, 42, 80, 0.06), 0 1px 2px rgba(15, 42, 80, 0.04);
  /* ink.lg — 浮层 / 面板 / 下拉面板(浮起一层) */
  --elev-ink-lg: 0 4px 12px rgba(15, 42, 80, 0.06), 0 2px 4px rgba(15, 42, 80, 0.04);
  /* ink.xl — 大浮层 / 抽屉 / 通知面板(脱离主平面) */
  --elev-ink-xl: 0 12px 32px rgba(15, 42, 80, 0.10), 0 4px 12px rgba(15, 42, 80, 0.06);
  /* ink.xxl — 模态 / 沉浸层(登录卡、全屏遮罩上的主卡) */
  --elev-ink-xxl: 0 24px 64px rgba(15, 42, 80, 0.14), 0 8px 24px rgba(15, 42, 80, 0.08);
  /* ink.side — 侧向抽屉投影(X 轴正方向；左侧栏 / 侧滑面板)。⚠️ 方向是语义的一部分 —— 不得归入 xxl/xl(那会把左侧投影翻成底部投影) */
  --elev-ink-side: 8px 0 32px rgba(15, 42, 80, 0.35);
  /* brand.sm — 小按钮 / 徽标的品牌辉光 */
  --elev-brand-sm: 0 2px 6px rgba(6, 185, 129, 0.25);
  /* brand.md — 次级 CTA / 图标块辉光 */
  --elev-brand-md: 0 4px 14px rgba(6, 185, 129, 0.25);
  /* brand.lg — 主 CTA / 选中卡辉光(原 --shadow-brand) */
  --elev-brand-lg: 0 8px 24px rgba(6, 185, 129, 0.25);
  /* blue.lg — 信息卡 / 淡蓝强调辉光(Web 承载) */
  --elev-blue-lg: 0 4px 16px rgba(30, 107, 184, 0.08);
  /* blue.xxl — 登录页品牌卡大辉光(Harmony 承载) */
  --elev-blue-xxl: 0 24px 64px rgba(30, 107, 184, 0.20);

  /* 兼容别名（v2.4.92 前手写在 common.css:96-99，现上收真值源；值与档完全同）*/
  --shadow: var(--elev-ink-sm);
  --shadow-md: var(--elev-ink-lg);
  --shadow-lg: var(--elev-ink-xl);
  --shadow-brand: var(--elev-brand-lg);

  /* ---- 动效刻度 · 时长（v2.4.105 新建）---- */
  /* 选档法 = 就近吸附（见 tokens.json motion._method）。
     循环/环境动效（骨架流光 1.4s / logo 呼吸 4.5s / 背景漂移 24s）保持显式裸写，不入刻度。*/
  --dur-instant: 80ms;
  --dur-fast: 150ms;
  --dur-base: 200ms;
  --dur-slow: 300ms;
  --dur-slower: 500ms;

  /* ---- 动效刻度 · 缓动 ---- */
  --ease-standard: ease;   /* 通用(默认)—— 微交互与状态过渡 */
  --ease-decelerate: cubic-bezier(0.16, 1, 0.3, 1);   /* 入场 —— 快起慢停(元素出现) */
  --ease-accelerate: cubic-bezier(0.7, 0, 0.84, 0);   /* 退场 —— 慢起快走(元素消失) */
  --ease-linear: linear;   /* 循环 —— 骨架流光 / 旋转加载 */
  --ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);   /* 强调 —— 带轻微回弹(登录卡入场) */
}

/* ---- 深色主题层深覆盖（v2.4.92；此前手写在 common.css:1774-1777）---- */
html[data-theme="dark"] {
  --elev-ink-sm: 0 1px 3px rgba(0, 0, 0, 0.30), 0 1px 2px rgba(0, 0, 0, 0.36);
  --elev-ink-md: 0 2px 8px rgba(0, 0, 0, 0.30), 0 1px 2px rgba(0, 0, 0, 0.24);
  --elev-ink-lg: 0 4px 12px rgba(0, 0, 0, 0.34), 0 2px 4px rgba(0, 0, 0, 0.28);
  --elev-ink-xl: 0 12px 32px rgba(0, 0, 0, 0.44), 0 4px 12px rgba(0, 0, 0, 0.32);
  --elev-ink-xxl: 0 24px 64px rgba(0, 0, 0, 0.52), 0 8px 24px rgba(0, 0, 0, 0.40);
  --elev-ink-side: 8px 0 32px rgba(0, 0, 0, 0.55);
  --elev-brand-sm: 0 2px 6px rgba(6, 185, 129, 0.12);
  --elev-brand-md: 0 4px 14px rgba(6, 185, 129, 0.12);
  --elev-brand-lg: 0 8px 24px rgba(6, 185, 129, 0.12);
  --elev-blue-lg: 0 4px 16px rgba(30, 107, 184, 0.16);
  --elev-blue-xxl: 0 24px 64px rgba(30, 107, 184, 0.28);
}
