/**
 * 商品资料库 · 样式（T30 建立，T45 增加详情分区与单品编辑）
 * ================================================
 * 命名统一前缀 t30-，全部用公共框架 workbench.css 的主题变量，
 * 不覆盖 .panel / .btn / .chip / .state 等公共类，只做本页布局与状态补充。
 * 需与 workbench.css 一起加载（顺序在后即可）。
 */

#t30Root { min-width: 0; max-width: 100%; padding: 8px; color: var(--text-1); }
#t30Root h1 { font-size: 26px; margin: 6px 0; }
#t30Root h2 { font-size: 18px; margin: 18px 0 10px; }
#t30Root code { font-family: var(--mono); }
#t30Root img { max-width: 100%; }
#t30Root button:disabled { opacity: .5; cursor: not-allowed; }
/* T63: 表格自身滚动，固定编码列；不改变整页布局草稿。 */
.t30-list-head { flex-wrap: wrap; gap: 12px; }
#t30List { min-width: 0; max-width: 100%; }
.t63-scroll { width: 100%; max-width: 100%; max-height: 70vh; overflow: auto; border: 1px solid var(--border); border-radius: 10px; }
.t63-table { border-collapse: separate; border-spacing: 0; width: max-content; min-width: 100%; font-size: 13px; }
.t63-table th, .t63-table td { padding: 10px 14px; border-right: 1px solid var(--border); border-bottom: 1px solid var(--border); text-align: left; white-space: nowrap; background: var(--bg-elev); }
.t63-table th { position: sticky; top: 0; z-index: 2; background: var(--bg-elev2); color: var(--text-2); user-select: none; }
.t63-table th[data-col] { cursor: grab; }
.t63-table td[data-field="code"] { min-width: 145px; }
.t63-table tbody tr:hover td { background: var(--bg-hover); }
.t63-note { display: block; color: var(--text-3); margin-top: 4px; }
.t63-sorters { display: inline-flex; margin-left: 8px; gap: 3px; }
.t63-sorters button { display: inline-flex; align-items: center; justify-content: center; gap: 1px; padding: 2px 6px; min-width: 32px; min-height: 32px; border: 1px solid var(--border); background: var(--bg-elev); color: var(--text-2); cursor: pointer; border-radius: 5px; }
.t63-sort-arrow { opacity: .4; font-size: 17px; line-height: 1; }
.t63-sort-arrow.is-active { opacity: 1; color: var(--text-1); font-weight: 900; }
.t63-settings-actions { display: flex; gap: 12px; }
.t63-table .t63-dragging { opacity: .55; }
.t63-table .t63-drop-before { box-shadow: inset 4px 0 var(--text-1); }
.t63-table .t63-drop-after { box-shadow: inset -4px 0 var(--text-1); }
.t63-caption { text-align: left; font-size: 12px; color: var(--text-3); padding: 8px 14px; }
#t63ColumnChoices { display: grid; grid-template-columns: repeat(auto-fit,minmax(190px,1fr)); gap: 4px 16px; margin-bottom: 18px; }
.t63-choice { display: flex; align-items: center; gap: 8px; min-height: 44px; cursor: pointer; }
.t63-choice input { width: 18px; height: 18px; }
.t63-scroll:focus-visible, .t63-sorters button:focus-visible, .t63-table th:focus-visible { outline: 2px solid var(--text-1); outline-offset: -2px; }
#t30Root .t30-danger { color: var(--danger); border-color: var(--danger); }
.t30-clear { max-width: min(560px, 94vw); }
.t30-clear label { display: block; margin: 16px 0 8px; }
.t30-clear input { width: 100%; box-sizing: border-box; }
.t30-clear .btn { min-height: 44px; }

.t30-heading { margin-bottom: 14px; }
.t30-heading p { margin: 4px 0; }
.t30-status { color: var(--text-2); overflow-wrap: anywhere; margin: 8px 0 14px; }

