/* Good Maid Cleaning — shared stylesheet for the static pages (city, service, blog).
   Generated Oct 15, 2026 from the <style> block in index.html + the static-page additions at the bottom. */
:root{
    --ink:#10243D;
    --forest:#2FC1E8;
    --forest-dark:#0E7FA3;
    --sage:#2FC1E8;
    --sage-pale:#CDEFF7;
    --cream:#F0FBFE;
    --butter:#78D7F0;
    --star:#FFB800;
    --white:#FFFFFF;
    --line: rgba(13,38,32,0.12);
    --maxw: 1160px;
  }
  *{box-sizing:border-box;}
  .spa-view{ animation: spa-view-in .22s ease; }
  @keyframes spa-view-in{ from{ opacity:0; transform:translateY(8px);} to{ opacity:1; transform:translateY(0);} }
  @media (prefers-reduced-motion: reduce){ .spa-view{ animation:none; } }
  /* Smooth scrolling only turns on after the page has fully loaded (see
     'smooth-ready', added on window.load in app.js) so the browser's own
     automatic jump to a #hash on the very first load isn't animated —
     matters if someone opens the app on a deep-linked URL. Same-view
     anchor clicks happen long after load and are unaffected. Navigating
     between views never reloads the page at all — see the mountNewView()
     hash-scroll in app.js for how that jump is kept from feeling clunky. */
  html{scroll-behavior:auto;}
  html.smooth-ready{scroll-behavior:smooth;}

  /* Step-transition classes (see showView() in app.js). Hand-rolled with
     plain CSS transitions instead of the View Transitions API, which is
     unsupported or inconsistent on iOS Safari and was the source of a
     transition that looked smooth on desktop but janky/abrupt on iPhone.
     -webkit- prefixes aren't needed for opacity/transform transitions —
     unprefixed support has shipped in iOS Safari since iOS 9 — but the
     properties are kept minimal (opacity + transform only, both compositor-
     friendly) specifically so the animation stays smooth on slower mobile
     GPUs and never triggers layout during the transition itself. */
  .spa-view.view-exiting{
    opacity:0; transform:translateY(-6px);
    transition:opacity .14s ease, transform .14s ease;
    -webkit-transition:opacity .14s ease, transform .14s ease;
  }
  .spa-view.view-entering{ opacity:0; transform:translateY(10px); }
  .spa-view.view-enter-active{
    opacity:1; transform:translateY(0);
    transition:opacity .2s ease, transform .2s ease;
    -webkit-transition:opacity .2s ease, transform .2s ease;
  }
  @media (prefers-reduced-motion: reduce){
    .spa-view.view-exiting, .spa-view.view-entering, .spa-view.view-enter-active{
      transition:none; opacity:1; transform:none;
    }
  }
  body{
    margin:0;
    background:var(--cream);
    color:var(--ink);
    font-family:'Work Sans', -apple-system, sans-serif;
    font-size:16px;
    line-height:1.55;
    -webkit-font-smoothing:antialiased;
    /* Fraunces is a variable font with a wide optical-size (opsz) axis —
       left on "auto" (the browser default), its letterforms subtly reshape
       themselves at every different font-size used across the site (15px
       area-card names, 20px legal headings, 52px price display, etc.),
       which reads as an inconsistent, slightly mismatched typeface from
       section to section. Pinning it off here (inherited by everything)
       locks every Fraunces instance to one consistent letter shape. */
    font-optical-sizing:none;
  }
  h1,h2,h3,h4{
    font-family:'Fraunces', Georgia, serif;
    font-weight:600;
    line-height:1.12;
    margin:0;
    color:var(--forest-dark);
  }
  p{margin:0;}
  a{color:inherit;text-decoration:none;}
  img{max-width:100%;display:block;}
  button{font-family:inherit;}
  .wrap{max-width:var(--maxw); margin:0 auto; padding:0 28px;}
  .btn{
    display:inline-flex;
    align-items:center;
    gap:8px;
    padding:14px 26px;
    border-radius:100px;
    font-weight:600;
    font-size:15px;
    border:1px solid transparent;
    cursor:pointer;
    transition:transform .15s ease, box-shadow .15s ease, background .15s ease;
  }
  .btn-primary{background:var(--forest); color:var(--ink); font-weight:700;}
  .btn-primary:hover{background:#45C8EA; background:color-mix(in srgb, var(--forest) 70%, var(--butter)); transform:translateY(-1px); box-shadow:0 8px 20px rgba(120,215,240,0.45);}
  .btn-primary:active{background:#54CCEC; background:color-mix(in srgb, var(--forest) 50%, var(--butter));}
  .btn-ghost{background:transparent; color:var(--forest-dark); border-color:var(--line);}
  .btn-ghost:hover{background:var(--sage-pale);}
  .btn-light{background:var(--white); color:var(--forest-dark);}
  .btn-light:hover{transform:translateY(-1px); box-shadow:0 8px 20px rgba(0,0,0,0.12);}
  .btn-sm{padding:10px 18px; font-size:13.5px;}
  /* PHASE 3 polish: clear keyboard focus + a pressed state on every button/link. */
  .btn:active{transform:translateY(0); box-shadow:none;}
  .btn:focus-visible, a:focus-visible, button:focus-visible, summary:focus-visible, select:focus-visible, input:focus-visible, textarea:focus-visible{
    outline:3px solid rgba(14,127,163,0.45); outline-offset:3px; border-radius:inherit;
  }
  details summary{border-radius:8px;}
  @media (prefers-reduced-motion: reduce){ .btn, .btn:hover, .service-card:hover, .area-card:hover{transform:none !important; transition:none;} }
  /* PHASE 3 polish: a bit more breathing room for text on small phones. */
  @media (max-width:480px){
    .wrap{padding:0 20px;}
    .section-head{margin-bottom:36px;}
    .btn{padding:14px 22px;}
  }

  .stars{color:var(--star); letter-spacing:2px; font-size:14px; white-space:nowrap;}

  /* ---------- NAV ---------- */
  header{
    position:sticky; top:0; z-index:50;
    background:rgba(247,251,253,0.92);
    backdrop-filter:blur(8px);
    -webkit-backdrop-filter:blur(8px);
    border-bottom:1px solid var(--line);
    transition:background .2s ease, box-shadow .2s ease, border-color .2s ease;
  }
  /* PHASE 3 polish: once the page scrolls, the sticky bar gets a slightly
     glassier, lifted look so it separates cleanly from the content under it. */
  header.is-scrolled{
    background:rgba(247,251,253,0.82);
    backdrop-filter:saturate(160%) blur(14px);
    -webkit-backdrop-filter:saturate(160%) blur(14px);
    border-bottom-color:transparent;
    box-shadow:0 10px 28px -20px rgba(13,38,32,0.45);
  }
  nav{
    display:flex; align-items:center; justify-content:space-between;
    padding:16px 0;
  }
  .logo{
    display:flex; align-items:center; gap:13px;
  }
  nav .logo{min-height:60px;}
  .logo-img{display:block; height:46px; width:auto; max-width:100%;}
  .foot-brand .logo-img{height:52px;}
  .nav-links{display:flex; align-items:center; gap:24px;}
  .nav-links a{font-size:14.5px; font-weight:500; color:var(--ink); opacity:0.85; transition:opacity .15s ease;}
  .nav-links a:hover{opacity:1;}
  .nav-dropdown{position:relative; padding-bottom:14px; margin-bottom:-14px; display:flex; align-items:center; gap:2px;}
  .nav-dropdown-toggle{
    background:none; border:none; font:inherit; font-size:14.5px; font-weight:500; color:var(--ink);
    opacity:0.85; cursor:pointer; display:flex; align-items:center; gap:5px; padding:0;
  }
  .nav-dropdown-toggle:hover{opacity:1;}
  /* The caret is its own button, separate from the label link above — on
     touch devices there's no hover to reveal the flyout, so the caret is
     what actually opens/closes the submenu of individual pages (tapping the
     label itself still navigates straight to the hub page, on any device). */
  .nav-dropdown-caret{
    background:none; border:none; cursor:pointer; padding:4px; margin:-4px 0 -4px -2px;
    display:flex; align-items:center; color:var(--ink); opacity:0.7;
  }
  .nav-dropdown-caret:hover{opacity:1;}
  .nav-dropdown-caret .caret{font-size:10px; margin-top:1px; transition:transform .15s ease; display:block;}
  .nav-dropdown.open .nav-dropdown-caret .caret{transform:rotate(180deg);}
  .nav-dropdown-panel{
    position:absolute; top:100%; left:50%; margin-top:14px; transform:translateX(-50%) translateY(6px);
    background:var(--white); border:1px solid var(--line); border-radius:14px;
    box-shadow:0 20px 40px -16px rgba(13,38,32,0.25);
    padding:10px; display:grid; grid-template-columns:1fr 1fr; gap:2px; width:440px;
    opacity:0; visibility:hidden; transition:opacity .15s ease, transform .15s ease, visibility .15s;
    z-index:60;
  }
  .nav-dropdown:hover .nav-dropdown-panel, .nav-dropdown.open .nav-dropdown-panel{
    opacity:1; visibility:visible; transform:translateX(-50%) translateY(0);
  }
  .nav-dropdown-panel a{display:block; padding:10px 12px; border-radius:8px; font-size:14px; font-weight:500; color:var(--ink); opacity:1; transition:background .15s ease, color .15s ease;}
  .nav-dropdown-panel a:hover{background:var(--sage-pale); color:var(--forest-dark);}
  .nav-right{display:flex; align-items:center; gap:16px;}
  .nav-phone{font-size:14.5px; font-weight:600;}
  .promo-bar{background:var(--forest-dark); text-align:center; padding:9px 16px;}
  .promo-bar a{display:inline-block; font-size:13.5px; font-weight:600; color:#fff; text-decoration:none; line-height:1.4;}
  .promo-bar a:hover{text-decoration:underline;}
  .promo-bar b{font-weight:800;}
  @media (max-width:480px){ .promo-bar{padding:8px 12px;} .promo-bar a{font-size:12.5px;} }
  .tel-link{
    display:inline-flex; align-items:center; padding:14px 4px; font-size:15px; font-weight:600;
    color:var(--forest-dark); text-decoration:underline; text-decoration-color:var(--line); text-underline-offset:4px;
    transition:text-decoration-color .15s ease;
  }
  .tel-link:hover{text-decoration-color:var(--forest-dark);}
  .nav-toggle{display:none; background:none; border:none; cursor:pointer; padding:4px;}
  .nav-toggle span{display:block; width:22px; height:2px; background:var(--ink); margin:5px 0;}

  /* ---------- HERO + INSTANT PRICING ---------- */
  /* Apple-style hero: no boxed card, no competing badges — one confident
     headline and one action, sitting directly on the page with real
     breathing room, paired with a single large photo instead of a card. */
  .hero{padding:64px 0 84px; overflow:visible;}
  .hero-grid{
    display:grid; grid-template-columns:1fr 1fr; gap:72px; align-items:center;
  }
  .eyebrow-plain{font-size:13.5px; color:var(--forest-dark); font-weight:600; letter-spacing:0.02em; margin-bottom:14px;}

  .hero-main{
    display:flex; flex-direction:column; justify-content:center;
    text-align:left;
    min-width:0; /* grid items default to min-width:auto, which lets unshrinkable
      content (long headline/button text) force this card wider than its
      column and overflow the viewport on narrow phones — this lets it
      actually shrink to its grid track like everything else already does. */
  }
  .hero h1{
    font-size:clamp(40px, 4.6vw, 60px); letter-spacing:-0.02em; line-height:1.04;
  }
  .hero-sub{margin-top:22px; font-size:18px; line-height:1.5; color:#4A726B; max-width:440px;}
  .hero-cta{margin-top:34px; display:flex; align-items:center; gap:22px; flex-wrap:wrap;}
  .hero-cta .tel-link{font-size:15px;}
  .hero-note{margin-top:14px; font-size:12.5px; color:#4D6863;}

  .hero-rating{display:flex; align-items:center; gap:8px; margin-top:44px; flex-wrap:wrap;}
  .hero-rating-photo{width:34px; height:34px; border-radius:50%; object-fit:cover; flex-shrink:0; box-shadow:0 0 0 2px var(--white), 0 0 0 3.5px var(--sage);}
  .hero-rating b{font-family:'Fraunces',serif; font-size:14px; color:var(--forest-dark);}
  .hero-rating span{font-size:12px; color:#4A726B;}
  .hero-rating .stars{color:var(--star); font-size:13px;}

  /* A quiet spec strip, not a row of shout-y stat cards — small caps
     labels under restrained numerals, divided by hairlines like a
     product spec sheet rather than boxed callouts. */
  .hero-stats{
    margin-top:22px; padding-top:22px; border-top:1px solid var(--line);
    display:flex; gap:28px; flex-wrap:wrap;
  }
  .hero-stat b{display:block; font-family:'Fraunces',serif; font-weight:600; font-size:19px; color:var(--forest-dark);}
  .hero-stat span{font-size:11.5px; color:#4D6863; letter-spacing:0.01em;}

  /* One large photo fills the whole right column — no collage grid, no
     competing tiles, so it reads as a single deliberate image rather than
     a wall of stock photography. */
  .hero-media{display:flex; flex-direction:column; min-width:0;}
  .hero-main-photo{
    position:relative;
    border-radius:24px; overflow:hidden;
    flex:1; min-height:340px; max-height:520px;
    box-shadow:0 30px 70px -30px rgba(13,38,32,0.4);
  }
  .hero-main-photo img{width:100%; height:100%; object-fit:cover; display:block;}

  /* Trust strip: a fixed-height band, not something stretched to fill
     whatever leftover space the sidebar happens to leave — that's what
     produced the oversized, awkward-looking box. */
  .hero-trust-strip{
    margin-top:18px;
    display:flex; align-items:center; gap:18px;
    background:var(--sage-pale); border-radius:16px; padding:18px 22px;
  }
  .hero-trust-item{display:flex; align-items:center; gap:11px; flex:1; min-width:0;}
  .hero-trust-item .ico{
    width:34px; height:34px; border-radius:10px; background:var(--forest-dark);
    display:flex; align-items:center; justify-content:center; flex-shrink:0;
  }
  .hero-trust-item .ico svg{width:17px; height:17px;}
  .hero-trust-item .txt{line-height:1.28; min-width:0;}
  .hero-trust-item b{display:block; font-size:12.5px; color:var(--forest-dark); font-weight:700;}
  .hero-trust-item span{font-size:11px; color:#5F7871;}
  .hero-trust-divider{width:1px; align-self:stretch; background:var(--line); flex-shrink:0;}

  /* Photo collage: fills whatever's left below the trust strip. Several
     photos in a mosaic tolerate any leftover height gracefully (each tile
     just crops with object-fit:cover) — unlike a single photo or a thin
     icon strip, which looked broken once stretched past a small range. */
  .hero-photo-collage{
    margin-top:14px; flex:1; min-height:160px; max-height:420px;
    display:grid; grid-template-columns:1.3fr 1fr; grid-template-rows:1fr 1fr; gap:10px;
  }
  .hero-photo-collage .tile-big{grid-row:1 / span 2; border-radius:16px; overflow:hidden; box-shadow:0 12px 26px -18px rgba(13,38,32,0.4);}
  .hero-photo-collage .tile{border-radius:14px; overflow:hidden; box-shadow:0 12px 26px -18px rgba(13,38,32,0.4);}
  .hero-photo-collage img{width:100%; height:100%; object-fit:cover; display:block;}

  /* Right-hand column of the horizontal hero band: the main photo, trust
     strip, and collage, stacked in a flex column so they stretch to match
     the headline card's height exactly the way they used to inside it. */
  .hero-media{display:flex; flex-direction:column; min-width:0;}

  /* A noticeably bigger, higher-contrast "Get My Instant Price" button —
     it's the one thing on the page every visitor should be pulled toward. */
  .hero-cta .btn-primary{
    padding:19px 38px; font-size:16.5px;
    box-shadow:0 16px 32px -14px rgba(14,127,163,0.5);
  }
  .hero-cta .btn-primary:hover{box-shadow:0 18px 36px -14px rgba(14,127,163,0.6);}

  /* ---------- INSTANT PRICING (its own full-width section, right below the hero) ---------- */
  .pricing-section{padding:72px 0 80px; background:var(--sage-pale);}
  .pricing-section .hero-calc{position:static; top:auto; max-width:600px; margin:0 auto;}

  /* ---------- SCROLL-IN REVEAL ---------- */
  /* Used on the hero band (revealed the instant the page loads, since it's
     already in the first viewport) and the pricing section below it
     (revealed as the visitor scrolls to it). Disabled entirely for anyone
     who's asked their system to reduce motion. */
  [data-reveal]{opacity:0; transform:translateY(28px); transition:opacity .7s cubic-bezier(.16,.8,.3,1), transform .7s cubic-bezier(.16,.8,.3,1);}
  [data-reveal].is-visible{opacity:1; transform:translateY(0);}
  [data-reveal][data-reveal-delay="1"]{transition-delay:.12s;}
  [data-reveal][data-reveal-delay="2"]{transition-delay:.24s;}
  @media (prefers-reduced-motion: reduce){
    [data-reveal]{opacity:1; transform:none; transition:none;}
  }

  /* Sticky pricing sidebar */
  .hero-calc{position:sticky; top:20px;}
  .hero-calc-photo{
    border-radius:20px; overflow:hidden; margin-bottom:14px;
    aspect-ratio:2/1; box-shadow:0 16px 34px -22px rgba(13,38,32,0.35);
  }
  .hero-calc-photo img{width:100%; height:100%; object-fit:cover; display:block;}
  .hero-calc .calc-card{padding:34px 32px;}
  .calc-card-head{margin-bottom:26px;}
  .calc-card-head .eyebrow-plain{margin-bottom:8px; display:block;}
  .calc-card-head h2{font-size:22px;}
  .calc-card-head p{margin-top:6px; font-size:13.5px; color:#4D6863;}
  .hero-calc .calc-row{margin-bottom:22px;}
  .hero-calc .calc-select{max-width:none;}
  .hero-calc .calc-price{font-size:42px;}
  .hero-calc .calc-result{margin-top:28px; padding-top:24px;}

  /* ---------- HOMEPAGE HERO (single, centered — replaces the old two-column band) ---------- */
  .hero-single{padding:118px 0 90px; text-align:center; overflow:visible;}
  .hero-single-inner{max-width:680px; margin:0 auto;}
  .hero-single-eyebrow{text-align:center;}
  .hero-single-h1{
    margin:0; font-size:clamp(42px, 5.8vw, 68px); letter-spacing:-0.02em;
    line-height:1.05; text-wrap:balance; color:var(--ink);
  }
  .hero-single-sub{margin:22px auto 0; max-width:480px; font-size:18px; line-height:1.55; color:#4A726B;}
  .hero-single-cta{
    margin-top:40px; padding:20px 44px; font-size:17px;
    box-shadow:0 20px 40px -18px rgba(14,127,163,0.45);
  }
  .hero-single-cta:hover{transform:translateY(-1px); box-shadow:0 24px 46px -18px rgba(14,127,163,0.55);}
  .hero-proof-strip{
    margin-top:52px; display:flex; align-items:center; justify-content:center;
    gap:14px; flex-wrap:wrap; font-size:13px; color:#4D6863;
  }
  .hero-proof-strip .stars{font-size:12px; margin-right:3px;}
  .hero-proof-item b{color:var(--forest-dark); font-weight:700;}
  .hero-proof-dot{opacity:0.45;}

  /* ---------- FEATURE TRIO (trust row — now its own full-width section) ---------- */
  .feature-trio{padding:84px 0; background:var(--white);}
  .feature-trio-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:48px;}
  .feature-trio-item{text-align:center;}
  .feature-trio-photo{
    border-radius:20px; overflow:hidden; aspect-ratio:4/3; margin-bottom:22px;
    box-shadow:0 22px 48px -28px rgba(13,38,32,0.35);
  }
  .feature-trio-photo img{width:100%; height:100%; object-fit:cover; display:block;}
  .feature-trio-icon{
    width:42px; height:42px; border-radius:12px; background:var(--forest-dark);
    display:flex; align-items:center; justify-content:center; margin:0 auto 16px;
  }
  .feature-trio-icon svg{width:19px; height:19px;}
  .feature-trio-item h3{margin:0 0 8px; font-size:18px; color:var(--forest-dark);}
  .feature-trio-item p{margin:0 auto; max-width:280px; font-size:14px; line-height:1.55; color:#5F7871;}

  /* ---------- INSTANT PRICING — full-width "configurator" layout ---------- */
  .pricing-config-head{max-width:600px; margin:0 auto 52px; text-align:center;}
  .pricing-config-head h2{margin:0; font-size:clamp(28px,3.2vw,38px); letter-spacing:-0.01em;}
  .pricing-config-head p{margin-top:12px; font-size:16px; color:#4A726B;}
  .pricing-config-grid{display:grid; grid-template-columns:1.15fr 0.85fr; gap:64px; align-items:stretch;}
  .pricing-config-row-pair{display:grid; grid-template-columns:1fr 1fr; gap:24px; margin-bottom:30px;}
  .pricing-config-row-pair .calc-row{margin-bottom:0;}
  .pricing-config-summary{min-width:0;}
  .pricing-summary-sticky{
    position:sticky; top:96px;
    background:var(--white); border-radius:24px; padding:36px 34px;
    box-shadow:0 30px 60px -30px rgba(13,38,32,0.22);
  }
  .pricing-summary-sticky .calc-price{font-size:46px;}
  .pricing-summary-sticky .calc-actions{margin-top:26px; flex-direction:column; align-items:stretch; gap:12px;}
  .pricing-summary-sticky .calc-actions .btn{width:100%; justify-content:center;}
  .pricing-summary-sticky .calc-actions .tel-link{text-align:center;}
  .pricing-summary-sticky .calc-note{margin-top:18px;}

  .hero-art{position:relative; padding-bottom:34px;}
  .hero-art .frame{
    border-radius:26px; overflow:hidden; aspect-ratio:5/4.3;
    box-shadow:0 30px 60px -20px rgba(13,38,32,0.35);
  }
  .hero-art .frame img{width:100%; height:100%; object-fit:cover;}
  .hero-brand-badge{
    position:absolute; top:20px; left:20px; z-index:2;
    display:flex; align-items:center; gap:10px;
    background:rgba(255,252,245,0.95);
    padding:8px 16px 8px 8px; border-radius:100px;
    box-shadow:0 12px 26px -10px rgba(13,38,32,0.4);
  }
  .hero-brand-badge .mark{
    width:32px; height:32px; border-radius:9px; background:var(--forest);
    display:flex; align-items:center; justify-content:center; flex-shrink:0;
  }
  .hero-brand-badge .mark svg{width:16px; height:16px;}
  .hero-brand-badge-text{display:flex; flex-direction:column; line-height:1.15;}
  .hero-brand-badge-text b{font-family:'Work Sans',sans-serif; font-weight:800; font-size:14.5px; color:var(--forest-dark);}
  .hero-brand-badge-text span{font-family:'Work Sans',sans-serif; font-weight:600; font-size:9px; letter-spacing:0.12em; text-transform:uppercase; color:var(--forest-dark);}
  .hero-badge{
    position:absolute; left:24px; bottom:0; background:var(--white); border-radius:16px;
    padding:16px 20px; box-shadow:0 16px 34px -10px rgba(13,38,32,0.3);
    display:flex; align-items:center; gap:14px; max-width:270px;
  }
  .hero-badge .stars{font-size:15px;}
  .hero-badge-text b{display:block; font-family:'Fraunces',serif; font-size:19px; color:var(--forest-dark);}
  .hero-badge-text span{font-size:12px; color:#4D6863;}
  .hero-tag{
    position:absolute; top:20px; right:20px; background:var(--forest-dark); color:var(--white);
    font-size:12.5px; font-weight:600; padding:8px 14px; border-radius:100px;
  }

  /* ---------- IN THE FIELD ---------- */
  .field-grid{display:grid; grid-template-columns:1fr 1fr; gap:24px;}
  .field-grid figure{
    margin:0; position:relative; border-radius:20px; overflow:hidden;
    box-shadow:0 20px 44px -24px rgba(13,38,32,0.35);
  }
  .field-grid figure img{width:100%; height:360px; object-fit:cover; display:block;}
  .field-grid figcaption{
    position:absolute; left:0; right:0; bottom:0; padding:20px 22px 16px;
    background:linear-gradient(to top, rgba(13,38,32,0.78), rgba(13,38,32,0));
    color:var(--white); font-size:14.5px; font-weight:600;
  }
  @media (max-width:700px){ .field-grid{grid-template-columns:1fr;} }

  /* ---------- TRUST BAR ---------- */
  .trustbar{
    background:var(--forest-dark); color:var(--white);
    padding:20px 0;
  }
  .trustbar .wrap{
    display:flex; flex-wrap:wrap; gap:14px 34px; justify-content:center; align-items:center;
  }
  .trustbar span{font-size:14px; font-weight:500; opacity:0.92; display:flex; align-items:center; gap:8px;}
  .trustbar span::before{content:"✓"; color:var(--butter); font-weight:700;}

  /* ---------- SECTION SHELL ---------- */
  section{padding:88px 0;}
  .section-head{max-width:620px; margin-bottom:52px;}
  .section-head .eyebrow-plain{margin-bottom:12px;}
  .section-head h2{font-size:clamp(28px,3.2vw,40px);}
  .section-head p{margin-top:14px; font-size:17px; color:#4A726B;}
  .section-alt{background:var(--sage-pale);}
  /* Centered variant for simpler, single-purpose page intros (e.g. Areas We
     Serve) where a centered heading over a symmetric grid reads cleaner
     than a left-aligned block. */
  .section-head-center{margin-left:auto; margin-right:auto; text-align:center;}
  .areas-breadcrumb{margin-bottom:30px;}

  /* ---------- LEGAL PAGES (Terms of Service / Privacy Policy) ---------- */
  .legal-content{max-width:760px; margin:0 auto; padding:8px 0 40px;}
  .legal-content h1{font-size:clamp(28px,3.2vw,38px); margin-bottom:8px;}
  .legal-content .legal-updated{font-size:13.5px; color:#4D6863; margin-bottom:36px;}
  .legal-content h2{font-family:'Fraunces',serif; font-size:20px; color:var(--ink); margin:36px 0 12px;}
  .legal-content h2:first-of-type{margin-top:0;}
  .legal-content p{font-size:15px; line-height:1.75; color:#3F5C56; margin-bottom:14px;}
  .legal-content ul{margin:0 0 14px 0; padding-left:22px;}
  .legal-content li{font-size:15px; line-height:1.75; color:#3F5C56; margin-bottom:6px;}
  .legal-content a{color:var(--forest-dark); font-weight:600; text-decoration:underline;}
  .legal-content strong{color:var(--ink);}

  /* ---------- HOW IT WORKS ---------- */
  .steps{
    display:grid; grid-template-columns:repeat(3,1fr); gap:0;
    position:relative;
  }
  .step{position:relative; padding-right:36px;}
  .step:not(:last-child)::after{
    content:""; position:absolute; top:26px; right:-2px; width:calc(100% - 60px);
    border-top:2px dashed var(--sage);
  }
  .step-num{
    width:52px; height:52px; border-radius:50%; background:var(--forest); color:var(--ink);
    display:flex; align-items:center; justify-content:center; font-family:'Fraunces',serif; font-size:19px;
    position:relative; z-index:2;
  }
  .step h3{margin-top:22px; font-size:21px;}
  .step p{margin-top:10px; color:#4A726B; font-size:15.5px;}

  /* ---------- HOW IT WORKS (compact strip) ---------- */
  .section-compact{padding:34px 0; background:var(--white); border-top:1px solid var(--line); border-bottom:1px solid var(--line);}
  .steps-compact{display:grid; grid-template-columns:repeat(4,1fr); gap:26px;}
  .step-compact{display:flex; align-items:flex-start; gap:13px;}
  .step-compact-num{
    flex:none; width:28px; height:28px; border-radius:50%; background:var(--sage); color:var(--forest-dark);
    display:flex; align-items:center; justify-content:center; font-family:'Fraunces',serif; font-weight:700; font-size:13px;
  }
  .step-compact h4{font-size:14.5px; margin:0; color:var(--forest-dark);}
  .step-compact p{margin-top:4px; font-size:12.5px; color:#4D6863; line-height:1.5;}
  @media (max-width:900px){ .steps-compact{grid-template-columns:1fr 1fr;} }
  @media (max-width:560px){ .steps-compact{grid-template-columns:1fr;} }

  /* ---------- PRICING CALCULATOR ---------- */
  .calc-card{
    background:var(--white); border:1px solid var(--line); border-radius:26px;
    padding:44px; box-shadow:0 30px 60px -30px rgba(13,38,32,0.25);
  }
  .calc-row{margin-bottom:30px;}
  .calc-row:last-of-type{margin-bottom:0;}
  .calc-label{font-size:13px; font-weight:700; text-transform:uppercase; letter-spacing:0.05em; color:var(--forest-dark); margin-bottom:14px; display:block;}
  .calc-select{
    width:100%; max-width:340px; padding:13px 42px 13px 18px; border-radius:100px; border:1.5px solid var(--line);
    font-size:15px; font-weight:600; font-family:inherit; color:var(--ink); background-color:var(--white);
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%236B4E12' stroke-width='2' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat:no-repeat; background-position:right 18px center; appearance:none; -webkit-appearance:none; cursor:pointer;
    transition:border-color .15s ease;
  }
  .calc-select:focus{outline:none; border-color:var(--forest);}
  .pill-group{display:flex; flex-wrap:wrap; gap:10px;}
  .pill-group input{position:absolute; opacity:0; width:1px; height:1px;}
  .pill-group label{
    display:inline-flex; align-items:center; padding:11px 18px; border:1.5px solid var(--line);
    border-radius:100px; cursor:pointer; font-size:14px; font-weight:600; color:var(--ink);
    transition:all .15s ease; background:var(--white);
  }
  .pill-group input:checked + label{background:var(--forest); color:var(--ink); border-color:var(--forest);}
  .pill-group label:hover{border-color:var(--forest);}
  .pill-badge{
    display:inline-block; margin-left:8px; padding:2px 9px; border-radius:100px;
    background:var(--forest-dark); color:var(--white); font-size:10.5px; font-weight:800;
    letter-spacing:0.03em; text-transform:uppercase; line-height:1.6;
  }
  .pill-group input:checked + label .pill-badge{background:var(--forest-dark); color:var(--white);}
  /* Service-type cards (calculator step 5) — a 2x2 grid of cards instead of
     a long row of pill buttons, so the choice doesn't feel overwhelming.
     All 9 cleaning types are real, visible, directly-selectable radio+label
     pairs — the 4 most common show up front, the other 5 (Airbnb, Senior,
     Commercial, Real Estate, Post-Construction) sit inside the collapsible
     .svc-more-wrap panel below, one tap away via .svc-more-toggle — see
     initHome(). Every type is bookable straight from this calculator. */
  .svc-type-group{display:grid; grid-template-columns:1fr 1fr; gap:10px;}
  .svc-type-group input{position:absolute; opacity:0; width:1px; height:1px;}
  .svc-type-group label{
    display:flex; flex-direction:column; gap:4px; padding:14px 16px;
    border:1.5px solid var(--line); border-radius:14px; cursor:pointer;
    background:var(--white); transition:border-color .15s ease, background .15s ease;
  }
  .svc-type-group label strong{font-size:14.5px; font-weight:700; color:var(--ink); display:flex; align-items:center; gap:6px; flex-wrap:wrap;}
  .svc-type-group label span{font-size:12px; line-height:1.4; color:#4D5C68;}
  .svc-type-group label .pill-badge{color:var(--white);}
  .svc-type-group label:hover{border-color:var(--forest);}
  .svc-type-group input:checked + label{border-color:var(--forest-dark); background:var(--sage-pale);}
  .svc-type-group input:checked + label strong{color:var(--forest-dark);}
  /* "+ Show N more cleaning types" toggle + the panel it reveals — both are
     full-width items inside the same 2-col .svc-type-group grid. */
  .svc-more-toggle{
    grid-column:1 / -1; background:none; border:1.5px dashed var(--line); border-radius:14px;
    padding:12px 16px; font-size:13.5px; font-weight:700; color:var(--forest-dark);
    cursor:pointer; text-align:center; font-family:inherit; transition:border-color .15s ease, background .15s ease;
  }
  .svc-more-toggle:hover{border-color:var(--forest); background:var(--sage-pale);}
  .svc-more-wrap{grid-column:1 / -1; display:grid; grid-template-columns:1fr 1fr; gap:10px;}
  .svc-more-wrap[hidden]{display:none;}
  @media (max-width:480px){
    .svc-type-group{grid-template-columns:1fr;}
    .svc-more-wrap{grid-template-columns:1fr;}
  }
  #freq-row{display:none;}
  #freq-row.show{
    display:block; background:var(--sage-pale); border:1.5px solid var(--forest);
    border-radius:16px; padding:20px 22px; margin-top:-6px;
  }
  #freq-row.show .calc-label{margin-bottom:10px;}
  .calc-result{
    margin-top:36px; padding-top:32px; border-top:1px solid var(--line);
    display:flex; align-items:flex-end; justify-content:space-between; flex-wrap:wrap; gap:24px;
  }
  .calc-price-label{font-size:13px; color:#4D6863; margin-bottom:6px;}
  .calc-price{font-family:'Fraunces',serif; font-size:52px; color:var(--forest-dark); line-height:1;}
  .calc-price span{font-size:20px; font-weight:500; color:#4D6863;}
  .calc-actions{display:flex; gap:14px; flex-wrap:wrap;}
  .calc-note{margin-top:20px; font-size:13px; color:#4D6863;}

  /* ---------- SERVICES ---------- */
  .service-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:22px;}
  .service-card{
    background:var(--white); border:1px solid var(--line); border-radius:18px;
    padding:30px 26px; display:flex; flex-direction:column; height:100%;
    transition:transform .15s ease, box-shadow .15s ease;
  }
  .service-card:hover{transform:translateY(-3px); box-shadow:0 16px 32px -18px rgba(13,38,32,0.3);}
  .service-card.featured{background:var(--forest); border-color:var(--forest);}
  .service-card.featured h3, .service-card.featured .price-label, .service-card.featured .price{color:var(--ink);}
  .service-card.featured p, .service-card.featured li{color:#1E4C44;}
  .service-card.featured .tag{background:var(--white); color:var(--forest-dark);}
  .tag{
    align-self:flex-start; background:var(--sage); color:var(--forest-dark);
    font-size:12px; font-weight:600; padding:5px 12px; border-radius:100px; margin-bottom:16px;
  }
  /* Accent color set — used to give service tags, feature icons, and area
     tags distinct colors instead of one uniform sage pill everywhere.
     Each pair is contrast-checked at 4.5:1+ for its text-on-bg use. */
  .tag-coral{background:#FBE7EC; color:#B8324E;}
  .tag-sky{background:#E4F0FA; color:#1D5A8C;}
  .tag-amber{background:#FBEEDC; color:#9A5410;}
  .tag-violet{background:#F0E9F9; color:#6B4A9E;}
  .tag-teal2{background:#E0F3EF; color:#1F7A6C;}
  .tag-gold{background:#FBF3D5; color:#8A6D12;}
  .tag-sage{background:#E7F2E0; color:#4C7A3D;}
  .tag-berry{background:#F8E6F1; color:#9A3B77;}
  .tag-slate{background:#E7EDF2; color:#3F5568;}
  .service-card.featured .tag.tag-coral,
  .service-card.featured .tag.tag-sky,
  .service-card.featured .tag.tag-amber,
  .service-card.featured .tag.tag-violet,
  .service-card.featured .tag.tag-teal2,
  .service-card.featured .tag.tag-gold,
  .service-card.featured .tag.tag-sage,
  .service-card.featured .tag.tag-berry,
  .service-card.featured .tag.tag-slate{background:var(--white);}
  .service-card h3{font-size:20px;}
  .service-card p.desc{margin-top:10px; font-size:14.5px; color:#4A726B; flex-grow:0;}
  .service-card ul{list-style:none; margin:18px 0 0; padding:0; font-size:14px; color:#4A726B;}
  .service-card li{padding:5px 0 5px 20px; position:relative;}
  .service-card li::before{content:"—"; position:absolute; left:0; color:var(--forest-dark);}
  .service-card.featured li::before{color:#1E4C44;}
  .price-row{margin-top:24px; padding-top:20px; border-top:1px solid var(--line); display:flex; align-items:baseline; justify-content:space-between;}
  .service-card.featured .price-row{border-color:rgba(13,38,32,0.2);}
  .price-label{font-size:12.5px; color:#4D6863;}
  .price{font-family:'Fraunces',serif; font-size:24px; color:var(--forest-dark);}
  .card-link{
    display:inline-flex; align-items:center; gap:6px; font-size:13.5px; font-weight:700;
    color:var(--forest-dark); cursor:pointer; transition:gap .15s ease;
  }
  .service-card.featured .card-link{color:var(--ink);}
  .card-link:hover{gap:9px;}
  .card-link-row{margin-top:16px; display:flex; gap:20px; flex-wrap:wrap;}
  .service-card h3 a{color:inherit; text-decoration:none;}
  .service-card h3 a:hover{text-decoration:underline;}

  /* ---------- DETAIL PAGES (service.html / area.html) ---------- */
  .breadcrumb{font-size:13.5px; color:#4D6863; margin-bottom:18px;}
  .breadcrumb a{color:var(--forest-dark); font-weight:600; transition:opacity .15s ease;}
  .breadcrumb a:hover{opacity:0.7;}
  .includes-list{list-style:none; margin:20px 0 0; padding:0; display:grid; gap:14px;}
  .includes-list li{display:flex; gap:12px; align-items:flex-start; font-size:15px;}
  .includes-list li::before{content:"✓"; flex-shrink:0; width:22px; height:22px; border-radius:50%; background:var(--sage); color:var(--forest-dark); font-size:12px; display:flex; align-items:center; justify-content:center; margin-top:2px;}
  .ideal-for{margin-top:26px; padding:18px 20px; background:var(--sage-pale); border-radius:14px; font-size:14.5px; color:#1E4C44;}
  .ideal-for b{color:var(--forest-dark);}
  .related-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:10px; margin-top:14px;}
  .related-grid a{display:block; padding:12px 14px; background:var(--white); border:1px solid var(--line); border-radius:10px; font-size:13.5px; font-weight:600; text-align:center; transition:border-color .15s ease, color .15s ease, transform .1s ease;}
  .related-grid a:hover{border-color:var(--forest); color:var(--forest-dark); transform:translateY(-1px);}
  .related-grid a.active{background:var(--forest); border-color:var(--forest); color:var(--ink);}
  @media (max-width:640px){ .related-grid{grid-template-columns:1fr 1fr;} }

  /* ---------- STATS BAND ---------- */
  .stats-band{
    background:var(--forest); border-radius:26px; padding:44px 40px;
    display:grid; grid-template-columns:repeat(4,1fr); gap:24px; text-align:center;
  }
  .stats-band b{display:block; font-family:'Fraunces',serif; font-size:32px; color:var(--ink);}
  .stats-band span{font-size:13px; color:rgba(16,36,61,0.68); margin-top:4px; display:block;}

  /* ---------- VETTING ---------- */
  .vetting{display:grid; grid-template-columns:0.9fr 1.1fr; gap:56px; align-items:center;}
  .vetting-img{border-radius:20px; overflow:hidden; aspect-ratio:4/5;}
  .vetting-img img{width:100%; height:100%; object-fit:cover;}
  .vet-list{list-style:none; margin:28px 0 0; padding:0; display:grid; gap:16px;}
  .vet-list li{display:flex; gap:14px; align-items:flex-start; font-size:15.5px;}
  .vet-check{
    flex-shrink:0; width:24px; height:24px; border-radius:50%; background:var(--sage);
    display:flex; align-items:center; justify-content:center; font-size:12px; color:var(--forest-dark); margin-top:2px;
  }
  .vet-stats{display:flex; gap:40px; margin-top:36px; padding-top:32px; border-top:1px solid var(--line); flex-wrap:wrap;}
  .vet-stats b{display:block; font-family:'Fraunces',serif; font-size:30px; color:var(--forest-dark);}
  .vet-stats span{font-size:13px; color:#4D6863;}

  /* ---------- WHY / FEATURES ---------- */
  .feat-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--line); border:1px solid var(--line); border-radius:18px; overflow:hidden;}
  .feat-grid.cols-2{grid-template-columns:repeat(2,1fr);}
  .feat{background:var(--white); padding:34px 30px;}
  .feat-icon{width:42px; height:42px; border-radius:10px; background:var(--sage-pale); display:flex; align-items:center; justify-content:center; margin-bottom:18px;}
  .feat-icon.tag-coral{background:#FBE7EC;}
  .feat-icon.tag-sky{background:#E4F0FA;}
  .feat-icon.tag-amber{background:#FBEEDC;}
  .feat-icon.tag-violet{background:#F0E9F9;}
  .feat-icon.tag-teal2{background:#E0F3EF;}
  .feat h3{font-size:18px;}
  .feat p{margin-top:8px; font-size:14.5px; color:#4A726B;}

  /* ---------- GUARANTEE BAND ---------- */
  .guarantee{
    background:var(--forest-dark); color:var(--white); border-radius:26px;
    padding:64px 56px; display:grid; grid-template-columns:1fr 1fr; gap:48px; align-items:center;
  }
  .guarantee h2{color:var(--white); font-size:clamp(26px,3vw,36px);}
  .guarantee p{color:#F8FFFB; margin-top:16px; font-size:16px;}
  .guarantee-list{list-style:none; margin:0; padding:0; display:grid; gap:16px;}
  .guarantee-list li{display:flex; gap:12px; font-size:15px; color:#F8FFFB;}
  .guarantee-list li::before{content:"✓"; color:var(--butter); font-weight:700;}

  /* ---------- ECO ---------- */
  .eco{display:grid; grid-template-columns:1fr 1fr; gap:56px; align-items:start;}
  .eco-points{list-style:none; margin:22px 0 0; padding:0; display:grid; gap:14px;}
  .eco-points li{display:flex; gap:12px; font-size:15.5px;}
  .eco-points li::before{content:"✓"; color:var(--forest-dark); font-weight:700;}
  .eco-grid{display:grid; grid-template-columns:1fr 1fr; gap:18px;}
  .eco-card{background:var(--white); border:1px solid var(--line); border-radius:14px; padding:20px;}
  .eco-card h4{font-size:15.5px;}
  .eco-card p{margin-top:8px; font-size:13.5px; color:#4A726B;}

  /* ---------- REFERRAL ---------- */
  .referral{
    background:var(--forest-dark); border-radius:26px;
    padding:52px 48px; display:grid; grid-template-columns:1.3fr 0.7fr; gap:40px; align-items:center;
  }
  .referral h2{font-size:clamp(26px,3vw,34px); color:var(--white);}
  .referral p{margin-top:14px; font-size:16px; color:#F8FFFB; max-width:480px;}
  .referral-card{background:var(--white); border-radius:18px; padding:26px; text-align:center;}
  .referral-card b{display:block; font-family:'Fraunces',serif; font-size:40px; color:var(--forest-dark);}
  .referral-card span{font-size:13.5px; color:#4D6863; display:block; margin-top:4px;}
  .referral-card .btn{margin-top:18px; width:100%; justify-content:center;}

  /* ---------- REVIEWS ---------- */
  .reviews-head{display:flex; justify-content:space-between; align-items:flex-end; flex-wrap:wrap; gap:20px; margin-bottom:44px;}
  .reviews-score{display:flex; align-items:center; gap:16px; background:var(--white); border:1px solid var(--line); border-radius:16px; padding:16px 22px;}
  .reviews-score b{font-family:'Fraunces',serif; font-size:32px; color:var(--forest-dark);}
  .reviews-score .stars{font-size:16px;}
  .reviews-score-text span{display:block; font-size:12.5px; color:#4D6863;}
  .review-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:20px;}
  .review-card{background:var(--white); border:1px solid var(--line); border-radius:16px; padding:24px;}
  .review-card .stars{display:block; margin-bottom:12px;}
  .review-card p{font-size:14.5px; color:#1E4C44; line-height:1.6;}
  .review-who{margin-top:18px; display:flex; align-items:center; gap:10px;}
  .review-avatar{
    width:34px; height:34px; border-radius:50%; background:var(--sage); color:var(--forest-dark);
    display:flex; align-items:center; justify-content:center; font-size:12.5px; font-weight:700; flex-shrink:0;
  }
  .review-who b{font-size:13.5px; display:block;}
  .review-who span{font-size:12px; color:#4D6863;}
  .reviews-note{margin-top:28px; font-size:13.5px; color:#4D6863;}

  /* ---------- GOOGLE REVIEWS (live) ---------- */
  .grev-sub{margin-top:10px; font-size:14.5px; color:#4D6863; max-width:520px;}
  a.grev-score{text-decoration:none; color:inherit; transition:border-color .15s, transform .15s;}
  a.grev-score:hover{border-color:var(--forest-dark); transform:translateY(-1px);}
  .grev-score[hidden], [data-grev-link][hidden], .grev-more[hidden]{display:none !important;}
  .grev-track{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:20px; align-items:start;}
  .grev-status{grid-column:1/-1; font-size:14px; color:#4D6863; padding:8px 0;}
  .grev-card{background:var(--white); border:1px solid var(--line); border-radius:16px; padding:22px 22px 18px; display:flex; flex-direction:column; min-width:0;}
  .grev-top{display:flex; align-items:center; gap:10px; margin-bottom:12px;}
  .grev-avatar{width:40px; height:40px; border-radius:50%; overflow:hidden; flex-shrink:0; background:var(--sage); color:var(--forest-dark); display:flex; align-items:center; justify-content:center; font-size:13px; font-weight:700; text-decoration:none;}
  .grev-avatar img{width:100%; height:100%; object-fit:cover; display:block;}
  .grev-who{min-width:0; flex:1;}
  .grev-who b{display:block; font-size:14px; color:var(--forest-dark); overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
  .grev-who a{color:inherit; text-decoration:none;}
  .grev-who a:hover b{text-decoration:underline;}
  .grev-who span{font-size:12px; color:#4D6863;}
  .grev-src{font-size:11px; font-weight:700; letter-spacing:.02em; color:#4D6863; border:1px solid var(--line); border-radius:999px; padding:3px 8px; flex-shrink:0;}
  .grev-card .stars{display:block; margin-bottom:10px; font-size:15px; letter-spacing:1px;}
  .grev-card .stars .off{opacity:.25;}
  .grev-text{font-size:14.5px; color:#1E4C44; line-height:1.6; white-space:pre-line; display:-webkit-box; -webkit-line-clamp:6; -webkit-box-orient:vertical; overflow:hidden;}
  .grev-card.open .grev-text{-webkit-line-clamp:unset; display:block;}
  .grev-foot{margin-top:12px; display:flex; flex-wrap:wrap; gap:6px 14px; font-size:12.5px;}
  .grev-foot a, .grev-foot button{color:var(--forest-dark); background:none; border:0; padding:0; font:inherit; font-weight:600; cursor:pointer; text-decoration:underline; text-underline-offset:2px;}
  .grev-actions{margin-top:28px; display:flex; flex-wrap:wrap; gap:12px;}
  .grev-attrib{margin-top:14px; font-size:12px; color:#4D6863;}
  .grev-attrib a{color:inherit;}
  .gx-reviews .grev-track{margin-top:8px;}

  /* Auto-scrolling review band (home page). Loops the real Google reviews
     slowly sideways; pauses on hover, keyboard focus or tap; turns into a
     plain swipe row for people who prefer reduced motion. */
  #reviews{overflow-x:clip;}
  .grev-marquee{display:block; overflow:hidden; position:relative; padding:6px 0 10px;
    width:100vw; margin-left:calc(50% - 50vw);
    -webkit-mask-image:linear-gradient(90deg, transparent 0, #000 9%, #000 91%, transparent 100%);
            mask-image:linear-gradient(90deg, transparent 0, #000 9%, #000 91%, transparent 100%);}
  .grev-rail{display:flex; gap:20px; width:max-content; align-items:stretch; padding:0 20px;
    animation:grev-slide var(--grev-dur, 60s) linear infinite; will-change:transform;}
  .grev-marquee:hover .grev-rail, .grev-marquee:focus-within .grev-rail, .grev-marquee.paused .grev-rail{animation-play-state:paused;}
  .grev-rail .grev-card{flex:0 0 340px; max-width:340px; transition:transform .25s ease, box-shadow .25s ease;}
  .grev-rail .grev-foot{margin-top:auto; padding-top:12px;}
  .grev-rail .grev-card.open{align-self:flex-start;}
  .grev-rail .grev-card:hover{transform:translateY(-4px); box-shadow:0 14px 30px -18px rgba(13,38,32,.35);}
  @keyframes grev-slide{from{transform:translateX(0)} to{transform:translateX(var(--grev-shift, -50%))}}
  .grev-marquee-hint{margin-top:8px; font-size:12px; color:#4D6863;}
  @media (max-width: 900px){
    .grev-marquee{padding-bottom:6px;}
    .grev-rail{gap:14px;}
    .grev-rail .grev-card{flex-basis:280px; max-width:280px;}
  }
  @media (prefers-reduced-motion: reduce){
    .grev-marquee{overflow-x:auto; -webkit-mask-image:none; mask-image:none; scroll-snap-type:x mandatory;}
    .grev-rail{animation:none;}
    .grev-rail [data-grev-clone]{display:none;}
    .grev-rail .grev-card{scroll-snap-align:start;}
  }
  @media (max-width: 900px){
    .grev-track{display:flex; overflow-x:auto; scroll-snap-type:x mandatory; gap:14px; padding-bottom:6px; -webkit-overflow-scrolling:touch;}
    .grev-card{flex:0 0 84%; max-width:360px; scroll-snap-align:start;}
    .grev-status{flex:1 0 100%;}
    .grev-actions .btn{flex:1 1 auto; justify-content:center;}
  }

  /* ---------- AREAS ---------- */
  .areas-count{
    display:inline-flex; align-items:center; gap:6px; margin:-10px 0 26px; font-size:13.5px; font-weight:700;
    color:var(--forest-dark); background:var(--sage-pale); padding:8px 16px; border-radius:100px;
  }
  .areas-count strong{font-family:'Fraunces',serif; font-size:15px;}
  .areas-count-center{display:flex; width:fit-content; margin-left:auto; margin-right:auto;}
  .areas-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:16px;}
  /* Collapsed by default on the HOMEPAGE teaser only, so it stays one tidy
     screenful instead of all 16 — "See all" (below) lifts the cap via the
     .show-all class on #home-areas-grid. The dedicated Areas We Serve page
     (#areas-grid) is the full directory and always shows every city.
     8 shown = two full rows at 4 columns (desktop/tablet); the 620px
     breakpoint below trims that to 4 = two full rows at 1 column. */
  #home-areas-grid:not(.show-all) .area-card:nth-child(n+9){display:none;}
  .areas-see-more-wrap{display:flex; justify-content:center; margin-top:28px;}
  #home-areas-see-more-wrap.is-hidden{display:none;}
  .area-card{
    display:flex; flex-direction:column; gap:12px; background:var(--white); border:1px solid var(--line);
    border-radius:16px; padding:22px 16px 20px; text-decoration:none; text-align:center;
    transition:border-color .15s ease, box-shadow .15s ease, transform .1s ease;
  }
  .area-card:hover{border-color:var(--forest); box-shadow:0 14px 28px -18px rgba(13,38,32,0.32); transform:translateY(-2px);}
  .area-card-photo{margin:-22px -16px 0; border-radius:16px 16px 0 0; aspect-ratio:4/3; object-fit:cover; display:block; width:calc(100% + 32px); max-width:none;}
  /* Name + tag always sit on one line, in the same spot, on every card — a
     fixed-size tag with a hard width cap and ellipsis, so a long city name
     (e.g. "New Westminster") never pushes cards into a different layout
     than a short one (e.g. "Surrey"). */
  .area-card-top{display:flex; flex-wrap:nowrap; align-items:center; justify-content:center; gap:5px;}
  .area-card h3{font-family:'Fraunces',serif; font-size:15px; color:var(--ink); line-height:1.25; white-space:nowrap; flex-shrink:0;}
  .area-card p{font-size:13.5px; color:#4A726B; line-height:1.65;}
  .area-tag{
    flex-shrink:1; min-width:0; display:inline-flex; align-items:center; gap:3px; background:var(--sage); color:var(--forest-dark);
    font-size:9px; font-weight:700; letter-spacing:0.04em; text-transform:uppercase; padding:4px 8px 4px 9px;
    border-radius:100px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
  }
  .area-tag.tag-coral{background:#FBE7EC; color:#B8324E;}
  .area-tag.tag-sky{background:#E4F0FA; color:#1D5A8C;}
  .area-tag.tag-amber{background:#FBEEDC; color:#9A5410;}
  .area-tag.tag-violet{background:#F0E9F9; color:#6B4A9E;}
  .area-tag.tag-teal2{background:#E0F3EF; color:#1F7A6C;}
  .area-tag.tag-gold{background:#FBF3D5; color:#8A6D12;}
  .area-tag.tag-sage{background:#E7F2E0; color:#4C7A3D;}
  .area-tag.tag-berry{background:#F8E6F1; color:#9A3B77;}
  .area-tag.tag-cyan{background:#DFF4F7; color:#146B7A;}
  .area-tag.tag-indigo{background:#E6E9FB; color:#3D4EA0;}
  .area-tag.tag-lime{background:#EEF6D8; color:#5C7A1E;}
  .area-tag.tag-plum{background:#F3E5F0; color:#7A3D6E;}
  .area-tag.tag-rust{background:#FBE3D8; color:#A34A1F;}
  .area-tag.tag-slate2{background:#E6EBEF; color:#3E5568;}
  .area-tag.tag-mint{background:#DFF5EA; color:#1F7A52;}
  .area-tag.tag-copper{background:#F6E2D3; color:#8C4E24;}
  .area-hero-photo{width:100%; height:auto; aspect-ratio:21/8; object-fit:cover; border-radius:20px; border:1px solid var(--line); box-shadow:0 24px 60px -30px rgba(13,38,32,0.35); margin:24px 0 8px; display:block;}
  .area-hero-photo[hidden]{display:none;}
  @media (max-width:700px){ .area-hero-photo{aspect-ratio:4/3;} }
  .areas-note{margin-top:22px; font-size:13.5px; color:#4D6863;}
  .areas-note a{color:var(--forest-dark); font-weight:600;}
  .areas-note a:hover{opacity:0.7;}
  .city-links{display:flex; flex-wrap:wrap; gap:10px 14px; justify-content:center; max-width:800px; margin:0 auto;}
  .city-links a{
    font-size:13.5px; font-weight:600; color:var(--forest-dark); padding:9px 18px; background:var(--white);
    border:1px solid var(--line); border-radius:100px; transition:border-color .15s ease, background .15s ease;
  }
  .city-links a:hover{border-color:var(--forest); background:var(--sage-pale);}

  /* ---------- AREAS HERO BAND + SEARCH + MAP ---------- */
  .areas-hero-band{
    /* the owner's own cloud photo — a light Sky Pop tint laid over it (instead
       of the old heavy dark overlay) so the photo shows through clearly
       while headings/body text stay on a light, readable ground. */
    background:
      linear-gradient(rgba(205,239,247,0.72), rgba(240,251,254,0.90)),
      url("/img/areasBand-fcf353a2.jpg") center 60%/cover no-repeat;
    padding:64px 0 56px; position:relative; overflow:hidden;
  }
  .areas-hero-band::before, .areas-hero-band::after{
    content:""; position:absolute; border-radius:50%; border:2px solid rgba(14,127,163,0.14); pointer-events:none;
  }
  .areas-hero-band::before{width:240px; height:240px; top:-100px; right:-70px;}
  .areas-hero-band::after{width:150px; height:150px; bottom:-60px; left:6%; border-color:rgba(14,127,163,0.09);}
  .areas-hero-band .wrap{position:relative; z-index:1;}
  .areas-hero-band .eyebrow-plain{color:var(--forest-dark);}
  .areas-hero-band h1{color:var(--ink);}
  .areas-hero-band .section-head p{color:rgba(16,36,61,0.68);}
  .areas-search-wrap{max-width:460px; margin:30px auto 0; position:relative;}
  .areas-search-wrap svg{position:absolute; left:19px; top:50%; transform:translateY(-50%); width:17px; height:17px; color:#7C8B93; pointer-events:none;}
  .areas-search-wrap input{
    width:100%; padding:15px 20px 15px 48px; border-radius:100px; border:none; font-size:14.5px;
    font-family:inherit; color:var(--ink); background:#fff; box-shadow:0 16px 34px -14px rgba(4,20,30,0.16);
  }
  .areas-search-wrap input::placeholder{color:#94A3AB;}
  .areas-search-wrap input:focus{outline:2px solid rgba(14,127,163,0.45); outline-offset:3px;}
  .areas-search-count{margin-top:12px; font-size:13px; color:rgba(16,36,61,0.62); text-align:center; min-height:16px;}
  .areas-hero-band .stats-band{margin-top:44px;}
  .map-section{padding:64px 0;}
  .map-card{
    max-width:640px; margin:0 auto; background:var(--white); border-radius:24px; overflow:hidden;
    box-shadow:0 24px 60px -30px rgba(13,38,32,0.35); border:1px solid var(--line);
  }
  .map-card .map-svg-wrap{display:block; line-height:0;}
  #areas-map{width:100%; height:480px; background:#2FC1E8;}
  .leaflet-tooltip.area-map-label{
    background:rgba(255,255,255,0.94); border:none; box-shadow:0 2px 8px rgba(13,38,32,0.3);
    font-family:'Work Sans',sans-serif; font-weight:700; font-size:12px; color:#2C3B44;
    padding:3px 9px; border-radius:7px;
  }
  .leaflet-tooltip.area-map-label::before{display:none;}
  .map-card-info{padding:22px 28px 26px;}
  .map-card-info h3{font-family:'Fraunces',serif; font-size:20px; color:var(--ink);}
  .map-card-info p{margin-top:8px; font-size:14px; color:#4A726B; line-height:1.7;}
  .area-card.is-hidden{display:none;}

  /* ---------- FAQ ---------- */
  .faq-cats{display:flex; gap:10px; flex-wrap:wrap; justify-content:center; margin-bottom:32px;}
  .faq-cat-btn{
    padding:9px 18px; border-radius:100px; border:1.5px solid var(--line); background:var(--white);
    font-size:13.5px; font-weight:600; cursor:pointer; color:var(--ink); transition:all .15s ease;
  }
  .faq-cat-btn.active{background:var(--forest); color:var(--ink); border-color:var(--forest);}
  .faq-cat-btn.cat-coral.active{background:#B8324E; border-color:#B8324E; color:#fff;}
  .faq-cat-btn.cat-sky.active{background:#1D5A8C; border-color:#1D5A8C; color:#fff;}
  .faq-cat-btn.cat-amber.active{background:#9A5410; border-color:#9A5410; color:#fff;}
  .faq-cat-btn.cat-violet.active{background:#6B4A9E; border-color:#6B4A9E; color:#fff;}
  .faq-cat-btn.cat-teal2.active{background:#1F7A6C; border-color:#1F7A6C; color:#fff;}
  .faq-list{max-width:760px; margin:0 auto;}
  .faq-group{display:none;}
  .faq-group.active{display:flex; flex-direction:column; gap:12px;}
  details{
    border:1px solid var(--line); border-radius:14px; padding:20px 24px; background:var(--white);
    transition:border-color .15s ease, box-shadow .15s ease;
  }
  details[open]{border-color:var(--forest); box-shadow:0 12px 28px -18px rgba(13,38,32,0.28);}
  details summary{
    cursor:pointer; list-style:none; display:flex; justify-content:space-between; align-items:center; gap:16px;
    font-family:'Fraunces',serif; font-size:18px; color:var(--forest-dark);
  }
  details summary::-webkit-details-marker{display:none;}
  details summary::after{content:"+"; font-size:24px; color:var(--forest-dark); font-family:'Work Sans',sans-serif; transition:transform .2s; flex-shrink:0;}
  details[open] summary::after{transform:rotate(45deg);}
  details p{margin-top:14px; font-size:15px; color:#4A726B; max-width:640px;}

  /* ---------- FINAL CTA ---------- */
  .final-cta{text-align:center;}
  .final-cta h2{font-size:clamp(30px,4vw,46px); max-width:640px; margin:0 auto;}
  .final-cta p{margin-top:16px; font-size:17px; color:#4A726B;}
  .final-cta .hero-cta{justify-content:center; margin-top:30px;}

  /* ---------- FOOTER ---------- */
  footer{background:var(--forest-dark); color:#F8FFFB; padding:64px 0 28px;}
  .foot-grid{display:grid; grid-template-columns:1.4fr 1fr 1fr 1fr; gap:40px;}
  .foot-brand p{margin-top:14px; font-size:14px; color:#F8FFFB; max-width:280px;}
  .foot-brand .foot-trust{font-size:12.5px; opacity:.85; letter-spacing:.01em;}
  footer h4{color:var(--white); font-family:'Work Sans',sans-serif; font-size:13px; text-transform:uppercase; letter-spacing:0.04em; font-weight:600; margin-bottom:16px;}
  footer ul{list-style:none; margin:0; padding:0; display:grid; gap:10px;}
  footer a{font-size:14px; color:#F8FFFB;}
  footer a:hover{color:var(--white);}
  .foot-social{display:flex; gap:12px; margin-top:18px;}
  .foot-social a{display:inline-flex; align-items:center; justify-content:center; width:40px; height:40px; border-radius:50%; background:rgba(255,255,255,0.10); color:#F8FFFB; transition:background .15s ease;}
  .foot-social a:hover{background:rgba(255,255,255,0.22); color:var(--white);}
  .foot-social svg{width:20px; height:20px; display:block;}
  .foot-bottom{
    margin-top:56px; padding-top:24px; border-top:1px solid rgba(255,255,255,0.12);
    display:flex; justify-content:space-between; flex-wrap:wrap; gap:12px; font-size:13px; color:#F8FFFB;
  }
  .foot-bottom a:hover{text-decoration:underline;}

  @media (max-width: 900px){
    .hero-grid, .vetting, .eco, .guarantee, .referral{grid-template-columns:1fr;}
    .vetting-img{order:-1;}
    /* Homepage feature trio and pricing configurator: both collapse to a
       single column, and the sticky price panel stops pinning once it's
       no longer sitting beside the form — it would just float oddly. */
    .feature-trio-grid{grid-template-columns:1fr; gap:36px; max-width:420px; margin:0 auto;}
    .pricing-config-grid{grid-template-columns:1fr; gap:40px;}
    .pricing-summary-sticky{position:static;}
    .steps{grid-template-columns:1fr; gap:36px;}
    .step:not(:last-child)::after{display:none;}
    .service-grid{grid-template-columns:1fr 1fr;}
    .feat-grid{grid-template-columns:1fr 1fr;}
    .areas-grid{grid-template-columns:1fr 1fr;}
    .foot-grid{grid-template-columns:1fr 1fr;}
    .guarantee{padding:44px 28px;}
    .stats-band{grid-template-columns:1fr 1fr;}
    .review-grid{grid-template-columns:1fr 1fr;}
    .calc-card{padding:30px 22px;}
    .referral{padding:36px 28px;}

    /* Nav switches to the hamburger menu starting here (900px), not at the
       620px "phone" breakpoint the rest of this block uses. With three
       dropdown buttons ("About Us ▾", "Services ▾", "Areas We Serve ▾") plus
       Contact, the phone number, and the CTA button, the inline nav wraps
       onto a cramped, overlapping second line anywhere from ~620px to
       ~900px — a real layout bug, not just a style preference. Moving the
       hamburger breakpoint up here avoids that band entirely. */
    .nav-links, .nav-phone{display:none;}
    .nav-toggle{display:block;}
    /* The logo grew wider, so on narrow phones the "Get My Price" button
       no longer has room next to it and was wrapping onto three lines.
       Shrinking it here (nav bar only — every other Get My Price / Get My
       Instant Price button on the page is untouched) keeps it on one line. */
    .nav-right .btn-primary{padding:9px 14px; font-size:12.5px; white-space:nowrap;}
    .nav-right{gap:10px;}
    /* Phone menu (Sep 29 restyle): a clean list with hairline dividers,
       a slim chevron with a full 44x44 tap area (Apple's minimum), and an
       indented sub-page list. The .nav-dropdown-panel desktop transform is
       reset at the .open specificity so it doesn't shove the panel left. */
    .nav-links.mobile-open{
      display:flex; position:absolute; top:100%; left:0; right:0; background:var(--white);
      flex-direction:column; align-items:stretch; gap:0; padding:4px 24px 12px;
      border-top:1px solid var(--line); border-bottom:1px solid var(--line);
      box-shadow:0 18px 32px -20px rgba(16,36,61,0.28);
      max-height:calc(100vh - 140px); overflow-y:auto; -webkit-overflow-scrolling:touch;
    }
    .nav-links.mobile-open > a,
    .nav-links.mobile-open > .nav-dropdown{border-bottom:1px solid var(--line);}
    .nav-links.mobile-open > :last-child{border-bottom:none;}
    .nav-links.mobile-open > a{
      text-align:left; font-size:16px; font-weight:500; color:var(--ink); opacity:1; padding:16px 0;
    }
    .nav-dropdown{padding-bottom:0; margin-bottom:0; width:100%; flex-wrap:wrap; justify-content:space-between; align-items:center;}
    .nav-links .nav-dropdown-toggle{flex:1; padding:16px 0; font-size:16px; font-weight:500; color:var(--ink); opacity:1;}
    .nav-dropdown-caret{
      width:44px; height:44px; padding:0; margin:0 -12px 0 0; flex:0 0 44px;
      justify-content:center; border-radius:50%; background:none;
      color:var(--ink); opacity:0.55; transition:opacity .15s ease, color .15s ease, background .15s ease;
    }
    .nav-dropdown-caret:active{background:var(--sage-pale);}
    .nav-dropdown-caret .caret{
      font-size:0; width:8px; height:8px; margin:-4px 0 0 0;
      border-right:1.75px solid currentColor; border-bottom:1.75px solid currentColor;
      transform:rotate(45deg); transition:transform .2s ease, margin .2s ease;
    }
    .nav-dropdown.open .nav-dropdown-caret{opacity:1; color:var(--forest-dark);}
    .nav-dropdown.open .nav-dropdown-caret .caret{transform:rotate(225deg); margin:4px 0 0 0;}
    .nav-links .nav-dropdown.open .nav-dropdown-toggle{font-weight:600;}
    .nav-dropdown-panel{
      position:static; transform:none; opacity:1; visibility:visible; width:100%;
      background:none; box-shadow:none; border:none; border-radius:0;
      padding:0 0 10px 4px; margin:-6px 0 0; display:none; gap:0;
    }
    .nav-dropdown.open .nav-dropdown-panel{display:grid; grid-template-columns:1fr; transform:none; left:0;}
    .nav-dropdown-panel a{
      padding:10px 12px; font-size:15px; font-weight:400;
      color:var(--ink); opacity:0.7; border-radius:8px;
    }
    .nav-dropdown-panel a:active{background:var(--sage-pale); opacity:1;}
  }
  @media (max-width: 620px){
    /* Footer: plain 1fr columns can't shrink below their widest item (the
       logo), which pushed every page ~50px wider than a 375px phone and
       caused sideways scrolling. minmax(0,1fr) lets the columns shrink, and
       the brand block gets its own full-width row. */
    .foot-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:32px 20px;}
    .foot-brand{grid-column:1 / -1;}
    footer li, footer a{overflow-wrap:anywhere;}
    .service-grid{grid-template-columns:1fr;}
    .feat-grid, .feat-grid.cols-2{grid-template-columns:1fr;}
    .areas-grid{grid-template-columns:1fr;}
    #home-areas-grid:not(.show-all) .area-card:nth-child(n+5){display:none;}
    .stats-band{grid-template-columns:1fr 1fr;}
    .review-grid{grid-template-columns:1fr;}
    section{padding:64px 0;}
    .hero{padding:40px 0 60px;}
    .hero-badge{position:static; margin-top:20px; max-width:none;}
    .hero-single{padding:64px 0 52px;}
    .hero-single-cta{padding:18px 32px; font-size:16px;}
    .hero-proof-strip{gap:8px 12px; font-size:12px; margin-top:40px;}
    .feature-trio{padding:64px 0;}
    .pricing-config-row-pair{grid-template-columns:1fr;}
    .pricing-summary-sticky{padding:28px 22px;}
  }
  @media (max-width:400px){
    /* On the narrowest phones (iPhone SE and similar, ~320-375px) the
       larger logo plus the nav CTA button and hamburger no longer all fit
       on one line — scale the logo back down a bit just at this width so
       nothing gets clipped off the right edge. */
    nav .logo{min-height:48px;}
    .logo-img{height:36px;}
    .foot-brand .logo-img{height:44px;}
    .nav-right .btn-primary{padding:8px 11px; font-size:11.5px;}
    .nav-right{gap:8px;}
  }

/* ============ BOOKING FLOW (schedule / confirm / payment / booked) ============ */
.booking-shell{padding:48px 0 90px;}
.booking-layout{display:grid; grid-template-columns:1.3fr 0.9fr; gap:40px; align-items:start; min-width:0;}
.booking-main{background:var(--white); border:1px solid var(--line); border-radius:22px; padding:38px; min-width:0;}
@media (max-width:900px){ .booking-layout{grid-template-columns:1fr;} }

/* Stepper */
.stepper{display:flex; align-items:center; gap:0; margin-bottom:40px; flex-wrap:wrap;}
.stepper-step{display:flex; align-items:center; gap:10px;}
.stepper-num{
  width:30px; height:30px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  font-family:'Fraunces',serif; font-size:14px; background:var(--sage); color:var(--forest-dark); flex-shrink:0;
  border:2px solid transparent;
}
.stepper-step.done .stepper-num{background:var(--forest); color:var(--ink);}
.stepper-step.active .stepper-num{background:var(--white); color:var(--forest-dark); border-color:var(--forest);}
.stepper-label{font-size:13.5px; font-weight:600; color:#4D6863;}
.stepper-step.active .stepper-label, .stepper-step.done .stepper-label{color:var(--forest-dark);}
.stepper-line{width:36px; height:2px; background:var(--line); margin:0 12px;}
@media (max-width:640px){ .stepper-label{display:none;} .stepper-line{width:18px; margin:0 6px;} }

.booking-title{font-size:clamp(22px,2.6vw,30px);}
.booking-sub{margin-top:8px; font-size:15px; color:#4D6863;}

/* Date strip */
.date-strip{display:flex; gap:10px; overflow-x:auto; padding:6px 2px 14px; margin-top:24px; scrollbar-width:thin;}
.date-pill{
  flex:0 0 auto; width:76px; padding:14px 8px; border-radius:14px; border:1.5px solid var(--line); background:var(--white);
  text-align:center; cursor:pointer; transition:all .15s ease;
}
.date-pill .dow, .date-pill .dom, .date-pill .mon{transition:color .15s ease;}
.date-pill .dow{display:block; font-size:12px; color:#4D6863; text-transform:uppercase; letter-spacing:.04em;}
.date-pill .dom{display:block; font-family:'Fraunces',serif; font-size:22px; color:var(--forest-dark); margin-top:4px;}
.date-pill .mon{display:block; font-size:11px; color:#4D6863;}
.date-pill:hover{border-color:var(--forest); transform:translateY(-1px);}
.date-pill.selected{background:var(--forest); border-color:var(--forest);}
.date-pill.selected .dow, .date-pill.selected .dom, .date-pill.selected .mon{color:var(--ink);}

/* Time slots */
.slot-section-label{font-size:13px; font-weight:700; text-transform:uppercase; letter-spacing:.05em; color:var(--forest-dark); margin:26px 0 12px;}
.slot-section-row{display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:10px; margin-top:26px;}
.jump-date{
  display:flex; align-items:center; gap:9px; padding:8px 14px 8px 12px; border-radius:100px;
  background:var(--sage-pale); border:1.5px solid var(--line); color:var(--forest-dark);
  transition:border-color .15s ease, background .15s ease, box-shadow .15s ease; cursor:pointer;
}
.jump-date:hover, .jump-date:focus-within{
  border-color:var(--forest); background:var(--white); box-shadow:0 0 0 3px rgba(120,215,240,0.5);
}
.jump-date svg{width:16px; height:16px; flex-shrink:0;}
.jump-date span{font-size:11.5px; font-weight:700; text-transform:uppercase; letter-spacing:.05em; white-space:nowrap;}
.jump-date input[type="date"]{
  border:none; background:transparent; padding:0; margin:0; font:inherit; font-size:13.5px; font-weight:700;
  color:var(--ink); cursor:pointer; min-width:0;
}
.jump-date input[type="date"]:focus{outline:none;}
.jump-date input[type="date"]::-webkit-calendar-picker-indicator{
  opacity:0.6; cursor:pointer; transition:opacity .15s ease;
  filter:invert(13%) sepia(77%) saturate(592%) hue-rotate(118deg) brightness(191%) contrast(79%);
}
.jump-date input[type="date"]::-webkit-calendar-picker-indicator:hover{opacity:1;}
.slot-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:10px;}
.slot-btn{
  padding:12px 10px; border-radius:12px; border:1.5px solid var(--line); background:var(--white);
  font-size:14px; font-weight:600; cursor:pointer; text-align:center;
  transition:background .15s ease, border-color .15s ease, color .15s ease, transform .1s ease;
}
.slot-btn:hover{border-color:var(--forest); transform:translateY(-1px);}
.slot-btn.selected{background:var(--forest); border-color:var(--forest); color:var(--ink);}
@media (max-width:560px){ .slot-grid{grid-template-columns:repeat(2,1fr);} }

/* Order summary card (sidebar) */
.summary-card{background:var(--sage-pale); border:1px solid var(--line); border-radius:22px; padding:30px;}
.summary-card h3{font-size:18px;}
.summary-row{display:flex; justify-content:space-between; gap:12px; padding:12px 0; border-bottom:1px solid var(--line); font-size:14.5px;}
.summary-row:last-of-type{border-bottom:none;}
.summary-row span:first-child{color:#4D6863;}
.summary-row span:last-child{font-weight:600; color:var(--forest-dark); text-align:right;}
.summary-total{display:flex; justify-content:space-between; align-items:baseline; margin-top:18px; padding-top:18px; border-top:2px solid var(--line);}
.summary-total b{font-family:'Fraunces',serif; font-size:30px; color:var(--forest-dark);}
.summary-edit{display:inline-block; margin-top:16px; font-size:13px; font-weight:700; color:var(--forest-dark);}
.summary-row.discount span:last-child{color:#1F8A5F;}
.summary-loading{color:#4D6863; font-size:13.5px; margin-top:2px;}

/* Manage-booking (self-serve cancellation) view */
.manage-card{max-width:520px; margin:0 auto; background:#fff; border:1px solid var(--line); border-radius:22px; padding:36px;}
.manage-status-msg{padding:40px 0; text-align:center; color:#4D6863;}
.manage-policy-note{margin-top:18px; padding:14px 16px; background:var(--sage-pale); border-radius:12px; font-size:13.5px; color:#4E6B65;}
.manage-policy-note.warn{background:#FBEFE4; color:#8A5A2A;}
.manage-cancelled-badge{display:inline-flex; align-items:center; gap:8px; font-weight:700; color:#B23B3B; margin-bottom:6px;}

/* Forms */
.form-grid{display:grid; grid-template-columns:1fr 1fr; gap:18px;}
.form-field{display:flex; flex-direction:column; gap:7px;}
.form-field.full{grid-column:1 / -1;}
.form-field label{font-size:13px; font-weight:700; color:var(--forest-dark);}
.form-field input, .form-field select, .form-field textarea{
  padding:13px 14px; border-radius:10px; border:1.5px solid var(--line); font-size:15px; font-family:inherit;
  background:var(--white); color:var(--ink); transition:border-color .15s ease, box-shadow .15s ease;
}
.form-field input:focus, .form-field select:focus, .form-field textarea:focus{outline:none; border-color:var(--forest); box-shadow:0 0 0 3px rgba(195,230,224,0.55);}
.form-field textarea{resize:vertical; min-height:80px;}
.form-field select{
  -webkit-appearance:none; -moz-appearance:none; appearance:none; cursor:pointer; line-height:17px;
  padding-right:44px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%2310243D' stroke-opacity='.55' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right 16px center; background-size:12px 8px;
}
.field-help{margin:2px 0 0; font-size:12.5px; line-height:1.5; color:#5C7F79;}
.field-help-secure{display:flex; align-items:flex-start; gap:7px;}
.field-help-secure svg{flex:none; margin-top:2px; color:var(--forest-dark);}
.field-optional{margin-left:6px; font-size:11px; font-weight:600; color:#6B8C86; background:rgba(14,127,163,0.08); padding:2px 7px; border-radius:99px; letter-spacing:.02em; vertical-align:1px;}
/* Booking summary follows the scroll on the Schedule, Confirm and Payment
   pages on desktop (like the homepage price box). On tablets/phones (900px
   and below) the layout is one column and the card stays in place. */
@media (min-width:901px){
  #view-schedule .summary-card, #view-confirm .summary-card, #view-payment .summary-card{
    position:sticky; top:96px;
  }
}
.form-field .field-error{font-size:12.5px; color:#B23B3B; display:none;}
.form-field.invalid input, .form-field.invalid select{border-color:#B23B3B;}
.form-field.invalid .field-error{display:block;}
.stripe-element-wrap{
  padding:13px 14px; border-radius:10px; border:1.5px solid var(--line); background:var(--white);
  transition:border-color .15s ease, box-shadow .15s ease;
}
.stripe-element-wrap.StripeElement--focus{border-color:var(--forest); box-shadow:0 0 0 3px rgba(195,230,224,0.55);}
.stripe-element-wrap.StripeElement--invalid{border-color:#B23B3B;}
#stripe-payment-errors{font-size:12.5px; color:#B23B3B; display:none; margin-top:2px;}
#stripe-payment-errors.show{display:block;}
@media (max-width:640px){ .form-grid{grid-template-columns:1fr;} }

.promo-box{margin-top:22px; padding:16px 18px; background:var(--sage-pale); border-radius:12px; border:1.5px dashed var(--line);}
.promo-box label{font-size:13px; font-weight:700; color:var(--forest-dark); display:block; margin-bottom:8px;}
.promo-row{display:flex; gap:10px;}
.promo-row input{
  flex:1; min-width:0; padding:12px 14px; border-radius:10px; border:1.5px solid var(--line); font-size:15px; font-family:inherit;
  background:var(--white); color:var(--ink); transition:border-color .15s ease, box-shadow .15s ease;
}
.promo-row input:focus{outline:none; border-color:var(--forest); box-shadow:0 0 0 3px rgba(195,230,224,0.55);}
.promo-row .btn{white-space:nowrap; padding:12px 20px;}
.promo-row .btn[disabled]{opacity:.6; pointer-events:none;}
.promo-status{display:block; min-height:16px; margin-top:9px; font-size:12.5px; font-weight:600;}
.promo-status.success{color:#1F8A5F;}
.promo-status.error{color:#B23B3B;}
@media (max-width:480px){ .promo-row{flex-direction:column;} }

.referral-share-card{margin-top:24px; text-align:left; background:var(--sage-pale); border:1.5px dashed var(--line); border-radius:16px; padding:22px 24px;}
.referral-share-card h4{font-family:'Fraunces',serif; font-size:16px; color:var(--forest-dark); margin:0 0 6px;}
.referral-share-card p{font-size:13.5px; color:#4D6863; margin:0 0 16px; line-height:1.5;}
.referral-code-row{display:flex; gap:10px; align-items:center; flex-wrap:wrap;}
.referral-code-pill{font-family:'Fraunces',serif; font-size:19px; font-weight:600; color:var(--forest-dark); background:var(--white); border:1.5px solid var(--forest); border-radius:10px; padding:9px 16px; letter-spacing:.02em;}
.referral-copy-btn{white-space:nowrap;}
@media (max-width:480px){ .referral-code-row{flex-direction:column; align-items:stretch;} .referral-code-pill{text-align:center;} }

.card-row{display:grid; grid-template-columns:1fr 1fr 1fr; gap:18px;}
@media (max-width:640px){ .card-row{grid-template-columns:1fr;} }

.consent-row{display:flex; align-items:flex-start; gap:10px; margin-top:22px; font-size:13.5px; color:#4D6863;}
.consent-row input{margin-top:3px;}

.booking-nav{display:flex; justify-content:space-between; align-items:center; margin-top:34px; gap:16px; flex-wrap:wrap;}
.security-note{display:flex; align-items:center; gap:8px; font-size:12.5px; color:#4D6863; margin-top:18px;}
.etransfer-note{margin-top:14px; padding:12px 14px; border:1px solid var(--line); border-radius:12px; background:#F6FBFA; font-size:13.5px; line-height:1.55; color:#1E4C44;}
.etransfer-note a{color:inherit; font-weight:700; text-underline-offset:2px; overflow-wrap:anywhere;}
.etransfer-note a[href^="tel:"]{white-space:nowrap;}

/* Checkout + confirmation on phones (375–768px): center the whole flow with
   a 16px gutter and let nothing push wider than the screen. Scoped to the
   confirm / payment / booked views only, so no other page changes. The
   summary card is never sticky here — it simply follows the form. */
#view-confirm .booking-layout, #view-payment .booking-layout, #view-booked .success-shell{width:100%; max-width:1120px; margin-left:auto; margin-right:auto;}
#view-confirm .booking-main, #view-payment .booking-main, #view-booked .booking-main,
#view-confirm .summary-card, #view-payment .summary-card, #view-booked .summary-card{min-width:0; max-width:100%; box-sizing:border-box; overflow-wrap:anywhere;}
@media (max-width:900px){
  #view-confirm .booking-layout, #view-payment .booking-layout{max-width:640px;}
  #view-confirm .summary-card, #view-payment .summary-card{position:static;}
}
@media (max-width:640px){
  #view-confirm .wrap, #view-payment .wrap, #view-booked .wrap{padding-left:16px; padding-right:16px;}
  #view-confirm .booking-shell, #view-payment .booking-shell, #view-booked .booking-shell{padding:28px 0 64px;}
  #view-confirm .stepper, #view-payment .stepper, #view-booked .stepper{justify-content:center; margin-bottom:24px;}
  #view-confirm .booking-main, #view-payment .booking-main, #view-booked .booking-main{padding:24px 18px; border-radius:18px;}
  #view-confirm .summary-card, #view-payment .summary-card, #view-booked .summary-card{padding:22px 18px; border-radius:18px;}
  #view-confirm .booking-layout, #view-payment .booking-layout{gap:20px;}
  #view-confirm .booking-nav, #view-payment .booking-nav{flex-direction:column-reverse; align-items:stretch; gap:12px; margin-top:26px;}
  #view-confirm .booking-nav .btn, #view-payment .booking-nav .btn{width:100%; justify-content:center; text-align:center; min-height:48px;}
  #view-booked .hero-cta{flex-direction:column; gap:14px;}
  #view-booked .hero-cta .btn{width:100%; max-width:320px; justify-content:center;}
  #view-booked .booking-title{font-size:30px;}
  .summary-row span:last-child{min-width:0;}
}
#view-confirm .summary-row span:first-child, #view-payment .summary-row span:first-child, #view-booked .summary-row span:first-child{flex:none; overflow-wrap:normal;}

/* ============ SERVICE DETAIL PAGE (big / maidless-style) ============ */
.svc-hero{padding:36px 0 60px; background:var(--sage-pale); border-bottom:1px solid var(--line);}
.svc-hero-grid{display:grid; grid-template-columns:1.1fr 1fr; gap:52px; align-items:center;}
.svc-hero-copy .tag{margin-top:14px;}
.svc-hero-caption{margin-top:12px; font-size:13px; color:#4D6863;}
.svc-hero-art{position:relative;}
.svc-hero-art img{width:100%; height:auto; aspect-ratio:6/4.7; object-fit:cover; border-radius:24px; border:1px solid var(--line); box-shadow:0 24px 60px -30px rgba(13,38,32,0.35);}
.svc-price-float{
  position:absolute; left:24px; bottom:-22px; background:var(--white); border:1px solid var(--line); border-radius:16px;
  padding:14px 20px; box-shadow:0 12px 30px -14px rgba(13,38,32,0.3); display:flex; flex-direction:column; line-height:1.3;
}
.svc-price-float span{font-size:11.5px; text-transform:uppercase; letter-spacing:.04em; color:#4D6863;}
.svc-price-float b{font-family:'Fraunces',serif; font-size:26px; color:var(--forest-dark);}
.svc-price-float em{font-style:normal; font-size:11.5px; color:#4D6863;}
@media (max-width:900px){ .svc-hero-grid{grid-template-columns:1fr;} .svc-hero-art{order:-1;} .svc-price-float{position:static; margin-top:16px; width:fit-content;} }

/* Service detail page: a wide "what's included" column next to a sticky
   sidebar (trust list + price/CTA card) — modelled on the two-card sidebar
   layout from maidless.ca's service pages, in Good Maid's own palette. */
.svc-detail-grid{display:grid; grid-template-columns:1.6fr 1fr; gap:44px; align-items:start;}
.svc-detail-main h2{font-size:clamp(22px,2.4vw,28px);}
.svc-detail-desc{margin-top:12px; font-size:15.5px; color:#4A726B; line-height:1.75; max-width:62ch;}
.svc-detail-main .includes-list{margin-top:28px; max-width:62ch;}
.svc-not-included{margin-top:26px; padding:16px 20px; background:var(--cream); border:1px solid var(--line); border-radius:14px; max-width:62ch;}
.svc-not-included b{display:block; font-size:11.5px; text-transform:uppercase; letter-spacing:.05em; color:#4D5C68; margin-bottom:6px;}
.svc-not-included p{font-size:14px; color:#4A726B; margin:0; line-height:1.6;}
.svc-addon-note{margin-top:18px; font-size:13px; color:#4D6863; font-style:italic;}
.svc-addon-note a{color:var(--forest-dark); font-weight:700; text-decoration:underline; font-style:normal;}

.svc-detail-side{position:sticky; top:20px; display:grid; gap:20px;}
.svc-trust-card{background:var(--white); border:1px solid var(--line); border-radius:20px; padding:24px 24px 10px; box-shadow:0 18px 40px -30px rgba(16,36,61,.35);}
.svc-trust-card h3{margin:0; font-family:'Work Sans',sans-serif; font-size:12.5px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--forest-dark);}
.svc-trust-list{list-style:none; margin:14px 0 0; padding:0; display:grid; gap:0;}
.svc-trust-list li{display:grid; grid-template-columns:36px 1fr; gap:12px; align-items:center; padding:12px 0; border-top:1px solid var(--line);}
.svc-trust-list li:first-child{border-top:0; padding-top:4px;}
.svc-trust-ic{width:36px; height:36px; border-radius:10px; background:var(--sage-pale); color:var(--forest-dark); display:flex; align-items:center; justify-content:center;}
.svc-trust-ic svg{width:18px; height:18px;}
.svc-trust-t{display:block; font-size:14px; font-weight:700; line-height:1.3; color:var(--ink);}
.svc-trust-d{display:block; margin-top:2px; font-size:12.5px; line-height:1.4; color:#4D6863;}
.svc-trust-icon{width:30px; height:30px; border-radius:9px; background:var(--white); display:flex; align-items:center; justify-content:center; font-size:14px; flex-shrink:0;}
.svc-price-card{background:var(--white); border:1.5px solid var(--forest-dark); border-radius:20px; padding:28px;}
.svc-price-card-label{font-size:11.5px; text-transform:uppercase; letter-spacing:.05em; color:#4D5C68;}
.svc-price-card-amount{font-family:'Fraunces',serif; font-size:32px; color:var(--forest-dark); margin-top:4px;}
.svc-price-card-amount span{font-size:12.5px; font-weight:400; color:#4D5C68; margin-left:3px;}
.svc-price-card p{margin-top:10px; font-size:13px; color:#4D5C68; line-height:1.6;}
.svc-price-card .btn{margin-top:16px; width:100%; justify-content:center;}
@media (max-width:900px){ .svc-detail-grid{grid-template-columns:1fr;} .svc-detail-side{position:static;} }

/* ============ CAREERS ============ */
.job-list{display:grid; gap:14px; margin-top:14px;}
.job-row{
  display:flex; justify-content:space-between; align-items:center; gap:24px; flex-wrap:wrap;
  background:var(--white); border:1px solid var(--line); border-radius:18px; padding:24px 28px;
  transition:border-color .15s ease, box-shadow .15s ease;
}
.job-row:hover{border-color:var(--forest); box-shadow:0 12px 26px -18px rgba(13,38,32,0.3);}
.job-row h3{font-size:18px;}
.job-meta{display:flex; gap:16px; flex-wrap:wrap; margin-top:8px; font-size:13.5px; color:#4D6863;}
.job-meta span:not(:last-child)::after{content:"·"; margin-left:16px; color:var(--line);}

/* ============ PHASE 3: What to Expect + FAQ pages ============ */
.pg-hero{padding:56px 0 20px;}
.pg-narrow{max-width:820px; margin-left:auto; margin-right:auto;}
.pg-hero h1{font-size:clamp(32px,4.4vw,48px); line-height:1.12; margin-top:6px;}
.pg-lead{margin-top:16px; font-size:17.5px; line-height:1.65; color:#4A6072; max-width:640px;}
.pg-section{padding:28px 0 56px;}
.pg-section.pg-tight{padding:8px 0 16px;}
.pg-link{color:var(--forest-dark); font-weight:700; text-decoration:underline; text-underline-offset:3px;}
.quick-answers{background:var(--white); border:1px solid var(--line); border-radius:22px; padding:26px 28px; box-shadow:0 18px 40px -30px rgba(13,38,32,0.35);}
.quick-answers h2{font-size:22px; margin-bottom:14px;}
.quick-answers dl{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px 28px; margin:0;}
.quick-answers dt{font-weight:700; color:var(--forest-dark); font-size:14.5px;}
.quick-answers dd{margin:4px 0 0; font-size:14.5px; color:#4A6072; line-height:1.55;}
.quick-answers a{color:var(--forest-dark); font-weight:600; text-decoration:underline;}
.steps-list{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:14px;}
.steps-list > li{display:grid; grid-template-columns:44px minmax(0,1fr); gap:18px; background:var(--white); border:1px solid var(--line); border-radius:20px; padding:26px 28px; scroll-margin-top:110px;}
.step-num{width:44px; height:44px; border-radius:14px; background:var(--forest); color:var(--ink); font-weight:700; font-size:18px; display:flex; align-items:center; justify-content:center;}
.steps-list h2{font-size:22px; margin:6px 0 10px;}
.steps-list p{font-size:15.5px; line-height:1.7; color:#3F5C56; margin:0 0 10px;}
.steps-list ul{margin:4px 0 10px; padding-left:20px;}
.steps-list li li{font-size:15px; line-height:1.65; color:#3F5C56; margin-bottom:6px;}
.dur-estimator{margin-top:14px; background:var(--sage-pale); border:1px solid var(--line); border-radius:16px; padding:18px;}
.dur-title{font-weight:700; color:var(--forest-dark); margin-bottom:12px;}
.dur-grid{display:grid; grid-template-columns:repeat(auto-fit,minmax(140px,1fr)); gap:10px;}
.dur-grid label{display:flex; flex-direction:column; gap:6px; font-size:12.5px; font-weight:700; color:var(--forest-dark);}
.dur-grid select{min-height:44px; padding:10px 12px; border-radius:10px; border:1.5px solid var(--line); background:var(--white); font:inherit; font-weight:500; color:var(--ink);}
.dur-result{display:flex; justify-content:space-between; align-items:baseline; gap:12px; margin-top:14px; padding-top:14px; border-top:1px solid var(--line);}
.dur-result span{color:#4A6072; font-size:14px;}
.dur-result b{font-family:'Fraunces',serif; font-size:28px; color:var(--forest-dark);}
.dur-note{font-size:13px !important; color:#4D6863 !important; margin:10px 0 0 !important;}
.pg-cta-band{background:var(--sage-pale); border-top:1px solid var(--line);}
.pg-cta-band h2{font-size:clamp(26px,3.4vw,36px);}
.pg-cta-band p{margin-top:10px; color:#4A6072;}
.faqp-jump{display:flex; flex-wrap:wrap; gap:8px; margin-top:22px;}
.faqp-jump a{padding:9px 16px; border-radius:100px; border:1.5px solid var(--line); background:var(--white); font-size:13.5px; font-weight:600; color:var(--ink); transition:border-color .15s ease, background .15s ease;}
.faqp-jump a:hover{border-color:var(--forest); background:var(--sage-pale);}
.faqp-cat{scroll-margin-top:110px; margin-bottom:38px;}
.faqp-cat > h2{font-size:24px; margin-bottom:14px;}
.faqp-list{display:flex; flex-direction:column; gap:10px;}
.faqp-list details{padding:18px 22px;}
.faqp-list details summary{font-size:17px;}
.faqp-list details p a{color:var(--forest-dark); font-weight:600; text-decoration:underline;}
.faqp-still{text-align:center; background:var(--white); border:1px solid var(--line); border-radius:22px; padding:34px 24px; margin-top:12px;}
.faqp-still h2{font-size:clamp(24px,3vw,32px);}
.faqp-still p{margin-top:8px; color:#4A6072;}
.faqp-phone{font-size:14px;}
.faqp-phone a{color:var(--forest-dark); font-weight:700;}
@media (max-width:640px){
  .pg-hero{padding:32px 0 12px;}
  .pg-hero .wrap, .pg-section .wrap{padding-left:16px; padding-right:16px;}
  .quick-answers{padding:20px 18px;}
  .quick-answers dl{grid-template-columns:1fr;}
  .steps-list > li{grid-template-columns:1fr; gap:10px; padding:20px 18px;}
  .step-num{width:38px; height:38px; font-size:16px;}
  .faqp-list details{padding:16px 16px;}
  .faqp-list details summary{font-size:16px;}
  .pg-cta-band .hero-cta, .faqp-still .hero-cta{flex-direction:column; align-items:stretch; gap:12px;}
  .pg-cta-band .hero-cta .btn, .faqp-still .hero-cta .btn{justify-content:center;}
}

/* Success page */
.success-shell{text-align:center; max-width:560px; margin:0 auto;}
.success-badge{
  width:74px; height:74px; border-radius:50%; background:var(--forest); color:var(--ink);
  display:flex; align-items:center; justify-content:center; font-size:34px; margin:0 auto 24px;
}
.success-ref{display:inline-block; margin-top:6px; font-size:13.5px; color:#4D6863; background:var(--sage-pale); padding:6px 14px; border-radius:100px;}

.mock-note{
  margin-top:22px; padding:14px 18px; background:var(--sage-pale); border:1px dashed #A9ECE0; border-radius:12px;
  font-size:13px; color:#4A726B; text-align:left;
}

/* Recurring: "I'll pick my own dates" rows */
.custom-date-card{
  background:var(--white); border:1px solid var(--line); border-radius:16px; padding:16px 18px;
  display:flex; align-items:flex-end; gap:14px; margin-bottom:12px; flex-wrap:wrap;
}
.custom-date-card .cdc-num{
  width:28px; height:28px; border-radius:50%; background:var(--sage-pale); color:var(--forest-dark);
  font-size:13px; font-weight:700; display:flex; align-items:center; justify-content:center; flex:none; margin-bottom:13px;
}
.custom-date-card .cdc-field{display:flex; flex-direction:column; gap:7px; flex:1 1 160px;}
.custom-date-card .cdc-field label{font-size:12px; font-weight:700; color:var(--forest-dark); text-transform:uppercase; letter-spacing:.03em;}
.custom-date-card input[type="date"], .custom-date-card select{
  padding:12px 14px; border-radius:10px; border:1.5px solid var(--line); font-size:14.5px; font-family:inherit;
  background:var(--white); color:var(--ink); transition:border-color .15s ease, box-shadow .15s ease; width:100%; box-sizing:border-box;
}
.custom-date-card input[type="date"]:focus, .custom-date-card select:focus{outline:none; border-color:var(--forest); box-shadow:0 0 0 3px rgba(195,230,224,0.55);}
.custom-date-card .cdc-remove{
  width:38px; height:38px; border-radius:10px; border:1.5px solid var(--line); background:var(--white);
  color:#4D6863; font-size:15px; cursor:pointer; flex:none; display:flex; align-items:center; justify-content:center;
  transition:border-color .15s ease, color .15s ease;
}
.custom-date-card .cdc-remove:hover{border-color:#B23B3B; color:#B23B3B;}

/* Slot capacity states (schedule.html) */
.slot-btn.loading{opacity:0.45; pointer-events:none;}
.slot-btn.full{
  opacity:0.45; cursor:not-allowed; pointer-events:none; position:relative;
  background:var(--cream); text-decoration:line-through; text-decoration-color:#B4CECA;
}
.slot-empty{
  grid-column:1 / -1; padding:20px; text-align:center; font-size:13.5px; color:#4D6863;
  background:var(--cream); border:1px dashed var(--line); border-radius:12px;
}

/* ============ MONTH CALENDAR PICKER ============ */
.cal-card{
  background:var(--white); border:1px solid var(--line); border-radius:20px; padding:22px; max-width:420px;
}
.cal-header{display:flex; align-items:center; justify-content:space-between; margin-bottom:16px;}
.cal-header b{font-family:'Fraunces',serif; font-size:17px; font-weight:600; color:var(--forest-dark);}
.cal-nav-btn{
  width:32px; height:32px; border-radius:50%; border:1px solid var(--line); background:var(--white);
  color:var(--forest-dark); font-size:18px; line-height:1; cursor:pointer; display:flex; align-items:center; justify-content:center;
  transition:border-color .15s ease, background .15s ease;
}
.cal-nav-btn:hover:not(:disabled){border-color:var(--forest); background:var(--sage-pale);}
.cal-nav-btn:disabled{opacity:0.3; cursor:not-allowed;}
.cal-dow-row{display:grid; grid-template-columns:repeat(7,1fr); gap:4px; margin-bottom:4px;}
.cal-dow-row span{text-align:center; font-size:11px; font-weight:700; color:#4D6863; text-transform:uppercase;}
.cal-grid{display:grid; grid-template-columns:repeat(7,1fr); gap:4px;}
.cal-day{
  position:relative; aspect-ratio:1; display:flex; align-items:center; justify-content:center;
  border-radius:10px; font-size:14px; font-weight:600; color:var(--ink); cursor:pointer;
  border:1.5px solid transparent; transition:background .15s ease, border-color .15s ease, color .15s ease;
}
.cal-day:hover:not(.disabled):not(.other-month){border-color:var(--forest);}
.cal-day.selected{background:var(--forest); border-color:var(--forest);}
.cal-day.disabled{opacity:0.3; cursor:not-allowed;}
.cal-day.other-month{visibility:hidden; cursor:default;}
.cal-day.today:not(.selected)::after{
  content:''; position:absolute; bottom:4px; left:50%; transform:translateX(-50%);
  width:4px; height:4px; border-radius:50%; background:var(--forest);
}

/* Times below the calendar — always bookable in the new model, so this is
   the plain default .slot-btn look (no full/loading states used here). */
.cal-times-label{font-size:13px; font-weight:700; text-transform:uppercase; letter-spacing:.05em; color:var(--forest-dark); margin:22px 0 12px;}
.slot-group{margin-bottom:18px;}
.slot-group:last-child{margin-bottom:0;}
.slot-group-label{font-size:12.5px; font-weight:600; color:#4D6863; margin-bottom:8px;}

.about-mission-grid{display:grid; grid-template-columns:1.1fr 0.9fr; gap:40px; align-items:center; text-align:left;}
@media (max-width:760px){ .about-mission-grid{grid-template-columns:1fr; text-align:center;} .about-mission-grid .booking-nav{justify-content:center;} }


.svc-hero-art .svc-secondary-photo{
  position:absolute; right:-18px; bottom:-28px; width:150px; height:auto; aspect-ratio:6/4.6; object-fit:cover;
  border-radius:16px; border:3px solid var(--white); box-shadow:0 16px 34px -14px rgba(13,38,32,0.4);
}
@media (max-width:900px){ .svc-hero-art .svc-secondary-photo{display:none;} }

.svc-insight{background:var(--forest-dark); color:#F8FFFB; padding:72px 0;}
.svc-insight-grid{display:grid; grid-template-columns:1.1fr 1fr; gap:56px; align-items:start;}
.svc-insight-main .eyebrow-plain{color:#F8FFFB;}
.svc-insight-main h2{color:var(--white); font-size:clamp(24px,2.6vw,32px); margin-top:10px; text-wrap:balance;}
.svc-insight-main p{margin-top:16px; font-size:15.5px; line-height:1.8; color:#F8FFFB; max-width:52ch;}
.svc-insight-points{list-style:none; margin:0; padding:0; display:grid; gap:16px;}
.svc-insight-points li{padding:20px 22px; background:rgba(255,255,255,0.06); border:1px solid rgba(255,255,255,0.12); border-radius:14px;}
.svc-insight-points b{display:block; font-size:14.5px; color:var(--white); margin-bottom:6px;}
.svc-insight-points span{display:block; font-size:13.5px; color:#F8FFFB; line-height:1.6;}
@media (max-width:900px){ .svc-insight-grid{grid-template-columns:1fr;} }
.every-clean-card{background:var(--white); padding:28px 26px;}
.every-clean-icon{width:42px; height:42px; border-radius:10px; background:var(--sage-pale); display:flex; align-items:center; justify-content:center; margin-bottom:16px; font-size:19px;}
.every-clean-card h4{font-size:16.5px;}
.every-clean-card p{margin-top:8px; font-size:14px; color:#4A726B; line-height:1.55;}
@media (max-width:900px){ .every-clean-grid{grid-template-columns:1fr 1fr;} }
@media (max-width:620px){ .every-clean-grid{grid-template-columns:1fr;} }

/* ==========================================================================
   Info pages — How It Works, What to Expect, FAQ (prefix gx-)
   One small design system shared by the three pages: calm cream canvas,
   big confident Fraunces headlines, white cards with soft depth, numbered
   processes, and one clear CTA per screen.
   ========================================================================== */
.gx-page{--gx-muted:#4A6072; --gx-faint:#6B8193; --gx-card:#FFFFFF; --gx-r:24px; --gx-shadow:0 30px 60px -40px rgba(16,36,61,.38); --gx-shadow-sm:0 14px 30px -24px rgba(16,36,61,.35);}

.gx-sec{padding:72px 0;}
.gx-page nav{padding:0;}
.gx-page .gx-faq-side nav{display:flex; flex-direction:column; align-items:stretch; justify-content:flex-start;}
.gx-page .gx-cats, .gx-page .gx-journey-nav{align-items:center;}
.gx-sec-tight{padding:40px 0;}
.gx-sec-alt{background:var(--white); border-top:1px solid var(--line); border-bottom:1px solid var(--line);}
.gx-center{text-align:center;}
.gx-eyebrow{display:inline-flex; align-items:center; gap:8px; padding:7px 14px; border-radius:100px; background:var(--white); border:1px solid var(--line); font-size:12px; font-weight:700; letter-spacing:.14em; text-transform:uppercase; color:var(--forest-dark);}
.gx-eyebrow::before{content:""; width:7px; height:7px; border-radius:50%; background:var(--forest); box-shadow:0 0 0 3px var(--sage-pale);}
.gx-h1{font-size:clamp(40px,6.2vw,72px); line-height:1.02; letter-spacing:-0.025em; margin-top:18px; color:var(--ink); text-wrap:balance;}
.gx-h1 em, .gx-h2 em{font-style:italic; color:var(--forest-dark); font-weight:500;}
.gx-h2{font-size:clamp(30px,4vw,46px); line-height:1.08; letter-spacing:-0.02em; color:var(--ink); text-wrap:balance;}
.gx-lead{margin-top:18px; font-size:clamp(17px,1.7vw,20px); line-height:1.6; color:var(--gx-muted); max-width:620px;}
.gx-center .gx-lead{margin-left:auto; margin-right:auto;}
.gx-sub{margin-top:14px; font-size:16.5px; line-height:1.65; color:var(--gx-muted); max-width:620px;}
.gx-center .gx-sub{margin-left:auto; margin-right:auto;}
.gx-head{margin-bottom:44px;}
.gx-crumb{font-size:13.5px; color:#4D6863; margin-bottom:22px;}
.gx-crumb a{color:var(--forest-dark); font-weight:600;}
.gx-crumb a:hover{opacity:.7;}
.gx-cta-row{display:flex; flex-wrap:wrap; align-items:center; gap:14px; margin-top:30px;}
.gx-center .gx-cta-row{justify-content:center;}
.gx-btn-xl{padding:18px 30px; font-size:16px; box-shadow:0 18px 34px -18px rgba(14,127,163,.6);}
.gx-btn-xl .gx-arrow{transition:transform .18s ease;}
.gx-btn-xl:hover .gx-arrow{transform:translateX(3px);}
.gx-reassure{display:flex; flex-wrap:wrap; justify-content:center; gap:8px 22px; margin-top:18px; font-size:13.5px; color:var(--gx-faint);}
.gx-reassure span{display:inline-flex; align-items:center; gap:7px;}
.gx-reassure svg{color:var(--forest-dark); flex:none;}
.gx-hero{padding:64px 0 36px;}
.gx-ic{width:22px; height:22px; flex:none;}

/* ---------- How It Works: connected 3-step process ---------- */
.gx-steps{list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:26px; position:relative;}
.gx-steps::before{content:""; position:absolute; top:34px; left:calc(100%/6); right:calc(100%/6); height:0; border-top:2px dashed color-mix(in srgb, var(--forest) 60%, transparent); z-index:0;}
.gx-step{position:relative; z-index:1; display:flex; flex-direction:column; align-items:center; text-align:center;}
.gx-step-num{width:68px; height:68px; border-radius:22px; display:flex; align-items:center; justify-content:center; background:var(--forest-dark); color:#fff; font-family:'Fraunces',Georgia,serif; font-weight:600; font-size:24px; letter-spacing:.02em; box-shadow:0 0 0 10px var(--cream), 0 16px 30px -12px rgba(14,127,163,.55);}
.gx-step-card{margin-top:26px; width:100%; flex:1; background:var(--gx-card); border:1px solid var(--line); border-radius:var(--gx-r); padding:28px 26px 26px; box-shadow:var(--gx-shadow); display:flex; flex-direction:column; transition:transform .2s ease, box-shadow .2s ease;}
.gx-step-card:hover{transform:translateY(-3px); box-shadow:0 36px 64px -40px rgba(16,36,61,.45);}
.gx-step-card h2{font-size:clamp(22px,2.2vw,26px); color:var(--ink); line-height:1.15;}
.gx-step-card p{margin-top:10px; font-size:15.5px; line-height:1.6; color:var(--gx-muted);}
.gx-mock{margin-top:22px; background:var(--cream); border:1px solid var(--line); border-radius:16px; padding:14px; text-align:left; font-size:13px;}
.gx-mock-row{display:flex; justify-content:space-between; gap:10px; padding:6px 2px; color:var(--gx-muted);}
.gx-mock-row b{color:var(--ink); font-weight:600;}
.gx-mock-price{display:flex; justify-content:space-between; align-items:baseline; margin-top:6px; padding-top:10px; border-top:1px dashed var(--line);}
.gx-mock-price span{font-weight:600; color:var(--ink);}
.gx-mock-price b{font-family:'Fraunces',Georgia,serif; font-size:28px; color:var(--forest-dark);}
.gx-chips{display:flex; flex-wrap:wrap; gap:7px;}
.gx-chip{padding:8px 11px; border-radius:10px; background:#fff; border:1px solid var(--line); font-weight:600; color:var(--ink); font-size:12.5px;}
.gx-chip.on{background:var(--forest-dark); border-color:var(--forest-dark); color:#fff;}
.gx-mock-cal{display:flex; justify-content:space-between; align-items:center; margin-bottom:10px; font-weight:700; color:var(--ink);}
.gx-mock-cal span{font-weight:500; color:var(--gx-faint); font-size:12px;}
.gx-arrival{display:flex; align-items:center; gap:12px;}
.gx-arrival-av{width:42px; height:42px; border-radius:50%; background:linear-gradient(150deg,var(--forest),var(--forest-dark)); color:#fff; display:flex; align-items:center; justify-content:center; font-weight:700; flex:none;}
.gx-arrival b{display:block; color:var(--ink); font-size:14px;}
.gx-arrival small{color:var(--gx-faint); font-size:12px;}
.gx-arrival-tags{display:flex; flex-wrap:wrap; gap:6px; margin-top:12px;}
.gx-tag{display:inline-flex; align-items:center; gap:5px; padding:5px 9px; border-radius:100px; background:#E6F7EF; color:#1F7A55; font-size:11.5px; font-weight:700;}

/* ---------- Trust strip ---------- */
.gx-trust{display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:18px;}
.gx-trust-item{background:var(--gx-card); border:1px solid var(--line); border-radius:20px; padding:22px 20px; display:flex; flex-direction:column; gap:12px; box-shadow:var(--gx-shadow-sm);}
.gx-trust-ic{flex:none; width:46px; height:46px; border-radius:14px; background:var(--sage-pale); color:var(--forest-dark); display:flex; align-items:center; justify-content:center;}
.gx-trust-item h3{font-size:18px; color:var(--ink);}
.gx-trust-item p{margin-top:6px; font-size:14px; line-height:1.55; color:var(--gx-muted);}

/* ---------- Closing CTA band ---------- */
.gx-band{position:relative; overflow:hidden; background:linear-gradient(150deg, var(--forest-dark), #0A5F7D); border-radius:32px; padding:64px 40px; text-align:center; color:#fff; box-shadow:0 40px 80px -50px rgba(10,95,125,.8);}
.gx-band::before, .gx-band::after{content:""; position:absolute; border-radius:50%; background:rgba(255,255,255,.07); pointer-events:none;}
.gx-band::before{width:420px; height:420px; top:-220px; right:-120px;}
.gx-band::after{width:300px; height:300px; bottom:-180px; left:-80px;}
.gx-band > *{position:relative; z-index:1;}
.gx-band h2{color:#fff; font-size:clamp(30px,4.2vw,48px); letter-spacing:-0.02em; text-wrap:balance;}
.gx-band p{margin:14px auto 0; max-width:560px; color:rgba(255,255,255,.86); font-size:17px; line-height:1.6;}
.gx-band .btn-light{color:var(--forest-dark); font-weight:700;}
.gx-band .gx-reassure{color:rgba(255,255,255,.8);}
.gx-band .gx-reassure svg{color:#fff;}
.gx-band a.gx-tel{color:#fff; font-weight:600; text-decoration:underline; text-underline-offset:3px;}

/* ---------- What to Expect ---------- */
.gx-split{display:grid; grid-template-columns:minmax(0,1.05fr) minmax(0,1fr); gap:56px; align-items:center;}
.gx-hero-media{position:relative;}
.gx-hero-media img{width:100%; aspect-ratio:5/4; object-fit:cover; border-radius:28px; box-shadow:0 40px 80px -46px rgba(16,36,61,.55); background:var(--sage-pale);}
.gx-float{position:absolute; background:#fff; border:1px solid var(--line); border-radius:16px; padding:12px 14px; box-shadow:0 20px 40px -24px rgba(16,36,61,.45); display:flex; align-items:center; gap:10px; font-size:13.5px;}
.gx-float b{display:block; color:var(--ink); font-size:14px;}
.gx-float small{color:var(--gx-faint); font-size:12px;}
.gx-float-a{left:-22px; bottom:28px;}
.gx-float-b{right:-16px; top:26px;}
.gx-float-ic{width:36px; height:36px; border-radius:12px; background:#E6F7EF; color:#1F7A55; display:flex; align-items:center; justify-content:center; flex:none;}
.gx-facts{display:flex; flex-wrap:wrap; gap:10px; margin-top:26px;}
.gx-fact{display:inline-flex; align-items:center; gap:8px; padding:9px 14px; border-radius:100px; background:#fff; border:1px solid var(--line); font-size:13.5px; font-weight:600; color:var(--ink);}
.gx-fact svg{color:var(--forest-dark);}

.gx-journey-nav{display:flex; justify-content:center; gap:10px; flex-wrap:wrap; margin-bottom:40px;}
.gx-journey-nav a{display:inline-flex; align-items:center; gap:9px; padding:10px 16px; border-radius:100px; background:#fff; border:1px solid var(--line); font-weight:600; font-size:14px; color:var(--ink); transition:border-color .15s ease, background .15s ease;}
.gx-journey-nav a:hover{border-color:var(--forest); background:var(--sage-pale);}
.gx-journey-nav a span{font-family:'Fraunces',Georgia,serif; color:var(--forest-dark); font-weight:600;}
.gx-timeline{list-style:none; margin:0; padding:0; position:relative; display:flex; flex-direction:column; gap:28px;}
.gx-timeline::before{content:""; position:absolute; left:33px; top:34px; bottom:34px; width:2px; background:linear-gradient(to bottom, var(--forest), color-mix(in srgb, var(--forest) 25%, transparent));}
.gx-stage{display:grid; grid-template-columns:68px minmax(0,1fr); gap:26px; scroll-margin-top:120px;}
.gx-stage-num{position:relative; z-index:1; width:68px; height:68px; border-radius:22px; background:var(--forest-dark); color:#fff; display:flex; align-items:center; justify-content:center; font-family:'Fraunces',Georgia,serif; font-weight:600; font-size:24px; box-shadow:0 0 0 10px var(--cream), 0 16px 30px -12px rgba(14,127,163,.55);}
.gx-stage-card{background:var(--gx-card); border:1px solid var(--line); border-radius:var(--gx-r); box-shadow:var(--gx-shadow); display:grid; grid-template-columns:minmax(0,1.35fr) minmax(0,1fr); overflow:hidden;}
.gx-stage-body{padding:32px 32px 30px;}
.gx-kicker{display:inline-block; font-size:12px; font-weight:800; letter-spacing:.16em; text-transform:uppercase; color:var(--forest-dark); background:var(--sage-pale); padding:5px 10px; border-radius:8px;}
.gx-stage-body h2{margin-top:12px; font-size:clamp(26px,2.8vw,34px); color:var(--ink); letter-spacing:-0.015em;}
.gx-stage-body > p{margin-top:8px; font-size:16px; line-height:1.6; color:var(--gx-muted);}
.gx-checks{list-style:none; margin:20px 0 0; padding:0; display:flex; flex-direction:column; gap:14px;}
.gx-checks li{display:grid; grid-template-columns:34px minmax(0,1fr); gap:12px; align-items:start;}
.gx-check-ic{width:34px; height:34px; border-radius:11px; background:var(--sage-pale); color:var(--forest-dark); display:flex; align-items:center; justify-content:center;}
.gx-checks b{display:block; color:var(--ink); font-size:15.5px; font-weight:600;}
.gx-checks li > div > span{display:block; margin-top:2px; font-size:14.5px; line-height:1.55; color:var(--gx-muted);}
.gx-checks a{color:var(--forest-dark); font-weight:600; text-decoration:underline; text-underline-offset:3px;}
.gx-tip{margin-top:22px; display:flex; gap:10px; align-items:flex-start; background:#FFF8E6; border:1px solid #F4E2B0; border-radius:14px; padding:12px 14px; font-size:14px; line-height:1.55; color:#5B4A1E;}
.gx-tip b{flex:none; font-size:11.5px; letter-spacing:.12em; text-transform:uppercase; background:#F6D77A; color:#4A3A0C; padding:3px 8px; border-radius:6px; margin-top:1px;}
.gx-stage-media{position:relative; min-height:260px; background:var(--sage-pale);}
.gx-stage-media img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover;}

.gx-dur{display:grid; grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr); gap:48px; align-items:start;}
.gx-dur-note{margin-top:18px; display:flex; flex-direction:column; gap:10px;}
.gx-dur-note div{display:flex; gap:10px; font-size:14.5px; color:var(--gx-muted); line-height:1.55;}
.gx-dur-note svg{color:var(--forest-dark); flex:none; margin-top:2px;}
.gx-table-card{background:var(--gx-card); border:1px solid var(--line); border-radius:var(--gx-r); box-shadow:var(--gx-shadow); overflow:hidden;}
.gx-table-scroll{overflow-x:auto;}
.gx-table{width:100%; border-collapse:collapse; font-size:14.5px; min-width:460px;}
.gx-table th, .gx-table td{padding:14px 18px; text-align:left; border-bottom:1px solid var(--line);}
.gx-table thead th{background:var(--cream); font-size:12px; letter-spacing:.1em; text-transform:uppercase; color:var(--gx-faint); font-weight:700;}
.gx-table tbody th{font-weight:600; color:var(--ink);}
.gx-table tbody th small{display:block; font-weight:500; color:var(--gx-faint); font-size:12.5px; margin-top:2px;}
.gx-table td{font-variant-numeric:tabular-nums; color:var(--ink); font-weight:600; white-space:nowrap;}
.gx-table tbody tr:last-child th, .gx-table tbody tr:last-child td{border-bottom:none;}
.gx-table-foot{padding:12px 18px; font-size:13px; color:var(--gx-faint); background:var(--cream); border-top:1px solid var(--line);}
.gx-estimator{margin-top:18px;}
.gx-estimator summary{list-style:none;}
.gx-page details.gx-estimator{border:1px solid var(--line); border-radius:18px; background:#fff; padding:0; box-shadow:none;}
.gx-page details.gx-estimator summary{padding:16px 20px; font-family:'Work Sans',sans-serif; font-size:15px; font-weight:700; color:var(--forest-dark);}
.gx-page details.gx-estimator .dur-estimator{margin:0 16px 16px;}

.gx-notinc{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px;}
.gx-notinc-item{display:grid; grid-template-columns:44px minmax(0,1fr); gap:14px; background:var(--gx-card); border:1px solid var(--line); border-radius:20px; padding:20px;}
.gx-notinc-ic{flex:none; width:44px; height:44px; border-radius:14px; background:#FDF1EC; color:#B4583A; display:flex; align-items:center; justify-content:center;}
.gx-notinc-item b{display:block; color:var(--ink); font-size:16px;}
.gx-notinc-item > div > span{display:block; margin-top:4px; font-size:14.5px; line-height:1.55; color:var(--gx-muted);}
.gx-notinc-foot{margin-top:18px; text-align:center; font-size:15px; color:var(--gx-muted);}
.gx-notinc-foot a{color:var(--forest-dark); font-weight:700; text-decoration:underline; text-underline-offset:3px;}

.gx-proof{display:grid; grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) minmax(0,1fr); grid-template-rows:auto auto; gap:16px;}
.gx-proof figure{margin:0; position:relative; border-radius:22px; overflow:hidden; background:var(--sage-pale); min-height:220px;}
.gx-proof figure img{width:100%; height:100%; object-fit:cover; position:absolute; inset:0;}
.gx-proof figure.big{grid-row:span 2; min-height:460px;}
.gx-proof figcaption{position:absolute; left:12px; bottom:12px; background:rgba(255,255,255,.94); color:var(--ink); font-size:12.5px; font-weight:700; padding:6px 10px; border-radius:100px;}
.gx-promise{grid-column:span 2; background:var(--gx-card); border:1px solid var(--line); border-radius:22px; padding:28px; display:flex; flex-direction:column; justify-content:center; box-shadow:var(--gx-shadow-sm);}
.gx-promise-mark{font-family:'Fraunces',Georgia,serif; font-size:56px; line-height:.6; color:var(--forest);}
.gx-promise blockquote{margin:14px 0 0; font-family:'Fraunces',Georgia,serif; font-size:clamp(20px,2.2vw,26px); line-height:1.3; color:var(--ink);}
.gx-promise-by{margin-top:14px; font-size:14px; color:var(--gx-faint);}
.gx-promise-by b{color:var(--ink);}
.gx-reviews{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; margin-top:16px;}
/* Live Google reviews bring their own 3-column .grev-track, so the wrapper must not be a grid too (it squeezed all 3 cards into one column). */
.gx-reviews:not([data-manual]){display:block;}
.gx-review{background:#fff; border:1px solid var(--line); border-radius:20px; padding:22px;}
.gx-review p{font-size:15px; line-height:1.6; color:var(--ink);}
.gx-review small{display:block; margin-top:12px; color:var(--gx-faint); font-size:13px;}

/* ---------- FAQ ---------- */
.gx-search{position:relative; max-width:600px; margin:30px auto 0;}
.gx-search input{width:100%; min-height:60px; padding:16px 52px 16px 54px; border-radius:100px; border:1.5px solid var(--line); background:#fff; font:inherit; font-size:16.5px; color:var(--ink); box-shadow:0 20px 44px -30px rgba(16,36,61,.45); transition:border-color .15s ease, box-shadow .15s ease;}
.gx-search input:focus{outline:none; border-color:var(--forest); box-shadow:0 0 0 4px rgba(47,193,232,.18), 0 20px 44px -30px rgba(16,36,61,.45);}
.gx-search input::-webkit-search-cancel-button{display:none;}
.gx-search-ic{position:absolute; left:20px; top:50%; transform:translateY(-50%); color:var(--gx-faint); pointer-events:none;}
.gx-search-clear{position:absolute; right:10px; top:50%; transform:translateY(-50%); width:38px; height:38px; border-radius:50%; border:none; background:var(--cream); color:var(--gx-muted); cursor:pointer; display:flex; align-items:center; justify-content:center;}
.gx-search-clear[hidden]{display:none;}
.gx-cats{display:flex; flex-wrap:wrap; justify-content:center; gap:8px; margin-top:22px !important;}
.gx-cats a{padding:9px 15px; border-radius:100px; border:1.5px solid var(--line); background:#fff; font-size:13.5px; font-weight:600; color:var(--ink); transition:border-color .15s ease, background .15s ease;}
.gx-cats a:hover{border-color:var(--forest); background:var(--sage-pale);}
.gx-faq{display:grid; grid-template-columns:240px minmax(0,1fr); gap:48px; align-items:start;}
.gx-faq-side{position:sticky; top:120px;}
.gx-faq-side-title{font-size:12px; font-weight:800; letter-spacing:.14em; text-transform:uppercase; color:var(--gx-faint); margin-bottom:12px;}
.gx-faq-side nav{display:flex; flex-direction:column; gap:2px;}
.gx-faq-side nav a{display:flex; justify-content:space-between; align-items:center; gap:10px; padding:10px 12px; border-radius:12px; font-size:14.5px; font-weight:600; color:var(--gx-muted); transition:background .15s ease, color .15s ease;}
.gx-faq-side nav a:hover{background:#fff; color:var(--ink);}
.gx-faq-side nav a.on{background:#fff; color:var(--forest-dark); box-shadow:var(--gx-shadow-sm);}
.gx-faq-side nav a span{font-size:12px; color:var(--gx-faint); font-weight:600;}
.gx-faq-help{margin-top:22px; background:#fff; border:1px solid var(--line); border-radius:18px; padding:18px; font-size:14px; color:var(--gx-muted); line-height:1.55;}
.gx-faq-help b{display:block; color:var(--ink); font-size:15px; margin-bottom:4px;}
.gx-faq-help a{color:var(--forest-dark); font-weight:700;}
.gx-cat{scroll-margin-top:120px; margin-bottom:44px;}
.gx-cat:last-of-type{margin-bottom:0;}
.gx-cat-head{display:flex; align-items:center; gap:12px; margin-bottom:16px;}
.gx-cat-ic{width:40px; height:40px; border-radius:13px; background:var(--sage-pale); color:var(--forest-dark); display:flex; align-items:center; justify-content:center; flex:none;}
.gx-cat-head h2{font-size:clamp(22px,2.4vw,28px); color:var(--ink);}
.gx-acc{display:flex; flex-direction:column; gap:10px;}
.gx-item{background:#fff; border:1px solid var(--line); border-radius:18px; transition:border-color .2s ease, box-shadow .2s ease;}
.gx-item:hover{border-color:color-mix(in srgb, var(--forest) 45%, var(--line));}
.gx-item.open{border-color:var(--forest); box-shadow:0 18px 36px -26px rgba(16,36,61,.4);}
.gx-q{all:unset; box-sizing:border-box; width:100%; cursor:pointer; display:flex; align-items:center; justify-content:space-between; gap:18px; padding:20px 22px; font-family:'Fraunces',Georgia,serif; font-size:18px; line-height:1.3; color:var(--ink); border-radius:18px;}
.gx-q:focus-visible{outline:3px solid rgba(14,127,163,.45); outline-offset:2px;}
.gx-q-ic{position:relative; width:32px; height:32px; border-radius:50%; background:var(--cream); border:1px solid var(--line); flex:none; transition:background .2s ease, transform .3s ease;}
.gx-q-ic::before, .gx-q-ic::after{content:""; position:absolute; left:50%; top:50%; width:12px; height:2px; background:var(--forest-dark); border-radius:2px; transform:translate(-50%,-50%); transition:transform .3s ease;}
.gx-q-ic::after{transform:translate(-50%,-50%) rotate(90deg);}
.gx-item.open .gx-q-ic{background:var(--forest-dark); border-color:var(--forest-dark);}
.gx-item.open .gx-q-ic::before, .gx-item.open .gx-q-ic::after{background:#fff;}
.gx-item.open .gx-q-ic::after{transform:translate(-50%,-50%) rotate(0deg);}
.gx-a{display:grid; grid-template-rows:0fr; transition:grid-template-rows .32s cubic-bezier(.3,.7,.2,1);}
.gx-item.open .gx-a{grid-template-rows:1fr;}
.gx-a > div{overflow:hidden; min-height:0;}
.gx-a p{padding:0 22px 20px; margin:0; font-size:15.5px; line-height:1.7; color:var(--gx-muted); max-width:680px;}
.gx-a a{color:var(--forest-dark); font-weight:600; text-decoration:underline; text-underline-offset:3px;}
.gx-a mark, .gx-q mark{background:#FFF1B8; color:inherit; border-radius:3px; padding:0 1px;}
.gx-empty{text-align:center; background:#fff; border:1px dashed var(--line); border-radius:20px; padding:36px 20px; color:var(--gx-muted);}
.gx-empty b{display:block; font-family:'Fraunces',Georgia,serif; font-size:22px; color:var(--ink); margin-bottom:6px;}
.gx-empty a{color:var(--forest-dark); font-weight:700;}
.gx-help-grid{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; margin-top:28px;}
.gx-help{background:#fff; border:1px solid var(--line); border-radius:20px; padding:22px; display:flex; flex-direction:column; gap:10px; box-shadow:var(--gx-shadow-sm); transition:transform .2s ease, border-color .2s ease;}
.gx-help:hover{transform:translateY(-2px); border-color:var(--forest);}
.gx-help b{color:var(--ink); font-size:16px;}
.gx-help span{font-size:14px; color:var(--gx-muted); line-height:1.5;}
.gx-help em{font-style:normal; margin-top:auto; color:var(--forest-dark); font-weight:700; font-size:14px;}

@media (prefers-reduced-motion: reduce){
  .gx-a, .gx-q-ic, .gx-q-ic::before, .gx-q-ic::after, .gx-step-card, .gx-help{transition:none !important;}
}
@media (max-width:980px){
  .gx-split{grid-template-columns:minmax(0,1fr); gap:40px;}
  .gx-hero-media{max-width:620px;}
  .gx-stage-card{grid-template-columns:minmax(0,1fr);}
  .gx-stage-media{min-height:220px; order:-1;}
  .gx-dur{grid-template-columns:minmax(0,1fr); gap:28px;}
  .gx-trust{grid-template-columns:repeat(2,minmax(0,1fr));}
  .gx-faq{grid-template-columns:minmax(0,1fr); gap:0;}
  .gx-faq-side{display:none;}
  .gx-proof{grid-template-columns:repeat(2,minmax(0,1fr));}
  .gx-proof figure.big{grid-row:auto; grid-column:span 2; min-height:300px;}
  .gx-promise{grid-column:span 2;}
  .gx-reviews{grid-template-columns:minmax(0,1fr);}
}
@media (max-width:820px){
  .gx-steps{grid-template-columns:minmax(0,1fr); gap:18px;}
  .gx-steps::before{top:34px; bottom:34px; left:33px; right:auto; height:auto; border-top:none; border-left:2px dashed color-mix(in srgb, var(--forest) 60%, transparent);}
  .gx-step{display:grid; grid-template-columns:68px minmax(0,1fr); gap:18px; align-items:start; text-align:left;}
  .gx-step-card{margin-top:0;}
  .gx-help-grid{grid-template-columns:minmax(0,1fr);}
}
@media (max-width:640px){
  .gx-sec{padding:52px 0;}
  .gx-hero{padding:36px 0 20px;}
  .gx-page .wrap{padding-left:16px; padding-right:16px;}
  .gx-head{margin-bottom:30px;}
  .gx-step{grid-template-columns:52px minmax(0,1fr); gap:14px;}
  .gx-step-num, .gx-stage-num{width:52px; height:52px; border-radius:17px; font-size:19px; box-shadow:0 0 0 7px var(--cream), 0 12px 24px -12px rgba(14,127,163,.55);}
  .gx-steps::before{left:25px; top:26px; bottom:26px;}
  .gx-step-card{padding:22px 18px;}
  .gx-trust{grid-template-columns:minmax(0,1fr); gap:12px;}
  .gx-trust-item{flex-direction:row; align-items:flex-start; gap:14px; padding:18px;}
  .gx-band{border-radius:24px; padding:44px 20px;}
  .gx-band .gx-cta-row .btn{width:100%; justify-content:center;}
  .gx-cta-row .gx-btn-xl{width:100%; justify-content:center; padding:18px 18px; font-size:15.5px;}
  .gx-timeline::before{left:25px; top:26px;}
  .gx-stage{grid-template-columns:52px minmax(0,1fr); gap:14px;}
  .gx-stage-body{padding:22px 18px;}
  .gx-stage-media{min-height:180px;}
  .gx-float-a{left:10px; bottom:12px;} .gx-float-b{right:10px; top:12px;}
  .gx-notinc{grid-template-columns:minmax(0,1fr);}
  .gx-table{min-width:0; font-size:13.5px;}
  .gx-table th, .gx-table td{padding:12px 8px;}
  .gx-table th:first-child{padding-left:14px;}
  .gx-table thead th{font-size:10.5px; letter-spacing:.06em;}
  .gx-table td{white-space:normal;}
  .gx-proof{grid-template-columns:minmax(0,1fr);}
  .gx-proof figure, .gx-proof figure.big, .gx-promise{grid-column:auto; min-height:220px;}
  .gx-promise{padding:22px;}
  .gx-q{padding:18px 16px; font-size:16.5px;}
  .gx-a p{padding:0 16px 18px; font-size:15px;}
  .gx-search input{min-height:56px; font-size:16px;}
  .gx-page .gx-cats{flex-wrap:nowrap; justify-content:flex-start; overflow-x:auto; margin-left:-16px; margin-right:-16px; padding:2px 16px 6px; scrollbar-width:none;}
  .gx-cats::-webkit-scrollbar{display:none;}
  .gx-cats a{flex:none;}
  .gx-journey-nav{gap:8px;}
  .gx-journey-nav a{padding:8px 12px; font-size:13px;}
}


  /* ================= DESIGN REFINEMENTS (Oct 2026) =================
     Brought the mid-page sections up to the Areas / Reviews standard. */

  /* How it works: clean numerals centred in the circle */
  .step-compact-num{
    width:32px; height:32px; background:var(--forest-dark); color:var(--white);
    display:grid; place-items:center; font-family:'Work Sans', system-ui, sans-serif;
    font-weight:700; font-size:14px; line-height:1; font-variant-numeric:lining-nums tabular-nums;
    box-shadow:0 0 0 5px #E3F6FC; margin-top:-2px;
  }
  .step-compact{gap:16px;}

  /* Services: readable copy on the featured (cyan) card */
  .service-card.featured p.desc{color:rgba(16,36,61,0.78);}
  .service-card.featured p, .service-card.featured li, .service-card.featured li::before{color:rgba(16,36,61,0.86);}

  /* Stats band: quiet dividers between figures */
  @media (min-width:901px){
    .stats-band > div + div{border-left:1px solid rgba(16,36,61,0.14);}
  }

  /* Real results: editorial bento layout with light caption chips */
  .field-bento{grid-template-columns:repeat(12,minmax(0,1fr)); gap:20px;}
  .field-bento figure{grid-column:span 6; border-radius:24px; box-shadow:0 28px 56px -34px rgba(14,127,163,0.55); isolation:isolate;}
  .field-bento figure:nth-child(1), .field-bento figure:nth-child(4){grid-column:span 7;}
  .field-bento figure:nth-child(2), .field-bento figure:nth-child(3){grid-column:span 5;}
  .field-bento figure img{height:400px; transition:transform .7s cubic-bezier(.2,.7,.2,1);}
  .field-bento figure:hover img{transform:scale(1.04);}
  .field-bento figcaption{
    left:18px; right:auto; bottom:18px; max-width:calc(100% - 36px);
    display:flex; align-items:center; gap:10px;
    padding:11px 18px 11px 14px; border-radius:999px;
    background:rgba(255,255,255,0.92); -webkit-backdrop-filter:blur(10px); backdrop-filter:blur(10px);
    color:var(--ink); font-size:14px; font-weight:600; line-height:1.35;
    box-shadow:0 10px 26px -14px rgba(16,36,61,0.45);
  }
  .field-bento figcaption::before{content:""; flex:none; width:8px; height:8px; border-radius:50%; background:var(--forest); box-shadow:0 0 0 4px rgba(47,193,232,0.22);}

  /* Our standards: matched heading size, card checklist, stat tiles */
  .vetting-home{gap:64px;}
  .vetting-home .vetting-img{position:relative; border-radius:28px; border:1px solid rgba(14,127,163,0.12); box-shadow:0 30px 60px -40px rgba(14,127,163,0.5);}
  .vetting-home .vetting-img svg{display:block;}
  .vetting-home h2{font-size:clamp(28px,3.2vw,40px);}
  .vet-intro{margin-top:16px; font-size:17px; line-height:1.6; color:#4A726B; max-width:560px;}
  .vetting-home .vet-list{grid-template-columns:1fr 1fr; gap:12px; margin-top:30px;}
  .vetting-home .vet-list li{
    align-items:center; gap:12px; padding:14px 16px; font-size:14.5px; line-height:1.4; color:var(--ink);
    background:var(--white); border:1px solid rgba(14,127,163,0.14); border-radius:14px;
    box-shadow:0 10px 24px -20px rgba(14,127,163,0.6);
  }
  .vet-check{width:26px; height:26px; margin-top:0; background:var(--forest-dark); color:var(--white);}
  .vet-check svg{width:13px; height:13px;}
  .vetting-home .vet-stats{gap:14px; margin-top:20px; padding-top:0; border-top:0; display:grid; grid-template-columns:1fr 1fr;}
  .vetting-home .vet-stats > div{
    display:flex; align-items:center; gap:14px; padding:16px 18px; border-radius:16px;
    background:linear-gradient(135deg, var(--forest-dark), #1592BA); color:var(--white);
  }
  .vetting-home .vet-stats b{font-size:34px; line-height:1; color:var(--white);}
  .vetting-home .vet-stats span{font-size:13px; line-height:1.35; color:#E3F6FC;}
  .vet-chip{
    position:absolute; display:inline-flex; align-items:center; gap:8px;
    padding:9px 14px 9px 10px; border-radius:999px; background:var(--white);
    font-size:13px; font-weight:600; color:var(--ink); white-space:nowrap;
    box-shadow:0 14px 30px -16px rgba(16,36,61,0.45);
  }
  .vet-chip svg{width:20px; height:20px; padding:4px; border-radius:50%; background:var(--forest); color:var(--white);}
  .vet-chip-a{top:12%; right:7%;}
  .vet-chip-b{bottom:13%; left:7%;}

  /* Why Good Maid (and the About / Careers grids): brand line icons */
  .feat-icon, .feat-icon.tag-amber, .feat-icon.tag-violet, .feat-icon.tag-coral, .feat-icon.tag-sky, .feat-icon.tag-teal2{
    width:46px; height:46px; border-radius:13px; background:#E3F6FC; color:var(--forest-dark);
  }
  .feat-icon svg{width:22px; height:22px;}
  .feat{transition:background .2s ease;}
  .feat:hover{background:#FBFEFF;}

  /* Our promise: depth and structure */
  .guarantee{position:relative; overflow:hidden; background:radial-gradient(120% 140% at 100% 0%, #1592BA 0%, var(--forest-dark) 58%);}
  .guarantee::before, .guarantee::after{content:""; position:absolute; border-radius:50%; border:2px solid rgba(255,255,255,0.12); pointer-events:none;}
  .guarantee::before{width:120px; height:120px; top:-38px; right:84px;}
  .guarantee::after{width:360px; height:360px; right:-120px; bottom:-170px;}
  .guarantee > *{position:relative; z-index:1;}
  .guarantee-list{gap:12px;}
  .guarantee-list li{
    align-items:center; gap:14px; padding:15px 18px; border-radius:14px;
    background:rgba(255,255,255,0.08); border:1px solid rgba(255,255,255,0.16); font-size:15.5px;
  }
  .guarantee-list li::before{
    flex:none; width:26px; height:26px; border-radius:50%; display:grid; place-items:center;
    background:var(--forest); color:var(--ink); font-size:13px;
  }

  /* Referral: its own spot near the end, as a light "coupon" so it reads differently from the promise */
  .referral-section{padding-top:24px;}
  .referral{
    background:linear-gradient(135deg, #FFFFFF 0%, #E3F6FC 100%);
    border:1px solid rgba(14,127,163,0.14); box-shadow:0 34px 70px -46px rgba(14,127,163,0.6);
  }
  .referral .eyebrow-plain{color:var(--forest-dark);}
  .referral h2{color:var(--forest-dark);}
  .referral p{color:#4A726B;}
  .referral-card{
    position:relative; background:var(--forest-dark); border-radius:20px; padding:34px 30px 30px;
    outline:2px dashed rgba(255,255,255,0.35); outline-offset:-10px;
  }
  .referral-card b{font-size:48px; line-height:1.05; color:var(--white);}
  .referral-card span{color:#E3F6FC;}

  @media (max-width:900px){
    .vetting-home{gap:36px;}
    .field-bento figure img{height:320px;}
  }
  @media (max-width:700px){
    .field-bento{grid-template-columns:1fr; gap:16px;}
    .field-bento figure, .field-bento figure:nth-child(n){grid-column:auto;}
    .field-bento figure img{height:250px;}
    .field-bento figcaption{left:12px; bottom:12px; max-width:calc(100% - 24px); border-radius:16px; font-size:13.5px; padding:9px 14px 9px 12px;}
    .vetting-home .vet-list{grid-template-columns:1fr;}
    .vetting-home .vet-stats{grid-template-columns:1fr;}
    .vet-chip{font-size:12px; padding:7px 12px 7px 8px;}
    .guarantee-list li{font-size:14.5px; padding:13px 14px;}
    .referral-card b{font-size:42px;}
    .feat{display:grid; grid-template-columns:46px minmax(0,1fr); column-gap:16px; align-items:start; padding:24px 22px;}
    .feat-icon{grid-row:span 2; margin-bottom:0;}
    .feat h3{align-self:center; margin-top:2px;}
    .feat p{grid-column:2;}
  }

/* ---- Site review changes (Oct 15, 2026) ---- */
.hero-split{padding:72px 0 88px;}
.hero-split-grid{display:grid; grid-template-columns:1.05fr .95fr; gap:64px; align-items:center;}
.hero-split-copy{min-width:0;}
.hero-split-h1{margin:14px 0 0; font-size:clamp(40px,4.8vw,62px); line-height:1.04; letter-spacing:-0.02em; text-wrap:balance; color:var(--ink);}
.hero-split-sub{margin:20px 0 0; max-width:480px; font-size:18px; line-height:1.55; color:#4A6670;}
.hero-split-cta{display:flex; flex-wrap:wrap; align-items:center; gap:14px 22px; margin-top:32px;}
.hero-split-cta .hero-single-cta{margin-top:0;}
.hero-split-call{font-size:15px; color:#4A6670;}
.hero-split-call a{color:var(--ink); font-weight:600; text-decoration:none;}
.hero-split-call a:hover{color:var(--forest-dark);}
.hero-split-list{list-style:none; padding:0; margin:34px 0 0; display:grid; grid-template-columns:1fr 1fr; gap:12px 24px; max-width:480px;}
.hero-split-list li{display:flex; align-items:center; gap:10px; font-size:14.5px; font-weight:500; color:var(--ink);}
.hs-ck{width:20px; height:20px; border-radius:50%; background:var(--sage-pale); color:var(--forest-dark); display:inline-grid; place-items:center; flex:none;}
.hs-ck svg{width:12px; height:12px;}
.hero-split-media{position:relative; min-width:0;}
.hero-split-photo{border-radius:26px; overflow:hidden; aspect-ratio:4/4.6; max-width:100%; box-shadow:0 40px 70px -40px rgba(16,36,61,.55); background:var(--sage-pale);}
.hero-split-photo img{width:100%; height:100%; object-fit:cover; display:block;}
.hero-split-chip{position:absolute; right:18px; top:18px; display:flex; align-items:center; gap:8px; background:rgba(255,255,255,.94); border-radius:999px; padding:8px 14px 8px 8px; font-size:13px; font-weight:600; color:var(--ink);}
.hero-split-review{position:absolute; left:-28px; bottom:34px; display:grid; grid-template-columns:auto 1fr; gap:2px 14px; align-items:center; background:var(--white); border-radius:18px; padding:16px 20px; box-shadow:0 24px 50px -24px rgba(16,36,61,.5); text-decoration:none; color:var(--ink); transition:transform .2s ease;}
.hero-split-review:hover{transform:translateY(-2px);}
.hsr-score{grid-row:span 2; font-family:'Fraunces',Georgia,serif; font-weight:650; font-size:40px; line-height:1;}
.hsr-stars{color:#F5B301; font-size:16px; letter-spacing:1px;}
.hsr-label{font-size:13px; font-weight:500; color:#4A6670;}
@media (max-width:1100px){ .hero-split-review{left:16px;} }
@media (max-width:900px){
  .hero-split{padding:40px 0 64px;}
  .hero-split-grid{grid-template-columns:1fr; gap:32px;}
  .hero-split-h1{font-size:clamp(36px,9vw,48px);}
  .hero-split-sub{font-size:16.5px; margin-inline:auto;}
  .hero-split-copy .eyebrow-plain, .hero-split-h1, .hero-split-sub{text-align:center;}
  .hero-split-cta{justify-content:center;}
  .hero-split-list{margin-inline:auto;}
  .hero-split-photo{aspect-ratio:4/3.4;}
  /* Phone/tablet: skip the 3-photo row so the hero goes straight to Instant Price */
  #why-us.feature-trio{display:none;}
}
@media (max-width:620px){
  .hero-split-cta .hero-single-cta{width:100%; justify-content:center;}
  .hero-split-call{width:100%; text-align:center;}
  .hero-split-list{gap:10px 12px; margin-top:26px;}
  .hero-split-list li{font-size:13px; align-items:flex-start;}
  .hero-split-review{left:12px; bottom:-18px; padding:12px 16px;}
  .hsr-score{font-size:32px;}
  .hero-split-chip{right:12px; top:12px; font-size:12px;}
}
@media (prefers-reduced-motion: reduce){ .hero-split-review{transition:none;} }
#services .service-grid{grid-template-columns:repeat(4,1fr);}
.services-more{text-align:center; margin-top:28px;}
.foot-hours{opacity:.85;}
@media (max-width:1100px){ #services .service-grid{grid-template-columns:1fr 1fr;} }
@media (max-width:620px){ #services .service-grid{grid-template-columns:1fr;} }

/* =====================================================================
   STATIC SEO PAGES (city, service, city+service, realtors, blog)
   Added Oct 15, 2026. Everything above this line is a copy of the
   stylesheet inside index.html so these pages look identical.
   ===================================================================== */
.foot-grid.foot-grid-5{grid-template-columns:1.3fr 1fr 1fr 1fr 1fr; gap:32px;}
@media (max-width:1100px){ .foot-grid.foot-grid-5{grid-template-columns:1fr 1fr 1fr;} .foot-grid.foot-grid-5 .foot-brand{grid-column:1 / -1;} }
@media (max-width:620px){ .foot-grid.foot-grid-5{grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:32px 20px;} }

.gm-hero{padding:34px 0 56px; background:var(--sage-pale); border-bottom:1px solid var(--line);}
.gm-hero-grid{display:grid; grid-template-columns:1.1fr 1fr; gap:52px; align-items:center;}
.gm-hero h1{font-size:clamp(30px,4vw,48px); letter-spacing:-0.01em; margin-top:14px;}
.gm-hero .gm-lead{margin-top:14px; font-size:17px; line-height:1.65; color:#3F5D6B; max-width:58ch;}
.gm-hero .hero-cta{margin-top:26px;}
.gm-hero-media img{width:100%; height:auto; aspect-ratio:6/4.4; object-fit:cover; border-radius:24px; border:1px solid var(--line); box-shadow:0 24px 60px -30px rgba(13,38,32,0.35);}
.gm-hero-points{list-style:none; margin:22px 0 0; padding:0; display:flex; flex-wrap:wrap; gap:8px 18px; font-size:14px; color:#2C4A57;}
.gm-hero-points li::before{content:"✓"; color:var(--forest-dark); font-weight:700; margin-right:6px;}
@media (max-width:900px){ .gm-hero-grid{grid-template-columns:1fr; gap:28px;} .gm-hero-media{order:-1;} }

.gm-rating-line{margin-top:16px; font-size:14px; font-weight:600;}
.gm-rating-line a{color:var(--ink);}
.gm-stars{color:var(--star); letter-spacing:1px; margin-right:6px;}

.gm-body{padding:56px 0 72px;}
.prose{max-width:70ch; min-width:0;}
.prose section{padding:0;}
.prose > h2, .prose section > h2, .gm-faq > h2{font-size:clamp(24px,2.6vw,31px); margin:46px 0 14px; scroll-margin-top:90px;}
.prose > h2:first-child, .prose > section:first-child > h2{margin-top:0;}
.prose h3{font-family:'Fraunces',Georgia,serif; font-size:20px; margin:28px 0 10px; color:var(--ink);}
.prose p{margin:0 0 14px; font-size:16.5px; line-height:1.75; color:#34505C;}
.prose ul, .prose ol{margin:0 0 18px; padding-left:22px; font-size:16.5px; line-height:1.7; color:#34505C;}
.prose li{margin:6px 0;}
.prose a{color:var(--forest-dark); font-weight:600; text-decoration:underline; text-decoration-color:rgba(14,127,163,.35); text-underline-offset:3px;}
.prose a:hover{text-decoration-color:var(--forest-dark);}
.prose .related-grid a{text-decoration:none; color:var(--ink); font-weight:600;}
.prose .related-grid a.active{color:var(--ink);}
.prose a.btn{text-decoration:none; color:var(--ink);}
.prose strong{color:var(--ink);}
.prose .includes-list{margin:18px 0 22px; padding:0;}
.prose .includes-list li{margin:0; color:#2C4A57;}

.gm-short{background:var(--white); border:1px solid var(--line); border-left:5px solid var(--forest); border-radius:16px; padding:20px 22px; margin:0 0 30px;}
.gm-short b{display:block; font-size:12.5px; letter-spacing:.08em; text-transform:uppercase; color:var(--forest-dark); margin-bottom:6px;}
.gm-short p{margin:0; font-size:16.5px; line-height:1.7; color:var(--ink);}

.gm-table-wrap{overflow-x:auto; margin:16px 0 10px; border:1px solid var(--line); border-radius:16px; background:var(--white); -webkit-overflow-scrolling:touch;}
.gm-table{width:100%; border-collapse:collapse; font-size:15px; min-width:520px;}
.gm-table caption{caption-side:bottom; text-align:left; padding:10px 16px 12px; font-size:13px; color:#4D6863;}
.gm-table th, .gm-table td{padding:12px 16px; text-align:left; border-bottom:1px solid var(--line); vertical-align:top;}
.gm-table thead th{background:var(--sage-pale); font-size:13px; text-transform:uppercase; letter-spacing:.04em; color:var(--forest-dark);}
.gm-table tbody th{font-weight:600; color:var(--ink);}
.gm-table td{color:#2C4A57; font-variant-numeric:tabular-nums;}
.gm-table tbody tr:last-child th, .gm-table tbody tr:last-child td{border-bottom:0;}
.gm-note{font-size:13.5px; color:#4D6863; margin-top:6px;}

.gm-chips{display:flex; flex-wrap:wrap; gap:8px; margin:14px 0 18px; padding:0; list-style:none;}
.gm-chips li{padding:7px 14px; border-radius:100px; background:var(--white); border:1px solid var(--line); font-size:14px; color:#2C4A57; margin:0;}

.gm-svc-cards{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; margin:18px 0 10px;}
.gm-svc-card{display:block; background:var(--white); border:1px solid var(--line); border-radius:16px; padding:18px 20px; transition:border-color .15s ease, transform .15s ease, box-shadow .15s ease; text-decoration:none !important;}
.gm-svc-card:hover{border-color:var(--forest); transform:translateY(-2px); box-shadow:0 14px 28px -18px rgba(13,38,32,0.32);}
.gm-svc-card b{display:block; font-family:'Fraunces',Georgia,serif; font-size:18px; color:var(--forest-dark); font-weight:600;}
.gm-svc-card span{display:block; margin-top:6px; font-size:14px; line-height:1.55; color:#4A6072; font-weight:400;}
.gm-svc-card em{display:block; margin-top:10px; font-style:normal; font-size:13.5px; font-weight:700; color:var(--ink);}
@media (max-width:620px){ .gm-svc-cards{grid-template-columns:1fr;} }

.gm-steps{counter-reset:gmstep; list-style:none; padding:0 !important; margin:16px 0 20px; display:grid; gap:12px;}
.gm-steps li{counter-increment:gmstep; position:relative; padding:16px 18px 16px 62px; background:var(--white); border:1px solid var(--line); border-radius:14px; margin:0;}
.gm-steps li::before{content:counter(gmstep); position:absolute; left:16px; top:14px; width:32px; height:32px; border-radius:50%; background:var(--forest); color:var(--ink); font-weight:700; display:flex; align-items:center; justify-content:center; font-size:15px;}

.gm-faq-list{display:flex; flex-direction:column; gap:12px; margin-top:16px;}
.gm-faq details p{max-width:none;}
.gm-faq details p a{color:var(--forest-dark); font-weight:600; text-decoration:underline;}

.gm-links{margin-top:40px;}
.gm-links h2{font-size:clamp(20px,2.2vw,24px); margin:34px 0 4px;}
.gm-links .related-grid{grid-template-columns:repeat(3,minmax(0,1fr));}
@media (max-width:900px){ .gm-links .related-grid{grid-template-columns:repeat(2,minmax(0,1fr));} }

.gm-promo-note{font-size:12.5px !important; margin-top:12px !important; padding:9px 12px; border-radius:10px; background:var(--sage-pale); color:#1E4C44 !important;}
.gm-side-call{font-size:13px !important;}
.gm-side-call a{color:var(--forest-dark); font-weight:700;}

.gm-inline-cta{margin:30px 0; padding:24px 26px; border-radius:20px; background:linear-gradient(150deg, var(--forest-dark), #0A5F7D); color:#fff; display:flex; align-items:center; justify-content:space-between; gap:18px; flex-wrap:wrap;}
.gm-inline-cta p{margin:0 !important; color:rgba(255,255,255,.92) !important; font-size:16px !important; max-width:42ch;}
.gm-inline-cta strong{color:#fff !important; display:block; font-family:'Fraunces',Georgia,serif; font-size:21px; margin-bottom:4px;}
.gm-inline-cta .btn{background:#fff; color:var(--forest-dark) !important; font-weight:700; text-decoration:none !important;}

.gm-form{display:grid; gap:14px; margin-top:16px;}
.gm-form .row2{display:grid; grid-template-columns:1fr 1fr; gap:14px;}
.gm-form label{display:block; font-size:13.5px; font-weight:600; color:#2C4A57; margin-bottom:6px;}
.gm-form input, .gm-form select, .gm-form textarea{width:100%; box-sizing:border-box; padding:12px 14px; border:1.5px solid var(--line); border-radius:12px; font:inherit; font-size:15px; background:#fff; color:var(--ink);}
.gm-form textarea{min-height:110px; resize:vertical;}
.gm-form .btn{justify-self:start;}
.gm-form-msg{font-size:14.5px; padding:12px 14px; border-radius:12px; background:var(--sage-pale); color:#1E4C44;}
@media (max-width:620px){ .gm-form .row2{grid-template-columns:1fr;} }

/* Blog */
.gm-blog-hero{padding:44px 0 36px; background:var(--sage-pale); border-bottom:1px solid var(--line);}
.gm-blog-hero h1{font-size:clamp(30px,4vw,46px); margin-top:10px;}
.gm-blog-hero p.gm-lead{margin-top:12px; font-size:17px; color:#3F5D6B; max-width:62ch; line-height:1.65;}
.gm-blog-grid{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:22px;}
.gm-blog-card{display:flex; flex-direction:column; background:var(--white); border:1px solid var(--line); border-radius:20px; overflow:hidden; transition:transform .15s ease, box-shadow .15s ease, border-color .15s ease;}
.gm-blog-card:hover{transform:translateY(-3px); border-color:var(--forest); box-shadow:0 16px 32px -18px rgba(13,38,32,0.3);}
.gm-blog-card img{width:100%; height:auto; aspect-ratio:16/10; object-fit:cover;}
.gm-blog-card .gm-bc-body{padding:18px 20px 22px; display:flex; flex-direction:column; gap:8px; flex:1;}
.gm-blog-card .gm-bc-cat{font-size:12px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--forest-dark);}
.gm-blog-card h2, .gm-blog-card h3{font-size:19px; line-height:1.3; color:var(--ink);}
.gm-blog-card p{font-size:14.5px; line-height:1.6; color:#4A6072;}
.gm-blog-card .gm-bc-more{margin-top:auto; padding-top:6px; font-size:14px; font-weight:700; color:var(--forest-dark);}
@media (max-width:1000px){ .gm-blog-grid{grid-template-columns:repeat(2,minmax(0,1fr));} }
@media (max-width:620px){ .gm-blog-grid{grid-template-columns:1fr;} }
.gm-post-meta{margin-top:14px; font-size:14px; color:#4D6863;}
.gm-post-hero-img{margin-top:26px; width:100%; height:auto; aspect-ratio:16/7; object-fit:cover; border-radius:22px; border:1px solid var(--line);}
.gm-toc{background:var(--white); border:1px solid var(--line); border-radius:16px; padding:18px 22px; margin:0 0 28px;}
.gm-toc b{display:block; font-size:12.5px; letter-spacing:.08em; text-transform:uppercase; color:var(--forest-dark); margin-bottom:6px;}
.gm-toc ol{margin:0 !important; padding-left:20px; font-size:15px !important;}
.gm-toc a{font-weight:500 !important;}
.gm-checklist{list-style:none; padding:0 !important;}
.gm-checklist li{position:relative; padding-left:30px;}
.gm-checklist li::before{content:""; position:absolute; left:0; top:5px; width:18px; height:18px; border:2px solid var(--forest-dark); border-radius:5px;}

/* Homepage "latest guides" teaser */
#guides .gm-blog-grid{margin-top:8px;}
#guides .services-more{text-align:center; margin-top:28px;}

@media (max-width:620px){
  .gm-body{padding:36px 0 56px;}
  .prose p, .prose ul, .prose ol{font-size:16px;}
  .gm-hero{padding:22px 0 40px;}
}
/* Oct 15, 2026: keep the desktop nav on one line now that it has "Cleaning Guides" */
@media (min-width:901px){ .nav-links a, .nav-links .nav-dropdown-toggle{white-space:nowrap;} }
@media (min-width:901px) and (max-width:1180px){ .nav-phone{display:none;} .nav-links{gap:16px;} }
@media (min-width:901px) and (max-width:1000px){ .nav-links a{font-size:13.5px;} .nav-links{gap:12px;} nav.wrap{padding:0 18px;} }

/* Oct 16, 2026 — sidebar always fits on screen. The two cards used to stick as one
   ~820px block, taller than most laptop windows, so the top hid under the header and
   the bottom ran off-screen. Now the "includes" card scrolls normally and only the
   price card sticks, just below the header. Phones keep the price card first. */
.svc-detail-side{position:static; align-self:stretch; display:flex; flex-direction:column; gap:20px;}
.svc-detail-side .svc-trust-card{order:1;}
.svc-detail-side .svc-price-card{order:2; position:sticky; top:100px;}
@media (max-width:900px){ .svc-detail-side .svc-price-card{position:static; order:0;} }

/* "More cleaning guides" — full-width row under the article */
.gm-related{padding:56px 0 72px; background:var(--white); border-top:1px solid var(--line);}
.gm-related-head{display:flex; align-items:baseline; justify-content:space-between; gap:16px; flex-wrap:wrap; margin-bottom:24px;}
.gm-related-head h2{font-size:clamp(24px,2.6vw,32px); margin:0;}
.gm-related-head a{font-weight:700; color:var(--forest-dark); text-decoration:none; white-space:nowrap;}
.gm-related-head a:hover{text-decoration:underline;}
.gm-related .gm-blog-card{background:var(--cream, #F7FBFD);}
a.gm-blog-card, a.gm-blog-card *{text-decoration:none;}

/* Areas grid: every card the same width, whatever the city name */
.areas-grid{grid-template-columns:repeat(4,minmax(0,1fr));}
.area-card-top{flex-wrap:wrap; row-gap:4px;}
@media (max-width:900px){ .areas-grid{grid-template-columns:repeat(2,minmax(0,1fr));} }
@media (max-width:620px){ .areas-grid{grid-template-columns:1fr;} }

/* ================= SMALL POLISH (Oct 19, 2026) =================
   Shared header/footer/area-card fixes, matching the homepage. */
/* Header "Get My Price" button: a proper 44px tap target on phones. */
@media (max-width:900px){
  .nav-right .btn-primary{min-height:44px; padding:0 18px; font-size:14px;}
}
@media (max-width:400px){
  .nav-right .btn-primary{padding:0 15px; font-size:13.5px;}
}
@media (max-width:350px){
  .nav-right .btn-primary{padding:0 11px; font-size:12.5px;}
}
/* One tag colour on area cards instead of a different colour per city. */
.area-card .area-tag[class]{background:#E3F6FC; color:#0B6A88;}
/* Shorter area photos on phones = less scrolling. */
@media (max-width:620px){
  .area-card-photo{aspect-ratio:2 / 1;}
}
/* Footer: hours match the other footer text; email never breaks mid-word. */
.foot-hours{font-size:14px;}
@media (max-width:620px){
  .foot-grid > div:last-child{grid-column:1 / -1;}
  footer a[href^="mailto:"]{overflow-wrap:normal; white-space:nowrap;}
}

.gm-chips li a{color:inherit; text-decoration:none; font-weight:600;}
.gm-chips li:has(a){border-color:var(--forest-dark); background:var(--cream);}
.gm-chips li a:hover{text-decoration:underline;}
