/* Archive pagination keeps its links, labels, type and spacing in Elementor.
 * This role supplies the shared control surface and interaction states. */
.elementor .forte-resource-pagination .elementor-pagination .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 140px;
	min-height: 48px;
	padding: 12px 20px;
	border: 1px solid var(--forte-color-brand);
	border-radius: var(--forte-radius-sm);
	background: var(--forte-color-surface);
	text-decoration: none;
	line-height: inherit;
	vertical-align: middle;
}

.elementor .elementor-widget-loop-grid.forte-resource-pagination .elementor-pagination a.page-numbers:not(.dots):hover,
.elementor .elementor-widget-loop-grid.forte-resource-pagination .elementor-pagination a.page-numbers:not(.dots):focus-visible {
	background: var(--forte-color-brand);
	color: var(--forte-color-surface);
}

.elementor .forte-resource-pagination .elementor-pagination a.page-numbers:focus-visible {
	outline: 2px solid var(--forte-color-accent);
	outline-offset: 4px;
}

.elementor .forte-resource-pagination .elementor-pagination span.page-numbers {
	color: #737980;
	border-color: var(--forte-color-border);
	background: var(--forte-color-surface-subtle);
	opacity: 0.55;
}

@font-face {
	font-family: "Instrument Sans";
	font-style: normal;
	font-weight: 400 700;
	font-display: swap;
	src: url("../fonts/instrument-sans/InstrumentSans-Variable.woff2") format("woff2");
}

@font-face {
	font-family: "Instrument Sans";
	font-style: italic;
	font-weight: 400 700;
	font-display: swap;
	src: url("../fonts/instrument-sans/InstrumentSans-Italic-Variable.woff2") format("woff2");
}

:root {
	--forte-color-brand: #063b5a;
	--forte-color-accent: #db222a;
	--forte-color-text: #2c2f33;
	--forte-color-surface: #ffffff;
	--forte-color-surface-subtle: #f4f4f4;
	--forte-color-border: #dcdfe2;
	--forte-font-display: "Instrument Sans", sans-serif;
	--forte-font-body: "Instrument Sans", sans-serif;
	--forte-font-navigation: "Instrument Sans", sans-serif;
	--forte-measure-hero: 55ch;
	--forte-measure-centered: 60ch;
	--forte-measure-reading: 70ch;
	--forte-content-max: 1280px;
	--forte-content-gutter: clamp(1.25rem, 4vw, 4rem);
	--forte-section-space: clamp(4.5rem, 8vw, 8rem);
	/* Full-width page bands: tan(4deg), rounded to 0.07 of viewport width.
	 * Independent of content height; the straight-edged header is excluded. */
	--forte-angle-rise-standard: 7vw;
	--forte-angle-rise-compact: clamp(1.5rem, 3vw, 2rem);
	--forte-space-xs: 0.5rem;
	--forte-space-sm: 0.75rem;
	--forte-space-md: 1rem;
	--forte-space-lg: 1.5rem;
	--forte-space-xl: 2rem;
	--forte-space-2xl: 3rem;
	--forte-radius-sm: 0.625rem;
	--forte-radius-lg: 1.25rem;
	--forte-focus-ring: 0 0 0 0.1875rem rgba(219, 34, 42, 0.38);
}

:where(.elementor) {
	color: var(--forte-color-text);
	font-family: var(--forte-font-body);
}

:where(.elementor) :where(h1, h2, h3, h4, h5, h6) {
	margin-block: 0;
	font-family: var(--forte-font-display);
	font-variation-settings: "wdth" 100;
	text-wrap: balance;
}

.elementor .forte-stat-number {
	font-variant-numeric: tabular-nums;
}

/* Existing Proof Point collections retain their tablet wrapping. The reusable
 * item has no column width; new grids use native column and gap controls. */
@media (max-width: 1200px) {
	[data-forte-proof-points] > [data-forte-proof-point],
	[data-forte-proof-points] > .elementor-widget-e-component > [data-forte-proof-point] {
		width: 30%;
	}
}

@media (max-width: 767px) {
	[data-forte-proof-points] > [data-forte-proof-point],
	[data-forte-proof-points] > .elementor-widget-e-component > [data-forte-proof-point] {
		width: 100%;
	}
}

/* Statistics rows own distribution and position-dependent separators. Native
 * row controls retain width, gap, alignment, and responsive direction. */
[data-forte-statistics] > [data-interaction-id="stat-customers-content"],
[data-forte-statistics] > .elementor-widget-e-component > [data-interaction-id="stat-customers-content"] {
	width: 33.333%;
	min-width: 0;
}

[data-forte-statistics] > [data-interaction-id="stat-customers-content"] + [data-interaction-id="stat-customers-content"],
[data-forte-statistics] > .elementor-widget-e-component + .elementor-widget-e-component > [data-interaction-id="stat-customers-content"] {
	padding-inline-start: var(--forte-space-xl);
	border-inline-start: 1px solid var(--forte-color-border);
}

/* The existing two-statistic composition follows its content on wide screens. */
[data-forte-statistics]:has(> [data-interaction-id="stat-customers-content"]:nth-child(2):last-child) > [data-interaction-id="stat-customers-content"],
[data-forte-statistics]:has(> .elementor-widget-e-component:nth-child(2 of .elementor-widget-e-component):last-child) > .elementor-widget-e-component > [data-interaction-id="stat-customers-content"] {
	width: 33%;
}

@media (min-width: 1025px) {
	[data-forte-statistics]:has(> [data-interaction-id="stat-customers-content"]:nth-child(2):last-child) > [data-interaction-id="stat-customers-content"],
	[data-forte-statistics]:has(> .elementor-widget-e-component:nth-child(2 of .elementor-widget-e-component):last-child) > .elementor-widget-e-component > [data-interaction-id="stat-customers-content"] {
		width: auto;
	}
}

