.Basic_wrapper__c3Ak7 {
	padding: 200px 0 100px;
	position: relative;
	overflow: hidden;
}

.Basic_backgroundContainer__C8GC9 {
	position: absolute;
	top: 0;
	right: 0;
	width: 30%;
	height: 100%;
	min-width: 450px;
}

.Basic_backgroundContainer__C8GC9 img {
	height: 100%;
	width: 100%;
	object-fit: cover;
	position: relative;
}

.Basic_border__6wTlB {
	height: 200%;
	width: 60px;
	background-color: var(--red);
	position: absolute;
	top: -50%;
	left: 40%;
	rotate: 35deg;
}

.Basic_border__6wTlB::after {
	content: "";
	position: absolute;
	top: 0;
	left: -800%;
	background-color: var(--white);
	width: 800%;
	height: 170%;
}

.Basic_container___Dsgu {
	position: relative;
	z-index: 1;
}

.Basic_heading__99_N7 {
	width: 70%;
}

.Basic_description__iGyss {
	display: inline-block;
	width: 75%;
	min-width: 300px;
	max-width: 950px;
	margin-top: 80px;
	border-left: 8px solid var(--red);
	padding-left: 20px;
	display: flex;
	align-items: center;
	gap: 20px;
}

.Basic_description__iGyss img {
	height: auto;
	max-width: 300px;
	object-fit: contain;
	max-height: 300px;
}

.Basic_badgeImage__9AEzK {
	width: 100%;
}

@media screen and (max-width: 1400px) {
	.Basic_description__iGyss {
		max-width: 700px;
	}

	.Basic_border__6wTlB {
		left: 55%;
	}
}

@media screen and (max-width: 1024px) {
	.Basic_wrapper__c3Ak7 {
		padding: 40px 5% 40px;
	}

	.Basic_heading__99_N7 {
		width: 100%;
		text-align: start;
	}

	.Basic_border__6wTlB {
		height: 200%;
		width: 60px;
		background-color: var(--red);
		position: absolute;
		top: -50%;
		left: 60%;
		rotate: 35deg;
	}

	.Basic_description__iGyss {
		flex-direction: row-reverse;
		align-items: flex-start;
		border-left: none;
		padding-left: 0;
		margin-top: 40px;
	}
}

@media screen and (max-width: 768px) {
	.Basic_wrapper__c3Ak7 {
		padding: 40px 20px 40px;
	}
	.Basic_heading__99_N7 {
		text-align: center;
	}

	.Basic_description__iGyss {
		margin-top: 20px;
		margin-bottom: 40px;
		width: 100%;
		flex-direction: column;
		justify-content: center;
		align-items: center;
		text-align: center;
	}

	.Basic_badgeImage__9AEzK {
		width: 100%;
	}

	.Basic_backgroundContainer__C8GC9 {
		position: relative;
		min-width: unset;
		width: 100%;
	}

	.Basic_border__6wTlB,
	.Basic_border__6wTlB::after {
		display: none;
	}
}

.Hero_wrapper__x6wL_ {
	position: relative;
	background-position: center;
	background-repeat: no-repeat;
	background-size: cover;
	min-height: 95vh;
	width: 100%;
}

.Hero_overlay__i4KCR {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background-color: rgba(255, 255, 255, 1);
	opacity: 0.4;
}

.Hero_container__fkFB4 {
	position: relative;
	z-index: 1;
	padding: 200px 20px;
}

.Hero_container__fkFB4 strong {
	color: var(--red);
}

.Hero_content__ibjvV {
	width: 55%;
}

.Hero_description__uTDib {
	display: block;
	border-left: 10px solid var(--red);
	padding-left: 20px;
	margin: 40px 0;
}

.Hero_btnContainer__ybW4r {
	display: flex;
	gap: 20px;
}

.Hero_video__RbtEW {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	z-index: 0;
}

@media screen and (max-width: 1024px) {
	.Hero_wrapper__x6wL_ {
		min-height: 80vh;
	}
	.Hero_content__ibjvV {
		width: 70%;
	}
}

@media screen and (max-width: 768px) {
	.Hero_wrapper__x6wL_ {
		min-height: 100vh;
	}

	.Hero_container__fkFB4 {
		padding: 160px 20px 100px;
	}

	.Hero_content__ibjvV {
		width: 100%;
	}

	.Hero_btnContainer__ybW4r {
		flex-direction: column;
	}
}

