/* Katy Appliance Removal — luxury white · Titan system · Fraunces/DM Sans · emerald + ink */
:root{
  --bg:#ffffff; --alt:#f6f7f5; --card:#ffffff;
  --ink:#151a17; --ink2:#48524c; --mut:#66706a;
  --line:#e6e9e6; --line2:#d6dbd6;
  --em:#0e6b45; --em2:#159a63; --em-d:#0a5335;
  --navy:#122031;
  --display:'Fraunces',Georgia,serif; --sans:'DM Sans',system-ui,sans-serif;
}
*{margin:0;padding:0;box-sizing:border-box}
.skip{position:absolute;left:-9999px;top:0;z-index:300;background:var(--ink);color:#fff;padding:12px 20px;border-radius:0 0 10px 0;font-weight:600;font-size:14px}
.skip:focus{left:0}
.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}
a:focus-visible,button:focus-visible,[tabindex="0"]:focus-visible,input:focus-visible,textarea:focus-visible{outline:2.5px solid var(--em);outline-offset:2px}
html{scroll-behavior:smooth;overflow-x:hidden;scroll-padding-top:110px}
body{font-family:var(--sans);font-size:16px;line-height:1.7;color:var(--ink2);background:var(--bg);-webkit-font-smoothing:antialiased}
img,video{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
.wrap{max-width:1180px;margin:0 auto;padding:0 26px}
h1,h2,h3,h4{font-family:var(--display);color:var(--ink);font-weight:600;line-height:1.12;letter-spacing:-.01em}
.lime{color:var(--em)}
.ic{width:1em;height:1em;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}

/* loader */
.loader{position:fixed;inset:0;z-index:99;background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;transition:opacity .6s,visibility .6s}
.loader.done{opacity:0;visibility:hidden}
.load-rec{width:64px;height:64px;border-radius:50%;display:grid;place-items:center;border:1px solid var(--line2);color:var(--em);background:#fff;box-shadow:0 18px 40px -20px rgba(16,32,24,.35)}
.load-rec svg{width:30px;height:30px;fill:none;stroke:currentColor;animation:recLoad 1.6s linear infinite}
@keyframes recLoad{to{transform:rotate(360deg)}}
.loader b{font-family:var(--display);font-weight:600;font-size:22px;color:var(--ink)}
.loader b i{font-style:italic;color:var(--em)}
.loader .bar{width:150px;height:2px;background:var(--line);overflow:hidden;border-radius:2px}
.loader .bar i{display:block;height:100%;width:40%;background:var(--em);animation:lb 1.1s ease-in-out infinite}
@keyframes lb{0%{transform:translateX(-120%)}100%{transform:translateX(340%)}}

/* nav — Titan floating white glass */
.nav{position:fixed;top:14px;left:50%;transform:translateX(-50%);width:min(1180px,calc(100% - 28px));z-index:50}
.nav-in{
  position:relative;display:flex;align-items:center;justify-content:space-between;gap:18px;
  height:64px;padding:0 14px 0 20px;border-radius:14px;
  background:rgba(255,255,255,.72);
  -webkit-backdrop-filter:blur(20px) saturate(1.6);backdrop-filter:blur(20px) saturate(1.6);
  border:1px solid rgba(255,255,255,.65);
  box-shadow:0 22px 54px -26px rgba(18,26,22,.45), inset 0 1px 0 rgba(255,255,255,.75);
  animation:navIn .8s cubic-bezier(.2,.8,.2,1) both;
}
@keyframes navIn{from{opacity:0;transform:translateY(-14px)}to{opacity:1;transform:none}}
@supports not (backdrop-filter:blur(1px)){.nav-in{background:rgba(255,255,255,.97)}}
.brand{display:flex;align-items:center;gap:11px}
.b-mark{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(150deg,var(--em2),var(--em-d));color:#fff;box-shadow:0 10px 22px -10px rgba(14,107,69,.7)}
.b-mark svg{width:19px;height:19px;fill:none;stroke:currentColor;animation:recIn 1.1s cubic-bezier(.2,.8,.2,1) both}
@keyframes recIn{0%{opacity:0;transform:rotate(-300deg) scale(.4)}60%{opacity:1}100%{opacity:1;transform:rotate(0) scale(1)}}
.brand:hover .b-mark svg{animation:recSpin .9s cubic-bezier(.3,.7,.3,1)}
@keyframes recSpin{to{transform:rotate(360deg)}}
.brand b{font-family:var(--display);font-weight:600;font-size:17.5px;color:var(--ink);line-height:1.15}
.brand b i{font-style:normal;display:block;font-family:var(--sans);font-size:9.5px;letter-spacing:.22em;text-transform:uppercase;font-weight:600;color:var(--em)}
.nav-links{display:flex;gap:26px}
.nav-links a{position:relative;font-size:13.5px;font-weight:500;color:var(--ink2);padding:4px 0;transition:color .2s}
.nav-links a::after{content:"";position:absolute;left:0;bottom:-2px;height:1.5px;width:0;background:var(--em);transition:width .3s}
.nav-links a:hover{color:var(--ink)}
.nav-links a:hover::after{width:100%}

/* buttons — Titan proportions */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;font-family:var(--sans);font-size:13.5px;font-weight:600;letter-spacing:.02em;padding:13px 24px;border-radius:7px;cursor:pointer;border:1.5px solid transparent;transition:transform .2s,background .25s,color .25s,border-color .25s,box-shadow .25s;white-space:nowrap}
.btn.lg{padding:15px 28px;font-size:14.5px}
.btn-lime{background:linear-gradient(140deg,var(--em),var(--em-d));color:#fff;box-shadow:0 16px 32px -16px rgba(14,107,69,.8)}
.btn-lime:hover{transform:translateY(-2px);box-shadow:0 22px 42px -16px rgba(14,107,69,.9)}
.btn-glass{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.55);color:#fff;backdrop-filter:blur(4px)}
.btn-glass:hover{background:rgba(255,255,255,.18)}
.btn-line{background:#fff;border-color:var(--line2);color:var(--ink)}
.btn-line:hover{border-color:var(--em);color:var(--em)}
.nav .nav-book{padding:11px 20px}
.burger{display:none;background:none;border:0;cursor:pointer;padding:10px}
.burger span{display:block;width:22px;height:2px;background:var(--ink);margin:5px 0;border-radius:2px}

/* hero — Titan photo hero, centered serif, no glass box */
.hero{position:relative;min-height:82vh;display:flex;align-items:center;text-align:center;overflow:hidden;background:var(--navy)}
.hero-slides{position:absolute;inset:0}
.hero-slides .slide{position:absolute;inset:0;background-size:cover;background-position:center;opacity:0;transition:opacity 1.8s ease}
.hero-slides .slide.on{opacity:1;animation:kb 9s ease-out forwards}
@keyframes kb{from{transform:scale(1.04)}to{transform:scale(1.13)}}
.hero-vid{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity 1.2s ease}
.hero.vid-on .hero-vid{opacity:1}
.hero-scrim{position:absolute;inset:0;background:linear-gradient(180deg,rgba(10,16,13,.62),rgba(10,16,13,.55) 55%,rgba(10,16,13,.6))}
.hero::before{content:"";position:absolute;top:0;left:0;right:0;height:140px;z-index:1;background:linear-gradient(180deg,rgba(8,13,10,.72),transparent);pointer-events:none}
.hero::after{content:"";position:absolute;bottom:0;left:0;right:0;height:120px;z-index:1;background:linear-gradient(0deg,var(--bg),transparent);pointer-events:none}
.hero-in{position:relative;z-index:2;max-width:640px;margin:0 auto;padding:150px 0 120px;color:#fff}
.hero-eye{font-size:12px;font-weight:700;letter-spacing:.24em;text-transform:uppercase;color:#9fd8bc}
/* Hero headline 2026-08-12 (Anthony): FREE leads, oversized and bold, with the
   service name underneath. Each part is its own block so the size ratio holds
   at every width instead of depending on <br> positions. */
.hero h1{color:#fff;margin:14px 0 20px;text-shadow:0 6px 30px rgba(0,0,0,.45);line-height:1}
.hero h1 .h1-free{display:block;font-weight:900;font-size:clamp(64px,13vw,168px);letter-spacing:-.03em;line-height:.92;color:#a3e635;text-shadow:0 8px 40px rgba(0,0,0,.5)}
.hero h1 .h1-svc{display:block;font-weight:700;font-size:clamp(28px,4.4vw,54px);letter-spacing:-.01em;margin-top:2px}
.hero h1 em{display:block;font-style:italic;font-weight:600;font-size:clamp(19px,2.4vw,30px);color:#7ee0ae;margin-top:10px}
.hero-sub{font-size:clamp(15px,1.6vw,18px);color:rgba(255,255,255,.88);max-width:600px;margin:0 auto 30px}
.hero-cta{display:flex;gap:13px;justify-content:center;flex-wrap:wrap}
.hero-stats{display:flex;gap:0;justify-content:center;flex-wrap:wrap;margin-top:38px}
.hst{padding:0 19px;border-left:1px solid rgba(255,255,255,.22)}
.hst:first-child{border-left:0}
.hst b{display:block;font-family:var(--display);font-weight:600;font-size:20px;color:#fff}
.hst span{font-size:11px;color:rgba(255,255,255,.78);text-transform:uppercase;letter-spacing:.14em}

/* floating review flex — washer + trophy + badge, hero right */
.float-rev{position:absolute;z-index:3;right:3.5%;bottom:14%;width:235px;text-align:center;animation:frFloat 6s ease-in-out infinite}
@keyframes frFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
.fr-badge{display:inline-flex;align-items:center;gap:7px;background:rgba(255,255,255,.95);border:1px solid rgba(255,255,255,.7);border-radius:30px;padding:9px 16px;font-size:12.5px;font-weight:700;color:var(--ink);box-shadow:0 18px 40px -18px rgba(0,0,0,.55);margin-bottom:8px;white-space:nowrap}
.fr-badge .frs{color:#d9a441;letter-spacing:1px;font-size:11px}
.fr-badge em{font-style:normal;color:var(--em)}
.fr-stage{position:relative;width:192px;margin:56px auto 0}
.fr-stage::after{content:"";position:absolute;left:50%;bottom:-9px;width:74%;height:20px;transform:translateX(-50%);border-radius:50%;background:radial-gradient(ellipse,rgba(0,0,0,.45),transparent 70%);filter:blur(3px)}
.fr-trophy{position:absolute;left:50%;top:14px;transform:translate(-50%,-62%);width:76px;filter:drop-shadow(0 12px 18px rgba(0,0,0,.45));z-index:2;animation:trShine 5s ease-in-out infinite}
@keyframes trShine{0%,100%{filter:drop-shadow(0 12px 18px rgba(0,0,0,.45))}50%{filter:drop-shadow(0 12px 24px rgba(217,164,65,.55))}}
.fr-stage>img{position:relative;z-index:1;width:100%;filter:drop-shadow(0 24px 32px rgba(0,0,0,.5))}
.fr-quote{margin-top:16px;box-shadow:0 0 24px rgba(126,224,174,.22);background:rgba(10,17,13,.55);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.2);border-radius:10px;padding:13px 15px;font-size:12.5px;line-height:1.55;color:rgba(255,255,255,.92);min-height:88px;transition:opacity .45s}
.fr-quote.fade{opacity:0}
.fr-quote b{display:block;font-family:var(--display);font-weight:600;font-size:12.5px;margin-top:7px;color:#9fd8bc}
@media(max-width:1080px){.float-rev{display:none}}
@media(max-height:760px){.fr-quote{display:none}}

/* hero video pause control (WCAG 2.2.2) */
.vid-toggle{position:absolute;left:18px;bottom:18px;z-index:4;width:44px;height:44px;border-radius:50%;border:1.5px solid rgba(255,255,255,.55);background:rgba(10,17,13,.55);backdrop-filter:blur(6px);color:#fff;cursor:pointer;display:grid;place-items:center;transition:background .25s}
.vid-toggle:hover{background:rgba(10,17,13,.75)}
.vid-toggle svg{width:18px;height:18px;fill:currentColor;stroke:none}
/* one control pauses ALL ambient motion — reviews rotation + photo rails */
body.motion-paused .rail-row,body.motion-paused .rail-row.rev{animation-play-state:paused}

/* section chrome */
section{padding:96px 0;position:relative;background:var(--bg)}
.eyebrow{display:block;font-size:12px;letter-spacing:.22em;text-transform:uppercase;font-weight:700;color:var(--em);margin-bottom:12px}
.sec-h{font-size:clamp(30px,4vw,46px);margin-bottom:12px}
.sec-sub{max-width:600px;color:var(--mut);margin-bottom:48px;font-size:16.5px}
.center{text-align:center}
.center .sec-sub{margin-left:auto;margin-right:auto}

/* price band — quiet luxury */
.feeband{background:var(--alt);border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:76px 0}
.fee-in{display:grid;grid-template-columns:auto 1fr auto;gap:48px;align-items:center}
.fee-num{font-family:var(--display);font-size:clamp(64px,8vw,108px);font-weight:600;color:var(--ink);letter-spacing:-.03em;line-height:1}
.fee-num i{font-style:italic;color:var(--em)}
.fee-copy h2{font-size:clamp(24px,3vw,36px);margin-bottom:10px}
.fee-copy p{color:var(--ink2);max-width:540px}
@media(max-width:860px){.fee-in{grid-template-columns:1fr;text-align:center;gap:24px}.fee-copy p{margin:0 auto}.fee-in .btn{margin:0 auto}}

/* what we take — Titan service cards */
.take-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:22px}
.take{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden;transition:transform .3s,box-shadow .3s;cursor:pointer}
.take:hover{transform:translateY(-6px);box-shadow:0 30px 54px -30px rgba(18,26,22,.4)}
.take-img{position:relative;height:212px;display:flex;align-items:center;justify-content:center;padding:20px;overflow:hidden;background:radial-gradient(120% 100% at 50% 12%,#ffffff,#f1f3f0 70%,#e8ebe7)}
.take-img::after{content:"";position:absolute;left:50%;bottom:17px;transform:translateX(-50%);width:56%;height:13px;border-radius:50%;background:radial-gradient(ellipse,rgba(18,26,22,.16),transparent 70%)}
.take-img img{position:relative;z-index:1;height:100%;width:auto;max-width:86%;object-fit:contain;filter:drop-shadow(0 12px 16px rgba(18,26,22,.18));transition:transform .5s}
.take:hover .take-img img{transform:translateY(-4px) scale(1.04)}
.take-b{padding:18px 20px 20px}
.take-b h3{font-size:19px;margin-bottom:5px}
.take-b p{font-size:13.5px;color:var(--ink2);line-height:1.55;margin-bottom:10px}
.tk-more{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:700;color:var(--em);letter-spacing:.02em}
.tk-more .arr{transition:transform .25s;display:inline-block}
.take:hover .tk-more .arr{transform:translateX(4px)}

/* portfolio rail — two rows, opposite directions */
.rail-sec{background:var(--alt);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.rail-strip{overflow:hidden;width:100%;-webkit-mask:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);mask:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent)}
.rail-strip + .rail-strip{margin-top:16px}
.rail-row{display:flex;gap:16px;width:max-content;animation:railL 62s linear infinite}
.rail-row.rev{animation:railR 62s linear infinite}
.rail-strip:hover .rail-row,.rail-strip:focus-within .rail-row{animation-play-state:paused}
@keyframes railL{0%{transform:translateX(0)}100%{transform:translateX(-50%)}}
@keyframes railR{0%{transform:translateX(-50%)}100%{transform:translateX(0)}}
.rail-row a{flex:0 0 auto;display:block;width:290px;aspect-ratio:4/3;border-radius:10px;overflow:hidden;border:1px solid var(--line2);box-shadow:0 16px 34px -22px rgba(18,26,22,.45);transition:transform .3s}
.rail-row a:hover{transform:translateY(-5px)}
.rail-row img{width:100%;height:100%;object-fit:cover}
@media(prefers-reduced-motion:reduce){.rail-row,.rail-row.rev{animation:none;flex-wrap:wrap}.rail-strip{-webkit-mask:none;mask:none}}

/* watch — timelapse band */
.watch-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:56px;align-items:center}
.watch-copy .sec-sub{margin-bottom:0}
.watch-media{position:relative;border-radius:14px;overflow:hidden;border:1px solid var(--line);box-shadow:0 34px 64px -34px rgba(18,26,22,.55)}
.watch-media video{display:block;width:100%;height:auto}
.wm-tag{position:absolute;left:14px;bottom:14px;background:rgba(10,17,13,.72);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);border:1px solid rgba(255,255,255,.22);border-radius:30px;padding:7px 14px;font-size:12px;font-weight:600;color:#fff;letter-spacing:.02em}
@media(max-width:900px){.watch-grid{grid-template-columns:1fr;gap:30px}}

/* how it works */
.how-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.how{position:relative;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:36px 28px 30px}
.how .n{position:absolute;top:-18px;left:26px;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;font-family:var(--display);font-weight:600;font-size:17px;color:#fff;background:linear-gradient(150deg,var(--em2),var(--em-d));box-shadow:0 10px 22px -10px rgba(14,107,69,.7)}
.how h3{font-size:20px;margin:6px 0 8px}
.how p{font-size:14.5px;color:var(--ink2)}

/* impact strip */
.impact{display:flex;gap:0;flex-wrap:wrap;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--card)}
.imp{flex:1;min-width:210px;padding:30px 26px;border-left:1px solid var(--line)}
.imp:first-child{border-left:0}
.imp b{display:flex;align-items:center;gap:8px;font-family:var(--display);font-weight:600;font-size:27px;color:var(--ink)}
.imp b .ic{color:var(--em);width:24px;height:24px}
.imp span{font-size:13px;color:var(--mut);display:block;margin-top:4px}
@media(max-width:900px){.imp{border-left:0;border-top:1px solid var(--line)}.imp:first-child{border-top:0}}

/* reviews — rotating pool */
.rev-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.rev{position:relative;background:var(--card);border:1px solid rgba(21,154,99,.28);border-radius:14px;padding:28px;font-size:14.5px;color:var(--ink2);transition:opacity .5s,transform .5s}
.rev::before{content:"";position:absolute;inset:-1px;border-radius:14px;box-shadow:0 0 26px rgba(21,154,99,.42), 0 0 66px rgba(21,154,99,.2);opacity:.5;pointer-events:none;z-index:-1;animation:revGlow 5s ease-in-out infinite}
.rev:nth-child(2)::before{animation-delay:1.6s}
.rev:nth-child(3)::before{animation-delay:3.2s}
@keyframes revGlow{50%{opacity:1}}
@media(prefers-reduced-motion:reduce){.rev::before{animation:none}}
.rev.fade{opacity:0;transform:translateY(12px)}
.rev .stars{color:var(--em);letter-spacing:3px;margin-bottom:12px;font-size:13px}
.rev cite{display:block;margin-top:16px;font-style:normal;font-family:var(--display);font-weight:600;color:var(--ink);font-size:15px}
.rev cite span{display:block;font-family:var(--sans);font-weight:400;color:var(--mut);font-size:12.5px}

.rev-ctl{display:inline-flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--line2);border-radius:30px;padding:8px 16px;font-size:12.5px;font-weight:600;color:var(--ink2);cursor:pointer;font-family:var(--sans);transition:.2s;margin-top:18px}
.rev-ctl:hover{border-color:var(--em);color:var(--em)}
.rev-ctl[aria-pressed="true"]{border-color:var(--em);color:var(--em);background:#f2faf6}

/* areas */
.chips{display:flex;flex-wrap:wrap;gap:9px}
.chips span,.chips a{border:1px solid var(--line2);background:#fff;border-radius:6px;padding:8px 16px;font-size:13.5px;color:var(--ink2);text-decoration:none;display:inline-block}.chips a:hover{border-color:var(--em,#0e6b45);color:#0e6b45}.chips a:focus-visible{outline:3px solid #0e6b45;outline-offset:2px}

/* CTA band — deep ink, luxury contrast */
.ctaband{background:var(--navy);position:relative;overflow:hidden;text-align:center}
.ctaband::before{content:"";position:absolute;inset:0;background:radial-gradient(720px 340px at 50% 120%,rgba(21,154,99,.22),transparent 65%)}
.ctaband .wrap{position:relative}
.ctaband h2{color:#fff;font-size:clamp(30px,4.4vw,50px)}
.ctaband h2 .lime{color:#7ee0ae;font-style:italic}
.ctaband p{color:rgba(255,255,255,.72);max-width:480px;margin:14px auto 32px}
.ctaband .btn-glass{border-color:rgba(255,255,255,.4)}

/* footer */
footer{background:var(--bg);padding:52px 0 26px;border-top:1px solid var(--line)}
.f-in{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;margin-bottom:26px}
.f-copy{text-align:center;font-size:13px;color:var(--mut);border-top:1px solid var(--line);padding-top:20px}

/* portfolio page */
.pf-hero{padding:170px 0 40px;text-align:center}
.pf-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;padding-bottom:90px}
.pf-grid a{display:block;border-radius:10px;overflow:hidden;border:1px solid var(--line2);aspect-ratio:4/3;box-shadow:0 16px 34px -24px rgba(18,26,22,.5);transition:transform .3s}
.pf-grid a:hover{transform:translateY(-5px)}
.pf-grid img{width:100%;height:100%;object-fit:cover}
.lb{position:fixed;inset:0;z-index:400;background:rgba(14,18,16,.93);backdrop-filter:blur(8px);display:none;align-items:center;justify-content:center;padding:24px}
.lb.open{display:flex}
.lb img{max-width:92vw;max-height:86vh;border-radius:10px;box-shadow:0 30px 90px rgba(0,0,0,.7)}
.lb-x{position:absolute;top:20px;right:24px;width:44px;height:44px;border-radius:50%;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.3);color:#fff;font-size:18px;cursor:pointer}
.lb-x:hover{background:rgba(255,255,255,.22)}

/* ── booking modal — luxury white ── */
.bk-bg{position:fixed;inset:0;z-index:300;background:rgba(14,18,16,.5);backdrop-filter:blur(10px);display:none;align-items:center;justify-content:center;padding:20px;opacity:0;transition:opacity .28s}
.bk-bg.in{display:flex;opacity:1}
.bk{position:relative;width:min(520px,100%);max-height:92vh;overflow-y:auto;background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:0 60px 120px -40px rgba(10,14,12,.6)}
.bk-head{display:flex;align-items:flex-start;justify-content:space-between;padding:20px 28px 10px}
.bk-head b{font-family:var(--display);font-weight:600;font-size:24px;color:var(--ink);display:block;line-height:1.15}
.bk-head small{display:block;font-size:12.5px;color:var(--mut);margin-top:5px}
.bk-head small em{font-style:normal;color:var(--em);font-weight:600}
.bk-x{width:36px;height:36px;border-radius:50%;border:1px solid var(--line2);background:#fff;color:var(--mut);font-size:17px;cursor:pointer;transition:.2s;flex:0 0 auto}
.bk-x:hover{color:var(--ink);border-color:var(--ink)}
.bk-steps{display:flex;gap:6px;padding:10px 30px 0}
.bk-steps i{flex:1;height:2px;background:var(--line);transition:.3s}
.bk-steps i.on{background:var(--em)}
.bk-body{padding:16px 28px 20px}
.bk-body h4{font-family:var(--display);font-weight:600;font-size:20px;color:var(--ink);margin-bottom:4px}
.bk-hint{font-size:13.5px;color:var(--mut);margin-bottom:12px}
.bk-opts{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.bk-opt{display:flex;align-items:center;gap:12px;padding:14px 15px;border:1px solid var(--line2);border-radius:10px;cursor:pointer;font-size:13.5px;font-weight:500;background:#fff;text-align:left;transition:all .2s;font-family:var(--sans);color:var(--ink)}
.bk-opt .bke{flex:0 0 auto;width:34px;height:34px;border-radius:8px;display:grid;place-items:center;background:var(--alt);color:var(--em)}
.bk-opt .bke svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.bk-opt:hover{border-color:var(--em);box-shadow:0 10px 24px -16px rgba(14,107,69,.5)}
.bk-opt.sel{border-color:var(--em);background:#f2faf6}
.bk-opt.sel .bke{background:var(--em);color:#fff}
.bk-days{display:flex;gap:8px;overflow-x:auto;padding-bottom:6px;margin-bottom:14px}
.bk-day{flex:0 0 auto;min-width:60px;text-align:center;padding:10px 6px;border:1px solid var(--line2);border-radius:10px;cursor:pointer;background:#fff;transition:.2s}
.bk-day.sel{border-color:var(--em);background:#f2faf6}
.bk-day b{display:block;font-family:var(--display);font-weight:600;font-size:15px;color:var(--ink)}
.bk-day span{font-size:9.5px;color:var(--mut);text-transform:uppercase;letter-spacing:.08em}
.bk-slots{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}
.bk-slot{padding:10px 6px;border:1px solid var(--line2);border-radius:10px;text-align:center;font-size:13px;font-weight:500;cursor:pointer;background:#fff;transition:.2s;font-family:var(--sans);color:var(--ink)}
.bk-slot:hover{border-color:var(--em)}
.bk-slot.sel{border-color:var(--em);background:#f2faf6;color:var(--em);font-weight:600}
#bkSameDay svg{width:15px;height:15px;flex:0 0 auto;fill:none;stroke:currentColor;stroke-width:1.9}
.bk input,.bk textarea{width:100%;padding:11px 14px;border:1px solid var(--line2);border-radius:9px;background:#fff;color:var(--ink);font-family:var(--sans);font-size:14.5px;margin-bottom:8px;transition:border-color .2s,box-shadow .2s}
.bk input::placeholder,.bk textarea::placeholder{color:var(--mut)}
.bk input:focus,.bk textarea:focus{outline:none;border-color:var(--em);box-shadow:0 0 0 3px rgba(14,107,69,.1)}
.bk-note{display:flex;align-items:flex-start;gap:10px;margin-top:10px;padding:11px 14px;border-radius:10px;background:#f2faf6;border:1px solid rgba(14,107,69,.25);font-size:12.5px;line-height:1.5;color:var(--ink2)}
.bk-note b{color:var(--em)}
.bk-note svg{flex:0 0 auto;width:17px;height:17px;margin-top:1px;fill:none;stroke:var(--em);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.bk-q{font-size:13.5px;font-weight:600;color:var(--ink);margin:2px 0 6px}
.bk-q em{font-style:normal;font-weight:400;color:var(--mut);font-size:12px}
.bk-ph{margin-bottom:10px}
.bk-ph-add{display:inline-flex;align-items:center;gap:9px;width:100%;justify-content:center;padding:10px;border:1.5px dashed var(--line2);border-radius:10px;background:var(--alt);color:var(--ink2);font-family:var(--sans);font-size:13.5px;font-weight:500;cursor:pointer;transition:.2s}
.bk-ph-add:hover{border-color:var(--em);color:var(--em)}
.bk-ph-add em{font-style:normal;color:var(--mut);font-size:12px}
.bk-ph-add svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.bk-ph-thumbs{display:flex;gap:8px;margin-top:8px}
.bk-ph-th{position:relative;width:64px;height:64px;border-radius:9px;overflow:hidden;border:1px solid var(--line2);padding:0;cursor:pointer;background:none}
.bk-ph-th img{width:100%;height:100%;object-fit:cover;display:block}
.bk-ph-th span{position:absolute;top:2px;right:2px;width:18px;height:18px;border-radius:50%;background:rgba(14,18,16,.72);color:#fff;font-size:12px;line-height:18px;text-align:center}
/* TCPA consent — must sit on the SAME step as the phone field, immediately
   above the submit button, and must stay legible. Do not shrink below 12.5px
   and do not switch the colour to --mut; a disclosure nobody can read is not
   a disclosure. */
.bk-consent{margin-top:14px;padding:11px 13px;border:1px solid var(--line2);border-radius:10px;background:var(--alt);font-size:12.5px;line-height:1.55;color:var(--ink2)}
.bk-consent b{color:var(--ink)}
.bk-consent a{color:var(--em);text-decoration:underline}
.ch-consent{margin:2px 0 8px;font-size:11.5px;line-height:1.5;color:var(--ink2)}
.ch-consent b{color:var(--ink)}
.ch-consent a{color:var(--em);text-decoration:underline}
.bk-foot{display:flex;gap:10px;margin-top:14px}
.bk-foot .btn{flex:1}
.bk-back{background:#fff;border:1px solid var(--line2);color:var(--ink2)}
.bk-back:hover{border-color:var(--ink)}
.bk-fee{display:flex;align-items:center;gap:12px;background:var(--alt);border-left:3px solid var(--em);border-radius:0 9px 9px 0;padding:10px 14px;margin-bottom:12px;font-size:13px;color:var(--ink2)}
.bk-fee b{font-family:var(--display);font-weight:600;font-size:22px;color:var(--ink)}
.bk-ok{text-align:center;padding:8px 4px}
.bk-ok .okic{width:60px;height:60px;margin:0 auto 14px;border-radius:50%;display:grid;place-items:center;background:#f2faf6;border:1px solid rgba(14,107,69,.25);color:var(--em)}
.bk-ok .okic svg{width:30px;height:30px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.bk-ok h4{font-size:24px}
.bk-recap{background:var(--alt);border:1px solid var(--line);border-radius:10px;padding:16px 18px;margin:16px 0;text-align:left;font-size:13.5px;line-height:1.9;color:var(--ink2)}
.bk-recap b{color:var(--ink);font-family:var(--display);font-weight:600}
.bk-recap .lime{font-weight:600;font-style:italic}

/* chat widget — Riley */
.ch-btn{position:fixed;right:18px;bottom:18px;z-index:60;width:78px;height:78px;border-radius:50%;border:3px solid #fff;cursor:pointer;padding:0;overflow:visible;background:var(--em);box-shadow:0 20px 44px -14px rgba(14,107,69,.75);transition:transform .25s,opacity .25s}
.ch-btn img{width:100%;height:100%;border-radius:50%;object-fit:cover;display:block}
.ch-btn:hover{transform:translateY(-3px) scale(1.05)}
.ch-btn.hide{opacity:0;pointer-events:none;transform:scale(.6)}
.ch-dot-btn{position:absolute;right:2px;bottom:4px;width:13px;height:13px;border-radius:50%;background:#34d399;border:2.5px solid #fff;box-shadow:0 0 8px rgba(52,211,153,.9)}
.ch-box{position:fixed;right:18px;bottom:18px;z-index:70;width:min(370px,calc(100vw - 24px));height:min(540px,calc(100vh - 40px));display:none;flex-direction:column;background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:0 40px 90px -30px rgba(10,14,12,.55);overflow:hidden}
.ch-box.open{display:flex;animation:chIn .3s cubic-bezier(.2,.8,.2,1)}
@keyframes chIn{from{opacity:0;transform:translateY(16px) scale(.97)}to{opacity:1;transform:none}}
.ch-head{display:flex;align-items:center;gap:12px;padding:14px 16px;background:linear-gradient(150deg,var(--navy),#1a3049);color:#fff}
.ch-ava{width:42px;height:42px;border-radius:50%;object-fit:cover;border:2px solid rgba(255,255,255,.35);flex:0 0 auto}
.ch-head-t{flex:1;min-width:0}
.ch-head b{font-family:var(--display);font-weight:600;font-size:16.5px;display:block}
.ch-head small{display:flex;align-items:center;gap:6px;font-size:11.5px;color:rgba(255,255,255,.66);margin-top:3px}
.ch-dot{width:7px;height:7px;border-radius:50%;background:#34d399;box-shadow:0 0 8px rgba(52,211,153,.9)}
.ch-x{background:none;border:0;color:rgba(255,255,255,.7);font-size:22px;cursor:pointer;padding:4px 6px;line-height:1}
.ch-x:hover{color:#fff}
.ch-msgs{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:9px;background:var(--alt)}
.ch-row{display:flex;align-items:flex-end;gap:7px;max-width:88%}
.ch-mava{width:26px;height:26px;border-radius:50%;object-fit:cover;flex:0 0 auto;border:1px solid var(--line)}
.ch-row .ch-m{max-width:100%}
.ch-m{max-width:82%;padding:10px 14px;border-radius:13px;font-size:13.5px;line-height:1.55;white-space:pre-wrap;word-wrap:break-word}
.ch-m.bot{align-self:flex-start;background:#fff;border:1px solid var(--line);color:var(--ink);border-bottom-left-radius:5px}
.ch-m.me{align-self:flex-end;background:linear-gradient(140deg,var(--em),var(--em-d));color:#fff;border-bottom-right-radius:5px}
.ch-lead{align-self:stretch;background:#fff;border:1px solid var(--line);border-radius:12px;padding:13px}
.ch-lead p{font-size:12.5px;color:var(--mut);margin-bottom:8px}
.ch-lead input{width:100%;padding:10px 12px;border:1px solid var(--line2);border-radius:8px;font-family:var(--sans);font-size:13.5px;margin-bottom:8px}
.ch-lead input:focus{outline:none;border-color:var(--em)}
.ch-lead .btn{width:100%;padding:10px}
.ch-inrow{display:flex;gap:8px;padding:12px;border-top:1px solid var(--line);background:#fff}
.ch-inrow input{flex:1;padding:11px 14px;border:1px solid var(--line2);border-radius:10px;font-family:var(--sans);font-size:14px}
.ch-inrow input:focus{outline:none;border-color:var(--em);box-shadow:0 0 0 3px rgba(14,107,69,.1)}
.ch-send{width:44px;border-radius:10px;border:0;cursor:pointer;display:grid;place-items:center;background:linear-gradient(140deg,var(--em),var(--em-d));color:#fff}
.ch-send svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
@media(max-width:560px){.ch-box{right:12px;bottom:12px}}

.ch-armwrap{position:fixed;right:52px;bottom:28px;width:238px;height:52px;z-index:58;pointer-events:none}
.ch-arm{position:absolute;right:0;top:0;height:100%;width:auto;transform:translateX(270px);transition:transform .85s cubic-bezier(.2,.8,.2,1);filter:drop-shadow(0 8px 14px rgba(18,26,22,.3))}
.ch-armwrap.out .ch-arm{transform:translateX(0);animation:armHold 3.5s ease-in-out .9s infinite}
@keyframes armHold{0%,100%{transform:translateX(0) translateY(0)}50%{transform:translateX(0) translateY(-3px)}}
@media(max-width:720px){.ch-armwrap{display:none}}
@media(prefers-reduced-motion:reduce){.ch-armwrap{display:none}}
.ch-tease{position:fixed;right:232px;bottom:74px;z-index:59;background:#fff;border:1px solid var(--line);border-radius:16px 16px 5px 16px;padding:11px 16px;font-size:13px;font-weight:600;color:var(--ink);box-shadow:0 14px 30px -14px rgba(18,26,22,.45);cursor:pointer;opacity:0;transform:translateY(10px) rotate(-3deg);transform-origin:82% 100%;transition:opacity .4s,transform .4s;display:flex;align-items:center;gap:8px}
.ch-tease.on{opacity:1;transform:rotate(-3deg);animation:teasePop .45s cubic-bezier(.2,.8,.2,1)}
@keyframes teasePop{0%{transform:translateY(12px) scale(.9) rotate(-3deg)}60%{transform:translateY(-3px) scale(1.03) rotate(-3deg)}100%{transform:rotate(-3deg)}}
.ch-tease::after{content:"";position:absolute;right:30px;bottom:-7px;width:13px;height:13px;background:#fff;border-right:1px solid var(--line);border-bottom:1px solid var(--line);transform:rotate(45deg)}
.ch-tease img{width:26px;height:26px;border-radius:50%;object-fit:cover}
.ch-tease .tz-x{color:var(--mut);font-size:15px;padding:0 0 0 2px;line-height:1}
.ch-tease .tz-x:hover{color:var(--ink)}
@media(max-width:720px){.ch-tease{right:100px;bottom:34px;transform:translateY(10px)}.ch-tease.on{transform:none;animation:none}.ch-tease::after{right:-7px;bottom:10px;transform:rotate(-45deg)}}
@media(prefers-reduced-motion:reduce){.ch-tease{animation:none}}

/* scroll-loading box truck */
.hauler{position:fixed;left:16px;bottom:16px;z-index:42;width:196px;height:176px;pointer-events:none}
.hauler-stage{position:absolute;inset:0;overflow:visible}
.hauler-truck{position:absolute;left:0;bottom:6px;width:100%;filter:drop-shadow(0 14px 18px rgba(18,26,22,.35));animation:haulBob 4.5s ease-in-out infinite}
@keyframes haulBob{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}
.load-item{position:absolute;left:0;top:0;width:44px;height:44px;object-fit:contain;filter:drop-shadow(0 6px 8px rgba(18,26,22,.3));will-change:transform,opacity;pointer-events:none}
.load-item.is-box{display:grid;place-items:center;color:#b98a4a}
.load-item.is-box svg{width:100%;height:100%;fill:#d9b07c;stroke:#8a6435;stroke-width:1}
@media(max-width:720px){.hauler{width:132px;height:120px;left:10px;bottom:10px}.load-item{width:30px;height:30px}}
@media(prefers-reduced-motion:reduce){.hauler{display:none}}

.rv{opacity:0;transform:translateY(24px);transition:opacity .8s cubic-bezier(.2,.7,.2,1),transform .8s cubic-bezier(.2,.7,.2,1)}
.rv.in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){.rv{opacity:1;transform:none;transition:none}.nav-in,.b-mark svg,.hero-slides .slide.on,.loader .bar i,.float-rev,.fr-trophy,.hero-vid{animation:none}.hero-vid{display:none}.hero-slides .slide{transition:none}}

@media(max-width:960px){
  .take-grid{grid-template-columns:1fr 1fr}
  .how-grid,.rev-grid{grid-template-columns:1fr}
  .pf-grid{grid-template-columns:1fr 1fr}
  .nav-links{display:none;position:absolute;top:72px;left:0;right:0;background:rgba(255,255,255,.98);backdrop-filter:blur(18px);flex-direction:column;align-items:center;padding:24px;gap:16px;border:1px solid var(--line);border-radius:14px;box-shadow:0 30px 60px -30px rgba(18,26,22,.4)}
  .nav-links.open{display:flex}
  .nav .btn{display:none}
  .nav .btn.nav-book{display:inline-flex;padding:9px 15px;font-size:13px}
  .burger{display:block}
}
@media(max-width:560px){
  section{padding:64px 0}
  .take-grid,.pf-grid{grid-template-columns:1fr}
  .take-img{height:190px}
  .rail-row a{width:225px}
  /* keep 2 columns so the appliance picker fits without scrolling; tiles go
     compact-vertical (icon above label) to survive the narrow width */
  .bk-opts{grid-template-columns:1fr 1fr;gap:8px}
  .bk-opt{flex-direction:column;text-align:center;gap:7px;padding:10px 6px;font-size:12px;line-height:1.25;justify-content:flex-start}
  .bk-opt .bke{width:30px;height:30px}
  /* narrow phones: slimmer chrome + wider text column so every booking step
     fits without scrolling (the whole point of the multi-step split) */
  .bk-head{padding:16px 18px 8px}
  .bk-steps{padding:8px 18px 0}
  .bk-body{padding:14px 18px 16px}
  .bk-body h4{font-size:18px}
  .bk-hint{font-size:12.5px;margin-bottom:8px}
  .bk-q{font-size:12.5px;margin:2px 0 4px}
  .bk-fee{padding:8px 12px;margin-bottom:10px;gap:10px;font-size:12px}
  .bk-fee b{font-size:19px}
  .bk-slot{padding:9px 6px}
  .bk-ph-add{padding:8px}
  .bk-foot{margin-top:10px}
  .hst{padding:0 14px}
  input,textarea{font-size:16px!important}
}

/* Booking form: street on its own line, then City + ZIP side by side, so the
   crew gets the address already split into the parts the map needs. Stacks on
   narrow phones. */
.bk-addr2{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}
.bk-addr2 input{margin-top:0;width:100%}
@media(max-width:380px){.bk-addr2{grid-template-columns:1fr}}

/* ══════════ Google review proof — 2026-08-04 ══════════
   The 650+ count is the strongest single trust signal on the page, so it gets
   real size and every instance links to the live Google profile. Google has no
   per-review permalink, so all of them open the full review list. */

/* hero badge — bigger, and now a link */
.fr-badge{gap:9px;padding:11px 20px;text-decoration:none;transition:transform .18s ease,box-shadow .18s ease,background .18s ease}
.fr-badge .frs{font-size:14px}
.fr-badge b{font-family:var(--display);font-size:19px;font-weight:700;color:var(--ink);line-height:1}
.fr-badge em{font-size:15px;font-weight:600}
.fr-badge .fr-go{width:13px;height:13px;fill:none;stroke:var(--em);stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round;opacity:.7}
.fr-badge:hover,.fr-badge:focus-visible{transform:translateY(-2px);box-shadow:0 12px 30px -10px rgba(0,0,0,.45);background:#fff}
.fr-badge:hover .fr-go,.fr-badge:focus-visible .fr-go{opacity:1}
.fr-badge:focus-visible{outline:3px solid var(--em);outline-offset:3px}

/* hero stat tile becomes a link */
.hst-link{text-decoration:none;border-radius:8px;transition:background .2s}
.hst-link:hover,.hst-link:focus-visible{background:rgba(255,255,255,.08)}
.hst-link:focus-visible{outline:2px solid #fff;outline-offset:2px}

/* the big proof block in the reviews section */
.proof{display:inline-flex;align-items:center;gap:26px;margin:22px 0 26px;padding:26px 34px;background:var(--card);
  border:1px solid rgba(21,154,99,.34);border-radius:18px;text-decoration:none;
  transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}
.proof:hover,.proof:focus-visible{transform:translateY(-3px);border-color:var(--em);box-shadow:0 22px 50px -22px rgba(21,154,99,.55)}
.proof:focus-visible{outline:3px solid var(--em);outline-offset:4px}
.proof-n{font-family:var(--display);font-weight:700;font-size:clamp(56px,9vw,86px);line-height:.9;color:var(--em);letter-spacing:-.03em}
.proof-n i{font-style:normal;font-size:.5em;vertical-align:super;margin-left:2px}
.proof-side{display:flex;flex-direction:column;gap:5px}
.proof-stars{color:var(--em);letter-spacing:3px;font-size:16px}
.proof-rate{font-size:16px;color:var(--ink2)}
.proof-rate b{font-family:var(--display);font-size:19px;color:var(--ink)}
.proof-cta{display:inline-flex;align-items:center;gap:7px;margin-top:4px;font-family:var(--display);font-weight:600;font-size:14.5px;color:var(--em)}
.proof-cta svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.proof:hover .proof-cta{text-decoration:underline}
@media (max-width:560px){
  .proof{gap:18px;padding:22px 22px;width:100%}
  .proof-n{font-size:54px}
}

/* review cards are links now — keep the card look, add an affordance */
.rev-link{display:block;color:inherit;text-decoration:none}
.rev-link:focus-visible{outline:3px solid var(--em);outline-offset:4px;border-radius:12px}
.rev-go{display:inline-flex;align-items:center;gap:6px;margin-top:14px;font-family:var(--display);font-weight:600;font-size:12.5px;
  letter-spacing:.04em;color:var(--em);opacity:.85}
.rev-go svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.rev:hover .rev-go{opacity:1;text-decoration:underline}
.rev:has(.rev-link:hover),.rev:has(.rev-link:focus-visible){border-color:var(--em)}
/* The badge grew wider than the 235px .float-rev shell it sits in and ran off
   the right edge. Let the shell size to its content and stay on-screen. */
.float-rev{width:auto;max-width:min(360px,42vw)}
.float-rev .fr-badge{white-space:nowrap;max-width:100%}
@media (max-width:1240px){
  .fr-badge{padding:10px 15px;gap:7px}
  .fr-badge b{font-size:17px}
  .fr-badge em{font-size:13.5px}
  .fr-badge .frs{font-size:12px}
}


/* ── Booking modal, 2026-08-12 (Anthony: simpler, bigger, no scrolling) ──────
   Step 1 tiles are larger with bigger labels — one question, six targets.
   Step 3 uses a compact fee strip and tighter fields so the whole step,
   including the TCPA consent and the submit button, fits without scrolling. */
.bk-opts-lg{gap:12px}
.bk-opts-lg .bk-opt{padding:18px 16px;font-size:15.5px;font-weight:600;gap:14px}
.bk-opts-lg .bk-opt .bke{width:42px;height:42px;border-radius:10px}
.bk-opts-lg .bk-opt .bke svg{width:22px;height:22px}
.bk-fee-sm{padding:9px 13px;margin-bottom:10px}
.bk-fee-sm b{font-size:19px}
.bk-fee-sm span{font-size:12px;line-height:1.4}
.bk-body input,.bk-body textarea{margin-top:8px}
.bk-consent{font-size:10.5px;line-height:1.45}
@media (max-width:560px){
  .bk-opts-lg{grid-template-columns:1fr 1fr}
  .bk-opts-lg .bk-opt{padding:15px 12px;font-size:14px}
}

/* City + ZIP must stay side by side on mobile — stacked they cost ~65px, which
   is what pushed step 3 into scrolling. */
.bk-addr2{display:grid;grid-template-columns:1.6fr 1fr;gap:8px}
@media (max-width:560px){.bk-addr2{grid-template-columns:1.6fr 1fr}}
