/**
 * Левая навигационная колонка.
 *
 * Ширина и цвета — в переменных ниже. Брейкпоинт 850px совпадает с
 * hide-for-medium / show-for-medium в Flatsome, менять его отдельно нельзя.
 */

:root {
	--mcl-sidebar-w: 300px;
	--mcl-brand: #283586;
	--mcl-line: #e6e8f0;
	--mcl-muted: #55596b;
	/* Тёмно-синий витрины: заголовки разделов и плитки категорий. */
	--mcl-navy: #001f51;
	/* Красный — вторая плитка в чередовании на главной. */
	--mcl-red: #ff0008;
}

.mcl-sidebar {
	background: #fff;
	display: none;
	flex-direction: column;
	/* Снизу отступа нет: список упирается в край колонки, как и задумано. */
	padding: 14px 0 0;
	width: var(--mcl-sidebar-w);
}

/*
 * Логотип отбит от меню линией и воздухом. Прежние 20px не читались как
 * граница блоков: между пунктами меню и так 10px, и зазор выглядел просто
 * чуть большим шагом списка. Теперь 24px до линии и 24px после — вдвое
 * больше внутреннего ритма, поэтому шапка колонки отделяется сама собой.
 *
 * Линия во всю ширину, а не с отступами: она рифмуется с правой границей
 * колонки, того же цвета, и читается как структура панели, а не как
 * разделитель внутри списка.
 */
.mcl-sidebar__logo {
	border-bottom: 1px solid var(--mcl-line);
	margin-bottom: 24px;
	padding: 0 22px 24px;
}

.mcl-sidebar__logo a {
	display: block;
}

.mcl-sidebar__logo img {
	height: auto;
	max-width: 100%;
}

/*
 * Подпись под логотипом. Не heading: заголовок здесь встал бы выше h1
 * страницы и попал в структуру документа как раздел, которым не является.
 *
 * Набрана прописными по ширине колонки — заказчик хотел так. От пунктов
 * меню, которые тоже прописные, её отделяют насыщенность (800 против 500),
 * размер мельче и линия под блоком логотипа.
 *
 * Выключка по ширине задана вместе с `text-align-last`: без него последняя
 * строка осталась бы короткой, и блок не читался бы прямоугольником под
 * логотипом — ради чего выключка и нужна.
 *
 * Строки разбиты вручную через <br> в тексте подписи. Автоматический перенос
 * уводил «лентоткацкой» в первую строку, во второй оставалось одно слово —
 * а одно слово по ширине не выключить, между чем растягивать нечего.
 *
 * `text-align-last` применяется и к последней строке блока, и к строке перед
 * принудительным переносом, поэтому по ширине встают обе.
 *
 * Текст меняется фильтром `mcl_sidebar_tagline` из functions.php.
 * Через blogdescription нельзя: он уходит в SEO-заголовок главной.
 */
.mcl-sidebar__tagline {
	color: var(--mcl-muted);
	font-family: 'Onest', var(--fs-font-family, sans-serif);
	font-weight: 800;
	font-size: 13px;
	letter-spacing: 0.2px;
	line-height: 1.45;
	margin: 10px 0 0;
	text-align: left;
	text-transform: uppercase;
}

/* Варианты логотипа для тёмной и «прилипшей» шапки в сайдбаре не нужны. */
.mcl-sidebar__logo .header-logo-dark,
.mcl-sidebar__logo .header-logo-sticky {
	display: none !important;
}

/* -------------------------------------------------------------------------
 * Главное меню
 * ---------------------------------------------------------------------- */

.mcl-menu,
.mcl-menu ul {
	list-style: none;
	margin: 0;
	padding: 0;
}

/*
 * В «Дополнительном CSS» заказчика (Внешний вид → Настроить → Дополнительные
 * стили) задано глобальное `li { margin-left: 40px }`. Оно сдвигало вправо весь
 * список в колонке. Правило заказчика намеренно не трогаем — оно действует на
 * весь сайт; гасим его только здесь.
 */
.mcl-menu li,
.mcl-catalog li {
	margin-left: 0;
}

/*
 * Между пунктами верхнего уровня зазор набирался из отступов ссылки
 * (12px сверху и снизу) и ещё 9.6px от списочного `margin-bottom`
 * Flatsome — всего 33.6px. На ноутбучных экранах из-за этого «Контакты»
 * и «Полезная информация» уходили под сгиб.
 *
 * Лишний margin убран (он тут не нужен — пункты и так разделены), а
 * отступы ссылки ужаты до 9px: зазор стал 18px, а меню короче на 84px
 * и помещается целиком при высоте окна от 800px.
 */
.mcl-menu > li {
	margin-bottom: 0;
}

.mcl-menu > li > a {
	border-left: 3px solid transparent;
	color: #2b2b2b;
	display: block;
	font-size: 14px;
	font-weight: 500;
	letter-spacing: 0.03em;
	line-height: 1.35;
	/* 19 + 3px рамки слева = 22, вровень с логотипом и полем поиска. */
	padding: 9px 22px 9px 19px;
	text-transform: uppercase;
	transition: color 0.15s, border-color 0.15s;
}

.mcl-menu > li > a:hover {
	color: var(--mcl-brand);
}

.mcl-menu > li.current-menu-item > a,
.mcl-menu > li.current-menu-parent > a,
.mcl-menu > li.current-menu-ancestor > a {
	border-left-color: var(--mcl-brand);
	color: var(--mcl-brand);
}

/* -------------------------------------------------------------------------
 * Категории WooCommerce — всегда развёрнуты.
 * Разметку даёт wp_list_categories(), отсюда классы cat-item / current-cat.
 * Те же стили работают и внутри мобильной панели Flatsome.
 * ---------------------------------------------------------------------- */

.mcl-catalog {
	border-left: 1px solid var(--mcl-line);
	list-style: none;
	margin: 2px 0 12px 25px;
	padding: 0;
}

