/*
 * Vlas Construction typography system.
 * Instrument Sans is self-hosted under the SIL Open Font License.
 * Glyph outlines are fixed at a moderately compact 94% width while the
 * variable 400–700 weight range remains available to the public site.
 */
@font-face {
	font-family: "Instrument Sans";
	src: url("../fonts/instrument-sans-latin-ext-w94-variable.woff2") format("woff2");
	font-style: normal;
	font-weight: 400 700;
	font-display: swap;
}

:root {
	--vlas-font-sans: "Instrument Sans", "Helvetica Neue", Arial, sans-serif;
	--vlas-color-heading: #1e2228;
	--vlas-color-body: #343a40;
	--vlas-color-accent-text: #f2aa00;
	--vlas-size-h1: clamp(2rem, calc(1.75vw + 1.3rem), 2.875rem);
	--vlas-size-h2: clamp(1.75rem, calc(1vw + 1.3rem), 2.25rem);
	--vlas-size-h3: clamp(1.25rem, calc(0.35vw + 1.15rem), 1.5rem);
	--vlas-size-h4: clamp(1.125rem, calc(0.3vw + 1.05rem), 1.375rem);
	--vlas-size-h5: 1.125rem;
	--vlas-size-h6: 1rem;
	--vlas-size-body: 1.0625rem;
	--e-global-typography-primary-font-family: "Instrument Sans";
	--e-global-typography-secondary-font-family: "Instrument Sans";
	--e-global-typography-text-font-family: "Instrument Sans";
	--e-global-typography-accent-font-family: "Instrument Sans";
}

/*
 * Elementor's original global body grey (#7e8288) does not reach WCAG AA on
 * the site's white and pale-grey surfaces. Keep bright brand gold (#ffb300)
 * for icons and buttons; text that references the legacy cb9e79d accent token
 * uses the same RGB hue at exactly 95% brightness (#f2aa00), as selected after
 * real-device review. This visual brand decision does not reach WCAG AA on
 * pale panels; do not misreport it as an accessibility contrast correction.
 */
.elementor-kit-2135 {
	--e-global-color-text: var(--vlas-color-body);
	--e-global-color-cb9e79d: var(--vlas-color-accent-text);
	--e-global-typography-text-font-size: var(--vlas-size-body);
	--e-global-typography-text-line-height: 1.65em;
}

body,
button,
input,
optgroup,
select,
textarea,
.elementor .elementor-element,
.elementor-widget-text-editor,
.elementor-widget-text-editor p,
.elementor-widget-form .elementor-field-group > label,
.elementor-widget-form .elementor-field,
.elementor-widget-form .elementor-message,
.elementor-widget-icon-list .elementor-icon-list-text,
.elementor-widget-icon-list .elementor-icon-list-item > a,
.elementor-widget-posts .elementor-post__meta-data,
.elementor-widget-posts a.elementor-post__read-more,
.elementskit-navbar-nav > li > a,
.elementskit-navbar-nav .elementskit-submenu-panel > li > a,
.vlas-consent-banner,
.vlas-consent-modal,
.vlas-policy {
	font-family: var(--vlas-font-sans) !important;
}

body.elementor-kit-2135 {
	color: var(--vlas-color-body);
}

h1,
h2,
h3,
h4,
h5,
h6,
.elementor-widget-heading .elementor-heading-title,
.elementor-widget-counter .elementor-counter-number-wrapper,
.elementor-widget-counter .elementor-counter-title,
.elementor-widget-posts .elementor-post__title,
.elementor-widget-posts .elementor-post__title a {
	font-family: var(--vlas-font-sans) !important;
	letter-spacing: -0.008em;
}

/*
 * A restrained semantic scale. The Elementor-specific selectors deliberately
 * outrank generated per-widget sizes while preserving each widget's color and
 * alignment. H3 stays compact because older service pages also use it as an
 * eyebrow label.
 */
body.elementor-kit-2135 .elementor .elementor-widget-heading h1.elementor-heading-title,
.vlas-policy h1,
.entry-content > h1 {
	font-size: var(--vlas-size-h1);
	font-weight: 600;
	line-height: 1.12;
	letter-spacing: -0.012em;
}

body.elementor-kit-2135 .elementor .elementor-widget-heading h2.elementor-heading-title,
.vlas-policy h2,
.entry-content > h2 {
	font-size: var(--vlas-size-h2);
	font-weight: 600;
	line-height: 1.18;
	letter-spacing: -0.01em;
}

