/* JSL Painting — call-first landing system.
   Brand pulled from the live site: purple #7c4bc0, Poppins, dark #313131.
   Divi's leftover default blue (#2ea3f2) is deliberately not used.
   Tap targets are >=48px because the primary conversion is a phone call
   made with a thumb. */

:root{
  --jsl-purple:#7c4bc0;
  --jsl-purple-dk:#5f3799;
  --jsl-ink:#22252b;
  --jsl-body:#3f4551;
  --jsl-line:#e4e0ee;
  --jsl-bg:#ffffff;
  --jsl-bg-alt:#f7f5fb;
  --jsl-call:#1c9d4d;
  --jsl-call-dk:#16803f;
  --jsl-radius:10px;
  --jsl-wrap:1120px;
  --jsl-shadow:0 4px 18px rgba(34,37,43,.10);
  --jsl-font:'Poppins',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
}

.jsl-page,.jsl-stickybar,.jsl-modal{font-family:var(--jsl-font);color:var(--jsl-body);line-height:1.6;}
.jsl-page *,.jsl-modal *{box-sizing:border-box;}
.jsl-wrap{max-width:var(--jsl-wrap);margin:0 auto;padding:0 20px;}
.jsl-page h1,.jsl-page h2,.jsl-page h3,.jsl-modal h2,.jsl-modal h3{color:var(--jsl-ink);font-weight:700;line-height:1.2;margin:0 0 .5em;}
.jsl-page p{margin:0 0 1em;}
/* Scoped away from buttons: a bare `.jsl-page a` rule outranks `.jsl-btn--call`
   on specificity and repainted the primary call button's text purple-on-green. */
.jsl-page a:not([class*="jsl-btn"]):not([class*="jsl-stickybar"]){color:var(--jsl-purple-dk);}

