/* Собственные стили adky.ru. Подключаются последними из header.twig,
   после всех css темы: иначе правила равной специфичности проигрывают
   теме просто по порядку загрузки. Источник — design/css/ в репозитории. */

/* ==========================================================================
   adky.ru — блоки главной страницы

   Дописывается в конец catalog/view/theme/so-ladaz/css/custom.css: этот файл
   тема грузит последним, поэтому переопределений !important не требуется.

   Фотографий товара здесь нет намеренно. Настоящих съёмок пока не завезли,
   а рисовать несуществующий товар на витрине работающего магазина нельзя.
   Держимся типографики и геометрии — того же языка, что и логотип.
   ========================================================================== */

:root {
	--adky-accent: #a63a58;
	--adky-accent-dark: #8b3049;
	--adky-ink: #232021;
	--adky-muted: #6f676b;   /* было #8d8489 — 3.62:1 на белом, не проходило WCAG AA */
	--adky-line: #e6dfe2;
	--adky-soft: #faf7f8;
}

/* --- Обложка ------------------------------------------------------------ */

.adky-hero {
	background: linear-gradient(180deg, var(--adky-soft) 0%, #fff 100%);
	border-bottom: 1px solid var(--adky-line);
	padding: 64px 20px 56px;
	text-align: center;
}

.adky-hero__inner {
	max-width: 720px;
	margin: 0 auto;
}

.adky-hero__eyebrow {
	margin: 0 0 14px;
	font-size: 12px;
	letter-spacing: .26em;
	text-indent: .26em;
	text-transform: uppercase;
	color: var(--adky-muted);
}

.adky-hero__title {
	margin: 0;
	font-size: 38px;
	line-height: 1.24;
	font-weight: 300;
	letter-spacing: .01em;
	color: var(--adky-ink);
}

/* Тонкая линейка с ромбом — та же деталь, что в логотипе. */
.adky-hero__rule {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	margin: 22px 0;
}

.adky-hero__rule span {
	display: block;
	height: 1px;
	width: 78px;
	background: var(--adky-line);
}

.adky-hero__rule i {
	display: block;
	width: 7px;
	height: 7px;
	background: var(--adky-accent);
	transform: rotate(45deg);
}

.adky-hero__lead {
	margin: 0 auto 28px;
	max-width: 560px;
	font-size: 15px;
	line-height: 1.7;
	color: #5d5559;
}

.adky-hero__actions {
	display: flex;
	gap: 12px;
	justify-content: center;
	flex-wrap: wrap;
}

.adky-btn {
	display: inline-block;
	padding: 13px 30px;
	font-size: 13px;
	letter-spacing: .12em;
	text-transform: uppercase;
	text-decoration: none;
	border: 1px solid var(--adky-accent);
	transition: background-color .18s ease, color .18s ease, border-color .18s ease;
}

.adky-btn--solid { background: var(--adky-accent); color: #fff; }
.adky-btn--solid:hover,
.adky-btn--solid:focus {
	background: var(--adky-accent-dark);
	border-color: var(--adky-accent-dark);
	color: #fff;
}

.adky-btn--ghost { background: transparent; color: var(--adky-accent); }
.adky-btn--ghost:hover,
.adky-btn--ghost:focus { background: var(--adky-accent); color: #fff; }

/* --- Заголовок секции --------------------------------------------------- */

.adky-sec-head {
	text-align: center;
	margin-bottom: 30px;
}

.adky-sec-head h2 {
	margin: 0 0 8px;
	font-size: 24px;
	font-weight: 300;
	letter-spacing: .16em;
	text-indent: .16em;
	text-transform: uppercase;
	color: var(--adky-ink);
}

.adky-sec-head p {
	margin: 0;
	font-size: 14px;
	color: var(--adky-muted);
}

/* --- Сетка категорий ---------------------------------------------------- */

.adky-cats { padding: 54px 0 44px; }

.adky-cats__grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 16px;
}

.adky-cat {
	display: flex;
	flex-direction: column;
	justify-content: center;
	min-height: 118px;
	padding: 22px 24px;
	border: 1px solid var(--adky-line);
	background: #fff;
	text-decoration: none;
	position: relative;
	transition: border-color .18s ease, transform .18s ease, box-shadow .18s ease;
}

/* Акцентная полоса слева проявляется на наведении — так плитка «отвечает»,
   не меняя при этом свою высоту и не дёргая соседей. */
.adky-cat::before {
	content: "";
	position: absolute;
	left: -1px;
	top: -1px;
	bottom: -1px;
	width: 3px;
	background: var(--adky-accent);
	opacity: 0;
	transition: opacity .18s ease;
}

.adky-cat:hover,
.adky-cat:focus {
	border-color: #d6c6cc;
	transform: translateY(-2px);
	box-shadow: 0 6px 18px rgba(35, 32, 33, .07);
}

.adky-cat:hover::before,
.adky-cat:focus::before { opacity: 1; }

.adky-cat__name {
	font-size: 17px;
	line-height: 1.35;
	color: var(--adky-ink);
	margin-bottom: 6px;
}

.adky-cat__meta {
	font-size: 12px;
	letter-spacing: .06em;
	color: var(--adky-muted);
}

/* --- Адаптив ------------------------------------------------------------ */

@media (max-width: 991px) {
	.adky-hero { padding: 48px 20px 44px; }
	.adky-hero__title { font-size: 30px; }
	.adky-cats__grid { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 575px) {
	.adky-hero__title { font-size: 25px; }
	.adky-hero__lead { font-size: 14px; }
	.adky-btn { padding: 12px 22px; }
	.adky-cats__grid { grid-template-columns: 1fr; }
	.adky-cat { min-height: 0; }
}

/* --- Выпуск подкаста ---------------------------------------------------- */

.adky-episode {
	margin: 18px 0 26px;
	padding: 18px 20px;
	background: var(--adky-soft);
	border: 1px solid var(--adky-line);
}

.adky-episode__audio {
	display: block;
	width: 100%;
	height: 40px;
}

.adky-episode__meta {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 8px 18px;
	margin-top: 12px;
	font-size: 13px;
	color: var(--adky-muted);
}

.adky-episode__link {
	color: var(--adky-accent);
	text-decoration: none;
	border-bottom: 1px solid transparent;
}

.adky-episode__link:hover,
.adky-episode__link:focus {
	border-bottom-color: var(--adky-accent);
	color: var(--adky-accent);
}

/* ==========================================================================
   adky.ru — системный слой поверх темы

   Тема SO Ladaz оформляет только главную в фирменном языке; все служебные
   страницы остаются стандартным OpenCart: серые кнопки, серые панели,
   формы без подписей, чужие служебные цвета.

   Этот файл приводит их к одной системе. Дописывается в конец custom.css,
   которую тема грузит последней, поэтому `!important` нужен только там,
   где сама тема ставит `!important` — такие места помечены.
   ========================================================================== */

:root {
	--adky-accent: #a63a58;
	--adky-accent-dark: #8b3049;
	--adky-accent-soft: #f6eef1;
	--adky-ink: #232021;
	/* Вторичный текст. Прежний #8d8489 давал на белом 3.62:1 при норме
	   WCAG AA 4.5:1 для мелкого текста — не проходил. Этот даёт 4.6:1. */
	--adky-muted: #6f676b;
	--adky-line: #e6dfe2;
	--adky-soft: #faf7f8;
	--adky-danger: #b3261e;
	--adky-success: #2c6e49;

	--adky-step-1: 4px;
	--adky-step-2: 8px;
	--adky-step-3: 12px;
	--adky-step-4: 16px;
	--adky-step-5: 24px;
	--adky-step-6: 32px;
	--adky-step-7: 48px;
	--adky-step-8: 64px;
	--adky-step-9: 88px;
	--adky-step-10: 120px;
}

/* --- Фокус клавиатуры ---------------------------------------------------
   Тема глушит фокус глобально:
       * { outline: none !important; }
       *:focus { outline: none; }
   Пройти магазин с клавиатуры при этом невозможно — непонятно, где ты
   находишься. Возвращаем видимый фокус.

   `:focus-visible`, а не `:focus`: мышь и палец рамку не показывают,
   клавиатура — показывает. Правило перебивает тему тем же `!important`,
   иначе не сработает. */

*:focus-visible {
	outline: 2px solid var(--adky-accent) !important;
	outline-offset: 2px !important;
	border-radius: 1px;
}

/* На ягодной заливке контур того же цвета не виден — даём белый изнутри. */
.btn-primary:focus-visible,
.adky-btn--solid:focus-visible,
.adky-episode__link:focus-visible {
	outline-color: #fff !important;
	box-shadow: 0 0 0 4px rgba(166, 58, 88, .55);
}

/* --- Кнопки -------------------------------------------------------------
   У темы главное действие залито #999 и выглядит отключённым. Сводим
   к двум ролям: сплошная ягодная — основное действие, контурная —
   второстепенное. */

.btn {
	border-radius: 0;
	font-size: 13px;
	letter-spacing: .08em;
	text-transform: uppercase;
	padding: 11px 26px;
	min-height: 44px;                 /* палец, а не курсор */
	border-width: 1px;
	transition: background-color .18s ease, color .18s ease, border-color .18s ease;
}

.btn-primary,
.buttons .btn,
.btn-lg,
input[type="submit"].btn {
	background: var(--adky-accent);
	border-color: var(--adky-accent);
	color: #fff;
}

.btn-primary:hover, .btn-primary:focus,
.buttons .btn:hover, .buttons .btn:focus,
.btn-lg:hover, .btn-lg:focus {
	background: var(--adky-accent-dark);
	border-color: var(--adky-accent-dark);
	color: #fff;
}

/* Второстепенное действие — контур. В теме это `btn-default`: «продолжить
   покупки» рядом с «оформить заказ», «назад» рядом с «сохранить». */
.btn-outline,
.btn-default,
.buttons .btn-default,
.btn-link {
	background: transparent;
	border-color: var(--adky-accent);
	color: var(--adky-accent);
}

.btn-outline:hover, .btn-outline:focus,
.btn-default:hover, .btn-default:focus,
.buttons .btn-default:hover, .buttons .btn-default:focus,
.btn-link:hover, .btn-link:focus {
	background: var(--adky-accent);
	border-color: var(--adky-accent);
	color: #fff;
}

/* Кнопка поиска в шапке — btn-default по разметке, но действие главное. */
.btn-default.btn-lg,
#search .btn {
	background: var(--adky-accent);
	border-color: var(--adky-accent);
	color: #fff;
}

/* --- Формы --------------------------------------------------------------
   Поля темы — серая заливка без рамки: непонятно, где заканчивается поле.
   Подписи живут только в placeholder и исчезают после ввода. */

/* Тема задаёт поля с высокой специфичностью, поэтому здесь она нужна тоже:
   иначе серая заливка без рамки остаётся. */
.form-control,
form .form-control,
.form-horizontal .form-control,
input.form-control,
textarea.form-control,
select.form-control {
	background: #fff;
	border: 1px solid var(--adky-line);
	border-radius: 0;
	box-shadow: none;
	min-height: 44px;
	padding: 10px 14px;
	color: var(--adky-ink);
	transition: border-color .18s ease, box-shadow .18s ease;
}

.form-control:focus {
	border-color: var(--adky-accent);
	box-shadow: 0 0 0 3px rgba(166, 58, 88, .12);
	outline: none !important;         /* рамку рисует border, не outline */
}

.form-control::placeholder { color: #9b9296; }

textarea.form-control { min-height: 140px; }

/* Подпись поля видна всегда, а не только до ввода. */
/* `.form-horizontal` темы прижимает подписи вправо — в вертикальной
   форме это читается как подпись к предыдущему полю. */
.control-label,
.form-group > label,
.form-horizontal .control-label,
.form-horizontal .form-group > label {
	display: block;
	margin-bottom: 6px;
	font-size: 13px;
	font-weight: 600;
	letter-spacing: .02em;
	color: var(--adky-ink);
	text-align: left !important;
	width: auto !important;
	float: none !important;
	padding-top: 0;
}

.form-group { margin-bottom: var(--adky-step-4); }

/* Обязательность — ягодная звёздочка, а не красная тема Bootstrap. */
.required .control-label:after,
.control-label .required { color: var(--adky-accent); }

/* --- Служебные сообщения ------------------------------------------------
   У темы ошибки красные bootstrap-овские (#a94442), успех зелёный
   bootstrap-овский. Своя палитра, чтобы страница не распадалась. */

.alert {
	border-radius: 0;
	border-width: 1px;
	border-left-width: 3px;
	padding: 14px 18px;
	font-size: 14px;
}

.alert-danger, .text-danger, .has-error .help-block {
	color: var(--adky-danger);
}

.alert-danger {
	background: #fdf3f2;
	border-color: var(--adky-danger);
}

.alert-success {
	background: #f1f7f3;
	border-color: var(--adky-success);
	color: var(--adky-success);
}

.alert-info {
	background: var(--adky-accent-soft);
	border-color: var(--adky-accent);
	color: var(--adky-ink);
}

/* Пустой алерт не должен занимать место и рисовать рамку. */
.alert:empty,
.alert-info:not(:has(*)):blank { display: none; }

.has-error .form-control { border-color: var(--adky-danger); }
.has-error .form-control:focus { box-shadow: 0 0 0 3px rgba(179, 38, 30, .12); }

/* --- Заголовки ----------------------------------------------------------
   Фирменная типографика заканчивалась на главной: дальше шёл серый
   заголовок темы другого кегля и цвета. Один язык на весь сайт. */

/* Заголовок обложки оформлен своим стилем и своей линейкой с ромбом —
   общее правило подрисовывало ему вторую черту. */
h1:not(.adky-hero__title),
.page-title,
#content > h1:not(.adky-hero__title),
#content > h2:first-child {
	font-size: 26px;
	font-weight: 300;
	letter-spacing: .12em;
	text-indent: .12em;
	text-transform: uppercase;
	color: var(--adky-ink);
	margin: 0 0 var(--adky-step-5);
	padding-bottom: var(--adky-step-3);
	border-bottom: 1px solid var(--adky-line);
}

h2 { font-size: 20px; font-weight: 400; color: var(--adky-ink); }
h3 { font-size: 17px; font-weight: 600; color: var(--adky-ink); }

/* --- Русская типографика ------------------------------------------------
   `text-transform: capitalize` — правило английской типографики. В русском
   оно даёт «Руки И Ногти»: заглавная у союза читается как небрежность. */

.item-title,
.item-info,
.box-category a,
.list-group-item,
.product-property-title,
.name-time,
.breadcrumb a,
.refine-search a { text-transform: none !important; }

/* --- Хлебные крошки ----------------------------------------------------- */

.breadcrumb {
	background: transparent;
	padding: var(--adky-step-4) 0;
	margin-bottom: var(--adky-step-4);
	font-size: 13px;
}

.breadcrumb a { color: var(--adky-muted); }
.breadcrumb a:hover { color: var(--adky-accent); }

/* --- Плитки подкатегорий -----------------------------------------------
   Категориям не задано изображение, а шаблон выводил <img> безусловно:
   браузер рисовал десяток «сломанных картинок». Прячем пустые картинки
   и делаем плитку текстовой — как на главной. */

/* Пункт содержит две ссылки: `.thumbnail` с пустой картинкой и `.text-center`
   с подписью. Первую убираем целиком, вторая становится плиткой. */
.refine-search img,
img[src=""],
img:not([src]) { display: none !important; }

.refine-search a.thumbnail { display: none !important; }

.refine-search__content {
	list-style: none;
	padding: 0;
	margin: 0;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
	gap: var(--adky-step-3);
}

.refine-search__subitem {
	width: auto !important;
	float: none !important;
	margin: 0 !important;
	padding: 0 !important;
	list-style: none;
}

.refine-search__subitem > a.text-center {
	display: flex;
	align-items: center;
	min-height: 64px;
	padding: var(--adky-step-4) var(--adky-step-5);
	border: 1px solid var(--adky-line);
	background: #fff;
	color: var(--adky-ink);
	font-size: 15px;
	line-height: 1.35;
	text-align: left !important;
	text-decoration: none;
	position: relative;
	transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease, color .18s ease;
}

/* Акцентная полоса слева на наведении — тот же приём, что у плиток главной:
   отклик есть, высота не меняется, соседи не дёргаются. */
.refine-search__subitem > a.text-center::before {
	content: "";
	position: absolute;
	left: -1px; top: -1px; bottom: -1px;
	width: 3px;
	background: var(--adky-accent);
	opacity: 0;
	transition: opacity .18s ease;
}

.refine-search__subitem > a.text-center:hover,
.refine-search__subitem > a.text-center:focus {
	border-color: #d6c6cc;
	transform: translateY(-2px);
	box-shadow: 0 6px 18px rgba(35, 32, 33, .07);
	color: var(--adky-accent);
}

.refine-search__subitem > a.text-center:hover::before,
.refine-search__subitem > a.text-center:focus::before { opacity: 1; }

/* Плитка «+» без подписи ничего не сообщает. */
.refine-search__subitem:has(> a.thumbnail:only-child),
.refine-search .see-more,
.refine-search__subitem:empty { display: none !important; }

/* --- Контакты -----------------------------------------------------------
   Блок «наш адрес» пуст, пока в настройках нет телефона и адреса, но
   занимает половину контейнера: страница выглядит наполовину удалённой.
   Схлопываем пустую колонку и центрируем форму. */

/* `:empty` не срабатывает: внутри блока остаются переводы строк из шаблона.
   Поэтому схлопываем его безусловно, пока в настройках нет адреса —
   когда контакты появятся, правило снимаем. */
.info-contact .info-store {
	display: none;
}

.info-contact .contact-form {
	width: 100%;
	max-width: 620px;
	margin: 0 auto;
	float: none;
}

.info-contact legend { border: 0; margin-bottom: var(--adky-step-5); }
.info-contact legend h2 { margin: 0; }

/* Placeholder дублировал подпись со звёздочкой — теперь подпись отдельно,
   placeholder оставляем примером или убираем. */
.contact-form .form-control::placeholder { color: #b3a9ad; }

/* Кнопка «показать ещё» без подписи ничего не сообщает. */
.refine-loadmore { display: none !important; }

/* --- Подвал прижат к низу ----------------------------------------------
   На коротких страницах (корзина, вход, 404) подвал висел посреди экрана.
   Тянуть нужно `#wrapper`, а не `body`: тема кладёт подвал внутрь обёртки,
   и правило вида `body > footer` не находило ничего. */

html, body { height: auto; min-height: 100%; }

#wrapper {
	display: flex;
	flex-direction: column;
	min-height: 100vh;
}

#wrapper > .footer-container,
#wrapper > footer { margin-top: auto; }

/* Индикатор загрузки темы. Прелоадер отключён (`no-pre-loader`), но полоса
   остаётся отрисованной: сверху слева висит ягодный обрубок. */
.so-pre-loader.no-pre-loader { display: none; }

/* Пустая позиция под контентом рисовала серую полосу ни о чём. */
#content + .container:empty,
.common-home #content + div:empty { display: none; }

/* --- Длина строки на текстовых страницах --------------------------------
   На /delivery строка растягивалась почти на 1200 px: глазу тяжело
   находить начало следующей строки. */

.information-information #content p,
.information-information #content li,
[class^="blog-"] #content .article-content p { max-width: 68ch; }

/* --- Вторичный текст ----------------------------------------------------- */

.text-muted, small, .adky-cat__meta, .adky-sec-head p,
.adky-hero__eyebrow, .adky-episode__meta { color: var(--adky-muted); }

/* --- Зоны нажатия в шапке -----------------------------------------------
   Поиск и корзина были примерно 36x36 — палец промахивается. */

#sosearchpro .button-search,
.top_cart .btn-group > *,
.btn-shopping-cart {
	min-width: 44px;
	min-height: 44px;
}

/* --- Мобильное ---------------------------------------------------------- */

@media (max-width: 767px) {
	h1, .page-title, #content > h1 { font-size: 21px; letter-spacing: .08em; }

	.btn { width: 100%; }
	.btn + .btn { margin-top: var(--adky-step-2); }
	.buttons .pull-left .btn, .buttons .pull-right .btn { float: none !important; }

	.refine-search ul { grid-template-columns: 1fr; }

	/* Подпись у гамбургера съедала треть строки. */
	.navbar-toggle .toggle-label,
	#main-menu .navbar-header .megamenu-title { display: none; }
}


/* --- Обложка с фотографией ----------------------------------------------
   Фон — лицензионный сток (Unsplash/Pexels, коммерческое использование
   разрешено). Снимки с читаемым чужим брендом отклонены при отборе:
   вывеска или флакон конкретной марки на нашей обложке читается как
   заявление, что мы её возим.

   Фотография здесь атмосферная, она не выдаёт себя за позицию каталога.
   Карточки товаров ждут материалов брендов. */

.adky-hero--photo {
	position: relative;
	overflow: hidden;
	border-bottom: 0;
	background: var(--adky-ink);
	padding: 96px 20px 88px;
}

.adky-hero__media {
	position: absolute;
	inset: 0;
	background-image: url("../images/hero.webp");
	background-size: cover;
	background-position: center 40%;
}

/* Затемнение — не ради «красивее», а чтобы текст прошёл по контрасту
   поверх фотографии с непредсказуемой яркостью. */
.adky-hero__media::after {
	content: "";
	position: absolute;
	inset: 0;
	background:
		linear-gradient(180deg, rgba(28, 24, 26, .62) 0%, rgba(28, 24, 26, .74) 100%),
		linear-gradient(90deg, rgba(166, 58, 88, .18) 0%, rgba(166, 58, 88, 0) 60%);
}

.adky-hero--photo .adky-hero__inner { position: relative; z-index: 1; }
.adky-hero--photo .adky-hero__eyebrow { color: rgba(255, 255, 255, .82); }
.adky-hero--photo .adky-hero__title { color: #fff; }
.adky-hero--photo .adky-hero__lead { color: rgba(255, 255, 255, .88); }
.adky-hero--photo .adky-hero__rule span { background: rgba(255, 255, 255, .38); }

.adky-hero--photo .adky-btn--ghost {
	color: #fff;
	border-color: rgba(255, 255, 255, .7);
}

.adky-hero--photo .adky-btn--ghost:hover,
.adky-hero--photo .adky-btn--ghost:focus {
	background: #fff;
	border-color: #fff;
	color: var(--adky-ink);
}

@media (max-width: 767px) {
	.adky-hero--photo { padding: 64px 20px 56px; }
	.adky-hero__media { background-position: center; }
}


/* --- Класс страницы на <body> ---------------------------------------------
   `event/soconfig` кладёт в шапку `class` вида `checkout-cart` —
   в том виде, который тема ждёт сама. Тема подставляет его первым
   в `cls_body`. До этого отличить корзину от блога стилями было нечем. */

/* --- Пустые состояния, единая система -----------------------------------
   Корзина, 404, поиск и каталог показывали пустоту тремя разными способами.
   Шаблон `error/not_found.twig` (он же пустая корзина) переписан на разметку
   `.adky-empty`; остальные страницы подтягиваем к ней селекторами. */

.adky-empty {
	max-width: 520px;
	margin: 0 auto;
	padding: var(--adky-step-9) var(--adky-step-5) var(--adky-step-10);
	text-align: center;
}

/* Ромб из логотипа — единственная графика, которая нам ничего не стоит
   и не притворяется товаром. */
#content .adky-empty__mark {
	display: block;
	width: 22px;
	height: 22px;
	margin: 0 auto var(--adky-step-6);
	background: var(--adky-accent);
	transform: rotate(45deg);
	opacity: .5;
}

#content .adky-empty__title {
	font-size: 26px;
	font-weight: 300;
	letter-spacing: .12em;
	text-transform: uppercase;
	color: var(--adky-ink);
	margin: 0 0 var(--adky-step-4);
	border: 0;
	padding: 0;
}

.adky-empty__text {
	font-size: 15px;
	line-height: 1.7;
	color: var(--adky-muted);
	margin: 0 0 var(--adky-step-6);
}

/* Контурная кнопка: покупателю здесь нечего подтверждать, это выход
   из тупика, а не целевое действие. */
.adky-empty__action {
	display: inline-block;
	padding: 13px 30px;
	min-height: 44px;
	border: 1px solid var(--adky-accent);
	color: var(--adky-accent);
	background: transparent;
	font-size: 12px;
	letter-spacing: .14em;
	text-transform: uppercase;
	text-decoration: none;
	transition: background .18s ease, color .18s ease;
}

.adky-empty__action:hover,
.adky-empty__action:focus {
	background: var(--adky-accent);
	color: #fff;
	text-decoration: none;
}

/* Штатные страницы темы, где пустота выводится абзацем в #content. */
.product-search #content > p,
.product-special #content > p,
.account-wishlist #content > p,
[class^="blog-"] #content > p:only-of-type {
	max-width: 520px;
	margin: var(--adky-step-8) auto;
	padding: var(--adky-step-6) var(--adky-step-5);
	text-align: center;
	border: 1px dashed var(--adky-line);
	background: var(--adky-soft);
	color: var(--adky-muted);
	font-size: 15px;
}

