/* ==========================================================================
   IRBIS — CSS дочерней темы (medical-pharmacy-child)
   Спецификация: plans/design-modernization-spec.md, §4–§7
   Слои: 1) theme.json (токены) 2) этот файл (режимные правки) 3) inline-переменные из functions.php
   Обозначения в тексте: §4.2 — шапка, §4.3 — mega-menu, §4.4 — hero, §4.5 — карточка,
   §4.6 — список поиска, §4.7 — секции главной, §4.8 — single-product, §4.9 — нижняя панель,
   §4.10 — футер, §5 — иконки/анимация, §6 — доступность.
   ========================================================================== */

/* --------------------------------------------------------------------------
   0. Нулевая точка: снимаем наследие Creta, которое theme.json не перекрывает.
   Родительский style.css (4640 строк) объявляет inline-`!important`-хвост
   (строки 4556–4640) и декоративные псевдоэлементы шапки — всё это переопределяем
   здесь, в порядке подключения после родительского.
   -------------------------------------------------------------------------- */

/* 0.1 Декоративные «наклонные» плашки за логотипом (§4.2 — шапка белая, без графики). */
.lower-header .logo-block::before,
.lower-header .logo-block::after {
	content: initial;
	background: none;
	position: static;
	display: none;
	width: 0;
	height: 0;
	border-radius: 0;
	transform: none;
}

/* 0.2 Родитель позиционирует шапку absolute поверх hero — нам нужен sticky-поток (§4.2). */
.lower-header,
.site-header,
header.wp-block-template-part {
	position: sticky;
	top: 0;
	left: auto;
	right: auto;
	z-index: var(--irbis-z-header, 50);
	background: var(--irbis-white);
}

/* 0.3 Родительские inline-радиусы 30/70px (§3.2 — одна шкала вместо 30/70).
   Блочные стили в inline-атрибуте style() победить нельзя без !important,
   поэтому !important здесь точечный и без !important-каскада. */
.header-right-inner,
.button-block .wp-block-button .wp-block-button__link,
.button-block .wp-block-button__link {
	border-top-left-radius: var(--wp--preset--border-radius--lg, 16px) !important;
	border-top-right-radius: var(--wp--preset--border-radius--pill, 999px) !important;
	border-bottom-right-radius: var(--wp--preset--border-radius--pill, 999px) !important;
	border-bottom-left-radius: var(--wp--preset--border-radius--lg, 16px) !important;
}

/* 0.4 Тень кнопки «Book Appointment» и прочие box-shadow-декоры (§3.3 — только карточные тени). */
.slide-cover .wp-block-button__link,
.button-block .wp-block-button__link,
.wp-block-button__link {
	box-shadow: none;
	margin-top: 0;
	line-height: 1.4;
}

/* 0.5 Подвал Creta: ссылка на Creta Themes и «Doctorate Medical Center» снимаются
   из markup (см. parts/footer-columns.html), здесь страхуем только декор. */
.copyright-text {
	text-decoration: none;
	font-size: 13px;
}

/* 0.6 Слайдер демо (Swiper) — скрипт снят, разметка осталась в контенте страницы 16.
   Пока контент не вычищен, хотя бы убираем минимальную высоту cover'а и анимации (§4.4). */
.slide-wrap,
.medical-pharmacy-slider,
.medical-pharmacy-slider .swiper-slide {
	min-height: 0;
}

.slide-cover {
	min-height: 0 !important;
}

/* 0.7 FontAwesome-иконки внутри контента (§5): шрифт снят, глифы превращаются в квадраты.
   Удаляем псевдоиконки у всех родительских классов, которые на них завязаны. */
.btn-1 a::before,
.wp-block-ablocks-icon,
.ablocks-icon,
.fa,
.fas,
.far,
.fab,
.fa-solid,
.fa-regular,
.fa-brands {
	content: initial;
	font-family: inherit;
	speak: none;
}

i.fa,
i.fas,
i.far,
i.fab,
svg.svg-icon,
.icon-list__icon .fa {
	display: none;
}

/* animate.css/WOW.js: скрипты сняты, поэтому элементы с .wow остаются с opacity:0 из animate.css.
   animate.css снят вместе со скриптом — на всякий случай принудительно показываем. */
.wow,
.animated {
	visibility: visible;
	opacity: 1;
	animation: none;
}


/* --------------------------------------------------------------------------
   1. Глобальный базис: раскладка, скролл, фокус (§3.5, §6).
   -------------------------------------------------------------------------- */

html {
	-webkit-text-size-adjust: 100%;
	scroll-padding-top: calc(var(--irbis-header-h, 72px) + 12px);
}

body {
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeSpeed;
	word-break: normal;
	overflow-wrap: break-word;
}

/* Единственный источник правды по отступам секций. */
.wp-site-blocks {
	display: flex;
	flex-direction: column;
	min-height: 100vh;
}

.wp-site-blocks > main {
	flex: 1 0 auto;
}

main#content {
	padding-top: var(--irbis-section, clamp(40px, 6vw, 80px));
	padding-bottom: var(--irbis-section, clamp(40px, 6vw, 80px));
}

/* Макет 01: hero x20 w1240 при 1280 (wideSize 1240, gutter = (1280−1240)/2 = 20).
   Снимаем врезание (root padding 32 на body + padding-inline `.wp-site-blocks` 32)
   отрицательным margin и ставим padding-inline 16 — тогда область контента 16…1264,
   а `.irbis-wide` (max-width 1240, margin auto) даёт ровно x20 w1240.
   На узких экранах padding-inline 16 работает как gutter, hero центрируется.
   !important нужен: родительский `.wp-site-blocks .alignfull` даёт margin с !important.
   padding-top 32px: hero y=105 (макет 01: y160 − 56px пояснительной полосы = 104). */
@media (min-width: 640px) {
	.wp-site-blocks main#content.irbis-front {
		box-sizing: border-box;
		padding-inline: var(--irbis-spacing-md, 16px);
		padding-top: var(--irbis-spacing-xl, 32px);
		margin-inline: calc(-2 * var(--wp--custom--spacing--outer, clamp(16px, 4vw, 32px))) !important;
	}
}

/* Витрина (§4.5, макеты 02 и 04) — тот же приём снятия двойного врезания.
   Контент врезается дважды: root padding темы (styles.spacing.padding = gutter,
   на body) + padding-inline родительского `.wp-site-blocks` (style.css:50-59,
   --wp--custom--spacing--outer). Итог живьём: 390px ⇒ main x32 w326 (карточка
   326px против 173px в две колонки по макету 04), 1280px ⇒ main x64 w1152
   (карточка 270px против 292px по макету 02).
   Формула −2·outer снимает оба врезания (clamp(16px,4vw,32px): 390→16, 1280→32,
   то есть −32 и −64), padding-inline возвращает канву макета:
   390 ⇒ x16 w358 (2 колонки (358−12)/2 = 173px);
   1280 ⇒ x20 w1240 = wideSize (4 колонки (1240−72)/4 = 292px).
   .alignwide внутри (max-width 1240) при канве 1240 даёт ровно x20 w1240. */
.wp-site-blocks main#content.irbis-archive {
	box-sizing: border-box;
	padding-inline: var(--irbis-spacing-md, 16px);
	margin-inline: calc(-2 * var(--wp--custom--spacing--outer, clamp(16px, 4vw, 32px))) !important;
}

@media (min-width: 1280px) {
	.wp-site-blocks main#content.irbis-archive {
		padding-inline: 20px;
	}
}

/* §5 — плавная прокрутка только когда она инициирована JS-якорем (см. irbis.js),
   поэтому здесь scroll-behavior не объявляем вовсе. */

/* 1.1 Фокус (§6, обязательный критерий приёмки). */
:focus-visible {
	outline: 2px solid var(--irbis-brand-hover, #0B6349);
	outline-offset: 2px;
}

/* Снимаем родительский «тот же outline на :focus» для мышных кликов. */
:focus:not(:focus-visible) {
	outline: none;
}

a,
button,
input,
select,
textarea {
	transition: color 150ms cubic-bezier(0.2, 0.8, 0.2, 1),
		background-color 150ms cubic-bezier(0.2, 0.8, 0.2, 1),
		border-color 150ms cubic-bezier(0.2, 0.8, 0.2, 1),
		box-shadow 200ms cubic-bezier(0.2, 0.8, 0.2, 1);
}

/* 1.2 §5 — единая кривая анимации, 150–200 мс, только на hover/focus. */
.irbis-scope,
.irbis-scope * {
	transition-timing-function: cubic-bezier(0.2, 0.8, 0.2, 1);
	transition-duration: 150ms;
}

/* 1.3 §5 — `prefers-reduced-motion` полностью выключает переходы. */
@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}
}

/* 1.4 Изображения: никогда не шире контейнера, без родительских «растяний». */
img {
	max-width: 100%;
	height: auto;
	display: block;
}

figure {
	margin: 0;
}


/* --------------------------------------------------------------------------
   2. §4.2 Шапка — sticky 72px → 56px при скролле > 120px.
   Разметка: parts/main-header.html (классы `.irbis-header`, `.irbis-header__*`).
   -------------------------------------------------------------------------- */

/* Макет 01: шапка full-bleed (белая полоса x0…1280) + линия #E4E9EF на нижней границе.
   Врезание 64px при 1280 = root padding (theme.json, на body) 32 + padding-inline
   `.wp-site-blocks` 32; снимаем его отрицательным margin (gutter = обе величины). */
.irbis-header {
	position: sticky;
	top: 0;
	z-index: var(--irbis-z-header, 50);
	background: var(--irbis-white);
	box-shadow: none;
	border-bottom: 1px solid var(--irbis-line);
	margin-inline: calc(-2 * var(--wp--custom--spacing--outer, clamp(16px, 4vw, 32px)));
}

/* Бар = ровно wideSize по центру: содержимое x20…1260 при 1280 (макет 01: лого x20,
   «Войти» x1188…1260). 72px border-box — без padding-block (минус 10px прошлого запаса).
   padding-inline: 0 на широких экранах (центровка wideSize уже даёт gutter 20),
   не меньше 16px на узких. */
.irbis-header__bar {
	display: flex;
	align-items: center;
	box-sizing: border-box;
	gap: 16px;
	min-height: var(--irbis-header-h, 72px);
	max-width: var(--irbis-wide, 1240px);
	margin-inline: auto;
	padding-block: 0;
	padding-inline: clamp(0px, calc((var(--irbis-wide, 1240px) - 100vw) / 2), var(--irbis-spacing-md, 16px));
}

/* Логотип: ≤40px по высоте, текст 18px/800 (§4.2). */
.irbis-header__logo {
	display: flex;
	align-items: center;
	gap: 10px;
	flex: 0 0 auto;
	text-decoration: none;
	color: var(--irbis-ink);
}

.irbis-header__logo img,
.irbis-header__logo .wp-block-site-logo img,
.irbis-header__logo svg {
	height: 40px;
	width: auto;
	max-width: 160px;
}

.irbis-header__logo img {
	height: 40px;
}

.irbis-header__name {
	font-size: 18px;
	font-weight: 800;
	letter-spacing: -0.02em;
	line-height: 1.2;
	color: var(--irbis-ink);
}

.irbis-header__name .irbis-header__name-sub {
	display: block;
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--irbis-ink-muted);
}

/* Навигация: Manrope 15/500, без uppercase, активный пункт — underline 2px (§4.2). */
.irbis-header__nav,
.irbis-header__nav .wp-block-navigation__container {
	display: flex;
	align-items: center;
	gap: 4px;
}

/* Макет 01: высота строки шапки 72px. Core-навигация привносит в контейнер
   padding-left:40px и margin:16px 0 — в сумме они раздувают nav до 82px,
   а вместе с ним и всю строку (замер: bar h82). Сбрасываем с запасом по
   специфичности: (0,3,0) против (0,2,0) у core. */
.irbis-header .irbis-header__nav,
.irbis-header .irbis-header__nav .wp-block-navigation__container,
.irbis-header .irbis-header__nav ul {
	margin: 0;
	padding: 0;
	list-style: none;
}

.irbis-header__nav .wp-block-navigation-item > a,
.irbis-header__nav .wp-block-navigation-item > button {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 0 12px;
	font-size: 15px;
	font-weight: 500;
	line-height: 1.3;
	letter-spacing: 0;
	text-transform: none;
	color: var(--irbis-ink);
	background: none;
	border: 0;
	cursor: pointer;
	text-decoration: none;
	position: relative;
}

.irbis-header__nav .wp-block-navigation-item > a:hover,
.irbis-header__nav .wp-block-navigation-item > button:hover,
.irbis-header__nav .wp-block-navigation-item > a:focus-visible {
	color: var(--irbis-brand-hover);
	text-decoration: none;
}

/* Активный пункт и hover — «подчёркивание» 2px цвета бренда. */
.irbis-header__nav .wp-block-navigation-item > a::after,
.irbis-header__nav .wp-block-navigation-item.is-open > button::after {
	content: "";
	position: absolute;
	left: 12px;
	right: 12px;
	bottom: 4px;
	height: 2px;
	border-radius: 2px;
	background: var(--irbis-brand);
	transform: scaleX(0);
	transform-origin: left center;
	transition: transform 200ms cubic-bezier(0.2, 0.8, 0.2, 1);
}

.irbis-header__nav .wp-block-navigation-item > a:hover::after,
.irbis-header__nav .wp-block-navigation-item > a:focus-visible::after,
.irbis-header__nav .wp-block-navigation-item.current-menu-item > a::after,
.irbis-header__nav .wp-block-navigation-item.current > a::after,
.irbis-header__nav .wp-block-navigation-item.is-open > button::after {
	transform: scaleX(1);
}

/* Поисковое поле 260px (§4.2, макет 01: 320×44 @x640).
   flex-grow 0 + shrink 0 — на 1280px строка шапки умещается целиком
   (198+396+260+44+44+126+72 + 6×16 = 1236 ≤ 1240), поэтому сжатие не нужно;
   с shrink:1 поле «съедалось» до 238px. */
.irbis-header__search {
	position: relative;
	flex: 0 0 260px;
	width: 260px;
	min-width: 0;
}

.irbis-header__search form,
.irbis-header__search .wp-block-search {
	display: block;
}

.irbis-header__search .wp-block-search__input,
.irbis-header__search input[type="search"],
.irbis-header__search input[type="text"] {
	width: 100%;
	min-height: 44px;
	padding: 8px 44px 8px 40px;
	font-size: 15px;
	font-weight: 500;
	color: var(--irbis-ink);
	background: var(--irbis-surface);
	border: 1px solid var(--irbis-line);
	border-radius: var(--wp--preset--border-radius--pill, 999px);
	appearance: none;
}

.irbis-header__search .wp-block-search__input::placeholder,
.irbis-header__search input::placeholder {
	color: var(--irbis-ink-muted);
	font-weight: 500;
}

.irbis-header__search .wp-block-search__input:focus,
.irbis-header__search input:focus {
	background: var(--irbis-white);
	border-color: var(--irbis-brand);
}

/* Стрелка поиска слева, кнопка справа — оба 44×44 зонами. */
.irbis-header__search::before {
	content: "";
	position: absolute;
	left: 12px;
	top: 50%;
	width: 20px;
	height: 20px;
	margin-top: -10px;
	background: currentColor;
	color: var(--irbis-ink-muted);
	pointer-events: none;
	-webkit-mask: var(--irbis-icon-search) center / contain no-repeat;
	mask: var(--irbis-icon-search) center / contain no-repeat;
}

.irbis-header__search .wp-block-search__button,
.irbis-header__search button[type="submit"] {
	position: absolute;
	right: 0;
	top: 50%;
	transform: translateY(-50%);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	padding: 0;
	font-size: 0;
	color: var(--irbis-ink-muted);
	background: transparent;
	border: 0;
	border-radius: var(--wp--preset--border-radius--pill, 999px);
	cursor: pointer;
}

.irbis-header__search .wp-block-search__button::after,
.irbis-header__search button[type="submit"]::after {
	content: "";
	width: 20px;
	height: 20px;
	background: currentColor;
	-webkit-mask: var(--irbis-icon-arrow-right) center / contain no-repeat;
	mask: var(--irbis-icon-arrow-right) center / contain no-repeat;
}

.irbis-header__search .wp-block-search__button:hover,
.irbis-header__search button[type="submit"]:hover {
	color: var(--irbis-brand);
}

/* Телефон одной строкой, ink-700 15px (§4.2). */
.irbis-header__phone {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	min-height: 44px;
	padding: 0 8px;
	font-size: 15px;
	font-weight: 700;
	line-height: 1.2;
	white-space: nowrap;
	color: var(--irbis-ink-soft);
	text-decoration: none;
}

.irbis-header__phone:hover {
	color: var(--irbis-brand-hover);
	text-decoration: none;
}

/* Аккаунт и «Войти» появляются только на десктопе (макет 01 @1280). */
.irbis-header__account,
.irbis-header__login {
	display: none;
}

/* «Резервы» — пилюля со счётчиком (§4.2): бренд, счётчик ≥20×20, тач-зона 44×44. */
.irbis-header__reserves {
	box-sizing: border-box;
	display: inline-flex;
	align-items: center;
	gap: 8px;
	min-height: 44px;
	padding: 0 14px;
	font-size: 15px;
	font-weight: 700;
	line-height: 1;
	white-space: nowrap;
	color: var(--irbis-white);
	background: var(--irbis-brand);
	border: 1px solid var(--irbis-brand);
	border-radius: var(--wp--preset--border-radius--pill, 999px);
	text-decoration: none;
}

.irbis-header__reserves:hover,
.irbis-header__reserves:focus-visible {
	color: var(--irbis-white);
	background: var(--irbis-brand-hover);
	border-color: var(--irbis-brand-hover);
	text-decoration: none;
}

.irbis-header__reserves-count {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 20px;
	min-height: 20px;
	padding: 0 5px;
	font-size: 12px;
	font-weight: 800;
	font-variant-numeric: tabular-nums;
	line-height: 1;
	color: var(--irbis-brand);
	background: var(--irbis-white);
	border-radius: var(--wp--preset--border-radius--pill, 999px);
}

.irbis-header__reserves-count[data-count="0"] {
	display: none;
}

/* Макет 01 @1280: телефон — иконка 24px (номер в aria-label), аккаунт-иконка
   44×44, «Войти» — пилюля 72×44. Бюджет строки:
   198(лого)+16+400(nav)+16+260(поиск)+16+44+16+44+16+126(резервы)+16+72 = 1240. */
@media (min-width: 1024px) {
	.irbis-header__phone {
		flex: 0 0 44px;
		box-sizing: border-box;
		width: 44px;
		justify-content: center;
		gap: 0;
		padding: 0;
	}

	.irbis-header__phone-text {
		display: none;
	}

	.irbis-header__account {
		display: inline-flex;
		flex: 0 0 44px;
		box-sizing: border-box;
		align-items: center;
		justify-content: center;
		width: 44px;
		min-height: 44px;
		padding: 0;
		color: var(--irbis-ink-soft);
		text-decoration: none;
	}

	.irbis-header__account:hover,
	.irbis-header__account:focus-visible {
		color: var(--irbis-brand-hover);
		text-decoration: none;
	}

	/* Макет 01: пилюля «Войти» ровно 72×44 @x1188…1260. Фиксированная ширина
	   + border-box: рамка 1px не раздувает высоту (было 106×46). */
	.irbis-header__login {
		display: inline-flex;
		flex: 0 0 72px;
		box-sizing: border-box;
		align-items: center;
		justify-content: center;
		width: 72px;
		min-height: 44px;
		padding: 0;
		font-size: 13px;
		font-weight: 600;
		line-height: 1;
		white-space: nowrap;
		color: var(--irbis-ink-soft);
		background: var(--irbis-surface);
		border: 1px solid var(--irbis-line-strong);
		border-radius: var(--wp--preset--border-radius--pill, 999px);
		text-decoration: none;
	}

	.irbis-header__login:hover,
	.irbis-header__login:focus-visible {
		color: var(--irbis-brand-hover);
		border-color: var(--irbis-brand);
		text-decoration: none;
	}
}

/* Мобильный набор кнопок живёт только в мобильной шапке (§13, ≤781px). */
.irbis-header__mobile-icons {
	display: none;
}

/* Соцсети из шапки убраны (§4.2) — на всякий случай гасим, если остались в pattern. */
.irbis-header .wp-block-social-links,
.lower-header .social-block {
	display: none;
}

/* Правая часть шапки: без «кармана» с фоном и скруглением 30/70 (§4.2 — шапка белая). */
.irbis-header .header-right-inner,
.lower-header .header-right-inner {
	background: transparent;
	padding-left: 0;
	padding-right: 0;
	border-radius: 0;
}

.lower-header .header-right-inner {
	background: transparent !important;
	padding-left: 0 !important;
	padding-right: 0 !important;
	border-radius: 0 !important;
}

/* Sticky-состояние: >120px скрипт навешивает .is-sticky (§4.2). */
.is-sticky .irbis-header,
.irbis-header.is-sticky {
	box-shadow: var(--irbis-shadow-header, 0 1px 0 #E4E9EF);
	border-bottom-color: transparent;
}

.is-sticky .irbis-header__bar,
.irbis-header.is-sticky .irbis-header__bar {
	min-height: var(--irbis-header-h-m, 56px);
}

.is-sticky .irbis-header__logo img,
.irbis-header.is-sticky .irbis-header__logo img {
	height: 28px;
}

.is-sticky .irbis-header__search,
.irbis-header.is-sticky .irbis-header__search {
	width: 200px;
	flex-basis: 200px;
}

/* Скролл-компенсация, чтобы контент не «прыгал» под sticky-шапкой. */
body {
	scroll-behavior: auto;
}


/* --------------------------------------------------------------------------
   3. §4.3 Mega-menu «Каталог».
   Панель: surface-50, radius md, shadow card-hover, ширина wide (1240).
   Мобильный drawer 280px с аккордеоном.
   -------------------------------------------------------------------------- */

.irbis-mega {
	position: absolute;
	left: 0;
	right: 0;
	top: 100%;
	display: none;
	padding: 0 var(--irbis-gutter, clamp(16px, 4vw, 32px));
	background: var(--irbis-white);
}

.irbis-mega.is-open,
.irbis-header.is-open .irbis-mega {
	display: block;
}

.irbis-mega__panel {
	max-width: var(--irbis-wide, 1240px);
	margin-inline: auto;
	padding: var(--irbis-spacing-lg, 24px);
	background: var(--irbis-surface);
	border: 1px solid var(--irbis-line);
	border-radius: var(--wp--preset--border-radius--md, 12px);
	box-shadow: var(--irbis-shadow-card-hover, 0 6px 16px rgba(15, 23, 42, 0.12));
}

.irbis-mega__grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
	gap: var(--irbis-spacing-lg, 24px);
}

.irbis-mega__col-title {
	margin: 0 0 8px;
	font-size: 12px;
	font-weight: 800;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--irbis-ink-muted);
}

.irbis-mega__list {
	margin: 0;
	padding: 0;
	list-style: none;
}

.irbis-mega__list li {
	margin: 0;
}

.irbis-mega__link {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
	min-height: 40px;
	padding: 6px 10px;
	font-size: 15px;
	font-weight: 500;
	line-height: 1.35;
	color: var(--irbis-ink);
	border-radius: var(--wp--preset--border-radius--sm, 8px);
	text-decoration: none;
}

.irbis-mega__link:hover,
.irbis-mega__link:focus-visible {
	color: var(--irbis-brand-hover);
	background: var(--irbis-brand-soft);
	text-decoration: none;
}

.irbis-mega__count {
	font-size: 12px;
	font-weight: 600;
	font-variant-numeric: tabular-nums;
	color: var(--irbis-ink-muted);
	flex: 0 0 auto;
}

.irbis-mega__foot {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	margin-top: var(--irbis-spacing-lg, 24px);
	padding-top: var(--irbis-spacing-md, 16px);
	border-top: 1px solid var(--irbis-line);
}

.irbis-mega__note {
	font-size: 13px;
	color: var(--irbis-ink-muted);
}

/* Mega-menu как «плоский» блок в навигации: ссылка-кнопка «Каталог». */
.irbis-nav-trigger {
	position: relative;
}

.irbis-nav-trigger .irbis-icon-caret {
	width: 16px;
	height: 16px;
	flex: 0 0 auto;
	transition: transform 200ms cubic-bezier(0.2, 0.8, 0.2, 1);
}

.irbis-nav-trigger[aria-expanded="true"] .irbis-icon-caret {
	transform: rotate(180deg);
}

/* Затемнение страницы под mega-menu/drawer. */
.irbis-overlay {
	position: fixed;
	inset: 0;
	z-index: var(--irbis-z-overlay, 90);
	display: none;
	background: rgba(15, 23, 42, 0.4);
	opacity: 0;
	transition: opacity 200ms cubic-bezier(0.2, 0.8, 0.2, 1);
}

body.has-irbis-overlay .irbis-overlay {
	display: block;
	opacity: 1;
}

/* Мобильный drawer 280px + аккордеон (§4.3).
   `box-sizing: border-box` обязателен: без него паддинг 16+16 добавлялся к
   ширине и rect drawer был 312px против 280px по §4.3. */
.irbis-drawer {
	position: fixed;
	box-sizing: border-box;
	top: 0;
	bottom: 0;
	left: 0;
	z-index: var(--irbis-z-drawer, 80);
	width: 280px;
	max-width: 88vw;
	overflow-y: auto;
	overscroll-behavior: contain;
	padding: 16px;
	padding-bottom: calc(80px + env(safe-area-inset-bottom, 0px));
	background: var(--irbis-white);
	box-shadow: var(--irbis-shadow-card-hover, 0 6px 16px rgba(15, 23, 42, 0.12));
	transform: translateX(-100%);
	transition: transform 200ms cubic-bezier(0.2, 0.8, 0.2, 1);
}

body.has-irbis-drawer .irbis-drawer {
	transform: translateX(0);
}

.irbis-drawer__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	margin-bottom: 12px;
}

.irbis-drawer__title {
	margin: 0;
	font-size: 15px;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	color: var(--irbis-ink-muted);
}

.irbis-icon-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	padding: 0;
	color: var(--irbis-ink-soft);
	background: var(--irbis-surface);
	border: 1px solid var(--irbis-line);
	border-radius: var(--wp--preset--border-radius--sm, 8px);
	cursor: pointer;
}

.irbis-icon-btn:hover {
	color: var(--irbis-brand-hover);
	background: var(--irbis-brand-soft);
	border-color: var(--irbis-brand-soft);
}

.irbis-accordion {
	margin: 0;
	padding: 0;
	list-style: none;
}

.irbis-accordion__item {
	margin: 0;
	border-bottom: 1px solid var(--irbis-line);
}

.irbis-accordion__row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
	width: 100%;
	min-height: 48px;
	padding: 8px 4px;
	font: inherit;
	font-size: 15px;
	font-weight: 600;
	text-align: left;
	color: var(--irbis-ink);
	background: none;
	border: 0;
	cursor: pointer;
}

