/* Контакты v3 + мобильный футер + строка адреса реквизитов.
   Отдельный файл по образцу Дед Глеб; подключается последним. */

/* ============================================================
   ВЕБ-ВЕРСИЯ /contacts
   ============================================================ */

/* Первый экран: преимущества вынесены отдельным элементом сетки —
   на десктопе возвращаем их в левую колонку под текстом */
@media (min-width: 768px) {
  body:not(.admin-body).pages.contacts .contact-hero-grid {
    grid-template-columns: minmax(0, 1.35fr) minmax(420px, 0.9fr);
    grid-template-areas: "copy card" "benefits card";
    gap: 24px 56px;
    align-items: center;
  }
  body:not(.admin-body).pages.contacts .contact-hero-grid > .contact-hero-copy { grid-area: copy; }
  body:not(.admin-body).pages.contacts .contact-hero-grid > .contact-hero-card { grid-area: card; }

}

/* Форма: поля 52px на десктопе, textarea и дропзона одной высоты */

/* Адрес и карта: единая карточка без зазора, карта 390px */
@media (min-width: 768px) {
  /* Адрес слева, карта справа — вернули исходный порядок (решение
     15.08.2026, вечер). Ширины колонок те же, что были при зеркальном
     варианте: текстовая узкая, карта широкая. */
  body:not(.admin-body).pages.contacts .map-panel {
    display: grid;
    grid-template-columns: minmax(360px, 0.75fr) minmax(0, 1.4fr);
    gap: 0;
    overflow: hidden;
    border: 1px solid var(--color-border);
    border-radius: 18px;
    background: #fff;
  }
  body:not(.admin-body).pages.contacts .map-panel-copy { padding: 30px 32px; }
  body:not(.admin-body).pages.contacts .map-panel-embed,
  body:not(.admin-body).pages.contacts .map-panel > .map-panel-embed {
    min-height: 390px;
    height: 100%;
    border-radius: 0;
  }}

/* Зазор карта → реквизиты задаёт общий ритм блоков 10px (16.08.2026) */
body:not(.admin-body).pages.contacts .contact-map-section {
  margin-bottom: 0;
  padding-bottom: 0;
  min-height: 0;
  height: auto;
}
body:not(.admin-body).pages.contacts .contact-requisites-section {
  margin-top: 0;
  padding-top: 0;
}

/* Кнопки карт: контент по центру, одна строка на 360–430 */
body:not(.admin-body).pages.contacts .map-route-button {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  width: 100%;
  min-height: 52px;
  padding: 0 20px;
  text-align: center;
  border-radius: var(--radius-control);
}
body:not(.admin-body).pages.contacts .map-route-button span {
  font-size: 16px;
  font-weight: 600;
  line-height: 1.2;
  white-space: normal;
}

/* Реквизиты: 4 колонки, адрес отдельной строкой, кнопки 46px */
@media (min-width: 1024px) {
  body:not(.admin-body).pages.contacts .contact-requisites-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 18px 24px;
  }
  body:not(.admin-body).pages.contacts .contact-requisite-address { grid-column: 1 / -1; }}
body:not(.admin-body).pages.contacts .requisites-action {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 46px;
  /* 15/14, не 16/18: в кнопке 240px «Скопировать реквизиты» (218px)
     выходило за поля на 8px (аудит 16.09.2026); 15 — кегль кнопок сайта */
  padding: 0 14px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-control);
  font-size: 15px;
  font-weight: 600;
}

/* ============================================================
   МОБИЛЬНАЯ ВЕРСИЯ /contacts (≤767)
   ============================================================ */
