/* ═══════════════════════════════════════════════════════════
   WMS MODULE — public/wms/wms.css
   Loyalty System | FZQMS
   ═══════════════════════════════════════════════════════════ */

:root {
  --wms-red:        #B91C1C;
  --wms-red-h:      #991B1B;
  --wms-red-light:  #FEF2F2;
  --wms-red-mid:    #FCA5A5;
  --wms-red-dark:   #7F1D1D;
  --wms-surface:    #FFFFFF;
  --wms-bg:         #F9FAFB;
  --wms-bg2:        #F3F4F6;
  --wms-border:     #E5E7EB;
  --wms-border2:    rgba(0,0,0,0.10);
  --wms-text:       #111827;
  --wms-muted:      #6B7280;
  --wms-subtle:     #9CA3AF;
  --wms-r-sm:       8px;
  --wms-r:          14px;
  --wms-r-lg:       20px;
  --wms-shadow:     0 1px 3px rgba(0,0,0,.06), 0 4px 16px rgba(0,0,0,.04);
  --wms-shadow-md:  0 2px 8px rgba(0,0,0,.08), 0 8px 32px rgba(0,0,0,.06);
  --wms-shadow-lg:  0 8px 24px rgba(0,0,0,.10), 0 24px 64px rgba(0,0,0,.08);
  --wms-glass:      rgba(255,255,255,0.88);
}

/* ── Base ── */
#wmsSection { font-family:'Inter',system-ui,sans-serif; font-size:14px; color:var(--wms-text); background:var(--wms-bg); min-height:0; }
#wmsSection[hidden] { display: none !important; }
#wmsSection * { box-sizing:border-box; }
#wmsSection input, #wmsSection select, #wmsSection textarea, #wmsSection button { font-family:inherit; }

#wmsSection input[type="number"],
.wms-mobile-inv input[type="number"] {
  -moz-appearance: textfield;
  appearance: textfield;
}

#wmsSection input[type="number"]::-webkit-outer-spin-button,
#wmsSection input[type="number"]::-webkit-inner-spin-button,
.wms-mobile-inv input[type="number"]::-webkit-outer-spin-button,
.wms-mobile-inv input[type="number"]::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

/* ── Topbar ── */
.wms-topbar {
  background: var(--wms-glass);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border-bottom: 1px solid var(--wms-border);
  padding: 0 32px;
  display: flex;
  align-items: center;
  gap: 2px;
  position: sticky;
  top: 0;
  z-index: 200;
}
.wms-tab {
  padding: 18px 16px 16px;
  font-size: 13.5px;
  font-weight: 500;
  color: var(--wms-muted);
  cursor: pointer;
  border: none;
  background: none;
  border-bottom: 2.5px solid transparent;
  transition: all 0.18s ease;
  display: flex;
  align-items: center;
  gap: 6px;
  white-space: nowrap;
}
.wms-tab:hover { color: var(--wms-text); }
.wms-tab.active { color: var(--wms-red); border-bottom-color: var(--wms-red); }
.wms-tab svg { width:15px; height:15px; stroke-width:1.8; flex-shrink:0; }
.wms-tab-badge {
  background: var(--wms-bg2);
  color: var(--wms-muted);
  border-radius: 9999px;
  padding: 1px 7px;
  font-size: 11px;
  font-weight: 600;
  transition: all 0.18s;
}
.wms-tab.active .wms-tab-badge { background:var(--wms-red-light); color:var(--wms-red); }

/* ── Page ── */
.wms-page { padding: 28px 32px; max-width: 1440px; }
.wms-page-pane { display:none; }
.wms-page-pane.active { display:block; animation: wms-in .22s ease; }
@keyframes wms-in { from { opacity:0; transform:translateY(5px); } to { opacity:1; transform:none; } }

/* ── Stats (kompaktné ~50 % výšky) ── */
.wms-stats {
  display: grid;
  grid-template-columns: repeat(4,1fr);
  gap: 8px;
  margin-bottom: 12px;
}
.wms-stat {
  background: var(--wms-surface);
  border: 1px solid var(--wms-border);
  border-radius: calc(var(--wms-r) * 0.85);
  box-shadow: var(--wms-shadow);
  padding: 8px 12px;
  display: grid;
  grid-template-columns: auto 1fr;
  grid-template-rows: auto auto auto;
  column-gap: 10px;
  row-gap: 0;
  align-items: center;
}
.wms-stat-icon {
  width: 22px;
  height: 22px;
  border-radius: 6px;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 0;
  grid-row: 1 / span 3;
  align-self: center;
  flex-shrink: 0;
}
.wms-stat-icon.red   { background:var(--wms-red-light); color:var(--wms-red); }
.wms-stat-icon.green { background:#ECFDF5; color:#059669; }
.wms-stat-icon.blue  { background:#EFF6FF; color:#2563EB; }
.wms-stat-icon.amber { background:#FFFBEB; color:#D97706; }
.wms-stat-icon.orange { background:#FFF7ED; color:#EA580C; }
.wms-stat-clickable { cursor: pointer; transition: box-shadow .15s, border-color .15s; }
.wms-stat-clickable:hover { box-shadow: 0 0 0 2px rgba(234, 88, 12, .15); border-color: #FDBA74; }
.wms-stat-clickable.has-alert .wms-stat-value { color: #DC2626; }
#wms-pane-products .wms-stats-row { grid-template-columns: repeat(5, 1fr); }
.wms-stat-icon svg   { width: 13px; height: 13px; stroke-width: 2; }
.wms-stat-label { font-size: 10px; font-weight: 500; color: var(--wms-muted); margin-bottom: 0; grid-column: 2; line-height: 1.2; }
.wms-stat-value { font-size: 18px; font-weight: 700; letter-spacing: -0.02em; color: var(--wms-text); grid-column: 2; line-height: 1.1; }
.wms-stat-sub   { font-size: 9.5px; color: var(--wms-subtle); margin-top: 0; grid-column: 2; line-height: 1.2; }

/* ── Card ── */
.wms-card {
  background: var(--wms-surface);
  border: 1px solid var(--wms-border);
  border-radius: var(--wms-r);
  box-shadow: var(--wms-shadow);
  overflow: hidden;
}
.wms-card-header {
  padding: 18px 24px;
  border-bottom: 1px solid var(--wms-border);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
}
.wms-card-title {
  font-size:15px;
  font-weight:600;
  display:flex;
  align-items:center;
  gap:8px;
}
.wms-card-title svg { width:17px; height:17px; color:var(--wms-red); stroke-width:1.8; }

/* ── Toolbar ── */
.wms-toolbar {
  padding: 10px 16px;
  border-bottom: 1px solid var(--wms-border);
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
/* Exporty zákazníkov — dva varianty, každý v dvoch formátoch. Bez menovky nad
   dvojicou by v lište stáli štyri tlačidlá a nebolo by jasné, čo ku čomu patrí. */
.cust-export-grp {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 3px 6px 3px 8px;
  border: 1px solid var(--wms-border);
  border-radius: 8px;
  background: var(--wms-bg);
}
.cust-export-lbl {
  font-size: 11px;
  font-weight: 700;
  color: var(--wms-subtle);
  text-transform: uppercase;
  letter-spacing: .3px;
  margin-right: 2px;
  white-space: nowrap;
}

.wms-search-wrap { position:relative; flex:1; min-width:180px; }
.wms-search-wrap svg { position:absolute; left:11px; top:50%; transform:translateY(-50%); width:14px; height:14px; color:var(--wms-subtle); pointer-events:none; }
.wms-search {
  width:100%; padding:6px 10px 6px 30px;
  border:1px solid var(--wms-border); border-radius:var(--wms-r-sm);
  font-size:12px; background:var(--wms-bg); color:var(--wms-text);
  transition:all .15s; outline:none;
}
.wms-search:focus { border-color:var(--wms-red); box-shadow:0 0 0 3px rgba(185,28,28,.10); background:var(--wms-surface); }
.wms-search::placeholder { color:var(--wms-subtle); }
/* Zoznam zákazníkov — lupa vpravo, neprekáža pri písaní */
#custListToolbar .wms-search-wrap svg {
  left: auto;
  right: 11px;
}
#custListToolbar .wms-search {
  padding-left: 10px;
  padding-right: 30px;
}
.wms-sel {
  padding:6px 24px 6px 9px;
  border:1px solid var(--wms-border); border-radius:var(--wms-r-sm);
  font-size:12px; background:var(--wms-bg); color:var(--wms-text);
  cursor:pointer; appearance:none; outline:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236B7280' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right 9px center;
}
.wms-sel:focus { border-color:var(--wms-red); }

/* ── Buttons ── */
.wms-btn {
  display:inline-flex; align-items:center; gap:5px;
  padding:5px 10px; border-radius:var(--wms-r-sm);
  font-size:12px; font-weight:500; cursor:pointer;
  border:1px solid transparent; transition:background-color .15s ease, color .15s ease, border-color .15s ease;
  white-space:nowrap; text-decoration:none;
  line-height:1.2;
}
.wms-btn svg { width:13px; height:13px; stroke-width:2; }
.wms-btn-primary { background:var(--wms-red); color:#fff; border-color:var(--wms-red); }
.wms-btn-primary:hover { background:var(--wms-red-h); transform:none; box-shadow:none; }
.wms-btn-ghost { background:transparent; color:var(--wms-muted); border-color:var(--wms-border); }
.wms-btn-ghost:hover { background:var(--wms-bg); color:var(--wms-text); transform:none; box-shadow:none; }
.wms-btn-outline { background:transparent; color:var(--wms-red); border-color:var(--wms-red-mid); }
.wms-btn-outline:hover { background:var(--wms-red-light); transform:none; box-shadow:none; }
.wms-btn-danger { background:transparent; color:#DC2626; border-color:#FCA5A5; }
.wms-btn-danger:hover { background:#FEF2F2; transform:none; box-shadow:none; }
.wms-btn-sm { padding:4px 8px; font-size:11.5px; gap:4px; }
.wms-btn-sm svg { width:12px; height:12px; }
.wms-btn-xs { padding:3px 7px; font-size:11px; gap:3px; }
.wms-btn-xs svg { width:11px; height:11px; }
.wms-btn:disabled { opacity:.45; cursor:not-allowed; transform:none !important; box-shadow:none !important; }

/* ── Table ── */
.wms-table-wrap { overflow-x:auto; }
.wms-table { width:100%; border-collapse:collapse; font-size:13.5px; }
.wms-table th {
  padding:6px 10px;
  text-align:left;
  font-size:11px; font-weight:600;
  text-transform:uppercase; letter-spacing:.06em;
  color:var(--wms-muted);
  background:var(--wms-bg);
  border-bottom:1px solid var(--wms-border);
  white-space:nowrap; user-select:none; cursor:pointer;
}
.wms-table th:hover { color:var(--wms-text); }
.wms-table td { padding:7px 10px; border-bottom:1px solid var(--wms-border); vertical-align:middle; }
.wms-table tr:last-child td { border-bottom:none; }
.wms-table tbody tr { transition:background .1s; }
.wms-table tbody tr:hover td { background:rgba(185,28,28,.025); }
.wms-table .col-code { font-family:'DM Mono',monospace; font-size:12.5px; color:var(--wms-muted); }
.wms-table .col-actions { display:flex; gap:6px; align-items:center; }

/* ── Badges ── */
.wms-badge {
  display:inline-flex; align-items:center; gap:3px;
  padding:3px 8px; border-radius:9999px;
  font-size:11.5px; font-weight:500;
}
.badge-green  { background:#ECFDF5; color:#065F46; }
.badge-red    { background:var(--wms-red-light); color:var(--wms-red-dark); }
.badge-gray   { background:var(--wms-bg2); color:#374151; }
.badge-amber  { background:#FFFBEB; color:#92400E; }
.badge-yellow { background:#FFFBEB; color:#92400E; }
.badge-blue   { background:#EFF6FF; color:#1E40AF; }
.badge-purple { background:#F5F3FF; color:#5B21B6; }

/* ── Pagination ── */
.wms-pagination {
  padding:10px 16px;
  border-top:1px solid var(--wms-border);
  display:flex; align-items:center; justify-content:space-between;
  font-size:12px; color:var(--wms-muted);
}
.wms-page-btns { display:flex; gap:4px; }
.wms-pg-btn {
  padding:3px 8px; border:1px solid var(--wms-border);
  border-radius:0.375rem; font-size:11.5px; cursor:pointer;
  background:var(--wms-surface); color:var(--wms-text);
  transition:background-color .13s, color .13s, border-color .13s; font-family:inherit;
  line-height:1.2; min-width:1.75rem;
}
.wms-pg-btn:hover { background:var(--wms-bg); }
.wms-pg-btn.active { background:var(--wms-red); color:#fff; border-color:var(--wms-red); }
.wms-pg-btn:disabled { opacity:.4; cursor:default; }

/* ── Modal ── */
.wms-overlay {
  position:fixed; inset:0;
  background:rgba(0,0,0,.42);
  z-index:1000;
  display:flex; align-items:flex-start; justify-content:center;
  padding:32px 16px;
  opacity:0; pointer-events:none;
  transition:opacity .2s;
  overflow-y:auto;
  backdrop-filter:blur(4px);
}
.wms-overlay.open { opacity:1; pointer-events:all; }
/*
 * ZATVORENÉ OKNO SA NEVYKRESĽUJE (25. 9. 2026).
 *
 * Zatvorené okná boli skryté len cez `opacity:0`, takže každé z ~20 okien
 * WMS ostávalo na obrazovke ako neviditeľná vrstva cez celú plochu
 * s `backdrop-filter: blur` (a skenery EAN v nich stále animovali čiaru).
 * Na obrazovke GS5 v telefóne to bolo 38 vrstiev. Keď Zoltán na iPhone
 * obraz zväčšil prstami, Safari ich prekresľoval vo vyššom rozlíšení,
 * minul pamäť a kartu zabil — stránka sa načítala odznova (čierna skrinka:
 * `pagehide: false`, 6 s po výsledku exportu).
 *
 * `visibility:hidden` vrstvu z kreslenia vyradí a animácia zatvárania ostáva:
 * pri zatváraní sa viditeľnosť prepne až po dobehnutí priehľadnosti.
 */
.wms-overlay { transition: opacity .2s, visibility 0s linear .2s; }
.wms-overlay.open { transition: opacity .2s, visibility 0s; }
.wms-overlay:not(.open) {
  visibility: hidden;
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
}
.wms-overlay:not(.open) * { animation-play-state: paused; }
/* Skladová karta z Inventúry — musí byť nad skrytými pane-mi (append na body) */
#wms-stock-batch-modal.wms-overlay { z-index: 10080; }
.wms-modal {
  background:var(--wms-surface);
  border-radius:var(--wms-r-lg);
  box-shadow:var(--wms-shadow-lg);
  width:100%; max-width:900px;
  transform:translateY(14px);
  transition:transform .2s ease;
  overflow:hidden;
  margin:auto;
}
.wms-overlay.open .wms-modal { transform:translateY(0); }
.wms-modal-lg { max-width:1100px; }
.wms-modal-sm { max-width:560px; }
.wms-modal-header {
  padding:22px 28px 20px;
  border-bottom:1px solid var(--wms-border);
  display:flex; align-items:center; justify-content:space-between;
  background: linear-gradient(135deg, var(--wms-red-light) 0%, transparent 60%);
}
.wms-modal-title { font-size:16px; font-weight:600; display:flex; align-items:center; gap:8px; }
.wms-modal-title svg { color:var(--wms-red); width:18px; height:18px; stroke-width:1.8; }
.wms-modal-close {
  width:32px; height:32px; border-radius:8px;
  border:none; background:var(--wms-bg); cursor:pointer;
  display:flex; align-items:center; justify-content:center;
  color:var(--wms-muted); transition:all .13s;
}
.wms-modal-close:hover { background:var(--wms-red-light); color:var(--wms-red); }
.wms-modal-close svg { width:16px; height:16px; stroke-width:2; }
.wms-modal-body { padding:28px; max-height:75vh; overflow-y:auto; }
.wms-modal-footer {
  padding:18px 28px;
  border-top:1px solid var(--wms-border);
  display:flex; justify-content:flex-end; gap:10px;
  background:var(--wms-bg);
}

/* ── Form ── */
.wms-form-section { margin-bottom:28px; }
.wms-form-section:last-child { margin-bottom:0; }
.wms-fs-title {
  font-size:10.5px; font-weight:700;
  text-transform:uppercase; letter-spacing:.1em;
  color:var(--wms-red);
  margin-bottom:14px;
  padding-bottom:8px;
  border-bottom:1px solid var(--wms-border);
  display:flex; align-items:center; gap:6px;
}
.wms-fs-title svg { width:13px; height:13px; stroke-width:2; }
.wms-grid-3 { display:grid; grid-template-columns:repeat(3,1fr); gap:14px 18px; }
.wms-grid-2 { display:grid; grid-template-columns:repeat(2,1fr); gap:14px 18px; }
.wms-grid-4 { display:grid; grid-template-columns:repeat(4,1fr); gap:14px 18px; }
.wms-grid-5 { display:grid; grid-template-columns:repeat(5,1fr); gap:14px 18px; }
.wms-span-2 { grid-column:span 2; }
.wms-span-3 { grid-column:span 3; }
.wms-span-4 { grid-column:span 4; }
.wms-fg { display:flex; flex-direction:column; gap:5px; }
.wms-label { font-size:12px; font-weight:500; color:var(--wms-muted); }
.wms-label .req { color:var(--wms-red); margin-left:2px; }
.wms-input, .wms-textarea, .wms-form-sel {
  padding:6px 9px;
  border:1px solid var(--wms-border); border-radius:var(--wms-r-sm);
  font-size:13px; font-family:inherit;
  color:var(--wms-text); background:var(--wms-surface);
  transition:border-color .15s, box-shadow .15s; outline:none; width:100%;
}
.wms-input:focus, .wms-textarea:focus, .wms-form-sel:focus {
  border-color:var(--wms-red);
  box-shadow:0 0 0 3px rgba(185,28,28,.10);
}
.wms-input::placeholder, .wms-textarea::placeholder { color:var(--wms-subtle); }
.wms-textarea { resize:vertical; min-height:70px; }
.wms-form-sel {
  appearance:none; cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236B7280' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right 10px center; padding-right:30px;
}
.wms-input-prefix { position:relative; }
.wms-input-prefix .prefix-symbol {
  position:absolute; left:10px; top:50%; transform:translateY(-50%);
  font-size:13px; color:var(--wms-muted); pointer-events:none;
}
.wms-input-prefix .wms-input { padding-left:22px; }
.wms-input-suffix { position:relative; }
.wms-input-suffix .suffix-symbol {
  position:absolute; right:10px; top:50%; transform:translateY(-50%);
  font-size:12px; color:var(--wms-muted); pointer-events:none;
}
.wms-input-suffix .wms-input { padding-right:32px; }

/* ── Checkboxes ── */
.wms-checks { display:flex; flex-wrap:wrap; gap:8px 18px; margin-top:2px; }
.wms-check { display:flex; align-items:center; gap:7px; font-size:13.5px; cursor:pointer; user-select:none; }
.wms-check input[type=checkbox] { width:15px; height:15px; accent-color:var(--wms-red); cursor:pointer; }

/* ── Computed field ── */
.wms-computed {
  background:var(--wms-bg2); border:1px dashed var(--wms-border);
  border-radius:var(--wms-r-sm); padding:9px 11px;
  font-size:13.5px; font-weight:600; color:var(--wms-text);
  min-height:40px; display:flex; align-items:center;
}
.wms-computed.positive { color:#059669; }
.wms-computed.negative { color:#DC2626; }

/* Produkt — sekcia cien */
.wms-price-group { margin-top: 12px; }
.wms-price-group:first-of-type { margin-top: 0; }
.wms-price-group-label {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--wms-muted);
  margin-bottom: 8px;
}
.wms-price-row .wms-fg {
  min-height: 62px;
  justify-content: flex-start;
}
.wms-price-row .wms-input-price,
.wms-computed-price {
  text-align: right;
  font-variant-numeric: tabular-nums;
}
.wms-computed-price {
  justify-content: flex-end;
  min-height: 38px;
  padding: 6px 11px;
  background: var(--wms-bg2);
  border: 1px solid var(--wms-border);
  border-radius: var(--wms-r-sm);
}
.wms-price-row .wms-form-sel,
.wms-price-row .wms-input-suffix .wms-input {
  min-height: 38px;
  box-sizing: border-box;
}
#fp-margin-display.positive { color: #059669; background: #ECFDF5; border-color: #A7F3D0; }
#fp-margin-display.negative { color: #DC2626; background: #FEF2F2; border-color: #FECACA; }

/* ── External codes ── */
.wms-ext-codes { display:flex; flex-direction:column; gap:8px; }
.wms-ext-code-row { display:flex; align-items:center; gap:8px; }
.wms-ext-code-label { font-size:12px; font-weight:600; color:var(--wms-muted); min-width:40px; }
.wms-ext-code-row .wms-input { flex:1; }

/* Karta môže mať viac kódov jedného systému (staré PLU + prečíslované z CSB).
   Editor ich musí ukázať všetky — nevykreslený kód sa pri uložení stratí. */
.wms-ext-code-stack { display:flex; flex-direction:column; gap:6px; flex:1; min-width:0; }
.wms-ext-code-item { display:flex; align-items:center; gap:6px; }
.wms-ext-code-item .wms-input { flex:1; min-width:0; }
/* `plain-btn` na tlačidlách je povinné — prémiová téma inak prefarbí každý
   <button> na plnú červenú a „+ ďalší kód" vyzerá ako hlavná akcia. */
.wms-ext-code-add {
  align-self:flex-start; background:none; border:none; cursor:pointer; padding:2px 0;
  font-size:11.5px; font-weight:600; color:var(--wms-red-dark);
}
.wms-ext-code-add:hover { text-decoration:underline; }
.wms-ext-code-del {
  border:1px solid var(--wms-border); background:var(--wms-card, #fff); border-radius:7px;
  width:28px; height:28px; line-height:1; cursor:pointer; color:var(--wms-muted); flex:0 0 auto;
}
.wms-ext-code-del:hover { color:#DC2626; border-color:#FECACA; background:#FEF2F2; }

/* ── Category Tree ── */
.wms-tree { padding:8px; }
.wms-tree-main {
  display:flex; align-items:center; gap:8px;
  padding:9px 12px; border-radius:9px;
  cursor:pointer; transition:background .12s;
  font-weight:500; font-size:13.5px;
}
.wms-tree-main:hover { background:var(--wms-bg); }
.wms-tree-main.open { background:var(--wms-red-light); color:var(--wms-red-dark); }
.wms-tree-code { font-family:monospace; font-size:11px; color:var(--wms-subtle); min-width:26px; }
.wms-tree-arrow { margin-left:auto; transition:transform .18s; color:var(--wms-subtle); }
.wms-tree-arrow svg { width:14px; height:14px; stroke-width:2; }
.wms-tree-main.open .wms-tree-arrow { transform:rotate(90deg); }
.wms-tree-count {
  font-size:11px; font-weight:600; border-radius:9999px;
  padding:1px 7px; background:var(--wms-bg2); border:1px solid var(--wms-border); color:var(--wms-muted);
}
.wms-tree-main.open .wms-tree-count { background:rgba(185,28,28,.12); border-color:var(--wms-red-mid); color:var(--wms-red); }
.wms-tree-subs { padding-left:24px; display:none; }
.wms-tree-subs.open { display:block; }
.wms-tree-sub {
  display:flex; align-items:center; gap:8px;
  padding:7px 12px; border-radius:8px;
  cursor:pointer; transition:background .12s;
  font-size:13px; color:var(--wms-muted);
}
.wms-tree-sub:hover { background:var(--wms-bg); color:var(--wms-text); }
.wms-tree-sub.active { background:var(--wms-red-light); color:var(--wms-red-dark); font-weight:500; }

/* ── Import / Drop zone ── */
.wms-dropzone {
  border:2px dashed var(--wms-border);
  border-radius:var(--wms-r);
  padding:52px 32px;
  text-align:center;
  cursor:pointer; transition:all .18s;
  background:var(--wms-bg);
}
.wms-dropzone:hover, .wms-dropzone.dragover {
  border-color:var(--wms-red); background:var(--wms-red-light);
}
.wms-dz-icon { color:var(--wms-subtle); margin-bottom:14px; transition:color .18s; }
.wms-dz-icon svg { width:40px; height:40px; stroke-width:1.4; }
.wms-dropzone:hover .wms-dz-icon, .wms-dropzone.dragover .wms-dz-icon { color:var(--wms-red); }
.wms-dz-title { font-size:15px; font-weight:500; margin-bottom:6px; }
.wms-dz-sub { font-size:13px; color:var(--wms-muted); }
.wms-dz-link { color:var(--wms-red); font-weight:500; text-decoration:none; cursor:pointer; }

/* ── Import Preview ── */
.wms-import-preview { display:none; margin-top:24px; }
.wms-import-preview.visible { display:block; }
@keyframes wms-sales-indet {
  0% { transform: translateX(-100%); width: 35%; }
  50% { transform: translateX(120%); width: 45%; }
  100% { transform: translateX(280%); width: 35%; }
}
.row-ok  td:first-child { box-shadow:inset 3px 0 0 #10B981; }
.row-dup td:first-child { box-shadow:inset 3px 0 0 #F59E0B; }
.row-err td:first-child { box-shadow:inset 3px 0 0 #EF4444; }

/* ── Supplier card ── */
.wms-supplier-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(280px,1fr)); gap:16px; padding:24px; }
.wms-supplier-table { font-size:13px; }
.wms-supplier-table code { font-size:12px; }
.wms-sup-row:hover td { background:var(--wms-surface-2, #f8fafc); }
.wms-sup-card {
  background:var(--wms-surface); border:1px solid var(--wms-border);
  border-radius:var(--wms-r); padding:20px;
  transition:all .18s; cursor:pointer;
}
.wms-sup-card:hover { border-color:var(--wms-red-mid); box-shadow:var(--wms-shadow-md); transform:translateY(-2px); }
.wms-sup-avatar {
  width:44px; height:44px; border-radius:12px;
  background:var(--wms-red-light); color:var(--wms-red);
  display:flex; align-items:center; justify-content:center;
  font-size:16px; font-weight:700; margin-bottom:12px;
}
.wms-sup-name { font-size:14px; font-weight:600; margin-bottom:4px; }
.wms-sup-address { font-size:12.5px; color:var(--wms-muted); margin-bottom:10px; }
.wms-sup-meta { display:flex; gap:8px; flex-wrap:wrap; }

/* ── Toast ── */
.wms-toasts {
  position:fixed; bottom:24px; right:24px;
  z-index:9999; display:flex; flex-direction:column; gap:8px;
  pointer-events:none;
}
.wms-toast {
  background:#1A1A18; color:#fff;
  padding:12px 18px; border-radius:10px;
  font-size:13.5px; display:flex; align-items:center; gap:10px;
  box-shadow:0 4px 20px rgba(0,0,0,.22);
  animation:wms-in .22s ease both;
  pointer-events:all; max-width:340px;
}
.wms-toast svg { width:16px; height:16px; stroke-width:2; flex-shrink:0; }
.wms-toast.t-ok   { border-left:3px solid #10B981; }
.wms-toast.t-err  { border-left:3px solid #EF4444; }
.wms-toast.t-info { border-left:3px solid #3B82F6; }
.wms-toast.t-warn { border-left:3px solid #F59E0B; }

/* ── Skeleton ── */
.wms-skeleton {
  background: linear-gradient(90deg, var(--wms-bg2) 25%, var(--wms-border) 50%, var(--wms-bg2) 75%);
  background-size: 200% 100%;
  animation: wms-shimmer 1.4s ease infinite;
  border-radius:6px;
}
@keyframes wms-shimmer { 0%{background-position:200% 0} 100%{background-position:-200% 0} }

/* ── Empty state ── */
.wms-empty { padding:64px 32px; text-align:center; color:var(--wms-muted); }
.wms-empty svg { width:48px; height:48px; stroke-width:1.2; margin-bottom:14px; color:var(--wms-subtle); }
.wms-empty-title { font-size:15px; font-weight:500; color:var(--wms-text); margin-bottom:6px; }
.wms-empty-sub { font-size:13px; }

/* ── Divider ── */
.wms-divider { height:1px; background:var(--wms-border); margin:20px 0; }

/* ── Produkty — fixný toolbar, scroll tabuľky ── */
#wms-pane-products.wms-page-pane.active {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
  height: auto;
  overflow: hidden;
  animation: wms-in .22s ease;
}
#wms-pane-products .wms-page {
  display: flex;
  flex-direction: column;
  flex: 1;
  overflow: hidden;
  max-width: 100%;
  padding: 12px 16px;
  min-height: 0;
}
#wms-pane-products .wms-stats-row,
#wms-pane-products .wms-stats {
  flex-shrink: 0;
  margin-bottom: 8px;
}
#wms-pane-products .wms-card {
  flex: 1;
  display: flex;
  flex-direction: column;
  min-height: 0;
  overflow: hidden;
}
#wms-pane-products .wms-card-header,
#wms-pane-products .wms-toolbar,
#wms-pane-products .wms-pagination {
  flex-shrink: 0;
}
#wms-pane-products .wms-table-wrap {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  overflow-x: auto;
  border-top: 1px solid var(--wms-border);
}
/*
 * OBAL ZOZNAMU A PRACOVNEJ TABUĽKY (24. 9. 2026) musí pokračovať vo flex reťazi
 * karty. Obyčajný blok `#wms-prod-zoznam` vzal tabuľke výšku, karta s
 * `overflow: hidden` ju orezala a zoznam tovaru sa prestal dať rolovať.
 * Okno so zlúčenými kartami sa nesmie zmačknúť (flex-shrink 0).
 */
#wms-pane-products #wms-prod-zoznam {
  flex: 1;
  display: flex;
  flex-direction: column;
  min-height: 0;
  overflow: hidden;
}
#wms-pane-products #wms-prod-zoznam[hidden],
#wms-pane-products #wms-prod-tabulka[hidden] { display: none !important; }
#wms-pane-products #wms-prod-tabulka {
  flex: 1;
  display: flex;
  flex-direction: column;
  min-height: 0;
  overflow: hidden;
}
#wms-pane-products #wms-prod-tabulka .tt-wrap {
  flex: 1;
  min-height: 0;
  max-height: none;
}
#wms-pane-products #wms-products-zlucene { flex-shrink: 0; }
/* Zlúčené karty zodpovedajúce hľadaniu: jeden riadok, podrobnosti ako plávajúci panel nad zoznamom */
.wms-zlucene {
  position: relative;
  margin: 0 0 8px;
  font-size: 12.5px;
  line-height: 1.45;
  z-index: 20;
}
.wms-zlucene-riadok {
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 30px;
  padding: 4px 6px 4px 10px;
  border: 1px solid #bfdbfe;
  border-radius: 8px;
  background: #eff6ff;
  color: #1e3a8a;
  cursor: pointer;
  user-select: none;
}
.wms-zlucene-riadok:hover { background: #e3eeff; }
.wms-zlucene-riadok:focus-visible { outline: 2px solid #2563eb; outline-offset: 1px; }
.wms-zlucene-ikona {
  flex: 0 0 auto;
  width: 16px; height: 16px;
  border-radius: 50%;
  background: #2563eb;
  color: #fff;
  font: 700 11px/16px Georgia, serif;
  text-align: center;
}
.wms-zlucene-text {
  flex: 1 1 auto;
  min-width: 0;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}
.wms-zlucene-text s, .wms-zlucene-panel s { color: #64748b; font-family: ui-monospace, monospace; }
.wms-zlucene-par { font-family: ui-monospace, monospace; font-size: 12px; }
.wms-zlucene-viac { flex: 0 0 auto; color: #2563eb; font-weight: 600; }
.wms-zlucene.otvorene .wms-zlucene-viac { visibility: hidden; }
.wms-zlucene-zavri {
  flex: 0 0 auto;
  width: 22px; height: 22px;
  border-radius: 6px;
  color: #64748b;
  font-size: 17px;
  line-height: 22px;
  text-align: center;
}
.wms-zlucene-zavri:hover { background: #dbeafe; color: #1e3a8a; }
.wms-zlucene-panel {
  display: none;
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  width: min(820px, 100%);
  max-height: 50vh;
  overflow: auto;
  padding: 10px 12px;
  border: 1px solid #bfdbfe;
  border-radius: 8px;
  background: #fff;
  box-shadow: 0 12px 28px rgba(15, 23, 42, .16);
}
.wms-zlucene.otvorene .wms-zlucene-panel { display: block; }
.wms-zlucene-panel p { margin: 0 0 8px; color: #475569; max-width: 70ch; }
.wms-zlucene-panel table { border-collapse: collapse; width: 100%; }
.wms-zlucene-panel th { text-align: left; font-weight: 500; color: #64748b; padding: 2px 10px 4px 0; border-bottom: 1px solid #e2e8f0; }
.wms-zlucene-panel td { padding: 4px 10px 4px 0; border-bottom: 1px solid #f1f5f9; vertical-align: top; }
.wms-zlucene-sipka { color: #94a3b8; }
.wms-zlucene-dna { color: #64748b; white-space: nowrap; font-variant-numeric: tabular-nums; }
.wms-zlucene-ciel { color: #1d4ed8; font-weight: 700; font-family: ui-monospace, monospace; cursor: pointer; text-decoration: underline; text-underline-offset: 2px; }
@media (max-width: 700px) {
  .wms-zlucene-viac { display: none; }
  .wms-zlucene-panel { width: 100%; }
}
@media (max-width: 700px) {
  #wms-pane-products #wms-prod-zoznam,
  #wms-pane-products #wms-prod-tabulka {
    flex: 0 0 auto;
    overflow: visible;
  }
  #wms-pane-products #wms-prod-tabulka .tt-wrap { max-height: 75vh; }
}

/* Import predaja + nezaučtované SKU — plná šírka, scroll rieši admin-sidebar.css */
#wms-pane-sales-import.wms-page-pane.active {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
  height: auto;
  overflow: visible;
  animation: wms-in .22s ease;
}
#wms-pane-sales-import .wms-sales-import-page,
#wms-pane-sales-import .wms-page {
  display: block;
  width: 100%;
  max-width: 100%;
  min-height: auto;
  overflow: visible;
  padding: 12px 16px 24px;
  box-sizing: border-box;
}
#wms-pane-sales-import .wms-table-wrap {
  overflow-x: auto;
  max-width: 100%;
}
#wms-import-accounting-card .wms-table-wrap {
  width: 100%;
  max-height: none;
  overflow-x: auto;
}

#wms-pane-products .wms-table thead th {
  position: sticky;
  top: 0;
  background: #fff;
  z-index: 2;
  box-shadow: 0 1px 0 var(--wms-border);
}

/* Dodávateľský cenník — rovnaký scroll ako Tovar (tabuľka + sticky paginácia) */
#wms-pane-supplier-prices.wms-page-pane.active {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
  height: auto;
  overflow: hidden;
  animation: wms-in .22s ease;
}
#wms-pane-supplier-prices .wms-page {
  display: flex;
  flex-direction: column;
  flex: 1;
  overflow: hidden;
  max-width: 100%;
  padding: 12px 16px;
  min-height: 0;
  box-sizing: border-box;
}
#wms-pane-supplier-prices .wms-card {
  flex: 1;
  display: flex;
  flex-direction: column;
  min-height: 0;
  overflow: hidden;
}
#wms-pane-supplier-prices .wms-card-header,
#wms-pane-supplier-prices .wms-toolbar,
#wms-pane-supplier-prices #wms-spl-kpi,
#wms-pane-supplier-prices .wms-pagination,
#wms-pane-supplier-prices > .wms-page > .wms-card > p.muted {
  flex-shrink: 0;
}
#wms-pane-supplier-prices .wms-table-wrap {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  overflow-x: auto;
  border-top: 1px solid var(--wms-border);
  -webkit-overflow-scrolling: touch;
}
#wms-pane-supplier-prices .wms-table thead th {
  position: sticky;
  top: 0;
  background: #fff;
  z-index: 2;
  box-shadow: 0 1px 0 var(--wms-border);
}

/* ── Produkt modal — celá obrazovka (mimo .card kvôli backdrop-filter) ── */
#wms-product-modal.wms-overlay {
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  max-width: 100vw;
  max-height: 100vh;
  margin: 0;
  padding: 0;
  border-radius: 0;
  overflow: hidden;
  z-index: 1000;
  background: #fff;
  display: none;
  flex-direction: column;
  align-items: stretch;
  justify-content: stretch;
  opacity: 1;
  pointer-events: none;
  backdrop-filter: none;
  box-shadow: none;
}
#wms-product-modal.wms-overlay.open {
  display: flex;
  pointer-events: all;
}
#wms-product-modal .wms-modal,
#wms-product-modal .wms-modal-fullscreen {
  position: relative;
  width: 100%;
  height: 100%;
  max-width: none;
  max-height: none;
  margin: 0;
  border-radius: 0;
  box-shadow: none;
  transform: none;
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  background: transparent;
}
#wms-product-modal .wms-modal-header {
  position: sticky;
  top: 0;
  flex-shrink: 0;
  background: #fff;
  z-index: 10;
  padding: 16px 32px;
  border-bottom: 1px solid var(--wms-border);
  display: flex;
  align-items: center;
  justify-content: space-between;
}
#wms-product-modal .wms-modal-body {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  max-height: none;
  padding: 24px 32px;
  box-sizing: border-box;
}
#wms-product-modal .wms-modal-footer {
  position: sticky;
  bottom: 0;
  flex-shrink: 0;
  background: #fff;
  z-index: 10;
  padding: 12px 32px;
  border-top: 1px solid var(--wms-border);
  display: flex;
  justify-content: flex-end;
  gap: 10px;
}

#wms-product-modal .wms-modal-header-actions {
  display: flex;
  align-items: center;
  gap: 8px;
}

.wms-product-photos-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
  gap: 8px;
  margin-top: 8px;
}

.wms-product-photo-card {
  display: block;
  border: 1px solid var(--wms-border);
  border-radius: 8px;
  overflow: hidden;
  background: #f8fafc;
  text-decoration: none;
}

.wms-product-photo-card img {
  width: 100%;
  height: 100px;
  object-fit: cover;
  display: block;
}

.wms-product-photo-type {
  display: block;
  font-size: 10px;
  padding: 4px 6px;
  color: var(--wms-muted);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.wms-ext-code-ean {
  align-items: center;
}

#wms-product-modal .form-grid,
#wms-product-modal .wms-grid-2 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}
#wms-product-modal .form-grid.cols-3,
#wms-product-modal .wms-grid-3 {
  grid-template-columns: 1fr 1fr 1fr;
}
#wms-product-modal .form-grid.full {
  grid-column: 1 / -1;
}
#wms-product-modal .wms-span-2 {
  grid-column: span 2;
}
#wms-product-modal .wms-span-3 {
  grid-column: span 3;
}
@media (max-width: 900px) {
  #wms-product-modal .wms-grid-3,
  #wms-product-modal .form-grid.cols-3 {
    grid-template-columns: 1fr 1fr;
  }
}
@media (max-width: 640px) {
  #wms-product-modal .wms-grid-2,
  #wms-product-modal .wms-grid-3,
  #wms-product-modal .form-grid,
  #wms-product-modal .form-grid.cols-3 {
    grid-template-columns: 1fr;
  }
  #wms-product-modal .wms-modal-body {
    padding: 16px;
  }
  #wms-product-modal .wms-modal-header,
  #wms-product-modal .wms-modal-footer {
    padding-left: 16px;
    padding-right: 16px;
  }
}

/* ── Responsive ── */
@media(max-width:1100px) {
  .wms-stats { grid-template-columns:repeat(2,1fr); }
}
@media(max-width:900px) {
  .wms-grid-3 { grid-template-columns:repeat(2,1fr); }
  .wms-grid-4 { grid-template-columns:repeat(2,1fr); }
  .wms-grid-5 { grid-template-columns:repeat(2,1fr); }
  .wms-span-3 { grid-column:span 2; }
}
@media(max-width:640px) {
  .wms-topbar { padding:0 12px; overflow-x:auto; }
  .wms-page { padding:16px; }
  .wms-stats { grid-template-columns:1fr 1fr; }
  .wms-grid-3,.wms-grid-2,.wms-grid-4,.wms-grid-5 { grid-template-columns:1fr; }
  .wms-span-2,.wms-span-3,.wms-span-4 { grid-column:span 1; }
  .wms-modal-header { padding:16px 18px 14px; }
  .wms-modal-body { padding:18px; }
  .wms-modal-footer { padding:14px 18px; }
}

/* ── Návrh objednávok ── */
#wms-pane-orders.wms-page-pane.active {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
  height: auto;
  overflow: hidden;
  padding: 0;
}

#wms-pane-orders .wms-page {
  display: flex;
  flex-direction: column;
  height: 100%;
  overflow: hidden;
  max-width: 100%;
  padding: 12px 16px 0;
}

#wms-orders-header {
  flex-shrink: 0;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--wms-border);
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.wms-orders-search-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  position: relative;
}
.wms-orders-search-row .wms-search {
  flex: 1 1 240px;
  min-width: 200px;
  max-width: 420px;
}
.wms-orders-quiet-toggle {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  color: #4b5563;
  white-space: nowrap;
  cursor: pointer;
  margin: 0;
}
.wms-orders-search-hits {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  z-index: 40;
  width: min(420px, 94vw);
  max-height: 280px;
  overflow: auto;
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 8px;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.1);
}
.wms-orders-hit {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 2px;
  width: 100%;
  padding: 8px 12px;
  border: 0;
  border-bottom: 1px solid #f3f4f6;
  background: #fff;
  text-align: left;
  cursor: pointer;
  font: inherit;
  color: #111827;
}
.wms-orders-hit:hover { background: #f9fafb; }
.wms-orders-hit-name { font-weight: 500; font-size: 13px; }
.wms-orders-hit-meta { font-size: 11px; color: #6b7280; }
.wms-orders-hit-new { color: #b45309; font-weight: 600; margin-left: 4px; }

/* Vzhľad položiek ponúk rieši .plain-btn v istermeat-ui.css (globálne pravidlá
   pre <button> ju vynímajú) — tu len doladenie textov v ponuke návrhu OBJ. */
.wms-orders-hit-name { color: #111827; }
.wms-orders-hit-meta { color: #6b7280; }

.wms-orders-cat-row td {
  background: #f3f4f6 !important;
  color: #374151;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  padding: 6px 10px !important;
  border-bottom: 1px solid #e5e7eb;
}
.wms-orders-cat-row--quiet td {
  background: #fafafa !important;
  color: #6b7280;
}
.wms-orders-quiet-head td {
  background: #f9fafb !important;
  color: #4b5563;
  font-size: 12px;
  font-weight: 600;
  padding: 8px 10px !important;
  border-top: 2px solid #e5e7eb;
}
.wms-orders-quiet-hint td {
  background: #fafafa !important;
  color: #6b7280;
  font-size: 12px;
  padding: 10px !important;
  text-align: center;
}
.wms-orders-row-quiet td {
  color: #6b7280;
  background: #fcfcfc;
}

#wms-orders-actions {
  flex-shrink: 0;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  padding: 6px 0;
  gap: 10px;
  flex-wrap: wrap;
}

.wms-orders-actions-left {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  min-width: 0;
  flex: 1 1 280px;
}

.wms-orders-sales-gap {
  display: inline-block;
  margin: 0;
  max-width: min(720px, 100%);
  color: #92400e;
  vertical-align: middle;
}
.wms-orders-sales-gap[hidden] { display: none !important; }
.wms-orders-sales-gap-sum {
  list-style: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  margin: 0;
  padding: 0;
  border-radius: 999px;
  border: 1px solid #f59e0b;
  background: #fffbeb;
  color: #b45309;
  font-size: 12px;
  font-weight: 800;
  line-height: 1;
  cursor: pointer;
  user-select: none;
}
.wms-orders-sales-gap-sum::-webkit-details-marker { display: none; }
.wms-orders-sales-gap-sum::marker { content: ''; }
.wms-orders-sales-gap-sum:hover {
  background: #fef3c7;
  border-color: #d97706;
}
.wms-orders-sales-gap[open] .wms-orders-sales-gap-sum {
  background: #fde68a;
}
.wms-orders-sales-gap-body {
  margin-top: 6px;
  font-size: 12px;
  line-height: 1.35;
  color: #92400e;
  background: #fffbeb;
  border: 1px solid #fde68a;
  border-radius: 6px;
  padding: 6px 10px;
}

.wms-orders-actions-tools {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  justify-content: flex-end;
}

.wms-orders-inline-lbl {
  font-size: 12px;
  color: var(--wms-muted);
  white-space: nowrap;
  margin: 0;
}

.wms-orders-inline-inp {
  width: 64px !important;
  padding: 4px 6px !important;
}

.wms-orders-col-settings {
  position: fixed;
  /* bez border-box sa odsadenie a rámik pripočítajú k max-height a panel
     prečnieva pod dolný okraj okna (nameraných 559 px pri limite 533) */
  box-sizing: border-box;
  z-index: 10090;
  background: #fff;
  border: 1px solid var(--wms-border, #e5e7eb);
  border-radius: 10px;
  box-shadow: 0 8px 30px rgba(0, 0, 0, 0.12);
  width: min(440px, 94vw);
  max-height: min(72vh, 580px);
  /* panel sa neposúva ako celok — posúva sa len zoznam, hlavička s tlačidlami
     ostáva na mieste, inak sa pri 18 stĺpcoch k „Hotovo" nedá dostať */
  overflow: hidden;
  display: flex;
  flex-direction: column;
  padding: 12px 14px;
}
.wms-orders-col-settings-head { flex: 0 0 auto; }
.wms-orders-col-settings-actions {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--wms-border, #e5e7eb);
}
.wms-orders-col-settings .wms-orders-col-settings-list {
  flex: 1 1 auto;
  overflow-y: auto;
  margin-top: 8px;
  padding-right: 2px;
}
.wms-orders-col-settings h4 {
  margin: 0 0 8px;
  font-size: 14px;
}
.wms-orders-col-settings-list {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.wms-orders-col-settings-row {
  display: grid;
  grid-template-columns: 18px 1fr 64px 28px 28px;
  gap: 6px;
  align-items: center;
  padding: 5px 4px;
  font-size: 12px;
  border-bottom: 1px solid var(--wms-border, #f3f4f6);
  border-radius: 4px;
}
.wms-orders-col-settings-row.is-dragging {
  opacity: 0.5;
  background: #fef2f2;
}
.wms-orders-col-settings-row label {
  display: flex;
  align-items: center;
  gap: 6px;
  cursor: pointer;
  min-width: 0;
}
.wms-orders-col-settings-row input[type="number"] {
  width: 100%;
  padding: 3px 5px;
  font-size: 12px;
  border: 1px solid var(--wms-border);
  border-radius: 4px;
}
.wms-orders-col-drag {
  cursor: grab;
  color: var(--wms-muted);
  font-size: 11px;
  user-select: none;
  letter-spacing: -2px;
}

.wms-orders-settings-pop {
  position: relative;
  display: inline-block;
}

.wms-orders-settings-pop > summary {
  list-style: none;
  cursor: pointer;
}

.wms-orders-settings-pop > summary::-webkit-details-marker {
  display: none;
}

.wms-orders-settings-panel {
  position: absolute;
  right: 0;
  top: calc(100% + 4px);
  z-index: 20;
  min-width: 280px;
  padding: 12px;
  background: #fff;
  border: 1px solid var(--wms-border);
  border-radius: 8px;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
}

.wms-orders-settings-grid {
  display: grid;
  grid-template-columns: auto 72px;
  gap: 6px 10px;
  align-items: center;
  margin-bottom: 10px;
}

.wms-orders-settings-grid .wms-label {
  margin: 0;
  font-size: 12px;
}

.wms-orders-settings-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 8px;
}

.wms-orders-formula-hint-text {
  margin: 0;
  font-size: 11px;
  color: var(--wms-muted);
  line-height: 1.35;
}

#wms-orders-actions #wms-orders-summary {
  margin: 0;
  font-size: 13.5px;
  flex: 1;
  min-width: 0;
}

#wms-orders-table-wrap {
  flex: 1;
  overflow-y: auto;
  overflow-x: auto;
  margin-top: 8px;
  border: 1px solid var(--wms-border);
  border-radius: 8px;
  min-height: 0;
}

.wms-orders-table {
  table-layout: fixed;
}

#wms-orders-table-wrap thead th {
  position: sticky;
  top: 0;
  background: #fff;
  z-index: 5;
  box-shadow: 0 1px 0 var(--wms-border);
  white-space: normal;
  word-wrap: break-word;
  overflow-wrap: break-word;
  vertical-align: top;
  cursor: default;
  padding-right: 14px;
}

.wms-orders-table th,
.wms-orders-table td {
  white-space: normal;
  word-wrap: break-word;
  overflow-wrap: break-word;
  vertical-align: top;
}

.wms-orders-table thead th {
  position: relative;
}

.wms-orders-table th.wms-th-sortable {
  cursor: pointer;
  user-select: none;
}
.wms-orders-table th.wms-th-sortable:hover .wms-th-label {
  color: #111827;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.wms-orders-table th.wms-th-sorted .wms-th-label {
  font-weight: 700;
  color: #111827;
}

.wms-orders-table .wms-orders-cell-num {
  text-align: right;
  white-space: nowrap;
}

.wms-orders-table .wms-orders-cell-code {
  font-family: 'DM Mono', monospace;
  font-size: 12px;
}

.wms-orders-table .wms-orders-cell-text {
  line-height: 1.35;
}

.wms-orders-table td:first-child,
.wms-orders-table th:first-child {
  min-width: 80px;
}

.wms-col-resize-handle {
  position: absolute;
  right: 0;
  top: 0;
  bottom: 0;
  width: 7px;
  cursor: col-resize;
  z-index: 6;
  touch-action: none;
}

.wms-col-resize-handle::after {
  content: '';
  position: absolute;
  right: 2px;
  top: 20%;
  bottom: 20%;
  width: 2px;
  border-radius: 1px;
  background: #9ca3af;
  opacity: 0.35;
  transition: opacity 0.15s;
}

.wms-orders-table th:hover .wms-col-resize-handle::after,
.wms-col-resize-handle:hover::after {
  opacity: 1;
  background: #374151;
}

body.wms-col-resizing {
  cursor: col-resize !important;
  user-select: none;
}

body.wms-col-resizing * {
  cursor: col-resize !important;
}

#wms-pane-orders #wms-orders-header .wms-toolbar {
  flex-wrap: wrap;
  gap: 10px;
  align-items: flex-end;
}
.wms-row-critical td {
  background: #fff5f5;
}
.wms-row-warning td {
  background: #fffbeb;
}
.wms-orders-table .wms-orders-input {
  width: 72px;
  padding: 4px 8px;
  text-align: right;
  font-size: 13px;
}
.wms-orders-suggested {
  color: var(--wms-red);
  font-weight: 600;
}
.wms-min-order-badge {
  font-size: 10px;
  color: var(--wms-muted);
  display: block;
}
.wms-input-sm {
  width: 64px;
  padding: 4px 8px;
  font-size: 13px;
  text-align: right;
}
.wms-orders-input.wms-stock-critical {
  border-color: #DC2626;
  background: #FEF2F2;
}
.wms-orders-input.wms-stock-warning {
  border-color: #D97706;
  background: #FFFBEB;
}
.wms-stock-readonly {
  display: inline-block;
  min-width: 3.5em;
  padding: 4px 8px;
  font-size: 13px;
  text-align: right;
  border-radius: 6px;
  border: 1px solid var(--wms-border, #e5e7eb);
  background: var(--wms-surface-2, #f9fafb);
  color: var(--wms-text, #111827);
}
.wms-stock-readonly.wms-stock-critical {
  border-color: #DC2626;
  background: #FEF2F2;
  color: #991B1B;
  font-weight: 600;
}
.wms-stock-readonly.wms-stock-warning {
  border-color: #D97706;
  background: #FFFBEB;
  color: #92400E;
  font-weight: 600;
}
.wms-th-with-info {
  white-space: nowrap;
  vertical-align: bottom;
}
.wms-th-with-info .wms-th-label {
  margin-right: 2px;
}
.wms-col-info {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 15px;
  height: 15px;
  padding: 0;
  margin-left: 2px;
  border: 1px solid var(--wms-border, #d1d5db);
  border-radius: 50%;
  background: #fff;
  color: var(--wms-muted, #6b7280);
  font-size: 10px;
  font-weight: 700;
  font-style: italic;
  line-height: 1;
  cursor: help;
  vertical-align: middle;
  position: relative;
}
.wms-col-info:hover,
.wms-col-info:focus {
  border-color: var(--wms-primary, #dc2626);
  color: var(--wms-primary, #dc2626);
  outline: none;
}
.wms-col-info[data-tip]:hover::after,
.wms-col-info[data-tip]:focus::after {
  content: attr(data-tip);
  position: absolute;
  z-index: 40;
  top: calc(100% + 6px);
  right: 0;
  min-width: 220px;
  max-width: 320px;
  padding: 8px 10px;
  border-radius: 8px;
  background: #1f2937;
  color: #f9fafb;
  font-size: 11px;
  font-weight: 400;
  font-style: normal;
  line-height: 1.45;
  text-align: left;
  white-space: normal;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.18);
  pointer-events: none;
}
.wms-orders-table thead th.wms-th-with-info {
  font-size: 11px;
}
.wms-po-status {
  display: inline-block;
  font-size: 11px;
  font-weight: 600;
  padding: 3px 8px;
  border-radius: 999px;
  text-transform: uppercase;
  letter-spacing: 0.02em;
}
.wms-po-status-draft { background: #F3F4F6; color: #6B7280; }
.wms-po-status-sent { background: #DBEAFE; color: #1D4ED8; }
.wms-po-status-received { background: #D1FAE5; color: #047857; }
.wms-po-status-partial { background: #FFEDD5; color: #C2410C; }
.wms-po-status-closed { background: #1F2937; color: #F9FAFB; }
.wms-rcv-price-up { color: #DC2626; font-weight: 500; }
.wms-rcv-price-down { color: #059669; font-weight: 500; }
.wms-rcv-price-same { color: var(--wms-text); }
.wms-rcv-price-detail {
  margin-top: 3px;
  padding: 4px 6px;
  background: #f8fafc;
  border: 1px solid var(--wms-border, #e5e7eb);
  border-radius: 6px;
  font-size: 11px;
  line-height: 1.5;
  white-space: normal;
  color: var(--wms-subtle, #64748b);
}
.wms-rcv-table td[data-rcv-col-td="pch"] {
  overflow: visible;
  text-overflow: clip;
  white-space: normal;
}

/* ── Zásoby (FIFO šarže) ── */
#wms-pane-stock.wms-page-pane.active {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
  height: auto;
  overflow: hidden;
  padding: 0;
}

#wms-pane-stock .wms-page {
  display: flex;
  flex-direction: column;
  height: 100%;
  overflow: hidden;
  max-width: 100%;
  padding: 12px 16px 0;
}

.wms-stock-view-btn.active {
  box-shadow: 0 0 0 1px var(--wms-red);
}

#wms-stock-movements-view[hidden],
#wms-stock-levels-view[hidden] {
  display: none !important;
}

#wms-stock-header {
  flex-shrink: 0;
  padding-bottom: 6px;
  border-bottom: 1px solid var(--wms-border);
}

.wms-stock-subtabs {
  display: flex;
  gap: 6px;
  margin-bottom: 8px;
}

/*
 * Lišta Zásob: pevná mriežka sa po pridaní filtra „Predané za" prestala
 * zmestiť — posledné pole vyliezalo z okna a používateľ ho vôbec nevidel.
 * Flex so zalomením drží polia v riadkoch podľa šírky okna, bez orezania.
 */
.wms-stock-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 8px;
  align-items: center;
  padding: 0 0 8px;
}
.wms-stock-filters > .wms-sel,
.wms-stock-filters > .wms-search,
.wms-stock-filters > .wms-input { flex: 1 1 150px; min-width: 130px; }
.wms-stock-filters > label { flex: 0 0 auto; }

/*
 * Lišta Zásob má dva pevné riadky: filtre a pod nimi akcie v jednom riadku.
 *
 * Bola to jedna mriežka so stĺpcom `auto` na tlačidlá. Po pridaní filtra stavu
 * prestal počet detí sedieť s počtom stĺpcov, blok akcií spadol do úzkeho
 * stĺpca a každé tlačidlo si stálo na vlastnom riadku — hlavička narástla na
 * pol obrazovky. To isté sa už raz stalo v Inventúre a rieši sa rovnako.
 * Ostatné lišty (Pohyby, prevody) si ponechávajú pôvodné rozloženie, preto je
 * to zúžené na túto jednu.
 */
#wms-stock-toolbar {
  grid-template-columns: minmax(150px, 1.3fr) repeat(5, minmax(106px, 1fr)) minmax(128px, 1.1fr);
}
#wms-stock-toolbar > .wms-stock-filter-actions {
  grid-column: 1 / -1;
  justify-content: flex-start;
  /* jeden riadok; pri úzkom okne sa radšej posúva, než by sa lámal do stĺpca */
  flex-wrap: nowrap;
  overflow-x: auto;
  padding-bottom: 2px;
}
#wms-stock-toolbar > .wms-stock-filter-actions .wms-btn { flex: 0 0 auto; }

.wms-stock-filters--mov {
  grid-template-columns: minmax(160px, 1.4fr) minmax(120px, 1fr) minmax(120px, 1fr) minmax(160px, 1.4fr) auto;
}

.wms-stock-filters--inv {
  grid-template-columns: minmax(140px, 1.2fr) minmax(110px, 0.9fr) minmax(140px, 1fr) minmax(130px, 1fr) minmax(130px, 1.1fr) auto;
}

/*
 * Panel inventúry: horné pole vždy dva pevné riadky — filtre a pod nimi akcie.
 * Predtým to bola jedna mriežka, do ktorej sa tlačili aj tlačidlá; pri užšom
 * okne padalo každé tlačidlo na vlastný riadok a hlavička narástla na pol obrazovky.
 */
.wms-inv-toolbar {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 0 0 8px;
}

.wms-inv-toolbar-filters {
  display: grid;
  grid-template-columns: minmax(150px, 1.3fr) minmax(130px, 1.1fr) minmax(150px, 1.2fr) 118px minmax(140px, 1.2fr) minmax(150px, 1.2fr);
  gap: 6px 8px;
  align-items: end;
}

.wms-inv-toolbar-filters > .wms-sel,
.wms-inv-toolbar-filters > .wms-search,
.wms-inv-toolbar-filters > .wms-input,
.wms-inv-toolbar-filters .wms-inv-cat-btn {
  padding: 6px 9px;
  font-size: 12.5px;
  width: 100%;
  min-width: 0;
  height: 32px;
}

.wms-inv-toolbar-filters > .wms-sel,
.wms-inv-toolbar-filters .wms-inv-cat-btn {
  padding-right: 24px;
}

.wms-inv-toolbar-actions {
  display: flex;
  gap: 6px;
  justify-content: flex-end;
  align-items: center;
  flex-wrap: wrap;
}

.wms-inv-toolbar-actions .wms-btn,
.wms-inv-actions .wms-btn {
  height: 32px;
  white-space: nowrap;
}

/* Rozbaľovacia ponuka v lište (tlač listu, načítanie spočítaných). */
.wms-menu { position: relative; display: inline-block; }

.wms-menu-panel {
  position: absolute;
  top: calc(100% + 4px);
  right: 0;
  z-index: 40;
  min-width: 292px;
  padding: 6px;
  background: var(--wms-surface, #fff);
  border: 1px solid var(--wms-border);
  border-radius: 8px;
  box-shadow: 0 10px 26px rgba(15, 23, 42, 0.16);
}

.wms-menu-label {
  padding: 5px 8px 3px;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--wms-muted);
}

.wms-menu-sep {
  height: 1px;
  margin: 5px 4px;
  background: var(--wms-border);
}

.wms-menu-item {
  display: flex;
  gap: 8px;
  align-items: flex-start;
  width: 100%;
  padding: 7px 8px;
  border: 0;
  border-radius: 6px;
  background: transparent;
  color: var(--wms-text, #111827);
  font: inherit;
  font-size: 12.5px;
  text-align: left;
  cursor: pointer;
}

.wms-menu-item:hover,
.wms-menu-item:focus-visible {
  background: #F3F4F6;
}

.wms-menu-item svg { flex-shrink: 0; margin-top: 1px; }

.wms-menu-item em {
  display: block;
  margin-top: 1px;
  font-size: 11px;
  font-style: normal;
  color: var(--wms-muted);
}


@media (min-width: 769px) and (max-width: 1360px) {
  .wms-inv-toolbar-filters { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

.wms-inv-asof-label {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
  font-size: 10.5px;
  color: var(--wms-muted);
  line-height: 1.2;
}

.wms-inv-asof-label .wms-input {
  padding: 5px 8px;
  font-size: 12.5px;
  width: 100%;
  min-width: 0;
}

.wms-inv-asof-banner {
  margin: 6px 0 0;
  padding: 7px 10px;
  border-radius: 6px;
  background: #FEF3C7;
  border: 1px solid #F59E0B;
  color: #92400E;
  font-size: 12.5px;
  font-weight: 500;
}

/* Prevod predajne: „z" a „do" s popisom, medzi nimi prehodenie smeru. */
.wms-stock-filters--transfer { align-items: flex-end; }
/* predajne sa nenačítali — chyba ostane pri výberoch aj s tlačidlom znova */
.wms-st-dept-error {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin: 6px 0 0;
  padding: 8px 10px;
  border-radius: 8px;
  background: var(--wms-danger-bg, #fef2f2);
  color: var(--wms-danger, #B91C1C);
  font-size: 13px;
}
.wms-st-dept-error[hidden] { display: none; }
.wms-xfer-field {
  display: flex;
  flex-direction: column;
  gap: 2px;
  flex: 1 1 220px;
  min-width: 180px;
}
.wms-xfer-label {
  font-size: 11px;
  font-weight: 600;
  color: #64748b;
  text-transform: uppercase;
  letter-spacing: .03em;
}
.wms-xfer-swap {
  flex: 0 0 auto;
  align-self: flex-end;
  min-width: 40px;
  font-size: 16px;
  line-height: 1;
}
/* ───────────────────────────────────────────────────────────────────────────
   PREVOD PREDAJNE — aplikačný rám, aby zoznam roloval
   Panel má od modulu WMS pribitú výšku a `overflow: hidden`, ale .wms-page
   zostávala blokom bez obmedzenia výšky: pri 361 šaržiach narástla na 19 900 px
   a všetko pod prvou obrazovkou bolo odrezané — zoznam sa nedal rolovať vôbec.
   Rovnaký rám má Zásoby aj Inventúra: stránka je flex na 100 % výšky, roluje
   iba zoznam, lišta hore a súčet dole zostávajú na mieste. Na telefóne to
   prebíja blok „NA TELEFÓNE ROLUJE CELÁ STRÁNKA" nižšie.
   ─────────────────────────────────────────────────────────────────────────── */
#wms-pane-store-transfers.wms-page-pane.active {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
  height: auto;
  overflow: hidden;
  padding: 0;
}
#wms-pane-store-transfers .wms-page {
  display: flex;
  flex-direction: column;
  height: 100%;
  min-height: 0;
  overflow: hidden;
  max-width: 100%;
  padding: 12px 16px 0;
}
/* rozbalené dolné bloky si nesmú vziať zoznam — majú vlastný scroll */
#wms-st-fold-pending[open] { max-height: 34vh; overflow-y: auto; }

/* ───────────────────────────────────────────────────────────────────────────
   PREVOD PREDAJNE — označovanie šarží
   Množstvo sa predtým muselo vypísať do políčka s nulou. Teraz je celý riadok
   klikací (klik = celá šarža), políčko je prázdne s nápovedou a vedľa má
   „Všetko". Označený riadok je zelený, aby bolo z odstupu vidieť, čo odíde.
   ─────────────────────────────────────────────────────────────────────────── */
.wms-st-table tbody tr[data-delivery-id] { cursor: pointer; }
.wms-st-table tbody tr.is-picked > td {
  background: #ecfdf5 !important;
  box-shadow: inset 3px 0 0 #059669;
}
.wms-st-table td[data-cell="pick"] { text-align: center; }
.wms-st-table .st-pick {
  width: 18px;
  height: 18px;
  cursor: pointer;
}
.wms-st-table #st-pick-all { width: 18px; height: 18px; cursor: pointer; }
.st-qty-wrap {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 5px;
}
.st-qty-wrap .st-qty-input {
  width: 92px;
  text-align: right;
}
.st-qty-wrap .st-qty-all { flex: 0 0 auto; white-space: nowrap; }

/* hlavička zoznamu zostáva na mieste aj pri 333 šaržiach */
#wms-pane-store-transfers #wms-st-stock-wrap .wms-table thead th {
  position: sticky;
  top: 0;
  z-index: 2;
}

/* rýchle akcie nad zoznamom */
.wms-st-picks {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 10px;
  padding: 0 0 8px;
}
.wms-st-onlysel {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12.5px;
  color: var(--wms-muted, #64748b);
  cursor: pointer;
}
.wms-st-onlysel input { width: 16px; height: 16px; }

/* súčet a odoslanie pribité na spodok zoznamu */
.wms-st-actionbar {
  position: sticky;
  bottom: 0;
  z-index: 3;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 8px 4px;
  background: #fff;
  border-top: 1px solid var(--wms-border, #e5e7eb);
}
.wms-st-sum { font-size: 13px; margin-left: auto; text-align: right; }
.wms-st-actionbar .wms-btn { min-height: 40px; }
.wms-st-actionbar .wms-st-picks { padding: 0; flex: 0 0 auto; }

/*
 * Notebook s 720 px na výšku: zo 583 px stránky ostávalo zoznamu 279 px, teda
 * päť riadkov. Lišty sa preto na nízkom okne stlačia — zoznam je to jediné,
 * čo má rásť.
 */
@media (max-height: 820px) {
  #wms-pane-store-transfers .wms-page { padding-top: 6px; }
  #wms-st-toolbar { padding-bottom: 4px; gap: 4px 8px; }
  #wms-st-toolbar .wms-sel,
  #wms-st-toolbar .wms-input { min-height: 32px; padding-top: 4px; padding-bottom: 4px; }
  #wms-st-toolbar .wms-xfer-label { font-size: 10px; }
  #wms-st-create-hint { margin: 2px 0; font-size: 12px; }
  .wms-st-actionbar { padding: 5px 4px; }
  .wms-st-actionbar .wms-btn { min-height: 34px; }
  .wms-st-fold > summary { padding: 2px 0 4px; font-size: 13px; }
  .wms-st-fold { padding-top: 4px; margin-top: 4px; }
}

/* dolné bloky sa dajú zavrieť — na telefóne inak kradnú celý zoznam */
.wms-st-fold {
  flex-shrink: 0;
  border-top: 1px solid var(--wms-border, #e5e7eb);
  padding: 8px 0 0;
  margin-top: 6px;
}
.wms-st-fold > summary {
  cursor: pointer;
  font-size: 14px;
  font-weight: 600;
  padding: 4px 0 8px;
}
#wms-st-fold-history[open] { max-height: 260px; overflow-y: auto; }

/* popis pri ⇄ a vysvetlenie smeru sú na počítači, na telefóne kradnú riadky */
.wms-xfer-swap-text { display: none; }
/* Expedícia má smer pevný (sklad → predajňa), preto len šípka, nie prehodenie. */
.wms-xfer-arrow {
  flex: 0 0 auto;
  align-self: flex-end;
  padding: 0 2px 8px;
  font-size: 18px;
  color: #94a3b8;
}

.wms-stock-filters .wms-sel,
.wms-stock-filters .wms-search {
  padding: 6px 26px 6px 9px;
  font-size: 12.5px;
  min-width: 0;
  width: 100%;
}

.wms-stock-filters .wms-stock-search {
  padding-left: 9px;
}

.wms-stock-filter-actions {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  justify-content: flex-end;
}

.wms-stock-table-area {
  flex: 1;
  overflow-y: auto;
  min-height: 180px;
}

.wms-stock-mov-summary {
  font-size: 12px;
  color: var(--wms-muted);
  margin: 0 0 6px;
}
.wms-stock-levels-summary {
  font-size: 12px;
  color: var(--wms-muted);
  margin: 0 0 6px;
  flex-shrink: 0;
}
/* Klikateľné hlavičky triedenia — musí byť vidieť, že sa dá kliknúť,
   a ktorý stĺpec práve triedi. */
.wms-stock-th-sort {
  cursor: pointer;
  user-select: none;
  white-space: nowrap;
}
.wms-stock-th-sort:hover { color: var(--wms-red, #dc2626); }
.wms-stock-th-sort.wms-stock-th-active { color: var(--wms-red, #dc2626); font-weight: 700; }

.wms-stock-fifo-details {
  flex-shrink: 0;
  border-top: 1px solid var(--wms-border);
  margin-top: 4px;
  padding-top: 4px;
}

.wms-stock-fifo-details > summary {
  cursor: pointer;
  font-size: 12.5px;
  font-weight: 600;
  color: var(--wms-text);
  padding: 6px 0;
  list-style: none;
}

.wms-stock-fifo-details > summary::-webkit-details-marker {
  display: none;
}

.wms-stock-fifo-body {
  padding: 0 0 8px;
}

.wms-stock-fifo-hint {
  font-size: 12px;
  margin: 0 0 8px;
}

.wms-stock-fifo-row {
  display: flex;
  gap: 8px;
  align-items: center;
  flex-wrap: wrap;
}

.wms-stock-fifo-result {
  font-size: 12px;
}

#wms-stock-header .wms-toolbar {
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  padding: 0;
  border-bottom: none;
}

#wms-stock-table-wrap {
  flex: 1;
  overflow-y: auto;
  min-height: 0;
}

#wms-stock-fifo-section {
  flex-shrink: 0;
}

#wms-stock-table-wrap thead th {
  position: sticky;
  top: 0;
  background: #fff;
  z-index: 5;
  box-shadow: 0 1px 0 var(--wms-border);
  white-space: nowrap;
}

#wms-pane-stock .wms-table td:first-child,
#wms-pane-stock .wms-table th:first-child {
  min-width: 160px;
}

.wms-stock-expired td {
  background: #f9fafb;
  color: #9ca3af;
}

.wms-stock-critical td {
  background: #fff1f2;
}

.wms-stock-warning td {
  background: #fffbeb;
}

.wms-stock-row:hover td {
  background: #fef2f2 !important;
}

.wms-stock-row {
  cursor: pointer;
  transition: background 0.15s;
}
.wms-stock-row-shortage td {
  background: #fef2f2;
}

/* Modal šarží — kompaktné riadky, expirácia na jednom riadku */
#wms-stock-batch-modal .wms-modal-body {
  padding: 14px 18px;
}

#wms-stock-batch-modal .wms-sbm-table {
  font-size: 12px;
  table-layout: fixed;
  width: 100%;
}

#wms-stock-batch-modal .wms-sbm-table th,
#wms-stock-batch-modal .wms-sbm-table td {
  padding: 4px 6px;
  line-height: 1.2;
  vertical-align: middle;
}

#wms-stock-batch-modal .wms-sbm-table th {
  font-size: 10px;
  letter-spacing: 0.02em;
  padding: 4px 6px;
}

#wms-stock-batch-modal .col-batch {
  width: 18%;
  font-family: 'DM Mono', monospace;
  font-size: 11px;
  word-break: break-all;
}

#wms-stock-batch-modal .col-expiry {
  width: 88px;
  max-width: 88px;
  white-space: nowrap;
}

#wms-stock-batch-modal .col-qty {
  width: 56px;
  white-space: nowrap;
}

#wms-stock-batch-modal .col-date {
  width: 72px;
  white-space: nowrap;
  font-size: 11px;
  color: var(--wms-muted);
}

#wms-stock-batch-modal .col-price {
  width: 52px;
  white-space: nowrap;
  font-size: 11px;
  color: var(--wms-muted);
}

#wms-stock-batch-modal .col-status {
  width: 64px;
  white-space: nowrap;
}

#wms-stock-batch-modal .col-status .wms-badge {
  padding: 1px 5px;
  font-size: 10px;
  line-height: 1.2;
}

#wms-stock-batch-modal .wms-expiry-compact {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  white-space: nowrap;
  font-size: 11px;
  font-variant-numeric: tabular-nums;
}

#wms-stock-batch-modal .wms-expiry-compact--critical {
  color: var(--wms-red-dark);
  font-weight: 600;
}

#wms-stock-batch-modal .wms-expiry-compact--warning {
  color: #92400e;
  font-weight: 500;
}

#wms-stock-batch-modal .wms-expiry-compact--expired {
  color: #9ca3af;
}

#wms-stock-batch-modal .wms-expiry-compact--ok {
  color: var(--wms-muted);
}

#wms-stock-batch-modal .wms-sbm-summary {
  margin-bottom: 12px;
  padding: 12px 14px;
  background: #f9fafb;
  border: 1px solid var(--wms-border);
  border-radius: 8px;
}

#wms-stock-batch-modal .wms-sbm-total-line {
  display: flex;
  align-items: baseline;
  gap: 6px;
  line-height: 1.1;
}

#wms-stock-batch-modal .wms-sbm-total-qty {
  font-size: 28px;
  font-weight: 700;
  color: var(--wms-text);
  font-variant-numeric: tabular-nums;
}

#wms-stock-batch-modal .wms-sbm-total-unit {
  font-size: 16px;
  font-weight: 600;
  color: var(--wms-muted);
}

#wms-stock-batch-modal .wms-sbm-total-meta {
  margin-top: 4px;
  font-size: 12px;
  color: var(--wms-muted);
}

#wms-stock-batch-modal .wms-sbm-product-name {
  display: block;
  font-size: 12px;
  font-weight: 600;
  color: var(--wms-text);
  line-height: 1.25;
}

#wms-stock-batch-modal .wms-sbm-batch-id {
  display: block;
  margin-top: 2px;
  font-family: 'DM Mono', monospace;
  font-size: 10px;
  color: var(--wms-muted);
}

#wms-stock-batch-modal .col-product {
  width: 28%;
  min-width: 120px;
}

#wms-stock-batch-modal .wms-qty-num {
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}

#wms-stock-batch-modal .wms-qty-unit {
  font-size: 10px;
  font-weight: 500;
  color: var(--wms-muted);
  margin-left: 2px;
}

#wms-stock-batch-modal .wms-stock-card-modal {
  max-width: 980px;
  width: min(980px, calc(100vw - 32px));
}

/* Výber predajne v hlavičke karty — karta je vždy za jednu predajňu, tak nech
   je vidieť ktorá, a nech sa dá prepnúť bez zatvárania. */
#wms-stock-batch-modal .wms-sbm-header-right {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-shrink: 0;
}

#wms-stock-batch-modal .wms-sbm-dept {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  color: var(--wms-muted);
}

#wms-stock-batch-modal .wms-sbm-dept select {
  font-size: 12px;
  padding: 4px 8px;
  max-width: 260px;
}

@media (max-width: 640px) {
  #wms-stock-batch-modal .wms-sbm-dept > span { display: none; }
  #wms-stock-batch-modal .wms-sbm-dept select { max-width: 150px; }
}

#wms-stock-batch-modal .wms-stock-card-body {
  max-height: min(78vh, 820px);
  overflow-y: auto;
}

#wms-stock-batch-modal .wms-stock-card-section {
  margin-top: 14px;
}

#wms-stock-batch-modal .wms-stock-card-section-title {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: var(--wms-muted);
  margin-bottom: 8px;
}

#wms-stock-batch-modal .wms-stock-card-section-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 8px;
}

#wms-stock-batch-modal .wms-stock-card-meta {
  font-size: 11px;
  margin-top: 2px;
}

#wms-stock-batch-modal .wms-stock-card-filter {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

#wms-stock-batch-modal .wms-sbm-filter-btn.active {
  border-color: var(--wms-red);
  color: var(--wms-red-dark);
  background: #FEF2F2;
}

#wms-stock-batch-modal .wms-sbm-batch-row {
  cursor: pointer;
}

#wms-stock-batch-modal .wms-sbm-batch-row:hover {
  background: #F9FAFB;
}

#wms-stock-batch-modal .wms-sbm-batch-row--active {
  background: #FEF2F2;
  outline: 1px solid #FECACA;
}

#wms-stock-batch-modal .wms-stock-card-table-wrap {
  max-height: 320px;
  overflow: auto;
  border: 1px solid var(--wms-border);
  border-radius: 8px;
}

#wms-stock-batch-modal .wms-stock-card-table {
  font-size: 12px;
  table-layout: fixed;
  width: 100%;
}

#wms-stock-batch-modal .wms-stock-card-table th,
#wms-stock-batch-modal .wms-stock-card-table td {
  padding: 5px 8px;
  vertical-align: top;
  line-height: 1.25;
}

#wms-stock-batch-modal .wms-stock-card-table th {
  position: sticky;
  top: 0;
  background: #fff;
  z-index: 1;
  font-size: 10px;
}

#wms-stock-batch-modal .wms-stock-card-date {
  white-space: nowrap;
  font-size: 11px;
  color: var(--wms-muted);
}

#wms-stock-batch-modal .wms-stock-card-fifo {
  margin-top: 3px;
  font-size: 10px;
  color: #9A3412;
}

#wms-stock-batch-modal .wms-stock-card-loading {
  padding: 8px 0 12px;
  font-size: 12px;
}

#wms-pane-stock .wms-qty-cell .wms-qty-num {
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}

#wms-pane-stock .wms-qty-cell .wms-qty-unit {
  font-size: 11px;
  font-weight: 500;
  color: var(--wms-muted);
  margin-left: 3px;
}

/* ── Expedícia ── */
#wms-pane-transfers.wms-page-pane.active {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
  height: auto;
  overflow: hidden;
  padding: 0;
}

#wms-pane-transfers .wms-page {
  display: flex;
  flex-direction: column;
  height: 100%;
  overflow: hidden;
  max-width: 100%;
  padding: 12px 16px 0;
}

#wms-transfer-header {
  flex-shrink: 0;
  padding-bottom: 6px;
  border-bottom: 1px solid var(--wms-border);
}

#wms-transfer-header .wms-stock-filters {
  padding: 0 0 4px;
}

#wms-transfer-stock-wrap {
  flex: 1;
  overflow-y: auto;
  min-height: 0;
}

#wms-transfer-stock-wrap thead th {
  position: sticky;
  top: 0;
  background: #fff;
  z-index: 5;
  box-shadow: 0 1px 0 var(--wms-border);
  white-space: nowrap;
}

#wms-pending-transfers .wms-card {
  background: var(--wms-surface);
  border: 1px solid var(--wms-border);
  border-radius: 8px;
}

#wms-transfer-pending-section,
#wms-transfer-history-section {
  flex-shrink: 0;
}

/* ── Inventúra ── */
#wms-pane-inventory.wms-page-pane.active {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
  height: auto;
  overflow: hidden;
  padding: 0;
}

#wms-pane-inventory .wms-page {
  display: flex;
  flex-direction: column;
  height: 100%;
  overflow: hidden;
  max-width: 100%;
  padding: 12px 16px 0;
}

#wms-inv-header {
  flex-shrink: 0;
  padding-bottom: 6px;
  border-bottom: 1px solid var(--wms-border);
}

#wms-inv-header .wms-stock-filters {
  padding: 0 0 4px;
}

.wms-inv-actions {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  padding: 4px 0 2px;
}

.wms-inv-actions[hidden] {
  display: none !important;
}

.wms-inv-actions #wms-inv-summary {
  font-size: 12px;
}

#wms-inv-table-wrap {
  flex: 1;
  overflow-y: auto;
  min-height: 0;
}

#wms-inv-table-wrap thead th {
  position: sticky;
  top: 0;
  background: #fff;
  z-index: 5;
  box-shadow: 0 1px 0 var(--wms-border);
  white-space: nowrap;
}

.inv-row-diff td {
  background: #fafafa;
}

.inv-row-shortage td {
  background: #fafafa;
}

.inv-row-shortage.inv-row-diff td {
  background: #f5f5f5;
}

/* Produkt = čistý text v jednom riadku (nie button — theme-premium farbí všetky buttony načerveno) */
body.loyalty-ui-v2 #wms-inv-table-wrap .wms-inv-product-link,
#wms-inv-table-wrap .wms-inv-product-link,
.wms-inv-product-link {
  display: inline;
  width: auto;
  max-width: 100%;
  text-align: left;
  background: none !important;
  background-image: none !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  padding: 0 !important;
  margin: 0;
  cursor: pointer;
  color: #1f2937 !important;
  font: inherit;
  line-height: 1.25;
  white-space: nowrap;
  transform: none !important;
}
body.loyalty-ui-v2 #wms-inv-table-wrap .wms-inv-product-link:hover,
#wms-inv-table-wrap .wms-inv-product-link:hover,
.wms-inv-product-link:hover {
  background: none !important;
  background-image: none !important;
  color: #111827 !important;
  text-decoration: underline;
  text-underline-offset: 2px;
  box-shadow: none !important;
  transform: none !important;
}
.wms-inv-product-link .wms-inv-prod-name {
  font-weight: 500;
  font-size: 12.5px;
  color: inherit !important;
}
.wms-inv-product-link .wms-inv-prod-code {
  font-size: 11px;
  color: #6b7280 !important;
  margin-left: 6px;
  font-family: 'DM Mono', ui-monospace, monospace;
  font-weight: 400;
}
/*
 * PLU dodávateľa. Odlíšené od interného kódu, lebo sa podľa neho hľadá v CSB —
 * pri dvoch monospace kódoch za sebou by sa inak dalo prehliadnuť, ktorý je ktorý.
 */
.wms-plu-code {
  font-size: 11px;
  margin-left: 6px;
  padding: 0 4px;
  border-radius: 4px;
  background: #EEF2FF;
  color: #4338CA !important;
  font-family: 'DM Mono', ui-monospace, monospace;
  font-weight: 500;
  white-space: nowrap;
}
#wms-inv-table-wrap .wms-inv-batch-cell {
  font-size: 12px;
  color: #6b7280;
  white-space: nowrap;
}

#wms-inv-table-wrap .wms-table {
  font-size: 12.5px;
}
#wms-inv-table-wrap .wms-table th {
  padding: 5px 8px;
  font-size: 10.5px;
  letter-spacing: 0.02em;
}
#wms-inv-table-wrap .wms-table td {
  padding: 3px 8px;
  line-height: 1.25;
  vertical-align: middle;
}
#wms-inv-table-wrap .wms-table tbody tr:hover td {
  background: #f3f4f6;
}
#wms-inv-table-wrap .inv-note-input {
  min-width: 90px;
  width: 100%;
  max-width: 160px;
  padding: 2px 6px;
  font-size: 12px;
  height: 26px;
  border-radius: 4px;
}

.wms-inv-input {
  width: 84px;
  text-align: right;
  padding: 2px 6px;
  border: 1px solid var(--wms-border);
  border-radius: 4px;
  font-size: 12.5px;
  height: 26px;
  -moz-appearance: textfield;
  appearance: textfield;
}

.wms-inv-input::-webkit-outer-spin-button,
.wms-inv-input::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

.wms-inv-input:focus {
  border-color: #9ca3af;
  outline: none;
  box-shadow: 0 0 0 2px rgba(156, 163, 175, 0.25);
}

#wms-inv-actions {
  flex-shrink: 0;
  padding: 2px 0 4px;
}

/* Inventúra: outline akcie bez červeného theme-premium gradientu */
body.loyalty-ui-v2 #wms-inv-actions .wms-btn-outline,
body.loyalty-ui-v2 #wms-inv-toolbar .wms-btn-outline,
#wms-inv-actions .wms-btn-outline,
#wms-inv-toolbar .wms-btn-outline {
  color: #374151 !important;
  border: 1px solid #d1d5db !important;
  background: #fff !important;
  background-image: none !important;
  box-shadow: none !important;
  transform: none !important;
}
body.loyalty-ui-v2 #wms-inv-actions .wms-btn-outline:hover,
body.loyalty-ui-v2 #wms-inv-toolbar .wms-btn-outline:hover,
#wms-inv-actions .wms-btn-outline:hover,
#wms-inv-toolbar .wms-btn-outline:hover {
  background: #f9fafb !important;
  background-image: none !important;
  border-color: #9ca3af !important;
  color: #111827 !important;
  box-shadow: none !important;
  transform: none !important;
}

#wms-inv-history-section {
  flex-shrink: 0;
  max-height: 120px;
}

/* ── Príjem tovaru ── */
#wms-pane-receiving.wms-page-pane.active {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
  height: auto;
  overflow: hidden;
  padding: 0;
}

#wms-pane-receiving .wms-page {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
  height: 100%;
  overflow: hidden;
  max-width: 100%;
  padding: 6px 10px 0;
}

.wms-rcv-header {
  flex-shrink: 0;
  border-bottom: 1px solid var(--wms-border);
  padding-bottom: 4px;
  margin-bottom: 4px;
}

.wms-rcv-toolbar-compact {
  display: block;
}

.wms-rcv-toolbar-grid {
  display: grid;
  /* posledný stĺpec musí vedieť zmenšiť sa, inak lišta pretečie za pravý okraj
     a tlačidlá („✕ Zrušiť", „⋯ Viac") sa nedajú kliknúť */
  grid-template-columns: minmax(120px, 1fr) minmax(120px, 1fr) 118px 112px minmax(80px, 1.4fr) minmax(0, auto);
  gap: 4px 8px;
  align-items: end;
}

.wms-rcv-hint-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  border-radius: 50%;
  font-size: 13px;
  color: var(--wms-muted, #6B7280);
  cursor: help;
  flex-shrink: 0;
  align-self: center;
}

.wms-rcv-toolbar {
  display: flex;
  align-items: flex-end;
  gap: 8px;
  flex-wrap: wrap;
}

.wms-rcv-toolbar-filters {
  display: flex;
  align-items: flex-end;
  gap: 8px;
  flex-wrap: wrap;
  flex: 1;
  min-width: 0;
}


/*
 * ÚZKE OKNO: AKCIE DOSTANÚ CELÝ RIADOK.
 *
 * Lišta drží šesť stĺpcov až do mobilného zlomu (768 px). Medzi tým — a to je
 * bežné okno so zväčšeným písmom alebo rozbaleným menu — zostalo na sedem
 * tlačidiel ~200 px a lámali sa do štyroch riadkov nad sebou (hlásené z
 * Povodskej). Od 1280 px nadol preto polia zaberú menej stĺpcov a akcie idú
 * pod ne na celú šírku, takže sú v jednom-dvoch radoch.
 */
@media (max-width: 1280px) {
  #wms-rcv-header .wms-rcv-toolbar-grid {
    grid-template-columns: minmax(140px, 1fr) minmax(140px, 1fr) 118px 112px;
  }
  #wms-rcv-header .wms-rcv-toolbar-actions {
    grid-column: 1 / -1;
    justify-content: flex-start;
    flex-wrap: wrap;
    row-gap: 4px;
  }
  #wms-rcv-header #rcv-orders-inline {
    grid-column: 1 / -1;
    width: 100%;
  }
}

@media (max-width: 1024px) {
  #wms-rcv-header .wms-rcv-toolbar-grid {
    grid-template-columns: minmax(130px, 1fr) minmax(130px, 1fr) minmax(96px, 118px);
  }
}

/*
 * Od 860 px sa na jeden rad zmestia aj ŠTYRI polia vrátane dátumu.
 * Trojstĺpcové rozloženie ho tlačilo na vlastný rad a hlavička tým rástla
 * o 46 px — na notebooku (1000 × 470) presne o riadok a pol zoznamu.
 */
@media (min-width: 860px) and (max-width: 1024px) {
  #wms-rcv-header .wms-rcv-toolbar-grid {
    grid-template-columns: minmax(118px, 1fr) minmax(118px, 1fr) minmax(90px, 112px) minmax(104px, 128px);
  }
}

/*
 * Zoznam dokladov sa v úzkom okne radšej posunie do strany, než by sa stlačil:
 * pri 760 px zostalo na stĺpec „Dátum" toľko, že hlavička bola „DÁT…" a číslo
 * dokladu sa lámalo na tri riadky. Tabuľka má preto spodnú hranicu šírky a
 * obal sa roluje vodorovne.
 */
@media (max-width: 1280px) {
  .wms-rcv-queue-table-wrap { overflow-x: auto; }
  .wms-rcv-queue-table { min-width: 880px; }
}

.wms-rcv-toolbar-actions {
  display: flex;
  align-items: center;
  gap: 3px;
  flex-wrap: wrap;
  justify-content: flex-end;
  min-width: 0;
}

.wms-rcv-field {
  display: flex;
  flex-direction: column;
  gap: 1px;
}

.wms-rcv-field-dl .wms-input { width: 100%; min-width: 0; }
.wms-rcv-field-date .wms-input { width: 100%; min-width: 0; }

#wms-rcv-header .wms-label {
  font-size: 10px;
  margin-bottom: 0;
  line-height: 1.2;
}

#wms-rcv-header .wms-sel,
#wms-rcv-header .wms-input {
  min-width: 0;
  font-size: 11px;
  padding: 3px 7px;
  min-height: 26px;
}

#wms-rcv-header .wms-btn-sm {
  padding: 3px 7px;
  font-size: 10.5px;
  min-height: 26px;
}

#rcv-orders-inline {
  flex: 1;
  min-width: 60px;
  max-height: 28px;
  overflow: auto;
  align-self: end;
}

.wms-rcv-obj-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 3px 8px;
  font-size: 11px;
  font-weight: 500;
  border: 1px solid var(--wms-border);
  border-radius: 8px;
  background: #fff;
  cursor: pointer;
  white-space: nowrap;
  transition: border-color 0.15s, background 0.15s;
}

.wms-rcv-obj-badge:hover {
  border-color: var(--wms-red);
  background: #fef2f2;
}

.wms-rcv-obj-badge.selected {
  border-color: var(--wms-red);
  background: #fef2f2;
  box-shadow: 0 0 0 1px var(--wms-red);
}

#rcv-selected-info,
.wms-rcv-doc-strip {
  margin-top: 4px;
  padding: 4px 8px;
  background: #fef2f2;
  border-radius: 6px;
  display: flex;
  gap: 8px;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  font-size: 12px;
  line-height: 1.3;
}

.wms-rcv-doc-strip-main {
  display: flex;
  gap: 8px;
  align-items: center;
  flex-wrap: wrap;
  min-width: 0;
}

/* Nesúlad karty a šarží v prehľade zásob — číslo zásoby zostáva hlavné. */
.wms-stock-diff {
  font-size: 10.5px;
  color: #B45309;
  font-weight: 500;
  white-space: nowrap;
}

/* Strany odfoteného dodacieho listu — pred skenom aj pri prezeraní. */
.wms-rcv-pages {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.wms-rcv-page {
  position: relative;
  width: 92px;
  height: 118px;
  border: 1px solid var(--wms-border);
  border-radius: 8px;
  overflow: hidden;
  background: #fff;
}

.wms-rcv-page img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.wms-rcv-page-no {
  position: absolute;
  left: 4px;
  bottom: 4px;
  min-width: 18px;
  padding: 1px 5px;
  border-radius: 9px;
  background: rgba(17, 24, 39, 0.78);
  color: #fff;
  font-size: 11px;
  text-align: center;
}

.wms-rcv-page-del {
  position: absolute;
  top: 3px;
  right: 3px;
  width: 20px;
  height: 20px;
  border: none;
  border-radius: 50%;
  background: rgba(185, 28, 28, 0.9);
  color: #fff;
  font-size: 12px;
  line-height: 1;
  cursor: pointer;
}

.wms-rcv-scan-gallery {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: 10px;
  margin-top: 8px;
}

.wms-rcv-scan-gallery a {
  position: relative;
  display: block;
  border: 1px solid var(--wms-border);
  border-radius: 8px;
  overflow: hidden;
  background: #fff;
}

.wms-rcv-scan-gallery img {
  width: 100%;
  height: 210px;
  object-fit: contain;
  background: #f8fafc;
}

.wms-rcv-scan-gallery span {
  position: absolute;
  left: 6px;
  bottom: 6px;
  padding: 1px 7px;
  border-radius: 9px;
  background: rgba(17, 24, 39, 0.78);
  color: #fff;
  font-size: 11px;
}

/* Číslo položky na doklade — úzky, tichý stĺpec, aby neprekrýval názov. */
.wms-rcv-table td[data-rcv-col-td="pos"] {
  color: var(--wms-muted);
  font-variant-numeric: tabular-nums;
  font-size: 11px;
  text-align: right;
  white-space: nowrap;
}

.wms-rcv-doc-sort {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  white-space: nowrap;
}

/*
 * Poradie a dátum v páse dokladu si berú `wms-input-sm` — a tá je číselné
 * pole: `text-align: right`. Hodnota potom stála pri pravom okraji a pole
 * vyzeralo prázdne; `background: #fff` navyše zmazalo šipku selectu, takže to
 * ani nevyzeralo klikateľne (hlásené 1. 9. 2026 ako „rozhádzaná horná časť").
 */
.wms-rcv-doc-sort select {
  width: auto;
  min-width: 10.5rem;
  height: 28px;
  padding: 2px 6px;
  font-size: 12px;
  background-color: #fff;
  text-align: left;
}

.wms-rcv-doc-date-edit {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  white-space: nowrap;
}

.wms-rcv-doc-date-edit .wms-input,
.wms-rcv-doc-date-edit .wms-input-sm {
  width: auto;
  min-width: 9.5rem;
  padding: 2px 6px;
  font-size: 12px;
  height: 28px;
  border: 1px solid #fca5a5;
  background-color: #fff;
  text-align: left;
}

.wms-rcv-doc-strip #rcv-doc-status .wms-badge {
  font-size: 10px;
  padding: 2px 6px;
}

#rcv-selected-info[hidden] {
  display: none !important;
}

.wms-rcv-layout-hint {
  flex-shrink: 0;
  font-size: 10px;
  margin: 2px 0 0;
  line-height: 1.25;
}

.wms-rcv-workarea {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

#wms-rcv-items-wrap {
  flex: 1;
  overflow: auto;
  -webkit-overflow-scrolling: touch;
  border: 1px solid var(--wms-border);
  border-radius: 6px;
  min-height: 0;
}

.wms-rcv-table {
  table-layout: fixed;
  width: 100%;
  min-width: 640px;
}

#wms-rcv-items-wrap thead th {
  position: sticky;
  top: 0;
  background: #fff;
  z-index: 5;
  box-shadow: 0 1px 0 var(--wms-border);
  padding: 4px 6px;
  font-size: 11px;
}

.wms-rcv-table td {
  overflow: hidden;
  text-overflow: ellipsis;
  /* top, nie middle — keď produkt nie je napárovaný, bunka s návrhmi sa
     natiahne a "middle" by odtiahlo množstvo/šaržu/cenu preč od riadku,
     ktorému patria (vyzeralo to, akoby patrili inému artiklu) */
  vertical-align: top;
  padding: 3px 5px;
  font-size: 12px;
}

.wms-rcv-table td[data-rcv-col-td="ordered"],
.wms-rcv-table td[data-rcv-col-td="in_transit"],
.wms-rcv-table td[data-rcv-col-td="received"],
.wms-rcv-table td[data-rcv-col-td="diff"],
.wms-rcv-table td[data-rcv-col-td="sw3"] {
  overflow: visible;
  text-overflow: clip;
  white-space: nowrap;
}

#wms-rcv-items-wrap thead th[data-rcv-col="ordered"],
#wms-rcv-items-wrap thead th[data-rcv-col="in_transit"],
#wms-rcv-items-wrap thead th[data-rcv-col="received"],
#wms-rcv-items-wrap thead th[data-rcv-col="diff"],
#wms-rcv-items-wrap thead th[data-rcv-col="sw3"] {
  overflow: visible;
}

#wms-rcv-items-wrap thead th[data-rcv-col="ordered"] .wms-rcv-th-label,
#wms-rcv-items-wrap thead th[data-rcv-col="in_transit"] .wms-rcv-th-label,
#wms-rcv-items-wrap thead th[data-rcv-col="received"] .wms-rcv-th-label,
#wms-rcv-items-wrap thead th[data-rcv-col="diff"] .wms-rcv-th-label,
#wms-rcv-items-wrap thead th[data-rcv-col="sw3"] .wms-rcv-th-label {
  max-width: none;
  overflow: visible;
  text-overflow: clip;
}

.wms-rcv-product-name {
  font-weight: 500;
  font-size: 12px;
  line-height: 1.25;
}

.wms-rcv-sub {
  display: block;
  font-size: 10px;
  color: var(--wms-muted);
}

.wms-rcv-pp-tag {
  display: inline-block;
  margin-left: 4px;
  padding: 0 4px;
  font-size: 10px;
  font-weight: 600;
  color: #1d4ed8;
  background: #eff6ff;
  border-radius: 4px;
}

.wms-rcv-pp-tag-warn {
  color: #b91c1c;
  background: #fee2e2;
}

.wms-rcv-qty-transit {
  font-weight: 600;
  font-size: 12px;
  white-space: nowrap;
}

.wms-rcv-th-label {
  display: inline-block;
  max-width: calc(100% - 8px);
  overflow: hidden;
  text-overflow: ellipsis;
  vertical-align: bottom;
}

.wms-rcv-col-resize {
  position: absolute;
  top: 0;
  right: 0;
  width: 8px;
  height: 100%;
  cursor: col-resize;
  user-select: none;
  touch-action: none;
}

.wms-rcv-col-resize:hover {
  background: rgba(185, 28, 28, 0.12);
}

body.wms-rcv-col-resizing {
  cursor: col-resize;
  user-select: none;
}

.wms-rcv-table .wms-rcv-qty,
.wms-rcv-table .wms-input {
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
  padding: 2px 5px;
  font-size: 11px;
  min-height: 22px;
}

.wms-rcv-table .wms-rcv-qty {
  text-align: right;
  -moz-appearance: textfield;
  appearance: textfield;
  min-width: 3.5rem;
  padding-right: 4px;
}

.wms-rcv-table .wms-rcv-qty::-webkit-outer-spin-button,
.wms-rcv-table .wms-rcv-qty::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

#wms-rcv-photo-panel {
  display: none;
  flex-direction: column;
  gap: 12px;
  padding: 12px;
  border: 1px solid var(--wms-border);
  border-radius: 8px;
}

/*
 * Fotenie DL je okno v strede obrazovky. Predtým to bol panel na konci
 * stránky: „vyskočil" pod zoznamom dokladov, mimo pohľadu, a rozpoznané riadky
 * sa potom objavili niekde nižšie.
 */
#wms-rcv-photo-backdrop {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 10040;
  background: rgba(15, 23, 42, 0.45);
}

#wms-rcv-photo-backdrop.open {
  display: block;
}

#wms-rcv-photo-panel.open {
  display: flex;
  position: fixed;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  width: min(620px, 94vw);
  max-height: 88vh;
  overflow-y: auto;
  z-index: 10041;
  background: #fff;
  border: 0;
  border-radius: 14px;
  padding: 16px;
  box-shadow: 0 24px 60px rgba(15, 23, 42, 0.28);
}

#wms-rcv-photo-panel.open .wms-dropzone {
  max-width: none;
  min-height: 150px;
}

#wms-rcv-photo-panel .wms-dropzone {
  max-width: 520px;
}

#wms-rcv-footer {
  flex-shrink: 0;
  padding: 4px 0 max(4px, env(safe-area-inset-bottom));
  display: flex;
  align-items: center;
  justify-content: space-between;
  border-top: 1px solid var(--wms-border);
  margin-top: 2px;
  gap: 6px;
  background: #fff;
  box-shadow: 0 -2px 8px rgba(15, 23, 42, 0.04);
  position: sticky;
  bottom: 0;
  z-index: 12;
}

.wms-rcv-footer-summary {
  font-size: 11px;
  color: var(--wms-muted);
  line-height: 1.3;
  flex: 1;
  min-width: 0;
}

#wms-rcv-confirm-btn {
  min-height: 26px;
  padding: 3px 10px;
  font-size: 11px;
  white-space: nowrap;
  flex-shrink: 0;
}

.wms-rcv-line-btn {
  min-width: 24px;
  padding: 2px 6px !important;
  font-size: 11px !important;
  line-height: 1 !important;
}

.wms-rcv-queue-table .wms-btn-sm {
  padding: 2px 6px;
  min-height: 22px;
  font-size: 10px;
  white-space: nowrap;
}

.wms-rcv-product-cell {
  min-width: 200px;
  vertical-align: top;
}

.wms-rcv-product-search-row {
  display: flex;
  gap: 6px;
  align-items: center;
}

.wms-rcv-product-search {
  flex: 1;
  min-width: 0;
  font-size: 13px;
  padding: 6px 10px;
}

.wms-rcv-product-picker {
  position: relative;
}

.wms-rcv-product-dropdown {
  position: absolute;
  left: 0;
  right: 0;
  top: calc(100% + 4px);
  z-index: 40;
  max-height: 220px;
  overflow-y: auto;
  background: #fff;
  border: 1px solid var(--wms-border);
}

.wms-rcv-product-dropdown.wms-rcv-dropdown-fixed {
  z-index: 10050;
  border-radius: 8px;
  box-shadow: 0 8px 24px rgba(15, 23, 42, 0.12);
}

.wms-rcv-product-dd-item {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 2px;
  width: 100%;
  padding: 8px 10px;
  border: none;
  border-bottom: 1px solid var(--wms-border);
  background: #fff;
  text-align: left;
  cursor: pointer;
  font: inherit;
}

.wms-rcv-product-dd-item:hover {
  background: #fef2f2;
}

.wms-rcv-product-dd-item:last-child {
  border-bottom: none;
}

.wms-rcv-product-dd-name {
  font-weight: 500;
  font-size: 13px;
  color: var(--wms-text);
}

.wms-rcv-product-dd-meta {
  font-size: 11px;
  color: var(--wms-muted);
}

.wms-rcv-product-dd-empty {
  padding: 10px;
  font-size: 12px;
  color: var(--wms-muted);
}

.wms-rcv-product-meta {
  font-size: 11px;
  color: var(--wms-muted);
  margin-top: 4px;
  font-family: 'DM Mono', monospace;
}

.wms-rcv-product-warn {
  font-size: 11px;
  color: var(--wms-red);
  margin-top: 4px;
}

#wms-rcv-footer[hidden] {
  display: none !important;
}

@media (max-width: 768px) {
  .wms-topbar {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    flex-wrap: nowrap;
    padding-bottom: 4px;
  }
  .wms-tab {
    flex-shrink: 0;
    white-space: nowrap;
  }

  .wms-table-wrap,
  .wms-orders-table-wrap,
  #wms-rcv-items-wrap,
  #wms-stock-table-wrap {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }

  .wms-toolbar {
    flex-direction: column;
    align-items: stretch;
  }
  .wms-toolbar .wms-sel,
  .wms-toolbar .wms-search,
  .wms-toolbar .wms-btn {
    width: 100%;
  }

  .wms-stock-filters,
  .wms-stock-filters--mov,
  .wms-inv-toolbar-filters { grid-template-columns: 1fr 1fr; }
  .wms-inv-toolbar-actions { justify-content: stretch; }
  .wms-inv-toolbar-actions .wms-btn,
  .wms-inv-toolbar-actions .wms-menu { flex: 1 1 0; }
  .wms-inv-toolbar-actions .wms-menu .wms-btn { width: 100%; }
  .wms-menu-panel { left: 0; right: auto; min-width: 0; width: 100%; }

  .wms-stock-filters--inv,
  .wms-stock-filters--transfer { display: flex; flex-wrap: wrap; }
  .wms-stock-filters--transfer .wms-xfer-field { flex: 1 1 100%; }
  .wms-stock-filter-actions {
    grid-column: 1 / -1;
    justify-content: stretch;
  }
  .wms-stock-filter-actions .wms-btn {
    flex: 1;
  }
  .wms-inv-actions {
    flex-direction: column;
    align-items: stretch;
  }
  .wms-inv-actions .wms-stock-filter-actions {
    grid-column: auto;
  }

  #wms-rcv-header .wms-rcv-toolbar-grid {
    grid-template-columns: 1fr 1fr;
  }
  #wms-rcv-header .wms-rcv-toolbar-actions {
    grid-column: 1 / -1;
    justify-content: flex-start;
  }
  #rcv-orders-inline {
    grid-column: 1 / -1;
    width: 100%;
    max-height: none;
  }
  #wms-rcv-footer {
    flex-direction: column;
    align-items: stretch;
  }
  #wms-rcv-confirm-btn {
    width: 100%;
  }
  #wms-rcv-items-wrap .wms-rcv-table {
    min-width: 560px;
  }

  #wms-pane-inventory .wms-page {
    padding: 8px;
  }

  .wms-modal {
    border-radius: 0;
    max-height: 100vh;
  }

  #wms-pane-products .wms-toolbar {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 8px;
  }

  .wms-rcv-qty {
    min-width: 3.25rem !important;
    width: auto !important;
  }
  .wms-input[type="date"] {
    font-size: 12px;
  }
}

/* ── Faktúry — inbox (Z mailu) ── */
.inv-inbox-panel {
  margin: 0 -4px;
}

#inv-inbox-split {
  display: grid;
  grid-template-columns: 1fr 1fr;
  height: calc(100vh - 120px);
  gap: 0;
  border: 1px solid var(--wms-border);
  border-radius: 12px;
  overflow: hidden;
  background: var(--wms-surface, #fff);
}

#inv-inbox-left {
  overflow-y: auto;
  padding: 16px;
  border-right: 1px solid var(--wms-border);
  min-height: 0;
}

#inv-inbox-right {
  position: relative;
  display: flex;
  flex-direction: column;
  height: calc(100vh - 120px);
  overflow: hidden;
  background: #f3f4f6;
  min-height: 0;
}

.inv-inbox-pdf-tabs {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  padding: 8px;
  background: #fff;
  border-bottom: 1px solid var(--wms-border);
  flex-shrink: 0;
}

#inv-inbox-pdf-frame,
#inv-inbox-img-preview,
#inv-inbox-pdf-placeholder {
  flex: 1;
  min-height: 0;
}

#inv-inbox-pdf-placeholder {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100%;
  color: var(--wms-muted);
  font-size: 14px;
  padding: 24px;
  text-align: center;
}

#inv-inbox-pdf-frame {
  width: 100%;
  height: 100%;
  border: none;
  display: block;
}

#inv-inbox-img-preview {
  width: 100%;
  height: 100%;
  object-fit: contain;
  padding: 8px;
  box-sizing: border-box;
}

#inv-inbox-pdf-toolbar {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  padding: 8px 12px;
  background: rgba(255, 255, 255, 0.92);
  border-top: 1px solid var(--wms-border);
  display: flex;
  gap: 8px;
  justify-content: center;
  z-index: 2;
}

.inv-inbox-toolbar {
  display: flex;
  gap: 8px;
  margin-bottom: 12px;
  flex-wrap: wrap;
  align-items: center;
}

.inv-progress-bar {
  display: flex;
  gap: 4px;
  align-items: center;
  margin-left: auto;
  flex-wrap: wrap;
}

.inv-step-sep {
  color: var(--wms-muted);
  font-size: 11px;
  user-select: none;
}

.inv-step {
  font-size: 11px;
  padding: 2px 8px;
  border-radius: 12px;
  background: var(--wms-bg-2, #f3f4f6);
  color: var(--wms-muted);
  white-space: nowrap;
}

.inv-step.active {
  background: var(--wms-red, #b91c1c);
  color: #fff;
  font-weight: 600;
}

.inv-step.done {
  background: #d1fae5;
  color: #065f46;
}

.inv-inbox-email-meta {
  font-size: 12px;
  margin: 0 0 12px;
  line-height: 1.4;
}

.inv-inbox-section {
  margin-bottom: 12px;
}

.inv-inbox-section-title {
  font-weight: 600;
  margin-bottom: 8px;
}

.inv-supplier-new-banner {
  background: #fef3c7;
  border: 1px solid #f59e0b;
  border-radius: 8px;
  padding: 10px;
  margin-bottom: 8px;
  font-size: 13px;
}

.inv-inbox-supplier-row {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 8px;
  align-items: end;
}

.inv-supplier-meta-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
  margin-top: 8px;
  font-size: 12px;
  color: var(--wms-muted);
}

.inv-inbox-header-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}

.inv-inbox-dl-chips {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  min-height: 28px;
}

.inv-dl-chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 10px;
  border-radius: 999px;
  font-size: 12px;
  background: #f1f5f9;
  border: 1px solid var(--wms-border);
}

.inv-dl-chip.matched {
  background: #ecfdf5;
  border-color: #6ee7b7;
  color: #065f46;
}

.inv-dl-chip.unmatched {
  background: #fef2f2;
  border-color: #fecaca;
  color: #991b1b;
}

.inv-dl-chip button {
  border: none;
  background: transparent;
  cursor: pointer;
  font-size: 14px;
  line-height: 1;
  color: inherit;
  padding: 0 0 0 2px;
}

.inv-inbox-dl-add {
  display: flex;
  gap: 8px;
  margin-top: 8px;
  flex-wrap: wrap;
  align-items: center;
}

.inv-inbox-items-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
  margin-bottom: 8px;
  flex-wrap: wrap;
}

.inv-inbox-items-scroll {
  overflow-x: auto;
}

.inv-inbox-items-table {
  min-width: 700px;
  font-size: 12px;
}

.inv-inbox-items-table .inv-th-num {
  text-align: right;
}

.inv-inbox-product-cell {
  position: relative;
  min-width: 180px;
}

.inv-item-product-search {
  width: 100%;
  font-size: 12px;
}

.inv-item-dropdown {
  display: none;
  position: absolute;
  left: 0;
  top: 100%;
  margin-top: 2px;
  background: #fff;
  border: 1px solid var(--wms-border);
  border-radius: 6px;
  z-index: 200;
  min-width: 240px;
  max-height: 180px;
  overflow-y: auto;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
}

.inv-item-dd-option {
  display: block;
  width: 100%;
  text-align: left;
  padding: 8px 10px;
  border: none;
  background: #fff;
  cursor: pointer;
  font-size: 12px;
}

.inv-item-dd-option:hover {
  background: #f8fafc;
}

.inv-item-status-auto {
  color: #059669;
  font-size: 11px;
  white-space: nowrap;
}

.inv-item-status-manual {
  color: #d97706;
  font-size: 11px;
  white-space: nowrap;
}

.inv-inbox-card {
  cursor: pointer;
  margin-bottom: 8px;
  padding: 10px 12px;
  transition: box-shadow 0.15s ease;
}

.inv-inbox-card:hover {
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
}

.inv-inbox-card-active {
  outline: 2px solid var(--wms-red, #b91c1c);
  outline-offset: 1px;
}

@media (max-width: 1100px) {
  #inv-inbox-split {
    grid-template-columns: 1fr;
    height: auto;
  }

  #inv-inbox-right {
    height: min(55vh, 520px);
    order: -1;
    border-bottom: 1px solid var(--wms-border);
  }

  #inv-inbox-left {
    max-height: none;
  }
}

/* ── Faktúry — zoznam ── */

#wms-pane-invoices .wms-toolbar {
  align-items: flex-end;
}

.inv-summary-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  padding: 8px 0;
  font-size: 13px;
  border-bottom: 1px solid var(--wms-border);
  margin-bottom: 12px;
}

.inv-sum-pending strong { color: #d97706; }
.inv-sum-matched strong { color: #1d4ed8; }
.inv-sum-disputed strong { color: #dc2626; }
.inv-sum-paid strong { color: #059669; }

.inv-matching-card {
  margin-bottom: 12px;
  padding: 14px 16px;
}

.inv-match-result-card {
  margin-bottom: 8px;
  padding: 10px 12px;
  cursor: pointer;
  transition: border-color 0.15s, box-shadow 0.15s;
}

.inv-match-result-card:hover {
  border-color: var(--wms-red);
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06);
}

.inv-btn-approve {
  background: #059669;
  color: #fff;
  border: none;
}

.inv-btn-dispute {
  background: #dc2626;
  color: #fff;
  border: none;
}

#wms-invoice-match-modal.wms-overlay.open {
  display: flex;
  align-items: center;
  justify-content: center;
}

#wms-invoice-match-modal .wms-modal {
  width: 100%;
  max-height: 90vh;
  display: flex;
  flex-direction: column;
}

#wms-invoice-match-modal .wms-modal-body {
  overflow-y: auto;
}

.inv-dl-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 6px;
}

.inv-dl-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 10px;
  background: var(--wms-surface-2, #f3f4f6);
  border: 1px solid var(--wms-border);
  border-radius: 999px;
  font-size: 13px;
}

.inv-dl-chip button {
  border: none;
  background: transparent;
  cursor: pointer;
  font-size: 16px;
  line-height: 1;
  color: var(--wms-subtle);
  padding: 0 2px;
}

.inv-dl-chip button:hover {
  color: var(--wms-red);
}

.wms-rcv-dropzone {
  cursor: pointer;
}

.inv-matched-grid {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-top: 8px;
  padding: 10px 12px;
  background: #ecfdf5;
  border: 1px solid #a7f3d0;
  border-radius: 8px;
  font-size: 13px;
}

.inv-matched-row {
  color: #065f46;
}

.inv-unmatched-dl {
  font-size: 13px;
  color: #b45309;
}

.inv-detail-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 20px;
  align-items: center;
  margin-bottom: 16px;
  font-size: 14px;
}

.inv-compare-table .inv-diff-warn,
.inv-compare-table .inv-row-warn td {
  color: #dc2626;
  font-weight: 600;
}

.inv-compare-table tr.inv-row-warn {
  background: #fef2f2;
}

.inv-compare-3way {
  font-size: 13px;
}

.inv-compare-3way th,
.inv-compare-3way td {
  vertical-align: middle;
}

.inv-compare-3way tr.wms-stock-warning td {
  background: #fff7ed;
}

#wms-invoice-detail-modal .wms-modal-footer {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
}

#wms-invoice-modal.wms-overlay,
#wms-invoice-detail-modal.wms-overlay {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: none;
  flex-direction: column;
  background: #fff;
}

#wms-invoice-modal.wms-overlay.open,
#wms-invoice-detail-modal.wms-overlay.open {
  display: flex;
}

#wms-invoice-modal .wms-modal,
#wms-invoice-detail-modal .wms-modal {
  flex: 1;
  min-height: 0;
  max-width: none;
  max-height: none;
  margin: 0;
  border-radius: 0;
  display: flex;
  flex-direction: column;
}

#wms-invoice-modal .wms-modal-body,
#wms-invoice-detail-modal .wms-modal-body {
  flex: 1;
  overflow-y: auto;
  padding: 24px 32px;
}

#wms-invoice-modal .wms-modal-header,
#wms-invoice-detail-modal .wms-modal-header,
#wms-invoice-modal .wms-modal-footer,
#wms-invoice-detail-modal .wms-modal-footer {
  flex-shrink: 0;
  padding: 16px 32px;
}

@media (max-width: 480px) {
  .wms-tab span {
    display: none;
  }
  .wms-tab svg {
    margin: 0;
  }
  .wms-tab {
    min-width: 44px;
    justify-content: center;
  }
}

/* ═══════════════════════════════════════════════════════
   MOBILNÁ INVENTÚRA
   ═══════════════════════════════════════════════════════ */
#wms-pane-mobile-inventory.wms-page-pane.active {
  display: flex;
  flex-direction: column;
  min-height: 0;
  flex: 1;
}

#wms-pane-mobile-inventory .wms-mobile-inv {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  background: #f9fafb;
}

.wms-mobile-inv-header {
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 10px 12px;
  background: #fff;
  border-bottom: 1px solid var(--wms-border);
}

.wms-mobile-inv-header .wms-sel {
  width: 100%;
  font-size: 15px;
  padding: 10px 12px;
}

.wms-mobile-inv-search {
  flex-shrink: 0;
  display: grid;
  grid-template-columns: 1fr;
  gap: 8px;
  padding: 10px 12px;
  background: #fff;
  border-bottom: 1px solid var(--wms-border);
}

.wms-mobile-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: 100%;
  min-height: 52px;
  padding: 12px 16px;
  border: 1px solid var(--wms-border);
  border-radius: 12px;
  background: #fff;
  font-size: 16px;
  font-weight: 600;
  cursor: pointer;
  touch-action: manipulation;
}

.wms-mobile-btn:active {
  background: #f3f4f6;
  border-color: var(--wms-red);
}

.wms-mobile-filters {
  flex-shrink: 0;
  padding: 8px 12px;
  background: #fff;
  border-bottom: 1px solid var(--wms-border);
}

.wms-mobile-filters summary {
  cursor: pointer;
  font-weight: 600;
  font-size: 14px;
  padding: 8px 0;
  list-style: none;
}

.wms-mobile-filters summary::-webkit-details-marker {
  display: none;
}

.wms-mobile-filters .wms-sel,
.wms-mobile-filters .wms-input {
  width: 100%;
  margin-top: 8px;
  font-size: 15px;
  padding: 10px 12px;
}

.wms-mobile-filters .wms-btn {
  width: 100%;
  margin-top: 10px;
  min-height: 44px;
}

/*
 * Nadpis skupiny v mobilnej inventúre. Priesvitné pozadie a čiara zdola robili
 * z nadpisu niečo, čo vyzeralo ako súčasť položky NAD ním — predajňa hlásila,
 * že „ČERSTVÉ MÄSO" visí pri nesprávnom artikli. Pozadie je preto plné, čiara
 * je nad aj pod, a nadpis má nad sebou medzeru, ktorá ho oddelí od predošlej
 * položky.
 */
.minv-category-header {
  position: sticky;
  top: 0;
  z-index: 2;
  padding: 7px 10px;
  margin: 14px 0 6px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: var(--wms-text);
  background: var(--wms-bg, #FDFBF7);
  border-top: 1px solid rgba(148, 163, 184, .35);
  box-shadow: 0 2px 6px rgba(15, 23, 42, .06);
  border-bottom: 2px solid var(--wms-accent, #DC2626);
}

.minv-category-header:first-child {
  margin-top: 0;
}

#minv-results {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  padding: 8px 12px;
  background: #fff;
}

.minv-product-card {
  padding: 12px;
  border: 1px solid var(--wms-border);
  border-radius: 10px;
  margin-bottom: 8px;
  cursor: pointer;
  background: #fff;
}

.minv-product-card-counted {
  background: #ecfdf5;
  border-color: #6ee7b7;
}

.minv-product-card-counted:active {
  background: #d1fae5;
}

.minv-counted-check {
  display: inline-block;
  margin-left: 4px;
  font-size: 12px;
  font-weight: 700;
  color: #059669;
}

.minv-counted-badge {
  margin-top: 4px;
  font-size: 11px;
  font-weight: 700;
  color: #059669;
  letter-spacing: 0.01em;
}

.minv-product-card:active {
  background: #fef2f2;
}

.minv-batch-selector {
  flex-shrink: 0;
  padding: 12px;
  margin: 8px 12px;
  background: #fff;
  border: 1px solid var(--wms-border);
  border-radius: 12px;
}

.minv-batch-option {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
  padding: 12px;
  border: 1px solid var(--wms-border);
  border-radius: 8px;
  margin-bottom: 6px;
  cursor: pointer;
  background: #fff;
}

.minv-batch-option:active {
  background: #fef2f2;
}

.minv-system-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
  margin: 8px 0 4px;
  padding: 8px 10px;
  background: #f3f4f6;
  border-radius: 8px;
  font-size: 14px;
}

.minv-qty-diff {
  font-weight: 700;
  font-size: 15px;
}

.minv-qty-diff.minv-diff-ok {
  color: #059669;
}

.minv-qty-diff.minv-diff-short {
  color: #DC2626;
}

.minv-qty-diff.minv-diff-over {
  color: #D97706;
}

.minv-alert { border-radius: 10px; margin-bottom: 6px; }
.minv-alert-expired { background: #FEE2E2; border: 2px solid #DC2626; color: #7F1D1D; }
.minv-alert-today { background: #FFEDD5; border: 1px solid #EA580C; color: #7C2D12; }
.minv-alert-soon { background: #FEF9C3; border: 1px solid #CA8A04; color: #713F12; }

.minv-alert-fold {
  padding: 0;
  overflow: hidden;
}

.minv-alert-summary {
  cursor: pointer;
  font-weight: 700;
  font-size: 13px;
  line-height: 1.35;
  padding: 10px 12px;
  list-style: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  user-select: none;
  touch-action: manipulation;
}

.minv-alert-summary::-webkit-details-marker {
  display: none;
}

.minv-alert-summary::after {
  content: '›';
  flex-shrink: 0;
  font-size: 18px;
  line-height: 1;
  opacity: 0.65;
  transition: transform 0.15s ease;
}

.minv-alert-fold[open] .minv-alert-summary::after {
  transform: rotate(90deg);
}

.minv-alert-body {
  padding: 0 12px 10px;
  border-top: 1px solid rgba(0, 0, 0, 0.08);
}

.minv-alert-meta {
  font-size: 11px;
  opacity: 0.9;
}

.minv-alert-wo-btn {
  background: #fff !important;
  color: #DC2626 !important;
  flex-shrink: 0;
}

.minv-alert-row {
  display: flex; justify-content: space-between; align-items: center;
  padding: 8px 0; border-top: 1px solid rgba(0,0,0,0.08); margin-top: 0;
  gap: 8px;
}

.minv-alert-body .minv-alert-row:first-child {
  border-top: none;
}

.minv-alert-row-info {
  flex-wrap: wrap;
}

.wms-mobile-result-item {
  display: block;
  width: 100%;
  text-align: left;
  padding: 12px;
  margin-bottom: 6px;
  border: 1px solid var(--wms-border);
  border-radius: 10px;
  background: #fff;
  cursor: pointer;
}

.wms-mobile-result-item:active {
  background: #fef2f2;
  border-color: var(--wms-red);
}

.wms-mobile-result-name {
  font-weight: 600;
  font-size: 15px;
  line-height: 1.3;
}

.wms-mobile-count {
  flex-shrink: 0;
  padding: 12px;
  margin: 8px 12px;
  background: #fff;
  border: 2px solid var(--wms-red);
  border-radius: 12px;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
}

.wms-mobile-count .wms-label {
  display: block;
  font-size: 13px;
  font-weight: 600;
  margin: 10px 0 4px;
}

.wms-mobile-count .wms-input,
.wms-mobile-count .wms-sel {
  width: 100%;
  font-size: 16px;
  padding: 10px 12px;
}

.wms-mobile-qty {
  font-size: 22px !important;
  font-weight: 700;
  text-align: center;
}

/*
  Chip „✓ Hotovo" na zavretie klávesnice. Vpravo nahore, tmavý (aby nesplynul
  s červenou obrazovkou) a nad všetkým — kým sa píše, je to jediná vec, ktorú
  klávesnica neprekryje. Id, nie trieda: globálne pravidlo témy pre `button`
  má vyššiu špecifickosť než jedna trieda.
*/
#minv-kbd-done {
  position: fixed;
  top: 8px;
  right: 8px;
  z-index: 4000;
  padding: 9px 15px;
  border: 0;
  border-radius: 999px;
  background: #111827;
  color: #fff;
  font-size: 14px;
  font-weight: 700;
  line-height: 1;
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.3);
}
#minv-kbd-done[hidden] { display: none; }

.wms-mobile-exp-row {
  display: flex;
  gap: 8px;
  align-items: center;
}

.wms-mobile-exp-row .wms-input {
  width: 64px;
  flex-shrink: 0;
  text-align: center;
}

.wms-mobile-exp-row .wms-sel {
  flex: 1;
}

.wms-mobile-warning {
  margin-top: 8px;
  padding: 8px 10px;
  border-radius: 8px;
  background: #fef2f2;
  color: #DC2626;
  font-size: 13px;
  font-weight: 600;
}

.wms-mobile-count-actions {
  display: flex;
  gap: 8px;
  margin-top: 14px;
}

.wms-mobile-count-actions .wms-btn-primary {
  flex: 1;
  min-height: 48px;
  font-size: 16px;
}

.wms-mobile-product-name {
  font-size: 18px;
  font-weight: 700;
  line-height: 1.25;
}

.wms-mobile-product-meta {
  font-size: 13px;
  color: var(--wms-muted);
  margin-top: 4px;
}

.wms-mobile-counted {
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  margin: 0 12px 12px;
  background: #fff;
  border: 1px solid var(--wms-border);
  border-radius: 12px;
  overflow: hidden;
  max-height: 36vh;
}

.wms-mobile-counted-header {
  flex-shrink: 0;
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 10px 12px;
  background: #f0fdf4;
  border-bottom: 1px solid var(--wms-border);
  font-size: 14px;
}

#minv-counted-list {
  flex: 1;
  overflow-y: auto;
  padding: 8px 12px;
}

.wms-mobile-counted-item {
  padding: 10px 0;
  border-bottom: 1px solid #f3f4f6;
}

.wms-mobile-counted-item:last-child {
  border-bottom: none;
}

.wms-mobile-counted-name {
  font-weight: 600;
  font-size: 14px;
}

@media (min-width: 769px) {
  .wms-mobile-inv-search {
    grid-template-columns: repeat(3, 1fr);
  }

  .wms-mobile-inv-header {
    flex-direction: row;
  }

  .wms-mobile-inv-header .wms-sel {
    flex: 1;
  }
}

@media (max-width: 768px) {
  /* Fullscreen panel — nezávislé od skrytia hornej lišty */
  #wmsSection #wms-pane-mobile-inventory.active {
    position: fixed;
    /*
     * Panel začína POD pásmi expirácií a predobjednávok.
     *
     * Pásy sú `position: fixed; top: 0` so z-indexom 1200, panel je tiež
     * fixed na `top: 0` so z-indexom 40 — takže pás ležal priamo na prvom
     * riadku panela. Merané: pás je na 360 px telefóne vysoký 71 px (text sa
     * zalomí do dvoch riadkov) a riadok s výberom predajne má 57 px, čiže
     * zmizol celý. Vedúca videla hore pás a pod ním rovno „EAN sken" —
     * predajňu nemala kde prepnúť.
     *
     * Výška pásu sa mení podľa toho, koľko textu sa zalomí, preto ju nemožno
     * napísať natvrdo; skutočnú hodnotu meria `imUpdateTopBanners()`
     * v admin.html a ukladá ju do `--im-top-banners`.
     */
    top: var(--im-top-banners, 0px);
    right: 0;
    bottom: 0;
    /*
     * Celá šírka. Kedysi tu bolo `left: 3.5rem`, aby panel neprekryl pás ikon
     * bočnej lišty. Lišta sa na telefóne medzitým zmenila na zásuvku (vysunie
     * sa až na ☰), takže rezervovať jej pruh cez celú výšku obrazovky už nie
     * je za čo — na 360 px telefóne to bolo 56 z 360 px, ktoré predajňa pri
     * počítaní nevyužila. Miesto pre ☰ si berie len prvý riadok hlavičky.
     */
    left: 0;
    z-index: 40;
    display: flex !important;
    flex-direction: column;
    min-height: 0;
    background: #f9fafb;
    padding-top: env(safe-area-inset-top, 0);
    padding-bottom: env(safe-area-inset-bottom, 0);
    overflow: hidden;
  }

  #wms-pane-mobile-inventory .wms-mobile-inv {
    flex: 1;
    min-height: 0;
    height: 100%;
    max-height: 100%;
  }

  #wms-pane-mobile-inventory .wms-mobile-inv-header,
  #wms-pane-mobile-inventory .wms-mobile-inv-search,
  #wms-pane-mobile-inventory .wms-mobile-filters,
  #wms-pane-mobile-inventory #minv-alerts {
    flex-shrink: 0;
  }

  #wms-pane-mobile-inventory #minv-alerts {
    margin: 0 !important;
    padding: 8px 12px 0;
  }

  #wms-pane-mobile-inventory .wms-mobile-inv-search {
    grid-template-columns: 1fr;
  }

  #wms-pane-mobile-inventory .wms-mobile-inv-header {
    flex-direction: column;
  }

  #wms-pane-mobile-inventory #minv-results {
    flex: 1 1 0;
    min-height: 0;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
  }

  #wms-pane-mobile-inventory .wms-mobile-counted {
    flex: 0 0 auto;
    max-height: 28vh;
    margin: 0;
    border-radius: 0;
    border-left: none;
    border-right: none;
    border-bottom: none;
  }

  #wms-pane-mobile-inventory #minv-count-form,
  #wms-pane-mobile-inventory .wms-mobile-count,
  #wms-pane-mobile-inventory .minv-batch-selector {
    flex-shrink: 0;
    max-height: 50vh;
    margin-left: 0;
    margin-right: 0;
    border-radius: 0;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
  }

  #wms-pane-mobile-inventory .wms-mobile-btn {
    font-size: 15px;
    min-height: 48px;
  }

  #wms-pane-mobile-inventory .minv-alert-row {
    flex-wrap: wrap;
    gap: 8px;
  }

  #wms-pane-mobile-inventory .minv-alert-row button {
    width: 100%;
  }

  #wms-pane-mobile-inventory .minv-product-card > div {
    flex-direction: column;
    align-items: flex-start !important;
    gap: 4px;
  }

  #wms-pane-mobile-inventory .minv-product-card > div > div:last-child {
    text-align: left !important;
  }
}

/* ── Import inventúrneho formulára — fullscreen 50/50 ── */
.inv-imp-row-off .inv-imp-qty-input {
  background: #f3f4f6;
}

#wms-inv-import-modal.wms-overlay.open {
  display: flex;
  align-items: stretch;
  justify-content: stretch;
  padding: 0;
  z-index: 10030;
}

#wms-inv-import-modal .wms-modal.inv-import-full {
  max-width: none;
  width: 100%;
  height: 100vh;
  max-height: 100vh;
  margin: 0;
  border-radius: 0;
  display: flex;
  flex-direction: column;
}

.inv-import-header,
.inv-import-footer {
  flex-shrink: 0;
  padding: 8px 14px !important;
}

.inv-import-footer {
  padding: 6px 14px !important;
}

#wms-inv-import-modal .inv-import-body {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  padding: 0 !important;
  max-height: none !important;
}

.inv-import-upload-wrap {
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 24px;
}

#inv-import-step-upload:not([hidden]) {
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.inv-import-split-wrap {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
}

#inv-import-step-results:not([hidden]) {
  display: flex;
  flex: 1;
  min-height: 0;
  flex-direction: column;
}

.inv-import-stats-bar {
  flex-shrink: 0;
  display: flex;
  gap: 12px;
  align-items: center;
  padding: 6px 12px;
  background: #f0fdf4;
  border-bottom: 1px solid var(--wms-border);
  font-size: 12px;
}

.inv-import-search-bar {
  flex-shrink: 0;
  display: flex;
  gap: 8px;
  align-items: center;
  padding: 6px 12px;
  border-bottom: 1px solid var(--wms-border);
  background: #fff;
}

.inv-import-search-bar .wms-input {
  flex: 1;
  min-width: 0;
  font-size: 13px;
  padding: 6px 10px;
}

.inv-import-split {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: row;
}

.inv-import-left {
  flex: 1 1 50%;
  min-width: 0;
  max-width: 50%;
  display: flex;
  flex-direction: column;
  border-right: 1px solid var(--wms-border);
  background: #fff;
}

.inv-import-right {
  flex: 1 1 50%;
  min-width: 0;
  max-width: 50%;
  display: flex;
  flex-direction: column;
  background: #374151;
}

.inv-import-page-tabs {
  flex-shrink: 0;
  display: flex;
  flex-wrap: nowrap;
  gap: 4px;
  padding: 6px 8px;
  border-bottom: 1px solid var(--wms-border);
  background: #fafafa;
  overflow-x: auto;
  overflow-y: hidden;
  max-height: 36px;
}

.inv-import-tab {
  padding: 3px 8px;
  border: 1px solid var(--wms-border);
  border-radius: 6px;
  background: #fff;
  font-size: 11px;
  cursor: pointer;
  white-space: nowrap;
  flex-shrink: 0;
  line-height: 1.3;
}

.inv-import-tab:hover {
  border-color: var(--wms-red);
}

.inv-import-tab.inv-import-tab-active {
  background: var(--wms-red);
  color: #fff;
  border-color: var(--wms-red);
}

.inv-import-tab.inv-import-tab-active .muted {
  color: rgba(255, 255, 255, 0.85);
}

.inv-import-hint {
  flex-shrink: 0;
  padding: 3px 10px;
  font-size: 11px;
  line-height: 1.3;
}

.inv-import-table-scroll {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  overflow-x: hidden;
  padding: 0 4px 4px;
}

.inv-import-table {
  font-size: 12px;
  width: 100%;
}

.inv-import-table thead th {
  position: sticky;
  top: 0;
  z-index: 2;
  background: #f9fafb;
  padding: 4px 6px !important;
  font-size: 11px;
  font-weight: 600;
  white-space: nowrap;
}

.inv-import-table tbody td {
  padding: 2px 6px !important;
  vertical-align: middle;
  line-height: 1.25;
}

.inv-import-table .wms-inv-input,
.inv-import-table .inv-imp-qty-input {
  width: 64px !important;
  padding: 2px 4px !important;
  font-size: 12px;
  min-height: 24px;
  min-width: 72px;
  text-align: right;
}

.inv-import-table tbody td:first-child {
  padding: 2px 4px !important;
}

.inv-import-table .inv-imp-raw {
  max-width: 72px;
  word-break: break-all;
  line-height: 1.15;
}

.inv-import-table tr.inv-imp-row-empty td {
  background: #fffbeb;
}

.inv-import-table tr.inv-imp-row-unmatched td {
  background: #fef2f2;
}

.inv-import-table tr.inv-imp-row-off {
  opacity: 0.45;
}

.inv-import-unmatched {
  flex-shrink: 0;
  max-height: 100px;
  overflow-y: auto;
  padding: 4px 8px;
  border-top: 1px solid #fecaca;
  background: #fef2f2;
  font-size: 11px;
}

.inv-import-unmatched .wms-table th,
.inv-import-unmatched .wms-table td {
  padding: 2px 6px !important;
  font-size: 11px;
}

.inv-import-doc-toolbar {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 4px 10px;
  color: #e5e7eb;
  font-size: 12px;
  border-bottom: 1px solid #4b5563;
}

.inv-import-doc-toolbar .inv-import-zoom-label {
  min-width: 42px;
  text-align: center;
  font-variant-numeric: tabular-nums;
}

.inv-import-doc-toolbar .inv-import-doc-hint {
  margin-left: auto;
  font-size: 11px;
  color: #9ca3af;
  white-space: nowrap;
}

.inv-import-doc-view {
  flex: 1;
  min-height: 0;
  overflow: hidden;
  position: relative;
  padding: 0;
  cursor: grab;
  touch-action: none;
  user-select: none;
}

.inv-import-doc-view.is-dragging {
  cursor: grabbing;
}

.inv-import-doc-inner {
  transform-origin: 0 0;
  will-change: transform;
  padding: 8px;
  display: inline-block;
  min-width: 100%;
}

.inv-import-page-img {
  display: block;
  width: 100%;
  height: auto;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.35);
  background: #fff;
  pointer-events: none;
  -webkit-user-drag: none;
  user-select: none;
}

/* ── Doplniť EAN (číselník tovaru) ── */
.wms-add-ean-modal { max-width: 620px; width: 100%; }
.wms-add-ean-body { display: flex; flex-direction: column; gap: 14px; }
.wms-add-ean-lead { margin: 0 0 8px; font-size: 13px; color: var(--wms-muted); }
.wms-add-ean-search-row { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.wms-add-ean-results { max-height: 280px; overflow-y: auto; border: 1px solid var(--wms-border); border-radius: 10px; background: var(--wms-surface); }
.wms-add-ean-empty { padding: 24px; text-align: center; color: var(--wms-subtle); font-size: 13px; }
.wms-add-ean-result-item { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 10px 12px; border-bottom: 1px solid var(--wms-border); cursor: pointer; transition: background 0.15s; }
.wms-add-ean-result-item:last-child { border-bottom: none; }
.wms-add-ean-result-item:hover { background: var(--wms-bg); }
.wms-add-ean-result-name { font-weight: 500; font-size: 14px; }
.wms-add-ean-result-meta { font-size: 12px; color: var(--wms-muted); margin-top: 2px; }
.wms-add-ean-product { padding: 12px; border-radius: 10px; background: var(--wms-bg); border: 1px solid var(--wms-border); }
.wms-add-ean-current { font-size: 13px; color: var(--wms-muted); }
.wms-add-ean-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.wms-add-ean-manual { display: flex; gap: 8px; align-items: center; }
.wms-add-ean-manual .wms-input { flex: 1; }
.wms-add-ean-preview { padding: 12px 14px; border-radius: 10px; background: #F0FDF4; border: 1px solid #BBF7D0; font-size: 13px; }
.wms-add-ean-preview dl { display: grid; grid-template-columns: auto 1fr; gap: 4px 12px; margin: 0; }
.wms-add-ean-preview dt { font-weight: 600; color: var(--wms-muted); }
.wms-add-ean-preview dd { margin: 0; font-family: ui-monospace, monospace; }
.wms-add-ean-preview .wms-add-ean-warn { margin-top: 10px; padding: 8px 10px; border-radius: 8px; background: #FEF3C7; border: 1px solid #FCD34D; color: #92400E; font-size: 12px; }
.wms-add-ean-save-row { display: flex; gap: 8px; flex-wrap: wrap; }
.wms-badge.badge-no-ean { background: #F3F4F6; color: #6B7280; border: 1px solid #E5E7EB; }
/* chýbajúce nastavenie artikla — musí trčať zo zoznamu, nie splynúť s atribútmi */
.wms-badge.wms-badge-gap {
  background: #FFF7ED;
  color: #B45309;
  border: 1px solid #FDBA74;
  font-weight: 700;
}
#add-ean-scan-reader { width: 100%; min-height: 200px; }
#add-ean-scan-reader video { width: 100%; object-fit: cover; border-radius: 8px; }
#add-ean-scan-modal.wms-overlay { z-index: 10050; }
#wms-add-ean-modal.wms-overlay.open { z-index: 10040; }
.minv-ean-scan-modal { max-width: 420px; width: 100%; }
.minv-ean-scan-body { padding-top: 0; }
.minv-ean-scan-viewport { position: relative; width: 100%; height: 220px; overflow: hidden; border-radius: 10px; background: #111; }
#minv-ean-scan-video { width: 100%; height: 100%; object-fit: cover; display: block; }
#minv-ean-scan-modal.wms-overlay { z-index: 10060; }
.minv-ean-scan-hint { font-size: 12px; color: var(--wms-muted); text-align: center; margin: 8px 0 0; }
.minv-ean-scan-status { text-align: center; font-size: 13px; color: #059669; margin-top: 8px; }
.minv-ean-scan-err { margin-top: 8px; padding: 8px; border-radius: 8px; background: #FEE2E2; color: #DC2626; font-size: 12px; }
.minv-ean-scan-overlay { position: absolute; inset: 0; pointer-events: none; display: flex; align-items: center; justify-content: center; }
.minv-ean-scan-frame { position: relative; width: 88%; height: 38%; border: 2px solid rgba(255,255,255,0.35); border-radius: 8px; }
.minv-ean-scan-corner { position: absolute; width: 18px; height: 18px; border: 2px solid #22C55E; }
.minv-ean-scan-corner-tl { top: -2px; left: -2px; border-width: 3px 0 0 3px; border-radius: 6px 0 0 0; }
.minv-ean-scan-corner-tr { top: -2px; right: -2px; border-width: 3px 3px 0 0; border-radius: 0 6px 0 0; }
.minv-ean-scan-corner-bl { bottom: -2px; left: -2px; border-width: 0 0 3px 3px; border-radius: 0 0 0 6px; }
.minv-ean-scan-corner-br { bottom: -2px; right: -2px; border-width: 0 3px 3px 0; border-radius: 0 0 6px 0; }
.minv-ean-scan-line { position: absolute; left: 8%; right: 8%; height: 2px; background: linear-gradient(90deg, transparent, #22C55E, transparent); top: 50%; animation: minv-ean-scan-sweep 2.2s ease-in-out infinite; }
@keyframes minv-ean-scan-sweep { 0%, 100% { transform: translateY(-40px); opacity: 0.3; } 50% { transform: translateY(40px); opacity: 1; } }

.wms-rcv-queue-wrap {
  margin: 0 0 6px;
  padding: 6px 8px;
  background: #FAFAFA;
  border: 1px solid var(--wms-border, #E5E7EB);
  border-radius: 6px;
  flex-shrink: 0;
}

.wms-rcv-queue-wrap.wms-rcv-queue-minimal {
  margin: 0 0 2px;
  padding: 0;
  border: none;
  background: transparent;
}

.wms-rcv-queue-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin: 0 0 4px;
  gap: 8px;
  font-size: 12px;
  flex-wrap: wrap;
}

.wms-rcv-queue-tabs {
  display: flex;
  gap: 4px;
  flex-wrap: wrap;
}

.wms-rcv-queue-tab {
  border: 1px solid var(--wms-border, #E5E7EB);
  background: #fff !important;
  color: #374151 !important;
  border-radius: 5px;
  padding: 3px 8px;
  font-size: 10.5px;
  font-weight: 600;
  cursor: pointer;
  line-height: 1.25;
  box-shadow: none !important;
  transform: none !important;
}

.wms-rcv-queue-tab:hover {
  border-color: #fca5a5;
  background: #fef2f2;
}

.wms-rcv-queue-tab-active {
  border-color: var(--wms-red, #B91C1C);
  background: #fef2f2 !important;
  color: #991B1B !important;
  box-shadow: 0 0 0 1px var(--wms-red, #B91C1C);
}

.wms-rcv-queue-head-actions {
  display: flex;
  gap: 4px;
  align-items: center;
}

#rcv-queue-summary {
  font-size: 10px;
  margin-left: 6px;
}

.wms-rcv-queue-table {
  font-size: 11px;
  table-layout: fixed;
  width: 100%;
}

.wms-rcv-queue-table th,
.wms-rcv-queue-table td {
  padding: 3px 6px;
  line-height: 1.25;
  vertical-align: middle;
  overflow: hidden;
  text-overflow: ellipsis;
}

.wms-rcv-queue-table th:nth-child(1),
.wms-rcv-queue-table td:nth-child(1) { width: 11%; }
.wms-rcv-queue-table th:nth-child(2),
.wms-rcv-queue-table td:nth-child(2) { width: 16%; }
.wms-rcv-queue-table th:nth-child(3),
.wms-rcv-queue-table td:nth-child(3) { width: 24%; }
.wms-rcv-queue-table th:nth-child(4),
.wms-rcv-queue-table td:nth-child(4) { width: 9%; }
.wms-rcv-queue-table th:nth-child(5),
.wms-rcv-queue-table td:nth-child(5) { width: 7%; text-align: right; }
.wms-rcv-queue-table th:nth-child(6),
.wms-rcv-queue-table td:nth-child(6) { width: 9%; }
.wms-rcv-queue-table th:nth-child(7),
.wms-rcv-queue-table td:nth-child(7) { width: 72px; text-align: right; }

/*
 * Popis dokladu sa smie zlomiť do dvoch riadkov. S jedným riadkom sa pri
 * vratke odrezalo práve to podstatné („navážené 48,564 z 48,476") a vo fronte
 * zostalo len „Spárované s CSB — pripra…".
 */
.wms-rcv-queue-sub {
  font-size: 10px;
  line-height: 1.25;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  overflow-wrap: anywhere;
}

.wms-rcv-queue-st-badge {
  font-size: 9px !important;
  padding: 1px 4px !important;
  vertical-align: middle;
}

.wms-rcv-queue-empty {
  padding: 16px !important;
  text-align: center;
}

/*
 * Front dokladov nesmie zjesť celú výšku — na nižšom okne inak stlačí tabuľku
 * položiek na nulu a k prijímaným riadkom sa nedá dorolovať. Preto je výška
 * viazaná na okno a spodná hranica je 0 (front má vlastný scroll).
 */
.wms-rcv-queue-table-wrap {
  min-height: 0;
  max-height: min(320px, 30vh);
  overflow: auto;
}

.wms-rcv-queue-table thead th {
  position: sticky;
  top: 0;
  z-index: 1;
  background: #fff;
  box-shadow: 0 1px 0 var(--wms-border, #E5E7EB);
}

#wms-pane-receiving .wms-page.wms-rcv-doc-open:not(.wms-rcv-queue-expanded) .wms-rcv-queue-table-wrap {
  min-height: 0;
  max-height: min(200px, 24vh);
}

#wms-pane-receiving .wms-page.wms-rcv-queue-expanded .wms-rcv-queue-table-wrap {
  min-height: 0;
  max-height: min(260px, 28vh);
}

/* Tabuľka prijímaných položiek musí zostať použiteľná aj na nízkom okne. */
#wms-rcv-items-wrap {
  min-height: 160px;
}

/*
 * Kým nie je vybraný doklad, obrazovka patrí ZOZNAMU.
 *
 * Predtým mal front dokladov 320 px a pod ním trčala prázdna tabuľka položiek
 * s vetou „Vyberte doklad zo zoznamu…". Na 1200 px vysokom okne tak bolo vidieť
 * pár riadkov frontu a zvyšok obrazovky bol prázdny. Kým človek hľadá doklad,
 * potrebuje vidieť čo najviac riadkov; položky majú zmysel až po kliknutí na
 * OBJ / DLV / VRATKU — vtedy sa `wms-rcv-doc-open` zapne a rozloženie sa vráti.
 */
#wms-pane-receiving .wms-page:not(.wms-rcv-doc-open) .wms-rcv-queue-table-wrap {
  max-height: none;
  flex: 1 1 auto;
}
#wms-pane-receiving .wms-page:not(.wms-rcv-doc-open) #rcv-queue-list-panel {
  display: flex;
  flex-direction: column;
  min-height: 0;
  flex: 1 1 auto;
}
#wms-pane-receiving .wms-page:not(.wms-rcv-doc-open) #rcv-queue-wrap {
  display: flex;
  flex-direction: column;
  min-height: 0;
  flex: 1 1 auto;
}
/* prázdna tabuľka položiek (a jej pätička) sa v tomto stave nezobrazuje */
/* Importované/rozpoznané riadky musia dostať plochu, nie pás na dva riadky. */
#wms-pane-receiving .wms-page.wms-rcv-doc-open #wms-rcv-items-wrap {
  min-height: 320px;
}

#wms-pane-receiving .wms-page:not(.wms-rcv-doc-open) #wms-rcv-items-wrap,
#wms-pane-receiving .wms-page:not(.wms-rcv-doc-open) #wms-rcv-footer {
  display: none;
}

/* Nízke okno (notebook, rozdelená obrazovka): front zmenši a nechaj stránku rolovať. */
@media (max-height: 900px) {
  .wms-rcv-queue-table-wrap,
  #wms-pane-receiving .wms-page.wms-rcv-queue-expanded .wms-rcv-queue-table-wrap {
    max-height: 22vh;
  }
  #wms-pane-receiving .wms-page {
    overflow-y: auto;
  }
}

@media (max-height: 720px) {
  .wms-rcv-queue-table-wrap,
  #wms-pane-receiving .wms-page.wms-rcv-queue-expanded .wms-rcv-queue-table-wrap {
    max-height: 30vh;
  }
  #wms-rcv-items-wrap {
    min-height: 220px;
  }
}

.wms-rcv-queue-row:hover td { background: #F3F4F6; }
/* Celý riadok dokladu je klikateľný — kurzor to musí priznať. */
.wms-rcv-queue-row--click { cursor: pointer; }
.wms-rcv-queue-row--click:focus-visible {
  outline: 2px solid var(--wms-red, #B91C1C);
  outline-offset: -2px;
}

.wms-rcv-queue-collapsed {
  display: flex;
  align-items: center;
  margin: 0;
  flex-shrink: 0;
}

.wms-rcv-queue-collapsed[hidden] {
  display: none !important;
}

.wms-rcv-doc-banner {
  flex-shrink: 0;
  margin: 0 0 4px;
  padding: 5px 8px;
  border-radius: 6px;
  font-size: 11px;
  line-height: 1.3;
}

.wms-rcv-doc-banner-ok {
  background: #ecfdf5;
  border: 1px solid #a7f3d0;
  color: #065f46;
}

.wms-rcv-doc-banner-partial {
  background: #fffbeb;
  border: 1px solid #fde68a;
  color: #92400e;
}

.wms-rcv-doc-banner-hint {
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  color: #475569;
  font-size: 12px;
}

#wms-pane-receiving .wms-page.wms-rcv-doc-open {
  padding-bottom: 0;
}

#wms-pane-receiving .wms-page.wms-rcv-doc-open .wms-rcv-header-extra,
#wms-pane-receiving .wms-page.wms-rcv-doc-open .wms-rcv-hint-icon {
  display: none;
}

/* príjem bez objednávky si pole „Číslo DL" ponechá — inak sa nemá kam napísať */
#wms-pane-receiving .wms-page.wms-rcv-doc-open.wms-rcv-general .wms-rcv-field-dl {
  display: flex;
}

#wms-pane-receiving .wms-page.wms-rcv-doc-open .wms-rcv-btn-secondary {
  display: none;
}

#wms-pane-receiving .wms-page.wms-rcv-doc-open #rcv-orders-inline {
  display: none;
}

#wms-pane-receiving .wms-page.wms-rcv-doc-open .wms-rcv-field-date {
  display: flex;
}

#wms-pane-receiving .wms-page.wms-rcv-doc-open .wms-rcv-toolbar-grid {
  grid-template-columns: minmax(120px, 1fr) minmax(120px, 1fr) minmax(140px, 0.9fr) auto;
}

#wms-pane-receiving .wms-page.wms-rcv-doc-open .wms-rcv-header {
  margin-bottom: 2px;
  padding-bottom: 4px;
}

#wms-pane-receiving .wms-page.wms-rcv-doc-open .wms-rcv-toolbar-main {
  gap: 6px;
}

#wms-pane-receiving .wms-page.wms-rcv-doc-open #wms-rcv-items-wrap {
  flex: 1 1 auto;
  min-height: 0;
}

/*
  OTVORENÁ VRATKA: HLAVIČKA PRÍJMU JE NAVYŠE.
  Predajňa, dodávateľ aj dátum zaúčtovania sú v páse dokladu (a dátum sa tam aj
  mení), tlačidlá „VRATKA PP" a „PRÍJEM BEZ OBJ" zakladajú NOVÝ doklad — kým je
  otevrený tento, netreba ich. Dva riadky (63 px) preto v tomto pohľade nie sú;
  von sa ide „✕ Zrušiť" v páse dokladu alebo záložkou nad ním. „+ Položka"
  zostáva — to je akcia otvoreného dokladu.
*/
#wms-pane-receiving .wms-page.wms-rcv-doc-open.wms-rcv-vratka .wms-rcv-toolbar-grid > .wms-rcv-field,
#wms-pane-receiving .wms-page.wms-rcv-doc-open.wms-rcv-vratka #rcv-pp-return-btn,
#wms-pane-receiving .wms-page.wms-rcv-doc-open.wms-rcv-vratka #rcv-general-btn {
  display: none !important;
}

#wms-pane-receiving .wms-page.wms-rcv-pp-mode .wms-rcv-header-extra,
#wms-pane-receiving .wms-page.wms-rcv-pp-mode .wms-rcv-hint-icon {
  display: none;
}

.wms-pp-return-panel {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
  border: 2px solid var(--wms-red);
  border-radius: 8px;
  background: #fff;
  overflow: hidden;
}

.wms-pp-return-panel[hidden] {
  display: none !important;
}

.wms-pp-return-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  padding: 8px 12px;
  background: #fef2f2;
  border-bottom: 1px solid #fecaca;
}

.wms-pp-return-head-main {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}

.wms-pp-return-head-actions {
  display: flex;
  gap: 8px;
  align-items: center;
}

#wms-pane-receiving .wms-page.wms-rcv-pp-mode #wms-pp-return-panel {
  flex: 1 1 auto;
  min-height: 0;
}

/*
 * Vratka sa píše po riadkoch a predavačka musí vidieť aj šarže, z ktorých
 * odpisuje. Jeden viditeľný riadok znamená písať naslepo, preto má tabuľka
 * garantovanú výšku — nie len „zvyšok miesta".
 *
 * Garancia ale nesmie byť väčšia než miesto, ktoré panel naozaj má. Pri nízkom
 * okne (notebook so zoomom prehliadača — 620 px) vyšla 46vh + hlavička + hint
 * + riadok poznámky + spodná lišta nad výšku panela: tabuľka pretiekla mimo
 * panela (`overflow: hidden`) a POSLEDNÝ RIADOK skončil pod prilepenou lištou
 * „Odoslať" — predavačka videla z položky len hornú polovicu a šarže vôbec.
 * Preto tu garancia platí len tam, kde sa zmestí (vysoké okno); inak dostane
 * tabuľka zvyšok miesta a roluje vo vnútri, takže žiadny riadok nezmizne.
 */
#wms-pane-receiving .wms-page.wms-rcv-pp-mode .pp-ret-items-wrap {
  flex: 1 1 auto;
  min-height: 0;
  max-height: none;
}
@media (min-height: 900px) {
  #wms-pane-receiving .wms-page.wms-rcv-pp-mode .pp-ret-items-wrap {
    min-height: min(58vh, 460px);
  }
}
.pp-ret-hint { font-size: 11px; margin: 0; padding: 6px 12px; line-height: 1.35; border-bottom: 1px solid var(--wms-border); }

.pp-ret-meta-row {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  align-items: flex-end;
  padding: 8px 12px;
  border-bottom: 1px solid var(--wms-border);
}
.pp-ret-meta-note { flex: 1; min-width: 200px; }
.pp-ret-toolbar { margin-bottom: 8px; }
.pp-ret-items-wrap {
  flex: 1 1 auto;
  min-height: 0;
  overflow: auto;
  /* Spodok: aby posledný riadok nekončil zarovno s prilepenou lištou. */
  padding: 0 8px 14px;
  scroll-padding-bottom: 14px;
}

/* Na nízkych obrazovkách (iPad naležato, notebook so zoomom) ustúpi chrome
   panela, nie riadky — každých ušetrených 30 px je jeden riadok navyše. */
@media (max-height: 820px) {
  .pp-ret-hint { padding: 4px 12px; font-size: 10.5px; }
  .pp-ret-meta-row { padding: 6px 12px; }
  .wms-pp-return-head { padding: 6px 12px; }
}
@media (max-height: 760px) {
  /* Nápoveda ku klávesnici je návod, nie údaj — na nízkom okne ustúpi riadkom. */
  .pp-ret-hint { display: none; }
  /* Poznámka a dátum na jeden nízky riadok (label vedľa polí, nie nad nimi). */
  .pp-ret-meta-row { padding: 5px 12px; gap: 8px; align-items: center; }
  .pp-ret-meta-row .wms-fg { flex-direction: row; align-items: center; gap: 6px; margin: 0; }
  .pp-ret-meta-row .wms-label { font-size: 10.5px; margin: 0; white-space: nowrap; }
  .pp-ret-meta-row .wms-input { min-height: 32px; padding: 4px 8px; font-size: 12px; }
  .pp-ret-meta-row .wms-btn { min-height: 32px; }
  .wms-pp-return-head { padding: 4px 12px; }
  /* Toolbar hore (predajňa / dodávateľ / dátum) je pri otvorenej vratke údaj,
     ktorý panel aj tak nesie v hlavičke — na nízkom okne ustúpi riadkom.
     Tlačidlá v tom istom riadku zostávajú, tie sú akcia. */
  #wms-pane-receiving .wms-page.wms-rcv-pp-mode .wms-rcv-toolbar-grid .wms-rcv-field {
    display: none;
  }
}
.pp-ret-table th,
.pp-ret-table td { font-size: 12px; padding: 6px 8px; vertical-align: top; }
.pp-ret-product-cell { min-width: 220px; }
.pp-ret-fifo-cell { min-width: 260px; width: 32%; }
.pp-ret-batch-sel { width: 100%; max-width: 260px; }
.pp-ret-product-picker { position: relative; }
.pp-ret-product-search { width: 100%; font-size: 12px; padding: 6px 8px; }
.pp-ret-product-meta { font-size: 10px; color: var(--wms-muted); margin-top: 2px; }

/*
 * Vybraný tovar v rozpísanom riadku. V `<input>` sa dlhý názov zrezal na šírku
 * stĺpca a nedal sa dočítať; tu sa zalomí (dva riadky) a ostane čitateľný aj
 * na úzkom okne. „✎ zmeniť" vráti hľadanie.
 */
.pp-ret-product-picked {
  font-size: 12px;
  font-weight: 600;
  line-height: 1.3;
  overflow-wrap: anywhere;
}
.pp-ret-name-edit {
  margin-top: 2px;
  padding: 0;
  border: 0;
  background: none;
  color: var(--wms-muted);
  font: inherit;
  font-size: 10.5px;
  text-decoration: underline;
  cursor: pointer;
}
.pp-ret-name-edit:hover { color: var(--wms-red, #B91C1C); }
.pp-ret-product-dropdown {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  z-index: 120;
  background: #fff;
  border: 1px solid var(--wms-border);
  border-radius: 8px;
  max-height: 200px;
  overflow-y: auto;
  box-shadow: 0 8px 20px rgba(0,0,0,0.12);
}
.pp-ret-dd-item {
  display: block;
  width: 100%;
  text-align: left;
  border: none;
  background: #fff;
  padding: 8px 10px;
  cursor: pointer;
  border-bottom: 1px solid #f3f4f6;
}
.pp-ret-dd-item:hover { background: #fef2f2; }
.pp-ret-dd-name { display: block; font-size: 12px; font-weight: 500; }
.pp-ret-dd-meta { display: block; font-size: 10px; color: var(--wms-muted); }
.pp-ret-dd-empty { padding: 10px; font-size: 12px; color: var(--wms-muted); }
.pp-ret-fifo-badge {
  display: inline-block;
  font-size: 9px;
  font-weight: 700;
  color: #1d4ed8;
  background: #dbeafe;
  padding: 1px 5px;
  border-radius: 4px;
  margin-bottom: 2px;
}
.pp-ret-fifo-line { font-size: 11px; line-height: 1.3; }
.pp-ret-fifo-stock { font-size: 10px; color: var(--wms-muted); margin-top: 2px; }
.pp-ret-fifo-warn { font-size: 11px; color: #B91C1C; font-weight: 500; }
.pp-ret-row-confirmed { background: #f0fdf4; }
.pp-ret-row-confirmed td { opacity: 0.92; }
.pp-ret-product-name-conf { font-weight: 600; font-size: 12px; }
.pp-ret-actions-bar {
  padding: 8px 12px;
  border-top: 1px solid var(--wms-border);
  background: #fafafa;
}
.pp-ret-actions-inner { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.pp-ret-audit-panel {
  margin: 0 8px 12px;
  padding: 8px 0;
  border-top: 1px solid var(--wms-border);
}
.pp-ret-audit-head { font-size: 12px; margin-bottom: 6px; padding: 0 4px; }
.pp-ret-audit-table th, .pp-ret-audit-table td { font-size: 11px; padding: 5px 8px; }
/* rozpis zásahu pri oprave — zbalený, aby história zostala prehľadná */
.pp-ret-audit-changes { margin-top: 3px; }
.pp-ret-audit-changes > summary {
  cursor: pointer;
  font-size: 10px;
  color: var(--wms-text-muted, #6B7280);
  list-style: none;
}
.pp-ret-audit-changes > summary::before { content: '▸ '; }
.pp-ret-audit-changes[open] > summary::before { content: '▾ '; }
.pp-ret-audit-changes ul { margin: 3px 0 0 12px; padding: 0 0 0 8px; }
.pp-ret-audit-changes li { font-size: 10px; line-height: 1.45; }
.wms-audit-table th, .wms-audit-table td { font-size: 11px; padding: 5px 8px; vertical-align: middle; }
.wms-audit-badge {
  display: inline-block;
  padding: 2px 7px;
  border-radius: 4px;
  font-size: 10px;
  font-weight: 600;
  white-space: nowrap;
  line-height: 1.35;
}
.audit-mv-receipt { background: #DCFCE7; color: #166534; }
.audit-mv-sale { background: #FEE2E2; color: #B91C1C; }
.audit-mv-return { background: #FFEDD5; color: #C2410C; }
.audit-mv-inventory { background: #DBEAFE; color: #1D4ED8; }
.audit-mv-writeoff { background: #F3F4F6; color: #6B7280; }
.audit-mv-transfer-in { background: #CCFBF1; color: #0F766E; }
.audit-mv-transfer-out { background: #EDE9FE; color: #6D28D9; }
.audit-mv-reverse { background: #FEF3C7; color: #B45309; }
.audit-mv-default { background: #F3F4F6; color: #374151; }
.audit-doc-dl { background: #DBEAFE; color: #1E40AF; }
.audit-doc-uc { background: #EDE9FE; color: #6D28D9; }
.audit-doc-exp { background: #CCFBF1; color: #0F766E; }
.audit-doc-vratka { background: #FFEDD5; color: #C2410C; }
.audit-doc-obj { background: #E0E7FF; color: #4338CA; }
.audit-doc-inv { background: #F3F4F6; color: #4B5563; }
.audit-doc-csb { background: #FCE7F3; color: #BE185D; }
.audit-doc-default { background: #F9FAFB; color: #6B7280; }
.audit-qty-plus { color: #166534; }
.audit-qty-minus { color: #B91C1C; }

/* ── ISTERMEAT shell (loyalty-ui-v2) ── */
body.loyalty-ui-v2 #wmsSection {
  --wms-bg: #FBF7F0;
  --wms-bg2: #F5F5F4;
  --wms-border: #E7E5E4;
  --wms-surface: #FFFFFF;
  --wms-glass: rgba(255, 255, 255, 0.92);
  font-family: 'Manrope', system-ui, sans-serif;
  background: transparent;
}

body.loyalty-ui-v2 #mopSection {
  --wms-bg: #FBF7F0;
  --wms-border: #E7E5E4;
  font-family: 'Manrope', system-ui, sans-serif;
  background: transparent;
}

body.loyalty-ui-v2 #wmsSection .wms-card,
body.loyalty-ui-v2 #mopSection .wms-card {
  border-radius: 1rem;
  box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.07), 0 1px 2px -1px rgb(0 0 0 / 0.07);
}

body.loyalty-ui-v2 #wmsSection .wms-btn-primary {
  background: #B91C1C;
  border-color: #B91C1C;
}

body.loyalty-ui-v2 #wmsSection .wms-btn-primary:hover {
  background: #991B1B;
}

/* PP nákup — prehľadová mriežka s DB stĺpcami */
.wms-link-btn {
  background: none;
  border: none;
  padding: 0;
  color: var(--wms-red, #B91C1C);
  font: inherit;
  font-size: inherit;
  cursor: pointer;
  text-align: left;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.wms-link-btn:hover { color: #991B1B; }
.pp-purchase-grid thead th {
  position: sticky;
  top: 0;
  z-index: 2;
  background: var(--wms-surface, #fff);
  box-shadow: 0 1px 0 var(--wms-border, #e5e7eb);
}
.pp-purchase-grid .wms-badge.ok { background: #ECFDF5; color: #065F46; }
.pp-purchase-grid .wms-badge.err { background: #FEF2F2; color: #991B1B; }
.pp-purchase-grid .wms-badge.warn { background: #FFFBEB; color: #92400E; }
.pp-purchase-row--unmatched { background: #FEF2F2; }
.pp-purchase-row--supplier_only,
.pp-purchase-row--product_only { background: #FFFBEB; }
.pp-purchase-stats .wms-badge { background: var(--wms-bg2, #f3f4f6); color: #374151; }
.pp-purchase-stats .wms-badge.ok { background: #ECFDF5; color: #065F46; }
.pp-purchase-stats .wms-badge.err { background: #FEF2F2; color: #991B1B; }
.pp-purchase-stats .wms-badge.warn { background: #FFFBEB; color: #92400E; }
.pp-import-block {
  border: 1px solid var(--wms-border, #e5e7eb);
  border-radius: 10px;
  margin-bottom: 16px;
  overflow: hidden;
  background: var(--wms-surface, #fff);
}
.pp-import-block-head {
  padding: 10px 14px;
  background: var(--wms-bg2, #f8fafc);
  border-bottom: 1px solid var(--wms-border, #e5e7eb);
}
.pp-import-expand-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.pp-import-block-collapsed .pp-import-block-head { border-bottom: none; }
.pp-import-block-title { font-weight: 600; font-size: 13px; }
.pp-import-block-meta { font-size: 11px; margin-top: 4px; }
.pp-import-block-table { overflow: auto; max-height: min(52vh, 560px); }
.pp-purchase-row--clickable { cursor: pointer; }
.pp-purchase-row--clickable:hover { background: #EFF6FF !important; }
#pp-import-block-preview { border-color: #FCD34D; }
#pp-import-block-preview .pp-import-block-head { background: #FFFBEB; }
.pl-stores-kpi-card {
  cursor: pointer;
  transition: box-shadow .15s, border-color .15s, transform .1s;
  border: 1px solid transparent;
}
.pl-stores-kpi-card:hover {
  border-color: var(--wms-border, #e5e7eb);
  box-shadow: 0 2px 8px rgba(0,0,0,.06);
}
.pl-stores-kpi-card.is-active {
  border-color: #DC2626;
  box-shadow: 0 0 0 2px rgba(220,38,38,.15);
}
.pl-stores-kpi-card[data-kpi-filter="below_nc"].is-active {
  border-color: #D97706;
  box-shadow: 0 0 0 2px rgba(217,119,6,.2);
}
.pl-stores-kpi-card[data-kpi-filter="with_nc"].is-active {
  border-color: #059669;
  box-shadow: 0 0 0 2px rgba(5,150,105,.2);
}
.pp-cmp-diff { display: inline-flex; align-items: center; gap: 4px; flex-wrap: wrap; }
.pp-cmp-csv { color: #6B7280; font-size: 11px; }
.pp-cmp-arrow { color: #9CA3AF; font-size: 10px; }
.pp-cmp-db { font-weight: 600; }
.pp-cmp-nc-diff .pp-cmp-db { color: #DC2626; }
.pp-cmp-stack .pp-cmp-csv { margin-bottom: 2px; }
.pp-purchase-grid th[data-col-id],
.pp-purchase-grid td[data-col-id] { overflow: hidden; text-overflow: ellipsis; }
.pp-purchase-grid th .pp-col-resize {
  position: absolute; right: 0; top: 0; bottom: 0; width: 5px; cursor: col-resize;
}
.pp-purchase-grid th { position: relative; }
.pp-col-settings {
  position: fixed; z-index: 1200; background: #fff; border: 1px solid var(--wms-border, #e5e7eb);
  border-radius: 10px; box-shadow: 0 8px 30px rgba(0,0,0,.12); width: min(420px, 92vw);
  max-height: min(70vh, 560px); overflow: auto; padding: 14px 16px;
}
.pp-col-settings h4 { margin: 0 0 8px; font-size: 14px; }
.pp-col-settings-row {
  display: grid; grid-template-columns: auto 1fr 64px; gap: 8px; align-items: center;
  padding: 4px 0; font-size: 12px; border-bottom: 1px solid var(--wms-border, #f3f4f6);
}
.pp-col-settings-row label { display: flex; align-items: center; gap: 6px; cursor: pointer; }
.pp-col-settings-row input[type="number"] { width: 100%; padding: 4px 6px; font-size: 12px; }

/* ===== Inventúra — multi-výber kategórií (rozsah inventúry) ===== */
.wms-inv-cat-multi { position: relative; display: inline-block; }
.wms-inv-cat-btn { cursor: pointer; text-align: left; min-width: 180px; }
.wms-inv-cat-btn--partial {
  border-color: #D97706; color: #92400E; background: #FFFBEB; font-weight: 600;
}
.wms-inv-cat-panel {
  position: absolute; top: calc(100% + 4px); left: 0; z-index: 80;
  min-width: 280px; max-height: 340px; overflow-y: auto;
  background: var(--wms-surface, #fff); border: 1px solid var(--wms-border, #e5e7eb);
  border-radius: var(--wms-r, 8px); box-shadow: 0 8px 24px rgba(0, 0, 0, .14); padding: 6px;
}
.wms-inv-cat-panel-head {
  display: flex; align-items: center; gap: 4px; padding: 2px 4px 6px;
  border-bottom: 1px solid var(--wms-border, #e5e7eb); margin-bottom: 4px;
}
.wms-inv-cat-hint { margin-left: auto; font-size: 11px; color: var(--wms-muted, #6b7280); }
.wms-inv-cat-item {
  display: flex; align-items: center; gap: 8px; padding: 4px 6px;
  border-radius: var(--wms-r-sm, 6px); cursor: pointer; font-size: 13px; color: var(--wms-text, #111827);
}
.wms-inv-cat-item:hover { background: var(--wms-bg, #f3f4f6); }
.wms-inv-cat-item input { accent-color: var(--wms-red, #dc2626); flex-shrink: 0; }
.wms-inv-cat-count { margin-left: auto; font-size: 11px; color: var(--wms-muted, #6b7280); }

/* Inventúra — hlavičky kategórií v tabuľke (zoradenie podľa podkategórií) */
.inv-cat-head td {
  background: var(--wms-bg, #f6f1ea);
  border-top: 2px solid var(--wms-border, #e5e7eb);
  padding: 5px 10px;
  font-size: 11.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em;
  color: var(--wms-muted, #6b7280);
}
.inv-cat-head-count {
  margin-left: 8px; font-weight: 600; font-size: 10.5px;
  color: var(--wms-subtle, #9ca3af); text-transform: none; letter-spacing: 0;
}
.wms-inv-cat-parent { color: var(--wms-muted, #6b7280); }
/* prázdny panel musí povedať prečo je prázdny, nie len zívať */
.wms-inv-cat-empty {
  margin: 0; padding: 8px 6px; font-size: 11.5px; line-height: 1.4;
  color: var(--wms-muted, #6b7280);
}

/*
 * Na telefóne sa 62 px zo 393 stratilo v zanorených odsadeniach (shell 18 +
 * karta 16 + sekcia 16 + panel 12). Mobilné obrazovky idú preto na plnú šírku.
 */
@media (max-width: 700px) {
  body:has(#wms-pane-mobile-inventory.active) #adminMainShell.loyalty-admin-authed,
  body:has(#wms-pane-mobile-receiving.active) #adminMainShell.loyalty-admin-authed {
    padding-left: 0;
    padding-right: 0;
  }

  body:has(#wms-pane-mobile-inventory.active) #adminMainShell .card,
  body:has(#wms-pane-mobile-receiving.active) #adminMainShell .card {
    padding-left: 0;
    padding-right: 0;
    border-radius: 0;
  }

  #wms-pane-mobile-inventory.wms-page-pane.active,
  #wms-pane-mobile-receiving.wms-page-pane.active {
    padding-left: 0;
    padding-right: 0;
  }
}

/* ═══════════════════════════════════════════════════════
   MOBILNÁ INVENTÚRA — telefón
   Pôvodne to bola desktopová stránka natlačená do 390 px: tri veľké banery
   expirácií, tri tlačidlá na plnú šírku, filtre a až úplne dole zoznam
   spočítaných, ku ktorému sa nedalo doscrollovať. Teraz: kompaktná prilepená
   hlavička, expirácie ako skladacie pásiky (naraz otvorený jeden), tlačidlá
   3×, zoznam tovaru v úzkych riadkoch a spočítané v spodnom vysúvacom paneli.
   ═══════════════════════════════════════════════════════ */
#wms-mobile-inventory {
  /* scrollovaná plocha je tento div — od neho sa počítajú prilepené hlavičky */
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  padding-bottom: 8px;
}

/* riadok tovaru: názov + jeden riadok drobného textu + množstvo vpravo */
#wms-mobile-inventory .minv-pc-row {
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 34px;
}

#wms-mobile-inventory .minv-product-card {
  padding: 8px 10px;
}

#wms-mobile-inventory .minv-pc-right {
  min-width: 72px;
}

#wms-mobile-inventory .minv-pc-main {
  flex: 1;
  min-width: 0;
}

#wms-mobile-inventory .minv-pc-name {
  font-weight: 600;
  font-size: 13.5px;
  line-height: 1.25;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

#wms-mobile-inventory .minv-pc-meta {
  font-size: 11px;
  color: var(--wms-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

#wms-mobile-inventory .minv-pc-right {
  flex-shrink: 0;
  text-align: right;
}

#wms-mobile-inventory .minv-pc-qty {
  font-weight: 600;
  font-size: 13px;
  white-space: nowrap;
}

#wms-mobile-inventory .minv-counted-badge {
  font-size: 10.5px;
}

#wms-mobile-inventory .wms-mobile-inv-header {
  position: sticky;
  top: 0;
  z-index: 6;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px;
  padding: 8px 10px;
}

#wms-mobile-inventory .wms-mobile-inv-header .wms-sel {
  font-size: 13px;
  padding: 8px 8px;
  min-height: 40px;
}

/* expirácie: úzke pásiky namiesto troch veľkých banerov */
/*
 * Expirácie ako čipy v jednom-dvoch riadkoch: zatvorené sedia vedľa seba
 * (predtým tri banery na plnú šírku zabrali tretinu obrazovky), otvorený sa
 * roztiahne na celý riadok a jeho zoznam má vlastný scroll.
 */
#wms-mobile-inventory #minv-alerts {
  margin: 0 !important;
  padding: 6px 10px 0;
}

/* celý blok expirácií je jeden riadok, kým sa neťukne */
#wms-mobile-inventory .minv-alerts-wrap > summary.minv-alerts-sum {
  list-style: none;
  cursor: pointer;
  min-height: 40px;
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 8px 10px;
  font-size: 12.5px;
  font-weight: 600;
  color: #B91C1C;
  background: #FEF2F2;
  border: 1px solid #FECACA;
  border-radius: 9px;
}

#wms-mobile-inventory .minv-alerts-wrap > summary.minv-alerts-sum::after {
  content: '▾';
  margin-left: auto;
  font-weight: 400;
}

#wms-mobile-inventory .minv-alerts-wrap[open] > summary.minv-alerts-sum::after {
  content: '▴';
}

#wms-mobile-inventory .minv-alerts-inner {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  gap: 5px;
  margin-top: 5px;
}

#wms-mobile-inventory .minv-alert-fold {
  border-radius: 8px;
  flex: 1 1 30%;
  min-width: 30%;
}

#wms-mobile-inventory .minv-alert-fold[open] {
  flex-basis: 100%;
}

#wms-mobile-inventory .minv-alert-summary {
  padding: 7px 8px;
  font-size: 11.5px;
  line-height: 1.2;
  min-height: 40px;
  display: flex;
  align-items: center;
}

#wms-mobile-inventory .minv-alert-body {
  max-height: 34vh;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}

#wms-mobile-inventory .minv-alert-row {
  padding: 8px 10px;
  font-size: 12.5px;
  gap: 8px;
}

#wms-mobile-inventory .minv-alert-wo-btn {
  min-height: 36px;
  padding: 4px 12px;
  white-space: nowrap;
}

/*
 * TRI AKCIE SA MUSIA ZMESTIŤ AJ NA NAJUŽŠÍ TELEFÓN.
 *
 * `1fr` je skratka za `minmax(auto, 1fr)` — spodná hranica stĺpca je šírka
 * jeho obsahu. Pri `white-space: nowrap` je tým obsahom celý nápis, takže sa
 * stĺpec odmietol stiahnuť: riadok si pýtal 323 px, no panel má na 360 px
 * telefóne 304 px (56 px berie bočná lišta) a „EAN ručne" vytieklo za okraj
 * obrazovky. Merané v Chromiu: 320 px → pretečenie 59 px, 360 px → 19 px,
 * 375 px → 4 px, od 390 px vyššie sa to zmestilo — presne to hlásila predajňa.
 *
 * `minmax(0, 1fr)` dovolí stĺpcom klesnúť pod šírku nápisu, takže tri
 * tlačidlá sa vždy rozdelia o šírku panela a nič sa neoreže.
 */
#wms-mobile-inventory .wms-minv-actions-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 6px;
  padding: 8px 10px;
}

#wms-mobile-inventory .wms-mobile-btn-sm {
  min-height: 44px;
  font-size: 12.5px;
  padding: 6px 6px;
  gap: 5px;
  white-space: nowrap;
  line-height: 1.15;
  min-width: 0;
}

#wms-mobile-inventory .wms-mobile-btn-sm .im-btn-ico {
  width: 16px;
  height: 16px;
}

/*
 * ÚZKY TELEFÓN: IKONA NAD NÁPIS, NÁPIS SA SMIE ZALOMIŤ.
 *
 * Keď stĺpce smú klesnúť, na 320 px telefóne vyjde na tlačidlo ~77 px. V jednom
 * riadku sa doň ikona (16 px) a „Foto tovaru" (~68 px) nezmestia a text by sa
 * orezal — čiže ten istý problém, len o úroveň nižšie. Pod sebou sa zmestia
 * obe a nápis zostane celý: to je to, čo v predajni treba prečítať na prvý
 * pohľad. Dotyková plocha ide z 44 na 52 px, takže sa trafí aj palcom.
 *
 * Hranica je 440 px, nie tesne nad najužším telefónom: v portréte sú všetky
 * bežné mobily 320–430 px, takže na Pixeli aj na iPhone Pro Max vyzerá riadok
 * rovnako. Keby hranica bežala stredom (napr. 400 px), vedúca na 390 px
 * telefóne by videla ikonu nad nápisom a kolegyňa na 412 px vedľa seba —
 * a to už vyzerá ako chyba, nie ako návrh. Tablet a počítač zostávajú v riadku.
 */
@media (max-width: 440px) {
  #wms-mobile-inventory .wms-minv-actions-grid {
    gap: 5px;
    padding: 8px 8px;
  }

  #wms-mobile-inventory .wms-mobile-btn-sm {
    flex-direction: column;
    justify-content: center;
    gap: 3px;
    padding: 6px 4px;
    font-size: 11.5px;
    line-height: 1.15;
    white-space: normal;
    overflow-wrap: anywhere;
    text-align: center;
    min-height: 52px;
  }

  #wms-mobile-inventory .wms-mobile-btn-sm .im-btn-ico {
    width: 18px;
    height: 18px;
    flex: 0 0 auto;
  }
}

#wms-mobile-inventory .wms-minv-search-row {
  padding: 8px 10px;
  background: #fff;
  border-bottom: 1px solid var(--wms-border);
}

/*
 * Voľba „pripočítať / prepísať" pri opakovanom rátaní. Žltý pás, aby bolo na
 * prvý pohľad vidieť, že sa čaká na rozhodnutie a uloženie ešte neprebehlo.
 */
#wms-mobile-inventory .wms-minv-existing-choice {
  margin: 8px 0 0;
  padding: 10px;
  border: 1px solid #FCD34D;
  border-radius: 10px;
  background: #FFFBEB;
  font-size: 13px;
  line-height: 1.35;
}
#wms-mobile-inventory .wms-minv-existing-choice .minv-choice-btns {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 6px;
  margin-top: 8px;
}
#wms-mobile-inventory .wms-minv-existing-choice .wms-btn {
  min-height: 42px;
  font-size: 12.5px;
  white-space: normal;
  line-height: 1.2;
}

/*
 * Zapnutý filter „Zostáva spočítať" — tlačidlo je medzi akciami hore, tu je
 * len jednoriadkový odpočet. Keď filter nebeží, riadok sa vôbec nekreslí.
 */
#wms-mobile-inventory .wms-minv-todo-row {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 4px 10px;
  background: #FFFBEB;
  border-bottom: 1px solid #FCD34D;
}
/* `display: flex` vyššie prebíja `hidden` z prehliadača — bez tohto by nad
   zoznamom svietil prázdny žltý pásik aj s vypnutým filtrom. */
#wms-mobile-inventory .wms-minv-todo-row[hidden] { display: none !important; }
#wms-mobile-inventory .wms-minv-todo-row .muted {
  font-size: 12px;
  font-weight: 600;
  color: #92400E;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Zapnutý filter medzi akciami — tmavší, aby bolo vidieť, že zoznam je orezaný. */
#wms-mobile-inventory .wms-mobile-btn-sm.is-on {
  background: #7F1D1D;
  border-color: #7F1D1D;
  color: #fff;
}

/*
 * Kategória a „Ďalšie filtre" v jednom riadku. Rozbalené filtre si vezmú celý
 * riadok pod sebou — v polovičnej šírke by sa štyri polia nedali obsluhovať.
 */
#wms-mobile-inventory .wms-minv-cat-row {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
#wms-mobile-inventory .wms-minv-cat-row > .wms-sel {
  flex: 1 1 auto;
  min-width: 0;
}
#wms-mobile-inventory .wms-minv-cat-row > details {
  flex: 0 0 auto;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
}
#wms-mobile-inventory .wms-minv-cat-row > details[open] {
  flex: 1 1 100%;
}
#wms-mobile-inventory .wms-minv-cat-row > details > summary {
  min-height: 34px;
  padding: 0 10px;
  display: inline-flex;
  align-items: center;
  white-space: nowrap;
  font-size: 12.5px;
  border: 1px solid var(--wms-border);
  border-radius: 8px;
  background: #fff;
}

#wms-mobile-inventory .wms-mobile-filters {
  margin: 0;
  padding: 0 10px 8px;
}

#wms-mobile-inventory .wms-mobile-filters > summary {
  font-size: 12.5px;
  padding: 8px 0;
  min-height: 38px;
  display: flex;
  align-items: center;
}

#wms-mobile-inventory .wms-mobile-filters .wms-sel,
#wms-mobile-inventory .wms-mobile-filters .wms-input {
  font-size: 13px;
  min-height: 40px;
  margin-bottom: 6px;
}

/* zoznam tovaru: úzke riadky, hlavička kategórie sa lepí */
#wms-mobile-inventory #minv-results {
  padding: 0 10px 8px;
}

/*
 * Nadpis skupiny NEBOL prilepený vždy: `position: sticky` s odsadením 57 px pod
 * hlavičkou predajne vyzeral správne len vtedy, keď scrollovala celá stránka.
 * V troch rôznych situáciách (mriežka, vlastný scroller zoznamu, telefón po
 * rozbalení filtrov) skončil nad kartami a rozrezal ich na polovicu — predajňa
 * to hlásila trikrát. Stojí preto na svojom mieste v zozname; skupina je aj tak
 * krátka a názov artikla je na každej karte.
 */
#wms-mobile-inventory .minv-category-header {
  position: static;
  z-index: 4;
  padding: 3px 4px;
  font-size: 10.5px;
  background: #f9fafb;
  box-shadow: 0 1px 0 var(--wms-border);
}

/*
 * NIŽŠIA KARTA = VIAC TOVARU NA OBRAZOVKE.
 *
 * Karta mala 80 px a na 360 px telefóne z nej boli vidieť tri kusy — pri
 * hľadaní v sortimente sa tak listuje po troch. Text zostáva celý (názov,
 * kód/kategória/šarže, posledná inventúra, množstvo), stláča sa len vzduch
 * okolo neho: menšie odsadenie a tesnejšie riadkovanie. Merané: 80 → 62 px,
 * čo je na 360 px štvrtá karta a na 390 px piata.
 */
#wms-mobile-inventory .minv-product-card {
  padding: 5px 10px;
}

#wms-mobile-inventory .minv-pc-row {
  min-height: 0;
  gap: 6px;
}

#wms-mobile-inventory .minv-pc-name {
  font-size: 13px;
  line-height: 1.2;
}

#wms-mobile-inventory .minv-pc-meta {
  font-size: 10.5px;
  line-height: 1.25;
}

#wms-mobile-inventory .minv-pc-inv {
  font-size: 10.5px;
  line-height: 1.25;
  margin-top: 1px;
}

/*
 * MNOŽSTVO PATRÍ VPRAVO, NIE POD TEXT.
 *
 * Pravidlo `#wms-pane-mobile-inventory .minv-product-card > div` skladá kartu
 * na telefóne do stĺpca, takže stav („-2,000 ks") padol pod názov ako štvrtý
 * riadok. Merané: riadok karty 63 px namiesto 43, čiže 20 px na každej
 * položke — pri 360 px obrazovke celá jedna karta zo zoznamu. Číslo je
 * pritom krátke a vpravo je naň miesto (stĺpec má 72 px).
 *
 * `!important` je nutné, lebo pôvodné pravidlo ho tiež používa.
 */
#wms-pane-mobile-inventory #minv-results .minv-product-card > .minv-pc-row {
  flex-direction: row;
  align-items: center !important;
  gap: 8px;
}

#wms-pane-mobile-inventory #minv-results .minv-pc-row > .minv-pc-right {
  text-align: right !important;
  flex: 0 0 auto;
  min-width: 64px;
}

#wms-mobile-inventory .minv-product-card {
  padding: 9px 10px;
  margin-bottom: 5px;
  border-radius: 9px;
  font-size: 13px;
  min-height: 46px;
}

#wms-mobile-inventory .minv-product-card > div > div:first-child > div:first-child {
  line-height: 1.25;
}

/* Presné výšky riadku tovaru — bez nich vychádzal riadok 74 px namiesto ~44. */
#wms-mobile-inventory #minv-results .minv-product-card {
  padding: 7px 10px;
  margin-bottom: 4px;
  min-height: 0;
}

#wms-mobile-inventory #minv-results .minv-pc-row {
  min-height: 0;
  align-items: center;
}

#wms-mobile-inventory #minv-results .minv-pc-name {
  font-size: 13px;
  line-height: 16px;
}

#wms-mobile-inventory #minv-results .minv-pc-meta {
  font-size: 10.5px;
  line-height: 13px;
}

#wms-mobile-inventory #minv-results .minv-pc-qty {
  font-size: 12.5px;
  line-height: 16px;
}

/* spodná lišta s počtom spočítaných — vždy na obrazovke */
#wms-mobile-inventory .wms-minv-bottom-bar {
  position: sticky;
  bottom: 0;
  z-index: 7;
  padding: 8px 10px calc(8px + env(safe-area-inset-bottom, 0px));
  background: #fff;
  border-top: 1px solid var(--wms-border);
  box-shadow: 0 -6px 14px rgba(15, 23, 42, 0.10);
}

/* dva prvky vedľa seba: počet naskenovaných a zaúčtovanie celej inventúry */
#wms-mobile-inventory .wms-minv-bottom-bar:has(#minv-book-btn[hidden]):has(#minv-book-hint[hidden]) {
  grid-template-columns: 1fr;
}

#wms-mobile-inventory .wms-minv-bottom-bar {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 8px;
  align-items: stretch;
}

#wms-mobile-inventory .wms-minv-book-btn {
  min-height: 46px;
  min-width: 132px;
  padding: 0 14px;
  border: 0;
  border-radius: 10px;
  background: var(--wms-primary, #9F1D20);
  color: #fff;
  font-family: inherit;
  font-size: 14px;
  font-weight: 600;
}

#wms-mobile-inventory .wms-minv-book-btn:disabled {
  opacity: .6;
}

#wms-mobile-inventory .wms-minv-book-hint {
  align-self: center;
  font-size: 11.5px;
  color: var(--wms-muted);
  max-width: 96px;
  line-height: 1.2;
}

#wms-mobile-inventory .wms-minv-bottom-toggle {
  width: 100%;
  min-height: 46px;
  border: 1px solid var(--wms-border);
  border-radius: 10px;
  background: #f9fafb;
  font-family: inherit;
  font-size: 14px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
}

#wms-mobile-inventory .wms-minv-bar-has-items .wms-minv-bottom-toggle,
#wms-mobile-inventory .wms-minv-bottom-bar.wms-minv-bar-has-items .wms-minv-bottom-toggle {
  background: #ecfdf5;
  border-color: #a7f3d0;
  font-weight: 600;
}

#wms-mobile-inventory .wms-minv-counted-sheet {
  position: sticky;
  bottom: 62px;
  z-index: 6;
  max-height: 46vh;
  margin: 0 10px 4px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}

#wms-mobile-inventory .wms-minv-counted-sheet #minv-counted-list {
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  padding: 6px 10px;
}

/* pri zapisovaní množstva nech nič neprekáža */
#wms-mobile-inventory.minv-form-open .wms-minv-bottom-bar,
#wms-mobile-inventory.minv-form-open .wms-minv-counted-sheet {
  display: none;
}

#wms-mobile-inventory .wms-mobile-count {
  margin: 0 10px 10px;
}

/*
 * Rolované plochy WMS nesmú gesto obnovenia posunúť na dokument. Keď je zoznam
 * na svojom začiatku a predavačka potiahne prstom dole, prehliadač bez tohto
 * pravidla obnoví celú stránku a rozpracovaná vratka/inventúra je v koši.
 * Obnovuje sa len tlačidlom „↻ Obnoviť".
 */
.wms-page-pane,
#wms-mobile-inventory,
#wms-mobile-receiving,
#minv-results,
#minv-batch-panel,
.minv-batch-scroll,
.wms-minv-work,
.pp-ret-items-wrap,
#wms-rcv-items-wrap,
.wms-mobile-counted,
#minv-counted-list {
  overscroll-behavior: contain;
}

/*
 * OBAL TABUĽKY ZADRŽÍ LEN VODOROVNÉ ROLOVANIE.
 *
 * `.wms-table-wrap` roluje vodorovne (`overflow-x:auto`), zvislo nie — a
 * `overscroll-behavior: contain` platí na OBE osi. Prehliadač preto nad
 * tabuľkou zvislý scroll nikam neposunul: koliesko nad obsahom nerobilo nič
 * a stránka sa dala rolovať len pri pravom okraji, vedľa tabuľky. Na Cenách,
 * kde tabuľka zaberá takmer celú plochu, to znamenalo, že sa obrazovka
 * prakticky nedala posúvať.
 *
 * Vodorovné zadržanie má zmysel (široká tabuľka na telefóne nesmie ťahať
 * stránku bokom), zvislé nie. Kde obal roluje aj zvisle, si `contain` na
 * oboch osiach pýta zvlášť — kvôli gestu obnovenia na telefóne.
 */
.wms-table-wrap { overscroll-behavior-x: contain; }
#wms-pane-products .wms-table-wrap,
#wms-pane-supplier-prices .wms-table-wrap,
#wms-pane-expiry .wms-page.wms-expiry-page > .wms-table-wrap {
  overscroll-behavior: contain;
}

/* Tlačidlo obnovenia v hlavičke mobilných obrazoviek (gesto je vypnuté). */
/*
 * Riadok s výbermi a tlačidlom ↻.
 *
 * Pôvodne tu bolo `grid-template-columns` pre tri stĺpce, ale hlavička je
 * `display: flex` (a na telefóne `column`), takže sa to nikdy neuplatnilo:
 * tlačidlo sa naťahovalo na celú šírku ako výbery a s jediným znakom ↻ vnútri
 * vyzeralo ako prázdny rám — odmerané 304 px pri šírke 390 px.
 * Výbery majú na celú šírku zmysel (dlhé názvy predajní), tlačidlo nie.
 */
#wms-mobile-inventory .wms-minv-head-refresh .wms-refresh-btn,
#wms-mobile-receiving .wms-minv-head-refresh .wms-refresh-btn {
  flex: 0 0 auto;
  align-self: flex-end;
  width: auto;
  margin-top: -2px;
}
.wms-refresh-btn {
  min-height: 40px;
  min-width: 44px;
  padding: 0 10px;
  font-size: 17px;
  line-height: 1;
}
.wms-refresh-btn.wms-obnovujem { opacity: .6; }

/*
 * Lišta zaúčtovaného dokladu: text vľavo, akcie vpravo a „✕ Zavrieť doklad"
 * úplne na konci. Tri tlačidlá nalepené za textom sa strácali a predajňa
 * hlásila, že zavretie nevidí.
 */
.wms-rcv-doc-banner {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px;
}
.wms-rcv-doc-banner .wms-rcv-banner-text { flex: 1 1 auto; min-width: 0; }
.wms-rcv-doc-banner .wms-rcv-banner-close { margin-left: auto; }

/* ═══════════════════════════════════════════════════════════════════════
   NÍZKE OKNO V PREDAJNI — RIADKY DOSTANÚ MAXIMUM

   Na počítači v predajni (okno 1152×640, Chrome s lištami) zabral chrome nad
   tabuľkou Zásob 364 px zo 640 a na položky zostalo 275 px, teda 5 riadkov.
   Vedúca hlásila „karty ani nevidno". Merané v prehliadači:

     nad plochou (pásik expirácií + „WMS / Sklad a logistika" + záložky) 121 px
     #wms-stock-header (dva riadky filtrov + riadok akcií)                158 px
     vnútri zoznamu: dva informačné riadky + hlavička tabuľky              ~95 px
     .wms-stock-fifo-section (pätička FIFO)                                 34 px

   Nižšie sa preto na nízkom okne stláča CHROME, nikdy nie riadky: nadpis
   modulu ustúpi, filtre a akcie zmenšia výplň, informačné riadky a pätička sa
   zúžia. Rám (pane → .wms-page → zoznam s vlastným scrollom) zostáva ako je —
   ten je správny, len mu chýbalo miesto.
   ═══════════════════════════════════════════════════════════════════════ */
@media (max-height: 800px) {
  /* nadpis modulu je dekorácia — modul je vidieť v bočnej lište */
  .im-page-header { padding-top: 4px; padding-bottom: 4px; }
  .im-page-title { font-size: 17px; line-height: 1.15; }
  .im-page-subtitle { display: none; }

  /* Zásoby a Pohyby: filtre a akcie kompaktne.
     Selektory musia mať ID (#wms-stock-toolbar), inak ich prebijú pravidlá
     pre úzke okno, ktoré ID používajú — pozri pascu so špecifickosťou. */
  #wms-stock-header { padding-bottom: 2px; }
  .wms-stock-subtabs { margin-bottom: 3px; }
  .wms-stock-subtabs .wms-btn,
  .wms-stock-subtabs button { min-height: 26px; padding: 0 10px; font-size: 12px; }
  #wms-stock-toolbar,
  #wms-stock-movements-toolbar { gap: 4px 6px; padding: 0 0 4px; }
  #wms-stock-toolbar .wms-sel,
  #wms-stock-toolbar .wms-search,
  #wms-stock-toolbar .wms-input,
  #wms-stock-movements-toolbar .wms-sel,
  #wms-stock-movements-toolbar .wms-input { min-height: 28px; font-size: 12px; padding: 2px 8px; }
  #wms-stock-toolbar > .wms-stock-filter-actions { padding-bottom: 0; }
  #wms-stock-toolbar > .wms-stock-filter-actions .wms-btn,
  #wms-stock-toolbar .wms-btn { min-height: 28px; padding: 0 8px; font-size: 12px; }
  #wms-pane-stock .wms-table thead th { padding-top: 3px; padding-bottom: 3px; font-size: 10.5px; }

  /* dva informačné riadky nad tabuľkou na jeden nízky */
  .wms-stock-levels-summary {
    margin: 0 0 2px;
    padding: 1px 0;
    font-size: 11.5px;
    line-height: 1.2;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  .wms-stock-levels-summary .plain-btn { font-size: 11.5px; }

  /*
   * Riadok Zásob mal 53 px, lebo každý stĺpec sa lámal na dva riadky: názov +
   * kód, „Čerstvé mäso / Bravčové mäso", zostatok + „predané …", „ISTERMEAT
   * a.s.". Pri okne 640 px z toho bolo šesť položiek. Na nízkom okne sa preto
   * kód dá za názov a ostatné stĺpce sa nelámu (dlhý text sa skráti tromi
   * bodkami) — riadok má ~32 px a na obrazovku sa zmestí dvojnásobok položiek.
   */
  #wms-pane-stock .wms-table td { padding-top: 2px; padding-bottom: 2px; line-height: 1.25; }
  #wms-pane-stock .wms-stock-row-name,
  #wms-pane-stock .wms-stock-row-meta { display: inline; }
  #wms-pane-stock .wms-stock-row-meta::before { content: ' · '; }
  /* názov a kód nechávame čitateľné (dva riadky, ~30 px) */
  #wms-pane-stock .wms-stock-row-name,
  #wms-pane-stock .wms-stock-row-meta { display: block; }
  #wms-pane-stock .wms-stock-row-meta::before { content: none; }
  /* kategória, dodávateľ a stav sa nelámu — dlhý text sa skráti bodkami */
  #wms-pane-stock .wms-table td[data-cell="cat"],
  #wms-pane-stock .wms-table td[data-cell="supplier"],
  #wms-pane-stock .wms-table td[data-cell="status"] {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 150px;
    font-size: 11.5px;
  }
  /*
   * Rozhodovala výška stĺpca ZOSTATOK: „0,000 kg" + „predané" + číslo boli tri
   * riadky, a riadok tabuľky tak mal 70 px. „Predané za obdobie" je informácia
   * k analýze, nie k regálu — na nízkom okne sa skryje (na veľkom zostáva) a
   * riadok spadne na ~34 px.
   */
  #wms-pane-stock .wms-stock-sold { display: none; }
  #wms-pane-stock .wms-table td[data-cell="qty"] { white-space: nowrap; }
}

/*
 * ZBALENÉ FILTRE ZÁSOB — zostane len predajňa, hľadanie a akcie.
 * Ostatné polia sa skryjú (nie zmažú), takže hodnoty v nich platia ďalej;
 * po rozbalení sú presne také, aké boli.
 */
#wms-pane-stock .wms-page.wms-stock-filters-folded #wms-stock-toolbar > * {
  display: none;
}
#wms-pane-stock .wms-page.wms-stock-filters-folded #wms-stock-toolbar > .wms-stock-dept,
#wms-pane-stock .wms-page.wms-stock-filters-folded #wms-stock-toolbar > #stock-search,
#wms-pane-stock .wms-page.wms-stock-filters-folded #wms-stock-toolbar > .wms-stock-filter-actions {
  display: revert;
}
#wms-pane-stock .wms-page.wms-stock-filters-folded #wms-stock-toolbar {
  grid-template-columns: minmax(160px, 1fr) minmax(160px, 1.4fr);
}
.wms-stock-fold-btn { margin-left: auto; }
@media (max-height: 800px) {
  .wms-stock-fold-btn { min-height: 26px; padding: 0 8px; font-size: 12px; }
  .wms-stock-filter-actions .wms-btn,
  .wms-stock-filters .wms-btn { min-height: 30px; padding: 0 8px; font-size: 12px; }
  .wms-stock-mov-summary { font-size: 11.5px; padding: 2px 0; margin: 0; }
  .wms-stock-fifo-section { padding: 3px 0; font-size: 11.5px; }

  /* riadky tabuliek WMS o dva pixle nižšie — pri 20 riadkoch je to celý riadok */
  #wms-pane-stock .wms-table td,
  #wms-pane-stock .wms-table th { padding-top: 4px; padding-bottom: 4px; }
}

/* ═══════════════════════════════════════════════════════════════════════
   EXPIRÁCIE — POLOŽKY DOSTANÚ MAXIMUM (rovnaké pravidlo ako v Zásobách)

   Merané pri okne 1152×640 (počítač v predajni): tabuľka začínala na y 349 a
   vidieť bolo 5 riadkov z 51. Kde tie pixle boli:

     hlavička s tlačidlami                     32 px
     tri prehľadové karty                     133 px
     záložky (Po spotrebe / Dnes / Do 3 dní)   36 px
     ROZPAD PO PREDAJNIACH                    262 px  ← najväčší blok
     a až potom tabuľka položiek

   Rozpad je prehľad pre vedenie, nie pracovný zoznam — dá sa zbaliť (na okne
   do 800 px je zbalený hneď) a karty sa na nízkom okne stlačia na jeden pás.
   Zoznam položiek dostane vlastný scroll a zvyšok miesta, takže sa nikdy
   nestlačí na tri riadky.
   ═══════════════════════════════════════════════════════════════════════ */
/* rám: pane drží výšku okna, stránka je stĺpec a zoznam v nej dostane zvyšok
   (bez tohto sa `flex: 1 1 0` na zozname vyhodnotí na nulu — merané h2 px) */
#wms-pane-expiry.wms-page-pane.active {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
  overflow: hidden;
}
#wms-pane-expiry .wms-page.wms-expiry-page {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
  height: 100%;
  overflow: hidden;
}
#wms-pane-expiry .wms-page.wms-expiry-page > * { flex: 0 0 auto; }
#wms-pane-expiry .wms-page.wms-expiry-page > .wms-table-wrap {
  flex: 1 1 0;
  min-height: 0;
  overflow: auto;
}

/* ── EAN plnička ──────────────────────────────────────────────────────────
   Kŕmenie systému čítačkou: jedno políčko, jeden artikel „na rade", zoznam
   pod tým. Aktívny artikel musí byť vidieť z metra — predavačka drží obal
   v jednej ruke a čítačku v druhej, na obrazovku sa pozrie len na kontrolu. */
.wms-eanf-active {
  margin: 6px 0;
  padding: 10px 12px;
  border-radius: 10px;
  background: #FFF7ED;
  border: 2px solid #F97316;
}
.wms-eanf-active-label { font-size: 11px; font-weight: 700; color: #9A3412; text-transform: uppercase; }
.wms-eanf-active-name { font-size: 17px; font-weight: 700; line-height: 1.25; }
.wms-eanf-active-meta { font-size: 12px; color: var(--wms-muted); margin-top: 2px; }
.wms-eanf-input-row { display: flex; gap: 8px; align-items: center; margin-bottom: 8px; flex-wrap: wrap; }
.wms-eanf-input-row .wms-input { flex: 1 1 260px; min-height: 44px; font-size: 16px; font-weight: 600; }
.wms-eanf-list { max-height: 320px; overflow-y: auto; border: 1px solid var(--wms-border); border-radius: 8px; }
.wms-eanf-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 110px 120px auto;
  gap: 8px;
  align-items: center;
  padding: 5px 10px;
  border-bottom: 1px solid #f1f5f9;
  font-size: 12.5px;
  cursor: pointer;
}
.wms-eanf-row:last-child { border-bottom: 0; }
.wms-eanf-row:hover { background: #f8fafc; }
.wms-eanf-row--active { background: #FFF7ED; font-weight: 600; }
.wms-eanf-row--done { background: #F0FDF4; color: #15803D; }
.wms-eanf-row--skip { opacity: .55; }
.wms-eanf-row-meta { color: var(--wms-muted); font-size: 11px; }

/* Sortiment dodávateľa — návrhy sa klikajú, nič sa neuloží samo. Skóre je
   vidieť zámerne: párovanie podľa názvu vie trafiť vedľa a človek to musí
   posúdiť, nie odklikať naslepo. */
.wms-sp-candidates { display: flex; flex-wrap: wrap; gap: 6px; margin: 6px 0 8px; }
.wms-sp-cand {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 2px;
  padding: 7px 11px;
  border: 1px solid var(--wms-border);
  border-radius: 8px;
  background: #fff;
  cursor: pointer;
  text-align: left;
  max-width: 320px;
}
.wms-sp-cand:hover { border-color: var(--wms-red, #B91C1C); background: #FFF7ED; }
.wms-sp-cand-name { font-size: 13px; font-weight: 600; line-height: 1.25; }
.wms-sp-cand-meta { font-size: 11px; color: var(--wms-muted); }
.wms-sp-empty { font-size: 12.5px; color: var(--wms-muted); padding: 6px 2px; }
/* prepis názvu na karte — pri bezpečnom prípade tichý, inak varovný */
.wms-sp-rename {
  display: flex;
  gap: 8px;
  align-items: flex-start;
  margin-top: 8px;
  padding: 7px 10px;
  border-radius: 8px;
  background: #F0FDF4;
  border: 1px solid #BBF7D0;
  font-size: 12.5px;
  cursor: pointer;
}
.wms-sp-rename--pozor { background: #FEF3C7; border-color: #FDE68A; }
.wms-sp-rename input { margin-top: 2px; }
.wms-sp-rename span { display: block; }
.wms-sp-rename-diff { display: block; font-size: 11.5px; color: var(--wms-muted); margin-top: 2px; }
.wms-sp-rename-note { display: block; font-size: 11px; color: var(--wms-muted); margin-top: 1px; }

.wms-sp-warn {
  margin-top: 6px;
  padding: 5px 9px;
  border-radius: 6px;
  background: #FEF3C7;
  color: #92400E;
  font-size: 12px;
  font-weight: 600;
}

/* karta ako prepínač pohľadu — aktívna je zvýraznená rámom a tučným popisom */
.wms-expiry-card { cursor: pointer; text-align: left; width: 100%; }
.wms-expiry-card--active {
  outline: 2px solid var(--wms-red, #B91C1C);
  outline-offset: -2px;
}
.wms-expiry-card--active .wms-expiry-card-label { font-weight: 700; }

/* skladací rozpad po predajniach */
.wms-expiry-dept-title {
  display: block;
  width: 100%;
  margin: 6px 0 4px;
  padding: 2px 0;
  border: 0;
  background: none;
  text-align: left;
  font-size: 13px;
  font-weight: 700;
  color: var(--wms-text);
  cursor: pointer;
}
.wms-expiry-dept-title:hover { color: var(--wms-red, #B91C1C); }
#wms-pane-expiry .wms-page.wms-expiry-dept-folded .wms-expiry-dept-table-wrap { display: none; }

/* Súhrn odpisu pod zoznamom: kontrolné číslo, nie druhý report. Doteraz nemal
   vlastný štýl, takže sa kreslil ako plná tabuľka s hlavičkou a na monitore
   predajne (1024×768) ostali zo zoznamu tri riadky. Je to tenký pás. */
.wms-expiry-written-summary {
  border-top: 1px solid var(--wms-border);
  padding: 4px 2px 0;
  margin-top: 4px;
}
.wms-expiry-written-totals { font-size: 13px; line-height: 1.3; }
.wms-expiry-written-depts {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 14px;
  margin-top: 2px;
  font-size: 11.5px;
  color: var(--wms-muted);
  /* pri mnohých predajniach roluje sám, stránku už nepredlžuje */
  max-height: 44px;
  overflow-y: auto;
}
.wms-expiry-written-dept { white-space: nowrap; }

@media (max-height: 800px) {
  /* hlavička a karty kompaktne — tri karty na jeden pás */
  #wms-pane-expiry .wms-expiry-title { font-size: 16px; margin: 0; }
  #wms-pane-expiry .wms-expiry-head { padding: 2px 0; }
  #wms-pane-expiry .wms-expiry-toolbar .wms-btn { min-height: 28px; padding: 0 8px; font-size: 12px; }
  #wms-pane-expiry .wms-expiry-cards {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 4px;
    margin: 2px 0;
  }
  #wms-pane-expiry .wms-expiry-cards > * { padding: 4px 8px; }
  #wms-pane-expiry .wms-expiry-cards .wms-expiry-card-title,
  #wms-pane-expiry .wms-expiry-cards .wms-expiry-card-sub { font-size: 10.5px; }
  #wms-pane-expiry .wms-expiry-cards .wms-expiry-card-val { font-size: 13px; }
  /* záložky sú hlavný prepínač — zostávajú čitateľné, len nižšie */
  #wms-pane-expiry .wms-expiry-tabs { margin: 2px 0 4px; }
  #wms-pane-expiry .wms-expiry-tab { min-height: 30px; padding: 0 12px; font-size: 12.5px; }
  #wms-pane-expiry .wms-expiry-dept-title { margin: 2px 0; font-size: 12px; }
  #wms-pane-expiry .wms-table td,
  #wms-pane-expiry .wms-table th { padding-top: 2px; padding-bottom: 2px; line-height: 1.25; }
  #wms-pane-expiry .wms-table thead th { font-size: 10.5px; }
  /* riadok mal 53 px, lebo názov aj predajňa sa lámali na dva riadky */
  #wms-pane-expiry .wms-table tbody td {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 260px;
  }
  #wms-pane-expiry .wms-table tbody td .muted { font-size: 10.5px; }
  #wms-pane-expiry .wms-table .wms-btn-xs { min-height: 24px; padding: 0 8px; font-size: 11px; }
  /* filter dátumov je nastavenie, nie obsah — na jeden nízky pás */
  #wms-pane-expiry .wms-expiry-written-filters {
    gap: 6px;
    margin: 2px 0 4px;
    font-size: 11.5px;
    align-items: center;
  }
  #wms-pane-expiry .wms-expiry-written-filters .wms-input { min-height: 26px; padding: 0 6px; font-size: 12px; }
  #wms-pane-expiry .wms-expiry-written-filters .wms-btn { min-height: 26px; padding: 0 10px; font-size: 12px; }
  /* súhrn na jeden riadok — kvôli nemu sa zo zoznamu strácali riadky */
  #wms-pane-expiry .wms-expiry-written-summary { padding-top: 2px; margin-top: 2px; }
  #wms-pane-expiry .wms-expiry-written-totals { font-size: 12px; }
  #wms-pane-expiry .wms-expiry-written-depts { font-size: 10.5px; max-height: 30px; }
}

/* ═══════════════════════════════════════════════════════════════════════
   STREDNÉ ROZLÍŠENIA (700–1200 px) — TABUĽKY SA NESTLAČUJÚ, ROLUJÚ

   Pravidlá pre telefón boli len do 700 px. Medzi 700 a 1200 px (tablet,
   notebook v predajni, okno na polovicu obrazovky) sa nič nedialo: Expirácie
   majú 8 stĺpcov a vratka 11, takže sa stĺpce stlačili na nečitateľné —
   „Odpísať" prekrylo hodnotu, dátumy sa lámali po znakoch.

   Tu preto platí to isté, čo na telefóne: tabuľka dostane vlastný vodorovný
   scroll a minimálnu šírku, aby stĺpce zostali čitateľné, a stránka sama sa
   vodorovne neroluje. Prehľadové karty a rozpady idú pod seba.
   ═══════════════════════════════════════════════════════════════════════ */
@media (min-width: 701px) and (max-width: 1200px) {
  #wms-pane-expiry .wms-table-wrap,
  #wms-pane-receiving #wms-rcv-items-wrap,
  #wms-pane-receiving .wms-rcv-queue-table-wrap,
  #wms-pane-stock .wms-table-wrap {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
  #wms-pane-expiry .wms-table-wrap .wms-table { min-width: 900px; }
  #wms-pane-receiving #wms-rcv-items-wrap .wms-rcv-table { min-width: 1000px; }

  /* tri prehľadové karty ostávajú v JEDNOM riadku — dva stĺpce z nich robili
     2+1 a druhý riadok zabral 60 px zo zoznamu */
  #wms-pane-expiry .wms-expiry-cards { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  #wms-pane-expiry .wms-retsum-cards { grid-template-columns: 1fr 1fr; }

  /* hlavička obrazovky: nadpis a tlačidlá sa zalomia, nie orežú */
  #wms-pane-expiry .wms-expiry-head { flex-wrap: wrap; gap: 6px; }
  #wms-pane-expiry .wms-expiry-head .wms-btn { min-height: 32px; font-size: 12px; }
}

/* Na telefóne majú Expirácie 8 stĺpcov — bez minimálnej šírky sa zlepia. */
@media (max-width: 700px) {
  #wms-pane-expiry .wms-expiry-cards,
  #wms-pane-expiry .wms-retsum-cards { grid-template-columns: 1fr; }
  #wms-pane-expiry .wms-expiry-head { flex-wrap: wrap; gap: 6px; }
  #wms-pane-expiry .wms-expiry-head .wms-btn { flex: 1 1 auto; }
}

/*
 * VÝDAJ VRATKY — políčko, do ktorého sa píše, MUSÍ KRIČAŤ.
 *
 * Pri vratke je na riadku šesť čísel (PP poslané, EXP prijaté, rozdiel, dátum,
 * šarža) a jediné, do ktorého predavačka píše, je „Vydané". V bielej tabuľke ho
 * nebolo vidieť a hľadala, kde má vystúpiť — pri dvadsiatich riadkoch to bolo
 * zdržanie na každom. Stĺpec má preto teplé pozadie a políčko oranžový rám;
 * po potvrdení riadku (✓) sa upokojí na zeleno, takže je hneď vidieť, čo už je
 * vydané a čo ešte čaká.
 */
#wms-pane-receiving .wms-page.wms-rcv-vratka td[data-rcv-col-td="received"] {
  background: #FFF7ED;
}
#wms-pane-receiving .wms-page.wms-rcv-vratka th[data-rcv-col="received"] {
  background: #FFEDD5;
  color: #9A3412;
}
/*
 * `!important` je tu vedome: rám políčok v tejto tabuľke nastavuje globálne
 * pravidlo pre `input` s `!important` (istermeat-ui.css / admin.html), takže
 * vyššia špecifickosť sama nestačí — overené v prehliadači, selektor sedel a
 * farba sa aj tak nezmenila.
 */
#wms-pane-receiving .wms-page.wms-rcv-vratka td[data-rcv-col-td="received"] input.wms-input.wms-rcv-qty {
  border: 2px solid #F97316 !important;
  background: #fff !important;
  font-weight: 700;
  box-shadow: 0 0 0 3px rgba(249, 115, 22, .12) !important;
}
#wms-pane-receiving .wms-page.wms-rcv-vratka td[data-rcv-col-td="received"] input.wms-input.wms-rcv-qty:focus {
  border-color: #EA580C !important;
  box-shadow: 0 0 0 4px rgba(249, 115, 22, .22) !important;
}
/* hotový riadok už nekričí — zelená hovorí „vydané" */
#wms-pane-receiving .wms-page.wms-rcv-vratka tr.wms-rcv-line-done td[data-rcv-col-td="received"] {
  background: #F0FDF4;
}
#wms-pane-receiving .wms-page.wms-rcv-vratka tr.wms-rcv-line-done td[data-rcv-col-td="received"] input.wms-input.wms-rcv-qty {
  border-color: #86EFAC !important;
  box-shadow: none !important;
}

/* Naskenovaný EAN, ktorý čaká na priradenie k tovaru. */
.wms-add-ean-pending {
  margin: 0 0 10px;
  padding: 8px 10px;
  border-radius: 8px;
  background: #FEF3C7;
  border: 1px solid #FDE68A;
  color: #92400E;
  font-size: 13px;
  line-height: 1.35;
}

/* Na telefóne wrapper nič nerobí — bloky idú pod sebou ako predtým. */
.wms-minv-work { display: contents; }

/*
 * Panel šarží: hlavička stojí, šarže rolujú, akcie držia spodok. Prilepené
 * (`sticky`) akcie prekrývali riadky šarží — v paneli vysokom 210 px zmizli
 * všetky tri šarže pod bielym blokom s tlačidlami. Preto sa roluje len
 * prostredná časť.
 */
#minv-batch-panel {
  display: flex;
  flex-direction: column;
}
.minv-batch-head {
  flex: 0 0 auto;
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 8px;
}
.minv-batch-scroll {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}
.minv-batch-actions {
  flex: 0 0 auto;
  display: grid;
  grid-template-columns: 1fr;
  gap: 6px;
  margin-top: 8px;
  padding-top: 8px;
  border-top: 1px solid var(--wms-border);
  background: #fff;
}
.minv-batch-actions .minv-batches-summary { grid-column: 1 / -1; }
.minv-batch-actions .minv-batch-save { width: 100%; min-height: 46px; }
.minv-batch-actions .minv-batch-new { width: 100%; min-height: 40px; }
.minv-batch-scroll { min-height: 76px; }

/* Na nízkom okne stoja obe tlačidlá v jednom riadku — ušetrených 46 px sú
   ďalšie dve šarže vidieť bez rolovania. */
@media (max-height: 800px) {
  .minv-batch-actions { grid-template-columns: 1.4fr 1fr; align-items: stretch; }
  .minv-batch-actions .minv-batch-save { min-height: 42px; }
  .minv-batch-actions .minv-batch-new { min-height: 42px; font-size: 12.5px; }
}

/* ═══════════════════════════════════════════════════════
   MOBILNÁ INVENTÚRA — na počítači / tablete (≥ 769 px)
   Obrazovka je navrhnutá na telefón a na širokom okne sa chovala ako telefón
   natiahnutý do šírky: celý `#wms-mobile-inventory` je scroller a `#minv-results`
   je scroller v ňom (dva vnorené scrolly). Pri okne 1166×669 zabral chrome
   (predajňa, expirácie, tri tlačidlá, hľadanie, kategória, filtre) 310 px a na
   ZOZNAM zostalo 151 px z 486 — vidieť bolo 1,5 karty, prilepená lišta
   „Naskenované" prekrývala poslednú a políčko na množstvo sa nedalo použiť.
   Karta pritom merala 1006 px, takže šírka sa mrhala, kým výška hladovala.

   Tu preto: jeden scroller (zoznam), kompaktný chrome a od 1000 px karty v
   dvoch stĺpcoch — merané v prehliadači, nie odhadom.
   ═══════════════════════════════════════════════════════ */
@media (min-width: 769px) {
  /* Rám: stránka nescrolluje, scrolluje zoznam. */
  #wms-mobile-inventory {
    overflow: hidden;
    display: flex;
    flex-direction: column;
    padding-bottom: 0;
  }
  #wms-mobile-inventory > * { flex: 0 0 auto; }
  /* Zoznam a panel počítania vedľa seba — pri okne 1166 px bola karta 1006 px
     široká, kým na zoznam zostalo 151 px výšky. */
  #wms-mobile-inventory .wms-minv-work {
    display: flex;
    flex-direction: row;
    align-items: stretch;
    gap: 10px;
    flex: 1 1 auto;
    min-height: 0;
    padding: 0 10px 8px;
  }
  #wms-mobile-inventory #minv-results {
    flex: 1 1 0;
    min-width: 0;
    min-height: 0;
    overflow-y: auto;
    padding: 0;
  }
  #wms-mobile-inventory #minv-batch-panel,
  #wms-mobile-inventory #minv-count-form {
    flex: 0 0 clamp(320px, 34%, 460px);
    margin: 0;
  }
  /* Prilepenie má zmysel, len keď scrolluje stránka — tu nie. */
  #wms-mobile-inventory .wms-mobile-inv-header,
  #wms-mobile-inventory .wms-minv-bottom-bar { position: static; }



  /* Chrome kompaktnejšie — každých ~30 px je jedna karta navyše. */
  #wms-mobile-inventory .wms-mobile-inv-header { padding: 6px 10px; }
  #wms-mobile-inventory .wms-minv-actions-grid { padding: 6px 10px; }
  #wms-mobile-inventory .wms-mobile-btn-sm { min-height: 38px; font-size: 12px; }
  #wms-mobile-inventory .wms-minv-quick-row {
    display: grid;
    grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
    gap: 8px;
    padding: 6px 10px;
    background: #fff;
    border-bottom: 1px solid var(--wms-border);
  }
  #wms-mobile-inventory .wms-minv-quick-row .wms-minv-search-row {
    padding: 0;
    border-bottom: 0;
  }
  #wms-mobile-inventory .wms-mobile-filters { padding: 0 10px 6px; }
  #wms-mobile-inventory .wms-mobile-filters > summary { min-height: 30px; padding: 4px 0; }

  /* Panel drží celú výšku plochy a roluje vo vnútri (šarže), takže tlačidlo
     „Uložiť spočítané šarže" je vidieť vždy. */
  #wms-mobile-inventory #minv-batch-panel { max-height: 100%; overflow-y: hidden; }
  #wms-mobile-inventory #minv-count-form { max-height: 100%; overflow-y: auto; }

  /* Spodná lišta stojí pod zoznamom, nie na ňom — a pri otvorenom počítaní
     nemá dôvod mizieť, lebo pracovná plocha je vedľa nej, nie pod ňou. */
  #wms-mobile-inventory .wms-minv-bottom-bar { box-shadow: none; }
  #wms-mobile-inventory.minv-form-open .wms-minv-bottom-bar { display: grid; }
}

/* Nízke okno na počítači (notebook so zoomom): chrome ustúpi zoznamu.
   Merané pri 1166×669 — chrome bral 235 px z 532. */
@media (min-width: 769px) and (max-height: 760px) {
  #wms-mobile-inventory .wms-mobile-inv-header { padding: 4px 10px; }
  #wms-mobile-inventory .wms-mobile-inv-header .wms-sel { min-height: 34px; padding: 4px 8px; }
  #wms-mobile-inventory .wms-minv-actions-grid { padding: 4px 10px; }
  #wms-mobile-inventory .wms-mobile-btn-sm { min-height: 32px; font-size: 11.5px; }
  #wms-mobile-inventory .wms-minv-quick-row { padding: 4px 10px; }
  #wms-mobile-inventory .wms-minv-quick-row .wms-input,
  #wms-mobile-inventory .wms-minv-quick-row .wms-sel { min-height: 34px; padding: 4px 8px; }
  #wms-mobile-inventory .minv-alerts-wrap > summary.minv-alerts-sum { min-height: 32px; padding: 4px 10px; }
  #wms-mobile-inventory .wms-mobile-filters > summary { min-height: 26px; padding: 2px 0; }
  #wms-mobile-inventory .wms-minv-bottom-bar { padding: 5px 10px; }
  #wms-mobile-inventory .wms-minv-bottom-toggle { min-height: 38px; }
}

/*
 * NA POČÍTAČI JE ZOZNAM TABUĽKA, NIE MRIEŽKA KARIET.
 *
 * Karty v `display: grid` na plnú šírku vyzerali dobre pri desiatich položkách,
 * ale pri celom sortimente sa rozsypali: pri 778 kartách Chrome nasadil výšku
 * riadka 16 px (merané `grid-template-rows: 32px 16px 16px …`), hoci obsah karty
 * má 46 px — názvy sa preliezali cez seba a zoznam bol nečitateľný. Mriežka
 * s tisíckou položiek je slepá ulička, takže zoznam je obyčajný blok a
 * ČITATEĽNOSŤ rieši vnútro riadka: názov | popis | posledná inventúra | STAV,
 * všetko v stĺpcoch pod sebou ako v tabuľke.
 *
 * `display: contents` na .minv-pc-main vytiahne názov, popis a značku inventúry
 * priamo do mriežky riadka, takže sa dajú zarovnať do stĺpcov bez zmeny HTML.
 * Každý prvok má stĺpec zadaný výslovne — nepovinná zelená značka „spočítané"
 * by inak posunula stav do ďalšieho riadka.
 */
@media (min-width: 769px) {
  #wms-mobile-inventory #minv-results {
    display: block;
  }
  #wms-mobile-inventory #minv-results > .minv-product-card {
    margin: 0 0 4px;
    padding: 6px 12px;
  }
  #wms-mobile-inventory #minv-results .minv-pc-row {
    display: grid;
    grid-template-columns: minmax(240px, 1.3fr) minmax(200px, 1fr) 172px auto 130px;
    align-items: center;
    gap: 12px;
    min-height: 38px;
  }
  #wms-mobile-inventory #minv-results .minv-pc-main { display: contents; }
  #wms-mobile-inventory #minv-results .minv-pc-name {
    grid-column: 1;
    font-size: 14px;
    line-height: 1.3;
  }
  #wms-mobile-inventory #minv-results .minv-pc-meta {
    grid-column: 2;
    font-size: 12px;
    line-height: 1.3;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  #wms-mobile-inventory #minv-results .minv-pc-inv {
    grid-column: 3;
    justify-self: start;
    font-size: 11.5px;
    margin: 0;
    /* „INV 17. 8. 2026 · pred 9 dňami" sa lámalo na dva riadky a riadok rástol */
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 100%;
  }
  #wms-mobile-inventory #minv-results .minv-counted-badge { grid-column: 4; justify-self: start; }
  #wms-mobile-inventory #minv-results .minv-pc-right {
    grid-column: 5;
    justify-self: end;
    min-width: 0;
  }
  /* STAV je to, čo predavačka porovnáva s regálom — najväčšie číslo v riadku. */
  #wms-mobile-inventory #minv-results .minv-pc-qty {
    font-size: 15px;
    font-weight: 700;
    line-height: 1.2;
    white-space: nowrap;
  }
}

/* ── Mobilný príjem — zoznam nájdených položiek a riadky dokladu ──────────── */
/*
 * Prečo to na telefóne nešlo doúčtovať: box „Na doklade" mal max-height 36vh a
 * overflow:hidden, pričom tlačidlá „Vyprázdniť / Zaúčtovať príjem" sú VNÚTRI
 * neho — pri dvoch-troch položkách sa odrezali a predavačka nemala čo stlačiť.
 * Preto: stránka sa scrolluje celá, box rastie podľa obsahu a lišta s
 * tlačidlami je prilepená k spodku obrazovky (aj s bezpečnou zónou iPhonu).
 */
#wms-pane-mobile-receiving.wms-page-pane.active {
  display: flex;
  flex-direction: column;
  min-height: 0;
  flex: 1;
}

#wms-mobile-receiving {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  background: #f9fafb;
  /* miesto pre prilepenú lištu, aby posledný riadok nezostal pod ňou */
  padding-bottom: 12px;
}

#wms-mobile-receiving .wms-mobile-counted {
  flex-shrink: 0;
  max-height: none;
  overflow: visible;
}

#wms-mobile-receiving #mrcv-lines {
  max-height: none;
  overflow: visible;
}

/*
 * Sticky sa lepí len v rámci svojho rodiča — preto je lišta v HTML priamo
 * v scrollovanej ploche (#wms-mobile-receiving), nie v boxe „Na doklade".
 */
#wms-mobile-receiving .wms-mobile-sticky-actions {
  position: sticky;
  bottom: 0;
  z-index: 5;
  margin: 0;
  padding: 10px 12px calc(10px + env(safe-area-inset-bottom, 0px));
  background: #fff;
  border-top: 1px solid var(--wms-border);
  box-shadow: 0 -6px 14px rgba(15, 23, 42, 0.10);
}

#wms-mobile-receiving .wms-mobile-sticky-actions .wms-btn {
  min-height: 48px;
}

/* Počas zapisovania položky lišta prekáža — jej tlačidlo leží nad „Pridať na doklad". */
#wms-mobile-receiving.mrcv-form-open .wms-mobile-sticky-actions,
/* Prázdny doklad = nič na zaúčtovanie, lišta by len prekrývala ponuku tovaru. */
#wms-mobile-receiving:not(.mrcv-has-lines) .wms-mobile-sticky-actions,
#wms-mobile-receiving:not(.mrcv-has-lines) .wms-mobile-counted {
  display: none;
}

/* Keď lišta visí, spodok obsahu sa musí dať vyscrollovať nad ňu. */
#wms-mobile-receiving.mrcv-has-lines:not(.mrcv-form-open) {
  padding-bottom: 76px;
}

/* Aby sa posledný riadok dal vyscrollovať nad prilepenú lištu. */
#wms-mobile-receiving .wms-mobile-counted {
  margin-bottom: 4px;
}

/*
 * Mobilný príjem: tlačidlá kompaktne 2×2, aby na telefóne zostalo miesto na
 * ponuku tovaru. Dotyková plocha zostáva nad 44 px.
 */
/* Rovnaká pasca ako pri inventúre — stĺpce sa musia smieť stiahnuť. */
#wms-mobile-receiving .wms-mrcv-actions-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 6px;
  padding: 8px 12px;
}

#wms-mobile-receiving .wms-mobile-btn-sm {
  min-height: 44px;
  font-size: 13px;
  padding: 8px 10px;
  gap: 6px;
  white-space: nowrap;
  line-height: 1.2;
  min-width: 0;
}

#wms-mobile-receiving .wms-mobile-btn-sm .im-btn-ico {
  width: 16px;
  height: 16px;
}

/* Ponuka sortimentu dodávateľa — klikací zoznam, položku po položke. */
.wms-mrcv-top-list {
  padding: 0 12px 8px;
}

.wms-mrcv-top-head {
  font-size: 11.5px;
  font-weight: 600;
  color: var(--wms-muted);
  text-transform: uppercase;
  letter-spacing: 0.02em;
  padding: 8px 2px 6px;
}

.wms-mrcv-top-row {
  display: flex;
  flex-direction: column;
  gap: 2px;
  width: 100%;
  text-align: left;
  padding: 10px 12px;
  margin-bottom: 6px;
  min-height: 46px;
  border: 1px solid var(--wms-border);
  border-radius: 10px;
  background: #fff;
}

.wms-mrcv-top-row:active {
  background: #f3f4f6;
}

.wms-mrcv-top-name {
  font-size: 14px;
  font-weight: 600;
  line-height: 1.25;
}

.wms-mrcv-top-meta {
  font-size: 11.5px;
  color: var(--wms-muted);
}

.wms-mrcv-hint {
  padding: 10px 2px;
  font-size: 12.5px;
  margin: 0;
}

#wms-mobile-receiving #mrcv-search-results {
  max-height: 46vh;
  overflow-y: auto;
  padding: 0 12px;
}

.wms-mobile-result-row {
  display: flex;
  flex-direction: column;
  gap: 2px;
  width: 100%;
  text-align: left;
  padding: 12px;
  margin-bottom: 8px;
  border: 1px solid var(--wms-border, #e5e7eb);
  border-radius: 10px;
  background: #fff;
  font-size: 14px;
  cursor: pointer;
}

.wms-mobile-result-row:active {
  background: #f9fafb;
}

.wms-mobile-counted-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 10px 12px;
  border-bottom: 1px solid #f3f4f6;
  font-size: 14px;
}

.wms-mobile-counted-row:last-child {
  border-bottom: none;
}

#wms-mobile-receiving #mrcv-lines {
  max-height: 40vh;
  overflow-y: auto;
}

/* ── Príjem: ponuka tovaru dodávateľa pri nenapárovanej položke ───────────── */
.wms-rcv-cand-row {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  margin-top: 4px;
}

.wms-rcv-cand-chip {
  font-size: 11px;
  line-height: 1.3;
  padding: 3px 7px;
  border-radius: 6px;
  cursor: pointer;
  max-width: 100%;
  text-align: left;
  color: var(--wms-text, #111827);
}

.wms-rcv-cand-chip:hover {
  background: #f0fdf4;
  border-color: #15803d;
}

/* zvýraznenie poľa, na ktoré má predavačka doplniť údaj */
.wms-input-attention {
  outline: 2px solid #dc2626;
  outline-offset: 1px;
  background: #fef2f2;
}

/* ikony v tlačidlách WMS — rovnaká sada aj veľkosť ako bočná lišta */
.wms-ico {
  width: 14px;
  height: 14px;
  flex-shrink: 0;
  vertical-align: -2px;
  display: inline-block;
}
.wms-btn, .wms-mobile-btn, .wms-stock-view-btn {
  display: inline-flex;
  align-items: center;
  gap: 5px;
}

/* ── Viacnásobný výber skupín/podkategórií v profile predaja ─────────────── */
.dow-multi-btn {
  text-align: left;
  min-width: 160px;
  cursor: pointer;
}

.dow-multi-panel {
  position: absolute;
  z-index: 30;
  top: 100%;
  left: 0;
  min-width: 240px;
  max-width: 320px;
  background: #fff;
  border: 1px solid var(--wms-border, #e5e7eb);
  border-radius: 8px;
  box-shadow: 0 8px 24px rgba(16, 24, 40, .12);
  padding: 6px;
}

.dow-multi-head {
  display: flex;
  align-items: center;
  gap: 4px;
  padding-bottom: 4px;
  margin-bottom: 4px;
  border-bottom: 1px solid #f3f4f6;
}

.dow-multi-list {
  max-height: 260px;
  overflow-y: auto;
}

.dow-multi-item {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 3px 4px;
  font-size: 12px;
  border-radius: 4px;
  cursor: pointer;
}

.dow-multi-item:hover { background: #f9fafb; }

.dow-multi-group {
  font-size: 10.5px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: var(--wms-muted, #6b7280);
  padding: 6px 4px 2px;
}

/* ── Pokladničný report (MOP → Pokladničný predaj) ───────────────────────── */
.wms-cash-bar {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  align-items: end;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--wms-border);
  margin-bottom: 10px;
}

.wms-cash-field {
  display: flex;
  flex-direction: column;
  gap: 3px;
  font-size: 11px;
  color: var(--wms-muted);
}

.wms-cash-field .wms-sel,
.wms-cash-field .wms-input {
  height: 32px;
  min-width: 150px;
  font-size: 12.5px;
}

.wms-cash-presets { display: flex; gap: 4px; flex-wrap: wrap; }
.wms-cash-presets .wms-btn { height: 32px; }

.wms-cash-kpi {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 8px;
  margin-bottom: 12px;
}

.wms-cash-card {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 9px 11px;
  border: 1px solid var(--wms-border);
  border-radius: 8px;
  background: var(--wms-surface, #fff);
}

.wms-cash-card span { font-size: 11px; color: var(--wms-muted); }
.wms-cash-card strong { font-size: 17px; font-weight: 700; color: var(--wms-text); }
.wms-cash-card em { font-size: 11px; font-style: normal; color: var(--wms-muted); }

.wms-cash-table tbody .wms-cash-row { cursor: pointer; }
.wms-cash-row:hover td { background: #F3F4F6; }
.wms-cash-row:focus-visible {
  outline: 2px solid var(--wms-red, #B91C1C);
  outline-offset: -2px;
}
.wms-cash-caret { text-align: center; color: var(--wms-muted); font-size: 11px; }

/* Podiel na obrate: číslo aj pruh — poradie sa dá čítať bez porovnávania čísel.
   Dráha musí byť viditeľná na plnú šírku, inak sa výplň javí ako odletená čiarka. */
.wms-cash-share {
  display: block;
  width: 100%;
  min-width: 72px;
  height: 5px;
  border-radius: 3px;
  background: #D1D5DB;
  margin: 0 0 3px;
  overflow: hidden;
}
.wms-cash-share span {
  display: block;
  height: 100%;
  border-radius: 2px;
  background: var(--wms-red, #B91C1C);
}

.wms-cash-items-cell { background: #FAFAF9; padding: 6px 10px 10px 34px !important; }
.wms-cash-subtable { font-size: 12px; background: var(--wms-surface, #fff); }
.wms-cash-item-link,
.wms-cash-table .wms-cash-item-link {
  border: 0;
  background: transparent;
  padding: 0;
  box-shadow: none;
  color: var(--wms-red, #B91C1C);
  text-align: left;
  font: inherit;
  font-weight: 500;
  cursor: pointer;
}
.wms-cash-item-link:hover { text-decoration: underline; }

.wms-cash-stores {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  align-items: center;
  margin-top: 8px;
  font-size: 11px;
  color: var(--wms-muted);
}

@media (max-width: 768px) {
  .wms-cash-field, .wms-cash-field .wms-sel, .wms-cash-field .wms-input { width: 100%; min-width: 0; }
  .wms-cash-items-cell { padding-left: 10px !important; }
}

/* Detail položky v pokladničnom reporte: dni a priebeh dňa po hodinách. */
.wms-cash-detail-cell { background: #fff; padding: 8px 10px 12px 28px !important; }
.wms-cash-detail-head { font-size: 11.5px; color: var(--wms-muted); margin-bottom: 6px; }
.wms-cash-daytable { font-size: 12px; }
.wms-cash-daytable td { vertical-align: middle; }
.wms-cash-day-row:hover td { background: #F9FAFB; }

.wms-cash-daybar {
  display: block;
  width: 100%;
  max-width: 180px;
  height: 5px;
  border-radius: 3px;
  background: #E5E7EB;
  margin-bottom: 3px;
  overflow: hidden;
}
.wms-cash-daybar span { display: block; height: 100%; background: #2563EB; border-radius: 3px; }

/* Hodiny ako stĺpce — špička v dni sa má dať prečítať na prvý pohľad. */
.wms-cash-hours-cell { background: #F9FAFB; padding: 8px 10px !important; }
.wms-cash-hours {
  display: flex;
  gap: 6px;
  align-items: flex-end;
  overflow-x: auto;
  padding-bottom: 2px;
}
.wms-cash-hour { flex: 0 0 auto; width: 46px; text-align: center; }
.wms-cash-hour-bar {
  height: 56px;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  background: #fff;
  border: 1px solid var(--wms-border);
  border-radius: 4px;
}
.wms-cash-hour-bar span { display: block; width: 60%; background: #2563EB; border-radius: 3px 3px 0 0; }
.wms-cash-hour-qty { font-size: 10.5px; font-weight: 600; margin-top: 2px; }
.wms-cash-hour-lbl { font-size: 10px; color: var(--wms-muted); }

/* Vratka PP: všetky šarže na sklade vypísané pod sebou + živé FIFO rozdelenie. */
.pp-ret-batch-list { display: flex; flex-direction: column; gap: 2px; }

/*
 * Riadok šarže je tlmený zámerne — je to informácia, nie akcia. Sýte farby si
 * v paneli vratky drží len to, čo naozaj niečo vykoná (Odoslať, ✓ uložiť riadok);
 * keby svietili aj šarže, tlačidlá by v tom zapadli. `plain-btn` navyše vyradí
 * globálne pravidlo, ktoré každý <button> prekrýva firemnou červenou.
 */
.pp-ret-batch-line,
.pp-ret-batch-list .pp-ret-batch-line {
  display: grid;
  grid-template-columns: 14px 1fr auto auto;
  gap: 6px;
  align-items: center;
  width: 100%;
  padding: 3px 7px;
  border: 1px solid #E5E7EB;
  border-radius: 5px;
  background: #FCFCFD;
  color: var(--wms-text, #111827);
  font: inherit;
  font-size: 11px;
  text-align: left;
  cursor: pointer;
  box-shadow: none;
}
.pp-ret-batch-line:hover { background: #F3F4F6; border-color: #D1D5DB; }

/* Šarža, z ktorej sa odpíše: len jemné zelené pozadie a pásik zľava. */
.pp-ret-batch-line-used,
.pp-ret-batch-list .pp-ret-batch-line-used {
  border-color: #D1E7DD;
  background: #F6FBF8;
  box-shadow: inset 2px 0 0 #4E9E7A;
}

.pp-ret-batch-ord { color: #9CA3AF; font-size: 10px; text-align: center; }
.pp-ret-batch-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pp-ret-batch-qty { color: var(--wms-muted); font-variant-numeric: tabular-nums; }
.pp-ret-batch-take { color: #2F7A5B; font-weight: 600; font-variant-numeric: tabular-nums; }

.pp-ret-fifo-split {
  margin-top: 2px;
  padding: 3px 7px;
  border-radius: 5px;
  background: #F6FBF8;
  border: 1px solid #D1E7DD;
  color: #2F7A5B;
  font-size: 10.5px;
  font-weight: 600;
}

/* Našepkávač: vybraná položka pri chodení klávesami ↓/↑ */
.pp-ret-dd-item-active,
.pp-ret-product-dropdown .pp-ret-dd-item-active {
  background: #F3F4F6;
  box-shadow: inset 2px 0 0 var(--wms-red, #B91C1C);
}

/* Vratka nad evidovanú zásobu (rozrábka) — upozornenie, nie blok. */
.pp-ret-fifo-over {
  margin-top: 2px;
  padding: 3px 7px;
  border-radius: 5px;
  background: #FFFBEB;
  border: 1px solid #FDE68A;
  color: #92400E;
  font-size: 10.5px;
  line-height: 1.35;
}

/* Dodávateľ v šaržiach skladovej karty — pri vratke je prvá otázka „od koho". */
.wms-sbm-table .col-supplier {
  font-size: 12px;
  color: var(--wms-text, #111827);
  max-width: 190px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Dodávateľ v ponuke vratky — dva artikle rovnakého názvu od dvoch dodávateľov
   sa musia dať rozlíšiť bez rozkliknutia. */
.pp-ret-dd-sup {
  display: block;
  font-size: 10.5px;
  color: var(--wms-muted);
  margin-top: 1px;
}
.pp-ret-dd-sup-own { color: #2F7A5B; font-weight: 600; }

/* ── Nákup vs predaj vs likvidácia ───────────────────────────────────────── */
.wms-pvs-note {
  padding: 8px 11px;
  margin-bottom: 10px;
  border: 1px solid #FDE68A;
  border-radius: 8px;
  background: #FFFBEB;
  color: #78350F;
  font-size: 11.5px;
  line-height: 1.45;
}

/* Stupeň spoľahlivosti musí byť čitateľný na prvý pohľad — podľa neho sa
   rozhoduje, či sa dá číslu veriť. */
.wms-pvs-rel {
  display: inline-block;
  padding: 1px 6px;
  border-radius: 999px;
  font-size: 10px;
  font-weight: 600;
  white-space: nowrap;
}
.wms-pvs-rel-ok { background: #ECFDF5; color: #047857; }
.wms-pvs-rel-est { background: #FFFBEB; color: #92400E; }
.wms-pvs-rel-bad { background: #FEF2F2; color: #B91C1C; }

/* Artikel bez pohybu v období — zalistovaný a nepredáva sa. Nesmie zmiznúť,
   ale ani prekričať riadky, kde sa niečo deje. */
.wms-pvs-dead td { color: #9CA3AF; }
.wms-pvs-dead .wms-cash-item-link { color: #9CA3AF; }

.wms-pvs-sub { font-size: 10px; color: var(--wms-muted); }

.wms-pvs-docs-cell { background: #F9FAFB; padding: 8px 10px !important; }
.wms-pvs-docs-grid {
  display: grid;
  grid-template-columns: 1.6fr 1fr;
  gap: 12px;
  align-items: start;
}
.wms-pvs-docs-title {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--wms-muted);
  margin-bottom: 4px;
}
.wms-pvs-doctable { font-size: 11.5px; background: var(--wms-surface, #fff); }
.wms-pvs-doctable th, .wms-pvs-doctable td { padding: 4px 6px; }
/* Vratka dodávateľovi nie je likvidácia — musí byť odlíšená od príjmu. */
.wms-pvs-doc-ret td { background: #FEF2F2; }

@media (max-width: 1100px) {
  .wms-pvs-docs-grid { grid-template-columns: 1fr; }
}

/* Klikateľné číslo v tabuľke — nesmie vyzerať ako tlačidlo, ale musí sa dať kliknúť. */
.wms-pvs-num {
  border: 0;
  background: transparent;
  padding: 0;
  box-shadow: none;
  font: inherit;
  font-weight: inherit;
  color: var(--wms-text, #111827);
  border-bottom: 1px dashed #9CA3AF;
  cursor: pointer;
}
.wms-pvs-num:hover { color: var(--wms-red, #B91C1C); border-bottom-color: var(--wms-red, #B91C1C); }

.wms-pvs-docs-head {
  display: flex;
  gap: 8px;
  align-items: center;
  flex-wrap: wrap;
  margin-bottom: 8px;
  font-size: 12.5px;
}
.wms-pvs-docs-block { margin-bottom: 10px; }

/* Účtenky za deň — čipy, aby sa desiatky dokladov dali prehliadnuť naraz. */
.wms-pvs-rcpt-cell { background: #fff; padding: 6px 10px 10px 24px !important; }
.wms-pvs-rcpt-list { display: flex; flex-wrap: wrap; gap: 5px; }
.wms-pvs-rcpt {
  display: inline-flex;
  gap: 5px;
  align-items: baseline;
  padding: 2px 7px;
  border: 1px solid #E5E7EB;
  border-radius: 999px;
  background: #F9FAFB;
  font-size: 11px;
  font-variant-numeric: tabular-nums;
}
.wms-pvs-rcpt em { font-style: normal; color: var(--wms-muted); font-size: 10px; }
/* Odpis bez šarže = predaj predbehol príjem; treba to vidieť na doklade. */
.wms-pvs-rcpt-warn { border-color: #FDE68A; background: #FFFBEB; }
.wms-pvs-day-row:hover td { background: #F9FAFB; }

/* Súčtový riadok — musí byť zreteľne oddelený od dát, aby sa nečítal ako položka. */
.wms-pvs-foot td {
  border-top: 2px solid var(--wms-border);
  background: #F3F4F6;
  font-size: 12px;
  padding-top: 6px;
  padding-bottom: 6px;
}

/* Nadzásoba a spotreba — aktívny prepínač skupiny sortimentu */
.wms-slow-preset-on {
  background: #1d4ed8 !important;
  border-color: #1d4ed8 !important;
  color: #fff !important;
}

/* Návrh na vrátenie — lišta musí byť MIMO tabuľky, tá má max-height a scroll,
   takže tlačidlo na vytvorenie vratky by v nej zmizlo. */
/* ── Sumár vratiek (Vrátené) ──────────────────────────────────────────────
   Panel dostane celú pracovnú plochu a scrolluje sám, aby sa karty a tabuľky
   vždy zmestili do rozlíšenia zariadenia. */
#wms-rcv-retsum-panel {
  display: flex;
  flex-direction: column;
  min-height: 0;
  flex: 1 1 auto;
}
.wms-retsum-bar {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  background: #F8FAFC;
  border: 1px solid var(--wms-border);
  border-radius: 8px;
  padding: 6px 9px;
  margin: 0 0 8px;
  flex: 0 0 auto;
}
.wms-retsum-title { font-weight: 700; font-size: 13px; }
.wms-retsum-field { display: flex; align-items: center; gap: 4px; font-size: 11px; color: #6B7280; }
.wms-retsum-field .wms-input { font-size: 11px; padding: 2px 5px; }
.wms-retsum-range { font-size: 11px; margin-left: auto; }
/*
 * Výška sa neopiera o flex nadradeného prvku — ten pri tomto paneli žiadnu
 * nedáva a obsah mal 0 px, teda bol neviditeľný. Rovnaký vzorec ako pri návrhu
 * na vrátenie: pevné minimum a strop podľa výšky okna, takže sa obsah
 * prispôsobí rozlíšeniu zariadenia a scrolluje sám.
 */
.wms-retsum-body {
  overflow: auto;
  flex: 1 1 auto;
  padding-bottom: 8px;
  min-height: 300px;
  max-height: calc(100vh - 230px);
}
.wms-retsum-cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 8px;
  margin-bottom: 10px;
}
.wms-retsum-card {
  border: 1px solid var(--wms-border);
  border-radius: 8px;
  padding: 8px 10px;
  background: #fff;
}
.wms-retsum-card-accent { border-color: #FDE68A; background: #FFFBEB; }
.wms-retsum-card-val { font-size: 20px; font-weight: 700; line-height: 1.15; }
.wms-retsum-card-lbl { font-size: 10px; color: #6B7280; text-transform: uppercase; letter-spacing: .02em; }
.wms-retsum-grid {
  display: grid;
  /* 560 px je namerená šírka najširšej tabuľky (šesť stĺpcov: kg/ks/prepravky/
     hodnota/pohyby). Pri 320 aj 420 px sa hlavičky krájali a musel sa scrollovať
     každý blok; takto sa vojdú celé a stĺpcov je 2–4 podľa šírky okna. */
  grid-template-columns: repeat(auto-fit, minmax(560px, 1fr));
  gap: 10px;
  align-items: start;
}
.wms-retsum-block {
  border: 1px solid var(--wms-border);
  border-radius: 8px;
  background: #fff;
  min-width: 0;
}
/* keď je okno úzke, tabuľka scrolluje sama v bloku a nerozťahuje stránku */
.wms-retsum-block-scroll { overflow-x: auto; }
.wms-retsum-block-wide { grid-column: 1 / -1; }
.wms-retsum-block-head {
  font-size: 12px;
  font-weight: 700;
  padding: 6px 9px;
  border-bottom: 1px solid var(--wms-border);
  background: #F9FAFB;
}
.wms-retsum-block-head .muted { font-weight: 400; font-size: 10px; }
.wms-retsum-table th, .wms-retsum-table td { font-size: 11px; padding: 4px 8px; }
.wms-retsum-table th:first-child { min-width: 120px; }

/* ── Párovanie vratiek ────────────────────────────────────────────────────
   Stav musí byť čitateľný na prvý pohľad: červené = niekto to musí riešiť,
   oranžové = zásoba nesedí, zelené/sivé = beží to samo. */
#wms-rcv-pairing-panel {
  display: flex;
  flex-direction: column;
  min-height: 0;
  flex: 1 1 auto;
}
.wms-badge.pair-badge { font-weight: 600; white-space: nowrap; }
.wms-badge.pair-bad { background: #FEE2E2; color: #B91C1C; border: 1px solid #FCA5A5; }
.wms-badge.pair-warn { background: #FFF7ED; color: #B45309; border: 1px solid #FDBA74; }
.wms-badge.pair-ok { background: #DCFCE7; color: #15803D; border: 1px solid #86EFAC; }
.wms-badge.pair-wait { background: #F1F5F9; color: #475569; border: 1px solid #E2E8F0; }
.wms-pairing-add {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  align-items: center;
}
.wms-input-xs { font-size: 12px; padding: 4px 7px; }

.wms-rcv-return-bar {
  background: #FFFBEB;
  border: 1px solid #FDE68A;
  border-radius: 8px;
  padding: 6px 9px;
  margin: 0 0 6px;
  flex: 0 0 auto;
}
.wms-rcv-return-bar-row {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  align-items: center;
}
.wms-rcv-return-bar-notes {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  margin-top: 4px;
  font-size: 12px;
  color: var(--wms-muted);
}
.wms-rcv-return-warn {
  margin-top: 6px;
  padding: 6px 8px;
  background: #FEF2F2;
  border: 1px solid #FECACA;
  border-radius: 5px;
  font-size: 12px;
  line-height: 1.5;
}
.wms-rcv-return-warn strong { color: #B91C1C; }
.wms-rcv-return-name {
  text-align: left;
  color: #1D4ED8;
  font-weight: 600;
  text-decoration: underline;
  text-decoration-color: rgba(29, 78, 216, .35);
}
.wms-rcv-return-name:hover { text-decoration-color: #1D4ED8; }

/* Návrh vrátenia — prepisovateľné množstvo a rozbalené šarže */
.wms-rcv-return-qty {
  width: 72px;
  padding: 3px 6px;
  border: 1.5px solid var(--wms-border, #E5E7EB);
  border-radius: 5px;
  font-size: 13px;
  font-weight: 700;
  text-align: right;
  font-family: inherit;
  color: #B45309;
  background: #fff;
}
.wms-rcv-return-qty:focus {
  outline: none;
  border-color: #B45309;
  box-shadow: 0 0 0 2px rgba(180, 83, 9, .15);
}
.wms-rcv-return-batches-btn {
  margin-top: 3px;
  font-size: 11px;
  color: #1D4ED8;
  text-align: left;
}
.wms-rcv-return-batch-row > td { background: #F8FAFC; padding: 8px 10px !important; }
.wms-rcv-return-batch {
  display: flex;
  gap: 10px;
  align-items: baseline;
  font-size: 12px;
  padding: 3px 6px;
  border-radius: 4px;
}
.wms-rcv-return-batch-used { background: #FEF3C7; }
.wms-rcv-return-batch-ord {
  min-width: 16px;
  color: var(--wms-muted);
  font-weight: 700;
}
.wms-rcv-return-batch-qty { margin-left: auto; font-weight: 600; }
.wms-rcv-return-batch-take { color: #B45309; font-weight: 700; }
.wms-rcv-return-split { color: #1D4ED8; font-size: 11px; margin-top: 2px; }
.wms-rcv-return-over { color: #B45309; font-size: 11px; margin-top: 2px; }

/* Príjem tovaru — akcie navyše v menu, aby horná lišta nezaberala dva riadky */
.wms-rcv-more { position: relative; display: inline-block; }
.wms-rcv-more-menu {
  position: absolute;
  right: 0;
  top: calc(100% + 4px);
  z-index: 40;
  min-width: 250px;
  background: #fff;
  border: 1px solid var(--wms-border, #E5E7EB);
  border-radius: 10px;
  box-shadow: 0 12px 32px rgba(0, 0, 0, .16);
  padding: 6px;
}
.wms-rcv-more-item {
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  padding: 8px 10px;
  border: 0;
  background: transparent;
  border-radius: 7px;
  font-size: 13px;
  font-family: inherit;
  text-align: left;
  cursor: pointer;
  color: var(--wms-ink, #1F2937);
}
.wms-rcv-more-item:hover { background: var(--wms-red-light, #FEF2F2); }
.wms-rcv-more-note {
  padding: 7px 10px 3px;
  font-size: 11px;
  line-height: 1.45;
  color: var(--wms-muted);
  border-top: 1px solid var(--wms-border, #E5E7EB);
  margin-top: 4px;
}

/* Návrh vrátenia vo veľkej pracovnej časti.
   Riadkov je pri rozpise šarží násobne viac než v inom pohľade, takže panel berie
   celú zvyšnú výšku a riadky sú zámerne tesné — každý ušetrený pixel je jeden
   viditeľný riadok. */
#wms-rcv-return-panel {
  display: flex;
  flex-direction: column;
  min-height: 0;
  flex: 1 1 auto;
  height: 100%;
}
.wms-rcv-return-wrap {
  flex: 1 1 auto;
  min-height: 320px;
  max-height: calc(100vh - 250px);
  overflow: auto;
}
.wms-rcv-return-table { font-size: 12px; }
.wms-rcv-return-table td, .wms-rcv-return-table th {
  padding-top: 3px !important;
  padding-bottom: 3px !important;
  line-height: 1.25;
}
.wms-rcv-return-table thead th {
  position: sticky;
  top: 0;
  background: var(--wms-bg-soft, #F9FAFB);
  z-index: 2;
}
.wms-rcv-return-prod > td {
  background: #FFFDF5;
  border-top: 2px solid #FDE68A;
  padding-top: 5px !important;
  padding-bottom: 5px !important;
  font-weight: 600;
}
.wms-rcv-return-batch-tr > td {
  padding-top: 2px !important;
  padding-bottom: 2px !important;
  color: var(--wms-muted);
  font-size: 11.5px;
}
.wms-rcv-return-batch-tr-used > td { background: #FEF9E7; color: var(--wms-ink, #1F2937); }
.wms-rcv-return-batch-cell { padding-left: 26px !important; }
.wms-rcv-return-tag {
  display: inline-block;
  margin-left: 6px;
  padding: 1px 6px;
  border-radius: 4px;
  background: #F1F5F9;
  color: #475569;
  font-size: 10.5px;
  white-space: nowrap;
}
.wms-rcv-return-qty-total { border-color: #B45309; }
.wms-rcv-return-qty-batch { width: 72px; font-weight: 600; color: var(--wms-ink, #1F2937); }

/* Návrh OBJ — koľko zo zásoby v deň dodania reálne bude */
.wms-orders-stock-note {
  font-size: 10px;
  line-height: 1.2;
  color: #B45309;
  font-weight: 600;
  white-space: nowrap;
}

/* Predobjednávky z webshopu */
.wms-po-head {
  display: flex; gap: 14px; align-items: flex-start; flex-wrap: wrap;
  padding-bottom: 8px; margin-bottom: 8px; border-bottom: 1px solid var(--wms-border, #E5E7EB);
}
.wms-po-head-tools { margin-left: auto; display: flex; gap: 10px; align-items: flex-end; flex-wrap: wrap; }
.wms-po-counts { display: flex; gap: 7px; flex-wrap: wrap; margin-bottom: 8px; }
.wms-po-chip {
  display: inline-block; padding: 2px 9px; border-radius: 20px;
  font-size: 11.5px; font-weight: 600; white-space: nowrap;
}
/* Čakajúce musia biť do očí — na ne sa čaká pri telefóne. */
.wms-po-new > td { background: #FFFBEB; }
.wms-po-detail > td, td.wms-po-detail { background: #F8FAFC; padding: 10px !important; }
.wms-po-detail-grid { display: flex; gap: 16px; flex-wrap: wrap; align-items: flex-start; }
.wms-po-detail-grid > div:first-child { flex: 1 1 420px; min-width: 0; }
.wms-po-actions { flex: 0 0 260px; display: flex; flex-direction: column; gap: 7px; }
.wms-po-qty {
  width: 74px; padding: 3px 6px; border: 1.5px solid #B45309; border-radius: 5px;
  font-size: 13px; font-weight: 700; text-align: right; font-family: inherit; color: #B45309;
}

/* Návrh OBJ — ručne doplnená položka (nemá predaj, návrh by ju sám nepriniesol) */
.wms-orders-extra-tag {
  display: inline-block;
  padding: 1px 5px;
  border-radius: 4px;
  background: #FEF3C7;
  color: #92400E;
  font-size: 9.5px;
  font-weight: 800;
  letter-spacing: .3px;
  vertical-align: middle;
  cursor: pointer;
}
/* × má dotykovú plochu 28 px (predtým 10×13 px — na mobile sa nedalo trafiť) */
.wms-orders-extra-x {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 28px;
  min-height: 28px;
  margin-left: 2px;
  border-radius: 6px;
  color: #6B7280;
  font-size: 18px;
  line-height: 1;
  vertical-align: middle;
  cursor: pointer;
}
.wms-orders-extra-x:hover { color: #B91C1C; }
/* „len teraz" — doplnené tlačidlom Doplniť položku, platí len pre túto objednávku */
.wms-orders-extra-tag--teraz { background: #E0F2FE; color: #075985; cursor: default; }

.wms-orders-add-btn { white-space: nowrap; }
/* krátke bliknutie po kliknutí na „Doplniť položku“ — aby bolo vidieť, kam sa píše */
.wms-search-hint {
  box-shadow: 0 0 0 3px rgba(185, 28, 28, .22) !important;
  border-color: #B91C1C !important;
}

/* Návrh OBJ — špeciál, ktorý prišiel z predobjednávky zákazníka */
.wms-orders-preorder-tag {
  display: inline-block;
  padding: 1px 5px;
  border-radius: 4px;
  background: #DBEAFE;
  color: #1D4ED8;
  font-size: 9.5px;
  font-weight: 800;
  letter-spacing: .3px;
  cursor: help;
}

/* ══════════════════════════════════════════════════════════════════════════
   NÁVRH OBJEDNÁVOK — zúžená horná časť
   ══════════════════════════════════════════════════════════════════════════
   Na notebooku s výškou 720 px začínal prvý riadok dát na 494 px, takže z 322
   položiek boli vidieť ŠTYRI. Miesto zjedli: filtre 148 px (dva riadky, veľké
   menovky nad políčkami), hlavička tabuľky 82 px (dlhé menovky sa v úzkom
   stĺpci zalomili a koliesko „i" pod nimi pridalo ďalší riadok), lišta akcií
   48 px a súhrn, ktorý sa zalomil na dva riadky.

   Nič sa neodstránilo — len sa zmenšili odsadenia, menovky a políčka na
   hodnoty, ktoré sú v tabuľkových prehľadoch bežné. Platí to LEN pre návrh
   objednávok (trieda na <body> sa nasadzuje pri prepnutí záložky), pretože
   inde sa s desiatkami riadkov nepracuje a väčšie písmo je tam na mieste.
   ═════════════════════════════════════════════════════════════════════════ */

/* Hlavička stránky: názov modulu je aj v bočnom menu, podtitul tu nič nerieši. */
body.wms-orders-compact header.im-page-header {
  margin-bottom: 0.25rem;
  padding-bottom: 0.25rem;
  gap: 0.1rem 1rem;
}
body.wms-orders-compact .im-page-title { font-size: 1rem; }
body.wms-orders-compact .im-page-subtitle { display: none; }

/* Plocha stránky: 28 px odsadenia zhora je pri tabuľke zbytočný pás. */
body.wms-orders-compact #wms-pane-orders .wms-page { padding: 8px 16px; }
body.wms-orders-compact #wms-orders-header { gap: 4px; padding-bottom: 4px; }

/* Filtre do jedného riadku: menovka menšia a tesne nad políčkom. */
body.wms-orders-compact #wms-pane-orders #wms-orders-header .wms-toolbar {
  padding: 0;
  gap: 4px 8px;
  border-bottom: 0;
}
body.wms-orders-compact #wms-orders-header .wms-fg { gap: 1px; }
body.wms-orders-compact #wms-orders-header .wms-label {
  font-size: 9.5px;
  line-height: 1.15;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.2px;
}
body.wms-orders-compact #wms-orders-header .wms-sel,
body.wms-orders-compact #wms-orders-header .wms-input,
body.wms-orders-compact #wms-orders-header .wms-search {
  height: 26px;
  padding: 2px 8px;
  font-size: 11.5px;
}
body.wms-orders-compact #wms-orders-header .wms-sel { padding-right: 22px; }
body.wms-orders-compact #wms-orders-header .wms-btn {
  height: 26px;
  padding: 0 10px;
  font-size: 11.5px;
}

/* Riadok hľadania a lišta akcií: súhrn na jeden riadok, celé znenie v tooltipe. */
body.wms-orders-compact .wms-orders-search-row { gap: 6px; }
body.wms-orders-compact .wms-orders-quiet-toggle { font-size: 11px; }
body.wms-orders-compact #wms-orders-actions {
  padding: 0;
  gap: 6px;
  align-items: center;
}
body.wms-orders-compact #wms-orders-actions #wms-orders-summary {
  font-size: 11.5px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
body.wms-orders-compact #wms-orders-actions .wms-btn {
  height: 26px;
  padding: 0 9px;
  font-size: 11.5px;
}
body.wms-orders-compact #wms-orders-actions .wms-input { height: 26px; font-size: 11.5px; }
body.wms-orders-compact .wms-orders-inline-lbl { font-size: 11px; }

/*
 * Hlavička tabuľky na jeden riadok.
 *
 * Rozhodujúce je `white-space: nowrap` — bez neho sa „D+1/D+2 min.týž" v 88 px
 * zalomí a koliesko „i" spadne na ďalší riadok, čo natiahne CELÚ hlavičku.
 * Menovky sú preto skrátené v ORDERS_COLS a plné znenie je v tooltipe.
 */
body.wms-orders-compact #wms-orders-table-wrap thead th {
  /* istermeat-ui.css:480 vynucuje 9px/16px cez !important — bez !important tu
     by sa hlavička nezúžila ani o pixel a nebolo by vidieť prečo. */
  padding: 2px 4px !important;
  font-size: 10px;
  line-height: 1.15;
  /* Kapitálky a rozpal písmen naťahujú menovku o pätinu — v 72 px stĺpci je to
     rozdiel medzi „Zásoba" a „ZÁSO…". */
  text-transform: none;
  letter-spacing: 0;
  vertical-align: bottom;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
body.wms-orders-compact .wms-orders-table thead th.wms-th-with-info { font-size: 10px; }
body.wms-orders-compact #wms-orders-table-wrap thead th .wms-th-label { font-size: 10px; }
body.wms-orders-compact .wms-col-info {
  width: 11px;
  height: 11px;
  font-size: 8px;
  margin-left: 0;
}

/*
 * Filtre do JEDNÉHO riadku.
 *
 * Najmenšie šírky sú v HTML ako inline style, preto tu musí byť !important —
 * inak sa lišta pri 1280 px zalomí na dva riadky a stratí sa 46 px. Políčka
 * ostávajú dosť široké na to, čo v nich naozaj je (názov predajne, dátum).
 */
body.wms-orders-compact #wms-orders-header .wms-toolbar > .wms-fg { flex: 0 1 auto; }
body.wms-orders-compact #wms-orders-header .wms-toolbar > .wms-fg:nth-child(1) { min-width: 130px !important; max-width: 168px; }
body.wms-orders-compact #wms-orders-header .wms-toolbar > .wms-fg:nth-child(2),
body.wms-orders-compact #wms-orders-header .wms-toolbar > .wms-fg:nth-child(3),
body.wms-orders-compact #wms-orders-header .wms-toolbar > .wms-fg:nth-child(4) { min-width: 104px !important; max-width: 138px; }
body.wms-orders-compact #wms-orders-header .wms-toolbar > .wms-fg:nth-child(5) { min-width: 96px !important; max-width: 116px; }
body.wms-orders-compact #wms-orders-header .wms-toolbar > .wms-fg:nth-child(6) { min-width: 74px !important; max-width: 86px; }

/*
 * Pás upozornenia na expirácie.
 *
 * Je `position: fixed`, takže obsah odtláča pevné odsadenie shellu (2,25 rem).
 * Zmenšiť treba oboje — inak sa buď pás prekryje s hlavičkou, alebo sa ušetrený
 * pixel nikde neprejaví.
 */
body.wms-orders-compact .expiry-global-banner-inner { padding: 2px 12px; font-size: 11.5px; }
body.wms-orders-compact .expiry-global-banner-btn { padding: 2px 10px; font-size: 11.5px; }
body.wms-orders-compact #adminMainShell.loyalty-admin-authed:has(#expiry-global-banner:not([hidden])) {
  padding-top: 1.75rem;
}

/*
 * Riadky tabuľky.
 *
 * Zúženie hlavičky by samo o sebe pomohlo málo: pri riadku vysokom 55 px je
 * každý ušetrený riadok hlavičky len pol položky. Odsadenie buniek ide z 9 na
 * 4 px a druhý riadok v bunke produktu (kategória) je menší — kategória je aj
 * v šedom zoskupovacom riadku nad položkami, takže sa tá informácia nestráca.
 */
body.wms-orders-compact #wms-orders-table-wrap tbody td {
  padding: 4px 6px !important;
  font-size: 12.5px;
}
body.wms-orders-compact #wms-orders-table-wrap tbody td .wms-orders-cell-text,
body.wms-orders-compact #wms-orders-table-wrap tbody td > div { line-height: 1.25; }
/*
 * Kategória v bunke produktu sa v kompaktnom režime skrýva.
 *
 * Zoskupovací riadok nad položkami teraz nesie „Čerstvé mäso › Bravčové mäso",
 * takže tá istá informácia bola v každom riadku druhýkrát — a stála jeden
 * textový riadok na KAŽDEJ položke, čo je pri 322 položkách viac miesta než
 * celá hlavička.
 */
body.wms-orders-compact #wms-orders-table-wrap tbody td[data-orders-col="product"] > div:last-child:not(:first-child) {
  display: none;
}
body.wms-orders-compact .wms-orders-cat-row td { padding: 3px 10px !important; font-size: 10.5px; }
body.wms-orders-compact #wms-orders-table-wrap tbody .wms-orders-input,
body.wms-orders-compact #wms-orders-table-wrap tbody .wms-input {
  height: 24px;
  padding: 1px 6px;
  font-size: 11.5px;
}

/*
 * Návrh objednávok — prilepené prvé stĺpce (Produkt, Kód, SKU).
 *
 * Ľavé odsadenie nastavuje JS z reálnych šírok stĺpcov (dajú sa ťahať aj
 * skrývať), tu je len to, čo je pre všetky rovnaké. Hlavička je prilepená aj
 * zhora (top: 0), takže priesečník musí mať vyššiu vrstvu než oba pásy, inak
 * sa pri posune podlezú.
 */
.wms-orders-table td.wms-orders-sticky-col,
.wms-orders-table th.wms-orders-sticky-col {
  position: sticky;
  z-index: 3;
  background: #fff;
}
.wms-orders-table tbody tr:hover td.wms-orders-sticky-col { background: #FDF6F6; }
.wms-orders-table tbody tr.wms-orders-cat-row td.wms-orders-sticky-col { background: #f3f4f6 !important; }
#wms-orders-table-wrap thead th.wms-orders-sticky-col { z-index: 7; }
/* pravý okraj prilepeného bloku — aby bolo vidieť, kde končí */
.wms-orders-table td.wms-orders-sticky-col:last-of-type,
.wms-orders-table th.wms-orders-sticky-col:last-of-type { box-shadow: 2px 0 0 rgba(0,0,0,.06); }

/* Kým je otvorené okno, bočná lišta sa nekreslí a nereaguje na myš. */
body.wms-modal-open #loyalty-sidebar {
  opacity: 0;
  pointer-events: none;
  transition: opacity .12s ease-out;
}

/* ── Viacnásobný výber kategórií / podkategórií v návrhu OBJ ───────────────── */
.wms-multipick-btn {
  text-align: left;
  cursor: pointer;
  font-family: inherit;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  width: 100%;
}
.wms-multipick-btn.is-active {
  border-color: var(--wms-red, #B91C1C);
  color: var(--wms-red, #B91C1C);
  font-weight: 600;
}
.wms-pick-panel {
  position: fixed;
  box-sizing: border-box;
  z-index: 10095;
  width: min(320px, 94vw);
  background: #fff;
  border: 1px solid var(--wms-border, #e5e7eb);
  border-radius: 10px;
  box-shadow: 0 8px 30px rgba(0, 0, 0, .14);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  padding: 10px 12px;
}
/* hlavička s tlačidlami ostáva na mieste, posúva sa len zoznam */
.wms-pick-head { flex: 0 0 auto; padding-bottom: 8px; border-bottom: 1px solid var(--wms-border, #e5e7eb); }
.wms-pick-head strong { display: block; font-size: 13px; margin-bottom: 6px; }
.wms-pick-actions { display: flex; gap: 6px; flex-wrap: wrap; }
.wms-pick-list { flex: 1 1 auto; overflow-y: auto; margin-top: 6px; }
.wms-pick-group {
  font-size: 10px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .3px;
  color: var(--wms-subtle, #9ca3af);
  padding: 8px 2px 3px;
}
.wms-pick-row {
  display: flex;
  align-items: center;
  gap: 7px;
  padding: 4px 2px;
  font-size: 12.5px;
  cursor: pointer;
  border-radius: 4px;
}
.wms-pick-row:hover { background: #f9fafb; }

/* ══════════════════════════════════════════════════════════════════════════
   NOVÁ OBJEDNÁVKA — celoobrazovkové okno, ktoré sa vždy zmestí
   ══════════════════════════════════════════════════════════════════════════
   Okno malo pevných 720 px a zoznam položiek 320 px, takže na veľkom monitore
   ostávala polovica plochy prázdna a bolo vidieť šesť riadkov, kým objednávka
   ich má aj šesťdesiat. Naopak na malom notebooku okno prečnievalo.

   Teraz je to jeden svislý stĺpec: hlavička a nožička si držia svoju výšku
   a zoznam berie presne to, čo zostane. Preto tu nie je ani jedna výška
   v pixloch — nič sa nemá čo minúť s rozlíšením.
   ═════════════════════════════════════════════════════════════════════════ */
#wms-order-create-modal {
  padding: 8px;
  align-items: stretch;
  overflow: hidden;
  /* nad pásom expirácií (1200) aj nad prepínačom lišty (1300) — celoobrazovkové
     okno nesmie mať cez hlavičku nakreslené nič iné */
  z-index: 1400;
}
#wms-order-create-modal .wms-modal {
  max-width: none;
  width: 100%;
  height: 100%;
  margin: 0;
  display: flex;
  flex-direction: column;
  min-height: 0;
}
/* zhustená hlavička a nožička — nadpis nemusí zaberať 22 px odsadenia */
#wms-order-create-modal .wms-modal-header {
  flex: 0 0 auto;
  padding: 8px 14px;
}
#wms-order-create-modal .wms-modal-title { font-size: 14px; }
#wms-order-create-modal .wms-modal-footer {
  flex: 0 0 auto;
  padding: 8px 14px;
}
#wms-order-create-modal .wms-modal-body {
  flex: 1 1 auto;
  min-height: 0;
  max-height: none;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  padding: 10px 14px 12px;
}
/* políčka v jednom pásiku, na úzkej obrazovke sa zalomia samy */
#wms-order-create-modal .wms-oc-fields {
  flex: 0 0 auto;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 6px 12px;
}
#wms-order-create-modal .wms-oc-fields .wms-fg { gap: 2px; }
#wms-order-create-modal .wms-oc-fields .wms-label { font-size: 10px; text-transform: uppercase; letter-spacing: .2px; }
#wms-order-create-modal .wms-oc-fields .wms-sel,
#wms-order-create-modal .wms-oc-fields .wms-input { height: 28px; padding: 3px 9px; font-size: 12.5px; }

/* zoznam položiek zaberie zvyšok okna a posúva sa vnútri */
#wms-order-create-modal .wms-oc-items {
  flex: 1 1 auto;
  min-height: 0;
  overflow: auto;
  margin-top: 10px;
}
#wms-order-create-modal .wms-oc-items thead th {
  position: sticky;
  top: 0;
  z-index: 2;
  background: var(--wms-bg, #FBF7F0);
}
#wms-order-create-modal .wms-oc-items td { padding: 4px 10px !important; font-size: 13px; }
#wms-order-create-modal .wms-oc-items th { padding: 5px 10px !important; }
/* počet artiklov, ktoré dodávateľ v tej kategórii má */
.wms-pick-count {
  margin-left: auto;
  font-size: 10.5px;
  color: var(--wms-subtle, #9ca3af);
  font-variant-numeric: tabular-nums;
}

/* Cenník — lišta výberu položiek a chýbajúca sadzba DPH */
.pl-selbar {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  padding: 8px 12px;
  margin: 0 0 10px;
  border: 1px solid #FCD34D;
  background: #FFFBEB;
  border-radius: 8px;
  font-size: 12.5px;
}
.pl-vat-missing {
  color: #92400E;
  background: #FEF3C7;
  border-radius: 4px;
  padding: 1px 5px;
  font-weight: 700;
  cursor: help;
}
/* Report cenníka — rozklikanie kategórie na artikle */
.rpt-cat-row:hover td { background: #FDF6F6; }
.rpt-cat-caret { display: inline-block; width: 12px; color: var(--wms-subtle, #9ca3af); font-size: 10px; }

/*
 * Poslané, ale expedíciou nezaevidované — informačný riadok v príjme vratky.
 * Musí byť jasné, že sa nedá prijať: iné pozadie, žiadne políčka.
 */
.wms-rcv-pp-missing-row {
  background: #FFFBEB;
}
.wms-rcv-pp-missing-row td {
  border-top: 1px dashed #FDBA74 !important;
}

/* Cesta pre predajňu bez admina — musí byť vidieť skôr než admin tlačidlá. */
.wms-cmp-accept {
  display: flex;
  gap: 12px;
  align-items: center;
  justify-content: space-between;
  background: #ECFDF5;
  border: 1px solid #A7F3D0;
  border-radius: 8px;
  padding: 8px 10px;
  margin: 0 0 10px;
  font-size: 12.5px;
}

/* ═══════════════════════════════════════════════════════
   TELEFÓN (≤ 700 px) — Návrh OBJ, Zásoby, Expirácie, Príjem
   Toto sú desktopové obrazovky s tabuľkami. Na 390 px sa doteraz stlačili
   stĺpce na tri znaky („T… D… DOKL…"), lišty sa rozsypali do štyroch riadkov a
   z tabuľky nezostalo nič čitateľné. Pravidlo je preto jednoduché:
     • filtre a tlačidlá idú do mriežky s dotykovou plochou 40+ px,
     • tabuľka sa NESTLAČUJE — dostane vlastný vodorovný scroll a minimálnu
       šírku, aby stĺpce zostali čitateľné, a prvý stĺpec sa prilepí,
     • stránka sama sa vodorovne nescrolluje (to je vždy chyba, nie funkcia).
   ═══════════════════════════════════════════════════════ */
@media (max-width: 700px) {
  /* ── spoločné: obsah na plnú šírku, žiadne vodorovné pretekanie stránky ── */
  #wms-pane-orders.wms-page-pane.active,
  #wms-pane-stock.wms-page-pane.active,
  #wms-pane-expiry.wms-page-pane.active,
  #wms-pane-receiving.wms-page-pane.active {
    padding-left: 6px;
    padding-right: 6px;
    overflow-x: hidden;
  }

  /* ── tabuľky: vlastný scroll, čitateľné stĺpce, prilepený prvý ─────────── */
  #wms-orders-table-wrap,
  #wms-pane-stock .wms-stock-table-area,
  #wms-pane-stock .wms-table-wrap,
  #wms-pane-expiry .wms-table-wrap,
  #wms-pane-receiving .wms-rcv-queue-table-wrap,
  #wms-pane-receiving #wms-rcv-items-wrap {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }

  #wms-orders-table-wrap .wms-table,
  #wms-pane-stock .wms-stock-table-area .wms-stock-table,
  #wms-pane-stock .wms-table-wrap .wms-table,
  #wms-pane-expiry .wms-table-wrap .wms-table,
  #wms-pane-receiving .wms-rcv-queue-table-wrap .wms-table,
  #wms-pane-receiving #wms-rcv-items-wrap .wms-rcv-table {
    min-width: 720px;
  }

  #wms-pane-stock .wms-stock-table th:first-child,
  #wms-pane-stock .wms-stock-table td:first-child,
  #wms-pane-stock .wms-table-wrap .wms-table th:first-child,
  #wms-pane-stock .wms-table-wrap .wms-table td:first-child,
  #wms-pane-receiving .wms-rcv-queue-table-wrap .wms-table td:nth-child(3) {
    position: sticky;
    left: 0;
    background: #fff;
    z-index: 2;
  }

  #wms-pane-stock .wms-stock-table th:first-child,
  #wms-pane-stock .wms-table-wrap .wms-table th:first-child {
    background: #f9fafb;
    z-index: 3;
  }

  /* drobné tlačidlá v lištách (xs) sa na telefóne nedajú trafiť */
  #wms-pane-stock .wms-btn-xs,
  #wms-pane-expiry .wms-btn-xs,
  #wms-rcv-header .wms-btn-xs,
  #wms-pane-stock .wms-btn-sm,
  #wms-pane-expiry .wms-btn-sm {
    min-height: 38px;
    font-size: 12px;
    padding: 6px 10px;
  }

  /* lišta otvoreného dokladu (Foto dokladu, Tlačiť, Storno, Celý doklad na EXP) */
  #wms-pane-receiving .wms-rcv-doc-strip {
    flex-wrap: wrap;
    gap: 6px;
  }

  #wms-pane-receiving .wms-rcv-doc-strip .wms-btn,
  #wms-pane-receiving .wms-rcv-doc-strip-main .wms-btn {
    min-height: 38px;
    font-size: 12px;
    padding: 6px 10px;
  }

  #wms-pane-receiving .wms-rcv-doc-sort select {
    min-height: 38px;
    font-size: 12px;
  }

  /* prepínače pohľadu v expiráciách */
  #wms-pane-expiry .wms-expiry-view-toggle .wms-btn {
    min-height: 38px;
    font-size: 12px;
    flex: 0 0 auto;
  }

  /* v tabuľkách nech riadkové tlačidlá zostanú malé — inak riadok narastie */
  #wms-pane-stock table .wms-btn-xs,
  #wms-pane-expiry table .wms-btn-xs,
  #wms-pane-receiving table .wms-btn-xs {
    min-height: 30px;
    padding: 3px 8px;
  }

  /* ── Návrh objednávok ─────────────────────────────────────────────────── */
  #wms-pane-orders .wms-orders-filters,
  #wms-pane-orders .wms-orders-toolbar {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 6px;
  }

  #wms-pane-orders .wms-sel,
  #wms-pane-orders .wms-input {
    width: 100%;
    min-height: 40px;
    font-size: 13px;
  }

  #wms-pane-orders .wms-label {
    font-size: 10px;
    margin-bottom: 1px;
  }

  #wms-pane-orders .wms-btn {
    min-height: 40px;
    font-size: 12.5px;
    padding: 6px 10px;
  }

  /* Načítať návrh a Vytvoriť objednávku sú hlavné akcie — celý riadok. */
  #wms-pane-orders #wms-load-proposal-btn,
  #wms-pane-orders #wms-create-order-btn {
    grid-column: 1 / -1;
  }

  /* ── Zásoby ───────────────────────────────────────────────────────────── */
  #wms-stock-toolbar {
    display: grid !important;
    grid-template-columns: 1fr 1fr;
    grid-template-rows: auto;
    gap: 6px;
    padding: 6px 0;
  }

  #wms-stock-toolbar .wms-sel,
  #wms-stock-toolbar .wms-input {
    width: 100%;
    min-height: 40px;
    font-size: 13px;
  }

  #wms-stock-toolbar .wms-stock-dept,
  #wms-stock-toolbar #stock-search {
    grid-column: 1 / -1;
  }

  #wms-pane-stock .wms-stock-subtabs {
    display: flex;
    gap: 6px;
    overflow-x: auto;
    padding-bottom: 4px;
  }

  #wms-pane-stock .wms-stock-subtabs .wms-btn,
  #wms-pane-stock #wms-stock-toolbar .wms-btn {
    min-height: 40px;
    white-space: nowrap;
    font-size: 12.5px;
  }

  /* ── Expirácie ────────────────────────────────────────────────────────── */
  #wms-pane-expiry .wms-expiry-head {
    flex-direction: column;
    align-items: stretch;
    gap: 6px;
  }

  #wms-pane-expiry .wms-expiry-title {
    font-size: 16px;
    margin: 0;
  }

  #wms-pane-expiry .wms-expiry-toolbar {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 6px;
  }

  #wms-pane-expiry .wms-expiry-toolbar .wms-btn {
    min-height: 40px;
    font-size: 12.5px;
    width: 100%;
  }

  #wms-pane-expiry .wms-expiry-view-toggle {
    grid-column: 1 / -1;
    display: flex;
    gap: 6px;
    overflow-x: auto;
  }

  #wms-pane-expiry .wms-expiry-tabs {
    flex-wrap: nowrap;
    overflow-x: auto;
    padding-bottom: 4px;
    margin-bottom: 8px;
  }

  #wms-pane-expiry .wms-expiry-tab {
    white-space: nowrap;
    padding: 8px 12px;
    font-size: 12.5px;
    min-height: 40px;
  }

  #wms-pane-expiry .wms-expiry-cards {
    grid-template-columns: 1fr 1fr;
    gap: 6px;
  }

  /* ── Príjem tovaru ────────────────────────────────────────────────────── */
  #wms-rcv-header .wms-rcv-toolbar-grid {
    grid-template-columns: 1fr 1fr !important;
    gap: 6px !important;
  }

  #wms-rcv-header .wms-rcv-field,
  #wms-rcv-header .wms-rcv-toolbar-actions {
    grid-column: 1 / -1;
  }

  #wms-rcv-header .wms-sel,
  #wms-rcv-header .wms-input {
    min-height: 40px;
    font-size: 13px;
  }

  /* akcie: vodorovný pás namiesto štyroch zalomených riadkov */
  #wms-rcv-header .wms-rcv-toolbar-actions-main {
    display: flex;
    flex-wrap: nowrap;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    gap: 6px;
    padding-bottom: 4px;
    justify-content: flex-start;
  }

  #wms-rcv-header .wms-rcv-toolbar-actions-main .wms-btn,
  #wms-rcv-header .wms-btn-sm,
  #wms-pane-receiving .wms-rcv-queue-head .wms-btn {
    flex: 0 0 auto;
    min-height: 40px;
    white-space: nowrap;
    font-size: 12.5px;
    padding: 6px 10px;
  }

  /* záložky frontu: jeden pás so scrollom, nie tri riadky */
  #wms-pane-receiving .wms-rcv-queue-tabs {
    display: flex;
    flex-wrap: nowrap;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    gap: 4px;
    padding-bottom: 4px;
  }

  #wms-pane-receiving .wms-rcv-queue-tab {
    flex: 0 0 auto;
    white-space: nowrap;
    min-height: 38px;
    font-size: 12px;
    padding: 6px 10px;
  }

  /* pätička príjmu: tlačidlá pod sebou, nech sa dajú stlačiť */
  #wms-rcv-footer {
    flex-wrap: wrap;
    gap: 6px;
    position: sticky;
    bottom: 0;
    background: #fff;
    padding: 8px 0 calc(8px + env(safe-area-inset-bottom, 0px));
    border-top: 1px solid var(--wms-border);
    z-index: 5;
  }

  #wms-rcv-footer .wms-btn {
    min-height: 42px;
    font-size: 12.5px;
  }

  #wms-rcv-summary {
    flex: 1 1 100%;
    font-size: 11.5px;
  }
}

/* ───────────────────────────────────────────────────────────────────────────
   EXPIRÁCIE NA TELEFÓNE — z tabuľky karty
   Osem stĺpcov na 390 px znamenalo, že názov sa lámal na päť riadkov a to
   podstatné (dátum, dni, množstvo, Odpísať) zostalo mimo obrazovky. Riadok je
   preto na telefóne karta: názov ako titulok, potom dátum a dni veľké, pod nimi
   množstvo a hodnota, šarža a PLU drobne a Odpísať na celú šírku.
   Poradie drží `order`, nie DOM — tabuľka pre počítač zostáva nezmenená.
   ─────────────────────────────────────────────────────────────────────────── */
@media (max-width: 700px) {
  #wms-pane-expiry .wms-table-wrap {
    overflow-x: visible;
  }

  #wms-pane-expiry #expiry-items-table {
    min-width: 0;
    display: block;
  }

  #wms-pane-expiry #expiry-items-table thead {
    display: none;
  }

  #wms-pane-expiry #expiry-items-table tbody {
    display: block;
  }

  /*
   * Dva stĺpce: dátum a dni vedľa seba, množstvo a hodnota vedľa seba, šarža a
   * PLU vedľa seba. Karta má tak ~165 px namiesto 250 a na obrazovku sa vojdú
   * tri položky namiesto jednej.
   */
  #wms-pane-expiry #expiry-items-table tbody tr {
    display: grid;
    grid-template-columns: 1fr 1fr;
    column-gap: 10px;
    row-gap: 2px;
    padding: 9px 11px;
    margin-bottom: 7px;
    background: #fff;
    border: 1px solid var(--wms-border);
    border-radius: 10px;
  }

  #wms-pane-expiry #expiry-items-table tbody td[data-cell="product"],
  #wms-pane-expiry #expiry-items-table tbody td[data-cell="action"] {
    grid-column: 1 / -1;
  }

  #wms-pane-expiry #expiry-items-table tbody td {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 10px;
    /* !important, lebo globálne pravidlo pre td v admin.html je neskôr v poradí */
    padding: 2px 0 !important;
    border: 0;
    font-size: 13px;
    line-height: 1.3;
    text-align: left !important;
  }

  #wms-pane-expiry #expiry-items-table tbody td::before {
    content: attr(data-label);
    color: var(--wms-muted);
    font-size: 11px;
    flex: 0 0 auto;
  }

  /* titulok karty — názov artikla na celú šírku, bez štítku */
  #wms-pane-expiry #expiry-items-table td[data-cell="product"] {
    order: 1;
    display: block;
    font-size: 14px;
    line-height: 1.3;
    padding-bottom: 4px;
    border-bottom: 1px solid #f3f4f6;
    margin-bottom: 4px;
  }

  #wms-pane-expiry #expiry-items-table td[data-cell="product"]::before {
    content: none;
  }

  /* to podstatné hore a veľké */
  #wms-pane-expiry #expiry-items-table td[data-cell="expiry"] { order: 2; font-weight: 600; }
  #wms-pane-expiry #expiry-items-table td[data-cell="days"] { order: 3; font-weight: 600; }
  #wms-pane-expiry #expiry-items-table td[data-cell="qty"] { order: 4; font-weight: 600; }
  #wms-pane-expiry #expiry-items-table td[data-cell="value"] { order: 5; }
  #wms-pane-expiry #expiry-items-table td[data-cell="batch"] { order: 6; font-size: 12px; }
  #wms-pane-expiry #expiry-items-table td[data-cell="plu"] { order: 7; font-size: 12px; }
  #wms-pane-expiry #expiry-items-table td[data-cell="dept"] { order: 8; font-size: 12px; }

  /* pri jednej predajni je ten riadok len šum */
  #wms-pane-expiry #expiry-items-table.expiry-single-dept td[data-cell="dept"] {
    display: none;
  }

  /* Odpísať na celú šírku — hlavná akcia karty */
  #wms-pane-expiry #expiry-items-table td[data-cell="action"] {
    order: 9;
    display: block;
    margin-top: 6px;
  }

  #wms-pane-expiry #expiry-items-table td[data-cell="action"]::before { content: none; }

  #wms-pane-expiry #expiry-items-table td[data-cell="action"] .wms-btn {
    width: 100%;
    min-height: 42px;
    font-size: 13px;
  }

  /* prázdny / načítavací riadok nech nie je karta */
  #wms-pane-expiry #expiry-items-table tbody tr:has(td[colspan]) {
    display: block;
    border: 0;
    background: transparent;
  }

  /* súhrnné karty: dve v riadku, kompaktné */
  #wms-pane-expiry .wms-expiry-card {
    padding: 8px 10px;
  }

  #wms-pane-expiry .wms-expiry-card-qty { font-size: 13px; }
  #wms-pane-expiry .wms-expiry-card-value { font-size: 11px; }
}

/* Rozpad po predajniach v expiráciách — na telefóne vlastný vodorovný scroll. */
@media (max-width: 700px) {
  #wms-pane-expiry .wms-expiry-dept-wrap,
  #wms-pane-expiry #expiry-dept-breakdown-wrap {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }

  #wms-pane-expiry #expiry-dept-breakdown-wrap .wms-table {
    min-width: 560px;
  }

  #wms-pane-expiry #expiry-dept-breakdown-wrap .wms-table th:first-child,
  #wms-pane-expiry #expiry-dept-breakdown-wrap .wms-table td:first-child {
    position: sticky;
    left: 0;
    background: #fff;
    z-index: 2;
  }
}

/* ───────────────────────────────────────────────────────────────────────────
   ZÁSOBY NA TELEFÓNE — z tabuľky karty (rovnaký vzor ako expirácie)
   Osem stĺpcov v 300 px znamenalo odrezané množstvo („0,") a nečitateľnú
   kategóriu na štyri riadky. Riadok je preto karta: názov s kódom a PLU ako
   titulok, zásoba veľká vpravo hore, pod ňou stav a expirácia, drobne kategória,
   dodávateľ a počet šarží. Kliknutie na kartu otvára skladovú kartu ako doteraz.
   ─────────────────────────────────────────────────────────────────────────── */
@media (max-width: 700px) {
  #wms-pane-stock .wms-stock-table-area {
    overflow-x: visible;
  }

  /* zhodná špecifickosť ako pravidlo so scrollom vyššie, ale neskôr — vyhrá:
     zásoby už nie sú tabuľka so scrollom, ale karty na plnú šírku */
  #wms-pane-stock .wms-stock-table-area .wms-stock-table,
  #wms-pane-stock .wms-stock-table {
    min-width: 0;
    width: 100%;
    display: block;
  }

  #wms-pane-stock .wms-stock-table thead {
    display: none;
  }

  #wms-pane-stock .wms-stock-table tbody {
    display: block;
  }

  #wms-pane-stock .wms-stock-table tbody tr.wms-stock-row {
    display: grid;
    grid-template-columns: 1fr auto;
    column-gap: 10px;
    row-gap: 2px;
    padding: 9px 11px;
    margin-bottom: 7px;
    background: #fff;
    border: 1px solid var(--wms-border);
    border-radius: 10px;
  }

  #wms-pane-stock .wms-stock-table tbody tr.wms-stock-row-shortage {
    background: #FEF2F2;
    border-color: #FECACA;
  }

  #wms-pane-stock .wms-stock-table tbody td {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 8px;
    padding: 1px 0 !important;
    border: 0 !important;
    font-size: 12.5px;
    text-align: left !important;
    width: auto !important;
  }

  #wms-pane-stock .wms-stock-table tbody td::before {
    content: attr(data-label);
    color: var(--wms-muted);
    font-size: 10.5px;
    flex: 0 0 auto;
  }

  /* titulok: názov + kód + PLU, celá šírka bez štítku */
  #wms-pane-stock .wms-stock-table td[data-cell="product"] {
    grid-column: 1 / 2;
    grid-row: 1;
    display: block;
    font-size: 13.5px;
    line-height: 1.3;
  }

  #wms-pane-stock .wms-stock-table td[data-cell="product"]::before { content: none; }

  /* zásoba vpravo hore, veľká — to je hlavné číslo obrazovky */
  #wms-pane-stock .wms-stock-table td[data-cell="qty"] {
    grid-column: 2 / 3;
    grid-row: 1;
    display: block;
    text-align: right !important;
    font-size: 15px;
    font-weight: 600;
    white-space: nowrap;
  }

  #wms-pane-stock .wms-stock-table td[data-cell="qty"]::before { content: none; }

  /* druhý riadok: stav a expirácia */
  #wms-pane-stock .wms-stock-table td[data-cell="status"] {
    grid-column: 1 / 2;
    order: 3;
  }

  #wms-pane-stock .wms-stock-table td[data-cell="status"]::before { content: none; }

  #wms-pane-stock .wms-stock-table td[data-cell="expiry"] {
    grid-column: 2 / 3;
    order: 3;
    justify-content: flex-end;
  }

  #wms-pane-stock .wms-stock-table td[data-cell="expiry"]::before { content: none; }

  /* drobné údaje pod tým */
  #wms-pane-stock .wms-stock-table td[data-cell="cat"] { grid-column: 1 / -1; order: 4; }
  #wms-pane-stock .wms-stock-table td[data-cell="supplier"] { grid-column: 1 / -1; order: 5; }
  #wms-pane-stock .wms-stock-table td[data-cell="batches"] { grid-column: 1 / -1; order: 6; justify-content: space-between; }

  /* šípka „otvoriť" je zbytočná — klikateľná je celá karta */
  #wms-pane-stock .wms-stock-table td[data-cell="arrow"] { display: none; }

  /* hlavička kategórie zostáva pásikom, nie kartou */
  #wms-pane-stock .wms-stock-table tbody tr.inv-cat-head {
    display: block;
    background: #f9fafb;
    border: 0;
    margin: 8px 0 4px;
    padding: 0;
  }

  #wms-pane-stock .wms-stock-table tbody tr.inv-cat-head td {
    display: block;
    font-size: 11px;
    font-weight: 600;
    color: var(--wms-muted);
    text-transform: uppercase;
    padding: 4px 2px !important;
  }

  #wms-pane-stock .wms-stock-table tbody tr:has(td[colspan]):not(.inv-cat-head) {
    display: block;
    border: 0;
    background: transparent;
  }
}

/* ───────────────────────────────────────────────────────────────────────────
   NÁVRH OBJEDNÁVOK NA TELEFÓNE — karty s veľkým políčkom na množstvo
   Štrnásť stĺpcov v 300 px nemá zmysel. Na telefóne je z riadku karta: názov,
   pod ním „Návrh" a „Zásoba" (podľa čoho sa rozhoduje) a políčko Obj. na celú
   šírku, aby sa doň dalo zadať prstom. Zvyšné stĺpce (Ø/deň, týždenný priemer,
   vážený, na ceste, špeciál, kód, SKU, skupina) sa na telefóne skryjú —
   na počítači zostávajú, tam je na ne miesto.
   ─────────────────────────────────────────────────────────────────────────── */
@media (max-width: 700px) {
  #wms-orders-table-wrap {
    overflow-x: visible;
  }

  #wms-orders-table-wrap .wms-orders-table {
    min-width: 0;
    width: 100%;
    display: block;
  }

  #wms-orders-table-wrap .wms-orders-table colgroup,
  #wms-orders-table-wrap .wms-orders-table thead {
    display: none;
  }

  #wms-orders-table-wrap .wms-orders-table tbody {
    display: block;
  }

  #wms-orders-table-wrap .wms-orders-table tbody tr {
    display: grid;
    grid-template-columns: 1fr 1fr;
    column-gap: 10px;
    row-gap: 3px;
    padding: 9px 11px;
    margin-bottom: 7px;
    background: #fff;
    border: 1px solid var(--wms-border);
    border-radius: 10px;
  }

  #wms-orders-table-wrap .wms-orders-table tbody td {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 8px;
    padding: 1px 0 !important;
    border: 0 !important;
    width: auto !important;
    min-width: 0 !important;
    max-width: none !important;
    font-size: 12.5px;
    text-align: left !important;
    position: static !important;
  }

  #wms-orders-table-wrap .wms-orders-table tbody td::before {
    content: attr(data-label);
    color: var(--wms-muted);
    font-size: 10.5px;
    flex: 0 0 auto;
  }

  /*
   * Whitelist, nie blacklist: stĺpcov je štrnásť a pribúdajú (D−1, D−2, počasie,
   * trend…). Skryje sa preto všetko a nižšie sa pustia len tie, podľa ktorých sa
   * objednáva.
   *
   * Pustené stĺpce musia mať ROVNAKÝ prefix „tbody tr:not(.wms-orders-cat-row)"
   * ako toto skrytie. Bez neho je skrytie špecifickejšie (o dva prvky v selektore)
   * a prebije ich bez ohľadu na poradie v súbore — karta potom zostane prázdna.
   */
  #wms-orders-table-wrap .wms-orders-table tbody tr:not(.wms-orders-cat-row) td {
    display: none;
  }

  #wms-orders-table-wrap .wms-orders-table tbody tr:not(.wms-orders-cat-row) td[data-cell="dod"],
  #wms-orders-table-wrap .wms-orders-table tbody tr:not(.wms-orders-cat-row) td[data-cell="stock"],
  #wms-orders-table-wrap .wms-orders-table tbody tr:not(.wms-orders-cat-row) td[data-cell="suggested"],
  #wms-orders-table-wrap .wms-orders-table tbody tr:not(.wms-orders-cat-row) td[data-cell="transit"] {
    display: flex;
  }

  #wms-orders-table-wrap .wms-orders-table tbody tr:not(.wms-orders-cat-row) td[data-cell="product"] {
    grid-column: 1 / -1;
    display: block;
    font-size: 13.5px;
    line-height: 1.3;
  }

  #wms-orders-table-wrap .wms-orders-table tbody tr:not(.wms-orders-cat-row) td[data-cell="product"]::before { content: none; }

  /* kategóriu vypisuje pásik nad kartami, v karte len zaberá riadok */
  #wms-orders-table-wrap .wms-orders-table tbody tr:not(.wms-orders-cat-row) td[data-cell="product"] > div:last-child:not(:first-child) {
    display: none;
  }

  /* podľa čoho sa rozhoduje */
  #wms-orders-table-wrap .wms-orders-table tbody tr:not(.wms-orders-cat-row) td[data-cell="suggested"] {
    order: 2;
    font-weight: 600;
    font-size: 13px;
  }

  #wms-orders-table-wrap .wms-orders-table tbody tr:not(.wms-orders-cat-row) td[data-cell="stock"] { order: 3; }
  #wms-orders-table-wrap .wms-orders-table tbody tr:not(.wms-orders-cat-row) td[data-cell="dod"] { order: 4; font-size: 11.5px; }
  /* bez poradia by „Na ceste" (order: 0) skočilo pred návrh a zásobu */
  #wms-orders-table-wrap .wms-orders-table tbody tr:not(.wms-orders-cat-row) td[data-cell="transit"] { order: 5; font-size: 11.5px; }

  /* políčko na množstvo — hlavná vec obrazovky */
  #wms-orders-table-wrap .wms-orders-table tbody tr:not(.wms-orders-cat-row) td[data-cell="order_qty"] {
    grid-column: 1 / -1;
    order: 6;
    display: block;
    margin-top: 4px;
  }

  #wms-orders-table-wrap .wms-orders-table tbody tr:not(.wms-orders-cat-row) td[data-cell="order_qty"]::before {
    content: 'Objednať';
    display: block;
    margin-bottom: 2px;
  }

  /*
   * Obal políčka je inline-flex stĺpec (input + značka minima), takže sa šírka
   * merala podľa obsahu — políčko malo 209 px namiesto celej karty.
   */
  #wms-orders-table-wrap .wms-orders-table tbody tr:not(.wms-orders-cat-row) td[data-cell="order_qty"] > div {
    display: flex !important;
    width: 100%;
  }

  #wms-orders-table-wrap .wms-orders-table tbody tr:not(.wms-orders-cat-row) td[data-cell="order_qty"] input {
    width: 100% !important;
    min-height: 44px;
    font-size: 16px;
    text-align: center;
  }

  #wms-orders-table-wrap .wms-orders-table tbody tr:not(.wms-orders-cat-row) td[data-cell="actions"] {
    grid-column: 1 / -1;
    order: 6;
  }

  /* hlavička kategórie zostáva pásikom */
  #wms-orders-table-wrap .wms-orders-table tbody tr.wms-orders-cat-row {
    display: block;
    background: #f9fafb;
    border: 0;
    margin: 8px 0 4px;
    padding: 0;
  }

  #wms-orders-table-wrap .wms-orders-table tbody tr.wms-orders-cat-row td {
    display: block;
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    color: var(--wms-muted);
    padding: 4px 2px !important;
  }

  #wms-orders-table-wrap .wms-orders-table tbody tr:has(td[colspan]):not(.wms-orders-cat-row) {
    display: block;
    border: 0;
    background: transparent;
  }

  /* lišta filtrov: dva stĺpce, hlavné akcie na celú šírku */
  #wms-orders-header .wms-toolbar {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 6px;
    align-items: end;
  }

  #wms-orders-header .wms-fg {
    min-width: 0 !important;
  }

  #wms-orders-header .wms-label {
    font-size: 10px;
    margin-bottom: 1px;
  }

  #wms-orders-header .wms-sel,
  #wms-orders-header .wms-input,
  #wms-orders-header .wms-multipick-btn {
    min-height: 40px;
    font-size: 13px;
    width: 100%;
  }

  #wms-orders-header #wms-orders-load-btn,
  #wms-orders-header #wms-create-order-btn,
  #wms-orders-header #wms-orders-search {
    grid-column: 1 / -1;
    min-height: 44px;
  }

  #wms-orders-header .wms-btn {
    min-height: 40px;
    font-size: 12.5px;
  }
}

/* ───────────────────────────────────────────────────────────────────────────
   PREVOD PREDAJNE NA TELEFÓNE — karty s veľkým políčkom „Odoslať"
   V tabuľke bolo políčko na množstvo 90 px široké na kraji obrazovky a stĺpce
   Dostupné/Jedn. mimo. Teraz: šarža a expirácia pod názvom, dostupné množstvo
   vedľa a políčko na celú šírku.
   ─────────────────────────────────────────────────────────────────────────── */
@media (max-width: 700px) {
  #wms-pane-store-transfers #wms-st-stock-wrap {
    overflow-x: visible;
  }

  #wms-pane-store-transfers #wms-st-stock-wrap .wms-table {
    min-width: 0;
    width: 100%;
    display: block;
  }

  #wms-pane-store-transfers #wms-st-stock-wrap .wms-table thead {
    display: none;
  }

  #wms-pane-store-transfers #wms-st-stock-wrap .wms-table tbody {
    display: block;
  }

  #wms-pane-store-transfers #wms-st-stock-wrap .wms-table tbody tr {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    column-gap: 8px;
    row-gap: 2px;
    padding: 9px 11px;
    margin-bottom: 7px;
    background: #fff;
    border: 1px solid var(--wms-border);
    border-radius: 10px;
  }

  /* označená karta: zelený rám a podklad — vidno to aj bez čítania čísel.
     Selektor musí mať dve ID, inak ho prebije predpis pre bielu kartu vyššie. */
  #wms-pane-store-transfers #wms-st-stock-wrap .wms-table tbody tr.is-picked {
    border-color: #059669;
    border-width: 2px;
    background: #ecfdf5;
  }
  #wms-pane-store-transfers #wms-st-stock-wrap .wms-table tbody tr.is-picked > td {
    background: transparent !important;
    box-shadow: none;
  }

  #wms-pane-store-transfers #wms-st-stock-wrap .wms-table tbody td {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 8px;
    padding: 1px 0 !important;
    border: 0 !important;
    font-size: 12.5px;
    text-align: left !important;
  }

  #wms-pane-store-transfers #wms-st-stock-wrap .wms-table tbody td::before {
    content: attr(data-label);
    color: var(--wms-muted);
    font-size: 10.5px;
    flex: 0 0 auto;
  }

  /*
   * Selektory sú takto dlhé zámerne: všeobecné pravidlo pre bunky vyššie má
   * dva ID (#wms-pane-store-transfers #wms-st-stock-wrap), takže kratší zápis
   * by mu neprebil `display`. Preto „Jedn." zostávala v karte vidieť a políčko
   * na množstvo bolo 81 px namiesto celej šírky.
   */

  /* zaškrtnutie vedľa názvu — prst má 28 px, nie 14 */
  #wms-pane-store-transfers #wms-st-stock-wrap .wms-table tbody td[data-cell="pick"] {
    order: 0;
    flex: 0 0 30px;
    justify-content: center;
  }
  #wms-pane-store-transfers #wms-st-stock-wrap .wms-table tbody td[data-cell="pick"]::before { content: none; }
  #wms-pane-store-transfers #wms-st-stock-wrap .wms-table tbody td[data-cell="pick"] .st-pick {
    width: 26px;
    height: 26px;
  }

  #wms-pane-store-transfers #wms-st-stock-wrap .wms-table tbody td[data-cell="product"] {
    order: 1;
    flex: 1 1 calc(100% - 42px);
    display: block;
    font-size: 13.5px;
    line-height: 1.3;
  }

  #wms-pane-store-transfers #wms-st-stock-wrap .wms-table tbody td[data-cell="product"]::before { content: none; }

  #wms-pane-store-transfers #wms-st-stock-wrap .wms-table tbody td[data-cell="batch"] { order: 2; flex: 1 1 45%; }
  #wms-pane-store-transfers #wms-st-stock-wrap .wms-table tbody td[data-cell="expiry"] { order: 3; flex: 1 1 45%; justify-content: flex-end; }
  #wms-pane-store-transfers #wms-st-stock-wrap .wms-table tbody td[data-cell="avail"] { order: 4; flex: 1 1 100%; font-weight: 600; }
  #wms-pane-store-transfers #wms-st-stock-wrap .wms-table tbody td[data-cell="unit"] { display: none; }

  #wms-pane-store-transfers #wms-st-stock-wrap .wms-table tbody td[data-cell="send"] {
    order: 5;
    flex: 1 1 100%;
    display: block;
    margin-top: 4px;
  }

  #wms-pane-store-transfers #wms-st-stock-wrap .wms-table tbody td[data-cell="send"]::before {
    content: 'Odoslať množstvo';
    display: block;
    margin-bottom: 2px;
  }

  #wms-pane-store-transfers #wms-st-stock-wrap .wms-table tbody td[data-cell="send"] .st-qty-wrap {
    display: flex;
    gap: 6px;
  }

  #wms-pane-store-transfers #wms-st-stock-wrap .wms-table tbody td[data-cell="send"] input {
    flex: 1 1 auto;
    width: auto !important;
    min-height: 46px;
    font-size: 16px;
    text-align: center;
  }

  #wms-pane-store-transfers #wms-st-stock-wrap .wms-table tbody td[data-cell="send"] .st-qty-all {
    flex: 0 0 92px;
    min-height: 46px;
    font-size: 13px;
  }

  #wms-pane-store-transfers #wms-st-stock-wrap .wms-table tbody tr:has(td[colspan]) {
    display: block;
    border: 0;
    background: transparent;
  }

  /*
   * LIŠTA NAD ZOZNAMOM — ŠTYRI RIADKY BOLI PRIVEĽA.
   *
   * Každé pole malo vlastný riadok, takže výber predajní, hľadanie a
   * „Načítať zásoby" zabrali celú prvú obrazovku a zoznam šarží začínal až
   * pod prehybom. Teraz sú dva páry vedľa seba: cieľová predajňa s ⇄ a
   * hľadanie s načítaním. Ušetria sa dva riadky, teda asi tri šarže.
   */
  #wms-st-toolbar {
    display: grid !important;
    grid-template-columns: 1fr auto;
    gap: 6px;
    align-items: end;
  }

  #wms-st-toolbar > .wms-xfer-field:nth-child(1) { grid-column: 1 / -1; }
  #wms-st-toolbar > .wms-xfer-swap { grid-column: 2; grid-row: 2; }
  #wms-st-toolbar > .wms-xfer-field:nth-child(3) { grid-column: 1; grid-row: 2; }
  #wms-st-toolbar > .wms-xfer-field:nth-child(4) { grid-column: 1; grid-row: 3; }
  #wms-st-toolbar > .wms-stock-filter-actions { grid-column: 2; grid-row: 3; }

  #wms-st-toolbar .wms-sel,
  #wms-st-toolbar .wms-input {
    min-height: 44px;
    font-size: 16px;              /* menšie písmo iPhone pri ťuknutí zväčší */
    width: 100%;
    min-width: 0 !important;
  }
  #wms-st-toolbar .wms-xfer-label { font-size: 10.5px; }

  #wms-st-toolbar .wms-stock-filter-actions .wms-btn {
    min-height: 44px;
    font-size: 13px;
    white-space: nowrap;
  }

  /* prehodenie smeru: štvorec pod prst, popis sa nezmestí a netreba ho */
  #wms-st-toolbar .wms-xfer-swap {
    justify-self: end;
    width: auto;
    min-height: 44px;
    padding: 6px 14px;
    font-size: 16px;
  }
  #wms-st-toolbar .wms-xfer-swap-text { display: none; }
  .wms-st-hint-long { display: none; }

  /*
   * Hlavička „WMS · Sklad a logistika · admin" berie 51 px z 844 a na tejto
   * obrazovke nehovorí nič — kam som klikol, viem, a odhlásenie je v menu.
   * Príjem tovaru ju skrýva rovnako, len cez triedu v JS.
   *
   * Skrývajú sa OBE hlavičky: `.section-head` vnútri WMS aj `.im-page-header`
   * nad ním. Prvá je na tejto obrazovke prázdna, druhá je tá, čo je vidieť —
   * sú to dva rôzne prvky a ľahko sa zamenia.
   */
  #wmsSection:has(#wms-pane-store-transfers.active) > .section-head,
  #adminMainShell.loyalty-module-wms:has(#wms-pane-store-transfers.active) .im-page-header {
    display: none;
  }

  /*
   * SPODNÁ LIŠTA BRALA POLOVICU OBRAZOVKY.
   *
   * Každé tlačidlo dostalo celý riadok (`flex: 1 1 100%` z pravidla pre lištu
   * prebilo dvojstĺpec, lebo má rovnakú váhu a stojí nižšie), takže z 844 px
   * telefónu ostala zoznamu jedna karta. Rýchle akcie sú preto v mriežke dva
   * na riadok a na celú šírku zostáva len to, čím sa prevod naozaj odosiela.
   */
  .wms-st-actionbar {
    flex-wrap: wrap;
    padding: 6px 6px calc(6px + env(safe-area-inset-bottom, 0px));
    margin: 0 -4px;
    gap: 5px;
    box-shadow: 0 -4px 12px rgba(15, 23, 42, .08);
  }

  .wms-st-actionbar .wms-st-picks {
    flex: 1 1 100%;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 5px;
    align-items: center;
  }
  .wms-st-actionbar .wms-st-picks .wms-btn {
    flex: none;
    width: 100%;
    min-height: 40px;
    font-size: 12.5px;
  }
  .wms-st-onlysel { grid-column: 1 / -1; font-size: 13px; }
  .wms-st-onlysel input { width: 22px; height: 22px; }

  .wms-st-sum { flex: 1 1 100%; font-size: 12.5px; margin: 0; text-align: left; }

  /* odoslanie musí byť pod prstom stále, aj keď zoznam roluje */
  .wms-st-actionbar > .wms-btn {
    flex: 1 1 100%;
    min-height: 48px;
    font-size: 15px;
  }

  /* vysvetlivka pod lištou je na jeden riadok, nie na dva */
  #wms-st-create-hint { font-size: 11.5px; line-height: 1.25; margin: 2px 0; }

  .wms-st-fold > summary { min-height: 40px; display: flex; align-items: center; }
  #wms-st-fold-history[open] { max-height: none; }

  /*
   * HISTÓRIA DOKLADOV NA TELEFÓNE.
   *
   * Osem stĺpcov (číslo, dátum, smer, ľudia, položky, množstvo, stav, tlač) sa
   * na 390 px nezmestí ani zďaleka — vodorovné rolovanie by znamenalo, že
   * číslo dokladu je vidieť len vtedy, keď tlač nie je. Riadok sa preto
   * zalomí do karty: hore číslo a stav, pod ním deň a smer, potom ľudia
   * a súčty a nakoniec tlač na celú šírku.
   */
  #wms-st-history .wms-table,
  #wms-st-history .wms-table tbody { display: block; width: 100%; }
  #wms-st-history .wms-table thead { display: none; }

  #wms-st-history .wms-table tbody tr {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    column-gap: 8px;
    row-gap: 3px;
    padding: 10px 11px;
    margin-bottom: 8px;
    background: #fff;
    border: 1px solid var(--wms-border);
    border-radius: 10px;
  }

  #wms-st-history .wms-table tbody td {
    display: block;
    padding: 0 !important;
    border: 0 !important;
    font-size: 12.5px;
    text-align: left !important;
  }

  /* číslo dokladu a stav na prvý riadok, zvyšok pod ne */
  #wms-st-history .wms-table tbody td:nth-child(1) { flex: 1 1 auto; font-size: 14px; }
  #wms-st-history .wms-table tbody td:nth-child(7) { flex: 0 0 auto; }
  #wms-st-history .wms-table tbody td:nth-child(2),
  #wms-st-history .wms-table tbody td:nth-child(3) { flex: 0 0 auto; color: var(--wms-muted); }
  #wms-st-history .wms-table tbody td:nth-child(4) { flex: 1 1 100%; }
  #wms-st-history .wms-table tbody td:nth-child(5),
  #wms-st-history .wms-table tbody td:nth-child(6) { flex: 0 0 auto; font-weight: 600; }
  #wms-st-history .wms-table tbody td:nth-child(5)::before { content: 'položiek '; font-weight: 400; color: var(--wms-muted); }
  #wms-st-history .wms-table tbody td:nth-child(8) { flex: 1 1 100%; margin-top: 6px; }

  /* tlač: tlačidlá na celú šírku, do políčka kópií sa musí dať trafiť prstom */
  #wms-st-history .wms-print-btns { display: flex; width: 100%; gap: 6px; flex-wrap: wrap; }
  #wms-st-history .wms-print-btns .wms-btn { flex: 1 1 0; min-height: 42px; font-size: 13px; }
  #wms-st-history .wms-print-kopie { flex: 0 0 100%; justify-content: flex-start; font-size: 12px; }
  #wms-st-history .wms-print-kopie input { min-height: 40px; width: 64px; font-size: 16px; }

  /* rozbalené položky dokladu: bez rámu, aby bolo vidieť, že patria nad ne */
  #wms-st-history .wms-table tbody tr.wms-row-sub {
    margin: -6px 0 8px;
    border-top: 0;
    border-radius: 0 0 10px 10px;
    background: var(--wms-bg);
  }
  #wms-st-history .wms-table tbody tr.wms-row-sub td:empty { display: none; }
  #wms-st-history .wms-table tbody tr.wms-row-sub td { flex: 1 1 auto; }

  /*
   * PRÍJEM PREVODU NA TELEFÓNE. Päť stĺpcov s dvoma políčkami na písanie;
   * to sa na šírku nedá. Množstvo a poznámka idú pod názov na celú šírku,
   * lebo do nich obsluha naozaj píše — a 16 px je najmenšie písmo, pri
   * ktorom iPhone pri ťuknutí nezväčší celú stránku.
   */
  #wms-st-receive-detail .wms-table,
  #rcv-transfer-panel .wms-table,
  #wms-st-receive-detail .wms-table tbody,
  #rcv-transfer-panel .wms-table tbody { display: block; width: 100%; }
  #wms-st-receive-detail .wms-table thead,
  #rcv-transfer-panel .wms-table thead { display: none; }

  #wms-st-receive-detail .wms-table tbody tr,
  #rcv-transfer-panel .wms-table tbody tr {
    display: flex;
    flex-wrap: wrap;
    column-gap: 8px;
    row-gap: 4px;
    padding: 10px 11px;
    margin-bottom: 8px;
    background: #fff;
    border: 1px solid var(--wms-border);
    border-radius: 10px;
  }

  #wms-st-receive-detail .wms-table tbody td,
  #rcv-transfer-panel .wms-table tbody td {
    display: block;
    padding: 0 !important;
    border: 0 !important;
    text-align: left !important;
  }

  #wms-st-receive-detail .wms-table tbody td:nth-child(1),
  #rcv-transfer-panel .wms-table tbody td:nth-child(1) { flex: 1 1 100%; font-size: 13.5px; }
  #wms-st-receive-detail .wms-table tbody td:nth-child(2),
  #rcv-transfer-panel .wms-table tbody td:nth-child(2) { flex: 1 1 auto; font-size: 12px; color: var(--wms-muted); }
  #wms-st-receive-detail .wms-table tbody td:nth-child(3),
  #rcv-transfer-panel .wms-table tbody td:nth-child(3) { flex: 0 0 auto; font-weight: 600; font-size: 12.5px; }
  #wms-st-receive-detail .wms-table tbody td:nth-child(3)::before,
  #rcv-transfer-panel .wms-table tbody td:nth-child(3)::before {
    content: 'odoslané '; font-weight: 400; color: var(--wms-muted); font-size: 11px;
  }
  #wms-st-receive-detail .wms-table tbody td:nth-child(4),
  #rcv-transfer-panel .wms-table tbody td:nth-child(4),
  #wms-st-receive-detail .wms-table tbody td:nth-child(5),
  #rcv-transfer-panel .wms-table tbody td:nth-child(5) { flex: 1 1 100%; }
  #wms-st-receive-detail .wms-table tbody td:nth-child(4)::before,
  #rcv-transfer-panel .wms-table tbody td:nth-child(4)::before {
    content: 'Prijaté množstvo'; display: block; font-size: 11px; color: var(--wms-muted); margin-bottom: 2px;
  }
  #wms-st-receive-detail .wms-table tbody input,
  #rcv-transfer-panel .wms-table tbody input {
    width: 100% !important;
    min-height: 46px;
    font-size: 16px;
    text-align: left;
  }
  #wms-st-receive-detail .wms-table tbody td:nth-child(4) input,
  #rcv-transfer-panel .wms-table tbody td:nth-child(4) input { text-align: center; }

  /* doklad prevodu: číslo hore, tlač a potvrdenie na celú šírku */
  #wms-st-receive-detail .wms-card > div:last-child,
  #rcv-transfer-panel .wms-card > div:last-child { flex-wrap: wrap; gap: 8px; }
  #wms-st-receive-detail .wms-card > div:last-child > .wms-btn,
  #rcv-transfer-panel .wms-card > div:last-child > .wms-btn { flex: 1 1 100%; min-height: 50px; font-size: 15px; }
  #wms-st-receive-detail .wms-print-btns,
  #rcv-transfer-panel .wms-print-btns { display: flex; width: 100%; gap: 6px; flex-wrap: wrap; }
  #wms-st-receive-detail .wms-print-btns .wms-btn,
  #rcv-transfer-panel .wms-print-btns .wms-btn { flex: 1 1 0; min-height: 44px; }
}

/* ───────────────────────────────────────────────────────────────────────────
   ŠÍRKA OBSAHU NA TELEFÓNE — WMS dostane celú obrazovku
   Odsadenia sa vrstvia: #adminMainShell 18/20 + .card 16 + .wms-page-pane 12 +
   .wms-page 16 = 126 px zo 393. Karta objednávky preto merala 265 px namiesto
   ~380. Na počítači odsadenia zostávajú, na telefóne sa stlačia — kariet sa
   nedotýka, iba im dá miesto.
   ─────────────────────────────────────────────────────────────────────────── */
@media (max-width: 700px) {
  /* trieda loyalty-module-wms je na #adminMainShell, nie na <body> */
  #adminMainShell.loyalty-module-wms {
    padding-left: 6px !important;
    padding-right: 6px !important;
  }

  #adminMainShell.loyalty-module-wms > .card {
    padding-left: 6px !important;
    padding-right: 6px !important;
  }

  #adminMainShell.loyalty-module-wms .wms-page-pane {
    padding-left: 2px !important;
    padding-right: 2px !important;
  }

  #adminMainShell.loyalty-module-wms .wms-page {
    padding-left: 4px !important;
    padding-right: 4px !important;
  }
}

/* ───────────────────────────────────────────────────────────────────────────
   NA TELEFÓNE ROLUJE CELÁ STRÁNKA, NIE VNÚTRO TABUĽKY
   Obrazovky WMS sú postavené ako aplikačný rám: výška je pribitá na okno a roluje
   sa iba tabuľka (flex: 1 1 0 s vlastným scrollom). Na počítači je to správne —
   hlavička filtrov zostane na mieste. Na telefóne však filtre zaberú takmer celé
   okno a na zoznam ostane 23 px, teda pás na dva prsty. Preto sa na telefóne
   scroll presunie na celý panel a tabuľka rastie do obsahu.
   Overflow tabuliek sa nechá tak, ako je — niektoré potrebujú vodorovný scroll a
   `overflow-y: visible` by ho zrušil; stačí uvoľniť výšku.
   ─────────────────────────────────────────────────────────────────────────── */
@media (max-width: 700px) {
  #adminMainShell.loyalty-module-wms .wms-page-pane {
    overflow-y: auto !important;
    -webkit-overflow-scrolling: touch;
  }

  #adminMainShell.loyalty-module-wms .wms-page {
    height: auto !important;
    max-height: none !important;
    overflow: visible !important;
  }

  #adminMainShell.loyalty-module-wms .wms-page > * {
    flex: 0 0 auto !important;
    height: auto !important;
    max-height: none !important;
  }
}

/* ───────────────────────────────────────────────────────────────────────────
   SKLADOVÁ KARTA NA TELEFÓNE — dve tabuľky ako karty
   Modál mal deväť stĺpcov šarží a sedem stĺpcov pohybov v pevnom rozložení
   (table-layout: fixed), takže na 393 px sa hlavičky prekryli a názov šarže sa
   lámal po jednom znaku. Na telefóne sa preto z každého riadku spraví kartička:
   pred hodnotou je názov stĺpca a nechajú sa len údaje, podľa ktorých sa
   rozhoduje — dodávateľ a názov produktu sú v hlavičke modálu, tak sa nezdvojujú.
   ─────────────────────────────────────────────────────────────────────────── */
@media (max-width: 700px) {
  #wms-stock-batch-modal .wms-overlay,
  #wms-stock-batch-modal .wms-stock-card-modal {
    width: 100%;
    max-width: 100%;
  }

  /* zatváracie ✕ zostáva vedľa názvu — na vlastnom riadku zjedlo 60 px výšky */
  #wms-stock-batch-modal .wms-modal-header {
    flex-wrap: nowrap;
    align-items: flex-start;
    gap: 8px;
    padding: 10px 12px 8px;
  }

  #wms-stock-batch-modal .wms-modal-header > div:first-child {
    min-width: 0;
  }

  #wms-stock-batch-modal .wms-modal-header > .wms-btn {
    flex: 0 0 auto;
  }

  #wms-stock-batch-modal .wms-stock-card-body {
    max-height: calc(100vh - 190px);
    padding: 10px 12px;
  }

  /* zhrnutie navrchu: veľké číslo a stav pod ním */
  #wms-stock-batch-modal .wms-sbm-total-line {
    font-size: 26px;
  }

  /* ── obe tabuľky: riadok = kartička ────────────────────────────────────── */
  #wms-stock-batch-modal .wms-sbm-table,
  #wms-stock-batch-modal .wms-stock-card-table {
    display: block;
    width: 100%;
    min-width: 0;
    table-layout: auto;
  }

  #wms-stock-batch-modal .wms-sbm-table thead,
  #wms-stock-batch-modal .wms-stock-card-table thead,
  #wms-stock-batch-modal .wms-sbm-table colgroup,
  #wms-stock-batch-modal .wms-stock-card-table colgroup {
    display: none;
  }

  #wms-stock-batch-modal .wms-sbm-table tbody,
  #wms-stock-batch-modal .wms-stock-card-table tbody {
    display: block;
  }

  #wms-stock-batch-modal .wms-sbm-table tbody tr,
  #wms-stock-batch-modal .wms-stock-card-table tbody tr {
    display: grid;
    grid-template-columns: 1fr 1fr;
    column-gap: 10px;
    row-gap: 2px;
    padding: 8px 10px;
    margin-bottom: 6px;
    border: 1px solid var(--wms-border);
    border-radius: 10px;
  }

  #wms-stock-batch-modal .wms-sbm-table tbody td,
  #wms-stock-batch-modal .wms-stock-card-table tbody td {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 8px;
    padding: 1px 0 !important;
    border: 0 !important;
    text-align: left !important;
    font-size: 12.5px;
    vertical-align: baseline;
    /*
     * Stĺpce majú pevné šírky pre počítač (.col-qty 56 px, .col-batch 18 %
     * s word-break: break-all). Ako mriežkové bunky ich držia ďalej, takže
     * číslo dodacieho listu sa lámalo po štyroch cifrách — na telefóne von.
     */
    width: auto !important;
    min-width: 0 !important;
    max-width: none !important;
    word-break: normal !important;
  }

  #wms-stock-batch-modal .wms-sbm-table tbody td::before,
  #wms-stock-batch-modal .wms-stock-card-table tbody td::before {
    content: attr(data-label);
    color: var(--wms-muted);
    font-size: 10.5px;
    flex: 0 0 auto;
  }

  /* prázdny riadok („Žiadne aktívne šarže") nech zostane vetou, nie kartou */
  #wms-stock-batch-modal .wms-sbm-table tbody tr:has(td[colspan]),
  #wms-stock-batch-modal .wms-stock-card-table tbody tr:has(td[colspan]) {
    display: block;
    border: 0;
  }

  #wms-stock-batch-modal .wms-sbm-table tbody td[colspan],
  #wms-stock-batch-modal .wms-stock-card-table tbody td[colspan] {
    display: block;
  }

  /* ── šarže: šarža a expirácia navrchu, potom zostatok a prijaté ────────── */
  #wms-stock-batch-modal .wms-sbm-table tbody td[data-cell="product"] {
    grid-column: 1 / -1;
    display: block;
    order: 1;
  }

  #wms-stock-batch-modal .wms-sbm-table tbody td[data-cell="product"] .wms-sbm-product-name {
    display: none; /* názov produktu je v hlavičke modálu */
  }

  #wms-stock-batch-modal .wms-sbm-table tbody td[data-cell="remaining"] {
    order: 2;
    font-size: 14px;
  }

  #wms-stock-batch-modal .wms-sbm-table tbody td[data-cell="received"] { order: 3; }
  #wms-stock-batch-modal .wms-sbm-table tbody td[data-cell="expiry"] { order: 4; }
  #wms-stock-batch-modal .wms-sbm-table tbody td[data-cell="date"] { order: 5; }
  /* číslo DL je jedno slovo — bez nowrap sa lámalo po štyroch cifrách */
  #wms-stock-batch-modal .wms-sbm-table tbody td[data-cell="dl"] {
    order: 6;
    grid-column: 1 / -1;
    white-space: nowrap;
    justify-content: flex-start;
    gap: 6px;
  }

  #wms-stock-batch-modal .wms-sbm-table tbody td[data-cell="supplier"],
  #wms-stock-batch-modal .wms-sbm-table tbody td[data-cell="price"],
  #wms-stock-batch-modal .wms-sbm-table tbody td[data-cell="status"] {
    display: none;
  }

  /* mínusová karta je dôležitá — tú nechaj vidieť */
  #wms-stock-batch-modal .wms-sbm-table tbody tr:has(.badge-red) td[data-cell="status"] {
    display: flex;
    order: 7;
    grid-column: 1 / -1;
  }

  /* ── pohyby: dátum a typ navrchu, množstvo veľké vpravo ───────────────── */
  #wms-stock-batch-modal .wms-stock-card-table-wrap {
    max-height: none;
    border: 0;
    border-radius: 0;
    overflow: visible;
  }

  #wms-stock-batch-modal .wms-stock-card-table tbody td[data-cell="date"] {
    order: 1;
    font-size: 11.5px;
    color: var(--wms-muted);
  }

  #wms-stock-batch-modal .wms-stock-card-table tbody td[data-cell="type"] {
    order: 2;
    justify-content: flex-end;
  }

  #wms-stock-batch-modal .wms-stock-card-table tbody td[data-cell="qty"] {
    order: 3;
    grid-column: 1 / -1;
    font-size: 15px;
    justify-content: flex-start;
  }

  #wms-stock-batch-modal .wms-stock-card-table tbody td[data-cell="qty"]::before {
    content: 'Množstvo';
  }

  #wms-stock-batch-modal .wms-stock-card-table tbody td[data-cell="batch"] {
    order: 4;
    grid-column: 1 / -1;
  }

  #wms-stock-batch-modal .wms-stock-card-table tbody td[data-cell="doc"] {
    order: 5;
    grid-column: 1 / -1;
  }

  /*
   * Zostatky idú na celú šírku: v dvoch stĺpcoch sa jednotka („ks") lámala pod
   * číslo a vedľajší štítok na ňu naliezal.
   */
  #wms-stock-batch-modal .wms-stock-card-table tbody td[data-cell="balance"] {
    order: 6;
    grid-column: 1 / -1;
  }

  #wms-stock-batch-modal .wms-stock-card-table tbody td[data-cell="batch-balance"] {
    order: 7;
    grid-column: 1 / -1;
  }

  #wms-stock-batch-modal .wms-stock-card-table tbody td[data-cell="balance"] > *,
  #wms-stock-batch-modal .wms-stock-card-table tbody td[data-cell="batch-balance"] > * {
    white-space: nowrap;
  }

  /* riadok bez obsahu (príjem bez šarže, pohyb bez dokladu) nech nezaberá miesto */
  #wms-stock-batch-modal .wms-stock-card-table tbody td[data-empty] {
    display: none;
  }

  /* v riadkoch je aj tak zvislý text v divoch — nech sa neláme po znakoch */
  #wms-stock-batch-modal .wms-sbm-table tbody td > div,
  #wms-stock-batch-modal .wms-stock-card-table tbody td > div,
  #wms-stock-batch-modal .wms-sbm-table tbody td > span,
  #wms-stock-batch-modal .wms-stock-card-table tbody td > span {
    word-break: normal;
    overflow-wrap: anywhere;
  }

  /* pätička: tri tlačidlá do dvoch riadkov, dosť veľké na prst */
  #wms-stock-batch-modal .wms-modal-footer {
    flex-wrap: wrap;
    gap: 6px;
    padding: 10px 12px calc(10px + env(safe-area-inset-bottom, 0px));
  }

  #wms-stock-batch-modal .wms-modal-footer .wms-btn {
    min-height: 40px;
    flex: 1 1 45%;
  }

  #wms-stock-batch-modal .wms-modal-footer > span {
    flex: 1 1 100%;
  }
}

/* dátum spotreby: kalendár na prst + políčko na napísanie */
#wms-mobile-inventory .wms-minv-exp-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px;
  margin-bottom: 8px;
}

#wms-mobile-inventory .wms-minv-exp-row .wms-input {
  min-height: 46px;
  font-size: 16px;
}

#wms-mobile-inventory .wms-minv-exp-typed {
  font-size: 15px;
}

@media (max-width: 420px) {
  #wms-mobile-inventory .wms-minv-exp-row {
    grid-template-columns: 1fr;
  }
}

/* ───────────────────────────────────────────────────────────────────────────
   NÁSTROJE ZBALENÉ DO ROZBAĽOVAČKY
   Na počítači je to len riadok tlačidiel ako predtým (zhrnutie sa skryje),
   na telefóne sa dá zavrieť, aby sa dalo doscrollovať k zoznamu.
   ─────────────────────────────────────────────────────────────────────────── */
.wms-tools-fold {
  display: contents;
}

.wms-tools-fold > summary {
  display: none;
}

/* ───────────────────────────────────────────────────────────────────────────
   TOVAR NA TELEFÓNE — zoznam ako karty, formulár na celú obrazovku
   Tabuľka mala deväť stĺpcov a 938 px, takže na 393 px sa dala len posúvať do
   strany. Lišta s ôsmimi nástrojmi zaberala 274 px. Formulár produktu sa na
   iPhone nedal uložiť: `height: 100%` je viac než viditeľná časť okna (panely
   Safari), takže pribitá pätička s „Uložiť" skončila pod spodnou lištou.
   ─────────────────────────────────────────────────────────────────────────── */
@media (max-width: 700px) {
  /* ── lišta filtrov ── */
  #wms-pane-products .wms-card-header {
    flex-wrap: wrap;
    gap: 8px;
  }

  #wms-pane-products .wms-card-header > div:last-child {
    width: 100%;
    display: grid !important;
    grid-template-columns: 1fr 1fr;
    gap: 6px;
  }

  #wms-pane-products .wms-card-header .wms-btn {
    min-height: 42px;
    justify-content: center;
  }

  #wms-pane-products .wms-toolbar {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 6px;
  }

  #wms-pane-products .wms-search-wrap,
  #wms-pane-products #wms-gap-filter,
  #wms-pane-products #wms-without-ean-wrap {
    grid-column: 1 / -1;
  }

  #wms-pane-products .wms-toolbar .wms-sel,
  #wms-pane-products .wms-toolbar .wms-search {
    min-width: 0 !important;
    width: 100%;
    min-height: 42px;
    font-size: 13px;
  }

  #wms-pane-products .wms-tools-fold {
    display: block;
    grid-column: 1 / -1;
    border: 1px solid var(--wms-border);
    border-radius: 10px;
    padding: 6px 8px;
  }

  #wms-pane-products .wms-tools-fold > summary {
    display: list-item;
    font-size: 13px;
    font-weight: 600;
    padding: 6px 2px;
    cursor: pointer;
  }

  #wms-pane-products .wms-tools-fold[open] > summary {
    margin-bottom: 6px;
    border-bottom: 1px solid var(--wms-border);
  }

  #wms-pane-products .wms-tools-fold .wms-btn {
    display: flex;
    width: 100%;
    min-height: 40px;
    margin-bottom: 5px;
    justify-content: flex-start;
    text-align: left;
    font-size: 12.5px;
  }

  /* ── zoznam tovaru ako karty ── */
  #wms-pane-products .wms-table-wrap {
    overflow-x: visible;
  }

  #wms-pane-products .wms-table {
    display: block;
    width: 100%;
    min-width: 0;
  }

  #wms-pane-products .wms-table thead {
    display: none;
  }

  #wms-pane-products .wms-table tbody {
    display: block;
  }

  #wms-pane-products .wms-table tbody tr {
    display: grid;
    grid-template-columns: 1fr 1fr;
    column-gap: 10px;
    row-gap: 2px;
    padding: 9px 11px;
    margin-bottom: 7px;
    background: #fff;
    border: 1px solid var(--wms-border);
    border-radius: 10px;
  }

  #wms-pane-products .wms-table tbody td {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 8px;
    padding: 1px 0 !important;
    border: 0 !important;
    width: auto !important;
    max-width: none !important;
    text-align: left !important;
    font-size: 12.5px;
    white-space: normal;
  }

  #wms-pane-products .wms-table tbody td::before {
    content: attr(data-label);
    color: var(--wms-muted);
    font-size: 10.5px;
    flex: 0 0 auto;
  }

  #wms-pane-products .wms-table tbody td[data-cell="name"] {
    grid-column: 1 / -1;
    display: block;
    order: 1;
    font-size: 13.5px;
    line-height: 1.3;
  }

  #wms-pane-products .wms-table tbody td[data-cell="code"] {
    grid-column: 1 / -1;
    order: 2;
    font-family: monospace;
    font-size: 11.5px;
    color: var(--wms-muted);
  }

  #wms-pane-products .wms-table tbody td[data-cell="price"] { order: 3; }
  #wms-pane-products .wms-table tbody td[data-cell="margin"] { order: 4; }
  #wms-pane-products .wms-table tbody td[data-cell="cat"] { order: 5; grid-column: 1 / -1; }
  #wms-pane-products .wms-table tbody td[data-cell="sup"] { order: 6; grid-column: 1 / -1; }

  /* značky (bez EAN, dvojník, na donastavenie) nech sa vojdú do riadkov */
  #wms-pane-products .wms-table tbody td[data-cell="attrs"] {
    order: 7;
    grid-column: 1 / -1;
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
    justify-content: flex-start;
    margin-top: 3px;
  }

  #wms-pane-products .wms-table tbody td[data-cell="status"] {
    order: 8;
    grid-column: 1 / -1;
    justify-content: flex-start;
  }

  /* „Aktívny" je normálny stav — v karte zaberal riadok zbytočne; mimo predaja nech svieti */
  #wms-pane-products .wms-table tbody td[data-cell="status"]:has(.badge-green) {
    display: none;
  }

  /* Upraviť/zmazať dosť veľké na prst */
  #wms-pane-products .wms-table tbody td[data-cell="actions"] {
    order: 9;
    grid-column: 1 / -1;
    margin-top: 5px;
  }

  #wms-pane-products .wms-table tbody td[data-cell="actions"] .col-actions {
    display: grid;
    grid-template-columns: 1fr 48px;
    gap: 6px;
    width: 100%;
  }

  #wms-pane-products .wms-table tbody td[data-cell="actions"] .wms-btn {
    min-height: 42px;
    font-size: 13px;
    justify-content: center;
  }

  /* prázdny stav zostáva vetou */
  #wms-pane-products .wms-table tbody tr:has(td[colspan]) {
    display: block;
    border: 0;
    background: transparent;
  }

  #wms-pane-products .wms-table tbody td[colspan] { display: block; }

  /* ── stránkovanie ── */
  #wms-pane-products .wms-pagination {
    flex-wrap: wrap;
    gap: 6px;
  }

  #wms-pane-products .wms-page-btns .wms-btn {
    min-height: 38px;
    min-width: 38px;
  }

  /* ── formulár produktu na celú obrazovku ── */
  #wms-product-modal .wms-modal-fullscreen {
    /*
     * dvh, nie %: na iPhone je viditeľná časť okna nižšia než 100 % (panely
     * Safari), takže pribitá pätička s „Uložiť" skončila pod spodnou lištou.
     */
    height: 100dvh;
    max-height: 100dvh;
  }

  #wms-product-modal .wms-modal-header {
    flex-wrap: wrap;
    gap: 6px;
    padding: 10px 12px 8px;
  }

  #wms-product-modal .wms-modal-title {
    font-size: 15px;
    min-width: 0;
  }

  #wms-product-modal .wms-modal-header-actions {
    margin-left: 0 !important;
    order: 3;
  }

  #wms-product-modal .wms-modal-body {
    padding: 12px 12px 4px;
  }

  #wms-product-modal .wms-modal-footer {
    padding: 8px 12px calc(8px + env(safe-area-inset-bottom, 0px));
    gap: 8px;
  }

  #wms-product-modal .wms-modal-footer .wms-btn {
    flex: 1 1 0;
    min-height: 46px;
    font-size: 15px;
    justify-content: center;
  }

  #wms-product-modal .wms-input,
  #wms-product-modal .wms-sel,
  #wms-product-modal textarea.wms-input {
    min-height: 44px;
    font-size: 16px; /* menší font by na iPhone stránku priblížil */
  }

  #wms-product-modal .wms-fs-title {
    font-size: 12px;
  }

  /*
   * Jeden stĺpec naozaj. Pravidlo pre 640 px síce hovorí `1fr`, ale polia so
   * značkou `.wms-span-2` / `.wms-span-3` majú `grid-column: span 2/3` s id
   * špecifickosťou — mriežka im preto dorobila implicitné stĺpce a formulár
   * zostal trojstĺpcový: „Interný kód" mal 54 px a nedal sa prečítať.
   */
  #wms-product-modal .wms-grid-2,
  #wms-product-modal .wms-grid-3,
  #wms-product-modal .wms-grid-4,
  #wms-product-modal .form-grid,
  #wms-product-modal .form-grid.cols-3 {
    grid-template-columns: 1fr !important;
    gap: 10px;
  }

  #wms-product-modal .wms-span-2,
  #wms-product-modal .wms-span-3,
  #wms-product-modal .wms-span-4,
  #wms-product-modal .form-grid.full {
    grid-column: span 1 !important;
  }

  /* dvojica „cena / DPH" a podobné páry nech zostanú vedľa seba — sú krátke */
  #wms-product-modal .wms-price-row {
    grid-template-columns: 1fr 1fr !important;
  }
}

/*
 * „Spočítané" pásik navrchu zoznamu inventúry — kým sa nezaúčtuje.
 * Nie je prilepený (na rozdiel od hlavičiek skupín): stojí na začiatku zoznamu
 * a ako prilepený by sa pri rolovaní kládol na prvú kartu a prekryl jej množstvo.
 */
#wms-mobile-inventory .minv-counted-header {
  position: static;
  background: #ecfdf5;
  color: #047857;
  border-color: #a7f3d0;
  font-weight: 700;
}

/* prepínač „Celý sortiment" v lište Zásob */
.wms-stock-filters .wms-stock-all-listed {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  color: var(--wms-muted);
  white-space: nowrap;
  cursor: pointer;
  user-select: none;
}

/* ══════════════════════════════════════════════════════════════
   CENOVKY (ESL) NA MOBILE

   Cenovky sa priraďujú v predajni pri regáli, teda z telefónu. Sedem
   stĺpcov sa na 390 px nezmestí — každý riadok je preto karta: hore MAC
   s veľkosťou, pod ňou artikel a cena veľkým písmom (to sa kontroluje
   voči regálu) a naspodku tlačidlá cez celú šírku, aby sa dali trafiť
   palcom.
   ══════════════════════════════════════════════════════════════ */
@media (max-width: 720px) {
  #mop-pane-esl .wms-table thead { display: none; }
  #mop-pane-esl .wms-table,
  #mop-pane-esl .wms-table tbody,
  #mop-pane-esl .wms-table tr,
  #mop-pane-esl .wms-table td { display: block; width: auto; }
  #mop-pane-esl .wms-table tr {
    border: 1px solid #e5e0d9;
    border-radius: 12px;
    padding: 10px 12px;
    margin-bottom: 10px;
    background: #fff;
  }
  #mop-pane-esl .wms-table td {
    border: 0 !important;
    padding: 3px 0 !important;
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 10px;
    text-align: left !important;
    font-size: 13.5px;
  }
  /* názov stĺpca zľava — bez hlavičky by karta bola hádanka */
  #mop-pane-esl .wms-table td[data-cell]::before {
    content: attr(data-cell);
    flex: 0 0 auto;
    color: #94a3b8;
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: .04em;
  }
  /* artikel a cena sú to hlavné — cez celú šírku a väčším písmom */
  #mop-pane-esl .wms-table td.esl-cell-produkt,
  #mop-pane-esl .wms-table td.esl-cell-cena {
    display: block;
    font-size: 15.5px;
    font-weight: 600;
    color: #0f172a;
  }
  #mop-pane-esl .wms-table td.esl-cell-produkt::before,
  #mop-pane-esl .wms-table td.esl-cell-cena::before,
  #mop-pane-esl .wms-table td.esl-cell-signal::before,
  #mop-pane-esl .wms-table td.esl-cell-stav::before { display: block; margin-bottom: 1px; }
  /* signál a stav majú viac riadkov — na úzkom displeji sa nesmú tlačiť do
     jedného riadka vedľa názvu stĺpca, inak sa lámu po slovách */
  #mop-pane-esl .wms-table td.esl-cell-signal,
  #mop-pane-esl .wms-table td.esl-cell-stav { display: block; }
  #mop-pane-esl .wms-table td.esl-cell-signal span,
  #mop-pane-esl .wms-table td.esl-cell-stav > span:first-child { display: inline-block; }
  #mop-pane-esl .wms-table td.esl-cell-cena { font-size: 18px; }
  /* tlačidlá na šírku karty, aby sa dali trafiť prstom */
  #mop-pane-esl .wms-table td.esl-cell-akcia {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    white-space: normal !important;
    margin-top: 8px;
    padding-top: 8px !important;
    border-top: 1px solid #f1f5f9 !important;
  }
  #mop-pane-esl .wms-table td.esl-cell-akcia::before { display: none; }
  #mop-pane-esl .wms-table td.esl-cell-akcia .wms-btn {
    flex: 1 1 auto;
    min-height: 38px;
    font-size: 13px;
  }
  /* formuláre: jedno pole na riadok, veľké dotykové ciele */
  #mop-pane-esl input,
  #mop-pane-esl select {
    width: 100% !important;
    min-width: 0 !important;
    min-height: 42px;
    font-size: 16px;   /* pod 16 px iOS pri písaní stránku priblíži */
  }
  #mop-pane-esl .wms-btn { min-height: 40px; }
  #mop-pane-esl > .im-page-body > .wms-card { padding: 12px !important; }
  #mop-pane-esl .im-dept-subsection-title { margin-top: 14px; }
  /* vodorovný posun tabuľky netreba, karty sa zmestia */
  #mop-pane-esl .wms-table-wrap { overflow-x: visible; }
}

/* Mobilná inventúra — zadanie po dátumoch spotreby naraz. Vpravo políčko na
   spočítané množstvo, ťuknutie na dátum doň skočí (28. 9. 2026: už neotvára
   druhý formulár). Riadok „iný dátum" má vľavo výber dátumu. */
.minv-batch-pocet { grid-column: 1 / -1; font-size: 12px; color: #64748b; }
.minv-new-row .minv-new-exp { flex: 1 1 auto; min-width: 0; min-height: 44px; font-size: 16px; }
.minv-new-row .minv-new-del { flex: 0 0 auto; }
.minv-batch-row {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 0;
  border-bottom: 1px solid #f1f5f9;
}
.minv-batch-info {
  flex: 1 1 auto;
  min-width: 0;
  text-align: left;
  background: none;
  border: 0;
  padding: 4px 0;
  font: inherit;
  cursor: pointer;
}
/*
 * „Sklad 0,098 kg" bol drobný sivý text POD dátumom a predavačka ho pri regáli
 * nečítala — pritom je to jediné číslo, s ktorým porovnáva realitu. Stojí preto
 * VEDĽA dátumu a je čitateľný (číslo tmavé a tučné, o polovicu väčšie).
 */
.minv-batch-info {
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: baseline;
  column-gap: 10px;
}
.minv-batch-datum { grid-column: 1; }
.minv-batch-sys {
  grid-column: 2;
  padding-right: 8px;      /* nech sa nelepí na políčko množstva */
  font-size: 13.5px;
  color: #475569;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.minv-batch-sys strong {
  font-size: 15px;
  font-weight: 700;
  color: #1F2937;
}
.minv-batch-cislo { grid-column: 1 / -1; }
.minv-batch-qty {
  flex: 0 0 96px;
  width: 96px;
  min-height: 44px;
  text-align: right;
  font-size: 16px;   /* menšie písmo iOS pri písaní zoomuje */
  font-weight: 600;
}
.minv-zero-toggle {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  margin-top: 10px;
  font-size: 12.5px;
  color: #334155;
}
.minv-zero-toggle input { margin-top: 2px; width: 18px; height: 18px; }
.minv-batches-summary {
  margin-top: 8px;
  font-size: 13px;
  color: #0f172a;
}

/* ══════════════════════════════════════════════════════════════
   INVENTÚRA NA NÍZKOM ROZLÍŠENÍ

   Na monitoroch v predajniach (1024×768) zaberala hlavička s filtrami,
   pásikom „ku dňu" a dvomi radmi tlačidiel takmer polovicu obrazovky
   a na riadky zostalo pár centimetrov. Filtre sa preto dajú zbaliť
   a na nízkych oknách sa celá hlavička aj riadky automaticky stlačia.
   ══════════════════════════════════════════════════════════════ */
.wms-inv-fold-btn {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  margin: 0;
  padding: 0 8px;
  height: 20px;
  border: 1px solid var(--wms-border, #e5e0d9);
  border-radius: 999px;
  background: #fff;
  color: #64748b;
  font-size: 11.5px;
  line-height: 1.6;
  cursor: pointer;
}
.wms-inv-fold-btn:hover { background: #f8fafc; color: #334155; }

/* zbalené = filtre preč, akcie a tabuľka zostávajú */
#wms-inv-header.wms-inv-folded .wms-inv-toolbar-filters { display: none; }
#wms-inv-header.wms-inv-folded .wms-inv-asof-banner {
  padding: 3px 8px;
  font-size: 11.5px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

@media (max-height: 900px) {
  .wms-inv-toolbar { gap: 4px; padding-bottom: 4px; }
  .wms-inv-toolbar-filters { gap: 4px 6px; }
  .wms-inv-toolbar-filters > .wms-sel,
  .wms-inv-toolbar-filters > .wms-search,
  .wms-inv-toolbar-filters > .wms-input,
  .wms-inv-toolbar-filters .wms-inv-cat-btn { height: 28px; font-size: 12px; padding: 4px 8px; }
  .wms-inv-toolbar-actions .wms-btn,
  .wms-inv-actions .wms-btn { height: 28px; font-size: 12px; }
  .wms-inv-asof-banner { margin-top: 3px; padding: 4px 8px; font-size: 11.5px; }
  .wms-inv-actions { padding: 2px 0; }
  /* riadky tabuľky: nižšie o tretinu → na tú istú obrazovku sa ich zmestí o polovicu viac */
  #wms-inv-table-wrap .wms-table td,
  #wms-inv-table-wrap .wms-table th { padding-top: 3px; padding-bottom: 3px; font-size: 12.5px; }
  #wms-inv-table-wrap .wms-table input.wms-input { height: 26px; font-size: 12.5px; }
  /* história inventúr je na malom monitore luxus — nech neberie miesto riadkom.
     Inline `max-height` v HTML sa dá prebiť len !important. */
  #wms-inv-history-section {
    max-height: 58px !important;
    padding-top: 2px !important;
    margin-top: 2px !important;
  }
  #wms-inv-history-section h3 { font-size: 10.5px !important; margin-bottom: 2px !important; }
  #wms-inv-history-section .wms-table td,
  #wms-inv-history-section .wms-table th { padding-top: 1px; padding-bottom: 1px; font-size: 11.5px; }
}

@media (max-height: 760px) {
  #wms-inv-history-section { display: none !important; }
  #wms-inv-table-wrap .wms-table td,
  #wms-inv-table-wrap .wms-table th { padding-top: 2px; padding-bottom: 2px; }
}

/* hlavička tabuľky drží pri scrollovaní — bez nej sa pri dlhom zozname
   nedá povedať, ktorý stĺpec je „Fyzicky" a ktorý „Rozdiel" */
#wms-inv-table-wrap .wms-table thead th {
  position: sticky;
  top: 0;
  z-index: 3;
  background: var(--wms-surface, #fff);
  box-shadow: inset 0 -1px 0 var(--wms-border, #e5e0d9);
}

/* Nízke okno: každý pixel hore je jeden riadok navyše dole. */
@media (max-height: 900px) {
  #wms-pane-inventory .wms-page { padding-top: 6px; padding-bottom: 6px; }
  /* hlavička stránky (názov + podnadpis) sa na nízkom okne stlačí */
  #wms-pane-inventory .im-page-header,
  .loyalty-module-wms .im-page-header { padding-top: 6px; padding-bottom: 6px; }
  .wms-inv-fold-btn { height: 18px; font-size: 11px; }
  /* akcie a súhrn do jedného riadka — pri piatich tlačidlách sa inak zalamujú */
  .wms-inv-actions {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: nowrap;
    overflow-x: auto;
  }
  .wms-inv-actions #wms-inv-summary {
    font-size: 11.5px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 46%;
  }
  .wms-inv-actions .wms-stock-filter-actions { flex-wrap: nowrap; margin-left: auto; }
  .wms-inv-actions .wms-btn { height: 26px; font-size: 11.5px; padding: 0 8px; }
  /* riadok tabuľky: cieľ je pod 28 px, aby sa ich na 768 px zmestilo dvojnásobne viac */
  #wms-inv-table-wrap .wms-table td { line-height: 1.25; }
  #wms-inv-table-wrap .wms-table input.wms-input,
  #wms-inv-table-wrap .wms-table .wms-input { height: 24px; padding: 0 6px; }
  #wms-inv-table-wrap .wms-table td small,
  #wms-inv-table-wrap .wms-table td .muted { font-size: 10.5px; }
}

/* Riadky inventúry na nízkom okne: cieľ je 28 px na riadok, nie 50. */
@media (max-height: 900px) {
  #wms-inv-tbody tr.inv-cat-head td { padding-top: 2px; padding-bottom: 2px; font-size: 11px; }
  #wms-inv-tbody tr.inv-group-head td,
  #wms-inv-tbody tr td { padding-top: 1px !important; padding-bottom: 1px !important; }
  #wms-inv-tbody tr.inv-group-head { border-top-width: 1px !important; }
  #wms-inv-tbody .wms-inv-input,
  #wms-inv-tbody input.wms-inv-input { height: 24px; padding: 0 6px; font-size: 12.5px; }
  #wms-inv-tbody .wms-inv-prod-name { font-size: 12.5px; }
  #wms-inv-tbody td .muted { font-size: 10.5px; }
}

/* Upozornenie, že na predajni počíta aj niekto iný. */
.minv-rozpracovane {
  margin: 6px 0;
  padding: 7px 10px;
  border-radius: 8px;
  background: #FEF3C7;
  border: 1px solid #F59E0B;
  color: #92400E;
  font-size: 12.5px;
  line-height: 1.45;
}

/* Dátum poslednej inventúry na karte položky. */
.minv-pc-inv {
  margin-top: 2px;
  font-size: 11px;
  color: #64748b;
}
.minv-pc-inv-cerstve { color: #166534; }
.minv-pc-inv-stare,
.minv-pc-inv-nikdy { color: #B45309; }

/* Čip „ku dňu" v riadku akcií namiesto pásika cez celú šírku. */
.wms-inv-asof-chip {
  flex: 0 0 auto;
  padding: 1px 8px;
  border-radius: 999px;
  background: #FEF3C7;
  border: 1px solid #F59E0B;
  color: #92400E;
  font-size: 11px;
  font-weight: 600;
  white-space: nowrap;
}
/* Keď sú filtre zbalené, plný pásik „ku dňu" už netreba — čip to povie. */
#wms-inv-header.wms-inv-folded .wms-inv-asof-banner { display: none; }

@media (max-height: 900px) {
  /* pásik expirácií je na inventúre luxus — tri riadky tovaru sú viac */
  .loyalty-module-wms:has(#wms-pane-inventory.active) #expiry-global-banner { display: none; }
  /* pri zbalených filtroch nech hlavička nemá vôbec žiadne vlastné odsadenie */
  #wms-inv-header.wms-inv-folded .wms-inv-toolbar { padding-bottom: 0; gap: 0; }
  #wms-inv-header.wms-inv-folded .wms-inv-actions { padding: 1px 0; }
}

@media (max-height: 900px) {
  /* Keď je pásik expirácií na inventúre skrytý, nesmie po ňom zostať
     odsadenie shellu — inak sa ušetrený riadok nikde neprejaví. */
  #adminMainShell.loyalty-admin-authed.loyalty-module-wms:has(#wms-pane-inventory.active) { padding-top: .5rem !important; }
  /* nadpis stránky: názov stačí menší, podnadpis na inventúre nič nehovorí */
  .loyalty-module-wms:has(#wms-pane-inventory.active) .im-page-header { padding: 2px 0 !important; }
  .loyalty-module-wms:has(#wms-pane-inventory.active) .im-page-title { font-size: 15px !important; line-height: 1.2; }
  .loyalty-module-wms:has(#wms-pane-inventory.active) .im-page-subtitle { display: none; }
}

/* Značka poslednej inventúry pri položke. */
.wms-inv-last {
  margin-left: 8px;
  padding: 0 5px;
  border-radius: 4px;
  background: #f1f5f9;
  color: #64748b;
  font-size: 10.5px;
  font-weight: 600;
  white-space: nowrap;
}
.wms-inv-last-cerstve { background: #dcfce7; color: #166534; }
.wms-inv-last-stare,
.wms-inv-last-nikdy { background: #fef3c7; color: #B45309; }

/* ══════════════════════════════════════════════════════════════
   ÚZKE OKNO: tabuľka inventúry sa musí zmestiť, nie useknúť

   Pri okne pod 1200 px odchádzali stĺpce Stav skladu / Fyzicky /
   Rozdiel za pravý okraj — a to sú práve tie, do ktorých sa píše.
   Preto sa zľava odoberá to, čo sa dá dopočítať z riadku: poznámka,
   potom expirácia (zostáva farebný bod pri šarži) a napokon sa
   skráti šarža.
   ══════════════════════════════════════════════════════════════ */
@media (max-width: 1200px) {
  #wms-inv-table-wrap .wms-table th:nth-child(7),
  #wms-inv-table-wrap .wms-table td:nth-child(7) { display: none; }   /* Poznámka */
  #wms-inv-table-wrap .wms-inv-prod-code { font-size: 10px; }
}
@media (max-width: 1000px) {
  #wms-inv-table-wrap .wms-table th:nth-child(3),
  #wms-inv-table-wrap .wms-table td:nth-child(3) { display: none; }   /* Expirácia */
  #wms-inv-table-wrap .wms-inv-batch-cell { max-width: 130px; overflow: hidden; text-overflow: ellipsis; }
}
@media (max-width: 860px) {
  #wms-inv-table-wrap .wms-table th:nth-child(2),
  #wms-inv-table-wrap .wms-table td:nth-child(2) { display: none; }   /* Šarža */
  #wms-inv-table-wrap .wms-table td,
  #wms-inv-table-wrap .wms-table th { font-size: 12px; padding-left: 4px; padding-right: 4px; }
}
/* tabuľka nech využije šírku okna, nie pevné stĺpce */
#wms-inv-table-wrap .wms-table { width: 100%; table-layout: auto; }
#wms-inv-table-wrap { overflow-x: auto; }

/* ══════════════════════════════════════════════════════════════
   ŠARŽE V MOBILNEJ INVENTÚRE — biely podklad, rozlišuje písmo

   Riadok šarže je <button>, a v mobilnej inventúre všetky tlačidlá
   dostávajú červený podklad — dátum spotreby a kilá tak boli biele
   na červenom a prakticky nečitateľné. Podklad je preto biely
   a jednotlivé údaje sa rozlišujú rezom a veľkosťou písma, nie farbou.
   ══════════════════════════════════════════════════════════════ */
#wms-pane-mobile-inventory .minv-batch-info,
.minv-batch-row .minv-batch-info {
  /*
   * Dátum a STAV SKLADU stoja vedľa seba, číslo šarže pod nimi.
   *
   * Predtým tu bol `display: block`, takže stav skladu spadol pod dátum ako
   * drobný sivý text — predavačka pri regáli ho nečítala, pritom je to jediné
   * číslo, s ktorým porovnáva realitu. Mriežka (dátum | stav) ich drží v jednom
   * rade a číslo šarže dostane celý druhý riadok, takže sa nič neoreže.
   */
  display: grid !important;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: baseline;
  column-gap: 10px;
  background: #fff !important;
  background-image: none !important;
  color: var(--wms-ink, #1C1917) !important;
  border: 0 !important;
  box-shadow: none !important;
  padding: 4px 2px !important;
  text-align: left;
  min-height: 0;
}
#wms-pane-mobile-inventory .minv-batch-info:active,
.minv-batch-row .minv-batch-info:active { background: #f8fafc !important; }

/* dátum spotreby — to hlavné, čo sa hľadá očami; nikdy sa neláme na dva riadky */
.minv-batch-datum {
  display: inline-block;
  margin-right: 6px;
  white-space: nowrap;
  font-size: 15px;
  font-weight: 700;
  letter-spacing: -.01em;
}
/* číslo šarže — technický údaj, drobnejšie a strojovým písmom */
.minv-batch-cislo {
  display: inline-block;
  font-family: ui-monospace, 'JetBrains Mono', Menlo, Consolas, monospace;
  font-size: 11.5px;
  font-weight: 500;
  color: #64748b;
}
/* stav v systéme — najdrobnejšie, je to len kontrola; na jeden riadok */
.minv-batch-row .minv-batch-sys {
  display: block;
  white-space: nowrap;
  font-size: 11.5px;
  font-weight: 500;
  font-style: italic;
  color: #78716C;
}
/* text šarže dostane, čo zostane; políčko na množstvo je užšie */
.minv-batch-row .minv-batch-info { flex: 1 1 auto; min-width: 0; }
.minv-batch-qty { flex: 0 0 84px; width: 84px; }

/* Karta nesúhlasí so šaržami — inventúra to zrovná, ale nech je to vidieť. */
.minv-nesulad {
  margin: 0 0 8px;
  padding: 6px 8px;
  border-radius: 8px;
  background: #FEF3C7;
  border: 1px solid #F59E0B;
  color: #92400E;
  font-size: 12px;
  line-height: 1.4;
}

/*
  DODACÍ LIST Z MAILU v mobilnom príjme. Pracovný zoznam riadkov: nerozpoznané
  a nespracované navrchu, hotové stlmené dole. Riadky sú tlačidlá na celú šírku
  — ide sa po nich prstom pri regáli.
*/
.wms-mrcv-mail-count {
  display: inline-block;
  min-width: 20px;
  margin-left: 6px;
  padding: 0 6px;
  border-radius: 999px;
  background: #fff;
  color: #B91C1C;
  font-size: 12px;
  font-weight: 800;
  line-height: 18px;
}
/*
  `#wms-mobile-receiving` je FLEX STĹPEC, takže nový panel sa v ňom stlačil na
  2 px (flex-shrink) a obsah pretiekol do neviditeľna — v DOM bol, na obrazovke
  nie. `flex: 0 0 auto` mu vráti vlastnú výšku. Rovnaká pasca ako pri rámoch
  mobilných obrazoviek: vinník je iný prvok než ten odseknutý.
*/
.wms-mrcv-mail-box {
  flex: 0 0 auto;
  margin: 8px 0;
  border: 1px solid var(--wms-border);
  border-radius: 10px;
  overflow: hidden;
  background: var(--wms-card, #fff);
}
.wms-mrcv-mail-head {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 10px;
  background: #F1F5F9;
  font-weight: 700;
  font-size: 13px;
}
.wms-mrcv-mail-x { width: auto; margin-left: auto; padding: 2px 8px; border: 0; background: transparent; font-size: 16px; }
.wms-mrcv-mail-row,
.wms-mrcv-mail-line {
  display: block;
  width: 100%;
  text-align: left;
  padding: 10px 12px;
  border: 0;
  border-top: 1px solid var(--wms-border);
  background: #fff;
}
.wms-mrcv-mail-sup,
.wms-mrcv-mail-line-name { display: block; font-size: 15px; font-weight: 600; }
.wms-mrcv-mail-meta,
.wms-mrcv-mail-line-meta { display: block; font-size: 12.5px; color: var(--wms-muted); margin-top: 2px; }
.wms-mrcv-mail-subj,
.wms-mrcv-mail-line-dl { display: block; font-size: 11.5px; color: var(--wms-muted); margin-top: 2px; }
/* nerozpoznaný riadok treba priradiť — svieti, aby sa nezabudol */
.wms-mrcv-mail-line.nerozpoznany { background: #FFFBEB; }
.wms-mrcv-mail-line.nerozpoznany .wms-mrcv-mail-line-meta strong { color: #B45309; }
/*
  Návrhy k nespárovanému riadku — rozbalia sa pod ním. Ide sa po nich prstom,
  preto celá šírka a veľké tlačidlá; skóre je vpravo v texte, nie ako graf.
*/
.wms-mrcv-kand-box { background: #FFFDF5; border-top: 1px solid #F59E0B; }
.wms-mrcv-kand-head { padding: 8px 12px 4px; font-size: 12.5px; }
.wms-mrcv-kand {
  display: block;
  width: 100%;
  text-align: left;
  padding: 9px 12px 9px 22px;
  border: 0;
  border-top: 1px dotted var(--wms-border);
  background: transparent;
}
.wms-mrcv-kand-name { display: block; font-size: 14.5px; font-weight: 600; }
.wms-mrcv-kand-meta { display: block; font-size: 11.5px; color: var(--wms-muted); margin-top: 2px; }
.wms-mrcv-kand-nic { padding: 6px 12px; font-size: 12px; }
.wms-mrcv-kand-hladat {
  display: block;
  width: 100%;
  text-align: left;
  padding: 9px 12px;
  border: 0;
  border-top: 1px solid #F59E0B;
  background: transparent;
  font-size: 13.5px;
  font-weight: 600;
}

/* hotový riadok už len dokladuje, čo sa prijalo */
.wms-mrcv-mail-line.hotovy { background: #F8FAFC; }
.wms-mrcv-mail-line.hotovy .wms-mrcv-mail-line-name { color: #15803D; font-weight: 500; }

/*
  KONTROLING — návrh → objednané → dodané za jeden deň. Karty nad tabuľkou
  odpovedajú na otázku „nezasiahol niekto priveľmi", tabuľka je zoradená od
  najväčšieho zásahu, takže sa dá len skrolovať.
*/
.wms-kntr-bar {
  display: flex;
  gap: 8px;
  align-items: center;
  flex-wrap: wrap;
  padding: 5px 10px;
  border-bottom: 1px solid var(--wms-border);
}
#wms-pane-kontroling .wms-kntr-bar input:not([type="checkbox"]),
#wms-pane-kontroling .wms-kntr-bar select {
  min-height: 26px; height: 26px; padding: 2px 6px; font-size: 12px; width: auto;
}
.wms-kntr-day-sel { min-width: 13rem; max-width: 17rem; }
.wms-kntr-sum { margin-left: auto; font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.wms-kntr-cards { display: flex; gap: 8px; flex-wrap: wrap; padding: 8px 10px 4px; }
.wms-kntr-card {
  flex: 1 1 180px;
  min-width: 0;
  border: 1px solid var(--wms-border);
  border-radius: 8px;
  padding: 6px 10px;
  background: var(--wms-card, #fff);
}
.wms-kntr-card-alarm { border-color: #DC2626; background: #FEF2F2; }
.wms-kntr-card-warn { border-color: #F59E0B; background: #FFFBEB; }
.wms-kntr-card-val { font-size: 17px; font-weight: 800; }
.wms-kntr-card-lbl { font-size: 10.5px; text-transform: uppercase; letter-spacing: 0.03em; color: var(--wms-muted); }
.wms-kntr-card-note { font-size: 11px; }
.wms-kntr-scroll { max-height: 62vh; overflow: auto; }
.wms-kntr-table { min-width: 900px; }
.wms-kntr-table td, .wms-kntr-table th { white-space: nowrap; }
.wms-kntr-table tr.kntr-alarm { background: #FEF2F2; }
/* hlavičky skupín: predajňa je hrubá linka, kategória tichšia — čítať zhora dolu */
.wms-kntr-table tr.kntr-grp td { font-weight: 700; background: #F8FAFC; }
.wms-kntr-table tr.kntr-grp-dept td {
  font-size: 13px;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  background: #F1F5F9;
  border-top: 2px solid var(--wms-border);
  padding-top: 7px;
  padding-bottom: 7px;
}
.wms-kntr-table tr.kntr-grp-cat td { font-size: 12px; color: #334155; border-top: 1px solid var(--wms-border); }
.wms-kntr-table tr.kntr-bez-obj { background: #FFFBEB; }

/*
  Inventúry na skladovej karte — doklad, nie pohyb. Pri nulovom rozdiele sa
  žiadny pohyb nezapisuje, takže bez tohto zoznamu sa z karty nedá zistiť,
  či bol artikel spočítaný.
*/
.wms-sbm-inv-list { display: flex; flex-direction: column; gap: 2px; }
.sbm-inv-row {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 8px;
  padding: 4px 6px;
  border-bottom: 1px dotted var(--wms-border);
  font-size: 12.5px;
}
.sbm-inv-date { min-width: 132px; font-variant-numeric: tabular-nums; }
.sbm-inv-ok { color: #15803D; font-weight: 700; }
.sbm-inv-diff { color: #B91C1C; font-weight: 700; }
.sbm-inv-draft { color: #B45309; font-weight: 700; }
.sbm-inv-meta { flex: 1 1 220px; min-width: 0; }

/*
  Bublina „Napíš dátum" (date-sk.js). Plávajúca, aby nikde nerozhodila
  rozloženie — dátumových polí je v programe 59 a každé je v inom riadku.
  Tmavá, aby bolo jasné, že je to pomôcka programu, nie ďalšie pole formulára.
*/
#dsk-bubble {
  position: fixed;
  z-index: 4200;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 10px;
  border-radius: 10px;
  background: #111827;
  color: #fff;
  box-shadow: 0 8px 22px rgba(0, 0, 0, 0.32);
  font-size: 12.5px;
  white-space: nowrap;
}
#dsk-bubble[hidden] { display: none; }

/*
 * Slovenské čítanie pod dátumovým polom. Samo pole vypisuje dátum podľa
 * jazyka prehliadača (na telefóne v angličtine `09/04/2026`), takže toto je
 * jediné miesto, kde je dátum čitateľný bez ohľadu na zariadenie.
 */
.dsk-citanie {
  display: block;
  margin-top: 3px;
  font-size: 11px;
  line-height: 1.3;
  font-weight: 600;
  letter-spacing: 0.01em;
  color: var(--wms-muted, #6b7280);
  font-variant-numeric: tabular-nums;
}
.dsk-citanie[hidden] { display: none; }

/* Zámena artikla — vyhľadávanie a vybraný artikel v modáli. */
.wms-zam-res { display: flex; flex-direction: column; gap: 4px; margin-top: 4px; }
.wms-zam-hit {
  display: flex; flex-direction: column; gap: 1px; text-align: left;
  padding: 6px 8px; border: 1px solid var(--wms-border); border-radius: 8px;
  background: var(--wms-card, #fff); font-size: 13px; cursor: pointer;
}
.wms-zam-hit:hover { border-color: var(--wms-accent, #B91C1C); }
.wms-zam-hit .muted { font-size: 11px; }
.wms-zam-chip {
  margin-top: 6px; padding: 6px 8px; border-radius: 8px; font-size: 13px;
  background: var(--wms-ok-bg, #f0fdf4); border: 1px solid var(--wms-ok, #15803d);
  display: flex; flex-direction: column; gap: 1px;
}
.wms-zam-warn {
  margin-top: 10px; padding: 8px 10px; border-radius: 8px; font-size: 12px; font-weight: 600;
  background: var(--wms-danger-bg, #fef2f2); color: var(--wms-danger, #B91C1C);
}
.wms-zam-warn[hidden] { display: none; }

/* Návrh odpisu: tovar po záruke je v rýchlom odpise predvyplnený a červený. */
.bw-row-expired {
  background: var(--wms-danger-bg, #fef2f2);
  border-left: 3px solid var(--wms-danger, #B91C1C);
}
/* dopočítaná záruka — treba ju overiť na obale, preto žltá a bez predvyplnenia */
.bw-row-check {
  background: var(--wms-warn-bg, #fffbeb);
  border-left: 3px solid var(--wms-warn, #b45309);
}
.bw-check {
  font-size: 11px;
  font-weight: 600;
  color: var(--wms-warn, #b45309);
  line-height: 1.3;
}
.bw-expired {
  font-size: 11px;
  font-weight: 700;
  color: var(--wms-danger, #B91C1C);
  line-height: 1.3;
}
#dsk-bubble .dsk-lbl { opacity: 0.75; }
#dsk-bubble .dsk-input {
  width: 108px;
  min-height: 28px;
  padding: 3px 8px;
  border: 1px solid #4B5563;
  border-radius: 7px;
  background: #1F2937;
  color: #fff;
  font-size: 14px;
  font-family: inherit;
  text-align: center;
  letter-spacing: 0.02em;
}
#dsk-bubble .dsk-input::placeholder { color: #9CA3AF; }
#dsk-bubble .dsk-vysledok { min-width: 78px; font-weight: 700; color: #FCA5A5; }
#dsk-bubble .dsk-vysledok.dsk-ok { color: #86EFAC; }
/* na telefóne stačí pole a výsledok — popis by bublinu vytlačil z obrazovky */
@media (max-width: 460px) {
  #dsk-bubble { gap: 6px; padding: 5px 8px; }
  #dsk-bubble .dsk-lbl { display: none; }
  #dsk-bubble .dsk-input { width: 96px; }
}
@media print { #dsk-bubble { display: none !important; } }

/*
  Mínus na karte pri kladných šaržiach je iná správa než bežný nesúlad: tu sa
  spočítaním nič neopraví, preto je červená, nie oranžová.
*/
.minv-nesulad-warn {
  background: #FEF2F2;
  border-color: #DC2626;
  color: #991B1B;
}

/* Predané za obdobie pod zásobou — podľa toho sa kontroluje, či stav sedí. */
.wms-stock-sold {
  font-size: 11px;
  color: #1E40AF;
  font-weight: 600;
}

/* Súhrn nad tabuľkou Zásob — počty, ktoré rozhodujú o kontrole. */
.wms-stock-summary {
  padding: 2px 0 6px;
  font-size: 12px;
  color: #475569;
}

/* ───────────────────────────────────────────────────────────────────────────
   DODACIE LISTY Z MAILU
   Doklad sa neotvára v okne: vľavo náhľad prílohy, vpravo čítanie a zaúčtovanie.
   Na telefóne ide náhľad nad ovládanie, aby bol doklad vidieť ako prvý.
   ─────────────────────────────────────────────────────────────────────────── */
.wms-dlmail-doc {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 320px;
  gap: 12px;
  align-items: stretch;
  min-height: 0;
}
.wms-dlmail-preview {
  min-height: 320px;
  max-height: 62vh;
  overflow: auto;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #f8fafc;
  border: 1px solid var(--wms-border, #e5e7eb);
  border-radius: 8px;
}
.wms-dlmail-side {
  min-width: 0;
  display: flex;
  flex-direction: column;
}

@media (max-width: 900px) {
  .wms-dlmail-doc { grid-template-columns: minmax(0, 1fr); }
  .wms-dlmail-preview { max-height: 46vh; }
  .wms-dlmail-side .wms-btn { min-height: 44px; }
}

/* Pošta dostane plochu: rám zoznamu dokladov v tomto pohľade nerastie. */
#wms-pane-receiving .wms-page.wms-rcv-mail-mode #rcv-queue-wrap { flex: 0 0 auto; }
#wms-pane-receiving .wms-page.wms-rcv-mail-mode #rcv-mail-panel {
  flex: 1 1 auto;
  min-height: 0;
  overflow: auto;
}
/*
 * Otvorený doklad z mailu vyplní celú zvyšnú výšku (24. 9. 2026). Predtým mal
 * náhľad PDF pevných 320 px (min-height) a pod ním zostala prázdna polovica
 * obrazovky — iframe s height:100% v rodičovi bez výšky spadne na minimum.
 * Panel je flex stĺpec, doklad v ňom rastie, mriežka natiahne náhľad na riadok.
 * Keď je okno nízke, doklad drží aspoň 460 px a panel sa roluje.
 */
@media (min-width: 901px) {
  #rcv-mail-panel.s-dokladom {
    display: flex;
    flex-direction: column;
  }
  #rcv-mail-panel.s-dokladom > .wms-rcv-doc-banner { flex: 0 0 auto; }
  #rcv-mail-panel.s-dokladom > .wms-dlmail-doc {
    flex: 1 1 auto;
    min-height: 460px;
    grid-template-rows: minmax(0, 1fr);
  }
  #rcv-mail-panel.s-dokladom .wms-dlmail-preview {
    min-height: 0;
    max-height: none;
    align-items: stretch;
  }
  #rcv-mail-panel.s-dokladom .wms-dlmail-preview > iframe { height: auto; flex: 1 1 auto; }
  #rcv-mail-panel.s-dokladom .wms-dlmail-side { min-height: 0; overflow: auto; }
}

/* ───────────────────────────────────────────────────────────────────────────
   KONTROLA DOKLADU: RIADKY NA CELÚ OBRAZOVKU
   Pri porovnávaní s papierom v ruke platí každý viditeľný riadok. Zoznam
   dokladov je v tomto stave zbalený na jeden pás a všetko ostatné (pásy, súčty)
   sa stlačí — tabuľka položiek dostane celý zvyšok plochy.
   ─────────────────────────────────────────────────────────────────────────── */
#wms-pane-receiving .wms-page.wms-rcv-rows-max #rcv-queue-wrap { flex: 0 0 auto; }
#wms-pane-receiving .wms-page.wms-rcv-rows-max #rcv-queue-list-panel { display: none; }
#wms-pane-receiving .wms-page.wms-rcv-rows-max #wms-rcv-items-wrap {
  flex: 1 1 auto;
  min-height: 0;
  overflow: auto;
}
#wms-pane-receiving .wms-page.wms-rcv-rows-max .wms-rcv-doc-banner {
  margin: 4px 0;
  padding: 5px 8px;
  font-size: 12px;
}
/* hlavička tabuľky zostáva na mieste, aby sa vedelo, čo je ktorý stĺpec */
#wms-pane-receiving .wms-page.wms-rcv-rows-max #wms-rcv-items-wrap thead th {
  position: sticky;
  top: 0;
  z-index: 2;
}

/* ───────────────────────────────────────────────────────────────────────────
   ODPIS TOVARU (večerný odpis pečiva)
   Zásoba je najdôležitejšie číslo v okne — predavačka porovnáva regál s ním,
   preto veľkým písmom vedľa názvu. Na telefóne sa okno naťahuje na celú
   obrazovku a políčko na množstvo má prstovú veľkosť.
   ─────────────────────────────────────────────────────────────────────────── */
.bw-filters {
  display: flex;
  gap: 8px;
  margin-bottom: 10px;
  flex-wrap: wrap;
  align-items: center;
}
.bw-list { max-height: 52vh; overflow: auto; }
.bw-cat {
  font-weight: 600;
  font-size: 12px;
  color: var(--wms-muted);
  text-transform: uppercase;
  letter-spacing: .04em;
  padding: 10px 4px 4px;
  position: sticky;
  top: 0;
  background: var(--wms-surface, #fff);
  z-index: 1;
}
.bw-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 4px;
  border-bottom: 1px solid var(--wms-border, #eee);
}
.bw-main { flex: 1; min-width: 0; }
.bw-name { font-weight: 500; font-size: 14px; line-height: 1.25; }
.bw-sold { font-size: 11.5px; color: var(--wms-muted); }
.bw-stock {
  flex: 0 0 auto;
  text-align: right;
  line-height: 1.05;
  min-width: 72px;
}
.bw-stock-num { font-size: 22px; font-weight: 700; }
.bw-stock-unit { font-size: 12.5px; color: var(--wms-muted); }
.bw-stock-label {
  display: block;
  font-size: 10.5px;
  color: var(--wms-muted);
  text-transform: uppercase;
  letter-spacing: .04em;
}
/*
 * `.wms-input` má width:100%, takže samotné `width` na políčku prehráva iný
 * predpis a políčko sa roztiahlo na celý riadok. `flex` + `max-width` držia
 * šírku bez ohľadu na to, čo o šírke tvrdí základný štýl vstupu.
 */
.bw-qty {
  flex: 0 0 82px;
  width: 82px;
  max-width: 82px;
  min-width: 82px;
  height: 42px;
  font-size: 17px;
  text-align: center;
}
.bw-footer { display: flex; justify-content: space-between; align-items: center; gap: 8px; }

@media (max-width: 700px) {
  /* podklad bez odsadenia, inak okno na „celú obrazovku" trčí pod okraj */
  #wms-bakery-writeoff-modal { padding: 0; align-items: stretch; }
  /* okno na celú obrazovku — 100dvh, lišta prehliadača inak zožerie pätičku */
  .bw-modal {
    width: 100vw !important;
    max-width: 100vw !important;
    height: 100dvh;
    max-height: 100dvh;
    border-radius: 0;
    display: flex;
    flex-direction: column;
  }
  .bw-modal .wms-modal-body { flex: 1 1 auto; min-height: 0; overflow: auto; padding: 10px 12px; }
  .bw-filters > .wms-sel,
  .bw-filters > .wms-input { flex: 1 1 100%; min-height: 44px; font-size: 15px; }
  .bw-filters > .muted { display: none; }
  .bw-list { max-height: none; overflow: visible; }

  .bw-row { padding: 11px 2px; gap: 8px; }
  .bw-name { font-size: 15px; }
  .bw-stock-num { font-size: 26px; }
  .bw-stock { min-width: 64px; }
  .bw-qty {
    flex: 0 0 92px;
    width: 92px;
    max-width: 92px;
    min-width: 92px;
    height: 54px;
    font-size: 20px;
  }
  /* pätička pribitá pod prstom, tlačidlo na celú šírku */
  .bw-modal .bw-footer {
    position: sticky;
    bottom: 0;
    flex-wrap: wrap;
    padding: 10px 12px calc(10px + env(safe-area-inset-bottom, 0px));
    background: var(--wms-surface, #fff);
    box-shadow: 0 -4px 12px rgba(15, 23, 42, .08);
  }
  .bw-modal .bw-footer #bw-summary { flex: 1 1 100%; font-size: 12.5px; }
  .bw-modal .bw-footer .wms-btn { flex: 1 1 100%; min-height: 50px; font-size: 16px; }
}

/* Skrytý (neaktuálny) doklad vo fronte príjmu — vidí ho len admin v pohľade
   „Skryté". Musí byť na prvý pohľad jasné, že riadok nie je na spracovanie. */
/*
 * Doklady expedície patriace k jednej VRATKE PP sú vo fronte odsadené pod ňou.
 * Ľavý pás drží blok pohromade — bez neho tri riadky jedného prípadu splynuli
 * so zvyškom zoznamu a predavačka nevedela, čo k čomu patrí.
 */
/* hotový riadok príjmu: zelený odznak na konci riadku, aby bolo na prvý pohľad
   vidieť, čo je vybavené — bez toho predavačka klikala na fajku znovu */
/* jedna vratka = jeden prípad na skladovej karte: pohyby drží pohromade pás
   pri ľavom okraji a hlavička s číslom vratky a súčtom za celý prípad */
.wms-stock-card-row--case > td:first-child { box-shadow: inset 3px 0 0 rgba(185, 28, 28, .45); }
.wms-stock-card-case-tag {
  display: inline-block;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .02em;
  color: #B91C1C;
  background: #FEF2F2;
  border: 1px solid rgba(185, 28, 28, .25);
  border-radius: 4px;
  padding: 1px 5px;
  margin-bottom: 3px;
  cursor: pointer;
}
.wms-stock-card-case-tag:hover { background: #FEE2E2; }
.wms-stock-card-case-tag { white-space: nowrap; }
.wms-stock-card-case-sum { font-size: 10px; color: #7F1D1D; margin-bottom: 3px; }
/* pokračovanie toho istého prípadu — riadok pod hlavičkou bloku */
.wms-stock-card-case-sub { font-size: 10px; color: #B91C1C; margin-bottom: 2px; }
/* dva prípady za sebou nesmú splynúť do jedného pásu */
.wms-stock-card-row--case-start > td { border-top: 2px solid rgba(185, 28, 28, .18); }
/*
 * Tabuľka karty má `table-layout: fixed`, takže sedem stĺpcov dostalo presne
 * sedminu šírky a do „Dokumentu" sa lámalo každé slovo — pri vratke tam je
 * značka prípadu, súčet aj poznámka. Šírky sa preto rozdelia podľa obsahu.
 */
@media (min-width: 701px) {
  #wms-stock-batch-modal .wms-stock-card-table th:nth-child(1) { width: 12%; }
  #wms-stock-batch-modal .wms-stock-card-table th:nth-child(2) { width: 11%; }
  #wms-stock-batch-modal .wms-stock-card-table th:nth-child(3) { width: 10%; }
  #wms-stock-batch-modal .wms-stock-card-table th:nth-child(4) { width: 14%; }
  #wms-stock-batch-modal .wms-stock-card-table th:nth-child(5) { width: 27%; }
  #wms-stock-batch-modal .wms-stock-card-table th:nth-child(6) { width: 14%; }
  #wms-stock-batch-modal .wms-stock-card-table th:nth-child(7) { width: 12%; }
}
/* dodávateľ z pamäte predajne — klikom sa vráti ten z číselníka */
.wms-orders-dod-memory {
  display: block;
  margin-top: 2px;
  font-size: 10px;
  color: #B45309;
  text-decoration: underline dotted;
  cursor: pointer;
}
.wms-orders-dod-memory:hover { color: #92400E; }
/* ručne doplnený riadok v návrhu — je navrchu, nech je jasné prečo */
.wms-orders-row-manual > td { background: rgba(254, 243, 199, .45); }
.wms-rcv-line-done { white-space: nowrap; font-weight: 600; }
/* záložka bez zoznamu dokladov (Párovanie vratiek, Z mailu, Návrh) nesmie
   nechať po skrytej tabuľke prázdnu dieru na celú výšku */
#wms-pane-receiving .wms-page #rcv-queue-list-panel.wms-rcv-queue-list-collapsed { flex: 0 0 auto; min-height: 0; }
#wms-pane-receiving .wms-page.wms-rcv-queue-hidden #rcv-queue-wrap { flex: 0 0 auto; }
#wms-pane-receiving .wms-page.wms-rcv-queue-hidden .wms-rcv-queue-table-wrap { flex: 0 0 auto; }
.wms-rcv-queue-row--child > td:first-child { box-shadow: inset 3px 0 0 rgba(185, 28, 28, .35); }
.wms-rcv-queue-row--child > td { background: rgba(248, 250, 252, .75); }
.wms-rcv-queue-row--hidden { opacity: .62; background: repeating-linear-gradient(45deg, rgba(148,163,184,.10) 0 8px, transparent 8px 16px); }
.wms-rcv-queue-row--hidden td:nth-child(3) { text-decoration: line-through; text-decoration-color: rgba(100,116,139,.7); }
.wms-rcv-hidden-tag {
  display: inline-block; margin-left: 6px; padding: 1px 6px; border-radius: 999px;
  background: #e2e8f0; color: #475569; font-size: 10px; font-weight: 700; letter-spacing: .04em;
}
.wms-rcv-hide-btn { margin-left: 4px; color: #64748b; }
.wms-rcv-hide-btn:hover { color: #b91c1c; }

/* Príjem na mobile: mantinely trvanlivosti a rýchle voľby dátumu spotreby.
   Predavačka nemá písať číslice — má vidieť, dokedy tovar smie mať dátum. */
.wms-mrcv-exp-limits {
  font-size: 12.5px; color: #475569; background: #f8fafc;
  border: 1px solid #e2e8f0; border-radius: 8px; padding: 6px 9px; margin-bottom: 6px;
}
.wms-mrcv-exp-quick { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 6px; }
.wms-mrcv-exp-quick button, .wms-mrcv-exp-quick button.plain-btn {
  flex: 1 1 auto; min-height: 42px; padding: 6px 10px; border-radius: 10px;
  border: 1px solid #cbd5e1; background: #fff; font-size: 13px; font-weight: 600; color: #0f172a;
}
.wms-mrcv-exp-quick button.je-max { border-color: #15803d; color: #15803d; }
.wms-mrcv-exp-quick button.je-min { border-color: #a16207; color: #a16207; }
.wms-mrcv-exp-quick button.vybrane { background: #0f172a; color: #fff; border-color: #0f172a; }
.wms-mrcv-exp-date { min-height: 46px; font-size: 16px; }
.wms-mrcv-exp-warn {
  margin-top: 6px; padding: 8px 10px; border-radius: 8px; font-size: 13px; font-weight: 600;
}
.wms-mrcv-exp-warn.chyba { background: #fee2e2; color: #991b1b; }
.wms-mrcv-exp-warn.pozor { background: #fef3c7; color: #92400e; }
.wms-mrcv-exp-warn.dobre { background: #ecfdf5; color: #047857; }
.wms-mrcv-line-warn { color: #a16207; font-weight: 600; }

/* Artikel bez EAN: značka v zozname a pole na doplnenie kódu pri príjme. */
.wms-mrcv-bez-ean {
  display: inline-block; padding: 0 5px; border-radius: 4px;
  background: #fef3c7; color: #92400e; font-weight: 700; font-size: 10.5px; letter-spacing: .03em;
}
.wms-mrcv-ean-label { color: #92400e; font-weight: 700; }
.wms-mrcv-ean-row { display: flex; gap: 6px; align-items: stretch; }
/* `width:100%` z .wms-input aj z globálneho štýlu tlačidiel rozhodí flex —
   pole sa scvrkne na nulu a „Skenovať" zaberie celý riadok. Preto width:auto
   a min-width:0 na oboch stranách. */
.wms-mrcv-ean-row input.wms-input {
  flex: 1 1 auto; width: auto; min-width: 0; min-height: 46px; font-size: 16px;
}
.wms-mrcv-ean-row button.wms-mrcv-ean-scan {
  flex: 0 0 auto; width: auto; min-height: 46px; padding: 0 14px; border-radius: 10px;
  border: 1px solid #92400e; background: #fffbeb; color: #92400e; font-weight: 700; font-size: 13px;
}
.wms-mrcv-ean-hint { font-size: 12px; color: #92400e; margin-top: 4px; }
.wms-mrcv-ean-hint.hotovo { color: #047857; }

/*
 * VRATKA PP — lišta s akciami na spodku panela.
 *
 * Hlavička panela s tlačidlami „Zrušiť / Odoslať" odroluje nahor, len čo sa
 * pridá prvá položka (nový riadok sa posúva do zorného poľa). Na užšom okne
 * potom predavačka nemala čím vratku odoslať ani zrušiť. Lišta je preto
 * prilepená na spodok panela a nesie tie isté akcie.
 */
.wms-pp-return-foot {
  position: sticky;
  bottom: 0;
  z-index: 6;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 12px;
  border-top: 1px solid #fecaca;
  background: #fff5f5;
  box-shadow: 0 -6px 14px rgba(15, 23, 42, .08);
}
.wms-pp-return-foot-info { flex: 1 1 auto; min-width: 0; font-size: 12.5px; color: #7f1d1d; font-weight: 600; }
.wms-pp-return-foot .wms-btn { flex: 0 0 auto; }
.wms-pp-return-foot #pp-ret-submit-btn-foot { min-height: 44px; padding: 0 16px; }

/* Na nízkom okne je lišta nižšia — každý ušetrený pixel je riadok vratky.
   (Musí stáť ZA základnou definíciou lišty, inak ju prebije poradím.) */
@media (max-height: 760px) {
  .wms-pp-return-foot { padding: 5px 12px; }
  .wms-pp-return-foot #pp-ret-submit-btn-foot { min-height: 38px; padding: 0 12px; }
  .wms-pp-return-foot-info { font-size: 11.5px; }
}

/* Na širokom okne stačia tlačidlá v hlavičke — dole by len brali miesto. */
@media (min-width: 1200px) {
  .wms-pp-return-foot { display: none; }
}
/* Na užšom okne naopak: hlavičkové tlačidlá von, dole je lišta. */
@media (max-width: 1199px) {
  .wms-pp-return-head-actions { display: none; }
}

/*
 * Hlásenia (toasty) stoja v pravom dolnom kúte — presne tam, kde je pri vratke
 * prilepená lišta s „Odoslať". Po uložení riadku tak hlásenie prekrylo tlačidlo
 * a predavačka musela čakať, kým zmizne. Keď je panel vratky otvorený, hlásenia
 * sa posunú nad lištu.
 */
/* Posun nahor nestačí — panel vratky končí tesne nad spodkom okna, takže
   hlásenia aj tak ležali na tlačidle. Pri otvorenej vratke idú preto nahor. */
body.wms-vratka-otvorena .wms-toasts {
  bottom: auto;
  top: 84px;
  flex-direction: column-reverse;
}

/*
 * VRATKA PP — fajka („uložiť riadok") musí byť vidieť pri každom rozlíšení.
 *
 * Tabuľka sa pri užšom okne roluje doprava a posledný stĺpec s ✓ / × vyšiel
 * mimo obrazovky: predavačka zadala váhu a nemala čím riadok uložiť (Enter
 * áno, ale to nikto netuší). Stĺpec je preto prilepený k pravému okraju
 * rolovanej plochy — `border-collapse: separate` je podmienka, aby sticky na
 * bunkách tabuľky vôbec fungovalo.
 */
.pp-ret-table { border-collapse: separate; border-spacing: 0; }
.pp-ret-table th,
.pp-ret-table td { border-bottom: 1px solid var(--wms-border); }
.pp-ret-table th.pp-ret-actions-cell,
.pp-ret-table td.pp-ret-actions-cell {
  position: sticky;
  right: 0;
  z-index: 3;
  background: #fff;
  box-shadow: -10px 0 12px -10px rgba(15, 23, 42, .35);
}
.pp-ret-table th.pp-ret-actions-cell { background: var(--wms-bg); z-index: 4; }
.pp-ret-row-confirmed td.pp-ret-actions-cell { background: #f0fdf4; }

/* Na užšom okne ustúpia široké stĺpce, nie tlačidlá. */
@media (max-width: 1200px) {
  .pp-ret-fifo-cell { min-width: 190px; width: auto; }
  .pp-ret-product-cell { min-width: 160px; }
  .pp-ret-table th, .pp-ret-table td { padding: 6px 6px; }
  .pp-ret-qty { width: 78px !important; }
}
@media (max-width: 820px) {
  .pp-ret-fifo-cell { min-width: 150px; }
  .pp-ret-product-cell { min-width: 140px; }
}

/* ── STUDENÉ MISY ──────────────────────────────────────────────────────────
   Objednávky ako karty (predajňa ich číta ráno na telefóne), váženie
   v modálnom okne s fotkami zložiek a číselník variantov s receptúrou. */
.cp-toolbar { display: flex; gap: 10px; flex-wrap: wrap; align-items: flex-end; margin-bottom: 14px; }
.cp-tabs { display: flex; gap: 6px; }
.cp-tab {
  padding: 8px 14px; border-radius: 999px; border: 1px solid #e2e8f0; background: #fff;
  font-size: 13px; font-weight: 600; color: #475569; min-height: 40px;
}
.cp-tab.cp-tab-active { background: var(--wms-red, #b91c1c); border-color: var(--wms-red, #b91c1c); color: #fff; }
.cp-field, .cp-field-block { display: flex; flex-direction: column; gap: 4px; font-size: 12px; color: #64748b; }
.cp-field-block { margin-bottom: 8px; }
.cp-row2 { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 10px; }

.cp-order-card {
  background: #fff; border: 1px solid #e5e7eb; border-radius: 12px; padding: 12px 14px; margin-bottom: 10px;
  display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px 14px; align-items: center;
}
.cp-order-head { grid-column: 1 / -1; display: flex; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.cp-order-when { font-size: 12.5px; color: #7f1d1d; font-weight: 600; }
.cp-order-cust { font-size: 14px; font-weight: 600; }
.cp-order-note { font-size: 12px; color: #92400e; margin-top: 2px; }
.cp-order-actions { display: flex; gap: 6px; flex-wrap: wrap; justify-content: flex-end; }
.cp-badge { display: inline-block; padding: 1px 7px; border-radius: 999px; font-size: 10.5px; font-weight: 700; margin-left: 6px; }
.cp-badge-open { background: #fef3c7; color: #92400e; }
.cp-badge-done { background: #dcfce7; color: #166534; }
.cp-badge-cancel { background: #e2e8f0; color: #475569; }

.cp-var-top { margin-bottom: 10px; }
.cp-var-card {
  background: #fff; border: 1px solid #e5e7eb; border-radius: 12px; padding: 12px;
  display: grid; grid-template-columns: 96px minmax(0, 1fr) auto; gap: 12px; margin-bottom: 10px; align-items: start;
}
.cp-var-off { opacity: .6; }
.cp-var-photo img, .cp-cell-photo img { width: 100%; border-radius: 8px; display: block; object-fit: cover; }
.cp-var-photo { width: 96px; height: 96px; overflow: hidden; border-radius: 8px; background: #f1f5f9; display: grid; place-items: center; }
.cp-nophoto { font-size: 10px; color: #94a3b8; text-align: center; }
.cp-var-name { font-size: 14px; }
.cp-var-list { margin: 6px 0 0; padding-left: 18px; font-size: 12.5px; color: #334155; }
.cp-var-actions { display: flex; flex-direction: column; gap: 6px; }
.cp-photo-btn { cursor: pointer; text-align: center; }

.cp-platter { border: 1px solid #e5e7eb; border-radius: 10px; padding: 10px; margin-bottom: 12px; }
.cp-platter-head { display: flex; gap: 8px; align-items: center; margin-bottom: 6px; }
.cp-platter-actions { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin-top: 8px; }
.cp-total { margin-left: auto; font-size: 12.5px; }
.cp-table th, .cp-table td { font-size: 12.5px; padding: 6px 8px; vertical-align: middle; }
.cp-cell-photo { width: 52px; }
.cp-cell-photo img { width: 44px; height: 44px; }
.cp-cell-plan { white-space: nowrap; color: #64748b; }
.cp-cell-actual input { width: 96px; text-align: right; font-size: 15px; min-height: 40px; }
.cp-cell-x { width: 34px; text-align: right; }
.cp-remove { color: #b91c1c; font-size: 18px; line-height: 1; padding: 2px 6px; }

.cp-modal {
  position: fixed; inset: 0; z-index: 3000; background: rgba(15, 23, 42, .45);
  display: none; align-items: flex-start; justify-content: center; padding: 24px 12px; overflow: auto;
}
.cp-modal.cp-modal-open { display: flex; }
.cp-modal-in { background: #fff; border-radius: 14px; padding: 16px 18px; width: 100%; max-width: 520px; box-shadow: 0 20px 50px rgba(15,23,42,.3); }
.cp-modal-wide { max-width: 760px; }
.cp-modal-actions { display: flex; gap: 8px; justify-content: flex-end; margin-top: 12px; flex-wrap: wrap; }

@media (max-width: 720px) {
  .cp-row2 { grid-template-columns: minmax(0, 1fr); }
  .cp-order-card, .cp-var-card { grid-template-columns: minmax(0, 1fr); }
  .cp-var-photo { width: 100%; height: 140px; }
  .cp-order-actions, .cp-var-actions { justify-content: stretch; }
  .cp-order-actions .wms-btn, .cp-var-actions .wms-btn, .cp-var-actions .cp-photo-btn { flex: 1 1 auto; }
}

/* ── PRIESKUM TRHU ─────────────────────────────────────────────────────────
   Formulár sa vypĺňa v cudzom obchode na mobile, jednou rukou. Riadok je
   preto blok (nie tabuľka): názov a naša cena nad sebou, potom políčka na
   celú šírku, aby sa dali trafiť palcom. Na širokej obrazovke sa polia
   zoradia do riadku, aby vedúci videl viac položiek naraz. */
.ms-toolbar { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; margin-bottom: 12px; }
.ms-new { background: var(--wms-surface, #fff); border: 1px solid var(--wms-border, #e5e7eb);
  border-radius: 12px; padding: 12px; margin-bottom: 14px; }
.ms-new-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
  gap: 10px; margin-bottom: 10px; }
.ms-new-grid label { display: flex; flex-direction: column; gap: 4px; font-size: 12.5px; font-weight: 600; }

.ms-list { display: grid; gap: 10px; }
.ms-card { display: block; width: 100%; text-align: left; padding: 12px 14px;
  border: 1px solid var(--wms-border, #e5e7eb); border-radius: 12px;
  background: var(--wms-surface, #fff); cursor: pointer; }
.ms-card:hover { border-color: #c7cdd6; }
.ms-card-top { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.ms-card-sub { font-size: 12.5px; color: var(--wms-muted, #6b7280); margin-top: 2px; }
.ms-badge { font-size: 11.5px; font-weight: 700; padding: 2px 8px; border-radius: 999px; white-space: nowrap; }
.ms-badge-open { background: #fef3c7; color: #92400e; }
.ms-badge-done { background: #dcfce7; color: #166534; }

.ms-head { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 10px; }
.ms-back { font-weight: 600; color: var(--wms-accent, #b91c1c); }
.ms-head-title { display: flex; flex-direction: column; line-height: 1.25; }
.ms-head-title .muted { font-size: 12.5px; }
/* súhrn je nalepený navrchu: pri vypĺňaní 25 položiek treba stále vidieť,
   ako to vychádza, inak sa rozhoduje až doma z exportu */
.ms-summary { position: sticky; top: 0; z-index: 3; display: flex; gap: 14px; flex-wrap: wrap;
  padding: 8px 12px; margin-bottom: 12px; font-size: 13px;
  background: var(--wms-surface, #fff); border: 1px solid var(--wms-border, #e5e7eb); border-radius: 10px; }

.ms-group { margin-bottom: 18px; }
.ms-group h4 { margin: 0 0 8px; font-size: 14px; text-transform: uppercase; letter-spacing: .03em; }
.ms-row { border: 1px solid var(--wms-border, #e5e7eb); border-radius: 12px; padding: 10px 12px;
  margin-bottom: 8px; background: var(--wms-surface, #fff); }
.ms-row.ms-saving { border-color: #93c5fd; }
.ms-row-name { font-weight: 600; font-size: 14px; margin-bottom: 6px; }
.ms-row-our { font-weight: 400; font-size: 12.5px; color: var(--wms-muted, #6b7280); margin-top: 2px; }
.ms-row-in { display: flex; gap: 8px; margin-top: 6px; align-items: center; }
.ms-row-in .wms-input { min-width: 0; flex: 1 1 auto; }
.ms-price { max-width: 120px; font-weight: 700; font-size: 16px; }
.ms-pack { max-width: 150px; }
.ms-diff { font-weight: 700; margin-left: 6px; }
.ms-diff-bad { color: #b91c1c; }
.ms-diff-good { color: #15803d; }
.ms-photo-btn { flex: 0 0 auto; padding: 8px 10px; border: 1px solid var(--wms-border, #e5e7eb);
  border-radius: 10px; cursor: pointer; font-size: 13px; white-space: nowrap; }
.ms-del { color: #b91c1c; font-weight: 700; padding: 4px 8px; }
.ms-thumb { display: inline-block; margin-top: 8px; }
.ms-thumb img { max-height: 120px; border-radius: 8px; border: 1px solid var(--wms-border, #e5e7eb); }
.ms-row-add { border-style: dashed; }

.ms-toast { position: fixed; left: 50%; transform: translateX(-50%); bottom: 18px; z-index: 60;
  padding: 10px 16px; border-radius: 999px; font-weight: 600; font-size: 13.5px; color: #fff; }
.ms-toast-ok { background: #166534; }
.ms-toast-err { background: #b91c1c; }

@media (max-width: 640px) {
  /* palec musí trafiť políčko — na mobile ide cena na celú šírku */
  .ms-row-in { flex-wrap: wrap; }
  .ms-price, .ms-pack { max-width: none; }
  .ms-summary { gap: 10px; font-size: 12.5px; }
}

/* Na mobile je bočná lišta pribitá (position: fixed, 65 px) a obsah jej lezie
   pod ňu — pri prieskume by sa tým skryl začiatok názvu položky aj cena.
   Odsadenie je len na tejto obrazovke; rám appky sa nemení, aby to nerozhodilo
   ostatné pohľady. */
@media (max-width: 768px) {
  /* konkurenčné pravidlo je `body.loyalty-ui-v2 #mopSection .mop-page-pane >
     .im-page-body`, preto rovnaká hĺbka selektora — inak sa odsadenie neuplatní */
  body.loyalty-ui-v2 #mopSection #mop-pane-market-survey > .im-page-body,
  #mop-pane-market-survey .im-page-body {
    padding-left: calc(var(--im-sidebar-rail, 65px) + 10px);
    padding-right: 10px;
  }
}

/* „Kde" + tlačidlo polohy: na mobile pod sebou, aby sa palcom trafilo oboje */
.ms-place-row { display: flex; gap: 6px; align-items: center; }
.ms-place-row .wms-input { min-width: 0; flex: 1 1 auto; }
.ms-gps { flex: 0 0 auto; white-space: nowrap; }
/* čas zápisu je doplnkový údaj — nesmie prekričať cenu a rozdiel */
.ms-row-time { font-size: 11.5px; color: var(--wms-muted, #6b7280); margin-top: 2px; font-weight: 400; }

/* Vzor misy pri vážení: fotka hotovej misy vedľa tabuľky zložiek. Kolegynka
   musí vidieť, ako to má vyzerať, nie len koľko gramov čoho — bez toho sa
   šablóna drží „podľa citu". */
.cp-platter-vzor { display: flex; gap: 10px; align-items: center; margin-bottom: 8px; }
.cp-platter-vzor img { width: 96px; height: 96px; object-fit: cover; border-radius: 10px;
  border: 1px solid var(--wms-border, #e5e7eb); }
.cp-platter-ciel { font-size: 13px; line-height: 1.35; }
@media (max-width: 640px) {
  .cp-platter-vzor img { width: 72px; height: 72px; }
}

/* ── POROVNANIE PRIESKUMOV ────────────────────────────────────────────────
   Riadky sú SKU, stĺpcov býva päť aj desať — preto vodorovné rolovanie vo
   vlastnom kontejnere a pribitý prvý stĺpec s názvom, aby bolo pri rolovaní
   stále vidieť, o ktorý artikel ide. */
.ms-cmp-wrap { overflow-x: auto; border: 1px solid var(--wms-border, #e5e7eb); border-radius: 12px; }
.ms-cmp { min-width: 640px; margin: 0; }
.ms-cmp th, .ms-cmp td { vertical-align: top; padding: 8px 10px; }
.ms-cmp-sku { position: sticky; left: 0; z-index: 2; background: var(--wms-surface, #fff);
  min-width: 190px; box-shadow: 1px 0 0 var(--wms-border, #e5e7eb); }
.ms-cmp thead th { position: sticky; top: 0; z-index: 3; background: var(--wms-surface, #fff); }
.ms-cmp thead .ms-cmp-sku { z-index: 4; }
.ms-cmp-sort { font-weight: 700; font-size: 12.5px; text-align: left; }
.ms-cmp-sub { font-size: 11px; color: var(--wms-muted, #6b7280); font-weight: 400; }
.ms-cmp-our { font-weight: 700; white-space: nowrap; }
.ms-cmp-price { font-weight: 700; white-space: nowrap; }
.ms-cmp-diff { font-size: 11.5px; white-space: nowrap; }
.ms-cmp-bad { background: #fef2f2; }
.ms-cmp-bad .ms-cmp-diff { color: #b91c1c; }
.ms-cmp-good { background: #f0fdf4; }
.ms-cmp-good .ms-cmp-diff { color: #15803d; }
.ms-cmp-empty { color: #cbd5e1; text-align: center; }
.ms-cmp-worst { font-weight: 700; white-space: nowrap; }
.ms-cmp-foto { font-size: 13px; text-decoration: none; }

/* Hľadanie zložky do receptúry misy — namiesto blokujúceho prompt(). */
.cp-rec-find { position: relative; margin: 10px 0 4px; }
.cp-rec-hits { position: absolute; left: 0; right: 0; top: 100%; z-index: 20; max-height: 300px;
  overflow-y: auto; background: var(--wms-surface, #fff); border: 1px solid var(--wms-border, #e5e7eb);
  border-radius: 10px; box-shadow: 0 10px 24px rgba(15, 23, 42, .12); }
.cp-rec-hit { display: block; width: 100%; text-align: left; padding: 8px 12px; cursor: pointer; }
.cp-rec-hit:hover { background: #f8fafc; }
.cp-rec-hit-name { display: block; font-weight: 600; font-size: 13.5px; }
.cp-rec-hit-sub { display: block; font-size: 11.5px; color: var(--wms-muted, #6b7280); }
.cp-rec-hint { padding: 8px 12px; font-size: 12.5px; color: var(--wms-muted, #6b7280); }

/* Ponuka existujúcich kariet pred založením novej (príjem zo skenu). Karta
   s PLU musí byť na prvý pohľad rozoznateľná — to je tá, ktorú vidí kasa. */
.wms-dupe-list { display: grid; gap: 8px; }
.wms-dupe-row { display: block; width: 100%; text-align: left; padding: 10px 12px;
  border: 1px solid var(--wms-border, #e5e7eb); border-radius: 10px; cursor: pointer; }
.wms-dupe-row:hover { border-color: #15803d; background: #f0fdf4; }
.wms-dupe-name { display: block; font-weight: 600; font-size: 14px; }
.wms-dupe-sub { display: block; font-size: 12px; color: var(--wms-muted, #6b7280); }

/* Nákupná cena pri mobilnom príjme. Predvyplnená posledná známa — predavačka
   ju potvrdí ťuknutím, prepisuje len keď dodávateľ cenu zmenil. Odchýlka je
   vidieť hneď pod poľom, aby sa preklep nezistil až v marži. */
.wms-mrcv-price-row { display: flex; gap: 8px; align-items: center; }
.wms-mrcv-price { flex: 1 1 auto; font-weight: 700; font-size: 17px; }
.wms-mrcv-price-keep { flex: 0 0 auto; font-size: 12.5px; text-decoration: underline;
  color: var(--wms-accent, #b91c1c); white-space: nowrap; }
.wms-mrcv-price-hint { font-size: 12.5px; color: var(--wms-muted, #6b7280); margin-top: 4px; line-height: 1.35; }
.wms-mrcv-price-warn { color: #b45309; font-weight: 600; }
.wms-mrcv-price-bad { color: #b91c1c; font-weight: 600; }

/* PREZERANIE DOKLADU (VRATKA PP, prevod) — nie zápis príjmu.
   Spoločná tabuľka príjmu má table-layout: fixed a rovnaké šírky stĺpcov;
   pri prezeraní sa v nej názov artikla lámal na „Br… krk… bk" a doklad sa
   nedal prečítať. Tu preto šírka podľa obsahu a názov dostane priestor. */
#wms-rcv-items-wrap.wms-rcv-view .wms-rcv-table,
#wms-rcv-items-wrap.wms-rcv-view table {
  table-layout: auto;
  min-width: 520px;
}
#wms-rcv-items-wrap.wms-rcv-view .wms-rcv-table td,
#wms-rcv-items-wrap.wms-rcv-view td {
  overflow: visible;
  text-overflow: clip;
  white-space: nowrap;
  font-size: 13px;
  padding: 6px 8px;
}
#wms-rcv-items-wrap.wms-rcv-view .rcv-view-name {
  width: 42%;
  min-width: 190px;
  white-space: normal;   /* dlhý názov sa zlomí na dva riadky, needotýka sa čísel */
  font-weight: 600;
}
@media (max-width: 640px) {
  /* na telefóne je názov najdôležitejší — čísla sa dorolujú */
  #wms-rcv-items-wrap.wms-rcv-view .rcv-view-name { width: auto; min-width: 150px; }
  #wms-rcv-items-wrap.wms-rcv-view td { font-size: 12.5px; padding: 5px 6px; }
}


/*
 * OPRAVA DÁTUMU SPOTREBY V KLASICKEJ INVENTÚRE.
 *
 * Odznak (farebná bodka + dátum) hovorí, ako na tom šarža je; políčko vedľa
 * neho dovolí dátum prepísať. Sú v jednom riadku, aby stĺpec nenarástol —
 * tabuľka má 443 riadkov a každý pixel navyše je jedna položka menej na
 * obrazovke. Pri úzkom okne sa políčko zalomí pod odznak.
 */
.wms-inv-exp-wrap {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}

.wms-inv-exp-input {
  width: 130px;
  min-width: 110px;
  min-height: 28px;
  padding: 2px 6px;
  font-size: 12px;
}

/* kým sa dátum ukladá, políčko zošedne — nech je vidieť, že sa niečo deje */
.wms-inv-exp-input:disabled {
  opacity: .55;
  cursor: progress;
}

/*
  Tlač dokladov (vratka, prevodka, expirácie, inventúra) — jedna skupina
  tlačidiel na všetkých obrazovkách, aby ju obsluha hľadala vždy rovnako.
  Na telefóne sa nesmie roztiahnuť cez celý riadok: tlač je doplnková akcia,
  hlavné tlačidlo („Prijať", „Schváliť") musí zostať na očiach.
*/
.wms-print-btns {
  display: inline-flex;
  gap: 4px;
  flex-wrap: wrap;
  align-items: center;
}
.wms-print-btns[hidden] { display: none; }
.wms-st-print-label {
  font-size: 12px;
  font-weight: 600;
  margin-right: 6px;
  color: var(--wms-muted);
}

/*
  POČET KÓPIÍ PRI TLAČI. Prevodka sa tlačí dvakrát: jedna ide s tovarom,
  druhá zostáva odosielajúcej predajni. Políčko je pri tlačidlách, nie v
  nastaveniach — rozhoduje sa o ňom v okamihu tlače.
*/
/*
  Vysvetľujúca poznámka v nastaveniach — nie chybová hláška, ale veta,
  ktorá hovorí, prečo sa niečo správa inak, než obsluha čaká.
*/
.wms-note {
  background: var(--wms-bg2);
  border-radius: 6px;
  padding: 8px 10px;
  margin: 0 0 12px;
  line-height: 1.45;
  color: var(--wms-text);
}
.wms-note code {
  background: var(--wms-surface);
  padding: 0 4px;
  border-radius: 3px;
}

/*
  Po vytvorení návratky sa tlač na chvíľu zvýrazní — papier má ísť s tovarom
  hneď, nie sa hľadať o hodinu vo fronte.
*/
.wms-print-ponuka {
  outline: 2px solid var(--wms-primary, #b91c1c);
  outline-offset: 3px;
  border-radius: 8px;
  animation: wms-print-ponuka-bliknutie 1s ease-in-out 2;
}
@keyframes wms-print-ponuka-bliknutie {
  0%, 100% { outline-color: var(--wms-primary, #b91c1c); }
  50% { outline-color: transparent; }
}
@media (prefers-reduced-motion: reduce) {
  .wms-print-ponuka { animation: none; }
}

.wms-print-kopie {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 11px;
  color: var(--wms-muted);
  margin-right: 2px;
}
.wms-print-kopie input {
  padding: 2px 4px;
  font-size: 12px;
  height: 26px;
}

/*
  Riadok dokladu v histórii prevodiek sa dá rozkliknúť. Rozbalí položky pod
  seba — zoznam zostáva, nič sa neprepína (drill-down, nie filter).
*/
.wms-row-click { cursor: pointer; }
.wms-row-click:hover { background: var(--wms-bg2); }
.wms-row-sub > td {
  background: var(--wms-bg);
  font-size: 12px;
  padding-top: 3px;
  padding-bottom: 3px;
}
.wms-row-sub .muted { margin-left: 6px; }

/*
  EDI kanál na pokladne GS5. Obrazovka má hore nastavenia (PL_CODE, priečinok),
  pod nimi záložky na jednotlivé komunikácie. Nastavenia sa nesmú schovať do
  modálu: bez PL_CODE sa nedá odoslať nič a musí byť vidieť prečo.
*/
.wms-edi-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 12px;
  flex-wrap: wrap;
  margin-bottom: 10px;
}
.wms-edi-settings {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  align-items: flex-end;
  padding: 10px;
  border: 1px solid var(--wms-border);
  border-radius: 8px;
  background: var(--wms-card, #fff);
  margin-bottom: 10px;
}
.wms-edi-field { display: flex; flex-direction: column; gap: 3px; font-size: 12px; min-width: 200px; }
.wms-edi-field > span { color: var(--wms-muted); font-weight: 600; }
.wms-edi-field--check { flex-direction: row; align-items: center; gap: 6px; min-width: 0; }
.wms-edi-warn {
  flex-basis: 100%;
  font-size: 12.5px;
  padding: 6px 10px;
  border-radius: 6px;
  background: #fef3c7;
  color: #92400e;
}
.wms-edi-tabs { display: flex; gap: 4px; flex-wrap: wrap; margin-bottom: 8px; }
.wms-edi-tab {
  border: 1px solid var(--wms-border);
  background: transparent;
  color: inherit;
  border-radius: 999px;
  padding: 5px 12px;
  font-size: 13px;
  cursor: pointer;
}
.wms-edi-tab.active { background: var(--wms-primary, #2563eb); color: #fff; border-color: transparent; }
.wms-edi-body { flex: 1; min-height: 0; overflow-y: auto; }
.wms-edi-actions { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; margin-bottom: 8px; }
.wms-edi-check { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; }
/* náhľad súboru je doslovný — musí byť vidieť oddeľovač aj medzery */
.wms-edi-preview {
  font-family: ui-monospace, Menlo, Consolas, monospace;
  font-size: 11.5px;
  white-space: pre;
  overflow-x: auto;
  padding: 8px 10px;
  border: 1px solid var(--wms-border);
  border-radius: 6px;
  background: var(--wms-code-bg, #f8fafc);
  margin: 0 0 10px;
}
.wms-edi-problems { margin-top: 12px; }
.wms-edi-problems > summary { cursor: pointer; font-size: 13px; color: #b45309; font-weight: 600; }
/*
  Filtračná lišta katalógu. `wms-sel` a `wms-input` sú v paneloch široké na celý
  riadok — v lište by tak každý filter zaberal vlastný riadok a na tabuľku by
  nezostalo miesto. Preto sa im tu šírka výslovne obmedzuje.
*/
.wms-edi-filters { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; margin-bottom: 8px; }
.wms-edi-filters .wms-input { flex: 1 1 200px; min-width: 180px; max-width: 320px; width: auto; }
.wms-edi-filters .wms-sel { flex: 0 1 auto; width: auto; min-width: 150px; max-width: 230px; }

/*
  Zoznam všetkých vratiek nad dozorom párovania. Filtračné chipy nesú počty,
  aby bolo na prvý pohľad vidieť, či niečo svieti — „Na riešenie" sa červená
  len keď tam naozaj niečo je.
*/
.wms-retlist-bar {
  display: flex;
  gap: 8px;
  align-items: center;
  flex-wrap: wrap;
  padding: 4px 10px;
  border-bottom: 1px solid var(--wms-border);
}
/*
  Polia v lište musia byť tesné pri každom rozlíšení. Trieda `wms-input-xs` na
  to nestačí: globálne pravidlo pre `input`/`select` (padding .5rem .6rem) má
  vyššiu špecifickosť než dve triedy, takže dátumy zostávali 36 px vysoké
  a lišta 46 px. Preto sa to píše cez id panela — a checkbox sa vynecháva,
  inak by z neho bol 26 px štvorec.
*/
#wms-rcv-pairing-panel .wms-retlist-bar input:not([type="checkbox"]),
#wms-rcv-pairing-panel .wms-retlist-bar select {
  min-height: 26px;
  height: 26px;
  padding: 2px 6px;
  font-size: 12px;
}

/*
  PÁROVANIE VRATIEK: HLAVIČKA PRÍJMU SA NEPOUŽÍVA.
  Doklad sa tu nevystavuje, preto sú číslo DL, dátum zaúčtovania, chipy
  otvorených OBJ a tlačidlá príjmu skryté — brali dva riadky a červená farba
  z nich robila výstrahu. Ostáva „VRATKA PP", ktorá sa odtiaľ vystavuje.
*/
.wms-rcv-pairing-mode #wms-rcv-header .wms-rcv-field-dl,
.wms-rcv-pairing-mode #wms-rcv-header #rcv-dl-date-field,
.wms-rcv-pairing-mode #wms-rcv-header #rcv-sup-field,
.wms-rcv-pairing-mode #wms-rcv-header #rcv-orders-inline,
.wms-rcv-pairing-mode #wms-rcv-header .wms-rcv-toolbar-actions .wms-btn:not(#rcv-pp-return-btn),
/* riadok o fronte príjmu (OBJ, CSB import, skryté doklady) sem tiež nepatrí */
.wms-rcv-pairing-mode .wms-rcv-queue-head-actions {
  display: none !important;
}
/*
  Výber vratiek: jedno pole so skupinami a počtami. Rad dvanástich chipov
  zaberal celý riadok, na 1280 px sa musel rolovať do strany a od témy dostával
  červené pozadie — obrazovka vyzerala ako výstraha, hoci to bol len filter.
*/
.wms-retlist-sel {
  width: auto;
  min-width: 12.5rem;
  max-width: 15rem;
  text-align: left;
  font-weight: 600;
}
/* súčty na konci lišty — informácia, nie práca, preto tichšie a vpravo */
.wms-retlist-sum {
  margin-left: auto;
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: nowrap;
  font-size: 12px;
  min-width: 0;
}
/* text sa skráti, chip „na riešenie" nikdy — inak sa lišta zlomí na dva riadky */
.wms-retlist-sum-t { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
.wms-retlist-alarm { flex: 0 0 auto; }
.wms-retlist-bar .wms-retsum-field { white-space: nowrap; }
.wms-retlist-bar #retlist-from,
.wms-retlist-bar #retlist-to { width: 118px; min-width: 0; }
.wms-retlist-alarm {
  display: inline-flex;
  align-items: center;
  width: auto;
  border: 1px solid var(--wms-border);
  border-radius: 999px;
  padding: 1px 8px;
  font-size: 11.5px;
  background: transparent;
  color: var(--wms-muted, #6B7280);
  cursor: pointer;
}
.wms-retlist-alarm.on { border-color: #dc2626; color: #dc2626; font-weight: 700; }
.wms-retlist-body { border-bottom: 1px solid var(--wms-border); }
/* zoznam nesmie zožrať celú obrazovku — dozor pod ním musí zostať dostupný */
.wms-retlist-scroll { max-height: 46vh; overflow-y: auto; }
/*
  Riadok vratky má byť JEDEN riadok. Na 1024 px sa číslo dokladu lámalo na
  štyri riadky („VRPP-F001-20260831-001") a jeden doklad zabral 94 px, takže na
  obrazovke boli piati. Číslo, dátum, predajňa a množstvá sa preto nelámu
  a tabuľka sa radšej posunie do strany; text v „Podrobnostiach" sa lámať môže.
*/
.wms-retlist-scroll { overflow-x: auto; }
.wms-retlist-scroll .wms-retsum-table { min-width: 980px; }
.wms-retlist-scroll .wms-retsum-table td:nth-child(1),
.wms-retlist-scroll .wms-retsum-table td:nth-child(2),
.wms-retlist-scroll .wms-retsum-table td:nth-child(3),
.wms-retlist-scroll .wms-retsum-table td:nth-child(5),
.wms-retlist-scroll .wms-retsum-table td:nth-child(6),
.wms-retlist-scroll .wms-retsum-table td:last-child { white-space: nowrap; }
.wms-retlist-scroll tr.retlist-alert { background: #fef2f2; }
.pair-badge.pair-none { background: #f3f4f6; color: #6b7280; }

/*
  Hľadanie v zozname vratiek. Inline `max-width` prehráva pravidlo z admin.html,
  ktoré inputom prepisuje šírku s !important — pole sa potom roztiahlo na celý
  riadok (1340 px) a filtračné chipy spadli pod ním. Šírka sa preto drží tu.
*/
.wms-retlist-bar #retlist-search {
  flex: 0 0 170px !important;
  width: 170px !important;
  max-width: 170px !important;
  min-width: 0 !important;
}

/*
  Vybavené vratky zostávajú v zozname — predajňa sa k nim vracia pri kontrole.
  Sú stlmené a nesú značku „✓ VYBAVENÉ", aby na prvý pohľad bolo jasné, na čom
  ešte treba pracovať a čo je zavreté.
*/
.wms-retlist-scroll tr.retlist-done { opacity: 0.68; }
.wms-retlist-scroll tr.retlist-done:hover { opacity: 1; }
.retlist-settled {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.04em;
  color: #15803d;
  margin-top: 2px;
}

/*
  Doklad vratky na celú obrazovku. Doklady majú 20–30 riadkov a v okne na
  1100 px sa v nich nedalo pracovať; tabuľka musí dostať celú výšku a rolovať
  vnútri, aby hlavička s verdiktom zostala vidieť.
*/
.wms-modal.wms-modal-cmp-full {
  width: 100%;
  max-width: none;
  height: 96vh;
  max-height: 96vh;
  margin: 0;
  display: flex;
  flex-direction: column;
  min-height: 0;
}
.wms-modal.wms-modal-cmp-full .wms-modal-body {
  flex: 1 1 0;
  min-height: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.wms-cmp-scroll { flex: 1 1 0; min-height: 0; overflow-y: auto; }
.wms-cmp-scroll thead th { position: sticky; top: 0; z-index: 2; background: var(--wms-card, #fff); }
/* riadok zoznamu je klikateľný — musí to byť vidieť */
.wms-retlist-scroll tr.retlist-row { cursor: pointer; }
.wms-retlist-scroll tr.retlist-row:hover { background: var(--wms-hover, #f8fafc); }

/*
  Súčty nad dokladom vratky: PP poslané · EXP prijaté · rozdiel. Doklad má
  29 riadkov a bez súčtov sa muselo sčítavať v hlave, aby bolo jasné, o čo ide.
*/
/*
  Jeden riadok nad dokladom vratky: prepínač pohľadov, súčty a verdikt vedľa
  seba. Tri pásy po sebe brali ~80 px a hovorili jednu vec.
*/
.pp-ret-head {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  flex-shrink: 0;
  margin: 0 0 5px;
}
.pp-ret-head .pp-ret-view-switch { order: 1; margin: 0; }
.pp-ret-head .pp-ret-cmp-summary { order: 2; flex: 1 1 320px; min-width: 0; margin: 0; }
.pp-ret-head .pp-ret-cmp-summary {
  display: flex;
  align-items: center;
  gap: 8px;
}
.pp-ret-head .pp-ret-cmp-cards { flex: 1 1 auto; min-width: 0; }
.pp-ret-head .pp-ret-cmp-verdict {
  order: 3;
  margin: 0;
  flex: 0 1 auto;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.pp-ret-cmp-summary { flex-shrink: 0; margin: 0 0 6px; }
.pp-ret-cmp-cards { display: flex; gap: 8px; flex-wrap: wrap; }
.pp-ret-cmp-card {
  flex: 1 1 190px;
  min-width: 0;
  border: 1px solid var(--wms-border);
  border-radius: 8px;
  padding: 6px 10px;
  background: var(--wms-card, #fff);
}
.pp-ret-cmp-card-accent { border-color: #f59e0b; background: #fffbeb; }
.pp-ret-cmp-val { font-size: 15px; font-weight: 700; }
.pp-ret-cmp-lbl { font-size: 10.5px; text-transform: uppercase; letter-spacing: 0.03em; color: var(--wms-muted); }
.pp-ret-cmp-verdict { font-size: 12.5px; margin-top: 5px; }

/*
  Nevybavené doklady VRATKA PP vypísané nad CSB vratkou, ktorá ešte nemá pár.
  Číslo a dátum vystavenia musia byť v tomto pohľade — inak sa musí odchádzať
  do zoznamu vratiek a hádať, ku ktorému dokladu CSB vratka patrí.
*/
.rcv-pp-open { margin-top: 6px; font-size: 12px; }
.rcv-pp-open-title { font-weight: 700; margin-bottom: 3px; }
.rcv-pp-open-row {
  display: flex;
  gap: 8px;
  align-items: center;
  flex-wrap: wrap;
  padding: 2px 0;
  border-top: 1px dotted var(--wms-border);
}

/* cesty von zo zablokovanej vratky — musia byť v banneri, nie schované v okne */
.rcv-vratka-actions { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 6px; }

/*
  Prepínač pohľadov na doklade vratky. ORIGINÁL je prvý a predvolený: je to
  doklad, ktorý predajňa vystavila, a kým vratka nie je zaúčtovaná, chodí sa
  k nemu najčastejšie. Porovnanie s expedíciou je druhý klik.
*/
.pp-ret-view-switch {
  display: flex;
  gap: 4px;
  flex-shrink: 0;
  margin: 0 0 6px;
}
.pp-ret-view-btn {
  border: 1px solid var(--wms-border);
  background: transparent;
  color: inherit;
  border-radius: 999px;
  padding: 4px 12px;
  font-size: 12.5px;
  font-weight: 600;
  cursor: pointer;
}
.pp-ret-view-btn span { font-weight: 400; opacity: 0.75; margin-left: 4px; }
.pp-ret-view-btn span.alarm { color: #dc2626; font-weight: 700; opacity: 1; }
.pp-ret-view-btn.active { background: var(--wms-primary, #2563eb); color: #fff; border-color: transparent; }
.pp-ret-view-btn.active span.alarm { color: #fff; }

/*
  Zaúčtovanie vratky je posledný krok procesu — tlačidlo stojí na konci riadku
  a je výraznejšie než „Opraviť" a „Zrušiť doklad", medzi ktorými sa predtým
  strácalo.
*/
.pp-ret-shortage {
  box-sizing: border-box; width: min(620px, calc(100% - 24px));
  max-height: calc(100dvh - 32px); overflow: auto; padding: 24px;
  border: 1px solid #e5d9d3; border-radius: 18px; background: #fffaf6; color: #202734;
}
.pp-ret-shortage::backdrop { background: rgb(0 0 0 / 45%); }
.pp-ret-shortage h2 { margin: 0 0 12px; font-size: 21px; }
.pp-ret-shortage p { line-height: 1.5; }
.pp-ret-shortage-item { padding: 12px 0; border-bottom: 1px solid #e5d9d3; overflow-wrap: anywhere; }
.pp-ret-shortage-item strong { display: block; margin-bottom: 6px; }
.pp-ret-shortage-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 20px; }
.pp-ret-shortage-actions .wms-btn { flex: 1 1 230px; min-height: 48px; white-space: normal; }
.pp-ret-actions-inner { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.pp-ret-book-btn {
  margin-left: auto;
  font-weight: 800;
  letter-spacing: 0.03em;
  padding: 7px 16px;
  font-size: 13.5px;
}

/*
  Vybavený riadok je stlmený, ale TLAČIDLÁ musia zostať čitateľné — inak
  vyzerajú vypnuté a používateľ ani neskúsi doklad otvoriť (hlásené 31. 8. 2026).
*/
.wms-retlist-scroll tr.retlist-done .wms-btn { opacity: 1; }

/*
  V ponuke listov nesmú byť vstupné polia: `wms-menu-item` je flex na celú
  šírku a pole vedľa neho rozhodilo riadok — text popisu skončil v úzkom
  stĺpci vedľa prázdneho rámčeka (hlásené 1. 9. 2026). Dátum aj mesiac sa
  preto berú z poľa „Denná inventúra", ktoré je na obrazovke vidieť.
*/

/*
  ══════════════════════════════════════════════════════════════════════════
  MALÉ ROZLÍŠENIA: HLAVIČKA NESMIE ZOŽRAŤ OBRAZOVKU

  Merané na 1280×800 v Párovaní vratiek: hlavička príjmu 80 px, lišta dozoru
  40 px, filtračná lišta 138 px (12 chipov sa lámalo do troch riadkov) a hlavička
  zoznamu 30 px — prvý riadok začínal na 437 px a na obrazovku sa zmestilo
  5 riadkov. Predajňa má monitory 1280×800 a 1366×768, takže sa v tom nedalo
  pracovať.

  Zásada: rozsah a filtre sa nastavujú raz, riadky sa čítajú stále — na malých
  obrazovkách preto všetko okolo riadkov schudne a chipy idú do jedného
  vodorovne rolovateľného riadku.
  ══════════════════════════════════════════════════════════════════════════
*/
@media (max-width: 1500px), (max-height: 900px) {
  /*
   * filtračná lišta: VŠETKO na jednom riadku, ktorý sa dá posunúť vodorovne.
   * Dátumy, hľadanie a 12 chipov potrebujú 1457 px; na 1280 px sa to inak
   * lámalo do troch riadkov (138 px) a riadky vratiek zostali pod okrajom.
   */
  .wms-retlist-bar { padding: 3px 8px; gap: 6px; flex-wrap: nowrap; align-items: center; overflow: visible; }
  .wms-retlist-bar .wms-input-xs { min-height: 24px; padding-top: 1px; padding-bottom: 1px; font-size: 12px; }
  .wms-retlist-bar #retlist-search { flex: 0 0 120px !important; width: 120px !important; max-width: 120px !important; }
  .wms-retlist-bar .wms-btn-xs { padding: 1px 7px; font-size: 11.5px; min-height: 24px; }
  .wms-retlist-sel { min-width: 10.5rem; max-width: 12.5rem; font-size: 12px; }
  .wms-retlist-sum { font-size: 11.5px; }
  /*
   * Pod 1100 px sa už lišta nezmestí (merané: 906 px obsahu na 884 px), preto
   * z popisov zostane len to, čo nesie význam — „všetky" a obálka. Zvyšok je
   * v tooltipe.
   */
  @media (max-width: 1100px) {
    .wms-retlist-bar .wms-lbl-wide { display: none; }
    .wms-retlist-bar #retlist-from,
    .wms-retlist-bar #retlist-to { width: 112px; }
  }

  /* dozorná lišta: dlhý text o SLA je informácia, nie práca — zostane v tooltipe */
  .wms-retsum-bar { padding: 4px 8px; gap: 6px; }
  .wms-retsum-range { display: none; }

  /* hlavička príjmu a fronta dokladov: menšie odsadenia, nie menšie písmo */
  #wms-rcv-header { padding-top: 4px; padding-bottom: 4px; }
  .wms-rcv-queue-tab { padding: 3px 8px; font-size: 12px; }

  /* zoznam vratiek dostane viac výšky, keď je hlavička nižšia */
  .wms-retlist-scroll { max-height: 66vh; }

  /*
   * OTVORENÝ DOKLAD: pás dokladu nesmie mať tri riadky.
   *
   * Merané na 1024×800 na vratke VRPP-F001-20260831-001: pás 112 px, pretože
   * „✕ Zrušiť" sa cez `space-between` odtlačilo na tretí riadok samo, a súčty
   * 72 px, lebo hodnota a popis stáli pod sebou. Prvý riadok tabuľky začínal
   * na 513 px — na obrazovku sa zmestili DVA riadky dokladu.
   *
   * Zásada je rovnaká ako pri filtroch: hlavička sa číta raz, riadky stále.
   */
  #rcv-selected-info,
  .wms-rcv-doc-strip {
    margin-top: 3px;
    padding: 3px 7px;
    gap: 4px 6px;
    flex-wrap: nowrap;        /* „✕ Zrušiť" zostáva vpravo pri obsahu */
    align-items: flex-start;
  }
  #rcv-selected-info .wms-rcv-doc-strip-main,
  .wms-rcv-doc-strip .wms-rcv-doc-strip-main {
    flex: 1 1 0;
    min-width: 0;
    gap: 3px 6px;
  }
  .wms-rcv-doc-strip .wms-btn-xs { padding: 2px 6px; font-size: 11.5px; min-height: 22px; }
  .wms-rcv-doc-strip .wms-ico { width: 14px; height: 14px; }
  .wms-rcv-doc-sort,
  .wms-rcv-doc-date-edit { font-size: 11.5px; gap: 4px; }
  .wms-rcv-doc-sort select { min-width: 8.2rem; height: 24px; font-size: 11.5px; }
  .wms-rcv-doc-date-edit .wms-input,
  .wms-rcv-doc-date-edit .wms-input-sm { min-width: 7.6rem; height: 24px; font-size: 11.5px; }

  /* akčné tlačidlá hlavičky (VRATKA PP, PRÍJEM BEZ OBJ…) — nižšie, nie menšie */
  #wms-rcv-header .wms-rcv-toolbar-actions .wms-btn { padding-top: 3px; padding-bottom: 3px; min-height: 24px; }

  /*
   * Súčty vratky: hodnota a popis vedľa seba v jednom riadku (3 karty × 24 px
   * namiesto 72 px). Číslo zostáva výrazné, len sa už nečíta zhora dolu.
   */
  .pp-ret-cmp-summary { margin-bottom: 4px; }
  .pp-ret-cmp-cards { gap: 5px; flex-wrap: nowrap; overflow-x: auto; }
  .pp-ret-cmp-card {
    display: flex;
    align-items: baseline;
    gap: 5px;
    padding: 2px 8px;
    flex: 1 1 0;
    white-space: nowrap;
  }
  .pp-ret-cmp-val { font-size: 13.5px; }
  .pp-ret-cmp-lbl { font-size: 9.5px; overflow: hidden; text-overflow: ellipsis; }
  .pp-ret-cmp-verdict { margin-top: 2px; font-size: 12px; }

  /* prepínač pohľadov: pilulky nižšie, text rovnaký */
  .pp-ret-view-switch { margin-bottom: 4px; }
  .pp-ret-view-btn { padding: 2px 10px; font-size: 12px; }

  /* banner nad dokladom nesie stav — stačí mu jeden tesný riadok */
  #rcv-doc-banner,
  .wms-rcv-doc-banner { padding: 3px 8px; font-size: 12px; }

  /*
   * V páse dokladu zostane to, čo sa robí (dátum, poradie, tlač) a čo sa nedá
   * dočítať inde. Popisy „Poradie", „Foto dokladu", dátum vystavenia a typ
   * dokladu idú do tooltipu — pás sa tým zmestí na jeden-dva riadky namiesto
   * troch. Dodávateľ pri vratke je vždy Istermeat, predajňa je to podstatné.
   */
  .wms-rcv-doc-strip .wms-lbl-wide { display: none; }
  .wms-rcv-vratka .wms-rcv-doc-strip #rcv-sel-supplier { display: none; }
}

/* Prehľad po firmách nad tabuľkou návrhu — objednáva sa firma po firme. */
.wms-orders-suppliers {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  padding: 8px 0 2px;
  border-top: 1px solid var(--wms-border, #e5e7eb);
  margin-top: 8px;
}

.wms-orders-sup-chip {
  /* .plain-btn (vyníma sa z globálneho červeného tlačidla) je display:block
     na celú šírku — čip musí byť malý, preto sa šírka aj zarovnanie vracajú */
  display: inline-flex;
  width: auto;
  text-align: center;
  align-items: center;
  gap: 6px;
  padding: 4px 10px;
  border: 1px solid var(--wms-border, #e5e7eb);
  border-radius: 999px;
  background: #fff;
  font-size: 12px;
  line-height: 1.4;
  color: var(--wms-text, #111827);
  cursor: pointer;
}

.wms-orders-sup-chip:hover { border-color: #9ca3af; }

.wms-orders-sup-chip.is-active {
  background: #b91c1c;
  border-color: #b91c1c;
  color: #fff;
}

.wms-orders-sup-chip-n {
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}

.wms-orders-sup-chip:not(.is-active) .wms-orders-sup-chip-n { color: #b91c1c; }

/* Dodávateľ bez mailu — objednávka sa uloží, ale nikam neodíde. */
.wms-orders-sup-chip-warn {
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  padding: 1px 5px;
  border-radius: 6px;
  background: #fef3c7;
  color: #92400e;
}

.wms-orders-sup-chip.is-active .wms-orders-sup-chip-warn { background: #fde68a; color: #7c2d12; }

/* Dodávateľ, ktorý dnes nič nečaká — nech neprekáža, ale nech sa dá otvoriť. */
.wms-orders-sup-chip.is-empty { opacity: 0.5; }
.wms-orders-sup-chip.is-empty .wms-orders-sup-chip-n { color: var(--wms-muted, #6b7280); }

/* Položky bez dodávateľa: nie je to filter, je to upozornenie. */
.wms-orders-sup-chip.is-orphan {
  cursor: default;
  border-style: dashed;
  border-color: #f59e0b;
  background: #fffbeb;
  color: #92400e;
}
.wms-orders-sup-chip.is-orphan .wms-orders-sup-chip-n { color: #b45309; }

/* Detail objednávky rozbalený priamo v zozname (nie v okne). */
tr.wms-po-row-open > td { background: #fef2f2; }

.wms-po-detail-row > td { background: #fafafa; padding: 0 !important; }

.wms-po-detail-panel {
  padding: 14px 16px 16px;
  border-left: 3px solid #b91c1c;
}

.wms-po-detail-head {
  margin: 0 0 12px;
  font-size: 12.5px;
  line-height: 1.6;
}

.wms-po-detail-note { margin-top: 12px; font-size: 13px; }

.wms-po-detail-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin-top: 14px;
}

/* .wms-sel je width:100% — bez tohto by výber statusu roztiahol celý riadok
   a tlačidlá by spadli pod neho */
.wms-po-detail-actions select {
  width: 190px;
  max-width: 190px;
  flex: 0 0 auto;
}

/*
 * Radenie číselníka tovarov klikom na hlavičku.
 *
 * Objednávky mali `wms-th-sortable` len vo vlastnej tabuľke, tovar radenie
 * nemal vôbec — číslo PRD sa nedalo zoradiť. Kurzor a podčiarknutie musia
 * povedať, že sa dá kliknúť; bez toho to nikto neskúsi.
 */
/* ─────────────────────────────────────────────────────────────────────────────
   MOP → NÁKUP: JEDEN PRÍJEM = JEDEN RIADOK

   Zoznam má stovky príjmov a rozhoduje, koľko riadkov je na obrazovke naraz.
   Názov artikla je pritom dlhý („Kysnutý závin s makovou náplňou 453g") a keď
   sa zabalí do piatich riadkov, na obrazovku sa zmestia štyri príjmy. Preto
   sa nezalamuje nič a názov sa reže tri bodky — celý je v bublinke a v exporte.

   `max-width` MUSÍ byť na `td`: bez nej `text-overflow` nemá čo skrátiť,
   pretože buňka tabuľky sa roztiahne podľa obsahu a `overflow: hidden` na nej
   nič neurobí.
   ───────────────────────────────────────────────────────────────────────────── */
.nakup-table td,
.nakup-table th { white-space: nowrap; }

.nakup-table td.nakup-cell-artikel { max-width: 26rem; }
.nakup-table td.nakup-cell-clip { max-width: 12rem; overflow: hidden; text-overflow: ellipsis; }

.nakup-artikel-link {
  display: block;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  padding: 0;
  border: 0;
  background: none;
  font: inherit;
  color: var(--wms-primary, #b91c1c);
  text-align: left;
  cursor: pointer;
}
.nakup-artikel-link:hover { text-decoration: underline; }

/* ─────────────────────────────────────────────────────────────────────────────
   SKLADOVÁ KARTA — ZLOŽENÉ INVENTÚRY NA KONCI

   Karta sa otvára pre pohyby a zostatky; inventúr je na starších artikloch aj
   dvadsať a tlačili to hlavné mimo obrazovky. Sú preto posledné a zabalené.
   `list-style: none` na summary kvôli Safari, ktoré si inak kreslí vlastnú
   trojuholníkovú značku vedľa našej.
   ───────────────────────────────────────────────────────────────────────────── */
.wms-sbm-inv-fold > summary {
  display: flex;
  align-items: baseline;
  gap: 10px;
  cursor: pointer;
  list-style: none;
  padding: 2px 0;
}
.wms-sbm-inv-fold > summary::-webkit-details-marker { display: none; }
.wms-sbm-inv-fold > summary::before {
  content: '▸';
  color: var(--wms-subtle, #6b7280);
  font-size: 11px;
  transition: transform .15s ease;
}
.wms-sbm-inv-fold[open] > summary::before { content: '▾'; }
.wms-sbm-inv-fold > summary:hover .wms-stock-card-section-title { color: var(--wms-primary, #b91c1c); }
.wms-sbm-inv-fold > .wms-sbm-inv-list { margin-top: 10px; }

.wms-table th.wms-th-sort {
  cursor: pointer;
  user-select: none;
  white-space: nowrap;
}
.wms-table th.wms-th-sort:hover {
  color: var(--wms-red, #B91C1C);
  text-decoration: underline;
}
.wms-table th.wms-th-sort--on {
  color: var(--wms-red, #B91C1C);
}

/* ───────────────────────────────────────────────────────────────────────────
   LABORATÓRIUM — zvyklosti zákazníkov a register rozhodnutí (len super_admin)
   Grafy sú pruhy z CSS: čísla majú byť čitateľné a porovnateľné medzi
   predajňami, dekorácia by zavádzala.
   ─────────────────────────────────────────────────────────────────────────── */
.lab .lab-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; flex-wrap: wrap; margin-bottom: 10px; }
.lab .lab-head h2 { margin: 0 0 2px; font-size: 18px; }
.lab .lab-head p { margin: 0; font-size: 13px; max-width: 640px; }
.lab .lab-filtre { display: flex; gap: 10px; align-items: flex-end; }
.lab .lab-filtre label { display: flex; flex-direction: column; gap: 3px; font-size: 11px; color: var(--wms-muted); text-transform: uppercase; letter-spacing: .04em; }
.lab .lab-filtre .wms-sel { min-width: 150px; }
.lab .lab-zalozky { display: flex; gap: 4px; border-bottom: 1px solid var(--wms-border); margin-bottom: 14px; }
.lab .lab-zalozka { border: 0; background: transparent; padding: 9px 14px; font-size: 14px; font-weight: 600; color: var(--wms-muted); cursor: pointer; border-bottom: 2px solid transparent; margin-bottom: -1px; }
.lab .lab-zalozka.aktivna { color: var(--wms-primary, #b91c1c); border-bottom-color: var(--wms-primary, #b91c1c); }
.lab .lab-tab { font-size: 13px; margin-bottom: 8px; }
.lab .lab-pozn { font-size: 12px; margin: 4px 0 14px; }
.lab .lab-mriezka { display: grid; grid-template-columns: repeat(auto-fit, minmax(340px, 1fr)); gap: 14px; margin-bottom: 14px; }
.lab .lab-blok { background: var(--wms-surface); border: 1px solid var(--wms-border); border-radius: 10px; padding: 12px 14px; }
.lab .lab-blok-siroky { grid-column: 1 / -1; margin-bottom: 14px; }
.lab .lab-blok h4 { margin: 0 0 8px; font-size: 13px; }
.lab .lab-r { display: flex; align-items: center; gap: 8px; font-size: 12.5px; padding: 2px 0; font-variant-numeric: tabular-nums; }
.lab .lab-k { flex: 0 0 44px; color: var(--wms-muted); }
.lab .lab-k-siroky { flex: 0 0 200px; color: var(--wms-text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lab .lab-v { flex: 0 0 auto; min-width: 46px; text-align: right; }
.lab .lab-pruh { flex: 1 1 auto; height: 12px; background: var(--wms-bg2); border-radius: 3px; overflow: hidden; display: inline-block; vertical-align: middle; }
.lab .lab-pruh > span { display: block; height: 100%; border-radius: 3px; }
.lab .lab-tab .lab-pruh { width: 120px; flex: none; margin-right: 6px; }
.lab .lab-karty { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 12px; margin-bottom: 14px; }
.lab .lab-karta { background: var(--wms-surface); border: 1px solid var(--wms-border); border-radius: 10px; padding: 12px 14px; font-size: 12.5px; }
.lab .lab-cislo { font-size: 24px; font-weight: 700; font-variant-numeric: tabular-nums; margin-bottom: 2px; }
.lab .lab-zle { color: #b91c1c; }
.lab .lab-dobre { color: #047857; }
.lab .lab-pozor { color: #b45309; font-weight: 600; }
.lab .lab-row-click { cursor: pointer; }
.lab .lab-row-click:hover td { background: var(--wms-bg2); }
.lab .lab-row-sub > td { background: var(--wms-bg); }
.lab .lab-ucinok { font-size: 12.5px; line-height: 1.6; padding: 4px 2px; }
.lab .lab-form .lab-form-mriezka { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.lab .lab-form label { display: flex; flex-direction: column; gap: 3px; font-size: 11px; color: var(--wms-muted); text-transform: uppercase; letter-spacing: .04em; }
.lab .lab-form label > .wms-input, .lab .lab-form label > .wms-sel { text-transform: none; letter-spacing: 0; font-size: 13px; }
.lab .lab-form .lab-siroke { grid-column: 1 / -1; }
.lab .lab-form-akcie { display: flex; justify-content: flex-end; margin-top: 10px; }
.lab .lab-stav-planovane { background: #e0f2fe; color: #075985; }
.lab .lab-stav-bezi { background: #fef3c7; color: #92400e; }
.lab .lab-stav-vyhodnotene { background: #d1fae5; color: #065f46; }
.lab .lab-stav-zrusene { background: #f3f4f6; color: #6b7280; }
@media (max-width: 700px) {
  .lab .lab-form .lab-form-mriezka { grid-template-columns: 1fr 1fr; }
  .lab .lab-k-siroky { flex-basis: 130px; }
  .lab .lab-tab .lab-pruh { width: 60px; }
}
/* Vypredania v Laboratóriu — príčina ako farebný štítok, opatrenie ako veta */
.lab .lab-pricina { display: inline-block; color: #fff; font-size: 11px; font-weight: 600; padding: 2px 7px; border-radius: 999px; white-space: nowrap; }
.lab .lab-opatrenie { font-size: 12px; line-height: 1.4; max-width: 420px; }
.lab .lab-vypredania td { vertical-align: top; }
/* Denný rad testu motora — vlajka zmeny pod dňom, čísla zarovnané */
.lab .lab-rad td { font-variant-numeric: tabular-nums; vertical-align: top; }
.lab .lab-vlajka { font-size: 11px; color: #92400e; background: #fef3c7; border-radius: 4px; padding: 1px 6px; margin-top: 3px; display: inline-block; }

/* Tlačiarne predajní — blok na predajňu a výber druhov dokladov v riadku */
.wms-print-predajna { margin: 14px 0 6px; }
.wms-print-predajna h3 { margin: 0 0 6px; font-size: 14px; }
.wms-print-predajna h3 .muted { font-weight: 400; font-size: 12.5px; }
/* riadok s tlačiarňami je široký; na úzkom okne sa musí dať posunúť do strán,
   inak okraj karty odreže tlačidlá Uložiť a Vymazať */
.wms-print-predajna { overflow-x: auto; }
.wms-print-tab { min-width: 980px; }
.wms-print-druhy { display: flex; flex-wrap: wrap; gap: 2px 8px; font-size: 11.5px; }
.wms-print-druhy label { display: inline-flex; align-items: center; gap: 3px; white-space: nowrap; }
.wms-print-druhy input { margin: 0; }

/* Teploty predajne — karty snímačov, graf a nastavenie hraníc */
.tpl .tpl-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; flex-wrap: wrap; margin-bottom: 12px; }
.tpl .tpl-head h2 { margin: 0 0 2px; font-size: 17px; }
.tpl .tpl-head p { margin: 0; font-size: 13px; max-width: 60ch; }
.tpl .tpl-vyber { display: flex; flex-direction: column; gap: 3px; font-size: 11px; color: var(--wms-muted); text-transform: uppercase; letter-spacing: .04em; }
.tpl .tpl-suhrn { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 12px; }
.tpl .tpl-s { background: var(--wms-surface); border: 1px solid var(--wms-border); border-radius: 10px; padding: 8px 14px; font-size: 12.5px; }
.tpl .tpl-s strong { font-size: 18px; display: block; font-variant-numeric: tabular-nums; }
.tpl .tpl-dobre strong { color: #047857; }
.tpl .tpl-zle strong { color: #b91c1c; }
.tpl .tpl-karty { display: grid; grid-template-columns: repeat(auto-fit, minmax(340px, 1fr)); gap: 12px; margin-bottom: 16px; }
.tpl .tpl-karta { background: var(--wms-surface); border: 1px solid var(--wms-border); border-radius: 12px; padding: 12px 14px; }
.tpl .tpl-karta-hlava { display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; }
.tpl .tpl-karta h3 { margin: 0; font-size: 14px; }
.tpl .tpl-mac { font-size: 11.5px; margin-top: 2px; }
.tpl .tpl-teplota { font-size: 26px; font-weight: 700; line-height: 1.05; text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.tpl .tpl-stav { font-size: 11px; font-weight: 500; color: var(--wms-muted); }
.tpl .tpl-riadok { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; margin-top: 10px; }
.tpl .tpl-chip { font-size: 11.5px; background: var(--wms-bg2); border-radius: 999px; padding: 2px 9px; white-space: nowrap; }
.tpl .tpl-chip-alarm { background: #fee2e2; color: #991b1b; }
.tpl .tpl-detail { border-top: 1px solid var(--wms-border); margin-top: 10px; padding-top: 10px; }
.tpl .tpl-graf { width: 100%; height: 150px; display: block; margin-bottom: 8px; }
.tpl .tpl-obdobie { display: flex; gap: 4px; margin-bottom: 6px; flex-wrap: wrap; }
/* plain-btn je blokový cez celú šírku — obdobia musia stáť vedľa seba */
.tpl .tpl-ob { font-size: 11.5px; padding: 3px 11px; border-radius: 999px; background: var(--wms-bg2);
  display: inline-block; width: auto; flex: 0 0 auto; }
.tpl .tpl-ob.aktivne { background: var(--wms-primary, #b91c1c); color: #fff; }
.tpl .tpl-form { display: flex; gap: 8px; align-items: flex-end; flex-wrap: wrap; margin-top: 8px; }
.tpl .tpl-form label { display: flex; flex-direction: column; gap: 2px; font-size: 10.5px; color: var(--wms-muted); text-transform: uppercase; letter-spacing: .03em; }
.tpl .tpl-form .wms-input { width: 110px; text-transform: none; letter-spacing: 0; font-size: 13px; }
.tpl .tpl-form .tpl-chk { flex-direction: row; align-items: center; gap: 5px; text-transform: none; letter-spacing: 0; font-size: 12.5px; }
.tpl .tpl-uvolni { font-size: 11.5px; color: #b91c1c; margin-top: 10px; text-decoration: underline; }
.tpl .tpl-odkaz { font-size: 13px; color: var(--wms-primary, #b91c1c); text-decoration: underline; }
.tpl .tpl-volne { background: var(--wms-surface); border: 1px solid var(--wms-border); border-radius: 12px; padding: 12px 14px; overflow-x: auto; }
.tpl .tpl-volne h3 { margin: 0 0 4px; font-size: 14px; }
@media (max-width: 700px) {
  .tpl .tpl-karty { grid-template-columns: 1fr; }
  .tpl .tpl-form .wms-input { width: 96px; }
}

/* Zamestnanecké zľavy — fronta žiadostí */
.zam .zam-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; flex-wrap: wrap; margin-bottom: 12px; }
.zam .zam-head h2 { margin: 0 0 2px; font-size: 17px; }
.zam .zam-head p { margin: 0; font-size: 13px; max-width: 64ch; }
.zam .zam-zalozky { display: flex; gap: 4px; flex-wrap: wrap; }
.zam .zam-zalozka { font-size: 12.5px; padding: 4px 12px; border-radius: 999px; background: var(--wms-bg2); display: inline-block; width: auto; }
.zam .zam-zalozka.aktivna { background: var(--wms-primary, #b91c1c); color: #fff; }
.zam .zam-karty { display: grid; grid-template-columns: repeat(auto-fit, minmax(420px, 1fr)); gap: 12px; }
.zam .zam-karta { background: var(--wms-surface); border: 1px solid var(--wms-border); border-radius: 12px; padding: 12px 14px; }
.zam .zam-karta-hlava { display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; }
.zam .zam-karta h3 { margin: 0; font-size: 14px; }
.zam .zam-pod { font-size: 11.5px; margin-top: 2px; }
.zam .zam-zhoda { font-size: 22px; font-weight: 700; text-align: right; line-height: 1.1; font-variant-numeric: tabular-nums; white-space: nowrap; }
.zam .zam-zhoda-pod { font-size: 10.5px; font-weight: 500; color: var(--wms-muted); }
.zam .zam-udaje { display: flex; flex-wrap: wrap; gap: 4px 14px; margin-top: 8px; font-size: 12.5px; }
.zam .zam-udaje strong { color: var(--wms-muted); font-weight: 500; font-size: 11px; text-transform: uppercase; letter-spacing: .03em; display: block; }
.zam .zam-akcie { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin-top: 10px; padding-top: 9px; border-top: 1px solid var(--wms-border); }
.zam .zam-akcie label { display: flex; align-items: center; gap: 5px; font-size: 12px; color: var(--wms-muted); }
.zam .zam-zamietni { font-size: 12px; color: #b91c1c; text-decoration: underline; width: auto; display: inline-block; }
.zam .zam-vysledok { margin-top: 9px; padding-top: 8px; border-top: 1px solid var(--wms-border); font-size: 12.5px; }
@media (max-width: 700px) { .zam .zam-karty { grid-template-columns: 1fr; } }

/* HACCP — denný záznam teplôt ako dôkaz */
.hac .hac-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; flex-wrap: wrap; margin-bottom: 12px; }
.hac .hac-head h2 { margin: 0 0 2px; font-size: 17px; }
.hac .hac-head p { margin: 0; font-size: 13px; max-width: 66ch; }
.hac .hac-filtre { display: flex; gap: 10px; align-items: flex-end; flex-wrap: wrap; }
.hac .hac-filtre label { display: flex; flex-direction: column; gap: 3px; font-size: 11px; color: var(--wms-muted); text-transform: uppercase; letter-spacing: .04em; }
.hac .hac-suhrn { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 8px; }
.hac .hac-s { background: var(--wms-surface); border: 1px solid var(--wms-border); border-radius: 10px; padding: 8px 14px; font-size: 12.5px; }
.hac .hac-s strong { font-size: 18px; display: block; font-variant-numeric: tabular-nums; }
.hac .hac-ok-t strong { color: #047857; }
.hac .hac-zle-t strong { color: #b91c1c; }
.hac .hac-limit { font-size: 12px; margin: 0 0 2px; }
.hac .hac-tab td { font-variant-numeric: tabular-nums; }
.hac .hac-zle td { background: #fef2f2; }
.hac .hac-op { font-size: 12.5px; }
.hac .hac-form-row td { background: var(--wms-bg2); }
.hac .hac-form { display: flex; gap: 10px; align-items: flex-end; flex-wrap: wrap; padding: 4px 0; }
.hac .hac-form label { display: flex; flex-direction: column; gap: 3px; font-size: 11px; color: var(--wms-muted); text-transform: uppercase; letter-spacing: .03em; }
.hac .hac-form .wms-input { width: 260px; text-transform: none; letter-spacing: 0; font-size: 13px; }
/* Tlač je dôkaz pre kontrolu — filtre a tlačidlá na papier nepatria. */
@media print {
  .hac .hac-filtre, .hac .hac-form-row, .hac .wms-btn { display: none !important; }
  .hac .hac-zle td { background: #fff; }
  .hac .hac-tab { font-size: 11px; }
}
@media (max-width: 700px) { .hac .hac-form .wms-input { width: 100%; } }


/*
 * MOBILNÁ INVENTÚRA NA TELEFÓNE: CHROME SA MUSÍ ZMESTIŤ.
 *
 * Merané 16. 9. 2026 na 360×640 ako vedúca predajne: hlavička 101 +
 * upozornenia 46 + akcie 69 + hľadanie s kategóriou 140 = 356 px zo 448,
 * takže na zoznam ostalo OSEM pixelov — a v nich 61 000 px obsahu.
 * Vyzeralo to ako prázdna obrazovka bez tlačidla na uloženie; v skutočnosti
 * bol celý zoznam aj so spočítanými položkami natlačený do prúžka.
 *
 * Kompaktné pravidlá pre tieto tri pásy existovali, ale boli zamknuté
 * v `@media (min-width: 769px)` — teda len pre počítač. Telefón dostal
 * základné rozloženie, kde sa všetko stohuje pod seba.
 */
@media (max-width: 700px) {
  /* Obnovovacie tlačidlo patrí do riadku k výberom. V mriežke 1fr 1fr padalo
     do druhého riadku a samo si vypýtalo 45 px. */
  #wms-mobile-inventory .wms-mobile-inv-header {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto;
    gap: 6px;
    padding: 6px 10px;
  }
  #wms-mobile-inventory .wms-mobile-inv-header .wms-sel {
    min-height: 36px;
    padding: 6px 8px;
    font-size: 12.5px;
  }

  /* Hľadanie a kategória vedľa seba — pod sebou brali 140 px, čo je pri
     448 px plochy tretina obrazovky na dve políčka. */
  #wms-mobile-inventory .wms-minv-quick-row {
    display: grid;
    /* Pravá bunka nesie kategóriu AJ „Ďalšie filtre", preto je širšia —
       pri 1,5fr/1fr sa z „Všetky kategórie" zobrazilo len „Vš". */
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.25fr);
    gap: 6px;
    padding: 6px 10px;
  }
  #wms-mobile-inventory .wms-minv-quick-row .wms-minv-search-row {
    padding: 0;
    border-bottom: 0;
  }
  #wms-mobile-inventory .wms-minv-quick-row .wms-input,
  #wms-mobile-inventory .wms-minv-quick-row .wms-sel {
    min-height: 36px;
    padding: 6px 8px;
    font-size: 12.5px;
  }

  #wms-mobile-inventory .wms-minv-actions-grid { padding: 6px 10px; gap: 6px; }
  #wms-mobile-inventory .wms-mobile-btn-sm { min-height: 36px; font-size: 12px; }
}

  /*
   * „Ďalšie filtre" patrí vedľa kategórie, nie pod ňu. Zatvorené zaberalo
   * vlastný riadok (36 + 34 px v jednej bunke) a zjedlo 42 px zo zoznamu.
   * Po rozbalení sa roztiahne na celú šírku bunky — vtedy tú výšku naozaj
   * potrebuje, lebo sú v ňom štyri výbery a hľadanie.
   */
@media (max-width: 700px) {
  #wms-mobile-inventory .wms-minv-quick-row > .wms-minv-search-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 6px;
    align-items: start;
  }
  #wms-mobile-inventory .wms-minv-quick-row > .wms-minv-search-row > details[open] {
    grid-column: 1 / -1;
  }
}

/*
 * OTVORENÝ DOKLAD MÁ INÉ TLAČIDLÁ NEŽ ZOZNAM.
 *
 * V hlavičke príjmu stáli vedľa seba akcie dvoch úplne rôznych svetov:
 * „VRATKA PP", „PRÍJEM BEZ OBJ" a „DL / CSB" ZAKLADAJÚ NOVÝ doklad, kým
 * „+ Položka", „Tlačiť" či „Storno" patria tomu, ktorý je práve otvorený.
 * Vedľa seba pôsobili ako rovnocenné voľby a predajňa z otvorenej príjemky
 * od Kukkonie zakladala novú vratku.
 *
 * Preto sa pri otvorenom doklade akcie zoznamu skryjú — presne ako to už
 * vyzerá pri zaúčtovanom doklade zo CSB, kde zostane len zelený pás
 * s vratkou, stornom a zavretím. Trieda `wms-rcv-doc-open` sa nastavuje
 * v `setReceivingQueueCollapsed` podľa `receivingHasOpenDoc()`.
 */
#wms-pane-receiving .wms-page.wms-rcv-doc-open #rcv-pp-return-btn,
#wms-pane-receiving .wms-page.wms-rcv-doc-open #rcv-general-btn,
#wms-pane-receiving .wms-page.wms-rcv-doc-open #rcv-photo-btn,
#wms-pane-receiving .wms-page.wms-rcv-doc-open #rcv-csb-dl-btn,
#wms-pane-receiving .wms-page.wms-rcv-doc-open #rcv-in-transit-btn {
  display: none;
}

/* Krížik na zrušenie spočítanej položky — malý, aby sa neplietol s počtom,
   ale s dosť veľkou dotykovou plochou na telefón. */
.minv-counted-del {
  border: 1px solid #FCA5A5;
  background: #FEF2F2;
  color: #B91C1C;
  border-radius: 6px;
  min-width: 30px;
  min-height: 30px;
  font-size: 13px;
  line-height: 1;
  cursor: pointer;
  margin-top: 4px;
}
.minv-counted-del:hover { background: #FEE2E2; }

/*
 * ÚZKE OKNO: HLAVIČKY PRÍJMU A EXPIRÁCIÍ NESMÚ ODTLAČIŤ ZOZNAM.
 *
 * Merané 16. 9. 2026 pri 600×900 — koľko treba prerolovať, kým sa ukáže
 * prvý riadok zoznamu:
 *     Zásoby     389 px   (filtre sa zbalia)
 *     Príjem     579 px
 *     Expirácie  654 px
 *
 * Samotné rolovanie je pritom v poriadku a rovnaké na všetkých troch —
 * pri úzkom okne roluje celý panel. Rozdiel robí to, čo stojí NAD zoznamom,
 * a nie sú to polia (tie sú už v dvoch stĺpcoch), ale TLAČIDLÁ: v príjme
 * sedem akcií plus päť záložiek, v expiráciách sedem tlačidiel po 40 px.
 */
@media (max-width: 700px) {
  /* akcie a záložky príjmu: nižšie a hustejšie, nech sa vojdú do dvoch radov */
  #wms-rcv-header .wms-btn,
  #wms-pane-expiry .wms-expiry-toolbar .wms-btn {
    min-height: 32px;
    padding: 4px 8px;
    font-size: 12px;
  }
  #wms-rcv-header .wms-rcv-toolbar-actions,
  #wms-pane-expiry .wms-expiry-toolbar {
    row-gap: 4px;
    column-gap: 4px;
  }
  #wms-rcv-header .wms-label {
    font-size: 10.5px;
    line-height: 1.15;
  }
  #wms-rcv-header .wms-rcv-toolbar-grid { gap: 4px 6px; }

  /* tlač má tri tlačidlá pod sebou — na úzkom okne stačia vedľa seba */
  #wms-pane-expiry .wms-print-btns {
    flex-direction: row;
    flex-wrap: wrap;
    gap: 4px;
  }
}

/*
 * NA TELEFÓNE SA MUSÍ DAŤ ROLOVAŤ PRSTOM PO CELEJ OBRAZOVKE.
 *
 * Vnútorné obaly tabuliek majú `overscroll-behavior: contain`, aby na
 * počítači roloval zoznam a nie stránka pod ním. Na telefóne je ale
 * scrollerom celý panel (`.wms-page-pane` má `overflow-y: auto`) a `contain`
 * znamená, že keď obal nemá kam rolovať, gesto sa naň zastaví a NEPRENESIE
 * sa na panel — prst ťahá po zozname a nič sa nehýbe.
 *
 * `auto` reťazenie vráti: keď vnútro dorolovalo, pokračuje panel. Vodorovný
 * scroll zostáva (preto sa nesiaha na `overflow`, len na reťazenie) —
 * `overflow-y: visible` by ho zrušil, lebo keď jedna os nie je visible,
 * druhá sa dopočíta na auto.
 */
@media (max-width: 700px) {
  #adminMainShell.loyalty-module-wms .wms-table-wrap,
  #adminMainShell.loyalty-module-wms #wms-rcv-items-wrap,
  #adminMainShell.loyalty-module-wms .pp-ret-items-wrap,
  #adminMainShell.loyalty-module-wms .wms-rcv-queue-table-wrap {
    overscroll-behavior: auto;
  }
}

/*
 * ZBALENÁ HLAVIČKA PRÍJMU A EXPIRÁCIÍ — rovnaký vzor ako v Zásobách.
 *
 * Merané pri 600×900: prvý riadok zoznamu bol v Zásobách na 389 px,
 * v Príjme na 579 a v Expiráciách na 654. Rolovanie bolo pritom na všetkých
 * troch rovnaké — rozhodovala výška toho, čo stojí nad zoznamom.
 *
 * Polia sa SKRÝVAJÚ, nie mažú: hodnoty v nich platia ďalej a po rozbalení
 * sú presne také, aké boli.
 */

/* PRÍJEM — zostane predajňa a číslo dokladu, teda to, čím sa doklad zakladá */
#wms-pane-receiving .wms-page.wms-rcv-filters-folded .wms-rcv-toolbar-grid > * {
  display: none;
}
#wms-pane-receiving .wms-page.wms-rcv-filters-folded .wms-rcv-toolbar-grid > .wms-rcv-field:first-child,
#wms-pane-receiving .wms-page.wms-rcv-filters-folded .wms-rcv-toolbar-grid > .wms-rcv-field-dl {
  display: revert;
}
#wms-pane-receiving .wms-page.wms-rcv-filters-folded .wms-rcv-toolbar-actions {
  display: none;
}
/*
 * AKCIE PRÍJMU OSTÁVAJÚ AJ V ZBALENEJ HLAVIČKE (28. 9. 2026).
 * Zbalenie skrýva polia, nie prácu: bez tohto zmizli VRATKA PP, DL, CSB,
 * PRÍJEM BEZ OBJ a „+ Položka". Nový iPad v Komárne mal hlavičku zbalenú
 * od prvého otvorenia (Safari na šírku má okno nižšie než 800 px) a
 * predajňa to hlásila ako „stratené práva na ručný príjem".
 */
#wms-pane-receiving .wms-page.wms-rcv-filters-folded .wms-rcv-toolbar-grid > .wms-rcv-toolbar-actions-main {
  display: flex;
}
/*
 * DODÁVATEĽ OSTÁVA AJ V ZBALENEJ HLAVIČKE (30. 9. 2026).
 * Povodská na telefóne: „chýba tlačidlo na výber dodávateľa, doteraz tam
 * bolo". VRATKA PP aj PRÍJEM BEZ OBJ ho potrebujú — bez neho hlásili
 * „vyberte dodávateľa hore" a hore nebolo čo vybrať. Doklad sa zakladá
 * predajňou, dodávateľom a číslom, tak tieto tri zostávajú.
 */
#wms-pane-receiving .wms-page.wms-rcv-filters-folded .wms-rcv-toolbar-grid > #rcv-sup-field {
  display: revert;
}

/*
 * PRÍJEM NA TELEFÓNE (30. 9. 2026) — „na mobile je tento pohľad dosť zlý".
 *   • predajňa a dodávateľ vedľa seba, číslo dokladu a dátum pod nimi
 *     (predtým každé pole na celý riadok a dodávateľ v zbalenej hlavičke chýbal),
 *   • akcie v dvoch radoch — vodorovný pás schoval „+ Položka", „✕ Zrušiť"
 *     a „⋯ Viac" za pravý okraj a nebolo poznať, že sa dá posunúť,
 *   • doklad vo fronte je karta namiesto sedemstĺpcovej tabuľky, z ktorej
 *     boli na šírku vidieť tri stĺpce a dátum, počet položiek a expirácia
 *     boli až za okrajom.
 */
@media (max-width: 700px) {
  #wms-pane-receiving #wms-rcv-header .wms-rcv-toolbar-grid > .wms-rcv-field {
    grid-column: auto;
    min-width: 0;
  }
  #wms-pane-receiving .wms-page.wms-rcv-filters-folded #wms-rcv-header .wms-rcv-toolbar-grid > .wms-rcv-field-dl {
    grid-column: 1 / -1;
  }
  #wms-pane-receiving #wms-rcv-header .wms-sel {
    width: 100%;
    min-width: 0;
    text-overflow: ellipsis;
  }
  #wms-pane-receiving #wms-rcv-header .wms-rcv-toolbar-actions-main {
    flex-wrap: wrap;
    overflow-x: visible;
    padding-bottom: 0;
    gap: 5px;
  }

  #wms-pane-receiving .wms-rcv-queue-table-wrap:has(tr.wms-rcv-queue-row) { overflow-x: hidden; }
  #wms-pane-receiving .wms-rcv-queue-table:has(tr.wms-rcv-queue-row) { min-width: 0; width: 100%; margin-top: 0; }
  #wms-pane-receiving .wms-rcv-queue-table:has(tr.wms-rcv-queue-row) thead { display: none; }
  #wms-pane-receiving .wms-rcv-queue-table:has(tr.wms-rcv-queue-row) tbody { display: block; }
  #wms-pane-receiving .wms-rcv-queue-table tr.wms-rcv-queue-row {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    grid-template-areas:
      "typ doklad datum"
      "typ dod    pol"
      "exp exp    akcie"
      "csb csb    csb";
    column-gap: 10px;
    row-gap: 3px;
    align-items: start;
    padding: 10px 12px;
    border-bottom: 1px solid var(--wms-border, #E5E7EB);
  }
  #wms-pane-receiving .wms-rcv-queue-table tr.wms-rcv-queue-row > td {
    display: block;
    width: auto;
    min-width: 0;
    padding: 0;
    border: 0;
    text-align: left;
    font-size: 13px;
  }
  #wms-pane-receiving .wms-rcv-queue-table tr.wms-rcv-queue-row > td:nth-child(1) {
    grid-area: typ;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 3px;
  }
  #wms-pane-receiving .wms-rcv-queue-table tr.wms-rcv-queue-row > td:nth-child(2) { grid-area: dod; color: var(--wms-muted, #6B7280); font-size: 12.5px; }
  #wms-pane-receiving .wms-rcv-queue-table tr.wms-rcv-queue-row > td:nth-child(3) { grid-area: doklad; overflow-wrap: anywhere; }
  #wms-pane-receiving .wms-rcv-queue-table tr.wms-rcv-queue-row > td:nth-child(3) .wms-rcv-queue-sub { font-size: 12px; }
  #wms-pane-receiving .wms-rcv-queue-table tr.wms-rcv-queue-row > td:nth-child(4) { grid-area: datum; text-align: right; white-space: nowrap; font-size: 12.5px; }
  #wms-pane-receiving .wms-rcv-queue-table tr.wms-rcv-queue-row > td:nth-child(5) { grid-area: pol; text-align: right; white-space: nowrap; font-size: 12.5px; color: var(--wms-muted, #6B7280); }
  #wms-pane-receiving .wms-rcv-queue-table tr.wms-rcv-queue-row > td:nth-child(5)::after { content: ' pol.'; }
  #wms-pane-receiving .wms-rcv-queue-table tr.wms-rcv-queue-row > td:nth-child(6) { grid-area: exp; font-size: 12px; align-self: center; }
  #wms-pane-receiving .wms-rcv-queue-table tr.wms-rcv-queue-row > td:nth-child(6)::before { content: 'Spotreba: '; color: var(--wms-muted, #6B7280); }
  /* akcie podľa triedy, nie poradia — v Prijatých dokladoch je navyše stĺpec CSB (2. 10. 2026) */
  #wms-pane-receiving .wms-rcv-queue-table tr.wms-rcv-queue-row > td.wms-rcv-queue-csb { grid-area: csb; font-size: 12px; }
  #wms-pane-receiving .wms-rcv-queue-table tr.wms-rcv-queue-row > td.wms-rcv-queue-csb:empty { display: none; }
  #wms-pane-receiving .wms-rcv-queue-table tr.wms-rcv-queue-row > td.wms-rcv-queue-action {
    grid-area: akcie;
    display: flex;
    justify-content: flex-end;
    gap: 4px;
  }
  /* vzhľad loyalty-ui-v2 dáva bunkám frontu 3 × 6 px s !important — v karte robí odsadenie riadok */
  body.loyalty-ui-v2 #wms-pane-receiving .wms-rcv-queue-table tr.wms-rcv-queue-row > td { padding: 0 !important; }
  #wms-pane-receiving .wms-rcv-queue-table tr.wms-rcv-queue-row .wms-rcv-queue-action .wms-btn {
    min-height: 28px;
    padding: 2px 10px;
    font-size: 12px;
  }
  /* dieťa prípadu vratky: odsadí sa celá karta, nie len prvá bunka */
  #wms-pane-receiving .wms-rcv-queue-table tr.wms-rcv-queue-row--child { padding-left: 26px; }
  #wms-pane-receiving .wms-rcv-queue-table tr.wms-rcv-queue-row--child > td:first-child { padding-left: 0 !important; flex-direction: row; }
}
/* EXPIRÁCIE — zostane prepínač pohľadu a Obnoviť */
#wms-pane-expiry .wms-expiry-filters-folded .wms-expiry-toolbar > * {
  display: none;
}
#wms-pane-expiry .wms-expiry-filters-folded .wms-expiry-toolbar > .wms-expiry-view-toggle,
#wms-pane-expiry .wms-expiry-filters-folded .wms-expiry-toolbar > .wms-expiry-fold-btn,
#wms-pane-expiry .wms-expiry-filters-folded .wms-expiry-toolbar > .wms-btn:last-child {
  display: revert;
}
/*
 * Prehľadové karty sú súhrn, nie obsah — v zbalenom stave ustúpia zoznamu.
 * Merané pri 600 px: brali 137 px, čo je pri 900 px vysokom okne šestina
 * obrazovky na čísla, ktoré sú aj v samotnom zozname.
 */
#wms-pane-expiry .wms-expiry-filters-folded #expiry-summary-cards {
  display: none;
}
.wms-expiry-fold-btn { margin-left: auto; }

/* ── VÝDAJKA ZO SKLADU ─────────────────────────────────────────────────── */
#wms-pane-vydajky .vyd { padding: 12px 16px 0; }
.vyd-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; flex-wrap: wrap; }
.vyd-title { margin: 0; font-size: 18px; }
.vyd-sub { margin: 2px 0 0; font-size: 12px; max-width: 60ch; }
.vyd-head-actions { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.vyd-obsah { margin-top: 12px; }
.vyd-chip { display: inline-block; padding: 2px 8px; border-radius: 999px; font-size: 11.5px; font-weight: 600; margin-left: 8px; }

.vyd-form { max-width: 560px; padding: 12px; background: #fff; border: 1px solid var(--wms-border); border-radius: 10px; }
.vyd-form h3 { margin: 0 0 10px; font-size: 15px; }
.vyd-f { display: flex; flex-direction: column; gap: 3px; margin-bottom: 10px; }
.vyd-f > span { font-size: 12px; color: #6B7280; }
.vyd-form-actions { display: flex; gap: 8px; margin-top: 4px; flex-wrap: wrap; }

.vyd-doc-head { display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap; align-items: flex-start;
  padding: 10px 12px; background: #fff; border: 1px solid var(--wms-border); border-radius: 10px; }
.vyd-doc-num { font-size: 15px; }
.vyd-doc-meta { font-size: 12px; color: #6B7280; margin-top: 2px; }
.vyd-doc-actions { display: flex; gap: 6px; flex-wrap: wrap; }
.vyd-doc-info { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 8px; margin: 10px 0; }
.vyd-doc-info > div { background: #fff; border: 1px solid var(--wms-border); border-radius: 8px; padding: 8px 10px; }
.vyd-doc-info span { display: block; font-size: 11px; }

.vyd-pridat { position: relative; margin: 10px 0; }
.vyd-vysledky { display: flex; flex-direction: column; gap: 2px; margin-top: 4px; max-height: 260px; overflow-y: auto; }
.vyd-hit { display: flex; flex-direction: column; align-items: flex-start; gap: 1px; width: 100%;
  padding: 7px 10px; border: 1px solid var(--wms-border); border-radius: 8px; background: #fff; cursor: pointer; text-align: left; }
.vyd-hit:hover { background: #FEF2F2; border-color: #FCA5A5; }
.vyd-hit-name { font-weight: 600; font-size: 13px; }
.vyd-hit-meta { font-size: 11.5px; color: #6B7280; }
/* vydáva sa viac, než je na sklade — karta pôjde do mínusu */
.vyd-malo { color: #B91C1C; font-weight: 600; }

/* Výdajka REPRE — prehľadový riadok nad zoznamom a orezaný účel v tabuľke.
   Účel býva veta; bez orezania by roztiahol tabuľku a doklad by sa stratil. */
.vyd-zoznam-info { padding: 8px 12px 4px; font-size: 12px; }
.vyd-ucel { max-width: 260px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
@media (max-width: 900px) { .vyd-ucel { max-width: 140px; } }

/*
 * RÁM OBRAZOVKY. Nová obrazovka rám nezdedí — panel má od modulu `flex: 1`
 * a `overflow: hidden`, ale `.wms-page` je len blok s odsadením. Bez tohto
 * receptu (ten istý, aký majú Zásoby) narastie zoznam nad výšku panela
 * a nedá sa rolovať vôbec: `overflow-y: auto` na bloku vysokom ako jeho
 * obsah nemá čo rolovať. Hlavička stojí, roluje len zoznam.
 */
#wms-pane-vydajky.wms-page-pane.active {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
  height: auto;
  overflow: hidden;
  padding: 0;
}
#wms-pane-vydajky .vyd {
  display: flex;
  flex-direction: column;
  height: 100%;
  min-height: 0;
  overflow: hidden;
  max-width: 100%;
}
#wms-pane-vydajky .vyd-head { flex: 0 0 auto; }
#wms-pane-vydajky .vyd-obsah { flex: 1 1 0; min-height: 0; overflow-y: auto; }
/* riadok zoznamu sa otvára ťuknutím — kurzor to musí povedať aj na počítači */
#wms-pane-vydajky .vyd-row { cursor: pointer; }
#wms-pane-vydajky .vyd-row:hover { background: #FEF2F2; }

@media (max-width: 700px) {
  /*
   * Na telefóne roluje CELÝ panel, nie vnútorná tabuľka. Inak hlavička
   * s výberom predajne zaberie polovicu okna a na zoznam ostane 20 px.
   * `overscroll-behavior` sa tu zámerne nenastavuje — na telefóne rozbíja
   * reťazenie rolovania na stránku.
   */
  #wms-pane-vydajky.wms-page-pane.active {
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    padding-bottom: calc(12px + env(safe-area-inset-bottom, 0px));
  }
  #wms-pane-vydajky .vyd { height: auto; min-height: 0; overflow: visible; padding: 8px 10px 0; }
  #wms-pane-vydajky .vyd-obsah { flex: 0 0 auto; overflow: visible; margin-top: 8px; }

  /* hlavička: názov zostáva, vysvetlenie nie — na 393 px zaberalo tri riadky */
  #wms-pane-vydajky .vyd-title { font-size: 16px; }
  #wms-pane-vydajky .vyd-sub { display: none; }
  #wms-pane-vydajky .vyd-head { flex-direction: column; gap: 8px; }
  #wms-pane-vydajky .vyd-head-actions { width: 100%; display: grid; grid-template-columns: minmax(0, 1fr); gap: 6px; }
  #wms-pane-vydajky .vyd-head-actions .wms-sel,
  #wms-pane-vydajky .vyd-head-actions .wms-btn { width: 100%; min-height: 44px; font-size: 14px; }
  #wms-pane-vydajky .vyd-zoznam-info { padding: 6px 2px 2px; }

  /*
   * ZOZNAM DOKLADOV AKO KARTY. Desať stĺpcov sa na telefón nezmestí a
   * vodorovné rolovanie v zozname dokladov nikto nehľadá. Popisky nesie
   * markup (`data-label`) — bez nich by na karte boli holé hodnoty.
   */
  /* obal tabuľky je na telefóne zbytočný rám okolo kariet — karta v karte */
  #wms-pane-vydajky .vyd-zoznam,
  #wms-pane-vydajky .vyd-polozky-tab {
    overflow-x: visible;
    background: transparent;
    border: 0;
    box-shadow: none;
    padding: 0;
  }
  #wms-pane-vydajky .vyd-zoznam table,
  #wms-pane-vydajky .vyd-zoznam tbody { display: block; width: 100%; }
  #wms-pane-vydajky .vyd-zoznam thead { display: none; }
  #wms-pane-vydajky .vyd-zoznam tbody tr {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 1px 8px;
    align-items: start;
    padding: 9px 11px;
    margin-bottom: 7px;
    background: #fff;
    border: 1px solid var(--wms-border);
    border-radius: 10px;
  }
  /* skin `loyalty-ui-v2` dáva bunkám padding 9px/16px s !important — na karte
     by z ôsmich riadkov spravil 308 px, preto sa prebíja rovnakou zbraňou */
  #wms-pane-vydajky .vyd-zoznam tbody td {
    display: block;
    grid-column: 1 / -1;
    border: 0 !important;
    padding: 0 !important;
    text-align: left !important;
    font-size: 12.5px;
    line-height: 1.35;
    max-width: none;
    white-space: normal;
    overflow: visible;
  }
  #wms-pane-vydajky .vyd-zoznam tbody td[data-label]::before {
    content: attr(data-label) ": ";
    color: #6B7280;
  }
  #wms-pane-vydajky .vyd-zoznam tbody td[data-vyd-cell="cislo"] { grid-column: 1; font-size: 14px; }
  #wms-pane-vydajky .vyd-zoznam tbody td[data-vyd-cell="stav"] { grid-column: 2; grid-row: 1; }
  #wms-pane-vydajky .vyd-zoznam tbody td[data-vyd-cell="stav"] .vyd-chip { margin-left: 0; }
  #wms-pane-vydajky .vyd-zoznam tbody td[data-vyd-cell="datum"],
  #wms-pane-vydajky .vyd-zoznam tbody td[data-vyd-cell="predajna"],
  #wms-pane-vydajky .vyd-zoznam tbody td[data-vyd-cell="kto"],
  #wms-pane-vydajky .vyd-zoznam tbody td[data-vyd-cell="pocet"] { color: #6B7280; font-size: 11.5px; }
  /* dátum s predajňou a „vystavil" s počtom idú po dvojiciach na riadok —
     každý na vlastnom by z karty spravil stĺpec vysoký pol obrazovky */
  #wms-pane-vydajky .vyd-zoznam tbody td[data-vyd-cell="datum"],
  #wms-pane-vydajky .vyd-zoznam tbody td[data-vyd-cell="kto"] { grid-column: 1; }
  #wms-pane-vydajky .vyd-zoznam tbody td[data-vyd-cell="predajna"],
  #wms-pane-vydajky .vyd-zoznam tbody td[data-vyd-cell="pocet"] { grid-column: 2; text-align: right !important; white-space: nowrap; }
  #wms-pane-vydajky .vyd-zoznam tbody td[data-vyd-cell="nazov"] { font-weight: 600; font-size: 13.5px; margin-top: 3px; }
  /* tlačidlo netreba — klikateľná je celá karta */
  #wms-pane-vydajky .vyd-zoznam tbody td[data-vyd-cell="akcia"] { display: none; }

  /* ── doklad ── */
  #wms-pane-vydajky .vyd-doc-head { flex-direction: column; gap: 8px; padding: 9px 11px; }
  /* hlavná akcia cez celú šírku, vedľajšie po dvoch — tri pod sebou brali 150 px */
  #wms-pane-vydajky .vyd-doc-actions { width: 100%; display: grid; grid-template-columns: 1fr 1fr; gap: 6px; }
  #wms-pane-vydajky .vyd-doc-actions .wms-btn { width: 100%; min-height: 44px; font-size: 13.5px; }
  #wms-pane-vydajky .vyd-doc-actions .wms-btn-primary { grid-column: 1 / -1; font-size: 14px; }
  /* s otvoreným dokladom netreba výber predajne ani „+ Nová výdajka" */
  #wms-pane-vydajky .vyd.vyd-open .vyd-head-actions { display: none; }
  #wms-pane-vydajky .vyd-doc-info { grid-template-columns: minmax(0, 1fr); gap: 6px; margin: 8px 0; }
  #wms-pane-vydajky .vyd-form { max-width: none; padding: 10px; }
  #wms-pane-vydajky .vyd-f .wms-input { min-height: 44px; font-size: 15px; }
  #wms-pane-vydajky .vyd-f textarea.wms-input { min-height: 66px; }
  #wms-pane-vydajky .vyd-form-actions { display: grid; grid-template-columns: minmax(0, 1fr); gap: 6px; }
  #wms-pane-vydajky .vyd-form-actions .wms-btn { width: 100%; min-height: 44px; font-size: 14px; }

  /* hľadanie a skener: veľké políčko, výsledky na palec */
  #wms-pane-vydajky .vyd-pridat .wms-input { min-height: 46px; font-size: 15px; }
  #wms-pane-vydajky .vyd-vysledky { max-height: none; }
  #wms-pane-vydajky .vyd-hit { min-height: 52px; justify-content: center; padding: 8px 11px; }

  /*
   * POLOŽKY DOKLADU AKO KARTY — s políčkom na množstvo cez pol karty.
   * V tabuľke malo 90 px a na dotyk sa doň netrafilo.
   */
  #wms-pane-vydajky .vyd-polozky-tab table,
  #wms-pane-vydajky .vyd-polozky-tab tbody { display: block; width: 100%; }
  #wms-pane-vydajky .vyd-polozky-tab thead { display: none; }
  #wms-pane-vydajky .vyd-polozky-tab tbody tr {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 3px 8px;
    align-items: center;
    padding: 9px 11px;
    margin-bottom: 7px;
    background: #fff;
    border: 1px solid var(--wms-border);
    border-radius: 10px;
  }
  #wms-pane-vydajky .vyd-polozky-tab tbody td {
    display: block; grid-column: 1 / -1; border: 0 !important; padding: 0 !important;
    text-align: left !important; font-size: 12.5px;
  }
  /* aj tu platí: hodnota bez popisu je na karte hádanka */
  #wms-pane-vydajky .vyd-polozky-tab tbody td[data-label]::before {
    content: attr(data-label) ": ";
    display: block;
    color: #6B7280;
    font-size: 11.5px;
  }
  /*
   * Riadky sa umiestňujú VÝSLOVNE. Pri automatickom ukladaní odsunul „Na
   * sklade" (cez obe bunky) tlačidlo ✕ na vlastný riadok a karta narástla
   * o 50 px, hoci vedľa množstva bolo miesto.
   */
  #wms-pane-vydajky .vyd-polozky-tab tbody td[data-vyd-pol="nazov"] { grid-row: 1; font-weight: 600; font-size: 13.5px; }
  #wms-pane-vydajky .vyd-polozky-tab tbody td[data-vyd-pol="kod"] { grid-row: 2; font-size: 11.5px; }
  #wms-pane-vydajky .vyd-polozky-tab tbody td[data-vyd-pol="mnozstvo"] { grid-row: 3; grid-column: 1; }
  #wms-pane-vydajky .vyd-polozky-tab tbody td[data-vyd-pol="mnozstvo"] .vyd-qty {
    width: 100%; min-height: 46px; font-size: 16px; text-align: right;
  }
  /* jednotka je v popise políčka („Množstvo (ks)"), vlastný riadok netreba */
  #wms-pane-vydajky .vyd-polozky-tab tbody td[data-vyd-pol="mj"] { display: none; }
  #wms-pane-vydajky .vyd-polozky-tab tbody td[data-vyd-pol="sklad"] { grid-row: 4; grid-column: 1 / -1; font-size: 11.5px; }
  #wms-pane-vydajky .vyd-polozky-tab tbody td[data-vyd-pol="sklad"]::before { display: inline; }
  /* ✕ stojí vedľa množstva — na vlastnom riadku brala karta o 44 px viac */
  #wms-pane-vydajky .vyd-polozky-tab tbody td[data-vyd-pol="zmaz"] { grid-row: 3; grid-column: 2; align-self: end; }
  #wms-pane-vydajky .vyd-polozky-tab tbody td[data-vyd-pol="zmaz"] .wms-btn { min-height: 46px; padding: 0 12px; }
}

/* ── Zamestnanecká zľava: priznané zľavy a kontrola pomerov ────────────────
   Zľava je na KARTE, nie na človeku — preto je číslo karty prvé a stĺpec
   „Kontrola" hovorí, či to ešte sedí s Dochádzkou. */
.zam-kontrola-lista { display: flex; justify-content: space-between; gap: 10px; flex-wrap: wrap; margin-bottom: 10px; }
.zam-hladaj-karta { display: flex; gap: 6px; flex: 1 1 320px; min-width: 0; }
.zam-hladaj-karta .wms-input { flex: 1 1 auto; min-width: 0; }
.zam-kontrola-akcie { display: flex; gap: 6px; flex-wrap: wrap; }
.zam-varovanie { background: #FFFBEB; border: 1px solid #FDE68A; color: #92400E;
  border-radius: 8px; padding: 8px 10px; font-size: 12.5px; margin: 0 0 10px; }
.zam-karta-box { background: #fff; border: 1px solid var(--wms-border); border-left: 3px solid #B91C1C;
  border-radius: 8px; padding: 9px 11px; margin-bottom: 10px; font-size: 13px; display: flex;
  flex-direction: column; gap: 3px; }
.zam-karta-nic { border-left-color: #9CA3AF; color: #6B7280; }
.zam-chip { display: inline-block; padding: 2px 8px; border-radius: 999px; font-size: 11.5px; font-weight: 600; }
.zam-pozn { font-size: 11px; margin-top: 2px; }
/* stiahnutá zľava zostáva v zozname ako stopa — nie ako platný riadok */
.zam-r-ukoncene { opacity: .68; }
.zam-r-ukoncene td:first-child strong { text-decoration: line-through; }

@media (max-width: 700px) {
  .zam-kontrola-lista { flex-direction: column; }
  .zam-kontrola-akcie .wms-btn { flex: 1 1 0; min-height: 44px; }
  .zam-hladaj-karta .wms-input, .zam-hladaj-karta .wms-btn { min-height: 44px; }
  /* sedem stĺpcov sa na telefón nezmestí — riadok je karta */
  #wms-pane-zamestnanci .zam-tab-priznane,
  #wms-pane-zamestnanci .zam-tab-priznane tbody { display: block; width: 100%; }
  #wms-pane-zamestnanci .zam-tab-priznane thead { display: none; }
  #wms-pane-zamestnanci .zam-tab-priznane tbody tr { display: block; background: #fff;
    border: 1px solid var(--wms-border); border-radius: 10px; padding: 9px 11px; margin-bottom: 7px; }
  #wms-pane-zamestnanci .zam-tab-priznane tbody td { display: block; border: 0 !important;
    padding: 1px 0 !important; text-align: left !important; font-size: 12.5px; }
  #wms-pane-zamestnanci .zam-tab-priznane tbody td[data-label]::before {
    content: attr(data-label) ": "; color: #6B7280; font-size: 11.5px; }
}

/* hromadné napárovanie kariet — zbalené, kým ho niekto nepotrebuje */
.zam-parovanie { background: #fff; border: 1px solid var(--wms-border); border-radius: 10px;
  padding: 9px 12px; margin-bottom: 12px; }
.zam-parovanie > summary { cursor: pointer; font-weight: 600; font-size: 13.5px; }
.zam-sub { font-size: 12.5px; margin: 6px 0 8px; max-width: 80ch; }
.zam-parovanie-vstup { width: 100%; font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 12.5px; resize: vertical; }
.zam-parovanie-akcie { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 8px; }
.zam-parovanie-suhrn { font-size: 12.5px; margin: 10px 0 6px; }
@media (max-width: 700px) {
  .zam-parovanie-akcie .wms-btn { flex: 1 1 100%; min-height: 44px; }
  #wms-pane-zamestnanci .zam-tab-parovanie,
  #wms-pane-zamestnanci .zam-tab-parovanie tbody { display: block; width: 100%; }
  #wms-pane-zamestnanci .zam-tab-parovanie thead { display: none; }
  #wms-pane-zamestnanci .zam-tab-parovanie tbody tr { display: block; background: #fff;
    border: 1px solid var(--wms-border); border-radius: 10px; padding: 9px 11px; margin-bottom: 7px; }
  #wms-pane-zamestnanci .zam-tab-parovanie tbody td { display: block; border: 0 !important;
    padding: 1px 0 !important; text-align: left !important; font-size: 12.5px; }
  #wms-pane-zamestnanci .zam-tab-parovanie tbody td[data-label]::before {
    content: attr(data-label) ": "; color: #6B7280; font-size: 11.5px; }
}
/* karta už má inú dohodnutú zľavu — napárovanie ju prepíše, musí byť vidieť vopred */
.zam-prepis { color: #B45309; font-weight: 600; font-size: 11.5px; margin-top: 2px; }

/* čiastočná zhoda mena — musí byť vidieť, rozhoduje o nej človek */
.zam-preklep { background: #FFFBEB; border: 1px solid #FDE68A; color: #92400E;
  border-radius: 8px; padding: 7px 10px; margin: 8px 0; font-size: 12.5px; }
.zam-preklep-vazne { background: #FEF2F2; border-color: #FCA5A5; color: #991B1B; }
.zam-preklep strong { display: block; margin-bottom: 2px; }
.zam-udaje code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 12px; }

/* ── Ručný riadok príjmu: pás „+ Ďalšia položka" a karta na telefóne ─────
   Tlačidlo na pridanie riadku bolo len v hlavičke filtrov — po ich zbalení
   sa stratilo a druhý riadok sa nedal pridať vôbec. */
#wms-rcv-manual-add {
  flex: 0 0 auto;
  padding: 8px 2px 10px;
  display: flex;
  justify-content: flex-start;
}
#wms-rcv-manual-add[hidden] { display: none; }
.wms-rcv-add-row-btn {
  min-height: 40px;
  font-weight: 600;
  border-style: dashed;
}
.rcv-zmaz-text { display: none; }

@media (max-width: 900px) {
  /*
   * Ručný riadok sa na úzkej obrazovke rozpadne na kartu. V tabuľke bol
   * širší než okno, takže posledný stĺpec — a v ňom práve ✕ na odstránenie
   * riadku — zostal odrezaný a nedalo sa naň dosiahnuť.
   */
  /* tabuľka sa musí najprv prestať správať ako tabuľka, inak si colgroup
     drží pevné šírky a z karty zostane stĺpik široký 50 px */
  #wms-rcv-items-wrap .wms-rcv-table,
  #wms-rcv-items-wrap .wms-rcv-table tbody { display: block; width: 100%; }
  /* pri príjme je na tabuľke min-width: 1000px — pri karte nesmie platiť */
  #wms-pane-receiving #wms-rcv-items-wrap .wms-rcv-table { min-width: 0; }
  #wms-rcv-items-wrap .wms-rcv-table colgroup { display: none; }
  #wms-rcv-items-wrap { overflow-x: visible; }

  #wms-rcv-items-wrap .wms-rcv-table tbody tr.wms-rcv-manual-row {
    box-sizing: border-box;
    width: 100%;
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 6px 8px;
    padding: 10px 11px;
    margin-bottom: 8px;
    background: #fff;
    border: 1px solid var(--wms-border);
    border-radius: 12px;
  }
  #wms-rcv-items-wrap .wms-rcv-table tbody tr.wms-rcv-manual-row td {
    display: block;
    border: 0 !important;
    padding: 0 !important;
    text-align: left !important;
    width: auto;
  }
  #wms-rcv-items-wrap .wms-rcv-table tbody td[data-label]::before {
    content: attr(data-label);
    display: block;
    font-size: 11px;
    color: var(--wms-muted);
    margin-bottom: 2px;
  }
  /* poradové číslo aj „zmena ceny" na karte nepomáhajú — číslo je vidieť
     z poradia a zmenu ceny rieši až zaúčtovanie */
  #wms-rcv-items-wrap .wms-rcv-table tbody tr.wms-rcv-manual-row td[data-rcv-col-td="pos"],
  #wms-rcv-items-wrap .wms-rcv-table tbody td[data-rucne="zmena"] { display: none !important; }
  #wms-rcv-items-wrap .wms-rcv-table tbody td[data-rucne="produkt"],
  #wms-rcv-items-wrap .wms-rcv-table tbody td[data-rucne="akcie"] { grid-column: 1 / -1; }
  #wms-rcv-items-wrap .wms-rcv-table tbody td[data-rucne] .wms-input {
    width: 100% !important;
    max-width: none !important;
    min-width: 0 !important;
    min-height: 42px;
    font-size: 15px;
  }
  /* mazanie musí byť čitateľné tlačidlo, nie krížik veľký ako nechtík */
  #wms-rcv-items-wrap .wms-rcv-table tbody td[data-rucne="akcie"] {
    display: flex; gap: 8px; margin-top: 2px;
  }
  #wms-rcv-items-wrap .wms-rcv-table tbody td[data-rucne="akcie"] .wms-btn {
    flex: 1 1 0; min-height: 42px; margin-left: 0 !important;
  }
  .rcv-zmaz-text { display: inline; }
  #wms-rcv-items-wrap .wms-rcv-table thead { display: none; }
  #wms-rcv-manual-add .wms-rcv-add-row-btn { width: 100%; min-height: 46px; }
}

/* Stĺpec s akciami ručného riadku (📷 a ✕) sa pripne k pravému okraju.
   Tabuľka je širšia než okno a posledný stĺpec — teda práve mazanie riadku —
   zostával odrezaný za okrajom, kam sa myšou nedalo dosiahnuť. */
@media (min-width: 901px) {
  #wms-rcv-items-wrap .wms-rcv-table tbody tr.wms-rcv-manual-row td[data-rucne="akcie"] {
    position: sticky;
    right: 0;
    background: #fff;
    box-shadow: -6px 0 6px -6px rgba(15, 23, 42, .18);
    z-index: 2;
  }
}

/*
 * ══════════════════════════════════════════════════════════════════════════
 *  PRÍJEM TOVARU NA NÍZKOM OKNE — zo zoznamu musí byť vidieť viac než riadok
 * ══════════════════════════════════════════════════════════════════════════
 *
 *  Merané na predajni (notebook, Chrome s lištou oznámení — 1000 × 470 CSS px):
 *  nad zoznamom stálo 266 px hlavičky, pod ním 44 px samých odsadení a zo
 *  zoznamu ostalo 134 px. Do nich sa zmestila hlavička tabuľky a JEDEN riadok
 *  — pritom práve zoznam je to, kvôli čomu sa obrazovka otvára.
 *
 *  Nič sa neskrýva. Berie sa len to, čo nič nehovorí: prázdny pás po tlačidle
 *  „Filtre" (to je teraz pri zozname), odsadenia okolo dosky a zalomenie
 *  druhého riadku dokladu. Písmo zostáva — na to sa pozerá celý deň.
 */

/*
 * Stĺpec DOKLAD nesie dva údaje pod sebou (naše číslo a číslo CSB) a pri 24 %
 * sa ten druhý lámal na tretí riadok — riadok mal 67 px namiesto 44. Miesto
 * naň sa berie dodávateľovi, ktorý je na predajni takmer vždy ten istý.
 */
.wms-rcv-queue-table th:nth-child(1),
.wms-rcv-queue-table td:nth-child(1) { width: 10%; }
.wms-rcv-queue-table th:nth-child(2),
.wms-rcv-queue-table td:nth-child(2) { width: 12%; }
.wms-rcv-queue-table th:nth-child(3),
.wms-rcv-queue-table td:nth-child(3) { width: 28%; }
.wms-rcv-queue-table th:nth-child(4),
.wms-rcv-queue-table td:nth-child(4) { width: 11%; }
.wms-rcv-queue-table th:nth-child(6),
.wms-rcv-queue-table td:nth-child(6) { width: 12%; }
/* „Otvoriť" + oko + „Skryť" sa do 72 px nezmestili a text sa orezal */
.wms-rcv-queue-table th:nth-child(7),
.wms-rcv-queue-table td:nth-child(7) { width: 92px; }

/*
 * Spodná hranica šírky tabuľky bola 880 px, lebo bunky mali 16 px odsadenia
 * po bokoch. Po jeho zmenšení (viď nižšie) sa ten istý obsah zmestí do 780 px
 * — a na notebooku tým zmizne vodorovné rolovanie, ktoré odrezávalo tlačidlá
 * vpravo a bralo ďalší riadok na posuvník. Merané: pri 740 px má stĺpec
 * „Dátum" 69 px na text široký 63 px, takže sa hlavička ešte neoreže.
 */
@media (max-width: 1280px) {
  .wms-rcv-queue-table { min-width: 740px; }
}

/*
 * ODSADENIE BUNIEK VO FRONTE DOKLADOV.
 *
 * Vzhľad `loyalty-ui-v2` dáva každej bunke `.wms-table` 0,5625 rem × 1 rem
 * s `!important`. Vo veľkých tabuľkách to sedí, tu nie: 9 px hore aj dole
 * zdvihlo riadok zo 44 na 60 px a 16 px po bokoch ubralo toľko šírky, že
 * „11. 9. 2026" sa lámalo na dva riadky. Front má vlastné odsadenie — také,
 * aké preň bolo napísané.
 */
body.loyalty-ui-v2 #wms-pane-receiving .wms-rcv-queue-table th,
body.loyalty-ui-v2 #wms-pane-receiving .wms-rcv-queue-table td {
  padding: 3px 6px !important;
}

/*
 * Súhrn nad zoznamom („1 DLV · 8 VRATKA · …") je informácia, nie práca.
 * Odkedy je pri ňom aj tlačidlo „Filtre", lámal sa na dva riadky a bral
 * miesto riadkom. Celý text zostáva v bubline.
 */
#rcv-queue-summary {
  flex: 1 1 0;
  min-width: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/*
 * Bez `min-width: 0` sa lišta nevie zmenšiť pod šírku svojho obsahu: skrátený
 * súhrn ju roztiahol a tlačidlá („Filtre", „Skryté", „↻") na telefóne odišli
 * za pravý okraj obrazovky — boli v DOM, ale nedalo sa na ne kliknúť.
 */
.wms-rcv-queue-head-actions {
  min-width: 0;
  flex: 1 1 auto;
  flex-wrap: wrap;
  justify-content: flex-end;
}

@media (max-height: 800px) {
  /* hlavička stránky: názov modulu je aj v bočnom menu, tu stačí ako orientácia */
  body.loyalty-ui-v2 #adminMainShell.loyalty-module-wms header.im-page-header {
    margin-bottom: 0.25rem;
    padding-bottom: 0.25rem;
  }
  body.loyalty-ui-v2 #adminMainShell.loyalty-module-wms header.im-page-header .im-page-title {
    font-size: 1rem;
  }

  /* odsadenia dosky: štyri vrstvy po sebe dávali 44 px prázdna pod zoznamom.
     Selektory sú takto dlhé zámerne — musia prebiť `admin-sidebar.css`
     a `istermeat-ui.css`, ktoré tie odsadenia nastavujú. */
  #adminMainShell.loyalty-module-wms { padding-bottom: 0.35rem; }
  body.loyalty-ui-v2 #adminMainShell.loyalty-module-wms > .card.max-w-6xl {
    padding-bottom: 0.25rem;
  }
  #adminMainShell.loyalty-module-wms #wmsSection > #wms-pane-receiving.wms-page-pane.active {
    padding-bottom: 4px;
  }
  body.loyalty-ui-v2 #wmsSection #wms-pane-receiving .wms-page {
    padding-top: 0.25rem;
    padding-bottom: 0.3rem;
  }

  /* polia hlavičky sa na úzkom okne lámu do dvoch radov — medzeru medzi nimi
     netreba mať takú istú ako medzi stĺpcami */
  #wms-rcv-header .wms-rcv-toolbar-grid { gap: 2px 8px; }
}

/* Ukážka súboru pre pokladňu — má sa čítať ako súbor, nie ako odsek textu. */
.wms-edi-ukazka {
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 11.5px;
  line-height: 1.45;
  background: #F8FAFC;
  border: 1px solid var(--wms-border, #E5E7EB);
  border-radius: 6px;
  padding: 8px 10px;
  margin: 0;
  overflow-x: auto;
  white-space: pre;
}

/* Mená na karty — hlavička vysvetľuje, tabuľka pod ňou rozhoduje. */
.zam-mena-head { margin-bottom: 10px; }
.zam-mena-akcie { display: flex; gap: 8px; flex-wrap: wrap; }
.zam-mena-ine { margin-top: 14px; }
.zam-mena-ine > summary { cursor: pointer; font-size: 13px; color: #b45309; font-weight: 600; }

/* ═══════════════════════════════════════════════════════════════════════════
   MOP → CENY — jedna obrazovka: cenník · pokladňa · akcia · cenovka
   (public/wms/wms-ceny.js) ═══════════════════════════════════════════════ */
.ceny-head { display:flex; justify-content:space-between; gap:16px; align-items:flex-start; flex-wrap:wrap; margin-bottom:10px; }
.ceny-head h2 { margin:0 0 2px; font-size:20px; }
.ceny-head .muted { margin:0; font-size:12.5px; max-width:640px; }
.ceny-tools { display:flex; gap:8px; align-items:flex-end; flex-wrap:wrap; }
.ceny-tools label { display:flex; flex-direction:column; gap:3px; font-size:11px; color:var(--wms-subtle); }
.ceny-tools .wms-sel, .ceny-tools .wms-input { min-height:34px; }
.ceny-chips { display:flex; gap:6px; flex-wrap:wrap; margin:8px 0 10px; }
.ceny-chip { border:1px solid var(--wms-border); background:#fff; border-radius:999px; padding:4px 11px; font-size:12px; cursor:pointer; color:#374151; display:inline-flex; gap:6px; align-items:center; }
.ceny-chip b { font-weight:600; }
.ceny-chip.on { background:var(--wms-red); border-color:var(--wms-red); color:#fff; }
.ceny-chip.warn:not(.on) { border-color:#F59E0B; color:#92400E; background:#FFFBEB; }
.ceny-akcie { display:flex; gap:6px; flex-wrap:wrap; align-items:center; margin-left:auto; }
.ceny-telo { display:grid; grid-template-columns:minmax(0,1fr); gap:12px; align-items:start; }
.ceny-telo.s-detailom { grid-template-columns:minmax(0,1fr) minmax(360px,440px); }
@media (max-width: 1100px) { .ceny-telo.s-detailom { grid-template-columns:minmax(0,1fr); } }
.ceny-tab th { white-space:nowrap; cursor:pointer; user-select:none; }
.ceny-tab th.sorted { color:var(--wms-red); }
.ceny-tab td.num, .ceny-tab th.num { text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap; }
.ceny-tab tbody tr { cursor:pointer; }
.ceny-tab tbody tr:hover { background:#FAF7F2; }
.ceny-tab tbody tr.vybrany { background:#FFF5F2; }
.ceny-tab tbody tr.otvoreny { outline:2px solid var(--wms-red); outline-offset:-2px; }
.ceny-tab .plu { font-family:ui-monospace, SFMono-Regular, Menlo, monospace; font-size:12px; color:#374151; }
.ceny-tab .nazov { font-weight:600; }
.ceny-tab .sub { display:block; font-size:10.5px; color:var(--wms-subtle); font-weight:400; }
.ceny-tab .delta-plus { color:#B91C1C; font-weight:600; }
.ceny-tab .delta-minus { color:#1D4ED8; font-weight:600; }
.ceny-tab .akcia { color:#B91C1C; font-weight:700; }
.ceny-tab .prazdne { color:var(--wms-subtle); }
.ceny-tab .cenovka-ok { color:#065F46; }
.ceny-tab .cenovka-zle { color:#B91C1C; font-weight:600; }
.ceny-tab .znacka { display:inline-block; font-size:10px; font-weight:700; padding:1px 5px; border-radius:4px; margin-left:4px; vertical-align:middle; }
.ceny-tab .znacka.bez-e { background:#FDE68A; color:#111; }
.ceny-tab .znacka.akcia { background:var(--wms-red); color:#fff; }
.ceny-tab .znacka.buduca { background:#E5E7EB; color:#374151; }
.ceny-tab .znacka.pod-nc { background:#FEE2E2; color:#991B1B; }
.ceny-pager { display:flex; gap:10px; align-items:center; justify-content:space-between; padding:8px 4px; font-size:12px; color:var(--wms-subtle); }
.ceny-detail { position:sticky; top:8px; background:var(--wms-surface); border:1px solid var(--wms-border); border-radius:10px; padding:14px; max-height:calc(100vh - 40px); overflow:auto; }
.ceny-detail h3 { margin:0; font-size:16px; }
/* skladová karta v paneli — stav veľkým, zvyšok drobným, nech panel nenarastie */
.ceny-karta-stav { background:var(--wms-bg, #F9FAFB); border:1px solid var(--wms-border); border-radius:8px;
  padding:8px 10px; margin-bottom:6px; }
.ceny-karta-stav b { font-size:20px; font-variant-numeric:tabular-nums; }
.ceny-detail .hl { display:flex; justify-content:space-between; gap:8px; align-items:flex-start; }
.ceny-detail .meta { font-size:12px; color:var(--wms-subtle); margin:4px 0 10px; }
.ceny-detail table { width:100%; font-size:12.5px; border-collapse:collapse; }
.ceny-detail table th { text-align:left; font-size:10.5px; color:var(--wms-subtle); text-transform:uppercase; letter-spacing:.03em; padding:4px 6px; border-bottom:1px solid var(--wms-border); }
.ceny-detail table td { padding:5px 6px; border-bottom:1px solid #F3F4F6; vertical-align:top; }
.ceny-detail table td.num { text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap; }
.ceny-detail .sekcia { margin-top:14px; font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:#374151; display:flex; justify-content:space-between; align-items:center; }
.ceny-os { list-style:none; margin:6px 0 0; padding:0; }
.ceny-os li { display:grid; grid-template-columns:78px 1fr auto; gap:8px; padding:6px 0; border-bottom:1px solid #F3F4F6; font-size:12.5px; align-items:baseline; }
.ceny-os .kedy { color:var(--wms-subtle); font-variant-numeric:tabular-nums; font-size:11.5px; }
.ceny-os .co { min-width:0; }
.ceny-os .co small { display:block; color:var(--wms-subtle); font-size:11px; }
.ceny-os .cena { font-variant-numeric:tabular-nums; white-space:nowrap; text-align:right; }
.ceny-os .cena s { color:var(--wms-subtle); margin-right:4px; }
.ceny-os .druh { display:inline-block; width:8px; height:8px; border-radius:50%; margin-right:6px; vertical-align:middle; }
.ceny-os .druh.sale { background:#1D4ED8; } .ceny-os .druh.sale_gs5 { background:#047857; }
.ceny-os .druh.purchase { background:#9CA3AF; } .ceny-os .druh.akcia_zadana { background:var(--wms-red); }
.ceny-os .druh.akcia_zistena { background:#F59E0B; }
.ceny-form .wms-fg { margin-bottom:10px; }
.ceny-form .riadok { display:flex; gap:10px; flex-wrap:wrap; }
.ceny-form .riadok > * { flex:1 1 140px; }
.ceny-form .nahlad { max-height:220px; overflow:auto; border:1px solid var(--wms-border); border-radius:6px; margin-top:6px; }
.ceny-form .nahlad table { width:100%; font-size:12px; border-collapse:collapse; }
.ceny-form .nahlad td { padding:4px 8px; border-bottom:1px solid #F3F4F6; }
.ceny-form .nahlad td.num { text-align:right; font-variant-numeric:tabular-nums; }
.ceny-form .nahlad input { width:84px; text-align:right; }
.ceny-suhrn { font-size:12px; color:var(--wms-subtle); margin:0 0 6px; }

/* ═══ WMS → CENY z telefónu (public/wms/wms-ceny-mobil.js) ═══════════════ */
#wms-pane-ceny .wms-page.cm { max-width:760px; margin:0 auto; padding:16px; }
.cm-head { display:flex; justify-content:space-between; align-items:center; gap:10px; margin-bottom:10px; }
.cm-head h2 { margin:0; font-size:20px; }
.cm-head .wms-sel { max-width:220px; min-height:36px; }
.cm-hladanie { display:flex; gap:8px; }
.cm-hladanie .wms-input { flex:1 1 auto; min-height:44px; font-size:16px; }   /* 16px = iPhone nepriblíži stránku */
.cm-hladanie .cm-sken { min-width:52px; min-height:44px; display:inline-flex; align-items:center; justify-content:center; padding:0; }
.cm-chips { display:flex; gap:6px; flex-wrap:wrap; margin:10px 0 6px; }
/* s id, lebo modul WMS dáva každému <button> vlastný červený vzhľad a čipy by boli všetky „zapnuté" */
/* vzhľad tlačidiel modulu WMS (motív loyalty-ui-v2) prebíja aj id — čipy potrebujú !important, inak sú všetky červené */
#wms-pane-ceny .cm-chip { border:1px solid var(--wms-border) !important; background:#fff !important; border-radius:999px; padding:5px 11px; font-size:12.5px; font-weight:500; color:#374151 !important; display:inline-flex; gap:6px; align-items:center; box-shadow:none !important; min-height:0; }
#wms-pane-ceny .cm-chip.on { background:var(--wms-red) !important; border-color:var(--wms-red) !important; color:#fff !important; }
#wms-pane-ceny .cm-chip.warn:not(.on) { border-color:#F59E0B !important; color:#92400E !important; background:#FFFBEB !important; }
.cm-suhrn { font-size:12px; margin:0 0 8px; }
.cm-hint { color:var(--wms-subtle); font-size:13.5px; padding:28px 12px; text-align:center; border:1px dashed var(--wms-border); border-radius:10px; }
.cm-zoznam { display:flex; flex-direction:column; gap:8px; }
.cm-karta { display:flex; justify-content:space-between; gap:12px; align-items:center; background:var(--wms-surface); border:1px solid var(--wms-border); border-radius:10px; padding:10px 12px; cursor:pointer; }
.cm-karta:active { background:#FAF7F2; }
.cm-karta.otvorena { outline:2px solid var(--wms-red); outline-offset:-2px; }
.cm-karta-l { min-width:0; flex:1 1 auto; }
.cm-karta-r { text-align:right; flex:0 0 auto; }
.cm-nazov { font-weight:600; font-size:15px; line-height:1.25; }
.cm-meta { font-size:12px; color:var(--wms-subtle); margin-top:2px; }
.cm-znacky { display:flex; gap:4px; flex-wrap:wrap; margin-top:4px; }
.cm-zn { font-size:10.5px; font-weight:700; padding:1px 6px; border-radius:4px; background:#F3F4F6; color:#374151; }
.cm-zn.bez-e { background:#FDE68A; color:#111; }
.cm-zn.ok { background:#ECFDF5; color:#065F46; }
.cm-zn.zle { background:#FEE2E2; color:#991B1B; }
.cm-zn.warn { background:#FFFBEB; color:#92400E; }
.cm-cena { font-size:22px; font-weight:800; font-variant-numeric:tabular-nums; white-space:nowrap; letter-spacing:-.01em; }
.cm-cena.akcia { color:#B91C1C; }
.cm-cena.prazdna { font-size:13px; font-weight:500; color:var(--wms-subtle); }
.cm-pod { font-size:11.5px; color:var(--wms-subtle); white-space:nowrap; }
.cm-pod s { margin-right:2px; }
.cm-detail { margin-top:12px; }
.cm-sheet { background:var(--wms-surface); border:1px solid var(--wms-border); border-radius:12px; padding:14px; }
.cm-sheet-head { display:flex; justify-content:space-between; gap:10px; align-items:flex-start; }
.cm-sheet-head b { font-size:16px; }
.cm-velka { margin:10px 0 8px; padding:12px; background:#FAF7F2; border-radius:10px; }
.cm-velka .cm-cena { font-size:34px; }
.cm-velka .cm-pod { font-size:13px; }
.cm-warn { color:#B45309; font-weight:600; }
.cm-akcie { display:flex; gap:8px; flex-wrap:wrap; margin:8px 0; }
.cm-akcie .wms-btn-sm { min-height:38px; }
.cm-formular { border:1px solid var(--wms-border); border-radius:10px; padding:12px; margin:8px 0; display:flex; flex-direction:column; gap:8px; }
.cm-formular .wms-input, .cm-formular .wms-sel { min-height:42px; font-size:16px; }
.cm-riadok { display:flex; gap:8px; } .cm-riadok > * { flex:1 1 0; min-width:0; }
.cm-sekcia { margin-top:14px; font-size:11.5px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:#374151; }
.cm-tab { width:100%; border-collapse:collapse; font-size:13px; margin-top:6px; }
.cm-tab td { padding:6px 6px; border-bottom:1px solid #F3F4F6; }
.cm-tab td.num { text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap; }
.cm-tab tr.tu td { background:#FFF5F2; }
.cm-tab .akcia { color:#B91C1C; font-weight:700; }
.cm-os { list-style:none; margin:6px 0 0; padding:0; }
.cm-os li { display:grid; grid-template-columns:72px 1fr auto; gap:8px; padding:7px 0; border-bottom:1px solid #F3F4F6; font-size:12.5px; align-items:baseline; }
.cm-os .kedy { color:var(--wms-subtle); font-size:11.5px; font-variant-numeric:tabular-nums; }
.cm-os .co { min-width:0; } .cm-os .co small { display:block; color:var(--wms-subtle); font-size:11px; }
.cm-os .cena { white-space:nowrap; font-variant-numeric:tabular-nums; } .cm-os .cena s { color:var(--wms-subtle); }
.cm-os .druh { display:inline-block; width:8px; height:8px; border-radius:50%; margin-right:6px; vertical-align:middle; }
.cm-os .druh.sale { background:#1D4ED8; } .cm-os .druh.sale_gs5 { background:#047857; } .cm-os .druh.purchase { background:#9CA3AF; }
.cm-os .druh.akcia_zadana { background:var(--wms-red); } .cm-os .druh.akcia_zistena { background:#F59E0B; }
@media (max-width: 700px) {
  #wms-pane-ceny .wms-page.cm { padding:10px; }
  .cm-head h2 { font-size:18px; }
  .cm-head .wms-sel { max-width:180px; }
}
/* akcia v pravom paneli — predajne ako zaškrtávacie štítky */
.ceny-predajne { display:flex; gap:6px; flex-wrap:wrap; margin:4px 0 4px; }
.ceny-predajna { display:inline-flex; gap:6px; align-items:center; border:1px solid var(--wms-border); border-radius:8px; padding:4px 8px; font-size:12px; cursor:pointer; background:#fff; }
.ceny-predajna.on { border-color:var(--wms-red); background:#FFF5F2; }
.ceny-predajna span { color:var(--wms-subtle); }
.ceny-detail h3 { margin:0; }

/* ── NASTAVENIA → ROLY A PRÁVA ────────────────────────────────────────────
   Strom sekcia → obrazovka → funkcia. Riadkov je 121, takže na hustote
   záleží: menšie písmo, tenké riadky, odsadenie namiesto rámčekov. */
.prava-obal { padding: 4px 2px 20px; }
.prava-hlavicka { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; flex-wrap: wrap; margin-bottom: 12px; }
.prava-h2 { font-size: 16px; font-weight: 600; margin: 0; color: #111827; }
.prava-podnadpis { font-size: 12px; color: #6b7280; margin: 3px 0 0; max-width: 620px; }
.prava-akcie-hore { display: flex; gap: 8px; }

.prava-roly { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; }
.prava-rola {
  width: auto; text-align: left; display: flex; flex-direction: column; gap: 1px;
  padding: 7px 12px; border: 1px solid #e5e7eb; border-radius: 10px; background: #fff; cursor: pointer;
}
.prava-rola:hover { border-color: #9ca3af; }
.prava-rola.je-aktivna { background: #b91c1c; border-color: #b91c1c; }
.prava-rola-nazov { font-size: 13px; font-weight: 600; color: #111827; }
.prava-rola.je-aktivna .prava-rola-nazov { color: #fff; }
.prava-rola-meta { font-size: 10.5px; color: #6b7280; }
.prava-rola.je-aktivna .prava-rola-meta { color: #fecaca; }

.prava-suhrn {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  font-size: 12.5px; padding: 8px 12px; background: #f9fafb;
  border: 1px solid #e5e7eb; border-radius: 10px; margin-bottom: 10px;
}
.prava-ulozit { margin-left: auto; display: flex; align-items: center; gap: 8px; }
.prava-neulozene { font-size: 11.5px; color: #b45309; font-weight: 600; }

.prava-tabulka-obal { border: 1px solid #e5e7eb; border-radius: 10px; overflow: hidden; }
.prava-tabulka { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.prava-tabulka td { padding: 4px 10px; border-bottom: 1px solid #f3f4f6; vertical-align: middle; }
.prava-r--sekcia td { background: #f3f4f6; }
.prava-r--sekcia .prava-nazov { font-weight: 700; text-transform: uppercase; font-size: 11px; letter-spacing: .03em; }
.prava-r--obrazovka .prava-nazov { font-weight: 600; }
.prava-r--funkcia .prava-nazov { color: #4b5563; }
.prava-r--funkcia .prava-nazov::before { content: '↳ '; color: #9ca3af; }
.prava-nazov { display: inline-block; }
.prava-kluc { display: block; font-size: 10px; color: #9ca3af; font-family: "DejaVu Sans Mono", monospace; }

.prava-prepinace { white-space: nowrap; width: 1%; }
.prava-uroven {
  width: auto; display: inline-block; padding: 3px 10px; margin-right: 4px;
  border: 1px solid #e5e7eb; border-radius: 999px; background: #fff;
  font-size: 11.5px; color: #6b7280; cursor: pointer;
}
.prava-uroven:hover { border-color: #9ca3af; }
/* Zdedená voľba je len bledý náznak — vlastná je plná farba, aby bolo na
   prvý pohľad vidieť, čo je naozaj nastavené a čo len spadlo zhora. */
.prava-uroven.je-zvolena.je-dedena { opacity: .45; }
.prava-zrus { width: auto; display: inline-block; padding: 2px 7px; border: 0; background: none; color: #9ca3af; cursor: pointer; font-size: 12px; }
.prava-zrus:hover { color: #b91c1c; }
.prava-stav { width: 120px; text-align: right; }
.prava-dedi { font-size: 10.5px; color: #9ca3af; }

@media (max-width: 760px) {
  .prava-kluc, .prava-stav { display: none; }
  .prava-uroven { padding: 3px 7px; font-size: 11px; }
}

/* Karty Roly / Ľudia a detail človeka v matici práv. */
.prava-karty { display: flex; gap: 6px; margin-top: 8px; }
.prava-karta {
  width: auto; padding: 4px 14px; border: 1px solid #e5e7eb; border-radius: 999px;
  background: #fff; font-size: 12.5px; color: #4b5563; cursor: pointer;
}
.prava-karta.je-aktivna { background: #b91c1c; border-color: #b91c1c; color: #fff; font-weight: 600; }

.prava-ludia td { padding: 7px 10px; }
.prava-r.je-otvoreny > td { background: #fef2f2; }
.prava-chip {
  display: inline-block; padding: 2px 9px; margin: 1px 2px 1px 0;
  border-radius: 999px; background: #eef2ff; color: #3730a3; font-size: 11.5px;
}
.prava-chip--vyn { background: #fef3c7; color: #92400e; }
.prava-vynimka { font-size: 10.5px; color: #b45309; font-weight: 600; }

.prava-detail > td { background: #fafafa; padding: 0 !important; }
.prava-detail-obal { padding: 12px 14px 16px; border-left: 3px solid #b91c1c; }
.prava-detail-roly { margin-bottom: 10px; }
.prava-detail-roly h3 { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .03em; color: #6b7280; margin: 0 0 6px; }
.prava-rola-riadok { display: flex; align-items: center; gap: 10px; padding: 3px 0; font-size: 12.5px; }
.prava-rola-riadok label { display: flex; align-items: center; gap: 6px; min-width: 200px; cursor: pointer; }
.prava-rola-riadok select { max-width: 230px; font-size: 12px; padding: 3px 8px; }
.prava-chip--super { background: #f0fdf4; color: #15803d; }

/*
 * PÁS „POŽIČANÉ ČÍSLA" NAD NÁVRHOM OBJEDNÁVKY.
 *
 * Nová predajňa počíta z histórie vzorovej predajne, kým si nenazbiera
 * vlastnú. Pás musí byť vidieť na prvý pohľad a cez celú šírku — týka sa
 * každého riadku tabuľky, nie jedného artikla, takže ikonka pri súhrne
 * (ako pri chýbajúcich účtenkách) by na to bola primálo.
 */
.wms-orders-vzor {
  margin: 8px 0 4px;
  padding: 9px 12px;
  border: 1px solid #F59E0B;
  border-left-width: 4px;
  border-radius: 8px;
  background: #FFFBEB;
  color: #92400E;
  font-size: 12.5px;
  line-height: 1.5;
}
.wms-orders-vzor b { font-weight: 700; }
.wms-orders-vzor .pozn { display: block; margin-top: 3px; color: #B45309; font-style: italic; }

/*
 * PODIEL VÁKUOVÉHO BALENIA V RIADKU NÁVRHU.
 *
 * Sedí pod navrhnutým množstvom, takže musí byť drobné a nesmie riadok
 * rozťahovať. Políčko je úzke (tri znaky stačia na „100") a vyzerá ako text,
 * kým sa naň neklikne — inak by 457 rámčekov v tabuľke prekričalo čísla,
 * kvôli ktorým sa na obrazovku pozerá.
 */
.wms-orders-vb {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 3px;
  margin-top: 2px;
  font-size: 10.5px;
  color: var(--wms-subtle);
}
.wms-orders-vb-qty { white-space: nowrap; }
.wms-orders-vb-pct {
  width: 30px;
  padding: 0 2px;
  border: 1px solid transparent;
  border-radius: 4px;
  background: transparent;
  font: inherit;
  font-variant-numeric: tabular-nums;
  text-align: right;
  color: var(--wms-subtle);
}
.wms-orders-vb-pct::placeholder { color: #C4C4C4; }
.wms-orders-vb-pct:hover { border-color: var(--wms-border); background: #fff; }
.wms-orders-vb-pct:focus {
  border-color: var(--wms-red);
  background: #fff;
  color: var(--wms-text);
  outline: none;
}
/* vlastný podiel artikla sa musí odlíšiť od zdedeného globálneho */
.wms-orders-vb-pct.vlastny { color: #B45309; font-weight: 700; }
.wms-orders-vb-znak { color: #C4C4C4; }

/* Zmeniť cenu — výber predajní, do ktorých sa zapíše (viac naraz). */
#wms-pane-ceny .ceny-zm-pp { margin: 10px 0 4px; }
#wms-pane-ceny .ceny-zm-pp-list { display: flex; flex-wrap: wrap; gap: 4px 14px; max-height: 92px; overflow: auto;
  border: 1px solid var(--wms-border); border-radius: 8px; padding: 8px 10px; }
#wms-pane-ceny .ceny-zm-pp-list label { display: inline-flex; align-items: center; gap: 6px; font-size: 12.5px; white-space: nowrap; }
#wms-pane-ceny .ceny-zm-pp-list input { accent-color: #B91C1C; }

/* MOP → Mäso ISM: riadok predajne a jej verdikt pod ním tvoria jeden celok */
.wms-table tr.mmi-hlavny td { border-bottom: 0; padding-bottom: 3px; }
.wms-table tr.mmi-verdikt td { padding-bottom: 10px; }

/*
 * MIESTO POČÍTANIA (mobilná inventúra, 29. 9. 2026). Tri prepínače pod
 * hlavičkou; zapnuté miesto je červené ako hlavné tlačidlo, aby bolo na
 * telefóne jasné, kam sa práve píše.
 */
#wms-mobile-inventory .wms-minv-places {
  display: flex;
  gap: 6px;
  padding: 0 10px 8px;
}
#wms-mobile-inventory .wms-minv-place {
  flex: 1 1 0;
  min-width: 0;
  min-height: 40px;
  border: 1px solid var(--wms-border, #d1d5db);
  border-radius: 8px;
  background: #fff;
  color: var(--wms-text, #111827);
  font-size: 13px;
  font-weight: 600;
  padding: 6px 8px;
  cursor: pointer;
}
#wms-mobile-inventory .wms-minv-place.is-on {
  background: var(--wms-red, #b91c1c);
  border-color: var(--wms-red, #b91c1c);
  color: #fff;
}
#wms-mobile-inventory .minv-miesto-info {
  font-size: 12.5px;
  color: #334155;
  margin-bottom: 6px;
}
#wms-mobile-inventory .minv-miesto-akt {
  color: var(--wms-red, #b91c1c);
}
#wms-mobile-inventory .wms-minv-counted-sheet .minv-zero-toggle {
  margin: 8px 10px 4px;
}

/* ══ MOBILNÁ INVENTÚRA — kompaktná položka + povinné DMT (29. 9. 2026) ══
   Zoltán: „keď vstúpim do položky, chcem mať menej informácií na displeji,
   aby som mal všetko o tej položke na očiach". Kým je položka otvorená,
   na telefóne ustúpi všetko nad ňou (predajňa, typ, miesta, tlačidlá,
   hľadanie, zoznam); predajňa · typ · miesto je jeden riadok v hlavičke
   položky. Po uložení alebo ✕ sa všetko vráti. */
@media (max-width: 768px) {
  #wms-mobile-inventory.minv-form-open .wms-mobile-inv-header,
  #wms-mobile-inventory.minv-form-open #minv-places,
  #wms-mobile-inventory.minv-form-open #minv-alerts,
  #wms-mobile-inventory.minv-form-open .wms-minv-actions-grid,
  #wms-mobile-inventory.minv-form-open #minv-manual-ean-row,
  #wms-mobile-inventory.minv-form-open .wms-minv-quick-row,
  #wms-mobile-inventory.minv-form-open #minv-todo-row,
  #wms-mobile-inventory.minv-form-open #minv-rozpracovane,
  #wms-mobile-inventory.minv-form-open #minv-results { display: none !important; }
}
#wms-mobile-inventory .minv-kontext { font-size: 11.5px; color: #64748b; margin-top: 1px; }
/* tovar bez dátumu: popis na celý riadok, pod ním DMT z obalu a množstvo */
.minv-batch-row.minv-bez-dmt { flex-wrap: wrap; }
.minv-batch-row.minv-bez-dmt .minv-batch-info { flex: 1 1 100%; cursor: default; }
.minv-batch-row.minv-bez-dmt .minv-batch-pocet { color: #B45309; }
.minv-batch-row.minv-bez-dmt .minv-group-exp { flex: 1 1 auto; min-width: 0; min-height: 44px; font-size: 16px; }
.minv-batch-row.minv-bez-dmt .minv-batch-qty:disabled { background: #F1F5F9; }

/* Tovar — rýchle prepínače v stĺpci Stav (29. 9. 2026): objednávanie a bez éčok */
.wms-prod-rychle { display: flex; flex-wrap: wrap; gap: 4px 8px; align-items: center; margin-top: 4px; }
.wms-prod-rychle .wms-prod-obj { height: 26px; min-height: 26px; padding: 0 22px 0 6px; font-size: 11.5px; width: auto; max-width: 130px; }
.wms-prod-rychle .wms-prod-beze { display: inline-flex; align-items: center; gap: 4px; font-size: 11.5px; white-space: nowrap; cursor: pointer; }
.wms-prod-rychle .wms-prod-beze input { width: 15px; height: 15px; margin: 0; }

/* Návrh OBJ — dokedy je načítaný predaj z pokladní (30. 9. 2026) */
.wms-orders-predaj-stav {
  margin: 4px 0 2px;
  font-size: 12px;
  color: var(--wms-muted, #64748B);
}
.wms-orders-predaj-stav.is-neuplny {
  color: #B45309;
  font-weight: 600;
}

/*
 * ODPIS PO SPOTREBE — pásik pri prvom prihlásení (30. 9. 2026). Červený, lebo
 * je to jediná vec na obrazovke, ktorú treba spraviť hneď; zoznam je zbalený,
 * aby na telefóne nezabral celú výšku.
 */
#wms-mobile-inventory .minv-odpis-bar {
  margin: 0 10px 10px;
  padding: 10px 12px;
  border: 1px solid #fca5a5;
  border-left: 4px solid #dc2626;
  border-radius: 10px;
  background: #fef2f2;
  color: #7f1d1d;
  font-size: 13px;
}
#wms-mobile-inventory .minv-odpis-text { margin-top: 2px; font-size: 12.5px; }
#wms-mobile-inventory .minv-odpis-detail { margin-top: 6px; }
#wms-mobile-inventory .minv-odpis-detail summary { cursor: pointer; font-size: 12.5px; }
#wms-mobile-inventory .minv-odpis-list { max-height: 180px; overflow: auto; margin-top: 6px; }
#wms-mobile-inventory .minv-odpis-row {
  display: flex; justify-content: space-between; gap: 10px;
  padding: 3px 0; border-bottom: 1px solid #fee2e2;
}
#wms-mobile-inventory .minv-odpis-btns { display: flex; gap: 8px; margin-top: 10px; }
#wms-mobile-inventory .minv-odpis-btns .wms-btn { flex: 1 1 0; min-height: 44px; }

/* Nákup vs predaj — jednoduchá tabuľka (30. 9. 2026): verdikt ako štítok, kategórie tučne */
.wms-pvs-v { display: inline-block; padding: 2px 8px; border-radius: 999px; font-size: 11.5px; font-weight: 600; white-space: nowrap; }
.wms-pvs-v-ok { background: #dcfce7; color: #166534; }
.wms-pvs-v-slabe { background: #fef3c7; color: #92400e; }
.wms-pvs-v-ne { background: #fee2e2; color: #991b1b; }
.wms-pvs-v-bd { background: #f1f5f9; color: #475569; }
.wms-pvs-j .wms-pvs-j-kat td { background: #f8fafc; }
.wms-pvs-j .wms-pvs-j-pod td { background: #fcfcfd; }
.wms-pvs-j .wms-pvs-vsum { font-size: 12px; white-space: nowrap; }
.wms-pvs-j th { white-space: nowrap; }

/* Teplotná mapa tržieb (30. 9. 2026): 12 týždňov × 7 dní, pod ňou hodiny zvoleného dňa */
.wms-heat { margin: 6px 0 12px; padding: 10px 12px; border: 1px solid var(--wms-border, #e5e7eb); border-radius: 10px; background: #fff; }
.wms-heat-head { display: flex; gap: 10px; align-items: baseline; flex-wrap: wrap; margin-bottom: 8px; font-size: 13px; }
.wms-heat-grid { display: flex; flex-direction: column; gap: 3px; overflow-x: auto; }
.wms-heat-row { display: flex; gap: 3px; align-items: center; }
.wms-heat-week { width: 46px; flex: 0 0 46px; font-size: 11px; color: #64748b; text-align: right; padding-right: 4px; }
.wms-heat-cell { width: 56px; height: 30px; flex: 0 0 56px; border: 1px solid transparent; border-radius: 5px; font-size: 11px; color: #111827; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; padding: 0; }
.wms-heat-cell b { font-weight: 600; text-shadow: 0 0 2px #fff; }
.wms-heat-cell.is-in { border-color: #94a3b8; }
.wms-heat-cell.is-sel { outline: 2px solid #111827; outline-offset: -1px; }
.wms-heat-cell.wms-heat-mimo { background: transparent; cursor: default; }
.wms-heat-cell.wms-heat-dn { background: transparent; cursor: default; color: #64748b; height: 18px; }
.wms-heat-hours-title { margin: 10px 0 4px; font-size: 12.5px; font-weight: 600; }
.wms-heat-hours { display: flex; gap: 4px; align-items: flex-end; height: 96px; overflow-x: auto; padding-bottom: 2px; }
.wms-heat-hour { flex: 1 0 34px; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; height: 100%; font-size: 10.5px; color: #475569; }
.wms-heat-hour .wms-heat-bar { width: 100%; min-height: 2px; border-radius: 3px 3px 0 0; }
.wms-heat-hour em { font-style: normal; font-size: 10px; color: #94a3b8; }
@media (max-width: 640px) { .wms-heat-cell { width: 40px; flex-basis: 40px; height: 26px; } .wms-heat-week { width: 40px; flex-basis: 40px; } }

/* Kópia cenníka na predajňu (30. 9. 2026) — zoznam predajní v dvoch stĺpcoch */
.wms-pl-copy-depts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4px 12px; max-height: 220px; overflow: auto; padding: 6px 8px; border: 1px solid var(--wms-border, #e5e7eb); border-radius: 8px; }
@media (max-width: 520px) { .wms-pl-copy-depts { grid-template-columns: 1fr; } }

/* Návrh objednávok — rozpad zásoby po dodávkach (30. 9. 2026) */
.wms-orders-batch-row > .wms-orders-batch-cell { padding: 0; background: #fafafa; }
.wms-orders-batch-box { padding: 8px 12px 10px; }
.wms-orders-batch-table { font-size: 12.5px; margin: 0; }
.wms-orders-batch-table th { font-weight: 600; color: #475569; }
.wms-orders-batch-table td, .wms-orders-batch-table th { padding: 3px 8px; }
.wms-orders-batch-table tr.wms-orders-batch-out td { background: #fff1f2; color: #7f1d1d; }
button.wms-stock-readonly { cursor: pointer; border: 1px solid transparent; background: none; font: inherit; }
button.wms-stock-readonly:hover { text-decoration: underline; }

/* Mobilný príjem má rovnaké čitateľné karty a dotykové ciele ako inventúra. */
#wms-mobile-receiving { color: #29221f; background: #fbf7f0; }
#wms-mobile-receiving, #wms-mobile-receiving * { box-sizing: border-box; }
#wms-mobile-receiving .iris-receiving-status { margin: 0; padding: 8px 12px; font-size: 13px; color: #71685e; }
#wms-mobile-receiving input, #wms-mobile-receiving select { min-height: 52px; font-size: 16px; min-width: 0; }
#wms-mobile-receiving button { min-height: 52px; touch-action: manipulation; }
#wms-mobile-receiving .wms-mrcv-actions-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 8px; }
#wms-mobile-receiving .wms-mobile-btn { display: flex; gap: 7px; align-items: center; justify-content: center; border: 1px solid #ded5c8; border-radius: 12px; background: white; color: #29221f; font-size: 14px; padding: 10px 8px; font-weight: 600; }
#wms-mobile-receiving .wms-mrcv-top-row { display: grid; text-align: left; gap: 5px; min-height: 76px; margin-bottom: 8px; padding: 14px; border: 1px solid #e6ddd1; border-radius: 14px; background: white; color: #29221f; }
#wms-mobile-receiving .wms-mrcv-top-name { font-size: 16px; font-weight: 650; color: #29221f; }
#wms-mobile-receiving .wms-mrcv-top-meta { font-size: 13px; color: #71685e; line-height: 1.4; }
#wms-mobile-receiving .wms-mobile-count { background: white; border: 1px solid #e6ddd1; border-radius: 14px; margin: 10px; padding: 14px; }
#wms-mobile-receiving .wms-mobile-count-actions { gap: 8px; }
#wms-mobile-receiving .wms-mobile-count-actions .wms-btn { white-space: normal; }
#wms-mobile-receiving .iris-receiving-stepper { display: grid; grid-template-columns: 1fr; gap: 8px; }
#wms-mobile-receiving .iris-receiving-stepper > button { display: none; }
#wms-mobile-receiving .iris-receiving-stepper.is-pieces { grid-template-columns: 52px minmax(0,1fr) 52px; }
#wms-mobile-receiving .iris-receiving-stepper.is-pieces > button { display: block; text-align: center; border: 1px solid #ded5c8; border-radius: 12px; background: #fbf7f0; color: #29221f; font-size: 24px; padding: 0; }
#wms-mobile-receiving .iris-receiving-stepper input { width: 100%; margin: 0; text-align: center; }
@media(max-width:600px) {
 #wms-mobile-receiving .wms-mobile-inv-header { display: flex; flex-wrap: wrap; gap: 8px; padding: 10px; }
 #wms-mobile-receiving #mrcv-dept, #wms-mobile-receiving #mrcv-supplier { flex: 1 1 calc(100% - 64px); width: calc(100% - 64px); }
 #wms-mobile-receiving #mrcv-supplier { order: 3; flex-basis: 100%; width: 100%; }
 #wms-mobile-receiving .wms-mobile-inv-header > label { flex: 1 1 100% !important; min-width: 0; }
 #wms-mobile-receiving .wms-mobile-inv-header > label input { width: 100%; }
 #wms-mobile-receiving .wms-mobile-sticky-actions { padding: 8px 10px; }
}

@media(max-width:600px) {
 #wms-mobile-receiving .wms-mobile-inv-header { flex-direction: row; align-items: center; }
 #wms-mobile-receiving .wms-mobile-inv-header > label { width: 100%; }
}
#wms-mobile-receiving > * { flex-shrink: 0; }
#wms-mobile-receiving #mrcv-form[hidden] { display: none; }

.wms-toast .wms-toast-dismiss { display: flex; width: 28px; height: 28px; min-width: 28px; align-items: center; justify-content: center; padding: 0; border: 0; border-radius: 6px; background: transparent; color: white; font-size: 22px; }
@media(max-width:768px) {
 body.loyalty-sidebar-nav .wms-toast { pointer-events: none; }
 body.loyalty-sidebar-nav .wms-toast .wms-toast-dismiss { pointer-events: auto; }
}

/* Mobilné WMS obrazovky používajú priestor medzi spoločnou hlavičkou a dockom. */
@media(max-width:768px) {
 body.loyalty-sidebar-nav #wmsSection #wms-pane-mobile-inventory.active {
   position: static !important; inset: auto !important; height: auto !important; padding: 0 !important; flex: 1 1 auto; min-height: 0; overflow: hidden;
 }
 body.loyalty-sidebar-nav #wms-mobile-inventory.mi-v2 { min-height: 0; height: 100%; max-height: 100%; margin: 0; padding: 12px; }
 body.loyalty-sidebar-nav #wms-mobile-inventory.mi-v2 .mi-header { align-items: center; }
 body.loyalty-sidebar-nav #wms-mobile-inventory.mi-v2 .mi-header select { height: 52px; min-width: 0; width: 100%; }
 body.loyalty-sidebar-nav #wms-mobile-inventory.mi-v2 .mi-header button { min-height: 52px; min-width: 52px; }
 body.loyalty-sidebar-nav #adminMainShell.loyalty-module-wms > .card.max-w-6xl { padding: 0; border-radius: 0; }
 body.loyalty-sidebar-nav #wmsSection > #wms-pane-mobile-receiving.active { padding: 0 !important; }
 #wms-mobile-receiving.mrcv-form-open > .wms-mobile-inv-header,
 #wms-mobile-receiving.mrcv-form-open > .wms-mobile-inv-search,
 #wms-mobile-receiving.mrcv-form-open > #mrcv-top-list,
 #wms-mobile-receiving.mrcv-form-open > #mrcv-mail-box,
 #wms-mobile-receiving.mrcv-form-open > .wms-mobile-counted { display: none; }
 #wms-mobile-receiving #mrcv-form { margin: 8px 12px; }
 #wms-mobile-receiving .iris-receiving-context { color: #71685e; font-size: 13px; padding-bottom: 10px; overflow-wrap: anywhere; }
 #wms-mobile-receiving .wms-mobile-count-actions { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,2fr); }
 #wms-mobile-receiving .wms-mobile-count-actions button { width: 100%; }
 #wms-pane-stock .wms-page { padding: 8px 10px 12px; overflow-y: auto; overflow-x: hidden; }
 #wms-pane-stock .wms-stock-table-area { overflow: visible; flex: 0 0 auto; }
 #wms-pane-stock input, #wms-pane-stock select { min-height: 52px; font-size: 16px; width: 100%; min-width: 0; }
 #wms-pane-stock button { min-height: 52px; }
 #wms-pane-stock .wms-stock-subtabs { flex-wrap: nowrap; overflow-x: auto; padding-bottom: 4px; }
 #wms-pane-stock .wms-stock-subtabs button { flex: 0 0 auto; white-space: nowrap; }
 #wms-pane-stock #wms-stock-toolbar,
 #wms-pane-stock .wms-page.wms-stock-filters-folded #wms-stock-toolbar { display: grid; grid-template-columns: minmax(0,1fr) 100px; gap: 8px; }
 #wms-pane-stock #stock-dept-sel { grid-column: 1 / -1; }
 #wms-pane-stock #stock-search { grid-column: 1; width: 100%; min-width: 0; }
 #wms-pane-stock #stock-scan-btn { display: flex; grid-column: 2; grid-row: 2; align-items: center; justify-content: center; }
 #wms-pane-stock .wms-page.wms-stock-filters-folded #stock-scan-btn { display: flex; }
 #wms-pane-stock .wms-stock-filter-actions { grid-column: 1 / -1; display: flex !important; flex-wrap: wrap; gap: 8px; }
 #wms-pane-stock .wms-page.wms-stock-filters-folded .wms-stock-filter-actions > button:not(#stock-load-levels-btn) { display: none; }
 #wms-pane-stock #stock-load-levels-btn { width: 100%; }
 #wms-pane-stock .wms-stock-summary { grid-column: 1 / -1; }
 #wms-pane-stock .wms-stock-all-listed { display: flex; flex-wrap: wrap; gap: 8px; grid-column: 1 / -1; }
 #wms-pane-stock .wms-stock-all-listed input[type=checkbox] { width: 22px; min-height: 22px; }
 #wms-pane-stock #wms-stock-levels-view .wms-table { display: block; min-width: 0; width: 100%; table-layout: auto; }
 #wms-pane-stock #wms-stock-levels-view .wms-table thead { display: none; }
 #wms-pane-stock #wms-stock-levels-view .wms-table tbody { display: block; width: 100%; }
 #wms-pane-stock #wms-stock-levels-view .wms-table tr.wms-stock-row { display: grid; grid-template-columns: minmax(0,1fr) minmax(80px,auto); gap: 8px 12px; background: white; color: #29221f; border: 1px solid #e6ddd1; border-radius: 14px; padding: 14px; margin: 8px 0; }
 #wms-pane-stock #wms-stock-levels-view .wms-table td { display: block; border: 0; padding: 0 !important; white-space: normal; min-width: 0; max-width: none; text-overflow: initial; overflow-wrap: anywhere; }
 #wms-pane-stock .wms-stock-row-name { font-size: 16px; font-weight: 650 !important; line-height: 1.4; }
 #wms-pane-stock .wms-stock-row-meta { font-size: 13px !important; margin-top: 4px; }
 #wms-pane-stock #wms-stock-levels-view td[data-cell=qty] { grid-column: 2; grid-row: 1; text-align: right !important; font-size: 19px; font-weight: 650; max-width: 130px; }
 #wms-pane-stock #wms-stock-levels-view td[data-cell=product] { grid-column: 1; grid-row: 1; }
 #wms-pane-stock #wms-stock-levels-view td[data-cell=cat],
 #wms-pane-stock #wms-stock-levels-view td[data-cell=arrow] { display: none; }
 #wms-pane-stock #wms-stock-levels-view td[data-cell=expiry] { grid-column: 1; }
 #wms-pane-stock #wms-stock-levels-view td[data-cell=status] { grid-column: 2; grid-row: 2; text-align: right !important; }
 #wms-pane-stock #wms-stock-levels-view td[data-cell=batches] { grid-column: 1; text-align: left !important; font-size: 13px; }
 #wms-pane-stock #wms-stock-levels-view td[data-cell=batches]::before { content: 'Šarže: '; color: #71685e; }
 #wms-pane-stock #wms-stock-levels-view td[data-cell=supplier] { grid-column: 2; font-size: 13px; color: #71685e; text-align: right !important; }
 #wms-pane-stock #wms-stock-levels-view tr.inv-cat-head { display: block; margin-top: 14px; }
 #wms-pane-stock .wms-stock-row-shortage td[data-cell=qty] { color: #b91c1c; }
 #wms-pane-stock .wms-stock-sold { display: block; font-size: 11px; font-weight: 400; color: #71685e; }
}

@media(max-width:768px) {
 #wms-pane-stock #wms-stock-levels-view .wms-table td { background: transparent !important; }
 #wms-pane-stock #wms-stock-levels-view .wms-table td::before { content: none; }
 #wms-pane-stock #wms-stock-levels-view .wms-table td[data-cell=batches]::before { content: 'Šarže: '; }
 #wms-pane-stock #wms-stock-levels-view td[data-cell=expiry]::before { content: 'DMT: '; font-size: 12px; color: #71685e; }
 #wms-stock-batch-modal .wms-modal-header { display: grid; grid-template-columns: minmax(0,1fr); gap: 12px; }
 #wms-stock-batch-modal .wms-modal-header > div:first-child { min-width: 0; }
 #wms-stock-batch-modal .wms-sbm-header-right { display: flex; width: 100%; justify-content: space-between; gap: 8px; }
 #wms-stock-batch-modal .wms-sbm-dept { flex: 1; min-width: 0; }
 #wms-stock-batch-modal .wms-sbm-dept select { max-width: 100%; width: 100%; min-height: 52px; font-size: 16px; }
 #wms-stock-batch-modal .wms-modal-header button { min-width: 52px; min-height: 52px; }
 #wms-stock-batch-modal .wms-modal-footer button { min-height: 52px; }
}

.iris-stock-sort { display: none; }
@media(max-width:768px) {
 #wms-pane-stock .iris-stock-sort { display: flex; gap: 10px; align-items: center; color: #71685e; font-size: 13px; margin: 4px 0 10px; }
 #wms-pane-stock .iris-stock-sort select { flex: 1; min-width: 0; }
}

/* Plán objednávky: vysvetlenie má vlastný priestor aj na mobilnej karte. */
.wms-order-planning-notes { white-space: normal; line-height: 1.4; }
button.wms-stock-readonly.plain-btn {
  display: inline-flex; align-items: center; justify-content: center;
  width: auto; min-width: 52px; min-height: 44px; margin: 0;
  padding: 5px 10px; border: 1px solid #cbd5e1; border-radius: 8px;
  background: #f8fafc; color: #334155;
}
button.wms-stock-readonly.plain-btn.wms-stock-critical { background: #fff1f2; border-color: #fecdd3; color: #9f1239; }
button.wms-stock-readonly.plain-btn.wms-stock-warning { background: #fffbeb; border-color: #fde68a; color: #92400e; }
@media (max-width: 767px) {
  #wms-orders-table-wrap .wms-orders-table tbody tr:not(.wms-orders-cat-row) td[data-cell="suggested"] {
    display: grid; grid-column: 1 / -1; grid-template-columns: auto minmax(0,1fr);
    gap: 4px 12px; align-items: center; white-space: normal;
  }
  #wms-orders-table-wrap .wms-orders-table tbody td[data-cell="suggested"] .wms-orders-suggested-value { text-align: right; }
  #wms-orders-table-wrap .wms-orders-table tbody td[data-cell="suggested"] .wms-order-planning-notes { grid-column: 1 / -1; }
  #wms-orders-table-wrap .wms-orders-table tbody tr:not(.wms-orders-cat-row) td[data-cell="stock"] { grid-column: 1 / -1; align-items: center; }
}

/* ── Vrátené (sumár) a Párovanie vratiek na mobile (1. 10. 2026) ────────────
   Tabuľka dokladov s 8 stĺpcami mala na telefóne stav a tlačidlá za pravým
   okrajom, tlač merala 27×30 px a zoznam roloval vo vlastnom okienku vnútri
   stránky. Pod 767 px je každý doklad karta: číslo a stav navrchu, údaje
   s popisom (data-lbl) v dvoch stĺpcoch, dole dve veľké tlačidlá; roluje celá
   stránka. Na počítači ostáva tabuľka bez zmeny. */
.wms-retm-lbl { display: none; }
@media (max-width: 767px) {
  /* lišta: dátumy na plnú šírku — prázdny input[type=date] sa v Safari zbalí na krúžok;
     16 px písmo, aby iPhone pri ťuknutí nezväčšoval stránku */
  #wms-rcv-retsum-panel .wms-retsum-bar {
    display: grid; grid-template-columns: 1fr 1fr; gap: 8px 10px; padding: 10px 12px; align-items: end;
  }
  #wms-rcv-retsum-panel .wms-retsum-title { grid-column: 1 / -1; font-size: 16px; }
  #wms-rcv-retsum-panel .wms-retsum-field { flex-direction: column; align-items: stretch; gap: 3px; font-size: 12px; }
  #wms-rcv-retsum-panel .wms-retsum-field .wms-input {
    width: 100%; min-width: 0; min-height: 44px; font-size: 16px; padding: 6px 10px; box-sizing: border-box;
  }
  #wms-rcv-retsum-panel .wms-retsum-field:has(input[type="checkbox"]) {
    flex-direction: row; align-items: center; gap: 8px; min-height: 44px; font-size: 15px; color: inherit;
  }
  #wms-rcv-retsum-panel .wms-retsum-field input[type="checkbox"] { width: 22px; height: 22px; }
  #wms-rcv-retsum-panel .wms-retsum-bar > .wms-btn {
    justify-self: end; min-width: 48px; min-height: 44px; font-size: 18px;
  }
  #wms-rcv-retsum-panel .wms-retsum-body { max-height: none; min-height: 0; overflow: visible; }
  #wms-rcv-retsum-panel .wms-retsum-block-head { display: flex; flex-wrap: wrap; gap: 4px 8px; font-size: 14px; padding: 10px 12px; }
  #wms-rcv-retsum-panel .wms-retsum-block-head .muted { font-size: 12px; }
  #wms-rcv-retsum-panel #retsum-doc-q { margin-left: 0 !important; max-width: none !important; width: 100%; min-height: 44px !important; font-size: 16px !important; }
  #wms-rcv-retsum-panel .wms-retsum-grid { grid-template-columns: 1fr; }
  #wms-rcv-retsum-panel .wms-retsum-cards { grid-template-columns: 1fr 1fr; }
  #wms-rcv-retsum-panel .wms-retsum-card-val { font-size: 18px; }
  #wms-rcv-retsum-panel .wms-retsum-card-lbl { font-size: 11px; }
  /* !important: inak vyhrá body.loyalty-ui-v2 .wms-table td (9 × 16 px) a stĺpce sa nezmestia */
  #wms-rcv-retsum-panel .wms-retsum-table th,
  #wms-rcv-retsum-panel .wms-retsum-table td { font-size: 13px; padding: 7px 6px !important; }

  /* zoznam dokladov ako karty — rovnaký vzor pre Vrátené (sumár) aj Párovanie vratiek.
     Spoločná predpona s id panelu: bunky inak prebije body.loyalty-ui-v2 .wms-table td
     (padding !important) a .wms-retsum-table td; pravidlo pre data-k je vždy silnejšie než pre td. */
  #wms-rcv-retsum-panel #retsum-doc-table,
  #wms-rcv-pairing-panel .wms-retlist-scroll .wms-retsum-table { min-width: 0 !important; width: 100%; }
  #wms-rcv-pairing-panel .wms-retlist-scroll { max-height: none; overflow: visible; }
  #wms-rcv-retsum-panel #retsum-doc-table thead,
  #wms-rcv-pairing-panel .wms-retlist-scroll .wms-retsum-table thead { display: none; }
  #wms-rcv-retsum-panel #retsum-doc-table tbody,
  #wms-rcv-pairing-panel .wms-retlist-scroll .wms-retsum-table tbody { display: flex; flex-direction: column; gap: 10px; padding: 10px; }
  #wms-rcv-retsum-panel #retsum-doc-table tbody tr,
  #wms-rcv-pairing-panel .wms-retlist-scroll .wms-retsum-table tbody tr { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 6px 10px; border: 1px solid var(--wms-border); border-radius: 12px; padding: 12px 14px; }
  #wms-rcv-retsum-panel #retsum-doc-table tbody tr { background: #fff; grid-template-areas: "cislo cislo cislo" "stav stav stav" "datum polozky mnozstvo" "predajna predajna csb" "akcie akcie akcie"; }
  #wms-rcv-pairing-panel .wms-retlist-scroll .wms-retsum-table tbody tr { grid-template-areas: "cislo cislo cislo" "stav stav stav" "datum mnozstvo csb" "predajna predajna predajna" "detail detail detail" "akcie akcie akcie"; }
  #wms-rcv-pairing-panel .wms-retlist-scroll .wms-retsum-table tbody tr:not(.retlist-alert) { background: #fff; }
  #wms-rcv-pairing-panel .wms-retlist-scroll .wms-retsum-table tbody tr.retlist-alert { border-color: #FECACA; }
  #wms-rcv-retsum-panel #retsum-doc-table tbody td,
  #wms-rcv-pairing-panel .wms-retlist-scroll .wms-retsum-table tbody td { display: block; padding: 0 !important; border: 0; min-width: 0; text-align: left !important; white-space: normal !important; font-size: 14px; line-height: 1.3; }
  #wms-rcv-retsum-panel #retsum-doc-table tbody td:not([data-k]),
  #wms-rcv-pairing-panel .wms-retlist-scroll .wms-retsum-table tbody td:not([data-k]) { grid-column: 1 / -1; padding: 6px 0 !important; }
  #wms-rcv-retsum-panel #retsum-doc-table tbody td[data-lbl]::before,
  #wms-rcv-pairing-panel .wms-retlist-scroll .wms-retsum-table tbody td[data-lbl]::before { content: attr(data-lbl); display: block; margin-bottom: 1px; font-size: 11px; color: #6B7280; text-transform: uppercase; letter-spacing: .03em; }
  #wms-rcv-retsum-panel #retsum-doc-table tbody td[data-k="cislo"],
  #wms-rcv-pairing-panel .wms-retlist-scroll .wms-retsum-table tbody td[data-k="cislo"] { grid-area: cislo; font-size: 16px; overflow-wrap: anywhere; }
  #wms-rcv-retsum-panel #retsum-doc-table tbody td[data-k="stav"],
  #wms-rcv-pairing-panel .wms-retlist-scroll .wms-retsum-table tbody td[data-k="stav"] { grid-area: stav; font-size: 14px; font-weight: 600; }
  #wms-rcv-retsum-panel #retsum-doc-table tbody td[data-k="datum"],
  #wms-rcv-pairing-panel .wms-retlist-scroll .wms-retsum-table tbody td[data-k="datum"] { grid-area: datum; }
  #wms-rcv-retsum-panel #retsum-doc-table tbody td[data-k="predajna"],
  #wms-rcv-pairing-panel .wms-retlist-scroll .wms-retsum-table tbody td[data-k="predajna"] { grid-area: predajna; }
  #wms-rcv-retsum-panel #retsum-doc-table tbody td[data-k="mnozstvo"],
  #wms-rcv-pairing-panel .wms-retlist-scroll .wms-retsum-table tbody td[data-k="mnozstvo"] { grid-area: mnozstvo; }
  #wms-rcv-retsum-panel #retsum-doc-table tbody td[data-k="polozky"] { grid-area: polozky; }
  #wms-rcv-retsum-panel #retsum-doc-table tbody td[data-k="csb"],
  #wms-rcv-pairing-panel .wms-retlist-scroll .wms-retsum-table tbody td[data-k="csb"] { grid-area: csb; overflow-wrap: anywhere; }
  /* bez CSB dokladu je v bunke len „—" — na karte je to riadok navyše */
  #wms-rcv-retsum-panel #retsum-doc-table tbody td[data-k="csb"]:has(> .muted:only-child) { display: none; }
  #wms-rcv-pairing-panel .wms-retlist-scroll .wms-retsum-table tbody td[data-k="detail"] { grid-area: detail; font-size: 13px !important; color: #4B5563; }
  #wms-rcv-pairing-panel .wms-retlist-scroll .wms-retsum-table tbody td[data-k="detail"]:empty { display: none; }
  #wms-rcv-retsum-panel #retsum-doc-table tbody td[data-k="akcie"],
  #wms-rcv-pairing-panel .wms-retlist-scroll .wms-retsum-table tbody td[data-k="akcie"] { grid-area: akcie; display: flex; flex-wrap: wrap; gap: 8px; margin-top: 4px; }
  #wms-rcv-retsum-panel #retsum-doc-table tbody td[data-k="akcie"] .wms-btn,
  #wms-rcv-pairing-panel .wms-retlist-scroll .wms-retsum-table tbody td[data-k="akcie"] .wms-btn { flex: 1 1 0; min-width: 120px; min-height: 48px; padding: 8px 12px; border-radius: 10px; display: inline-flex; align-items: center; justify-content: center; gap: 6px; font-size: 15px; font-weight: 600; }

  #wms-rcv-retsum-panel #retsum-doc-table tbody td[data-k="akcie"] .wms-retm-tlac { border: 1px solid var(--wms-border); background: #fff; }
  #wms-rcv-retsum-panel #retsum-doc-table tbody td[data-k="akcie"] .wms-retm-tlac svg { width: 18px; height: 18px; }
  .wms-retm-lbl { display: inline; }
}

/* Klasický príjem: viditeľný doklad, čitateľné polia a dostupné zatvorenie. */
#wms-pane-receiving #rcv-selected-info {
  flex: 0 0 auto;
  display: flex;
  align-items: flex-start;
  gap: 12px;
  margin: 0 0 8px;
  padding: 12px 14px;
  border: 1px solid #e5ded3;
  border-radius: 14px;
  background: #fff;
  box-shadow: 0 2px 8px rgba(50, 39, 25, .035);
}
#wms-pane-receiving #rcv-selected-info .wms-rcv-doc-strip-main {
  flex: 1 1 0;
  min-width: 0;
  gap: 6px 10px;
  align-items: center;
  font-size: 13px;
}
#wms-pane-receiving #rcv-sel-number { font-size: 16px; color: #302a24; }
#wms-pane-receiving #rcv-close-doc-btn {
  flex: 0 0 auto;
  min-height: 40px;
  padding: 8px 12px;
  border-radius: 10px;
  font-size: 13px;
  white-space: nowrap;
}
#wms-pane-receiving #rcv-selected-info .wms-input {
  min-height: 34px;
  height: auto;
  font-size: 13px;
  border-color: #ddd6ca;
  border-radius: 8px;
}
#wms-pane-receiving .wms-page.wms-rcv-doc-open #wms-rcv-items-wrap {
  min-height: 0;
  border-radius: 12px;
  background: #fff;
}
#wms-pane-receiving #wms-rcv-footer {
  flex: 0 0 auto;
  flex-wrap: wrap;
  gap: 8px;
  padding: 8px 0 max(8px, env(safe-area-inset-bottom));
  margin-top: 6px;
}
#wms-pane-receiving #wms-rcv-footer .wms-btn {
  min-height: 40px;
  font-size: 13px;
  padding: 8px 12px;
  border-radius: 10px;
}
#wms-pane-receiving #wms-rcv-summary { font-size: 12px; }
body:has(#wms-pane-receiving.active .wms-page.wms-rcv-doc-open) .wms-toasts {
  bottom: calc(var(--iris-receiving-footer-height, 70px) + 24px);
}
@media (min-width: 769px) {
  #wms-pane-receiving #wms-rcv-items-wrap td { padding: 8px; font-size: 13px; }
  #wms-pane-receiving #wms-rcv-items-wrap td[data-rcv-col-td="diff"] { white-space: normal; overflow-wrap: anywhere; font-size: 12px; }
  #wms-pane-receiving #wms-rcv-items-wrap th { font-size: 11.5px; padding: 9px 8px; background: #faf8f4; }
  #wms-pane-receiving #wms-rcv-items-wrap .wms-input { min-height: 36px; font-size: 13px; border-radius: 8px; }
  #wms-pane-receiving #wms-rcv-items-wrap .wms-rcv-line-btn { min-height: 36px; min-width: 36px; border-radius: 8px; }
}
@media (max-width: 768px) {
  #wms-pane-receiving #rcv-selected-info { flex-wrap: wrap; padding: 12px; gap: 8px; }
  #wms-pane-receiving #rcv-selected-info .wms-rcv-doc-strip-main { flex: 1 1 100%; font-size: 14px; }
  #wms-pane-receiving #rcv-close-doc-btn { width: 100%; min-height: 48px; font-size: 15px; }
  #wms-pane-receiving #wms-rcv-footer .wms-btn { min-height: 48px; font-size: 14px; }
  body:has(#wms-pane-receiving.active .wms-page.wms-rcv-doc-open) .wms-toasts {
    bottom: calc(var(--iris-dock-height, 68px) + var(--iris-receiving-footer-height, 150px) + 16px);
  }
}
@media (max-width: 900px) {
  #wms-pane-receiving #wms-rcv-items-wrap .wms-rcv-table tbody tr[data-rcv-idx] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
    padding: 12px;
    margin: 0 0 10px;
    border: 1px solid #e5ded3;
    border-radius: 12px;
    background: #fff;
  }
  #wms-pane-receiving #wms-rcv-items-wrap tr[data-rcv-idx] td {
    display: block;
    width: auto !important;
    min-width: 0;
    padding: 0 !important;
    border: 0;
    text-align: left !important;
    white-space: normal;
    font-size: 14px;
  }
  #wms-pane-receiving #wms-rcv-items-wrap tr[data-rcv-idx] td[data-rcv-col-td="pos"],
  #wms-pane-receiving #wms-rcv-items-wrap tr[data-rcv-idx] td[data-rcv-col-td="unit"] { display: none; }
  #wms-pane-receiving #wms-rcv-items-wrap tr[data-rcv-idx] td[data-rcv-col-td="product"],
  #wms-pane-receiving #wms-rcv-items-wrap tr[data-rcv-idx] td[data-rcv-col-td="sw3"],
  #wms-pane-receiving #wms-rcv-items-wrap tr[data-rcv-idx] td[data-rcv-col-td="expiry"],
  #wms-pane-receiving #wms-rcv-items-wrap tr[data-rcv-idx] td[data-rcv-col-td="actions"] { grid-column: 1 / -1; }
  #wms-pane-receiving #wms-rcv-items-wrap tr[data-rcv-idx] .wms-rcv-product-name { font-size: 16px; font-weight: 600; }
  #wms-pane-receiving #wms-rcv-items-wrap tr[data-rcv-idx] .wms-input {
    width: 100% !important;
    min-width: 0 !important;
    min-height: 48px;
    font-size: 16px;
    border-radius: 10px;
  }
  #wms-pane-receiving #wms-rcv-items-wrap tr[data-rcv-idx] td[data-rcv-col-td="actions"] .wms-btn {
    width: 100%; min-height: 48px; font-size: 15px; border-radius: 10px;
  }
  #wms-pane-receiving #wms-rcv-items-wrap .wms-rcv-line-btn::after { content: attr(data-action-label); margin-left: 6px; }
}
@media (min-width: 769px) and (max-height: 700px) {
  #wms-pane-receiving #rcv-selected-info { padding: 8px 10px; margin-bottom: 5px; }
  #wms-pane-receiving #wms-rcv-items-wrap td { padding-top: 5px; padding-bottom: 5px; }
}

/* Kontrola odpisu je nad mobilnou navigáciou; roluje iba obsah okna. */
#wms-odpis-pripomienka.wms-overlay,
#wms-bakery-writeoff-modal.wms-overlay {
  z-index: 10080;
  align-items: center;
  padding: max(16px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) max(16px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));
  overflow: hidden;
  background: rgba(43, 35, 27, .42);
}
#wms-odpis-pripomienka .wms-modal,
#wms-bakery-writeoff-modal .wms-modal {
  display: flex;
  flex-direction: column;
  width: 100% !important;
  max-height: calc(100dvh - max(16px, env(safe-area-inset-top)) - max(16px, env(safe-area-inset-bottom)));
  height: auto;
  min-height: 0;
  margin: 0;
  border: 1px solid #e6ddd1;
  border-radius: 18px;
  background: #fffdf9;
  color: #302a24;
}
#wms-odpis-pripomienka .wms-modal { max-width: 560px; }
#wms-bakery-writeoff-modal .wms-modal { max-width: 600px !important; }
#wms-odpis-pripomienka .wms-modal-header,
#wms-bakery-writeoff-modal .wms-modal-header {
  flex: 0 0 auto;
  gap: 12px;
  padding: 16px 18px;
  background: #fffdf9;
  border-color: #e6ddd1;
}
#wms-odpis-pripomienka .wms-modal-body,
#wms-bakery-writeoff-modal .wms-modal-body {
  flex: 1 1 auto;
  min-height: 0;
  max-height: none;
  padding: 14px 18px;
  overflow-y: auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
}
#wms-odpis-pripomienka .wms-modal-footer,
#wms-bakery-writeoff-modal .wms-modal-footer {
  flex: 0 0 auto;
  padding: 12px 18px;
  gap: 8px;
  background: #fffdf9;
  border-color: #e6ddd1;
}
#wms-odpis-pripomienka .wms-btn,
#wms-bakery-writeoff-modal .wms-modal-header .wms-btn { min-height: 48px; border-radius: 10px; font-size: 14px; }
#wms-odpis-pripomienka .odpis-reminder-close,
#wms-bakery-writeoff-modal .wms-modal-header .wms-btn {
  flex: 0 0 48px;
  width: 48px;
  padding: 0;
  font-size: 28px;
  border: 1px solid #e6ddd1;
  background: #fff;
  color: #62584f;
}
.odpis-reminder-eyebrow { font-size: 11px; color: #7a7065; }
#odpis-reminder-title, #bw-title { margin: 3px 0 0; font-size: 20px; line-height: 1.25; font-weight: 650; }
.odpis-reminder-description { margin: 0 0 14px; color: #62584f; font-size: 14px; line-height: 1.5; }
.odpis-reminder-description strong { display: block; color: #302a24; }
.odpis-reminder-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.odpis-reminder-item {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 12px;
  border: 1px solid #e6ddd1;
  border-radius: 12px;
  background: #fff;
}
.odpis-reminder-item-main { flex: 1 1 auto; min-width: 0; display: grid; gap: 5px; }
.odpis-reminder-item-main strong { font-size: 15px; line-height: 1.35; overflow-wrap: anywhere; }
.odpis-reminder-item-main > span { font-size: 12px; color: #7a7065; }
.odpis-reminder-qty { flex: 0 0 auto; font-size: 14px; font-weight: 650; white-space: nowrap; color: #8a4a21; background: #fff3e5; padding: 5px 7px; border-radius: 8px; }
#wms-odpis-pripomienka .odpis-reminder-footer { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
#wms-odpis-pripomienka .odpis-reminder-footer [data-odpis="teraz"] { grid-column: 1 / -1; }
#wms-bakery-writeoff-modal .bw-list { max-height: none; overflow: visible; }
#wms-bakery-writeoff-modal .bw-row { padding: 12px; margin-bottom: 8px; border: 1px solid #e6ddd1; border-radius: 12px; background: #fff; }
#wms-bakery-writeoff-modal .bw-row-expired { border-left: 3px solid #b77836; background: #fff9f1; }
#wms-bakery-writeoff-modal .bw-name { font-weight: 600; }
#wms-bakery-writeoff-modal .bw-expired { color: #8a4a21; font-size: 12px; font-weight: 400; }
@media (max-width: 768px) {
  #wms-odpis-pripomienka.wms-overlay,
  #wms-bakery-writeoff-modal.wms-overlay {
    padding: max(8px, env(safe-area-inset-top)) max(8px, env(safe-area-inset-right)) max(8px, env(safe-area-inset-bottom)) max(8px, env(safe-area-inset-left));
  }
  #wms-odpis-pripomienka .wms-modal,
  #wms-bakery-writeoff-modal .wms-modal {
    max-height: calc(100dvh - max(8px, env(safe-area-inset-top)) - max(8px, env(safe-area-inset-bottom)));
  }
  #wms-odpis-pripomienka .wms-modal-header,
  #wms-bakery-writeoff-modal .wms-modal-header { padding: 12px; }
  #wms-odpis-pripomienka .wms-modal-body { padding: 12px; }
  #wms-odpis-pripomienka .wms-modal-footer,
  #wms-bakery-writeoff-modal .wms-modal-footer { padding: 10px 12px; }
  #wms-bakery-writeoff-modal .wms-modal-body .wms-sel,
  #wms-bakery-writeoff-modal .wms-modal-body .wms-input { min-height: 48px; font-size: 16px; }
  #wms-bakery-writeoff-modal .bw-footer .wms-btn { min-height: 48px; font-size: 16px; }
  #wms-bakery-writeoff-modal .bw-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; }
  #wms-bakery-writeoff-modal .bw-main { grid-column: 1 / -1; }
  #wms-bakery-writeoff-modal .bw-stock { text-align: left; }
}

/*
 * Návrh OBJ — informácie zbalené do jedného riadku (2. 10. 2026). Zoltán: „všetky informácie skryť, aby na
 * obrazovke bolo čo najviac riadkov". Pásy majú triedu .wms-orders-info-pas; lišta ostáva a varovania
 * v nej svietia ako štítky.
 */
.wms-orders-info-zbalene .wms-orders-info-pas { display: none !important; }
/* tlačidlo — globálny štýl tlačidiel WMS (červená, výška 38 px, na stred) sa tu musí prebiť */
#wmsSection button.wms-orders-info-lista, button.wms-orders-info-lista {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-start; gap: 4px 6px;
  width: 100%; height: auto; min-height: 0; margin: 4px 0; padding: 3px 8px;
  border: 1px solid var(--wms-border, #E2E8F0) !important; border-radius: 8px;
  background: var(--wms-surface, #fff) !important; color: var(--wms-muted, #64748B) !important;
  box-shadow: none !important; text-transform: none; letter-spacing: normal;
  font-family: inherit; font-weight: 400; font-size: 12px; line-height: 1.4; text-align: left; cursor: pointer;
}
.wms-orders-info-lista[hidden] { display: none; }
#wmsSection button.wms-orders-info-lista:hover { border-color: #CBD5E1 !important; background: #F8FAFC !important; }
.wms-orders-info-lista:focus-visible { outline: 2px solid #B91C1C; outline-offset: 1px; }
.wms-orders-info-lista .wms-oil-toggle { font-weight: 600; color: #334155; margin-right: 4px; }
.wms-orders-info-lista .wms-oil-chip { padding: 0 7px; border-radius: 9px; background: #F1F5F9; color: #475569; white-space: nowrap; }
.wms-orders-info-lista .wms-oil-chip.is-warn { background: #FEF3C7; color: #92400E; }
.wms-orders-info-lista .wms-oil-chip.is-akcia { background: #FFEDD5; color: #9A3412; }

/*
 * Návrh OBJ — text pod číslom sa nesmie prekrývať s vedľajším stĺpcom (2. 10. 2026, Zoltán: „nemôžu sa
 * dáta prekrývať"). Rozpis „Na ceste" a „v deň dod." sa zalomia v bunke, nič nevytečie von.
 */
#wms-pane-orders td[data-orders-col="transit"],
#wms-pane-orders td[data-orders-col="stock"] { overflow: hidden; }
/* jeden riadok na doklad, čo sa nezmestí, skončí tromi bodkami — riadok návrhu ostane nízky (celé v bublinke) */
#wms-pane-orders .wms-orders-transit-src,
#wms-pane-orders .wms-orders-stock-note {
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%;
  line-height: 1.25; font-size: 10.5px; color: var(--wms-muted, #64748B);
}
#wms-pane-orders .wms-orders-stock-note { color: #B45309; font-weight: 600; }

/* Príjem → Prijaté doklady: stĺpec CSB (2. 10. 2026) */
.wms-rcv-queue-csb { white-space: nowrap; }
.wms-rcv-csb { display: inline-block; padding: 1px 7px; border-radius: 9px; font-size: 11px; font-weight: 600; }
.wms-rcv-csb.is-ok { background: #DCFCE7; color: #166534; }
.wms-rcv-csb.is-sent { background: #ECFDF5; color: #047857; }
.wms-rcv-csb.is-warn { background: #FEF3C7; color: #92400E; }
.wms-rcv-csb.is-bad { background: #FEE2E2; color: #B91C1C; }
.wms-rcv-csb.is-muted { background: transparent; color: var(--wms-muted, #64748B); font-weight: 400; }

/* Analytika — Výrobná vs predajná cena (2. 10. 2026) */
.vvp-zlavy { display: flex; flex-wrap: wrap; gap: 4px; align-items: center; }
#wmsSection .vvp-zlavy > button.vvp-zlava, #revReportSpecialPane .vvp-zlavy > button.vvp-zlava, .vvp-zlavy > button.vvp-zlava {
  height: 30px; min-height: 0; padding: 0 10px; border-radius: 15px; font-size: 12px; font-weight: 600;
  border: 1px solid var(--wms-border, #CBD5E1) !important; background: var(--wms-surface, #fff) !important;
  color: #334155 !important; box-shadow: none !important; cursor: pointer; text-transform: none; letter-spacing: normal;
}
.vvp-zlavy > button.vvp-zlava:focus-visible { outline: 2px solid #7C2D12; outline-offset: 1px; }
#wmsSection .vvp-zlavy > button.vvp-zlava.is-on, #revReportSpecialPane .vvp-zlavy > button.vvp-zlava.is-on, .vvp-zlavy > button.vvp-zlava.is-on { background: #7C2D12 !important; border-color: #7C2D12 !important; color: #fff !important; }
.vvp-zlava-vlastna { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; color: var(--wms-muted, #64748B); }
.vvp-zlava-vlastna input { width: 54px; height: 30px; padding: 0 6px; border: 1px solid var(--wms-border, #CBD5E1); border-radius: 8px; }
.vvp-zdroj-info { font-size: 12px; color: var(--wms-muted, #64748B); margin: 0 0 8px; }
.vvp-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 8px; margin-bottom: 6px; }
.vvp-kpi { border: 1px solid var(--wms-border, #E2E8F0); border-radius: 10px; padding: 8px 10px; background: var(--wms-surface, #fff); }
.vvp-kpi.is-main { border-color: #86EFAC; background: #F0FDF4; }
.vvp-kpi.is-model { border-color: #FDBA74; background: #FFF7ED; }
.vvp-kpi-n { font-size: 11px; text-transform: uppercase; letter-spacing: .04em; color: var(--wms-muted, #64748B); }
.vvp-kpi-v { font-size: 19px; font-weight: 700; font-variant-numeric: tabular-nums; margin-top: 2px; }
.vvp-kpi-p { font-size: 12px; color: var(--wms-muted, #64748B); margin-top: 2px; }
.vvp-table td.num, .vvp-table th.num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.vvp-table .vvp-model { background: rgba(253, 186, 116, .12); }
.vvp-table tr.vvp-kat td { font-weight: 700; background: #F8FAFC; cursor: pointer; }
.vvp-table tr.vvp-pod td { font-weight: 600; cursor: pointer; }
.vvp-table tr.vvp-pod td:first-child { padding-left: 18px; }
.vvp-zdroj { display: inline-block; padding: 0 6px; border-radius: 8px; font-size: 10.5px; font-weight: 600; }
.vvp-zdroj.is-rozrabka { background: #FEE2E2; color: #991B1B; }
.vvp-zdroj.is-vyrobok { background: #E0E7FF; color: #3730A3; }
.vvp-zdroj.is-warn { background: #FEF3C7; color: #92400E; }
.vvp-bez { margin-top: 10px; font-size: 13px; }

/* Analytika — Hospodárnosť predajní (3. 10. 2026) */
.hosp-table th[scope="row"] { text-align: left; font-weight: 500; white-space: nowrap; }
.hosp-table td.num, .hosp-table th.num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.hosp-table .hosp-spolu { background: #F8FAFC; font-weight: 600; }
.hosp-table tr.hosp-sekcia th { background: #F1F5F9; font-size: 11px; text-transform: uppercase; letter-spacing: .04em; color: #475569; text-align: left; padding-top: 8px; }
.hosp-table tr.hosp-vysl th, .hosp-table tr.hosp-vysl td { border-top: 2px solid #CBD5E1; }
.hosp-table tr.hosp-vysl.is-b th, .hosp-table tr.hosp-vysl.is-b td { background: #F0FDF4; }
/* vratky mäsa (20. 10. 2026) — ušlá marža ISM */
.hosp-table tr.hosp-vratky-strata th, .hosp-table tr.hosp-vratky-strata td { background: #FEF2F2; }
/* široká tabuľka (7 predajní + Spolu) sa roluje do strany vo vlastnom ráme, nie celá stránka (5. 10. 2026) */
.hosp-table-wrap { overflow-x: auto; max-width: 100%; }
/* 7 predajní + Spolu sa majú zmestiť bez posúvania (5. 10. 2026) */
.hosp-table th, .hosp-table td { padding: 6px 8px; }
.hosp-table td.num, .hosp-table thead th.num { font-size: 12.5px; }
.hosp-table .hosp-spolu { border-right: 2px solid #CBD5E1; }
.hosp-table tbody th[scope="row"] { white-space: normal; min-width: 150px; max-width: 200px; line-height: 1.25; }
.hosp-table thead th.num { letter-spacing: 0; font-size: 11px; white-space: normal; }
.hosp-table th:first-child { position: sticky; left: 0; background: #fff; z-index: 1; }
.hosp-table tr.hosp-sekcia th:first-child { background: #F1F5F9; }
/* modelovaná mzda — odhad, kým Dochádzka nemá skutočné mzdy za mesiac */
.hosp-model { color: #6D28D9; font-style: italic; }
.hosp-table tr.hosp-model-riadok td { background: #F5F3FF; }
.hosp-model-legenda { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: #6D28D9; background: #F5F3FF; border: 1px solid #DDD6FE; border-radius: 6px; padding: 3px 8px; margin: 6px 0; }
.hosp-varovania { background: #FEF3C7; border: 1px solid #FCD34D; color: #92400E; border-radius: 8px; padding: 6px 10px; margin-bottom: 8px; font-size: 12.5px; }
.hosp-form { border: 1px solid var(--wms-border, #E2E8F0); border-radius: 10px; padding: 10px 12px; margin-bottom: 12px; background: #FAFAF9; }
.hosp-form-riadok { display: flex; flex-wrap: wrap; gap: 8px; align-items: flex-end; }
.hosp-form-riadok label { display: flex; flex-direction: column; font-size: 12px; color: var(--wms-muted, #64748B); gap: 2px; }
.hosp-naklady-table td.num { text-align: right; }

/* Objednané množstvo na karte aj v zásobách, 14. 10. 2026. */
@media (max-width: 768px) {
  #wms-pane-stock #wms-stock-levels-view td[data-cell=ordered] {
    grid-column: 1 / -1; text-align: left !important; font-size: 14px;
  }
  #wms-pane-stock #wms-stock-levels-view td[data-cell=ordered]::before {
    content: 'Objednané / na ceste: '; color: #71685e;
  }
  #wms-stock-batch-modal .wms-sbm-table tbody td[data-cell="ordered"] { order: 3; }
  #sbm-pending-orders { overflow-wrap: anywhere; }
}

/* Dohody dodávateľov musia zostať nad mobilnou navigáciou aj expiračným pásom. */
#wms-zavozy-modal.wms-overlay,
#wms-supplier-modal.wms-overlay { z-index: 10080; }
#wms-zavozy-modal.wms-overlay {
  padding: max(12px, env(safe-area-inset-top)) 12px max(12px, env(safe-area-inset-bottom));
  box-sizing: border-box;
  overflow: hidden;
}
#wms-zavozy-modal .wms-modal {
  display: flex;
  flex-direction: column;
  max-height: calc(100vh - 24px);
  max-height: calc(100dvh - max(12px, env(safe-area-inset-top)) - max(12px, env(safe-area-inset-bottom)));
  margin: auto;
}
#wms-zavozy-modal .wms-modal-header { flex-shrink: 0; }
#wms-zavozy-modal .wms-modal-body { min-height: 0; max-height: none; overflow-y: auto; }
#wms-zavozy-modal input,
#wms-zavozy-modal textarea,
#wms-zavozy-modal select { box-sizing: border-box; max-width: 100%; }