.irbis-accordion__row:hover {
	color: var(--irbis-brand-hover);
}

.irbis-accordion__row .irbis-icon-caret {
	width: 18px;
	height: 18px;
	flex: 0 0 auto;
	transition: transform 200ms cubic-bezier(0.2, 0.8, 0.2, 1);
}

.irbis-accordion__row[aria-expanded="true"] .irbis-icon-caret {
	transform: rotate(180deg);
}

.irbis-accordion__panel {
	display: none;
	margin: 0;
	padding: 0 0 8px 12px;
	list-style: none;
}

.irbis-accordion__row[aria-expanded="true"] + .irbis-accordion__panel {
	display: block;
}

.irbis-accordion__panel a {
	display: block;
	min-height: 40px;
	padding: 8px 8px 8px 0;
	font-size: 14px;
	font-weight: 500;
	color: var(--irbis-ink-soft);
	text-decoration: none;
}

.irbis-accordion__panel a:hover {
	color: var(--irbis-brand-hover);
}

/* Бургер (§4.2 — мобильная шапка). */
.irbis-burger {
	display: none;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	padding: 0;
	color: var(--irbis-ink);
	background: none;
	border: 0;
	cursor: pointer;
}

.irbis-burger__box {
	position: relative;
	width: 22px;
	height: 14px;
}

.irbis-burger__box::before,
.irbis-burger__box::after,
.irbis-burger__box span {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	height: 2px;
	border-radius: 2px;
	background: currentColor;
	transition: transform 200ms cubic-bezier(0.2, 0.8, 0.2, 1),
		opacity 150ms cubic-bezier(0.2, 0.8, 0.2, 1);
}

.irbis-burger__box::before {
	top: 0;
}

.irbis-burger__box span {
	top: 6px;
}

.irbis-burger__box::after {
	bottom: 0;
}

body.has-irbis-drawer .irbis-burger__box::before {
	transform: translateY(6px) rotate(45deg);
}

body.has-irbis-drawer .irbis-burger__box::after {
	transform: translateY(-6px) rotate(-45deg);
}

body.has-irbis-drawer .irbis-burger__box span {
	opacity: 0;
}


/* --------------------------------------------------------------------------
   4. §4.4 Hero — surface-50, radius lg, padding xl, H1, лид 18px, поиск + чипсы.
   Без слайдера, без параллакса, одно затухание 200ms при первой отрисовке.
   -------------------------------------------------------------------------- */

/* Макет 01: карточка hero 1240×344, контент с x52 = padding 32, зазор до следующей
   секции 32px (hero bottom 504 → «Категории» baseline 582).
   border-box обязателен: иначе padding 32 + border 1 выходят за max-width 1240
   и карточка растёт до 1248px (x16 вместо x20). */
.irbis-hero {
	box-sizing: border-box;
	margin: 0 0 var(--irbis-spacing-xl, 32px);
	padding: var(--irbis-spacing-xl, 32px);
	background: var(--irbis-surface);
	border: 1px solid var(--irbis-line);
	border-radius: var(--wp--preset--border-radius--lg, 16px);
}

/* Макет 01: контент hero на всю ширину карточки (текст с x52 = padding 32), 840-ограничения нет. */
.irbis-hero__inner {
	max-width: none;
	margin-inline: 0;
}

.irbis-hero__eyebrow {
	margin: 0 0 12px;
	font-size: 12px;
	font-weight: 800;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--irbis-brand);
}

.irbis-hero h1,
.irbis-hero__title {
	margin: 0 0 12px;
	/* Макет 01: H1 44/800, leading 48 (baseline 230 → 278), два строки. */
	max-width: 26ch;
	font-size: 44px;
	font-weight: 800;
	line-height: 1.1;
	letter-spacing: -0.02em;
	color: var(--irbis-ink);
}

.irbis-hero__lead {
	margin: 0 0 var(--irbis-spacing-lg, 24px);
	/* Макет 01: лид 18/500 в ОДНУ строку (1176px контента), baseline 316. */
	max-width: none;
	font-size: 18px;
	font-weight: 500;
	line-height: 1.55;
	color: var(--irbis-ink-soft);
}

/* Макет 01: поле 700×56 x52, кнопка 172×56 x764 (gap 12), «Как это работает» x964. */
.irbis-hero__search {
	display: flex;
	align-items: stretch;
	gap: var(--irbis-spacing-lg, 24px);
	margin: 0 0 var(--irbis-spacing-md, 16px);
}

.irbis-hero__search .wp-block-search,
.irbis-hero__search form {
	flex: 1 1 auto;
}

.irbis-hero__search .wp-block-search__input,
.irbis-hero__search input[type="search"],
.irbis-hero__search input[type="text"] {
	width: 100%;
	min-height: 56px;
	/* Макет 01: лупа 24px с x76 (relative 24), текст placeholder с x110 (relative 58). */
	padding: 12px 20px 12px 58px;
	font-size: 16px;
	font-weight: 500;
	color: var(--irbis-ink);
	background: var(--irbis-white);
	border: 1px solid var(--irbis-line-strong);
	border-radius: var(--wp--preset--border-radius--pill, 999px);
	appearance: none;
}

.irbis-hero__search .wp-block-search__input:focus,
.irbis-hero__search input:focus {
	border-color: var(--irbis-brand);
	box-shadow: 0 0 0 3px var(--irbis-brand-soft);
}

.irbis-hero__search .wp-block-search__button,
.irbis-hero__search button[type="submit"] {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 56px;
	/* Макет 01: кнопка «Найти» 172×56, текст 16/700. */
	min-width: 172px;
	padding: 0 24px;
	font-size: 16px;
	font-weight: 700;
	color: var(--irbis-white);
	background: var(--irbis-brand);
	border: 0;
	border-radius: var(--wp--preset--border-radius--pill, 999px);
	text-decoration: none;
	cursor: pointer;
}

.irbis-hero__search .wp-block-search__button:hover,
.irbis-hero__search button[type="submit"]:hover {
	background: var(--irbis-brand-hover);
	color: var(--irbis-white);
}

/* Чипсы категорий: pill, brand-soft / brand (§4.4). */
.irbis-chips {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin: 0 0 var(--irbis-spacing-md, 16px);
	padding: 0;
	list-style: none;
}

.irbis-chip {
	box-sizing: border-box;
	display: inline-flex;
	align-items: center;
	gap: 6px;
	/* Макет 01: чипсы 44px, rx22, текст 14/600. */
	min-height: 44px;
	padding: 0 16px;
	font-size: 14px;
	font-weight: 600;
	line-height: 1.2;
	white-space: nowrap;
	color: var(--irbis-brand-hover);
	background: var(--irbis-brand-soft);
	border: 1px solid transparent;
	border-radius: var(--wp--preset--border-radius--pill, 999px);
	text-decoration: none;
}

.irbis-chip:hover,
.irbis-chip:focus-visible {
	color: var(--irbis-white);
	background: var(--irbis-brand);
	border-color: var(--irbis-brand);
	text-decoration: none;
}

.irbis-chip.is-active {
	color: var(--irbis-white);
	background: var(--irbis-brand);
}

/* Подпись под поиском (§4.4): «166 622 товара · Сходненская 52 · резерв 48 ч · …». */
.irbis-hero__caption {
	margin: 0;
	font-size: 13px;
	font-weight: 500;
	line-height: 1.5;
	color: var(--irbis-ink-muted);
}

.irbis-hero__caption strong {
	font-weight: 700;
	color: var(--irbis-ink-soft);
}

/* §4.4 — без параллакса, одна fade-анимация при первой отрисовке. */
.irbis-hero,
.irbis-rise {
	animation: irbis-rise 200ms cubic-bezier(0.2, 0.8, 0.2, 1) 1 both;
}

@keyframes irbis-rise {
	from {
		opacity: 0;
		transform: translateY(8px);
	}
	to {
		opacity: 1;
		transform: none;
	}
}


/* --------------------------------------------------------------------------
   5. §4.7 Секции главной — Query Loop вместо демо-`pricing`.
   -------------------------------------------------------------------------- */

.irbis-section {
	margin: 0 0 var(--irbis-section, clamp(40px, 6vw, 80px));
}

.irbis-section__head {
	display: flex;
	flex-wrap: wrap;
	align-items: end;
	justify-content: space-between;
	gap: 12px;
	margin: 0 0 var(--irbis-spacing-lg, 24px);
}

.irbis-section__title {
	margin: 0;
	/* Макет 01: заголовки секций 32/700 (не 30/800). */
	font-size: clamp(22px, 2.5vw, 32px);
	font-weight: 700;
	line-height: 1.25;
	letter-spacing: -0.015em;
	color: var(--irbis-ink);
}

.irbis-section__lead {
	margin: 0;
	font-size: 15px;
	font-weight: 500;
	line-height: 1.55;
	color: var(--irbis-ink-muted);
}

.irbis-section__more {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	min-height: 44px;
	padding: 0 8px;
	font-size: 15px;
	font-weight: 700;
	color: var(--irbis-brand-hover);
	text-decoration: none;
	white-space: nowrap;
}

.irbis-section__more:hover {
	color: var(--irbis-brand);
	text-decoration: underline;
}

/* Сетки секций: 2 / 3 / 4 колонки на 640 / 1024 / 1280 (§4.5, §4.7). */
.irbis-grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: var(--irbis-grid-gap, clamp(12px, 2vw, 24px));
	margin: 0;
	padding: 0;
	list-style: none;
}

