/* ==========================================================================
   Nova Terra Tree Services - global stylesheet
   Palette: black / charcoal / bone white / cut-red
   Type: Oswald (display) + Inter (body)
   ========================================================================== */

:root{
  --black:#121212;
  --charcoal:#1c1c1c;
  --charcoal-2:#242424;
  --white:#f3f2ee;
  --white-dim:#c9c8c2;
  --grey:#4a4a4a;
  --grey-line:#dedcd6;
  --red:#c81d2b;
  --red-dark:#8f141e;
  --red-soft:#e0555f;
  --max:1180px;
  --shadow:0 18px 40px rgba(0,0,0,.12);
  --shadow-lg:0 26px 70px rgba(0,0,0,.28);
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;}
body{
  margin:0;
  background:var(--white);
  color:var(--black);
  font-family:'Inter',system-ui,-apple-system,'Segoe UI',sans-serif;
  font-size:16px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
  overflow-x:clip; /* clip, not hidden: keeps the sticky header working */
}
html{overflow-x:hidden;overflow-x:clip;}
h1,h2,h3,h4,.brand,.display{
  font-family:'Oswald','Inter',sans-serif;
  letter-spacing:.01em;
  margin:0;
  line-height:1.12;
}
a{color:inherit;text-decoration:none;}
p{margin:0 0 1rem;}
p:last-child{margin-bottom:0;}
img,svg,video{max-width:100%;display:block;}
ul,ol{margin:0 0 1rem;padding-left:1.15rem;}
li{margin-bottom:.45rem;}
strong{font-weight:600;}
:focus-visible{outline:3px solid var(--red);outline-offset:3px;}
.wrap{max-width:var(--max);margin:0 auto;padding:0 24px;}
.wrap-narrow{max-width:820px;margin:0 auto;padding:0 24px;}
.skip-link{
  position:absolute;left:-9999px;top:0;background:var(--red);color:#fff;
  padding:12px 18px;z-index:200;font-weight:600;
}
.skip-link:focus{left:12px;top:12px;}
.sr-only{
  position:absolute;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;
}
.hidden{display:none !important;}

/* ---------------- Buttons ---------------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:9px;
  background:var(--red);color:var(--white);
  font-family:'Oswald',sans-serif;font-weight:600;font-size:.95rem;
  text-transform:uppercase;letter-spacing:.04em;
  padding:13px 24px;border:2px solid var(--red);cursor:pointer;
  transition:background .15s ease,color .15s ease,border-color .15s ease,transform .15s ease;
  white-space:nowrap;
}
.btn:hover{background:var(--red-dark);border-color:var(--red-dark);transform:translateY(-1px);}
.btn-outline{background:transparent;color:var(--white);border-color:var(--white);}
.btn-outline:hover{background:var(--white);color:var(--black);border-color:var(--white);}
.btn-dark{background:var(--black);border-color:var(--black);color:var(--white);}
.btn-dark:hover{background:#000;border-color:#000;}
.btn-ghost-dark{background:transparent;color:var(--black);border-color:var(--black);}
.btn-ghost-dark:hover{background:var(--black);color:var(--white);}
.btn-lg{padding:16px 30px;font-size:1.05rem;}
.btn-block{width:100%;}

/* ---------------- Header ---------------- */
.topbar{
  background:var(--charcoal);color:var(--white-dim);
  font-size:.82rem;border-bottom:1px solid #2b2b2b;
}
.topbar-inner{
  display:flex;justify-content:space-between;align-items:center;gap:16px;
  padding:7px 24px;flex-wrap:wrap;
}
.topbar strong{color:var(--white);font-weight:600;}
.topbar a:hover{color:var(--white);}

header.site-header{
  position:sticky;top:0;z-index:60;
  background:var(--black);
  border-bottom:3px solid var(--red);
}
.header-inner{
  display:flex;align-items:center;justify-content:space-between;
  gap:18px;padding:12px 24px;max-width:var(--max);margin:0 auto;
}
.brand-row{display:flex;align-items:center;gap:11px;color:var(--white);flex:none;}

