/* ===== BODHIDOSE — компоненты, добавленные сверх шаблона ==================
   Цвета берутся из переменных палитры, задаваемых в настройках шаблона. */

/* ----- Подзаголовки категорий (ТЗ: «Кофеиновые» и «Кофейные» не должны
   читаться как опечатка) ------------------------------------------------ */
.category-subtitle{
	margin:6px 0 0;
	font-size:.95em;
	color:var(--body-c2);
	display: none;
	}

/* Пункт меню 1-го уровня: иконка и название — первым рядом (обёртка
   .menu__level-1-main), подзаголовок — вторым рядом под ними. */
.menu__level-1-main{display:flex;align-items:center}

.menu__level-1-subtitle{
	display:block;
	margin:2px 0 0;
	font-size:.75em;
	font-weight:400;
	line-height:1.3;
	color:var(--body-c2)}

.category-wall__subtitle{
	display:block;
	margin:4px 0 0;
	font-size:.8em;
	line-height:1.35;
	color:var(--body-c2)}

/* ----- Текстовый логотип (до получения вектора от заказчика, ТЗ 2.3) ----
   Высота блока держим по ТЗ: минимум 60px на десктопе, 40px на мобильном. */
.header-logo{display:flex;align-items:center;min-height:40px}

.header-logo a, .header-logo > span{
	font-family:'Montserrat', sans-serif;
	font-weight:700;
	font-size:1.5em;
	letter-spacing:.16em;
	line-height:1.1;
	color:var(--a-c);
	text-decoration:none}

.header-logo a:hover{color:var(--a-c-hover)}

@media (min-width:768px){
	.header-logo{min-height:60px}
	.header-logo a, .header-logo > span{font-size:1.75em}
}

/* ----- Возрастное подтверждение 18+ (ТЗ 7.4) ---------------------------- */
body.age-gate-open{overflow:hidden}

