/* ============================================================================
 * КАТАЛОГ (archive-product) — ПО МАКЕТУ Catalog.dc.html.
 * Layout 280px/1fr; сайдбар (категории/фильтры/промо) + тулбар + сетка 3 + пагинация.
 * ========================================================================== */
.rv-catalog__title {
    font-size: 32px;
    font-weight: 800;
    margin: 14px 0 24px;
    color: var(--rv-brand-dark);
}
.rv-catalog__layout {
    display: grid !important;
    grid-template-columns: 280px 1fr;
    gap: 28px;
    align-items: start;
}
.rv-catalog__layout > .wp-block-column { flex-basis: auto !important; min-width: 0; }
.rv-catalog__aside {
    display: flex !important;
    flex-direction: column;
    gap: 20px;
}
/* --- Сайдбар-карточки ----------------------------------------------------- */
.rv-cat-box {
    background: var(--rv-surface);
    border: 1px solid var(--rv-border);
    border-radius: var(--rv-radius-lg);
    overflow: hidden;
}
.rv-cat-box--filters {
    padding: 20px;
    display: flex;
    flex-direction: column;
    gap: 16px;
}
.rv-cat-box--filters .rv-cat-box__title { font-size: 15px; font-weight: 700; margin: 0; }
.rv-filter-group { display: flex; flex-direction: column; gap: 8px; }
.rv-filter-label { font-size: 13px; font-weight: 600; color: var(--rv-text-muted); }
.rv-filter-price { display: flex; gap: 8px; }
.rv-filter-price input {
    width: 50%;
    border: 1px solid var(--rv-border-input);
    border-radius: var(--rv-radius-sm);
    padding: 8px 10px;
    font-size: 13px;
    -moz-appearance: textfield;
}
.rv-filter-price input::-webkit-outer-spin-button,
.rv-filter-price input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.rv-cat-box--filters label {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 14px;
    cursor: pointer;
}
.rv-filter-apply {
    background: var(--rv-brand);
    color: #fff;
    border: 0;
    border-radius: var(--rv-radius);
    padding: 11px;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    transition: background .15s ease;
}
.rv-filter-apply:hover { background: var(--rv-brand-hover); }

/* Категории: синяя шапка + строки со счётчиком */
.rv-cat-box__head {
    background: var(--rv-brand);
    color: #fff !important;
    font-size: 15px;
    font-weight: 700;
    margin: 0;
    padding: 14px 20px;
}
.rv-cat-list ul,
.rv-catalog .rv-cat-box--categories .wc-block-product-categories-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
/* элемент категории: flex на самом <li> (счётчик — сосед ссылки, вне <a>).
 * flex-wrap — чтобы вложенный список подкатегорий переносился на новую строку,
 * а не отнимал ширину у названия (иначе текст ломается по буквам). */
