/* =========================================================
   ZIPTEH — модуль «Поиск запчастей» на главной (#ztPartsSearch).

   14.09.2026, указание заказчика: «на главной сделать модуль поиск
   запчастей такой же как в результатах поиска 1в1, вывести его
   отдельной категорией под баннерами».

   Модуль — тот же, что в выдаче /search/: разметка блока
   .zt-advanced-search взята из шаблона catalog.search/search/template.php,
   базовые стили и поведение — те же файлы search-advanced.css
   и search-advanced.js, подключает их /local/include/main/parts-search.php.

   Здесь — только то, чего на главной нет:
   1. правила #poisk-results … из catalog-grid.css (исходник —
      Редизайн/Инструменты/catalog-grid.tail.css). В выдаче они
      переоформляют модуль, но catalog-grid.css на главную
      не подключается. Идентификатор #poisk-results заменён на
      #ztPartsSearch — вес правил тот же, значения и порядок
      перенесены один в один;
   2. заголовок «ПОИСК ЗАПЧАСТЕЙ» — по шкале заголовков секций
      главной, как «Категории запчастей» (указание заказчика);
   3. отступ секции — шкала главной 80 / 64 / 48 (zt-home-unify.css).

   Отличия от выдачи — по указаниям заказчика 14.09.2026 к модулю
   на главной (блок «Отличия от выдачи» в конце файла): карточка без
   рамки и без жёлтых линий (макет «01 — Карточка без рамки»), вкладки —
   плашки, выбранная жёлтая с белыми текстом и значком; на телефоне
   вкладки отделены от формы отступом; свои иконки вкладок (26 px,
   на телефоне 22) с анимацией как в шапке, значки — в разметке
   parts-search.php; на наведении вкладка желтеет вместе со значком.

   ⚠️ Меняете оформление модуля в выдаче поиска — повторите здесь.
   ========================================================= */


/* ---------------------------------------------------------
   Секция: отдельный блок под баннерами, ширина — по шапке
   (.zt-shell внутри), вертикальный ритм — как у соседей.
   --------------------------------------------------------- */

#ztPartsSearch {
    display: block;
    margin: 80px 0 0;
    padding: 0;
}

@media (max-width: 1024px) {
    #ztPartsSearch {
        margin-top: 64px;
    }
}

@media (max-width: 767px) {
    #ztPartsSearch {
        margin-top: 48px;
    }
}


/* ---------------------------------------------------------
   Заголовок — как у остальных секций главной.

   Указание заказчика 14.09.2026: «размер шрифта „Поиск запчастей“
   должен совпадать с шрифтом и кеглем других заголовков». Сначала
   заголовок повторял H1 выдачи (38 px / 750 / #171d24) и выбивался
   из главной. Теперь — шкала заголовков секций главной
   (zt-home-unify.css:60-123, по ней идут «Категории запчастей»
   и «Производители»): токен --zt-h2-size — 32 px, до 1023 px — 28,
   до 640 px — 22; 700, интерлиньяж 1,2, трекинг −0,01em, --zt-ink;
   отступ до модуля 20 px, на телефоне 14. Гарнитура — роль заголовков
   сайта (Russo One, zt-redesign.css:1727). Верхнего отступа нет:
   его даёт секция.
   --------------------------------------------------------- */

#ztPartsSearch .zt-parts-search__title {
    margin: 0 0 20px;
    padding: 0;
    color: var(--zt-ink, #333a43);
    font-size: var(--zt-h2-size, 32px);
    font-weight: 700;
    line-height: 1.2;
    letter-spacing: -.01em;
    text-transform: uppercase;
}

@media (max-width: 1023px) {
    #ztPartsSearch .zt-parts-search__title {
        font-size: var(--zt-h2-size-md, 28px);
    }
}

@media (max-width: 640px) {
    #ztPartsSearch .zt-parts-search__title {
        margin-bottom: 14px;
        font-size: var(--zt-h2-size-sm, 22px);
    }
}


