:root {
  font-family: "Microsoft JhengHei", "Noto Sans TC", system-ui, sans-serif;
  color: #24323d;
  background: #f3f7f6;
  --ink: #24323d;
  --muted: #687985;
  --line: #d6e1df;
  --panel: #ffffff;
  --soft: #edf5f3;
  --primary: #286b63;
  --primary-dark: #1e514b;
  --accent: #dff1ec;
  --warn: #8a5a12;
  --warn-bg: #fff7df;
  --danger: #9d3340;
  --danger-bg: #fff0f1;
  --shadow: 0 8px 28px rgba(34, 65, 63, 0.08);
}
* { box-sizing: border-box; }
html { min-height: 100%; }
body { margin: 0; min-height: 100%; background: linear-gradient(180deg, #eef6f4 0, #f7f9f8 280px, #f3f7f6 100%); color: var(--ink); }
button, input, textarea { font: inherit; }
button { cursor: pointer; }
button:disabled { cursor: not-allowed; opacity: .52; }
button:focus-visible, input:focus-visible, textarea:focus-visible, summary:focus-visible { outline: 3px solid rgba(40, 107, 99, .22); outline-offset: 2px; }

.app-shell { max-width: 1240px; margin: 0 auto; padding: 24px 24px 56px; }
.app-header { display: flex; justify-content: space-between; gap: 24px; align-items: flex-start; margin-bottom: 18px; }
.app-title-wrap h1 { margin: 0 0 6px; font-size: clamp(24px, 3vw, 34px); letter-spacing: .02em; color: #173d39; }
.app-title-wrap p { margin: 0; color: var(--muted); }
.version-stack { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; }
.badge { display: inline-flex; align-items: center; gap: 6px; border: 1px solid #c9d9d6; background: rgba(255,255,255,.75); border-radius: 999px; padding: 6px 10px; color: #49605e; font-size: 13px; white-space: nowrap; }
.badge.offline { background: #e7f3ef; color: #275f57; border-color: #bcd9d1; }

.nav-tabs { display: flex; flex-wrap:wrap; align-items:center; gap: 8px; margin-bottom: 14px; }
.nav-tabs .nav-spacer { flex:1 1 auto; min-width:12px; }
.nav-tabs .nav-utility { background:#f8faf9; color:#4d625f; }
.nav-tabs .nav-utility:hover { background:#eef4f2; border-color:#bdcec9; }
.nav-tabs button { border: 1px solid var(--line); border-radius: 10px; padding: 10px 16px; background: #fff; color: #43545f; font-weight: 700; }
.nav-tabs button.active { background: var(--primary); color: #fff; border-color: var(--primary); }

.notice { border-radius: 12px; padding: 12px 14px; margin: 12px 0; display: flex; gap: 10px; align-items: flex-start; border: 1px solid #d9e4e2; background: #fff; }
.notice.warn { border-color: #ead49f; background: var(--warn-bg); color: #6e4c17; }
.notice.danger { border-color: #efc9cf; background: var(--danger-bg); color: #7d2b36; }
.notice.success { border-color: #bdddd5; background: #ebf8f4; color: #265c54; }
.notice strong { display: block; margin-bottom: 2px; }
.dirty-bar { justify-content: space-between; align-items: center; background: #fff9e9; border-color: #ecdcae; }
.dirty-dot { width: 9px; height: 9px; border-radius: 50%; background: #d18a19; display: inline-block; margin-right: 7px; }

.grid { display: grid; grid-template-columns: minmax(0, 1fr) 330px; gap: 18px; align-items: start; }
@media (max-width: 900px) { .grid { grid-template-columns: 1fr; } .app-header { flex-direction: column; } .version-stack { justify-content: flex-start; } }
.card { background: var(--panel); border: 1px solid #dbe5e3; border-radius: 16px; box-shadow: var(--shadow); overflow: hidden; }
.card + .card { margin-top: 18px; }
.card-header { padding: 18px 20px 14px; border-bottom: 1px solid #e5ecea; display: flex; justify-content: space-between; align-items: center; gap: 14px; }
.card-header h2, .card-header h3 { margin: 0; color: #244b47; }
.card-body { padding: 18px 20px 20px; }
.muted { color: var(--muted); }
.small { font-size: 13px; }
.stat-row { display: flex; flex-wrap: wrap; gap: 10px; }
.stat { background: var(--soft); border: 1px solid #d9e7e4; border-radius: 10px; padding: 10px 12px; min-width: 105px; }
.stat strong { display: block; font-size: 22px; color: #244d48; }

.toolbar { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.toolbar.spread { justify-content: space-between; }
.btn { border: 1px solid #cbd9d6; background: #fff; color: #37534f; border-radius: 9px; padding: 9px 13px; font-weight: 700; transition: background .15s ease, border-color .15s ease, transform .06s ease; }
.btn:hover:not(:disabled) { background: #f1f7f5; border-color: #abc6c0; }
.btn:active:not(:disabled) { transform: translateY(1px); }
.btn.primary { background: var(--primary); border-color: var(--primary); color: #fff; }
.btn.primary:hover:not(:disabled) { background: var(--primary-dark); }
.btn.soft { background: var(--accent); border-color: #b9d9d1; color: #245b54; }
.btn.danger { background: #fff; border-color: #e7b8bf; color: var(--danger); }
.btn.ghost { border-color: transparent; background: transparent; }
.btn.small { padding: 6px 9px; font-size: 13px; }

.search-wrap { position: relative; margin-bottom: 14px; }
.search-wrap input { width: 100%; border: 1px solid #cbdad7; border-radius: 11px; padding: 11px 13px; background: #fbfdfc; }
.selection-summary { display: flex; justify-content: space-between; gap: 14px; align-items: center; flex-wrap: wrap; margin-bottom: 12px; }
.category-list { display: grid; gap: 9px; }
.category-card { border: 1px solid #dde7e5; border-radius: 12px; background: #fff; overflow: hidden; }
.category-card.selected { border-color: #a8cec5; background: #fbfefd; }
.category-main { display: grid; grid-template-columns: auto 1fr auto; gap: 11px; align-items: center; padding: 12px 14px; }
.category-main input[type="checkbox"] { width: 19px; height: 19px; accent-color: var(--primary); }
.category-name { font-weight: 800; color: #2d4845; }
.category-count { font-size: 13px; background: var(--soft); color: #526964; border-radius: 999px; padding: 4px 8px; }
.category-card details { border-top: 1px dashed #dce6e4; }
.category-card summary { list-style: none; padding: 8px 14px; font-size: 13px; color: #58706c; cursor: pointer; }
.category-card summary::-webkit-details-marker { display: none; }
.category-card summary::before { content: "＋"; display: inline-block; width: 18px; }
.category-card details[open] summary::before { content: "－"; }
.item-preview { padding: 0 14px 12px 34px; margin: 0; columns: 2; column-gap: 28px; color: #52636c; }
.item-preview li { break-inside: avoid; margin: 3px 0; }
@media (max-width: 620px) { .item-preview { columns: 1; } }

.side-actions { display: grid; gap: 9px; }
.side-actions .btn { width: 100%; }
.help-steps { margin: 0; padding-left: 20px; color: #566872; }
.help-steps li { margin: 7px 0; }
.version-history { margin-top: 14px; }
.version-history details { border-top: 1px solid #e3ebe9; padding-top: 10px; }
.version-history summary { cursor: pointer; font-weight: 700; color: #4b625f; }
.history-list { padding-left: 18px; margin: 8px 0 0; font-size: 13px; color: #60716f; }
.release-history-list { display:grid; gap:10px; margin:0; padding:0; list-style:none; }
.release-history-item { border:1px solid #dce6e4; border-radius:11px; padding:12px 14px; background:#fbfdfc; }
.release-history-head { display:flex; flex-wrap:wrap; justify-content:space-between; gap:8px; align-items:center; margin-bottom:5px; }
.release-history-version { font-weight:900; color:#315c55; }
.release-history-date { color:var(--muted); font-size:12px; }
.release-history-summary { color:#526964; line-height:1.55; }
.help-section { border:1px solid #dce6e4; border-radius:11px; padding:13px 14px; background:#fbfdfc; margin-bottom:12px; }
.help-section:last-child { margin-bottom:0; }
.help-section h3 { margin:0 0 7px; font-size:16px; color:#355d57; }
.help-section p { margin:5px 0; line-height:1.6; }
@media(max-width:620px){ .nav-tabs .nav-spacer{display:none}.nav-tabs .nav-utility{margin-left:0} }


.manage-list { display: grid; gap: 9px; }
.manage-row { border: 1px solid #dbe5e3; border-radius: 12px; padding: 11px 12px; display: grid; grid-template-columns: auto minmax(0,1fr) auto; gap: 11px; align-items: center; background: #fff; }
.manage-row.dragging { opacity: .5; }
.drag-handle { color: #7c918e; user-select: none; cursor: grab; font-size: 18px; letter-spacing: -3px; }
.manage-name { font-weight: 800; }
.manage-meta { font-size: 12px; color: var(--muted); margin-top: 2px; }
.manage-actions { display: flex; flex-wrap: wrap; gap: 5px; justify-content: flex-end; }

.output-summary { margin-bottom: 14px; }
.preview-area { margin-top: 18px; background: #e7eceb; border: 1px solid #d6dfdd; border-radius: 14px; padding: 24px 12px; overflow: auto; }
.a4-page { width: 210mm; height: 297mm; margin: 0 auto 18px; background: #fff; box-shadow: 0 7px 22px rgba(0,0,0,.12); position: relative; overflow: hidden; color: #000; }
.a4-page:last-child { margin-bottom: 0; }
.a4-content { position: absolute; top: 15mm; bottom: 18mm; left: 15mm; right: 15mm; overflow: hidden; }
.doc-title { margin: 0 0 4mm; text-align: center; font-family: "DFKai-SB", "BiauKai", serif; font-size: 14pt; line-height: 1.25; font-weight: 700; }
.doc-block { padding-bottom: 2mm; }
.doc-table { width: 100%; table-layout: fixed; border-collapse: collapse; font-size: 12pt; color: #000; }
.doc-table th, .doc-table td { border: .25mm solid #000; padding: 1.35mm 1.8mm; vertical-align: middle; }
.doc-table th { text-align: center; font-weight: 700; font-family: "DFKai-SB", "BiauKai", "Times New Roman", serif; line-height: 1.25; }
.doc-table td { text-align: left; line-height: 1.3; overflow-wrap: anywhere; word-break: normal; }
.font-cjk { font-family: "DFKai-SB", "BiauKai", serif; }
.font-latin { font-family: "Times New Roman", serif; }
.page-footer { position: absolute; bottom: 8mm; left: 15mm; right: 15mm; text-align: center; color: #000; font-family: "DFKai-SB", "BiauKai", "Times New Roman", serif; font-size: 10pt; line-height: 1; }
#printHost { display: none; }
.measure-sandbox { position: fixed; z-index: -9999; left: -10000px; top: 0; width: 180mm; visibility: hidden; pointer-events: none; background: #fff; }
.measure-sandbox .doc-block { width: 180mm; }

.runtime-dialog { border: 0; padding: 0; border-radius: 16px; width: min(880px, calc(100vw - 32px)); max-height: calc(100vh - 36px); box-shadow: 0 18px 60px rgba(22, 43, 42, .28); color: var(--ink); }
.runtime-dialog::backdrop { background: rgba(18, 37, 36, .48); backdrop-filter: blur(2px); }
.dialog-shell { display: flex; flex-direction: column; max-height: calc(100vh - 36px); background: #fff; }
.dialog-header { padding: 18px 20px 13px; border-bottom: 1px solid #e1e9e7; display: flex; justify-content: space-between; align-items: center; gap: 12px; }
.dialog-header h2 { margin: 0; font-size: 21px; color: #244b47; }
.dialog-body { padding: 18px 20px; overflow: auto; }
.dialog-footer { padding: 13px 20px 18px; border-top: 1px solid #e1e9e7; display: flex; justify-content: flex-end; gap: 8px; background: #fbfdfc; }
.field { display: grid; gap: 6px; margin-bottom: 15px; }
.field label { font-weight: 800; color: #3e5753; }
.field input, .field textarea { width: 100%; border: 1px solid #cbd9d6; border-radius: 9px; padding: 9px 10px; background: #fff; }
.field textarea { min-height: 110px; resize: vertical; }
.editor-items { display: grid; gap: 6px; margin-bottom: 13px; }
.editor-row { display: grid; grid-template-columns: auto auto minmax(0,1fr) auto auto auto; gap: 6px; align-items: center; }
.editor-row input { min-width: 0; border: 1px solid #cfdbd9; border-radius: 8px; padding: 8px 9px; }
.editor-index { width: 28px; text-align: right; color: #7a8d8a; font-size: 12px; }
@media (max-width: 650px) { .editor-row { grid-template-columns: auto minmax(0,1fr) auto; } .editor-row .item-up, .editor-row .item-down, .editor-index { display: none; } }
.check-results { display: grid; gap: 9px; }
.result-group { border: 1px solid #dce6e4; border-radius: 10px; padding: 12px 14px; }
.result-group h3 { margin: 0 0 8px; font-size: 16px; }
.result-group ul { margin: 0; padding-left: 20px; }

.fatal { max-width: 780px; margin: 80px auto; padding: 24px; background: #fff; border: 1px solid #efc7cd; border-radius: 16px; box-shadow: var(--shadow); }
.fatal h1 { color: #8b2b38; }

@page { size: A4 portrait; margin: 0; }
@media print {
  html, body { margin: 0 !important; padding: 0 !important; background: #fff !important; min-height: 0 !important; }
  #app { display: none !important; }
  #printHost { display: block !important; margin: 0 !important; padding: 0 !important; width: 210mm !important; }
  #printHost .a4-page { display: block; width: 210mm; height: 297mm; margin: 0 !important; box-shadow: none !important; page-break-after: always; break-after: page; }
  #printHost .a4-page:last-child { page-break-after: auto; break-after: auto; }
}

/* V2 selection + groups */
.category-card { transition: border-color .15s ease, background .15s ease, box-shadow .15s ease, transform .12s ease; }
.category-card:hover { border-color: #b9cfca; box-shadow: 0 5px 16px rgba(34,65,63,.07); }
.category-card.selected { border: 2px solid var(--primary); background: #e5f4ef; box-shadow: 0 0 0 3px rgba(40,107,99,.08), 0 8px 20px rgba(34,65,63,.10); }
.category-card.selected .category-main { padding: 11px 13px; }
.category-main { cursor: pointer; }
.category-text-wrap { min-width: 0; }
.category-title-line { display:flex; align-items:center; flex-wrap:wrap; gap:7px; }
.selection-checkmark { display:inline-flex; align-items:center; justify-content:center; min-width:20px; height:20px; color:var(--primary); font-weight:900; font-size:16px; }
.selection-status-badge { display:inline-flex; border-radius:999px; padding:2px 7px; background:var(--primary); color:#fff; font-size:11px; font-weight:800; letter-spacing:.03em; }
.group-quick-list { display:grid; gap:8px; }
.group-quick-item { width:100%; border:1px solid #d7e3e0; background:#fff; border-radius:11px; display:grid; grid-template-columns:auto 1fr; gap:10px; align-items:center; text-align:left; padding:10px 11px; color:var(--ink); }
.group-quick-item:hover { background:#f4faf8; border-color:#b6d0ca; }
.group-quick-item.checked { background:#e6f4ef; border-color:#8cbeb3; }
.group-quick-item.indeterminate { background:#f4f7f6; border-color:#aebfbc; }
.group-check { width:22px; height:22px; border:2px solid #9fb5b0; border-radius:6px; display:flex; align-items:center; justify-content:center; font-weight:900; }
.group-check.checked { background:var(--primary); border-color:var(--primary); color:#fff; }
.group-check.indeterminate { background:#6d8984; border-color:#6d8984; color:#fff; }
.group-label { display:flex; justify-content:space-between; gap:8px; align-items:center; }
.group-label small { color:var(--muted); white-space:nowrap; }
.group-actions { margin-top:12px; justify-content:flex-end; }
.empty-state { padding:14px; border:1px dashed #cbdad7; border-radius:10px; background:#fafcfb; color:var(--muted); }
.group-member-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; margin-top:7px; }
.member-check { display:grid; grid-template-columns:auto 1fr auto; gap:8px; align-items:center; border:1px solid #dce6e4; border-radius:9px; padding:9px 10px; background:#fff; }
.member-check input { width:18px; height:18px; accent-color:var(--primary); }
.member-check small { color:var(--muted); }
@media(max-width:620px){ .group-member-list{grid-template-columns:1fr;} }

/* V2 bilingual layout/editor */
.doc-table.bilingual-table { table-layout: fixed; }
.bilingual-table col.seq-col { width: 8mm; }
.bilingual-table col.zh-col { width: 31mm; }
.bilingual-table col.en-col { width: 51mm; }
.bilingual-table .column-header th { font-size:12pt; font-weight:700; text-align:center; }
.bilingual-table td.seq-cell { text-align:center; font-family:"Times New Roman",serif; white-space:nowrap; padding-left:.6mm; padding-right:.6mm; }
.editor-top-grid { display:grid; grid-template-columns:minmax(0,2fr) minmax(180px,1fr); gap:12px; }
.field select { width:100%; border:1px solid #cbdad7; border-radius:9px; padding:10px 11px; background:#fff; }
.bilingual-editor-row { grid-template-columns:auto auto minmax(160px,.85fr) minmax(220px,1.15fr) auto auto auto; }
@media(max-width:760px){ .editor-top-grid{grid-template-columns:1fr;} .bilingual-editor-row{grid-template-columns:auto auto 1fr;}.bilingual-editor-row .editor-en{grid-column:3}.bilingual-editor-row .item-up,.bilingual-editor-row .item-down,.bilingual-editor-row .item-delete{grid-row:3;} }

/* V2 single-page preview pager */
.preview-pager { display:grid; grid-template-columns:auto auto auto 1fr auto; gap:10px; align-items:center; margin:12px 0 14px; padding:10px 12px; border:1px solid #dce6e4; border-radius:12px; background:#f9fcfb; }
.preview-page-indicator { font-weight:800; white-space:nowrap; color:#294b47; }
.page-number-strip { display:flex; flex-wrap:wrap; gap:5px; justify-content:center; }
.page-number-btn.active { background:var(--primary); color:#fff; border-color:var(--primary); }
.page-ellipsis { align-self:center; padding:0 3px; color:var(--muted); }
.page-jump { display:flex; gap:5px; align-items:center; white-space:nowrap; font-size:13px; color:var(--muted); }
.page-jump input { width:62px; border:1px solid #cbdad7; border-radius:8px; padding:7px 6px; text-align:center; }
.single-page-preview .a4-page { margin-bottom:0; }
@media(max-width:760px){ .preview-pager{grid-template-columns:1fr auto 1fr}.preview-page-indicator{text-align:center}.page-number-strip{display:none}.page-jump{grid-column:1/-1;justify-content:center}.preview-pager #prevPageBtn{justify-self:start}.preview-pager #nextPageBtn{justify-self:end} }

/* V2 import wizard */
.import-dialog { width:min(1120px,calc(100vw - 28px)); }
.import-intro { padding:14px 16px; border:1px solid #cfe0dc; border-radius:12px; background:#f3faf8; margin-bottom:16px; }
.import-intro p { margin:5px 0 0; color:var(--muted); }
.import-file-drop { display:grid; gap:10px; padding:22px; border:2px dashed #b8d2cc; border-radius:14px; background:#fbfefd; text-align:center; }
.import-file-drop > span { font-weight:800; color:#285951; font-size:18px; }
.import-file-drop input { margin:auto; max-width:100%; }
.import-file-drop small { color:var(--muted); }
.import-header-toggle { margin-bottom:14px; }
.import-mapping-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(170px,1fr)); gap:9px; margin:12px 0 16px; }
.import-mapping-grid label { display:grid; gap:6px; padding:10px; border:1px solid #dce6e4; border-radius:10px; background:#fbfdfc; }
.import-mapping-grid label > span { font-weight:800; overflow:hidden; text-overflow:ellipsis; }
.import-mapping-grid select, .import-target-grid select { width:100%; border:1px solid #cbdad7; border-radius:8px; padding:8px; background:#fff; }
.import-sample-wrap { margin-top:12px; }
.import-sample-table { overflow:auto; margin-top:6px; border:1px solid #dce6e4; border-radius:10px; }
.import-sample-table table { width:100%; border-collapse:collapse; min-width:520px; font-size:13px; }
.import-sample-table th,.import-sample-table td { border-bottom:1px solid #e4ecea; border-right:1px solid #e4ecea; padding:7px 9px; text-align:left; white-space:nowrap; }
.import-sample-table th { background:#f1f7f5; color:#3a5954; }
.import-target-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; align-items:start; margin-bottom:16px; padding:14px; background:#f8fbfa; border:1px solid #dce6e4; border-radius:12px; }
.import-target-grid .field { margin:0; }
.import-choice { border:1px solid #d5e2df; border-radius:10px; padding:10px 12px; display:grid; gap:8px; margin:0; }
.import-choice legend { padding:0 5px; font-weight:800; color:#3d5752; }
.import-preview-table { display:grid; gap:6px; }
.import-preview-head,.import-preview-row { display:grid; grid-template-columns:minmax(120px,.8fr) minmax(150px,1fr) minmax(150px,1fr) minmax(190px,1.25fr) auto; gap:6px; align-items:center; }
.import-preview-head { padding:0 4px; font-size:12px; font-weight:800; color:var(--muted); }
.import-preview-row { padding:7px; border:1px solid #dce6e4; border-radius:9px; background:#fff; }
.import-preview-row input { min-width:0; border:1px solid #cfdbd9; border-radius:7px; padding:7px 8px; }
@media(max-width:820px){ .import-target-grid{grid-template-columns:1fr}.import-preview-head{display:none}.import-preview-row{grid-template-columns:1fr 1fr}.import-preview-row .preview-en{grid-column:1/-1}.import-preview-row .preview-delete{justify-self:end} }


/* V2.01 interface refresh — soft differentiated major sections */
.app-shell { max-width: 1480px; padding: 18px 22px 48px; }
.app-header { align-items: center; padding: 4px 2px 10px; margin-bottom: 10px; }
.app-title-wrap { display:flex; align-items:center; gap:12px; min-width:0; }
.app-brand-mark { width:42px; height:42px; flex:0 0 42px; border-radius:11px; display:grid; place-items:center; background:linear-gradient(145deg,#708b75,#43694d); color:#fff; font-size:25px; box-shadow:0 5px 14px rgba(55,88,64,.18); }
.app-title-copy { min-width:0; }
.app-title-wrap h1 { margin:0; color:#202724; font-size:clamp(24px,2.5vw,34px); }
.app-title-wrap p { margin:4px 0 0; }
.version-stack { align-items:center; }
.badge.offline { background:#e8eee5; border-color:#d5dfd1; color:#48614c; font-weight:800; }
.nav-tabs { border-top:1px solid #e7e9e6; border-bottom:1px solid #e7e9e6; padding:8px 2px; margin:0 0 16px; }
.nav-tabs button { background:transparent; border-color:transparent; color:#5c6762; border-radius:8px; }
.nav-tabs button:hover:not(:disabled) { background:#f0f3ef; }
.nav-tabs button.active { color:#355f43; background:#eaf0e7; border-color:#d6e0d2; }

.document-workspace { display:grid; grid-template-columns:minmax(0,1.03fr) minmax(500px,.97fr); gap:16px; align-items:start; }
.workspace-left, .workspace-right { display:grid; gap:16px; min-width:0; }
.left-lower-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; align-items:stretch; grid-auto-rows:1fr; }
.left-lower-grid > .major-panel { height:100%; display:flex; flex-direction:column; }
.left-lower-grid > .major-panel .card-header { flex:0 0 auto; }
.left-lower-grid > .major-panel .card-body { flex:1 1 auto; }
.major-panel { box-shadow:0 7px 22px rgba(48,58,53,.065); }
.selection-panel { background: #f7f8f2; border-color:#cfd8c8; }
.preview-panel { background: #f2f6fb; border-color:#cbd7e9; }
.groups-panel { background: #fff8ed; border-color:#e7d8bb; }
.import-panel { background: #eef8f6; border-color:#c8dfda; }
.output-panel { background: #f6f3fb; border-color:#d8cee8; }
.selection-panel .card-header { background:linear-gradient(180deg,rgba(255,255,255,.28),rgba(255,255,255,0)); border-color:#dce3d7; }
.preview-panel .card-header { background:linear-gradient(180deg,rgba(255,255,255,.32),rgba(255,255,255,0)); border-color:#dbe3ee; }
.groups-panel .card-header { border-color:#eadfc9; }
.import-panel .card-header { border-color:#d6e7e3; }
.output-panel .card-header { border-color:#e0d9ec; }
.major-panel .card-header h2, .major-panel .card-header h3 { color:#252b28; }
.icon-svg { display:inline-flex; align-items:center; justify-content:center; width:1.1em; height:1.1em; flex:0 0 auto; }
.icon-svg svg { width:100%; height:100%; display:block; stroke:currentColor; fill:none; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
.panel-icon { display:inline-flex; align-items:center; justify-content:center; width:28px; height:28px; margin-right:7px; border-radius:8px; background:rgba(69,104,76,.10); color:#44694c; vertical-align:middle; }
.preview-panel .panel-icon { background:rgba(70,104,145,.10); color:#496b96; }
.groups-panel .panel-icon { background:rgba(161,113,49,.10); color:#8b622d; }
.import-panel .panel-icon { background:rgba(43,112,100,.10); color:#2d7468; }
.output-panel .panel-icon { background:rgba(96,72,139,.10); color:#67518c; }

.app-brand-mark .brand-icon-svg { width:24px; height:24px; }
.btn .btn-icon { width:18px; height:18px; }
.btn.small .btn-icon { width:16px; height:16px; }
.selection-tools { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:10px; align-items:center; margin-bottom:12px; }
.selection-tools .search-wrap { margin:0; }
.selection-summary { border:1px solid #d8dfd1; border-radius:11px; padding:9px 10px; background:rgba(255,255,255,.48); }
.selection-total { color:#45604c; }
.category-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
.category-card { background:rgba(255,255,255,.78); border-color:#dde2da; border-radius:12px; min-width:0; }
.category-card:hover { border-color:#aebdad; box-shadow:0 6px 16px rgba(66,85,70,.08); }
.category-card.selected { background:#eef4eb; border-color:#61866c; box-shadow:0 0 0 1px rgba(68,108,78,.12),0 6px 16px rgba(66,85,70,.09); }
.category-card.selected .category-main { padding:12px 13px; }
.category-main { grid-template-columns:auto minmax(0,1fr) auto; gap:12px; align-items:start; min-height:88px; }
.category-main input[type="checkbox"] { margin-top:3px; }
.category-icon { display:none; }
.category-text-wrap { padding-top:1px; }
.category-name { color:#2a322d; font-size:15px; }
.category-title-line { gap:6px; }
.selection-checkmark { display:none; }
.selection-status-badge { background:#597c61; }
.category-count { align-self:end; margin-top:0; background:#ecefe9; color:#5f6962; }
.groups-panel .card-body, .import-panel .card-body { display:grid; gap:12px; min-height:220px; align-content:stretch; }
.groups-panel .card-body { grid-template-rows:minmax(0,1fr) auto; }
.import-panel .card-body { grid-template-rows:auto minmax(0,1fr); }
.groups-panel .group-quick-list, .groups-panel .empty-state { height:100%; }
.groups-panel .empty-state { display:flex; align-items:center; }
.group-actions { margin-top:auto; justify-content:space-between; align-self:stretch; }
.import-format-grid { margin-top:auto; align-self:stretch; }
.category-card.selected .category-count { background:#dce9d9; color:#3e6247; }
.category-card details { background:rgba(255,255,255,.38); }
.item-preview { columns:1; max-height:260px; overflow:auto; padding:4px 16px 12px 30px; white-space:normal; overflow-wrap:anywhere; word-break:break-word; line-height:1.6; }
.item-preview li { break-inside:avoid; margin:4px 0; }
.selection-footer-actions { display:flex; justify-content:space-between; gap:10px; align-items:center; margin-top:14px; }

.group-quick-list { gap:7px; }
.group-quick-item { background:rgba(255,255,255,.62); border-color:#eadfc8; }
.group-quick-item:hover { background:#fffdf9; border-color:#d8c5a2; }
.group-quick-item.checked { background:#f7eddc; border-color:#d2b783; }
.group-quick-item.indeterminate { background:#f5f0e7; border-color:#cfc3ae; }
.group-actions { justify-content:space-between; }

.import-format-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:8px; margin-top:12px; }
.import-format-btn { min-width:0; border:1px solid #cddfd9; border-radius:9px; background:rgba(255,255,255,.66); padding:9px 6px; color:#3f625b; font-weight:800; display:flex; align-items:center; justify-content:center; gap:6px; }
.import-format-btn:hover { background:#fff; border-color:#9ec5bb; }
.import-format-btn[data-kind="xlsx"] { color:#39724c; }
.import-format-btn[data-kind="docx"] { color:#4a6090; }
.import-format-btn[data-kind="pdf"] { color:#9a4b4b; }
.import-note { margin:0 0 8px; color:#647770; }

.preview-panel .card-body { padding-top:14px; }
.preview-pager { background:rgba(255,255,255,.54); border-color:#d5dfeb; margin:0 0 12px; }
.preview-placeholder { min-height:520px; display:grid; place-items:center; text-align:center; border:1px dashed #cbd7e6; border-radius:12px; background:rgba(255,255,255,.42); color:#718095; padding:30px; }
.preview-placeholder strong { display:block; color:#52657e; font-size:18px; margin-bottom:8px; }
.preview-panel .preview-area { margin-top:0; background:#e8edf3; border-color:#d1dbe7; padding:18px 10px; min-height:520px; }
.preview-panel .single-page-preview .a4-page { zoom:.72; }
.preview-panel .notice { background:rgba(255,255,255,.55); border-color:#d6e0eb; }

.output-panel .card-body { display:grid; gap:12px; }
.output-action-grid { display:grid; grid-template-columns:1fr 1fr 1fr; gap:10px; }
.output-action-grid .btn { min-height:58px; display:flex; flex-direction:column; justify-content:center; align-items:center; gap:2px; font-size:15px; }
.output-action-grid .btn small { font-size:11px; font-weight:500; opacity:.82; }
.btn.output-docx { background:#5a775d; border-color:#5a775d; color:#fff; }
.btn.output-docx:hover:not(:disabled) { background:#48664c; border-color:#48664c; }
.btn.output-print { background:#d8942b; border-color:#d8942b; color:#fff; }
.btn.output-print:hover:not(:disabled) { background:#bd7b1e; border-color:#bd7b1e; }
.btn.output-return { background:rgba(255,255,255,.62); border-color:#d8d1e1; color:#5e5965; }
.output-meta { display:flex; flex-wrap:wrap; gap:8px; }
.output-meta .badge { background:rgba(255,255,255,.55); border-color:#ddd7e8; }

.manage-mode-grid > .card:first-child { background:#f7f8f2; border-color:#cfd8c8; }
.manage-mode-grid aside .card:first-child { background:#f6f3fb; border-color:#d8cee8; }
.manage-mode-grid aside .card:last-child { background:#eef8f6; border-color:#c8dfda; }

@media(max-width:1180px){
  .document-workspace{grid-template-columns:1fr;}
  .workspace-right{grid-template-columns:1fr;}
  .preview-panel .single-page-preview .a4-page{zoom:.82;}
}
@media(max-width:760px){
  .app-shell{padding:12px 12px 36px;}
  .app-title-wrap{align-items:flex-start;}
  .app-brand-mark{width:38px;height:38px;flex-basis:38px;font-size:22px;}
  .category-list,.left-lower-grid{grid-template-columns:1fr;}
  .selection-tools{grid-template-columns:1fr;}
  .output-action-grid{grid-template-columns:1fr;}
  .preview-panel .single-page-preview .a4-page{zoom:.53;}
  .import-format-grid{grid-template-columns:repeat(2,1fr);}
}


/* V2.05 item preview rules — <=50 vertical scroll, >50 searchable 50-row pagination */
.item-preview {
  columns: auto !important;
  column-count: initial !important;
  column-width: auto !important;
  max-height: 300px;
  overflow-y: auto;
  overflow-x: hidden;
  padding: 6px 16px 12px 32px;
  margin: 0;
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: break-word;
  line-height: 1.6;
  scrollbar-gutter: stable;
}
.item-preview li { break-inside: avoid; margin: 4px 0; padding-right: 6px; }
.large-item-preview { padding: 10px 14px 14px; overflow-x: hidden; }
.large-preview-toolbar { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:10px; align-items:center; margin-bottom:10px; }
.large-preview-search { min-width:0; width:100%; border:1px solid #cbdad7; border-radius:9px; padding:8px 10px; background:#fff; }
.large-preview-count { color:var(--muted); font-size:12px; white-space:nowrap; }
.large-preview-table-wrap { width:100%; overflow-x:hidden; border:1px solid #dce6e4; border-radius:9px; background:#fff; }
.large-preview-table { width:100%; table-layout:fixed; border-collapse:collapse; font-size:13px; }
.large-preview-table th, .large-preview-table td { border-bottom:1px solid #e3ebe9; border-right:1px solid #e3ebe9; padding:7px 8px; text-align:left; vertical-align:top; white-space:normal; overflow-wrap:anywhere; word-break:break-word; }
.large-preview-table th:last-child, .large-preview-table td:last-child { border-right:0; }
.large-preview-table tbody tr:last-child td { border-bottom:0; }
.large-preview-table th { background:#f3f7f6; color:#435b57; font-weight:800; }
.large-preview-table .seq-col { width:58px; text-align:center; }
.large-preview-table td.seq-col { color:#687985; font-variant-numeric:tabular-nums; }
.large-preview-empty { padding:18px; text-align:center; color:var(--muted); }
.large-preview-pager { display:flex; align-items:center; justify-content:center; gap:9px; margin-top:10px; }
.large-preview-page-status { min-width:76px; text-align:center; color:#526964; font-size:13px; font-weight:800; }
@media(max-width:620px){
  .large-item-preview { padding-left:10px; padding-right:10px; }
  .large-preview-toolbar { grid-template-columns:1fr; gap:6px; }
  .large-preview-count { white-space:normal; }
  .large-preview-table { font-size:12px; }
  .large-preview-table .seq-col { width:42px; }
  .large-preview-table th, .large-preview-table td { padding:6px; }
}


/* V2.08 modal item viewer, partial groups, and review aids */
.category-card-footer { border-top:1px dashed #dce6e4; padding:8px 12px 10px; display:flex; justify-content:flex-end; background:rgba(255,255,255,.34); }
.view-items-btn { min-width:108px; }
.category-card[data-selection-state="partial"] { border:2px solid #9d7a37; background:#fff8e9; box-shadow:0 0 0 3px rgba(157,122,55,.08),0 8px 20px rgba(80,67,34,.08); }
.category-card[data-selection-state="partial"] .selection-status-badge { background:#9d7a37; }
.category-items-dialog { width:min(980px,calc(100vw - 28px)); }
.item-dialog-scroll { max-height:min(62vh,620px); overflow-y:auto; overflow-x:hidden; border:1px solid #dce6e4; border-radius:10px; background:#fff; }
.item-dialog-table { width:100%; table-layout:fixed; border-collapse:collapse; font-size:14px; }
.item-dialog-table th,.item-dialog-table td { border-bottom:1px solid #e4ecea; padding:8px 10px; text-align:left; vertical-align:top; white-space:normal; overflow-wrap:anywhere; word-break:break-word; }
.item-dialog-table th { position:sticky; top:0; background:#f3f7f6; z-index:1; color:#435b57; }
.item-dialog-table .seq-col { width:62px; text-align:center; }
.item-dialog-table tr:last-child td { border-bottom:0; }

.group-editor-dialog { width:min(1060px,calc(100vw - 28px)); }
.group-category-list { display:grid; gap:9px; }
.group-category-editor { border:1px solid #dce6e4; border-radius:11px; background:#fbfdfc; overflow:hidden; }
.group-category-head { display:grid; grid-template-columns:auto minmax(0,1fr) auto auto; gap:10px; align-items:center; padding:10px 12px; }
.group-category-toggle { width:18px; height:18px; accent-color:var(--primary); }
.group-category-title strong { display:block; color:#344f4b; }
.group-entry-status { color:var(--muted); font-size:12px; white-space:nowrap; }
.group-category-options { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:8px; align-items:end; border-top:1px dashed #dce6e4; padding:10px 12px; background:#fff; }
.group-category-options .field { margin:0; }
.group-alias-input:disabled { background:#f1f4f3; color:#8b9997; }
.group-item-picker-dialog { width:min(940px,calc(100vw - 28px)); }
.picker-toolbar { display:grid; grid-template-columns:minmax(0,1fr) auto auto; gap:8px; align-items:center; margin-bottom:10px; }
.picker-search { width:100%; border:1px solid #cbdad7; border-radius:9px; padding:8px 10px; }
.picker-list-wrap { max-height:min(58vh,560px); overflow-y:auto; overflow-x:hidden; border:1px solid #dce6e4; border-radius:9px; }
.picker-table { width:100%; table-layout:fixed; border-collapse:collapse; font-size:13px; }
.picker-table th,.picker-table td { border-bottom:1px solid #e4ecea; padding:7px 8px; text-align:left; vertical-align:top; overflow-wrap:anywhere; }
.picker-table th { position:sticky; top:0; background:#f3f7f6; z-index:1; }
.picker-table .check-col { width:44px; text-align:center; }
.picker-table .seq-col { width:58px; text-align:center; }
.picker-pager { display:flex; justify-content:center; gap:9px; align-items:center; margin-top:10px; }

.review-summary { display:flex; flex-wrap:wrap; gap:8px; align-items:center; color:var(--muted); font-size:12px; }
.editor-review-meta { grid-column:3/-1; display:flex; flex-wrap:wrap; align-items:center; gap:8px; padding:6px 8px; border-radius:7px; background:#f7f9f8; font-size:12px; color:#687985; }
.editor-original { flex:1 1 260px; min-width:0; overflow-wrap:anywhere; }
.review-label { display:inline-flex; align-items:center; gap:5px; white-space:nowrap; font-weight:700; }
.review-check,.import-review-check { width:17px; height:17px; accent-color:var(--primary); }
.review-status { font-weight:800; white-space:nowrap; }
.editor-row.is-reviewed .editor-review-meta,.import-preview-row.is-reviewed { background:#eef8f1; border-color:#b9d9c1; }
.editor-row.is-changed .editor-review-meta,.import-preview-row.is-changed { background:#fff8e5; border-color:#e2c978; }
.editor-row.is-invalid .editor-review-meta,.import-preview-row.is-invalid { background:#fff0f1; border-color:#e3aeb6; }
.import-review-toolbar { display:flex; flex-wrap:wrap; gap:8px; align-items:center; justify-content:space-between; margin-bottom:10px; }
.import-review-filter { border:1px solid #cbdad7; border-radius:8px; padding:7px 9px; background:#fff; }
.import-original-line { grid-column:1/-1; padding:6px 8px; border-radius:7px; background:#f5f7f6; color:#657773; font-size:12px; overflow-wrap:anywhere; }
.import-review-box { grid-column:1/-1; display:flex; flex-wrap:wrap; gap:8px; align-items:center; justify-content:flex-end; font-size:12px; }
.import-preview-row.is-reviewed .import-original-line { background:#e9f5ed; }
.import-preview-row.is-changed .import-original-line { background:#fff1c9; }
.import-preview-row.is-invalid .import-original-line { background:#ffe3e6; }
@media(max-width:760px){
  .group-category-head{grid-template-columns:auto minmax(0,1fr) auto}.group-category-head .group-item-config-btn{grid-column:2/-1;justify-self:start}
  .group-category-options{grid-template-columns:1fr}.picker-toolbar{grid-template-columns:1fr 1fr}.picker-search{grid-column:1/-1}
  .editor-review-meta{grid-column:1/-1}
}


/* V2.09 group-lock workflow, compact selection cards, and explicit source comparison */
.document-workspace { grid-template-columns:minmax(0,1.08fr) minmax(470px,.92fr); }
.workspace-left,.workspace-right { min-width:0; }
.category-list {
  grid-template-columns:repeat(2,minmax(0,1fr));
  max-height:min(66vh,680px);
  overflow-y:auto;
  overflow-x:hidden;
  align-content:start;
  padding:2px 5px 4px 1px;
  scrollbar-gutter:stable;
}
.category-card { min-height:0; }
.category-main { min-height:0; padding:9px 10px; align-items:center; grid-template-columns:auto minmax(0,1fr) auto; gap:9px; }
.category-card.selected .category-main { padding:8px 9px; }
.category-main.group-locked { cursor:default; }
.category-main.group-locked:hover { background:transparent; }
.category-text-wrap { padding-top:0; }
.category-title-line { flex-wrap:nowrap; min-width:0; }
.category-name { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.selection-status-badge { flex:0 0 auto; font-size:10px; }
.view-items-btn { white-space:nowrap; min-width:62px; padding:5px 7px; border-color:#d4dfdc; background:rgba(255,255,255,.62); }
.view-items-btn:hover { background:#fff; }
.group-lock-banner { display:flex; justify-content:space-between; gap:12px; align-items:center; margin:0 0 12px; padding:10px 12px; border:1px solid #d9c589; border-radius:10px; background:#fff7df; color:#66501f; }
.group-lock-banner strong { display:block; margin-bottom:2px; }
.group-lock-banner .small { color:#786638; }
.selection-tools.locked { opacity:.78; }
.groups-panel .card-body { min-height:0; }
.workspace-right > .groups-panel { margin-top:0; }

.review-compare-head,.import-compare-head { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(150px,.55fr); gap:8px; padding:7px 9px; margin:6px 0; border:1px solid #dce6e4; border-radius:9px; background:#edf4f2; color:#526964; font-size:12px; font-weight:900; }
.review-compare-grid,.import-compare-grid { grid-column:1/-1; display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(150px,.55fr); gap:8px; align-items:stretch; margin-top:3px; }
.review-compare-cell,.import-compare-cell { min-width:0; padding:8px 9px; border:1px solid #dce6e4; border-radius:8px; background:#f8faf9; font-size:12px; color:#5e716d; overflow-wrap:anywhere; }
.review-compare-cell .compare-label,.import-compare-cell .compare-label { display:block; margin-bottom:4px; font-size:11px; font-weight:900; color:#72837f; }
.review-compare-cell.review-current,.import-compare-cell.import-current { background:#fff; color:#344f4b; }
.review-compare-cell.review-controls,.import-compare-cell.import-controls { display:flex; flex-wrap:wrap; gap:7px; align-items:center; align-content:center; justify-content:flex-start; }
.editor-row.is-reviewed .review-compare-cell,.import-preview-row.is-reviewed .import-compare-cell { border-color:#b9d9c1; }
.editor-row.is-changed .review-current,.import-preview-row.is-changed .import-current { background:#fff8e5; border-color:#e2c978; }
.editor-row.is-invalid .review-current,.import-preview-row.is-invalid .import-current { background:#fff0f1; border-color:#e3aeb6; }
.editor-review-filter { border:1px solid #cbdad7; border-radius:8px; padding:6px 8px; background:#fff; }
.import-preview-table { display:grid; gap:8px; }
.import-edit-grid { display:grid; grid-template-columns:minmax(120px,.8fr) minmax(150px,1fr) minmax(150px,1fr) minmax(190px,1.25fr) auto; gap:6px; align-items:center; grid-column:1/-1; }
.import-preview-row { display:grid; grid-template-columns:1fr; gap:7px; }
.import-preview-head { display:none; }
.import-original-line,.import-review-box { display:none; }

@media(max-width:900px){
  .document-workspace{grid-template-columns:1fr;}
  .category-list{max-height:560px;}
}
@media(max-width:760px){
  .category-list{grid-template-columns:1fr;max-height:520px;}
  .review-compare-head,.import-compare-head{display:none;}
  .review-compare-grid,.import-compare-grid{grid-template-columns:1fr;}
  .import-edit-grid{grid-template-columns:1fr 1fr;}
  .import-edit-grid .preview-en{grid-column:1/-1;}
  .group-lock-banner{align-items:flex-start;flex-direction:column;}
}



/* V2.10 source-document review, A4 bilingual typography, and page-flow fixes */
.doc-table.bilingual-table {
  width: 179.5mm;
  max-width: 179.5mm;
  box-sizing: border-box;
  border: .25mm solid #000;
  font-size: 10pt;
}
.bilingual-table .column-header th { font-size: 10pt; }
.bilingual-table thead tr:first-child th { font-size: 12pt; }
.bilingual-table th, .bilingual-table td { box-sizing: border-box; }

.category-editor-dialog { width:min(1280px,calc(100vw - 24px)); }
.source-review-section { margin: 10px 0 14px; }
.source-review-heading { display:flex; flex-wrap:wrap; gap:10px; align-items:center; justify-content:space-between; margin-bottom:8px; }
.source-review-heading h3 { margin:0; color:#315952; font-size:16px; }
.source-review-heading .small { max-width:760px; line-height:1.55; }
.source-review-workspace { display:grid; grid-template-columns:minmax(360px,.9fr) minmax(0,1.35fr); gap:12px; align-items:start; }
.source-document-pane { position:sticky; top:0; min-width:0; border:1px solid #c8d8d4; border-radius:12px; background:#f4f8f7; overflow:hidden; }
.source-document-toolbar { display:flex; flex-wrap:wrap; align-items:center; gap:8px; padding:10px; border-bottom:1px solid #d6e2df; background:#edf5f3; }
.source-document-toolbar strong { color:#315952; }
.source-document-input { max-width:100%; font-size:12px; }
.source-document-name { color:#4e6661; font-size:12px; font-weight:800; overflow-wrap:anywhere; }
.source-document-help { padding:9px 11px; background:#fff9e8; border-bottom:1px solid #eadcae; color:#705b27; font-size:12px; line-height:1.55; }
.source-document-viewer { height:min(66vh,720px); min-height:420px; background:#e8eceb; display:grid; place-items:center; }
.source-file-frame { width:100%; height:100%; min-height:420px; border:0; background:#fff; }
.source-file-image { display:block; max-width:100%; max-height:100%; object-fit:contain; margin:auto; }
.source-file-placeholder { padding:26px; color:#6e807c; text-align:center; line-height:1.65; }
.source-file-open { display:inline-block; margin-top:8px; }
.source-data-pane { min-width:0; }
.source-data-note { margin:0 0 8px; padding:8px 10px; border-radius:8px; background:#f3f6f5; color:#60736f; font-size:12px; line-height:1.55; }

.review-summary { gap:6px; }
.review-status-chip { display:inline-flex; align-items:center; gap:4px; border:2px solid transparent; border-radius:999px; padding:5px 9px; font-size:12px; font-weight:900; line-height:1; white-space:nowrap; }
.review-status-chip.pending { background:#f2f4f3; border-color:#bcc7c4; color:#52615e; }
.review-status-chip.reviewed { background:#e2f4e8; border-color:#67a879; color:#27613a; }
.review-status-chip.changed { background:#fff0c9; border-color:#d09a25; color:#79530c; }
.review-status-chip.invalid { background:#ffe2e5; border-color:#cf5968; color:#842d39; }
.review-status { display:inline-flex; align-items:center; min-height:27px; border-radius:999px; padding:4px 8px; font-weight:900; border:1px solid #b9c5c2; background:#f3f5f4; color:#52615e; }
.editor-row.is-reviewed .review-status,.import-preview-row.is-reviewed .review-status { border-color:#62a575; background:#e2f4e8; color:#27613a; }
.editor-row.is-changed .review-status,.import-preview-row.is-changed .review-status { border-color:#d09a25; background:#fff0c9; color:#79530c; }
.editor-row.is-invalid .review-status,.import-preview-row.is-invalid .review-status { border-color:#cf5968; background:#ffe2e5; color:#842d39; }
.review-compare-head { grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(150px,.55fr); }

.import-source-workspace { margin-top:12px; }
.import-source-workspace .source-document-pane { position:sticky; top:0; }

@media(max-width:980px){
  .source-review-workspace{grid-template-columns:1fr;}
  .source-document-pane{position:relative;}
  .source-document-viewer{height:520px;min-height:360px;}
}
@media(max-width:620px){
  .source-document-viewer{height:430px;min-height:300px;}
  .review-status-chip{font-size:11px;padding:4px 7px;}
}


/* V2.11 source-review simplification, image zoom, and stronger review status */
.source-document-viewer { display:block; overflow:auto; position:relative; }
.source-zoom-controls { position:sticky; top:0; z-index:3; display:flex; flex-wrap:wrap; align-items:center; gap:7px; padding:7px 9px; background:rgba(255,255,255,.96); border-bottom:1px solid #d5dfdc; box-shadow:0 2px 6px rgba(25,55,50,.08); }
.source-zoom-value { min-width:52px; text-align:center; font-size:12px; font-weight:900; color:#315952; }
.source-image-list { display:grid; gap:14px; padding:12px; min-width:100%; }
.source-image-page { margin:0; min-width:100%; }
.source-image-page figcaption { margin:0 0 5px; color:#536b66; font-size:12px; font-weight:800; }
.source-file-image { display:block; width:100%; max-width:none; max-height:none; height:auto; object-fit:initial; margin:0 auto; border:1px solid #cfd9d7; background:#fff; box-shadow:0 3px 10px rgba(20,40,37,.10); }
.review-row-meta,.import-row-review { grid-column:1/-1; display:flex; flex-wrap:wrap; align-items:center; gap:9px; padding:7px 9px; border:1px solid #cbd6d3; border-left:5px solid #9ca9a6; border-radius:8px; background:#f5f7f6; }
.editor-row.is-reviewed .review-row-meta,.import-preview-row.is-reviewed .import-row-review { border-color:#8bc09a; border-left-color:#3f9358; background:#e9f6ed; }
.editor-row.is-changed .review-row-meta,.import-preview-row.is-changed .import-row-review { border-color:#e0bd63; border-left-color:#c88610; background:#fff4d5; }
.editor-row.is-invalid .review-row-meta,.import-preview-row.is-invalid .import-row-review { border-color:#df8e99; border-left-color:#bd3548; background:#ffe8eb; }
.review-status-chip { padding:6px 10px; border-width:2px; box-shadow:0 1px 2px rgba(0,0,0,.06); }
.review-status { min-width:86px; justify-content:center; border-width:2px; }
.review-compare-head,.review-compare-grid,.import-compare-head,.import-compare-grid { display:none !important; }
.import-preview-row { border-left:4px solid #aab6b3; }
.import-preview-row.is-reviewed { border-left-color:#3f9358; }
.import-preview-row.is-changed { border-left-color:#c88610; }
.import-preview-row.is-invalid { border-left-color:#bd3548; }
@media(max-width:760px){ .review-row-meta,.import-row-review{grid-column:1/-1;} }

/* V2.12 import review workspace and adaptive import fields */
.source-review-workspace.resizable-source-workspace {
  --source-left: 60%;
  display:grid;
  grid-template-columns:minmax(260px,var(--source-left)) 12px minmax(280px,1fr);
  gap:0;
  align-items:start;
}
.source-review-workspace.resizable-source-workspace > .source-document-pane { border-radius:12px 0 0 12px; }
.source-review-workspace.resizable-source-workspace > .source-data-pane { padding-left:12px; }
.source-review-splitter {
  align-self:stretch; min-height:420px; cursor:col-resize; position:relative; touch-action:none;
  background:linear-gradient(90deg,transparent 4px,#c3d2ce 4px,#c3d2ce 8px,transparent 8px);
}
.source-review-splitter::after { content:"⋮"; position:sticky; top:48%; display:block; text-align:center; color:#6b817c; font-weight:900; }
.source-review-splitter:hover,.source-review-splitter.dragging { background:linear-gradient(90deg,transparent 3px,#6fa095 3px,#6fa095 9px,transparent 9px); }
.source-layout-presets { display:flex; flex-wrap:wrap; gap:6px; align-items:center; justify-content:flex-end; margin-bottom:8px; }
.source-layout-presets .btn.active { background:#e1efeb; border-color:#8bb5aa; color:#275f57; }
.source-docx-preview { min-height:100%; padding:18px; background:#fff; color:#222; font-family:"Microsoft JhengHei","Noto Sans TC",sans-serif; }
.source-docx-preview h4 { margin:0 0 12px; text-align:center; font-size:16px; }
.source-docx-preview p { margin:7px 0; line-height:1.55; }
.source-docx-preview table { width:100%; border-collapse:collapse; table-layout:fixed; margin:8px 0 14px; }
.source-docx-preview td { border:1px solid #777; padding:7px 9px; vertical-align:top; overflow-wrap:anywhere; }
.import-edit-grid { grid-template-columns:repeat(auto-fit,minmax(150px,1fr)) auto; align-items:end; }
.import-field { display:grid; gap:4px; min-width:0; }
.import-field-label { font-size:11px; font-weight:900; color:#536b66; }
.import-field-input { width:100%; min-width:0; border:1px solid #cfdbd9; border-radius:7px; padding:7px 8px; background:#fff; }
@media(max-width:980px){
  .source-review-workspace.resizable-source-workspace{grid-template-columns:1fr;gap:10px;}
  .source-review-splitter,.source-layout-presets{display:none;}
  .source-review-workspace.resizable-source-workspace > .source-document-pane{border-radius:12px;}
  .source-review-workspace.resizable-source-workspace > .source-data-pane{padding-left:0;}
}


/* Website authentication */
.login-shell{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{width:min(460px,100%)}.login-card h1{margin:0;font-size:24px;color:#244b47}.login-card form{display:grid;gap:12px}.login-card .field{margin:0}.login-card .btn{width:100%}
.admin-disabled-list{display:grid;gap:8px}.admin-disabled-row{display:flex;justify-content:space-between;gap:10px;align-items:center;border:1px solid #dce6e4;border-radius:9px;padding:9px 10px;background:#fbfdfc}.admin-tools{display:grid;gap:8px}
