/* ============================================================
   КАТАЛОГ — стили для /catalog/ (page-catalog.php) и /catalog/{slug}/
   (woocommerce/archive-product.php + content-product.php).
   Изолированы префиксами .catalog-landing / .catalog-archive,
   чтобы перекрывать WC-core CSS без !important.
   ============================================================ */

/* ---------- Общее (hero, breadcrumbs реюзаем из main.css .article-*) ---------- */

.catalog-landing .cat-hero {
  background: var(--color-bg-soft);
  padding-block: var(--sp-10) var(--sp-12);
}
/* Категории — белый фон (выглядит чище под крупным заголовком + pill) */
.catalog-archive .cat-hero {
  background: var(--color-surface);
  padding-block: var(--sp-10) var(--sp-12);
}
.catalog-archive .cat-hero--compact { padding-block: var(--sp-8) var(--sp-10); }
.cat-hero__title { font-size: var(--h1-promo); line-height: var(--h1-lh); margin: 0 0 var(--sp-3); letter-spacing: -0.5px; }
.cat-hero--compact .cat-hero__title { font-size: var(--h1-page); }
/* Мета-строка под заголовком (количество товаров) */
.cat-hero__meta {
  display: inline-block;
  font-size: 14px;
  color: var(--color-text-soft);
  text-transform: uppercase;
  letter-spacing: 0.7px;
  margin: 0 0 var(--sp-4);
  padding: 4px 12px;
  background: rgba(168, 35, 25,0.08);
  color: var(--color-accent);
  border-radius: 999px;
  font-weight: 700;
}
.cat-hero__lead {
  max-width: 780px;
  color: var(--color-text-mute);
  font-size: 18px;
  line-height: 1.6;
}
.cat-hero__lead p:last-child { margin-bottom: 0; }

/* ---------- Поиск ---------- */
.cat-search-wrap { padding-block: var(--sp-10) 0; }
.cat-search {
  position: relative;
  max-width: 520px;
}
.cat-search__icon {
  position: absolute; left: 18px; top: 50%; transform: translateY(-50%);
  width: 18px; height: 18px; color: var(--color-text-soft);
  pointer-events: none;
}
.cat-search input[type="search"] {
  width: 100%;
  padding: 14px 16px 14px 48px;
  border: 1.5px solid var(--color-line);
  border-radius: 999px;
  font: inherit;
  color: var(--color-text);
  background: var(--color-surface);
  outline: none;
  transition: border-color .15s, box-shadow .15s;
  box-shadow: var(--sh-card);
}
.cat-search input[type="search"]:hover { border-color: var(--color-text-soft); }
.cat-search input[type="search"]:focus {
  border-color: var(--color-accent);
  box-shadow: 0 0 0 3px rgba(168, 35, 25,.12);
}
.cat-search input[type="search"]::placeholder { color: var(--color-text-soft); }

/* ---------- Сетка категорий (landing) ---------- */
.catalog-landing .cats { padding-block: var(--sp-8) var(--sp-12); }
.catalog-landing .cats-grid {
  display: grid;
  gap: var(--sp-6);
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.catalog-landing .cat-card {
  display: flex; flex-direction: column;
  background: var(--color-surface);
  border: 2px solid var(--color-card-border);
  border-radius: var(--r-lg);
  padding: var(--sp-5);
  color: var(--color-text);
  text-decoration: none;
  transition: transform .18s ease, box-shadow .18s ease;
}
.catalog-landing .cat-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--sh-hover);
}
.catalog-landing .cat-card__media {
  position: relative;
  aspect-ratio: 1;
  border-radius: 12px;
  background: repeating-linear-gradient(135deg, var(--color-bg-mute) 0 6px, var(--color-line) 6px 12px);
  margin-bottom: var(--sp-4);
  display: flex; align-items: center; justify-content: center;
  overflow: hidden;
}
.catalog-landing .cat-card__img {
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
}
.catalog-landing .cat-card__icon {
  width: 60px; height: 60px;
  border-radius: 50%;
  background: var(--color-accent-tint);
  color: var(--color-accent);
  display: flex; align-items: center; justify-content: center;
}
.catalog-landing .cat-card__icon svg { width: 30px; height: 30px; }
.catalog-landing .cat-card__title { font-size: 18px; margin: 0 0 4px; }
.catalog-landing .cat-card__meta { color: var(--color-text-soft); font-size: 14px; margin: 0 0 var(--sp-3); }
.catalog-landing .cat-card__more { color: var(--color-accent); font-weight: 700; font-size: 16px; margin-top: auto; }

.catalog-landing .cat-empty { text-align: center; color: var(--color-text-mute); padding: var(--sp-8) 0; }