/* ---------------------------------------------------------
   Режим страницы — отдельная страница поиска /poisk/ (15.09.2026).

   Указание заказчика: «сделать отдельную страницу поиска, где будет
   только поиск, — она будет подвязываться к нижнему меню, к значку
   поиска». Модуль стоит внутри .container внутренней страницы, под
   крошками и H1 шаблона (header.php): отступа секции нет, своего
   заголовка нет. H1 страницы оформлен как в выдаче /search/ —
   капс, целая строка 44 px, до модуля 23 px (catalog-grid.tail.css,
   блоки заголовка страницы поиска); боковые поля у заголовка сняты,
   как там же.
   --------------------------------------------------------- */

#ztPartsSearch.zt-parts-search--page {
    margin: 0;
}

/* Нижнее поле модуля (24 px, search-advanced.css:9) здесь лишнее:
   под модулем сразу кончается область страницы. Без него от модуля
   до CTA 130 px — как от содержимого до CTA на других внутренних
   страницах (поле области 50 + отступ CTA 80); с ним было 154. */
#ztPartsSearch.zt-parts-search--page .zt-advanced-search {
    margin-bottom: 0;
}

/* От крошек до заголовка — 24 px, на телефоне 18, как в выдаче;
   у остальных внутренних страниц 20. */
body:has(#ztPartsSearch.zt-parts-search--page) .zt-page-heading {
    margin-top: 24px !important;
    margin-bottom: 23px !important;
    padding-right: 0 !important;
    padding-left: 0 !important;
    line-height: 44px;
    text-transform: uppercase;
}

@media (max-width: 680px) {
    body:has(#ztPartsSearch.zt-parts-search--page) .zt-page-heading {
        margin-top: 18px !important;
    }
}


/* =========================================================
   Дальше — правила выдачи поиска из catalog-grid.tail.css,
   #poisk-results → #ztPartsSearch. Комментарии сокращены,
   полные — в исходнике.
   ========================================================= */

/* Крестик очистки поля — как в строке поиска шапки. */

#ztPartsSearch .zt-advanced-search__single input {
    padding-right: 38px;
}

#ztPartsSearch .zt-advanced-search__clear {
    right: 16px;
    width: 14px;
    height: 14px;
    color: transparent;
    background: none;
    border: 0;
    border-radius: 0;
}

#ztPartsSearch .zt-advanced-search__clear svg {
    display: none;
}

#ztPartsSearch .zt-advanced-search__clear::before {
    content: "";
    display: block;
    width: 14px;
    height: 14px;
    background-color: var(--zt-header-accent, #ffb800);
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6 6 18 18M18 6 6 18' stroke='%23000' stroke-width='2.6' stroke-linecap='round' fill='none'/%3E%3C/svg%3E") center / contain no-repeat;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6 6 18 18M18 6 6 18' stroke='%23000' stroke-width='2.6' stroke-linecap='round' fill='none'/%3E%3C/svg%3E") center / contain no-repeat;
}

#ztPartsSearch .zt-advanced-search__clear:hover::before,
#ztPartsSearch .zt-advanced-search__clear:focus-visible::before {
    background-color: var(--zt-brand-hover, var(--zt-header-accent, #ffb800));
}


/* Обводка фокуса: по мыши и касанию кольца нет, с клавиатуры —
   фирменное жёлтое. */

#ztPartsSearch .zt-advanced-search :focus:not(:focus-visible),
#ztPartsSearch .zt-advanced-search__batch-tools :focus:not(:focus-visible) {
    outline: none !important;
    box-shadow: none;
}

#ztPartsSearch .zt-advanced-search__tab:focus-visible,
#ztPartsSearch .zt-advanced-search__submit:focus-visible,
#ztPartsSearch .zt-advanced-search__clear:focus-visible,
#ztPartsSearch .zt-advanced-search__dropzone:focus-visible,
#ztPartsSearch .zt-advanced-search__dropzone button:focus-visible,
#ztPartsSearch .zt-advanced-search__examples button:focus-visible,
#ztPartsSearch .zt-advanced-search input:focus-visible,
#ztPartsSearch .zt-advanced-search textarea:focus-visible {
    outline: 2px solid #ffb800 !important;
    outline-offset: 2px;
}