body.elementor-kit-2135 .elementor .elementor-widget-heading h3.elementor-heading-title,
.vlas-policy h3,
.entry-content > h3 {
	font-size: var(--vlas-size-h3);
	font-weight: 600;
	line-height: 1.25;
	letter-spacing: -0.006em;
}

body.elementor-kit-2135 .elementor .elementor-widget-heading h4.elementor-heading-title,
.vlas-policy h4,
.entry-content > h4 {
	font-size: var(--vlas-size-h4);
	font-weight: 600;
	line-height: 1.3;
	letter-spacing: -0.004em;
}

body.elementor-kit-2135 .elementor .elementor-widget-heading h5.elementor-heading-title,
.vlas-policy h5,
.entry-content > h5 {
	font-size: var(--vlas-size-h5);
	font-weight: 600;
	line-height: 1.35;
	letter-spacing: 0;
}

body.elementor-kit-2135 .elementor .elementor-widget-heading h6.elementor-heading-title,
.vlas-policy h6,
.entry-content > h6 {
	font-size: var(--vlas-size-h6);
	font-weight: 600;
	line-height: 1.4;
	letter-spacing: 0.01em;
}

body.elementor-kit-2135 .elementor .elementor-widget-text-editor,
.entry-content > p,
.entry-content > ul,
.entry-content > ol,
.vlas-policy p,
.vlas-policy li {
	font-size: var(--vlas-size-body);
	line-height: 1.65;
}

/*
 * Sixteen old widgets hard-code pale greys and therefore bypass the Site Kit
 * token above. They are all prose on light surfaces, so normalize only those
 * audited IDs rather than forcing a dark color onto white text in dark panels.
 */
body.elementor-kit-2135 .elementor-75566 .elementor-element.elementor-element-c09e215,
body.elementor-kit-2135 .elementor-75566 .elementor-element.elementor-element-69fb269,
body.elementor-kit-2135 .elementor-75566 .elementor-element.elementor-element-f3e17e6,
body.elementor-kit-2135 .elementor-75566 .elementor-element.elementor-element-72d9988,
body.elementor-kit-2135 .elementor-75566 .elementor-element.elementor-element-1c09b77,
body.elementor-kit-2135 .elementor-75566 .elementor-element.elementor-element-e744a31,
body.elementor-kit-2135 .elementor-75566 .elementor-element.elementor-element-479e7c9,
body.elementor-kit-2135 .elementor-76307 .elementor-element.elementor-element-811c041,
body.elementor-kit-2135 .elementor-76307 .elementor-element.elementor-element-af1d56e,
body.elementor-kit-2135 .elementor-76307 .elementor-element.elementor-element-ed9dd60,
body.elementor-kit-2135 .elementor-76307 .elementor-element.elementor-element-f2dc92c,
body.elementor-kit-2135 .elementor-76307 .elementor-element.elementor-element-82503ab,
body.elementor-kit-2135 .elementor-76307 .elementor-element.elementor-element-2e29ba9,
body.elementor-kit-2135 .elementor-76307 .elementor-element.elementor-element-c44be29,
body.elementor-kit-2135 .elementor-76307 .elementor-element.elementor-element-d8af89a,
body.elementor-kit-2135 .elementor-77662 .elementor-element.elementor-element-0fdfdf0 {
	color: var(--vlas-color-body);
}

/* Remove legacy wrapper underlines so only the calmer anchor underline draws. */
.elementor-widget-text-editor span[style*="text-decoration: underline"] {
	text-decoration: none !important;
}

/*
 * Older editors also wrap highlighted words in a hard-coded brand gold that
 * is too pale for normal-size copy on white. Preserve the gold meaning while
 * switching only those inline prose fragments to the accessible deep brand
 * gold.
 */
.elementor-widget-text-editor span[style*="color: #eca601" i],
.elementor-widget-text-editor a[style*="color: #eca601" i] {
	color: var(--vlas-color-accent-text) !important;
}

/* These four highlights are intentionally gold on a verified dark panel. */
body.elementor-kit-2135 .elementor-77662 :is(
	.elementor-element-f7d8bdb,
	.elementor-element-e2c32f0,
	.elementor-element-eda4a0c,
	.elementor-element-a6daa0d
) span[style*="color: #eca601" i] {
	color: #eca601 !important;
}