/* Client logo lockup: swirl mark + the client's own NOVA TERRA lettering,
   re-set on a single line so it stays legible at header scale. "Tree Services"
   is live text, since the source logo is a solar-company lockup. */
/* Hard ceiling on anything inside the brand link. Belt-and-braces: the width/height
   attributes in the markup are already display-sized, so even with no stylesheet at
   all the logo renders small rather than filling half the page. */
.brand-row img{max-height:46px;width:auto;}
.brand-mark{height:42px;width:auto;flex:none;}
.brand-text{display:flex;flex-direction:column;align-items:flex-start;gap:4px;}
.brand-wordmark{height:21px;width:auto;display:block;}
.brand-sub{
  display:block;font-family:'Inter',sans-serif;font-weight:500;font-size:.58rem;
  letter-spacing:.19em;color:var(--white-dim);text-transform:uppercase;line-height:1;
}
.brand-row:hover .brand-sub{color:var(--white);}

.brand{
  font-size:1.3rem;font-weight:700;color:var(--white);text-transform:uppercase;line-height:1;
}
.brand small{
  display:block;font-family:'Inter',sans-serif;font-weight:500;font-size:.58rem;
  letter-spacing:.16em;color:var(--white-dim);text-transform:uppercase;margin-top:3px;
}
nav.primary{display:flex;align-items:center;gap:22px;margin-left:auto;}
nav.primary a{
  color:var(--white-dim);font-weight:500;font-size:.93rem;
  padding:6px 0;border-bottom:2px solid transparent;transition:color .15s ease,border-color .15s ease;
}
nav.primary a:hover{color:var(--white);}
nav.primary a[aria-current="page"]{color:var(--white);border-bottom-color:var(--red);}
.has-sub{position:relative;}
.has-sub > .sub-toggle{
  background:none;border:none;color:var(--white-dim);cursor:pointer;
  font-family:'Inter',sans-serif;font-weight:500;font-size:.93rem;
  padding:6px 0;display:inline-flex;align-items:center;gap:6px;
}
.has-sub > .sub-toggle:hover{color:var(--white);}
.has-sub > .sub-toggle svg{width:11px;height:11px;transition:transform .18s ease;}
.has-sub.open > .sub-toggle svg{transform:rotate(180deg);}
/* Submenu sits flush against the trigger (no dead gap) and carries its own
   transparent hover bridge, so moving the cursor down from the nav item never
   crosses unhoverable space. */
.has-sub{padding-bottom:6px;}
.submenu{
  position:absolute;top:100%;left:-18px;min-width:290px;
  padding-top:14px;
  display:none;
}
.submenu-inner{
  background:var(--charcoal);border:1px solid #2f2f2f;border-top:3px solid var(--red);
  padding:10px;box-shadow:var(--shadow-lg);
}
.has-sub.open .submenu{display:block;}
/* Pure-CSS hover fallback so the dropdown still opens if main.js is stale,
   blocked, or fails. JS adds the close delay and click/keyboard support on top. */
.has-sub:hover .submenu,
.has-sub:focus-within .submenu{display:block;}
/* invisible bridge spanning the visual gap between trigger and panel */
.submenu::before{
  content:"";position:absolute;top:0;left:0;right:0;height:16px;background:transparent;
}
.submenu a{display:block;padding:9px 14px;font-size:.9rem;border:none;}
.submenu a:hover{background:var(--charcoal-2);color:var(--white);}
.submenu .submenu-all{
  border-top:1px solid #333;margin-top:6px;color:var(--red-soft);
  font-family:'Oswald',sans-serif;text-transform:uppercase;font-size:.82rem;letter-spacing:.05em;
}
.header-cta{display:flex;align-items:center;gap:14px;flex:none;}
.phone-link{
  color:var(--white);font-family:'Oswald',sans-serif;font-weight:600;
  font-size:1.05rem;white-space:nowrap;
}
.phone-link:hover{color:var(--red-soft);}
.menu-toggle{
  display:none;background:none;border:2px solid #3a3a3a;color:var(--white);
  font-size:1.35rem;line-height:1;cursor:pointer;padding:7px 11px;
}
.mobile-nav{
  display:none;background:var(--charcoal);border-top:1px solid #2c2c2c;
  padding:12px 24px 22px;
  /* Menu is taller than the viewport on phones, so it must scroll internally.
     118px reserves the sticky topbar + header above it. */
  max-height:calc(100vh - 118px);
  max-height:calc(100dvh - 118px);
  overflow-y:auto;
  -webkit-overflow-scrolling:touch;
  overscroll-behavior:contain;
}
.mobile-nav.open{display:block;}
.mobile-nav a{
  display:block;color:var(--white-dim);padding:11px 0;
  border-bottom:1px solid #2a2a2a;font-size:1rem;
}
.mobile-nav a:hover{color:var(--white);}
.mobile-nav .mobile-group{
  color:var(--red-soft);font-family:'Oswald',sans-serif;text-transform:uppercase;
  font-size:.8rem;letter-spacing:.08em;margin:18px 0 4px;
}
.mobile-nav .btn{margin-top:18px;width:100%;}

