/**
 * Pattern sections (concept A anatomy). Mobile first; presets only.
 * Loaded after cvc.css (tokens, buttons, shell), and in the editor canvas.
 */

/* ---------- Dark sections ---------- */

/*
 * Pages are light; the photo tiles, home hero, footer and call bar are dark.
 * Inside these, every colour preset and Blocksy colour variable points at its
 * night-* twin, so components keep using the same presets. Blocksy resolves its
 * derived variables (text, headings, links, borders) at :root, so they are set
 * again here; Blocksy's footer background reads --theme-palette-color-6 on
 * #footer itself (docs/blocksy-variables.md (l)). Editors can add .cvc-on-dark
 * to a group block for the same effect.
 */
.cvc-on-dark,
.cvc-sheet-hero,
.cvc-svc-hero,
.cvc-accounts,
.cvc-rights,
#offcanvas,
article:has(.entry-content > :is(.cvc-page-intro, .cvc-svc-hero):first-child) > .hero-section,
.cvc-page-intro,
.cvc-deck,
.cvc-tile:not(.cvc-tile--plain),
#footer,
.cvc-callbar {
	--wp--preset--color--base: var(--wp--preset--color--night);
	--wp--preset--color--surface: var(--wp--preset--color--night-surface);
	--wp--preset--color--line: var(--wp--preset--color--night-line);
	--wp--preset--color--line-strong: var(--wp--preset--color--night-line-strong);
	--wp--preset--color--ink: var(--wp--preset--color--night-ink);
	--wp--preset--color--ink-soft: var(--wp--preset--color--night-ink-soft);
	--wp--preset--color--mute: var(--wp--preset--color--night-mute);
	--wp--preset--color--red-text: var(--wp--preset--color--night-red-text);
	--wp--preset--color--amber: var(--wp--preset--color--night-amber);
	--wp--preset--color--ok: var(--wp--preset--color--night-ok);
	--wp--preset--color--error: var(--wp--preset--color--night-error);
	--theme-palette-color-3: var(--wp--preset--color--night-ink-soft);
	--theme-palette-color-4: var(--wp--preset--color--night-ink);
	--theme-palette-color-5: var(--wp--preset--color--night-line);
	--theme-palette-color-6: var(--wp--preset--color--night-surface);
	--theme-palette-color-7: var(--wp--preset--color--night);
	--theme-palette-color-8: var(--wp--preset--color--night);
	--theme-text-color: var(--wp--preset--color--night-ink-soft);
	--theme-headings-color: var(--wp--preset--color--night-ink);
	--theme-heading-color: var(--wp--preset--color--night-ink);
	--theme-link-initial-color: var(--wp--preset--color--night-ink);
	--theme-link-hover-color: var(--wp--preset--color--night-red-text);
	--theme-border-color: var(--wp--preset--color--night-line);
	--theme-form-field-border-initial-color: var(--wp--preset--color--night-line-strong);
	color: var(--wp--preset--color--night-ink-soft);
}

:root {
	--cvc-radius-card: 18px;
	--cvc-radius-btn: 10px;
	--cvc-shadow-lift: 0 24px 48px -28px color-mix(in srgb, var(--wp--preset--color--night) 40%, transparent);
}

.cvc-on-dark {
	background-color: var(--wp--preset--color--night);
}

.cvc-section {
	padding-block: var(--wp--preset--spacing--70);
}

/* One content width for every section, whatever Blocksy's page structure is. */
.cvc-wrap,
.cvc-strip__inner,
.cvc-trust__inner,
.cvc-svc-hero,
.cvc-sheet-hero__grid {
	box-sizing: border-box;
	width: 100%;
	max-width: var(--theme-normal-container-max-width, 1290px);
	margin-inline: auto;
	padding-inline: var(--theme-content-edge-spacing, 1.5rem);
}

.cvc-section + .cvc-section {
	padding-top: 0;
}

.cvc-section__head {
	display: grid;
	gap: var(--wp--preset--spacing--30);
	margin-bottom: var(--wp--preset--spacing--50);
}

.cvc-section__head > * {
	margin: 0;
}

.cvc-section__head > p:not(.cvc-eyebrow) {
	max-width: 52ch;
	color: var(--wp--preset--color--mute);
}

.cvc-lead {
	max-width: 52ch;
	color: var(--wp--preset--color--ink-soft);
	font-size: var(--wp--preset--font-size--cvc-l);
}

.cvc-placeholder {
	border-bottom: 1px dashed var(--wp--preset--color--amber);
	color: var(--wp--preset--color--amber);
}

@media (min-width: 900px) {
	.cvc-section__head {
		grid-template-columns: 1fr 1fr;
		align-items: end;
		gap: var(--wp--preset--spacing--50);
	}

	.cvc-section__head > .cvc-eyebrow {
		grid-column: 1 / -1;
	}
}

/* ---------- Hero: site sheet (copy, real photo, spec card) ---------- */

.cvc-sheet-hero {
	position: relative;
	isolation: isolate;
	min-height: 560px;
	overflow: hidden;
	background-color: var(--wp--preset--color--night);
}

.cvc-sheet-hero::before {
	position: absolute;
	inset: 0;
	z-index: 1;
	background: linear-gradient(180deg, color-mix(in srgb, var(--wp--preset--color--night) 80%, transparent) 0%, color-mix(in srgb, var(--wp--preset--color--night) 90%, transparent) 18%, color-mix(in srgb, var(--wp--preset--color--night) 78%, transparent) 55%, color-mix(in srgb, var(--wp--preset--color--night) 72%, transparent) 100%);
	content: "";
	pointer-events: none;
}

.cvc-sheet-hero__grid {
	display: grid;
	gap: var(--wp--preset--spacing--50);
	min-height: 560px;
	padding-block: 4.5rem 2rem;
}

.cvc-sheet-hero__copy {
	position: relative;
	z-index: 2;
	display: grid;
	gap: 1.25rem;
	align-self: end;
	align-content: end;
}

.cvc-sheet-hero__copy > * {
	margin: 0;
}

/*
 * The headline is two sentences ("Hamilton flatbed hauling." / "Machines to sea cans."). The width is set in em, so
 * the wrap stays the same at every font size: balanced lines at the full content width on desktop, never
 * a four-line stack inside a narrow column.
 */
body .cvc-sheet-hero__title {
	--theme-font-size: clamp(2.5rem, 1rem + 6.4vw, 6.25rem);
	--theme-line-height: 0.95;
	max-width: 14em;
	color: var(--wp--preset--color--night-ink);
	text-wrap: balance;
}

.cvc-sheet-hero .cvc-lead {
	max-width: 60ch;
	color: var(--wp--preset--color--night-ink-soft);
}

/* Tighter tracking on phones keeps the label on one line at 375 px; where it must wrap (320 px) it splits evenly instead of leaving "ON" alone. */
.cvc-sheet-hero .cvc-eyebrow {
	color: var(--wp--preset--color--night-ink-soft);
	letter-spacing: 0.08em;
	text-wrap: balance;
}

@media (min-width: 480px) {
	.cvc-sheet-hero .cvc-eyebrow {
		letter-spacing: 0.14em;
	}
}

/* Both buttons share one height and radius (the call button used the large radius and a 63 px height, the quote button 10 px and 52 px). */
.cvc-sheet-hero__actions,
.cvc-svc-hero__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 1rem;
	align-items: stretch;
}

/* Blocksy's flow layout adds a bottom margin to the call link; with stretch it made the row, and so the quote button, 88 px tall. */
.cvc-sheet-hero__actions > *,
.cvc-svc-hero__actions > * {
	margin: 0;
}

.cvc-sheet-hero__actions > p,
.cvc-svc-hero__actions > p {
	display: flex;
}

.cvc-sheet-hero__actions .cvc-btn,
.cvc-svc-hero__actions .cvc-btn {
	min-height: 4rem;
	padding-inline: 1.75rem;
	border-radius: var(--wp--custom--radius--lg);
}