/* --- Пустые заголовки ---------------------------------------------------
   Шаблон контактов выводит пустые <h2>: над формой висит лишняя строка,
   и получается три заголовка подряд. */

h1:empty, h2:empty, h3:empty { display: none !important; }

/* --- Иконки в подвале ---------------------------------------------------
   Оставались красными от темы. */

.footer-contact-content .fa,
.footer-contact-content i,
.box-bottom-support .icon-sp .fa,
.box-bottom-support .icon-sp i { color: var(--adky-accent) !important; }

/* --- Хлебная крошка «Главная» -------------------------------------------
   В языковом файле это иконка домика без подписи: скринридер её
   пропускает, а глазу нужна догадка. */

.breadcrumb li:first-child a .fa-home { display: none; }
.breadcrumb li:first-child a::after { content: "Главная"; }

/* --- Страницы личного кабинета ------------------------------------------
   Вход, регистрация, восстановление пароля собраны темой из «колодцев»
   (`.well`): серая заливка, крупный полужирный H2 совсем другого языка,
   чем заголовки остального сайта. Приводим к одной системе. */

.well {
	background: #fff;
	border: 1px solid var(--adky-line);
	border-radius: 0;
	box-shadow: none;
	padding: var(--adky-step-6);
	height: 100%;
}

