.elementor .header-bar{border-color:var(--color-primary-light-3);background-color:var(--color-white);/* Floating header bar, Glass: frosted surface from the kit material knobs (card recipe, minus the drop shadow and the white surface edge — the border keeps its native light-3 so the bar stays visible over light sections). Radius, border width/style and padding stay native. */
background-color: color-mix(in srgb, var(--surface, var(--color-white)) var(--surface-alpha), transparent);
background-image: var(--surface-highlight);
backdrop-filter: var(--surface-backdrop);\n}.elementor .service-area-map{/* Service Area Map colour hooks. Custom properties only — the plugin stylesheet consumes them with the context tokens as fallbacks. Glass: alternate (amber) chips take dark text, matching button-accent and badges. Everything else uses the plugin default. */
--scw-sa-chip-alt-color: var(--on-accent-alt, var(--color-secondary-dark-1));\n}.elementor .footer-menu-title{margin-block-end:var(--spacing-s);}.elementor .footer-menu{gap:var(--spacing-s);}.elementor .form-validation-message{text-align:start;padding-block-start:var(--button-input-padding-vertical);padding-block-end:var(--button-input-padding-vertical);padding-inline-start:var(--button-input-padding-horizontal);padding-inline-end:var(--button-input-padding-horizontal);border-radius:var(--radius-m);border-width:var(--border-m);border-style:solid;display:none;color: var(--accent, var(--color-primary-brand-1));
background-color: var(--surface, var(--color-white));\n}.elementor .form-validation-message:focus{/* Elementor focuses this after submit; not interactive, so no ring */
outline: none;\n}.elementor .form-container-multiline{column-gap:var(--spacing-m);flex-direction:row;row-gap:var(--spacing-m);flex-wrap:nowrap;}.elementor .form-centred{/* Centres form contents only; nested wrappers re-centred (div default sets align-items: start) */
.e-form-base {

/* Nested wrappers */
.e-default-div {
align-items: center;
justify-content: center;
}

/* Text */
.e-form-input-base,
.e-form-select-base,
.e-form-textarea-base,
.e-form-file-upload-base,
.e-form-label-base,
.e-paragraph-base {
text-align: center;
}

.e-form-submit-button-base {
align-self: center;
}

.e-form-file-upload-base {
width: fit-content;
max-width: 100%;
align-self: center;
}

}\n}.elementor .section-s{padding-block-start:calc(clamp(3.5rem, 6vw + 2.15rem, 5rem) + var(--header-offset, 0px));padding-block-end:clamp(3.5rem, 6vw + 2.15rem, 5rem);padding-inline-start:max(5%, calc((100% - var(--boxed-width-s)) / 2));padding-inline-end:max(5%, calc((100% - var(--boxed-width-s)) / 2));gap:var(--spacing-m);}.elementor .section-m{padding-block-start:calc(clamp(3.5rem, 3.1579vw + 2.7895rem, 5rem) + var(--header-offset, 0px));padding-block-end:clamp(3.5rem, 3.1579vw + 2.7895rem, 5rem);padding-inline-start:max(5%, calc((100% - var(--boxed-width-m)) / 2));padding-inline-end:max(5%, calc((100% - var(--boxed-width-m)) / 2));gap:var(--spacing-m);}.elementor .section-l{padding-block-start:calc(clamp(3.5rem, 2.7273vw + 2.8864rem, 5rem) + var(--header-offset, 0px));padding-block-end:clamp(3.5rem, 2.7273vw + 2.8864rem, 5rem);padding-inline-start:max(5%, calc((100% - var(--boxed-width-l)) / 2));padding-inline-end:max(5%, calc((100% - var(--boxed-width-l)) / 2));gap:var(--spacing-m);}.elementor .grid-6{column-gap:var(--spacing-column);display:grid;row-gap:var(--spacing-row);grid-template-columns:repeat(6, 1fr);grid-template-rows:auto;align-items:stretch;}.elementor .grid-4{column-gap:var(--spacing-column);display:grid;row-gap:var(--spacing-row);grid-template-columns:repeat(4, 1fr);grid-template-rows:auto;align-items:stretch;}.elementor .grid-3{column-gap:var(--spacing-column);display:grid;row-gap:var(--spacing-row);grid-template-columns:repeat(3, 1fr);grid-template-rows:auto;align-items:stretch;}.elementor .grid-2{column-gap:var(--spacing-column);display:grid;row-gap:var(--spacing-row);grid-template-columns:repeat(2, 1fr);grid-template-rows:auto;align-items:stretch;}.elementor .grid-tight{gap:var(--spacing-grid-tight);}.elementor .tight-row-gaps{flex-direction:row;gap:var(--spacing-m);align-items:center;}.elementor .tight-column-no-gaps{gap:0px;}.elementor .card{height:100%;overflow:hidden;padding:var(--spacing-m);border-radius:var(--radius-m);border-width:var(--border-s);border-style:solid;box-shadow:var(--box-shadow-h) var(--box-shadow-v-light) var(--box-shadow-b-light) var(--box-shadow-s) var(--color-box-shadow-light);flex-direction:column;gap:var(--spacing-m);/* Card fill follows --card-surface; border width/style, radius, padding and hover stay on the element. Material knobs are kit variables: neutral in Flat, frosted in Glass. */
background-color: color-mix(in srgb, var(--card-surface, var(--color-primary-light-1)) var(--surface-alpha), transparent);
border-color: var(--color-surface-edge);
background-image: var(--surface-highlight);
backdrop-filter: var(--surface-backdrop);\n}.elementor .mega-menu-link-box{padding:var(--spacing-m);transition:all 0ms;flex-direction:column;row-gap:var(--spacing-s);}.elementor .mega-menu-link-box:hover,.elementor .mega-menu-link-box:focus-visible{border-radius:var(--radius-m);background-color: var(--hover-tint, var(--color-primary-light-2));\n}.elementor .mega-menu-title{padding-inline-start:var(--spacing-m);padding-inline-end:var(--spacing-m);margin-block-end:var(--spacing-s);}.elementor .mega-menu-column{column-gap:0px;row-gap:0px;}.elementor .mobile-menu-link{font-weight:400;text-align:start;padding-block-start:var(--spacing-m);padding-block-end:var(--spacing-m);padding-inline-start:var(--spacing-l);padding-inline-end:var(--spacing-l);border-radius:0px;border-block-start-width:0px;border-block-end-width:var(--border-s);border-inline-start-width:0px;border-inline-end-width:0px;border-style:solid;color: var(--accent, var(--color-primary-brand-1));
border-color: var(--surface-border, var(--color-primary-light-3));
background-color: transparent;

/* Cancels the button Default Style shadow */
box-shadow: none;\n}.elementor .mobile-menu-link:hover,.elementor .mobile-menu-link:focus-visible{background-color: transparent;
border-color: var(--surface-border, var(--color-primary-light-3));
/* Cancels the button default hover lift/shadow */
transform: none;
box-shadow: none;\n}.elementor .mobile-menu-link:focus{/* No shadow on mouse focus (the button default restates one) */
&:not(:focus-visible) {
box-shadow: none;
}\n}.elementor .eyebrow{font-family:var(--eyebrows);font-weight:500;font-size:0.75rem;letter-spacing:5%;line-height:var(--heading-line-height);text-transform:uppercase;}.elementor .badge-swipe{overflow:hidden;position:relative;font-weight:600;padding-block-start:var(--badge-padding-vertical);padding-block-end:var(--badge-padding-vertical);padding-inline-start:var(--badge-padding-horizontal);padding-inline-end:var(--badge-padding-horizontal);border-radius:var(--radius-l);display:flex;gap:0.45em;flex:0 0 auto;align-items:center;color: var(--on-accent-alt, var(--color-secondary-dark-1));
background-color: var(--accent-alt, var(--color-secondary-brand-1));

/* z-index 0 must stay here: the native control drops 0 values */
z-index: 0;

&::before {
	content: "";
	flex: none;
	width: .5em;
	height: .5em;
	border-radius: 50%;
	background: var(--badge-dot, var(--color-primary-brand-1)); /* green reads better on amber */
}

/* Sheen (Glass kit); the Flat copy uses a wipe */
&::after {
	content: "";
	position: absolute;
	top: 0;
	bottom: 0;
	left: 0;
	width: 40%;
	background: linear-gradient(100deg, transparent, color-mix(in srgb, var(--color-white) 55%, transparent), transparent);
	transform: translateX(-180%);
	pointer-events: none;
	animation: badge-sheen 4.5s ease-in-out infinite;
}

/* Empty badge: hidden (component instances blank the Badge to remove it) */
&:empty {
	display: none;
}\n}.elementor .badge-still{overflow:hidden;position:relative;font-weight:600;padding-block-start:var(--badge-padding-vertical);padding-block-end:var(--badge-padding-vertical);padding-inline-start:var(--badge-padding-horizontal);padding-inline-end:var(--badge-padding-horizontal);border-radius:var(--radius-l);display:flex;gap:0.45em;flex:0 0 auto;align-items:center;color: var(--on-accent-alt, var(--color-secondary-dark-1));
background-color: var(--accent-alt, var(--color-secondary-brand-1));

/* z-index 0 must stay here: the native control drops 0 values */
z-index: 0;

&::before {
	content: "";
	flex: none;
	width: .5em;
	height: .5em;
	border-radius: 50%;
	background: var(--badge-dot, var(--color-primary-brand-1)); /* green reads better on amber */
}

/* Empty badge: hidden (component instances blank the Badge to remove it) */
&:empty {
	display: none;
}\n}.elementor .h6-override{font-family:var(--titles);font-weight:700;font-size:var(--h6-size);line-height:var(--heading-line-height);/* Heading colour on non-heading tags; (0,2,0) so local pickers win */
color: var(--heading-color, var(--accent, var(--color-primary-brand-1)));\n}.elementor .h5-override{font-family:var(--titles);font-weight:700;font-size:var(--h5-size);line-height:var(--heading-line-height);/* Heading colour on non-heading tags; (0,2,0) so local pickers win */
color: var(--heading-color, var(--accent, var(--color-primary-brand-1)));\n}.elementor .h4-override{font-family:var(--titles);font-weight:700;font-size:var(--h4-size);line-height:var(--heading-line-height);/* Heading colour on non-heading tags; (0,2,0) so local pickers win */
color: var(--heading-color, var(--accent, var(--color-primary-brand-1)));\n}.elementor .body-s{font-family:var(--body);font-size:calc(var(--body-default) - 0.125rem);line-height:var(--body-line-height);}.elementor .body-l{font-family:var(--body);font-size:calc(var(--body-default) + 0.125rem);line-height:var(--body-line-height);}.elementor .button-ghost{/* Border colour comes from the button default; no resting shadow */
color: var(--ghost-text, var(--accent, var(--color-primary-brand-1)));
background-color: var(--surface, var(--color-white));
box-shadow: none;\n}.elementor .button-ghost:hover,.elementor .button-ghost:focus-visible{box-shadow:var(--box-shadow-h) var(--box-shadow-v-light) var(--box-shadow-b-light) var(--box-shadow-s) var(--color-box-shadow-light);/* Restated over the button default hover fill */
background-color: var(--hover-tint, var(--color-primary-light-2));
border-color: var(--accent, var(--color-primary-brand-1));\n}.elementor .button-ghost:focus{/* Mouse-focus shadows: none at rest, light on hover */
&:not(:focus-visible) {
box-shadow: none;
}
&:not(:focus-visible):hover {
box-shadow: var(--box-shadow-h) var(--box-shadow-v-light) var(--box-shadow-b-light) var(--box-shadow-s) var(--color-box-shadow-light);
}\n}.elementor .button-accent{color: var(--on-accent-alt, var(--color-secondary-dark-1));
background-color: var(--accent-alt, var(--color-secondary-brand-1));
border-color: var(--accent-alt, var(--color-secondary-brand-1));\n}.elementor .button-accent:hover,.elementor .button-accent:focus-visible{background-color: color-mix(in srgb, var(--accent-alt, var(--color-secondary-brand-1)), var(--color-black) var(--color-mix-hover-shift));
border-color: color-mix(in srgb, var(--accent-alt, var(--color-secondary-brand-1)), var(--color-black) var(--color-mix-hover-shift));\n}.elementor .logo{width:auto;height:clamp(2rem, .9091vw + 1.7955rem, 2.5rem);border-radius:0px;}.elementor .success{color: var(--success-color, var(--color-success-1));
border-color: var(--success-color, var(--color-success-1));\n}.elementor .error{color: var(--error-color, var(--color-error-1));
border-color: var(--error-color, var(--color-error-1));\n}.elementor .divider-spacer-s{height:var(--spacing-s);align-self:stretch;/* Cancels the Elementor base divider fill */
background-color: transparent;\n}.elementor .divider-s{height:var(--border-s);/* Override per element with --divider-color */
background-color: var(--divider-color, var(--accent, var(--color-primary-brand-1)));
\n}.elementor .divider-m{height:var(--border-m);/* Override per element with --divider-color */
background-color: var(--divider-color, var(--accent, var(--color-primary-brand-1)));\n}.elementor .loop{gap:var(--spacing-l);}.elementor .svg-icon-s{width:auto;height:1.1rem;}.elementor .svg-icon-m{width:auto;height:2.1rem;}.elementor .svg-icon-xl{width:auto;height:4.1rem;}.elementor .svg-icon-fill{/* Override per element with --icon-fill-color */

* {
fill: var(--icon-fill-color, var(--accent, var(--color-primary-brand-1)));
stroke: var(--icon-fill-color, var(--accent, var(--color-primary-brand-1)));
}\n}.elementor .svg-icon-outline{aspect-ratio:1 / 1;/* Override per element with --icon-outline-color */

container-type: inline-size;

 * {
fill: none;
color: var(--icon-outline-color, var(--accent, var(--color-primary-brand-1)))
}

svg {
      stroke-width: clamp(2px, 2.68cqw + 1.5px, 10px)
}
 svg :is(path, circle, rect, line, polyline, polygon, ellipse) {
      vector-effect: non-scaling-stroke;
}\n}.elementor .svg-service-area{width:13%;height:auto;position:absolute;opacity:25%;transform-origin:50% 100% 0px;color: var(--accent, var(--color-primary-brand-1)); /* botanicals follow the section context */\n}.elementor .bg-central-orbs{/* Override per element with --animated-bg-color-1/2 and --animated-bg-strength-1/2 */\n}.elementor .bg-rotating-orbs{/* Override per element with --animated-bg-color-1/2 and --animated-bg-strength-1/2 */\n}.elementor .bg-corner-orbs{/* Override per element with --animated-bg-color-1/2 and --animated-bg-strength-1/2 */\n}.elementor .no-link-decoration{/* Hook only, no styles: the kit link-highlight rule excludes this class. Do not delete. */\n}.elementor .scrim-gradient{background-image: linear-gradient(90deg, var(--photo-scrim-gradient, var(--color-primary-photo-scrim-gradient-light)) 50%, transparent 100%);
border-top-color: color-mix(in srgb, color-mix(in srgb, var(--photo-scrim-gradient, var(--color-primary-photo-scrim-gradient-light)), var(--color-black) 10%) var(--surface-edge-alpha), transparent); /* own fill darkened 10% at the edge alpha; 0% on Flat, so the edge is transparent there */\n}.elementor .scrim-flat{background-color: var(--photo-scrim, var(--color-primary-photo-scrim-flat-light));
border-top-color: color-mix(in srgb, color-mix(in srgb, var(--photo-scrim, var(--color-primary-photo-scrim-flat-light)), var(--color-black) 10%) var(--surface-edge-alpha), transparent); /* own fill darkened 10% at the edge alpha; 0% on Flat, so the edge is transparent there */\n}.elementor .grid-bleed-3{column-gap:0px;padding-block-start:0px;padding-block-end:0px;padding-inline-start:0px;padding-inline-end:0px;border-block-start-width:var(--border-s);border-block-end-width:0px;border-inline-start-width:0px;border-inline-end-width:0px;border-style:solid;display:grid;row-gap:0px;grid-template-columns:var(--edge) var(--mid) var(--edge);grid-template-rows:auto;align-items:stretch;/* Full-bleed 3-col grid with edge-to-edge hairlines (3 desktop+tablet / 1 mobile). Dividers are cell borders, so no gap or padding; edge cells carry the page gutter (section-m maths) and the tracks are sized so every cell has the same content width. nth-child matches .e-con and the component wrapper, so editor-injected nodes do not shift the count. Override the line colour with --grid-divider-color. */
--n: 3;
container-type: inline-size;
--divider: var(--grid-divider-color, var(--surface-border, var(--color-primary-light-3)));
/* Cell-side maths in cqi. Equal content width per cell: c = (width - 2 gutters - 2(n-1) insets) / n */
--gutter: max(5cqi, calc((100cqi - var(--boxed-width-m)) / 2));
--inset: max(1rem, calc((100cqi - 2 * var(--gutter)) * 0.025)); /* half a 5% grid gap, so content widths match grid-N + grid-dividers */
--c: calc((100cqi - 2 * var(--gutter) - 2 * (var(--n) - 1) * var(--inset)) / var(--n));
/* Grid-side maths in % (cqi on tracks resolves against the viewport, not the grid). Edge tracks carry the gutter, inner tracks two insets */
--gutter-pct: max(5%, calc((100% - var(--boxed-width-m)) / 2));
--inset-pct: max(1rem, calc((100% - 2 * var(--gutter-pct)) * 0.025));
--c-pct: calc((100% - 2 * var(--gutter-pct) - 2 * (var(--n) - 1) * var(--inset-pct)) / var(--n));
--edge: calc(var(--c-pct) + var(--gutter-pct) + var(--inset-pct));
--mid: calc(var(--c-pct) + 2 * var(--inset-pct));
border-block-start-color: var(--divider); /* width + style are native; colour is a var chain, so it lives here. Ranked above scrim-gradient */
> .e-con, > .elementor-widget-e-component > .e-con {
padding-block: clamp(1.25rem, var(--c) * 0.1, 2rem); /* card's 10%-of-width rhythm, floored/capped so stacked cells do not go airy */
padding-inline: var(--cell-ps, var(--inset)) var(--cell-pe, var(--inset));
border-inline-end: var(--cell-be, var(--border-s) solid var(--divider));
border-block-start: var(--cell-bt, 0) solid var(--divider);
}
> :nth-child(3n+1 of .e-con, .elementor-widget-e-component) { --cell-ps: var(--gutter); }
> :nth-child(3n of .e-con, .elementor-widget-e-component) { --cell-pe: var(--gutter); --cell-be: 0; }
> :nth-child(n+4 of .e-con, .elementor-widget-e-component) { --cell-bt: var(--border-s); }\n}.elementor .grid-bleed-4{column-gap:0px;padding-block-start:0px;padding-block-end:0px;padding-inline-start:0px;padding-inline-end:0px;border-block-start-width:var(--border-s);border-block-end-width:0px;border-inline-start-width:0px;border-inline-end-width:0px;border-style:solid;display:grid;row-gap:0px;grid-template-columns:var(--edge) var(--mid) var(--mid) var(--edge);grid-template-rows:auto;align-items:stretch;/* Full-bleed 4-col grid with edge-to-edge hairlines (4 desktop / 2 tablet+mobile). Dividers are cell borders, so no gap or padding; edge cells carry the page gutter (section-m maths) and the tracks are sized so every cell has the same content width. nth-child matches .e-con and the component wrapper, so editor-injected nodes do not shift the count. Override the line colour with --grid-divider-color. */
--n: 4;
container-type: inline-size;
--divider: var(--grid-divider-color, var(--surface-border, var(--color-primary-light-3)));
/* Cell-side maths in cqi. Equal content width per cell: c = (width - 2 gutters - 2(n-1) insets) / n */
--gutter: max(5cqi, calc((100cqi - var(--boxed-width-m)) / 2));
--inset: max(1rem, calc((100cqi - 2 * var(--gutter)) * 0.025)); /* half a 5% grid gap, so content widths match grid-N + grid-dividers */
--c: calc((100cqi - 2 * var(--gutter) - 2 * (var(--n) - 1) * var(--inset)) / var(--n));
/* Grid-side maths in % (cqi on tracks resolves against the viewport, not the grid). Edge tracks carry the gutter, inner tracks two insets */
--gutter-pct: max(5%, calc((100% - var(--boxed-width-m)) / 2));
--inset-pct: max(1rem, calc((100% - 2 * var(--gutter-pct)) * 0.025));
--c-pct: calc((100% - 2 * var(--gutter-pct) - 2 * (var(--n) - 1) * var(--inset-pct)) / var(--n));
--edge: calc(var(--c-pct) + var(--gutter-pct) + var(--inset-pct));
--mid: calc(var(--c-pct) + 2 * var(--inset-pct));
border-block-start-color: var(--divider); /* width + style are native; colour is a var chain, so it lives here. Ranked above scrim-gradient */
> .e-con, > .elementor-widget-e-component > .e-con {
padding-block: clamp(1.25rem, var(--c) * 0.1, 2rem); /* card's 10%-of-width rhythm, floored/capped so stacked cells do not go airy */
padding-inline: var(--cell-ps, var(--inset)) var(--cell-pe, var(--inset));
border-inline-end: var(--cell-be, var(--border-s) solid var(--divider));
border-block-start: var(--cell-bt, 0) solid var(--divider);
}
> :nth-child(4n+1 of .e-con, .elementor-widget-e-component) { --cell-ps: var(--gutter); }
> :nth-child(4n of .e-con, .elementor-widget-e-component) { --cell-pe: var(--gutter); --cell-be: 0; }
> :nth-child(n+5 of .e-con, .elementor-widget-e-component) { --cell-bt: var(--border-s); }\n}.elementor .tint{/* Static tinted fill for a panel or tile that is not a card or a scrim. --tint is set per context by the invert classes; shape stays on the element's native controls. Icons and body text are fine everywhere; accent-coloured text (headings) on a tint tile is not AA inside invert-primary-dark on Flat (3.2:1) or invert-secondary-dark on Glass (4.0:1). */
background-color: var(--tint, var(--color-primary-light-2));\n}.elementor .invert-primary-dark{/* Context map read by every colour consumer; set all 19 so a nested invert resets its parent */
--accent: var(--color-primary-brand-2); /* brand ink + fill */
--on-accent: var(--color-primary-dark-1); /* text on --accent */
--card-colored-fill: var(--color-primary-brand-2); /* card-colored fill */
--card-colored-ink: var(--color-primary-dark-1); /* text on card-colored */
--accent-alt: var(--color-secondary-brand-2); /* other-palette fill: button-accent, badges */
--on-accent-alt: var(--color-secondary-dark-1); /* text on --accent-alt */
--badge-dot: var(--color-primary-brand-1); /* badge dot: green reads better on amber */
--text-color: var(--color-primary-light-1); /* body/UI text */
--surface: var(--color-primary-dark-2); /* fields, pills, tabs, ghost bg, messages */
--card-surface: var(--color-primary-dark-2); /* card fill */
--surface-border: var(--color-primary-dark-3); /* resting field/pill border */
--hover-tint: var(--color-primary-dark-3); /* pill/ghost/menu hover bg */
--tint: var(--color-primary-dark-3); /* tint class fill */
--ghost-text: var(--color-primary-light-3); /* ghost button text */
--error-color: var(--color-error-2); /* .error, invalid fields */
--success-color: var(--color-success-2); /* .success */
--link-highlight: var(--color-primary-link); /* kit link bar */
--photo-scrim: var(--color-primary-photo-scrim-flat-dark); /* scrim-flat */
--photo-scrim-gradient: var(--color-primary-photo-scrim-gradient-dark); /* scrim-gradient */
/* --focus-ring and --icon-*-color fall back to --accent */

/* Container */
color: var(--text-color);
background-color: var(--color-primary-dark-1);

/* Material knobs by tone, so a nested invert resets its parent (light aliases live in the Customizer :root) */
--surface-alpha: var(--surface-alpha-dark);
--color-surface-edge: var(--color-surface-edge-dark);
--surface-highlight: var(--surface-highlight-dark);
\n}