/* ==========================================================================
   Absolut Carpets - design system
   Warm architectural neutrals, oversized editorial type, image-led layouts.
   ========================================================================== */

@font-face {
	font-family: "Figtree";
	font-style: normal;
	font-weight: 300 900;
	font-display: swap;
	src: url("../fonts/figtree-latin.woff2") format("woff2");
}
@font-face {
	font-family: "Figtree";
	font-style: italic;
	font-weight: 300 900;
	font-display: swap;
	src: url("../fonts/figtree-latin-italic.woff2") format("woff2");
}

:root {
	--ink: #1b1a17;
	--ink-2: #3b3833;
	--muted: #6e6960;
	--faint: #9a948a;
	--line: #e5dfd6;
	--line-2: #d5cdc1;
	--paper: #ffffff;
	--sand: #f5f1eb;
	--stone: #ebe5dc;
	--taupe: #cfc4b5;
	--navy: #042d6b;
	--navy-2: #0a3d8a;
	--focus: #2f6fd6;

	--font: "Figtree", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;

	--container: 1360px;
	--narrow: 820px;
	--gutter: clamp(20px, 4.2vw, 56px);
	--section: 72px;
	--section-tight: 56px;
	--header-h: 72px;

	--ease: cubic-bezier(0.2, 0.7, 0.2, 1);
	--ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);

	--fs-display: clamp(2.5rem, 1.45rem + 4.2vw, 4.75rem);
	--fs-h1: clamp(2.5rem, 1.45rem + 4vw, 5rem);
	--fs-h2: clamp(2.125rem, 1.35rem + 2.8vw, 4rem);
	--fs-h3: clamp(1.375rem, 1.15rem + 0.7vw, 1.75rem);
	--fs-statement: clamp(1.75rem, 1.05rem + 2.5vw, 3.5rem);
	--fs-lead: clamp(1.125rem, 1.03rem + 0.35vw, 1.3125rem);
	--fs-body: 1.0625rem;
	--fs-small: 0.875rem;
	--fs-eyebrow: 0.78125rem;
}

@media (min-width: 768px) {
	:root {
		--section: 104px;
		--section-tight: 72px;
	}
}
@media (min-width: 1100px) {
	:root {
		--section: 144px;
		--section-tight: 96px;
		--header-h: 84px;
	}
}

/* Base ------------------------------------------------------------------- */

*,
*::before,
*::after {
	box-sizing: border-box;
}

html {
	-webkit-text-size-adjust: 100%;
	text-size-adjust: 100%;
	scroll-behavior: smooth;
	scroll-padding-top: calc(var(--header-h) + 16px);
}

body {
	margin: 0;
	font-family: var(--font);
	font-size: var(--fs-body);
	line-height: 1.7;
	color: var(--ink-2);
	background: var(--paper);
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	text-rendering: optimizeLegibility;
	overflow-x: clip;
}

body.is-locked {
	overflow: hidden;
}

img,
svg,
video,
iframe {
	display: block;
	max-width: 100%;
}

img {
	height: auto;
}

h1,
h2,
h3,
h4,
h5,
h6 {
	margin: 0;
	color: var(--ink);
	font-weight: 600;
	line-height: 1.1;
	letter-spacing: -0.02em;
	text-wrap: balance;
}

p {
	margin: 0 0 1.1em;
	text-wrap: pretty;
}

p:last-child {
	margin-bottom: 0;
}

a {
	color: inherit;
	text-decoration-thickness: 1px;
	text-underline-offset: 0.22em;
}

a:hover {
	color: var(--navy);
}

:focus-visible {
	outline: 2px solid var(--focus);
	outline-offset: 3px;
}

address {
	font-style: normal;
}

button,
input,
select,
textarea {
	font: inherit;
	color: inherit;
}

.screen-reader-text {
	position: absolute !important;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
	border: 0;
}

.skip-link {
	position: fixed;
	top: 12px;
	left: 12px;
	z-index: 1000;
	padding: 12px 18px;
	background: var(--ink);
	color: #fff;
	transform: translateY(-160%);
	transition: transform 0.2s;
}

.skip-link:focus {
	transform: none;
	color: #fff;
}

.container {
	width: 100%;
	max-width: calc(var(--container) + var(--gutter) * 2);
	margin-inline: auto;
	padding-inline: var(--gutter);
}

.container--narrow {
	max-width: calc(var(--narrow) + var(--gutter) * 2);
}

.icon {
	width: 1.25em;
	height: 1.25em;
	flex: none;
}

/* Type helpers ------------------------------------------------------------ */

.eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 0.75em;
	margin: 0 0 1.25rem;
	font-size: var(--fs-eyebrow);
	font-weight: 600;
	line-height: 1.3;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--muted);
}

.eyebrow::before {
	content: "";
	width: 28px;
	height: 1px;
	background: currentColor;
	opacity: 0.6;
}

.eyebrow--light {
	color: rgba(255, 255, 255, 0.82);
}

.lead {
	font-size: var(--fs-lead);
	line-height: 1.6;
	color: var(--ink);
}

.statement {
	max-width: 26ch;
	margin: 0 0 clamp(48px, 7vw, 104px);
	font-size: var(--fs-statement);
	font-weight: 400;
	line-height: 1.16;
	letter-spacing: -0.025em;
	color: var(--ink);
	text-wrap: balance;
}

.statement--light,
.statement--light p {
	color: #fff;
}

blockquote.statement {
	margin-inline: 0;
	max-width: 30ch;
}

/* Buttons ----------------------------------------------------------------- */

.btn {
	--btn-bg: var(--ink);
	--btn-fg: #fff;
	--btn-bd: var(--ink);
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.85rem;
	min-height: 52px;
	padding: 0.85rem 1.5rem;
	border: 1px solid var(--btn-bd);
	background: var(--btn-bg);
	color: var(--btn-fg);
	font-size: 0.9375rem;
	font-weight: 600;
	line-height: 1.2;
	letter-spacing: 0.01em;
	text-decoration: none;
	cursor: pointer;
	transition: background-color 0.35s var(--ease), color 0.35s var(--ease), border-color 0.35s var(--ease);
}

.btn:hover {
	--btn-bg: var(--navy);
	--btn-bd: var(--navy);
	color: var(--btn-fg);
}

.btn__arrow {
	width: 18px;
	height: 18px;
	transition: transform 0.45s var(--ease);
}

.btn__lead {
	width: 18px;
	height: 18px;
}

.btn:hover .btn__arrow {
	transform: translateX(5px);
}

.btn--light {
	--btn-bg: #fff;
	--btn-fg: var(--ink);
	--btn-bd: #fff;
}

.btn--light:hover {
	--btn-bg: var(--sand);
	--btn-bd: var(--sand);
	--btn-fg: var(--ink);
}

.btn--outline-light {
	--btn-bg: transparent;
	--btn-fg: #fff;
	--btn-bd: rgba(255, 255, 255, 0.55);
}

.btn--outline-light:hover {
	--btn-bg: #fff;
	--btn-fg: var(--ink);
	--btn-bd: #fff;
}

.btn--ghost {
	--btn-bg: transparent;
	--btn-fg: var(--ink);
	--btn-bd: var(--line-2);
}

.btn--ghost:hover {
	--btn-bg: var(--ink);
	--btn-fg: #fff;
	--btn-bd: var(--ink);
}

.btn--text {
	--btn-bg: transparent;
	--btn-bd: transparent;
	--btn-fg: var(--ink);
	min-height: 0;
	padding: 0.35rem 0;
	gap: 0.6rem;
}

.btn--text::after {
	content: "";
	position: absolute;
	left: 0;
	right: 28px;
	bottom: 0;
	height: 1px;
	background: currentColor;
	transform-origin: left;
	transition: transform 0.5s var(--ease);
}

.btn--text:hover {
	--btn-bg: transparent;
	--btn-bd: transparent;
	--btn-fg: var(--navy);
}

.btn--text:hover::after {
	transform: scaleX(0.6);
}

/* Header ------------------------------------------------------------------ */

.site-header {
	position: fixed;
	inset: 0 0 auto;
	z-index: 100;
	color: var(--ink);
	background: rgba(255, 255, 255, 0.97);
	border-bottom: 1px solid var(--line);
	transition: background-color 0.45s var(--ease), border-color 0.45s var(--ease), color 0.45s var(--ease), transform 0.45s var(--ease);
}

@supports (backdrop-filter: blur(12px)) {
	.site-header {
		background: rgba(255, 255, 255, 0.88);
		backdrop-filter: saturate(1.4) blur(14px);
	}
}

.site-header__bar {
	display: flex;
	align-items: center;
	gap: 24px;
	height: var(--header-h);
}

.brand {
	position: relative;
	display: block;
	flex: none;
	margin-right: auto;
}

.brand__logo {
	width: auto;
	transition: opacity 0.35s var(--ease);
}

.brand__logo--dark {
	height: 50px;
}

.brand__logo--light {
	position: absolute;
	left: 0;
	top: 50%;
	width: 200px;
	height: auto;
	transform: translateY(-50%);
	opacity: 0;
	pointer-events: none;
}

@media (min-width: 1100px) {
	.brand__logo--dark {
		height: 58px;
	}
	.brand__logo--light {
		width: 236px;
	}
}

/* Transparent state over dark heroes */
.has-dark-hero .site-header:not(.is-solid):not(:has(.has-mega.is-open)):not(:has(.has-mega:hover)) {
	background: transparent;
	border-color: transparent;
	backdrop-filter: none;
	color: #fff;
}

.has-dark-hero .site-header:not(.is-solid):not(:has(.has-mega.is-open)):not(:has(.has-mega:hover)) .brand__logo--dark {
	opacity: 0;
}

.has-dark-hero .site-header:not(.is-solid):not(:has(.has-mega.is-open)):not(:has(.has-mega:hover)) .brand__logo--light {
	opacity: 1;
}

.has-dark-hero .site-header:not(.is-solid):not(:has(.has-mega.is-open)):not(:has(.has-mega:hover)) .site-header__cta {
	--btn-bg: #fff;
	--btn-fg: var(--ink);
	--btn-bd: #fff;
}

.has-dark-hero .site-header::before {
	content: "";
	position: absolute;
	inset: 0 0 -40px;
	z-index: -1;
	background: linear-gradient(180deg, rgba(10, 9, 8, 0.45), rgba(10, 9, 8, 0));
	opacity: 1;
	transition: opacity 0.45s var(--ease);
	pointer-events: none;
}

.has-dark-hero .site-header.is-solid::before,
.has-dark-hero .site-header:has(.has-mega:hover)::before,
.has-dark-hero .site-header:has(.has-mega.is-open)::before,
body:not(.has-dark-hero) .site-header::before {
	opacity: 0;
}

.site-header.is-hidden {
	transform: translateY(-100%);
}

body:not(.has-dark-hero) .site-main {
	padding-top: var(--header-h);
}

/* Nav */
.nav {
	display: none;
}

@media (min-width: 1100px) {
	.nav {
		display: block;
	}
}

.nav__list {
	display: flex;
	align-items: center;
	gap: clamp(20px, 2.4vw, 40px);
	margin: 0;
	padding: 0;
	list-style: none;
}

.nav__item {
	display: flex;
	align-items: center;
	height: var(--header-h);
}

.nav__link {
	position: relative;
	padding: 8px 0;
	font-size: 0.9375rem;
	font-weight: 500;
	letter-spacing: 0.005em;
	text-decoration: none;
}

.nav__link::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: 2px;
	height: 1px;
	background: currentColor;
	transform: scaleX(0);
	transform-origin: right;
	transition: transform 0.45s var(--ease);
}

.nav__link:hover {
	color: inherit;
}

.nav__link:hover::after,
.nav__item.is-current .nav__link::after {
	transform: scaleX(1);
	transform-origin: left;
}

.nav__toggle {
	display: grid;
	place-items: center;
	width: 24px;
	height: 24px;
	margin-left: 2px;
	padding: 0;
	border: 0;
	background: none;
	cursor: pointer;
}

.nav__toggle .icon {
	width: 16px;
	height: 16px;
	transition: transform 0.35s var(--ease);
}

.has-mega:hover .nav__toggle .icon,
.has-mega.is-open .nav__toggle .icon {
	transform: rotate(180deg);
}

/* Mega panel */
.mega {
	position: absolute;
	left: 0;
	right: 0;
	top: 100%;
	color: var(--ink);
	background: #fff;
	border-top: 1px solid var(--line);
	border-bottom: 1px solid var(--line);
	box-shadow: 0 30px 60px -30px rgba(27, 26, 23, 0.25);
	opacity: 0;
	visibility: hidden;
	transform: translateY(-8px);
	transition: opacity 0.35s var(--ease), transform 0.45s var(--ease), visibility 0s linear 0.35s;
}

@media (hover: hover) and (min-width: 1100px) {
	.has-mega:hover .mega {
		opacity: 1;
		visibility: visible;
		transform: none;
		transition-delay: 0.08s, 0.08s, 0s;
	}
}