/* ---------- Преимущества (landing) ---------- */
.catalog-landing .cat-adv {
  padding-block: var(--sp-12);
  background: var(--color-bg-mute);
}
.catalog-landing .cat-adv__grid {
  display: grid;
  gap: var(--sp-5);
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.catalog-landing .cat-adv__card {
  background: var(--color-surface);
  border: 1px solid var(--color-line);
  border-radius: var(--r-lg);
  padding: var(--sp-6);
  box-shadow: var(--sh-card);
}
.catalog-landing .cat-adv__icon {
  width: 48px; height: 48px;
  border-radius: 50%;
  background: var(--color-accent-tint); color: var(--color-accent);
  display: flex; align-items: center; justify-content: center;
  margin-bottom: var(--sp-4);
}
.catalog-landing .cat-adv__icon svg { width: 24px; height: 24px; }
.catalog-landing .cat-adv__title { font-size: 18px; margin: 0 0 var(--sp-2); }
.catalog-landing .cat-adv__text { color: var(--color-text-mute); font-size: 16px; line-height: 1.5; margin: 0; }

/* ============================================================
   АРХИВ КАТЕГОРИИ
   ============================================================ */

/* ---------- Chip-табы подкатегорий ---------- */
.catalog-archive .tabs { padding: var(--sp-6) 0 var(--sp-2); }
.catalog-archive .tabs__list {
  display: flex; gap: 10px; flex-wrap: wrap;
  list-style: none; margin: 0; padding: 0;
}
.catalog-archive .tab {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 8px 16px;
  background: var(--color-surface);
  border: 1.5px solid var(--color-line);
  border-radius: 999px;
  color: var(--color-text);
  font-size: 14px;
  text-decoration: none;
  transition: border-color .15s, color .15s, background .15s;
  white-space: nowrap;
}
.catalog-archive .tab:hover { border-color: var(--color-accent); color: var(--color-accent); }
.catalog-archive .tab__count {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 22px; height: 20px; padding: 0 7px;
  background: var(--color-bg-mute);
  border-radius: 999px;
  font-size: 12px; color: var(--color-text-soft);
}
.catalog-archive .tab--active { background: var(--color-accent-fill); color: var(--color-on-fill); border-color: var(--color-accent); }
.catalog-archive .tab--active .tab__count { background: rgba(255,255,255,.22); color: var(--color-on-fill); }

/* ---------- Основной блок (на всю ширину контейнера) ---------- */
.catalog-archive .cat-main-section { padding-block: var(--sp-2) var(--sp-12); }
.catalog-archive .cat-main { display: block; }

/* ---------- Фильтры горизонтально (полоса над сеткой) ---------- */
.catalog-archive .filters-bar { padding-block: var(--sp-3); }
.catalog-archive .filters-bar__inner {
  /* ЗАМЕЧАНИЕ ЗАКАЗЧИКА 9 сентября: «кнопка фильтр кривая и находит на длину».
     Замер по живой странице подтвердил обе половины жалобы, и обе — старые,
     на всех категориях (венки, гробы, любая):

     1. align-items: center вертикально центрировал каждую колонку по её
        собственной высоте. Колонка «Длина» высотой 134 px, «Цена» — 74:
        подписи стояли на y=624, 654, 668, 646 — то есть ни одна не в ряд.
        Отсюда «кривая». Ставим flex-start: подписи начинаются с одной линии.

     2. Кнопка «Фильтрация» выезжала за правый край своей колонки
        (x=545..652 при колонке 182..622) и ложилась на колонку «Длина»,
        которая начинается на 646. Причина — flex-элементы с min-width:auto
        не сжимаются и вместо переноса вылезают за родителя; подпись
        «Цена: 7 400 ₽ — 459 000 ₽» с nowrap эту ширину и создаёт.
        Лечим min-width:0 и переносом внутри колонки цены. */
  display: flex; flex-wrap: wrap; align-items: flex-start;
  gap: var(--sp-4) var(--sp-6);
  background: var(--color-surface);
  border: 1px solid var(--color-line);
  border-radius: var(--r-lg);
  padding: var(--sp-4) var(--sp-5);
  box-shadow: var(--sh-card);
}
.catalog-archive .filters-bar__title {
  font-size: 16px; font-weight: 700; color: var(--color-text);
  margin-right: var(--sp-2);
}
.catalog-archive .filters-bar__group {
  display: flex; align-items: flex-start; gap: var(--sp-3);
  flex: 1 1 auto; min-width: 0;
}
/* min-width: 0 вместо 280px — иначе колонка не сжимается и её содержимое
   выезжает на соседнюю. Пол ширины держим через flex-basis. */
.catalog-archive .filters-bar__group--price { flex: 1 1 360px; min-width: 0; }
.catalog-archive .filters-bar__reset {
  color: var(--color-accent); font-size: 14px; text-decoration: none;
  margin-left: auto; white-space: nowrap;
}
.catalog-archive .filters-bar__reset:hover { color: var(--color-accent-ink); text-decoration: underline; }

/* WC widget внутри filters-bar — inline layout */
.catalog-archive .filters-bar .widget { margin: 0; padding: 0; flex: 1; min-width: 0; }
.catalog-archive .filters-bar .widget-title,
.catalog-archive .filters-bar .widgettitle {
  font-size: 14px; font-weight: 700; color: var(--color-text);
  margin: 0 var(--sp-3) 0 0;
  display: inline-block;
}
.catalog-archive .filters-bar .price_slider_wrapper {
  display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-3) var(--sp-4);
  padding: 0; flex: 1; min-width: 0;
}
.catalog-archive .filters-bar .price_slider.ui-slider {
  flex: 1 1 auto; min-width: 140px; max-width: 260px; margin: 0;
}
.catalog-archive .filters-bar .price_slider_amount {
  display: flex; flex-direction: row; flex-wrap: wrap; align-items: center;
  gap: var(--sp-2) var(--sp-3); margin: 0; min-width: 0;
}
.catalog-archive .filters-bar .price_slider_amount .price_label {
  order: 0; font-size: 14px; white-space: nowrap;
}
.catalog-archive .filters-bar .price_slider_amount .button {
  order: 1; padding: 8px 16px; font-size: 14px;
}

