/* Собрано tools/build-ui-bundle-1136.py из 7 источников участка gtyres-head-1137 в порядке каскада.
   Источники остаются в src/frontend и правятся отдельно; этот файл — производный, править его руками нельзя.
   Свежесть тема проверяет по filemtime: этот файл против своих источников, сам CSS не читается.
   Рядом head-1137.bundle.json — опись сборки с SHA входов, для человека. */
/* ===== footer-contacts.css ===== */
/* 416: контакты подвала. Плоско: без градиентов, теней и объёма; один размер значков и одна
   рамка для всех каналов. Файл подключается напрямую, поэтому косметика не требует пересборки
   общего пакета dist. */

/* ---------- 22.09: раскладка подвала темы (inc/footer-layout.php) ----------
   Верхний ряд: брендовая зона со знаком, рядом каналов и одной кнопкой «Связаться», а рядом два
   контактных блока — Россия и Япония, каждый на своей нейтральной плашке, с красными значками
   телефона, конверта и места. Ниже тонкая черта и четыре навигационные колонки той же карты и
   того же порядка, что у меню: значок, название, компактная стрелка в общем правом слоте.
   Внизу спокойная полоса с копирайтом, двумя правовыми ссылками и RU/EN.

   Действие в подвале одно — та самая кнопка; второй кнопки звонка или вопроса здесь нет.

   Правила ниже про виджеты block-29/32 оставлены: по ним рисуется запасной путь footer.php,
   если разметку темы почему-то не собрать. */
.site-footer .gt-footer {
    width: min(1200px, calc(100% - 48px));
    margin-inline: auto;
    padding: 40px 0 24px;
    color: #e8e8e6;
}
.site-footer .gt-footer__top {
    display: grid;
    grid-template-columns: minmax(200px, 280px) minmax(0, 1fr);
    align-items: start;
    gap: 32px 56px;
}
.site-footer .gt-footer__brand { display: grid; justify-items: start; gap: 18px; }
.site-footer .gt-footer__brand .gtyres-footer-social { justify-content: flex-start; }
.site-footer .gt-footer__contacts { display: grid; justify-items: start; gap: 16px; width: 100%; }

/* 22.09: единственное действие подвала — та же primary, что в шапке, и стоит она в брендовой
   зоне под рядом каналов. Своего оформления здесь у неё нет: задана только цель нажатия и
   кольцо фокуса, читаемое на графите (сплошной --gt-red дал бы 2.3 — заметка 655 ниже). */
