/*
 * Display improvements on top of the exact copy of the live site.
 * Remove this file's link in src/layouts/Base.astro to return to the exact copy.
 * The visual parity check blocks this file, so it still compares that copy with live.
 */

/* Hero: header plus hero fill the visible screen, whatever its height.
   The hero still grows when its text needs more room, so nothing is cut off. */
:root {
  --bc-header: 133px;
}
@media (max-width: 1024px) {
  :root { --bc-header: 173px; }
}
@media (max-width: 767px) {
  :root { --bc-header: 149px; }
}

.elementor-element.elementor-element-a582d0c,
.elementor-element.elementor-element-46b87cf,
.elementor-element.elementor-element-c90c848,
.elementor-element.elementor-element-ab752c0,
.elementor-element.elementor-element-79544d5,
.elementor-element.elementor-element-8f4ad30 {
  min-height: calc(100vh - var(--bc-header)) !important;
  min-height: calc(100svh - var(--bc-header)) !important;
}

/* Phones and tablets: hero content centred, both ways. */
@media (max-width: 1024px) {
  /* Menu icon: the recommended tap size, up from 33px. */
  .elementor-menu-toggle {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    min-width: 44px !important;
    min-height: 44px !important;
    box-sizing: border-box;
    touch-action: manipulation;
  }
  /* An empty container below the content would otherwise push it above centre. */
  .elementor-element.elementor-element-a582d0c > .e-con-inner > .e-con:not(:has(.elementor-widget)),
  .elementor-element.elementor-element-46b87cf > .e-con-inner > .e-con:not(:has(.elementor-widget)),
  .elementor-element.elementor-element-c90c848 > .e-con-inner > .e-con:not(:has(.elementor-widget)),
  .elementor-element.elementor-element-ab752c0 > .e-con-inner > .e-con:not(:has(.elementor-widget)),
  .elementor-element.elementor-element-79544d5 > .e-con-inner > .e-con:not(:has(.elementor-widget)),
  .elementor-element.elementor-element-8f4ad30 > .e-con-inner > .e-con:not(:has(.elementor-widget)) {
    display: none !important;
  }
  /* The headline box was narrower than the text below it, which pulled it off centre. */
  .elementor-element.elementor-element-a582d0c .elementor-widget-heading,
  .elementor-element.elementor-element-46b87cf .elementor-widget-heading,
  .elementor-element.elementor-element-c90c848 .elementor-widget-heading,
  .elementor-element.elementor-element-ab752c0 .elementor-widget-heading,
  .elementor-element.elementor-element-79544d5 .elementor-widget-heading,
  .elementor-element.elementor-element-8f4ad30 .elementor-widget-heading {
    width: 100% !important;
    max-width: 100% !important;
  }
  .elementor-element.elementor-element-a582d0c > .e-con-inner,
  .elementor-element.elementor-element-46b87cf > .e-con-inner,
  .elementor-element.elementor-element-c90c848 > .e-con-inner,
  .elementor-element.elementor-element-ab752c0 > .e-con-inner,
  .elementor-element.elementor-element-79544d5 > .e-con-inner,
  .elementor-element.elementor-element-8f4ad30 > .e-con-inner {
    flex-direction: column !important;
    flex-wrap: nowrap !important;
    justify-content: center !important;
    align-items: center !important;
  }
  .elementor-element.elementor-element-a582d0c > .e-con-inner > .e-con,
  .elementor-element.elementor-element-46b87cf > .e-con-inner > .e-con,
  .elementor-element.elementor-element-c90c848 > .e-con-inner > .e-con,
  .elementor-element.elementor-element-ab752c0 > .e-con-inner > .e-con,
  .elementor-element.elementor-element-79544d5 > .e-con-inner > .e-con,
  .elementor-element.elementor-element-8f4ad30 > .e-con-inner > .e-con {
    flex: 0 0 auto !important;
    width: 100% !important;
  }
  .elementor-element-a582d0c .elementor-widget-text-editor, .elementor-element-a582d0c .elementor-widget-text-editor p, .elementor-element-a582d0c .elementor-widget-button,
  .elementor-element-46b87cf .elementor-widget-text-editor, .elementor-element-46b87cf .elementor-widget-text-editor p, .elementor-element-46b87cf .elementor-widget-button,
  .elementor-element-c90c848 .elementor-widget-text-editor, .elementor-element-c90c848 .elementor-widget-text-editor p, .elementor-element-c90c848 .elementor-widget-button,
  .elementor-element-ab752c0 .elementor-widget-text-editor, .elementor-element-ab752c0 .elementor-widget-text-editor p, .elementor-element-ab752c0 .elementor-widget-button,
  .elementor-element-79544d5 .elementor-widget-text-editor, .elementor-element-79544d5 .elementor-widget-text-editor p, .elementor-element-79544d5 .elementor-widget-button,
  .elementor-element-8f4ad30 .elementor-widget-text-editor, .elementor-element-8f4ad30 .elementor-widget-text-editor p, .elementor-element-8f4ad30 .elementor-widget-button {
    text-align: center !important;
  }
  .elementor-element-a582d0c .elementor-heading-title,  .elementor-element-46b87cf .elementor-heading-title,  .elementor-element-c90c848 .elementor-heading-title,  .elementor-element-ab752c0 .elementor-heading-title,  .elementor-element-79544d5 .elementor-heading-title,  .elementor-element-8f4ad30 .elementor-heading-title {
    text-align: center !important;
  }
}

