/* ZIPTEH — CTA главной по референсу 01.09.2026.
   Область ограничена модификатором .zt-request--home-ref:
   компактные CTA внутренних страниц не затрагиваются. */

#ziptehLeadModule.zt-request.zt-request--home-ref {
    margin: 0;
    padding: 64px 0 48px !important;
    overflow: hidden;

    /* Правка заказчика 03.09.2026: фон модуля белый, а не серый.
       Было #f7f8fa — серая полоса вокруг карточки. Карточку от фона
       по-прежнему отделяют рамка #dfe4e8 и мягкая тень. */
    background: #fff !important;
}

#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__inner {
    position: relative;

    /* Правка заказчика 03.09.2026: над формой и под ней было много пустого
       места. Карточку держала снизу `min-height: 500px`, хотя самая высокая
       колонка — форма (360 px на 1440 px). Разница делилась пополам и давала
       по 33 px воздуха сверху и снизу. Теперь высоту задаёт содержимое. */
    min-height: 0;
    display: grid;
    /* Аудит 03.09.2026. Было `minmax(390,420) minmax(360,430) minmax(0,1fr)`:
       на сверхшироких экранах вся лишняя ширина уходила форме — на 2560 px
       поля растягивались на 1000 px, а экскаватор оставался 430 px и терялся
       в пустой карточке. Теперь лишнее забирает колонка с техникой, а у формы
       есть верхняя граница: 4 поля в ряд читаются и не растекаются. */
    /* Правка заказчика 03.09.2026 (по референсу): экскаватор с деталями
       уменьшен вдвое. Было `minmax(300px, 1fr)` у техники и потолок 760 px
       у формы — на 1990 px картинка занимала 560 px, то есть 29 % ширины
       карточки при 15 % на референсе, и карточка вытягивалась до 524 px
       по высоте. Теперь колонка техники фиксированная, а лишнюю ширину
       забирает форма — как в присланном образце. */
    grid-template-columns: minmax(320px, 420px) minmax(220px, 300px) minmax(520px, 1fr) !important;
    grid-template-rows: 1fr;
    align-items: center;
    gap: clamp(22px, 1.7vw, 34px) !important;
    padding: clamp(30px, 1.8vw, 36px) !important;
    overflow: hidden;
    border: 1px solid #dfe4e8 !important;
    border-radius: 16px !important;
    background: #fff !important;
    box-shadow: 0 18px 48px rgba(37, 49, 66, .08) !important;
}

/* Точечный узор и жёлтое кольцо в углах карточки жили здесь до правки
   N-654 (03.09.2026). Заказчик снял их вместе с плашками-иконками;
   гасящее правило — ниже, рядом с остальными правками N-654. */

#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__info,
#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__art,
#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form {
    position: relative;
    z-index: 1;
    min-width: 0;
}

#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__info {
    grid-column: 1;
    grid-row: 1;
    align-self: stretch;
    display: flex !important;
    flex-direction: column;
    justify-content: center !important;
}

#ziptehLeadModule.zt-request.zt-request--home-ref .zlc-intro {
    display: block;
}

/* Правка N-654: с карточки главной сняты жёлтые декорации — точечный
   узор в правом верхнем углу (.zlc-card::before) и мягкое свечение по
   нижним углам (.zlc-card::after). Оба псевдоэлемента объявлены в общем
   CSS модуля (feedback-form.php), поэтому гасим их только у варианта
   главной, чтобы CTA внутренних страниц остался прежним.
   Подкладка-сетка под экскаватором — отдельный элемент
   (.zt-request__art::before) и по решению заказчика остаётся. */
#ziptehLeadModule.zt-request.zt-request--home-ref .zlc-card::before,
#ziptehLeadModule.zt-request.zt-request--home-ref .zlc-card::after {
    content: none !important;
}

#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__title {
    max-width: 500px;
    margin: 0 !important;
    color: #253142 !important;
    font-family: var(--zt-font-head, "Russo One", Arial, sans-serif) !important;
    /* Кегль подобран под капс: строка «ПОДБЕРЁМ ЗАПЧАСТЬ» в Russo One
       просит 11,14 кегля по ширине, и упирается она не в сам кегль,
       а в ширину колонки текста — при нехватке оффер разваливается
       на три строки вместо двух.

       N-708 (04.09.2026, «можно ещё больше шрифт»): колонка текста
       расширена с 420 до 500 px, потолок кегля поднят с 37 до 44 px
       (44 × 11,14 = 490 px, помещается в 500). Колонка техники
       при этом остаётся достаточной: на 3406 px ей достаётся 530 px
       при нужных 426, на 1920 px — 393 px, чего хватает на саму
       картинку 368 px, только сдвиг вправо ужимается с 58 до 25 px. */
    font-size: clamp(32px, 2vw, 44px) !important;
    font-weight: 400 !important;
    line-height: 1.14 !important;
    letter-spacing: -.025em !important;
    white-space: normal !important;

    /* Правка заказчика 03.09.2026: оффер набран капсом. Регистр задаём
       стилем, а не текстом в конфиге, — в разметке и в микроразметке
       заголовок остаётся в обычном написании. */
    text-transform: uppercase !important;
}

#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__title .zlc-title__line {
    display: block !important;
    color: inherit !important;
    font: inherit !important;
    letter-spacing: inherit !important;
    text-transform: inherit !important;
}

/* N-691: приписка «за 15 минут» — фирменный жёлтый на всех экранах.
   Было: тёмно-синий (`--zt-ink`) — общий CSS модуля держит
   `.zlc-title__line--accent` правилом `color: var(--zt-ink) !important`
   без области видимости `--home-ref`, и заданный здесь `inherit`
   (для наследования от родителя) утягивал именно этот цвет. */
#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__title .zlc-title__line--accent {
    color: #ffb800 !important;
}

#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__title .zlc-title__line + .zlc-title__line::before {
    content: none !important;
}

#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__description {
    max-width: 365px;
    margin: 14px 0 0;
    color: #566577;
    font-family: var(--zt-font, "Manrope", Arial, sans-serif);
    font-size: 16px;
    font-weight: 400;
    line-height: 1.55;
}

/* N-657: телефон и почта стоят в одну строку. Подписи под ними сняты
   правками N-655 и N-656, поэтому строка получилась короткой и две
   ссылки помещаются рядом. На узкой карточке колонки переносятся. */
#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__contacts {
    margin-top: 22px !important;
    margin-bottom: 0 !important;
    display: flex !important;

    /* Общий CSS модуля ставит контактам `flex-direction: column`
       при ≤767 px — из-за него телефон и почта расходились по строкам
       уже на планшете, хотя ширины хватает даже на 320 px. */
    flex-direction: row !important;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 8px 26px !important;
}

/* Правка N-654: жёлтые плашки-иконки 46×46 у телефона и почты сняты.
   Разметку иконок на главной больше не выводим (feedback-form.php,
   ветка $ztHomeLead), поэтому колонка под них из сетки убрана — иначе
   телефон и почта уехали бы в узкий 46-пиксельный столбец.
   На внутренних страницах CTA не менялся: иконки там остались. */
#ziptehLeadModule.zt-request.zt-request--home-ref .zlc-contact {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    align-items: center;
    gap: 0 !important;
}

#ziptehLeadModule.zt-request.zt-request--home-ref .zlc-contact__value {
    color: #253142 !important;
    font-family: var(--zt-font-btn, "Manrope", Arial, sans-serif);
    font-size: 16px !important;
    font-weight: 750 !important;
    line-height: 1.25;
}

/* Телефон и почта подсвечиваются фирменным жёлтым при наведении
   (заказчик, 04.09.2026).

   До этого наведение НЕ работало вовсе: у общего CSS модуля есть
   `#ziptehLeadModule .zlc-contact__value:hover { color: #d99e00 }` —
   вес (1,2,0), а базовый цвет home-ref задан селектором
   `#ziptehLeadModule.zt-request.zt-request--home-ref .zlc-contact__value`
   с весом (1,3,0). Базовое правило тяжелее, поэтому перебивало
   собственный ховер модуля, и цвет не менялся ни при каком наведении.
   Добавляем `.zt-request__contacts` — вес (1,5,0), выигрывает.

   `focus-visible` — тот же цвет для перехода клавиатурой: подсветка
   не должна быть доступна только мыши. */
#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__contacts .zlc-contact__value {
    transition: color .16s ease;
}

#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__contacts .zlc-contact__value:hover,
#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__contacts .zlc-contact__value:focus-visible {
    color: #ffb800 !important;
}

#ziptehLeadModule.zt-request.zt-request--home-ref .zlc-contact__copy {
    min-width: 0;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
}

#ziptehLeadModule.zt-request.zt-request--home-ref .zlc-contact__note {
    display: block;
    margin-top: 3px;
    color: #8591a0;
    font-size: 13px !important;
    line-height: 1.25;
}