@media (max-width: 767px) {
  /* Первый экран: текст → карточка → преимущества (естественный порядок разметки) */
  body:not(.admin-body).pages.contacts .contact-hero-grid {
    display: flex;
    flex-direction: column;
    gap: 0;
  }
  body:not(.admin-body).pages.contacts .contact-page-hero h1 {
    /* 30px — единый мобильный кегль H1 по сайту (разбор 21.08.2026, Б3) */
    font-size: 30px;
    line-height: 1.1;
    margin-top: 12px;
    overflow-wrap: normal;
    word-break: normal;
    hyphens: manual;
  }
  body:not(.admin-body).pages.contacts .contact-page .contact-hero-copy .lead,
  body:not(.admin-body).pages.contacts .contact-page-hero .lead {
    font-size: 16px;
    line-height: 1.5;
    margin-top: 14px;
  }

  /* Адрес и карта: карта 290px, без пустой полосы */
  body:not(.admin-body).pages.contacts .map-panel { border-radius: 14px; overflow: hidden; }
  body:not(.admin-body).pages.contacts .map-panel-copy { padding: 22px 20px; }
  body:not(.admin-body).pages.contacts .map-route-button { min-height: 48px; }
  body:not(.admin-body).pages.contacts .map-panel-embed,
  body:not(.admin-body).pages.contacts .map-panel > .map-panel-embed {
    height: 200px;
    min-height: 200px;
    max-height: 200px;
    border-radius: 0 0 14px 14px;
    overflow: hidden;
  }
  body:not(.admin-body).pages.contacts .contact-map-section { padding-bottom: 28px; }

  /* Реквизиты: две колонки для коротких значений */
  body:not(.admin-body).pages.contacts .contact-requisites-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px 20px;
  }
  body:not(.admin-body).pages.contacts .contact-requisite-address { grid-column: 1 / -1; }
  body:not(.admin-body).pages.contacts .requisites-action { width: 100%; height: 46px; }
  body:not(.admin-body).pages.contacts .contact-requisites,
  body:not(.admin-body).pages.contacts .contact-requisites-head { scroll-margin-top: 84px; }

}

/* ============================================================
   КОНТАКТЫ v4: компактная hero-карточка, форма, карта, реквизиты, FAQ
   ============================================================ */

/* Hero-карточка: ширина как у карточки файла на «Наличии» — 560px (13.08.2026) */
@media (min-width: 768px) {
  body:not(.admin-body).pages.contacts .contact-hero-card {
    max-width: 560px;
    justify-self: end;
    width: 100%;
  }
  body:not(.admin-body).pages.contacts .contact-hero-grid {
    grid-template-columns: minmax(0, 1fr) minmax(420px, 560px);
  }}

/* Форма: плотнее */

/* Карта: без белой полосы снизу — колонки одной высоты */
@media (min-width: 768px) {
  body:not(.admin-body).pages.contacts .map-panel {
    align-items: stretch;
    overflow: hidden;
    height: auto;
    min-height: 0;
    padding: 0;
  }
  body:not(.admin-body).pages.contacts .map-panel-copy {
    padding: 22px 28px;
    margin: 0;
  }
  body:not(.admin-body).pages.contacts .map-panel-embed,
  body:not(.admin-body).pages.contacts .map-panel > .map-panel-embed {
    height: 100%;
    min-height: 300px;
    max-height: none;
    align-self: stretch;
    display: block;
    margin: 0;
    padding: 0;
    border-radius: 0;
  }
  body:not(.admin-body).pages.contacts .map-panel-embed .map-preview,
  body:not(.admin-body).pages.contacts .map-panel-embed iframe {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    margin: 0;
  }
  body:not(.admin-body).pages.contacts .map-panel-embed iframe[hidden] { display: none; }}

/* Кнопки реквизитов: одна строка, одинаковая высота, без переносов */
body:not(.admin-body).pages.contacts .contact-requisites-actions {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}
body:not(.admin-body).pages.contacts .requisites-action {
  white-space: nowrap;
  min-height: 46px;
}
@media (max-width: 767px) {
  body:not(.admin-body).pages.contacts .contact-requisites-actions { flex-direction: column; align-items: stretch; }
  body:not(.admin-body).pages.contacts .requisites-action { width: 100%; white-space: normal; }}

/* Правила для .pages.stock отсюда убраны: «Наличие» этот файл не подключает
   (у него 22-stock-mobile и 23-contacts-final), поэтому они не действовали.
   Картинку XLSX и карточки разделов оформляет 22-stock-mobile — там те же
   селекторы есть, страница выглядит как задумано (замер 14.08.2026). */

/* ============================================================
   КОНТАКТЫ: без линии под hero, форма поднята как на «Наличии»
   ============================================================ */
