/* Labels section: Box Labels, Item Labels, Custom Labels, Print Queue, Print Station (lb-*, cl-*, pq-*, ps-*). */
.lb-card{margin-bottom:16px}
.lb-body{padding:4px 14px 14px}
.lb-grid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(280px,1fr);gap:16px;align-items:start}
.lb-hint{font-size:12.5px;color:var(--text-muted);margin:0 0 8px}
.lb-sub{font-size:11.5px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);margin:4px 0 6px}
.lb-field{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:600;color:var(--text-muted);margin-bottom:10px;min-width:0}
.lb-field input,.lb-field select{font:inherit;font-size:13.5px;font-weight:400;color:var(--text);background:var(--surface-subtle);border:1px solid var(--border);border-radius:7px;padding:7px 9px;width:100%;box-sizing:border-box}
.lb-num{text-align:right;font-variant-numeric:tabular-nums}
.lb-mono{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12.5px;font-weight:600}
.lb-warn{color:#c0302f;font-weight:600}
.lb-more{width:100%;font-size:12px;color:var(--text-muted);margin:4px 0 0}
.lb-unknown>td{background:color-mix(in srgb,#eda100 12%,var(--card-bg))}
/* Box Labels drop zone, progress & button system */
.lb-page .su-toolbar {
  display: flex;
  align-items: center;
  gap: 8px 10px;
  flex-wrap: wrap;
}

.lb-page .su-toolbar button,
.lb-page .su-toolbar .s2d-act,
.lb-page .su-toolbar .s2d-btn-ok {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  height: 36px;
  padding: 0 16px;
  border-radius: 8px;
  font: inherit;
  font-size: 13px;
  font-weight: 600;
  text-decoration: none;
  cursor: pointer;
  white-space: nowrap;
  transition: all 0.18s cubic-bezier(0.16, 1, 0.3, 1);
  box-sizing: border-box;
}

.lb-page .su-toolbar .s2d-act {
  border: 1px solid var(--border);
  background: var(--card-bg);
  color: var(--text);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
}

.lb-page .su-toolbar .s2d-act:hover {
  background: var(--surface-subtle);
  border-color: var(--primary);
  color: var(--primary);
  transform: translateY(-1px);
  box-shadow: 0 3px 8px rgba(0, 0, 0, 0.08);
}

.lb-page .su-toolbar .s2d-act:active {
  transform: translateY(0);
}

.lb-page .su-toolbar .s2d-btn-ok,
.lb-page #blRun {
  border: 1px solid transparent;
  background: var(--primary);
  color: #fff !important;
  font-weight: 700;
  box-shadow: 0 2px 6px color-mix(in srgb, var(--primary) 35%, transparent);
}

.lb-page #blRun:disabled {
  opacity: 0.5;
  background: var(--surface-subtle) !important;
  border: 1px solid var(--border) !important;
  color: var(--text-muted) !important;
  cursor: not-allowed;
  box-shadow: none;
  transform: none;
}

.lb-page #blRun:not(:disabled) {
  background: #10b981 !important;
  border-color: #10b981 !important;
  color: #fff !important;
  box-shadow: 0 2px 8px rgba(16, 185, 129, 0.35);
}

.lb-page #blRun:not(:disabled):hover {
  background: #059669 !important;
  transform: translateY(-1px);
  box-shadow: 0 4px 14px rgba(16, 185, 129, 0.45);
}

.lb-page .su-toolbar button:focus-visible,
.lb-card #blDownload:focus-visible {
  outline: 2px solid var(--primary);
  outline-offset: 2px;
}

/* Dropzone & Browse button */
.lb-drop {
  margin: 4px 14px 14px;
  border: 2px dashed var(--border);
  border-radius: 12px;
  padding: 32px 18px;
  text-align: center;
  background: var(--surface-subtle);
  display: flex;
  flex-direction: column;
  gap: 6px;
  align-items: center;
  cursor: pointer;
  color: var(--text);
  transition: all 0.18s cubic-bezier(0.16, 1, 0.3, 1);
}

