/* ============================================================================
   版心宽度契约 —— **唯一真相**
   ============================================================================

   规格:`design/2026-08-03-SPEC-layout-width.md`(Raye 2026-08-03 拍板)

   改版心宽度**只改这个文件**;`workspace.html` 里一律 `var(--w-*)`,
   不许再出现裸数字。守它的是 `service/tests/test_layout_width.py` 三道检查。

   ## 为什么单独一个文件

   `workspace.html` 是 4900 行的单文件(`CLAUDE.md` §读写纪律:改它得先 grep 定位)。
   契约放这儿,**改宽度就不用碰那个大文件**,而且「谁改了版心」在 git 历史里一眼可见。

   ## 档名只描述宽度,不描述用途

   > Raye 2026-08-03:「名字描述宽度不描述用途。」

   叫 `--w-form` 的话,哪天有个非表单的东西要用这个宽度,就会有人纠结
   「它不是表单,能不能用这个变量」—— 然后自己写一个裸数字。
   叫 `--w-mid` 就没有这个问题。(OT 周期统计归中档,它正是个表格不是表单。)
   ========================================================================== */

:root{
  /* ── 三档版心 ─────────────────────────────────────────────────────── */
  --w-wide:1060px;    /* 表格 / 收件箱 / 多列数据 —— 10 个界面 */
  --w-mid:1014px;     /* 两列表单 + OT 周期统计 —— 4 个界面
                         1014 = 460 + 520 + 34(.formgrid 两列加间距的自然上限)。
                         Raye 裁定保持此值,不压到 860:硬压会让「参与员工」
                         多选列变窄,而它要放 姓名+工号+部门+勾选框。 */
  --w-narrow:640px;   /* 浮层 —— 批量弹窗。取它的现状值,不用凭空的 560。 */

  /* ── 外壳(不是版心)────────────────────────────────────────────────
     `.main` 自己要用它们算偏移;版心不该去碰这两个数。 */
  --shell-side:224px;   /* 固定侧栏宽 */
  --shell-pad:40px;     /* 主区左右内边距 */
}

/* ============================================================================
   断点:**不能**做成 CSS 变量
   ============================================================================

   `@media (max-width: var(--bp-mini))` **不生效** —— CSS 的媒体查询用不了 `var()`。
   写成变量只会得到一个没有任何东西在用的值:看着像唯一真相,而媒体查询里
   那两个数字照样是裸的。**那比不写更坏。**

   所以这里只**记录**,再由 `test_layout_width.py` 检查 ③ 断言
   「`workspace.html` 里媒体查询的实际数字 == 下面记的」——
   唯一真相是**被测试绑住的**,不是**声称的**。

       900px   迷你侧栏(收成 64px 图标条)
       840px   手机抽屉(侧栏移出屏幕,靠 .mtop 汉堡键唤出)

   ⚠️ 841–900px 之间是一个「只有迷你侧栏、没有抽屉」的中间态。
      这是**既有行为**,本轮不动 —— 改断点值 = 改响应式行为,要单独一轮
      并对每个断点做渲染验证。
   ========================================================================== */
