/* =========================
   GLOBAL TOKENS
   ========================= */
:root{
  --bg:#ffffff;
  --bg2:#f6f7fb;
  --text:#0f172a;
  --muted:#55627a;
  --border:#e7eaf2;
  --shadow: 0 18px 45px rgba(15, 23, 42, .08);
  --radius: 18px;

  /* Primary Gateway Cleanouts Brand */
  --brand:#C8102E;
  --brand-dark:#A50F26;

  /* Blues (refined) */
  --blue-main:#1E5AA8;
  --blue-soft:#A9CCF6;
  --blue-soft-bg:#EEF5FF;
  --blue-soft-border:#C9DDFC;

  /* compatibility aliases used throughout your CSS */
  --brand2: var(--blue-soft-bg);
  --brand2-light: #ffffff;

  --ring: rgba(30,90,168,.25);
  --max: 1120px;
  --pad: 22px;
  --font: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial;

  --topbar-h: 76px; /* fixed header height */
}

*{box-sizing:border-box}
html,body{height:100%}
html{
  scroll-behavior: smooth;
  scroll-padding-top: 90px; /* prevents sticky header from covering section titles */
}
body{
  margin:0;
  padding-top: var(--topbar-h);
  font-family:var(--font);
  color:var(--text);
  background: var(--bg);
  line-height:1.55;
}
a{color:inherit}
.wrap{max-width:var(--max); margin:0 auto; padding:0 var(--pad)}

/* =========================
   TOPBAR
   ========================= */
.topbar{
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 9999;
  background: rgba(255,255,255,.95);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border-bottom: 1px solid rgba(0,0,0,.06);
}

.topbar-inner{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:14px 0;
  min-height: var(--topbar-h);
}

/* Brand + logo badge */
.brand{
  display:flex;
  align-items:center;
  gap:12px;
  text-decoration:none;
}

.mark{
  width:44px;
  height:44px;
  border-radius:12px;
  overflow:hidden;
  display:grid;
  place-items:center;
  flex-shrink:0;
  background: linear-gradient(135deg, var(--brand2), #ffffff);
}

.brand-logo{
  width:100%;
  height:100%;
  object-fit: cover; /* use 'contain' if you don't want cropping */
  display:block;
}

.brand-title{font-weight:900; letter-spacing:-.2px}
.brand-sub{font-size:12px; color:var(--muted); font-weight:700}

/* Desktop nav */
.nav{
  display:flex;
  gap:18px;
  align-items:center;
  font-weight:700;
}
.nav a{
  text-decoration:none;
  color: var(--muted);
}
.nav a:hover{color:var(--text); text-decoration:underline}

.actions{
  display:flex;
  gap:10px;
  align-items:center;
}

/* Buttons */
.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:10px 14px;
  border-radius:14px;
  font-weight:900;
  text-decoration:none;
  border:1px solid var(--border);
  white-space:nowrap;
  transition: transform .12s ease, box-shadow .12s ease, background .12s ease, border .12s ease;
}
.btn.solid{
  background: linear-gradient(135deg, var(--brand), var(--brand-dark));
  color:#fff;
  border-color: transparent;
}
.btn.solid:hover{
  transform: translateY(-1px);
  box-shadow: var(--shadow);
  filter: brightness(.97);
}
.btn.ghost{
  background:#fff;
  color: var(--text);
  border-color: var(--border);
}
.btn.ghost:hover{
  border-color: var(--brand2);
  background: var(--brand2-light);
}
.btn:hover{
  transform: translateY(-1px);
  box-shadow: var(--shadow);
  filter: brightness(.98);
}

/* =========================
   HERO
   ========================= */
.hero{
  padding:44px 0 26px;
 background: linear-gradient(
    135deg,
    #0b1324 0%,
    #6078b3 45%,
    #fff 100%
  );
  color: #ffffff;
}

.hero::after {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(
    circle at top right,
    rgba(255,255,255,0.08),
    transparent 60%
  );
  pointer-events: none;
}