.age-gate{
	position:fixed;
	z-index:2000;
	inset:0;
	display:flex;
	align-items:center;
	justify-content:center;
	padding:20px;
	background:var(--body-bg, #100d0b)}

.age-gate__dialog{
	width:100%;
	max-width:440px;
	padding:40px 35px;
	text-align:center;
	background:var(--surface-1);
	border:solid 1px var(--line-c);
	border-radius:var(--border-radius-1)}

.age-gate__logo{max-height:56px;margin:0 auto 30px}

.age-gate__wordmark{
	margin:0 0 30px;
	font-family:'Montserrat', sans-serif;
	font-weight:700;
	font-size:1.5em;
	letter-spacing:.18em;
	color:var(--a-c)}

.age-gate__heading{
	margin:0 0 12px;
	font-family:'Montserrat', sans-serif;
	font-weight:700;
	font-size:1.4em;
	color:var(--body-c)}

.age-gate__text{
	margin:0 0 30px;
	font-size:.95em;
	line-height:1.6;
	color:var(--body-c2)}

.age-gate__buttons{display:flex;flex-direction:column;gap:12px}
.age-gate__btn{width:100%}

/* ----- Прогресс до бесплатной доставки (ТЗ 6.3) -------------------------
   Заметность важна: это маркетинговый инструмент, а не служебная подпись. */
.free-qty{
	margin:0 0 20px;
	padding:15px 18px;
	background:var(--surface-2);
	border:solid 1px var(--line-c);
	border-radius:var(--border-radius-1)}

.free-qty__text{
	margin:0 0 10px;
	font-weight:500;
	color:var(--body-c)}

.free-qty__text i{margin:0 8px 0 0;color:var(--a-c)}

.free-qty__bar{
	overflow:hidden;
	height:6px;
	background:var(--line-c);
	border-radius:var(--border-radius-1)}

.free-qty__fill{
	display:block;
	height:100%;
	background:var(--a-c);
	transition:width ease-in-out .3s}

.free-qty.reached{border-color:var(--a-c)}
.free-qty.reached .free-qty__text{color:var(--a-c)}

.free-qty-hint{
	margin:15px 0 0;
	padding:10px 12px;
	font-size:.85em;
	color:var(--body-c2);
	background:var(--overlay-2);
	border-radius:var(--border-radius-1)}

.free-qty-hint i{margin:0 6px 0 0;color:var(--a-c)}
.free-qty-hint.reached{color:var(--a-c)}

/* ----- Сетка товаров: ровно 4 в ряд на десктопе (ТЗ 4.2) -----------------
   Шаблон с 1600px переходит на 5 в ряд (col-xxl-4 = 20%), но ТЗ называет
   десктопом в том числе 1920 и требует там четыре карточки. */
@media (min-width:1600px){
	.product-layout.grid-view.col-xxl-4{width:25%}
}

/* ----- Страница 404 в фирменном стиле (ТЗ 9.3) --------------------------
   В шаблоне высота блока фиксированная — с кнопками содержимое обрезалось. */
.error-not-found{
	height:auto;
	max-height:none;
	min-height:370px;
	padding:40px 0;
	text-align:center}

.error-not-found__404{color:var(--a-c)}

.error-not-found__hint{
	margin:10px 0 0;
	padding:0 25px;
	font-size:.9em;
	color:var(--body-c2)}

.error-not-found__actions{
	display:flex;
	flex-wrap:wrap;
	justify-content:center;
	gap:12px;
	margin:30px 0 0}

/* ----- Блок под кнопкой покупки: доставка и дисклеймер 18+ (ТЗ 4.3) ------ */
.product-note{display:flex;flex-direction:column;gap:6px;line-height:1.5}

.product-note__free{
	font-weight:600;
	color:var(--a-c)}

.product-note__line{color:var(--body-c)}

.product-note__disclaimer{
	margin:4px 0 0;
	padding:8px 10px;
	font-size:.85em;
	color:var(--body-c2);
	background:var(--overlay-2);
	border-radius:var(--border-radius-1)}

/* ----- Значок 18+ в футере (ТЗ 4.5) ------------------------------------- */
.footer__age-badge{
	display:inline-block;
	margin:0 12px 0 0;
	padding:2px 8px;
	font-family:'Montserrat', sans-serif;
	font-weight:700;
	font-size:.85em;
	color:var(--a-c);
	border:solid 1px var(--a-c);
	border-radius:var(--border-radius-1)}

/* ----- Фильтры горизонтальной полосой над сеткой товаров -----------------
   Нужны, чтобы страница категории осталась без боковой колонки и сетка
   была 4 в ряд на десктопе (ТЗ 4.2). */
.filter-default{margin:0 0 25px}
.filter-default .heading{margin:0 0 10px}

@media (min-width:768px){
	.filter-default .uni-wrapper{
		display:flex;
		flex-wrap:wrap;
		align-items:flex-end;
		gap:25px}
	.filter-default__group{flex:0 1 auto;margin:0}
	.filter-default__group-name{margin:0 0 6px;font-weight:500;color:var(--body-c2)}
	.filter-default #filter-group1,
	.filter-default [id^="filter-group"]{display:flex;flex-wrap:wrap;gap:6px 18px}
	.filter-default__item{margin:0}
	.filter-default #button-filter{margin-left:auto}
}

/* ----- Блок «О бренде» на главной (ТЗ 4.1: текст + изображение) --------- */
.about-brand{
	display:flex;
	flex-wrap:wrap;
	align-items:center;
	gap:30px;
	margin:0 0 40px}

.about-brand__media{flex:1 1 320px;min-width:0}

.about-brand__img{
	display:block;
	width:100%;
	height:auto;
	border-radius:var(--border-radius-1)}

.about-brand__text{flex:1 1 320px;min-width:0}
.about-brand__text h2{margin:0 0 15px}
.about-brand__text p{margin:0 0 12px;line-height:1.6}
.about-brand__text small{color:var(--body-c2)}

@media (max-width:767px){
	.about-brand{gap:18px}
}

/* ----- Попап «Заявка на сотрудничество — ОПТ» (B2B) --------------------- */
.partner-form__intro{margin:0 0 20px;color:var(--body-c2)}

.partner-form__grid{
	display:grid;
	grid-template-columns:1fr 1fr;
	gap:15px 20px;
	margin:0 0 10px}

.partner-form__field{margin:0}
.partner-form__field--full{margin:15px 0 0}

.partner-form__label{
	display:block;
	margin:0 0 6px;
	font-weight:500;
	color:var(--body-c)}

.partner-form__req{color:var(--a-c)}

.partner-form__section{
	margin:20px 0 10px;
	font-weight:700;
	color:var(--body-c)}

.partner-form__coop{
	display:grid;
	grid-template-columns:1fr 1fr;
	gap:12px 20px}

.partner-form__check{
	display:flex;
	align-items:center;
	margin:0;
	padding:12px 15px;
	background:var(--surface-2);
	border:solid 1px var(--line-c);
	border-radius:var(--border-radius-1);
	cursor:pointer;
	padding: 7px !important;
	}

.partner-form__check:hover{border-color:var(--a-c)}
.partner-form__check span{color:var(--body-c)}

.partner-form__agree{display:flex;align-items:flex-start;margin:20px 0 0}
.partner-form__agree span{font-size:.9em;color:var(--body-c2)}

.partner-form__btn{width:100%;margin:20px 0 0;height:52px;font-weight:700}

.partner-form__field.has-error .form-control{border-color:var(--btn-danger-bg, #a3412f)}

@media (max-width:600px){
	.partner-form__grid,
	.partner-form__coop{grid-template-columns:1fr}
}

.partner-form__recaptcha-note{margin:15px 0 0;font-size:.8em;line-height:1.4;color:var(--body-c2)}
.partner-form__recaptcha-note a{color:var(--body-c2);text-decoration:underline}
