/* Адаптивна сітка категорій у каталозі.
   Дефолтні стилі в app.min.css заточені під РОВНО 5 категорій (перша широка
   зліва, 2-а і 5-а розтягуються на 2 колонки). Якщо data-count != 5 (наприклад,
   коли категорій менше 5), сітка ламалась — скидаємо хардкод і вмикаємо
   auto-fit-grid. А коли категорій БІЛЬШЕ 5, у PHP перші 5 рендеряться в основну
   сітку з data-count="5" (оригінальний дизайн), а "зайві" — у .catalog__grid--extra
   по 3 в ряд нижче (правила нижче). */
.catalog__grid:not([data-count="5"]):not(.catalog__grid--extra) {
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)) !important;
    grid-template-rows: auto !important;
    max-height: none !important;
}

.catalog__grid:not([data-count="5"]):not(.catalog__grid--extra) > .catalog__grid-item {
    grid-row: auto !important;
    grid-column: auto !important;
}

.catalog__grid:not([data-count="5"]):not(.catalog__grid--extra) > .catalog__grid-item img {
    height: 260px;
    min-height: 260px;
}

/* "Зайві" категорії (6-та і далі) — окрема сітка під основною, по 3 в ряд. */
.catalog__grid--extra {
    grid-template-columns: repeat(3, 1fr) !important;
    grid-template-rows: auto !important;
    max-height: none !important;
    margin-top: 20px;
}

.catalog__grid--extra > .catalog__grid-item {
    grid-row: auto !important;
    grid-column: auto !important;
}

.catalog__grid--extra > .catalog__grid-item img {
    height: 260px;
    min-height: 260px;
}
.menu__list-item:first-child .submenu__item:first-child {
    display: none;
}
@media (max-width: 1280px) {
    .menu__list-item:first-child .submenu__item:first-child {
        display: block;
    }
}
.map-ua,
.map-en {
    width: 100%;
    margin: auto;
}
.map svg text {
    pointer-events: none;
}

/* //////////////////////////////// */
.trp-language-switcher {
    padding: 4px !important;
}
.trp-language-switcher:hover {
    border-color: rgb(74, 44, 33);
}
.trp-language-switcher .trp-current-language-item__wrapper:not(.trp-hide-arrow) {
    padding-right: 0px;
}
.trp-language-switcher .trp-shortcode-arrow {
    width: 20px;
    height: 20px;
    min-width: 20px;
}
.trp-language-switcher .trp-language-item-name {
    font-weight: 600;
    font-size: 20px;
    line-height: 100%;
    padding: 4px;
    width: 100%;
}
.trp-language-switcher .trp-language-item:hover {
    background: rgb(205, 127, 35);
    border-radius: 8px;
}
.trp-language-switcher .trp-switcher-dropdown-list {
    overflow: hidden !important;
}
.trp-language-switcher .trp-language-item {
    width: 100%;
    padding: 7px 0px;
}
@media (max-width: 1280px) {
    .trp-shortcode-switcher {
        background-color: #be9360 !important;
        padding: 4px !important;
    }
    .trp-language-switcher {
        display: flex !important;
    }
    .trp-language-switcher .trp-shortcode-arrow {
        display: none !important;
    }
    .header__group.mobile .trp-language-switcher .trp-switcher-dropdown-list {
        max-height: 100% !important;
    }
    .trp-shortcode-anchor:not(.trp-opposite-button) {
        height: 0;
        position: absolute;
        left: 0;
    }
    .trp-current-language-item__wrapper:not(.trp-hide-arrow) {
        background-color: #552914;
        padding: 0 !important;
        border-radius: 12px;
        color: #f8e1ad !important;
    }
    .trp-current-language-item__wrapper:not(.trp-hide-arrow) .trp-language-item-name {
        color: #f8e1ad !important;
    }
    .trp-language-item {
        padding: 9px 24px !important;
    }
    .trp-shortcode-overlay {
        position: relative !important;
    }

    /* Фіксуємо порядок мов: UA завжди зліва, EN справа, незалежно від активної.
       Детектимо «активний EN» по тому, що в dropdown лежить посилання на UA
       (TranslatePress ставить title="Ukraine" саме на UA-посиланні). */
    .trp-shortcode-overlay:has(.trp-switcher-dropdown-list a[title="Ukraine"])
        .trp-current-language-item__wrapper {
        order: 2;
    }
    .trp-shortcode-overlay:has(.trp-switcher-dropdown-list a[title="Ukraine"])
        .trp-switcher-dropdown-list {
        order: 1;
    }
}