.cvc-sheet-hero__actions .cvc-btn--outline,
.cvc-svc-hero__actions .cvc-btn--outline {
	border-width: 2px;
	font-size: var(--wp--preset--font-size--cvc-l);
}

@media (max-width: 479px) {
	.cvc-sheet-hero__actions,
	.cvc-svc-hero__actions {
		flex-direction: column;
	}

	.cvc-sheet-hero__actions > p > .cvc-btn,
	.cvc-svc-hero__actions > p > .cvc-btn {
		flex: 1;
	}
}

.cvc-sheet-hero .cvc-btn--outline {
	border-color: var(--wp--preset--color--night-ink);
	background-color: color-mix(in srgb, var(--wp--preset--color--night) 28%, transparent);
	color: var(--wp--preset--color--night-ink);
}

.cvc-sheet-hero .cvc-btn--outline:hover,
.cvc-sheet-hero .cvc-btn--outline:focus-visible {
	border-color: var(--wp--preset--color--night-ink);
	background-color: color-mix(in srgb, var(--wp--preset--color--night-surface) 65%, transparent);
	color: var(--wp--preset--color--night-ink);
}

.cvc-sheet-hero__photo {
	position: static;
}

.cvc-sheet-hero__photo .wp-block-image {
	position: absolute;
	inset: 0;
	z-index: 0;
	margin: 0;
}

.cvc-sheet-hero__photo img {
	display: block;
	width: 100%;
	height: 100%;
	aspect-ratio: auto;
	object-fit: cover;
	border: 0;
	border-radius: 0;
}

.cvc-spec {
	position: relative;
	z-index: 2;
	display: grid;
	grid-template-areas:
		"max-load-value max-size-value"
		"max-load-label max-size-label"
		"fact fact";
	gap: 0.5rem 1.25rem;
	padding: 1.125rem;
	border: 1px solid color-mix(in srgb, var(--wp--preset--color--night-ink) 14%, transparent);
	border-radius: var(--wp--custom--radius--md);
	background-color: color-mix(in srgb, var(--wp--preset--color--night-surface) 62%, transparent);
	-webkit-backdrop-filter: blur(14px);
	backdrop-filter: blur(14px);
}

.cvc-spec > * {
	margin: 0;
}

.cvc-spec__label {
	color: var(--wp--preset--color--night-mute);
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--cvc-xs);
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

/* Frozen pattern order maps these fields into the glass grid. */
.cvc-spec__label:nth-child(1) {
	grid-area: max-load-label;
}

.cvc-spec__value {
	color: var(--wp--preset--color--night-ink);
	font-family: var(--wp--preset--font-family--display);
	font-size: 1.75rem;
	font-weight: 800;
	line-height: 0.95;
	text-transform: none;
}

.cvc-spec__value:nth-child(2) {
	grid-area: max-load-value;
}

.cvc-spec__label:nth-child(3) {
	grid-area: max-size-label;
}

.cvc-spec__value:nth-child(4) {
	grid-area: max-size-value;
}

.cvc-spec .cvc-spec__fact {
	grid-area: fact;
	padding-top: 0.75rem;
	border-top: 1px solid var(--wp--preset--color--night-line-strong);
	color: var(--wp--preset--color--night-mute);
}

.cvc-spec .cvc-fact {
	display: grid;
	grid-template-columns: auto 1fr;
	gap: 0.5rem;
	align-items: baseline;
}

.cvc-sheet-hero .is-style-cvc-ruler {
	display: none;
}

@media (min-width: 900px) {
	.cvc-sheet-hero,
	.cvc-sheet-hero__grid {
		min-height: 640px;
	}

	/*
	 * The copy box is dissolved so the headline can span both columns while the lead and the buttons sit under it
	 * beside the spec card. display: contents drops the box's own stacking (position + z-index 2 above the
	 * ::before scrim), so every promoted child gets it back.
	 */
	.cvc-sheet-hero__grid {
		grid-template-columns: minmax(0, 1.4fr) minmax(0, 0.9fr);
		grid-template-areas:
			"eyebrow eyebrow"
			"title title"
			"lead spec"
			"actions spec";
		gap: 1.25rem var(--wp--preset--spacing--50);
		align-items: end;
		padding-block: 8rem 3rem;
	}

	.cvc-sheet-hero__copy {
		display: contents;
	}

	.cvc-sheet-hero__copy > * {
		position: relative;
		z-index: 2;
	}

	.cvc-sheet-hero__copy > .cvc-eyebrow {
		grid-area: eyebrow;
	}

	.cvc-sheet-hero__copy > .cvc-sheet-hero__title {
		grid-area: title;
	}

	.cvc-sheet-hero__copy > .cvc-lead {
		grid-area: lead;
	}

	.cvc-sheet-hero__copy > .cvc-sheet-hero__actions {
		grid-area: actions;
	}

	.cvc-sheet-hero__photo {
		grid-area: spec;
		align-self: end;
	}

	.cvc-sheet-hero::before {
		background:
			linear-gradient(0deg, color-mix(in srgb, var(--wp--preset--color--night) 70%, transparent) 0%, transparent 35%),
			linear-gradient(90deg, color-mix(in srgb, var(--wp--preset--color--night) 94%, transparent) 0%, color-mix(in srgb, var(--wp--preset--color--night) 80%, transparent) 45%, color-mix(in srgb, var(--wp--preset--color--night) 80%, transparent) 61%, color-mix(in srgb, var(--wp--preset--color--night) 18%, transparent) 100%);
	}
}

/* Ruler: a measuring scale under the hero. The :not() pair matches the specificity of core's 100px default width and max-width. */
.wp-block-separator.is-style-cvc-ruler:not(.is-style-wide):not(.is-style-dots) {
	width: 100%;
	max-width: none;
	height: 10px;
	margin: 0;
	border: 0;
	background: repeating-linear-gradient(90deg, var(--wp--preset--color--ink) 0 1px, transparent 1px 12px);
	opacity: 0.35;
}

/* ---------- Red ticker (static text; assets/js/cvc.js adds .is-moving and the pause button) ---------- */

.cvc-ticker {
	position: relative;
	overflow: hidden;
	background-color: var(--wp--preset--color--red);
	color: var(--wp--preset--color--white);
}

.cvc-ticker__track {
	margin: 0;
	padding: 0.75rem var(--theme-content-edge-spacing, 1.5rem);
	color: var(--wp--preset--color--white);
	font-family: var(--wp--preset--font-family--display);
	font-size: 1.375rem;
	font-weight: 800;
	letter-spacing: 0.02em;
	line-height: 1.15;
	text-transform: none;
}

.cvc-ticker.is-moving .cvc-ticker__track {
	width: max-content;
	padding-inline: 0;
	white-space: nowrap;
	animation: cvc-ticker 45s linear infinite;
}

/* Paused: the whole line is shown again, wrapped, so nothing stays half-hidden. */
.cvc-ticker.is-paused .cvc-ticker__track {
	width: auto;
	padding-inline: var(--theme-content-edge-spacing, 1.5rem);
	white-space: normal;
	animation: none;
}

.cvc-ticker__pause {
	display: block;
	width: 100%;
	min-height: 44px;
	padding: 0 1rem;
	border: 0;
	background-color: var(--wp--preset--color--red-press);
	color: var(--wp--preset--color--white);
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--cvc-xs);
	letter-spacing: 0.08em;
	text-transform: uppercase;
	cursor: pointer;
}

@keyframes cvc-ticker {
	from {
		transform: translateX(100vw);
	}

	to {
		transform: translateX(-100%);
	}
}

@media (min-width: 600px) {
	.cvc-ticker.is-moving .cvc-ticker__pause {
		position: absolute;
		inset-block: 0;
		inset-inline-end: 0;
		width: auto;
	}
}

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

.cvc-strip {
	border-block: 1px solid var(--wp--preset--color--line);
	background-color: var(--wp--preset--color--surface);
}

.cvc-strip__inner {
	display: grid;
	grid-template-columns: 1fr 1fr;
}

