/* ============================================================================
 * wl-compact.css v1.5（2026-10-01）
 *
 * v1.4 → v1.5（业务方 2026-10-01：「字体大小、加粗、下划线、倾斜都应该有一定的适用规则。
 *   我很关心字体的层次感」）：新增 ⑬ 字体层次令牌三条 ——
 *   ① 字重只用两档 400 / 600（强调档取 600 而非 700：700 在 12.5px 表格与 13px 按钮上会糊）；
 *      并把全舰队在用的 `font-weight:500` 归一为 600（3 文件 7 处，逐文件备份）。
 *   ② 下划线只表示「可点击」（仅 `<a>`）；徽标与按钮不得有下划线。
 *   ③ 禁用斜体（显式 font-style:normal，防粘贴内容带入）。
 *   三条全部用 :where() 归零特异性，应用侧写过的规则仍然生效。
 *
 * v1.3 → v1.4（业务方 2026-09-30「UI 美学与人性化」，做 EX-23 诊断时量出）：
 *   ① 表格单元格行距收口：`.muted` 规则特异性 (0,2,1) 高于 `th,td` (0,1,1)，导致
 *      **同一页表格里带 .muted 的单元格行距 1.15、不带的是 1.10**，行高忽高忽低。
 *      修正后 muted 单元格也走 --wl-line-tight（1.1），表格外的 .muted 不受影响。
 *   ② 按钮字号收口：基线只设了 button 的 line-height、**没设 font-size**，浏览器于是用它
 *      内置的 UA 默认值 —— Chromium 实测 **13.3333px**（既非正文 13.5 也非按钮令牌 13）。
 *      修正后由 `:where()` 提供 13px 默认值；因 :where 特异性为 0，应用侧写过的按钮字号
 *      仍然生效，不会被基线压掉。
 *   两处都是"收口性质"，回退＝删掉对应段落。
 *
 * v1.2 → v1.3（用户 2026-09-20 对 EX-20 的反馈）：**按钮/胶囊/方片里的文字一律居中**——
 *   ① 胶囊规则补 `justify-content:center`（原来只垂直居中，水平靠左）；
 *   ② 新增 ④b 条：`body.wl-compact button / .btn / [role=button]` 统一
 *      `display:inline-flex; align-items:center; justify-content:center`。
 *      由来：应用侧常见 `display:inline-block` + 固定 height + `line-height:1`，
 *      文字行盒贴盒子上沿 → 看起来"偏高"（EX-20 的 .wl-ver 实测偏 10.5px）。
 *      本基线**不用 !important**；移动端 36px 点按下限那一档的居中由 wl-mobile.css 兜底。
 *
 * v1.1 → v1.2（用户 2026-09-20 三条口径）：
 *   ① 行距压缩到"靠近 1 倍"：正文 1.45 → **1.15**；行式元素（表格/控件/列表项/单行标签）
 *      1.3~1.8 → **1.1**；大号展示数字 → **1.0**。（未取严格 1.0：中文全角字会贴死、
 *      英文降部会被切边；1.15/1.1 是安全下限，要更紧改 --wl-line* 三个 token 即可。）
 *   ② 胶囊变矮省空间：16px → **13px** 高，字号 11 → **10.5px**，左右内边距 6 → **5px**。
 *   ③ 层次感只留给顶级/高级别菜单：h1 **15px**、h2 **14px**（比正文 13.5px 微微大一点）；
 *      h3/h4/卡片标题**回到与正文持平 13.5px**（原来 15~16.8px，EX-18 的 h2 曾达 20px）。
 *
 * 原 v1.1（2026-09-20）—— WLIT 自研 Web 应用「紧凑化与信息密度」基线
 *
 * v1.0 → v1.1：**正文行距不得继承到大号展示数字**（2026-09-20 EX-10 两臂实测归因）。
 *   基线给 body 设 line-height:1.45 后，统计卡片里的 `.card .num{font-size:28px}`
 *   继承了 1.45，行高由 normal 的 29px 变成 40.6px，**卡片反而 67px → 79px（+18%）**。
 *   诊断证据：卡片内边距其实是**变小**的（12px 18px → 10px 12px），变高的完全是子元素行高。
 *   故对常见"大号数字/单行值"类名统一给 line-height:1.15 —— 通用修法，凡有 KPI/统计卡的
 *   应用都受益，避免"正文行距无差别继承"这一整类副作用。
 *
 * 依据：WLIT-HOW21 §4.26 界面紧凑化与信息密度（通则，2026-09-20 新增）
 * 事实源：本文件（D:\WorkBuddyApps\web-common\wl-compact.css）
 *         各应用静态目录下的 wl-compact.css 由 web-common\wl_mobile_sync.py 同步，
 *         **请勿在应用内单独修改**。
 *
 * ── 与 wl-mobile.css 的分工（两者互补，不要互相抄）────────────────────────────
 *   wl-mobile.css  = 手机/折叠屏「适配」：按视口分档，规则**全部**在 @media screen 内，
 *                    桌面表现一律不变；负责点按尺寸、输入字号、宽表容器化、栅格降列。
 *   wl-compact.css = 桌面与移动一致的「密度」：间距节奏 token + 组件尺寸上限，
 *                    **不含媒体查询**（密度是设计口径，不是视口适配）。
 *   两者叠加的正确结果：桌面紧凑 → 触屏仍自动满足 ≥40px 点按（由 wl-mobile.css 兜底）。
 *
 * ── 生效方式（opt-in，避免存量应用被静默改版）────────────────────────────────
 *   ① 页面 <head> 引 <link rel="stylesheet" href="/static/wl-compact.css">
 *   ② <body> 加 class="wl-compact"
 *   应用自己的 CSS 可随时覆盖本文件（本文件**不使用 !important**）。
 *   未加 body 类的应用完全不受影响 —— 便于按应用逐个整改、逐个验收。
 *
 * ── 为什么要有这个文件（2026-09-20 EX-17 实测口径）──────────────────────────
 *   整改前 EX-17 的实际问题：卡片 padding 14px + .card-desc 写死 min-height:38px
 *   → 卡片被撑到 ~135px 高、一屏只能放 3 行；状态胶囊各写各的（padding 2px 8px、
 *   圆角 9~11px、无统一高度）视觉上比正文还抢眼；body 没有设 line-height，
 *   段落与表格的 margin 又偏大（h3 22px、table 20px、section-box 20px）。
 *   本文件把这些数值收敛成一套 token，并把「组件尺寸上限」写死成通则。
 *
 * ── 数值口径（§4.26 的默认值，改这里等于改通则）──────────────────────────────
 *   间距节奏  --wl-gap 12px / --wl-gap-sm 8px / --wl-pad-card 10px 12px
 *   圆角      --wl-radius 8px / --wl-radius-sm 6px
 *   正文      --wl-fs 13.5px / --wl-line 1.45
 *             （**基线的字号只覆盖"组件统一口径"这几处：正文/胶囊/按钮/表格；
 *               标题字号一律不覆盖——那是设计选择，见下方"标题"注释）
 *   控件高度  --wl-ctrl-h 32px（桌面；触屏由 wl-mobile.css 兜到 ≥40px）
 *   胶囊/徽标 --wl-pill-h 16px / 字号 11px（**必须比整改前的 12px 字号 + 2px 内边距更小**）
 *   表格      th,td padding 5px 8px
 *
 * ── 基线只写「收紧型」属性（2026-09-20 四次实测教训后定稿）────────────────────
 *   可写（收紧）：内边距 padding、行距 line-height、字号上限（正文/胶囊/按钮/表格）、圆角。
 *   不写（可变大）：gap、外边距 margin、min-height、标题字号。
 *   理由：基线统一"加"上去的属性，对**本来就比基线紧**的应用只会帮倒忙 ——
 *   EX-01 一连踩到四次：卡片 gap 加 8px、h2 被放大到 16.5px、h2 被加 14px 外边距、
 *   表格被加 18px 外边距，卡片一度从 206px 涨到 254px（+23%），与"更紧凑"完全相反。
 *
 * ── 胶囊为什么定 16px（EX-17 实测教训，勿改大）────────────────────────────────
 *   第一版把胶囊高度定成 20px，比整改前的实际高度（.status font-size:12px +
 *   padding:2px 8px ≈ 17px）**还高**，用户要的"胶囊小一点"反而变大了 —— 说明
 *   "看着挺整齐"不等于"更小"，**必须拿整改前的实测值当上限**。16px 同时让
 *   卡片头部一行放得下「编号 + 手机适配徽标 + 状态徽标」，卡片因此矮一截。
 * ========================================================================== */

