/* ============================================================
   ERP Zirozok — базові стилі (Фаза 1)
   ============================================================ */
:root{
  --bg:#f4f5f7; --panel:#fff; --border:#e3e5ea; --text:#1c2333; --muted:#697086;
  --accent:#2563eb; --accent-soft:#eaf1fe;
  --green:#15803d; --green-soft:#e7f6ec;
  --red:#dc2626; --red-soft:#fdecec;
  --amber:#b45309; --amber-soft:#fdf3e3;
  --radius:10px; --shadow:0 1px 2px rgba(16,24,40,.06);
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{background:var(--bg);color:var(--text);font:15px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
h1{font-size:22px;margin:0}
h2{font-size:16px;margin:0 0 12px}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.93em}
.muted{color:var(--muted)}
.nowrap{white-space:nowrap}

/* ---------- Топбар ---------- */
.topbar{position:sticky;top:0;z-index:50;background:var(--panel);border-bottom:1px solid var(--border)}
.topbar-inner{max-width:1280px;margin:0 auto;padding:0 20px;min-height:56px;display:flex;align-items:center;gap:12px;transition:padding 0.15s ease}
.brand{font-weight:700;font-size:17px;color:var(--text);letter-spacing:.2px;white-space:nowrap}
.main-nav{display:flex;gap:3px;overflow-x:auto;flex:1;scrollbar-width:none;-ms-overflow-style:none;}
.main-nav::-webkit-scrollbar{display:none;}
.main-nav a{padding:6px 10px;border-radius:8px;color:var(--muted);font-weight:500;white-space:nowrap;font-size:13.5px;transition:all 0.15s ease;}
.main-nav a:hover{background:var(--bg);text-decoration:none;color:var(--text)}
.main-nav a.active{background:var(--accent-soft);color:var(--accent)}

/* Багаторядковий режим (Розгорнуте меню) */
html.nav-expanded-mode .topbar-inner{height:auto;padding-top:10px;padding-bottom:10px;align-items:center}
html.nav-expanded-mode .main-nav{flex-wrap:wrap;overflow-x:visible;row-gap:6px;column-gap:4px;padding:2px 0}

.nav-mode-toggle-btn {
  display: none;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  padding: 0;
  border-radius: 8px;
  border: 1px solid var(--border);
  background: var(--bg);
  color: var(--muted);
  font-size: 14px;
  cursor: pointer;
  transition: all 0.15s ease;
  user-select: none;
  flex-shrink: 0;
}
.nav-mode-toggle-btn:hover {
  background: var(--panel);
  color: var(--text);
  border-color: #cbd5e1;
}
html.nav-expanded-mode .nav-mode-toggle-btn {
  background: var(--accent-soft);
  color: var(--accent);
  border-color: #bfdbfe;
}

.userbox{display:flex;align-items:center;gap:10px}
.user-name{color:var(--muted);font-size:14px;white-space:nowrap}
.linklike{background:none;border:none;color:var(--muted);cursor:pointer;font-size:14px;padding:4px}
.linklike:hover{color:var(--red)}

.container{max-width:1280px;margin:0 auto;padding:24px 20px 60px}

/* ---------- Заголовок сторінки ---------- */
.page-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:18px;flex-wrap:wrap}
.actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}

/* ---------- Картки ---------- */
.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}
.card.pad{padding:20px}

