/* PrecisionPBS shared design system: root tokens, resets, typography,
   buttons/tags, header, footer, consent banner, accessibility widget,
   scroll-reveal classes, FAQ accordion, CTA band.
   Page-specific section rules (hero, services grid, process, testimonials,
   numbers, service area, and each service page's own content sections)
   stay inline in their own document. No rule in this file is duplicated
   in any page's inline <style> block. */
/* Navy, stripe red and concrete are sampled from the Opa-locka building
   facade (hq-hero.jpg): navy #103562, painted stripe #C71934, wall #C6C6C6.
   The dark surfaces across the site are that navy, not a neutral black, and
   --stripe is the literal paint colour used for the pinstripe rule. */
:root{--red:#A6121F;--red-2:#7E0A16;--red-hot:#C41425;--red-lite:#D92433;--red-dim:rgba(166,18,31,.09);--red-glow:rgba(166,18,31,.35);--stripe:#C71934;--red-on-dark:#E8505C;--navy:#103562;--navy-2:#0A2244;--navy-3:#17457C;--navy-ink:#061630;--concrete:#C6C6C6;--bg:#061630;--bg-2:#0A2244;--panel:#103562;--card:#0C2748;--paper:#FFFFFF;--paper-2:#F6F6F7;--line:rgba(255,255,255,.08);--line-2:rgba(255,255,255,.14);--line-lt:#E8E8EA;--ink:#111318;--smoke:var(--paper-2);--muted:#5E6470;--white:#FFFFFF;--ff-h:'Rajdhani','Barlow Condensed',Arial Narrow,Arial,sans-serif;--ff-b:'Space Grotesk','Inter',system-ui,sans-serif;--r:8px;--r-lg:14px;--ease:cubic-bezier(.22,1,.36,1);--sh:0 2px 8px rgba(15,17,22,.06),0 10px 28px rgba(15,17,22,.08);--sh-lg:0 16px 56px rgba(15,17,22,.14);--mw:1200px}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;font-size:17px;overflow-x:hidden}
body{font-family:var(--ff-b);background:var(--paper);color:var(--ink);line-height:1.7;overflow-x:hidden}
img{display:block;max-width:100%;height:auto}
a{color:inherit;text-decoration:none}
button{cursor:pointer;font-family:inherit}
::selection{background:var(--red);color:#fff}
html::-webkit-scrollbar{width:11px}
html::-webkit-scrollbar-track{background:#F0F0F2}
html::-webkit-scrollbar-thumb{background:#C9CBD1;border-radius:6px;border:2px solid #F0F0F2}
html::-webkit-scrollbar-thumb:hover{background:var(--red)}
.skip{position:absolute;top:-999px;left:16px;background:var(--red);color:#fff;padding:10px 20px;font-weight:600;border-radius:4px;z-index:9999;transition:top .2s}
.skip:focus{top:12px}
.wrap{max-width:var(--mw);margin:0 auto;padding:0 clamp(16px,4vw,56px)}
h1,h2,h3,h4{font-family:var(--ff-h);font-weight:700;line-height:1.02;text-transform:uppercase;letter-spacing:.005em;color:var(--ink)}
h1{font-size:clamp(2.8rem,7.5vw,6rem)}
h2{font-size:clamp(2rem,4.2vw,3.4rem)}
h3{font-size:clamp(1.2rem,2vw,1.7rem)}
h4{font-family:var(--ff-b);font-size:.93rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em}
p{font-size:1rem;color:var(--muted);line-height:1.78}
p+p{margin-top:12px}
strong{color:var(--ink);font-weight:600}
.tag{display:inline-flex;align-items:center;gap:10px;font-family:var(--ff-b);font-size:.7rem;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:var(--red);margin-bottom:16px}
.tag::before{content:'';width:22px;height:2px;background:linear-gradient(90deg,var(--red),transparent);flex-shrink:0}
.tag::after{content:'';width:6px;height:6px;background:var(--red);flex-shrink:0;transform:rotate(45deg)}
.tag--light{color:var(--red-on-dark)}
.tag--light::before{background:linear-gradient(90deg,var(--red-on-dark),transparent)}
.tag--light::after{background:var(--red-on-dark);box-shadow:0 0 10px var(--red-glow)}
.tag--center{justify-content:center}
.tag--center::before{display:none}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:14px 26px;font-family:var(--ff-b);font-weight:600;font-size:.9rem;letter-spacing:.02em;border-radius:3px;border:2px solid transparent;transition:background .18s,color .18s,border-color .18s,transform .1s,box-shadow .25s;white-space:nowrap;-webkit-tap-highlight-color:transparent;cursor:pointer;position:relative}
.btn:active{transform:translateY(1px)}
.btn:focus-visible{outline:3px solid var(--red);outline-offset:3px}
.btn svg{flex-shrink:0}
.btn-red{background:linear-gradient(135deg,var(--red-hot) 0%,var(--red-2) 100%);color:#fff!important;box-shadow:0 4px 18px rgba(166,18,31,.28)}
.btn-red:hover,.btn-red:active{background:linear-gradient(135deg,var(--red) 0%,var(--red-2) 100%);color:#fff!important;box-shadow:0 0 26px var(--red-glow),0 4px 18px rgba(0,0,0,.25)}
.btn-ghost{background:transparent;color:var(--ink);border-color:rgba(15,17,22,.25)}
.btn-ghost:hover,.btn-ghost:active{background:var(--ink);color:#fff;border-color:var(--ink)}
.btn-ghost-w{background:rgba(255,255,255,.02);color:#fff;border-color:rgba(255,255,255,.3);backdrop-filter:blur(6px)}
.btn-ghost-w:hover,.btn-ghost-w:active{background:#fff;color:var(--bg);border-color:#fff}
.btn-white{background:#fff;color:var(--red)}
.btn-white:hover,.btn-white:active{background:#F2F4F8;box-shadow:0 0 24px rgba(255,255,255,.3)}
#bar{background:linear-gradient(90deg,var(--red-2) 0%,var(--red) 100%);color:rgba(255,255,255,.82);font-size:.75rem;font-weight:500}
.bar-in{display:flex;justify-content:space-between;align-items:center;padding:9px 0;gap:12px;flex-wrap:wrap}
.bar-l,.bar-r{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.bar-item{display:flex;align-items:center;gap:6px}
.bar-item svg{opacity:.7;flex-shrink:0}
.bar-item a:hover{color:#fff}
.bar-sep{width:1px;height:13px;background:rgba(255,255,255,.25)}
/* Top bar carries both shops. The label is what makes it scannable: an
   address on its own does not tell you which location it belongs to. */
.bar-loc{gap:7px;transition:color .15s}
.bar-loc:hover,.bar-loc:focus-visible{color:#fff}
.bar-loc-lbl{font-weight:700;color:#fff;letter-spacing:.03em}
.bar-loc-lbl::after{content:'\00b7';margin:0 6px;opacity:.55;font-weight:400}
.bar-loc-addr{white-space:nowrap}
#hdr{position:sticky;top:0;z-index:200;background:rgba(255,255,255,.96);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--line-lt);transition:box-shadow .2s}
#hdr.up{box-shadow:0 6px 28px rgba(15,17,22,.1)}
#hdr::after{content:'';position:absolute;bottom:-1px;left:0;width:0;height:2px;background:linear-gradient(90deg,var(--red),var(--red-hot));transition:width .5s var(--ease)}
#hdr.up::after{width:100%}
.hdr-in{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:13px 0}
.logo-wrap{display:flex;align-items:center;flex-shrink:0}
.logo-wrap img{height:48px;width:auto;object-fit:contain}
.nav-links{display:flex;align-items:center;gap:26px}
.nav-links a:not(.btn){font-family:var(--ff-b);font-weight:500;font-size:.85rem;letter-spacing:.03em;color:#4B5058;transition:color .15s;position:relative}
.nav-links a:not(.btn)::after{content:'';position:absolute;bottom:-4px;left:0;width:0;height:2px;background:var(--red);transition:width .2s}
.nav-links a:not(.btn):hover{color:var(--ink)}
.nav-links a:not(.btn):hover::after{width:100%}
.nav-drop{position:relative}
.nav-drop-btn{display:inline-flex;align-items:center;gap:5px;font-family:var(--ff-b);font-weight:500;font-size:.85rem;letter-spacing:.03em;color:#4B5058;background:none;border:none;padding:0}
.nav-drop-btn svg{transition:transform .2s var(--ease);flex-shrink:0}
.nav-drop:hover .nav-drop-btn,.nav-drop-btn[aria-expanded="true"]{color:var(--ink)}
.nav-drop-btn[aria-expanded="true"] svg{transform:rotate(180deg)}
.nav-drop-menu{position:absolute;top:calc(100% + 18px);left:50%;transform:translateX(-50%);background:#fff;border:1px solid var(--line-lt);border-radius:var(--r);box-shadow:var(--sh-lg);padding:8px;min-width:236px;display:none;z-index:210}
.nav-drop-menu.on{display:block}
.nav-drop-menu a{display:block;padding:9px 12px;font-size:.83rem;font-weight:500;color:#3E434B;border-radius:6px;transition:background .15s,color .15s}
.nav-drop-menu a:hover,.nav-drop-menu a:focus-visible{background:var(--paper-2);color:var(--red)}
.nav-drop-menu a:focus-visible{outline:2px solid var(--red);outline-offset:-2px}
.hmbg{display:none;background:none;border:none;color:var(--ink);padding:6px;line-height:1}
.hmbg:focus-visible{outline:2px solid var(--red);border-radius:4px}
#mob{display:none;border-top:1px solid var(--line-lt);background:#fff}
#mob.on{display:block}
.mob-links{display:flex;flex-direction:column}
.mob-links a:not(.btn){font-weight:500;font-size:1rem;color:var(--ink);padding:13px 0;border-bottom:1px solid var(--line-lt);display:block;-webkit-tap-highlight-color:transparent}
.mob-links a:active{color:var(--red)}
.mob-sec{font-size:.68rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:rgba(17,19,24,.35);padding:16px 0 2px}
.mob-cta{padding:16px 0;display:flex;flex-direction:column;gap:10px}
#faq{padding:clamp(56px,7vw,100px) 0;background:var(--paper-2)}
.faq-list{max-width:780px;margin:0 auto;border-top:1px solid var(--line-lt)}
.faq-item{border-bottom:1px solid var(--line-lt)}
.faq-item summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:22px 2px;font-family:var(--ff-b);font-weight:600;font-size:1rem;color:var(--ink)}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary:focus-visible{outline:3px solid var(--red);outline-offset:3px}
.faq-ic{flex:none;width:22px;height:22px;color:var(--red);transition:transform .3s var(--ease)}
.faq-item[open] .faq-ic{transform:rotate(180deg)}
.faq-a{padding:0 2px 22px;max-width:680px}
.faq-a p{margin:0}
#cta{background:linear-gradient(135deg,var(--red) 0%,#5E0710 100%);padding:clamp(44px,6vw,76px) 0;position:relative;overflow:hidden;clip-path:polygon(0 2.5vw,100% 0,100% 100%,0 100%);padding-top:calc(clamp(44px,6vw,76px) + 2.5vw)}
#cta::before{content:'';position:absolute;inset:0;background:repeating-linear-gradient(-55deg,transparent,transparent 10px,rgba(255,255,255,.025) 10px,rgba(255,255,255,.025) 20px);pointer-events:none}
#cta::after{content:'';position:absolute;top:-160px;right:-80px;width:480px;height:480px;background:radial-gradient(circle,rgba(255,255,255,.1) 0%,transparent 70%);pointer-events:none}
.cta-in{display:grid;grid-template-columns:1fr auto;gap:32px;align-items:center;position:relative;z-index:1}
.cta-txt h2{color:#fff;font-size:clamp(1.8rem,3.4vw,2.8rem);margin-bottom:8px}
.cta-txt p{color:rgba(255,255,255,.85);max-width:480px}
.cta-btns{display:flex;gap:10px;flex-wrap:wrap;flex-shrink:0}
#footer{background:#fff;padding:clamp(44px,6vw,68px) 0 0;border-top:1px solid var(--line-lt)}
.footer-grid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:40px;padding-bottom:40px;border-bottom:1px solid var(--line-lt)}
.footer-logo{height:52px;width:auto;max-width:210px;object-fit:contain;margin-bottom:16px;display:block}
.footer-blurb{font-size:.84rem;color:var(--muted);line-height:1.7;margin-bottom:18px}
.footer-social{display:flex;gap:8px}
.fsoc{width:34px;height:34px;background:var(--paper-2);border:1px solid var(--line-lt);border-radius:4px;display:flex;align-items:center;justify-content:center;color:#6B7078;transition:background .15s,color .15s,transform .2s var(--ease),box-shadow .2s;-webkit-tap-highlight-color:transparent}
.fsoc:hover,.fsoc:active{background:var(--red);color:#fff;transform:translateY(-2px) scale(1.08);box-shadow:0 0 14px var(--red-glow)}
.footer-col h3{font-size:.68rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:#5E6470;margin-bottom:14px}
.footer-links{display:flex;flex-direction:column;gap:9px}
.footer-links a{font-size:.86rem;color:#5E6470;transition:color .15s}
.footer-links a:hover{color:var(--red)}
.fcon{display:flex;gap:10px;align-items:flex-start;margin-bottom:11px;font-size:.84rem;color:#5E6470;line-height:1.55}
.fcon svg{color:var(--red);flex-shrink:0;margin-top:2px}
.fcon a{color:#3E434B}
.fcon a:hover{color:var(--red);text-decoration:underline}
.fhour{display:flex;justify-content:space-between;font-size:.82rem;margin-bottom:8px}
.fhour span:first-child{color:#5E6470}
.fhour span:last-child{color:#2B2F36;font-weight:500}
.footer-bot{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:16px 0;flex-wrap:wrap;font-size:.74rem;color:#5E6470}
.footer-bot a{color:#3E434B}
.footer-bot a:hover{color:var(--red)}
.footer-bot-links{display:flex;gap:14px}
.r{opacity:0;transform:translateY(16px);transition:opacity .55s var(--ease),transform .55s var(--ease)}
.r.in{opacity:1;transform:none}
.r-l{opacity:0;transform:translateX(-20px);transition:opacity .55s var(--ease),transform .55s var(--ease)}
.r-l.in{opacity:1;transform:none}
.r-r{opacity:0;transform:translateX(20px);transition:opacity .55s var(--ease),transform .55s var(--ease)}
.r-r.in{opacity:1;transform:none}
.r-d1{transition-delay:.08s}
.r-d2{transition-delay:.16s}
.r-d3{transition-delay:.24s}
.r,.r-l,.r-r{will-change:opacity,transform}
/* Pinstripe: the red rule the building carries where navy meets wall.
   Used sparingly as a section edge, not as a repeating decoration. */
.stripe-top{position:relative}
.stripe-top::before{content:'';position:absolute;top:0;left:0;right:0;height:5px;background:var(--stripe);z-index:3}
/* Footer location cards (shared, every page carries both addresses) */
.floc{margin-bottom:14px}
.floc:last-of-type{margin-bottom:0}
.floc-lbl{display:inline-flex;align-items:center;gap:6px;font-size:.6rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--red);margin-bottom:5px}
.floc-lbl::before{content:'';width:14px;height:2px;background:var(--stripe);flex-shrink:0}
.floc-lbl--alt{color:#5E6470}
.floc-lbl--alt::before{background:rgba(17,19,24,.22)}
.floc address{font-style:normal;font-size:.84rem;color:#5E6470;line-height:1.55}
.floc address a{color:#3E434B}
.floc address a:hover{color:var(--red);text-decoration:underline}
@media(max-width:1024px){.footer-grid{grid-template-columns:1fr 1fr;gap:32px}.cta-in{grid-template-columns:1fr;gap:24px}}
@media(max-width:900px){.nav-links{display:none}.hmbg{display:flex}}
@media(max-width:768px){#bar .bar-r{display:none}#bar .bar-sep{display:none}.logo-wrap img{height:42px}.footer-grid{grid-template-columns:1fr;gap:28px}}
@media(max-width:480px){html{font-size:16px}.cta-in{gap:20px}.cta-btns{flex-direction:column;width:100%}.cta-btns .btn{width:100%;justify-content:center}}
@media(max-width:360px){.wrap{padding:0 14px}h2{font-size:1.78rem}}
@media(hover:none) and (pointer:coarse){.fsoc:hover{transform:none}}
@media print{#bar,#hdr{display:none}body{background:#fff;color:#000}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important}}
@media(max-width:1180px){#bar .bar-hours,#bar .bar-sep--hours{display:none}}

/* ── ESTIMATE LOCATION CHOOSER ─────────────────────────────────────────
   One Free Estimate button, two shops. Injected by /assets/estimate.js.
   Surfaces reuse the navy card treatment from the location cards so the
   dialog reads as part of the site rather than a bolted-on widget. */
/* margin:auto is restated because the global *{margin:0} reset strips the
   UA style that centres a <dialog>. Without it the panel pins to the left
   edge with no gutter. */
/* --est-css is a liveness marker. A stale cached stylesheet is invisible to
   every CSSOM check, so read this property back to prove the NEW file is the
   one applying. See the cache-bust note in STATE.md.
   100% not 100vw: the dialog's containing block is the viewport, and 100vw
   includes the scrollbar, which would push the panel wider than the screen. */
.est-dlg{--est-css:1;border:0;padding:0;background:transparent;margin:auto;max-width:min(560px,calc(100% - 32px));width:100%;max-height:calc(100% - 32px);color:#fff;overflow:visible}
.est-dlg::backdrop{background:rgba(6,22,48,.72);backdrop-filter:blur(3px)}
.est-inner{position:relative;background:var(--panel);border:1px solid var(--line-2);border-radius:var(--r-lg);box-shadow:var(--sh-lg);padding:clamp(22px,4.5vw,34px);max-height:calc(100vh - 32px);overflow-y:auto;overscroll-behavior:contain}
.est-dlg h2{color:#fff;font-size:clamp(1.6rem,4.6vw,2.2rem);margin-bottom:8px}
.est-tag{display:inline-flex;align-items:center;gap:9px;font-size:.66rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--red-on-dark);margin-bottom:12px}
.est-tag::before{content:'';width:18px;height:2px;background:linear-gradient(90deg,var(--red-on-dark),transparent)}
.est-sub{color:rgba(255,255,255,.72);font-size:.9rem;line-height:1.6;margin-bottom:18px}
.est-x{position:absolute;top:12px;right:12px;width:42px;height:42px;display:flex;align-items:center;justify-content:center;background:transparent;border:1px solid var(--line-2);border-radius:50%;color:#fff;transition:background .18s,border-color .18s}
.est-x:hover{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.45)}
.est-x:focus-visible{outline:3px solid var(--red-on-dark);outline-offset:2px}

.est-cards{display:flex;flex-direction:column;gap:11px}
.est-card{display:flex;flex-direction:column;gap:5px;padding:16px 17px;background:var(--card);border:1px solid var(--line-2);border-radius:var(--r);transition:border-color .18s,background .18s,transform .12s}
.est-card:hover{background:var(--navy-3);border-color:rgba(255,255,255,.4)}
.est-card:focus-visible{outline:3px solid var(--red-on-dark);outline-offset:2px}
.est-card:active{transform:translateY(1px)}
.est-card.near{border-color:var(--red-on-dark);box-shadow:0 0 0 1px var(--red-on-dark),0 0 22px var(--red-glow)}
.est-card-top{display:flex;align-items:center;justify-content:space-between;gap:10px}
.est-badge{font-size:.6rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:#fff;background:var(--red);padding:4px 9px;border-radius:3px}
.est-card.near .est-badge{background:var(--red-hot)}
.est-dist{font-size:.72rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--red-on-dark)}
.est-name{font-family:var(--ff-h);font-weight:700;font-size:1.45rem;line-height:1.05;text-transform:uppercase;color:#fff;margin-top:3px}
.est-addr{display:flex;align-items:flex-start;gap:7px;font-size:.84rem;line-height:1.5;color:rgba(255,255,255,.7)}
.est-addr svg{flex-shrink:0;margin-top:3px;color:var(--red-on-dark)}
.est-go{display:inline-flex;align-items:center;gap:7px;font-size:.8rem;font-weight:600;letter-spacing:.03em;color:#fff;margin-top:7px}
.est-card:hover .est-go svg{transform:translateX(3px)}
.est-go svg{transition:transform .18s}

.est-geo{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;margin-top:13px;padding:12px 18px;font-size:.82rem;font-weight:600;letter-spacing:.03em;color:#fff;background:rgba(255,255,255,.04);border:1px solid var(--line-2);border-radius:var(--r);transition:background .18s,border-color .18s}
.est-geo:hover:not(:disabled){background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.4)}
.est-geo:focus-visible{outline:3px solid var(--red-on-dark);outline-offset:2px}
.est-geo:disabled{opacity:.6;cursor:default}
.est-geo.busy svg{animation:est-pulse 1s ease-in-out infinite}
@keyframes est-pulse{50%{opacity:.35}}

.est-note{font-size:.78rem;line-height:1.55;color:rgba(255,255,255,.66);margin-top:10px;display:none}
.est-note.on{display:block}
.est-call{font-size:.78rem;line-height:1.6;color:rgba(255,255,255,.5);margin-top:15px;padding-top:14px;border-top:1px solid var(--line)}
.est-call a{color:rgba(255,255,255,.85);font-weight:600;border-bottom:1px solid rgba(255,255,255,.25)}
.est-call a:hover{color:#fff;border-bottom-color:#fff}

html:has(.est-dlg[open]){overflow:hidden}
@media (max-width:400px){
  .est-inner{padding:20px 16px}
  .est-x{top:8px;right:8px;width:40px;height:40px}
  .est-card{padding:14px}
}
@media (prefers-reduced-motion:reduce){
  .est-card,.est-go svg,.est-geo,.est-x{transition:none}
  .est-geo.busy svg{animation:none}
}
body.a-nm .est-card,body.a-nm .est-go svg,body.a-nm .est-geo,body.a-nm .est-x{transition:none}
body.a-nm .est-geo.busy svg{animation:none}

/* ── /estimate page: the no-JS fallback and a real landing page ── */
.estp{background:var(--bg);padding:clamp(90px,13vw,150px) 0 clamp(60px,9vw,100px)}
.estp .wrap{max-width:820px}
.estp-head{text-align:center;margin-bottom:clamp(26px,4vw,40px)}
.estp-head h1{color:#fff;font-size:clamp(2.4rem,6.5vw,4rem)}
.estp-head p{color:rgba(255,255,255,.72);font-size:1rem;margin-top:14px}
.estp-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(258px,1fr));gap:clamp(14px,2.4vw,20px)}
.estp-grid .est-card{padding:clamp(20px,3vw,26px)}
.estp-note{color:rgba(255,255,255,.5);font-size:.82rem;line-height:1.65;text-align:center;margin-top:26px}
.estp-note a{color:rgba(255,255,255,.85);font-weight:600;border-bottom:1px solid rgba(255,255,255,.25)}
