
:root{--control-min-height:44px;--paper:#F5F2EC;--surface:#FFF;--ink:#1A1A18;--sub:#6B675E;--green:#14564A;--green-d:#0E3F36;--line:#E5DFD3;--line-d:#D3CBBA;--danger:#B23A2E}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:'Pretendard',sans-serif;background:var(--paper);color:var(--ink);line-height:1.5;
  background-image:radial-gradient(var(--line) .5px,transparent .5px);background-size:22px 22px}
.wrap{max-width:1400px;margin:0 auto;padding:28px 20px 80px}
header.top{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;border-bottom:2px solid var(--ink);padding-bottom:14px;margin-bottom:14px}
header.top h1{font-size:23px;font-weight:800;letter-spacing:-.02em}
header.top .co{font-size:13px;color:var(--green);font-weight:700}
header.top .back{margin-left:auto;font-size:13px;color:var(--sub);text-decoration:none}
header.top .back:hover{color:var(--green)}
.info{background:#FBF9F4;border:1px solid var(--line);border-radius:10px;padding:12px 14px;font-size:12.5px;
  color:var(--sub);margin-bottom:12px;line-height:1.65}
.info b{color:var(--ink)}
.toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:12px}
.toolbar input[type=search]{flex:1;min-width:160px;padding:9px 12px;border:1.5px solid var(--line-d);
  border-radius:10px;font-family:inherit;font-size:13px;outline:none}
.toolbar input[type=search]:focus{border-color:var(--green)}
.btn{border:none;cursor:pointer;font-weight:700;border-radius:10px;font-size:13px;padding:9px 14px;
  transition:.15s;font-family:inherit}
