/*
 * Ecom Theme — Store Sections (homepage blocks). Loaded on the front end and in the editor canvas.
 */

/* ---------- Section shell ---------- */

/* overflow-x: clip keeps wide content (videos in scrolling rows, marquees) from widening the page on phones. */
.section { padding-block: clamp(40px, 6vw, 72px); overflow-x: clip; }
.section--space-compact { padding-block: clamp(24px, 3.5vw, 40px); }
.section--space-none { padding-block: 0; }
.section--bg-surface { background: var(--color-surface); }
.section--bg-brand { background: var(--color-brand); color: var(--color-brand-contrast); }
.section--bg-brand .section__subtitle,
.section--bg-brand .section__link { color: inherit; opacity: .85; }

/* Two sections with the same tinted background sit flush together. */
.section--bg-surface + .section--bg-surface { padding-top: 0; }

.section__head {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	justify-content: space-between;
	gap: 8px 24px;
	margin-bottom: clamp(20px, 3vw, 32px);
}

.section__head--center { justify-content: center; text-align: center; }
.section__head--center .section__link { flex-basis: 100%; }

.section__title {
	margin: 0;
	font-size: calc(clamp(24px, 3.2vw, 38px) * var(--heading-scale, 1));
}

.section__subtitle {
	margin: 6px 0 0;
	max-width: 620px;
	color: var(--color-muted);
}

.section__head--center .section__subtitle { margin-inline: auto; }

.section__link {
	font-size: 15px;
	font-weight: 500;
	white-space: nowrap;
	text-decoration: none;
	color: var(--color-brand);
}

.section__empty { color: var(--color-muted); text-align: center; }

/* ---------- Rail (horizontal scroller with arrows) ---------- */

.rail { position: relative; }

.rail [data-rail-track] {
	display: grid;
	grid-auto-flow: column;
	grid-template-columns: none;
	gap: 16px;
	margin: 0;
	padding: 0 0 8px;
	list-style: none;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scroll-behavior: smooth;
	scrollbar-width: none;
	overscroll-behavior-x: contain;
}

.rail [data-rail-track]::-webkit-scrollbar { display: none; }
.rail [data-rail-track] > li { scroll-snap-align: start; }

.woocommerce .rail ul.products.product-rail,
.rail ul.products.product-rail {
	display: grid;
	grid-auto-flow: column;
	grid-template-columns: none;
	grid-auto-columns: calc((100% - 12px) / 2.2);
	gap: 12px;
}

@media (min-width: 768px) {
	.woocommerce .rail ul.products.product-rail,
	.rail ul.products.product-rail { grid-auto-columns: calc((100% - 2 * 20px) / 3); gap: 20px; }
}

@media (min-width: 1100px) {
	.woocommerce .rail ul.products.product-rail,
	.rail ul.products.product-rail { grid-auto-columns: calc((100% - (var(--cols, 4) - 1) * 20px) / var(--cols, 4)); }
}

.rail__nav {
	position: absolute;
	top: 38%;
	z-index: 4;
	display: none;
	place-items: center;
	width: 44px;
	height: 44px;
	padding: 0;
	border: 1px solid var(--color-border);
	border-radius: 50%;
	background: var(--color-bg);
	color: var(--color-text);
	box-shadow: var(--shadow);
	cursor: pointer;
	transition: opacity .2s;
}

.rail__nav--prev { left: -18px; }
.rail__nav--next { right: -18px; }
.rail__nav:disabled { opacity: 0; pointer-events: none; }

@media (min-width: 1025px) and (hover: hover) {
	.rail.is-scrollable .rail__nav { display: grid; }
}

/* ---------- Hero ---------- */

.hero {
	position: relative;
	overflow: hidden;
	background: var(--color-surface);
	--hero-h: clamp(420px, 70vh, 720px);
}

.hero--medium { --hero-h: clamp(360px, 55vh, 560px); }
.hero--small { --hero-h: clamp(260px, 38vh, 420px); }

.hero__slides { position: relative; height: var(--hero-h); }

.hero__slide {
	position: absolute;
	inset: 0;
	display: grid;
	align-items: center;
	opacity: 0;
	visibility: hidden;
	transition: opacity .7s var(--ease), visibility .7s;
}

.hero__slide.is-active { opacity: 1; visibility: visible; }

.hero__img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.hero__img--mobile { display: none; }


@keyframes hero-zoom {
	from { transform: scale(1.06); }
	to { transform: scale(1); }
}

.hero__slide--light::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	background: linear-gradient(90deg, rgb(0 0 0 / .45), rgb(0 0 0 / .05) 70%);
}

.hero__slide--light.hero__slide--right::before { background: linear-gradient(270deg, rgb(0 0 0 / .45), rgb(0 0 0 / .05) 70%); }
.hero__slide--light.hero__slide--center::before { background: rgb(0 0 0 / .3); }

.hero__inner { position: relative; z-index: 2; display: flex; }
.hero__slide--center .hero__inner { justify-content: center; text-align: center; }
.hero__slide--right .hero__inner { justify-content: flex-end; }