.has-mega.is-open .mega {
	opacity: 1;
	visibility: visible;
	transform: none;
	transition-delay: 0s;
}

.mega__inner {
	display: grid;
	grid-template-columns: 1.3fr 1fr 1fr 240px;
	gap: 48px;
	padding-block: 44px 52px;
}

.mega__lead {
	max-width: 30ch;
	margin-bottom: 1.25rem;
	font-size: 1.25rem;
	line-height: 1.4;
	color: var(--ink);
	letter-spacing: -0.01em;
}

.mega__heading {
	margin-bottom: 1rem;
	font-size: var(--fs-eyebrow);
	font-weight: 600;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--muted);
}

.mega__heading a {
	text-decoration: none;
}

.mega__links {
	margin: 0;
	padding: 0;
	list-style: none;
}

.mega__links li + li {
	margin-top: 0.5rem;
}

.mega__links a {
	display: inline-block;
	font-size: 1.0625rem;
	text-decoration: none;
	transition: transform 0.35s var(--ease), color 0.35s;
}

.mega__links a:hover {
	transform: translateX(4px);
}

.mega__feature {
	display: block;
	overflow: hidden;
	aspect-ratio: 4 / 5;
	background: var(--stone);
}

.mega__feature img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 1.2s var(--ease);
}

.has-mega:hover .mega__feature img {
	transform: scale(1.04);
}

/* Header actions */
.site-header__actions {
	display: flex;
	align-items: center;
	gap: 20px;
}

.site-header__phone {
	display: none;
	align-items: center;
	gap: 0.5rem;
	font-size: 0.9375rem;
	font-weight: 500;
	text-decoration: none;
	white-space: nowrap;
}

.site-header__phone .icon {
	width: 18px;
	height: 18px;
}

.site-header__phone:hover {
	color: inherit;
	opacity: 0.75;
}

@media (min-width: 1280px) {
	.site-header__phone {
		display: inline-flex;
	}
}

.site-header__cta {
	display: none;
	min-height: 46px;
	padding: 0.7rem 1.25rem;
}

@media (min-width: 640px) {
	.site-header__cta {
		display: inline-flex;
	}
}

.menu-toggle {
	display: grid;
	place-items: center;
	width: 46px;
	height: 46px;
	margin-right: -10px;
	padding: 0;
	border: 0;
	background: none;
	color: inherit;
	cursor: pointer;
}

.menu-toggle .icon {
	width: 26px;
	height: 26px;
}

.menu-toggle__close,
.menu-toggle[aria-expanded="true"] .menu-toggle__open {
	display: none;
}

.menu-toggle[aria-expanded="true"] .menu-toggle__close {
	display: block;
}

@media (min-width: 1100px) {
	.menu-toggle {
		display: none;
	}
}

/* Mobile nav */
.mnav {
	position: fixed;
	inset: var(--header-h) 0 0;
	z-index: 99;
	overflow-y: auto;
	background: #fff;
	opacity: 0;
	transform: translateY(-12px);
	transition: opacity 0.35s var(--ease), transform 0.45s var(--ease);
}

.mnav.is-open {
	opacity: 1;
	transform: none;
}

.mnav__inner {
	display: flex;
	flex-direction: column;
	min-height: 100%;
	padding-block: 16px 40px;
}

.mnav__list {
	margin: 0;
	padding: 0;
	list-style: none;
}

.mnav__item {
	border-bottom: 1px solid var(--line);
}

.mnav__item > a,
.mnav__item summary {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 18px 0;
	font-size: 1.625rem;
	font-weight: 500;
	letter-spacing: -0.02em;
	color: var(--ink);
	text-decoration: none;
	list-style: none;
	cursor: pointer;
}

.mnav__item summary::-webkit-details-marker {
	display: none;
}

.mnav__item summary a {
	text-decoration: none;
}

.mnav__item summary .icon {
	transition: transform 0.35s var(--ease);
}

.mnav__item details[open] summary .icon {
	transform: rotate(45deg);
}

.mnav__sub {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 10px 16px;
	margin: 0;
	padding: 0 0 22px;
	list-style: none;
}

.mnav__sub a {
	color: var(--muted);
	text-decoration: none;
}

.mnav__foot {
	display: grid;
	gap: 18px;
	margin-top: auto;
	padding-top: 32px;
}

.mnav__phone {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	font-size: 1.25rem;
	font-weight: 500;
	text-decoration: none;
	color: var(--ink);
}

.mnav__meta {
	color: var(--muted);
	font-size: var(--fs-small);
}

/* Hero -------------------------------------------------------------------- */

.hero {
	position: relative;
	display: flex;
	align-items: flex-end;
	min-height: clamp(560px, 86svh, 700px);
	color: #fff;
	background: #26231f;
	overflow: hidden;
	isolation: isolate;
}

.hero__media,
.page-hero__media,
.cta-band__media {
	position: absolute;
	inset: 0;
	z-index: -1;
}

.hero__media img,
.page-hero__media img,
.cta-band__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.hero__slide {
	position: absolute;
	inset: 0;
	opacity: 0;
	transition: opacity 1.6s var(--ease-in-out), visibility 0s linear 1.6s;
	visibility: hidden;
}

.hero__slide.is-active {
	opacity: 1;
	visibility: visible;
	transition: opacity 1.6s var(--ease-in-out), visibility 0s;
}

.hero__slide img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transform: scale(1.06);
	transition: transform 9s linear;
}

.hero__slide.is-active img {
	transform: scale(1);
}

.hero__slide.is-leaving {
	visibility: visible;
	z-index: -1;
}

@media (min-width: 900px) {
	.hero {
		min-height: clamp(560px, 74svh, 780px);
	}
}

/* Slide controls */
.hero__controls {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	padding-bottom: 22px;
	pointer-events: none;
}

.hero__label {
	margin: 0;
	font-size: var(--fs-eyebrow);
	font-weight: 600;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.72);
	transition: opacity 0.6s var(--ease);
}

.hero__label.is-changing {
	opacity: 0;
}

.hero__dots {
	display: flex;
	gap: 6px;
	pointer-events: auto;
}

.hero__dot {
	position: relative;
	width: 44px;
	height: 32px;
	padding: 0;
	border: 0;
	background: none;
	cursor: pointer;
}

.hero__dot span {
	position: absolute;
	left: 0;
	right: 0;
	top: 50%;
	height: 2px;
	background: rgba(255, 255, 255, 0.35);
	overflow: hidden;
}

.hero__dot span::after {
	content: "";
	position: absolute;
	inset: 0;
	background: #fff;
	transform: scaleX(0);
	transform-origin: left;
}

.hero__dot.is-active span::after {
	animation: dot-progress var(--slide-ms, 6500ms) linear forwards;
}

.hero.is-paused .hero__dot.is-active span::after {
	animation-play-state: paused;
}

.hero__dot.is-done span::after {
	transform: scaleX(1);
}

@keyframes dot-progress {
	to {
		transform: scaleX(1);
	}
}

.hero__media::after,
.page-hero__media::after {
	content: "";
	position: absolute;
	inset: 0;
	background:
		linear-gradient(180deg, rgba(14, 12, 10, 0.4) 0%, rgba(14, 12, 10, 0) 30%),
		linear-gradient(0deg, rgba(14, 12, 10, 0.72) 0%, rgba(14, 12, 10, 0.18) 55%, rgba(14, 12, 10, 0.05) 100%),
		linear-gradient(90deg, rgba(14, 12, 10, 0.35) 0%, rgba(14, 12, 10, 0) 60%);
}

@keyframes hero-zoom {
	from {
		transform: scale(1.08);
	}
	to {
		transform: scale(1);
	}
}

.hero__inner {
	padding-top: calc(var(--header-h) + 60px);
	padding-bottom: clamp(84px, 11vh, 120px);
}

.hero__eyebrow,
.hero__title .hero__line,
.hero__lead,
.hero__actions {
	animation: rise 1.1s var(--ease) both;
}

.hero__title .hero__line:nth-child(1) {
	animation-delay: 0.15s;
}
.hero__title .hero__line:nth-child(2) {
	animation-delay: 0.25s;
}
.hero__lead {
	animation-delay: 0.4s;
}
.hero__actions {
	animation-delay: 0.5s;
}

@keyframes rise {
	from {
		opacity: 0;
		transform: translateY(28px);
	}
	to {
		opacity: 1;
		transform: none;
	}
}

.hero__title {
	max-width: 13ch;
	margin-bottom: 1.75rem;
	font-size: var(--fs-display);
	font-weight: 600;
	line-height: 0.98;
	letter-spacing: -0.04em;
	color: #fff;
}

.hero__line {
	display: block;
}

.hero__lead {
	max-width: 44ch;
	margin-bottom: 2.25rem;
	font-size: var(--fs-lead);
	line-height: 1.55;
	color: rgba(255, 255, 255, 0.9);
}

.hero__actions,
.page-hero__actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 14px;
}

.hero__scroll {
	position: absolute;
	right: var(--gutter);
	bottom: 0;
	display: none;
	width: 40px;
	height: 112px;
	color: #fff;
}

@media (min-width: 900px) {
	.hero__scroll {
		display: block;
	}
}

.hero__scroll-line {
	position: absolute;
	left: 50%;
	top: 0;
	bottom: 32px;
	width: 1px;
	background: rgba(255, 255, 255, 0.28);
	overflow: hidden;
}

.hero__scroll-line::after {
	content: "";
	position: absolute;
	inset: 0;
	background: #fff;
	transform: translateY(-100%);
	animation: scroll-cue 2.4s var(--ease-in-out) infinite;
}

@keyframes scroll-cue {
	0% {
		transform: translateY(-100%);
	}
	55% {
		transform: translateY(0);
	}
	100% {
		transform: translateY(100%);
	}
}

/* Page hero */
.page-hero {
	position: relative;
	isolation: isolate;
	overflow: hidden;
}

.page-hero--image {
	display: flex;
	align-items: flex-end;
	min-height: max(460px, 64svh);
	color: #fff;
	background: #26231f;
}

.page-hero--tall {
	min-height: max(540px, 80svh);
}

.page-hero--plain {
	background: var(--sand);
}

.page-hero__inner {
	padding-top: calc(var(--header-h) + clamp(48px, 7vw, 96px));
	padding-bottom: clamp(48px, 7vw, 96px);
}

body:not(.has-dark-hero) .page-hero__inner {
	padding-top: clamp(48px, 7vw, 96px);
}

.page-hero__title {
	max-width: 20ch;
	margin-bottom: 1.25rem;
	font-size: var(--fs-h1);
	line-height: 1.02;
	letter-spacing: -0.035em;
}

.page-hero--image .page-hero__title {
	color: #fff;
}

.page-hero__intro {
	max-width: 56ch;
	margin-bottom: 2rem;
	font-size: var(--fs-lead);
	line-height: 1.55;
}

.page-hero--image .page-hero__intro {
	color: rgba(255, 255, 255, 0.88);
}

.page-hero--image .eyebrow {
	color: rgba(255, 255, 255, 0.82);
}

.page-hero__actions {
	margin-top: 1.5rem;
}

.hero-phone {
	display: inline-flex;
	align-items: center;
	gap: 0.6rem;
	padding: 0.75rem 0.5rem;
	font-weight: 600;
	text-decoration: none;
}

.hero-phone--light {
	color: #fff;
}

.hero-phone--light:hover {
	color: #fff;
	opacity: 0.8;
}

/* Breadcrumbs */
.breadcrumbs ol {
	display: flex;
	flex-wrap: wrap;
	gap: 0.35rem 0;
	margin: 0 0 1.75rem;
	padding: 0;
	list-style: none;
	font-size: var(--fs-small);
	color: var(--muted);
}

.breadcrumbs li {
	display: inline-flex;
	align-items: center;
}

.breadcrumbs li + li::before {
	content: "/";
	margin: 0 0.6rem;
	opacity: 0.5;
}

.breadcrumbs a {
	text-decoration: none;
}

.breadcrumbs a:hover {
	text-decoration: underline;
}

.page-hero--image .breadcrumbs ol {
	color: rgba(255, 255, 255, 0.75);
}

.page-hero--image .breadcrumbs a:hover {
	color: #fff;
}

/* Sections ---------------------------------------------------------------- */

.section {
	padding-block: var(--section);
}

.section--tight {
	padding-block: var(--section-tight);
}

.section--sand {
	background: var(--sand);
}

.section--ink {
	background: var(--ink);
	color: rgba(255, 255, 255, 0.8);
}

.section + .section--sand,
.section--sand + .section:not(.section--sand) {
	/* keep full rhythm between contrasting bands */
}

.section-head {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	justify-content: space-between;
	gap: 24px 48px;
	margin-bottom: clamp(40px, 5vw, 72px);
}

.section-head__text {
	max-width: 760px;
}

.section-head__title {
	font-size: var(--fs-h2);
	line-height: 1.04;
	letter-spacing: -0.035em;
}

