audio::-webkit-media-controls-timeline,
video::-webkit-media-controls-timeline {
	display: none;
}

audio::-webkit-media-controls,
video::-webkit-media-controls {
	display: none;
}

.swiper-container {
	overflow: hidden;
	position: relative;
}

.swiper-container:not(.swiper-initialized):not(.swiper-container-initialized) .swiper-slide:not(:first-child) {
	display: none;
}

.swiper-container--custom {
	width: 100%;
}

.swiper-container--custom .swiper-button-next::after,
.swiper-container--custom .swiper-button-prev::after {
	display: none;
}

.swiper-container--custom .swiper-button-next {
	width: 65px;
}

.swiper-container--custom .swiper-button-next::before {
	content: url('/image/main-banner-arr-next.svg');
	width: 17px;
	height: 35px;
}

.swiper-container--custom .swiper-button-prev::before {
	content: url('/image/main-banner-arr-prev.svg');
}

.swiper-container--custom .swiper-button-next::before,
.swiper-container--custom .swiper-button-prev::before {
	width: 17px;
	height: 35px;
}

/* Desktop hero arrows — Figma 1820:33546: bottom-right, two thin white
   line-arrows (←/→) over a 1px white underline. The underline is drawn as the
   buttons' own border-bottom (two touching 48px halves) so it can never drift
   out of alignment with the arrows. Disabled (no further slide) → 0.5. */
@media (min-width: 992px) {

	.swiper-container--custom .swiper-button-prev::before,
	.swiper-container--custom .swiper-button-next::before {
		content: none;
		display: none;
	}

	.swiper-container--custom .swiper-button-prev,
	.swiper-container--custom .swiper-button-next {
		position: absolute;
		top: auto;
		bottom: 20px;
		margin: 0;
		width: 48px;
		height: 33px;
		padding: 0;
		box-sizing: border-box;
		background-repeat: no-repeat;
		background-size: 24px 24px;
		border-bottom: 1px solid #FFFFFF;
		opacity: 1;
		z-index: 7;
	}

	.swiper-container--custom .swiper-button-prev {
		left: auto;
		right: 88px;
		background-position: left 8px top;
		background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='M21 12.013L3.211 12M9.988 19L3 12L9.988 5' stroke='%23ffffff' stroke-width='1' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
	}

	.swiper-container--custom .swiper-button-next {
		right: 40px;
		background-position: right 8px top;
		background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='M3 12.013L20.789 12M14.012 19L21 12L14.012 5' stroke='%23ffffff' stroke-width='1' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
	}

	.swiper-container--custom .swiper-button-prev.swiper-button-disabled,
	.swiper-container--custom .swiper-button-next.swiper-button-disabled {
		opacity: 0.5;
	}
}

.swiper-container--custom .swiper-pagination {
	display: flex !important;
	align-items: center;
	gap: 3px;
	width: 284px !important;
	left: 50% !important;
	right: auto !important;
	transform: translateX(-50%);
	/* Смужки тепер 42px заввишки (2px лінія + по 20px зони кліку), а контейнер
	   центрує їх (align-items:center). Тож зменшуємо bottom на 20px (20→0),
	   щоб видима лінія лишилась на тій самій висоті, що й раніше. */
	bottom: 0 !important;
	margin: 0;
	padding: 0;
	/* Над слайдами/відео (overlay має z-index:1), щоб зона кліку смужок
	   не перекривалась контентом слайда. */
	z-index: 8;
}

.swiper-container--custom .swiper-pagination .swiper-pagination-bullet,
.swiper-container--custom .swiper-pagination span {
	position: relative;
	flex: 1 1 0 !important;
	width: auto !important;
	height: 2px !important;
	margin: 0 !important;
	/* Реальна зона кліку: 20px зверху/знизу — це padding самого елемента
	   (надійніше за псевдо-накладку). box-sizing: content-box лишає висоту
	   контенту 2px, а background-clip малює смужку тільки в цих 2px, тож
	   візуально лінія не змінюється. */
	padding: 20px 0 !important;
	box-sizing: content-box !important;
	/* Figma 1185:24867 spec — inactive bars at 40% white, active solid
	   white. No blend-mode (caused render glitches on light banners). */
	background-color: rgba(255, 255, 255, 0.4);
	background-clip: content-box;
	border: none;
	border-radius: 0;
	opacity: 1;
	cursor: pointer;
	transition: background-color 0.3s ease;
}

.swiper-container--custom .swiper-pagination .swiper-pagination-bullet::before,
.swiper-container--custom .swiper-pagination span::before {
	display: none;
}

.swiper-container--custom .swiper-pagination .swiper-pagination-bullet-active,
.swiper-container--custom .swiper-pagination span.swiper-pagination-bullet-active {
	background-color: #FFFFFF;
}

@media (min-width: 992px) {
	.swiper-container--custom .swiper-pagination {
		width: 364px !important;
		/* 50px − 20px компенсації висоти смужок = 30px (лінія лишається на 50px) */
		bottom: 30px !important;
	}
}

.module-videobanner__media {
	width: 100%;
	overflow: hidden;
}

/* The banner box follows the media's own aspect ratio: --vb-ar is emitted
   inline per format by videobanner.twig from the poster's real (uncropped)
   dimensions, so non-16:9 uploads are shown whole instead of being cropped
   by a fixed-height box + object-fit: cover. Capped so the hero never grows
   past the first screen — the viewport height minus everything above it. The
   <header> contains the promobar + nav, and JS keeps --header-height synced
   to its real height, so `100svh - var(--header-height)` is exactly "screen
   minus header and all above it". When the cap kicks in (very tall media),
   object-fit: cover on .video__media takes over and trims the excess. */
.vb-format.module-videobanner__media {
	aspect-ratio: var(--vb-ar, 9 / 16);
	max-height: calc(100vh - var(--header-height, 70px));
	max-height: calc(100svh - var(--header-height, 70px));
}

@media (min-width: 768px) {
	.vb-format.module-videobanner__media {
		aspect-ratio: var(--vb-ar, 16 / 9);
	}
}