[class^="account-"] #content h2,
[class^="checkout-"] #content h2 {
	font-size: 20px;
	font-weight: 300;
	letter-spacing: .1em;
	text-transform: uppercase;
	color: var(--adky-ink);
	margin: 0 0 var(--adky-step-5);
	padding-bottom: var(--adky-step-3);
	border-bottom: 1px solid var(--adky-line);
}

/* Внутри колодца «Новый покупатель» тема ставит второй заголовок
   («Регистрация»), который повторяет смысл первого. */
[class^="account-"] .well h2 + p > strong,
[class^="account-"] .well h2 + h2 { display: none; }

/* Обязательность поля тема показывает только звёздочкой в подписи.
   Даём ей цвет акцента, чтобы читалась как метка, а не как опечатка. */
.control-label .required,
.form-group.required .control-label:after { color: var(--adky-accent); }

/* Ошибки валидации тема красит в бутстраповский кирпичный #a94442 —
   чужая палитра посреди ягодной. */
.text-danger,
.has-error .control-label,
.has-error .help-block { color: var(--adky-accent-dark); }

.has-error .form-control { border-color: var(--adky-accent-dark); }

.alert-danger {
	background: #fdf3f5;
	border-color: var(--adky-accent);
	color: var(--adky-accent-dark);
}