/*
 * В колонке список вложен в .mcl-menu, а тамошнее `.mcl-menu ul { margin: 0 }`
 * специфичнее и обнуляет отступ выше. Задаём явно: направляющая встаёт вровень
 * с текстом пунктов меню, сами категории уходят на ступень вправо.
 */
.mcl-menu .mcl-catalog {
	margin-left: 22px;
}

/*
 * Между категориями не должно быть воздуха: Flatsome задаёт спискам
 * `li { margin-bottom: 0.6em }` — это 9.6px, разумные для текста статьи и
 * лишние для навигации. Зазор задаёт только внутренний отступ ссылки, им
 * же набирается область нажатия.
 */
.mcl-catalog li {
	margin-bottom: 0;
}

.mcl-catalog .cat-item > a {
	color: var(--mcl-muted);
	display: block;
	font-size: 13px;
	line-height: 1.35;
	padding: 6px 20px 6px 14px;
	transition: background 0.15s, color 0.15s;
}

.mcl-catalog .cat-item > a:hover {
	background: #f4f5fa;
	color: var(--mcl-brand);
}

/*
 * У пункта со стрелкой ссылка занимает не всю ширину, поэтому подсветка
 * обрывалась бы за 44px до края — заметно рядом с пунктами без стрелки.
 * Красим строку целиком, с какой бы её части ни наводили.
 */
.mcl-catalog .mcl-has-children:hover > a,
.mcl-catalog .mcl-has-children:hover > .mcl-toggle {
	background: #f4f5fa;
	color: var(--mcl-brand);
}

/*
 * current-cat        — открыта сама категория;
 * current-cat-parent — открыта её подкатегория;
 * current-cat-ancestor — открыт кто-то глубже по ветке.
 * Классы расставляет ядро WordPress, вручную ничего проставлять не нужно.
 */
.mcl-catalog .current-cat > a,
.mcl-catalog .current-cat-parent > a,
.mcl-catalog .current-cat-ancestor > a {
	color: var(--mcl-brand);
	font-weight: 500;
}

/* Вложенные уровни, если MCL_CATALOG_DEPTH станет больше единицы. */
.mcl-catalog .children {
	list-style: none;
	margin: 0;
	padding-left: 14px;
}

/* -------------------------------------------------------------------------
 * Аккордеон.
 *
 * Раскрытием управляет assets/js/sidebar-nav.js: он дописывает кнопку-стрелку
 * и вешает класс `mcl-open`. Пока скрипт не отработал, действуют правила
 * с current-cat — так хотя бы текущая ветка видна, если скрипт не загрузился.
 * Как только список помечен классом `mcl-js`, состоянием управляет только он.
 * ---------------------------------------------------------------------- */

.mcl-catalog .children {
	display: none;
}

.mcl-catalog .current-cat > .children,
.mcl-catalog .current-cat-parent > .children,
.mcl-catalog .current-cat-ancestor > .children {
	display: block;
}

.mcl-catalog.mcl-js .children {
	display: none;
}

.mcl-catalog.mcl-js .mcl-open > .children {
	display: block;
}

/* Ссылка остаётся ссылкой, поэтому кнопка кладётся поверх правого края
   строки. Отступ у ссылки — чтобы длинное название не уходило под стрелку. */
/*
 * Пункт с подкатегориями — строка из ссылки и кнопки-стрелки, а под ней
 * вложенный список. Раньше кнопка накладывалась поверх ссылки абсолютом
 * и получала высоту числом; число приходилось держать равным высоте
 * строки, и после правки отступов стрелка съехала вниз.
 *
 * Теперь это обычная строка: ссылка занимает всё свободное место,
 * кнопка — свои 44px, обе растянуты на высоту строки, и стрелка встаёт
 * по центру сама. Вложенный список переносится на следующую строку.
 */
.mcl-catalog .mcl-has-children {
	display: flex;
	flex-wrap: wrap;
}

.mcl-catalog .mcl-has-children > a {
	flex: 1 1 auto;
	/* Место под стрелку больше не нужно: у неё своя колонка. */
	padding-right: 6px;
}

.mcl-catalog .mcl-has-children > .children {
	flex-basis: 100%;
}

/*
 * Кнопка — такой же элемент строки, как ссылка, и тянется на её высоту.
 * Высоту числом не задаём: она зависит от отступов ссылки, и при их
 * правке разъехалась бы — так стрелка уже однажды съехала на 4.6px.
 */
.mcl-toggle {
	align-items: center;
	align-self: stretch;
	background: none;
	border: 0;
	color: var(--mcl-muted);
	cursor: pointer;
	display: flex;
	flex: 0 0 44px;
	justify-content: center;
	/*
	 * Поля и минимальную высоту Flatsome задаёт всем кнопкам: `margin-bottom:
	 * 1em` съедал растяжку (при top+bottom он вычитается из высоты), а
	 * min-height делала кнопку выше строки.
	 */
	margin: 0;
	min-height: 0;
	padding: 0;
}

.mcl-toggle svg {
	height: 6px;
	transition: transform 0.2s;
	width: 10px;
}

.mcl-toggle:hover {
	color: var(--mcl-brand);
}

.mcl-toggle:focus-visible {
	border-radius: 3px;
	outline: 2px solid var(--mcl-brand);
	outline-offset: -4px;
}

.mcl-open > .mcl-toggle svg {
	transform: rotate(180deg);
}

/* -------------------------------------------------------------------------
 * Десктоп: колонка фиксирована, контент сдвинут вправо.
 * ---------------------------------------------------------------------- */