.section-head__intro {
	max-width: 60ch;
	margin-top: 1.25rem;
	font-size: var(--fs-lead);
	line-height: 1.6;
	color: var(--muted);
}

/* Intro */
.intro__grid {
	display: grid;
	gap: 28px;
}

@media (min-width: 900px) {
	.intro__grid {
		grid-template-columns: 5fr 7fr;
		gap: clamp(48px, 7vw, 120px);
	}
}

.intro__heading {
	max-width: 18ch;
	font-size: clamp(1.5rem, 1.15rem + 1.1vw, 2.25rem);
	line-height: 1.15;
	letter-spacing: -0.025em;
}

.intro__body {
	max-width: 62ch;
}

.intro__body > p:not(.lead) {
	color: var(--ink-2);
}

.intro__body .btn--text {
	margin-top: 0.75rem;
}

/* Facts */
.facts {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 16px;
	margin: 2.25rem 0 2.25rem;
	padding: 1.5rem 0 0;
	border-top: 1px solid var(--line-2);
}

.facts div {
	display: flex;
	flex-direction: column-reverse;
	gap: 0.25rem;
}

.facts dt {
	font-size: var(--fs-small);
	color: var(--muted);
}

.facts dd {
	margin: 0;
	font-size: clamp(1.75rem, 1.3rem + 1.6vw, 2.75rem);
	font-weight: 500;
	line-height: 1;
	letter-spacing: -0.03em;
	color: var(--ink);
}

/* Highlights (carpets page) */
.highlights {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 0;
	margin: clamp(48px, 7vw, 96px) 0 0;
	padding: 0;
	list-style: none;
	border-top: 1px solid var(--line-2);
}

@media (min-width: 900px) {
	.highlights {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

.highlights li {
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
	padding: 28px 24px 8px 0;
	font-size: var(--fs-small);
	color: var(--muted);
}

.highlights__big {
	font-size: clamp(2rem, 1.4rem + 2vw, 3.25rem);
	font-weight: 500;
	line-height: 1;
	letter-spacing: -0.035em;
	color: var(--ink);
}

/* Category cards ---------------------------------------------------------- */

.cat-grid {
	display: grid;
	gap: 16px;
}

@media (min-width: 640px) {
	.cat-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 20px;
	}
}

@media (min-width: 1100px) {
	.cat-grid {
		grid-template-columns: repeat(4, minmax(0, 1fr));
		gap: 24px;
	}
}

.cat-card {
	position: relative;
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	min-height: 440px;
	overflow: hidden;
	color: #fff;
	text-decoration: none;
	background: #2a2622;
	isolation: isolate;
}

@media (min-width: 1100px) {
	.cat-card {
		aspect-ratio: 3 / 4.4;
		min-height: 0;
	}
	.cat-grid .cat-card:nth-child(even) {
		transform: translateY(48px);
	}
	.cat-grid .cat-card:nth-child(even).is-in {
		transform: translateY(48px);
	}
	.cat-grid {
		padding-bottom: 48px;
	}
}

.cat-card__media {
	position: absolute;
	inset: 0;
	z-index: -1;
}

.cat-card__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 1.4s var(--ease);
}

.cat-card__media::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(0deg, rgba(14, 12, 10, 0.82) 0%, rgba(14, 12, 10, 0.25) 50%, rgba(14, 12, 10, 0.05) 100%);
	transition: opacity 0.6s var(--ease);
}

.cat-card:hover {
	color: #fff;
}

.cat-card:hover .cat-card__media img {
	transform: scale(1.06);
}

.cat-card__body {
	padding: clamp(24px, 2.4vw, 36px);
}

.cat-card__meta {
	margin-bottom: 0.75rem;
	font-size: var(--fs-eyebrow);
	font-weight: 600;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.72);
}

.cat-card__title {
	margin-bottom: 0.75rem;
	font-size: clamp(1.625rem, 1.3rem + 1vw, 2.25rem);
	line-height: 1.05;
	letter-spacing: -0.03em;
	color: #fff;
}

.cat-card__text {
	max-width: 34ch;
	margin-bottom: 1.25rem;
	font-size: 0.9375rem;
	line-height: 1.55;
	color: rgba(255, 255, 255, 0.84);
}

@media (min-width: 1100px) {
	.cat-card__text {
		max-height: 0;
		margin-bottom: 0;
		opacity: 0;
		overflow: hidden;
		transition: max-height 0.7s var(--ease), opacity 0.5s var(--ease), margin 0.7s var(--ease);
	}
	.cat-card:hover .cat-card__text,
	.cat-card:focus-visible .cat-card__text {
		max-height: 8em;
		margin-bottom: 1.25rem;
		opacity: 1;
	}
}

.cat-card__cta,
.product-card__cta,
.advice-card__cta {
	display: inline-flex;
	align-items: center;
	gap: 0.6rem;
	font-size: 0.9375rem;
	font-weight: 600;
}

.cat-card__cta .icon,
.product-card__cta .icon,
.advice-card__cta .icon {
	width: 18px;
	height: 18px;
	transition: transform 0.45s var(--ease);
}

.cat-card:hover .cat-card__cta .icon,
.product-card__link:hover .product-card__cta .icon,
.advice-card:hover .advice-card__cta .icon {
	transform: translateX(5px);
}

/* Product browser --------------------------------------------------------- */

.filters {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 14px 20px;
	margin-bottom: 32px;
	padding-bottom: 24px;
	border-bottom: 1px solid var(--line);
}

.filters__chips {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}

.chip {
	min-height: 42px;
	padding: 0.55rem 1.1rem;
	border: 1px solid var(--line-2);
	background: transparent;
	font-size: 0.9375rem;
	font-weight: 500;
	color: var(--ink);
	cursor: pointer;
	transition: background-color 0.3s var(--ease), color 0.3s var(--ease), border-color 0.3s var(--ease);
}

.chip:hover {
	border-color: var(--ink);
}

.chip.is-active {
	background: var(--ink);
	border-color: var(--ink);
	color: #fff;
}

.filters__select {
	position: relative;
	display: inline-flex;
	align-items: center;
}

.filters__select select,
.select select {
	min-height: 42px;
	padding: 0.55rem 2.75rem 0.55rem 1rem;
	border: 1px solid var(--line-2);
	border-radius: 0;
	background: transparent;
	font-size: 0.9375rem;
	font-weight: 500;
	color: var(--ink);
	appearance: none;
	cursor: pointer;
}

.filters__select .icon,
.select .icon {
	position: absolute;
	right: 14px;
	width: 16px;
	height: 16px;
	pointer-events: none;
}

.filters__count {
	margin: 0 0 0 auto;
	font-size: var(--fs-small);
	color: var(--muted);
}

.product-grid {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 40px 20px;
}

@media (min-width: 600px) {
	.product-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (min-width: 960px) {
	.product-grid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
		gap: 48px 24px;
	}
}

@media (min-width: 1240px) {
	.product-grid {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

.product-card[hidden] {
	display: none;
}

.product-card.is-filtering {
	animation: card-in 0.6s var(--ease) both;
}

@keyframes card-in {
	from {
		opacity: 0;
		transform: translateY(14px);
	}
	to {
		opacity: 1;
		transform: none;
	}
}

.product-card__link {
	display: block;
	color: inherit;
	text-decoration: none;
}

.product-card__link:hover {
	color: inherit;
}

.product-card__media {
	position: relative;
	aspect-ratio: 1;
	overflow: hidden;
	background: var(--stone);
}

.product-card__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 1.2s var(--ease);
}

.product-card__link:hover .product-card__media img {
	transform: scale(1.05);
}

.product-card__count {
	position: absolute;
	left: 12px;
	top: 12px;
	padding: 0.3rem 0.6rem;
	background: rgba(255, 255, 255, 0.92);
	font-size: 0.75rem;
	font-weight: 600;
	letter-spacing: 0.04em;
	color: var(--ink);
}

.product-card__placeholder {
	display: flex;
	align-items: flex-end;
	width: 100%;
	height: 100%;
	padding: 24px;
	background:
		repeating-linear-gradient(90deg, rgba(255, 255, 255, 0.05) 0 2px, transparent 2px 6px),
		linear-gradient(135deg, #8c7f70, #5f554a);
	color: rgba(255, 255, 255, 0.92);
	font-size: clamp(1.5rem, 1.2rem + 1vw, 2rem);
	font-weight: 500;
	letter-spacing: -0.03em;
	line-height: 1.05;
	transition: transform 1.2s var(--ease);
}

.product-card__placeholder--laminate {
	background:
		repeating-linear-gradient(0deg, rgba(0, 0, 0, 0.05) 0 1px, transparent 1px 72px),
		linear-gradient(135deg, #a88a67, #6f5741);
}

.product-card__placeholder--vinyl {
	background:
		repeating-linear-gradient(0deg, rgba(0, 0, 0, 0.05) 0 1px, transparent 1px 60px),
		linear-gradient(135deg, #b6aa9a, #7d7367);
}

.product-card__link:hover .product-card__placeholder {
	transform: scale(1.05);
}

.product-card__body {
	padding-top: 18px;
}

.product-card__meta {
	margin-bottom: 0.4rem;
	font-size: 0.75rem;
	font-weight: 600;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--muted);
}

.product-card__meta span {
	margin: 0 0.2rem;
}

.product-card__title {
	margin-bottom: 0.3rem;
	font-size: 1.3125rem;
	line-height: 1.2;
	letter-spacing: -0.02em;
}

.product-card__format {
	margin-bottom: 0.9rem;
	font-size: 0.9375rem;
	color: var(--muted);
}

.product-card__cta {
	color: var(--ink);
}

.product-browser__empty {
	padding: 48px 0;
	color: var(--muted);
}

/* Story split -------------------------------------------------------------- */

.story__grid {
	display: grid;
	gap: 40px;
	align-items: center;
}

@media (min-width: 1000px) {
	.story__grid {
		grid-template-columns: 6fr 5fr;
		gap: clamp(56px, 7vw, 120px);
	}
	.story--reverse .story__media {
		order: 2;
	}
}

.story__media {
	overflow: hidden;
	aspect-ratio: 4 / 5;
	background: var(--stone);
}

.story__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.story__text .section-head {
	margin-bottom: 2rem;
}

.story__text .section-head__title {
	font-size: clamp(2rem, 1.35rem + 2.2vw, 3.5rem);
}

.story__text .prose p {
	color: var(--ink-2);
}

/* Trust ------------------------------------------------------------------- */

.trust__grid {
	display: grid;
	gap: 0 32px;
	margin: 0;
	padding: 0;
	list-style: none;
}

@media (min-width: 700px) {
	.trust__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (min-width: 1100px) {
	.trust__grid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
		gap: 0 56px;
	}
}

.trust__item {
	padding: 32px 0 40px;
	border-top: 1px solid var(--line-2);
}

.trust__icon {
	width: 32px;
	height: 32px;
	margin-bottom: 24px;
	color: var(--navy);
}

.trust__title {
	margin-bottom: 0.6rem;
	font-size: 1.3125rem;
	letter-spacing: -0.02em;
}

.trust__item p {
	max-width: 40ch;
	color: var(--muted);
}

/* Installation ------------------------------------------------------------ */

.install {
	background: var(--ink);
	color: rgba(255, 255, 255, 0.78);
}

.install .section-head__title,
.install .lead {
	color: #fff;
}

.install .eyebrow {
	color: rgba(255, 255, 255, 0.7);
}

.install__grid {
	display: grid;
	gap: 48px;
	align-items: center;
}

@media (min-width: 1000px) {
	.install__grid {
		grid-template-columns: 5fr 6fr;
		gap: clamp(56px, 7vw, 120px);
	}
}

.install__media {
	overflow: hidden;
	aspect-ratio: 4 / 5;
	background: #2d2a26;
}

.install__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.install .section-head {
	margin-bottom: 2rem;
}

.install .section-head__title {
	font-size: clamp(2.125rem, 1.4rem + 2.4vw, 3.75rem);
}

.ticks {
	display: grid;
	gap: 14px;
	margin: 2rem 0;
	padding: 0;
	list-style: none;
}

.ticks li {
	display: flex;
	gap: 14px;
	align-items: flex-start;
	color: #fff;
}

.ticks .icon {
	margin-top: 0.2em;
	color: var(--taupe);
}

.install__hours {
	max-width: 52ch;
	margin-bottom: 2rem;
	padding-left: 18px;
	border-left: 1px solid rgba(255, 255, 255, 0.25);
	font-size: 0.9375rem;
	color: rgba(255, 255, 255, 0.66);
}

.install .btn--primary {
	--btn-bg: #fff;
	--btn-fg: var(--ink);
	--btn-bd: #fff;
}

.install .btn--primary:hover {
	--btn-bg: var(--sand);
	--btn-bd: var(--sand);
}

/* Brands ------------------------------------------------------------------ */

.brands {
	padding-block: clamp(48px, 6vw, 88px);
	border-bottom: 1px solid var(--line);
}

.brands__label {
	margin-bottom: 1.5rem;
	font-size: var(--fs-eyebrow);
	font-weight: 600;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--muted);
}

.brands__list {
	display: flex;
	flex-wrap: wrap;
	gap: 0.4rem clamp(24px, 3.4vw, 56px);
	margin: 0;
	padding: 0;
	list-style: none;
}

.brands__list li {
	font-size: clamp(1.5rem, 1.1rem + 1.5vw, 2.5rem);
	font-weight: 500;
	letter-spacing: -0.03em;
	color: var(--taupe);
	transition: color 0.4s var(--ease);
}

.brands__list li:hover {
	color: var(--ink);
}

/* Advice ------------------------------------------------------------------ */

.advice__grid {
	display: grid;
	gap: 16px;
}

@media (min-width: 900px) {
	.advice__grid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
		gap: 24px;
	}
}

.advice-card {
	display: flex;
	flex-direction: column;
	min-height: 320px;
	padding: clamp(28px, 3vw, 40px);
	background: var(--sand);
	color: var(--ink);
	text-decoration: none;
	transition: background-color 0.5s var(--ease), color 0.5s var(--ease);
}

.advice-card:hover {
	background: var(--ink);
	color: #fff;
}

.advice-card:hover .advice-card__title {
	color: #fff;
}

.advice-card:hover p {
	color: rgba(255, 255, 255, 0.72);
}

.advice-card__num {
	margin-bottom: auto;
	font-size: var(--fs-small);
	font-weight: 600;
	letter-spacing: 0.1em;
	color: var(--faint);
}

.advice-card__title {
	margin: 3rem 0 0.75rem;
	font-size: clamp(1.375rem, 1.2rem + 0.6vw, 1.75rem);
	letter-spacing: -0.025em;
	transition: color 0.5s var(--ease);
}

.advice-card p {
	margin-bottom: 1.5rem;
	font-size: 0.9375rem;
	color: var(--muted);
	transition: color 0.5s var(--ease);
}

/* CTA band ---------------------------------------------------------------- */

.cta-band {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	padding-block: var(--section);
	color: rgba(255, 255, 255, 0.86);
	background: #1f1c19;
	scroll-margin-top: var(--header-h);
}

.cta-band__media::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(90deg, rgba(14, 12, 10, 0.86) 0%, rgba(14, 12, 10, 0.62) 55%, rgba(14, 12, 10, 0.4) 100%);
}

