/**
 * ============================================================================
 *  Design Tokens - 由 Style Dictionary 自动生成
 *  编辑源文件: design-system/tokens/*.json
 *  重新编译:   npm run tokens
 * ============================================================================
 */

:root {
  --color-primary-50: #E8EEF7; /** primary tonal lightest — backgrounds */
  --color-primary-100: #C5D5EB; /** primary tonal light — hover surfaces */
  --color-primary-300: #6B95C9; /** primary tonal mid — disabled accents */
  --color-primary-500: #003D79; /** primary brand color (沿用现有 #003d79) */
  --color-primary: var(--color-primary-500); /** shorthand alias — 覆盖全局 var(--color-primary) 引用 */
  --color-primary-700: #002A55; /** primary tonal dark — pressed/focused */
  --color-primary-900: #001A35; /** primary tonal darkest — high-emphasis text */
  --color-neutral-0: #FFFFFF; /** pure white */
  --color-neutral-50: #FAFBFC; /** page background */
  --color-neutral-100: #F4F5F7; /** elevated surface / hover */
  --color-neutral-200: #E5E7EB; /** subtle divider / border-light */
  --color-neutral-300: #D1D5DB; /** border default */
  --color-neutral-400: #9AA0A6; /** placeholder / disabled text */
  --color-neutral-500: #6B7280; /** muted text (Linear cool gray) */
  --color-neutral-600: #5F6368; /** secondary text */
  --color-neutral-700: #374151; /** primary text on light surface */
  --color-neutral-800: #1F2937; /** high-emphasis text */
  --color-neutral-900: #1A1A1A; /** headings / max-emphasis */
  --color-success: #16A34A; /** success green (color-blind friendly) */
  --color-success-strong: #15803D; /** AA-达标的深绿：白底正文 5.66:1（用于 17px 正文级强调）*/
  --color-warning: #D97706; /** warning amber */
  --color-danger: #DC2626; /** danger red */
  --color-info: #0284C7; /** info blue */
  --color-feedback-success-subtle: #DCFCE7; /** success 弱底 */
  --color-feedback-warning-subtle: #FEF3C7; /** warning 弱底 */
  --color-feedback-danger-subtle: #FEE2E2; /** danger 弱底 */
  --color-feedback-info-subtle: #E0F2FE; /** info 弱底 */
  --spacing-0: 0;
  --spacing-1: 4px; /** 4pt grid base */
  --spacing-2: 8px;
  --spacing-3: 12px;
  --spacing-4: 16px;
  --spacing-5: 20px;
  --spacing-6: 24px;
  --spacing-8: 32px;
  --spacing-10: 40px;
  --spacing-12: 48px;
  --spacing-16: 64px;
  --radius-none: 0;
  --radius-sm: 4px; /** small: badges / checkbox */
  --radius-md: 8px; /** default: buttons / inputs / cards (升级自 6px) */
  --radius-lg: 12px; /** large: modal / bottom sheet */
  --radius-xl: 16px; /** xl: login card / empty state */
  --radius-full: 9999px; /** pill: avatar / chip */
  --shadow-none: none;
  --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.04); /** 悬浮卡片 / dropdown */
  --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.08); /** modal / popover */
  --shadow-lg: 0 12px 32px rgba(0, 0, 0, 0.12); /** sheet / drawer */
  --shadow-focus: 0 0 0 3px rgba(0, 61, 121, 0.16); /** focus ring */
  --typography-family-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', '微软雅黑', 'Noto Sans CJK SC', 'Source Han Sans SC', 'Helvetica Neue', Arial, sans-serif; /** 拉丁 Inter + 中文系统字体栈 */
  --typography-family-mono: 'JetBrains Mono', 'SF Mono', Monaco, Consolas, 'Courier New', monospace; /** 等宽：数据/代码/价格列 */
  --typography-weight-regular: 400;
  --typography-weight-medium: 500;
  --typography-weight-semibold: 600;
  --typography-weight-bold: 700;
  --typography-line-height-tight: 1.25; /** headings / numerics */
  --typography-line-height-base: 1.5; /** body text */
  --typography-line-height-loose: 1.75; /** long-form content */
  --typography-letter-spacing-tight: -0.01em; /** large headings */
  --typography-letter-spacing-normal: 0;
  --typography-letter-spacing-wide: 0.04em; /** uppercase labels */
  --size-font-xs: 12px; /** captions / hints */
  --size-font-sm: 13px; /** secondary text */
  --size-font-base: 15px; /** body (≥16px on desktop via responsive override; 移动端 15px 避免 iOS 自动缩放) */
  --size-font-lg: 17px; /** subhead / list-item */
  --size-font-xl: 20px; /** card title */
  --size-font-2xl: 24px; /** page title h1 */
  --size-font-3xl: 32px; /** display / hero */
  --z-index-base: 0;
  --z-index-dropdown: 100;
  --z-index-sticky: 1020;
  --z-index-fixed: 1030;
  --z-index-modal: 1050;
  --z-index-popover: 1060;
  --z-index-tooltip: 1070;
  --z-index-toast: 1080;
  --component-button-height-sm: 32px;
  --component-button-height-md: 40px;
  --component-button-height-lg: 44px; /** 符合触控合规 */
  --component-input-height: 44px; /** 触控合规 ≥44px */
  --component-modal-scrim: rgba(0, 0, 0, 0.5);
  --component-table-row-height-compact: 32px; /** 数据密集场景 */
  --component-table-row-height-default: 40px;
  --component-table-row-height-comfort: 48px;
  --component-list-item-min-height: 44px; /** 触控合规 */
  --component-badge-padding-y: 2px;
  --motion-duration-instant: 0ms; /** for prefers-reduced-motion */
  --motion-duration-fast: 150ms; /** 微交互（按钮按压、checkbox） */
  --motion-duration-base: 200ms; /** 状态切换（hover / tab） */
  --motion-duration-slow: 300ms; /** modal 进入 / sheet 滑入 */
  --motion-duration-exit: 180ms; /** 退出动画（HIG: 比进入快 60%） */
  --motion-easing-linear: linear;
  --motion-easing-standard: cubic-bezier(0.4, 0, 0.2, 1); /** 默认双向 */
  --motion-easing-decelerate: cubic-bezier(0, 0, 0.2, 1); /** 进入动画 */
  --motion-easing-accelerate: cubic-bezier(0.4, 0, 1, 1); /** 退出动画 */
  --motion-easing-apple: cubic-bezier(0.32, 0.72, 0, 1); /** Apple HIG sheet/modal 标志曲线 */
  --color-background-body: var(--color-neutral-50); /** 页面底色 */
  --color-background-surface: var(--color-neutral-0); /** 卡片 / 表面（白） */
  --color-background-elevated: var(--color-neutral-100); /** 悬浮态 / 次级表面 */
  --color-background-hover: var(--color-neutral-100); /** 可交互项 hover */
  --color-background-muted: var(--color-neutral-50); /** 禁用区块底色 */
  --color-text-primary: var(--color-neutral-900); /** 主文本 / 标题 */
  --color-text-secondary: var(--color-neutral-700); /** 次级文本 */
  --color-text-muted: var(--color-neutral-500); /** 弱化文本（说明 / 占位） */
  --color-text-disabled: var(--color-neutral-400); /** 禁用文本 */
  --color-text-inverse: var(--color-neutral-0); /** 深色背景上的文本 */
  --color-text-link: var(--color-primary-500); /** 链接默认色 */
  --color-border-subtle: var(--color-neutral-100); /** 极弱分割 */
  --color-border-light: var(--color-neutral-200); /** 默认 light border */
  --color-border-default: var(--color-neutral-300); /** 默认 border / 输入框 */
  --color-border-strong: var(--color-neutral-400); /** 强分割 */
  --color-border-focus: var(--color-primary-500); /** focus ring 主色 */
  --color-brand-primary: var(--color-primary-500); /** 品牌主色 */
  --color-brand-primary-hover: var(--color-primary-700); /** 主色 hover */
  --color-brand-primary-pressed: var(--color-primary-900); /** 主色 pressed */
  --color-brand-primary-subtle: var(--color-primary-50); /** 主色弱底 */
  --color-feedback-success: var(--color-success);
  --color-feedback-warning: var(--color-warning);
  --color-feedback-danger: var(--color-danger);
  --color-feedback-info: var(--color-info);
  --component-button-radius: var(--radius-md);
  --component-button-padding-x: var(--spacing-4);
  --component-button-padding-y: var(--spacing-2);
  --component-button-font-weight: var(--typography-weight-medium);
  --component-button-transition: var(--motion-duration-fast) var(--motion-easing-standard);
  --component-input-radius: var(--radius-md);
  --component-input-padding-x: var(--spacing-3);
  --component-input-padding-y: var(--spacing-2);
  --component-card-radius: var(--radius-md);
  --component-card-padding: var(--spacing-3);
  --component-card-shadow: var(--shadow-sm);
  --component-modal-radius: var(--radius-lg);
  --component-modal-padding: var(--spacing-4);
  --component-modal-shadow: var(--shadow-md);
  --component-modal-transition-in: var(--motion-duration-slow) var(--motion-easing-apple);
  --component-modal-transition-out: var(--motion-duration-exit) var(--motion-easing-accelerate);
  --component-table-header-font-weight: var(--typography-weight-semibold);
  --component-list-item-padding-x: var(--spacing-4);
  --component-list-item-padding-y: var(--spacing-3);
  --component-list-item-transition: background-color var(--motion-duration-fast) var(--motion-easing-standard);
  --component-badge-radius: var(--radius-sm);
  --component-badge-padding-x: var(--spacing-2);
  --component-badge-font-size: var(--size-font-xs);
  --component-badge-font-weight: var(--typography-weight-medium);
  --component-toast-radius: var(--radius-md);
  --component-toast-padding: var(--spacing-3) var(--spacing-4);
  --component-toast-shadow: var(--shadow-md);
  --component-input-border-color: var(--color-border-default);
  --component-input-border-color-focus: var(--color-border-focus);
  --component-input-background: var(--color-background-surface);
  --component-card-background: var(--color-background-surface);
  --component-card-border: 1px solid var(--color-border-light);
  --component-table-header-bg: var(--color-background-elevated);
  --component-table-header-color: var(--color-text-secondary);
  --component-table-row-hover-bg: var(--color-background-hover);
  --component-table-border-color: var(--color-border-light);
  --component-list-item-active-bg: var(--color-background-hover);
}