.module-videobanner__media .video__media {
	width: 100%;
	height: 100%;
	aspect-ratio: auto;
}

.video__media {
	display: block;
	width: 100%;
	height: 100%;
	object-position: center;
	object-fit: cover;
}

/* First-slide hero: the eager <img> poster stays in flow and defines the box
   (it is the LCP element). The deferred <video> overlays it absolutely, so it
   never adds height/CLS and simply covers the poster once it starts playing. */
.vb-format {
	position: relative;
}

.vb-format>picture {
	display: block;
	width: 100%;
	height: 100%;
}

.video__media--overlay {
	position: absolute;
	inset: 0;
	z-index: 1;
}

.swiper-wrapper--videobanner {
	margin-top: 0;
}

.video,
.swiper-container--custom,
.swiper-wrapper--videobanner,
.swiper-container--custom .swiper-slide {
	margin: 0;
	padding: 0;
}

/* Each slide is its own positioning context so its .video__wrapper (title +
   button, absolutely positioned) is bound to THAT slide. Lets every slide keep
   its button permanently visible — no JS show/hide flash on slide change. */
.swiper-container--custom .swiper-slide {
	position: relative;
}

/* iOS Safari fix — same pattern as the owl carousel (see stylesheet.css):
   without an explicit touch-action hint Safari treats a near-horizontal swipe
   as partly vertical and scrolls the PAGE while Swiper is also trying to slide,
   so dragging the banner sideways jerks the screen. `pan-y` gives vertical pans
   to the browser (page scroll) and leaves horizontal swipes entirely to Swiper.
   Set on the track + slides + media so it applies wherever the finger lands. */
.swiper-container--custom,
.swiper-wrapper--videobanner,
.swiper-container--custom .swiper-slide,
.swiper-container--custom .video__media {
	touch-action: pan-y;
}

.video {
	position: relative;
	width: 100vw;
	margin-left: calc(50% - 50vw);
	margin-right: calc(50% - 50vw);
	margin-bottom: 32px;
}

.video__wrapper {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	display: block;
	min-height: 0;
	pointer-events: none;
}

.video__text {
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	margin: 0;
	padding: 0 16px;
	max-width: 100%;
	text-align: center;
	text-transform: uppercase;
	font-family: 'MacPawFixel';
	font-size: 40px;
	font-weight: 400;
	line-height: 140%;
	color: #fff;
	pointer-events: auto;
}

.video__title,
.video__button {
	z-index: 100;
}

.video__wrapper .btn,
.video__wrapper .video__button {
	position: absolute;
	bottom: 62px;
	left: 50%;
	transform: translateX(-50%);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	width: 330px;
	max-width: calc(100% - 32px);
	height: 44px;
	margin: 0;
	padding: 0 16px;
	background: #000000;
	color: #FFFFFF;
	border: none;
	border-radius: 0;
	font-family: 'Fixel Text', sans-serif;
	font-weight: 500;
	font-size: 14px;
	line-height: 1;
	letter-spacing: 0;
	text-transform: uppercase;
	text-align: center;
	text-decoration: none;
	box-sizing: border-box;
	pointer-events: auto;
	transition: background 0.2s ease, color 0.2s ease;
}

.video__wrapper .btn:hover,
.video__wrapper .video__button:hover {
	background: #FFFFFF;
	color: #000000;
	border: none;
}

@media (min-width: 992px) {

	.video__wrapper .btn,
	.video__wrapper .video__button {
		bottom: 92px;
		width: 330px;
	}
}

.vb-format {
	display: none;
}

.vb-format--large_desktop {
	display: block;
}

@media (max-width: 767px) {
	.vb-format--mobile {
		display: block;
	}

	.vb-format:not(.vb-format--mobile) {
		display: none;
	}

	.video {
		position: relative;
		display: flex;
		justify-content: center;
	}

	.video a {
		justify-content: center;
		align-items: center;
		width: 100%;
		max-width: 330px;
		display: flex;
		z-index: 5;
	}

	.video__text {
		font-size: 28px;
		max-width: 270px;
		text-align: center;
		padding: 0 16px;
	}

	.swiper-container--custom .swiper-button-next::before,
	.swiper-container--custom .swiper-button-prev::before {
		font-size: 60px;
		display: none;
	}
}

@media (min-width: 768px) and (max-width: 1023px) {
	.vb-format--tablet {
		display: block;
	}

	.vb-format:not(.vb-format--tablet) {
		display: none;
	}
}

@media (min-width: 1024px) and (max-width: 1439px) {
	.vb-format--laptop {
		display: block;
	}

	.vb-format:not(.vb-format--laptop) {
		display: none;
	}
}

@media (min-width: 1440px) and (max-width: 1919px) {
	.vb-format--desktop {
		display: block;
	}

	.vb-format:not(.vb-format--desktop) {
		display: none;
	}
}

@media (min-width: 767px) {
	.video {
		display: flex;
		justify-content: center;
		align-items: center;
		flex-direction: column;
		margin-bottom: 55px;
	}

	.video a {
		z-index: 100;
	}

	.video__text {
		font-size: 28px;
	}

	.video__wrapper .btn {
		width: 330px;
		height: 46px;
	}
}

@media (min-width: 992px) {
	.video__text {
		font-size: 56px;
	}
}

.banners-in-row-section {
	margin: 0 0 55px;
	padding: 0;
	width: 100%;
}

.banners-in-row-section:last-child {
	margin-bottom: 0;
}

.banners-in-row {
	display: flex;
	flex-direction: row;
	align-items: stretch;
	width: 100vw;
	margin-left: calc(50% - 50vw);
	margin-right: calc(50% - 50vw);
	padding: 0;
	gap: 2px;
	margin-bottom: 55px;
}

.marg-b-5 {
	margin-bottom: 5px !important;
}

.marg-b-2 {
	margin-bottom: 2px !important;
}

.banners-in-row__item {
	flex: 1 1 0;
	position: relative;
	aspect-ratio: 716 / 593;
	min-width: 0;
	overflow: hidden;
}