.cta-band__inner {
	display: grid;
	gap: 48px;
	align-items: center;
}

@media (min-width: 1000px) {
	.cta-band__inner {
		grid-template-columns: 5fr 6fr;
		gap: clamp(56px, 7vw, 112px);
	}
}

.cta-band__title {
	margin-bottom: 1.5rem;
	font-size: var(--fs-h2);
	line-height: 1.02;
	letter-spacing: -0.035em;
	color: #fff;
}

.cta-band__lead {
	max-width: 44ch;
	margin-bottom: 2rem;
	font-size: var(--fs-lead);
	line-height: 1.6;
}

.cta-band__contact {
	display: grid;
	gap: 12px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.cta-band__contact a {
	display: inline-flex;
	align-items: center;
	gap: 12px;
	font-size: clamp(1.125rem, 1rem + 0.6vw, 1.5rem);
	font-weight: 500;
	letter-spacing: -0.01em;
	color: #fff;
	text-decoration: none;
}

.cta-band__contact a:hover {
	color: #fff;
	opacity: 0.8;
}

.cta-band__form {
	padding: clamp(24px, 3.4vw, 48px);
	background: #fff;
	color: var(--ink-2);
}

/* Forms ------------------------------------------------------------------- */

.qform__title {
	margin-bottom: 1.5rem;
	font-size: clamp(1.375rem, 1.2rem + 0.6vw, 1.75rem);
	font-weight: 600;
	letter-spacing: -0.025em;
	color: var(--ink);
}

.qform__notice {
	margin-bottom: 1.25rem;
	padding: 12px 16px;
	border-left: 3px solid #b3261e;
	background: #fbeeed;
	color: #6d1a14;
	font-size: 0.9375rem;
}

.qform__grid {
	display: grid;
	gap: 18px 20px;
}

@media (min-width: 640px) {
	.qform__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
	.field--full {
		grid-column: 1 / -1;
	}
}

.field {
	margin: 0;
}

.field label {
	display: block;
	margin-bottom: 0.45rem;
	font-size: 0.8125rem;
	font-weight: 600;
	letter-spacing: 0.02em;
	color: var(--ink);
}

.field input,
.field textarea,
.select select {
	width: 100%;
	min-height: 52px;
	padding: 0.85rem 1rem;
	border: 1px solid var(--line-2);
	border-radius: 0;
	background: #fff;
	font-size: 1rem;
	color: var(--ink);
	transition: border-color 0.25s, box-shadow 0.25s;
}

.field textarea {
	min-height: 120px;
	resize: vertical;
}

.field input::placeholder,
.field textarea::placeholder {
	color: var(--faint);
}

.field input:focus,
.field textarea:focus,
.select select:focus {
	border-color: var(--ink);
	outline: none;
	box-shadow: 0 0 0 3px rgba(47, 111, 214, 0.18);
}

.field input:user-invalid,
.field textarea:user-invalid,
.select select:user-invalid {
	border-color: #b3261e;
}

.select {
	position: relative;
	display: flex;
	align-items: center;
}

.select select {
	padding-right: 2.75rem;
}

.qform--compact .qform__grid {
	gap: 14px 16px;
}

.qform__hp {
	position: absolute;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

.qform__foot {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 16px 24px;
	margin-top: 24px;
}

.qform__alt {
	margin: 0;
	font-size: 0.9375rem;
	color: var(--muted);
}

.qform__alt a {
	font-weight: 600;
	color: var(--ink);
}

.qform [type="submit"][disabled] {
	opacity: 0.6;
	pointer-events: none;
}

/* Quote dialog ------------------------------------------------------------ */

.quote-dialog {
	width: min(620px, 100vw);
	max-width: 100vw;
	height: 100dvh;
	max-height: 100dvh;
	margin: 0 0 0 auto;
	padding: 0;
	border: 0;
	background: #fff;
	color: var(--ink-2);
	overflow: hidden;
}

.quote-dialog::backdrop {
	background: rgba(20, 18, 15, 0.5);
	backdrop-filter: blur(4px);
}

.quote-dialog[open] {
	animation: drawer-in 0.55s var(--ease) both;
}

.quote-dialog[open]::backdrop {
	animation: fade-in 0.4s var(--ease) both;
}

.quote-dialog.is-closing {
	animation: drawer-out 0.35s var(--ease-in-out) both;
}

@keyframes drawer-in {
	from {
		transform: translateX(100%);
	}
	to {
		transform: none;
	}
}

@keyframes drawer-out {
	to {
		transform: translateX(100%);
	}
}

@keyframes fade-in {
	from {
		opacity: 0;
	}
}

.quote-dialog__panel {
	height: 100%;
	overflow-y: auto;
	padding: clamp(28px, 5vw, 56px);
	overscroll-behavior: contain;
}

.quote-dialog__close {
	position: absolute;
	top: 16px;
	right: 16px;
	display: grid;
	place-items: center;
	width: 48px;
	height: 48px;
	border: 1px solid var(--line);
	background: #fff;
	cursor: pointer;
	transition: background-color 0.3s, color 0.3s;
}

.quote-dialog__close:hover {
	background: var(--ink);
	color: #fff;
}

.quote-dialog__intro {
	margin-bottom: 2rem;
	padding-right: 48px;
}

.quote-dialog__intro h2 {
	margin-bottom: 0.75rem;
	font-size: clamp(2rem, 1.5rem + 1.6vw, 2.75rem);
	letter-spacing: -0.035em;
}

.quote-dialog__intro p:last-child {
	color: var(--muted);
}

@media (min-width: 640px) {
	.quote-dialog .qform__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

/* Article (landing pages & guides) ---------------------------------------- */

.article {
	display: grid;
	gap: 56px;
}

@media (min-width: 1100px) {
	.article {
		grid-template-columns: minmax(0, 1fr) 340px;
		gap: clamp(64px, 7vw, 120px);
		align-items: start;
	}
}

.article__main {
	max-width: 780px;
}

.article__aside {
	display: grid;
	gap: 24px;
}

@media (min-width: 1100px) {
	.article__aside {
		position: sticky;
		top: calc(var(--header-h) + 32px);
	}
}

.aside-card {
	padding: 32px;
	background: var(--sand);
}

.aside-card__title {
	margin-bottom: 1.25rem;
	font-size: 1.5rem;
	font-weight: 600;
	line-height: 1.15;
	letter-spacing: -0.025em;
	color: var(--ink);
}

.aside-card__list {
	display: grid;
	gap: 12px;
	margin: 0 0 1.75rem;
	padding: 0;
	list-style: none;
	font-size: 0.9375rem;
}

.aside-card__list a,
.aside-card__static {
	display: flex;
	align-items: center;
	gap: 10px;
	text-decoration: none;
	color: var(--ink);
}

.aside-card__list .icon {
	width: 18px;
	height: 18px;
	color: var(--muted);
}

.aside-card .btn {
	width: 100%;
}

.aside-links {
	padding: 8px 0 0;
}

.aside-links__title {
	margin-bottom: 0.75rem;
	font-size: var(--fs-eyebrow);
	font-weight: 600;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--muted);
}

.aside-links ul {
	margin: 0;
	padding: 0;
	list-style: none;
}

.aside-links a {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 14px 0;
	border-bottom: 1px solid var(--line);
	color: var(--ink);
	text-decoration: none;
}

.aside-links .icon {
	width: 18px;
	height: 18px;
	transition: transform 0.45s var(--ease);
}

.aside-links a:hover .icon {
	transform: translateX(5px);
}

/* Prose */
.prose {
	color: var(--ink-2);
}

.prose > * + * {
	margin-top: 1.1em;
}

.prose p {
	margin: 0;
}

.prose > * + p {
	margin-top: 1.1em;
}

.prose h2 {
	margin-top: 2.4em;
	margin-bottom: 0.6em;
	font-size: clamp(1.75rem, 1.35rem + 1.3vw, 2.625rem);
	line-height: 1.1;
	letter-spacing: -0.03em;
}

.prose h3 {
	margin-top: 2em;
	margin-bottom: 0.5em;
	font-size: clamp(1.3125rem, 1.15rem + 0.5vw, 1.625rem);
	line-height: 1.2;
	letter-spacing: -0.02em;
}

.prose h4,
.prose h5,
.prose h6 {
	margin-top: 1.75em;
	margin-bottom: 0.4em;
	font-size: 1.125rem;
	line-height: 1.3;
	letter-spacing: -0.01em;
}

.prose > h2:first-child,
.prose > h3:first-child,
.prose > h4:first-child {
	margin-top: 0;
}

.prose h2 strong,
.prose h3 strong,
.prose h4 strong {
	font-weight: inherit;
}

.prose a {
	color: var(--ink);
	text-decoration: underline;
	text-decoration-color: var(--taupe);
}

.prose a:hover {
	color: var(--navy);
	text-decoration-color: currentColor;
}

.prose ul,
.prose ol {
	margin: 1.1em 0 0;
	padding-left: 1.25em;
}

.prose ul li::marker {
	color: var(--taupe);
}

.prose li + li {
	margin-top: 0.45em;
}

.prose strong {
	color: var(--ink);
	font-weight: 600;
}

.prose figure {
	margin: 2em 0 0;
}

.prose .wp-block-image img {
	width: 100%;
}

.prose .wp-block-image.is-small img {
	width: auto;
	max-width: 320px;
}

.prose .wp-block-table {
	margin: 2em 0 0;
	overflow-x: auto;
}

.prose table {
	width: 100%;
	border-collapse: collapse;
	font-size: 0.9375rem;
}

.prose th,
.prose td {
	padding: 14px 16px 14px 0;
	border-bottom: 1px solid var(--line);
	text-align: left;
	vertical-align: top;
}

.prose tr:first-child td,
.prose th {
	font-weight: 600;
	color: var(--ink);
}

.prose blockquote {
	margin: 2em 0 0;
	padding-left: 24px;
	border-left: 2px solid var(--ink);
	font-size: var(--fs-lead);
	color: var(--ink);
}

.prose .wp-block-details,
.prose details {
	margin: 0;
	border-top: 1px solid var(--line-2);
}

.prose .wp-block-details:last-of-type,
.prose details:last-of-type {
	border-bottom: 1px solid var(--line-2);
}

.prose * + .wp-block-details:first-of-type {
	margin-top: 1.75em;
}

.prose details + details {
	margin-top: 0;
}

.prose summary {
	position: relative;
	display: block;
	padding: 22px 48px 22px 0;
	font-size: 1.125rem;
	font-weight: 600;
	line-height: 1.35;
	color: var(--ink);
	list-style: none;
	cursor: pointer;
}

.prose summary::-webkit-details-marker {
	display: none;
}

.prose summary::before,
.prose summary::after {
	content: "";
	position: absolute;
	right: 8px;
	top: 50%;
	width: 16px;
	height: 1.5px;
	background: currentColor;
	transition: transform 0.4s var(--ease);
}

.prose summary::after {
	transform: rotate(90deg);
}

.prose details[open] summary::after {
	transform: rotate(0deg);
}

.prose details > :not(summary) {
	margin: 0 0 1em;
	padding-right: 48px;
}

.prose details > :last-child {
	padding-bottom: 12px;
}

.details-body {
	overflow: hidden;
}

.content-cta {
	margin-top: 1.75em !important;
}

.content-gallery {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 10px;
	margin-top: 2em !important;
}

@media (min-width: 700px) {
	.content-gallery {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

.content-gallery figure {
	margin: 0;
	aspect-ratio: 1;
	overflow: hidden;
	background: var(--stone);
}

.content-gallery img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.content-products {
	margin-top: 2.5em !important;
}

.prose .product-grid {
	gap: 32px 16px;
}

@media (min-width: 960px) {
	.prose .product-grid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

.prose .product-card__link {
	text-decoration: none;
}

.prose .product-card__title {
	margin: 0 0 0.3rem;
	font-size: 1.125rem;
}

.prose .product-card p {
	margin: 0 0 0.4rem;
}

.prose .filters {
	margin-top: 0;
}

.content-form {
	margin-top: 2em !important;
	padding: clamp(24px, 3vw, 40px);
	background: var(--sand);
}

.content-form .qform__title {
	margin: 0 0 1.25rem;
}

/* Product detail ---------------------------------------------------------- */

.pdp {
	padding-top: clamp(28px, 4vw, 56px);
	padding-bottom: var(--section-tight);
}

.pdp__grid {
	display: grid;
	gap: 40px;
}

@media (min-width: 1000px) {
	.pdp__grid {
		grid-template-columns: 7fr 5fr;
		gap: clamp(48px, 6vw, 104px);
		align-items: start;
	}
	.pdp__info {
		position: sticky;
		top: calc(var(--header-h) + 32px);
	}
}

.pdp__stage {
	position: relative;
	margin: 0;
	aspect-ratio: 1;
	overflow: hidden;
	background: var(--stone);
}

.pdp__stage img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: opacity 0.35s var(--ease);
}

.pdp__stage img.is-swapping {
	opacity: 0.2;
}

.pdp__placeholder {
	font-size: clamp(2.5rem, 2rem + 2vw, 4rem);
	padding: 40px;
}

.pdp__caption {
	position: absolute;
	left: 16px;
	bottom: 16px;
	padding: 0.5rem 0.85rem;
	background: rgba(255, 255, 255, 0.94);
	font-size: 0.875rem;
	color: var(--ink);
}

.pdp__caption-label {
	color: var(--muted);
}

.pdp__thumbs {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(64px, 1fr));
	gap: 8px;
	margin: 12px 0 0;
	padding: 0;
	list-style: none;
}

.pdp__thumb {
	display: block;
	width: 100%;
	aspect-ratio: 1;
	padding: 0;
	border: 0;
	background: var(--stone);
	cursor: pointer;
	outline-offset: 2px;
	box-shadow: inset 0 0 0 0 var(--ink);
	transition: box-shadow 0.3s var(--ease);
}

.pdp__thumb img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.pdp__thumb:hover {
	box-shadow: 0 0 0 1px var(--line-2);
}

.pdp__thumb.is-active {
	box-shadow: 0 0 0 2px var(--ink);
}

.pdp__type {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 10px;
	margin-bottom: 1rem;
	font-size: var(--fs-eyebrow);
	font-weight: 600;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--muted);
}

.pdp__type a {
	text-decoration: none;
}

.tag {
	display: inline-block;
	padding: 0.3rem 0.6rem;
	border: 1px solid var(--line-2);
	font-size: 0.75rem;
	font-weight: 500;
	letter-spacing: 0.02em;
	text-transform: none;
	color: var(--ink);
}

.pdp__title {
	margin-bottom: 1.5rem;
	font-size: clamp(2.5rem, 1.6rem + 3.2vw, 4.5rem);
	line-height: 1;
	letter-spacing: -0.04em;
}

.pdp__meta {
	display: flex;
	flex-wrap: wrap;
	gap: 0;
	margin: 0 0 1.75rem;
	padding: 0;
	border-top: 1px solid var(--line);
	border-bottom: 1px solid var(--line);
}

.pdp__meta div {
	flex: 1 1 0;
	min-width: 110px;
	padding: 14px 16px 14px 0;
}

.pdp__meta div + div {
	padding-left: 16px;
	border-left: 1px solid var(--line);
}

.pdp__meta dt {
	font-size: 0.75rem;
	font-weight: 600;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--muted);
}

.pdp__meta dd {
	margin: 0.2rem 0 0;
	font-size: 1.0625rem;
	font-weight: 500;
	color: var(--ink);
}

.pdp__desc {
	font-size: 1.0625rem;
}

.pdp__block {
	margin-top: 2rem;
}

.pdp__block-title {
	margin-bottom: 0.75rem;
	font-size: var(--fs-eyebrow);
	font-weight: 600;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--muted);
}