/* ============================================================================
 * 响应式字号 alias 入口（永久保留，非 deprecated）
 *
 * --font-sm/base/lg 是项目响应式字号系统的载体：
 *   xxs (默认 <375px): 11/13/15 — 紧凑布局
 *   xs  (>=375px):     13/15/17
 *   sm  (>=576px):     13/15/18
 *   md  (>=768px):     14/16/20
 *   lg  (>=992px):     14/16/22
 *   xl  (>=1200px):    14/16/24
 *
 * 新 token --size-font-* (base.json) 是所有断点固定值（用于 RN/Flutter）。
 * Web 业务代码应使用 --font-* alias 享受响应式行为。
 *
 * TD-C10 (2026-05-10) 已批量迁移其他 alias (color/bg/border/text/space) 至
 * W3C 命名；字号 alias 评估保留为响应式入口。
 * ============================================================================ */
:root {
  --font-sm:   11px;
  --font-base: 13px;
  --font-lg:   15px;

  /* 断点 alias (供 JS 读取 currentBreakpoint 时用) */
  --breakpoint-xxs: 0;
  --breakpoint-xs: 375px;
  --breakpoint-sm: 576px;
  --breakpoint-md: 768px;
  --breakpoint-lg: 992px;
  --breakpoint-xl: 1200px;
}

/* ============================================================================
 * 响应式字号 — 覆盖 --font-sm/base/lg alias
 * 新 token --size-font-* 在所有断点固定，alias 走渐进式响应（兼容旧业务代码）
 * ============================================================================ */
@media (min-width: 375px) {
  :root { --font-sm: 13px; --font-base: 15px; --font-lg: 17px; }
}
@media (min-width: 576px) {
  :root { --font-sm: 13px; --font-base: 15px; --font-lg: 18px; }
}
@media (min-width: 768px) {
  :root { --font-sm: 14px; --font-base: 16px; --font-lg: 20px; }
}
@media (min-width: 992px) {
  :root { --font-sm: 14px; --font-base: 16px; --font-lg: 22px; }
}
@media (min-width: 1200px) {
  :root { --font-sm: 14px; --font-base: 16px; --font-lg: 24px; }
}