/* Макет 2640:52518: ряд банерів завжди 596px заввишки при ширині
   макета 1440, тож кожна кількість банерів має своє співвідношення:
   720x596 на два (базове 716/593 дає ті самі 596) і 480x596 на три.
   Без окремого правила ряд з трьох брав співвідношення від двох і виходив
   397px замість 596px. :not() потрібен, бо ряд з чотирьох теж має
   третю дитину. */
@media (min-width: 768px) {
	.banners-in-row:has(.banners-in-row__item:nth-child(3)):not(:has(.banners-in-row__item:nth-child(4))) .banners-in-row__item {
		aspect-ratio: 480 / 596;
	}

	.banners-in-row:has(.banners-in-row__item:nth-child(4)) .banners-in-row__item {
		aspect-ratio: 354 / 412;
	}
}

/* Макет 2640:52518 / 2640:53045: смуга категорій — це один набір
   з п'яти банерів, який перегруповується по брейкпоінтах: на десктопі
   2 + 3, на мобільному 1 + 2 + 2. Це один екземпляр модуля з п'ятьма
   банерами, а не два окремі — рядки робить flex-wrap. */
@media (min-width: 768px) {
	.banners-in-row:has(.banners-in-row__item:nth-child(5)):not(:has(.banners-in-row__item:nth-child(6))) {
		flex-wrap: wrap;
	}

	/* Перший ряд: два по 720x596. */
	.banners-in-row:has(.banners-in-row__item:nth-child(5)):not(:has(.banners-in-row__item:nth-child(6))) .banners-in-row__item:nth-child(-n + 2) {
		flex: 0 0 calc(50% - 1px);
		aspect-ratio: 720 / 596;
	}

	/* Другий ряд: три по 480x596. */
	.banners-in-row:has(.banners-in-row__item:nth-child(5)):not(:has(.banners-in-row__item:nth-child(6))) .banners-in-row__item:nth-child(n + 3) {
		flex: 0 0 calc(33.3333% - 1.3333px);
		aspect-ratio: 480 / 596;
	}
}

/* Сусідні банери перекриваються на 1px, щоб між ними не просвічувала біла
   смужка. Проміжку в розмітці немає (getBoundingClientRect дає стик 0.0000),
   але межі колонок (100vw поділене на 2 або на 4) разом з масштабуванням
   дисплея падають між фізичними пікселями, і на стику двох сусідніх шарів
   з-під них видно тло сторінки. Перекриття закриває цей піксель; кадрування
   картинок (object-fit: cover) від 1px не змінюється.
   Тільки десктоп: на мобільному ряд — це колонка (flex-direction: column),
   а ряд з 4 банерів — сітка 2x2 на width: 50%, де відʼємний margin зсунув би
   другий рядок вліво. */
@media (min-width: 768px) {
	.banners-in-row__item+.banners-in-row__item {
		margin-left: -1px;
	}

	.banners-in-row+.banners-in-row {
		margin-top: -1px;
	}
}

.banners-in-row__link {
	display: block;
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	text-decoration: none;
	color: inherit;
}

.banners-in-row__image {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
	transition: transform 0.4s ease;
}

/* Hover zoom — desktop-only. On touch devices :hover gets sticky after a
   tap and leaves the image scaled, which is awkward on a banners grid. */
@media (min-width: 769px) and (hover: hover) {

	.banners-in-row__item:hover .banners-in-row__image {
		transform: scale(1.04);
	}

	.banners-in-row__item:hover .banners-in-row__title {
		color: #0b0b0b;
		padding-left: 48px;
		background: rgba(255, 255, 255, 1);
	}

}

.banners-in-row__title {
	height: 26px;
	position: absolute;
	bottom: 16px;
	left: 0;
	display: inline-flex;
	align-items: center;
	justify-content: flex-end;
	gap: 8px;
	padding: 8px 24px;
	min-width: 0;
	box-sizing: border-box;
	background: rgba(255, 255, 255, 0.6);
	-webkit-backdrop-filter: blur(36px);
	backdrop-filter: blur(36px);
	font-family: 'Fixel Display', sans-serif;
	font-weight: 400;
	font-size: 14px;
	line-height: 1;
	text-transform: uppercase;
	text-align: right;
	color: #0B0B0B;
	border-radius: 0;
	white-space: nowrap;

	transition:
		transform 0.4s cubic-bezier(0.4, 0, 0.2, 1),
		color 0.3s ease,
		background 0.3s ease,
		padding-left 0.4s cubic-bezier(0.4, 0, 0.2, 1),
		padding-right 0.4s cubic-bezier(0.4, 0, 0.2, 1),
		min-width 0.4s cubic-bezier(0.4, 0, 0.2, 1),
		-webkit-backdrop-filter 0.3s ease,
		backdrop-filter 0.3s ease;
}

.banners-in-row__title-arrow {
	display: none;
	width: 24px;
	height: 24px;
	flex: 0 0 14px;
	margin-right: 5px;
	background: currentColor;
	-webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 14'><path d='M1 1L7 7L1 13' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/></svg>") center / contain no-repeat;
	mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 14'><path d='M1 1L7 7L1 13' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/></svg>") center / contain no-repeat;
}

/* Title pill expansion — desktop-only. On touch :hover sticks after tap
   and leaves the label stretched even when nothing is hovered. */
.banners-in-row__title.hover-effect-name {
	color: #fff !important;
}

@media (hover: hover) {
	.banners-in-row__item--hover-effect:hover .banners-in-row__title {
		padding-left: 40px;
		padding-right: 24px;
		min-width: 160px;
		background: #FFFFFF;
		-webkit-backdrop-filter: none;
		backdrop-filter: none;
	}

	.banners-in-row__item--hover-effect:hover .banners-in-row__title-arrow {
		display: block;
	}
}

.banner-mb {
	margin-bottom: 55px;
}

/* Single wide/portrait banner from the Banner and Title module. The source
   image controls the ratio so desktop and mobile Figma assets are not cropped. */