@media (min-width: 768px) {
  body:not(.admin-body).pages.contacts .contact-page-hero,
  body:not(.admin-body).pages.contacts section.page-hero.contact-page-hero {
    border-bottom: 0;
    padding-bottom: 16px;
  }
/* Селектор .pages.complex_supply отсюда убран: этот файл на «Комплексных
   поставках» не подключается вовсе (там 21-complex), поэтому правило там
   никогда не действовало. */
body:not(.admin-body).pages.contacts section.section.contact-form-section {
    padding-top: 10px;
  }}

/* Надзаголовок hero — как на «Наличии»: цвет, отступы, высота от крошек */
@media (min-width: 768px) {
  body:not(.admin-body).pages.contacts .contact-page-hero { padding-top: 28px; }}
body:not(.admin-body).pages.contacts .contact-page-hero .eyebrow {
  color: #1870BD;
  margin-bottom: 14px;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.08em;
}

/* Отступ от крошек до надзаголовка = 38px (усиленная специфичность) */
@media (min-width: 768px) {
  body:not(.admin-body).pages.contacts section.page-hero.contact-page-hero { padding-top: 28px; }}

/* Сток: «Или отправьте заполненный файл» — контент по вертикальному центру
   даже когда карточка растянута по высоте полосы */
/* Скоуп .pages.stock снят: «Наличие» этот файл не подключает. Общий
   селектор оставлен — он работает везде, где встретится блок. */
body:not(.admin-body) .stock-send-email {
  align-content: center;
  align-items: center;
}

/* ============================================================
   Карточка контактов в hero (редакция 3, 07.08.2026)
   Одна обводка, глифы без боксов, тач-цель на самой ссылке.
   Правил с !important здесь нет — блок-заплатка в 23- удалён.
   ============================================================ */
body:not(.admin-body).pages.contacts .contact-hero-card {
  display: flex;
  flex-direction: column;
  gap: 0;
  /* Карточка несёт и класс .contact-compact, а он в 01-base задаёт
     justify-content: space-between. Вместе с min-height: 296px (23-) это
     размазывало остаток высоты по всем зазорам карточки: заданные 12px между
     строками превращались в ~14px, заголовок отходил от телефона на ~17px.
     Прижимаем содержимое к верху — зазоры строк равны ровно тому, что задано,
     а кнопка остаётся у нижнего края за счёт margin-top: auto (см. ниже). */
  justify-content: flex-start;
  padding: var(--space-6);
  background: var(--color-bg);
  /* деликатный отсвет в верхнем правом углу — вместо второй обводки */
  background-image: radial-gradient(118% 86% at 100% 0%, rgba(24, 112, 189, 0.055), rgba(24, 112, 189, 0) 62%);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-card);
  box-shadow: none;
}

/* Заголовок карточки. Отбивка до первой строки — 12px: заголовок 15px
   подписывает группу контактов, 16px отрывали его от телефона. */
body:not(.admin-body).pages.contacts .contact-card-title {
  margin: 0 0 var(--space-3);
  max-width: none;
  font-size: 16px;
  line-height: 20px;
  font-weight: var(--fw-bold);
  color: var(--color-text);
}

body:not(.admin-body).pages.contacts .contact-hero-card .contact-line {
  display: grid;
  grid-template-columns: var(--icon-inline) minmax(0, 1fr);
  gap: 0 14px;
  align-items: center;
  min-height: 0;
  padding: 0;
  margin: 0;
  border: 0;
}

/* Шаг между строками контактов. Сами строки высокие (тач-цель ссылки 44px),
   поэтому воздух между ними набирается и без отбивки: 8px хватает, 12px
   разгоняли карточку. Правило распространяется и на строку режима работы —
   отдельного правила для .contact-line--hours не нужно: селектор
   `.contact-line + .contact-line` специфичнее (лишний класс), и оно всё равно
   перебивало его при любом порядке. */
body:not(.admin-body).pages.contacts .contact-hero-card .contact-line + .contact-line {
  margin-top: var(--space-2);
}

/* Иконка: голый глиф акцентом, без плашки и рамки */
body:not(.admin-body).pages.contacts .contact-hero-card .contact-line .icon-badge {
  width: var(--icon-inline);
  height: var(--icon-inline);
  background: none;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  color: var(--color-primary);
}

