/* 建圈强链 CRM · UI 组件层样式（P0-A · TP0-02 基线组件 / TP0-03 交互组件）
   依赖：tokens.css（令牌）+ style.css（控件基线：焦点环、复选框命中盒）；
   本文件只声明 ui-* 命名空间，全部颜色/字号/间距/层级取自令牌，零裸 hex、零 CDN。
   引入顺序：tokens.css → style.css → ui/ui.css
   状态钩子：.is-hover / .is-focus 与 :hover / :focus-visible 等价，供组件自查页与自动化断言复用。 */

/* ───────────────────────── 1. 基线：按钮 / 图标按钮 ───────────────────────── */
.ui-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  min-height:32px;padding:6px 12px;border:1px solid var(--line);border-radius:var(--r-2);
  background:var(--surface);color:var(--ink);font-size:var(--fs-meta);font-family:var(--sans);
  line-height:1.4;cursor:pointer;text-decoration:none;transition:background var(--t-fast),border-color var(--t-fast),color var(--t-fast);
}
.ui-btn:hover,.ui-btn.is-hover{background:var(--surface-hover);border-color:var(--blue-500)}
.ui-btn:focus-visible,.ui-btn.is-focus{outline:2px solid var(--blue-600);outline-offset:2px;border-radius:var(--r-2)}
.ui-btn[disabled],.ui-btn.is-disabled{background:var(--surface-2);color:var(--ink-2);border-color:var(--line);opacity:.65;cursor:not-allowed}
.ui-btn.ui-primary{background:var(--navy);border-color:var(--navy);color:var(--surface);font-weight:600}
.ui-btn.ui-primary:hover,.ui-btn.ui-primary.is-hover{background:var(--blue-600);border-color:var(--blue-600)}
.ui-btn.ui-primary[disabled],.ui-btn.ui-primary.is-disabled{background:var(--surface-3);border-color:var(--surface-3);color:var(--ink-2)}
.ui-btn.ui-ghost{background:transparent;border-color:transparent;color:var(--blue-600)}
.ui-btn.ui-ghost:hover,.ui-btn.ui-ghost.is-hover{background:var(--tint-info-bg);border-color:var(--tint-info-line)}
.ui-btn.ui-danger{background:var(--c-danger);border-color:var(--c-danger);color:var(--surface);font-weight:600}
.ui-btn.ui-danger:hover,.ui-btn.ui-danger.is-hover{background:var(--tint-danger-ink);border-color:var(--tint-danger-ink)}
.ui-btn.ui-sm{min-height:28px;padding:4px 10px;font-size:var(--fs-caption)}
.ui-btn-icon{font-size:var(--fs-meta);line-height:1}
.ui-icon-btn{
  display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;min-width:32px;
  border:1px solid transparent;border-radius:var(--r-2);background:transparent;color:var(--ink-2);
  font-size:var(--fs-subtitle);line-height:1;cursor:pointer;transition:background var(--t-fast),color var(--t-fast);
}
.ui-icon-btn:hover,.ui-icon-btn.is-hover{background:var(--surface-2);color:var(--ink)}
.ui-icon-btn:focus-visible,.ui-icon-btn.is-focus{outline:2px solid var(--blue-600);outline-offset:2px}
.ui-icon-btn[disabled],.ui-icon-btn.is-disabled{opacity:.5;cursor:not-allowed}
/* 命中区 ≥40×40（视觉尺寸不变）：桌面外扩 8×6，≤900px 外扩 10×8（02 §6.2） */
.ui-btn,.ui-icon-btn,.ui-chip button,.ui-ms-open,.ui-step{position:relative}
.ui-btn::after,.ui-icon-btn::after,.ui-chip button::after,.ui-ms-open::after,.ui-step::after{
  content:'';position:absolute;inset:-8px -6px;border-radius:inherit;
}

/* ───────────────────────── 2. 表单控件 ───────────────────────── */
.ui-input{
  min-height:32px;padding:6px 10px;border:1px solid var(--line);border-radius:var(--r-2);
  background:var(--surface);color:var(--ink);font-size:var(--fs-meta);font-family:var(--sans);line-height:1.4;
}
.ui-input:hover,.ui-input.is-hover{border-color:var(--blue-500)}
.ui-input:focus-visible,.ui-input.is-focus{outline:2px solid var(--blue-600);outline-offset:1px}
.ui-input[disabled],.ui-input.is-disabled{background:var(--surface-2);color:var(--ink-2);opacity:.7;cursor:not-allowed}
.ui-select{width:auto;min-width:96px}