/* Поле — обводка как в строке поиска шапки. */

#ztPartsSearch .zt-advanced-search__single input,
#ztPartsSearch .zt-advanced-search__batch textarea {
    border: 1px solid #dfe3e8;
    border-radius: 8px;
}

#ztPartsSearch .zt-advanced-search__single input:focus,
#ztPartsSearch .zt-advanced-search__batch textarea:focus {
    border-color: var(--zt-header-accent, #ffb800);
    box-shadow: 0 0 0 3px rgba(255, 184, 0, .22);
}


/* Общесайтовое синее кольцо zt-home-unify.css идёт с !important —
   повторяем жёлтое с приоритетом (в выдаче — #poisk-results :focus-visible). */

#ztPartsSearch :focus-visible {
    outline: 2px solid #ffb800 !important;
    outline-offset: 2px;
}

/* Без серой вспышки при касании на телефоне — в выдаче её снимает
   `#poisk-results { -webkit-tap-highlight-color: transparent }`
   (catalog-grid.css, блок «Синяя рамка при нажатии»). */

#ztPartsSearch {
    -webkit-tap-highlight-color: transparent;
}


/* Кнопки — по образцу кнопок шапки: Tektur 15/700 капсом. */

#ztPartsSearch .zt-advanced-search__submit:not(#zt_):not(#zt_),
#ztPartsSearch .zt-advanced-search__dropzone button:not(#zt_):not(#zt_) {
    font-family: var(--zt-font, "Tektur", "Inter", "PT Sans Caption", system-ui, Arial, sans-serif) !important;
    font-size: 15px !important;
    font-weight: 700 !important;
    text-transform: uppercase;
    letter-spacing: .16px;
    border-radius: 8px;
}

#ztPartsSearch .zt-advanced-search__submit {
    gap: 10px;
    background: var(--zt-header-accent, #ffb800);
    border: 1px solid var(--zt-header-accent, #ffb800);
    color: #1a1a1a;
}

#ztPartsSearch .zt-advanced-search__submit svg {
    display: none;
}


/* Одна жёлтая обводка вместо двух: у поля в фокусе — рамка
   с подсветом, кольцо снимаем. */

#ztPartsSearch .zt-advanced-search__single input:focus,
#ztPartsSearch .zt-advanced-search__single input:focus-visible,
#ztPartsSearch .zt-advanced-search__batch textarea:focus,
#ztPartsSearch .zt-advanced-search__batch textarea:focus-visible {
    outline: none !important;
}


/* Подпись кнопки не переносится: колонка по содержимому,
   240 px — минимум. */

@media (min-width: 981px) {
    #ztPartsSearch .zt-advanced-search__form {
        grid-template-columns: minmax(0, 1fr) auto;
    }

    #ztPartsSearch .zt-advanced-search__submit {
        width: auto;
        min-width: 240px;
        white-space: nowrap;
    }
}


/* Подпись кнопки — по центру. */

#ztPartsSearch .zt-advanced-search__submit {
    justify-content: center;
}


/* Вкладки — той же гарнитурой, что кнопки. */

#ztPartsSearch .zt-advanced-search__tab:not(#zt_):not(#zt_) {
    font-family: var(--zt-font, "Tektur", "Inter", "PT Sans Caption", system-ui, Arial, sans-serif) !important;
    font-size: 15px !important;
    font-weight: 700 !important;
    text-transform: uppercase;
    letter-spacing: .16px;
}


/* Массовый поиск: поле загрузки файла — серая заливка. */

#ztPartsSearch .zt-advanced-search__dropzone {
    background: #f7f8fa;
}


/* Счётчик артикулов — как метка «О компании «ЗИПТЕХ СЕРВИС»». */