.ServiceLanding_wrapper__dZ60o {
	--surface: var(--white);
	--surface-alt: var(--light-grey);
	--text: var(--black);
	--text-muted: var(--grey);
	--rule: #e0e0e0;
	--accent: var(--red);

	/*
		Backdrop and texture inks are declared as flat rgba per theme rather than being
		derived with a colour-mixing function. That function is unsupported on older
		Safari/Chrome, and an unsupported function invalidates the WHOLE declaration — so
		the texture, the glow and the tonal wash all silently vanished together, which is
		what made the hero read as a plain background. Flat values need no fallback.
	*/
	--glow: rgba(189, 8, 27, 0.1);
	--wash-end: #f4f4f4;
	--texture-ink: rgba(0, 0, 0, 0.13);

	background-color: var(--surface);
	color: var(--text);

	position: relative;
	overflow: hidden;
	width: 100%;
	/*
		min-height and the container's vertical padding compound — 88vh of centred box
		plus 300px of padding was stacking two lots of the same whitespace. The height
		floor is now modest and the padding does the real work; with no background
		image there is nothing for a full-viewport hero to show off.
	*/
	min-height: 44vh;
	display: flex;
	align-items: center;
}

.ServiceLanding_wrapper__dZ60o[data-theme="dark"] {
	--surface: #111;
	--surface-alt: var(--dark-grey);
	--text: var(--white);
	--text-muted: #b0b0b0;
	--rule: #3a3a3a;
	--accent: #e5233a;

	--glow: rgba(229, 35, 58, 0.18);
	--wash-end: #1b1b1b;
	--texture-ink: rgba(255, 255, 255, 0.14);
}

/* A hero carrying a photograph earns a taller floor than the imageless one. */
.ServiceLanding_wrapper__dZ60o[data-has-image="true"] {
	min-height: 62vh;
}

/*
 * Tonal backdrop — stands in for the missing background image and doubles as a
 * surface-tinted scrim when one IS supplied. Every layer is derived from the
 * theme vars, so it inverts with the theme instead of only lightening the way
 * the `default` variation's white-only `.overlay` does.
 */
.ServiceLanding_backdrop__iB7nL {
	position: absolute;
	inset: 0;
	z-index: 0;
	pointer-events: none;
	background-image: radial-gradient(
			ellipse 70% 80% at 88% 6%,
			var(--glow),
			transparent 64%
		),
		linear-gradient(
			200deg,
			var(--surface) 0%,
			var(--surface) 45%,
			var(--wash-end) 100%
		);
}

/*
	Texture layer, selected via `data-texture` on the wrapper.

	Carried on its own pseudo-element rather than folded into `.backdrop`, because
	`background-image` is a single property — sharing it would mean restating the glow
	and the tonal wash in full for every option. Here each option sets one declaration.

	All are pure CSS: no image assets, nothing to add to the Prismic media library,
	and they cost nothing to ship.
*/
.ServiceLanding_backdrop__iB7nL::after {
	content: "";
	position: absolute;
	inset: 0;
}

/*
	All four use --texture-ink, a flat rgba set per theme above. No mask: at this alpha
	the pattern is 1px hairlines on a wide pitch and does not measurably affect
	body-copy contrast, so fading the middle out only hid the texture exactly where
	anyone would look for it.
*/

/* Horizontal scan lines — closest to the source design's hero treatment. */
.ServiceLanding_wrapper__dZ60o[data-texture="lines"] .ServiceLanding_backdrop__iB7nL::after {
	background-image: repeating-linear-gradient(
		0deg,
		transparent 0 59px,
		var(--texture-ink) 59px 60px
	);
}

/* Blueprint grid — reads technical/engineering, on-theme for rescue and compliance. */
.ServiceLanding_wrapper__dZ60o[data-texture="grid"] .ServiceLanding_backdrop__iB7nL::after {
	background-image: repeating-linear-gradient(
			0deg,
			transparent 0 63px,
			var(--texture-ink) 63px 64px
		),
		repeating-linear-gradient(
			90deg,
			transparent 0 63px,
			var(--texture-ink) 63px 64px
		);
}

/* Diagonal hatch — the same idiom the source uses on the gap-bridge band. */
.ServiceLanding_wrapper__dZ60o[data-texture="diagonal"] .ServiceLanding_backdrop__iB7nL::after {
	background-image: repeating-linear-gradient(
		-45deg,
		transparent 0 13px,
		var(--texture-ink) 13px 14px
	);
}

/* Dot matrix — the quietest of the four. */
.ServiceLanding_wrapper__dZ60o[data-texture="dots"] .ServiceLanding_backdrop__iB7nL::after {
	background-image: radial-gradient(
		var(--texture-ink) 1.7px,
		transparent 1.8px
	);
	background-size: 22px 22px;
}

/* Top padding carries the sticky-nav clearance the hero is tuned for. */
.ServiceLanding_container__3FgBF {
	position: relative;
	z-index: 1;
	padding: 160px 20px 66px;
	width: 100%;
}

/* When a photo is present the hero splits: copy left, framed image right. */
.ServiceLanding_wrapper__dZ60o[data-has-image="true"] .ServiceLanding_container__3FgBF {
	display: flex;
	align-items: center;
	gap: 4%;
}

.ServiceLanding_content__2yO4L {
	width: 62%;
}

.ServiceLanding_wrapper__dZ60o[data-has-image="true"] .ServiceLanding_content__2yO4L {
	width: 54%;
	flex: 0 0 54%;
}