.banner-with-title {
	position: relative;
	display: block;
	width: 100vw;
	margin: 0 calc(50% - 50vw) 55px;
	padding: 0;
	overflow: hidden;
}

.banner-with-title__item,
.banner-with-title__link,
.banner-with-title__item picture {
	position: relative;
	display: block;
	width: 100%;
	height: auto;
}

.banner-with-title__item {
	overflow: hidden;
}

.banner-with-title__image {
	display: block;
	width: 100%;
	max-width: none;
	height: auto;
	object-fit: initial;
}

.banner-with-title__title {
	position: absolute;
	top: 50%;
	left: 50%;
	z-index: 1;
	transform: translate(-50%, -50%);
	display: block;
	width: max-content;
	max-width: calc(100% - 32px);
	margin: 0;
	padding: 0;
	background: transparent;
	font-family: 'Fixel Text', sans-serif;
	font-size: 20px;
	font-weight: 400;
	line-height: 1.4;
	text-align: center;
	text-transform: uppercase;
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 5px;
	color: #FFFFFF;
	white-space: normal;
	pointer-events: none;
}

@media (min-width: 769px) and (hover: hover) {
	.banner-with-title__item:hover .banner-with-title__image {
		transform: none;
	}
}

@media (max-width: 767px) {
	.banner-with-title {
		margin-bottom: 40px;
	}

	.banner-with-title__title {
		font-size: 16px;
		max-width: calc(100% - 24px);
	}

	.banners-in-row {
		flex-direction: column;
		/* Відступ між цим блоком і наступним на мобільному (блок не має
		   обгортки-секції з margin, тож задаємо тут). */
		margin-bottom: 32px;
	}

	/* Два рядки банерів, що стоять упритул, не потребують відступу між
	   собою — 32px давали білу смугу між категоріями. Обнуляємо лише той
	   екземпляр, за яким одразу йде ще один рядок банерів; одиночні блоки
	   і правило .banners-in-row + .category-sliders-block не зачеплені. */
	.banners-in-row:has(+ .banners-in-row) {
		margin-bottom: 0;
	}

	/* Matches the 900x935 server-side mobile crop, so object-fit never
	   trims the image again on phones. */
	.banners-in-row__item {
		width: 100%;
		flex: 0 0 auto;
		aspect-ratio: 900 / 935;
		height: auto;
	}

	.banner-mb {
		margin-bottom: 32px;
	}

	/* Смуга категорій — це два модулі: ряд з двох банерів і ряд
	   з трьох. На десктопі порядок такий, як у розмітці, на мобільному
	   першим йде ряд з трьох, щоб смуга читалась як [на всю ширину][пара][пара].
	   order працює лише між дітьми flex-контейнера, а блоки лежать у col-sm-12
	   разом з рештою головної — тому banners_band.js дає їм власну обгортку. */
	.banners-band__wrap {
		display: flex;
		flex-direction: column;
		gap: 2px;
		margin-bottom: 32px;
	}

	/* Всередині смуги відстань задає gap обгортки. !important — бо
	   блоки часто несуть утилітарні класи з адмінки (marg-b-2, banner-mb),
	   і marg-b-2 сам оголошений з !important. */
	.banners-band__wrap > .banners-in-row {
		margin-bottom: 0 !important;
	}

	.banners-band__wrap > .banners-in-row:has(.banners-in-row__item:nth-child(3)):not(:has(.banners-in-row__item:nth-child(4))) {
		order: -1;
	}

	/* Макет 2640:53045. На мобільному смуга категорій складається з двох
	   типів плитки: на всю ширину 390x405 і пара 194x300 з проміжком 2px.
	   Перший тип уже дає базове 900/935 (390 x 935/900 = 405), а ось пари
	   не було зовсім — ряд з двох банерів розгортався в колонку. */
	.banners-in-row:has(.banners-in-row__item:nth-child(2)):not(:has(.banners-in-row__item:nth-child(3))) {
		flex-direction: row;
		gap: 2px;
	}

	.banners-in-row:has(.banners-in-row__item:nth-child(2)):not(:has(.banners-in-row__item:nth-child(3))) .banners-in-row__item {
		width: auto;
		flex: 1 1 0;
		aspect-ratio: 194 / 300;
	}

	/* Ряду з трьох у макеті немає, тож складаємо його з тих самих
	   двох типів: перший банер на всю ширину, два наступні поруч.
	   Інакше третя плитка залишалась би на півряда з порожнечею справа. */
	.banners-in-row:has(.banners-in-row__item:nth-child(3)):not(:has(.banners-in-row__item:nth-child(4))) {
		flex-direction: row;
		flex-wrap: wrap;
		gap: 2px;
	}

	.banners-in-row:has(.banners-in-row__item:nth-child(3)):not(:has(.banners-in-row__item:nth-child(4))) .banners-in-row__item {
		width: auto;
		flex: 1 1 0;
		aspect-ratio: 194 / 300;
	}

	.banners-in-row:has(.banners-in-row__item:nth-child(3)):not(:has(.banners-in-row__item:nth-child(4))) .banners-in-row__item:first-child {
		width: 100%;
		flex: 0 0 100%;
		aspect-ratio: 900 / 935;
	}

	/* Та сама смуга з п'яти: перший на всю ширину, решта по два. */
	.banners-in-row:has(.banners-in-row__item:nth-child(5)):not(:has(.banners-in-row__item:nth-child(6))) {
		flex-direction: row;
		flex-wrap: wrap;
	}

	.banners-in-row:has(.banners-in-row__item:nth-child(5)):not(:has(.banners-in-row__item:nth-child(6))) .banners-in-row__item {
		width: calc(50% - 1px);
		flex: 0 0 calc(50% - 1px);
		aspect-ratio: 194 / 300;
	}

	.banners-in-row:has(.banners-in-row__item:nth-child(5)):not(:has(.banners-in-row__item:nth-child(6))) .banners-in-row__item:first-child {
		width: 100%;
		flex: 0 0 100%;
		aspect-ratio: 900 / 935;
	}

	.banners-in-row:has(.banners-in-row__item:nth-child(4)) {
		flex-direction: row;
		flex-wrap: wrap;
	}

	.banners-in-row:has(.banners-in-row__item:nth-child(4)) .banners-in-row__item {
		/* Дві колонки заповнюють усю ширину. Рівно 50% тут не можна:
		   базове правило має gap: 2px, і 195 + 2 + 195 не влазить у 390 —
		   плитки переносились по одній на рядок і сітка 2x2 розсипалась у стовпчик. */
		width: calc(50% - 1px);
		flex: 0 0 calc(50% - 1px);
		height: auto;
		aspect-ratio: 191 / 235;
	}

	.banners-in-row__title {
		bottom: 2px;
		padding: 6px 16px;
		font-family: 'Fixel Text', sans-serif;
		font-weight: 400;
		font-size: 12px;
		color: #141414;
		-webkit-backdrop-filter: blur(10px);
		backdrop-filter: blur(10px);
	}

	.banners-in-row:has(.banners-in-row__item:nth-child(4)) .banners-in-row__title {
		bottom: 10px;
	}

	.related-products-block.box.category-sliders-block {
		margin-bottom: 40px !important;
	}

	.related-products-block.box.category-sliders-block .product-slide__title {
		margin-top: 8px;
		padding-top: 0;
	}
}

