/*
 * Footer container engine.
 *
 * The footer is Elementor markup (page 16258). Its per-post custom properties
 * (--display, --flex-direction, --width, --gap, --align-items, --justify-content,
 * --container-widget-*, --padding-*, --border-*) print inline on every template
 * and survive the front-page Elementor CSS strip. What does not survive on the
 * front page is Elementor's frontend.min.css, which carries the rules that APPLY
 * those variables (display:var(--display), width:var(--width), flex-direction, gap,
 * align, justify). Without them the containers fall back to display:block and the
 * footer collapses to a single stack.
 *
 * This ports only those generic flex-container application rules, verbatim from
 * frontend.min.css, scoped under .elementor-16258 so they reach nothing else on
 * any page. The overlay and grid-template variables the footer does not use are
 * dropped. On inner pages, where Elementor's own engine also runs, these scoped
 * rules carry identical declarations reading the same variables, so no value
 * shifts (verified byte-identical on /about/). On the front page they are the only
 * engine, so the footer lays out from theme CSS alone, matching live.
 */

/*
 * Per-element flex reset. Elementor resets the flex custom properties to initial
 * on every .elementor-element, so a flex value set on a container does not cascade
 * (inherit) into its descendants, and applies the per-element flex-item properties
 * (align-self, flex-basis/grow/shrink, order). Without it, on the front page the
 * --align-items:flex-start set on a parent container inherits into the contact
 * columns, so their headings stop stretching to the column width. Must come before
 * the .e-con base so the base's --gap wins for containers (Elementor's own order).
 */
.elementor-16258 .elementor-element {
	--flex-direction: initial;
	--flex-wrap: initial;
	--justify-content: initial;
	--align-items: initial;
	--align-content: initial;
	--gap: initial;
	--flex-basis: initial;
	--flex-grow: initial;
	--flex-shrink: initial;
	--order: initial;
	--align-self: initial;
	align-self: var(--align-self);
	flex-basis: var(--flex-basis);
	flex-grow: var(--flex-grow);
	flex-shrink: var(--flex-shrink);
	order: var(--order);
}

.elementor-16258 .e-con {
	--border-radius: 0;
	--border-top-width: 0px;
	--border-right-width: 0px;
	--border-bottom-width: 0px;
	--border-left-width: 0px;
	--border-style: initial;
	--border-color: initial;
	--container-widget-width: 100%;
	--container-widget-height: initial;
	--container-widget-flex-grow: 0;
	--container-widget-align-self: initial;
	--content-width: min(100%, var(--container-max-width, 1140px));
	--width: 100%;
	--min-height: initial;
	--height: auto;
	--text-align: initial;
	--margin-top: 0px;
	--margin-right: 0px;
	--margin-bottom: 0px;
	--margin-left: 0px;
	--padding-top: var(--container-default-padding-top, 10px);
	--padding-right: var(--container-default-padding-right, 10px);
	--padding-bottom: var(--container-default-padding-bottom, 10px);
	--padding-left: var(--container-default-padding-left, 10px);
	--position: relative;
	--z-index: revert;
	--overflow: visible;
	--gap: var(--widgets-spacing, 20px);
	--row-gap: var(--widgets-spacing-row, 20px);
	--column-gap: var(--widgets-spacing-column, 20px);
	border-radius: var(--border-radius);
	height: var(--height);
	min-height: var(--min-height);
	min-width: 0;
	overflow: var(--overflow);
	position: var(--position);
	width: var(--width);
	z-index: var(--z-index);
	--flex-wrap-mobile: wrap;
}

.elementor-16258 .e-con {
	--margin-block-start: var(--margin-top);
	--margin-block-end: var(--margin-bottom);
	--margin-inline-start: var(--margin-left);
	--margin-inline-end: var(--margin-right);
	--padding-inline-start: var(--padding-left);
	--padding-inline-end: var(--padding-right);
	--padding-block-start: var(--padding-top);
	--padding-block-end: var(--padding-bottom);
	--border-block-start-width: var(--border-top-width);
	--border-block-end-width: var(--border-bottom-width);
	--border-inline-start-width: var(--border-left-width);
	--border-inline-end-width: var(--border-right-width);
}