.page-template-about .aboutUs a.button {
    display: none;
}
.contacts__item:last-child {
    background-color: #552914;
}
.contacts__item:last-child .contacts__item-text, .contacts__item:last-child .contacts__item-title {
    color: #f8e1ad;
}
/* ===== Галерея товару: прев'ю під головним зображенням =====
   Раніше прев'ю ініціалізувались як slick із centerMode, і ширина слайда
   рахувалась як (контейнер - centerPadding) / 3 та проставлялась інлайном —
   через це картинки виглядали вузькими. Тепер це звичайний flex-ряд. */
.gallery__thumbs {
    display: flex;
    gap: 20px;
    overflow-x: auto;
    padding: 2px;
    scrollbar-width: none;
}
.gallery__thumbs::-webkit-scrollbar {
    display: none;
}
.gallery__thumb {
    flex: 0 0 calc((100% - 40px) / 3);
    width: auto;
    height: auto;
    max-width: 128px;
    aspect-ratio: 1;
    border: 2px solid transparent;
    border-radius: 16px;
    overflow: hidden;
    cursor: pointer;
    transition: border-color 0.18s;
}
.gallery__thumb img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
}
.gallery__thumb.active,
.gallery__thumb.slick-current {
    border-color: #cd7f23;
}

@media (max-width: 768px) {
    /* Знімаємо full-bleed на 100vw: у макеті прев'ю лишаються в контейнері. */
    .gallery__thumbs {
        position: static;
        left: auto;
        width: 100%;
        margin-left: 0;
        gap: 12px;
    }
    .gallery__thumb {
        flex: 0 0 calc((100% - 24px) / 3);
        max-width: 100px;
    }
}

/* ===== Хлібні крихти: перенос =====
   Обидва рівні — flex без wrap, тому ланцюжок вилазив за екран.
   Без медіазапиту: на широких екранах крихти й так в один рядок. */
.breadcrumbs__item,
.breadcrumbs__list {
    flex-wrap: wrap;
    row-gap: 6px;
}
/* Саме посилання має width: max-content, тож довга назва товару не
   переносилась і обрізалась краєм екрана. */
.breadcrumbs__item-link {
    width: auto;
    white-space: normal;
}

/* ===== Логотипи партнерів =====
   У базових стилях обмежена лише ширина (150px, на мобільних 80px),
   тож високі логотипи розтягувались — додаємо обмеження по висоті. */
.ourPartners__logos-img {
    max-height: 100px;
}

@media (max-width: 992px) {
    /* Той самий брейкпоінт, на якому тема вже звужує логотипи до 80px. */
    .ourPartners__logos-img {
        max-height: 60px;
    }
}

/* ===== Галерея товару: не обрізати високі зображення =====
   .gallery__main — квадрат з overflow:hidden, а у .gallery__main-images
   висота не задана (slick у цій збірці її теж не ставить). Через це
   height:100% у картинки рахувався від авто-висоти, тобто ставав auto:
   вертикальне фото розтягувалось по ширині слайда і зрізалось зверху/знизу.
   Задаємо висоту всьому ланцюжку, щоб object-fit: contain вписував кадр. */
.gallery__main-images,
.gallery__main-images .slick-list,
.gallery__main-images .slick-track,
.gallery__main-images .slick-slide {
    height: 100%;
}
.gallery__main img {
    width: 100%;
    height: 100%;
    object-fit: contain;
}

/* ===== Сітка товарів: висота ряду за його власним вмістом =====
   У базових стилях стоїть grid-template-rows: repeat(3, 1fr), і будь-який
   варіант з 1fr вирівнює ВСІ ряди по найвищому — через один довгий підпис
   товару порожнє місце зʼявлялось у кожному ряду. grid-auto-rows: auto
   лишає кожному ряду власну висоту; картки всередині ряду, як і раніше,
   тягнуться до його висоти, тож рівняння по горизонталі зберігається. */