@media screen and (min-width: 850px) {
	#wrapper {
		padding-left: var(--mcl-sidebar-w);
	}

	.mcl-sidebar {
		border-right: 1px solid var(--mcl-line);
		bottom: 0;
		display: flex;
		left: 0;
		position: fixed;
		top: 0;
		z-index: 40;
	}

	/* Скроллится только список, логотип и поиск остаются на месте. */
	.mcl-sidebar__nav {
		display: flex;
		flex: 1;
		flex-direction: column;
		min-height: 0;
		overflow-y: auto;

		/*
		 * Полосу прокрутки прячем, сама прокрутка (колесо, тач, клавиши)
		 * работает. Заодно списку возвращаются съеденные ею 15px.
		 * Firefox и старый Edge — свойствами, Chrome и Safari — псевдоэлементом ниже.
		 */
		-ms-overflow-style: none;
		scrollbar-width: none;
	}

	.mcl-sidebar__nav::-webkit-scrollbar {
		display: none;
	}

	/*
	 * Если меню короче колонки, свободное место раскладывается между
	 * пунктами, и список доходит до нижнего края вместо того, чтобы
	 * обрываться посередине с пустотой под ним.
	 *
	 * `min-height: 100%` берётся от видимой высоты списка, поэтому на
	 * невысоких экранах, где меню и так не влезает, правило не делает
	 * ничего: свободного места нет, раскладывать нечего, прокрутка
	 * работает как прежде.
	 *
	 * Только на десктопе: в выезжающей панели список идёт подряд.
	 */
	.mcl-sidebar .mcl-menu {
		display: flex;
		flex-direction: column;
		justify-content: space-between;
		min-height: 100%;
	}

	/* Логотип живёт в сайдбаре, из шапки его убираем. */
	#header #logo {
		display: none;
	}

	/*
	 * padding у #wrapper не действует на position: fixed, поэтому все
	 * фиксированные элементы темы сдвигаем вручную. Список закрытый —
	 * если во Flatsome включат ещё один такой блок, его нужно добавить сюда.
	 */
	.header-wrapper.stuck,          /* прилипающая шапка */
	.sticky-add-to-cart--active,    /* панель заказа на карточке товара */
	.is-sticky-section,             /* липкая секция конструктора страниц */
	.flatsome-cookies {             /* уведомление о cookie */
		left: var(--mcl-sidebar-w);
	}

	/*
	 * Одного left мало. Flatsome задаёт `.header, .header-wrapper { width: 100% }`,
	 * а у фиксированного элемента 100% считаются от вьюпорта, а не от родителя.
	 * Ширина получалась во весь экран, right:0 при заданной ширине игнорируется,
	 * и прилипшая шапка уезжала за правый край ровно на ширину колонки.
	 * width:auto возвращает управление паре left/right.
	 */
	.header-wrapper.stuck {
		right: 0;
		width: auto;
	}

	/*
	 * В шапке остались только контакты и корзина. Штатно Flatsome прячет этот
	 * ряд при скролле и оставляет полосу категорий, но её больше нет —
	 * иначе прилипшая шапка была бы пустой.
	 */
	.header-wrapper.stuck .hide-for-sticky {
		display: block;
	}

}

/* -------------------------------------------------------------------------
 * Ширина баннера и секции заявки.
 *
 * В «Дополнительном CSS» заказчика задано
 * `.callback-section, .video-slider { width: 86vw }`. Единицы vw считаются
 * от вьюпорта и ломались в обе стороны:
 *
 *   на десктопе 86vw шире контентной области (она уже на ширину колонки),
 *   и секция вылезала за правый край, обрезая содержимое;
 *   на узких экранах 86vw уже вьюпорта — блоки получали поля по 7% с каждой
 *   стороны, хотя должны идти от края до края.
 *
 * Ширину задаём от родителя, а не от вьюпорта: на десктопе это контентная
 * область, на мобильных — вся ширина экрана. Правило заказчика намеренно
 * не трогаем и его 86% здесь не повторяем, чтобы при его правке ничего
 * не разъехалось.
 *
 * Правильнее задать ширину самой секции в UX Builder — тогда vw не нужен
 * вовсе, и это правило можно будет убрать.
 *
 * `#wrapper` в селекторе нужен ради веса: блок «Дополнительного CSS» Flatsome
 * выводит в разметке ниже нашего файла, и при равной специфичности выигрывал бы он.
 * ---------------------------------------------------------------------- */

#wrapper .callback-section,
#wrapper .video-slider {
	margin-left: 0;
	margin-right: 0;
	max-width: 100%;
	width: 100%;
}

/* -------------------------------------------------------------------------
 * Слои баннера: логотип в левом верхнем углу, слоган в правом нижнем.
 *
 * Оба блока собраны шорткодами темы (text_box + ux_image) и правятся в
 * UX Builder — здесь только оформление слогана и вертикальные отступы,
 * которых у text_box нет в настройках.
 *
 * Под логотип добавлена мягкая тень: на светлых кадрах ролика знак
 * теряет края, даже в светлой версии.
 * ---------------------------------------------------------------------- */

/*
 * Поля от краёв баннера. Слои Flatsome позиционирует абсолютно и вплотную
 * к краю, а у .banner-layers по бокам всего 15px — логотип и слоган
 * упирались в границы кадра.
 */
.mcl-banner__intro .text-inner {
	padding: 42px 0 0 42px;
}

.mcl-banner__outro .text-inner {
	padding: 0 42px 42px 0;
}

/* Обёртке картинки Flatsome даёт класс .img, а не .ux-image. */
.mcl-banner__intro .img img {
	filter: drop-shadow(0 2px 10px rgba(0, 0, 0, 0.45));
}

/*
 * Селектор с обоими классами нужен ради веса: у абзаца внутри text_box
 * свой вертикальный отступ от темы, и одного .mcl-banner__slogan не хватало —
 * слоган отходил от края на лишние 26px сверху и снизу.
 */
.mcl-banner__outro .mcl-banner__slogan {
	margin: 0;
}

.mcl-banner__slogan {
	color: #fff;
	font-family: 'Onest', var(--fs-font-family, sans-serif);
	font-size: 26px;
	/*
	 * У Onest нет собственного курсива — браузер наклоняет прямое
	 * начертание сам. Для трёх коротких строк это приемлемо; если
	 * понадобится настоящий курсив, придётся брать другое семейство.
	 */
	font-style: italic;
	font-weight: 500;
	letter-spacing: 0.2px;
	line-height: 1.35;
	margin: 0;
	text-shadow: 0 1px 12px rgba(0, 0, 0, 0.55);
}