/* 搜索框 */
.ui-search{position:relative;display:inline-flex;align-items:center;gap:6px}
.ui-search-input{min-width:220px;padding-right:30px}
.ui-search-clear{position:absolute;right:2px;top:50%;transform:translateY(-50%)}
.ui-search-clear[hidden]{display:none}
.ui-search-hint{font-size:var(--fs-caption);color:var(--ink-2)}

/* ───────────────────────── 3. 标签 / 徽章 ───────────────────────── */
.ui-tag,.ui-badge{
  display:inline-flex;align-items:center;gap:4px;border:1px solid var(--line);border-radius:var(--r-full);
  padding:1px 8px;font-size:var(--fs-caption);line-height:1.6;white-space:nowrap;
}
.ui-badge{border-radius:var(--r-2)}
.ui-badge-dot{width:6px;height:6px;border-radius:var(--r-full);background:currentColor;flex:0 0 auto}
.ui-tag-neutral,.ui-badge-neutral{background:var(--tint-neutral-bg);color:var(--tint-neutral-ink);border-color:var(--tint-neutral-line)}
.ui-tag-info,.ui-badge-info{background:var(--tint-info-bg);color:var(--tint-info-ink);border-color:var(--tint-info-line)}
.ui-tag-success,.ui-badge-success{background:var(--tint-success-bg);color:var(--tint-success-ink);border-color:var(--tint-success-line)}
.ui-tag-warning,.ui-badge-warning{background:var(--tint-warning-bg);color:var(--tint-warning-ink);border-color:var(--tint-warning-line)}
.ui-tag-danger,.ui-badge-danger{background:var(--tint-danger-bg);color:var(--tint-danger-ink);border-color:var(--tint-danger-line)}
.ui-tag-gold,.ui-badge-gold{background:var(--tint-gold-bg);color:var(--tint-gold-ink);border-color:var(--tint-gold-line)}
.ui-tag-purple,.ui-badge-purple{background:var(--tint-purple-bg);color:var(--c-purple);border-color:var(--tint-purple-line)}
.ui-tag.is-disabled,.ui-badge.is-disabled{opacity:.55}
a.ui-tag:hover,a.ui-tag.is-hover{background:var(--surface-hover)}
a.ui-tag:focus-visible,a.ui-tag.is-focus{outline:2px solid var(--blue-600);outline-offset:2px}

/* ───────────────────────── 4. 卡片 / KPI ───────────────────────── */
.ui-card{
  display:block;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-3);
  box-shadow:var(--sh-1);padding:14px 16px;color:var(--ink);text-decoration:none;
  transition:box-shadow var(--t-fast),border-color var(--t-fast);
}
a.ui-card:hover,.ui-card.is-hover{box-shadow:var(--sh-2);border-color:var(--blue-500)}
a.ui-card:focus-visible,.ui-card.is-focus{outline:2px solid var(--blue-600);outline-offset:2px}
.ui-card.is-disabled,[aria-disabled="true"].ui-card{opacity:.6;cursor:default;box-shadow:var(--sh-1)}
.ui-card-kpi{text-align:center}
.ui-card-n{display:block;font-size:var(--fs-kpi);font-weight:700;line-height:1.15;font-variant-numeric:tabular-nums}
.ui-card-t{display:block;font-size:var(--fs-meta);color:var(--ink-2);font-weight:600}
.ui-card-kpi .ui-card-t{margin-top:4px}
.ui-card-s{display:block;font-size:var(--fs-caption);color:var(--ink-2);margin-top:2px}

