:root {
  --green:    #00963f;
  --green2:   #007a33;
  --yellow:   #ffd600;
  --yellow2:  #f5c800;
  --text:     #1a1a1a;
  --muted:    #6b7280;
  --border:   #e5e7eb;
  --bg:       #f5f7f5;
  --white:    #ffffff;
  --r:        10px;
  --sw:       272px;
  --hh:       68px;
  --primary-color: #00963f;
  --primary-dark: #007a33;
  --primary-light: #00b84a;
}
* { margin:0; padding:0; box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { font-family:'Golos Text',sans-serif; background:var(--bg); color:var(--text); min-height:100vh; }

/* ===== TOP BAR ===== */
.top-bar {
  background: var(--primary-dark);
  padding: 7px 20px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
}
.top-contacts { display:flex; align-items:center; gap:20px; flex-wrap:wrap; }
.top-contact { display:flex; align-items:center; gap:6px; font-size:12.5px; }
.top-contact svg { opacity:.7; flex-shrink:0; }
.top-contact a { text-decoration:none; }
.top-contact a:hover { color:var(--yellow); }
.top-promo { font-weight:600; font-size:12px; }
.top-bar,
.top-bar .top-contact,
.top-bar .top-contact a,
.top-bar .top-promo,
.top-bar svg { color:#ffffff !important; }
.top-contact svg { stroke:#ffffff !important; }

/* ===== HEADER ===== */
.header {
  position: sticky; top:0; z-index:200;
  background: var(--white);
  box-shadow: 0 2px 12px rgba(0,0,0,.09);
  height: var(--hh);
}
.header-inner {
  max-width:1440px; margin:0 auto; padding:0 24px;
  height:100%; display:flex; align-items:center; gap:20px;
}
.header-top-row { display: contents; }
.logo { display:flex; align-items:center; text-decoration:none; flex-shrink:0; }
.logo-wordmark { display:flex; flex-direction:column; line-height:1; }
.logo-letters {
  font-family:'Unbounded',sans-serif; font-weight:800; font-size:32px; line-height:1;
  display:flex; align-items:baseline;
}
.logo-green { color:#00963f !important; }
.logo-yellow { color:#ffd600 !important; }
.logo-sub-line {
  font-family:'Golos Text',sans-serif; font-weight:600; font-size:10.5px;
  color:#00963f !important; margin-top:2px;
  text-align:right;
}
.search-wrap { flex:1; max-width:580px; position:relative; margin-left:24px; }
.search-wrap svg { position:absolute; left:14px; top:50%; transform:translateY(-50%); color:var(--muted); pointer-events:none; }
#search {
  width:100%; height:44px;
  background:#f0f5f1;
  border:1.5px solid #d4e8d9;
  border-radius:50px;
  padding:0 20px 0 44px;
  font-family:'Golos Text',sans-serif; font-size:14px; color:var(--text);
  outline:none; transition:border-color .2s, background .2s;
}
#search:focus { border-color:var(--primary-color); background:var(--white); }
#search::placeholder { color:var(--muted); }
.header-right { margin-left:auto; display:flex; align-items:center; gap:12px; flex-shrink:0; }
.price-select {
  height:40px; padding:0 12px;
  background:var(--white); border:1.5px solid var(--border);
  border-radius:8px;
  font-family:'Golos Text',sans-serif; font-size:13px; font-weight:500; color:var(--text);
  cursor:pointer; outline:none; transition:all 0.2s ease;
}
.price-select:focus { border-color:var(--primary-color); }
.date-badge { font-size:12px; color:var(--muted); white-space:nowrap; }
.date-badge strong { color:var(--primary-color); }

/* ===== LAYOUT ===== */
.layout {
  max-width:1440px; margin:24px auto; padding:0 24px;
  display:flex; gap:24px; align-items:flex-start;
}
.sidebar {
  width:var(--sw); flex-shrink:0;
  background:var(--white);
  border-radius:14px;
  box-shadow:0 2px 10px rgba(0,0,0,.06);
  overflow:hidden;
  position:sticky; top:calc(var(--hh) + 16px);
  max-height:calc(100vh - var(--hh) - 40px);
  display:flex; flex-direction:column;
}
.sidebar-head {
  padding:16px 20px 14px;
  border-bottom:1px solid var(--border);
  flex-shrink:0;
}
.sidebar-head h2 {
  font-family:'Unbounded',sans-serif;
  font-size:13px; font-weight:700; color:var(--text);
  padding-bottom:10px;
  border-bottom:3px solid var(--primary-color);
  display:inline-block;
}
.cat-list {
  overflow-y:auto; flex:1; padding:6px 0;
  scrollbar-width:thin;
}
.cat-btn {
  display:flex; align-items:center; justify-content:space-between;
  width:100%; text-align:left; background:none; border:none;
  padding:9px 20px;
  font-family:'Golos Text',sans-serif; font-size:13.5px; font-weight:500;
  color:var(--muted); cursor:pointer; transition:all .15s;
  border-left:3px solid transparent;
}
.cat-btn:hover { color:var(--text); background:#f0f9f3; }
.cat-btn.active {
  color:var(--primary-color); font-weight:600;
  background:#f0f9f3; border-left-color:var(--primary-color);
}
.cat-count {
  font-size:11px; font-weight:600;
  background:#f0f1f3; color:var(--muted);
  border-radius:20px; padding:1px 7px; flex-shrink:0;
}
.cat-btn.active .cat-count { background:rgba(0,150,63,.12); color:var(--primary-color); }
.main { flex:1; min-width:0; }

/* ===== BANNER ===== */
.banner {
  background: linear-gradient(135deg, var(--primary-dark) 0%, var(--primary-color) 55%, var(--primary-light) 100%);
  border-radius:16px; padding:28px 28px 28px 32px;
  margin-bottom:22px;
  display:grid;
  grid-template-columns: 1fr auto;
  gap:20px;
  overflow:hidden; position:relative;
}
.banner::before {
  content:''; position:absolute; left:-60px; bottom:-60px;
  width:260px; height:260px; border-radius:50%;
  background:rgba(255,255,255,.04); pointer-events:none;
}
.banner-left { display:flex; flex-direction:column; justify-content:center; gap:12px; }
.banner-text h1 {
  font-family:'Unbounded',sans-serif;
  font-size:20px; font-weight:800;
  line-height:1.3;
}
.banner-text p { font-size:13px; line-height:1.5; margin-top:6px; }
.banner-meta { display:flex; align-items:center; gap:14px; flex-wrap:wrap; }
.banner-badge {
  background:var(--yellow);
  font-family:'Unbounded',sans-serif; font-weight:800; font-size:12px;
  padding:7px 16px; border-radius:50px; white-space:nowrap;
  color:#007a33 !important;
}
.banner-phone {
  font-size:13px; font-weight:600;
  display:flex; align-items:center; gap:6px;
  color:#ffffff !important;
}
.banner-phone svg { stroke:#ffffff !important; }
.banner .banner-text h1, .banner .banner-text p { color:#ffffff !important; }
.banner-basis {
  width:260px; flex-shrink:0;
  background:rgba(255,255,255,.1);
  border:2px dashed rgba(255,255,255,.35);
  border-radius:14px;
  padding:18px 16px;
  display:flex; flex-direction:column; align-items:center;
  cursor:pointer;
  transition:all .2s;
  position:relative; z-index:1;
}
.banner-basis:hover, .banner-basis.drag {
  background:rgba(255,255,255,.18);
  border-color:var(--yellow);
  transform:translateY(-2px);
}
.banner-basis-icon {
  width:48px; height:48px;
  background:rgba(255,255,255,.15);
  border-radius:12px;
  display:flex; align-items:center; justify-content:center;
  font-size:24px; margin-bottom:10px;
}
.banner-basis-title {
  font-family:'Unbounded',sans-serif;
  font-size:11px; font-weight:700;
  text-align:center; margin-bottom:4px;
  color:#ffffff !important;
}
.banner-basis-sub {
  font-size:10.5px;
  text-align:center; line-height:1.5;
  color:#ffffff !important;
}
.banner-basis-formats { display:flex; gap:4px; margin-top:10px; }
.banner-basis-fmt {
  font-size:9.5px; font-weight:700;
  background:rgba(255,255,255,.15);
  padding:2px 7px; border-radius:4px;
  color:#ffffff !important;
}
.banner-basis.loaded {
  border-style:solid;
  border-color:var(--yellow);
  background:rgba(255,214,0,.15);
  cursor:default;
}
.banner-basis.loaded:hover { transform:none; }

/* ===== STATS ===== */
.stats-bar {
  display:flex; align-items:center; gap:16px; margin-bottom:16px; flex-wrap:wrap;
}
.cat-title { font-family:'Unbounded',sans-serif; font-size:15px; font-weight:700; color:var(--text); }
.stats-count { font-size:13px; color:var(--muted); }
.stats-count strong { color:var(--text); font-weight:600; }

/* ===== PRODUCTS GRID ===== */
.products-grid {
  display:grid;
  grid-template-columns:repeat(auto-fill, minmax(210px, 1fr));
  gap:14px;
}
.cat-header-row {
  grid-column:1/-1;
  display:flex; align-items:center; gap:10px;
  padding:10px 0 2px;
}
.cat-header-row span {
  font-family:'Unbounded',sans-serif; font-size:10.5px; font-weight:700;
  letter-spacing:.07em; text-transform:uppercase; color:var(--muted); white-space:nowrap;
}
.cat-header-row::after { content:''; flex:1; height:1px; background:var(--border); }
.p-card {
  background:var(--white); border-radius:12px;
  box-shadow:0 1px 6px rgba(0,0,0,.06);
  padding:16px 15px 14px;
  display:flex; flex-direction:column;
  transition:transform .2s, box-shadow .2s;
  position:relative; overflow:hidden;
  cursor:pointer;
}
.p-card::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 3px;
  background: linear-gradient(90deg, var(--primary-color), var(--yellow));
  opacity: 0;
  transition: opacity 0.2s;
}
.p-card:hover { transform:translateY(-3px); box-shadow:0 8px 22px rgba(0,150,63,.13); }
.p-card:hover::before { opacity:1; }
.p-card-icon {
  width:42px; height:42px;
  background:linear-gradient(135deg,#f0f9f3,#e0f4e8);
  border-radius:10px;
  display:flex; align-items:center; justify-content:center;
  font-size:20px; margin-bottom:11px; flex-shrink:0;
}
.p-card-img {
  width:100%; height:130px; object-fit:contain;
  border-radius:8px; margin-bottom:11px;
  display:block; background:#fff;
}
.p-card-name {
  font-size:13px; font-weight:500; line-height:1.45; color:var(--text);
  flex:1; margin-bottom:13px;
  display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden;
}
.p-card-footer {
  display:flex; align-items:center; justify-content:space-between; gap:8px;
  border-top:1px solid var(--border); padding-top:11px; margin-top:auto;
}
.p-card-unit {
  font-size:11px; font-weight:600; color:var(--muted);
  background:#f4f5f7; border-radius:5px; padding:2px 7px;
}
.p-card-price {
  font-family:'Unbounded',sans-serif; font-size:15px; font-weight:700;
  white-space:nowrap;
}
.price-retail { color: #00963f; }
.price-opt { color: #6c757d; }
.price-small { color: #ffc107; }
.price-bulk { color: #007bff; }
.p-card-cart {
  width:100%; height:34px; margin-top:10px;
  background:linear-gradient(135deg, var(--primary-color), var(--primary-dark));
  border:none; border-radius:7px;
  font-family:'Golos Text',sans-serif; font-size:12px; font-weight:600;
  color:#fff !important;
  cursor:pointer;
  display:flex; align-items:center; justify-content:center; gap:5px;
}
.p-card-cart:hover { opacity:.88; }
.p-card-qty {
  display:flex; align-items:center; margin-top:10px;
  border:1.5px solid var(--primary-color); border-radius:7px; overflow:hidden; height:34px;
}
.p-card-qty button {
  width:34px; height:100%; border:none; background:var(--primary-color);
  font-size:16px; font-weight:700; cursor:pointer;
  color:#fff !important;
}
.p-card-qty input {
  flex:1; width:40px; text-align:center; font-family:'Unbounded',sans-serif;
  font-size:13px; font-weight:600; color:var(--primary-color); background:var(--white);
  border:none; outline:none;
}
.pagination {
  display:flex; align-items:center; justify-content:center; gap:6px;
  margin-top:28px; flex-wrap:wrap;
}
.page-btn {
  background:var(--white); border:1.5px solid var(--border);
  border-radius:8px; color:var(--text);
  font-family:'Golos Text',sans-serif; font-size:13px;
  padding:7px 14px; cursor:pointer;
}
.page-btn:hover { border-color:var(--primary-color); color:var(--primary-color); }
.page-btn.active {
  background:var(--primary-color); border-color:var(--primary-color);
  color:#fff !important; font-weight:600;
}
.page-btn:disabled { opacity:.4; cursor:default; }

/* ===== FOOTER ===== */
footer {
  background:var(--primary-dark);
  margin-top:56px; padding:40px 24px 28px;
}
.footer-inner {
  max-width:1440px; margin:0 auto;
  display:grid; grid-template-columns:1fr 1fr 1fr;
  gap:32px;
}
.footer-logo-text {
  font-family:'Unbounded',sans-serif; font-size:22px; font-weight:800;
  margin-bottom:8px;
  color:#ffffff !important;
}
.footer-logo-text span { color:var(--yellow) !important; }
.footer-desc {
  font-size:13px; line-height:1.6; margin-top:8px;
  color:#ffffff !important;
}
.footer-col h4 {
  font-family:'Unbounded',sans-serif;
  font-size:11px; font-weight:700; letter-spacing:.1em;
  text-transform:uppercase; margin-bottom:14px;
  color:#ffffff !important;
}
.footer-col ul { list-style:none; display:flex; flex-direction:column; gap:8px; }
.footer-col li {
  font-size:13px; display:flex; align-items:flex-start; gap:8px;
  color:#ffffff !important;
}
.footer-col li svg { flex-shrink:0; margin-top:2px; stroke:#ffffff !important; }
.footer-col a { text-decoration:none; color:#ffffff !important; }
.footer-col a:hover { color:var(--yellow) !important; }
.footer-bottom {
  max-width:1440px; margin:28px auto 0;
  padding-top:20px; border-top:1px solid rgba(255,255,255,.12);
  font-size:12px; text-align:center;
  color:rgba(255,255,255,.8) !important;
}

/* ===== CART ===== */
.cart-btn {
  position:relative; cursor:pointer; background:none; border:none;
  display:flex; align-items:center; gap:6px; padding:6px 12px;
  border-radius:8px;
}
.cart-btn:hover { background:#f0f9f3; }
.cart-btn svg { color:var(--primary-color); }
.cart-badge {
  position:absolute; top:0; right:2px;
  background:var(--primary-color);
  font-family:'Unbounded',sans-serif; font-size:10px; font-weight:700;
  min-width:18px; height:18px; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  color:#fff !important;
}
.cart-overlay {
  display:none; position:fixed; inset:0; z-index:500;
  background:rgba(0,0,0,.4); backdrop-filter:blur(3px);
}
.cart-overlay.open { display:block; }
.cart-panel {
  position:fixed; top:0; right:0; bottom:0; z-index:501;
  width:420px; max-width:100vw;
  background:var(--white); box-shadow:-4px 0 24px rgba(0,0,0,.12);
  display:none; flex-direction:column;
  transform:translateX(100%); transition:transform .3s;
}
.cart-panel.open { display:flex; transform:translateX(0); }
.cart-head {
  display:flex; align-items:center; justify-content:space-between;
  padding:18px 20px; border-bottom:1px solid var(--border);
}
.cart-head h2 { font-family:'Unbounded',sans-serif; font-size:15px; font-weight:700; }
.cart-close {
  background:none; border:none; font-size:22px; cursor:pointer;
  color:var(--muted); padding:4px 8px; border-radius:6px;
}
.cart-body { flex:1; overflow-y:auto; padding:16px 20px; }
.cart-empty { text-align:center; padding:60px 20px; color:var(--muted); font-size:14px; }
.cart-item {
  display:flex; align-items:center; gap:12px;
  padding:12px 0; border-bottom:1px solid var(--border);
}
.cart-item-info { flex:1; }
.cart-item-name { font-size:13px; font-weight:500; }
.cart-item-price { font-size:12px; color:var(--muted); margin-top:2px; }
.cart-item-qty {
  display:flex; align-items:center;
  border:1px solid var(--border); border-radius:6px; overflow:hidden; height:30px;
}
.cart-item-qty button {
  width:28px; height:100%; border:none; background:#f4f5f7;
  font-size:14px; cursor:pointer;
}
.cart-item-qty button:hover { background:var(--primary-color); color:#fff; }
.cart-item-qty input {
  width:40px; text-align:center; font-size:12px; font-weight:600;
  border:none; outline:none; background:transparent;
}
.cart-item-remove {
  background:none; border:none; color:var(--muted); cursor:pointer;
  font-size:16px; padding:4px;
}
.cart-item-remove:hover { color:#e53e3e; }
.cart-foot {
  padding:16px 20px; border-top:1px solid var(--border);
  background:#fafbfa;
}
.cart-total {
  display:flex; justify-content:space-between; align-items:center;
  margin-bottom:14px;
}
.cart-total-label { font-size:14px; color:var(--muted); }
.cart-total-sum {
  font-family:'Unbounded',sans-serif; font-size:20px; font-weight:700;
  color:var(--primary-color);
}
.cart-checkout {
  width:100%; height:46px;
  background:linear-gradient(135deg, var(--primary-color), var(--primary-dark));
  border:none; border-radius:10px;
  font-family:'Golos Text',sans-serif; font-size:15px; font-weight:600;
  color:#fff !important;
  cursor:pointer;
}
.cart-clear {
  width:100%; margin-top:8px; height:36px;
  background:none; border:1px solid var(--border); border-radius:8px;
  color:var(--muted); font-size:12px; cursor:pointer;
}
.cart-clear:hover { border-color:#e53e3e; color:#e53e3e; }

/* ===== TOAST ===== */
.toast {
  position:fixed; bottom:24px; left:50%; transform:translateX(-50%);
  background:var(--primary-color);
  padding:12px 24px; border-radius:10px;
  font-size:13px; font-weight:600;
  color:#fff !important;
  box-shadow:0 6px 20px rgba(0,0,0,.15); z-index:600;
  animation:toastIn .3s, toastOut .3s 1.8s forwards;
}
@keyframes toastIn { from { opacity:0; transform:translateX(-50%) translateY(20px); } }
@keyframes toastOut { to { opacity:0; transform:translateX(-50%) translateY(20px); } }

/* ===== BASIS ===== */
.basis-panel { width:520px; max-width:90vw; }
.basis-drop {
  border:2px dashed var(--border); border-radius:12px;
  padding:32px 20px; text-align:center; cursor:pointer;
  transition:all .2s; background:#fafbfa; margin-bottom:16px;
}
.basis-drop:hover, .basis-drop.drag { border-color:var(--primary-color); background:#f0f9f3; }
.basis-drop-icon { font-size:36px; margin-bottom:10px; }
.basis-drop-title {
  font-family:'Unbounded',sans-serif;
  font-size:13px; font-weight:600; margin-bottom:4px;
}
.basis-drop-sub { font-size:12px; color:var(--muted); }
.basis-formats { display:flex; gap:5px; justify-content:center; margin-top:10px; }
.basis-fmt {
  font-size:10px; font-weight:600;
  background:#e8f5e9; color:var(--primary-color);
  padding:2px 8px; border-radius:4px;
}
.basis-results-head {
  display:flex; align-items:center; justify-content:space-between;
  padding-bottom:12px; border-bottom:1px solid var(--border); margin-bottom:12px;
}
.basis-results-head h3 { font-family:'Unbounded',sans-serif; font-size:13px; font-weight:700; }
.basis-stats { font-size:12px; color:var(--muted); }
.basis-item { padding:10px 0; border-bottom:1px solid var(--border); }
.basis-item-head {
  display:flex; align-items:center; gap:10px; margin-bottom:6px;
}
.basis-item-name { flex:1; font-size:13px; font-weight:500; }
.basis-item-qty { font-size:12px; color:var(--muted); white-space:nowrap; }
.basis-match {
  display:flex; align-items:center; gap:10px;
  padding:8px 10px; background:#f0f9f3; border-radius:8px; margin-top:6px;
}
.basis-match-info { flex:1; min-width:0; }
.basis-match-name {
  font-size:12px; font-weight:500;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.basis-match-price {
  font-size:11px; color:var(--primary-color); font-weight:600; margin-top:2px;
}
.basis-match-add {
  height:28px; padding:0 12px; border-radius:6px; border:none;
  background:var(--primary-color);
  font-size:11px; font-weight:600;
  color:#fff !important;
  cursor:pointer; white-space:nowrap;
}
.basis-match-add.added { background:var(--border); color:var(--muted) !important; cursor:default; }
.basis-no-match {
  padding:6px 10px; background:#fff5f5; border-radius:8px; margin-top:6px;
  font-size:11px; color:#e53e3e;
}
.basis-add-all {
  width:100%; height:42px; margin-top:12px;
  background:linear-gradient(135deg, var(--primary-color), var(--primary-dark));
  border:none; border-radius:10px;
  font-size:14px; font-weight:600;
  color:#fff !important;
  cursor:pointer;
}
.basis-loading { text-align:center; padding:40px; color:var(--muted); font-size:14px; }
.basis-file-info {
  display:flex; align-items:center; gap:10px;
  padding:10px 14px; background:#f4f5f7; border-radius:8px;
  margin-bottom:14px; font-size:12px;
}
.basis-file-clear {
  margin-left:auto; background:none; border:none;
  color:var(--muted); font-size:16px; cursor:pointer;
}

/* ===== MODAL ===== */
.prod-overlay {
  display:none; position:fixed; inset:0; z-index:600;
  background:rgba(0,0,0,.55); backdrop-filter:blur(4px);
}
.prod-overlay.open { display:flex; align-items:center; justify-content:center; padding:16px; }
.prod-modal {
  background:var(--white); border-radius:18px;
  width:100%; max-width:460px; max-height:92vh;
  display:flex; flex-direction:column; overflow:hidden;
  box-shadow:0 24px 60px rgba(0,0,0,.22);
}
.pm-img-area {
  width:100%; height:45vw; max-height:260px; min-height:160px;
  background:#f5f7f5; flex-shrink:0; position:relative; overflow:hidden;
}
.pm-img-area img { width:100%; height:100%; object-fit:contain; }
.pm-img-icon {
  width:100%; height:100%; display:flex; align-items:center;
  justify-content:center; font-size:64px;
}
.pm-close {
  position:absolute; top:10px; right:10px; z-index:2;
  background:rgba(255,255,255,.9); border:none; border-radius:50%;
  width:34px; height:34px; font-size:18px; cursor:pointer;
  display:flex; align-items:center; justify-content:center;
}
.pm-body { padding:16px 18px; overflow-y:auto; flex:1; }
.pm-title {
  font-family:'Unbounded',sans-serif; font-size:13px; font-weight:700;
  line-height:1.4; margin-bottom:4px;
}
.pm-cat { font-size:12px; color:var(--muted); margin-bottom:14px; }
.pm-price-main {
  display:flex; align-items:baseline; gap:8px; margin-bottom:6px;
  flex-wrap:wrap;
}
.pm-price-big {
  font-family:'Unbounded',sans-serif; font-size:28px; font-weight:800;
  color:var(--green);
}
.pm-price-type { font-size:12px; color:var(--muted); }
.pm-price-unit { font-size:12px; color:var(--muted); }
.pm-foot {
  padding:12px 16px; border-top:1px solid var(--border); flex-shrink:0;
  display:flex; gap:10px;
}
.pm-cart-btn {
  flex:1; height:46px; border:none; border-radius:10px;
  background:linear-gradient(135deg, var(--green), var(--green2));
  font-family:'Golos Text',sans-serif; font-size:14px;
  font-weight:600; cursor:pointer;
  color:#fff !important;
}
.pm-share-btn {
  height:46px; width:46px; border-radius:10px;
  border:1px solid var(--border); background:none;
  color:var(--muted); font-size:20px; cursor:pointer;
  display:flex; align-items:center; justify-content:center;
}
.pm-share-btn:hover { border-color:var(--green); color:var(--green); }

mark { background:rgba(0,150,63,.15); color:var(--primary-color); border-radius:2px; padding:0 1px; }
.loading { display:flex; flex-direction:column; align-items:center; justify-content:center; min-height:50vh; gap:16px; }
.spinner { width:40px; height:40px; border:3px solid var(--border); border-top-color:var(--primary-color); border-radius:50%; animation:spin .7s linear infinite; }
@keyframes spin { to { transform:rotate(360deg); } }
.price-select.retail-select { border-color: #00963f; color: #00963f; }
.price-select.opt-select { border-color: #6c757d; color: #6c757d; }
.price-select.small-select { border-color: #ffc107; color: #b8860b; }
.price-select.bulk-select { border-color: #007bff; color: #007bff; }

/* ===== МОБИЛЬНАЯ ВЕРСИЯ ===== */
@media (max-width: 1024px) { .header-inner { padding: 0 16px; gap: 12px; } .search-wrap { margin-left: 12px; } .layout { padding: 0 16px; margin: 16px auto; } }
@media (max-width: 960px) { :root { --hh: 60px; } .sidebar { display: none; } .top-bar { padding: 8px 16px; justify-content: center; text-align: center; } .top-contacts { justify-content: center; gap: 12px; } .top-promo { display: none; } .footer-inner { grid-template-columns: 1fr; gap: 32px; text-align: center; } .footer-col ul { align-items: center; } .footer-col li { justify-content: center; text-align: center; } .footer-logo-text { justify-content: center; } }
@media (max-width: 768px) { .header-right .date-badge { display: none; } .banner { grid-template-columns: 1fr; padding: 24px; text-align: center; } .banner-left { align-items: center; } .banner-meta { justify-content: center; } .banner-basis { width: 100%; max-width: 320px; margin: 0 auto; } .banner::before { width: 180px; height: 180px; } }
@media (max-width: 600px) {
  :root { --hh: auto; }
  .header { height: auto; padding: 12px 0; position: sticky; top: 0; }
  .header-inner { display: grid; grid-template-areas: "logo top-row" "search search"; grid-template-columns: 1fr auto; gap: 12px; padding: 0 16px; height: auto; }
  .logo { grid-area: logo; align-self: center; }
  .header-top-row { grid-area: top-row; display: flex; align-items: center; justify-content: flex-end; }
  .search-wrap { grid-area: search; width: 100%; margin: 0; }
  .logo-letters { font-size: 24px; }
  .logo-sub-line { font-size: 9px; }
  .search-wrap { width: 100%; margin: 0; position: relative; display: block; order: 3; }
  #search { width: 100%; height: 42px; border-radius: 10px; border: 1.5px solid #d4e8d9; background: #f0f5f1; padding: 0 16px 0 40px; font-size: 14px; opacity: 1; pointer-events: all; transform: none; position: static; }
  .search-wrap svg { left: 12px; top: 50%; transform: translateY(-50%); position: absolute; z-index: 2; pointer-events: none; }
  .header-top-row .header-right { display: flex; order: 2; margin-left: auto; gap: 8px; align-items: center; }
  .price-select { height: 36px; font-size: 12px; padding: 0 8px; width: auto; max-width: 130px; }
  .cart-btn { padding: 4px 8px; }
  .layout { margin-top: 12px; }
  .products-grid { grid-template-columns: repeat(2, 1fr); gap: 8px; }
  .p-card { padding: 12px 10px; border-radius: 10px; }
  .p-card-img { height: 110px; margin-bottom: 8px; }
  .p-card-name { font-size: 12px; margin-bottom: 8px; -webkit-line-clamp: 2; height: 2.9em; }
  .p-card-footer { padding-top: 8px; }
  .p-card-price { font-size: 13px; }
  .p-card-unit { font-size: 9px; padding: 1px 5px; }
  .stats-bar { gap: 8px; margin-bottom: 12px; }
  .cat-title { font-size: 13px; width: 100%; }
  .stats-count { font-size: 11px; }
  .cart-btn-fixed { position: fixed; right: 16px; bottom: 16px; width: 56px; height: 56px; border-radius: 28px; background: var(--primary-color); color: #fff; display: flex; align-items: center; justify-content: center; box-shadow: 0 4px 16px rgba(0,0,0,0.2); z-index: 400; border: none; }
  .cart-btn-fixed .cart-badge { top: -4px; right: -4px; border: 2px solid #fff; }
  .header .cart-btn { display: none; }
  .mobile-cats-trigger { display: flex; align-items: center; gap: 6px; background: var(--white); padding: 10px 16px; border-radius: 10px; margin-bottom: 16px; font-weight: 600; font-size: 14px; box-shadow: 0 2px 8px rgba(0,0,0,0.05); cursor: pointer; }
  .cart-panel, .basis-panel { width: 100%; border-radius: 20px 20px 0 0; top: auto; height: 85vh; transform: translateY(100%); right: 0; }
  .cart-panel.open, .basis-panel.open { transform: translateY(0); }
  .prod-modal { max-height: 95vh; border-radius: 20px 20px 0 0; align-self: flex-end; }
  .pm-img-area { height: 60vw; }
}
.p-card, .btn, .cart-panel, .prod-modal { transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); }