.category-sliders-block {
	width: 100vw;
	margin-left: calc(50% - 50vw);
	margin-right: calc(50% - 50vw);
	padding: 0;
}

.category-sliders-block .category-sliders-carousel {
	padding-left: 0 !important;
}

/* Hide nav arrows on the home-page sliders that have the left title card
   block — navigation by progress bar + swipe is enough there, the arrows
   add visual noise above the cards. The .unified-slider-progress bar
   underneath stays visible. */
.category-sliders-block .category-sliders-carousel .owl-nav {
	display: none;
}

.category-sliders-block .category-sliders-carousel .owl-stage {
	padding-left: 0 !important;
	padding-right: 0 !important;
}

@media (min-width: 992px) {

	/* No fixed carousel/owl-item height — owl item width changes with the
	   viewport, so a fixed 565px height forced object-fit: cover to crop
	   the image into ever-changing rectangles (face only at narrow widths,
	   full body at wide). Letting the image wrapper drive height via a
	   constant 9:16 aspect ratio keeps every crop identical across widths. */
	.category-sliders-block .category-sliders-carousel .product-slide {
		display: flex !important;
		flex-direction: column;
		width: 334px;
	}

	.category-sliders-block .category-sliders-carousel .product-slide__img-wrapper {
		width: 100%;
		overflow: hidden;
		position: relative;
	}

	.category-sliders-block .category-sliders-carousel .product-slide__img {
		display: block;
		position: absolute;
		inset: 0;
		width: 100%;
		height: 100%;
		object-fit: cover;
		object-position: center;
	}
}

@media (max-width: 991px) {
	.category-sliders-block .category-sliders-carousel .product-slide {
		display: block;
		width: 208px;
	}

	.category-sliders-block .category-sliders-carousel .product-slide__img-wrapper {
		width: 100%;
		aspect-ratio: 9 / 16;
		overflow: hidden;
		position: relative;
	}

	.category-sliders-block .category-sliders-carousel .product-slide__img {
		display: block;
		position: absolute;
		inset: 0;
		width: 100%;
		height: 100%;
		object-fit: cover;
		object-position: center;
	}
}

.category-sliders-row {
	display: flex;
	flex-direction: column;
	gap: 1px;
	width: 100%;
	align-items: stretch;
}

@media (min-width: 992px) {
	.category-sliders-row {
		flex-direction: row;
		gap: 8px;
		align-items: stretch;
	}

	.category-sliders-row>.category-slider-title-card {
		flex: 0 0 calc((100% - 24px) / 4);
		align-self: stretch;
		aspect-ratio: auto;
		height: auto;
		max-width: 334px;
		max-height: 505px;
	}

	.category-sliders-row>.category-sliders-stage {
		flex: 1 1 0;
		min-width: 0;
	}

	.category-sliders-block .category-sliders-carousel .product-slide__img-wrapper {
		max-width: 334px;
		max-height: 505px;
		margin-right: auto;
		margin-left: auto;
	}

	.category-sliders-block .category-sliders-carousel .product-slide__img {
		max-width: 334px;
		max-height: 505px;
	}
}

.category-slider-title-card {
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: center;
	text-align: center;
	background: #FFFFFF;
	width: 100%;
	aspect-ratio: 9 / 16;
	padding: 24px;
	box-sizing: border-box;
	max-height: 585px;
}

@media (max-width: 1499px) {
	.category-slider-title-card {
		max-height: 505px;
	}
}

.category-slider-title-card__top-text {
	margin: 0 0 12px;
	font-family: 'Fixel Text', sans-serif;
	font-weight: 400;
	font-size: 14px;
	line-height: 1.2;
	text-transform: uppercase;
	letter-spacing: 0;
	color: #000000;
}

.category-slider-title-card__title {
	margin: 0 0 30px;
	font-family: 'Fixel Text', sans-serif;
	font-weight: 500;
	font-size: 19px;
	line-height: 1.2;
	text-transform: uppercase;
	letter-spacing: 0;
	color: #000000;
}

.category-slider-title-card__link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	padding: 3px 0;
	margin: 0;
	font-family: 'Fixel Text', sans-serif;
	font-weight: 400;
	font-size: 12px;
	line-height: 1.2;
	letter-spacing: 0;
	text-transform: uppercase;
	color: #000000;
	text-decoration: none;
	border-bottom: 1px solid #141414;
}

.category-slider-title-card__link:hover,
.category-slider-title-card__link:focus {
	color: #5E5E5E;
	border-bottom-color: #5E5E5E;
	text-decoration: none;
}