#ztPartsSearch .zt-advanced-search__batch-bar [data-search-batch-count] {
    padding: 7px 11px;
    color: var(--zt-header-accent, #ffb800);
    background: transparent;
    border: 1px solid var(--zt-header-accent, #ffb800);
    border-radius: 8px;
    font-family: var(--zt-font-btn, "Manrope", "Inter", "PT Sans Caption", system-ui, Arial, sans-serif) !important;
    font-size: 12px !important;
    font-weight: 700 !important;
    letter-spacing: .96px;
    text-transform: uppercase;
}


/* Одна жёлтая линия: рамка обводит тело модуля, активная
   вкладка — язычок, приросший к ней сверху. */

#ztPartsSearch .zt-advanced-search {
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
    overflow: visible;
}

#ztPartsSearch .zt-advanced-search__tabs {
    padding: 0;
    background: transparent;
    border-bottom: 0;
}

#ztPartsSearch .zt-advanced-search__tab {
    border-right: 0;
}

#ztPartsSearch .zt-advanced-search__tab.is-active::after {
    display: none;
}

#ztPartsSearch .zt-advanced-search__tab.is-active {
    position: relative;
    z-index: 2;
    box-sizing: border-box;
    margin-bottom: -1px;
    background: #fff;
    border: 1px solid var(--zt-header-accent, #ffb800);
    border-bottom: 0;
    border-radius: 10px 10px 0 0;
}

#ztPartsSearch .zt-advanced-search__body {
    position: relative;
    background: #fff;
    border: 1px solid var(--zt-header-accent, #ffb800);
    border-radius: 14px;
    box-shadow: 0 8px 28px rgba(25, 38, 52, .06);
}

/* Ниже 700 px вкладки в две строки — активная обведена по кругу. */

@media (max-width: 700px) {
    #ztPartsSearch .zt-advanced-search__tabs {
        gap: 6px;
    }

    #ztPartsSearch .zt-advanced-search__tab.is-active {
        margin-bottom: 0;
        border: 1px solid var(--zt-header-accent, #ffb800);
        border-radius: 10px;
    }
}

/* Стык язычка и тела без излома. */

@media (min-width: 701px) {
    #ztPartsSearch .zt-advanced-search__tab.is-active {
        border-radius: 14px 14px 0 0;
    }

    #ztPartsSearch .zt-advanced-search:has(.zt-advanced-search__tab:first-child.is-active) .zt-advanced-search__body {
        border-top-left-radius: 0;
    }

    #ztPartsSearch .zt-advanced-search:has(.zt-advanced-search__tab:last-child.is-active) .zt-advanced-search__body {
        border-top-right-radius: 0;
    }
}


/* Активная вкладка залита фирменным жёлтым, подпись и значок #1a1a1a. */

#ztPartsSearch .zt-advanced-search__tab.is-active,
#ztPartsSearch .zt-advanced-search__tab.is-active:hover {
    background: var(--zt-header-accent, #ffb800);
    border-color: var(--zt-header-accent, #ffb800);
    color: #1a1a1a;
}

#ztPartsSearch .zt-advanced-search__tab.is-active svg {
    color: #1a1a1a;
    stroke: currentColor;
}

#ztPartsSearch .zt-advanced-search__tab.is-active,
#ztPartsSearch .zt-advanced-search__tab.is-active:hover {
    background: #ffb800 !important;
    border-color: #ffb800 !important;
    color: #1a1a1a !important;
}

#ztPartsSearch .zt-advanced-search__tab.is-active svg {
    color: #1a1a1a !important;
    stroke: currentColor !important;
}

#ztPartsSearch .zt-advanced-search__tab.is-active:not(#zt_):not(#zt_),
#ztPartsSearch .zt-advanced-search__tab.is-active:not(#zt_):not(#zt_):hover {
    background: #ffb800 !important;
    border-color: #ffb800 !important;
    color: #1a1a1a !important;
}

#ztPartsSearch .zt-advanced-search__tab.is-active:not(#zt_):not(#zt_) svg {
    color: #1a1a1a !important;
    stroke: currentColor !important;
}


/* Подписи вкладок на мобильных мельче: 12 px без трекинга. */