/* ---------------- Hero ---------------- */
.hero{
  position:relative;background:var(--black);color:var(--white);overflow:hidden;
}
.hero-media{position:absolute;inset:0;}
.hero-media img{width:100%;height:100%;object-fit:cover;opacity:.42;}
.hero-media::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(105deg,rgba(18,18,18,.95) 8%,rgba(18,18,18,.72) 52%,rgba(18,18,18,.42) 100%);
}
.hero-inner{position:relative;padding:92px 24px 104px;max-width:var(--max);margin:0 auto;}
.hero-inner.split{
  display:grid;grid-template-columns:1.05fr .95fr;gap:48px;align-items:center;
}
.hero-eyebrow{
  color:var(--red-soft);font-weight:600;font-size:.9rem;letter-spacing:.08em;
  text-transform:uppercase;margin-bottom:16px;display:flex;align-items:center;gap:10px;
}
.hero-eyebrow::before{content:"";width:34px;height:3px;background:var(--red);display:block;}
.hero h1{
  font-size:clamp(2.3rem,4.7vw,3.8rem);color:var(--white);text-transform:uppercase;
}
.hero h1 em{font-style:normal;color:var(--red);}
.hero .lead{margin-top:20px;max-width:52ch;color:var(--white-dim);font-size:1.12rem;}
.hero-actions{display:flex;gap:14px;margin-top:30px;flex-wrap:wrap;}
.hero-points{
  list-style:none;padding:0;margin:30px 0 0;display:flex;gap:10px 28px;flex-wrap:wrap;
  font-family:'Oswald',sans-serif;font-size:.92rem;text-transform:uppercase;letter-spacing:.03em;
  color:var(--white);
}
.hero-points li{display:flex;align-items:center;gap:8px;margin:0;}
.hero-points li::before{
  content:"";width:9px;height:9px;background:var(--red);display:block;flex:none;
  transform:rotate(45deg);
}
.hero-card{
  background:rgba(28,28,28,.93);border:1px solid #333;border-top:4px solid var(--red);
  padding:28px;box-shadow:var(--shadow-lg);
}
.hero-card h2{font-size:1.32rem;text-transform:uppercase;color:var(--white);margin-bottom:6px;}
.hero-card p.small{color:var(--white-dim);font-size:.9rem;margin-bottom:18px;}
.page-hero{padding:0;}
.page-hero .hero-inner{padding:66px 24px 72px;}
.page-hero h1{font-size:clamp(2rem,3.9vw,3.1rem);}