@media (max-width: 767px) {
	.category-slider-title-card {
		width: 100%;
		/* Override the desktop 9/16 aspect-ratio — on mobile the card sits
		   above the slider (not beside it), so it shouldn't grow with the
		   full viewport width. Auto height shrinks to the actual content
		   (top text + title + link + paddings ≈ 130-150px instead of the
		   ~700px the aspect-ratio would force at ~390px viewport width). */
		aspect-ratio: auto;
		height: auto;
		padding: 0px 16px 32px;
	}
}

@media (max-width: 991px) {
	.category-sliders-row>.category-slider-title-card {
		padding-left: 16px;
		padding-right: 16px;
	}

	.category-sliders-row>.category-sliders-stage {
		padding-left: 15px;
		padding-right: 0;
		overflow: hidden;
	}
}

.blog-block {
	/* padding: 40px 0; */
	margin-bottom: 55px;
}

#common-home .blog-block {
	width: 100vw;
	margin-left: calc(50% - 50vw);
	margin-right: calc(50% - 50vw);
}

.blog-block__header {
	display: flex;
	justify-content: space-between;
	align-items: center;
	margin-bottom: 16px;
	padding: 0;
	gap: 16px;
}

.blog-block__title {
	font-family: 'Fixel Text', sans-serif;
	font-weight: 500;
	font-size: 19px;
	line-height: 1.38;
	letter-spacing: 0;
	text-transform: uppercase;
	color: #000000;
	margin: 0 0 0 40px;
}

.blog-block__nav {
	display: flex;
	justify-content: space-between;
	align-items: center;
	padding: 4px 8px;
	width: 95px;
	box-sizing: border-box;
	border-bottom: 1px solid #E3E3E3;
}

.blog-block__arrow {
	background: transparent;
	border: none;
	padding: 0;
	width: 24px;
	height: 24px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	color: #141414;
	transition: opacity 0.2s ease;
}

.blog-block__arrow svg {
	display: block;
}

.blog-block__arrow:hover {
	opacity: 0.7;
}

.blog-block__arrow[disabled],
.blog-block__arrow.disabled {
	opacity: 0.25;
	cursor: default;
}

.blog-block__viewport {
	overflow: hidden;
}

.blog-block__track {
	display: flex;
	gap: 8px;
	overflow-x: auto;
	overflow-y: hidden;
	scroll-snap-type: x mandatory;
	scroll-behavior: smooth;
	-webkit-overflow-scrolling: touch;
	scrollbar-width: none;
	-ms-overflow-style: none;
}

.blog-block__track::-webkit-scrollbar {
	display: none;
}

.blog-block__slide {
	flex: 0 0 100%;
	min-width: 0;
	scroll-snap-align: start;
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	grid-auto-rows: auto;
	gap: 8px;
}

.blog-block__item {
	display: flex;
	flex-direction: column;
	background: #F4F4F4;
	box-sizing: border-box;
	overflow: hidden;
	min-width: 0;
}

.blog-block__image-link {
	display: block;
	width: 100%;
	aspect-ratio: 448 / 324;
	overflow: hidden;
	background: #C1B5AD;
}

.blog-block__image {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
}

/* `h4.blog-block__article-title` (not just `.blog-block__article-title`)
   to beat the legacy `.blog-block h4 { text-transform: capitalize }` rule
   in stylesheet.css — without the `h4` qualifier specificities tie and
   the older capitalize rule wins, turning titles into Title Case instead
   of UPPERCASE per design. */
h4.blog-block__article-title {
	/* Запас під бревіс великої Й — див. коментар біля .product-slide__title
	   у stylesheet.css. Покриває і line-clamp варіант з line-height 1.1. */
	margin: 13px 16px 12px;
	padding-top: 3px;
	font-family: 'Fixel Text', sans-serif;
	font-weight: 500;
	font-size: 16px;
	line-height: 1.2;
	letter-spacing: 0;
	text-transform: uppercase;
	color: #141414;
}

.blog-block__article-title a {
	color: inherit;
	text-decoration: none;
	transition: color 0.2s ease;
}

.blog-block__article-title a:hover {
	color: #5E5E5E;
}

.blog-block__preview {
	margin: 0 16px 16px;
	font-family: 'Fixel Text', sans-serif;
	font-weight: 400;
	font-size: 14px;
	line-height: 1.2;
	color: #757575;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
	text-overflow: ellipsis;
}

.blog-block__more {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	margin: 0 16px;
	padding: 16px 24px;
	background: transparent;
	color: #141414;
	border: 1px solid #141414;
	border-radius: 0;
	font-family: 'Fixel Text', sans-serif;
	font-weight: 500;
	font-size: 14px;
	line-height: 1;
	letter-spacing: 0;
	text-transform: uppercase;
	text-decoration: none;
	box-sizing: border-box;
	transition: background 0.2s ease, color 0.2s ease;
}

.blog-block__more:hover,
.blog-block__more:focus {
	background: #141414;
	color: #FFFFFF;
	text-decoration: none;
}