/* Значение: тач-цель набирается на самой ссылке, а не на строке */
body:not(.admin-body).pages.contacts .contact-hero-card .contact-line-value {
  display: inline-flex;
  align-items: center;
  padding-block: 5px;
  min-height: var(--tap-min);
  font-size: 20px;
  line-height: 1.25;
  font-weight: var(--fw-bold);
  color: var(--color-text);
  text-decoration: none;
}

@media (hover: hover) {
  body:not(.admin-body).pages.contacts .contact-hero-card .contact-line-value:hover {
    color: var(--color-primary);
  }}

body:not(.admin-body).pages.contacts .contact-hero-card .contact-line-hours {
  font-size: 16px;
  line-height: 20px;
  color: var(--color-text-muted);
}

body:not(.admin-body).pages.contacts .contact-hero-cta {
  position: static;
  transform: none;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
  height: var(--control-h);
  min-height: var(--control-h);
  /* Высота карточки на вебе задана жёстко (min-height: 296px, выровнена с
     соседней колонкой), поэтому лишняя высота всё равно останется внутри.
     Раньше её раздавал space-between — по паре пикселей в каждый зазор строк.
     Теперь весь остаток уходит сюда: кнопка прижата к нижнему полю карточки,
     а строки контактов стоят вплотную к заголовку. На телефоне карточка по
     содержимому, остатка нет — там ниже задан обычный отступ 12px. */
  margin-top: auto;
  border-radius: var(--radius-control);
}

@media (max-width: 767px) {
  body:not(.admin-body).pages.contacts .contact-hero-card {
    order: 2;
    width: 100%;
    padding: var(--space-5);
    border-radius: var(--radius-control);
  }
  body:not(.admin-body).pages.contacts .contact-hero-card .contact-line-value {
    font-size: 18px;
  }
  body:not(.admin-body).pages.contacts .contact-hero-cta {
    width: 100%;
    /* 48 — общая высота кнопок на телефоне (правило проекта) */
    height: 48px;
    min-height: 48px;
  }}

@media (max-width: 767px) {
  body:not(.admin-body).pages.contacts .contact-manager-card {
    padding: var(--space-5);
    border-radius: var(--radius-control);
  }
  body:not(.admin-body).pages.contacts .contact-manager-card h2 { font-size: 21px; }
}

/* ============================================================
   Единый ритм страницы «Контакты»: 20px между всеми блоками
   (первый экран → карта → реквизиты → форма → полезные разделы).
   ============================================================ */
body:not(.admin-body).pages.contacts .contact-page > .contact-page-hero.page-hero {
  padding-bottom: 0;
}

body:not(.admin-body).pages.contacts .contact-page > .contact-map-section.section-compact,
body:not(.admin-body).pages.contacts .contact-page > .contact-requisites-section.section-compact,
body:not(.admin-body).pages.contacts .contact-page > .contact-form-section.section,
body:not(.admin-body).pages.contacts .contact-page > .contact-links-section.section-compact {
  padding-top: 20px;
  padding-bottom: 0;
}

/* Зазор до подвала — общие 20px сайта (решение 15.08.2026) */
body:not(.admin-body).pages.contacts .contact-page > .contact-links-section.section-compact {
  padding-bottom: 20px;
}

/* ============================================================
   Перенесено из 13-mobile-final.css (файл не должен содержать
   правил страницы «Контакты»), плюс мобильные правила, которые
   раньше жили там же и реально работали.
   ============================================================ */
@media (max-width: 767px) {
  /* Кнопка «Открыть на карте» — во всю ширину снимка, тач-цель 44 */
  body:not(.admin-body).pages.contacts .map-load {
    inset: auto 16px 16px 16px;
    min-height: var(--tap-min, 44px);
  }
  body:not(.admin-body).pages.contacts .map-load .map-load-label {
    width: 100%;
    justify-content: center;
  }

  /* ООО / ИНН / КПП / ОГРН — сетка 2×2, юридический адрес ниже на всю ширину */
  body:not(.admin-body).pages.contacts .contact-requisites-grid .contact-requisite-address {
    grid-column: 1 / -1;
  }

  /* Адрес длинный — не мельче 13px */
  body:not(.admin-body).pages.contacts .contact-requisite-address dd {
    font-size: 13px;
    line-height: 18px;
  }}