.hero-grid{
  display:grid;
  grid-template-columns: 1.1fr .9fr;
  gap:18px;
  align-items:start;
}
.hero-copy .kicker{
  color: var(--muted);
  font-weight:900;
  margin:0 0 10px;
}
.hero-copy h1{
  font-size: clamp(32px, 4vw, 52px);
  line-height:1.06;
  margin:0 0 12px;
  letter-spacing:-1px;
}
.sub{
  color: var(--muted);
  font-size: 17px;
  margin:0 0 18px;
  max-width: 62ch;
}
.hero-cta{display:flex; gap:10px; flex-wrap:wrap}

.trust-row{
  display:flex; flex-wrap:wrap; gap:10px;
  margin-top:16px;
}
.trust{
  display:flex; align-items:center; gap:8px;
  padding:8px 10px;
  background:#fff;
  border:1px solid var(--border);
  border-radius: 999px;
  color: var(--muted);
  font-weight:800;
  font-size:10px;
  line-height:1.2;
}
.icon{
  width:18px; height:18px;
  display:inline-flex; align-items:center; justify-content:center;
  border-radius: 999px;
  background: var(--blue-soft-bg);
  color: var(--brand);
}

/* =========================
   CARDS + FORMS
   ========================= */
.card{
  background:#fff;
  border:1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
}
.card-head{
  display:flex; align-items:flex-start; justify-content:space-between;
  gap:12px;
  padding:18px 18px 0;
}
.card-title{margin:0; font-size:18px}
.card-sub{margin:6px 0 0; color:var(--muted); font-weight:500; font-size: 10px;}

.chip{
  padding:8px 10px;
  border-radius: 999px;
  border:1px solid #dfe6ff;
  background: var(--brand2);
  color: var(--text);
  font-weight:900;
  font-size:12px;
  white-space:nowrap;
}

.form{padding:14px 18px 18px}
.grid2{display:grid; grid-template-columns:1fr 1fr; gap:10px}

label{
  display:block;
  font-size:12px;
  font-weight:900;
  color: var(--muted);
  margin:0 0 6px;
}
input, select, textarea{
  width:100%;
  padding:12px 12px;
  border-radius: 14px;
  border:1px solid var(--border);
  background: #fff;
  outline:none;
  font-weight:700;
}
textarea{min-height:92px; resize:vertical}
input:focus, select:focus, textarea:focus{
  border-color: var(--brand2);
  box-shadow: 0 0 0 4px var(--ring);
}
.mt12{margin-top:12px}
.form-actions{display:flex; gap:10px; flex-wrap:wrap; margin-top:12px}
.fine{margin:10px 0 0; color:var(--muted); font-size:12px; font-weight:700}

/* =========================
   SECTIONS
   ========================= */
.section{padding:34px 0}
.section.soft{
  background: var(--bg2);
  border-top:1px solid var(--border);
  border-bottom:1px solid var(--border);
}
.section-head{margin-bottom:14px}
.section-head h2{margin:0 0 8px; letter-spacing:-.4px}
.section-head p{margin:0; color:var(--muted); font-weight:700; max-width: 70ch}

/* Service cards */
.cards{
  display:grid;
  grid-template-columns: repeat(3, 1fr);
  gap:12px;
}
.mini{
  padding:16px;
  border:1px solid var(--border);
  border-radius: var(--radius);
  background:#fff;
}
.mini-icon{font-size:22px; margin-bottom:10px}
.mini h3{margin:0 0 6px}
.mini p{margin:0; color:var(--muted); font-weight:700}

/* Results layout */
.results-grid{
  display:grid;
  grid-template-columns: 1fr 1fr;
  gap:12px;
}
.slider-card{padding:18px}
.slider-head h3{margin:0 0 4px}
.muted{color:var(--muted); font-weight:700}

