
/* ============================================================
   gvt-cls: reserve space for late-loading embeds (GHL forms,
   YouTube videos, rotating headlines) so they cannot shift the
   page. Heights are MEASURED rendered heights per widget, with a
   small buffer. Re-measure if the GHL forms are edited again.
   Last measured: 2026-09-21 (after forms were shortened).
   ============================================================ */

/* ---------- GHL FORM EMBEDS: DESKTOP / TABLET ---------- */
@media (min-width: 768px) {
  .elementor-element-a470b6b .elementor-widget-container { min-height: 580px; } /* Home */
  .elementor-element-6e5ce22 .elementor-widget-container { min-height: 580px; } /* Services */
  .elementor-element-ddce0d8 .elementor-widget-container { min-height: 755px; } /* Contact Us */
  .elementor-element-fe22035 .elementor-widget-container { min-height: 580px; } /* Get A Quote */
  .elementor-element-9bd75dd .elementor-widget-container { min-height: 490px; } /* Residential */
  .elementor-element-55bd1c5 .elementor-widget-container { min-height: 490px; } /* Commercial */
  .elementor-element-e84ae99 .elementor-widget-container { min-height: 490px; } /* Automotive */
  .elementor-element-5a9eee0 .elementor-widget-container { min-height: 490px; } /* Decorative */
  .elementor-element-d0168c4 .elementor-widget-container { min-height: 490px; } /* Security & Privacy */
  .elementor-element-4e77cb8 .elementor-widget-container { min-height: 490px; } /* Anti Graffiti */
  .elementor-element-a84873d .elementor-widget-container { min-height: 490px; } /* Paint Protection */
  .elementor-element-6c42f01 .elementor-widget-container { min-height: 490px; } /* Turf Guard */

  /* Hero videos are 4:3 - reserve by ratio so they cannot grow/snap back */
  .elementor-element-80f95ea .elementor-wrapper,
  .elementor-element-790ad34 .elementor-wrapper,
  .elementor-element-65d9114 .elementor-wrapper,
  .elementor-element-c61afa3 .elementor-wrapper,
  .elementor-element-f0645f9 .elementor-wrapper,
  .elementor-element-6c35949 .elementor-wrapper,
  .elementor-element-a78e791 .elementor-wrapper,
  .elementor-element-457a8c0 .elementor-wrapper,
  .elementor-element-48a148b .elementor-wrapper,
  .elementor-element-8221b1f .elementor-wrapper { aspect-ratio: 4 / 3; }
  .elementor-element-80f95ea .elementor-wrapper iframe,
  .elementor-element-790ad34 .elementor-wrapper iframe,
  .elementor-element-65d9114 .elementor-wrapper iframe,
  .elementor-element-c61afa3 .elementor-wrapper iframe,
  .elementor-element-f0645f9 .elementor-wrapper iframe,
  .elementor-element-6c35949 .elementor-wrapper iframe,
  .elementor-element-a78e791 .elementor-wrapper iframe,
  .elementor-element-457a8c0 .elementor-wrapper iframe,
  .elementor-element-48a148b .elementor-wrapper iframe,
  .elementor-element-8221b1f .elementor-wrapper iframe { height: 100%; }
}

/* ---------- GHL FORM EMBEDS: MOBILE ---------- */
@media (max-width: 767px) {
  .elementor-element-d0cebe3 .elementor-widget-container { min-height: 590px; } /* Home */
  .elementor-element-6e5ce22 .elementor-widget-container { min-height: 590px; } /* Services */
  .elementor-element-ddce0d8 .elementor-widget-container { min-height: 745px; } /* Contact Us */
  .elementor-element-fe22035 .elementor-widget-container { min-height: 590px; } /* Get A Quote */
  .elementor-element-20be0c7 .elementor-widget-container { min-height: 590px; } /* Residential */
  .elementor-element-e023abe .elementor-widget-container { min-height: 490px; } /* Commercial */
  .elementor-element-94c4d3b .elementor-widget-container { min-height: 590px; } /* Automotive */
  .elementor-element-bf7bbdc .elementor-widget-container { min-height: 590px; } /* Decorative */
  .elementor-element-7dccd6b .elementor-widget-container { min-height: 590px; } /* Security & Privacy */
  .elementor-element-74a7763 .elementor-widget-container { min-height: 590px; } /* Anti Graffiti */
  .elementor-element-40d20ea .elementor-widget-container { min-height: 590px; } /* Paint Protection */
  .elementor-element-0d92937 .elementor-widget-container { min-height: 590px; } /* Turf Guard */
}

