/* -*- coding: utf-8 -*-
 * BOM 明细卡（内嵌右栏）v2 全量式样 —— 2026-10-01 按用户提供的参考图 1:1 新建。
 *
 * 参考图版式（自上而下）：
 *   1) 深灰黑标题栏：小绿方块 + 白字加粗「BOM 明细」+ 右侧白色 ✕ 关闭
 *   2) 摘要行：一行 7 列纯文本（无边框/无卡片/无色带）——
 *      BOM编号(黑,编辑态只读) 派工单号(已隐藏) 产品名称(黑) 产品型号(黑) 颜色(黑) 状态(下拉) 创建时间(黑)，
 *      灰色小字标签在上、值在下（2026-10-01 bomcard11：产品型号与产品名称位置对调）
 *   3) 明细表：浅灰表头（非绿色）、细列线、白底行，「替换料」蓝色标记
 *
 * 生效方式：本文件在 index.html 中排于 app.css 之后，同名优先级下后加载者胜；
 * 关键属性一律 !important + 类名双写提高特异性，app.css 里 qbinline1~12 对本卡的
 * 旧覆盖（格线摘要表 / A4 竖版 / flex 搬运等）在本作用域内全部被压制，无需回改旧层。
 * 作用域仅限内嵌态 #plm-split-right 下的 .plm-quick-bom 卡；快速创建弹窗、完整表单不受影响。
 */

/* ── 1. 卡片外壳：横版白卡，细边框圆角，清除 A4 竖版比例 ── */
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) .modal-card {
  aspect-ratio: auto !important;
  width: 100% !important;
  max-width: none !important;
  margin-top: 8px !important;
  background: #fff !important;
  border: none !important;
  border-radius: 10px !important;
  box-shadow: 0 1px 3px rgba(15, 23, 42, 0.06) !important;
  overflow: hidden;
}

/* ── 2. 深灰黑标题栏 ── */
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) .modal-head {
  background: #3e4652 !important;
  border-bottom: none !important;
  border-radius: 0 !important;
  padding: 9px 14px !important;
}
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-form-title {
  color: #fff !important;
  font-size: 15px !important;
  font-weight: 700 !important;
  letter-spacing: 0.5px;
}
/* 标题左侧小绿方块（沿用 qbinline4 的 ::before 结构，深底上提亮） */
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-form-title::before {
  background: #3fae6c !important;
  width: 13px !important;
  height: 13px !important;
  border-radius: 2px !important;
  margin-right: 8px !important;
}
/* 白色 ✕ 关闭（btn ghost 原灰字在深底上看不清） */
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #btn-plm-form-close {
  background: transparent !important;
  border: none !important;
  color: #e8ebf0 !important;
  font-size: 15px;
  padding: 2px 8px;
  border-radius: 6px;
}
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #btn-plm-form-close:hover {
  background: rgba(255, 255, 255, 0.15) !important;
}

/* ── 3. 隐藏参考图中没有的元素：操作行（打印/卡片题注）、派生按钮、扩展字段区、明细区工具条 ── */
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-form-actions-row { display: none !important; }
/* 派生按钮：app.css 旧规则借 label.field:has(> #plm-b-model) 拿到 4 id 特异性 display:block!important，
   此处以同构选择器 + 双写类 + 后加载文件反压（4 id 3 类 > 4 id 1 类），确保隐藏生效 */
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) label.field:has(> #plm-b-model) > #btn-plm-derive-bom {
  display: none !important;
}
/* 扩展字段区（曾用编号/物料类型/版本/客户名称/生效日期/创建人/备注）：2026-10-01 用户红框指定
   内嵌 BOM 卡不显示；容器整体隐藏，字段 ID 未动，预填/保存逻辑不受影响（同快速创建弹窗先例）。
   ⚠️ 特异性必须高于下方摘要行规则（#plm-form-bom > .form-grid-2 = 3id3类，曾把本容器一起匹配成
   7 列网格并反压 display:none——bomcard1/2 连续两版未隐藏的根因），故双写 ID 至 4id2类 */
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-b-extra-grid#plm-b-extra-grid {
  display: none !important;
}
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) .bom-detail-toolbar { display: none !important; }
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) .bom-detail-tip { display: none !important; }
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-form-bom > .section-title { display: none !important; }