/* WC Price Filter — track белый с тонкой обводкой, handles красные filled.
   ВАЖНО: !important + body.woocommerce — WC core CSS грузится после темы
   и без этого подставляет свой фиолетовый дефолт (jQuery UI theme). */
.catalog-archive .price_slider_wrapper { padding: 4px 0; }
body.woocommerce .catalog-archive .price_slider.ui-slider {
  position: relative;
  height: 6px;
  background: var(--color-surface) !important;
  border: 1px solid var(--color-line) !important;
  border-radius: 999px;
  margin: var(--sp-3) 10px var(--sp-3);
}
body.woocommerce .catalog-archive .price_slider .ui-slider-range {
  position: absolute;
  height: 100%;
  background: transparent !important;
  background-image: none !important;
  border-radius: 999px;
}
body.woocommerce .catalog-archive .price_slider .ui-slider-handle {
  position: absolute;
  top: 50%;
  width: 18px; height: 18px;
  margin-left: -9px; margin-top: -10px;
  background: var(--color-accent-fill) !important;
  background-image: none !important;
  border: 0 !important;
  border-radius: 50%;
  cursor: pointer;
  box-shadow: 0 1px 4px rgba(168, 35, 25,.35);
}
body.woocommerce .catalog-archive .price_slider .ui-slider-handle:hover { background: var(--color-accent-fill-hover) !important; }
.catalog-archive .price_slider_amount {
  display: flex; flex-direction: column; gap: var(--sp-3);
  margin-top: var(--sp-3);
}
.catalog-archive .price_slider_amount .price_label {
  order: 1;
  font-size: 14px;
  color: var(--color-text-mute);
}
.catalog-archive .price_slider_amount input[type="text"] { display: none; } /* у WC два input + label; оставляем только label */
.catalog-archive .price_slider_amount .button {
  order: 2;
  background: var(--color-accent-fill);
  color: var(--color-on-fill);
  border: 0;
  border-radius: var(--r-md);
  padding: 9px 16px;
  font: inherit;
  font-weight: 700;
  font-size: 14px;
  cursor: pointer;
  transition: background-color .15s;
}
.catalog-archive .price_slider_amount .button:hover { background: var(--color-accent-fill-hover); }

/* WC Layered Nav (когда атрибуты появятся) */
.catalog-archive .woocommerce-widget-layered-nav-list {
  list-style: none; margin: 0; padding: 0;
}
.catalog-archive .woocommerce-widget-layered-nav-list li {
  padding: 6px 0;
  font-size: 14px;
  color: var(--color-text);
}
.catalog-archive .woocommerce-widget-layered-nav-list li a {
  color: var(--color-text);
  text-decoration: none;
  transition: color .15s;
}
.catalog-archive .woocommerce-widget-layered-nav-list li a:hover { color: var(--color-accent); }
.catalog-archive .woocommerce-widget-layered-nav-list li.chosen a { color: var(--color-accent); font-weight: 700; }
.catalog-archive .woocommerce-widget-layered-nav-list .count { color: var(--color-text-soft); font-size: 14px; }

/* ---------- Sort bar (нативные WC) ---------- */
.catalog-archive .sortbar {
  display: flex; justify-content: space-between; align-items: center;
  margin-bottom: var(--sp-4);
  font-size: 14px;
  color: var(--color-text-mute);
  flex-wrap: wrap; gap: var(--sp-3);
}
.catalog-archive .woocommerce-result-count {
  margin: 0;
  color: var(--color-text-mute);
}
.catalog-archive .woocommerce-ordering { margin: 0; }
.catalog-archive .woocommerce-ordering select {
  appearance: none; -webkit-appearance: none;
  border: 1.5px solid var(--color-line);
  border-radius: var(--r-md);
  background: var(--color-surface) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path d='M1 1l4 4 4-4' stroke='%235D6268' stroke-width='1.6' fill='none' stroke-linecap='round' stroke-linejoin='round'/></svg>") no-repeat right 14px center;
  padding: 8px 36px 8px 14px;
  font: inherit; font-size: 14px; color: var(--color-text);
  cursor: pointer; outline: none;
}