.site-footer .gt-footer__reach { box-sizing: border-box; min-height: 44px; }
.site-footer .gt-footer__reach:focus-visible { outline: 2px solid var(--gt-red-soft, #f26d65); outline-offset: 5px; }

/* Офис — читаемая нейтральная плашка: на тёмном два адреса иначе читаются одним столбцом
   текста, и российский от японского отличается только словом. Ни тени, ни градиента: рамка и
   фон те же полупрозрачные белые, что у кружков каналов рядом. */
.site-footer .gt-offices--footer { width: 100%; gap: 14px 20px; }
.site-footer .gt-offices--footer .gt-office {
    box-sizing: border-box; /* у темы нет общего border-box: иначе плашка вылезет за колонку */
    gap: 4px;
    width: 100%;
    padding: 13px 15px;
    border: 1px solid #ffffff14;
    border-radius: 10px;
    background: #ffffff08;
}
.site-footer .gt-offices--footer .gt-office__place { margin-bottom: 2px; color: #8a8a84; }
/* Строка контакта: красный значок 20 px в своём столбце и явный интервал до текста. Столбец, а
   не отступ, нужен длинному адресу: вторая строка встаёт под первой, а не под значок. */
.site-footer .gt-offices--footer .gt-office > :is(a, span):not(.gt-office__place) {
    display: grid;
    grid-template-columns: var(--icon-sm, 20px) minmax(0, 1fr);
    align-items: start;
    gap: 10px;
    width: 100%;
}
/* Цвет пиктограмм — тот же сплошной --gt-red, что у primary-кнопок: решение владельца 1134
   («бледные розовые иконки и кнопки — всё одного цвета»), записанное ниже для прежней
   виджетной разметки. Мягкий --gt-red-soft здесь был бы возвратом к отклонённому варианту. */
.site-footer .gt-offices--footer .gt-office .gt-footer-icon {
    width: var(--icon-sm, 20px);
    height: var(--icon-sm, 20px);
    margin-top: 1px;
    color: var(--gt-red, #dc0100);
}
.site-footer .gt-offices--footer .gt-office__address {
    font-size: 12px;
    line-height: 1.6;
    color: #9a9a95;
}
.site-footer .gt-offices--footer a:hover,
.site-footer .gt-offices--footer a:focus-visible {
    color: #fff;
    text-decoration-color: var(--gt-red, #dc0100);
}
.site-footer .gt-offices--footer a:focus-visible { outline: 2px solid var(--gt-red-soft, #f26d65); outline-offset: 5px; }

.site-footer .gt-footer__nav {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 24px 36px;
    margin-top: 30px;
    padding-top: 24px;
    border-top: 1px solid #333330;
}
.site-footer .gt-footer__group { min-width: 0; }
.site-footer .gt-footer__group > summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    font: 600 12px/1.5 Montserrat, Arial, sans-serif;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: #f4f4f4;
    list-style: none;
}
.site-footer .gt-footer__group > summary::-webkit-details-marker { display: none; }
.site-footer .gt-footer__group > summary::marker { content: ""; }
/* Знак раскрытия — существующий caret-down того же набора, что у «Все разделы» в шапке. На
   ширинах, где группы всегда открыты, он не нужен и не печатается. */
.site-footer .gt-footer__group-mark {
    width: 16px;
    height: 16px;
    flex: 0 0 16px;
    color: #8f8f8a;
    transition: transform var(--dur-fast, 160ms) ease;
}
.site-footer .gt-footer__group > ul {
    display: grid;
    gap: 2px;
    margin: 10px 0 0;
    padding: 0;
    list-style: none;
}
.site-footer .gt-footer__group li { margin: 0; }
/* Ссылка повторяет строку принятого меню: значок, название, компактная стрелка в общем правом
   слоте. Слот задан третьей колонкой сетки, поэтому стрелки всех строк стоят по одной
   вертикали независимо от длины подписи. Отрицательный margin возвращает подложку к краю
   колонки: наведение подсвечивает всю строку, а текст при этом не сдвигается. */
.site-footer .gt-footer__group a {
    box-sizing: border-box; /* min-height считается вместе с отступами — высота подвала прежняя */
    display: grid;
    grid-template-columns: var(--icon-sm, 20px) minmax(0, 1fr) 12px;
    /* start, а не center: у длинной подписи в две строки значок и стрелка остаются на первой
       строке — так же, как в раскрытом меню. */
    align-items: start;
    gap: 10px;
    min-height: 30px;
    padding: 4px 10px;
    margin-inline: -10px;
    border-radius: 8px;
    font-size: 13px;
    line-height: 1.45;
    color: #c4c4bf;
    text-decoration: none;
    transition: background-color var(--dur-fast, 160ms), color var(--dur-fast, 160ms);
}
.site-footer .gt-footer__group a > .gtyres-icon,
.site-footer .gt-footer__group a > .gtyres-nav-flag {
    --gt-nav-iconbox: var(--icon-sm, 20px);
    width: var(--icon-sm, 20px);
    height: var(--icon-sm, 20px);
    color: #8f8f8a;
    transition: color var(--dur-fast, 160ms);
}
.site-footer .gt-footer__arrow {
    justify-self: end;
    margin-top: 4px;
    font-size: 11px;
    line-height: 1;
    color: #8f8f8a;
    transition: color var(--dur-fast, 160ms), transform var(--dur-fast, 160ms) var(--ease-out, ease);
}
/* Реагирует вся строка: подложка светлеет, значок слева и стрелка справа становятся красными
   тем же сплошным --gt-red («один красный», решение владельца 1131/1134). Одной смены цвета
   подписи мало, поэтому подложка — обязательная часть отклика. */
.site-footer .gt-footer__group a:is(:hover, :focus-visible) { background: #ffffff14; color: #fff; }
.site-footer .gt-footer__group a:is(:hover, :focus-visible) > .gtyres-icon { color: var(--gt-red, #dc0100); }
.site-footer .gt-footer__group a:is(:hover, :focus-visible) .gt-footer__arrow {
    color: var(--gt-red, #dc0100);
    transform: translate(2px, -2px);
}
/* Кольцо фокуса в подвале задаёт один общий слой — #colophon a:focus-visible в
   editorial-refine.css (2px var(--gt-red-soft), отступ 5px). Здесь оно повторено тем же
   значением, а не своим: иначе на поверхности без того слоя кольцо оказалось бы другим, а на
   поверхности с ним моё правило молча проигрывало бы по специфичности идентификатора. */
.site-footer .gt-footer__group a:focus-visible { outline: 2px solid var(--gt-red-soft, #f26d65); outline-offset: 5px; }
/* Смещение стрелки — единственное движение в подвале, и оно снимается вместе с остальными. */
@media (prefers-reduced-motion: reduce) {
    .site-footer .gt-footer__group a,
    .site-footer .gt-footer__group a > .gtyres-icon,
    .site-footer .gt-footer__arrow,
    .site-footer .gt-footer__group-mark { transition: none; }
    .site-footer .gt-footer__group a:is(:hover, :focus-visible) .gt-footer__arrow { transform: none; }
}

.site-footer .gt-footer__bottom {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px 28px;
    margin-top: 32px;
    padding-top: 20px;
    border-top: 1px solid #2a2a27;
    font-size: 12px;
    line-height: 1.6;
    color: #8f8f8a;
}
.site-footer .gt-footer__copy { margin: 0; }
.site-footer .gt-footer__copy strong { color: #c4c4bf; font-weight: 600; }
.site-footer .gt-footer__legal {
    display: flex;
    flex-wrap: wrap;
    gap: 6px 22px;
    margin: 0;
    padding: 0;
    list-style: none;
}
.site-footer .gt-footer__legal li { margin: 0; }
.site-footer .gt-footer__legal a { color: inherit; text-decoration: none; border-bottom: 1px solid #ffffff26; }
.site-footer .gt-footer__legal a:hover { color: #e8e8e6; border-bottom-color: #ffffff59; }
.site-footer .gt-footer__bottom .gtyres-language-switcher { margin-left: auto; }

/* От 601 px группы читаются целиком независимо от атрибута open: складывает их на телефоне
   обработчик из marketing-набора, а он подключён не на каждой поверхности (аукционные
   страницы получают frontend.bundle.js). Без этого правила там, где обработчик не пришёл или
   пришёл с чужим состоянием, десктоп показал бы четыре свёрнутых заголовка. */
@media (min-width: 601px) {
    .site-footer .gt-footer__group > summary { cursor: default; pointer-events: none; }
    .site-footer .gt-footer__group:not([open]) > ul { display: grid; }
    .site-footer .gt-footer__group::details-content { content-visibility: visible; display: block; }
    .site-footer .gt-footer__group-mark { display: none; }
}

@media (max-width: 1050px) {
    .site-footer .gt-footer { width: calc(100% - 48px); }
    .site-footer .gt-footer__top { grid-template-columns: 1fr; gap: 26px; }
    .site-footer .gt-footer__nav { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px 32px; }
    .site-footer .gt-offices--footer { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 600px) {
    .site-footer .gt-footer { width: calc(100% - 40px); padding: 30px 0 20px; }
    /* Офисы читаемым потоком: два узких столбца длинных адресов на телефоне не помещаются. */
    .site-footer .gt-offices--footer { grid-template-columns: 1fr; gap: 12px; }
    .site-footer .gt-footer__nav { grid-template-columns: 1fr; gap: 0; margin-top: 26px; padding-top: 20px; }
    /* Группы складываются, как в меню: заголовок — полная строка-цель 44 px со знаком
       раскрытия. Верхнюю черту этих же групп рисует общий слой подвала (home-refinement.css),
       поэтому здесь остаётся только нижняя: иначе между группами шла бы двойная линия. */
    .site-footer .gt-footer__group { border-top: 0; border-bottom: 1px solid #2a2a27; }
    .site-footer .gt-footer__group > summary { min-height: 44px; padding: 4px 0; cursor: pointer; }
    .site-footer .gt-footer__group[open] > summary .gt-footer__group-mark { transform: rotate(180deg); }
    .site-footer .gt-footer__group > ul { margin: 2px 0 14px; gap: 2px; }
    .site-footer .gt-footer__group a { min-height: 44px; }
    /* Последняя группа черту не рисует: свою уже ведёт нижняя полоса, и две линии подряд
       разделяли бы пустое место, а не блоки. */
    .site-footer .gt-footer__group:last-of-type { border-bottom: 0; }
    .site-footer .gt-footer__bottom { margin-top: 18px; gap: 12px; }
    .site-footer .gt-footer__bottom .gtyres-language-switcher { margin-left: 0; }
}

/* Primary block принадлежит теме: mutable block-29 больше не задаёт его геометрию и эффекты. */
.site-footer .gtyres-footer-primary {
    display: grid;
    grid-template-columns: minmax(160px, 1fr) auto minmax(220px, 1fr);
    align-items: center;
    gap: 24px;
    width: min(1200px, calc(100% - 48px));
    margin: 0 auto;
    padding: 28px 0;
}
.site-footer .gtyres-footer-primary__brand {
    display: inline-flex;
    align-items: center;
    width: fit-content;
    color: #f4f4f4;
    text-decoration: none;
}
.site-footer .gtyres-footer-primary__brand img { display: block; width: min(180px, 100%); height: auto; }

/* 655: знак GTYRES(株) стоит в одной колонке с рядом каналов и кнопкой звонка, но в отличие от
   них был прижат к левому краю: figure занимает всю ширину колонки, а картинка внутри
   выравнивалась по началу строки. Центрируем только саму картинку внутри её figure, остальные
   колонки подвала и сам подвал не трогаем.
   Оптический центр совпадает с геометрическим: непрозрачная часть файла знака занимает
   31…2419 пикселя из 2443, то есть поля слева и справа различаются на 7 пикселей исходника —
   меньше половины пикселя в выводимых 180 px. Отдельный сдвиг «на глаз» не нужен. */
.site-footer .widget figure.wp-block-image { text-align: center; }
.site-footer .widget figure.wp-block-image > img { margin-inline: auto; }
.site-footer .gtyres-footer-primary__wordmark { font: 700 24px/1 Montserrat, Arial, sans-serif; letter-spacing: 0.04em; }

/* Пять каналов должны уместиться в один ряд рядом с логотипом: 5 × 44 + 4 × 10 = 260 пикселей. */
.site-footer .gtyres-footer-social {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    justify-content: center;
    gap: 10px;
    width: max-content;
    max-width: 100%;
    margin: 0;
    padding: 0;
    list-style: none;
}
.site-footer .gtyres-footer-social li { margin: 0; }
.site-footer .gtyres-footer-social__link {
    display: grid;
    place-items: center;
    width: var(--social-size);
    height: var(--social-size);
    border: 1px solid #474747;
    border-radius: 50%;
    background: transparent;
    color: #f4f4f4;
    text-decoration: none;
    transition: border-color 180ms, background-color 180ms;
}
.site-footer .gtyres-footer-social__link:hover {
    border-color: var(--gt-red-soft);
    background: #ffffff0c;
}
.site-footer .gtyres-footer-social__link:focus-visible {
    outline: 2px solid #ff817a;
    outline-offset: 3px;
}
.site-footer .gtyres-footer-social .gt-footer-icon {
    display: block;
    width: var(--social-icon);
    height: var(--social-icon);
    color: inherit;
}
/* 425: у канала без брендового знака в кружке стоит его имя буквами — так MAX узнаётся. */
.site-footer .gtyres-footer-social__mark {
    font: 700 11px/1 Montserrat, Arial, sans-serif;
    letter-spacing: 0.04em;
    color: inherit;
    text-transform: uppercase;
}
/* Название канала нужно чтению с экрана и поиску, но не занимает место в ряду значков. */
.site-footer .gtyres-footer-social__name {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip-path: inset(50%);
    white-space: nowrap;
    border: 0;
}

/* 655: кнопка выглядела отдельной ярко-красной плашкой: свои 3px радиуса, свой оттенок красного
   в hover, 15px прописными и другая высота. Приводим её к уже принятому языку кнопок сайта —
   тем же значениям, что даёт .gtyres-marketing .gtyres-button.gtyres-button-primary: токен
   --gt-red и --gt-red-deep в hover, радиус 8px, прозрачная рамка 1px, минимальная высота 52px,
   отступы 14/22, 14px без прописных и без разрядки. Новый компонент не вводится: это та же
   ссылка tel: с тем же текстом и номером.
   Кольцо фокуса остаётся светло-красным: на подвале #191919 у него контраст 7.26, тогда как у
   --gt-red было бы 2.3 — забирать видимость фокуса ради совпадения цвета нельзя.

   764: владелец потребовал убрать оставшееся отличие от верхней кнопки. Замерено на стенде:
   настоящая .gtyres-button-primary даёт радиус 8px, высоту 52px и одну строку, а эта кнопка —
   радиус 2px, высоту 71.59px и две строки, потому что подпись с номером не помещаются в колонку
   подвала шириной 260px и переносятся по flex-wrap.
   Строка про шкалу радиусов в DESIGN.md описывает базовое правило .gtyres-button из
   marketing.css (2px); видимую кнопку сайта задаёт более позднее правило
   .gtyres-marketing .gtyres-button в final-polish.css — 8px, 52px, отступы 14/22. Совпадение
   именно с ним и есть требование владельца.
   Уходит footer-only геометрия, дававшая две строки: перенос flex-wrap, зазор между строками и
   растяжение на всю ширину колонки. Кнопка становится шириной по содержимому и центрируется
   автополями, поэтому её центр остаётся прежним центром колонки. Логотип, ряд каналов и
   контактная колонка не трогаются. */
.site-footer .gtyres-footer-call {
    display: flex;
    align-items: center;
    justify-content: center;
    column-gap: 10px;
    box-sizing: border-box;
    width: fit-content;
    max-width: 100%;
    min-height: 52px;
    margin-inline: auto;
    padding: 14px 22px;
    border: 1px solid transparent;
    border-radius: var(--radius-sm);
    background: var(--gt-red, var(--gt-red));
    color: #fff;
    font: 600 14px/1.4 Montserrat, Arial, sans-serif;
    letter-spacing: normal;
    text-align: center;
    text-decoration: none;
    text-transform: none;
    transition: background-color 180ms, border-color 180ms;
}
.site-footer .gtyres-footer-call:hover { background: var(--gt-red-deep, var(--gt-red-deep)); }
.site-footer .gtyres-footer-call:focus-visible {
    outline: 2px solid #ff817a;
    outline-offset: 3px;
}
.site-footer .gtyres-footer-call .gt-footer-icon {
    display: block;
    width: 20px;
    height: 20px;
    color: #fff;
    flex: 0 0 20px;
}
.site-footer :not(.gtyres-footer-primary) > .gtyres-footer-call { grid-column: 1 / -1; }

/* Подпись не рвётся внутри себя. */
.site-footer .gtyres-footer-call__text { white-space: nowrap; }
/* На узком экране подвал раскладывается сеткой, и ряд значков занимает собственную строку. */
@media (max-width: 900px) {
    .site-footer .gtyres-footer-primary {
        grid-template-columns: 1fr;
        justify-items: center;
        gap: 18px;
        width: calc(100% - 40px);
    }
    .site-footer .gtyres-footer-social {
        flex-wrap: wrap;
        gap: 8px;
    }
    /* 655: прежнее уменьшение кегля и отступов кнопки на узком экране снято — геометрия кнопки
       одна на всех ширинах, как у остальных кнопок сайта.
       764: переноса на вторую строку больше нет ни на одной ширине: номер скрыт от глаза, а
       подпись не рвётся. Своего кегля и своих отступов у кнопки подвала по-прежнему нет. */
}

@media (prefers-reduced-motion: reduce) {
    .site-footer .gtyres-footer-social__link,
    .site-footer .gtyres-footer-call { transition: none; }
}

/* Плашка согласия зафиксирована у нижнего края окна, и на настоящем конце документа её
   полоса ложится на нижние пиксели служебной строки подвала: замерено 35.38px при 800 и
   9.48px при 1600, под плашкой оказываются кнопки языка RU/EN 44x44. Ниже 768px правило не
   нужно — там запас уже даёт клиренс мобильного дока, и перекрытия нет ни на одной из
   проверенных ширин 320-767.
   Место получает только эта строка и только пока выбор ещё не сделан: класс cookies-not-set
   плагин снимает сразу после «принять», без перезагрузки, вместе с ним исчезает и запас.
   Общий отступ подвала не возвращается: 20px — собственный padding строки из
   editorial-refine.css, к нему добавляется измеренный запас и безопасная зона устройства. */
@media (min-width: 768px) {
    body.cookies-not-set .site-footer .gt-footer-credit,
    body.cookies-not-set .site-footer .gt-footer__bottom {
        padding-bottom: calc(20px + 38px + env(safe-area-inset-bottom, 0px));
    }
}

/* 769: до 1024px старый home-refinement оставлял brand и social в двух колонках
   (на 390px центры 63 и 244 при центре footer 195). На tablet он также прижимал social
   на 37–97px в сторону. Это один primary stack: logo, channels и CTA получают общий
   геометрический центр без индивидуальных оптических сдвигов. Селекторы намеренно совпадают
   по области с legacy-правилом, а margin изображения требует !important только потому, что
   legacy объявляет свой margin:0 с !important-шириной в том же каскаде. */
@media (max-width: 1024px) {
    .gtyres-marketing #secondary #block-29 .kt-inside-inner-col {
        display: grid;
        grid-template-columns: minmax(0, 1fr);
        justify-items: center;
    }
    .gtyres-marketing #secondary #block-29 > div > div > figure {
        width: fit-content;
        justify-self: center;
    }
    .gtyres-marketing #secondary #block-29 > div > div > figure img {
        margin-inline: auto !important;
    }
    .gtyres-marketing #secondary #block-29 .gtyres-footer-social,
    .gtyres-marketing #secondary #block-29 .gtyres-footer-call {
        justify-self: center;
    }
    .gtyres-marketing #secondary #block-29 .gtyres-footer-call {
        grid-column: 1;
    }
}

/* С 1000px плашка умещается в одну строку (74px вместо 100px), и запас нужен меньший. */
@media (min-width: 1000px) {
    body.cookies-not-set .site-footer .gt-footer-credit,
    body.cookies-not-set .site-footer .gt-footer__bottom {
        padding-bottom: calc(20px + 12px + env(safe-area-inset-bottom, 0px));
    }
}

/* Primary contact block уже содержит принятые inline fill SVG. Поздний слой снимает
   legacy mask из interface-details, иначе он снова рисует outline-asset поверх иконки. */
.gtyres-marketing .site-footer #block-32 .image-text-block .image-container {
    background: transparent;
    -webkit-mask: none;
    mask: none;
}

/* 1134 (владелец, 8089: «бледные розовые иконки и кнопки — всё одного цвета, как „Позвоните мне“»): пиктограммы контактов
   в колонках подвала (геометка, телефон, конверт) — тот же --gt-red, что у primary-кнопок шапки, подвала и блока «Остались вопросы?».
   Было: var(--icon-on-dark) = --gt-red-soft #F26D65 (owner-iteration.css, в бандле). Специфичность на ступень выше бандла:
   файл печатается раньше dist. Значки соцсетей (#f4f4f4) не трогаются. */
.site-footer .image-text-block .image-container .gt-footer-icon { color: var(--gt-red, #dc0100); }

/* ---------- 21.09: оба офиса в общих блоках связи ----------
   Решение владельца: в финальном CTA, меню, модалках заказа и формах стран показываются обе
   пары «Россия / Япония», а не один иркутский номер. Разметку печатает gtyres_offices_html()
   из inc/footer-contacts.php — одна и та же на всех поверхностях, различается модификатором.

   Два компактных блока рядом на desktop и один под другим на телефоне: ниже 560 px пара
   «+81 80 9016 5998» и «info@gtyres.co.jp» в половине ширины уже переносилась.
   Цвет не задаётся жёстко: список наследует цвет поверхности, на которой стоит. */
.gt-offices {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px 20px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.gt-office {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 1px;
    min-width: 0;
}

/* Подпись офиса отличает номер России от номера Японии — это смысловой текст, а не
   украшение: 12 px и #6a6a6a (4.9:1 на #f4f4f4 закрывающего блока, 5.4:1 на белом меню).
   Тёмные поверхности — подвал и форма стран — оставляют прежний светлый #8a8a84 своими
   правилами: на плашке подвала это 4.7:1, а #6a6a6a дал бы там около 3:1. */
.gt-office__place {
    font-size: 12px;
    font-weight: 600;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: #6a6a6a;
}

.gt-offices a {
    display: inline;
    min-height: 0;
    padding: 0;
    border: 0;
    background: none;
    font-size: 14px;
    line-height: 1.5;
    font-weight: 500;
    color: inherit;
    text-decoration: none;
    overflow-wrap: anywhere;
}

.gt-offices a:hover,
.gt-offices a:focus-visible {
    color: var(--gt-red, #dc0100);
    text-decoration: underline;
    text-underline-offset: 3px;
}

.gt-offices a:focus-visible {
    outline: 2px solid var(--gt-red, #dc0100);
    outline-offset: 2px;
}

@media (max-width: 559px) {
    .gt-offices { grid-template-columns: 1fr; gap: 12px; }
}

/* Финальный CTA: список встаёт между абзацем и парой кнопок. */
.gt-lead-closing .gt-offices--closing { margin: 14px 0 20px; max-width: 420px; }

/* Мега-меню: строка во всю ширину панели под четырьмя колонками, отделённая той же
   чертой, что у заголовков колонок. Правила панели задают ссылкам вид пункта меню
   (flex, min-height, padding) — здесь они сняты селектором на ступень выше. */
.gt-nav-dropdown--all .gt-nav-dropdown__panel .gt-offices--menu {
    grid-column: 1 / -1;
    margin-top: 4px;
    padding-top: 16px;
    border-top: 1px solid #ececea;
}

.gt-nav-dropdown--all .gt-nav-dropdown__panel .gt-offices--menu a {
    display: inline;
    min-height: 0;
    margin: 0;
    padding: 0;
    font-size: 13px;
}

.gt-nav-dropdown--all .gt-nav-dropdown__panel .gt-offices--menu a:hover {
    background: none;
}

/* Мобильное меню: правило .gtyres-menu-contact a красит любую ссылку в красную кнопку —
   для контактов это не кнопка, а текст. */
.gtyres-menu-contact .gt-offices--menu {
    margin: 16px 0 0;
    padding-top: 14px;
    border-top: 1px solid var(--line, #e5e5e2);
}

.gtyres-menu-contact .gt-offices--menu a {
    display: inline;
    justify-content: flex-start;
    min-height: 0;
    padding: 0;
    border-radius: 0;
    background: none;
    color: var(--gt-black, #111);
}

/* Модалка заказа и <dialog> заявок: список стоит под способами связи. */
.main-form .gt-offices--modal,
.gt-lead-dialog .gt-offices--dialog {
    margin: 14px 0 0;
    padding-top: 14px;
    border-top: 1px solid var(--line, #e5e5e2);
}

/* В <dialog> список замыкает карточку, и снизу его держит отступ самой карточки. В
   модалке заявки он, наоборот, стоит над полями: замер на 1440 давал низ списка 325 px
   и верх формы те же 325 px, то есть подпись «Как вас зовут» вставала вплотную к адресу
   почты. Шаг между смысловыми группами формы — 24 px, на телефоне 20 px. */
.main-form .gt-offices--modal { margin-bottom: 24px; }

@media (max-width: 767px) {
    .main-form .gt-offices--modal { margin-bottom: 20px; }
}

/* Формы стран и услуг: список занимает место прежнего .form-info-contact-phone. */
.gt-apply-contacts .gt-offices--form { margin: 0 0 12px; }
/* Форма стран стоит на тёмной сцене; светлая у неё только .contact-page-form. */
.application-form:not(.contact-page-form) .gt-offices--form .gt-office__place { color: #8a8a84; }

/* Карточка hero на /kontakty/: здесь пара контактов — главное содержимое карточки, а не
   сноска, поэтому только для --hero поднимаем кегль. Карточка выстроена flex с
   align-items:flex-start, из-за чего список ужимался до ширины содержимого (замер root:
   270 px внутри карточки) — растягиваем его на доступную ширину.

   Телефон не должен рваться посередине номера: общий .gt-offices a разрешает перенос в
   любом месте (там это спасает длинную почту в узкой колонке), здесь перенос запрещён
   совсем. Почта право на перенос сохраняет. Ничего из этого не выходит за --hero, так что
   общие формы, меню и подвал не меняются. */
.gtyres-contacts-intro aside .gt-offices--hero {
    align-self: stretch;
    width: 100%;
    gap: 16px 20px;
}

.gt-offices--hero .gt-office { gap: 3px; }
.gt-offices--hero .gt-office__place { font-size: 12px; }

.gt-offices--hero .gt-office__tel {
    font-size: 18px;
    font-weight: 600;
    line-height: 1.25;
    overflow-wrap: normal;
    word-break: keep-all;
    white-space: nowrap;
}

.gt-offices--hero .gt-office__mail { font-size: 14px; }

@media (max-width: 559px) {
    /* Одна колонка во всю ширину карточки — номеру хватает места на 20 px. */
    .gt-offices--hero .gt-office__tel { font-size: 20px; }
    .gt-offices--hero .gt-office__mail { font-size: 15px; }
}

/* ===== media-credit.css ===== */
/* 416: строка обязательного кредита под материалом. Она остаётся вместо служебной пометки об
   источниках, поэтому выглядит так же тихо, как прежняя подпись: мелкий серый текст в конце. */

.gt-media-credit {
    margin-top: 28px;
    font-size: 12px;
    line-height: 1.65;
    color: #777;
}
.gt-media-credit a {
    color: inherit;
    text-decoration: underline;
    text-underline-offset: 3px;
}
.gt-media-credit a:focus-visible {
    outline: 2px solid #ff817a;
    outline-offset: 2px;
}

/* ===== journal-tags.css ===== */
/* 1076: чипы тегов журнала — карточка ленты, шапка статьи и публикации Telegram.
   Отдаётся напрямую из src/frontend (как wheels-offer.css), без пересборки dist.
   Цвета — только токены темы (design-system/colors.css); новых hex нет. */
.gt-journal-tags { display: flex; flex-wrap: wrap; align-content: flex-start; gap: 6px 8px; margin: 10px 0 0; padding: 0; list-style: none; }
.gt-journal-tags li { display: inline-flex; align-items: stretch; min-height: 26px; border: 1px solid var(--gt-cloud); border-radius: 999px; font-size: 11px; line-height: 1.4; color: var(--gt-iron); background: var(--gt-white); }
.gt-journal-tags li[data-dimension="model"], .gt-journal-tags li[data-dimension="brand"],
.gt-journal-tags li[data-dimension="generation"] { border-color: var(--gt-steel); color: var(--gt-black); }
.gt-journal-tags a { display: inline-flex; align-items: center; padding: 3px 10px; color: inherit; text-decoration: none; }
.gt-journal-tags a[rel="tag"]:hover, .gt-journal-tags a[rel="tag"]:focus-visible { color: var(--gt-red-dark); }
.gt-journal-tags .gt-journal-tags__more { padding: 3px 9px 3px 7px; border-left: 1px solid var(--gt-cloud); color: var(--gt-red); }
.gt-journal-tags .gt-journal-tags__more:hover, .gt-journal-tags .gt-journal-tags__more:focus-visible { background: var(--gt-paper); color: var(--gt-red-deep); }
.gt-journal-tags a:focus-visible { outline: 2px solid var(--gt-red-hot); outline-offset: 1px; border-radius: 999px; }
.gt-journal-card .gt-journal-tags { margin: 8px 0 12px; }
/* Карточка сетки ленты — subgrid на 5 общих строк (visual, meta, h3, p, read); шестой ребёнок иначе ложится в последнюю
   строку поверх «Читать материал». Строк становится 6 у всех карточек сетки: без тегов строка пуста, кнопки на одной линии. */
@supports (grid-template-rows: subgrid) {
  .gt-journal-grid > .gt-journal-card, .gt-journal-home__articles > .gt-journal-card { grid-row: span 6; }
  .gt-journal-grid > .gt-journal-card > .gt-journal-card__read, .gt-journal-home__articles > .gt-journal-card > .gt-journal-card__read { grid-row: 6; }
  /* Общая строка чипов высока по самой длинной карточке ряда; свои чипы не растягиваются на неё. */
  .gt-journal-grid > .gt-journal-card > .gt-journal-tags, .gt-journal-home__articles > .gt-journal-card > .gt-journal-tags { align-self: start; }
}
/* Компактный тизер ленты прячет и анонс; чипы там тоже не печатаются. */
.gt-journal-card--compact .gt-journal-tags { display: none; }
.gt-journal-card--short .gt-journal-tags { gap: 4px 6px; }
.gt-journal-card--short .gt-journal-tags li { font-size: 10px; min-height: 22px; }
/* Строка «По теме» под материалом: те же связи, но обычными ссылками через разделитель,
   а не облаком пилюль в шапке. Пилюльные свойства здесь снимаются явно — список
   переиспользует ту же разметку, что и чипы. */
.gt-journal-topics { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 14px; margin: 34px 0 0; padding: 18px 0 0; border-top: 1px solid var(--gt-cloud); }
.gt-journal-topics__label { font-size: 12px; font-weight: 600; letter-spacing: .08em; color: var(--gt-iron); }
.gt-journal-topics__list { display: flex; flex-wrap: wrap; align-items: baseline; margin: 0; padding: 0; list-style: none; }
.gt-journal-topics__list li { display: inline-flex; align-items: baseline; min-height: 0; border: 0; border-radius: 0; background: none; font-size: 14px; line-height: 1.5; color: var(--gt-black); }
/* Разделитель ставится перед элементом, а не после: у последнего его тогда не бывает. */
.gt-journal-topics__list li + li::before { content: "·"; margin: 0 10px; color: var(--gt-steel); }
.gt-journal-topics__list a { padding: 6px 0; color: inherit; text-decoration: none; border-bottom: 1px solid transparent; }
.gt-journal-topics__list a[rel="tag"]:hover, .gt-journal-topics__list a[rel="tag"]:focus-visible { color: var(--gt-red-dark); border-bottom-color: currentColor; }
.gt-journal-topics__list .gt-journal-tags__more { margin-left: 6px; padding: 6px 0; border-left: 0; color: var(--gt-red); }
.gt-journal-topics__list a:focus-visible { outline: 2px solid var(--gt-red-hot); outline-offset: 2px; border-radius: 2px; }
.article-header .gt-journal-tags { margin: 14px 0 0; }
.article-header .gt-journal-tags li { font-size: 12px; min-height: 28px; }
.gt-journal-tag-active { display: inline-flex; align-items: center; gap: 8px; margin-left: 10px; padding: 2px 10px; white-space: nowrap; border: 1px solid var(--gt-steel); border-radius: 999px; font-size: 12px; color: var(--gt-black); background: var(--gt-white); }
@media (max-width: 700px) {
  /* Цель касания не ниже 28 px при зазоре 6 px; шрифт не мельче 11 px. */
  .gt-journal-tags { gap: 6px 6px; }
  .gt-journal-tags li { font-size: 11px; min-height: 28px; }
  .article-header .gt-journal-tags li { font-size: 12px; min-height: 30px; }
  .gt-journal-tag-active { margin: 6px 0 0; }
  /* На телефоне ссылка «По теме» получает цель касания выше: 10 px сверху и снизу
     при строке 1,5 × 14 px дают 41 px, а не 27 px, как при настольном отступе. */
  .gt-journal-topics { margin-top: 28px; gap: 4px 12px; }
  .gt-journal-topics__list a,
  .gt-journal-topics__list .gt-journal-tags__more { padding: 10px 0; }
}
@media print { .gt-journal-tags, .gt-journal-topics { display: none; } }

/* ===== layout-c2.css ===== */
/* 1082 (этап C-2 аудита 1072): вёрстка блоков без цвета и кнопок — /dostavka-v-regiony/ нижняя половина, /kases/ сетка и
   узор героя, герой /avtomobili-iz-yaponii/. Отдаётся напрямую из src/frontend (inc/layout-c2.php), dist не пересобирается.
   Цвета — только токены design-system/colors.css; стили кнопок и цвет ссылок не трогаются (1078). */

/* ---------- /dostavka-v-regiony/ (page-id-1382): «Как согласовать маршрут и получение» — схема маршрута + таблица терминов ---------- */
.delivery-route-map { margin: 8px 0 40px; padding: 28px 0 8px; border-top: 1px solid var(--gt-cloud); }
.delivery-route-map figcaption { margin: 0 0 20px; font: 600 12px/1.5 Montserrat, Arial, sans-serif; letter-spacing: .08em; color: var(--gt-red-dark); }
.delivery-route-map ol { display: grid; grid-template-columns: minmax(150px, 1.1fr) minmax(170px, 1.2fr) minmax(0, 5fr); gap: 0 32px; margin: 0; padding: 0; list-style: none; }
/* Узлы: точка и линия — над подписью, чтобы линия не пересекала текст */
.delivery-route-map li { position: relative; margin: 0; padding: 26px 0 0; font-size: 14px; line-height: 1.5; color: var(--gt-iron); }
.delivery-route-map li::before { content: ''; position: absolute; left: 0; top: 0; width: 14px; height: 14px; border-radius: 50%; background: var(--gt-white); border: 3px solid var(--gt-red); box-sizing: border-box; }
.delivery-route-map li::after { content: ''; position: absolute; left: 18px; right: -28px; top: 6px; border-top: 2px solid var(--gt-cloud); }
.delivery-route-map li:last-child::after { display: none; }
.delivery-route-map strong { display: block; margin-bottom: 4px; font-size: 17px; line-height: 1.3; color: var(--gt-black); }
.delivery-route-map .delivery-route-map__leg { display: block; margin-top: 8px; font-size: 12px; color: var(--gt-steel); }
.delivery-route-map .delivery-route-map__cities { display: flex; flex-wrap: wrap; gap: 8px 10px; margin: 6px 0 0; padding: 0; list-style: none; }
.delivery-route-map .delivery-route-map__cities li { padding: 7px 12px; border: 1px solid var(--gt-cloud); border-radius: 2px; font-size: 13px; line-height: 1.4; color: var(--gt-black); }
.delivery-route-map .delivery-route-map__cities li::before, .delivery-route-map .delivery-route-map__cities li::after { display: none; }
.delivery-route-map .delivery-route-map__cities li span { color: var(--gt-steel); }
.delivery-route-map .delivery-route-map__cities li a { color: inherit; text-decoration: none; }
.delivery-route-map .delivery-route-map__cities li a:hover, .delivery-route-map .delivery-route-map__cities li a:focus-visible { color: var(--gt-red-dark); }

/* dl секции — таблица «термин | описание» на всю сетку страницы, как соседний список шагов (.delivery-how) */
.delivery-geography-notes dl { display: grid; grid-template-columns: minmax(220px, 3fr) minmax(0, 9fr); gap: 0 40px; margin: 0; }
.delivery-geography-notes dt { margin: 0; padding: 20px 0; border-top: 1px solid var(--gt-cloud); font-size: 16px; font-weight: 600; line-height: 1.45; color: var(--gt-black); }
.delivery-geography-notes dd { margin: 0; padding: 20px 0; border-top: 1px solid var(--gt-cloud); font-size: 15px; line-height: 1.7; color: var(--gt-iron); }
.delivery-geography-notes dd:last-of-type, .delivery-geography-notes dt:last-of-type { border-bottom: 1px solid var(--gt-cloud); }

/* ---------- /dostavka-v-regiony/: секции post_content (data-commercial-seo="delivery*") — текст в две колонки сетки, таблицы стилем темы ---------- */
.page-id-1382 .gtyres-landing .gtyres-landing-reading { max-width: none; margin-block: 64px; }
.page-id-1382 .gtyres-landing .gtyres-landing-reading:has(> p:nth-of-type(3)) { column-count: 2; column-gap: 56px; }
.page-id-1382 .gtyres-landing .gtyres-landing-reading > :is(h2, .delivery-table-scroll, table, nav) { column-span: all; }
.page-id-1382 .gtyres-landing .gtyres-landing-reading > p { max-width: none; break-inside: avoid; margin: 0 0 18px; font-size: 16px; line-height: 1.75; }
.page-id-1382 .gtyres-landing .gtyres-landing-reading > h2 { margin-bottom: 22px; }
.page-id-1382 .gtyres-landing .delivery-table-scroll { margin: 24px 0 8px; border: 0; }
.page-id-1382 .gtyres-landing table { width: 100%; border-collapse: collapse; margin: 0; font-size: 15px; line-height: 1.6; white-space: normal; }
.page-id-1382 .gtyres-landing caption { caption-side: top; padding: 0 0 12px; text-align: left; font: 600 12px/1.5 Montserrat, Arial, sans-serif; letter-spacing: .06em; color: var(--gt-iron); }
.page-id-1382 .gtyres-landing thead th { padding: 10px 24px 10px 0; text-align: left; font: 600 12px/1.5 Montserrat, Arial, sans-serif; letter-spacing: .04em; color: var(--gt-iron); border-bottom: 1px solid var(--gt-steel); }
.page-id-1382 .gtyres-landing tbody th { width: 26%; padding: 16px 24px 16px 0; text-align: left; vertical-align: top; font-size: 15px; font-weight: 600; color: var(--gt-black); border-bottom: 1px solid var(--gt-cloud); }
.page-id-1382 .gtyres-landing tbody td { padding: 16px 0; vertical-align: top; color: var(--gt-iron); border-bottom: 1px solid var(--gt-cloud); }
.page-id-1382 .gtyres-landing tbody td strong { color: var(--gt-black); font-weight: 600; }
.page-id-1382 .gtyres-landing tbody tr:last-child :is(th, td) { border-bottom: 0; }

/* ---------- /kases/ (page-id-3014): кадры карточек ---------- */
/* 1087 п.5: бокс карточки 4:3 → 16:10 и cover для всех кадров (полосы 0; кадры 16:9 теряют ≤ 11 % по бокам, 4:3 — 8 % сверху/снизу),
   см. BLOCKS.md — таблица полос contain для 4:3 / 3:2 / 16:10 / 16:9. Правило для общего case-studies.css — в _work/patches (dist — вход Z). */
.gtyres-case-card__photo { aspect-ratio: 16 / 10; }
.gtyres-case-card__photo img { object-fit: cover; object-position: 50% 50%; }
/* 1087 п.4: узор героя для всех header.gtyres-page-intro (было только 3014): тайл 110px = 8 колонок глифов; 36px резали третью колонку —
   ширина ровно в три колонки; ≤600 — ровно одна колонка вместо 5–6px осколка */
header.gtyres-page-intro::after { width: 41.25px; background-size: 110px auto; }

/* ---------- Главная: карточки услуг с текстом поверх фото (1087 п.2, аудит #22) ---------- */
/* Текст тёмный (--gt-black) на светлых кадрах: тёмный скрим из аудита ему противопоказан. Единообразно для всего ряда усилен
   светлый скрим темы: paper 0.94 до 34 %, 0.78 на 58 % (правый край абзаца — 66 % ширины), 0.4 на 78 %, прозрачный к 94 %. */
@media (min-width: 540.02px) { /* ≤540 у темы вертикальный скрим и кадр в нижней части карточки — не трогаем */
  .gtyres-service--illustrated::before { background: linear-gradient(90deg, color-mix(in srgb, var(--gt-paper) 94%, transparent) 0 34%,
    color-mix(in srgb, var(--gt-paper) 78%, transparent) 58%, color-mix(in srgb, var(--gt-paper) 40%, transparent) 78%, transparent 94%); }
}

/* ---------- /aukcziony/: «Из Японии — до вашего города в России» — текст слева, схема маршрута 1082 справа (1087 п.1, аудит #18) ---------- */
.gt-auction-guide__delivery { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 8px 56px; align-items: start; }
.gt-auction-guide__delivery > h2 { grid-column: 1 / -1; }
.gt-auction-guide__delivery .gt-auction-guide__delivery-copy > p { max-width: none; }
.gt-auction-guide__delivery .delivery-route-map { margin: 0; padding: 0; border-top: 0; }
.gt-auction-guide__delivery .delivery-route-map ol { grid-template-columns: 1fr 1fr; gap: 24px 32px; }
.gt-auction-guide__delivery .delivery-route-map ol > li:nth-child(3) { grid-column: 1 / -1; }
.gt-auction-guide__delivery .delivery-route-map ol > li:nth-child(2)::after, .gt-auction-guide__delivery .delivery-route-map ol > li:nth-child(3)::after { display: none; }

/* ---------- Каталог, модельная страница: семейство с одной версией — строка «фото | параметры в 2 колонки» (1087 п.6, аудит #17) ---------- */
/* Сетка 3 плитки; при одной версии две колонки пустовали. Разметка шаблона (общая с поиском) не меняется. */
.gtyres-catalog-page .gt-generation-grid:has(> .gt-generation-tile:only-child) { grid-template-columns: 1fr; }
.gtyres-catalog-page .gt-generation-grid > .gt-generation-tile:only-child { display: grid; grid-template-columns: minmax(260px, 38%) minmax(0, 1fr); gap: 0 32px; align-items: center; }
.gtyres-catalog-page .gt-generation-grid > .gt-generation-tile:only-child .gt-generation-tile-copy { grid-template-columns: 1fr 1fr; gap: 12px 24px; padding: 0; align-content: center; }
.gtyres-catalog-page .gt-generation-grid > .gt-generation-tile:only-child .gt-generation-tile-copy strong { grid-column: 1 / -1; justify-content: flex-start; gap: 10px; font-size: 20px; }
.gtyres-catalog-page .gt-generation-grid > .gt-generation-tile:only-child .gt-generation-tile-copy > span { font-size: 14px; }
.gtyres-catalog-page .gt-generation-grid > .gt-generation-tile:only-child .gt-generation-tile-copy small { font-size: 12px; }
.gtyres-catalog-page .gt-generation-grid > .gt-generation-tile:only-child .gt-generation-tile-copy .gt-generation-credit { grid-column: 1 / -1; }

/* ---------- Кейсы (single cases): подзаголовок вместо дубля H1 в первом блоке (пакет db/cases-c2.json) ---------- */
.gtyres-case-study__body .gtyres-case-study__subtitle { margin: 0 0 16px; font-size: 15px; line-height: 1.5; color: var(--gt-steel); }

/* ---------- /avtomobili-iz-yaponii/ (page-id-985): герой на фоне — воздух между текстом и фото, кнопка по содержимому ---------- */
.page-id-985 .gtyres-page-scene--background .gtyres-page-scene__copy { max-width: 780px; align-items: flex-start; padding-right: clamp(80px, 11vw, 168px);
  background: linear-gradient(90deg, var(--gt-paper) 0 84%, color-mix(in srgb, var(--gt-paper) 70%, transparent) 91%, transparent); }
.page-id-985 .gtyres-page-scene--background .country-hero-cta { width: auto; align-self: flex-start; }

@media (max-width: 1000px) {
  .delivery-route-map ol { grid-template-columns: 1fr 1fr; gap: 24px 32px; }
  .delivery-route-map ol > li:nth-child(3) { grid-column: 1 / -1; }
  .delivery-route-map ol > li:nth-child(3)::after, .delivery-route-map ol > li:nth-child(2)::after { display: none; }
  .delivery-geography-notes dl { grid-template-columns: minmax(180px, 1fr) minmax(0, 2fr); gap: 0 24px; }
  .page-id-985 .gtyres-page-scene--background .gtyres-page-scene__copy { max-width: 640px; padding-right: 72px; }
  .gt-auction-guide__delivery { grid-template-columns: 1fr; gap: 24px; }
  .gtyres-catalog-page .gt-generation-grid > .gt-generation-tile:only-child { grid-template-columns: minmax(220px, 44%) minmax(0, 1fr); gap: 0 24px; }
}
@media (max-width: 700px) {
  .delivery-route-map ol { grid-template-columns: 1fr; gap: 20px; }
  .delivery-route-map li { padding: 0 0 0 28px; }
  .delivery-route-map li::before { top: 4px; }
  .delivery-route-map li::after { left: 6px; right: auto; top: 20px; bottom: -22px; border-top: 0; border-left: 2px solid var(--gt-cloud); }
  .delivery-route-map ol > li:nth-child(2)::after { display: block; }
  .delivery-geography-notes dl { grid-template-columns: 1fr; gap: 0; }
  .delivery-geography-notes dt { padding: 18px 0 4px; }
  .delivery-geography-notes dd { padding: 0 0 18px; border-top: 0; }
  .delivery-geography-notes dt:last-of-type { border-bottom: 0; }
  .page-id-1382 .gtyres-landing .gtyres-landing-reading:has(> p:nth-of-type(3)) { column-count: 1; }
  .page-id-1382 .gtyres-landing .gtyres-landing-reading { margin-block: 44px; }
  /* таблица в блоках (contact-city-layouts ≤700): один разделитель на строку — под td, не под th */
  .page-id-1382 .gtyres-landing tbody th { width: auto; padding: 18px 0 6px; border-bottom: 0; }
  .page-id-1382 .gtyres-landing tbody td { padding: 0 0 18px; }
  .page-id-985 .gtyres-page-scene--background .gtyres-page-scene__copy { max-width: none; padding-right: 20px; background: var(--gt-paper); }
  .gt-auction-guide__delivery .delivery-route-map ol { grid-template-columns: 1fr; gap: 20px; }
  .gt-auction-guide__delivery .delivery-route-map ol > li:nth-child(2)::after { display: block; }
  .gtyres-catalog-page .gt-generation-grid > .gt-generation-tile:only-child { grid-template-columns: 1fr; gap: 0; }
  .gtyres-catalog-page .gt-generation-grid > .gt-generation-tile:only-child .gt-generation-tile-copy { grid-template-columns: 1fr; padding-top: 14px; }
}
@media (max-width: 600px) {
  header.gtyres-page-intro::after { width: 13.75px; }
}

/* 1093 (этап C-6 аудита 1072). #12 /shiny-i-diski/: три карточки «Что прислать» в три колонки — правило dist
   .gtyres-landing .gtyres-landing-reading > ol (1fr 1fr) сильнее .gt-wheel-brief__steps; 700–1000 те же три (текст ложится без обрезки), ≤700 — столбик. */
.gtyres-landing .gtyres-landing-reading > ol.gt-wheel-brief__steps { grid-template-columns: repeat(3, minmax(0, 1fr)); }
/* #15а ТО: серая полоса «Сначала согласуем» упиралась в «Что сделали для автомобилей клиентов» (0px) — ритм секций 80px, ≤700 — 48px */
.service-flow .service-agreement + .service-feature { margin-top: 80px; }
/* #6 /dopolnitelnye-opczii/, карточки 01–04 (vezuchi/card, класс блока width-45-p): заголовок 18/600, текст 15;
   размеры в разметке заданы инлайн атрибутами блока (titleFontSize 20, p 16) — отсюда !important; номер 01–04 — красный PNG блока, не трогается */
.wp-block-vezuchi-card.width-45-p .image-text-card h3 { font-size: 18px !important; font-weight: 600; }
.wp-block-vezuchi-card.width-45-p .text-card p { font-size: 15px !important; }
@media (max-width: 700px) {
  .gtyres-landing .gtyres-landing-reading > ol.gt-wheel-brief__steps { grid-template-columns: minmax(0, 1fr); }
  .service-flow .service-agreement + .service-feature { margin-top: 48px; }
}

/* ===== layout-av.css ===== */
/* 1129 (вход AV): единый контейнер внутри страниц — формула .gtyres-section (design-system/spacing.css: --content-max 1200, поля 40 на 1200
   и 20 на 390). Файл отдаётся напрямую из inc/layout-av.php (как layout-c2.css из 1082) и печатается раньше dist-бандлов, поэтому селекторы
   на одну ступень выше исходных (body …, id): при равной специфичности бандл побеждал бы. Ширины между разделами (каталог 1320,
   журнал 1280, калькулятор 1350) здесь не трогаются — только предложение владельцу в RESULT 1129. */

/* 04 и 07 внутри страниц: повествовательные блоки. Было: .service-flow на 701+ — max-width 1440 и width calc(100% - 64px) (site-flow.css)
   → 32/1376 на 1440; всё семейство — max-width 1200 без width → на экране 1200 стоит без полей (0/1200). */
@media (min-width: 701px) {
  body :is(.gtyres-buy-guide, .country-flow, .service-flow, .delivery-flow) { width: min(calc(100% - 80px), var(--content-max, 1200px)); max-width: none; }
}

/* 05: «Другие направления GTYRES». Было: обёртка .flow-related max-width 1360 (40/1360), триптих width min(calc(100% - 64px),1360px)
   (section-refinement.css) → 72/1296. Ниже 700 остаются свои правила (calc(100% - 40px) / calc(100% - 32px)). */
@media (min-width: 701px) {
  body .flow-related { width: min(calc(100% - 80px), var(--content-max, 1200px)); max-width: none; }
  body .gtyres-service-triptych { width: min(calc(100% - 80px), var(--content-max, 1200px)); }
}
/* внутри обёртки .flow-related триптих занимает её ширину на всех экранах (на 390 было 36/318 при обёртке 20/350) */
body .flow-related .gtyres-service-triptych { width: 100%; }

/* 06: хиро «О компании». Полоса остаётся во всю ширину (max-width 1800), копи и кадр — в контейнере страницы: поля хиро
   = (ширина − 1200) / 2, но не меньше прежних 40; внутренние поля копи (24) убраны, чтобы текст встал на x = 120 (было 40 + 24 = 64).
   Ниже 900 действуют исходные owner-ui.css (24 / 0). */
@media (min-width: 901px) {
  body .gtyres-company-hero--real { padding-left: max(40px, calc((100% - var(--content-max, 1200px)) / 2)); padding-right: max(40px, calc((100% - var(--content-max, 1200px)) / 2)); }
  body .gtyres-company-hero--real .gtyres-company-hero__copy { padding-left: 0; padding-right: 0; }
}

/* 10: «Контакты». Три секции .gtyres-section по 96 сверху и снизу давали 192 px между хиро и командой и между командой и офисами
   (128 на 390). Шаг между секциями 80 (40 + 40), на ≤600 — 64 (32 + 32); верх хиро и низ офисов не меняются. */
header.gtyres-contacts-intro { padding-bottom: 40px; }
#gtyres-team { padding-top: 40px; padding-bottom: 40px; }
#gtyres-offices { padding-top: 40px; }
@media (max-width: 600px) {
  header.gtyres-contacts-intro { padding-bottom: 32px; }
  #gtyres-team { padding-top: 32px; padding-bottom: 32px; }
  #gtyres-offices { padding-top: 32px; }
}

/* 12: главная, блок кейсов. Было: от кнопки «Все кейсы» до линии 90 (padding блока), от линии до подписи «Семейного дела» 96.
   Стало 56 и 64 (шаг сетки 56–80); на ≤600 — 40 и 40. Разница высот колонок слайда (подпись под миниатюрами заканчивается раньше
   текста) остаётся содержанием кейса и здесь не правится. */
body .gtyres-case-showcase { padding-bottom: 56px; }
body .gtyres-founder--personal { padding-top: 64px; }
@media (max-width: 600px) {
  body .gtyres-case-showcase { padding-bottom: 40px; }
  body .gtyres-founder--personal { padding-top: 40px; }
}

/* 12 (там же): «Семейное дело» на экране 1200 стояло 32/1136 (brand-sections.css: calc(100% - 64px)) рядом с секциями 40/1120 — та же формула;
   ниже 600 остаётся своё calc(100% - 40px). */
@media (min-width: 601px) {
  body .gtyres-founder { width: min(calc(100% - 80px), var(--content-max, 1200px)); }
}

/* 07 внутри страниц: блок «Жизнь GTYRES» на главной и страницах услуг берёт журнальный контейнер .r56-width 1280 (frontend-r56.css)
   → заголовок при x = 80 рядом с секциями при 120. На страницах журнала этот файл не подключается, там 1280 остаётся. */
@media (min-width: 1051px) {
  body .r56-home-social .r56-width { width: min(var(--content-max, 1200px), calc(100% - 80px)); }
}

/* 07 внутри страниц: статья журнала — крошки стояли в контейнере 1200 (120/1200), заголовок статьи — в колонке 980 с полями 28
   (текст при 258). Крошки ставятся в ту же колонку; на ≤730 поля 20, как у заголовка. */
.gt-journal-edition.edition-article .breadcrumbs { max-width: 980px; margin-left: auto; margin-right: auto; padding-left: 28px; padding-right: 28px; }
@media (max-width: 730px) {
  .gt-journal-edition.edition-article .breadcrumbs { padding-left: 20px; padding-right: 20px; }
}

/* ===== layout-d1.css ===== */
/* 1111 — аудит оформления, проход 2 (1094), этап D-1: только CSS, разметка не меняется.
   Подключается inc/layout-d1.php на всех страницах после layout-c5 (приоритет 47), отдаётся напрямую, dist не пересобирается.
   Токены — по именам дизайн-системы (colors.css/typography.css); роли 1078/1090 (--line, --caption, --label-accent,
   --field-height) берутся с запасным значением, пока Z/AH не на стенде. Пункты: #54, #34, #49, #51, #52, #38, #39, #56, #37, #42. */

/* ---------- #54 мобильное меню: панель не размывала страницу ----------
   .gtyres-navigation.is-open лежит внутри .gtyres-nav-shell; у обоих backdrop-filter (mobile-life.css, @supports).
   По спецификации Filter Effects 2 элемент с backdrop-filter образует Backdrop Root: панель размывала только содержимое
   оболочки, а страница под ней просвечивала резко сквозь 78 % белого. При открытом меню оболочка становится непрозрачной
   (тот же цвет, что у запасного варианта без размытия), её backdrop-filter снимается — панель снова размывает страницу.
   Закрытая шапка не меняется. */
@media (max-width: 767px) {
  body.gtyres-menu-open .gtyres-nav-shell {
    background: var(--gt-mobile-glass-fallback, var(--gt-paper));
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
  }
}

/* ---------- #34 плашка «Original in Russian» (EN-слой, site-language.js) ----------
   В карточках отзывов (.gt-review-card__excerpt) span был строчным и слипался с текстом («Original in RussianХочу…»).
   Роль caption: блочная подпись 12 px цветом --caption, отделена от текста. На тёмных поверхностях (просмотрщик) — свой цвет. */
.gtyres-original-language {
  display: block;
  margin: 0 0 4px;
  font: 400 var(--text-micro, 12px) / 1.4 var(--font-body, 'Montserrat', 'Noto Sans JP', -apple-system, 'Segoe UI', sans-serif);
  letter-spacing: 0;
  color: var(--caption, var(--gt-iron));
}
.gt-review-card__excerpt .gtyres-original-language { margin: 0 0 6px; }
.gtyres-life-viewer .gtyres-original-language { color: #bcbec1; }

/* ---------- #49 таблицы в текстовых секциях (.delivery-table-scroll) и смета мото (table.gt-moto-quote) ----------
   Было: ячейки с отступом 1 px, без линий, th по центру, caption 16 px по центру. Стало: линии --line, th слева на бумаге,
   caption как лейбл секции. Страница 1382 (вход 68, layout-c2) не затрагивается. На ≤ 700 px таблицы лендингов уже
   раскладываются карточками (contact-city-layouts.css) — правила ниже относятся к табличному режиму. */
/* max-height 650 px (site-flow.css) нужен длинной таблице направлений 1382; здесь с нормальными отступами строк он прятал
   итог сметы мото под внутреннюю прокрутку — снимается, остаётся только горизонтальная прокрутка при нехватке ширины */
body:not(.page-id-1382) .delivery-table-scroll { max-height: none; overflow-x: auto; overflow-y: visible; border-block: 1px solid var(--line, var(--gt-cloud)); }
body:not(.page-id-1382) .delivery-table-scroll table {
  width: 100%;
  border-collapse: collapse;
  color: var(--gt-black);
  font-size: 15px;
  line-height: 1.55;
}
body:not(.page-id-1382) .delivery-table-scroll caption {
  caption-side: top;
  padding: 0 0 12px;
  text-align: left;
  color: var(--label-accent, var(--gt-red-dark));
  font: 600 var(--text-micro, 12px) / 1.4 var(--font-body, 'Montserrat', 'Noto Sans JP', -apple-system, 'Segoe UI', sans-serif);
  letter-spacing: .06em;
}
body:not(.page-id-1382) .delivery-table-scroll :is(th, td) {
  padding: 12px 14px;
  text-align: left;
  vertical-align: top;
  border-bottom: 1px solid var(--line, var(--gt-cloud));
}
body:not(.page-id-1382) .delivery-table-scroll :is(th, td):first-child { padding-left: 0; }
body:not(.page-id-1382) .delivery-table-scroll :is(th, td):last-child { padding-right: 0; }
body:not(.page-id-1382) .delivery-table-scroll thead th {
  padding-top: 10px;
  padding-bottom: 10px;
  color: var(--caption, var(--gt-iron));
  font-size: 12px;
  font-weight: 600;
  line-height: 1.4;
  letter-spacing: .02em;
}
body:not(.page-id-1382) .delivery-table-scroll tbody th { font-weight: 600; }
body:not(.page-id-1382) .delivery-table-scroll tbody tr:last-child :is(th, td) { border-bottom: 0; }
/* смета мото: числа справа табличными цифрами, группы на бумаге, итог линией */
.delivery-table-scroll table.gt-moto-quote td:last-child {
  text-align: right;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.delivery-table-scroll table.gt-moto-quote tr.gt-moto-quote__group td { background: var(--gt-paper); }
.delivery-table-scroll table.gt-moto-quote tr.gt-moto-quote__group td:first-child { padding-left: 14px; }
.delivery-table-scroll table.gt-moto-quote tr.gt-moto-quote__total td {
  padding-top: 16px;
  border-top: 2px solid var(--gt-black);
  border-bottom: 0;
  font-size: 17px;
}
/* горизонтальная прокрутка с тенью у края — только когда таблица шире контейнера (табличный режим на планшетах) */
@media (min-width: 701px) {
  body:not(.page-id-1382) .delivery-table-scroll {
    background:
      linear-gradient(to right, var(--gt-white) 30%, rgba(255, 255, 255, 0)) 0 0 / 40px 100% no-repeat local,
      linear-gradient(to left, var(--gt-white) 30%, rgba(255, 255, 255, 0)) 100% 0 / 40px 100% no-repeat local,
      radial-gradient(farthest-side at 0 50%, rgba(17, 17, 17, .14), rgba(17, 17, 17, 0)) 0 0 / 14px 100% no-repeat scroll,
      radial-gradient(farthest-side at 100% 50%, rgba(17, 17, 17, .14), rgba(17, 17, 17, 0)) 100% 0 / 14px 100% no-repeat scroll;
  }
}

/* ---------- #51 арифметическая проверка форм заявки (.captcha-block-wrapp, появляется после первой попытки) ----------
   Было: <p class="captcha-question">10 + 10</p> 12 px шириной 38 px рядом с полем на всю ширину, без подписи.
   Стало: подпись-caption, пример 16/600, поле 156 px (плейсхолдер «Введите ответ» целиком) — в одну строку; высота поля как у соседних (--field-height, 1090). */
.form .captcha-block { margin: 0 0 12px; }
.form .captcha-block-wrapp {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 14px;
}
.form .captcha-block-wrapp .captcha-question {
  flex: 0 0 auto;
  margin: 0;
  color: var(--gt-black);
  font: 600 16px / 1.3 var(--font-body, 'Montserrat', 'Noto Sans JP', -apple-system, 'Segoe UI', sans-serif);
  white-space: nowrap;
}
.form .captcha-block-wrapp .captcha-question::before {
  content: 'Проверка: сколько будет';
  display: block;
  margin: 0 0 2px;
  color: var(--caption, var(--gt-iron));
  font: 400 var(--text-micro, 12px) / 1.4 var(--font-body, 'Montserrat', 'Noto Sans JP', -apple-system, 'Segoe UI', sans-serif);
}
html:lang(en) .form .captcha-block-wrapp .captcha-question::before { content: 'Check: what is'; }
.form .captcha-block-wrapp .captcha-question::after { content: ' = ?'; }
/* вид поля (фон, рамка, радиус, фокус) — от общих правил полей темы/1090; здесь только ширина, высота и место в строке */
.form .captcha-block-wrapp input[name="captcha_answer"] {
  flex: 0 0 156px;
  width: 156px;
  min-width: 0;
  height: var(--field-height, 50px);
  min-height: var(--field-height, 50px);
  margin: 0;
  padding-block: 0;
  align-self: flex-end;
  font-size: var(--field-text, 16px);
}
.form .form-error-captcha { margin-top: 6px; }

/* ---------- #52 модальная форма: статус отправки под кнопкой; на 390 — поля в одну колонку ----------
   .form-error-success лежит внутри .form-fields-wrapp (между полями и согласием); обёртка без собственных стилей
   раскрывается (display: contents), и статус переставляется последним элементом колонки — сразу под кнопкой. */
#main-form.r56-contact .application-form-column .form > .form-fields-wrapp { display: contents; }
#main-form.r56-contact .application-form-column .form > .form-fields-wrapp > .form-fields { width: 100%; order: 0; }
#main-form.r56-contact .application-form-column .form > .form-fields-wrapp > .form-error-success {
  order: 3;
  width: 100%;
  margin: 8px 0 0;
}
#main-form.r56-contact .application-form-column .form > .form-fields-wrapp > .form-error-success:empty { display: none; }
#main-form.r56-contact .application-form-column .form > .checkbox-wrapper { order: 1; }
#main-form.r56-contact .application-form-column .form > .form-button { order: 2; }
@media (max-width: 480px) {
  #main-form.r56-contact .form-fields { grid-template-columns: minmax(0, 1fr); }
}

/* ---------- #38 публикация с вертикальным видео (.publication-layout--video) ----------
   figure.article-cover в сетке 330 + 580 получал margin:0 auto (общее правило обложки): в grid авто-поля ужимали
   figure до ширины постера 180 px. В сетке figure занимает свою колонку целиком, видео — её ширину. */
.gt-journal-edition .publication-layout--video > .article-cover {
  width: 100%;
  max-width: none;
  margin: 0;
  justify-self: stretch;
}
.gt-journal-edition .publication-layout--video > .article-cover video {
  display: block;
  width: 100%;
  height: auto;
  max-height: 640px;
  background: var(--gt-graphite);
}
@media (max-width: 767px) {
  .gt-journal-edition .publication-layout--video > .article-cover { width: min(360px, 100%); margin-inline: auto; }
}

/* ---------- #39 альбом публикации с портретными кадрами (.article-cover--album) ----------
   Кадр 960×1280 в сцене 980×500 с object-fit: contain оставлял по ~300 px бумаги с боков. Сцена на графите, как в
   просмотрщике, и выше (до 640 px): портрет крупнее, боковые поля читаются как фон сцены, а не пустота; альбомные
   кадры по-прежнему на всю ширину. */
.gt-journal-edition .article-cover--album .gt-album__viewport { background: var(--gt-graphite); }
.gt-journal-edition .article-cover--album .gt-album__slide :is(img, video) {
  max-height: min(72vh, 640px);
  max-height: min(72dvh, 640px); /* 1103 правило C: vh перед dvh (Safari < 15.4, Chrome < 108) */
  background: transparent;
}
@media (max-width: 767px) {
  .gt-journal-edition .article-cover--album .gt-album__slide :is(img, video) { max-height: 60vh; max-height: 60dvh; }
}

/* ---------- #56 просмотрщик историй на 390: нижний ряд действий в одну строку ----------
   Ссылки ломались на 2–4 строки, ряд выходил разновысоким. На ≤ 480 px: диалог на всю ширину
   минус 12 px, ссылки в одну строку 10 px с многоточием вместо переноса.
   22.09: круглой кнопки «Написать нам» в подвале больше нет, и прежний `margin-right: auto`
   у первой ссылки разводил оставшуюся пару по краям — вместо тихой строки получались два
   действия по углам. Ссылки идут парой слева, расстояние задаёт сам просмотрщик. */
@media (max-width: 480px) {
  .gtyres-life-viewer { width: calc(100vw - 12px); }
  .gtyres-life-viewer__footer { flex-wrap: nowrap; padding-inline: 12px; }
  .gtyres-life-viewer__footer a.gtyres-life-viewer__source {
    display: block;
    flex: 0 1 auto;
    min-width: 0;
    margin: 0;
    padding: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    line-height: 44px;
    font-size: 10px;
  }
}

/* ---------- #37 таблица версий kei на 390 (.gt-kei-table-wrap, стили страницы — в контенте) ----------
   Таблица 620 px в обёртке 350 px прокручивалась без подсказки. Тень у правого края + подпись над таблицей
   (как в статьях журнала); подпись — только для русской страницы. Специфичность выше встроенного стиля контента. */
@media (max-width: 700px) {
  body .gt-kei-page .gt-kei-table-wrap.gt-kei-table-wrap {
    position: relative;
    background:
      linear-gradient(to right, var(--gt-white) 30%, rgba(255, 255, 255, 0)) 0 0 / 40px 100% no-repeat local,
      linear-gradient(to left, var(--gt-white) 30%, rgba(255, 255, 255, 0)) 100% 0 / 40px 100% no-repeat local,
      radial-gradient(farthest-side at 0 50%, rgba(17, 17, 17, .16), rgba(17, 17, 17, 0)) 0 0 / 14px 100% no-repeat scroll,
      radial-gradient(farthest-side at 100% 50%, rgba(17, 17, 17, .16), rgba(17, 17, 17, 0)) 100% 0 / 14px 100% no-repeat scroll;
  }
  html:lang(ru) body .gt-kei-page .gt-kei-table-wrap.gt-kei-table-wrap::before {
    content: 'Таблицу можно прокрутить вправо';
    position: sticky;
    left: 0;
    display: block;
    width: max-content;
    margin: 0 0 8px;
    color: var(--caption, var(--gt-iron));
    font: 400 var(--text-micro, 12px) / 1.4 var(--font-body, 'Montserrat', 'Noto Sans JP', -apple-system, 'Segoe UI', sans-serif);
  }
}

/* ---------- #42 пустой результат поиска каталога (.gt-catalog-empty) ----------
   Ссылка «сбросьте фильтры» получала display:block от общего .gt-catalog-text-link (carsbase-catalog.css) и рвала
   предложение на три строки. Внутри абзаца — строчная. Файлы плагина не трогаются: правило темы поверх. */
.gt-catalog-empty p .gt-catalog-text-link,
.gt-catalog-empty p a.gt-catalog-text-link {
  display: inline;
  width: auto;
  padding: 0;
  font-size: inherit;
}

/* ---------- 21.09 (владелец): ритм главной чередующимися полосами ----------
   Требование: «цельные чередующиеся белые/нейтрально-серые полосы, убрать серое-на-сером».
   Правила ограничены главной (body.home): те же секции встречаются и на других страницах,
   а ритм задан именно для неё.

   Как полоса делается во всю ширину без запрещённых приёмов. Три секции сегодня сами
   выступают контейнером: .gtyres-section даёт width: min(100% - 80px, --content-max) и
   авто-поля, .gtyres-case-showcase и .gt-reasons-studio — свои варианты того же.
   Если просто закрасить их, полоса получится шириной 1200 с белыми полями по краям.
   Поэтому ширина снимается, а прежняя геометрия содержимого воссоздаётся боковым padding:
   фон тогда лежит на всей секции, а содержимое остаётся на общем контейнере 1200.
   Ни 100vw, ни отрицательного вылета, ни overflow:hidden здесь нет: при вертикальной полосе
   прокрутки 100vw дал бы горизонтальное переполнение, а отрицательные поля запрещены самим
   заданием. max(40px, …) повторяет прежний зазор до 1280, где контейнер ещё не равен 1200. */
body.home .gtyres-services,
body.home .gtyres-case-showcase,
body.home .gt-reasons-studio {
  width: auto;
  max-width: none;
  margin-inline: 0;
  padding-inline: max(40px, calc((100% - var(--content-max, 1200px)) / 2));
}
@media (max-width: 600px) {
  body.home .gtyres-services,
  body.home .gtyres-case-showcase,
  body.home .gt-reasons-studio {
    width: auto;
    padding-inline: 20px;
  }
}

/* Чередование сверху вниз: Лайф белый, услуги серые, этапы белые, кейсы серые, семейный
   блок белый, причины серые, панорама «Всё из Японии», отзывы серые, FAQ белый,
   финальная связь светло-серая, тёмный подвал.
   Один и тот же нейтральный тон на всех серых полосах: два близких серых рядом и читались
   как «серое-на-сером». Белым полосам заливка не нужна — это фон страницы; исключение
   только там, где прежде стояла своя серая. */
body.home .gtyres-services,
body.home .gtyres-case-showcase,
body.home .gt-reasons-studio,
body.home .gt-review-section {
  background: var(--gt-paper, #f4f4f4);
}
body.home .gtyres-process--route,
body.home .gtyres-faq-band {
  background: var(--gt-white, #fff);
}

/* Отзывы были секцией с вертикальными полями: между полосами оставались белые щели, а снизу
   к ним прибавлялся ещё и padding соседа. Поля становятся собственным padding полосы. */
body.home .gt-review-section {
  margin-block: 0;
  padding-block: 80px;
}
@media (max-width: 767px) {
  body.home .gt-review-section { padding-block: 52px; }
}

/* Причины: на серой полосе неактивные карточки были #f5f5f3 — почти тон в тон с фоном.
   Активная остаётся тёмной, неактивные встают на белую поверхность. */
body.home .gt-reasons-studio .gt-reason-choice[aria-pressed="false"] {
  background: var(--gt-white, #fff);
}

/* ===== lead-forms.css ===== */
/* 1113 (v2) · 1125 (AN v2) · 1134 (AN v3): быстрые заявки — точки входа, <dialog> с мини-формами.
   1134 (владелец, 8089: «цвета остались у кнопок разные — так и остались»): в блоке «Остались вопросы?» и в подвале обе кнопки —
   primary одного вида (.gt-lead-entry--pair: одинаковая ширина по большей — inline-grid с колонками 1fr; ≤ 767 — во всю ширину,
   одна под другой, зазор 14 px как у полей форм); ссылка-стрелка (tertiary) остаётся только в шапке; фото блока — семья.
   Роли кнопок и поля — токены дизайн-системы 1078/1090/1096 (colors.css, components.css, final-polish.css);
   свои цвета не вводятся. Отдаётся напрямую, dist не пересобирается.
   v2 (замечания ревьюера root): фиксированной панели на телефоне нет; в шапке пара стоит вместо «Связаться»;
   primary мини-форм и крестик закрытия — явно по дизайн-системе (правила блока application-form .form button /
   .form input сюда не должны просачиваться); фокус поля — нейтральный.
   1125 (владелец, 8089: «так и остались разных цветов кнопки»; «Остались вопросы?» — «сделай туда фотку»):
   в подвале пара стоит вместо tel:-кнопки «Позвонить», поэтому «Позвоните мне» — primary и там; геометрия primary одна
   на всех точках входа и задана здесь явно (не все страницы с блоком несут body.gtyres-marketing, чей final-polish даёт
   52/8/14); блок «Остались вопросы?» — две колонки с фотографией (банк 1126). */

/* ---------- точки входа ---------- */
.gt-lead-entry { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 20px; }
/* primary пары — как у кнопок шапки и форм (final-polish: 52 px, радиус 8, 14/600, отступы 14/22; --gt-red → --gt-red-deep);
   на ≤ 767 — 50 px (высота кнопок телефона: --field-height layout-d1, панель 1027/1118). Цвета — токены, свои не вводятся */
.gt-lead-entry .gtyres-button-primary { display: inline-flex; align-items: center; justify-content: center; gap: 12px; min-height: 52px; padding: 14px 22px; border: 1px solid transparent; border-radius: 8px; background: var(--gt-red, #dc0100); color: var(--gt-white, #fff); font: 600 14px/1.4 var(--font-body, Montserrat, Arial, sans-serif); letter-spacing: normal; text-transform: none; text-decoration: none; white-space: nowrap; transition: background-color 180ms, color 180ms, border-color 180ms; }
.gt-lead-entry .gtyres-button-primary:hover, .gt-lead-entry .gtyres-button-primary:visited:hover { background: var(--gt-red-deep, #b10000); color: var(--gt-white, #fff); }
.gt-lead-entry .gtyres-button-primary:visited { color: var(--gt-white, #fff); }
.gt-lead-entry .gtyres-button-primary:focus-visible { outline: 2px solid var(--gt-red); outline-offset: 4px; }
@media (max-width: 767px) {
  .gt-lead-entry .gtyres-button-primary { min-height: 50px; padding: 12px 20px; }
}
/* 21.09 (владелец): в шапке одно действие и переход в журнал. Tertiary-роль осталась на том же
   месте ряда, но теперь это ссылка «Журнал» (.gt-lead-entry__journal), а красная кнопка ведёт в
   форму вопроса. Селекторы переписаны на новый класс намеренно: правило «скрыть tertiary до 1280»
   ниже обязано держаться за текстовую ссылку, а не за кнопку — иначе оно спрятало бы саму
   «Связаться». Стрелки у ссылки больше нет, поэтому правило для вложенного span снято. */
.gt-lead-entry--header .gt-lead-entry__journal { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; font-weight: 600; text-decoration: none; }
.gt-lead-entry--header .gt-lead-entry__journal:hover { color: var(--link-accent-hover, var(--gt-red)); }
/* 1134: пара равных primary — сетка из двух колонок 1fr: обе кнопки шириной по большей, ряд не шире содержимого.
   Правила пары оставлены: их берёт городской блок (city-actions-bh.css) — там действий по-прежнему два. */
.gt-lead-entry--pair { display: inline-grid; grid-auto-flow: column; grid-auto-columns: 1fr; gap: 12px; max-width: 100%; }
.gt-lead-entry--pair .gtyres-button-primary { width: 100%; min-width: 0; }
@media (max-width: 767px) {
  .gt-lead-entry--pair { display: grid; grid-auto-flow: row; grid-template-columns: minmax(0, 1fr); width: 100%; gap: 14px; }
}
/* одно действие вместо пары: ширина по содержимому на широком экране, во всю колонку на телефоне */
.gt-lead-entry--single { display: inline-grid; grid-template-columns: minmax(0, max-content); gap: 12px; max-width: 100%; }
@media (max-width: 767px) {
  .gt-lead-entry--single { grid-template-columns: minmax(0, 1fr); width: 100%; }
  .gt-lead-entry--single .gtyres-button-primary { width: 100%; }
}

/* шапка: справа от навигации, там, где стояла «Связаться» (она показывалась с 1200); ссылка «Журнал» — с 1280 */
.gt-lead-entry--header { display: none; flex-wrap: nowrap; gap: 12px 16px; white-space: nowrap; }
@media (min-width: 1200px) {
  .gt-lead-entry--header { display: flex; }
  .gt-lead-entry--header .gtyres-button, .gt-lead-entry--header .gtyres-button-primary { min-height: 47px; padding: 12px 18px; font-size: 14px; }
  .gt-lead-entry--header .gt-lead-entry__journal { display: none; font-size: 13px; }
}
@media (min-width: 1280px) {
  .gt-lead-entry--header .gt-lead-entry__journal { display: inline-flex; }
}

/* подвал (1125 → 1134): пара стоит на месте tel:-кнопки «Позвонить» в первой колонке (графит) — две одинаковые primary
   «Позвоните мне» и «Задать вопрос» одна под другой, одной ширины (по большей), по центру колонки; тот же --gt-red, что в блоке
   (без «hot»-оттенка — решение владельца). Кольцо фокуса на #191919 — светло-красное #ff817a (контраст 7.26; у --gt-red было бы
   2.3 — заметка 655 в footer-contacts.css); 1134 по передаче от 1131 и правилу владельца «один красный» — кольцо --gt-red */
.site-footer .gt-lead-entry--footer { grid-column: 1 / -1; display: grid; grid-auto-flow: row; grid-template-columns: minmax(0, max-content); justify-content: center; margin-top: 0; gap: 10px; }
.site-footer .gt-lead-entry--footer .gtyres-button-primary { width: 100%; max-width: 100%; }
/* #secondary — обёртка виджетов подвала: правило бандла .gtyres-marketing #secondary a:focus-visible (home-refinement.css, #ff817a, специфичность 1,2,1)
   перебивало кольцо без id (приёмка 1134 v1: кольцо второй кнопки бледно-коралловое) — селектор с id (1,4,0) */
.site-footer #secondary .gt-lead-entry--footer .gtyres-button-primary:focus-visible,
.site-footer .gt-lead-entry--footer .gtyres-button-primary:focus-visible { outline: 2px solid var(--gt-red); outline-offset: 3px; } /* по передаче от 1131: «один красный» — было #ff817a */
@media (max-width: 767px) {
  /* колонка Kadence (.kt-inside-inner-col) — grid с центрированием: без width/justify-self пара сжимается по содержимому (157 px; передача 1131) */
  .site-footer .gt-lead-entry--footer { grid-template-columns: minmax(0, 1fr); width: 100%; justify-self: stretch; gap: 14px; }
}
.site-footer .gtyres-footer-primary--added .gt-lead-entry--footer,
.site-footer :not(.gtyres-footer-primary) > .gt-lead-entry--footer { grid-column: 1 / -1; }

/* ---------- блок в конце ключевых страниц ---------- */
/* 1125: секция по ролям 1078 (кикер, H2, подводка, пара действий) в две колонки ≥ 1024 — текст слева, фотография справа
   (компоновка — образец Mailchimp «Still have questions?», Mobbin; пропорции колонок и радиус кадра — как у блока
   основателей brand-sections.css: 1.15fr/.85fr, 6 px). На телефоне фото сверху, текст под ним. 1134: кадр — Софья и Владимир
   у офиса (founders-*), лица в верхней трети — object-position без изменений. Кадр 16:9 на ≥ 768
   (704 px во всю ширину на 768; в колонке ≥ 1024 кадрируется до 3:2 object-fit) и 4:5 на ≤ 767 (<picture>, размеры в атрибутах —
   CLS 0, соотношение через aspect-ratio + object-fit). Без <figure> (нет файлов) — одна колонка */
.gt-lead-closing { background: var(--gt-paper); border-top: 1px solid var(--line, var(--gt-cloud)); }
.gt-lead-closing__inner { width: min(calc(100% - 64px), var(--content-max, 1200px)); margin: 0 auto; padding: clamp(56px, 7vw, 88px) 0; }
.gt-lead-closing--photo .gt-lead-closing__inner { display: grid; grid-template-columns: minmax(0, 1fr); gap: 32px; align-items: center; }
.gt-lead-closing__figure { margin: 0; min-width: 0; }
.gt-lead-closing__figure img { display: block; width: 100%; height: auto; aspect-ratio: 16 / 9; object-fit: cover; object-position: 50% 35%; border-radius: 6px; background: var(--gt-cloud, #e6e7e3); }
@media (min-width: 1024px) {
  .gt-lead-closing--photo .gt-lead-closing__inner { grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr); gap: clamp(40px, 5vw, 72px); }
  /* в правой колонке кадр 16:9 давал 479×270 при колонке текста ≈ 330 px — кадрируем до 3:2 (479×319); 1134: оба лица и вывеска в кадре при 50 % */
  .gt-lead-closing__figure img { aspect-ratio: 3 / 2; object-position: 50% 40%; }
}
@media (max-width: 1023px) {
  .gt-lead-closing--photo .gt-lead-closing__figure { order: -1; }
}
.gt-lead-closing h2 { margin: 12px 0 14px; max-width: 18ch; }
.gt-lead-closing__lead { max-width: 60ch; margin: 0 0 28px; color: var(--gt-iron); font-size: 17px; line-height: 1.6; }
.gt-lead-closing__lead a { color: var(--gt-black); font-weight: 600; text-decoration: none; white-space: nowrap; }
.gt-lead-closing__lead a:hover { color: var(--gt-red); }
/* в блоке (1134): две равные primary в ряд, «Позвоните мне» первой */
.gt-lead-entry--closing { gap: 14px; }
@media (max-width: 767px) {
  .gt-lead-closing__inner { width: calc(100% - 40px); }
  .gt-lead-closing--photo .gt-lead-closing__inner { gap: 24px; }
  .gt-lead-closing__figure img { aspect-ratio: 4 / 5; }
  .gt-lead-closing__lead { font-size: 15px; }
}

/* ---------- модальное окно ---------- */
/* Ширина 720 px — решение root по геометрии формы: прежние 520 px не были ограничением,
   а шесть карточек каналов в три колонки при них получали по 145 px и рвали подписи.
   На 720 под сетку остаётся 656 px, то есть более 200 px на вариант. */
.gt-lead-dialog { position: fixed; inset: 0; z-index: var(--z-overlay, 200); width: min(100% - 48px, 720px); max-width: none; max-height: calc(100vh - 32px); max-height: calc(100dvh - 32px); margin: auto; padding: 0; border: 0; border-radius: var(--radius-lg, 16px); background: var(--gt-white); color: var(--gt-black); box-shadow: var(--shadow-float, 0 24px 64px rgba(0, 0, 0, .45)); overflow: auto; overscroll-behavior: contain; }
.gt-lead-dialog:not([open]) { display: none; }
.gt-lead-dialog::backdrop { background: var(--gt-scrim, rgba(18, 19, 19, .6)); }
/* Один прокручиваемый контейнер, пока диалог открыт. showModal() делает страницу inert, но
   прокручивать её браузер всё равно даёт: на 421×643 видно сразу две полосы — внешнюю
   страницы и внутреннюю диалога, и колесо уводит фон. Блокировка висит ровно на состоянии
   открытия (класс ставит lead-forms.js) и снимается при закрытии — глобального
   overflow:hidden у сайта не появляется. scrollbar-gutter держит место полосы, чтобы
   страница под подложкой не дёргалась на ширину скроллбара. */
html:has(body.gt-lead-open) { overflow: hidden; scrollbar-gutter: stable; }
body.gt-lead-open { overflow: hidden; }
.gt-lead-dialog__card { position: relative; padding: 32px; }
/* крестик: зона 44×44, глиф ≈16,5 px (18 из 24 единиц в боксе 22 px) линией темы --gt-line-weight, штрих не масштабируется
   (v2 давал 8 px и 1,3 px: путь 12 единиц в боксе 16 и масштабированный stroke); цвет — как у текста */
/* Кнопка закрытия держится за видимую область формы, а не за её содержимое.
   Прокручивается сам <dialog>, и при absolute кнопка уезжала вместе с текстом:
   замер root на 1280×720 — clientHeight 688, scrollHeight 813, после двух
   wheel-жестов scrollTop 125,33 и close.y −99,33, то есть кнопка уходила за
   верхний край. Sticky оставляет её на месте внутри того же единственного
   прокручиваемого контейнера; фиксировать относительно страницы нельзя —
   кнопка ушла бы за пределы диалога.
   Место в правом верхнем углу сохранено полями, а не смещением вправо через
   margin: отрицательное правое поле выносило кнопку за содержимое карточки и
   на 320 давало карточке горизонтальную прокрутку 280 против 274. Поэтому
   вправо кнопку двигает transform (на раскладку не влияет), а -22px сверху и
   снизу оставляют следующий блок ровно там, где он стоял.
   Белая подложка нужна прокрутке: кнопка проходит над карточками каналов. */
.gt-lead-dialog .gt-lead-dialog__close { position: sticky; inset: auto; top: 10px; z-index: 3; display: grid; place-items: center; width: 44px; height: 44px; min-width: 44px; min-height: 44px; margin: -22px 0 -22px auto; padding: 0; border: 0; border-radius: 50%; background: var(--gt-white); box-shadow: 0 0 0 5px var(--gt-white); color: var(--gt-black); cursor: pointer; transform: translateX(14px); }
.gt-lead-dialog .gt-lead-dialog__close svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: var(--gt-line-weight, 2px); stroke-linecap: round; }
.gt-lead-dialog .gt-lead-dialog__close svg path { vector-effect: non-scaling-stroke; }
.gt-lead-dialog .gt-lead-dialog__close:hover { background: var(--gt-paper); box-shadow: 0 0 0 5px var(--gt-paper); color: var(--gt-black); }
.gt-lead-dialog .gt-lead-dialog__close:focus-visible { outline: 2px solid var(--gt-black); outline-offset: 2px; }
.gt-lead-dialog__head { padding-right: 40px; margin-bottom: 20px; }
.gt-lead-dialog__head h3, .gt-lead-dialog__done h3 { margin: 8px 0 8px; font-size: var(--h3-size, 22px); line-height: var(--h3-leading, 1.3); font-weight: var(--h3-weight, 600); }
.gt-lead-dialog__lead { margin: 0; color: var(--gt-iron); font-size: 15px; line-height: 1.55; }

/* форма: класс .form нужен событию gtyres:lead-success (mu-plugin слушает form.form); правила темы для .form
   (сцены/детали: ширина, сетки, порядок) здесь сбрасываются. Отступы согласия и кнопки — ниже, с той же специфичностью */
.gt-lead-dialog .gt-lead-form { display: block; width: 100%; max-width: none; margin: 0; padding: 0; }
.gt-lead-dialog .gt-lead-form[hidden], .gt-lead-dialog [hidden] { display: none !important; }
.gt-lead-dialog .gt-lead-form :is(.gt-lead-form__fields, .gt-lead-form__field, .form-button, .checkbox-wrapper) { width: 100%; max-width: none; min-width: 0; margin: 0; }

/* поля — как у форм 1090: высота --field-height, линия --line, радиус --radius-sm; фокус нейтральный (не красный, чтобы
   автофокус при открытии не читался как ошибка); ошибка — красная рамка + текст */
/* 21.09 (решение root по форме): между смысловыми группами 24 px на широком экране и 20 px
   на телефоне. Прежние 14 px делали форму сплошной лентой полей, а внутри группы отступы
   остаются своими (подпись 8 px, ошибка 6 px) — общий reset тут не вводится. */
.gt-lead-form__fields { display: grid; grid-template-columns: minmax(0, 1fr); gap: 24px; }
.gt-lead-form__field label { display: block; margin-bottom: 8px; font-size: 12px; font-weight: 600; color: var(--gt-black); }
.gt-lead-form__optional { margin-left: 6px; color: var(--caption, var(--gt-iron)); font-weight: 400; }
.gt-lead-form__field :is(input, textarea) { box-sizing: border-box; width: 100%; margin: 0; padding: 12px 14px; border: 1px solid var(--line, var(--gt-cloud)); border-radius: var(--radius-sm, 4px); background: var(--field-bg, #fff); color: var(--gt-black); font: 400 var(--field-text, 16px)/1.4 var(--font-body); }
.gt-lead-form__field input { height: var(--field-height, 52px); min-height: var(--field-height, 52px); }
.gt-lead-form__field textarea { min-height: 112px; resize: vertical; }
.gt-lead-form__field :is(input, textarea):focus, .gt-lead-form__captcha input:focus { border-color: var(--gt-black); outline: 2px solid var(--gt-black); outline-offset: 2px; }
.gt-lead-form__field.is-invalid :is(input, textarea), .gt-lead-form__captcha.is-invalid input { border-color: var(--gt-red); }
.gt-lead-form .form-error { margin-top: 6px; color: var(--gt-red-dark, #9a0100); font-size: 12px; line-height: 1.4; }
.gt-lead-form .form-error:empty { display: none; }

/* арифметика — та же строка, что в модальной заявке (#51, layout-d1.css): подпись-caption псевдоэлементом, пример 16/600, поле 156 px */
.gt-lead-dialog .gt-lead-form .gt-lead-form__captcha { margin: 14px 0 0; }
.gt-lead-dialog .gt-lead-form .gt-lead-form__captcha .captcha-block-wrapp { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; }
.gt-lead-dialog .gt-lead-form .gt-lead-form__captcha .captcha-question { flex: 0 0 auto; margin: 0; color: var(--gt-black); font: 600 16px/1.3 var(--font-body); white-space: nowrap; }
.gt-lead-dialog .gt-lead-form .gt-lead-form__captcha .captcha-question::before { content: 'Проверка: сколько будет'; display: block; margin: 0 0 2px; color: var(--caption, var(--gt-iron)); font: 400 var(--text-micro, 12px)/1.4 var(--font-body); }
html:lang(en) .gt-lead-dialog .gt-lead-form .gt-lead-form__captcha .captcha-question::before { content: 'Check: what is'; }
.gt-lead-dialog .gt-lead-form .gt-lead-form__captcha .captcha-question::after { content: ' = ?'; }
.gt-lead-dialog .gt-lead-form .gt-lead-form__captcha input { flex: 0 0 156px; width: 156px; min-width: 0; height: var(--field-height, 52px); min-height: var(--field-height, 52px); margin: 0; padding: 0 14px; border: 1px solid var(--line, var(--gt-cloud)); border-radius: var(--radius-sm, 4px); background: var(--field-bg, #fff); font: 400 var(--field-text, 16px)/1.4 var(--font-body); align-self: flex-end; }
.gt-lead-dialog .gt-lead-form .gt-lead-form__captcha .form-error { margin: 6px 0 0; }

/* согласие — как у существующей формы (owner-ui.css 1090: сетка 20px + текст 11px, отступы 18px сверху / 24px снизу);
   текст ошибки — на всю ширину, по левому краю поля */
/* 1134 по передаче от 1131: чекбокс 24 px (п. 20 аудита 1128, цель ≥ 24) */
.gt-lead-dialog .gt-lead-form .gt-lead-form__consent { display: grid; grid-template-columns: 24px 1fr; gap: 0 10px; align-items: start; margin: 18px 0 24px; }
.gt-lead-dialog .gt-lead-form .gt-lead-form__consent input { width: 24px; height: 24px; min-width: 24px; min-height: 24px; margin: 0; padding: 0; border-radius: 0; accent-color: var(--gt-red); cursor: pointer; }
.gt-lead-dialog .gt-lead-form .gt-lead-form__consent label { margin: 0; color: var(--gt-iron); font-size: 11px; line-height: 1.6; }
.gt-lead-dialog .gt-lead-form .gt-lead-form__consent label a { color: inherit; text-decoration: underline; }
.gt-lead-dialog .gt-lead-form .gt-lead-form__consent .form-error { grid-column: 1 / -1; margin: 6px 0 0; padding: 0; text-align: left; }

/* honeypot: скрыто для людей и вне порядка табуляции; не display:none — часть ботов такие поля пропускает */
.gt-lead-form__trap { position: absolute; left: -9999px; top: auto; width: 1px; height: 1px; overflow: hidden; }

.gt-lead-dialog .gt-lead-form .gt-lead-form__status { margin: 0 0 12px; }
.gt-lead-dialog .gt-lead-form .gt-lead-form__status:empty { display: none; }
.gt-lead-form__status [role="alert"] { margin: 0; color: var(--gt-red-dark, #9a0100); font-size: 13px; line-height: 1.5; }

/* кнопка отправки — primary дизайн-системы (final-polish: 52 px, радиус 8, 14/600, отступы 14/22; --gt-red → --gt-red-deep);
   правило блока application-form «.form button» (градиент, 18 px regular, высота 50, радиус 0) здесь перекрывается */
.gt-lead-dialog .gt-lead-form .form-button { margin: 0; }
.gt-lead-dialog .gt-lead-form .gt-lead-form__submit { display: inline-flex; align-items: center; justify-content: center; width: 100%; height: auto; min-width: 0; min-height: var(--field-height, 52px); margin: 0; padding: 14px 22px; border: 1px solid transparent; border-radius: 8px; background: var(--gt-red, #dc0100); color: var(--gt-white, #fff); font: 600 14px/1.4 var(--font-body); text-transform: none; letter-spacing: normal; cursor: pointer; transition: background-color 180ms, color 180ms, border-color 180ms; }
.gt-lead-dialog .gt-lead-form .gt-lead-form__submit:hover { background: var(--gt-red-deep, #b10000); color: var(--gt-white, #fff); }
.gt-lead-dialog .gt-lead-form .gt-lead-form__submit:focus-visible { outline: 2px solid var(--gt-black); outline-offset: 3px; }
.gt-lead-dialog .gt-lead-form .gt-lead-form__submit[disabled] { opacity: 1; cursor: wait; } /* 1134 по передаче от 1131: «один красный» — без бледности на время отправки, состояние показывает текст «Отправляем…» */

/* состояние «отправлено»: secondary — рамка --btn-secondary-line, прозрачный фон (как .gt-album__full в layout-c5) */
.gt-lead-dialog__done p:not(.gtyres-section-label) { margin: 0 0 24px; color: var(--gt-iron); font-size: 15px; line-height: 1.6; }
.gt-lead-dialog .gt-lead-dialog__done-close { display: inline-flex; align-items: center; justify-content: center; width: 100%; min-height: 52px; margin: 0; padding: 14px 22px; border: 1px solid var(--btn-secondary-line, var(--gt-black)); border-radius: 8px; background: transparent; color: var(--gt-black); font: 600 14px/1.4 var(--font-body); cursor: pointer; }
.gt-lead-dialog .gt-lead-dialog__done-close:hover { background: var(--gt-paper); color: var(--gt-black); }
.gt-lead-dialog .gt-lead-dialog__done-close:focus-visible { outline: 2px solid var(--gt-black); outline-offset: 3px; }

@media (max-width: 767px) {
  .gt-lead-dialog { width: calc(100% - 24px); max-height: calc(100vh - 24px); max-height: calc(100dvh - 24px); border-radius: var(--radius-lg, 16px); }
  .gt-lead-dialog__card { padding: 24px 20px; }
  /* Внешнее поле 12 px, внутреннее 20 px — оставлено как было; на самых узких экранах
     обе величины уменьшены ниже, иначе под сетку каналов не остаётся ширины. */
  .gt-lead-form__fields { gap: 20px; }
  .gt-lead-dialog .gt-lead-form .gt-lead-form__captcha input { flex-basis: 140px; width: 140px; }
  /* v3: пока открыта мини-форма, панель разделов (1027; в 1118 — тот же класс body.gt-lead-open для нового дока) не видна сквозь подложку и не касается низа диалога */
  body.gt-lead-open .gt-mobile-dock, body.gt-lead-open .gt-mobile-quick-menu { display: none !important; }
}
/* 320: внешнее поле 8 px и внутреннее 16 px вместо 12/20 — на такой ширине каждые 8 px
   идут прямо в ширину подписи канала. Замер на 320: диалог 304 px, карточка 132 px,
   подпись 84 px при нужных 78. */
@media (max-width: 359px) {
  .gt-lead-dialog { width: calc(100% - 16px); }
  .gt-lead-dialog__card { padding: 20px 16px; }
}

@media (prefers-reduced-motion: reduce) {
  .gt-lead-dialog .gt-lead-form .gt-lead-form__submit { transition: none; }
}
