:root {
	--lp-navy: #001a33;
	--lp-teal: #00a99d;
	--lp-bg: #ffffff;
	--lp-text: #3d4f66;
	--lp-muted: #7a8798;
	--lp-white: #ffffff;
	--lp-link: #1070d0;
	--lp-link-hover: #094d91;
	--lp-container: 1200px;
	--lp-gutter: 32px;

	/* Type scale */
	--lp-font-xs: 12px;
	--lp-font-sm: 13px;
	--lp-font-md: 14px;
	--lp-font: 15px;
	--lp-font-lg: 16px;
	--lp-font-xl: 18px;
	--lp-font-2xl: 20px;
	--lp-font-3xl: 22px;
	--lp-font-4xl: 26px;
	--lp-font-5xl: 30px;
	--lp-font-6xl: 34px;
	--lp-font-display: clamp(28px, 3vw, 38px);

	/* Spacing scale */
	--lp-space-2xs: 8px;
	--lp-space-xs: 12px;
	--lp-space-sm: 16px;
	--lp-space-md: 24px;
	--lp-space-lg: 28px;
	--lp-space-xl: 40px;
	--lp-space-2xl: 56px;
}

@media (min-width: 1440px) {
	:root {
		--lp-container: 1320px;
		--lp-font-xs: 13px;
		--lp-font-sm: 14px;
		--lp-font-md: 15px;
		--lp-font: 16px;
		--lp-font-lg: 17px;
		--lp-font-xl: 19px;
		--lp-font-2xl: 22px;
		--lp-font-3xl: 24px;
		--lp-font-4xl: 28px;
		--lp-font-5xl: 32px;
		--lp-font-6xl: 36px;
		/* Keep display capped with the base scale — do not grow on large screens. */
		--lp-font-display: clamp(28px, 3vw, 38px);
		--lp-space-2xs: 10px;
		--lp-space-xs: 14px;
		--lp-space-sm: 18px;
		--lp-space-md: 28px;
		--lp-space-lg: 32px;
		--lp-space-xl: 48px;
		--lp-space-2xl: 64px;
	}
}

@media (min-width: 1920px) {
	:root {
		--lp-container: 1440px;
		--lp-font-xs: 14px;
		--lp-font-sm: 15px;
		--lp-font-md: 16px;
		--lp-font: 17px;
		--lp-font-lg: 18px;
		--lp-font-xl: 20px;
		--lp-font-2xl: 24px;
		--lp-font-3xl: 26px;
		--lp-font-4xl: 30px;
		--lp-font-5xl: 34px;
		--lp-font-6xl: 38px;
		--lp-font-display: clamp(28px, 3vw, 38px);
		--lp-space-2xs: 12px;
		--lp-space-xs: 16px;
		--lp-space-sm: 20px;
		--lp-space-md: 32px;
		--lp-space-lg: 36px;
		--lp-space-xl: 56px;
		--lp-space-2xl: 72px;
	}
}

*,
*::before,
*::after {
	box-sizing: border-box;
}

html {
	height: 100%;
}

body {
	display: flex;
	flex-direction: column;
	min-height: 100%;
	margin: 0;
	font-family: Roboto, -apple-system, BlinkMacSystemFont, "Segoe UI", Oxygen, Ubuntu, Cantarell, sans-serif;
	font-size: var(--lp-font-lg);
	line-height: 1.5;
	color: var(--lp-text);
	background: var(--lp-bg);
	-webkit-font-smoothing: antialiased;
}

h1,
h2,
h3,
h4,
h5,
h6 {
	color: #0a2540;
}

img {
	max-width: 100%;
	height: auto;
}

a {
	color: var(--lp-link);
}

a:hover,
a:focus {
	color: var(--lp-link-hover);
}

.site-header,
.site-footer {
	flex-shrink: 0;
	background: var(--lp-navy);
	color: var(--lp-white);
}

.site-header__inner,
.site-footer__inner,
.site-content:not(.site-content--promo) {
	width: min(100% - var(--lp-gutter), var(--lp-container));
	margin: 0 auto;
}

.site-header {
	padding: var(--lp-space-sm) 0;
}

.site-header__inner,
.site-footer__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--lp-space-md);
}

