/* ==========================================================================
   grid.css — контейнер и сетка. ЗАМЕНЯЕТ Bootstrap .container / .row / .col-*
   Контейнерные ширины и брейкпоинты перенесены 1:1 из style.css оригинала:
   576 / 768 / 992 / 1200 / 1366
   ========================================================================== */

/* --------------------------------------------------------------------------
   Контейнер
   Ширина вынесена в переменную, потому что её переиспользует баннер .hero__slide:
   чтобы текст баннера попадал на ту же линию, что и текст секций, ширина баннера
   должна быть не меньше ширины контейнера. Дублировать лестницу брейкпоинтов
   во втором месте нельзя — они разъедутся при первой же правке.
   -------------------------------------------------------------------------- */
:root { --container-w: 100%; }
@media (min-width: 576px)  { :root { --container-w: 576px; } }
@media (min-width: 768px)  { :root { --container-w: 768px; } }
@media (min-width: 992px)  { :root { --container-w: 992px; } }
@media (min-width: 1200px) { :root { --container-w: 1200px; } }
@media (min-width: 1366px) { :root { --container-w: 1240px; } }

.container {
  width: 100%;
  margin-inline: auto;
  padding-inline: var(--gutter);
  max-width: var(--container-w);
}

/* Растянутый контейнер для hero/баннеров */
.container--wide {
  max-width: 100%;
  padding-inline: var(--gutter);
}
@media (min-width: 992px)  { .container--wide { padding-inline: 3rem; } }

/* Внутренний контейнер без горизонтальных отступов (для футера во всю ширину) */
.container--flush { padding-inline: 0; }

/* --------------------------------------------------------------------------
   Сетка на 12 колонок (CSS Grid, mobile-first)
   Разметка:  <div class="grid"><div class="col-12 col-md-6 col-lg-4">…</div></div>
   Базовая колонка занимает 100% ширины, поэтому адаптив задаётся суффиксами.
   -------------------------------------------------------------------------- */
.grid {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: var(--row-gap);
  align-items: start;
}

.grid > * { min-width: 0; }             /* защита от переполнения длинным текстом */
.grid--tight { gap: 1rem; }
.grid--loose { gap: 3rem; }
.grid--flush { gap: 0; }
.grid--center { align-items: center; }
.grid--end    { align-items: end; }

/* Горизонтальный зазор двенадцатиколоночной сетки на мобильных.
   При gap: 3rem одни только межколонники — 11 × 30px = 330px — не
   помещались в контейнер (290px при экране 320px). Треки при этом
   не сжимались, а схлопывались в ноль, и элемент на 12 колонок
   получал ширину ровно в сумму промежутков — 330px, то есть вылезал
   за экран. minmax(0, 1fr) и min-width: 0 тут не спасают: зазоры
   живут вне треков. Поэтому на узких экранах горизонтальный зазор
   уменьшаем, вертикальный оставляем. */
@media (max-width: 575px) {
  .grid,
  .grid--loose,
  .grid--tight { column-gap: 1rem; }
}

/* Базовая (мобильная) ширина — 12/12 */
.col-1  { grid-column: span 1; }
.col-2  { grid-column: span 2; }
.col-3  { grid-column: span 3; }
.col-4  { grid-column: span 4; }
.col-5  { grid-column: span 5; }
.col-6  { grid-column: span 6; }
.col-7  { grid-column: span 7; }
.col-8  { grid-column: span 8; }
.col-9  { grid-column: span 9; }
.col-10 { grid-column: span 10; }
.col-11 { grid-column: span 11; }
.col-12 { grid-column: span 12; }

/* Смещения — для «пустых» колонок, чтобы не делать order + margin */
.start-1  { grid-column-start: 1; }
.start-2  { grid-column-start: 2; }
.start-3  { grid-column-start: 3; }
.start-4  { grid-column-start: 4; }
.start-5  { grid-column-start: 5; }
.start-6  { grid-column-start: 6; }
.start-7  { grid-column-start: 7; }
.start-8  { grid-column-start: 8; }
.start-9  { grid-column-start: 9; }
.start-10 { grid-column-start: 10; }
.start-11 { grid-column-start: 11; }
.start-12 { grid-column-start: 12; }

@media (min-width: 576px) {
  .col-sm-1  { grid-column: span 1; }
  .col-sm-2  { grid-column: span 2; }
  .col-sm-3  { grid-column: span 3; }
  .col-sm-4  { grid-column: span 4; }
  .col-sm-5  { grid-column: span 5; }
  .col-sm-6  { grid-column: span 6; }
  .col-sm-8  { grid-column: span 8; }
  .col-sm-9  { grid-column: span 9; }
  .col-sm-10 { grid-column: span 10; }
  .col-sm-12 { grid-column: span 12; }

  .start-sm-2  { grid-column-start: 2; }
  .start-sm-3  { grid-column-start: 3; }
  .start-sm-4  { grid-column-start: 4; }
  .start-sm-5  { grid-column-start: 5; }
  .start-sm-6  { grid-column-start: 6; }
  .start-sm-7  { grid-column-start: 7; }
  .start-sm-8  { grid-column-start: 8; }
  .start-sm-9  { grid-column-start: 9; }
  .start-sm-10 { grid-column-start: 10; }
}