@media (max-width: 767px) {
	[data-forte-statistics] > [data-interaction-id="stat-customers-content"],
	[data-forte-statistics] > .elementor-widget-e-component > [data-interaction-id="stat-customers-content"],
	[data-forte-statistics]:has(> [data-interaction-id="stat-customers-content"]:nth-child(2):last-child) > [data-interaction-id="stat-customers-content"],
	[data-forte-statistics]:has(> .elementor-widget-e-component:nth-child(2 of .elementor-widget-e-component):last-child) > .elementor-widget-e-component > [data-interaction-id="stat-customers-content"] {
		width: 100%;
	}

	[data-forte-statistics] > [data-interaction-id="stat-customers-content"] + [data-interaction-id="stat-customers-content"],
	[data-forte-statistics] > .elementor-widget-e-component + .elementor-widget-e-component > [data-interaction-id="stat-customers-content"] {
		padding-inline-start: 0;
		border-inline-start: 0;
		padding-block-start: 28px;
		border-block-start: 1px solid var(--forte-color-border);
	}
}

/* Match server omission while native Hero fields are being edited in Elementor. */
:is([data-interaction-id="hero-intro"], [data-interaction-id="hero-action"]).forte-hero-content-empty {
	/* Empty content must stay hidden above Atomic component display declarations. */
	display: none !important;
}

/* Legal copy retains full URLs without forcing a wider mobile text column. */
:where(.elementor .forte-legal-content) :where(.e-paragraph-base, .elementor-widget-text-editor) {
	overflow-wrap: anywhere;
}

/* Native container gaps own spacing around each legal body widget. */
:where(.elementor .forte-legal-content .elementor-widget-text-editor) > :first-child {
	margin-block-start: 0;
}

:where(.elementor .forte-legal-content .elementor-widget-text-editor) > :last-child {
	margin-block-end: 0;
}

:where(.elementor) :where(mark, h1 strong, h2 strong, h3 strong) {
	background: transparent;
	color: var(--forte-color-accent);
	font-weight: inherit;
}

:where(.elementor) :where(a, button, input, select, textarea):focus-visible {
	outline: 0.125rem solid var(--forte-color-accent);
	outline-offset: 0.1875rem;
	box-shadow: var(--forte-focus-ring);
}

/* Native Site Settings own both button widgets. Only shared touch sizing and
 * interaction timing need this low-specificity browser-level support. */
.elementor :where(.e-button-base, .elementor-widget-button .elementor-button) {
	min-height: 3.125rem;
	transition: color 180ms ease, background-color 180ms ease, border-color 180ms ease, transform 180ms ease, box-shadow 180ms ease;
}

/* Filled and outline action roles share the same interaction timing and lift.
 * Their semantic owners continue to control the role-specific colors. */
.elementor .forte-button-primary,
.elementor .forte-button-secondary,
.elementor [data-forte-support-button],
.elementor .forte-closing-cta--standard .e-button-base,
.elementor .forte-closing-cta--compact .e-button-base {
	transition: color 180ms ease, background-color 180ms ease, border-color 180ms ease, transform 180ms ease, box-shadow 180ms ease;
}

/* Primary-role CTA buttons share B01 styling without the legacy arrow. */
.elementor .forte-closing-cta--standard .e-button-base:not(.forte-button-primary)::after,
.elementor .forte-closing-cta--compact .e-button-base:not(.forte-button-primary)::after {
	margin-inline-start: var(--forte-space-md);
	content: "";
	font-size: 1.25em;
	line-height: 1;
}

/* The supplied SVG is the shared artwork for decorative right-arrow actions.
 * Masks inherit each action's existing color; native SVG widgets remain editable. */
.elementor .forte-closing-cta--standard .e-button-base:not(.forte-button-primary)::after,
.elementor .forte-closing-cta--compact .e-button-base:not(.forte-button-primary)::after,
:where(.elementor [data-id="home-cta-button"])::after {
	display: inline-block;
	width: 1.5rem;
	height: 1.5rem;
	flex: 0 0 1.5rem;
	background-color: currentColor;
	-webkit-mask: url("../images/arrow-right-regular-full.svg") center / contain no-repeat;
	mask: url("../images/arrow-right-regular-full.svg") center / contain no-repeat;
	vertical-align: middle;
}

/* Monochrome service artwork follows the SVG widget's editable color control. */
.elementor [data-forte-service-icon] svg [fill]:not([fill="none"]),
.elementor [data-forte-card-arrow] svg [fill]:not([fill="none"]) {
	fill: currentColor;
}

/* B08 owns its native card link, action label, SVG, and resting styles.
 * This hook only suppresses the action when the client clears its destination. */
body:not(.elementor-editor-active) .elementor [data-forte-service-card]:not(a[href]:not([href=""]):not([href="#"])) .forte-service-card__action {
	display: none;
}

/* Card Components own arrow appearance; this attribute connects the
 * native arrow to its enclosing card's hover and keyboard-focus states. */
/* The resource card's boxed inner is its visible, width-capped surface.
 * Draw the interaction edge inward so it neither shifts layout nor clips. */
.elementor [data-forte-resource-card] > .e-con-inner {
	position: relative;
	border-radius: 20px;
}

.elementor [data-forte-resource-card] > .e-con-inner::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 2;
	border: 2px solid var(--forte-color-accent);
	border-radius: inherit;
	pointer-events: none;
	opacity: 0;
}

.elementor [data-forte-resource-card]:focus-within > .e-con-inner::after {
	opacity: 1;
}