.rv-catalog .rv-cat-box--categories .wc-block-product-categories-list-item {
    border-top: 1px solid var(--rv-divider);
    display: flex !important;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: center;
    gap: 0;
    padding: 0;
}
.rv-catalog .rv-cat-box--categories .wc-block-product-categories-list-item > a {
    box-sizing: border-box;
    flex: 1 1 0;
    display: flex;
    align-items: center;
    min-width: 0;
    min-height: 44px;
    padding: 10px 34px 10px 16px;
    font-size: 15px;
    font-weight: 600;
    line-height: 1.4;
    color: var(--rv-text);
    text-decoration: none;
    position: relative;
}
.rv-catalog .rv-cat-box--categories .wc-block-product-categories-list-item {
    transition: background-color .2s ease, box-shadow .2s ease;
}
.rv-catalog .rv-cat-box--categories .wc-block-product-categories-list-item > a {
    transition: color .2s ease, padding-left .2s ease;
}
.rv-catalog .rv-cat-box--categories .wc-block-product-categories-list-item > a::after {
    content: '›';
    position: absolute;
    right: 14px;
    color: #94a3b8;
    font-size: 22px;
    font-weight: 300;
    transition: color .2s ease, transform .2s ease;
}
.rv-catalog .rv-cat-box--categories .wc-block-product-categories-list-item:hover {
    background: linear-gradient(90deg, rgba(22, 78, 126, .09), rgba(22, 78, 126, .02));
    box-shadow: inset 3px 0 0 var(--rv-brand);
}
.rv-catalog .rv-cat-box--categories .wc-block-product-categories-list-item:hover > a {
    color: var(--rv-brand);
    padding-left: 20px;
}
.rv-catalog .rv-cat-box--categories .wc-block-product-categories-list-item:hover > a::after {
    color: var(--rv-brand);
    transform: translateX(3px);
}
.rv-catalog .rv-cat-box--categories .wc-block-product-categories-list-item:hover > .wc-block-product-categories-list-item-count {
    color: var(--rv-brand);
    background: #E3EDF7;
}
.rv-catalog .rv-cat-box--categories .wc-block-product-categories-list-item-count {
    flex: 0 0 auto;
    font-size: 12px;
    border-radius: 10px;
    padding: 2px 8px;
    background: var(--rv-divider);
    color: var(--rv-text-muted);
    margin: 0 14px 0 6px;
    font-variant-numeric: tabular-nums;
}
.rv-catalog .rv-cat-box--categories .wc-block-product-categories-list-item.current-cat {
    background: var(--rv-active-row);
}
.rv-catalog .rv-cat-box--categories .wc-block-product-categories-list-item.current-cat > a {
    color: var(--rv-brand);
    font-weight: 700;
}
/* вложенный список подкатегорий — на всю ширину, ниже родителя, без слома текста */
.rv-catalog .rv-cat-box--categories .wc-block-product-categories-list-item .wc-block-product-categories-list {
    flex: 1 1 100%;
    width: 100%;
    margin: 0;
    min-width: 100%;
    background: #fafbfc;
}
.rv-catalog .rv-cat-box--categories .wc-block-product-categories-list-item .wc-block-product-categories-list-item {
    font-size: 14px;
    flex-wrap: nowrap;
}
.rv-catalog .rv-cat-box--categories .wc-block-product-categories-list-item .wc-block-product-categories-list-item > a {
    min-height: 42px;
    padding: 9px 34px 9px 30px;
    font-size: 14px;
    font-weight: 500;
    color: #475569;
    white-space: normal;
    line-height: 1.35;
    hyphens: none;
    word-break: normal;
    overflow-wrap: break-word;
}
.rv-catalog .rv-cat-box--categories .wc-block-product-categories-list-item .wc-block-product-categories-list-item > a::before {
    content: '';
    width: 6px;
    height: 6px;
    margin-right: 10px;
    border-radius: 50%;
    background: #cbd5e1;
    flex: 0 0 auto;
    transition: background .2s ease, transform .2s ease;
}
.rv-catalog .rv-cat-box--categories .wc-block-product-categories-list-item .wc-block-product-categories-list-item:hover > a::before {
    background: var(--rv-brand);
    transform: scale(1.3);
}
/* у ПОДкатегорий (depth-1+) счётчик товаров убираем — по требованию */
.rv-catalog .rv-cat-box--categories .wc-block-product-categories-list--depth-1 .wc-block-product-categories-list-item-count,
.rv-catalog .rv-cat-box--categories .wc-block-product-categories-list--depth-2 .wc-block-product-categories-list-item-count {
    display: none;
}
/* стрелку-разделитель WooCommerce (›) убираем — она мешает */
.rv-catalog .rv-cat-box--categories .wc-block-product-categories-list-item__separator { display: none; }

/* Фильтры цена / наличие */
.rv-cat-box--filters .wp-block-heading { font-size: 13px; font-weight: 600; color: var(--rv-text-muted); }
.rv-cat-box--filters input[type="text"],
.rv-cat-box--filters input[type="number"] {
    border: 1px solid var(--rv-border-input);
    border-radius: var(--rv-radius-sm);
    padding: 8px 10px;
    font-size: 13px;
}
.rv-cat-box--filters label {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 14px;
    padding: 4px 0;
    cursor: pointer;
}

/* Промо-блок «Поможем подобрать» (переопределяем sidebar-service под каталог) */
.rv-catalog__aside .wp-block-group.has-contrast-to-accent-3-gradient-background {
    border-radius: var(--rv-radius-lg);
}
/* Компонент сам отвечает за контраст независимо от родителя: он используется
 * и в каталоге, и в legacy-сайдбаре обычных страниц. */