.cvc-strip__item {
	display: flex;
	flex-direction: column;
	align-items: stretch;
	justify-content: flex-start;
	gap: 0.375rem;
	min-width: 0;
	padding: 1.25rem 1rem;
	border-block-end: 1px solid var(--wp--preset--color--line);
	color: var(--wp--preset--color--mute);
	font-size: var(--wp--preset--font-size--cvc-s);
}

.cvc-strip__item > * {
	margin: 0;
}

.cvc-strip__item:nth-child(odd) {
	border-inline-end: 1px solid var(--wp--preset--color--line);
}

.cvc-strip__item:nth-last-child(-n + 2) {
	border-block-end: 0;
}

.cvc-strip__item .cvc-fact {
	display: flex;
	flex-direction: column;
	align-items: stretch;
	justify-content: flex-start;
	gap: 0.375rem;
	min-width: 0;
	width: 100%;
}

.cvc-strip__title,
.cvc-strip__item .cvc-fact__value {
	display: block;
	font-family: var(--wp--preset--font-family--display);
	font-size: 1.75rem;
	font-weight: 800;
	line-height: 1.1;
	text-transform: none;
	color: var(--wp--preset--color--ink);
	min-width: 0;
	overflow-wrap: anywhere;
	text-wrap: balance;
}

.cvc-strip__item > p:not(.cvc-strip__title),
.cvc-strip__item .cvc-fact__label {
	min-width: 0;
	margin: 0;
	color: var(--wp--preset--color--mute);
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--cvc-xs);
	letter-spacing: 0.08em;
	line-height: 1.4;
	text-transform: uppercase;
}

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

	.cvc-strip__item + .cvc-strip__item {
		border-inline-start: 1px solid var(--wp--preset--color--line);
	}

	.cvc-strip__item,
	.cvc-strip__item:nth-child(odd) {
		border-block-end: 0;
		border-inline-end: 0;
	}
}

/* ---------- Deck diagram ("Will it fit?") ---------- */

.cvc-deck {
	padding: 1.5rem;
	border: 1px dashed var(--wp--preset--color--line-strong);
	border-radius: var(--cvc-radius-card);
	background-color: var(--wp--preset--color--surface);
}

.cvc-deck__box {
	display: grid;
	place-items: center;
	min-height: 7.5rem;
	border: 2px solid var(--wp--preset--color--red);
	border-radius: var(--cvc-radius-btn);
	background: repeating-linear-gradient(135deg, transparent 0 12px, color-mix(in srgb, var(--wp--preset--color--red) 12%, transparent) 12px 24px);
}

.cvc-deck__label {
	margin: 0;
	color: var(--wp--preset--color--ink);
	font-family: var(--wp--preset--font-family--display);
	font-size: 1.625rem;
	font-weight: 800;
	text-transform: none;
}

.cvc-deck__dims {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: 0.25rem 1rem;
	margin-top: 0.5rem;
}

.cvc-deck__dims > p {
	margin: 0;
	color: var(--wp--preset--color--mute);
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--cvc-xs);
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

/* ---------- Numbered steps (block style cvc-steps) ---------- */

.wp-block-list.is-style-cvc-steps {
	display: grid;
	gap: 0.75rem;
	margin-block: var(--wp--preset--spacing--40);
	padding: 0;
	counter-reset: cvc-step;
	list-style: none;
}

.is-style-cvc-steps > li {
	padding: 1rem;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--cvc-radius-card);
	background-color: var(--wp--preset--color--surface);
	counter-increment: cvc-step;
}

.is-style-cvc-steps > li::before {
	display: block;
	margin-bottom: 0.5rem;
	color: var( --wp--preset--color--red );
	content: "0" counter(cvc-step);
	font-family: var(--wp--preset--font-family--display);
	font-size: 2.75rem;
	font-weight: 800;
	line-height: 1;
}

@media (min-width: 900px) {
	.wp-block-list.is-style-cvc-steps {
		grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr));
		gap: 0.75rem;
	}
}

/* ---------- Load ticket (the "what to tell us" list) ---------- */

.cvc-ticket {
	position: relative;
	max-width: 40rem;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--cvc-radius-card);
	background-color: var(--wp--preset--color--surface);
	box-shadow: var(--cvc-shadow-lift);
}

.cvc-ticket::before,
.cvc-ticket::after {
	position: absolute;
	top: 50%;
	width: 22px;
	height: 22px;
	border: 1px solid var(--wp--preset--color--line-strong);
	border-radius: 50%;
	background-color: var(--wp--preset--color--base);
	content: "";
	transform: translateY(-50%);
}

.cvc-ticket::before {
	inset-inline-start: -12px;
}

.cvc-ticket::after {
	inset-inline-end: -12px;
}

body .cvc-ticket > :is(h2, h3):first-child {
	--theme-font-family: var(--wp--preset--font-family--mono);
	--theme-font-size: 0.8125rem;
	--theme-font-weight: 500;
	--theme-text-transform: none;
	--theme-line-height: 1.4;
	margin: 0;
	padding: 0.875rem 1.125rem;
	border-bottom: 1px dashed var(--wp--preset--color--line-strong);
	letter-spacing: 0.08em;
}

.cvc-ticket .wp-block-list {
	display: grid;
	gap: 0.5rem;
	margin: 0;
	padding: 0.75rem 1.125rem 1rem;
	list-style: none;
}

.cvc-ticket .wp-block-list > li {
	padding-bottom: 0.5rem;
	border-bottom: 1px dotted var(--wp--preset--color--line-strong);
}

.cvc-ticket .wp-block-list > li:last-child {
	padding-bottom: 0;
	border-bottom: 0;
}

/* ---------- Facts printed inside a service section (value over label) ---------- */

.cvc-service-b2b .cvc-fact,
.cvc-service-hours .cvc-fact,
.cvc-service-paperwork .cvc-fact {
	display: grid;
	gap: 0.125rem;
}

.cvc-service-b2b .cvc-fact__value,
.cvc-service-hours .cvc-fact__value,
.cvc-service-paperwork .cvc-fact__value {
	color: var(--wp--preset--color--ink);
	font-family: var(--wp--preset--font-family--mono);
	font-weight: 500;
}

.cvc-service-b2b .cvc-fact__label,
.cvc-service-hours .cvc-fact__label,
.cvc-service-paperwork .cvc-fact__label {
	color: var(--wp--preset--color--mute);
	font-size: var(--wp--preset--font-size--cvc-xs);
}

/* ---------- Corridors ---------- */

.cvc-corridors {
	display: grid;
	gap: var(--wp--preset--spacing--40);
}

.cvc-corridors .wp-block-image {
	margin: 0;
}

.cvc-corridors .wp-block-image img {
	width: 100%;
	height: auto;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--wp--custom--radius--md);
}

.cvc-corr-list {
	display: grid;
	gap: 0.75rem;
}

.cvc-corr {
	display: grid;
	grid-template-columns: 72px 1fr;
	gap: 0.25rem 1rem;
	align-items: center;
	padding: 1.25rem;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--cvc-radius-card);
	background-color: var(--wp--preset--color--surface);
	box-shadow: var(--cvc-shadow-lift);
}

.cvc-corr > * {
	margin: 0;
}

.cvc-corr .cvc-corr__tag {
	grid-row: span 3;
	align-self: start;
	padding: 0.375rem 0;
	border-radius: var(--wp--custom--radius--sm);
	background-color: var(--wp--preset--color--ink);
	color: var(--wp--preset--color--base);
	font-family: var(--wp--preset--font-family--display);
	font-size: 1.375rem;
	font-weight: 700;
	text-align: center;
}

body .cvc-corr h3 {
	--theme-font-family: var(--wp--preset--font-family--body);
	--theme-font-size: 1rem;
	--theme-font-weight: 600;
	--theme-text-transform: none;
	--theme-line-height: 1.3;
	color: var(--wp--preset--color--ink);
}

.cvc-corr p {
	color: var(--wp--preset--color--mute);
	font-size: var(--wp--preset--font-size--cvc-s);
}

