.elementor-kit-4{--e-global-color-primary:#F69622;--e-global-color-secondary:#F8F8F8;--e-global-color-text:#7A7A7A;--e-global-color-accent:#61CE70;--e-global-color-6b20293:#F69622;--e-global-color-d682006:#000000;--e-global-color-03b6676:#13294B;--e-global-color-6f2fd43:#FFFFFF;--e-global-typography-primary-font-family:"Merriweather";--e-global-typography-primary-font-size:50px;--e-global-typography-primary-font-weight:700;--e-global-typography-primary-line-height:65px;--e-global-typography-primary-letter-spacing:0px;--e-global-typography-primary-word-spacing:0px;--e-global-typography-secondary-font-family:"Open Sans";--e-global-typography-secondary-font-size:25px;--e-global-typography-secondary-font-weight:700;--e-global-typography-secondary-line-height:25px;--e-global-typography-text-font-family:"Open Sans";--e-global-typography-text-font-size:30px;--e-global-typography-text-font-weight:400;--e-global-typography-accent-font-family:"Open Sans";--e-global-typography-accent-font-size:24px;--e-global-typography-accent-font-weight:500;--e-global-typography-e988aea-font-family:"Merriweather";--e-global-typography-e988aea-font-size:55px;--e-global-typography-e988aea-font-weight:700;--e-global-typography-e988aea-line-height:65px;--e-global-typography-e988aea-letter-spacing:0px;--e-global-typography-e988aea-word-spacing:0px;}.elementor-kit-4 e-page-transition{background-color:#FFBC7D;}.elementor-kit-4 label{color:var( --e-global-color-d682006 );}.elementor-kit-4 input:not([type="button"]):not([type="submit"]),.elementor-kit-4 textarea,.elementor-kit-4 .elementor-field-textual{color:#00000000;accent-color:#00000000;background-color:#00000000;border-style:solid;border-width:1px 1px 1px 1px;border-color:var( --e-global-color-d682006 );}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1140px;}.e-con{--container-max-width:1140px;}.elementor-widget:not(:last-child){--kit-widget-spacing:20px;}.elementor-element{--widgets-spacing:20px 20px;--widgets-spacing-row:20px;--widgets-spacing-column:20px;}{}h1.entry-title{display:var(--page-title-display);}.site-header .site-branding{flex-direction:column;align-items:stretch;}.site-header{padding-inline-end:0px;padding-inline-start:0px;}.site-footer .site-branding{flex-direction:column;align-items:stretch;}@media(max-width:1024px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:1024px;}.e-con{--container-max-width:1024px;}}@media(max-width:767px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:767px;}.e-con{--container-max-width:767px;}}
/* Start custom CSS *//* ===== MGI FLUID TYPE SCALE - GLOBAL TOKENS  =====
   Defines the six type roles for page content on every page.
   The :not() rules deliberately exclude the header template (334) and the
   footer template (338) - those keep the fixed sizes they have today.
   Text scales fluidly between a 390px and a 1440px viewport, flat outside.
   To revert the whole site: delete from this comment to the end of the file. */

.elementor:not(.elementor-334):not(.elementor-338) {
  --mgi-display:    clamp(30px, 22.7px + 2.04vw, 52px);
  --mgi-heading:    clamp(26px, 22.7px + 0.93vw, 36px);
  --mgi-subheading: clamp(20px, 18.7px + 0.37vw, 24px);
  --mgi-lead:       clamp(17px, 15.3px + 0.46vw, 22px);
  --mgi-body:       clamp(16px, 15.3px + 0.19vw, 18px);
  --mgi-ui:         clamp(15px, 14.7px + 0.09vw, 16px);
  --mgi-label:      clamp(11px, 10.7px + 0.09vw, 12px);
  --mgi-measure:    min(70ch, 100%);

  --e-global-typography-e988aea-font-size:     var(--mgi-display);
  --e-global-typography-e988aea-line-height:   1.15;
  --e-global-typography-primary-font-size:     var(--mgi-heading);
  --e-global-typography-primary-line-height:   1.2;
  --e-global-typography-text-font-size:        var(--mgi-body);
  --e-global-typography-text-line-height:      1.6;
  --e-global-typography-accent-font-size:      var(--mgi-ui);
  --e-global-typography-accent-line-height:    1.4;
  --e-global-typography-secondary-font-size:   var(--mgi-lead);
  --e-global-typography-secondary-line-height: 1.5;
}

.e-form-base label {
  color: #1a1a1a !important;
  font-weight: 600;
  font-size: 13px;
  letter-spacing: 0.5px;
}

.e-form-base input.e-form-input-base,
.e-form-base textarea.e-form-textarea-base {
  background-color: #ffffff !important;
  border: 1px solid rgba(0,0,0,0.2) !important;
  border-radius: 4px !important;
  color: #1a1a1a !important;
  transition: border-color 0.2s ease, box-shadow 0.2s ease !important;
}

.e-form-base input.e-form-input-base:focus,
.e-form-base textarea.e-form-textarea-base:focus {
  border-color: #f59422 !important;
  outline: none !important;
  box-shadow: 0 0 0 3px rgba(245,148,34,0.15) !important;
}

.e-form-base input.e-form-input-base::placeholder,
.e-form-base textarea.e-form-textarea-base::placeholder {
  color: rgba(0,0,0,0.35) !important;
}

.e-form-base input[type="checkbox"] {
  appearance: none !important;
  -webkit-appearance: none !important;
  width: 18px !important;
  height: 18px !important;
  min-width: 18px !important;
  border: 2px solid rgba(0,0,0,0.25) !important;
  border-radius: 4px !important;
  background-color: #ffffff !important;
  cursor: pointer !important;
  vertical-align: middle !important;
  margin-right: 8px !important;
  transition: border-color 0.2s ease, background-color 0.2s ease !important;
}

.e-form-base input[type="checkbox"]:hover:not(:checked) {
  border-color: rgba(245,148,34,0.6) !important;
}

.e-form-base input[type="checkbox"]:checked {
  background-color: #f59422 !important;
  border-color: #f59422 !important;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='white' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round' d='M3 8.5l3 3 7-7'/%3e%3c/svg%3e") !important;
  background-repeat: no-repeat !important;
  background-position: center !important;
  background-size: 11px !important;
}

.e-form-base .e-radio-label,
.e-form-base .e-checkbox-label {
  color: #1a1a1a !important;
  cursor: pointer !important;
  vertical-align: middle !important;
}

.e-form-base .e-form-checkbox-row.ef-selected {
  background-color: rgba(245,148,34,0.08) !important;
  border-radius: 4px !important;
  transition: background-color 0.2s ease !important;
}

.e-form-base .e-form-checkbox-row.ef-selected .e-checkbox-label {
  color: #f59422 !important;
  font-weight: 600 !important;
}

#e-form-other-text {
  display: none !important;
  margin-top: 10px !important;
}