:root {
  --wl-gap: 12px;
  --wl-gap-sm: 8px;
  --wl-pad-card: 10px 12px;
  --wl-radius: 8px;
  --wl-radius-sm: 6px;
  --wl-ctrl-h: 32px;
  --wl-pill-h: 13px;        /* 胶囊高度（原 16px，用户要求变矮省空间） */
  --wl-pill-fs: 10.5px;     /* 胶囊字号（原 11px） */
  --wl-fs: 13.5px;
  --wl-line: 1.15;          /* 正文/段落行距（靠近 1 倍） */
  --wl-line-tight: 1.1;     /* 行式元素：表格单元格/控件/列表项/单行标签 */
  --wl-line-num: 1.0;       /* 大号展示数字：字体本身够大，行距按 1 倍即可 */
}

/* ── ① 正文节奏：字号 / 行距 / 段落间距 ─────────────────────────────────── */
body.wl-compact {
  font-size: var(--wl-fs);
  line-height: var(--wl-line);
}
/* 标题：**只收间距与行距，不改字号**（字号是各应用的设计选择，基线统一会造成
   "本来就合适的标题被放大"。EX-01 实测：.card-header h2 原 15px 被基线改成 16.5px，
   头部由一行变两行，卡片 206→234px，+14%）。要收字号应在应用侧改并写明理由。 */
