/* Quality Paving — post-migration custom CSS (loaded after quality-paving.css).
   Off-Webflow fixes + the JS-driven components the generator injects. */

:root { --qp-accent: #da220b; }

/* ---- accessibility helper ---- */
.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}

/* ---- navbar must sit above hero video / overlays on scroll ---- */
.navbar.w-nav{z-index:1000}

/* ---- service-card + service-area hover (was Webflow IX, unreliable off-platform) ---- */
.service-boxes__title,.service-boxes__link{transition:color .2s ease}
.service-boxes__title:hover,.service-boxes__link:hover{color:var(--qp-accent)}
.service-area__text{transition:color .2s ease}
.service-area__text:hover{color:var(--qp-accent)}
.s-area-item h4 a{color:var(--color--text,#0d3453)!important;text-decoration:none;transition:color .2s ease}
.s-area-item .flex-link{transition:color .2s ease}
.s-area-item:hover h4 a,.s-area-item h4 a:hover{color:var(--qp-accent)!important}

/* ---- contact form success message (green; replaces the form on submit) ---- */
.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;font-size:17px;line-height:1.5;
}
.quote__form-success.w-form-done > div,.w-form-done > div{color:#0f5132}

/* ---- ALTCHA widget sizing ---- */
altcha-widget{--altcha-max-width:100%;display:block;margin-bottom:14px}

/* =========================================================================
   Service-areas hub: instant search box
   ========================================================================= */
.area-search{max-width:560px;margin:0 auto 2rem}
.area-search__input{
  width:100%;box-sizing:border-box;padding:.9rem 1.1rem;font-size:16px;
  border:1.5px solid #d9d9d9;border-radius:10px;outline:none;
  font-family:inherit;color:var(--color--text,#0d3453);transition:border-color .15s ease;
}
.area-search__input:focus{border-color:var(--qp-accent)} /* border-only focus (no shadow ring -> no iOS h-scroll) */
.area-search__empty{text-align:center;margin-top:1rem;opacity:.85}

/* =========================================================================
   Pagination (area mini-lists, hub, gallery) — shared button strip
   ========================================================================= */
.area-paginate{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;align-items:center;margin:32px auto 0}
.area-paginate__btn{
  appearance:none;cursor:pointer;border:1.5px solid #e0e0e0;background:#fff;
  color:var(--color--text,#0d3453);font-family:inherit;font-weight:600;font-size:15px;
  min-width:42px;padding:9px 14px;border-radius:9px;transition:all .15s ease;line-height:1;
}
.area-paginate__btn:hover:not(:disabled){border-color:var(--qp-accent);color:var(--qp-accent)}
.area-paginate__btn.is-active{background:var(--qp-accent);border-color:var(--qp-accent);color:#fff}
.area-paginate__btn:disabled{opacity:.4;cursor:default}

/* =========================================================================
   Gallery service-filter tabs
   ========================================================================= */
.gallery__filter-list{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin:0 auto 32px}
.gallery__filter-btn{
  appearance:none;cursor:pointer;border:1.5px solid #e0e0e0;background:#fff;
  color:var(--color--text,#0d3453);font-family:inherit;font-weight:600;font-size:15px;
  padding:10px 20px;border-radius:999px;transition:all .15s ease;line-height:1;
}
.gallery__filter-btn:hover{border-color:var(--qp-accent);color:var(--qp-accent)}
.gallery__filter-btn.is-active{background:var(--qp-accent);border-color:var(--qp-accent);color:#fff}

/* =========================================================================
   Elfsight reviews — load-more button + home carousel button centering
   ========================================================================= */
.reviews .es-load-more-button-container{margin-top:40px!important;display:flex!important;justify-content:center!important}
.reviews .es-load-more-button.es-button-base-container{
  font-family:"DM Sans","Ubuntu",sans-serif!important;padding:14px 30px!important;
  min-height:0!important;height:auto!important;border-radius:10px!important;
  font-weight:700!important;font-size:16px!important;
}
.carousel-reviews__wrap > .button{display:block;width:max-content;max-width:100%;margin-left:auto;margin-right:auto}

/* =========================================================================
   Mobile layout fixes (off-Webflow breakage)
   ========================================================================= */
@media screen and (max-width:991px){
  /* Location: .map-absolute is position:absolute on desktop; stack info then map on mobile */
  .location.full-location .map-absolute{
    position:relative;width:100%;margin-left:0;height:320px;margin-top:24px;
    border-radius:12px;overflow:hidden;
  }
  .location.full-location .map-absolute iframe{width:100%;height:100%;border:0}
}

/* iOS: prevent input auto-zoom (>=16px already set above for search); keep form inputs >=16px */
@media screen and (max-width:767px){
  .quote__form-input,.w-input,.w-select{font-size:16px}
}