.spec-list {
	margin: 0;
	padding: 0;
	list-style: none;
}

.spec-list li {
	display: flex;
	gap: 12px;
	align-items: flex-start;
	padding: 12px 0;
	border-bottom: 1px solid var(--line);
	color: var(--ink);
}

.spec-list li:first-child {
	border-top: 1px solid var(--line);
}

.spec-list .icon {
	width: 20px;
	height: 20px;
	margin-top: 0.15em;
	color: var(--navy);
}

.pdp__note {
	margin-top: 1.5rem;
	padding: 14px 16px;
	background: var(--sand);
	font-size: 0.9375rem;
}

.pdp__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	margin-top: 2.25rem;
}

.pdp__actions .btn {
	flex: 1 1 220px;
}

.pdp__install {
	display: flex;
	gap: 12px;
	align-items: flex-start;
	margin-top: 1.5rem;
	font-size: 0.9375rem;
	color: var(--muted);
}

.pdp__install .icon {
	width: 20px;
	height: 20px;
	margin-top: 0.15em;
}

.colour-grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 28px 16px;
	margin: 0;
	padding: 0;
	list-style: none;
}

@media (min-width: 700px) {
	.colour-grid {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

@media (min-width: 1100px) {
	.colour-grid {
		grid-template-columns: repeat(6, minmax(0, 1fr));
		gap: 36px 20px;
	}
}

.colour__media {
	aspect-ratio: 1;
	overflow: hidden;
	background: var(--stone);
}

.colour__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 1s var(--ease);
}

.colour:hover .colour__media img {
	transform: scale(1.05);
}

.colour__name {
	margin-top: 12px;
	font-size: 0.9375rem;
	font-weight: 500;
	color: var(--ink);
}

/* Flooring split cards */
.split-cards {
	display: grid;
	gap: 56px;
}

@media (min-width: 900px) {
	.split-cards {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: clamp(32px, 4vw, 64px);
	}
	.split-cards .split-card:nth-child(2) {
		margin-top: clamp(64px, 10vw, 160px);
	}
}

.split-card__media {
	aspect-ratio: 4 / 5;
	overflow: hidden;
	margin-bottom: 32px;
	background: var(--stone);
}

.split-card__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.split-card__title {
	max-width: 22ch;
	margin-bottom: 1rem;
	font-size: clamp(1.625rem, 1.3rem + 1.1vw, 2.375rem);
	line-height: 1.1;
	letter-spacing: -0.03em;
}

.split-card p {
	max-width: 56ch;
}

.split-card .btn--text {
	margin-top: 0.5rem;
}

/* Contact ----------------------------------------------------------------- */

.contact-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
	gap: 0 32px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.contact-item {
	padding: 28px 0 32px;
	border-top: 1px solid var(--line-2);
}

.contact-item__icon {
	width: 28px;
	height: 28px;
	margin-bottom: 20px;
	color: var(--navy);
}

.contact-item__title {
	margin-bottom: 0.75rem;
	font-size: 1.25rem;
	letter-spacing: -0.02em;
}

.contact-item p,
.contact-item address {
	margin-bottom: 0.35rem;
	color: var(--ink-2);
}

.contact-item a {
	color: var(--ink);
	font-weight: 500;
	text-decoration: none;
}

.contact-item a:hover {
	text-decoration: underline;
}

.contact-item__small {
	margin-top: 0.75rem;
	font-size: var(--fs-small);
	color: var(--muted) !important;
}

.hours {
	margin: 0;
}

.hours div {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: 0 12px;
	padding: 4px 0;
}

.hours dt {
	color: var(--muted);
}

.hours dd {
	margin: 0;
	font-weight: 500;
	color: var(--ink);
}

.enquiry {
	display: grid;
	gap: 48px;
}

@media (min-width: 1000px) {
	.enquiry {
		grid-template-columns: 5fr 7fr;
		gap: clamp(56px, 7vw, 112px);
		align-items: start;
	}
}

.enquiry__title {
	max-width: 16ch;
	margin-bottom: 1.25rem;
	font-size: var(--fs-h2);
	line-height: 1.04;
	letter-spacing: -0.035em;
}

.enquiry__intro > p {
	max-width: 46ch;
	color: var(--muted);
}

.enquiry__media {
	display: none;
	margin-top: 48px;
	aspect-ratio: 4 / 3;
	overflow: hidden;
}

@media (min-width: 1000px) {
	.enquiry__media {
		display: block;
	}
}

.enquiry__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.enquiry__form {
	padding: clamp(24px, 3.4vw, 56px);
	background: #fff;
}

.map__frame {
	position: relative;
	height: clamp(360px, 48vw, 560px);
	background: var(--stone);
}

.map__frame iframe {
	width: 100%;
	height: 100%;
	border: 0;
	filter: grayscale(0.35) contrast(1.02);
}

.map__placeholder {
	position: absolute;
	inset: 0;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 24px;
	padding: 24px;
	text-align: center;
	background:
		radial-gradient(circle at 50% 50%, rgba(255, 255, 255, 0.5), transparent 60%),
		repeating-linear-gradient(0deg, rgba(27, 26, 23, 0.04) 0 1px, transparent 1px 48px),
		repeating-linear-gradient(90deg, rgba(27, 26, 23, 0.04) 0 1px, transparent 1px 48px),
		var(--stone);
}

.map__address {
	margin: 0;
	font-size: clamp(1.25rem, 1rem + 1vw, 1.75rem);
	font-weight: 500;
	letter-spacing: -0.02em;
	color: var(--ink);
}

.map__actions {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 12px;
}

.gallery-strip__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 12px;
}

@media (min-width: 900px) {
	.gallery-strip__grid {
		grid-template-columns: repeat(4, minmax(0, 1fr));
		gap: 20px;
	}
	.gallery-strip__grid figure:nth-child(even) {
		margin-top: 64px;
	}
}

.gallery-strip figure {
	margin: 0;
	aspect-ratio: 4 / 5;
	overflow: hidden;
	background: var(--stone);
}

.gallery-strip img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* Thank you / 404 */
.thanks {
	display: flex;
	align-items: center;
	min-height: 72svh;
	padding-block: var(--section);
	background: var(--sand);
}

.thanks__inner {
	max-width: calc(820px + var(--gutter) * 2);
}

.thanks__icon {
	display: grid;
	place-items: center;
	width: 64px;
	height: 64px;
	margin-bottom: 32px;
	border-radius: 50%;
	background: var(--ink);
	color: #fff;
}

.thanks__icon .icon {
	width: 28px;
	height: 28px;
}

.thanks__title {
	margin-bottom: 1.25rem;
	font-size: var(--fs-h1);
	letter-spacing: -0.04em;
}

.thanks__lead {
	font-size: var(--fs-lead);
	color: var(--ink);
}

.thanks__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	margin-top: 2.25rem;
}

.thanks__actions .btn .icon {
	width: 18px;
	height: 18px;
}

/* Sitemap */
.sitemap {
	display: grid;
	gap: 48px 56px;
}