/* ---------- Кнопки ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 14px;border-radius:8px;border:1px solid var(--border);background:var(--panel);color:var(--text);font-size:14px;font-weight:500;cursor:pointer;text-decoration:none}
.btn:hover{background:var(--bg);text-decoration:none}
.btn:disabled{opacity:.55;cursor:not-allowed}
.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}
.btn-primary:hover{background:#1d4fd7}
.btn-danger{border-color:var(--red);color:var(--red);display:inline-flex;align-items:center;gap:6px;}
.btn-danger:hover{background:var(--red-soft)}
.btn-danger svg{display:block;stroke:currentColor;flex-shrink:0;}
.btn-sm{padding:4px 10px;font-size:13px}
.btn-block{width:100%}

/* ---------- Icon Buttons ---------- */
.icon-btn{display:inline-flex;align-items:center;justify-content:center;padding:0;width:32px;height:32px;border-radius:6px;background:transparent;border:1px solid transparent;color:var(--muted);cursor:pointer;transition:all .15s ease;line-height:1;flex-shrink:0;}
.icon-btn:hover{background:var(--bg);color:var(--text);}
.icon-btn-danger{color:var(--red, #ef4444);background:var(--red-soft, #fef2f2);border:1px solid #fecaca;}
.icon-btn-danger:hover{background:var(--red, #ef4444);border-color:#dc2626;color:#fff;box-shadow:0 2px 8px rgba(239,68,68,.25);}
.icon-btn-danger svg,.icon-btn svg{display:block;stroke:currentColor;}

/* ---------- Тулбар і таблиця ---------- */
.toolbar{display:flex;gap:10px;padding:14px;border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center}
.toolbar input,.toolbar select{padding:8px 12px;border:1px solid var(--border);border-radius:8px;font:inherit;font-size:13.5px;color:var(--text);background:var(--panel);height:38px;box-sizing:border-box;transition:border-color .15s ease,box-shadow .15s ease}
.toolbar input[type=search]{flex:1;min-width:200px}
.toolbar select{min-width:140px}
.toolbar input[type=text]{min-width:120px}
.toolbar input[type=date]{min-width:130px;cursor:pointer}
.toolbar input:focus,.toolbar select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.table{width:100%;border-collapse:collapse}
.table th{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);text-align:left;padding:10px 14px;border-bottom:1px solid var(--border);font-weight:600}
.table td{padding:10px 14px;border-bottom:1px solid var(--border);vertical-align:middle}
.table tbody tr:last-child td{border-bottom:none}
.table tbody tr:hover{background:#fafbfd}

/* ---------- DataTables-style Table Sorting ---------- */
.th-sortable, th[data-sort] {
  cursor: pointer;
  user-select: none;
  position: relative;
  transition: color 0.15s ease, background-color 0.15s ease;
  white-space: nowrap;
}
.th-sortable:hover, th[data-sort]:hover {
  color: var(--accent);
  background-color: rgba(37, 99, 235, 0.04);
}
.sort-icon {
  display: inline-flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  vertical-align: middle;
  margin-left: 5px;
  width: 9px;
  height: 14px;
  position: relative;
  line-height: 1;
  opacity: 0.35;
  transition: opacity 0.15s ease;
}
.th-sortable:hover .sort-icon, th[data-sort]:hover .sort-icon {
  opacity: 0.75;
}
.sort-icon .sort-up {
  width: 0;
  height: 0;
  border-left: 3.5px solid transparent;
  border-right: 3.5px solid transparent;
  border-bottom: 4px solid currentColor;
  margin-bottom: 2px;
  opacity: 0.6;
}
.sort-icon .sort-down {
  width: 0;
  height: 0;
  border-left: 3.5px solid transparent;
  border-right: 3.5px solid transparent;
  border-top: 4px solid currentColor;
  opacity: 0.6;
}
.th-sortable.sort-asc, th[data-sort].sort-asc {
  color: var(--accent);
}
.th-sortable.sort-asc .sort-icon, th[data-sort].sort-asc .sort-icon {
  opacity: 1;
}
.th-sortable.sort-asc .sort-icon .sort-up, th[data-sort].sort-asc .sort-icon .sort-up {
  opacity: 1;
  border-bottom-color: var(--accent);
}
.th-sortable.sort-asc .sort-icon .sort-down, th[data-sort].sort-asc .sort-icon .sort-down {
  opacity: 0.15;
}
.th-sortable.sort-desc, th[data-sort].sort-desc {
  color: var(--accent);
}
.th-sortable.sort-desc .sort-icon, th[data-sort].sort-desc .sort-icon {
  opacity: 1;
}
.th-sortable.sort-desc .sort-icon .sort-up, th[data-sort].sort-desc .sort-icon .sort-up {
  opacity: 0.15;
}
.th-sortable.sort-desc .sort-icon .sort-down, th[data-sort].sort-desc .sort-icon .sort-down {
  opacity: 1;
  border-top-color: var(--accent);
}
.sku-link{font-weight:600}
.row-link{color:var(--text)}
.row-link:hover{color:var(--accent)}
.flags-cell{max-width:280px}
.flags-cell .badge{margin:0 4px 2px 0;display:inline-block}
.empty{text-align:center;color:var(--muted);padding:36px 10px!important}
.table-foot{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;gap:10px;flex-wrap:wrap}
.pagination{display:flex;align-items:center;gap:10px}

/* ---------- Мініатюри ---------- */
.thumb{width:44px;height:44px;border-radius:8px;object-fit:cover;display:block;background:var(--bg)}
.thumb-empty{display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;color:var(--accent);background:var(--accent-soft)}
.view-photo{width:100%;max-width:220px;border-radius:8px;border:1px solid var(--border);display:block;margin-bottom:6px}

/* ---------- Бейджі ---------- */
.badge{display:inline-flex;align-items:center;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:600;line-height:1.5;white-space:nowrap}
.badge-regular{background:var(--accent-soft);color:var(--accent)}
.badge-internal{background:#eef0f4;color:var(--muted)}
.badge-drop{background:var(--amber-soft);color:var(--amber)}
.badge-blue{background:#eff6ff;color:#1d4ed8;border:1px solid #bfdbfe}
.badge-purple{background:#faf5ff;color:#7e22ce;border:1px solid #e9d5ff}
.badge-orange{background:#fff7ed;color:#c2410c;border:1px solid #fed7aa}
.badge-amber{background:#fefce8;color:#a16207;border:1px solid #fef08a}
.badge-green{background:#f0fdf4;color:#15803d;border:1px solid #bbf7d0}
.badge-gray{background:#f1f5f9;color:#475569;border:1px solid #e2e8f0}
.badge-red{background:#fef2f2;color:#b91c1c;border:1px solid #fecaca}
.badge-teal{background:#f0fdfa;color:#0f766e;border:1px solid #99f6e4}

/* ---------- Форми ---------- */
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px 20px}
.span-2{grid-column:1/-1}
.field label,.flags legend{display:block;font-size:13px;font-weight:600;margin-bottom:5px}
.field input:not([type]),.field input[type=text],.field input[type=password],.field input[type=search],.field input[type=date],.field input[type=number],.field input[type=url],.field input[type=email],.field input[type=tel],.field textarea,.field select{width:100%;padding:9px 11px;border:1px solid var(--border);border-radius:8px;font:inherit;color:var(--text);background:var(--panel)}
.field textarea{resize:vertical}
.field input:focus,.field textarea:focus,.field select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.invalid{border-color:var(--red)!important}
.hint{font-size:12.5px;color:var(--muted);margin:5px 0 0}
.field-error{font-size:12.5px;color:var(--red);margin:4px 0 0}
.flags{border:1px solid var(--border);border-radius:8px;padding:12px 14px;margin:0}
.check{display:flex;gap:10px;align-items:flex-start;padding:6px 0;cursor:pointer;font-weight:400!important;margin:0!important}
.check input{margin-top:3px}
.check span{font-size:13.5px;color:var(--text)}
.form-actions{display:flex;justify-content:flex-end;gap:10px}

/* ---------- Деталі товару ---------- */
.detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px}
.details{margin:0}
.details dt{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-top:12px}
.details dt:first-child{margin-top:0}
.details dd{margin:2px 0 0}
.badges{display:flex;flex-wrap:wrap;gap:8px;padding-top:4px}

/* ---------- Статистика / Roadmap ---------- */
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin-bottom:20px}
.stat{padding:18px 20px}
.stat-num{font-size:28px;font-weight:700;line-height:1.2}
.stat-label{color:var(--muted);font-size:13px;margin-top:2px}
.roadmap{list-style:none;margin:0;padding:0}
.roadmap li{padding:8px 0;border-bottom:1px dashed var(--border);color:var(--muted)}
.roadmap li:last-child{border-bottom:none}
.roadmap li.done{color:var(--green);font-weight:600}
.roadmap li.done span{font-weight:400;font-size:12.5px;margin-left:8px}

/* ---------- Авторизація ---------- */
.auth-wrap{min-height:calc(100vh - 160px);display:flex;align-items:center;justify-content:center}
.auth-card{width:100%;max-width:380px;padding:28px}
.auth-card h1{font-size:19px;margin-bottom:8px}
.auth-card .hint{margin-bottom:14px}
.auth-card .field{margin-bottom:14px}
.auth-errors{list-style:none;margin:0 0 14px;padding:10px 12px;background:var(--red-soft);color:var(--red);border-radius:8px;font-size:13.5px}
.auth-errors li{margin:2px 0}

/* ---------- Алерти / Заглушки ---------- */
.alert{padding:10px 12px;border-radius:8px;font-size:13.5px;margin-bottom:14px}
.alert-error{background:var(--red-soft);color:var(--red)}
.stub{max-width:560px;margin:60px auto;text-align:center;padding:40px 30px}
.stub-phase{display:inline-block;background:var(--accent-soft);color:var(--accent);font-weight:600;font-size:12.5px;padding:3px 12px;border-radius:999px;margin-bottom:14px}
.stub .muted{margin:10px 0 22px}

/* ---------- Toast ---------- */
#toast-root{position:fixed;right:18px;bottom:18px;display:flex;flex-direction:column;gap:8px;z-index:100}
.toast{background:#111827;color:#fff;padding:10px 16px;border-radius:8px;font-size:14px;opacity:0;transform:translateY(8px);transition:all .25s ease;max-width:340px}
.toast.show{opacity:1;transform:none}
.toast-error{background:var(--red)}
.toast-success{background:var(--green)}

.site-footer{max-width:1280px;margin:0 auto;padding:0 20px 24px;color:var(--muted);font-size:12.5px}

@media (max-width:720px){
  .form-grid{grid-template-columns:1fr}
  .page-head{flex-direction:column;align-items:flex-start}
}
.hidden { display: none !important; }

/* ---------- Warehouse Cells & Tree Styling ---------- */
.tree ul { list-style: none; padding-left: 20px; margin: 4px 0; border-left: 2px dashed #e2e8f0; }
.tree li { margin: 6px 0; }
.node-row {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 12px;
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: 8px;
  transition: all .15s ease;
}
.node-row:hover { background: #f1f5f9; border-color: #cbd5e1; box-shadow: 0 2px 4px rgba(0,0,0,0.03); }
.node-caret { background: none; border: none; font-size: 12px; cursor: pointer; color: #64748b; padding: 2px 6px; }
.node-name { font-weight: 600; color: #1e293b; font-size: 14px; }
.node-name.is-system { color: #475569; }
.node-actions { margin-left: auto; display: flex; gap: 4px; }

.cell-details-summary {
  display: flex;
  gap: 16px;
  margin-bottom: 14px;
  padding: 10px 14px;
  background: #f1f5f9;
  border-radius: 8px;
  font-size: 13.5px;
  color: #334155;
}
.cell-details-summary strong { color: #0f172a; }
.cell-items-table { width: 100%; border-collapse: collapse; }
.cell-items-table th { background: #f8fafc; padding: 8px 12px; text-align: left; font-size: 12.5px; color: #64748b; border-bottom: 1px solid #e2e8f0; }
.cell-items-table td { padding: 10px 12px; border-bottom: 1px solid #f1f5f9; font-size: 13.5px; vertical-align: middle; }
.qty-pill {
  display: inline-block;
  background: #dbeafe;
  color: #1e40af;
  font-weight: 700;
  padding: 2px 10px;
  border-radius: 999px;
  font-size: 13px;
}

/* ---------- Модальні вікна (Global) ---------- */
.modal-overlay {
  position: fixed;
  inset: 0;
  background: rgba(15,23,42,.5);
  display: flex;
  align-items: flex-start;
  justify-content: center;
  z-index: 100;
  padding: 40px 16px;
  overflow-y: auto;
}
.modal {
  background: var(--panel, #fff);
  border-radius: 12px;
  width: 100%;
  max-width: 520px;
  box-shadow: 0 20px 50px rgba(15,23,42,.28);
  display: flex;
  flex-direction: column;
  margin: auto;
}
.modal.modal-md { max-width: 680px; }
.modal.modal-lg { max-width: 880px; }
.modal.modal-xl { max-width: 1050px; }
.modal h3 { margin: 0; padding: 16px 20px; border-bottom: 1px solid var(--border); font-size: 16.5px; font-weight: 700; }
.modal-actions { display: flex; justify-content: flex-end; gap: 10px; padding: 14px 20px; border-top: 1px solid var(--border); }

/* ---------- Autocomplete Dropdown ---------- */
.ac-wrapper {
  position: relative;
  width: 100%;
}
.ac-dropdown {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  right: 0;
  background: var(--panel, #ffffff);
  border: 1px solid var(--border, #cbd5e1);
  border-radius: 8px;
  box-shadow: 0 12px 30px rgba(15, 23, 42, 0.18);
  max-height: 280px;
  overflow-y: auto;
  z-index: 9999;
  display: none;
  padding: 4px 0;
}
.ac-dropdown.show {
  display: block;
}
.ac-option {
  padding: 8px 12px;
  font-size: 13.5px;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 10px;
  color: var(--text, #1e293b);
  transition: background 0.12s;
  border-bottom: 1px solid #f1f5f9;
}
.ac-option:last-child {
  border-bottom: none;
}
.ac-option:hover, .ac-option.active {
  background: #f0fdf4;
  color: var(--text, #0f172a);
}
.ac-option-sku {
  font-family: ui-monospace, monospace;
  font-size: 11.5px;
  font-weight: 700;
  background: #e0f2fe;
  color: #0369a1;
  padding: 2px 6px;
  border-radius: 4px;
  flex-shrink: 0;
}

/* ---------- Attach Products Modal List & Chips ---------- */
.modal-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 10px 0;
  max-height: 100px;
  overflow-y: auto;
}
.modal-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: #e0f2fe;
  color: #0369a1;
  padding: 3px 8px;
  border-radius: 6px;
  font-size: 12px;
  font-weight: 500;
}
.modal-chip-x {
  border: none;
  background: transparent;
  color: #0369a1;
  font-size: 14px;
  font-weight: bold;
  cursor: pointer;
  padding: 0 2px;
  line-height: 1;
}
.modal-chip-x:hover {
  color: #ef4444;
}
.modal-product-list {
  border: 1px solid var(--border);
  border-radius: 8px;
  max-height: 240px;
  overflow-y: auto;
  margin-top: 10px;
  background: #fff;
}
.modal-product-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 12px;
  border-bottom: 1px solid #f1f5f9;
  cursor: pointer;
  font-size: 13.5px;
  transition: background .1s;
}
.modal-product-item:last-child {
  border-bottom: none;
}
.modal-product-item:hover {
  background: #f8fafc;
}
.modal-product-thumb {
  width: 28px;
  height: 28px;
  object-fit: cover;
  border-radius: 4px;
  flex-shrink: 0;
  border: 1px solid #e2e8f0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: #f1f5f9;
  color: #64748b;
  font-size: 11px;
}

/* ---------- Custom Calendar / DatePicker ---------- */
.datepicker-wrap {
  position: relative;
  display: inline-flex;
  align-items: center;
}
.datepicker-wrap input {
  padding-right: 32px !important;
  cursor: pointer !important;
}
.datepicker-wrap .datepicker-icon {
  position: absolute;
  right: 10px;
  pointer-events: none;
  font-size: 13px;
  opacity: 0.6;
  line-height: 1;
}
.custom-datepicker-popup {
  position: absolute;
  z-index: 10000;
  background: #ffffff;
  border: 1px solid var(--border, #e2e8f0);
  border-radius: 12px;
  box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.12), 0 8px 10px -6px rgba(0, 0, 0, 0.08);
  padding: 14px;
  width: 275px;
  font-family: inherit;
  color: var(--text, #0f172a);
  user-select: none;
  animation: dpFadeIn 0.15s ease-out;
}
@keyframes dpFadeIn {
  from { opacity: 0; transform: translateY(-4px); }
  to { opacity: 1; transform: translateY(0); }
}
.dp-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 12px;
}
.dp-title {
  font-weight: 700;
  font-size: 14px;
  color: #0f172a;
}
.dp-nav-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 6px;
  border: 1px solid var(--border, #e2e8f0);
  background: #f8fafc;
  color: #475569;
  cursor: pointer;
  font-size: 14px;
  transition: all 0.12s ease;
}
.dp-nav-btn:hover {
  background: #e2e8f0;
  color: #0f172a;
}
.dp-weekdays {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 2px;
  margin-bottom: 6px;
  text-align: center;
  font-size: 11.5px;
  font-weight: 600;
  color: #94a3b8;
  text-transform: uppercase;
}
.dp-days {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 2px;
}
.dp-day {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 32px;
  border-radius: 6px;
  font-size: 13px;
  font-weight: 500;
  color: #1e293b;
  cursor: pointer;
  transition: all 0.1s ease;
  background: transparent;
  border: none;
  padding: 0;
}
.dp-day:hover:not(.dp-disabled):not(.dp-selected) {
  background: #eff6ff;
  color: var(--accent, #2563eb);
}
.dp-day.dp-other-month {
  color: #cbd5e1;
}
.dp-day.dp-today {
  font-weight: 700;
  border: 1px solid #93c5fd;
  color: #2563eb;
}
.dp-day.dp-selected {
  background: var(--accent, #2563eb) !important;
  color: #ffffff !important;
  font-weight: 700;
}
.dp-footer {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-top: 10px;
  padding-top: 8px;
  border-top: 1px solid #f1f5f9;
}
.dp-footer-btn {
  background: transparent;
  border: none;
  font-size: 12px;
  font-weight: 600;
  color: var(--accent, #2563eb);
  cursor: pointer;
  padding: 4px 6px;
  border-radius: 4px;
}
.dp-footer-btn:hover {
  background: #eff6ff;
}
.dp-footer-btn.dp-btn-clear {
  color: #ef4444;
}
.dp-footer-btn.dp-btn-clear:hover {
  background: #fef2f2;
}

/* ---------- User Filter Multi-Select Dropdown ---------- */
.user-filter-dropdown {
  position: relative;
  display: inline-block;
}
.user-filter-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 12px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--panel);
  font: inherit;
  font-size: 13.5px;
  color: var(--text);
  cursor: pointer;
  height: 38px;
  box-sizing: border-box;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
  white-space: nowrap;
}
.user-filter-btn:hover {
  border-color: var(--accent);
}
.user-filter-btn.active {
  border-color: var(--accent);
  background: var(--accent-soft, #eff6ff);
  color: var(--accent, #2563eb);
  font-weight: 600;
}
.user-filter-btn.active-exclude {
  border-color: #fca5a5;
  background: #fef2f2;
  color: #dc2626;
  font-weight: 600;
}
.user-filter-menu {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  z-index: 1000;
  min-width: 260px;
  background: #ffffff;
  border: 1px solid var(--border, #e2e8f0);
  border-radius: 10px;
  box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.12), 0 8px 10px -6px rgba(0, 0, 0, 0.08);
  padding: 10px;
  display: none;
  flex-direction: column;
  gap: 8px;
  animation: dpFadeIn 0.15s ease-out;
}
.user-filter-dropdown.open .user-filter-menu,
.user-filter-menu.open {
  display: flex !important;
}
.user-filter-menu[hidden] {
  display: none !important;
}
.user-filter-mode-box {
  display: flex;
  background: #f1f5f9;
  border-radius: 6px;
  padding: 2px;
  gap: 2px;
}
.user-filter-mode {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 5px 8px;
  font-size: 12px;
  font-weight: 600;
  border-radius: 5px;
  cursor: pointer;
  color: #475569;
  user-select: none;
  transition: all 0.12s ease;
}
.user-filter-mode input {
  display: none;
}
.user-filter-mode:has(input:checked) {
  background: #ffffff;
  color: var(--text, #0f172a);
  box-shadow: 0 1px 3px rgba(0,0,0,0.1);
}
.user-filter-mode.mode-exclude:has(input:checked) {
  color: #dc2626;
}
.user-filter-actions {
  display: flex;
  justify-content: space-between;
  padding: 0 2px;
}
.user-filter-list {
  max-height: 200px;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: 2px;
  border: 1px solid #f1f5f9;
  border-radius: 6px;
  padding: 4px;
}
.user-filter-item {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 8px;
  border-radius: 6px;
  font-size: 13px;
  cursor: pointer;
  user-select: none;
  transition: background 0.1s ease;
}
.user-filter-item:hover {
  background: #f8fafc;
}
.user-filter-item input[type=checkbox] {
  width: 15px;
  height: 15px;
  accent-color: var(--accent, #2563eb);
  cursor: pointer;
}
.badge-order-link {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 2px 8px;
  border-radius: 6px;
  background: #eff6ff;
  color: #2563eb;
  font-weight: 600;
  font-size: 12.5px;
  text-decoration: none;
  cursor: pointer;
  transition: background 0.12s ease;
}
.badge-order-link:hover {
  background: #dbeafe;
}

/* ---------- Таби та підвкладки (Кошик тощо) ---------- */
.tabs {
  display: flex;
  gap: 6px;
  margin-bottom: 18px;
  border-bottom: 1px solid var(--border);
  padding-bottom: 12px;
  flex-wrap: wrap;
  align-items: center;
}
.tab {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 7px 16px;
  border-radius: 999px;
  color: var(--muted, #64748b);
  font-weight: 500;
  font-size: 13.5px;
  background: var(--panel, #ffffff);
  border: 1px solid var(--border, #cbd5e1);
  text-decoration: none;
  cursor: pointer;
  transition: all 0.15s ease;
  user-select: none;
}
.tab:hover {
  background: #f8fafc;
  border-color: #94a3b8;
  color: var(--text, #1e293b);
  text-decoration: none;
}
.tab .badge {
  font-size: 11.5px;
  padding: 1px 7px;
  border-radius: 999px;
  background: #f1f5f9;
  color: #64748b;
  transition: all 0.15s ease;
}
.tab.active {
  background: var(--accent, #2563eb) !important;
  border-color: var(--accent, #2563eb) !important;
  color: #ffffff !important;
  font-weight: 700;
  box-shadow: 0 2px 8px rgba(37, 99, 235, 0.28);
}
.tab.active:hover {
  background: #1d4fd7 !important;
  border-color: #1d4fd7 !important;
  color: #ffffff !important;
}
.tab.active .badge {
  background: rgba(255, 255, 255, 0.25) !important;
  color: #ffffff !important;
  font-weight: 700;
}

/* ---------- Стан системи (System Status Dashboard) ---------- */
.status-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 16px;
  margin-bottom: 20px;
}
.status-card {
  background: var(--panel, #ffffff);
  border: 1px solid var(--border, #e2e8f0);
  border-radius: var(--radius, 10px);
  padding: 18px 20px;
  box-shadow: var(--shadow);
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}
.status-card-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 12px;
}
.status-card-title {
  font-size: 15px;
  font-weight: 600;
  color: var(--text, #1e293b);
  display: flex;
  align-items: center;
  gap: 7px;
}
.status-pill {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 3px 9px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 600;
}
.status-pill.ok {
  background: var(--green-soft, #e7f6ec);
  color: var(--green, #15803d);
}
.status-pill.warning {
  background: var(--amber-soft, #fdf3e3);
  color: var(--amber, #b45309);
}
.status-pill.danger {
  background: var(--red-soft, #fdecec);
  color: var(--red, #dc2626);
}

.disk-progress-container {
  margin: 14px 0 18px;
}
.disk-progress-bar {
  height: 12px;
  background: #e2e8f0;
  border-radius: 6px;
  overflow: hidden;
  display: flex;
}
.disk-progress-fill {
  height: 100%;
  transition: width 0.4s ease;
}
.disk-progress-fill.ok { background: var(--accent, #2563eb); }
.disk-progress-fill.warning { background: var(--amber, #b45309); }
.disk-progress-fill.danger { background: var(--red, #dc2626); }

.stat-subgrid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
  gap: 12px;
}
.stat-subcard {
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: 8px;
  padding: 10px 12px;
}
.stat-subcard-val {
  font-size: 17px;
  font-weight: 700;
  color: var(--text, #1e293b);
  line-height: 1.2;
}
.stat-subcard-lbl {
  font-size: 11.5px;
  color: var(--muted, #64748b);
  margin-top: 2px;
}

.status-kv-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.status-kv-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 13.5px;
  padding-bottom: 6px;
  border-bottom: 1px dashed #e2e8f0;
}
.status-kv-item:last-child {
  border-bottom: none;
  padding-bottom: 0;
}
.status-kv-key {
  color: var(--muted, #64748b);
}
.status-kv-val {
  font-weight: 600;
  color: var(--text, #1e293b);
}

.status-alert {
  padding: 12px 16px;
  border-radius: 8px;
  font-size: 13.5px;
  font-weight: 500;
  margin-bottom: 16px;
  display: flex;
  align-items: center;
  gap: 8px;
}
.status-alert.warning {
  background: #fef3c7;
  color: #92400e;
  border: 1px solid #fde68a;
}
.status-alert.danger {
  background: #fee2e2;
  color: #991b1b;
  border: 1px solid #fca5a5;
}

/* ---------- Центр Імпорту та Експорту (Data Exchange Hub) ---------- */
.exchange-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  gap: 16px;
  margin-bottom: 24px;
}
.exchange-card {
  background: var(--panel, #ffffff);
  border: 1px solid var(--border, #e2e8f0);
  border-radius: var(--radius, 10px);
  padding: 18px 20px;
  box-shadow: var(--shadow);
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  gap: 12px;
  transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.exchange-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(16, 24, 40, 0.08);
}
.exchange-card-header {
  display: flex;
  align-items: center;
  gap: 12px;
}
.exchange-icon {
  width: 44px;
  height: 44px;
  border-radius: 10px;
  background: var(--bg, #f8fafc);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 22px;
  flex-shrink: 0;
  border: 1px solid var(--border);
}
.exchange-info {
  flex: 1;
  min-width: 0;
}
.exchange-title {
  font-size: 16px;
  font-weight: 700;
  color: var(--text, #1e293b);
  line-height: 1.3;
}
.exchange-key-hint {
  font-size: 11.5px;
  color: var(--muted, #64748b);
  margin-top: 2px;
}
.exchange-desc {
  font-size: 13.5px;
  color: var(--muted, #475569);
  line-height: 1.45;
  flex: 1;
}
.exchange-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  padding-top: 10px;
  border-top: 1px solid var(--border);
}

/* Модальне вікно імпорту */
.modal-overlay {
  position: fixed;
  inset: 0;
  z-index: 1000;
  background: rgba(15, 23, 42, 0.55);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  backdrop-filter: blur(2px);
}
.modal-window {
  background: var(--panel, #ffffff);
  border-radius: 12px;
  border: 1px solid var(--border);
  box-shadow: 0 10px 25px rgba(0, 0, 0, 0.15);
  width: 100%;
  max-width: 600px;
  max-height: 90vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  animation: modalFadeIn 0.15s ease-out;
}
.modal-window.modal-lg {
  max-width: 780px;
}
@keyframes modalFadeIn {
  from { opacity: 0; transform: scale(0.97); }
  to { opacity: 1; transform: scale(1); }
}
.modal-header {
  padding: 16px 20px;
  border-bottom: 1px solid var(--border);
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.modal-title {
  font-size: 16px;
  font-weight: 700;
  color: var(--text);
}
.modal-close {
  background: none;
  border: none;
  font-size: 22px;
  color: var(--muted);
  cursor: pointer;
  line-height: 1;
  padding: 0 4px;
}
.modal-close:hover { color: var(--text); }
.modal-body {
  padding: 20px;
  overflow-y: auto;
  flex: 1;
}
.modal-footer {
  padding: 14px 20px;
  border-top: 1px solid var(--border);
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  background: #f8fafc;
}

/* Дропзона */
.import-step-box {
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 14px 16px;
  background: var(--panel);
}
.step-label {
  font-size: 13.5px;
  font-weight: 700;
  color: var(--text);
  margin-bottom: 10px;
}
.dropzone {
  border: 2px dashed #cbd5e1;
  border-radius: 8px;
  padding: 24px 16px;
  text-align: center;
  background: #f8fafc;
  cursor: pointer;
  transition: all 0.15s ease;
}
.dropzone:hover, .dropzone.dragover {
  border-color: var(--accent);
  background: var(--accent-soft, #eff6ff);
}

/* Стратегії */
.strategy-selector {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.strategy-option {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 10px 12px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: #f8fafc;
  cursor: pointer;
  transition: background 0.12s ease;
}
.strategy-option:hover {
  background: #f1f5f9;
}
.strategy-option input[type=radio] {
  margin-top: 3px;
  accent-color: var(--accent);
}
.strategy-text strong {
  display: block;
  font-size: 13.5px;
  color: var(--text);
}
.strategy-text span {
  display: block;
  font-size: 12px;
  color: var(--muted);
  margin-top: 2px;
}

/* Попередній перегляд (Preview) */
.preview-stats-bar {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  margin-bottom: 10px;
}
.pstat-item {
  background: #f1f5f9;
  padding: 6px 12px;
  border-radius: 6px;
  font-size: 12.5px;
  font-weight: 500;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.pstat-val {
  font-weight: 700;
  font-size: 14px;
}
.pstat-blue { background: #eff6ff; color: #2563eb; }
.pstat-green { background: #f0fdf4; color: #16a34a; }
.pstat-red { background: #fef2f2; color: #dc2626; }

.preview-badge {
  display: inline-block;
  padding: 2px 7px;
  border-radius: 4px;
  font-size: 11px;
  font-weight: 700;
  white-space: nowrap;
}
.badge-update { background: #eff6ff; color: #2563eb; border: 1px solid #bfdbfe; }
.badge-insert { background: #f0fdf4; color: #16a34a; border: 1px solid #bbf7d0; }
.badge-error  { background: #fef2f2; color: #dc2626; border: 1px solid #fecaca; }

/* ==========================================================
   Permissions Manager in Users Modal
   ========================================================== */
#user-modal .modal {
  max-width: 760px !important;
  width: 95% !important;
  border-radius: 14px;
  overflow: hidden;
  box-shadow: 0 25px 50px -12px rgba(15, 23, 42, 0.35);
  background: #ffffff;
}

#user-modal .modal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 18px 24px;
  border-bottom: 1px solid var(--border);
  background: #ffffff;
}

#user-modal .modal-header h2 {
  margin: 0;
  font-size: 18px;
  font-weight: 700;
  color: #0f172a;
}

#user-modal #btn-close-modal-x {
  width: 32px;
  height: 32px;
  border: none;
  background: transparent;
  cursor: pointer;
  color: var(--muted);
  font-size: 20px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 6px;
  transition: background 0.15s ease, color 0.15s ease;
}

#user-modal #btn-close-modal-x:hover {
  background: #f1f5f9;
  color: #0f172a;
}

#user-modal .modal-body {
  padding: 22px 24px;
  max-height: 72vh;
  overflow-y: auto;
}

#user-modal-error {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 14px;
  background: #fef2f2;
  border: 1px solid #fecaca;
  border-radius: 8px;
  color: #dc2626;
  font-size: 13.5px;
  font-weight: 500;
  margin-bottom: 16px;
  line-height: 1.4;
  animation: modalErrSlideDown 0.2s ease-out;
}

#user-modal-error.hidden {
  display: none !important;
}

@keyframes modalErrSlideDown {
  from {
    opacity: 0;
    transform: translateY(-6px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

#user-modal .user-fields-grid {
  display: flex;
  flex-direction: column;
  gap: 14px;
  margin-bottom: 16px;
}

#user-modal .field {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

#user-modal .field span {
  font-size: 13px;
  font-weight: 600;
  color: #334155;
}

#user-modal .field input {
  width: 100%;
  box-sizing: border-box;
  padding: 9px 12px;
  border: 1px solid var(--border);
  border-radius: 8px;
  font-size: 14px;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

#user-modal .field input:focus {
  border-color: var(--accent, #2563eb);
  outline: none;
  box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.12);
}

#user-modal .field input.field-has-error {
  border-color: #dc2626 !important;
  background-color: #fff5f5 !important;
  box-shadow: 0 0 0 3px rgba(220, 38, 38, 0.15) !important;
}

#user-modal .is-admin-toggle {
  background: #f8fafc;
  padding: 12px 14px;
  border-radius: 8px;
  border: 1px solid var(--border);
  display: flex;
  align-items: center;
  gap: 12px;
  cursor: pointer;
  margin-bottom: 14px;
  transition: background 0.15s ease;
}

#user-modal .is-admin-toggle:hover {
  background: #f1f5f9;
}

#user-modal .is-admin-toggle input {
  width: 18px;
  height: 18px;
  cursor: pointer;
  flex-shrink: 0;
}

#user-modal .is-admin-toggle strong {
  display: block;
  font-size: 13.5px;
  color: #0f172a;
}

#user-modal .is-admin-toggle .muted {
  font-size: 12px;
  color: var(--muted);
}

#user-modal .modal-actions {
  padding: 16px 24px;
  border-top: 1px solid var(--border);
  display: flex;
  justify-content: flex-end;
  gap: 12px;
  background: #f8fafc;
}

.permissions-manager {
  display: flex;
  flex-direction: column;
  gap: 14px;
  margin-top: 14px;
}

.perm-card {
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 12px 14px;
  transition: opacity 0.2s ease, border-color 0.2s ease;
}

.perm-card-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 10px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--border);
}

.perm-card-title {
  font-weight: 700;
  font-size: 13.5px;
  color: var(--text);
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.perm-card-actions {
  display: flex;
  gap: 6px;
}

.perm-quick-btn {
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 5px;
  padding: 3px 8px;
  font-size: 11px;
  font-weight: 600;
  color: var(--muted);
  cursor: pointer;
  transition: all 0.15s ease;
}

.perm-quick-btn:hover {
  background: var(--accent);
  color: #fff;
  border-color: var(--accent);
}

.perm-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
  gap: 8px;
}

.perm-item {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 7px 10px;
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 7px;
  font-size: 12.5px;
  font-weight: 500;
  color: var(--text);
  cursor: pointer;
  user-select: none;
  transition: all 0.15s ease;
}

.perm-item:hover {
  border-color: var(--accent);
  background: #f8fafc;
}

.perm-item input[type="checkbox"] {
  cursor: pointer;
  width: 15px;
  height: 15px;
  margin: 0;
  accent-color: var(--accent);
}

.perm-item.checked {
  border-color: var(--accent);
  background: #eff6ff;
  font-weight: 600;
}

.perm-card.disabled {
  opacity: 0.55;
  pointer-events: none;
}

/* ==========================================================
   Повідомлення про помилку (Bug Report System)
   ========================================================== */
.topbar-bug-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  padding: 0;
  border-radius: 6px;
  background: #fef2f2;
  border: 1px solid #fecaca;
  color: #dc2626;
  cursor: pointer;
  transition: all 0.15s ease;
  text-decoration: none;
  flex-shrink: 0;
}

.topbar-bug-btn:hover {
  background: #fee2e2;
  border-color: #fca5a5;
  color: #b91c1c;
  box-shadow: 0 1px 3px rgba(220, 38, 38, 0.2);
  transform: translateY(-1px);
}

.topbar-bug-btn:active {
  transform: translateY(0);
}

.topbar-bug-btn svg {
  width: 15px;
  height: 15px;
  display: block;
}

.bug-status-dropdown {
  padding: 5px 8px;
  border-radius: 6px;
  font-size: 12.5px;
  font-weight: 600;
  cursor: pointer;
  border: 1px solid var(--border);
  transition: all 0.2s ease;
}

.bug-status-dropdown[data-status="new"] {
  background: #fef2f2;
  border-color: #fecaca;
  color: #dc2626;
}

.bug-status-dropdown[data-status="in_progress"] {
  background: #eff6ff;
  border-color: #bfdbfe;
  color: #2563eb;
}

.bug-status-dropdown[data-status="resolved"] {
  background: #f0fdf4;
  border-color: #bbf7d0;
  color: #16a34a;
}

.nav-bug-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: #ef4444;
  color: #ffffff;
  font-size: 11px;
  font-weight: 700;
  min-width: 18px;
  height: 18px;
  padding: 0 5px;
  border-radius: 999px;
  margin-left: 5px;
  line-height: 1;
  box-shadow: 0 1px 3px rgba(239, 68, 68, 0.4);
}

#bug-report-modal .modal {
  max-width: 580px !important;
  width: 95% !important;
  border-radius: 14px;
  overflow: hidden;
  box-shadow: 0 25px 50px -12px rgba(15, 23, 42, 0.35);
  background: #ffffff;
}

.bug-context-info {
  display: flex;
  gap: 14px;
  padding: 10px 14px;
  background: #f8fafc;
  border: 1px solid var(--border);
  border-radius: 8px;
  font-size: 13px;
  flex-wrap: wrap;
}

.bug-context-item {
  display: flex;
  align-items: center;
  gap: 6px;
}

.bug-context-label {
  color: var(--muted);
}

.bug-textarea {
  width: 100%;
  box-sizing: border-box;
  padding: 10px 12px;
  border: 1px solid var(--border);
  border-radius: 8px;
  font-family: inherit;
  font-size: 13.5px;
  line-height: 1.5;
  resize: vertical;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.bug-textarea:focus {
  border-color: var(--accent);
  outline: none;
  box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.12);
}

.bug-dropzone {
  border: 2px dashed #cbd5e1;
  border-radius: 8px;
  padding: 18px;
  text-align: center;
  background: #fbfcfd;
  cursor: pointer;
  transition: all 0.15s ease;
}

.bug-dropzone:hover, .bug-dropzone.dragover {
  border-color: var(--accent);
  background: #eff6ff;
}

.bug-image-preview-box {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 14px;
  background: #f8fafc;
  border: 1px solid var(--border);
  border-radius: 8px;
}

.bug-image-preview-thumb {
  width: 54px;
  height: 54px;
  object-fit: cover;
  border-radius: 6px;
  border: 1px solid #cbd5e1;
  flex-shrink: 0;
}

.bug-image-preview-info {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 2px;
  overflow: hidden;
}

.bug-table-thumb {
  width: 44px;
  height: 44px;
  object-fit: cover;
  border-radius: 6px;
  border: 1px solid var(--border);
  cursor: zoom-in;
  transition: transform 0.15s ease, box-shadow 0.15s ease;
}

.bug-table-thumb:hover {
  transform: scale(1.08);
  box-shadow: 0 4px 10px rgba(0,0,0,0.12);
}