.btn-green{background:var(--green);color:#fff}.btn-green:hover{background:var(--green-d)}
.btn-outline{background:var(--surface);color:var(--ink);border:1px solid var(--line-d)}
.btn-outline:hover{border-color:var(--green);color:var(--green)}
.save-hint{font-size:12px;color:var(--sub);margin-left:4px}
.err{background:#FBEDEA;border:1px solid #E5BCB5;color:var(--danger);padding:11px 14px;border-radius:10px;
  font-size:13px;margin-bottom:12px;display:none}
.err.show{display:block}
.empty{text-align:center;padding:2.2rem 1rem;color:var(--sub);font-size:14px;line-height:1.8;
  background:var(--surface);border:1px dashed var(--line-d);border-radius:12px;margin-bottom:12px}
.tbl-wrap{background:var(--surface);border:1px solid var(--line);border-radius:12px;overflow:auto;max-height:calc(100vh - 240px)}
table{border-collapse:separate;border-spacing:0;width:100%;font-size:13px;min-width:900px}
td.group{min-width:180px}
td.group .group-wrap{display:flex;align-items:center;gap:4px}
td.group .group-wrap input{flex:1;min-width:0}
td.memo{min-width:160px}
tbody td input.fit-text{white-space:nowrap;overflow:hidden;text-overflow:clip}
.collapse-btn{flex-shrink:0;width:28px;height:28px;border:1px solid #C5D9D4;background:#EAF3F1;color:var(--green);border-radius:7px;cursor:pointer;font-size:11px;font-weight:800;font-family:inherit;line-height:1;padding:0}
.collapse-btn:hover{background:var(--green);color:#fff;border-color:var(--green)}
.vendor-count{flex-shrink:0;font-size:11px;font-weight:800;color:var(--green);background:#EAF3F1;border:1px solid #C5D9D4;border-radius:999px;padding:2px 7px;min-width:22px;text-align:center}
td.collapsed-hint{color:var(--sub);font-size:13px;font-weight:600;padding-left:12px}
tr.vendor-collapsed > td{background:#F7FBF9}
tr.group-collapsed > td{background:#F7FBF9}
tbody tr.group-start > td{border-top:2px solid #C5D9D4}
tbody tr.group-start:first-child > td{border-top:none}
tbody tr.group-start > td.group{background:#F7FBF9;vertical-align:middle;border-right:2px solid #D5E3DE}
tbody tr.group-start:hover > td.group{background:#EEF6F3}
tbody tr.group-start > td.group .group-wrap input{font-weight:700}
tbody tr.group-cont > td{background:#FCFBF8;border-bottom-color:#F3EFE6}
.view-tog{display:inline-flex;border:1.5px solid var(--line-d);border-radius:8px;overflow:hidden;flex-shrink:0}
.view-tog button{border:none;background:#F5F2EC;color:var(--sub);font-family:inherit;font-size:13px;font-weight:700;padding:8px 12px;cursor:pointer}
.view-tog button + button{border-left:1.5px solid var(--line-d)}
.view-tog button.on{background:var(--green);color:#fff}
.view-tog button:hover:not(.on){background:#EAF3F1;color:var(--green)}
.chk-overlap{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:700;color:var(--ink);cursor:pointer;user-select:none;padding:6px 8px;border-radius:8px}
.chk-overlap input{width:15px;height:15px;accent-color:var(--green);cursor:pointer}
.chk-overlap[hidden]{display:none}
.cmp-filters{display:inline-flex;gap:6px;align-items:center;flex-shrink:0}
.cmp-filters[hidden]{display:none}
.cmp-dd{position:relative}
.cmp-btn.has{border-color:var(--green);color:var(--green);background:#EAF3F1}
.cmp-panel{position:absolute;top:calc(100% + 4px);left:0;z-index:40;background:var(--surface);
  border:1.5px solid var(--line-d);border-radius:10px;min-width:220px;max-width:280px;overflow:hidden}
.cmp-panel[hidden]{display:none}
.cmp-panel input[type=search]{width:100%;padding:8px 10px;border:none;border-bottom:1px solid var(--line);
  font-family:inherit;font-size:12px;outline:none}
.cmp-panel input[type=search]:focus{background:#F0FFF8}
.cmp-list{max-height:240px;overflow:auto;padding:6px}
.cmp-list label{display:flex;align-items:center;gap:8px;padding:5px 6px;font-size:13px;font-weight:600;
  cursor:pointer;border-radius:6px;color:var(--ink)}
.cmp-list label:hover{background:#EAF3F1}
.cmp-list input{width:15px;height:15px;accent-color:var(--green);flex-shrink:0}
.cmp-list span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cmp-empty{padding:12px 8px;text-align:center;color:var(--sub);font-size:12px}
.cmp-actions{display:flex;border-top:1px solid var(--line)}
.cmp-clear{flex:1;min-width:0;border:none;background:#FBF9F4;padding:8px;
  font-family:inherit;font-size:12px;font-weight:700;cursor:pointer;color:var(--sub)}
.cmp-actions .cmp-clear+.cmp-clear{border-left:1px solid var(--line)}
.cmp-clear:hover{color:var(--green);background:#EAF3F1}
thead th{position:sticky;top:0;background:var(--green-d);color:#fff;font-weight:700;padding:9px 10px;text-align:left;z-index:3;white-space:nowrap}
thead th.ctr{text-align:center}
thead th.act{width:72px;text-align:center}
thead th.sortable{cursor:pointer;user-select:none}
thead th.sortable:hover{background:#0A332C}
thead th.sortable .sort-ind{font-size:10px;margin-left:4px;opacity:.85}
tbody td{padding:4px 6px;border-bottom:1px solid #F0ECE2;vertical-align:middle}
tbody tr:hover td{background:#FAF8F4}
tbody tr.vendor-start > td{border-top:2px solid #C5D9D4}
tbody tr.vendor-start:first-child > td{border-top:none}
tbody tr.vendor-start > td.vendor{background:#F7FBF9;vertical-align:middle}
tbody tr.vendor-start:hover > td.vendor{background:#EEF6F3}
tbody tr.vendor-cont > td{background:#FCFBF8;border-bottom-color:#F3EFE6}
tbody tr.vendor-cont:hover > td{background:#F5F1E8}
tbody tr.vendor-end > td{border-bottom:2px solid #E5DFD3}
tbody td input{width:100%;padding:7px 8px;border:1px solid transparent;border-radius:6px;font-family:inherit;font-size:13px;outline:none;background:transparent}
tbody td input:focus{border-color:var(--green);background:#F0FFF8}
td.vendor{min-width:160px;border-right:2px solid #D5E3DE}
td.vendor .vendor-wrap{display:flex;align-items:center;gap:4px}
td.vendor input{font-weight:700;flex:1;min-width:0}
#tbl-wrap[data-view="group"] td.vendor{border-right:none}
.vendor-name-btn{flex:1;min-width:0;text-align:left;font:inherit;font-weight:700;font-size:13px;line-height:1.3;
  background:transparent;border:1px solid transparent;border-radius:6px;padding:7px 8px;cursor:pointer;color:var(--green);
  font-family:inherit;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vendor-name-btn:hover{background:#EAF3F1;text-decoration:underline}
.vendor-name-btn:disabled{color:var(--ink);cursor:default;text-decoration:none}
.vendor-name-btn:disabled:hover{background:transparent;text-decoration:none}
.plus-btn{flex-shrink:0;background:#EAF3F1;border:1px solid #C5D9D4;color:var(--green);cursor:pointer;font-weight:800;font-size:14px;line-height:1;width:28px;height:28px;border-radius:7px;font-family:inherit;padding:0}
.plus-btn:hover{background:var(--green);color:#fff;border-color:var(--green)}
td.discount{white-space:nowrap;text-align:center}
td.discount input{width:calc(100% - 16px);max-width:88px;text-align:center;font-variant-numeric:tabular-nums;display:inline-block}
td.discount .pct{color:var(--sub);font-size:12px;font-weight:700}
td.amount{white-space:nowrap;text-align:center}
td.amount input{width:calc(100% - 18px);max-width:100px;text-align:right;font-variant-numeric:tabular-nums;display:inline-block}
td.amount .won{color:var(--sub);font-size:12px;font-weight:700;margin-left:2px}
td.price{min-width:220px}
.price-wrap{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.mode-tog{display:inline-flex;border:1px solid var(--line-d);border-radius:8px;overflow:hidden;flex-shrink:0}
.mode-tog button{border:none;background:#F5F2EC;color:var(--sub);font-family:inherit;font-size:12px;font-weight:700;padding:6px 10px;cursor:pointer}
.mode-tog button + button{border-left:1px solid var(--line-d)}
.mode-tog button.on{background:var(--green);color:#fff}
.mode-tog button:hover:not(.on){background:#EAF3F1;color:var(--green)}
.price-val{display:flex;align-items:center;gap:2px;flex:1;min-width:90px}
.price-val input{flex:1;min-width:0;text-align:center;font-variant-numeric:tabular-nums}
.price-val .unit{color:var(--sub);font-size:12px;font-weight:700;flex-shrink:0}
td.buy-date{width:110px}
td.buy-date input{font-variant-numeric:tabular-nums;text-align:center}
td.buy-date input:placeholder-shown{color:#C4BDB0}
td.date{width:140px}
td.date input{font-variant-numeric:tabular-nums}
td.act{text-align:center;width:44px}
td.drag{width:28px;text-align:center;padding:4px 2px}
.drag-handle{display:inline-flex;align-items:center;justify-content:center;width:22px;height:28px;cursor:grab;color:#B0A89A;font-size:14px;line-height:1;border-radius:6px;user-select:none;letter-spacing:-2px}
.drag-handle:hover{background:#F0ECE2;color:var(--ink)}
.drag-handle:active{cursor:grabbing}
tr.dragging{opacity:.45}
tr.drag-over td{box-shadow:inset 0 2px 0 var(--green)}
.x-btn{background:none;border:none;cursor:pointer;color:#C4BDB0;font-size:14px;padding:2px 6px;border-radius:4px}
.x-btn:hover{color:var(--danger);background:#FBEDEA}
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(80px);background:var(--ink);
  color:#fff;padding:11px 20px;border-radius:10px;font-size:13px;font-weight:600;opacity:0;transition:.25s;z-index:3000;pointer-events:none}
.toast.show{transform:translateX(-50%) translateY(0);opacity:1}
.toast.ok{background:var(--green-d)}.toast.err{background:var(--danger)}
@media(max-width:760px){.wrap{padding:16px 10px 64px}.toolbar{align-items:stretch}.toolbar>*{max-width:100%}.toolbar input[type=search]{flex-basis:100%;min-width:100%}.tbl-wrap{max-height:none}.modal{width:100%;max-height:92dvh;border-radius:16px 16px 0 0}}
.file-btn{flex-shrink:0;background:#F5F2EC;border:1px solid var(--line-d);color:var(--sub);cursor:pointer;font-weight:700;font-size:11px;line-height:1;min-width:28px;height:28px;border-radius:7px;font-family:inherit;padding:0 6px;display:inline-flex;align-items:center;justify-content:center;gap:2px}
.file-btn:hover{border-color:var(--green);color:var(--green);background:#EAF3F1}
.file-btn.has{background:#EAF3F1;border-color:#C5D9D4;color:var(--green)}
.file-btn .n{font-size:10px}
.pagebreak-btn{flex-shrink:0;background:#F5F2EC;border:1px solid var(--line-d);color:var(--sub);cursor:pointer;font-weight:700;font-size:12px;line-height:1;width:28px;height:28px;border-radius:7px;font-family:inherit;padding:0;display:inline-flex;align-items:center;justify-content:center}
.pagebreak-btn:hover{border-color:var(--green);color:var(--green);background:#EAF3F1}
.pagebreak-btn.on{background:var(--green);border-color:var(--green);color:#fff}
.modal-bg{display:none;position:fixed;inset:0;background:rgba(26,26,24,.45);z-index:1000;align-items:center;justify-content:center;padding:16px}
.modal-bg.open{display:flex}
.modal{background:var(--surface);border-radius:14px;width:min(520px,100%);max-height:85vh;overflow:auto;box-shadow:0 20px 50px rgba(0,0,0,.2)}
.modal-hd{display:flex;align-items:flex-start;gap:10px;padding:16px 18px;border-bottom:1px solid var(--line)}
.modal-hd.draggable{cursor:move;user-select:none}
.modal-hd.draggable .x-btn{cursor:pointer}
.modal-hd h3{font-size:16px;font-weight:800;flex:1;line-height:1.35}
.modal-hd h3 small{display:block;font-size:12px;font-weight:600;color:var(--sub);margin-top:2px}
.modal-bd{padding:14px 18px 18px}
.file-list{list-style:none;margin:0 0 12px}
.file-list li{display:flex;align-items:center;gap:8px;padding:10px 0;border-bottom:1px solid #F0ECE2;font-size:13px}
.file-list li .name{flex:1;min-width:0;font-weight:600;word-break:break-all}
.file-list li .meta{font-size:11px;color:var(--sub);white-space:nowrap}
.file-list .empty-f{padding:20px;text-align:center;color:var(--sub);font-size:13px}
.file-actions{display:flex;gap:4px}
.file-actions button{border:1px solid var(--line-d);background:#fff;border-radius:7px;padding:5px 8px;font-size:11px;font-weight:700;cursor:pointer;font-family:inherit;color:var(--ink)}
.file-actions button:hover{border-color:var(--green);color:var(--green)}
.file-actions button.danger:hover{border-color:var(--danger);color:var(--danger)}
.drop-attach{border:2px dashed var(--line-d);border-radius:10px;padding:18px;text-align:center;cursor:pointer;background:#FBF9F4;transition:.15s}
.drop-attach:hover,.drop-attach.over{border-color:var(--green);background:#EAF3F1}
.drop-attach p{font-size:13px;font-weight:700;margin-bottom:4px}
.drop-attach span{font-size:12px;color:var(--sub)}
.drop-attach input{display:none}
/* print modal */
.modal.print-modal{width:min(960px,100%);max-height:92vh}
.print-controls{display:flex;flex-wrap:wrap;gap:14px 20px;align-items:flex-end;margin-bottom:14px;padding-bottom:12px;border-bottom:1px solid var(--line)}
.print-controls label.field{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:700;color:var(--sub)}
.print-controls select{padding:7px 10px;border:1px solid var(--line-d);border-radius:8px;font-family:inherit;font-size:13px;min-width:110px}
.print-cols{display:flex;flex-direction:column;gap:4px}
.print-cols .checks{display:flex;gap:12px;flex-wrap:wrap;font-size:13px;font-weight:600;color:var(--ink)}
.print-cols .checks label{display:inline-flex;align-items:center;gap:5px;cursor:pointer}
.print-preview-wrap{background:#E8E4DC;border-radius:10px;padding:14px;max-height:55vh;overflow:auto}
.print-preview-page{background:#fff;margin:0 auto;box-shadow:0 2px 12px rgba(0,0,0,.12);padding:var(--print-pad,14mm);width:var(--print-page-w,210mm);min-height:var(--print-page-h,120mm);box-sizing:border-box}
.print-preview-page h2{font-size:16px;margin-bottom:4px}
.print-preview-page .meta{font-size:11px;color:var(--sub);margin-bottom:10px}
.print-preview-page table{width:100%;border-collapse:collapse;font-size:11px;min-width:0;table-layout:fixed}
.print-preview-page th,.print-preview-page td{border:1px solid #bbb;padding:5px 6px;vertical-align:top;word-break:break-word}
.print-preview-page th{background:#14564A;color:#fff;text-align:left}
.print-preview-page td.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.print-preview-page td.vendor{font-weight:700;background:#F3F7F5;border:1.5px solid #14564A;vertical-align:middle}
.print-preview-page td.group{font-weight:700;background:#F3F7F5;border:1.5px solid #14564A;vertical-align:middle}
.print-preview-page tr.vendor-start td,.print-preview-page tr.group-start td{border-top:2px solid #14564A}
.print-preview-page tr.vendor-end td,.print-preview-page tr.group-end td{border-bottom:2px solid #14564A}
.print-preview-page tr.vendor-start td.vendor,.print-preview-page tr.group-start td.group{border-top:2px solid #14564A}
.print-preview-page tr.vendor-end td.vendor,.print-preview-page tr.group-end td.group{border-bottom:2px solid #14564A}
.print-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:14px}
#print-sheet{display:none}
/* purchase review */
.modal.review-modal{width:min(1100px,100%);max-height:92vh}
.review-bar{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;margin-bottom:12px}
.review-bar input[type=date],.review-bar select,.review-bar input[type=search]{padding:7px 10px;border:1px solid var(--line-d);border-radius:8px;font-family:inherit;font-size:13px}
.review-bar input[type=search]{flex:1;min-width:140px}
.review-meta{font-size:12px;color:var(--sub);margin-bottom:8px}
.review-tbl-wrap{overflow:auto;max-height:52vh;border:1px solid var(--line);border-radius:10px}
.review-tbl{width:100%;border-collapse:collapse;font-size:12px}
.review-tbl th{position:sticky;top:0;background:var(--green-d);color:#fff;padding:7px 8px;text-align:left;white-space:nowrap;z-index:2}
.review-tbl td{padding:6px 8px;border-bottom:1px solid #F0ECE2;vertical-align:middle;background:var(--surface)}
.review-tbl tr:hover td{background:#FAF8F4}
.review-tbl tr{cursor:default;user-select:none}
.review-tbl .copy-text{user-select:text;-webkit-user-select:text;cursor:text}
.review-tbl td:first-child{position:relative;z-index:1}
.review-tbl input[type=checkbox]{width:16px;height:16px;cursor:pointer;accent-color:var(--green)}
.review-tbl .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.review-tbl .verdict{font-weight:800;white-space:nowrap}
.review-tbl .verdict.ok{color:var(--green)}
.review-tbl .verdict.bad{color:var(--danger)}
.review-tbl .verdict.miss{color:#A67C00}
.review-tbl .verdict.na{color:var(--sub)}
.review-tbl .mode-tog{transform:scale(.92);transform-origin:left center}
.review-tbl input.apply-group{user-select:text;width:100%;min-width:120px;padding:5px 7px;border:1px solid var(--line-d);border-radius:6px;font-family:inherit;font-size:12px}
.review-tbl input.apply-group:focus{border-color:var(--green);outline:none}
.review-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;margin-top:12px}
.apply-confirm .preview-tbl input.apply-val{width:100%;min-width:0;max-width:100%;box-sizing:border-box;padding:6px 8px;border:1px solid var(--line-d);border-radius:6px;font-family:inherit;font-size:inherit;text-align:right;font-variant-numeric:tabular-nums;background:#FFFEF8}
.apply-confirm .preview-tbl input.apply-val:focus{border-color:var(--green);outline:none;background:#fff}
.apply-confirm .preview-tbl .apply-val-cell{display:flex;align-items:center;justify-content:flex-end;gap:4px;min-width:0}
.apply-confirm .preview-tbl .apply-val-unit{color:var(--sub);font-size:0.92em;white-space:nowrap;flex-shrink:0}
.apply-confirm .preview-tbl select[data-act="apply-mode"]{width:100%;max-width:100%;box-sizing:border-box;padding:6px 8px;border:1px solid var(--line-d);border-radius:6px;font:inherit;font-size:inherit}
.modal-bg.apply-confirm-bg{z-index:1100}
.modal.apply-confirm{width:min(1100px,96vw);max-height:90vh}
.apply-confirm .modal-bd{overflow:auto}
.apply-confirm .preview-sum{font-size:14px;color:var(--sub);margin-bottom:12px;line-height:1.55}
.apply-confirm .preview-sum b{color:var(--ink)}
.apply-confirm .preview-wrap{overflow-x:hidden;overflow-y:auto;max-height:min(65vh,640px);border:1px solid var(--line);border-radius:10px}
.apply-confirm .preview-tbl{width:100%;border-collapse:collapse;table-layout:fixed;font-size:clamp(12px,1.15vw,14px)}
.apply-confirm .preview-tbl th{position:sticky;top:0;background:var(--green-d);color:#fff;padding:8px 10px;text-align:left;white-space:nowrap;font-weight:700;font-size:0.95em}
.apply-confirm .preview-tbl td{padding:8px 10px;border-bottom:1px solid #F0ECE2;background:#fff;vertical-align:middle;word-break:keep-all;overflow-wrap:anywhere}
.apply-confirm .preview-tbl .col-tag{width:52px}
.apply-confirm .preview-tbl .col-vendor{width:14%}
.apply-confirm .preview-tbl .col-item{width:24%}
.apply-confirm .preview-tbl .col-group{width:18%}
.apply-confirm .preview-tbl .col-mode{width:96px}
.apply-confirm .preview-tbl .col-val{width:118px}
.apply-confirm .preview-tbl .col-date{width:96px}
.apply-confirm .preview-tbl td.vendor,
.apply-confirm .preview-tbl td.name,
.apply-confirm .preview-tbl td.group{white-space:normal;line-height:1.35}
.apply-confirm .preview-tbl .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.apply-confirm .preview-tbl .date{white-space:nowrap;font-variant-numeric:tabular-nums}
.apply-confirm .tag{display:inline-block;font-size:0.9em;font-weight:800;padding:2px 7px;border-radius:6px}
.apply-confirm .tag.add{background:#EAF3F1;color:var(--green)}
.apply-confirm .tag.upd{background:#F5F2EC;color:var(--sub)}
.apply-confirm .tag.manual{background:#F7E9E5;color:var(--danger);margin-top:2px}
.apply-confirm .skip-note{margin-top:12px;font-size:14px;color:var(--sub);line-height:1.5}
.apply-confirm .skip-note b{color:var(--ink)}
.modal-bg.linked-bg{z-index:1050}
.modal.linked-modal{width:min(1100px,96vw);max-height:90vh}
.linked-modal .modal-bd{overflow:auto}
.linked-modal .linked-meta{font-size:14px;color:var(--sub);margin-bottom:12px;line-height:1.45}
.linked-modal .linked-meta b{color:var(--ink)}
.linked-wrap{overflow:auto;max-height:min(65vh,640px);border:1px solid var(--line);border-radius:10px}
.linked-tbl{width:max-content;min-width:100%;border-collapse:collapse;font-size:14px;table-layout:auto}
.linked-tbl th{position:sticky;top:0;background:var(--green-d);color:#fff;padding:10px 14px;text-align:left;font-weight:700;user-select:none;white-space:nowrap;font-size:13px}
.linked-tbl th.sortable{cursor:pointer}
.linked-tbl th.sortable:hover{background:#0f453c}
.linked-tbl th .sort-ind{margin-left:4px;opacity:.75;font-size:11px}
.linked-tbl td{padding:10px 14px;border-bottom:1px solid #F0ECE2;background:#fff;vertical-align:middle}
.linked-tbl tr:last-child td{border-bottom:none}
.linked-tbl .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.linked-tbl .code{font-weight:700;color:var(--green);white-space:nowrap}
.linked-tbl .name{white-space:nowrap;max-width:none}
.linked-tbl .date{white-space:nowrap;font-variant-numeric:tabular-nums}
.linked-tbl .empty-f{padding:28px;text-align:center;color:var(--sub);white-space:normal}
.group-link-btn{flex-shrink:0;border:1px solid #C5D9D4;background:#EAF3F1;color:var(--green);border-radius:7px;font-size:11px;font-weight:800;padding:4px 7px;cursor:pointer;font-family:inherit;line-height:1.2}
.group-link-btn:hover{background:var(--green);color:#fff;border-color:var(--green)}
.group-link-btn:disabled{opacity:.45;cursor:default;background:#F5F2EC;color:var(--sub);border-color:var(--line-d)}
.group-link-btn:disabled:hover{background:#F5F2EC;color:var(--sub)}
#print-sheet{display:none}
@media print{
  body *{visibility:hidden}
  #print-sheet,#print-sheet *{visibility:visible}
  #print-sheet{display:block;position:absolute;left:0;top:0;width:100%}
  #print-sheet h2{font-size:16px;margin:0 0 4px}
  #print-sheet .meta{font-size:11px;color:#444;margin-bottom:10px}
  #print-sheet table{width:100%;border-collapse:collapse;font-size:11px}
  #print-sheet th,#print-sheet td{border:1px solid #999;padding:4px 6px;vertical-align:top}
  #print-sheet th{background:#14564A;color:#fff;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  #print-sheet td.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
  #print-sheet td.vendor{font-weight:700;background:#F3F7F5;border:1.5px solid #14564A;vertical-align:middle;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  #print-sheet td.group{font-weight:700;background:#F3F7F5;border:1.5px solid #14564A;vertical-align:middle;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  #print-sheet tr.vendor-start td,#print-sheet tr.group-start td{border-top:2px solid #14564A}
  #print-sheet tr.vendor-end td,#print-sheet tr.group-end td{border-bottom:2px solid #14564A}
  #print-sheet tr.page-break{break-before:page;page-break-before:always}
}
.print-preview-page tr.page-break td{border-top:3px dashed #14564A}
@page{size:A4 portrait;margin:14mm}