/* ============================================================
   Мобильная плотность страницы «Контакты» (≤767):
   те же блоки и тексты, меньше вертикали.
   ============================================================ */
@media (max-width: 767px) {

  /* Первый экран: преимущества и карточка ближе друг к другу */
  body:not(.admin-body).pages.contacts .contact-hero-grid { gap: 10px; }
  /* Промежутки между телефоном, почтой и часами задавала не вёрстка строк,
     а сама карточка: min-height 296px + justify-content: space-between
     растягивали остаток высоты по зазорам (по 17px в каждый). На телефоне
     карточка идёт по содержимому, строки — подряд через 2px.
     justify-content здесь не повторяем: flex-start задан в базовом правиле
     карточки выше по файлу и действует на всех ширинах. */
  body:not(.admin-body).pages.contacts .contact-hero-card,
  body:not(.admin-body).pages.contacts .contact-compact.contact-hero-card {
    min-height: 0;
    height: auto;
    gap: 2px;
  }
  body:not(.admin-body).pages.contacts .contact-hero-card .contact-line + .contact-line {
    margin-top: 0;
    padding-top: 0;
  }
  body:not(.admin-body).pages.contacts .contact-hero-card .contact-line { padding-block: 0; }
  body:not(.admin-body).pages.contacts .contact-hero-card a.contact-line-value,
  body:not(.admin-body).pages.contacts .contact-hero-card .contact-line-value {
    /* Было 40px — цель нажатия ниже минимума, а это две главные ссылки
       страницы на телефоне (аудит геометрии 24.08.2026, 2.5) */
    min-height: var(--tap-min);
    padding-block: 0;
  }
  /* Отбивку заголовка карточки задаёт блок ниже по файлу (правило с той же
     специфичностью перебивало это), поэтому здесь его не дублируем. */

  /* Блок адреса: строки плотнее */
  body:not(.admin-body).pages.contacts .map-panel-copy { padding: 12px 16px; }
  body:not(.admin-body).pages.contacts .map-contact-row + .map-contact-row { margin-top: 6px; }}

/* Мобильная форма: шапка и обязательные поля ещё плотнее */

/* Мобильная плотность: первый экран, карточка, реквизиты, форма (−15%) */
@media (max-width: 767px) {
  body:not(.admin-body).pages.contacts .contact-hero-card {
    padding: 16px;
  }
  /* Заголовок карточки и телефон: 6px + 2px общего gap карточки = 8px.
     Было 12px + 2px — на телефоне это самый заметный зазор в карточке.
     Правила для .contact-line--hours здесь нет специально: селектор
     `.contact-line + .contact-line` (margin-top: 0 выше) специфичнее на один
     класс и перебивал его — строка часов и так идёт через общий gap 2px. */
  body:not(.admin-body).pages.contacts .contact-card-title {
    margin-bottom: 6px;
  }
  body:not(.admin-body).pages.contacts .contact-hero-cta {
    margin-top: var(--space-3);
  }
  body:not(.admin-body).pages.contacts .contact-page-hero .lead {
    margin-top: 10px;
  }

  /* Карта и реквизиты: заголовки блоков плотнее */
  body:not(.admin-body).pages.contacts .map-panel-copy h2,
  body:not(.admin-body).pages.contacts .contact-requisites-head h2 {
    margin-top: 4px;
    font-size: 22px;
    line-height: 1.2;
  }
  body:not(.admin-body).pages.contacts .contact-requisites-head {
    margin-bottom: var(--space-3);
  }
  body:not(.admin-body).pages.contacts .contact-requisite dt {
    line-height: 16px;
  }

}

/* Мобильная плотность, второй проход: подвал, тексты блоков, реквизиты */
@media (max-width: 767px) {
  /* Реквизиты: две кнопки в строку вместо колонки */
  body:not(.admin-body).pages.contacts .contact-requisites-actions {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
  }
  body:not(.admin-body).pages.contacts .contact-requisites-actions .requisites-action {
    max-height: none;
    padding-inline: 10px;
    font-size: 14px;
    text-align: center;
  }

}

