@import url("https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,400;0,500;0,600;0,700;0,800;0,900;1,400&display=swap");

html, body { overflow-x: hidden; }
body { font-family: "Montserrat", sans-serif; }

/* display headings render at weight 900 like the reference site */
.font-display { font-family: "Montserrat", sans-serif; font-weight: 900; letter-spacing: -0.01em; }

details > summary { list-style: none; cursor: pointer; }
summary::-webkit-details-marker { display: none; }
details[open] .faq-chevron { transform: rotate(180deg); }
.faq-chevron { transition: transform 0.2s ease; }

/* hero image overlay - light enough that the photo reads, dark enough for white text */
.hero-overlay {
  background: linear-gradient(100deg, rgba(0, 0, 0, 0.62) 0%, rgba(0, 0, 0, 0.35) 45%, rgba(0, 0, 0, 0.12) 100%);
}
@media (max-width: 1023px) {
  .hero-overlay {
    background: linear-gradient(180deg, rgba(0, 0, 0, 0.68) 0%, rgba(0, 0, 0, 0.22) 45%, rgba(0, 0, 0, 0.4) 100%);
  }
}
.hero-text-shadow { text-shadow: 0 2px 14px rgba(0, 0, 0, 0.6); }

/* staggered page-load reveal */
.reveal { opacity: 0; transform: translateY(14px); animation: rise 0.6s ease forwards; }
.reveal-1 { animation-delay: 0.05s; }
.reveal-2 { animation-delay: 0.18s; }
.reveal-3 { animation-delay: 0.32s; }
.reveal-4 { animation-delay: 0.46s; }
@keyframes rise { to { opacity: 1; transform: none; } }

/* revolving brand banner */
.marquee { overflow: hidden; }
.marquee-track {
  display: flex;
  align-items: center;
  width: max-content;
  animation: marquee 40s linear infinite;
}
.marquee-track img { height: 3rem; width: auto; margin-right: 5rem; }
@keyframes marquee { to { transform: translateX(-50%); } }
.marquee:hover .marquee-track { animation-play-state: paused; }

/* ---- reference-layout additions (dark homepage) ---- */

/* orange rule that trails a heading, like the reference */
.rule { flex: 1; height: 2px; background: #f06018; min-width: 3rem; }

/* service photo tiles: label chip always visible, description reveals on hover */
.service-tile { position: relative; display: block; overflow: hidden; aspect-ratio: 4 / 3; }
.service-tile img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.4s ease; }
.service-tile:hover img { transform: scale(1.06); }
.service-tile .tile-desc {
  position: absolute; inset: 0;
  background: rgba(0, 0, 0, 0.78);
  display: flex; flex-direction: column; justify-content: center;
  padding: 1.75rem; text-align: center;
  opacity: 0; transition: opacity 0.3s ease;
}
.service-tile:hover .tile-desc { opacity: 1; }
.service-tile .tile-label {
  position: absolute; left: 1rem; bottom: 1rem; z-index: 2;
  background: #000; color: #fff;
  font-weight: 800; text-transform: uppercase; font-size: 0.72rem; letter-spacing: 0.04em;
  padding: 0.55rem 0.9rem; display: inline-flex; align-items: center; gap: 0.4rem;
}

/* process step arrows (white chevron ribbon like the reference) */
.step-arrow {
  background: #fff; color: #000; font-weight: 700; font-size: 0.9rem;
  padding: 0.9rem 1.6rem 0.9rem 2.2rem; text-align: center; line-height: 1.25;
  clip-path: polygon(0 0, calc(100% - 22px) 0, 100% 50%, calc(100% - 22px) 100%, 0 100%, 22px 50%);
}
.step-arrow:first-child { clip-path: polygon(0 0, calc(100% - 22px) 0, 100% 50%, calc(100% - 22px) 100%, 0 100%); padding-left: 1.6rem; }

/* mobile process: downward chevron blocks (like the reference mobile layout) */
.step-chevron {
  background: #fff; color: #000; font-weight: 700; font-size: 1.05rem; line-height: 1.3;
  clip-path: polygon(0 0, 50% 22%, 100% 0, 100% 78%, 50% 100%, 0 78%);
  width: 11.5rem; padding: 3rem 1rem; text-align: center; flex-shrink: 0;
}
.process-icon.plain::after { display: none; }