/* ---------- ROTATING HEADLINES (retype after load) ---------- */
.elementor-element-1fc47e6 .elementor-headline,
.elementor-element-0b51903 .elementor-headline { min-height: 1.3em; }
.elementor-element-1fc47e6 .elementor-headline-dynamic-wrapper,
.elementor-element-0b51903 .elementor-headline-dynamic-wrapper { display: inline-block; min-height: 1.3em; vertical-align: top; }
/* gvt-blog-cards: ElementsKit blog grid - uniform 16:9 thumbnails and equal-height
   cards. Without this each thumb keeps its native ratio (471/684/199px observed)
   and the cards stagger. */
.ekit-wid-con .elementskit-entry-thumb {
  aspect-ratio: 16 / 9;
  overflow: hidden;
  display: block;
}
.ekit-wid-con .elementskit-entry-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
}
.ekit-wid-con .ekit-row.post-items {
  display: flex;
  flex-wrap: wrap;
  align-items: stretch;
}
.ekit-wid-con .ekit-row.post-items > [class*='ekit-col'],
.ekit-wid-con .ekit-row.post-items > .elementor-column,
.ekit-wid-con .ekit-row.post-items > div {
  display: flex;
}
.ekit-wid-con .ekit-row.post-items .elementskit-post-image-card {
  display: flex;
  flex-direction: column;
  height: 100%;
  width: 100%;
}
.ekit-wid-con .ekit-row.post-items .elementskit-post-body {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
}
/* push the Read more button to the bottom so buttons align across cards */
.ekit-wid-con .ekit-row.post-items .elementskit-post-body > .ekit-post-meta-wrap,
.ekit-wid-con .ekit-row.post-items .elementskit-post-body > a.elementskit-btn,
.ekit-wid-con .ekit-row.post-items .elementskit-post-body > .elementskit-btn-wraper {
  margin-top: auto;
}

/* ============================================================
   gvt-quote-form: native Elementor quote form styled to match the
   GHL form it replaces (white 5px fields on the green hero,
   placeholders instead of labels, full-width accent pill button,
   white consent copy, Privacy | Terms under the button).
   Applied via the CSS class "gvt-quote-form" on the form widget.
   Colours/fonts resolve to the Elementor kit globals where one exists.
   ============================================================ */
