/*!
 * web/assets/css/index/14-ui-unify.css
 * 全局 UI 一致性层（2026-09-12 送审反馈「把不统一的统一」）
 *
 * 背景：设计 token（--rl:12px / --rm:8px / --rs:6px）已在 01-animations.css 定义，
 * 但各页面/组件大量直接写 px（4/5/6/8/9/10/12/14/16/20…），导致同类控件圆角不一致。
 * 这里只在**最后加载**的统一层把常见组件收敛到 token 尺度，不改各页面自身实现；
 * 药丸按钮（.is-round / .is-circle）与品牌强定制件保持不动。
 */

/* 1) 按钮 / 输入 / 选择器 → --rm(8px)；药丸按钮不受影响 */
.el-button:not(.is-round):not(.is-circle){border-radius:var(--rm,8px)}
.el-input__wrapper,
.el-textarea__inner,
.el-select__wrapper{border-radius:var(--rm,8px)}
/* Numeric steppers have a dedicated shared three-segment shape in ../stepper.css. */

/* 2) 卡片 / 弹层 → --rl(12px) */
.el-card,
.el-dialog,
.el-message-box{border-radius:var(--rl,12px)}

/* 3) 标签 / 徽标等小件 → --rs(6px) */
.el-tag{border-radius:var(--rs,6px)}

/* #364（2026-10-06）el-tag 的文字位：EP 把 --el-color-primary 同时用在"底色/描边"和"文字"上，
   而浅色主题的 --pc(#007AFF) 压白面板只有 4.02:1 —— 浏览器实测商品管理筛选标签 108 处不过 AA。
   只把**文字位**换成同色相压暗的 --pci(#0069DC，4.86:1)，底色和描边仍是品牌蓝：
   不把 --el-color-primary 整体改成 --pci，那样主按钮实底会从 #007AFF 变深，和自研 .ep-btn 的
   #007AFF 就成了两个蓝（本项目 02-responsive.css 里就为"双蓝不一致"修过一次）。
   选择器只钉 .el-tag--primary（EP 的默认档），带语义色的 success/warning/danger/info 标签不受影响。 */
.el-tag--primary,.el-tag--primary.el-tag--plain,.el-tag--primary.el-tag--light,.el-tag--primary.el-tag--dark{--el-tag-text-color:var(--pci)}
.el-radio{--el-radio-checked-text-color:var(--pci)}

/* 4) 按钮文字色（2026-09-13 送审反馈「按钮文字看不清」根因修复）
 *
 * 根因：此前的 `.el-button--primary{color:#fff}` 特异性 (0,1,0) 与 EP 基类
 *   `.el-button{color:var(--el-button-text-color)}` 相同，但本文件最后加载 → 覆盖成功；
 *   而 Element Plus 的**描边按钮**（`.is-plain` / `.is-text` / `.is-link`）只在
 *   **CSS 变量**里给文字色（`--el-button-text-color: var(--el-color-primary)`），
 *   并没有再写一条 `color:` 规则，于是被这里的 `#fff` 强行刷白 →
 *   白底/浅底上「白字 + 彩色细边框」= 看不清（截图现象）。
 *
 * 正确写法（对齐 Element Plus 官方 button 文档的 plain 语义）：
 *   ① 只有**实色按钮**才强制白字；
 *   ② 描边/文字/链接按钮「文字色 = 边框色」，悬停 / 按下才反白（实底白字）。
 * 注意：`.el-button--primary{color:#fff}` 这种裸类名在任何页面都不要再用。
 */