@media (max-width: 700px) {
    #ztPartsSearch .zt-advanced-search__tab:not(#zt_):not(#zt_) {
        font-size: 12px !important;
        letter-spacing: 0 !important;
    }
}


/* =========================================================
   Отличия от выдачи — указания заказчика 14.09.2026
   к модулю на главной. Всё, что выше, — зеркало выдачи;
   здесь только то, чем главная от неё отличается.
   ========================================================= */

/* 1. Карточка без рамки — макет заказчика «01 — Карточка без рамки»:
   «по механике кнопок оставляем, а дизайн делаем такой, а то слишком
   много жёлтых линий» (14.09.2026).

   В выдаче жёлтых линий три: рамка тела с формой, язычок выбранной
   вкладки и рамка поля в фокусе, а поле получает фокус после каждого
   переключения вкладки (так устроен search-advanced.js). Здесь модуль —
   белая карточка с мягкой тенью и без единой линии: у тела нет рамки,
   вкладки — плашки внутри карточки, выбранная — жёлтая, скруглена
   со всех сторон и отступает от краёв карточки. Жёлтыми остаются
   только выбранная вкладка и кнопка «Найти».

   Пропорции сняты с макета: плашки вкладок одной высоты с полем (56 px),
   отступ ряда вкладок от краёв карточки 14 px, между плашками 10 px,
   поле отступает от края карточки на 22 px, между вкладками и полем 20 px.
   Отменяет прежний вариант с жёлтой рамкой вокруг модуля и язычком. */

#ztPartsSearch .zt-advanced-search {
    background: #fff;
    border: 0;
    border-radius: 16px;
    box-shadow: 0 2px 10px rgba(25, 38, 52, .05), 0 12px 32px rgba(25, 38, 52, .06);
}

#ztPartsSearch .zt-advanced-search__tabs {
    min-height: 0;
    padding: 14px 14px 0;
    gap: 10px;
}

#ztPartsSearch .zt-advanced-search__tab {
    min-height: 56px;
    border: 0;
    border-radius: 10px;
}

#ztPartsSearch .zt-advanced-search__tab.is-active {
    margin: 0;
    border: 0;
    border-radius: 10px;
}

#ztPartsSearch .zt-advanced-search__body {
    padding: 20px 22px;
    background: transparent;
    border: 0;
    border-radius: 0;
    box-shadow: none;
}

/* Поле: рамка серая и в фокусе — темнее, без жёлтого. */

#ztPartsSearch .zt-advanced-search__single input:focus,
#ztPartsSearch .zt-advanced-search__batch textarea:focus {
    border-color: #9aa3ad;
    box-shadow: 0 0 0 3px rgba(29, 39, 51, .06);
}

/* Массовый поиск — тот же принцип: пунктир зоны загрузки, рамка её
   значка и счётчик артикулов были жёлтыми, стали серыми. */

#ztPartsSearch .zt-advanced-search__dropzone {
    border-color: #cfd6dd;
}

#ztPartsSearch .zt-advanced-search__dropzone:hover,
#ztPartsSearch .zt-advanced-search__dropzone.is-dragging {
    background: #f2f4f6;
    border-color: #9aa3ad;
}

#ztPartsSearch .zt-advanced-search__drop-icon {
    color: #1d2733;
    border-color: #e1e6ea;
}

#ztPartsSearch .zt-advanced-search__batch-bar [data-search-batch-count] {
    color: #1d2733;
    background: #fff;
    border-color: #dfe3e8;
}

/* Телефон: те же плашки 2 × 2 без разделительных линий, карточка
   плотнее. Между вкладками и полем 14 px — указание заказчика
   «в мобильной версии должен быть отступ от формы и типа поиска». */

@media (max-width: 700px) {
    #ztPartsSearch .zt-advanced-search {
        border-radius: 14px;
    }

    #ztPartsSearch .zt-advanced-search__tabs {
        padding: 10px 10px 0;
        gap: 6px;
    }

    #ztPartsSearch .zt-advanced-search__tab {
        min-height: 48px;
    }

    #ztPartsSearch .zt-advanced-search__body {
        padding: 14px 14px 16px;
    }
}

