/**
 * Products page — hero, catalog, demonstrative CTAs and follow-up.
 */

/* -------------------------------------------------------------------------
 * Page
 * ------------------------------------------------------------------------- */

.products-page {
	min-width: 0;
}

.products-hero,
.products-notice,
.products-follow,
.products-group,
.products-card {
	min-width: 0;
}

/* -------------------------------------------------------------------------
 * Hero
 * ------------------------------------------------------------------------- */

.products-hero {
	padding-block: var(--space-3xl);
	background-color: var(--color-surface-muted);
}

.products-hero__grid {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: var(--space-xl);
	align-items: center;
}

.products-hero__content {
	min-width: 0;
}

.products-hero__eyebrow {
	margin: 0 0 var(--space-sm);
	color: var(--color-brand-primary);
	font-size: var(--wp--preset--font-size--sm, 0.875rem);
	font-weight: 600;
	letter-spacing: 0.08em;
	line-height: 1.4;
	text-transform: uppercase;
}

.products-hero__title {
	margin: 0 0 var(--space-md);
	color: var(--color-text);
	font-size: var(--wp--preset--font-size--3-xl, clamp(1.875rem, 1.6rem + 1.2vw, 2.5rem));
	font-weight: 700;
	line-height: 1.15;
	letter-spacing: -0.03em;
	overflow-wrap: break-word;
}

@media (min-width: 48.875rem) {
	.products-hero__title {
		font-size: var(--wp--preset--font-size--4-xl, clamp(2.5rem, 2rem + 2.5vw, 4rem));
	}
}

.products-hero__figure {
	margin: 0;
	min-width: 0;
}

.products-hero__image {
	display: block;
	width: 100%;
	height: clamp(15rem, 70vw, 24.375rem);
	object-fit: cover;
	background-color: var(--color-surface);
	border-radius: 12.5rem 12.5rem var(--radius-lg) var(--radius-lg);
}

.products-hero__caption {
	margin: var(--space-sm) 0 0;
	color: var(--color-text-muted);
	font-size: var(--wp--preset--font-size--sm, 0.875rem);
	line-height: 1.5;
	text-align: center;
	overflow-wrap: break-word;
}

/* -------------------------------------------------------------------------
 * Introduction
 * ------------------------------------------------------------------------- */

.products-hero__intro {
	margin: 0 0 var(--space-lg);
	max-width: 38rem;
}

.products-hero__intro-content,
.products-hero__intro-content > * {
	overflow-wrap: break-word;
}

.products-hero__intro-content > p {
	margin: 0;
	color: var(--color-text);
	font-size: 1rem;
	line-height: 1.6;
}

.products-hero__intro-content > p + p {
	margin-block-start: var(--space-md);
}

.products-hero__intro-content a {
	color: var(--color-link);
}

.products-hero__intro-content a:focus-visible {
	color: var(--color-brand-primary-dark);
	outline: 2px solid var(--color-focus);
	outline-offset: 3px;
}

.products-hero__intro-content a:active {
	color: var(--color-brand-primary-dark);
}

/* -------------------------------------------------------------------------
 * Notice
 * ------------------------------------------------------------------------- */

.products-hero__chip {
	display: inline-flex;
	align-items: center;
	gap: var(--space-xs);
	margin: 0;
	padding: var(--space-xs) var(--space-sm);
	color: var(--color-brand-primary);
	font-size: var(--wp--preset--font-size--sm, 0.875rem);
	font-weight: 600;
	line-height: 1.3;
	border: var(--border-width) solid var(--color-brand-primary);
	border-radius: var(--radius-pill);
}

.products-hero__chip-dot {
	flex: 0 0 auto;
	width: 0.5rem;
	height: 0.5rem;
	background-color: var(--color-brand-primary);
	border-radius: var(--radius-pill);
}

.products-notice {
	padding-block: 0 var(--space-lg);
	background-color: var(--color-surface-muted);
}

.products-notice:focus {
	outline: none;
}

.products-notice:target {
	outline: 2px solid var(--color-focus);
	outline-offset: 4px;
}

.products-notice__text {
	margin: 0 auto;
	max-width: 40rem;
	color: var(--color-text-muted);
	font-size: var(--wp--preset--font-size--sm, 0.875rem);
	line-height: 1.6;
	text-align: center;
	overflow-wrap: break-word;
}