/* 层次感（用户 2026-09-20 口径）：**只有顶级与高级别菜单**比正文微微大一点，
   其余标题一律与正文持平 —— 原先把 h2/h3/card-title 放到 15~20px，
   比正文大 11%~48%，层次用得过头、也吃掉了可显示的行数。 */
body.wl-compact h1 { font-size: 15px; line-height: 1.15; margin: 0 0 6px; }
body.wl-compact h2 { font-size: 14px; line-height: 1.15; margin: 8px 0 6px; }
body.wl-compact h3 { font-size: var(--wl-fs); line-height: 1.15; margin: 12px 0 6px;
  padding-left: 8px; }
body.wl-compact h4 { font-size: var(--wl-fs); line-height: 1.15; margin: 8px 0 4px; }
/* 卡片/面板标题与正文持平（层次感由标题栏的底边与留白体现，不靠字号） */
body.wl-compact .card-title,
body.wl-compact .card-head h1, body.wl-compact .card-head h2,
body.wl-compact .card-head h3, body.wl-compact .card-head h4,
body.wl-compact .card-header h1, body.wl-compact .card-header h2,
body.wl-compact .card-header h3, body.wl-compact .card-header h4,
body.wl-compact .panel-head h1, body.wl-compact .panel-head h2,
body.wl-compact .panel-head h3, body.wl-compact .panel-head h4,
body.wl-compact .section-box h4 {
  font-size: var(--wl-fs); line-height: 1.15;
}
/* 卡片/面板/页头里的**头标题**不参与上面这套"正文标题间距"：
   头部的内边距已经负责留白，再给标题加 margin 会把头部撑高 —— flex 行内外边距不折叠，
   EX-01 实测 .card-header 42px → 53.19px、卡片 206px → 231px（+12%），
   而子元素本身其实变矮了（h2 21px → 18.2px）。 */
