.batches-editor{--bg-app:#f4f4f4;--bg-panel:#ffffff;--bg-subtle:#f8f8f8;--bg-stripe:#fafafa;--bg-hover:#f0f6fb;--bg-drawer:#f5f7f9;--border:#d6d6d6;--border-strong:#b4b4b4;--border-soft:#e6e6e6;--border-focus:#1979c3;--text:#303030;--text-muted:#575757;--text-dim:#858585;--text-placeholder:#a1a1a1;--accent:#1979c3;--accent-hover:#136ab1;--accent-soft:#e7f1f9;--success:#007e3a;--success-soft:#e5f2e6;--danger:#e22626;--danger-soft:#fae5e5;--warn-soft:#fdf0d5;--warn-text:#6f4f1f;--font-sans:"Helvetica Neue",Helvetica,Arial,sans-serif;--font-mono:"SFMono-Regular",Menlo,Monaco,Consolas,monospace;--t-xs:11px;--t-sm:12px;--t-md:13px;--t-lg:14px;--t-xl:16px;--t-2xl:20px;--t-3xl:24px;--r-sm:2px;--r-md:3px;--r-lg:4px;--shadow-modal:0 8px 32px rgba(0,0,0,0.18),0 2px 8px rgba(0,0,0,0.1);--shadow-card:0 1px 2px rgba(0,0,0,0.04);font-family:var(--font-sans);font-size:var(--t-md);color:var(--text);background:var(--bg-app);line-height:1.4;-webkit-font-smoothing:antialiased;position:relative}.batches-editor,.batches-editor *{box-sizing:border-box}.batches-editor .btn{font-family:inherit;font-size:var(--t-md);height:32px;padding:0 14px;border-radius:var(--r-md);border:1px solid var(--border-strong);background:var(--bg-panel);color:var(--text);cursor:pointer;display:inline-flex;align-items:center;gap:6px;white-space:nowrap;transition:background 80ms}.batches-editor .btn:hover{background:var(--bg-subtle)}.batches-editor .btn.btn--primary{background:var(--accent);border-color:var(--accent);color:#fff}.batches-editor .btn.btn--primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.batches-editor .btn.btn--ghost{background:transparent;border-color:transparent;color:var(--accent);padding:0 8px}.batches-editor .btn.btn--ghost:hover{background:var(--accent-soft)}.batches-editor .btn.btn--sm{height:26px;font-size:var(--t-sm);padding:0 10px}.batches-editor .btn.btn--icon{height:28px;width:28px;padding:0;justify-content:center;border:1px solid transparent;background:transparent;color:var(--text-muted);border-radius:var(--r-md)}.batches-editor .btn.btn--icon:hover{background:var(--bg-subtle);color:var(--text);border-color:var(--border-soft)}.batches-editor .btn.btn--icon.is-danger:hover{background:var(--danger-soft);color:var(--danger);border-color:#f3c4c4}.batches-editor .btn.btn--icon.is-active{background:var(--accent-soft);color:var(--accent);border-color:#c3deef}.batches-editor .field-label{font-size:var(--t-sm);color:var(--text-muted);font-weight:500;margin-bottom:4px;display:block}.batches-editor .field-label .req{color:var(--danger);margin-left:2px}.batches-editor .qa-field-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px}.batches-editor .qa-field-head .field-label{margin-bottom:0}.batches-editor input.txt,.batches-editor input.dt,.batches-editor select.txt{font-family:inherit;font-size:var(--t-md);color:var(--text);height:30px;padding:0 8px;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--bg-panel);width:100%}.batches-editor input.txt:focus,.batches-editor input.dt:focus,.batches-editor select.txt:focus{outline:none;border-color:var(--border-focus);box-shadow:0 0 0 2px rgba(25,121,195,0.18)}.batches-editor input.txt::placeholder{color:var(--text-placeholder)}.batches-editor input.txt.is-invalid{border-color:var(--danger);background:#fff8f8}.batches-editor input.txt.is-mono{font-family:var(--font-mono);font-size:var(--t-sm)}.batches-editor .help-text{font-size:var(--t-xs);color:var(--text-dim);margin-top:4px}.batches-editor .error-text{font-size:var(--t-xs);color:var(--danger);margin-top:4px}.batches-editor .validation-summary{border:1px solid #f3c4c4;background:var(--danger-soft);color:var(--danger);border-radius:var(--r-md);padding:8px 10px;margin:0 0 12px;font-size:var(--t-sm);font-weight:600}.batches-editor .toggle{display:inline-flex;align-items:center;gap:8px;cursor:pointer;user-select:none;position:relative}.batches-editor .toggle input{position:absolute;inset:0;opacity:0;cursor:pointer;margin:0;z-index:1}.batches-editor .toggle .toggle-track{position:relative;width:32px;height:18px;background:#c9c9c9;border-radius:999px;transition:background 120ms;flex-shrink:0}.batches-editor .toggle .toggle-track::after{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;background:#fff;border-radius:50%;box-shadow:0 1px 2px rgba(0,0,0,0.25);transition:transform 120ms}.batches-editor .toggle input:checked+.toggle-track,.batches-editor .toggle.is-on .toggle-track{background:var(--accent)}.batches-editor .toggle input:checked+.toggle-track::after,.batches-editor .toggle.is-on .toggle-track::after{transform:translateX(14px)}.batches-editor .toggle .toggle-label{font-size:var(--t-sm);color:var(--text-muted)}.batches-editor .chip{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 10px;border-radius:13px;background:var(--bg-subtle);border:1px solid var(--border-soft);font-size:var(--t-sm);color:var(--text-muted);cursor:pointer;white-space:nowrap;font-family:inherit}.batches-editor .chip:hover{background:#eef4f9;border-color:#c3deef;color:var(--text)}.batches-editor .chip.is-open{background:var(--accent-soft);border-color:#c3deef;color:var(--accent)}.batches-editor .chip .count{font-variant-numeric:tabular-nums;font-weight:600;color:var(--text)}.batches-editor .chip.is-open .count{color:var(--accent)}.batches-editor .chip .caret{transition:transform 120ms;opacity:.6}.batches-editor .chip.is-open .caret{transform:rotate(180deg)}.batches-editor .panel{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--r-md);margin:16px 24px}.batches-editor .panel-head{padding:14px 16px;border-bottom:1px solid var(--border-soft);display:flex;align-items:center;justify-content:space-between}.batches-editor .panel-head h3{margin:0;font-size:var(--t-xl);font-weight:600}.batches-editor .panel-head .sub{font-size:var(--t-sm);color:var(--text-muted);margin-top:2px}.batches-editor .panel-body{padding:0}.batches-editor .drag-handle{width:18px;cursor:grab;color:var(--text-dim);display:inline-flex;align-items:center;justify-content:center;user-select:none}.batches-editor .drag-handle:hover{color:var(--text-muted)}.batches-editor .drag-handle:active{cursor:grabbing}.batches-editor .empty{padding:40px 24px;text-align:center;color:var(--text-muted)}.batches-editor .empty .empty-title{font-size:var(--t-lg);font-weight:600;color:var(--text);margin-bottom:4px}.batches-editor .empty .empty-sub{font-size:var(--t-md);color:var(--text-muted);margin-bottom:16px}.batches-editor .row-add{border-top:1px dashed var(--border);padding:12px 16px;display:flex;align-items:center;gap:12px;background:var(--bg-stripe)}.batches-editor .modal-scrim{position:fixed;inset:0;background:rgba(20,24,30,0.42);display:flex;align-items:flex-start;justify-content:center;padding-top:80px;z-index:900;animation:be-fade-in 120ms ease}@keyframes be-fade-in{from{opacity:0}to{opacity:1}}.batches-editor .modal{background:var(--bg-panel);border-radius:6px;width:760px;max-width:calc(52%);box-shadow:var(--shadow-modal);overflow:hidden}.batches-editor .modal-head{padding:16px 20px;border-bottom:1px solid var(--border-soft);display:flex;align-items:center;justify-content:space-between}.batches-editor .modal-head h3{margin:0;font-size:var(--t-xl);font-weight:600}.batches-editor .modal-head .sub{font-size:var(--t-sm);color:var(--text-muted);margin-top:2px}.batches-editor .modal-body{padding:16px 20px;max-height:540px;overflow:auto}.batches-editor .modal-foot{padding:12px 20px;border-top:1px solid var(--border-soft);background:var(--bg-subtle);display:flex;align-items:center;justify-content:space-between;gap:12px}.batches-editor .doc-matrix{display:grid;grid-template-columns:1fr auto 2fr;align-items:center;gap:0}.batches-editor .doc-matrix .dm-head{font-size:var(--t-xs);font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-dim);padding:8px 12px;border-bottom:1px solid var(--border-soft);background:var(--bg-stripe)}.batches-editor .doc-matrix .dm-cell{padding:10px 12px;border-bottom:1px solid var(--border-soft);display:flex;align-items:center;gap:8px;border-left:4px solid var(--ok, #4caf50);transition:background-color 120ms ease,border-left-color 120ms ease}.batches-editor .doc-matrix .dm-cell:last-child,.batches-editor .doc-matrix .dm-cell.is-last{border-bottom:0}.batches-editor .doc-matrix .doc-name{font-weight:500;font-size:var(--t-md)}.batches-editor .doc-matrix .doc-desc{font-size:var(--t-xs);color:var(--text-dim);margin-top:2px}.batches-editor .doc-matrix .dm-disabled{background:var(--bg-subtle, #f5f5f5);border-left-color:var(--border-soft, #d6d6d6)}.batches-editor .doc-matrix .dm-disabled .doc-name,.batches-editor .doc-matrix .dm-disabled .doc-desc{opacity:.5}.batches-editor .doc-matrix .dm-disabled input.txt{opacity:.55}.batches-editor .tiles-wrap{padding:16px;background:var(--bg-app)}.batches-editor .tiles-pager{display:flex;align-items:center;gap:4px;padding:0 0 12px;border-bottom:1px solid var(--border-soft);margin-bottom:14px;overflow-x:auto}.batches-editor .tiles-pager-label{font-size:var(--t-xs);color:var(--text-dim);text-transform:uppercase;letter-spacing:.06em;font-weight:600;margin-right:8px;white-space:nowrap}.batches-editor .tiles-pager .pg{height:28px;padding:0 12px;border-radius:14px;border:1px solid var(--border-soft);background:var(--bg-panel);font-family:inherit;font-size:var(--t-sm);color:var(--text-muted);cursor:pointer;display:inline-flex;align-items:center;gap:6px;font-variant-numeric:tabular-nums;white-space:nowrap}.batches-editor .tiles-pager .pg:hover{background:var(--bg-subtle);color:var(--text)}.batches-editor .tiles-pager .pg.is-active{background:var(--accent-soft);border-color:#c3deef;color:var(--accent);font-weight:600}.batches-editor .tiles-pager .pg .count{font-size:10px;padding:1px 6px;border-radius:7px;background:rgba(0,0,0,0.06);color:var(--text-muted);font-weight:600}.batches-editor .tiles-pager .pg.is-active .count{background:rgba(25,121,195,0.18);color:var(--accent)}.batches-editor .tiles-pager .pg.is-warning::after{content:"";width:6px;height:6px;border-radius:50%;background:var(--danger);margin-left:-2px}.batches-editor .tiles-grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(200px, 1fr));gap:10px}.batches-editor .tile{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--r-md);padding:12px 14px 10px;cursor:pointer;position:relative;display:flex;flex-direction:column;gap:8px;transition:border-color 80ms,box-shadow 80ms,transform 80ms;min-height:132px}.batches-editor .tile:hover{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent),0 2px 6px rgba(25,121,195,0.15)}.batches-editor .tile:active{transform:translateY(1px)}.batches-editor .tile.is-invalid{border-color:#f0bcbc;background:#fffafa}.batches-editor .tile.is-invalid:hover{border-color:var(--danger);box-shadow:0 0 0 1px var(--danger),0 2px 6px rgba(226,38,38,0.15)}.batches-editor .tile.is-add{border-style:dashed;border-color:var(--border-strong);background:transparent;align-items:center;justify-content:center;color:var(--text-muted);font-size:var(--t-md);font-weight:500}.batches-editor .tile.is-add:hover{color:var(--accent);border-color:var(--accent);background:rgba(25,121,195,0.04);box-shadow:none}.batches-editor .tile-head{display:flex;align-items:flex-start;justify-content:space-between;gap:6px}.batches-editor .tile-num{font-size:17px;font-weight:600;letter-spacing:-.005em;color:var(--text);line-height:1.15;flex:1;min-width:0;word-break:break-word}.batches-editor .tile-num.is-empty{color:var(--text-placeholder);font-weight:500;font-style:italic}.batches-editor .tile-pos{font-size:10px;color:var(--text-dim);font-variant-numeric:tabular-nums;background:var(--bg-stripe);padding:2px 6px;border-radius:3px;font-weight:600;flex-shrink:0}.batches-editor .tile-meta{font-size:var(--t-xs);color:var(--text-dim);display:flex;flex-direction:column;gap:3px}.batches-editor .tile-meta .row{display:flex;align-items:center;gap:5px}.batches-editor .tile-meta .row .lbl{text-transform:uppercase;letter-spacing:.04em;font-weight:600;color:var(--text-dim);flex-shrink:0;width:38px}.batches-editor .tile-meta .row .val{color:var(--text);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.batches-editor .tile-meta .row .val.dim{color:var(--text-dim);font-weight:400;font-style:italic}.batches-editor .tile-foot{display:flex;align-items:center;justify-content:space-between;gap:6px;padding-top:8px;border-top:1px solid var(--border-soft);margin-top:auto}.batches-editor .tile-docs-mini{display:inline-flex;align-items:center;gap:5px;font-size:var(--t-xs);color:var(--text-muted)}.batches-editor .tile-docs-mini .dots{display:inline-flex;gap:2px}.batches-editor .tile-docs-mini .dot{width:6px;height:6px;border-radius:50%;background:var(--accent)}.batches-editor .tile-docs-mini .dot.off{background:#e0e0e0}.batches-editor .tile-docs-mini .dot.override{background:#d39c2a}.batches-editor .tile-actions{display:flex;gap:2px;opacity:0;transition:opacity 80ms}.batches-editor .tile:hover .tile-actions{opacity:1}.batches-editor .tile-icon-btn{width:22px;height:22px;border:none;background:transparent;border-radius:3px;cursor:pointer;color:var(--text-dim);display:inline-flex;align-items:center;justify-content:center}.batches-editor .tile-icon-btn:hover{background:var(--bg-subtle);color:var(--text)}.batches-editor .tile-icon-btn.is-danger:hover{background:var(--danger-soft);color:var(--danger)}.batches-editor .tile-warning-corner{position:absolute;top:8px;right:8px;width:14px;height:14px;border-radius:50%;background:var(--danger);color:#fff;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;line-height:1}.batches-editor .tile-modal{background:var(--bg-panel);border-radius:6px;width:920px;max-width:calc(52%);box-shadow:var(--shadow-modal);overflow:hidden;display:flex;flex-direction:column;max-height:calc(20vh);min-height:480px;animation:be-modal-drop 140ms ease}@keyframes be-modal-drop{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.batches-editor .tile-modal-head{padding:14px 20px;border-bottom:1px solid var(--border-soft);display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--bg-panel);flex-shrink:0}.batches-editor .tile-modal-head .crumb{font-size:var(--t-xs);color:var(--text-dim);text-transform:uppercase;letter-spacing:.06em;font-weight:600}.batches-editor .tile-modal-head h3{margin:2px 0 0;font-size:var(--t-2xl);font-weight:600}.batches-editor .tile-modal-head .nav{display:flex;gap:4px}.batches-editor .tile-modal-head .nav .btn--icon{border:1px solid var(--border-soft)}.batches-editor .tile-modal-body{overflow-y:auto;padding:0;flex:1}.batches-editor .tile-modal-section{padding:16px 20px;border-bottom:1px solid var(--border-soft)}.batches-editor .tile-modal-section:last-child{border-bottom:0}.batches-editor .tile-modal-section h4{margin:0 0 12px;font-size:var(--t-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--text-dim);font-weight:700}.batches-editor .tile-modal-section h4 .sub-h{text-transform:none;letter-spacing:0;font-weight:400;color:var(--text-muted);margin-left:8px}.batches-editor .tile-modal-grid{display:grid;grid-template-columns:repeat(auto-fit, minmax(180px, 1fr));gap:12px 16px}.batches-editor .tile-modal-foot{padding:12px 20px;border-top:1px solid var(--border-soft);background:var(--bg-subtle);display:flex;align-items:center;justify-content:space-between;gap:12px;flex-shrink:0}.batches-editor .tile-modal-foot .left{display:flex;gap:8px;align-items:center;font-size:var(--t-sm);color:var(--text-muted)}.batches-editor.has-modal{overflow:hidden}