:root{
  --ink:#211E1B;
  --ink-surface:#211E1B;   /* sections that stay dark in BOTH themes (top bar, strip, CTA) */
  --ink-soft:#5A534B;
  --ink-faint:#776E60;     /* tuned for >=4.5:1 on the warm bg (was #8B837A = 3.5:1) */
  --cream:#FBF7F0;
  --cream-2:#F4ECE0;
  --cream-3:#EDE2D2;
  --line:#E6DBCB;
  --white:#FFFFFF;
  --sun:#F47A1E;
  --sun-deep:#DD640A;
  --gold:#F9C513;
  --slate:#5E7682;
  --slate-deep:#42555F;
  /* cool secondary — sky / water blue. Used semantically: trust, geography, "clean". */
  --sky:#2E97D4;           /* UI elements (>=3:1 on cream) */
  --sky-deep:#1C6CA0;      /* text/headings on light (5.3:1 on cream) */
  --sky-soft:#E7F1F8;      /* soft blue surface wash */
  --grad-sky:linear-gradient(118deg,#2E97D4,#5BC4E8);

  --grad-sun:linear-gradient(118deg,#F47A1E 0%,#F89A20 48%,#F9C513 100%);
  --grad-sun-soft:linear-gradient(118deg,#FBE6C8,#FDF4D9);

  --shadow-sm:0 1px 2px rgba(33,30,27,.05), 0 4px 10px -6px rgba(33,30,27,.10);
  --shadow-md:0 2px 4px rgba(33,30,27,.04), 0 18px 40px -22px rgba(221,100,10,.30);
  --shadow-lg:0 4px 8px rgba(33,30,27,.05), 0 40px 80px -32px rgba(221,100,10,.40);
  --shadow-glow:0 30px 80px -30px rgba(244,122,30,.55);

  --r-sm:12px; --r-md:18px; --r-lg:28px; --r-xl:40px;
  --maxw:1200px;
  --ease:cubic-bezier(.16,.84,.34,1);
}

/* ============ DARK THEME ============ */
:root[data-theme="dark"]{
  --ink:#F1EAE0;          /* primary text */
  --ink-soft:#BAB0A2;     /* secondary text */
  --ink-faint:#8C8273;    /* tertiary text */
  --cream:#141110;        /* page background */
  --cream-2:#1A1613;      /* alt background */
  --cream-3:#231D18;      /* elevated background */
  --line:rgba(241,234,224,.13);
  --white:#1E1A16;        /* card surface */
  --sky:#4FB3E6;          /* UI on dark */
  --sky-deep:#7CC8EE;     /* text on dark (10:1) */
  --sky-soft:rgba(79,179,230,.12);
  --grad-sun-soft:linear-gradient(118deg,#3a2a14,#2c2410);
  --shadow-sm:0 1px 2px rgba(0,0,0,.4), 0 4px 10px -6px rgba(0,0,0,.55);
  --shadow-md:0 2px 4px rgba(0,0,0,.4), 0 18px 40px -22px rgba(0,0,0,.6);
  --shadow-lg:0 4px 8px rgba(0,0,0,.45), 0 40px 80px -32px rgba(0,0,0,.7);
}
:root[data-theme="dark"] body::after{mix-blend-mode:screen;opacity:.05}
:root[data-theme="dark"] nav.main{
  background:linear-gradient(180deg,rgba(34,29,24,.72),rgba(20,17,14,.56));
  border-color:rgba(255,255,255,.1);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 24px 50px -26px rgba(0,0,0,.85), 0 6px 18px -10px rgba(0,0,0,.6)}
:root[data-theme="dark"] nav.main::after{background:linear-gradient(100deg,transparent 20%,rgba(255,255,255,.06) 50%,transparent 74%)}
:root[data-theme="dark"] .nav-toggle{background:linear-gradient(180deg,rgba(255,255,255,.1),rgba(255,255,255,.035));
  border-color:rgba(255,255,255,.16);box-shadow:inset 0 1px 0 rgba(255,255,255,.14),0 4px 12px -6px rgba(0,0,0,.6)}
:root[data-theme="dark"] .nav-toggle:hover{background:linear-gradient(180deg,rgba(255,255,255,.17),rgba(255,255,255,.07))}
:root[data-theme="dark"] .mobile-menu{
  background:linear-gradient(180deg,rgba(28,24,20,.97),rgba(20,17,14,.95));
  border-top-color:rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 28px 54px -20px rgba(0,0,0,.85)}
:root[data-theme="dark"] .mobile-menu>a{border-bottom-color:rgba(255,255,255,.08)}
:root[data-theme="dark"] .btn-ghost{background:rgba(255,255,255,.07);border-color:rgba(255,255,255,.16)}
:root[data-theme="dark"] .btn-ghost:hover{background:rgba(255,255,255,.13)}
:root[data-theme="dark"] .area-map{background:linear-gradient(160deg,#1c2a30,#141d22)}
:root[data-theme="dark"] .area-map .map-badge,
:root[data-theme="dark"] .area-map .map-link{background:rgba(26,22,18,.82);border-color:rgba(255,255,255,.16);color:var(--ink)}
:root[data-theme="dark"] .gcard:hover,
:root[data-theme="dark"] .svc{border-color:rgba(255,255,255,.1)}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;
  font-family:"Montserrat",system-ui,sans-serif;
  color:var(--ink);
  background:var(--cream);
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
h1,h2,h3,h4{margin:0;font-weight:500}
p{margin:0}
a{color:inherit;text-decoration:none}
img{display:block;max-width:100%}
ul{margin:0;padding:0;list-style:none}

/* ---------- Grain + ambient backdrop ---------- */
body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:
    radial-gradient(900px 600px at 88% -8%, rgba(249,197,19,.20), transparent 60%),
    radial-gradient(760px 560px at 96% 4%, rgba(244,122,30,.22), transparent 58%),
    radial-gradient(720px 720px at -8% 26%, rgba(46,151,212,.12), transparent 60%);
}
body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;opacity:.040;
  mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
.wrap{position:relative;z-index:1;width:min(100% - 40px, var(--maxw));margin-inline:auto}

/* ---------- Brand wordmark ---------- */
.brand{display:inline-flex;flex-direction:column;align-items:flex-start;line-height:1;user-select:none}
.brand .word{display:flex;align-items:center;font-weight:800;font-size:25px;letter-spacing:.01em}
.brand .sun-mark{width:.92em;height:.92em;margin:0 .03em;transform:translateY(-1px);flex:none;stroke:var(--sun)}
.brand .sub{font-size:9.5px;font-weight:600;letter-spacing:.46em;margin-top:5px;padding-left:.5em;color:var(--sun-deep)}
.brand.on-dark .sub{color:var(--sun)}

@keyframes spin-slow{to{transform:rotate(360deg)}}
/* Header logo: the sun mark spins slowly. Keep the translateY(-1px) baseline in
   both keyframes so it interpolates as a real rotation (a to-only rotate(360deg)
   would collapse to identity and not visibly turn). Gated by .motion-ok so it
   respects prefers-reduced-motion. Scoped to .brand so the header + footer logo
   suns spin, while the hero eyebrow / button suns stay still. */
@keyframes logo-spin{from{transform:translateY(-1px) rotate(0deg)}to{transform:translateY(-1px) rotate(360deg)}}
html.motion-ok .brand .sun-mark{animation:logo-spin 9s linear infinite;transform-origin:50% 50%}
/* Holiday Light Installation page only: the header wordmark "O" becomes the
   Christmas wreath (hide the sun strokes, paint the wreath as the element's
   background). It inherits the .sun-mark spin, so the wreath turns too. */
body.holiday nav.main .brand .sun-mark{stroke:transparent;background:url('holiday-wreath.png') center/contain no-repeat;width:1.05em;height:1.05em;margin:0 .04em}
/* festive wordmark: "CLEANING" red in both themes; "LUMON" white in dark mode
   (left as readable dark ink in light mode — the header bar is cream there). */
body.holiday nav.main .brand .sub{color:var(--hol-red)}
:root[data-theme="dark"] body.holiday nav.main .brand .sub{color:var(--hol-red-lt)}
:root[data-theme="dark"] body.holiday nav.main .brand .word{color:#fff}
/* Turf cleaning page: green header logo — the sun mark + "CLEANING" go green
   (lighter green in dark mode for contrast). Other pages/footer unaffected. */
body.grass nav.main .brand .sun-mark{stroke:var(--grass)}
body.grass nav.main .brand .sub{color:var(--grass)}
:root[data-theme="dark"] body.grass nav.main .brand .sun-mark{stroke:#86d68f}
:root[data-theme="dark"] body.grass nav.main .brand .sub{color:#86d68f}

/* ---------- Buttons ---------- */
.btn{
  position:relative;display:inline-flex;align-items:center;gap:.55em;
  font-family:"Montserrat";font-weight:600;font-size:14.5px;letter-spacing:.01em;
  padding:14px 26px;border-radius:999px;cursor:pointer;border:1px solid transparent;
  transition:transform .22s var(--ease), box-shadow .28s var(--ease), background .3s ease, color .3s ease;
  will-change:transform;
}
.btn:focus-visible{outline:3px solid rgba(244,122,30,.45);outline-offset:3px}
/* primary quote CTA: soft warm glow halo so it stands out (subtle, professional) */
.btn-sun{color:#2A1604;background:var(--grad-sun);box-shadow:var(--shadow-md), 0 0 18px -2px rgba(249,197,19,.5), 0 8px 26px -10px rgba(244,122,30,.5)}
.btn-sun:hover{transform:translateY(-2px);box-shadow:var(--shadow-glow), 0 0 28px 0 rgba(249,197,19,.55)}
.btn-sun:active{transform:translateY(0)}
.btn-ghost{color:var(--ink);background:rgba(255,255,255,.5);border-color:var(--line);backdrop-filter:blur(6px)}
.btn-ghost:hover{transform:translateY(-2px);background:var(--white);box-shadow:var(--shadow-sm)}
.btn-ghost:active{transform:translateY(0)}
.btn-dark{color:#FDF6EA;background:var(--ink-surface)}
.btn-dark:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}
.btn .arr{transition:transform .4s var(--ease)}
.btn:hover .arr{transform:translateX(3px)}

/* ---------- Nav ---------- */
.topbar{position:relative;z-index:3;background:var(--ink-surface);color:#E9E1D4}
.topbar .wrap{display:flex;justify-content:space-between;align-items:center;gap:18px;
  font-size:12.5px;font-weight:500;letter-spacing:.03em;padding:9px 0;min-height:38px}
.topbar a{display:inline-flex;align-items:center;gap:7px;transition:color .25s}
.topbar a:hover{color:var(--gold)}
.topbar .dot{width:5px;height:5px;border-radius:50%;background:var(--sun);box-shadow:0 0 10px 1px rgba(244,122,30,.8)}
.topbar .tb-right{display:flex;gap:22px;align-items:center}

/* floating Apple-glass pill: detached from the top + sides, rounded, soft shadow */
nav.main{position:sticky;top:14px;z-index:30;
  width:min(100% - 32px, 1240px);margin:14px auto 0;border-radius:26px;
  background:linear-gradient(180deg,rgba(255,253,250,.72),rgba(251,247,240,.52));
  backdrop-filter:blur(22px) saturate(1.8);-webkit-backdrop-filter:blur(22px) saturate(1.8);
  border:1px solid rgba(255,255,255,.55);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.8), 0 24px 50px -26px rgba(33,30,27,.5), 0 6px 18px -10px rgba(33,30,27,.22)}
/* liquid-glass sheen sweep, clipped to the pill's rounded shape */
nav.main::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:0;border-radius:inherit;
  background:linear-gradient(100deg,transparent 20%,rgba(255,255,255,.30) 50%,transparent 74%)}
nav.main .wrap{display:flex;align-items:center;justify-content:space-between;height:74px;gap:24px;width:100%;padding:0 26px}
.nav-links{display:flex;gap:21px;align-items:center;font-size:14.5px;font-weight:500;color:var(--ink-soft)}
.nav-links a{position:relative;padding:4px 0;white-space:nowrap;transition:color .25s}
.nav-links a::after{content:"";position:absolute;left:0;bottom:-2px;height:2px;width:0;
  background:var(--grad-sun);border-radius:2px;transition:width .4s var(--ease)}
.nav-links a:hover{color:var(--ink)}
.nav-links a:hover::after{width:100%}
.nav-cta{display:flex;align-items:center;gap:14px}
.nav-quote{white-space:nowrap}
.nav-phone{display:inline-flex;align-items:center;gap:8px;white-space:nowrap;font-weight:600;font-size:14.5px;color:var(--ink);transition:color .25s}
.nav-phone:hover{color:var(--sun-deep)}
.nav-toggle{display:none;width:44px;height:44px;align-items:center;justify-content:center;flex:none;
  border:1px solid rgba(255,255,255,.6);border-radius:13px;color:var(--ink);cursor:pointer;
  background:linear-gradient(180deg,rgba(255,255,255,.6),rgba(255,255,255,.25));
  backdrop-filter:blur(10px) saturate(1.5);-webkit-backdrop-filter:blur(10px) saturate(1.5);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.85),0 4px 12px -6px rgba(33,30,27,.35);
  transition:background .25s,transform .2s var(--ease)}
.nav-toggle:hover{background:linear-gradient(180deg,rgba(255,255,255,.8),rgba(255,255,255,.45))}
.nav-toggle:active{transform:scale(.94)}
.nav-toggle .ico-close{display:none}
.nav-toggle[aria-expanded="true"] .ico-open{display:none}
.nav-toggle[aria-expanded="true"] .ico-close{display:block}
/* theme toggle (sun · switch · moon) */
.theme-toggle{display:inline-flex;align-items:center;gap:7px;flex:none}
.tt-side{display:grid;place-items:center;width:22px;height:22px;border:0;background:none;padding:0;cursor:pointer;
  color:var(--ink-faint);transition:color .25s,transform .2s var(--ease)}
.tt-side:hover{transform:translateY(-1px);color:var(--ink-soft)}
.tt-side svg{width:16px;height:16px}
:root:not([data-theme="dark"]) .tt-light{color:var(--sun-deep)}
:root[data-theme="dark"] .tt-dark{color:var(--gold)}
.tt-switch{position:relative;width:40px;height:23px;border-radius:999px;border:1px solid var(--line);
  background:var(--cream-3);cursor:pointer;padding:0;flex:none;transition:background .3s,border-color .3s}
.tt-switch .tt-thumb{position:absolute;top:50%;left:3px;transform:translateY(-50%);width:17px;height:17px;border-radius:50%;
  background:var(--grad-sun);box-shadow:0 2px 6px rgba(0,0,0,.35);transition:left .32s var(--ease)}
:root[data-theme="dark"] .tt-switch{background:#2b2620;border-color:rgba(255,255,255,.14)}
:root[data-theme="dark"] .tt-switch .tt-thumb{left:20px}
.tt-switch:focus-visible{outline:3px solid rgba(244,122,30,.5);outline-offset:2px}
.mm-theme{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-top:6px}
.mm-theme .mm-theme-lbl{font-size:14px;font-weight:600;color:var(--ink-soft)}
@media (max-width:980px){.nav-cta .theme-toggle{display:none}}
.mobile-menu{position:absolute;top:100%;left:0;right:0;z-index:25;display:none;flex-direction:column;
  padding:8px 20px 22px;
  background:linear-gradient(180deg,rgba(250,246,239,.97),rgba(245,238,228,.95));
  backdrop-filter:blur(28px) saturate(1.4);-webkit-backdrop-filter:blur(28px) saturate(1.4);
  border-top:1px solid rgba(255,255,255,.6);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.8),0 28px 54px -20px rgba(33,30,27,.6);
  max-height:calc(100vh - 74px);overflow:auto}
.mobile-menu.open{display:flex}
.mobile-menu>a{padding:15px 4px;font-size:16px;font-weight:600;color:var(--ink);border-bottom:1px solid rgba(33,30,27,.08)}
.mobile-menu>a:active{color:var(--sun-deep)}
.mm-foot{display:flex;flex-direction:column;gap:13px;margin-top:18px}
.mm-quote{justify-content:center;font-size:15px;padding:15px 26px}
.mm-phone{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:700;font-size:15px;color:var(--ink)}

/* ---------- Hero ---------- */
.hero{position:relative;z-index:1;padding:72px 0 84px}
.hero .wrap{display:grid;grid-template-columns:1.05fr .95fr;gap:56px;align-items:center}
.eyebrow{display:inline-flex;align-items:center;gap:10px;font-size:12px;font-weight:700;
  letter-spacing:.22em;text-transform:uppercase;color:var(--sun-deep);
  background:rgba(244,122,30,.09);border:1px solid rgba(244,122,30,.22);
  padding:8px 16px;border-radius:999px;margin-bottom:26px}
.eyebrow .sun-mark{width:15px;height:15px;stroke:var(--sun)}
h1.hero-title{
  font-family:"Montserrat",sans-serif;font-weight:700;font-size:clamp(38px,5vw,62px);
  line-height:1.06;letter-spacing:-.025em;color:var(--ink)}
h1.hero-title em{font-style:normal;font-weight:700;
  background:var(--grad-sun);-webkit-background-clip:text;background-clip:text;color:transparent;
  padding-right:.04em}
/* rotating headline word (cycles spotless / gleaming / streak-free / ...) */
.rotator{position:relative;display:block;height:1.1em;overflow:hidden;padding-bottom:.06em}
.rotator-track{position:relative;display:block;height:100%}
.rotator-word{position:absolute;left:0;top:0;line-height:1.1;white-space:nowrap;font-weight:700;
  padding-right:.06em;background:var(--grad-sun);-webkit-background-clip:text;background-clip:text;color:transparent;
  opacity:0;transform:translateY(115%);
  transition:transform .66s var(--ease),opacity .5s var(--ease)}
.rotator-word.is-active{opacity:1;transform:translateY(0)}
.rotator-word.is-above{opacity:0;transform:translateY(-115%)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media (prefers-reduced-motion:reduce){
  .rotator-word{transition:none}
  .rotator-word:not(.is-active){display:none}   /* show only the first word, no motion */
}
.hero-sub{margin-top:24px;font-size:17.5px;line-height:1.7;color:var(--ink-soft);max-width:30em}
.hero-cta{display:flex;gap:14px;flex-wrap:wrap;margin-top:34px}
.hero-trust{display:flex;align-items:center;gap:22px;margin-top:38px;flex-wrap:wrap}
.hero-trust .ht{display:flex;align-items:center;gap:9px;font-size:13.5px;font-weight:500;color:var(--ink-soft)}
.hero-trust .ht b{color:var(--ink);font-weight:700}
.hero-trust .sep{width:1px;height:26px;background:var(--line)}
.hero-trust .ht-link{transition:color .25s,transform .25s var(--ease)}
.hero-trust .ht-link:hover{color:var(--sun-deep);transform:translateY(-1px)}
.hero-trust .ht-link:hover b{color:var(--sun-deep)}
.stars{color:var(--sun);letter-spacing:1px;font-size:14px}

/* hero visual */
.hero-visual{position:relative}
.hero-card{position:relative;border-radius:var(--r-xl);overflow:hidden;
  box-shadow:var(--shadow-lg);aspect-ratio:4/4.4;
  background:linear-gradient(155deg,var(--slate) 0%,var(--slate-deep) 60%,#2f3e45 100%);
  animation:floaty 7s var(--ease) infinite}
.hero-card img{position:relative;z-index:1;width:100%;height:100%;object-fit:cover}
.hero-card .tint{position:absolute;inset:0;z-index:2;background:linear-gradient(180deg,rgba(244,122,30,.12),transparent 35%,rgba(33,30,27,.42));mix-blend-mode:multiply}

.float-stat{position:absolute;left:-26px;bottom:46px;z-index:3;border-radius:var(--r-md);
  padding:16px 20px;animation:floaty 7s var(--ease) .8s infinite}
.float-stat .n{font-family:"Montserrat";font-size:30px;font-weight:700;letter-spacing:-.02em;line-height:1;color:var(--ink)}
.float-stat .l{font-size:11.5px;font-weight:600;letter-spacing:.04em;color:var(--ink-soft);margin-top:5px}
.float-badge{position:absolute;right:-18px;bottom:-18px;z-index:3;display:flex;align-items:center;gap:10px;
  color:#FDF6EA;border-radius:999px;padding:11px 20px;
  font-size:12.5px;font-weight:600;letter-spacing:.02em;animation:floaty 7s var(--ease) .4s infinite}
.float-badge .ck{width:20px;height:20px;border-radius:50%;background:var(--grad-sun);display:grid;place-items:center;color:#2A1604;font-size:12px;font-weight:800;flex:none}

/* ---------- Liquid glass (frost + glass rim, with SVG refraction where supported) ---------- */
.liquid-glass{position:relative;background:rgba(255,255,255,.58);
  -webkit-backdrop-filter:blur(7px) saturate(1.5);backdrop-filter:blur(7px) saturate(1.5);
  border:1px solid rgba(255,255,255,.55);
  box-shadow:0 8px 22px -10px rgba(31,22,12,.4),
    inset 0 1px 1px rgba(255,255,255,.95),
    inset 1.5px 1.5px 1px -1.5px rgba(255,255,255,1),
    inset -2px -2px 2px -2px rgba(150,118,78,.5),
    inset 0 0 10px 4px rgba(255,255,255,.14)}
@supports ((-webkit-backdrop-filter:url(#liquid-glass)) or (backdrop-filter:url(#liquid-glass))){
  .liquid-glass{-webkit-backdrop-filter:url(#liquid-glass) blur(2px) saturate(1.5);
    backdrop-filter:url(#liquid-glass) blur(2px) saturate(1.5)}
}
.liquid-glass.lg-dark{background:rgba(20,15,11,.42);border-color:rgba(255,255,255,.18);
  box-shadow:0 10px 24px -10px rgba(0,0,0,.6),
    inset 0 1px 1px rgba(255,255,255,.55),
    inset 1.5px 1.5px 1px -1.5px rgba(255,255,255,.7),
    inset -2px -2px 2px -2px rgba(0,0,0,.55),
    inset 0 0 10px 4px rgba(255,255,255,.05)}
:root[data-theme="dark"] .liquid-glass:not(.lg-dark){background:rgba(42,36,29,.5);border-color:rgba(255,255,255,.14);
  box-shadow:0 10px 24px -10px rgba(0,0,0,.7),
    inset 0 1px 1px rgba(255,255,255,.35),
    inset 1.5px 1.5px 1px -1.5px rgba(255,255,255,.5),
    inset -2px -2px 2px -2px rgba(0,0,0,.5),
    inset 0 0 10px 4px rgba(255,255,255,.05)}
:root[data-theme="dark"] .float-stat .n{color:#F1EAE0}

@keyframes floaty{0%,100%{transform:translateY(0)}50%{transform:translateY(-9px)}}

/* ---------- Carousel (hero + why image boxes) ---------- */
.carousel{position:relative;isolation:isolate;
  /* force WebKit/iOS Safari to clip rounded corners over transformed/animated children */
  -webkit-mask-image:-webkit-radial-gradient(#fff,#fff);mask-image:radial-gradient(#fff,#fff)}
.car-track{display:flex;height:100%;transition:transform .6s var(--ease);will-change:transform}
.car-slide{flex:0 0 100%;min-width:100%;width:100%;height:100%;object-fit:cover;display:block}
.car-btn{position:absolute;top:50%;transform:translateY(-50%);z-index:6;width:42px;height:42px;
  border-radius:50%;border:1px solid rgba(255,255,255,.5);background:rgba(18,14,10,.42);
  backdrop-filter:blur(8px);color:#fff;font-size:24px;line-height:0;display:grid;place-items:center;
  cursor:pointer;opacity:0;transition:opacity .3s,background .3s ease,color .3s,transform .3s var(--ease)}
.car-btn.prev{left:14px}.car-btn.next{right:14px}
.carousel:hover .car-btn{opacity:1}
.car-btn:hover{background:var(--grad-sun);color:#2A1604;border-color:transparent;transform:translateY(-50%) scale(1.08)}
.car-btn:focus-visible{opacity:1;outline:3px solid rgba(244,122,30,.65);outline-offset:2px}
.car-dots{position:absolute;bottom:16px;left:0;right:0;z-index:6;display:flex;justify-content:center;gap:7px}
.car-dots button{width:8px;height:8px;padding:0;border:0;border-radius:50%;cursor:pointer;
  background:rgba(255,255,255,.5);box-shadow:0 1px 4px rgba(0,0,0,.4);transition:all .35s var(--ease)}
.car-dots button.on{background:#fff;width:22px;border-radius:99px}
@media (max-width:620px){.car-btn{opacity:1;width:38px;height:38px}}

/* ---------- Marquee trust strip ---------- */
.strip{position:relative;z-index:1;background:var(--ink-surface);color:#EDE4D6;overflow:hidden;border-top:1px solid rgba(249,197,19,.10)}
.strip::before{content:"";position:absolute;inset:0;background:radial-gradient(120% 140% at 50% -40%,rgba(244,122,30,.10),transparent 60%);pointer-events:none}
.strip .row{display:flex;align-items:center;gap:0;padding:18px 0}
.strip .wrap{position:relative;z-index:1;display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap}
.strip .item{display:flex;align-items:center;gap:14px;padding:8px 4px}
.strip .ico{width:38px;height:38px;flex:none;border-radius:12px;background:linear-gradient(135deg,rgba(249,197,19,.20),rgba(244,122,30,.14));border:1px solid rgba(249,197,19,.24);box-shadow:inset 0 1px 0 rgba(255,255,255,.08);display:grid;place-items:center;color:#F9C513}
.strip .big{font-family:"Montserrat";font-size:22px;font-weight:700;letter-spacing:-.02em;line-height:1;color:#fff}
.strip .big .st{color:#F9C513;margin-left:1px}
.strip .cap{font-size:11.5px;font-weight:500;letter-spacing:.03em;color:#B9AE9E;margin-top:4px}

/* ---------- Section primitives ---------- */
section{position:relative;z-index:1}
.sec-pad{padding:96px 0}
.sec-head{max-width:680px;margin-bottom:54px}
.kicker{display:inline-flex;align-items:center;gap:9px;font-size:12px;font-weight:700;
  letter-spacing:.2em;text-transform:uppercase;color:var(--sun-deep);margin-bottom:18px}
.kicker::before{content:"";width:26px;height:2px;background:var(--grad-sun);border-radius:2px}
h2.sec-title{font-family:"Montserrat";font-weight:700;font-size:clamp(28px,3.4vw,42px);
  line-height:1.12;letter-spacing:-.025em;color:var(--ink)}
h2.sec-title em{font-style:normal;color:var(--sun-deep)}
/* colorize: cool secondary owns the trust + geography sections (warm stays the brand) */
.why .kicker,.areas .kicker{color:var(--sky-deep)}
.why .kicker::before,.areas .kicker::before{background:var(--grad-sky)}
.why h2.sec-title em,.areas h2.sec-title em{color:var(--sky-deep)}
.why .vrow .vn{color:#7CC8EE}
.why .vrow:hover{border-color:rgba(46,151,212,.3)}
.areas .chip:not(.primary):hover{border-color:rgba(46,151,212,.5)}
.areas .chip:not(.primary) .pin{background:var(--grad-sky)}
.sec-lead{margin-top:18px;font-size:16.5px;color:var(--ink-soft);line-height:1.7;max-width:62ch}

/* ---------- Services (photo cards) ---------- */
.svc-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.svc{position:relative;min-height:366px;border-radius:var(--r-lg);overflow:hidden;
  display:flex;flex-direction:column;justify-content:flex-end;padding:26px;color:#fff;
  border:1px solid rgba(255,255,255,.10);box-shadow:var(--shadow-sm);
  transition:transform .28s var(--ease),box-shadow .3s var(--ease)}
.svc-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0;
  transition:transform .9s var(--ease)}
.svc-scrim{position:absolute;inset:0;z-index:1;
  background:linear-gradient(to top,rgba(12,10,8,.95) 0%,rgba(12,10,8,.74) 30%,rgba(12,10,8,.26) 58%,rgba(12,10,8,.06) 82%),
            radial-gradient(120% 55% at 50% 0%,rgba(12,10,8,.55),transparent 55%)}
.svc:hover{transform:translateY(-6px);box-shadow:var(--shadow-lg)}
.svc:hover .svc-bg{transform:scale(1.07)}
.svc-body{position:relative;z-index:2}
.svc h3{font-family:"Montserrat";font-weight:700;font-size:20px;letter-spacing:-.01em;margin-bottom:8px;color:#fff;text-shadow:0 2px 16px rgba(0,0,0,.5)}
.svc p{font-size:14px;color:rgba(255,255,255,.88);line-height:1.6;text-shadow:0 1px 12px rgba(0,0,0,.55)}
.svc .more{display:inline-flex;align-items:center;gap:7px;margin-top:16px;font-size:13px;font-weight:700;letter-spacing:.02em;color:#fff}
.svc .more .arr{transition:transform .4s var(--ease);color:var(--gold)}
.svc:hover .more .arr{transform:translateX(4px)}
.svc .tag{position:absolute;top:22px;right:22px;z-index:2;font-size:10px;font-weight:700;letter-spacing:.08em;
  text-transform:uppercase;color:#2A1604;background:var(--grad-sun);padding:5px 11px;border-radius:999px;box-shadow:0 8px 18px -6px rgba(0,0,0,.7)}

/* Homepage services: app-like tile grid — name only, hover/focus blurs the image
   and reveals the description. Scoped to #services so sub-page grids are untouched. */
#services .svc-grid{grid-template-columns:repeat(4,1fr);gap:18px}
#services .svc{min-height:300px;justify-content:center;align-items:center;text-align:center;padding:30px 26px}
#services .svc.feat{grid-column:span 2;min-height:344px}
#services .svc-bg{transition:transform .9s var(--ease),filter .55s var(--ease)}
#services .svc-scrim{background:linear-gradient(to top,rgba(12,10,8,.66),rgba(12,10,8,.22) 55%,rgba(12,10,8,.06));transition:background .45s var(--ease)}
#services .svc:hover .svc-bg,#services .svc:focus-visible .svc-bg{transform:scale(1.06);filter:blur(6px) brightness(.56)}
#services .svc:hover .svc-scrim,#services .svc:focus-visible .svc-scrim{background:rgba(10,8,6,.6)}
#services .svc-body{align-items:center}
#services .svc h3{font-size:23px;margin:0}
#services .svc.feat h3{font-size:27px}
#services .svc p{max-width:36ch;opacity:0;max-height:0;margin:0;transform:translateY(6px);overflow:hidden;
  transition:opacity .4s var(--ease),max-height .55s var(--ease),margin .4s var(--ease),transform .4s var(--ease)}
#services .svc:hover p,#services .svc:focus-visible p{opacity:1;max-height:300px;margin-top:13px;transform:translateY(0)}
#services .svc .more{opacity:0;max-height:0;margin:0;padding-inline:10px;transform:translateY(6px);overflow:hidden;
  transition:opacity .4s var(--ease) .04s,max-height .55s var(--ease),margin .4s var(--ease),transform .4s var(--ease) .04s,color .25s}
#services .svc:hover .more,#services .svc:focus-visible .more{opacity:1;max-height:46px;margin-top:14px;transform:translateY(0)}
/* keep the "Most popular" pill above the revealed description */
#services .svc .tag{z-index:3}
/* tap-to-reveal state (touch devices): same look as hover, toggled by JS */
#services .svc.is-open .svc-bg{transform:scale(1.06);filter:blur(6px) brightness(.56)}
#services .svc.is-open .svc-scrim{background:rgba(10,8,6,.6)}
#services .svc.is-open p{opacity:1;max-height:300px;margin-top:13px;transform:translateY(0)}
#services .svc.is-open .more{opacity:1;max-height:46px;margin-top:14px;transform:translateY(0)}
@media (max-width:980px){#services .svc-grid{grid-template-columns:repeat(2,1fr)}#services .svc.feat{grid-column:span 2}}
@media (max-width:620px){
  #services .svc-grid{grid-template-columns:repeat(2,1fr);gap:12px}
  #services .svc,#services .svc.feat{grid-column:auto;min-height:188px;padding:18px 14px}
  #services .svc h3,#services .svc.feat h3{font-size:15.5px}
  #services .svc .tag{top:12px;right:12px;font-size:9px;padding:4px 8px}
}

/* ---------- Why / value ---------- */
.why{position:relative;background:linear-gradient(180deg,var(--cream-2),var(--cream));
  border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.why .wrap{display:grid;grid-template-columns:.78fr 1.22fr;gap:60px;align-items:center}
.why-visual{position:relative;border-radius:var(--r-xl);overflow:hidden;aspect-ratio:4/4.3;
  max-width:420px;box-shadow:var(--shadow-lg);
  background:linear-gradient(155deg,var(--slate),var(--slate-deep))}
.why-visual img{position:relative;z-index:1;width:100%;height:100%;object-fit:cover}
.why-visual .tint{position:absolute;inset:0;z-index:2;background:linear-gradient(160deg,rgba(244,122,30,.22),rgba(33,30,27,.5));mix-blend-mode:multiply}
.why-quote{position:absolute;left:24px;right:24px;bottom:24px;color:#fff;z-index:2}
.why-quote .q{font-family:"Montserrat";font-weight:600;font-size:18px;line-height:1.45;letter-spacing:-.01em;text-shadow:0 2px 18px rgba(0,0,0,.45)}
.why-list{display:flex;flex-direction:column;gap:8px;margin-top:36px}
.vrow{display:flex;gap:18px;align-items:flex-start;padding:20px 22px;border-radius:var(--r-md);
  border:1px solid transparent;transition:background .4s ease,border-color .4s ease,transform .4s var(--ease)}
.vrow:hover{background:var(--white);border-color:var(--line);transform:translateX(4px);box-shadow:var(--shadow-sm)}
.vrow .vn{flex:none;width:42px;height:42px;border-radius:12px;background:var(--ink-surface);color:var(--gold);
  display:grid;place-items:center;font-family:"Montserrat";font-weight:600;font-size:16px}
.vrow h4{font-size:16.5px;font-weight:700;margin-bottom:5px}
.vrow p{font-size:14px;color:var(--ink-soft);line-height:1.6}

/* ---------- Areas ---------- */
.areas .wrap{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center}
.area-chips{display:flex;flex-wrap:wrap;gap:12px;margin-top:30px}
.chip{display:inline-flex;align-items:center;gap:9px;background:var(--white);border:1px solid var(--line);
  border-radius:999px;padding:11px 20px;font-size:14px;font-weight:600;color:var(--ink);
  transition:transform .4s var(--ease),box-shadow .4s var(--ease),border-color .4s}
.chip:hover{transform:translateY(-2px);box-shadow:var(--shadow-sm);border-color:rgba(244,122,30,.45)}
.chip .pin{width:7px;height:7px;border-radius:50%;background:var(--grad-sun)}
.chip.primary{background:var(--ink-surface);color:#FDF6EA;border-color:var(--ink-surface)}
.chip.primary .pin{box-shadow:0 0 8px rgba(249,197,19,.9)}
.area-map{position:relative;aspect-ratio:1/1;border-radius:var(--r-xl);overflow:hidden;
  border:1px solid var(--line);box-shadow:var(--shadow-md);background:linear-gradient(160deg,#EAF0F1,#DCE6E8)}
.area-map iframe{position:absolute;inset:0;width:100%;height:100%;border:0;display:block;filter:saturate(.92) contrast(1.02)}
.area-map .map-badge{position:absolute;left:14px;bottom:14px;z-index:2;pointer-events:none;
  display:inline-flex;align-items:center;gap:9px;font-size:12.5px;font-weight:700;letter-spacing:.01em;color:var(--ink);
  background:rgba(255,255,255,.82);backdrop-filter:blur(8px) saturate(1.4);-webkit-backdrop-filter:blur(8px) saturate(1.4);
  border:1px solid rgba(255,255,255,.7);border-radius:999px;padding:9px 15px;
  box-shadow:0 8px 22px -10px rgba(33,30,27,.4)}
.area-map .map-badge .dot{width:9px;height:9px;border-radius:50%;background:var(--grad-sun);
  box-shadow:0 0 0 4px rgba(244,122,30,.18)}
.area-map .map-link{position:absolute;top:14px;right:14px;z-index:2;font-size:12px;font-weight:700;color:var(--ink);
  background:rgba(255,255,255,.82);backdrop-filter:blur(8px) saturate(1.4);-webkit-backdrop-filter:blur(8px) saturate(1.4);
  border:1px solid rgba(255,255,255,.7);border-radius:999px;padding:8px 13px;
  box-shadow:0 8px 22px -10px rgba(33,30,27,.4);transition:transform .3s var(--ease),background .3s,color .3s}
.area-map .map-link:hover{transform:translateY(-2px);background:#fff;color:var(--sun-deep)}

/* ---------- Testimonials ---------- */
.reviews-head{display:flex;justify-content:space-between;align-items:center;gap:28px;flex-wrap:wrap;margin-bottom:46px}
.gcard{display:inline-flex;align-items:center;gap:14px;background:var(--white);border:1px solid var(--line);
  border-radius:var(--r-md);padding:14px 22px;box-shadow:var(--shadow-sm);
  transition:transform .4s var(--ease),box-shadow .4s var(--ease),border-color .4s}
.gcard:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);border-color:rgba(244,122,30,.4)}
.gcard .gicon{width:42px;height:42px;border-radius:11px;background:var(--cream-2);display:grid;place-items:center;flex:none}
.gtext{display:flex;flex-direction:column;gap:3px}
.grate{display:flex;align-items:center;gap:9px;line-height:1}
.grate b{font-size:22px;font-weight:800;color:var(--ink)}
.gsub{font-size:12px;font-weight:600;color:var(--ink-soft)}
.tst-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.tst{background:var(--white);border:1px solid var(--line);border-radius:var(--r-lg);padding:30px 28px;box-shadow:var(--shadow-sm);
  display:flex;flex-direction:column;transition:transform .28s var(--ease),box-shadow .3s var(--ease)}
.tst:hover{transform:translateY(-4px);box-shadow:var(--shadow-md)}
.tst .stars{font-size:16px;margin-bottom:16px}
.tst blockquote{margin:0;font-size:15.5px;line-height:1.66;color:var(--ink);flex:1}
.tst .who{display:flex;align-items:center;gap:12px;margin-top:22px;padding-top:20px;border-top:1px solid var(--line)}
.tst .av{width:42px;height:42px;border-radius:50%;background:var(--grad-sun);color:#2A1604;
  display:grid;place-items:center;font-weight:800;font-size:14px;flex:none}
.tst .av.av-slate{background:linear-gradient(135deg,var(--slate),var(--slate-deep));color:#fff}
.tst .who b{font-size:14px;font-weight:700;display:block}
.tst .who span{font-size:12.5px;color:var(--ink-faint)}
.reviews-cta{display:flex;justify-content:center;margin-top:40px}

/* ---------- Solar savings calculator ---------- */
.calc{background:linear-gradient(180deg,var(--cream-2),var(--cream));border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.calc-grid{display:grid;grid-template-columns:.95fr 1.05fr;gap:60px;align-items:center}
.calc-intro .sec-lead strong{color:var(--ink);font-weight:700}
.calc-facts{margin-top:28px;display:flex;flex-direction:column;gap:14px}
.calc-facts li{display:flex;align-items:center;gap:13px;font-size:14.5px;font-weight:500;color:var(--ink-soft)}
.calc-facts .cf-ico{width:32px;height:32px;flex:none;border-radius:9px;background:var(--grad-sun-soft);
  border:1px solid rgba(244,122,30,.25);display:grid;place-items:center;color:var(--sun-deep)}

.calc-card{position:relative;border-radius:var(--r-xl);overflow:hidden;
  background:linear-gradient(160deg,#2a2622,#1b1815);box-shadow:var(--shadow-lg)}
.cc-glow{position:absolute;inset:0;z-index:0;
  background:radial-gradient(420px 260px at 88% -10%,rgba(244,122,30,.45),transparent 60%),
            radial-gradient(360px 240px at 100% 20%,rgba(249,197,19,.28),transparent 60%)}
.cc-inner{position:relative;z-index:1;padding:38px 36px}
.cc-field{margin-bottom:22px}
.cc-label{display:flex;justify-content:space-between;align-items:baseline;gap:14px;margin-bottom:11px;
  font-size:13.5px;font-weight:600;color:#D8CFC1}
.cc-val{font-size:15px;font-weight:800;color:#fff;background:rgba(244,122,30,.18);
  border:1px solid rgba(244,122,30,.35);padding:3px 11px;border-radius:999px;min-width:54px;text-align:center;flex:none}
.cc-field input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:6px;border-radius:999px;
  background:linear-gradient(90deg,var(--sun),var(--gold)) no-repeat;background-size:var(--p,50%) 100%;
  background-color:rgba(255,255,255,.12);cursor:pointer}
.cc-field input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:20px;
  border-radius:50%;background:#fff;border:3px solid var(--sun);box-shadow:0 4px 12px rgba(0,0,0,.4);
  transition:transform .2s var(--ease)}
.cc-field input[type=range]::-webkit-slider-thumb:hover{transform:scale(1.15)}
.cc-field input[type=range]::-moz-range-thumb{width:20px;height:20px;border-radius:50%;background:#fff;border:3px solid var(--sun);box-shadow:0 4px 12px rgba(0,0,0,.4)}
.cc-field input[type=range]:focus-visible{outline:3px solid rgba(244,122,30,.5);outline-offset:4px}

.cc-seg{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.cc-seg button{font-family:"Montserrat";font-size:12.5px;font-weight:600;color:#CFC6B8;cursor:pointer;
  padding:11px 6px;border-radius:11px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);
  transition:background .3s,color .3s,border-color .3s,transform .2s var(--ease)}
.cc-seg button:hover{transform:translateY(-1px);color:#fff}
.cc-seg button.on{background:var(--grad-sun);color:#2A1604;border-color:transparent;font-weight:800}

.cc-results{margin-top:28px;padding-top:26px;border-top:1px solid rgba(255,255,255,.1)}
.cc-tiles{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.cc-tile{background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1);border-radius:var(--r-md);padding:18px 20px}
.cc-tile.accent{background:linear-gradient(150deg,rgba(244,122,30,.22),rgba(249,197,19,.12));border-color:rgba(244,122,30,.4)}
.cc-tnum{font-family:"Montserrat";font-size:34px;font-weight:800;line-height:1;color:#fff;letter-spacing:-.02em}
.cc-tile.accent .cc-tnum{background:var(--grad-sun);-webkit-background-clip:text;background-clip:text;color:transparent}
.cc-tlbl{font-size:11.5px;font-weight:600;letter-spacing:.04em;color:#B3A99B;margin-top:8px;text-transform:uppercase}
.cc-bars{margin-top:22px;display:flex;flex-direction:column;gap:12px}
.cc-barrow{display:grid;grid-template-columns:78px 1fr 44px;align-items:center;gap:12px}
.cc-bk{font-size:12px;font-weight:600;color:#B3A99B}
.cc-track{height:10px;border-radius:999px;background:rgba(255,255,255,.1);overflow:hidden}
.cc-fill{height:100%;border-radius:999px;width:0;transition:width .7s var(--ease)}
.cc-fill.dirty{background:linear-gradient(90deg,#8a7d6c,#b9a07e)}
.cc-fill.clean{background:var(--grad-sky)}   /* clean = fresh water-blue vs the muddy "soiled" bar */
.cc-bpct{font-size:12.5px;font-weight:800;color:#fff;text-align:right}
.cc-rec{margin-top:22px;font-size:13.5px;font-weight:600;color:#F4D9B0;background:rgba(244,122,30,.12);
  border:1px solid rgba(244,122,30,.25);border-radius:12px;padding:13px 16px;line-height:1.45}
.cc-go{margin-top:18px;width:100%;justify-content:center}
.cc-disc{margin-top:14px;font-size:11px;line-height:1.5;color:#8A8073}

/* ---------- Gallery ---------- */
.gallery{background:linear-gradient(180deg,var(--cream-2),var(--cream));border-top:1px solid var(--line)}
.gal-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;grid-auto-flow:dense}
.gal-item{position:relative;padding:0;margin:0;border:0;cursor:pointer;aspect-ratio:1;
  border-radius:var(--r-md);overflow:hidden;background:var(--cream-3);box-shadow:var(--shadow-sm);
  transition:transform .5s var(--ease),box-shadow .5s var(--ease)}
.gal-item.feature{grid-column:span 2;grid-row:span 2;aspect-ratio:auto}
.gal-item img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;transition:transform .7s var(--ease)}
.gal-item::after{content:"";position:absolute;inset:0;z-index:1;
  background:linear-gradient(to top,rgba(12,10,8,.32),transparent 50%);opacity:0;transition:opacity .4s}
.gal-item:hover::after{opacity:1}
.gal-zoom{position:absolute;top:12px;right:12px;z-index:2;width:34px;height:34px;border-radius:50%;
  display:grid;place-items:center;color:#fff;background:rgba(18,14,10,.42);backdrop-filter:blur(6px);
  border:1px solid rgba(255,255,255,.35);opacity:0;transform:scale(.8);
  transition:opacity .4s,transform .4s var(--ease)}
.gal-item:hover .gal-zoom{opacity:1;transform:scale(1)}
.gal-item:hover{transform:translateY(-4px);box-shadow:var(--shadow-md)}
.gal-item:hover img{transform:scale(1.08)}
.gal-item:focus-visible{outline:3px solid var(--sun);outline-offset:3px}
@media (max-width:900px){.gal-grid{grid-template-columns:repeat(3,1fr)}}
@media (max-width:560px){
  .gal-grid{grid-template-columns:repeat(2,1fr);gap:10px}
  .gal-item.feature{grid-column:span 1;grid-row:span 1;aspect-ratio:1}
}

/* ---------- Lightbox ---------- */
.lightbox{position:fixed;inset:0;z-index:100;background:rgba(10,8,6,.93);backdrop-filter:blur(7px);
  display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .35s ease}
.lightbox.on{opacity:1;pointer-events:auto}
.lb-img{max-width:88vw;max-height:84vh;border-radius:16px;box-shadow:0 40px 90px rgba(0,0,0,.65);
  transform:scale(.95);transition:transform .4s var(--ease)}
.lightbox.on .lb-img{transform:scale(1)}
.lb-btn{position:absolute;border:1px solid rgba(255,255,255,.3);background:rgba(255,255,255,.1);color:#fff;
  cursor:pointer;display:grid;place-items:center;transition:background .3s,color .3s,border-color .3s}
.lb-btn:hover{background:var(--grad-sun);color:#2A1604;border-color:transparent}
.lb-btn:focus-visible{outline:3px solid rgba(244,122,30,.7);outline-offset:2px}
.lb-close{top:22px;right:24px;width:46px;height:46px;border-radius:50%;font-size:18px}
.lb-nav{top:50%;transform:translateY(-50%);width:52px;height:52px;border-radius:50%;font-size:26px;line-height:0}
.lb-prev{left:18px}.lb-next{right:18px}
.lb-count{position:absolute;bottom:24px;left:0;right:0;text-align:center;color:rgba(255,255,255,.7);font-size:13px;font-weight:600;letter-spacing:.05em}
@media (max-width:560px){.lb-nav{width:44px;height:44px;font-size:22px}.lb-prev{left:8px}.lb-next{right:8px}}

/* ---------- Quote / contact form ---------- */
.quote{position:relative;z-index:1;padding:24px 0 110px;scroll-margin-top:90px}
.quote-panel{position:relative;overflow:hidden;border-radius:var(--r-xl);background:var(--ink-surface);
  padding:54px 56px;box-shadow:var(--shadow-lg), inset 0 0 0 1px rgba(249,197,19,.10)}
.quote-panel::before{content:"";position:absolute;inset:0;z-index:0;
  background:radial-gradient(560px 340px at 92% -6%,rgba(244,122,30,.5),transparent 60%),
            radial-gradient(460px 320px at 4% 108%,rgba(46,151,212,.30),transparent 60%)}
.cta-sun{position:absolute;right:-44px;top:-44px;width:230px;height:230px;z-index:0;opacity:.8;
  stroke:rgba(249,197,19,.55);stroke-width:5;animation:spin-slow 80s linear infinite}
.qt-grid{position:relative;z-index:1;display:grid;grid-template-columns:.86fr 1.14fr;gap:52px;align-items:start}

/* left column */
.qt-kicker{color:var(--gold)}
.qt-info h2{font-family:"Montserrat";font-weight:700;font-size:clamp(27px,3.2vw,40px);line-height:1.12;
  letter-spacing:-.025em;color:#fff;text-wrap:balance}
.qt-info h2 em{font-style:normal;background:var(--grad-sun);-webkit-background-clip:text;background-clip:text;color:transparent}
.qt-info > p{margin-top:16px;color:#CFC5B6;font-size:16px;line-height:1.65;max-width:34ch}
.qt-points{margin-top:24px;display:flex;flex-direction:column;gap:11px}
.qt-points li{display:flex;align-items:center;gap:11px;font-size:14.5px;font-weight:500;color:#E7DED0}
.qt-ck{width:22px;height:22px;flex:none;border-radius:50%;background:var(--grad-sun);color:#2A1604;
  display:grid;place-items:center;font-size:12px;font-weight:800}
.qt-contact{margin-top:28px;padding-top:24px;border-top:1px solid rgba(255,255,255,.12);
  display:flex;flex-direction:column;gap:13px}
.qt-contact a,.qt-hours{display:flex;align-items:center;gap:12px;font-size:14.5px;font-weight:600;color:#EDE4D6;transition:color .25s}
.qt-contact a:hover{color:var(--gold)}
.qt-hours{color:#B9AE9E;font-weight:500}
.qt-ic{width:32px;height:32px;flex:none;border-radius:9px;background:rgba(244,122,30,.16);display:grid;place-items:center;color:var(--gold)}

/* form */
.qt-form{position:relative;z-index:1}
.qt-hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}
.qt-field{margin-bottom:16px}
.qt-row2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.qt-field label,.qt-fieldset legend{display:block;font-size:13px;font-weight:600;color:#D8CFC1;margin-bottom:8px;padding:0}
.qt-opt{font-weight:500;color:#8E8676;text-transform:none;letter-spacing:0}
.qt-form input[type=text],.qt-form input[type=tel],.qt-form input[type=email],.qt-form select,.qt-form textarea{
  width:100%;font-family:inherit;font-size:15px;color:#fff;background:rgba(255,255,255,.06);
  border:1px solid rgba(255,255,255,.15);border-radius:12px;padding:13px 15px;
  transition:border-color .25s,background .25s,box-shadow .25s}
.qt-form ::placeholder{color:rgba(255,255,255,.46)}
.qt-form input:focus,.qt-form select:focus,.qt-form textarea:focus{
  outline:none;border-color:var(--sun);background:rgba(255,255,255,.1);box-shadow:0 0 0 3px rgba(244,122,30,.28)}
.qt-form textarea{resize:vertical;min-height:86px;line-height:1.5}
.qt-form select{appearance:none;-webkit-appearance:none;cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' fill='none' stroke='%23cfc6b8' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='M3 5l4 4 4-4'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 15px center;padding-right:40px}
.qt-form select option{color:#1a1a1a}
.qt-fieldset{border:0;margin:0 0 16px;min-inline-size:0}
.qt-pills{display:flex;flex-wrap:wrap;gap:9px}
.qt-pill{position:relative;display:inline-flex;align-items:center;cursor:pointer}
.qt-pill input{position:absolute;opacity:0;width:0;height:0}
.qt-pill span{padding:9px 15px;border-radius:999px;font-size:13px;font-weight:600;color:#D2C9BB;
  background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.16);
  transition:background .25s,color .25s,border-color .25s,transform .15s var(--ease)}
.qt-pill:hover span{color:#fff;border-color:rgba(255,255,255,.3)}
.qt-pill input:checked + span{background:var(--grad-sun);color:#2A1604;border-color:transparent;font-weight:700}
.qt-pill input:focus-visible + span{box-shadow:0 0 0 3px rgba(244,122,30,.4)}
.qt-seg{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.qt-seg label{position:relative;cursor:pointer}
.qt-seg input{position:absolute;opacity:0;width:0;height:0}
.qt-seg span{display:block;text-align:center;padding:11px 6px;border-radius:11px;font-size:13.5px;font-weight:600;
  color:#CFC6B8;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.14);transition:all .25s}
.qt-seg label:hover span{color:#fff}
.qt-seg input:checked + span{background:var(--grad-sun);color:#2A1604;border-color:transparent;font-weight:800}
.qt-seg input:focus-visible + span{box-shadow:0 0 0 3px rgba(244,122,30,.4)}
.qt-submit{width:100%;justify-content:center;margin-top:6px;font-size:15.5px;padding:16px 26px}
.qt-submit.is-loading{opacity:.7;pointer-events:none}
.qt-fine{margin-top:14px;font-size:12.5px;line-height:1.55;color:#9A9082}
.qt-fine a{color:var(--gold);font-weight:600}
.qt-err{margin-top:12px;font-size:13.5px;font-weight:600;color:#FF9C6E;
  background:rgba(255,90,60,.12);border:1px solid rgba(255,90,60,.3);border-radius:10px;padding:10px 14px}
/* validation: only flag fields once a submit was attempted */
.qt-form.show-errors input:invalid,.qt-form.show-errors select:invalid{
  border-color:#E0654E;box-shadow:0 0 0 3px rgba(224,101,78,.2)}

/* success */
.qt-success{position:relative;z-index:1;text-align:center;padding:30px 10px;max-width:34em;margin:0 auto}
.qt-success-mark{width:64px;height:64px;margin:0 auto 20px;border-radius:50%;background:var(--grad-sun);
  color:#2A1604;display:grid;place-items:center;font-size:30px;font-weight:800;
  box-shadow:0 12px 34px -10px rgba(244,122,30,.7)}
.qt-success h3{font-family:"Montserrat";font-weight:700;font-size:clamp(24px,3vw,32px);color:#fff;letter-spacing:-.02em}
.qt-success p{margin-top:12px;color:#CFC5B6;font-size:16px;line-height:1.6}
.qt-success a{color:var(--gold);font-weight:700}

/* ---------- Footer ---------- */
footer{position:relative;z-index:1;background:#1A1714;color:#C8BEB0;padding:72px 0 30px}
footer .wrap{display:grid;grid-template-columns:1.5fr 1fr 1fr 1.2fr;gap:40px}
footer .brand .word{color:#FBF7F0}
footer .fcol h5{font-size:12px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:#7F7768;margin:0 0 18px}
footer .fcol a{display:block;font-size:14px;color:#C8BEB0;padding:6px 0;transition:color .25s,transform .25s}
footer .fcol a:hover{color:var(--gold);transform:translateX(3px)}
footer .fabout p{font-size:14px;line-height:1.7;color:#A89E8F;margin-top:18px;max-width:24em}
footer .fcontact a{display:flex;align-items:center;gap:10px;font-size:14.5px;color:#E2D9CB;padding:7px 0;font-weight:500;transition:color .25s}
footer .fcontact a:hover{color:var(--gold)}
footer .fcontact .ic{width:30px;height:30px;border-radius:9px;background:rgba(244,122,30,.14);display:grid;place-items:center;color:var(--gold);flex:none}
.socials{display:flex;gap:10px;margin-top:22px}
.socials a{width:38px;height:38px;border-radius:11px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.08);
  display:grid;place-items:center;color:#C8BEB0;transition:background .3s,color .3s,transform .3s}
.socials a:hover{background:var(--grad-sun);color:#2A1604;transform:translateY(-3px);border-color:transparent}
.foot-bottom{border-top:1px solid rgba(255,255,255,.08);margin-top:52px;padding-top:24px;
  display:flex;justify-content:space-between;align-items:center;gap:18px;flex-wrap:wrap;
  font-size:12.5px;color:#867D6F}
.foot-bottom .badges{display:flex;gap:10px;align-items:center}
.foot-bottom .bdg{font-size:11px;font-weight:600;letter-spacing:.05em;color:#B9AE9E;
  border:1px solid rgba(255,255,255,.12);border-radius:999px;padding:6px 13px}

/* ---------- Reveal on load ----------
   Content is visible by default; we only hide-then-reveal when the
   browser supports animation AND the user hasn't asked for reduced motion.
   This keeps the page readable even if the animation never runs. */
@keyframes rise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:no-preference){
  .reveal{animation:rise .9s both var(--ease)}
  .d1{animation-delay:.05s}.d2{animation-delay:.15s}.d3{animation-delay:.25s}
  .d4{animation-delay:.35s}.d5{animation-delay:.45s}.d6{animation-delay:.55s}
}

/* ---------- Scroll reveal (grids/lists only; gated by .motion-ok so content
   is fully visible without JS, on reduced-motion, or in headless renders) ---------- */
html.motion-ok [data-reveal]{
  opacity:0;transform:translateY(26px) scale(.985);
  transition:opacity .7s var(--ease), transform .8s var(--ease);
  transition-delay:calc(min(var(--i,0),9) * 60ms);will-change:opacity,transform}
html.motion-ok [data-reveal].in{opacity:1;transform:none;will-change:auto}

/* ---------- Responsive ---------- */
@media (max-width:980px){
  .hero .wrap{grid-template-columns:1fr;gap:48px}
  .hero-visual{max-width:520px}
  .why .wrap,.areas .wrap,.calc-grid,.qt-grid{grid-template-columns:1fr;gap:40px}
  .reviews-head{align-items:flex-start}
  .svc-grid,.tst-grid{grid-template-columns:1fr 1fr}
  footer .wrap{grid-template-columns:1fr 1fr}
  .nav-links{display:none}
  .nav-toggle{display:flex}
  .topbar{display:none}
}
@media (max-width:620px){
  .wrap{width:min(100% - 32px,var(--maxw))}
  .svc-grid,.tst-grid{grid-template-columns:1fr}
  footer .wrap{grid-template-columns:1fr}
  .sec-pad{padding:68px 0}
  .quote-panel{padding:40px 24px}
  .qt-row2{grid-template-columns:1fr}
  .nav-cta .nav-quote{display:none}
  .hero-visual{margin-inline:auto}
  .hero-cta .btn{flex:1 1 auto;justify-content:center}
  /* trust strip: uniform 2-column grid so every item aligns (fixes Mon–Sat) */
  .strip .wrap{display:grid;grid-template-columns:1fr 1fr;gap:16px 18px}
  .strip .item{padding:2px 0}
  /* service pills: uniform 2-column grid instead of ragged wrap */
  .qt-pills{display:grid;grid-template-columns:1fr 1fr;gap:9px}
  .qt-pill,.qt-pill span{display:block}
  .qt-pill span{text-align:center;padding:11px 8px;font-size:12.5px}
  /* float chips: compact, left-aligned & stacked (in line), uniform dark style,
     no displacement halo so they stay tight to their content */
  .float-stat,.float-badge{
    left:12px!important;right:auto!important;width:max-content;max-width:calc(100% - 24px);
    background:rgba(20,15,11,.8)!important;border:1px solid rgba(255,255,255,.16)!important;
    -webkit-backdrop-filter:blur(9px) saturate(1.3)!important;backdrop-filter:blur(9px) saturate(1.3)!important;
    box-shadow:0 8px 20px -10px rgba(0,0,0,.55)!important}
  .float-stat{bottom:58px!important;padding:9px 14px}
  .float-stat .n{font-size:21px;color:#FFF7EA!important}
  .float-stat .l{font-size:9.5px;letter-spacing:.05em;color:#C9BFB0!important;margin-top:3px}
  .float-badge{bottom:14px!important;padding:8px 13px;gap:7px;font-size:11px;color:#FDF6EA}
  .float-badge .ck{width:16px;height:16px;font-size:9px}
}
@media (max-width:480px){
  .nav-phone .np-num{display:none}
  .float-stat{bottom:54px!important}
}

/* ===================== Service / sub-pages ===================== */
.crumb{display:flex;gap:9px;align-items:center;font-size:13px;color:var(--ink-faint);margin-bottom:20px;flex-wrap:wrap}
.crumb a{color:var(--ink-soft);font-weight:500;transition:color .2s}
.crumb a:hover{color:var(--sun-deep)}
.crumb .sep{opacity:.5}
.crumb b{color:var(--ink-soft);font-weight:600}

.subhero{position:relative;z-index:1;padding:34px 0 60px}
.subhero .wrap{display:grid;grid-template-columns:1.04fr .96fr;gap:54px;align-items:center}
.subhero .eyebrow{margin-bottom:20px}
.subhero h1{font-family:"Montserrat";font-weight:700;font-size:clamp(34px,4.7vw,56px);line-height:1.05;letter-spacing:-.025em;color:var(--ink);text-wrap:balance}
.subhero h1 em{font-style:normal;background:var(--grad-sun);-webkit-background-clip:text;background-clip:text;color:transparent}
.sky .subhero h1 em,.subhero.sky h1 em{background:var(--grad-sky);-webkit-background-clip:text;background-clip:text}
.subhero-lead{margin-top:20px;font-size:17px;line-height:1.7;color:var(--ink-soft);max-width:34em}
.subhero-cta{display:flex;gap:13px;flex-wrap:wrap;margin-top:30px}
.subhero-trust{display:flex;align-items:center;gap:10px 20px;margin-top:26px;flex-wrap:wrap;font-size:13.5px;color:var(--ink-soft)}
.subhero-trust span{display:inline-flex;align-items:center;gap:7px}
.subhero-trust b{color:var(--ink);font-weight:700}
.subhero-trust .stars{color:var(--sun);font-size:13px;letter-spacing:1px}
.subhero-visual{position:relative;border-radius:var(--r-xl);overflow:hidden;aspect-ratio:4/3.3;box-shadow:var(--shadow-lg);isolation:isolate;
  -webkit-mask-image:-webkit-radial-gradient(#fff,#fff);mask-image:radial-gradient(#fff,#fff)}
.subhero-visual img{width:100%;height:100%;object-fit:cover;display:block}
.subhero-visual .tag{position:absolute;left:16px;bottom:16px;z-index:2;font-size:11.5px;font-weight:700;letter-spacing:.04em;
  color:#fff;background:rgba(18,13,9,.55);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
  border:1px solid rgba(255,255,255,.18);border-radius:999px;padding:8px 14px}

/* overview split */
.split .wrap{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center}
.split.flip .prose{order:2}
.prose p{font-size:16.5px;line-height:1.78;color:var(--ink-soft);margin-top:16px;max-width:42em}
.prose .sec-title + p{margin-top:18px}
.split-img{border-radius:var(--r-lg);overflow:hidden;aspect-ratio:5/4;box-shadow:var(--shadow-md);isolation:isolate;
  -webkit-mask-image:-webkit-radial-gradient(#fff,#fff);mask-image:radial-gradient(#fff,#fff)}
.split-img img{width:100%;height:100%;object-fit:cover;display:block}

/* benefits */
.benefits{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.benefit{background:var(--white);border:1px solid var(--line);border-radius:var(--r-lg);padding:28px 26px;
  transition:transform .5s var(--ease),box-shadow .5s var(--ease),border-color .5s}
.benefit:hover{transform:translateY(-5px);box-shadow:var(--shadow-md);border-color:rgba(244,122,30,.35)}
.sky .benefit:hover{border-color:rgba(46,151,212,.4)}
.benefit .bi{width:46px;height:46px;border-radius:13px;display:grid;place-items:center;background:var(--grad-sun-soft);
  border:1px solid rgba(244,122,30,.25);color:var(--sun-deep);margin-bottom:18px}
.sky .benefit .bi{background:var(--sky-soft);border-color:rgba(46,151,212,.3);color:var(--sky-deep)}
.benefit h3{font-size:18px;font-weight:700;letter-spacing:-.01em;margin-bottom:9px}
.benefit p{font-size:14.5px;color:var(--ink-soft);line-height:1.62}

/* what's included */
.included{display:grid;grid-template-columns:1fr 1fr;gap:15px 34px;margin-top:6px;max-width:880px}
.included li{display:flex;gap:13px;align-items:flex-start;font-size:16px;color:var(--ink);line-height:1.5}
.inc-ck{width:24px;height:24px;flex:none;border-radius:50%;background:var(--grad-sun);color:#2A1604;display:grid;place-items:center;
  font-size:12px;font-weight:800;margin-top:1px}
.sky .inc-ck{background:var(--grad-sky);color:#06283a}

/* faq */
.faq{max-width:780px;margin-top:4px}
.faq details{border-bottom:1px solid var(--line)}
.faq summary{list-style:none;cursor:pointer;padding:20px 2px;display:flex;justify-content:space-between;gap:18px;align-items:center;
  font-size:17px;font-weight:600;color:var(--ink)}
.faq summary::-webkit-details-marker{display:none}
.faq summary .fq{flex:none;width:27px;height:27px;border-radius:50%;border:1px solid var(--line);display:grid;place-items:center;
  color:var(--sun-deep);transition:transform .35s var(--ease),background .3s,color .3s,border-color .3s;font-size:17px;line-height:1}
.faq details[open] summary .fq{transform:rotate(45deg);background:var(--grad-sun);color:#2A1604;border-color:transparent}
.sky.faq details[open] summary .fq,.faq.sky details[open] summary .fq{background:var(--grad-sky);color:#06283a}
.faq .fa{padding:0 2px 22px;font-size:15.5px;line-height:1.72;color:var(--ink-soft);max-width:64ch}

/* page-level CTA reuses .quote/.quote-panel; small variant */
.midcta .quote-panel{padding:48px 56px}
.midcta .qt-mini{position:relative;z-index:1;display:flex;justify-content:space-between;align-items:center;gap:30px;flex-wrap:wrap}
.midcta h2{font-family:"Montserrat";font-weight:700;font-size:clamp(24px,2.8vw,34px);line-height:1.12;letter-spacing:-.02em;color:#fff;max-width:18ch}
.midcta h2 em{font-style:normal;background:var(--grad-sun);-webkit-background-clip:text;background-clip:text;color:transparent}
.midcta .acts{display:flex;gap:13px;flex-wrap:wrap}

.othersec .sec-head{margin-bottom:38px}

@media (max-width:980px){
  .subhero .wrap,.split .wrap{grid-template-columns:1fr;gap:38px}
  .split.flip .prose{order:0}
  .benefits{grid-template-columns:1fr}
}
@media (max-width:620px){
  .included{grid-template-columns:1fr;gap:13px}
  .midcta .quote-panel{padding:34px 24px}
}

/* ===================== Nav "Services" dropdown ===================== */
.nav-dd{position:relative;display:flex;align-items:center}
.nav-dd-toggle{display:inline-flex;align-items:center;gap:5px;font-family:inherit;font-size:14.5px;font-weight:500;
  color:var(--ink-soft);background:none;border:0;padding:4px 0;cursor:pointer;position:relative;transition:color .25s}
.nav-dd-toggle::after{content:"";position:absolute;left:0;bottom:-2px;height:2px;width:0;background:var(--grad-sun);border-radius:2px;transition:width .4s var(--ease)}
.nav-dd-toggle:hover,.nav-dd-toggle[aria-expanded="true"]{color:var(--ink)}
.nav-dd-toggle:hover::after,.nav-dd-toggle[aria-expanded="true"]::after{width:100%}
.dd-caret{transition:transform .3s var(--ease)}
.nav-dd-toggle[aria-expanded="true"] .dd-caret{transform:rotate(180deg)}
.nav-dd-menu{position:absolute;top:calc(100% + 14px);left:50%;min-width:238px;padding:8px;z-index:40;
  transform:translateX(-50%) translateY(-8px);opacity:0;visibility:hidden;pointer-events:none;
  background:linear-gradient(180deg,rgba(255,253,250,.88),rgba(251,247,240,.8));
  -webkit-backdrop-filter:blur(22px) saturate(1.7);backdrop-filter:blur(22px) saturate(1.7);
  border:1px solid rgba(255,255,255,.55);border-radius:var(--r-md);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.7),0 24px 52px -18px rgba(33,30,27,.5);
  transition:opacity .25s ease,transform .28s var(--ease),visibility .25s}
.nav-dd-toggle[aria-expanded="true"] + .nav-dd-menu{opacity:1;visibility:visible;pointer-events:auto;transform:translateX(-50%) translateY(0)}
.nav-dd-menu::before{content:"";position:absolute;top:-6px;left:50%;transform:translateX(-50%) rotate(45deg);width:12px;height:12px;
  background:rgba(255,253,250,.9);border-left:1px solid rgba(255,255,255,.55);border-top:1px solid rgba(255,255,255,.55)}
.nav-dd-menu a{display:block;padding:10px 13px;border-radius:10px;font-size:14px;font-weight:500;color:var(--ink-soft);white-space:nowrap;
  transition:background .2s,color .2s,padding-left .2s}
.nav-dd-menu a:hover{background:var(--cream-2);color:var(--ink);padding-left:17px}
.nav-dd-menu .dd-all{margin-top:6px;padding-top:12px;border-top:1px solid var(--line);font-weight:600;color:var(--sun-deep)}
.nav-dd-menu .dd-all:hover{color:var(--sun-deep)}
:root[data-theme="dark"] .nav-dd-menu{background:linear-gradient(180deg,rgba(34,29,24,.92),rgba(20,17,14,.86));border-color:rgba(255,255,255,.12);box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 24px 52px -18px rgba(0,0,0,.8)}
:root[data-theme="dark"] .nav-dd-menu::before{background:rgba(34,29,24,.92);border-color:rgba(255,255,255,.12)}
:root[data-theme="dark"] .nav-dd-menu a:hover{background:rgba(255,255,255,.06)}

/* mobile Services dropdown (inside the mobile menu) */
.mm-dd-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;font:inherit;font-size:16px;font-weight:600;
  color:var(--ink);background:none;border:0;border-bottom:1px solid rgba(33,30,27,.08);padding:15px 4px;cursor:pointer;text-align:left}
:root[data-theme="dark"] .mm-dd-toggle{border-bottom-color:rgba(255,255,255,.08)}
.mm-dd-toggle .dd-caret{transition:transform .3s var(--ease)}
.mm-dd-toggle[aria-expanded="true"] .dd-caret{transform:rotate(180deg)}
.mm-sub{display:grid;grid-template-rows:0fr;transition:grid-template-rows .32s var(--ease)}
.mm-dd-toggle[aria-expanded="true"] + .mm-sub{grid-template-rows:1fr}
.mm-sub > div{overflow:hidden;min-height:0}
.mm-sub a{display:block;padding:12px 4px 12px 18px;font-size:15px;font-weight:500;color:var(--ink-soft);border-bottom:1px solid rgba(33,30,27,.06)}
:root[data-theme="dark"] .mm-sub a{border-bottom-color:rgba(255,255,255,.06)}
.mm-sub a:active{color:var(--sun-deep)}
.mm-sub a.dd-all{font-weight:600;color:var(--sun-deep)}

/* ===================== Quote popup modal ===================== */
.qmodal{position:fixed;inset:0;z-index:120;display:flex;align-items:flex-start;justify-content:center;
  padding:40px 16px;overflow-y:auto;background:rgba(10,8,6,.62);
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
  opacity:0;pointer-events:none;transition:opacity .3s ease}
.qmodal.on{opacity:1;pointer-events:auto}
.qmodal-card{position:relative;width:min(620px,100%);margin:auto;border-radius:var(--r-xl);overflow:hidden;
  background:linear-gradient(160deg,#2a2622,#1b1815);box-shadow:0 44px 100px -24px rgba(0,0,0,.75);
  padding:38px 38px 32px;transform:translateY(18px) scale(.985);transition:transform .35s var(--ease)}
.qmodal.on .qmodal-card{transform:none}
.qmodal-card::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(460px 280px at 92% -12%,rgba(244,122,30,.42),transparent 60%),
            radial-gradient(360px 240px at 4% 112%,rgba(46,151,212,.22),transparent 60%)}
.qmodal-body,.qmodal .qt-success{position:relative;z-index:1}
.qmodal-head{margin-bottom:20px;max-width:32em}
.qmodal-head h2{font-family:"Montserrat";font-weight:700;font-size:clamp(23px,3.2vw,30px);line-height:1.12;letter-spacing:-.02em;color:#fff;margin-top:8px}
.qmodal-head h2 em{font-style:normal;background:var(--grad-sun);-webkit-background-clip:text;background-clip:text;color:transparent}
.qmodal-head p{margin-top:10px;color:#CFC5B6;font-size:15px;line-height:1.6}
.qmodal-close{position:absolute;top:16px;right:16px;z-index:2;width:38px;height:38px;border-radius:50%;
  border:1px solid rgba(255,255,255,.2);background:rgba(255,255,255,.08);color:#fff;font-size:15px;cursor:pointer;
  display:grid;place-items:center;transition:background .25s,color .25s,border-color .25s,transform .2s var(--ease)}
.qmodal-close:hover{background:var(--grad-sun);color:#2A1604;border-color:transparent;transform:rotate(90deg)}
.qmodal .qt-success{padding:24px 6px 10px;text-align:center}
@media (max-width:560px){
  .qmodal{padding:0;align-items:stretch}
  .qmodal-card{border-radius:0;min-height:100%;padding:30px 22px;width:100%}
}
@media (prefers-reduced-motion:reduce){ .qmodal,.qmodal-card{transition:none} }

/* ===================== About / Portal pages ===================== */
.subhero.center .wrap{grid-template-columns:1fr;max-width:720px;margin-inline:auto;text-align:center}
.subhero.center .subhero-lead{margin-inline:auto}
.subhero.center .subhero-cta,.subhero.center .subhero-trust{justify-content:center}
.pgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:18px}
.help-card{max-width:720px;margin-inline:auto;text-align:center;background:var(--white);border:1px solid var(--line);
  border-radius:var(--r-lg);padding:38px 32px;box-shadow:var(--shadow-sm)}
.help-card h2{color:var(--ink)}
/* sky-accented pages get sky kickers + section emphasis */
.sky .kicker{color:var(--sky-deep)}
.sky .kicker::before{background:var(--grad-sky)}
.sky h2.sec-title em{color:var(--sky-deep)}

/* ===================== Holiday Lights page: festive theme ===================== */
:root{
  --hol-green:#0f7a44; --hol-green-deep:#0f5132;
  --hol-red:#c62828; --hol-red-lt:#ef5350;
  --hol-gold:#d99a2b; --hol-gold-lt:#f3cf5e;
  --grad-hol:linear-gradient(118deg,#0f7a44,#1ea05c);
  --grad-hol-gold:linear-gradient(118deg,#d99a2b,#f4cf5e);
}
/* festive ambient wash over the page */
body.holiday::before{
  background:
    radial-gradient(820px 560px at 90% -8%, rgba(224,169,46,.24), transparent 60%),
    radial-gradient(720px 600px at 3% 2%, rgba(198,40,40,.15), transparent 58%),
    radial-gradient(820px 760px at 50% 112%, rgba(15,122,68,.17), transparent 62%);
}
/* accents */
.holiday .kicker{color:var(--hol-red)}
.holiday .kicker::before{background:var(--grad-hol-gold)}
.holiday .subhero h1 em,.holiday h2.sec-title em{background:var(--grad-hol-gold);-webkit-background-clip:text;background-clip:text;color:transparent}
.holiday .eyebrow{color:var(--hol-red);background:rgba(198,40,40,.08);border-color:rgba(198,40,40,.22)}
.holiday .stars{color:var(--hol-gold)}
.holiday .crumb a:hover{color:var(--hol-green)}
/* primary buttons -> evergreen, bold white label */
.holiday .btn-sun{background:var(--grad-hol);color:#fff;font-weight:700;
  box-shadow:0 2px 4px rgba(15,81,50,.16),0 18px 40px -22px rgba(15,122,68,.55), 0 0 18px -2px rgba(94,227,155,.5), 0 8px 26px -10px rgba(30,160,92,.5)}
.holiday .btn-sun:hover{box-shadow:0 30px 80px -30px rgba(15,122,68,.6), 0 0 28px 0 rgba(94,227,155,.55)}
/* benefit icons + hover */
.holiday .benefit .bi{background:linear-gradient(135deg,rgba(15,122,68,.16),rgba(224,169,46,.16));border-color:rgba(15,122,68,.32);color:var(--hol-green)}
.holiday .benefit:hover{border-color:rgba(198,40,40,.4)}
/* checklist + faq */
.holiday .inc-ck{background:var(--grad-hol-gold);color:#3a2a00}
.holiday .faq summary .fq{color:var(--hol-red)}
.holiday .faq details[open] summary .fq{background:var(--grad-hol);color:#fff;border-color:transparent}
/* festive mid-CTA panel */
.holiday .quote-panel::before{background:
  radial-gradient(520px 320px at 90% -6%,rgba(224,169,46,.45),transparent 60%),
  radial-gradient(440px 300px at 6% 112%,rgba(15,122,68,.42),transparent 60%),
  radial-gradient(360px 240px at 96% 42%,rgba(198,40,40,.26),transparent 60%)}
.holiday .midcta h2 em{background:var(--grad-hol-gold);-webkit-background-clip:text;background-clip:text}
.holiday .cta-sun{stroke:rgba(243,207,94,.6)}

/* string-of-lights garland under the nav */
.holiday-lights{position:relative;z-index:5;height:42px;overflow:hidden;
  background:linear-gradient(rgba(40,30,20,.42),rgba(40,30,20,.42)) no-repeat;
  background-size:100% 2px;background-position:0 9px}
/* two interleaved bulb layers; each bulb = white-hot core -> saturated body ->
   soft wide bloom halo, so it reads as a real glowing LED rather than a flat dot */
.holiday-lights::before,.holiday-lights::after{content:"";position:absolute;inset:0;
  background-repeat:repeat-x;background-size:128px 42px;will-change:opacity,filter}
.holiday-lights::before{
  background-image:
    radial-gradient(circle at 16px 25px, #fff 0, #fff6cf 1.4px, #ffcf45 3px, rgba(255,196,60,.5) 7px, rgba(255,196,60,.16) 12px, transparent 18px),
    radial-gradient(circle at 80px 25px, #fff 0, #d8ffe6 1.4px, #44e08c 3px, rgba(50,200,120,.5) 7px, rgba(50,200,120,.16) 12px, transparent 18px);
  animation:twinkA 2.4s ease-in-out infinite}
.holiday-lights::after{
  background-image:
    radial-gradient(circle at 48px 25px, #fff 0, #ffdada 1.4px, #ff5a5a 3px, rgba(255,70,70,.52) 7px, rgba(255,70,70,.17) 12px, transparent 18px),
    radial-gradient(circle at 112px 25px, #fff 0, #d8ecff 1.4px, #5aa8ff 3px, rgba(90,168,255,.5) 7px, rgba(90,168,255,.16) 12px, transparent 18px);
  animation:twinkB 3.2s ease-in-out infinite}
/* obvious twinkle: wide brightness/opacity swing + bloom; the two layers run at
   different periods so they drift out of sync and shimmer like real lights. */
@keyframes twinkA{0%,100%{opacity:1;filter:brightness(1.32) saturate(1.2) drop-shadow(0 0 4px rgba(255,240,205,.7))}50%{opacity:.4;filter:brightness(.62) saturate(.95) drop-shadow(0 0 .5px rgba(255,240,205,.15))}}
@keyframes twinkB{0%,100%{opacity:.42;filter:brightness(.66) saturate(.95) drop-shadow(0 0 .5px rgba(255,240,205,.15))}50%{opacity:1;filter:brightness(1.34) saturate(1.2) drop-shadow(0 0 4px rgba(255,240,205,.72))}}
@media (prefers-reduced-motion:reduce){.holiday-lights::before,.holiday-lights::after{animation:none;opacity:1;filter:none}}

/* dark-mode festive tweaks */
:root[data-theme="dark"] body.holiday::before{
  background:
    radial-gradient(820px 560px at 90% -8%, rgba(224,169,46,.18), transparent 60%),
    radial-gradient(720px 600px at 3% 2%, rgba(198,40,40,.18), transparent 58%),
    radial-gradient(820px 760px at 50% 112%, rgba(15,122,68,.2), transparent 62%);
}
:root[data-theme="dark"] .holiday .kicker{color:var(--hol-red-lt)}
:root[data-theme="dark"] .holiday-lights{background-image:linear-gradient(rgba(255,255,255,.24),rgba(255,255,255,.24))}

/* ===== Turf Cleaning — fresh "grass / clean / eco" theme (body.grass) ===== */
:root{
  --grass:#3a9d4a; --grass-deep:#237030; --lime:#7cc242;
  --grad-grass:linear-gradient(118deg,#267a34,#3a9447);      /* buttons: white text safe */
  --grad-grass-em:linear-gradient(118deg,#1f7a34,#2f9a44);   /* heading emphasis: readable on cream */
}
/* fresh, airy green-tinted ambient instead of the warm wash */
body.grass::before{
  background:
    radial-gradient(820px 560px at 88% -8%, rgba(124,194,66,.22), transparent 60%),
    radial-gradient(720px 600px at 4% 4%, rgba(58,157,74,.15), transparent 58%),
    radial-gradient(900px 780px at 50% 114%, rgba(58,157,74,.13), transparent 62%);
}
.grass .kicker{color:var(--grass-deep)}
.grass .kicker::before{background:var(--grad-grass)}
.grass .subhero h1 em,.grass h2.sec-title em{background:var(--grad-grass-em);-webkit-background-clip:text;background-clip:text;color:transparent}
.grass .eyebrow{color:var(--grass-deep);background:rgba(58,157,74,.09);border-color:rgba(58,157,74,.24)}
.grass .stars{color:var(--grass)}
.grass .btn-sun{background:var(--grad-grass);color:#fff;font-weight:700;
  box-shadow:0 2px 4px rgba(15,81,50,.16),0 18px 40px -22px rgba(58,157,74,.55), 0 0 18px -2px rgba(124,194,66,.5), 0 8px 26px -10px rgba(58,157,74,.5)}
.grass .btn-sun:hover{filter:brightness(1.05);box-shadow:0 2px 4px rgba(15,81,50,.16),0 24px 50px -24px rgba(58,157,74,.6), 0 0 28px 0 rgba(124,194,66,.55)}
.grass .benefit .bi{background:linear-gradient(135deg,rgba(58,157,74,.16),rgba(124,194,66,.2));
  border-color:rgba(58,157,74,.32);color:var(--grass-deep)}
.grass .inc-ck{background:var(--grad-grass);color:#fff}
.grass .faq summary .fq{color:var(--grass-deep)}
.grass .faq details[open] summary .fq{background:var(--grad-grass);color:#fff;border-color:transparent}
.grass .midcta h2 em{background:var(--grad-grass-em);-webkit-background-clip:text;background-clip:text;color:transparent}
.grass .quote-panel::before{
  background:
    radial-gradient(620px 440px at 88% -10%, rgba(124,194,66,.22), transparent 60%),
    radial-gradient(560px 480px at 6% 108%, rgba(58,157,74,.18), transparent 60%);
}
/* dark-mode: lift the greens so they read on dark */
:root[data-theme="dark"] body.grass::before{
  background:
    radial-gradient(820px 560px at 88% -8%, rgba(124,194,66,.2), transparent 60%),
    radial-gradient(720px 600px at 4% 4%, rgba(58,157,74,.2), transparent 58%),
    radial-gradient(900px 780px at 50% 114%, rgba(58,157,74,.18), transparent 62%);
}
:root[data-theme="dark"] .grass .kicker,
:root[data-theme="dark"] .grass .eyebrow,
:root[data-theme="dark"] .grass .faq summary .fq{color:#86d68f}
:root[data-theme="dark"] .grass .benefit .bi{color:#86d68f}

/* ===== Address autocomplete dropdown (contact form) ===== */
.addr-ac{position:fixed;z-index:200;display:none;max-height:266px;overflow-y:auto;
  background:#241f1b;border:1px solid rgba(255,255,255,.14);border-radius:12px;
  box-shadow:0 20px 48px -18px rgba(0,0,0,.66);padding:5px}
.addr-ac-item{display:flex;gap:10px;align-items:flex-start;padding:9px 11px;border-radius:8px;
  cursor:pointer;color:#fff;transition:background .15s}
.addr-ac-item svg{flex:none;margin-top:2px;color:var(--sun)}
.addr-ac-item.on,.addr-ac-item:hover{background:rgba(255,255,255,.09)}
.addr-ac-tx{display:flex;flex-direction:column;line-height:1.32;min-width:0}
.addr-ac-tx b{font-weight:600;font-size:14.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.addr-ac-tx span{font-size:12.5px;color:rgba(255,255,255,.5)}
:root[data-theme="dark"] .addr-ac{background:#26211d}

/* ===== Legal pages (privacy / terms) ===== */
.legal{color:var(--ink-soft);font-size:16px;line-height:1.75;max-width:74ch}
.legal .eff{font-size:14px;color:var(--ink-faint);margin:2px 0 22px}
.legal h2{font-family:"Montserrat";font-weight:700;font-size:20px;color:var(--ink);margin:30px 0 10px;letter-spacing:-.01em}
.legal p{margin:0 0 14px}
.legal ul{margin:0 0 16px;padding-left:22px;list-style:disc}
.legal li{margin:6px 0}
.legal a{color:var(--sun-deep);text-decoration:underline;text-underline-offset:2px}
.legal a:hover{color:var(--sun)}
/* footer legal links */
.foot-legal{display:inline-flex;gap:10px;align-items:center}
.foot-legal a{color:#A89E8F;text-decoration:none;transition:color .2s}
.foot-legal a:hover{color:var(--gold)}
.foot-legal .sep{opacity:.4}
/* form consent fine print */
.qt-consent{display:flex;gap:10px;align-items:flex-start;font-size:11.5px;line-height:1.55;color:rgba(255,255,255,.62);margin-top:12px;cursor:pointer}
.qt-consent input{flex:none;margin-top:2px;width:15px;height:15px;accent-color:var(--sun);cursor:pointer}
.qt-consent a{color:rgba(255,255,255,.82);text-decoration:underline}
.qt-consent a:hover{color:#fff}

/* ===== 3D cover-flow review carousel (drag to spin, click to center) ===== */
.review-ring-stage{position:relative;width:100%;max-width:840px;height:300px;margin:10px auto 0;
  perspective:1150px;perspective-origin:50% 50%;overflow:hidden;touch-action:pan-y;cursor:grab;
  user-select:none;-webkit-user-select:none}
.review-ring-stage.grabbing{cursor:grabbing}
.review-ring{position:absolute;inset:0;transform-style:preserve-3d}
.review-ring .rd-card{position:absolute;left:50%;top:50%;width:304px;height:166px;
  border-radius:16px;border:1.5px solid var(--line);background:var(--white);
  padding:16px 19px;display:flex;flex-direction:column;justify-content:space-between;gap:6px;overflow:hidden;
  box-shadow:0 20px 44px -18px rgba(60,40,15,.5);cursor:pointer;will-change:transform,opacity;
  transition:box-shadow .35s,border-color .3s}
.review-ring .rd-card:hover{border-color:rgba(244,122,30,.5);box-shadow:0 26px 54px -16px rgba(60,40,15,.55)}
.rd-top{display:flex;align-items:center;gap:9px}
.rd-ico{width:27px;height:27px;border-radius:50%;background:var(--grad-sun);display:grid;place-items:center;flex:none;
  box-shadow:0 2px 7px rgba(244,122,30,.45)}
.rd-name{font-weight:700;font-size:15px;color:var(--ink);letter-spacing:-.01em}
.rd-quote{font-size:13.5px;line-height:1.46;color:var(--ink-soft);margin:0;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.rd-meta{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--ink-faint)}
.rd-meta .rd-stars{color:var(--sun);letter-spacing:1px;font-size:11px}
.ring-nav{position:absolute;top:50%;transform:translateY(-50%);z-index:60;width:42px;height:42px;border-radius:50%;
  border:1px solid var(--line);background:rgba(255,255,255,.94);color:var(--ink-soft);font-size:22px;line-height:1;
  display:grid;place-items:center;cursor:pointer;box-shadow:0 8px 20px -8px rgba(60,40,15,.4);
  transition:color .2s,border-color .2s,background .2s}
.ring-nav:hover{background:#fff;color:var(--sun-deep);border-color:rgba(244,122,30,.45)}
.ring-prev{left:8px}.ring-next{right:8px}
.ring-hint{position:absolute;bottom:0;left:0;right:0;text-align:center;font-size:11.5px;color:var(--ink-faint);pointer-events:none}
:root[data-theme="dark"] .review-ring .rd-card{background:#27221e}
:root[data-theme="dark"] .ring-nav{background:rgba(42,36,31,.92)}
@media (max-width:600px){
  .review-ring-stage{height:280px;perspective:860px}
  .review-ring .rd-card{width:252px;height:158px;padding:14px 16px}
  .rd-quote{-webkit-line-clamp:2}
  .ring-nav{width:38px;height:38px;font-size:20px}
}
@media (prefers-reduced-motion:reduce){.review-ring .rd-card{transition:none}}

/* center the Google review badge under the heading on mobile */
@media (max-width:620px){
  .reviews-head{flex-direction:column;align-items:stretch;gap:20px}
  .reviews-head .rev-summary{align-self:center}
}



/* full-review popup (opened from the carousel cards) */
.rd-full{display:none}
.rv-modal{position:fixed;inset:0;z-index:300;display:flex;align-items:center;justify-content:center;padding:20px;
  opacity:0;pointer-events:none;transition:opacity .25s}
.rv-modal.on{opacity:1;pointer-events:auto}
.rv-backdrop{position:absolute;inset:0;background:rgba(20,14,8,.62);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
.rv-card{position:relative;z-index:1;width:min(540px,100%);background:var(--cream);border:1px solid var(--line);
  border-radius:20px;box-shadow:0 34px 80px -24px rgba(20,14,8,.62);padding:32px 32px 26px;
  transform:translateY(14px) scale(.97);transition:transform .32s var(--ease);max-height:84vh;overflow:auto}
.rv-modal.on .rv-card{transform:none}
.rv-close{position:absolute;top:14px;right:14px;width:36px;height:36px;border-radius:50%;border:1px solid var(--line);
  background:var(--white);color:var(--ink-soft);font-size:15px;cursor:pointer;display:grid;place-items:center;transition:color .2s,border-color .2s}
.rv-close:hover{color:var(--ink);border-color:var(--ink-faint)}
.rv-head{display:flex;align-items:center;gap:13px;margin-bottom:18px}
.rv-avatar{width:48px;height:48px;border-radius:50%;background:var(--grad-sun);display:grid;place-items:center;flex:none;
  color:#fff;font-weight:700;font-size:16px;letter-spacing:.5px;box-shadow:0 3px 10px rgba(244,122,30,.4)}
.rv-who{display:flex;flex-direction:column;gap:3px}
.rv-name{font-family:"Montserrat";font-weight:700;font-size:18px;color:var(--ink);line-height:1.1}
.rv-stars{color:var(--sun);letter-spacing:2px;font-size:13px}
.rv-text{font-size:16px;line-height:1.72;color:var(--ink-soft);margin:0 0 18px}
.rv-foot{display:flex;align-items:center;gap:7px;font-size:13px;color:var(--ink-faint);font-weight:500}
:root[data-theme="dark"] .rv-card{background:#211c18}
:root[data-theme="dark"] .rv-close{background:#2a241f}
@media (max-width:560px){.rv-card{padding:26px 22px 22px}.rv-text{font-size:15px}}

/* ===== Live animated review-summary card (links to Google) ===== */
.rev-summary{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;
  width:100%;max-width:300px;padding:24px 26px 20px;border-radius:18px;border:1px solid var(--line);
  background:var(--white);box-shadow:0 16px 40px -24px rgba(60,40,15,.42), inset 0 0 0 1px rgba(244,122,30,.08);text-decoration:none;
  transition:transform .28s var(--ease),box-shadow .3s,border-color .3s}
.rev-summary:hover{transform:translateY(-4px);box-shadow:0 26px 54px -22px rgba(60,40,15,.5), inset 0 0 0 1px rgba(244,122,30,.16);border-color:rgba(244,122,30,.4)}
.rs-stars{display:flex;gap:5px}
.rs-star{width:23px;height:23px;color:var(--line);transition:color .35s}
.rs-star.on{color:var(--sun)}
.rs-star svg{display:block;width:100%;height:100%}
.rs-score{font-family:"Montserrat";font-weight:800;font-size:33px;letter-spacing:-.02em;color:var(--ink);line-height:1.04;margin-top:9px;white-space:nowrap}
.rs-score .rs-count{font-weight:600;font-size:24px;color:var(--ink-soft)}
.rs-text{font-size:13px;color:var(--ink-faint);margin:3px 0 0;line-height:1.5;max-width:25ch}
.rs-link{display:inline-flex;align-items:center;gap:6px;margin-top:13px;font-size:13px;font-weight:600;color:var(--sun-deep)}
.rev-summary:hover .rs-link{color:var(--sun)}
.rs-link .arr{transition:transform .3s}
.rev-summary:hover .rs-link .arr{transform:translateX(3px)}
/* ===== Solar cleaning-frequency orbit ===== */
.freq-orbit{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:46px;align-items:center;margin-top:26px}
.orbit-stage{position:relative;width:100%;max-width:400px;aspect-ratio:1;margin:0 auto;justify-self:center;--orad:150px;--nsize:66px}
.orbit-ring{position:absolute;left:50%;top:50%;width:75%;height:75%;transform:translate(-50%,-50%);border-radius:50%;
  border:1.5px dashed rgba(140,100,55,.28)}
.orbit-core{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:88px;height:88px;border-radius:50%;z-index:6;
  display:grid;place-items:center;background:var(--grad-sun);
  box-shadow:0 0 0 7px rgba(244,122,30,.1),0 14px 34px -6px rgba(244,122,30,.55)}
.oc-sun{width:48px;height:48px}
.oc-sun .sun-mark{width:100%;height:100%;stroke:#fff}
.oc-ping{position:absolute;left:50%;top:50%;width:88px;height:88px;border-radius:50%;border:1.5px solid rgba(244,122,30,.45);
  transform:translate(-50%,-50%);opacity:0}
@media (prefers-reduced-motion:no-preference){
  .oc-ping{animation:ocPing 3s ease-out infinite}
  .oc-ping2{animation-delay:1.5s}
}
@keyframes ocPing{0%{opacity:.6;transform:translate(-50%,-50%) scale(.85)}100%{opacity:0;transform:translate(-50%,-50%) scale(1.9)}}
.onode-wrap{position:absolute;left:50%;top:50%;width:0;height:0;transform:rotate(var(--a)) translateX(var(--orad));z-index:4}
.orbit-node{position:absolute;left:0;top:0;width:var(--nsize);height:var(--nsize);border-radius:50%;
  transform:translate(-50%,-50%) rotate(calc(-1 * var(--a)));
  display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1;cursor:pointer;
  background:var(--white);border:1.5px solid var(--line);color:var(--ink);
  box-shadow:0 8px 20px -10px rgba(60,40,15,.4);transition:transform .35s var(--ease),background .3s,color .3s,border-color .3s,box-shadow .3s}
.orbit-node b{font-size:18px;font-weight:800;letter-spacing:-.02em}
.orbit-node span{font-size:9.5px;font-weight:600;letter-spacing:.05em;color:var(--ink-faint);text-transform:uppercase;margin-top:1px}
.orbit-node:hover{transform:translate(-50%,-50%) rotate(calc(-1 * var(--a))) scale(1.08);border-color:rgba(244,122,30,.5)}
.orbit-node.selected{background:var(--grad-sun);border-color:transparent;color:#fff;
  transform:translate(-50%,-50%) rotate(calc(-1 * var(--a))) scale(1.16);box-shadow:0 12px 30px -8px rgba(244,122,30,.6)}
.orbit-node.selected span{color:rgba(255,255,255,.85)}
/* panel */
.orbit-panel{background:var(--white);border:1px solid var(--line);border-radius:var(--r-lg);padding:28px 30px;
  box-shadow:0 18px 44px -26px rgba(60,40,15,.4)}
.op-top{display:flex;align-items:center;justify-content:space-between;gap:14px}
.op-title{display:flex;align-items:baseline;gap:8px}
.op-title h3{font-family:"Montserrat";font-weight:800;font-size:38px;letter-spacing:-.03em;color:var(--ink);line-height:1}
.op-per{font-size:18px;font-weight:600;color:var(--ink-soft)}
.op-tag{font-size:10.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:#fff;background:var(--grad-sun);
  padding:5px 11px;border-radius:999px;white-space:nowrap}
.op-tag.hide{display:none}
.op-sub{font-size:13.5px;font-weight:600;color:var(--sun-deep);margin:8px 0 0}
.op-text{font-size:15px;line-height:1.65;color:var(--ink-soft);margin:12px 0 20px}
.op-bar-row{display:flex;justify-content:space-between;align-items:center;font-size:13px;font-weight:600;color:var(--ink-soft);margin-bottom:8px}
.op-bar-val{font-size:16px;font-weight:800;color:var(--ink)}
.op-bar{height:11px;border-radius:999px;background:var(--cream-3);overflow:hidden}
.op-fill{height:100%;border-radius:999px;background:var(--grad-sun);transition:width .8s var(--ease)}
.op-roi{display:inline-flex;align-items:center;gap:7px;margin-top:16px;font-size:13.5px;font-weight:700;color:var(--sun-deep)}
.op-roi svg{color:var(--sun)}
.op-pts{list-style:none;margin:18px 0 0;padding:0;display:flex;flex-direction:column;gap:10px}
.op-pts li{display:flex;gap:11px;align-items:flex-start;font-size:14.5px;color:var(--ink);line-height:1.45}
.op-ck{width:22px;height:22px;flex:none;border-radius:50%;background:var(--grad-sun-soft);border:1px solid rgba(244,122,30,.25);
  color:var(--sun-deep);display:grid;place-items:center;font-size:11px;font-weight:800;margin-top:1px}
:root[data-theme="dark"] .orbit-node{background:var(--white)}
:root[data-theme="dark"] .orbit-panel{background:var(--white)}
@media (max-width:900px){
  .freq-orbit{grid-template-columns:1fr;gap:30px}
  .orbit-stage{--orad:120px;--nsize:60px;max-width:320px}
}
@media (max-width:430px){ .orbit-stage{--orad:104px;--nsize:54px;max-width:280px} .orbit-node b{font-size:16px} }

/* ============================================================
   POLISH PASS — micro-interactions, depth, focus rings
   (refinements only; layout/brand unchanged)
   ============================================================ */

/* 1.3 — "Learn more" reads as a real link: animated underline on hover/focus */
.svc .more{position:relative;transition:color .25s}
.svc .more::after{content:"";position:absolute;left:0;bottom:-3px;height:2px;width:0;
  background:var(--gold);border-radius:2px;transition:width .28s var(--ease)}
.svc:hover .more::after,
.svc .more:hover::after,
.svc .more:focus-visible::after{width:100%}

/* 2.2 — trust strip: hairline dividers between proof items for crisp rhythm */
@media (min-width:760px){
  .strip .wrap{flex-wrap:nowrap}
  .strip .item + .item{border-left:1px solid rgba(255,255,255,.07);padding-left:30px}
}

/* 4.1 — unified branded focus ring across all interactive text/links
   (buttons, forms, carousel, gallery already have their own) */
.nav-links a:focus-visible,
.nav-dd-toggle:focus-visible,
.nav-phone:focus-visible,
.topbar a:focus-visible,
.svc .more:focus-visible,
.rev-summary:focus-visible,
.map-link:focus-visible,
.qt-contact a:focus-visible,
.qt-fine a:focus-visible,
footer .fcol a:focus-visible,
footer .fcontact a:focus-visible,
.socials a:focus-visible,
.foot-legal a:focus-visible{
  outline:3px solid rgba(244,122,30,.5);
  outline-offset:2px;
  border-radius:6px;
}

/* ============================================================
   MOBILE STICKY CALL BAR — high-intent tap-to-call, mobile only.
   Hidden on desktop (sticky nav already shows phone + quote).
   Shown after some scroll; auto-hides over the quote form and
   while the mobile menu is open (handled in app.js).
   ============================================================ */
.callbar{display:none}
@media (max-width:980px){
  /* reserve space so the fixed bar never covers the footer's last line —
     placed inside the (always-dark) footer so no page-bg strip can show */
  footer{padding-bottom:calc(30px + 64px + env(safe-area-inset-bottom,0px))}

  .callbar{
    display:flex;gap:10px;align-items:stretch;
    position:fixed;left:0;right:0;bottom:0;z-index:35;
    padding:10px 14px calc(10px + env(safe-area-inset-bottom,0px));
    background:linear-gradient(180deg,rgba(251,247,240,.78),rgba(251,247,240,.97));
    backdrop-filter:blur(16px) saturate(1.6);-webkit-backdrop-filter:blur(16px) saturate(1.6);
    border-top:1px solid rgba(255,255,255,.55);
    box-shadow:inset 0 1px 0 rgba(255,255,255,.7), 0 -12px 32px -18px rgba(33,30,27,.4);
    transform:translateY(130%);
    transition:transform .42s var(--ease);
    will-change:transform;
  }
  .callbar.show{transform:translateY(0)}
}
.callbar-btn{
  flex:1;display:inline-flex;align-items:center;justify-content:center;gap:9px;
  font-family:"Montserrat";font-weight:700;font-size:15px;letter-spacing:.01em;
  padding:14px 16px;border-radius:999px;border:1px solid transparent;white-space:nowrap;
  transition:transform .2s var(--ease),box-shadow .28s var(--ease),background .25s;
}
.cb-call{flex:1.65;color:#2A1604;background:var(--grad-sun);box-shadow:var(--shadow-md)}
.cb-call:active{transform:scale(.98)}
.cb-quote{flex:1;color:var(--ink);background:var(--white);border-color:var(--line);box-shadow:var(--shadow-sm)}
.cb-quote:active{transform:scale(.98)}
.cb-call:focus-visible,.cb-quote:focus-visible{outline:3px solid rgba(244,122,30,.5);outline-offset:2px}
/* tiny phones: drop the number, keep the verb so the call button never wraps */
@media (max-width:360px){ .cb-num{display:none} }
/* dark theme surface */
:root[data-theme="dark"] .callbar{
  background:linear-gradient(180deg,rgba(26,22,18,.82),rgba(20,17,14,.97));
  border-top-color:rgba(255,255,255,.1);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.08), 0 -12px 32px -18px rgba(0,0,0,.7);
}
:root[data-theme="dark"] .cb-quote{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.16)}
@media (prefers-reduced-motion:reduce){ .callbar{transition:none} }