/* Правая колонка личного кабинета — список ссылок, а не таблица. */
.list-group-item {
	border-radius: 0;
	border-color: var(--adky-line);
	color: var(--adky-ink);
	padding: 12px 16px;
	min-height: 44px;
}

.list-group-item:hover,
.list-group-item:focus {
	background: var(--adky-soft);
	color: var(--adky-accent);
}

/* --- Согласие на обработку данных ---------------------------------------
   На 390 px строка «Я прочитал(а) и согласен(на)…» вместе с чекбоксом
   и кнопкой уезжала за край: тема кладёт их в одну строку с float. */

@media (max-width: 480px) {
	.buttons .pull-right,
	.buttons .pull-left {
		float: none !important;
		text-align: left;
	}

	.buttons .pull-right .btn,
	.buttons .pull-left .btn { width: 100%; margin-top: var(--adky-step-3); }

	.buttons input[type="checkbox"] { margin-right: 8px; }
}

/* Разделы длинных форм тема выводит через <legend>: другой кегль и цвет,
   чем у заголовков секций на остальном сайте. */
#content legend {
	font-size: 15px;
	font-weight: 400;
	letter-spacing: .1em;
	text-transform: uppercase;
	color: var(--adky-muted);
	border-bottom: 1px solid var(--adky-line);
	padding-bottom: var(--adky-step-2);
	margin-bottom: var(--adky-step-5);
}