.cvc-corr .cvc-fact {
	display: flex;
	flex-direction: row-reverse;
	justify-content: flex-end;
	gap: 0.375rem;
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--cvc-xs);
	color: var(--wp--preset--color--mute);
}

@media (min-width: 900px) {
	.cvc-corridors {
		grid-template-columns: 1.3fr 1fr;
		align-items: start;
	}
}

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

.cvc-bento {
	display: grid;
	gap: 1rem;
	counter-reset: cvc-service;
}

.cvc-bento > * {
	margin-block: 0;
}

.cvc-tile {
	position: relative;
	isolation: isolate;
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	min-height: 340px;
	padding: 1.5rem;
	overflow: hidden;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--cvc-radius-card);
	background-color: var(--wp--preset--color--surface);
	box-shadow: var(--cvc-shadow-lift);
	counter-increment: cvc-service;
}

.cvc-tile > * {
	margin: 0;
}

.cvc-tile > * + * {
	margin-top: 0.5rem;
}

.cvc-tile .wp-block-image {
	position: absolute;
	inset: 0;
	z-index: -2;
	margin: 0;
}

.cvc-tile .wp-block-image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.cvc-tile:not(.cvc-tile--plain)::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background: linear-gradient(180deg, color-mix(in srgb, var(--wp--preset--color--night) 32%, transparent) 0%, color-mix(in srgb, var(--wp--preset--color--night) 70%, transparent) 42%, color-mix(in srgb, var(--wp--preset--color--night) 94%, transparent) 100%);
}

.cvc-tile::after {
	position: absolute;
	inset-block-start: 1.25rem;
	inset-inline-start: 1.5rem;
	z-index: 1;
	padding: 0.25rem 0.5rem;
	border-radius: var(--wp--custom--radius--pill);
	background-color: color-mix(in srgb, var(--wp--preset--color--night) 70%, transparent);
	color: var(--wp--preset--color--night-ink);
	content: counter(cvc-service, decimal-leading-zero);
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--cvc-xs);
	letter-spacing: 0.08em;
	pointer-events: none;
}

.cvc-tile h3 {
	padding-inline-end: 3.5rem;
	font-family: var(--wp--preset--font-family--display);
	font-size: clamp(1.75rem, 3vw, 2.125rem);
	font-weight: 800;
	line-height: 1;
	text-transform: none;
}

.cvc-tile h3 a {
	color: var(--wp--preset--color--ink);
	text-decoration: none;
}

.cvc-tile:has(h3 a:focus-visible) {
	outline: 3px solid var(--wp--preset--color--night);
	outline-offset: 3px;
	box-shadow: 0 0 0 3px var(--wp--preset--color--white);
}

/* The tile carries the focus ring; the stretched heading link inside it gets none, so there is one indicator. */
.cvc-tile h3 a:focus-visible {
	outline: none;
	box-shadow: none;
}

.cvc-tile h3 a::before {
	position: absolute;
	inset-inline-end: 1.5rem;
	inset-block-end: 1.5rem;
	z-index: 1;
	width: 46px;
	height: 46px;
	border-radius: 50%;
	background-color: var(--wp--preset--color--red);
	color: var(--wp--preset--color--white);
	content: "\2192" / "";
	font-size: 1.375rem;
	font-weight: 700;
	line-height: 46px;
	text-align: center;
}

/* The heading link covers the whole tile, so the tile is one large tap target. */
.cvc-tile h3 a::after {
	content: "";
	position: absolute;
	inset: 0;
}

.cvc-tile p,
.cvc-tile li {
	color: var(--wp--preset--color--ink-soft);
	font-size: var(--wp--preset--font-size--cvc-s);
}

.cvc-tile p {
	padding-inline-end: 3.5rem;
}

.cvc-tile ul {
	display: grid;
	gap: 0.375rem;
	padding: 0;
	list-style: none;
}

.cvc-tile--plain {
	align-self: stretch;
	justify-content: center;
	min-height: 0;
	padding: 1.5rem;
	background-color: var(--wp--preset--color--surface);
}

.cvc-tile--plain::after {
	content: none;
}

@media (prefers-reduced-motion: no-preference) {
	.cvc-tile .wp-block-image img {
		transition: transform 0.8s var(--wp--custom--ease);
	}

	.cvc-tile h3 a::before {
		transition: transform 0.3s var(--wp--custom--ease);
	}

	.cvc-tile:hover .wp-block-image img {
		transform: scale(1.04);
	}

	.cvc-tile:hover h3 a::before {
		transform: rotate(-45deg);
	}
}

@media (min-width: 900px) {
	.cvc-bento {
		grid-template-columns: repeat(6, 1fr);
		grid-template-rows: repeat(3, minmax(300px, auto));
		grid-auto-rows: auto;
	}

	.cvc-tile {
		grid-column: span 2;
		min-height: 0;
	}

	.cvc-tile:not(.cvc-tile--plain) {
		min-height: 300px;
	}

	.cvc-tile--wide {
		grid-column: span 4;
		grid-row: span 2;
	}

	.cvc-tile--tall {
		grid-row: span 2;
	}

	.cvc-tile--full {
		grid-column: 1 / -1;
		grid-row: auto;
		min-height: 0;
		align-self: stretch;
	}

	.cvc-bento:has(> .cvc-tile:nth-child(4):last-child) > .cvc-tile:last-child {
		grid-column: span 4;
	}
}

/* ---------- Split rows (estimator, proof, contact) ---------- */

.cvc-split {
	display: grid;
	gap: var(--wp--preset--spacing--50);
	align-items: center;
}

.cvc-split > * {
	margin: 0;
}

@media (min-width: 900px) {
	.cvc-split {
		grid-template-columns: 1fr 1fr;
	}
}

/* ---------- Proof ---------- */

.cvc-stack {
	position: relative;
	min-height: 380px;
}

.cvc-stack .wp-block-image {
	position: absolute;
	margin: 0;
}

.cvc-stack .wp-block-image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--wp--custom--radius--md);
}

.cvc-stack .wp-block-image:first-child {
	top: 0;
	left: 0;
	width: 72%;
	height: 70%;
}

.cvc-stack .wp-block-image:last-child {
	right: 0;
	bottom: 0;
	width: 56%;
	height: 52%;
	box-shadow: var(--wp--custom--shadow--lift);
}

.cvc-facts {
	display: grid;
	grid-template-columns: 1fr 1fr;
	margin-top: var(--wp--preset--spacing--40);
	border-top: 1px solid var(--wp--preset--color--line);
}

/* All facts unknown yet (each hides itself): drop the empty frame too. */
.cvc-facts:not(:has(.cvc-fact)) {
	display: none;
}

.cvc-facts .cvc-fact {
	display: grid;
	padding: 1.25rem 0;
	border-bottom: 1px solid var(--wp--preset--color--line);
}

.cvc-facts .cvc-fact__value {
	font-family: var(--wp--preset--font-family--display);
	font-size: 2.5rem;
	font-weight: 700;
	line-height: 1;
	color: var(--wp--preset--color--ink);
}

.cvc-facts .cvc-fact__label {
	color: var(--wp--preset--color--mute);
	font-size: var(--wp--preset--font-size--cvc-xs);
}

@media (min-width: 900px) {
	.cvc-stack {
		min-height: 520px;
	}
}

/* ---------- Rights (dark band, two columns) ---------- */

.cvc-rights {
	background-color: var(--wp--preset--color--night);
}

/* The consecutive-section rule above zeroes the top padding; the dark band needs its own, and so does the section after it. */
.cvc-section.cvc-rights,
.cvc-rights + .cvc-section {
	padding-top: var(--wp--preset--spacing--70);
}

.cvc-rights__panel {
	display: grid;
	gap: var(--wp--preset--spacing--40) var(--wp--preset--spacing--60);
	align-content: start;
}

.cvc-rights__panel > * {
	margin: 0;
}

.cvc-rights__list {
	display: grid;
}