/* Before/After slider */
.ba{
  position:relative;
  height: 340px;
  border-radius: 16px;
  overflow:hidden;
  border:1px solid var(--border);
  margin-top:12px;
  user-select:none;
  touch-action:none;
  background:#f3f4f6;
}
.ba-img{width:100%; height:100%; object-fit:cover; display:block}
.ba-before{
  position:absolute;
  inset:0;
  width:50%;
  overflow:hidden;
  border-right: 1px solid rgba(15,23,42,.15);
}
.ba-handle{
  position:absolute;
  top:0;
  left:50%;
  transform: translateX(-50%);
  height:100%;
  width:44px;
  cursor: ew-resize;
  display:flex;
  align-items:center;
  justify-content:center;
}
.ba-handle::before{
  content:"";
  width:4px;
  height:100%;
  border-radius: 999px;
  background: rgba(15,23,42,.35);
}
.ba-handle::after{
  content:"↔";
  position:absolute;
  width:34px;
  height:34px;
  border-radius: 999px;
  background:#fff;
  border:1px solid var(--border);
  box-shadow: var(--shadow);
  display:flex;
  align-items:center;
  justify-content:center;
  color: var(--muted);
}

.slider-foot{
  display:flex;
  gap:10px;
  flex-wrap:wrap;
  margin-top:12px;
  color: var(--muted);
  font-weight:800;
}
.slider-foot b{color: var(--text)}

