.guided-demo-entry{position:fixed;top:12px;right:16px;z-index:90;display:flex;align-items:center;gap:8px}
.guided-demo-entry[hidden]{display:none}
.guided-demo-entry button[data-guide-state="error"]{border-color:var(--danger);color:var(--danger)}
.guided-demo-entry-status{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
#app-view .top-actions{padding-right:150px}
@media(max-width:720px){.guided-demo-entry{top:8px;right:8px}.guided-demo-entry .button{padding:6px 8px;font-size:11px}#app-view .top-actions{padding-right:126px}}
.filter-grid{display:grid;grid-template-columns:1.3fr 1fr 1fr 1fr 1fr auto auto;gap:9px;align-items:end}
.filter-grid label{display:grid;gap:5px;color:var(--text);font-size:11px}
.filter-grid input,.filter-grid select{height:34px;width:100%;border:1px solid var(--border);border-radius:6px;padding:0 9px;background:#fff;font-size:12px}
.sample-code{font-variant-numeric:tabular-nums;letter-spacing:.02em}
.sample-link{color:var(--blue-600);text-decoration:none}
.sample-link:hover{text-decoration:underline}
.expired{color:var(--danger)!important;font-weight:600}
.action-row{display:flex;gap:6px;flex-wrap:wrap}
.flow-note{margin:0 0 12px;color:var(--muted);font-size:11px}
.acceptance-checklist{display:grid;gap:7px}
.acceptance-checklist>strong{font-size:12px}
.acceptance-check-grid{width:100%;table-layout:fixed;border-collapse:collapse;border:1px solid var(--line);border-radius:6px;overflow:hidden}
.acceptance-check-grid th,.acceptance-check-grid td{padding:8px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}
.acceptance-check-grid tr:last-child th,.acceptance-check-grid tr:last-child td{border-bottom:0}
.acceptance-check-grid th{width:25%;font-weight:400}
.acceptance-check-grid td{width:75%}
.acceptance-check{display:flex!important;align-items:center;gap:6px;color:var(--text);font-size:12px;line-height:18px;white-space:nowrap}
.acceptance-check input[type="checkbox"]{width:14px;height:14px;flex:0 0 auto;accent-color:var(--primary)}
.acceptance-check-value{height:30px;width:100%;border:1px solid var(--border);border-radius:5px;padding:0 8px;background:#fff;font-size:12px}
.acceptance-check-empty{color:var(--muted);font-size:11px}
.acceptance-conclusion{grid-column:1/-1;width:100%;border:0;padding:0;margin:0;display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:center;color:var(--text);font-size:12px}
.acceptance-conclusion.registration-type-group{grid-template-columns:repeat(3,1fr)}
.acceptance-conclusion legend{grid-column:1/-1;font-size:12px;font-weight:600;margin:0}
.acceptance-conclusion .acceptance-radio{display:flex!important;align-items:center;gap:6px;width:100%;white-space:nowrap}
.acceptance-radio input{width:14px;height:14px;accent-color:var(--primary)}
.memo-list{display:grid;gap:8px}
.memo-card{border:1px solid var(--line);border-radius:6px;padding:10px 12px;background:#f8fafb;font-size:12px}
.memo-card .memo-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.memo-card small{display:block;color:var(--muted);font-size:10px;margin-top:4px}
.disposal-view-switch{display:flex;gap:6px;margin:14px 0}
.disposal-list{display:grid;gap:8px}
.disposal-list-item{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:6px}
.disposal-list-item>div:first-child{display:grid;gap:4px;min-width:0}
.disposal-list-item small{color:var(--muted)}
.disposal-table{min-width:980px}
.disposal-table td,.disposal-table th{padding:8px;vertical-align:top}
.disposal-table select{min-width:150px;height:34px;border:1px solid var(--border);border-radius:5px;padding:0 7px;background:#fff;font-size:12px}
.disposal-memo-list{display:grid;gap:8px}
.disposal-memo{border:1px solid var(--line);border-radius:6px;background:#f8fafb;padding:9px 11px;font-size:12px}
.disposal-memo small{display:block;margin-top:4px;color:var(--muted)}
.disposal-row-badge{display:inline-block;border-radius:99px;padding:2px 8px;background:#fff7ed;color:#9a3412;font-size:10px;white-space:nowrap}
.disposal-confirm-item{border:1px solid var(--warning);background:var(--warning-bg);border-radius:6px;padding:9px 11px;margin-bottom:8px;font-size:12px}
.disposal-confirm-item small{display:block;margin:4px 0;color:var(--muted)}
.disposal-confirm-reason{display:grid;gap:5px;margin-top:7px}
.disposal-confirm-reason input{height:32px;border:1px solid var(--border);border-radius:5px;padding:0 8px;font-size:12px;width:100%}
.disposal-warning-item{display:flex;gap:8px;align-items:flex-start;font-size:12px;padding:6px 0;border-top:1px solid var(--line)}
.disposal-error-list{margin:8px 0 0;padding-left:20px;color:var(--danger);font-size:12px}
.register-codes{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.register-codes .code-chip{background:var(--blue-50);color:var(--blue-700);border-radius:99px;padding:3px 10px;font-size:11px;font-variant-numeric:tabular-nums}
.package-status-note{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.package-table{min-width:760px}
.package-children{display:flex;gap:5px;flex-wrap:wrap;margin-top:4px}
.package-children .chip{background:#f1f5f9;border:1px solid var(--line);border-radius:99px;padding:2px 7px;font-size:10px;color:var(--muted)}
.split-summary{margin-top:12px}
.split-items-table{min-width:1220px}
.split-items-table input,.split-items-table select{height:30px;width:100%;border:1px solid var(--border);border-radius:5px;padding:0 7px;background:#fff;font-size:11px}
.split-items-table td{vertical-align:top;padding:7px 6px}
.split-items-table th{font-size:11px;white-space:nowrap;padding:7px 6px}
.split-name-cell{display:grid;gap:5px;min-width:170px}
.split-row-remove{white-space:nowrap}
.package-detail-list{display:grid;gap:7px;margin-top:10px}
.package-detail-item{border:1px solid var(--line);border-radius:6px;padding:9px 10px;font-size:12px}
.package-detail-item small{display:block;color:var(--muted);margin-top:4px}
@media(max-width:1100px){.filter-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.filter-grid{grid-template-columns:1fr 1fr}.filter-grid .filter-wide{grid-column:1/-1}}
/* 必填标记：本域弹窗都是 innerHTML + type=button，原生校验不触发，
   故用 required 属性只作标记，label 直属 required 控件自动显示红星，条件必填由 JS 动态增删 required 实现显隐；
   label 多为 grid / flex 布局，星号改绝对定位以免独占一行 */
label:has(> :required){position:relative;padding-left:9px}
label:has(> :required)::before{content:'*';position:absolute;left:0;top:0;color:#c0392b;font-weight:600}
/* 内联 display:grid 会压过 [hidden] 的 UA 规则，这里显式兜住页面动态区块 */
.form-grid>.wide{grid-column:1/-1}
.filter-grid[hidden],.form-grid[hidden],.retention-list-wrap[hidden],.retention-close-confirm[hidden],.form-grid label[hidden],.form-grid fieldset[hidden],.memo-list[hidden],.action-row[hidden]{display:none}

/* 样品台账 13 列，渲染后约 1290px 宽，比包裹层宽——横向滚动是它的设计。
   lims2.css 的粘性表头在 ≥1140px 把 .table-wrap 摘成 overflow:visible（不摘表头就粘不住），
   这一处把它加回去，表头一并交回 static。登记口径见 lims2.css 粘性表头段。 */
@media(min-width:1140px){
  #ledger-table-wrap{overflow:auto}
  #ledger-table-wrap>table>thead{position:static}
}
/* 处置记录表同理：.disposal-table 声明了 min-width:980px，比包裹层宽。
   M86 的登记清单漏了它（那一轮只看了首屏视图，没切到「处置记录」页签），
   1140/1280 两档下整页会横向溢出 127px。弹窗里的处置样品表不用管：
   .modal .table-wrap>table>thead 那条已经把它交回 static。 */
@media(min-width:1140px){
  #disposal-records-view .table-wrap{overflow:auto}
  #disposal-records-view .table-wrap>table>thead{position:static}
}