/* Мобильная плотность, финальный проход */
@media (max-width: 767px) {
  body:not(.admin-body).pages.contacts .map-route-hint {
    margin-top: 12px;
    margin-bottom: 8px;
  }}

/* ============================================================
   Форма на телефоне (14.08.2026): раньше здесь стояло
   display: none на секции формы и карточка-переход вместо неё.
   Это давало лишний шаг в самом узком месте воронки и мёртвый
   якорь #specification-form, который не прокручивал никуда.
   В карточке первого экрана на телефоне — «Позвонить»:
   отправку спецификации уже держит липкая панель внизу.
   ============================================================ */
body:not(.admin-body).pages.contacts .contact-hero-cta--mobile { display: none; }

@media (max-width: 767px) {
  body:not(.admin-body).pages.contacts .contact-hero-cta--desktop { display: none; }
  body:not(.admin-body).pages.contacts .contact-hero-cta--mobile { display: flex; }}

/* ============================================================
   Мобильные «Контакты», правки 11.08.2026:
   преимущества только на вебе, кнопки навигаторов рядом,
   кнопки реквизитов одного размера, ритм блоков 10px.
   ============================================================ */
@media (max-width: 767px) {

  /* Навигаторы — друг под другом на всю ширину: в две колонки
     «Открыть в Яндекс Навигаторе» разваливается на три строки */
  body:not(.admin-body).pages.contacts .contact-map-section .map-route-buttons {
    grid-template-columns: minmax(0, 1fr);
    gap: 8px;
    width: 100%;
  }
  body:not(.admin-body).pages.contacts .contact-map-section .map-route-button {
    min-height: 50px;
    padding-inline: 14px;
    justify-content: center;
    text-align: left;
  }

  /* Кнопки реквизитов: в колонку на всю ширину — рядом текст переносится */
  body:not(.admin-body).pages.contacts .contact-requisites-actions {
    grid-template-columns: minmax(0, 1fr);
    align-items: stretch;
    gap: 8px;
  }
  body:not(.admin-body).pages.contacts .contact-requisites-actions .requisites-action {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    width: 100%;
    height: auto;
    min-height: 50px;
    max-height: none;
    padding: 8px 12px;
    font-size: 14px;
    line-height: 1.25;
    text-align: left;
  }
  body:not(.admin-body).pages.contacts .contact-requisites-actions .requisites-action-ico {
    flex: 0 0 18px;
  }

  /* Ритм блоков страницы — 10px */
  body:not(.admin-body).pages.contacts main.contact-page > section.section.section-compact.contact-map-section,
  body:not(.admin-body).pages.contacts main.contact-page > section.section.section-compact.contact-requisites-section,
  body:not(.admin-body).pages.contacts main.contact-page > section.section.section-compact.contact-links-section {
    padding-top: 20px;
  }
  body:not(.admin-body).pages.contacts main.contact-page > section.section.section-compact.contact-links-section {
    padding-bottom: 20px;
  }}

/* ============================================================
   Мобильные «Контакты», доработка 11.08.2026 (список из 10 пунктов)
   ============================================================ */
@media (max-width: 767px) {
  /* 2. Карта выше, кнопка «Открыть на карте» не во всю ширину */
  body:not(.admin-body).pages.contacts .map-panel-embed,
  body:not(.admin-body).pages.contacts .map-panel > .map-panel-embed {
    height: 230px;
    min-height: 230px;
    max-height: 230px;
  }
  body:not(.admin-body).pages.contacts .map-load {
    inset: auto 16px 16px;
    width: max-content;
    max-width: calc(100% - 32px);
    margin-inline: auto;
    min-height: 46px;
  }

  /* 6. Первый экран плотнее */
  body:not(.admin-body).pages.contacts .contact-page-hero { padding-top: 16px; }
  body:not(.admin-body).pages.contacts .contact-page-hero .eyebrow { margin-bottom: 8px; }
  body:not(.admin-body).pages.contacts .contact-page-hero .lead { margin-top: 8px; }
  body:not(.admin-body).pages.contacts .contact-hero-grid { gap: 8px; }

  /* 9. Иконки в адресной карточке — без квадратных плашек */
  body:not(.admin-body).pages.contacts .map-contact-row .icon-badge {
    width: 20px;
    height: 20px;
    background: none;
    border: 0;
    border-radius: 0;
    box-shadow: none;
    color: var(--color-primary);
  }}