@media (min-width: 992px) {

	/* Non-hero cards on desktop: no grey panel, no button — entire card is
	   one clickable link to the article. */
	.blog-block__slide>.blog-block__item:not(:first-child) {
		background: transparent;
		position: relative;
		cursor: pointer;
	}

	.blog-block__slide>.blog-block__item:not(:first-child) .blog-block__more {
		display: none;
	}

	.blog-block__slide>.blog-block__item:not(:first-child) .blog-block__article-title,
	.blog-block__slide>.blog-block__item:not(:first-child) .blog-block__article-title a {
		margin: 16px 0 12px 15px;
		font-size: 16px;
		line-height: 1.2;
		font-weight: 500;
	}

	.blog-block__slide>.blog-block__item:not(:first-child) .blog-block__preview {
		margin: 0 0 0 15px;
	}

	.blog-block__slide>.blog-block__item:not(:first-child) .blog-block__image-link::after {
		content: '';
		position: absolute;
		inset: 0;
		z-index: 1;
	}

	.blog-block__slide>.blog-block__item:not(:first-child):hover .blog-block__article-title {
		color: #5E5E5E;
	}

	.blog-block__slide>.blog-block__item:first-child {
		grid-column: 1 / -1;
		display: grid;
		grid-template-columns: 733fr 627fr;
		gap: 0;
		align-items: stretch;
		min-height: 471px;
	}

	.blog-block__slide>.blog-block__item:first-child .blog-block__image-link {
		grid-row: 1 / span 4;
		aspect-ratio: auto;
		height: 100%;
		min-height: 471px;
	}

	.blog-block__slide>.blog-block__item:first-child .blog-block__article-title {
		grid-column: 2;
		max-width: 540px;
		margin: 24px 24px 0;
		font-family: 'Fixel Text', sans-serif;
		font-weight: 400;
		font-size: 22px;
		line-height: 1.2;
		letter-spacing: 0;
		text-transform: uppercase;
		color: #141414;
		padding: 0;
	}

	.blog-block__slide>.blog-block__item:first-child .blog-block__article-title::first-line {
		font-weight: 500;
	}

	.blog-block__slide>.blog-block__item:first-child .blog-block__article-title a {
		color: inherit;
		text-decoration: none;
		font-size: 20px;
		line-height: 1.2;
		font-weight: inherit;
	}

	.blog-block__slide>.blog-block__item:first-child .blog-block__preview {
		grid-column: 2;
		max-width: 540px;
		margin: 20px 24px 0;
		font-family: 'Fixel Text', sans-serif;
		font-weight: 400;
		font-size: 14px;
		line-height: 1.2;
		color: #757575;
		display: block;
		-webkit-line-clamp: unset;
		line-clamp: unset;
		overflow: visible;
		text-overflow: clip;
	}

	.blog-block__slide>.blog-block__item:first-child .blog-block__more {
		grid-row: 4/5;
		grid-column: 2;
		justify-self: start;
		margin: auto 0 24px 24px;
		padding: 16px;
		width: 225px;
		height: 44px;
		background: #000000;
		color: #FFFFFF;
		border: 1px solid #000000;
		font-family: 'Fixel Text', sans-serif;
		font-weight: 500;
		font-size: 14px;
		line-height: 1;
	}

	.blog-block__slide>.blog-block__item:first-child .blog-block__more:hover,
	.blog-block__slide>.blog-block__item:first-child .blog-block__more:focus {
		background: #FFFFFF;
		color: #000000;
		border-color: #000000;
	}
}

@media (max-width: 991px) {
	.blog-block {
		/* padding: 24px 0; */
		margin-bottom: 40px;
	}

	.blog-block__header {
		padding: 8px 0;
		margin-bottom: 12px;
	}

	.blog-block__title {
		font-size: 16px;
		margin: 0 0 0 20px;
	}

	.blog-block__nav {
		display: none;
	}

	.blog-block__viewport {
		margin-right: calc(50% - 50vw);
		overflow: visible;
	}

	.blog-block__track {
		padding-right: 16px;
	}

	/* Unwrap the desktop "4 cards per slide" grouping so each article is
	   its own scroll-snap target on mobile. */
	.blog-block__slide {
		display: contents;
	}

	.blog-block__item {
		flex: 0 0 348px;
		max-width: 348px;
		scroll-snap-align: start;
		/* image (223) + content panel (205) per Figma 1185:25144 — keeps
		   the CTA pinned at the same offset regardless of preview length. */
		min-height: 428px;
	}

	.blog-block__image-link {
		aspect-ratio: 348 / 223;
	}

	.blog-block__article-title {
		font-size: 16px;
		font-weight: 400;
		line-height: 1.1;
		display: -webkit-box;
		-webkit-line-clamp: 3;
		-webkit-box-orient: vertical;
		overflow: hidden;
		text-overflow: ellipsis;
	}

	.blog-block__preview {
		font-family: 'Fixel Display', sans-serif;
		font-size: 12px;
		line-height: 1.2;
		display: -webkit-box;
		-webkit-line-clamp: 3;
		-webkit-box-orient: vertical;
		overflow: hidden;
		text-overflow: ellipsis;
	}

	.blog-block__more {
		display: inline-flex;
		align-items: center;
		justify-content: center;
		width: auto;
		height: 38px;
		padding: 0 16px;
		margin: auto 16px 16px;
		background: #000000;
		color: #FFFFFF;
		border-color: #000000;
		line-height: 1;
	}

	.blog-block__more:hover,
	.blog-block__more:focus {
		background: #FFFFFF;
		color: #000000;
		border-color: #000000;
	}
}

#common-home #content.col-sm-12 {
	min-height: clamp(360px, calc((100vw - 30px) * 9 / 16), 658px);
}

@media (max-width: 480px) {
	#common-home #content.col-sm-12 {
		min-height: calc((100vw - 30px) * 16 / 9);
	}
}

.about-us {
	display: flex;
	justify-content: space-between;
	width: 100%;
	margin: 130px 0;
	box-sizing: border-box;
}

.about-us__content {
	display: flex;
	flex-direction: column;
	gap: 32px;
	flex: 1 1 auto;
	max-width: 600px;
}

.about-us__text {
	position: relative;
	display: flex;
	flex-direction: column;
	gap: 24px;
	padding-left: 6px;
	max-height: 284px;
	overflow: hidden;
	transition: max-height 0.35s ease;
}