/* 2. «При выделении пункта поиска цвет текста и значка должны быть
   белыми». В выдаче — #1a1a1a. Селектор — тот же, что у правила
   выше (вес 3-2-0 с !important): стоит позже и поэтому главнее.
   Контраст белого на #ffb800 — 1,9 : 1, ниже нормы WCAG; сделано
   по прямому указанию, как у кнопок подменю шапки (07.09.2026). */

#ztPartsSearch .zt-advanced-search__tab.is-active:not(#zt_):not(#zt_),
#ztPartsSearch .zt-advanced-search__tab.is-active:not(#zt_):not(#zt_):hover {
    color: #fff !important;
}

#ztPartsSearch .zt-advanced-search__tab.is-active:not(#zt_):not(#zt_) svg {
    color: #fff !important;
    stroke: currentColor !important;
}

/* 3. «В мобильной версии должен быть отступ от формы и типа поиска» —
   теперь это верхнее поле тела формы на телефоне (14 px, пункт 1). */

/* 4. «Иконки тоже должны быть белыми». Белый ставился на сам <svg>,
   а линии значка его не получали: reset.css:1 задаёт
   `* { color: var(--black) }` каждому элементу, в том числе <path>
   и <circle>, и их `stroke: currentColor` брал тёмный. Детали значка
   теперь наследуют цвет иконки — белый у выбранной вкладки, жёлтый
   при наведении на остальные. В выдаче та же причина: там линии
   значка --black вместо задуманного #1a1a1a, на глаз не отличить. */

#ztPartsSearch .zt-advanced-search__tab svg * {
    color: inherit;
}

/* 5. Иконки вкладок — по образцам заказчика 14.09.2026 (штрихкод
   в рамке, розетка с галочкой, строки с лупой, список с лупой; сами
   значки — в разметке parts-search.php). Анимация — как у пунктов
   меню в шапке (header-polish.css:331-420, 2701-2875): при наведении
   и фокусе с клавиатуры значок один раз коротко двигается, у невыбранных
   вкладок заодно желтеет и получает мягкую тень. Кривые и длительности
   взяты у шапки: «прыжок» домика — артикулу, покачивание бейджа
   «Производители» — производителю, проезд грузовика — поиску
   по названию, наклон «Узлов и агрегатов» — массовому поиску. */

/* «Нужно сделать иконки больше»: 20 → 26 px, на телефоне → 22 px.
   Линия тоньше в единицах сетки (1,9 → 1,5), чтобы в пикселях она
   осталась прежней (~1,6 px) — крупный значок не тяжелеет. */

#ztPartsSearch .zt-advanced-search__tab svg {
    width: 26px;
    height: 26px;
    flex: 0 0 26px;
    stroke-width: 1.5;
    transform-origin: 50% 50%;
    transition: color .18s ease, filter .18s ease;
}

@media (max-width: 700px) {
    #ztPartsSearch .zt-advanced-search__tab svg {
        width: 22px;
        height: 22px;
        flex-basis: 22px;
    }
}

/* «При наведении на пункт поиска чтоб он вместе с иконкой был
   жёлтым»: у невыбранной вкладки на наведении и фокусе с клавиатуры
   желтеют и подпись, и значок (в выдаче подпись темнеет до #1d2733).
   Контраст #ffb800 на белом — 1,9 : 1; по прямому указанию. */

#ztPartsSearch .zt-advanced-search__tab:not(.is-active):hover,
#ztPartsSearch .zt-advanced-search__tab:not(.is-active):focus-visible {
    color: var(--zt-header-accent, #ffb800);
}

#ztPartsSearch .zt-advanced-search__tab:not(.is-active):hover svg,
#ztPartsSearch .zt-advanced-search__tab:not(.is-active):focus-visible svg {
    color: var(--zt-header-accent, #ffb800);
    filter: drop-shadow(0 4px 7px rgba(255, 184, 0, .24));
}

