.elementor-kit-31{--e-global-color-primary:#000000;--e-global-color-secondary:#000000;--e-global-color-text:#000000;--e-global-color-accent:#FFD217;--e-global-color-f7e8737:#013693;--e-global-color-6ee168a:#0A1F4D;--e-global-color-fdb37df:#F5C518;--e-global-color-a708989:#FFFFFF;--e-global-color-91fc81a:#EEF2FA;--e-global-color-a9f7eb2:#C9D5EC;--e-global-color-a73612b:#DCE3F0;--e-global-color-18b7c68:#FFFFFF;--e-global-color-4755f14:#141414;--e-global-color-6715ee8:#3D4659;--e-global-color-46e5264:#E1E7F2;--e-global-color-bcink01:#1B2233;--e-global-typography-79574e9-font-family:"Red Hat Display";--e-global-typography-79574e9-font-size:clamp(1.875rem, 1.2247rem + 3.1532vw, 4.0625rem);--e-global-typography-79574e9-font-weight:700;--e-global-typography-79574e9-line-height:clamp(2.4375rem, 1.6524rem + 3.8063vw, 5.0781rem);--e-global-typography-4633773-font-family:"Red Hat Display";--e-global-typography-4633773-font-size:clamp(1.625rem, 1.1419rem + 2.3423vw, 3.25rem);--e-global-typography-4633773-font-weight:700;--e-global-typography-4633773-line-height:clamp(2.125rem, 1.6939rem + 2.0901vw, 3.575rem);--e-global-typography-89e9fd6-font-family:"Red Hat Display";--e-global-typography-89e9fd6-font-size:clamp(1.5rem, 1.1841rem + 1.5315vw, 2.5625rem);--e-global-typography-89e9fd6-font-weight:700;--e-global-typography-89e9fd6-line-height:clamp(2.125rem, 1.8045rem + 1.5541vw, 3.2031rem);--e-global-typography-a15bb8d-font-family:"Red Hat Display";--e-global-typography-a15bb8d-font-size:clamp(1.375rem, 1.1706rem + 0.991vw, 2.0625rem);--e-global-typography-a15bb8d-font-weight:700;--e-global-typography-a15bb8d-line-height:clamp(1.625rem, 1.3723rem + 1.2252vw, 2.475rem);--e-global-typography-7e6018a-font-family:"Red Hat Display";--e-global-typography-7e6018a-font-size:clamp(1.1875rem, 1.1689rem + 0.0901vw, 1.25rem);--e-global-typography-7e6018a-font-weight:700;--e-global-typography-7e6018a-line-height:clamp(1.375rem, 1.3378rem + 0.1802vw, 1.5rem);--e-global-typography-e17cac7-font-family:"Red Hat Display";--e-global-typography-e17cac7-font-size:clamp(1rem, 0.9814rem + 0.0901vw, 1.0625rem);--e-global-typography-e17cac7-font-weight:700;--e-global-typography-e17cac7-line-height:clamp(1.25rem, 1.2426rem + 0.036vw, 1.275rem);--e-global-typography-3b094bd-font-family:"Plus Jakarta Sans";--e-global-typography-3b094bd-font-size:clamp(1rem, 0.9257rem + 0.3604vw, 1.25rem);--e-global-typography-3b094bd-line-height:clamp(1.375rem, 1.1892rem + 0.9009vw, 2rem);--e-global-typography-a8d3ae4-font-family:"Plus Jakarta Sans";--e-global-typography-a8d3ae4-font-size:clamp(0.9375rem, 0.8818rem + 0.2703vw, 1.125rem);--e-global-typography-a8d3ae4-line-height:clamp(1.3125rem, 1.1676rem + 0.7027vw, 1.8rem);--e-global-typography-eeb8350-font-family:"Plus Jakarta Sans";--e-global-typography-eeb8350-font-size:clamp(0.875rem, 0.8193rem + 0.2703vw, 1.0625rem);--e-global-typography-eeb8350-line-height:clamp(1.25rem, 1.1162rem + 0.6486vw, 1.7rem);--e-global-typography-2bc91fb-font-family:"Plus Jakarta Sans";--e-global-typography-2bc91fb-font-size:clamp(0.75rem, 0.7128rem + 0.1802vw, 0.875rem);--e-global-typography-2bc91fb-line-height:clamp(1.0625rem, 0.9622rem + 0.4865vw, 1.4rem);--e-global-typography-a0c6066-font-family:"Plus Jakarta Sans";--e-global-typography-a0c6066-font-size:clamp(0.6875rem, 0.6503rem + 0.1802vw, 0.8125rem);--e-global-typography-a0c6066-line-height:clamp(0.9375rem, 0.8297rem + 0.5225vw, 1.3rem);--e-global-typography-bcbtn01-font-family:"Plus Jakarta Sans";--e-global-typography-bcbtn01-font-size:clamp(0.875rem, 0.8193rem + 0.2703vw, 1.0625rem);--e-global-typography-bcbtn01-font-weight:700;--e-global-typography-bcbtn01-line-height:clamp(1.225rem, 1.147rem + 0.3784vw, 1.4875rem);--e-global-typography-bcq01-font-family:"Red Hat Display";--e-global-typography-bcq01-font-size:clamp(1.375rem, 1.1706rem + 0.991vw, 2.0625rem);--e-global-typography-bcq01-font-weight:400;--e-global-typography-bcq01-line-height:clamp(1.925rem, 1.6389rem + 1.3874vw, 2.8875rem);font-family:var( --e-global-typography-eeb8350-font-family ), DynaPuff;font-size:var( --e-global-typography-eeb8350-font-size );line-height:var( --e-global-typography-eeb8350-line-height );}.elementor-kit-31 button,.elementor-kit-31 input[type="button"],.elementor-kit-31 input[type="submit"],.elementor-kit-31 .elementor-button{background-color:var( --e-global-color-f7e8737 );font-family:var( --e-global-typography-eeb8350-font-family ), DynaPuff;font-size:var( --e-global-typography-eeb8350-font-size );line-height:var( --e-global-typography-eeb8350-line-height );color:var( --e-global-color-a708989 );border-style:solid;border-width:1px 1px 1px 1px;border-color:var( --e-global-color-f7e8737 );border-radius:9999px 9999px 9999px 9999px;padding:15px 39px 15px 39px;}.elementor-kit-31 button:hover,.elementor-kit-31 button:focus,.elementor-kit-31 input[type="button"]:hover,.elementor-kit-31 input[type="button"]:focus,.elementor-kit-31 input[type="submit"]:hover,.elementor-kit-31 input[type="submit"]:focus,.elementor-kit-31 .elementor-button:hover,.elementor-kit-31 .elementor-button:focus{background-color:var( --e-global-color-a708989 );color:var( --e-global-color-f7e8737 );border-style:solid;border-width:1px 1px 1px 1px;border-color:var( --e-global-color-f7e8737 );border-radius:9999px 9999px 9999px 9999px;}.elementor-kit-31 h1{font-family:var( --e-global-typography-79574e9-font-family ), DynaPuff;font-size:var( --e-global-typography-79574e9-font-size );font-weight:var( --e-global-typography-79574e9-font-weight );line-height:var( --e-global-typography-79574e9-line-height );}.elementor-kit-31 h2{font-family:var( --e-global-typography-4633773-font-family ), DynaPuff;font-size:var( --e-global-typography-4633773-font-size );font-weight:var( --e-global-typography-4633773-font-weight );line-height:var( --e-global-typography-4633773-line-height );}.elementor-kit-31 h3{font-family:var( --e-global-typography-89e9fd6-font-family ), DynaPuff;font-size:var( --e-global-typography-89e9fd6-font-size );font-weight:var( --e-global-typography-89e9fd6-font-weight );line-height:var( --e-global-typography-89e9fd6-line-height );}.elementor-kit-31 h4{font-family:var( --e-global-typography-a15bb8d-font-family ), DynaPuff;font-size:var( --e-global-typography-a15bb8d-font-size );font-weight:var( --e-global-typography-a15bb8d-font-weight );line-height:var( --e-global-typography-a15bb8d-line-height );}.elementor-kit-31 h5{font-family:var( --e-global-typography-7e6018a-font-family ), DynaPuff;font-size:var( --e-global-typography-7e6018a-font-size );font-weight:var( --e-global-typography-7e6018a-font-weight );line-height:var( --e-global-typography-7e6018a-line-height );}.elementor-kit-31 h6{font-family:var( --e-global-typography-e17cac7-font-family ), DynaPuff;font-size:var( --e-global-typography-e17cac7-font-size );font-weight:var( --e-global-typography-e17cac7-font-weight );line-height:var( --e-global-typography-e17cac7-line-height );}.elementor-kit-31 input:not([type="button"]):not([type="submit"]),.elementor-kit-31 textarea,.elementor-kit-31 .elementor-field-textual{border-style:solid;border-width:1px 1px 1px 1px;border-radius:5px 5px 5px 5px;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1440px;}.e-con{--container-max-width:1440px;--container-default-padding-top:0px;--container-default-padding-right:0px;--container-default-padding-bottom:0px;--container-default-padding-left:0px;}.elementor-widget:not(:last-child){--kit-widget-spacing:30px;}.elementor-element{--widgets-spacing:30px 30px;--widgets-spacing-row:30px;--widgets-spacing-column:30px;}{}h1.entry-title{display:var(--page-title-display);}.site-header{padding-inline-end:0px;padding-inline-start:0px;}@media(max-width:1366px){.elementor-kit-31{font-size:var( --e-global-typography-eeb8350-font-size );line-height:var( --e-global-typography-eeb8350-line-height );}.elementor-kit-31 h1{font-size:var( --e-global-typography-79574e9-font-size );line-height:var( --e-global-typography-79574e9-line-height );}.elementor-kit-31 h2{font-size:var( --e-global-typography-4633773-font-size );line-height:var( --e-global-typography-4633773-line-height );}.elementor-kit-31 h3{font-size:var( --e-global-typography-89e9fd6-font-size );line-height:var( --e-global-typography-89e9fd6-line-height );}.elementor-kit-31 h4{font-size:var( --e-global-typography-a15bb8d-font-size );line-height:var( --e-global-typography-a15bb8d-line-height );}.elementor-kit-31 h5{font-size:var( --e-global-typography-7e6018a-font-size );line-height:var( --e-global-typography-7e6018a-line-height );}.elementor-kit-31 h6{font-size:var( --e-global-typography-e17cac7-font-size );line-height:var( --e-global-typography-e17cac7-line-height );}.elementor-kit-31 button,.elementor-kit-31 input[type="button"],.elementor-kit-31 input[type="submit"],.elementor-kit-31 .elementor-button{font-size:var( --e-global-typography-eeb8350-font-size );line-height:var( --e-global-typography-eeb8350-line-height );}}@media(max-width:1024px){.elementor-kit-31{font-size:var( --e-global-typography-eeb8350-font-size );line-height:var( --e-global-typography-eeb8350-line-height );}.elementor-kit-31 h1{font-size:var( --e-global-typography-79574e9-font-size );line-height:var( --e-global-typography-79574e9-line-height );}.elementor-kit-31 h2{font-size:var( --e-global-typography-4633773-font-size );line-height:var( --e-global-typography-4633773-line-height );}.elementor-kit-31 h3{font-size:var( --e-global-typography-89e9fd6-font-size );line-height:var( --e-global-typography-89e9fd6-line-height );}.elementor-kit-31 h4{font-size:var( --e-global-typography-a15bb8d-font-size );line-height:var( --e-global-typography-a15bb8d-line-height );}.elementor-kit-31 h5{font-size:var( --e-global-typography-7e6018a-font-size );line-height:var( --e-global-typography-7e6018a-line-height );}.elementor-kit-31 h6{font-size:var( --e-global-typography-e17cac7-font-size );line-height:var( --e-global-typography-e17cac7-line-height );}.elementor-kit-31 button,.elementor-kit-31 input[type="button"],.elementor-kit-31 input[type="submit"],.elementor-kit-31 .elementor-button{font-size:var( --e-global-typography-eeb8350-font-size );line-height:var( --e-global-typography-eeb8350-line-height );}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1024px;}.e-con{--container-max-width:1024px;--container-default-padding-top:0px;--container-default-padding-right:0px;--container-default-padding-bottom:0px;--container-default-padding-left:0px;}}@media(max-width:767px){.elementor-kit-31{font-size:var( --e-global-typography-eeb8350-font-size );line-height:var( --e-global-typography-eeb8350-line-height );}.elementor-kit-31 h1{font-size:var( --e-global-typography-79574e9-font-size );line-height:var( --e-global-typography-79574e9-line-height );}.elementor-kit-31 h2{font-size:var( --e-global-typography-4633773-font-size );line-height:var( --e-global-typography-4633773-line-height );}.elementor-kit-31 h3{font-size:var( --e-global-typography-89e9fd6-font-size );line-height:var( --e-global-typography-89e9fd6-line-height );}.elementor-kit-31 h4{font-size:var( --e-global-typography-a15bb8d-font-size );line-height:var( --e-global-typography-a15bb8d-line-height );}.elementor-kit-31 h5{font-size:var( --e-global-typography-7e6018a-font-size );line-height:var( --e-global-typography-7e6018a-line-height );}.elementor-kit-31 h6{font-size:var( --e-global-typography-e17cac7-font-size );line-height:var( --e-global-typography-e17cac7-line-height );}.elementor-kit-31 button,.elementor-kit-31 input[type="button"],.elementor-kit-31 input[type="submit"],.elementor-kit-31 .elementor-button{font-size:var( --e-global-typography-eeb8350-font-size );line-height:var( --e-global-typography-eeb8350-line-height );}.elementor-section.elementor-section-boxed > .elementor-container{max-width:767px;}.e-con{--container-max-width:767px;--container-default-padding-top:0px;--container-default-padding-right:0px;--container-default-padding-bottom:0px;--container-default-padding-left:0px;}}@media(min-width:2400px){.elementor-kit-31{font-size:var( --e-global-typography-eeb8350-font-size );line-height:var( --e-global-typography-eeb8350-line-height );}.elementor-kit-31 h1{font-size:var( --e-global-typography-79574e9-font-size );line-height:var( --e-global-typography-79574e9-line-height );}.elementor-kit-31 h2{font-size:var( --e-global-typography-4633773-font-size );line-height:var( --e-global-typography-4633773-line-height );}.elementor-kit-31 h3{font-size:var( --e-global-typography-89e9fd6-font-size );line-height:var( --e-global-typography-89e9fd6-line-height );}.elementor-kit-31 h4{font-size:var( --e-global-typography-a15bb8d-font-size );line-height:var( --e-global-typography-a15bb8d-line-height );}.elementor-kit-31 h5{font-size:var( --e-global-typography-7e6018a-font-size );line-height:var( --e-global-typography-7e6018a-line-height );}.elementor-kit-31 h6{font-size:var( --e-global-typography-e17cac7-font-size );line-height:var( --e-global-typography-e17cac7-line-height );}.elementor-kit-31 button,.elementor-kit-31 input[type="button"],.elementor-kit-31 input[type="submit"],.elementor-kit-31 .elementor-button{font-size:var( --e-global-typography-eeb8350-font-size );line-height:var( --e-global-typography-eeb8350-line-height );}}/* Start custom CSS *//* =============================================================================
   IPS house Fluent Forms stylesheet                    v1.1, 2026-10-16
   Lives in Elementor > Site Settings > Custom CSS, ONCE per site. Never pasted
   into a page or a widget: six copies on koren drifted into six different md5s
   and two variants that disagreed with each other, and each page looked right
   on its own.

   WHAT A SITE CHANGES: the variable block below, and nothing else. Everything
   after it is written against those variables.

   WHY THE VARIABLES ARE NOT BOUND TO KIT TOKENS. The kit ids are shared between
   clones but their MEANINGS are not: measured 2026-10-16, id 4755f14 is "Black"
   on the starter and "white" on south.dillevery.com, and 6715ee8 is "Text Color"
   on the starter and a gold button colour on south. A sheet bound to those ids
   inverts itself on a clone. The four SYSTEM ids (primary/secondary/text/accent)
   are stable by meaning but are still Elementor's untouched defaults on most of
   these sites, so they are used only as fallbacks behind a real value.
   ============================================================================= */

.fluentform{
  /* ---- the only block to edit per site ---------------------------------- */
  --ff-ink:     var(--e-global-color-text, #202020);  /* entered text, labels   */
  --ff-muted:   #5F6670;   /* placeholder: 5.3:1 on #fff, 4.9:1 on #F2F2F2      */
  --ff-line:    #D9DDE3;   /* control border                                    */
  --ff-field:   #FFFFFF;   /* control fill                                      */
  --ff-focus:   var(--e-global-color-text, #202020);  /* focus ring, checked    */
  --ff-error:   #B42318;   /* 5.7:1 on white. Fluent Forms' own #F56C6C is 2.9  */
  --ff-success: #0F7B3C;

  --ff-h:       56px;      /* ONE declared control height. Never left to        */
  --ff-h-sm:    52px;      /* line-height: a select does not inherit an         */
                           /* input's, so they drift (46 vs 58 on koren).       */
  --ff-pad-x:   16px;      /* text inset; the select arrow matches it           */
  --ff-radius:  8px;
  --ff-gap:     12px;      /* phone chooser to number box                       */
  --ff-ring:    2px;       /* focus ring width                                  */
  /* ----------------------------------------------------------------------- */

  --ff-pad-y: calc((var(--ff-h) - 1.4em - 2px) / 2);
}

/* ---- labels and the required asterisk ------------------------------------ */
.fluentform .ff-el-group{ margin-bottom: 20px; }
.fluentform .ff-el-input--label{ margin-bottom: 8px; }
.fluentform .ff-el-input--label label{ color: var(--ff-ink); font-weight: 600; }
/* the asterisk is decoration beside a word; screen readers get `required` from
   the input, so it is hidden from them rather than read as "star" */
.fluentform .ff-el-input--label.ff-el-is-required label:after{
  content: "*"; color: var(--ff-error); margin-left: 4px; speak: never;
}
.fluentform .ff-el-input--label.ff-el-is-required > label > span.ff-el-is-required{ display: none; }

/* ---- every text-like control, one height, one inset ----------------------- */
.fluentform .ff-el-form-control{
  box-sizing: border-box;
  height: var(--ff-h);
  padding: 0 var(--ff-pad-x);
  border: 1px solid var(--ff-line);
  border-radius: var(--ff-radius);
  background-color: var(--ff-field);
  color: var(--ff-ink);
  box-shadow: none;
  transition: border-color .2s ease, box-shadow .2s ease;
}
/* Fluent Forms' own rule is
   `select.ff-el-form-control:not([size]):not([multiple]){height:var(--fluentform-input-select-height,auto)}`
   at (0,3,1), which beats the shared rule above, so a select must DECLARE the
   same height rather than inherit it. */
.fluentform select.ff-el-form-control:not([size]):not([multiple]){ height: var(--ff-h); }
/* these size themselves and must keep doing so */
.fluentform textarea.ff-el-form-control,
.fluentform input[type="file"].ff-el-form-control{ height: auto; padding: 14px var(--ff-pad-x); }
.fluentform textarea.ff-el-form-control{ min-height: 140px; resize: vertical; }

/* ---- placeholder ---------------------------------------------------------- */
/* It must never be the same colour as entered text: on two sites it was set to
   the field's own text token at opacity 1, so an empty field read as a filled
   one. On a form with hidden labels the placeholder IS the label, so it stays
   above 4.5:1 rather than being faded away. */
.fluentform .ff-el-form-control::placeholder{ color: var(--ff-muted); opacity: 1; }

/* ---- focus ---------------------------------------------------------------- */
/* A ring, not a fill: the browser default belongs to no design system, and a
   colour-only change is invisible to anyone who cannot see that colour. */
.fluentform .ff-el-form-control:focus,
.fluentform .ff-el-form-control:focus-visible{
  border-color: var(--ff-focus);
  box-shadow: 0 0 0 var(--ff-ring) color-mix(in srgb, var(--ff-focus) 28%, transparent);
  outline: none;
}

/* ---- select: the arrow sits at the text inset, not against the edge -------- */
.fluentform select.ff-el-form-control{
  appearance: none; -webkit-appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'%3E%3Cpath d='M1 1.5 6 6.5l5-5' stroke='%235F6670' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right var(--ff-pad-x) center;
  background-size: 12px 8px;
  padding-right: calc(var(--ff-pad-x) * 2 + 12px);
}

/* ---- checkbox and radio ---------------------------------------------------- */
/* Drawn, because the browser default ignores the palette entirely. accent-color
   alone still leaves the box at the OS size and shape, so the control is drawn
   and the checkmark is a mask, which inherits the colour. */
.fluentform .ff-el-form-check{ display: flex; align-items: flex-start; gap: 10px; margin-bottom: 8px; }
.fluentform .ff-el-form-check label{ color: var(--ff-ink); cursor: pointer; }
.fluentform input[type="checkbox"],
.fluentform input[type="radio"]{
  appearance: none; -webkit-appearance: none;
  flex: 0 0 auto;
  width: 20px; height: 20px; margin: 1px 0 0;
  border: 1px solid var(--ff-line);
  background: var(--ff-field);
  cursor: pointer;
  transition: border-color .15s ease, background-color .15s ease;
}
.fluentform input[type="checkbox"]{ border-radius: 4px; }
.fluentform input[type="radio"]{ border-radius: 50%; }
.fluentform input[type="checkbox"]:hover,
.fluentform input[type="radio"]:hover{ border-color: var(--ff-focus); }
.fluentform input[type="checkbox"]:checked,
.fluentform input[type="radio"]:checked{
  background-color: var(--ff-focus); border-color: var(--ff-focus);
}
.fluentform input[type="checkbox"]:checked{
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='10' viewBox='0 0 12 10' fill='none'%3E%3Cpath d='M1 5l3.5 3.5L11 1.5' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: center; background-size: 12px 10px;
}
.fluentform input[type="radio"]:checked{
  box-shadow: inset 0 0 0 4px var(--ff-field);
}
.fluentform input[type="checkbox"]:focus-visible,
.fluentform input[type="radio"]:focus-visible{
  outline: var(--ff-ring) solid var(--ff-focus); outline-offset: 2px;
}

/* ---- phone field ----------------------------------------------------------- */
/* The country .elementor-kit-31 is a real <button>, and Site Settings > Theme Style >
   Buttons emits a bare `.elementor-kit-N button` rule at (0,1,1), so the site's
   own button styling paints it: measured as a 124x65 brand-coloured pill with
   the submit button's padding, sitting on top of the number. The .elementor-kit-31s here
   are (0,3,0) or more and win with no !important.
   House look (owner 2026-10-02): the chooser is its OWN box beside the number,
   same fill, border, radius and height as every other control, a 12px gap, and
   NO tint on hover or while the country list is open.
   Both class generations are covered: Fluent Forms 6.x ships the new
   iti__selected-country markup, older builds the iti__selected-flag one. */
.fluentform .iti{ display: flex; gap: var(--ff-gap); width: 100%; }
.fluentform .iti__country-container,
.fluentform .iti__flag-container{
  position: relative; order: -1; flex: 0 0 auto; padding: 0; right: auto;
}
.fluentform .iti .iti__selected-country,
.fluentform .iti .iti__selected-flag{
  box-sizing: border-box;
  height: var(--ff-h);
  padding: 0 12px;
  border: 1px solid var(--ff-line);
  border-radius: var(--ff-radius);
  background-color: var(--ff-field);
  color: var(--ff-ink);
  box-shadow: none;
  font: inherit;
}
/* intl-tel-input tints .iti__selected-country-primary with --iti-hover-color.
   Clear THAT element only. Do NOT zero the variable: it is also the keyboard
   highlight of the countries in the list, which has to stay. */
.fluentform .iti .iti__selected-country-primary,
.fluentform .iti .iti__selected-country:hover .iti__selected-country-primary,
.fluentform .iti .iti__selected-country[aria-expanded="true"] .iti__selected-country-primary,
.fluentform .iti .iti__selected-flag:hover,
.fluentform .iti .iti__selected-flag[aria-expanded="true"]{ background-color: transparent; }
.fluentform .iti .iti__selected-country:focus-visible,
.fluentform .iti .iti__selected-flag:focus-visible{
  outline: var(--ff-ring) solid var(--ff-focus); outline-offset: 2px;
}
/* The library writes padding-left inline once it knows the button's width, and
   inline beats a stylesheet, so the number box needs its own inset back. */
.fluentform .iti input[type="tel"].ff-el-form-control{
  flex: 1 1 auto; width: auto; padding-left: var(--ff-pad-x) !important;
}

/* ---- the country list and its search box ----------------------------------- */
/* Unstyled this is a bare white rectangle with a native scrollbar sitting over
   the form. */
.fluentform .iti__dropdown-content{
  border: 1px solid var(--ff-line);
  border-radius: var(--ff-radius);
  background: var(--ff-field);
  box-shadow: 0 10px 30px -12px rgba(0,0,0,.25);
  overflow: hidden;
}
.fluentform .iti__search-input{
  box-sizing: border-box;
  width: 100%;
  height: 44px;
  padding: 0 12px;
  border: 0; border-bottom: 1px solid var(--ff-line);
  background: var(--ff-field);
  color: var(--ff-ink);
  font: inherit;
}
.fluentform .iti__search-input::placeholder{ color: var(--ff-muted); opacity: 1; }
.fluentform .iti__search-input:focus{ outline: none; border-bottom-color: var(--ff-focus); }
.fluentform .iti__country-list{
  max-height: 232px;
  scrollbar-width: thin;
  scrollbar-color: var(--ff-line) transparent;
}
.fluentform .iti__country-list::-webkit-scrollbar{ width: 8px; }
.fluentform .iti__country-list::-webkit-scrollbar-thumb{
  background: var(--ff-line); border-radius: 99px;
}
.fluentform .iti__country{ padding: 9px 12px; color: var(--ff-ink); }
.fluentform .iti__country .iti__dial-code{ color: var(--ff-muted); }

/* ---- validation ------------------------------------------------------------ */
/* The error belongs under the control it is about. Fluent Forms can also collect
   every error into one block at the end of the form, which reads as a list of
   identical "This field is required" lines with nothing saying which field each
   one means; if that block appears, it is laid out as a real message rather than
   left as a bare stack. Set Form Settings > Layout > Error Message Placement to
   "inline" as well: this styles both, it cannot move them. */
.fluentform .ff-el-group .error,
.fluentform .ff-el-group .text-danger{
  display: block;
  margin-top: 6px;
  color: var(--ff-error);
  font-size: .875em;
  line-height: 1.4;
}
.fluentform .ff-el-is-error .ff-el-form-control{ border-color: var(--ff-error); }
.fluentform .ff-el-is-error .ff-el-form-control:focus{
  box-shadow: 0 0 0 var(--ff-ring) color-mix(in srgb, var(--ff-error) 28%, transparent);
}
/* An invalid checkbox or radio group turns EVERY option's text red by default,
   so a list of choices reads as a list of errors. The control keeps the error
   colour; the words it labels do not. */
.fluentform .ff-el-is-error .ff-el-form-check label{ color: var(--ff-ink); }
.fluentform .ff-el-is-error input[type="checkbox"],
.fluentform .ff-el-is-error input[type="radio"]{ border-color: var(--ff-error); }

.fluentform .ff-errors-in-stack{
  margin-top: 16px; padding: 14px 16px;
  border: 1px solid color-mix(in srgb, var(--ff-error) 40%, transparent);
  border-radius: var(--ff-radius);
  background: color-mix(in srgb, var(--ff-error) 6%, transparent);
}
.fluentform .ff-errors-in-stack .error{ margin: 0; }

/* ---- after submit ----------------------------------------------------------- */
.ff-message-success{
  color: var(--ff-success);
  border: 1px solid color-mix(in srgb, var(--ff-success) 35%, transparent);
  border-radius: var(--ff-radius);
  background: color-mix(in srgb, var(--ff-success) 7%, transparent);
  padding: 14px 16px;
}
/* On a dark section give the wrapper the class ff-on-dark: the success colour is
   taken from the body text otherwise and measured 1.41:1 on navy. */
.ff-on-dark .ff-message-success{
  color: #FFFFFF; border-color: rgba(255,255,255,.3); background: transparent;
}
.ff-on-dark .ff-message-success *{ color: inherit; }
.ff-on-dark .fluentform .ff-el-group .error{ color: #FF9B93; }

/* ---- phones ------------------------------------------------------------------ */
@media (max-width: 767px){
  .fluentform{ --ff-h: var(--ff-h-sm); --ff-pad-x: 14px; }
  .fluentform textarea.ff-el-form-control{ min-height: 120px; }
}

/* ---- reduced motion ----------------------------------------------------------- */
@media (prefers-reduced-motion: reduce){
  .fluentform .ff-el-form-control,
  .fluentform input[type="checkbox"],
  .fluentform input[type="radio"],
  .fluentform .iti .iti__selected-country{ transition: none; }
}
/* ---- field shape variants ------------------------------------------------------
   The vendor-control fixes above (phone chooser, country list, select arrow,
   checkbox, radio, errors, focus) are the same whatever the fields look like, so
   the field SHAPE is a variant rather than a fork of the sheet.

   Default: boxed, as on re.iconprosolutions.com.
   Underline: put the class ff-underline on the form's wrapper
   (Advanced > CSS Classes on the container holding the form widget).
   Everything else, including the chooser matching the fields, follows. */
.ff-underline .fluentform .ff-el-form-control{
  border: 0;
  border-bottom: 1px solid var(--ff-line);
  border-radius: 0;
  background-color: transparent;
  padding-left: 0; padding-right: 0;
}
.ff-underline .fluentform select.ff-el-form-control{
  background-position: right 0 center;
  padding-right: 20px;
}
.ff-underline .fluentform .ff-el-form-control:focus,
.ff-underline .fluentform .ff-el-form-control:focus-visible{
  border-bottom-color: var(--ff-focus);
  box-shadow: 0 1px 0 0 var(--ff-focus);
}
.ff-underline .fluentform .ff-el-is-error .ff-el-form-control{
  border-bottom-color: var(--ff-error);
}
.ff-underline .fluentform .ff-el-is-error .ff-el-form-control:focus{
  box-shadow: 0 1px 0 0 var(--ff-error);
}
/* the chooser keeps a box: an underlined flag reads as a broken field, and the
   number box needs a left edge to sit against */
.ff-underline .fluentform .iti .iti__selected-country,
.ff-underline .fluentform .iti .iti__selected-flag{
  border: 0;
  border-bottom: 1px solid var(--ff-line);
  border-radius: 0;
  background-color: transparent;
  padding: 0 8px 0 0;
}
.ff-underline .fluentform .iti input[type="tel"].ff-el-form-control{
  padding-left: 0 !important;
}
/* the textarea keeps its own box so the typing area is still obvious */
.ff-underline .fluentform textarea.ff-el-form-control{
  border: 1px solid var(--ff-line);
  border-radius: var(--ff-radius);
  padding: 14px var(--ff-pad-x);
}
/* ---- end field shape variants ---------------------------------------------------- */

/* ---- end IPS house Fluent Forms stylesheet ------------------------------------- */

/* ---- Berrien button effect (bcon-btn). Added 2026-10-27 from the Figma prototype.
   Put `bcon-btn` in the widget's CSS Classes and `data-roll|<the same label>` in its
   Custom Attributes. Add `bcon-btn--ondark` if the hover text is white. ---- */
.bcon-btn {
  position: relative;
  display: inline-flex;
  overflow: hidden;
  border-radius: 100px;
  --bcon-ease: cubic-bezier(.4,0,.2,1);
  --bcon-roll-color: var(--e-global-color-f7e8737);
}
.bcon-btn.bcon-btn--ondark { --bcon-roll-color: var(--e-global-color-18b7c68); }
.bcon-btn .elementor-button { overflow: hidden; }
.bcon-btn .elementor-button-content-wrapper {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-direction: row-reverse;      /* label first, disc on the right, as the design draws it */
}
/* --- 1. the label roll. The pseudo lives on .bcon-btn: that is the element carrying data-roll. --- */
.bcon-btn .elementor-button-text {
  display: inline-block;
  transition: transform .35s var(--bcon-ease);
}
.bcon-btn:hover .elementor-button-text,
.bcon-btn:focus-within .elementor-button-text {
  transform: translateY(-160%);
}
.bcon-btn::after {
  content: attr(data-roll);
  position: absolute;
  left: 0; right: 0; top: 0; bottom: 0;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  padding-left: 32px;
  transform: translateY(100%);
  transition: transform .35s var(--bcon-ease);
  font-family: var(--e-global-typography-bcbtn01-font-family), sans-serif;
  font-size: var(--e-global-typography-bcbtn01-font-size);
  font-weight: var(--e-global-typography-bcbtn01-font-weight);
  line-height: var(--e-global-typography-bcbtn01-line-height);
  color: var(--bcon-roll-color);
  white-space: nowrap;
  pointer-events: none;
}
.bcon-btn:hover::after,
.bcon-btn:focus-within::after { transform: translateY(0); }
/* a text-only button has no pill, so the copy should not be inset by the pill padding */
.bcon-btn:not(:has(.elementor-button-icon)) { border-radius: 0; }
.bcon-btn:not(:has(.elementor-button-icon))::after { padding-left: 0; }
/* --- 2. the 40px disc and the arrow slide --- */
.bcon-btn .elementor-button-icon {
  position: relative;
  flex: 0 0 auto;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: var(--e-global-color-91fc81a);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}
.bcon-btn .elementor-button-icon svg,
.bcon-btn .elementor-button-icon i {
  width: 13px;
  height: 13px;
  transition: transform .35s var(--bcon-ease);
}
.bcon-btn:hover .elementor-button-icon svg,
.bcon-btn:hover .elementor-button-icon i,
.bcon-btn:focus-within .elementor-button-icon svg,
.bcon-btn:focus-within .elementor-button-icon i { transform: translateX(32px); }
.bcon-btn .elementor-button-icon::after {
  content: "";
  position: absolute;
  left: 50%; top: 50%;
  width: 13px; height: 13px;
  margin: -6.5px 0 0 -6.5px;
  background: var(--e-global-color-6ee168a);
  -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%222.5%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M5%2012h14M13%206l6%206-6%206%22%2F%3E%3C%2Fsvg%3E") center / 13px 13px no-repeat;
  mask: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%222.5%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M5%2012h14M13%206l6%206-6%206%22%2F%3E%3C%2Fsvg%3E") center / 13px 13px no-repeat;
  transform: translateX(-32px);
  transition: transform .35s var(--bcon-ease);
}
.bcon-btn:hover .elementor-button-icon::after,
.bcon-btn:focus-within .elementor-button-icon::after { transform: translateX(0); }
/* Reduced motion gets the END STATE, not nothing: the affordance stays visible. */
@media (prefers-reduced-motion: reduce) {
  .bcon-btn .elementor-button-text,
  .bcon-btn::after,
  .bcon-btn .elementor-button-icon svg,
  .bcon-btn .elementor-button-icon i,
  .bcon-btn .elementor-button-icon::after { transition: none; }
}

/* --- bcon-btn corrections, owner-reported 2026-10-28 ---
   5. the roll-up copy (::after) spans the WHOLE button, so on hover it ran under the
      40px disc. The disc is opaque, so lifting it above the pseudo hides the overlap.
   6. the arrow <svg> inherits currentColor, which is WHITE on the blue button, sitting
      on a light disc. State the arrow colour so it never depends on the label. --- */
.bcon-btn::after { z-index: 1; }
.bcon-btn .elementor-button-icon { z-index: 2; }
.bcon-btn .elementor-button-icon svg,
.bcon-btn .elementor-button-icon i { color: var(--e-global-color-6ee168a); fill: currentColor; }

/* --- bcon-btn wrap + roll inset, 2026-10-28 ---
   The pill label wrapped to a second line, which pushed the button to 68px and put the
   second line beside the disc. Pills never wrap. Measured on every pill: padding 32/10,
   disc 40, so the distance from the button's right edge to the disc's left edge is 50px.
   The roll-up copy stops there instead of running underneath. --- */
.bcon-btn { flex-shrink: 0; }
.bcon-btn .elementor-button-text { white-space: nowrap; }
.bcon-btn::after { right: 50px; }
.bcon-btn:not(:has(.elementor-button-icon))::after { right: 0; }

/* --- bcon-btn--discdark, 2026-10-28. White-filled button with a DARK disc and a white
   arrow (Events hero "Donate", Events CTA "Donate"). Elementor has no icon-background
   control; the disc is this stylesheet's, so the variant has to live here. --- */
.bcon-btn.bcon-btn--discdark .elementor-button-icon {
  background: var(--e-global-color-6ee168a);
}
.bcon-btn.bcon-btn--discdark .elementor-button-icon svg,
.bcon-btn.bcon-btn--discdark .elementor-button-icon i {
  color: var(--e-global-color-18b7c68);
}
.bcon-btn.bcon-btn--discdark .elementor-button-icon::after {
  background: var(--e-global-color-18b7c68);
}/* End custom CSS */