/* ── 4. 摘要行：一行 7 列纯文本，无边框无底色 ── */
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-form-bom {
  display: block !important;
  background: transparent !important;
  border: none !important;
  padding: 0 !important;
  margin: 0 !important;
}
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-form-bom > .form-grid-2:not(#plm-b-extra-grid) {
  display: grid !important;
  /* 列序（2026-10-01 bomcard11）：BOM编号 / 产品名称 / 产品型号 / 颜色 / 状态 / 创建时间
     （产品型号与产品名称对调，宽度随字段一起换位：名称列 2.6fr、型号列 2.2fr）
     bomver1（2026-10-07）：加「版本」列（反查下拉，插在颜色与状态之间），6→7 列
     bombdel3（2026-10-07）：加「创建人」列（只读展示，排在创建时间之后），7→8 列
     bomw7（2026-10-09）：分屏内「创建人」已隐藏（section 13.3）→ 第 8 列成空列
     bomw8（2026-10-09 用户「版本、状态、创建时间 宽度可以缩小一点」）：三列收窄
     0.75/0.95/1.1 → 0.45/0.55/0.75，型号 2→1.7、颜色 1→0.9 微收；末列空列 0.9→0.55
     作右侧余量 → 前四列（编号/名称/型号/颜色）位置基本不变，后三列更紧凑 */
  grid-template-columns:
    minmax(0, 1fr) minmax(0, 2.4fr) minmax(0, 1.7fr)
    minmax(0, 0.9fr) minmax(0, 0.45fr) minmax(0, 0.55fr) minmax(0, 0.75fr) minmax(0, 0.55fr) !important;
  gap: 6px 26px;
  padding: 14px 16px 12px !important;
  background: #fff !important;
  border: none !important;
  border-radius: 0 !important;
}
/* DOM 序为 编号/派工/名称/型号/颜色/状态/时间，用 order 校正为列序
   （2026-10-01 bomcard11 用户定版：产品型号与产品名称位置对调 → 编号/名称/型号/…） */
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-form-bom > .form-grid-2 > label.field:has(> #plm-b-model)    { order: 1; }
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-form-bom > .form-grid-2 > label.field:has(> #plm-b-dispatch) { order: 2; }
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-form-bom > .form-grid-2 > label.field:has(> #plm-b-name)     { order: 3; }
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-form-bom > .form-grid-2 > label.field:has(> #plm-b-spec)     { order: 4; }
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-form-bom > .form-grid-2 > label.field:has(> #plm-b-color)    { order: 5; }
/* bomver1：版本反查下拉插在颜色与状态之间（列序 …/颜色/版本/状态/时间） */
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-form-bom > .form-grid-2 > label.field:has(> #plm-b-ver-hist) { order: 6; }
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-form-bom > .form-grid-2 > label.field:has(> #plm-b-status)   { order: 7; }
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-form-bom > .form-grid-2 > label.field:has(> #plm-b-created)  { order: 8; }
/* bombdel3：创建人只读展示，排在创建时间之后 */
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-form-bom > .form-grid-2 > label.field:has(> #plm-b-creator-ro) { order: 9; }
/* 字段单元：去卡片化（2026-10-01 bomcard6：:not(#plm-b-dispatch-wrap) 排除「派工单号」，
   否则本条 display:block !important 特异性 (3id4类) 反压隐藏规则，与 bomcard2/3 同根因） */
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-form-bom > .form-grid-2 > label.field:not(#plm-b-dispatch-wrap) {
  background: transparent !important;
  border: none !important;
  border-radius: 0 !important;
  padding: 0 !important;
  margin: 0 !important;
  display: block !important;
}
/* 标签：灰色小字，去绿色色带 */
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-form-bom > .form-grid-2 > label.field > span {
  display: block !important;
  background: transparent !important;
  padding: 0 !important;
  border-radius: 0 !important;
  margin: 0 0 4px !important;
  font-size: 12px !important;
  color: #8b93a1 !important;
  text-align: left !important;
  overflow: visible !important;
}
/* qb-label 借字机制：字号归零后由 ::before 按参考图重绘 */
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-form-bom > .form-grid-2 > label.field > span.qb-label { font-size: 0 !important; }
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-form-bom > .form-grid-2 > label.field > span.qb-label::before {
  content: attr(data-label);
  font-size: 12px !important;
  color: #8b93a1 !important;
}
/* 值：无框纯文本；2026-10-01 bomcard12 用户定版「红框内容颜色统一」→ 全部黑字 */
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-form-bom > .form-grid-2 > label.field > input,
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-form-bom > .form-grid-2 > label.field > select {
  background: transparent !important;
  border: none !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  padding: 2px 0 !important;
  min-height: 22px !important;
  font-size: 13px !important;
  font-weight: 400 !important;
  color: #1f2937 !important;
  text-align: left !important;
  width: 100%;
}
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-form-bom > .form-grid-2 > label.field > input:focus,
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-form-bom > .form-grid-2 > label.field > select:focus {
  outline: none !important;
  box-shadow: none !important;
  background: #f2f5f8 !important;
}
/* BOM 编号编辑态只读：与普通文本一致，不显示输入光标 */
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-form-bom > .form-grid-2 > label.field > input#plm-b-model[readonly] {
  cursor: default !important;
}

/* ── 5. 明细区容器：复位 qbinline12 的 flex/contents 实验，回归普通文档流 ── */
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-section {
  display: block !important;
  background: transparent !important;
  border: none !important;
  padding: 0 !important;
}
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-section[hidden] { display: none !important; }
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-lines { display: block !important; }
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-section .table-wrap {
  /* bomcard9：左右内距对称 16px（bomcard7 曾右 8 左 16，配合卡片收窄后恢复相等） */
  padding: 2px 16px 14px !important;
  background: transparent !important;
}

/* ── 6. 明细表：浅灰表头 + 细列线 + 白底行（参考图非绿色表头） ── */
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table th {
  background: #f3f4f6 !important;
  color: #374151 !important;
  font-size: 12px !important;
  font-weight: 600 !important;
  border: 1px solid #e5e7eb !important;
  padding: 6px 8px !important;
}
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table td {
  background: #fff !important;
  font-size: 12px !important;
  border: 1px solid #eceef1 !important;
  padding: 5px 8px !important;
  color: #1f2937 !important;
}
/* 层级变色（2026-10-04 用户；bomlv3 2026-10-09 改「内容变色」：用户「应该是内容变色，
   不是背景变色」）——行背景回归白底，层级色改打在**文字**上：td 直属文本 + 单元格内
   input/textarea 一并覆盖（下方 td>input / td>textarea 的 #1f2937 !important 特异性
   (3id2类) 低于本组 (3id5类)，无论先后都被压过）。色板：2 蓝 / 3 琥珀 / 4 绿 / 5+ 紫，
   与 app.css 弹窗形态同步 */
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table tbody tr.ib-detail-row.bom-lv-2 td[data-col],
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table tbody tr.ib-detail-row.bom-lv-2 td[data-col] > input,
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table tbody tr.ib-detail-row.bom-lv-2 td[data-col] > textarea,
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table tbody tr.ib-detail-row.bom-lv-2 td[data-col] > select { color: #2563eb !important; }
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table tbody tr.ib-detail-row.bom-lv-3 td[data-col],
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table tbody tr.ib-detail-row.bom-lv-3 td[data-col] > input,
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table tbody tr.ib-detail-row.bom-lv-3 td[data-col] > textarea,
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table tbody tr.ib-detail-row.bom-lv-3 td[data-col] > select { color: #b45309 !important; }
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table tbody tr.ib-detail-row.bom-lv-4 td[data-col],
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table tbody tr.ib-detail-row.bom-lv-4 td[data-col] > input,
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table tbody tr.ib-detail-row.bom-lv-4 td[data-col] > textarea,
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table tbody tr.ib-detail-row.bom-lv-4 td[data-col] > select { color: #16a34a !important; }
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table tbody tr.ib-detail-row.bom-lv-5 td[data-col],
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table tbody tr.ib-detail-row.bom-lv-5 td[data-col] > input,
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table tbody tr.ib-detail-row.bom-lv-5 td[data-col] > textarea,
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table tbody tr.ib-detail-row.bom-lv-5 td[data-col] > select { color: #9333ea !important; }
/* 悬停弱化浅灰提示（放在层级色之后，悬停时可覆盖层级色） */
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table tbody tr.ib-detail-row:hover td[data-col] {
  background: #f1f5f9 !important;
}
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table tbody tr:hover td {
  background: #f8fafc !important;
}
/* 输入框四周拉满贴合单元格边框（2026-10-01 bomcard13 用户）：
   含输入框的 td 去内边距，input/textarea 铺满 td 四边；
   文字与单元格边框的呼吸距离由输入框自身 padding 提供 */
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table td:has(> input),
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table td:has(> select),
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table td:has(> textarea),
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table td[data-col="曾用编号"] {
  padding: 0 !important;
}
/* 曾用编号只读 div 与全表 12px 对齐（2026-10-06 pconprint69 用户「红框内容字号大」）：
   实测该 div computed=14px（同表 input/textarea=12px，div 不在上方铺满规则组），
   以同构 4id 高特异性规则钉死，双保险（app.css 另有 :is 版） */
/* bomfill1（2026-10-10 用户「为什么曾用编号列要搞特殊不同颜色（内容）」）：
   颜色由钉死 #1f2937 改 inherit——层级变色（bomlv3）规则已把层级≥2 行的 td[data-col]
   打上层级色（2 蓝/3 琥珀/4 绿/5 紫），但只覆盖 td 直属文本与 input/textarea/select，
   本 div 自带 color 恒为深灰，在变色行里成了整行唯一「异色」单元格；
   改 inherit 后跟随所在行 td 的层级色，与同列其余内容观感一致 */
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table td .bom-old-cell {
  font-size: 12px !important;
  font-weight: 400 !important;
  color: inherit !important;
}
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table td > input {
  display: block !important;
  width: 100% !important;
  height: 100% !important;
  min-height: 100% !important;
  margin: 0 !important;
  border: none !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  outline: none !important;
  padding: 5px 8px !important;
  font-size: 12px !important;
  font-weight: 400 !important;
  color: #1f2937 !important;
  text-align: left !important;
}
/* 工序/属性下拉同样铺满单元格（2026-10-04 flush2 用户：分屏形态 select 此前无任何
   铺满规则，宽度按内容收缩、右侧留白，边框不贴合——对齐上面 td > input 同款手法） */
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table td > select {
  display: block !important;
  width: 100% !important;
  height: 100% !important;
  min-height: 100% !important;
  margin: 0 !important;
  border: none !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  outline: none !important;
  padding: 5px 4px !important;
  font-size: 12px !important;
  color: #1f2937 !important;
}
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table td > select:focus {
  background: #f2f5f8 !important;
}
/* 曾用编号独立列（2026-10-04 oldcode2 用户）：只读灰字单元格；分屏 td 有 !important
   边框/背景规则，此列只需清除聚焦样式冲突（div 不可聚焦，无额外覆盖） */
/* 文本列 textarea：高度随内容自适应（auto-grow，2026-10-01 bomcard14 恢复——
   bomcard13 的 height:100% !important 曾压制 JS 内联增高导致换行内容被裁。
   2026-10-04 oldcode3 用户：height:auto !important 同样压制 JS 内联高度
  （!important 恒胜行内样式），实测 2 行内容 sh=46 被裁回 ch=28——删除本条 height 声明，
   让 plm_bom.js fitRow 写入的行内 height 生效，换行内容完整显示） */
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table td > textarea {
  display: block !important;
  width: 100% !important;
  min-height: 100% !important;
  margin: 0 !important;
  border: none !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  outline: none !important;
  padding: 5px 8px !important;
  font-size: 12px !important;
  font-weight: 400 !important;
  color: #1f2937 !important;
  text-align: left !important;
  resize: none !important;
  overflow: hidden !important;
  line-height: 1.5 !important;
  white-space: pre-wrap !important;
  word-break: break-all !important;
}
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table td > input:focus,
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table td > textarea:focus {
  background: #f2f5f8 !important;
}
/* bomlv2（2026-10-09 用户「物料代码列缩进 没有生效」）：上方 td > textarea 的
   `padding: 5px 8px !important` 是 shorthand 且带 !important，会整条压掉行内的
   `padding-left`（!important 恒胜行内样式）→ 分屏内嵌卡里层级缩进看不到（弹窗形态
   无这条规则，所以只在分屏形态复现）。此处按层级值走 CSS 自定义属性 --lv-pad
   （由 plm_bom.js 写在行内），并用**更高特异性**（多 .bom-mat-code）+ !important 提权。 */
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table td > textarea.bom-mat-code {
  padding-left: var(--lv-pad, 8px) !important;
}
/* 数值列（用量/单位/层级/损耗率）内容居中（2026-10-01 bomcard14 用户） */
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table td[data-col="用量"] > input,
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table td[data-col="单位"] > input,
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table td[data-col="层级"] > input,
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table td[data-col="损耗率"] > input {
  text-align: center !important;
}
/* 损耗率百分比值（2026-10-02 bomcard15 用户）：% 直接在 input 值内（1%、0.5%），
   聚焦去 % 编辑、失焦补回，无需装饰层；仅保留居中与纯数字展示 */

/* ── 7. 2026-10-01 用户指示二：删除红框内容 + 删除明细表最外边框 ──
   7.1 红框 = 顶部绿色横幅「已选物料 xxx · N 条 BOM [显示全部]」（.plm-bomlist-fbar，
       由 plm_material.js bomRenderRight 动态生成于 #plm-bom-right 内、内联 display:flex；
       !important 可压内联样式。renderBomDetailGrid 的同类横幅无调用点，不影响） */
#plm-split-right-body .plm-bomlist-fbar {
  display: none !important;
}
/* 7.2 明细表最外边框 = 基础 .table-wrap 的 1px var(--border)（#fed7aa 暖金边框，即截图所见
       表格外圈浅金细框）：仅在 BOM 内嵌卡明细区清除，其余页面表格不受影响 */
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-lines .table-wrap {
  border: none !important;
  box-shadow: none !important;
  border-radius: 0 !important;
}

/* ── 8. 2026-10-01 用户指示三：删除红框「派工单号」字段 + 明细表统一细线条（bomcard5→6） ──
   8.1 红框 = 摘要行第 2 个字段「派工单号」(wrapper #plm-b-dispatch-wrap，标签 + 蓝色值
       20260821001)。隐藏后 grid 已由 7 列改为 6 列（见 section4）；order/蓝字旧规则
       无副作用，保留。双写 ID 提特异性 (4id2类) 压过「去卡片化 display:block」规则——
       bomcard5 单写 ID (3id2类) 被反压致未生效，本次双保险修复。 */
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-b-dispatch-wrap#plm-b-dispatch-wrap {
  display: none !important;
}
/* 8.1b 弹窗路径（bomopen2，2026-10-04）：物料页右键 openBomById 把表单节点搬进
   #view-quick-bom 弹窗，脱离 #plm-split-right 使 8.1 选择器失效，「派工单号」在弹窗
   里重新露出（用户再指红框）。对齐 8.1 手法双写 ID 压特异性。 */
#view-quick-bom #plm-b-dispatch-wrap#plm-b-dispatch-wrap {
  display: none !important;
}
/* 8.2 明细表统一细线条：基础 .bom-detail-table 用 border-collapse:separate（app.css 14857）
       使 th/td 各自 1px 边框双线叠加、粗细不均；改 collapse + 统一 1px 同色细线一步到位 */
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table {
  border-collapse: collapse !important;
}
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table th,
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table td {
  border: 1px solid #e5e7eb !important;
}
/* 8.3 明细表定宽渲染（bomcard10，2026-10-01 用户定版）：全部列宽锁定，表格按列合计
       max-content 渲染；table-layout:fixed 使各列严格等于 colgroup px，内容不再撑列 */
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table {
  width: max-content !important;
  table-layout: fixed !important;
}
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table th,
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table td {
  overflow: hidden;
}

/* ── 9. 白卡包住表格（bomcard10，2026-10-01 用户定版）：卡宽 fit-content 跟随表格宽度
   自动收缩，margin auto 左右均分居中（左右边距相等）。
   摘要网格 width:0 + min-width:100%：测宽阶段不参与（否则 fr 网格按输入框固有宽把
   卡片撑宽），最终布局仍填满卡片内容区。与 section 1 同选择器，本条在后，后者胜。 */
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) .modal-card {
  width: fit-content !important;
  margin-left: auto !important;
  margin-right: auto !important;
}
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-form-bom > .form-grid-2 {
  width: 0 !important;
  min-width: 100% !important;
}

/* ── 10. bomsplit1（2026-10-09 用户「下方区要自动拉满」）：白卡纵向撑满右栏可视高度 ──
   右栏 #plm-split-right-body 高度确定（flex:1 1 auto），但 #view-plm-form 与 .modal-card
   高度均随内容收缩 → 行数少时卡片下方露出一截空底。让表单壳成纵向 flex 且
   min-height:100%，卡片 flex-grow 吃掉剩余高度（margin-top:8px 由 flex 布局消化，
   不会溢出）；表格内容仍自顶部排，卡底留白归入卡片内部白底
   ⚠️ qbfix1（2026-10-10 用户「弹窗关闭不了的」）：本条必须保持分屏专属前缀——
   曾被 :is() 双作用域误扩到 #view-quick-bom 根节点，display:flex !important
   (2id1cls) 压过 .modal[hidden] 的 display:none → 弹窗 hidden 失效，
   空白卡常驻任何页面且点 ✕ 关不掉。弹窗高度由 .qb-card 自身 flex 链承担，无需本条。 */
#plm-split-right #view-plm-form.plm-quick-bom {
  display: flex !important;
  flex-direction: column !important;
  min-height: 100% !important;
}
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) .modal-card {
  flex: 1 1 auto !important;
}

/* ── 11. bomw2（2026-10-09 用户「列表同样往下拉满空间；表头露底了」）──
   11.1 列表拉满：bomw1 只撑高了白卡，列表仍被 app.css 的 max-height:min(52vh,460px)
        截断（行被拦腰切断、卡底大块空白）。打通 flex 高度链
        .modal-card → .modal-body → #plm-bom-detail-section → #plm-bom-lines → .table-wrap
        （逐级 flex:1 1 auto + min-height:0），并解除 52vh/460px 上限。
        qbunify1（2026-10-09）：:is() 双作用域后弹窗 #view-quick-bom 同样命中
        #plm-bom-lines / .table-wrap 两条 → 弹窗明细区滚动行为与内嵌卡统一
        （.table-wrap 内部滚动 + sticky 表头；.qb-card 85vh 纵向 flex 提供确定高度）；
        .modal-card / .modal-body / #plm-bom-detail-section 三条弹窗无此结构、不命中。
        双写 ID 提特异性压过 section 5 的 display:block 与 #plm-bom-lines 旧规则。 */
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) .modal-card {
  display: flex !important;
  flex-direction: column !important;
}
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) .modal-body {
  flex: 1 1 auto !important;
  min-height: 0 !important;
  display: flex !important;
  flex-direction: column !important;
}
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-section#plm-bom-detail-section {
  display: flex !important;
  flex-direction: column !important;
  flex: 1 1 auto !important;
  min-height: 0 !important;
}
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-lines#plm-bom-lines {
  display: flex !important;
  flex-direction: column !important;
  flex: 1 1 auto !important;
  min-height: 0 !important;
}
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-lines .table-wrap {
  flex: 1 1 auto !important;
  min-height: 140px !important;
  max-height: none !important;
}
/* 11.2 表头露底修复：明细表 border-collapse:collapse（bomcard6）下，竖向滚动时
        滚动行的合并边框/背景绘制层会盖到 sticky 表头上（行从表头下穿过露底）。
        thead th 提 z-index 抬层 + inset box-shadow 自绘 1px 细线边框——
        box-shadow 随 th 自身绘制（在行之上），滚动时表头四边始终完整。 */
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table thead th {
  position: sticky !important;
  top: 0 !important;
  z-index: 3 !important;
  background: #f3f4f6 !important;
  background-clip: padding-box !important;
  box-shadow: inset 0 0 0 1px #e5e7eb !important;
}

/* ── 12. bomw3（2026-10-09 用户「红框内容要固定」）：卡片高度钉死=右栏可视高度 ──
   bomw2 实测（33 行 BOM）：min-height:100% 链在行多时整卡随内容长高（1463px > 右栏
   838px），摘要区被推出视口、整卡在面板里滚 —— 「内容不固定」。改为 height:100%
   钉死表单壳，.modal-card 补 min-height:0 允许收缩，列表视口=卡片内固定区域，
   行在 .table-wrap 内部滚动，摘要区与 sticky 表头恒定可见。 */
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) {
  height: 100% !important;
  max-height: 100% !important;
}
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) .modal-card {
  min-height: 0 !important;
  max-height: 100% !important;
}
/* 12.2 露底根因（bomw3 实测）：wrap 的 padding-top:2px（bomcard9）把 sticky 表头顶在
   面板顶下 2px——滚动时表头上方露出一条 2px 的滚动行缝隙。分屏态去顶距，
   表头钉满面顶（左右 16px 对称内距保留）。 */
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-lines .table-wrap {
  padding-top: 0 !important;
}