#ztPartsSearch .zt-advanced-search__tab[data-search-type="article"]:hover svg,
#ztPartsSearch .zt-advanced-search__tab[data-search-type="article"]:focus-visible svg {
    animation: zt-parts-search-hop .52s cubic-bezier(.22, .9, .3, 1);
}

#ztPartsSearch .zt-advanced-search__tab[data-search-type="brand"]:hover svg,
#ztPartsSearch .zt-advanced-search__tab[data-search-type="brand"]:focus-visible svg {
    animation: zt-parts-search-badge .56s cubic-bezier(.22, .9, .3, 1);
}

#ztPartsSearch .zt-advanced-search__tab[data-search-type="name"]:hover svg,
#ztPartsSearch .zt-advanced-search__tab[data-search-type="name"]:focus-visible svg {
    animation: zt-parts-search-glide .62s cubic-bezier(.2, .8, .25, 1);
}

#ztPartsSearch .zt-advanced-search__tab[data-search-type="article_batch"]:hover svg,
#ztPartsSearch .zt-advanced-search__tab[data-search-type="article_batch"]:focus-visible svg {
    animation: zt-parts-search-tilt .58s cubic-bezier(.2, .8, .25, 1);
}

@keyframes zt-parts-search-hop {
    0%, 100% { transform: translateY(0) scale(1); }
    42% { transform: translateY(-5px) scale(1.08); }
    70% { transform: translateY(1px) scale(.98); }
}

@keyframes zt-parts-search-badge {
    0%, 100% { transform: translateY(0) rotate(0deg) scale(1); }
    42% { transform: translateY(-3px) rotate(-7deg) scale(1.08); }
    74% { transform: translateY(-1px) rotate(5deg) scale(1.03); }
}

@keyframes zt-parts-search-glide {
    0%, 100% { transform: translateX(0) translateY(0); }
    28% { transform: translateX(-3px) translateY(-1px); }
    68% { transform: translateX(6px) translateY(-1px); }
}

@keyframes zt-parts-search-tilt {
    0%, 100% { transform: translateY(0) rotate(0deg) scale(1); }
    38% { transform: translateY(-4px) rotate(-8deg) scale(1.07); }
    72% { transform: translateY(-1px) rotate(5deg) scale(1.03); }
}

/* 6. «Для кнопки „Найти запчасть“ нужно сделать иконку лупы и чтоб
   она тоже двигалась при наведении» (14.09.2026). Лупа стоит перед
   подписью вместо стрелки выдачи (в выдаче стрелка скрыта правилом
   выше — здесь значок снова показан). Цвет — цвет подписи кнопки:
   reset.css красит и сам <svg>, и его линии в --black, поэтому оба
   наследуют явно. Движение — в том же ключе, что у вкладок: лупа
   «оглядывается» — наклон влево-вверх, затем вправо, и на место. */

#ztPartsSearch .zt-advanced-search__submit svg {
    display: block;
    width: 20px;
    height: 20px;
    flex: 0 0 20px;
    color: inherit;
    stroke-width: 2.2;
    transform-origin: 45% 45%;
}

#ztPartsSearch .zt-advanced-search__submit svg * {
    color: inherit;
}

#ztPartsSearch .zt-advanced-search__submit:hover svg,
#ztPartsSearch .zt-advanced-search__submit:focus-visible svg {
    animation: zt-parts-search-lens .6s cubic-bezier(.2, .8, .25, 1);
}

@keyframes zt-parts-search-lens {
    0%, 100% { transform: translate(0, 0) rotate(0deg) scale(1); }
    32% { transform: translate(-2px, -2px) rotate(-12deg) scale(1.1); }
    66% { transform: translate(2px, 0) rotate(8deg) scale(1.03); }
}

@media (prefers-reduced-motion: reduce) {
    #ztPartsSearch .zt-advanced-search__tab svg,
    #ztPartsSearch .zt-advanced-search__submit svg {
        animation: none !important;
        transition: none;
    }
}