/* Each right is a row with its own line icon (a CSS mask: it takes the text colour and adds nothing to the accessibility tree). */
.cvc-rights__list > * {
	display: grid;
	grid-template-columns: 2.5rem minmax(0, 1fr);
	column-gap: 1rem;
	margin: 0;
	padding-block: 1.25rem;
	border-top: 1px solid var(--wp--preset--color--line);
}

.cvc-rights__list > :last-child {
	border-bottom: 1px solid var(--wp--preset--color--line);
}

.cvc-rights__list > *::before {
	content: "";
	grid-row: 1 / span 2;
	width: 2.5rem;
	height: 2.5rem;
	background-color: var(--wp--preset--color--red-text);
	-webkit-mask: var(--cvc-right-icon) center / 1.75rem no-repeat;
	mask: var(--cvc-right-icon) center / 1.75rem no-repeat;
}

.cvc-rights__list > :nth-child(1) {
	--cvc-right-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8z'/%3E%3Cpath d='M14 3v5h5M9 13h6M9 17h6'/%3E%3C/svg%3E");
}

.cvc-rights__list > :nth-child(2) {
	--cvc-right-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 21s7-6.2 7-11.5A7 7 0 0 0 5 9.5C5 14.8 12 21 12 21z'/%3E%3Ccircle cx='12' cy='9.5' r='2.5'/%3E%3C/svg%3E");
}

.cvc-rights__list > :nth-child(3) {
	--cvc-right-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 3h12v18l-3-2-3 2-3-2-3 2z'/%3E%3Cpath d='M9 8h6M9 12h6'/%3E%3C/svg%3E");
}

.cvc-rights__list > * > * {
	grid-column: 2;
	margin: 0;
}

body .cvc-rights__list h3 {
	--theme-font-size: 1.5rem;
}

.cvc-rights__list p {
	margin-top: 0.375rem;
	color: var(--wp--preset--color--mute);
}

/* The link to the Bill of Rights reads as a button (CSS only: the rights copy is approved content and is not edited). */
.cvc-rights__panel > p:last-child a {
	display: inline-flex;
	align-items: center;
	min-height: 3.5rem;
	padding-inline: 1.5rem;
	border: 2px solid var(--wp--preset--color--ink);
	border-radius: var(--wp--custom--radius--lg);
	color: var(--wp--preset--color--ink);
	font-size: var(--wp--preset--font-size--cvc-l);
	font-weight: 600;
	text-decoration: none;
}

.cvc-rights__panel > p:last-child a:hover,
.cvc-rights__panel > p:last-child a:focus-visible {
	background-color: var(--wp--preset--color--surface);
	color: var(--wp--preset--color--ink);
}

@media (min-width: 900px) {
	.cvc-rights__panel {
		grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
		grid-template-areas:
			"eyebrow list"
			"title list"
			"link list";
		grid-template-rows: auto auto 1fr;
	}

	.cvc-rights__panel > .cvc-eyebrow {
		grid-area: eyebrow;
	}

	.cvc-rights__panel > h2 {
		grid-area: title;
	}

	.cvc-rights__panel > .cvc-rights__list {
		grid-area: list;
	}

	.cvc-rights__panel > p:last-child {
		grid-area: link;
		align-self: start;
	}
}

/* ---------- Areas ---------- */

@media (min-width: 900px) {
	.cvc-areas-section .cvc-wrap {
		display: grid;
		grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
		gap: var(--wp--preset--spacing--60);
		align-items: start;
	}

	.cvc-areas-section .cvc-section__head {
		grid-template-columns: 1fr;
		margin-bottom: 0;
	}
}

/* A list of towns. Plain text rows look like text; a row that holds a link becomes a 52 px target with a chevron. */
.cvc-areas {
	display: grid;
	column-gap: var(--wp--preset--spacing--50);
}

.cvc-areas p {
	display: flex;
	align-items: center;
	min-height: 3.25rem;
	margin: 0;
	border-top: 1px solid var(--wp--preset--color--line);
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--cvc-xl);
	font-weight: 700;
	line-height: 1.1;
}

.cvc-areas a {
	display: flex;
	flex: 1;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	min-height: 3.25rem;
	color: var(--wp--preset--color--ink);
	text-decoration: none;
}

.cvc-areas a::after {
	flex: none;
	width: 1.5rem;
	height: 1.5rem;
	background-color: currentcolor;
	content: "";
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 6l6 6-6 6'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 6l6 6-6 6'/%3E%3C/svg%3E") center / contain no-repeat;
}

.cvc-areas a:hover,
.cvc-areas a:focus-visible {
	color: var(--wp--preset--color--red-text);
}

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

@media (prefers-reduced-motion: no-preference) {
	.cvc-areas a {
		transition: color 0.2s;
	}
}

/* ---------- FAQ (Rank Math FAQ block, core details, dispatch card) ---------- */

/*
 * DOM order is the reading order: head, list, card. On phones that is also the visual order.
 * From 900 px the head and the card stack in one column and the list fills the other.
 * The front end prints Rank Math's block as .rank-math-list-item (the editor saves .rank-math-faq-item).
 */
.cvc-faq {
	display: grid;
	gap: var(--wp--preset--spacing--50);
}

.cvc-faq .rank-math-list-item,
.cvc-faq details {
	border-bottom: 1px solid var(--wp--preset--color--line);
}

.cvc-faq .rank-math-list-item:first-child,
.cvc-faq details:first-child {
	border-top: 1px solid var(--wp--preset--color--line);
}

body .cvc-faq .rank-math-question,
.cvc-faq summary,
.cvc-faq__toggle {
	--theme-font-family: var(--wp--preset--font-family--body);
	--theme-font-size: 1.0625rem;
	--theme-font-weight: 600;
	--theme-text-transform: none;
	--theme-line-height: 1.4;
	margin: 0;
	padding: 0.75rem 0;
	color: var(--wp--preset--color--ink);
	font-family: var(--wp--preset--font-family--body);
	font-size: 1.0625rem;
	font-weight: 600;
	line-height: 1.4;
}

/* Without JavaScript the question is a plain heading; with it, a full-width button inside the heading. */
.cvc-faq summary,
.cvc-faq__toggle {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	width: 100%;
	min-height: 3.5rem;
	border: 0;
	background: none;
	cursor: pointer;
	text-align: start;
	text-transform: none;
}

.cvc-faq summary {
	list-style: none;
}

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

.cvc-faq summary::after,
.cvc-faq__toggle::after {
	flex: none;
	content: "+";
	font-family: var(--wp--preset--font-family--display);
	font-size: 2rem;
	font-weight: 800;
	line-height: 1;
}

.cvc-faq details[open] summary::after,
.cvc-faq__toggle[aria-expanded="true"]::after {
	content: "\00d7";
}

@media (prefers-reduced-motion: no-preference) {
	.cvc-faq summary::after,
	.cvc-faq__toggle::after {
		transition: transform 0.2s var(--wp--custom--ease);
	}

	.cvc-faq details[open] summary::after,
	.cvc-faq__toggle[aria-expanded="true"]::after {
		content: "+";
		transform: rotate(45deg);
	}
}

.cvc-faq .rank-math-answer,
.cvc-faq details > :not(summary) {
	max-width: 62ch;
	padding-bottom: 1.25rem;
	color: var(--wp--preset--color--mute);
}

.cvc-faq .rank-math-answer p {
	margin: 0;
}

/* A collapsed answer (hidden="until-found") still paints its own padding; without this every closed row keeps 20 px of empty space. */
.cvc-faq .rank-math-answer[hidden] {
	padding-bottom: 0;
}

.cvc-faq__card {
	display: grid;
	gap: 0.75rem;
	padding: var(--wp--preset--spacing--40);
	border: 1px solid var(--wp--preset--color--line-strong);
	border-radius: var(--cvc-radius-card);
	background-color: var(--wp--preset--color--surface);
}

.cvc-faq__card > * {
	margin: 0;
}

body .cvc-faq__card h3 {
	--theme-font-size: var(--wp--preset--font-size--cvc-xl);
}