/* Short desktop and laptop screens: scale the headline with screen height. */
@media (min-width: 1025px) and (max-height: 720px) {
  .elementor-element-a582d0c .elementor-heading-title,
  .elementor-element-46b87cf .elementor-heading-title,
  .elementor-element-c90c848 .elementor-heading-title,
  .elementor-element-ab752c0 .elementor-heading-title,
  .elementor-element-79544d5 .elementor-heading-title,
  .elementor-element-8f4ad30 .elementor-heading-title {
    font-size: clamp(30px, 7.5vh, 60px) !important;
  }
}

/* Service page hero title: left-aligned on desktop, in line with the text and button below it. */
@media (min-width: 1025px) {
  .elementor-element-3039043 .elementor-heading-title {
    text-align: left !important;
  }
}

/* Text links use the logo blues in place of the theme's red. Sky blue is too faint on light backgrounds,
   so it is used on the dark blue section, and light backgrounds get the darker blue with an underline. */
a {
  color: #143D87;
}
.elementor-widget-text-editor a {
  text-decoration: underline;
}
.elementor-element-c17d4bc .elementor-widget-text-editor a {
  color: #65BBE1;
  text-decoration: none;
}
.elementor-element-c17d4bc .elementor-widget-text-editor a:hover {
  color: #fff;
  text-decoration: underline;
}

/* Thank-you page. The footer's quote form and its call to action are hidden, as the visitor has just sent one. */
.bc-thank-you .elementor-element-69518d3,
.bc-thank-you .elementor-element-70c0d6f {
  display: none;
}
.bc-thanks {
  max-width: 640px;
  margin: 0 auto;
  padding: 80px 20px;
  text-align: center;
}
.bc-thanks h1 {
  margin: 0 0 16px;
  color: #143D87;
}
.bc-thanks p {
  margin: 0 0 12px;
  font-size: 18px;
}
.bc-thanks a.bc-thanks__button {
  display: inline-block;
  margin-top: 16px;
  padding: 12px 24px;
  border-radius: 6px;
  background: #143D87;
  color: #fff;
}
.bc-thanks a.bc-thanks__button:hover {
  background: #F0A226;
  color: #fff;
}

/* Hero photos paint straight away. Elementor puts them on a layer its script creates, so they used to wait for that script. */
.elementor-element-46b87cf,
.elementor-element-c90c848,
.elementor-element-79544d5,
.elementor-element-ab752c0 {
  background: url("/wp-content/uploads/2023/11/AKA_4222-scaled.webp") center / cover no-repeat;
}
.elementor-element-a582d0c {
  background: url("/wp-content/uploads/2023/11/CC200519-673.webp") center / cover no-repeat;
}
/* Phones and tablets use smaller copies. */
@media (max-width: 1024px) {
  .elementor-element-46b87cf,
  .elementor-element-c90c848,
  .elementor-element-79544d5,
  .elementor-element-ab752c0,
  .elementor-element-46b87cf > .elementor-motion-effects-container > .elementor-motion-effects-layer,
  .elementor-element-c90c848 > .elementor-motion-effects-container > .elementor-motion-effects-layer,
  .elementor-element-79544d5 > .elementor-motion-effects-container > .elementor-motion-effects-layer,
  .elementor-element-ab752c0 > .elementor-motion-effects-container > .elementor-motion-effects-layer {
    background-image: url("/wp-content/uploads/2023/11/AKA_4222-1200.webp") !important;
  }
  .elementor-element-a582d0c {
    background-image: url("/wp-content/uploads/2023/11/CC200519-673-1200.webp");
  }
}

/* Open search: a visible close button, a prompt and a Search button, added by display-fixes.js. */
.elementor-search-form__container.elementor-search-form--full-screen {
  flex-wrap: wrap;
  align-content: center;
  justify-content: center;
  gap: 24px;
}
.elementor-search-form--full-screen .dialog-lightbox-close-button {
  position: absolute;
  top: calc(var(--bc-header, 133px) + 16px);
  right: 16px;
  width: 44px;
  height: 44px;
  padding: 8px;
  box-sizing: border-box;
}
.elementor-search-form--full-screen .dialog-lightbox-close-button svg {
  display: block;
  width: 100%;
  height: 100%;
  fill: #fff;
}
.elementor-search-form--full-screen input[type="search"].elementor-search-form__input::placeholder {
  color: rgba(255, 255, 255, 0.7);
}
.elementor-search-form__container:not(.elementor-search-form--full-screen) .bc-search-button {
  display: none !important;
}
.elementor-search-form--full-screen .bc-search-button {
  display: block;
  flex: 0 0 auto;
  padding: 12px 40px;
  border: 0;
  border-radius: 6px;
  background: #F0A226;
  color: #fff;
  font-size: 16px;
  font-weight: 500;
  cursor: pointer;
}
.elementor-search-form--full-screen .bc-search-button:hover,
.elementor-search-form--full-screen .bc-search-button:focus {
  background: #65BBE1;
  color: #fff;
}
.elementor-search-form--full-screen .elementor-search-form__input {
  flex: 1 1 100%;
  max-width: 900px;
}
@media (max-width: 767px) {
  .elementor-element.elementor-search-form--skin-full_screen input[type="search"].elementor-search-form__input {
    font-size: 28px;
  }
}

