/*
 * Meld: Engine, dental section kit.
 *
 * Every rule is scoped under .k-sec, a k- class, or html:has(.k-thumb), so the
 * kit can sit inside any theme without touching it. Theming runs only through
 * the custom properties on :root: the site's five colours, two fonts and two
 * radii re-skin every section. Section roots are matched as .k-sec[data-k]
 * and components with two classes, so theme rules such as ".se-page p" never
 * win against the kit.
 */

/* ------------------------------------------------------------------ Tokens */

:root {
	/* From the site's design tokens. */
	--k-brand: var(--se-color-primary, #0e6b5e);
	--k-second: var(--se-color-secondary, #b98a3e);
	--k-accent: var(--se-color-accent, #2a9fb3);
	--k-bg: var(--se-color-bg, #ffffff);
	--k-ink: var(--se-color-text, #26302e);
	--k-font-head: var(--se-font-heading, Georgia, "Times New Roman", serif);
	--k-font-body: var(--se-font-body, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif);
	--k-radius: var(--se-radius, 14px);
	--k-radius-lg: var(--se-radius-lg, 24px);
	--k-on-brand: #fff;

	/* Layout. */
	--k-max: 70rem;
	--k-gutter: clamp(1.25rem, 4vw, 2.5rem);
	--k-space: clamp(3.5rem, 2.25rem + 4vw, 6.5rem);
	--k-photo-radius: var(--k-radius-lg) var(--k-radius-lg) var(--k-radius-lg) calc(var(--k-radius-lg) * 3);
	--k-photo-radius-alt: var(--k-radius-lg) calc(var(--k-radius-lg) * 3) var(--k-radius-lg) var(--k-radius-lg);

	/* Derived: the band rhythm, text, lines and the dark band. */
	--k-band-a: color-mix(in srgb, var(--k-second) 12%, var(--k-bg));
	--k-band-b: color-mix(in srgb, var(--k-accent) 22%, var(--k-bg));
	--k-ink-strong: color-mix(in srgb, var(--k-ink) 88%, #000);
	--k-muted: color-mix(in srgb, var(--k-ink) 80%, var(--k-bg));
	--k-line: color-mix(in srgb, var(--k-ink) 10%, var(--k-band-a));
	--k-go: var(--k-brand);
	--k-brand-ink: var(--k-brand);
	--k-dark: var(--k-brand);
	--k-deep: color-mix(in srgb, var(--k-brand) 30%, #0a1311);
	--k-soft: color-mix(in srgb, var(--k-brand) 22%, #fff);
	--k-soft-ink: color-mix(in srgb, var(--k-brand) 45%, #000);
	--k-on-dark-muted: color-mix(in srgb, var(--k-on-brand) 86%, var(--k-dark));
	--k-tag-1: color-mix(in srgb, var(--k-accent) 34%, #fff);
	--k-tag-2: color-mix(in srgb, var(--k-brand) 24%, #fff);
	--k-tag-3: color-mix(in srgb, var(--k-second) 38%, #fff);
	--k-star: #a96c0c;
	--k-star-on-dark: #f3c962;
	--k-shadow: 0 1px 2px color-mix(in srgb, var(--k-ink) 6%, transparent), 0 18px 40px -24px color-mix(in srgb, var(--k-ink) 28%, transparent);
}

/* Keep brand fills and brand text dark enough for AA, whatever the brand. */
@supports (color: oklch(from red l c h)) {
	:root {
		--k-go: oklch(from var(--k-brand) min(l, 0.52) c h);
		--k-brand-ink: oklch(from var(--k-brand) min(l, 0.5) c h);
		--k-dark: oklch(from var(--k-brand) min(l, 0.48) c h);
	}
}

/* -------------------------------------------------------------- Foundation */

/*
 * A rule here that reaches a section root stays at two classes or lighter.
 * A rebuilt section's own root rule is written .k-x--v.k-sec[data-k] (three,
 * SE_Kit_Custom::ROOT_WEIGHT) and must outweigh it, or the section cannot
 * set its own background, padding or colour. HomepageTest checks this sheet.
 */
.k-sec[data-k] {
	margin: 0;
	padding: var(--k-space) 0;
	border: 0;
	background: var(--k-bg);
	color: var(--k-ink);
	font-family: var(--k-font-body);
	font-size: 1rem;
	font-weight: 400;
	line-height: 1.6;
	text-align: left;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	scroll-margin-top: 5.5rem;
}

/*
 * Inside the Engine's page shell the base sheet boxes <main> to a max width.
 * A kit page is a stack of full-width bands, so its sections step out of that
 * box and run edge to edge (the shell clips the sideways overflow).
 */
.se-page main > .k-sec[data-k] {
	margin-inline: calc(50% - 50vw);
}

.k-sec[data-k] *,
.k-sec[data-k] *::before,
.k-sec[data-k] *::after {
	box-sizing: border-box;
}

.k-sec [class*="k-"] {
	margin: 0;
	padding: 0;
	max-width: none;
}

.k-sec ul[class*="k-"],
.k-sec dl[class*="k-"] {
	list-style: none;
}

.k-sec[data-k] :where(p, li, dd, address, blockquote, figure, figcaption) {
	border: 0;
	background: none;
	color: inherit;
	font-family: inherit;
	font-size: inherit;
	font-style: normal;
	line-height: inherit;
	letter-spacing: inherit;
	quotes: none;
}

.k-sec[data-k] :where(h1, h2, h3, h4, dt) {
	color: var(--k-ink-strong);
	font-family: var(--k-font-head);
	font-weight: 600;
	line-height: 1.15;
	letter-spacing: -0.01em;
	text-transform: none;
	text-wrap: balance;
}

.k-sec[data-k] :where(a) {
	color: inherit;
	text-decoration: none;
}

.k-sec[data-k] :where(img) {
	display: block;
	max-width: 100%;
	height: auto;
	border: 0;
}

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

.k-sec .k-vh {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
}

/* ------------------------------------------------------------ Section head */

.k-sec .k-head {
	max-width: 44rem;
	margin-bottom: clamp(2rem, 1.25rem + 2vw, 3.25rem);
}

.k-sec .k-head--center {
	margin-inline: auto;
	text-align: center;
}

.k-sec .k-eyebrow {
	margin-bottom: 0.875rem;
	color: var(--k-brand-ink);
	font-size: 0.8125rem;
	font-weight: 700;
	line-height: 1.3;
	letter-spacing: 0.14em;
	text-transform: uppercase;
}

.k-sec .k-title {
	font-size: clamp(1.875rem, 1.3rem + 1.9vw, 2.75rem);
	line-height: 1.1;
	letter-spacing: -0.015em;
}

.k-sec .k-lead {
	margin-top: 1rem;
	color: var(--k-muted);
	font-size: 1.125rem;
	line-height: 1.6;
	text-wrap: pretty;
}

.k-sec .k-head--center .k-lead {
	max-width: 38rem;
	margin-inline: auto;
	text-wrap: balance;
}

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

.k-sec .k-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.375rem;
	min-height: 3rem;
	padding: 0.75rem 1.5rem;
	border: 2px solid transparent;
	border-radius: 999px;
	font-family: var(--k-font-body);
	font-size: 1rem;
	font-weight: 700;
	line-height: 1.2;
	letter-spacing: 0.005em;
	text-align: center;
	text-decoration: none;
	cursor: pointer;
	transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}

.k-sec .k-btn__num {
	white-space: nowrap;
}

.k-sec .k-btn--go {
	background: var(--k-go);
	color: var(--k-on-brand);
}

.k-sec .k-btn--go:hover {
	background: color-mix(in srgb, var(--k-go) 82%, #000);
}

.k-sec .k-btn--line {
	border-color: var(--k-brand-ink);
	background: transparent;
	color: var(--k-brand-ink);
}

.k-sec .k-btn--line:hover {
	background: color-mix(in srgb, var(--k-brand) 10%, transparent);
}

.k-sec .k-btn--soft {
	background: var(--k-soft);
	color: var(--k-soft-ink);
}

.k-sec .k-btn--soft:hover {
	background: color-mix(in srgb, var(--k-soft) 55%, #fff);
}

.k-sec .k-btn--on-dark {
	border-color: color-mix(in srgb, var(--k-on-brand) 70%, transparent);
	background: transparent;
	color: var(--k-on-brand);
}

.k-sec .k-btn--on-dark:hover {
	border-color: var(--k-on-brand);
	background: color-mix(in srgb, var(--k-on-brand) 12%, transparent);
}

.k-sec .k-btn--quiet {
	padding-inline: 0.875rem;
	background: transparent;
	color: var(--k-ink-strong);
}

.k-sec .k-btn--quiet:hover {
	background: color-mix(in srgb, var(--k-brand) 9%, transparent);
	color: var(--k-brand-ink);
}

.k-sec .k-btn--lg {
	min-height: 4rem;
	padding: 0.875rem 2rem;
	font-size: 1.125rem;
}

.k-sec .k-ctas {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.75rem;
}

.k-sec .k-ctas--stack {
	flex-direction: column;
	align-items: stretch;
}

@media (max-width: 699.98px) {
	.k-sec .k-ctas .k-btn {
		flex: 1 1 auto;
	}
}

/* ------------------------------------------------------------------ Rating */

.k-sec .k-rating,
.k-sec .k-rating__link {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	column-gap: 0.625rem;
	row-gap: 0.125rem;
	color: var(--k-ink);
	font-size: 1rem;
	font-weight: 600;
	line-height: 1.4;
}

.k-sec .k-rating__link {
	display: inline-flex;
	min-height: 2.75rem;
	color: inherit;
	text-decoration: none;
}

.k-sec .k-rating__stars {
	color: var(--k-star);
	font-size: 1.0625rem;
	letter-spacing: 0.14em;
	line-height: 1;
}

.k-sec .k-rating__value {
	font-weight: 700;
}

.k-sec .k-rating__link .k-rating__text {
	text-decoration: underline;
	text-decoration-color: color-mix(in srgb, currentColor 35%, transparent);
	text-decoration-thickness: 1px;
	text-underline-offset: 0.25em;
}

.k-sec .k-rating__link:hover .k-rating__text {
	text-decoration-color: currentColor;
}

.k-sec .k-rating--lg,
.k-sec .k-rating--lg .k-rating__link {
	flex-direction: column;
	align-items: inherit;
	row-gap: 0.5rem;
}

.k-sec .k-rating--lg .k-rating__stars {
	font-size: 1.5rem;
}

.k-sec .k-rating--lg .k-rating__value {
	font-family: var(--k-font-head);
	font-size: 1.375rem;
	font-weight: 600;
}

/* ------------------------------------------------------------------ Photos */

.k-sec .k-photo {
	position: relative;
	overflow: hidden;
	border-radius: var(--k-photo-radius);
	background: var(--k-band-a);
}

.k-sec .k-photo--alt {
	border-radius: var(--k-photo-radius-alt);
}

.k-sec .k-photo__img {
	width: 100%;
	max-width: 100%;
	height: 100%;
	object-fit: cover;
}

/* ------------------------------------------------------------- Checklists */

.k-sec .k-checks {
	display: grid;
	gap: 1.375rem;
	margin-top: 2rem;
}

.k-sec .k-check {
	position: relative;
	padding-left: 2.875rem;
}

.k-sec .k-check::before {
	content: "\2713";
	content: "\2713" / "";
	position: absolute;
	top: 0;
	left: 0;
	display: grid;
	place-items: center;
	width: 1.875rem;
	height: 1.875rem;
	border-radius: 50%;
	background: var(--k-soft);
	color: var(--k-brand-ink);
	font-size: 0.9375rem;
	font-weight: 700;
	line-height: 1;
}

.k-sec .k-check__tag {
	margin-bottom: 0.25rem;
	color: var(--k-brand-ink);
	font-size: 0.8125rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

.k-sec .k-check__title {
	padding-top: 0.1875rem;
	color: var(--k-ink-strong);
	font-family: var(--k-font-body);
	font-size: 1.0625rem;
	font-weight: 700;
	line-height: 1.4;
	letter-spacing: 0;
}

.k-sec .k-check__text {
	margin-top: 0.25rem;
	color: var(--k-muted);
}

/* ------------------------------------------------------------------ Page */

/* A page built from the kit runs edge to edge: the Engine shell's <main>
   otherwise boxes it (site-base.css gives it a max width and padding), which
   left a strip above the first section and below the last. Only a <main>
   holding kit sections is touched. */
.se-page main:has(> .k-sec[data-k]) {
	max-width: none;
	padding: 0;
	margin-inline: 0;
}

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

.k-sec.k-header {
	position: sticky;
	/* Below WordPress's admin bar for a signed-in editor; 0 for everyone else. */
	top: var(--wp-admin--admin-bar--height, 0px);
	z-index: 50;
	padding-block: 0;
	border-bottom: 1px solid var(--k-line);
	background: var(--k-bg);
}

.k-header .k-header__bar {
	display: flex;
	align-items: center;
	gap: 0.75rem 1.5rem;
	min-height: 4rem;
	padding-block: 0.5rem;
}

.k-header .k-brand {
	display: flex;
	align-items: center;
	min-width: 0;
	margin-right: auto;
}

.k-header .k-brand__name {
	color: var(--k-brand-ink);
	font-family: var(--k-font-head);
	font-size: 1.25rem;
	font-weight: 600;
	line-height: 1.15;
	letter-spacing: -0.01em;
}

.k-header .k-brand__logo {
	width: auto;
	height: 2.5rem;
	max-width: 13rem;
	object-fit: contain;
	object-position: left center;
}

.k-header .k-header__ctas,
.k-header .k-nav,
.k-header .k-thumb {
	display: none;
}

.k-header .k-nav__list {
	display: flex;
	gap: 1.75rem;
}

.k-header .k-nav__link {
	display: inline-flex;
	align-items: center;
	min-height: 2.75rem;
	color: var(--k-ink);
	font-size: 0.9375rem;
	font-weight: 600;
	white-space: nowrap;
	transition: color 0.2s ease;
}

.k-header .k-nav__link:hover {
	color: var(--k-brand-ink);
}

@media (max-width: 699.98px) {
	.k-header .k-thumb {
		position: fixed;
		right: 0;
		bottom: 0;
		left: 0;
		z-index: 60;
		display: flex;
		gap: 0.625rem;
		padding: 0.625rem var(--k-gutter) calc(0.625rem + env(safe-area-inset-bottom, 0px));
		border-top: 1px solid var(--k-line);
		background: color-mix(in srgb, var(--k-bg) 96%, transparent);
		box-shadow: 0 -12px 28px -20px color-mix(in srgb, var(--k-ink) 55%, transparent);
	}

	.k-header .k-thumb .k-btn {
		flex: 1 1 0;
		min-width: 0;
		min-height: 3.25rem;
		padding: 0.375rem 0.75rem;
	}

	.k-header .k-thumb .k-btn--call {
		flex-direction: column;
		gap: 0;
		line-height: 1.15;
	}

	.k-header .k-thumb .k-btn__num {
		font-size: 0.9375rem;
		font-weight: 600;
	}

	html:has(.k-thumb) body {
		padding-bottom: calc(4.625rem + env(safe-area-inset-bottom, 0px));
	}

	html:has(.k-thumb) {
		scroll-padding-bottom: 5rem;
	}
}

@media (min-width: 700px) {
	.k-header .k-header__bar {
		min-height: 4.75rem;
	}

	.k-header .k-brand__name {
		font-size: 1.375rem;
	}

	.k-header .k-brand__logo {
		height: 2.875rem;
	}

	.k-header .k-header__ctas {
		display: flex;
		flex-wrap: nowrap;
		gap: 0.625rem;
	}

	.k-header .k-header__ctas .k-btn {
		min-height: 2.875rem;
		padding: 0.5rem 1.25rem;
	}

	.k-header--nav .k-header__bar {
		flex-wrap: wrap;
	}

	.k-header--nav .k-nav {
		display: block;
		flex: 1 0 100%;
		order: 3;
		margin-inline: calc(var(--k-gutter) * -1);
		padding-inline: var(--k-gutter);
		overflow-x: auto;
		border-top: 1px solid var(--k-line);
		scrollbar-width: none;
	}
}

/*
 * Where the bar is short of room the header's Call button shows the number
 * alone; the word "Call" stays in the text for screen readers.
 */
.k-header--nav .k-header__ctas .k-btn__verb {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
}

@media (min-width: 700px) and (max-width: 999.98px) {
	.k-header .k-header__ctas .k-btn__verb {
		position: absolute;
		width: 1px;
		height: 1px;
		overflow: hidden;
		clip-path: inset(50%);
		white-space: nowrap;
	}
}

@media (min-width: 1200px) {
	.k-header--nav .k-header__bar {
		flex-wrap: nowrap;
	}

	.k-header--nav .k-nav {
		flex: none;
		order: 0;
		margin-inline: auto;
		padding-inline: 0;
		overflow: visible;
		border-top: 0;
	}

	.k-header--nav .k-nav__list {
		gap: 1.5rem;
	}
}

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

.k-sec .k-hero__title {
	max-width: 20ch;
	font-size: clamp(2.5rem, 1.6rem + 2.6vw, 3.5rem);
	line-height: 1.05;
	letter-spacing: -0.02em;
}

.k-sec .k-hero__intro {
	max-width: 34rem;
	margin-top: 1.25rem;
	color: var(--k-muted);
	font-size: 1.125rem;
	line-height: 1.6;
	text-wrap: pretty;
}

.k-sec.k-hero .k-ctas {
	margin-top: 2rem;
}

.k-sec.k-hero .k-rating {
	margin-top: 1.25rem;
}

/* Hero: photo behind a card. */

.k-sec.k-hero--photo {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	padding-block: 0;
	background: radial-gradient(60rem 36rem at 85% 0%, color-mix(in srgb, var(--k-brand) 45%, transparent), transparent 70%), var(--k-deep);
	color: var(--k-on-brand);
}

.k-hero--photo .k-hero__media {
	position: relative;
	aspect-ratio: 3 / 2;
	max-height: 26rem;
	width: 100%;
}

.k-hero--photo .k-hero__img {
	position: absolute;
	inset: 0;
	width: 100%;
	max-width: none;
	height: 100%;
	object-fit: cover;
}

.k-hero--photo .k-hero__inner {
	padding-block: 2.5rem 3rem;
}

.k-hero--photo .k-eyebrow {
	color: color-mix(in srgb, var(--k-soft) 70%, #fff);
}

.k-hero--photo .k-hero__title {
	color: var(--k-on-brand);
}

.k-hero--photo .k-hero__card {
	margin-top: 1.75rem;
	padding: 1.5rem;
	border: 1px solid color-mix(in srgb, #fff 14%, transparent);
	border-radius: var(--k-radius-lg);
	background: color-mix(in srgb, #fff 7%, transparent);
}

.k-hero--photo .k-hero__card > :first-child {
	margin-top: 0;
}

.k-hero--photo .k-hero__intro {
	color: color-mix(in srgb, #fff 88%, var(--k-deep));
}

.k-hero--photo .k-rating {
	color: var(--k-on-brand);
}

.k-hero--photo .k-rating__stars {
	color: var(--k-star-on-dark);
}

@media (min-width: 700px) {
	.k-hero--photo .k-hero__media {
		position: absolute;
		inset: 0;
		z-index: -1;
		aspect-ratio: auto;
		max-height: none;
	}

	/*
	 * The scrim keeps the headline readable over any photo: a left-hand
	 * gradient behind the words over a light veil on the whole picture. It
	 * reaches further on tablets, where the headline runs further across.
	 */
	.k-hero--photo .k-hero__media::after {
		content: "";
		position: absolute;
		inset: 0;
		background:
			linear-gradient(90deg, color-mix(in srgb, var(--k-deep) 86%, transparent) 0%, color-mix(in srgb, var(--k-deep) 72%, transparent) 55%, color-mix(in srgb, var(--k-deep) 30%, transparent) 100%),
			linear-gradient(0deg, color-mix(in srgb, var(--k-deep) 45%, transparent) 0%, transparent 40%),
			color-mix(in srgb, var(--k-deep) 22%, transparent);
	}

	.k-hero--photo .k-hero__inner {
		padding-block: clamp(4rem, 2rem + 5vw, 6.5rem);
	}

	.k-hero--photo .k-hero__media + .k-hero__inner {
		display: flex;
		flex-direction: column;
		justify-content: flex-end;
		min-height: clamp(34rem, 82svh, 46rem);
		padding-block: 7rem 4rem;
	}

	.k-hero--photo .k-hero__card {
		max-width: 33rem;
		padding: 1.75rem 2rem 1.5rem;
		border-color: color-mix(in srgb, #fff 12%, transparent);
		background: color-mix(in srgb, var(--k-deep) 72%, transparent);
		-webkit-backdrop-filter: blur(10px);
		backdrop-filter: blur(10px);
	}
}

/* Hero: text beside a photo. */

.k-sec.k-hero--split {
	padding-block: clamp(2.5rem, 1rem + 5vw, 5.5rem);
	background: var(--k-band-a);
}

.k-hero--split .k-hero__grid {
	display: grid;
	gap: 2.5rem;
	align-items: center;
}

.k-hero--split .k-hero__copy {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
}

.k-hero--split .k-hero__photo {
	aspect-ratio: 4 / 3;
}

.k-hero--split .k-hero__title {
	font-size: clamp(2.5rem, 1.7rem + 2vw, 3.25rem);
}

.k-hero--split .k-hero__grid--solo .k-hero__copy {
	align-items: center;
	max-width: 48rem;
	margin-inline: auto;
	text-align: center;
}

.k-hero--split .k-hero__grid--solo .k-hero__title {
	max-width: 20ch;
}

.k-hero--split .k-hero__grid--solo .k-ctas,
.k-hero--split .k-hero__grid--solo .k-rating {
	justify-content: center;
}

@media (min-width: 1000px) {
	.k-hero--photo .k-hero__media::after {
		background:
			linear-gradient(90deg, color-mix(in srgb, var(--k-deep) 86%, transparent) 0%, color-mix(in srgb, var(--k-deep) 66%, transparent) 40%, color-mix(in srgb, var(--k-deep) 0%, transparent) 78%),
			linear-gradient(0deg, color-mix(in srgb, var(--k-deep) 45%, transparent) 0%, transparent 40%),
			color-mix(in srgb, var(--k-deep) 20%, transparent);
	}

	.k-hero--split .k-hero__grid {
		grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
		gap: clamp(3rem, 5vw, 5rem);
	}

	.k-hero--split .k-hero__grid--solo {
		grid-template-columns: minmax(0, 1fr);
	}

	.k-hero--split .k-hero__photo {
		aspect-ratio: 5 / 4;
	}
}

/* Hero: type on a colour band. */

.k-sec.k-hero--plain {
	padding-block: clamp(4rem, 2rem + 6vw, 8rem);
	background:
		radial-gradient(42rem 26rem at 6% 0%, color-mix(in srgb, var(--k-bg) 50%, transparent), transparent 70%),
		radial-gradient(40rem 26rem at 100% 100%, color-mix(in srgb, var(--k-second) 16%, transparent), transparent 70%),
		var(--k-band-b);
	text-align: center;
}

.k-hero--plain .k-hero__copy {
	display: flex;
	flex-direction: column;
	align-items: center;
}

.k-hero--plain .k-hero__title {
	max-width: 18ch;
	font-size: clamp(2.5rem, 1.4rem + 3.8vw, 4.25rem);
}

.k-hero--plain .k-hero__intro {
	max-width: 38rem;
	text-wrap: balance;
}

.k-hero--plain .k-ctas,
.k-hero--plain .k-rating {
	justify-content: center;
}

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

.k-sec.k-trust {
	padding-block: 1.125rem;
	border-top: 1px solid var(--k-line);
	border-bottom: 1px solid var(--k-line);
	background: var(--k-band-a);
}

.k-trust .k-trust__list {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 0.5rem 2rem;
}

@media (max-width: 699.98px) {
	.k-trust--line .k-trust__list {
		flex-direction: column;
		align-items: flex-start;
		width: fit-content;
		max-width: 100%;
		margin-inline: auto;
	}
}

.k-trust--line .k-trust__item {
	display: inline-flex;
	align-items: center;
	gap: 0.75rem;
	color: var(--k-muted);
	font-size: 0.9375rem;
	font-weight: 600;
	letter-spacing: 0.01em;
}

.k-trust--line .k-trust__item::before {
	content: "";
	flex: none;
	width: 0.4375rem;
	height: 0.4375rem;
	border-radius: 1px;
	background: color-mix(in srgb, var(--k-second) 75%, var(--k-bg));
	transform: rotate(45deg);
}

.k-sec.k-trust--pills {
	padding-block: 1.5rem;
}

.k-trust--pills .k-trust__list {
	gap: 0.625rem;
}

.k-trust--pills .k-trust__item {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	min-height: 2.5rem;
	padding: 0.375rem 1rem 0.375rem 0.5rem;
	border: 1px solid var(--k-line);
	border-radius: 999px;
	background: var(--k-bg);
	color: var(--k-ink);
	font-size: 0.9375rem;
	font-weight: 600;
}

.k-trust--pills .k-trust__item::before {
	content: "\2713";
	content: "\2713" / "";
	display: grid;
	flex: none;
	place-items: center;
	width: 1.5rem;
	height: 1.5rem;
	border-radius: 50%;
	background: var(--k-soft);
	color: var(--k-brand-ink);
	font-size: 0.75rem;
	font-weight: 700;
	line-height: 1;
}

/* ---------------------------------------------------------------- Services */

.k-services .k-cards {
	display: grid;
	gap: 1rem;
}

.k-services .k-card {
	display: flex;
	flex-direction: column;
	gap: 0.625rem;
	padding: 1.625rem 1.625rem 1.75rem;
	border: 1px solid var(--k-line);
	border-radius: var(--k-radius-lg);
	background: var(--k-bg);
}

.k-services .k-card__title {
	font-size: 1.3125rem;
	line-height: 1.25;
}

.k-services .k-card__text {
	color: var(--k-muted);
}

.k-services .k-card--urgent {
	border-color: transparent;
	background: var(--k-dark);
	color: var(--k-on-brand);
}

.k-services .k-card__body {
	display: flex;
	flex-direction: column;
	gap: 0.625rem;
}

.k-services .k-card--urgent .k-card__title {
	color: var(--k-on-brand);
}

.k-services .k-card--urgent .k-card__text {
	color: var(--k-on-dark-muted);
}

.k-services .k-card--urgent .k-btn {
	align-self: flex-start;
	margin-top: 0.75rem;
}

@media (min-width: 700px) {
	.k-services .k-cards {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 1.25rem;
	}
}

/* The emergency card fills whatever is left of its row. */
@media (min-width: 700px) and (max-width: 999.98px) {
	.k-services .k-card--urgent:nth-child(odd) {
		grid-column: 1 / -1;
		flex-direction: row;
		align-items: center;
		justify-content: space-between;
		gap: 2rem;
	}

	.k-services .k-card--urgent:nth-child(odd) .k-btn {
		flex: none;
		align-self: center;
		margin-top: 0;
	}
}

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

	.k-services .k-card--urgent:nth-child(3n + 1) {
		grid-column: 1 / -1;
	}

	.k-services .k-card--urgent:nth-child(3n + 2) {
		grid-column: span 2;
	}

	.k-services .k-card--urgent:nth-child(3n + 1),
	.k-services .k-card--urgent:nth-child(3n + 2) {
		flex-direction: row;
		align-items: center;
		justify-content: space-between;
		gap: 2rem;
		padding-inline: 2rem;
	}

	.k-services .k-card--urgent:nth-child(3n + 1) .k-btn,
	.k-services .k-card--urgent:nth-child(3n + 2) .k-btn {
		flex: none;
		align-self: center;
		margin-top: 0;
	}
}

/* Services as a two-column list. */

.k-services--list .k-services__grid {
	display: grid;
	gap: 2rem;
}

.k-services--list .k-head {
	margin-bottom: 0;
}

.k-services--list .k-urgent {
	margin-top: 2rem;
	padding: 1.75rem;
	border-radius: var(--k-photo-radius);
	background: var(--k-dark);
	color: var(--k-on-brand);
}

.k-services--list .k-urgent__title {
	color: var(--k-on-brand);
	font-size: 1.375rem;
}

.k-services--list .k-urgent__text {
	margin-top: 0.5rem;
	color: var(--k-on-dark-muted);
}

.k-services--list .k-urgent .k-btn {
	margin-top: 1.25rem;
}

.k-services--list .k-svc-list {
	display: grid;
	column-gap: 2.5rem;
}

.k-services--list .k-svc {
	padding-block: 1.375rem 1.5rem;
	border-top: 1px solid var(--k-line);
}

.k-services--list .k-svc__title {
	font-size: 1.25rem;
	line-height: 1.25;
}

.k-services--list .k-svc__text {
	margin-top: 0.375rem;
	color: var(--k-muted);
}

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

@media (min-width: 1000px) {
	.k-services--list .k-services__grid {
		grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
		gap: 4.5rem;
		align-items: start;
	}

	.k-services--list .k-services__grid--solo {
		grid-template-columns: minmax(0, 1fr);
	}

	.k-services--list .k-services__aside {
		position: sticky;
		top: 7rem;
	}
}

/* ----------------------------------------------------------------- Comfort */

.k-sec.k-comfort--band {
	background: var(--k-dark);
	color: var(--k-on-brand);
}

.k-comfort--band .k-eyebrow {
	color: color-mix(in srgb, var(--k-soft) 75%, #fff);
}

.k-comfort--band .k-title {
	color: var(--k-on-brand);
}

.k-comfort--band .k-lead {
	color: var(--k-on-dark-muted);
}

.k-comfort--band .k-points {
	display: grid;
	gap: 2rem;
}

.k-comfort--band .k-point {
	padding-top: 1.5rem;
	border-top: 1px solid color-mix(in srgb, var(--k-on-brand) 22%, transparent);
}

.k-comfort--band .k-tag {
	display: inline-block;
	margin-bottom: 1rem;
	padding: 0.25rem 0.75rem;
	border-radius: 999px;
	background: var(--k-tag-1);
	color: var(--k-ink-strong);
	font-size: 0.8125rem;
	font-weight: 700;
	line-height: 1.5;
}

.k-comfort--band .k-point:nth-child(2) .k-tag {
	background: var(--k-tag-2);
}

.k-comfort--band .k-point:nth-child(3) .k-tag {
	background: var(--k-tag-3);
}

.k-comfort--band .k-point__title {
	color: var(--k-on-brand);
	font-size: 1.375rem;
	line-height: 1.25;
}

.k-comfort--band .k-point__text {
	margin-top: 0.5rem;
	color: var(--k-on-dark-muted);
}

@media (min-width: 700px) {
	.k-comfort--band .k-points--n2 {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		max-width: 52rem;
		margin-inline: auto;
		column-gap: 3rem;
	}

	.k-comfort--band .k-points--n3 {
		grid-template-columns: repeat(3, minmax(0, 1fr));
		column-gap: 2.5rem;
	}
}

/* Comfort: checklist beside a photo. */

.k-sec.k-comfort--split {
	background: var(--k-band-a);
}

.k-comfort--split .k-split {
	display: grid;
	gap: 2.5rem;
	align-items: center;
}

.k-comfort--split .k-split__media {
	aspect-ratio: 4 / 3;
}

.k-comfort--split .k-head {
	margin-bottom: 0;
}

@media (min-width: 1000px) {
	.k-comfort--split .k-split {
		grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr);
		gap: 4.5rem;
	}

	.k-comfort--split .k-split__media {
		aspect-ratio: 4 / 5;
	}

	.k-comfort--split .k-split--solo {
		align-items: start;
	}

	.k-comfort--split .k-split--solo .k-checks {
		margin-top: 0;
	}
}

/* --------------------------------------------------------------- Providers */

.k-providers .k-people {
	display: grid;
	gap: 2.75rem 2rem;
}

.k-providers .k-person__photo {
	aspect-ratio: 4 / 3;
	margin-bottom: 1.375rem;
}

.k-providers .k-people > .k-person:nth-child(even) .k-person__photo {
	border-radius: var(--k-photo-radius-alt);
}

.k-providers .k-person__name {
	font-size: 1.375rem;
	line-height: 1.25;
}

.k-providers .k-person__role {
	margin-top: 0.25rem;
	color: var(--k-brand-ink);
	font-size: 1rem;
	font-weight: 600;
}

.k-providers .k-person__bio {
	margin-top: 0.75rem;
	color: var(--k-muted);
	text-wrap: pretty;
}

.k-providers--pair .k-people--n1 {
	max-width: 60rem;
	margin-inline: auto;
}

@media (min-width: 700px) {
	.k-providers--pair .k-people--n2,
	.k-providers--pair .k-people--n3,
	.k-providers--pair .k-people--n4 {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.k-providers--pair .k-people--n1 .k-person {
		display: grid;
		grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr);
		gap: 3rem;
		align-items: center;
	}

	.k-providers--pair .k-people--n1 .k-person--nophoto {
		grid-template-columns: minmax(0, 1fr);
		max-width: 40rem;
		margin-inline: auto;
		text-align: center;
	}

	.k-providers--pair .k-people--n1 .k-person__photo {
		margin-bottom: 0;
	}
}

@media (min-width: 1000px) {
	.k-providers--pair .k-people--n3 {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}

	.k-providers--pair .k-people--n2,
	.k-providers--pair .k-people--n4 {
		column-gap: 3rem;
	}
}

/* Dentists: one featured, the rest beside. */

.k-providers--feature .k-feature {
	display: grid;
	gap: 2.5rem;
}

.k-providers--feature .k-person--lead .k-person__photo {
	aspect-ratio: 5 / 4;
}

.k-providers--feature .k-person--lead .k-person__name {
	font-size: clamp(1.5rem, 1.2rem + 1vw, 2rem);
}

.k-providers--feature .k-others {
	display: grid;
}

.k-providers--feature .k-person--side {
	display: grid;
	grid-template-columns: 6.5rem minmax(0, 1fr);
	gap: 1.25rem;
	align-items: start;
	padding-block: 1.5rem;
	border-top: 1px solid var(--k-line);
}

.k-providers--feature .k-person--side:first-child {
	padding-top: 0;
	border-top: 0;
}

.k-providers--feature .k-person--side.k-person--nophoto {
	grid-template-columns: minmax(0, 1fr);
}

.k-providers--feature .k-person--side .k-person__photo {
	aspect-ratio: 1;
	margin-bottom: 0;
	border-radius: var(--k-radius) var(--k-radius) var(--k-radius) calc(var(--k-radius) * 2.5);
}

.k-providers--feature .k-person--side .k-person__name {
	font-size: 1.1875rem;
}

.k-providers--feature .k-person--side .k-person__bio {
	margin-top: 0.5rem;
}

@media (min-width: 700px) {
	.k-providers--feature .k-feature--solo .k-person--lead {
		display: grid;
		grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr);
		gap: 3rem;
		align-items: center;
	}

	.k-providers--feature .k-feature--solo .k-person--lead .k-person__photo {
		margin-bottom: 0;
	}

	.k-providers--feature .k-feature--solo .k-person--nophoto {
		grid-template-columns: minmax(0, 1fr);
		max-width: 40rem;
		margin-inline: auto;
		text-align: center;
	}
}

@media (min-width: 1000px) {
	.k-providers--feature .k-feature {
		grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr);
		gap: 4.5rem;
		align-items: center;
	}

	.k-providers--feature .k-feature--solo {
		grid-template-columns: minmax(0, 1fr);
		max-width: 60rem;
		margin-inline: auto;
	}
}

/* ------------------------------------------------------------ Testimonials */

.k-sec.k-testimonials {
	background: var(--k-band-b);
}

.k-testimonials .k-rating--lg {
	align-items: center;
	margin-bottom: 2.5rem;
	text-align: center;
}

.k-testimonials--three .k-head + .k-rating--lg {
	margin-top: -1rem;
}

.k-testimonials .k-quotes {
	display: grid;
	gap: 1.25rem;
}

.k-testimonials .k-quotes--n1 {
	max-width: 42rem;
	margin-inline: auto;
}

.k-testimonials .k-quote {
	display: flex;
	flex-direction: column;
	height: 100%;
	padding: 1.75rem 1.75rem 1.625rem;
	border-radius: var(--k-radius-lg);
	background: var(--k-bg);
	box-shadow: var(--k-shadow);
}

.k-testimonials .k-quote::before {
	content: "\201C";
	content: "\201C" / "";
	display: block;
	height: 2.25rem;
	color: color-mix(in srgb, var(--k-brand) 45%, var(--k-bg));
	font-family: var(--k-font-head);
	font-size: 4.5rem;
	line-height: 1;
}

.k-testimonials .k-quote__text {
	color: var(--k-ink);
	font-size: 1.0625rem;
	line-height: 1.6;
	text-wrap: pretty;
}

.k-testimonials .k-quote__name {
	display: flex;
	align-items: center;
	gap: 0.625rem;
	margin-top: auto;
	padding-top: 1.25rem;
	color: var(--k-ink-strong);
	font-size: 1rem;
	font-weight: 700;
}

.k-testimonials .k-quote__name::before {
	content: "";
	width: 1.25rem;
	height: 2px;
	border-radius: 2px;
	background: var(--k-brand);
}

@media (min-width: 700px) {
	.k-testimonials .k-quotes--n2 {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		max-width: 56rem;
		margin-inline: auto;
	}
}

@media (min-width: 1000px) {
	.k-testimonials .k-quotes--n3 {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

/* Testimonials: one big quote. */

.k-testimonials--one .k-one {
	display: grid;
	gap: 2.5rem;
	align-items: center;
}

.k-testimonials--one .k-one__side .k-head {
	margin-bottom: 1.75rem;
}

.k-testimonials--one .k-one__side .k-rating--lg {
	align-items: flex-start;
	margin-bottom: 0;
	text-align: left;
}

.k-testimonials--one .k-one--solo .k-one__side,
.k-testimonials--one .k-one--solo .k-rating--lg {
	align-items: center;
	text-align: center;
}

.k-testimonials--one .k-one--solo .k-one__side {
	display: flex;
	flex-direction: column;
}

.k-testimonials--one .k-quote--big {
	padding: clamp(1.75rem, 1rem + 3vw, 3.5rem);
	border-radius: var(--k-photo-radius-alt);
}

.k-testimonials--one .k-quote--big::before {
	height: 3.5rem;
	font-size: 7rem;
}

.k-testimonials--one .k-quote--big .k-quote__text {
	color: var(--k-ink-strong);
	font-family: var(--k-font-head);
	font-size: clamp(1.375rem, 1.05rem + 1.3vw, 2.125rem);
	line-height: 1.3;
	letter-spacing: -0.01em;
}

.k-testimonials--one .k-quote--big .k-quote__name {
	padding-top: 1.75rem;
}

@media (min-width: 1000px) {
	.k-testimonials--one .k-one {
		grid-template-columns: minmax(0, 1fr) minmax(0, 1.75fr);
		gap: 5rem;
	}

	.k-testimonials--one .k-one--solo {
		grid-template-columns: minmax(0, 1fr);
	}
}

/* --------------------------------------------------------------- Insurance */

.k-insurance .k-carriers {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
}

.k-insurance .k-carrier {
	display: inline-flex;
	align-items: center;
	min-height: 2.5rem;
	padding: 0.375rem 1rem;
	border: 1px solid var(--k-line);
	border-radius: 999px;
	background: var(--k-bg);
	color: var(--k-ink);
	font-size: 1rem;
	font-weight: 600;
}

.k-insurance--checks .k-ins {
	display: grid;
	gap: 2.5rem;
}

.k-insurance--checks .k-checks {
	margin-top: 0;
}

.k-insurance--checks .k-ins__panel {
	padding: clamp(1.5rem, 1rem + 2vw, 2.75rem);
	border-radius: var(--k-photo-radius-alt);
	background: var(--k-band-a);
}

@media (min-width: 700px) {
	.k-insurance--checks .k-ins--solo .k-checks {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		column-gap: 2.5rem;
	}
}

@media (min-width: 1000px) {
	.k-insurance--checks .k-ins {
		grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr);
		gap: 4.5rem;
		align-items: start;
	}

	.k-insurance--checks .k-ins--solo {
		grid-template-columns: minmax(0, 1fr);
	}
}

/* Insurance: compact band. */

.k-insurance--band .k-panel {
	display: grid;
	gap: 2rem;
	padding: clamp(1.75rem, 1rem + 3vw, 3.5rem);
	border-radius: var(--k-radius-lg);
	background: var(--k-band-a);
}

.k-insurance--band .k-head {
	margin-bottom: 0;
}

.k-insurance--band .k-checks {
	margin-top: 0;
	column-gap: 2.5rem;
}

.k-insurance--band .k-carriers--row {
	padding-top: 1.75rem;
	border-top: 1px solid var(--k-line);
}

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

@media (min-width: 1000px) {
	.k-insurance--band .k-panel--split {
		grid-template-columns: minmax(0, 1fr) minmax(0, 1.8fr);
		column-gap: 4rem;
		align-items: start;
	}

	.k-insurance--band .k-panel--split .k-carriers--row {
		grid-column: 1 / -1;
	}
}

/* ---------------------------------------------------------------- Location */

.k-sec.k-location {
	background: var(--k-band-a);
}

.k-location .k-head {
	margin-bottom: 1.75rem;
}

.k-sec .k-office + .k-office {
	margin-top: 2rem;
	padding-top: 2rem;
	border-top: 1px solid var(--k-line);
}

.k-sec .k-office__name {
	font-size: 1.375rem;
	line-height: 1.25;
}

.k-sec .k-address {
	margin-top: 0.5rem;
	font-size: 1.0625rem;
	line-height: 1.55;
}

.k-sec .k-office__phone {
	margin-top: 0.25rem;
}

.k-sec .k-tel {
	display: inline-flex;
	align-items: center;
	min-height: 2.75rem;
	color: var(--k-brand-ink);
	font-weight: 700;
	text-decoration: underline;
	text-decoration-color: color-mix(in srgb, currentColor 40%, transparent);
	text-decoration-thickness: 1px;
	text-underline-offset: 0.2em;
}

.k-sec .k-tel:hover {
	text-decoration-color: currentColor;
}

.k-sec .k-office__cta {
	margin-top: 0.75rem;
}

.k-sec .k-office__hours {
	margin-top: 1.5rem;
}

.k-sec .k-hours {
	display: grid;
	gap: 0.5rem;
	max-width: 28rem;
}

.k-sec .k-hours__row {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	column-gap: 1.5rem;
	padding-bottom: 0.5rem;
	border-bottom: 1px solid var(--k-line);
}

.k-sec .k-hours__day {
	color: var(--k-ink-strong);
	font-weight: 600;
}

.k-sec .k-hours__time {
	color: var(--k-muted);
	font-variant-numeric: tabular-nums;
}

.k-sec .k-note {
	margin-top: 1.75rem;
	padding-left: 1rem;
	border-left: 3px solid color-mix(in srgb, var(--k-accent) 55%, var(--k-bg));
	color: var(--k-muted);
}

.k-location .k-loc {
	display: grid;
	gap: 2.5rem;
	align-items: center;
}

.k-location .k-map {
	position: relative;
	overflow: hidden;
	aspect-ratio: 4 / 3;
	border-radius: var(--k-photo-radius-alt);
	background: var(--k-line);
	box-shadow: var(--k-shadow);
}

.k-location .k-map__frame {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	border: 0;
}

@media (min-width: 700px) {
	.k-location--split .k-loc--nomap .k-office--hours {
		display: grid;
		grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
		gap: 2.5rem;
	}

	.k-location--split .k-loc--nomap .k-office__hours {
		margin-top: 0;
	}
}

@media (min-width: 1000px) {
	.k-location--split .k-loc {
		grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr);
		gap: 4.5rem;
		align-items: stretch;
	}

	.k-location--split .k-loc--nomap {
		grid-template-columns: minmax(0, 1fr);
	}

	.k-location--split .k-map {
		min-height: 24rem;
		aspect-ratio: auto;
	}
}

/* Location: one card per office. */

.k-location--cards .k-offices {
	display: grid;
	gap: 1.25rem;
}

.k-location--cards .k-offices--n1 {
	max-width: 54rem;
	margin-inline: auto;
}

.k-location--cards .k-office--card {
	height: 100%;
	padding: clamp(1.5rem, 1rem + 1.5vw, 2.25rem);
	border: 1px solid var(--k-line);
	border-radius: var(--k-radius-lg);
	background: var(--k-bg);
}

.k-location--cards .k-note {
	max-width: 40rem;
	margin: 2rem auto 0;
	padding: 0;
	border: 0;
	text-align: center;
}

@media (min-width: 700px) {
	.k-location--cards .k-offices--n2,
	.k-location--cards .k-offices--n3 {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.k-location--cards .k-offices--n1 .k-office--hours {
		display: grid;
		grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
		gap: 2.5rem;
	}

	.k-location--cards .k-offices--n1 .k-office__hours {
		margin-top: 0;
	}
}

@media (min-width: 1000px) {
	.k-location--cards .k-offices--n3 {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

/* --------------------------------------------------------------------- FAQ */

.k-faq--accordion .k-faq__list {
	display: grid;
	gap: 0.75rem;
	max-width: 48rem;
	margin-inline: auto;
}

.k-faq--accordion .k-qa {
	border: 1px solid var(--k-line);
	border-radius: var(--k-radius);
	background: var(--k-bg);
	transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.k-faq--accordion .k-qa[open] {
	border-color: color-mix(in srgb, var(--k-brand) 28%, var(--k-line));
	box-shadow: var(--k-shadow);
}

.k-faq--accordion .k-qa__q {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	min-height: 3.5rem;
	padding: 1rem 1.25rem;
	border-radius: calc(var(--k-radius) - 1px);
	color: var(--k-ink-strong);
	font-size: 1.0625rem;
	font-weight: 700;
	line-height: 1.4;
	list-style: none;
	cursor: pointer;
}

.k-faq--accordion .k-qa__q::-webkit-details-marker {
	display: none;
}

.k-faq--accordion .k-qa__q::after {
	content: "";
	flex: none;
	width: 1.875rem;
	height: 1.875rem;
	border-radius: 50%;
	background:
		linear-gradient(var(--k-brand-ink), var(--k-brand-ink)) center / 0.75rem 2px no-repeat,
		linear-gradient(var(--k-brand-ink), var(--k-brand-ink)) center / 2px 0.75rem no-repeat,
		var(--k-soft);
	transition: transform 0.25s ease;
}

.k-faq--accordion .k-qa[open] > .k-qa__q::after {
	background:
		linear-gradient(var(--k-brand-ink), var(--k-brand-ink)) center / 0.75rem 2px no-repeat,
		var(--k-soft);
	transform: rotate(180deg);
}

.k-faq--accordion .k-qa__a {
	max-width: 42rem;
	padding: 0 1.25rem 1.25rem;
	color: var(--k-muted);
}

/* FAQ: two columns, everything open. */

.k-faq--columns .k-faq__grid {
	display: grid;
	gap: 1rem;
}

.k-faq--columns .k-head {
	margin-bottom: 1rem;
}

.k-faq--columns .k-qa {
	padding-block: 1.5rem;
	border-top: 1px solid var(--k-line);
}

.k-faq--columns .k-qa__q {
	font-size: 1.25rem;
	line-height: 1.3;
}

.k-faq--columns .k-qa__a {
	margin-top: 0.5rem;
	color: var(--k-muted);
	text-wrap: pretty;
}

@media (min-width: 1000px) {
	.k-faq--columns .k-faq__grid {
		grid-template-columns: minmax(0, 1fr) minmax(0, 1.8fr);
		gap: 5rem;
		align-items: start;
	}

	.k-faq--columns .k-head {
		position: sticky;
		top: 7rem;
		margin-bottom: 0;
	}

	.k-faq--columns .k-qa:first-child {
		padding-top: 0;
		border-top: 0;
	}
}

/* ------------------------------------------------------ Closing call to action */

.k-sec .k-final__title {
	font-size: clamp(2rem, 1.3rem + 2.4vw, 3.25rem);
	line-height: 1.08;
	letter-spacing: -0.02em;
}

.k-sec .k-final__text {
	margin-top: 1rem;
	color: var(--k-muted);
	font-size: 1.125rem;
	text-wrap: pretty;
}

.k-sec.k-final--band {
	background:
		radial-gradient(40rem 22rem at 50% 0%, color-mix(in srgb, var(--k-bg) 45%, transparent), transparent 70%),
		var(--k-band-b);
	text-align: center;
}

.k-final--band .k-final__title {
	max-width: 20ch;
	margin-inline: auto;
}

.k-final--band .k-final__text {
	max-width: 36rem;
	margin-inline: auto;
	text-wrap: balance;
}

.k-final--band .k-ctas {
	justify-content: center;
	margin-top: 2rem;
}

.k-sec.k-final--split {
	background: radial-gradient(50rem 30rem at 100% 100%, color-mix(in srgb, var(--k-accent) 22%, transparent), transparent 70%), var(--k-dark);
	color: var(--k-on-brand);
}

.k-final--split .k-final__grid {
	display: grid;
	gap: 2.25rem;
	align-items: center;
}

.k-final--split .k-final__title {
	color: var(--k-on-brand);
}

.k-final--split .k-final__text {
	max-width: 34rem;
	color: var(--k-on-dark-muted);
	text-wrap: balance;
}

.k-final--split .k-ctas--stack {
	width: 100%;
	max-width: 28rem;
}

.k-final--split .k-btn--lg .k-btn__num {
	font-size: 1.25rem;
	font-variant-numeric: tabular-nums;
	letter-spacing: 0.01em;
}

@media (min-width: 1000px) {
	.k-final--split .k-final__grid {
		grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr);
		gap: 5rem;
	}

	.k-final--split .k-final__grid--solo {
		grid-template-columns: minmax(0, 1fr);
	}

	.k-final--split .k-ctas--stack {
		justify-self: end;
	}
}

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

.k-sec.k-footer {
	padding-block: clamp(2.75rem, 2rem + 2vw, 4rem);
	border-top: 1px solid var(--k-line);
	background: var(--k-band-a);
}

.k-footer .k-footer__name {
	color: var(--k-brand-ink);
	font-family: var(--k-font-head);
	font-size: 1.375rem;
	font-weight: 600;
	line-height: 1.2;
	letter-spacing: -0.01em;
}

.k-footer .k-footer__line {
	margin-top: 0.25rem;
}

.k-footer .k-footer__label {
	margin-bottom: 0.625rem;
	color: var(--k-brand-ink);
	font-size: 0.8125rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

.k-footer .k-sep {
	margin-inline: 0.5rem;
	color: var(--k-muted);
}

.k-footer .k-address {
	margin-top: 0;
	font-size: 1rem;
}

.k-footer .k-footer__link,
.k-footer .k-social__link {
	display: inline-flex;
	align-items: center;
	min-height: 2.75rem;
	color: var(--k-brand-ink);
	font-weight: 600;
	text-decoration: underline;
	text-decoration-color: color-mix(in srgb, currentColor 35%, transparent);
	text-decoration-thickness: 1px;
	text-underline-offset: 0.2em;
}

.k-footer .k-footer__link:hover,
.k-footer .k-social__link:hover {
	text-decoration-color: currentColor;
}

.k-footer .k-social {
	display: flex;
	flex-wrap: wrap;
	gap: 0 1.25rem;
	margin-top: 0.75rem;
}

.k-footer .k-hours--foot {
	gap: 0.375rem;
}

.k-footer .k-hours--foot .k-hours__row {
	display: block;
	padding-bottom: 0;
	border-bottom: 0;
}

.k-footer .k-hours--foot .k-hours__day {
	display: block;
	font-weight: 600;
}

.k-footer .k-copy {
	margin-top: 2.25rem;
	padding-top: 1.5rem;
	border-top: 1px solid var(--k-line);
	color: var(--k-muted);
	font-size: 0.875rem;
}

.k-footer--simple .k-wrap {
	text-align: center;
}

.k-footer--simple .k-footer__office {
	margin-top: 0.75rem;
}

.k-footer--simple .k-footer__hours {
	color: var(--k-muted);
}

.k-footer--simple .k-social {
	justify-content: center;
}

.k-footer--simple .k-footer__hour,
.k-footer--simple .k-footer__address {
	white-space: nowrap;
}

@media (max-width: 699.98px) {
	.k-footer--simple .k-footer__line,
	.k-footer--simple .k-footer__hours {
		display: flex;
		flex-direction: column;
		align-items: center;
	}

	.k-footer--simple .k-sep {
		display: none;
	}

	.k-footer--simple .k-footer__hour,
	.k-footer--simple .k-footer__address {
		white-space: normal;
	}
}

.k-footer--columns .k-footer__grid {
	display: grid;
	gap: 2rem;
}

@media (min-width: 700px) {
	.k-footer--columns .k-footer__grid {
		grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr));
		gap: 2.5rem;
	}
}

/* ------------------------------------------------------------------- Focus */

.k-sec a:focus-visible,
.k-sec summary:focus-visible {
	outline: 3px solid var(--k-brand-ink);
	outline-offset: 3px;
}

.k-sec .k-nav__link:focus-visible,
.k-sec .k-tel:focus-visible,
.k-sec .k-rating__link:focus-visible,
.k-sec .k-social__link:focus-visible,
.k-sec .k-footer__link:focus-visible {
	border-radius: 4px;
}

.k-hero--photo a:focus-visible,
.k-comfort--band a:focus-visible,
.k-final--split a:focus-visible,
.k-card--urgent a:focus-visible,
.k-urgent a:focus-visible {
	outline-color: var(--k-on-brand);
}

/* ------------------------------------------------------------------ Motion */

@media (prefers-reduced-motion: no-preference) {
	html:has(.k-thumb) {
		scroll-behavior: smooth;
	}
}

@media (prefers-reduced-motion: reduce) {
	.k-sec[data-k] *,
	.k-sec[data-k] *::before,
	.k-sec[data-k] *::after {
		transition-duration: 0s;
		animation: none;
	}
}

@media print {
	.k-sec.k-header {
		position: static;
	}

	.k-header .k-thumb {
		display: none;
	}
}