/* ---------- Сетка товаров (перекрываем WC .products) ---------- */
/* ВАЖНО: только ul.products (не .products), чтобы не задеть <section class="related products">
   на странице товара — там тоже есть class="products". */
.catalog-archive ul.products {
  list-style: none;
  margin: 0; padding: 0;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--sp-4);
}
/* КЛЮЧЕВОЙ ФИКС (R4): WC core CSS ставит ul.products::before/::after { content:" ";
   display:table } как clearfix для float-layout. В CSS Grid эти pseudo-элементы
   становятся полноценными grid-items и съедают первую/последнюю ячейку —
   реальная первая .pcard смещается в col 2 (видимая «пустота» слева). Отключаем. */
.catalog-archive ul.products::before,
.catalog-archive ul.products::after,
.product-page .related ul.products::before,
.product-page .related ul.products::after {
  content: none !important;
  display: none !important;
}
/* Сброс WC дефолтных float/clear/margin/width на каждом <li> — иначе первая
   карточка (li.first) получает clear:both/float:left от WC core CSS и в grid
   отображается со смещением (пустой слот слева). Используем !important —
   спец-я WC core CSS равна нашей, и порядок загрузки CSS может разниться. */
.catalog-archive ul.products > li.product,
.catalog-archive ul.products > li.product.first,
.catalog-archive ul.products > li.product.last,
.product-page .related ul.products > li.product,
.product-page .related ul.products > li.product.first,
.product-page .related ul.products > li.product.last {
  float: none !important;
  clear: none !important;
  margin: 0 !important;
  width: auto !important;
}

/* ---------- Карточка товара (.pcard) ---------- */
/* Высокая специфичность чтобы перекрыть WC core CSS (li.product { width: 22.05%; float: left }) */
.catalog-archive ul.products li.product.pcard,
.product-page .related ul.products li.product.pcard {
  position: relative;
  background: var(--color-surface);
  border: 2px solid var(--color-card-border);
  border-radius: var(--r-lg);
  padding: 10px 10px 12px;
  display: flex; flex-direction: column;
  margin: 0;
  width: auto;
  float: none;
  clear: none;
  transition: transform .18s, box-shadow .18s;
}
.catalog-archive ul.products li.product.pcard:hover { transform: translateY(-2px); box-shadow: var(--sh-hover); }

.catalog-archive .pcard__media {
  position: relative;
  display: block;
  aspect-ratio: 4 / 3;
  border-radius: var(--r-md);
  background: var(--color-surface);
  margin-bottom: var(--sp-2);
  overflow: hidden;
  text-decoration: none;
}
.catalog-archive .pcard__media,
.product-page .pcard__media { background: var(--color-surface); }
.catalog-archive .pcard__media .pcard__img,
.product-page .pcard__media .pcard__img,
.catalog-archive ul.products li.product img.pcard__img,
.product-page ul.products li.product img.pcard__img {
  position: absolute;
  inset: 0;
  width: 100% !important;
  height: 100% !important;
  /* contain — фото товаров (часто горизонтальные) не обрезаются по высоте.
     Минимальный padding 6px — фото визуально заполняет окно карточки. */
  object-fit: contain !important;
  padding: 6px;
  display: block;
  transition: transform .25s ease;
}
.catalog-archive .pcard:hover .pcard__img { transform: scale(1.04); }
.catalog-archive .pcard__media-fallback {
  position: absolute; inset: 0;
  display: flex; align-items: center; justify-content: center;
  color: var(--color-text-soft);
}
.catalog-archive .pcard__media-fallback svg { width: 44px; height: 44px; opacity: .55; }

/* Бейджи */
.catalog-archive .badges {
  position: absolute; top: 10px; right: 10px;
  display: flex; flex-direction: column; gap: 4px;
  z-index: 2;
}
.catalog-archive .badge {
  display: inline-block;
  padding: 3px 8px;
  font-size: 12px; font-weight: 700; letter-spacing: .3px;
  border-radius: 4px; color: var(--color-on-fill);
}
.catalog-archive .badge--hit { background: var(--color-accent-fill); }
/* Белое на зелёном #16A34A даёт 3,30 — для подписи 11 px это мало,
   поэтому оба бейджа берут акцентную заливку: белое на ней 7,19. */
.catalog-archive .badge--new { background: var(--color-accent-fill); color: var(--color-on-fill); }
.catalog-archive .badge--sale { background: var(--color-plate); color: var(--color-on-fill); }

.catalog-archive .pcard__sku {
  /* Артикул — текст, который человек переписывает в разговоре;
     10px для этого мало. 12 — младшая ступень шкалы. */
  font-size: 12px; letter-spacing: .6px;
  color: var(--color-text-soft); text-transform: uppercase;
  margin: 0 0 4px;
}
.catalog-archive .pcard__title {
  font-size: 14px; line-height: 1.3; margin: 0 0 var(--sp-2);
}
.catalog-archive .pcard__title a {
  color: var(--color-text); text-decoration: none;
}
.catalog-archive .pcard__title a:hover { color: var(--color-accent); }

