/* ==============================================
   FramelessFramework • LocateServices custom.css
   v.ls010 (LOCKED, sparkle-footer system)
   ----------------------------------------------
   Sections:
   - Global tokens + base
   - Top Bar / Header / Nav (icon-font purge + one true caret)
   - Home Hero (Ken Burns, intrinsic ratio, polished)
   - Benefit Cards (locked)
   - Nationwide Solution (bougie pass)
   - Why Choose Us (centered icons)
   - Testimonials (Spotlight slider + quote seal)
   - Header harmonizer (Why / Testimonials)
   - CTA Section
   - Footer (sparkle-footer system, locked)
   ============================================== */

/* ========== GLOBAL TOKENS / BASE ========== */
:root {
  --brand-orange: #f58220;
  --brand-orange-dark: #db6500;
  --text: #2b2b2b;
  --muted: #5b6b7a;
  --border: rgba(0,0,0,.08);
  --shadow-1: 0 2px 8px rgba(0,0,0,.06);
  --shadow-2: 0 14px 36px rgba(0,0,0,.10);
}

*, *::before, *::after { box-sizing: border-box; }

html { scroll-behavior: auto; } /* JS owns smooth-scrolling */

body {
  font-family: "Helvetica Neue", Arial, sans-serif;
  color: var(--text);
  background-color: #fff;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

a {
  color: var(--brand-orange);
  text-decoration: none;
}
a:hover, a:focus {
  color: var(--brand-orange-dark);
  text-decoration: underline;
}

/* Accessible focus ring */
:focus-visible {
  outline: 2px solid var(--brand-orange);
  outline-offset: 2px;
}

/* Offset in-page anchors for fixed header */
.section-anchor:target { scroll-margin-top: 96px; }

/* ========== TOP BAR ========== */
#sp-top-bar {
  background-color: var(--brand-orange);
  color: #fff;
  font-size: 1.05rem;
  line-height: 1.6;
  padding: .5rem 0;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 1rem;
}
#sp-top-bar a { color:#fff; }
#sp-top-bar a:hover { color: var(--brand-orange-dark); }

/* ========== HEADER ========== */
#sp-header {
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding: 2.5rem 1rem;
  background: #fff !important;
}
#sp-header .logo img {
  max-height:100px;
  height:auto;
  width:auto;
  display:block;
}

/* ========== NAVIGATION (no icon fonts) ========== */
.sp-megamenu-parent, .sp-megamenu-parent li { list-style:none; }

.sp-megamenu-parent > li > a {
  font-size: 1.1rem;
  font-weight:500;
  padding:.5rem 1rem;
  color: var(--text);
  position:relative;
  display:inline-flex;
  align-items:center;
  line-height:1.4;
}
.sp-megamenu-parent > li > a:hover,
.sp-megamenu-parent > li.active > a {
  color: var(--brand-orange);
}

/* Tofu/FA purge */
.sp-megamenu-parent li > a i,
.sp-megamenu-parent li > a span.menu-toggler,
.sp-megamenu-parent li > a .menu-toggler,
.sp-megamenu-parent li > a [class^="bi-"],
.sp-megamenu-parent li > a [class*=" bi-"],
.sp-megamenu-parent .sp-has-child > a i,
.sp-megamenu-parent .sp-has-child > a i.fa,
.sp-megamenu-parent .sp-has-child > a i.fas,
.sp-megamenu-parent .sp-has-child > a i.bi {
  display:none !important;
  content:none !important;
  font-size:0 !important;
  width:0 !important;
  height:0 !important;
  overflow:hidden !important;
  color:transparent !important;
  background:none !important;
  border:0 !important;
  padding:0 !important;
  margin:0 !important;
  text-indent:-9999px !important;
  line-height:0 !important;
  vertical-align:top !important;
}

/* Neutralize default carets */
.sp-megamenu-parent > li > a.dropdown-toggle::after { content:none !important; }

/* Remove stray markers for non-parent items */
.sp-megamenu-parent > li:not(.sp-has-child) > a::before,
.sp-megamenu-parent > li:not(.sp-has-child) > a::after {
  content:none !important;
}

/* One true caret for parents */
.sp-megamenu-parent > li.sp-has-child > a::after {
  content:"" !important;
  display:inline-block;
  margin-left:.4em;
  vertical-align:middle;
  width:0; height:0;
  border-left:.3em solid transparent;
  border-right:.3em solid transparent;
  border-top:.3em solid currentColor;
  position:relative;
  top:-.05em;
  transition:transform .2s ease;
}
.sp-megamenu-parent > li.sp-has-child:hover > a::after,
.sp-megamenu-parent > li.sp-has-child:focus-within > a::after {
  transform: rotate(180deg);
}