.site-header__brand {
	display: flex;
	align-items: center;
	gap: 20px;
	min-height: 36px;
}

.site-logo {
	display: inline-flex;
	align-items: center;
	line-height: 0;
}

.site-logo--linked {
	text-decoration: none;
}

.site-logo__image {
	display: block;
	max-height: 36px;
	width: auto;
}

.site-header__divider {
	display: block;
	width: 1px;
	height: 28px;
	background: rgba(255, 255, 255, 0.35);
	flex-shrink: 0;
}

.site-header__text {
	color: var(--lp-white);
	font-size: var(--lp-font-lg);
	font-weight: 400;
	line-height: 1.4;
	text-decoration: none;
}

.site-header__text:hover,
.site-header__text:focus {
	color: var(--lp-white);
	text-decoration: none;
}

.site-main {
	flex: 1 0 auto;
}

.site-content {
	padding: var(--lp-space-xl) 0 var(--lp-space-2xl);
}

.site-content--landing .entry-content {
	margin: 0;
}

.site-content--landing .panel-grid-cell {
	margin-bottom: var(--lp-space-md);
}

/**
 * Landing hero — responsive only (desktop keeps Page Builder columns as-is).
 * From 1024px (when the form first wraps to a new line): content | image,
 * form full width below. Mobile: content → image → form stacked.
 */
@media (max-width: 1024px) {
	.site-content--landing .panel-grid:has(.lp-content-widget):has(.lp-image-widget):has(.lp-form-widget):not(:has(> .panel-row-style)),
	.site-content--landing .panel-grid:has(.lp-content-widget):has(.lp-image-widget):has(.lp-form-widget) > .panel-row-style {
		display: grid;
		grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
		grid-template-areas:
			"content image"
			"form form";
		column-gap: var(--lp-space-md);
		row-gap: var(--lp-space-md);
		align-items: start;
	}

	.site-content--landing .panel-grid:has(.lp-content-widget):has(.lp-image-widget):has(.lp-form-widget) > .panel-grid-cell,
	.site-content--landing .panel-grid:has(.lp-content-widget):has(.lp-image-widget):has(.lp-form-widget) > .panel-row-style > .panel-grid-cell {
		display: contents;
		float: none !important;
		width: auto !important;
		margin-bottom: 0;
	}

	.site-content--landing .panel-grid:has(.lp-content-widget):has(.lp-image-widget):has(.lp-form-widget) .so-panel:has(.lp-content-widget) {
		grid-area: content;
		margin-bottom: 0;
	}

	.site-content--landing .panel-grid:has(.lp-content-widget):has(.lp-image-widget):has(.lp-form-widget) .so-panel:has(.lp-image-widget) {
		grid-area: image;
		margin-bottom: 0;
	}

	.site-content--landing .panel-grid:has(.lp-content-widget):has(.lp-image-widget):has(.lp-form-widget) .so-panel:has(.lp-form-widget) {
		grid-area: form;
		margin-bottom: 0;
		width: 100%;
		max-width: 100%;
	}
}

@media (max-width: 767px) {
	.site-content--landing .panel-grid:has(.lp-content-widget):has(.lp-image-widget):has(.lp-form-widget):not(:has(> .panel-row-style)),
	.site-content--landing .panel-grid:has(.lp-content-widget):has(.lp-image-widget):has(.lp-form-widget) > .panel-row-style {
		grid-template-columns: minmax(0, 1fr);
		grid-template-areas:
			"content"
			"image"
			"form";
		column-gap: 0;
	}
}

.site-content--promo {
	--lp-promo-pad-x: max(calc(var(--lp-gutter) / 2), calc((100% - var(--lp-container)) / 2));
	width: 100%;
	max-width: none;
	padding: 0;
	margin: 0;
	overflow-x: clip;
}

.site-content--promo .entry-content {
	margin: 0;
}

.site-content--promo .panel-grid {
	margin-left: 0 !important;
	margin-right: 0 !important;
	width: 100%;
	max-width: none;
	padding-left: 0;
	padding-right: 0;
	box-sizing: border-box;
}