body.wl-compact .card-header > h1, body.wl-compact .card-header > h2,
body.wl-compact .card-header > h3, body.wl-compact .card-header > h4,
body.wl-compact .card-head > h1, body.wl-compact .card-head > h2,
body.wl-compact .card-head > h3, body.wl-compact .card-head > h4,
body.wl-compact .panel-head > h1, body.wl-compact .panel-head > h2,
body.wl-compact .panel-head > h3, body.wl-compact .panel-head > h4,
body.wl-compact .page-head > h1, body.wl-compact .page-head > h2,
body.wl-compact .page-head > h3, body.wl-compact .page-head > h4,
body.wl-compact .modal h3, body.wl-compact .modal h4 { margin: 0; }
body.wl-compact p { margin: 4px 0; }
body.wl-compact .sub,
body.wl-compact .muted,
body.wl-compact .hint,
body.wl-compact .card-desc { line-height: var(--wl-line); }
body.wl-compact .card-meta { line-height: var(--wl-line-tight); }
/* 列表项：原来 li 的行距由各应用自己定（EX-01/EX-25 实测 1.8、EX-21 1.45），
   属最松的一类，按行式元素收到 1.1。 */
body.wl-compact li { line-height: var(--wl-line-tight); }
body.wl-compact .sub { margin-bottom: 8px; }
body.wl-compact .muted, body.wl-compact .hint { margin-top: 4px; }
body.wl-compact hr { margin: 10px 0; }
body.wl-compact ul, body.wl-compact ol { margin: 4px 0 4px 18px; }

/* ── ② 主容器：只收纵向留白，max-width 由 §4.1 管（1780 居中），此处不动 ── */
body.wl-compact .container,
body.wl-compact .wrap,
body.wl-compact .view { margin-top: 12px; margin-bottom: 24px; }

/* ── ③ 卡片容器：内边距 / 圆角 / 内部间距上限；禁止写死 min-height 撑高 ──── */
body.wl-compact .card,
body.wl-compact .section-box,
body.wl-compact .panel,
body.wl-compact .thread,
body.wl-compact .box,
body.wl-compact .tile {
  padding: var(--wl-pad-card);
  border-radius: var(--wl-radius);
  /* **不设 gap**：卡片内部间距是应用的设计选择，而"加 gap"只会让卡片变高
     （EX-01 的 .card 原 gap:0，基线加 8px 后卡片凭空多 8px）。
     基线的职责是"收紧"，凡"加上去只会变高"的属性一律不写。 */
}
body.wl-compact .card-desc,
body.wl-compact .card-title,
body.wl-compact .card-head { min-height: 0; }
body.wl-compact .cards,
body.wl-compact .grid,
body.wl-compact .tiles { gap: var(--wl-gap); }
body.wl-compact .section-box,
body.wl-compact .thread { margin-bottom: var(--wl-gap); }
body.wl-compact .card-actions { margin-top: 2px; }

/* ── ④ 胶囊 / 徽标：统一高度与字号，视觉重量不得压过正文 ────────────────── */
body.wl-compact .tag,
body.wl-compact .status,
body.wl-compact .badge,
body.wl-compact .code,
body.wl-compact .chip,
body.wl-compact .pill,
body.wl-compact .hint-badge,
body.wl-compact .dept-tag,
body.wl-compact .wl-ex,
body.wl-compact .wl-ver {
  display: inline-flex;
  align-items: center;
  justify-content: center;   /* 文字水平居中（用户 2026-09-20：胶囊/方片里的字要居中） */
  height: var(--wl-pill-h);
  min-height: var(--wl-pill-h);
  padding: 0 5px;
  font-size: var(--wl-pill-fs);
  line-height: 1;
  border-radius: 4px;
  white-space: nowrap;
}