.hero__content { max-width: 560px; }
.hero__slide--light .hero__content { color: #fff; }
.hero__slide--dark .hero__content { color: var(--color-text); }

.hero__eyebrow {
	margin: 0 0 12px;
	font-size: 13px;
	font-weight: 600;
	letter-spacing: .14em;
	text-transform: uppercase;
}

.hero__title {
	margin: 0 0 14px;
	font-size: calc(clamp(34px, 5.4vw, 64px) * var(--heading-scale, 1));
	line-height: 1.05;
	color: inherit;
}

.hero__text {
	margin: 0 0 24px;
	font-size: clamp(16px, 1.6vw, 19px);
	opacity: .92;
}

.hero__slide--light .hero__button {
	background: #fff;
	border-color: #fff;
	color: var(--color-text);
}

.hero__button { min-height: 52px; padding-inline: 32px; }

.hero__slide.is-active .hero__content > * { animation: rise .8s var(--ease) both; }
.hero__slide.is-active .hero__content > *:nth-child(2) { animation-delay: .08s; }
.hero__slide.is-active .hero__content > *:nth-child(3) { animation-delay: .16s; }
.hero__slide.is-active .hero__content > *:nth-child(4) { animation-delay: .24s; }

@keyframes rise {
	from { opacity: 0; transform: translateY(18px); }
	to { opacity: 1; transform: none; }
}

.hero__nav {
	position: absolute;
	top: 50%;
	z-index: 3;
	display: grid;
	place-items: center;
	width: 46px;
	height: 46px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: rgb(255 255 255 / .85);
	color: var(--color-text);
	cursor: pointer;
	transform: translateY(-50%);
	opacity: 0;
	transition: opacity .25s;
}

.hero:hover .hero__nav,
.hero__nav:focus-visible { opacity: 1; }
.hero__nav--prev { left: 20px; }
.hero__nav--next { right: 20px; }

.hero__dots {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 20px;
	z-index: 3;
	display: flex;
	justify-content: center;
	gap: 8px;
}

.hero__dot {
	width: 8px;
	height: 8px;
	padding: 0;
	border: 0;
	border-radius: 999px;
	background: rgb(255 255 255 / .55);
	cursor: pointer;
	transition: width .3s var(--ease), background .3s;
}

.hero__dot[aria-current="true"] { width: 26px; background: #fff; }

@media (max-width: 767px) {
	.hero { --hero-h: min(78vh, 640px); }
	.hero--medium { --hero-h: min(62vh, 520px); }
	.hero--small { --hero-h: 340px; }
	.hero__slide.has-mobile .hero__img--desktop { display: none; }
	.hero__slide.has-mobile .hero__img--mobile { display: block; }
	.hero__slide { align-items: end; padding-bottom: 64px; }
	.hero__slide--light::before { background: linear-gradient(0deg, rgb(0 0 0 / .6), rgb(0 0 0 / 0) 65%); }
	.hero__inner,
	.hero__slide--right .hero__inner { justify-content: center; text-align: center; }
	.hero__nav { display: none; }
}

/* ---------- Category tiles ---------- */

.cat-tiles {
	display: grid;
	grid-template-columns: repeat(var(--cols, 6), minmax(0, 1fr));
	gap: 24px 16px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.cat-tile {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 12px;
	text-decoration: none;
	text-align: center;
}

.cat-tile__media {
	position: relative;
	display: grid;
	place-items: center;
	width: 100%;
	overflow: hidden;
	background: var(--color-surface);
}

.cat-tile__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform .6s var(--ease);
}


.cat-tile__initial {
	font-family: var(--font-heading);
	font-size: clamp(28px, 4vw, 44px);
	color: var(--color-brand);
}

.cat-tile__name { font-weight: 500; line-height: 1.3; }
.cat-tile__count { display: block; font-size: 13px; font-weight: 400; color: var(--color-muted); }

.cat-tiles--circle .cat-tile__media {
	aspect-ratio: 1;
	border-radius: 50%;
	outline: 1px solid var(--color-border);
	outline-offset: 4px;
	transition: outline-color .2s;
}

.cat-tiles--circle .cat-tile:hover .cat-tile__media { outline-color: var(--color-brand); }

.cat-tiles--tile .cat-tile__media { aspect-ratio: 4 / 5; border-radius: var(--radius); }
.cat-tiles--tile .cat-tile { align-items: flex-start; text-align: left; }

.cat-tiles--card .cat-tile { position: relative; }
.cat-tiles--card .cat-tile__media { aspect-ratio: 3 / 4; border-radius: var(--radius); }
.cat-tiles--card .cat-tile__media::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(0deg, rgb(0 0 0 / .55), transparent 55%);
}

.cat-tiles--card .cat-tile__name {
	position: absolute;
	left: 16px;
	right: 16px;
	bottom: 16px;
	z-index: 1;
	font-family: var(--font-heading);
	font-size: clamp(17px, 1.8vw, 22px);
	color: #fff;
	text-align: left;
}

.cat-tiles--card .cat-tile__count { color: rgb(255 255 255 / .85); }

@media (max-width: 1024px) {
	.cat-tiles { grid-template-columns: repeat(min(var(--cols, 6), 4), minmax(0, 1fr)); }
}

@media (max-width: 767px) {
	.cat-tiles--circle {
		display: flex;
		gap: 16px;
		margin-inline: calc(var(--gutter) * -1);
		padding-inline: var(--gutter);
		overflow-x: auto;
		scrollbar-width: none;
		scroll-snap-type: x proximity;
	}
	.cat-tiles--circle > li { flex: 0 0 84px; scroll-snap-align: start; }
	.cat-tiles--circle .cat-tile__name { font-size: 13px; }
	.cat-tiles--tile,
	.cat-tiles--card { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px 12px; }
}

/* ---------- Product tabs ---------- */

.ptabs__list {
	display: flex;
	gap: 8px;
	margin: -8px 0 24px;
	overflow-x: auto;
	scrollbar-width: none;
}

.section__head--center + .ptabs .ptabs__list,
.ptabs__list { justify-content: flex-start; }

@media (min-width: 768px) {
	.ptabs__list { justify-content: center; }
}

.ptabs__tab {
	flex-shrink: 0;
	padding: 8px 18px;
	border: 1px solid var(--color-border);
	border-radius: 999px;
	background: var(--color-bg);
	color: var(--color-text);
	font-size: 15px;
	font-weight: 500;
	cursor: pointer;
	transition: background .2s, color .2s, border-color .2s;
}

.ptabs__tab:hover { border-color: var(--color-text); }

.ptabs__tab[aria-selected="true"] {
	background: var(--color-brand);
	border-color: var(--color-brand);
	color: var(--color-brand-contrast);
}

.ptabs__panel { animation: fade-in .3s; }

/* Placeholder while a tab's products load. */
.ptabs__loading {
	height: clamp(320px, 40vw, 460px);
	border-radius: var(--radius);
	background: linear-gradient(90deg, var(--color-surface) 25%, color-mix(in srgb, var(--color-surface) 50%, var(--color-bg)) 50%, var(--color-surface) 75%) 0 0 / 200% 100%;
	animation: shimmer 1.2s linear infinite;
}

@keyframes shimmer { to { background-position: -200% 0; } }

/* ---------- Promo tiles ---------- */

.promo-tiles {
	display: grid;
	grid-template-columns: repeat(var(--cols, 3), minmax(0, 1fr));
	gap: 16px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.promo-tile {
	position: relative;
	display: block;
	overflow: hidden;
	border-radius: var(--radius);
	background: var(--color-surface);
	color: #fff;
	text-decoration: none;
}

.promo-tile__media { display: block; aspect-ratio: var(--ratio, 4 / 5); }

.promo-tile__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform .7s var(--ease);
}

.promo-tile:hover { color: #fff; }

.promo-tile::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(0deg, rgb(0 0 0 / .55), transparent 55%);
}

.promo-tile__body {
	position: absolute;
	left: 20px;
	right: 20px;
	bottom: 20px;
	z-index: 1;
	display: grid;
	gap: 4px;
}

.promo-tile__title {
	font-family: var(--font-heading);
	font-size: calc(clamp(20px, 2.2vw, 28px) * var(--heading-scale, 1));
	font-weight: var(--heading-weight);
	line-height: 1.15;
}

.promo-tile__text { font-size: 14px; opacity: .9; }

@media (max-width: 767px) {
	.promo-tiles { grid-template-columns: repeat(min(var(--cols, 3), 2), minmax(0, 1fr)); gap: 12px; }
	.promo-tile__body { left: 14px; right: 14px; bottom: 14px; }
}

/* ---------- Coupon banner ---------- */

.coupon-banner {
	display: grid;
	overflow: hidden;
	border-radius: var(--radius);
	background: var(--color-brand);
	color: var(--color-brand-contrast);
}

.section--bg-brand .coupon-banner { background: var(--color-bg); color: var(--color-text); }

@media (min-width: 768px) {
	.coupon-banner.has-image { grid-template-columns: 1.2fr 1fr; }
}

.coupon-banner__body {
	display: grid;
	align-content: center;
	justify-items: start;
	gap: 12px;
	padding: clamp(28px, 5vw, 56px);
}

.coupon-banner:not(.has-image) .coupon-banner__body { justify-items: center; text-align: center; }

.coupon-banner__eyebrow {
	margin: 0;
	font-size: 13px;
	font-weight: 600;
	letter-spacing: .14em;
	text-transform: uppercase;
	opacity: .85;
}

.coupon-banner__title { margin: 0; font-size: calc(clamp(26px, 3.6vw, 44px) * var(--heading-scale, 1)); color: inherit; }
.coupon-banner__text { margin: 0; max-width: 520px; opacity: .9; }

.coupon-banner__timer {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	margin: 0;
	padding: 6px 12px;
	border-radius: 999px;
	background: rgb(255 255 255 / .14);
	font-size: 14px;
}

.coupon-banner__timer strong { font-variant-numeric: tabular-nums; }

.coupon-banner__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin-top: 6px;
}

.coupon-banner__code {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	min-height: 46px;
	padding: 0 18px;
	border: 2px dashed currentColor;
	border-radius: var(--radius-btn);
	background: transparent;
	color: inherit;
	font-size: 17px;
	font-weight: 700;
	letter-spacing: .08em;
	cursor: pointer;
}

.coupon-banner__code.is-copied { background: rgb(255 255 255 / .16); }

.coupon-banner .button {
	background: var(--color-brand-contrast);
	border-color: var(--color-brand-contrast);
	color: var(--color-brand);
}

.section--bg-brand .coupon-banner .button { background: var(--color-brand); border-color: var(--color-brand); color: var(--color-brand-contrast); }

.coupon-banner__media img {
	display: block;
	width: 100%;
	height: 100%;
	min-height: 220px;
	object-fit: cover;
}

/* ---------- USP ---------- */