.rv-service-banner .rv-service-eyebrow { color: var(--rv-accent-soft) !important; }
.rv-service-banner p:not(.rv-service-eyebrow),
.rv-service-banner .has-large-font-size,
.rv-service-banner .wp-block-button__link {
    color: #fff !important;
}
.rv-service-banner .wp-block-button__link {
    background: transparent !important;
    border-color: rgba(255, 255, 255, 0.72) !important;
}
.rv-service-banner .wp-block-button__link:hover,
.rv-service-banner .wp-block-button__link:focus-visible {
    background: rgba(255, 255, 255, 0.10) !important;
    border-color: #fff !important;
}

/* --- Тулбар: «Найдено N» + сортировка ------------------------------------- */
.rv-catalog__toolbar {
    background: var(--rv-surface);
    border: 1px solid var(--rv-border);
    border-radius: var(--rv-radius-lg);
    padding: 12px 18px;
    margin-bottom: 20px;
    gap: 16px;
    align-items: center !important;
}
.rv-catalog__toolbar .woocommerce-result-count {
    margin: 0;
    font-size: 13px;
    color: var(--rv-text-muted);
}
.rv-catalog__toolbar .woocommerce-ordering,
.rv-catalog__toolbar select {
    margin: 0;
    font-size: 13px;
}
.rv-catalog__toolbar select {
    border: 1px solid var(--rv-border-input);
    border-radius: var(--rv-radius-sm);
    padding: 7px 10px;
    background: var(--rv-surface);
}

/* --- Товарная сетка: карточка по макету ----------------------------------- */
.rv-catalog__grid .wp-block-woocommerce-product-template {
    display: grid !important;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    list-style: none;
    margin: 0;
    padding: 0;
}
.rv-catalog__grid .wp-block-woocommerce-product-template > li,
.rv-catalog__grid .wc-block-product {
    display: flex;
    flex-direction: column;
    background: var(--rv-surface);
    border: 1px solid var(--rv-border);
    border-radius: var(--rv-radius-lg);
    overflow: hidden;
    padding: 0 0 20px;
    margin: 0;
    transition: border-color .15s ease, box-shadow .15s ease;
}
.rv-catalog__grid .wp-block-woocommerce-product-template > li:hover {
    border-color: var(--rv-brand);
    box-shadow: var(--rv-shadow-hover);
}
/* фото */
.rv-pcard-grid__img { margin: 0 0 14px !important; }
.rv-pcard-grid__img img {
    width: 100%;
    height: auto;
    aspect-ratio: 3 / 2;
    object-fit: contain !important;
    display: block;
    background: var(--rv-surface-soft);
    border-bottom: 1px solid var(--rv-divider);
}
/* название/спеки/цена/кнопка — с боковым паддингом */
.rv-pcard-grid__title,
.rv-pcard-grid__specs,
.rv-pcard-grid__price,
.rv-pcard-grid__btn { padding-inline: 20px !important; }