@media (max-width: 849px) {
	.mcl-banner__intro .text-inner {
		padding: 26px 0 0 20px;
	}

	.mcl-banner__outro .text-inner {
		padding: 0 20px 26px 0;
	}

	.mcl-banner__slogan {
		font-size: 19px;
	}
}

/* -------------------------------------------------------------------------
 * Шапка: то, что осталось после переноса меню и логотипа в колонку.
 * Слева контакты, справа поиск и корзина.
 *
 * Состав и порядок элементов — «Внешний вид → Настроить → Flatsome →
 * Header → Header Elements»: контакты это «HTML Block 2» в левой группе,
 * поиск и корзина — в правой. Сама разметка контактов лежит в поле
 * «HTML Block 2» (theme_mod `topbar_right`), там три элемента подряд,
 * без переносов строк. Раскладку в строку задаём здесь.
 *
 * Не в медиазапросе: этот же блок Flatsome выводит в мобильной
 * off-canvas панели, и там строка так же уместна — просто переносится.
 * ---------------------------------------------------------------------- */

.mcl-contacts {
	align-items: center;
	display: flex;
	flex-wrap: wrap;
	gap: 2px 18px;
	line-height: 1.3;
}

.mcl-contacts__hours {
	white-space: nowrap;
}

/*
 * Почта и телефон — ссылки, поэтому красились в синий цвет ссылок темы.
 * Приводим их к тёмно-синему витрины, тем же, что у заголовков разделов
 * и плиток категорий.
 */
.mcl-contacts__mail,
.mcl-contacts__phone {
	color: var(--mcl-navy);
}

.mcl-contacts__mail:hover,
.mcl-contacts__phone:hover,
.mcl-contacts__mail:focus,
.mcl-contacts__phone:focus {
	color: var(--mcl-brand);
}

/* Телефон — главный контакт, поэтому крупнее остальных.
   Раньше эту роль играл <h2>, что давало лишний заголовок на каждой странице. */
.mcl-contacts__phone {
	font-size: 1.15em;
	font-weight: 500;
	white-space: nowrap;
}

/*
 * Узкий десктоп: колонка уже съела 300px, и контакты с корзиной перестают
 * помещаться в одну строку — корзина уезжает под них. Жертвуем часами
 * работы: это единственный элемент шапки, который не является действием.
 *
 * Порог 1000px посчитан от факта: контакты целиком занимают 414px и
 * кончаются на 729px, правой группе нужно 213px. Ниже 850px шапка уже
 * мобильная, туда правило не достаёт, а `#masthead` не даёт ему задеть
 * копию блока в off-canvas панели.
 */
@media screen and (min-width: 850px) and (max-width: 999px) {
	#masthead .mcl-contacts__hours {
		display: none;
	}
}

/*
 * Поле поиска раскрывается влево, а не вправо.
 *
 * Flatsome открывает выпадающие блоки правой группы под пунктом, слева
 * направо, и прижимает их к правому краю только у последнего пункта —
 * селектором `.nav-right li.current-dropdown:last-child`. У корзины так
 * и выходит, а поиск стоит перед ней, и его поле в 304px уезжало за
 * правый край окна: на ширине 1440px — на 90px, и чем уже экран, тем
 * сильнее.
 *
 * Повторяем правило темы, подставив вместо «последнего пункта» сам поиск.
 * Отступ -15px тоже её: на столько тема выносит блок за край пункта.
 */
.nav-right li.header-search-dropdown.current-dropdown > .nav-dropdown,
.nav-right li.header-search-dropdown.has-dropdown:hover > .nav-dropdown {
	left: auto;
	right: -15px;
}

/*
 * Подложка поиска — без отступов: поле занимает её целиком.
 *
 * У выпадающих блоков Flatsome отступ рассчитан на список ссылок, а здесь
 * внутри одно поле ввода со своей рамкой, и рамка в рамке смотрелась
 * лишней. Пункт-обёртку тоже распрямляем: у `.nav-dropdown-default` его
 * ссылкам заданы боковые поля, и от них поле съезжало внутрь.
 */
li.header-search-dropdown > .nav-dropdown {
	padding: 0;
}

li.header-search-dropdown > .nav-dropdown > li {
	margin: 0;
	padding: 0;
}

/* -------------------------------------------------------------------------
 * Заголовки разделов каталога на главной — шорткод [mcl_catalog_groups].
 * ---------------------------------------------------------------------- */

.mcl-group-title {
	margin-bottom: 0.6em;
	margin-top: 1.2em;
}

/*
 * Название раздела — ссылка на его страницу, поэтому цвет задаём на <a>:
 * на самом заголовке он ничего не даст, ссылка перебьёт своим.
 */
.mcl-group-title a {
	color: var(--mcl-navy);
}

.mcl-group-title a:hover,
.mcl-group-title a:focus {
	color: var(--mcl-brand);
}

.mcl-group-title:first-child {
	margin-top: 0;
}

/* -------------------------------------------------------------------------
 * Контакты менеджеров в карточках на главной.
 * Разметка лежит внутри [team_member] в контенте страницы, правится
 * в UX Builder.
 * ---------------------------------------------------------------------- */

.mcl-manager-contacts {
	display: flex;
	flex-direction: column;
	gap: 3px;
	margin-top: 6px;
	text-transform: none;
}

/*
 * Страховка от переносов, которые расставляет редактор.
 *
 * Разметка контактов написана в одну строку намеренно. Стоит открыть
 * страницу в редакторе и сохранить — он раскладывает её по строкам
 * и превращает переводы в <br>. Контейнер здесь flex-колонка, поэтому
 * каждый <br> становится отдельным элементом и добавляет по строке
 * высоты: карточки вырастали на 105px, между телефоном и почтой зияло
 * 32px вместо 3px.
 *
 * Убрать <br> из контента мало — они вернутся после следующего
 * сохранения. Поэтому гасим их и стилями.
 */
