/* Emerald Chip Seal & Paving — post-migration additions (not from Webflow).
   Success/error form states, ALTCHA widget theme, hover states, Elfsight
   fixes, and mobile layout corrections. Bump the ?v= in build.js when editing. */

/* ---- Contact form: real green success box (replaces Webflow's washed-out mint) */
.quote__form-success.w-form-done,
.w-form-done {
  display: none;
  background: #e7f7ec;
  border: 1.5px solid #1a7f37;
  color: #0f5132;
  border-radius: 12px;
  padding: 24px 22px;
  text-align: center;
  font-weight: 600;
}

/* ---- ALTCHA widget: self-contained theme so the label never inherits white
   text on dark hero forms (white box + dark text on any background) */
altcha-widget {
  display: block;
  margin: 0 0 16px;
  max-width: 260px;
  --altcha-color-base: #ffffff;
  --altcha-color-text: #1a1a1a;
  --altcha-color-border: #cbd2d9;
  --altcha-color-border-focus: #5eca67;
  --altcha-color-active: #5eca67;
  --altcha-color-error-text: #b42318;
  --altcha-color-footer-bg: #f4f6f8;
  --altcha-border-radius: 10px;
}
altcha-widget, .quote__form altcha-widget { color: #1a1a1a; }

/* ---- Card / list link hovers (Webflow CMS links lost their hover off-platform) */
.service-boxes__title { color: inherit; text-decoration: none; transition: color .2s ease; }
.service-boxes__title:hover { color: var(--color--secondary); }
.service-area__text { transition: color .2s ease; }
.service-area__text:hover { color: var(--color--secondary); }
.s-area-name-link { color: inherit; text-decoration: none; transition: color .2s ease; }
.s-area-name-link:hover { color: var(--color--secondary); }
.s-area-item .flex-link:hover .underline { color: var(--color--secondary); }

/* ---- Self-hosted reviews (replaces the Elfsight widget; card design matches
   the old widget's settings: #f2f5f2 cards, 34px radius, #5eca67 outline,
   #fcbf02 stars, 16px text, FB source badge) */
.rl-reviews { position: relative; z-index: 5; }
.rl-reviews-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
  margin: 24px 0;
}
@media screen and (max-width: 991px) { .rl-reviews-grid { grid-template-columns: repeat(2, 1fr); } }
@media screen and (max-width: 640px) { .rl-reviews-grid { grid-template-columns: 1fr; } }
.rl-review-card {
  display: flex;
  flex-direction: column;
  gap: 10px;
  background: #f2f5f2;
  border: 1px solid #5eca67;
  border-radius: 34px;
  padding: 26px 26px 22px;
  text-align: left;
}
.rl-review-head { display: flex; align-items: center; gap: 12px; }
.rl-review-avatar {
  width: 44px; height: 44px; border-radius: 50%; flex: none;
  display: inline-flex; align-items: center; justify-content: center;
  color: #fff; font-weight: 700; font-size: 15px; letter-spacing: .5px;
  object-fit: cover;
}
.rl-review-who { display: flex; flex-direction: column; min-width: 0; }
.rl-review-author { color: #292929; font-weight: 700; font-size: 16px; }
.rl-review-date { color: #40513f; font-size: 13px; }
.rl-stars { color: #fcbf02; font-size: 18px; letter-spacing: 2px; line-height: 1; }
.rl-review-text {
  color: #111;
  font-size: 16px;
  line-height: 1.55;
  margin: 0;
  display: -webkit-box;
  -webkit-line-clamp: 8;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.rl-reviews--teaser .rl-review-text { -webkit-line-clamp: 5; }
.rl-review-source {
  margin-top: auto;
  display: inline-flex; align-items: center; gap: 8px;
  color: #16751e; font-size: 13.5px; font-weight: 600; text-decoration: none;
}
a.rl-review-source:hover { text-decoration: underline; }
.rl-fbicon, .rl-gicon { width: 18px; height: 18px; flex: none; background-size: 18px 18px; background-repeat: no-repeat; display: inline-block; }
.rl-fbicon { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%231877F2' d='M24 12c0-6.627-5.373-12-12-12S0 5.373 0 12c0 5.99 4.388 10.954 10.125 11.854V15.47H7.078V12h3.047V9.356c0-3.007 1.792-4.668 4.533-4.668 1.312 0 2.686.234 2.686.234v2.953H15.83c-1.491 0-1.956.925-1.956 1.874V12h3.328l-.532 3.469h-2.796v8.385C19.612 22.954 24 17.99 24 12z'/%3E%3C/svg%3E"); }
.rl-gicon { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath fill='%23FFC107' d='M43.611 20.083H42V20H24v8h11.303c-1.649 4.657-6.08 8-11.303 8-6.627 0-12-5.373-12-12s5.373-12 12-12c3.059 0 5.842 1.154 7.961 3.039l5.657-5.657C34.046 6.053 29.268 4 24 4 12.955 4 4 12.955 4 24s8.955 20 20 20 20-8.955 20-20c0-1.341-.138-2.65-.389-3.917z'/%3E%3Cpath fill='%23FF3D00' d='m6.306 14.691 6.571 4.819C14.655 15.108 18.961 12 24 12c3.059 0 5.842 1.154 7.961 3.039l5.657-5.657C34.046 6.053 29.268 4 24 4 16.318 4 9.656 8.337 6.306 14.691z'/%3E%3Cpath fill='%234CAF50' d='M24 44c5.166 0 9.86-1.977 13.409-5.192l-6.19-5.238A11.91 11.91 0 0 1 24 36c-5.202 0-9.619-3.317-11.283-7.946l-6.522 5.025C9.505 39.556 16.227 44 24 44z'/%3E%3Cpath fill='%231976D2' d='M43.611 20.083H42V20H24v8h11.303a12.04 12.04 0 0 1-4.087 5.571l.003-.002 6.19 5.238C36.971 39.205 44 34 44 24c0-1.341-.138-2.65-.389-3.917z'/%3E%3C/svg%3E"); }
/* pagination (reviews page) */
.rl-pg { display: flex; justify-content: center; gap: 8px; margin: 28px 0 8px; flex-wrap: wrap; }
.rl-pg-link {
  min-width: 40px; height: 40px; padding: 0 12px;
  border: 1px solid #5eca67; border-radius: 10px; background: #fff;
  color: #081b12; font-weight: 700; font-size: 15px; cursor: pointer;
}
.rl-pg-link:hover { background: #e7f7ec; }
.rl-pg-current { background: #5eca67; color: #081b12; }
.rl-pg-gap { align-self: center; color: #fff; }
/* "See all our reviews" line — the reviews page section is DARK (#081b12) */
.rl-reviews-more { text-align: center; margin-top: 18px; font-weight: 600; }
.reviews .rl-reviews-more { color: #fff; }
.reviews .rl-reviews-more a { color: #5eca67; }
.carousel-reviews .rl-reviews-more { color: #081b12; }

/* home / hub carousels: center the "Read More Reviews" button */
.carousel-reviews__wrap > .button {
  display: block;
  width: max-content;
  max-width: 100%;
  margin-left: auto;
  margin-right: auto;
}

/* ---- Navbar must sit above hero media on scroll */
.navbar, .w-nav { z-index: 1000; }

/* ---- Location section on mobile: stack info first, map below (the
   position:absolute map overlapped content off-platform) */
@media screen and (max-width: 991px) {
  .location.full-location > .w-layout-blockcontainer.container,
  .location.full-location > .container {
    display: flex;
    flex-direction: column;
  }
  .location.full-location .map-absolute {
    position: relative;
    width: 100%;
    margin-left: 0;
    height: 320px;
    margin-top: 24px;
    border-radius: 12px;
    overflow: hidden;
    order: 2;
  }
  .location.full-location .map-absolute iframe { width: 100%; height: 100%; border: 0; }
  .location.full-location .location__wrap.reverse {
    grid-template-columns: 1fr;
    order: 1;
  }
}

/* ---- iOS: inputs under 16px trigger auto-zoom (horizontal scroll) */
@media screen and (max-width: 767px) {
  .quote__form-input, .quote__form-input.textarea { font-size: 16px; }
}

/* ---- Service-areas hub search box */
.area-search { max-width: 520px; margin: 0 auto 2rem; }
.area-search__input {
  width: 100%;
  box-sizing: border-box;
  padding: 0.85rem 1.1rem;
  font-size: 1rem;
  border: 1px solid #d9d9d9;
  border-radius: 8px;
  outline: none;
  background: #fff;
}
.area-search__input:focus { border-color: var(--color--secondary); }
.area-search__empty { text-align: center; margin-top: 1rem; opacity: .8; }
.sr-only {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

/* ---- FAQ accordion: deterministic open/close via .is-open (faq.js), not IX2.
   !important beats the template's inline height/opacity/display styles. */
.faqs__item .faq__answer-wrap {
  display: block !important;
  overflow: hidden;
  transition: opacity .3s ease;
}
.faqs__item:not(.is-open) .faq__answer-wrap {
  height: 0 !important;
  opacity: 0 !important;
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}
.faqs__item.is-open .faq__answer-wrap {
  height: auto !important;
  opacity: 1 !important;
}
.faq__question-wrap { cursor: pointer; }
.faq__icon-vertical { transition: opacity .2s ease, transform .2s ease; }
.faqs__item.is-open .faq__icon-vertical { opacity: 0 !important; }

/* ---- Mobile nav: deterministic hamburger/close icon swap (IX2 can be late) */
.menu-button .close-icon-wrap { display: none; }
.menu-button.w--open .hamburger-icon { display: none !important; }
.menu-button.w--open .close-icon-wrap { display: flex !important; }