@media (min-width: 640px) {
	.irbis-grid--cats,
	.irbis-grid--posts {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

@media (min-width: 1024px) {
	.irbis-grid--cats {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}

	.irbis-grid--steps {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

@media (min-width: 1280px) {
	.irbis-grid--products {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

/* Мобильный горизонтальный скролл для «Популярное» (§4.7). */
.irbis-rail {
	display: grid;
	grid-auto-flow: column;
	grid-auto-columns: minmax(220px, 260px);
	gap: var(--irbis-grid-gap, clamp(12px, 2vw, 24px));
	overflow-x: auto;
	overscroll-behavior-x: contain;
	scroll-snap-type: x proximity;
	padding-bottom: 8px;
	margin-inline: calc(-1 * var(--irbis-gutter, clamp(16px, 4vw, 32px)));
	padding-inline: var(--irbis-gutter, clamp(16px, 4vw, 32px));
	-webkit-overflow-scrolling: touch;
}

.irbis-rail > * {
	scroll-snap-align: start;
}

@media (min-width: 1024px) {
	.irbis-rail {
		display: grid;
		grid-auto-flow: row;
		grid-auto-columns: auto;
		/* макет 01: 4 колонки по 292px на 1240px. Родитель theme-styles.css
		   («.woocommerce ul.products») давит max-width:90% !important и
		   align-items:center !important — отвечаем тем же (прецедент §12.9). */
		max-width: none !important;
		width: 100% !important;
		align-items: stretch !important;
		grid-template-columns: repeat(4, minmax(0, 1fr));
		overflow: visible;
		margin-inline: 0;
		padding-inline: 0;
	}
}

/* Широкие секции (1240) против контентных (840) (§3.5). */
.irbis-wide {
	max-width: var(--irbis-wide, 1240px);
	margin-inline: auto;
}

.irbis-content {
	max-width: var(--irbis-content, 840px);
	margin-inline: auto;
}

/* Карточки секций: «Как получить» / «Аптеки» / «Полезное». */
.irbis-tile {
	display: flex;
	flex-direction: column;
	gap: 6px;
	height: 100%;
	box-sizing: border-box !important;
	/* Макет 01: плитка 397×132, контент с x+24 / y+24. */
	padding: 20px 24px;
	background: var(--irbis-white);
	border: 1px solid var(--irbis-line);
	border-radius: var(--wp--preset--border-radius--md, 12px);
	box-shadow: var(--irbis-shadow-card, 0 1px 2px rgba(15, 23, 42, 0.06), 0 1px 3px rgba(15, 23, 42, 0.1));
}

.irbis-tile:hover {
	box-shadow: var(--irbis-shadow-card-hover, 0 6px 16px rgba(15, 23, 42, 0.12));
}

/* Макет 01: иконка 24px без плашки (плашка 40×40 добавляла +24px высоты). */
.irbis-tile__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 24px;
	height: 24px;
	color: var(--irbis-brand);
	background: none;
	border-radius: 0;
}

.irbis-tile__icon svg,
.irbis-icon {
	width: 24px;
	height: 24px;
	flex: 0 0 auto;
	fill: none;
	stroke: currentColor;
	stroke-width: 1.75;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.irbis-tile__title {
	margin: 0;
	font-size: 18px;
	font-weight: 700;
	line-height: 1.35;
	color: var(--irbis-ink);
}

/* Core global styles подчёркивают ссылки — в заголовках плиток этого быть не должно. */
.irbis-tile__title a,
.irbis-cat__name a {
	color: inherit;
	text-decoration: none;
}

.irbis-tile__title a:hover,
.irbis-cat__name a:hover {
	color: var(--irbis-brand-hover);
	text-decoration: none;
}

.irbis-tile__text {
	margin: 0;
	font-size: 14px;
	font-weight: 500;
	line-height: 1.55;
	color: var(--irbis-ink-muted);
}

.irbis-tile__meta {
	margin: 0;
	font-size: 13px;
	font-weight: 600;
	line-height: 1.45;
	color: var(--irbis-ink-soft);
}

/* Категория-плитка (§4.7 «Категории»). */
.irbis-cat {
	display: flex;
	flex-direction: column;
	gap: 10px;
	/* Макет 01: 292×120. border-box обязателен: при content-box min-height:120
	   превращалось в 154px (120 + padding 32 + border 2). */
	box-sizing: border-box !important;
	min-height: 120px;
	padding: 16px 24px;
	background: var(--irbis-white);
	border: 1px solid var(--irbis-line);
	border-radius: var(--wp--preset--border-radius--md, 12px);
	text-decoration: none;
}

/* Макет 01: иконка категории 24px без плашки, с x+24 / y+24. */
.irbis-cat__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 24px;
	height: 24px;
	color: var(--irbis-brand);
	background: none;
	border-radius: 0;
}

.irbis-cat:hover,
.irbis-cat:focus-visible {
	background: var(--irbis-brand-soft);
	border-color: var(--irbis-brand-soft);
	text-decoration: none;
}

.irbis-cat__name {
	font-size: 16px;
	font-weight: 700;
	line-height: 1.35;
	color: var(--irbis-ink);
}

.irbis-cat__count {
	/* margin-top:auto прижимал счёт к нижнему краю и растягивал плитку
	   (min-height:120 + padding давали 154px). В макете 01 счёт идёт сразу
	   под названием. */
	margin-top: 0;
	font-size: 13px;
	font-weight: 600;
	font-variant-numeric: tabular-nums;
	color: var(--irbis-ink-muted);
}


/* --------------------------------------------------------------------------
   6. §4.5 Карточка товара — витрина.
   IMG 1:1 surface-50 radius sm contain → meta 13 → name 16/700 2 строки →
   упаковка → «● В наличии N шт.» → цена 20/800 → [В резерв] pill 44px → подпись 11px.
   Grid 2/3/4 на 640/1024/1280, gap 12→24. Hover — только тень (lift удаляем).
   -------------------------------------------------------------------------- */

/* 6.1 Сетка каталога: переопределяем колоночность WooCommerce (по умолчанию 3–4 через CSS-ширины).
 *
 * Родительский `style.css:4207` и `style.css:4281` (`max-width: 80%/90% !important` +
 * `align-items: center !important`) сжимает витрину до 90% контейнера: при 1280px
 * сетка давала 1037px вместо 1152px, карточка 241px вместо 292px (§4.5 / макет 01),
 * а `align-items: center` центрировал карточки по высоте в строке. Отвечаем
 * `!important` — тот же приём, что в `.irbis-rail` выше. */
.woocommerce ul.products,
.woocommerce-page ul.products {
	display: grid;
	grid-template-columns: repeat(1, minmax(0, 1fr));
	gap: var(--irbis-grid-gap, clamp(12px, 2vw, 24px));
	margin: 0;
	padding: 0;
	list-style: none;
	width: 100%;
	max-width: none !important;
	align-items: stretch !important;
	justify-content: stretch !important;
}

.woocommerce ul.products::before,
.woocommerce ul.products::after,
.woocommerce-page ul.products::before,
.woocommerce-page ul.products::after {
	display: none;
}

.woocommerce ul.products.columns-1,
.woocommerce ul.products:not(.columns-2):not(.columns-3):not(.columns-4) li.product,
.woocommerce ul.products li.product {
	width: auto;
	float: none;
	clear: none;
	/* Ритм рядов держит только grid-gap: плагин WooCommerce задаёт карточке
	 * `margin: 0 3.8% 2.992em 0` (`woocommerce-layout.css?ver=10.9.4`, плюс
	 * `woocommerce-smallscreen.css` для `[class*="columns-"]`) и по каскаду идёт
	 * позже нашего файла, поэтому прежний `margin: 0` проигрывал. Замер
	 * `temp/card-margin-390.json`: computed margin-bottom 47.872px (2.992em при
	 * root 16px) при gridGap 12px — то есть шаг ряда был 391px вместо 343px
	 * (карточка 331 + gap 12) макета 04. !important обязателен: у плагина в этих
	 * объявлениях !important нет, так что специфичность не трогает. */
	margin: 0 !important;
	padding: 0;
}

/* Колоночность — строго по §3.6/§4.5: 1 → 2 (≥640) → 3 (≥1024) → 4 (≥1280).
 * Ширина карточки из канвы макета: 1280 ⇒ контент 1240, 4 колонки, gap 24
 * ⇒ (1240 − 72) / 4 = 292px (макет 02); 390 ⇒ контент 358, 2 колонки, gap 12
 * ⇒ (358 − 12) / 2 = 173px (макет 04). */
@media (min-width: 640px) {
	.woocommerce ul.products,
	.woocommerce-page ul.products {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (min-width: 1024px) {
	.woocommerce ul.products,
	.woocommerce-page ul.products {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

@media (min-width: 1280px) {
	.woocommerce ul.products,
	.woocommerce-page ul.products {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

/* 6.2 Сама карточка.
 *
 * Родительский `style.css:4494` (`ul.products li { padding: 10px !important }`)
 * сидит вне media-блока, имеет специфичность (0,1,2) и перебивал наши 12px —
 * фактический box-sizing был content-box, контент 270px против 268px в макете.
 * Поэтому padding и box-sizing здесь с !important (у родителя !important только
 * padding), а рамка снята в inset-тень: габарит ячейки остаётся 292px,
 * а контент становится ровно 268px, как прямоугольник медиа в макете 01. */
.woocommerce ul.products li.product,
.woocommerce-page ul.products li.product {
	display: flex;
	flex-direction: column;
	/* Макет 01: карточка 292×456, pad 12, ритм 6px (12+268+6+40+6+15+6+24+6+44+12 = 439). */
	gap: 10px;
	position: relative;
	box-sizing: border-box !important;
	/* Родительский `style.css:4296` (`@media (max-width:767px) ul.products li.product
	   { max-width: 320px }`) на мобильном сжимал карточку до 320px вместо 358px
	   (§4.6 / макет 04: контент 358px = 390 − 2×gutter 16). */
	max-width: none !important;
	width: auto;
	padding: var(--irbis-spacing-sm, 12px) !important;
	background: var(--irbis-white);
	/* !important обязателен: родительский `style.css:4494`
	   (`.woocommerce-page ul.products li { border: 1px solid #b3aaaa !important }`)
	   без съёма рамки оставлял контент 266px вместо 268px макета. */
	border-width: 0 !important;
	border-radius: var(--wp--preset--border-radius--md, 12px);
	box-shadow: inset 0 0 0 1px var(--irbis-line), var(--irbis-shadow-card, 0 1px 2px rgba(15, 23, 42, 0.06), 0 1px 3px rgba(15, 23, 42, 0.1));
	text-align: left;
	transition: box-shadow 200ms cubic-bezier(0.2, 0.8, 0.2, 1);
}

/* §4.5 —.hover только тень, без поднятия; родительский translateY(-10px) снимается. */
.woocommerce ul.products li.product:hover,
.woocommerce-page ul.products li.product:hover {
	box-shadow: inset 0 0 0 1px var(--irbis-line), var(--irbis-shadow-card-hover, 0 6px 16px rgba(15, 23, 42, 0.12));
	transform: none;
}

.wp-block-sidebar .wp-block-group.has-background:hover {
	transform: none;
	box-shadow: var(--irbis-shadow-card, 0 1px 2px rgba(15, 23, 42, 0.06), 0 1px 3px rgba(15, 23, 42, 0.1));
}

.woocommerce ul.products li.product a img,
.woocommerce-page ul.products li.product img {
	/* Ритм карточки даёт flex-gap, внешних отступов у медиа нет (макет 01). */
	margin: 0;
	padding: 0;
	width: 100%;
	aspect-ratio: 1 / 1;
	object-fit: contain;
	background: var(--irbis-surface);
	border-radius: var(--wp--preset--border-radius--sm, 8px);
}

/* Placeholder-монограмма, когда изображения нет (§4.5). */
.irbis-ph {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	aspect-ratio: 1 / 1;
	margin: 0;
	background: var(--irbis-surface);
	border: 1px solid var(--irbis-line);
	border-radius: var(--wp--preset--border-radius--sm, 8px);
	color: var(--irbis-brand);
}

/* Монограмма-заглушка: макет 01 — 64px/800 по центру медиа-бокса (984 = центр 836..1104). */
.irbis-ph__mono {
	font-size: 64px;
	font-weight: 800;
	letter-spacing: 0.02em;
	line-height: 1;
	color: var(--irbis-brand);
}

.irbis-ph__mark {
	position: absolute;
	right: 8px;
	bottom: 8px;
	font-size: 11px;
	font-weight: 600;
	color: var(--irbis-ink-muted);
}

.woocommerce ul.products li.product .irbis-ph {
	position: relative;
}

/* Название: 16/700, ровно 2 строки (§4.5). */
.woocommerce ul.products li.product .woocommerce-loop-product__title,
.woocommerce ul.products li.product .irbis-card__name {
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 2;
	line-clamp: 2;
	overflow: hidden;
	max-height: 40px;
	margin: 0;
	padding: 0;
	font-size: 16px;
	font-weight: 700;
	/* Макет 01: две строки по 20px (baseline 1148 и 1168). */
	line-height: 20px;
	letter-spacing: -0.01em;
	color: var(--irbis-ink);
	text-transform: none;
}

.woocommerce ul.products li.product .irbis-card__meta,
.woocommerce ul.products li.product .irbis-meta {
	margin: 0;
	font-size: 13px;
	font-weight: 500;
	/* Макет 01: строка мета 13px занимает ~14px, ритм карточки плотный. */
	line-height: 1.1;
	color: var(--irbis-ink-muted);
}

/* Наличие: «● В наличии 12 шт.» брендом, 0 → danger (§4.5). */
.irbis-stock {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	font-size: 13px;
	font-weight: 600;
	/* Макет 01: «● В наличии N шт.» — строка 13px/14px, точка 8px. */
	line-height: 1.1;
	color: var(--irbis-brand);
}

.irbis-stock::before {
	content: "";
	width: 8px;
	height: 8px;
	flex: 0 0 auto;
	border-radius: 50%;
	background: currentColor;
}

.irbis-stock.is-out {
	color: var(--irbis-danger);
}

.irbis-stock.is-low {
	color: var(--irbis-accent);
}

.woocommerce ul.products li.product .stock,
.woocommerce ul.products li.product .stock-in-stock,
.woocommerce ul.products li.product .stock-inventory {
	color: var(--irbis-brand);
	font-weight: 600;
}

.woocommerce ul.products li.product .out-of-stock,
.woocommerce ul.products li.product .stock-out {
	color: var(--irbis-danger);
	font-weight: 600;
}

/* Цена 20px/800 + подпись «оплата при получении» (§4.5). */
.woocommerce ul.products li.product .price,
.woocommerce ul.products li.product .irbis-card__price,
.irbis-price {
	margin: 0;
	padding: 0;
	font-size: 20px;
	font-weight: 800;
	/* Спецификация §4.5: цена 20px/800; строка 24px по макету 01. */
	line-height: 1.2;
	letter-spacing: -0.01em;
	font-variant-numeric: tabular-nums;
	color: var(--irbis-ink);
}

.woocommerce ul.products li.product .price .woocommerce-Price-amount,
.irbis-price .woocommerce-Price-amount {
	font-size: inherit;
	font-weight: inherit;
	color: inherit;
}

.woocommerce ul.products li.product .price del,
.irbis-price del {
	margin-right: 8px;
	font-size: 13px;
	font-weight: 500;
	color: var(--irbis-ink-muted);
	text-decoration: line-through;
}

.woocommerce ul.products li.product .price ins,
.irbis-price ins {
	text-decoration: none;
	color: var(--irbis-ink);
}

/* Бейдж скидки: accent, radius xs, только реальная скидка (§4.5). */
.woocommerce ul.products li.product .onsale,
.irbis-badge-discount {
	position: absolute;
	/* Макет 01: бейдж 54×26 с отступом 20px от края карточки. */
	top: 20px;
	left: 20px;
	z-index: 2;
	box-sizing: border-box;
	min-width: 54px;
	height: 26px;
	padding: 4px 8px;
	text-align: center;
	font-size: 13px;
	font-weight: 700;
	line-height: 18px;
	font-variant-numeric: tabular-nums;
	color: var(--irbis-ink);
	background: var(--irbis-accent);
	border: 0;
	border-radius: var(--wp--preset--border-radius--xs, 4px);
	box-shadow: none;
	margin: 0;
}

/* CTA «В резерв» — пилюля, бренд, во всю ширину, min-height 44px (§4.5). */
/* CTA = 268×44 ровно (макет 01: rect 32,1236,268×44). border-box + padding без
   вертикальной составляющей: min-height 44 включает рамку 1px, высота не раздувается
   (было 304×66 из-за родительского padding:10px !important и content-box). */
.woocommerce ul.products li.product .add_to_cart_button,
.woocommerce ul.products li.product .added_to_cart,
.woocommerce ul.products li.product .irbis-btn-reserve,
.irbis-btn {
	display: flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	gap: 8px;
	width: 100%;
	min-height: 44px;
	margin: auto 0 0;
	padding: 0 16px;
	font-size: 15px;
	font-weight: 700;
	line-height: 1.2;
	text-align: center;
	text-decoration: none;
	color: var(--irbis-white);
	background: var(--irbis-brand);
	border: 1px solid var(--irbis-brand);
	border-radius: var(--wp--preset--border-radius--pill, 999px);
	cursor: pointer;
	box-shadow: none;
}

.woocommerce ul.products li.product .add_to_cart_button:hover,
.woocommerce ul.products li.product .irbis-btn-reserve:hover,
.irbis-btn:hover {
	background: var(--irbis-brand-hover);
	border-color: var(--irbis-brand-hover);
	color: var(--irbis-white);
	text-decoration: none;
}

.woocommerce ul.products li.product .added_to_cart {
	background: var(--irbis-brand-soft);
	border-color: var(--irbis-brand-soft);
	color: var(--irbis-brand-hover);
}

.woocommerce ul.products li.product .add_to_cart_button.loading,
.irbis-btn.is-loading {
	opacity: 0.7;
	cursor: progress;
}

.woocommerce ul.products li.product .irbis-btn[disabled],
.woocommerce ul.products li.product .add_to_cart_button.disabled {
	background: var(--irbis-surface-alt);
	border-color: var(--irbis-line-strong);
	color: var(--irbis-ink-muted);
	cursor: not-allowed;
	box-shadow: inset 0 0 0 1px var(--irbis-line);
}

/* Подпись под CTA, 11px (§4.5). */
.irbis-card__foot,
.irbis-caption {
	margin: 0;
	font-size: 11px;
	font-weight: 500;
	line-height: 1.4;
	color: var(--irbis-ink-muted);
}

/* Вся карточка кликабельна → single-product (§4.5): ссылку-картинку тянем на весь блок. */
.woocommerce ul.products li.product .irbis-card__link {
	position: absolute;
	inset: 0;
	z-index: 1;
	pointer-events: auto;
}

/* Ссылка-карточка обязана оставаться под CTA: исключаем её из правила «всё поднимаем над оверлеем»,
	иначе специфичность (0,8,2) этого правила подавляет absolute-оверлей (0,4,1) ссылки. */
.woocommerce ul.products li.product > *:not(.onsale):not(.irbis-btn):not(.add_to_cart_button):not(.added_to_cart):not(.irbis-card__foot):not(.irbis-card__link) {
	position: relative;
	z-index: 2;
}

/* CTA — поверх оверлея, иначе кнопка «В резерв» не кликается. */
.woocommerce ul.products li.product .add_to_cart_button,
.woocommerce ul.products li.product .added_to_cart,
.woocommerce ul.products li.product .irbis-btn-reserve,
.woocommerce ul.products li.product .irbis-btn-notify {
	position: relative;
	z-index: 3;
}

/* Подпись «резерв 48 ч · оплата при получении» в макете 01 лежит вне карточки:
   baseline 1292 при нижнем крае li 1280. Выносим её абсолютем под нижний край,
   чтобы высота li совпала с макетом (456px), а не росла за счёт подписи. */
.woocommerce ul.products li.product .irbis-card__foot {
	position: absolute;
	top: 100%;
	right: var(--irbis-spacing-sm, 12px);
	left: var(--irbis-spacing-sm, 12px);
	z-index: 3;
	margin: 6px 0 0;
	/* Макет 01: сноска под карточкой центрирована. */
	text-align: center;
	/* Макет 01: подпись одна строка (baseline 1292, 11px/500). Перенос превращал
	   её в два ряда по 15px и ломал высоту ряда карточек. */
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.woocommerce ul.products li.product .irbis-card__link {
	z-index: 1;
}

/* Целевой размер ссылки названия — не меньше 24×24 px: на десктопном
   прогоне axe правило target-size требовало «24px by 24px», а текстовая
   ссылка названия давала box 268×20 px (строка 20px). 4 px добавляем
   внутренним padding и тут же снимаем их отрицательным margin, поэтому
   раскладка карточки (макет 02: две строки названия по 20px) не меняется. */
.woocommerce ul.products li.product a.woocommerce-loop-product__link {
	display: block;
	box-sizing: border-box;
	min-height: 24px;
	padding: 2px 0;
	margin: -2px 0;
	text-decoration: none;
	color: inherit;
}

/* Рейтинг/звёзды в витрине не нужны (товары не оцениваются) (§4.5). */
.woocommerce ul.products li.product .star-rating,
.woocommerce ul.products li.product .woocommerce-product-rating {
	display: none;
}

/* Родительский `text-align:center !important` на li.product — возвращаем левый край (§4.5). */
.woocommerce ul.products li.product,
.woocommerce ul.products li.product .woocommerce-loop-product__title,
.woocommerce ul.products li.product .price {
	text-align: left;
}

/* 6.3 «Сообщить о поступлении» для отсутствующих (§4.5). */
.irbis-btn-notify {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	min-height: 44px;
	margin: 4px 0 0;
	padding: 10px 16px;
	font-size: 14px;
	font-weight: 600;
	color: var(--irbis-brand-hover);
	background: var(--irbis-brand-soft);
	border: 1px solid transparent;
	border-radius: var(--wp--preset--border-radius--pill, 999px);
	text-decoration: none;
}

.irbis-btn-notify:hover {
	color: var(--irbis-white);
	background: var(--irbis-brand);
	text-decoration: none;
}


/* --------------------------------------------------------------------------
   7. §4.6 Список результатов поиска — компактный list-view.
   Композит `.woocommerce ul.products.irbis-list` обязателен: витрина (§6) и
   родительский style.css:4494 давят на `ul.products li.product` спецификатором
   (0,4,2)/(0,2,2) c `!important` (padding 10px, border #b3aaaa, анимация
   zoomInUp), а классов `.woocommerce` внутри `.search` в блоковом рендере нет —
   они висят на body.
   -------------------------------------------------------------------------- */

.woocommerce ul.products.irbis-list li.product,
ul.products.irbis-list li.product {
	display: block !important;
	float: none !important;
	width: auto !important;
	max-width: none !important;
	box-sizing: border-box !important;
	margin: 0 !important;
	/* паддинг строки даёт .irbis-row (md сверху/снизу) — здесь только гуттер 0 */
	padding: 0 !important;
	background: none !important;
	border: 0 !important;
	border-bottom: 1px solid var(--irbis-line) !important;
	border-radius: 0 !important;
	box-shadow: none !important;
	text-align: left !important;
	/* родительский style.css:4512: zoomInUp + overflow:hidden — списку не нужен */
	animation: none !important;
	overflow: visible !important;
}

.search .woocommerce ul.products,
.search-results .woocommerce ul.products,
.woocommerce ul.products.irbis-list,
ul.products.irbis-list {
	display: block;
	grid-template-columns: none;
	gap: 0;
	margin: 0;
	padding: 0;
	border-top: 1px solid var(--irbis-line);
	/* родительский style.css:4281 `.woocommerce ul.products { max-width:90% !important }`
	   сжимал список до 90 % — строка §4.6 обязана занимать всю ширину. */
	width: 100% !important;
	max-width: 100% !important;
}

.search .woocommerce ul.products li.product .irbis-row,
.search-results .woocommerce ul.products li.product .irbis-row,
.woocommerce ul.products.irbis-list li.product .irbis-row,
ul.products.irbis-list li.product .irbis-row {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto auto;
	gap: 12px;
	align-items: center;
	padding: var(--irbis-spacing-md, 16px) 0;
}

/* Десктоп: название и наличие в левой колонке, цена и «+» в правой (§4.6).
	Без явных рядов 4-й grid-ребёнок проваливался во вторую строку сетки. */
@media (min-width: 640px) {
	.search .woocommerce ul.products li.product .irbis-row > .woocommerce-loop-product__link,
	ul.products.irbis-list .irbis-row > .woocommerce-loop-product__link {
		grid-column: 1;
		grid-row: 1;
	}

	.search .woocommerce ul.products li.product .irbis-row > .price,
	ul.products.irbis-list .irbis-row > .price {
		grid-column: 2;
		grid-row: 1;
	}

	.search .woocommerce ul.products li.product .irbis-row > .irbis-row__cta,
	ul.products.irbis-list .irbis-row > .irbis-row__cta {
		grid-column: 3;
		grid-row: 1;
	}

	.search .woocommerce ul.products li.product .irbis-row > .irbis-card__meta,
	ul.products.irbis-list .irbis-row > .irbis-card__meta {
		grid-column: 1;
		grid-row: 2;
	}
}

.search .woocommerce ul.products li.product img,
.search .woocommerce ul.products li.product .irbis-ph,
.search-results .woocommerce ul.products li.product img,
.search-results .woocommerce ul.products li.product .irbis-ph,
ul.products.irbis-list img,
ul.products.irbis-list .irbis-ph {
	display: none;
}

.search .woocommerce ul.products li.product .woocommerce-loop-product__title,
.search-results .woocommerce ul.products li.product .woocommerce-loop-product__title,
.woocommerce ul.products.irbis-list li.product .woocommerce-loop-product__title,
ul.products.irbis-list li.product .woocommerce-loop-product__title {
	/* display:block снимает витринный -webkit-box/clamp (§4.6: название в 2 строки
	   на мобиле, без обрезки на десктопе). !important — из-за витринного clamp. */
	display: block !important;
	-webkit-line-clamp: unset;
	line-clamp: unset;
	max-height: none;
	overflow: visible;
	font-size: 16px;
	font-weight: 600;
	line-height: 1.4;
	text-align: left;
	color: var(--irbis-ink);
}

.search .woocommerce ul.products li.product .irbis-card__meta,
.woocommerce ul.products.irbis-list li.product .irbis-card__meta,
ul.products.irbis-list li.product .irbis-card__meta {
	display: block;
	margin: 2px 0 0;
	font-size: 13px;
	font-weight: 500;
	color: var(--irbis-ink-muted);
}

.search .woocommerce ul.products li.product .price,
.search-results .woocommerce ul.products li.product .price,
.woocommerce ul.products.irbis-list li.product .price,
ul.products.irbis-list li.product .price {
	margin: 0;
	padding: 0;
	font-size: 16px;
	font-weight: 800;
	line-height: 1.2;
	/* §4.6: цена прижата к правому краю колонки цены. */
	text-align: right !important;
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}

/* Икон-кнопка «+ В резерв» 44×44 (§4.6).
 * `!important` обязателен: витрина (§6.2) даёт пилюлю `width:100%; padding:0 16px`,
 * irbis.css:4235 `display:flex !important; margin:auto 0 0 !important`, родительский
 * style.css:4627 `display:inline-flex !important` и style.css:4498 `padding:12px 10px !important`.
 */
.woocommerce ul.products.irbis-list li.product .irbis-row__cta .irbis-btn-reserve,
ul.products.irbis-list li.product .irbis-row__cta .irbis-btn-reserve,
ul.products.irbis-list .add_to_cart_button,
ul.products.irbis-list .irbis-btn-reserve,
.search .woocommerce ul.products li.product .irbis-btn-plus {
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	width: 44px !important;
	height: 44px !important;
	min-height: 44px !important;
	margin: 0 !important;
	padding: 0 !important;
	font-size: 0 !important;
	line-height: 1;
	color: var(--irbis-brand);
	background: var(--irbis-brand-soft);
	border: 1px solid transparent;
	border-radius: var(--wp--preset--border-radius--sm, 8px) !important;
	cursor: pointer;
}

/* Иконка «+» в кнопке-иконке 44×44 (§4.6). Спецификатор обязан не уступить
 * витринному правилу (irbis.css:1710 .woocommerce ul.products li.product
 * .add_to_cart_button), поэтому композит с полным путём строки. */
.woocommerce ul.products.irbis-list li.product .irbis-row__cta .irbis-btn-reserve::before,
ul.products.irbis-list li.product .irbis-row__cta .irbis-btn-reserve::before,
ul.products.irbis-list .add_to_cart_button::before,
ul.products.irbis-list .irbis-btn-reserve::before,
.search .woocommerce ul.products li.product .irbis-btn-plus::before {
	content: "+" !important;
	font-size: 20px !important;
	font-weight: 800;
	line-height: 1;
}

.woocommerce ul.products.irbis-list li.product .irbis-row__cta .irbis-btn-reserve:hover,
ul.products.irbis-list .add_to_cart_button:hover,
ul.products.irbis-list .irbis-btn-reserve:hover,
.search .woocommerce ul.products li.product .irbis-btn-plus:hover {
	color: var(--irbis-white);
	background: var(--irbis-brand);
}

.woocommerce ul.products.irbis-list li.product .irbis-row__cta .irbis-btn-reserve.added,
ul.products.irbis-list .add_to_cart_button.added,
ul.products.irbis-list .added_to_cart {
	width: auto !important;
	height: auto !important;
	min-height: 44px;
	padding: 0 12px !important;
	font-size: 13px !important;
}

ul.products.irbis-list .add_to_cart_button.added::before,
ul.products.irbis-list .added_to_cart::before {
	content: none;
}

/* Группировка по МНН, затем производитель (§4.6): заголовок группы. */
.irbis-group {
	margin: var(--irbis-spacing-lg, 24px) 0 var(--irbis-spacing-sm, 12px);
	padding-top: var(--irbis-spacing-md, 16px);
	border-top: 1px solid var(--irbis-line-strong);
}

.irbis-group__title {
	margin: 0 0 4px;
	font-size: 13px;
	font-weight: 800;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--irbis-ink-muted);
}

.irbis-group__lead {
	margin: 0;
	font-size: 13px;
	font-weight: 500;
	color: var(--irbis-ink-muted);
}

/*
 * Мобильный list-view (§4.6): «название + цена в 1 строке, наличие второй
 * строкой, кнопка-иконка справа». Grid-области, а не order: порядок строк
 * задаётся разметкой, а не нумерацией детей.
 */
@media (max-width: 639px) {
	.search .woocommerce ul.products li.product .irbis-row,
	.search-results .woocommerce ul.products li.product .irbis-row,
	/* Спецификатор обязан быть не ниже десктопного композита (irbis.css:1915
	 * `.woocommerce ul.products.irbis-list li.product .irbis-row`, 0,5,2) —
	 * иначе десктопные 3 колонки проваливаются в мобильную сетку и дают
	 * третий нулевой трек + 12px мёртвого места справа. */
	.woocommerce ul.products.irbis-list li.product .irbis-row,
	.search-results .woocommerce ul.products.irbis-list li.product .irbis-row,
	ul.products.irbis-list li.product .irbis-row {
		grid-template-columns: minmax(0, 1fr) auto;
		grid-template-areas:
			"name price"
			"meta cta";
		column-gap: 12px;
		row-gap: 6px;
	}

	.search .woocommerce ul.products li.product .woocommerce-loop-product__link,
	ul.products.irbis-list .woocommerce-loop-product__link {
		grid-area: name;
		order: 0;
	}

	.search .woocommerce ul.products li.product .woocommerce-loop-product__title,
	.woocommerce ul.products.irbis-list li.product .woocommerce-loop-product__title,
	ul.products.irbis-list li.product .woocommerce-loop-product__title {
		-webkit-line-clamp: 2;
		line-clamp: 2;
		max-height: calc(1.4em * 2);
		overflow: hidden;
		font-size: 15px;
	}

	.search .woocommerce ul.products li.product .price,
	.woocommerce ul.products.irbis-list li.product .price,
	ul.products.irbis-list li.product .price {
		grid-area: price;
		order: 0;
		align-self: start;
		justify-self: end;
		font-size: 15px;
	}

	.search .woocommerce ul.products li.product .irbis-card__meta,
	.woocommerce ul.products.irbis-list li.product .irbis-card__meta,
	ul.products.irbis-list li.product .irbis-card__meta,
	.search .woocommerce ul.products li.product .irbis-stock,
	ul.products.irbis-list .irbis-stock {
		grid-area: meta;
		order: 0;
		font-size: 12px;
	}

	/* Кнопка-иконка остаётся иконкой 44×44 и стоит справа от наличия. */
	.search .woocommerce ul.products li.product .irbis-row__cta,
	ul.products.irbis-list .irbis-row__cta {
		grid-area: cta;
		order: 0;
		justify-self: end;
		align-self: end;
		width: auto;
	}
}


/* --------------------------------------------------------------------------
		 7.1 Страница результатов поиска (§4.6) — шапка, форма, группы, пустое
		     состояние, пагинация. Блок `irbis/search-results` (inc/search.php)
		     рендерит .irbis-search-results внутри main.irbis-search-page;
		     гуттер — на main, потому что у .irbis-wide отступов нет.
		 -------------------------------------------------------------------------- */

/* Гуттер страницы как у шапки (§5.1): до 1240px — центрируем, на узких — 16px. */
.irbis-search-page {
	box-sizing: border-box;
	padding-block: var(--irbis-section, clamp(40px, 6vw, 80px));
	padding-inline: clamp(0px, calc((var(--irbis-wide, 1240px) - 100vw) / 2), var(--irbis-spacing-md, 16px));
}

/* Десктоп: main.alignfull выдвигаем из root-гуттера (тот же приём, что у главной
   в §4.4), чтобы `.irbis-wide` (1240) встал ровно в x=20 по макету. !important
   нужен: родительский `.wp-site-blocks .alignfull` даёт margin с !important. */
@media (min-width: 640px) {
	.wp-site-blocks main#content.irbis-search-page {
		box-sizing: border-box;
		padding-inline: var(--irbis-spacing-md, 16px) !important;
		margin-inline: calc(-2 * var(--wp--custom--spacing--outer, clamp(16px, 4vw, 32px))) !important;
	}
}

.irbis-search-head {
	margin: 0 0 var(--irbis-spacing-lg, 24px);
}

.irbis-search-head__title {
	margin: 0 0 4px;
	font-size: clamp(22px, 2.5vw, 32px);
	font-weight: 800;
	line-height: 1.2;
	letter-spacing: -0.02em;
}

.irbis-search-head__count {
	margin: 0 0 var(--irbis-spacing-md, 16px);
	font-size: 15px;
	font-weight: 500;
	color: var(--irbis-ink-muted, #5b6b80);
}

/* Форма на месте (§4.6): пилюля 48px с лупой слева + кнопка «Найти». */
.irbis-search--page {
	position: relative;
	display: flex;
	flex-wrap: nowrap;
	align-items: center;
	gap: 8px;
	max-width: 720px;
}

.irbis-search--page::before {
	content: "";
	position: absolute;
	top: 50%;
	left: 16px;
	width: 20px;
	height: 20px;
	margin-top: -10px;
	background: var(--irbis-ink-muted, #5b6b80);
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m16.2 16.2 4.8 4.8'/%3E%3C/svg%3E") no-repeat center / 20px 20px;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m16.2 16.2 4.8 4.8'/%3E%3C/svg%3E") no-repeat center / 20px 20px;
	pointer-events: none;
}

.irbis-search--page .wp-block-search__input,
.irbis-search--page input[type="search"] {
	flex: 1 1 auto;
	width: 100%;
	min-width: 0;
	height: 48px;
	box-sizing: border-box;
	padding: 0 16px 0 46px;
	/* браузерный Arial на input/button не даёт Manrope (§3.4). */
	font-family: inherit !important;
	font-size: 15px;
	line-height: 1.4;
	color: var(--irbis-ink, #0f172a);
	background: var(--irbis-white, #fff);
	border: 1px solid var(--irbis-line-strong, #cbd5e1);
	border-radius: var(--wp--preset--border-radius--pill, 999px);
	box-shadow: none;
}

.irbis-search--page .wp-block-search__input::placeholder,
.irbis-search--page input[type="search"]::placeholder {
	color: var(--irbis-ink-muted, #5b6b80);
	opacity: 1;
}

.irbis-search--page .wp-block-search__input:focus,
.irbis-search--page .wp-block-search__input:focus-visible,
.irbis-search--page input[type="search"]:focus,
.irbis-search--page input[type="search"]:focus-visible {
	border-color: var(--irbis-brand, #0f7a5a);
	outline: 2px solid var(--irbis-brand, #0f7a5a);
	outline-offset: 1px;
}

.irbis-search--page .wp-block-search__button,
.irbis-search--page button[type="submit"] {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 112px;
	height: 48px;
	margin-left: 0;
	padding: 0 20px;
	font-family: inherit !important;
	font-size: 15px;
	font-weight: 700;
	color: var(--irbis-white, #fff);
	background: var(--irbis-brand, #0f7a5a);
	border: 1px solid var(--irbis-brand, #0f7a5a);
	border-radius: var(--wp--preset--border-radius--pill, 999px);
	text-decoration: none;
}

.irbis-search--page .wp-block-search__button:hover,
.irbis-search--page button[type="submit"]:hover {
	color: var(--irbis-white, #fff);
	background: var(--irbis-brand-hover, #0b6249);
	border-color: var(--irbis-brand-hover, #0b6249);
}

/* Первая группа идёт сразу под шапкой: разделитель и отступ уже у шапки. */
.irbis-search-results__body > .irbis-group:first-child {
	margin-top: 0;
	padding-top: 0;
	border-top: 0;
}

/* Производитель отдельной строкой под названием (§4.6, meta ink-500). */
.irbis-card__vendor {
	display: block;
	margin-bottom: 2px;
	font-size: 13px;
	font-weight: 500;
	color: var(--irbis-ink-muted, #5b6b80);
}

/* WooCommerce-стили не должны перетянуть list-view (§7) на витрину. */
.irbis-search-results ul.products.irbis-list,
.irbis-search-results ul.products.irbis-list li.product {
	float: none;
	width: auto;
	margin: 0;
}

/* Пустое состояние (§4.1 — только каталог, заглушек нет). */
.irbis-search-empty {
	padding: var(--irbis-spacing-2xl, 48px) var(--irbis-spacing-lg, 24px);
	text-align: center;
	background: var(--irbis-white, #fff);
	border: 1px solid var(--irbis-line, #e4e9ef);
	border-radius: var(--wp--preset--border-radius--md, 12px);
}

.irbis-search-empty__title {
	margin: 0 0 6px;
	font-size: 20px;
	font-weight: 700;
}

.irbis-search-empty__text {
	margin: 0 0 var(--irbis-spacing-lg, 24px);
	font-size: 15px;
	color: var(--irbis-ink-muted, #5b6b80);
}

.irbis-search-empty__link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 44px;
	padding: 0 20px;
	font-size: 15px;
	font-weight: 700;
	color: var(--irbis-brand-hover, #0b6249);
	background: var(--irbis-brand-soft, #e6f4ef);
	border-radius: var(--wp--preset--border-radius--pill, 999px);
	text-decoration: none;
}

.irbis-search-empty__link:hover {
	color: var(--irbis-white, #fff);
	background: var(--irbis-brand, #0f7a5a);
}

/* paginate_links(type=plain) отдаёт плоские a/span.page-numbers (§12.1). */
.irbis-pager {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 6px;
	margin-top: var(--irbis-spacing-lg, 24px);
}

.irbis-pager .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	/* Квадрат 44×44 (макет §4.6): padding не должен раздувать цифру. */
	width: 44px;
	height: 44px;
	padding: 0;
	font-family: inherit !important;
	font-size: 15px;
	font-weight: 700;
	font-variant-numeric: tabular-nums;
	color: var(--irbis-ink-soft, #334155);
	background: var(--irbis-white, #fff);
	border: 1px solid var(--irbis-line, #e4e9ef);
	border-radius: var(--wp--preset--border-radius--sm, 8px);
	text-decoration: none;
}

/* «Назад/Вперёд» остаются подписью, а не квадратом. */
.irbis-pager .page-numbers:has(.irbis-pager__dir) {
	width: auto;
	padding: 0 12px;
}

.irbis-pager a.page-numbers:hover {
	color: var(--irbis-brand-hover, #0b6249);
	background: var(--irbis-brand-soft, #e6f4ef);
	border-color: var(--irbis-brand-soft, #e6f4ef);
	text-decoration: none;
}

.irbis-pager .page-numbers:focus-visible {
	outline: 2px solid var(--irbis-brand, #0f7a5a);
	outline-offset: 2px;
}

.irbis-pager .page-numbers.current {
	color: var(--irbis-white, #fff);
	background: var(--irbis-brand, #0f7a5a);
	border-color: var(--irbis-brand, #0f7a5a);
}

.irbis-pager .irbis-pager__dir {
	display: inline-flex;
	align-items: center;
}

@media (max-width: 639px) {
	.irbis-search-page {
		padding-block: var(--irbis-spacing-2xl, 48px);
	}

	.irbis-search-head__title {
		font-size: 22px;
	}

	.irbis-search--page {
		max-width: none;
	}

	.irbis-search--page .wp-block-search__button,
	.irbis-search--page button[type="submit"] {
		min-width: 0;
		padding: 0 16px;
	}
}


/* --------------------------------------------------------------------------
		 8. §4.8 single-product — 58/42, галерея + sticky-панель бронирования.
   H1 26–34/800, табы с aria-selected, без выбора аптеки, тост.
   -------------------------------------------------------------------------- */

/* Макет 03: 58/42 = 704 + 512 при gap 24 в широкой сетке 1240. */
.irbis-single {
	display: grid;
	grid-template-columns: minmax(0, 58fr) minmax(320px, 42fr);
	gap: var(--irbis-spacing-lg, 24px);
	align-items: start;
}

.irbis-single__gallery {
	min-width: 0;
}

.irbis-single__gallery .woocommerce-product-gallery__image img,
.single-product div.product .woocommerce-product-gallery img {
	width: 100%;
	aspect-ratio: 1 / 1;
	object-fit: contain;
	background: var(--irbis-surface);
	border: 1px solid var(--irbis-line);
	border-radius: var(--wp--preset--border-radius--md, 12px);
	max-width: none;
	max-height: none;
}

.single-product .woocommerce-product-gallery .wp-post-image {
	max-width: 100%;
	max-height: none;
}

.single-product div.product .woocommerce-product-gallery {
	margin-bottom: var(--irbis-spacing-lg, 24px);
	width: 100%;
}

/* Sticky-панель бронирования (§4.8). По макету 03 правая колонка не оформлена
   карточкой: наличие, цена, адрес выдачи, степпер и CTA лежат прямо на странице,
   карточка (rx 16, surface) — только у блока выдачи. */
.irbis-booking {
	position: sticky;
	top: calc(var(--irbis-header-h, 72px) + 16px);
	z-index: 5;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 12px;
	padding: 0;
	background: none;
	border: 0;
	border-radius: 0;
	box-shadow: none;
}

.irbis-single__title,
.single-product div.product .product_title {
	margin: 0 0 8px;
	font-size: clamp(26px, 3vw, 34px);
	font-weight: 800;
	line-height: 1.2;
	letter-spacing: -0.02em;
	color: var(--irbis-ink);
}

.single-product div.product p.product_title {
	padding: 0;
	font-size: clamp(26px, 3vw, 34px);
}

/* Метастрока — 13px/500, как в макете 03 (не 14).
   margin-bottom 0: разделитель макета 03 сидит на y=200, а зазор 24 до сетки
   даёт уже `.irbis-single__head { margin-bottom }` (live: y=224 из-за этих 12px). */
.irbis-single__meta {
	margin: 0;
	font-size: 13px;
	font-weight: 500;
	line-height: 1.55;
	color: var(--irbis-ink-muted);
}

.irbis-single__price,
.single-product div.product .summary .price {
	display: flex;
	align-items: baseline;
	gap: 10px;
	margin: 0 0 12px;
	padding: 0;
	font-size: clamp(26px, 3vw, 34px);
	font-weight: 800;
	line-height: 1.2;
	font-variant-numeric: tabular-nums;
	color: var(--irbis-ink);
}

.single-product div.product .summary .price del {
	font-size: 16px;
	font-weight: 500;
	color: var(--irbis-ink-muted);
}

.single-product div.product .summary .price ins {
	text-decoration: none;
}

/* Панель: строки «аптека / часы / резерв 48 ч / оплата при получении». */
.irbis-booking__rows {
	display: flex;
	flex-direction: column;
	gap: 6px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.irbis-booking__row {
	display: flex;
	align-items: start;
	justify-content: space-between;
	gap: 12px;
	font-size: 13px;
	line-height: 1.5;
}

.irbis-booking__row dt,
.irbis-booking__row .irbis-booking__label {
	font-weight: 500;
	color: var(--irbis-ink-muted);
}

.irbis-booking__row dd,
.irbis-booking__row .irbis-booking__value {
	margin: 0;
	font-weight: 700;
	text-align: right;
	color: var(--irbis-ink);
}

.irbis-booking__note {
	margin: 0;
	font-size: 12px;
	font-weight: 500;
	line-height: 1.5;
	color: var(--irbis-ink-muted);
}

/* form_variations / выбор аптеки отсутствует (§4.8). */
.single-product div.product .irbis-booking .variations {
	display: grid;
	grid-template-columns: auto 1fr;
	gap: 8px;
	align-items: center;
	margin: 0 0 12px;
}

/* Форма в один ряд: степпер-пилюля + CTA (макет 03: 132 + 16 + остаток).
   form.cart из родительской темы несёт clearfix ::before/::after
   (`content:" "; display:table`) — во flex-контейнере они становятся
   flex-элементами и съедают по gap (16px) каждый, поэтому CTA короткая. */
.single-product div.product form.cart {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--irbis-spacing-md, 16px);
	margin: 0;
	padding: 0;
}

.single-product div.product form.cart::before,
.single-product div.product form.cart::after {
	content: none;
	display: block;
}

/* Специфичность: woocommerce.css даёт
   `.woocommerce div.product form.cart div.quantity { float:left; margin:0 4px 0 0 }`
   (0-4-3), поэтому берём тот же путь + `.woocommerce.single-product` (0-5-3):
   без этого степпер уезжает на 4px вправо и CTA недобирает ширину (359 против 364). */
.woocommerce.single-product div.product form.cart div.quantity,
.single-product div.product form.cart .quantity {
	flex: 0 0 auto;
	float: none;
	margin: 0;
}

/* Специфичность: woocommerce-blocktheme.css даёт
   `.woocommerce div.product form.cart button.single_add_to_cart_button`
   (0-4-3) c `display:inline-block` — поэтому здесь тот же путь +
   `.single-product.woocommerce` (0-5-3), иначе `flex` не применяется. */
.woocommerce.single-product div.product form.cart button.single_add_to_cart_button,
.single-product div.product form.cart .button,
.single-product div.product .single_add_to_cart_button,
.irbis-btn-reserve-lg {
	display: flex;
	/* CTA тянется на весь остаток ряда (макет 03: 364 = 511 − 132 степпер − 16 gap).
	   `flex: 1 1 0` вместо `auto`: база 0, поэтому кнопка растягивается, а не
	   сжимается по ширине текста (live давало 327). */
	flex: 1 1 0;
	min-width: 0;
	align-items: center;
	justify-content: center;
	gap: 8px;
	min-height: 56px;
	margin: 0;
	padding: 12px 24px;
	font-size: 16px;
	font-weight: 700;
	line-height: 1.2;
	color: var(--irbis-white);
	background: var(--irbis-brand);
	border: 1px solid var(--irbis-brand);
	border-radius: var(--wp--preset--border-radius--pill, 999px);
	box-shadow: none;
	text-decoration: none;
	cursor: pointer;
}

.single-product div.product form.cart .button:hover,
.single-product div.product .single_add_to_cart_button:hover,
.irbis-btn-reserve-lg:hover {
	background: var(--irbis-brand-hover);
	border-color: var(--irbis-brand-hover);
	color: var(--irbis-white);
}

.single-product div.product form.cart .button.disabled,
.single-product div.product .single_add_to_cart_button.disabled {
	background: var(--irbis-surface-alt);
	border-color: var(--irbis-line-strong);
	color: var(--irbis-ink-muted);
	cursor: not-allowed;
}

/* Количество: пилюля 132×56 rx28 (макет 03) — минус · поле · плюс в одной рамке. */
.single-product .quantity,
.woocommerce div.product .quantity {
	box-sizing: border-box;
	display: inline-flex;
	align-items: center;
	justify-content: space-between;
	gap: 0;
	width: 132px;
	min-width: 132px;
	height: 56px;
	padding: 5px;
	background: var(--irbis-white);
	border: 1px solid var(--irbis-line-strong);
	border-radius: var(--wp--preset--border-radius--pill, 999px);
}

.single-product .quantity input.qty,
.woocommerce div.product .quantity input.qty,
.irbis-qty {
	display: block;
	flex: 0 0 42px;
	width: 42px;
	max-width: 42px;
	min-height: 44px;
	margin: 0;
	padding: 0;
	font-size: 16px;
	font-weight: 700;
	text-align: center;
	color: var(--irbis-ink);
	background: transparent;
	border: 0;
	border-radius: 0;
	appearance: textfield;
}

.single-product .quantity .qty-btn,
.irbis-qty-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 42px;
	width: 42px;
	height: 44px;
	padding: 0;
	font-size: 20px;
	font-weight: 700;
	line-height: 1;
	color: var(--irbis-ink-soft);
	background: transparent;
	border: 0;
	border-radius: var(--wp--preset--border-radius--pill, 999px);
	cursor: pointer;
}

.single-product .quantity .qty-btn:hover,
.irbis-qty-btn:hover {
	color: var(--irbis-brand-hover);
	background: var(--irbis-brand-soft);
	border: 0;
}

/* Табы-пилюли h44 rx22 с aria-selected (§4.8, макет 03). */
.woocommerce-tabs,
.irbis-tabs {
	margin-top: var(--irbis-spacing-2xl, 48px);
}

.woocommerce-tabs ul.tabs,
.irbis-tabs__nav {
	display: flex;
	flex-wrap: wrap;
	gap: var(--irbis-spacing-2xs, 4px);
	margin: 0 0 var(--irbis-spacing-lg, 24px);
	padding: 0;
	list-style: none;
	border-bottom: 0;
}

/* li как flex-контейнер: иначе пилюля-ссылка попадает в line box (inline-flex
   выравнивается по базовой линии) и под ней появляется лишний спуск —
   nav давал 45px против цели 44. */
.woocommerce-tabs ul.tabs li,
.irbis-tabs__item {
	display: flex;
	align-items: center;
	margin: 0;
	padding: 0;
	background: none;
	border: 0;
}

/* Пилюли табов — ровно 44px высоты (макет 03: h=44, rx=22). `height` вместо
   `min-height`, border-box — чтобы рамка 1px не добавляла лишний пиксель
   (live: nav h=45 против цели 44). */
.woocommerce-tabs ul.tabs li a,
.irbis-tabs__tab {
	display: inline-flex;
	align-items: center;
	box-sizing: border-box;
	height: 44px;
	min-height: 44px;
	padding: 0 20px;
	margin: 0;
	font-size: 15px;
	font-weight: 600;
	color: var(--irbis-ink-soft);
	background: var(--irbis-white);
	border: 1px solid var(--irbis-line);
	border-radius: var(--wp--preset--border-radius--pill, 999px);
	text-decoration: none;
	cursor: pointer;
}

.woocommerce-tabs ul.tabs li a:hover,
.irbis-tabs__tab:hover {
	color: var(--irbis-brand-hover);
	background: var(--irbis-brand-soft);
	border-color: var(--irbis-brand-soft);
	text-decoration: none;
}

.woocommerce-tabs ul.tabs li[aria-selected="true"],
.woocommerce-tabs ul.tabs li.active,
.irbis-tabs__tab[aria-selected="true"] {
	color: var(--irbis-white);
	font-weight: 700;
	background: var(--irbis-brand);
	border-color: var(--irbis-brand);
}

.woocommerce-tabs ul.tabs::before,
.woocommerce-tabs ul.tabs::after,
.woocommerce-tabs ul.tabs li::after,
.woocommerce-tabs ul.tabs li::before {
	display: none;
}

/* Панель таба — карточка (макет 03: 704×260 rx12 + shadow-card). */
.woocommerce-tabs .panel,
.irbis-tabs__panel,
.irbis-tabs__single {
	box-sizing: border-box;
	margin: 0;
	padding: var(--irbis-spacing-lg, 24px);
	font-size: 15px;
	line-height: 1.65;
	color: var(--irbis-ink-soft);
	background: var(--irbis-white);
	border: 1px solid var(--irbis-line);
	border-radius: var(--wp--preset--border-radius--md, 12px);
	box-shadow: var(--irbis-shadow-card, 0 1px 2px rgba(15, 23, 42, 0.06), 0 1px 3px rgba(15, 23, 42, 0.1));
}

.woocommerce-tabs .panel > :first-child,
.irbis-tabs__panel > :first-child,
.irbis-tabs__single > :first-child {
	margin-top: 0;
}

.woocommerce-tabs .panel > :last-child,
.irbis-tabs__panel > :last-child,
.irbis-tabs__single > :last-child {
	margin-bottom: 0;
}

/* Мета-товары (МНН, производитель, SKU) — компактная таблица. */
.irbis-spec {
	width: 100%;
	margin: 0 0 var(--irbis-spacing-lg, 24px);
	padding: 0;
	border-collapse: collapse;
	font-size: 14px;
}

.irbis-spec th,
.irbis-spec td,
.woocommerce-product-attributes th,
.woocommerce-product-attributes td {
	padding: 10px 12px;
	text-align: left;
	border-bottom: 1px solid var(--irbis-line);
	vertical-align: top;
}

.irbis-spec th,
.woocommerce-product-attributes th {
	width: 40%;
	font-weight: 600;
	color: var(--irbis-ink-muted);
	background: none;
}

.irbis-spec td,
.woocommerce-product-attributes td {
	font-weight: 700;
	color: var(--irbis-ink);
}

/* Ссылка из панели таба («Подробности об аптеке») — текстовая, в цвет бренда,
   с иконкой стрелки; не кнопка, чтобы не конкурировать с CTA (§4.8). */
.irbis-tabs__more {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	margin-top: var(--irbis-spacing-sm, 12px);
	font-size: 15px;
	font-weight: 700;
	color: var(--irbis-brand);
	text-decoration: none;
}

.irbis-tabs__more:hover {
	color: var(--irbis-brand-hover);
	text-decoration: underline;
}

.irbis-tabs__more svg {
	width: 16px;
	height: 16px;
	flex: 0 0 16px;
}

.woocommerce-product-attributes {
	margin: 0;
	border: 0;
}

.woocommerce-product-attributes shop_attributes tr:nth-child(2n) {
	background: none;
}

/* Related / upsell — та же карточка, 4 в ряд. */
.single-product .related ul.products,
.single-product .up-sells ul.products {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: var(--irbis-grid-gap, clamp(12px, 2vw, 24px));
	margin: 0;
	padding: 0;
	width: 100%;
}

.single-product .related ul.products li.product,
.single-product .up-sells ul.products li.product {
	width: auto;
	float: none;
	margin: 0;
	padding: var(--irbis-spacing-md, 16px);
	background: var(--irbis-white);
	border: 1px solid var(--irbis-line);
	border-radius: var(--wp--preset--border-radius--md, 12px);
	box-shadow: var(--irbis-shadow-card);
}

.single-product .related .woocommerce-loop-product__title,
.single-product .up-sells .woocommerce-loop-product__title {
	font-size: 15px;
	font-weight: 700;
}

@media (min-width: 640px) {
	.single-product .related ul.products,
	.single-product .up-sells ul.products {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

@media (min-width: 1280px) {
	.single-product .related ul.products,
	.single-product .up-sells ul.products {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

/* Хлебные крошки: убираем родительский `padding-left:80px; width:90% !important` (§4.8). */
.woocommerce-breadcrumb,
.woocommerce .woocommerce-breadcrumb,
.woocommerce-breadcrumb:first-of-type {
	padding: 0;
	margin: 0 0 var(--irbis-spacing-md, 16px);
	width: 100% !important;
	font-size: 13px;
	line-height: 1.5;
	color: var(--irbis-ink-muted);
}

.woocommerce-breadcrumb a {
	color: var(--irbis-ink-muted);
	text-decoration: none;
}

.woocommerce-breadcrumb a:hover {
	color: var(--irbis-brand-hover);
	text-decoration: underline;
}

/* Тулбар витрины — ОДНА строка (макет 02: «Показано 1–6 из 121 810» x336 y296 и
 * «По популярности» x964 y296). Раньше `width:100% !important` (ответ на
 * `style.css:2101`) разбивал тулбар на две строки: счётчик на своей, сортировка
 * на своей. Родительский `width:100% !important` снимается своим !important. */
.woocommerce .woocommerce-result-count,
.woocommerce-page .woocommerce-result-count {
	padding: 0;
	margin: 0 0 var(--irbis-spacing-md, 16px);
	width: auto !important;
	max-width: 100%;
	float: left;
	font-size: 14px;
	font-weight: 500;
	line-height: 44px;
	color: var(--irbis-ink-muted);
}

.woocommerce .woocommerce-ordering,
.woocommerce-page .woocommerce-ordering {
	margin: 0 0 var(--irbis-spacing-md, 16px);
	padding: 0;
	width: auto;
	float: right;
}

/* Float-тулбар снимается с потока — сетка товаров обязана начать ниже обеих строк. */
.woocommerce ul.products,
.woocommerce-page ul.products {
	clear: both;
}

.woocommerce .woocommerce-ordering select,
.woocommerce-page .woocommerce-ordering select {
	min-height: 44px;
	padding: 8px 36px 8px 14px;
	font-size: 14px;
	font-weight: 600;
	color: var(--irbis-ink);
	background: var(--irbis-white);
	border: 1px solid var(--irbis-line-strong);
	border-radius: var(--wp--preset--border-radius--sm, 8px);
}

/* Заголовок архива: без родительских 35px/`margin:-5px` (§4.8). */
.woocommerce-products-header,
.woocommerce-products-header:first-of-type {
	padding: 0;
	margin: 0 0 var(--irbis-spacing-lg, 24px);
}

/* H1 архива: 36/700 на канве макета 02 (x20 y214, 36px/700) и 22/800 на мобильном
   макете 04 (x446 y174, 22px/800). clamp(22px, 3.2vw, 36px): 390 → 3.2vw = 12.5 ⇒ 22,
   1280 → 41 ⇒ 36. Вес базовый 700 (десктоп), на мобильном поднимается до 800. */
.woocommerce-products-header__title.page-title,
.woocommerce .page-title {
	padding: 0;
	margin: 0;
	width: 100% !important;
	font-size: clamp(22px, 3.2vw, 36px);
	font-weight: 700;
	line-height: 1.2;
	letter-spacing: -0.015em;
	color: var(--irbis-ink);
}

/* Учётные записи: без `max-width:90% !important` (§4.8). */
.woocommerce-account .wp-site-blocks main .woocommerce,
.woocommerce-account .woocommerce,
.woocommerce-account .woocommerce-account {
	max-width: 100% !important;
}

/* Тост «Резерв оформлен на 48 часов · …» (§4.8). */
.irbis-toast {
	position: fixed;
	left: 50%;
	right: auto;
	bottom: calc(24px + env(safe-area-inset-bottom, 0px));
	z-index: var(--irbis-z-toast, 100);
	display: flex;
	align-items: center;
	gap: 12px;
	max-width: min(560px, calc(100vw - 32px));
	padding: 14px 18px;
	font-size: 14px;
	font-weight: 600;
	line-height: 1.45;
	color: var(--irbis-ink);
	background: var(--irbis-white);
	border: 1px solid var(--irbis-line);
	border-left: 4px solid var(--irbis-brand);
	border-radius: var(--wp--preset--border-radius--md, 12px);
	box-shadow: var(--irbis-shadow-card-hover, 0 6px 16px rgba(15, 23, 42, 0.12));
	transform: translate(-50%, 20px);
	opacity: 0;
	pointer-events: none;
	transition: opacity 200ms cubic-bezier(0.2, 0.8, 0.2, 1),
		transform 200ms cubic-bezier(0.2, 0.8, 0.2, 1);
}

.irbis-toast.is-visible {
	opacity: 1;
	transform: translate(-50%, 0);
	pointer-events: auto;
}

.irbis-toast__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 28px;
	height: 28px;
	flex: 0 0 auto;
	color: var(--irbis-brand);
	background: var(--irbis-brand-soft);
	border-radius: var(--wp--preset--border-radius--sm, 8px);
}

.irbis-toast__text {
	flex: 1 1 auto;
}

/* Ссылка на «Мои резервы» в тосте успеха (§4.1): подтверждение — тост, а не редирект. */
.irbis-toast__link {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	font-size: 14px;
	font-weight: 700;
	color: var(--irbis-brand);
	text-decoration: underline;
	text-underline-offset: 3px;
}

.irbis-toast__link:hover {
	color: var(--irbis-brand-hover);
}

.irbis-toast__link[hidden] {
	display: none;
}

.irbis-toast__close {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 32px;
	height: 32px;
	padding: 0;
	font-size: 20px;
	line-height: 1;
	color: var(--irbis-ink-muted);
	background: none;
	border: 0;
	cursor: pointer;
}

/* Гуттер карточки товара — тот же приём, что у витрины (§4.5) и поиска (§7.1):
   врезание root-паддинга снимается на main, потому что у `.irbis-wide` отступов
   нет. Сверху — 23px, а не секционный отступ: в макете 03 крошки стоят в 23px
   под шапкой (y=95 при шапке 72), разделитель сетки на y=200, фото на y=224.
   Секционный отступ остаётся снизу.

   Селектор с id обязателен: ниже по файлу стоит `main#content { padding-top:
   var(--irbis-section) }` (специфичность 0-1-1), которое перебивало класс (0-1-0).
   Тот же приём, что у главной: `.wp-site-blocks main#content.irbis-front`.

   Правило БЕЗ media-query — как у витрины (`main#content.irbis-archive`): на
   390px root-паддинг тоже есть (gutter 16), и правило только от 640px оставляло
   контент карточки в 326px против канвы 358px по макету 04 (замер
   temp/single-390d.json: main x16 w358, пад 16 → wrap x32 w326). */
main#content.irbis-single-page {
	box-sizing: border-box;
	padding-top: 23px;
	padding-bottom: var(--irbis-section, clamp(40px, 6vw, 80px));
	padding-inline: var(--irbis-spacing-md, 16px);
	margin-inline: calc(-2 * var(--wp--custom--spacing--outer, clamp(16px, 4vw, 32px))) !important;
}

@media (min-width: 1280px) {
	main#content.irbis-single-page {
		padding-inline: 20px;
	}
}

/* Обёртка карточки: WooCommerce-`div.product` не должен добавлять свои отступы
   и фон — всю геометрию задаёт `.irbis-single` (§4.8, макет 03). */
.irbis-single-wrap,
.single-product div.product.irbis-single-wrap,
.woocommerce div.product.irbis-single-wrap {
	margin: 0;
	padding: 0;
	background: none;
	border: 0;
}

/* Шапка карточки: крошки + H1 + метастрока, ниже — разделитель на всю ширину
   сетки 1240 (макет 03: линия x=20 w=1240). Линия на `.irbis-wide`, а не на
   `.irbis-single__head`: width у head = вся ширина main (1248), а у wide — ровно
   1240, поэтому border даёт нужные координаты. */
.irbis-single__head {
	padding-bottom: 0;
	margin-bottom: var(--irbis-spacing-lg, 24px);
	border-bottom: 0;
}

/* padding-bottom: 0 — разделитель макета 03 сидит ровно на y=200. При 12px
   линия уезжала на y=212, а сетка (margin-bottom 24 у head) — на y=236
   против цели 224. Зазор до сетки даёт именно margin-head (24px). */
.irbis-single__head .irbis-wide {
	padding-bottom: 0;
	border-bottom: 1px solid var(--irbis-line);
}

.irbis-breadcrumbs {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--irbis-spacing-2xs, 4px) 8px;
	margin: 0 0 var(--irbis-spacing-md, 16px);
	padding: 0;
	font-size: 13px;
	font-weight: 500;
	line-height: 1.4;
	color: var(--irbis-ink-muted);
}

.irbis-breadcrumbs a {
	color: var(--irbis-ink-muted);
	text-decoration: none;
}

.irbis-breadcrumbs a:hover {
	color: var(--irbis-brand-hover);
	text-decoration: underline;
}

.irbis-breadcrumbs__sep {
	color: var(--irbis-line-strong);
}

.irbis-breadcrumbs__current {
	color: var(--irbis-ink-soft);
	font-weight: 600;
}

/* Фото 512×512 rx12, центрируется в колонке 704 (макет 03: x=116 y=280). */
.irbis-single__media {
	position: relative;
	box-sizing: border-box;
	width: 100%;
	max-width: 512px;
	margin-inline: auto;
}

.irbis-single__media img,
.irbis-single__media .irbis-ph {
	display: block;
	width: 100%;
	aspect-ratio: 1 / 1;
	object-fit: contain;
	background: var(--irbis-surface);
	border: 1px solid var(--irbis-line);
	border-radius: var(--wp--preset--border-radius--md, 12px);
}

.irbis-single__media .irbis-ph {
	position: relative;
}

.irbis-single__media .irbis-ph__mark {
	right: 12px;
	bottom: 12px;
}

/* Чип скидки — отступ 12 внутри фото (в карточке витрины он 20). */
.irbis-single__media .irbis-badge-discount {
	top: 12px;
	left: 12px;
}

/* Миниатюры 64×64 rx8, шаг 72 (макет 03), активная — рамка 2px brand. */
.irbis-thumbs {
	display: flex;
	flex-wrap: wrap;
	gap: var(--irbis-spacing-2xs, 4px) 8px;
	max-width: 512px;
	margin: var(--irbis-spacing-2xs, 4px) auto 0;
	padding: 0;
	list-style: none;
}

.irbis-thumb {
	display: inline-flex;
	box-sizing: border-box;
	width: 64px;
	height: 64px;
	padding: 0;
	overflow: hidden;
	background: var(--irbis-white);
	border: 1px solid var(--irbis-line);
	border-radius: var(--wp--preset--border-radius--sm, 8px);
	cursor: pointer;
}

.irbis-thumb:hover {
	border-color: var(--irbis-line-strong);
}

.irbis-thumb.is-active {
	border: 2px solid var(--irbis-brand);
}

.irbis-thumb__inner {
	display: block;
	width: 100%;
	height: 100%;
	overflow: hidden;
}

.irbis-thumb img,
.irbis-thumb .irbis-ph {
	width: 100%;
	height: 100%;
	object-fit: contain;
	background: var(--irbis-surface);
	border: 0;
	border-radius: inherit;
}

.irbis-thumb .irbis-ph {
	aspect-ratio: auto;
}

.irbis-thumb .irbis-ph__mono {
	font-size: 22px;
}

.irbis-thumb .irbis-ph__mark {
	display: none;
}

/* Блок выдачи 512×204 rx16, surface + shadow-card-hover (макет 03). */
.irbis-pickup {
	display: flex;
	flex-direction: column;
	gap: 10px;
	margin: 0;
	padding: 20px 24px;
	background: var(--irbis-surface);
	border: 1px solid var(--irbis-line);
	border-radius: var(--wp--preset--border-radius--lg, 16px);
	box-shadow: var(--irbis-shadow-card-hover, 0 4px 12px rgba(15, 23, 42, 0.08));
}

.irbis-pickup__lead {
	margin: 0;
	font-size: 13px;
	font-weight: 600;
	line-height: 1.4;
	color: var(--irbis-ink-muted);
}

.irbis-pickup__line {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	margin: 0;
	font-size: 15px;
	font-weight: 500;
	line-height: 1.45;
	color: var(--irbis-ink-soft);
}

.irbis-pickup__line a {
	color: var(--irbis-ink-soft);
	text-decoration: none;
}

.irbis-pickup__line a:hover {
	color: var(--irbis-brand-hover);
	text-decoration: underline;
}

.irbis-pickup__line.is-address {
	font-size: 16px;
	font-weight: 700;
	color: var(--irbis-ink);
}

.irbis-pickup__line.is-address a {
	color: var(--irbis-ink);
}

.irbis-pickup__line:has(.irbis-icon-phone) {
	font-size: 13px;
}

.irbis-pickup__line .irbis-icon {
	width: 20px;
	height: 20px;
	color: var(--irbis-brand);
}

.irbis-pickup__line.is-address .irbis-icon {
	width: 22px;
	height: 22px;
}

.irbis-pickup__chip {
	align-self: flex-start;
	box-sizing: border-box;
	max-width: 284px;
	min-height: 26px;
	margin: 0;
	padding: 4px 10px;
	font-size: 13px;
	font-weight: 700;
	line-height: 1.4;
	color: var(--irbis-brand-hover);
	background: var(--irbis-brand-soft);
	border-radius: var(--wp--preset--border-radius--xs, 4px);
}

.irbis-pickup__link {
	align-self: flex-end;
	display: inline-flex;
	align-items: center;
	gap: 8px;
	font-size: 13px;
	font-weight: 700;
	color: var(--irbis-brand);
	text-decoration: none;
}

.irbis-pickup__link:hover {
	color: var(--irbis-brand-hover);
	text-decoration: underline;
}

.irbis-pickup__link .irbis-icon {
	width: 16px;
	height: 16px;
}

/* Наличие + резерв в панели брони: точка r4 brand, текст 15/600 brand-hover. */
.irbis-booking__stock {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
	margin: 0;
	font-size: 15px;
	line-height: 1.45;
}

.irbis-booking__stock .irbis-stock {
	font-size: 15px;
	font-weight: 600;
	color: var(--irbis-brand-hover);
}

.irbis-booking__stock .irbis-stock::before {
	width: 8px;
	height: 8px;
}

.irbis-booking__hours {
	font-size: 15px;
	font-weight: 600;
	color: var(--irbis-brand-hover);
}

/* Подпись под ценой в панели — 13px (в карточках витрины она 11px). */
.irbis-booking .irbis-caption {
	margin: 0;
	font-size: 13px;
}

.irbis-booking__pay {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 0;
	font-size: 13px;
	font-weight: 600;
	line-height: 1.45;
	color: var(--irbis-ink-muted);
}

.irbis-booking__pay .irbis-icon {
	width: 20px;
	height: 20px;
	color: var(--irbis-brand);
}

.irbis-booking__notify {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 10px;
	margin: 0;
	font-size: 13px;
	font-weight: 600;
	line-height: 1.45;
	color: var(--irbis-ink-muted);
}

.irbis-booking__notify .irbis-btn-notify {
	position: static;
	width: auto;
	min-height: 44px;
	display: inline-flex;
	align-items: center;
}

/* «Похожие товары» 32/700 + ссылка на категорию (макет 03). */
.irbis-related {
	margin-top: var(--irbis-section, clamp(40px, 6vw, 80px));
}

.irbis-related__head {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	justify-content: space-between;
	gap: 16px;
	margin-bottom: var(--irbis-spacing-lg, 24px);
}

.irbis-related__title {
	margin: 0;
	font-size: clamp(24px, 3vw, 32px);
	font-weight: 700;
	line-height: 1.25;
	letter-spacing: -0.02em;
	color: var(--irbis-ink);
}

.irbis-related__more {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	white-space: nowrap;
	font-size: 15px;
	font-weight: 700;
	color: var(--irbis-brand);
	text-decoration: none;
}

.irbis-related__more:hover {
	color: var(--irbis-brand-hover);
	text-decoration: underline;
}

.irbis-related__more .irbis-icon {
	width: 16px;
	height: 16px;
}

/* single-product: 58/42 только на десктопе, ниже — стек (§4.8). */
@media (max-width: 1023px) {
	.irbis-single {
		grid-template-columns: minmax(0, 1fr);
		gap: var(--irbis-spacing-lg, 24px);
	}

	.irbis-booking {
		position: static;
	}

	.irbis-single__head {
		padding-bottom: var(--irbis-spacing-md, 16px);
		margin-bottom: var(--irbis-spacing-lg, 24px);
	}

	.irbis-single__media,
	.irbis-thumbs {
		max-width: 100%;
	}

	.irbis-pickup {
		padding: 16px;
	}

	.irbis-single__media .irbis-ph__mark {
		right: 8px;
		bottom: 8px;
	}

	.irbis-single__media .irbis-badge-discount {
		top: 8px;
		left: 8px;
	}
}


/* --------------------------------------------------------------------------
   9. §4.9 Нижняя мобильная панель — 64px, Главная · Каталог · Поиск · Резервы.
   На карточке товара заменяется панелью бронирования.
   -------------------------------------------------------------------------- */

/* Полоса — ровно 64px. Линия сверху рисуется внутренней тенью, а не рамкой:
   с рамкой rect панели был 65px (64px пункта + 1px рамки), тогда как макет 04
   (`plans/mocks/04-mobile.svg`, строки 192–193) задаёт 63px полотна + 1px линию
   = ровно 64px — ровно настолько, насколько `body { padding-bottom: 64px }`
   освобождает место под панель (§4.9), и настолько же, каков тап-таргет 64×64.
   Полупрозрачность 0.94 + blur — те же значения, что в макете
   (`fill-opacity="0.94"`), с глухим фоном как фолбэком. */
.irbis-mobile-bar {
	display: none;
	position: fixed;
	right: 0;
	bottom: 0;
	left: 0;
	box-sizing: border-box;
	z-index: var(--irbis-z-mobile-bar, 60);
	background: var(--irbis-white);
	background: rgba(255, 255, 255, 0.94);
	-webkit-backdrop-filter: blur(8px);
	backdrop-filter: blur(8px);
	border-top: 0;
	box-shadow: inset 0 1px 0 var(--irbis-line),
		var(--irbis-shadow-bar, 0 -2px 12px rgba(15, 23, 42, 0.1));
	padding-bottom: env(safe-area-inset-bottom, 0px);
}

.irbis-mobile-bar__inner {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	max-width: var(--irbis-wide, 1240px);
	margin-inline: auto;
}

/* `box-sizing: border-box` обязателен: без него `min-height: 64px` складывается
   с паддингом 6+6 и давал rect 76px, а с рамкой панели — 77px. Макет 04
   (`plans/mocks/04-mobile.svg`, экран 4): полоса 63px + линия 1px = 64px, и
   §4.9 требует тап-таргет ровно 64px — ровно настолько же, насколько
   `body { padding-bottom: 64px }` освобождает место под панель. */
.irbis-mobile-bar__item {
	display: flex;
	box-sizing: border-box;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 2px;
	min-height: 64px;
	padding: 6px 4px;
	font-size: 11px;
	font-weight: 600;
	line-height: 1.2;
	color: var(--irbis-ink-muted);
	text-decoration: none;
	position: relative;
}

.irbis-mobile-bar__item svg,
.irbis-mobile-bar__item .irbis-icon {
	width: 24px;
	height: 24px;
}

/* «Поиск» — `<button>`, а не `<a>`: страница поиска в CMS отсутствует, поиском
   является форма в мобильном drawer (§4.2, §4.6). Плоский button не попадает под
   стили `core/button` дочерней темы (тема applies к `.wp-element-button` и
   `.wp-block-button__link`), поэтому сбрасываем рамку/фон/шрифт и растягиваем
   на ячейку сетки, чтобы зона касания осталась 1fr × 64px, как у ссылок. */
button.irbis-mobile-bar__item {
	appearance: none;
	-webkit-appearance: none;
	width: 100%;
	margin: 0;
	border: 0;
	border-radius: 0;
	background: none;
	box-shadow: none;
	color: var(--irbis-ink-muted);
	font: inherit;
	font-size: 11px;
	font-weight: 600;
	line-height: 1.2;
	text-align: center;
	cursor: pointer;
}

.irbis-mobile-bar__item:hover,
.irbis-mobile-bar__item:focus-visible {
	color: var(--irbis-brand-hover);
	text-decoration: none;
}

.irbis-mobile-bar__item.is-active {
	color: var(--irbis-brand);
}

.irbis-mobile-bar__item.is-active::before {
	content: "";
	position: absolute;
	top: 0;
	left: 20%;
	right: 20%;
	height: 2px;
	border-radius: 2px;
	background: var(--irbis-brand);
}

.irbis-mobile-bar__count {
	position: absolute;
	top: 6px;
	right: calc(50% - 22px);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 18px;
	min-height: 18px;
	padding: 0 4px;
	font-size: 11px;
	font-weight: 800;
	font-variant-numeric: tabular-nums;
	line-height: 1;
	color: var(--irbis-white);
	background: var(--irbis-brand);
	border-radius: var(--wp--preset--border-radius--pill, 999px);
}

.irbis-mobile-bar__count[data-count="0"] {
	display: none;
}

/* Панель бронирования на мобильном single-product (§4.9).

   Геометрия по `plans/mocks/04-mobile.svg` (экран 3, 446–452): полоса 64px,
   в ряду цена + «Сходненская, 52» + кнопка «Забронировать» 126×44 (rx 22).
   Высота фиксирована через border-box: 9 + 44 + 9 + рамка 1 = ровно 64px
   (safe-area добавляется к нижнему паддингу, как и у нижней панели §4.9). */
.irbis-mobile-booking {
	display: none;
	position: fixed;
	right: 0;
	bottom: 0;
	left: 0;
	box-sizing: border-box;
	z-index: var(--irbis-z-mobile-bar, 60);
	align-items: center;
	gap: 12px;
	width: 100%;
	height: 64px;
	min-height: 64px;
	padding: 9px var(--irbis-gutter, clamp(16px, 4vw, 32px));
	padding-bottom: calc(9px + env(safe-area-inset-bottom, 0px));
	background: var(--irbis-white);
	border-top: 1px solid var(--irbis-line);
	box-shadow: var(--irbis-shadow-bar, 0 -2px 12px rgba(15, 23, 42, 0.1));
}

/* `margin: 0` обязателен: это `<p>`, и маржин темы поднимал строку на 18px,
   из-за чего ряд вырастал до 94px. Колонка цены не тянется — `flex: 0 0 auto`. */
.irbis-mobile-booking__price {
	flex: 0 0 auto;
	display: flex;
	flex-direction: column;
	gap: 0;
	margin: 0;
	font-size: 18px;
	font-weight: 800;
	line-height: 1.2;
	font-variant-numeric: tabular-nums;
	color: var(--irbis-ink);
}

.irbis-mobile-booking__money {
	white-space: nowrap;
}

.irbis-mobile-booking__price .irbis-caption {
	font-size: 11px;
	font-weight: 500;
	line-height: 1.4;
	color: var(--irbis-ink-muted);
}

/* Кнопка жёстко 126×44 (макет 04: 126×44 rx 22, текст 14/700).
   `flex: 0 0 auto` + `box-sizing: border-box` — базовое правило CTA даёт
   `min-height: 56px` и `padding: 12px 24px` без border-box, что в полосе
   давало rect 131×70 и ряд 94px. */
.irbis-mobile-booking .irbis-btn,
.irbis-mobile-booking .irbis-btn-reserve-lg {
	display: flex;
	box-sizing: border-box;
	flex: 0 0 auto;
	width: auto;
	min-width: 126px;
	min-height: 44px;
	height: 44px;
	margin: 0;
	padding: 0 8px;
	font-size: 14px;
	font-weight: 700;
	line-height: 1.2;
	white-space: nowrap;
	align-items: center;
	justify-content: center;
	overflow: hidden;
}

@media (max-width: 1023px) {
	.irbis-mobile-bar {
		display: block;
	}

	body {
		padding-bottom: calc(64px + env(safe-area-inset-bottom, 0px));
	}

	/* На карточке товара нижняя панель → панель бронирования (§4.9). */
	.single-product .irbis-mobile-bar,
	body.irbis-single-active .irbis-mobile-bar {
		display: none;
	}

	.single-product .irbis-mobile-booking,
	body.irbis-single-active .irbis-mobile-booking {
		display: flex;
	}
}


/* --------------------------------------------------------------------------
   10. §4.10 Футер — 4 колонки, только реальные данные.

   Геометрия принята по `plans/mocks/01-front-desktop.svg` (285–314), замеры — getBBox:
   - тёмный блок full-width высотой 190px: ink-900 #0F172A;
   - колонки стартуют x = 20 / 336 / 652 / 968 → контейнер wide 1240 +
     `repeat(4, minmax(0, 1fr))` с column-gap 24px (колонка 292px);
   - заголовок колонки: 14/700 #FFFFFF, baseline 1868, межстрочный 22px;
   - ссылки: 14/500 line-300 #CBD5E1, базовые линии 1896/1918/1940/1962 → leading ровно 22px;
   - контакты: телефон 16/700 #FFFFFF (leading 22px), строка 12/500 #CBD5E1,
     иконки соцсетей 28×28 #CBD5E1 без плашки;
   - юридический strip: surface-50 #F6F8FA высотой 70px, 12/500 #64748B, leading 20px,
     первая строка — две части (левая и прижатая вправо x=1260).
   -------------------------------------------------------------------------- */

/* Макет 01: тёмный блок full-width (`rect x=0 width=1280`). `alignfull` гасит только
   padding `.wp-site-blocks` (32px), а root padding на body (32px) остаётся → футер
   начинался на x=64 и был 1152px. Снимаем оба врезания тем же паттерном, что и шапка
   (см. `.irbis-header`): margin −(root padding + outer), padding-inline 0.
   !important обязателен: core задаёт margin `.alignfull` c !important; `width: auto`
   возвращает растяжение блока (с `width: 100%` правый край не дотягивался бы до x=1280). */
.wp-site-blocks .irbis-footer-part {
	box-sizing: border-box;
	max-width: none;
	width: auto;
	padding-inline: 0 !important;
	margin-inline: calc(-2 * var(--wp--custom--spacing--outer, clamp(16px, 4vw, 32px))) !important;
}

.irbis-footer {
	box-sizing: border-box;
	margin-top: var(--irbis-section, clamp(40px, 6vw, 80px));
	background: var(--irbis-ink);
	color: var(--irbis-line-strong);
}

.irbis-footer a {
	color: var(--irbis-line-strong);
	text-decoration: none;
}

.irbis-footer a:hover,
.irbis-footer a:focus-visible {
	color: var(--irbis-white);
	text-decoration: underline;
}

.irbis-footer__top {
	box-sizing: border-box;
	/* 190px = padding-top 34 + заголовок 22 + margin 6 + 4 строки по 22 (116px) + padding-bottom 40. */
	padding: 34px 0 40px;
	background: var(--irbis-ink);
}

.irbis-footer__grid {
	display: grid;
	box-sizing: border-box;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: var(--irbis-spacing-xl, 32px) var(--irbis-spacing-lg, 24px);
	max-width: var(--irbis-wide, 1240px);
	margin-inline: auto;
	/* Gutters как в `.irbis-header__bar`: на широких экранах 0 (центровка wide 1240 уже даёт
	   x=20), не меньше 16px на узких. С content-box и padding-inline 32px колонки были
	   254px и старт x=96 вместо 292px и x=20 (макет 01: 20/336/652/968). */
	padding-inline: clamp(0px, calc((var(--irbis-wide, 1240px) - 100vw) / 2), var(--irbis-spacing-md, 16px));
}

@media (min-width: 782px) {
	.irbis-footer__grid {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

.irbis-footer__title {
	box-sizing: border-box;
	margin: 0 0 6px;
	height: 22px;
	font-size: 14px;
	font-weight: 700;
	line-height: 22px;
	color: var(--irbis-white);
}

.irbis-footer__list {
	margin: 0;
	padding: 0;
	list-style: none;
	/* Тема задаёт `ul` 16px/25.6px → строки шли 26px. Ведём по 24px — см. комментарий ниже. */
	font-size: 14px;
	line-height: 24px;
}

.irbis-footer__list li {
	margin: 0;
	font-size: 14px;
	line-height: 24px;
}

/* leading строк списка — 24px. Канва макета 01 задаёт 22px (базовые 1896/1918/1940/1962),
   но WCAG 2.5.8 (аудит axe `target-size`) требует, чтобы у таргета был свободный
   квадрат 24×24: при pitch 22px rect-ы соседних ссылок перекрывались на 2px и axe
   снимал «safe clickable space 22–23px» (9 нод, temp/lh-1280-shop-before.json).
   Схема `min-height:24px + margin-block:-1px` этот аудит не проходит — axe считает
   площадь с учётом перекрытия. Поэтому pitch поднят до 24px: rect ссылки = leading,
   rect-ы соседних строк касаются, не перекрываясь. Цена отклонения — каждая строка
   списка на +2px, футер-верх на +8px (190px → 198px, temp/footer-1280-v3.json);
   отклонение зафиксировано в plans/mocks/README.md и в спецификации §4.10. */
.irbis-footer__list a {
	box-sizing: border-box;
	display: inline-block;
	min-height: 24px;
	font-size: 14px;
	font-weight: 500;
	line-height: 24px;
	color: var(--irbis-line-strong);
}

.irbis-footer__text {
	margin: 0 0 6px;
	font-size: 14px;
	font-weight: 500;
	line-height: 22px;
	color: var(--irbis-line-strong);
}

.irbis-footer__phone {
	display: block;
	margin: 0;
	font-size: 16px;
	font-weight: 700;
	/* leading 24px — тот же pitch таргета, что у `.irbis-footer__list a` (WCAG 2.5.8). */
	line-height: 24px;
	white-space: nowrap;
	color: var(--irbis-white);
}

/* Телефон в 4-й колонке футера: pitch 24px (WCAG 2.5.8) — та же схема,
   что у `.irbis-footer__list a`: rect ссылки равен leading, без перекрытий. */
.irbis-footer__phone a {
	box-sizing: border-box;
	display: inline-block;
	min-height: 24px;
	line-height: 24px;
	color: var(--irbis-white);
}

.irbis-footer__phone:hover,
.irbis-footer__phone a:hover {
	text-decoration: none;
	color: var(--irbis-white);
}

.irbis-footer__phone--alt {
	font-size: 14px;
	font-weight: 600;
}

.irbis-footer__note {
	margin: 0;
	font-size: 12px;
	font-weight: 500;
	line-height: 20px;
	color: var(--irbis-line-strong);
}

/* Соцсети: SVG-иконки 28×28 цветом line-300, без плашки (макет 01: 296–297). */
.irbis-footer__social,
.irbis-footer .wp-block-social-links {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin: 8px 0 0;
	padding: 0;
	list-style: none;
}

.irbis-footer__social a,
.irbis-footer .wp-block-social-links .wp-social-link a {
	box-sizing: border-box;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 28px;
	height: 28px;
	padding: 0;
	color: var(--irbis-line-strong);
	background: none;
	border: 0;
	border-radius: 0;
	opacity: 1;
}

.irbis-footer__social .irbis-icon,
.irbis-footer__social svg,
.irbis-footer .wp-block-social-links svg {
	width: 28px;
	height: 28px;
	fill: none;
	stroke: currentColor;
}

.irbis-footer__social a:hover,
.irbis-footer .wp-block-social-links .wp-social-link a:hover {
	color: var(--irbis-white);
	background: none;
	border: 0;
}

.irbis-footer .wp-social-link__icon {
	display: inline-flex;
}

/* Юридический strip: surface-50, высота 70px = 3 строки по 20px + padding 5/5. */
.irbis-footer__bottom {
	box-sizing: border-box;
	padding: 5px 0;
	background: var(--irbis-surface);
	color: var(--irbis-ink-muted);
}

.irbis-footer__bottom-inner {
	display: grid;
	grid-template-columns: 1fr auto;
	column-gap: var(--irbis-spacing-lg, 24px);
	row-gap: 0;
	align-items: start;
	box-sizing: border-box;
	max-width: var(--irbis-wide, 1240px);
	margin-inline: auto;
	/* Тот же gutters-паттерн, что у `.irbis-header__bar`: 0 при 1280 (wide центрируется),
	   16px минимум на узких. С padding-inline 32px правая legal-строка не доходила до x=1260. */
	padding-inline: clamp(0px, calc((var(--irbis-wide, 1240px) - 100vw) / 2), var(--irbis-spacing-md, 16px));
	width: 100%;
}

.irbis-footer__legal,
.irbis-footer__legal a {
	margin: 0;
	font-size: 12px;
	font-weight: 500;
	line-height: 20px;
	color: var(--irbis-ink-muted);
}

.irbis-footer__legal a {
	text-decoration: none;
}

.irbis-footer__legal a:hover {
	color: var(--irbis-brand-hover);
	text-decoration: underline;
}

/* Первая строка макета: реквизиты слева, «не публичная оферта» — x=1260, text-anchor: end. */
.irbis-footer__legal--end {
	justify-self: end;
	text-align: right;
}

.irbis-footer__legal--wide {
	grid-column: 1 / -1;
}

/* Тап-таргеты списка футера (§6: «не ниже 44×44», WCAG 2.5.5). На touch-раскладке
   leading строк растёт до 44px. Safe space (insignificant spacing): от строки к
   строке 44 >= 24, от последней строки списка до заголовка следующей колонки
   6 + 28 + 6 = 40 >= 24. На десктопе pitch ведём по 24px — см. комментарий у
   `.irbis-footer__list a` (аудит axe `target-size`, WCAG 2.5.8). */
@media (max-width: 781px) {
	.irbis-footer__list {
		margin-bottom: 6px;
	}

	.irbis-footer__list li {
		line-height: 44px;
	}

	.irbis-footer__list a {
		line-height: 44px;
	}

	.irbis-footer__top {
		padding: 32px 0 36px;
	}

	.irbis-footer__bottom-inner {
		grid-template-columns: 1fr;
	}

	.irbis-footer__legal--end {
		justify-self: start;
		text-align: left;
	}

	.irbis-footer__legal--wide {
		grid-column: auto;
	}
}

.irbis-footer .copyright-text {
	font-size: 12px;
	color: var(--irbis-ink-muted);
}

/* Ссылку Creta Themes и «Doctorate Medical Center» вычищаем из разметки; страховка: */
.cretal-link,
.cretathemes-link,
a[href*="cretathemes.com"],
a[href*="wordpress.org/support/theme"] {
	display: none !important;
}

/* Родительские демо-виджеты футера (ablocks/map, lorem) — не показываем. */
footer .ablocks-block--map,
.footer-1 .ablocks-block--map,
.footer-2 .ablocks-block--map,
.footer-3 .ablocks-block--map,
.footer-4 .ablocks-block--map {
	display: none;
}

/* Виджеты сайдбара: без hover-подъёма (§4.5). */
.wp-block-sidebar .wp-block-group.has-background {
	transition: box-shadow 200ms cubic-bezier(0.2, 0.8, 0.2, 1);
	border-radius: var(--wp--preset--border-radius--md, 12px);
	box-shadow: var(--irbis-shadow-card);
}

.wp-block-sidebar .wp-block-group.has-background:hover {
	box-shadow: var(--irbis-shadow-card-hover);
}


/* --------------------------------------------------------------------------
   11. Корзина → «Мои резервы» (§4.1, todo #14).
   -------------------------------------------------------------------------- */

.woocommerce-cart .woocommerce-cart-form,
.woocommerce-checkout .woocommerce-checkout {
	width: 100%;
}

.woocommerce table.cart,
.woocommerce-checkout table.woocommerce-checkout-review-order-table,
.woocommerce-cart .woocommerce-cart-form__cart-item {
	width: 100%;
	border-collapse: collapse;
}

.woocommerce table.shop_table th,
.woocommerce table.shop_table td {
	padding: var(--irbis-spacing-md, 16px) 12px;
	font-size: 14px;
	text-align: left;
	border: 0;
	border-bottom: 1px solid var(--irbis-line);
}

.woocommerce table.shop_table th {
	font-size: 12px;
	font-weight: 800;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--irbis-ink-muted);
}

.woocommerce table.shop_table td {
	font-weight: 600;
	color: var(--irbis-ink);
}

.woocommerce .cart .button,
.woocommerce .cart input.button,
.woocommerce .cart-proceed .button,
.irbis-btn-secondary {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 44px;
	padding: 10px 20px;
	font-size: 15px;
	font-weight: 700;
	color: var(--irbis-brand-hover);
	background: var(--irbis-brand-soft);
	border: 1px solid transparent;
	border-radius: var(--wp--preset--border-radius--pill, 999px);
	box-shadow: none;
	text-decoration: none;
	cursor: pointer;
}

.woocommerce .cart .button:hover,
.irbis-btn-secondary:hover {
	color: var(--irbis-white);
	background: var(--irbis-brand);
	text-decoration: none;
}

/* Все упоминания «доставка» → «самовывоз» правятся в контенте; здесь только оформление. */
.woocommerce .woocommerce-message,
.woocommerce .woocommerce-info,
.woocommerce .woocommerce-error {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 12px;
	margin: 0 0 var(--irbis-spacing-md, 16px);
	padding: 14px 18px;
	font-size: 14px;
	font-weight: 600;
	line-height: 1.5;
	color: var(--irbis-ink);
	background: var(--irbis-brand-soft);
	border: 0;
	border-left: 4px solid var(--irbis-brand);
	border-radius: var(--wp--preset--border-radius--md, 12px);
}

.woocommerce .woocommerce-error {
	background: #FDECEC;
	border-left-color: var(--irbis-danger);
}

.woocommerce .woocommerce-message::before,
.woocommerce .woocommerce-info::before,
.woocommerce .woocommerce-error::before {
	color: var(--irbis-brand);
}

.woocommerce .woocommerce-message a,
.woocommerce .woocommerce-info a {
	color: var(--irbis-brand-hover);
	font-weight: 700;
}

.woocommerce .woocommerce-message .woocommerce-button,
.woocommerce .woocommerce-info .button {
	color: var(--irbis-white);
	background: var(--irbis-brand);
	border-radius: var(--wp--preset--border-radius--pill, 999px);
}

/* Форма входа/регистрации — компактно. */
.woocommerce-form-login,
.woocommerce-form-register,
.woocommerce-form {
	padding: var(--irbis-spacing-lg, 24px);
	background: var(--irbis-white);
	border: 1px solid var(--irbis-line);
	border-radius: var(--wp--preset--border-radius--md, 12px);
}

.woocommerce-form __row,
.woocommerce-form-row {
	display: flex;
	flex-direction: column;
	gap: 6px;
	margin: 0 0 var(--irbis-spacing-md, 16px);
}

.woocommerce-form label {
	font-size: 13px;
	font-weight: 700;
	color: var(--irbis-ink-soft);
}

.woocommerce-input-wrapper,
.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce form .form-row select {
	width: 100%;
	min-height: 44px;
	padding: 10px 14px;
	font-size: 15px;
	font-weight: 500;
	color: var(--irbis-ink);
	background: var(--irbis-white);
	border: 1px solid var(--irbis-line-strong);
	border-radius: var(--wp--preset--border-radius--sm, 8px);
}

.woocommerce form .form-row input.input-text:focus,
.woocommerce form .form-row textarea:focus,
.woocommerce form .form-row select:focus {
	border-color: var(--irbis-brand);
	box-shadow: 0 0 0 3px var(--irbis-brand-soft);
}


/* --------------------------------------------------------------------------
   12. Пагинация, 404, сайдбар, поиск по сайту — мелкие режимы.
   -------------------------------------------------------------------------- */

/* 12.1 Пагинация (§4.6). */
.page-numbers,
.woocommerce nav.woocommerce-pagination ul,
.woocommerce-pagination ul.page-numbers {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 6px;
	margin: var(--irbis-spacing-lg, 24px) 0 0;
	padding: 0;
	list-style: none;
	border: 0;
}

.woocommerce nav.woocommerce-pagination ul li,
.page-numbers li {
	border: 0;
	overflow: visible;
	padding: 0;
}

.page-numbers .page-numbers,
.woocommerce-pagination .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 44px;
	min-height: 44px;
	padding: 0 10px;
	font-size: 15px;
	font-weight: 700;
	font-variant-numeric: tabular-nums;
	color: var(--irbis-ink-soft);
	background: var(--irbis-white);
	border: 1px solid var(--irbis-line);
	border-radius: var(--wp--preset--border-radius--sm, 8px);
	text-decoration: none;
}

.page-numbers .page-numbers:hover {
	color: var(--irbis-brand-hover);
	border-color: var(--irbis-brand-soft);
	background: var(--irbis-brand-soft);
	text-decoration: none;
}

.page-numbers .page-numbers.current {
	color: var(--irbis-white);
	background: var(--irbis-brand);
	border-color: var(--irbis-brand);
}

/* 12.2 404 (§4.1). */
.irbis-404 {
	display: flex;
	flex-direction: column;
	gap: var(--irbis-spacing-md, 16px);
	padding: var(--irbis-spacing-2xl, 48px) 0;
	text-align: left;
}

.irbis-404__code {
	font-size: clamp(40px, 8vw, 72px);
	font-weight: 800;
	line-height: 1;
	color: var(--irbis-line-strong);
}

/* 12.3 Сайдбар (§4.7 sidebar на страницах). */
.wp-block-column-sidebar,
.wp-block-sidebar {
	font-size: 14px;
}

.wp-block-sidebar .wp-block-group.has-background {
	padding: var(--irbis-spacing-md, 16px);
}

.wp-block-sidebar h2,
.wp-block-sidebar .wp-block-heading {
	margin: 0 0 12px;
	font-size: 13px;
	font-weight: 800;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--irbis-ink-muted);
}

.wp-block-sidebar ul,
.wp-block-sidebar ol {
	margin: 0 0 var(--irbis-spacing-md, 16px);
	padding: 0;
	list-style: none;
}

.wp-block-sidebar ul li {
	margin: 0;
}

.wp-block-sidebar ul li a,
.wp-block-page-list a,
.wp-block-archives-list a,
.wp-block-latest-posts__list a {
	display: inline-flex;
	align-items: center;
	min-height: 40px;
	font-size: 14px;
	font-weight: 500;
	color: var(--irbis-ink-soft);
	text-decoration: none;
}

.wp-block-sidebar ul li a:hover {
	color: var(--irbis-brand-hover);
	text-decoration: underline;
}

.wp-block-sidebar .wp-block-search__input {
	min-height: 44px;
	padding: 8px 14px;
	font-size: 15px;
	background: var(--irbis-white);
	border: 1px solid var(--irbis-line-strong);
	border-radius: var(--wp--preset--border-radius--sm, 8px);
}

/* 12.4 Хлебные крошки/заголовки архивов на 1440/991/768/425 — компактируем (§4.8). */
@media (max-width: 1440px) {
	.woocommerce-breadcrumb,
	.woocommerce .woocommerce-result-count,
	.woocommerce .page-title {
		padding-left: 0;
	}
}

@media (max-width: 991px) {
	.woocommerce-breadcrumb,
	.woocommerce .woocommerce-result-count,
	.woocommerce .page-title {
		padding-left: 0;
		font-size: 13px;
	}
}

@media (max-width: 781px) {
	/* Макет 04: H1 категории 22/800 (x446 y174 fs=22 fw=800). */
	.woocommerce .page-title,
	.woocommerce-products-header__title.page-title {
		font-size: clamp(22px, 5vw, 28px);
		font-weight: 800;
	}
}

/* 12.5 Убираем родительские колоночные «застывшие» ширины колонок навигации (§4.2). */
@media (max-width: 991px) {
	.lower-header .nav-block,
	.lower-header .logo-block,
	.lower-header .header-right,
	.lower-header .social-block,
	.lower-header .button-block {
		width: auto;
		flex: 1 1 auto;
	}
}


/* --------------------------------------------------------------------------
   13. §4.2 мобильная шапка 64px: [бургер][лого][поиск][резервы].
   -------------------------------------------------------------------------- */

@media (max-width: 781px) {
	/* Макет 04: шапка full-bleed 388×56 + линия #E4E9EF на y=56.
	   Врезание 32px = root padding (theme.json, на body) 16 + padding-inline
	   `.wp-site-blocks` 16; снимаем его отрицательным margin. */
	.irbis-header {
		margin-inline: calc(-1 * (var(--wp--style--root--padding-left, 16px) + var(--wp--custom--spacing--outer, 16px)));
		border-bottom: 1px solid var(--irbis-line);
	}

	/* Макет 04: тёмный футер full-bleed (`rect x=1 width=388`): снимаем root padding (16)
	   и padding `.wp-site-blocks` (16) тем же паттерном, что и мобильная шапка. */
	.wp-site-blocks .irbis-footer-part {
		margin-inline: calc(-1 * (var(--wp--style--root--padding-left, 16px) + var(--wp--custom--spacing--outer, 16px))) !important;
	}

	/* 56px ровно: bar border-box + padding-block снят.
	   Было: min-height 56 (content-box) + padding-block 6+6 + border 1 = 69px. */
	.irbis-header__bar {
		box-sizing: border-box;
		flex-wrap: nowrap;
		gap: 8px;
		min-height: var(--irbis-header-h-m, 56px);
		padding-block: 0;
	}

	.irbis-header__nav,
	.irbis-header__phone,
	.irbis-header .wp-block-search,
	.irbis-header__search,
	.irbis-header__reserves,
	.irbis-mega {
		display: none;
	}

	/* Макет 04: бургер — чип 32×32 rx8 #0F7A5A с белыми штрихами. */
	.irbis-burger {
		display: inline-flex;
		order: 1;
		width: 32px;
		height: 32px;
		color: var(--irbis-white);
		background: var(--irbis-brand);
		border-radius: var(--wp--preset--border-radius--sm, 8px);
	}

	.irbis-burger__box {
		width: 16px;
		height: 12px;
	}

	.irbis-burger__box span {
		top: 5px;
	}

	.irbis-header__logo {
		order: 2;
		flex: 1 1 auto;
		min-width: 0;
	}

	.irbis-header__logo img {
		height: 32px;
	}

	.irbis-header__mobile-icons {
		order: 3;
		display: flex;
		align-items: center;
		gap: 4px;
		margin-left: auto;
	}

	.irbis-header__mobile-btn {
		display: inline-flex;
		align-items: center;
		justify-content: center;
		width: 44px;
		height: 44px;
		padding: 0;
		color: var(--irbis-ink);
		background: none;
		border: 0;
		text-decoration: none;
		position: relative;
		cursor: pointer;
	}

	/* Макет 04: глифы 24px; зона нажатия остаётся 44px (§6 доступность). */
	.irbis-header__mobile-btn .irbis-icon {
		width: 24px;
		height: 24px;
	}

	.irbis-header__mobile-btn.is-reserves {
		color: var(--irbis-brand);
	}

	.irbis-header__mobile-btn .irbis-header__reserves-count {
		position: absolute;
		top: 4px;
		right: 2px;
		min-width: 18px;
		min-height: 18px;
		font-size: 11px;
	}

	html {
		scroll-padding-top: calc(var(--irbis-header-h-m, 56px) + 12px);
	}
}

@media (max-width: 479px) {
	/* Макет 04: в шапке обе строки — «ИРБИС» 15/800 и «АПТЕКА · МОСКВА» 9/600. */
	.irbis-header__name {
		font-size: 15px;
		line-height: 1.2;
	}

	.irbis-header__name .irbis-header__name-sub {
		display: block;
		font-size: 9px;
		font-weight: 600;
		letter-spacing: 0.04em;
		line-height: 1.3;
		color: var(--irbis-ink-muted);
	}
}

/* --------------------------------------------------------------------------
   13.4 Мобильный hero ≤639px — по макету 04-mobile.svg.
   hero 358×220 rx12, поле 326×48 rx24 с кнопкой 88×40 rx20 ВНУТРИ справа,
   H1 20/800, лид 13, подпись 11, чипсы лентой 44px rx22 с горизонтальным скроллом.
   -------------------------------------------------------------------------- */
@media (max-width: 639px) {
	/* Карточка hero занимает всю область контента: x=16, ширина 358, y=шапка+16 (макет 04).
	   border-box у main уже 16…374 (родительский alignfull даёт отрицательные
	   отступы), поэтому нужен только ноль по padding-inline.
	   Специфичность (1,2,1) > базового `main#content` (1,1,0) и родительского
	   `.wp-block-group.alignfull` (0,2,0) — id обязателен, иначе --irbis-section (40px) побеждает.
	   padding-top 16px: карточка сразу под шапкой + 16px (макет: 56 + 16 = y72). */
	.wp-site-blocks main#content.irbis-front {
		padding-inline: 0;
		padding-top: var(--irbis-spacing-md, 16px);
	}

	/* Карточку носит .irbis-hero__card (в ней H1, лид, поле поиска и подпись),
	   лента чипсов лежит на фоне страницы: макет 04 — карточка y=72…292, чипсы y=308. */
	.irbis-hero {
		padding: 0;
		background: transparent;
		border: 0;
		border-radius: 0;
	}

	.irbis-hero__card {
		padding: var(--irbis-spacing-md, 16px);
		background: var(--irbis-surface);
		border: 1px solid var(--irbis-line);
		border-radius: var(--wp--preset--border-radius--md, 12px);
	}

	/* Специфичность как у базового `.irbis-hero h1`, иначе базовый clamp(30..46) побеждает.
	   4.5vw при 390px = 17.6px → clamp даёт ровно 20px (макет 04: font-size 20). */
	.irbis-hero h1,
	.irbis-hero__title {
		max-width: none;
		margin-bottom: var(--irbis-spacing-sm, 12px);
		font-size: clamp(20px, 4.5vw, 24px);
	}

	.irbis-hero__lead {
		max-width: 40ch;
		margin-bottom: var(--irbis-spacing-md, 16px);
		font-size: 13px;
		line-height: 1.5;
	}

	/* Поле-пилюля 326×48 rx24: 40 (input) + 2×3 padding + 2×1 border = 48.
	   Форма = рамка, внутри прозрачный input + компактная кнопка. */
	.irbis-hero__search .irbis-search {
		flex: 1 1 100%;
		max-width: none;
		gap: 4px;
		padding: 3px;
		background: var(--irbis-white);
		border: 1px solid var(--irbis-line-strong);
		border-radius: var(--wp--preset--border-radius--pill, 999px);
	}

	.irbis-hero__search .irbis-search::before {
		left: 14px;
	}

	.irbis-hero__search .irbis-search:focus-within {
		border-color: var(--irbis-brand);
		box-shadow: 0 0 0 3px var(--irbis-brand-soft);
	}

	.irbis-hero__search .wp-block-search__input,
	.irbis-hero__search input[type="search"],
	.irbis-hero__search input[type="text"] {
		min-height: 40px;
		padding: 0 8px 0 46px;
		font-size: 15px;
		background: transparent;
		border: 0;
		border-radius: 0;
	}

	.irbis-hero__search .wp-block-search__input:focus,
	.irbis-hero__search input:focus {
		border: 0;
		box-shadow: none;
	}

	.irbis-hero__search .wp-block-search__button,
	.irbis-hero__search button[type="submit"] {
		min-height: 40px;
		min-width: 88px;
		padding: 0 16px;
		font-size: 14px;
	}

	/* В макете 04 ссылки «Как это работает» нет: на мобильном она убрана
	   из карточки (шаг «Как получить» всё равно есть отдельной секцией ниже). */
	.irbis-hero__search .irbis-textlink {
		display: none;
	}

	/* Макет 04: подпись 11px, отрыв от поля поиска 16px. */
	.irbis-hero__caption {
		margin-top: var(--irbis-spacing-md, 16px);
		font-size: 11px;
	}

	/* Чипсы — лента без переноса, скролл (tap 44px). Лента вне карточки,
	   лежит на фоне страницы: x=16 (gutter уже даёт 16px), отрыв от карточки 16px.
	   Scrolling-лента начинается от карточки и уходит за правый край (overflow-x). */
	.irbis-chips {
		flex-wrap: nowrap;
		gap: 8px;
		overflow-x: auto;
		overscroll-behavior-x: contain;
		scroll-snap-type: x proximity;
		scrollbar-width: none;
		margin: var(--irbis-spacing-md, 16px) 0 0;
		padding-inline: 0;
	}

	.irbis-chips::-webkit-scrollbar {
		display: none;
	}

	.irbis-chip {
		flex: 0 0 auto;
		scroll-snap-align: start;
	}
}

/* --------------------------------------------------------------------------
	  13.5 Десктопный hero ≥640px — порядок и ритм по макету 01-front-desktop.svg.
	  DOM печатает подпись внутри карточки (.irbis-hero__card), чипсы — соседним
	  блоком; в макете 01 карточка hero одна (1240×344) и внутри неё порядок
	  обратный: чипсы y=416, подпись y=496. На десктопе обёртка карточки
	  display:contents — её дети становятся flex-элементами .irbis-hero,
	  который и рисует карточку; порядок правим flex-порядком.
	  -------------------------------------------------------------------------- */
@media (min-width: 640px) {
	/* Макет 01: высота карточки hero ровно 344 (y160…504). Бюджет:
	   pad-top 32 + H1 2×48.4 + 12 + лид 27.9 + поле 56 + 16 + чипсы 44
	   + 16 + подпись ~20 + pad-bottom 24 = 344. */
	.irbis-hero {
		display: flex;
		flex-direction: column;
		/* Макет 01 даёт h=344 при бюджете ниже; 24px оставляли hero на 14px выше. */
		padding-bottom: 20px;
	}

	/* h1 baseline 230/278 → box 97px, далее лид; отрыв 8px вместо 12px. */
	.irbis-hero__title {
		margin-bottom: 8px;
	}

	.irbis-hero__card {
		display: contents;
	}

	.irbis-hero__inner {
		order: 1;
		flex: 1 1 auto;
	}

	/* Лид в одну строку, отрыв до поля поиска 12px (макет 01: лид baseline 316,
	   поле y344). */
	.irbis-hero__lead {
		margin-bottom: var(--irbis-spacing-sm, 12px);
	}

	/* Макет 01: поле 700×56 @x52, кнопка 172×56 @x764 (gap 12), строка поиска
	   занимает 884px и не растягивается на всю карточку; «Как это работает»
	   идёт следом @x964. */
	.irbis-hero__search {
		gap: 12px;
		margin-bottom: 0;
	}

	/* Форма = 884px (поле 700 + gap 12 + кнопка 172); внутренний ритм
	   задаёт §18. Здесь лишь фиксируем внешнюю ширину. */
	.irbis-hero__search .wp-block-search,
	.irbis-hero__search form {
		flex: 0 0 884px;
		width: 884px;
	}

	.irbis-hero .irbis-chips {
		order: 2;
		/* Макет 01: gap ровно 12px (не токен -md = 16); отрыв от поля поиска 12px. */
		gap: 12px;
		margin: 12px 0 0;
	}

	.irbis-hero .irbis-hero__caption {
		order: 3;
		/* Макет 01: chips bottom 460 → baseline подписи 496. */
		margin-top: 12px;
	}
}


/* --------------------------------------------------------------------------
	  14. Мелкие правки родительской разметки, которую нельзя вычистить из контента.
	  -------------------------------------------------------------------------- */

/* 14.1 Демо-секции Creta на странице 16 ( Pricing Plan / 50$ / Whole Body Scan ) (§4.4, §4.7). */
.pricing-sec,
.welcome-slide,
.slider-text,
.slide-cover,
.feat_image,
.ablocks-block--spacer {
	display: none;
}

/* 14.2 Разметка «Доставка» / «Аптеки» (выбор аптеки) правится в контенте; в UI скрываем виджеты выбора. */
.irbis-hide,
.woocommerce-infinite-scroll__wrapper .loading,
.woocommerce ul.products li.product.hidden,
.wp-block-archives,
.wp-block-categories__list .children {
	display: none;
}

/* 14.3 Блоки, оставшиеся от ablocks, не должны ломать ритм. */
.ablocks-block {
	max-width: 100%;
}

.ablocks-block--spacer {
	height: 0;
	margin: 0;
}

/* 14.4 Cookie notice (simple-cookie-notice) не спорит с нижней панелью (§4.9).
 * .scn-content — селектор одноимённого плагина Cookie-notice, он не активен,
 * правила оставлены на случай его возвращения.
 *
 * Активный плагин — simple-cookie-notice (хендл jlplg_lovecoding_styles,
 * 1428 Б). Он снят в functions.php (бюджет §7 «CSS-запросов ≤ 6»), поэтому
 * ниже перенесены его 61 правило из plugins/simple-cookie-notice/styles.css
 * дословно; к ним добавлен подъём плашки над мобильной панелью (§4.9):
 * плагин пишет bottom:0 инлайном в style-атрибут контейнера
 * (simple-cookie-notice.php, строка 81), поэтому перебить его можно только
 * через !important. */
.scn-content {
	bottom: calc(84px + env(safe-area-inset-bottom, 0px));
}

.jlplg-lovecoding-cookie-info-container {
	position: fixed;
	z-index: 9999;
	width: 100%;
	text-align: center;
	margin: 0;
	bottom: calc(84px + env(safe-area-inset-bottom, 0px)) !important;
}

.jlplg-lovecoding-cookie-info-container.jlplg-hidden {
	display: none;
}

.jlplg-lovecoding-cookie-info {
	display: inline-block;
	padding: 10px;
	margin: 5px 0;
	font-size: 16px;
}

.jlplg-lovecoding-cookie-info a {
	color: inherit;
}

.jlplg-lovecoding-buttons {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	align-items: center;
	gap: 10px;
	margin-bottom: 16px;
}

.jlplg-lovecoding-cookie-accept-button,
.jlplg-lovecoding-cookie-privacy-policy {
	display: inline-block;
	padding: 7px 15px;
	border-radius: 4px;
	border: 2px solid transparent;
	margin: 0;
	text-decoration: none;
	line-height: 1;
	font-family: inherit;
	font-size: 16px;
}

.jlplg-lovecoding-cookie-accept-button:hover,
.jlplg-lovecoding-cookie-privacy-policy:hover,
.jlplg-lovecoding-cookie-accept-button:focus,
.jlplg-lovecoding-cookie-privacy-policy:focus {
	cursor: pointer;
	border: 2px solid transparent;
}

.jlplg-lovecoding-cookie-accept-button:focus-visible,
.jlplg-lovecoding-cookie-privacy-policy:focus-visible {
	border: 2px solid transparent;
	outline: 2px solid var(--jlplg-buton-bg-color);
	outline-offset: 2px;
}

.jlplg-lovecoding-cookie-info-container .button-text {
	font-size: 16px;
	text-transform: capitalize;
	font-weight: 400;
}

@media (min-width: 1024px) {
	.scn-content,
	.jlplg-lovecoding-cookie-info-container {
		bottom: 24px !important;
	}
}

/* 14.5 Админ-бар снят в functions.php, но если он появляется — не ломает sticky. */
#wpadminbar {
	position: fixed;
	z-index: 99999;
}

/* 14.6 Выделение текста и скроллбар — мягче (§3.1). */
::selection {
	color: var(--irbis-white);
	background: var(--irbis-brand);
}

/* 14.7 Отзывы/оценки WooCommerce на витрине не используются (§4.5). */
#reviews,
#tab-reviews,
.woocommerce-Reviews-title,
.woocommerce-Comments,
.comment-respond,
.woocommerce #respond,
#comments .comment-form {
	display: none;
}

/* 14.8 Таб-разметка WooCommerce Blocks: синхронизируем aria-selected с видимостью. */
[aria-selected="false"]:not(.irbis-tabs__tab) {
	opacity: 0.75;
}

/* Правила написаны для таб-разметки WooCommerce Blocks. Их нельзя применять к
   собственным пилюлям (§4.8): селектор атрибутного типа (0-1-0) стоит в файле
   ниже, чем `.irbis-tabs__tab`, и перебивал пилюлю — padding 16, вес 700,
   рамка 1px снята, текст `--irbis-ink` на брендовом фоне, а у `.irbis-tabs__nav`
   появлялся border-bottom 1px (nav = 45px против 44). Отсекаем свои элементы
   через :not() — тот же приём, что у [aria-selected="false"] выше. */
[role="tablist"]:not(.irbis-tabs__nav) {
	display: flex;
	flex-wrap: wrap;
	gap: 4px;
	border-bottom: 1px solid var(--irbis-line);
}

[role="tab"]:not(.irbis-tabs__tab) {
	min-height: 44px;
	padding: 0 16px;
	font-weight: 700;
	border-bottom: 2px solid transparent;
	background: none;
	border-top: 0;
	border-left: 0;
	border-right: 0;
	cursor: pointer;
}

[role="tab"][aria-selected="true"]:not(.irbis-tabs__tab) {
	color: var(--irbis-ink);
	border-bottom-color: var(--irbis-brand);
	opacity: 1;
}

[role="tabpanel"]:focus {
	outline: none;
}


/* --------------------------------------------------------------------------
   15. Иконки: один SVG-спрайт, 24×24, stroke 1.75, currentColor (§5).
   Иконки вставляются как <svg class="irbis-icon"><use href="#icon-…"/></svg>.
   -------------------------------------------------------------------------- */

.irbis-sprite {
	position: absolute;
	width: 0;
	height: 0;
	overflow: hidden;
	pointer-events: none;
}

.irbis-icon {
	width: 24px;
	height: 24px;
	flex: 0 0 auto;
	fill: none;
	stroke: currentColor;
	stroke-width: 1.75;
	stroke-linecap: round;
	stroke-linejoin: round;
	overflow: visible;
}

.irbis-icon--sm {
	width: 18px;
	height: 18px;
}

.irbis-icon--lg {
	width: 32px;
	height: 32px;
}

/* Маски-иконки, используемые выше как `mask: var(--irbis-icon-*)`. */
:root {
	--irbis-icon-search: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='M16 16l5 5'/%3E%3C/svg%3E");
	--irbis-icon-arrow-right: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14M13 6l6 6-6 6'/%3E%3C/svg%3E");
}

/* Иконки FontAwesome, оставшиеся в контенте: не показываем (§5). */
.wp-block-ablocks-icon-box,
.ablocks-icon-box,
.icon-box__icon i {
	display: none;
}


/* --------------------------------------------------------------------------
   16. Финальные переопределения родительского `!important`-хвоста (style.css 4556–4640).
   Переносим в дочернюю тему без каскада `!important` (§4.8).
   -------------------------------------------------------------------------- */

.woocommerce .woocommerce-breadcrumb,
.woocommerce-page .woocommerce-breadcrumb {
	padding-left: 0 !important;
	width: 100% !important;
	max-width: 100%;
}

/* `width: 100% !important` здесь — эхо удалённого родительского хвоста (style.css:4551).
   Оно стояло ПОСЖЕ тулбарного правила (§12.3, строки 3020-3031) и при равной
   специфичности с `!important` побеждало в каскаде: счётчик растягивался на 358px
   и сбрасывал сортировку на вторую строку (замер temp/archive-dom-390b.json:
   resultCount x16 w358, ordering x147 y247.69). Целевой тулбар макета 02 — ОДНА
   строка (y296): счётчик слева, сортировка справа. */
.woocommerce .woocommerce-result-count,
.woocommerce-page .woocommerce-result-count {
	padding-left: 0 !important;
	width: auto !important;
	max-width: 100%;
	float: left !important;
}

.woocommerce .page-title,
.woocommerce-page .page-title,
.woocommerce-products-header__title.page-title {
	padding-left: 0 !important;
	width: 100% !important;
	margin: 0 0 var(--irbis-spacing-lg, 24px) !important;
	/* Нижний предел clamp = 22px — мобильный H1 макета 04 (было 26px: этот !important
	   перебивал мобильное правило §12.4). */
	font-size: clamp(22px, 3.2vw, 36px) !important;
}

.woocommerce-account .wp-site-blocks main .woocommerce {
	max-width: 100% !important;
}

.woocommerce .wp-block-sidebar .wp-block-group.has-background:hover,
.wp-block-sidebar .wp-block-group.has-background:hover {
	transform: none !important;
	box-shadow: var(--irbis-shadow-card-hover, 0 6px 16px rgba(15, 23, 42, 0.12)) !important;
}

.woocommerce ul.products li.product,
.woocommerce-page ul.products li.product {
	text-align: left !important;
}

.woocommerce ul.products li.product .add_to_cart_button,
.woocommerce ul.products li.product .added_to_cart {
	display: flex !important;
	margin: auto 0 0 !important;
}

/* Широкие секции: родительский constrained-лейаут не должен резать wide-блоки. */
.alignwide {
	max-width: var(--irbis-wide, 1240px);
	margin-inline: auto;
	width: 100%;
}

.alignfull {
	max-width: none;
	width: 100%;
}

.wp-block-group.alignwide,
.wp-block-columns.alignwide {
	box-sizing: border-box;
}

/* --------------------------------------------------------------------------
   17. Горизонтальный рельс «Популярное» внутри .woocommerce ul.products.
   Специфичность `.woocommerce ul.products` (0,2,1) из §6.1 задаёт grid-колонки,
   поэтому рельс переопределяем тем же весом и НИЖЕ по порядку.
   -------------------------------------------------------------------------- */
.woocommerce ul.products.irbis-rail {
	display: grid;
	grid-template-columns: none;
	grid-auto-flow: column;
	grid-auto-columns: minmax(220px, 260px);
	gap: var(--irbis-grid-gap, clamp(12px, 2vw, 24px));
	overflow-x: auto;
	overscroll-behavior-x: contain;
	scroll-snap-type: x proximity;
	padding-bottom: 8px;
	margin-inline: calc(-1 * var(--irbis-gutter, clamp(16px, 4vw, 32px)));
	padding-inline: var(--irbis-gutter, clamp(16px, 4vw, 32px));
	-webkit-overflow-scrolling: touch;
}

.woocommerce ul.products.irbis-rail > li {
	scroll-snap-align: start;
}

@media (min-width: 1024px) {

	.woocommerce ul.products.irbis-rail {
		grid-auto-flow: row;
		grid-auto-columns: auto;
		/* макет 01: 4 колонки по 292px на 1240px; родительский стиль
		   («.woocommerce ul.products») навязывает max-width:90% !important —
		   отвечаем !important (см. §12.9, «Учётные записи»). */
		max-width: none !important;
		width: 100% !important;
		align-items: stretch !important;
		grid-template-columns: repeat(4, minmax(0, 1fr));
		overflow: visible;
		margin-inline: 0;
		padding-inline: 0;
	}
}

/* --------------------------------------------------------------------------
		 17.1. Рельс на мобильном = витрина макета 04: ДВЕ колонки 173px + 12px,
		 карточка 173×336 (медиа 149×149, CTA 149×44). Горизонтальный рельс
		 остаётся только 640…1023px. Разбираем НИЖЕ §17: media-query специфичность
		 не повышает, выигрываем порядком в файле.
		 358 − 12 = 346 / 2 = 173px колонка; минус поля 12 ⇒ контент 149px.
		 -------------------------------------------------------------------------- */
@media (max-width: 639px) {

	.woocommerce ul.products.irbis-rail {
		display: grid;
		grid-template-columns: repeat(2, minmax(0, 1fr));
		grid-auto-flow: row;
		grid-auto-columns: auto;
		max-width: none !important;
		width: 100% !important;
		gap: 12px;
		overflow: visible;
		overscroll-behavior-x: auto;
		scroll-snap-type: none;
		padding-bottom: 0;
		margin-inline: 0;
		padding-inline: 0;
	}

	.woocommerce ul.products.irbis-rail > li {
		scroll-snap-align: auto;
	}

	/* Витрина категории на мобильном = макет 04: ДВЕ колонки 173×336 (x=446/631,
	   gap 12) при контенте 358px. Базовая сетка §6.1 даёт одну колонку (326px),
	   что было зафиксировано как расхождение в plans/mocks/README.md.
	   358 − 12 = 346 / 2 = 173px. */
	.woocommerce ul.products,
	.woocommerce-page ul.products {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 12px;
	}

	/* Ритм карточки по макету 04: 12 + 149 (медиа) + 32 (название, 2×16)
		  + 12 (название+наличие) + 12 (наличие+цена) + 22 (цена) + 12 (CTA)
		  + 44 = 337px. */
	.woocommerce ul.products li.product {
		gap: 12px;
	}

	/* Название 13/700 в две строки (макет 04: baseline 622 и 638). */
	.woocommerce ul.products li.product .woocommerce-loop-product__title,
	.woocommerce ul.products li.product .irbis-card__name {
		max-height: 32px;
		font-size: 13px;
		line-height: 16px;
	}

	.woocommerce ul.products li.product .irbis-card__meta,
	.woocommerce ul.products li.product .irbis-meta {
		font-size: 11px;
	}

	/* Наличие: макет 04 — «в наличии · 15:15» 11/600, точка 7px. */
	.irbis-stock {
		gap: 5px;
		font-size: 11px;
	}

	.irbis-stock::before {
		width: 7px;
		height: 7px;
	}

	/* Цена 18/800 (макет 04, baseline 688). */
	.woocommerce ul.products li.product .price {
		font-size: 18px;
	}

	/* CTA: 149×44 rx22, текст 14/700 (макет 04). */
	.woocommerce ul.products li.product .add_to_cart_button,
	.woocommerce ul.products li.product .added_to_cart,
	.woocommerce ul.products li.product .irbis-btn-reserve,
	.woocommerce ul.products li.product .irbis-btn-notify {
		min-height: 44px;
		font-size: 14px;
		padding: 0 10px;
	}

	/* Сноска «резерв 48 ч · оплата при получении» в макете 04 под карточками
		  отсутствует; на мобильном она position:absolute top:100% и легла бы на
		  нижний ряд сетки. */
	.woocommerce ul.products .irbis-card__foot {
		display: none;
	}

	/* Бейдж скидки: макет 04 — 46×22 rx4, смещение 12px от угла карточки
		  (= x=225,y=444 при карточке x=201,y=420 со полем 12px). */
	.woocommerce ul.products li.product .onsale,
	.woocommerce ul.products li.product .irbis-badge-discount {
		top: 24px;
		left: 24px;
		min-width: 46px;
		height: 22px;
		padding: 4px 8px;
		font-size: 11px;
		line-height: 14px;
	}

	/* Заголовок секции: 20/700 «В наличии сегодня» + «Все →» 14/700
		  (макет 04, y≈404), ритм до сетки 16px. */
	.irbis-front .irbis-section__head {
		margin-bottom: var(--irbis-spacing-sm, 12px);
	}

	.irbis-front .irbis-section__title {
		font-size: 20px;
	}

	.irbis-front .irbis-section__more {
		font-size: 14px;
	}
}


/* --------------------------------------------------------------------------
   18. Главная — поиск в hero (input + кнопка + «Как это работает»),
       карточка аптеки (§4.7), плашка и плитка Яндек.Карт.
   -------------------------------------------------------------------------- */

.irbis-hero__search {
	flex-wrap: wrap;
	align-items: center;
}

/* Макет 01: поле 700×56 + кнопка 172×56 + «Как это работает» в одну строку (x52…1188). */
.irbis-hero__search .irbis-search {
	position: relative;
	display: flex;
	flex-wrap: nowrap;
	gap: 12px;
	min-width: 0;
	/* 700 (поле) + 12 (gap) + 172 (кнопка) = 884 — вводимую строку не растягиваем. */
	flex: 0 0 884px;
	width: 884px;
	max-width: 884px;
}

/* Лупа внутри поля (иконка 24px, макет 01) — только CSS, разметка не меняется. */
.irbis-hero__search .irbis-search::before {
	content: "";
	position: absolute;
	top: 50%;
	left: 24px;
	width: 24px;
	height: 24px;
	margin-top: -12px;
	background: var(--irbis-ink-muted);
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m16.2 16.2 4.8 4.8'/%3E%3C/svg%3E") no-repeat center / 24px 24px;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m16.2 16.2 4.8 4.8'/%3E%3C/svg%3E") no-repeat center / 24px 24px;
	pointer-events: none;
}

.irbis-hero__search .wp-block-search__input,
.irbis-hero__search input[type="search"] {
	/* Макет 01: поле ввода ровно 700×56 @x52. */
	flex: 0 0 700px;
	width: 700px;
	min-width: 0;
}

.irbis-hero__search .wp-block-search__button,
.irbis-hero__search button[type="submit"] {
	/* Макет 01: кнопка «Найти» ровно 172×56 @x764. Core стили поиска дают
	   margin-left:10px — кнопка уезжала на x775. */
	flex: 0 0 172px;
	width: 172px;
	margin-left: 0;
}

/* «Как это работает» — текстовая ссылка в строке поиска (макет 01). */
.irbis-textlink {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	align-self: center;
	min-height: 44px;
	padding: 0 8px;
	font-size: 15px;
	font-weight: 600;
	color: var(--irbis-brand-hover);
	text-decoration: none;
	white-space: nowrap;
}

.irbis-textlink:hover,
.irbis-textlink:focus-visible {
	color: var(--irbis-brand);
	text-decoration: underline;
}

/* Карточка аптеки: контакты слева, плитки карт справа (356px). */
.irbis-pharmacy {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 356px;
	gap: var(--irbis-spacing-lg, 24px);
	box-sizing: border-box !important;
	/* Макет 01: блок аптеки 1240×180. */
	padding: 20px 24px;
	background: var(--irbis-white);
	border: 1px solid var(--irbis-line);
	border-radius: var(--wp--preset--border-radius--md, 12px);
	box-shadow: var(--irbis-shadow-card);
}

@media (max-width: 1023px) {
	.irbis-pharmacy {
		grid-template-columns: minmax(0, 1fr);
	}
}

.irbis-pharmacy p {
	/* Макет 01: baseline-шаг контактов 24px (18/700 address, 13/500 hours,
	   15/700 phones, 13/500 mail). padding 12 раздувал блок до 216px. */
	margin: 0 0 6px;
}

.irbis-pharmacy p:last-child {
	margin-bottom: 0;
}

.irbis-pharmacy__address {
	display: flex;
	align-items: flex-start;
	gap: var(--irbis-spacing-sm, 12px);
	font-size: 18px;
	font-weight: 700;
	line-height: 1.35;
	color: var(--irbis-ink);
}

.irbis-pharmacy__icon {
	display: inline-flex;
	flex: 0 0 auto;
	color: var(--irbis-brand);
}

.irbis-pharmacy__hours,
.irbis-pharmacy__mail {
	font-size: 13px;
	font-weight: 500;
	line-height: 1.55;
	color: var(--irbis-ink-muted);
}

.irbis-pharmacy__phones {
	font-size: 15px;
	font-weight: 700;
	color: var(--irbis-ink);
}

.irbis-pharmacy__phones a,
.irbis-pharmacy__mail a {
	color: inherit;
	text-decoration: none;
}

.irbis-pharmacy__phones a:hover,
.irbis-pharmacy__mail a:hover {
	color: var(--irbis-brand-hover);
	text-decoration: underline;
}

/* «одна аптека · самовывоз · без доставки» — мягкая плашка 26px. */
.irbis-plaque {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	/* Макет 01: плашка ровно 300×26, текст по центру. */
	box-sizing: border-box;
	min-width: 300px;
	min-height: 26px;
	padding: 4px 10px;
	font-size: 12px;
	font-weight: 600;
	line-height: 1.2;
	text-align: center;
	color: var(--irbis-brand-hover);
	background: var(--irbis-brand-soft);
	border-radius: var(--wp--preset--border-radius--xs, 4px);
}

.irbis-map {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 8px;
	/* Макет 01: плитка карт 356×132, прижата к верху строки (rect y=1644).
	   border-box обязателен: padding 16 + border входят в размер.
	   Фиксированная высота вместо min-height: grid-полоса растягивала плитку до 140px. */
	box-sizing: border-box;
	height: 132px;
	align-self: start;
	padding: var(--irbis-spacing-md, 16px);
	background: var(--irbis-surface);
	border: 1px solid var(--irbis-line);
	border-radius: var(--wp--preset--border-radius--sm, 8px);
	color: var(--irbis-ink-muted);
	font-size: 13px;
	font-weight: 600;
	text-align: center;
	text-decoration: none;
}

.irbis-map:hover,
.irbis-map:focus-visible {
	border-color: var(--irbis-brand);
	color: var(--irbis-brand-hover);
}

.irbis-map .irbis-icon {
	color: var(--irbis-brand);
}

/* --------------------------------------------------------------------------
   18.1 Строка поиска hero — responsive override для §18.
   Фиксация «884px» стоит в конце файла и по специфичности совпадает с
   hero-правилами §13.4/§13.5, а §18 в исходнике идёт позже них — то есть
   на мобильном она перебивала «flex: 1 1 100% / max-width: none» и форма
   hero уходила за правый край (на 390px scrollWidth 925). Поэтому сброс
   ширины дублируем здесь, ниже всех hero-правил.
   -------------------------------------------------------------------------- */
@media (max-width: 1023px) {
	/* 884 = поле 700 + gap 12 + кнопка 172. Ниже 1024px в карточку не помещается,
	   поэтому поле-пилюля растягивается на всю ширину (макет 04: 326×48 rx24),
	   кнопка — компактные 88×40. */
	.irbis-hero__search .irbis-search,
	.irbis-hero__search .wp-block-search,
	.irbis-hero__search form {
		flex: 1 1 100%;
		width: auto;
		min-width: 0;
		max-width: none;
		gap: 4px;
		padding: 3px;
		background: var(--irbis-white);
		border: 1px solid var(--irbis-line-strong);
		border-radius: var(--wp--preset--border-radius--pill, 999px);
	}

	.irbis-hero__search .wp-block-search__input,
	.irbis-hero__search input[type="search"],
	.irbis-hero__search input[type="text"] {
		flex: 1 1 auto;
		width: auto;
		min-width: 0;
		min-height: 40px;
		padding: 0 8px 0 46px;
		font-size: 15px;
		background: transparent;
		border: 0;
		border-radius: 0;
	}

	.irbis-hero__search .wp-block-search__button,
	.irbis-hero__search button[type="submit"] {
		flex: 0 0 auto;
		width: auto;
		min-width: 88px;
		min-height: 40px;
		padding: 0 16px;
		font-size: 14px;
	}
}

/* ==========================================================================
	  19. «Мои резервы» — страница корзины (§4.1, §4.9, todo #14)
	  Канва: plans/mocks/04-mobile.svg:468-563 (390px). Источник истины — SVG.
	  ========================================================================== */

/* 19.1 Обёртка main — та же формула канвы, что и .irbis-archive. */
.wp-site-blocks main#content.irbis-reserves {
	box-sizing: border-box;
	padding-top: 24px;
	padding-inline: var(--irbis-spacing-md, 16px);
	padding-bottom: var(--irbis-section);
	margin-inline: calc(-2 * var(--wp--custom--spacing--outer, clamp(16px, 4vw, 32px))) !important;
}

@media (min-width: 1280px) {
	.wp-site-blocks main#content.irbis-reserves {
		padding-inline: 20px;
	}
}

/* 19.2 Контентная колонка: на мобильном — вся ширина канвы, на десктопе — contentSize.
	   .irbis-phone-panel (панель телефона, §20.2, печатается на блочной корзине через
	   woocommerce_before_cart) входит в список обязательно: без этой правилки панель
	   растягивается на всю ширину main#content (1240px с учётом отрицательных margin
	   §19.1) и левый край панели оказывается на 76px левее левого края контентной
	   колонки, то есть блока заголовка, таблицы резервов (.irbis-res-form §19.4 — форма,
	   внутри которой таблица и бар «Забронировать всё») и аптеки. */
.irbis-reserves .irbis-reserves__head,
.irbis-reserves .irbis-res-form,
.irbis-reserves .irbis-reserves__empty,
.irbis-reserves .irbis-reserves__legal,
.irbis-reserves .irbis-reserves__cta,
.irbis-reserves .irbis-res-pharmacy,
.irbis-reserves .irbis-phone-panel,
.irbis-reserves .woocommerce-NoticeGroup,
.irbis-reserves .woocommerce-notices-wrapper,
.irbis-reserves .woocommerce-message,
.irbis-reserves .woocommerce-info,
.irbis-reserves .woocommerce-error,
.irbis-reserves .wc-block-components-notice-banner {
	box-sizing: border-box;
	max-width: var(--irbis-content, 840px);
	margin-inline: auto;
}

/* Нотисы WooCommerce 10.x печатаются без обёртки .woocommerce-messages —
 * шаблоны notices/notice.php, success.php и error.php выдают
 * .woocommerce-info / .woocommerce-message / .woocommerce-error напрямую,
 * а «Мои резервы» на блочной корзине дополняется React-баннером
 * .wc-block-components-notice-banner (role=alert) с классом состояния
 * is-success / is-error / is-warning / is-info. */
.irbis-reserves .woocommerce-NoticeGroup,
.irbis-reserves .woocommerce-notices-wrapper,
.irbis-reserves .woocommerce-message,
.irbis-reserves .woocommerce-info,
.irbis-reserves .woocommerce-error,
.irbis-reserves .wc-block-components-notice-banner {
	margin-bottom: var(--irbis-spacing-md, 16px);
}

/* 19.2.1 Layout React-баннера нотисов. Хендл wc-blocks-style снят в
 * functions.php (бюджет §7 «CSS-запросов ≤ 6»), его layout-часть перенесена
 * сюда из wc-blocks.css дословно (без !important: теперь мы — единственный
 * источник этих правил). Без неё React-разметка (svg + __content + кнопка
 * закрытия) не раскладывается. Правила глобальные: баннер появляется не
 * только на «Мои резервы», но и на других блочных страницах (checkout,
 * account). Цвета и карточная канва в контексте раздела переопределены ниже. */
.wc-block-components-notice-banner {
	align-content: flex-start;
	align-items: stretch;
	background: var(--irbis-white);
	border: 1px solid var(--irbis-ink);
	border-radius: var(--wp--preset--border-radius--md, 12px);
	box-sizing: border-box;
	color: var(--irbis-ink);
	display: flex;
	font-size: 0.875em;
	font-weight: 400;
	gap: 12px;
	line-height: 1.5;
	margin: 16px 0;
	padding: 16px;
}

.wc-block-components-notice-banner > .wc-block-components-notice-banner__content {
	align-self: center;
	flex-basis: 100%;
	padding-right: 16px;
	white-space: normal;
}

.wc-block-components-notice-banner > .wc-block-components-notice-banner__content:last-child {
	padding-right: 0;
}

.wc-block-components-notice-banner .wc-block-components-notice-banner__summary {
	font-weight: 600;
	margin: 0 0 8px;
}

.wc-block-components-notice-banner > .wc-block-components-notice-banner__content ol,
.wc-block-components-notice-banner > .wc-block-components-notice-banner__content ul {
	margin: 0 0 0 24px;
	padding: 0;
}

.wc-block-components-notice-banner > svg {
	align-self: center;
	background-color: var(--irbis-ink);
	border-radius: 50%;
	fill: var(--irbis-white);
	flex-grow: 0;
	flex-shrink: 0;
	height: 100%;
	padding: 2px;
}

/* Цвета состояний вне «Мои резервы» (checkout, account) — как в снятом
 * wc-blocks.css; в разделе их перебивают канвовые правила 19.2 ниже. */
.wc-block-components-notice-banner.is-error {
	background: #FFF0F0;
	border-color: var(--irbis-danger);
}

.wc-block-components-notice-banner.is-error > svg {
	background-color: var(--irbis-danger);
}

.wc-block-components-notice-banner.is-success {
	background: #F4FFF7;
	border-color: #4AB866;
}

.wc-block-components-notice-banner.is-success > svg {
	background-color: #4AB866;
}

.wc-block-components-notice-banner.is-warning {
	background: #FFFBF4;
	border-color: #F0B849;
}

.wc-block-components-notice-banner.is-warning > svg {
	background-color: #F0B849;
}

.wc-block-components-notice-banner.is-info {
	background: #F4F8FF;
	border-color: #007CBA;
}

.wc-block-components-notice-banner.is-info > svg {
	background-color: #007CBA;
}

/* Кнопка закрытия баннера (React .wc-block-components-button, в блочных темах
 * она же .wp-element-button): 16px в правый верхний угол, полупрозрачная.
 * !important нужен, чтобы перебить канву core/button из theme.json и
 * правила родителя (.woocommerce-cart .button.wp-element-button), а специфичность
 * (0,3,0) при равной с родителем выигрывает за счёт порядка файлов
 * (irbis-child печатается после родительского style.css). */
.wc-block-components-notice-banner > .wc-block-components-button {
	appearance: none;
	background: transparent none !important;
	border: 0 !important;
	box-shadow: none !important;
	color: inherit;
	flex: 0 0 16px;
	height: 16px !important;
	margin: 6px 0 0 auto !important;
	min-height: 0 !important;
	min-width: 0 !important;
	opacity: 0.6;
	outline: none !important;
	padding: 0 !important;
	width: 16px !important;
}

.wc-block-components-notice-banner > .wc-block-components-button:active,
.wc-block-components-notice-banner > .wc-block-components-button:focus,
.wc-block-components-notice-banner > .wc-block-components-button:hover {
	opacity: 1;
}

.wc-block-components-notice-banner > .wc-block-components-button > svg {
	height: 16px;
	padding: 0;
	width: 16px;
}

.wc-block-components-notice-banner:focus {
	outline-width: 0;
}

.wc-block-components-notice-banner:focus-visible {
	outline: 2px solid currentColor;
	outline-style: solid;
	outline-width: 2px;
}

/* Блочный баннер нотиса приводится к той же карточной канве, что и
 * классические нотисы: радиус md, отступ 14/16, акцентная левая линия. */
.irbis-reserves .wc-block-components-notice-banner {
	padding: 14px 16px;
	font-size: 14px;
	line-height: 1.5;
	background: var(--irbis-brand-soft);
	border: 1px solid transparent;
	border-left: 4px solid var(--irbis-brand);
	border-radius: var(--wp--preset--border-radius--md, 12px);
	color: var(--irbis-ink);
}

.irbis-reserves .wc-block-components-notice-banner.is-error {
	background: #FDECEC;
	border-color: transparent;
	border-left-color: var(--irbis-danger);
}

.irbis-reserves .wc-block-components-notice-banner.is-info,
.irbis-reserves .wc-block-components-notice-banner.is-warning {
	background: var(--irbis-brand-soft);
	border-color: transparent;
	border-left-color: var(--irbis-brand);
}

.irbis-reserves .wc-block-components-notice-banner > svg {
	align-self: center;
	background-color: var(--irbis-brand);
	border-radius: 50%;
	fill: var(--irbis-white);
	height: 18px;
	padding: 3px;
	width: 18px;
}

.irbis-reserves .wc-block-components-notice-banner.is-error > svg {
	background-color: var(--irbis-danger);
}

.irbis-reserves .wc-block-components-notice-banner a {
	color: var(--irbis-brand-hover);
	font-weight: 700;
}

/* Ссылка внутри баннера — «Мои резервы» / «Вернуть резерв». Ядро даёт ей
 * класс .wc-forward, WordPress 6.x — ещё и .wp-element-button (канва кнопки
 * из theme.json), а родительская тема добавляет
 * .woocommerce-cart .button.wp-element-button { padding/radius/border/font-size !important }.
 * Само правило wc-blocks.css
 * .wc-block-components-notice-banner > .wc-block-components-notice-banner__content .wc-forward
 * тоже использует !important на color/padding/background и выносит ссылку
 * вправо как кнопку. Нотис — сообщение, а не действие с приоритетом,
 * поэтому ссылка остаётся текстовой. Приходится отвечать тем же:
 * селектор через .__content даёт специфичность (0,4,1), что в паре с
 * !important перебивает и ядро (0,4,0 !important), и родителя (0,3,0 !important). */
.irbis-reserves .wc-block-components-notice-banner .wc-block-components-notice-banner__content a.wc-forward,
.irbis-reserves a.restore-item {
	appearance: none;
	background: transparent !important;
	border: 0 !important;
	border-radius: 0 !important;
	box-shadow: none !important;
	color: var(--irbis-brand-hover) !important;
	display: inline !important;
	float: none !important;
	font-size: inherit !important;
	font-weight: 700;
	line-height: inherit !important;
	margin: 0 !important;
	opacity: 1 !important;
	padding: 0 !important;
	text-decoration: underline;
}

.irbis-reserves .wc-block-components-notice-banner .wc-block-components-notice-banner__content a.wc-forward:hover,
.irbis-reserves a.restore-item:hover {
	background: transparent !important;
	color: var(--irbis-brand) !important;
}

/* 19.3 Шапка раздела: H1 22/800 + два подзаголовка 13px. */
.irbis-reserves__head {
	margin: 0 0 var(--irbis-spacing-md, 16px);
}

.irbis-reserves__title {
	margin: 0;
	font-size: 22px;
	font-weight: 800;
	line-height: 26px;
	color: var(--irbis-ink);
}

.irbis-reserves__note {
	margin: 0;
	font-size: 13px;
	line-height: 18px;
	color: var(--irbis-ink-muted);
}

/* 19.4 «Мои резервы» — ОДНА таблица всех позиций корзины + строка «Итого» +
	   одна кнопка «Забронировать всё» (план plans/reservations-cart-table.md
	   §5.1). Карточек на позицию больше нет: разметка прежних §19.4–19.7
	   (список ul + карточка 358×244 rx12 + кнопки 40×128) удалена вместе с
	   irbis_reserve_card_html(). Канва таблицы — та же карточка раздела:
	   rx12, подложка white, тень карточки, шаг сетки 16. */
.irbis-res-form {
	display: grid;
	gap: var(--irbis-spacing-md, 16px);
	margin: 0;
	padding: 0;
}

.irbis-res-table {
	box-sizing: border-box;
	width: 100%;
	table-layout: fixed;
	border-collapse: separate;
	border-spacing: 0;
	margin: 0;
	background: var(--irbis-white);
	border: 1px solid var(--irbis-line);
	border-radius: var(--wp--preset--border-radius--md, 12px);
	box-shadow: var(--irbis-shadow-card);
}

.irbis-res-table__caption {
	caption-side: top;
	box-sizing: border-box;
	padding: 12px var(--irbis-spacing-md, 16px) 0;
	font-size: 13px;
	font-weight: 600;
	line-height: 18px;
	text-align: left;
	color: var(--irbis-ink-muted);
}

/* Ширины колонок задаются заголовками: при table-layout: fixed расчёт идёт по
   первой строке таблицы, поэтому все строки одной ширины (сумма 100%). */
.irbis-res-table thead th {
	box-sizing: border-box;
	padding: 11px var(--irbis-spacing-sm, 12px);
	font-size: 12px;
	font-weight: 700;
	line-height: 16px;
	text-align: left;
	color: var(--irbis-ink-muted);
	background: var(--irbis-surface);
	border-bottom: 1px solid var(--irbis-line);
}

.irbis-res-table thead th:first-child {
	padding-left: var(--irbis-spacing-md, 16px);
	border-top-left-radius: var(--wp--preset--border-radius--md, 12px);
}

.irbis-res-table thead th:last-child {
	padding-right: var(--irbis-spacing-md, 16px);
	border-top-right-radius: var(--wp--preset--border-radius--md, 12px);
}

.irbis-res-table th#irbis-res-h-product { width: 34%; }
.irbis-res-table th#irbis-res-h-qty { width: 9%; text-align: center; }
.irbis-res-table th#irbis-res-h-price { width: 13%; text-align: right; }
.irbis-res-table th#irbis-res-h-total { width: 13%; text-align: right; }
.irbis-res-table th#irbis-res-h-deadline { width: 14%; }
.irbis-res-table th#irbis-res-h-action { width: 17%; }

/* 19.5 Строка позиции: ячейка товара — th scope="row", остальные ячейки
	   опираются на заголовки колонок через headers (axe td-headers-attr). */
.irbis-res-row > * {
	box-sizing: border-box;
	padding: 12px var(--irbis-spacing-sm, 12px);
	border: 0;
	border-bottom: 1px solid var(--irbis-line);
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	text-align: left;
	vertical-align: top;
	color: var(--irbis-ink);
}

.irbis-res-row > *:first-child {
	padding-left: var(--irbis-spacing-md, 16px);
}

.irbis-res-row > *:last-child {
	padding-right: var(--irbis-spacing-md, 16px);
}

.irbis-res-row:last-child > * {
	border-bottom: 0;
}

.irbis-res-row.is-expired > * {
	background: var(--irbis-surface);
	color: var(--irbis-ink-muted);
}

.irbis-res-cell.is-product {
	font-weight: 700;
}

.irbis-res-cell.is-qty {
	text-align: center;
}

.irbis-res-cell.is-price,
.irbis-res-cell.is-sum {
	text-align: right;
}

.irbis-res-link {
	display: inline-block;
	max-width: 100%;
	font-size: 14px;
	font-weight: 700;
	line-height: 20px;
	color: var(--irbis-ink);
	text-decoration: none;
	overflow-wrap: break-word;
}

.irbis-res-link:hover {
	color: var(--irbis-brand-hover);
}

.irbis-res-link:focus-visible {
	outline: 2px solid var(--irbis-brand);
	outline-offset: 2px;
	border-radius: var(--wp--preset--border-radius--xs, 4px);
}

/* 19.6 Число в ячейке и вторая строка ячейки (производитель, «на кассе»,
	   статус позиции). Числовые колонки — tabular-nums, чтобы суммы
	   выравнивались по разряду. */
.irbis-res-unit {
	display: block;
	font-variant-numeric: tabular-nums;
	overflow-wrap: break-word;
}

.irbis-res-note {
	display: block;
	margin-top: 4px;
	font-size: 12px;
	font-weight: 400;
	line-height: 16px;
	color: var(--irbis-ink-muted);
}

/* Чип статуса — h24 rx4 fs11/700, токены макета 04 (§19.5 прежней канвы):
	   min-width учитывает padding, как в канве. */
.irbis-res-chip {
	box-sizing: border-box;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	height: 24px;
	min-width: 92px;
	margin-top: 8px;
	padding: 0 var(--irbis-spacing-sm, 12px);
	border-radius: var(--wp--preset--border-radius--xs, 4px);
	font-size: 11px;
	font-weight: 700;
	line-height: 1;
	white-space: nowrap;
	background: var(--irbis-surface-alt);
	color: var(--irbis-ink-soft);
}

.irbis-res-chip.is-ready {
	min-width: 92px;
	background: var(--irbis-brand-soft);
	color: var(--irbis-brand-hover);
}

.irbis-res-chip.is-wait {
	min-width: 110px;
	background: var(--irbis-surface-alt);
	color: var(--irbis-ink-soft);
}

.irbis-res-chip.is-expired {
	min-width: 92px;
	background: #FDE7E9;
	color: var(--irbis-danger);
}

/* Действия строки: «Отменить» / «Повторить». Пилюли h32 rx16 fs13/700:
	   в карточке (§19.7) кнопки были 40×128 rx20, в ячейке 17% колонки такая
	   кнопка не помещается — компактный вариант той же палитры. */
.irbis-res-actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--irbis-spacing-xs, 8px);
}

.irbis-res-btn {
	display: inline-flex;
	box-sizing: border-box;
	align-items: center;
	justify-content: center;
	min-height: 32px;
	padding: 0 var(--irbis-spacing-sm, 12px);
	border-radius: 16px;
	font-size: 13px;
	font-weight: 700;
	line-height: 18px;
	text-align: center;
	text-decoration: none;
	white-space: nowrap;
	transition: background-color 150ms cubic-bezier(0.2, 0.8, 0.2, 1),
		color 150ms cubic-bezier(0.2, 0.8, 0.2, 1),
		border-color 150ms cubic-bezier(0.2, 0.8, 0.2, 1);
}

.irbis-res-btn.is-ghost {
	background: var(--irbis-white);
	border: 1px solid var(--irbis-line-strong);
	color: var(--irbis-ink-soft);
}

.irbis-res-btn.is-ghost:hover {
	border-color: var(--irbis-danger);
	color: var(--irbis-danger);
}

.irbis-res-btn.is-soft {
	background: var(--irbis-brand-soft);
	border: 1px solid transparent;
	color: var(--irbis-brand-hover);
}

.irbis-res-btn.is-soft:hover {
	background: #D6EDE4;
}

.irbis-res-btn:focus-visible {
	outline: 2px solid var(--irbis-brand);
	outline-offset: 2px;
}

/* 19.7 «Итого» — строка tfoot: метка слева, сумма справа, под суммой
	   «оплата при получении» и номер заказа ИРБ-YYMMDD-NNNN (§20.1). */
.irbis-res-table tfoot th,
.irbis-res-table tfoot td {
	box-sizing: border-box;
	padding: var(--irbis-spacing-md, 16px);
	background: var(--irbis-surface);
	border-top: 1px solid var(--irbis-line-strong);
}

.irbis-res-total__label {
	font-size: 14px;
	font-weight: 800;
	line-height: 20px;
	text-align: left;
	color: var(--irbis-ink);
	border-bottom-left-radius: var(--wp--preset--border-radius--md, 12px);
}

.irbis-res-total__value {
	text-align: right;
	border-bottom-right-radius: var(--wp--preset--border-radius--md, 12px);
}

.irbis-res-total__sum {
	display: block;
	font-size: 18px;
	font-weight: 800;
	line-height: 24px;
	font-variant-numeric: tabular-nums;
	color: var(--irbis-ink);
}

.irbis-res-total__value .irbis-res-note {
	margin-top: 2px;
	text-align: right;
}

/* Панель «Забронировать всё» — одна кнопка на всю таблицу (вариант 2):
   кнопка это submit той же формы. Без JS её обрабатывает PHP-обработчик
   irbis_reservation_reserve_all_form(), с JS отправку перехватывает
   irbis.js, чтобы гейт телефона открылся на месте. */
.irbis-reserve-all-bar {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--irbis-spacing-sm, 12px);
	box-sizing: border-box;
	padding: var(--irbis-spacing-md, 16px);
	background: var(--irbis-white);
	border: 1px solid var(--irbis-line);
	border-radius: var(--wp--preset--border-radius--md, 12px);
	box-shadow: var(--irbis-shadow-card);
}

.irbis-btn-reserve.irbis-reserve-all {
	box-sizing: border-box;
	min-width: 220px;
	min-height: 48px;
	padding: 0 var(--irbis-spacing-md, 16px);
	border: 1px solid var(--irbis-brand);
	border-radius: 24px;
	background: var(--irbis-brand);
	font: inherit;
	font-size: 15px;
	font-weight: 700;
	line-height: 20px;
	text-align: center;
	color: var(--irbis-white);
	cursor: pointer;
	transition: background-color 150ms cubic-bezier(0.2, 0.8, 0.2, 1),
		border-color 150ms cubic-bezier(0.2, 0.8, 0.2, 1);
}

.irbis-btn-reserve.irbis-reserve-all:hover {
	background: var(--irbis-brand-hover);
	border-color: var(--irbis-brand-hover);
}

.irbis-btn-reserve.irbis-reserve-all:focus-visible {
	outline: 2px solid var(--irbis-brand-hover);
	outline-offset: 2px;
}

.irbis-btn-reserve.irbis-reserve-all[disabled],
.irbis-btn-reserve.irbis-reserve-all[aria-busy="true"] {
	opacity: 0.6;
	cursor: progress;
}

.irbis-reserve-all-note {
	flex: 1 1 240px;
	margin: 0;
	font-size: 13px;
	line-height: 18px;
	color: var(--irbis-ink-muted);
}

.irbis-reserve-all-phone {
	display: inline-flex;
	align-items: center;
	gap: var(--irbis-spacing-xs, 8px);
	font-size: 13px;
	font-weight: 700;
	color: var(--irbis-brand-hover);
	text-decoration: none;
}

.irbis-reserve-all-phone .irbis-icon {
	flex: 0 0 16px;
	width: 16px;
	height: 16px;
}

.irbis-reserve-all-phone:hover {
	text-decoration: underline;
}

.irbis-reserve-all-phone:focus-visible {
	outline: 2px solid var(--irbis-brand);
	outline-offset: 2px;
}

/* 19.8 Пустой список. */
.irbis-reserves__empty {
	margin: 0;
	font-size: 15px;
	line-height: 22px;
	color: var(--irbis-ink-soft);
}

.irbis-reserves__back {
	display: inline-flex;
	align-items: center;
	gap: var(--irbis-spacing-xs, 8px);
	margin-top: var(--irbis-spacing-sm, 12px);
	font-size: 14px;
	font-weight: 700;
	color: var(--irbis-brand-hover);
	text-decoration: none;
}

.irbis-reserves__back .irbis-icon {
	width: 16px;
	height: 16px;
}

/* 19.9 Блок аптеки — 358×132 rx12 на подложке. */
.irbis-res-pharmacy {
	box-sizing: border-box;
	margin-top: var(--irbis-spacing-md, 16px);
	padding: var(--irbis-spacing-md, 16px);
	min-height: 132px;
	background: var(--irbis-surface);
	border: 1px solid var(--irbis-line);
	border-radius: var(--wp--preset--border-radius--md, 12px);
}

.irbis-res-pharmacy__title {
	display: flex;
	align-items: flex-start;
	gap: var(--irbis-spacing-xs, 8px);
	margin: 0;
	font-size: 15px;
	font-weight: 700;
	line-height: 20px;
	color: var(--irbis-ink);
}

.irbis-res-pharmacy__title .irbis-icon {
	flex: 0 0 20px;
	width: 20px;
	height: 20px;
	color: var(--irbis-brand);
}

.irbis-res-pharmacy__hours {
	margin: var(--irbis-spacing-xs, 8px) 0 0;
	font-size: 13px;
	line-height: 18px;
	color: var(--irbis-ink-soft);
}

.irbis-res-pharmacy__phones {
	margin: var(--irbis-spacing-xs, 8px) 0 0;
	font-size: 14px;
	font-weight: 700;
	line-height: 20px;
	color: var(--irbis-ink);
}

.irbis-res-pharmacy__phones a {
	color: inherit;
	text-decoration: none;
}

.irbis-res-pharmacy__phones a:hover {
	color: var(--irbis-brand-hover);
	text-decoration: underline;
}

.irbis-res-pharmacy__links {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: var(--irbis-spacing-sm, 12px);
	margin: var(--irbis-spacing-xs, 8px) 0 0;
}

.irbis-res-pharmacy__more {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	font-size: 13px;
	font-weight: 700;
	color: var(--irbis-brand-hover);
	text-decoration: none;
}

.irbis-res-pharmacy__more .irbis-icon {
	width: 14px;
	height: 14px;
}

.irbis-res-pharmacy__more:hover {
	text-decoration: underline;
}

.irbis-res-pharmacy__map {
	font-size: 11px;
	line-height: 16px;
	color: var(--irbis-ink-muted);
	text-decoration: none;
}

.irbis-res-pharmacy__map:hover {
	color: var(--irbis-brand-hover);
	text-decoration: underline;
}

/* 19.10 Юридические строки 11/18 и CTA 48 rx24. */
.irbis-reserves__legal {
	box-sizing: border-box;
	margin: 14px auto 0;
	padding: 0;
	list-style: none;
}

.irbis-reserves__legal li {
	font-size: 11px;
	line-height: 18px;
	color: var(--irbis-ink-muted);
}

.irbis-reserves__cta {
	margin: 6px 0 0;
}

.irbis-reserves__cta a {
	display: flex;
	box-sizing: border-box;
	align-items: center;
	justify-content: center;
	min-height: 48px;
	padding: 0 var(--irbis-spacing-md, 16px);
	border-radius: 24px;
	background: var(--irbis-brand-soft);
	font-size: 15px;
	font-weight: 700;
	color: var(--irbis-brand-hover);
	text-align: center;
	text-decoration: none;
	transition: background-color 150ms cubic-bezier(0.2, 0.8, 0.2, 1);
}

.irbis-reserves__cta a:hover {
	background: #D6EDE4;
}

.irbis-reserves__cta a:focus-visible {
	outline: 2px solid var(--irbis-brand);
	outline-offset: 2px;
}

/* 19.11 Мобильная панель (§4.9) уже даёт body padding-bottom; на «Мои резервы»
	  панель активна — пункт «Резервы» помечен aria-current="page". */
@media (max-width: 1023px) {
	.wp-site-blocks main#content.irbis-reserves {
		padding-top: 16px;
	}

	.irbis-reserves__title {
		font-size: 22px;
	}

	/* 390px (§10 п.1 плана): таблица становится карточной — строка это сетка
	   из двух колонок, заголовок колонок визуально скрыт, но остаётся в
	   дереве доступности (ячейки опирается на него через headers), имена
	   колонок печатает ::before. «Итого» остаётся строкой таблицы. */
	.irbis-res-table {
		table-layout: auto;
	}

	.irbis-res-table thead {
		position: absolute;
		width: 1px;
		height: 1px;
		margin: -1px;
		padding: 0;
		overflow: hidden;
		clip-path: inset(50%);
		white-space: nowrap;
		border: 0;
	}

	.irbis-res-row {
		display: grid;
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: var(--irbis-spacing-sm, 12px) var(--irbis-spacing-md, 16px);
		padding: var(--irbis-spacing-md, 16px);
		border-bottom: 1px solid var(--irbis-line);
	}

	.irbis-res-row > *,
	.irbis-res-row > *:first-child,
	.irbis-res-row > *:last-child {
		padding: 0;
		border: 0;
	}

	.irbis-res-row:last-child > * {
		border-bottom: 0;
	}

	.irbis-res-cell.is-product,
	.irbis-res-cell.is-action {
		grid-column: 1 / -1;
	}

	.irbis-res-cell.is-qty,
	.irbis-res-cell.is-price,
	.irbis-res-cell.is-sum {
		text-align: left;
	}

	.irbis-res-cell.is-qty::before,
	.irbis-res-cell.is-price::before,
	.irbis-res-cell.is-sum::before,
	.irbis-res-cell.is-deadline::before {
		display: block;
		margin-bottom: 2px;
		font-size: 11px;
		font-weight: 600;
		line-height: 14px;
		color: var(--irbis-ink-muted);
	}

	/* Имена колонок — те же строки, что заголовки thead: CSS-текст дублирует
	   доступные имена, а не вводит новые формулировки (сайт русскоязычный). */
	.irbis-res-cell.is-qty::before {
		content: "Кол-во";
	}

	.irbis-res-cell.is-price::before {
		content: "Цена";
	}

	.irbis-res-cell.is-sum::before {
		content: "Сумма";
	}

	.irbis-res-cell.is-deadline::before {
		content: "Срок";
	}

	.irbis-res-total {
		display: grid;
		grid-template-columns: minmax(0, 1fr) auto;
		gap: var(--irbis-spacing-sm, 12px);
	}

	.irbis-reserve-all-bar {
		flex-direction: column;
		align-items: stretch;
	}

	.irbis-btn-reserve.irbis-reserve-all {
		min-width: 0;
		width: 100%;
	}

	.irbis-reserve-all-note {
		flex: 1 1 auto;
	}
}

/* ==========================================================================
   20. Номер заказа ИРБ-YYMMDD-NNNN и телефон (§17, инцидент «резерв без номера»)
   Хелперы: inc/reservations-store.php. Номера в макетах plans/mocks/ нет —
   они появились после приёмки макетов, поэтому геометрия задаётся здесь и
   совпадает по токенам с §19 (карточка 358×244 rx12, шаг 16).
   ========================================================================== */

/* 20.1 Строка номера заказа в строке «Итого» (§19.7):
	   «Номер заказа: ИРБ-261102-0020 · +7 916 123-45-67». Моноширинный номер
	   читается на кассе с экрана, поэтому letter-spacing и tabular-nums.
	   Метка «позиция N из M» печатается только в многопозиционном заказе
	   (одна позиция — без метки, она ничего не добавляет к чтению).
	   Классы переименованы из irbis-res-card__number* вместе с уходом
	   карточек (§19.4): номер теперь относится к заказу целиком, а не к
	   карточке позиции. */
.irbis-res-number {
	display: flex;
	flex-wrap: wrap;
	justify-content: flex-end;
	align-items: baseline;
	gap: 6px;
	margin: 8px 0 0;
	font-size: 13px;
	line-height: 1.4;
	text-align: right;
	color: var(--irbis-ink-muted);
}

.irbis-res-number > span:first-child {
	color: var(--irbis-ink-soft);
}

.irbis-res-number-value {
	font-family: ui-monospace, "SFMono-Regular", "Roboto Mono", "DejaVu Sans Mono", monospace;
	font-variant-numeric: tabular-nums;
	letter-spacing: 0.02em;
	font-weight: 700;
	color: var(--irbis-brand-hover);
}

.irbis-res-number-pos {
	font-variant-numeric: tabular-nums;
	font-weight: 600;
	color: var(--irbis-ink-muted);
}

.irbis-res-number-phone {
	font-variant-numeric: tabular-nums;
	font-weight: 600;
	color: var(--irbis-ink);
}

/* 20.2 Панель телефона на «Мои резервы» — под заголовком раздела, на той же
	   контентной колонке, что заголовок, список резервов и блок аптеки
	   (шаг 16, подложка brand-soft). Работает и без JS: form method=post.

	   Ширина и выравнивание — те же, что у всего контента раздела: правило 19.2
	   (.irbis-reserves .irbis-phone-panel → max-width: var(--irbis-content, 840px);
	   margin-inline: auto). До него панель ограничивалась собственной канвой
	   358px и стояла в начале блока div.woocommerce (x=144), то есть на 76px
	   левее левого края контентной колонки (x=220): «вылезает налево».
	   Теперь панель — часть колонки: левый и правый края совпадают с соседями.

	   Колонка сетки принудительно minmax(0, 1fr): автоколонка grid рассчитывается
	   по min-content содержимого. Поле телефона по min-content правила
	   родительской темы (style.css:1598, специфичность 0,1,1) составляло
	   363.656px, что больше контентного ящика панели (324px): содержимое
	   вылезало за рамку (scrollWidth 380 > clientWidth 356). */
.irbis-phone-panel {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 8px;
	box-sizing: border-box;
	width: 100%;
	max-width: var(--irbis-content, 840px);
	padding: 16px;
	margin: 0 0 16px;
	border: 1px solid var(--irbis-line);
	border-radius: 12px;
	background: var(--irbis-brand-soft);
	box-shadow: var(--irbis-shadow-card);
}

/* Дочерние блоки панели не имеют права быть шире колонки. */
.irbis-phone-panel > * {
	min-width: 0;
}

.irbis-phone-panel__title {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 0;
	font-size: 15px;
	font-weight: 700;
	line-height: 1.3;
	color: var(--irbis-brand-hover);
}

.irbis-phone-panel__note {
	margin: 0;
	font-size: 13px;
	line-height: 1.45;
	color: var(--irbis-ink-muted);
}

.irbis-phone-panel__form {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
	margin-top: 4px;
}

.irbis-phone-panel__label {
	/* Доступное имя поля сохраняется и когда метка визуально одна из строк панели. */
	font-size: 13px;
	font-weight: 600;
	color: var(--irbis-ink);
}

/* Спецификость (0,2,0): родительская тема задаёт поле телефона правилом
   style.css:1598 «input[type="date"], …, input[type="tel"], …, textarea» со
   специфичностью (0,1,1), где padding: calc(0.667em + 2px),
   font-size: var(--wp--preset--font-size--upper-heading) (26px) и
   line-height: var(--wp--custom--typography--line-height--heading-six).
   Одиночный класс (0,1,0) проигрывал: поле выходило 247.98×79.66px.
   Два класса (0,2,0) выигрывают — поле становится 44px по высоте. */
.irbis-phone-panel .irbis-phone-panel__input {
	box-sizing: border-box;
	appearance: none;
	-webkit-appearance: none;
	flex: 1 1 156px;
	min-width: 156px;
	max-width: 260px;
	min-height: 44px;
	height: 44px;
	padding: 0 12px;
	border: 1px solid var(--irbis-line-strong, #C7D0DA);
	border-radius: 10px;
	background: var(--irbis-white, #fff);
	font: inherit;
	font-size: 15px;
	line-height: 42px;
	font-weight: 600;
	font-variant-numeric: tabular-nums;
	color: var(--irbis-ink);
}

.irbis-phone-panel__input:focus-visible {
	outline: 2px solid var(--irbis-brand);
	outline-offset: 1px;
	border-color: var(--irbis-brand);
}

.irbis-phone-panel__submit {
	box-sizing: border-box;
	min-height: 44px;
	padding: 0 16px;
	border: 1px solid var(--irbis-brand);
	border-radius: 22px;
	background: var(--irbis-brand);
	font: inherit;
	font-size: 14px;
	font-weight: 700;
	color: var(--irbis-white, #fff);
	cursor: pointer;
	transition: background-color 150ms cubic-bezier(0.2, 0.8, 0.2, 1);
}

.irbis-phone-panel__submit:hover {
	background: var(--irbis-brand-hover);
	border-color: var(--irbis-brand-hover);
}

.irbis-phone-panel__submit:focus-visible {
	outline: 2px solid var(--irbis-brand-hover);
	outline-offset: 2px;
}

.irbis-phone-panel__submit[disabled],
.irbis-phone-panel__submit.is-busy {
	opacity: 0.6;
	cursor: progress;
}

.irbis-phone-panel__msg {
	margin: 0;
	font-size: 13px;
	line-height: 1.4;
}

.irbis-phone-panel__msg.is-ok {
	color: var(--irbis-brand-hover);
}

.irbis-phone-panel__msg.is-ok .irbis-phone-panel__value {
	font-variant-numeric: tabular-nums;
	font-weight: 700;
}

.irbis-phone-panel__msg.is-error {
	color: var(--irbis-danger, #C1121F);
	font-weight: 600;
}

.irbis-phone-panel__msg.is-required {
	color: var(--irbis-ink);
	font-weight: 600;
}

/* 20.3 Гейт телефона — обязателен при резерве (§17). Печатается в wp_footer,
	   скрыт атрибутом hidden; открывает его irbis.js по ответу phone_required.
	   z-index выше тоста (100), перекрывает и шапку, и нижнюю панель. */
.irbis-phone-gate {
	position: fixed;
	inset: 0;
	z-index: calc(var(--irbis-z-toast, 100) + 20);
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 16px;
}

/* Атрибут hidden должен работать при нашем display:flex. */
.irbis-phone-gate[hidden] {
	display: none;
}

.irbis-phone-gate__overlay {
	position: absolute;
	inset: 0;
	background: rgba(15, 23, 42, 0.55);
}

.irbis-phone-gate__box {
	position: relative;
	box-sizing: border-box;
	width: 100%;
	max-width: 420px;
	padding: 24px;
	border-radius: 16px;
	background: var(--irbis-white, #fff);
	box-shadow: 0 18px 48px rgba(15, 23, 42, 0.24);
}

.irbis-phone-gate__title {
	margin: 0 0 8px;
	font-size: 20px;
	font-weight: 800;
	line-height: 1.25;
	color: var(--irbis-ink);
}

.irbis-phone-gate__note {
	margin: 0 0 16px;
	font-size: 13px;
	line-height: 1.45;
	color: var(--irbis-ink-muted);
}

.irbis-phone-gate__form {
	display: grid;
	gap: 8px;
}

.irbis-phone-gate__label {
	font-size: 13px;
	font-weight: 600;
	color: var(--irbis-ink);
}

.irbis-phone-gate__req {
	color: var(--irbis-danger, #C1121F);
	font-weight: 700;
}

/* Специфичность (0,2,0) — по той же причине, что и поле панели (§20.2):
   правило родительской темы style.css:1598 «input[type="tel"], …, textarea»
   имеет специфичность (0,1,1) и перебивает одиночный класс — поле раздувает
   до 26px шрифта и padding 19.342px. Два класса это выигрывают. */
.irbis-phone-gate .irbis-phone-gate__input {
	box-sizing: border-box;
	appearance: none;
	-webkit-appearance: none;
	width: 100%;
	max-width: 100%;
	min-height: 48px;
	height: 48px;
	padding: 0 14px;
	border: 1px solid var(--irbis-line-strong, #C7D0DA);
	border-radius: 10px;
	background: var(--irbis-white, #fff);
	font: inherit;
	font-size: 17px;
	line-height: 46px;
	font-weight: 600;
	font-variant-numeric: tabular-nums;
	color: var(--irbis-ink);
}

.irbis-phone-gate__input:focus-visible {
	outline: 2px solid var(--irbis-brand);
	outline-offset: 1px;
	border-color: var(--irbis-brand);
}

.irbis-phone-gate__error {
	margin: 0;
	font-size: 13px;
	line-height: 1.4;
	font-weight: 600;
	color: var(--irbis-danger, #C1121F);
}

.irbis-phone-gate__hint {
	margin: 0;
	font-size: 12px;
	line-height: 1.4;
	color: var(--irbis-ink-muted);
}

.irbis-phone-gate__example {
	font-family: ui-monospace, "SFMono-Regular", "Roboto Mono", "DejaVu Sans Mono", monospace;
	font-variant-numeric: tabular-nums;
	letter-spacing: 0.02em;
	font-weight: 700;
	color: var(--irbis-brand-hover);
}

.irbis-phone-gate__actions {
	display: flex;
	gap: 8px;
	margin-top: 8px;
}

.irbis-phone-gate__submit {
	box-sizing: border-box;
	flex: 1 1 auto;
	min-height: 48px;
	padding: 0 20px;
	border: 1px solid var(--irbis-brand);
	border-radius: 24px;
	background: var(--irbis-brand);
	font: inherit;
	font-size: 15px;
	font-weight: 700;
	color: var(--irbis-white, #fff);
	cursor: pointer;
	transition: background-color 150ms cubic-bezier(0.2, 0.8, 0.2, 1);
}

.irbis-phone-gate__submit:hover {
	background: var(--irbis-brand-hover);
	border-color: var(--irbis-brand-hover);
}

.irbis-phone-gate__submit:focus-visible {
	outline: 2px solid var(--irbis-brand-hover);
	outline-offset: 2px;
}

.irbis-phone-gate__close {
	box-sizing: border-box;
	min-height: 48px;
	padding: 0 16px;
	border: 1px solid var(--irbis-line-strong, #C7D0DA);
	border-radius: 24px;
	background: transparent;
	font: inherit;
	font-size: 15px;
	font-weight: 600;
	color: var(--irbis-ink-muted);
	cursor: pointer;
}

.irbis-phone-gate__close:hover {
	border-color: var(--irbis-ink-muted);
	color: var(--irbis-ink);
}

.irbis-phone-gate__close:focus-visible {
	outline: 2px solid var(--irbis-brand);
	outline-offset: 2px;
}

/* Гейт открыт: страница под оверлеем не прокручивается (§6 — модалка). */
html.irbis-phone-gate-open {
	overflow: hidden;
}

@media (max-width: 1023px) {
	.irbis-phone-panel__form {
		flex-wrap: wrap;
	}

	/* На мобильном поле занимает всю строку: 260px — потолок десктопа (§20.2). */
	.irbis-phone-panel .irbis-phone-panel__input {
		max-width: 100%;
	}

	.irbis-phone-panel__submit {
		flex: 1 1 100%;
	}

	.irbis-phone-gate__box {
		padding: 20px 16px;
	}

	.irbis-phone-gate__title {
		font-size: 18px;
	}

	.irbis-phone-gate__actions {
		flex-wrap: wrap;
	}

	.irbis-phone-gate__submit,
	.irbis-phone-gate__close {
		flex: 1 1 auto;
		min-width: 132px;
	}
}

@media (prefers-reduced-motion: reduce) {
	.irbis-phone-panel__submit,
	.irbis-phone-gate__submit,
	.irbis-btn-reserve.irbis-reserve-all,
	.irbis-res-btn {
		transition: none;
	}
}

/* --------------------------------------------------------------------------
   22. Фото товаров скрыты (2026-11-03). В прайсе 5 590 позиций 0 превью
   (`_thumbnail_id` = 0), медиа-слоты витрины («монограмма + „фото нет“»)
   выглядят как сломанные картинки. Слоты скрыты вместе с галереей
   и миниатюрами карточки; бейдж реальной скидки сохранён (§4.5): в карточке
   он абсолютный потомок `li` и переживает скрытие слота, на карточке товара
   `display: contents` возвращает его в сетку `.irbis-single` (правая колонка).
   -------------------------------------------------------------------------- */

.woocommerce ul.products .irbis-ph,
.irbis-grid--products .irbis-ph,
.irbis-card .irbis-ph,
.irbis-single__media,
.irbis-thumbs,
.woocommerce ul.products .irbis-ph__img,
.irbis-grid--products .irbis-ph__img,
.irbis-card .irbis-ph__img,
.irbis-single__media .irbis-ph__img,
.single-product .woocommerce-product-gallery,
.single-product .woocommerce-product-gallery img,
.woocommerce-cart .cart_item img,
.woocommerce-checkout .cart_item img,
.woocommerce-mini-cart img,
.woocommerce-mini-cart__contents img,
.wc-block-cart__main img,
.woocommerce-product-gallery img,
.woocommerce-loop-product__link img,
.irbis-card img {
	display: none;
}

.irbis-single__gallery {
	display: contents;
}

.irbis-single__media > *:not(.irbis-badge-discount),
.irbis-thumb,
.irbis-thumb * {
	display: none;
}

.irbis-single {
	position: relative;
}

.irbis-single__discount,
.irbis-single__media .irbis-badge-discount {
	position: absolute;
	top: 20px;
	left: auto;
	right: 20px;
	z-index: 3;
}

@media (max-width: 1023px) {
	.irbis-single__media,
	.irbis-thumbs {
		display: contents;
	}

	.irbis-single__discount,
	.irbis-single__media .irbis-badge-discount {
		position: absolute;
		top: 12px;
		right: 12px;
	}
	.irbis-single {
		position: relative;
	}
}

/* ============================================================
   23. «Похожие товары» убрана из карточки товара (2026-11-03).
   Секция не рендерится PHP (inc/single-product.php); этот блок —
   защитный: любые копии секции (в т.ч. из родительских хуков
   WooCommerce related/upsell/cross-sell) не показываются.
   ============================================================ */
.irbis-related,
.woocommerce_related_products,
.woocommerce-up-sells,
.woocommerce-cross-sells,
.single-product .related,
.single-product .upsells,
.single-product .cross-sells {
	display: none !important;
}