/* White fade at the bottom of the clipped text. Hidden once expanded. */
.about-us__text::after {
	content: '';
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	height: 90px;
	background: linear-gradient(to bottom, rgba(255, 255, 255, 0) 0%, #ffffff 92%);
	pointer-events: none;
	opacity: 1;
	transition: opacity 0.3s ease;
}

.about-us--expanded .about-us__text {
	max-height: 4000px;
}

.about-us--expanded .about-us__text::after {
	opacity: 0;
}

.about-us__title {
	margin: 0;
	font-family: 'Fixel Text', sans-serif;
	font-weight: 400;
	font-size: 22px;
	line-height: 1.1;
	letter-spacing: 0;
	text-transform: uppercase;
	color: #000000;
}

.about-us__description {
	display: flex;
	flex-direction: column;
	gap: 18px;
	margin: 0;
}

.about-us__description p {
	flex: 1 1 0;
	margin: 0;
	font-family: 'Fixel Display', sans-serif;
	font-weight: 400;
	font-size: 12px;
	line-height: 1.2;
	color: #000000;
}

.about-us__link {
	align-self: flex-start;
	margin-left: 6px;
	padding: 3px 0;
	font-family: 'Fixel Text', sans-serif;
	font-weight: 400;
	font-size: 12px;
	line-height: 1;
	letter-spacing: 0;
	text-transform: uppercase;
	color: #000000;
	text-decoration: none;
	border-bottom: 1px solid #141414;
	transition: color 0.2s ease, border-bottom-color 0.2s ease;
}

.about-us__link:hover,
.about-us__link:focus {
	color: #5E5E5E;
	border-bottom-color: #5E5E5E;
	text-decoration: none;
}

.about-us__link--button {
	background: none;
	padding: 3px 0;
	border-top: 0;
	border-right: 0;
	border-left: 0;
	cursor: pointer;
	appearance: none;
}

.about-us__images {
	display: flex;
	flex-direction: row;
	gap: 16px;
	flex: 0 0 442px;
	width: 442px;
}

.about-us__image-item {
	flex: 0 0 213px;
	width: 213px;
	height: 284px;
	overflow: hidden;
	background: #F4F4F4;
}

.about-us__image {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
}

@media (max-width: 991px) {
	.about-us {
		flex-direction: column;
		gap: 24px;
		margin: 32px auto;
		padding: 0 16px;
		align-items: stretch;
	}

	.about-us__content {
		flex: 0 0 auto;
		max-width: none;
		gap: 24px;
	}

	.about-us__text {
		gap: 16px;
		max-height: 160px;
	}

	.about-us__title {
		font-size: 20px;
	}

	.about-us__description {
		flex-direction: column;
		gap: 16px;
	}

	.about-us__images {
		display: none;
		flex: 0 0 auto;
		width: 100%;
		gap: 8px;
	}

	.about-us--expanded .about-us__images {
		display: flex;
	}

	.about-us__image-item {
		flex: 1 1 0;
		width: auto;
		height: auto;
		aspect-ratio: 213 / 284;
	}
}

.hover-effect-name {
	width: 290px;
	color: white;
	background: initial !important;
	font-size: 24px;
	white-space: normal;
	text-align: left;
	/* Left-align inside the fixed 290px box. Without this the inherited
	   justify-content: flex-end right-aligns the label, so a short title
	   (e.g. EN "NEW ARRIVALS") is pushed far to the right while a longer one
	   ("НОВІ НАДХОДЖЕННЯ") fills the box and sits left. */
	justify-content: flex-start;
	margin-bottom: 10px;
}

@media (max-width: 768px) {
	.hover-effect-name {
		/* Override the desktop fixed width — on mobile the banner item is
       only ~180px wide (half-row layout), so 290px would overflow the
       banner to the right. Auto + max-width: 100% keeps the title
       inside the banner regardless of viewport. */
		width: auto;
		max-width: 100%;
		font-size: 18px;
		margin-bottom: 16px;
		/* Was `margin-left: -17px` which shifted the title past the banner's
       left edge — now it sits inside the banner padding. */
		margin-left: 0;
	}
}

/* ============================================================================
   ПЛАНШЕТ — 768–991px
   ============================================================================
   Окремий шар: розкладка перемикається на одноколонкову вже з 991px, а мобільне
   доведення прописане на 767px і сюди не потрапляє. Правки тільки тут, щоб не
   зачепити телефон (<=767) і десктоп (>=992).
   ============================================================================ */
@media (min-width: 768px) and (max-width: 991px) {

	/* --- Картка-заголовок слайдера категорій ---
     У базі вона має aspect-ratio: 9/16 — це розраховано на десктоп, де картка
     займає лише чверть рядка. На планшеті .category-sliders-row стає колонкою,
     картка розтягується на всю ширину, і пропорція форсує висоту:
     820px x 16/9 ≈ 1458px порожнечі з текстом посередині.
     У <=767px це вже виправлено тим самим способом — переносимо сюди. */
	.category-slider-title-card {
		aspect-ratio: auto;
		height: auto;
		padding-top: 0;
		padding-bottom: 32px;
	}

	/* --- Фото в слайдері категорій ---
     Правило <=991px задає коробці aspect-ratio: 9/16 (0.5625), а фото
     вантажаться 1000x1500, тобто 2:3 (0.667). Коробка на ~18% вища за кадр,
     і object-fit: cover обрізає його зверху й знизу — фігури виглядають
     видовженими. Повертаємо ту саму пропорцію, що і в базовому правилі
     .product-slide__img-wrapper, яким живуть решта карток товару. */
	.category-sliders-block .category-sliders-carousel .product-slide__img-wrapper {
		aspect-ratio: 1000 / 1500;
	}

	/* --- Блок "про нас": подвійний відступ зліва ---
     .about-us__text має padding-left: 6px, а .about-us__link — margin-left: 6px.
     Це власні відступи блоку поверх контейнерного, через що ліва межа тексту не
     збігається з рештою сторінки. На планшеті відступ має бути один — від
     контейнера. */
	.about-us__text {
		padding-left: 0;
	}

	.about-us__link {
		margin-left: 0;
	}

	/* --- Слайдер категорій одразу під рядком банерів ---
     .category-sliders-block власного верхнього відступу не має — простір над
     ним завжди дає нижній margin попереднього блоку. У головного банера це
     .video { margin-bottom: 55px } (@media min-width: 767px), тому екземпляр
     під ним виглядає правильно. А .banners-in-row має margin-bottom лише на
     телефоні (@media max-width: 767px), тож на планшеті заголовок
     "2026 / ОДЯГ" прилипає впритул до банерів.
     Відступ вішаємо через сусідній селектор — рівно там, де слайдер іде за
     банерами. Екземпляр під головним банером під це правило не потрапляє і
     лишається без змін. Значення 55px = той самий відступ, що дає .video. */
	.banners-in-row+.category-sliders-block {
		padding-top: 55px;
	}
}