/* ---------------- Breadcrumbs ---------------- */
.breadcrumbs{
  background:var(--charcoal);color:var(--white-dim);font-size:.82rem;padding:10px 0;
}
.breadcrumbs ol{
  list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;
  max-width:var(--max);margin:0 auto;padding:0 24px;
}
.breadcrumbs li{margin:0;display:flex;align-items:center;gap:8px;}
.breadcrumbs li+li::before{content:"/";color:#5d5d5d;}
.breadcrumbs a:hover{color:var(--white);}
.breadcrumbs [aria-current="page"]{color:var(--white);}

/* ---------------- Trust strip ---------------- */
.trust-strip{background:var(--white);border-bottom:1px solid var(--grey-line);padding:16px 0;}
.trust-row{
  display:flex;flex-wrap:wrap;gap:14px 30px;justify-content:space-between;
  font-family:'Oswald',sans-serif;font-weight:500;font-size:.92rem;color:var(--black);
  text-transform:uppercase;letter-spacing:.02em;
}
.trust-row span{display:flex;align-items:center;gap:9px;}
.trust-row svg{width:20px;height:20px;flex:none;}

/* ---------------- Sections ---------------- */
.section{padding:84px 0;}
.section-sm{padding:56px 0;}
.section.alt{background:#eceae4;}
.section.dark{background:var(--charcoal);color:var(--white);}
.section.dark h2,.section.dark h3{color:var(--white);}
.section.dark p,.section.dark li{color:var(--white-dim);}
.section-head{max-width:680px;margin-bottom:44px;}
.section-head.center{margin-left:auto;margin-right:auto;text-align:center;}
.section-tag{
  color:var(--red);font-weight:600;font-size:.85rem;margin-bottom:12px;display:block;
  text-transform:uppercase;letter-spacing:.1em;
}
.section h2{font-size:clamp(1.75rem,3vw,2.5rem);text-transform:uppercase;}
.section h3{font-size:1.25rem;text-transform:uppercase;}
.section .desc{margin-top:14px;color:var(--grey);font-size:1.05rem;max-width:66ch;}
.section.dark .desc{color:var(--white-dim);}

/* Answer box (AEO) */
.answer-box{
  background:#fff;border:1px solid var(--grey-line);border-left:5px solid var(--red);
  padding:24px 26px;margin:0 0 30px;box-shadow:var(--shadow);
}
.answer-box h2,.answer-box h3{
  font-size:.86rem;letter-spacing:.12em;text-transform:uppercase;color:var(--red);margin-bottom:10px;
}
.answer-box p{font-size:1.1rem;line-height:1.6;margin:0;}
.section.dark .answer-box{background:var(--charcoal-2);border-color:#3a3a3a;}
.section.dark .answer-box p{color:var(--white);}

/* ---------------- Service cards ---------------- */
.services-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:26px;}
.services-grid.four{grid-template-columns:repeat(4,1fr);gap:2px;background:var(--black);}
.service-card{
  background:#fff;border:1px solid var(--grey-line);display:flex;flex-direction:column;
  overflow:hidden;transition:transform .18s ease,box-shadow .18s ease;
}
.service-card:hover{transform:translateY(-4px);box-shadow:var(--shadow);}
.service-card .card-media{aspect-ratio:16/10;overflow:hidden;background:var(--charcoal);}
.service-card .card-media img{width:100%;height:100%;object-fit:cover;transition:transform .3s ease;}
.service-card:hover .card-media img{transform:scale(1.05);}
.service-card .card-body{padding:24px;display:flex;flex-direction:column;gap:12px;flex:1;}
.service-card h3{font-size:1.15rem;}
.service-card p{color:var(--grey);font-size:.96rem;margin:0;}
.card-link{
  margin-top:auto;font-family:'Oswald',sans-serif;text-transform:uppercase;
  font-size:.86rem;letter-spacing:.06em;color:var(--red);display:inline-flex;gap:8px;align-items:center;
}
.service-card:hover .card-link{gap:13px;}

/* dark icon tiles (mockup style) */
.tile{
  background:var(--black);color:var(--white);padding:34px 26px;
  display:flex;flex-direction:column;gap:14px;transition:background .18s ease;
}
.tile:hover{background:var(--charcoal);}
.tile .icon{width:50px;height:50px;}
.tile h3{font-size:1.1rem;color:var(--white);}
.tile p{color:var(--white-dim);font-size:.94rem;margin:0;}

/* ---------------- Split feature ---------------- */
.split{display:grid;grid-template-columns:1fr 1fr;gap:52px;align-items:center;}
.split.wide-left{grid-template-columns:1.15fr .85fr;}
.split-media{position:relative;}
.split-media img{width:100%;height:100%;object-fit:cover;aspect-ratio:4/3;}
.split-media .stamp{
  position:absolute;bottom:-18px;right:-18px;background:var(--red);color:#fff;
  font-family:'Oswald',sans-serif;text-transform:uppercase;padding:16px 22px;
  font-size:1rem;letter-spacing:.04em;max-width:60%;line-height:1.25;
}
.check-list{list-style:none;padding:0;margin:0;}
.check-list li{
  position:relative;padding-left:32px;margin-bottom:12px;color:var(--grey);
}
.check-list li::before{
  content:"";position:absolute;left:0;top:.42em;width:16px;height:9px;
  border-left:3px solid var(--red);border-bottom:3px solid var(--red);
  transform:rotate(-45deg);
}
.section.dark .check-list li{color:var(--white-dim);}

/* ---------------- Why us ---------------- */
.why-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:36px;}
.why-item{border-left:3px solid var(--red);padding-left:22px;}
.why-item h3{font-size:1.2rem;margin-bottom:10px;}

/* ---------------- Process ---------------- */
.process-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:28px;}
.process-item{border-top:3px solid var(--grey-line);padding-top:16px;}
.process-num{
  font-family:'Oswald',sans-serif;font-weight:700;font-size:.85rem;
  color:var(--red);letter-spacing:.08em;margin-bottom:8px;display:block;
}
.process-item h3{font-size:1.05rem;margin-bottom:8px;}
.process-item p{color:var(--grey);margin:0;font-size:.94rem;}