.mcl-manager-contacts br,
.mcl-manager-im br {
	display: none;
}

.mcl-manager-phone {
	font-weight: 500;
	white-space: nowrap;
}

/* Почты длинные, а колонка узкая — переносим, а не растягиваем карточку. */
.mcl-manager-mail {
	font-size: 0.9em;
	overflow-wrap: anywhere;
}

/*
 * Иконки мессенджеров под контактами. Ряд отдельной обёрткой, а не строкой
 * внутри .mcl-manager-contacts: там колонка, и иначе телефон с почтой встали
 * бы рядом с иконками.
 *
 * Логотипы лежат прямо здесь data-URI, а не в медиатеке. Причины две:
 * загрузка SVG в WordPress по умолчанию запрещена (SVG умеет нести скрипты),
 * а растр в иконке мылил бы на плотных экранах. Плюс файлы едут в git вместе
 * с темой и не теряются при переносе на другой сервер.
 *
 * Названия мессенджеров в разметке оставлены для скринридеров и спрятаны
 * визуально: ссылка без текста для них была бы пустой.
 */
.mcl-manager-im {
	display: flex;
	gap: 8px;
	justify-content: center;
	margin-top: 7px;
}

.mcl-manager-tg,
.mcl-manager-max {
	background-position: center;
	background-repeat: no-repeat;
	background-size: contain;
	border-radius: 7px;
	display: block;
	flex: none;
	height: 26px;
	overflow: hidden;
	text-indent: 110%;
	transition: transform 0.15s;
	white-space: nowrap;
	width: 26px;
}

.mcl-manager-tg {
	background-image: url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20240.1%20240.1%22%3E%3ClinearGradient%20id=%22t%22%20x1=%22120%22%20y1=%220%22%20x2=%22120%22%20y2=%22238.3%22%20gradientUnits=%22userSpaceOnUse%22%3E%3Cstop%20offset=%220%22%20stop-color=%22%232AABEE%22/%3E%3Cstop%20offset=%221%22%20stop-color=%22%23229ED9%22/%3E%3C/linearGradient%3E%3Ccircle%20fill=%22url(%23t)%22%20cx=%22120.1%22%20cy=%22120.1%22%20r=%22120.1%22/%3E%3Cpath%20fill=%22%23fff%22%20fill-rule=%22evenodd%22%20clip-rule=%22evenodd%22%20d=%22M54.3,118.8c35-15.2,58.3-25.3,70-30.2c33.3-13.9,40.3-16.3,44.8-16.4c1,0,3.2,0.2,4.7,1.4c1.2,1,1.5,2.3,1.7,3.3s0.4,3.1,0.2,4.7c-1.8,19-9.6,65.1-13.6,86.3c-1.7,9-5,12-8.2,12.3c-7,0.6-12.3-4.6-19-9c-10.6-6.9-16.5-11.2-26.8-18c-11.9-7.8-4.2-12.1,2.6-19.1c1.8-1.8,32.5-29.8,33.1-32.3c0.1-0.3,0.1-1.5-0.6-2.1c-0.7-0.6-1.7-0.4-2.5-0.2c-1.1,0.2-17.9,11.4-50.6,33.5c-4.8,3.3-9.1,4.9-13,4.8c-4.3-0.1-12.5-2.4-18.7-4.4c-7.5-2.4-13.5-3.7-13-7.9C45.7,123.3,48.7,121.1,54.3,118.8z%22/%3E%3C/svg%3E");
}

.mcl-manager-max {
	background-image: url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20xml:space=%22preserve%22%20viewBox=%220%200%201000%201000%22%3E%3Cdefs%3E%3ClinearGradient%20id=%22b%22%3E%3Cstop%20offset=%220%22%20stop-color=%22%2300f%22/%3E%3Cstop%20offset=%221%22%20stop-opacity=%220%22/%3E%3Cstop%20offset=%221%22%20stop-opacity=%220%22/%3E%3C/linearGradient%3E%3ClinearGradient%20id=%22a%22%3E%3Cstop%20offset=%220%22%20stop-color=%22%234cf%22/%3E%3Cstop%20offset=%22.662%22%20stop-color=%22%2353e%22/%3E%3Cstop%20offset=%221%22%20stop-color=%22%2393d%22/%3E%3C/linearGradient%3E%3ClinearGradient%20id=%22c%22%20x1=%22117.847%22%20x2=%221000%22%20y1=%22760.536%22%20y2=%22500%22%20gradientUnits=%22userSpaceOnUse%22%20href=%22%23a%22/%3E%3CradialGradient%20id=%22d%22%20cx=%22-87.392%22%20cy=%221166.116%22%20r=%22500%22%20fx=%22-87.392%22%20fy=%221166.116%22%20gradientTransform=%22rotate(51.356%201551.478%20559.3)scale(2.42703433%201)%22%20gradientUnits=%22userSpaceOnUse%22%20href=%22%23b%22/%3E%3C/defs%3E%3Crect%20width=%221000%22%20height=%221000%22%20fill=%22url(%23c)%22%20ry=%22249.681%22/%3E%3Crect%20width=%221000%22%20height=%221000%22%20fill=%22url(%23d)%22%20ry=%22249.681%22/%3E%3Cpath%20fill=%22%23fff%22%20fill-rule=%22evenodd%22%20d=%22M508.211%20878.328c-75.007%200-109.864-10.95-170.453-54.75-38.325%2049.275-159.686%2087.783-164.979%2021.9%200-49.456-10.95-91.248-23.36-136.873-14.782-56.21-31.572-118.807-31.572-209.508%200-216.626%20177.754-379.597%20388.357-379.597%20210.785%200%20375.947%20171.001%20375.947%20381.604.707%20207.346-166.595%20376.118-373.94%20377.224m3.103-571.585c-102.564-5.292-182.499%2065.7-200.201%20177.024-14.6%2092.162%2011.315%20204.398%2033.397%20210.238%2010.585%202.555%2037.23-18.98%2053.837-35.587a189.8%20189.8%200%200%200%2092.71%2033.032c106.273%205.112%20197.08-75.794%20204.215-181.95%204.154-106.382-77.67-196.486-183.958-202.574Z%22%20clip-rule=%22evenodd%22/%3E%3C/svg%3E");
}