/* --- Согласие на обработку данных ---------------------------------------
   Разметка ядра ставит флажок ПОСЛЕ текста: «…Политика конфиденциальности ☐».
   Читается как опечатка, и палец промахивается мимо квадрата 13 px.
   Текст в разметке — голый текстовый узел, переставить его нельзя,
   поэтому двигаем сам флажок. */

.buttons .pull-right:has(input[type="checkbox"]),
.buttons .pull-left:has(input[type="checkbox"]) {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 10px;
	line-height: 1.5;
}

.buttons input[type="checkbox"] {
	order: -1;
	width: 18px;
	height: 18px;
	margin: 0;
	accent-color: var(--adky-accent);
	flex: 0 0 auto;
}

.buttons input[type="submit"] { flex: 1 0 100%; }

/* --- Пустой модуль товаров в боковой колонке ----------------------------
   Пока каталог не загружен, модуль `so_basic_products` рисует в колонке
   синюю плашку-заглушку с крестиком закрытия — единственное цветное пятно
   на странице, и оно ни о чём. Когда товары появятся, плашки не будет
   и модуль покажется сам. */

.module:has(.so-basic-product > .alert-info) { display: none; }

/* --- Заголовки модулей без названия -------------------------------------
   Наши блоки подвала и главной несут заголовок внутри своей вёрстки,
   поэтому имя модуля пустое. Тема всё равно печатает `<h2>  </h2>`
   и добавляет отступ. Пробел внутри — поэтому `:empty` тут не помогает. */