.site-content--promo .panel-grid-cell {
	padding-left: 0 !important;
	padding-right: 0 !important;
	margin-bottom: 0;
}

.site-content--promo .so-panel {
	margin-bottom: 0;
}

/**
 * Full-bleed row surface: background spans the viewport.
 * Horizontal padding keeps widgets on the shared --lp-container grid.
 */
.site-content--promo .panel-row-style {
	width: 100%;
	max-width: none;
	margin-left: 0;
	margin-right: 0;
	padding-left: var(--lp-promo-pad-x) !important;
	padding-right: var(--lp-promo-pad-x) !important;
	box-sizing: border-box;
}

/* Rows without a style wrapper still need the content grid. */
.site-content--promo .panel-grid:not(:has(> .panel-row-style)) {
	padding-left: var(--lp-promo-pad-x);
	padding-right: var(--lp-promo-pad-x);
}

/**
 * Optional widget/row class: white-text
 * Add via SiteOrigin Attributes → Widget Class (or Row Class).
 */
.white-text,
.white-text h1,
.white-text h2,
.white-text h3,
.white-text h4,
.white-text h5,
.white-text h6,
.white-text p,
.white-text li,
.white-text span,
.white-text .lp-promo-text__body,
.white-text .lp-promo-text__body p,
.white-text .lp-promo-bundle__section-heading,
.white-text .lp-promo-bundle__title,
.white-text .lp-promo-bundle__price-note,
.white-text .lp-promo-bundle__price-original,
.white-text .lp-promo-bundle__price-current,
.white-text .lp-promo-bundle__secure,
.white-text .lp-promo-bundle__secure-icon,
.white-text .lp-promo-section__title,
.white-text .lp-promo-nav__heading {
	color: var(--lp-white);
}

.white-text a {
	color: #7ec8ff;
}

.white-text a:hover,
.white-text a:focus {
	color: #b3deff;
}

.white-text .lp-promo-bundle__section-heading::after,
.white-text .lp-promo-bundle__divider,
.white-text .lp-promo-nav--divider .lp-promo-nav__inner {
	border-color: rgba(255, 255, 255, 0.35);
}

/**
 * Optional font-size classes (SiteOrigin Attributes → Widget Class / Row Class).
 * Uses the theme type scale: font-xs … font-6xl, font-display.
 */
.font-xs,
.font-xs p,
.font-xs .lp-promo-text__body,
.font-xs .lp-promo-text__body p { font-size: var(--lp-font-xs); }

.font-sm,
.font-sm p,
.font-sm .lp-promo-text__body,
.font-sm .lp-promo-text__body p { font-size: var(--lp-font-sm); }

.font-md,
.font-md p,
.font-md .lp-promo-text__body,
.font-md .lp-promo-text__body p { font-size: var(--lp-font-md); }

.font-base,
.font-base p,
.font-base .lp-promo-text__body,
.font-base .lp-promo-text__body p { font-size: var(--lp-font); }

.font-lg,
.font-lg p,
.font-lg .lp-promo-text__body,
.font-lg .lp-promo-text__body p { font-size: var(--lp-font-lg); }

.font-xl,
.font-xl p,
.font-xl .lp-promo-text__body,
.font-xl .lp-promo-text__body p { font-size: var(--lp-font-xl); }

.font-2xl,
.font-2xl p,
.font-2xl .lp-promo-text__body,
.font-2xl .lp-promo-text__body p { font-size: var(--lp-font-2xl); }

.font-3xl,
.font-3xl p,
.font-3xl .lp-promo-text__body,
.font-3xl .lp-promo-text__body p { font-size: var(--lp-font-3xl); }

.font-4xl,
.font-4xl p,
.font-4xl .lp-promo-text__body,
.font-4xl .lp-promo-text__body p { font-size: var(--lp-font-4xl); }

.font-5xl,
.font-5xl p,
.font-5xl .lp-promo-text__body,
.font-5xl .lp-promo-text__body p { font-size: var(--lp-font-5xl); }

.font-6xl,
.font-6xl p,
.font-6xl .lp-promo-text__body,
.font-6xl .lp-promo-text__body p { font-size: var(--lp-font-6xl); }