@media (min-width: 800px) {
	.sitemap {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (min-width: 1200px) {
	.sitemap {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

.sitemap__title {
	margin-bottom: 1rem;
	padding-bottom: 1rem;
	border-bottom: 1px solid var(--line-2);
	font-size: 1.25rem;
}

.sitemap ul {
	margin: 0;
	padding: 0;
	list-style: none;
}

.sitemap li {
	padding: 6px 0;
	font-size: 0.9375rem;
}

.sitemap a {
	text-decoration: none;
}

.sitemap a:hover {
	text-decoration: underline;
}

/* About quote */
.quote-block .statement {
	margin-bottom: 0;
}

/* Footer ------------------------------------------------------------------ */

.site-footer {
	padding-top: clamp(64px, 8vw, 120px);
	background: #141311;
	color: rgba(255, 255, 255, 0.64);
	font-size: 0.9375rem;
}

.site-footer a {
	color: rgba(255, 255, 255, 0.86);
	text-decoration: none;
	transition: color 0.3s;
}

.site-footer a:hover {
	color: #fff;
}

.site-footer__top {
	display: grid;
	gap: 48px 32px;
	padding-bottom: clamp(56px, 6vw, 88px);
}

@media (min-width: 700px) {
	.site-footer__top {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (min-width: 1100px) {
	.site-footer__top {
		grid-template-columns: 1.6fr 1fr 1fr 1.4fr;
		gap: 56px;
	}
}

.site-footer__logo img {
	width: 190px;
	margin-bottom: 24px;
}

.site-footer__brand p {
	max-width: 40ch;
}

.site-footer__heading {
	margin-bottom: 1.25rem;
	font-size: var(--fs-eyebrow);
	font-weight: 600;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.45);
}

.site-footer ul {
	margin: 0;
	padding: 0;
	list-style: none;
}

.site-footer__col li + li {
	margin-top: 0.6rem;
}

.site-footer address {
	margin-bottom: 1rem;
}

.site-footer__hours {
	margin-top: 1.25rem;
	font-size: 0.875rem;
	line-height: 1.7;
}

.social {
	display: flex;
	gap: 10px;
	margin-top: 1.75rem !important;
}

.social a {
	display: grid;
	place-items: center;
	width: 44px;
	height: 44px;
	border: 1px solid rgba(255, 255, 255, 0.18);
	transition: background-color 0.3s, border-color 0.3s;
}

.social a:hover {
	background: #fff;
	border-color: #fff;
	color: var(--ink);
}

.social .icon {
	width: 20px;
	height: 20px;
}

.site-footer__bottom {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: 12px 32px;
	padding-block: 28px;
	border-top: 1px solid rgba(255, 255, 255, 0.1);
	font-size: 0.8125rem;
	color: rgba(255, 255, 255, 0.45);
}

.site-footer__bottom p {
	margin: 0;
}

/* Floaters ---------------------------------------------------------------- */

.floaters {
	position: fixed;
	left: 20px;
	bottom: 20px;
	z-index: 90;
}

.floater {
	display: grid;
	place-items: center;
	width: 56px;
	height: 56px;
	border-radius: 50%;
	background: #1f8f4e;
	color: #fff;
	box-shadow: 0 12px 28px -10px rgba(0, 0, 0, 0.45);
	transition: transform 0.35s var(--ease), background-color 0.3s;
}

.floater:hover {
	color: #fff;
	background: #18773f;
	transform: translateY(-3px);
}

.floater .icon {
	width: 28px;
	height: 28px;
}

.callbar {
	position: fixed;
	inset: auto 0 0;
	z-index: 95;
	display: grid;
	grid-template-columns: auto 1fr;
	border-top: 1px solid var(--line);
	background: #fff;
	padding-bottom: env(safe-area-inset-bottom);
}

.callbar a {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	min-height: 58px;
	padding: 0 22px;
	font-weight: 600;
	text-decoration: none;
}

.callbar__call {
	border-right: 1px solid var(--line);
	color: var(--ink);
}

.callbar__quote {
	background: var(--ink);
	color: #fff;
}

.callbar__quote:hover {
	color: #fff;
}

.callbar .icon {
	width: 20px;
	height: 20px;
}

@media (max-width: 767px) {
	body {
		padding-bottom: 58px;
	}
	.floaters {
		bottom: 74px;
		left: auto;
		right: 14px;
	}
	.floater {
		width: 50px;
		height: 50px;
	}
}

@media (min-width: 768px) {
	.callbar {
		display: none;
	}
}

/* Reveal motion ----------------------------------------------------------- */

.js [data-reveal] {
	opacity: 0;
	transform: translateY(26px);
	transition: opacity 1s var(--ease), transform 1s var(--ease);
	transition-delay: calc(var(--d, 0) * 90ms);
}

.js [data-reveal].is-in {
	opacity: 1;
	transform: none;
}

.js [data-reveal="image"] {
	transform: none;
	clip-path: inset(10% 0 0 0);
	transition: opacity 1s var(--ease), clip-path 1.3s var(--ease);
	transition-delay: calc(var(--d, 0) * 90ms);
}

.js [data-reveal="image"] img {
	transform: scale(1.1);
	transition: transform 1.8s var(--ease);
}

.js [data-reveal="image"].is-in {
	clip-path: inset(0 0 0 0);
}

.js [data-reveal="image"].is-in img {
	transform: none;
}

@media (min-width: 1100px) {
	.js .cat-grid .cat-card:nth-child(even)[data-reveal] {
		transform: translateY(74px);
	}
	.js .cat-grid .cat-card:nth-child(even)[data-reveal].is-in {
		transform: translateY(48px);
	}
}

@media (prefers-reduced-motion: reduce) {
	html {
		scroll-behavior: auto;
	}
	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		transition-delay: 0s !important;
	}
	.js [data-reveal],
	.js [data-reveal="image"] {
		opacity: 1;
		transform: none;
		clip-path: none;
	}
	.js [data-reveal="image"] img {
		transform: none;
	}
}

@media (max-width: 599px) {
	.hero__eyebrow {
		letter-spacing: 0.1em;
	}
	.hero__eyebrow::before {
		display: none;
	}
}

/* Print */
@media print {
	.site-header,
	.floaters,
	.callbar,
	.cta-band,
	.quote-dialog,
	.mnav {
		display: none !important;
	}
	body:not(.has-dark-hero) .site-main {
		padding-top: 0;
	}
}

/* ==========================================================================
   Mobile & tablet refinements
   ========================================================================== */

.chip {
	min-height: 44px;
}

@media (max-width: 767px) {
	/* Horizontal, swipeable rows */
	.cat-grid,
	.advice__grid,
	.showcase .product-grid {
		display: grid;
		grid-auto-flow: column;
		grid-template-columns: none;
		grid-auto-columns: 80%;
		gap: 12px;
		margin-inline: calc(var(--gutter) * -1);
		padding-inline: var(--gutter);
		padding-bottom: 8px;
		overflow-x: auto;
		overscroll-behavior-x: contain;
		scroll-snap-type: x mandatory;
		scroll-padding-inline: var(--gutter);
		scrollbar-width: none;
	}
	.cat-grid::-webkit-scrollbar,
	.advice__grid::-webkit-scrollbar,
	.showcase .product-grid::-webkit-scrollbar {
		display: none;
	}
	.cat-grid > *,
	.advice__grid > *,
	.showcase .product-grid > * {
		scroll-snap-align: start;
	}
	.showcase .product-grid {
		grid-auto-columns: 66%;
	}
	.showcase .product-card[hidden] {
		display: none;
	}
	.cat-card {
		min-height: 0;
		aspect-ratio: 4 / 5;
	}
	.advice-card {
		min-height: 260px;
	}
	.swipe-hint {
		display: flex;
	}

	/* Catalogue grids: two compact columns */
	.product-grid,
	.related .product-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 28px 12px;
	}
	.product-grid .product-card__body {
		padding-top: 12px;
	}
	.product-grid .product-card__title {
		font-size: 1.0625rem;
	}
	.product-grid .product-card__meta {
		font-size: 0.6875rem;
		letter-spacing: 0.1em;
	}
	.product-grid .product-card__format {
		margin-bottom: 0.5rem;
		font-size: 0.8125rem;
		line-height: 1.4;
	}
	.product-grid .product-card__cta {
		font-size: 0.875rem;
	}
	.product-card__count {
		left: 8px;
		top: 8px;
		font-size: 0.6875rem;
	}
	.product-card__placeholder {
		padding: 14px;
		font-size: 1.25rem;
	}

	/* Sticky filter bar */
	.filters {
		position: sticky;
		top: var(--header-h);
		z-index: 20;
		gap: 10px 12px;
		margin-inline: calc(var(--gutter) * -1);
		padding: 12px var(--gutter);
		background: inherit;
		background-color: var(--paper);
		box-shadow: 0 1px 0 var(--line);
		border-bottom: 0;
	}
	.section--sand .filters {
		background-color: var(--sand);
	}
	.filters__chips {
		flex-wrap: nowrap;
		overflow-x: auto;
		scrollbar-width: none;
		margin-right: calc(var(--gutter) * -1);
		padding-right: var(--gutter);
	}
	.filters__chips::-webkit-scrollbar {
		display: none;
	}
	.chip {
		flex: none;
		min-height: 40px;
		padding: 0.45rem 0.95rem;
		font-size: 0.875rem;
	}
	.filters__select {
		flex: 1 1 auto;
	}
	.filters__select select {
		width: 100%;
		min-height: 40px;
	}
	.filters__count {
		font-size: 0.8125rem;
	}

	/* Section headings */
	.section-head {
		margin-bottom: 32px;
	}
	.section-head__action .btn {
		min-height: 46px;
	}

	/* Product detail */
	.pdp {
		padding-top: 16px;
	}
	.pdp__crumbs ol {
		margin-bottom: 1rem;
	}
	.pdp__grid {
		gap: 28px;
	}
	.pdp__stage {
		margin-inline: calc(var(--gutter) * -1);
		aspect-ratio: 5 / 4;
	}
	.pdp__thumbs {
		display: flex;
		gap: 8px;
		margin-inline: calc(var(--gutter) * -1);
		padding: 0 var(--gutter) 4px;
		overflow-x: auto;
		scroll-snap-type: x proximity;
		scrollbar-width: none;
	}
	.pdp__thumbs::-webkit-scrollbar {
		display: none;
	}
	.pdp__thumbs li {
		flex: 0 0 60px;
		scroll-snap-align: start;
	}
	.pdp__title {
		margin-bottom: 1.25rem;
	}
	.pdp__meta div {
		min-width: 0;
	}
	.pdp__actions .btn {
		flex: 1 1 100%;
	}
	.colour-grid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
		gap: 18px 10px;
	}
	.colour__name {
		margin-top: 8px;
		font-size: 0.8125rem;
		line-height: 1.3;
	}

	/* Page heroes */
	.page-hero--image {
		min-height: max(420px, 62svh);
	}
	.page-hero--tall {
		min-height: max(480px, 72svh);
	}
	.page-hero__actions .btn,
	.hero__actions .btn {
		flex: 1 1 auto;
	}

	/* Statement & intro */
	.statement {
		margin-bottom: 40px;
	}

	/* Trust */
	.trust__item {
		display: grid;
		grid-template-columns: 40px 1fr;
		gap: 0 12px;
		padding: 22px 0 24px;
	}
	.trust__icon {
		grid-row: span 2;
		margin: 2px 0 0;
		width: 28px;
		height: 28px;
	}

	/* Highlights (carpets page) */
	.highlights li {
		padding-right: 12px;
	}

	/* Split cards on flooring page */
	.split-card__media {
		margin-inline: calc(var(--gutter) * -1);
		aspect-ratio: 4 / 3;
		margin-bottom: 24px;
	}

	/* Story images bleed edge-to-edge */
	.story__media,
	.install__media {
		margin-inline: calc(var(--gutter) * -1);
		aspect-ratio: 4 / 3;
	}

	/* Forms */
	.cta-band__form,
	.enquiry__form {
		margin-inline: calc(var(--gutter) * -1);
		padding: 28px var(--gutter);
	}
	.qform__foot .btn {
		width: 100%;
	}
	.qform__alt {
		width: 100%;
		text-align: center;
	}

	/* Article aside */
	.aside-card {
		margin-inline: calc(var(--gutter) * -1);
		padding: 28px var(--gutter);
	}

	/* Contact */
	.contact-grid {
		grid-template-columns: 1fr;
	}
	.contact-item {
		display: grid;
		grid-template-columns: 40px 1fr;
		gap: 0 12px;
		padding: 22px 0;
	}
	.contact-item__icon {
		grid-row: span 4;
		margin: 2px 0 0;
		width: 26px;
		height: 26px;
	}
	.map__frame {
		height: 340px;
	}

	/* Footer */
	.site-footer__top {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 40px 24px;
	}
	.site-footer__brand,
	.site-footer__contact {
		grid-column: 1 / -1;
	}
	.site-footer__col li + li {
		margin-top: 0.75rem;
	}
	.site-footer__bottom {
		padding-bottom: 20px;
	}

	/* Quote drawer full-screen on phones */
	.quote-dialog {
		width: 100vw;
	}
	.quote-dialog__panel {
		padding: 72px var(--gutter) 32px;
	}
	.quote-dialog__intro {
		padding-right: 0;
	}

	/* Hero controls */
	.hero__controls {
		padding-bottom: 14px;
	}
	.hero__dot {
		width: 34px;
	}
	.hero__inner {
		padding-bottom: 72px;
	}
	.hero__lead {
		margin-bottom: 1.75rem;
	}
}

/* Swipe hint for mobile carousels */
.swipe-hint {
	display: none;
	align-items: center;
	gap: 8px;
	margin: 14px 0 0;
	font-size: 0.8125rem;
	color: var(--muted);
}

.swipe-hint .icon {
	width: 16px;
	height: 16px;
}

/* Tablet */
@media (min-width: 768px) and (max-width: 1099px) {
	.hero {
		min-height: clamp(560px, 68svh, 720px);
	}
	.cat-card {
		min-height: 400px;
	}
	.pdp__stage {
		aspect-ratio: 4 / 3;
	}
}

/* Colour name list (products without swatch photography) */
.colour-names {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.colour-names li {
	padding: 0.45rem 0.8rem;
	border: 1px solid var(--line-2);
	font-size: 0.875rem;
	color: var(--ink);
}

/* Mobile action bar */
.callbar {
	grid-template-columns: auto auto 1fr;
}

.callbar__wa {
	border-right: 1px solid var(--line);
	color: #1f8f4e;
}

.callbar a {
	padding: 0 16px;
	font-size: 0.9375rem;
}

@media (max-width: 767px) {
	.floaters {
		display: none;
	}
}

@media (max-width: 359px) {
	.callbar__call span,
	.callbar__wa span {
		position: absolute;
		width: 1px;
		height: 1px;
		overflow: hidden;
		clip: rect(0 0 0 0);
	}
}

/* Grid children must be allowed to shrink (swipe rows inside them are wider than the screen) */
.pdp__grid > *,
.article > *,
.story__grid > *,
.install__grid > *,
.cta-band__inner > *,
.enquiry > *,
.intro__grid > * {
	min-width: 0;
}

@media (max-width: 767px) {
	.page-hero .breadcrumbs li[aria-current="page"] {
		display: none;
	}
	.page-hero .breadcrumbs li:nth-last-child(2)::after {
		content: "/";
		margin-left: 0.6rem;
		opacity: 0.5;
	}
	.page-hero__title {
		overflow-wrap: anywhere;
		hyphens: auto;
	}
	.prose h2 {
		margin-top: 2em;
	}
}

@media (max-width: 599px) {
	.hero__label {
		display: none;
	}
	.hero__controls {
		justify-content: flex-start;
	}
	.callbar__quote {
		white-space: nowrap;
	}
}

/* Keep visually-hidden labels inside their scroll containers */
.pdp__thumb,
.hero__dot,
.chip,
.social a,
.callbar a,
.floater {
	position: relative;
}

/* Larger logo */
:root {
	--header-h: 80px;
}
@media (min-width: 1100px) {
	:root {
		--header-h: 100px;
	}
}
.brand__logo--dark {
	height: 64px;
}
.brand__logo--light {
	width: 250px;
}
@media (min-width: 1100px) {
	.brand__logo--dark {
		height: 82px;
	}
	.brand__logo--light {
		width: 310px;
	}
}
@media (max-width: 374px) {
	.brand__logo--dark {
		height: 56px;
	}
	.brand__logo--light {
		width: 214px;
	}
}
.site-footer__logo img {
	width: 260px;
}

.brand__logo--light { max-width: none; }

/* Call buttons (WhatsApp removed): cellphone number */
.floater {
	width: auto;
	height: 56px;
	gap: 10px;
	padding: 0 22px 0 18px;
	border-radius: 999px;
	display: inline-flex;
	align-items: center;
	background: var(--ink);
	font-weight: 600;
	font-size: 0.9375rem;
	color: #fff;
	text-decoration: none;
}
.floater:hover {
	background: var(--navy);
	color: #fff;
}
.floater .icon {
	width: 20px;
	height: 20px;
}
.callbar {
	grid-template-columns: 1fr 1fr;
}
.callbar__call {
	white-space: nowrap;
}

.floaters { left: auto; right: 24px; bottom: 24px; }

/* ==========================================================================
   Homepage motion (transform/opacity only; disabled for reduced motion)
   ========================================================================== */

/* Hero headline: words rise out of a mask */
.hero__title .hero__line {
	animation: none;
}

.hero__title .w,
.split .w {
	display: inline-block;
	overflow: hidden;
	vertical-align: top;
	padding-bottom: 0.1em;
	margin-bottom: -0.1em;
}

.hero__title .w > span {
	display: inline-block;
	transform: translateY(108%);
	animation: word-up 1.15s var(--ease) forwards;
	animation-delay: calc(0.2s + var(--i) * 0.075s);
}

@keyframes word-up {
	to {
		transform: none;
	}
}

.hero__eyebrow {
	animation: tracking-in 1.4s var(--ease) both;
}

@keyframes tracking-in {
	from {
		opacity: 0;
		letter-spacing: 0.4em;
	}
	to {
		opacity: 1;
	}
}

.hero__media,
.hero__inner {
	will-change: transform;
}

/* Section headings: word mask reveal when scrolled into view */
.split .w > span {
	display: inline-block;
	transform: translateY(108%);
	transition: transform 1s var(--ease);
	transition-delay: calc(var(--i) * 55ms);
}

.is-in .split .w > span,
.split.is-in .w > span {
	transform: none;
}

/* Statement lights up word by word as you scroll */
.statement--lit .sw {
	color: var(--taupe);
	transition: color 0.45s var(--ease);
}

.statement--lit .sw.on {
	color: var(--ink);
}

/* Category cards: 3D tilt with a soft light sheen (desktop pointers only) */
@media (min-width: 1100px) {
	.cat-grid .cat-card:nth-child(even),
	.js .cat-grid .cat-card:nth-child(even)[data-reveal],
	.js .cat-grid .cat-card:nth-child(even)[data-reveal].is-in {
		transform: none;
		translate: 0 48px;
	}
	.js .cat-grid .cat-card:nth-child(even)[data-reveal]:not(.is-in) {
		transform: translateY(26px);
	}
}

.cat-card {
	transform-style: preserve-3d;
}

.cat-card::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	pointer-events: none;
	background: radial-gradient(420px circle at var(--mx, 50%) var(--my, 50%), rgba(255, 255, 255, 0.18), transparent 45%);
	opacity: 0;
	transition: opacity 0.4s var(--ease);
}

.cat-card.is-tilting {
	transition: transform 0.12s linear, opacity 1s var(--ease);
}

.cat-card.is-tilting::after {
	opacity: 1;
}

.cat-card.is-settling {
	transition: transform 0.7s var(--ease), opacity 1s var(--ease);
}

/* Brand ribbon */
.brands {
	overflow: hidden;
}

.marquee {
	margin-top: 0.5rem;
	-webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
	mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
}

.marquee__track {
	display: flex;
	width: max-content;
	animation: marquee 38s linear infinite;
}

.marquee:hover .marquee__track {
	animation-play-state: paused;
}

.marquee .brands__list {
	flex-wrap: nowrap;
	padding-right: clamp(24px, 3.4vw, 56px);
	gap: 0 clamp(24px, 3.4vw, 56px);
}

.marquee .brands__list li {
	white-space: nowrap;
	font-size: clamp(1.75rem, 1.2rem + 2vw, 3.25rem);
}

.marquee .brands__list li::after {
	content: "\2022";
	margin-left: clamp(24px, 3.4vw, 56px);
	color: var(--line-2);
}

@keyframes marquee {
	to {
		transform: translateX(-50%);
	}
}

/* Scroll progress line under the header */
.scroll-progress {
	position: fixed;
	left: 0;
	right: 0;
	top: var(--header-h);
	z-index: 101;
	height: 2px;
	background: var(--navy);
	transform: scaleX(0);
	transform-origin: left;
	pointer-events: none;
}

/* Product cards: gentle image settle when revealed */
.js .showcase .product-card[data-reveal] .product-card__media img {
	transform: scale(1.12);
	transition: transform 1.6s var(--ease);
}

.js .showcase .product-card[data-reveal].is-in .product-card__media img {
	transform: none;
}

.js .showcase .product-card[data-reveal].is-in .product-card__link:hover .product-card__media img {
	transform: scale(1.05);
}

/* CTA background drifts slightly with scroll */
.cta-band__media img {
	will-change: transform;
}

/* Magnetic hero buttons */
.hero__actions .btn {
	transition: background-color 0.35s var(--ease), color 0.35s var(--ease), border-color 0.35s var(--ease), transform 0.4s var(--ease);
}

@media (prefers-reduced-motion: reduce) {
	.hero__title .w > span,
	.split .w > span {
		transform: none !important;
		animation: none !important;
	}
	.statement--lit .sw {
		color: inherit;
	}
	.marquee__track {
		animation: none;
		flex-wrap: wrap;
	}
	.marquee .brands__list[aria-hidden] {
		display: none;
	}
	.scroll-progress {
		display: none;
	}
}

/* Homepage product showcase: mobile layout */
.showcase__more {
	display: none;
}

@media (max-width: 767px) {
	.showcase .section-head__action {
		display: none;
	}
	.showcase__more {
		display: block;
		margin: 32px 0 0;
	}
	.showcase__more .btn {
		width: 100%;
	}
	/* Two-column grid instead of a sideways carousel */
	.showcase .product-grid {
		grid-auto-flow: row;
		grid-template-columns: repeat(2, minmax(0, 1fr));
		grid-auto-columns: auto;
		gap: 28px 12px;
		margin-inline: 0;
		padding: 0;
		overflow: visible;
		scroll-snap-type: none;
	}
	/* Filter row sits in the flow (not sticky) with chips and count on one line */
	.showcase .filters {
		position: static;
		display: flex;
		flex-wrap: nowrap;
		align-items: center;
		gap: 12px;
		margin: 0 0 24px;
		padding: 0 0 16px;
		background: none;
		box-shadow: none;
		border-bottom: 1px solid var(--line);
	}
	.showcase .filters__chips {
		flex: 1 1 auto;
		min-width: 0;
		margin-right: 0;
		padding-right: 0;
	}
	.showcase .filters__count {
		flex: none;
		margin: 0;
		white-space: nowrap;
	}
	.showcase .chip {
		padding: 0.45rem 0.8rem;
	}
}

@media (max-width: 767px) {
	.showcase .filters__count {
		display: none;
	}
	.showcase .filters__chips {
		flex-wrap: wrap;
	}
}

/* ==========================================================================
   Ads landing page (carpet installation Johannesburg)
   ========================================================================== */

/* 1. Hero: copy + form card */
.lp-hero {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	background: #1f1c19;
	color: rgba(255, 255, 255, 0.86);
}

.lp-hero__media {
	position: absolute;
	inset: 0;
	z-index: -1;
}

.lp-hero__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.lp-hero__media::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(90deg, rgba(14, 12, 10, 0.9) 0%, rgba(14, 12, 10, 0.74) 55%, rgba(14, 12, 10, 0.5) 100%);
}

.lp-hero__inner {
	display: grid;
	gap: 40px;
	align-items: center;
	padding-top: calc(var(--header-h) + clamp(32px, 5vw, 72px));
	padding-bottom: clamp(48px, 6vw, 96px);
}

@media (min-width: 1000px) {
	.lp-hero__inner {
		grid-template-columns: minmax(0, 1.1fr) minmax(0, 0.9fr);
		gap: clamp(40px, 5vw, 80px);
	}
}

.lp-pill {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	margin-bottom: 1.5rem;
	padding: 7px 16px 7px 10px;
	border: 1px solid rgba(255, 255, 255, 0.22);
	border-radius: 999px;
	background: rgba(255, 255, 255, 0.08);
	font-size: 0.8125rem;
	font-weight: 600;
	letter-spacing: 0.02em;
	color: #fff;
}

.lp-pill .icon {
	width: 18px;
	height: 18px;
	color: var(--taupe);
}

.lp-hero__title {
	margin-bottom: 1.25rem;
	font-size: clamp(2.25rem, 1.4rem + 3.2vw, 4.25rem);
	line-height: 1.02;
	letter-spacing: -0.035em;
	color: #fff;
}

.lp-hero__title span {
	display: block;
	color: var(--taupe);
}

.lp-hero__title--long {
	font-size: clamp(2rem, 1.35rem + 2.5vw, 3.5rem);
	line-height: 1.05;
}

.lp-hero__tagline {
	max-width: 40ch;
	margin-bottom: 1rem;
	font-size: var(--fs-lead);
	font-weight: 600;
	line-height: 1.4;
	color: #fff;
}

.lp-hero__lead {
	max-width: 58ch;
	font-size: 1.0625rem;
	line-height: 1.65;
	color: rgba(255, 255, 255, 0.9);
}

.lp-hero__sub {
	max-width: 58ch;
	font-size: 0.9375rem;
	color: rgba(255, 255, 255, 0.7);
}

.lp-checks {
	display: grid;
	gap: 12px 28px;
	margin: 1.75rem 0 2rem;
	padding: 0;
	list-style: none;
}

@media (min-width: 640px) {
	.lp-checks {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

.lp-checks li {
	display: flex;
	gap: 12px;
	align-items: flex-start;
	font-size: 0.96875rem;
	font-weight: 500;
	line-height: 1.45;
	color: #fff;
}

.lp-checks .icon {
	flex: none;
	width: 22px;
	height: 22px;
	padding: 3px;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.14);
	color: #fff;
}

.lp-hero__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
}

.lp-form-card {
	padding: clamp(24px, 3vw, 40px);
	background: #fff;
	color: var(--ink-2);
	box-shadow: 0 40px 80px -40px rgba(0, 0, 0, 0.6);
	scroll-margin-top: calc(var(--header-h) + 16px);
}

.lp-form-card__title {
	margin-bottom: 0.4rem;
	font-size: clamp(1.5rem, 1.3rem + 0.8vw, 2rem);
	letter-spacing: -0.025em;
}

.lp-form-card__intro {
	margin-bottom: 1.5rem;
	font-size: 0.9375rem;
	color: var(--muted);
}

/* Form grid: name full, phone + email, area + type, message full */
@media (min-width: 640px) {
	.lp-form-card .qform__grid > .field:first-child,
	.lp-close__form .qform__grid > .field:first-child {
		grid-column: 1 / -1;
	}
	.lp-form-card .qform__grid > .field:nth-child(5),
	.lp-close__form .qform__grid > .field:nth-child(5) {
		grid-column: auto;
	}
}

.qform [type="submit"] {
	min-height: 54px;
}

.lp-form-card .qform__foot .btn,
.lp-close__form .qform__foot .btn {
	width: 100%;
}

/* 2. Stats strip */
.lp-stats {
	background: var(--navy);
	color: #fff;
}

.lp-stats__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	margin: 0;
	padding: 0;
	list-style: none;
}