#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__art {
    grid-column: 2;
    grid-row: 1;

    /* Было `min-height: 400px` при высоте самой картинки 257 px — колонка
       техники растягивала карточку и добавляла воздух вокруг формы. */
    min-height: 0;
    align-self: center;
    display: grid;
    place-items: center;
    overflow: visible;
    pointer-events: auto;
}

/* ----------------------------------------------------------
   Сетка-чертёж на всю ширину CTA (заказчик, 04.09.2026).
   ----------------------------------------------------------
   Раньше узор рисовался псевдоэлементом обёртки картинки и был
   привязан к технике. Тогда «дотянуть до края» было невозможно
   честно: положение картинки внутри карточки гуляет от ширины окна
   (левое поле от 382 до 549 px), а любой радиус маски симметричен —
   дотягиваясь до левого края, узор ровно настолько же уходил вправо,
   на форму.

   Теперь узор — ФОН САМОЙ КАРТОЧКИ. Его границы совпадают с её
   границами по определению: ни маска, ни проценты не нужны, обрезка
   идёт по скруглению 16px, и никакого «острого края» нет — край
   узора и есть рамка карточки. Заодно ушла вторая сетка: слой
   ровно один, поэтому не может появиться муара от двух наложенных
   сеток с разным началом координат.

   Плотность снижена (было .20/.13): узор занимает всю карточку,
   а не пятно под техникой, и на прежней яркости спорил бы с формой.
   Поля ввода залиты белым (#fff), поэтому внутрь них сетка
   не просвечивает — только в промежутки между ними. */
#ziptehLeadModule.zt-request.zt-request--home-ref .zlc-card {
    background-image:
        repeating-linear-gradient(30deg, rgba(255, 184, 0, .16) 0 1px, transparent 1px 27px),
        repeating-linear-gradient(150deg, rgba(255, 184, 0, .10) 0 1px, transparent 1px 27px) !important;
}


/* ----------------------------------------------------------
   Декор формы (заказчик, 04.09.2026).
   ----------------------------------------------------------
   Раскладка формы НЕ меняется — только оформление. Разметку
   не трогаем: весь декор на псевдоэлементах, поэтому на бой уходит
   один CSS, без правки `feedback-form.php`.

   1. Белый лист под формой. После того как сетка легла на всю
      карточку, поля стояли прямо на чертеже. Лист поднимает форму
      над фоном и заодно объясняет сетку: чертёж — подложка, бланк
      заявки лежит на нём. Отступы подобраны по факту: от края формы
      до края карточки 27-37 px на всех ширинах от 600 px, поэтому
      -18/-20 px везде остаются внутри (запас 7-17 px). На телефоне
      запас всего 19 px — там лист поджат, см. блок ≤599 px.
   2. Рамка листа — сплошная фирменная жёлтая, 1px (04.09.2026,
      по просьбе заказчика; была серая 1px #eef1f4, потом жёлтая 2px).
      Свечения нет: сперва тень листа перевели в тёплую, потом
      приглушили, потом заказчик снял её совсем — «убери жёлтую
      подсветку и сделай тоньше обводку». Тени под кнопкой тоже нет,
      кнопка вернулась к плоскому виду из общего CSS модуля.
      Прежние чертёжные засечки в углах и жёлтая метка на верхней
      кромке сняты раньше: они лежали ровно на линии рамки и давали
      двойной контур.
      Итог: весь декор формы — один тонкий жёлтый контур на белом
      листе поверх сетки-чертежа.
   ---------------------------------------------------------- */
/* ----------------------------------------------------------
   Сообщение об ошибке не двигает форму (заказчик, 04.09.2026).
   ----------------------------------------------------------
   Было: скрипт модуля вставляет `<div class="zl-field-error">`
   СЛЕДОМ ЗА ПОЛЕМ, внутри его ячейки, и показывает через
   `display: block`. Блок в потоке — значит появление сообщения
   добавляет высоту ячейке, ряд становится выше, и всё, что ниже
   (комментарий, кнопка, согласие), уезжает вниз. Замерено: форма
   росла на 20 px за каждый ряд с ошибкой — 20 px на планшете,
   40 px на десктопе (два ряда), 60 px на телефоне (три ряда).
   Ширина при этом не менялась ни на одной из 12 проверенных ширин.

   Стало: сообщение выведено из потока (`position: absolute`)
   и висит под полем, в зазоре между рядами. Высота ячейки от него
   больше не зависит, поэтому форма не двигается вообще — ни при
   появлении сообщения, ни при его скрытии.

   Кегль уменьшен с 12 до 11 px и интерлиньяж поджат, чтобы строка
   уместилась в зазор: между рядами 16 px на десктопе и планшете
   и 12 px на телефоне. Белая подложка — чтобы сообщение читалось,
   даже если зазор окажется меньше строки.

   `nowrap` с многоточием: длинное сообщение не должно разворачиваться
   в две строки и наезжать на поле снизу. Штатные тексты короткие
   («Укажите телефон», «Укажите корректную почту») и помещаются.

   Правило ограничено `--home-ref`: у формы обратного звонка
   (`#form_callback`) и у модуля внутренних страниц поведение
   прежнее. */
#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-item {
    position: relative;
}

#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .zl-field-error {
    position: absolute !important;
    top: 100% !important;
    right: 0 !important;
    left: 0 !important;
    z-index: 1;
    margin: 1px 0 0 !important;
    background: #fff;
    font-size: 11px !important;
    line-height: 1.15 !important;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    pointer-events: none;
}

#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form {
    position: relative;

    /* Без изоляции лист с `z-index: -1` ушёл бы за фон карточки
       (ближайший контекст наложения — выше по дереву) и стал бы
       невидимым вместе с сеткой. */
    isolation: isolate;
}

#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form::before {
    position: absolute;
    z-index: -1;
    inset: -18px -20px;
    content: "";
    background: #fff;
    border: 1px solid #ffb800;
    border-radius: 18px;
}


#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area {
    position: relative;
}


/* И гасим прежнюю сетку — ту, что рисует общий CSS модуля на контейнере
   колонки (`lead-form-compact.css:67`). Пока сетка была здесь же,
   на `.zt-request__art::before`, наши свойства просто перекрывали её,
   и на экране был один узор. После переноса на обёртку картинки старая
   перестала перекрываться и проявилась второй сеткой поверх первой —
   с другим углом, своим скруглением и серой второй заливкой. У модуля
   внутренних страниц она остаётся: правило ограничено `--home-ref`. */
#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__art::before {
    content: none !important;
}

#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__art-picture {
    /* 300 px — размер по референсу заказчика: экскаватор с деталями
       занимает около 15 % ширины карточки, а не 29 %, и карточка перестаёт
       вытягиваться по высоте вслед за картинкой. */
    width: min(100%, 300px) !important;

    /* Контекст для перенесённой сюда сетки-чертежа (N-699, N-703). */
    position: relative;
}

#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form {
    grid-column: 3;
    grid-row: 1;
    align-self: center;
}

#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area {
    display: grid !important;
    grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
    grid-auto-flow: row;
    align-items: start !important;
    gap: 16px 14px !important;
}

#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > * {
    min-width: 0;
    margin: 0 !important;
}

#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-item:has([data-zip-field="name"]) { grid-column: 1; grid-row: 1; }
#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-item:has([data-zip-field="phone"]) { grid-column: 2; grid-row: 1; }
#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-item:has([data-zip-field="email"]) { grid-column: 3; grid-row: 1; }
#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-item:has([data-zip-field="inn"]) { grid-column: 4; grid-row: 1; }
#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-item:has([data-zip-field="message"]) { grid-column: 1 / -1; grid-row: 2; }

#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .zl-field-label {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    overflow: hidden !important;
    clip: rect(0 0 0 0) !important;
    white-space: nowrap !important;
}

#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form input.zl-normalized-field:not([type="checkbox"]),
#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form textarea.zl-normalized-field {
    width: 100% !important;
    height: 58px !important;
    min-height: 58px !important;
    max-height: 58px !important;
    padding: 0 16px !important;
    border: 1px solid #d8dee5 !important;
    border-radius: 8px !important;
    background: #fff !important;
    color: #253142 !important;
    box-shadow: none !important;
    font-size: 14px !important;
    line-height: 56px !important;
}

/* Поле «Опишите задачу» — 132 px (04.09.2026, заказчик: «модуль
   опишите задачу большой»). Было 190 px, и это самая высокая строка
   формы: она одна и задавала высоту всей карточки, потому что форма
   тут самая длинная из трёх колонок. 132 px — те же три строки текста,
   что и на планшете (там это значение стоит с аудита), и на 58 px
   ниже. Тянуть поле вручную по-прежнему можно: `resize: vertical`
   с потолком 240 px оставлен.

   Два селектора, потому что разметка на бою и на стенде разная.
   На стенде поле лежит внутри `.form-item`, и туда бьёт правило
   общего CSS модуля (`.zt-request .zt-request__form .form-item
   textarea.zl-normalized-field`, 96 px) — вес у него такой же, как
   у нашего, но инлайновый `<style>` в теле страницы идёт позже
   внешнего файла и при равенстве выигрывает. На бою обёртки
   `.form-item` нет, и это правило вообще не срабатывает. Вариант
   с `.form-item` тяжелее на один класс и закрывает оба случая —
   поле будет 132 px и там, и там. */