/* ---------- hero ---------- */
.jsl-hero{background:linear-gradient(160deg,#f3eeff 0%,#fff 65%);padding:44px 0 36px;border-bottom:1px solid var(--jsl-line);}
.jsl-hero__eyebrow{text-transform:uppercase;letter-spacing:.09em;font-size:.74rem;font-weight:600;color:var(--jsl-purple-dk);margin:0 0 .6em;}
.jsl-hero__h1{font-size:clamp(1.75rem,5vw,2.85rem);}
.jsl-hero__lede{font-size:clamp(1rem,2.4vw,1.15rem);max-width:60ch;}
.jsl-hero__actions{display:flex;flex-wrap:wrap;gap:12px;margin:22px 0 18px;}
.jsl-trust{list-style:none;display:flex;flex-wrap:wrap;gap:8px 18px;padding:0;margin:0;font-size:.85rem;color:var(--jsl-ink);}
.jsl-trust li{position:relative;padding-left:20px;font-weight:600;}
.jsl-trust li::before{content:"\2713";position:absolute;left:0;color:var(--jsl-call);font-weight:700;}

/* ---------- buttons: call is always the loudest ---------- */
.jsl-btn{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;
  min-height:56px;padding:10px 26px;border-radius:var(--jsl-radius);border:2px solid transparent;
  font-weight:700;text-decoration:none;cursor:pointer;text-align:center;font-size:1rem;
  font-family:inherit;transition:transform .12s ease,box-shadow .12s ease,background .12s ease;}
.jsl-btn:active{transform:translateY(1px);}
.jsl-btn__label{display:block;}
.jsl-btn__sub{display:block;font-weight:500;font-size:.76rem;opacity:.92;margin-top:1px;}
.jsl-btn--call,.jsl-page a.jsl-btn--call{background:var(--jsl-call);color:#fff;box-shadow:var(--jsl-shadow);}
.jsl-btn--call:hover,.jsl-page a.jsl-btn--call:hover{background:var(--jsl-call-dk);color:#fff;}
.jsl-btn--ghost{background:#fff;color:var(--jsl-purple-dk);border-color:var(--jsl-purple);}
.jsl-btn--ghost:hover{background:var(--jsl-purple);color:#fff;}
.jsl-btn--lg{min-height:64px;font-size:1.06rem;}
.jsl-btn--block{display:flex;width:100%;}
.jsl-btn--submit{background:var(--jsl-purple);color:#fff;width:100%;}
.jsl-btn--submit:hover{background:var(--jsl-purple-dk);}
.jsl-inline-tel{font-weight:700;white-space:nowrap;}

/* ---------- sections ---------- */
.jsl-sec{padding:40px 0;}
.jsl-sec--alt{background:var(--jsl-bg-alt);}
.jsl-sec h2{font-size:clamp(1.35rem,3.4vw,1.9rem);}
.jsl-lead{font-size:1.06rem;}
.jsl-cols{display:grid;grid-template-columns:1fr;gap:28px;}
.jsl-zips{background:var(--jsl-bg-alt);border-left:4px solid var(--jsl-purple);padding:12px 16px;border-radius:0 8px 8px 0;font-size:.94rem;}
.jsl-svc{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:1fr;gap:10px;}
.jsl-svc li{background:#fff;border:1px solid var(--jsl-line);border-radius:8px;padding:12px 14px;font-weight:600;color:var(--jsl-ink);}

/* ---------- CTA band ---------- */
.jsl-cta{background:var(--jsl-purple);color:#fff;padding:34px 0;}
.jsl-cta__inner{display:grid;gap:20px;}
.jsl-cta__h{color:#fff;font-size:clamp(1.3rem,3.2vw,1.8rem);margin-bottom:.35em;}
.jsl-cta__sub{margin:0 0 .5em;opacity:.95;}
.jsl-cta__rea{font-size:.82rem;opacity:.88;margin:0;}
.jsl-cta__actions{display:flex;flex-wrap:wrap;gap:12px;}
.jsl-cta .jsl-btn--ghost{background:transparent;color:#fff;border-color:rgba(255,255,255,.7);}
.jsl-cta .jsl-btn--ghost:hover{background:#fff;color:var(--jsl-purple-dk);}

/* ---------- testimonials / faq ---------- */
.jsl-quotes{display:grid;gap:16px;}
.jsl-quotes blockquote{margin:0;background:#fff;border:1px solid var(--jsl-line);border-radius:10px;padding:18px 20px;box-shadow:var(--jsl-shadow);}
.jsl-quotes p{font-style:italic;margin:0 0 .6em;}
.jsl-quotes cite{font-style:normal;font-weight:700;color:var(--jsl-purple-dk);}
.jsl-faq__item{border-bottom:1px solid var(--jsl-line);padding:4px 0;}
.jsl-faq__item summary{cursor:pointer;font-weight:600;color:var(--jsl-ink);padding:12px 0;list-style:none;position:relative;padding-right:28px;min-height:44px;display:flex;align-items:center;}
.jsl-faq__item summary::-webkit-details-marker{display:none;}
.jsl-faq__item summary::after{content:"+";position:absolute;right:4px;font-size:1.35rem;color:var(--jsl-purple);line-height:1;}
.jsl-faq__item[open] summary::after{content:"\2013";}
.jsl-faq__a{padding:0 0 12px;}

/* ---------- form ---------- */
.jsl-form{background:#fff;border:1px solid var(--jsl-line);border-radius:12px;padding:20px;box-shadow:var(--jsl-shadow);}
.jsl-form__h{font-size:1.15rem;margin-bottom:.25em;}
.jsl-form__sub{font-size:.9rem;margin-bottom:1em;}
.jsl-form__row{margin:0 0 14px;}
.jsl-form__row label{display:block;font-weight:600;font-size:.88rem;color:var(--jsl-ink);margin-bottom:5px;}
.jsl-form__row input{width:100%;min-height:48px;padding:10px 12px;border:1px solid #c8c2d8;border-radius:8px;font-size:16px;font-family:inherit;}
.jsl-form__row input:focus{outline:3px solid rgba(124,75,192,.35);border-color:var(--jsl-purple);}
.jsl-form__alt{text-align:center;font-size:.9rem;margin:12px 0 0;}
.jsl-form__msg{margin-top:10px;font-weight:600;}
.jsl-form__msg.is-ok{color:var(--jsl-call-dk);}
.jsl-form__msg.is-err{color:#b3261e;}
.jsl-hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden;}

/* ---------- nearby links ---------- */
.jsl-nearby__list{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:8px;}
.jsl-nearby__list a{display:inline-block;background:var(--jsl-bg-alt);border:1px solid var(--jsl-line);
  border-radius:999px;padding:8px 16px;text-decoration:none;font-size:.9rem;font-weight:600;min-height:40px;line-height:24px;}
.jsl-nearby__list a:hover{background:var(--jsl-purple);color:#fff;border-color:var(--jsl-purple);}

/* ---------- sticky mobile call bar ---------- */
.jsl-stickybar{position:fixed;left:0;right:0;bottom:0;z-index:9998;display:flex;gap:8px;padding:8px 10px;
  background:rgba(255,255,255,.97);border-top:1px solid var(--jsl-line);box-shadow:0 -3px 14px rgba(0,0,0,.10);
  backdrop-filter:saturate(160%) blur(6px);}
.jsl-stickybar__call{flex:1 1 62%;display:flex;align-items:center;gap:10px;background:var(--jsl-call);color:#fff;
  text-decoration:none;border-radius:10px;padding:9px 14px;min-height:52px;font-weight:700;}
.jsl-stickybar__call:hover{background:var(--jsl-call-dk);color:#fff;}
.jsl-stickybar__icon{font-size:1.35rem;line-height:1;}
.jsl-stickybar__txt strong{display:block;font-size:.98rem;line-height:1.15;}
.jsl-stickybar__txt small{display:block;font-size:.82rem;opacity:.95;}
.jsl-stickybar__quote{flex:1 1 38%;background:#fff;color:var(--jsl-purple-dk);border:2px solid var(--jsl-purple);
  border-radius:10px;font-weight:700;font-size:.92rem;font-family:inherit;cursor:pointer;min-height:52px;}
.jsl-stickybar__quote:hover{background:var(--jsl-purple);color:#fff;}
body.jsl-has-stickybar{padding-bottom:76px;}

/* ---------- modal ---------- */
.jsl-modal{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;padding:16px;}
.jsl-modal[hidden]{display:none;}
.jsl-modal__backdrop{position:absolute;inset:0;background:rgba(25,20,40,.62);}
.jsl-modal__panel{position:relative;background:#fff;border-radius:14px;max-width:440px;width:100%;
  max-height:92vh;overflow-y:auto;padding:26px 22px;box-shadow:0 18px 50px rgba(0,0,0,.32);}
.jsl-modal__x{position:absolute;top:6px;right:8px;background:none;border:0;font-size:1.9rem;line-height:1;
  color:#8a8398;cursor:pointer;min-width:44px;min-height:44px;}
.jsl-modal__h{font-size:1.4rem;margin-bottom:.2em;}
.jsl-modal__sub{font-size:.94rem;margin-bottom:1em;}
.jsl-modal__or{text-align:center;position:relative;margin:18px 0;color:#8a8398;font-size:.85rem;}
.jsl-modal__or::before{content:"";position:absolute;top:50%;left:0;right:0;height:1px;background:var(--jsl-line);}
.jsl-modal__or span{position:relative;background:#fff;padding:0 12px;}
.jsl-modal .jsl-form{border:0;box-shadow:none;padding:0;}

/* ---------- responsive ---------- */
@media (min-width:720px){
  .jsl-hero{padding:64px 0 52px;}
  .jsl-sec{padding:56px 0;}
  .jsl-cols{grid-template-columns:1.65fr 1fr;gap:40px;}
  .jsl-svc{grid-template-columns:1fr 1fr;}
  .jsl-quotes{grid-template-columns:repeat(3,1fr);}
  .jsl-cta__inner{grid-template-columns:1.5fr 1fr;align-items:center;}
  .jsl-cta__actions{justify-content:flex-end;flex-direction:column;}
  /* Desktop has the header phone number visible; the bar is a mobile device. */
  .jsl-stickybar{display:none;}
  body.jsl-has-stickybar{padding-bottom:0;}
}
@media (prefers-reduced-motion:reduce){
  .jsl-btn{transition:none;}
}


/* ---------- integration with the surrounding Divi theme ----------
   Divi's dynamic CSS stays enqueued on purpose: it styles the shared header,
   logo, nav and footer, so our pages match the rest of the site. Two things
   have to be corrected where it bleeds into our markup. */

/* 1. Divi's page template prints its own <h1 class="entry-title">, which
      duplicated our hero heading — two identical H1s on every location page. */
body.wsw-jsl-page h1.entry-title.main_title,
body.wsw-jsl-page .et_post_meta_wrapper > h1.entry-title { display: none; }

/* 2. Divi's content styles re-apply list bullets and padding to our lists. */
body.wsw-jsl-page ul.jsl-trust,
body.wsw-jsl-page ul.jsl-svc,
body.wsw-jsl-page ul.jsl-nearby__list { list-style: none; padding-left: 0; }
body.wsw-jsl-page ul.jsl-trust > li,
body.wsw-jsl-page ul.jsl-svc > li,
body.wsw-jsl-page ul.jsl-nearby__list > li { list-style: none; }
body.wsw-jsl-page ul.jsl-trust > li::marker,
body.wsw-jsl-page ul.jsl-svc > li::marker,
body.wsw-jsl-page ul.jsl-nearby__list > li::marker { content: ""; }

/* ---------- Areas We Serve strip (legacy pages) ---------- */
.jsl-areas{background:var(--jsl-bg-alt);border-top:1px solid var(--jsl-line);padding:28px 0 34px;font-family:var(--jsl-font);}
.jsl-areas__h{font-size:1.05rem;color:var(--jsl-ink);margin:0 0 12px;font-weight:700;}
.jsl-areas__list{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px;}
.jsl-areas__list li{list-style:none;}
.jsl-areas__list a{display:inline-block;background:#fff;border:1px solid var(--jsl-line);border-radius:999px;
  padding:7px 14px;font-size:.85rem;font-weight:600;color:var(--jsl-purple-dk);text-decoration:none;min-height:38px;line-height:24px;}
.jsl-areas__list a:hover{background:var(--jsl-purple);color:#fff;border-color:var(--jsl-purple);}
/* Divi's ::marker pierces list-style:none (same leak as the trust list). */
.jsl-areas__list li::marker{content:"";}