/* ── 13. bomw6（2026-10-09 用户「外框搞错了：要删的是白卡最外层框，不是表格框」）──
   13.1 用户原意「删除外边框」指白卡最外层框（.modal-card border，见 section 1），
        bomw5 误删成表格四边。本版回归 separate+spacing:0、单元格只画 右/下 1px 细线
        （内部网格统一），并补回表头顶线 + 首列左线 → 表格四边外框齐全，
        与内部线同粗同色；末列/末行的外框线保留不再去除。
   13.2 表头 th 自带右/下/顶边框随自身绘制，配合 section 11 的 z-index:3 滚动不露底；
        取消 bomw4 的 inset box-shadow（collapse 边框叠加会让表头看起来更粗）。
   13.3 隐藏 创建人：仅分屏内嵌卡（#plm-split-right 前缀）；弹窗 #view-quick-bom 里
        该字段被搬进 #qb-strip 仍保留，故不在此作用域。 */
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table {
  border-collapse: separate !important;
  border-spacing: 0 !important;
}
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table th,
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table td {
  border: none !important;
  border-right: 1px solid #e5e7eb !important;
  border-bottom: 1px solid #e5e7eb !important;
}
/* 外框：补表头顶线 + 首列左线（与内部线同粗同色），四边齐全；末行/末列外框保留 */
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table thead th {
  border-top: 1px solid #e5e7eb !important;
  box-shadow: none !important;
}
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-bom-detail-table tr > *:first-child {
  border-left: 1px solid #e5e7eb !important;
}
/* 隐藏分屏卡里的「创建人」字段：须压过同文件 section 的
   `#plm-form-bom > .form-grid-2 > label.field:not(#plm-b-dispatch-wrap)`（display:block !important，
   特异性 4 id + 4 class）。本规则借 :not(#plm-b-dispatch-wrap) 再加 1 个 id → (5,3,0) 取胜。
   仅限 #plm-split-right 分屏；弹窗 #view-quick-bom 里该字段被搬进 #qb-strip 仍保留。 */
:is(#plm-split-right #view-plm-form.plm-quick-bom, #view-quick-bom) #plm-form-bom > .form-grid-2 > #plm-b-creator-wrap:not(#plm-b-dispatch-wrap) {
  display: none !important;
}