/*
	Right-hand image column — a clean contained frame that suits any uploaded
	photo: fixed 4:5 portrait, square corners (military grit), object-fit:cover
	fills it edge to edge. `fill` needs the positioned, sized box the
	aspect-ratio provides.
*/
.ServiceLanding_media__o3uLL {
	position: relative;
	flex: 0 0 40%;
	width: 40%;
	aspect-ratio: 4 / 5;
	align-self: center;
	overflow: hidden;
}

.ServiceLanding_eyebrow__JUw9N {
	display: flex;
	align-items: center;
	gap: 16px;
	font-size: 16px;
	line-height: 1.4;
	color: var(--text-muted);
	margin-bottom: 28px;
}

.ServiceLanding_eyebrowRule___mGVn {
	display: block;
	flex: 0 0 auto;
	width: 48px;
	height: 2px;
	background-color: var(--accent);
	border-radius: 2px;
}

/*
 * `.heading` wraps the rich text — PrismicRichText emits its own <h1> from the
 * field's `single: "heading1,…"` config, so the type is set on that <h1>, never
 * on a hand-written one.
 *
 * Off-scale on purpose: this is the page's display line, and the global 60px h1
 * is tuned for section-level headings. clamp() keeps it inside the scale on
 * small screens (48px === the global 768px h1 step-down).
 */
.ServiceLanding_heading__kjrLY h1 {
	font-size: clamp(48px, 6vw, 76px);
	line-height: 1.05;
	max-width: 14ch;
	text-wrap: balance;
}

/* Scoped to the heading only — the description's `strong` must NOT go red. */
.ServiceLanding_heading__kjrLY strong {
	color: var(--accent);
}

/*
 * The "accent" rich-text label. The default @prismicio/react serializer renders
 * it as <span class="accent">, a global class, so it needs :global() — scoped
 * under .heading so it stays theme-aware rather than locked to --red.
 */
.ServiceLanding_heading__kjrLY .accent {
	color: var(--accent);
}

.ServiceLanding_description__aNhQ4 {
	display: block;
	max-width: 62ch;
	margin: 32px 0 44px;
	color: var(--text-muted);
	line-height: 1.8;
}

.ServiceLanding_description__aNhQ4 p {
	color: inherit;
	line-height: inherit;
	margin: 0;
}

.ServiceLanding_description__aNhQ4 strong {
	color: var(--text);
	font-weight: bold;
}

/* Decorative closing hairline, fading out of the accent. */
.ServiceLanding_rule__442_O {
	position: absolute;
	bottom: 0;
	left: 0;
	z-index: 1;
	width: 100%;
	height: 2px;
	background-image: linear-gradient(
		90deg,
		var(--accent) 0%,
		var(--rule) 38%,
		transparent 100%
	);
}

.ServiceLanding_btnContainer__qyxx7 {
	display: flex;
	gap: 20px;
}

@media screen and (max-width: 1024px) {
	.ServiceLanding_wrapper__dZ60o {
		min-height: 40vh;
	}

	.ServiceLanding_wrapper__dZ60o[data-has-image="true"] {
		min-height: 52vh;
	}

	.ServiceLanding_container__3FgBF {
		padding: 130px 20px 56px;
	}

	.ServiceLanding_content__2yO4L {
		width: 80%;
	}

	.ServiceLanding_wrapper__dZ60o[data-has-image="true"] .ServiceLanding_content__2yO4L {
		width: 58%;
		flex: 0 0 58%;
	}

	.ServiceLanding_wrapper__dZ60o[data-has-image="true"] .ServiceLanding_media__o3uLL {
		flex-basis: 44%;
		width: 44%;
	}

	.ServiceLanding_heading__kjrLY h1 {
		max-width: 16ch;
	}
}

@media screen and (max-width: 768px) {
	.ServiceLanding_wrapper__dZ60o,
	.ServiceLanding_wrapper__dZ60o[data-has-image="true"] {
		min-height: 0;
	}

	.ServiceLanding_container__3FgBF {
		padding: 110px 20px 48px;
	}

	/* Stack — copy first, full-width landscape frame below. */
	.ServiceLanding_wrapper__dZ60o[data-has-image="true"] .ServiceLanding_container__3FgBF {
		flex-direction: column;
		align-items: flex-start;
		gap: 32px;
	}

	.ServiceLanding_content__2yO4L,
	.ServiceLanding_wrapper__dZ60o[data-has-image="true"] .ServiceLanding_content__2yO4L {
		width: 100%;
		flex: none;
	}

	.ServiceLanding_wrapper__dZ60o[data-has-image="true"] .ServiceLanding_media__o3uLL {
		width: 100%;
		flex: none;
		aspect-ratio: 3 / 2;
	}

	.ServiceLanding_heading__kjrLY h1 {
		max-width: none;
	}

	.ServiceLanding_description__aNhQ4 {
		margin: 24px 0 36px;
	}

	.ServiceLanding_btnContainer__qyxx7 {
		flex-direction: column;
		align-items: flex-start;
	}
}


/*# sourceMappingURL=5fd38653508c72af.css.map*/