/*
 * Single product.
 *
 * Opens on the light wash, as every page beneath a section landing does, with
 * the photo and the buying facts side by side. Below that the page is
 * reference material, so it stays plain: copy, then the spec tables.
 */

.product {
	--sk-product-rule: color-mix(in srgb, var(--sk-gray) 26%, transparent);
}

.product-section-title {
	margin: 0 0 1.5rem;
	color: var(--sk-black);
	font-size: clamp(1.375rem, 1.1rem + 1vw, 2rem);
}

/* Top section */

.product-hero {
	padding-block: clamp(1.25rem, 2.85vw, 2.25rem) clamp(2.5rem, 5vw, 4.5rem);
	background-color: var(--sk-gray-warm);
	background-image: var(--sk-page-header-light);

	.breadcrumbs {
		margin-block-end: clamp(1.5rem, 3vw, 2.5rem);
	}
}

.product-hero__grid {
	display: grid;
	gap: clamp(2rem, 4vw, 4rem);
	align-items: start;

	@media (min-width: 56rem) {
		grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
	}
}

/* Gallery */

.product-gallery__stage {
	display: grid;
	place-items: center;
	aspect-ratio: 1;
	padding: clamp(1.5rem, 4vw, 3rem);
	border-block-start: 5px solid var(--sk-accent);
	background: var(--sk-white);
	cursor: zoom-in;
}

.product-gallery__image {
	inline-size: 100%;
	block-size: 100%;
	object-fit: contain;
}

.product-gallery__stage--empty {
	gap: 0.75rem;
	align-content: center;
	background: var(--sk-accent-25);
	cursor: default;

	/* Without a photo there is nothing to see, so it gives up the phone's first screen. */
	@media (max-width: 55.99rem) {
		aspect-ratio: 4 / 3;
	}
}

.product-gallery__placeholder {
	color: var(--sk-accent-dark);
	font-family: var(--sk-font-display);
	font-size: clamp(1.75rem, 1.2rem + 2vw, 3rem);
	font-weight: 700;
	text-align: center;
	overflow-wrap: anywhere;
}

.product-gallery__note {
	color: var(--sk-accent-dark);
	font-family: var(--sk-font-display);
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
}

.product-gallery__thumbs {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(4.5rem, 1fr));
	gap: 0.625rem;
	margin: 0.75rem 0 0;
	padding: 0;
}

.product-gallery__thumb {
	display: grid;
	place-items: center;
	aspect-ratio: 1;
	padding: 0.375rem;
	border: 2px solid transparent;
	background: var(--sk-white);
	transition: border-color var(--sk-transition);

	&:hover,
	&:focus-visible,
	&[aria-current="true"] {
		border-color: var(--sk-accent);
	}
}

.product-gallery__thumb-image {
	inline-size: 100%;
	block-size: 100%;
	object-fit: contain;
}

/* Summary */

.product-summary {
	@media (min-width: 56rem) {
		padding-block-start: clamp(0.5rem, 2vw, 2rem);
	}
}

.product-summary__title {
	margin: 0;
	color: var(--sk-black);
	font-size: clamp(2.25rem, 1.5rem + 3vw, 4rem);
	letter-spacing: 0;
	overflow-wrap: anywhere;
}

.product-summary__subtitle {
	max-inline-size: 36ch;
	margin: 1rem 0 0;
	color: var(--sk-gray-copy);
	font-size: clamp(1.0625rem, 1rem + 0.4vw, 1.3125rem);
	line-height: 1.45;
}

.product-summary__facts {
	display: grid;
	gap: 1rem;
	margin: clamp(1.5rem, 3vw, 2rem) 0 0;
	padding-block-start: clamp(1.25rem, 2.5vw, 1.75rem);
	border-block-start: 1px solid var(--sk-product-rule);

	dt {
		margin-block-end: 0.375rem;
		color: var(--sk-gray);
		font-family: var(--sk-font-display);
		font-size: 0.6875rem;
		font-weight: 700;
		letter-spacing: 0.14em;
		text-transform: uppercase;
	}

	abbr {
		text-decoration: none;
	}

	dd {
		margin: 0;
		color: var(--sk-black);
		font-size: 1rem;
		font-variant-numeric: tabular-nums;
	}
}