.elementor-widget-text-editor p a:not(.elementor-button),
.elementor-widget-text-editor li a:not(.elementor-button),
.entry-content p a:not(.button):not(.elementor-button),
.entry-content li a:not(.button):not(.elementor-button),
.vlas-policy a {
	color: inherit !important;
	text-decoration-line: underline;
	text-decoration-color: currentColor;
	text-decoration-color: color-mix(in srgb, currentColor 42%, transparent);
	text-decoration-thickness: 1px;
	text-underline-offset: 0.16em;
	text-decoration-skip-ink: auto;
}

.elementor-widget-text-editor p a:not(.elementor-button):hover,
.elementor-widget-text-editor li a:not(.elementor-button):hover,
.entry-content p a:not(.button):not(.elementor-button):hover,
.entry-content li a:not(.button):not(.elementor-button):hover,
.vlas-policy a:hover {
	color: inherit !important;
	text-decoration-color: currentColor;
	text-decoration-thickness: 1.5px;
}

.elementor-widget-text-editor p a:not(.elementor-button):focus-visible,
.elementor-widget-text-editor li a:not(.elementor-button):focus-visible,
.entry-content p a:not(.button):not(.elementor-button):focus-visible,
.entry-content li a:not(.button):not(.elementor-button):focus-visible,
.vlas-policy a:focus-visible {
	outline: 2px solid currentColor;
	outline-offset: 3px;
}

/* Blog card links need the same quiet, readable treatment as prose links. */
body.elementor-kit-2135 .elementor .elementor-widget-posts a.elementor-post__read-more {
	color: var(--vlas-color-accent-text) !important;
	text-decoration-line: underline;
	text-decoration-color: color-mix(in srgb, currentColor 42%, transparent);
	text-decoration-thickness: 1px;
	text-underline-offset: 0.16em;
}

/*
 * Elementor's default button is gold with white text (1.79:1). Use navy text
 * on gold, including hover. The audited custom navy buttons are restored to
 * white below; their generated hover rules already switch to navy on white.
 */
body.elementor-kit-2135 .elementor-widget-button .elementor-button {
	color: #0b1023 !important;
}

body.elementor-kit-2135 .elementor-widget-button .elementor-button:is(:hover, :focus) {
	color: #0b1023 !important;
}

body.elementor-kit-2135 :is(
	.elementor-75566 .elementor-element.elementor-element-e11d2b8,
	.elementor-75948 .elementor-element.elementor-element-46025e0,
	.elementor-76307 .elementor-element.elementor-element-992b4a2,
	.elementor-76410 .elementor-element.elementor-element-657774a,
	.elementor-76512 .elementor-element.elementor-element-2b60876,
	.elementor-76598 .elementor-element.elementor-element-a47c2af,
	.elementor-76666 .elementor-element.elementor-element-a71b73e,
	.elementor-76762 .elementor-element.elementor-element-9c0656a,
	.elementor-76795 .elementor-element.elementor-element-b388bf9,
	.elementor-76826 .elementor-element.elementor-element-e00a7d3,
	.elementor-76922 .elementor-element.elementor-element-c6c07c1,
	.elementor-76996 .elementor-element.elementor-element-0f305a9,
	.elementor-77051 .elementor-element.elementor-element-0472abc,
	.elementor-77085 .elementor-element.elementor-element-6ceaba7,
	.elementor-77123 .elementor-element.elementor-element-ac11b00,
	.elementor-77160 .elementor-element.elementor-element-6087617,
	.elementor-77192 .elementor-element.elementor-element-e8d6865,
	.elementor-77223 .elementor-element.elementor-element-db48e75,
	.elementor-77261 .elementor-element.elementor-element-09b731f,
	.elementor-77293 .elementor-element.elementor-element-13c00f3,
	.elementor-77345 .elementor-element.elementor-element-b85dd70,
	.elementor-77346 .elementor-element.elementor-element-c6a1f60,
	.elementor-77452 .elementor-element.elementor-element-51885f4,
	.elementor-77524 .elementor-element.elementor-element-385cd50,
	.elementor-77563 .elementor-element.elementor-element-2f44519,
	.elementor-77594 .elementor-element.elementor-element-c99542d,
	.elementor-77632 .elementor-element.elementor-element-f956bf3,
	.elementor-77662 .elementor-element.elementor-element-9ead942,
	.elementor-77775 .elementor-element.elementor-element-4bff999,
	.elementor-77799 .elementor-element.elementor-element-118b5c6,
	.elementor-78929 .elementor-element.elementor-element-7417d3a,
	.elementor-78949 .elementor-element.elementor-element-f367075,
	.elementor-79086 .elementor-element.elementor-element-7417d3a,
	.elementor-79103 .elementor-element.elementor-element-f367075
) .elementor-button {
	color: #ffffff !important;
}