/* Testimonials */
.testis{padding:18px}
.testi{
  padding:14px 0;
  border-bottom:1px solid var(--border);
}
.testi:last-child{border-bottom:none}
.quote{margin:0 0 10px; font-weight:800; color: #0b1222}
.who{display:flex; gap:10px; align-items:center}
.who b{font-weight:1000}
.review-cta{
  margin:0 18px 18px;
  padding:14px;
  border-radius: 16px;
  border:1px solid var(--border);
  background: #fff;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
  flex-wrap:wrap;
}

/* Pricing */
.pricing{
  display:grid;
  grid-template-columns: repeat(3, 1fr);
  gap:12px;
}
.price{padding:18px; position:relative}
.price h3{margin:0 0 8px}
.amt{font-size:34px; font-weight:1000; letter-spacing:-.6px; margin:6px 0 2px}
.price ul{margin:10px 0 0; padding-left:18px; color:var(--muted); font-weight:800}
.featured{
  border-color: rgba(30,90,168,.35);
  box-shadow: 0 22px 55px rgba(30,90,168,.18);
}
.featured .chip{ position:absolute; right:14px; top:14px }

/* Footer CTA + Footer */
.footer-cta{
  padding:18px;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
  flex-wrap:wrap;
}
.tight{margin:0 0 6px}
.footer-cta-actions{display:flex; gap:10px; flex-wrap:wrap}

.footer{padding:18px 0 28px}
.footer-inner{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
  flex-wrap:wrap;
  color: var(--muted);
  font-weight:800;
}
.footer-links{display:flex; gap:12px; flex-wrap:wrap}
.footer-links a{text-decoration:none}
.footer-links a:hover{text-decoration:underline}

/* Pills */
.reply-pill,
.chip,
.badge,
.pill{
  background: var(--blue-soft-bg);
  color: var(--text);
  border: 1px solid var(--blue-soft-border);
  font-weight: 900;
}

/* =========================
   NAV DROPDOWN + MOBILE NAV
   ========================= */
.nav-dd{ position: relative; display: inline-flex; align-items: center; }

.nav-dd-btn{
  border: 0;
  background: transparent;
  font: inherit;
  font-weight: 800;
  color: var(--muted);
  padding: 0;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.nav-dd-btn:hover{ color: var(--text); text-decoration: underline; }
.caret{ font-size: 12px; opacity: .85; }

.nav-dd-menu{
  position: absolute;
  top: calc(100% + 10px);
  left: 0;
  min-width: 280px;
  background: rgba(255,255,255,.98);
  border: 1px solid var(--border);
  border-radius: 16px;
  box-shadow: var(--shadow);
  padding: 8px;
  display: none;
  z-index: 99999;
}
.nav-dd-menu a{
  display: block;
  padding: 10px 10px;
  border-radius: 12px;
  font-weight: 800;
  color: var(--text);
  text-decoration: none;
}
.nav-dd-menu a:hover{
  background: var(--blue-soft-bg);
  border: 1px solid var(--blue-soft-border);
}
.nav-dd.open .nav-dd-menu{ display: block; }

/* Mobile menu button */
.nav-toggle{
  display: none;
  border: 1px solid var(--border);
  background: #fff;
  border-radius: 14px;
  padding: 10px 12px;
  cursor: pointer;
  box-shadow: none;
}
.burger{
  width: 22px;
  height: 14px;
  position: relative;
  display: inline-block;
}
.burger::before,
.burger::after{
  content:"";
  position:absolute;
  left:0; right:0;
  height:2px;
  background: var(--text);
  border-radius: 2px;
}
.burger::before{ top:0; }
.burger::after{ bottom:0; }

.sr-only{
  position:absolute;
  width:1px; height:1px;
  padding:0; margin:-1px;
  overflow:hidden; clip:rect(0,0,0,0);
  border:0;
}

/* Mobile panel */
.nav-mobile{
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  background: rgba(255,255,255,.98);
  border-bottom: 1px solid var(--border);
  box-shadow: var(--shadow);
  padding: 12px var(--pad);
}
.nav-mobile a{
  display: block;
  padding: 12px 10px;
  border-radius: 14px;
  font-weight: 900;
  text-decoration: none;
  color: var(--text);
}
.nav-mobile a:hover{
  background: var(--blue-soft-bg);
  border: 1px solid var(--blue-soft-border);
}
.nav-mobile-sub{
  border: 1px solid var(--border);
  border-radius: 16px;
  padding: 6px;
  margin: 4px 0 10px;
  background: #fff;
}
.nav-mobile-sub a{
  font-weight: 800;
  color: var(--muted);
  padding: 10px 10px;
}

/* Responsive */
@media (max-width: 980px){
  .hero-grid{grid-template-columns:1fr}
  .cards{grid-template-columns:1fr}
  .results-grid{grid-template-columns:1fr}
  .pricing{grid-template-columns:1fr}
  .grid2{grid-template-columns:1fr}
  .nav{display:none}
  .nav-toggle{ display: inline-flex; align-items:center; justify-content:center; }
  .ba{height: 300px}
}

@media (max-width: 640px){
  .grid2{ grid-template-columns: 1fr; }
}

/* Keep brand left, everything else right */
.topbar-inner{
  display:flex;
  align-items:center;
  gap:12px;
}

/* Push nav/actions/toggle to the right as a cluster */
.nav{ margin-left:auto; }
.actions{ margin-left:12px; }
.nav-toggle{ margin-left:10px; }

/* Services dropdown (safe add-on) */
.nav-dd{
  position: relative;
  display: inline-flex;
  align-items: center;
}

.nav-dd-trigger{
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.caret{
  font-size: 12px;
  opacity: .8;
}

.nav-dd-menu{
  position: absolute;
  top: calc(100% + 10px);
  left: 0;
  min-width: 240px;
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 14px;
  box-shadow: var(--shadow);
  padding: 8px;
  display: none;
  z-index: 99999;
}

.nav-dd-menu a{
  display: block;
  padding: 10px 10px;
  border-radius: 12px;
  text-decoration: none;
  color: var(--text);
  font-weight: 800;
}

.nav-dd-menu a:hover{
  background: var(--bg2);
}

/* Open on hover (desktop) */
@media (min-width: 981px){
  .nav-dd:hover .nav-dd-menu{ display:block; }
}

/* =========================
   MAKE QUOTE FORM SHORTER (DESKTOP)
   Goal: reduce vertical height drastically by reflowing fields
========================= */
@media (min-width: 1024px) {

  /* Keep the card width normal again */
  #quote.card {
    max-width: 560px !important;  /* wider so we can make rows fewer */
    padding: 16px 18px !important;
  }

  /* Tighten header area */
  #quote .card-head {
    margin-bottom: 8px !important;
    align-items: flex-start;
  }
  #quote .card-title { margin: 0 0 4px 0 !important; }
  #quote .card-sub { margin: 0 !important; font-size: 10px;}

  /* Reduce spacing everywhere */
  #quote .mt12 { margin-top: 8px !important; }
  #quote .grid2 { gap: 10px !important; }

  /* Make inputs shorter */
  #quote input,
  #quote select {
    height: 38px !important;
    padding: 8px 10px !important;
  }

  /* Make textarea MUCH shorter */
  #quote textarea {
    min-height: 56px !important;
    padding: 8px 10px !important;
  }

  /* Make labels a bit tighter */
  #quote label {
    margin-bottom: 3px !important;
    font-size: 12px !important;
  }

  /* Reduce hint spacing */
  #quote .form-hint {
    margin-top: 3px !important;
    font-size: 11px !important;
  }

  /* Buttons smaller + closer */
  #quote .form-actions {
    margin-top: 10px !important;
    gap: 10px !important;
  }
  #quote .form-actions .btn {
    padding: 10px 12px !important;
  }

  /* OPTIONAL: hide the tip line on desktop to save height */
  #quote .fine {
    display: none !important;
  }

  /* -------------------------------------------------------
     BIG WIN: Reflow the single full-width sections into 2-col
     We target the existing wrappers using :has(label[for=...])
     Works in modern browsers (Chrome/Safari/Edge).
  -------------------------------------------------------- */

  /* Turn the "Service address" full-width row into 2 columns with "Service" */
  #quote form.form {
    display: grid !important;
    grid-template-columns: 1fr 1fr;
    gap: 10px !important;
  }

  /* Make the first grid2 (name/phone) span full width but keep 2 columns */
  #quote form.form > .grid2:first-of-type {
    grid-column: 1 / -1 !important;
  }

  /* Service address (mt12) goes left column */
  #quote form.form > .mt12:has(label[for="address"]) {
    grid-column: 1 / 2 !important;
    margin-top: 0 !important;
  }

  /* Service (mt12) goes right column */
  #quote form.form > .mt12:has(label[for="service"]) {
    grid-column: 2 / 3 !important;
    margin-top: 0 !important;
  }

  /* Date+Time grid2 spans full width */
  #quote form.form > .grid2:has(label[for="serviceDate"]) {
    grid-column: 1 / -1 !important;
    margin-top: 0 !important;
  }

  /* Textarea spans full width */
  #quote form.form > .mt12:has(label[for="details"]) {
    grid-column: 1 / -1 !important;
    margin-top: 0 !important;
  }

  /* Buttons row spans full width */
  #quote form.form > .form-actions {
    grid-column: 1 / -1 !important;
  }

  /* Tip line already hidden; if you keep it, force full width */
  #quote form.form > .fine {
    grid-column: 1 / -1 !important;
    margin-top: 6px !important;
  }
}
#quote.card,
#quote.card * {
  color: #0f172a !important; /* dark slate */
}
/* =========================
   NAV DROPDOWN: FIX HOVER DISAPPEAR
========================= */

/* Make the wrapper the hover target */
.nav-dd {
  position: relative;
}

/* Hide by default */
.nav-dd-menu {
  display: none;
  position: absolute;
  top: calc(100% + 8px);   /* space below trigger */
  left: 0;
  z-index: 9999;
}

/* Show when hovering anywhere over wrapper OR menu */
.nav-dd:hover .nav-dd-menu,
.nav-dd:focus-within .nav-dd-menu {
  display: block;
}

/* Create an invisible hover bridge so the cursor doesn't "fall off" */
.nav-dd::after {
  content: "";
  position: absolute;
  left: 0;
  top: 100%;
  width: 100%;
  height: 12px;          /* the bridge height */
  background: transparent;
}

/* Optional: make the menu sit closer (reduces gap risk) */
.nav-dd-menu {
  top: 100%;
  margin-top: 10px;       /* adjust to taste */
}

/* Keep menu clickable */
.nav-dd-menu a {
  display: block;
}