/* -------------------------------------------------------------------------
 * Catalog follow-up (not a second newsletter form)
 * ------------------------------------------------------------------------- */

.products-follow {
	padding-block: var(--space-section);
	background-color: var(--color-surface);
	text-align: center;
}

.products-follow__inner {
	margin-inline: auto;
	max-width: 40rem;
}

.products-follow__eyebrow {
	margin: 0 0 var(--space-sm);
	color: var(--color-brand-primary);
	font-size: var(--wp--preset--font-size--sm, 0.875rem);
	font-weight: 600;
	letter-spacing: 0.08em;
	line-height: 1.4;
	text-transform: uppercase;
}

.products-follow__title {
	margin: 0 0 var(--space-md);
	color: var(--color-text);
	font-size: var(--wp--preset--font-size--3-xl, clamp(1.875rem, 1.6rem + 1.2vw, 2.5rem));
	font-weight: 600;
	line-height: 1.2;
	overflow-wrap: break-word;
}

.products-follow__text {
	margin: 0 auto;
	max-width: 36rem;
	color: var(--color-text-muted);
	font-size: 1rem;
	line-height: 1.6;
	overflow-wrap: break-word;
}

/* -------------------------------------------------------------------------
 * Groups
 * ------------------------------------------------------------------------- */

.products-group--digital,
.products-group--selected {
	padding-block: var(--space-section);
}

.products-group--digital {
	background-color: var(--color-surface);
}

.products-group--selected {
	background-color: var(--color-surface-muted);
}

.products-group__header {
	display: flex;
	flex-direction: column;
	gap: var(--space-sm);
	margin-block-end: var(--space-xl);
}

.products-group__eyebrow {
	margin: 0;
	color: var(--color-brand-primary);
	font-size: var(--wp--preset--font-size--sm, 0.875rem);
	font-weight: 600;
	letter-spacing: 0.08em;
	line-height: 1.4;
	text-transform: uppercase;
}

.products-group__title {
	margin: 0;
	color: var(--color-text);
	font-size: var(--wp--preset--font-size--3-xl, clamp(1.875rem, 1.6rem + 1.2vw, 2.5rem));
	font-weight: 600;
	line-height: 1.2;
	overflow-wrap: break-word;
}

.products-group__intro {
	margin: 0;
	max-width: 24rem;
	color: var(--color-text-muted);
	font-size: 1rem;
	line-height: 1.6;
	overflow-wrap: break-word;
}

/* -------------------------------------------------------------------------
 * Grid
 * ------------------------------------------------------------------------- */

.products-group__list {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: var(--space-lg);
	margin: 0;
	padding: 0;
	list-style: none;
}

.products-group__item {
	min-width: 0;
	height: 100%;
}

/* -------------------------------------------------------------------------
 * Card
 * ------------------------------------------------------------------------- */

.products-card {
	display: flex;
	flex-direction: column;
	height: 100%;
	background-color: var(--color-surface);
	border: var(--border-width) solid color-mix(in srgb, var(--color-text) 14%, transparent);
	border-radius: var(--radius-lg);
	cursor: default;
}

/* -------------------------------------------------------------------------
 * Media
 * ------------------------------------------------------------------------- */

.products-card__media {
	position: relative;
	overflow: hidden;
	aspect-ratio: 4 / 3;
	background-color: var(--color-surface-muted);
	border-radius: var(--radius-lg) var(--radius-lg) 0 0;
}