.font-display,
.font-display p,
.font-display .lp-promo-text__body,
.font-display .lp-promo-text__body p,
.font-display h1,
.font-display h2 { font-size: var(--lp-font-display); }

/**
 * Promo hero row — set Row Class to: lp-promo-hero
 * Use a multi-column SO row (e.g. image + Promo Content).
 */
.panel-row-style.lp-promo-hero,
.panel-grid.lp-promo-hero > .panel-row-style {
	background: #03284d;
	color: var(--lp-white);
	padding-top: var(--lp-space-2xl);
	padding-bottom: var(--lp-space-2xl);
}

.panel-row-style.lp-promo-hero .lp-promo-text__body,
.panel-row-style.lp-promo-hero .lp-promo-text__body p,
.panel-grid.lp-promo-hero .lp-promo-text__body,
.panel-grid.lp-promo-hero .lp-promo-text__body p {
	color: rgba(255, 255, 255, 0.92);
}

.panel-row-style.lp-promo-hero .lp-promo-text__body h1,
.panel-row-style.lp-promo-hero .lp-promo-text__body h2,
.panel-row-style.lp-promo-hero .lp-promo-text__body h3,
.panel-row-style.lp-promo-hero .lp-promo-text__body h4,
.panel-row-style.lp-promo-hero .lp-promo-text__body h5,
.panel-row-style.lp-promo-hero .lp-promo-text__body h6,
.panel-grid.lp-promo-hero .lp-promo-text__body h1,
.panel-grid.lp-promo-hero .lp-promo-text__body h2,
.panel-grid.lp-promo-hero .lp-promo-text__body h3,
.panel-grid.lp-promo-hero .lp-promo-text__body h4,
.panel-grid.lp-promo-hero .lp-promo-text__body h5,
.panel-grid.lp-promo-hero .lp-promo-text__body h6 {
	color: var(--lp-white);
}

.panel-row-style.lp-promo-hero .lp-promo-text__body a,
.panel-grid.lp-promo-hero .lp-promo-text__body a {
	color: #7ec8ff;
}

.panel-row-style.lp-promo-hero .lp-promo-text__body a:hover,
.panel-row-style.lp-promo-hero .lp-promo-text__body a:focus,
.panel-grid.lp-promo-hero .lp-promo-text__body a:hover,
.panel-grid.lp-promo-hero .lp-promo-text__body a:focus {
	color: #b3deff;
}

.panel-row-style.lp-promo-hero .lp-image-widget,
.panel-grid.lp-promo-hero .lp-image-widget {
	display: flex;
	align-items: center;
	justify-content: center;
	height: 100%;
}

.panel-row-style.lp-promo-hero .lp-image-widget__image,
.panel-grid.lp-promo-hero .lp-image-widget__image {
	margin: 0 auto;
}

@media (max-width: 991px) {
	.panel-row-style.lp-promo-hero,
	.panel-grid.lp-promo-hero > .panel-row-style {
		padding-top: var(--lp-space-xl);
		padding-bottom: var(--lp-space-xl);
	}
}

/**
 * Not found (404) page — text column + Outgrow chatbot column.
 */
.lp-404 {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	align-items: center;
	column-gap: var(--lp-space-2xl);
	row-gap: var(--lp-space-lg);
	padding: var(--lp-space-xl) 0;
}

.lp-404__title {
	margin: 0;
	font-size: var(--lp-font-display);
	font-weight: 700;
	line-height: 1.2;
}

.lp-404__body {
	margin: var(--lp-space-md) 0 0;
	font-size: var(--lp-font-lg);
	font-weight: 600;
	line-height: 1.4;
	color: #0a2540;
}

.lp-404__quiz {
	width: 100%;
	min-width: 0;
}

.lp-404__quiz iframe {
	display: block;
	width: 100%;
	max-width: 100%;
	border: 0;
}

@media (max-width: 991px) {
	.lp-404 {
		grid-template-columns: minmax(0, 1fr);
		column-gap: 0;
	}
}

.site-footer {
	padding: var(--lp-space-lg) 0;
	margin-top: auto;
}

.site-footer__brand {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--lp-space-xs);
}

.site-footer__legal {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: var(--lp-space-2xs);
}