.lb-drop span {
  font-size: 12.5px;
  color: var(--text-muted);
}

.lb-drop-icon {
  font-size: 38px;
  line-height: 1;
  transition: transform 0.2s ease;
}

.lb-drop.is-over,
.lb-drop:hover {
  border-color: var(--primary);
  background: color-mix(in srgb, var(--primary) 7%, var(--card-bg));
}

.lb-drop:hover .lb-drop-icon {
  transform: translateY(-2px) scale(1.05);
}

.lb-drop.has-file {
  border-color: #10b981;
  border-style: solid;
  background: color-mix(in srgb, #10b981 8%, var(--card-bg));
}

.lb-drop:focus-visible {
  outline: 2px solid var(--primary);
  outline-offset: 2px;
}

.lb-drop-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  height: 34px;
  padding: 0 16px;
  margin-top: 6px;
  border-radius: 8px;
  border: 1px solid var(--border);
  background: var(--card-bg);
  color: var(--text);
  font: inherit;
  font-size: 12.5px;
  font-weight: 600;
  cursor: pointer;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
  transition: all 0.15s ease;
  pointer-events: none;
}

.lb-drop:hover .lb-drop-btn {
  background: var(--primary);
  border-color: var(--primary);
  color: #fff;
  box-shadow: 0 2px 8px color-mix(in srgb, var(--primary) 35%, transparent);
}

.lb-card #blName.has-file {
  background: color-mix(in srgb, #10b981 12%, var(--card-bg));
  border-color: #10b981;
  color: #10b981;
  font-weight: 700;
}

/* Download Reordered PDF Button */
.lb-download-btn,
.lb-card #blDownload {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  height: 36px;
  padding: 0 18px;
  border-radius: 8px;
  background: #10b981;
  color: #fff !important;
  font: inherit;
  font-size: 13px;
  font-weight: 700;
  text-decoration: none;
  cursor: pointer;
  white-space: nowrap;
  box-shadow: 0 2px 6px rgba(16, 185, 129, 0.3);
  transition: all 0.18s cubic-bezier(0.16, 1, 0.3, 1);
  border: 0;
}

.lb-download-btn:hover,
.lb-card #blDownload:hover {
  background: #059669;
  transform: translateY(-1px);
  box-shadow: 0 4px 14px rgba(16, 185, 129, 0.45);
}

.lb-download-btn:active,
.lb-card #blDownload:active {
  transform: translateY(0);
}

.lb-progress {
  margin: 0 14px 14px;
}

.lb-progress-top {
  display: flex;
  justify-content: space-between;
  font-size: 12px;
  color: var(--text-muted);
  margin-bottom: 4px;
}

.lb-bar {
  height: 10px;
  border-radius: 999px;
  background: var(--surface-subtle);
  border: 1px solid var(--border);
  overflow: hidden;
}

