/* =============================================================
 * theme.css — admin 后台统一皮肤层 v1（品牌绿 · 结构化重做）
 * 方案见 docs/plans/admin-ui-unify.md
 *
 * v1 相比 v0：不只换色，重做「表格 / 状态标签 / 卡片 / 按钮 / 输入」的
 * 结构与留白，让视觉明显区别于旧 H+/bootstrap 皮肤。
 *
 * 原则：
 *  1) 只做“覆盖”，不删旧库；本文件必须在所有其它 css 之后加载。
 *  2) 优先改颜色/边框/圆角/间距/字号，尽量不改 display/position/宽高。
 *  3) bootstrap3 / layui 特异性高，颜色级属性用 !important 保 override。
 * ============================================================= */

:root{
  /* —— 品牌主色（稳重绿）—— */
  --brand-primary:       #0C8A4C;
  --brand-primary-hover: #0A7A42;
  --brand-primary-active:#086A39;
  --brand-primary-light: #E6F3EC;   /* 主色浅底：选中行/标签底/hover */

  /* —— 语义色 —— */
  --success:#0C8A4C; --warning:#E8912D; --danger:#E24C3B; --info:#2B7DE0;

  /* —— 中性色阶 (v11 U · AntD v5 纯 gray + rgba, 替换手工蓝灰) —— */
  --text-1:rgba(0,0,0,.88);   /* AntD colorText     ≈ #1F1F1F 从 #1D2129 */
  --text-2:rgba(0,0,0,.65);   /* AntD colorTextSecondary ≈ #595959 从 #4E5969 (蓝调→纯灰) */
  --text-3:rgba(0,0,0,.45);   /* AntD colorTextTertiary  ≈ #8C8C8C 从 #86909C (蓝调→纯灰) */
  --text-4:rgba(0,0,0,.25);   /* v10 T · AntD colorTextQuaternary (placeholder/disabled) */
  --border:#F0F0F0;           /* v11 U · AntD colorBorderSecondary (v12 V 收回 --border-2 全部引用) */
  --border-strong:#D9D9D9;    /* v11 U · AntD colorBorder 从 #C9CDD4 */
  --bg:#F5F5F5;               /* AntD colorBgLayout 从 #F2F3F5 */
  --bg-head:#FAFAFA;          /* ≈ AntD colorFillAlter rgba(0,0,0,.02) on white 从 #F5F6F8 */
  --bg-card:#FFFFFF;          /* AntD colorBgContainer 保留 */

  /* —— 字体 / 字号 —— */
  --font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei","Helvetica Neue",Arial,sans-serif;
  --fs-base:14px; --fs-sm:12px; --fs-lg:16px; --fs-xl:20px;   /* v10 T · fs-lg 15→16 对齐 AntD fontSizeLG；补 fs-xl */
  --lh-base:1.5714286;   /* v10 T · AntD v5 lineHeight = 22/14 */

  /* —— 间距 —— */
  --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-5:20px; --sp-6:24px; --sp-7:32px;   /* v10 T · 补 XL 档 = AntD paddingXL */

  /* —— 圆角 / 阴影 —— */
  --radius:8px; --radius-sm:6px; --radius-xs:4px; --radius-pill:999px;   /* v10 T · 补 xs 档 = AntD borderRadiusSM */
  --shadow-card:0 1px 3px rgba(29,33,41,.05),0 1px 2px rgba(29,33,41,.04);
}

/* ---------- 基础排版 ---------- */
body{ font-family:var(--font-family) !important; font-size:var(--fs-base); color:var(--text-1); }
body.gray-bg,.gray-bg{ background-color:var(--bg) !important; }
a{ color:var(--brand-primary); }
a:hover,a:focus{ color:var(--brand-primary-hover); text-decoration:none; }

/* ================= 卡片：H+ ibox / panel / layui card ================= */
.ibox,.panel,.layui-card{
  border-radius:var(--radius) !important;
  box-shadow:var(--shadow-card) !important;
  border:1px solid var(--border) !important;
  background:var(--bg-card);
}
.ibox{ margin-bottom:var(--sp-5) !important; }
.ibox-title{
  border:none !important;
  border-bottom:1px solid var(--border) !important;
  border-radius:var(--radius) var(--radius) 0 0 !important;
  padding:var(--sp-4) var(--sp-5) !important;
  min-height:auto !important;
}
.ibox-title h5{ font-size:var(--fs-lg); font-weight:600; color:var(--text-1); line-height:1.4; }
.ibox-content{
  border:none !important;
  border-radius:0 0 var(--radius) var(--radius) !important;
  padding:var(--sp-5) !important;
}