.site-footer__copyright,
.site-footer__legal-sep,
.site-footer__legal-link {
	margin: 0;
	font-size: var(--lp-font-sm);
	line-height: 1.5;
	color: rgba(255, 255, 255, 0.85);
}

.site-footer__legal-sep {
	align-self: center;
	width: 1px;
	height: 1em;
	background: rgba(255, 255, 255, 0.35);
	flex-shrink: 0;
}

.site-footer__legal-link:hover,
.site-footer__legal-link:focus {
	color: var(--lp-white);
}

.site-footer__legal-link--button {
	appearance: none;
	background: none;
	border: 0;
	padding: 0;
	font: inherit;
	cursor: pointer;
	text-decoration: underline;
	text-underline-offset: 2px;
}

.cookie-consent {
	position: fixed;
	right: 0;
	bottom: 0;
	left: 0;
	z-index: 100000;
	background: rgba(243, 243, 243, 0.95);
	border-top: 1px solid #d8d8d8;
	box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.08);
	color: #33475b;
}

html.cookie-consent-decided .cookie-consent:not(.is-open) {
	display: none;
}

.cookie-consent.is-open {
	display: block;
}

.cookie-consent__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
	width: min(100% - var(--lp-gutter), var(--lp-container));
	margin: 0 auto;
	padding: 28px 0;
}

.cookie-consent__copy {
	flex: 1 1 auto;
	min-width: 0;
	font-size: 13px;
	line-height: 1.45;
}

.cookie-consent__copy p {
	margin: 0 0 8px;
}

.cookie-consent__copy p:last-child {
	margin-bottom: 0;
}

.cookie-consent__policy {
	color: inherit;
	text-decoration: underline;
}

.cookie-consent__policy:hover,
.cookie-consent__policy:focus {
	color: var(--lp-navy);
}

.cookie-consent__actions {
	display: flex;
	flex-shrink: 0;
	align-items: center;
	gap: 10px;
}

.cookie-consent__btn {
	appearance: none;
	min-width: 96px;
	padding: 10px 18px;
	border-radius: 3px;
	font: inherit;
	font-size: 14px;
	font-weight: 600;
	line-height: 1.2;
	cursor: pointer;
}

.cookie-consent__btn--accept {
	border: 1px solid var(--lp-navy);
	background: var(--lp-navy);
	color: var(--lp-white);
}

.cookie-consent__btn--accept:hover,
.cookie-consent__btn--accept:focus {
	background: #00305c;
	border-color: #00305c;
}

.cookie-consent__btn--decline {
	border: 1px solid var(--lp-navy);
	background-color: #ffffff;
	color: var(--lp-navy);
}

.cookie-consent__btn--decline:hover,
.cookie-consent__btn--decline:focus {
	background: #eef3f8;
}

@media (max-width: 767px) {
	.cookie-consent__inner {
		flex-direction: column;
		align-items: stretch;
		gap: 16px;
		padding: 28px 0;
	}

	.cookie-consent__actions {
		justify-content: flex-end;
	}

	.cookie-consent__btn {
		flex: 1 1 0;
	}
}

.site-footer__social {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.site-footer__social-link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 32px;
	height: 32px;
	border-radius: 50%;
	background: var(--lp-white);
	color: var(--lp-navy);
	text-decoration: none;
	transition: opacity 0.2s ease;
}

.site-footer__social-link:hover,
.site-footer__social-link:focus {
	opacity: 0.85;
	color: var(--lp-navy);
	text-decoration: none;
}

.site-footer__social-link svg {
	display: block;
}

@media (max-width: 991px) {
	.site-content:not(.site-content--promo) {
		padding: var(--lp-space-lg) 0 var(--lp-space-xl);
	}

	.site-header__inner,
	.site-footer__inner {
		flex-direction: column;
		align-items: flex-start;
	}

	.site-header__brand {
		flex-wrap: wrap;
	}
}

@media (max-width: 767px) {
	.site-content--landing .panel-grid-cell {
		width: 100% !important;
		float: none !important;
	}

	.site-content--promo .panel-grid-cell {
		width: 100% !important;
		float: none !important;
	}
}

@media (min-width: 992px) {
	body {
		min-height: 100vh;
	}
}