/* Search results page: a header band and a grid of cards that are clickable as a whole. */
body.search main.site-main {
  max-width: none;
  width: 100%;
  margin: 0;
  padding: 0;
}
.bc-search-header {
  padding: 56px 20px;
  background: #143D87;
  color: #fff;
  text-align: center;
}
.bc-search-header h1 {
  max-width: 900px;
  margin: 0 auto;
  color: #fff;
  font-size: clamp(26px, 4vw, 42px);
  line-height: 1.2;
  overflow-wrap: anywhere;
}
.bc-search-header__count {
  min-height: 24px;
  margin: 12px 0 0;
  color: #fff;
  font-size: 16px;
  line-height: 24px;
}
.bc-search-header__form {
  display: flex;
  gap: 8px;
  max-width: 560px;
  margin: 20px auto 0;
}
.bc-search-header__form input[type="search"] {
  flex: 1 1 auto;
  min-width: 0;
  padding: 12px 14px;
  border: 1px solid #fff;
  border-radius: 6px;
  background: #fff;
  color: #000;
  font-size: 16px;
}
.bc-search-header__form button {
  flex: 0 0 auto;
  padding: 12px 28px;
  border: 0;
  border-radius: 6px;
  background: #F0A226;
  color: #fff;
  font-size: 16px;
  font-weight: 500;
  cursor: pointer;
}
.bc-search-header__form button:hover,
.bc-search-header__form button:focus {
  background: #65BBE1;
  color: #fff;
}
body.search-results #content .page-content {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 24px;
  max-width: 1140px;
  margin: 0 auto;
  padding: 48px 20px;
}
body.search-no-results #content .page-content {
  max-width: 700px;
  margin: 0 auto;
  padding: 48px 20px;
  font-size: 18px;
  text-align: center;
}
body.search-results #content article.post {
  position: relative;
  display: flex;
  flex-direction: column;
  margin: 0;
  padding: 24px;
  border: 1px solid #e5e7eb;
  border-radius: 10px;
  background: #fff;
  transition: border-color 0.2s, box-shadow 0.2s;
}
body.search-results #content article.post:hover,
body.search-results #content article.post:focus-within {
  border-color: #65BBE1;
  box-shadow: 0 6px 20px rgba(20, 61, 135, 0.12);
}
body.search-results #content article.post .entry-title {
  margin: 0 0 10px;
  font-size: 24px;
  line-height: 1.25;
}
body.search-results #content article.post .entry-title a {
  color: #143D87;
}
/* The title's link covers the whole card. */
body.search-results #content article.post .entry-title a::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 10px;
}
body.search-results #content article.post p {
  display: -webkit-box;
  margin: 0;
  overflow: hidden;
  font-size: 16px;
  line-height: 1.6;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
  line-clamp: 3;
}
body.search-results #content article.post::after {
  content: "View page \2192";
  margin-top: auto;
  padding-top: 14px;
  color: #143D87;
  font-size: 15px;
  font-weight: 600;
}
@media (max-width: 767px) {
  .bc-search-header {
    padding: 40px 20px;
  }
  .bc-search-header__form button {
    padding: 12px 18px;
  }
  body.search-results #content .page-content {
    grid-template-columns: minmax(0, 1fr);
    gap: 16px;
    padding: 32px 20px;
  }
  body.search-results #content article.post {
    padding: 20px;
  }
  body.search-results #content article.post .entry-title {
    font-size: 22px;
    text-align: left !important;
  }
}

/* Search: "nothing found" must not flash before the results arrive. The delayed reveal covers a script that fails to load. */
body.search-no-results:not(.bc-search-done) #content .page-content {
  visibility: hidden;
  animation: bc-search-reveal 0s linear 6s forwards;
}
@keyframes bc-search-reveal {
  to {
    visibility: visible;
  }
}

/* The Turnstile area stays hidden unless forms.js has switched it on, which it only does on the real domain. */
body:not(.bc-turnstile) .cf7-cf-turnstile,
body:not(.bc-turnstile) .cf7-cf-turnstile + br {
  display: none !important;
}
body.bc-turnstile .cf7-cf-turnstile {
  margin: 0 0 16px !important;
}