/* ── ④b 按钮文字居中（用户 2026-09-20：按钮/胶囊/方片里的文字一律居中，不偏高不偏低）──
   只写 display/align/justify 三个"居中"属性，不动尺寸（尺寸归 ④ 那条）。
   为什么必须写：应用侧常见 `display:inline-block` + 固定 height + `line-height:1`，
   此时文字行盒贴在盒子上沿，看起来"偏高"（EX-20 实测 .wl-ver 偏 10.5px）。
   用 body.wl-compact 前缀保证压过应用的 `.btn`（0,1,1），又低于应用显式覆盖（如 .card .btn）。 */
body.wl-compact button,
body.wl-compact .btn,
body.wl-compact [role="button"] {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

/* ── ⑤ 按钮：桌面高度 32px 量级（触屏由 wl-mobile.css 兜到 ≥40px）─────────
   ⚠ 2026-10-01 修正（业务方要求"字体尽可能相对一致"）：本条原来写 字号 12px、小按钮 11.5px，
   与**受控口径 HOW21 §4.33「按钮令牌：字号 13px；水平内边距 12px（小按钮 10px）」直接冲突**
   —— 注意 §4.33 只给小按钮规定**内边距**，没给小按钮单独的小字号。
   基线自相矛盾导致实测同一页出现 11.5 / 12 / 13 / 13.3333 四种按钮字号（EX-23 实测）。
   现按 §4.33 统一为 **13px**；"小按钮"的"小"只体现在内边距，不再体现在字号。
   依据：① §4.33（2026-09-29 受控，通用强制项）；② §4.26 的"≤12px"是更早的紧凑化口径，
   与本条冲突时应以专门管按钮的 §4.33 为准（后者更晚、更具体）。 */
body.wl-compact .btn,
body.wl-compact button.btn { padding: 4px 10px; font-size: 13px; border-radius: var(--wl-radius-sm); }
body.wl-compact .btn.small,
body.wl-compact .btn.sm,
body.wl-compact .btn-mini,
body.wl-compact .mini-btn { padding: 2px 10px; font-size: 13px; }

/* ── ⑥ 表格：单元格内边距是"一屏能看几行"的最大变量 ──────────────────────
   行距同样要收：表格单元格是**行式**元素、不是段落，若继承正文的 1.45，
   行高 = 字号×1.45 + 上下内边距，反而比整改前更高 —— 数据表"一屏能看几行"会变少，
   与紧凑化目标相反。故单元格与表单控件统一 1.3（只可能降低行高，不会造成退化）。 */
body.wl-compact th,
body.wl-compact td { padding: 5px 8px; font-size: 12.5px; line-height: var(--wl-line-tight); }
/* **不设 table 的 margin**：基线的 margin 对"本来就 0 边距"的表格只会**加空白**
   （EX-01 实测：表格 margin:0 被加 18px，经 .wl-tblwrap 传导到卡片 206→220px）。
   表格与上下文的间距属应用版面设计，基线的收紧口径只落在 th,td 的内边距与字号上。 */

/* ── ⑦ 表单：桌面紧凑；移动端 16px 字号由 wl-mobile.css 负责 ───────────── */
body.wl-compact input[type=text],
body.wl-compact input[type=password],
body.wl-compact input[type=number],
body.wl-compact input[type=search],
body.wl-compact select,
body.wl-compact textarea { padding: 5px 8px; font-size: 13px; border-radius: var(--wl-radius-sm); }
body.wl-compact textarea { min-height: 56px; }
/* 单行控件（输入/按钮/下拉）同样是行式元素：行距 1.3，避免"控件被行距撑高" */
body.wl-compact input,
body.wl-compact select,
body.wl-compact textarea,
body.wl-compact button,
body.wl-compact .btn { line-height: var(--wl-line-tight); }
body.wl-compact form label { margin: 6px 0 3px; font-size: 12.5px; }
body.wl-compact .form-row { margin-bottom: 4px; }
body.wl-compact .form-grid { gap: 6px 12px; margin-top: 8px; }

/* ── ⑧ 弹窗：贴边与内滚是 wl-mobile.css 的职责，这里只收桌面留白 ────────── */
body.wl-compact .modal { padding: 14px 16px; border-radius: var(--wl-radius); }
body.wl-compact .modal h4 { margin-bottom: 6px; }

/* ── ⑨ 页内目录 / 工具条：行高与间距收敛 ───────────────────────────────── */
body.wl-compact .admin-toc { padding: 6px 10px; gap: 6px; margin-bottom: 10px; font-size: 12.5px; }
body.wl-compact .admin-toc a { padding: 1px 8px; border-radius: var(--wl-radius-sm); }
body.wl-compact .sortbar { gap: 6px; margin-bottom: 8px; }
body.wl-compact .sortbar .sbtn { padding: 3px 10px; font-size: 12.5px; border-radius: var(--wl-radius-sm); }
body.wl-compact .page-head { gap: 8px; }

/* ── ⑨之二 大号展示数字 / 单行值：**不继承正文行距** ────────────────────────
   正文 1.45 的行距适合段落，但套到 24~32px 的展示数字上会凭空多出十几像素高度，
   把本来紧凑的统计卡片顶高（EX-10 实测卡片 67px → 79px，+18%，与"更紧凑"相反）。
   这些类名是全舰队统计卡片的通用写法（.num/.val/.value/.kpi…），故在基线里统一收敛。 */
body.wl-compact .num,
body.wl-compact .val,
body.wl-compact .value,
body.wl-compact .big,
body.wl-compact .kpi,
body.wl-compact .stat-val,
body.wl-compact .card .num,
body.wl-compact .stat-card .val { line-height: var(--wl-line-num); }
/* 单行小标签/单位（不是段落文本）：也用紧行距，否则 13px 的标签会占 19px 行高，
   把统计小卡片顶高（EX-10 实测：只收紧 .num 后仍有 +6%，收紧 .lbl 后回到基线水平）。 */
body.wl-compact .lbl,
body.wl-compact .label,
body.wl-compact .unit,
body.wl-compact .note,
body.wl-compact .meta { line-height: var(--wl-line-tight); }

/* ── ⑩ 打印：密度口径不影响版面（打印媒体下保持本文件的紧凑值即可）─────── */
@media print {
  body.wl-compact { font-size: 11pt; line-height: 1.4; }
}

/* ── ⑫ v1.4 两处收口（2026-09-30，业务方「UI 美学与人性化」要求）──────────────
   由来：给 EX-23 做 UI 诊断时量出两处"同一份代码里不一致"的问题，追根都在基线：
   ① **表格单元格行距同页两种值**（12.5px 下 13.75px=1.10 与 14.375px=1.15 并存）。
      根因：下面 ⑫a 的 `.muted` 规则特异性 (0,2,1) **高于** ⑥ 的 `th,td` 规则 (0,1,1)，
      于是凡带 .muted 的单元格行距被抬到正文口径 1.15，与相邻单元格不齐 → 行高忽高忽低。
      EX-23 实测：muted 单元格 1005 个受影响、普通单元格 5992 个正常。
   ② **所有未显式设字号的按钮都在用"谁也没选过"的字号**。
      根因：基线只给 button 设了 line-height（⑧），**没设 font-size**，
      于是浏览器用它内置的 UA 默认值 —— Chromium 实测为 **13.3333px**，
      既不是正文 13.5px 也不是按钮令牌 13px，看着"差一点点"却说不清哪里不对。
      EX-23 实测 539 处。
   ⚠ 为什么用 `:where()` 把特异性归零：这两条是**收口性质的默认值**，不该压过任何
     应用自己的设计选择（例如某应用把按钮设成 12.5px）。`:where(...)` 贡献 0 特异性，
     所以应用侧只要写过 `.btn{font-size:...}` 之类的普通规则就仍然生效 —— 实测见
     _scratch\视觉回归基线-20260930\_q_baseline_fix_probe.py（四种写法对照）。
   回退：删掉本段即可。 */
/* 覆盖形态按实测收紧（EX-23 8 个页面统计：单元格自身带 .muted 1014 个、单元格内**一层**嵌套 560 个，
   没有更深层）。用 `>` 精确到一层而不是通配后代 —— 避免误伤"单元格里嵌套了卡片/面板"的 .muted。 */
body.wl-compact :where(td, th).muted,
body.wl-compact :where(td, th) > .muted,
body.wl-compact :where(td, th) > :where(span, b, i, em, small, div, a, label).muted {
  line-height: var(--wl-line-tight);
}
body.wl-compact :where(button, .btn, [role=button],
                       input[type=submit], input[type=button], input[type=reset]) {
  font-size: 13px;
}

/* ── ⑬ 字体层次令牌（2026-10-01 v1.5，业务方「字体大小/加粗/下划线/倾斜都要有适用规则」）──
   舰队普查（12 个应用的 live CSS，排除 _bak/venv）后定下的三条规则，全部用 :where() 归零特异性，
   应用侧写过的规则仍然生效：

   ① **字重只用两档：400（常规）/ 600（强调）**。
      普查结论：400 是正文主力；**600 是舰队既有的强调档**（th、表头、当前菜单项、标签普遍在用），
      700 集中在 `<b>`/标题/CSS 默认；500 只在少数应用出现（rds-monitor、social-poster、EX-24），
      且视觉上与 600 差别极小却各占一套 —— 是「层次不清」的主要来源。
      处置：把各应用的 `font-weight:500` 归一为 600（已扫全舰队在用 CSS，共 3 文件 7 处，逐文件已备份）；
      按钮统一 600（原来应用按钮是 500、共享 .btn 是 600、浏览器默认又是 400，三种并存）。
      为什么强调档取 600 而不是 700：700 太黑，在 12.5px 的表格与 13px 按钮上会糊；
      600 在中文无衬线字体（微软雅黑/等线）下既能拉出对比、又不糊。`<b>` 等原生标签保持 700 不动。

   ② **下划线只表示「可点击」**：只允许出现在 `<a>` 上；
      徽标（.wl-ver/.wl-ex）与按钮（含 .btn-mini）不得有下划线 —— 它们是"状态/动作"，不是链接。

   ③ **禁用斜体**：全舰队实测 0 处（本就一致）。这里显式声明
      `font-style:normal`，防止以后从 Word/网页粘进来的内容带斜体。中文斜体是"伪斜体"
      （字形被机械倾斜），可读性差；要标"已废弃"请用状态胶囊，不要用删除线或斜体。 */
body.wl-compact :where(button, .btn, [role=button], .mini-btn,
                       input[type=submit], input[type=button], input[type=reset]) {
  font-weight: 600;
}
body.wl-compact :where(.wl-ver, .wl-ex, .ver, .btn, .mini-btn, button) {
  text-decoration: none;
}
body.wl-compact :where(body, button, input, select, textarea, .btn, .card, table) {
  font-style: normal;
}

/* ── ⑪ 应用侧覆盖与豁免（怎么在本应用里盖掉基线）────────────────────────────
   基线不追求"一刀切"，遇到**合法的另一种写法**时按下面的办法覆盖，并在应用侧写清理由：
     · 卡片把内边距交给 .card-header/.card-body 承担（.card 本身 padding:0）：
       EX-01 实测基线给 .card 补 10px 12px 会使卡片 206→254px（+23%），
       应用侧写 `html body.wl-compact .card { padding: 0 }` 覆盖
       （特异性 0,2,2 高于基线的 0,2,1，不依赖加载顺序）。
     · 大号展示数字：基线已把 .num/.val/.value/.kpi 等的行距收到 1.15，
       若应用用的是别的小众类名，同样按上式覆盖。
   原则：**基线的数值是上限口径，不是"必须达到"**；应用比基线更紧凑时应当覆盖回自己的值，
   而不是被基线改松。 */