.mcl-manager-tg:hover,
.mcl-manager-max:hover {
	transform: scale(1.08);
}

/*
 * Зазоры в ряду менеджеров — одинаковые со всех сторон.
 *
 * По умолчанию их и так по 30px: столько же у Flatsome боковой отступ
 * секции и шаг колонок. На широком экране этого мало — фотографии
 * разрастаются до 342px и весят в макете больше самих контактов.
 * Поэтому от 1100px обе величины удваиваем: зазоры становятся по 60px,
 * а фотографии ужимаются до 282px.
 *
 * Порог 1100px не случаен: колонка съедает 300px, и ниже этой ширины
 * 60px оставляют на три фотографии по сотне пикселей.
 *
 * Почему не max-width у картинки. Тогда край считается от отступа секции,
 * а промежуток — от ширины колонки, которая тянется за шириной экрана,
 * и совпасть они могут только на одной конкретной ширине. Здесь обе
 * величины заданы явно, поэтому равенство держится на любой.
 */
@media screen and (min-width: 1100px) {

	/*
	 * `#wrapper` в селекторе — ради веса: боковой отступ секции задан
	 * у Flatsome правилом `.row .section`, и короткая запись ему проигрывает.
	 */
	#wrapper .callback-section {
		padding-left: 60px;
		padding-right: 60px;
	}

	/*
	 * Шаг колонок у Flatsome задан отрицательным полем ряда и отступами
	 * колонок; меняем обе половины сразу, иначе ряд съедет вбок.
	 */
	.callback-section .row .row {
		margin-left: -30px;
		margin-right: -30px;
	}

	.callback-section .row .row > .col {
		padding-left: 30px;
		padding-right: 30px;
	}
}

/*
 * Низ секции. Отступ снизу складывался из трёх: 60px у самой секции
 * и ещё по 30px у двух вложенных колонок Flatsome — сверху выходило 60px,
 * снизу 120px.
 *
 * Колонкам этот отступ нужен, когда они переносятся друг под друга.
 * Внешняя колонка тут одна, ей он не нужен никогда; карточки встают
 * в столбик только ниже 550px, там отступ оставляем.
 */
.callback-section > .section-content > .row > .col {
	padding-bottom: 0;
}

/* Последняя карточка упирается в низ секции при любой раскладке. */
.callback-section .row .row > .col:last-child {
	padding-bottom: 0;
}

@media screen and (min-width: 550px) {
	.callback-section .row .row > .col {
		padding-bottom: 0;
	}
}

/*
 * Заголовок секции менеджеров. Раньше этот h2 стоял над формой в узкой
 * колонке, и хватало отступа темы. Теперь он подписывает ряд карточек,
 * а до них оставалось 13px — заголовок липнул к фотографиям.
 */
.callback-section h2 {
	margin-bottom: 32px;
}

/*
 * Имена менеджеров: «Мария Селиверстова» не влезала в строку и переносилась,
 * из-за чего её карточка была на строку выше соседних.
 *
 * Не хватало 18px: 196px требовалось, 178px было. Съедали трекинг темы
 * (0.81px на знак, около 15px на имя) и боковые отступы блока текста по 10px.
 * Оба тут не нужны: имя набрано капителью, разрядка ей не помогает,
 * а отступы дублируют отступы колонки.
 *
 * Запас после правки около 9px. Если появится имя длиннее, строка снова
 * поедет — тогда либо уменьшать кегль, либо резервировать под имя две строки
 * (min-height в две строки выровняет карточки при любой длине).
 */
.callback-section .person-name {
	letter-spacing: 0;
}

.callback-section .box-text {
	padding-left: 4px;
	padding-right: 4px;
}

/*
 * Карточки идут по три в ряд везде, где помещаются, и уходят в столбик
 * ниже 550px (span__sm="12" в разметке). В вилке 550-849px колонка
 * сужается примерно до 171px, и «Мария Селиверстова» перестаёт влезать
 * в строку — поэтому здесь кегль имени чуть меньше.
 */
@media screen and (min-width: 550px) and (max-width: 849px) {
	.callback-section .person-name {
		font-size: 0.88em;
	}
}

/* -------------------------------------------------------------------------
 * Карточки категорий и товаров.
 *
 * Подпись вынесена под картинку — это настройка темы (Flatsome → Категории
 * товаров → Category Style = normal), а не CSS. До этого стоял стиль shade:
 * название лежало поверх фото светлым текстом по тёмной подложке. С фото
 * на белом фоне такой текст стал бы нечитаемым.
 *
 * Соотношение карточки задаём здесь, а не обрезкой в WooCommerce, по двум
 * причинам: у картинок категорий пропорции разные (от 0.56 до 1.79, единой
 * нет), а смена настройки обрезки потребовала бы перегенерации миниатюр
 * для 713 товаров.
 *
 * Сейчас 1:1. Миниатюры WooCommerce и так квадратные (300x300), поэтому
 * при квадратной коробке ничего не обрезается вовсе.
 *
 * object-fit: cover заполняет коробку целиком. Пробовали contain (вписывать
 * картинку без обрезки) — но нынешние фото квадратные 300x300 и на тёмном
 * фоне, поэтому по бокам оставались белые поля по 31px и это читалось как
 * брак. С cover срезаются только края фактуры, что для лент и кружева
 * незаметно.
 *
 * Когда зальют фото на белом фоне, можно вернуть contain: там поля сольются
 * с фоном и обрезки не будет вовсе.
 * ---------------------------------------------------------------------- */

