/*
 * Carey Enterprises 2026 — brand layer for Divi 5.
 *
 * Source of truth: the Carey Enterprises design system (tokens.json, README.md) and
 * the homepage redesign canvas. Values below match them exactly.
 *
 * Specificity rule: every redesign rule is scoped with :where(.ce-2026), so it weighs
 * no more than a plain class. Anything set on a module in the Visual Builder (which
 * Divi prints as .et_pb_text_0 h2 and the like) wins over these defaults.
 *
 * Colors read the Divi 5 global colors (--gcid-ce-*) first, so changing a brand color
 * in Divi's color manager flows through here too. The hex after each is the fallback
 * for pages where Divi has not printed that variable.
 */

@font-face {
	font-family: "Figtree";
	font-style: normal;
	font-weight: 400 800;
	font-display: swap;
	src: url("../fonts/figtree-latin-var.woff2") format("woff2");
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root {
	/* Logo blues (exact) */
	--ce-carey-blue: var(--gcid-ce-carey-blue, #015b97);
	--ce-blue-mid: var(--gcid-ce-blue-mid, #1377b0);
	--ce-blue-bright: var(--gcid-ce-blue-bright, #2292ca);
	--ce-sky: var(--gcid-ce-sky, #34b0e4);

	/* Surfaces and ink */
	--ce-surface: #ffffff;
	--ce-surface-alt: var(--gcid-ce-surface-alt, #f2f7fb);
	--ce-surface-inverse: var(--gcid-ce-navy, #0b2a45);
	--ce-brand-soft: var(--gcid-ce-brand-soft, #e3f2fa);
	--ce-line: var(--gcid-ce-line, #d6e2ec);
	--ce-line-dark: var(--gcid-ce-line-dark, #1f3a55);
	--ce-ink: var(--gcid-ce-navy, #0b2a45);
	--ce-ink-muted: var(--gcid-ce-ink-muted, #4a6075);
	--ce-ink-inverse: #ffffff;
	--ce-ink-on-dark: var(--gcid-ce-ink-on-dark, #c9d6e2);
	--ce-muted-on-dark: var(--gcid-ce-muted-on-dark, #a8bccd);
	--ce-brand: var(--ce-carey-blue);

	/* The one warm accent: CTA fills only */
	--ce-action: var(--gcid-ce-action, #c93a07);
	--ce-orange: var(--gcid-ce-orange, #e8450a);

	/* Type */
	--ce-font: "Figtree", "Segoe UI", system-ui, sans-serif;

	/* Shape */
	--ce-radius-sm: 4px;
	--ce-radius-md: 8px;
	--ce-radius-full: 9999px;
	--ce-shadow-card: 0 1px 2px #0b2a4514, 0 6px 16px -4px #0b2a451f;
	--ce-shadow-screenshot: 0 24px 48px -12px #00000080;
}

/* ---------------------------------------------------------------- Base
 * Divi prints body{font-family:Open Sans;color:#666} and h1–h6{color:#333}, so the base
 * here needs body.ce-2026 to win. Divi's own global font variables are pointed at
 * Figtree too, so modules that read them follow.
 */

body.ce-2026 {
	--et_global_heading_font: "Figtree";
	--et_global_body_font: "Figtree";
	--et_global_heading_font_weight: 800;
	--et_global_body_font_weight: 400;
	font-family: var(--ce-font);
	font-weight: 400;
	color: var(--ce-ink);
	font-size: 17px;
	line-height: 28px;
}

body.ce-2026 :is(input, textarea, select, button) {
	font-family: var(--ce-font);
}

body.ce-2026 :is(h1, h2, h3, h4, h5, h6) {
	font-family: var(--ce-font);
	color: var(--ce-ink);
	padding-bottom: 0;
	line-height: 1.2;
	text-wrap: balance;
}

body.ce-2026 .ce-on-dark :is(h1, h2, h3, h4, h5, h6) {
	color: var(--ce-ink-inverse);
}

:where(.ce-2026) :is(h1, h2) {
	font-weight: 800;
}

:where(.ce-2026) :is(h3, h4) {
	font-weight: 700;
}

:where(.ce-2026) a {
	color: var(--ce-brand);
}

:where(.ce-2026) a:hover {
	color: var(--ce-blue-mid);
}

:where(.ce-2026) :focus-visible {
	outline: none;
	box-shadow: 0 0 0 2px #ffffff, 0 0 0 4px var(--ce-carey-blue);
	border-radius: 2px;
}

:where(.ce-2026) .ce-on-dark :focus-visible,
:where(.ce-2026) .ce-on-dark:focus-visible {
	box-shadow: 0 0 0 2px var(--ce-surface-inverse), 0 0 0 4px var(--ce-sky);
}

:where(.ce-2026) .et_pb_button {
	font-family: var(--ce-font);
}

/* Divi adds bottom padding to every paragraph; the design spaces with gaps instead.
 * A Text module with class ce-stack spaces its children 16px apart (ce-stack--24: 24px),
 * with 12px under an eyebrow. */
.ce-stack .et_pb_text_inner > * {
	margin-top: 0;
	margin-bottom: 0;
	padding-bottom: 0;
}

.ce-stack .et_pb_text_inner > * + * {
	margin-top: var(--ce-gap, 16px);
}

.ce-stack .et_pb_text_inner > .ce-eyebrow + * {
	margin-top: 12px;
}

.ce-stack--24 {
	--ce-gap: 24px;
}

/* Lists inside Text modules: Divi's .et_pb_text ul adds discs and padding. */
.et_pb_text :is(.ce-tags, .ce-steps, .ce-stats) li,
.et_pb_text :is(.ce-clients, .ce-footer-nav) li {
	list-style: none;
}

.et_pb_text :is(.ce-tags, .ce-steps, .ce-clients ul, .ce-footer-nav ul) {
	padding-bottom: 0;
}

/* Row helpers (class on the Row). */
@media (min-width: 981px) {
	.ce-align-end {
		display: flex;
		align-items: flex-end;
	}

	.ce-align-center {
		display: flex;
		align-items: center;
	}
}

.ce-text-right {
	text-align: right;
}

@media (max-width: 980px) {
	.ce-text-right {
		text-align: left;
	}
}

/* ---------------------------------------------------------------- Type scale */

.ce-eyebrow {
	display: block;
	margin: 0 0 12px;
	font-size: 13px;
	line-height: 16px;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--ce-brand);
}

.ce-on-dark .ce-eyebrow {
	color: var(--ce-sky);
}

.ce-display {
	margin: 0;
	font-size: 60px;
	line-height: 64px;
	font-weight: 800;
	letter-spacing: -0.02em;
}

.ce-h2 {
	margin: 0;
	font-size: 40px;
	line-height: 46px;
	font-weight: 800;
	letter-spacing: -0.015em;
}

.ce-h3 {
	margin: 0;
	font-size: 20px;
	line-height: 28px;
	font-weight: 700;
}

.ce-lead {
	font-size: 20px;
	line-height: 30px;
	max-width: 36em;
}

.ce-muted,
.ce-muted p {
	color: var(--ce-ink-muted);
}

.ce-on-dark {
	color: var(--ce-ink-inverse);
}

.ce-on-dark .ce-lead,
.ce-on-dark .ce-lead p {
	color: var(--ce-ink-on-dark);
}

/* ---------------------------------------------------------------- Links */

.ce-arrow-link {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	min-height: 44px;
	font-size: 17px;
	font-weight: 700;
	text-decoration: none;
	color: var(--ce-brand);
}

.ce-arrow-link::after {
	content: "";
	width: 18px;
	height: 18px;
	flex-shrink: 0;
	background: currentColor;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.25' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14M13 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='%23000' stroke-width='2.25' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14M13 6l6 6-6 6'/%3E%3C/svg%3E") center / contain no-repeat;
	transition: transform 0.15s ease;
}

.ce-arrow-link:hover::after {
	transform: translateX(3px);
}

.ce-phone-link {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	min-height: 44px;
	font-weight: 700;
	text-decoration: none;
	white-space: nowrap;
}

.ce-phone-link::before {
	content: "";
	width: 20px;
	height: 20px;
	flex-shrink: 0;
	background: currentColor;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 4h4l2 5-2.5 1.5a11 11 0 005 5L15 13l5 2v4a2 2 0 01-2 2A16 16 0 013 6a2 2 0 012-2'/%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='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 4h4l2 5-2.5 1.5a11 11 0 005 5L15 13l5 2v4a2 2 0 01-2 2A16 16 0 013 6a2 2 0 012-2'/%3E%3C/svg%3E") center / contain no-repeat;
}

/* ---------------------------------------------------------------- Buttons
 * Colors, radius and type come from the "CE · Schedule a Call" and "CE · Outline on
 * dark" Divi presets. These rules only remove Divi's default hover icon shuffle and
 * set the touch target, which have no preset setting.
 */

:where(.ce-2026) .ce-btn.et_pb_button,
:where(.ce-2026) .ce-btn .et_pb_button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 52px;
	line-height: 20px !important;
	transition: background-color 0.15s ease, border-color 0.15s ease;
}

:where(.ce-2026) .ce-btn.et_pb_button:hover,
:where(.ce-2026) .ce-btn .et_pb_button:hover {
	padding-left: 28px !important;
	padding-right: 28px !important;
}

:where(.ce-2026) .ce-btn--sm.et_pb_button,
:where(.ce-2026) .ce-btn--sm .et_pb_button {
	min-height: 48px;
}

:where(.ce-2026) .ce-btn--sm.et_pb_button:hover,
:where(.ce-2026) .ce-btn--sm .et_pb_button:hover {
	padding-left: 24px !important;
	padding-right: 24px !important;
}

/* Button pairs sit in a Group module with a flex layout; this keeps them tidy if a
 * wrapper gets added around a button. */
.ce-btn-row .et_pb_button_module_wrapper {
	margin: 0 !important;
}

/* ---------------------------------------------------------------- Hero */

.ce-hero {
	position: relative;
	overflow: hidden;
	isolation: isolate;
}

/* The logo ring, drawn from the four logo arcs. Decorative only. */
.ce-hero::before {
	content: "";
	position: absolute;
	z-index: -1;
	top: 96px;
	right: max(56px, calc((100vw - 1280px) / 2 - 24px));
	width: 440px;
	height: 440px;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 400' fill='none' stroke-width='30'%3E%3Cpath d='M112.9 65.8A160 160 0 0 1 287.1 65.8' stroke='%232292ca'/%3E%3Cpath d='M334.2 112.9A160 160 0 0 1 334.2 287.1' stroke='%2334b0e4'/%3E%3Cpath d='M287.1 334.2A160 160 0 0 1 112.9 334.2' stroke='%23015b97'/%3E%3Cpath d='M65.8 287.1A160 160 0 0 1 65.8 112.9' stroke='%231377b0'/%3E%3C/svg%3E") center / contain no-repeat;
	pointer-events: none;
}

.ce-stats {
	display: flex;
	flex-wrap: wrap;
	gap: 16px 32px;
	margin: 8px 0 0;
	padding: 24px 0 0;
	border-top: 1px solid var(--ce-line-dark);
}

.ce-stats div {
	display: flex;
	flex-direction: column-reverse;
	gap: 2px;
}

.ce-stats dt {
	font-size: 14px;
	line-height: 20px;
	font-weight: 400;
	color: var(--ce-muted-on-dark);
}

.ce-stats dd {
	margin: 0;
	font-size: 28px;
	line-height: 34px;
	font-weight: 800;
	color: var(--ce-ink-inverse);
}

/* ---------------------------------------------------------------- Screenshots */

/* A client site in a simple browser frame. The URL comes from the module's
 * data-url attribute (Advanced › Attributes in the Visual Builder). */
.ce-browser {
	border-radius: var(--ce-radius-md);
	overflow: hidden;
	background: var(--ce-surface);
	box-shadow: var(--ce-shadow-screenshot);
}

.ce-browser::before {
	content: attr(data-url);
	display: block;
	box-sizing: border-box;
	height: 36px;
	padding: 8px 14px 8px 64px;
	font: 400 12px/20px var(--ce-font);
	color: var(--ce-ink-muted);
	background:
		radial-gradient(circle 5px at 19px 18px, var(--ce-line) 98%, transparent) no-repeat,
		radial-gradient(circle 5px at 35px 18px, var(--ce-line) 98%, transparent) no-repeat,
		radial-gradient(circle 5px at 51px 18px, var(--ce-line) 98%, transparent) no-repeat,
		var(--ce-surface-alt);
	border-bottom: 1px solid var(--ce-line);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.ce-browser .et_pb_image_wrap,
.ce-browser img {
	display: block;
	width: 100%;
}

.ce-shot .et_pb_image_wrap {
	display: block;
	border: 1px solid var(--ce-line);
	border-radius: var(--ce-radius-md);
	overflow: hidden;
	background: var(--ce-surface-alt);
}

.ce-shot img {
	display: block;
	width: 100%;
	aspect-ratio: 1200 / 620;
	object-fit: cover;
	object-position: top center;
}

/* Native Before/After Image module (client before/after, e.g. Contractors page). */
.ce-ba {
	max-width: 960px;
	margin-left: auto !important;
	margin-right: auto !important;
}

.ce-ba .et_pb_before_after_image_container {
	border: 1px solid var(--ce-line);
	border-radius: var(--ce-radius-md);
	overflow: hidden;
	box-shadow: 0 24px 48px -24px rgba(11, 42, 69, .35);
}

.ce-ba img {
	display: block;
	width: 100%;
	height: auto;
}

/* ---------------------------------------------------------------- Client strip */

.ce-clients {
	display: flex;
	align-items: center;
	gap: 16px 48px;
}

.ce-clients p {
	flex: 0 0 200px;
	margin: 0;
	padding: 0;
	font-size: 14px;
	line-height: 20px;
	font-weight: 600;
	color: var(--ce-ink-muted);
}

.ce-clients ul {
	display: flex;
	flex: 1;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: 12px 24px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.ce-clients li {
	padding: 0;
	font-size: 18px;
	line-height: 24px;
	font-weight: 800;
	letter-spacing: -0.01em;
	color: var(--ce-ink-muted);
}

/* ---------------------------------------------------------------- Service cards (Blurb) */

.ce-card.et_pb_blurb {
	height: 100%;
	box-sizing: border-box;
}

.ce-card .et_pb_main_blurb_image {
	margin-bottom: 20px;
}

.ce-card .et_pb_main_blurb_image .et_pb_image_wrap {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 48px;
	height: 48px;
	border-radius: var(--ce-radius-md);
	background: var(--ce-brand-soft);
}

.ce-card .et_pb_main_blurb_image img {
	width: 24px;
	height: 24px;
}

.ce-card .et_pb_module_header {
	padding-bottom: 12px;
}

.ce-card .et_pb_module_header a {
	color: inherit;
	text-decoration: none;
}

.ce-card .et_pb_module_header a:hover {
	color: var(--ce-brand);
}

.ce-card .et_pb_blurb_description p {
	padding-bottom: 0;
}

/* Equal-height cards across a row. */
.ce-cards-row .et_pb_column {
	display: flex;
	flex-direction: column;
}

.ce-cards-row .et_pb_column > .et_pb_module {
	flex: 1;
}

/* ---------------------------------------------------------------- Numbered steps (rescue) */

.ce-steps {
	display: flex;
	flex-direction: column;
	gap: 16px;
	margin: 0;
	padding: 0 !important;
	list-style: none;
	counter-reset: ce-step;
}

.ce-steps li {
	display: flex;
	gap: 20px;
	padding: 24px;
	border-radius: var(--ce-radius-md);
	background: var(--ce-surface);
	counter-increment: ce-step;
}

.ce-steps li::before {
	content: counter(ce-step);
	display: flex;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;
	flex-shrink: 0;
	border-radius: var(--ce-radius-full);
	background: var(--ce-carey-blue);
	color: var(--ce-ink-inverse);
	font-size: 17px;
	font-weight: 800;
}

.ce-steps h3 {
	margin: 0 0 4px;
	font-size: 20px;
	line-height: 28px;
}

.ce-steps p {
	margin: 0;
	padding: 0;
	line-height: 26px;
	color: var(--ce-ink-muted);
}

/* ---------------------------------------------------------------- Work cards */

.ce-tags {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin: 0 0 16px !important;
	padding: 0 !important;
	list-style: none;
}

.ce-tags li {
	padding: 4px 12px;
	border-radius: var(--ce-radius-full);
	background: var(--ce-brand-soft);
	color: var(--ce-brand);
	font-size: 13px;
	line-height: 20px;
	font-weight: 700;
}

.ce-work h3 {
	margin: 0 0 8px;
	font-size: 22px;
	line-height: 28px;
}

.ce-work p {
	padding-bottom: 0;
	line-height: 26px;
	color: var(--ce-ink-muted);
}

/* ---------------------------------------------------------------- How it works */

.ce-step {
	padding-top: 24px;
	border-top: 4px solid var(--ce-step-color, var(--ce-carey-blue));
}

.ce-step--2 { --ce-step-color: var(--ce-blue-mid); }
.ce-step--3 { --ce-step-color: var(--ce-blue-bright); }
.ce-step--4 { --ce-step-color: var(--ce-sky); }

.ce-step .ce-step-num {
	display: block;
	margin-bottom: 12px;
	font-size: 14px;
	line-height: 20px;
	font-weight: 800;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--ce-brand);
}

.ce-step--2 .ce-step-num { color: var(--ce-blue-mid); }

.ce-step h3 {
	margin: 0 0 12px;
	font-size: 20px;
	line-height: 28px;
}

.ce-step p {
	padding-bottom: 0;
	line-height: 26px;
	color: var(--ce-ink-muted);
}

/* ---------------------------------------------------------------- Testimonials */

.ce-quote {
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	gap: 24px;
	height: 100%;
	box-sizing: border-box;
	margin: 0;
	padding: 32px;
	border: 1px solid var(--ce-line);
	border-radius: var(--ce-radius-md);
}

.ce-quote blockquote {
	margin: 0;
	padding: 0;
	border: 0;
	font-size: 20px;
	line-height: 30px;
	font-weight: 500;
	color: var(--ce-ink);
}

.ce-quote blockquote p {
	padding: 0;
}

.ce-quote figcaption {
	display: flex;
	flex-direction: column;
	gap: 2px;
}

.ce-quote figcaption strong {
	font-size: 16px;
	line-height: 22px;
}

.ce-quote figcaption span {
	font-size: 14px;
	line-height: 20px;
	color: var(--ce-ink-muted);
}

.ce-quotes-row .et_pb_column > .et_pb_module,
.ce-quotes-row .et_pb_text_inner {
	height: 100%;
}

/* ---------------------------------------------------------------- Contact card */

.ce-photo-placeholder {
	display: flex;
	align-items: center;
	justify-content: center;
	aspect-ratio: 1;
	max-width: 240px;
	padding: 24px;
	box-sizing: border-box;
	border-radius: var(--ce-radius-md);
	background: var(--ce-blue-mid);
	color: var(--ce-ink-inverse);
	font-size: 15px;
	font-weight: 600;
	text-align: center;
}

.ce-cta-row {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 16px 24px;
}

.ce-cta-row .ce-phone-link {
	font-size: 20px;
	color: var(--ce-ink-inverse);
}

.ce-cta-row .ce-phone-link:hover {
	color: var(--ce-brand-soft);
}

/* ---------------------------------------------------------------- Header */

.ce-header .et_pb_menu .et-menu > li {
	padding-left: 16px;
	padding-right: 16px;
}

.ce-header .et_pb_menu .et-menu > li > a {
	font-size: 16px;
	font-weight: 600;
	color: var(--ce-ink);
	padding-bottom: 0;
}

.ce-header .et_pb_menu .et-menu > li > a:hover {
	color: var(--ce-brand);
	opacity: 1;
}

.ce-header .et_pb_menu__menu,
.ce-header .et_pb_menu__menu > nav > ul {
	justify-content: center;
}

.ce-header .et_pb_menu_inner_container,
.ce-header .et_pb_menu__wrap {
	align-items: center;
}

.ce-header .et_pb_menu .et-menu > li > a {
	padding-top: 8px;
	padding-bottom: 8px;
}

.ce-header .et_pb_menu__logo img {
	height: 44px;
	width: auto;
	max-height: none;
}

.ce-header .ce-header-actions {
	display: flex;
	align-items: center;
	justify-content: flex-end;
	gap: 24px;
}

.ce-header .ce-phone-link {
	font-size: 16px;
	color: var(--ce-brand);
}

/* Call and Schedule a Call menu items exist for the phone menu only. */
.ce-header .et_pb_menu .et-menu .ce-mobile-only {
	display: none;
}

/* ---------------------------------------------------------------- Footer */

.ce-footer {
	color: var(--ce-muted-on-dark);
	font-size: 16px;
	line-height: 26px;
}

.ce-footer p {
	padding-bottom: 0;
}

.ce-footer .ce-footer-logo img {
	height: 48px;
	width: auto;
}

.ce-footer .ce-footer-logo.et_pb_image {
	margin-bottom: 16px !important;
}

.ce-footer-nav {
	display: flex;
	flex-direction: column;
	gap: 10px;
}

.ce-footer-nav .ce-footer-heading {
	font-size: 13px;
	line-height: 16px;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--ce-ink-inverse);
}

.ce-footer-nav ul {
	display: flex;
	flex-direction: column;
	gap: 10px;
	margin: 0;
	padding: 0 !important;
	list-style: none;
}

.ce-footer-nav li {
	padding: 0;
}

.ce-footer-nav a {
	color: var(--ce-muted-on-dark);
	text-decoration: none;
}

.ce-footer-nav a:hover {
	color: var(--ce-ink-inverse);
}

.ce-footer-nav a.ce-footer-phone {
	color: var(--ce-ink-inverse);
	font-weight: 700;
}

.ce-footer-nav a.ce-footer-email {
	color: var(--ce-sky);
}

.ce-footer-bottom {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: 8px 24px;
	padding-top: 24px;
	border-top: 1px solid var(--ce-line-dark);
	font-size: 14px;
	line-height: 20px;
}

.ce-footer-bottom a {
	color: var(--ce-muted-on-dark);
	text-decoration: none;
}

.ce-footer-bottom a:hover {
	color: var(--ce-ink-inverse);
}

/* ---------------------------------------------------------------- Tablet and phone */

@media (max-width: 980px) {
	.ce-display {
		font-size: 48px;
		line-height: 52px;
	}

	.ce-h2 {
		font-size: 32px;
		line-height: 38px;
	}

	.ce-hero::before {
		top: -40px;
		right: -120px;
		width: 340px;
		height: 340px;
		opacity: 0.9;
	}

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

	.ce-clients p {
		flex-basis: auto;
	}

	.ce-clients ul {
		justify-content: flex-start;
	}

	.ce-header .et_pb_menu .et_mobile_menu .ce-mobile-only {
		display: list-item;
	}
}

@media (max-width: 767px) {
	:where(.ce-2026) {
		font-size: 16px;
		line-height: 25px;
	}

	.ce-display {
		font-size: 38px;
		line-height: 42px;
	}

	.ce-h2 {
		font-size: 28px;
		line-height: 34px;
	}

	.ce-lead {
		font-size: 17px;
		line-height: 26px;
	}

	.ce-hero::before {
		top: -70px;
		right: -110px;
		width: 260px;
		height: 260px;
	}

	.ce-stats {
		display: grid;
		grid-template-columns: repeat(3, minmax(0, 1fr));
		gap: 12px;
		margin-top: 12px;
		padding-top: 20px;
	}

	.ce-stats dd {
		font-size: 20px;
		line-height: 26px;
	}

	.ce-stats dt {
		font-size: 13px;
		line-height: 18px;
	}

	.ce-clients li {
		font-size: 16px;
	}

	/* Service cards turn into rows: icon left, text right. */
	.ce-card.et_pb_blurb .et_pb_blurb_content {
		display: flex;
		align-items: flex-start;
		gap: 16px;
		max-width: none;
		text-align: left;
	}

	.ce-card .et_pb_main_blurb_image {
		flex: 0 0 40px;
		width: 40px;
		margin-bottom: 0;
	}

	.ce-card .et_pb_blurb_container {
		flex: 1;
		min-width: 0;
		padding-left: 0;
	}

	.ce-card .et_pb_main_blurb_image .et_pb_image_wrap {
		width: 40px;
		height: 40px;
	}

	.ce-card .et_pb_module_header {
		padding-bottom: 4px;
	}

	.ce-card .et_pb_blurb_description {
		font-size: 15px;
		line-height: 22px;
	}

	.ce-quote {
		padding: 24px;
	}

	.ce-quote blockquote {
		font-size: 19px;
		line-height: 28px;
	}

	.ce-photo-placeholder {
		display: none;
	}

	.ce-cta-row {
		flex-direction: column;
		align-items: stretch;
		text-align: center;
	}

	.ce-cta-row .ce-phone-link {
		justify-content: center;
		font-size: 17px;
	}
}

/* Image module bottom margin from the builder doesn't reach these wrappers. */
.ce-shot.et_pb_image {
	margin-bottom: 16px !important;
}

/* ---------------------------------------------------------------- Hero H1
 * The H1 carries the place and the promise: the eyebrow line and the display
 * headline are two spans of one heading. */

.ce-hero-title {
	margin: 0;
	padding: 0;
}

.ce-hero-title > span {
	display: block;
}

.ce-hero-title .ce-eyebrow {
	margin: 0 0 24px;
}

/* ---------------------------------------------------------------- Header dropdown */

.ce-header .et_pb_menu .et-menu .sub-menu {
	width: 260px;
	padding: 8px 0;
	border-top: 3px solid var(--ce-carey-blue);
	border-radius: 0 0 var(--ce-radius-md) var(--ce-radius-md);
	box-shadow: var(--ce-shadow-card);
	background: var(--ce-surface);
}

.ce-header .et_pb_menu .et-menu .sub-menu li {
	width: 100%;
	padding: 0;
}

.ce-header .et_pb_menu .et-menu .sub-menu a {
	display: block;
	width: auto;
	padding: 10px 20px;
	font-size: 15px;
	line-height: 22px;
	font-weight: 500;
	color: var(--ce-ink);
}

.ce-header .et_pb_menu .et-menu .sub-menu a:hover {
	background: var(--ce-surface-alt);
	color: var(--ce-brand);
	opacity: 1;
}

.ce-header .et_pb_menu .et-menu .sub-menu .ce-menu-all {
	margin-top: 6px;
	border-top: 1px solid var(--ce-line);
	padding-top: 6px;
}

.ce-header .et_pb_menu .et-menu .sub-menu .ce-menu-all a {
	font-weight: 700;
	color: var(--ce-brand);
}

/* Website Rescue appears in the dropdown and at the top level; on phones the
 * dropdown copy is enough. */
@media (max-width: 980px) {
	.ce-header .et_mobile_menu .ce-menu-rescue {
		display: none;
	}

	.ce-header .et_mobile_menu {
		border-top-color: var(--ce-carey-blue);
	}

	.ce-header .et_mobile_menu a {
		font-size: 17px;
		color: var(--ce-ink);
	}
}

/* ---------------------------------------------------------------- Footer menus */

.ce-footer-heading {
	margin: 0;
	padding: 0 !important;
}

.ce-footer-menu ul.ce-footer-links {
	display: flex;
	flex-direction: column;
	gap: 10px;
	margin: 0;
	padding: 0 !important;
	list-style: none;
}

.ce-footer-menu ul.ce-footer-links li {
	list-style: none;
	padding: 0;
}

.ce-footer-menu a {
	color: var(--ce-muted-on-dark);
	text-decoration: none;
}

.ce-footer-menu a:hover,
.ce-footer-menu .current-menu-item > a {
	color: var(--ce-ink-inverse);
}

.ce-footer .ce-footer-areas {
	margin-top: 12px;
	font-size: 14px;
	line-height: 22px;
}

/* ---------------------------------------------------------------- Site-wide header/footer
 * Header 2026 and Footer 2026 also run on legacy pages (no .ce-2026 body class), so
 * they carry their own type. */

.ce-header,
.ce-footer,
.ce-header .et_pb_menu .et-menu a,
.ce-header .et_mobile_menu a,
.ce-footer :is(p, a, li, span) {
	font-family: var(--ce-font);
}

.ce-footer :is(h1, h2, h3, h4, h5, h6) {
	color: var(--ce-ink-inverse);
	padding-bottom: 0;
}

/* ---------------------------------------------------------------- Narrow desktop (981–1200px) */

.ce-header .et_pb_button,
.ce-btn.et_pb_button {
	white-space: nowrap;
}

@media (min-width: 981px) and (max-width: 1200px) {
	.ce-display {
		font-size: 48px;
		line-height: 52px;
	}
}

/* ---------------------------------------------------------------- Small phones (≤374px) */

@media (max-width: 374px) {
	.ce-stats dd {
		font-size: 17px;
		line-height: 22px;
	}

	.ce-stats dt {
		font-size: 12px;
		line-height: 16px;
	}

	.ce-display {
		font-size: 34px;
		line-height: 38px;
	}
}


/* ================================================================ Inner pages */

/* ---------------------------------------------------------------- Page hero */

.ce-page-hero::before {
	top: -140px;
	right: max(-60px, calc((100vw - 1280px) / 2 - 140px));
	width: 420px;
	height: 420px;
	opacity: 0.85;
}

.ce-page-title .ce-display {
	font-size: 52px;
	line-height: 58px;
}

/* Breadcrumbs (Rank Math markup: nav.rank-math-breadcrumb > p > a, .separator, .last). */
.ce-crumbs .rank-math-breadcrumb p {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 4px 8px;
	margin: 0;
	padding: 0;
	font-size: 14px;
	line-height: 20px;
	color: var(--ce-muted-on-dark);
}

.ce-crumbs .rank-math-breadcrumb a {
	color: var(--ce-ink-on-dark);
	text-decoration: none;
}

.ce-crumbs .rank-math-breadcrumb a:hover {
	color: var(--ce-ink-inverse);
	text-decoration: underline;
}

.ce-crumbs .rank-math-breadcrumb .separator {
	color: var(--ce-muted-on-dark);
	opacity: 0.7;
}

.ce-crumbs .rank-math-breadcrumb .last {
	color: var(--ce-muted-on-dark);
}

/* ---------------------------------------------------------------- Reading width */

.ce-measure .et_pb_text_inner,
.ce-measure-row .et_pb_column {
	max-width: 820px;
}

.ce-prose .et_pb_text_inner {
	max-width: 720px;
}

.ce-prose p,
.ce-prose li {
	color: var(--ce-ink-muted);
}

.ce-prose .ce-h2 {
	margin-bottom: 8px;
}

.ce-prose a:not(.ce-arrow-link) {
	font-weight: 600;
	text-decoration: underline;
	text-underline-offset: 3px;
}

.et_pb_text .ce-list {
	display: flex;
	flex-direction: column;
	gap: 12px;
	margin: 0;
	padding: 0 !important;
	list-style: none;
}

.et_pb_text .ce-list li {
	position: relative;
	padding: 0 0 0 28px;
	list-style: none;
}

.et_pb_text .ce-list li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 9px;
	width: 10px;
	height: 10px;
	border-radius: var(--ce-radius-full);
	background: var(--ce-sky);
}

.ce-list strong {
	color: var(--ce-ink);
}

/* ---------------------------------------------------------------- Related chips */

.et_pb_text .ce-chips {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	margin: 0;
	padding: 0 !important;
	list-style: none;
}

.et_pb_text .ce-chips li {
	list-style: none;
	padding: 0;
}

.ce-chips a {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 0 20px;
	border: 1px solid var(--ce-line);
	border-radius: var(--ce-radius-full);
	background: var(--ce-surface);
	color: var(--ce-brand);
	font-weight: 700;
	text-decoration: none;
	transition: border-color 0.15s ease, background-color 0.15s ease;
}

.ce-chips a:hover {
	border-color: var(--ce-carey-blue);
	background: var(--ce-brand-soft);
}

/* ---------------------------------------------------------------- FAQ accordion */

.ce-faq.et_pb_accordion .et_pb_toggle {
	margin: 0 0 12px !important;
	padding: 0;
	border: 1px solid var(--ce-line);
	border-radius: var(--ce-radius-md);
	background: var(--ce-surface);
	box-shadow: none;
}

.ce-faq .et_pb_toggle_title {
	position: relative;
	margin: 0;
	padding: 20px 56px 20px 24px !important;
	font-family: var(--ce-font);
	font-size: 18px !important;
	line-height: 26px !important;
	font-weight: 700 !important;
	color: var(--ce-ink) !important;
	text-transform: none !important;
	letter-spacing: 0 !important;
	cursor: pointer;
}

.ce-faq .et_pb_toggle_title::before {
	content: "" !important;
	position: absolute;
	right: 24px;
	top: 50%;
	width: 14px;
	height: 14px;
	margin-top: 0;
	transform: translateY(-50%);
	font-size: 0;
	background: var(--ce-brand);
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='3' stroke-linecap='round'%3E%3Cpath d='M12 5v14M5 12h14'/%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='%23000' stroke-width='3' stroke-linecap='round'%3E%3Cpath d='M12 5v14M5 12h14'/%3E%3C/svg%3E") center / contain no-repeat;
	transition: transform 0.2s ease;
}

.ce-faq .et_pb_toggle_open .et_pb_toggle_title::before {
	transform: translateY(-50%) rotate(45deg);
}

.ce-faq .et_pb_toggle_content {
	padding: 0 24px 20px !important;
	font-size: 17px;
	line-height: 28px;
	color: var(--ce-ink-muted);
}

.ce-faq .et_pb_toggle_content p {
	padding-bottom: 0;
}

.ce-faq .et_pb_toggle_content a {
	font-weight: 600;
}

@media (max-width: 980px) {
	.ce-page-title .ce-display {
		font-size: 42px;
		line-height: 48px;
	}
}

@media (max-width: 767px) {
	.ce-page-title .ce-display {
		font-size: 34px;
		line-height: 40px;
	}

	.ce-page-hero::before {
		top: -90px;
		right: -120px;
		width: 240px;
		height: 240px;
	}

	.ce-faq .et_pb_toggle_title {
		padding: 16px 48px 16px 16px !important;
		font-size: 17px !important;
	}

	.ce-faq .et_pb_toggle_content {
		padding: 0 16px 16px !important;
	}
}


/* Cards on a tinted band turn white so they read as cards. */
.ce-band-alt .ce-card.et_pb_blurb {
	background-color: var(--ce-surface) !important;
}

/* Card icons sit top-left, as in the design (Divi centers blurb images by default). */
.ce-card .et_pb_main_blurb_image {
	text-align: left;
}

.ce-card .et_pb_main_blurb_image .et_pb_image_wrap {
	margin-left: 0;
	margin-right: 0;
}

.ce-chips {
	margin-top: 24px !important;
}


/* ---------------------------------------------------------------- Plans */

.ce-plans-row .et_pb_column {
	display: flex;
	flex-direction: column;
	padding: 32px;
	border: 1px solid var(--ce-line);
	border-radius: var(--ce-radius-md);
	background: var(--ce-surface);
	box-shadow: var(--ce-shadow-card);
	box-sizing: border-box;
}

.ce-plans-row .et_pb_column:has(.ce-plan--featured) {
	border: 2px solid var(--ce-carey-blue);
}

.ce-plans-row .ce-plan-card {
	flex: 1;
	margin-bottom: 24px !important;
}

.ce-plan-badge {
	display: inline-block;
	margin: 0 0 12px !important;
	padding: 2px 12px !important;
	border-radius: var(--ce-radius-full);
	background: var(--ce-brand-soft);
	color: var(--ce-brand);
	font-size: 13px;
	line-height: 20px;
	font-weight: 700;
}

.ce-plan-name {
	margin: 0 0 8px;
	font-size: 22px;
	line-height: 28px;
}

.ce-plan-price {
	display: flex;
	align-items: baseline;
	gap: 4px;
	margin: 0 0 12px;
	padding: 0 !important;
}

.ce-plan-amount {
	font-size: 44px;
	line-height: 48px;
	font-weight: 800;
	letter-spacing: -0.02em;
	color: var(--ce-ink);
}

.ce-plan-per {
	font-size: 16px;
	color: var(--ce-ink-muted);
}

/* One-time setup fee under the monthly price: secondary, so the monthly price stays the
   number people compare. */
.ce-plan-setup {
	display: inline-block;
	margin: -4px 0 16px !important;
	padding: 4px 12px !important;
	border-radius: var(--ce-radius-full);
	background: var(--ce-surface-alt);
	color: var(--ce-ink);
	font-size: 14px;
	line-height: 20px;
	font-weight: 600;
}

.ce-plan-pitch {
	margin: 0 0 20px;
	padding: 0 0 20px !important;
	border-bottom: 1px solid var(--ce-line);
	color: var(--ce-ink-muted);
}

.et_pb_text .ce-plan-list {
	display: flex;
	flex-direction: column;
	gap: 10px;
	margin: 0;
	padding: 0 !important;
	list-style: none;
}

.et_pb_text .ce-plan-list li {
	position: relative;
	padding: 0 0 0 28px;
	list-style: none;
	font-size: 16px;
	line-height: 24px;
}

.et_pb_text .ce-plan-list li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 4px;
	width: 16px;
	height: 16px;
	background: var(--ce-ok, #1a7f4b);
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12l5 5L20 7'/%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='%23000' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12l5 5L20 7'/%3E%3C/svg%3E") center / contain no-repeat;
}

.et_pb_text .ce-plan-list li:has(strong)::before {
	display: none;
}

.et_pb_text .ce-plan-list li:has(strong) {
	padding-left: 0;
}

.ce-plans-row .ce-btn.et_pb_button,
.ce-plans-row .ce-btn .et_pb_button {
	width: 100%;
}

.ce-enterprise-row {
	margin-top: 24px;
}

.ce-plan-enterprise .ce-plan-name {
	color: var(--ce-ink-inverse);
}

.ce-plan-enterprise p {
	padding-bottom: 0;
	color: var(--ce-ink-on-dark);
}

@media (max-width: 980px) {
	.ce-plans-row .et_pb_column {
		margin-bottom: 24px !important;
	}

	.ce-enterprise-row .ce-btn.et_pb_button {
		margin-top: 16px;
	}
}


/* Photo placeholder on a light band (About page). */
.ce-photo-placeholder--light {
	max-width: 360px;
	background: var(--ce-brand-soft);
	color: var(--ce-brand);
}


/* ================================================================ Blog posts */

.ce-post-title .entry-title,
.ce-post-title h1 {
	margin: 0 0 16px;
	padding: 0;
	max-width: 22em;
	font-family: var(--ce-font);
	font-size: 48px;
	line-height: 54px;
	font-weight: 800;
	letter-spacing: -0.02em;
	color: var(--ce-ink-inverse) !important;
}

.ce-post-title .et_pb_title_meta_container,
.ce-post-title .et_pb_title_meta_container a {
	font-size: 15px;
	line-height: 22px;
	color: var(--ce-ink-on-dark) !important;
}

.ce-post-title .et_pb_title_meta_container a:hover {
	color: var(--ce-ink-inverse) !important;
}

/* Reading width: about 70 characters a line. */
.ce-article-row {
	max-width: 760px !important;
}

.ce-post-content {
	font-size: 18px;
	line-height: 30px;
	color: var(--ce-ink);
}

.ce-post-content p,
.ce-post-content li {
	font-size: 18px;
	line-height: 30px;
	color: var(--ce-ink);
}

.ce-post-content p {
	padding-bottom: 0;
	margin: 0 0 20px;
}

.ce-post-content h2 {
	margin: 48px 0 16px;
	padding: 0;
	font-size: 30px;
	line-height: 36px;
	font-weight: 800;
	letter-spacing: -0.01em;
	color: var(--ce-ink);
}

.ce-post-content h3 {
	margin: 32px 0 12px;
	padding: 0;
	font-size: 22px;
	line-height: 30px;
	font-weight: 700;
	color: var(--ce-ink);
}

.ce-post-content h4 {
	margin: 24px 0 8px;
	padding: 0;
	font-size: 18px;
	line-height: 26px;
	font-weight: 700;
}

.ce-post-content ul,
.ce-post-content ol {
	margin: 0 0 20px;
	padding: 0 0 0 1.25em !important;
}

.ce-post-content li {
	margin: 0 0 8px;
}

.ce-post-content a {
	color: var(--ce-brand);
	font-weight: 600;
	text-decoration: underline;
	text-underline-offset: 3px;
}

.ce-post-content img {
	height: auto;
	border-radius: var(--ce-radius-md);
}

.ce-post-content blockquote {
	margin: 24px 0;
	padding: 4px 0 4px 20px;
	border-left: 4px solid var(--ce-sky);
	font-size: 20px;
	line-height: 32px;
	color: var(--ce-ink);
}

.ce-post-content table {
	width: 100%;
	margin: 0 0 24px;
	border-collapse: collapse;
	font-size: 16px;
}

.ce-post-content th,
.ce-post-content td {
	padding: 10px 12px;
	border: 1px solid var(--ce-line);
	text-align: left;
}

.ce-post-content th {
	background: var(--ce-surface-alt);
}

@media (max-width: 767px) {
	.ce-post-title .entry-title,
	.ce-post-title h1 {
		font-size: 32px;
		line-height: 38px;
	}

	.ce-post-content,
	.ce-post-content p,
	.ce-post-content li {
		font-size: 17px;
		line-height: 28px;
	}

	.ce-post-content h2 {
		font-size: 24px;
		line-height: 30px;
		margin-top: 36px;
	}
}


/* Reading width beats Divi's per-row max-width (which prints later with !important). */
.et_pb_row.ce-article-row {
	max-width: 760px !important;
}

/* Dropdown arrow drawn with CSS, so it doesn't depend on Divi's icon font being loaded
   (it isn't on every template). Centered with top + translateY(-50%) only: Divi 5
   already applies translateY(-50%) to this arrow, and an extra margin-top: -6px on top
   of it set the arrow 6px above the text. Owning the transform here keeps it right
   whatever Divi sets. */
.ce-header .et_pb_menu .et-menu .menu-item-has-children > a:first-child::after {
	content: "" !important;
	font-family: inherit !important;
	position: absolute;
	right: 0;
	top: 50% !important;
	width: 12px;
	height: 12px;
	margin-top: 0 !important;
	transform: translateY(-50%) !important;
	background: currentColor;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 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='%23000' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") center / contain no-repeat;
}

.ce-header .et_pb_menu .et-menu .menu-item-has-children > a:first-child {
	padding-right: 20px;
}

/* Easy Table of Contents, in brand. */
.ce-post-content #ez-toc-container {
	width: 100%;
	box-sizing: border-box;
	margin: 0 0 32px;
	padding: 16px 20px;
	border: 1px solid var(--ce-line);
	border-radius: var(--ce-radius-md);
	background: var(--ce-surface-alt);
	box-shadow: none;
}

.ce-post-content #ez-toc-container .ez-toc-title {
	font-family: var(--ce-font);
	font-size: 17px;
	font-weight: 700;
	color: var(--ce-ink);
}

.ce-post-content #ez-toc-container a {
	font-weight: 500;
	text-decoration: none;
}


/* ================================================================ Forms and booking */

.et_pb_row.ce-form-row {
	max-width: 820px !important;
}

.ce-booking {
	padding: 8px;
	border: 1px solid var(--ce-line);
	border-radius: var(--ce-radius-md);
	background: var(--ce-surface);
}

/* Divi contact forms carried over from the old pages, in brand. */
.ce-form-row .et_pb_contact_form_container {
	padding: 32px;
	border: 1px solid var(--ce-line);
	border-radius: var(--ce-radius-md);
	background: var(--ce-surface);
}

.ce-form-row .et_pb_contact_form_container .et_pb_contact_main_title {
	display: none;
}

.ce-form-row .et_pb_contact p input,
.ce-form-row .et_pb_contact p textarea,
.ce-form-row .et_pb_contact p select {
	padding: 14px 16px !important;
	border: 1px solid var(--ce-line) !important;
	border-radius: var(--ce-radius-sm) !important;
	background: var(--ce-surface) !important;
	font-family: var(--ce-font) !important;
	font-size: 16px !important;
	color: var(--ce-ink) !important;
}

.ce-form-row .et_pb_contact p input:focus,
.ce-form-row .et_pb_contact p textarea:focus {
	border-color: var(--ce-carey-blue) !important;
	box-shadow: 0 0 0 3px var(--ce-brand-soft);
}

.ce-form-row .et_pb_contact_field_options_title,
.ce-form-row .et_pb_contact label {
	font-weight: 600;
	color: var(--ce-ink);
}

.ce-form-row .et_pb_contact_submit.et_pb_button {
	min-height: 52px;
	padding: 14px 28px !important;
	border: 0 !important;
	border-radius: var(--ce-radius-md) !important;
	background: var(--ce-action) !important;
	color: #ffffff !important;
	font-family: var(--ce-font) !important;
	font-size: 17px !important;
	font-weight: 700 !important;
}

.ce-form-row .et_pb_contact_submit.et_pb_button:hover {
	background: #a83005 !important;
}

.ce-form-row .et_pb_contact_submit.et_pb_button::after {
	display: none !important;
}

@media (max-width: 767px) {
	.ce-form-row .et_pb_contact_form_container {
		padding: 20px;
	}
}


/* Divi prints its own form styles later, so these need the extra specificity. */
body.ce-2026 .ce-form-row .et_pb_contact_form .et_pb_contact_field input,
body.ce-2026 .ce-form-row .et_pb_contact_form .et_pb_contact_field textarea,
body.ce-2026 .ce-form-row .et_pb_contact_form .et_pb_contact_field select {
	padding: 14px 16px !important;
	border: 1px solid var(--ce-line) !important;
	border-radius: var(--ce-radius-sm) !important;
	background-color: var(--ce-surface) !important;
	color: var(--ce-ink) !important;
	font-family: var(--ce-font) !important;
	font-size: 16px !important;
}

body.ce-2026 .ce-form-row .et_pb_contact_form .et_pb_contact_field input::placeholder,
body.ce-2026 .ce-form-row .et_pb_contact_form .et_pb_contact_field textarea::placeholder {
	color: var(--ce-ink-muted) !important;
}

body.ce-2026 .ce-form-row .et_pb_contact_form .et_pb_contact_submit.et_pb_button {
	text-transform: none !important;
	letter-spacing: 0 !important;
}


/* ================================================================ Services mega menu */

@media (min-width: 981px) {
	.ce-header .et_pb_menu .et-menu > li.mega-menu {
		position: static;
	}

	.ce-header .et_pb_menu .et-menu > li.mega-menu > .sub-menu {
		/* Centered on the viewport, directly under the menu link (top: auto keeps
		   its natural vertical position). */
		position: fixed !important;
		top: 88px !important;
		left: 50% !important;
		width: min(1240px, 96vw) !important;
		transform: translateX(-50%);
		display: grid !important;
		grid-template-columns: repeat(5, minmax(0, 1fr));
		gap: 8px 20px;
		padding: 28px 28px 24px !important;
		border-top: 3px solid var(--ce-carey-blue);
		border-radius: 0 0 var(--ce-radius-md) var(--ce-radius-md);
		box-shadow: 0 24px 48px -16px #0b2a4540;
		background: var(--ce-surface);
	}

	.ce-header .et_pb_menu .et-menu > li.mega-menu:not(:hover):not(.et-hover) > .sub-menu {
		visibility: hidden;
		opacity: 0;
	}

	.ce-header .et_pb_menu .et-menu > li.mega-menu > .sub-menu > li {
		width: auto !important;
		padding: 0 !important;
		float: none !important;
	}

	.ce-header .et_pb_menu .et-menu > li.mega-menu > .sub-menu > li > .sub-menu {
		position: static !important;
		display: block !important;
		/* inherit, not visible: a visible child of a hidden panel still takes clicks,
		   which left invisible menu links over the top of every page. */
		visibility: inherit !important;
		opacity: 1 !important;
		width: auto !important;
		padding: 0 !important;
		border: 0 !important;
		box-shadow: none !important;
		background: none !important;
	}

	.ce-header .et_pb_menu .et-menu > li.mega-menu > .sub-menu > li > .sub-menu li {
		padding: 0 !important;
	}

	.ce-header .et_pb_menu .et-menu > li.mega-menu > .sub-menu > li > .sub-menu a {
		display: block;
		width: auto !important;
		padding: 8px 10px !important;
		margin: 0 -10px;
		border-radius: var(--ce-radius-sm);
		font-size: 15px;
		line-height: 22px;
		font-weight: 500;
		color: var(--ce-ink);
	}

	.ce-header .et_pb_menu .et-menu > li.mega-menu > .sub-menu > li > .sub-menu a:hover {
		background: var(--ce-surface-alt);
		color: var(--ce-brand);
		opacity: 1;
	}

	/* The "Start here" column sits on a tinted panel. */
	.ce-header .et_pb_menu .et-menu > li.mega-menu > .sub-menu > li.ce-mega-start {
		margin: -12px -12px -8px 0;
		padding: 12px 16px !important;
		border-radius: var(--ce-radius-md);
		background: var(--ce-brand-soft);
	}
}

/* Column headings: labels, not links. */
.ce-header .et_pb_menu .et-menu li.ce-mega-heading > a,
.ce-header .et_mobile_menu li.ce-mega-heading > a {
	pointer-events: none;
	cursor: default;
	padding: 0 0 8px !important;
	font-size: 12px !important;
	line-height: 16px !important;
	font-weight: 700 !important;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--ce-brand) !important;
	background: none !important;
}

.ce-header .et_pb_menu .et-menu li.ce-mega-heading > a::after {
	display: none !important;
}

.ce-header .et_pb_menu .et-menu .ce-menu-plans a {
	font-weight: 700 !important;
}

@media (max-width: 980px) {
	.ce-header .et_mobile_menu li.ce-mega-heading > a {
		padding: 14px 5% 6px !important;
	}
}


@media (min-width: 981px) {
	/* Logged-in admin bar pushes the sticky header down 32px. */
	.admin-bar .ce-header .et_pb_menu .et-menu > li.mega-menu > .sub-menu {
		top: 120px !important;
	}

	/* An invisible bridge so the panel doesn't close while the pointer crosses from
	   the link to the panel. */
	.ce-header .et_pb_menu .et-menu > li.mega-menu > a::before {
		content: "";
		position: absolute;
		left: -20px;
		right: -20px;
		top: 100%;
		height: 40px;
	}
}


/* ================================================================ Blog listings */

.ce-blog-grid .et_pb_post {
	display: flex;
	flex-direction: column;
	margin: 0 !important;
	padding: 0 0 24px !important;
	border: 1px solid var(--ce-line) !important;
	border-radius: var(--ce-radius-md);
	background: var(--ce-surface);
	overflow: hidden;
}

.ce-blog-grid .et_pb_post .entry-featured-image-url {
	display: block;
	margin: 0 0 20px !important;
	aspect-ratio: 16 / 9;
	overflow: hidden;
	background: var(--ce-brand-soft);
}

.ce-blog-grid .et_pb_post .entry-featured-image-url img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.ce-blog-grid .et_pb_post .entry-title,
.ce-blog-grid .et_pb_post .post-meta,
.ce-blog-grid .et_pb_post .post-content {
	padding-left: 24px !important;
	padding-right: 24px !important;
}

.ce-blog-grid .et_pb_post .entry-title {
	margin: 0 0 8px;
	font-family: var(--ce-font);
	font-size: 20px !important;
	line-height: 28px !important;
	font-weight: 700 !important;
}

.ce-blog-grid .et_pb_post .entry-title a {
	color: var(--ce-ink);
}

.ce-blog-grid .et_pb_post .entry-title a:hover {
	color: var(--ce-brand);
}

.ce-blog-grid .et_pb_post .post-meta {
	margin: 0 0 8px;
	font-size: 14px;
	color: var(--ce-ink-muted);
}

.ce-blog-grid .et_pb_post .post-content p {
	font-size: 16px;
	line-height: 25px;
	color: var(--ce-ink-muted);
	padding-bottom: 8px;
}

.ce-blog-grid .et_pb_post .more-link {
	font-weight: 700;
	color: var(--ce-brand);
}

.ce-blog-grid .pagination a {
	font-weight: 700;
	color: var(--ce-brand);
}

/* Search field on the search results page. */
.ce-search.et_pb_search {
	border: 0 !important;
	border-radius: var(--ce-radius-md) !important;
	overflow: hidden;
	background: var(--ce-surface);
}

.ce-search.et_pb_search input.et_pb_s {
	padding: 14px 16px !important;
	font-family: var(--ce-font);
	font-size: 16px;
	color: var(--ce-ink);
	background: var(--ce-surface);
}

.ce-search.et_pb_search .et_pb_searchsubmit {
	background: var(--ce-action) !important;
	color: #ffffff !important;
	font-family: var(--ce-font);
	font-weight: 700;
	text-transform: none;
}


/* ================================================================ Phone menu scrolling */

@media (max-width: 980px) {
	/* Pinned whether open or closing: Divi drops .opened as soon as the close tap lands
	   but slides the menu shut for another ~0.5 s, and switching back to its normal
	   position mid-slide made it jump before collapsing. */
	body.ce-2026 .ce-header .mobile_nav .et_mobile_menu {
		position: fixed !important;
		top: var(--ce-menu-top, 65px) !important;
		left: 0 !important;
		right: 0 !important;
		width: auto !important;
		max-height: calc(100vh - var(--ce-menu-top, 65px));
		max-height: calc(100dvh - var(--ce-menu-top, 65px));
		overflow-y: auto !important;
		overscroll-behavior: contain;
		-webkit-overflow-scrolling: touch;
		padding-bottom: 32px !important;
		box-shadow: 0 24px 48px -16px #0b2a4566;
		z-index: 100000;
	}

	/* Lock the page on <html> only. overflow on <body> would make the body its own
	   scroll container, and the CSS-sticky header would then stick to the body
	   instead of the viewport: scrolled down, the header vanished while the menu was
	   open and there was nothing to tap to close it. */
	html.ce-menu-open {
		overflow: hidden !important;
		touch-action: none;
	}

	html.ce-menu-open body {
		touch-action: none;
	}

	html.ce-menu-open .ce-header .et_mobile_menu {
		touch-action: pan-y;
	}
}


/* Posts without a featured image: give the title room at the top of the card. */
.ce-blog-grid .et_pb_post:not(.has-post-thumbnail) {
	padding-top: 24px !important;
}


/* ================================================================ Section visuals */

.ce-visual.et_pb_image .et_pb_image_wrap,
.ce-visual img {
	display: block;
	width: 100%;
}

.ce-visual:not(.ce-browser) .et_pb_image_wrap {
	border-radius: 16px;
	overflow: hidden;
	box-shadow: 0 2px 4px #0b2a4510, 0 24px 48px -24px #0b2a4540;
}

.ce-split .ce-prose .et_pb_text_inner {
	max-width: none;
}

@media (max-width: 980px) {
	.ce-split .ce-visual {
		margin-top: 32px !important;
	}

	/* Copy first on phones, whichever side the visual sits on. */
	.ce-split--left {
		display: flex;
		flex-direction: column-reverse;
	}
}

/* ================================================================ Outline button on a light background */

/* ID-level, to beat the Outline preset's "body #page-container .et_pb_section" rule. */
body.ce-2026 #page-container .et_pb_section .ce-btn--on-light.et_pb_button {
	color: #015b97 !important;
	border-color: #015b97 !important;
	background-color: transparent !important;
}

body.ce-2026 #page-container .et_pb_section .ce-btn--on-light.et_pb_button:hover {
	color: #fff !important;
	background-color: #015b97 !important;
}

/* Images get width/height attributes (inc/performance.php) so space is reserved while
   they load; keep them scaling with their container. */
body.ce-2026 img[width][height] {
	height: auto;
}

/* Links inside running text are underlined, not told apart by colour alone (WCAG 1.4.1,
   axe link-in-text-block). */
body.ce-2026 p.ce-muted a,
body.ce-2026 .ce-hs-form a {
	text-decoration: underline;
	text-underline-offset: 2px;
}

/* ================================================================ Sticky header (CSS)
   Replaces Divi's JS sticky (see build.php). Divi's overflow on #page-container would
   stop position: sticky working; clip keeps horizontal overflow hidden without making
   it a scroll container. */

body.ce-2026 #page-container {
	overflow-x: clip !important;
	overflow-y: visible !important;
}

body.ce-2026 .et-l--header {
	position: sticky;
	top: 0;
	z-index: 99990;
}

body.ce-2026.admin-bar .et-l--header {
	top: 32px;
}

@media (max-width: 782px) {
	body.ce-2026.admin-bar .et-l--header {
		top: 46px;
	}
}

/* ================================================================ Placeholders
   [Needs input: ...] slots for facts only Jon can supply (lib-pages.php ce_placeholder).
   Deliberately loud so none survive to launch; pages containing one are noindex. */

.ce-placeholder {
	display: inline;
	padding: 1px 6px;
	border: 1px dashed #c93a07;
	border-radius: 4px;
	background: #fff4ef;
	color: #8a2804;
	font-weight: 600;
}

.ce-on-dark .ce-placeholder {
	background: #3a1a0e;
	color: #ffd9c8;
}

/* Town links in the footer's service-area line: same colour as the text, underlined
   (contrast on navy, and not colour-only). */
body.ce-2026 .ce-footer .ce-footer-areas a {
	color: inherit !important;
	text-decoration: underline;
	text-underline-offset: 2px;
}

body.ce-2026 .ce-footer .ce-footer-areas a:hover {
	color: #fff !important;
}

/* ================================================================ Media page */

body.ce-2026 .ce-facts {
	display: grid;
	grid-template-columns: max-content 1fr;
	gap: 10px 20px;
	margin: 0;
}

body.ce-2026 .ce-facts dt {
	font-weight: 700;
	color: var(--ce-ink);
}

body.ce-2026 .ce-facts dd {
	margin: 0;
	color: var(--ce-ink-muted, #4a6075);
}

body.ce-2026 .ce-media-copy {
	padding: 16px 18px;
	border-left: 4px solid var(--ce-carey-blue, #015b97);
	background: var(--ce-surface-alt, #f2f7fb);
	border-radius: 0 8px 8px 0;
}

body.ce-2026 .ce-band-alt .ce-media-copy {
	background: #fff;
}

body.ce-2026 .ce-media-logos {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 24px;
	margin-bottom: 32px;
}

body.ce-2026 .ce-media-logos figure {
	margin: 0;
}

body.ce-2026 .ce-media-logo {
	display: flex;
	align-items: center;
	justify-content: center;
	aspect-ratio: 16 / 9;
	padding: 24px;
	border: 1px solid var(--ce-line, #d6e2ec);
	border-radius: 12px;
	background: #fff;
}

body.ce-2026 .ce-media-logo--dark {
	background: var(--ce-navy, #0b2a45);
	border-color: var(--ce-navy, #0b2a45);
}

body.ce-2026 .ce-media-logo img {
	max-width: 100%;
	max-height: 100%;
	width: auto;
	height: auto;
}

body.ce-2026 .ce-media-logos figcaption {
	display: flex;
	flex-direction: column;
	gap: 2px;
	margin-top: 12px;
}

body.ce-2026 .ce-media-logos figcaption span {
	color: var(--ce-ink-muted, #4a6075);
	font-size: 15px;
}

body.ce-2026 .ce-media-logos figcaption a {
	font-weight: 700;
	text-decoration: underline;
}

body.ce-2026 .ce-swatches {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 16px;
	margin: 0 0 24px;
	padding: 0;
	list-style: none;
}

body.ce-2026 .ce-swatches li {
	display: flex;
	flex-direction: column;
	gap: 2px;
	font-variant-numeric: tabular-nums;
}

body.ce-2026 .ce-swatches span {
	display: block;
	height: 72px;
	margin-bottom: 8px;
	border-radius: 10px;
}

@media (max-width: 767px) {
	body.ce-2026 .ce-media-logos {
		grid-template-columns: minmax(0, 1fr);
	}

	body.ce-2026 .ce-swatches {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	body.ce-2026 .ce-facts {
		grid-template-columns: minmax(0, 1fr);
		gap: 2px;
	}

	body.ce-2026 .ce-facts dd {
		margin-bottom: 10px;
	}
}

/* ================================================================ Topic clusters */

body.ce-2026 .ce-guides {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 16px 32px;
	margin: 0;
	padding: 0;
	list-style: none;
}

body.ce-2026 .ce-guides li {
	padding: 16px 0;
	border-top: 1px solid var(--ce-line, #d6e2ec);
}

body.ce-2026 .ce-guides a {
	font-weight: 700;
	font-size: 18px;
	line-height: 1.35;
	color: var(--ce-ink, #0b2a45);
	text-decoration: none;
}

body.ce-2026 .ce-guides a:hover {
	color: var(--ce-brand, #015b97);
	text-decoration: underline;
}

body.ce-2026 .ce-guides span {
	display: block;
	margin-top: 6px;
	color: var(--ce-ink-muted, #4a6075);
	font-size: 15px;
	line-height: 1.5;
}

body.ce-2026 .ce-guides-title {
	margin: 32px 0 12px;
}

body.ce-2026 .ce-post-topics,
body.ce-2026 .ce-author-box {
	margin-top: 40px;
	padding: 24px;
	border-radius: 12px;
	background: var(--ce-surface-alt, #f2f7fb);
}

body.ce-2026 .ce-author-box {
	margin-top: 16px;
}

body.ce-2026 .ce-post-topics .ce-eyebrow + ul {
	margin-bottom: 16px;
}

body.ce-2026 .ce-post-related {
	margin: 8px 0 0;
	padding-left: 20px;
}

body.ce-2026 .ce-post-related a {
	font-weight: 700;
}

@media (max-width: 767px) {
	body.ce-2026 .ce-guides {
		grid-template-columns: minmax(0, 1fr);
	}
}

body.ce-2026 .ce-guides-group + .ce-guides-group {
	margin-top: 56px;
}

body.ce-2026 .ce-guides-group .ce-h2 {
	margin-bottom: 16px;
}

body.ce-2026 .ce-guides-more {
	margin-top: 16px;
}

/* Chips and lists inside the post footer box: no inherited article bullets. */
body.ce-2026 .ce-post-topics ul.ce-chips {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin: 8px 0 20px;
	padding: 0;
	list-style: none;
}

body.ce-2026 .ce-post-topics ul.ce-chips li {
	margin: 0;
	padding: 0;
}

body.ce-2026 .ce-post-topics ul.ce-chips li::before,
body.ce-2026 .ce-post-topics ul.ce-chips li::marker {
	content: none;
}

body.ce-2026 .ce-post-topics ul.ce-chips,
body.ce-2026 .ce-post-content .ce-post-topics ul.ce-chips {
	padding-left: 0 !important;
	margin-left: 0 !important;
}


/* ================================================================ Phone menu: nested dropdowns (2026-10-07)
 * Services and each of its five groups start collapsed; the phone-menu script in
 * functions.php toggles .ce-sub-open. Rows are 48px+ tap targets; the two calls to
 * action sit at the end as real buttons (orange only on Schedule a Call). */

@media (max-width: 980px) {
	.ce-header .mobile_nav .et_mobile_menu {
		padding: 8px 0 24px !important;
		border-top: 3px solid var(--ce-carey-blue) !important;
	}

	.ce-header .et_mobile_menu li {
		padding: 0 !important;
		list-style: none;
	}

	.ce-header .et_mobile_menu li a {
		display: flex !important;
		align-items: center;
		min-height: 48px;
		padding: 12px 20px !important;
		border-bottom: 1px solid var(--ce-line) !important;
		background: none !important;
		color: var(--ce-ink) !important;
		font-size: 17px !important;
		line-height: 24px !important;
		font-weight: 600 !important;
		text-decoration: none;
	}

	/* Collapsed by default. */
	.ce-header .et_mobile_menu li.menu-item-has-children > ul.sub-menu {
		display: none !important;
		padding: 0 !important;
		margin: 0 !important;
		border: 0 !important;
		box-shadow: none !important;
		background: var(--ce-surface-alt) !important;
		visibility: visible !important;
		opacity: 1 !important;
		position: static !important;
		width: auto !important;
	}

	.ce-header .et_mobile_menu li.menu-item-has-children.ce-sub-open > ul.sub-menu {
		display: block !important;
	}

	/* Parent rows: a label plus a chevron that turns when open. */
	.ce-header .et_mobile_menu li.menu-item-has-children > a {
		justify-content: space-between;
		cursor: pointer;
		pointer-events: auto !important;
	}

	.ce-header .et_mobile_menu li.menu-item-has-children > a::after {
		content: "";
		flex: none;
		width: 9px;
		height: 9px;
		margin: 0 4px 4px 16px;
		border-right: 2px solid currentColor;
		border-bottom: 2px solid currentColor;
		transform: rotate(45deg);
		transition: transform 0.2s ease;
	}

	.ce-header .et_mobile_menu li.ce-sub-open > a::after {
		transform: rotate(-135deg);
		margin-bottom: -4px;
	}

	.ce-header .et_mobile_menu li.ce-sub-open > a {
		color: var(--ce-brand) !important;
	}

	/* The five groups: eyebrow style, as on desktop, but tappable. */
	.ce-header .et_mobile_menu li.ce-mega-heading > a {
		min-height: 48px;
		padding: 12px 20px 12px 32px !important;
		font-size: 13px !important;
		line-height: 18px !important;
		font-weight: 700 !important;
		letter-spacing: 0.08em;
		text-transform: uppercase;
		color: var(--ce-brand) !important;
	}

	.ce-header .et_mobile_menu li.ce-mega-heading > ul.sub-menu {
		background: var(--ce-surface) !important;
	}

	.ce-header .et_mobile_menu li.ce-mega-heading > ul a {
		padding-left: 44px !important;
		font-size: 16px !important;
		font-weight: 500 !important;
	}

	/* Where you are. */
	.ce-header .et_mobile_menu li.current-menu-item:not(.menu-item-has-children) > a {
		color: var(--ce-brand) !important;
		font-weight: 700 !important;
	}

	/* Calls to action at the end: real buttons. */
	.ce-header .et_mobile_menu li.ce-mobile-only > a {
		justify-content: center;
		margin: 16px 20px 0;
		border: 2px solid var(--ce-brand) !important;
		border-radius: var(--ce-radius-md);
		color: var(--ce-brand) !important;
		font-weight: 700 !important;
	}

	.ce-header .et_mobile_menu li.ce-mobile-only > a:not([href^="tel:"]) {
		margin-top: 12px;
		border-color: var(--ce-action) !important;
		background: var(--ce-action) !important;
		color: #fff !important;
	}

	/* The menu button: an X while the menu is open. */
	.ce-header .mobile_nav.opened .mobile_menu_bar::before {
		content: "\4d" !important;
	}

	.ce-header .mobile_menu_bar:focus-visible {
		outline: 3px solid var(--ce-sky);
		outline-offset: 4px;
		border-radius: var(--ce-radius-sm);
	}

	@media (prefers-reduced-motion: reduce) {
		.ce-header .et_mobile_menu li.menu-item-has-children > a::after {
			transition: none;
		}
	}
}

@media (max-width: 980px) {
	/* Group rows show their chevron too (the desktop rule hides it on headings). */
	.ce-header .et_mobile_menu li.ce-mega-heading > a::after {
		display: block !important;
	}

	/* No tap fade on menu rows. */
	.ce-header .et_mobile_menu li a,
	.ce-header .et_mobile_menu li a:hover {
		opacity: 1 !important;
	}

	/* The open menu fills the screen below the header, so the page doesn't show
	   through underneath a short list. */
	html.ce-menu-open .ce-header .mobile_nav .et_mobile_menu {
		min-height: calc(100vh - var(--ce-menu-top, 65px));
		min-height: calc(100dvh - var(--ce-menu-top, 65px));
	}

	/* Floating buttons step aside while the menu is open. */
	html.ce-menu-open .asw-menu-btn,
	html.ce-menu-open .et_pb_scroll_top {
		display: none !important;
	}
}

/* Back-to-top: brand navy instead of Divi's grey tab. */
.et_pb_scroll_top.et-pb-icon {
	right: 16px !important;
	bottom: 16px !important;
	width: 44px;
	height: 44px;
	padding: 0 !important;
	display: flex;
	align-items: center;
	justify-content: center;
	border-radius: var(--ce-radius-md) !important;
	background: var(--ce-surface-inverse) !important;
	color: #fff !important;
	font-size: 26px !important;
	box-shadow: 0 8px 20px -8px #0b2a4599;
}

.et_pb_scroll_top.et-pb-icon:focus-visible {
	outline: 3px solid var(--ce-sky);
	outline-offset: 3px;
}

/* ================================================================ Phone polish (2026-10-07) */

@media (max-width: 600px) {
	/* Footer link lists in two columns with 40px tap rows: about half the length. */
	.ce-footer-menu ul.ce-footer-links {
		display: grid !important;
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 0 16px !important;
	}

	.ce-footer-menu ul.ce-footer-links a {
		display: flex;
		align-items: center;
		min-height: 40px;
		line-height: 20px;
	}

	/* Button rows: full width, easy to hit with a thumb. */
	.ce-btn-row .et_pb_button_module_wrapper,
	.ce-btn-row .et_pb_button {
		width: 100%;
		text-align: center;
		justify-content: center;
	}

	/* The accessibility button is smaller on phones so it covers less of the page. */
	.asw-menu-btn {
		transform: scale(0.78);
		transform-origin: bottom left;
	}
}

@media (max-width: 980px) {
	/* "Who we help" and "Free tools & guides" are top-level dropdowns on phones. */
	.ce-header .et_mobile_menu > li.ce-top-group > ul a,
	.ce-header .et_mobile_menu > li.menu-item-has-children > ul > li:not(.ce-mega-heading) > a {
		padding-left: 32px !important;
		font-size: 16px !important;
		font-weight: 500 !important;
	}

	/* "All services" closes the Services list. */
	.ce-header .et_mobile_menu li.ce-menu-all > a {
		color: var(--ce-brand) !important;
		font-weight: 700 !important;
	}
}

/* GoHighLevel forms: the iframe and its slot start at the height the form renders at,
   so the page doesn't move when GHL's script resizes it. The slot (a minimum, so a
   form that grows, say with error messages, still fits) matters because the
   script takes the iframe out of the flow (position:absolute, off-screen) while the
   form loads. Contact measured 2026-10-07: 1168px at 390px wide, 992px at desktop
   width. Website Audit measured 2026-10-08: 363px at every width. */
#ce-ghl-form iframe {
	height: 1170px;
}

#ce-ghl-form .ce-ghl-slot {
	min-height: 1170px;
}

@media (min-width: 768px) {
	#ce-ghl-form iframe {
		height: 1000px;
	}

	#ce-ghl-form .ce-ghl-slot {
		min-height: 1000px;
	}
}

#ce-ghl-audit iframe {
	height: 363px;
}

#ce-ghl-audit .ce-ghl-slot {
	min-height: 363px;
}

/* ================================================================ Footer layout (2026-10-07)
 * Top band (logo, one line, phone + Schedule a Call), five link groups that mirror the
 * site's structure, then the copyright line. */

.ce-footer .ce-footer-top {
	border-bottom: 1px solid var(--ce-line-dark);
	padding-bottom: 40px !important;
}

.ce-footer .ce-footer-about p {
	max-width: 46ch;
}

.ce-footer-cta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: flex-end;
	gap: 16px 24px;
}

.ce-footer-cta a.ce-footer-phone {
	color: var(--ce-ink-inverse);
	font-size: 22px;
	line-height: 28px;
	font-weight: 700;
	text-decoration: none;
}

.ce-footer-cta a.ce-footer-book {
	display: inline-flex;
	align-items: center;
	min-height: 48px;
	padding: 12px 24px;
	border-radius: var(--ce-radius-md);
	background: var(--ce-action);
	color: #fff;
	font-weight: 700;
	text-decoration: none;
}

.ce-footer-cta a:focus-visible,
.ce-footer-nav a:focus-visible {
	outline: 3px solid var(--ce-sky);
	outline-offset: 3px;
	border-radius: var(--ce-radius-sm);
}

.ce-footer .ce-footer-cols .ce-footer-nav .ce-footer-heading {
	margin-bottom: 4px;
}

.ce-footer .ce-footer-cols .ce-footer-menu ul.ce-footer-links {
	gap: 8px;
}

.ce-footer .ce-footer-cols .ce-footer-menu a {
	font-size: 15px;
	line-height: 22px;
}

/* Tablet: groups in three columns instead of five squeezed ones. */
@media (min-width: 768px) and (max-width: 980px) {
	.ce-footer .ce-footer-cols {
		display: grid !important;
		grid-template-columns: repeat(3, minmax(0, 1fr));
		gap: 32px 24px;
	}

	.ce-footer .ce-footer-cols > .et_pb_column {
		width: auto !important;
		margin: 0 !important;
	}
}

@media (max-width: 980px) {
	.ce-footer-cta {
		justify-content: flex-start;
		margin-top: 8px;
	}
}

/* Phone: groups stacked, each with its links in two columns (see Phone polish). */
@media (max-width: 767px) {
	.ce-footer .ce-footer-cols > .et_pb_column {
		margin-bottom: 28px !important;
	}

	.ce-footer-cta a.ce-footer-book {
		flex: 1 1 100%;
		justify-content: center;
	}
}

/* Footer logo: a fixed, modest size (the module otherwise stretches it to the
   column width). */
.ce-footer .ce-footer-logo.et_pb_image,
.ce-footer .ce-footer-logo .et_pb_image_wrap {
	width: 220px !important;
	max-width: 100% !important;
}

.ce-footer .ce-footer-logo img {
	width: 220px !important;
	height: auto !important;
	max-width: 100% !important;
}

@media (max-width: 767px) {
	.ce-footer .ce-footer-logo.et_pb_image,
	.ce-footer .ce-footer-logo .et_pb_image_wrap,
	.ce-footer .ce-footer-logo img {
		width: 180px !important;
	}
}

.ce-footer .ce-footer-logo.et_pb_image {
	margin-left: 0 !important;
	margin-right: auto !important;
	text-align: left !important;
}

/* Legal pages: in-page links land below the sticky header. */
.ce-legal :is(h2, h3) {
	scroll-margin-top: 110px;
}

/* Legal pages use the full content width (Jon, 2026-10-07). */
.ce-legal .et_pb_text_inner {
	max-width: none !important;
}

/* ================================================================ Page hero visual (2026-10-08)
 * Hero art beside the headline on inner pages (ce_page_hero 'visual'; source
 * tools/redesign-2026/graphics/heroes.html, transparent WebP drawn for the navy hero).
 * Desktop only: below 981px the column stacks under the copy, where it would only push
 * the page down, so phones and tablets keep the text-only hero. */

.ce-hero-visual .et_pb_image_wrap,
.ce-hero-visual img {
	display: block;
	width: 100%;
	height: auto;
}

.ce-hero-visual img {
	aspect-ratio: 4 / 3;
}

@media (max-width: 980px) {
	.ce-hero-split > .et_pb_column:last-child {
		display: none;
	}

	/* Interactive heroes are the experience, not decoration: stack them under the copy. */
	.ce-hero-split--widget > .et_pb_column:last-child {
		display: block;
		margin-top: 32px;
	}
}

/* ================================================================ Trade page journey (2026-10-08)
 * Numbered overview of the stages, then one navy band per stage with its demo(s). */

.ce-journey {
	list-style: none;
	margin: 8px 0 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	counter-reset: none;
}

.ce-journey a {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 8px 14px 8px 8px;
	border: 1px solid var(--ce-line);
	border-radius: 999px;
	font-weight: 700;
	font-size: 15px;
	color: var(--ce-ink);
	text-decoration: none;
	background: var(--ce-surface);
}

.ce-journey a:hover,
.ce-journey a:focus-visible {
	border-color: var(--ce-brand);
	color: var(--ce-brand);
}

.ce-journey a span {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 26px;
	height: 26px;
	border-radius: 50%;
	background: var(--ce-brand);
	color: #fff;
	font-size: 13px;
	font-variant-numeric: tabular-nums;
}

.ce-journey-stage {
	scroll-margin-top: 90px;
}

.et_pb_section.ce-stage-alt {
	background-color: #10304f !important;
}

.ce-journey-demos .et_pb_text_inner {
	display: grid;
	gap: 28px;
}

/* Bestowing the Basics case study: phone screenshots at phone size and shape (the shared
   .ce-shot rule crops to a desktop 1200:620 frame). */
.ce-btb-phones .et_pb_image.ce-shot {
	max-width: 320px !important;
	margin-inline: auto;
}

.ce-btb-phones .ce-shot img {
	aspect-ratio: auto;
	object-fit: contain;
	height: auto;
}


/* ---------------------------------------------------------------- Header layout (2026-10-08)
 * Logo left, links centered in the space between the logo and the phone number, phone
 * and Schedule a Call right. Nothing drops out at laptop widths: from 981 to 1279px the
 * row uses more of the screen and the type steps down one size instead. Phones get a
 * Call button between the logo and the menu button. */

@media (min-width: 981px) {
	.ce-header .et_pb_row.et_pb_row {
		display: flex;
		align-items: center;
	}

	.ce-header .et_pb_row > .et_pb_column_2_3 {
		flex: 1 1 auto;
		width: auto !important;
		min-width: 0;
		margin-right: 0 !important;
	}

	.ce-header .et_pb_row > .et_pb_column_1_3 {
		flex: 0 0 auto;
		width: auto !important;
		margin: 0 !important;
	}

	.ce-header .et_pb_menu_inner_container {
		display: flex;
		align-items: center;
	}

	/* Divi puts 30px after the logo; drop it so the space each side of the links matches. */
	.ce-header .et_pb_menu__logo-wrap,
	.ce-header .et_pb_menu__logo-wrap .et_pb_menu__logo {
		flex: none;
		margin-right: 0 !important;
	}

	/* The size lives on the wrapper; the image fills it. Divi's own
	   `.et_pb_menu__logo img[src$=".svg"] { width: 100% !important }` has the same
	   specificity as a plain `.ce-header .et_pb_menu__logo img`, so whichever stylesheet
	   prints last won: on logged-in previews that was Divi's, and with no width on the
	   wrapper the SVG drew at its natural 2372px. The extra .et_pb_menu here outranks it. */
	.ce-header .et_pb_menu__logo-wrap {
		width: 180px !important;
	}

	.ce-header .et_pb_menu .et_pb_menu__logo,
	.ce-header .et_pb_menu .et_pb_menu__logo img {
		width: 100% !important;
		height: auto !important;
	}

	.ce-header .et_pb_menu .et_pb_menu__wrap {
		flex: 1 1 auto;
		justify-content: center !important;
		padding-inline: 16px;
	}

	.ce-header-call {
		display: none !important;
	}
}

@media (min-width: 981px) and (max-width: 1279px) {
	.ce-header .et_pb_row.et_pb_row {
		width: calc(100% - 48px) !important;
	}

	.ce-header .et_pb_menu__logo-wrap {
		width: 150px !important;
	}

	.ce-header .et_pb_menu .et_pb_menu__wrap {
		padding-inline: 8px;
	}

	.ce-header .et_pb_menu .et-menu > li {
		padding-left: 9px;
		padding-right: 9px;
	}

	.ce-header .et_pb_menu .et-menu > li > a,
	.ce-header .ce-phone-link {
		font-size: 15px;
	}

	.ce-header .ce-phone-link::before {
		width: 18px;
		height: 18px;
	}

	.ce-header .ce-header-actions {
		gap: 16px;
	}

	.ce-header .et_pb_button.et_pb_button {
		font-size: 15px !important;
		padding: 10px 16px !important;
	}
}

@media (max-width: 980px) {
	.ce-header .et_pb_row > .et_pb_column_2_3 {
		position: relative;
	}

	/* Out of the flow, so it can't push the logo or the menu button around. */
	.ce-header-call {
		position: absolute !important;
		top: 50%;
		right: 48px;
		z-index: 2;
		margin: 0 !important;
		transform: translateY(-50%);
	}

	.ce-call-btn {
		display: inline-flex;
		align-items: center;
		gap: 6px;
		height: 40px;
		padding: 0 14px;
		border-radius: var(--ce-radius-sm);
		background: var(--ce-action);
		color: var(--ce-ink-inverse);
		font-family: var(--ce-font);
		font-size: 15px;
		font-weight: 700;
		line-height: 1;
		text-decoration: none;
		white-space: nowrap;
	}

	.ce-call-btn::before {
		content: "";
		width: 16px;
		height: 16px;
		flex-shrink: 0;
		background: currentColor;
		-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 4h4l2 5-2.5 1.5a11 11 0 005 5L15 13l5 2v4a2 2 0 01-2 2A16 16 0 013 6a2 2 0 012-2'/%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='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 4h4l2 5-2.5 1.5a11 11 0 005 5L15 13l5 2v4a2 2 0 01-2 2A16 16 0 013 6a2 2 0 012-2'/%3E%3C/svg%3E") center / contain no-repeat;
	}

	.ce-call-btn:hover,
	.ce-call-btn:focus-visible {
		color: var(--ce-ink-inverse);
		filter: brightness(1.08);
	}
}

@media (min-width: 981px) and (max-width: 1099px) {
	.ce-header .et_pb_menu .et-menu > li {
		padding-left: 7px;
		padding-right: 7px;
	}
}

/* ---------------------------------------------------------------- Card links (2026-10-08)
 * Cards that lead somewhere carry a real <a href> on the title (search engines and
 * keyboards can follow it). The link's ::after covers the card, so the whole card is
 * still one click target. */
.ce-card {
	position: relative;
}

.ce-card .et_pb_module_header a {
	color: inherit;
	text-decoration: none;
}

.ce-card .et_pb_module_header a::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
}

.ce-card:hover .et_pb_module_header a,
.ce-card .et_pb_module_header a:focus-visible {
	text-decoration: underline;
	text-underline-offset: 3px;
}

.ce-card .et_pb_module_header a:focus-visible {
	outline: none;
}

.ce-card:has(.et_pb_module_header a:focus-visible) {
	outline: 3px solid var(--ce-sky);
	outline-offset: 3px;
}