/* ================= 按钮：bootstrap3 ================= */
.btn{
  border-radius:var(--radius-sm) !important;
  font-weight:500 !important;
  padding:5px 16px !important;          /* 控件基准高度 32px（紧凑）*/
  font-size:var(--fs-base) !important;
  transition:all .15s ease;
  border-width:1px !important;
}
.btn-sm,.btn-xs{ padding:3px 12px !important; font-size:var(--fs-sm) !important; }
.btn-primary,.btn-success{
  background-color:var(--brand-primary) !important;
  border-color:var(--brand-primary) !important; color:#fff !important;
  box-shadow:0 1px 2px rgba(12,138,76,.22) !important;
}
.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,
.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active{
  background-color:var(--brand-primary-hover) !important; border-color:var(--brand-primary-hover) !important;
}
.btn-white,.btn-default{
  background:#fff !important; color:var(--text-2) !important; border-color:var(--border-strong) !important; box-shadow:none !important;
}
.btn-white:hover,.btn-default:hover{ color:var(--brand-primary) !important; border-color:var(--brand-primary) !important; background:var(--brand-primary-light) !important; }
.btn-danger{ background-color:var(--danger) !important; border-color:var(--danger) !important; }
.btn-warning{ background-color:var(--warning) !important; border-color:var(--warning) !important; color:#fff !important; }
.btn-info{ background-color:var(--info) !important; border-color:var(--info) !important; }
.btn-danger:hover,.btn-warning:hover,.btn-info:hover{ filter:brightness(.94); }

/* ================= 按钮：layui ================= */
.layui-btn{
  background-color:var(--brand-primary) !important;
  border-radius:var(--radius-sm) !important; font-weight:500;
  height:32px; line-height:32px;        /* 控件基准高度 32px（紧凑）*/
}
.layui-btn-sm{ height:28px; line-height:28px; }
.layui-btn:hover{ background-color:var(--brand-primary-hover) !important; }
.layui-btn-primary{
  background-color:#fff !important; color:var(--text-2) !important; border:1px solid var(--border-strong) !important;
}
.layui-btn-primary:hover{ border-color:var(--brand-primary) !important; color:var(--brand-primary) !important; }
.layui-btn-normal{ background-color:var(--info) !important; }
.layui-btn-warm{ background-color:var(--warning) !important; }
.layui-btn-danger{ background-color:var(--danger) !important; }

/* ================= 表格（重点重做）================= */
/* --- bootstrap .table / bootstrap-table --- */
.table{ margin-bottom:0; color:var(--text-1); }
.table>thead>tr>th{
  background-color:var(--bg-head) !important;
  color:var(--text-2) !important;
  font-weight:600 !important;
  font-size:13px;
  border:none !important;
  border-bottom:1px solid var(--border) !important;
  padding:12px 16px !important;
  vertical-align:middle;
  letter-spacing:.2px;
}
.table>tbody>tr>td{
  border:none !important;
  border-bottom:1px solid var(--border) !important;
  padding:13px 16px !important;
  vertical-align:middle;
  color:var(--text-1);
}
.table>tbody>tr:last-child>td{ border-bottom:none !important; }
.table-hover>tbody>tr:hover>td{ background-color:var(--brand-primary-light) !important; }
.table-striped>tbody>tr:nth-of-type(odd){ background-color:#FAFBFC; }
/* bootstrap-table 外层容器：圆角描边 */
.fixed-table-container{ border:1px solid var(--border) !important; border-radius:var(--radius) !important; overflow:hidden; }
.fixed-table-container .table{ border:none; }
.fixed-table-toolbar{ margin-bottom:var(--sp-3); }
.fixed-table-pagination{ padding-top:var(--sp-3); }
.bootstrap-table .fixed-table-container{ background:var(--bg-card); }

/* --- layui table --- */
.layui-table{ color:var(--text-1); }
.layui-table thead tr{ background-color:var(--bg-head) !important; }
.layui-table th{ color:var(--text-2) !important; font-weight:600; font-size:13px; }
.layui-table td,.layui-table th{ padding:11px 15px !important; }
.layui-table,.layui-table[lay-skin=line],.layui-table[lay-skin=row]{ border-color:var(--border) !important; }
.layui-table td,.layui-table th{ border-color:var(--border) !important; }
.layui-table tbody tr:hover,.layui-table-hover{ background-color:var(--brand-primary-light) !important; }
.layui-table-view{ border:1px solid var(--border) !important; border-radius:var(--radius) !important; overflow:hidden; margin:0; }
.layui-table-header{ border-bottom:1px solid var(--border) !important; }
.layui-table-tool{ border:none; }

/* ================= 状态标签 → 柔和药丸 ================= */
.label,.badge{
  display:inline-block; padding:3px 10px !important;
  border-radius:var(--radius-pill) !important;
  font-size:12px !important; font-weight:500 !important; line-height:18px;
  text-shadow:none !important;
}
.label-primary,.label-success{ background-color:var(--brand-primary-light) !important; color:var(--brand-primary-active) !important; }
.label-warning{ background-color:#FDF2E3 !important; color:#B26B00 !important; }
.label-danger{  background-color:#FCEAE7 !important; color:#C0392B !important; }
.label-info{    background-color:#E8F1FD !important; color:#1F63C0 !important; }
.label-default{ background-color:#EEF0F3 !important; color:#5B6472 !important; }
.badge-primary,.layui-bg-green{ background-color:var(--brand-primary) !important; color:#fff !important; }

/* ================= 表单 / 输入 ================= */
.form-control{
  border-radius:var(--radius-sm) !important; border-color:var(--border) !important;
  height:32px; color:var(--text-1); box-shadow:none;   /* 控件基准高度 32px */
}
.form-control:focus{
  border-color:var(--brand-primary) !important; box-shadow:0 0 0 3px var(--brand-primary-light) !important;
}
.layui-input,.layui-textarea,.layui-select{ border-radius:var(--radius-sm) !important; border-color:var(--border) !important; }
.layui-input{ height:32px; }   /* 控件基准高度 32px */
.layui-input:focus,.layui-textarea:focus{ border-color:var(--brand-primary) !important !important; box-shadow:0 0 0 3px var(--brand-primary-light); }
.layui-form-label{ color:var(--text-2); font-weight:500; }
/* layui 勾选 / 单选 / 开关 选中色 */
.layui-form-checked[lay-skin=primary] i{ border-color:var(--brand-primary) !important; background-color:var(--brand-primary) !important; }
.layui-form-checked i,.layui-form-checked:hover i{ color:var(--brand-primary) !important; }
.layui-form-radioed>i,.layui-form-radio>i:hover{ color:var(--brand-primary) !important; }
.layui-form-onswitch{ background-color:var(--brand-primary) !important; border-color:var(--brand-primary) !important; }

/* ================= 分页 ================= */
.pagination{ margin:0; }
.pagination>li>a,.pagination>li>span{ color:var(--text-2); border-color:var(--border); margin:0 2px; border-radius:var(--radius-sm) !important; }
.pagination>li:first-child>a,.pagination>li:last-child>a,
.pagination>li:first-child>span,.pagination>li:last-child>span{ border-radius:var(--radius-sm) !important; }
.pagination>.active>a,.pagination>.active>a:hover,.pagination>.active>span{
  background-color:var(--brand-primary) !important; border-color:var(--brand-primary) !important;
}
.pagination>li>a:hover{ color:var(--brand-primary); border-color:var(--brand-primary); }
.layui-laypage a,.layui-laypage span{ border-radius:var(--radius-sm) !important; }
.layui-laypage .layui-laypage-curr .layui-laypage-em{ background-color:var(--brand-primary) !important; border-radius:var(--radius-sm); }
.layui-laypage a:hover{ color:var(--brand-primary) !important; }

/* ================= Tabs ================= */
.nav-pills>li.active>a,.nav-pills>li.active>a:hover{ background-color:var(--brand-primary) !important; border-radius:var(--radius-sm); }
.nav-tabs{ border-bottom:1px solid var(--border); }
.nav-tabs>li.active>a{ border:none !important; border-bottom:2px solid var(--brand-primary) !important; color:var(--brand-primary) !important; background:transparent !important; font-weight:600; }
.nav-tabs>li>a{ border:none !important; color:var(--text-2); }
.nav-tabs>li>a:hover{ background:transparent !important; color:var(--brand-primary); }
.layui-tab-title .layui-this{ color:var(--brand-primary) !important; }
.layui-tab-brief>.layui-tab-title .layui-this:after{ border-bottom-color:var(--brand-primary) !important; }

/* ================= P1 壳（侧栏 + 顶栏多标签页）================= */
/* 深翡翠绿侧栏,替换 H+ 的暗蓝黑 #2f4050;不动结构,只覆盖背景/文字/hover 色 */
:root{
  --side-bg:      #0A5A39;   /* 侧栏底色 · 深翡翠绿 */
  --side-bg-2:    #084A2F;   /* 侧栏更深(二级菜单展开背景) */
  --side-head-bg: #063F27;   /* 顶部头像区更深 */
  --side-fg:      #D6E6DE;   /* 侧栏正文色 · 微带绿的浅色 */
  --side-fg-dim:  #7FA895;   /* 侧栏次要色 */
  --side-active:  var(--brand-primary);   /* 选中色 · 品牌绿 */
}
.navbar-static-side{ background:var(--side-bg) !important; }

/* 侧栏顶部头像区(navigation_head) — 重排:头像+右侧信息横向排列 */
.navigation_head{ background:var(--side-head-bg) !important; height:96px !important; }
.head_portrait{ margin-left:12px !important; margin-top:28px !important; }
/* 默认红色 logo.png 在深绿底下撞色,加白色圆底 halo 让 logo 干净;
   头像 36px(而非 50)—真实侧栏宽只 182px,大头像会挤压用户名 */
.head_portrait span img{
  width:36px !important; height:36px !important;
  border-radius:50% !important;
  background:#fff !important;
  padding:3px !important;
  border:2px solid rgba(255,255,255,.2) !important;
  box-shadow:0 2px 8px rgba(0,0,0,.15) !important;
  box-sizing:border-box !important;
  object-fit:cover;
}
/* 右侧信息区:名字 + 折叠按钮同一行(用 absolute 直接定位,规避 flex 隐性收缩) */
.navigation_head_right{
  position:absolute !important;
  left:56px !important;   /* 头像右边缘 + 8 间距 */
  right:6px !important;
  margin:0 !important;
  top:32px !important;    /* 与头像垂直居中对齐 */
  height:32px !important;
  display:block !important;
}
.navigation_name{
  position:absolute !important;
  left:0 !important;
  right:26px !important;   /* 给 switch 留 20 + 6 gap */
  top:0 !important;
  height:32px !important;
  line-height:32px !important;
  font-size:14px !important;
  overflow:hidden;
  color:#fff;
  padding:0 !important;
  margin:0 !important;
}
.navigation_name > span{
  display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.navigation_name strong{
  font-weight:600 !important; font-size:14px !important; letter-spacing:.3px;
  color:#fff;
}
.navigation_switch{
  position:absolute !important;
  right:0 !important;
  top:6px !important;
  display:inline-flex; align-items:center; justify-content:center;
  height:20px !important; width:20px !important;
  border-radius:5px;
  background:rgba(255,255,255,.08);
  transition:background .15s;
  margin:0 !important; padding:0 !important;
}
.navigation_switch:hover{ background:rgba(255,255,255,.18); }
.navigation_switch .navbar-minimalize{
  font-size:13px !important; padding:0 !important;
  color:rgba(255,255,255,.7) !important;
  line-height:1;
}
.navigation_switch .navbar-minimalize:hover{ color:#fff !important; }

/* 侧栏菜单链接 */
.navbar-static-side .nav > li > a,
.navbar-static-side .nav-second-level > li > a,
.navbar-static-side .nav-third-level > li > a{
  color:var(--side-fg) !important;
  border:none !important;
  border-radius:0 !important;
  padding:11px 20px !important;
  font-size:14px;
  transition:background .15s, color .15s;
}
.navbar-static-side .nav > li > a i,
.navbar-static-side .nav-second-level > li > a i{ color:var(--side-fg-dim) !important; margin-right:10px; }
.navbar-static-side .nav > li > a:hover,
.navbar-static-side .nav > li > a:focus,
.navbar-static-side .nav-second-level > li > a:hover,
.navbar-static-side .nav-third-level > li > a:hover{
  background:rgba(255,255,255,.06) !important;
  color:#fff !important;
}
.navbar-static-side .nav > li > a:hover i{ color:#fff !important; }

/* 二级菜单展开背景更深 */
.navbar-static-side .nav-second-level{ background:var(--side-bg-2) !important; }
.navbar-static-side .nav-second-level > li > a{ padding-left:52px !important; font-size:13px; }
.navbar-static-side .nav-third-level > li > a{ padding-left:72px !important; font-size:13px; }

/* 选中项:左侧品牌绿高亮条 + 主色文字 + 极浅底 */
.navbar-static-side .nav > li.active,
.navbar-static-side .nav > li > a.active{ position:relative; }
.navbar-static-side .nav > li.active > a{
  background:rgba(255,255,255,.08) !important;
  color:#fff !important;
  box-shadow:inset 3px 0 0 var(--side-active);
}
.navbar-static-side .nav > li.active > a i{ color:#fff !important; }
.navbar-static-side .nav-second-level > li.active > a,
.navbar-static-side .nav-third-level > li.active > a{
  color:#fff !important; background:rgba(255,255,255,.06) !important;
  box-shadow:inset 3px 0 0 var(--side-active);
}
/* 箭头 */
.navbar-static-side .nav .arrow{ color:var(--side-fg-dim) !important; }
.navbar-static-side .nav > li.active .arrow,
.navbar-static-side .nav > li > a:hover .arrow{ color:#fff !important; }

/* nav-header 顶栏 logo-element 折叠时 */
.nav-header{ background:var(--side-head-bg) !important; padding:12px !important; }
.nav-header .logo-element{ color:#fff; font-size:14px; }

/* ---------- 顶栏多标签页(content-tabs) ---------- */
#page-wrapper{ background:var(--bg) !important; }
.content-tabs{
  background:#fff !important;
  border-bottom:1px solid var(--border) !important;
  box-shadow:0 1px 2px rgba(29,33,41,.03);
  height:44px !important;
}
.content-tabs button.roll-left,
.content-tabs button.roll-right,
.content-tabs .roll-nav{
  background:#fff !important; color:var(--text-2) !important;
  border-color:var(--border) !important;
  height:44px !important; line-height:44px !important;
}
.content-tabs .roll-nav:hover{ color:var(--brand-primary) !important; background:var(--brand-primary-light) !important; }

/* tab item */
.page-tabs a{
  height:44px !important; line-height:44px !important;
  padding:0 14px !important; font-size:13px !important;
  color:var(--text-2) !important; border-right:1px solid var(--border) !important;
  transition:all .12s;
}
.page-tabs a i{ color:var(--text-3) !important; margin-left:6px; }
.page-tabs a:hover{ color:var(--brand-primary) !important; background:var(--brand-primary-light) !important; }
.page-tabs a.active{
  background:var(--brand-primary-light) !important;
  color:var(--brand-primary) !important;
  font-weight:600 !important;
  box-shadow:inset 0 -2px 0 var(--brand-primary);
}
.page-tabs a.active i{ color:var(--brand-primary) !important; }
.page-tabs a.active:hover,.page-tabs a.active i:hover{ color:var(--brand-primary) !important; }

/* 右侧下拉/退出按钮:白底文字更醒目 */
.content-tabs .dropdown{ color:var(--text-2) !important; font-size:13px !important; padding:0 14px !important; height:44px !important; line-height:44px !important; }
/* 修右侧一排"切换权限|其他操作|退出"挤成一坨:老 style.css 里三者 right 分别是 156/78/0,间距为 0(切换权限右边缘距右 156,其他操作占 78-158,几乎贴住重叠 2px)。
   通过增大 right 值撑开间距;切换权限 button 限制 max-width + ellipsis 防止无限左伸 */
.content-tabs .btn-group.roll-nav.roll-right.autoWidth{ right:180px !important; max-width:280px; }
.content-tabs .btn-group.roll-nav.roll-right.autoWidth button.J_tabClose{
  max-width:260px !important;
  padding:0 12px !important;
  text-align:left !important;   /* 长文本从左向右排,与 ellipsis 配合 */
  overflow:hidden !important;
  text-overflow:ellipsis !important;
  white-space:nowrap !important;
  font-size:13px !important;
  color:var(--text-2) !important;
  border:none !important;
  border-left:1px solid var(--border) !important;
  height:44px !important;
  line-height:44px !important;
}
.content-tabs .btn-group.roll-nav.roll-right.autoWidth button.J_tabClose:hover{ background:var(--brand-primary-light) !important; color:var(--brand-primary) !important; }
/* "其他操作" 定位从 78 → 88,让退出和其他操作有 8px 视觉间距 */
.content-tabs .btn-group.roll-nav.roll-right:not(.autoWidth){ right:80px !important; }
.content-tabs .btn-group.roll-nav.roll-right:not(.autoWidth) button.J_tabClose{
  padding:0 12px !important; height:44px !important; line-height:44px !important;
  border:none !important; border-left:1px solid var(--border) !important;
  font-size:13px !important; color:var(--text-2) !important;
  background:#fff !important;
}
.content-tabs .btn-group.roll-nav.roll-right:not(.autoWidth) button.J_tabClose:hover{ background:var(--brand-primary-light) !important; color:var(--brand-primary) !important; }
/* 老 style.css 里 .roll-right.J_tabExit 只设 width:60 但 <a> 是 inline,渲染实际只 27px + right:0 导致视觉漂移。
   强制 inline-block + 合理宽度 + display 生效,并覆盖 .content-tabs .roll-nav 的 width:40 */
.content-tabs .roll-right.J_tabExit,
.content-tabs a.J_tabExit{
  display:inline-block !important;
  position:absolute !important;
  right:0 !important;
  top:0 !important;
  width:60px !important;         /* 与老 style.css 保持一致,避免打乱 156/78 的连锁定位 */
  height:44px !important;
  line-height:44px !important;
  padding:0 !important;
  text-align:center !important;
  color:var(--danger) !important;
  font-size:13px !important;
  background:#fff !important;
  border-left:1px solid var(--border) !important;
  white-space:nowrap !important;
  box-sizing:border-box !important;
}
.content-tabs .J_tabExit:hover{ background:#FCEAE7 !important; color:var(--danger) !important; }
.content-tabs .J_tabExit i{ margin-right:4px; }
.content-tabs .master-tips{ background:var(--brand-primary) !important; margin-left:6px; }
.dropdown-menu{ border-radius:var(--radius) !important; border-color:var(--border) !important; box-shadow:var(--shadow-pop); padding:6px 0; }
.dropdown-menu>li>a{ padding:8px 16px !important; color:var(--text-1); font-size:13px; }
.dropdown-menu>li>a:hover{ background:var(--brand-primary-light) !important; color:var(--brand-primary) !important; }

/* iframe 内容区背景 */
.J_mainContent,#content-main{ background:var(--bg) !important; }

/* ================= 杂项(P1 通用微调)================= */
.nav>li.active>a,.nav.nav-second-level>li.active a{ color:#fff !important; }
.navbar-default .nav>li>a:hover{ color:#fff !important; }

/* ================= 杂项 ================= */
::selection{ background:var(--brand-primary); color:#fff; }
.text-navy,.text-success{ color:var(--brand-primary) !important; }
hr{ border-top-color:var(--border) !important; }
.alert-success{ background:var(--brand-primary-light); border-color:#BDE9CF; color:var(--brand-primary-active); border-radius:var(--radius-sm); }

/* ================= 业务页表格修复(P2) ================= */
/* 操作列 <br><br> 双倍空行 → 隐藏 br，链接改单行 block，行间距收紧 */
.fixed-table-body td div br{ display:none; }
.fixed-table-body td div a:not(.layui-btn){ display:block; line-height:1.8; padding:0; white-space:nowrap; }
/* 覆盖操作列 inline style="color:#0e9aef" 写死的旧蓝色 */
/* v16 修正: 老 P2 规则把所有 td a 染成品牌绿, 但 v15N 后操作列出现 <a class="layui-btn">
   (绿字+绿底看不见), 加 :not(.layui-btn) 排除按钮容器 */
.fixed-table-body td a:not(.layui-btn){ color:var(--brand-primary) !important; }
.fixed-table-body td a:not(.layui-btn):hover{ color:var(--brand-primary-hover) !important; }
/* bootstrap-table.min.css 的 height:100% 在数据行少时把单行撑满容器 → 改 auto */
.fixed-table-body{ height:auto !important; }

/* ================= 页顶提示行 .page-hint (P3b) ================= */
/* 老页用 <p class="lead"> 承担"这个页怎么用"的说明文案，
   .lead 是 bootstrap3 的 21px/300 字重"引导段落"样式，视觉过突兀。
   新加 .page-hint 灰色小字，专门装说明文案，让搜索栏做视觉主角。 */
.page-hint{
  font-size:13px;
  color:var(--text-3);
  line-height:1.6;
  margin:0 0 var(--sp-3) 0;
  padding:8px 12px;
  background:var(--bg-head);
  border-left:3px solid var(--brand-primary);
  border-radius:0 var(--radius-sm) var(--radius-sm) 0;
}

/* ================= B2 商品深度打磨 (2026-07-05) ================= */
/* R1: 老蓝绿 #1ab394 (H+ 主题预设) 全局归一到品牌绿。8 文件 10 处硬编码：
   goods/productPublish 类别标签栏 / Invoicing/poMaster / user/user /
   promotion/promotionCouponRelation / orderImport/productList */
[style*="#1ab394"],[style*="#1AB394"]{ background-color:var(--brand-primary) !important; }
/* R2: 老品牌红 #FF0D39 (productShelf.js 表格行 formatter) 归一到主题 --danger */
[style*="#FF0D39"],[style*="#ff0d39"]{ color:var(--danger) !important; }
/* R3: 纯蓝 #0000FF / color:blue (70 处，hq/hqProductShelf 18、anchorScreening 15、hqProduct 10、
   promotionActivity 8、productShelf 6…) 归一到主题 --info */
[style*="#0000FF"],[style*="#0000ff"],[style*="color:blue"],[style*="color: blue"]{ color:var(--info) !important; }

/* ================= B2-2 产品信息页深度打磨 (2026-07-05) ================= */
/* A: bootstrap-table 表头列名 nowrap，禁 ellipsis
   现象: "采/统/展/储/录/修/状" 7 列表头被压缩到 5 字截断
   修法: 表宽由 col-11 的 overflow-x:scroll 容纳，表头 nowrap 全字显示 */
.fixed-table-container thead th,
.fixed-table-container thead th .th-inner,
.bootstrap-table .table thead th{
  white-space:nowrap !important;
  overflow:visible !important;
  text-overflow:unset !important;
}
/* B: 操作列按钮尺寸+间距收紧
   现象: 编辑基础/规格/图片 + 入驻商编辑 + 查看 + 复制 + 设置提成 竖排 7 个按钮撑高单行到 240px
   修法: 收紧 layui-btn + .btn 尺寸；避开状态列 (layui-btn-radius 由 C 处理) */
.fixed-table-body td .layui-btn:not(.layui-btn-radius),
.fixed-table-body td .btn{
  padding:0 10px !important;
  height:26px !important;
  line-height:26px !important;
  font-size:12px !important;
  margin:2px 0 !important;
  min-width:auto !important;
  border-radius:var(--radius-sm) !important;
}
/* C: 状态列 layui-btn-radius 胶囊化 + 品牌色映射
   现象: format6 状态用 <button class="layui-btn-radius layui-btn-normal">已审核</button> 是浅蓝方块
   映射: layui-btn-normal → 品牌绿浅底 (审核通过/正常态)
        layui-btn-primary → 品牌红浅底 (停用/危险态)
        默认 layui-btn → 灰底 (待处理/未审核) */
.fixed-table-body td .layui-btn-radius{
  border-radius:12px !important;
  padding:0 12px !important;
  height:24px !important;
  line-height:24px !important;
  font-size:12px !important;
  border:none !important;
  cursor:default !important;
  min-width:auto !important;
  margin:0 !important;
}
.fixed-table-body td .layui-btn-radius.layui-btn-normal{
  background:var(--brand-primary-light) !important;
  color:var(--brand-primary) !important;
}
.fixed-table-body td .layui-btn-radius.layui-btn-primary{
  background:#FCEAE7 !important;
  color:var(--danger) !important;
}
.fixed-table-body td .layui-btn-radius:not(.layui-btn-normal):not(.layui-btn-primary):not(.layui-btn-warm):not(.layui-btn-danger){
  background:#F0F1F3 !important;
  color:var(--text-2) !important;
}
/* D: 时间戳强制单行 (format4/5 用 `<span>日期</span><br/><span>时间</span>` 输出，
   但第二个 span 里 "19:56:51" 被 word-break 拆 3 行——让 span 内部 nowrap，允许列自然加宽) */
.fixed-table-body td span{
  white-space:nowrap !important;
  word-break:normal !important;
}

/* E-fix: 首列 checkbox 被 fixed-table-container border-radius 圆角裁一半
   现象: 表头行第一列 checkbox 左侧被容器圆角遮住半格
   修法: .bs-checkbox 列加左右 padding, 让 checkbox 往里移 */
.fixed-table-container .bs-checkbox,
.fixed-table-container .bs-checkbox .th-inner,
.fixed-table-container tbody td.bs-checkbox{
  padding-left:12px !important;
  padding-right:8px !important;
}

/* E: 搜索栏 chosen-select 与原生 select / form-control 高度对齐
   现象: 大区/入驻商 (chosen) 高度 ~30px, 状态 (原生 select) 32px, 视觉抖
   修法: chosen-single 统一 32px, 与 P0 定义的 --control-h 对齐 */
.chosen-container-single .chosen-single{
  height:32px !important;
  line-height:32px !important;
  padding:0 10px !important;
  border-radius:var(--radius-sm) !important;
  border:1px solid var(--border) !important;
  box-shadow:none !important;
  background:#fff !important;
}
.chosen-container-single .chosen-single div{ top:4px !important; }
.chosen-container-single .chosen-single span{ line-height:32px !important; margin-right:22px !important; }

/* F: 类别栏 "饮料(1)" 字挤成两行
   现象: 产品信息页左侧 #bogeSaleCls 里 col-sm-2 宽 30px 左右, "饮料(1)" 被拆行
   修法: 局部 nowrap + 左右 padding 收紧 */
#bogeSaleCls .col-sm-2{
  white-space:nowrap !important;
  padding:8px 4px !important;
  overflow:visible !important;
}

/* G: ibox-title 加品牌绿左边条，提升页头视觉分量
   现象: "商城商品信息管理" H5 只是灰底细线, 页头无重点
   修法: 用 ::before 伪元素画 3px 左边条, 不改盒模型不引起 layout 抖 */
.ibox-title h5{
  position:relative !important;
  padding-left:12px !important;
}
.ibox-title h5::before{
  content:"";
  position:absolute;
  left:0;
  top:2px;
  bottom:2px;
  width:3px;
  background:var(--brand-primary);
  border-radius:2px;
}

/* ================= B2-3 产品信息页 format2/format10 重排 (2026-07-05) ================= */
/* H: 图片列 format2 —— 只留图片 + 紧贴的下载 ZIP 小按钮 */
.pp-img-cell{ text-align:center; padding:4px 0; }
.pp-img-thumb{
  width:80px !important; height:80px !important;
  border-radius:var(--radius-sm);
  cursor:zoom-in;
  object-fit:cover;
  border:1px solid var(--border);
  display:block; margin:0 auto 6px;
}
.pp-img-zip{
  font-size:11px !important;
  padding:0 8px !important;
  height:22px !important;
  line-height:22px !important;
  border-radius:11px !important;
}
/* I: 产品名称列 format10 —— 主标题 + 入驻商家副文字 + 类型标签 */
.pp-name-cell{ text-align:center; padding:4px 0; }
.pp-name-main{
  font-size:13px; font-weight:500;
  color:var(--text-1);
  line-height:1.4;
  margin-bottom:4px;
}
.pp-name-sub{
  font-size:11px;
  color:var(--text-3);
  line-height:1.3;
  margin-bottom:6px;
  word-break:break-all;
}
.pp-type-tag{ margin-top:2px; }

/* ================= B2-4 产品信息页 v5 微调 (2026-07-05) ================= */
/* L: 整体间距收紧 ~30% —— ibox padding / row 间距 / 卡片间距 */
.ibox-content{ padding:14px !important; }
.ibox-title{ padding:12px 14px !important; }
.ibox{ margin-bottom:12px !important; }
.ibox-content > .row-lg > .col-sm-12 > .row + .row{ margin-top:4px; }
.ibox-content > .row-lg > .col-sm-12 > .row{ margin-bottom:0 !important; }
#ProductPublishTableToolbar{ margin:8px 0 !important; }

/* J: 搜索栏 label 按钮 min-width 统一，让不同控件类型 (SelectCon/input-group/chosen)
     视觉左对齐。四种控件的 label 名："配送类型"3字最长，min-width 78px 兜住 */
.ibox-content .input-group-btn > .btn{
  min-width:78px !important;
  text-align:center !important;
  padding-left:8px !important;
  padding-right:8px !important;
  border-color:var(--border) !important;
}

/* K: 操作列 format3 buttons flex-wrap 双列布局 (配合 JS 加 .pp-op-cell wrapper)
     现: 8 按钮竖排单列 200px+ 高
     后: flex-wrap 双列, 每 2 按钮一行, ~4 行 100-120px 高 */
.pp-op-cell{
  display:flex;
  flex-wrap:wrap;
  gap:4px;
  justify-content:center;
  align-items:flex-start;
  padding:2px 0;
}
.pp-op-cell .layui-btn{ margin:0 !important; }

/* ================= B2-5 产品信息页 v6 精修 (2026-07-05) ================= */
/* M: DynamicSelect2 (select2 库) 高度 36->32 与 chosen/form-control 对齐 */
.select2-container--default .select2-selection--single{
  height:32px !important;
  border-color:var(--border) !important;
  border-radius:var(--radius-sm) !important;
  background:#fff !important;
}
.select2-container--default .select2-selection--single .select2-selection__rendered{
  line-height:32px !important;
  padding-left:10px !important;
  color:var(--text-1) !important;
}
.select2-container--default .select2-selection--single .select2-selection__arrow{
  height:30px !important;
}

/* N: 搜索栏和表格之间留白收紧 (工具栏 margin-bottom 12->4) */
.fixed-table-toolbar{ margin-bottom:4px !important; }

/* O: fixed-table-toolbar 左右两组按钮垂直居中对齐
   现象: 左"添加/审核" 与右"列选择/导出" 垂直没对齐 (bootstrap-table 给
        .bs-bars/.columns 默认 margin-top:10 line-height:34, 与自定义 toolbar 内 32px 按钮不齐)
   修法: 让 fixed-table-toolbar 做 flex 容器 + align-items:center */
.fixed-table-toolbar{
  display:flex !important;
  align-items:center !important;
  justify-content:space-between !important;
  flex-wrap:wrap;
}
.fixed-table-toolbar > .bs-bars,
.fixed-table-toolbar > .columns,
.fixed-table-toolbar > .columns-right,
.fixed-table-toolbar > .search{
  margin-top:0 !important;
  margin-bottom:0 !important;
  line-height:normal !important;
}

/* P: input-group label 按钮与 input 无缝衔接 (label 变淡背景, 边框连续) */
.input-group > .input-group-btn:first-child > .btn{
  border-top-right-radius:0 !important;
  border-bottom-right-radius:0 !important;
  border-right:none !important;
  box-shadow:none !important;
  background:var(--bg-head) !important;
  color:var(--text-2) !important;
  font-weight:normal !important;
}
.input-group > .input-group-btn:first-child + .form-control,
.input-group > .input-group-btn:first-child + select.form-control{
  border-top-left-radius:0 !important;
  border-bottom-left-radius:0 !important;
  border-left:1px solid var(--border) !important;
}

/* ================= B2-6 产品信息页 v7 (2026-07-05) ================= */
/* Q: 导出/列选按钮组右缘与表格右缘对齐 (清 bootstrap-table 内置 margin) */
.fixed-table-toolbar > .columns,
.fixed-table-toolbar > .columns-right{
  margin-left:0 !important;
  margin-right:0 !important;
}
.fixed-table-toolbar > .columns-right .btn:last-child,
.fixed-table-toolbar > .columns .btn:last-child{ margin-right:0 !important; }

/* Y: 操作列 "更多" 下拉菜单皮肤 */
.pp-op-more{ display:inline-block; }
.pp-op-more .dropdown-menu{
  min-width:120px;
  padding:4px 0;
  border-radius:var(--radius-sm);
  border-color:var(--border);
  box-shadow:0 4px 12px rgba(29,33,41,.12);
}
.pp-op-more .dropdown-menu > li > a{
  padding:6px 14px !important;
  font-size:12px !important;
  color:var(--text-1);
  cursor:pointer;
  line-height:1.6 !important;
}
.pp-op-more .dropdown-menu > li > a:hover{
  background:var(--brand-primary-light) !important;
  color:var(--brand-primary) !important;
}
.pp-op-more .layui-btn .caret{ margin-left:4px; }

/* v8 R: 操作列 icon+短文字按钮尺寸收紧 (全展开一步点击, 撤 v7 更多下拉) */
.pp-op-cell .layui-btn{
  padding:0 8px !important;
  font-size:11.5px !important;
  height:24px !important;
  line-height:24px !important;
  min-width:auto !important;
}
.pp-op-cell .layui-btn .fa{
  margin-right:3px;
  font-size:12px;
}

/* v9 S: 表头行 & 表格行密度收紧
   现象: 表头行 ~40px 高, 与搜索栏 32px 组件不齐; 表格行 padding 8px*2 上下, 视觉松
   修法:
     - 表头 th 用 padding + line-height 目标 32px
     - 表格 td 上下 padding 8->4, 保持左右不变 */
.fixed-table-container thead th .th-inner{
  padding:5px 8px !important;
  line-height:22px !important;
}
.bootstrap-table .table:not(.table-condensed)>tbody>tr>td{
  padding:4px 8px !important;
}

/* ================= B2-13 商品页 v13 W 操作列色彩语义分层 (2026-07-05) ================= */
/* W: 8 键从 4 色乱排 → 3 层节奏 (主编辑 5 键绿实心 / 次读取 2 键淡边 / 辅助 1 键橙)
   现象: 查看/复制 layui-btn-normal 蓝实心过重，与主编辑按钮抢焦；入驻商 layui-btn-primary
        白底比其它编辑操作弱；启用 layui-btn-normal 蓝底与"改变状态"语义弱
   修法:
     - 新增 .pp-op-secondary 次级样式 (淡边白底 info 蓝字，读取类专用)
     - JS format3: 入驻商 layui-btn-primary→layui-btn, 查看/复制 layui-btn-normal→pp-op-secondary,
        启用 layui-btn-normal→layui-btn
   作用域: 仅 .pp-op-cell 内 (页级前缀), 不影响其它 layui-btn */
.pp-op-cell .layui-btn.pp-op-secondary{
  background:transparent !important;
  border:1px solid rgba(43,125,224,.25) !important;
  color:var(--info) !important;
}
.pp-op-cell .layui-btn.pp-op-secondary:hover{
  background:rgba(43,125,224,.08) !important;
  border-color:var(--info) !important;
  color:var(--info) !important;
}
.pp-op-cell .layui-btn.pp-op-secondary .fa{
  color:var(--info) !important;
}

/* ================= B2-15E 团购管理 v15 E 操作列色彩语义分层 (2026-07-06) ================= */
/* E: release 页 format1 · 10+ 键 5 色乱排 → 3 层节奏
      主·编辑绿 (编辑团购/编辑商品/修改配送时间/修改城市/白名单/发布)
      次·淡边 (查看/同步复制模板/复制模板×2)
      辅助·状态色 (上架 normal 保, 下架 danger 保)
   作用域: 仅 .rl-op-cell 内 (页级前缀), 视觉规则复用 v13 W .pp-op-secondary */
.rl-op-cell .layui-btn.rl-op-secondary{
  background:transparent !important;
  border:1px solid rgba(43,125,224,.25) !important;
  color:var(--info) !important;
}
.rl-op-cell .layui-btn.rl-op-secondary:hover{
  background:rgba(43,125,224,.08) !important;
  border-color:var(--info) !important;
  color:var(--info) !important;
}
.rl-op-cell .layui-btn.rl-op-secondary .fa{
  color:var(--info) !important;
}

/* ================= B2-15F 团购商品 v15 F 操作列色彩语义分层 (2026-07-06) ================= */
/* F: releaseProduct 页 laytpl tableBar · 14+ 键 5 色乱排 → 3 层节奏
      主·编辑绿 (更改库存/编辑商品/上架)
      次·淡边 (库存变动记录/价格变动记录/提货日期/取消置顶/刷新缓存/上移/下移)
      辅助·状态色 (下架 danger 保 / 置顶 normal 保 / 设置提成 warm 保 / 累计销量 warm 保)
   作用域: 仅 .rp-op-cell 内 (laytpl 顶部 wrapper div), 视觉规则复用 v13 W .pp-op-secondary
   备注: laytpl 输出 <a class="layui-btn ..."> 而非 <button>, 选择器覆盖两者 */
.rp-op-cell .layui-btn.rp-op-secondary,
.rp-op-cell a.layui-btn.rp-op-secondary{
  background:transparent !important;
  border:1px solid rgba(43,125,224,.25) !important;
  color:var(--info) !important;
}
.rp-op-cell .layui-btn.rp-op-secondary:hover,
.rp-op-cell a.layui-btn.rp-op-secondary:hover{
  background:rgba(43,125,224,.08) !important;
  border-color:var(--info) !important;
  color:var(--info) !important;
}
.rp-op-cell .layui-btn.rp-op-secondary .fa,
.rp-op-cell a.layui-btn.rp-op-secondary .fa{
  color:var(--info) !important;
}

/* ================= B2-16 v16 全局规范补充 (2026-07-06) ================= */
/*
   v16 全局四条：
     G1 按钮组间隙 (老 .button-margin 15px 只加在 space="true", 首键+紧邻按钮组无间隙)
     G2 原生 <select> 未统一 32px (v3E 只统一 chosen, v6M 只统一 select2)
     G3 layui-form 手写 label+input 不齐 (v6P 只覆盖 <#NameCon>, 手写布局落网)
     G4 layui-bg-* 收敛 (blue/orange/red 用 layui 原花色, 只 green 被 override)
   目的：修用户目视反馈的"按钮挨着 · 搜索栏歪 · 表格里花花绿绿"三类系统性缺陷
*/

/* --- G1 按钮组间隙兜底 8px (兼容 layui + bootstrap 双栈) --- */
.btn + .btn,
.btn + .layui-btn,
.layui-btn + .layui-btn,
.layui-btn + .btn,
.btn + a.btn,
a.btn + .btn,
.layui-btn + a.layui-btn,
a.layui-btn + .layui-btn,
a.layui-btn + a.layui-btn{
  margin-left: 8px !important;
}
/* 老 .button-margin 15px → 保留 (与 8px 兜底叠加时 layui-btn+.button-margin 视觉仍是 15px) */

/* --- G2 原生 <select> 统一 32px + 边框规范 --- */
select.form-control,
select.layui-input,
.layui-input-inline > select,
.layui-form-pane > select{
  height: 32px !important;
  line-height: 30px !important;      /* 32 - 2 border */
  padding: 0 8px !important;
  border: 1px solid var(--border-strong) !important;
  border-radius: var(--radius-sm) !important;
  background-color: var(--bg-card) !important;
  color: var(--text-1) !important;
  font-size: var(--fs-base) !important;
}
select.form-control:focus,
select.layui-input:focus{
  border-color: var(--brand-primary) !important;
  box-shadow: 0 0 0 3px var(--brand-primary-light) !important;
  outline: none !important;
}

/* --- G3 layui-form 手写 label+input 补齐 (v6P input-group 之外的兜底) --- */
.layui-form-pane .layui-form-label,
.layui-form-item > .layui-form-label{
  height: 32px !important;
  line-height: 30px !important;
  padding: 0 12px !important;
  background: var(--bg-head) !important;
  color: var(--text-2) !important;
  border: 1px solid var(--border-strong) !important;
  border-right: none !important;
  border-radius: var(--radius-sm) 0 0 var(--radius-sm) !important;
  font-weight: normal !important;
}
.layui-form-pane .layui-input-inline,
.layui-form-item > .layui-input-inline{
  margin-left: 0 !important;
}
.layui-form-pane .layui-input,
.layui-form-item .layui-input{
  height: 32px !important;
  line-height: 30px !important;
  border-radius: 0 var(--radius-sm) var(--radius-sm) 0 !important;
}

/* --- G4 layui-bg-* 收敛到设计色系 (原 layui 花色 → 品牌+语义色 · 淡底+深字统一胶囊 --- */
.layui-bg-blue{
  background-color: rgba(43,125,224,.10) !important;
  color: var(--info) !important;
  border: 1px solid rgba(43,125,224,.25) !important;
  border-radius: var(--radius-xs) !important;
  padding: 1px 8px !important;
  display: inline-block;
  line-height: 20px;
  font-size: 12px;
}
.layui-bg-orange{
  background-color: rgba(232,145,45,.10) !important;
  color: var(--warning) !important;
  border: 1px solid rgba(232,145,45,.25) !important;
  border-radius: var(--radius-xs) !important;
  padding: 1px 8px !important;
  display: inline-block;
  line-height: 20px;
  font-size: 12px;
}
.layui-bg-red{
  background-color: rgba(226,76,59,.10) !important;
  color: var(--danger) !important;
  border: 1px solid rgba(226,76,59,.25) !important;
  border-radius: var(--radius-xs) !important;
  padding: 1px 8px !important;
  display: inline-block;
  line-height: 20px;
  font-size: 12px;
}
.layui-bg-green{
  /* 已有旧规则: background:brand-primary 实心, 与新 blue/orange/red 淡底不一致 */
  background-color: var(--brand-primary-light) !important;
  color: var(--brand-primary) !important;
  border: 1px solid rgba(12,138,76,.25) !important;
  border-radius: var(--radius-xs) !important;
  padding: 1px 8px !important;
  display: inline-block;
  line-height: 20px;
  font-size: 12px;
}

/* ================= B2-16 v16 M/N 操作列容器 flex 布局 + productShelf 新前缀 (2026-07-06) ================= */
/*
   v16 M: release format1 . 主 3/次 2/查看 1 排列不齐 (查看孤立)
          修法: .rl-op-cell 加 flex + wrap + gap, 让按钮按宽度自然紧凑排布
   v16 N: productShelf format8 原生 <a> 文字链接视觉断层 (v15D 跳过)
          修法: JS 里改成 layui-btn + .ps-op-cell wrapper, 新增 .ps-op-secondary
                页级前缀 (视觉规则复用 v13W .pp-op-secondary)
   作用域: rl/rp 已有的 wrapper 结构对齐, ps 是新增
*/
.rl-op-cell,
.rp-op-cell{
  display: flex !important;
  flex-wrap: wrap;
  gap: 4px;
  align-items: center;
  justify-content: flex-start;
  padding: 2px 0;
}
.rl-op-cell .layui-btn{
  margin: 0 !important;   /* 用 gap 替代 margin, 避免累积 */
}
/* productShelf 操作列列宽仅 90 (老表格 12 列合计 1230 已超 viewport 1098),
   grid 单列竖排 4 键, 保持原文字链接的宽度节省, 但加按钮容器 */
.ps-op-cell{
  display: grid !important;
  grid-template-columns: 1fr;
  gap: 3px;
  padding: 2px;
  width: 100%;
}
.ps-op-cell .layui-btn{
  margin: 0 !important;
  min-width: 0 !important;
  padding: 0 6px !important;
  font-size: 12px !important;
  height: 22px !important;
  line-height: 22px !important;
}
.ps-op-cell .layui-btn.ps-op-secondary{
  background: transparent !important;
  border: 1px solid rgba(43,125,224,.25) !important;
  color: var(--info) !important;
}
.ps-op-cell .layui-btn.ps-op-secondary:hover{
  background: rgba(43,125,224,.08) !important;
  border-color: var(--info) !important;
  color: var(--info) !important;
}

/* ================= B2-17 v17 顶部工具栏收敛 + label nowrap (2026-07-06) ================= */
/*
   v17 用户 2 张截图新反馈:
     A1 label 断行 - "销售城市" 被断成"销售\n城市" 两行
     A2 顶部工具栏"两极分化" - 按钮组贴左 + [列筛选]贴右, 中间大空白 (v6O 定 space-between)
        改为按钮组紧凑靠左, [列筛选] 用 margin-left:16px 紧邻在后, 不再"两极分化"
   波 1 全局 CSS 兜底, 波 2 view 单页微调 (release/releaseProduct/productFodder/saleCls)
*/

/* --- A1 label nowrap 兜底 (短 label 遇窄容器不再断行) --- */
.layui-form-label,
.form-horizontal .control-label,
.layui-form-item > .layui-form-label{
  white-space: nowrap !important;
}

/* --- A2 顶部工具栏"紧凑" (v6O space-between → flex-start + gap) --- */
.fixed-table-toolbar{
  justify-content: flex-start !important;  /* v17: 从 space-between 改, 消除中间大空白 */
  gap: 8px;
}
/* [列筛选] 靠近按钮组: 从 space-between 的"auto"变成显式 margin */
.fixed-table-toolbar > .columns,
.fixed-table-toolbar > .columns-right{
  margin-left: 8px !important;
}
/* 用 v6Q 的规则 override "margin-left:0" 但保留 auto-hidden 的 last-child margin-right:0 */

/* ================= B2-18 v18 垂直间距补丁 (2026-07-06) ================= */
/* 用户反馈: "按钮组和搜索栏/文本输入框太近, 按钮组和表格太近"
   现状 (mockBuy 测量): 搜索行→按钮组 32px · 按钮组→表格 25px · 均太紧
   修法: 给顶部工具栏容器 (.hidden-xs id=*Toolbar) 加 margin,
         给 fixed-table-toolbar margin-bottom 从 4px→12px */

/* --- 顶部按钮组容器垂直间距 --- */
.hidden-xs[id$="Toolbar"],
.hidden-xs[id$="TableToolbar"]{
  margin-top: 12px !important;
  margin-bottom: 12px !important;
}
/* fixed-table-toolbar 上下 padding 加大 (v6N 4px 太紧) */
.fixed-table-toolbar{
  margin-top: 8px !important;
  margin-bottom: 12px !important;
}

/* ================= B1-1 v11 · inline color 归一 + 表头紧凑 (2026-07-06) ================= */
/* 背景: B1 订单深度打磨, v14X 顶部工具栏色分级已在 v10 落地 (view 层).
   本节补 v1 R2/R3 未覆盖的 inline 硬编码色 (color:red 162 处, #327ab7 3 处),
   并给 orderMaster Vue 卡片内嵌套 <table> 表头的 <br/> 竖排加紧凑 CSS. */

/* --- BR1: inline color:red / "color: red" 归一 --danger (补 v1 R2 · 162 处) --- */
[style*="color:red"],[style*="color: red"],
[style*="color:Red"],[style*="color: Red"],
[style*="color:RED"],[style*="color: RED"]{
  color: var(--danger) !important;
}

/* --- BR2: inline color:#327ab7 归一 --info (补 v1 R3 · 3 处 orderMaster) --- */
[style*="#327ab7"],[style*="#327AB7"],
[style*="border-color: #327ab7"],[style*="border-color:#327ab7"]{
  color: var(--info) !important;
  border-color: var(--info) !important;
}

/* --- BR3: orderMaster Vue 卡片内嵌套 <table> 表头紧凑 (10 处 <br/>) --- */
/* 目标: view 里 <th>销售<br/>数量</th> 类竖排更紧凑, 减小行高与 padding.
   作用域: orderMaster 页 <div id="app"> 内的 <table> 表头 (Vue 挂载区). */
#app .table > thead > tr > th,
#app > div .table > thead > tr > th{
  font-weight: 500 !important;
  line-height: 1.25 !important;
  padding: 4px 4px !important;
  font-size: 12px !important;
  vertical-align: middle !important;
  color: var(--text-2);
}
#app .table > thead > tr > th br{
  line-height: 1 !important;
}

/* ================= B5 采购/商品发布 深度打磨 (2026-07-06) ================= */
/* R1: purchaseProduct 页 radio 输入 + 标签样式 (原私有 .item-01/.item-02 迁 · 页级前缀 .pup-*
   避 colonel.css 同名 .item-01/.item-02 冲突: colonel 定义为 padding/margin, 本处为 15px width + 9px 标签)
   现有使用: purchaseProduct.html line 85-86 审核 radio + 通过/不通过 label */
.pup-radio { width: 15px; display: inline-block; vertical-align: middle; }
.pup-radio-label { font-size: 9px; vertical-align: sub; }

/* ================= B3 团长 深度打磨 v2 (2026-07-07) ================= */
/* R1: .ext 汇总数字全局归一 (原 30 view 各私有 style 块, 现提取为全局规则)
   语义: 报表页 KPI 汇总数字 · 品牌绿强调 + 22px 紧凑 · 覆盖 colonel/store/supplier/team/wle 等 7 目录 */
.ext {
    color: var(--brand-primary);
    font-size: 22px;
    font-weight: 600;
}

