@charset "utf-8";
/* 2026-10-10 起冻结（去三库并行改造期）：执行包（P1-P5）不得修改本文件；
   改动诉求 -> docs/并行去三库/_冲突清单.md */
/* ==========================================================================
   田径编排系统 · UI 令牌层（tokens.css）
   ---------------------------------------------------------------------------
   职责：只放「模板无关」的设计令牌（间距 / 圆角 / 字体 / 阴影 / 缓动 / 时长 / 层级）
   层级：tokens.css → templates.css（模板差异）→ theme.css（组件覆盖）→ common.css（只读）

   ⚠️ 三条硬约束（见 docs/UI设计规范_20261007.md 与全站普查结论）：
    1. **不含任何颜色令牌** —— 颜色一律在 templates.css 里按模板给（默认 :root 即 V16）
    2. **不设置 body / html 的背景与字号字体** —— 打印页（35 个 *_dy.html）的字号由模板变量
       {$opt.zw_zh} / {$sz.dy_zw_zt} 控制，全局 font-size / font-family 会污染打印件。
       ⇒ 字号统一改为「作用于**文本元素与组件类**」（见 theme.css 字体层），不落在 body/html 上。
    3. **不改变容器（框架）的尺寸与高度** —— tianjing/layout.html 的 .tj-body{padding:2px}
       与 53 处 height:calc(100vh - Npx)（N=113px 占 31 处）强耦合。
       本节新增的 --ui-h-* 令牌只用于「内容内部」的控件与行高，**禁止**用于改顶栏/侧栏/窗口外框像素高。

   样式统一限定在 html[data-ui-template] 下，未加属性的页面不受任何影响（优雅降级）。
   ========================================================================== */

/* ---------- 间距（8pt 网格） ---------- */
:root{
  --ui-s1:4px;  --ui-s2:8px;  --ui-s3:12px; --ui-s4:16px; --ui-s5:20px;
  --ui-s6:24px; --ui-s8:32px; --ui-s10:40px; --ui-s12:48px;
}

/* ---------- 尺寸（2026-10-07 新增：原先是散落在 theme.css 各节的硬编码值） ----------
   全站只有一个口径：theme.css 一律引用以下令牌，**禁止再写裸数字**。
   ⚠️ --ui-h-head 只是记录值（换算基准与注释用），禁止用它改任何容器像素高
      —— #tj-head(81px) 与 53 处 calc(100vh - N) 强耦合，改它会让全站高度链错位。 */
:root{
  --ui-h-head:81px;          /* 顶栏记录值（勿用于改容器高） */

  --ui-h-input:32px;         /* 输入框 / 下拉 / 数字框（★ 2026-10-09 用户要求「搜索框/按键垂直居中」：36→32，与 --ui-h-btn 同高） */
  --ui-h-btn:32px;           /* 常规按钮（★ 2026-10-08 按 preview6 统一：35→26，与表格/工具条同档） */
  --ui-h-btn-xs:20px;        /* 表格单元格内的小按钮（★ 2026-10-08 随行高再下调 24→20） */
  --ui-h-btn-sm:32px;        /* 弹窗按钮（★ 2026-10-08 按 preview6 统一：35→26） */
  --ui-h-dialog-title:44px;  /* 弹窗标题条 */
  --ui-h-input-sm:35px;      /* 分页器内的小输入框 / 下拉 */

  /* ★ 2026-10-08 用户要求：表格行高统一调低（"比字体高一些就行，info 多显示一点"）
     两轮下调：44/48 → 30/28 → **26/24**（用户反馈"还是高"）。
     数据行 24px + 表格字号 12.5px ⇒ 上下各约 5.7px，仍可读且明显更紧凑。
     行内按钮同步 35→24→20，避免撑破行高。所有表格（layui + easyui）统一引用本令牌。 */
  --ui-h-th:26px;            /* 表格表头（layui 与 easyui 共用同一节奏） */
  --ui-h-td:24px;            /* 表格数据行 */

  --ui-dialog-max:88vh;                     /* 弹窗高度上限（内容自适应，超高才滚） */
  --ui-dialog-max-inner:calc(88vh - 44px);  /* 弹窗内容区上限（扣掉标题栏） */

  --ui-pad-content:var(--ui-s6);   /* 页面内容区留白（四边一致的唯一口径：24px） */
  --ui-pad-card:var(--ui-s5);      /* 卡片 / 面板内留白（四边一致：20px） */
}