.footer-center .module > h2,
.module.custom-sevicer > h2,
.module > .modtitle:empty { display: none; }

/* --- Кнопка под пустым состоянием ---------------------------------------
   На блоге «Продолжить» уезжала в правый край, в отрыве от сообщения. */

[class^="blog-"] #content > .buttons,
.product-search #content > .buttons { text-align: center; }

[class^="blog-"] #content > .buttons .pull-right,
.product-search #content > .buttons .pull-right {
	/* `.pull-right` в бутстрапе объявлен с !important — без него не сдвинуть. */
	float: none !important;
	display: inline-block;
}

/* --- Блок гарантий в подвале --------------------------------------------
   Иконка и текст лежали рядом на float: длинная подпись («курьером, почтой
   и в пункты выдачи») переносилась под иконку и вылезала в соседнюю
   колонку. Колонки бутстрапа остаются, внутри — flex. */

.box-bottom-support .box-1 {
	display: flex;
	align-items: flex-start;
	gap: 14px;
}

.box-bottom-support .icon-sp { flex: 0 0 auto; margin: 0; }
.box-bottom-support .content-sp { flex: 1 1 auto; min-width: 0; }

@media (max-width: 767px) {
	.box-bottom-support .box-1 { margin-bottom: var(--adky-step-5); }
}