.catalog-archive .pcard__price {
  font-size: 18px; font-weight: 700; color: var(--color-accent);
  margin: 0 0 8px;
  display: flex; align-items: baseline; flex-wrap: wrap; gap: 8px;
}
.catalog-archive .pcard__price del,
.catalog-archive .pcard__price .woocommerce-Price-amount + del {
  font-size: 12px; color: var(--color-text-soft);
  font-weight: 400; text-decoration: line-through;
  opacity: 1;
}
.catalog-archive .pcard__price ins {
  background: none; text-decoration: none;
  color: var(--color-accent); font-weight: 700;
}
.catalog-archive .pcard__price .woocommerce-Price-currencySymbol { font-weight: 700; }

/* Перекраска нативной WC add-to-cart кнопки */
.catalog-archive .pcard .button,
.catalog-archive .pcard a.button.add_to_cart_button,
.catalog-archive .pcard a.added_to_cart {
  display: block;
  width: 100%;
  padding: 8px 14px;
  background: var(--color-accent-fill);
  color: var(--color-on-fill);
  border: 0;
  border-radius: var(--r-md);
  font: inherit; font-size: 14px; font-weight: 700;
  text-align: center;
  text-decoration: none;
  cursor: pointer;
  transition: background-color .15s;
  margin: 0;
}
.catalog-archive .pcard .button:hover,
.catalog-archive .pcard a.button.add_to_cart_button:hover { background: var(--color-accent-fill-hover); color: var(--color-on-fill); }
.catalog-archive .pcard a.added_to_cart { margin-top: 8px; background: transparent; color: var(--color-accent); }
.catalog-archive .pcard a.added_to_cart:hover { background: var(--color-surface); }

/* «Купить в 1 клик» — опциональная ссылка под кнопкой (не делаем в MVP) */
.catalog-archive .pcard__quick {
  display: block; text-align: center; margin-top: 8px;
  color: var(--color-accent); font-size: 14px; text-decoration: none;
}
.catalog-archive .pcard__quick:hover { color: var(--color-accent-ink); text-decoration: underline; }

/* ---------- Pagination ---------- */
.catalog-archive .load-more-wrap { text-align: center; padding: var(--sp-6) 0 var(--sp-2); }
.catalog-archive nav.woocommerce-pagination { border: 0; }
.catalog-archive .woocommerce-pagination ul.page-numbers {
  display: inline-flex; gap: 6px;
  list-style: none; margin: 0; padding: 0;
  border: 0;            /* убираем внешнюю серую обводку WC */
  white-space: normal;
}
.catalog-archive .woocommerce-pagination ul.page-numbers li {
  border: 0;            /* убираем разделители между цифрами */
  float: none;
  margin: 0;
  display: inline-flex;
}
.catalog-archive .woocommerce-pagination .page-numbers {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 36px; height: 36px; padding: 0 10px;
  background: var(--color-surface);
  border: 1.5px solid var(--color-line);
  border-radius: var(--r-md);
  color: var(--color-text); text-decoration: none;
  font-size: 14px;
  transition: border-color .15s, color .15s;
}
/* Hover — белая цифра на красном фоне (как у current). ВАЖНО: используем
   a.page-numbers / span.page-numbers, потому что у <ul class="page-numbers">
   тоже есть этот класс — общий .page-numbers:hover красил весь блок целиком. */
.catalog-archive .woocommerce-pagination a.page-numbers:hover,
.catalog-archive .woocommerce-pagination span.page-numbers:hover,
.catalog-archive .woocommerce-pagination a.page-numbers:focus {
  background: var(--color-accent-fill) !important;
  border-color: var(--color-accent) !important;
  color: var(--color-on-fill) !important;
  text-decoration: none;
}
.catalog-archive .woocommerce-pagination .page-numbers.current {
  background: var(--color-accent-fill);
  border-color: var(--color-accent);
  color: var(--color-on-fill);
}

/* ============================================================
   СТРАНИЦА ТОВАРА (.product-page) — /product/{slug}/
   Wrapper-классы: .product-page .catalog-archive
   (catalog-archive нужен чтобы карточки в related унаследовали .pcard стили)
   ============================================================ */

.product-page__top { padding: var(--sp-10) 0 var(--sp-8); }
.product-page__top-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--sp-8);
  align-items: start;
}