#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form textarea.zl-normalized-field,
#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-item textarea.zl-normalized-field {
    height: 132px !important;
    min-height: 132px !important;
    max-height: 240px !important;
    padding-top: 16px !important;
    padding-bottom: 16px !important;
    line-height: 1.45 !important;
    resize: vertical !important;
}

#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form input.zl-normalized-field:focus,
#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form textarea.zl-normalized-field:focus {
    border-color: #ffb800 !important;
    box-shadow: 0 0 0 3px rgba(255, 184, 0, .14) !important;
}

#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .yellow-button {
    grid-column: 1 / 3 !important;
    grid-row: 3 !important;
    width: 100% !important;
    height: 58px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 14px;
    border: 0 !important;
    border-radius: 8px !important;
    background: #ffb800 !important;
    color: #1d2228 !important;
    box-shadow: none !important;
    /* N-653: типографика как у кнопок шапки «КАТАЛОГ» и «ЗАКАЗАТЬ ЗАПЧАСТИ» —
       Tektur 15/700 капсом с трекингом 0,16 px (значения сняты с них же).
       Прежде кнопка шла Manrope 15/750 строчными и выбивалась из шапки. */
    font-family: var(--zt-font, "Tektur", "Inter", Arial, sans-serif) !important;
    font-size: 15px !important;
    font-weight: 700 !important;
    letter-spacing: 0.16px !important;
    text-transform: uppercase !important;

    /* Аудит 03.09.2026. Без верхней границы кнопка тянулась за колонкой
       формы: на 2560 px она была 493 px — полоса во всю ширину поля ввода.
       Минимум держит подпись в одну строку (см. ниже) на узких раскладках. */
    min-width: 240px !important;
    max-width: 340px !important;
}

#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .yellow-button__label {
    transform: none !important;

    /* Аудит 03.09.2026: на 600–1199 px подпись ломалась на две строки
       («ПОДОБРАТЬ» / «ЗАПЧАСТЬ») внутри кнопки высотой 58 px. */
    white-space: nowrap !important;

    /* N-658: кегль подписи как у кнопок шапки — 15 px. Сама кнопка
       была 15-й, а вложенный span приходил 13-м из общего CSS модуля,
       и подпись выглядела мельче, чем «КАТАЛОГ» и «ЗАКАЗАТЬ ЗАПЧАСТИ». */
    font-size: 15px !important;
    font-weight: 700 !important;
    letter-spacing: 0.16px !important;
}

/* N-658: стрелка у кнопки снята. */
#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .yellow-button::after {
    content: none !important;
}

/* Гарнитуру кнопке приходится отбивать хаком специфичности.

   zt-redesign.css:1704 гонит все <button> и вложенные в кнопки <span>
   на `--zt-font-btn` (Manrope) правилом с `:not(#zt_):not(#zt_)`, то есть
   с весом в два идентификатора. Кнопки шапки «КАТАЛОГ» и «ЗАКАЗАТЬ
   ЗАПЧАСТИ» под него не попадают: они ссылки, а не кнопки, и потому идут
   Tektur. Чтобы кнопка CTA встала с ними в один ряд (N-653), повторяем
   тот же хак — иначе правило выше проигрывает по весу. */
#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .yellow-button:not(#zt_):not(#zt_),
#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .yellow-button__label:not(#zt_):not(#zt_) {
    font-family: var(--zt-font, "Tektur", "Inter", Arial, sans-serif) !important;
}

#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .yellow-button::after {
    content: "→";
    font-size: 24px;
    font-weight: 400;
    line-height: 1;
}

#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .form-item:has(input[type="checkbox"]),
#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .zl-consent-label {
    grid-column: 3 / -1 !important;
    grid-row: 3 !important;
    align-self: center;
    width: 100% !important;
}

#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .zl-required-note {
    grid-column: 3 / -1 !important;
    grid-row: 4 !important;
    align-self: start !important;
}

#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .zl-consent-label {
    display: flex !important;
    align-items: flex-start !important;
    gap: 10px !important;
    min-width: 0 !important;
    color: #3f4c5b;
    font-size: 13px !important;
    line-height: 1.4 !important;
}

/* Главный дефект согласия, найденный аудитом 03.09.2026.

   Общий CSS модуля (feedback-form.php) держит `.zl-consent-copy`
   правилом `display: inline-flex !important`. Текст «Согласен с» и ссылка
   на политику становились двумя флекс-колонками, которые не переносятся:
   в узкой колонке формы (600–1499 px) строка распадалась на «Сог / лас /
   ен / с» рядом с такой же лесенкой из ссылки. На 360–414 px ссылка,
   наоборот, вылезала за правый край карточки на 45–99 px.

   Возвращаем обычный строчный поток: текст и ссылка переносятся как
   единый абзац. Область правила — только вариант главной. */
#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .zl-consent-copy,
#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .zl-consent-link {
    display: inline !important;
    min-width: 0 !important;

    /* Общий CSS модуля держит согласие ещё и правилом
       `white-space: nowrap !important` — из-за него строка не
       переносилась и на 320–414 px уезжала за правый край карточки
       на 30–124 px. Возвращаем обычный перенос. */
    white-space: normal !important;
}

#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .zl-consent-link {
    overflow-wrap: anywhere;
}

#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form input[type="checkbox"] {
    width: 22px !important;
    height: 22px !important;
    flex: 0 0 22px;
    margin-top: 1px !important;
    border: 1px solid #cbd3dc !important;
    border-radius: 4px !important;
    background: #fff !important;
}

/* Отмеченный чекбокс — жёлтый квадрат с белой галочкой
   (04.09.2026, заказчик: «галочка не работает»).

   Две причины, почему не работало.

   1. Заливка. Жёлтый фон у модуля есть — `#ziptehLeadModule
      .zl-form-component input[type="checkbox"]:checked`, вес (1,3,0).
      Но наше правило выше задаёт белый фон весом (1,4,0) и БЕЗ
      состояния, поэтому выигрывало и у отмеченного чекбокса.

   2. Сама галочка. Общий CSS модуля рисует её псевдоэлементом
      самого `<input>` (белый уголок из двух границ, `scale(0)` →
      `scale(1)` при отметке). Chrome псевдоэлементы у полей ввода
      не создаёт вовсе, поэтому этот код не давал результата ни при
      каком весе — замер показывал `scale(0)` даже когда правило
      состояния матчилось. Рисуем галочку фоновой картинкой самого
      чекбокса: у `<input>` фон работает всегда.

   SVG вписан в разметку (data-URI), отдельного файла не требуется
   и лишнего запроса нет. */
#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form input[type="checkbox"]:checked {
    border-color: #ffb800 !important;
    background-color: #ffb800 !important;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 9'%3E%3Cpath d='M1 4.6 4.4 8 11 1.2' fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") !important;
    background-repeat: no-repeat !important;
    background-position: center !important;
    background-size: 12px 9px !important;
}

#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .zl-consent-full {
    display: inline !important;
}

#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .zl-consent-short {
    display: none !important;
}

/* На телефоне — короткий вариант «политикой обработки ПД» (заказчик,
   04.09.2026: «на 360 сократить и сделать шрифт больше»).

   Оба варианта текста уже лежат в разметке модуля: скрипт собирает
   ссылку из `.zl-consent-full` и `.zl-consent-short`, и общий CSS
   модуля сам переключает их на ≤599 px. Наше правило выше возвращало
   полный вариант на всех ширинах — из-за него на телефоне и оставалась
   длинная строка, которую приходилось давить кеглем до 8 px.
   Возвращаем задуманное поведение и поднимаем кегль. */
@media (max-width: 599px) {
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .zl-consent-full {
        display: none !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .zl-consent-short {
        display: inline !important;
    }
}

/* N-659: примечание об обязательных полях возвращено. Оно было в разметке
   и гасилось этим же файлом. Ставим его в строку с согласием, справа. */
#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .zl-required-note {
    display: block !important;
    margin: 0 !important;
    color: #8591a0 !important;
    font-size: 12px !important;
    line-height: 1.4 !important;
}

#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .zl-required-note .starrequired {
    color: #e5484d !important;
}

/* ==========================================================
   ДЕТАЛИ ВЫЛЕТАЮТ ИЗ ЭКСКАВАТОРА (правка заказчика 03.09.2026)

   Раньше детали прилетали из-за краёв картинки: у каждой был свой
   `--zt-art-from` вида `translate3d(18%, -11%, 0) scale(.9)` — сдвиг
   на десяток процентов в произвольную сторону. Выглядело так, будто
   их сдувает ветром со стороны, а не выбрасывает из машины.

   Теперь старт каждой детали — центр экскаватора. Координаты сняты
   с самих слоёв: изображения нарисованы на общем холсте 1091×877, и
   центр непрозрачных пикселей каждого слоя даёт его место в кадре.

       машина    47,8 / 45,0 %      цилиндр   52,4 / 82,9 %
       шестерня  11,2 / 81,3 %      шарнир    72,7 / 82,7 %
       подшипник 30,2 / 86,7 %      опоры     89,2 / 82,9 %

   Отсюда сдвиг «деталь → центр машины» для каждого слоя. Проценты
   в `translate` считаются от размера самого слоя, а слой равен холсту,
   поэтому числа переносятся из таблицы напрямую.

   `transform-origin` переносим в точку самой детали: тогда `scale(.16)`
   сжимает её в собственном центре, а не тащит через весь кадр, и та же
   точка становится осью для покачивания в состоянии покоя — деталь
   качается вокруг себя, а не вокруг середины картинки.
   ========================================================== */