.lb-bar span {
  display: block;
  height: 100%;
  width: 0;
  background: #10b981;
  transition: width 0.25s;
}
/* Item Labels */
.lb-formbar{margin:12px}
form.lb-formbar{height:auto;flex-wrap:wrap}
.lb-in-num{width:74px}
.lb-check{gap:6px;cursor:pointer}.lb-check input{accent-color:#fff}
.lb-print{white-space:nowrap}
.lb-empty{margin:0 12px 14px;padding:28px 12px;text-align:center}
.lb-summary{margin:0 14px 10px;font-size:13px;color:var(--text-muted)}
.lb-summary b{color:var(--text)}
.lb-sheet{display:flex;flex-wrap:wrap;gap:10px;padding:14px;margin:0 12px 14px;border-radius:10px;background:var(--surface-subtle);border:1px solid var(--border)}
.lb-label{background:#fff;color:#000;border-radius:5px;box-shadow:0 1px 5px rgba(0,0,0,.15);box-sizing:border-box;font-family:"Segoe UI",system-ui,Arial,sans-serif}
.lb-small{width:216px;height:120px;padding:7px 10px;display:grid;grid-template-rows:auto 1fr auto auto;row-gap:2px;align-items:center;justify-items:center;text-align:center}
.lb-l-sku{font-size:9pt;font-weight:600}
.lb-l-bc{width:100%;height:58px;display:block}
.lb-l-name{max-width:100%;font-size:9pt;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lb-l-new{font-weight:700;font-size:8pt}
.lb-l-err{font-size:11px;color:#b42727}
.lb-divider{display:flex;align-items:center;justify-content:center;border:1px dashed #b8c0cc;box-shadow:none}
.lb-divider span{font-size:11px;color:#8a94a3;text-transform:uppercase;letter-spacing:.06em}
/* Custom Labels */
.cl-grid{display:grid;grid-template-columns:minmax(300px,5fr) minmax(0,7fr);gap:16px;align-items:start}
.lb-seg{border:0;padding:0;margin:0 0 12px;display:grid;grid-template-columns:1fr 1fr;gap:8px}
.lb-seg legend{font-size:11.5px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);margin-bottom:6px;padding:0}
.lb-seg label{position:relative}
.lb-seg input{position:absolute;opacity:0;inset:0;margin:0;cursor:pointer}
.lb-seg span{display:block;text-align:center;padding:8px;border:1px solid var(--border);border-radius:8px;font-weight:700;background:var(--surface-subtle);color:var(--text)}
.lb-seg input:checked+span{border-color:var(--primary);background:color-mix(in srgb,var(--primary) 12%,var(--card-bg));color:var(--primary)}
.lb-seg input:focus-visible+span{outline:2px solid var(--primary);outline-offset:2px}
.cl-presets{display:grid;gap:6px;margin-bottom:12px}
.cl-preset{font:inherit;text-align:left;padding:8px 11px;border-radius:9px;border:1px solid var(--border);background:var(--card-bg);color:var(--text);cursor:pointer;display:flex;flex-direction:column;gap:1px}
.cl-preset small{font-size:11.5px;color:var(--text-muted)}
.cl-preset:hover{border-color:var(--primary)}
.cl-preset.is-on{border-color:var(--primary);background:color-mix(in srgb,var(--primary) 9%,var(--card-bg))}
.cl-preset-clear{border-style:dashed}
.cl-panel{border:1px solid var(--border);border-radius:10px;padding:10px 12px 2px;margin-bottom:12px;background:var(--surface-subtle)}
.cl-count{background:color-mix(in srgb,#1baf7a 8%,var(--card-bg))}
.cl-range{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap}.cl-range .lb-field{width:96px}.cl-range>span[aria-hidden]{padding-bottom:18px;color:var(--text-muted)}
.cl-range .lb-hint{padding-bottom:16px}
.cl-actions{display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap}.cl-actions .lb-field{width:90px;margin:0}.cl-actions .s2d-act,.cl-actions .s2d-btn-ok{height:36px}
.cl-preview{display:flex;flex-wrap:wrap;gap:8px;align-content:flex-start;padding:14px;margin:0 12px 14px;min-height:240px;max-height:560px;overflow-y:auto;border-radius:10px;background:var(--surface-subtle);border:1px solid var(--border)}
.cl-empty{width:100%;text-align:center;padding:30px 0}
.cl-tile{position:relative;overflow:hidden;flex-shrink:0;border-radius:3px;box-shadow:0 1px 5px rgba(0,0,0,.15);background:#fff}
/* Print Queue */
.pq-tabs{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 12px}
.pq-tab{display:inline-flex;align-items:center;gap:6px;padding:6px 13px;border-radius:999px;border:1px solid var(--border);background:var(--card-bg);color:var(--text);font-weight:600;font-size:13px;text-decoration:none}
.pq-tab b{min-width:22px;text-align:center;font-size:11.5px;padding:1px 7px;border-radius:999px;background:var(--surface-subtle);font-variant-numeric:tabular-nums}
.pq-tab.is-on{color:#fff;border-color:transparent}
.pq-tab.is-on b{background:rgba(255,255,255,.25)}
.pq-tab-waiting.is-on{background:#c98500}.pq-tab-printing.is-on{background:#2a78d6}.pq-tab-complete.is-on{background:#1baf7a}.pq-tab-failed.is-on{background:#d03b3b}.pq-tab-cancelled.is-on{background:#6b7380}
.pq-table td{vertical-align:middle}
.pq-name{max-width:240px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pq-time{white-space:nowrap;font-size:12px;color:var(--text-muted)}
.pq-err{max-width:220px;font-size:12px;color:#c0302f}
.pq-cancel{border-color:#e34948;color:#c0302f}.pq-retry{border-color:#1baf7a;color:#0f7a52}
/* Print Station */
.ps-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}
.ps-dot{display:inline-block;width:13px;height:13px;border-radius:50%;background:#8a94a3;vertical-align:middle;margin-right:4px}
.ps-dot.connected{background:#1baf7a;box-shadow:0 0 8px #1baf7a}.ps-dot.polling{background:#2a78d6;box-shadow:0 0 8px #2a78d6}.ps-dot.error{background:#e34948;box-shadow:0 0 8px #e34948}
@media (prefers-reduced-motion:no-preference){.ps-dot.polling{animation:psPulse 1.6s ease-in-out infinite}}
@keyframes psPulse{50%{opacity:.45}}
.ps-row{display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap}
.ps-grow{flex:1;min-width:180px}.ps-detect{margin-bottom:10px}
.ps-printers{display:flex;gap:6px;flex-wrap:wrap;min-height:30px}
.ps-job{border:1px solid color-mix(in srgb,#2a78d6 45%,var(--border));background:color-mix(in srgb,#2a78d6 8%,var(--card-bg));border-radius:10px;padding:10px 12px;margin-bottom:10px}
.ps-job-k{font-size:11px;font-weight:800;text-transform:uppercase;color:#1d5fc0;margin-bottom:4px}
.ps-job-sku{font-size:16px}.ps-job-name{font-size:13px;color:var(--text-muted);margin:2px 0}
.ps-counters{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:10px 0 12px}
.ps-counters div{border:1px solid var(--border);border-radius:9px;padding:8px;text-align:center;background:var(--surface-subtle)}
.ps-counters b{display:block;font-size:22px;font-variant-numeric:tabular-nums}.ps-counters span{font-size:11px;color:var(--text-muted);text-transform:uppercase}
.ps-ok{color:#0f7a52}.ps-bad{color:#c0302f}
.ps-log{margin:0 14px 14px;height:260px;overflow-y:auto;padding:10px 12px;border-radius:9px;background:#0f1724;color:#cbd5e1;font:12px/1.55 ui-monospace,SFMono-Regular,Consolas,monospace}
.ps-log-ok{color:#4ade80}.ps-log-err{color:#f87171}.ps-log-warn{color:#fbbf24}.ps-log-job{color:#93c5fd}
@media (max-width:900px){.lb-grid,.cl-grid,.ps-grid{grid-template-columns:1fr}}
a.lb-print,.lb-print{text-decoration:none;display:inline-flex;align-items:center;gap:4px;height:32px;padding:0 14px;border-radius:7px}
/* Multiple printers: Print Queue printer panel + filter, Print Station serve table */
.pq-tabbar{display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin:0 0 12px}
.pq-tabbar .pq-tabs{margin:0}
.pq-filter{display:flex;gap:6px;align-items:center;font-size:12.5px;font-weight:600;color:var(--text-muted)}
.pq-filter select{font:inherit;font-size:13px;color:var(--text);background:var(--card-bg);border:1px solid var(--border);border-radius:7px;padding:5px 8px}
.pq-printers{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;padding:0 14px 14px}
.pq-noprinters{grid-column:1/-1;margin:0}
.pq-printer-card{border:1px solid var(--border);border-radius:10px;padding:10px 12px;background:var(--card-bg);display:grid;gap:3px}
.pq-printer-card.is-retired{opacity:.6;border-style:dashed}
.pq-pc-top{display:flex;align-items:center;gap:7px}.pq-pc-top b{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pq-pc-dot{width:10px;height:10px;border-radius:50%;background:#a0a8b4;flex-shrink:0}.pq-pc-dot.on{background:#1baf7a;box-shadow:0 0 6px #1baf7a}
.pq-pc-edit{font:inherit;background:none;border:0;cursor:pointer;padding:2px 4px;border-radius:6px}.pq-pc-edit:hover{background:var(--surface-subtle)}
.pq-pc-meta{font-size:12px;color:var(--text-muted)}
.pq-pc-wait{justify-self:start;margin-top:4px;font:inherit;font-size:12px;font-weight:700;padding:2px 10px;border-radius:999px;border:1px solid var(--border);background:var(--surface-subtle);color:var(--text);cursor:pointer}
.pq-pc-wait:hover{border-color:var(--primary)}
.pq-printer{font-size:12.5px;white-space:nowrap}
.pq-acts{white-space:nowrap}.pq-acts .s2d-act{margin:1px}
.lb-check-row{display:flex;gap:7px;align-items:flex-start;font-size:13px;margin:4px 0 10px}.lb-check-row small{color:var(--text-muted)}
.ps-table td{vertical-align:middle}
.ps-table tr.is-served>td{background:color-mix(in srgb,#1baf7a 7%,var(--card-bg))}
.ps-table select,.ps-table input:not([type=checkbox]){font:inherit;font-size:13px;color:var(--text);background:var(--surface-subtle);border:1px solid var(--border);border-radius:7px;padding:5px 8px;min-width:180px}
.ps-switch{position:relative;display:inline-block;width:38px;height:22px}
.ps-switch input{position:absolute;opacity:0;inset:0;margin:0;cursor:pointer}
.ps-switch span{position:absolute;inset:0;border-radius:999px;background:#a0a8b4;transition:background .15s}
.ps-switch span::after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .15s}
.ps-switch input:checked+span{background:#1baf7a}.ps-switch input:checked+span::after{transform:translateX(16px)}
.ps-switch input:focus-visible+span{outline:2px solid var(--primary);outline-offset:2px}
.ps-check{display:inline-flex;gap:6px;align-items:center;font-size:12.5px;white-space:nowrap}
.ps-elsewhere{display:block;font-size:11px;color:#a86e00}
.ps-now{font-size:12.5px;color:var(--text-muted);white-space:nowrap}
.pq-pc-dot.half{background:#eda100;box-shadow:0 0 6px #eda100}
.pq-pc-warn{color:#a86e00;font-weight:600}
.ps-auto{margin-top:10px}
.ps-problem{margin:10px 0 0;padding:9px 12px;border-radius:9px;border:1px solid color-mix(in srgb,#eda100 55%,var(--border));background:color-mix(in srgb,#eda100 14%,var(--card-bg));font-size:13px;font-weight:600}
.ps-problem.is-ready{border-color:color-mix(in srgb,#2a78d6 45%,var(--border));background:color-mix(in srgb,#2a78d6 9%,var(--card-bg))}
/* Print Station: certificate generator */
.ps-gen{margin-top:10px;border:1px solid var(--border);border-radius:10px;padding:8px 12px;background:var(--surface-subtle)}
.ps-gen summary{cursor:pointer;font-weight:700;font-size:13px}
.ps-gen-form{display:grid;grid-template-columns:1fr 1fr;gap:0 10px;margin-top:10px}