/* ───────────────────────── 5. 表格（DataTable 宿主） ───────────────────────── */
.ui-toolbar{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center;margin-bottom:var(--sp-2)}
.ui-left{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center}
.ui-right{margin-left:auto;display:flex;gap:var(--sp-2);align-items:center}
.ui-hint{font-size:var(--fs-caption);color:var(--ink-2)}
.ui-mono{font-family:var(--mono);font-size:var(--fs-caption)}
.ui-arw{color:var(--ink-2)}
.ui-sep{color:var(--line)}
.ui-tw{overflow:auto;border:1px solid var(--line);border-radius:var(--r-2);background:var(--surface);max-width:100%}
.ui-tw:focus-visible,.ui-tw.is-focus{outline:2px solid var(--blue-600);outline-offset:2px}
.ui-table{width:100%;border-collapse:collapse;font-size:var(--fs-meta);background:var(--surface)}
.ui-table caption{text-align:left;padding:8px 11px;color:var(--ink-2);font-size:var(--fs-caption)}
.ui-table th{
  position:sticky;top:0;z-index:var(--z-sticky-th);background:var(--surface-2);color:var(--ink-2);
  font-weight:600;text-align:left;padding:8px 11px;border-bottom:1px solid var(--line);white-space:nowrap;
}
.ui-table td{padding:9px 11px;border-bottom:1px solid var(--line-weak);vertical-align:top}
.ui-table tbody tr{min-height:var(--row-h);cursor:pointer}
.ui-table tbody tr:hover,.ui-table tbody tr.is-hover{background:var(--surface-hover)}
.ui-table tbody tr.is-selected{background:var(--tint-info-bg)}
.ui-table tbody tr:focus-visible,.ui-table tbody tr.is-focus{outline:2px solid var(--blue-600);outline-offset:-2px}
.ui-table th.ui-sortable{cursor:pointer;user-select:none}
.ui-table th.ui-sortable:hover,.ui-table th.ui-sortable.is-hover{color:var(--blue-600)}
.ui-table th.ui-sortable:focus-visible,.ui-table th.ui-sortable.is-focus{outline:2px solid var(--blue-600);outline-offset:-2px}
.ui-table th[aria-sort="ascending"]::after{content:'\2191';margin-left:4px;color:var(--blue-600)}
.ui-table th[aria-sort="descending"]::after{content:'\2193';margin-left:4px;color:var(--blue-600)}
.ui-table td.ui-sel,.ui-table th.ui-sel{padding:12px 14px}
.ui-table td.ui-editable{border-bottom:1px dashed var(--blue-500);cursor:text}
.ui-table td.ui-editing{outline:2px solid var(--blue-600);outline-offset:-2px;background:var(--surface)}
.ui-table td.ui-saving{opacity:.6}
.ui-table td.ui-save-err{background:var(--tint-danger-bg);color:var(--tint-danger-ink)}
.ui-table td.is-disabled,.ui-table td[aria-disabled="true"]{color:var(--ink-2);background:var(--surface-2)}
.ui-num,.ui-nums{font-variant-numeric:tabular-nums;text-align:right}
.ui-cell-trunc{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}
.ui-fix-l{position:sticky;left:0;z-index:var(--z-sticky-th);background:var(--surface)}
.ui-fix-r{position:sticky;right:0;z-index:var(--z-sticky-th);background:var(--surface)}
.ui-table thead .ui-fix-l,.ui-table thead .ui-fix-r{background:var(--surface-2)}
.ui-flag{display:inline-flex;align-items:center;gap:2px;font-size:var(--fs-caption);border-radius:var(--r-1);padding:0 4px;position:relative}
.ui-flag-new{color:var(--tint-info-ink);background:var(--tint-info-bg)}
.ui-flag-chg{color:var(--tint-warning-ink);background:var(--tint-warning-bg)}
.ui-flag-arch{color:var(--tint-neutral-ink);background:var(--tint-neutral-bg)}
/* 可点标记（「⚠️ 源变更」复核入口）命中区：视觉尺寸不变，::after 外扩（02 §6.2 A11Y-5） */
.ui-flag-clickable::after,button.ui-flag::after{content:'';position:absolute;inset:-8px -6px;border-radius:inherit}
.ui-table-foot{
  display:flex;flex-wrap:wrap;gap:var(--sp-3);align-items:center;justify-content:space-between;margin-top:var(--sp-2);
}
.ui-row{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center}
.ui-acts{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.ui-seeall{font-size:var(--fs-caption);color:var(--blue-600);background:none;border:0;cursor:pointer;padding:0}
.ui-loading{opacity:.6;pointer-events:none}

/* ───────────────────────── 6. 分页 ───────────────────────── */
.ui-pager{display:flex;flex-wrap:wrap;gap:10px;align-items:center;font-size:var(--fs-meta);color:var(--ink-2)}
.ui-pager-info{font-variant-numeric:tabular-nums}
.ui-pager-size{display:inline-flex;align-items:center;gap:4px}
.ui-pager-acts{display:inline-flex;gap:6px;margin-left:auto}

/* ───────────────────────── 7. 空态 / 骨架屏 / 面板四态 ───────────────────────── */
.ui-empty{
  padding:26px 22px;text-align:center;background:var(--surface);border:1px dashed var(--line);
  border-radius:var(--r-3);color:var(--ink-2);
}
.ui-empty-title{font-size:var(--fs-subtitle);color:var(--ink);margin-bottom:4px}
.ui-empty-desc{font-size:var(--fs-meta);margin-bottom:10px}
.ui-empty-acts{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}
.ui-skel{display:grid;gap:8px;padding:12px}
.ui-skel-row{display:flex;gap:10px}
.ui-skel-b{height:12px;flex:1;background:var(--surface-3);border-radius:var(--r-full);animation:ui-skel-pulse 1.4s ease-in-out infinite}
.ui-skel-w1{flex:0 0 12%}
.ui-skel-w2{flex:0 0 20%}
.ui-skel-w3{flex:0 0 32%}
.ui-skel-block{background:var(--surface-3);border-radius:var(--r-2)}
.ui-skel-note{font-size:var(--fs-meta);color:var(--ink-2);padding:0 12px 12px}
@keyframes ui-skel-pulse{0%,100%{opacity:1}50%{opacity:.45}}
.ui-state{
  padding:24px 20px;text-align:center;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-3);color:var(--ink-2);
}
.ui-state-title{font-size:var(--fs-subtitle);color:var(--ink);margin-bottom:4px}
.ui-state-body{font-size:var(--fs-meta);margin-bottom:12px}
.ui-state-acts{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}
.ui-state-tech{margin-top:12px;text-align:left}
.ui-state-tech>summary{cursor:pointer}
.ui-errbox{
  margin:8px 0 0;padding:10px 12px;background:var(--tint-danger-bg);color:var(--tint-danger-ink);
  border:1px solid var(--tint-danger-line);border-radius:var(--r-2);font-family:var(--mono);
  font-size:var(--fs-caption);white-space:pre-wrap;overflow:auto;
}
.ui-state[data-state="denied"]{border-color:var(--tint-warning-line);background:var(--tint-warning-bg);color:var(--tint-warning-ink)}
.ui-state[data-state="error"]{border-color:var(--tint-danger-line)}