#e-form-other-text {
  display: block !important;
}

/* ===== PHONE SAFETY GUTTER  =====
   Text and buttons must never sit flush against the screen edge on a phone.
   Applied to the WIDGETS, not to sections - section backgrounds, images, card
   faces and the full-bleed carousel all stay edge to edge; only copy is inset.

   margin-inline, not padding-inline: padding would overwrite a widget's own
   inline padding (it would have flattened the orange pill's 32px inset).

   Keyed on .e-con.e-parent (Elementor's marker for a TOP-LEVEL container)
   rather than a direct-child chain from the page wrapper: the editor inserts
   an .elementor-section-wrap div that the frontend does not, so a
   "> .e-con" chain matches live but silently fails in the editor.

   Only widgets sitting directly in a section, or one container deep (hero
   columns, split layouts), are inset. Anything deeper is inside a card that
   already carries its own padding. */
@media (max-width: 767px) {
  .elementor:not(.elementor-334):not(.elementor-338) .e-con.e-parent > .e-con-inner > :is(.elementor-widget-heading, .elementor-widget-text-editor, .elementor-widget-button),
  .elementor:not(.elementor-334):not(.elementor-338) .e-con.e-parent > .e-con-inner > .e-con > :is(.elementor-widget-heading, .elementor-widget-text-editor, .elementor-widget-button),
  .elementor:not(.elementor-334):not(.elementor-338) .e-con.e-parent.e-con-full > :is(.elementor-widget-heading, .elementor-widget-text-editor, .elementor-widget-button),
  .elementor:not(.elementor-334):not(.elementor-338) .e-con.e-parent.e-con-full > .e-con > :is(.elementor-widget-heading, .elementor-widget-text-editor, .elementor-widget-button) {
    margin-inline: 18px;
  }
}

