@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap";@font-face{font-family:OCR-B;src:local("OCR-B 10 BT"),local(OCR B Std),local(OCR-B),local(OCRB)}:root{--bg:#08090d;--panel:#0f1117;--surface:#161822;--border:#232738;--border-hover:#3a3f55;--text:#e4e8f4;--text-secondary:#737a90;--text-muted:#4e5567;--accent:#4fc3f7;--accent-dark:#0288d1;--accent-glow:#4fc3f726;--green:#43e97b;--green-glow:#43e97b1a;--red:#ff5252;--red-glow:#ff52521a;--yellow:#ffd740;--yellow-glow:#ffd7401a;--purple:#c97bff;--shadow:0 4px 24px #00000080;--shadow-lg:0 8px 40px #0009;--radius:8px;--radius-sm:5px;--radius-lg:12px;--transition:.15s ease}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;flex-direction:column;height:100vh;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:13px;line-height:1.5;display:flex;overflow:hidden}#root{flex-direction:column;height:100vh;display:flex;overflow:hidden}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--border-hover)}.topbar{background:linear-gradient(180deg, var(--panel) 0%, #0f1117fa 100%);border-bottom:1px solid var(--border);z-index:100;flex-shrink:0;align-items:center;gap:8px;height:48px;padding:0 16px;display:flex}.brand{background:linear-gradient(135deg, var(--accent), #6dd5fa);-webkit-text-fill-color:transparent;letter-spacing:-.3px;-webkit-background-clip:text;background-clip:text;font-size:14px;font-weight:800}.brand-sub{color:var(--text-muted);letter-spacing:.5px;text-transform:uppercase;font-size:10px;font-weight:500}.spacer{flex:1}.pill{transition:all var(--transition);border-radius:20px;padding:3px 12px;font-size:11px;font-weight:500}.pill.info{background:var(--accent-glow);color:var(--accent);border:1px solid #4fc3f740}.pill.ok{background:var(--green-glow);color:var(--green);border:1px solid #43e97b4d}.pill.err{background:var(--red-glow);color:var(--red);border:1px solid #ff52524d}.pill.warn{background:var(--yellow-glow);color:var(--yellow);border:1px solid #ffd7404d}.main-layout{flex:1;display:flex;overflow:hidden}.panel{background:var(--panel);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;display:flex;overflow:hidden}.panel-left{width:320px}.panel-right{border-right:none;border-left:1px solid var(--border);width:280px}.panel-scroll{flex:1;padding:12px;overflow-y:auto}.panel-tabs{border-bottom:1px solid var(--border);background:#0003;flex-shrink:0;display:flex}.panel-tab{text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);cursor:pointer;transition:all var(--transition);text-align:center;background:0 0;border:none;border-bottom:2px solid #0000;flex:1;padding:8px 4px;font-family:inherit;font-size:10px;font-weight:600}.panel-tab:hover{color:var(--text-secondary)}.panel-tab.active{color:var(--accent);border-bottom-color:var(--accent);background:#4fc3f708}.sec{margin-bottom:16px}.sec-title{letter-spacing:1px;text-transform:uppercase;color:var(--accent);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;margin-bottom:8px;padding-bottom:5px;font-size:10px;font-weight:700;display:flex}.field{margin-bottom:8px}.field label{color:var(--text-secondary);margin-bottom:3px;font-size:11px;font-weight:500;display:block}input[type=number],input[type=text],select,textarea{background:var(--surface);border:1px solid var(--border);width:100%;color:var(--text);border-radius:var(--radius-sm);transition:border-color var(--transition), box-shadow var(--transition);outline:none;padding:7px 10px;font-family:Inter,sans-serif;font-size:12px}input:focus,select:focus,textarea:focus{border-color:#4fc3f780;box-shadow:0 0 0 3px #4fc3f714}textarea{resize:vertical;min-height:60px}.row2{gap:6px;display:flex}.row2>*{flex:1;min-width:0}.row3{gap:6px;display:flex}.row3>*{flex:1;min-width:0}.btn{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition);justify-content:center;align-items:center;gap:6px;width:100%;padding:7px 12px;font-family:Inter,sans-serif;font-size:12px;font-weight:500;display:inline-flex}.btn:hover:not(:disabled){border-color:var(--border-hover);background:#ffffff08}.btn:disabled{opacity:.4;cursor:not-allowed}.btn.primary{background:linear-gradient(135deg, var(--accent-dark), var(--accent));color:#fff;border-color:#0000;font-weight:600;box-shadow:0 2px 8px #0288d14d}.btn.primary:hover:not(:disabled){opacity:.9;transform:translateY(-1px)}.btn.danger{background:var(--red-glow);color:var(--red);border-color:#ff525240}.btn.sm{width:auto;padding:4px 10px;font-size:11px}.btn.xsm{width:auto;padding:2px 8px;font-size:10px}.btn.icon{width:auto;padding:5px 8px;font-size:16px}.toolbar-group{align-items:center;gap:2px;display:flex}.toolbar-sep{background:var(--border);width:1px;height:20px;margin:0 6px}.tb-btn{color:var(--text-secondary);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition);white-space:nowrap;background:0 0;border:1px solid #0000;align-items:center;gap:4px;padding:5px 10px;font-family:Inter,sans-serif;font-size:12px;display:flex}.tb-btn:hover{border-color:var(--border);color:var(--text);background:#ffffff08}.tb-btn.active{background:var(--accent-glow);color:var(--accent);border-color:#4fc3f74d}.tb-btn .icon{font-size:16px}.lbl-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);transition:border-color var(--transition);margin-bottom:8px;overflow:hidden}.lbl-card:hover{border-color:var(--border-hover)}.lbl-card-head{align-items:center;gap:8px;padding:8px 10px;display:flex}.lbl-color{border-radius:50%;flex-shrink:0;width:10px;height:10px;box-shadow:0 0 6px}.lbl-name{flex:1;font-size:12px;font-weight:600}.lbl-info{color:var(--text-secondary);font-size:10px}.lbl-card-body{border-top:1px solid var(--border);padding:8px 10px}.upload-zone{border:2px dashed var(--border);border-radius:var(--radius-sm);text-align:center;cursor:pointer;background:#ffffff03;padding:14px;transition:all .2s;display:block}.upload-zone:hover{background:#4fc3f708;border-color:#4fc3f780}.upload-zone.loaded{background:#43e97b08;border-color:#43e97b66}.upload-zone-text{color:var(--text-secondary);pointer-events:none;font-size:11px}.cell-grid{flex-direction:column;gap:2px;padding:8px;display:flex}.cell-grid-row{align-items:center;gap:2px;display:flex}.cell-grid-label{color:var(--text-muted);text-align:right;cursor:pointer;min-width:32px;transition:color var(--transition);flex-shrink:0;padding-right:4px;font-size:10px}.cell-grid-label:hover{color:var(--accent)}.cell-btn{cursor:pointer;color:#ffffffd9;height:30px;transition:all var(--transition);text-overflow:ellipsis;white-space:nowrap;background:#ffffff0d;border:1.5px solid #ffffff1a;border-radius:4px;flex:1;justify-content:center;align-items:center;padding:0 3px;font-family:Inter,sans-serif;font-size:9px;font-weight:700;display:flex;overflow:hidden}.cell-btn:hover{filter:brightness(1.2);border-color:#fff6}.cell-grid-col-hd{gap:2px;padding:2px 8px 0;display:flex}.cell-grid-col-hd-sp{flex-shrink:0;min-width:32px}.cell-grid-col-hd-item{color:var(--text-muted);text-align:center;cursor:pointer;transition:color var(--transition);flex:1;font-size:9px}.cell-grid-col-hd-item:hover{color:var(--accent)}.reg-row-wrap{border-top:1px solid var(--border);padding:6px 8px}.reg-row-item{align-items:center;gap:6px;padding:3px 0;display:flex}.reg-row-lbl{color:var(--text-secondary);min-width:50px;font-size:10px}.reg-pos-btn{background:var(--border);color:var(--text-muted);cursor:pointer;transition:all var(--transition);border:1px solid #0000;border-radius:4px;padding:3px 8px;font-family:Inter,sans-serif;font-size:10px}.reg-pos-btn.active{background:var(--accent-glow);color:var(--accent);border-color:#4fc3f766}.reg-pos-btn:hover:not(.active){border-color:var(--border-hover);color:var(--text-secondary)}.orient-row{gap:4px;display:flex}.orient-btn{background:var(--border);color:var(--text-muted);border-radius:var(--radius-sm);cursor:pointer;text-align:center;transition:all var(--transition);border:1px solid #0000;flex:1;padding:5px 3px;font-family:Inter,sans-serif;font-size:11px}.orient-btn.active{background:var(--accent-glow);color:var(--accent);border-color:#4fc3f766;font-weight:600}.ibox{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-secondary);padding:8px 10px;font-size:11px;line-height:1.8}.ibox .highlight{color:var(--text);font-weight:600}.ibox .warn{color:var(--red)}.ibox .ok{color:var(--green)}.ibox .accent{color:var(--accent)}.plan-table{border-collapse:collapse;width:100%;font-size:11px}.plan-table td{border-bottom:1px solid var(--border);color:var(--text-secondary);padding:4px 6px}.plan-table td:last-child{color:var(--text);text-align:right;font-weight:600}.plan-table tr:last-child td{border-bottom:none}.gap-table{border-collapse:collapse;width:100%;margin-top:6px;font-size:11px}.gap-table td{vertical-align:middle;padding:2px 4px}.gap-table td:first-child{color:var(--text-muted);white-space:nowrap;font-size:10px}.gap-table input{text-align:center;padding:4px 6px;font-size:11px}.gap-global{align-items:center;gap:6px;margin-bottom:6px;display:flex}.gap-global input{width:70px}.gap-global label{color:var(--text-secondary);font-size:11px}.progress-wrap{background:var(--border);border-radius:2px;height:4px;margin-top:8px;overflow:hidden}.progress-bar{background:linear-gradient(90deg, var(--accent-dark), var(--accent));border-radius:2px;width:0%;height:100%;transition:width .3s}.preview-area{flex-direction:column;flex:1;min-width:0;display:flex;overflow:hidden}.preview-toolbar{background:var(--panel);border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:6px;height:40px;padding:0 12px;display:flex}.preview-wrap{background:var(--bg);flex:1;padding:24px;overflow:auto}.sheet-wrap{width:fit-content;margin:0 auto;display:block;position:relative}.sheet-canvas{box-shadow:var(--shadow-lg);border-radius:2px;display:block}.overlay-canvas{position:absolute;top:0;left:0}.bottom-panel{background:var(--panel);border-top:1px solid var(--border);flex-direction:column;flex-shrink:0;display:flex;overflow:hidden}.bottom-panel-header{border-bottom:1px solid var(--border);cursor:ns-resize;background:#00000026;align-items:center;gap:8px;padding:6px 12px;display:flex}.bottom-panel-title{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;font-size:11px;font-weight:600}.bottom-tab{color:var(--text-muted);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;padding:4px 10px;font-family:inherit;font-size:10.5px;font-weight:600;transition:all .15s}.bottom-tab:hover{color:var(--text-secondary)}.bottom-tab.active{color:var(--accent);border-bottom-color:var(--accent)}.bottom-panel-body{flex:1;overflow:auto}.data-table-wrap{max-height:100%;overflow:auto}.data-table{border-collapse:collapse;width:100%;font-size:11px}.data-table thead{z-index:1;position:sticky;top:0}.data-table th{background:var(--surface);color:var(--accent);text-align:left;border-bottom:1px solid var(--border);text-transform:uppercase;letter-spacing:.5px;white-space:nowrap;padding:6px 10px;font-size:10px;font-weight:600}.data-table td{color:var(--text);white-space:nowrap;text-overflow:ellipsis;border-bottom:1px solid #23273880;max-width:200px;padding:5px 10px;overflow:hidden}.data-table tr{transition:background var(--transition);cursor:pointer}.data-table tr:hover{background:#4fc3f708}.data-table tr.active{background:#4fc3f714}.data-table tr.active td{color:var(--accent)}.data-table .row-num{color:var(--text-muted);text-align:right;min-width:32px;font-size:10px}.prop-group{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:12px;padding:10px}.prop-group-title{color:var(--accent);text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px;font-size:10px;font-weight:700}.obj-list-item{border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition);align-items:center;gap:6px;padding:5px 8px;font-size:12px;display:flex}.obj-list-item:hover{background:#ffffff08}.obj-list-item.selected{background:var(--accent-glow);border-left:2px solid var(--accent)}.obj-list-item .obj-icon{opacity:.7;font-size:14px}.obj-list-item .obj-name{flex:1}.obj-list-item .obj-actions{opacity:0;transition:opacity var(--transition);gap:2px;display:flex}.obj-list-item:hover .obj-actions{opacity:1}.snackbar{border-radius:var(--radius);z-index:10000;box-shadow:var(--shadow-lg);padding:10px 20px;font-size:12px;font-weight:500;animation:.3s slideUp;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.snackbar.info{background:var(--surface);border:1px solid var(--border);color:var(--text)}.snackbar.success{color:var(--green);background:#43e97b26;border:1px solid #43e97b4d}.snackbar.error{color:var(--red);background:#ff525226;border:1px solid #ff52524d}.snackbar.warning{color:var(--yellow);background:#ffd74026;border:1px solid #ffd7404d}@keyframes slideUp{0%{opacity:0;transform:translate(-50%)translateY(20px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.empty-state{text-align:center;color:var(--text-muted);padding:24px 16px}.empty-state .icon{opacity:.5;margin-bottom:8px;font-size:32px}.empty-state .title{color:var(--text-secondary);margin-bottom:4px;font-size:13px;font-weight:600}.empty-state .desc{font-size:11px}.checkbox-wrap{cursor:pointer;color:var(--text-secondary);align-items:center;gap:6px;font-size:12px;display:flex}.checkbox-wrap input[type=checkbox]{width:14px;height:14px;accent-color:var(--accent)}[title]{position:relative}select option{background:var(--panel);color:var(--text)}.dialog-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:20000;background:#0009;justify-content:center;align-items:center;animation:.15s fadeIn;display:flex;position:fixed;inset:0}.dialog{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);width:460px;max-width:90vw;max-height:80vh;box-shadow:var(--shadow-lg);flex-direction:column;animation:.2s dialogSlide;display:flex}.dialog-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.dialog-header h3{color:var(--text);margin:0;font-size:14px;font-weight:700}.dialog-close{color:var(--text-muted);cursor:pointer;transition:all var(--transition);background:0 0;border:none;border-radius:4px;padding:4px 8px;font-size:18px}.dialog-close:hover{color:var(--text);background:#ffffff0d}.dialog-body{flex:1;padding:16px 20px;overflow-y:auto}.dialog-footer{border-top:1px solid var(--border);justify-content:flex-end;gap:8px;padding:12px 20px;display:flex}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes dialogSlide{0%{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}input[type=radio]{width:14px;height:14px;accent-color:var(--accent);cursor:pointer}.ruler-corner{z-index:5;color:#4a4e60;background:#12141c;border-bottom:1px solid #2a2e40;border-right:1px solid #2a2e40;justify-content:center;align-items:center;width:22px;height:22px;font-size:7px;font-weight:700;display:flex;position:absolute;top:0;left:0}.ruler-h-wrap{z-index:4;height:22px;position:absolute;top:0;left:22px;right:0;overflow:hidden}.ruler-h{display:block}.ruler-v-wrap{z-index:4;width:22px;position:absolute;top:22px;bottom:0;left:0;overflow:hidden}.ruler-v{display:block}.shortcut-hint{color:var(--text-muted);letter-spacing:.3px;background:#0000004d;border-radius:3px;padding:2px 6px;font-family:Inter,monospace;font-size:9px}.flow-viz{border:1px solid var(--border);border-radius:var(--radius-sm);background:#00000040;margin-top:8px;padding:10px}.flow-grid{gap:2px;margin-bottom:6px;display:inline-grid}.flow-cell{width:26px;height:20px;color:var(--text-muted);text-align:center;background:#1a1a1a;border:1px solid #444;border-radius:3px;font:700 8px/20px Inter,monospace;transition:all .15s}.flow-cell.start{border-color:var(--accent);color:var(--accent);background:#4fc3f726}.flow-cell.end{border-color:var(--green);color:var(--green);background:#43e97b1a}.flow-desc{color:var(--text-muted);margin-top:2px;font-size:9.5px}.radio-label{cursor:pointer;color:var(--text-secondary);align-items:center;gap:4px;font-size:11px;display:flex}.radio-label input[type=radio]{accent-color:var(--accent);cursor:pointer;margin:0}.info-box{border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-muted);background:#00000040;padding:6px 8px;font-size:10.5px;line-height:1.7}.info-box.success{color:var(--green);background:#43e97b0d;border-color:#43e97b4d}.btn.primary{background:var(--accent);color:#fff;border-radius:var(--radius-sm);cursor:pointer;border:none;font-size:11px;font-weight:600;transition:background .15s}.btn.primary:hover{background:var(--accent-dark)}:root{--surface2:#1a1d2a}.barcode-gs1-badge{color:#fff;letter-spacing:.8px;text-transform:uppercase;background:linear-gradient(135deg,#00b894,#00cec9);border-radius:3px;padding:1px 6px;font-size:8px;font-weight:700;box-shadow:0 1px 4px #00cec94d}.barcode-type-info{border-radius:var(--radius-sm);border:1px solid var(--border);background:#0003;align-items:center;gap:6px;margin:4px 0 8px;padding:5px 8px;display:flex}.barcode-type-badge{letter-spacing:.5px;border-radius:3px;padding:1px 6px;font-size:9px;font-weight:700}.barcode-type-badge.badge-1d{color:var(--accent);background:#4fc3f726;border:1px solid #4fc3f74d}.barcode-type-badge.badge-2d{color:var(--purple);background:#c97bff26;border:1px solid #c97bff4d}.barcode-type-group{color:var(--text-muted);flex:1;font-size:10px}.barcode-type-gs1{color:#00cec9;letter-spacing:.5px;font-size:8px;font-weight:600}.barcode-validation-error{color:var(--red);background:var(--red-glow);border-radius:var(--radius-sm);border:1px solid #ff525240;margin:4px 0;padding:4px 8px;font-size:10px;animation:.15s fadeIn}.barcode-validation-ok{color:var(--green);background:var(--green-glow);border-radius:var(--radius-sm);border:1px solid #43e97b33;margin:4px 0;padding:4px 8px;font-size:10px}select optgroup{color:var(--accent);background:var(--panel);padding:4px 0;font-size:11px;font-weight:700}select optgroup option{color:var(--text);padding-left:12px;font-weight:400}