.usp-row {
	display: grid;
	grid-template-columns: repeat(min(var(--count, 4), 4), minmax(0, 1fr));
	gap: 24px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.usp-item {
	display: grid;
	justify-items: center;
	gap: 6px;
	text-align: center;
}

.usp-item__icon {
	display: grid;
	place-items: center;
	width: 60px;
	height: 60px;
	margin-bottom: 6px;
	border-radius: 50%;
	background: var(--color-surface);
	color: var(--color-brand);
}

.section--bg-surface .usp-item__icon { background: var(--color-bg); }
.section--bg-brand .usp-item__icon { background: rgb(255 255 255 / .14); color: inherit; }
.usp-item__title { font-weight: 600; }
.usp-item__text { font-size: 14px; color: var(--color-muted); }
.section--bg-brand .usp-item__text { color: inherit; opacity: .8; }

@media (max-width: 767px) {
	.usp-row { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px 12px; }
}

.section--usp .usp-marquee { padding-block: 14px; border-block: 1px solid var(--color-border); overflow: hidden; }
.section--bg-brand .usp-marquee,
.section--bg-surface .usp-marquee { border-color: transparent; }

.usp-marquee__track {
	display: flex;
	width: max-content;
	animation: marquee 32s linear infinite;
}

.usp-marquee:hover .usp-marquee__track { animation-play-state: paused; }

.usp-marquee__list {
	display: flex;
	margin: 0;
	padding: 0;
	list-style: none;
}

.usp-marquee__list li {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 0 32px;
	font-size: clamp(15px, 1.5vw, 18px);
	font-weight: 500;
	white-space: nowrap;
}

.usp-marquee__list .icon { color: var(--color-brand); }
.section--bg-brand .usp-marquee__list .icon { color: inherit; }

/* ---------- Story (image + text) ---------- */

.story {
	display: grid;
	align-items: center;
	gap: clamp(24px, 5vw, 72px);
}

@media (min-width: 900px) {
	.story { grid-template-columns: 1fr 1fr; }
	.story--image-right .story__media { order: 2; }
	.story--no-image { grid-template-columns: minmax(0, 760px); justify-content: center; text-align: center; }
	.story--no-image .story__points { justify-items: center; }
}

.story__media img {
	display: block;
	width: 100%;
	aspect-ratio: 4 / 5;
	max-height: 640px;
	object-fit: cover;
	border-radius: var(--radius);
}

.story__eyebrow {
	margin: 0 0 10px;
	font-size: 13px;
	font-weight: 600;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--color-brand);
}

.section--bg-brand .story__eyebrow { color: inherit; opacity: .8; }

.story__title { margin: 0 0 12px; font-size: calc(clamp(28px, 3.6vw, 44px) * var(--heading-scale, 1)); color: inherit; }
.story__lead { margin: 0 0 12px; font-size: 18px; }
.story__text { color: var(--color-muted); }
.section--bg-brand .story__text { color: inherit; opacity: .85; }

.story__points {
	display: grid;
	gap: 8px;
	margin: 16px 0 24px;
	padding: 0;
	list-style: none;
}

.story__points li { display: flex; align-items: center; gap: 10px; }
.story__points .icon { color: var(--color-brand); }
.section--bg-brand .story__points .icon { color: inherit; }

.section--bg-brand .story .button {
	background: var(--color-brand-contrast);
	border-color: var(--color-brand-contrast);
	color: var(--color-brand);
}

/* ---------- Testimonials ---------- */

.quote-rail { grid-auto-columns: min(340px, 82%); }

@media (min-width: 1100px) {
	.quote-rail { grid-auto-columns: calc((100% - 2 * 16px) / 3); }
}

.quote-card {
	display: flex;
	flex-direction: column;
	gap: 14px;
	padding: 28px;
	border: 1px solid var(--color-border);
	border-radius: var(--radius);
	background: var(--color-bg);
	color: var(--color-text);
}

.quote-card .rating__stars { font-size: 16px; }

.quote-card__text {
	flex: 1;
	margin: 0;
	font-family: var(--font-heading);
	font-size: 18px;
	line-height: 1.5;
}

.quote-card__text p { margin: 0; }
.quote-card__text p::before { content: "“"; }
.quote-card__text p::after { content: "”"; }

.quote-card__who { display: flex; align-items: center; gap: 12px; }
.quote-card__avatar { width: 44px; height: 44px; border-radius: 50%; object-fit: cover; }
.quote-card__name { margin: 0; font-weight: 600; }
.quote-card__place { margin: 0; font-size: 13px; color: var(--color-muted); }

/* ---------- Reels ---------- */

.reels { grid-auto-columns: min(230px, 62%); gap: 14px; }

.reel { display: grid; gap: 10px; }

.reel__media {
	position: relative;
	overflow: hidden;
	aspect-ratio: 9 / 16;
	border-radius: var(--radius);
	background: var(--color-surface);
}

.reel__video { width: 100%; height: 100%; object-fit: cover; }

.reel__caption {
	position: absolute;
	left: 12px;
	right: 12px;
	bottom: 12px;
	margin: 0;
	color: #fff;
	font-size: 14px;
	font-weight: 500;
	text-shadow: 0 1px 6px rgb(0 0 0 / .5);
}

.reel__product {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 8px;
	border: 1px solid var(--color-border);
	border-radius: var(--radius);
	background: var(--color-bg);
	color: var(--color-text);
	text-decoration: none;
}

.reel__thumb { width: 44px; height: 44px; border-radius: calc(var(--radius) * .6); object-fit: cover; }
.reel__name { display: block; font-size: 13px; font-weight: 500; line-height: 1.3; }
.reel__price { font-size: 13px; }
.reel__price del { display: none; }

/* ---------- Logos ---------- */