@media (min-width: 900px) {
	.lp-stats__grid {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

.lp-stats__grid li {
	display: grid;
	gap: 6px;
	align-content: start;
	padding: clamp(24px, 3vw, 40px) clamp(12px, 2vw, 32px);
	text-align: center;
	border-left: 1px solid rgba(255, 255, 255, 0.14);
}

.lp-stats__grid li:nth-child(odd) {
	border-left: 0;
}

@media (max-width: 899px) {
	.lp-stats__grid li:nth-child(n + 3) {
		border-top: 1px solid rgba(255, 255, 255, 0.14);
	}
}

@media (min-width: 900px) {
	.lp-stats__grid li:nth-child(3) {
		border-left: 1px solid rgba(255, 255, 255, 0.14);
	}
}

.lp-stats__value {
	font-size: clamp(2rem, 1.5rem + 2vw, 3.25rem);
	font-weight: 700;
	line-height: 1;
	letter-spacing: -0.03em;
}

.lp-stats__label {
	font-size: 0.875rem;
	color: rgba(255, 255, 255, 0.75);
}

/* Section headings */
.lp-head {
	margin-bottom: clamp(32px, 4vw, 56px);
}

.lp-head--center {
	max-width: 760px;
	margin-inline: auto;
	text-align: center;
}

.lp-head--center .eyebrow {
	justify-content: center;
}

.lp-head--split {
	display: flex;
	flex-wrap: wrap;
	gap: 20px 40px;
	align-items: flex-end;
	justify-content: space-between;
}

.lp-head__title {
	margin-bottom: 0;
	font-size: clamp(1.875rem, 1.3rem + 2vw, 3rem);
	line-height: 1.06;
	letter-spacing: -0.035em;
}

.lp-head__intro {
	margin: 1rem 0 0;
	font-size: var(--fs-lead);
	color: var(--muted);
}

.lp-accent {
	color: var(--navy);
}

/* 3. Card grid */
.lp-cards {
	display: grid;
	gap: 16px;
	margin: 0;
	padding: 0;
	list-style: none;
}

@media (min-width: 700px) {
	.lp-cards--2,
	.lp-cards--3 {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (min-width: 1100px) {
	.lp-cards--3 {
		grid-template-columns: repeat(3, minmax(0, 1fr));
		gap: 24px;
	}
}

.lp-card {
	margin: 0;
	padding: clamp(24px, 2.6vw, 36px);
	border: 1px solid var(--line);
	background: #fff;
	transition: border-color 0.4s var(--ease), box-shadow 0.4s var(--ease), transform 0.4s var(--ease);
}

.lp-card:hover {
	border-color: var(--line-2);
	box-shadow: 0 24px 48px -32px rgba(27, 26, 23, 0.35);
}

.lp-card__icon {
	display: inline-grid;
	place-items: center;
	width: 52px;
	height: 52px;
	margin-bottom: 20px;
	background: var(--sand);
	color: var(--navy);
}

.lp-card__icon .icon {
	width: 26px;
	height: 26px;
}

.lp-card__title {
	margin-bottom: 0.6rem;
	font-size: 1.25rem;
	letter-spacing: -0.02em;
}

.lp-card p {
	margin: 0;
	color: var(--muted);
}

/* 4. Catalogue */
.lp-catalog .product-grid {
	gap: 32px 16px;
}

@media (max-width: 599px) {
	.lp-catalog .product-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (min-width: 960px) {
	.lp-catalog .product-grid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
		gap: 48px 24px;
	}
}

/* 5. Split with floating badge */
.lp-split__grid {
	display: grid;
	gap: 48px;
	align-items: center;
}

@media (min-width: 1000px) {
	.lp-split__grid {
		grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
		gap: clamp(48px, 6vw, 96px);
	}
}

.lp-features {
	display: grid;
	gap: 18px;
	margin: 2rem 0 2.25rem;
	padding: 0;
	list-style: none;
}

.lp-features li {
	display: flex;
	gap: 16px;
	align-items: center;
	font-size: 1.0625rem;
	font-weight: 500;
	color: var(--ink);
}

.lp-features__icon {
	display: inline-grid;
	flex: none;
	place-items: center;
	width: 44px;
	height: 44px;
	background: var(--sand);
	color: var(--navy);
}

.lp-split__media {
	position: relative;
	margin-bottom: 28px;
}

.lp-split__media img {
	display: block;
	width: 100%;
	aspect-ratio: 4 / 5;
	object-fit: cover;
}

@media (min-width: 700px) and (max-width: 999px) {
	.lp-split__media img {
		aspect-ratio: 16 / 10;
	}
}

.lp-badge {
	position: absolute;
	left: clamp(-28px, -2vw, -12px);
	bottom: -28px;
	display: grid;
	gap: 2px;
	padding: 20px 26px;
	background: var(--navy);
	color: #fff;
	box-shadow: 0 24px 48px -24px rgba(4, 45, 107, 0.6);
}

@media (max-width: 699px) {
	.lp-badge {
		left: 16px;
	}
}

.lp-badge__value {
	font-size: 2rem;
	font-weight: 700;
	line-height: 1;
	letter-spacing: -0.03em;
}

.lp-badge__label {
	font-size: 0.8125rem;
	color: rgba(255, 255, 255, 0.8);
}

/* 6. Application cards */
.lp-app {
	display: flex;
	flex-direction: column;
	background: #fff;
	scroll-margin-top: calc(var(--header-h) + 16px);
}

.lp-app__media img {
	display: block;
	width: 100%;
	aspect-ratio: 4 / 3;
	object-fit: cover;
}

.lp-app__body {
	display: flex;
	flex: 1;
	flex-direction: column;
	align-items: flex-start;
	padding: clamp(24px, 2.6vw, 32px);
}

.lp-app__title {
	margin-bottom: 0.75rem;
	font-size: 1.3125rem;
	line-height: 1.2;
	letter-spacing: -0.02em;
}

.lp-app__body p {
	color: var(--muted);
}

.lp-app__more {
	margin-bottom: 1rem;
}

.lp-app__more summary {
	display: inline-flex;
	gap: 6px;
	align-items: center;
	font-weight: 600;
	color: var(--navy);
	cursor: pointer;
	list-style: none;
}

.lp-app__more summary::-webkit-details-marker {
	display: none;
}

.lp-app__more summary::after {
	content: "+";
	font-size: 1.125rem;
	line-height: 1;
}

.lp-app__more[open] summary::after {
	content: "\2212";
}

.lp-app__more[open] summary {
	margin-bottom: 0.75rem;
}

.lp-app__cta {
	margin-top: auto;
	padding-top: 0.5rem;
}

.lp-app__cta strong {
	color: var(--ink);
}

/* Reviews */
.lp-review blockquote {
	margin: 0 0 1.25rem;
	font-size: var(--fs-lead);
	line-height: 1.55;
	color: var(--ink);
}

.lp-review figcaption {
	color: var(--muted);
}

/* 7. FAQ cards */
.lp-faq__list {
	display: grid;
	gap: 12px;
	max-width: 880px;
	margin-inline: auto;
}

.lp-faq__item {
	border: 1px solid var(--line);
	background: #fff;
	transition: border-color 0.3s var(--ease), box-shadow 0.3s var(--ease);
}

.lp-faq__item[open] {
	border-color: var(--line-2);
	box-shadow: 0 20px 40px -32px rgba(27, 26, 23, 0.35);
}

.lp-faq__item summary {
	display: flex;
	gap: 16px;
	align-items: center;
	justify-content: space-between;
	padding: 20px 24px;
	font-size: 1.0625rem;
	font-weight: 600;
	color: var(--ink);
	cursor: pointer;
	list-style: none;
}

.lp-faq__item summary::-webkit-details-marker {
	display: none;
}

.lp-faq__item summary .icon {
	flex: none;
	transition: transform 0.3s var(--ease);
}

.lp-faq__item[open] summary .icon {
	transform: rotate(180deg);
}

.lp-faq__item p {
	margin: 0;
	padding: 0 24px 22px;
	color: var(--muted);
}

/* 8. Closing CTA */
.lp-close {
	padding-block: var(--section);
	background: var(--ink);
	color: rgba(255, 255, 255, 0.82);
	scroll-margin-top: var(--header-h);
}

.lp-close__inner {
	max-width: 880px;
	text-align: center;
}

.lp-close__title {
	margin-bottom: 1rem;
	font-size: clamp(1.875rem, 1.3rem + 2vw, 3rem);
	line-height: 1.06;
	letter-spacing: -0.035em;
	color: #fff;
}

.lp-close__lead {
	max-width: 62ch;
	margin-inline: auto;
	font-size: var(--fs-lead);
}

.lp-close__actions {
	display: flex;
	justify-content: center;
	margin: 1.75rem 0 2.5rem;
}

.lp-close__form {
	padding: clamp(24px, 3vw, 40px);
	background: #fff;
	color: var(--ink-2);
	text-align: left;
}

/* Landing header: phone always visible on desktop */
@media (min-width: 900px) {
	.page-template-templates-ads-carpet .site-header__phone,
	.page-template-templates-ads-laminate .site-header__phone,
	.page-template-templates-ads-vinyl .site-header__phone {
		display: inline-flex;
	}
}

@media (max-width: 767px) {
	.lp-hero__inner {
		padding-top: calc(var(--header-h) + 24px);
	}
	.lp-form-card,
	.lp-close__form {
		margin-inline: calc(var(--gutter) * -1);
		padding: 28px var(--gutter);
	}
	.lp-hero__actions .btn {
		flex: 1 1 100%;
		justify-content: center;
	}
}

/* Ads thank-you pages */
.ty-hero__inner {
	max-width: calc(880px + var(--gutter) * 2);
	padding-top: calc(var(--header-h) + clamp(48px, 7vw, 112px));
	padding-bottom: clamp(56px, 7vw, 112px);
	text-align: center;
}

.ty-hero__icon {
	display: grid;
	place-items: center;
	width: 72px;
	height: 72px;
	margin: 0 auto 24px;
	border-radius: 50%;
	background: #fff;
	color: var(--navy);
	box-shadow: 0 0 0 10px rgba(255, 255, 255, 0.12);
}

.ty-hero__icon .icon {
	width: 32px;
	height: 32px;
}

.ty-hero__title span {
	display: block;
}

.ty-hero__lead {
	max-width: 60ch;
	margin-inline: auto;
}

.ty-hero__actions,
.ty-close__actions {
	justify-content: center;
	flex-wrap: wrap;
	gap: 12px;
}

.ty-hero__actions {
	margin-top: 2rem;
}

.ty-close__actions {
	margin-bottom: 0;
}

.ty-steps__list {
	counter-reset: none;
}

.ty-step {
	position: relative;
}

.ty-step__num {
	position: absolute;
	top: clamp(24px, 2.6vw, 36px);
	right: clamp(24px, 2.6vw, 36px);
	font-size: 2.5rem;
	font-weight: 700;
	line-height: 1;
	letter-spacing: -0.04em;
	color: var(--line-2);
}

@media (max-width: 767px) {
	.ty-hero__inner {
		padding-top: calc(var(--header-h) + 40px);
	}
	.ty-hero__actions .btn,
	.ty-close__actions .btn {
		flex: 1 1 100%;
		justify-content: center;
	}
}

/* Buttons inside article text keep their own colours */
.prose .btn {
	color: var(--btn-fg);
	text-decoration: none;
}
.prose .btn:hover {
	color: var(--btn-fg);
}