:root {
  --gvt-qf-font: var(--e-global-typography-primary-font-family, Montserrat), sans-serif;
  --gvt-qf-field-bg: #FFFFFF;
  --gvt-qf-field-text: var(--e-global-color-text, #070707);
  --gvt-qf-placeholder: #6B7280;
  --gvt-qf-on-dark: #FFFFFF;
  --gvt-qf-accent: var(--e-global-color-accent, #FFA53A);
  --gvt-qf-radius: 5px;
  --gvt-qf-pill: 30px;
  --gvt-qf-gap: 12px;
  --gvt-qf-control-h: 44px;   /* WCAG touch-target minimum */
  --gvt-qf-fs-field: 14px;
  --gvt-qf-fs-field-touch: 16px; /* stops iOS zoom-on-focus */
  --gvt-qf-fs-button: 15px;
  --gvt-qf-fs-links: 13px;
  --gvt-qf-fs-consent: 11px;
}
.gvt-quote-form .elementor-form-fields-wrapper { margin-bottom: 0; }
.gvt-quote-form .elementor-field-group { padding: 0; margin-bottom: var(--gvt-qf-gap); }
.gvt-quote-form .elementor-field-group .elementor-field-textual,
.gvt-quote-form .elementor-field-group .elementor-select-wrapper select {
  font-family: var(--gvt-qf-font);
  font-size: var(--gvt-qf-fs-field);
  font-weight: 500;
  line-height: 1.4;
  color: var(--gvt-qf-field-text);
  background-color: var(--gvt-qf-field-bg);
  border: 1px solid transparent;
  border-radius: var(--gvt-qf-radius);
  min-height: var(--gvt-qf-control-h);
  padding: 8px 16px;
  box-shadow: none;
}
.gvt-quote-form .elementor-field-group textarea.elementor-field-textual { min-height: 110px; }
.gvt-quote-form .elementor-field-textual::placeholder { color: var(--gvt-qf-placeholder); opacity: 1; }
.gvt-quote-form .elementor-field-group .elementor-field-textual:focus,
.gvt-quote-form .elementor-field-group .elementor-select-wrapper select:focus {
  outline: none;
  border-color: var(--gvt-qf-accent);
  box-shadow: 0 0 0 2px var(--gvt-qf-accent);
}
/* empty-value first option reads as a placeholder until a service is picked */
.gvt-quote-form .elementor-select-wrapper select:invalid,
.gvt-quote-form .elementor-select-wrapper select:has(option[value=""]:checked) { color: var(--gvt-qf-placeholder); }
.gvt-quote-form .elementor-select-wrapper .select-caret-down-wrapper { color: var(--gvt-qf-placeholder); right: 14px; }

/* consent checkbox + copy (the whole label is the tap target) */
.gvt-quote-form .elementor-field-type-acceptance .elementor-field-subgroup { display: flex; }
.gvt-quote-form .elementor-field-type-acceptance .elementor-field-option { display: flex; align-items: flex-start; gap: 10px; }
.gvt-quote-form .elementor-field-type-acceptance input[type="checkbox"] { flex: 0 0 auto; width: 20px; height: 20px; margin: 1px 0 0; accent-color: var(--gvt-qf-accent); }
.gvt-quote-form .elementor-field-type-acceptance label {
  font-family: var(--gvt-qf-font);
  font-size: var(--gvt-qf-fs-consent);
  font-weight: 600;
  line-height: 1.45;
  color: var(--gvt-qf-on-dark);
  cursor: pointer;
}

/* submit: full-width accent pill with white edge, like the GHL button */
.gvt-quote-form .elementor-field-type-submit { margin-top: 6px; margin-bottom: 0; }
.gvt-quote-form .elementor-field-type-submit .elementor-button {
  width: 100%;
  font-family: var(--gvt-qf-font);
  font-size: var(--gvt-qf-fs-button);
  font-weight: 600;
  color: var(--gvt-qf-on-dark);
  background-color: var(--gvt-qf-accent);
  border: 2px solid var(--gvt-qf-on-dark);
  border-radius: var(--gvt-qf-pill);
  min-height: 49px;
  padding: 12px 24px;
  transition: filter .2s ease, transform .2s ease;
}
.gvt-quote-form .elementor-field-type-submit .elementor-button:hover,
.gvt-quote-form .elementor-field-type-submit .elementor-button:focus-visible {
  filter: brightness(1.06);
  transform: translateY(-1px);
}

/* Privacy | Terms sits under the button */
.gvt-quote-form .elementor-field-type-html {
  order: 1;
  margin: 2px 0 0;
  justify-content: center;
  align-items: center;
  text-align: center;
  font-family: var(--gvt-qf-font);
  font-size: var(--gvt-qf-fs-links);
  color: var(--gvt-qf-on-dark);
}
.gvt-quote-form .elementor-field-type-html a {
  display: inline-flex;
  align-items: center;
  min-height: var(--gvt-qf-control-h);
  padding: 0 6px;
  color: var(--gvt-qf-on-dark);
  text-decoration: underline;
}

.gvt-quote-form .elementor-message { font-family: var(--gvt-qf-font); color: var(--gvt-qf-on-dark); }

@media (max-width: 767px) {
  .gvt-quote-form .elementor-field-group .elementor-field-textual,
  .gvt-quote-form .elementor-field-group .elementor-select-wrapper select { font-size: var(--gvt-qf-fs-field-touch); }
}