/* ---------------- Gallery ---------------- */
.gallery{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;}
.gallery figure{margin:0;position:relative;overflow:hidden;background:var(--charcoal);}
.gallery img{width:100%;height:100%;object-fit:cover;aspect-ratio:1/1;transition:transform .35s ease;}
.gallery figure:hover img{transform:scale(1.07);}
.gallery figcaption{
  position:absolute;left:0;right:0;bottom:0;background:linear-gradient(transparent,rgba(0,0,0,.82));
  color:#fff;font-size:.8rem;padding:26px 12px 10px;
}
.gallery.tall figure:first-child{grid-row:span 2;grid-column:span 2;}
.gallery.tall figure:first-child img{aspect-ratio:1/1;height:100%;}

/* ---------------- Stats ---------------- */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;}
.stat{border-left:3px solid var(--red);padding-left:18px;}
.stat .num{font-family:'Oswald',sans-serif;font-size:2.4rem;line-height:1;color:var(--white);}
.stat .label{font-size:.88rem;color:var(--white-dim);text-transform:uppercase;letter-spacing:.06em;margin-top:8px;}

/* ---------------- Areas ---------------- */
.region-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:26px;}
.region-card{background:#fff;border:1px solid var(--grey-line);padding:26px;}
.region-card h3{font-size:1.1rem;margin-bottom:6px;}
.region-card .region-sub{font-size:.85rem;color:var(--red);text-transform:uppercase;letter-spacing:.07em;margin-bottom:14px;}
.city-list{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:8px;}
.city-list li{margin:0;}
.city-list a{
  display:inline-block;border:1px solid var(--grey-line);padding:6px 12px;font-size:.85rem;
  transition:background .15s ease,color .15s ease,border-color .15s ease;
}
.city-list a:hover{background:var(--black);color:var(--white);border-color:var(--black);}
.area-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px;}
.area-chips a,.area-chips span{
  border:1px solid rgba(255,255,255,.28);padding:6px 12px;font-size:.85rem;color:var(--white);
}
.area-chips a:hover{background:var(--white);color:var(--black);}