@media (hover: hover) and (pointer: fine) {
	.elementor [data-forte-resource-card]:hover > .e-con-inner::after {
		opacity: 1;
	}
}

@media (prefers-reduced-motion: no-preference) {
	.elementor [data-forte-card-arrow] {
		transition: transform 180ms ease;
	}

	.elementor a:focus-visible [data-forte-card-arrow],
	.elementor [data-forte-resource-card]:focus-within [data-forte-card-arrow] {
		transform: translateX(0.25rem);
	}
}

@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
	.elementor a:hover [data-forte-card-arrow],
	.elementor [data-forte-resource-card]:hover [data-forte-card-arrow] {
		transform: translateX(0.25rem);
	}
}

@media (hover: hover) {
	.elementor :where(.e-button-base, .elementor-widget-button .elementor-button):hover,
	.elementor .forte-button-primary:hover,
	.elementor .forte-button-secondary:hover,
	.elementor [data-forte-support-button]:hover,
	.elementor .forte-closing-cta--standard .e-button-base:hover,
	.elementor .forte-closing-cta--compact .e-button-base:hover {
		box-shadow: 0 0.5rem 1rem rgba(6, 59, 90, 0.18);
		transform: translateY(-0.125rem);
	}

	.elementor .forte-closing-cta--standard .e-button-base:not(.forte-button-primary):hover,
	.elementor .forte-closing-cta--compact .e-button-base:not(.forte-button-primary):hover {
		box-shadow: 0 0.5rem 1rem rgba(219, 34, 42, 0.32);
	}
}

/* Three-card rows retain the standard four-column card measure. Native Grid
 * controls own column count and responsive layout; this shared variant owns
 * only the row's desktop maximum. With 24px gaps: 3/4 of the frame minus 6px. */
@media (min-width: 1201px) {
	.elementor .forte-service-card-row--two {
		max-width: calc(50% - 12px);
	}

	.elementor .forte-service-card-row--three {
		max-width: calc(75% - 6px);
	}
}

/* Link-aware Component feedback. Existing semantic child roles identify their
 * native card, without generated IDs or extra client-managed classes.
 * Only real card anchors activate feedback.
 * Native Component controls retain all resting appearance and layout values. */
.elementor a[data-forte-service-card][href]:not([href=""]):not([href="#"]):focus-visible {
	border-color: var(--forte-color-accent);
	box-shadow: 0 0.75rem 1.75rem rgba(6, 59, 90, 0.28);
}

/* B04 retains one native heading link so its destination stays editable in the
 * Component. On the frontend, that link covers its enclosing card while the
 * card carries the same edge-and-shadow feedback used by linked B08 cards. */
body:not(.elementor-editor-active) .elementor .e-flexbox-base:has(> .forte-pillar-card__icon, > .elementor-widget-e-svg > .forte-pillar-card__icon):has(.e-heading-link-base[href]:not([href=""]):not([href="#"])) {
	cursor: pointer;
}

body:not(.elementor-editor-active) .elementor .e-flexbox-base:has(> .forte-pillar-card__icon, > .elementor-widget-e-svg > .forte-pillar-card__icon):has(.e-heading-link-base[href]:not([href=""]):not([href="#"])) > .e-flexbox-base {
	position: static;
}

body:not(.elementor-editor-active) .elementor .e-flexbox-base:has(> .forte-pillar-card__icon, > .elementor-widget-e-svg > .forte-pillar-card__icon) .e-heading-link-base[href]:is(:link, :visited, :hover, :focus-visible) {
	color: inherit;
}

body:not(.elementor-editor-active) .elementor .e-flexbox-base:has(> .forte-pillar-card__icon, > .elementor-widget-e-svg > .forte-pillar-card__icon) .e-heading-link-base[href]:not([href=""]):not([href="#"])::after {
	position: absolute;
	z-index: 1;
	inset: 0;
	border-radius: inherit;
	content: "";
}

body:not(.elementor-editor-active) .elementor .e-flexbox-base:has(> .forte-pillar-card__icon, > .elementor-widget-e-svg > .forte-pillar-card__icon):has(.e-heading-link-base[href]:not([href=""]):not([href="#"]):focus-visible) {
	box-shadow: inset 0 0 0 2px var(--forte-color-accent), 0 0.75rem 1.75rem rgba(6, 59, 90, 0.28);
}

body:not(.elementor-editor-active) .elementor .e-flexbox-base:has(> .forte-pillar-card__icon, > .elementor-widget-e-svg > .forte-pillar-card__icon) .e-heading-link-base:focus-visible {
	outline: none;
}

.elementor .forte-company-roots-item:has(a[href]:not([href=""]):not([href="#"]):focus-visible) {
	background-color: rgba(219, 34, 42, 0.04);
}

.elementor .forte-company-roots-item a[href]:not([href=""]):not([href="#"]):focus-visible strong {
	text-decoration-thickness: 0.125rem;
}

@media (hover: hover) and (pointer: fine) {
	.elementor a[data-forte-service-card][href]:not([href=""]):not([href="#"]):hover {
		border-color: var(--forte-color-accent);
		box-shadow: 0 0.75rem 1.75rem rgba(6, 59, 90, 0.28);
	}

	body:not(.elementor-editor-active) .elementor .e-flexbox-base:has(> .forte-pillar-card__icon, > .elementor-widget-e-svg > .forte-pillar-card__icon):has(.e-heading-link-base[href]:not([href=""]):not([href="#"])):hover {
		box-shadow: inset 0 0 0 2px var(--forte-color-accent), 0 0.75rem 1.75rem rgba(6, 59, 90, 0.28);
	}

	.elementor .forte-company-roots-item:has(a[href]:not([href=""]):not([href="#"])):hover {
		background-color: rgba(219, 34, 42, 0.04);
	}

	.elementor .forte-company-roots-item:hover a[href]:not([href=""]):not([href="#"]) strong {
		text-decoration-thickness: 0.125rem;
	}
}