/* строка кнопок «В корзину» + «Подробнее» */
.rv-pcard-grid__btn {
    display: flex;
    gap: 10px;
    align-items: stretch;
}
.rv-pcard-grid__btn .wc-block-components-product-button,
.rv-pcard-grid__btn > .wp-block-button { flex: 1; margin: 0; }
.rv-pcard-grid__more {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    border: 1px solid var(--rv-border-input);
    border-radius: var(--rv-radius);
    padding: 0 14px;
    font-size: 13px;
    font-weight: 600;
    color: var(--rv-brand);
    text-decoration: none;
    transition: border-color .15s ease;
}
.rv-pcard-grid__more:hover { border-color: var(--rv-brand); }
.rv-pcard-grid__title {
    font-size: 15px !important;
    font-weight: 700;
    line-height: 1.35;
    margin: 0 0 8px !important;
}
.rv-pcard-grid__title a { color: var(--rv-text); text-decoration: none; }
.rv-pcard-grid__title a:hover { color: var(--rv-brand); }
.rv-pcard-grid__specs {
    font-size: 13px !important;
    color: var(--rv-text-muted);
    line-height: 1.5;
    margin: 0 0 12px !important;
    flex: 1;
}
.rv-pcard-grid__price {
    font-size: 20px !important;
    font-weight: 800 !important;
    line-height: 1.25;
    text-align: center;
    color: var(--rv-text);
    margin: 0 0 12px !important;
    font-variant-numeric: tabular-nums;
}
.rv-pcard-grid__btn .wp-block-button__link,
.rv-pcard-grid__btn a.button {
    display: block;
    background: var(--rv-accent);
    color: #fff;
    border: 0;
    border-radius: var(--rv-radius);
    padding: 10px 12px;
    font-size: 13px;
    font-weight: 700;
    text-align: center;
    text-decoration: none;
    transition: background-color .15s ease;
}
.rv-pcard-grid__btn .wp-block-button__link:hover,
.rv-pcard-grid__btn a.button:hover { background: var(--rv-accent-hover); }
.rv-pcard-grid__btn .wp-block-button__link:active,
.rv-pcard-grid__btn a.button:active { background: var(--rv-accent-active); }
.rv-pcard-grid__btn a.added_to_cart { display: none; }
.rv-pcard-grid__more {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--rv-border-input);
    border-radius: var(--rv-radius);
    padding: 8px 14px;
    margin: 8px 20px 0;
    font-size: 13px;
    font-weight: 600;
    color: var(--rv-brand);
    text-decoration: none;
}
.rv-pcard-grid__more:hover { border-color: var(--rv-brand); }

/* --- Классическая сетка WooCommerce (legacy-template на страницах категорий) -- */
.rv-catalog ul.products {
    display: grid !important;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    list-style: none;
    margin: 0 !important;
    padding: 0;
}
.rv-catalog ul.products::before,
.rv-catalog ul.products::after { content: none !important; }
.rv-catalog li.product {
    width: auto !important;
    margin: 0 !important;
    float: none !important;
    display: flex;
    flex-direction: column;
    background: var(--rv-surface);
    border: 1px solid var(--rv-border);
    border-radius: var(--rv-radius-lg);
    overflow: hidden;
    padding: 0 0 20px !important; /* WooCommerce .woocommerce ul.products li.product{padding:0} перебивает без !important */
    transition: border-color .15s ease, box-shadow .15s ease;
}
.rv-catalog li.product:hover {
    border-color: var(--rv-brand);
    box-shadow: var(--rv-shadow-hover);
}
/* Внутренняя ссылка-обёртка (image + title + price) — flex-колонка, растущая на
 * всю доступную высоту карточки. price прижимается к её низу (margin-top:auto),
 * поэтому CTA-кнопка (сосед этой ссылки в li) у ВСЕХ карточек — с ценой, без цены
 * («Цена по запросу»), с коротким и длинным заголовком — стоит на одном уровне. */
.rv-catalog li.product a.woocommerce-LoopProduct-link {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    text-decoration: none;
}
/* Полный кадр 3:2, как в основной галерее товара. contain сохраняет весь предмет,
 * даже если исходное изображение имеет другие пропорции. */
.rv-catalog li.product > a img,
.rv-catalog li.product img,
.rv-catalog ul.products li.product a img {
    width: 100% !important;
    height: auto !important;
    aspect-ratio: 3 / 2;
    object-fit: contain;
    margin: 0 0 14px;
    background: var(--rv-surface-soft);
    border-bottom: 1px solid var(--rv-divider);
}
.rv-catalog li.product .woocommerce-loop-product__title,
.rv-catalog li.product a.woocommerce-LoopProduct-link .woocommerce-loop-product__title {
    font-size: 15px;
    font-weight: 700;
    line-height: 1.35;
    color: var(--rv-text);
    padding: 0 20px !important;
    margin: 8px 0 8px !important;
}
/* Цена: единый боковой отступ; margin-top:auto прижимает её к низу внутренней
 * ссылки-обёртки (которая flex:1), а CTA-кнопка идёт сразу под ней — так связка
 * «цена → CTA» выровнена у всех карточек. */