.logo-strip { overflow: hidden; mask-image: linear-gradient(90deg, transparent, #000 10%, #000 90%, transparent); }

.logo-strip__track {
	display: flex;
	width: max-content;
	animation: marquee 40s linear infinite;
}

.logo-strip:hover .logo-strip__track { animation-play-state: paused; }

.logo-strip__list {
	display: flex;
	align-items: center;
	margin: 0;
	padding: 0;
	list-style: none;
}

.logo-strip__list li { padding: 0 36px; }

.logo-strip__img {
	display: block;
	max-width: 140px;
	max-height: 44px;
	width: auto;
	height: auto;
	filter: grayscale(1);
	opacity: .7;
	transition: filter .2s, opacity .2s;
}

.logo-strip__list a:hover .logo-strip__img { filter: none; opacity: 1; }

.logo-strip__name {
	font-family: var(--font-heading);
	font-size: 22px;
	font-weight: var(--heading-weight);
	white-space: nowrap;
	opacity: .55;
}

/* ---------- Stats ---------- */

.stats {
	display: grid;
	grid-template-columns: repeat(min(var(--count, 4), 4), minmax(0, 1fr));
	gap: 24px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.stat { display: grid; gap: 4px; text-align: center; }

.stat__number {
	font-family: var(--font-heading);
	font-size: clamp(32px, 4.6vw, 54px);
	font-weight: var(--heading-weight);
	line-height: 1;
	color: var(--color-brand);
}

.section--bg-brand .stat__number { color: inherit; }
.stat__label { color: var(--color-muted); }
.section--bg-brand .stat__label { color: inherit; opacity: .8; }

@media (max-width: 767px) {
	.stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* ---------- Posts ---------- */

.post-cards {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
	gap: 28px 20px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.post-card { display: grid; gap: 8px; align-content: start; }

.post-card__media {
	display: block;
	overflow: hidden;
	aspect-ratio: 3 / 2;
	border-radius: var(--radius);
	background: var(--color-surface);
}

.post-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s var(--ease); }
.post-card__date { margin: 6px 0 0; font-size: 13px; color: var(--color-muted); }
.post-card__title { margin: 0; font-size: 20px; }
.post-card__title a { text-decoration: none; }
.post-card__excerpt { margin: 0; font-size: 15px; color: var(--color-muted); }

/* ---------- FAQ ---------- */

.faq { max-width: 820px; margin: 0 auto; border-top: 1px solid var(--color-border); }
.faq .pdp-accordion__title { font-size: 17px; }

/* ---------- Editor canvas ---------- */

.ecom-section-preview { pointer-events: none; }
.ecom-section-preview .components-placeholder { pointer-events: auto; }
.editor-styles-wrapper .section .container { max-width: var(--container); }

@media (prefers-reduced-motion: reduce) {
	.usp-marquee__track,
	.logo-strip__track { animation: none; flex-wrap: wrap; width: auto; justify-content: center; }
	.usp-marquee__list[aria-hidden],
	.logo-strip__list[aria-hidden] { display: none; }
	.hero__slide.is-active .hero__img { animation: none; }
}

/* =========================================================================
 * v1.1 — section options and new sections
 * ========================================================================= */

/* ---------- Visibility per device ---------- */
@media (max-width: 767px) { .ecom-only-desktop { display: none !important; } }
@media (min-width: 768px) { .ecom-only-mobile { display: none !important; } }

/* ---------- Style options ---------- */
.section--space-large { padding-block: clamp(56px, 9vw, 112px); }
.section--bg-dark { background: var(--color-text); color: var(--color-bg); }
.section--bg-custom { background: var(--section-bg, var(--color-surface)); }
.section--text-light { color: #fff; }
.section--bg-dark .section__subtitle,
.section--text-light .section__subtitle,
.section--bg-dark .section__link,
.section--text-light .section__link { color: inherit; opacity: .8; }
.section--bg-dark .story__text,
.section--text-light .story__text { color: inherit; opacity: .85; }
.container--narrow { max-width: 860px; }
.container--full { max-width: none; }

/* Editor-only note above sections that are hidden, device-limited or scheduled. */
.ecom-editor-note {
	display: inline-block;
	margin: 8px 0 0 8px;
	padding: 4px 10px;
	border-radius: 4px;
	background: #fcf0d4;
	color: #6b4e00;
	font: 600 12px/1.4 system-ui, sans-serif;
}
.ecom-section-preview.is-switched-off > * { opacity: .45; }

/* ---------- Videos ---------- */
.ecom-video { display: block; }
.ecom-video--file,
.ecom-video--embed { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.ecom-video--embed { overflow: hidden; pointer-events: none; }
.ecom-video--embed iframe {
	position: absolute;
	top: 50%;
	left: 50%;
	width: 100vw;
	height: 56.25vw;
	min-width: 177.78%;
	min-height: 100%;
	border: 0;
	transform: translate(-50%, -50%);
}
.ecom-video__poster { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.ecom-video--file:not(.is-playing) { opacity: 0; }
.ecom-video--file.is-playing { opacity: 1; transition: opacity .6s; }

.ecom-video--click { position: relative; aspect-ratio: 16 / 9; background: #000; overflow: hidden; }
.ecom-video--click iframe,
.ecom-video--click video { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.ecom-video__play {
	position: absolute;
	top: 50%;
	left: 50%;
	z-index: 2;
	display: grid;
	place-items: center;
	width: 76px;
	height: 76px;
	padding: 0 0 0 4px;
	border: 0;
	border-radius: 50%;
	background: rgb(255 255 255 / .92);
	color: var(--color-text);
	box-shadow: 0 10px 30px rgb(0 0 0 / .25);
	cursor: pointer;
	transform: translate(-50%, -50%);
	transition: transform .2s;
}
.ecom-video__play:hover { transform: translate(-50%, -50%) scale(1.06); }

.hero__video { z-index: 0; }
.hero__slide .hero__video ~ .hero__inner { z-index: 2; }

/* ---------- Media banners (image banner, video banner) ---------- */
.media-banner { position: relative; }
.media-banner--contained { padding-block: clamp(24px, 4vw, 48px); }
.media-banner__frame {
	position: relative;
	display: grid;
	align-items: center;
	overflow: hidden;
	background: var(--color-surface);
	min-height: var(--banner-h, 420px);
}
.media-banner--contained .media-banner__frame { border-radius: var(--radius); }
.media-banner--h-small { --banner-h: clamp(220px, 30vw, 340px); }
.media-banner--h-medium { --banner-h: clamp(320px, 42vw, 520px); }
.media-banner--h-large { --banner-h: clamp(420px, 60vw, 720px); }
.media-banner--h-screen { --banner-h: calc(100vh - var(--header-h)); }
.media-banner--h-ratio .media-banner__frame { min-height: 0; aspect-ratio: 16 / 9; }

.media-banner__media { position: absolute; inset: 0; }
.media-banner__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.media-banner__img--mobile { display: none; }
.media-banner__video--mobile { display: none; }
.media-banner__media::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	background: rgb(0 0 0 / var(--overlay, .3));
	pointer-events: none;
}
.media-banner--dark .media-banner__media::after { background: rgb(255 255 255 / var(--overlay, .3)); }

.media-banner__inner { position: relative; z-index: 2; display: flex; padding-block: 40px; }
.media-banner--center .media-banner__inner { justify-content: center; text-align: center; }
.media-banner--right .media-banner__inner { justify-content: flex-end; }
.media-banner__content { max-width: 620px; }
.media-banner--light .media-banner__content { color: #fff; }
.media-banner--dark .media-banner__content { color: var(--color-text); }
.media-banner__eyebrow { margin: 0 0 10px; font-size: 13px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; }
.media-banner__title { margin: 0 0 12px; font-size: calc(clamp(30px, 4.6vw, 56px) * var(--heading-scale, 1)); line-height: 1.08; color: inherit; }
.media-banner__text { margin: 0 0 22px; font-size: clamp(16px, 1.5vw, 19px); opacity: .92; }
.media-banner--light .media-banner__button { background: #fff; border-color: #fff; color: var(--color-text); }
.media-banner__cover-link { position: absolute; inset: 0; z-index: 3; }

/* Click-to-play: video at its own shape, text below. */
.media-banner--click .media-banner__frame { min-height: 0; background: none; }
.media-banner--click .media-banner__media { position: relative; }
.media-banner--click .media-banner__media::after { display: none; }
.media-banner--click .media-banner__content { color: var(--color-text); }
.media-banner--click .media-banner__inner { padding-block: 24px 0; }
.media-banner--click .media-banner__button { background: var(--color-brand); border-color: var(--color-brand); color: var(--color-brand-contrast); }

@media (max-width: 767px) {
	.media-banner.has-mobile .media-banner__img--desktop { display: none; }
	.media-banner.has-mobile .media-banner__img--mobile { display: block; }
	.media-banner__video--desktop { display: none; }
	.media-banner__video--mobile { display: block; }
	.media-banner--h-medium,
	.media-banner--h-large { --banner-h: min(70vh, 560px); }
	.media-banner__inner,
	.media-banner--right .media-banner__inner { justify-content: center; text-align: center; }
}

/* ---------- Flash sale ---------- */
.flash-timer {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
	margin: -8px 0 24px;
}
.section__head--center + .flash-timer { justify-content: center; }
.flash-timer__label { margin-right: 4px; font-weight: 600; }
.flash-timer__box {
	display: grid;
	justify-items: center;
	min-width: 58px;
	padding: 8px 6px;
	border-radius: var(--radius);
	background: var(--color-sale);
	color: #fff;
	line-height: 1;
}
.flash-timer__box strong { font-size: 22px; font-variant-numeric: tabular-nums; }
.flash-timer__box small { margin-top: 4px; font-size: 10px; letter-spacing: .08em; text-transform: uppercase; opacity: .85; }
.flash-timer__over { margin: 0; font-weight: 600; color: var(--color-muted); }

/* ---------- Lookbook ---------- */
.lookbook { display: grid; gap: 28px; align-items: start; }
@media (min-width: 900px) {
	.lookbook { grid-template-columns: 1.3fr 1fr; gap: 48px; }
	.lookbook--image-right .lookbook__stage { order: 2; }
}
.lookbook__stage { position: relative; overflow: visible; }
.lookbook__img { display: block; width: 100%; border-radius: var(--radius); }
.lookbook__spot { position: absolute; transform: translate(-50%, -50%); }
.lookbook__dot {
	position: relative;
	display: grid;
	place-items: center;
	width: 34px;
	height: 34px;
	padding: 0;
	border: 2px solid #fff;
	border-radius: 50%;
	background: var(--color-brand);
	color: var(--color-brand-contrast);
	font-size: 13px;
	font-weight: 700;
	cursor: pointer;
	box-shadow: 0 4px 14px rgb(0 0 0 / .25);
}
.lookbook__dot::before {
	content: "";
	position: absolute;
	inset: -8px;
	border-radius: 50%;
	border: 2px solid rgb(255 255 255 / .7);
	animation: pulse 2s ease-out infinite;
}
@keyframes pulse { from { transform: scale(.7); opacity: 1; } to { transform: scale(1.4); opacity: 0; } }
.lookbook__pop {
	position: absolute;
	top: calc(100% + 10px);
	left: 50%;
	z-index: 5;
	display: flex;
	gap: 10px;
	align-items: center;
	width: 240px;
	padding: 10px;
	border-radius: var(--radius);
	background: var(--color-bg);
	color: var(--color-text);
	box-shadow: var(--shadow);
	transform: translateX(-50%);
}
.lookbook__thumb { width: 56px; height: 56px; border-radius: calc(var(--radius) * .6); object-fit: cover; }
.lookbook__name { display: block; font-size: 14px; font-weight: 600; line-height: 1.3; text-decoration: none; }
.lookbook__price { font-size: 14px; }
.lookbook__list { display: grid; gap: 14px; margin: 0; padding: 0; list-style: none; }
.lookbook__item {
	display: grid;
	grid-template-columns: 28px 84px 1fr;
	gap: 14px;
	align-items: center;
	padding-bottom: 14px;
	border-bottom: 1px solid var(--color-border);
}
.lookbook__num {
	display: grid;
	place-items: center;
	width: 28px;
	height: 28px;
	border-radius: 50%;
	background: var(--color-brand);
	color: var(--color-brand-contrast);
	font-size: 13px;
	font-weight: 700;
}
.lookbook__item-img img { display: block; width: 84px; height: 100px; object-fit: cover; border-radius: calc(var(--radius) * .7); }
.lookbook__item-body { display: grid; gap: 6px; justify-items: start; }

/* ---------- Spotlight ---------- */
.spotlight { display: grid; gap: clamp(24px, 5vw, 64px); align-items: center; }
@media (min-width: 900px) {
	.spotlight { grid-template-columns: 1fr 1fr; }
	.spotlight--image-right .spotlight__media { order: 2; }
}
.spotlight__media { position: relative; display: block; overflow: hidden; border-radius: var(--radius); background: var(--color-surface); }
.spotlight__img { display: block; width: 100%; aspect-ratio: 4 / 5; object-fit: cover; transition: transform .8s var(--ease); }
.spotlight__badge { position: absolute; top: 16px; left: 16px; }
.spotlight__body { display: grid; gap: 12px; justify-items: start; }
.spotlight__title { margin: 0; font-size: calc(clamp(28px, 3.6vw, 44px) * var(--heading-scale, 1)); }
.spotlight__title a { text-decoration: none; }
.spotlight__price { font-size: 24px; }
.spotlight__text { margin: 0; color: var(--color-muted); }
.spotlight__actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 4px; }
.spotlight .story__points { margin: 4px 0; }

/* ---------- UGC gallery ---------- */
.ugc-grid {
	display: grid;
	grid-template-columns: repeat(var(--cols, 6), minmax(0, 1fr));
	gap: 8px;
	margin: 0;
	padding: 0;
	list-style: none;
}
.ugc-grid__item { position: relative; display: block; overflow: hidden; aspect-ratio: 1; border-radius: calc(var(--radius) * .6); background: var(--color-surface); }
.ugc-grid__item img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s var(--ease); }
.ugc-grid__hover {
	position: absolute;
	inset: 0;
	display: grid;
	place-items: center;
	background: rgb(0 0 0 / .35);
	color: #fff;
	opacity: 0;
	transition: opacity .25s;
}
.ugc-grid__item:hover .ugc-grid__hover,
.ugc-grid__item:focus-visible .ugc-grid__hover { opacity: 1; }
@media (max-width: 767px) { .ugc-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 4px; } }

/* ---------- Before / after ---------- */
.compare-layout { display: grid; gap: clamp(24px, 5vw, 64px); align-items: center; }
@media (min-width: 900px) { .compare-layout:not(.compare-layout--solo) { grid-template-columns: 1.2fr 1fr; } }
.compare { position: relative; overflow: hidden; border-radius: var(--radius); background: var(--color-surface); user-select: none; }
.compare__img { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.compare__before { position: absolute; inset: 0; clip-path: inset(0 calc(100% - var(--pos)) 0 0); }
.compare__label {
	position: absolute;
	top: 14px;
	padding: 4px 10px;
	border-radius: 999px;
	background: rgb(0 0 0 / .55);
	color: #fff;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: .06em;
	text-transform: uppercase;
	pointer-events: none;
}
.compare__label--before { left: 14px; }
.compare__label--after { right: 14px; }
.compare__handle {
	position: absolute;
	top: 0;
	bottom: 0;
	left: var(--pos);
	display: flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	margin-left: -22px;
	pointer-events: none;
}
.compare__handle::before { content: ""; position: absolute; top: 0; bottom: 0; left: 50%; width: 2px; background: #fff; transform: translateX(-50%); }
.compare__handle .icon { position: relative; width: 22px; height: 30px; color: var(--color-text); background: #fff; }
.compare__handle .icon:first-child { border-radius: 999px 0 0 999px; padding-left: 4px; }
.compare__handle .icon:last-child { border-radius: 0 999px 999px 0; padding-right: 4px; }
.compare__range { position: absolute; inset: 0; z-index: 2; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: ew-resize; }
.compare:focus-within { outline: 2px solid var(--color-brand); outline-offset: 3px; }

/* ---------- Steps ---------- */
.steps {
	display: grid;
	grid-template-columns: repeat(min(var(--count, 3), 4), minmax(0, 1fr));
	gap: 28px;
	margin: 0;
	padding: 0;
	list-style: none;
}
.step { position: relative; display: grid; justify-items: center; gap: 8px; text-align: center; }
.step__mark {
	display: grid;
	place-items: center;
	width: 64px;
	height: 64px;
	margin-bottom: 6px;
	border-radius: 50%;
	background: var(--color-surface);
	color: var(--color-brand);
	font-family: var(--font-heading);
	font-size: 24px;
	font-weight: var(--heading-weight);
}
.section--bg-surface .step__mark { background: var(--color-bg); }
.steps--images .step__mark { width: 100%; height: auto; border-radius: var(--radius); overflow: hidden; }
.step__img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.step__title { margin: 0; font-size: 19px; }
.step__text { margin: 0; color: var(--color-muted); font-size: 15px; }
/* Dashed connector between numbered steps on wide screens. */
@media (min-width: 900px) {
	.steps--numbers .step:not(:last-child)::after,
	.steps--icons .step:not(:last-child)::after {
		content: "";
		position: absolute;
		top: 32px;
		left: calc(50% + 44px);
		right: calc(-50% + 44px);
		border-top: 2px dashed var(--color-border);
	}
}
@media (max-width: 767px) { .steps { grid-template-columns: 1fr; gap: 24px; } }

/* ---------- Feature cards ---------- */
.feature-cards {
	display: grid;
	grid-template-columns: repeat(var(--cols, 4), minmax(0, 1fr));
	gap: 24px 16px;
	margin: 0;
	padding: 0;
	list-style: none;
}
.feature-card { display: grid; gap: 8px; align-content: start; height: 100%; text-decoration: none; color: inherit; }
.feature-cards--boxed .feature-card { padding: 16px; border: 1px solid var(--color-border); border-radius: var(--radius); background: var(--color-bg); }
.feature-card__media { display: block; overflow: hidden; aspect-ratio: var(--ratio, 1 / 1); border-radius: var(--radius); background: var(--color-surface); }
.feature-cards--circle .feature-card { justify-items: center; text-align: center; }
.feature-cards--circle .feature-card__media { width: min(180px, 100%); border-radius: 50%; }
.feature-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s var(--ease); }
.feature-card__title { margin-top: 4px; font-family: var(--font-heading); font-size: 19px; font-weight: var(--heading-weight); line-height: 1.25; }
.feature-card__text { font-size: 15px; color: var(--color-muted); }
@media (max-width: 1024px) { .feature-cards { grid-template-columns: repeat(min(var(--cols, 4), 3), minmax(0, 1fr)); } }
@media (max-width: 767px) { .feature-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px 12px; } }

/* ---------- Text marquee ---------- */
.text-marquee { overflow: hidden; padding-block: 8px; }
.text-marquee__track { display: flex; width: max-content; animation: marquee var(--marquee-speed, 30s) linear infinite; }
.text-marquee--reverse .text-marquee__track { animation-direction: reverse; }
.text-marquee:hover .text-marquee__track { animation-play-state: paused; }
.text-marquee__list { display: flex; align-items: center; margin: 0; padding: 0; list-style: none; }
.text-marquee__list li { padding: 0 .5em; white-space: nowrap; font-family: var(--font-heading); font-weight: var(--heading-weight); line-height: 1.1; text-transform: var(--heading-transform, none); }
.text-marquee--normal .text-marquee__list li { font-size: clamp(18px, 2vw, 24px); }
.text-marquee--large .text-marquee__list li { font-size: clamp(28px, 4.5vw, 56px); }
.text-marquee--huge .text-marquee__list li { font-size: clamp(44px, 8vw, 110px); }
.text-marquee__sep { opacity: .45; }
.text-marquee--outline .text-marquee__list li:not(.text-marquee__sep) { color: transparent; -webkit-text-stroke: 1.2px currentColor; }

/* ---------- Rich text ---------- */
.richtext { margin-inline: auto; }
.richtext--center { text-align: center; }
.richtext .section__title { margin-bottom: 8px; }
.richtext__body { color: var(--color-muted); font-size: 16px; line-height: 1.75; }
.section--bg-brand .richtext__body,
.section--bg-dark .richtext__body,
.section--text-light .richtext__body { color: inherit; opacity: .85; }
.richtext__body a { color: var(--color-brand); }
.richtext__body.is-collapsed {
	max-height: 9.5em;
	overflow: hidden;
	-webkit-mask-image: linear-gradient(#000 60%, transparent);
	mask-image: linear-gradient(#000 60%, transparent);
}
.richtext__more { margin-top: 8px; padding: 0; border: 0; background: none; color: var(--color-brand); font-weight: 600; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }

/* ---------- Newsletter section ---------- */
.news-section { display: grid; gap: 32px; align-items: center; }
.news-section:not(.has-image) { max-width: 640px; margin: 0 auto; text-align: center; }
@media (min-width: 900px) { .news-section.has-image { grid-template-columns: 1fr 1fr; gap: 56px; } }
.news-section__media img { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: var(--radius); }
.news-section__body .section__subtitle { margin: 6px 0 18px; max-width: none; }
.news-section__form .newsletter-form input[type="email"] { border-color: var(--color-border); }
.news-section__note { margin: 12px 0 0; font-size: 13px; color: var(--color-muted); }

/* ---------- Stores ---------- */
.store-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 20px; margin: 0; padding: 0; list-style: none; }
.store-card { overflow: hidden; border: 1px solid var(--color-border); border-radius: var(--radius); background: var(--color-bg); color: var(--color-text); }
.store-card__img { display: block; width: 100%; aspect-ratio: 16 / 10; object-fit: cover; }
.store-card__body { display: grid; gap: 10px; padding: 20px; }
.store-card__name { margin: 0; font-size: 20px; }
.store-card__line { display: flex; gap: 10px; margin: 0; font-size: 15px; color: var(--color-muted); }
.store-card__line .icon { margin-top: 2px; color: var(--color-brand); }
.store-card__actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 4px; }

@media (prefers-reduced-motion: reduce) {
	.text-marquee__track { animation: none; flex-wrap: wrap; width: auto; }
	.text-marquee__list + .text-marquee__list { display: none; }
	.lookbook__dot::before { animation: none; }
}

/* ---------- Focus point and phone videos (v1.1.1) ---------- */
.hero__img,
.hero__video,
.media-banner__img,
.ecom-video--file,
.ecom-video__poster { object-position: var(--focus, 50% 50%); }

.hero__slide .hero__video--mobile { display: none; }
@media (max-width: 767px) {
	.hero__slide.has-phone-video .hero__video--desktop { display: none; }
	.hero__slide.has-phone-video .hero__video--mobile { display: block; }
}

/* Real footage is busier than still art: a deeper shade keeps white headlines readable. */
.hero__slide--light.has-video::before { background: linear-gradient(90deg, rgb(0 0 0 / .62), rgb(0 0 0 / .18) 70%); }
.hero__slide--light.has-video.hero__slide--right::before { background: linear-gradient(270deg, rgb(0 0 0 / .62), rgb(0 0 0 / .18) 70%); }
.hero__slide--light.has-video.hero__slide--center::before { background: rgb(0 0 0 / .4); }
@media (max-width: 767px) {
	.hero__slide--light.has-video::before,
	.hero__slide--light.has-video.hero__slide--right::before { background: linear-gradient(0deg, rgb(0 0 0 / .72), rgb(0 0 0 / .1) 70%); }
}

/* A short reels row (nothing to scroll) sits in the middle instead of hugging the left edge. */
.section--reels .rail:not(.is-scrollable) .reels { justify-content: center; }

/* =========================================================================
   Mobile layout fixes
   ========================================================================= */
@media (max-width: 767px) {
	/* Odd tile counts: the last tile takes the full row instead of leaving a hole. */
	.promo-tiles > li:last-child:nth-child(odd) { grid-column: 1 / -1; }
	.promo-tiles > li:last-child:nth-child(odd) .promo-tile__media { aspect-ratio: 16 / 9; }

	/* Headings line up on the left like every other section on a phone. */
	.section__head--center { justify-content: flex-start; text-align: left; }
	.section__head--center .section__subtitle { margin-inline: 0; }

	/* Icon and number steps: compact rows (mark left, text right) instead of a tall stack. */
	.steps--numbers,
	.steps--icons { gap: 14px; }
	.steps--numbers .step,
	.steps--icons .step {
		grid-template-columns: 48px 1fr;
		justify-items: start;
		align-items: center;
		column-gap: 14px;
		row-gap: 2px;
		text-align: left;
	}
	.steps--numbers .step__mark,
	.steps--icons .step__mark { grid-row: span 2; width: 48px; height: 48px; margin: 0; font-size: 19px; }
	.steps--numbers .step__title,
	.steps--icons .step__title { font-size: 17px; }
	.steps--numbers .step__text,
	.steps--icons .step__text { font-size: 14px; }
}

/* Main banner: "Darken the picture" per slide. None suits designed banners that carry their own text. */
.hero__slide--shade-none::before { display: none !important; }
.hero__slide--shade-light::before { opacity: .45; }
.hero__slide.hero__slide--shade-strong::before { content: ""; position: absolute; inset: 0; z-index: 1; display: block; background: rgb(0 0 0 / .5) !important; }
/* Picture-only slide: the whole banner is the link. */
.hero__link-all { position: absolute; inset: 0; z-index: 3; }
.hero__slide.is-active .hero__link-all:focus-visible { outline: 3px solid #fff; outline-offset: -6px; }

/* Main banner "Fit the whole picture": the banner takes the picture's own shape, nothing is cropped. */
.hero--fit .hero__slides { height: auto; aspect-ratio: var(--hero-ratio, 16 / 6); }
.hero--fit .hero__img { object-fit: cover; }
@media (max-width: 767px) {
	.hero--fit .hero__slides { aspect-ratio: var(--hero-ratio-m, var(--hero-ratio, 16 / 6)); }
	.hero--fit .hero__slide { padding-bottom: 0; }
}

/* ---------- Offer circles in the category row ---------- */
.offer-circle { display: grid; place-items: center; padding: 10%; text-align: center; color: #fff; }
.offer-circle span { font-family: var(--font-heading); font-weight: 700; font-size: clamp(13px, 1.25vw, 17px); line-height: 1.1; text-transform: uppercase; letter-spacing: .02em; text-wrap: balance; }
.cat-tiles--stories .cat-tile__media.offer-circle { padding: 8px; }
.cat-tiles--stories .offer-circle span { font-size: 12px; }
/* Doubled class so the story ring's own background never paints over the offer colour. */
.cat-tile .cat-tile__media.offer-circle--brand { background: var(--color-brand); color: var(--color-brand-contrast); }
.cat-tile .cat-tile__media.offer-circle--accent { background: var(--color-accent); color: #fff; }
.cat-tile .cat-tile__media.offer-circle--sale { background: var(--color-sale); color: #fff; }
.cat-tile .cat-tile__media.offer-circle--gold { background: #E0B04F; color: #2a1a08; }
.cat-tile--offer .cat-tile__name { font-weight: 600; }

/* ---------- Shop by budget ---------- */
.budget-tiles { display: grid; grid-template-columns: repeat(min(var(--count, 4), 4), minmax(0, 1fr)); gap: 14px; margin: 0; padding: 0; list-style: none; }
.budget-tile { position: relative; display: grid; align-content: end; gap: 6px; min-height: 170px; padding: 20px; overflow: hidden; border-radius: var(--radius-card, 12px); color: #fff; text-decoration: none; isolation: isolate; transition: transform .2s var(--ease); }
.budget-tile:hover { transform: translateY(-3px); color: #fff; }
.budget-tile--0 { background: var(--color-brand); }
.budget-tile--1 { background: var(--color-accent); }
.budget-tile--2 { background: var(--color-sale); }
.budget-tile--3 { background: color-mix(in srgb, var(--color-brand) 70%, #000); }
.budget-tile::before { content: ""; position: absolute; right: -30px; top: -30px; z-index: -1; width: 130px; height: 130px; border-radius: 50%; background: rgb(255 255 255 / .14); }
.budget-tile__img { position: absolute; right: 10px; top: 10px; z-index: -1; width: 46%; height: auto; max-height: 70%; object-fit: contain; }
.budget-tile__label { font-family: var(--font-heading); font-size: clamp(22px, 2.2vw, 30px); font-weight: 700; line-height: 1.05; }
.budget-tile__cta { display: inline-flex; gap: 4px; align-items: center; font-size: 13px; font-weight: 600; opacity: .9; }
@media (max-width: 767px) {
	.budget-tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
	.budget-tile { min-height: 120px; padding: 14px; }
}
@media (prefers-reduced-motion: reduce) { .budget-tile { transition: none; } }

/* ---------- Coloured bands: a light brand tint and the accent colour ---------- */
/* The accent stays fresh when lightened; a dark brand colour turns grey. */
.section--bg-tint { background: color-mix(in srgb, var(--color-accent) 8%, var(--color-bg)); }
.section--bg-accent { background: var(--color-accent); color: #fff; }
.section--bg-accent .section__subtitle,
.section--bg-accent .section__link { color: inherit; opacity: .85; }
.section--bg-tint + .section--bg-tint { padding-top: 0; }
/* On a coloured band each product sits on its own white card, so prices and buttons keep their colours. */
:is(.section--bg-tint, .section--bg-brand, .section--bg-accent, .section--bg-dark) .product-card {
	padding: 8px 8px 12px;
	border-radius: calc(var(--radius) + 4px);
	background: var(--color-bg);
	color: var(--color-text);
}
:is(.section--bg-tint, .section--bg-brand, .section--bg-accent, .section--bg-dark) .product-card__body { padding-inline: 4px; }

/* ---------- Hero: short and wide on phones ---------- */
@media (max-width: 767px) {
	.hero--phone-wide .hero__slides { height: auto; aspect-ratio: var(--hero-ratio, 16 / 9); }
	.hero--phone-wide .hero__slide { align-items: center; padding-bottom: 0; }
	.hero--phone-wide .hero__slide.has-mobile .hero__img--desktop { display: block; }
	.hero--phone-wide .hero__slide.has-mobile .hero__img--mobile { display: none; }
	.hero--phone-wide .hero__inner,
	.hero--phone-wide .hero__slide--right .hero__inner { justify-content: flex-start; text-align: left; }
	.hero--phone-wide .hero__title { font-size: clamp(20px, 6.2vw, 28px); margin-bottom: 8px; }
	.hero--phone-wide .hero__text,
	.hero--phone-wide .hero__eyebrow { display: none; }
	.hero--phone-wide .hero__button { min-height: 36px; padding: 6px 16px; font-size: 13px; }
	.hero--phone-wide .hero__dots { bottom: 8px; }
}

/* ---------- Category banner + products ---------- */
.cat-feature { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(16px, 2.5vw, 32px); align-items: stretch; }
.cat-feature--right { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); }
.cat-feature--right .cat-feature__banner { order: 2; }
/* A poster: the panel above the picture takes the photo's own backdrop colour (--cb-bg), so offer,
   title, price and button sit on the photo's background like a designed banner. */
.cat-feature__banner {
	display: grid;
	grid-template-rows: auto 1fr;
	min-height: 360px;
	overflow: hidden;
	border-radius: calc(var(--radius) + 6px);
	background: var(--cb-bg, var(--color-surface));
	color: var(--cb-fg, var(--color-brand));
	text-decoration: none;
}
.cat-feature__head { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; padding: clamp(20px, 2.6vw, 32px) clamp(20px, 2.6vw, 32px) 4px; }
.cat-feature__offer { padding: 5px 12px; border-radius: 999px; background: var(--color-accent); color: #fff; font-size: 13px; font-weight: 700; letter-spacing: .01em; }
.cat-feature__text { font-family: var(--font-heading); font-size: clamp(30px, 3.4vw, 48px); line-height: 1.02; color: inherit; text-wrap: balance; }
.cat-feature__from { font-size: 15px; opacity: .85; }
.cat-feature__from strong { font-size: 1.15em; opacity: 1; }
.cat-feature__button { margin-top: 6px; }
.cat-feature__media { position: relative; min-height: 220px; overflow: hidden; }
.cat-feature__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center 25%; transition: transform .6s var(--ease); }
.has-edge .cat-feature__img { object-position: center top; }
.cat-feature__banner:hover .cat-feature__img { transform: scale(1.03); }
.cat-feature__products { align-self: center; }
.cat-feature__products .products { margin: 0; }
@media (min-width: 768px) {
	/* Tall enough for the whole model photo even when the category has only a couple of products. */
	.cat-feature__banner { min-height: clamp(460px, 42vw, 600px); }
}
@media (max-width: 767px) {
	.cat-feature,
	.cat-feature--right { grid-template-columns: 1fr; }
	.cat-feature--right .cat-feature__banner { order: 0; }
	.cat-feature__banner { min-height: 0; }
	.cat-feature__media { min-height: 0; aspect-ratio: 1 / 1; }
	.cat-feature__head { padding: 20px 20px 2px; }
}
@media (prefers-reduced-motion: reduce) { .cat-feature__img { transition: none; } }

/* ---------- Course finder ---------- */
.finder { display: grid; gap: 18px; padding: 20px; border: 1px solid var(--color-border); border-radius: calc(var(--radius) + 6px); background: var(--color-bg); }
@media (min-width: 900px) { .finder { padding: 28px 32px; } }
.finder__tabs { display: flex; gap: 6px; padding: 4px; border-radius: 999px; background: var(--color-surface); overflow-x: auto; scrollbar-width: none; }
.finder__tab { flex: 1 0 auto; padding: 10px 18px; border-radius: 999px; color: var(--color-text); font-weight: 700; text-align: center; text-decoration: none; white-space: nowrap; }
.finder__tab.is-active { background: var(--color-brand); color: var(--color-brand-contrast); }
.finder__tab:focus-visible, .finder__chip:focus-visible { outline: 2px solid var(--color-brand); outline-offset: 2px; }
.finder__body { display: grid; gap: 18px; }
@media (min-width: 900px) { .finder__body { grid-template-columns: 1.4fr 1fr 1fr; align-items: start; } .finder__body.is-exam { grid-template-columns: 1fr; } }
.finder__step { display: grid; gap: 10px; }
.finder__label { display: flex; align-items: center; gap: 8px; font-weight: 700; }
.finder__label b { display: grid; place-items: center; width: 24px; height: 24px; border-radius: 50%; background: var(--color-accent); color: #111; font-size: 13px; }
.finder__chips { display: flex; flex-wrap: wrap; gap: 8px; }
.finder__chip { min-height: 40px; padding: 0 14px; border: 1px solid var(--color-border); border-radius: 999px; background: var(--color-bg); color: var(--color-text); font: inherit; font-size: 14px; font-weight: 600; cursor: pointer; }
.finder__chip.is-active { border-color: var(--color-brand); background: var(--color-brand); color: var(--color-brand-contrast); }
.finder__chips--sem .finder__chip { min-width: 44px; padding: 0 10px; }
.finder__select { width: 100%; min-height: 44px; padding: 0 12px; border: 1px solid var(--color-border); border-radius: var(--radius); background: var(--color-bg); font: inherit; font-size: 15px; }
.finder__foot { display: flex; }
.finder__go { width: 100%; justify-content: center; }
@media (min-width: 900px) { .finder__foot { justify-content: flex-end; } .finder__go { width: auto; min-width: 260px; } }

/* ---------- Exam tickets ---------- */
.exam-tickets { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(220px, 1fr); gap: 14px; margin: 0; padding: 4px 2px 12px; list-style: none; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: thin; }
@media (min-width: 1100px) { .exam-tickets { grid-auto-flow: row; grid-template-columns: repeat(4, 1fr); overflow: visible; } }
.exam-ticket { --tk: var(--color-brand); --tk-text: #fff; position: relative; scroll-snap-align: start; border-radius: calc(var(--radius) + 4px); background: var(--tk); color: var(--tk-text); }
.exam-ticket--accent { --tk: var(--color-accent); --tk-text: #111; }
.exam-ticket--teal { --tk: #0F766E; }
.exam-ticket--orange { --tk: #C2410C; }
/* Admit-card notches: two circles in the page colour on the dashed line. */
.exam-ticket::before, .exam-ticket::after { content: ""; position: absolute; top: calc(100% - 58px); width: 18px; height: 18px; border-radius: 50%; background: var(--section-page-bg, var(--color-bg)); }
.exam-ticket::before { left: -9px; }
.exam-ticket::after { right: -9px; }
.exam-ticket a { display: grid; gap: 6px; min-height: 180px; padding: 20px 20px 0; color: inherit; text-decoration: none; }
.exam-ticket a:focus-visible { outline: 3px solid var(--color-text); outline-offset: 3px; border-radius: inherit; }
.exam-ticket__name { font-size: 1.6rem; font-weight: 800; letter-spacing: -.01em; }
.exam-ticket__desc { font-size: 14px; opacity: .9; }
.exam-ticket__foot { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-top: auto; padding: 14px 0 16px; border-top: 2px dashed color-mix(in srgb, currentColor 40%, transparent); font-size: 14px; font-weight: 600; }
.exam-ticket__free { padding: 3px 10px; border-radius: 999px; background: #fff; color: #111; font-size: 12px; }
.exam-ticket--accent .exam-ticket__free { background: #111; color: #fff; }

/* ---------- Universities by state ---------- */
.uni-states { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 14px; margin: 0; padding: 0; list-style: none; }
.uni-state { padding: 16px 18px; border: 1px solid var(--color-border); border-radius: var(--radius); background: var(--color-bg); }
.uni-state__name { margin: 0 0 10px; font-size: 1rem; }
.uni-state__list { display: flex; flex-wrap: wrap; gap: 6px; margin: 0; padding: 0; list-style: none; }
.uni-state__list a { display: inline-block; padding: 5px 10px; border-radius: 999px; background: var(--color-surface); color: var(--color-text); font-size: 13px; font-weight: 600; text-decoration: none; }
.uni-state__list a:hover { background: var(--color-brand); color: var(--color-brand-contrast); }
.uni-states__more { margin-top: 14px; }
.uni-states__more summary { list-style: none; width: max-content; margin: 0 auto 14px; cursor: pointer; }
.uni-states__more summary::-webkit-details-marker { display: none; }
.uni-states__more[open] summary { display: none; }

/* Hero as a banner grid on computers: all designed banners visible, two per row (phones keep the slider). */
@media (min-width: 1024px) {
	.hero--grid { background: none; }
	.hero--grid .hero__slides { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; max-width: var(--container, 1280px); height: auto; margin: 16px auto 0; padding-inline: var(--gutter, 24px); aspect-ratio: auto; }
	.hero--grid .hero__slide { position: relative; inset: auto; aspect-ratio: var(--hero-ratio, 3 / 2); border-radius: calc(var(--radius) + 6px); overflow: hidden; opacity: 1; visibility: visible; }
	.hero--grid .hero__nav, .hero--grid .hero__dots { display: none; }
}

/* ---------- Mock test hub ---------- */
.section--test-hub { padding: 0; }
.test-hub__band { padding: 40px 0 120px; background: var(--color-brand); color: var(--color-brand-contrast); }
.test-hub__grid { display: grid; gap: 32px; align-items: center; }
@media (min-width: 960px) { .test-hub__grid { grid-template-columns: 1.05fr 1fr; gap: 56px; } .test-hub__band { padding: 64px 0 140px; } }
.test-hub__badge { display: inline-block; margin-bottom: 14px; padding: 5px 12px; border-radius: 999px; background: var(--color-accent); color: #111; font-size: 13px; font-weight: 700; }
.test-hub__title { margin: 0 0 12px; color: inherit; font-size: clamp(2rem, 4.2vw, 3.2rem); line-height: 1.05; letter-spacing: -.02em; }
.test-hub__text { max-width: 46ch; margin: 0 0 22px; font-size: 1.05rem; opacity: .9; }
.test-hub__stats { display: flex; gap: 28px; margin: 0 0 26px; }
.test-hub__stats div { display: flex; flex-direction: column-reverse; }
.test-hub__stats dd { margin: 0; font-size: 2rem; font-weight: 800; line-height: 1; font-variant-numeric: tabular-nums; }
.test-hub__stats dt { margin-top: 4px; font-size: 14px; opacity: .8; }
.test-hub__actions { display: flex; flex-wrap: wrap; gap: 10px; }
.test-hub__go { background: var(--color-accent); border-color: var(--color-accent); color: #111; }
.test-hub__go:hover { background: #fff; border-color: #fff; color: #111; }
.test-hub__all { border-color: rgb(255 255 255 / .6); color: #fff; background: transparent; }
.test-hub__all:hover { background: #fff; color: var(--color-brand); }

/* The small CBT screen: drawn in HTML so it stays sharp and matches the real test screen. */
.cbt-mini { position: relative; max-width: 520px; margin-inline: auto; border-radius: 14px; background: #F8FAFC; color: #0F172A; box-shadow: 0 24px 48px rgb(0 0 0 / .25); overflow: visible; }
.cbt-mini__bar { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 10px 14px; border-radius: 14px 14px 0 0; background: #13255C; color: #fff; font-size: 13px; }
.cbt-mini__bar b { padding: 2px 8px; border-radius: 6px; background: #fff; color: #0F172A; font-variant-numeric: tabular-nums; }
.cbt-mini__body { display: grid; grid-template-columns: 1fr 120px; gap: 14px; padding: 16px; }
.cbt-mini__q p { margin: 0 0 6px; font-size: 12px; color: #475569; }
.cbt-mini__q strong { display: block; margin-bottom: 10px; font-size: 14px; line-height: 1.35; }
.cbt-mini__opt { display: block; margin-bottom: 6px; padding: 7px 10px; border: 1px solid #CBD5E1; border-radius: 8px; background: #fff; font-size: 13px; }
.cbt-mini__opt.is-picked { border-color: #1F3A8A; background: #EEF2FB; font-weight: 600; }
.cbt-mini__palette { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; align-content: start; }
.cbt-mini__palette i { display: grid; place-items: center; height: 26px; border-radius: 5px; background: #E5E7EB; font-style: normal; font-size: 11px; font-weight: 700; }
.cbt-mini__palette .is-a { background: #16A34A; color: #fff; border-radius: 50% 50% 5px 5px; }
.cbt-mini__palette .is-u { background: #DC2626; color: #fff; border-radius: 5px 5px 50% 50%; }
.cbt-mini__palette .is-m { background: #7C3AED; color: #fff; border-radius: 50%; }
.cbt-mini__palette .is-c { outline: 2px solid #FFC83D; outline-offset: 1px; }
.cbt-mini__score { position: absolute; right: -10px; bottom: -22px; display: grid; padding: 10px 14px; border-radius: 12px; background: var(--color-accent); color: #111; box-shadow: 0 10px 24px rgb(0 0 0 / .2); }
.cbt-mini__score b { font-size: 1.5rem; line-height: 1; }
.cbt-mini__score span { font-size: 12px; font-weight: 600; }
@media (max-width: 520px) { .cbt-mini__body { grid-template-columns: 1fr 92px; } .cbt-mini__score { right: 8px; } }

/* Lists overlap the band like a card. */
.test-hub__lists { position: relative; margin-top: -84px; padding: 18px; border: 1px solid var(--color-border); border-radius: calc(var(--radius) + 6px); background: var(--color-bg); box-shadow: 0 12px 32px rgb(15 23 42 / .08); }
@media (min-width: 960px) { .test-hub__lists { margin-top: -100px; padding: 24px; } }
.section--test-hub { margin-bottom: 40px; }
.test-hub__tabs { display: flex; gap: 6px; margin-bottom: 16px; padding: 4px; border-radius: 999px; background: var(--color-surface); overflow-x: auto; scrollbar-width: none; }
.test-hub__tabs button { flex: 1 0 auto; padding: 9px 16px; border: 0; border-radius: 999px; background: none; color: var(--color-text); font: inherit; font-weight: 700; white-space: nowrap; cursor: pointer; }
.test-hub__tabs button span { margin-left: 4px; font-weight: 500; opacity: .7; }
.test-hub__tabs button.is-active { background: var(--color-brand); color: var(--color-brand-contrast); }
.test-hub__tabs button:focus-visible { outline: 2px solid var(--color-brand); outline-offset: 2px; }
.test-hub__row { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(240px, 1fr); gap: 12px; overflow-x: auto; padding-bottom: 6px; scroll-snap-type: x mandatory; }
.test-hub__row > * { scroll-snap-align: start; }
@media (min-width: 1100px) { .test-hub__row { grid-auto-flow: row; grid-template-columns: repeat(3, 1fr); overflow: visible; } }
.test-hub__more { display: inline-block; margin-top: 12px; font-weight: 700; color: var(--color-brand); }
.test-hub__invite { display: grid; gap: 4px; margin-top: 14px; padding: 16px 18px; border-radius: calc(var(--radius) + 4px); background: var(--color-accent); color: #111; text-decoration: none; }
.test-hub__invite strong { font-size: 1.1rem; }
.test-hub__invite span { font-size: 14px; }
.test-hub__invite:hover { background: #FFD666; }