/* process circle icons */
.process-icon {
  width: 5.5rem; height: 5.5rem; border-radius: 9999px; background: #fff; color: #000;
  display: flex; align-items: center; justify-content: center; position: relative;
}
.process-icon::after {
  content: ""; position: absolute; bottom: -0.55rem; left: 50%; transform: translateX(-50%);
  border-left: 0.6rem solid transparent; border-right: 0.6rem solid transparent; border-top: 0.7rem solid #fff;
}

/* wavy divider between black sections and photo panels */
.wave { display: block; width: 100%; height: 70px; }
.photo-panel { position: relative; }
.photo-panel > .wave-top { position: absolute; top: -1px; left: 0; right: 0; z-index: 2; }
.photo-panel > .wave-bottom { position: absolute; bottom: -1px; left: 0; right: 0; z-index: 2; transform: scaleY(-1); }

/* Build-out components, restyled 2026-10-06 to match the homepage:
   black sections, Montserrat 900 uppercase headings with the orange trailing rule,
   accent #f06018 buttons (white secondary), white pill eyebrows, wavy photo heroes. */
:root { --accent:#f06018; --accent-dark:#cf4a0f; }

/* top emergency banner + nav link */
.emergency-nav { color:var(--accent); font-weight:800; text-transform:uppercase; font-size:.875rem; letter-spacing:.025em; }
.emergency-nav:hover { color:#fff; }
.emergency-strip { position:relative; z-index:70; display:flex; align-items:center; justify-content:center; flex-wrap:wrap; gap:2px 10px; padding:9px 16px; background:var(--accent); color:#fff; text-align:center; font-weight:800; text-transform:uppercase; letter-spacing:.04em; font-size:.8rem; line-height:1.3; }
.emergency-strip:hover { background:var(--accent-dark); }
.emergency-strip-call { white-space:nowrap; display:inline-flex; align-items:center; gap:6px; }
.emergency-strip-call::after { content:"\2192"; }
@media(max-width:420px) { .emergency-strip { font-size:.72rem; padding:8px 16px; letter-spacing:.02em; } }

/* page hero: same photo + gradient + wave as the homepage panels */
.page-hero { position:relative; min-height:480px; display:flex; align-items:center; background:#000; overflow:hidden; }
.page-hero-image { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; opacity:1; }
.page-hero::before { content:""; position:absolute; inset:0; z-index:1; background:linear-gradient(100deg,rgba(0,0,0,.78) 0%,rgba(0,0,0,.55) 50%,rgba(0,0,0,.3) 100%); }
.page-hero::after { content:""; position:absolute; left:0; right:0; bottom:-1px; height:70px; z-index:2; background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 90' preserveAspectRatio='none'%3E%3Cpath d='M0,35 C240,-5 480,85 720,55 C960,25 1200,75 1440,30 L1440,90 L0,90 Z' fill='%23000'/%3E%3C/svg%3E") no-repeat; background-size:100% 100%; }
.page-hero-content { position:relative; z-index:3; width:min(1280px,100%); margin:auto; padding:72px 16px 110px; }
.page-hero h1 { max-width:960px; font-weight:900; letter-spacing:-.01em; text-transform:uppercase; font-size:clamp(2.1rem,5vw,3.75rem); line-height:1.05; margin-top:14px; text-shadow:0 2px 14px rgba(0,0,0,.6); }
.page-hero p { max-width:640px; margin:22px 0 30px; line-height:1.7; font-size:1.1rem; color:rgba(255,255,255,.9); text-shadow:0 2px 14px rgba(0,0,0,.6); }
.eyebrow, .page-hero p.eyebrow { display:inline-block; background:#fff; color:#000; text-shadow:none; font-weight:800; text-transform:uppercase; letter-spacing:.12em; font-size:.72rem; line-height:1.4; padding:8px 16px; margin:0; max-width:none; }
@media(max-width:1023px) { .page-hero::before { background:linear-gradient(180deg,rgba(0,0,0,.78) 0%,rgba(0,0,0,.5) 55%,rgba(0,0,0,.7) 100%); } }

/* body content */
.page-content { max-width:1280px; margin:auto; padding:24px 16px; line-height:1.8; }
.page-content section { padding:44px 0; }
.page-content h2,.urgent h2 { display:flex; align-items:center; gap:24px; font-weight:900; text-transform:uppercase; letter-spacing:-.01em; font-size:clamp(1.75rem,4vw,2.75rem); line-height:1.1; margin:0 0 28px; }
.page-content h2::after { content:""; flex:1; height:2px; background:var(--accent); min-width:3rem; max-width:28rem; }
.page-content h3 { font-weight:800; text-transform:uppercase; font-size:1.05rem; letter-spacing:.02em; margin-bottom:10px; }
.page-content p { margin:0 0 20px; max-width:80ch; color:rgba(255,255,255,.8); font-size:1.05rem; }
.page-content a:not(.button):not(.content-card) { color:var(--accent); font-weight:700; text-decoration:none; }
.page-content a:not(.button):not(.content-card):hover { color:#fff; }
.page-content ul,.page-content ol { padding-left:24px; list-style:disc; color:rgba(255,255,255,.85); }
.page-content ol { list-style:decimal; }
.page-content li { margin-bottom:12px; }
.page-content li::marker { color:var(--accent); font-weight:800; }

/* buttons: homepage accent + white secondary */
.button { display:inline-flex; align-items:center; justify-content:center; gap:8px; min-height:52px; background:var(--accent); color:#fff; border-radius:4px; padding:14px 28px; font-weight:800; text-transform:uppercase; letter-spacing:.03em; text-decoration:none; transition:background-color .15s; }
.button:hover { background:var(--accent-dark); }
.button.secondary,.urgent .button + .button { background:#fff; color:#000; }
.button.secondary:hover,.urgent .button + .button:hover { background:#f1f5f9; }

/* cards + reviews */
.card-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:24px; }
.content-card { display:block; padding:28px; border:1px solid rgba(255,255,255,.1); background:rgba(255,255,255,.05); border-radius:8px; transition:border-color .2s, transform .2s; }
.content-card:hover { border-color:var(--accent); transform:translateY(-2px); }
.content-card h3 { color:#fff; }
.content-card p { margin:0; color:rgba(255,255,255,.75); }
.content-card span { color:var(--accent); font-weight:800; text-transform:uppercase; font-size:.8rem; letter-spacing:.04em; }
.card-grid cite { display:block; font-style:normal; font-weight:700; margin-top:14px; color:#fff; }

/* town links: same two-column list as the homepage service-area block */
.town-links { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px 32px; }
.page-content .town-links a { color:rgba(255,255,255,.85); font-weight:600; }
.page-content .town-links a:hover { color:var(--accent); }
@media(max-width:767px) { .town-links { grid-template-columns:repeat(2,minmax(0,1fr)); } }

/* callout block */
.page-content .urgent,.urgent { padding:36px; margin:28px 0; border:1px solid rgba(255,255,255,.12); border-left:4px solid var(--accent); background:rgba(255,255,255,.04); border-radius:8px; }
.urgent p { margin-bottom:20px; }
.urgent > a:not(.button) { display:inline-block; margin:12px 16px 0 0; }

/* FAQ: same as homepage (orange underline, chevron) */
.page-content details { border-bottom:1px solid rgba(240,96,24,.7); padding:18px 0; max-width:48rem; }
.page-content summary { display:flex; align-items:center; gap:12px; font-weight:700; font-size:1.1rem; }
.page-content summary::before { content:""; width:9px; height:9px; flex-shrink:0; border-right:2.5px solid #fff; border-bottom:2.5px solid #fff; transform:rotate(45deg) translateY(-3px); transition:transform .2s; }
.page-content details[open] summary::before { transform:rotate(225deg) translateX(-3px); }
.page-content details p { margin:12px 0 0 21px; }

/* quote form: matches the homepage "Get a free quote" card */
.quote-section { max-width:560px; background:#000; border:1px solid rgba(255,255,255,.2); border-radius:8px; padding:32px; margin:24px 0; box-shadow:0 25px 50px -12px rgba(0,0,0,.6); }
.page-content .quote-section h2 { font-size:1.9rem; }
.page-content .quote-section h2::after { display:none; }
.quote-form { display:grid; gap:10px; }
.quote-form label { font-weight:700; font-size:.875rem; }
.quote-form input:not([type=checkbox]),.quote-form select,.quote-form textarea { width:100%; background:#fff; color:#000; padding:12px 16px; border-radius:4px; border:0; }
.quote-form input:focus,.quote-form select:focus,.quote-form textarea:focus { outline:none; box-shadow:0 0 0 2px var(--accent); }
.quote-form .consent { display:flex; align-items:flex-start; gap:12px; font-size:.75rem; line-height:1.6; font-weight:600; margin:10px 0; color:#fff; }
.quote-form button.button { width:100%; font-size:1.15rem; font-weight:900; margin-top:4px; }
.consent input { margin-top:3px; width:16px; height:16px; flex-shrink:0; }
[data-consent] a { color:var(--accent); text-decoration:underline; }
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible { outline:3px solid var(--accent); outline-offset:4px; }

/* mobile sticky call bar: header button styles */
.mobile-call-bar { display:none; }
@media(max-width:1023px) {
 body[data-page="home"] { padding-bottom:var(--mobile-call-bar-height, calc(68px + env(safe-area-inset-bottom))); }
 .mobile-call-bar { display:flex; position:fixed; z-index:60; bottom:0; left:0; right:0; gap:8px; padding:10px 16px calc(10px + env(safe-area-inset-bottom)); background:#000; border-top:2px solid var(--accent); }
 .mobile-call-bar a { flex:1 1 0; min-width:0; line-height:20px; padding:13px 4px; text-align:center; border-radius:4px; background:var(--accent); color:#fff; font-weight:800; text-transform:uppercase; letter-spacing:.03em; font-size:.8rem; }
 .mobile-call-bar a:last-child { background:#fff; color:#000; }
 #site-header nav { height:80px; }
 #site-header .site-logo img { height:48px; width:auto; }
 html.mobile-menu-open, body.mobile-menu-open { overflow:hidden !important; }
 #site-header.mobile-menu-open > header { min-height:80px; z-index:80; }
 #site-header.mobile-menu-open nav { position:fixed; top:0; left:0; right:0; background:#000; }
 #mobile-menu { position:fixed; top:80px; bottom:0; left:0; right:0; background:#000; overflow-y:auto; overscroll-behavior:contain; }
 .card-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media(max-width:600px) { .card-grid { grid-template-columns:1fr; } .page-hero { min-height:420px; } .page-hero-content { padding:56px 16px 96px; } .page-content { padding:16px; } .page-content section { padding:32px 0; } .page-content .urgent { padding:24px 18px; } .quote-section { padding:24px 18px; } .page-content h2 { gap:14px; } }

@media(prefers-reduced-motion:reduce) { *,*::before,*::after { animation:none!important; transition:none!important; } .reveal { opacity:1; transform:none; } }

body[data-page="emergency"] .page-hero .button { font-size:clamp(1.1rem,2.4vw,1.5rem); min-height:68px; padding:20px 30px; }
/* Article bylines use the existing white eyebrow treatment. */
.page-content p.eyebrow { color:#000; }

/* Phone spacing: keep long hero titles and their actions within easy reach. */
@media(max-width:600px) {
 .page-hero { min-height:0; }
 .page-hero-content { padding:24px 16px 72px; }
 .page-hero h1 { font-size:clamp(1.75rem,7.5vw,2rem); line-height:1.1; }
 .page-hero p { font-size:1rem; line-height:1.6; margin:16px 0 24px; }
 .page-hero p.eyebrow { font-size:.65rem; margin:0; }
 body[data-header="overlay"] > section:first-of-type { padding-top:104px; min-height:0; }
 body[data-header="overlay"] h1 { font-size:clamp(2.25rem,10vw,3rem); }
 .photo-panel:first-of-type { min-height:0; }
 .photo-panel:first-of-type > .relative { padding-top:32px; padding-bottom:80px; }
 .photo-panel:first-of-type h1 { font-size:clamp(1.75rem,7.5vw,2rem); line-height:1.1; }
 .page-content section > .button, .page-content p > .button { margin-bottom:8px; }
 .page-content h2, .urgent h2 { overflow-wrap:anywhere; }
 .page-content .quote-section { padding:24px 18px; }
 .urgent .button { max-width:100%; padding-left:16px; padding-right:16px; }
}

/* Quote names stack on phones and share a row on wider screens. */
.quote-names { display:grid; gap:16px; }
.quote-form .quote-names > div { display:grid; gap:10px; }
@media (min-width:768px) { .quote-names { grid-template-columns:minmax(0,1fr) minmax(0,1fr); } }

/* R7: one shared container edge and a readable body column. */
.page-content p, .page-content section > ul, .page-content section > ol,
.page-content > ul, .page-content > ol, .page-content details { max-width:760px; }
.page-content h1, .page-content h2, .page-hero h1, .photo-panel h1,
body[data-header="overlay"] h1 { text-wrap:balance; }
.page-content .card-grid { align-items:stretch; }
.post-figure { max-width:760px; margin:28px 0 36px; border:1px solid rgba(255,255,255,.1); border-radius:8px; overflow:hidden; background:rgba(255,255,255,.05); }
.post-figure img { display:block; width:100%; height:auto; }
@media(min-width:1024px) {
 #site-header nav { gap:20px; }
 #site-header .desktop-nav { gap:20px; white-space:nowrap; }
 #site-header .desktop-actions { display:flex; white-space:nowrap; }
 body[data-header="overlay"] > section:first-of-type > .relative { align-items:start; }
 body[data-header="overlay"] > section:first-of-type h1 { margin-top:20px; }
 .desktop-nav > .group > div { z-index:80; }
}
@media(min-width:1024px) and (max-width:1199px) {
 #site-header nav { gap:12px; }
 #site-header .site-logo img { height:52px; }
 #site-header .desktop-nav { gap:12px; }
 #site-header .desktop-nav > a, #site-header .desktop-nav > .group > a { font-size:.7rem; }
 #site-header .desktop-actions { gap:8px; }
 #site-header .desktop-actions > a { padding:12px 10px; font-size:.7rem; }
}
#home-areas a { text-decoration:underline; text-underline-offset:4px; text-decoration-color:var(--accent); }
#home-areas a:hover { color:var(--accent); }
.reviews-track { display:flex; gap:24px; overflow-x:auto; scroll-snap-type:x mandatory; scrollbar-width:thin; scrollbar-color:var(--accent) #000; padding:4px 4px 16px; margin:0 -4px; }
.review-card.content-card { flex:0 0 calc((100% - 48px)/3); min-width:0; height:220px; display:flex; flex-direction:column; scroll-snap-align:start; padding:18px; }
.review-card.content-card:hover { transform:none; }
.review-card .review-quote { display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:4; overflow:hidden; max-height:6em; flex-shrink:0; font-size:1rem; line-height:1.5; color:rgba(255,255,255,.85); margin:10px 0 12px; }
.review-top { display:flex; align-items:center; justify-content:space-between; min-height:22px; }
.review-top > .google-g:last-child { margin-left:auto; }
.google-g { flex:none; width:22px; height:22px; }
.review-stars { color:#FBBC04; letter-spacing:3px; }
.review-byline { display:flex; align-items:baseline; gap:8px; margin-top:auto; font-size:.75rem; white-space:nowrap; min-width:0; }
.review-author { min-width:0; overflow:hidden; text-overflow:ellipsis; font-weight:800; text-decoration:underline; text-underline-offset:4px; }
.review-card .review-meta { flex-shrink:0; color:rgba(255,255,255,.7); font-size:inherit; font-weight:400; text-transform:none; letter-spacing:normal; }
@media(max-width:767px) { .review-card.content-card { flex-basis:88%; height:228px; padding:16px; } }
@media(prefers-reduced-motion:reduce) { .reviews-track { scroll-behavior:auto; } }
/* Compact footer; native details retain crawlable links on phones. */
.footer-main { display:grid; grid-template-columns:1.35fr 1.2fr 1fr .8fr 1.1fr; gap:28px; padding-top:32px; padding-bottom:28px; font-size:.75rem; line-height:1.6; }
.footer-brand img { width:142px; height:auto; margin-bottom:8px; }
.footer-brand p { color:rgba(255,255,255,.75); }
.footer-phone { display:block; font-size:1rem; font-weight:800; margin:8px 0; }
.footer-social { display:flex; align-items:center; gap:14px; margin-top:12px; }
.social-badge { display:flex; align-items:center; justify-content:center; flex:0 0 40px; width:40px; height:40px; border-radius:50%; background:#fff; }
.social-badge svg { display:block; flex-shrink:0; }
.social-badge:focus-visible { outline:3px solid var(--accent); outline-offset:4px; }
.footer-group summary, .footer-hours h3 { font-weight:800; text-transform:uppercase; font-size:.78rem; margin:0 0 12px; }
.footer-group summary { display:flex; justify-content:space-between; }
.footer-group ul { display:grid; gap:6px; }
.footer-group a, .footer-social a, .footer-hours { color:rgba(255,255,255,.75); }
.compact-footer a:hover { color:var(--accent); }
.compact-footer .button:hover { color:#fff; }
.footer-hours p { margin-top:8px; }
.footer-legal { border-top:2px solid var(--accent); padding:18px 0; display:flex; gap:24px; font-size:.75rem; color:rgba(255,255,255,.7); }
.footer-legal p { margin-right:auto; }
@media(min-width:1024px) { .footer-group summary { pointer-events:none; } .footer-group summary span { display:none; } }
@media(max-width:1023px) {
 .footer-main { grid-template-columns:1fr; gap:0; padding-top:28px; padding-bottom:24px; font-size:.85rem; }
 .footer-brand { padding-bottom:24px; }
 .footer-group { border-bottom:1px solid rgba(255,255,255,.2); }
 .footer-group summary { padding:16px 0; margin:0; font-size:.85rem; }
 .footer-group[open] summary span { transform:rotate(45deg); }
 .footer-group ul { padding-bottom:18px; gap:12px; }
 .footer-hours { margin-top:24px; }
 .footer-hours ul { display:grid; grid-template-columns:1fr 1fr; gap:4px 12px; }
 .footer-legal { flex-wrap:wrap; gap:10px 24px; }
 .footer-legal p { flex-basis:100%; }
}
/* Audit corrections: legacy hero alignment and generated form padding. */
@media(min-width:1024px) {
 :is(body, body > main) > .photo-panel:first-of-type > .relative { width:100%; max-width:1280px; text-align:left; }
 :is(body, body > main) > .photo-panel:first-of-type > .relative > h1 { max-width:960px; }
 :is(body, body > main) > .photo-panel:first-of-type > .relative > p:not(.eyebrow) { max-width:760px; }
 :is(body, body > main) > .photo-panel:first-of-type > .relative > .flex { justify-content:flex-start; }
 :is(body, body > main) > .photo-panel:first-of-type > .relative > .mx-auto { margin-left:0; }
 body[data-page="contact"] > .photo-panel:first-of-type svg:not(.wave) { display:none; }
 .page-content .quote-section { padding:32px; }
}
body[data-page="contact"] .max-w-6xl { max-width:1280px; }
@media(min-width:768px) and (max-width:1023px) { .review-card.content-card { flex-basis:calc((100% - 24px)/2); } }


.review-card { overflow-wrap:anywhere; }

.photo-panel .reviews-track { margin-bottom:32px; }
.photo-panel .review-card { background:#000; }

/* r13 grouped service navigation and contact-bar visibility. */
.services-panel { display:none; position:absolute; left:0; top:100%; width:580px; padding:20px; background:#fff; color:#111; box-shadow:0 18px 35px #0004; }
.services-dropdown:hover .services-panel, .services-dropdown:focus-within .services-panel { display:block; }
.services-dropdown.dismissed .services-panel { display:none; }
.service-columns { display:grid; grid-template-columns:1fr 1fr; gap:24px; }
.service-columns h3 { color:var(--accent); font-size:.75rem; font-weight:800; text-transform:uppercase; letter-spacing:.12em; margin:0 0 8px; }
.services-panel a { display:block; padding:9px 0; font-size:.8rem; font-weight:700; line-height:1.4; }
.services-panel a:hover, .services-panel a:focus-visible { color:var(--accent); }
.service-extras { display:flex; flex-wrap:wrap; gap:8px 20px; margin-top:14px; padding-top:12px; border-top:1px solid #8885; }
.service-extras a { font-size:.75rem; }
.mobile-services summary { cursor:pointer; text-transform:uppercase; font-weight:700; padding:8px 0; }
.mobile-services .service-columns { grid-template-columns:1fr; gap:16px; padding-top:14px; }
.mobile-services a { display:block; padding:10px 0; font-size:.875rem; line-height:1.4; }
.mobile-services .service-extras { display:block; }
.mobile-services a:focus-visible, .mobile-services summary:focus-visible, .services-panel a:focus-visible { outline:2px solid var(--accent); outline-offset:3px; }
.mobile-call-bar { transition:opacity 200ms ease, transform 200ms ease, visibility 200ms; }
.mobile-call-bar[aria-hidden="true"] { opacity:0; transform:translateY(100%); visibility:hidden; pointer-events:none; }
@media (prefers-reduced-motion:reduce) { .mobile-call-bar { transition:none; } }

/* Full customer accounts on the reviews page. */
.reviews-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:24px; }
.reviews-grid .review-card { height:auto; }
.reviews-grid .review-quote { display:block; -webkit-line-clamp:unset; max-height:none; overflow:visible; }
@media(max-width:1023px) { .reviews-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:767px) { .reviews-grid { grid-template-columns:minmax(0,1fr); } }

/* Compact static Google rating below the homepage submit button. */
.hero-google-badge { display:flex; align-items:center; justify-content:center; gap:10px; min-height:48px; color:#fff; text-align:center; text-decoration:none; border-radius:4px; }
.hero-google-badge .google-g { flex:none; }
.hero-google-stars { display:block; color:#FBBC04; font-size:16px; line-height:20px; letter-spacing:2px; }
.hero-google-rating { display:block; color:#fff; font-size:13px; font-weight:600; line-height:20px; }
.hero-google-badge:hover .hero-google-rating { text-decoration:underline; }
.hero-google-badge:focus-visible { outline:2px solid #FBBC04; outline-offset:4px; }

/* R19 town pages, using the existing orange, black and white palette. */
.page-hero .area-serving { max-width:1000px; font-size:clamp(2.6rem,5vw,4.8rem); font-weight:900; text-transform:uppercase; line-height:1.08; margin:28px 0; }
.area-actions { display:flex; flex-wrap:wrap; gap:16px; }
.area-actions .area-secondary { background:#fff; color:#111; }
.area-content h1 { font-weight:900; font-size:clamp(2rem,3.5vw,3rem); line-height:1.12; text-transform:uppercase; margin:0 0 24px; }
.area-intro { display:grid; grid-template-columns:1.15fr 1fr; gap:48px; align-items:center; }
.area-intro > img { width:100%; height:460px; object-fit:cover; border-radius:8px; }
.area-content .area-checklist { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px 24px; padding:0; list-style:none; margin:24px 0; }
.area-checklist li::before { content:'✓'; color:var(--accent); margin-right:10px; font-weight:900; }
.area-checklist li[hidden] { display:none; }
.area-guide { margin-top:36px; }
.area-columns,.area-blog-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:24px; }
.area-service-card { background:#141414; border:1px solid #333; border-top:4px solid var(--accent); padding:28px; border-radius:8px; }
.area-content .area-service-card h2 { font-size:1.5rem; line-height:1.25; gap:12px; align-items:flex-start; }
.area-service-card h2 span { color:var(--accent); }
.area-content .area-service-card h2::after { display:none; }
.area-content .area-service-card p { font-size:1rem; }
.area-brand-logos { display:grid; grid-template-columns:repeat(9,minmax(0,1fr)); align-items:center; gap:12px; margin:24px 0; }
.area-brand-logos img { width:100%; height:64px; object-fit:contain; padding:12px; background:white; border-radius:4px; }
.area-content .area-nearby { background:#f5f3ef; color:#161616; padding:40px; border-radius:8px; }
.area-content .area-nearby p { color:#333; }
.area-content .area-nearby a:not(.button) { color:#a33909; text-decoration:underline; text-underline-offset:4px; }
.area-content .area-nearby a:not(.button):hover { color:#111; }
.area-town-links { line-height:2.3; }
.area-blog-card { display:block; border:1px solid #333; border-radius:8px; overflow:hidden; background:#141414; }
.area-blog-card img { width:100%; height:220px; object-fit:cover; }
.area-blog-card > div { padding:24px; }
.area-blog-card h3 { color:white; }
.area-content .area-final { padding:40px; border-left-width:6px; }
.area-content a:focus-visible { outline:3px solid var(--accent); outline-offset:5px; }
@media(max-width:800px) {
 .area-brand-logos { grid-template-columns:repeat(3,minmax(0,1fr)); }
 .area-intro,.area-columns,.area-blog-grid { grid-template-columns:1fr; gap:24px; }
 .area-intro > img { height:280px; }
 .area-content .area-nearby,.area-content .area-final { padding:28px 20px; }
 .area-service-card { padding:24px; }
 .area-content h2::after { display:none; }
 .area-content .area-checklist { gap:10px 16px; font-size:.95rem; }
 .area-actions .button { text-align:center; }
}

/* R22 service hub photos. Town service sections keep their compact layout. */
.service-photo-card {padding:0;overflow:hidden;display:flex;flex-direction:column}
.service-photo-card>img {display:block;width:100%;height:auto;aspect-ratio:16/10;object-fit:cover;border-radius:7px 7px 0 0}
.service-card-copy {padding:24px;display:flex;flex-direction:column;gap:12px;flex:1}
.service-card-copy h3 {margin:0}
.service-card-copy>span {margin-top:auto;padding-top:4px}

/* R28: compact phone/chat cards and room for a widget above the mobile bar. */
.contact-card { background:#080808; color:#fff; border:1px solid #f97316; border-radius:12px; padding:28px; width:100%; box-sizing:border-box; }
.page-content .contact-card { padding:28px; }
[data-forms-enabled="false"] .contact-card-shell { padding:0; background:transparent; box-shadow:none; }
.page-content .contact-card h2 { display:block; }
.page-content .contact-card h2::after { display:none; }
.contact-card h2 { font-size:1.8rem; line-height:1.15; margin:0 0 16px; text-transform:uppercase; }
.contact-card p { color:#eee; line-height:1.6; margin:0 0 22px; }
.contact-card-actions { display:flex; flex-direction:column; gap:12px; }
.contact-card .button { display:block; text-align:center; background:#f97316; color:#fff; padding:14px 16px; border-radius:6px; font-weight:700; min-height:48px; }
.contact-card .contact-chat { background:#080808; border:1px solid #f97316; }
.contact-card a:focus-visible { outline:3px solid #fff; outline-offset:4px; }
.contact-details { overflow-wrap:anywhere; margin:20px 0; }
.contact-hours { margin-top:16px; line-height:1.8; }
[data-forms-enabled="false"][data-page="home"] .reveal-3 { padding:0; background:transparent; box-shadow:none; }
[data-forms-enabled="false"] .hero-google-badge { margin-top:18px; }
@media(max-width:1023px) {
  .contact-bar-visible #chat-widget-container,
  .contact-bar-visible #lc-chat-widget,
  .contact-bar-visible chat-widget,
  .contact-bar-visible iframe[title*="chat" i],
  .contact-bar-visible iframe[src*="leadconnectorhq.com"] { bottom:calc(var(--mobile-call-bar-height, 64px) + 16px) !important; }
}
/* R35 photos */
.review-byline { align-items:center; flex-shrink:0; }
.review-avatar { width:48px; height:48px; border-radius:50%; object-fit:cover; flex:none; }
.review-card .review-avatar-initial { display:flex; align-items:center; justify-content:center; background:var(--accent); color:#000; }
.review-card.content-card { height:250px; }
.reviews-grid .review-card { height:auto; }
.content-card:has(> .blog-card-photo) { overflow:hidden; padding:0 0 28px; }
.blog-card-photo { display:block; width:100%; height:auto; aspect-ratio:16/9; object-fit:cover; border-radius:7px 7px 0 0; margin-bottom:24px; }
.content-card > .blog-card-photo ~ h3, .content-card > .blog-card-photo ~ p { margin-left:28px; margin-right:28px; }
@media(max-width:767px) { .review-avatar { width:40px; height:40px; } .reviews-track .review-card { height:250px; } }
/* R36 header and specials */
.coupon-card { border:2px dashed var(--accent); display:flex; flex-direction:column; text-align:center; padding:28px 24px; }
.coupon-card .coupon-amount { color:var(--accent); font-family:inherit; font-size:3rem; font-weight:900; line-height:1.2; margin:0 0 20px; }
.page-content .coupon-card h2 { font-size:1.4rem; margin:0 0 18px; display:block; }
.page-content .coupon-card h2::after { display:none; }
.coupon-card .coupon-terms { font-size:.85rem; color:rgba(255,255,255,.7); margin:0 0 24px; }
.coupon-card .button { margin-top:auto; }
@media(min-width:768px) { .coupon-grid { grid-template-columns:repeat(3,minmax(0,1fr)); } }
@media(max-width:767px) { .coupon-grid { grid-template-columns:minmax(0,1fr); } }
/* R39 homepage trust bar */
/* R40 centered phone list */
@media (max-width:767px) {
 .home-trust-grid { display:flex; flex-direction:column; width:fit-content; margin-left:auto; margin-right:auto; gap:1rem; padding-top:2rem; padding-bottom:2rem; }
 .home-trust-grid > span { align-items:center; white-space:nowrap; }
 .home-trust-grid > span > svg { width:20px; height:20px; flex-shrink:0; }
}
@media (min-width:768px) {
 .home-trust-grid { display:flex; flex-wrap:nowrap; align-items:center; justify-content:center; column-gap:2.5rem; padding-top:2.5rem; padding-bottom:2.5rem; }
 .home-trust-grid > span > svg { flex-shrink:0; }
}