/* ---------- Галерея (WC woocommerce-product-gallery) ---------- */
.product-page__media {
  background: var(--color-surface);
  border: 1px solid var(--color-line);
  border-radius: var(--r-lg);
  padding: var(--sp-5);
  box-shadow: var(--sh-card);
  position: relative;
  align-self: start;       /* media НЕ растягивается до высоты summary */
  text-align: center;
}
.product-page__media .woocommerce-product-gallery,
.product-page__media .woocommerce-product-gallery__wrapper { width: 100% !important; }
.product-page__media .woocommerce-product-gallery { margin: 0 !important; }
.product-page__media .woocommerce-product-gallery__image img,
.product-page__media .woocommerce-product-gallery__wrapper img {
  margin: 0 auto !important;
  display: block;
  max-width: 100%;
  height: auto;
}
.product-page__media .woocommerce-product-gallery {
  width: 100% !important;
  margin: 0;
}
.product-page__media .woocommerce-product-gallery__image img {
  border-radius: var(--r-md);
  display: block;
  width: 100%;
  height: auto;
}
.product-page__media .flex-control-thumbs {
  margin: var(--sp-3) 0 0;
  padding: 0;
  list-style: none;
  display: flex; flex-wrap: wrap; gap: var(--sp-2);
}
.product-page__media .flex-control-thumbs li {
  width: calc(25% - var(--sp-2)); margin: 0;
}
.product-page__media .flex-control-thumbs img {
  border-radius: var(--r-sm);
  cursor: pointer;
  opacity: .7; transition: opacity .15s;
}
.product-page__media .flex-control-thumbs img:hover,
.product-page__media .flex-control-thumbs img.flex-active { opacity: 1; }
.product-page__media .onsale {
  background: var(--color-accent-fill); color: var(--color-on-fill);
  border-radius: var(--r-sm);
  padding: 4px 10px;
  font-size: 12px; font-weight: 700;
  position: absolute; top: var(--sp-4); right: var(--sp-4);
  margin: 0; min-height: auto; min-width: auto; line-height: 1;
}

/* ---------- Summary (артикул, название, цена, кнопка) ---------- */
.product-page__summary {
  display: flex; flex-direction: column;
  gap: var(--sp-3);
}
/* Перепорядочим элементы через flex order:
   1. product_meta (SKU)    -1
   2. product_title          0
   3. price                  1
   4. short description      2
   5. cart form              3 */
.product-page__summary .product_meta { order: -1; margin: 0 0 var(--sp-1); padding: 0; border: 0; font-size: 0; }
.product-page__summary .product_meta .sku_wrapper {
  font-size: 12px; letter-spacing: .7px; text-transform: uppercase;
  color: var(--color-text-soft); font-weight: 400;
}
.product-page__summary .product_meta .sku { color: var(--color-text-soft); font-weight: 400; }
/* Скрыть категорию и теги (выглядит лишним, есть хлебные крошки в WC) */
.product-page__summary .product_meta .posted_in,
.product-page__summary .product_meta .tagged_as { display: none; }

.product-page__summary .product_title {
  order: 0;
  font-size: 32px; font-weight: 700; line-height: 1.2;
  margin: 0; color: var(--color-text);
}

.product-page__summary .price,
.product-page__summary p.price {
  order: 1;
  font-size: 30px; font-weight: 700;
  color: var(--color-accent);
  margin: 0;
}
.product-page__summary .price del,
.product-page__summary p.price del {
  font-size: 18px; color: var(--color-text-soft);
  font-weight: 400; opacity: 1; margin-right: var(--sp-2);
}
.product-page__summary .price ins,
.product-page__summary p.price ins {
  background: none; text-decoration: none;
  color: var(--color-accent); font-weight: 700;
}

.product-page__summary .woocommerce-product-details__short-description {
  order: 2;
  color: var(--color-text-mute);
  font-size: 16px; line-height: 1.6;
}
.product-page__summary .woocommerce-product-details__short-description p:last-child { margin-bottom: 0; }

.product-page__summary form.cart {
  order: 3;
  display: flex; gap: var(--sp-3); align-items: center; flex-wrap: wrap;
  margin: var(--sp-3) 0 0; padding: 0;
}
.product-page__summary form.cart .quantity { margin: 0; }
.product-page__summary form.cart .qty {
  width: 70px; padding: 12px 8px;
  border: 1.5px solid var(--color-line); border-radius: var(--r-md);
  font: inherit; font-size: 16px; text-align: center;
  background: var(--color-surface);
}
.product-page__summary form.cart .qty:focus { outline: none; border-color: var(--color-accent); }
.product-page__summary form.cart .single_add_to_cart_button,
.product-page__summary form.cart button.button {
  flex: 1; min-width: 200px;
  background: var(--color-accent-fill); color: var(--color-on-fill);
  border: 0; border-radius: var(--r-md);
  padding: 14px 32px;
  font: inherit; font-size: 16px; font-weight: 700;
  cursor: pointer;
  transition: background-color .15s;
}
.product-page__summary form.cart .single_add_to_cart_button:hover,
.product-page__summary form.cart button.button:hover { background: var(--color-accent-fill-hover); }

/* Описание товара в summary (под кнопкой) — раньше было в табе «Описание» */
.product-page__summary .product-page__desc {
  order: 4;
  color: var(--color-text);
  font-size: 16px;
  line-height: 1.7;
  margin-top: var(--sp-3);
  padding-top: var(--sp-4);
  border-top: 1px solid var(--color-line);
}
.product-page__summary .product-page__desc p { margin: 0 0 var(--sp-3); }
.product-page__summary .product-page__desc p:last-child { margin-bottom: 0; }
.product-page__summary .product-page__desc ul,
.product-page__summary .product-page__desc ol { padding-left: 20px; margin: 0 0 var(--sp-3); }