/* Forms at every screen size: the dropdown matches the text fields. */
.wpcf7 select,
.wpcf7 select.wpcf7-form-control.wpcf7-select {
  -webkit-appearance: none;
  appearance: none;
  display: block;
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box;
  height: auto;
  margin: 0 0 16px !important;
  padding: 12px 40px 12px 14px;
  border: 1px solid rgb(209, 213, 219);
  border-radius: 6px;
  background-color: #fff;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%23757575' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 14px center;
  font-size: 16px;
  line-height: 22.4px;
  color: #000;
  cursor: pointer;
}
/* "Services" is the prompt, so it looks like the other fields' placeholder text until a choice is made. */
.wpcf7 select:has(option[value="Services"]:checked) {
  color: rgb(117, 117, 117);
}
.wpcf7 select option {
  color: #000;
}
/* Line breaks after each field would double the space between them. */
.wpcf7 label + br,
.wpcf7 .wpcf7-form-control-wrap + br {
  display: none;
}
/* The message box matches the other fields too. */
.wpcf7 textarea {
  padding: 12px 14px;
  border: 1px solid rgb(209, 213, 219);
  border-radius: 6px;
  font-size: 16px;
  line-height: 22.4px;
}
/* Every field fills the form's width, so they line up in all browsers. */
.wpcf7 label,
.wpcf7 .wpcf7-form-control-wrap {
  display: block;
  width: 100%;
}
.wpcf7 input[type="text"]:not([name="_gotcha"]),
.wpcf7 input[type="email"],
.wpcf7 input[type="tel"],
.wpcf7 textarea {
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box;
}