.rv-catalog li.product .price {
    padding: 0 20px;
    margin: auto 0 12px;
    font-size: 20px !important;
    font-weight: 800 !important;
    line-height: 1.25;
    text-align: center;
    color: var(--rv-text);
}
.rv-catalog li.product .price .rv-price--request-text {
    font-size: 16px;
    font-weight: 700;
    color: var(--rv-text-muted);
}
.rv-catalog li.product .price del { font-size: 15px; opacity: .5; }
.rv-catalog li.product .price ins { text-decoration: none; }
.rv-price-from {
    white-space: nowrap;
    font: inherit;
}
.rv-catalog li.product .button,
.rv-catalog li.product .add_to_cart_button {
    margin: 0 20px;
    display: block;
    text-align: center;
    background: var(--rv-accent);
    color: #fff;
    border-radius: var(--rv-radius);
    padding: 11px 12px;
    min-height: 44px;
    font-size: 13px;
    font-weight: 700;
    text-decoration: none;
    box-sizing: border-box;
    transition: background-color .15s ease, border-color .15s ease;
}
/* Вариант «Подробнее» (товар без цены/не покупается) — контурная кнопка по макету */
.rv-catalog li.product .button:not(.add_to_cart_button) {
    background: var(--rv-surface);
    color: var(--rv-brand);
    border: 1px solid var(--rv-border-input);
}
.rv-catalog li.product .button:not(.add_to_cart_button):hover {
    filter: none;
    border-color: var(--rv-brand);
}
.rv-catalog li.product .add_to_cart_button:hover { background: var(--rv-accent-hover); }
.rv-catalog li.product .add_to_cart_button:active { background: var(--rv-accent-active); }

/* --- Отклик «В корзину» (AJAX) в каталоге/категориях -----------------------
 * По умолчанию Woo-обратная связь на add_to_cart в сетке невидима: .loading без
 * стилей, галочка .added::after подавлена, ссылка .added_to_cart width:0.
 * Даём: спиннер во время loading, зелёное «Добавлено ✓» после, видимую ссылку
 * «Просмотр корзины». */
.rv-catalog li.product .add_to_cart_button {
    position: relative;
    transition: background-color .2s ease, color .2s ease;
}
/* loading: спиннер справа, текст приглушаем */
.rv-catalog li.product .add_to_cart_button.loading {
    color: rgba(255, 255, 255, .6) !important;
    pointer-events: none;
}
.rv-catalog li.product .add_to_cart_button.loading::after {
    content: "";
    position: absolute;
    top: 50%;
    right: 12px;
    width: 16px;
    height: 16px;
    margin-top: -8px;
    border: 2px solid rgba(255, 255, 255, .4);
    border-top-color: #fff;
    border-radius: 50%;
    animation: rv-spin .6s linear infinite;
}
@keyframes rv-spin { to { transform: rotate(360deg); } }
/* added: зелёная кнопка + галочка перед текстом (текст Woo оставляет «В корзину»,
 * поэтому маркируем состояние цветом и галочкой-псевдоэлементом) */
.rv-catalog li.product .add_to_cart_button.added {
    background: var(--rv-success) !important;
}
.rv-catalog li.product .add_to_cart_button.added::before {
    content: "✓ ";
    font-weight: 800;
}
.rv-catalog li.product .add_to_cart_button.added::after { content: none; }
/* видимая ссылка «Просмотр корзины» после добавления */
.rv-catalog li.product .added_to_cart {
    display: block;
    margin: 8px 20px 0;
    text-align: center;
    font-size: 13px;
    font-weight: 600;
    color: var(--rv-brand);
    text-decoration: underline;
    text-underline-offset: 2px;
}
.rv-catalog li.product .added_to_cart:hover { color: var(--rv-brand-hover); }

/* рейтинг звёзд скрываем (не по макету) */
.rv-catalog li.product .star-rating { display: none; }
/* legacy-template рендерит ПОЛНЫЙ archive (заголовок+крошки дублируют наши) —
 * прячем их. Класс rv-catalog__legacy не всегда на обёртке, поэтому таргетим
 * элементы напрямую внутри каталога. result-count+ordering оставляем как тулбар. */