@media (prefers-reduced-motion: no-preference) {
	.elementor [data-forte-service-icon] {
		transform-origin: center;
		transition: transform 220ms ease;
	}

	.elementor a[data-forte-service-card][href]:not([href=""]):not([href="#"]):focus-visible [data-forte-service-icon] {
		transform: scale(1.12);
	}

	.elementor [data-forte-service-card],
	body:not(.elementor-editor-active) .elementor .e-flexbox-base:has(> .forte-pillar-card__icon, > .elementor-widget-e-svg > .forte-pillar-card__icon) {
		transition: border-color 180ms ease, box-shadow 180ms ease, translate 220ms ease;
	}

	.elementor .forte-company-roots-item {
		transition: background-color 180ms ease;
	}

}

@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
	.elementor a[data-forte-service-card][href]:not([href=""]):not([href="#"]):hover,
	body:not(.elementor-editor-active) .elementor .e-flexbox-base:has(> .forte-pillar-card__icon, > .elementor-widget-e-svg > .forte-pillar-card__icon):has(.e-heading-link-base[href]:not([href=""]):not([href="#"])):hover {
		translate: 0 -4px;
	}

	.elementor a[data-forte-service-card][href]:not([href=""]):not([href="#"]):hover [data-forte-service-icon] {
		transform: scale(1.12);
	}
}

@media (prefers-reduced-motion: reduce) {
	.elementor :where(.e-button-base, .elementor-widget-button .elementor-button),
	.elementor .forte-button-primary,
	.elementor .forte-button-secondary,
.elementor [data-forte-support-button],
	.elementor .forte-closing-cta--standard .e-button-base,
	.elementor .forte-closing-cta--compact .e-button-base,
	.elementor :where(.e-button-base, .elementor-widget-button .elementor-button):hover,
	.elementor .forte-button-primary:hover,
	.elementor .forte-button-secondary:hover,
	.elementor [data-forte-support-button]:hover,
	.elementor .forte-closing-cta--standard .e-button-base:hover,
	.elementor .forte-closing-cta--compact .e-button-base:hover {
		transform: none;
	}
}

/* Retained legacy decoration anchor. Native Containers own section width. */
.elementor .forte-frame {
	position: relative;
	z-index: 1;
}

:where(.elementor .forte-site-header),
:where(.elementor .forte-site-footer),
:where(.elementor .forte-hero),
:where(.elementor .forte-proof-card),
:where(.elementor .forte-industry-card) {
	position: relative;
}

/*
 * Shared angled surfaces.
 *
 * The standard rise follows the shared width-based page angle. Elementor
 * owns the containers and their content. This project-owned layer owns only
 * the decorative geometry and shared top-edge clearance. Homepage selectors remain as compatibility aliases
 * while existing documents migrate to the semantic component classes.
 */
:where(.elementor [data-forte-angle="hero"]) {
	clip-path: polygon(0 0, 100% 0, 100% calc(100% - var(--forte-angle-rise-standard)), 0 100%);
}

/* Reflect only the hero photograph, retaining the component's viewport centering. */
.elementor .forte-hero--reflected img.e-image-base {
	transform: translateX(-50%) scaleX(-1);
}

:where(.elementor .forte-angle-surface),
:where(.elementor .elementor-element-home-proof-band-primary),
:where(.elementor .elementor-element-home-proof-band-secondary) {
	--forte-angle-rise: var(--forte-angle-rise-standard);
	--forte-angle-start: 0rem;
	--forte-angle-surface-color: var(--forte-color-surface-subtle);
	--forte-angle-clip-edge-top: polygon(
		0 var(--forte-angle-rise),
		100% 0,
		100% 100%,
		0 100%
	);
	--forte-angle-clip-edge-bottom: polygon(
		0 0,
		100% 0,
		100% calc(100% - var(--forte-angle-rise)),
		0 100%
	);
	--forte-angle-clip-edges-both: polygon(
		0 var(--forte-angle-rise),
		100% 0,
		100% calc(100% - var(--forte-angle-rise)),
		0 100%
	);
	position: relative;
	isolation: isolate;
	background-image: none;
}

:where(.elementor .forte-angle-surface--industry) {
	--forte-angle-surface-color: #f5f5f5;
}

/* Clear the full angled edge before adding breathing room. Preserve larger
 * native responsive padding as the editable base.
 * Grouped bands apply it only to their first content Container. */
.e-con:is(.forte-angle-surface--edges-both, .forte-angle-surface--edge-top).e-con-boxed,
:where(.e-con-full:is(.forte-angle-surface--edges-both, .forte-angle-surface--edge-top)) > .e-con:nth-child(1 of .e-con) {
	--padding-block-start: calc(max(var(--padding-top, 0px), var(--forte-angle-rise)) + 24px);
}

:where(.elementor .forte-angle-surface)::after,
:where(.elementor .elementor-element-home-proof-band-primary)::after,
:where(.elementor .elementor-element-home-proof-band-secondary)::after {
	position: absolute;
	z-index: -1;
	inset: var(--forte-angle-start) 0 0;
	background: var(--forte-angle-surface-color);
	content: "";
	pointer-events: none;
}

:where(.elementor .forte-angle-surface--edges-both)::after,
:where(.elementor .elementor-element-home-proof-band-primary)::after {
	clip-path: var(--forte-angle-clip-edges-both);
}

:where(.elementor .forte-angle-surface--edge-top)::after {
	clip-path: var(--forte-angle-clip-edge-top);
}