/* === MGI TEXT FLOW — one vertical rhythm for headings, body text and bullets (2026-09-16) ===
   --mgi-flow is the ONLY spacing between adjacent text elements: heading->body, body->body,
   and body->bullets. Between individual bullet items the gap is ZERO: bullets follow the body
   text's line rhythm (see rule 5). 16px on phones, 18px at 1440, 24px at 1920+.
   Line-height: headings 1.2, body text and bullets 1.55.
   Bullet icons sit on the FIRST line of their item, never centred across a wrapped item. */
.elementor:not(.elementor-334):not(.elementor-338) {
  --mgi-flow: clamp(12px, 0.9vw, 16px);
}

/* 1. Line-height. Selectors repeat a class on purpose: several pages' Custom CSS pinned local
   line-heights at 5-class specificity, and this rule must outrank them. */
.elementor:not(.elementor-334):not(.elementor-338) .elementor-widget-heading .elementor-heading-title.elementor-heading-title.elementor-heading-title,
.elementor:not(.elementor-334):not(.elementor-338) .e-heading-base.e-heading-base.e-heading-base,
.elementor:not(.elementor-334):not(.elementor-338) .elementskit-infobox .elementskit-info-box-title {
  line-height: 1.2;
}
.elementor:not(.elementor-334):not(.elementor-338) .elementor-widget-text-editor.elementor-widget-text-editor,
.elementor:not(.elementor-334):not(.elementor-338) .elementor-widget-text-editor.elementor-widget-text-editor.elementor-widget-text-editor :is(p, li),
.elementor:not(.elementor-334):not(.elementor-338) .e-paragraph-base.e-paragraph-base,
.elementor:not(.elementor-334):not(.elementor-338) .elementor-widget-icon-list .elementor-icon-list-item .elementor-icon-list-text,
.elementor:not(.elementor-334):not(.elementor-338) .elementskit-infobox .box-body p {
  line-height: 1.6;
}

/* 2. Text elements carry no outer margin of their own; spacing comes from the flow below */
.elementor:not(.elementor-334):not(.elementor-338) :is(.elementor-widget-heading, .elementor-widget-text-editor, .elementor-widget-icon-list).elementor-element,
.elementor:not(.elementor-334):not(.elementor-338) :is(.e-heading-base, .e-paragraph-base):is(.e-heading-base, .e-paragraph-base) {
  margin-block: 0;
}
.elementor:not(.elementor-334):not(.elementor-338) .elementor-widget-heading .elementor-heading-title,
.elementor:not(.elementor-334):not(.elementor-338) .elementor-widget-text-editor :is(p, ul, ol, h1, h2, h3, h4, h5, h6) {
  margin-block: 0;
}

/* 3. Between sibling text elements.
   Flex/grid containers: the container's row gap IS the flow (set on the var Elementor reads, and on gap itself). */
.elementor:not(.elementor-334):not(.elementor-338) :is(.e-con, .e-con-inner):not(.e-grid):not(.e-atomic-element):has(> :is(.elementor-widget-heading, .elementor-widget-text-editor, .elementor-widget-icon-list, .e-heading-base, .e-paragraph-base) + :is(.elementor-widget-heading, .elementor-widget-text-editor, .elementor-widget-icon-list, .e-heading-base, .e-paragraph-base)) {
  --row-gap: var(--mgi-flow);
  row-gap: var(--mgi-flow);
}
/* Legacy columns and atomic flexboxes carry no gap of their own: use a top margin on the second element */
.elementor:not(.elementor-334):not(.elementor-338) :is(.elementor-widget-wrap, .e-atomic-element) > :is(.elementor-widget-heading, .elementor-widget-text-editor, .elementor-widget-icon-list, .e-heading-base, .e-paragraph-base) + :is(.elementor-widget-heading, .elementor-widget-text-editor, .elementor-widget-icon-list, .e-heading-base, .e-paragraph-base) {
  margin-block-start: var(--mgi-flow);
}

