/* 数据表「导入 Excel」全屏工作台（shared/excel-submit.js）。只用 tokens.css 的语义变量。 */
.xs { position: fixed; inset: 0; z-index: 65; background: var(--canvas); display: grid; grid-template-rows: auto 1fr; color: var(--ink); }
.xs-top { display: flex; align-items: center; gap: 12px; padding: 10px 16px; background: var(--surface); border-bottom: 1px solid var(--line); flex-wrap: wrap; }
.xs-top b { font-size: 15px; }
.xs-top small { color: var(--muted); font-size: 12px; flex: 1; min-width: 200px; }
.xs-body { overflow: auto; padding: 12px 20px 60px; display: grid; gap: 14px; align-content: start; }
.xs-step { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-md); padding: 12px 14px; }
.xs-step h4 { margin: 0 0 8px; font-size: 14px; }
.xs-file { display: inline-flex; align-items: center; gap: 8px; cursor: pointer; }
.xs-file input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.xs-file span { display: inline-block; padding: 6px 12px; border: 1px solid var(--green); color: var(--green); border-radius: var(--radius-sm); font-size: 13px; }
.xs-state { margin-left: 10px; font-size: 12px; color: var(--ink-2); }
.xs-sheet { margin-left: 14px; font-size: 13px; }
.xs-row { display: flex; flex-wrap: wrap; gap: 8px 18px; align-items: center; font-size: 13px; margin-bottom: 8px; }
.xs-modes { display: flex; flex-wrap: wrap; gap: 6px 12px; }
.xs-modes label { display: inline-flex; gap: 4px; align-items: center; }
.xs-scroll { overflow: auto; max-height: 48vh; border: 1px solid var(--line); border-radius: var(--radius-sm); }
.xs-map { width: 100%; border-collapse: collapse; font-size: 13px; }
.xs-map th, .xs-map td { border-bottom: 1px solid var(--line); padding: 5px 8px; text-align: left; vertical-align: top; }
.xs-map thead th { position: sticky; top: 0; background: var(--canvas); font-weight: 600; font-size: 12px; }
.xs-map tbody th { font-weight: 500; white-space: nowrap; }
.xs-map tbody th small { display: block; color: var(--muted); font-size: 11px; font-weight: 400; }
.xs-map select, .xs-map input[type=text], .xs-map textarea { width: 100%; box-sizing: border-box; border: 1px solid var(--line); border-radius: 4px; padding: 4px 6px; font-size: 12px; }
.xs-map textarea { min-height: 44px; resize: vertical; }
.xs-why { display: block; font-size: 11px; color: var(--warning-fg); font-weight: 400; }
.xs-note { font-size: 12px; color: var(--muted); margin: 8px 0 0; line-height: 1.5; }
.xs-sum { font-size: 13px; margin: 0 0 8px; }
.xs-bad { color: var(--danger-fg, var(--warning-fg)); }
.xs-prev table { border-collapse: collapse; font-size: 12px; min-width: 100%; }
.xs-prev th, .xs-prev td { border: 1px solid var(--line); padding: 3px 7px; white-space: nowrap; max-width: 260px; overflow: hidden; text-overflow: ellipsis; text-align: left; }
.xs-prev thead th { position: sticky; top: 0; background: var(--canvas); }
.xs-prev td.bad { background: var(--warning-bg); color: var(--warning-fg); }
.xs-prev td.skip { color: var(--muted); text-decoration: line-through; }
.xs-prev tr.xs-blank td, .xs-prev tr.xs-skip td { color: var(--muted); }
.xs-act { display: inline-block; font-size: 11px; padding: 0 6px; border-radius: 8px; background: var(--canvas); border: 1px solid var(--line); }
.xs-new .xs-act { background: var(--green-soft); color: var(--green); border-color: var(--green); }
.xs-update .xs-act { background: var(--info-bg, var(--canvas)); }
.xs-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 10px; }
.xs-actions .dt-btn-primary { height: 30px; padding: 0 16px; }
@media (max-width: 760px) { .xs-body { padding: 10px; } .xs-map tbody th { white-space: normal; } }