.product-category .box-image,
.product-small .box-image {
	aspect-ratio: 1 / 1;
	background: #fff;
	/*
	 * Ширина явно. Без неё блок берёт её от картинки, а пока та не загрузилась
	 * (ленивая загрузка, медленная сеть), ширина нулевая — и квадрат вместе
	 * с ней. Строка из одних свежих плиток схлопывалась до высоты подписи
	 * и расправлялась рывком, когда приходили фото.
	 */
	width: 100%;
}

.product-category .box-image img,
.product-small .box-image img {
	height: 100%;
	object-fit: cover;
	width: 100%;
}

/*
 * Рамка охватывает картинку и подпись целиком, поэтому вешаем её на .box —
 * общий контейнер обоих. overflow: hidden нужен, чтобы углы картинки
 * обрезались по скруглению рамки, иначе она вылезает за него квадратом.
 */
.product-category .box {
	background: var(--mcl-navy);
	border: 1px solid var(--mcl-line);
	/* 10px — тот же радиус, что у картинки: он задан в «Дополнительном CSS»
	   темы правилом `.box-image { border-radius: 10px }`. */
	border-radius: 10px;
	overflow: hidden;
	transition: border-color 0.15s;
}

.product-category .box:hover {
	border-color: #c9cde0;
}

/*
 * Свою дугу у картинки снимаем — её обрезает сам .box своим overflow: hidden.
 *
 * В «Дополнительном CSS» заказчика картинке задан радиус 10px, такой же, как
 * у плитки. Но плитка ещё и в рамке 1px, поэтому её внутренний изгиб — 9px,
 * а не 10. Дуга картинки уходила глубже, и в получившийся серп по верхним
 * углам был виден фон плитки.
 *
 * Ставить 9px не стали: это число пришлось бы править каждый раз при смене
 * радиуса или толщины рамки. Родитель считает его сам.
 */
.product-category .box-image {
	border-radius: 0;
}

/* Подпись под картинкой: без тени от прежнего наложения. */
.product-category .box-text {
	padding: 12px 12px 14px;
	text-shadow: none;
}

.product-category .box-text,
.product-category .box-text .header-title {
	color: #fff;
}

/* -------------------------------------------------------------------------
 * Шахматка: цвет плитки чередуется по строке, и каждая следующая строка
 * начинается с другого цвета. Везде, где стоят плитки разделов, — на
 * главной, на витрине /shop/ и в архивах категорий.
 *
 * Счёт идёт внутри своего ряда: на главной каждый раздел выводит свой
 * [product_categories], в каталоге ряд один. Поэтому первая плитка любого
 * ряда всегда синяя.
 *
 * Шаг чередования зависит от числа колонок, а его Flatsome пишет прямо на
 * ряду: large-columns-N / medium-columns-N / small-columns-N. Цепляемся за
 * эти классы, а не за страницу, — на главной колонок 4, в каталоге 3, и
 * одни и те же правила работают там и там. Брейкпоинты Flatsome: до 550px
 * действует small, 550-849 — medium, от 850 — large.
 *
 * При нечётном числе колонок (3) обычное «через одну» уже даёт шахматку:
 * строка кончается на том же цвете, с которого началась, и следующая
 * стартует с другого. При чётном сдвиг нужно задавать руками — период
 * получается вдвое длиннее числа колонок.
 *
 * Здесь разобраны те раскладки, что есть на сайте: 4 и 3 колонки на
 * большом экране, 3 на среднем, 2 на маленьком. Если в Настройщике
 * поменяют число колонок, сюда нужно дописать правило под него — иначе
 * плитки станут сплошь синими, как без этого блока.
 *
 * Плиток товаров это не касается: у них нет цветной подложки, там
 * картинка, название, артикул и цена на белом.
 * ---------------------------------------------------------------------- */

/* 2 колонки: период 4 — синий, красный / красный, синий. */
@media screen and (max-width: 549px) {
	.row.small-columns-2 > .product-category:nth-child(4n + 2) .box,
	.row.small-columns-2 > .product-category:nth-child(4n + 3) .box {
		background: var(--mcl-red);
	}

	.row.small-columns-2 > .product-category:nth-child(4n + 1) .box,
	.row.small-columns-2 > .product-category:nth-child(4n) .box {
		background: var(--mcl-navy);
	}
}

/* 3 колонки на среднем экране — и на главной, и в каталоге. */
@media screen and (min-width: 550px) and (max-width: 849px) {
	.row.medium-columns-3 > .product-category:nth-child(even) .box {
		background: var(--mcl-red);
	}

	.row.medium-columns-3 > .product-category:nth-child(odd) .box {
		background: var(--mcl-navy);
	}
}

@media screen and (min-width: 850px) {
	/* 3 колонки — витрина и архивы категорий. */
	.row.large-columns-3 > .product-category:nth-child(even) .box {
		background: var(--mcl-red);
	}

	.row.large-columns-3 > .product-category:nth-child(odd) .box {
		background: var(--mcl-navy);
	}

	/* 4 колонки — главная. Период 8: синий, красный, синий, красный / и наоборот. */
	.row.large-columns-4 > .product-category:nth-child(8n + 2) .box,
	.row.large-columns-4 > .product-category:nth-child(8n + 4) .box,
	.row.large-columns-4 > .product-category:nth-child(8n + 5) .box,
	.row.large-columns-4 > .product-category:nth-child(8n + 7) .box {
		background: var(--mcl-red);
	}

	.row.large-columns-4 > .product-category:nth-child(8n + 1) .box,
	.row.large-columns-4 > .product-category:nth-child(8n + 3) .box,
	.row.large-columns-4 > .product-category:nth-child(8n + 6) .box,
	.row.large-columns-4 > .product-category:nth-child(8n) .box {
		background: var(--mcl-navy);
	}
}