#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__art-layer--gear {
    transform-origin: 11.2% 81.3%;
    --zt-art-from: translate3d(36.6%, -36.3%, 0) scale(.16) rotate(-38deg);
}

#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__art-layer--bearing {
    transform-origin: 30.2% 86.7%;
    --zt-art-from: translate3d(17.6%, -41.7%, 0) scale(.16) rotate(-22deg);
}

#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__art-layer--cylinder {
    transform-origin: 52.4% 82.9%;
    --zt-art-from: translate3d(-4.6%, -37.9%, 0) scale(.16) rotate(12deg);
}

#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__art-layer--joint {
    transform-origin: 72.7% 82.7%;
    --zt-art-from: translate3d(-24.9%, -37.7%, 0) scale(.16) rotate(26deg);
}

#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__art-layer--mounts {
    transform-origin: 89.2% 82.9%;
    --zt-art-from: translate3d(-41.4%, -37.9%, 0) scale(.16) rotate(38deg);
}

/* Детали разлетаются не разом: задержки уже заданы в общем CSS модуля
   (90…330 мс), здесь их только растягиваем — полёт длиннее, чем прилёт
   сбоку, и хвост очереди не должен обгонять голову. */
#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__art-layer:not(.zt-request__art-layer--machine) {
    transition:
        transform 1.05s cubic-bezier(.2, .78, .26, 1),
        opacity .42s ease !important;
}

/* Пока деталь ещё внутри машины, её не видно: прозрачность снимается
   в самом начале полёта, а не по его завершении. */
#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request--art-ready:not(.zt-request--art-visible) .zt-request__art-layer:not(.zt-request__art-layer--machine),
#ziptehLeadModule.zt-request--home-ref.zt-request--art-ready:not(.zt-request--art-visible) .zt-request__art-layer:not(.zt-request__art-layer--machine) {
    opacity: 0;
    transform: var(--zt-art-from);
}

/* ==========================================================
   АДАПТИВ. Переписан аудитом 03.09.2026.

   Что было не так. Ниже 1200 px раскладку модуля определял не этот
   файл, а `zt-home-unify.css` (правка N-622 от 02.09): он раскрывает
   обёртку `.zlc-info` в `display: contents` и сбрасывает размещение
   детей карточки правилом `grid-area: auto !important`. Правила
   главной шли без `!important` и проигрывали по весу — заданные здесь
   колонки не применялись, элементы раскладывались автоматически.
   Результат на 900–1199 px: форма уезжала в левую колонку, техника —
   в правую, а под ней оставалась пустая половина карточки высотой
   около 400 px. На 600–899 px картина повторялась.

   Порядок из N-622 (текст → техника → форма → контакты) сохранён,
   но теперь задан явными строками сетки, а не автоматическим
   размещением. Селекторы повторяют структуру `zt-home-unify.css`
   и добавляют `.zt-request--home-ref` — вес выше на один класс,
   поэтому правила главной выигрывают, а модуль внутренних страниц
   остаётся на прежней раскладке.
   ========================================================== */