.cvc-faq__card .cvc-btn {
	width: 100%;
	min-height: 3.5rem;
}

/* business-info prints the value first, then its label: stack them, value above its small label. */
.cvc-faq__hours {
	display: grid;
	gap: 0.125rem;
}

.cvc-faq__hours .cvc-fact__value {
	color: var(--wp--preset--color--ink-soft);
	font-size: var(--wp--preset--font-size--cvc-s);
	font-weight: 500;
}

.cvc-faq__hours .cvc-fact__label {
	color: var(--wp--preset--color--mute);
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--cvc-xs);
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

@media (min-width: 900px) {
	.cvc-faq {
		grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);
		grid-template-areas:
			"head list"
			"card list";
		grid-template-rows: auto 1fr;
		align-items: start;
	}

	.cvc-faq__head {
		grid-area: head;
	}

	.cvc-faq__list {
		grid-area: list;
	}

	.cvc-faq__card {
		grid-area: card;
		position: sticky;
		top: calc(72px + var(--wp--preset--spacing--40));
	}
}

/* ---------- Editor helpers (never printed on the front end) ---------- */

.cvc-approval-gate,
.cvc-draft-checklist {
	padding: 1rem;
	border: 1px dashed var(--wp--preset--color--amber);
}

@media (prefers-reduced-motion: reduce) {
	.cvc-ticker.is-moving .cvc-ticker__track {
		width: auto;
		padding-inline: var(--theme-content-edge-spacing, 1.5rem);
		white-space: normal;
		animation: none;
	}

}

/* ---------- Photo grid (service pages, plan 4.3b) ---------- */

.cvc-photo-grid {
	display: grid;
	gap: 1.5rem;
	grid-template-columns: 1fr;
}

.cvc-photo-grid .wp-block-image {
	margin-block: 0;
}

/* A fixed 4:3 frame (the real photos' ratio) keeps a 3:2 AI image level with its neighbours. */
.cvc-photo-grid .wp-block-image img {
	width: 100%;
	height: auto;
	aspect-ratio: 4 / 3;
	border-radius: var(--cvc-radius-card);
	object-fit: cover;
}

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

@media (min-width: 900px) {
	.cvc-photo-grid {
		grid-template-columns: repeat(3, 1fr);
	}
}

/* A grid with one image (Container) shows it as one wider tile instead of one column of three. */
.cvc-photo-grid:has(> .wp-block-image:only-child) {
	max-width: 40rem;
	grid-template-columns: 1fr;
}

/* ---------- Work gallery (core Gallery, style "cvc-work"; Home, plan 2026-10-30) ---------- */

/*
 * Core lays the gallery out as a wrapping flex row and gives each image figure a
 * percentage width under `:not(#individual-image)`, an ID-level selector. Rather
 * than outrank it, the style makes the gallery a grid and pins each figure to its
 * cell with min-width, which core never sets and which beats any width.
 * The 4:3 frame needs "Crop images" on (the default): core then fills it with
 * `object-fit: cover`.
 */
.wp-block-gallery.is-style-cvc-work {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 1rem;
	align-items: start;
}

.wp-block-gallery.is-style-cvc-work > .wp-block-image {
	min-width: 100%;
	aspect-ratio: 4 / 3;
	overflow: hidden;
	border-radius: var(--cvc-radius-card);
	background-color: var(--wp--preset--color--night-surface);
}

@media (min-width: 900px) {
	.wp-block-gallery.is-style-cvc-work {
		grid-template-columns: repeat(3, minmax(0, 1fr));
		gap: 1.5rem;
	}
}

/* ---------- Inner page intro and cards ---------- */

article:has(.entry-content > :is(.cvc-page-intro, .cvc-svc-hero):first-child),
.ct-container-full:has(.entry-content > :is(.cvc-page-intro, .cvc-svc-hero):first-child) {
	overflow: visible;
}

article:has(.entry-content > :is(.cvc-page-intro, .cvc-svc-hero):first-child) > .hero-section {
	width: 100%;
	max-width: none;
	margin: 0;
	background-color: var(--wp--preset--color--night);
	box-shadow: 0 0 0 100vmax var(--wp--preset--color--night);
	clip-path: inset(0 -100vmax);
}

article:has(.entry-content > :is(.cvc-page-intro, .cvc-svc-hero):first-child) > .hero-section .entry-header {
	box-sizing: border-box;
	width: 100%;
	max-width: var(--theme-normal-container-max-width, 1290px);
	margin-inline: auto;
	padding: clamp(2.5rem, 6vw, 4.5rem) var(--theme-content-edge-spacing, 1.5rem) 0.75rem;
	text-align: start;
}

article:has(.entry-content > :is(.cvc-page-intro, .cvc-svc-hero):first-child) > .hero-section .page-title,
body .cvc-page-intro h1 {
	--theme-font-family: var(--wp--preset--font-family--display);
	--theme-font-size: clamp(2.5rem, 7vw, 4.5rem);
	--theme-font-weight: 800;
	--theme-line-height: 0.95;
	color: var(--wp--preset--color--night-ink);
}

article:has(.entry-content > :is(.cvc-page-intro, .cvc-svc-hero):first-child) > .hero-section :is(.ct-breadcrumbs, .rank-math-breadcrumb),
.cvc-page-intro :is(.ct-breadcrumbs, .rank-math-breadcrumb) {
	color: var(--wp--preset--color--night-mute);
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--cvc-xs);
}

article:has(.entry-content > :is(.cvc-page-intro, .cvc-svc-hero):first-child) > .hero-section :is(.ct-breadcrumbs, .rank-math-breadcrumb) a,
.cvc-page-intro :is(.ct-breadcrumbs, .rank-math-breadcrumb) a {
	color: var(--wp--preset--color--night-mute);
}

/* Breadcrumb links in the dark band (services v2): lighter than the trail text, underlined on hover and focus, and a 44 px row on phones. */
article:has(.entry-content > :is(.cvc-page-intro, .cvc-svc-hero):first-child) > .hero-section .rank-math-breadcrumb a,
.cvc-page-intro .rank-math-breadcrumb a {
	color: var(--wp--preset--color--night-ink);
	text-underline-offset: 3px;
}

article:has(.entry-content > :is(.cvc-page-intro, .cvc-svc-hero):first-child) > .hero-section .rank-math-breadcrumb a:is(:hover, :focus-visible),
.cvc-page-intro .rank-math-breadcrumb a:is(:hover, :focus-visible) {
	text-decoration: underline;
}

@media (max-width: 899px) {
	article:has(.entry-content > :is(.cvc-page-intro, .cvc-svc-hero):first-child) > .hero-section .rank-math-breadcrumb a,
	.cvc-page-intro .rank-math-breadcrumb a {
		display: inline-flex;
		align-items: center;
		min-height: 2.75rem;
	}
}

/* Blocksy adds this top padding through `[data-vertical-spacing*="top"]`. */
.ct-container-full[data-vertical-spacing*="top"]:has(.entry-content > :is(.cvc-sheet-hero, .cvc-page-intro, .cvc-svc-hero):first-child) {
	padding-top: 0;
}

/* Same content width and edge as .cvc-wrap, so title, lead, button and the sections below share one left edge. The band is full-bleed through the shadow, clipped to the sides only. */
.cvc-page-intro {
	box-sizing: border-box;
	width: 100%;
	max-width: var(--theme-normal-container-max-width, 1290px);
	margin-inline: auto;
	padding: 0 var(--theme-content-edge-spacing, 1.5rem) 4rem;
	background-color: var(--wp--preset--color--night);
	box-shadow: 0 0 0 100vmax var(--wp--preset--color--night);
	/* Reaches 2px up over the title section: two anti-aliased clip edges meeting at a fractional y left a light 1px seam. */
	clip-path: inset(-2px -100vmax 0);
}

.cvc-page-intro > * {
	margin-inline: 0;
}

.cvc-page-intro .cvc-lead {
	max-width: 60ch;
	color: var(--wp--preset--color--night-ink-soft);
}