.product-grid:has(.product-card) {
    grid-template-rows: none;
    grid-auto-rows: auto;
}

/* ===== Анімація декору у блоці форми =====
   Робимо як у .hero__banners: у кожного елемента власні keyframes, які
   ЗБЕРІГАЮТЬ його базовий кут повороту — інакше animation перебиває
   transform із розмітки і елемент стрибає у нульовий кут.
   .form__component_1 вже анімований у базових стилях, його не чіпаємо. */
@keyframes floatRotate_form_2 {
    0%   { transform: translateY(0) rotate(100deg) scale(1); }
    50%  { transform: translateY(-14px) rotate(112deg) scale(0.96); }
    100% { transform: translateY(0) rotate(100deg) scale(1); }
}
@keyframes floatRotate_form_3 {
    0%   { transform: translateY(0) rotate(45deg) scale(1); }
    50%  { transform: translateY(-18px) rotate(32deg) scale(0.97); }
    100% { transform: translateY(0) rotate(45deg) scale(1); }
}
@keyframes floatRotate_form_4 {
    0%   { transform: translateY(0) rotate(-15deg) scale(1); }
    50%  { transform: translateY(-12px) rotate(-6deg) scale(0.98); }
    100% { transform: translateY(0) rotate(-15deg) scale(1); }
}
/* На ≤1280px базовий кут цього елемента — -145deg */
@keyframes floatRotate_form_4_alt {
    0%   { transform: translateY(0) rotate(-145deg) scale(1); }
    50%  { transform: translateY(-12px) rotate(-136deg) scale(0.98); }
    100% { transform: translateY(0) rotate(-145deg) scale(1); }
}
@keyframes floatRotate_form_5 {
    0%   { transform: translateY(0) rotate(0deg) scale(1); }
    50%  { transform: translateY(-16px) rotate(10deg) scale(0.97); }
    100% { transform: translateY(0) rotate(0deg) scale(1); }
}

.form__component_2 { animation: floatRotate_form_2 6s ease-in-out infinite; }
.form__component_3 { animation: floatRotate_form_3 6s ease-in-out 0.5s infinite; }
.form__component_4 { animation: floatRotate_form_4 7s ease-in-out 1s infinite; }
.form__component_5 { animation: floatRotate_form_5 6s ease-in-out 0.5s infinite; }

@media (max-width: 1280px) {
    .form__component_4 { animation-name: floatRotate_form_4_alt; }
}
@media (max-width: 992px) {
    .form__component_4 { animation-name: floatRotate_form_4; }
}

/* ===== Каталог: фільтри модальним вікном на мобільних =====
   До 992px aside .filters прихований. Відкриваємо його по центру екрана:
   position: fixed виводить панель з потоку, тож .main-layout лишається
   незмінним і список фільтрів не тисне сітку товарів убік. */
.filters-backdrop {
    display: none;
    position: fixed;
    inset: 0;
    z-index: 19;
    background: rgba(40, 20, 8, 0.55);
}
.filters-backdrop.is-visible {
    display: block;
}
/* Хрестик потрібен лише в мобільній модалці. */
.filters__close {
    display: none;
}

@media (max-width: 992px) {
    .filters.is-open {
        display: block;
        position: fixed;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        z-index: 20;
        width: calc(100% - 32px);
        max-width: 420px;
        min-width: 0;
        max-height: 80vh;
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
        padding: 22px 20px 20px;
        background: #f8e1ad;
        border-radius: 20px;
        box-shadow: 0 18px 48px rgba(40, 20, 8, 0.35);
    }
    .filters.is-open .filters__close {
        position: absolute;
        top: 12px;
        right: 12px;
        display: flex;
        align-items: center;
        justify-content: center;
        width: 32px;
        height: 32px;
        padding: 0;
        border: none;
        border-radius: 50%;
        background: rgba(74, 44, 33, 0.12);
        color: #4a2c21;
        font-size: 22px;
        line-height: 1;
        cursor: pointer;
    }
    /* Кнопка біля пошуку підсвічується, поки модалка відкрита. */
    .search-btn.is-active {
        background-color: #cd7f23;
    }
}