/* -------------------------------------------------------------------------
 * Карточки адресов на странице «Контакты»: зазор между ними.
 *
 * Класс mcl-contact-cards стоит на ряду в UX Builder — цепляться к
 * `.page-id-…` нельзя, номер страницы переживёт не всякий перенос сайта.
 *
 * У ряда стиль «small», это 20px, а меньше в конструкторе только
 * «collapse», то есть вплотную. Поэтому сужаем здесь: у Flatsome зазор
 * набирается из отрицательных полей ряда и симметричных отступов колонок,
 * менять надо оба — иначе ряд вылезет за свою колонку.
 *
 * Нижний отступ не трогаем: на узких экранах карточки встают друг под
 * друга, и он работает вертикальным просветом между ними.
 * ---------------------------------------------------------------------- */

.mcl-contact-cards {
	margin-left: -5px;
	margin-right: -5px;
}

.mcl-contact-cards > .col {
	padding-left: 5px;
	padding-right: 5px;
}

/* -------------------------------------------------------------------------
 * Одинаковая высота плиток категорий.
 *
 * Названия у категорий разной длины: «Ленты» встаёт в одну строку,
 * «Окантовочная резинка» — в две, и плитка становилась на 19px выше
 * соседних. Нижние края в ряду расходились.
 *
 * Не задаём подписи min-height в две строки: название в три строки
 * сломало бы это снова. Вместо этого тянем плитку на всю высоту колонки —
 * колонки и так растягиваются по самой высокой в ряду, потому что ряд
 * у Flatsome флексовый. Подпись занимает остаток и центрируется, так что
 * у коротких названий просто больше воздуха сверху и снизу.
 * ---------------------------------------------------------------------- */

.product-category .col-inner,
.product-category .col-inner > a {
	display: block;
	height: 100%;
}

.product-category .box {
	display: flex;
	flex-direction: column;
	height: 100%;
}

.product-category .box-text {
	align-items: center;
	display: flex;
	flex: 1 1 auto;
	justify-content: center;
}

/*
 * Запас в две строки. Растягивание выше равняет плитки только между собой
 * внутри одной строки сетки: плитка, оставшаяся на строке одна, равняться
 * не с кем и выходила ниже соседних сверху.
 *
 * 2.6em — это ровно две строки при line-height 1.3, заданном темой. Считаем
 * от кегля, а не пикселями: подпись участвует в «резиновой» типографике
 * Flatsome и меняет размер на других брейкпоинтах.
 */
.product-category .header-title {
	/*
	 * Флекс нужен, чтобы однострочное название стояло по центру запаса,
	 * а не липло к его верху: min-height задаёт высоту блока, но текст
	 * внутри него остаётся на первой строке.
	 */
	align-items: center;
	display: flex;
	justify-content: center;
	min-height: 2.6em;
}

/* -------------------------------------------------------------------------
 * Логотипы в подвале: «Мосцветлента», ФИ-текс, МОСЛЕЙБЛ — в один ряд.
 *
 * Разметка — в UX-блоке «Footer - About us» (Flatsome → UX Blocks),
 * обёртка .footer__logos. Все три картинки в одном флекс-ряду и выровнены
 * по центру по вертикали: высота у логотипов разная (37, 87 и 243px
 * у исходников), и по верхнему краю они стояли бы лесенкой.
 *
 * space-between: крайние логотипы по краям подвала, средний посередине.
 * На узких экранах ряд переносится и собирается по центру.
 * ---------------------------------------------------------------------- */

.footer__logos {
	align-items: center;
	display: flex;
	flex-wrap: wrap;
	gap: 24px 40px;
	justify-content: space-between;
}

.footer__logos img {
	display: block;
	height: auto;
	max-width: 100%;
}

.footer__logo-main {
	width: 170px;
}

.footer__logos a img {
	width: 200px;
}

.footer__tagline {
	margin: 18px 0 0;
}

@media (max-width: 549px) {
	.footer__logos {
		justify-content: center;
	}

	.footer__tagline {
		text-align: center;
	}
}

/* -------------------------------------------------------------------------
 * Страница товара: артикул и цена
 * ---------------------------------------------------------------------- */

/*
 * Артикул и цена шли почти вровень с названием (25 и 24 px против 27) и
 * спорили с ним за внимание. Делаем строку мельче, подпись «Артикул:» —
 * жирной, чтобы сам номер читался отдельно от неё.
 *
 * Размер артикула раньше задавался в «Дополнительных стилях» темы
 * правилом `.product_meta > span:first-child`; оно оттуда убрано, иначе
 * перебивало бы эти строки.
 */
.product-summary .mcl-product-sku {
	font-size: 17px;
	line-height: 1.4;
	margin-bottom: 0.6em;
}

.product-summary .mcl-product-sku__label {
	font-weight: 800;
}

/* Параметры под артикулом — тем же кеглем, подписи так же жирные. */
.product-summary .mcl-product-specs {
	list-style: none;
	margin: 0 0 0.9em;
	padding: 0;
	font-size: 17px;
	line-height: 1.4;
}

.product-summary .mcl-product-specs__row {
	margin: 0;
	padding: 0;
}

.product-summary .mcl-product-specs__label {
	font-weight: 800;
}

/*
 * У цены два класса: Flatsome задаёт размер через `.product-info .price`,
 * и одного `.product-summary .price` не хватает — вес селекторов равный,
 * а flatsome-shop.css подключается позже. Добавляем класс самой цены.
 */
.product-summary .price.product-page-price {
	font-size: 19px;
	margin: 0.35em 0 0.7em;
}

.product-summary .mcl-product-price__label {
	font-weight: 800;
}

/*
 * Значок рубля в строку с числом. Flatsome в карточке товара поднимает
 * его наверх и уменьшает (`vertical-align: top; font-size: 0.75em`) —
 * там значок стоял перед суммой и работал как приставка. Теперь он
 * после числа, и поднятый выглядит как сноска.
 *
 * Селектор длиннее родительского намеренно: flatsome-shop.css
 * подключается позже нашего файла, одинакового веса не хватит.
 */
.product-summary .price .woocommerce-Price-currencySymbol {
	font-size: inherit;
	vertical-align: baseline;
}