:where(.elementor .forte-angle-surface--edge-bottom)::after,
:where(.elementor .elementor-element-home-proof-band-secondary)::after {
	clip-path: var(--forte-angle-clip-edge-bottom);
}

:where(.elementor .forte-angle-surface--compact) {
	--forte-angle-rise: var(--forte-angle-rise-compact);
}

:where(.elementor .elementor-element-home-proof-band-primary) {
	--forte-angle-start: 16.625rem;
}

:where(.elementor .elementor-element-home-proof-band-secondary) {
	--forte-angle-start: 24.75rem;
}

/* Interior industry band spans the cards, supporting copy, and closing CTA.
 * Start the decorative layer halfway through the first card row; native
 * section controls continue to own all content spacing and layout. */
:where(.elementor [data-forte-angle-start="industry-cards"]) {
	--forte-angle-start: 416px;
}

@media (max-width: 1200px) {
	:where(.elementor [data-forte-angle-start="industry-cards"]) {
		--forte-angle-start: 380px;
	}
}

@media (max-width: 1024px) {
	:where(.elementor [data-forte-angle-start="industry-cards"]) {
		--forte-angle-start: 364px;
	}
}

@media (max-width: 767px) {
	:where(.elementor [data-forte-angle-start="industry-cards"]) {
		--forte-angle-start: 333px;
	}
}

/* SVG artwork has white path fills; the native Color control owns its tone. */
:where(.elementor .forte-service-tier__icon svg path) {
	fill: currentColor;
}

:where(.elementor [data-id^="home-difference-icon-"].e-svg-base svg path) {
	fill: currentColor;
}

:where(.elementor .forte-ledger__row) {
	border-block-end: 0.0625rem solid var(--forte-color-border);
}

:where(.elementor .forte-ledger > .forte-ledger__row:first-child) {
	border-block-start: 0.0625rem solid var(--forte-color-border);
}

:where(.elementor .forte-ledger--icons .e-svg-base svg path) {
	fill: currentColor;
}

:where(.elementor .forte-ledger--dots .forte-ledger__row) {
	position: relative;
}

:where(.elementor .forte-ledger--dots .forte-ledger__row)::before {
	position: absolute;
	inset-block-start: 1.75rem;
	inset-inline-start: 0;
	width: 0.5rem;
	height: 0.5rem;
	border-radius: 50%;
	background: var(--forte-color-accent);
	content: "";
}

:where(.elementor .elementor-element-home-roots-list) strong {
	color: var(--forte-color-brand);
}

/* Company names remain editable with the native paragraph Bold control. */
:where(.elementor .forte-company-roots-item) strong {
	color: var(--forte-color-accent);
}

:where(.elementor .forte-company-roots-item) a[href] strong {
	text-decoration: underline;
	text-underline-offset: 0.15em;
}

/* Restore the shared focus treatment after the Atomic paragraph link reset. */
.elementor .forte-company-roots-item :where(a[href]):focus-visible {
	outline: 0.125rem solid var(--forte-color-accent);
	outline-offset: 0.1875rem;
	box-shadow: var(--forte-focus-ring);
}

:where(.elementor .forte-media-ledger__media) {
	isolation: isolate;
	position: relative;
}

/* Atomic Flexbox reserves its own pseudo layers. These narrowly scoped rules
 * make the approved component decorations their explicit owner. */
.elementor .forte-media-ledger__media::before {
	position: absolute;
	z-index: -1;
	inset: var(--forte-space-xl) 0 0 var(--forte-space-xl);
	border-radius: var(--forte-radius-lg);
	background: var(--forte-color-brand);
	content: "";
}

:where(.elementor .forte-media-ledger__image) {
	width: 100%;
	max-width: 100%;
}

:where(.elementor .forte-media-ledger__image img) {
	display: block;
	width: 100%;
	height: 100%;
	border-radius: var(--forte-radius-lg);
	object-fit: cover;
}

:where(.elementor .forte-media-ledger__caption) {
	border-inline-start: 0.25rem solid var(--forte-color-accent);
	border-radius: 0 var(--forte-radius-sm) var(--forte-radius-sm) 0;
	background: rgba(6, 59, 90, 0.92);
	color: var(--forte-color-surface);
	font-weight: 600;
}

:where(.elementor .forte-industry-card) {
	isolation: isolate;
	position: relative;
	text-decoration: none;
}

:where(.elementor .forte-industry-card)::before {
	position: absolute;
	z-index: -1;
	inset: 0;
	background: linear-gradient(180deg, rgba(2, 28, 45, 0.04) 30%, rgba(2, 28, 45, 0.92) 100%);
	content: "";
	transition: background 180ms ease;
}

.elementor .forte-industry-card::before {
	content: "";
}

:where(.elementor .forte-industry-card)::after {
	position: absolute;
	inset-block-start: var(--forte-space-lg);
	inset-inline-end: var(--forte-space-lg);
	display: grid;
	width: 2.75rem;
	height: 2.75rem;
	place-items: center;
	border-radius: 50%;
	background: var(--forte-color-accent);
	color: var(--forte-color-surface);
	content: "";
	font-size: 1.25rem;
	opacity: 0;
	transform: translateY(0.375rem);
	transition: opacity 180ms ease, transform 180ms ease;
}

:where(.elementor .forte-industry-card [data-id$="-image"]) {
	position: absolute;
	z-index: -2;
	inset: 0;
	width: 100%;
	height: 100%;
	opacity: 1;
	transition: transform 240ms ease;
}