/* Блок «Адрес компании» на десктопе: плотнее, чтобы целиком помещался
   на первом экране вместе с hero (просьба 11.08.2026) */
@media (min-width: 768px) {
  body:not(.admin-body).pages.contacts .map-panel-copy {
    /* 14px, не 16: блок ниже на 0,6 см (просьба 15.08.2026) */
    padding: 14px 28px;
    gap: 0;
    /* свободную высоту делим поровну — сверху и снизу одинаково */
    align-content: center;
  }
  body:not(.admin-body).pages.contacts .map-panel-copy h2 {
    margin: 2px 0 10px;
    font-size: 26px;
    line-height: 1.2;
  }
  body:not(.admin-body).pages.contacts .map-contact-row + .map-contact-row {
    margin-top: 8px;
  }
  body:not(.admin-body).pages.contacts .map-route-hint {
    margin: 12px 0 8px;
  }
  body:not(.admin-body).pages.contacts .contact-map-section .map-route-button {
    min-height: 46px;
  }}
/* ============================================================
   ПОЛЕЗНЫЕ РАЗДЕЛЫ (рендер 21.08.2026)
   Одна белая карточка, внутри четыре колонки с вертикальными
   разделителями. Строка-анкор прижата к низу колонки, поэтому
   «Проверить наличие / Открыть каталог / …» идут ровно по всей
   ширине блока при любой длине описания.
   Единственное место, где блок стилизуется: правила из 09, 11,
   20 и 23 сняты 21.08.2026, чтобы каскад не собирался из пяти
   файлов.
   ============================================================ */
/* Блок ниже на 20% (просьба 21.08.2026): ужаты поля, шапка и иконки,
   строка-анкор и её цель нажатия 44px не тронуты */
body:not(.admin-body).pages.contacts .contact-links-card {
  padding: 26px 28px 14px;
  border-radius: var(--radius-card);
}

body:not(.admin-body).pages.contacts .contact-links-card .eyebrow { margin-bottom: 8px; }

body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body).pages.contacts .contact-links-title {
  margin: 0 0 10px;
  font-size: 24px;
  line-height: 1.25;
}

body:not(.admin-body).pages.contacts .contact-links-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0;
  align-items: stretch;
}

body:not(.admin-body).pages.contacts .contact-link-card {
  display: flex;
  flex-direction: column;
  min-height: 0;
  padding: 0 22px;
  border: 0;
  border-radius: 0;
  background: none;
  box-shadow: none;
  text-decoration: none;
}

body:not(.admin-body).pages.contacts .contact-links-grid .contact-link-card + .contact-link-card {
  border-left: 1px solid var(--color-border);
}

body:not(.admin-body).pages.contacts .contact-links-grid .contact-link-card:first-child { padding-left: 0; }
body:not(.admin-body).pages.contacts .contact-links-grid .contact-link-card:last-child { padding-right: 0; }

body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body).pages.contacts .contact-link-card .icon-badge {
  width: 32px;
  height: 32px;
  flex: 0 0 32px;
  border-radius: var(--radius-control);
}

/* Заголовок стоит рядом со значком, а не под ним: строка значков занимала
   отдельный ряд и блок был выше на 44px (просьба 31.08.2026). На телефоне
   у карточки своя раскладка ниже — там значок и так в одной строке */
@media (min-width: 768px) {
  body:not(.admin-body).pages.contacts .contact-link-card {
    display: grid;
    grid-template-columns: 32px minmax(0, 1fr);
    align-items: center;
    column-gap: 12px;
  }

  body:not(.admin-body).pages.contacts .contact-link-card p,
  body:not(.admin-body).pages.contacts .contact-link-card .contact-link-more {
    grid-column: 2;
  }
}

body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body).pages.contacts .contact-link-card h3 {
  margin: 0;
  /* Табличный H3 17/22.1 (аудит 26.08, п. 7) */
  font-size: 17px;
  line-height: 1.3;
  color: #10233C;
}