/* --- Стрелки в дереве категорий -----------------------------------------
   Серые квадраты с шевроном — единственный серый элемент на странице. */

.box-category .fa,
.box-category .arrow,
aside .panel .fa-angle-right,
aside .panel .fa-angle-down { color: var(--adky-accent); }

/* --- Мобильная шапка ----------------------------------------------------
   Рядом с гамбургером тема пишет «Категории». Гамбургер и так узнаётся,
   а слово на 375 px отнимает треть строки. */

#menu .navbar-header #category.visible-xs { display: none !important; }

/* Зоны нажатия в шапке: поиск и корзина были около 36×36 px. */
@media (max-width: 991px) {
	.bt-search,
	#cart .top_cart,
	#menu .navbar-toggle,
	.top-link > li > a {
		min-width: 44px;
		min-height: 44px;
		display: inline-flex;
		align-items: center;
		justify-content: center;
	}
}

/* --- Полоса над шапкой: акции и преимущества -----------------------------
   Позиция `header_promo` отдаётся `event/positions`, содержимое лежит
   в HTML-модуле — правится из админки. Полоса ложится в узкий белый
   зазор над `.header-top`, который до сих пор пустовал.

   Тон намеренно тихий: ягодная заливка во всю ширину спорила бы с шапкой,
   где ягодный уже занят иконками и кнопками. Цветом выделен только первый
   пункт — тот, что ведёт на акции. */