.el-button--primary:not(.is-plain):not(.is-text):not(.is-link),
.el-button--success:not(.is-plain):not(.is-text):not(.is-link),
.el-button--danger:not(.is-plain):not(.is-text):not(.is-link),
.el-button--warning:not(.is-plain):not(.is-text):not(.is-link),
.el-button--info:not(.is-plain):not(.is-text):not(.is-link){color:#fff}

/* 描边按钮：文字与边框同色（用类型实色，不用 light-5，保证可读） */
.el-button--primary.is-plain{--el-button-border-color:var(--el-color-primary);--el-button-text-color:var(--el-color-primary)}
.el-button--success.is-plain{--el-button-border-color:var(--el-color-success);--el-button-text-color:var(--el-color-success)}
.el-button--warning.is-plain{--el-button-border-color:var(--el-color-warning);--el-button-text-color:var(--el-color-warning)}
.el-button--danger.is-plain{--el-button-border-color:var(--el-color-danger);--el-button-text-color:var(--el-color-danger)}
.el-button--info.is-plain{--el-button-border-color:var(--el-color-info);--el-button-text-color:var(--el-color-info)}


/* 5) tab 选中态可见性兜底：无论主题一律用主色高亮当前项 */
.el-tabs__item.is-active,
.el-radio-button.is-active .el-radio-button__inner{
  color:var(--pci,#007AFF);
}

/* ============================================================================
 * 按钮文字 / 边框色（2026-09-13 第三轮送审反馈 #3 定版）
 * 依据 Element Plus 官方 button 文档的语义，但按用户明确要求调整：
 *   · 描边按钮（.is-plain）：**默认与 hover/按下 都保持「文字 = 边框色」**，
 *     不再反白（旧版 hover 变白字，在浅色/白色底上会出现白字白底看不清）；
 *   · **白色 / 浅色边框一律改深色**（无类型按钮统一用 --el-text-color-primary，
 *     绝不出现白色边框 + 白字）；
 *   · 有类型时边框与文字都用该类型的实色（primary/success/warning/danger/info）；
 *   · 实色按钮保持白字（见上方 :not(.is-plain)... 规则）。
 * ============================================================================ */

/* 1) 无类型的描边按钮：文字与边框都用主文本色（深色，禁止白色） */
.el-button.is-plain{
  --el-button-text-color:var(--el-text-color-primary);
  --el-button-border-color:var(--el-text-color-primary);
}

/* 2) 有类型：文字与边框都用类型实色 */
.el-button--primary.is-plain{--el-button-text-color:var(--el-color-primary);--el-button-border-color:var(--el-color-primary)}
.el-button--success.is-plain{--el-button-text-color:var(--el-color-success);--el-button-border-color:var(--el-color-success)}
.el-button--warning.is-plain{--el-button-text-color:var(--el-color-warning);--el-button-border-color:var(--el-color-warning)}
.el-button--danger.is-plain{--el-button-text-color:var(--el-color-danger);--el-button-border-color:var(--el-color-danger)}
.el-button--info.is-plain{--el-button-text-color:var(--el-color-info);--el-button-border-color:var(--el-color-info)}

/* 3) hover / 按下：文字继续跟随边框色，背景只做浅色底（不反白、不实底） */
.el-button.is-plain{
  --el-button-hover-text-color:var(--el-button-text-color);
  --el-button-hover-border-color:var(--el-button-border-color);
  --el-button-hover-bg-color:var(--el-fill-color-light);
  --el-button-active-text-color:var(--el-button-text-color);
  --el-button-active-border-color:var(--el-button-border-color);
  --el-button-active-bg-color:var(--el-fill-color);
}

/* 4) 兜底：任何「无类型」按钮的文字都不允许是白色 */
.el-button:not(.el-button--primary):not(.el-button--success):not(.el-button--danger):not(.el-button--warning):not(.el-button--info):not(.is-plain){
  color:var(--el-text-color-primary);
}

/* ============================================================================
 * 5) 描边 / 文字 / 链接按钮的对比度下限（2026-09-27 #182，实测驱动，不是拍脑袋调深）
 *
 * 实测（tools/check_button_contrast.js，7 个页面 × 明暗两套 × 每个可见按钮，WCAG AA）：
 *   浅色描边按钮 416 个里 115 个不达标，最低 2.04:1：
 *     警告 rgb(230,162,60) on #FDF6EC = 2.04 / 成功 rgb(103,194,58) on #F0F9EB = 2.08
 *     危险 rgb(245,108,108) on #FEF0F0 = 2.61 / 主色 rgb(0,122,255) on #ECF5FF = 3.65
 *   12px 小字要求 4.5:1 —— 这就是「按钮字看不清」的量化版本。
 *
 * 两层根因（第一层不修，第二层白做）：
 *   a) `--el-color-primary` 从来没绑到应用主色：EP 自带 #409eff，应用主色是 #007AFF，
 *      于是 tab / 弹窗一个蓝、按钮另一个蓝（「风格不统一」的来源之一）。
 *      而唯一一条映射规则被注释里那串 glob 写法（星号紧跟斜杠）提前闭合吃掉了 —— 见
 *      tools/check_css_comments.py 的门禁说明。
 *   b) success/warning/danger/info 四个语义色连映射都没有，一直在用 EP 默认色，
 *      再叠 EP 的 light-9 浅色底，就在 2.0~2.6 之间。
 *
 * 做法：色相不动，只把**文字和描边**换成同色相压暗后的墨色（01-animations.css 的
 *   --p*ci，对白底 / 页面底 / 四种浅色底纹都 ≥4.6），实心底色和图标仍用原品牌色。
 *   暗黑下墨色换成提亮的同名变量（--pc 在深底 4.01 也不够，必须另给一套）。
 * ========================================================================== */

/* 5.1 EP 语义色接到应用色板（明暗都声明：EP 自己的 html.dark 权重比 :root 高） */
:root,:root.dark{--el-color-primary:var(--pc);--el-color-success:var(--sc);--el-color-warning:var(--wc);
  --el-color-danger:var(--dc);--el-color-error:var(--dc);--el-color-info:var(--ts)}
/* EP 的 light-3 就是它给"描边按钮文字 / hover 文字"用的那一档 —— 整档换成墨色，
   这样所有组件（不止按钮）走 light-3 的文字都一起达标，而不是只修按钮这一处。 */
:root,:root.dark{--el-color-primary-light-3:var(--pci);--el-color-success-light-3:var(--sci);
  --el-color-warning-light-3:var(--wci);--el-color-danger-light-3:var(--dci);--el-color-error-light-3:var(--dci);
  --el-color-info-light-3:var(--ifi)}

/* 5.2 描边 / 文字 / 链接：文字用墨色；边框保留品牌色（边框是非文本元素，3:1 就够，
   而 #007AFF on 白 = 4.02 本来就过），这样按钮既有对比度又不失去品牌色的辨识度 */
.el-button--primary.is-plain,.el-button--primary.is-text,.el-button--primary.is-link{--el-button-text-color:var(--pci);--el-button-hover-text-color:var(--pci);--el-button-active-text-color:var(--pci)}
.el-button--success.is-plain,.el-button--success.is-text,.el-button--success.is-link{--el-button-text-color:var(--sci);--el-button-hover-text-color:var(--sci);--el-button-active-text-color:var(--sci)}
.el-button--warning.is-plain,.el-button--warning.is-text,.el-button--warning.is-link{--el-button-text-color:var(--wci);--el-button-hover-text-color:var(--wci);--el-button-active-text-color:var(--wci)}
.el-button--danger.is-plain,.el-button--danger.is-text,.el-button--danger.is-link{--el-button-text-color:var(--dci);--el-button-hover-text-color:var(--dci);--el-button-active-text-color:var(--dci)}
.el-button--info.is-plain,.el-button--info.is-text,.el-button--info.is-link{--el-button-text-color:var(--ifi);--el-button-hover-text-color:var(--ifi);--el-button-active-text-color:var(--ifi)}
/* 无类型描边按钮：hover 时 EP 会把文字刷成主色浅档，这里锁回主文本色 */
.el-button.is-plain,.el-button.is-text,.el-button.is-link{--el-button-hover-text-color:var(--el-button-text-color);
  --el-button-active-text-color:var(--el-button-text-color)}


/* ===== 分段页签（.seg-tabs）：列表状态筛选的统一控件（2026-09-23 图3「风格统一」+ 订单列表页签反馈）=====
 * 为什么新做一个类而不是继续用 el-tag：订单列表原先是 8 个 el-tag size=small 挤在一行 ——
 * 商户原话「tab 不明显、太小了」。el-tag 是「标记」语义（12px、灰底、无选中态高度变化），
 * 拿来做主筛选既看不清选中哪个也点不准（44px 触控标准不达标）。
 * 这里按 iOS 分段控件的形制作成套：整条用 --seg 轨道、选中块用 --seg-active + 阴影、
 * 计数做成小圆角徽标；暗色模式下轨道/滑块/文字全部走 token（历史踩坑 #51 暗色不可见）。
 */
.seg-tabs{display:flex;align-items:stretch;gap:2px;padding:3px;background:var(--seg,#E5E5EA);
  border-radius:calc(var(--rm,8px) + 4px);overflow-x:auto;overscroll-behavior-x:contain;
  -webkit-overflow-scrolling:touch;scrollbar-width:none;touch-action:pan-x}
.seg-tabs::-webkit-scrollbar{display:none}
.seg-tab{flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;
  min-height:34px;padding:6px 12px;border:0;background:transparent;color:var(--ts,#636366);
  font-size:14px;line-height:1.2;border-radius:calc(var(--rm,8px) + 1px);
  white-space:nowrap;cursor:pointer;-webkit-tap-highlight-color:transparent;
  transition:background .18s ease,color .18s ease,box-shadow .18s ease}
.seg-tab__n{display:inline-block;min-width:20px;padding:0 5px;height:18px;line-height:18px;
  text-align:center;font-size:11px;font-variant-numeric:tabular-nums;
  border-radius:9px;background:rgba(120,120,128,.18);color:inherit}
.seg-tab--on{background:var(--seg-active,#FFF);color:var(--tc,#1C1C1E);font-weight:600;
  box-shadow:0 1px 3px rgba(0,0,0,.12)}
.seg-tab--on .seg-tab__n{background:rgba(0,122,255,.14);color:var(--pci,#007AFF)}
.seg-tab:focus-visible{outline:2px solid var(--pc,#007AFF);outline-offset:1px}
/* 窄屏（移动端主力）：不缩字号，靠横向滑动 + 左右留白，保证 ≥34px 命中区 */
@media (max-width:767px){
  .seg-tab{font-size:15px;padding:7px 13px;min-height:36px}
}
/* 安全区与吸顶：移动端筛选条常配 position:sticky */
.seg-tabs--sticky{position:sticky;top:0;z-index:6;margin:0 calc(var(--rs,6px) * -1);
  padding-left:var(--rs,6px);padding-right:var(--rs,6px);
  background:linear-gradient(var(--bg,#F2F2F7),var(--bg,#F2F2F7) 70%,rgba(0,0,0,0))}

/* ===== 暗色模式输入控件边框（2026-09-23 图「输入框边框被遮挡」全项目）=====
 * 实测（headless Edge + getComputedStyle）：`.el-input__wrapper` 的边框是
 *   box-shadow: rgb(76,77,79) 0 0 0 1px inset，height:32px，父级 overflow:visible
 * —— 边框**没有被裁掉**，而是 1px 的 #4C4D4F 环压在 #1C1C1E 卡片上，肉眼几乎看不见；
 * 同屏的日期框却看得出边框（它走 EP 自己的 --el-border-color 变量）。
 * 所以这不是「遮挡」而是「暗色边框 token 与底色差太小 + 各控件取的不是同一个变量」。
 * 修法：在统一层给暗色下的输入/选择/文本域指定一个明确的、比底色亮一档的环，
 * 并保证 hover/focus 递进可见；不改 EP 变量本身，避免影响浅色模式与其它组件。
 */
:root.dark .el-input__wrapper,
:root.dark .el-select__wrapper,
:root.dark .el-textarea__inner{box-shadow:0 0 0 1px #5A5B60 inset}
:root.dark .el-input__wrapper:hover,
:root.dark .el-select__wrapper:hover,
:root.dark .el-textarea__inner:hover{box-shadow:0 0 0 1px #7A7B82 inset}
:root.dark .el-input__wrapper.is-focus,
:root.dark .el-select__wrapper.is-focused,
:root.dark .el-textarea__inner:focus{box-shadow:0 0 0 1px var(--pc,#007AFF) inset}
/* 禁用态要退回「无环」，否则灰底上会出现一圈假边框 */
:root.dark .el-input.is-disabled .el-input__wrapper,
:root.dark .el-select__wrapper.is-disabled{box-shadow:0 0 0 1px #3A3A3C inset}
/* 高度：暗色下环可见后，32px 的输入框显矮（移动端命中区也不达标），统一抬到 34/36 */
:root.dark .el-input:not(.el-input--small):not(.el-input--large)>.el-input__wrapper{min-height:34px}

/* ===== 对账页三处（2026-09-23 图1 标注）===== */
/* ① 「太靠上」：桌面端页签条与页头之间 0 间距，标题像被顶出去（移动端有安全区所以不明显）。
      统一层给带页签的桌面布局补 8px，移动端不加（那里页头本来就要贴状态栏）。 */
@media (min-width:768px){
  /* 类名实测是 .ep-navbar（首版误写成 .ep-nav-bar → 规则不命中，白加） */
  .page>.ep-navbar{margin-top:8px}
}
/* ② KPI 卡「对比度太高」：暗色下 --tc 是 #F5F5F7，再叠 700 字重 + 17px，压在 #1f2937 卡片上
      非常刺眼；语义色（橙/绿）在暗色里也是满饱和。收敛为「略低于正文白 + 字重降一档 +
      语义色降饱和」，层级仍然清晰（数字仍大于标签），但不再生硬。 */
:root.dark .recon-summary .rs-num{color:#D8D8DE;font-weight:600}
:root.dark .recon-summary{--wc:#D9963F;--dc:#E06A6A;--sc:#4FB477;--pc:#4C8DFF}
:root.dark .recon-summary .rs-lab{color:#9A9AA2}
:root.dark .recon-summary .rs-card{background:#232326;border:1px solid #3A3A3E;box-shadow:none}
/* ③ 搜索行：label 与 placeholder 以前是同一句（像重复渲染），placeholder 已换成可搜内容示例；
      这里再把右侧图标按钮的命中区补足到 44px，移动端才点得准。 */
.ep-search .el-input__suffix,.ep-field .el-input__suffix{display:flex;align-items:center;min-width:34px;justify-content:center}

/* #105（2026-09-24）：订单列表状态页签改用登录页同一控件 el-segmented。
   与 .seg-tabs 共用同一组底色/圆角令牌，保证两端看起来是同一个东西。
   2026-10-02（#285 补 #173 遗留）：窄屏原来只是"能横滑 + 把滚动条藏掉"，
   390px 实测组宽 433 > 可视 330，最后一个页签切在字中间（「退…」）且**没有任何滑动线索**，
   用户读到的是"控件坏了"。
   试过改成换行两行（实测 7 个页签两行放齐、最右 314<390），但**放弃**：
   EP 的选中带是 `position:absolute` 且行内写 `height:100%`，换行后变成跨两行的色块；
   把它 display:none 掉再自绘选中色，暗黑模式立刻变成白底白字（实测）——
   自绘配色等于把主题令牌的第二份实现搬进来，违反「口径只在一处」。
   所以保留组件自己的选中带，只补"可滑动"这件事的表达：边缘渐隐 + 吸附到整项 +
   尾部留白让最后一项能完整停住。 */
/* #304（2026-10-03）：旧写法两个变量名/令牌都是错的，选中态因此一直是「蓝底 + 深色字」——
   ① `--el-segmented-item-selected-bg` 少写了 `-color`（EP 2.14.4 真实变量名见 vendor：
      `--el-segmented-item-selected-bg-color`），声明从未生效，底色退回 EP 默认的 --pc 纯蓝；
   ② 就算生效，`var(--c,#fff)` 里的 `--c` 在本项目根本不存在（令牌表是 --pc/--tc/--cd/--pci…）。
   实测：选中块 rgb(0,122,255)、文字 rgb(28,28,30) → 对比度 3.35:1，业主「黑色看着不清楚」。
   现在按业主「选中态文字改白」的要求，底色/文字走**新配的成对令牌** --seg-on-bg / --seg-on-fg：
   浅色 #0069DC + 白 = 5.18:1；暗黑 #3596FF + #08203C = 5.43:1（都是 WCAG AA 4.5 以上，实测见下）。
   为什么暗黑不能也上白字：--pci 在暗黑里是「亮蓝」，白字压上去只有 3.02:1，
   比修之前的 3.35:1 还差——把「白字」写成常量等于在暗黑里造一个不合格态。
   之所以单列一对而不是复用 --pci/--tc：--pci 是"彩色的墨"、--tc 是"页面正文"，
   这里要的是"承住白字的彩色底"，方向相反；混用会让下一次换主题时其中一半必然失配（已踩）。
   两条都由 tools/check_button_contrast.js 量 computed 值钉（该门禁已把分段页签纳入样本）。 */
.ord-seg{width:100%;--el-segmented-item-selected-bg-color:var(--seg-on-bg,#0069DC);--el-segmented-item-selected-color:var(--seg-on-fg,#fff);font-size:12px}
.ord-seg .el-segmented__group{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.ord-seg .el-segmented__group::-webkit-scrollbar{display:none}
.ord-seg .el-segmented__item{min-height:38px;padding:6px 10px;font-size:12px;white-space:nowrap}
.ord-seg .el-segmented__item-selected{border-radius:calc(var(--rs,6px) - 2px);box-shadow:0 1px 2px rgba(0,0,0,.10)}
@media (max-width:767px){
  .ord-seg .el-segmented__group{scroll-snap-type:x proximity;padding-right:18px;
    -webkit-mask-image:linear-gradient(90deg,#000 0,#000 calc(100% - 28px),rgba(0,0,0,.25) 100%);
    mask-image:linear-gradient(90deg,#000 0,#000 calc(100% - 28px),rgba(0,0,0,.25) 100%)}
  .ord-seg .el-segmented__item{flex:0 0 auto;scroll-snap-align:start}
}
@media (min-width:768px){.ord-seg .el-segmented__item{font-size:13px;padding:7px 14px}}

/* ============================================================================
 * 2026-09-22 多分辨率扫描（360/390/768 实测）：移动端可点区
 * 主力页面上一批常用控件明显低于可用下限 —— 搜索/重置/导出/打印/扫码/加入购物车
 * 这类 .el-button 实测 30px 高，筛选展开条 31px，发货记录摘要行 27px，
 * 商品卡名称（点开规格弹层）20px，对账「商品明细 ▾」只有 13px。
 * 手机是「档口搬货、单手、边走边用」的场景，点不中和误触是真实成本。
 * 放在本文件是因为加载顺序在 04-components.css 之后，写在前面的同名规则会被盖掉。
 * 改后已在 360/390/768 三档复跑全站巡检验证：横向溢出 0、文字裁切 0。
 *
 * 2026-09-25（#86）：这一批当时只抬到 38/36/34，仍低于 §42 写的 44px 下限。
 * 375×667 真像素复测（headless Edge，只数控件外壳、不重复计内层）：
 *   /customers 534 个可控件低于 44 —— 客户列表每行「编辑·删除」各 266 个，尺寸 36×38；
 *   /pos 64（收银按钮 203×36 ×30、62×36 ×30、74×36、80×38、46×36）；
 *   /payments 7（输入框外壳 180×24 ×2、文本按钮 30×38 ×3）；/sales 7；/orders 2。
 * 本块整体抬到 44×44：min-height 覆盖 EP 写死的 height，min-width 管住 36 宽的圆角按钮
 * 与 30 宽的文本按钮（实测宽度这类按钮是短板，36×38 两头都不够）。
 * 只改命中区尺寸，不动字号/padding/行内布局 —— 避开 §64 那类"局部补丁把内容挤没"的连带破坏。
 * 复测同口径：五页低于 44 的计数 614 → 0，横向溢出仍 0。
 * ==========================================================================*/
@media(max-width:768px){
  .el-button{min-height:44px;min-width:44px}
  .el-button--small{min-height:44px}
  .search-toggle{padding:11px 12px}
  .dt-picker{min-height:44px;display:flex;align-items:center}
  /* 输入框外壳：实测 180×24 / 156×34 / 303×36 —— 壳就是命中区，里面 .el-input__inner 不必单独撑 */
  .el-input__wrapper{min-height:44px}
  .ep-cell{padding-top:12px;padding-bottom:12px}
  /* 发货记录卡片第二行（商品摘要）：整行可点展开，27px 太薄 */
  .srec-r2{padding-top:7px;padding-bottom:7px}
  /* 商品卡名称点开规格弹层，20px 命中区几乎点不到；上下加内边距撑到 ~44px */
  .pos-card__name{padding:12px 0}
  /* 数字输入框的加减按钮触屏命中区 ≥44px。
     原来写的是 `.el-input-number__decrease/__increase{min-height:44px}` —— 按钮是
     `position:absolute;top:0;bottom:0;height:100%`，外壳只有 32/36px，min-height 把按钮
     撑到 44px 后越过外壳，而外壳带 overflow:hidden + border-radius:999px，
     结果就是截图里「± 圆按钮被上下各切一刀」；上下箭头式（controls-position:right）更糟，
     两个各 44px 的按钮塞进 32px 外壳，第二个直接被挤出可视区。#254
     正确做法：把 44px 加在**外壳**上，按钮 height:100% 自然跟着长高，谁也不溢出谁。 */
  .el-input-number{min-height:44px}
  /* #386 输入框与同一排按钮差 2px（实测 /materials、/products 的「扫码 / 更多 / 排序」行：
     按钮 44、输入框 46，顶边错开 1px —— 判据 K 就是把这种"看着没对齐"抓出来的）。
     根因不是哪一页写歪：EP 的 `.el-input__inner` 带 line-height:32，外壳再用 min-height + 上下 padding
     叠出 46。min-height 只能保证"不小于 44"，保证不了"等于同一档"，
     所以这里给外壳一个**确定高度**并把内容居中，内层行高交还给 normal。
     ⚠ 必须排掉 `--large`：POS 的商品搜索框、入库扫码框用的就是大一号输入框（刻意给的大命中区），
     一刀切 height 会把它们压回 44 —— 那正是上面 334 行那条暗黑规则当初排掉 large 的同一个理由。 */
  .el-input:not(.el-input--large)>.el-input__wrapper{height:44px;padding-top:0;padding-bottom:0;align-items:center}
  .el-input:not(.el-input--large) .el-input__inner{line-height:normal}
  /* 对账单「商品明细 ▾」展开条：原命中区 66x13 */
  .recon-prod-toggle{padding:9px 12px}
  /* 对账单整单展开条：和上面那条同理，但它是裸 `<span>`（05-dark 给 display:inline-block，
     行高只跟着字号走），加完内边距实测 37px 仍不到 44。这里直接把它做成 flex 壳子撑高度，
     而不是再堆 padding —— padding 撑到 44 会让文字在行里明显下沉。 */
  .recon-toggleall{min-height:44px;display:inline-flex;align-items:center;padding:9px 12px}
  /* 首页/销售列表的状态筛选标签（.filter-bar 里的可点 el-tag）：20px 太薄。
     只作用于筛选条，不动表格里的状态标签，避免把行高整体撑大。 */
  .filter-bar .el-tag{min-height:44px;display:inline-flex;align-items:center}
  /* 下拉选择器 32px，触屏偏小 */
  .el-select__wrapper{min-height:44px}
}

/* 必须放文件末尾：同名单选规则按加载/书写顺序生效，前面的会被后面的 .seg-tab /
 * :root.dark .el-input__wrapper / .ord-seg .el-segmented__item 等重新压回 34~38px
 * （#86 实测：块写在本文件中段时，五页仍剩 7 个输入框外壳是 34/36 高）。
 * 这里一次性把剩下的可点控件也抬到 44。 */
@media(max-width:768px){
  .seg-tab{min-height:44px}
  .ord-seg .el-segmented__item{min-height:44px}
  .el-tabs__item{min-height:44px}
  .el-checkbox{min-height:44px}
  .el-radio{min-height:44px}
  .el-switch{min-height:44px}
  /* 暗色模式单独补：`:root.dark .el-input:not(.el-input--small):not(.el-input--large)>.el-input__wrapper`
     的特异度比上面那条 .el-input__wrapper 高，不写这条暗色下输入框还是 34px */
  :root.dark .el-input:not(.el-input--small):not(.el-input--large)>.el-input__wrapper{min-height:44px}
}

/* 2026-09-27（#175 图2）：禁用态按钮的文字看不见。
   Element Plus 的 primary 禁用态是"白字 + 主色浅 5 阶底"，实测配送管理底部
   「指派配送员（0）」= rgb(255,255,255) on rgb(160,207,255) → **对比度 1.63:1**，
   用户原话"按钮文字看不到"。禁用 ≠ 看不见：它仍然要把"这一步能做什么"讲清楚
   （这里就是"先勾选才能批量指派"），所以换成"灰底 + 深灰字"，读得出、也一眼看得出不可点。
   必须写在文件末尾并用 !important：EP 自己那条 `.el-button--primary.is-disabled`
   走的是组件内 CSS 变量，普通覆盖压不住（§76 同一课）。 */
.el-button.is-disabled,
.el-button.is-disabled:focus,
.el-button.is-disabled:hover {
  color: #5b6472 !important;
  background: #eef1f6 !important;
  border-color: #dfe4ec !important;
  opacity: 1;
}
/* 暗色要单独补一条同特异度的规则，否则暗色下还是那套浅蓝底白字 */
:root.dark .el-button.is-disabled,
:root.dark .el-button.is-disabled:focus,
:root.dark .el-button.is-disabled:hover {
  color: #98a2b3 !important;
  background: #2a3140 !important;
  border-color: #3a4150 !important;
}
/* 链接型/文字型的禁用态没有底色，只要保证字色够深 */
.el-button.is-disabled.is-link, :root.dark .el-button.is-disabled.is-link,
.el-button.is-disabled.is-text, :root.dark .el-button.is-disabled.is-text {
  background: transparent !important; border-color: transparent !important;
  /* #196：设计器工具栏整排都是 text 按钮，禁用态以前只靠变淡区分，
     浅底上淡到看不清（截图里 撤销/重做/复制元素 像被擦掉）。
     禁用态统一到 --sci 墨色（浅色实测对比度 ≥4.5:1），可点与不可点一眼分得开。 */
  color: var(--sci) !important;
}

/* #364 续：选中态的单选项文字（EP 用 --el-color-primary 当这个字的颜色，浅主题 4.02:1 不过 AA）。
   与 EP 同特异度、写在它之后，所以只换文字色，圆圈和描边仍是品牌蓝。 */
.el-radio__input.is-checked + .el-radio__label{color:var(--pci)}

/* ============================================================
 * #447（2026-10-10）协议勾选行 —— 全站唯一一份实现
 *
 * 业主原话：「弹窗的UI需要进行优化，文字排版这些。宽度限制，文字需要自动换行。
 * 不能一个弹窗这么大。文字颜色等需要进行优化」。
 *
 * 病根（不是"配色不好看"，是三条机制缺口）：
 *  ① 原来两处（充值弹窗 / 套餐购买弹窗）各自内联写了一条背景，用的变量名
 *     全项目**从来没有定义过**（css/ 目录里搜它的定义 = 0 命中），于是暗黑档下这一行
 *     永远走那条浅色兜底 = 业主截图里"整条纯白底横条 + 黑字"。
 *     与 AGENTS §169.1 的 D1 判据同形（未定义变量 + 浅色兜底 + 作用在背景上）。
 *     —— 本条注释刻意不抄那个变量名的字面量：§120.6 记过"注释里引用被删掉的旧代码
 *     字面量，会把拿原文做 needle 的断言撞红"。
 *  ② 没有 max-width、没有 overflow-wrap → 桌面端 el-dialog 宽 50%，这一行横向铺满，
 *     就是"一个弹窗这么大"。
 *  ③ 复选框是裸 input，13×13 的触摸命中区，低于 §42 的 44px 下限。
 *
 * 口径：
 *  - 底色 `--cb`（浅 #F2F2F7 / 暗 #2C2C2E），墨色 `--tc`（浅 #1C1C1E / 暗 #F5F5F7）。
 *    **不用 --ts**：--ts 压在 --cb 上暗黑档实测只有 4.27:1，不过 4.5:1；
 *    --tc on --cb 实测 浅 15.25:1 / 暗 12.80:1。
 *  - 链接色 `--pci`（墨色版主色，§364 那条"color: 位用 --pci，不许拿 --pc 当墨水"）：
 *    实测 浅 4.64:1 / 暗 4.62:1，两档都过 AA。
 *  - 命中区靠 `.agmt-consent__hit` 这层 label 撑到 44×44（复选框视觉尺寸仍 18px，
 *    §103 的"保留视觉尺寸、外扩命中区"同一手法），文字与方框都按 flex-start 顶对齐，
 *    多行时方框只跟第一行齐平，不会被拉到中间去"字压框"。
 *  - 兜底值一律给**同语义的浅色**（`--cb`→#f2f2f7、`--tc`→#1c1c1e、`--pci`→#0069dc），
 *    这样即使本文件没加载也不会退回"白底黑字"那种未定义变量的老形状。
 * ============================================================ */
.agmt-consent{
  display:flex;align-items:flex-start;gap:8px;
  max-width:640px;margin:12px auto 0;padding:10px 2px;
  /* #496（2026-10-13）：去掉整块底色与描边 —— 业主原话「我已阅读并同意区域的背景去掉」。
     这行字是页面既有节奏的一部分，套一层卡片底反而把它读成"另一个模块"；
     命中区（__hit / __link 的 padding 外扩）不依赖背景，删掉不影响 44px 触摸档。 */
  font-size:12px;line-height:1.6;
  color:var(--tc,#1c1c1e);
}
/* 命中区：44×44 的 label，里面只画 18px 的方框 */
.agmt-consent__hit{
  flex:none;display:inline-flex;align-items:flex-start;justify-content:center;
  min-width:44px;min-height:44px;padding-top:3px;cursor:pointer;
}
/* 方框本身 18px 且 **pointer-events:none**：点击由外层 label 转发（label 的激活行为），
   键盘仍然能 Tab 到并空格勾选（pointer-events 不影响可聚焦性）。
   不这么做，触摸档会把这枚 18px 的 input 单独算成一个"小命中区"——
   §120.8 第 8 条定的口径：整块可点 + 行内子元素不许各自成为窄触点。 */
.agmt-consent__hit input{width:18px;height:18px;margin:0;accent-color:var(--pc,#007aff);pointer-events:none}
/* 文字区：min-width:0 才肯在 flex 里收缩，否则长语种（vi/ko）会把整条撑出弹窗 */
.agmt-consent__text{flex:1;min-width:0;overflow-wrap:anywhere;word-break:normal;text-align:left}
/* #496：协议正文改中性墨色后，正文里真出现的链接仍要认得出来（否则等于取消可点性）。
   容器色在 agreement-popup.js 的行内样式上（--tc），这里只补链接一档。 */
.agmt-body a{color:var(--pci,#0069dc);text-decoration:underline}
.agmt-consent__link{
  color:var(--pci,#0069dc);text-decoration:underline;cursor:pointer;
  /* 行内链接的命中区外扩：上下各 13px padding + 等值负 margin → 量到 45px ≥ 44px 下限，
     而负 margin 把多出来的高度还给行盒，视觉上一个像素都没动（§103/§157.2 同一手法）。
     不做这一步，登录页那一行在 390/360 触摸档上会当场红成"小命中区"（基线已冻结为 0）。 */
  display:inline-block;padding:13px 0;margin:-13px 0;
}
/* 充值/购买这类 el-dialog 默认宽 50%，桌面超宽屏上就是"弹窗太大"——按内容收紧到 520px，
   窄屏仍由 02-responsive.css 的 92% !important 接管，不参与本条。 */
.agmt-dlg--compact{max-width:520px}