/* ---------------- FAQ ---------------- */
.faq-list{max-width:860px;}
.faq-item{border-bottom:1px solid var(--grey-line);}
.faq-q{
  width:100%;background:none;border:none;text-align:left;cursor:pointer;
  font-family:'Oswald',sans-serif;font-size:1.08rem;text-transform:uppercase;letter-spacing:.01em;
  padding:20px 44px 20px 0;position:relative;color:var(--black);line-height:1.3;
}
.faq-q::after{
  content:"";position:absolute;right:8px;top:50%;width:13px;height:13px;
  border-right:3px solid var(--red);border-bottom:3px solid var(--red);
  transform:translateY(-70%) rotate(45deg);transition:transform .2s ease;
}
.faq-item.open .faq-q::after{transform:translateY(-30%) rotate(225deg);}
.faq-a{display:none;padding:0 0 22px;color:var(--grey);max-width:74ch;}
.faq-item.open .faq-a{display:block;}
.section.dark .faq-item{border-color:#333;}
.section.dark .faq-q{color:var(--white);}
.section.dark .faq-a{color:var(--white-dim);}
.faq-cats{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:34px;}
.faq-cats a{
  border:1px solid var(--grey-line);padding:8px 15px;font-family:'Oswald',sans-serif;
  text-transform:uppercase;font-size:.84rem;letter-spacing:.05em;
}
.faq-cats a:hover{background:var(--black);color:var(--white);border-color:var(--black);}

/* ---------------- Form ---------------- */
.form-wrap{background:#fff;border:1px solid var(--grey-line);border-top:4px solid var(--red);padding:30px;box-shadow:var(--shadow);}
.form-wrap.on-dark{background:var(--charcoal-2);border-color:#3a3a3a;}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
.field{display:flex;flex-direction:column;gap:6px;}
.field.full{grid-column:1 / -1;}
.field label{
  font-family:'Oswald',sans-serif;font-size:.82rem;text-transform:uppercase;
  letter-spacing:.07em;color:var(--black);
}
.form-wrap.on-dark .field label,.hero-card .field label{color:var(--white);}
.field .req{color:var(--red);}
.field input,.field select,.field textarea{
  font-family:'Inter',sans-serif;font-size:.97rem;padding:12px 13px;
  border:1px solid #c9c6bf;background:#fff;color:var(--black);width:100%;
  transition:border-color .15s ease,box-shadow .15s ease;
}
.form-wrap.on-dark .field input,.form-wrap.on-dark .field select,.form-wrap.on-dark .field textarea,
.hero-card .field input,.hero-card .field select,.hero-card .field textarea{
  background:#1a1a1a;border-color:#3d3d3d;color:var(--white);
}
.field input:focus,.field select:focus,.field textarea:focus{
  outline:none;border-color:var(--red);box-shadow:0 0 0 3px rgba(200,29,43,.18);
}
.field textarea{min-height:120px;resize:vertical;}
.field .hint{font-size:.78rem;color:#6d6d6d;}
.form-wrap.on-dark .hint,.hero-card .hint{color:#9a9a9a;}
.form-note{font-size:.8rem;color:#6d6d6d;margin-top:14px;}
.form-wrap.on-dark .form-note,.hero-card .form-note{color:#9a9a9a;}
.form-actions{margin-top:20px;}

/* ---------------- CTA bands ---------------- */
.cta-band{background:var(--red);color:var(--white);padding:60px 0;}
.cta-inner{
  display:flex;justify-content:space-between;align-items:center;gap:30px;flex-wrap:wrap;
  max-width:var(--max);margin:0 auto;padding:0 24px;
}
.cta-inner h2{font-size:clamp(1.5rem,2.6vw,2.1rem);text-transform:uppercase;max-width:560px;color:#fff;}
.cta-inner p{margin-top:10px;color:#f8dcde;max-width:520px;}
.cta-actions{display:flex;gap:14px;flex-wrap:wrap;}
.cta-band .btn{background:var(--black);border-color:var(--black);}
.cta-band .btn:hover{background:#000;border-color:#000;}
.cta-band .btn-outline{background:transparent;border-color:#fff;color:#fff;}
.cta-band .btn-outline:hover{background:#fff;color:var(--red);}

.emergency-band{background:var(--black);color:var(--white);padding:26px 0;border-top:3px solid var(--red);}
.emergency-inner{
  display:flex;align-items:center;justify-content:center;gap:12px 22px;flex-wrap:wrap;text-align:center;
  font-family:'Oswald',sans-serif;text-transform:uppercase;letter-spacing:.04em;font-size:1.05rem;
  max-width:var(--max);margin:0 auto;padding:0 24px;
}
.emergency-inner .dot{width:11px;height:11px;background:var(--red);border-radius:50%;animation:pulse 1.8s infinite;}
@keyframes pulse{0%,100%{opacity:1;}50%{opacity:.35;}}

/* ---------------- Content prose ---------------- */
.prose h2{font-size:1.6rem;text-transform:uppercase;margin:38px 0 14px;}
.prose h3{font-size:1.18rem;text-transform:uppercase;margin:28px 0 10px;}
.prose p,.prose li{color:var(--grey);}
.prose .lead-text{font-size:1.12rem;color:#333;}
.prose img{margin:26px 0;}
.prose blockquote{
  margin:28px 0;padding:18px 24px;border-left:4px solid var(--red);background:#fff;
  font-size:1.05rem;color:#333;
}
.two-col{columns:2;column-gap:40px;}
.info-table{width:100%;border-collapse:collapse;margin:22px 0;font-size:.95rem;}
.info-table th,.info-table td{border:1px solid var(--grey-line);padding:12px 14px;text-align:left;}
.info-table th{background:var(--black);color:var(--white);font-family:'Oswald',sans-serif;text-transform:uppercase;font-size:.85rem;letter-spacing:.05em;}
.info-table tbody tr:nth-child(even){background:#f7f6f2;}
@media (max-width:560px){
  .info-table{font-size:.86rem;table-layout:fixed;}
  .info-table th,.info-table td{padding:9px 8px;overflow-wrap:anywhere;hyphens:auto;}
  .info-table th{font-size:.74rem;letter-spacing:.02em;}
}

/* ---------------- Reviews ---------------- */
.reviews{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;}
.review{background:#fff;border:1px solid var(--grey-line);padding:26px;display:flex;flex-direction:column;gap:14px;}
.stars{color:var(--red);letter-spacing:2px;font-size:1.05rem;}
.review p{color:var(--grey);margin:0;font-size:.97rem;}
.review .who{font-family:'Oswald',sans-serif;text-transform:uppercase;font-size:.88rem;letter-spacing:.05em;margin-top:auto;}
.review .who span{display:block;color:#7c7c7c;font-family:'Inter',sans-serif;text-transform:none;letter-spacing:0;font-size:.82rem;}

/* ---------------- Related links ---------------- */
.link-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;}
.link-card{
  border:1px solid var(--grey-line);background:#fff;padding:20px;
  display:flex;flex-direction:column;gap:6px;transition:border-color .15s ease,transform .15s ease;
}
.link-card:hover{border-color:var(--red);transform:translateY(-3px);}
.link-card strong{font-family:'Oswald',sans-serif;text-transform:uppercase;font-size:1rem;}
.link-card span{font-size:.88rem;color:var(--grey);}

/* ---------------- Footer ---------------- */
footer.site-footer{background:var(--black);color:var(--white-dim);padding:58px 0 26px;}
.footer-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:36px;margin-bottom:38px;}
.footer-brand .brand{color:var(--white);margin-bottom:12px;}
.footer-brand .brand-row{margin-bottom:16px;}
.footer-brand .brand-mark{height:46px;}
.footer-brand .brand-wordmark{height:22px;}
.footer-brand p{max-width:40ch;font-size:.92rem;}
.footer-contact{list-style:none;padding:0;margin:18px 0 0;}
.footer-contact li{display:flex;gap:10px;align-items:flex-start;font-size:.92rem;margin-bottom:9px;}
.footer-contact svg{width:17px;height:17px;flex:none;margin-top:3px;}
.footer-col h4{
  font-family:'Oswald',sans-serif;color:var(--white);text-transform:uppercase;
  font-size:.92rem;margin-bottom:14px;letter-spacing:.07em;
}
.footer-col a{display:block;margin-bottom:9px;font-size:.9rem;color:var(--white-dim);}
.footer-col a:hover{color:var(--white);}
.footer-bottom{
  border-top:1px solid #2c2c2c;padding-top:20px;
  display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;
  font-size:.81rem;color:#7a7a7a;
}
.footer-bottom a:hover{color:var(--white-dim);}

/* ---------------- Sticky mobile call bar ---------------- */
.call-bar{
  position:fixed;left:0;right:0;bottom:0;z-index:70;display:none;
  background:var(--black);border-top:3px solid var(--red);padding:9px 12px;
  gap:9px;
}
.call-bar a{flex:1;font-size:.88rem;padding:12px 8px;}

/* ---------------- Reveal animation ---------------- */
.reveal{opacity:0;transform:translateY(18px);transition:opacity .5s ease,transform .5s ease;}
.reveal.in{opacity:1;transform:none;}

/* ---------------- Responsive ---------------- */
@media (max-width:1040px){
  nav.primary{gap:16px;}
  nav.primary a,.has-sub > .sub-toggle{font-size:.88rem;}
  .phone-link{font-size:.98rem;}
  .brand-mark{height:38px;}
  .brand-wordmark{height:19px;}
}
@media (max-width:900px){
  nav.primary{display:none;}
  .menu-toggle{display:block;}
  .header-cta .phone-link{display:none;}
  .hero-inner.split{grid-template-columns:1fr;gap:34px;}
  .hero-inner{padding:64px 24px 76px;}
  .services-grid,.services-grid.four{grid-template-columns:repeat(2,1fr);}
  .why-grid{grid-template-columns:1fr;gap:26px;}
  .process-grid{grid-template-columns:repeat(2,1fr);}
  .split{grid-template-columns:1fr;gap:34px;}
  .split.wide-left{grid-template-columns:1fr;}
  .split-media .stamp{right:0;bottom:-14px;}
  .region-grid{grid-template-columns:1fr;}
  .reviews{grid-template-columns:1fr;}
  .stats{grid-template-columns:repeat(2,1fr);}
  .link-grid{grid-template-columns:1fr;}
  .footer-grid{grid-template-columns:1fr 1fr;gap:28px;}
  .gallery{grid-template-columns:repeat(2,1fr);}
  .gallery.tall figure:first-child{grid-row:auto;grid-column:span 2;}
  .two-col{columns:1;}
  .section{padding:62px 0;}
  .call-bar{display:flex;}
  body{padding-bottom:64px;}
}
@media (max-width:560px){
  .brand-mark{height:34px;}
  .brand-wordmark{height:17px;}
  .brand-sub{font-size:.52rem;letter-spacing:.16em;}
  .services-grid,.services-grid.four{grid-template-columns:1fr;}
  .process-grid{grid-template-columns:1fr;}
  .form-grid{grid-template-columns:1fr;}
  .footer-grid{grid-template-columns:1fr;}
  .cta-inner{flex-direction:column;align-items:flex-start;}
  .trust-row{justify-content:flex-start;}
  .hero .lead{font-size:1.03rem;}
  .topbar-inner{justify-content:center;font-size:.76rem;padding:6px 16px;}
  /* Mobile declutter: the sticky bottom bar already has Call Now + Free Quote,
     so the header keeps just logo + menu, and the top strip is one line. */
  .topbar-inner > span:first-child{display:none;}
  .header-cta .btn{display:none;}
  .header-inner{padding:10px 16px;gap:12px;}
  .wrap,.wrap-narrow{padding:0 18px;}
  .hero-inner{padding:48px 18px 60px;}
  .hero-eyebrow{font-size:.78rem;}
  .hero-eyebrow::before{display:none;}
  .hero-actions .btn{flex:1 1 100%;}
}
/* Grid/flex children default to min-width:auto, which lets a wide child
   (form, long word) push the column past the screen. */
.hero-inner.split > *,.split > *,.why-grid > *,.region-grid > *{min-width:0;}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto;}
  *,*::before,*::after{transition:none !important;animation:none !important;}
  .reveal{opacity:1;transform:none;}
}
@media print{
  header.site-header,.call-bar,.cta-band,.emergency-band,footer.site-footer{display:none;}
  body{background:#fff;}
}
