/* Native Stack owns between-section rhythm; component padding stays editable.
 * Services sets its Text + Image padding to zero inside this Stack.
 * Reuse this class on a Stack when another composed page needs the same rhythm.
 * Explicit gap is needed because this classic theme has no native blockGap support.
 */
.wp-block-group.c-composed-sections {
	gap: 120px;
	padding-block: 80px;
}

/* Preserve master-container centring against native Stack child margins. */
.c-page-cta.c-container {
	margin-inline: auto;
}

/* Native Row owns CTA alignment/wrapping; existing trust classes own typography
 * and responsive panel padding. No default-layout Group wrappers are required.
 */
.wp-block-group.c-page-cta__panel {
	gap: var(--spacing-xl);
	background: var(--color-brand-light);
	border-radius: var(--radius-base);
}

.wp-block-group.c-page-cta__copy {
	gap: 0;
}

.c-page-cta__panel > .wp-block-buttons {
	flex-shrink: 0;
}

@media (max-width: 1023px) {
	.wp-block-group.c-composed-sections {
		gap: 80px;
		padding-block: 60px;
	}
}

@media (max-width: 767px) {
	.wp-block-group.c-composed-sections {
		gap: 60px;
		padding-block: 40px;
	}
}

/* Services-only, native editable CTA variant. Shared CTA patterns stay unchanged. */
.c-services-project-cta.c-container {
	margin-inline: auto;
}