/* Keyboard visibility on nav */
.sp-megamenu-parent > li > a:focus-visible { text-decoration: underline; }

/* Mobile menu visibility toggles */
@media (max-width: 991.98px){
  .sp-megamenu-wrapper{ display:none !important; }
  .offcanvas-menu{ display:block !important; }
}
@media (min-width: 992px){
  .offcanvas-menu{ display:none !important; }
}
/* =========================================================
   HOME HERO — Ken Burns (intrinsic ratio, polished)
   ========================================================= */

#home-hero {
  position: relative;
  min-height: 75vh; /* fallback */
  overflow: hidden;
  color: #fff;
}

/* Ken Burns viewport holds aspect ratio */
#home-hero .kb-viewport {
  position: relative;
  width: 100%;
  aspect-ratio: 1920 / 750; /* ~2.56:1, prevents CLS jump */
  overflow: hidden;
  z-index: 0;
}

/* Picture & image fill */
#home-hero .kb-picture,
#home-hero .kb-picture > img.kb-image {
  display: block;
  width: 100%;
  height: 100%;
}

#home-hero .kb-image {
  object-fit: cover;
  object-position: center;
  transform: scale(1.05);
  animation: kenburnsZoom 22s ease-in-out infinite alternate;
  will-change: transform;
  backface-visibility: hidden;
  -webkit-font-smoothing: antialiased;
}

/* Overlay gradient */
#home-hero .overlay {
  background: linear-gradient(to top, rgba(0,0,0,.55) 0%, rgba(0,0,0,0) 45%),
              rgba(17,22,19,.18);
  position: absolute;
  inset: 0;
  z-index: 1;
}

/* Captioning */
#home-hero .caption-wrap {
  position: absolute;
  inset: 0;
  z-index: 2;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  text-align: center;
  padding: 2rem 1rem;
}
#home-hero .hero-caption { margin-bottom: 3rem; }

#home-hero .hero-caption h1 {
  font-weight: 700;
  line-height: 1.15;
  font-size: clamp(2.25rem, 3.2vw + 1rem, 3.75rem);
  margin-bottom: .85rem;
  text-shadow: 0 2px 8px rgba(0,0,0,.35);
  position: relative;
}
#home-hero .hero-caption h1::after {
  content:"";
  display:block;
  margin:.6rem auto 0;
  width:96px; height:3px;
  background: var(--brand-orange);
  border-radius:2px;
  opacity:.95;
}
#home-hero .hero-caption p {
  font-size: clamp(1.05rem, .6vw + .9rem, 1.35rem);
  font-weight:500;
  letter-spacing:.01em;
  margin:0;
  text-shadow:0 2px 6px rgba(0,0,0,.3);
}

/* Ken Burns keyframes */
@keyframes kenburnsZoom {
  0%   { transform: scale(1.05) translate(0,0); }
  100% { transform: scale(1.15) translate(-2%,-2%); }
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce){
  #home-hero .kb-image {
    animation:none;
    transform:none;
  }
}

/* Breakpoints */
@media (max-width: 992px){
  #home-hero { min-height:65vh; }
  #home-hero .hero-caption{ margin-bottom:2rem; }
  #home-hero .hero-caption h1::after{ width:72px; }
}
@media (max-width: 576px){
  #home-hero { min-height:60vh; }
  #home-hero .hero-caption{ margin-bottom:1.5rem; }
  #home-hero .hero-caption h1::after{ width:56px; }
}
/* =========================================================
   SECTION: benefit-cards (locked)
   ========================================================= */

#benefit-cards .benefit-card {
  border: 1px solid var(--border);
  border-radius: .5rem;
  padding: 1.5rem 1rem;
  background: #fff;
  transition: transform .2s ease;
}
#benefit-cards .benefit-card:hover {
  transform: translateY(-4px);
}
#benefit-cards .benefit-icon svg {
  display: inline-block;
  width: 2rem; height: 2rem;
  line-height: 1;
  color: var(--brand-orange);
  transition: color .2s ease;
}
#benefit-cards .benefit-card:hover .benefit-icon svg {
  color: var(--brand-orange-dark);
}
#benefit-cards .benefit-title {
  font-size: 1.125rem;
  font-weight: 600;
  margin: .25rem 0 .5rem;
}
#benefit-cards .benefit-text {
  font-size: .95rem;
  margin: 0;
}
#benefit-cards hr {
  border-top: 1px solid var(--border);
  background: none;
  margin: .75rem 0 1rem;
}
#benefit-cards .btn-book-job {
  background: var(--brand-orange);
  color: #fff;
  font-weight: 600;
  border: none;
  border-radius: .25rem;
  padding: .5rem 1.1rem;
  text-decoration: none;
}
#benefit-cards .btn-book-job:hover {
  background: var(--brand-orange-dark);
  color: #fff;
}
#benefit-cards .btn-book-job:focus-visible {
  outline: 2px solid rgba(0,0,0,.25);
  outline-offset: 2px;
}

