:root{--bg-main: #ffffff;--text-main: #172130;--text-muted: #3d4d66;--surface-main: rgba(255, 255, 255, .86);--surface-soft: #f6f9ff;--surface-soft-2: #f8fbff;--border-main: #bed0ea;--border-soft: #c5d4eb;--accent: #2f6ee5;--accent-border: #4b7fd1;--btn-bg: #ffffff;--btn-bg-grad-start: #ffffff;--btn-bg-grad-end: #edf4ff;--btn-text: #223650;--input-bg: #ffffff;--canvas-bg: #fdfefe;--grid-line: rgba(210, 223, 242, .35);--label-paper: #ffffff;--thumb-image-filter: none;--warn-bg: #fff8e9;--warn-border: #e6c58b;--warn-text: #5f4518;--diag-bg: #f4f8ff;--diag-border: #b4c6e6;--diag-text: #243654;--zpl-token-marker: #2563eb;--zpl-token-command: #1d4ed8;--zpl-token-block: #7c3aed;--zpl-token-field: #0f766e;--zpl-token-number: #b45309;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;color:var(--text-main);background:var(--bg-main);color-scheme:light}:root[data-theme=dark]{--bg-main: radial-gradient(circle at 20% 10%, #2a2a2a, #1e1e1e);--text-main: #d4d4d4;--text-muted: #9da5b4;--surface-main: rgba(37, 37, 38, .94);--surface-soft: #2d2d30;--surface-soft-2: #252526;--border-main: #3f3f46;--border-soft: #4c4c54;--accent: #0e639c;--accent-border: #1177bb;--btn-bg: #3c3c3c;--btn-bg-grad-start: #3f3f46;--btn-bg-grad-end: #34343a;--btn-text: #f3f3f3;--input-bg: #3c3c3c;--canvas-bg: #252526;--grid-line: rgba(130, 130, 140, .2);--label-paper: #e3e6eb;--thumb-image-filter: brightness(.86) saturate(.9);--warn-bg: #3a2f1f;--warn-border: #8c6f3c;--warn-text: #f1d9a3;--diag-bg: #2a313f;--diag-border: #4b5f7d;--diag-text: #c6d5ef;--zpl-token-marker: #4da3ff;--zpl-token-command: #2f81f7;--zpl-token-block: #c586c0;--zpl-token-field: #4ec9b0;--zpl-token-number: #d19a66;color-scheme:dark}:root[data-theme=dark-plus]{--bg-main: radial-gradient(circle at 20% 10%, #23283a, #151a26);--text-main: #dbe7ff;--text-muted: #98a8c7;--surface-main: rgba(27, 34, 51, .92);--surface-soft: #253148;--surface-soft-2: #212b40;--border-main: #3f5275;--border-soft: #4a5f84;--accent: #78a6ff;--accent-border: #8cb4ff;--btn-bg: #2b3851;--btn-bg-grad-start: #2e3d58;--btn-bg-grad-end: #253148;--btn-text: #e4edff;--input-bg: #1a2438;--canvas-bg: #1b2233;--grid-line: rgba(145, 171, 219, .2);--label-paper: #d9dde3;--thumb-image-filter: brightness(.84) saturate(.9);--warn-bg: #3a2e1e;--warn-border: #8e6f3a;--warn-text: #f3d9a0;--diag-bg: #1f2f48;--diag-border: #46618a;--diag-text: #c8dcff;--zpl-token-marker: #5fb0ff;--zpl-token-command: #4ea1ff;--zpl-token-block: #d291ff;--zpl-token-field: #56d4c4;--zpl-token-number: #e0b66f;color-scheme:dark}:root[data-theme=abyss]{--bg-main: radial-gradient(circle at 15% 10%, #0f2740, #071522);--text-main: #d8ecff;--text-muted: #8fb3d5;--surface-main: rgba(14, 35, 56, .92);--surface-soft: #163a5d;--surface-soft-2: #133452;--border-main: #2d5f88;--border-soft: #3d7096;--accent: #49b2ff;--accent-border: #6ac0ff;--btn-bg: #1a456b;--btn-bg-grad-start: #1e4f78;--btn-bg-grad-end: #173f62;--btn-text: #ebf7ff;--input-bg: #0f2e49;--canvas-bg: #0f2c43;--grid-line: rgba(112, 183, 233, .23);--label-paper: #d3d8df;--thumb-image-filter: brightness(.8) saturate(.88);--warn-bg: #41341f;--warn-border: #95743b;--warn-text: #ffe2a9;--diag-bg: #14334f;--diag-border: #3a6a8c;--diag-text: #d5ebff;--zpl-token-marker: #78c4ff;--zpl-token-command: #63b8ff;--zpl-token-block: #c6a3ff;--zpl-token-field: #78e0cf;--zpl-token-number: #f0c57a;color-scheme:dark}*{box-sizing:border-box}body{margin:0;min-height:100vh;color:var(--text-main);background:var(--bg-main)}#root{min-height:100vh}.app-shell{max-width:1760px;margin:0 auto;padding:16px}.app-header{margin-bottom:16px}.app-header-main{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap}.app-brand{min-width:280px}.app-header h1{margin:0;font-size:30px}.app-header p{margin:8px 0 0;color:var(--text-muted)}.app-nav{display:flex;align-items:center;justify-content:flex-end;gap:8px;margin-left:auto;flex-wrap:wrap}.app-nav-btn{border:1px solid var(--border-main);border-radius:6px;background:linear-gradient(180deg,var(--btn-bg-grad-start) 0%,var(--btn-bg-grad-end) 100%);color:var(--btn-text);font-size:13px;font-weight:700;letter-spacing:.02em;padding:8px 12px;cursor:pointer;transition:border-color .14s ease,box-shadow .16s ease,transform .14s ease}.app-nav-btn:hover{border-color:var(--accent-border);box-shadow:0 4px 12px #21539d2e;transform:translateY(-1px)}.app-nav-btn.is-active{border-color:var(--accent);background:linear-gradient(180deg,var(--surface-soft-2) 0%,var(--surface-soft) 100%);color:var(--btn-text);box-shadow:0 0 0 2px #2f6ee529}.app-theme-picker{display:inline-flex;align-items:center;gap:8px;margin-left:8px;padding-left:10px;border-left:1px solid var(--border-main)}.app-theme-picker label{font-size:12px;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.app-theme-picker select{border:1px solid var(--border-main);border-radius:8px;background:var(--input-bg);color:var(--text-main);font-size:13px;font-weight:600;padding:6px 10px}.app-grid{display:grid;grid-template-columns:repeat(2,minmax(480px,680px));gap:16px;justify-content:center;align-items:start}.app-footer{margin-top:18px;padding-top:8px;border-top:1px solid var(--border-main);font-size:12px;color:var(--text-muted);text-align:center}.app-footer-disclaimer{margin:0 0 4px}.app-footer-author{margin:0}.left-column{display:flex;flex-direction:column;gap:12px;height:100%}.panel{background:var(--surface-main);border:1px solid var(--border-main);border-radius:12px;padding:14px;min-height:540px;display:flex;flex-direction:column}.preview-panel{width:100%;min-width:0;max-width:none;justify-self:stretch}.panel-header{margin-bottom:10px}.panel-header h2{margin:0;font-size:19px}.preview-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.preview-mode{margin:0;color:var(--text-muted);font-size:14px}.editor-panel-header{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.editor-actions{display:flex;align-items:center;gap:8px}.editor-action-btn{border:1px solid var(--border-main);border-radius:8px;background:var(--btn-bg);color:var(--btn-text);font-size:12px;font-weight:700;letter-spacing:.02em;padding:6px 10px;cursor:pointer;transition:border-color .14s ease,box-shadow .16s ease,transform .14s ease}.editor-action-btn:hover{border-color:var(--accent-border);box-shadow:0 4px 12px #21539d2e;transform:translateY(-1px)}.editor-action-btn:active{transform:translateY(0)}.editor-action-btn.is-active{border-color:var(--accent-border);background:var(--surface-soft);color:var(--text-main)}.zip-upload{background:#ffffffdb;border:1px solid #bed0ea;border-radius:12px;padding:12px}.zip-label{display:block;font-weight:600;margin-bottom:8px}.zip-upload input[type=file]{width:100%}.zip-hidden-input{display:none}.zip-dropzone{border:1px dashed #97afcf;border-radius:10px;background:var(--surface-soft-2);padding:14px;text-align:center;cursor:pointer;transition:border-color .12s ease,background .12s ease,transform .12s ease}.zip-dropzone.is-active{border-color:var(--accent);background:var(--surface-soft);transform:translateY(-1px)}.zip-dropzone.is-busy{opacity:.7;cursor:wait}.zip-drop-title{margin:0;font-size:14px;font-weight:700;color:var(--text-main)}.zip-drop-subtitle{margin:5px 0 10px;font-size:12px;color:var(--text-muted)}.zip-browse{border:1px solid var(--border-main);border-radius:8px;background:var(--btn-bg);color:var(--btn-text);font-weight:600;font-size:13px;padding:7px 12px;cursor:pointer;transition:border-color .14s ease,box-shadow .16s ease,transform .14s ease}.zip-browse:hover{border-color:var(--accent-border);box-shadow:0 4px 12px #21539d2e;transform:translateY(-1px)}.zip-browse:active{transform:translateY(0)}.zip-summary{margin-top:10px;border:1px solid var(--border-main);border-radius:8px;background:var(--surface-soft);color:var(--text-main);padding:8px 10px}.zip-summary h3{margin:0 0 6px;font-size:13px}.zip-summary ul{margin:0;padding-left:18px}.zip-summary li{font-size:12px;margin:2px 0}.zip-status{min-height:20px;margin-bottom:0}.muted{margin:6px 0 0;color:var(--text-muted);font-size:14px}button,select,input,textarea{color:var(--text-main)}select,input,textarea{background:var(--input-bg);border-color:var(--border-main)}select,option{background:var(--input-bg);color:var(--text-main)}.editor-highlight,.editor-input,.codec-column textarea,.builder-zpl textarea,.preview-diagnostics{scrollbar-width:thin;scrollbar-color:var(--border-main) var(--surface-soft)}.editor-highlight::-webkit-scrollbar,.editor-input::-webkit-scrollbar,.codec-column textarea::-webkit-scrollbar,.builder-zpl textarea::-webkit-scrollbar,.preview-diagnostics::-webkit-scrollbar{width:10px;height:10px}.editor-highlight::-webkit-scrollbar-track,.editor-input::-webkit-scrollbar-track,.codec-column textarea::-webkit-scrollbar-track,.builder-zpl textarea::-webkit-scrollbar-track,.preview-diagnostics::-webkit-scrollbar-track{background:var(--surface-soft);border-radius:10px}.editor-highlight::-webkit-scrollbar-thumb,.editor-input::-webkit-scrollbar-thumb,.codec-column textarea::-webkit-scrollbar-thumb,.builder-zpl textarea::-webkit-scrollbar-thumb,.preview-diagnostics::-webkit-scrollbar-thumb{background:var(--border-main);border-radius:10px;border:2px solid var(--surface-soft)}.editor-highlight::-webkit-scrollbar-thumb:hover,.editor-input::-webkit-scrollbar-thumb:hover,.codec-column textarea::-webkit-scrollbar-thumb:hover,.builder-zpl textarea::-webkit-scrollbar-thumb:hover,.preview-diagnostics::-webkit-scrollbar-thumb:hover{background:var(--accent-border)}.editor-shell{position:relative;width:100%;min-height:460px;border:1px solid var(--border-main);border-radius:8px;background:var(--canvas-bg);overflow:hidden}.editor-highlight,.editor-input{margin:0;width:100%;min-height:460px;padding:12px;border:0;font-family:Consolas,Courier New,monospace;font-size:13px;line-height:1.4;white-space:pre;overflow:auto}.editor-highlight{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;color:#4b5565;background:transparent}.editor-input{position:relative;resize:vertical;color:transparent;caret-color:#0f172a;background:transparent}.editor-input::selection{background:#4f74b640;color:transparent}.editor-highlight.is-wrapped,.editor-input.is-wrapped{white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word}.editor-input:focus{outline:none}.editor-shell:focus-within{border-color:#7ea2d8;box-shadow:0 0 0 3px #3875d624}.zpl-token-marker{color:var(--zpl-token-marker);font-weight:700}.zpl-token-command{color:var(--zpl-token-command);font-weight:600}.zpl-token-block{color:var(--zpl-token-block);font-weight:700}.zpl-token-field{color:var(--zpl-token-field);font-weight:700}.zpl-token-number{color:var(--zpl-token-number)}.label-tiles-panel{min-height:0;flex:1 1 auto;padding:12px}.label-tiles-toggle{display:inline-flex;align-items:center;gap:6px;margin-top:4px;font-size:12px;font-weight:700;color:var(--text-muted)}.label-tiles-toggle input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent)}.zpl-examples-panel{min-height:0;padding:12px}.zpl-examples-header{display:flex;align-items:center;justify-content:space-between;gap:10px}.zpl-examples-header p{margin:0;font-size:12px;font-weight:700;color:var(--text-muted)}.zpl-examples-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px}.zpl-examples-label{display:block;font-size:12px;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px}.zpl-examples-select{width:100%;border:1px solid var(--border-main);border-radius:8px;background:var(--input-bg);color:var(--text-main);font-size:13px;font-weight:600;padding:8px 10px;margin-bottom:10px}.zpl-examples-card{border:1px solid var(--border-main);border-radius:8px;background:var(--surface-soft);padding:10px}.zpl-examples-command{margin:0 0 6px;font-size:12px;color:var(--text-main)}.zpl-examples-description{margin:0 0 8px;font-size:12px;color:var(--text-muted)}.zpl-examples-zpl{margin:0;max-height:220px;overflow:auto;border:1px solid var(--border-main);border-radius:8px;background:var(--canvas-bg);padding:10px;font-family:Consolas,Courier New,monospace;font-size:12px;line-height:1.35;color:var(--text-main)}.label-tiles-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}.label-tile{border:1px solid var(--border-main);border-radius:10px;background:linear-gradient(180deg,var(--surface-soft-2) 0%,var(--surface-soft) 100%);padding:8px;cursor:pointer;text-align:left;display:grid;gap:8px;transition:border-color .14s ease,box-shadow .18s ease,transform .14s ease}.label-tile:hover{border-color:#739cd8;box-shadow:0 8px 16px #1a417c24;transform:translateY(-1px)}.label-tile.is-active{border-color:#2f6ee5;box-shadow:0 0 0 2px #2f6ee538}.label-tile-image{width:100%;aspect-ratio:210 / 132;border:1px solid var(--border-main);border-radius:8px;background:var(--canvas-bg);object-fit:contain;filter:var(--thumb-image-filter);transition:filter .14s ease}.label-tile-image.is-placeholder{display:flex;align-items:center;justify-content:center;color:#4f6487;font-size:13px;font-weight:600}.label-tile-meta{font-size:12px;font-weight:700;color:var(--text-main);text-transform:uppercase;letter-spacing:.03em}.saved-zpl-panel{padding:12px}.saved-zpl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px}.saved-zpl-card{border:1px solid var(--border-main);border-radius:10px;background:linear-gradient(180deg,var(--surface-soft-2) 0%,var(--surface-soft) 100%);padding:10px;display:grid;gap:8px}.saved-zpl-image{width:100%;height:132px;object-fit:cover;border:1px solid var(--border-main);border-radius:8px;background:#fff}.saved-zpl-image.is-placeholder{display:grid;place-items:center;color:var(--text-muted);font-size:12px;font-weight:700}.saved-zpl-name{display:grid;gap:6px;font-size:12px;font-weight:700;color:var(--text-muted)}.saved-zpl-name input{width:100%}.saved-zpl-meta{margin:0;font-size:12px;color:var(--text-muted)}.saved-zpl-actions{display:flex;gap:6px;flex-wrap:wrap}.preview-settings-accordion{border:1px solid #c5d4eb;border-radius:10px;background:#f8fbff;margin-top:8px;margin-bottom:12px;overflow:hidden}.preview-settings-toggle{width:100%;border:0;background:transparent;cursor:pointer;padding:10px 12px;font-size:15px;font-weight:700;color:#1f3657;display:flex;align-items:center;justify-content:space-between;text-align:left}.preview-settings-icon{font-size:18px;color:#395a84;line-height:1}.preview-settings-body{border-top:0 solid #d9e4f3;padding:0 10px;max-height:0;opacity:0;overflow:hidden;transition:max-height .24s ease,opacity .18s ease,padding .22s ease,border-top-width .22s ease}.preview-settings-accordion.is-open .preview-settings-body{border-top-width:1px;padding:10px;max-height:1200px;opacity:1}.printer-profile{border:1px solid #c9ced6;border-radius:8px;background:#fff;padding:10px 12px;margin-bottom:12px}.printer-row{display:grid;grid-template-columns:150px minmax(0,1fr);align-items:center;gap:8px;margin-bottom:8px}.printer-row:last-child{margin-bottom:0}.printer-row label{font-weight:600;color:var(--text-main)}.printer-controls{display:flex;align-items:center;gap:8px;min-width:0}.printer-row select,.printer-row input{min-width:0;padding:5px 7px;border:1px solid var(--border-main);border-radius:4px;background:var(--input-bg);font-size:13px;color:var(--text-main)}.printer-row input[type=number]{width:88px}.printer-row input[type=range]{width:100%;padding:0;border:none;accent-color:#2f6ee5}.printer-row-size{align-items:start}.size-controls{display:grid;gap:6px}.size-line{display:grid;grid-template-columns:20px minmax(140px,1fr) 90px;align-items:center;gap:8px}.size-line span{font-size:12px;font-weight:700;color:var(--text-muted)}.show-label-controls input[type=number]{width:110px}.printer-row-toggle{grid-template-columns:1fr auto}.printer-row-toggle label{font-weight:500}.printer-row-toggle input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent)}.printer-sep,.printer-of{color:var(--text-muted);font-weight:600}.preview-wrap{flex:0 0 auto;border:1px dashed var(--border-main);border-radius:10px;background:var(--surface-soft);display:flex;align-items:center;justify-content:center;padding:8px;min-height:0;width:100%;max-width:100%;margin:0;align-self:stretch;overflow:hidden}.preview-stage{display:flex;align-items:center;justify-content:center;width:fit-content;overflow:hidden;max-width:100%;transition:width .76s cubic-bezier(.22,.61,.36,1),height .76s cubic-bezier(.22,.61,.36,1)}.preview-rotator{transform-origin:center center;transition:transform .76s cubic-bezier(.22,.61,.36,1);will-change:transform}.preview-toolbar{margin-top:10px;border:1px solid var(--border-main);border-radius:8px;background:var(--surface-soft);padding:10px 12px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.preview-rotate-actions{display:flex;align-items:center;gap:8px}.rotate-btn{border:1px solid var(--border-main);border-radius:9px;background:linear-gradient(180deg,var(--btn-bg-grad-start) 0%,var(--btn-bg-grad-end) 100%);color:var(--btn-text);font-size:13px;font-weight:700;padding:7px 12px;cursor:pointer;transition:transform .14s ease,box-shadow .16s ease,border-color .16s ease}.rotate-btn-icon{width:34px;padding:6px 0;justify-content:center;font-size:16px;line-height:1}.rotate-btn:hover{border-color:var(--accent-border);box-shadow:0 4px 12px #21539d2e;transform:translateY(-1px)}.rotate-btn:active{transform:translateY(0)}.download-actions{display:flex;flex-wrap:wrap;gap:8px;margin-left:auto}.download-btn{border:1px solid var(--border-main);border-radius:8px;background:var(--btn-bg);color:var(--btn-text);font-size:13px;font-weight:600;padding:6px 10px;display:inline-flex;align-items:center;gap:6px;cursor:pointer;transition:border-color .14s ease,box-shadow .16s ease,transform .14s ease}.download-btn:hover:not(:disabled){border-color:var(--accent-border);box-shadow:0 4px 12px #21539d2e;transform:translateY(-1px)}.download-btn:active:not(:disabled){transform:translateY(0)}.download-btn:disabled{opacity:.45}.download-icon{width:16px;display:inline-flex;justify-content:center}.preview-warnings{margin-top:8px;border:1px solid var(--warn-border);border-radius:8px;background:var(--warn-bg);color:var(--warn-text);padding:10px 12px}.preview-warnings h3{margin:0 0 6px;font-size:14px}.preview-warnings ul{margin:0;padding-left:18px}.preview-warnings li{margin:3px 0;font-size:13px}.preview-diagnostics{margin-top:8px;border:1px solid var(--diag-border);border-radius:8px;background:var(--diag-bg);color:var(--diag-text);padding:10px 12px;max-height:220px;overflow:auto}.preview-diagnostics h3{margin:0 0 6px;font-size:14px}.preview-diagnostics ul{margin:0;padding-left:18px}.preview-diagnostics li{margin:4px 0;font-size:13px}.preview-canvas{display:block;border-radius:8px;border:1px solid #9fb2cf;background:#fff}.empty-state{color:#3e4f67;text-align:center;max-width:420px}.gfx-grid{display:grid;grid-template-columns:minmax(360px,520px) minmax(760px,980px);grid-template-areas:"upload zpl";gap:12px;align-items:start;justify-content:center;width:100%}.gfx-upload-panel{grid-area:upload;min-height:720px;display:flex;flex-direction:column}.gfx-zpl-panel{grid-area:zpl;min-height:720px;display:flex;flex-direction:column}.gfx-preview-wrap,.gfx-zpl-canvas-wrap{margin-top:8px;border:1px solid var(--border-main);border-radius:10px;background:var(--surface-soft);min-height:360px;display:flex;align-items:center;justify-content:center;padding:10px;overflow:auto}.gfx-upload-panel .gfx-preview-wrap{flex:1 1 auto;min-height:520px}.gfx-preview-image{max-width:100%;max-height:420px;object-fit:contain;display:block}.gfx-controls{margin-top:8px;display:grid;grid-template-columns:1fr;gap:8px}.gfx-control{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:700;color:var(--text-muted)}.gfx-control input[type=number]{width:100%;border:1px solid var(--border-main);border-radius:8px;background:var(--input-bg);color:var(--text-main);font-size:13px;padding:6px 8px}.gfx-size-buttons{display:flex;align-items:center;gap:8px}.gfx-control-inline{grid-column:1 / -1;flex-direction:row;align-items:center;justify-content:space-between}.gfx-control-inline input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent)}.gfx-editor-canvas{position:relative;border:1px solid #1f2c3f;background:linear-gradient(0deg,var(--grid-line) 1px,transparent 1px) 0 0 / 20px 20px,linear-gradient(90deg,var(--grid-line) 1px,transparent 1px) 0 0 / 20px 20px,var(--canvas-bg);overflow:hidden}.gfx-editor-item{position:absolute;border:1px solid rgba(43,67,100,.45);background:transparent;cursor:move;-webkit-user-select:none;user-select:none;display:flex;align-items:stretch;justify-content:stretch}.gfx-editor-item.is-selected{outline:2px solid #2f6ee5;outline-offset:1px}.gfx-item-delete{position:absolute;top:-9px;right:-9px;width:18px;height:18px;border:1px solid #17304e;border-radius:999px;background:#fff;color:#17304e;font-size:11px;line-height:1;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0;z-index:3}.gfx-item-delete:hover{background:#eaf2ff}.gfx-editor-item .gfx-preview-image{width:100%;height:100%;max-width:none;max-height:none;object-fit:fill}.gfx-zpl-canvas-wrap .preview-canvas{max-width:100%;height:auto}.gfx-zpl-main{display:grid;grid-template-columns:minmax(320px,46%) minmax(380px,54%);gap:10px;align-items:stretch;flex:1 1 auto;min-height:0;height:100%}.gfx-zpl-preview-col,.gfx-zpl-output-col{min-width:0;min-height:0;display:flex;flex-direction:column;height:100%}.gfx-zpl-actions{display:flex;align-items:center;gap:8px;margin-bottom:8px}.gfx-zpl-output{width:100%;min-height:0;height:100%;flex:1 1 auto;resize:vertical;border:1px solid var(--border-main);border-radius:8px;padding:10px;background:var(--input-bg);font-family:Consolas,Courier New,monospace;font-size:12px;line-height:1.35;color:var(--text-main)}.gfx-zpl-preview-col .gfx-zpl-canvas-wrap{flex:1 1 auto;min-height:0;height:100%}.codec-panel{min-height:0}.codec-toolbar{display:flex;align-items:center;gap:8px;margin-bottom:10px;flex-wrap:wrap}.codec-toolbar label{font-size:13px;font-weight:700;color:var(--text-main)}.codec-toolbar select{border:1px solid var(--border-main);border-radius:8px;background:var(--input-bg);color:var(--text-main);font-size:13px;font-weight:600;padding:6px 10px}.codec-live-toggle{display:inline-flex;align-items:center;gap:6px;margin-left:8px;font-size:13px;font-weight:700;color:var(--text-main)}.codec-live-toggle input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent)}.codec-live-hint{margin:0 0 10px}.codec-grid{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:12px;align-items:stretch}.codec-column{display:grid;gap:8px;font-weight:700;color:var(--text-main)}.codec-column textarea{width:100%;min-height:420px;resize:vertical;border:1px solid var(--border-main);border-radius:8px;padding:10px;background:var(--input-bg);font-family:Consolas,Courier New,monospace;font-size:12px;line-height:1.35;color:var(--text-main)}.codec-text-actions{display:flex;gap:6px}.codec-mini-btn{border:1px solid var(--border-main);border-radius:8px;background:var(--btn-bg);color:var(--btn-text);font-size:12px;font-weight:700;padding:4px 8px;cursor:pointer;transition:border-color .14s ease,box-shadow .16s ease,transform .14s ease}.codec-mini-btn:hover{border-color:var(--accent-border);box-shadow:0 4px 12px #21539d2e;transform:translateY(-1px)}.codec-mini-btn:active{transform:translateY(0)}.codec-actions{display:grid;align-content:center;gap:8px}.codec-actions .download-btn{justify-content:center;min-width:120px}.codec-error{margin-top:10px}.builder-shell{max-width:1960px}.builder-grid{display:grid;grid-template-columns:minmax(330px,420px) max-content minmax(420px,540px);gap:14px;align-items:stretch;justify-content:center}.builder-sidebar,.builder-canvas-wrap,.builder-zpl{background:var(--surface-main);border:1px solid var(--border-main);border-radius:12px;padding:12px}.builder-sidebar{max-height:calc(100vh - 170px);overflow:auto}.builder-sidebar .printer-profile{margin-bottom:8px}.builder-sidebar .printer-row{grid-template-columns:1fr;gap:6px}.builder-sidebar .printer-row-toggle{grid-template-columns:1fr auto;align-items:center}.builder-sidebar .printer-controls{width:100%}.builder-sidebar .size-line{grid-template-columns:20px minmax(120px,1fr) 84px;gap:6px}.builder-sidebar .size-line input[type=range]{width:100%}.builder-sidebar .size-line input[type=number]{grid-column:3;width:84px;justify-self:start}.builder-sidebar .size-controls>select{width:100%}.builder-canvas-wrap h2,.builder-zpl h2{margin:0 0 10px;font-size:20px}.builder-zpl h3{margin:12px 0 8px;font-size:16px}.builder-accordion{border:1px solid var(--border-main);border-radius:10px;background:var(--surface-soft-2);margin-bottom:10px;overflow:hidden}.builder-accordion-toggle{width:100%;border:0;background:transparent;cursor:pointer;padding:10px 12px;font-size:15px;font-weight:700;color:var(--text-main);display:flex;align-items:center;justify-content:space-between;text-align:left}.builder-accordion-icon{font-size:18px;color:#395a84;line-height:1}.builder-accordion-body{border-top:0 solid #d9e4f3;padding:0 10px;max-height:0;opacity:0;overflow:hidden;transition:max-height .22s ease,opacity .2s ease,padding .22s ease,border-top-width .22s ease}.builder-accordion.is-open .builder-accordion-body{border-top-width:1px;padding:10px 10px 8px;max-height:900px;opacity:1}.builder-sub-accordion{border:1px solid var(--border-main);border-radius:8px;background:var(--surface-soft);padding:0;overflow:hidden}.builder-sub-accordion-toggle{width:100%;border:0;background:transparent;cursor:pointer;font-size:12px;font-weight:700;color:var(--text-main);text-transform:uppercase;letter-spacing:.04em;padding:7px 8px;display:flex;align-items:center;justify-content:space-between;text-align:left}.builder-sub-accordion-icon{font-size:14px;line-height:1}.builder-sub-accordion-body{border-top:0 solid #d9e4f3;padding:0 8px;display:grid;gap:8px;max-height:0;opacity:0;overflow:hidden;transition:max-height .2s ease,opacity .18s ease,padding .2s ease,border-top-width .2s ease}.builder-sub-accordion.is-open .builder-sub-accordion-body{border-top-width:1px;padding:8px;max-height:280px;opacity:1}.builder-palette{display:grid;grid-template-columns:1fr;gap:8px}.builder-palette-group{border:1px solid var(--border-main);border-radius:10px;background:var(--surface-soft-2);padding:8px}.builder-palette-group h4{margin:0 0 8px;font-size:12px;color:var(--text-muted);letter-spacing:.04em;text-transform:uppercase}.builder-palette-buttons{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.builder-palette button,.builder-palette select{border:1px solid var(--border-main);border-radius:8px;background:var(--btn-bg);color:var(--btn-text);font-size:13px;font-weight:600;padding:8px;width:100%}.builder-palette select{margin-bottom:8px;font-weight:500}.builder-palette button{cursor:grab}.builder-palette button:active{cursor:grabbing}.builder-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.builder-form label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--text-muted);font-weight:600}.builder-form input{width:100%;padding:6px 8px;border:1px solid var(--border-main);border-radius:8px;font-size:13px;color:var(--text-main);background:var(--input-bg)}.builder-form>label:last-of-type:nth-child(odd){grid-column:1 / -1}.builder-form>.download-btn{grid-column:1 / -1;justify-content:center}.builder-canvas-wrap{width:fit-content;max-width:100%;justify-self:center;overflow:auto}.builder-canvas{position:relative;border:1px solid var(--border-main);border-radius:10px;background:linear-gradient(0deg,var(--grid-line) 1px,transparent 1px) 0 0 / 24px 24px,linear-gradient(90deg,var(--grid-line) 1px,transparent 1px) 0 0 / 24px 24px,var(--canvas-bg);margin:0 auto;-webkit-user-select:none;user-select:none}.builder-selection-box{position:absolute;border:1px dashed #2f6ee5;background:#2f6ee51f;pointer-events:none;z-index:999}.builder-guide-line{position:absolute;pointer-events:none;z-index:998;background:#2f6ee5d9}.builder-guide-line-x{top:0;width:1px;height:100%}.builder-guide-line-y{left:0;width:100%;height:1px}.builder-item{position:absolute;border:1px solid #223650;background:#22365014;color:#102038;display:flex;align-items:center;justify-content:center;overflow:hidden;cursor:move;font-size:11px;font-weight:700;letter-spacing:.02em;padding:2px 4px}.builder-item.is-locked{cursor:not-allowed;opacity:.85}.builder-item>span:not(.builder-item-resize-handle){pointer-events:none}.builder-item-barcode-canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block;pointer-events:none;background:#fff}.builder-item.is-selected{outline:2px solid #2f6ee5;outline-offset:1px}.builder-item.is-in-generator{border-color:#0f7a4d}.builder-item.is-in-generator:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border:2px dashed #22c55e;box-shadow:0 0 0 1px #065f46d9,0 0 12px #22c55e40;pointer-events:none;z-index:5}.builder-item.is-selected.is-in-generator:after{border-color:#86efac}.builder-item.is-generator-hover:after{border-color:#bbf7d0;box-shadow:0 0 0 2px #15803df2,0 0 18px #22c55e73}.builder-item.is-generator-hover:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#22c55e33;pointer-events:none;z-index:4}.builder-canvas.is-generator-mode .builder-item{border-color:transparent}.builder-canvas.is-generator-mode .builder-item.is-selected{outline:none}.builder-canvas.is-generator-mode .builder-item-text,.builder-canvas.is-generator-mode .builder-item-code128,.builder-canvas.is-generator-mode .builder-item-gs1128,.builder-canvas.is-generator-mode .builder-item-itf14,.builder-canvas.is-generator-mode .builder-item-code39,.builder-canvas.is-generator-mode .builder-item-ean13,.builder-canvas.is-generator-mode .builder-item-graphic,.builder-canvas.is-generator-mode .builder-item-passthrough,.builder-canvas.is-generator-mode .builder-item-table,.builder-canvas.is-generator-mode .builder-item-shade{background:transparent}.builder-canvas.is-generator-mode .builder-item-resize-handle{display:none}.builder-item-text{justify-content:flex-start;align-items:flex-start;background:#2368cf1f;padding:0}.builder-item-text span,.builder-item-code128 span,.builder-item-ean13 span{white-space:nowrap;line-height:1}.builder-item-text>span:not(.builder-item-resize-handle){display:block;width:100%;text-align:left}.builder-item-code128,.builder-item-gs1128,.builder-item-itf14,.builder-item-code39,.builder-item-ean13{background:repeating-linear-gradient(90deg,rgba(23,33,48,.85) 0,rgba(23,33,48,.85) 2px,transparent 2px,transparent 4px),#ffffffd9;align-items:flex-end;padding-bottom:3px}.builder-item-code128 span,.builder-item-gs1128 span,.builder-item-itf14 span,.builder-item-code39 span,.builder-item-ean13 span{background:#ffffffd9;padding:0 2px}.builder-item-pdf417{background:repeating-linear-gradient(0deg,rgba(23,33,48,.8) 0,rgba(23,33,48,.8) 2px,transparent 2px,transparent 4px),repeating-linear-gradient(90deg,rgba(23,33,48,.45) 0,rgba(23,33,48,.45) 3px,transparent 3px,transparent 7px),#ffffffe6;align-items:flex-end;padding-bottom:3px}.builder-item-pdf417 span{background:#ffffffe0;padding:0 2px}.builder-item-qr,.builder-item-datamatrix{background:repeating-linear-gradient(0deg,rgba(17,30,47,.12) 0,rgba(17,30,47,.12) 6px,transparent 6px,transparent 12px),repeating-linear-gradient(90deg,rgba(17,30,47,.12) 0,rgba(17,30,47,.12) 6px,transparent 6px,transparent 12px),#fff;border-width:2px;font-size:12px}.builder-item-line,.builder-item-line-v{background:#1f2c3f;border:none;padding:0}.builder-item-line-d{border:none;background:linear-gradient(45deg,transparent calc(50% - 1px),#1f2c3f calc(50% - 1px),#1f2c3f calc(50% + 1px),transparent calc(50% + 1px));padding:0}.builder-item-box{background:transparent;border-width:2px}.builder-item-circle{border-radius:50%;background:transparent;border-width:2px}.builder-item-ellipse{border-radius:999px;background:transparent;border-width:2px}.builder-item-passthrough{background:repeating-linear-gradient(135deg,#1f2c3f14 0,#1f2c3f14 8px,#1f2c3f29 8px,#1f2c3f29 16px),#ffffffc7;border-style:dashed}.builder-item-passthrough-label{font-size:11px;font-weight:700;letter-spacing:.04em;color:#1f2c3f;padding:2px 5px;border-radius:4px;background:#ffffffd9}.builder-item-graphic{background:repeating-linear-gradient(45deg,#1f2c3f14 0,#1f2c3f14 8px,#1f2c3f29 8px,#1f2c3f29 16px),#ffffffdb;border-style:dashed}.builder-item-table{background-color:#ffffffb3;border-width:2px}.builder-item-shade{border-style:dashed;border-width:2px;background:#ffffffdb}.builder-item-box.is-filled,.builder-item-circle.is-filled,.builder-item-ellipse.is-filled{background:#1f3d6338}.builder-item-resize-handle{position:absolute;pointer-events:auto}.builder-item-resize-handle-right{top:0;right:-1px;width:8px;height:100%;cursor:ew-resize}.builder-item-resize-handle-bottom{left:0;bottom:-1px;width:100%;height:8px;cursor:ns-resize}.builder-item-resize-handle-corner{right:-1px;bottom:-1px;width:12px;height:12px;background:linear-gradient(135deg,transparent 0 38%,#1f3d63 40% 52%,transparent 54% 100%);cursor:nwse-resize;z-index:2}.builder-item.is-selected .builder-item-resize-handle-right:before{content:"";position:absolute;right:1px;top:25%;bottom:25%;width:2px;background:#1f3d6373}.builder-item.is-selected .builder-item-resize-handle-bottom:before{content:"";position:absolute;left:25%;right:25%;bottom:1px;height:2px;background:#1f3d6373}.builder-item:not(.is-selected) .builder-item-resize-handle-right,.builder-item:not(.is-selected) .builder-item-resize-handle-bottom{display:none}.builder-item:not(.is-selected) .builder-item-resize-handle-corner{opacity:.7}.builder-item.is-selected .builder-item-resize-handle-corner{opacity:1}.builder-item-line .builder-item-resize-handle-bottom,.builder-item-line .builder-item-resize-handle-corner{display:none}.builder-item-line .builder-item-resize-handle-right{display:block}.builder-item-line-v .builder-item-resize-handle-right,.builder-item-line-v .builder-item-resize-handle-corner{display:none}.builder-item-line-v .builder-item-resize-handle-bottom{display:block}.builder-item-resize-handle:hover{background-color:#2f6ee51f}.builder-item-resize-handle-corner:hover{background:linear-gradient(135deg,transparent 0 38%,#1f3d63 40% 52%,transparent 54% 100%),#2f6ee524}.builder-zpl{display:flex;flex-direction:column;gap:8px;height:100%}.builder-bottom-actions{margin-top:2px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.builder-bottom-actions .download-btn{justify-content:center}.builder-zpl-accordion{border:1px solid #c5d4eb;border-radius:10px;background:#f8fbff;overflow:hidden;display:flex;flex-direction:column;flex:0 0 auto}.builder-zpl-accordion-toggle{width:100%;border:0;background:transparent;cursor:pointer;padding:10px 12px;font-size:15px;font-weight:700;color:#1f3657;display:flex;align-items:center;justify-content:space-between;text-align:left}.builder-zpl-accordion-icon{font-size:18px;color:#395a84;line-height:1}.builder-zpl-accordion-body{border-top:0 solid #d9e4f3;padding:0 10px;max-height:0;opacity:0;overflow:hidden;transition:max-height .24s ease,opacity .18s ease,padding .22s ease,border-top-width .22s ease}.builder-zpl-accordion.is-open .builder-zpl-accordion-body{border-top-width:1px;padding:10px;max-height:none;opacity:1;flex:1 1 auto;min-height:0}.builder-zpl-accordion.is-open{flex:1 1 auto;min-height:0}.builder-form-checkbox{display:flex;flex-direction:row;align-items:center;justify-content:space-between;grid-column:1 / -1}.builder-form-checkbox input[type=checkbox]{width:18px;height:18px;accent-color:#2f6ee5}.builder-flag-tools{grid-column:1 / -1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.builder-flag-tools .builder-form-checkbox{grid-column:auto}.builder-layer-tools{grid-column:1 / -1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.builder-layer-tools .download-btn{justify-content:center}.builder-align-tools{margin-top:8px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.builder-align-tools .download-btn{justify-content:center}.builder-sidebar-divider{width:100%;border:0;border-top:1px solid var(--border-main);margin:10px 0}.builder-generator-count{display:grid;grid-template-columns:1fr 110px;gap:8px;align-items:center;margin-bottom:8px}.builder-generator-body{display:flex;flex-direction:column;min-height:0}.builder-accordion.builder-accordion-generator{display:flex;flex-direction:column;min-height:0;max-height:calc(100vh - 360px)}.builder-accordion.builder-accordion-generator .builder-accordion-body{min-height:0;display:flex;flex-direction:column;overflow:hidden}.builder-accordion.builder-accordion-generator.is-open .builder-accordion-body{max-height:min(68vh,760px)}.builder-generator-count label{font-size:12px;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.builder-generator-count input{width:100%;padding:6px 8px;border:1px solid var(--border-main);border-radius:8px;background:var(--input-bg);color:var(--text-main);font-size:13px}.builder-generator-list{display:grid;gap:8px;margin-bottom:8px;max-height:100%;overflow:auto;padding-right:4px;flex:1 1 auto;min-height:0}.builder-generator-rule{border:1px solid var(--border-main);border-radius:8px;background:var(--surface-soft);padding:8px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.builder-generator-title{margin:0;grid-column:1 / -1;font-size:12px;font-weight:700;color:var(--text-main);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.builder-generator-rule label{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:600;color:var(--text-muted)}.builder-generator-rule input,.builder-generator-rule select{width:100%;padding:6px 8px;border:1px solid var(--border-main);border-radius:8px;background:var(--input-bg);color:var(--text-main);font-size:13px}.builder-generator-rule .download-btn{grid-column:1 / -1;justify-content:center}.builder-generator-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.builder-generator-actions .download-btn{justify-content:center}.builder-uploaded-graphics{display:grid;gap:6px}.builder-uploaded-graphics .download-btn{width:100%;justify-content:center}.builder-zpl textarea{width:100%;height:100%;min-height:0;resize:vertical;border:1px solid var(--border-main);border-radius:8px;padding:8px 10px;background:var(--input-bg);font-family:Consolas,Courier New,monospace;font-size:12px;line-height:1.35;color:var(--text-main)}.builder-generated-zpl-view{width:100%;height:100%;min-height:0;margin:0;border:1px solid var(--border-main);border-radius:8px;padding:8px 10px;background:var(--input-bg);font-family:Consolas,Courier New,monospace;font-size:12px;line-height:1.35;color:var(--text-main);overflow:auto;white-space:pre}.builder-generated-zpl-line{display:block;border-radius:4px;padding:0 4px}.builder-generated-zpl-line.is-linked{background:#2f6ee533;box-shadow:inset 2px 0 #2f6ee5}.zip-upload,.zip-summary,.editor-shell,.preview-settings-accordion,.printer-profile,.builder-accordion,.builder-sub-accordion,.builder-zpl-accordion,.builder-sidebar,.builder-canvas-wrap,.builder-zpl{background:var(--surface-main);border-color:var(--border-main)}.zip-dropzone,.preview-settings-toggle,.builder-accordion-toggle,.builder-sub-accordion-toggle,.builder-zpl-accordion-toggle,.builder-sidebar .printer-profile{background:var(--surface-soft-2);color:var(--text-main);border-color:var(--border-main)}.preview-canvas,.builder-item-barcode-canvas{background:var(--canvas-bg)}@media (max-width: 980px){.app-header-main{align-items:flex-start}.app-nav{width:100%;justify-content:flex-start;margin-left:0}.app-theme-picker{margin-left:0;padding-left:0;border-left:none}.app-grid{grid-template-columns:1fr}.preview-panel{width:100%;min-width:0;max-width:none}.panel{min-height:380px}.editor-shell,.editor-highlight,.editor-input{min-height:280px}.printer-row{grid-template-columns:1fr}.size-line{grid-template-columns:20px 1fr 86px}.preview-wrap{min-height:0}.preview-toolbar{justify-content:flex-start}.download-actions{margin-left:0}.builder-grid{grid-template-columns:1fr}.builder-sidebar{max-height:none;overflow:visible}.builder-form,.builder-generator-rule,.builder-generator-actions{grid-template-columns:1fr}.builder-accordion.builder-accordion-generator{max-height:none}.builder-bottom-actions{grid-template-columns:1fr}.gfx-grid{grid-template-columns:1fr;grid-template-areas:"upload" "zpl"}.gfx-controls,.gfx-zpl-main{grid-template-columns:1fr}.gfx-upload-panel,.gfx-zpl-panel{min-height:0}.gfx-upload-panel .gfx-preview-wrap,.gfx-zpl-canvas-wrap,.gfx-zpl-output{min-height:260px}.codec-grid{grid-template-columns:1fr}.codec-toolbar{margin-bottom:8px}.codec-actions{grid-auto-flow:column;justify-content:flex-start}.codec-column textarea{min-height:240px}.codec-live-toggle{margin-left:0}}