/* ---------- 圆角（V16 定稿档：卡片 8 / 按钮 5 / 小元素 4） ---------- */
:root{
  --ui-r-lg:8px;
  --ui-r:5px;
  --ui-r-sm:4px;
}

/* ---------- 字体族（仅作变量提供，不主动设置到 body） ---------- */
:root{
  --ui-sans:-apple-system,"SF Pro Text","SF Pro Display","PingFang SC","Helvetica Neue","Microsoft YaHei",sans-serif;
  --ui-mono:"JetBrains Mono","IBM Plex Mono",ui-monospace,"SF Mono",Consolas,monospace;
}

/* ---------- 字号 / 字重 / 字距（组件按需引用） ---------- */
:root{
  --ui-fs-page-title:30px;
  --ui-fs-card-title:14.5px;
  --ui-fs-body:13.5px;
  --ui-fs-sub:12.5px;
  --ui-fs-label:11px;
  --ui-fs-kpi:34px;
  --ui-fs-stat:13.5px;
  /* ★ 2026-10-08 表格专用字号（用户两轮反馈"表格字体大了"）：
     只作用于表格单元格，不动页面正文/表单/按钮（那些仍用 --ui-fs-body）。
     12.5px → **12px**（表头 11px 不变） */
  --ui-fs-table:12px;

  --ui-fw-400:400; --ui-fw-500:500; --ui-fw-600:600; --ui-fw-700:700;

  --ui-ls-tight:-0.02em;
  --ui-ls-wide:0.12em;
}

/* ---------- 阴影（三层，极淡；Apple 式，不做重阴影堆叠） ---------- */
:root{
  --ui-e1:0 0.5px 1px rgba(0,0,0,.04), 0 1px 3px rgba(0,0,0,.05);
  --ui-e2:0 1px 2px rgba(0,0,0,.04), 0 4px 14px rgba(0,0,0,.06);
  --ui-e3:0 2px 6px rgba(0,0,0,.05), 0 16px 40px rgba(0,0,0,.10);
}

/* ---------- 动效：时长与缓动 ---------- */
:root{
  --ui-fast:180ms;   /* 微反馈：悬停 / 焦点 */
  --ui-base:260ms;   /* 状态切换 */
  --ui-slow:400ms;   /* 入场 */

  --ui-ez:cubic-bezier(.25,.46,.45,.94);      /* 通用（Apple 式 ease-out） */
  --ui-ez-expo:cubic-bezier(.16,1,.3,1);      /* 入场 */
  --ui-ez-spring:cubic-bezier(.34,1.56,.64,1);/* 仅弹窗/奖牌等关键交互 */
}

/* ---------- 层级（与 layui / easyui 对齐，避免互相压住） ----------
   ⚠️ 浮层必须高于顶栏：#tj-head 是 position:sticky + z-index:1000，
      而下拉菜单（easyui .menu）默认 z-index:auto ⇒ 实测会被顶栏盖住。 */
:root{
  --ui-z-head:1000;    /* 顶栏（layout 里 #tj-head 即 1000） */
  --ui-z-sticky:900;
  --ui-z-float:999999; /* 下拉菜单 / 组合框 / 弹窗 / 消息框等浮层（必须高于顶栏） */
  --ui-z-shadow:999998;/* 浮层阴影层：紧贴其下 */
  --ui-z-mask:19891014;/* layui layer 遮罩 */
  --ui-z-dialog:19891015;
}

/* ---------- 公共基础：数字等宽对齐（换肤范围内） ---------- */
html[data-ui-template] .ui-num,
html[data-ui-template] .ui-stat,
html[data-ui-template] .ui-kpi b,
html[data-ui-template] .ui-table-num{
  font-family:var(--ui-mono);
  font-variant-numeric:tabular-nums;
  font-feature-settings:"tnum" 1;
}

/* ---------- 无障碍：尊重系统"减少动态效果" ---------- */
@media (prefers-reduced-motion:reduce){
  html[data-ui-template] *,
  html[data-ui-template] *::before,
  html[data-ui-template] *::after{
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
  }
}