.products-card__image,
.products-card__placeholder {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.products-card__placeholder {
	background-image: linear-gradient(
		160deg,
		var(--color-surface-muted) 0%,
		color-mix(in srgb, var(--color-brand-primary) 18%, var(--color-surface-muted)) 100%
	);
}

.products-card__badge {
	position: absolute;
	top: var(--space-sm);
	inset-inline-start: var(--space-sm);
	z-index: 1;
	max-width: calc(100% - var(--space-lg));
	color: var(--color-brand-primary);
	text-transform: uppercase;
	letter-spacing: 0.06em;
}

/* -------------------------------------------------------------------------
 * Content
 * ------------------------------------------------------------------------- */

.products-card__body {
	display: flex;
	flex-direction: column;
	flex: 1 1 auto;
	min-width: 0;
	padding: var(--space-lg);
}

.products-card__title {
	margin: 0 0 var(--space-sm);
	color: var(--color-text);
	font-size: var(--wp--preset--font-size--xl, 1.25rem);
	font-weight: 600;
	line-height: 1.3;
	overflow-wrap: break-word;
}

.products-card__description {
	margin: 0 0 var(--space-lg);
	color: var(--color-text);
	font-size: 0.875rem;
	line-height: 1.6;
	overflow-wrap: break-word;
}

/* -------------------------------------------------------------------------
 * CTAs
 * ------------------------------------------------------------------------- */

.products-card__footer {
	margin-top: auto;
	min-width: 0;
}

.products-card__buy {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: var(--space-sm);
	padding-block-start: var(--space-md);
	border-block-start: var(--border-width) solid color-mix(in srgb, var(--color-text) 14%, transparent);
}

.products-card__buy:not(:has(.products-card__price)) {
	justify-content: flex-end;
}

.products-card__price {
	margin: 0;
	color: var(--color-brand-primary);
	font-size: 1.05rem;
	font-weight: 600;
	line-height: 1.4;
}

.products-card__cta {
	display: inline-flex;
	align-items: center;
	min-height: var(--control-height);
	padding-inline: var(--space-xs);
	touch-action: manipulation;
}

.products-card__cta:focus-visible {
	outline: 2px solid var(--color-focus);
	outline-offset: 3px;
}

.products-card__cta:active {
	color: var(--color-brand-primary-dark);
}

/* -------------------------------------------------------------------------
 * Feedback
 * ------------------------------------------------------------------------- */

.products-card__feedback {
	margin: var(--space-xs) 0 0;
	min-height: 1.2em;
	color: var(--color-brand-primary);
	font-size: var(--wp--preset--font-size--sm, 0.875rem);
	line-height: 1.4;
	overflow-wrap: break-word;
}

/* -------------------------------------------------------------------------
 * Interactions
 * ------------------------------------------------------------------------- */

@media (hover: hover) and (pointer: fine) {
	.products-hero__intro-content a:hover {
		color: var(--color-brand-primary-dark);
	}

	.products-card:hover,
	.products-card:focus-within {
		transform: translateY(-5px);
		box-shadow: var(--shadow-card);
	}

	.products-card:hover .products-card__image,
	.products-card:focus-within .products-card__image {
		transform: scale(1.025);
	}

	.products-card__cta:hover {
		color: var(--color-brand-primary-dark);
	}
}

.products-card:focus-within {
	box-shadow: var(--shadow-card);
}

/* -------------------------------------------------------------------------
 * Responsiveness
 * ------------------------------------------------------------------------- */

@media (min-width: 48.875rem) {
	.products-hero__grid {
		grid-template-columns: minmax(0, 1.04fr) minmax(0, 0.96fr);
		gap: var(--space-2xl);
	}

	.products-hero__image {
		height: clamp(22rem, 36vw, 31.25rem);
	}

	.products-group__header {
		flex-direction: row;
		flex-wrap: wrap;
		align-items: flex-end;
		justify-content: space-between;
		gap: var(--space-lg);
	}

	.products-group__heading {
		flex: 1 1 16rem;
		min-width: 0;
	}

	.products-group__intro {
		margin-inline-start: auto;
	}

	.products-group__list {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.products-group__item:last-child {
		grid-column: 1 / -1;
		max-width: 35rem;
		width: 100%;
		justify-self: center;
	}
}

@media (min-width: 64rem) {
	.products-group__list {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}

	.products-group__item:last-child {
		grid-column: auto;
		max-width: none;
		justify-self: stretch;
	}
}

/* -------------------------------------------------------------------------
 * Reduced motion
 * ------------------------------------------------------------------------- */

@media (prefers-reduced-motion: no-preference) {
	.products-hero__intro-content a,
	.products-card__cta {
		transition: color var(--transition-fast);
	}

	.products-card {
		transition: transform 250ms ease, box-shadow 250ms ease;
	}

	.products-card__image {
		transition: transform 350ms ease;
	}
}

@media (prefers-reduced-motion: reduce) {
	.products-hero,
	.products-hero__image,
	.products-hero__chip,
	.products-hero__intro-content a,
	.products-notice,
	.products-follow,
	.products-card,
	.products-card:hover,
	.products-card:focus-within,
	.products-card__image,
	.products-card:hover .products-card__image,
	.products-card:focus-within .products-card__image,
	.products-card__cta,
	.products-card__feedback {
		transition: none;
		transform: none;
		animation: none;
	}
}