/* ───────────────────────── 8. 筛选条 / 批量栏 ───────────────────────── */
.ui-filterbar{
  display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;padding:10px 12px;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--r-3);
}
.ui-filterbar-row{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;flex:1}
.ui-filterbar-field{display:flex;flex-direction:column;gap:4px}
.ui-filterbar-lab{font-size:var(--fs-caption);color:var(--ink-2)}
.ui-filterbar-side{margin-left:auto;display:flex;gap:8px;align-items:center}
.ui-filterbar-count{font-size:var(--fs-meta);color:var(--ink-2);font-variant-numeric:tabular-nums}
.ui-batch{
  display:flex;flex-wrap:wrap;gap:10px;align-items:center;padding:8px 12px;border-radius:var(--r-2);
  background:var(--tint-info-bg);border:1px solid var(--tint-info-line);color:var(--tint-info-ink);font-size:var(--fs-meta);
}
.ui-batch[hidden]{display:none}
.ui-batch-count{font-weight:600;font-variant-numeric:tabular-nums}
.ui-batch-scope{display:inline-flex;gap:4px}
.ui-batch-scope-btn[aria-pressed="true"]{background:var(--surface);border-color:var(--navy);color:var(--navy);font-weight:600}
.ui-batch-acts{margin-left:auto;display:flex;flex-wrap:wrap;gap:8px;align-items:center}