:where(.elementor .forte-industry-card [data-id$="-image"] img) {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

:where(.elementor .forte-industry-card .e-heading-base) {
	position: relative;
	width: 100%;
	padding-block-start: 1rem;
	text-align: start;
}

:where(.elementor .forte-industry-card .e-heading-base)::before {
	position: absolute;
	inset-block-start: 0;
	inset-inline-start: 0;
	width: 1.375rem;
	height: 0.1875rem;
	background: var(--forte-color-accent);
	content: "";
}

/* The canonical B09 specimen uses the approved Homepage industry-tile
 * composition while keeping its native full-tile heading link editable. */
.elementor .forte-industry-tile__overlay {
	inset: 0;
	border-radius: inherit;
	background: linear-gradient(180deg, rgba(2, 28, 45, 0.04) 30%, rgba(2, 28, 45, 0.92) 100%);
	box-shadow: inset 0 0 0 0 transparent;
	transition: background 180ms ease, box-shadow 180ms ease;
}

.elementor .forte-industry-tile__image,
.elementor [data-forte-card-media] img {
	transform: scale(1);
	transform-origin: center;
	transition: transform 240ms ease;
}

/* Until every B09 instance has been converted to the image-field component,
 * mirror each Page-owned background into a zoomable layer. Component instances
 * have no container background, so this layer stays transparent for them. */
.elementor .forte-industry-tile::before {
	position: absolute;
	z-index: 0;
	inset: 0;
	border-radius: inherit;
	background-image: inherit;
	background-repeat: inherit;
	background-position: inherit;
	background-size: inherit;
	content: "";
	pointer-events: none;
	transform: scale(1);
	transform-origin: center;
	transition: transform 240ms ease;
}

.elementor .forte-industry-tile__link > a {
	position: absolute;
	inset: 0;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	justify-content: flex-end;
	gap: 1rem;
	padding: 1.5rem;
	color: inherit;
	font-family: inherit;
	font-size: inherit;
	font-style: inherit;
	font-weight: inherit;
	letter-spacing: inherit;
	line-height: inherit;
	text-decoration: none;
}

/* The optional URL must not control whether the caption has its accent.
 * Native Global Class controls position the unlinked heading's content. */
.elementor .forte-industry-tile__link:not(:has(> a))::before,
.elementor .forte-industry-tile__link > a::before {
	display: block;
	flex: 0 0 0.1875rem;
	width: 1.375rem;
	height: 0.1875rem;
	background: var(--forte-color-accent);
	content: "";
}

/* Optional native component copy still renders an empty paragraph. Remove it
 * from layout so the native content gap is only used when copy exists. */
.elementor .forte-closing-cta__content > .e-paragraph-base:empty {
	display: none;
}

/* Designer-approved Homepage variants used by the B12 specimens. The native
 * Elementor children remain the editable content owners. */
.elementor .forte-closing-cta--standard > *,
.elementor .forte-closing-cta--compact > * {
	position: relative;
	z-index: 1;
}

.elementor .forte-closing-cta--standard::before,
.elementor .forte-closing-cta--compact::before {
	position: absolute;
	z-index: 0;
	inset: 0;
	border-radius: inherit;
	background-image:
		linear-gradient(rgba(6, 59, 90, 0.32), rgba(6, 59, 90, 0.32)),
		url("../images/homepage/platform-texture.webp");
	background-position: center;
	background-size: cover;
	content: "";
	opacity: 0.14;
	pointer-events: none;
}

.elementor .forte-industry-tile::after {
	position: absolute;
	z-index: 3;
	inset-block-start: var(--forte-space-lg);
	inset-inline-end: var(--forte-space-lg);
	display: grid;
	width: 2.75rem;
	height: 2.75rem;
	place-items: center;
	border-radius: 50%;
	background: var(--forte-color-accent);
	color: var(--forte-color-surface);
	content: "";
	font-size: 1.25rem;
	opacity: 0;
	pointer-events: none;
	transform: translateY(0.375rem);
	transition: opacity 180ms ease, transform 180ms ease;
}

/* Circle badges use the same artwork with its white source fill. */
:where(.elementor .forte-industry-card)::after,
.elementor .forte-industry-tile::after {
	background-image: url("../images/arrow-right-regular-full.svg");
	background-position: center;
	background-repeat: no-repeat;
	background-size: 1.5rem 1.5rem;
}

@media (hover: hover) {
	.elementor .forte-industry-tile:hover .forte-industry-tile__overlay,
	.elementor .forte-industry-tile:focus-within .forte-industry-tile__overlay {
		background: linear-gradient(180deg, rgba(2, 28, 45, 0.35) 12%, rgba(2, 28, 45, 0.96) 100%);
		box-shadow: inset 0 0 0 0.125rem var(--forte-color-accent);
	}

	.elementor .forte-industry-tile:hover::after,
	.elementor .forte-industry-tile:focus-within::after {
		opacity: 1;
		transform: translateY(0);
	}

	.elementor .forte-industry-tile:hover .forte-industry-tile__image,
	.elementor .forte-industry-tile:focus-within .forte-industry-tile__image,
	.elementor a:hover [data-forte-card-media] img,
	.elementor a:focus-visible [data-forte-card-media] img,
	.elementor [data-forte-resource-card]:is(:hover, :focus-within) [data-forte-card-media] img {
		transform: scale(1.06);
	}

	.elementor .forte-industry-tile:hover::before,
	.elementor .forte-industry-tile:focus-within::before {
		transform: scale(1.06);
	}
}

@media (prefers-reduced-motion: no-preference) {
	.elementor .forte-industry-tile {
		transition: translate 220ms ease;
	}
}

@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
	.elementor .forte-industry-tile:hover {
		translate: 0 -4px;
	}
}