/* Phones: stacked layout. */
@media (max-width: 767px) {
  html,
  body {
    overflow-x: clip;
  }

  /* Text is always readable, with no wait for a scroll animation. */
  .elementor-invisible {
    visibility: visible !important;
  }
  .elementor-element.animated {
    animation: none !important;
  }

  /* Header: bigger logo, less empty space. */
  :root { --bc-header: 118px; }
  .elementor-element.elementor-element-a258cc1 {
    --min-height: 0px;
    min-height: 0 !important;
    padding-top: 6px !important;
    padding-bottom: 6px !important;
  }
  .elementor-element.elementor-element-151edcb2 {
    --min-height: 0px;
    min-height: 0 !important;
    padding-top: 8px !important;
    padding-bottom: 8px !important;
  }
  .elementor-element-a258cc1 > .e-con-inner,
  .elementor-element-151edcb2 > .e-con-inner {
    padding-top: 0 !important;
    padding-bottom: 0 !important;
    min-height: 0 !important;
  }
  .elementor-element.elementor-element-1fc92027 {
    width: auto !important;
    max-width: none !important;
    flex: 0 0 auto !important;
  }
  .elementor-element.elementor-element-1fc92027 img {
    width: 170px !important;
    max-width: 62vw !important;
    height: auto !important;
  }

  /* Hero: the same headline size and centred text on every page. */
  .elementor-element-a582d0c .elementor-heading-title,
  .elementor-element-46b87cf .elementor-heading-title,
  .elementor-element-c90c848 .elementor-heading-title,
  .elementor-element-ab752c0 .elementor-heading-title,
  .elementor-element-79544d5 .elementor-heading-title,
  .elementor-element-8f4ad30 .elementor-heading-title {
    font-size: clamp(24px, 7.4vw, 30px) !important;
    line-height: 1.15 !important;
  }

  /* Text: centred headings, left-aligned paragraphs, even side spacing. */
  .elementor-heading-title {
    text-align: center !important;
    overflow-wrap: break-word;
  }
  .elementor-widget-heading,
  .elementor-widget-text-editor {
    padding-left: 8px;
    padding-right: 8px;
    box-sizing: border-box;
  }
  .elementor-widget-text-editor,
  .elementor-widget-text-editor p {
    text-align: left !important;
  }

  /* Short text stays centred: heroes, service cards, call-to-action bands and the footer. */
  .elementor-element-a582d0c .elementor-widget-text-editor,
  .elementor-element-a582d0c .elementor-widget-text-editor p,
  .elementor-element-46b87cf .elementor-widget-text-editor,
  .elementor-element-46b87cf .elementor-widget-text-editor p,
  .elementor-element-c90c848 .elementor-widget-text-editor,
  .elementor-element-c90c848 .elementor-widget-text-editor p,
  .elementor-element-ab752c0 .elementor-widget-text-editor,
  .elementor-element-ab752c0 .elementor-widget-text-editor p,
  .elementor-element-79544d5 .elementor-widget-text-editor,
  .elementor-element-79544d5 .elementor-widget-text-editor p,
  .elementor-element-8f4ad30 .elementor-widget-text-editor,
  .elementor-element-8f4ad30 .elementor-widget-text-editor p,
  .elementor-element-7a4b401 .elementor-widget-text-editor,
  .elementor-element-7a4b401 .elementor-widget-text-editor p,
  .elementor-element-70c0d6f .elementor-widget-text-editor,
  .elementor-element-70c0d6f .elementor-widget-text-editor p,
  .elementor-element-8c25762 .elementor-widget-text-editor,
  .elementor-element-8c25762 .elementor-widget-text-editor p,
  .elementor-element-f3d0688 .elementor-widget-text-editor,
  .elementor-element-f3d0688 .elementor-widget-text-editor p,
  .elementor-element-1035c26 .elementor-widget-text-editor,
  .elementor-element-1035c26 .elementor-widget-text-editor p,
  [data-elementor-type="footer"] .elementor-element-47fae67 .elementor-widget-text-editor,
  [data-elementor-type="footer"] .elementor-element-47fae67 .elementor-widget-text-editor p,
  .elementor-element-1706d75 .elementor-widget-text-editor,
  .elementor-element-1706d75 .elementor-widget-text-editor p {
    text-align: center !important;
  }

  /* Spacing system: 40px above and below each section, 20px at the sides. */
  [data-elementor-type="wp-page"] .e-con.e-parent,
  [data-elementor-type="single-page"] .e-con.e-parent {
    --padding-top: 40px !important;
    --padding-bottom: 40px !important;
    --padding-left: 20px !important;
    --padding-right: 20px !important;
    --margin-top: 0px !important;
    --margin-bottom: 0px !important;
    margin-top: 0 !important;
    margin-bottom: 0 !important;
  }
  [data-elementor-type="footer"] .e-con.e-parent {
    --padding-top: 40px !important;
    --padding-bottom: 40px !important;
    --padding-left: 20px !important;
    --padding-right: 20px !important;
  }
  /* Sections fit their content. Only the hero keeps a set height. */
  [data-elementor-type] .e-con.e-parent {
    --min-height: 0px;
    min-height: 0;
  }
  /* Copyright bar, map and the form's own band keep their spacing. */
  [data-elementor-type="footer"] .e-con.e-parent.elementor-element-1706d75 {
    --padding-top: 14px !important;
    --padding-bottom: 14px !important;
  }
  [data-elementor-type="footer"] .e-con.e-parent.elementor-element-c5f0c73 {
    --padding-top: 0px !important;
    --padding-bottom: 0px !important;
    --padding-left: 0px !important;
    --padding-right: 0px !important;
  }
  [data-elementor-type="footer"] .e-con.e-parent.elementor-element-69518d3 {
    --padding-left: 12px !important;
    --padding-right: 12px !important;
  }
  /* Hero spacing. */
  [data-elementor-type] .e-con.e-parent.elementor-element-a582d0c,
  [data-elementor-type] .e-con.e-parent.elementor-element-46b87cf,
  [data-elementor-type] .e-con.e-parent.elementor-element-c90c848,
  [data-elementor-type] .e-con.e-parent.elementor-element-ab752c0,
  [data-elementor-type] .e-con.e-parent.elementor-element-79544d5,
  [data-elementor-type] .e-con.e-parent.elementor-element-8f4ad30 {
    --padding-top: 16px !important;
    --padding-bottom: 16px !important;
    --padding-left: 16px !important;
    --padding-right: 16px !important;
  }
  [data-elementor-type] .e-con.e-parent.elementor-element-a582d0c > .e-con-inner > .e-con,
  [data-elementor-type] .e-con.e-parent.elementor-element-46b87cf > .e-con-inner > .e-con,
  [data-elementor-type] .e-con.e-parent.elementor-element-c90c848 > .e-con-inner > .e-con,
  [data-elementor-type] .e-con.e-parent.elementor-element-ab752c0 > .e-con-inner > .e-con,
  [data-elementor-type] .e-con.e-parent.elementor-element-79544d5 > .e-con-inner > .e-con,
  [data-elementor-type] .e-con.e-parent.elementor-element-8f4ad30 > .e-con-inner > .e-con {
    --padding-left: 0px !important;
    --padding-right: 0px !important;
  }
  /* Outer wrappers only hold other sections, so they add no space of their own. */
  [data-elementor-type="wp-page"] .e-con.e-parent:has(.e-con.e-parent),
  [data-elementor-type="single-page"] .e-con.e-parent:has(.e-con.e-parent) {
    --padding-top: 0px !important;
    --padding-bottom: 0px !important;
    --padding-left: 0px !important;
    --padding-right: 0px !important;
    --row-gap: 0px !important;
    gap: 0 !important;
  }
  /* Image and text sections: the photo stays edge to edge, and the text gets the spacing. */
  [data-elementor-type] .e-con.e-parent:has(> .e-con:empty),
  [data-elementor-type] .e-con.e-parent:has(> .e-con-inner > .e-con:empty) {
    --padding-top: 0px !important;
    --padding-bottom: 0px !important;
    --padding-left: 0px !important;
    --padding-right: 0px !important;
    --row-gap: 0px !important;
    gap: 0 !important;
  }
  [data-elementor-type] .e-con.e-parent:has(> .e-con:empty) > .e-con:not(:empty),
  [data-elementor-type] .e-con.e-parent:has(> .e-con-inner > .e-con:empty) > .e-con-inner > .e-con:not(:empty) {
    --padding-top: 24px !important;
    --padding-bottom: 40px !important;
    --padding-left: 20px !important;
    --padding-right: 20px !important;
  }
  /* Text no longer needs its own side padding, as the section provides it. */
  .elementor-widget-heading,
  .elementor-widget-text-editor {
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
  /* Service and add-on cards: use the width, with even inner spacing. */
  .elementor-element-7a4b401 > .e-con-inner > .e-con,
  .elementor-element-01a73c4 > .e-con-inner > .e-con,
  .elementor-element-7a4b401 > .e-con,
  .elementor-element-01a73c4 > .e-con {
    width: 100% !important;
    max-width: 100% !important;
    --padding-top: 24px !important;
    --padding-bottom: 24px !important;
    --padding-left: 16px !important;
    --padding-right: 16px !important;
  }
  /* Testimonials: same size round photo, centred, and centred names and stars. */
  .elementor-element-6281545 .elementor-image-box-wrapper,
  .elementor-element-29dcd9f .elementor-image-box-wrapper {
    text-align: center !important;
    display: block !important;
  }
  .elementor-element-6281545 .elementor-image-box-img,
  .elementor-element-29dcd9f .elementor-image-box-img {
    display: block !important;
    width: 72px !important;
    margin: 0 auto 12px !important;
  }
  .elementor-element-6281545 .elementor-image-box-img img,
  .elementor-element-29dcd9f .elementor-image-box-img img {
    display: block;
    width: 72px !important;
    height: 72px !important;
    object-fit: cover;
    border-radius: 50% !important;
    margin: 0 auto;
  }
  /* Footer copyright: remove the uneven side offset. */
  .elementor-element-1706d75 .elementor-widget {
    margin-left: 0 !important;
    margin-right: 0 !important;
    width: 100% !important;
  }

  /* Stacking: where a block has text and a button, the button comes after the text. */
  .e-con:has(> .elementor-widget-text-editor) > .elementor-widget-button,
  .e-con-inner:has(> .elementor-widget-text-editor) > .elementor-widget-button {
    order: 99;
  }
  /* Images follow their text with the normal gap, not pushed to the bottom of the column. */
  [data-elementor-type] .e-con.e-child:has(> .elementor-widget-image) {
    justify-content: flex-start !important;
    min-height: 0 !important;
  }
  /* Blocks with text and an image: a clear gap, and the background covers the whole block. */
  .elementor-element.elementor-element-2df0b802,
  .elementor-element.elementor-element-0d376d6 {
    gap: 24px !important;
    --row-gap: 24px !important;
  }
  [data-elementor-type] .e-con.e-parent.elementor-element-2df0b802,
  [data-elementor-type] .e-con.e-parent.elementor-element-0d376d6 {
    background-image: none !important;
    background-color: rgb(242, 252, 254) !important;
  }
  /* Buttons keep clear of the text above them. */
  .elementor-widget-text-editor + .elementor-widget-button {
    margin-top: 8px;
  }
  /* Inner columns use the full width, so text lines up with the 20px section margin. */
  [data-elementor-type] .e-con.e-child.e-con-boxed {
    --content-width: 100%;
  }
  [data-elementor-type] .e-con.e-child.e-con-boxed > .e-con-inner {
    max-width: 100% !important;
    width: 100% !important;
  }
  /* A paragraph's bottom margin would otherwise add uneven space before the next item. */
  .elementor-widget-text-editor p:last-child {
    margin-bottom: 0;
  }
  .elementor-element-239d9168 > .e-con,
  .e-con[class*="e-child"]:has(> .elementor-element-3a0979e4) {
    --padding-bottom: 28px !important;
  }
  /* Three steps: keep each number, heading and text together, with clear room between steps. */
  .elementor-element-6d5cfa3e .elementor-widget-heading,
  .elementor-element-e95c19d .elementor-widget-heading {
    margin-bottom: 6px;
  }

  /* "Why Choose Us" image: remove the desktop offset, so it sits evenly in the column. */
  .elementor-element-db41442 .elementor-widget-image,
  .elementor-element-ae55d6f .elementor-widget-image {
    margin: 0 !important;
    padding: 0 16px;
    width: 100% !important;
    box-sizing: border-box;
    position: static !important;
  }
  .elementor-element-db41442 .elementor-widget-image img,
  .elementor-element-ae55d6f .elementor-widget-image img {
    width: 100% !important;
    max-width: 100% !important;
    border-radius: 12px !important;
  }

  /* Forms: full-width fields, a sensible message box and a full-width button. */
  .wpcf7 label {
    display: block;
  }
  .wpcf7 input[type="text"]:not([name="_gotcha"]),
  .wpcf7 input[type="email"],
  .wpcf7 input[type="tel"],
  .wpcf7 select,
  .wpcf7 select.wpcf7-form-control.wpcf7-select,
  .wpcf7 textarea {
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box;
    font-size: 16px;
  }
  .wpcf7 .wpcf7-form-control-wrap {
    display: block;
    width: 100%;
  }
  .wpcf7 textarea {
    height: 140px !important;
  }
  .wpcf7 .wpcf7-submit {
    display: block;
    width: 100% !important;
    min-height: 48px;
  }
  .mh-service-desc {
    margin-top: 8px;
  }

  /* Footer: consistent centring. */
  [data-elementor-type="footer"] .elementor-icon-list-items:not(.elementor-inline-items) {
    display: inline-block;
    text-align: left;
  }
  [data-elementor-type="footer"] .elementor-widget-icon-list .elementor-widget-container {
    text-align: center;
  }
}

/* Phones: one type scale. Body text is 16px, nothing is under 14px, and headings scale with the screen. */
@media (max-width: 767px) {
  /* Stops mobile browsers from resizing text on their own, such as iOS after rotating. */
  html {
    -webkit-text-size-adjust: 100%;
    -moz-text-size-adjust: 100%;
    text-size-adjust: 100%;
  }

  body,
  .elementor-widget-text-editor,
  .elementor-widget-text-editor p,
  .elementor-widget-text-editor li,
  .elementor-widget-text-editor div,
  .elementor-widget-shortcode p,
  main p,
  main li {
    font-size: 16px !important;
    line-height: 1.6 !important;
  }
  /* Live text has inline sizes on spans and links, which must follow the paragraph. */
  .elementor-widget-text-editor span,
  .elementor-widget-text-editor a,
  .elementor-widget-text-editor strong,
  .elementor-widget-text-editor em {
    font-size: inherit !important;
    line-height: inherit !important;
  }

  /* Headings: h1 26 to 32px, h2 22 to 26px, h3 20 to 22px, smaller headings 18px. */
  h1.elementor-heading-title {
    font-size: clamp(26px, 7.6vw, 32px) !important;
    line-height: 1.2 !important;
  }
  h2.elementor-heading-title,
  h2.entry-title,
  main h2 {
    font-size: clamp(22px, 6.4vw, 26px) !important;
    line-height: 1.25 !important;
  }
  h3.elementor-heading-title,
  h4.elementor-heading-title,
  main h3 {
    font-size: clamp(20px, 5.6vw, 22px) !important;
    line-height: 1.3 !important;
  }
  h5.elementor-heading-title,
  h6.elementor-heading-title {
    font-size: 18px !important;
    line-height: 1.35 !important;
  }
  /* Hero text: page titles that are not h1 on live still read as the page's main heading. */
  .elementor-element-a582d0c .elementor-heading-title,
  .elementor-element-46b87cf .elementor-heading-title,
  .elementor-element-c90c848 .elementor-heading-title,
  .elementor-element-ab752c0 .elementor-heading-title,
  .elementor-element-79544d5 .elementor-heading-title,
  .elementor-element-8f4ad30 .elementor-heading-title {
    font-size: clamp(26px, 7.6vw, 32px) !important;
    line-height: 1.2 !important;
  }

  /* Hero text sits close together, so it fits on the smallest phones. */
  .elementor-element-a582d0c .elementor-widget-text-editor, .elementor-element-a582d0c .elementor-widget-text-editor p,
  .elementor-element-46b87cf .elementor-widget-text-editor, .elementor-element-46b87cf .elementor-widget-text-editor p,
  .elementor-element-c90c848 .elementor-widget-text-editor, .elementor-element-c90c848 .elementor-widget-text-editor p,
  .elementor-element-ab752c0 .elementor-widget-text-editor, .elementor-element-ab752c0 .elementor-widget-text-editor p,
  .elementor-element-79544d5 .elementor-widget-text-editor, .elementor-element-79544d5 .elementor-widget-text-editor p,
  .elementor-element-8f4ad30 .elementor-widget-text-editor, .elementor-element-8f4ad30 .elementor-widget-text-editor p {
    line-height: 1.45 !important;
  }
  [data-elementor-type] .e-con.e-parent.elementor-element-a582d0c > .e-con-inner > .e-con,
  [data-elementor-type] .e-con.e-parent.elementor-element-46b87cf > .e-con-inner > .e-con,
  [data-elementor-type] .e-con.e-parent.elementor-element-c90c848 > .e-con-inner > .e-con,
  [data-elementor-type] .e-con.e-parent.elementor-element-ab752c0 > .e-con-inner > .e-con,
  [data-elementor-type] .e-con.e-parent.elementor-element-79544d5 > .e-con-inner > .e-con,
  [data-elementor-type] .e-con.e-parent.elementor-element-8f4ad30 > .e-con-inner > .e-con {
    --padding-top: 0px !important;
    --padding-bottom: 0px !important;
    --row-gap: 14px !important;
    gap: 14px !important;
  }
  /* Motorhome service names can wrap onto two lines. */
  .mh-service .wpcf7-list-item-label {
    line-height: 1.35 !important;
  }

  /* Buttons: readable and easy to tap. */
  .elementor-button,
  .wpcf7 .wpcf7-submit {
    font-size: 16px !important;
    line-height: 1.25 !important;
    min-height: 44px;
  }
  .elementor-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
  }

  /* Floating call button: smaller, tucked into the corner, and still easy to tap. */
  .elementor-element.elementor-element-0f26e8b {
    right: 8px !important;
    bottom: 12px !important;
    width: 48px !important;
    height: auto !important;
  }
  .elementor-element-0f26e8b .elementor-icon {
    font-size: 22px !important;
    padding: 13px !important;
    line-height: 0 !important;
  }

  /* Lists and frequently asked questions. */
  .elementor-icon-list-text {
    font-size: 16px !important;
    line-height: 1.4 !important;
  }
  .elementor-tab-title,
  .elementor-tab-title a,
  .elementor-accordion-title,
  .elementor-toggle-title {
    font-size: 17px !important;
    line-height: 1.4 !important;
  }

  /* Testimonial names and places. */
  .elementor-image-box-title {
    font-size: 18px !important;
    line-height: 1.3 !important;
  }
  .elementor-image-box-description {
    font-size: 14px !important;
    line-height: 1.4 !important;
  }

  /* Footer. */
  [data-elementor-type="footer"] .elementor-element-1706d75 .elementor-heading-title,
  [data-elementor-type="footer"] .elementor-element-1706d75 .elementor-heading-title a,
  [data-elementor-type="footer"] .elementor-element-1706d75 p,
  [data-elementor-type="footer"] .elementor-element-1706d75 a {
    font-size: 14px !important;
    line-height: 1.5 !important;
  }

  /* Comment on the default WordPress post. */
  .comments-title,
  #reply-title {
    font-size: clamp(22px, 6.4vw, 26px) !important;
  }
  .comment-metadata a,
  .comment-author a,
  .comment-author span,
  .says,
  #comments p {
    font-size: 14px !important;
  }
}