/* Скрываем «Артикул:» дублирующийся из meta — заменено нашим визуалом сверху.
   Не скрываем — оригинал нужен для семантики, просто стилизуем minimal. */

/* Скрыть rating дефолтный (если есть) */
.product-page__summary .woocommerce-product-rating { order: 0; margin: 0; }

/* ---------- AFTER (табы + related) ---------- */
.product-page__after { padding: var(--sp-8) 0 var(--sp-12); }

/* WC tabs */
.product-page__after .wc-tabs-wrapper { margin: 0; }
.product-page__after .wc-tabs {
  display: flex; gap: 0;
  list-style: none; margin: 0 0 var(--sp-5); padding: 0;
  border-bottom: 1px solid var(--color-line);
  background: transparent;
}
.product-page__after .wc-tabs::before,
.product-page__after .wc-tabs::after { display: none; }
.product-page__after .wc-tabs li {
  margin: 0; padding: 0;
  border: 0; background: transparent; border-radius: 0;
}
.product-page__after .wc-tabs li::before,
.product-page__after .wc-tabs li::after { display: none; }
.product-page__after .wc-tabs li a {
  display: block;
  padding: 12px 22px;
  font-size: 16px; font-weight: 700;
  color: var(--color-text-mute);
  text-decoration: none;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  transition: color .15s, border-color .15s;
}
.product-page__after .wc-tabs li.active a { color: var(--color-accent); border-bottom-color: var(--color-accent); }
.product-page__after .wc-tabs li a:hover { color: var(--color-accent); }

.product-page__after .wc-tab {
  padding: var(--sp-3) 0 var(--sp-6);
  color: var(--color-text);
  font-size: 16px; line-height: 1.7;
}
.product-page__after .wc-tab > h2 { display: none; } /* убрать WC заголовок таба */
.product-page__after .wc-tab p:last-child { margin-bottom: 0; }
.product-page__after .wc-tab table.shop_attributes {
  border-collapse: collapse;
  width: 100%; max-width: 720px;
}
.product-page__after .wc-tab table.shop_attributes th,
.product-page__after .wc-tab table.shop_attributes td {
  padding: 10px 14px;
  border-bottom: 1px solid var(--color-line);
  text-align: left;
  font-size: 16px;
}
.product-page__after .wc-tab table.shop_attributes th {
  color: var(--color-text-soft); font-weight: 400; width: 40%;
}

/* Отзывы */
.product-page__after #reviews .woocommerce-Reviews-title { font-size: 18px; margin: 0 0 var(--sp-4); }
.product-page__after #reviews .commentlist {
  list-style: none; margin: 0 0 var(--sp-6); padding: 0;
  display: flex; flex-direction: column; gap: var(--sp-3);
}
.product-page__after #reviews .commentlist li.review,
.product-page__after #reviews .commentlist li.comment {
  background: var(--color-surface);
  border: 1px solid var(--color-line);
  border-radius: var(--r-md);
  padding: var(--sp-4) var(--sp-5);
  list-style: none;
}
.product-page__after #reviews .comment_container {
  display: flex; gap: var(--sp-4); align-items: flex-start;
}
.product-page__after #reviews .avatar {
  width: 44px; height: 44px; border-radius: 50%;
}
.product-page__after #reviews .meta {
  margin: 0 0 var(--sp-2);
  font-size: 14px; color: var(--color-text-soft);
}
.product-page__after #reviews .meta strong { color: var(--color-text); font-size: 16px; }
.product-page__after #reviews .description { font-size: 16px; line-height: 1.6; color: var(--color-text); }
.product-page__after #reviews .woocommerce-noreviews {
  color: var(--color-text-mute);
  background: var(--color-bg-mute);
  border-radius: var(--r-md);
  padding: var(--sp-4) var(--sp-5);
  margin: 0 0 var(--sp-5);
}
.product-page__after #reviews #review_form_wrapper {
  background: var(--color-surface);
  border: 1px solid var(--color-line);
  border-radius: var(--r-md);
  padding: var(--sp-5);
}
.product-page__after #reviews #review_form .comment-form-rating label,
.product-page__after #reviews #review_form .comment-reply-title { font-weight: 700; }
.product-page__after #reviews #review_form input[type="text"],
.product-page__after #reviews #review_form input[type="email"],
.product-page__after #reviews #review_form textarea {
  width: 100%;
  border: 1.5px solid var(--color-line);
  border-radius: var(--r-md);
  padding: 10px 14px;
  font: inherit;
  margin-top: 4px;
}
.product-page__after #reviews #review_form input:focus,
.product-page__after #reviews #review_form textarea:focus { outline: none; border-color: var(--color-accent); }
.product-page__after #reviews #review_form .submit {
  background: var(--color-accent-fill); color: var(--color-on-fill);
  border: 0; border-radius: var(--r-md);
  padding: 12px 24px;
  font: inherit; font-weight: 700; cursor: pointer;
}
.product-page__after #reviews #review_form .submit:hover { background: var(--color-accent-fill-hover); }