.c-services-project-cta__panel {
	position: relative;
	overflow: hidden;
	padding: clamp(32px, 3vw, 48px);
	border: 1px solid var(--color-brand-dark, #16283a);
	background: #fff;
	font-family: var(--font-sans);
	border-radius: 0;
}

.c-services-project-cta__panel::before {
	content: "";
	position: absolute;
	inset: 0;
	background: var(--betike-cta-background, url("../../images/services-floor-plan.svg")) right center / 90% auto no-repeat;
	opacity: 0.084;
	pointer-events: none;
}

.c-services-project-cta__panel,
.c-services-project-cta__panel > .wp-block-group__inner-container,
.c-services-project-cta__panel > .block-editor-inner-blocks > .block-editor-block-list__layout {
	display: grid;
	grid-template-columns: 45fr 55fr;
	column-gap: 48px;
	row-gap: 32px;
}

.c-services-project-cta__panel > .wp-block-group__inner-container,
.c-services-project-cta__panel > .block-editor-inner-blocks {
	grid-column: 1 / -1;
}

.c-services-project-cta__panel .c-services-project-cta__heading {
	position: relative;
	grid-column: 1;
	grid-row: 1 / 3;
	max-width: 100%;
	margin: 0;
	font-family: var(--font-sans);
	font-size: clamp(48px, 6vw, 80px);
	font-weight: 700;
	line-height: 1.08;
	letter-spacing: -0.035em;
	color: var(--color-brand-ink, #0e1b26);
}

.c-services-project-cta__panel .c-services-project-cta__description {
	position: relative;
	grid-column: 2;
	align-self: end;
	max-width: 34ch;
	margin: 0;
	font-size: 20px;
	line-height: 1.5;
}

.c-services-project-cta__panel .c-services-project-cta__link {
	position: relative;
	grid-column: 2;
	align-self: end;
	justify-self: end;
	margin: 0;
	font-size: clamp(23.8px, 2.55vw, 34px);
	font-weight: 700;
	line-height: 1.2;
}

.c-services-project-cta__link a {
	color: var(--color-brand-ink, #0e1b26);
	text-decoration: none;
}

.c-services-project-cta__link a:hover {
	text-decoration: underline;
	text-underline-offset: 6px;
}

.c-services-project-cta__link a:focus-visible {
	outline: 2px solid var(--color-brand-primary, #6290b3);
	outline-offset: 6px;
}

.c-services-project-cta__arrow {
	color: var(--color-brand-secondary, #a9714c);
}

@media (max-width: 767px) {
	.c-services-project-cta__panel,
	.c-services-project-cta__panel > .wp-block-group__inner-container,
	.c-services-project-cta__panel > .block-editor-inner-blocks > .block-editor-block-list__layout {
		grid-template-columns: minmax(0, 1fr);
		gap: 24px;
	}

	.c-services-project-cta__panel .c-services-project-cta__heading,
	.c-services-project-cta__panel .c-services-project-cta__description,
	.c-services-project-cta__panel .c-services-project-cta__link {
		grid-column: 1;
		grid-row: auto;
	}

	.c-services-project-cta__panel .c-services-project-cta__description {
		font-size: 18px;
	}

	.c-services-project-cta__panel::before {
		background-size: auto 100%;
		opacity: 0.056;
	}
}

/* Reusable individual-service introduction, composed entirely from native blocks. */
.c-service-intro.c-container {
	padding-block: 40px 80px;
	font-family: var(--font-sans);
}
.c-service-breadcrumbs {
	margin-bottom: 32px;
	font-size: 12px;
	line-height: 1.5;
	color: var(--color-brand-ink, #0e1b26);
}
.c-service-breadcrumbs ol {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	list-style: none;
	padding: 0;
	margin: 0;
}
.c-service-breadcrumbs li { margin: 0; min-width: 0; overflow-wrap: anywhere; }
.c-service-breadcrumbs li + li::before {
	content: "›";
	margin-right: 8px;
	color: var(--color-brand-primary, #6290b3);
}
.c-service-breadcrumbs a { color: inherit; text-decoration: none; }
.c-service-breadcrumbs a:hover { text-decoration: underline; }
.c-service-breadcrumbs a:focus-visible {
	outline: 2px solid var(--color-brand-primary, #6290b3);
	outline-offset: 4px;
}
.wp-block-columns.c-service-hero {
	display: grid;
	grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);
	gap: 64px;
	align-items: start;
	margin: 0;
}
.c-service-hero > .wp-block-column { min-width: 0; margin: 0; }
.c-service-hero__copy > * { margin-top: 0; }
.c-service-hero__copy .c-service-hero__eyebrow {
	margin-bottom: 16px;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.12em;
	color: var(--color-brand-primary, #6290b3);
}
.c-service-hero__copy .c-service-hero__heading {
	max-width: 9ch;
	margin-bottom: 24px;
	font-family: var(--font-sans);
	font-size: clamp(36px, 3.5vw, 48px);
	font-weight: 700;
	line-height: 1.05;
	letter-spacing: -0.035em;
	color: var(--color-brand-ink, #0e1b26);
}
.c-service-hero__copy .c-service-hero__description {
	max-width: 38ch;
	margin-bottom: 28px;
	font-size: 16px;
	line-height: 1.6;
}
.c-service-hero__images,
.c-service-hero__images > .wp-block-group__inner-container,
.c-service-hero__images > .block-editor-inner-blocks > .block-editor-block-list__layout {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 8px;
	min-height: 100%;
}
.c-service-hero__images { height: clamp(300px, 32vw, 440px); }
.c-service-hero__images > .wp-block-group__inner-container,
.c-service-hero__images > .block-editor-inner-blocks { grid-column: 1 / -1; }
.c-service-hero__image-slot {
	position: relative;
	min-width: 0;
	margin: 0;
	background: var(--color-brand-light, #f4f6f7);
}
.c-service-hero__image-slot > .wp-block-group__inner-container,
.c-service-hero__image-slot > .block-editor-inner-blocks,
.c-service-hero__image-slot .block-editor-block-list__layout { height: 100%; }
.c-service-hero__image-slot .wp-block-image { height: 100%; margin: 0; }
.c-service-hero__image-slot .wp-block-image img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	border-radius: 0;
}
/* Empty native Image blocks remain selectable in Gutenberg. */
.c-service-hero__image-slot img:not([src]) { display: none; }
.c-service-hero__image-slot:not(:has(img[src]))::before {
	content: "Image to be selected";
	position: absolute;
	inset: 0;
	display: grid;
	place-content: center;
	padding: 12px;
	font-size: 12px;
	line-height: 1.5;
	text-align: center;
	color: var(--color-brand-ink, #0e1b26);
	pointer-events: none;
}
.editor-styles-wrapper .c-service-hero__image-slot::before { content: none; }
@media (max-width: 1023px) {
	.c-service-intro.c-container { padding-block: 32px 60px; }
	.wp-block-columns.c-service-hero { grid-template-columns: minmax(0, 1fr); gap: 32px; }
	.c-service-hero__copy .c-service-hero__description { max-width: 50ch; }
}
@media (max-width: 767px) {
	.c-service-intro.c-container { padding-block: 24px 40px; }
	.c-service-breadcrumbs { margin-bottom: 24px; }
	.c-service-hero__images { height: clamp(220px, 65vw, 360px); }
	.c-service-hero__images,
	.c-service-hero__images > .wp-block-group__inner-container,
	.c-service-hero__images > .block-editor-inner-blocks > .block-editor-block-list__layout { gap: 6px; }
}

/* Individual-service lower sections: native compositions, independent per page. */
.c-individual-service-sections,
.c-individual-service-sections > .wp-block-group__inner-container,
.c-individual-service-sections > .block-editor-inner-blocks > .block-editor-block-list__layout {
	display: grid;
	gap: 100px;
	min-width: 0;
	font-family: var(--font-sans);
}
.c-individual-service-sections { padding-bottom: 100px; }
.c-individual-service-sections .c-service-section.c-container,
.c-service-type .c-text-image > .c-container { padding-block: 0; }
.c-individual-service-sections .c-service-section { min-width: 0; }
.c-service-section .c-service-section__eyebrow {
	margin: 0 0 12px;
	font-size: 12px;
	font-weight: 600;
	line-height: 1.5;
	letter-spacing: 0.1em;
	color: var(--color-brand-primary, #6290b3);
}
.c-service-section .c-service-section__heading,
.c-service-type .c-service-section__heading {
	margin: 0;
	font-family: var(--font-sans);
	font-size: clamp(26px, 2.4vw, 36px);
	font-weight: 700;
	line-height: 1.15;
	letter-spacing: -0.035em;
	color: var(--color-brand-ink, #0e1b26);
}
.c-service-types__intro,
.c-service-faq__columns { gap: 64px; margin: 0; }
.c-service-types__intro { align-items: end; }
.c-service-types__intro p:not(.c-service-section__eyebrow) { margin: 0; font-size: 16px; line-height: 1.6; }
.c-service-type .c-text-image__content { gap: 12px; }
.c-service-type .c-text-image__content h2,
.c-service-type .c-text-image__content p { margin: 0; }
.c-service-type .c-text-image__eyebrow::after { content: none; }
.c-service-type .c-text-image__image,
.c-service-type .c-text-image__image-element { border-radius: 0; }
.c-service-type .c-text-image__image-element { aspect-ratio: 1.9; object-fit: cover; }
/* A missing image stays selectable in the existing block's Media Library control. */
.c-service-type .c-text-image__wrapper:not(:has(.c-text-image__image))::after {
	content: "Select a conversion image in Gutenberg";
	display: grid;
	place-content: center;
	min-height: 260px;
	padding: 24px;
	background: var(--color-brand-light, #f4f6f7);
	color: var(--color-brand-ink, #0e1b26);
	font-size: 14px;
	text-align: center;
}
.c-service-type .c-text-image--left .c-text-image__wrapper:not(:has(.c-text-image__image))::after { order: -1; }
.editor-styles-wrapper .c-service-type .c-text-image__wrapper::after { content: none; }
.c-service-process__steps { position: relative; gap: 40px; margin: 40px 0 0; }
.c-service-process__steps::before {
	content: "";
	position: absolute;
	top: 47px;
	left: 0;
	right: 0;
	height: 1px;
	background: var(--color-brand-primary, #6290b3);
	opacity: 0.35;
}
.c-service-process__stage { box-sizing: border-box; min-width: 0; position: relative; padding: 72px 0 0 20px; }
.c-service-process__stage::before {
	content: "";
	position: absolute;
	top: 0;
	left: 20px;
	width: 40px;
	height: 40px;
	background: var(--color-brand-primary, #6290b3);
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40'%3E%3Cg fill='none' stroke='black' stroke-width='1.3'%3E%3Cpath d='M6 8h28v19H19l-9 7v-7H6z'/%3E%3C/g%3E%3C/svg%3E") center / contain no-repeat;
}
.c-service-process__steps .wp-block-column:nth-child(2) .c-service-process__stage::before {
	mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40'%3E%3Cpath d='m3 18 17-14 17 14M8 15v21h9V24h7v12h9V15' fill='none' stroke='black' stroke-width='1.3'/%3E%3C/svg%3E");
}
.c-service-process__steps .wp-block-column:nth-child(3) .c-service-process__stage::before {
	mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40'%3E%3Cpath d='M10 3h14l8 8v26H10zM24 3v9h8M15 19h12M15 25h12M15 31h8' fill='none' stroke='black' stroke-width='1.3'/%3E%3C/svg%3E");
}
.c-service-process__steps .wp-block-column:nth-child(4) .c-service-process__stage::before {
	mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40'%3E%3Cg fill='none' stroke='black' stroke-width='1.3'%3E%3Ccircle cx='20' cy='20' r='16'/%3E%3Cpath d='m12 20 5 5 11-12'/%3E%3C/g%3E%3C/svg%3E");
}
.c-service-process__stage .c-service-process__number {
	position: absolute;
	top: 36px;
	left: 0;
	display: grid;
	place-content: center;
	width: 24px;
	height: 24px;
	margin: 0;
	border-radius: 50%;
	background: var(--color-brand-primary, #6290b3);
	color: #fff;
	font-size: 12px;
}
.c-service-process__title { color: var(--color-brand-ink, #0e1b26); margin: 0 0 8px; font-size: 16px; line-height: 1.3; font-weight: 700; }
.c-service-process__stage p:not(.c-service-process__number) { margin: 0; font-size: 14px; line-height: 1.5; }
.c-service-gallery__grid,
.c-service-gallery__grid > .wp-block-group__inner-container,
.c-service-gallery__grid > .block-editor-inner-blocks > .block-editor-block-list__layout {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 16px;
	min-width: 0;
}
.c-service-gallery__grid { margin-top: 24px; }
.c-service-gallery__grid > .wp-block-group__inner-container,
.c-service-gallery__grid > .block-editor-inner-blocks { grid-column: 1 / -1; }
.c-service-gallery__slot { overflow: hidden; position: relative; min-width: 0; aspect-ratio: 1.5; background: var(--color-brand-light, #f4f6f7); }
.c-service-gallery__slot .wp-block-image { margin: 0; height: 100%; }
.c-service-gallery__slot img { display: block; width: 100%; height: 100%; object-fit: cover; }
.c-service-gallery__slot img:not([src]) { display: none; }
.c-service-gallery__slot:not(:has(img[src]))::before {
	content: "Image to be selected";
	position: absolute;
	inset: 0;
	display: grid;
	place-content: center;
	padding: 16px;
	font-size: 12px;
	text-align: center;
	pointer-events: none;
}
.editor-styles-wrapper .c-service-gallery__slot::before { content: none; }
.c-service-faq .wp-block-details { padding-block: 14px; border-bottom: 1px solid #dce1e5; font-size: 14px; }
.c-service-faq .wp-block-details:first-child { padding-top: 0; }
.c-service-faq summary { display: flex; justify-content: space-between; gap: 16px; cursor: pointer; list-style: none; line-height: 1.5; }
.c-service-faq summary::-webkit-details-marker { display: none; }
.c-service-faq summary::after { content: "+"; color: var(--color-brand-primary, #6290b3); font-size: 20px; line-height: 1; }
.c-service-faq details[open] > summary::after { content: "−"; }
.c-service-faq summary:focus-visible { outline: 2px solid var(--color-brand-primary, #6290b3); outline-offset: 4px; }
.c-service-faq details p { margin: 16px 0 0; line-height: 1.6; }
@media (max-width: 1023px) {
	.c-individual-service-sections,
	.c-individual-service-sections > .wp-block-group__inner-container,
	.c-individual-service-sections > .block-editor-inner-blocks > .block-editor-block-list__layout { gap: 80px; }
	.c-individual-service-sections { padding-bottom: 80px; }
	.c-service-process__steps { gap: 24px; }
}
@media (max-width: 767px) {
	.c-individual-service-sections,
	.c-individual-service-sections > .wp-block-group__inner-container,
	.c-individual-service-sections > .block-editor-inner-blocks > .block-editor-block-list__layout { gap: 60px; }
	.c-individual-service-sections { padding-bottom: 60px; }
	.c-service-types__intro,
	.c-service-faq__columns { gap: 24px; }
	.c-service-type .c-text-image--left .c-text-image__wrapper:not(:has(.c-text-image__image))::after { order: 0; }
	.c-service-process__steps::before { display: none; }
	.c-service-process__stage { padding: 0 0 0 64px; min-height: 80px; }
	.c-service-process__stage::before { left: 0; width: 32px; height: 32px; }
	.c-service-process__stage .c-service-process__number { top: 40px; left: 4px; }
	.c-service-gallery__grid,
	.c-service-gallery__grid > .wp-block-group__inner-container,
	.c-service-gallery__grid > .block-editor-inner-blocks > .block-editor-block-list__layout { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
}
.c-service-gallery__slot > .wp-block-group__inner-container,
.c-service-gallery__slot > .block-editor-inner-blocks,
.c-service-gallery__slot .block-editor-block-list__layout { height: 100%; }

/* New service-page instances keep unassigned images quiet on the frontend.
 * Gutenberg retains its existing Media Library placeholders and controls.
 * The approved Loft page does not opt into this wrapper.
 */
.c-service-page .c-service-hero__image-slot:not(:has(img[src]))::before,
.c-service-page .c-service-gallery__slot:not(:has(img[src]))::before { content: none; }
.c-service-page .c-service-type .c-text-image__wrapper:not(:has(.c-text-image__image))::after { content: ""; }

/* Editable main-page introductions and content, using the composed shell. */
.c-main-page.c-container { padding-block: 80px; font-family: var(--font-sans); }
.c-main-page__intro { max-width: 800px; margin-bottom: 80px; }
.c-main-page__intro > .wp-block-group__inner-container > p:first-child { color: var(--color-brand-primary, #6290b3); font-size: 12px; letter-spacing: 0.12em; text-transform: uppercase; }
.c-main-page h1 { font-size: clamp(36px, 4vw, 64px); line-height: 1.08; letter-spacing: -0.04em; margin-block: 20px 28px; }
.c-main-page h2 { font-size: clamp(26px, 3vw, 36px); line-height: 1.2; margin-block: 0 24px; }
.c-main-page p, .c-main-page li { line-height: 1.65; }
.c-main-page p { margin-block: 0 20px; }
.c-main-page__section { max-width: 760px; margin-bottom: 64px; }
.c-main-page__section:last-child { margin-bottom: 0; }
.c-main-page a:not(.wp-block-button__link) { color: var(--color-brand-ink, #0e1b26); text-underline-offset: 4px; }
.c-main-page__projects .wp-block-post { max-width: 800px; padding-block: 32px; border-top: 1px solid var(--color-brand-primary, #6290b3); }
@media (max-width: 767px) {
	.c-main-page.c-container { padding-block: 48px; }
	.c-main-page__intro { margin-bottom: 48px; }
	.c-main-page__section { margin-bottom: 48px; }
}

/* Native editorial compositions and the shared enquiry form. */
.c-editorial-page.c-container { font-family: var(--font-sans); padding-block: 64px 100px; }
.c-editorial-page > .wp-block-group__inner-container { display: grid; gap: 100px; }
.c-editorial-page h1 { max-width: 17ch; font-size: clamp(36px, 4vw, 64px); line-height: 1.08; letter-spacing: -0.04em; margin-block: 16px 24px; }
.c-editorial-page h2 { font-size: clamp(28px, 3vw, 40px); line-height: 1.15; margin-block: 0 24px; }
.c-editorial-page p, .c-editorial-page li { line-height: 1.65; }
.c-editorial-page p { margin-block: 0 20px; }
.c-editorial-page .c-editorial-eyebrow { color: var(--color-brand-primary, #6290b3); font-size: 12px; letter-spacing: .12em; text-transform: uppercase; }
.c-editorial-page .wp-block-columns { gap: 64px; margin: 0; }
.c-editorial-page .wp-block-column { min-width: 0; }
.c-editorial-page .wp-block-image { margin: 0; }
.c-editorial-page .wp-block-image img { display: block; width: 100%; height: auto; }
.c-editorial-grid > .wp-block-group__inner-container { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 48px; }
.c-editorial-grid h2 { font-size: 28px; margin-top: 24px; }
.c-editorial-grid .wp-block-image img { aspect-ratio: 4 / 3; object-fit: cover; }
.c-project-grid .wp-block-post-template { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 48px; padding: 0; }
.c-project-grid .wp-block-post { list-style: none; }
.c-project-grid .c-project-media { margin: 0 0 24px; }
.c-project-grid .c-project-media img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.c-project-grid h2 { font-size: 28px; }
.c-enquiry-layout label { display: block; font-weight: 600; }
.c-enquiry-layout input:not([type=checkbox]):not([type=submit]), .c-enquiry-layout textarea, .c-enquiry-layout select { width: 100%; box-sizing: border-box; padding: 12px; border: 1px solid #86949e; border-radius: 0; background: white; font: inherit; margin-top: 8px; }
.c-enquiry-layout textarea { min-height: 160px; }
.c-enquiry-layout input:focus-visible, .c-enquiry-layout textarea:focus-visible, .c-enquiry-layout select:focus-visible { outline: 2px solid var(--color-brand-primary, #6290b3); outline-offset: 3px; }
.c-enquiry-layout input[type=submit] { background: var(--color-brand-gold, #c99b37); border: 0; padding: 16px 24px; font: inherit; font-weight: 600; cursor: pointer; }
.c-enquiry-layout .wpcf7-not-valid-tip { font-weight: 400; }
.c-enquiry-note { padding: 16px; background: var(--color-brand-light, #f4f7f9); }
@media (max-width: 1023px) {
	.c-editorial-page > .wp-block-group__inner-container { gap: 80px; }
	.c-editorial-page .wp-block-columns { gap: 32px; }
}
@media (max-width: 767px) {
	.c-editorial-page.c-container { padding-block: 40px 60px; }
	.c-editorial-page > .wp-block-group__inner-container { gap: 60px; }
	.c-editorial-grid > .wp-block-group__inner-container, .c-project-grid .wp-block-post-template { grid-template-columns: minmax(0, 1fr); gap: 40px; }
}

/* An empty future article query should not create an extra section of whitespace. */
.c-composed-page .c-project-grid:not(.c-project-listing):not(:has(.wp-block-post)) { display: none; }
.c-case-studies-listing .wp-block-post-template { display: grid; gap: 80px; padding: 0; list-style: none; }
.c-case-studies-listing .c-project-media { margin: 0; }
.c-case-studies-listing .c-project-media img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