/* =========================================================
   SECTION: nationwide-solution (Bougie Pass)
   ========================================================= */

#nationwide-solution {
  position: relative;
  background: linear-gradient(135deg, #f58220 0%, #9b59b6 100%);
  color: var(--text);
}
#nationwide-solution::after {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(255,255,255,.08);
  pointer-events: none;
}
#nationwide-solution > .container {
  position: relative;
  z-index: 1;
}
#nationwide-solution .col-map {
  padding-left: clamp(1.25rem, 4vw, 5rem);
}
#nationwide-solution .content-box {
  margin-right: clamp(1rem, 3vw, 3rem);
}

/* Glassy card */
#nationwide-solution .content-box {
  position: relative;
  background: rgba(255,255,255,.92);
  -webkit-backdrop-filter: blur(6px);
  backdrop-filter: blur(6px);
  border: 1px solid rgba(255,255,255,.65);
  border-radius: 12px;
  box-shadow: 0 18px 42px rgba(0,0,0,.14),
              0 3px 10px rgba(0,0,0,.06);
}
#nationwide-solution .content-box::before {
  content: "";
  position: absolute;
  left: 0; right: 0; top: 0;
  height: 3px;
  border-radius: 12px 12px 0 0;
  background: linear-gradient(
    90deg,
    var(--brand-orange) 0%,
    #ffb36b 40%,
    #ffd9b0 100%
  );
  opacity: .9;
}
#nationwide-solution .section-title {
  font-size: 1.35rem;
  font-weight: 800;
  letter-spacing: .02em;
  text-transform: uppercase;
  color: var(--brand-orange);
  margin-bottom: .5rem;
}
#nationwide-solution .cta-title {
  font-size: 1.05rem;
  font-weight: 800;
  letter-spacing: .02em;
  text-transform: uppercase;
  color: var(--brand-orange);
  margin-top: 1rem;
}
#nationwide-solution .col-map img {
  max-width: 100%;
  height: auto;
}

@media (max-width: 991.98px) {
  #nationwide-solution .content-box {
    margin-right: 0;
  }
  #nationwide-solution .col-map {
    padding-left: 0;
    margin-top: 1.5rem;
  }
}
/* =========================================================
   SECTION: why-choose-us
   ========================================================= */

#why-choose-us .section-title {
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--brand-orange);
}
#why-choose-us p {
  color: #444;
}
#why-choose-us .why-card {
  border: 1px solid var(--border);
  border-radius: .5rem;
  background: #fff;
  transition: transform .2s ease, box-shadow .2s ease;
}
#why-choose-us .why-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 10px 20px rgba(0,0,0,.08);
}
#why-choose-us .why-icon {
  display: block;
  margin-left: auto;
  margin-right: auto;
  max-height: 80px;
  width: auto;
}
#why-choose-us .why-title {
  font-size: 1.2rem;
  font-weight: 600;
  margin-bottom: .5rem;
}
#why-choose-us .why-text {
  font-size: .95rem;
  margin: 0;
  color: var(--text);
}

/* =========================================================
   SECTION: testimonials — Spotlight slider + quote seal
   ========================================================= */

#testimonials h2 {
  color: var(--brand-orange);
}

/* Track — scroll-snap carousel */
#testimonials .testi-track {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: min(100%, 720px);
  gap: 2rem;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scroll-behavior: smooth;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
}
#testimonials .testi-track::-webkit-scrollbar {
  display: none;
}
#testimonials .testi-slide {
  scroll-snap-align: start;
  display: flex;
  justify-content: center;
}