/* ---------- Похожие товары — 4 в ряд × 2 ряда ---------- */
.product-page__after .related.products,
.product-page__after .related {
  margin: var(--sp-10) 0 0;
  border-top: 1px solid var(--color-line);
  padding-top: var(--sp-8);
  clear: both;
}
.product-page__after .related > h2,
.product-page__after .related.products > h2 {
  font-size: 22px; font-weight: 700;
  margin: 0 0 var(--sp-6); color: var(--color-text);
}
.product-page__after .related ul.products,
.product-page__after .related.products ul.products {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--sp-4);
  list-style: none; margin: 0; padding: 0;
}

/* ============================================================
   АДАПТИВ
   ============================================================ */
@media (max-width: 1024px) {
  .catalog-landing .cats-grid,
  .catalog-landing .cat-adv__grid { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .catalog-archive ul.products { grid-template-columns: repeat(3, minmax(0,1fr)); }
  .product-page__after .related ul.products,
  .product-page__after .related.products ul.products { grid-template-columns: repeat(3, minmax(0,1fr)); }
}
@media (max-width: 768px) {
  .cat-hero { padding-block: var(--sp-8) var(--sp-10); }
  /* Компактный mobile filter-bar — было много пустоты по высоте.
     КРИТИЧНО: в column-flex `flex-basis: 360px` (из desktop правил группы) даёт
     min-height 360px вместо ширины. Сбрасываем flex для всех детей. */
  .catalog-archive .filters-bar { padding-block: var(--sp-2); }
  .catalog-archive .filters-bar__inner {
    flex-direction: column;
    align-items: stretch;
    gap: var(--sp-2);
    padding: var(--sp-3) var(--sp-4);
  }
  .catalog-archive .filters-bar__inner > * { flex: 0 0 auto !important; }
  .catalog-archive .filters-bar__title { display: none; } /* избыточно — блок и так очевиден */
  .catalog-archive .filters-bar__group,
  .catalog-archive .filters-bar__group--price {
    flex: 0 0 auto !important;
    min-width: 0;
    gap: var(--sp-2);
  }
  .catalog-archive .filters-bar .widget {
    flex: 1 1 auto !important;
    width: 100%;
    min-width: 0;
  }
  .catalog-archive .filters-bar .widget form,
  .catalog-archive .filters-bar .price_slider_wrapper {
    width: 100%;
    min-width: 0;
    box-sizing: border-box;
  }
  .catalog-archive .filters-bar__reset { margin-left: 0; align-self: flex-end; font-size: 14px; }
  .catalog-archive .filters-bar .widget-title,
  .catalog-archive .filters-bar .widgettitle { font-size: 14px; margin-right: var(--sp-2); }
  .catalog-archive .filters-bar .price_slider_wrapper { flex-wrap: wrap; gap: var(--sp-2); }
  .catalog-archive .filters-bar .price_slider.ui-slider {
    flex: 0 0 calc(100% - 20px);
    width: calc(100% - 20px);
    min-width: 0;
    max-width: calc(100% - 20px);
    box-sizing: border-box;
  }
  .catalog-archive .filters-bar .price_slider_amount {
    width: 100%;
    min-width: 0;
    gap: var(--sp-2);
    flex-wrap: wrap;
  }
  .catalog-archive .filters-bar .price_slider_amount .price_label { font-size: 12px; }
  .catalog-archive .filters-bar .price_slider_amount .button { padding: 8px 14px; font-size: 14px; }
  .catalog-archive ul.products { grid-template-columns: repeat(2, minmax(0,1fr)); gap: var(--sp-4); }
  .product-page__top { padding: var(--sp-6) 0; }
  .product-page__top-grid { grid-template-columns: 1fr; gap: var(--sp-5); }
  .product-page__summary .product_title { font-size: 24px; }
  .product-page__summary .price,
  .product-page__summary p.price { font-size: 24px; }
  .product-page__after .related ul.products,
  .product-page__after .related.products ul.products { grid-template-columns: repeat(2, minmax(0,1fr)); }
}
@media (max-width: 520px) {
  .catalog-landing .cats-grid,
  .catalog-landing .cat-adv__grid { grid-template-columns: 1fr; }
  .catalog-archive ul.products { grid-template-columns: 1fr; }
  .product-page__summary form.cart { flex-direction: column; align-items: stretch; }
  .product-page__summary form.cart .single_add_to_cart_button,
  .product-page__summary form.cart button.button { width: 100%; }
}

@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]) .catalog-archive .woocommerce-ordering select{
    background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path d='M1 1l4 4 4-4' stroke='%23A8A29B' stroke-width='1.6' fill='none' stroke-linecap='round' stroke-linejoin='round'/></svg>")}
}
:root[data-theme="dark"] .catalog-archive .woocommerce-ordering select{
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path d='M1 1l4 4 4-4' stroke='%23A8A29B' stroke-width='1.6' fill='none' stroke-linecap='round' stroke-linejoin='round'/></svg>")}