.cvc-page-intro .cvc-btn--outline {
	border-color: var(--wp--preset--color--night-ink);
	color: var(--wp--preset--color--night-ink);
}

.cvc-page-intro .cvc-btn--outline:hover,
.cvc-page-intro .cvc-btn--outline:focus-visible {
	background-color: var(--wp--preset--color--night-surface);
	color: var(--wp--preset--color--night-ink);
}

.cvc-split__copy,
.cvc-contact__nap {
	padding: var(--wp--preset--spacing--40);
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--cvc-radius-card);
	background-color: var(--wp--preset--color--surface);
	box-shadow: var(--cvc-shadow-lift);
}

/* Only the service inventory lists directly following their H3 use Fleet-style checks. */
.cvc-service-intro :is(.cvc-split__copy, .cvc-accounts) > h3 + .wp-block-list {
	display: grid;
	gap: 0.5rem;
	margin: var(--wp--preset--spacing--30) 0 0;
	padding: 0;
	list-style: none;
}

.cvc-service-intro :is(.cvc-split__copy, .cvc-accounts) > h3 + .wp-block-list > li {
	display: flex;
	gap: 0.75rem;
	align-items: center;
	min-height: 44px;
	padding: 0.625rem 0.75rem;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--cvc-radius-btn);
	background-color: var(--wp--preset--color--surface);
}

.cvc-service-intro :is(.cvc-split__copy, .cvc-accounts) > h3 + .wp-block-list > li::before {
	flex: none;
	width: 0.625rem;
	height: 0.375rem;
	border-block-end: 2px solid var(--wp--preset--color--red);
	border-inline-start: 2px solid var(--wp--preset--color--red);
	content: "";
	transform: rotate(-45deg) translateY(-0.0625rem);
}

.cvc-service-intro .cvc-accounts > h3 + .wp-block-list > li::before {
	border-block-end-color: var(--wp--preset--color--ok);
	border-inline-start-color: var(--wp--preset--color--ok);
}

.cvc-pricing-estimator .cvc-estimator,
body .cvc-jobs .cvc-job,
body .cvc-reviews .cvc-review {
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--cvc-radius-card);
	background-color: var(--wp--preset--color--surface);
	box-shadow: var(--cvc-shadow-lift);
}

.cvc-pricing-estimator .cvc-estimator {
	padding: var(--wp--preset--spacing--40);
}

.cvc-pricing-fees .wp-block-table {
	overflow: hidden;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--cvc-radius-card);
	background-color: var(--wp--preset--color--surface);
}

.single-post .entry-content > :where(:not(.alignfull):not(.alignwide)) {
	max-width: 70ch;
	margin-inline: auto;
}

.blog .entries article,
.archive .entries article {
	overflow: hidden;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--cvc-radius-card);
	background-color: var(--wp--preset--color--surface);
	box-shadow: var(--cvc-shadow-lift);
}

@media (min-width: 900px) {
	.cvc-page-intro {
		padding-bottom: 6rem;
	}
}


/* ---------- Fleet B2B source patterns (Task 8) ---------- */

/* Legacy .cvc-strip rules above remain for saved Home content that still carries those classes. */
.cvc-trust {
	border-block: 1px solid var(--wp--preset--color--line);
	background-color: var(--wp--preset--color--surface);
}

.cvc-trust__inner {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
}

.cvc-trust__item {
	--cvc-trust-icon: none;
	display: grid;
	grid-template-columns: 1.5rem minmax(0, 1fr);
	gap: 0.25rem 0.75rem;
	min-width: 0;
	padding: 1.25rem 1rem;
	border-block-end: 1px solid var(--wp--preset--color--line);
	color: var(--wp--preset--color--mute);
}

.cvc-trust__item::before {
	grid-row: span 2;
	align-self: center;
	width: 1.5rem;
	height: 1.5rem;
	background-color: var(--wp--preset--color--red);
	content: none;
	mask-image: var(--cvc-trust-icon);
	mask-position: center;
	mask-repeat: no-repeat;
	mask-size: contain;
	-webkit-mask-image: var(--cvc-trust-icon);
	-webkit-mask-position: center;
	-webkit-mask-repeat: no-repeat;
	-webkit-mask-size: contain;
}

.cvc-trust__item:is(.cvc-trust__item--load, .cvc-trust__item--size, .cvc-trust__item--hours, .cvc-trust__item--cvor, .cvc-trust__item--papers)::before {
	content: "";
}

.cvc-trust__item--load {
	--cvc-trust-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M3 5h18v12H3zm3 3v6h3V8zm6 0v6h6V8z'/%3E%3C/svg%3E");
}

.cvc-trust__item--size {
	--cvc-trust-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M3 5h18v14H3zm3 3v8h2v-3h2v3h2V8zm8 0v8h2v-3h2v3h2V8z'/%3E%3C/svg%3E");
}

.cvc-trust__item--hours {
	--cvc-trust-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm1 5v5l4 2-1 2-5-3V7z'/%3E%3C/svg%3E");
}

.cvc-trust__item--cvor {
	--cvc-trust-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2l8 3v6c0 5-3.4 9.4-8 11-4.6-1.6-8-6-8-11V5zm-1.2 13.2l6-6-1.4-1.4-4.6 4.6-2-2-1.4 1.4z'/%3E%3C/svg%3E");
}

.cvc-trust__item--papers {
	--cvc-trust-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6 2h8l4 4v16H6zm7 1.5V7h3.5zM8 11h8v2H8zm0 4h8v2H8z'/%3E%3C/svg%3E");
}

.cvc-trust__item:nth-child(odd) {
	border-inline-end: 1px solid var(--wp--preset--color--line);
}

.cvc-trust__item:nth-last-child(-n + 2) {
	border-block-end: 0;
}

.cvc-trust__item > * {
	min-width: 0;
	margin: 0;
}

.cvc-trust__value,
.cvc-trust__item .cvc-fact__value {
	color: var(--wp--preset--color--ink);
	font-family: var(--wp--preset--font-family--display);
	font-size: 1.375rem;
	font-weight: 800;
	line-height: 1.1;
	overflow-wrap: break-word;
}

.cvc-trust__label,
.cvc-trust__item .cvc-fact__label {
	color: var(--wp--preset--color--mute);
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--cvc-xs);
	letter-spacing: 0.08em;
	line-height: 1.4;
	text-transform: uppercase;
}

.cvc-trust__item .cvc-fact {
	display: grid;
	gap: 0.25rem;
}

.cvc-svc-card__list {
	display: grid;
	gap: 0.375rem;
	margin: 0;
	padding: 0;
	padding-inline-end: 3.5rem;
	list-style: none;
}

.cvc-svc-card__list > li {
	display: flex;
	gap: 0.5rem;
	align-items: flex-start;
}

.cvc-svc-card__list > li::before {
	flex: none;
	width: 1rem;
	height: 1rem;
	margin-top: 0.125rem;
	background-color: var(--wp--preset--color--red);
	content: "";
	mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='m9 16.2-4.2-4.2-1.4 1.4L9 19 21 7l-1.4-1.4z'/%3E%3C/svg%3E");
	mask-repeat: no-repeat;
	mask-size: contain;
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='m9 16.2-4.2-4.2-1.4 1.4L9 19 21 7l-1.4-1.4z'/%3E%3C/svg%3E");
	-webkit-mask-repeat: no-repeat;
	-webkit-mask-size: contain;
}

.cvc-svc-hero {
	display: grid;
	background-color: var(--wp--preset--color--night);
	box-shadow: 0 0 0 100vmax var(--wp--preset--color--night);
	clip-path: inset(-2px -100vmax 0);
}

.cvc-svc-hero > * {
	margin: 0;
}

.cvc-svc-hero .wp-block-image img {
	display: block;
	width: 100%;
	min-height: 20rem;
	object-fit: cover;
}

.cvc-svc-hero .cvc-page-intro {
	width: auto;
	max-width: none;
	margin: 0;
	padding: var(--wp--preset--spacing--60) 0;
	padding-block-end: var(--wp--preset--spacing--40);
	background-color: transparent;
	box-shadow: none;
	clip-path: none;
}