.product-chips {
	display: flex;
	flex-wrap: wrap;
	gap: 0.375rem;
	margin: 0;
	padding: 0;
}

.product-chips__item {
	padding: 0.375rem 0.625rem;
	border: 2px solid var(--sk-accent);
	color: var(--sk-accent-dark);
	font-family: var(--sk-font-display);
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	line-height: 1;
	text-transform: uppercase;
}

.product-summary__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;
	margin-block-start: clamp(1.75rem, 3vw, 2.25rem);

	.button--outline {
		color: var(--sk-black);

		&:hover {
			border-color: var(--sk-accent);
		}
	}
}

/* Overview */

.product-overview__grid {
	display: grid;
	gap: clamp(2rem, 4vw, 4rem);

	.entry__content {
		max-inline-size: 72ch;
		font-size: clamp(1rem, 0.95rem + 0.25vw, 1.0625rem);
	}

	@media (min-width: 56rem) {
		&.has-features {
			grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr);
		}
	}
}

.product-features {
	align-self: start;
	padding: clamp(1.5rem, 3vw, 2rem);
	border-inline-start: 4px solid var(--sk-accent);
	background: var(--sk-gray-light);
}

.product-features__title {
	margin: 0 0 1rem;
	color: var(--sk-black);
	font-size: 0.875rem;
	letter-spacing: 0.12em;
}

.product-features__list {
	display: grid;
	gap: 0.625rem;
	margin: 0;
	padding: 0;
	color: var(--sk-gray-copy);
	font-size: 0.9375rem;
	line-height: 1.5;

	li {
		position: relative;
		padding-inline-start: 1.125rem;

		&::before {
			position: absolute;
			inset-block-start: 0.6em;
			inset-inline-start: 0;
			inline-size: 0.5rem;
			block-size: 2px;
			background: var(--sk-accent);
			content: "";
		}
	}
}

/* Specifications */

.product-specs {
	border-block-start: 1px solid var(--sk-product-rule);
}

.product-overview + .product-specs {
	padding-block-start: clamp(3rem, 6vw, 6rem);
}

.product-specs__grid {
	display: grid;
	gap: clamp(2rem, 4vw, 3.5rem);
	align-items: start;

	@media (min-width: 56rem) {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

.spec-table {
	inline-size: 100%;
	border-collapse: collapse;
	font-size: 0.9375rem;

	th,
	td {
		padding: 0.875rem 0;
		border-block-end: 1px solid var(--sk-product-rule);
		text-align: start;
		vertical-align: top;
	}

	th {
		inline-size: 42%;
		padding-inline-end: 1.5rem;
		color: var(--sk-gray);
		font-family: var(--sk-font-display);
		font-size: 0.75rem;
		font-weight: 700;
		letter-spacing: 0.1em;
		line-height: 1.6;
		text-transform: uppercase;
	}

	td {
		color: var(--sk-black);
		line-height: 1.5;
	}
}

.spec-table__caption {
	padding-block-end: 0.75rem;
	border-block-end: 2px solid var(--sk-accent);
	color: var(--sk-black);
	font-family: var(--sk-font-display);
	font-size: 0.875rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-align: start;
	text-transform: uppercase;
}

.spec-table__line {
	display: block;

	& + & {
		margin-block-start: 0.25rem;
	}
}

/* Related accessories */

.product-related {
	background: var(--sk-gray-light);
}

.product-related__list {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 18rem), 1fr));
	gap: 0.75rem;
	margin: 0;
	padding: 0;
}

.product-related__item {
	display: flex;
	align-items: center;
	min-block-size: 3.5rem;
	padding: 0.875rem 1.125rem;
	border-inline-start: 4px solid var(--sk-accent-50);
	background: var(--sk-white);
	color: var(--sk-gray-copy);
	font-size: 0.9375rem;
	line-height: 1.4;

	&:has(a) {
		border-inline-start-color: var(--sk-accent);
	}
}

.product-related__link {
	color: var(--sk-black);
	font-weight: 700;
	text-decoration: none;

	&::after {
		margin-inline-start: 0.375rem;
		color: var(--sk-accent);
		content: "\2192";
	}

	&:hover,
	&:focus-visible {
		color: var(--sk-accent);
		text-decoration: none;
	}
}