/* 4. Inside a text block: paragraph -> paragraph / list, and list items */
.elementor:not(.elementor-334):not(.elementor-338) .elementor-widget-text-editor :is(p, ul, ol, h1, h2, h3, h4, h5, h6) + :is(p, ul, ol, h1, h2, h3, h4, h5, h6),
.elementor:not(.elementor-334):not(.elementor-338) .elementskit-infobox .elementskit-info-box-title + * {
  margin-block-start: var(--mgi-flow);
}
.elementor:not(.elementor-334):not(.elementor-338) .elementskit-infobox .elementskit-info-box-title {
  margin-block-end: 0;
}

/* 5. Bullet lists (Icon List widget, stacked layout only — inline lists untouched) */
.elementor:not(.elementor-334):not(.elementor-338) .elementor-widget-icon-list .elementor-icon-list-items:not(.elementor-inline-items) > .elementor-icon-list-item.elementor-icon-list-item {
  padding-block: 0;
  margin-block: 0;
}
.elementor:not(.elementor-334):not(.elementor-338) .elementor-widget-icon-list .elementor-icon-list-items:not(.elementor-inline-items) > .elementor-icon-list-item.elementor-icon-list-item + .elementor-icon-list-item {
  /* Bullets are pitched like lines of body text (Austin, 2026-09-17): no gap between items, so
     bullet-to-bullet spacing equals the 1.6 line-height, exactly like a wrapped paragraph. */
  margin-block-start: 0;
}

/* 6. Bullet icon on the FIRST line of its item (Austin's rule, 2026-09-16).
   Uses the Icon List widget's own native controls, which write these two variables:
     Style > Icon > Vertical Alignment      -> --icon-vertical-align   (Start)
     Style > Icon > Adjust Vertical Position -> --icon-vertical-offset (custom calc)
   Offset = (first-line height - icon size) / 2 = (1.6 x text font-size - icon size) / 2.
   Elementor writes --icon-vertical-offset: 0px onto every Icon List widget, so the OFFSET cannot be
   defaulted here - set it in each widget's panel (custom unit), using that widget's own font variable:
     calc((1.6 * var(--e-global-typography-text-font-size) - var(--e-icon-list-icon-size)) / 2)
   This block only defaults the ALIGNMENT to Start; :where() keeps it at zero specificity. */
:where(.elementor:not(.elementor-334):not(.elementor-338) .elementor-widget-icon-list) {
  --icon-vertical-align: flex-start;
}


/* ===== MGI RESPONSIVE PATTERNS - 2026-09-21 =====
   Column counts come from each row's own Grid controls: 3 across desktop, 2 at 1200 and at 1024,
   1 at 767. Set the row's Align Items to Stretch so cards in a row share a height.

   THE ORPHAN. A row of three in a two-column band leaves the third card under the first with a hole
   beside it. Put the class .mgi-span-centre on that third card (Advanced > CSS Classes) and it
   centres across both columns at one column's width instead.
   Deliberately a class on the card rather than a :last-child rule: Elementor's grids also contain
   shape dividers and editor chrome, so counting children is unreliable.
   A row of four needs nothing - 2 x 2 is balanced. */
@media (min-width: 768px) and (max-width: 1200px) {
  .elementor:not(.elementor-334):not(.elementor-338) .mgi-span-centre.mgi-span-centre {
    /* doubled class: the page CSS that sets width:100% on the cards is 4 classes deep */
    grid-column: 1 / -1;
    width: calc(50% - 16px);
    justify-self: center;
  }
}/* End custom CSS */