.cvc-spec-table {
	margin-top: var(--wp--preset--spacing--40);
	overflow: hidden;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--cvc-radius-card);
	background-color: var(--wp--preset--color--surface);
	box-shadow: var(--cvc-shadow-lift);
}

.cvc-spec-table table {
	width: 100%;
	margin: 0;
	border-collapse: collapse;
}

.cvc-spec-table :is(th, td) {
	padding: 0.875rem 1rem;
	border: 0;
	border-block-end: 1px solid var(--wp--preset--color--line);
	color: var(--wp--preset--color--ink);
	font-family: var(--wp--preset--font-family--mono);
	text-align: start;
}

.cvc-spec-table th {
	font-weight: 700;
}

.cvc-spec-table tr:last-child :is(th, td) {
	border-block-end: 0;
}

.cvc-accounts {
	padding: var(--wp--preset--spacing--40);
	border: 1px solid var(--wp--preset--color--night-line-strong);
	border-radius: var(--cvc-radius-card);
	background-color: var(--wp--preset--color--night-surface);
	box-shadow: var(--cvc-shadow-lift);
}

.cvc-accounts > * {
	margin-block: 0;
}

.cvc-accounts > * + * {
	margin-top: var(--wp--preset--spacing--40);
}

@media (max-width: 479px) {
	.cvc-trust__inner {
		grid-template-columns: 1fr;
	}

	.cvc-trust__item:nth-child(odd) {
		border-inline-end: 0;
	}

	.cvc-trust__item:nth-last-child(-n + 2) {
		border-block-end: 1px solid var(--wp--preset--color--line);
	}

	.cvc-trust__item:last-child {
		border-block-end: 0;
	}
}

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

	.cvc-trust__item,
	.cvc-trust__item:nth-child(odd) {
		border-block-end: 0;
		border-inline-end: 0;
	}

	.cvc-trust__item + .cvc-trust__item {
		border-inline-start: 1px solid var(--wp--preset--color--line);
	}

	.cvc-trust__value,
	.cvc-trust__item .cvc-fact__value {
		font-size: 1.75rem;
		overflow-wrap: anywhere;
	}

	.cvc-svc-hero {
		grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
		align-items: stretch;
	}

	.cvc-svc-hero .cvc-page-intro {
		grid-column: 1;
		grid-row: 1;
		padding-block: var(--wp--preset--spacing--70);
		padding-inline-end: var(--wp--preset--spacing--50);
	}

	.cvc-svc-hero .wp-block-image {
		grid-column: 2;
		grid-row: 1;
	}

	.cvc-svc-hero .wp-block-image img {
		height: 100%;
		min-height: 28rem;
	}
}

/* ---------- Services hub chooser (services v2) ---------- */

/* The cards are light tiles (.cvc-tile--plain): photo on top, facts below, one tap target through the heading link's ::after. */
.cvc-svc-cards {
	display: grid;
	gap: 1rem;
}

.cvc-svc-cards > * {
	margin-block: 0;
}

.cvc-svc-cards .cvc-svc-card {
	justify-content: flex-start;
	padding: 0 1.25rem 1.25rem;
}

.cvc-svc-cards .cvc-svc-card .wp-block-image {
	position: static;
	z-index: auto;
	aspect-ratio: 16 / 9;
	margin: 0 -1.25rem 0.75rem;
	overflow: hidden;
	background-color: var(--wp--preset--color--night);
}

.cvc-svc-cards .cvc-svc-card .wp-block-image img {
	display: block;
}

.cvc-svc-cards .cvc-svc-card h3 {
	padding-inline-end: 0;
}

/* The "See ..." line below is the visible call to action, so the round arrow of the Home tiles is not printed here. */
.cvc-svc-cards .cvc-svc-card h3 a::before {
	content: none;
}

.cvc-svc-cards .cvc-svc-card p,
.cvc-svc-cards .cvc-svc-card .cvc-svc-card__list {
	padding-inline-end: 0;
}

.cvc-svc-cards .cvc-svc-card__list {
	margin-top: 0.75rem;
}

.cvc-svc-card__more {
	margin-top: auto;
	padding-top: 1rem;
	font-weight: 600;
}

/* Above the stretched heading link, so the line keeps its own focus ring and hit area. */
.cvc-svc-card__more a {
	position: relative;
	z-index: 2;
	display: inline-flex;
	align-items: center;
	min-height: 2.75rem;
	color: var(--wp--preset--color--red-text);
	text-decoration: underline;
	text-decoration-thickness: 2px;
	text-underline-offset: 4px;
}

.cvc-service-chooser__b2b {
	margin-top: 1rem;
	padding: 1.25rem 1.5rem;
	border: 1px solid var(--wp--preset--color--line-strong);
	border-radius: var(--cvc-radius-card);
	background-color: var(--wp--preset--color--surface);
}

.cvc-service-chooser__b2b > * {
	margin: 0;
}

.cvc-service-chooser__b2b p {
	max-width: 70ch;
	color: var(--wp--preset--color--ink-soft);
}

.cvc-service-chooser__b2b a {
	display: inline-flex;
	align-items: center;
	min-height: 2.75rem;
	color: var(--wp--preset--color--red-text);
	font-weight: 600;
	text-decoration: underline;
	text-decoration-thickness: 2px;
	text-underline-offset: 4px;
}

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

	/* Resets the bento rule .cvc-tile { grid-column: span 2 } (six-column grid on Home): here each card is one of two columns. */
	.cvc-svc-cards .cvc-svc-card {
		grid-column: auto;
	}
}

/* ---------- Related links (services v2) ---------- */

.cvc-related__links {
	max-width: 70ch;
	margin: 0;
	font-size: 1.0625rem;
	line-height: 1.65;
}

/* Inline text links, never buttons. WCAG 2.5.8: an inline link inside a sentence is exempt from the 24 px target size. */
.cvc-related__links a {
	color: var(--wp--preset--color--red-text);
	text-decoration: underline;
	text-decoration-thickness: 2px;
	text-underline-offset: 4px;
}

.cvc-related .wp-block-heading {
	margin-bottom: var(--wp--preset--spacing--30);
}

/* ---------- Proof strip on service pages (services v2) ---------- */

/* The strip pattern is full-bleed by itself: the section around it adds no spacing and the next section starts with its own top padding. */
.cvc-service-proof {
	padding-block: 0;
}

.cvc-service-proof > .cvc-wrap {
	max-width: none;
	padding-inline: 0;
}

.cvc-service-proof + .cvc-section {
	padding-top: var(--wp--preset--spacing--70);
}

/* ---------- Hero eyebrow and fact chips on service pages (services v2) ---------- */

.cvc-svc-hero .cvc-page-intro > .cvc-eyebrow {
	color: var(--wp--preset--color--ink-soft);
	letter-spacing: 0.08em;
	text-wrap: balance;
}

@media (min-width: 480px) {
	.cvc-svc-hero .cvc-page-intro > .cvc-eyebrow {
		letter-spacing: 0.14em;
	}
}

.cvc-svc-hero .cvc-btn--outline {
	border-color: var(--wp--preset--color--ink);
}

/* Chips are plain labels (block style cvc-chips on a core/list): not clickable, no hover state. They use the plain slugs, so they read on light sections and the dark hero remaps them. */
.wp-block-list.is-style-cvc-chips {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

/* The hours chip is a shortcode that prints nothing when CVC Settings holds no hours: the empty item must not show as a pill. */
.wp-block-list.is-style-cvc-chips > li:empty {
	display: none;
}

.wp-block-list.is-style-cvc-chips > li {
	margin: 0;
	padding: 0.375rem 0.75rem;
	border: 1px solid var(--wp--preset--color--line-strong);
	border-radius: var(--wp--custom--radius--pill);
	color: var(--wp--preset--color--ink-soft);
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--cvc-xs);
	line-height: 1.4;
}