.elementor-16258 .e-con {
	margin-block-end: var(--margin-block-end);
	margin-block-start: var(--margin-block-start);
	margin-inline-end: var(--margin-inline-end);
	margin-inline-start: var(--margin-inline-start);
	padding-inline-end: var(--padding-inline-end);
	padding-inline-start: var(--padding-inline-start);
}

/*
 * Site container width. The footer's --content-width reads --container-max-width,
 * which the Elementor kit (post-8941) sets on .e-con. The front-page strip removes
 * the kit too, so without this the front page falls back to Elementor's 1140px and
 * the footer boxes in and centres. Replicated at the kit's exact breakpoints
 * (1550px, 100% under 1024px, 767px under 767px), scoped, so inner pages, where the
 * kit also sets these identical values, do not shift.
 */
.elementor-16258 .e-con {
	--container-max-width: 1550px;
}

@media (max-width: 1024px) {
	.elementor-16258 .e-con {
		--container-max-width: 100%;
	}
}

@media (max-width: 767px) {
	.elementor-16258 .e-con {
		--container-max-width: 767px;
	}
}

/*
 * Default container padding. The footer's e-parent sets no explicit padding, so it
 * takes the container default. Without the kit, the front page falls back to
 * Elementor's 10px and the footer loses its gutter, so the site value is supplied
 * here (0 top and bottom, 6vw sides). The sides stay 6vw at every width, including
 * under 767px: live loads zero kit CSS and uses 6vw at all widths, so the footer
 * matches live (42px at 700px), not the kit's 1.5rem mobile default. This shifts the
 * footer gutter on inner pages at mobile too, which is correct, both should match
 * live.
 */
.elementor-16258 .e-con {
	--container-default-padding-top: 0vw;
	--container-default-padding-right: 6vw;
	--container-default-padding-bottom: 0vw;
	--container-default-padding-left: 6vw;
}

@media (max-width: 767px) {
	.elementor-16258 .e-con {
		--container-default-padding-top: 0rem;
		--container-default-padding-right: 6vw;
		--container-default-padding-bottom: 0rem;
		--container-default-padding-left: 6vw;
	}
}

.elementor-16258 .e-con,
.elementor-16258 .e-con > .e-con-inner {
	display: var(--display);
}

.elementor-16258 .e-con.e-flex {
	--flex-direction: column;
	--flex-basis: auto;
	--flex-grow: 0;
	--flex-shrink: 1;
	flex: var(--flex-grow) var(--flex-shrink) var(--flex-basis);
}

.elementor-16258 .e-con-full.e-flex,
.elementor-16258 .e-con.e-flex > .e-con-inner {
	flex-direction: var(--flex-direction);
}

.elementor-16258 .e-con.e-flex > .e-con-inner {
	align-content: var(--align-content);
	align-items: var(--align-items);
	align-self: auto;
	flex-basis: auto;
	flex-grow: 1;
	flex-shrink: 1;
	flex-wrap: var(--flex-wrap);
	justify-content: var(--justify-content);
}

.elementor-16258 .e-con > .e-con-inner {
	gap: var(--row-gap) var(--column-gap);
	height: 100%;
	margin: 0 auto;
	max-width: var(--content-width);
	padding-inline-end: 0;
	padding-inline-start: 0;
	width: 100%;
}

.elementor-16258 .e-con-full,
.elementor-16258 .e-con > .e-con-inner {
	padding-block-end: var(--padding-block-end);
	padding-block-start: var(--padding-block-start);
	text-align: var(--text-align);
}

.elementor-16258 .elementor-element:where(.e-con-full, .elementor-widget) {
	align-content: var(--align-content);
	align-items: var(--align-items);
	flex-direction: var(--flex-direction);
	flex-wrap: var(--flex-wrap);
	gap: var(--row-gap) var(--column-gap);
	justify-content: var(--justify-content);
}

.elementor-16258 > .e-con {
	--margin-left: auto;
	--margin-right: auto;
	max-width: min(100%, var(--width));
}

.elementor-16258 .e-con > .elementor-widget {
	max-width: 100%;
}

@media (max-width: 767px) {
	.elementor-16258 .e-con.e-flex {
		--width: 100%;
		--flex-wrap: var(--flex-wrap-mobile);
	}
}