/* Card */
#testimonials .testi-card {
  position: relative;
  overflow: visible;
  max-width: 720px;
  width: 100%;
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 1rem;
  padding: 3rem 2rem 2rem;
  box-shadow: 0 16px 38px rgba(0,0,0,.12),
              0 2px 8px rgba(0,0,0,.06);
  text-align: left;
}
#testimonials .testi-text {
  font-size: 1.05rem;
  line-height: 1.75;
  margin: 0 0 1.5rem;
  color: var(--text);
}
#testimonials .testi-meta h5 {
  font-weight: 700;
  color: var(--text);
  margin: 0;
}
#testimonials .testi-meta small {
  font-size: .95rem;
  color: #6b7886;
}

/* Controls */
#testimonials .testi-nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 44px;
  height: 44px;
  border: 0;
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 6px 18px rgba(0,0,0,.12);
  color: var(--brand-orange);
  font-size: 1.5rem;
  cursor: pointer;
  z-index: 2;
}
#testimonials .testi-nav.prev { left: -1rem; }
#testimonials .testi-nav.next { right: -1rem; }
@media (max-width: 992px) {
  #testimonials .testi-nav.prev { left: .25rem; }
  #testimonials .testi-nav.next { right: .25rem; }
}
@media (max-width: 767.98px) {
  #testimonials .testi-nav { display: none; }
}

/* Dots */
#testimonials .testi-dots {
  display: flex;
  justify-content: center;
  gap: .5rem;
}
#testimonials .testi-dots .dot {
  width: 12px;
  height: 12px;
  border-radius: 50%;
  border: 0;
  cursor: pointer;
  background: rgba(0,0,0,.2);
}
#testimonials .testi-dots .dot.is-active {
  background: var(--brand-orange);
}

/* Quote HR “seal” */
#testimonials .testi-shell {
  position: relative;
  --medal: 4rem;
  --glyph: 2.4rem;
  --hr: 3px;
  --nudge: 10%;
  padding-top: calc(var(--medal) + 1.75rem);
  background-image: linear-gradient(
    90deg,
    rgba(0,0,0,0) 0%,
    rgba(245,130,32,.22) 12%,
    rgba(245,130,32,.55) 50%,
    rgba(245,130,32,.22) 88%,
    rgba(0,0,0,0) 100%
  );
  background-repeat: no-repeat;
  background-size: 100% var(--hr);
  background-position: center calc(var(--medal)/2);
}
#testimonials .testi-shell::before {
  content: "";
  position: absolute;
  left: 50%;
  top: 0;
  width: var(--medal);
  height: var(--medal);
  transform: translateX(-50%);
  border-radius: 999px;
  background: #fff;
  border: 2px solid rgba(245,130,32,.35);
  box-shadow: 0 6px 18px rgba(0,0,0,.12);
  z-index: 2;
}
#testimonials .testi-shell::after {
  content: "\201C";
  position: absolute;
  left: 50%;
  top: calc(var(--medal)/2);
  transform: translate(-50%, calc(-50% + var(--nudge)));
  font-family: Georgia, "Times New Roman", Times, serif;
  font-size: var(--glyph);
  font-weight: 700;
  line-height: 1;
  color: var(--brand-orange);
  z-index: 3;
}
@media (max-width: 576px) {
  #testimonials .testi-shell {
    --medal: 3.2rem;
    --glyph: 2rem;
    --nudge: 9%;
    padding-top: calc(var(--medal) + 1.25rem);
  }
}

/* Remove bullets in testimonial cards */
#testimonials .testi-card :where(ul, ol) {
  list-style: none;
  padding-left: 0;
  margin: 0;
}
#testimonials .testi-card :where(ul, ol) > li::marker {
  content: none;
}
#testimonials .testi-card p::before {
  content: none !important;
}
/* =========================================================
   Header Harmonizer
   ========================================================= */

#why-choose-us .sppb-addon-title,
#why-choose-us .section-title,
#testimonials h2 {
  font-size: clamp(1.6rem, 1.1rem + 1.2vw, 2rem);
  line-height: 1.2;
  font-weight: 800;
  letter-spacing: .01em;
  color: var(--brand-orange);
  margin-bottom: .5rem;
}

#why-choose-us .sppb-addon .sppb-addon-content > p:first-child,
#why-choose-us .section-lead,
#testimonials .lead {
  font-size: clamp(1rem, .9rem + .3vw, 1.125rem);
  color: #444;
  margin-top: .25rem;
}

#testimonials .testi-shell {
  margin-top: .5rem;
}

/* =========================================================
   CTA Section
   ========================================================= */