body:not(.admin-body).pages.contacts .contact-link-card p {
  margin: 6px 0 0;
  font-size: 14px;
  line-height: 1.45;
  color: #5C6E84;
}

body:not(.admin-body).pages.contacts .contact-link-more {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  /* auto прижимает строку к низу колонки — ссылки в ряду на одной линии */
  margin-top: auto;
  padding-top: 12px;
  font-size: 15px;
  line-height: 1.4;
  font-weight: var(--fw-bold);
  color: #1870BD;
}

/* Цель нажатия 44px набирается невидимой областью: сама строка остаётся
   в ритме страницы, а не раздувает карточку */
body:not(.admin-body).pages.contacts .contact-link-card .contact-link-more::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: var(--tap-min, 44px);
}

body:not(.admin-body).pages.contacts .contact-link-more .contact-link-arrow {
  position: static;
  flex: 0 0 16px;
  margin: 0;
}

body:not(.admin-body).pages.contacts .contact-link-card:hover .contact-link-more-label,
body:not(.admin-body).pages.contacts .contact-link-card:focus-visible .contact-link-more-label {
  text-decoration: underline;
}

@media (max-width: 1023px) {
  body:not(.admin-body).pages.contacts .contact-links-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  body:not(.admin-body).pages.contacts .contact-links-grid .contact-link-card { padding: 16px 20px; }
  /* Сброс делителя тем же селектором, что и десктопный: иначе линия
     оставалась бы у первой карточки нового ряда */
  body:not(.admin-body).pages.contacts .contact-links-grid .contact-link-card + .contact-link-card { border-left: 0; }
  body:not(.admin-body).pages.contacts .contact-links-grid .contact-link-card:nth-child(even) {
    border-left: 1px solid var(--color-border);
    padding-right: 0;
  }
  body:not(.admin-body).pages.contacts .contact-links-grid .contact-link-card:nth-child(odd) { padding-left: 0; }
  body:not(.admin-body).pages.contacts .contact-links-grid .contact-link-card:nth-child(-n+2) { padding-top: 0; }
  body:not(.admin-body).pages.contacts .contact-links-grid .contact-link-card:nth-child(n+3) { border-top: 1px solid var(--color-border); }
}

/* Телефон: колонки разворачиваются в список строк — иконка, текст, стрелка */
@media (max-width: 767px) {
  body:not(.admin-body).pages.contacts .contact-links-card { padding: 18px 16px; }
  body:not(.admin-body).pages.contacts .contact-links-title { margin-bottom: 14px; font-size: 20px; }
  body:not(.admin-body).pages.contacts .contact-links-grid { grid-template-columns: minmax(0, 1fr); }
  body:not(.admin-body).pages.contacts .contact-links-grid .contact-link-card {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    column-gap: 12px;
    row-gap: 2px;
    min-height: 64px;
    padding: 12px 0;
  }
  body:not(.admin-body).pages.contacts .contact-links-grid .contact-link-card + .contact-link-card {
    border-left: 0;
    border-top: 1px solid var(--color-border);
  }
  body:not(.admin-body).pages.contacts .contact-links-grid .contact-link-card:nth-child(even) { border-left: 0; }
  body:not(.admin-body).pages.contacts .contact-link-card .icon-badge {
    grid-row: 1 / span 2;
    width: 36px;
    height: 36px;
  }
  body:not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body):not(.admin-body).pages.contacts .contact-link-card h3 {
    grid-column: 2;
    grid-row: 1;
    margin: 0;
    font-size: 15px;
  }
  body:not(.admin-body).pages.contacts .contact-link-card p {
    grid-column: 2;
    grid-row: 2;
    margin: 0;
    font-size: 13px;
    line-height: 1.4;
  }
  body:not(.admin-body).pages.contacts .contact-link-more {
    grid-column: 3;
    grid-row: 1 / span 2;
    margin: 0;
    padding: 0;
  }
  /* В узкой строке остаётся стрелка, подпись доступна скринридеру */
  body:not(.admin-body).pages.contacts .contact-link-more .contact-link-more-label {
    position: absolute;
    width: 1px;
    height: 1px;
    margin: -1px;
    padding: 0;
    border: 0;
    clip-path: inset(50%);
    overflow: hidden;
    white-space: nowrap;
  }
}