@media (prefers-reduced-motion: reduce) {
	.elementor .forte-industry-tile__image,
	.elementor [data-forte-card-media] img,
	.elementor .forte-industry-tile::before,
	.elementor .forte-industry-tile__overlay {
		transition: none;
	}

	.elementor a:hover [data-forte-card-media] img,
	.elementor a:focus-visible [data-forte-card-media] img,
	.elementor [data-forte-resource-card]:is(:hover, :focus-within) [data-forte-card-media] img {
		transform: none;
	}
}

:where(.elementor [data-id="home-industry-government-credential"]) {
	width: 100%;
	max-height: 0;
	margin: 0;
	color: rgba(255, 255, 255, 0.86);
	opacity: 0;
	overflow: hidden;
	transform: translateY(0.5rem);
	transition: max-height 180ms ease, opacity 180ms ease, transform 180ms ease;
}

@media (hover: hover) {
	.elementor .forte-industry-card:hover,
	.elementor .forte-industry-card:focus-visible {
		box-shadow: inset 0 0 0 0.125rem var(--forte-color-accent);
		outline: 0.125rem solid var(--forte-color-accent);
		outline-offset: -0.125rem;
	}

	:where(.elementor .forte-industry-card:hover)::before,
	:where(.elementor .forte-industry-card:focus-visible)::before {
		background: linear-gradient(180deg, rgba(2, 28, 45, 0.35) 12%, rgba(2, 28, 45, 0.96) 100%);
	}

	:where(.elementor .forte-industry-card:hover)::after,
	:where(.elementor .forte-industry-card:focus-visible)::after {
		opacity: 1;
		transform: translateY(0);
	}

	:where(.elementor .forte-industry-card:hover [data-id$="-image"]),
	:where(.elementor .forte-industry-card:focus-visible [data-id$="-image"]) {
		transform: scale(1.045);
	}

	:where(.elementor .forte-industry-card:hover [data-id="home-industry-government-credential"]),
	:where(.elementor .forte-industry-card:focus-visible [data-id="home-industry-government-credential"]) {
		max-height: 4rem;
		opacity: 1;
		transform: translateY(0);
	}
}

:where(.elementor .forte-quote-ledger__quote) {
	position: relative;
}

:where(.elementor .forte-quote-ledger__quote .elementor-blockquote),
:where(.elementor .forte-quote-ledger__quote .elementor-blockquote__content) {
	padding: 0;
	margin: 0;
}

.elementor .forte-quote-ledger__quote::before {
	position: absolute;
	inset-block-start: 0;
	inset-inline-start: 0;
	display: block;
	width: 4rem;
	height: 4rem;
	margin: 0;
	color: var(--forte-color-accent);
	content: "“";
	font-family: Georgia, serif;
	font-size: 6rem;
	font-style: normal;
	font-weight: 700;
	line-height: 0.9;
	overflow: hidden;
	pointer-events: none;
}

.elementor .forte-quote-ledger__attribution::before {
	position: static;
	display: block;
	flex: 0 0 3.125rem;
	width: 3.125rem;
	height: 0.1875rem;
	margin-block-start: 0.75rem;
	background: var(--forte-color-accent);
	content: "";
}

:where(.elementor .forte-quote-ledger__attribution-name) {
	margin: 0;
	color: var(--forte-color-brand);
	font-weight: 700;
}

:where(.elementor .forte-quote-ledger__attribution-role) {
	margin: 0;
	color: #6e7f8e;
}

/* B10 keeps native blockquote/cite content while adopting the approved
 * Homepage Roots editorial treatment. */
:where(.elementor .forte-quote blockquote),
:where(.elementor .forte-quote blockquote p) {
	padding: 0;
	margin: 0;
}

.elementor .forte-quote blockquote cite {
	display: flex;
	align-items: flex-start;
	gap: 1rem;
	margin-block-start: 1.75rem;
	color: var(--forte-color-brand);
	font-family: "Instrument Sans", sans-serif;
	font-size: 1rem;
	font-style: normal;
	font-weight: 700;
	line-height: 1.5;
}

.elementor .forte-quote blockquote cite::before {
	display: block;
	flex: 0 0 3.125rem;
	width: 3.125rem;
	height: 0.1875rem;
	margin-block-start: 0.625rem;
	background: var(--forte-color-accent);
	content: "";
}

:where(.elementor [data-id="home-roots-existing"]) {
	padding-block-start: 0;
}

:where(.elementor .elementor-element-home-cta) {
	background: transparent;
}

.elementor .elementor-element-home-cta::before {
	content: none;
}

:where(.elementor .elementor-element-home-cta-inner) {
	isolation: isolate;
	position: relative;
}

.elementor .elementor-element-home-cta-inner::before {
	position: absolute;
	z-index: 0;
	inset: 0;
	background-image: linear-gradient(rgba(6, 59, 90, 0.32), rgba(6, 59, 90, 0.32)), url("../images/homepage/platform-texture.webp");
	background-repeat: no-repeat;
	background-position: center;
	background-size: cover;
	content: "";
	opacity: 0.14;
}

:where(.elementor .elementor-element-home-cta-inner > *) {
	position: relative;
	z-index: 1;
}

:where(.elementor [data-id="home-cta-button"])::after {
	margin-inline-start: var(--forte-space-md);
	content: "";
	font-size: 1.25em;
	line-height: 1;
}

:where(.elementor [data-id="home-cta-note"]) {
	margin: 0;
	color: rgba(255, 255, 255, 0.66);
}

:where(.elementor .elementor-element-home-partners-carousel .swiper-slide) {
	display: flex;
	min-height: 5rem;
	align-items: center;
	justify-content: center;
	padding-inline: var(--forte-space-md);
}