/* ---------- 统计卡片 ---------- */
.t30-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 12px; margin-bottom: 16px; }
.t30-card { padding: 14px; border: 1px solid var(--border); border-radius: 12px; background: var(--bg-elev); min-width: 0; }
.t30-card span { display: block; font-size: 12px; color: var(--text-2); }
.t30-card strong { display: block; margin-top: 6px; font-size: 20px; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.t30-card small { display: block; margin-top: 6px; font-size: 11px; overflow-wrap: anywhere; }
.t30-card:has(.t69-metric){position:relative}
.t69-metric{position:absolute;inset:0;width:100%;height:100%;border:0;border-radius:inherit;background:transparent;cursor:pointer;color:inherit}
#t30Root .t30-card.is-selected{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}
#t30Root .t30-card.is-selected::after{content:'✓';position:absolute;right:10px;top:8px;color:var(--accent);pointer-events:none;font-weight:700}
.t69-metric:hover{background:color-mix(in srgb,var(--accent) 6%,transparent)}
.t69-metric:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
.t69-group-toggle{margin-top:6px;white-space:normal}
.t30-dups { grid-column: 1 / -1; padding: 12px 14px; border: 1px solid var(--border); border-radius: 12px; background: var(--bg-elev); }
.t30-dups summary { cursor: pointer; font-size: 12px; color: var(--text-2); }
.t30-dups ul { list-style: none; margin: 10px 0 0; padding: 0; display: flex; flex-direction: column; gap: 6px; max-height: 240px; overflow: auto; }
.t30-dups li { display: flex; gap: 10px; align-items: baseline; font-size: 12px; flex-wrap: wrap; }

/* ---------- 筛选 ---------- */
.t30-filter { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 12px; padding: 16px; margin-bottom: 16px; background: var(--bg-elev); border: 1px solid var(--border); border-radius: 12px; }
.t30-filter label { display: flex; flex-direction: column; gap: 6px; font-size: 12px; color: var(--text-2); }
.t30-filter input, .t30-filter select { box-sizing: border-box; width: 100%; min-width: 0; }
.t30-filter-actions { display: flex; flex-wrap: wrap; gap: 8px; align-items: flex-end; grid-column: 1 / -1; }

/* ---------- 列表 ---------- */
.t30-list-head { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
.t30-list { min-width: 0; }
.t30-items { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.t30-item { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 14px; align-items: center; padding: 12px; border: 1px solid var(--border); border-radius: 12px; background: var(--bg-elev); }
.t30-item:hover { background: var(--bg-hover); }
.t30-item .t30-main { min-width: 0; }
.t30-line { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.t30-code { font-size: 14px; overflow-wrap: anywhere; }
.t30-short { font-size: 13px; margin-top: 4px; overflow-wrap: anywhere; }
.t30-meta { margin-top: 6px; overflow-wrap: anywhere; }
.t30-empty { padding: 40px; text-align: center; color: var(--text-2); }

.t30-thumb-btn { padding: 0; border: 0; background: none; cursor: pointer; line-height: 0; }
.t30-thumb { display: inline-flex; align-items: center; justify-content: center; width: 56px; height: 56px; object-fit: cover; border-radius: 8px; border: 1px solid var(--border); background: var(--bg-elev2); font-size: 10px; color: var(--text-3); text-align: center; }
.t30-thumb-missing { line-height: 1.3; }
.t30-zoom-btn { margin-top: 6px; }
.t30-open-btn { align-self: start; }

/* ---------- 分页 ---------- */
.t30-pager { display: flex; align-items: center; gap: 12px; margin: 16px 0 8px; flex-wrap: wrap; }
.t30-pager #t30Page { flex: 1; min-width: 120px; }

/* ---------- 详情 / 大图对话框 ---------- */
.t30-dialog { box-sizing: border-box; width: min(900px, calc(100vw - 24px)); max-height: calc(100vh - 32px); overflow: auto; border: 1px solid var(--border); border-radius: 14px; background: var(--bg-elev, #131620); color: var(--text-1); padding: 20px; }
.t30-dialog::backdrop { background: #0009; }
.t30-import-kind { width: min(520px, calc(100vw - 24px)); }
.t30-import-kind-options { display: grid; gap: 12px; margin: 16px 0; }
.t30-import-kind-option { display: flex; flex-direction: column; align-items: flex-start; gap: 6px; min-height: 72px; width: 100%; height: auto; padding: 14px 16px; text-align: left; white-space: normal; }
.t30-import-kind-option span { text-align: left; overflow-wrap: anywhere; }
.t30-import-kind-option:focus-visible { outline: 2px solid var(--accent, #b38a42); outline-offset: 3px; }
.t30-dialog-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 14px; }
.t30-dialog-head h2 { margin: 0 !important; }
.t30-dialog-body { min-width: 0; }
.t30-dialog-head h2 { flex: 1; }
.t30-dialog-actions { display: flex; gap: 8px; }
.t30-detail-head { display: flex; gap: 16px; align-items: flex-start; flex-wrap: wrap; margin-bottom: 12px; }
.t30-detail-image { display: flex; flex-direction: column; gap: 6px; align-items: flex-start; }
.t30-detail-image .t30-thumb { width: 96px; height: 96px; }
.t30-detail-meta { min-width: 0; flex: 1; }
.t30-detail-meta p { margin: 4px 0; overflow-wrap: anywhere; }
.t30-detail-meta .t30-short { font-size: 16px; font-weight: 600; }
.t30-note { color: var(--text-2); font-size: 12px; }
.t30-note[data-duplicate], .t30-note[data-bs-status="missing"] { color: var(--danger); }
.t30-note[data-bs-status="stale"] { color: var(--info); }
.t30-edit-status { font-size: 12px; min-height: 18px; margin: 0 0 8px; color: var(--text-2); overflow-wrap: anywhere; }
.t30-edit-status[data-kind="busy"] { color: var(--info); }
.t30-edit-status[data-kind="ok"] { color: var(--success); }
.t30-edit-status[data-kind="error"] { color: var(--danger); }
/* 业务字段分区：桌面双列、窄屏单列 */
.t30-sections { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.t30-section { border: 1px solid var(--border); border-radius: 12px; padding: 10px 14px; background: var(--bg-elev2); min-width: 0; }
.t30-section h3 { margin: 0 0 6px; font-size: 13px; color: var(--text-2); }
.t30-section dl { margin: 0; }
.t30-field { display: grid; grid-template-columns: minmax(96px, 42%) minmax(0, 1fr); gap: 10px; align-items: center; padding: 6px 0; border-bottom: 1px solid var(--border-soft); font-size: 13px; }
.t30-field:last-child { border-bottom: 0; }
.t30-field dt { color: var(--text-2); }
.t30-field dd { margin: 0; min-width: 0; overflow-wrap: anywhere; }
.t30-field[data-calc] dd { font-weight: 600; }
.t30-edited { margin-left: 6px; color: var(--info); }
.t30-reason { display: block; margin-top: 2px; }
.t30-input { box-sizing: border-box; width: 100%; min-width: 0; }
.t30-field dd:has(.t30-unit) { display: flex; align-items: center; gap: 6px; }
.t30-unit { color: var(--text-2); }
.t30-input-short { font-size: 15px; margin-bottom: 4px; }
.t30-zoom-body { display: flex; justify-content: center; background: var(--bg-elev2); border-radius: 10px; padding: 10px; }
.t30-zoom-body img { max-width: 100%; max-height: calc(100vh - 240px); object-fit: contain; }

/* ---------- 空值 / 零值 / 错误 / 公式 / 缺图 ---------- */
.t30-blank { color: var(--text-3); }
.t30-error { color: var(--danger); }
.t30-warn { color: var(--warning, var(--danger)); }
.t30-thumb-missing { color: var(--text-3); }
.t30-error-mark { color: var(--danger); }

/* ---------- 导入 ---------- */
.t30-import { margin-bottom: 16px; }
.t30-kind { border: 0; padding: 0; margin: 0 0 10px; display: flex; flex-direction: column; gap: 6px; font-size: 13px; }
.t30-kind label { display: flex; gap: 8px; align-items: baseline; }
.t30-blockers { border: 1px solid var(--danger); border-radius: 10px; padding: 8px 12px; color: var(--danger); font-size: 12px; margin-bottom: 10px; }
.t30-blockers p { margin: 4px 0; }
.t30-conflicts li label { white-space: nowrap; }
.t30-import-row { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin-bottom: 10px; }
.t30-import-row input[type="file"] { max-width: 100%; color: var(--text-2); font-size: 12px; }
.t30-import-status { font-size: 12px; color: var(--text-2); overflow-wrap: anywhere; min-height: 18px; }
.t30-import-status[data-kind="busy"] { color: var(--info); }
.t30-import-status[data-kind="ok"] { color: var(--success); }
.t30-import-status[data-kind="error"] { color: var(--danger); }
.t30-preview { min-width: 0; }
.t30-preview-body { margin-top: 10px; }
.t30-stats-preview { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); }
.t30-preview-block { margin-top: 10px; border: 1px solid var(--border); border-radius: 10px; padding: 10px 12px; background: var(--bg-elev); }
.t30-preview-block summary { cursor: pointer; font-size: 12px; color: var(--text-2); }
.t30-preview-block ul { list-style: none; margin: 10px 0 0; padding: 0; display: flex; flex-direction: column; gap: 6px; max-height: 260px; overflow: auto; }
.t30-preview-block li { display: flex; gap: 10px; align-items: baseline; font-size: 12px; flex-wrap: wrap; }
.t30-import-actions { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 12px; }
.t30-batches { margin-top: 12px; }
.t30-batches summary { cursor: pointer; font-size: 12px; color: var(--text-2); }
.t30-rejected-wrap { max-height: 320px; overflow: auto; }
.t30-rejected-wrap .t30-batches-table { min-width: 460px; }
.t30-rejected-wrap .t30-batches-table th { position: sticky; top: 0; }
.t30-rejected-wrap td.mono { white-space: nowrap; overflow-wrap: normal; }
.t30-batches-table { width: 100%; border-collapse: collapse; font-size: 12px; margin-top: 8px; }
.t30-batches-table th, .t30-batches-table td { text-align: left; padding: 8px 10px; border-bottom: 1px solid var(--border-soft); overflow-wrap: anywhere; }
.t30-batches-table th { color: var(--text-2); background: var(--bg-elev2); }

/* ---------- 窄屏（约 390px）仍可查看关键字段 ---------- */
@media (max-width: 600px) {
  #t30Root { padding: 0; }
  #t30Root h1 { font-size: 20px; }
  .t30-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .t30-stats-preview { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .t30-filter { grid-template-columns: repeat(2, minmax(0, 1fr)); padding: 12px; gap: 8px; }
  .t30-filter-actions { grid-column: 1 / -1; }
  .t30-filter-actions .btn { flex: 1; }
  .t30-item { grid-template-columns: auto minmax(0, 1fr); gap: 10px; padding: 10px; }
  .t30-open-btn { grid-column: 1 / -1; }
  .t30-thumb { width: 48px; height: 48px; }
  .t30-dialog { padding: 14px; }
  .t30-detail-image { flex-direction: row; align-items: center; }
  .t30-sections { grid-template-columns: minmax(0, 1fr); }
  .t30-dialog-head { flex-wrap: wrap; }
  .t30-pager { gap: 8px; }
  .t30-pager .btn { flex: 1; }
  .t30-pager #t30Page { flex: 1 0 100%; order: 3; }
}

/* T63 两行表头及独立调宽边界 */
.t63-table { table-layout: fixed; min-width: 0; }
.t63-table th, .t63-table td { box-sizing: border-box; padding: 8px 10px; white-space: normal; overflow-wrap: anywhere; }
.t63-table td[data-field="code"] { min-width: 0; }
.t63-table th[data-col] > span:first-child { display: block; line-height: 18px; min-height: 36px; }
.t63-sorters { display: flex; margin: 4px 0 0; }
.t63-resize { position: absolute; right: -3px; top: 0; width: 8px; height: 100%; z-index: 4; cursor: col-resize; touch-action: none; }
.t63-resize:hover { background: var(--border); }
.t63-resizing, .t63-resizing * { cursor: col-resize !important; user-select: none !important; }

/* T68: compact default appearance. Saved T49 coordinates are deliberately excluded. */
html[data-theme="light"] #t30Root{--bg-elev:#fffefa;--bg-elev2:#f6f4ef;--bg-hover:#f6f0e4;--border:#dedad1;--text:#292822;--text-1:#292822;--text-2:#615d54;--text-3:#6e685e;--accent:#805b20;--accent-soft:#f3ead8;--danger:#b5322e}
#t30Root .t30-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}
#t30Root .t30-heading>div{min-width:0}
#t30Root h1{font-size:27px;line-height:1.4;margin:0 0 5px}
#t30Root .t30-heading p{font-size:12px;line-height:1.6;color:var(--text-2)}
#t30Root .btn{min-height:36px;padding:7px 14px;border-radius:7px;line-height:1.5;box-shadow:none}
#t30Root .btn-primary{background:var(--accent);color:var(--bg-elev);border-color:var(--accent)}
html[data-theme="dark"] #t30Root .btn-primary{color:#1c1913}
#t30Root [hidden]{display:none!important}
#t30Root :is(button,input,select,summary,th):focus-visible{outline:2px solid var(--accent);outline-offset:2px}
#t30Root .t30-card{border-radius:9px;background:var(--bg-elev);padding:12px 14px}
#t30Root .t30-card strong{font-size:26px;line-height:1.3;margin-top:4px;font-variant-numeric:tabular-nums;overflow-wrap:normal}
#t30Root .t30-card span{font-size:12px}
#t30Root .t30-card small{font-size:11px;color:var(--text-2);margin-top:4px}
#t30Root .t30-card:nth-of-type(9) strong,#t30Root .t30-card:nth-of-type(10) strong{font-size:18px;word-break:normal}
#t30Root .t30-dups{border-radius:7px;padding:8px 12px;background:var(--bg-elev2)}
#t30Root .t30-dups summary{font-size:12px;color:var(--text-2)}
#t30Root .t30-filter{border-radius:9px;padding:14px 16px;background:var(--bg-elev)}
#t30Root .t30-filter label{font-size:12px;gap:6px}
#t30Root .t30-filter :is(input,select){height:38px;border-radius:6px;padding:7px 11px;background:var(--bg-elev);border:1px solid var(--border);box-shadow:none}
#t30Root .t30-filter-actions{gap:8px}
#t30Root .t30-filter-actions .btn{white-space:nowrap}
/* T68 round 4: fixed compact header; feedback occupies space only while needed. */
#t30Root .t30-heading{display:block;position:relative;margin:0 0 12px}
#t30Root .t68-title-row{display:flex;align-items:center;gap:20px;padding-right:48px;min-width:0}
#t30Root .t68-title-info{display:flex;align-items:center;gap:20px;min-width:0;flex-shrink:0}
#t30Root .t68-title-info h1{margin:0;white-space:nowrap}
#t30Root .t68-sources{display:flex;flex-direction:column;gap:1px;min-width:0}
#t30Root .t68-source{position:relative;min-width:0;color:var(--text-2)}
#t30Root .t68-source summary{list-style:none;display:flex;align-items:center;white-space:nowrap;font-size:12px;line-height:21px;cursor:pointer;border-radius:3px}
#t30Root .t68-source summary::-webkit-details-marker{display:none}
#t30Root .t68-source time{font-variant-numeric:tabular-nums;color:var(--text);font-size:13px}
#t30Root .t68-source-file{position:absolute;left:0;top:100%;z-index:32;width:max-content;max-width:min(340px,calc(100vw - 100px));overflow-wrap:anywhere;padding:8px 12px;border:1px solid var(--border);border-radius:6px;background:var(--bg-elev);box-shadow:0 4px 12px #0002;font-size:12px}
#t30Root .t68-page-description{margin:8px 0 0;font-size:12px}
#t30Root .t30-heading>.t68-layout-menu{position:absolute;right:0;top:0;margin:0}
#t30Root #t30Import{position:relative;flex-shrink:1;min-width:0;margin:0 0 0 auto;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;overflow:visible}
#t30Root .t68-import-toolbar{display:flex;align-items:center;gap:9px;min-width:0}
#t30Root .t68-import-label{font-size:12px;white-space:nowrap;color:var(--text-2)}
#t30Root #t30Import .t30-import-row{display:flex;align-items:center;gap:7px;margin:0;flex-wrap:wrap}
#t30Root #t30Import .t30-import-row>.btn{white-space:nowrap;min-height:36px;padding:6px 12px}
#t30Root .t68-import-help{position:relative;min-width:0}
#t30Root .t68-import-help summary{list-style:none;cursor:pointer;padding:6px 3px;font-size:12px;white-space:nowrap;text-decoration:underline;text-underline-offset:3px;color:var(--text-2)}
#t30Root .t68-import-help summary::-webkit-details-marker{display:none}
#t30Root .t68-import-help>div{position:absolute;top:100%;right:0;z-index:31;padding:12px 14px;border:1px solid var(--border);border-radius:7px;background:var(--bg-elev);box-shadow:0 8px 20px #0002;width:min(420px,calc(100vw - 100px));font-size:12px;line-height:1.7}
#t30Root .t68-import-feedback{position:absolute;top:calc(100% + 8px);right:0;z-index:30;width:min(760px,calc(100vw - 28px));max-height:calc(100vh - 90px);overflow:auto;padding:14px;border:1px solid var(--border);border-radius:9px;background:var(--bg-elev);box-shadow:0 10px 28px #0003}
#t30Root .t68-feedback-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px;font-size:14px}
#t30Root .t68-import-feedback .t30-import-status{margin:0 0 8px}
#t30Root .t68-import-feedback .t30-preview{margin:0}
#t30Root .t68-import-feedback .t30-preview-body{min-width:0;overflow-wrap:anywhere}
#t30Root .t68-import-feedback .t30-batches{padding:8px 0 0;border:0;background:transparent;font-size:12px}
#t30Root .t68-import-feedback :is(.t30-batches-table,.t30-rejected table){max-width:100%;table-layout:fixed;width:100%}
#t30Root .t68-import-feedback :is(th,td){overflow-wrap:anywhere}
#t30Root:not(:has(>.t49-grid)){display:block}
#t30Root:not(:has(>.t49-grid))>#t30Stats{display:grid!important;grid-template-columns:repeat(8,minmax(0,1fr))!important;gap:10px;margin:0 0 12px}
#t30Root:not(:has(>.t49-grid))>#t30Stats>.t30-card{grid-area:auto!important;order:initial!important;height:100%;min-height:98px}
#t30Root:not(:has(>.t49-grid))>#t30Filter{margin:0 0 12px}
#t30Root:not(:has(>.t49-grid)) .t30-filter-actions{grid-column:auto;flex-wrap:nowrap}
#t30Root:not(:has(>.t49-grid))>.t30-list-head{margin:0}
#t30Root:not(:has(>.t49-grid))>#t30List{margin:0 0 12px}
#t30Root:not(:has(>.t49-grid))>.t30-pager{margin:0}

/* The same list toolbar works inside a saved layout block or the default grid. */
#t30Root .t30-list-head{display:flex;align-items:center;flex-wrap:wrap;gap:14px;padding:12px 13px;border:1px solid var(--border);border-bottom:0;border-radius:9px 9px 0 0;background:var(--bg-elev);min-height:60px}
#t30Root .t68-list-info{display:flex;align-items:center;flex-wrap:wrap;gap:12px;flex:1;min-width:0}
#t30Root .t68-list-info h2{font-size:19px;line-height:28px;margin:0;white-space:nowrap}
#t30Root #t30Count{font-size:12px;line-height:20px;padding:3px 9px;border-radius:5px;background:var(--bg-elev2);white-space:nowrap}
#t30Root .t68-list-info #t30Status{font-size:11px;line-height:20px;margin:0;padding:0;max-width:100%;min-width:0}
#t30Root .t30-list-head [data-t30=columns]{margin-left:auto;flex-shrink:0}
#t30Root #t63ColumnStatus{font-size:11px;max-width:100%;overflow-wrap:anywhere}
#t30Root #t63ColumnStatus:empty{display:none}
#t30Root .t63-scroll{border-top:0;border-radius:0 0 9px 9px;max-height:70vh;background:var(--bg-elev)}
#t30Root .t63-caption{background:var(--bg-elev2);color:var(--text-2);font-size:11px;padding:7px 13px}
#t30Root .t63-table th{font-size:12px;padding:8px 12px}
#t30Root .t63-table th[data-col]>span:first-child{min-height:18px}
#t30Root .t63-table td{font-size:13px;padding:8px 12px}
#t30Root .t63-table tr:nth-child(even) td{background:var(--bg-elev2)}
#t30Root .t63-table .t30-thumb{width:40px;height:40px;border-radius:5px}
#t30Root .t63-sorters button{min-height:22px;padding:0 4px;border:0;background:transparent}
#t30Root .t63-sort-arrow{font-size:13px}
#t30Root .t30-pager{gap:14px}

@media(max-width:1500px){#t30Root:not(:has(>.t49-grid))>#t30Stats{grid-template-columns:repeat(4,minmax(0,1fr))!important}#t30Root:not(:has(>.t49-grid)) .t30-filter-actions{grid-column:1/-1;flex-wrap:wrap}#t30Root .t68-list-info #t30Status{flex-basis:100%}}
@media(max-width:1200px){#t30Root .t68-title-row{flex-wrap:wrap;gap:10px}#t30Root .t68-import-inline{margin-left:0!important;flex-basis:100%}#t30Root .t68-import-toolbar{justify-content:flex-start}}
@media(max-width:600px){#t30Root:not(:has(>.t49-grid))>#t30Stats{grid-template-columns:repeat(2,minmax(0,1fr))!important}#t30Root .t68-title-info{flex-wrap:wrap;gap:6px}#t30Root .t68-title-row{padding-right:44px}#t30Root .t68-import-toolbar{align-items:flex-start;gap:6px}#t30Root .t68-import-label{display:none}#t30Root .t30-import-row{flex-wrap:wrap}#t30Root .t68-import-inline .btn{font-size:12px;padding:6px 9px}#t30Root .t68-list-info{flex-basis:calc(100% - 110px);gap:8px}#t30Root .t30-list-head{align-items:flex-start;gap:10px}#t30Root .t30-filter-actions .btn{flex:0 1 auto}#t30Root h1{font-size:24px}}
@media(max-width:600px){#t30Root .t68-title-info{flex:1 1 100%;max-width:100%}}
#t30Root .t68-import-feedback{max-height:min(65vh,600px)}
@media(max-width:600px){#t30Root .t68-import-feedback{left:0;right:auto;width:calc(100vw - 100px)}}

/* T80：输入与选择控件统一初始尺寸、按内容变宽、悬停 1.1 倍。宽度由 view.js 测量后写入；
   同组初始宽度 --t80-w0、统一高度 --t80-h、组内间距 8px。复选框、文件选择器与按钮不受影响。 */
#t30Root{--t80-h:38px;--t80-gap:8px}
#t30Root #t30Filter.t30-filter{--t80-w0:168px;display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--t80-gap)}
#t30Root #t30Filter.t30-filter>label{flex:0 0 auto;min-width:0;max-width:100%}
#t30Root #t30Filter.t30-filter>.t30-filter-actions{flex:0 0 auto;max-width:100%}
#t30Root #t30Filter.t30-filter :is(input,select){width:var(--t80-w0);max-width:100%;min-width:0}
#t30Root #t30DetailBody{--t80-w0:180px}
#t30Root #t30Clear .t30-dialog-body{--t80-w0:200px}
#t30Root #t30ClearText{display:block;margin:6px 0 0}
#t30Root :is(#t30Filter :is(input,select),#t30DetailBody input[data-edit-key],#t30ClearText){box-sizing:border-box;width:var(--t80-w0);max-width:100%;min-width:0;height:var(--t80-h);min-height:var(--t80-h);flex:none}
#t30Root .t80-line{position:relative}
#t30Root .t80-line>*{transition:transform 180ms ease}
#t30Root .t80-hot{position:relative;z-index:2}
@media (prefers-reduced-motion:reduce){#t30Root .t80-line>*{transition:none}}
/* T80 补充：筛选字段设置。成对输入框（最小～最大、起止日期）合计为一个统一宽度；齿轮按钮与相邻按钮同高。 */
#t30Root #t30Filter .t80-range{display:flex;align-items:center;gap:4px;min-width:0}
#t30Root #t30Filter .t80-range>span{color:var(--text-2);font-size:12px;flex:none}
#t30Root #t30Filter .t80-range>input{width:calc((var(--t80-w0) - 20px) / 2);padding-left:8px;padding-right:8px}
#t30Root #t30Filter [aria-invalid="true"]{border-color:var(--danger)}
#t30Root .t80-gear{display:inline-flex;align-items:center;justify-content:center;min-width:36px;padding:7px 10px}
#t80FilterChoices{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:4px 16px;margin-bottom:18px}