/*
 * Shared CTA sections use a gold background. Their legacy white H2 fails even
 * the large-text threshold, so the same navy used by buttons is applied only
 * to the audited CTA headings rather than to white headings on dark imagery.
 */
body.elementor-kit-2135 :is(
	.elementor-75566 .elementor-element.elementor-element-82c4931,
	.elementor-75948 .elementor-element.elementor-element-b1df72a,
	.elementor-76307 .elementor-element.elementor-element-424e512,
	.elementor-76410 .elementor-element.elementor-element-895b834,
	.elementor-76512 .elementor-element.elementor-element-bbf28fa,
	.elementor-76598 .elementor-element.elementor-element-28b4b97,
	.elementor-76666 .elementor-element.elementor-element-72c11b2,
	.elementor-76762 .elementor-element.elementor-element-29481c0,
	.elementor-76795 .elementor-element.elementor-element-1d38636,
	.elementor-76826 .elementor-element.elementor-element-d525b36,
	.elementor-76922 .elementor-element.elementor-element-27d2c12,
	.elementor-76996 .elementor-element.elementor-element-3d34a77,
	.elementor-77051 .elementor-element.elementor-element-b46e1c7,
	.elementor-77085 .elementor-element.elementor-element-ccd7db2,
	.elementor-77123 .elementor-element.elementor-element-0e23442,
	.elementor-77160 .elementor-element.elementor-element-de3cf9d,
	.elementor-77192 .elementor-element.elementor-element-22a8f5b,
	.elementor-77223 .elementor-element.elementor-element-6c68754,
	.elementor-77261 .elementor-element.elementor-element-8dcdd44,
	.elementor-77293 .elementor-element.elementor-element-3f2a390,
	.elementor-77345 .elementor-element.elementor-element-873b7e2,
	.elementor-77346 .elementor-element.elementor-element-8c4fd64,
	.elementor-77452 .elementor-element.elementor-element-581ec26,
	.elementor-77524 .elementor-element.elementor-element-56171fd,
	.elementor-77563 .elementor-element.elementor-element-1b3fc67,
	.elementor-77594 .elementor-element.elementor-element-0bf858c,
	.elementor-77632 .elementor-element.elementor-element-edbcab6,
	.elementor-77662 .elementor-element.elementor-element-12a4cdb,
	.elementor-77775 .elementor-element.elementor-element-f7caceb,
	.elementor-77799 .elementor-element.elementor-element-c15e781,
	.elementor-78929 .elementor-element.elementor-element-b54c419,
	.elementor-78949 .elementor-element.elementor-element-592efb1,
	.elementor-79086 .elementor-element.elementor-element-b54c419,
	.elementor-79103 .elementor-element.elementor-element-592efb1
) .elementor-heading-title {
	color: #0b1023 !important;
}

/* Homepage section labels use the user-selected 5%-darker brand gold. */
body.elementor-kit-2135 :is(
	.elementor-75566 .elementor-element.elementor-element-0a9e2c6,
	.elementor-75566 .elementor-element.elementor-element-1377787,
	.elementor-75948 .elementor-element.elementor-element-4b4e59d
) .elementor-heading-title {
	color: var(--vlas-color-accent-text) !important;
}

/* The small CTA labels share their section's gold background. */
body.elementor-kit-2135 :is(
	.elementor-75566 .elementor-element.elementor-element-d29b354,
	.elementor-75948 .elementor-element.elementor-element-8d547f4
) .elementor-heading-title {
	color: #0b1023 !important;
}

button,
.elementor-widget-button .elementor-button,
.elementor-widget-form .elementor-button,
.elementskit-navbar-nav > li > a,
.elementskit-navbar-nav .elementskit-submenu-panel > li > a {
	font-family: var(--vlas-font-sans) !important;
	letter-spacing: -0.002em;
}

/* Icon pseudo-elements keep their plugin-provided icon font declarations. */
[class*="elementor-icon"]::before,
[class*="elementor-icon"]::after,
[class*="icon-"]::before,
[class*="icon-"]::after {
	letter-spacing: normal;
}