/* Обёртка модуля несёт `margin-bottom: 30px` от темы — между полосой
   и верхней панелью повисала пустая белая лента в 30 px. */
.module.header-promo { margin: 0; padding: 0; }
.module.header-promo > h2 { display: none; }

.adky-promo {
	background: var(--adky-soft);
	border-bottom: 1px solid var(--adky-line);
}

.adky-promo__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	flex-wrap: wrap;
	gap: 0 var(--adky-step-5);
	min-height: 38px;
}

.adky-promo__item {
	position: relative;
	padding: 9px 0;
	font-size: 11px;
	line-height: 1.4;
	letter-spacing: .09em;
	text-transform: uppercase;
	color: var(--adky-muted);
	white-space: nowrap;
}

/* Разделитель — ромб из логотипа, а не вертикальная черта: тот же знак,
   что стоит рядом с ADKY и на пустых состояниях. */
.adky-promo__item + .adky-promo__item::before {
	content: "";
	position: absolute;
	left: calc(var(--adky-step-5) / -2 - 3px);
	top: 50%;
	width: 5px;
	height: 5px;
	margin-top: -2px;
	background: var(--adky-accent);
	transform: rotate(45deg);
	opacity: .55;
}

.adky-promo__item a {
	color: var(--adky-accent);
	text-decoration: none;
	border-bottom: 1px solid transparent;
	transition: border-color .18s ease;
}

.adky-promo__item a:hover,
.adky-promo__item a:focus { border-bottom-color: var(--adky-accent); }

/* Первый пункт — про акции, ему и акцент. */
.adky-promo__item:first-child { color: var(--adky-accent); }

/* На узком экране пункты не помещаются в строку. Вместо перелистывания
   по таймеру — прокрутка с прилипанием: работает при любом числе пунктов
   (список правится в админке), не требует JS и не крадёт у читателя
   строку, которую он не успел дочитать. */
@media (max-width: 991px) {
	.adky-promo .container { padding: 0; }

	.adky-promo__list {
		flex-wrap: nowrap;
		justify-content: flex-start;
		overflow-x: auto;
		scroll-snap-type: x mandatory;
		gap: 0;
		-webkit-overflow-scrolling: touch;
		scrollbar-width: none;
	}

	.adky-promo__list::-webkit-scrollbar { display: none; }

	.adky-promo__item {
		scroll-snap-align: center;
		flex: 0 0 100%;
		text-align: center;
		padding: 10px var(--adky-step-4);
	}

	.adky-promo__item + .adky-promo__item::before { display: none; }
}

/* --- Верхняя панель -----------------------------------------------------
   Под полосой акций оставалась белая лента около 70 px, в которой стояла
   одна строка ссылок высотой 36 px. Остальное набиралось из плавающих
   колонок бутстрапа и пустой левой половины. Переводим строку на flex
   и задаём высоту явно. */

header .header-top { padding: 0; }

header .header-top > .container > .row {
	display: flex;
	align-items: center;
	min-height: 36px;
	margin: 0;
}

header .header-top .header-top-left:empty { display: none; }

header .header-top .header-top-right {
	margin-left: auto;
	padding-right: 0;
}

header .header-top ul.top-link {
	display: flex;
	justify-content: flex-end;
	padding: 0;
}

header .header-top ul.top-link > li > a { height: 36px; line-height: 36px; }