.rv-catalog .woocommerce-products-header,
.rv-catalog .woocommerce-products-header__title,
.rv-catalog .rv-catalog__main .woocommerce-breadcrumb,
.rv-catalog .term-description { display: none !important; }
/* тулбар легаси: result-count слева + ordering справа в ОДНУ строку (как макет
 * Catalog.dc.html). Реальный контейнер вывода legacy-loop — .site-main. Делаем его
 * grid: строка 1 — общий тулбар (result-count + ordering в одной плашке), ниже —
 * сетка товаров и пагинация. result-count и ordering кладём в одну grid-ячейку через
 * общий «псевдо-ряд»: обоим order:1, а сам ряд — flex через display:contents нельзя,
 * поэтому склеиваем их отрицательным margin в единую полосу. */
/* legacy content-wrapper (<main class="site-main">) снят PHP-хуком, поэтому
 * контейнером legacy-loop теперь выступает сама колонка .rv-catalog__main.
 * На случай, если обёртка где-то останется, — стилизуем оба варианта. */
.rv-catalog__main,
.rv-catalog__main .site-main {
    display: flex;
    flex-direction: column;
    align-items: stretch;
}
/* result-count — левая часть единой полосы-тулбара на всю ширину */
.rv-catalog .woocommerce-result-count {
    order: 1;
    display: flex;
    align-items: center;
    margin: 0;
    font-size: 13px;
    color: var(--rv-text-muted);
    background: var(--rv-surface);
    border: 1px solid var(--rv-border);
    border-radius: var(--rv-radius-lg);
    padding: 12px 18px;
    min-height: 48px;
    box-sizing: border-box;
}
/* ordering — правая часть той же полосы: отрицательным верхним margin поднимаем
 * его в строку result-count, прижимаем вправо, вертикально центрируем. */
.rv-catalog .woocommerce-ordering {
    order: 2;
    position: relative;
    z-index: 1;
    margin: -48px 18px 0 0;
    align-self: flex-end;
    display: flex;
    align-items: center;
    min-height: 48px;
    pointer-events: none;
}
.rv-catalog .woocommerce-ordering select {
    border: 1px solid var(--rv-border-input);
    border-radius: var(--rv-radius-sm);
    padding: 8px 12px;
    font-size: 13px;
    background: var(--rv-surface);
    pointer-events: auto;
}
.rv-catalog ul.products { order: 3; padding-top: 20px; margin-top: 0 !important; }
.rv-catalog nav.woocommerce-pagination { order: 4; padding-top: 8px; }
.rv-catalog nav.woocommerce-pagination ul {
    display: flex;
    justify-content: center;
    gap: 8px;
    margin: 28px 0 0;
    padding: 0;
    border: 0;
    list-style: none;
}
.rv-catalog nav.woocommerce-pagination li { border: 0; margin: 0; }
.rv-catalog nav.woocommerce-pagination a,
.rv-catalog nav.woocommerce-pagination span {
    width: 38px; height: 38px;
    display: inline-flex; align-items: center; justify-content: center;
    border: 1px solid var(--rv-border);
    border-radius: var(--rv-radius);
    background: var(--rv-surface);
    font-size: 14px; color: var(--rv-text);
    margin: 0;
}
.rv-catalog nav.woocommerce-pagination .current {
    background: var(--rv-brand); color: #fff; border-color: var(--rv-brand);
}
@media (max-width: 1023px) { .rv-catalog ul.products { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 679px) { .rv-catalog ul.products { grid-template-columns: 1fr; } }

/* --- Пагинация: квадраты 38px --------------------------------------------- */
.rv-catalog__pagination {
    justify-content: center;
    gap: 8px;
    margin-top: 28px;
}
.rv-catalog__pagination .page-numbers {
    width: 38px;
    height: 38px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--rv-border);
    border-radius: var(--rv-radius);
    background: var(--rv-surface);
    font-size: 14px;
    color: var(--rv-text);
    text-decoration: none;
}
.rv-catalog__pagination .page-numbers.current {
    background: var(--rv-brand);
    color: #fff;
    border-color: var(--rv-brand);
    font-weight: 600;
}
.rv-catalog__pagination .page-numbers:hover:not(.current) { border-color: var(--rv-brand); }