@media (max-width: 1499px) {
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__inner {
        /* Было `minmax(290,330) minmax(300,370) minmax(0,1fr)`: на 1200 px
           форме доставалось 335 px, и в неё не помещались ни ИНН
           («ИНН (необязатель…»), ни согласие рядом с кнопкой. Ужимаем
           первые две колонки и даём форме нижнюю границу 420 px. */
        grid-template-columns: minmax(300px, 380px) minmax(180px, 240px) minmax(420px, 1fr) !important;
        min-height: 0;
        padding: 32px !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__title {
        /* N-709 (04.09.2026, «и тут ещё больше шрифт»): было жёстких
           30 px под самую тесную точку диапазона. Теперь кегль плавает
           вместе с колонкой: 36 px на 1499 px, 34,5 на 1438 (ширина,
           на которой снята заметка), 31 на 1300 и 30 на 1200.

           Заодно закрыт дефект на 1200 px: там колонке текста
           доставалось 328 px, а строке при 30 px нужно 334 — оффер шёл
           ТРЕМЯ строками. Расширение потолка колонки текста
           (340 → 420 px, см. сетку выше) на 1200 px не помогло:
           там до потолка не дотягивают ни одна из трёх колонок,
           ширину делит дефицит, и тексту достаётся всё те же 327,5 px.
           Поэтому нижняя граница кегля опущена с 30 до 28 px: на 1200 px
           получается 28,8 px, строке нужно 321 px — помещается,
           и две строки держатся по всему диапазону. */
        font-size: clamp(28px, 2.4vw, 37px) !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__description {
        font-size: 14px;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__art-picture {
        width: min(100%, 240px) !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area {
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-item:has([data-zip-field="name"]) { grid-column: 1 !important; grid-row: 1 !important; }
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-item:has([data-zip-field="phone"]) { grid-column: 2 !important; grid-row: 1 !important; }
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-item:has([data-zip-field="email"]) { grid-column: 1 !important; grid-row: 2 !important; }
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-item:has([data-zip-field="inn"]) { grid-column: 2 !important; grid-row: 2 !important; }
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-item:has([data-zip-field="message"]) { grid-column: 1 / -1 !important; grid-row: 3 !important; }

    /* Кнопка и согласие — отдельными строками, а не бок о бок.

       Раньше согласие стояло во второй колонке рядом с кнопкой: на
       1200–1499 px ему доставалось 160–220 px, и строка «Согласен с
       политикой обработки персональных данных» рассыпалась на четыре
       узких столбца. Теперь кнопка занимает свою строку, согласие —
       следующую во всю ширину формы. `grid-column` обязан идти
       с `!important`: в базовом блоке кнопка стоит `1 / 3`, а согласие
       `3 / -1`, и без него они уезжают на третью линию колонок,
       которой в двухколоночной сетке нет. */
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .yellow-button {
        grid-column: 1 / -1 !important;
        grid-row: 4 !important;
        justify-self: start !important;
        width: 100% !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .form-item:has(input[type="checkbox"]),
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .zl-consent-label {
        grid-column: 1 / -1 !important;
        grid-row: 5 !important;
        align-self: start !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .zl-required-note {
        grid-column: 1 / -1 !important;
        grid-row: 6 !important;
    }
}

/* ----------------------------------------------------------
   900–1199 px. Две колонки: текст слева, техника справа, под ними
   форма во всю ширину карточки и контакты последними. Пустая
   половина карточки, которая была здесь до аудита, исчезает.
   ---------------------------------------------------------- */
@media (max-width: 1199px) {
    #ziptehLeadModule.zt-request.zt-request--home-ref {
        padding-top: 48px !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__inner {
        grid-template-columns: minmax(0, 1fr) minmax(200px, 300px) !important;
        grid-template-rows: auto auto auto !important;
        align-items: center !important;
        min-height: 0;
        gap: 26px 30px !important;
        padding: 32px !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zlc-card > .zlc-info.zt-request__info > .zlc-intro {
        grid-column: 1 !important;
        grid-row: 1 !important;
        align-self: center !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zlc-card > .zt-request__art {
        grid-column: 2 !important;
        grid-row: 1 !important;
        align-self: center !important;
        min-height: 0 !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__title {
        /* От 900 до 1000 px колонке текста мало 34 px: оффер капсом
           уходил на третью строку. Кегль тянется вместе с шириной. */
        font-size: clamp(30px, 3.2vw, 34px) !important;
    }

    /* N-697: описание было в 3 строки при 365 px максимума ширины,
       хотя под текст доступно около 570 px. */
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__description {
        max-width: 520px;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__art-picture {
        width: min(100%, 300px) !important;
    }

    

    #ziptehLeadModule.zt-request.zt-request--home-ref .zlc-card > .zlc-form.zt-request__form {
        grid-column: 1 / -1 !important;
        grid-row: 2 !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zlc-card > .zlc-info.zt-request__info > .zlc-contacts.zt-request__contacts {
        grid-column: 1 / -1 !important;
        grid-row: 3 !important;
        align-self: start !important;
        margin-top: 0 !important;
    }

    /* Форма во всю ширину карточки — четыре поля в ряд помещаются
       свободно, подпись ИНН перестаёт обрезаться. */
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area {
        grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-item:has([data-zip-field="name"]) { grid-column: 1 !important; grid-row: 1 !important; }
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-item:has([data-zip-field="phone"]) { grid-column: 2 !important; grid-row: 1 !important; }
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-item:has([data-zip-field="email"]) { grid-column: 3 !important; grid-row: 1 !important; }
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-item:has([data-zip-field="inn"]) { grid-column: 4 !important; grid-row: 1 !important; }
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-item:has([data-zip-field="message"]) { grid-column: 1 / -1 !important; grid-row: 2 !important; }

    /* Кнопка занимает две колонки из четырёх, согласие — две оставшиеся.
       В одной колонке (около 190 px на 900 px) кнопка не помещалась:
       нижняя граница 240 px выталкивала её за пределы колонки, и чекбокс
       согласия ложился поверх правого края кнопки. */
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .yellow-button {
        grid-column: 1 / 3 !important;
        grid-row: 3 !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .form-item:has(input[type="checkbox"]),
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .zl-consent-label {
        grid-column: 3 / -1 !important;
        grid-row: 3 !important;
        align-self: center !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .zl-required-note {
        grid-column: 3 / -1 !important;
        grid-row: 4 !important;
    }

    /* Текстовое поле ниже: карточка стала компактнее по высоте. */
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form textarea.zl-normalized-field {
        height: 132px !important;
        min-height: 132px !important;
    }
}

/* ----------------------------------------------------------
   600–899 px. Планшет: та же схема, но форма в две колонки —
   четыре поля в ряд здесь уже узкие.
   ---------------------------------------------------------- */
@media (max-width: 899px) {
    /* Колонка техники сужена с 240–320 до 200–280 px: при широкой картинке
       тексту оставалось 324 px, и оффер капсом ломался на три строки. */
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__inner {
        grid-template-columns: minmax(0, 1fr) minmax(160px, 220px) !important;
        gap: 24px 26px !important;
        padding: 28px !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__title {
        font-size: 30px !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__art-picture {
        width: min(100%, 220px) !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area {
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-item:has([data-zip-field="email"]) { grid-column: 1 !important; grid-row: 2 !important; }
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-item:has([data-zip-field="inn"]) { grid-column: 2 !important; grid-row: 2 !important; }
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-item:has([data-zip-field="message"]) { grid-column: 1 / -1 !important; grid-row: 3 !important; }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .yellow-button {
        grid-column: 1 / -1 !important;
        grid-row: 4 !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .form-item:has(input[type="checkbox"]),
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .zl-consent-label {
        grid-column: 1 / -1 !important;
        grid-row: 5 !important;
        align-self: start !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .zl-required-note {
        grid-column: 1 / -1 !important;
        grid-row: 6 !important;
    }
}

/* ----------------------------------------------------------
   ≤767 px. Одна колонка: текст, техника, форма, контакты.

   Двухколоночный верх здесь уже не работает: на 600 px колонке
   с техникой доставалось 320 px из 516, тексту — 168 px, и оффер
   капсом рассыпался на четыре строки. В одну колонку заголовок
   получает всю ширину карточки и укладывается в две строки.
   Форма до 600 px остаётся двухколоночной — ширины хватает.
   ---------------------------------------------------------- */
@media (max-width: 767px) {
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__inner {
        grid-template-columns: minmax(0, 1fr) !important;
        grid-template-rows: auto auto auto auto !important;
        gap: 22px !important;
        padding: 26px !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zlc-card > .zlc-info.zt-request__info > .zlc-intro {
        grid-column: 1 !important;
        grid-row: 1 !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zlc-card > .zt-request__art {
        grid-column: 1 !important;
        grid-row: 2 !important;
        min-height: 0 !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zlc-card > .zlc-form.zt-request__form {
        grid-column: 1 !important;
        grid-row: 3 !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zlc-card > .zlc-info.zt-request__info > .zlc-contacts.zt-request__contacts {
        grid-column: 1 !important;
        grid-row: 4 !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__title {
        max-width: 460px;
        font-size: 32px !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__description {
        max-width: 460px;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__art-picture {
        width: min(100%, 280px) !important;
    }

    
}

/* ----------------------------------------------------------
   ≤599 px. Телефон: одна колонка, порядок как в N-622 —
   текст, техника, форма, контакты.
   ---------------------------------------------------------- */
@media (max-width: 599px) {
    #ziptehLeadModule.zt-request.zt-request--home-ref {
        padding: 36px 0 32px !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__inner {
        grid-template-columns: minmax(0, 1fr) !important;
        grid-template-rows: auto auto auto auto !important;
        gap: 22px !important;
        padding: 24px 18px !important;
        border-radius: 12px !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zlc-card > .zlc-info.zt-request__info > .zlc-intro {
        grid-column: 1 !important;
        grid-row: 1 !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zlc-card > .zt-request__art {
        grid-column: 1 !important;
        grid-row: 2 !important;
        min-height: 0 !important;

        /* N-688: на телефоне картинка — по центру колонки, не прижата
           влево (в отличие от планшета 600-767, где просили обратное). */
        justify-items: center !important;

        /* N-689: чуть выше — ближе к тексту описания над ней. Общий
           шаг сетки карточки (22 px) не трогаем, только у этой ячейки
           отрицательный верхний отступ. */
        margin-top: -8px !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zlc-card > .zlc-form.zt-request__form {
        grid-column: 1 !important;
        grid-row: 3 !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zlc-card > .zlc-info.zt-request__info > .zlc-contacts.zt-request__contacts {
        grid-column: 1 !important;
        grid-row: 4 !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__title {
        /* Ограничение 330 px убрано: на 480–599 px из-за него оффер капсом
           ломался на три строки, хотя ширины карточки хватало на две. */
        max-width: none;
        font-size: clamp(28px, 8.5vw, 34px) !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__description {
        margin-top: 14px;
        font-size: 14px;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__contacts {
        margin-top: 0 !important;
        grid-template-columns: 1fr;
    }

    /* Раскладка техники из редактора (заказчик, 04.09.2026):
       ширина 250 px, сдвиг 8 px влево и 41 px вверх. Ширина через
       `min(100%, …)`: на 320 px окна под технику остаётся 239 px,
       и голые 250 px вылезли бы за поле карточки на 11 px. */
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__art-picture {
        width: min(100%, 250px) !important;
        margin-left: -8px !important;
        margin-top: -41px !important;
    }

    /* На 320–350 px под технику остаётся 239–269 px, картинка занимает
       их целиком, и сдвиг влево на 8 px выносил её за поле карточки
       на 3 px. Там сдвига нет. */
    @media (max-width: 350px) {
        #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__art-picture {
            margin-left: 0 !important;
        }
    }

    

    /* Телефон: зазор между рядами 12 px вместо 16 — сообщение
       об ошибке поджато, иначе накрывало бы верхнюю кромку
       следующего поля на 2 px. 10 px × 1,1 = 11 px в зазор 12 px. */
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .zl-field-error {
        margin-top: 0 !important;
        font-size: 10px !important;
        line-height: 1.1 !important;
    }

    /* Телефон: от края формы до края карточки всего 19 px по бокам
       и 25 px снизу — лист поджат, иначе он вылез бы за скругление
       карточки и обрезался. */
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form::before {
        inset: -12px -12px;
        border-radius: 14px;
    }


    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area {
        grid-template-columns: minmax(0, 1fr) !important;
        gap: 12px !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-item:has([data-zip-field="name"]) { grid-column: 1 !important; grid-row: 1 !important; }
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-item:has([data-zip-field="phone"]) { grid-column: 1 !important; grid-row: 2 !important; }
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-item:has([data-zip-field="email"]) { grid-column: 1 !important; grid-row: 3 !important; }
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-item:has([data-zip-field="inn"]) { grid-column: 1 !important; grid-row: 4 !important; }
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-item:has([data-zip-field="message"]) { grid-column: 1 !important; grid-row: 5 !important; }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .form-item:has(input[type="checkbox"]),
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .zl-consent-label { grid-column: 1 !important; grid-row: 7 !important; }
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .zl-required-note { grid-column: 1 !important; grid-row: 8 !important; }

    /* На узкой карточке кнопка занимает всю ширину: ограничения ширины
       с широких экранов здесь только мешают. */
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .yellow-button {
        grid-column: 1 !important;
        grid-row: 6 !important;
        min-width: 0 !important;
        max-width: none !important;
        width: 100% !important;
    }

    /* N-687: кегль согласия уменьшен, чтобы строка была короче.

       Полностью в одну строку эта фраза («Согласен с политикой обработки
       персональных данных», 52 символа) на ширине ≤599 px не помещается
       ни при каком читаемом кегле: доступно под текст ~260-310 px (карточка
       минус чекбокс и зазор), а на 12 px фразе нужно ~463 px — сжать до
       одной строки значило бы уйти к 6-7 px, нечитаемому размеру. Кегль
       снижен до 10 px (нижняя граница, принятая в проекте для
       вспомогательного текста) — вместо двух неровных строк с «лесенкой»
       получаются две ровные, короче прежних. Дальнейшее сокращение —
       либо короче текст ссылки, либо чекбокс отдельной строкой над
       текстом; ни то ни другое не просили. */
    /* 04.09.2026 (заказчик: «на 360 сократить и сделать шрифт больше»).
       Прежние 10 px (и 8 px на ≤399) подбирались под ДЛИННЫЙ текст
       «политикой обработки персональных данных»: ему нужно 27,5 px
       ширины на каждый пиксель кегля, и на 360 px под текст остаётся
       247 px — отсюда и 8 px, на грани читаемости.

       Короткий вариант «политикой обработки ПД» просит 18,6 px на
       пиксель кегля, то есть в полтора раза меньше. Замеренный предел
       одной строки: 26 px на 599, 19,7 на 480, 16,2 на 414, 13,3 на 360
       и 11,1 на 320. Кегль сделан плавающим с запасом к этому пределу —
       на 360 px это 11,9 px вместо прежних 8. */
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .zl-consent-label,
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .zl-consent-label * {
        font-size: clamp(10px, 3.3vw, 14px) !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form input.zl-normalized-field:not([type="checkbox"]) {
        height: 52px !important;
        min-height: 52px !important;
        max-height: 52px !important;
        line-height: 50px !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form textarea.zl-normalized-field {
        height: 128px !important;
        min-height: 128px !important;
        max-height: 180px !important;
        line-height: 1.45 !important;
    }
}

/* N-692 (снято 04.09.2026). Здесь стояли 8 px на ≤399 px — единственный
   кегль, при котором ДЛИННЫЙ текст согласия влезал в одну строку.
   После перехода на короткий вариант «политикой обработки ПД»
   надобности в нём нет: плавающий кегль выше держит одну строку
   до 320 px включительно и не опускается ниже 10 px. */

@media (prefers-reduced-motion: reduce) {
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__art-layer {
        animation: none !important;
        transition: none !important;
    }
}

/* ==========================================================
   ПРАВКИ СО СТЕНДА N-660…N-678 (03.09.2026)

   Раздел идёт последним намеренно: правила выше остаются как есть,
   а здесь собраны заказанные отличия. Так видно, что именно попросил
   заказчик и на какой ширине.
   ========================================================== */

/* --- N-678. Подпись всегда по центру кнопки -------------------- */
#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .yellow-button {
    justify-content: center !important;
    text-align: center !important;
    gap: 0 !important;
}

#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .yellow-button__label {
    margin: 0 auto !important;
}

/* --- N-660. На сенсорных экранах детали не разлетаются от касания.

   На телефоне `:hover` залипает после тапа, и анимация разброса
   (сдвиг до 11 % и увеличение 1,08) уводила детали за край картинки.
   Курсора на таких экранах нет — эффект там не нужен. */
@media (hover: none) {
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__art:hover .zt-request__art-layer:not(.zt-request__art-layer--machine),
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__art:hover .zt-request__art-layer--machine {
        animation: none;
        filter: none;
    }
}

/* --- N-666, N-667. Контакты возвращаются под текст «свяжется с вами».

   Ниже 1200 px `zt-home-unify.css` раскрывает обёртку `.zlc-info`
   в `display: contents` и уводит контакты в конец карточки (правка
   N-622). Заказчик просит вернуть их под описание, поэтому от 600 px
   собираем колонку обратно; вес селектора на класс выше, чем у слоя
   унификации. Ниже 600 px разложение остаётся — там контакты нужны
   отдельной строкой над формой (N-662). */
@media (min-width: 600px) {
    #ziptehLeadModule.zt-request.zt-request--home-ref .zlc-card > .zlc-info.zt-request__info {
        display: flex !important;
        flex-direction: column !important;
        min-width: 0;
    }

    /* N-683, N-685: старое `.zlc-intro { align-self: center }» (из
       grid-раскладки) во flex-column центрирует блок по горизонтали —
       возвращаем прижатие к левому краю. */
    #ziptehLeadModule.zt-request.zt-request--home-ref .zlc-card > .zlc-info.zt-request__info > .zlc-intro {
        align-self: flex-start !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__contacts {
        margin-top: 18px !important;
    }

    /* N-666, N-698, N-700: кегль контактов крупнее (было 16, потом 18).
       Селектор с `.zt-request__contacts` — вес выше, чем у общего
       правила CSS модуля для того же диапазона ширин (та же формула
       специфичности, но оно позже в документе и без этого класса
       побеждало бы по порядку). */
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__contacts .zlc-contact__value {
        font-size: 20px !important;
    }
}

/* N-666: на планшете телефон и почта идут двумя строками — колонка
   текста там узкая, рядом стоит техника.

   N-707 (04.09.2026): диапазон сужен до 768–899 px. Ниже 768 карточка
   становится одноколоночной, текст занимает всю её ширину, и тесноты,
   ради которой вводился перенос, там уже нет: на 600 px под контакты
   остаётся 503 px при нужных ~362. Заказчик попросил вернуть одну
   строку — возвращаем ровно на 600–767 px, на 768–899 перенос
   остаётся. */
@media (min-width: 768px) and (max-width: 899px) {
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__contacts {
        flex-direction: column !important;
        gap: 6px !important;
    }
}

/* N-707: 600–767 px — телефон и почта снова в одну строку. */
@media (min-width: 600px) and (max-width: 767px) {
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__contacts {
        flex-direction: row !important;
        flex-wrap: nowrap !important;
        gap: 24px !important;
    }
}

/* --- N-706. Телефон (≤599 px): контакты в одну строку, кегль меньше.

   Было: 16 px и две строки. Одна строка при 16 px требует 300 px
   (144 + 130 текста плюс зазор), а под контакты остаётся ширина окна
   минус 81 px: 277 px на 358 px и 239 px на 320 px — не помещается,
   поэтому строки и расходились.

   Стало: кегль плавающий, `clamp(12.5px, 3.4vw, 15px)`. Ширина текста
   пропорциональна кеглю (17,125 px на каждый пиксель кегля), поэтому
   при 12,5 px строка занимает 226 px и умещается даже на 320 px
   с запасом 13 px, а на широком конце диапазона кегль упирается
   в 15 px и не разрастается. */
@media (max-width: 599px) {
    /* N-715, N-716: почта прижата к правому краю. Телефон остаётся
       слева, между ними — всё свободное место строки, а не
       фиксированные 12 px. Зазор оставлен как минимальный: если
       на самой узкой ширине свободного места не окажется,
       ссылки всё равно не слипнутся. */
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__contacts {
        flex-direction: row !important;
        flex-wrap: nowrap !important;
        justify-content: space-between !important;
        gap: 12px !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__contacts .zlc-contact__value {
        font-size: clamp(12.5px, 3.4vw, 15px) !important;
        white-space: nowrap;
    }

/* --- N-662. Телефон: на телефоне контакты — строкой над формой. --- */
    #ziptehLeadModule.zt-request.zt-request--home-ref .zlc-card > .zlc-info.zt-request__info > .zlc-contacts.zt-request__contacts {
        grid-column: 1 !important;
        grid-row: 3 !important;
        margin-top: 0 !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zlc-card > .zlc-form.zt-request__form {
        grid-column: 1 !important;
        grid-row: 4 !important;
    }
}

/* --- N-661, N-665, N-668, N-673, N-675. Примечание об обязательных
   полях — строкой над кнопкой, по левому краю формы. ------------- */
#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .zl-required-note {
    grid-column: 1 / -1 !important;
    grid-row: 3 !important;
    justify-self: start !important;
    align-self: end !important;
    margin: 0 !important;
}

#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .yellow-button {
    grid-row: 4 !important;
}

#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .form-item:has(input[type="checkbox"]),
#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .zl-consent-label {
    grid-row: 4 !important;
}

/* --- N-676. Согласие ближе к кнопке: на широком экране кнопка
   занимает две колонки из четырёх, согласие начинается сразу за ней.

   N-704, N-705 (04.09.2026): примечание об обязательных полях
   переехало из собственной строки в правую половину строки кнопки.
   Было: примечание занимало отдельный ряд над кнопкой во всю ширину
   формы (17 px строки плюс 16 px зазора), согласие стояло по центру
   высоты кнопки. Стало: оба справа от кнопки — примечание прижато
   к её верхнему краю, согласие к нижнему, оба по левому краю своей
   половины. Собственный ряд примечания исчезает, и форма становится
   ниже на 33 px, как и просил заказчик («за счёт этого форму можно
   поджать»).

   По вертикали помещается с запасом: кнопка 58 px, примечание 17 px
   сверху и согласие 23 px снизу — между ними остаётся 18 px. */
@media (min-width: 1500px) {
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .yellow-button {
        grid-column: 1 / 3 !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .form-item:has(input[type="checkbox"]),
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .zl-consent-label {
        grid-column: 3 / -1 !important;
        justify-self: start !important;
        align-self: end !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .zl-required-note {
        grid-column: 3 / -1 !important;
        grid-row: 4 !important;
        justify-self: start !important;
        align-self: start !important;
    }
}

/* Контакты на 1200–1499 px: двумя строками и внизу колонки
   (заказчик, 04.09.2026, снято на 1440 px).

   Колонка текста здесь `display: flex` и прижата к верху карточки
   (`align-self: start`), поэтому под контактами оставалось ~190 px
   пустоты. Растягиваем колонку на всю высоту карточки и отправляем
   контакты вниз через `margin-top: auto` — они встают по нижнему краю
   содержимого карточки, вровень с низом формы. Значение не фиксированное,
   поэтому держится на всей полосе, а не только на 1440 px. */
@media (min-width: 1200px) and (max-width: 1499px) {
    /* Селектор через `.zlc-card >` — вес (1,5,0): блок ниже
       (`@media (max-width: 1499px)`, N-670…N-674) держит
       `align-self: start !important` тем же весом (1,3,0), что
       и обычное правило, и при равном весе выигрывал бы как более
       поздний. */
    #ziptehLeadModule.zt-request.zt-request--home-ref .zlc-card > .zlc-info.zt-request__info {
        align-self: stretch !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zlc-card > .zlc-info.zt-request__info > .zlc-contacts.zt-request__contacts {
        flex-direction: column !important;
        gap: 6px !important;
        margin-top: auto !important;
    }
}

/* --- N-670…N-674. Диапазон 1200–1499: верх колонки текста по верху
   формы, кнопка во всю ширину формы, согласие — отдельной строкой. */
@media (max-width: 1499px) {
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__inner {
        align-items: start !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__info {
        align-self: start !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__art {
        align-self: center !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .zl-required-note {
        grid-column: 1 / -1 !important;
        grid-row: 4 !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .yellow-button {
        grid-column: 1 / -1 !important;
        grid-row: 5 !important;
        max-width: none !important;
        width: 100% !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .form-item:has(input[type="checkbox"]),
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .zl-consent-label {
        grid-column: 1 / -1 !important;
        grid-row: 6 !important;
        justify-self: start !important;
    }
}

/* --- N-664, N-665, N-668, N-669. От 600 до 1199 px согласие стоит
   напротив кнопки, примечание — строкой выше, по левому краю. ---- */
@media (min-width: 600px) and (max-width: 1199px) {
    /* N-695: примечание перенесено вправо, к согласию, вместо строки
       во всю ширину слева. */
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .zl-required-note {
        grid-column: 3 / -1 !important;
        grid-row: 4 !important;
        justify-self: end !important;
        text-align: right;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .yellow-button {
        grid-column: 1 / 3 !important;
        grid-row: 5 !important;
        width: 100% !important;
        max-width: 340px !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .form-item:has(input[type="checkbox"]),
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .zl-consent-label {
        grid-column: 3 / -1 !important;
        grid-row: 5 !important;
        justify-self: start !important;
        align-self: center !important;
    }
}

/* На 600–899 px форма двухколоночная, поэтому кнопка и согласие
   делят её пополам, а не по две колонки из четырёх. */
@media (min-width: 600px) and (max-width: 899px) {
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .yellow-button {
        grid-column: 1 !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .form-item:has(input[type="checkbox"]),
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .zl-consent-label {
        grid-column: 2 !important;
    }

    /* Правка N-695 (выше по файлу) ставит примечание в колонку 3 —
       верно для сеток о четырёх колонках, но здесь их только две.
       Без переопределения грид создавал под примечание НЕЯВНУЮ третью
       колонку и отбирал под неё ширину у первых двух — кнопка (минимум
       240 px) переставала помещаться в свою ячейку (240 против 217.8)
       и заходила на 8 px на согласие. Возвращаем во вторую колонку,
       к согласию, прижатым к правому краю. */
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .zl-required-note {
        grid-column: 2 !important;
    }
}

/* --- ≤599 px: примечание над кнопкой, дальше кнопка и согласие. --- */
@media (max-width: 599px) {
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .zl-required-note {
        grid-column: 1 !important;
        grid-row: 6 !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .yellow-button {
        grid-column: 1 !important;
        grid-row: 7 !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .form-item:has(input[type="checkbox"]),
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .form-area > .zl-consent-label {
        grid-column: 1 !important;
        grid-row: 8 !important;
    }
}

/* --- N-666, N-671, N-677. Техника крупнее и сдвинута влево. ------

   На 3406 px картинка должна занимать столько, сколько остаётся между
   текстом и формой, не залезая на неё: колонка техники снова тянется
   (`1fr`), но у формы есть верхняя граница, поэтому граница между ними
   фиксированная. `justify-self: start` прижимает картинку к левому
   краю колонки — это и есть просимый сдвиг влево. */
/* Сдвиг влево делаем внутри колонки, а не самой колонкой: у `.zt-request__art`
   ширина картинки задана как `min(100%, N)`, и `justify-self: start` на самой
   колонке обнулял бы её — 100 % считались бы от содержимого, а содержимое
   абсолютное. Поэтому прижимаем к левому краю содержимое сетки колонки. */
#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__art {
    justify-items: start !important;
}

@media (min-width: 1500px) {
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__inner {
        /* N-708: первая колонка расширена с 420 до 500 px под более
           крупный оффер. */
        grid-template-columns: minmax(320px, 500px) minmax(240px, 1fr) minmax(520px, 820px) !important;
    }

    /* Раскладка техники из редактора. Заказчик выставил её отдельно
       на 1861 и на 1920 px, значения разные — полоса от 1500 px
       разрезана надвое ниже, в отдельных медиазапросах. Здесь
       остаётся только общее: ширина 380 px. */
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__art-picture {
        width: 380px !important;
    }
}

@media (min-width: 1200px) and (max-width: 1499px) {
    /* N-681, N-682, N-701: минимум колонки техники поднят с 240
       до 300 px — забираем разницу у формы (минимум 420 → 380 px,
       максимум не менялся). На 1200 px, самой тесной точке диапазона,
       суммы минимумов трёх колонок впритык хватает в доступную ширину
       карточки (1037 px) — с запасом 17 px на рост; выше по ширине
       запас растёт, и первой получает его текст (до 340 px, нужно
       для двух строк оффера капсом), второй — форма. */
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__inner {
        /* Проверка 04.09.2026: на 1278 px картинка так и осталась 300 px
           вместо запрошенного увеличения (N-701). Причина — порядок
           раздачи свободного места в гриде: сначала до своих максимумов
           дорастают НЕрезиновые колонки (текст и форма), и только остаток
           уходит резиновой (техника, `1fr`). Форма с максимумом 520 px
           съедала весь остаток. Опускаем её максимум до 420 px — техника
           получает ~355 px на 1278 px и до 560 px на 1499 px. */
        /* N-709: потолок колонки текста поднят с 340 до 420 px —
           под более крупный оффер и чтобы на 1200 px он держал
           две строки. Технике здесь нужно 286 px (картинка 449 px
           со сдвигом −163), её минимума 300 px хватает. */
        grid-template-columns: minmax(300px, 420px) minmax(300px, 1fr) minmax(380px, 420px) !important;
    }

}

/* ----------------------------------------------------------
   Наведение: детали не заезжают под форму (заказчик, 04.09.2026).
   ----------------------------------------------------------
   При наведении на технику каждая деталь делает рывок и возвращается.
   Смещение задано в процентах ШИРИНЫ КАРТИНКИ, а не в пикселях,
   и у деталей правой стороны оно направлено вправо — как раз в сторону
   формы. Больше всех уходят «крепления»: сдвиг 11 % плюс увеличение
   1.08, которое отодвигает их ещё на ~3 % (деталь лежит на 89 % ширины
   холста, при увеличении от центра она едет от него). Итого около 15 %
   ширины картинки — 57 px при картинке 380 px.

   Замер зазора от картинки до формы (в процентах её ширины):
   63 % на 2560, 27 % на 1920, 23 % на 1861, но всего 7,6 % на 1700,
   7,1 % на 1600, 6,8 % на 1500 и 6,3 % на 1360 — там 15 % хода
   и загоняли деталь под форму. Форма лежит выше по слою, поэтому
   деталь не перекрывала её, а пропадала под белым листом.

   Ход НЕ УКОРОЧЕН, а РАЗВЁРНУТ. Первая версия правки просто резала
   смещение (11 % → 2 %) и увеличение (1.08 → 1.03), но поворот
   оставался прежним, −6°. Получилось, что деталь почти не едет,
   а проворачивается на месте — заказчик сразу сказал, что анимация
   стала дёрганой. Теперь амплитуда прежняя, а направление другое:
   детали правой стороны уходят вниз-влево, а не вправо. Увеличение
   возвращено близко к исходному (1.06 против 1.08), чтобы
   сохранилось «дыхание».

   Расчёт хода вправо после правки (положение детали на холсте плюс
   смещение и увеличение от центра): «крепления» −3,6 %, «шарнир»
   −2,6 %, «цилиндр» −1,9 % — все три уезжают ОТ формы, а не к ней,
   поэтому зазор в 6,3 % на самой тесной ширине не имеет значения.

   Детали левой стороны («шестерня» и «подшипник») не трогаем:
   они и так уезжают от формы.

   Только ПК: ниже 1200 px техника стоит НАД формой, а не рядом,
   и вправо ехать некуда.
   ---------------------------------------------------------- */
@media (min-width: 1200px) {
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__art-layer--mounts {
        --zt-art-hover-peak: translate3d(-6%, 9%, 0) rotate(-6deg) scale(1.06);
        --zt-art-hover-mid: translate3d(-1.6%, 2.4%, 0) rotate(-2deg) scale(1.015);
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__art-layer--joint {
        --zt-art-hover-peak: translate3d(-4%, 9%, 0) rotate(6deg) scale(1.06);
        --zt-art-hover-mid: translate3d(-1%, 2.4%, 0) rotate(2deg) scale(1.015);
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__art-layer--cylinder {
        --zt-art-hover-peak: translate3d(-2%, 9%, 0) rotate(-5deg) scale(1.06);
        --zt-art-hover-mid: translate3d(-.5%, 2.2%, 0) rotate(-1deg) scale(1.015);
    }
}

/* ----------------------------------------------------------
   Техника от 1500 px: полоса разрезана надвое (04.09.2026).
   ----------------------------------------------------------
   Заказчик выставил положение отдельно на 1861 и на 1920 px.
   Ширина в обоих случаях одна — 380 px, различается сдвиг:
   −99 px на 1861 против −56 на 1920.

   Причина разницы понятна из замеров: начало колонки техники
   от левого края карточки практически не двигается (560–571 px
   на всём диапазоне 1700–2560), а вот её ШИРИНА меняется сильно —
   240 px на 1700, 338 на 1861, 393 на 1920, 530 на 2560. При
   одном и том же сдвиге техника на узком конце подходит вплотную
   к форме, и заказчик отодвигал её левее, чтобы сохранить зазор.

   Граница — 1890 px, примерно посередине между двумя снятыми
   ширинами (колонка там около 365 px против 338 на 1861 и 374
   на 1900).

   В обеих половинах сдвиг ограничен шириной колонки через `min`:
   ниже 1800 px колонка сжимается до своего минимума 240 px,
   и без ограничителя техника заезжала бы на форму.
   ---------------------------------------------------------- */
@media (min-width: 1500px) and (max-width: 1889px) {
    /* Снято на 1861 px. */
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__art-picture {
        margin-left: min(-99px, calc(100% - 380px)) !important;
        margin-top: -28px !important;
    }
}

@media (min-width: 1890px) {
    /* Снято на 1920 px. */
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__art-picture {
        margin-left: min(-56px, calc(100% - 380px)) !important;
        margin-top: -26px !important;
    }
}

/* ----------------------------------------------------------
   Техника на 1200–1499 px: полоса разрезана надвое (04.09.2026).
   ----------------------------------------------------------
   Заказчик выставил положение отдельно на 1280 и на 1440 px, и они
   разные. Редактор «Техника» хранит ОДНУ запись на диапазон, поэтому
   второе сохранение затирало первое; в CSS раскладываем их по своим
   половинам.

   Граница — 1360 px. Она не произвольная: вариант с 1440 px (картинка
   491 px со сдвигом −146) требует колонки не уже 345 px, а колонка
   техники держится на своём минимуме 300 px до ~1300 px и дальше
   растёт — 333 px на 1340, 353 на 1360, 391 на 1400, 430 на 1440.
   То есть 1360 px — первая контрольная ширина, где вариант с 1440
   помещается без поправок (запас 8 px).
   ---------------------------------------------------------- */
@media (min-width: 1200px) and (max-width: 1359px) {
    /* Снято на 1280 px. Правый край картинки — 249 px от начала
       колонки при её минимуме 300 px, помещается на всей половине. */
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__art-picture {
        width: 425px !important;
        margin-left: -176px !important;
        margin-top: 11px !important;
    }
}

@media (min-width: 1360px) and (max-width: 1499px) {
    /* Снято на 1440 px. Правый край — 345 px от начала колонки;
       колонка здесь от 353 px, помещается на всей половине. */
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__art-picture {
        width: 491px !important;
        margin-left: -146px !important;
        margin-top: -32px !important;
    }
}

@media (min-width: 900px) and (max-width: 1199px) {
    /* Раскладка техники из редактора (заказчик, 04.09.2026, второй
       заход): ширина 252 px, сдвиг 44 px влево и 37 px вверх. Правый
       край приходится на 208 px от начала колонки при её ширине
       200–300 px — внутри на всём диапазоне, ограничивать нечего. */
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__art-picture {
        width: 252px !important;
        margin-left: -44px !important;
        margin-top: -37px !important;
    }
}

/* Диапазон 600–767 px карточка одноколоночная (см. блок ≤767 px выше),
   поэтому здесь меняем только размер картинки, не трогая сетку карточки:
   иначе двухколоночная сетка возвращалась бы, и форма ужималась вдвое. */
@media (min-width: 600px) and (max-width: 767px) {
    /* N-686, N-693: было 320, потом 440, потом 560 px.
       04.09.2026 — раскладка из редактора «Техника», второй заход:
       242 px, сдвиг 409 px вправо и 201 px вверх. Техника стала
       небольшой и ушла вправо-вверх, к правому краю карточки.

       Сдвиг вправо ограничен свободным местом: карточка здесь
       одноколоночная, и под технику остаётся от 505 px на 600 px окна
       до 673 px на 767 px. Заданные 409 px помещаются на 651 px окна
       и выше; ниже `clamp` даёт ровно столько, сколько есть, и картинка
       упирается в правое поле карточки, а не вылезает за него. */
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__art-picture {
        width: min(100%, 242px) !important;
        margin-left: clamp(0px, calc(100% - 242px), 409px) !important;
        margin-top: -201px !important;
    }

    /* N-693: техника приподнята — стрела заходит в пространство под
       текстом описания, не перекрывая его (запас — 20 px). */
    #ziptehLeadModule.zt-request.zt-request--home-ref .zlc-card > .zt-request__art {
        margin-top: -34px !important;
    }

    /* N-694: согласие в одну строку.

       Проверка 04.09.2026 показала, что фиксированные 10 px держат одну
       строку ровно на 767 px, где правка и снималась, а ниже строка
       снова переносится: согласие занимает половину ширины формы, и она
       сжимается вместе с картой (298 px на 767 px против 220 px на 600).
       Замер порога: одна строка держится при кегле не больше 10,3 px на
       767 px, 9,1 на 700 и 8,4 на 650. Отсюда плавный кегль вместо
       фиксированного — 1,25vw в границах 8-10 px. Ниже ~620 px строка
       всё же переносится: там порог уходит за 7,6 px, а это уже
       нечитаемо. */
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .zl-consent-label,
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .zl-consent-label * {
        font-size: clamp(8px, 1.25vw, 10px) !important;
    }
}

@media (min-width: 768px) and (max-width: 899px) {
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__inner {
        grid-template-columns: minmax(0, 1fr) minmax(200px, 260px) !important;
    }

    /* Тот же приём, что и для 600-767 (N-694): своего кегля у согласия
       здесь не было, оставались 12 px из общего CSS модуля, и строка
       переносилась везде, кроме самой широкой точки диапазона. Порог
       одной строки: 12,5 px на 899, 11,8 на 860, 10,2 на 768. */
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .zl-consent-label,
    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .zl-consent-label * {
        font-size: clamp(10px, 1.3vw, 12px) !important;
    }

    #ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__art-picture {
        width: min(100%, 260px) !important;
    }
}


/* ----------------------------------------------------------
   Согласие в одну строку (указание заказчика 07.09.2026:
   «на 1920 согласие с политикой обработки ПД должно быть в 1 строку»,
   «размер шрифта должен быть одинаковым», «по расположению так же,
   как и было»).
   ----------------------------------------------------------
   Первая редакция уводила согласие на отдельную строку во всю ширину
   формы — расположение менялось, и заказчик это отклонил. Причина
   переноса оказалась не в тесноте ячейки, а в кегле.

   Замер на 1920 px до правки:

     сноска «* — обязательные поля»   12 px
     звёздочка в ней                  14 px
     метка согласия                   13 px
     текст «Согласен с»               12 px
     ССЫЛКА «политикой обработки…»    16 px   <- вот из-за чего перенос

   Шестнадцать пикселей у ссылки — не замысел, а `* { font-size: 16px }`
   из reset.css: у вложенного <span> своего кегля не было, и наследование
   от метки до него не доходило. Строка из-за этого требовала 463 px
   при 371 доступных.

   Приводим всю группу к 12 px — тогда строка укладывается в прежнюю
   ячейку, и ни сетку, ни порядок блоков трогать не нужно.
   ---------------------------------------------------------- */
#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .zl-consent-label,
#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .zl-consent-copy,
#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .zl-consent-link,
#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .zl-consent-full,
#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .zl-consent-short,
#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .zl-required-note,
#ziptehLeadModule.zt-request.zt-request--home-ref .zt-request__form .zl-required-note .starrequired {
    font-size: 12px !important;
    line-height: 1.4 !important;
}