/* The smallest phones: a slimmer hero button keeps clear of the floating call button. */
@media (max-width: 360px) {
  .elementor-element.elementor-element-0f26e8b {
    right: 6px !important;
    width: 44px !important;
  }
  .elementor-element-0f26e8b .elementor-icon {
    font-size: 20px !important;
    padding: 12px !important;
  }
  .elementor-element-a582d0c .elementor-button,
  .elementor-element-46b87cf .elementor-button,
  .elementor-element-c90c848 .elementor-button,
  .elementor-element-ab752c0 .elementor-button,
  .elementor-element-79544d5 .elementor-button,
  .elementor-element-8f4ad30 .elementor-button {
    padding-left: 14px !important;
    padding-right: 14px !important;
  }
}

/* Landscape phones and other very short screens: compact header and tighter hero. */
@media (max-height: 500px) {
  :root { --bc-header: 80px; }
  .elementor-element.elementor-element-a258cc1,
  .elementor-element.elementor-element-151edcb2 {
    --min-height: 0px;
    --padding-top: 2px;
    --padding-bottom: 2px;
    min-height: 0 !important;
    padding-top: 2px !important;
    padding-bottom: 2px !important;
  }
  .elementor-element-a258cc1 > .e-con-inner,
  .elementor-element-151edcb2 > .e-con-inner {
    padding-top: 0 !important;
    padding-bottom: 0 !important;
    min-height: 0 !important;
  }
  [data-elementor-type="header"] img {
    max-height: 36px;
    width: auto !important;
  }
  .elementor-element-a582d0c,
  .elementor-element-46b87cf,
  .elementor-element-c90c848,
  .elementor-element-ab752c0,
  .elementor-element-79544d5,
  .elementor-element-8f4ad30 {
    --padding-top: 8px !important;
    --padding-bottom: 8px !important;
  }
  .elementor-element-a582d0c .elementor-heading-title,
  .elementor-element-46b87cf .elementor-heading-title,
  .elementor-element-c90c848 .elementor-heading-title,
  .elementor-element-ab752c0 .elementor-heading-title,
  .elementor-element-79544d5 .elementor-heading-title,
  .elementor-element-8f4ad30 .elementor-heading-title {
    font-size: clamp(20px, 7vh, 30px) !important;
    line-height: 1.1;
  }
  .elementor-element-a582d0c .elementor-widget-text-editor, .elementor-element-a582d0c .elementor-widget-text-editor p,
  .elementor-element-46b87cf .elementor-widget-text-editor, .elementor-element-46b87cf .elementor-widget-text-editor p,
  .elementor-element-c90c848 .elementor-widget-text-editor, .elementor-element-c90c848 .elementor-widget-text-editor p,
  .elementor-element-79544d5 .elementor-widget-text-editor, .elementor-element-79544d5 .elementor-widget-text-editor p,
  .elementor-element-8f4ad30 .elementor-widget-text-editor, .elementor-element-8f4ad30 .elementor-widget-text-editor p {
    font-size: 14px !important;
    line-height: 1.3 !important;
  }
  /* Live text mixes inline-styled spans, which would otherwise keep their larger size here. */
  .elementor-element-a582d0c .elementor-widget-text-editor *,
  .elementor-element-46b87cf .elementor-widget-text-editor *,
  .elementor-element-c90c848 .elementor-widget-text-editor *,
  .elementor-element-79544d5 .elementor-widget-text-editor *,
  .elementor-element-8f4ad30 .elementor-widget-text-editor * {
    font-size: inherit !important;
    line-height: inherit !important;
  }
  .elementor-element-a582d0c .elementor-widget-text-editor p,
  .elementor-element-46b87cf .elementor-widget-text-editor p,
  .elementor-element-c90c848 .elementor-widget-text-editor p,
  .elementor-element-79544d5 .elementor-widget-text-editor p,
  .elementor-element-8f4ad30 .elementor-widget-text-editor p {
    margin-bottom: 4px;
  }
}
