/* Resin Pros Flooring — site chrome.
   Page bodies carry their own inline <style> (lifted verbatim from the Squarespace
   code/markdown blocks). This file only reproduces what Squarespace supplied around
   them: the fixed header, the section frames, base typography, the contact page. */

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:140px}
body{margin:0;background:#f5f5f5;color:#000;font-family:'Manrope',-apple-system,'Helvetica Neue',sans-serif;font-size:16px;line-height:1.5}
main,footer{overflow-x:clip}
html.mm-open{overflow:hidden}

.skip-link{position:absolute;left:-9999px;top:8px;z-index:2000;background:#fff;color:#101418;padding:10px 16px;border-radius:8px;font-weight:600}
.skip-link:focus{left:12px}

/* ---------------------------------------------------------------- header
   One row, 72px (60px once scrolled), 64px under 1180px. Was 127px with the nav wrapping to two
   rows (Max 2026-10-10). Keep --hn-h in step: page-top offsets below are written against it. */
:root{--hn-h:72px}
@media (max-width:1180px){:root{--hn-h:64px}}
.hn{position:fixed;top:0;left:0;right:0;z-index:1000;font-family:'Poppins',-apple-system,'Helvetica Neue',sans-serif;
  background:rgba(16,19,20,.9);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid rgba(237,239,238,.08);
  transition:background .3s ease,border-color .3s ease}
.hn.hn-scrolled{background:rgba(12,14,15,.96)}
.hn-inner{position:relative;display:flex;align-items:center;gap:32px;padding:0 4vw;height:var(--hn-h);transition:height .25s ease}
@media (min-width:1181px){.hn.hn-scrolled .hn-inner{height:60px}}
.hn-logo{flex:0 0 auto;display:block;line-height:0}
.hn-logo img{width:auto;height:40px;transition:height .25s ease}
.hn.hn-scrolled .hn-logo img{height:34px}
.hn-nav{flex:1 1 auto;display:flex;justify-content:center;height:100%}
.hn-list{list-style:none;margin:0;padding:0;display:flex;align-items:center;gap:34px;height:100%}
.hn-item{position:relative;height:100%;display:flex;align-items:center}
.hn-item>a,.hn-folder-btn{display:inline-flex;align-items:center;gap:7px;padding:0;font:inherit;font-size:15px;font-weight:500;letter-spacing:.01em;line-height:24px;
  color:rgba(255,255,255,.8);text-decoration:none;background:none;border:0;cursor:pointer;transition:color .18s ease}
.hn-item>a:hover,.hn-item>a[aria-current],.hn-folder-btn:hover,.hn-folder.open .hn-folder-btn{color:#fff}
.hn-item>a[aria-current],.hn-folder.is-active .hn-folder-btn{text-decoration:underline;text-underline-offset:6px;text-decoration-thickness:1px}
.hn-caret{width:7px;height:7px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:translateY(-2px) rotate(45deg);transition:transform .2s ease}
.hn-folder.open .hn-caret{transform:translateY(1px) rotate(-135deg)}
/* Services mega menu: three groups side by side, anchored to the header row */
.hn-mega{position:static}
.hn-sub{display:none;position:absolute;top:calc(100% + 1px);left:50%;transform:translateX(-50%);width:min(1040px,94vw);
  grid-template-columns:1.05fr 2.3fr .75fr;gap:8px 40px;padding:28px 32px;background:#14181a;border:1px solid rgba(237,239,238,.12);
  border-radius:0 0 14px 14px;box-shadow:0 24px 50px rgba(0,0,0,.5);z-index:5}
.hn-folder.open .hn-sub{display:grid}
.hn-group{margin:0 0 12px;font-size:11px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:#9fb9a9}
.hn-col ul{list-style:none;margin:0;padding:0}
.hn-col-1 ul{columns:2;column-gap:32px}
.hn-col li{break-inside:avoid}
.hn-sub a{display:block;padding:6px 0;font-size:14px;font-weight:500;line-height:1.35;color:rgba(237,239,238,.88);text-decoration:none;transition:color .15s ease}
.hn-sub a:hover,.hn-sub a[aria-current]{color:#9fb9a9}
.hn-sub a:focus-visible{outline:2px solid #7fa08c;outline-offset:2px}
.hn-actions{flex:0 0 auto;display:flex;align-items:center;gap:22px}
.hn-phone{display:inline-flex;align-items:center;gap:8px;color:#fff;font-size:15px;font-weight:600;letter-spacing:.01em;text-decoration:none;white-space:nowrap}
.hn-phone svg{color:#9fb9a9}
.hn-phone:hover span{text-decoration:underline;text-underline-offset:4px}
.hn-icon{color:#fff;opacity:.8;line-height:0;transition:opacity .18s ease}
.hn-icon:hover{opacity:1}
.hn-cta{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 22px;border-radius:10px;background:#44614e;color:#fff;
  font-family:'Poppins',-apple-system,sans-serif;font-size:14px;font-weight:600;letter-spacing:.02em;text-decoration:none;white-space:nowrap;
  box-shadow:0 1px 2px rgba(15,26,46,.16),0 3px 10px rgba(15,26,46,.08);transition:background .18s ease,transform .18s ease}
.hn-cta:hover{background:#3a5443;transform:translateY(-1px)}
.hn a:focus-visible,.hn button:focus-visible{outline:2px solid #7fa08c;outline-offset:3px}
.hn-call{display:none;align-items:center;justify-content:center;width:44px;height:44px;margin-left:auto;border-radius:50%;color:#fff;background:rgba(237,239,238,.08)}
.hn-burger{display:none;width:44px;height:44px;padding:0;background:none;border:0;cursor:pointer;position:relative}
.hn-burger span{position:absolute;left:10px;right:10px;height:1.5px;background:#edefee;transition:transform .2s ease,top .2s ease}
.hn-burger span:first-child{top:17px}
.hn-burger span:last-child{top:26px}
.hn-burger[aria-expanded="true"] span:first-child{top:21px;transform:rotate(45deg)}
.hn-burger[aria-expanded="true"] span:last-child{top:21px;transform:rotate(-45deg)}

/* mobile menu */
/* backdrop-filter makes .hn the containing block for this fixed menu, so drop it while open */
html.mm-open .hn{-webkit-backdrop-filter:none;backdrop-filter:none;background:#101314}
.mm{position:fixed;inset:var(--hn-h) 0 0 0;background:#101314;overflow-y:auto;padding:24px 6vw 40px}
.mm[hidden]{display:none}
.mm-list{list-style:none;margin:0;padding:0}
.mm-list>li>a,.mm-folder>button{display:flex;justify-content:space-between;align-items:center;width:100%;padding:12px 0;font:600 22px/1.3 'Poppins',sans-serif;
  color:#edefee;text-decoration:none;background:none;border:0;text-align:left;cursor:pointer}
.mm-folder>button span{font-size:26px;transition:transform .2s ease}
.mm-folder.open>button span{transform:rotate(90deg)}
.mm-folder ul{display:none;list-style:none;margin:0 0 8px;padding:0 0 0 14px;border-left:1px solid rgba(237,239,238,.14)}
.mm-folder.open ul{display:block}
.mm-folder ul a{display:block;padding:8px 0;font:500 16px/1.35 'Poppins',sans-serif;color:rgba(237,239,238,.85);text-decoration:none}
.mm-list a:hover{color:#7fa08c}
.mm-foot{display:flex;align-items:center;gap:22px;margin-top:28px;flex-wrap:wrap}
.mm-foot .hn-cta{min-height:52px}
.mm-group{margin:12px 0 2px;font:600 11px/1.3 'Poppins',sans-serif;letter-spacing:.14em;text-transform:uppercase;color:#9fb9a9}
.mm-phone{color:#edefee;font:600 17px/1 'Poppins',sans-serif;text-decoration:none}

@media (max-width:1180px){
  .hn-nav,.hn-actions{display:none}
  .hn-call{display:inline-flex}
  .hn-burger{display:block}
  .hn-inner{gap:8px;padding:0 max(14px,4vw) 0 max(20px,5vw)}
  .hn-logo img,.hn.hn-scrolled .hn-logo img{height:34px}
}

/* ---------------------------------------------------------------- section frames */
/* Code-block pages: the block is full-bleed and carries its own hero offset. */
.ps-code{padding:0;background:#f5f5f5}
/* Markdown pages: Squarespace section padding from the site's header injection. */
.ps-md{padding:95px 0 28px;background:#000}
.ps-md [class^="rp"]{padding-top:16px !important;padding-bottom:28px !important}
body[data-page="service-areas"] .ps-md{background:#121513;padding-top:187px}
@media (max-width:767px){body[data-page="service-areas"] .ps-md{padding-top:104px}}
.ps-in{width:100%}

/* Squarespace base typography the markdown blocks inherit */
.ps-md h1,.ps-md h2,.ps-md h3,.ps-md h4{letter-spacing:-.01em}
.ps-md a{color:inherit}
/* Squarespace theme link colour: black, no underline, at zero specificity so every
   block's own link rules still win. */
:where(.ps-code) a{color:#000;text-decoration:none}

/* ---------------------------------------------------------------- footer */
.site-footer{background:#0e1214}
.footer-strip{background:#101211;padding:0 max(0px,calc(4vw - 8px))}

/* ---------------------------------------------------------------- contact (rebuilt native page) */
.rpc{position:relative;min-height:802px;padding:218px 4vw 0;display:flex;align-items:center;
  background:#f5f5f5 var(--bg) center/cover no-repeat}
.rpc-in{max-width:546px;padding:60px 0 60px 0;color:#101418}
.rpc h1{margin:0 0 30px;font-family:'Manrope',sans-serif;font-weight:500;font-size:clamp(44px,5.4vw,78px);line-height:1.1;letter-spacing:-.02em;color:#101418}
.rpc p{margin:0 0 16px;font-size:17px;line-height:1.5}
.rpc a{color:#101418;text-decoration:none}
.rpc a:hover{text-decoration:underline}
.rpc-social{display:flex;gap:8px;margin:6px 0 24px 56px}
.rpc-social a{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:15%;background:#000;color:#fff}
.rpc-social svg{width:16px;height:16px}
.rpc-social a:hover{text-decoration:none;opacity:.85}
.rpc-btn{display:inline-flex !important;align-items:center;justify-content:center;width:323px;max-width:100%;min-height:52px;border-radius:10px;background:#44614e;color:#fff !important;
  font-family:'Poppins',sans-serif;font-weight:600;font-size:15px;letter-spacing:.02em;text-decoration:none !important;box-shadow:0 1px 2px rgba(15,26,46,.16),0 3px 10px rgba(15,26,46,.08);transition:background .18s ease,transform .18s ease}
.rpc-btn:hover{background:#3a5443;transform:translateY(-2px)}
@media (max-width:767px){
  .rpc{min-height:0;padding-top:64px}
  .rpc-social{margin-left:0}
}
.ps-contact{padding:0}

/* ---------------------------------------------------------------- Squarespace base theme
   What the blocks inherited from Squarespace's site.css + the site's custom.css. All at
   zero specificity (:where) so every block's own rules still win, as they did there. */
main,footer{font-family:'Poppins',-apple-system,'Helvetica Neue',sans-serif;line-height:1.5em;font-weight:400}
:where(main,footer) p{font-family:'Manrope',-apple-system,'Helvetica Neue',sans-serif;margin:1rem 0;line-height:1.5em}
:where(main,footer) :is(h1,h2,h3,h4){font-family:'Manrope',-apple-system,'Helvetica Neue',sans-serif;font-weight:500;letter-spacing:-.01em;margin:2rem 0}
:where(main,footer) h1{font-size:min(calc(3.6vw + 1rem),88px);line-height:1.056em}
:where(main,footer) h2{font-size:min(calc(2.16vw + 1rem),59.2px);line-height:1.1136em}
:where(main,footer) h3{font-size:min(calc(1.44vw + 1rem),44.8px);line-height:1.1424em}
:where(main,footer) h4{font-size:min(calc(.72vw + 1rem),30.4px);line-height:1.1712em}
@media (max-width:767px) and (orientation:portrait){
  :where(main,footer) h1{font-size:calc(.036 * min(100vh,900px) + 1rem)}
  :where(main,footer) h2{font-size:calc(.0216 * min(100vh,900px) + 1rem)}
  :where(main,footer) h3{font-size:calc(.0144 * min(100vh,900px) + 1rem)}
  :where(main,footer) h4{font-size:calc(.0072 * min(100vh,900px) + 1rem)}
}
:where(.ps-code) :is(h1,h2,h3,h4){color:#000}

/* ---------------------------------------------------------------- accessibility floor (Rule 30)
   Legacy Squarespace defects, fixed with the smallest visible change. */
/* footer labels + legal line were 3.25:1; strip label 4.05:1 */
body #rp-footer{--dim:rgba(237,239,238,.56)}
body .rpfsa .h{color:rgba(237,239,238,.58) !important}
/* industry-page heroes: Squarespace's heading colour beat the hero's inherited white (black on #101314) */
.ps-code .rpi-hero :is(h1,h2,h3){color:#fff}
/* industry-page eyebrows were sage #7fa08c on white (2.6-2.9:1); brand green instead */
.ps-code :is(.rpi-section-light,.rpi-section-alt){--green-l:#44614e}
/* inline links inside running text need more than colour to stand out */
:where(.ps-code) p a:not([class]){text-decoration:underline;text-underline-offset:2px;text-decoration-thickness:1px}
/* /colors: section eyebrows were sage on white (2.7:1) */
body #rp-colors [id^="rpc-"] .rpc-eyebrow{color:#44614e}
/* /gallery: stats strip + filter pills were styled for a dark ground but sit on white
   (near-invisible on the legacy site too) */
body #rp-gallery .rpp-stat{background:#f6f7f6;border-color:rgba(16,20,24,.08)}
body #rp-gallery .rpp-stat b{color:#101418}
body #rp-gallery .rpp-stat span{color:#44614e}
body #rp-gallery .rpp-filter:not(.active){color:#3d454c;border-color:rgba(16,20,24,.2)}
body #rp-gallery .rpp-filter:not(.active):hover{color:#101418;border-color:#44614e}
/* /sitemap: "more town pages" note was 3:1 */
body .rpsit .soon{color:#8e9a91 !important}
body :is(.rpsa,.rpsl) .cta .txt p{color:#fff !important}

/* wrapper classes the QA gate expects to be defined */
.ps{position:relative}
.rp-fullbleed{display:block}
/* Heroes on the service + industry templates started under the fixed header (127px desktop,
   110px mobile), hiding their eyebrow pill / top of the H1 on Squarespace too. */
body .rp-svc .hero{padding-top:max(clamp(72px,10vw,130px),96px)}
body .rpi-hero{padding-top:max(clamp(64px,10vh,120px),96px) !important}
@media (max-width:1180px){
  body .rp-svc .hero,body .rpi-hero{padding-top:88px !important}
}

/* ---------------------------------------------------------------- cinematic homepage variant (/preview-cinematic)
   First screen = the footage alone. Header, trust strip, estimate card and the phone call bar all
   arrive on the first scroll off body.is-scrolled. Header moves on `top`, not transform (a transformed
   fixed header becomes the containing block for the fixed mobile menu inside it). */
html:not(.mm-open) body.cine:not(.is-scrolled) .hn:not(:has(.hn-folder.open)){background:transparent;border-bottom-color:transparent;-webkit-backdrop-filter:none;backdrop-filter:none}
html.mm-open body.cine .hn{background:#101314}
body.cine .ps-code{background:#101314}

.cine-hero{position:relative;min-height:100vh;min-height:100svh;display:flex;align-items:flex-end;background:#101314;color:#fff;overflow:hidden}
.cine-bg{position:absolute;inset:0}
.cine-bg picture{position:absolute;inset:0;display:block}
.cine-bg img,.cine-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  /* light grade: the slabs are bright, the words sit on the floor scrim below */
  filter:brightness(.9) saturate(.88) contrast(1.05)}
.cine-video{opacity:0;transition:opacity 1.4s ease}
.cine-video.is-playing{opacity:1}
.cine-overlay{position:absolute;inset:0;background:
  linear-gradient(rgba(16,19,20,.42),rgba(16,19,20,.42)),
  radial-gradient(120% 90% at 70% 35%,transparent 45%,rgba(16,19,20,.4) 100%),
  linear-gradient(to top,rgba(16,19,20,.86) 0%,rgba(16,19,20,.5) 30%,rgba(16,19,20,.06) 60%,transparent 100%)}
.cine-overlay::after{content:"";position:absolute;inset:0;opacity:.07;mix-blend-mode:overlay;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .55 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
.cine-inner{position:relative;z-index:1;width:100%;padding-top:120px;padding-bottom:clamp(64px,10vh,120px)}
.cine-kicker{display:flex;align-items:center;gap:14px;color:#afc7b8}
.cine-kicker::before{content:"";width:48px;height:2px;background:#7fa08c;flex:none}
.cine-h1{color:#fff;text-shadow:0 2px 40px rgba(0,0,0,.45)}
.cine-sub{color:#f1f3f3;font-size:clamp(16px,1.5vw,19px);line-height:1.5;max-width:46ch;margin:22px 0 0;text-shadow:0 1px 12px rgba(0,0,0,.6)}
.cine-ctas{display:flex;flex-wrap:wrap;gap:12px;margin-top:30px}
/* the homepage block resets `#rp-home *{margin:0}` (ID specificity), which ate both gaps above */
#rp-home .cine-sub{margin-top:22px}#rp-home .cine-ctas{margin-top:30px}
.cine-ctas .rp2-ghost{border-color:rgba(255,255,255,.5);color:#fff}
.cine-ctas .rp2-ghost:hover{border-color:#fff}
@keyframes cine-rise{from{opacity:0;transform:translateY(26px)}to{opacity:1;transform:none}}
.cine-kicker,.cine-h1,.cine-sub,.cine-ctas{animation:cine-rise 1s cubic-bezier(.2,.7,.2,1) both}
.cine-h1{animation-delay:.15s}.cine-sub{animation-delay:.4s}.cine-ctas{animation-delay:.55s}
.cine-scroll{position:absolute;z-index:1;right:clamp(20px,4vw,48px);bottom:clamp(64px,10vh,120px);width:28px;height:46px;border:2px solid rgba(255,255,255,.75);border-radius:16px;display:block;transition:opacity .3s}
.cine-scroll span{position:absolute;left:50%;top:8px;width:4px;height:9px;margin-left:-2px;border-radius:2px;background:#fff;animation:cine-wheel 1.9s ease-in-out infinite}
@keyframes cine-wheel{0%{opacity:0;transform:translateY(0)}30%{opacity:1}100%{opacity:0;transform:translateY(16px)}}
body.cine.is-scrolled .cine-scroll{opacity:0}
#after-hero{display:block;scroll-margin-top:130px}

/* trust strip under the hero: in flow, so it is below the fold; it fades up on the first scroll */
body.cine .rp2-ticker{opacity:0;transform:translateY(12px);transition:opacity .5s ease .1s,transform .5s ease .1s}
body.cine.is-scrolled .rp2-ticker{opacity:1;transform:none}

/* estimate card: slides in from the right on the first scroll, minimises to a pill */
.cine-quote{position:fixed;right:24px;bottom:24px;z-index:900;width:min(380px,calc(100vw - 48px));
  transform:translateX(calc(100% + 40px));opacity:0;transition:transform .5s cubic-bezier(.2,.7,.2,1) .25s,opacity .4s ease .25s}
body.cine.is-scrolled .cine-quote,.cine-quote:focus-within{transform:none;opacity:1}
.cine-quote-pill{display:none;margin-left:auto;background:#44614e;color:#fff;border:0;border-radius:999px;padding:14px 22px;font:600 15px/1 'Poppins',sans-serif;cursor:pointer;box-shadow:0 10px 30px rgba(0,0,0,.35)}
.cine-quote-pill:hover{background:#3a5443}
.cine-quote:not(.is-open) .cine-quote-pill{display:block}
.cine-quote-card{display:none;background:#fff;color:#101418;border-radius:16px;box-shadow:0 24px 60px rgba(0,0,0,.4);padding:22px 22px 18px}
.cine-quote.is-open .cine-quote-card{display:block}
.cine-quote-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px}
.cine-quote-kicker{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#44614e}
.cine-quote-title{font-size:20px;font-weight:800;letter-spacing:-.02em;line-height:1.15;margin-top:4px}
.cine-quote-close{background:none;border:0;font-size:26px;line-height:1;color:#4a535b;cursor:pointer;padding:0 2px;margin:-6px -6px 0 0}
.cine-quote-close:hover{color:#101418}
.cine-form label{display:block;font-size:12px;font-weight:700;color:#3d454c;letter-spacing:.02em}
.cine-form input,.cine-form select,.cine-form textarea{display:block;width:100%;margin-top:5px;padding:10px 12px;border:1px solid rgba(16,20,24,.18);border-radius:8px;font:400 15px/1.3 'Manrope',sans-serif;color:#101418;background:#fff}
.cine-form textarea{resize:vertical;min-height:54px}
.cine-form input:focus,.cine-form select:focus,.cine-form textarea:focus{outline:2px solid #44614e;outline-offset:1px;border-color:#44614e}
.cf-row{margin-bottom:11px}
.cf-2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.cf-hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.cf-submit{width:100%;margin-top:4px}
.cf-note{font-size:12.5px;color:#4a535b;margin:12px 0 0;text-align:center}
.cf-note a{color:#44614e;font-weight:700;text-decoration:none}
.cf-done{font-size:15px;color:#101418;margin:6px 0 0}
.cine-form.is-invalid input:invalid{border-color:#b3261e}

/* phone call bar: exactly two elements (Rule 10), slides up with the header */
.cine-bar{display:none}
@media (max-width:780px){
  .cine-bar{display:grid;grid-template-columns:1fr 1fr;position:fixed;left:0;right:0;bottom:0;z-index:950;background:#0e1214;border-top:1px solid rgba(237,239,238,.1);
    padding-bottom:env(safe-area-inset-bottom);transform:translateY(110%);transition:transform .4s ease}
  body.cine.is-scrolled .cine-bar{transform:none}
  .cine-bar>*{display:inline-flex;align-items:center;justify-content:center;padding:15px 8px;font:700 15px/1 'Poppins',sans-serif;text-decoration:none;border:0;cursor:pointer}
  .cine-bar-quote{background:#44614e;color:#fff}
  .cine-bar-call{color:#fff;background:transparent}
  body.cine .site-footer{padding-bottom:64px}
  /* the card becomes a bottom sheet above the bar, opened from it */
  .cine-quote{right:0;left:0;bottom:0;width:auto;transform:translateY(110%);opacity:1;transition:transform .4s ease}
  .cine-quote.is-open{transform:none}
  body.cine.is-scrolled .cine-quote:not(.is-open){transform:translateY(110%)}
  .cine-quote-pill{display:none !important}
  .cine-quote-card{border-radius:16px 16px 0 0;padding-bottom:calc(76px + env(safe-area-inset-bottom));max-height:85vh;overflow:auto}
  .cine-scroll{right:auto;left:50%;margin-left:-14px;bottom:22px;width:24px;height:40px}
  .cine-inner{padding-bottom:84px}
}
@media (prefers-reduced-motion:reduce){
  body.cine .hn,.cine-quote,.cine-bar,.rp2-ticker,.cine-scroll,.cine-video{transition:none}
  .cine-kicker,.cine-h1,.cine-sub,.cine-ctas,.cine-scroll span{animation:none}
  .cine-video{display:none}
}
/* cine variant: fixes after the first screenshot pass */
.cf-submit{display:inline-flex;align-items:center;justify-content:center;width:100%;min-height:48px;margin-top:4px;background:#44614e;color:#fff;border:0;border-radius:10px;padding:14px 28px;font:600 15px/1 'Poppins',sans-serif;cursor:pointer;transition:background .18s ease}
.cf-submit:hover{background:#3a5443}
/* chat bubble: hidden with everything else on the first screen, and kept clear of the card and the bar */
body.cine #rp-chat-launcher{opacity:0;transform:translateY(16px);transition:opacity .4s ease .35s,transform .4s ease .35s}
body.cine.is-scrolled #rp-chat-launcher{opacity:1;transform:none}
@media (min-width:781px){
  .cine-quote{bottom:100px}
}
@media (max-width:780px){
  body.cine #rp-chat-launcher{bottom:84px !important}
  .cine-ctas{flex-direction:column}
  .cine-ctas .rp2-btn{width:100%}
  .cine-inner{padding-bottom:96px}
  .cine-scroll{bottom:20px}
}
/* cine variant: second pass. #rp-home .rp2-wrap sets padding at id specificity, so the hero's own padding needs the same weight */
#rp-home .cine-hero .cine-inner{padding:120px clamp(20px,4vw,48px) clamp(64px,10vh,120px)}
@media (max-width:780px){#rp-home .cine-hero .cine-inner{padding-bottom:104px}}
/* card/pill never shows on the first screen, even with focus inside after minimising */
body.cine:not(.is-scrolled) .cine-quote{transform:translateX(calc(100% + 40px));opacity:0;pointer-events:none}
@media (max-width:780px){body.cine:not(.is-scrolled) .cine-quote{transform:translateY(110%);opacity:1}
  body.cine.quote-open #rp-chat-launcher{opacity:0;pointer-events:none}}

/* cine variant v2: the form sits ON the hero as a translucent panel (desktop: right column;
   phones: a band under the video). Nothing floats; the phone bar's button scrolls to it. */
#rp-home .cine-hero .cine-inner{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(320px,420px);gap:clamp(32px,5vw,80px);align-items:end}
.cine-panel{position:relative;z-index:1;background:rgba(16,19,20,.62);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);
  border:1px solid rgba(255,255,255,.14);border-radius:16px;padding:24px 24px 20px;color:#edefee;box-shadow:0 24px 60px rgba(0,0,0,.35)}
.cine-panel .cine-quote-kicker{color:#afc7b8}
.cine-panel .cine-quote-title{color:#fff;font-size:22px;font-weight:800;letter-spacing:-.02em;line-height:1.15;margin:4px 0 14px}
.cine-panel .cine-form label{color:rgba(237,239,238,.82)}
.cine-panel .cine-form input,.cine-panel .cine-form select,.cine-panel .cine-form textarea{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.18);color:#fff}
.cine-panel .cine-form select option{color:#101418}
.cine-panel .cine-form input:focus,.cine-panel .cine-form select:focus,.cine-panel .cine-form textarea:focus{outline-color:#7fa08c;border-color:#7fa08c;background:rgba(255,255,255,.14)}
.cine-panel .cf-note{color:rgba(237,239,238,.72)}
.cine-panel .cf-note a{color:#afc7b8}
.cine-panel .cf-done{color:#fff}
.cine-panel{animation:cine-rise 1s cubic-bezier(.2,.7,.2,1) .7s both}
.cine-quote,.cine-quote-pill,.cine-quote-card{display:none !important}
#estimate{scroll-margin-top:140px}
@media (max-width:980px){
  #rp-home .cine-hero .cine-inner{grid-template-columns:1fr;align-items:end}
  .cine-hero{min-height:0}
  .cine-copy{min-height:calc(100svh - 120px - 104px);display:flex;flex-direction:column;justify-content:flex-end}
  .cine-panel{margin-top:24px}
}
@media (max-width:780px){
  .cine-scroll{display:none}
  .cine-bar>*{text-decoration:none}
  body.cine:not(.is-scrolled) .cine-quote{display:none}
}
@media (prefers-reduced-motion:reduce){.cine-panel{animation:none}}

/* cine variant v3: the form is a white card (slightly see-through) in the hero's right column,
   hidden on load and popping in on the first scroll with the header. Scrolls with the hero. */
#rp-home .cine-hero .cine-inner{grid-template-columns:minmax(0,1.2fr) minmax(380px,460px);align-items:end}
.cine-panel{background:rgba(255,255,255,.92);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.6);
  border-radius:16px;padding:28px 28px 22px;color:#101418;box-shadow:0 30px 70px rgba(0,0,0,.45);animation:none}
.cine-panel .cine-quote-kicker{color:#44614e;font-size:12px}
.cine-panel .cine-quote-title{color:#101418;font-size:24px;margin:4px 0 18px}
.cine-panel .cine-form label{color:#3d454c;font-size:13px}
.cine-panel .cine-form input,.cine-panel .cine-form select,.cine-panel .cine-form textarea{background:#fff;border:1px solid rgba(16,20,24,.18);color:#101418;font-size:16px;padding:12px 14px;min-height:48px;margin-top:6px;border-radius:10px}
.cine-panel .cine-form textarea{min-height:64px}
.cine-panel .cine-form input:focus,.cine-panel .cine-form select:focus,.cine-panel .cine-form textarea:focus{outline:2px solid #44614e;outline-offset:1px;border-color:#44614e;background:#fff}
.cine-panel .cf-row{margin-bottom:14px}
.cine-panel .cf-submit{min-height:52px;font-size:16px}
.cine-panel .cf-note{color:#4a535b;font-size:13px}
.cine-panel .cf-note a{color:#44614e}
.cine-panel .cf-done{color:#101418}
/* pop-in */
.cine-panel{transition:opacity .55s cubic-bezier(.2,.7,.2,1),transform .55s cubic-bezier(.2,.7,.2,1)}
body.cine:not(.is-scrolled) .cine-panel{opacity:0;transform:translateY(28px) scale(.96);pointer-events:none}
body.cine.is-scrolled .cine-panel,.cine-panel:focus-within{opacity:1;transform:none;pointer-events:auto}
@media (max-width:980px){
  .cine-panel{margin-top:28px;padding:24px 20px 18px}
}
@media (prefers-reduced-motion:reduce){
  .cine-panel{transition:none}
  body.cine:not(.is-scrolled) .cine-panel{transform:none}
}
/* v3 fixes: the two-column rule above leaked past 980px; and a roomier card */
#rp-home .cine-hero .cine-inner{grid-template-columns:minmax(0,1.15fr) minmax(400px,480px)}
.cine-panel{padding:32px 32px 24px}
.cine-panel .cine-quote-title{font-size:26px;margin:4px 0 20px}
.cine-panel .cine-form label{font-size:14px}
.cine-panel .cine-form input,.cine-panel .cine-form select,.cine-panel .cine-form textarea{min-height:52px;margin-top:7px}
.cine-panel .cf-row{margin-bottom:16px}
.cine-panel .cf-submit{min-height:56px}
@media (max-width:980px){
  #rp-home .cine-hero .cine-inner{grid-template-columns:1fr}
  .cine-panel{padding:26px 22px 20px}
}

/* cine variant v4: photo slideshow instead of video. Slow crossfade + gentle zoom on the live slide. */
.cine-slide{position:absolute;inset:0;display:block;opacity:0;transition:opacity 1.6s ease}
.cine-slide.is-on{opacity:1}
.cine-slide img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:brightness(.92) saturate(.92) contrast(1.04);transform:scale(1.04);transition:transform 7.6s ease-out}
.cine-slide.is-on img{transform:scale(1.12)}
@media (prefers-reduced-motion:reduce){.cine-slide,.cine-slide img{transition:none}.cine-slide img,.cine-slide.is-on img{transform:none}}

/* cine v5: copy sits in the vertical middle of the hero, not on the floor (Max 2026-10-10) */
.cine-hero{align-items:center}
#rp-home .cine-hero .cine-inner{align-items:center}
@media (max-width:980px){.cine-copy{justify-content:center}}
/* the lifted Squarespace block resets #rp-home *{padding:0}, which out-specifies the card's padding */
#rp-home .cine-panel{padding:32px 32px 24px}
#rp-home .cine-panel .cine-form input,#rp-home .cine-panel .cine-form select,#rp-home .cine-panel .cine-form textarea{padding:12px 14px}
@media (max-width:980px){#rp-home .cine-panel{padding:26px 22px 20px}}
/* same reset zeroes the card's margins: restore field rhythm, and air around the button */
#rp-home .cine-panel .cine-quote-title{margin:6px 0 22px}
#rp-home .cine-panel .cf-row{margin-bottom:16px}
#rp-home .cine-panel .cine-form input,#rp-home .cine-panel .cine-form select,#rp-home .cine-panel .cine-form textarea{margin-top:7px}
#rp-home .cine-panel .cf-submit{margin-top:24px}
#rp-home .cine-panel .cf-note{margin-top:14px;line-height:1.5}

/* ---------------------------------------------------------------- light sections (Max 2026-10-12)
   Dark frames the page (header, heroes, trust strip, closing CTA, footer); light carries the
   reading. Warm off-white, not pure white, so it sits next to the charcoal. */
:root{--lt-bg:#f6f5f2;--lt-card:#ffffff;--lt-ink:#101418;--lt-mut:#4a524c;--lt-line:rgba(16,20,24,.1);--lt-green:#44614e}
/* homepage (both / and /preview-cinematic): the block runs on variables, so re-scope them */
body #rp-home :is(.rp2-industries,.rp2-why,.rp2-projects){--bg:var(--lt-bg);--panel:var(--lt-card);--ink:var(--lt-ink);
  --mut:rgba(16,20,24,.66);--line:var(--lt-line);--green-l:var(--lt-green);background:var(--lt-bg);color:var(--lt-ink)}
body #rp-home .rp2-why .rp2-bigstat div b{color:var(--lt-ink)}
body #rp-home :is(.rp2-industries,.rp2-why,.rp2-projects) .rp2-ghost:hover{background:rgba(16,20,24,.04)}
/* city pages: second half of the split block */
body .ps-md:has(.rp-light){background:#121513}
body .ps-md [class^="rp"].rp-dark-hero{padding-bottom:56px !important}
body .ps-md [class^="rp"].rp-light{background:var(--lt-bg) !important;color:var(--lt-ink) !important;padding-top:24px !important;padding-bottom:72px !important}
body .rp-light h2,body .rp-light h3,body .rp-light p b{color:var(--lt-ink) !important}
body .rp-light p{color:var(--lt-mut) !important}
body .rp-light :is(.card,.faq){background:var(--lt-card) !important;border-color:var(--lt-line) !important;box-shadow:0 1px 2px rgba(16,20,24,.04),0 8px 24px rgba(16,20,24,.05)}
body .rp-light .chips span{background:#f1f0ec !important;border-color:#dedcd5 !important;color:#2e3630 !important}
body .rp-light .cta h3{color:#fff !important}
body .rp-light .cta p{color:#e4ece6 !important}
/* the source ran Services/Why/Projects together on one dark ground with no padding at those
   seams; once the colour changes there they need their own breathing room */
body #rp-home :is(.rp2-services,.rp2-why){padding-top:clamp(64px,9vw,120px) !important} /* beats their inline style="padding-top:0" */
body #rp-home .rp2-projects{padding-bottom:clamp(72px,9vw,120px)}
/* things that sit on photos or the green tile keep light text */
body #rp-home :is(.rp2-pcard,.rp2-icell.rp2-accent){--ink:#EDEFEE;--mut:rgba(237,239,238,.78);--green-l:#cfe0d5}
/* city cards/FAQ titles: the page's own .rpXXX .card h3{...!important} out-ranks a plain .rp-light h3 */
body .ps-md [class^="rp"].rp-light :is(h2,h3,p b),body .ps-md [class^="rp"].rp-light :is(.card,.faq) h3{color:var(--lt-ink) !important}
body .ps-md [class^="rp"].rp-light p,body .ps-md [class^="rp"].rp-light :is(.card,.faq) p{color:var(--lt-mut) !important}
body .ps-md [class^="rp"].rp-light .cta h3{color:#fff !important}
body .ps-md [class^="rp"].rp-light .cta p{color:#e4ece6 !important}

/* homepage service rows: a photo between the number and the name (Max 2026-10-12) */
body #rp-home a.rp2-svc{grid-template-columns:48px 132px 1.1fr 1fr auto;padding:18px 0}
body #rp-home .rp2-sthumb{display:block;width:132px;height:88px;object-fit:cover;border-radius:10px;background:#1b2022;
  transition:transform .35s cubic-bezier(.2,.7,.2,1),filter .35s ease;filter:saturate(.9)}
body #rp-home a.rp2-svc:hover .rp2-sthumb{transform:scale(1.04);filter:saturate(1.05)}
@media (max-width:920px){
  body #rp-home a.rp2-svc{grid-template-columns:28px 84px 1fr auto;gap:14px;padding:14px 0}
  body #rp-home .rp2-sthumb{width:84px;height:60px;border-radius:8px}
}
@media (prefers-reduced-motion:reduce){body #rp-home .rp2-sthumb{transition:none}body #rp-home a.rp2-svc:hover .rp2-sthumb{transform:none}}

/* ---------------------------------------------------------------- homepage areas band
   House template (IE Pro / Arolite / UTD): county cards with every town page + region map.
   Deep brand-green ground so it reads apart from Process above and the CTA below. */
body #rp-home .rp-areas{--ag:#15201a;background:var(--ag);color:#edefee;padding:clamp(64px,9vw,120px) 0}
body #rp-home .rp-areas-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:clamp(32px,5vw,72px);align-items:center}
body #rp-home .rp-areas-eye{display:flex;align-items:center;gap:8px;color:#9fb9a9}
body #rp-home .rp-areas h2{color:#fff;margin:0 0 14px}
body #rp-home .rp-areas-lead{color:rgba(237,239,238,.74);font-size:16px;line-height:1.6;max-width:52ch;margin:0 0 26px}
body #rp-home .rp-county{background:rgba(255,255,255,.04);border:1px solid rgba(237,239,238,.12);border-radius:14px;padding:16px 20px 14px;margin:0 0 12px}
body #rp-home .rp-county h3{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;color:#fff;font-size:16px;font-weight:700;margin:0 0 10px}
body #rp-home .rp-cc-note{font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:#9fb9a9}
body #rp-home .rp-pins{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:2px 14px}
body #rp-home .rp-pins li{display:flex;align-items:center;gap:6px;color:rgba(237,239,238,.7);font-size:14px;min-width:0}
body #rp-home .rp-pins svg{color:#7fa08c;flex:none}
body #rp-home .rp-pins a{color:#fff;text-decoration:none;font-weight:600;padding:5px 0;display:inline-block}
body #rp-home .rp-pins a:hover,body #rp-home .rp-pins a:focus-visible{text-decoration:underline;text-underline-offset:3px;color:#cfe0d5}
body #rp-home .rp-areas-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:22px}
body #rp-home .rp-areas .rp2-ghost{color:#fff;border-color:rgba(237,239,238,.4)}
body #rp-home .rp-areas-map .nc-map{display:block;width:100%;height:auto;border-radius:16px;overflow:hidden;background:#101714}
body #rp-home .rp-map-note{font-size:13px;color:rgba(237,239,238,.66);text-align:center;margin:12px 0 0}
.rp-areas .nc-map .c{fill:#22302a;stroke:rgba(237,239,238,.14);stroke-width:.9;vector-effect:non-scaling-stroke}
.rp-areas .nc-map .c.served{fill:#5f8a70;stroke:#fff;stroke-width:1.4}
.rp-areas .nc-map .c.out{fill:#121915;stroke:#26302b}
.rp-areas .nc-map .st{fill:none;stroke:#7d8a83;stroke-width:1.6;stroke-dasharray:6 4;vector-effect:non-scaling-stroke}
.rp-areas .nc-map .rg-label{fill:rgba(237,239,238,.6);font:600 24px/1 Manrope,sans-serif;letter-spacing:.14em;text-transform:uppercase}
.rp-areas .nc-map .office{fill:#fff;stroke:#15201a;stroke-width:3}
.rp-areas .nc-map .office-label{fill:#fff;font:700 26px/1 Manrope,sans-serif;paint-order:stroke;stroke:#15201a;stroke-width:5px}
.rp-areas .nc-map .town{fill:none;stroke:#cfe0d5;stroke-width:3}
.rp-areas .nc-map .town-label{fill:#cfe0d5;font:600 22px/1 Manrope,sans-serif;paint-order:stroke;stroke:#15201a;stroke-width:5px}
@media (max-width:980px){body #rp-home .rp-areas-grid{grid-template-columns:1fr}}
@media (max-width:560px){body #rp-home .rp-pins{grid-template-columns:repeat(2,1fr)}body #rp-home .rp-pins a{padding:9px 0}}
.rp-areas .nc-map .dot{fill:#cfe0d5;stroke:#15201a;stroke-width:1.5}
.rp-areas .nc-map .town{fill:#15201a;stroke:#cfe0d5;stroke-width:3}
.rp-areas .nc-map .town-label{font-size:25px}
.rp-areas .nc-map .office-label{font-size:29px}
/* radius line (25 mi, Max 2026-10-12); counties inside it are NOT tinted: only the four home
   counties are claimed, so a county the ring merely touches keeps its plain fill */
.rp-areas .nc-map .ring{fill:none;stroke:#cfe0d5;stroke-width:1.6;stroke-dasharray:3 6;opacity:.7;vector-effect:non-scaling-stroke}
.rp-areas .nc-map .town-label{font-size:27px}
.rp-areas .nc-map .office-label{font-size:30px}
.rp-areas .nc-map .rg-label{font-size:22px}
/* city pages beyond the Wayne pilot: the other components those blocks carry */
body .ps-md [class^="rp"].rp-light strong{color:var(--lt-ink) !important}
body .ps-md [class^="rp"].rp-light .note{background:#eef2ef !important;border-left-color:var(--lt-green) !important}
body .ps-md [class^="rp"].rp-light .note p{color:#2e3630 !important}
body .ps-md [class^="rp"].rp-light .chip{background:#f1f0ec !important;border-color:#dedcd5 !important;color:#2e3630 !important}
body .ps-md [class^="rp"].rp-light .near{color:var(--lt-mut) !important}
body .ps-md [class^="rp"].rp-light .near a{color:var(--lt-green) !important;border-bottom-color:rgba(68,97,78,.35) !important}
body .ps-md [class^="rp"].rp-light .step{background:var(--lt-card) !important;border-color:var(--lt-line) !important}
body .ps-md [class^="rp"].rp-light .step .n{color:var(--lt-green) !important}
body .ps-md [class^="rp"].rp-light .step p{color:var(--lt-mut) !important}
body .ps-md [class^="rp"].rp-light .cta strong{color:#fff !important}

/* ---------------------------------------------------------------- light sections: other pages (Max 2026-10-12) */
/* /about: story + "beyond the work" go light; hero, partners, CTA stay dark */
body #rp-about :is(.rpa-story,.rpa-sec:not(.rpa-duo):not(.rpa-cta):not(.rpa-story)){--bg:var(--lt-bg);--panel:var(--lt-card);--ink:var(--lt-ink);
  --mut:rgba(16,20,24,.66);--line:var(--lt-line);--green-l:var(--lt-green);background:var(--lt-bg);color:var(--lt-ink)}
body #rp-about .rpa-story .rpa-stats div b{color:var(--lt-ink)}
/* /request-estimate + /discuss-your-project: the form body goes light */
body #rp-estimate .rpe-body{--bg:var(--lt-bg);--panel:var(--lt-card);--ink:var(--lt-ink);--mut:rgba(16,20,24,.66);--line:var(--lt-line);
  --green-l:var(--lt-green);background:var(--lt-bg);color:var(--lt-ink)}
body #rp-estimate .rpe-card{box-shadow:0 1px 2px rgba(16,20,24,.05),0 18px 44px rgba(16,20,24,.1);border:1px solid var(--lt-line)}
/* /service-areas: second half of the split .rpsa block */
body .ps-md .rpsa.rp-dark-hero{border-radius:20px 20px 0 0}
body .ps-md .rpsa.rp-light{border-radius:0 0 20px 20px;padding-left:48px;padding-right:48px}
@media (max-width:767px){body .ps-md .rpsa.rp-light{padding-left:22px;padding-right:22px}}
body .ps-md .rpsa.rp-light .card,body .ps-md .rpsa.rp-light .wide{background:var(--lt-card) !important;border-color:var(--lt-line) !important;box-shadow:0 1px 2px rgba(16,20,24,.04),0 8px 24px rgba(16,20,24,.05)}
body .ps-md .rpsa.rp-light .wide{border-left:3px solid var(--lt-green) !important}
body .ps-md .rpsa.rp-light :is(.card h3,.wide h3){color:var(--lt-ink) !important}
body .ps-md .rpsa.rp-light .card p.tag{color:var(--lt-green) !important}
body .ps-md .rpsa.rp-light .wide p{color:var(--lt-mut) !important}
body .ps-md .rpsa.rp-light .chips :is(span,a){background:#f1f0ec !important;border:1px solid #dedcd5 !important;color:#2e3630 !important}
body .ps-md .rpsa.rp-light .chips a:hover{border-color:var(--lt-green) !important;color:var(--lt-ink) !important}

/* ---------------------------------------------------------------- our lead form (replaces the Jobber embeds)
   Inside #rp-estimate, whose reset zeroes margin/padding: every rule is scoped past it. */
body #rp-estimate .rlf{font-family:'Poppins',-apple-system,sans-serif;color:#101418}
body #rp-estimate .rlf .rlf-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px 18px}
body #rp-estimate .rlf .rlf-f{display:block;font-size:14px;font-weight:600;color:#2b3237}
body #rp-estimate .rlf .rlf-wide{grid-column:1/-1}
body #rp-estimate .rlf .rlf-req{color:#a2391f}
body #rp-estimate .rlf .rlf-opt{font-weight:400;color:#5a636b}
body #rp-estimate .rlf :is(input[type=text],input[type=tel],input[type=email],select,textarea){display:block;margin-top:7px;font:400 16px/1.4 'Poppins',sans-serif;color:#101418;background:#fff;
  border:1px solid rgba(16,20,24,.22);border-radius:10px;padding:12px 14px;min-height:50px;width:100%;box-sizing:border-box}
body #rp-estimate .rlf textarea{min-height:110px;resize:vertical}
body #rp-estimate .rlf :is(input,select,textarea):focus{outline:2px solid #44614e;outline-offset:1px;border-color:#44614e}
body #rp-estimate .rlf [aria-invalid=true]{border-color:#a2391f;outline:2px solid rgba(162,57,31,.25)}
body #rp-estimate .rlf .rlf-hp,body #rp-home .cine-form .cf-hp{display:none}
body #rp-estimate .rlf .rlf-consent,body #rp-home .cine-form .cf-consent{display:flex;gap:10px;align-items:flex-start;margin:18px 0 0;font-size:12.5px;line-height:1.5;color:#4a535b;font-weight:400}
body #rp-estimate .rlf .rlf-consent input,body #rp-home .cine-form .cf-consent input{width:18px;height:18px;min-height:0;margin:2px 0 0;flex:none;accent-color:#44614e}
body #rp-estimate .rlf .rlf-consent:has([aria-invalid=true]) span,body #rp-home .cine-form .cf-consent:has([aria-invalid=true]) span{color:#a2391f}
body #rp-estimate .rlf .rlf-submit{display:flex;align-items:center;justify-content:center;width:100%;min-height:54px;margin:20px 0 0;border:0;border-radius:10px;
  background:#44614e;color:#fff;font:600 16px/1 'Poppins',sans-serif;cursor:pointer;transition:background .18s ease}
body #rp-estimate .rlf .rlf-submit:hover{background:#3a5443}
body #rp-estimate .rlf .rlf-submit:disabled{opacity:.7;cursor:progress}
body #rp-estimate .rlf .rlf-err{margin:14px 0 0;font-size:14px;color:#a2391f}
body #rp-estimate .rlf .rlf-err a{color:#a2391f;font-weight:700}
body #rp-estimate .rlf .rlf-done{font-size:17px;line-height:1.5;color:#101418;padding:8px 0}
body #rp-estimate .rlf .rlf-done b{display:block;font-size:22px;margin-bottom:6px}
body #rp-home .cine-panel .cf-err{margin:12px 0 0;font-size:13px;color:#a2391f}
body #rp-home .cine-panel .cf-err a{color:#a2391f;font-weight:700}
@media (max-width:640px){body #rp-estimate .rlf .rlf-grid{grid-template-columns:1fr}}
/* done() hides a lead form's children with [hidden]; author display rules (.rlf .rlf-grid{display:grid}) beat the UA's [hidden], so force it */
form.rp-lead-form [hidden]{display:none!important}
/* city/area page blocks with no side padding of their own (Wynnewood and most others) put text
   4px from the screen edge on phones and tablets. Zero specificity, so a block that sets its own
   padding (Wayne: 28px) still wins. */
:where(body[data-page^="epoxy-flooring-"],body[data-page="commercial-epoxy-flooring-philadelphia"]) :where(.ps-in>div){padding-left:clamp(20px,5vw,40px);padding-right:clamp(20px,5vw,40px)}
/* these three set padding:0 on their block outright, which beats the :where() rule above */
body:is([data-page="epoxy-flooring-bryn-mawr-pa"],[data-page="epoxy-flooring-havertown-pa"],[data-page="epoxy-flooring-springfield-pa"]) .ps-in>div{padding-left:clamp(20px,5vw,40px);padding-right:clamp(20px,5vw,40px)}
/* homepage areas band: the county-card column is far taller than the map, so centring left an
   empty top-right corner on desktop; top-align and let the map ride along */
body #rp-home .rp-areas-grid{align-items:start}
@media (min-width:981px){body #rp-home .rp-areas-map{position:sticky;top:96px}}
/* footer town strip (the client's own block): its literal "·"/"|" separators dangled at line
   ends; the flex gap already spaces the links. Align it with the footer columns above. */
body .rpfsa .sep{display:none}
body .rpfsa .in{max-width:1240px;padding:0 clamp(20px,4vw,48px);gap:6px 22px}
/* King of Prussia: "Request a Site Assessment" broke onto two lines on phones */
body[data-page="epoxy-flooring-king-of-prussia-pa"] .ps-in .btn{white-space:nowrap;padding-left:22px;padding-right:22px}
/* homepage areas band (Max 2026-10-12): counties as an accordion; each county's town links sit in
   a <details>, closed by default but still in the HTML for crawlers */
body #rp-home .rp-counties{list-style:none;margin:0;padding:0;display:grid;gap:10px}
body #rp-home .rp-counties details,body #rp-home .rp-counties .rp-clink{background:rgba(255,255,255,.04);border:1px solid rgba(237,239,238,.12);border-radius:14px;transition:border-color .2s,background .2s}
body #rp-home .rp-counties details[open],body #rp-home .rp-counties .rp-clink:hover{border-color:rgba(237,239,238,.35);background:rgba(255,255,255,.06)}
body #rp-home .rp-counties summary,body #rp-home .rp-counties .rp-clink{display:flex;align-items:center;gap:10px;padding:16px 20px;cursor:pointer;list-style:none;color:#fff;font-size:17px;font-weight:700;text-decoration:none;border-radius:14px}
body #rp-home .rp-counties summary::-webkit-details-marker{display:none}
/* hover tints the whole card, never the summary alone (that read as a separate bar, and sticks after a tap) */
@media (hover:hover){body #rp-home .rp-counties details:has(>summary:hover){border-color:rgba(237,239,238,.35);background:rgba(255,255,255,.06)}}
body #rp-home .rp-counties summary{background:transparent!important}
body #rp-home .rp-counties summary:focus-visible,body #rp-home .rp-counties .rp-clink:focus-visible{outline:2px solid #8FAE87;outline-offset:2px}
body #rp-home .rp-counties summary>svg:first-child,body #rp-home .rp-counties .rp-clink>svg:first-child{color:#8FAE87;flex:none}
body #rp-home .rp-counties .rp-cc-note{font-size:11px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:#9fb9a9}
body #rp-home .rp-counties .rp-ccount{margin-left:auto;font-size:13px;font-weight:500;color:rgba(237,239,238,.6)}
body #rp-home .rp-counties .rp-chev{flex:none;color:rgba(237,239,238,.75);transition:transform .2s}
body #rp-home .rp-counties .rp-clink .rp-chev{margin-left:auto}
body #rp-home .rp-counties details[open] .rp-chev{transform:rotate(180deg)}
body #rp-home .rp-counties details .rp-pins{padding:0 20px 16px 44px}
@media (max-width:520px){body #rp-home .rp-counties .rp-cc-note{display:none}body #rp-home .rp-counties details .rp-pins{padding-left:20px}}
@media (prefers-reduced-motion:reduce){body #rp-home .rp-counties .rp-chev{transition:none}}
