:root{--bg:#f4f5fa;--card:#fff;--text:#1d1f2c;--muted:#6b7085;--border:#e5e7ef;--accent:#5b4bff;--accent-hover:#4a3af0;--accent-weak:#efedff;--danger:#e5484d;--danger-weak:#fdecec;--success:#1f9d55;--shadow:0 3px 17px #0000002b;--shadow-sm:0 1px 6px #00000014;--radius:14px;--radius-sm:9px;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px}*{box-sizing:border-box}body{background:var(--bg);margin:0}a{color:var(--accent);text-decoration:none}h1,h2,h3{letter-spacing:-.01em;margin:0;font-weight:700}h1{font-size:24px}h2{font-size:18px}h3{font-size:15px}.muted{color:var(--muted)}.small{font-size:12px}.app{min-height:100vh;display:flex}.sidebar{background:var(--card);width:268px;box-shadow:var(--shadow);z-index:5;flex-direction:column;flex-shrink:0;height:100vh;padding:22px 14px;display:flex;position:sticky;top:0}.logo{color:var(--text);align-items:center;gap:10px;padding:0 10px 24px;font-size:18px;font-weight:700;display:flex}.logo-mark{background:var(--accent);border-radius:10px;place-items:center;width:34px;height:34px;display:grid}.nav{flex-direction:column;gap:4px;display:flex}.nav a{border-radius:var(--radius-sm);color:var(--muted);align-items:center;gap:10px;padding:10px 12px;font-weight:500;transition:background .15s,color .15s;display:flex}.nav a:hover{background:var(--bg);color:var(--text)}.nav a.active{background:var(--accent-weak);color:var(--accent)}.nav svg{flex-shrink:0;width:18px;height:18px}.sidebar-footer{border-top:1px solid var(--border);margin-top:auto;padding:12px}.sidebar-footer .email{text-overflow:ellipsis;white-space:nowrap;margin-bottom:8px;font-weight:500;overflow:hidden}.main{flex:1;min-width:0;padding:28px 32px 48px}.page-head{flex-wrap:wrap;align-items:center;gap:16px;margin-bottom:22px;display:flex}.page-head .spacer{flex:1}.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px}.card+.card{margin-top:20px}.grid-2{grid-template-columns:repeat(auto-fit,minmax(340px,1fr));align-items:start;gap:20px;display:grid}.grid-2>.card,.tpl-grid>.card,.editor>.card{margin-top:0}.btn{border-radius:var(--radius-sm);height:38px;font:inherit;cursor:pointer;background:var(--accent);color:#fff;white-space:nowrap;border:1px solid #0000;justify-content:center;align-items:center;gap:7px;padding:0 16px;font-weight:600;transition:background .15s,box-shadow .15s,transform 50ms;display:inline-flex}.btn:hover{background:var(--accent-hover);box-shadow:0 3px 12px #5b4bff59}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:not-allowed;box-shadow:none}.btn svg{width:16px;height:16px}.btn-secondary{background:var(--card);color:var(--text);border-color:var(--border)}.btn-secondary:hover{background:var(--bg);box-shadow:var(--shadow-sm)}.btn-ghost{color:var(--muted);background:0 0}.btn-ghost:hover{background:var(--bg);color:var(--text);box-shadow:none}.btn-danger{background:var(--danger)}.btn-danger:hover{background:#d63c41;box-shadow:0 3px 12px #e5484d59}.btn-sm{height:30px;padding:0 10px;font-size:13px}.btn-icon{width:32px;height:32px;color:var(--muted);background:0 0;padding:0}.btn-icon:hover{background:var(--bg);color:var(--text);box-shadow:none}.btn-icon.danger:hover{background:var(--danger-weak);color:var(--danger)}.input,.select,textarea.input{border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;height:38px;font:inherit;color:var(--text);background:#fff;outline:none;padding:0 12px;transition:border-color .15s,box-shadow .15s}textarea.input{resize:vertical;height:auto;padding:10px 12px}.input:focus,.select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-weak)}.input-sm{height:32px;padding:0 8px;font-size:13px}.field{flex-direction:column;gap:6px;display:flex}.field>span{color:var(--muted);font-size:12px;font-weight:600}.form-grid{grid-template-columns:1fr 1fr;gap:14px;display:grid}.form-grid .full{grid-column:1/-1}.row{align-items:center;gap:10px;display:flex}.row-wrap{flex-wrap:wrap}.checkbox{width:16px;height:16px;accent-color:var(--accent);cursor:pointer}.search{width:320px;max-width:100%;position:relative}.search svg{width:16px;height:16px;color:var(--muted);position:absolute;top:11px;left:11px}.search .input{padding-left:34px}.error-text{color:var(--danger);font-size:13px}.badge{background:var(--bg);color:var(--muted);border-radius:20px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-block}.badge-accent{background:var(--accent-weak);color:var(--accent)}.badge-wb{color:#b40f98;background:#fbe7f6}.badge-excel{color:var(--success);background:#e5f6ec}.table-wrap{margin:0 -22px;overflow-x:auto}table.table{border-collapse:collapse;width:100%}.table th{text-align:left;color:var(--muted);border-bottom:1px solid var(--border);white-space:nowrap;padding:10px 12px;font-size:12px;font-weight:600}.table td{border-bottom:1px solid var(--border);vertical-align:middle;padding:11px 12px}.table th:first-child,.table td:first-child{padding-left:22px}.table th:last-child,.table td:last-child{padding-right:22px}.table tbody tr:hover{background:#fafaff}.table tbody tr.selected{background:var(--accent-weak)}.table .name-cell{max-width:320px}.table .name-cell .title{text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}.mono{font-family:Roboto Mono,ui-monospace,Consolas,monospace;font-size:13px}.actions{justify-content:flex-end;gap:2px;display:flex}.pagination{justify-content:space-between;align-items:center;padding-top:16px;display:flex}.empty{text-align:center;padding:56px 20px}.empty .icon{background:var(--accent-weak);width:56px;height:56px;color:var(--accent);border-radius:16px;place-items:center;margin:0 auto 14px;display:grid}.selection-bar{z-index:4;background:var(--text);color:#fff;border-radius:var(--radius);box-shadow:var(--shadow);align-items:center;gap:12px;margin-bottom:16px;padding:10px 12px 10px 18px;display:flex;position:sticky;top:12px}.selection-bar .btn-secondary{color:#fff;background:#ffffff1a;border-color:#ffffff2e}.selection-bar .btn-secondary:hover{background:#ffffff2e}.sidebar-scroll{flex:1;min-height:0;margin:0 -6px;padding:0 6px;overflow:hidden auto}.nav-count{color:var(--muted);margin-left:auto;font-size:12px;font-weight:500}.nav-secondary{border-top:1px solid var(--border);margin-top:10px;padding-top:10px}.folder-panel{border-left:1px solid var(--border);margin:2px 0 0 18px;padding-left:6px;font-size:13px}.folder-row.muted-row .folder-name{color:var(--muted);font-weight:400}.folder-row.muted-row.active .folder-name{color:var(--accent)}.folder-add{width:100%;height:32px;font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:8px;align-items:center;gap:6px;padding:0 6px 0 4px;transition:color .12s,background .12s;display:flex}.folder-add:hover{color:var(--accent);background:var(--accent-weak)}.folder-tree{min-height:0}.folder-row{cursor:pointer;-webkit-user-select:none;user-select:none;height:32px;color:var(--text);border-radius:8px;align-items:center;gap:6px;padding-right:6px;transition:background .12s;display:flex}.folder-row:hover{background:var(--bg)}.folder-row.active{background:var(--accent-weak);color:var(--accent)}.folder-row.drop{background:var(--accent-weak);box-shadow:inset 0 0 0 2px var(--accent)}.folder-toggle{width:20px;height:20px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:4px;flex-shrink:0;place-items:center;padding:0;transition:transform .15s;display:grid}.folder-toggle.open{transform:rotate(90deg)}.folder-icon{color:var(--muted);flex-shrink:0}.folder-row.active .folder-icon{color:var(--accent)}.folder-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-weight:500;overflow:hidden}.folder-count{color:var(--muted);font-size:12px}.folder-actions{gap:1px;display:none}.folder-row:hover .folder-actions{display:flex}.folder-row:hover .folder-count{display:none}.folder-actions button{width:24px;height:24px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:6px;place-items:center;display:grid}.folder-actions button:hover{color:var(--text);box-shadow:var(--shadow-sm);background:#fff}.folder-actions button.danger:hover{color:var(--danger)}.folder-edit{padding:3px 6px 3px 0}.folder-hint{text-align:left;border:1px dashed var(--border);width:100%;font:inherit;color:var(--accent);cursor:pointer;background:0 0;border-radius:8px;flex-direction:column;gap:2px;margin-top:4px;padding:8px 10px;font-weight:500;display:flex}.folder-hint span{color:var(--muted);font-size:11px;font-weight:400}.folder-hint:hover{border-color:var(--accent);background:var(--accent-weak)}.table tbody tr[draggable=true]{cursor:grab}.folder-chip{color:var(--muted);align-items:center;gap:4px;margin-left:6px;font-size:11px;display:inline-flex}.move-list{flex-direction:column;gap:2px;max-height:420px;display:flex;overflow:auto}.move-item{cursor:pointer;border-radius:8px;align-items:center;gap:8px;padding:9px 12px;display:flex}.move-item:hover{background:var(--bg)}.move-item.on{background:var(--accent-weak);color:var(--accent)}.move-item input{accent-color:var(--accent)}.modal-backdrop{z-index:50;background:#14162373;place-items:center;padding:20px;animation:.15s fade;display:grid;position:fixed;inset:0}.modal{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;width:100%;max-width:640px;max-height:calc(100vh - 40px);animation:.18s pop;display:flex}.modal-wide{max-width:920px}.modal-head{border-bottom:1px solid var(--border);align-items:center;padding:18px 22px;display:flex}.modal-head h2{flex:1}.modal-body{padding:22px;overflow:auto}.modal-foot{border-top:1px solid var(--border);justify-content:flex-end;gap:10px;padding:16px 22px;display:flex}@keyframes fade{0%{opacity:0}}@keyframes pop{0%{opacity:0;transform:translateY(8px)scale(.98)}}.toasts{z-index:100;flex-direction:column;gap:10px;display:flex;position:fixed;bottom:20px;right:20px}.toast{background:var(--card);box-shadow:var(--shadow);border-radius:var(--radius-sm);border-left:4px solid var(--success);min-width:260px;max-width:420px;padding:12px 16px;animation:.2s pop}.toast.error{border-left-color:var(--danger)}.auth-page{background:radial-gradient(1200px 600px at 20% -10%, #e4e0ff 0%, transparent 60%), var(--bg);place-items:center;min-height:100vh;padding:20px;display:grid}.auth-card{width:100%;max-width:400px}.auth-card .logo{justify-content:center;padding-bottom:8px}.auth-card form{flex-direction:column;gap:14px;margin-top:20px;display:flex}.label{color:#000;background:#fff;position:relative;overflow:hidden}.label-el{position:absolute}.label-el-inner{flex-direction:column;justify-content:center;line-height:1.15;display:flex;position:absolute;top:50%;left:50%;overflow:hidden}.label-el-inner.nowrap{white-space:nowrap}.label-el-inner .txt{text-overflow:ellipsis;overflow:hidden}.barcode-box{flex-direction:column;width:100%;height:100%;display:flex}.barcode-bars{flex:1;min-height:0}.barcode-text{text-align:center;letter-spacing:.08em;font-family:Arial,sans-serif;line-height:1.1}.barcode-error{border:1px dashed var(--danger);width:100%;height:100%;color:var(--danger);text-align:center;place-items:center;font-size:7pt;display:grid}.label-preview{box-shadow:var(--shadow);border-radius:3px;display:inline-block;overflow:hidden}.tpl-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:20px;display:grid}.tpl-card{flex-direction:column;gap:14px;transition:transform .15s;display:flex}.tpl-card:hover{transform:translateY(-2px)}.tpl-card .preview{background:var(--bg);border-radius:var(--radius-sm);cursor:pointer;place-items:center;height:190px;display:grid;overflow:hidden}.editor{grid-template-columns:250px minmax(0,1fr) 290px;align-items:start;gap:20px;display:grid}.editor .card{padding:18px}.editor .panel-title{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:0 0 10px;font-size:12px;font-weight:700}.editor .panel-section+.panel-section{border-top:1px solid var(--border);margin-top:20px;padding-top:18px}.canvas-card{overflow:hidden;padding:0!important}.canvas-toolbar{border-bottom:1px solid var(--border);align-items:center;gap:8px;padding:10px 14px;display:flex}.canvas-area{background-color:#eef0f6;background-image:radial-gradient(#d4d7e3 1px,#0000 1px);background-size:16px 16px;min-height:520px;padding:40px;display:flex;overflow:auto}.canvas-scale{flex-shrink:0;margin:auto;position:relative}.canvas-scale>.label{box-shadow:var(--shadow);transform-origin:0 0;position:absolute;top:0;left:0}.label.editable .label-el{cursor:move;outline-offset:0;outline:1px dashed #5b4bff59}.label.editable .label-el:hover{outline-color:#5b4bffcc}.label.editable .label-el.selected{outline:1.5px solid var(--accent);z-index:2}.resize-handle{border:1.5px solid var(--accent);cursor:nwse-resize;background:#fff;border-radius:50%;width:2.4mm;height:2.4mm;position:absolute;bottom:-1.2mm;right:-1.2mm}.element-list{flex-direction:column;gap:2px;max-height:260px;display:flex;overflow:auto}.element-list button{text-align:left;font:inherit;cursor:pointer;color:var(--text);background:0 0;border:0;border-radius:7px;align-items:center;gap:8px;padding:7px 8px;display:flex}.element-list button:hover{background:var(--bg)}.element-list button.active{background:var(--accent-weak);color:var(--accent)}.add-grid{grid-template-columns:1fr 1fr;gap:6px;display:grid}.add-grid .btn{justify-content:flex-start}.props{flex-direction:column;gap:12px;display:flex}.props .two{grid-template-columns:1fr 1fr;gap:8px;display:grid}.props .four{grid-template-columns:repeat(4,1fr);gap:6px;display:grid}.seg{border:1px solid var(--border);border-radius:var(--radius-sm);display:inline-flex;overflow:hidden}.seg button{height:32px;font:inherit;cursor:pointer;color:var(--muted);background:#fff;border:0;padding:0 10px}.seg button+button{border-left:1px solid var(--border)}.seg button.on{background:var(--accent-weak);color:var(--accent);font-weight:600}.presets{flex-wrap:wrap;gap:6px;display:flex}.presets button{border:1px solid var(--border);font:inherit;cursor:pointer;background:#fff;border-radius:20px;padding:4px 10px;font-size:12px}.presets button.on,.presets button:hover{border-color:var(--accent);color:var(--accent)}.print-layout{grid-template-columns:1fr 300px;gap:22px;display:grid}.print-items{border:1px solid var(--border);border-radius:var(--radius-sm);max-height:380px;overflow:auto}.print-items .item{border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:9px 12px;display:flex}.print-items .item:last-child{border-bottom:0}.print-items .item .info{flex:1;min-width:0}.print-items .item .info div{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.qty{width:74px}.preview-box{background:var(--bg);border-radius:var(--radius-sm);place-items:center;min-height:220px;padding:20px;display:grid}.dropzone{border:2px dashed var(--border);border-radius:var(--radius);text-align:center;cursor:pointer;padding:34px 20px;transition:border-color .15s,background .15s}.dropzone:hover,.dropzone.drag{border-color:var(--accent);background:var(--accent-weak)}.result{border-radius:var(--radius-sm);color:#17643a;background:#eefaf2;margin-top:16px;padding:14px 16px}.steps{color:var(--muted);margin:12px 0 0;padding-left:18px;line-height:1.7}.print-toolbar{background:var(--card);box-shadow:var(--shadow);z-index:2;align-items:center;gap:12px;padding:12px 20px;display:flex;position:sticky;top:0}.print-sheet{flex-wrap:wrap;justify-content:center;gap:12px;padding:24px;display:flex}.print-sheet .label{box-shadow:var(--shadow-sm)}@media print{.no-print{display:none!important}body,.print-root{background:#fff!important}.print-sheet{gap:0;padding:0;display:block}.print-sheet .label{box-shadow:none;break-after:page;page-break-after:always}.print-sheet .label:last-child{break-after:auto;page-break-after:auto}}@media (width<=1200px){.editor{grid-template-columns:220px minmax(0,1fr)}.editor .props-card{grid-column:1/-1}}@media (width<=860px){.app{flex-direction:column}.sidebar{flex-direction:row;align-items:center;width:100%;height:auto;padding:10px 14px;position:static;overflow-x:auto}.logo{padding:0 12px 0 0}.nav{flex-direction:row}.sidebar-footer{display:none}.main{padding:18px 16px 40px}.editor,.print-layout{grid-template-columns:1fr}.sidebar .folder-panel,.sidebar .nav-secondary{display:none}.sidebar-scroll{display:flex;overflow:visible}.form-grid{grid-template-columns:1fr}}