.elementor .elementor-element-home-partners-carousel .swiper-slide-image {
	--forte-partner-logo-width: 14.75rem;
	--forte-partner-logo-height: 4rem;
	width: auto;
	height: auto;
	max-width: min(100%, var(--forte-partner-logo-width));
	max-height: var(--forte-partner-logo-height);
	object-fit: contain;
}

.elementor .elementor-element-home-partners-carousel img[src*="partner-datto"] {
	--forte-partner-logo-width: 17.75rem;
	--forte-partner-logo-height: 5rem;
}

.elementor .elementor-element-home-partners-carousel img[src*="partner-jelastic"] {
	--forte-partner-logo-width: 13rem;
}

.elementor .elementor-element-home-partners-carousel img[src*="partner-storpool"] {
	--forte-partner-logo-width: 17.5rem;
	--forte-partner-logo-height: 5rem;
}

.elementor .elementor-element-home-partners-carousel img[src*="partner-stratus-ip"] {
	--forte-partner-logo-width: 11.5rem;
}

.elementor .elementor-element-home-partners-carousel img[src*="partner-webroot"] {
	--forte-partner-logo-width: 12.5rem;
}

.elementor .elementor-element-home-partners-carousel img[src*="partner-acronis"] {
	--forte-partner-logo-width: 12rem;
}

/*
 * Neutral transport for a saved-template reference. The referenced template
 * owns all visible geometry; this marker prevents Elementor's placement
 * container from adding a second box or residual empty-state spacing.
 */
:where(.elementor) .forte-template-reference-placement {
	--display: contents;
	--padding-top: 0px;
	--padding-right: 0px;
	--padding-bottom: 0px;
	--padding-left: 0px;
	--padding-block-start: 0px;
	--padding-inline-end: 0px;
	--padding-block-end: 0px;
	--padding-inline-start: 0px;
	--gap: 0px;
	display: contents;
}

@media (max-width: 1024px) {
	:root {
		--forte-content-gutter: clamp(1.5rem, 4vw, 2.5rem);
		--forte-section-space: clamp(4rem, 7vw, 6rem);
	}

	.elementor .elementor-element-home-partners-carousel .swiper-slide-image {
		max-width: min(100%, calc(var(--forte-partner-logo-width) * 0.75));
		max-height: min(3.5rem, calc(var(--forte-partner-logo-height) * 0.75));
	}
}

@media (max-width: 767px) {
	:root {
		--forte-content-gutter: 1.25rem;
		--forte-section-space: 4rem;
	}

	:where(.elementor .elementor-element-home-proof-band-secondary) {
		--forte-angle-start: 18rem;
	}

	.elementor .forte-media-ledger__media::before {
		inset: var(--forte-space-md) 0 0 var(--forte-space-sm);
	}

	:where(.elementor .forte-industry-card)::after {
		opacity: 1;
		transform: none;
	}

	:where(.elementor .forte-industry-tile)::after {
		opacity: 1;
		transform: none;
	}

	:where(.elementor [data-id="home-industry-government-credential"]) {
		max-height: 4rem;
		opacity: 1;
		transform: none;
	}

	.elementor .forte-quote-ledger__attribution::before {
		flex-basis: 2rem;
		width: 2rem;
	}

	:where(.elementor .elementor-element-home-partners-carousel .swiper-slide) {
		min-height: 4.5rem;
		padding-inline: var(--forte-space-sm);
	}

	.elementor .elementor-element-home-partners-carousel .swiper-slide-image {
		max-width: min(100%, calc(var(--forte-partner-logo-width) * 0.55));
		max-height: min(3rem, calc(var(--forte-partner-logo-height) * 0.55));
	}
}

@media (prefers-reduced-motion: reduce) {
	:where(.elementor *, .elementor *::before, .elementor *::after) {
		scroll-behavior: auto !important;
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
	}
}

/* Native Carousel controls own slide geometry. Its Boxed section clips at the
 * viewport edge, allowing cards to travel outside the inherited content frame. */
.elementor .forte-card-carousel .e-n-carousel.swiper {
	overflow: visible;
}

.elementor .forte-card-carousel .elementor-swiper-button svg [fill] {
	fill: currentColor;
}

.elementor .forte-card-carousel .elementor-swiper-button-prev svg {
	transform: rotate(180deg);
}

/* Only the viewport origin is shared. Native controls still own the inset,
 * vertical alignment, size, surface, and responsive values. */
.elementor .forte-card-carousel.elementor-widget-n-carousel .elementor-swiper-button.elementor-swiper-button-prev {
	left: calc(var(--forte-carousel-viewport-start, 0px) + var(--e-n-carousel-arrow-prev-left-position, 0px));
	--e-n-carousel-arrow-prev-caption-spacing: 0px;
}

.elementor .forte-card-carousel.elementor-widget-n-carousel .elementor-swiper-button.elementor-swiper-button-next {
	right: calc(var(--forte-carousel-viewport-end, 0px) + var(--e-n-carousel-arrow-next-right-position, 0px));
	--e-n-carousel-arrow-next-caption-spacing: 0px;
}

.elementor .forte-card-carousel .elementor-swiper-button[aria-disabled="true"],
.elementor .forte-card-carousel .elementor-swiper-button.swiper-button-disabled,
.elementor .forte-card-carousel .elementor-swiper-button-prev:not([aria-disabled="false"]) {
	visibility: hidden;
	pointer-events: none;
	transition: none;
}

.elementor .forte-card-carousel .elementor-swiper-button:focus-visible {
	outline: 2px solid var(--forte-color-accent);
	outline-offset: 4px;
}

@media (prefers-reduced-motion: reduce) {
	.elementor .forte-card-carousel .swiper-wrapper {
		transition-duration: 0ms !important;
	}
}