/* ───────────────────────── 9. 多选（MultiSelect J-18） ───────────────────────── */
.ui-ms{position:relative;display:inline-block;min-width:200px}
.ui-ms-open{
  display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;min-height:32px;padding:6px 10px;
  border:1px solid var(--line);border-radius:var(--r-2);background:var(--surface);color:var(--ink);
  font-size:var(--fs-meta);cursor:pointer;
}
.ui-ms-open:hover,.ui-ms-open.is-hover{border-color:var(--blue-500);background:var(--surface-hover)}
.ui-ms-open:focus-visible,.ui-ms-open.is-focus{outline:2px solid var(--blue-600);outline-offset:2px}
.ui-ms-open[disabled],.ui-ms-open.is-disabled{background:var(--surface-2);color:var(--ink-2);opacity:.7;cursor:not-allowed}
.ui-ms-panel{
  position:absolute;left:0;top:calc(100% + 4px);z-index:var(--z-panel);width:min(360px,92vw);padding:10px;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-3);box-shadow:var(--sh-2);
}
.ui-ms-panel[hidden]{display:none}
.ui-ms-head{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.ui-ms-search{flex:1;min-width:120px}
.ui-ms-list{list-style:none;margin:0;padding:0;max-height:260px;overflow:auto}
.ui-ms-list li{padding:2px 4px;border-radius:var(--r-1)}
.ui-ms-list li.hi{background:var(--surface-hover)}
.ui-ms-list label{display:flex;align-items:center;gap:8px;font-size:var(--fs-meta);cursor:pointer}
.ui-ms-item{margin-left:2px}
.ui-ms-empty{font-size:var(--fs-caption);color:var(--ink-2);padding:6px 4px}
.ui-ms-empty[hidden]{display:none}
.ui-ms-foot{display:flex;align-items:center;gap:8px;margin-top:8px;padding-top:8px;border-top:1px solid var(--line-weak)}
.ui-ms-allrow{display:flex;align-items:center;gap:6px;font-size:var(--fs-caption);color:var(--ink-2);flex:1}
.ui-ms-chips{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}
.ui-chip{
  display:inline-flex;align-items:center;gap:4px;padding:1px 8px;border-radius:var(--r-full);
  background:var(--tint-info-bg);color:var(--tint-info-ink);border:1px solid var(--tint-info-line);font-size:var(--fs-caption);
}
.ui-chip button{background:none;border:0;padding:0 2px;color:inherit;cursor:pointer;font-size:var(--fs-meta);line-height:1}
.ui-ms-cols{position:relative}

/* ───────────────────────── 10. 弹层：Modal / Drawer ───────────────────────── */
.ui-modal{
  position:fixed;inset:0;z-index:var(--z-modal);display:flex;align-items:center;justify-content:center;
  padding:20px;background:rgba(11,21,38,.5);
}
.ui-modal[hidden]{display:none}
.ui-modal-card{
  width:100%;max-width:560px;max-height:86vh;overflow:auto;padding:20px 22px;background:var(--surface);
  border-radius:var(--r-3);box-shadow:var(--sh-4);color:var(--ink);
}
.ui-modal-card:focus-visible,.ui-modal-card.is-focus{outline:2px solid var(--blue-600);outline-offset:2px}
.ui-modal-title{font-size:var(--fs-subtitle);color:var(--c-danger);margin-bottom:6px}
.ui-modal-body{font-size:var(--fs-body)}
.ui-modal-foot{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end;margin-top:16px}
.ui-mask{position:fixed;inset:0;z-index:var(--z-mask);background:rgba(11,21,38,.45)}
.ui-mask[hidden]{display:none}
.ui-drawer{
  position:fixed;top:0;right:0;bottom:0;z-index:var(--z-panel);display:flex;flex-direction:column;
  width:min(720px,94vw);background:var(--surface);box-shadow:var(--sh-3);color:var(--ink);
}
.ui-drawer[hidden]{display:none}
.ui-drawer-head{display:flex;align-items:center;gap:10px;padding:14px 18px;border-bottom:1px solid var(--line)}
.ui-drawer-body{flex:1;overflow:auto;padding:16px 18px}
.ui-drawer-foot{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end;padding:12px 18px;border-top:1px solid var(--line)}
.ui-drawer-close{margin-left:auto}

/* ───────────────────────── 11. 字段 / 阶段路径 / Toast ───────────────────────── */
.ui-field{display:flex;flex-direction:column;gap:4px;margin-bottom:12px}
.ui-field-label{font-size:var(--fs-meta);font-weight:600;color:var(--ink)}
.ui-field-req{color:var(--c-danger)}
.ui-field-hint{font-size:var(--fs-caption);color:var(--ink-2)}
.ui-field-msg{font-size:var(--fs-caption);color:var(--c-danger)}
.ui-field-msg[hidden]{display:none}
.ui-field-error .ui-input{border-color:var(--c-danger)}
.ui-field-error .ui-field-label{color:var(--c-danger)}
.ui-stagepath{display:flex;flex-wrap:wrap;gap:8px}
.ui-step{
  display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-height:44px;padding:6px 12px;text-align:left;
  border:1px solid var(--line);border-radius:var(--r-2);background:var(--surface);color:var(--ink);cursor:pointer;
}
.ui-step:hover,.ui-step.is-hover{background:var(--surface-hover);border-color:var(--blue-500)}
.ui-step:focus-visible,.ui-step.is-focus{outline:2px solid var(--blue-600);outline-offset:2px}
.ui-step-nm{font-size:var(--fs-meta);font-weight:600}
.ui-step-no{font-size:var(--fs-caption);color:var(--ink-2)}
.ui-step.is-done{background:var(--tint-success-bg);border-color:var(--tint-success-line)}
.ui-step.is-done .ui-step-nm{color:var(--tint-success-ink)}
.ui-step.is-current{border-color:var(--navy);box-shadow:inset 0 0 0 1px var(--navy)}
.ui-step.is-blocked,.ui-step[aria-disabled="true"]{background:var(--surface-2);color:var(--ink-2);cursor:not-allowed}
.ui-step.is-blocked .ui-step-nm,.ui-step[aria-disabled="true"] .ui-step-nm{color:var(--ink-2)}
.ui-stagepath-gates{list-style:none;margin:8px 0 0;padding:0;font-size:var(--fs-meta);color:var(--ink-2)}
.ui-stagepath-gates li::before{content:'\2022';color:var(--c-warning);margin-right:6px}
.ui-stagepath-gates li.is-ok::before{content:'\2713';color:var(--c-success)}
.ui-stagepath-warn{
  margin-top:8px;padding:10px 12px;border-radius:var(--r-2);font-size:var(--fs-meta);
  background:var(--tint-warning-bg);color:var(--tint-warning-ink);border:1px solid var(--tint-warning-line);
}
.ui-stagepath-warn[hidden]{display:none}
.ui-toast-region{position:fixed;left:50%;bottom:32px;transform:translateX(-50%);z-index:var(--z-toast);pointer-events:none}
.ui-toast{
  pointer-events:auto;display:flex;align-items:center;gap:12px;max-width:min(680px,92vw);padding:10px 14px;
  border-radius:var(--r-3);background:var(--navy-deep);color:var(--surface);box-shadow:var(--sh-4);font-size:var(--fs-meta);
}
.ui-toast-error{background:var(--c-danger)}
.ui-toast-close{color:inherit;background:transparent;border-color:transparent}
.ui-toast-close:hover,.ui-toast-close.is-hover{background:rgba(255,255,255,.14);color:var(--surface)}

/* ───────────────────────── 12. 窄屏（≤900px）：命中区与换行 ───────────────────────── */
@media (max-width:900px){
  .ui-btn::after,.ui-icon-btn::after,.ui-chip button::after,.ui-ms-open::after,.ui-step::after,
  .ui-flag-clickable::after,button.ui-flag::after{inset:-10px -8px}
  .ui-filterbar,.ui-batch,.ui-toolbar,.ui-table-foot{gap:var(--sp-4)}
  .ui-ms{min-width:0;width:100%}
  .ui-ms-panel{width:min(420px,94vw);max-width:calc(100vw - 16px)}
  .ui-pager-acts{margin-left:0}
  .ui-drawer{width:100%}
  .ui-search-input{min-width:160px}
  .ui-input,.ui-select,.ui-input.ui-search-input{min-height:40px}
}


/* 可点击标记（源变更复核入口）与批量条错误行 */
.ui-flag-clickable{background:var(--tint-warning-bg);border:1px solid var(--tint-warning-line);color:var(--tint-warning-ink);
  cursor:pointer;font-family:var(--sans);font-size:var(--fs-caption);min-height:24px;padding:1px 6px}
.ui-flag-clickable:hover,.ui-flag-clickable.is-hover{background:var(--tint-warning-line)}
.ui-flag-clickable:focus-visible,.ui-flag-clickable.is-focus{outline:2px solid var(--blue-600);outline-offset:2px}
.ui-flag-clickable[disabled],.ui-flag-clickable.is-disabled{opacity:.6;cursor:not-allowed}
.ui-batch-err{margin:0;flex:1 1 100%;text-align:left;font-size:var(--fs-caption)}
.ui-batch-err[hidden]{display:none}
.ui-errbox-cmd{background:var(--surface-2);color:var(--ink);border-color:var(--line);text-align:left}

/* 动效降级（02 §6.4 A11Y-8） */
@media (prefers-reduced-motion:reduce){
  .ui-skel-b{animation:none}
  .ui-btn,.ui-card,.ui-input,.ui-ms-open,.ui-step{transition:none}
}
