/* ============================================================
   Портал адаптации · оболочка, секции, единственная сетка
   ============================================================ */

/* ==================== ОБОЛОЧКА ==================== */
.shell {
  width: 100%;
  max-width: var(--maxw);
  margin-inline: auto;
  padding-inline: var(--pad);
}

/* Отступ снизу под фиксированную нижнюю панель — только там, где она есть.
   Значение собрано из --mnav-h, дублей высоты в CSS нет. */
.page {
  min-height: 60vh;
  padding-block: clamp(24px, 4vw, 44px) clamp(48px, 7vw, 88px);
  display: grid;
  gap: var(--sec-gap);
}

.page__head {
  display: grid;
  gap: 14px;
  justify-items: start;
  max-width: 70ch;
}

/* ==================== СЕКЦИЯ ==================== */
.sec {
  display: grid;
  gap: clamp(20px, 3vw, 32px);
  scroll-margin-top: calc(var(--nav-h) + 12px);
}

.sec__head {
  display: grid;
  gap: 12px;
  justify-items: start;
  max-width: 70ch;
}

.sec__num {
  font-family: var(--mono);
  font-size: var(--fs-label);
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--ink-muted);
}

.sec__title {
  font-family: var(--display);
  font-size: var(--fs-h2);
  font-weight: 900;
  letter-spacing: -.028em;
  line-height: 1.08;
  margin: 0;
  text-wrap: balance;
  overflow-wrap: break-word;
}

.sec__lede {
  color: var(--ink-muted);
  font-size: var(--fs-lede);
  line-height: 1.55;
  max-width: 62ch;
}

.sec--dark {
  background: var(--bg-dark);
  color: var(--on-dark);
  border-radius: var(--r-lg);
  padding: clamp(24px, 4vw, 44px);
}
.sec--dark .sec__num { color: var(--on-dark-3); }
.sec--dark .sec__lede { color: var(--on-dark-2); }

.sec--paper {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--r-lg);
  padding: clamp(20px, 3.5vw, 36px);
}

/* ==================== ЕДИНСТВЕННАЯ СЕТКА КАРТОЧЕК ====================
   Работает на 0..N элементов без единого нового медиазапроса.
   --n шаблон передаёт инлайном: style="--n: {{ items|length }}".
   max-width не даёт одной-двум карточкам растянуться на всю ширину. */
.auto-grid {
  display: grid;
  gap: 20px;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  max-width: min(100%, calc(var(--n, 3) * 380px + (var(--n, 3) - 1) * 20px));
}

/* Элемент сетки по умолчанию не ужимается меньше своего содержимого
   (min-width: auto). Из-за этого широкая картинка внутри карточки растягивала
   всю страницу: на экране 375px документ становился 528px и уезжал вбок.
   Разрешаем ужиматься — переполнение разбирает сам элемент. */
.auto-grid > * { min-width: 0; }

/* Узкая колонка — для плотных перечней (контакты, ярлыки) */
.auto-grid--tight {
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
}

/* На узком экране minmax(280px,1fr) может переполнить вьюпорт при --pad = 16px */
@media (max-width: 380px) {
  .auto-grid, .auto-grid--tight { grid-template-columns: 1fr; }
}

/* ==================== СТОПКА ==================== */
.stack {
  display: grid;
  gap: 16px;
}
.stack--tight { gap: 10px; }
.stack--loose { gap: 28px; }

.row {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  align-items: center;
}

/* ==================== ССЫЛКА «ДАЛЬШЕ» ====================
   Последний элемент каждой страницы: линейное чтение — основной сценарий. */
.next-link {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  gap: 16px;
  min-height: 72px;
  padding: 18px 22px;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--r-md);
  transition: border-color .2s var(--ease), background .2s var(--ease);
}
.next-link__label {
  display: block;
  font-family: var(--mono);
  font-size: var(--fs-label);
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--ink-muted);
  margin-bottom: 4px;
}
.next-link__title {
  display: block;
  font-family: var(--display);
  font-size: var(--fs-h3);
  font-weight: 900;
  line-height: 1.15;
  color: var(--accent-ink);
}
.next-link__arrow {
  display: grid;
  place-items: center;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  background: var(--accent-soft);
  color: var(--accent-ink);
  font-size: 20px;
  flex-shrink: 0;
}
@media (hover: hover) {
  .next-link:hover { border-color: var(--accent-fill); background: var(--surface-alt); }
}

/* Четыре карточки в ряду по три дают «сироту»: третья колонка второго ряда
   пустует на две трети. Ширина сетки урезается до двух колонок — получается
   ровный квадрат 2×2. Пять и шесть карточек ложатся на три колонки без
   остатка, поэтому их не трогаем. */
.auto-grid[data-n="4"] {
  max-width: min(100%, calc(2 * 380px + 20px));
}