/* --- Адаптив каталога ----------------------------------------------------- */
@media (max-width: 1023px) {
    .rv-catalog__layout { grid-template-columns: 1fr; }
    .rv-catalog__grid .wp-block-woocommerce-product-template { grid-template-columns: repeat(2, 1fr); }

    /* На одной колонке раскрываем обёртку сайдбара в grid-контекст: компактные
     * аккордеоны категорий и фильтров идут перед товарами, а высокий сервисный
     * промоблок — после сетки. Так меню не теряется внизу страницы и при этом
     * не отодвигает товары на несколько экранов. */
    .rv-catalog__aside,
    .rv-catalog__aside > .wp-block-template-part { display: contents !important; }
    .rv-catalog__aside .rv-cat-box--categories { order: 0; }
    .rv-catalog__aside .rv-cat-box--filters { order: 1; }
    .rv-catalog__main { order: 2; }
    .rv-catalog__aside > .wp-block-template-part > :not(.rv-cat-box--categories):not(.rv-cat-box--filters) { order: 3; }

    /* До инициализации JS тела секций скрыты с ПЕРВОГО кадра: сворачивание
     * аккордеона после отрисовки сдвигало сетку (весь CLS 0.17 страницы
     * категории). Класс rv-js ставится синхронным инлайн-скриптом в <head>;
     * без JavaScript блоки остаются раскрытыми и полностью доступными. */
    html.rv-js .rv-cat-box--categories:not(.is-open) > :not(.rv-cat-box__head),
    html.rv-js .rv-cat-box--filters:not(.is-open) > :not(.rv-cat-box__title) {
        display: none;
    }
    /* и геометрия заголовков-кнопок совпадает с будущим аккордеоном,
     * чтобы навешивание --collapsible не давало даже малого сдвига */
    html.rv-js .rv-cat-box--categories > .rv-cat-box__head,
    html.rv-js .rv-cat-box--filters > .rv-cat-box__title {
        position: relative;
        padding-right: 44px;
        min-height: 44px;
        display: flex;
        align-items: center;
    }

    /* «Категории» и «Фильтры» — свёрнутые по умолчанию аккордеоны (JS
     * catalog-sidebar.js навешивает .rv-cat-box--collapsible / .is-open). */
    .rv-cat-box--collapsible > .rv-cat-box__head,
    .rv-cat-box--collapsible > .rv-cat-box__title {
        cursor: pointer;
        position: relative;
        padding-right: 44px;
        min-height: 44px;
        display: flex;
        align-items: center;
        -webkit-tap-highlight-color: transparent;
    }
    /* стрелка-индикатор */
    .rv-cat-box--collapsible > .rv-cat-box__head::after,
    .rv-cat-box--collapsible > .rv-cat-box__title::after {
        content: "";
        position: absolute;
        right: 18px;
        top: 50%;
        width: 9px;
        height: 9px;
        border-right: 2px solid currentColor;
        border-bottom: 2px solid currentColor;
        transform: translateY(-70%) rotate(45deg);
        transition: transform .15s ease;
        opacity: .7;
    }
    .rv-cat-box--collapsible.is-open > .rv-cat-box__head::after,
    .rv-cat-box--collapsible.is-open > .rv-cat-box__title::after {
        transform: translateY(-30%) rotate(-135deg);
    }
    /* тело свёрнуто, разворачивается по .is-open */
    .rv-cat-box--collapsible > .rv-cat-box__body { display: none; }
    .rv-cat-box--collapsible.is-open > .rv-cat-box__body { display: block; }
    /* у блока фильтров тело — flex-колонка (как сам блок на десктопе) */
    .rv-cat-box--filters.rv-cat-box--collapsible > .rv-cat-box__body {
        flex-direction: column;
        gap: 16px;
    }
    .rv-cat-box--filters.rv-cat-box--collapsible.is-open > .rv-cat-box__body { display: flex; }
}
@media (max-width: 679px) {
    .rv-catalog__grid .wp-block-woocommerce-product-template { grid-template-columns: 1fr; }
    .rv-catalog__title { font-size: 28px; }

    /* На узком экране тулбар «в одну строку» тесен — раскладываем в две строки:
     * счётчик сверху, сортировка отдельной строкой ниже (снимаем оверлей-margin). */
    .rv-catalog .woocommerce-ordering {
        margin: 8px 0 0;
        align-self: stretch;
        min-height: 0;
        pointer-events: auto;
    }
    .rv-catalog .woocommerce-ordering select { width: 100%; }
}
