/* =============================================
   tokens.css — 设计令牌（非颜色基础变量）
   业务公式引擎 · 设计系统底层
   ============================================= */

:root {
  /* ---------- 间距系统（4px 基准栅格） ---------- */
  --space-3xs:  2px;
  --space-2xs:  4px;
  --space-xs:   8px;
  --space-sm:   12px;
  --space-md:   16px;
  --space-lg:   20px;
  --space-xl:   24px;
  --space-2xl:  32px;
  --space-3xl:  40px;
  --space-4xl:  48px;
  --space-5xl:  64px;

  /* 语义化间距别名 */
  --gap-inline-xs:   var(--space-2xs);
  --gap-inline-sm:   var(--space-xs);
  --gap-inline-md:   var(--space-sm);
  --gap-block-xs:    var(--space-xs);
  --gap-block-sm:    var(--space-sm);
  --gap-block-md:    var(--space-lg);
  --gap-block-lg:    var(--space-2xl);

  --padding-page:       var(--space-xl);
  --padding-section:    var(--space-lg);
  --padding-card:       var(--space-lg);
  --padding-card-sm:    var(--space-md);
  --padding-input:      var(--space-sm) var(--space-md);

  /* ---------- 字体族 ---------- */
  --font-sans: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei",
               "WenQuanYi Micro Hei", -apple-system, BlinkMacSystemFont,
               "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --font-mono: "JetBrains Mono", "Fira Code", "SF Mono", "Cascadia Code",
               Consolas, "Liberation Mono", Menlo, monospace;
  --font-serif: "Noto Serif SC", "Source Han Serif SC", "SimSun",
                "Times New Roman", serif;

  /* ---------- OpenType 字体特性（精致排版） ---------- */
  /* 表格数字：数据/指标列对齐；代码禁用连字 */
  --font-feature-data: "tnum" 1, "cv01";
  --font-feature-code: "tnum" 1, "zero" 1, "ss01";
  --font-feature-body: "tnum" 1;

  /* ---------- 字号刻度 ---------- */
  --text-2xs:  11px;
  --text-xs:   12px;
  --text-sm:   13px;
  --text-base: 14px;
  --text-md:   15px;
  --text-lg:   16px;
  --text-xl:   18px;
  --text-2xl:  20px;
  --text-3xl:  24px;
  --text-4xl:  28px;
  --text-5xl:  34px;

  /* 语义化字号 */
  --font-size-caption:  var(--text-xs);
  --font-size-label:    var(--text-sm);
  --font-size-body:     var(--text-base);
  --font-size-body-md:  var(--text-md);
  --font-size-subtitle: var(--text-lg);
  --font-size-title:    var(--text-xl);
  --font-size-title-lg: var(--text-2xl);
  --font-size-headline: var(--text-3xl);
  --font-size-display:  var(--text-4xl);

  /* ---------- 字重 ---------- */
  --font-regular:   400;
  --font-medium:    500;
  --font-semibold:  600;
  --font-bold:      700;
  --font-extrabold: 800;

  /* ---------- 行高 ---------- */
  --leading-tight:   1.25;
  --leading-snug:    1.375;
  --leading-normal:  1.5;
  --leading-relaxed: 1.625;
  --leading-loose:   2;

  /* ---------- 字间距 ---------- */
  --tracking-tighter: -0.02em;
  --tracking-tight:   -0.01em;
  --tracking-normal:  0;
  --tracking-wide:    0.025em;
  --tracking-wider:   0.05em;

  /* ---------- 圆角 ---------- */
  --radius-xs:   2px;
  --radius-sm:   4px;
  --radius-md:   6px;
  --radius-lg:   8px;
  --radius-xl:   12px;
  --radius-2xl:  16px;
  --radius-3xl:  24px;
  --radius-full: 9999px;

  /* 语义化圆角 */
  --radius-button:  var(--radius-md);
  --radius-input:   var(--radius-md);
  --radius-card:    var(--radius-xl);
  --radius-badge:   var(--radius-full);
  --radius-pill:    var(--radius-full);

  /* ---------- 过渡时长 ---------- */
  --duration-instant:  75ms;
  --duration-fast:     150ms;
  --duration-normal:   250ms;
  --duration-slow:     350ms;
  --duration-slower:   500ms;
  --duration-slowest:  800ms;

  /* ---------- 缓动函数（平滑指数曲线，避免 bounce/elastic 的廉价感） ---------- */
  --ease-default:    cubic-bezier(0.4, 0, 0.2, 1);
  --ease-in:         cubic-bezier(0.7, 0, 0.84, 0);      /* 指数式 ease-in */
  --ease-out:        cubic-bezier(0.16, 1, 0.3, 1);      /* 指数式 ease-out（进入） */
  --ease-in-out:     cubic-bezier(0.65, 0, 0.35, 1);
  --ease-out-quart:  cubic-bezier(0.25, 1, 0.5, 1);
  --ease-out-expo:   cubic-bezier(0.16, 1, 0.3, 1);      /* 高级感首选 */
  --ease-spring:     cubic-bezier(0.22, 1, 0.36, 1);     /* 克制弹簧，无过冲 */
  /* 注意：已移除 --ease-bounce（弹性过冲，廉价感），旧引用回退到 spring */

  /* 语义化过渡 */
  --transition-fast:    all var(--duration-fast)  var(--ease-default);
  --transition-normal:  all var(--duration-normal) var(--ease-default);
  --transition-slow:    all var(--duration-slow)   var(--ease-default);
  --transition-color:   color var(--duration-fast) var(--ease-default),
                        background-color var(--duration-fast) var(--ease-default),
                        border-color var(--duration-fast) var(--ease-default);
  --transition-transform: transform var(--duration-normal) var(--ease-spring);

  /* ---------- 层级 z-index ---------- */
  --z-base:       0;
  --z-dropdown:   100;
  --z-sticky:     200;
  --z-fixed:      300;
  --z-overlay:    500;
  --z-modal:      800;
  --z-toast:      900;
  --z-tooltip:    1000;
  --z-max:        9999;

  /* ---------- 布局尺寸 ---------- */
  --sidebar-width:         260px;
  --sidebar-width-collapsed: 0px;
  --context-panel-width:   300px;
  --chat-max-width:        780px;
  --header-height:         52px;
  --input-area-min-height: 64px;
  --input-area-max-height: 200px;

  /* ---------- 组件尺寸 ---------- */
  --avatar-size-sm:    28px;
  --avatar-size-md:    32px;
  --avatar-size-lg:    40px;
  --icon-size-sm:      14px;
  --icon-size-md:      16px;
  --icon-size-lg:      20px;
  --icon-size-xl:      24px;
  --button-height-sm:  28px;
  --button-height-md:  34px;
  --button-height-lg:  40px;

  /* ---------- 边框宽度 ---------- */
  --border-width-thin:  1px;
  --border-width-thick: 2px;
  --border-width-bold:  3px;

  /* ---------- 透明度 ---------- */
  --opacity-hover:    0.85;
  --opacity-disabled: 0.45;
  --opacity-faint:    0.06;
  --opacity-subtle:   0.12;

  /* ---------- 动画参数 ---------- */
  --anim-pulse-duration:   2s;
  --anim-wave-duration:    2.5s;
  --anim-fade-duration:    var(--duration-slow);
  --anim-slide-duration:   var(--duration-slow);
  --anim-blink-duration:   1s;
}