.cta-section {
  background-color: #f9f9f9;
  padding: 3rem 1rem;
  text-align: center;
}
.cta-section h3 {
  margin-bottom: 1rem;
}
.cta-section p {
  margin-bottom: 1.5rem;
}
.cta-section .btn {
  color: #fff;
  background-color: #669900;
  border-radius: 2rem;
  padding: 0.75rem 2rem;
  font-weight: 600;
  transition: all 0.3s ease;
}
.cta-section .btn:hover,
.cta-section .btn:focus {
  background-color: #336600;
  color: #fff;
  text-decoration: none;
}
/* =========================================================
   FOOTER — Sparkle Footer System (Dark Variant, LOCKED v.ls010)
   Author: Meg + ChatGPT
   Date: 2025-09-12
   Description: Unified dark footer, conflict-free, responsive.
   Replaces: #stupid-footer, prior #sparkle-footer variants
   ========================================================= */

#sp-footer,
#site-footer,
#stupid-footer {
  display: none !important;
}

#sparkle-footer {
  background: #1c1c1c; /* deep neutral */
  color: #f5f5f5;
  text-align: center;
  padding: 3rem 1rem;
  font-family: var(--font-stack-system, "Helvetica Neue", Arial, sans-serif);
  font-size: 0.95rem;
  line-height: 1.6;
  position: relative;
}

/* Decorative Divider Above Footer */
#sparkle-footer::before {
  content: "";
  display: block;
  width: 160px; /* longer, elegant on desktop */
  height: 2px;
  background: linear-gradient(to right, transparent, rgba(255,255,255,.6), transparent);
  margin: 0 auto 2rem auto;
  opacity: 0.8;
}

/* Responsive tweak: shorter divider on small screens */
@media (max-width: 576px) {
  #sparkle-footer::before {
    width: 100px;
  }
}

#sparkle-footer h6 {
  color: #fff;
  font-weight: 600;
  font-size: 1rem;
  margin-bottom: 1rem;
}

#sparkle-footer ul {
  padding-left: 0;
  list-style: none;
  margin: 0;
}

#sparkle-footer a {
  color: #f5f5f5;
  text-decoration: none;
  transition: color .2s ease;
}
#sparkle-footer a:hover,
#sparkle-footer a:focus {
  color: var(--brand-orange);
  text-decoration: underline;
}

#sparkle-footer .social-icons .si {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  margin: 0 .4rem;
  background: rgba(255,255,255,.08);
  color: #fff;
  font-size: 1rem;
  transition: all .2s ease;
}
#sparkle-footer .social-icons .si:hover {
  background: var(--brand-orange);
  color: #fff;
  transform: translateY(-2px);
}

#sparkle-footer small {
  display: block;
  margin-top: 1.5rem;
  font-size: .85rem;
  color: #aaa;
}

/* =========================================================
   Responsive Layout Helpers
   ========================================================= */

/* Tablet and below: stack columns, center text */
@media (max-width: 991.98px) {
  #sparkle-footer .row > div {
    text-align: center;
    margin-bottom: 1.5rem;
  }
  #sparkle-footer .row > div:last-child {
    margin-bottom: 0;
  }
}

/* Mobile: center social icons */
@media (max-width: 767.98px) {
  #sparkle-footer .social-icons {
    justify-content: center;
  }
}

/* Hide hamburger on desktop */
@media (min-width: 992px) {
  .burger-icon {
    display: none !important;
  }
}
 
/* Center logo on mobile */
@media (max-width: 575px) {
  #sp-header {
    padding: 2.5rem 0rem !important;
  }
  #offcanvas-toggler {
    height: 0px !important;
  }
}

/* Center logo on tablet */
@media (min-width: 576px) and (max-width: 991px) {
  #sp-logo {
    margin-top: 12px !important;
  }
}

/* Footer Logos */
.footer-logos {
  display: flex;
  justify-content: flex-end;
  gap: 20px;
  flex-wrap: wrap;
}

/* FIX HERO VIEWPORT ASPECT RATIO */

#home-hero .caption-wrap {
  aspect-ratio: 1920 / 750;
}
#home-hero {
  min-height: 0 !important;
}

@media (max-width: 575px) {
  #home-hero .kb-viewport {
    aspect-ratio: 1920 /1200 !important;
  }
  #home-hero .caption-wrap {
    aspect-ratio: 1920 / 750 !important;
  }
}
/* =========================================================
   COOKIE POLICY BANNER — GDPR CLS Stabilizer
   ========================================================= */

#gdpr-cookie-message {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  width: 100%;
  min-height: 60px; /* adjust to actual banner height */
  z-index: 9999;
}