@media (min-width: 768px) {
  .col-md-1  { grid-column: span 1; }
  .col-md-2  { grid-column: span 2; }
  .col-md-3  { grid-column: span 3; }
  .col-md-4  { grid-column: span 4; }
  .col-md-5  { grid-column: span 5; }
  .col-md-6  { grid-column: span 6; }
  .col-md-7  { grid-column: span 7; }
  .col-md-8  { grid-column: span 8; }
  .col-md-9  { grid-column: span 9; }
  .col-md-10 { grid-column: span 10; }
  .col-md-12 { grid-column: span 12; }

  .start-md-2 { grid-column-start: 2; }
  .start-md-3 { grid-column-start: 3; }
  .start-md-4 { grid-column-start: 4; }
  .start-md-5 { grid-column-start: 5; }
  .start-md-6 { grid-column-start: 6; }
  .start-md-7 { grid-column-start: 7; }
  .start-md-8 { grid-column-start: 8; }
  .start-md-9 { grid-column-start: 9; }
}

@media (min-width: 992px) {
  .col-lg-1  { grid-column: span 1; }
  .col-lg-2  { grid-column: span 2; }
  .col-lg-3  { grid-column: span 3; }
  .col-lg-4  { grid-column: span 4; }
  .col-lg-5  { grid-column: span 5; }
  .col-lg-6  { grid-column: span 6; }
  .col-lg-7  { grid-column: span 7; }
  .col-lg-8  { grid-column: span 8; }
  .col-lg-9  { grid-column: span 9; }
  .col-lg-10 { grid-column: span 10; }
  .col-lg-12 { grid-column: span 12; }

  .start-lg-2 { grid-column-start: 2; }
  .start-lg-3 { grid-column-start: 3; }
  .start-lg-4 { grid-column-start: 4; }
  .start-lg-5 { grid-column-start: 5; }
  .start-lg-6 { grid-column-start: 6; }
  .start-lg-7 { grid-column-start: 7; }
  .start-lg-8 { grid-column-start: 8; }
  .start-lg-9 { grid-column-start: 9; }
}

@media (min-width: 1200px) {
  .col-xl-2  { grid-column: span 2; }
  .col-xl-3  { grid-column: span 3; }
  .col-xl-4  { grid-column: span 4; }
  .col-xl-5  { grid-column: span 5; }
  .col-xl-6  { grid-column: span 6; }
  .col-xl-8  { grid-column: span 8; }
  .col-xl-9  { grid-column: span 9; }
  .col-xl-10 { grid-column: span 10; }
  .col-xl-12 { grid-column: span 12; }
}

/* --------------------------------------------------------------------------
   Авто-колонки (repeat) — проще для однотипных списков
   Использование: <div class="cols cols-4">
   По умолчанию 1 колонка, дальше растёт.
   -------------------------------------------------------------------------- */
.cols {
  display: grid;
  gap: var(--row-gap);
  grid-template-columns: 1fr;
}
/* Без min-width:0 элемент сетки не сжимается меньше своего контента
   (CSS Grid blowout) и выталкивает всю страницу в горизонтальный скролл. */
.cols > *,
.cols-products > * { min-width: 0; }
@media (min-width: 576px) { .cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 768px) { .cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 992px) { .cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); } }

/* Сетка товаров: 2 в ряд на мобильных, 3 на планшете, 4 на десктопе */
.cols-products {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1.5rem;
}
@media (min-width: 768px) {
  .cols-products { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 2rem; }
}
@media (min-width: 992px) {
  .cols-products { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

/* --------------------------------------------------------------------------
   STACK — вертикальный ритм между прямыми потомками
   Замена повторов вида <div class="mb-30"> внутри секций
   -------------------------------------------------------------------------- */
.stack > * + * { margin-top: var(--stack-gap, 1.5rem); }
.stack-2 { --stack-gap: 1rem; }
.stack-3 { --stack-gap: 1.5rem; }
.stack-4 { --stack-gap: 2rem; }
.stack-5 { --stack-gap: 2.5rem; }
.stack-6 { --stack-gap: 3rem; }
.stack-7 { --stack-gap: 4rem; }
.stack-8 { --stack-gap: 5rem; }
.stack-9 { --stack-gap: 6rem; }
