:root{
  --navy: #0E2A4D;
  --navy-deep: #081B33;
  --blue: #1E5FB5;
  --blue-light: #4C8FE0;
  --ink: #14181C;
  --stone: #5B6570;
  --line: #E6E8EB;
  --bg: #FFFFFF;
  --bg-soft: #F4F7FA;
  --radius: 6px;
  --font: 'Manrope', sans-serif;
}
*{box-sizing:border-box; margin:0; padding:0;}
html{scroll-behavior:smooth;}
body{background:var(--bg); color:var(--ink); font-family:var(--font); line-height:1.6; -webkit-font-smoothing:antialiased;}
a{color:inherit; text-decoration:none;}
img{max-width:100%; display:block;}
button{font-family:inherit; cursor:pointer;}
.wrap{max-width:1160px; margin:0 auto; padding:0 28px;}
:focus-visible{outline:2px solid var(--blue); outline-offset:3px;}
svg{display:block;}

/* ---------- Header ---------- */
header{position:sticky; top:0; z-index:100; background:rgba(255,255,255,0.96); backdrop-filter:blur(8px); border-bottom:1px solid var(--line);}
.nav-inner{display:flex; align-items:center; justify-content:space-between; padding:14px 28px; max-width:1160px; margin:0 auto; gap:16px;}
.logo{display:flex; align-items:center; gap:12px; flex-shrink:0;}
.logo-img{height:110px; width:110px; display:block;}
.logo-text{font-weight:800; font-size:1.12rem; letter-spacing:-0.01em; color:var(--ink);}
nav ul{list-style:none; display:flex; gap:26px;}
nav a{font-size:0.92rem; color:var(--stone); font-weight:600; padding:6px 2px; border-bottom:2px solid transparent; transition:color .15s, border-color .15s;}
nav a:hover, nav a.active{color:var(--navy); border-color:var(--blue);}
.nav-right{display:flex; align-items:center; gap:22px;}
.header-social{display:flex; align-items:center; gap:10px;}
.header-social a{width:34px; height:34px; border-radius:50%; background:var(--bg-soft); border:1px solid var(--line); display:flex; align-items:center; justify-content:center; flex-shrink:0;}
.header-social a svg{width:15px; height:15px; stroke:var(--navy);}
.header-social a:hover{background:var(--navy);}
.header-social a:hover svg{stroke:#fff;}
.nav-cta{background:var(--blue); color:#fff; font-size:0.85rem; font-weight:700; padding:11px 20px; border-radius:var(--radius); border:none; transition:background .15s; white-space:nowrap;}
.nav-cta:hover{background:var(--navy);}
.nav-cta-mobile{display:none;}
.nav-social-mobile{display:none;}
.burger{display:none; background:none; border:none; padding:6px;}
.burger span{display:block; width:22px; height:2px; background:var(--ink); margin:5px 0;}
@media(max-width:340px){.logo-text{display:none;}}
@media(max-width:480px){
  .nav-inner{padding-left:20px; padding-right:20px; gap:10px;}
  .logo{flex-shrink:1; min-width:0; gap:10px;}
  .logo-text{font-size:1rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
}
@media(max-width:1080px){
  .header-social{display:none;}
}
@media(max-width:900px){
  nav{position:absolute; top:100%; left:0; right:0; background:#fff; border-bottom:1px solid var(--line); transform:translateY(-120%); transition:transform .25s ease; padding:8px 28px 20px; z-index:99; box-shadow:0 12px 24px rgba(0,0,0,0.08); visibility:hidden;}
  nav.open{visibility:visible;}
  nav.open{transform:translateY(0);}
  nav ul{flex-direction:column; gap:2px;}
  nav ul li{border-bottom:1px solid var(--line);}
  nav a{display:block; padding:14px 2px;}
  .nav-cta{display:none;}
  .nav-cta-mobile{display:block; margin-top:16px;}
  .nav-social-mobile{display:flex; gap:12px; margin-top:18px;}
  .nav-social-mobile a{width:38px; height:38px; border-radius:50%; background:var(--navy); display:flex; align-items:center; justify-content:center;}
  .nav-social-mobile a svg{width:16px; height:16px; stroke:#fff;}
  .burger{display:block;}
}
@media(max-width:480px){
  .btn-primary, .btn-secondary{padding-top:14px; padding-bottom:14px; min-height:48px; display:inline-flex; align-items:center; justify-content:center;}
  .banner{padding:36px 24px;}
  .hero-cta-row{width:100%;}
  .hero-cta-row .btn-primary, .hero-cta-row .btn-secondary{flex:1 1 auto; text-align:center;}
}

/* ---------- Pages ---------- */
section{padding:64px 0;}
section.tight{padding:44px 0;}
section.page-intro{padding:44px 0 8px;}
section.page-intro + section.tight{padding-top:22px;}
.eyebrow{font-size:0.78rem; font-weight:700; letter-spacing:0.08em; text-transform:uppercase; color:var(--blue); margin-bottom:12px; display:flex; align-items:center; gap:10px;}
.eyebrow::before{content:''; width:18px; height:2px; background:var(--blue-light); border-radius:2px;}
h1,h2,h3{font-weight:800; letter-spacing:-0.02em; color:var(--ink);}
h1{font-size:clamp(2.2rem,4.6vw,3.1rem); line-height:1.12;}
h2{font-size:clamp(1.6rem,3.2vw,2.15rem); line-height:1.2;}
h3{font-size:1.1rem; line-height:1.35; font-weight:700;}
p.lead{font-size:1.1rem; color:var(--stone); max-width:54ch;}
.divider{height:1px; background:var(--line); border:none;}
.section-head{display:flex; justify-content:space-between; align-items:flex-end; gap:24px; margin-bottom:40px; flex-wrap:wrap;}

/* ---------- Buttons ---------- */
.btn-primary{background:var(--blue); color:#fff; padding:13px 26px; border-radius:var(--radius); font-weight:700; font-size:0.95rem; border:none; transition:background .15s; display:inline-block;}
.btn-primary:hover{background:var(--navy);}
.btn-secondary{border:1.5px solid #fff; color:#fff; padding:12px 24px; border-radius:var(--radius); font-weight:700; font-size:0.95rem; background:transparent; transition:all .15s; display:inline-block;}
.btn-secondary:hover{background:#fff; color:var(--navy);}

/* ---------- Hero ---------- */
.hero{display:grid; grid-template-columns:minmax(0,1.02fr) minmax(0,0.98fr); background:var(--navy-deep); overflow:hidden; padding:0;}
.hero-panel{display:flex; flex-direction:column; justify-content:center; padding:56px 0;}
.hero-panel-inner{padding-left:max(28px, calc((100vw - 1160px) / 2 + 28px)); padding-right:56px; max-width:660px;}
.hero-logo{width:140px; height:140px; margin-bottom:26px;}
.hero-badge{display:inline-flex; align-items:center; gap:9px; background:rgba(76,143,224,0.16); border:1px solid rgba(76,143,224,0.45); color:#BBD5F5; font-size:0.82rem; font-weight:700; letter-spacing:0.02em; padding:8px 15px; border-radius:100px; margin-bottom:20px;}
.hero-badge svg{width:16px; height:16px; stroke:var(--blue-light); flex-shrink:0;}
.hero-panel h1{color:#fff;}
.hero-panel h1 .accent{color:var(--blue-light);}
.hero-panel p.lead{color:#D8E2EF; margin-top:16px; max-width:44ch;}
.hero-cta-row{display:flex; gap:14px; margin-top:32px; flex-wrap:wrap;}
.hero-list{margin-top:28px; display:flex; flex-direction:column; gap:10px;}
.hero-list li{list-style:none; color:#D8E2EF; font-size:0.95rem; display:flex; align-items:flex-start; gap:10px;}
.hero-list li::before{content:''; width:6px; height:6px; border-radius:50%; background:var(--blue-light); flex-shrink:0; margin-top:0.55em;}
.hero-mosaic{display:grid; grid-template-columns:repeat(2,1fr); gap:10px; align-content:center; padding:56px 0 56px 10px; padding-right:max(28px, calc((100vw - 1160px) / 2 + 28px));}
/* Fixed ratios keep the photo column close to the text column's height, so neither
   side leaves a band of dead space beside the other. Images crop via object-fit. */
.tile{width:100%; height:auto; object-fit:cover; border-radius:6px; display:block;}
.tile-main{grid-column:1 / 3; aspect-ratio:16 / 10;}
.tile-pit, .tile-bobcat{aspect-ratio:4 / 3;}
@media(max-width:860px){
  .hero{grid-template-columns:1fr;}
  .hero-panel{padding:52px 0 44px;}
  .hero-panel-inner{padding-left:28px; padding-right:28px; max-width:none;}
  .hero-logo{width:116px; height:116px; margin-bottom:20px;}
  .hero-panel p.lead{max-width:none;}
  .hero-mosaic{grid-template-columns:repeat(2,1fr); grid-template-rows:auto auto; align-content:start; gap:10px; padding:0 24px 28px;}
  .tile-main{grid-column:1 / 3;}
  .tile-pit, .tile-bobcat{aspect-ratio:4 / 3;}
}
@media(max-width:620px){
  .hero-mosaic{gap:8px; padding:0 20px 24px;}
}

/* Feature block below hero */
.feature-strip{background:var(--bg-soft); border-bottom:1px solid var(--line); padding:44px 0;}
.feature-strip-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:18px;}
.hf-item{display:flex; flex-direction:column; gap:12px; background:var(--bg); border:1px solid var(--line); border-radius:10px; padding:22px 20px;}
.hf-item svg{width:26px; height:26px; stroke:var(--blue); flex-shrink:0;}
.hf-item span{font-size:0.88rem; font-weight:700; color:var(--navy); line-height:1.35;}
@media(max-width:860px){.feature-strip-grid{grid-template-columns:repeat(2,1fr); gap:14px;}}
@media(max-width:440px){.feature-strip-grid{grid-template-columns:1fr; gap:12px;} .hf-item span{font-size:0.76rem;}}

/* ---------- Cards ---------- */
.card{background:var(--bg-soft); border:1px solid var(--line); border-radius:10px; padding:32px 28px;}
.card .icon-wrap{width:46px; height:46px; border-radius:10px; background:var(--navy); display:flex; align-items:center; justify-content:center; margin-bottom:18px;}
.card .icon-wrap svg{width:22px; height:22px; stroke:#fff;}
.card h3{margin-bottom:10px;}
.card p{color:var(--stone); font-size:0.95rem;}

/* ---------- CTA banner ---------- */
.banner{background:var(--navy-deep); color:#fff; border-radius:12px; padding:56px 48px; display:flex; justify-content:space-between; align-items:center; gap:32px; flex-wrap:wrap;}
.banner h2{color:#fff;}
.banner p{color:#B9C7DA; margin-top:8px;}

/* ---------- Testimonials ---------- */
.testi-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:24px;}
@media(max-width:820px){.testi-grid{grid-template-columns:1fr;}}
.testi{background:var(--bg); border:1px solid var(--line); border-radius:10px; padding:28px 26px;}
.testi .quote-mark{font-size:2.2rem; color:var(--blue-light); font-weight:800; line-height:1; margin-bottom:6px;}
.testi p{color:var(--ink); font-size:0.95rem; margin-bottom:16px;}
.testi .who{font-size:0.82rem; font-weight:700; color:var(--stone);}

footer{border-top:1px solid var(--line); padding:44px 0 32px; margin-top:16px; background:var(--bg-soft);}
.footer-grid{display:grid; grid-template-columns:1.4fr 1fr 1fr; gap:36px;}
@media(max-width:700px){.footer-grid{grid-template-columns:1fr; gap:28px;}}
footer h3{font-size:0.95rem; margin-bottom:14px;}
footer ul{list-style:none; display:flex; flex-direction:column; gap:9px;}
footer a{color:var(--stone); font-size:0.9rem;}
footer a:hover{color:var(--blue);}
.footer-logo{height:110px; width:110px; margin-bottom:16px;}
.footer-tagline{color:var(--stone); font-size:0.9rem; max-width:36ch;}
.social-row{display:flex; gap:12px; margin-top:14px;}
.social-row a{width:38px; height:38px; border-radius:50%; background:var(--navy); display:flex; align-items:center; justify-content:center;}
.social-row a svg{width:17px; height:17px; stroke:#fff;}
.social-row a:hover{background:var(--blue);}
.footer-copyright{margin-top:18px; font-size:0.82rem; color:var(--stone);}

/* ---------- Services page ---------- */
.service-list{display:flex; flex-direction:column; border-top:1px solid var(--line);}
/* Photo stretches to the row height rather than setting it, so a short description
   doesn't leave a band of white space either side of the text. */
.service-row{display:grid; grid-template-columns:64px 1fr 300px; gap:28px; padding:30px 0; border-bottom:1px solid var(--line); align-items:stretch;}
.service-row > .icon-wrap, .service-row > div:not(.icon-wrap){align-self:center;}
.service-photo{width:100%; height:100%; min-height:150px; object-fit:cover; border-radius:8px;}
@media(max-width:1000px){.service-row{grid-template-columns:64px 1fr 220px; gap:22px;}}
@media(max-width:820px){
  .service-row{grid-template-columns:52px 1fr; gap:16px 18px; align-items:start;}
  .service-photo{grid-column:1 / 3; margin-top:6px; height:auto; min-height:0; aspect-ratio:16 / 9;}
}
@media(max-width:560px){
  .service-row{grid-template-columns:1fr; gap:12px;}
  .service-photo{grid-column:1 / 2;}
}
.service-row .icon-wrap{width:52px; height:52px; border-radius:10px; background:var(--bg-soft); border:1px solid var(--line); display:flex; align-items:center; justify-content:center;}
.service-row .icon-wrap svg{width:24px; height:24px; stroke:var(--navy);}
.service-row h3{margin-bottom:8px;}
.service-row p{color:var(--stone); font-size:0.95rem; max-width:64ch;}

/* ---------- FAQ page ---------- */
.faq-list{border-top:1px solid var(--line);}
.faq-item{border-bottom:1px solid var(--line);}
.faq-q{width:100%; text-align:left; background:none; border:none; padding:22px 0; display:flex; justify-content:space-between; align-items:center; gap:20px; font-weight:700; font-size:1rem; color:var(--ink);}
.faq-q .plus{font-size:1.3rem; color:var(--blue); flex-shrink:0; transition:transform .2s;}
.faq-item.open .plus{transform:rotate(45deg);}
.faq-a{max-height:0; overflow:hidden; transition:max-height .25s ease;}
.faq-a p{color:var(--stone); font-size:0.95rem; padding-bottom:22px; max-width:70ch;}

/* ---------- "Who we are" block (home page) ---------- */
.about-grid{display:grid; grid-template-columns:1fr 1fr; gap:56px; align-items:stretch;}
.about-photo{width:100%; height:100%; object-fit:cover; border-radius:10px;}
@media(max-width:820px){.about-grid{grid-template-columns:1fr; gap:32px;} .about-photo{height:auto; aspect-ratio:16 / 10;}}
.stat-row{display:flex; gap:36px; margin-top:32px; flex-wrap:wrap;}
@media(max-width:900px){
  .stat-row{display:grid; grid-template-columns:repeat(3,1fr); gap:14px;}
  .stat b{font-size:1.35rem;}
  .stat span{font-size:0.66rem;}
}
.stat b{font-size:1.8rem; font-weight:800; display:block; color:var(--navy);}
.stat span{font-size:0.72rem; color:var(--stone); text-transform:uppercase; letter-spacing:0.05em; font-weight:700;}

/* ---------- Gallery page ---------- */
.gallery-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:16px;}
@media(max-width:900px){.gallery-grid{grid-template-columns:repeat(2,1fr); gap:12px;}}
@media(max-width:520px){.gallery-grid{grid-template-columns:1fr; gap:12px;}}
.gallery-item{position:relative; display:block; align-self:start; border:none; padding:0; background:none; cursor:pointer; border-radius:10px; overflow:hidden; line-height:0;}
.gallery-item img{width:100%; height:auto; aspect-ratio:4 / 3; object-fit:cover; display:block; transition:transform .3s ease;}
.gallery-item:hover img{transform:scale(1.04);}

/* Lightbox */
.lightbox{position:fixed; inset:0; z-index:200; background:rgba(8,27,51,0.94); display:flex; align-items:center; justify-content:center; padding:24px;}
.lightbox[hidden]{display:none;}
.lightbox img{max-width:100%; max-height:calc(100vh - 80px); object-fit:contain; border-radius:6px;}
.lightbox-figure{margin:0; display:flex; align-items:center; justify-content:center; max-width:1100px;}
.lightbox-close, .lightbox-prev, .lightbox-next{position:absolute; background:rgba(255,255,255,0.12); border:1px solid rgba(255,255,255,0.28); color:#fff; width:48px; height:48px; border-radius:50%; font-size:1.4rem; line-height:1; display:flex; align-items:center; justify-content:center; transition:background .15s;}
.lightbox-close:hover, .lightbox-prev:hover, .lightbox-next:hover{background:rgba(255,255,255,0.26);}
.lightbox-close{top:20px; right:20px;}
.lightbox-prev{left:20px; top:50%; transform:translateY(-50%);}
.lightbox-next{right:20px; top:50%; transform:translateY(-50%);}
@media(max-width:620px){
  .lightbox{padding:16px;}
  .lightbox-prev{left:8px;} .lightbox-next{right:8px;}
  .lightbox-close{top:12px; right:12px;}
  .lightbox img{max-height:calc(100vh - 120px);}
}

/* ---------- Coverage page ---------- */
.region-list{display:flex; flex-direction:column; border-top:1px solid var(--line);}
.region{padding:26px 0; border-bottom:1px solid var(--line); display:grid; grid-template-columns:230px 1fr; gap:28px; align-items:start;}
@media(max-width:760px){.region{grid-template-columns:1fr; gap:8px; padding:22px 0;}}
.region h3{margin:0;}
.region .geology{display:block; font-size:0.8rem; font-weight:600; color:var(--blue); margin-top:5px; letter-spacing:0.01em;}
.region p{color:var(--stone); font-size:0.95rem; margin:0; max-width:68ch;}

.county-cols{columns:4 190px; column-gap:28px; margin-top:6px;}
.county-cols ul{list-style:none; margin:0; padding:0;}
.county-cols li{font-size:0.92rem; color:var(--stone); padding:5px 0; break-inside:avoid;}
.county-group{margin-bottom:26px;}
.county-group h3{margin-bottom:10px;}
.county-count{font-weight:600; color:var(--stone); font-size:0.85rem;}

.caveat{background:var(--bg-soft); border:1px solid var(--line); border-left:3px solid var(--blue); border-radius:0 8px 8px 0; padding:20px 24px; margin-top:32px;}
.caveat b{display:block; margin-bottom:6px;}
.caveat p{color:var(--stone); font-size:0.95rem; margin:0; max-width:70ch;}

/* ---------- Contact page ---------- */
.contact-grid{display:grid; grid-template-columns:1fr 1fr; gap:60px;}
@media(max-width:820px){.contact-grid{grid-template-columns:1fr;}}
.contact-photos{display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-bottom:16px;}
.contact-photo{width:100%; aspect-ratio:1 / 1; object-fit:cover; border-radius:8px;}
@media(max-width:820px){.contact-photos{gap:10px; margin-bottom:16px;}}
.contact-info-item{padding:11px 0; border-top:1px solid var(--line); display:flex; gap:16px; align-items:flex-start;}
.contact-info-item:last-of-type{border-bottom:1px solid var(--line);}
.contact-info-item .icon-wrap{width:40px; height:40px; border-radius:8px; background:var(--navy); display:flex; align-items:center; justify-content:center; flex-shrink:0;}
.contact-info-item .icon-wrap svg{width:18px; height:18px; stroke:#fff;}
.contact-info-item b{display:block; font-size:0.95rem; margin-bottom:3px;}
.contact-info-item span{color:var(--stone); font-size:0.9rem;}
.email-instructions{list-style:none; margin:20px 0 28px; display:flex; flex-direction:column; gap:9px;}
.email-instructions li{color:var(--stone); font-size:0.95rem; position:relative; padding-left:16px;}
.email-instructions li::before{content:''; position:absolute; left:0; top:0.62em; width:6px; height:6px; border-radius:50%; background:var(--blue);}
.email-instructions b{color:var(--ink);}
.form-note{font-size:0.82rem; color:var(--stone); margin-top:12px;}

/* Qualifier on the next-day turnaround claim */
.tc-note{display:block; font-size:0.82em; font-weight:500; opacity:0.78; letter-spacing:0; text-transform:none; margin-top:4px;}
