:root{--bg:#f4f9f8;--bg2:#e6f2ee;--ink:#102820;--mut:#49655b;--line:rgba(20,20,30,.15);--accent:#137655;--accent2:#e694d8;--accentInk:#ffffff;--paper:#ffffff;--paperInk:#102820;--paperMut:#455f56;--glass:rgba(255,255,255,.86);--coat:#c98f5a;--coat2:#8e5a33;--muzzle:#fff6ea;--tongue:#ff8fa3;--fontDisplay:'Bricolage Grotesque',system-ui,sans-serif;--fontBody:'Inter',system-ui,sans-serif;--dcase:none;--dw:700;--tr:-.015em;--rad:10px;--br:4px}
/* K9PN grooming microsite base. Tokens come from site.json; hero, list and town layouts switch on data attributes. */
*{box-sizing:border-box}html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);font:17px/1.62 var(--fontBody);-webkit-font-smoothing:antialiased;overflow-x:hidden}
img,svg{max-width:100%}a{color:var(--accent);text-underline-offset:3px}a:hover{color:var(--ink)}
h1,h2,h3{font-family:var(--fontDisplay);font-weight:var(--dw);letter-spacing:var(--tr);line-height:1.06;margin:0 0 .55em;text-wrap:balance}
h1{font-size:clamp(38px,5vw,66px);line-height:1.03;letter-spacing:-.026em}h2{font-size:clamp(28px,3.8vw,46px);letter-spacing:-.02em}h3{font-size:21px;line-height:1.2}
p{margin:0 0 1em}.wrap{max-width:1180px;margin:0 auto;padding:0 24px}
.skip{position:absolute;left:-999px}.skip:focus{left:12px;top:12px;background:#fff;color:#000;padding:10px 14px;z-index:99}
:focus-visible{outline:3px solid var(--accent2);outline-offset:3px}

/* header */
.top{position:sticky;top:0;z-index:50;background:var(--glass);backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.bar{display:flex;align-items:center;gap:28px;min-height:72px}
.brand{display:flex;align-items:center;gap:11px;text-decoration:none;color:var(--ink);font:var(--dw) 21px/1 var(--fontDisplay);letter-spacing:var(--tr)}
.brand svg{width:26px;height:26px;color:var(--accent);flex:none}
.nav{margin-left:auto}.nav ul{display:flex;gap:30px;list-style:none;margin:0;padding:0}
.nav a{color:var(--ink);text-decoration:none;font-weight:600;font-size:15.5px;padding:6px 0;background:linear-gradient(var(--accent),var(--accent)) 0 100%/0 2px no-repeat;transition:background-size .25s}
.nav a:hover,.nav a[aria-current]{background-size:100% 2px;color:var(--ink)}
.call{background:var(--ink);color:var(--bg);text-decoration:none;font-weight:700;padding:12px 20px;border-radius:var(--br);font-size:15px;white-space:nowrap;transition:background .2s}.call:hover{background:var(--accent);color:var(--accentInk)}
.burger{display:none;background:none;border:0;width:44px;height:44px;margin-left:auto}.burger i{display:block;height:2px;background:var(--ink);margin:7px 9px;transition:.25s}
@media(max-width:900px){.burger{display:block}.call{display:none}.nav{position:fixed;inset:72px 0 auto 0;background:var(--bg);border-bottom:1px solid var(--line);transform:translateY(-130%);transition:.3s;padding:8px 24px 20px}.nav.open{transform:none}.nav ul{flex-direction:column;gap:0}.nav a{display:block;padding:15px 0;font-size:18px;background:none;border-bottom:1px solid var(--line)}}

.crumbs{font-size:14px;color:var(--mut);margin:0 0 22px}.crumbs a{color:var(--mut)}.crumbs i{margin:0 9px;font-style:normal;opacity:.5}
.btn{display:inline-flex;align-items:center;gap:10px;background:var(--accent);color:var(--accentInk);border:0;padding:16px 28px;border-radius:var(--br);font:700 16px var(--fontBody);text-decoration:none;cursor:pointer;transition:background .2s,transform .2s}
.btn:hover{background:var(--ink);color:var(--bg)}.btn i{font-style:normal;transition:transform .25s}.btn:hover i{transform:translateX(4px)}
.btn.ghost{background:none;color:var(--ink);padding:16px 4px;border-radius:0;box-shadow:inset 0 -2px 0 var(--ink)}.btn.ghost:hover{background:none;color:var(--accent);box-shadow:inset 0 -2px 0 var(--accent)}
.sec{padding:clamp(60px,8.5vw,112px) 0;position:relative}.sec.alt{background:var(--bg2)}
.lead{font-size:clamp(18px,1.9vw,21px);line-height:1.55;color:var(--mut);max-width:58ch}
.js .rv{opacity:0;transform:translateY(12px);transition:opacity .6s,transform .6s}.js .rv.in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.js .rv{opacity:1;transform:none}}
.two{display:grid;grid-template-columns:5fr 6fr;gap:clamp(28px,6vw,88px);align-items:start}@media(max-width:900px){.two{grid-template-columns:1fr}}
.stick{position:sticky;top:104px}@media(max-width:900px){.stick{position:static}}

/* shared bits */
.place{display:flex;align-items:center;gap:8px;font-weight:700;font-size:15px;color:var(--accent);margin:0 0 20px}.place svg{width:17px;height:17px;flex:none}
.cta{display:flex;flex-wrap:wrap;align-items:center;gap:14px 26px;margin-top:30px}
.ticks{list-style:none;margin:24px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:8px 24px;font-weight:600;font-size:15.5px}.ticks li{display:flex;align-items:center;gap:9px}.ticks svg{width:18px;height:18px;color:var(--accent);flex:none}
h1 .w{display:inline-block;overflow:hidden;vertical-align:bottom;padding-bottom:.08em}h1 .w i{display:inline-block;font-style:normal;animation:word .8s cubic-bezier(.2,1.2,.3,1) both;animation-delay:calc(var(--i)*.07s + .1s)}
@keyframes word{from{transform:translateY(110%) rotate(5deg)}}
.btn{position:relative;box-shadow:0 6px 0 -1px rgba(0,0,0,.22);transition:transform .15s,box-shadow .15s,background .2s}.btn:hover{transform:translateY(-2px);box-shadow:0 8px 0 -1px rgba(0,0,0,.22)}.btn:active{transform:translateY(4px);box-shadow:0 1px 0 -1px rgba(0,0,0,.22)}.btn.ghost{box-shadow:inset 0 -2px 0 var(--ink)}.btn.ghost:hover,.btn.ghost:active{transform:none}
/* depth: waves, floaties */
.wv{position:absolute;left:0;bottom:-1px;width:100%;height:60px;pointer-events:none;z-index:3;overflow:visible}.wv path{animation:drift 22s linear infinite;transform-box:fill-box}.wv .w1{animation-duration:34s;animation-direction:reverse}@keyframes drift{to{transform:translateX(-50%)}}
.hero .wv,.phero .wv{color:var(--bg)}.sec>.wv{top:-59px;bottom:auto;transform:scaleY(1)}.sec.alt>.wv{color:var(--bg2)}.sec.ink>.wv{color:var(--ink)}
.floaties{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:1}.fl{position:absolute;color:var(--accent2);opacity:.55;transform:translateY(var(--py,0px)) rotate(var(--r));will-change:transform}.fl svg{display:block;width:100%;height:auto;animation:bob 6s ease-in-out infinite}.fl:nth-child(2n) svg{animation-duration:8s;animation-direction:reverse}.fl:nth-child(3n){color:var(--accent);opacity:.3}@keyframes bob{50%{transform:translateY(-14px) rotate(8deg)}}
.ink .fl{opacity:.35}
/* hero */
.hero{position:relative;padding:clamp(40px,5vw,72px) 0 clamp(90px,10vw,150px);background:linear-gradient(180deg,var(--bg2),var(--bg) 92%);overflow:hidden}
.hero .wrap{position:relative;z-index:2;display:grid;grid-template-columns:1fr 1fr;gap:clamp(24px,4vw,64px);align-items:center}
.hero .copy>:not(h1){animation:rise-in .7s cubic-bezier(.2,.7,.2,1) both}.hero .copy>:nth-child(3){animation-delay:.3s}.hero .copy>:nth-child(4){animation-delay:.4s}.hero .copy>:nth-child(5){animation-delay:.5s}
@keyframes rise-in{from{opacity:0;transform:translateY(18px)}}
.scene{position:relative;--px:0;--py:0;max-width:560px;width:100%;margin:0 auto;touch-action:pan-y;user-select:none;-webkit-user-select:none}
.scene .halo{position:absolute;inset:6% 4% 15%;border-radius:46% 54% 50% 50%/52% 46% 54% 48%;background:radial-gradient(circle at 32% 28%,color-mix(in srgb,var(--accent2) 38%,#fff),color-mix(in srgb,var(--accent2) 72%,var(--accent)) 100%);animation:morph 11s ease-in-out infinite;transform:translate(calc(var(--px)*-14px),calc(var(--py)*-10px))}
@keyframes morph{50%{border-radius:56% 44% 42% 58%/44% 58% 42% 56%;transform:translate(calc(var(--px)*-14px),calc(var(--py)*-10px)) rotate(8deg) scale(1.04)}}
.scene .bub{position:absolute;inset:0;overflow:hidden;pointer-events:none;transform:translate(calc(var(--px)*22px),calc(var(--py)*16px))}.scene .bub i{position:absolute;bottom:-40px;left:var(--x);width:var(--s);height:var(--s);border-radius:50%;background:radial-gradient(circle at 30% 30%,#fff,rgba(255,255,255,.15) 60%);border:1.5px solid rgba(255,255,255,.8);animation:rise var(--d) linear var(--l) infinite}
@keyframes rise{to{transform:translateY(-560px) translateX(24px)}}
.bigdog{position:relative;display:block;width:100%;height:auto;overflow:visible;filter:drop-shadow(0 26px 22px rgba(0,0,0,.2));transform:translate(calc(var(--px)*8px),calc(var(--py)*5px));cursor:grab}.bigdog:active{cursor:grabbing}
.bigdog .tail{animation:wag 1.1s ease-in-out infinite}.bigdog .head{animation:nod 3.6s ease-in-out infinite}.bigdog .tongue{animation:pant 1.8s ease-in-out infinite;transform-origin:200px 232px}.bigdog .eyes{animation:blink 5s infinite;transform-origin:200px 168px}
.bigdog .ear.l{animation:ear 3.4s ease-in-out infinite}.bigdog .ear.r{animation:ear 3.4s ease-in-out .5s infinite reverse}.bigdog .duck{animation:duck 3s ease-in-out infinite}.bigdog .pupil{transform:translate(var(--ex,0px),var(--ey,0px))}
@keyframes wag{50%{transform:rotate(-18deg)}}@keyframes nod{50%{transform:rotate(2.5deg) translateY(2px)}}@keyframes pant{50%{transform:scaleY(1.25)}}@keyframes blink{94%,100%{transform:scaleY(1)}97%{transform:scaleY(.1)}}@keyframes ear{50%{transform:rotate(5deg)}}@keyframes duck{50%{transform:translateY(-7px) rotate(-5deg)}}
.bigdog .mud .m{transition:opacity .25s}.bigdog .sponge{animation:sponge 2.6s ease-in-out infinite;transition:opacity .4s}.scene.touched .sponge{opacity:0;animation:none}
@keyframes sponge{0%,100%{transform:translate(70px,210px) rotate(-12deg)}50%{transform:translate(250px,260px) rotate(14deg)}}
.bigdog .foams circle{fill:#fff;stroke:rgba(0,0,0,.08);animation:foam 1.5s ease-out forwards}@keyframes foam{0%{transform:scale(.2);opacity:1}25%{transform:scale(1)}100%{transform:scale(1.6) translateY(-26px);opacity:0}}
.bigdog .spark path{opacity:0;transform:scale(0)}.scene.clean .spark path{animation:twinkle 1.6s ease-in-out infinite}@keyframes twinkle{0%,100%{opacity:0;transform:scale(0) rotate(0)}50%{opacity:1;transform:scale(1.2) rotate(40deg)}}
.scene.clean .bigdog .tail{animation-duration:.45s}.scene.clean .bigdog{animation:hop .6s ease-out}@keyframes hop{35%{transform:translateY(-26px)}}
.scene-cap{margin:22px 0 0;text-align:center;font-weight:700;color:var(--ink);min-height:1.5em}.scene-cap.done{color:var(--accent)}
.wash{display:block;margin:8px auto 0;background:none;border:0;color:var(--mut);font:600 14px var(--fontBody);text-decoration:underline;text-underline-offset:3px;cursor:pointer}.wash:hover{color:var(--accent)}.scene.clean .wash{display:none}
[data-hero=band] .hero{background:radial-gradient(circle at 78% 30%,color-mix(in srgb,var(--accent) 55%,var(--ink)),var(--ink) 62%);color:var(--bg)}[data-hero=band] .hero h1{color:#fff}[data-hero=band] .hero .lead{color:rgba(255,255,255,.8)}[data-hero=band] .hero .place{color:var(--accent2)}[data-hero=band] .hero .btn.ghost{color:#fff;box-shadow:inset 0 -2px 0 #fff}[data-hero=band] .hero .ticks svg{color:var(--accent2)}[data-hero=band] .hero .btn:not(.ghost){background:var(--accent2);color:var(--ink)}[data-hero=band] .hero .btn:not(.ghost):hover{background:#fff}[data-hero=band] .hero .scene-cap{color:#fff}[data-hero=band] .hero .scene-cap.done{color:var(--accent2)}[data-hero=band] .hero .wash{color:rgba(255,255,255,.75)}[data-hero=band] .hero .halo{opacity:.35}
[data-hero=stack] .hero .wrap{grid-template-columns:1fr;text-align:center;justify-items:center}[data-hero=stack] .hero .copy{max-width:820px}[data-hero=stack] .hero .lead{margin-inline:auto}[data-hero=stack] .hero .cta,[data-hero=stack] .hero .ticks,[data-hero=stack] .hero .place{justify-content:center}[data-hero=stack] .scene{max-width:480px}
@media(max-width:940px){.hero .wrap{grid-template-columns:1fr}.scene{max-width:400px}}
/* inner hero */
.phero{position:relative;padding:clamp(40px,5vw,70px) 0 clamp(80px,9vw,120px);background:linear-gradient(180deg,var(--bg2),var(--bg) 95%);overflow:hidden}
.phero .wrap{position:relative;z-index:2;display:grid;grid-template-columns:1.15fr .85fr;gap:clamp(24px,5vw,72px);align-items:center}.phero .place{margin-bottom:18px}.phero .cta{margin-top:26px}
.crumbs{font-size:14px;color:var(--mut);margin:0 0 22px}.crumbs a{color:var(--mut)}.crumbs i{margin:0 9px;font-style:normal;opacity:.5}
.pscene{position:relative}.tscene{border-radius:var(--rad);display:grid;place-items:center;overflow:hidden;aspect-ratio:22/15;background:var(--accent);position:relative}.tscene svg{width:100%;height:100%;display:block}
.tscene.t1{background:var(--accent2)}.tscene.t2{background:color-mix(in srgb,var(--accent) 22%,var(--bg2))}.tscene.t3{background:color-mix(in srgb,var(--accent2) 40%,var(--bg2))}
.pscene .tscene{box-shadow:0 40px 60px -36px rgba(0,0,0,.5);transform:rotate(-2deg)}.phero .figure{position:absolute;right:-8px;bottom:-26px;background:var(--ink);color:#fff;border-radius:var(--br);padding:14px 20px;transform:rotate(2deg);box-shadow:0 18px 30px -16px rgba(0,0,0,.5)}.phero .figure b{display:block;font:var(--dw) clamp(26px,3vw,36px)/1 var(--fontDisplay);color:var(--accent2)}.phero .figure span{font-size:14px;opacity:.85}
.peek{justify-self:center;width:min(100%,300px)}.peek .bigdog{animation:peekup .9s .3s cubic-bezier(.2,1.3,.4,1) both}@keyframes peekup{from{transform:translateY(80px);opacity:0}}
@media(max-width:860px){.phero .wrap{grid-template-columns:1fr}.pscene{max-width:420px}.peek{width:220px}}
/* mini scene motion */
.tscene .bb{animation:bubup var(--d) ease-in var(--l) infinite;transform:translateX(var(--x))}@keyframes bubup{0%{transform:translate(var(--x),0);opacity:0}15%{opacity:.95}100%{transform:translate(calc(var(--x) + 10px),-80px);opacity:0}}
.tscene .duck2{animation:duck 2.6s ease-in-out infinite}.tscene .fur{transform:translate(var(--x),22px);animation:furfall var(--d) ease-in var(--l) infinite;opacity:0}@keyframes furfall{0%{opacity:0;transform:translate(var(--x),22px) rotate(0)}15%{opacity:1}100%{opacity:0;transform:translate(calc(var(--x) + 14px),128px) rotate(200deg)}}
.tscene .sc2 .blade.a{animation:snipA 1.4s ease-in-out infinite}.tscene .sc2 .blade.b{animation:snipB 1.4s ease-in-out infinite}@keyframes snipA{50%{transform:rotate(-18deg)}}@keyframes snipB{50%{transform:rotate(18deg)}}
.tscene .vanbody{animation:vanb .5s ease-in-out infinite alternate}@keyframes vanb{to{transform:translateY(-2.5px)}}.tscene .wh{animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.tscene .road{animation:road .6s linear infinite}@keyframes road{to{stroke-dashoffset:-26}}.tscene .speed{animation:speed 1s linear infinite}@keyframes speed{50%{transform:translateX(-10px);opacity:.15}}
.tscene .pup2{animation:hopp 1.3s ease-in-out infinite;transform-origin:110px 128px}@keyframes hopp{50%{transform:translateY(-14px)}}.tscene .e1{animation:ear 1.3s ease-in-out infinite}.tscene .e2{animation:ear 1.3s ease-in-out infinite reverse}
.tscene .brush{transform:translate(18px,84px);animation:brush 2s ease-in-out infinite}@keyframes brush{50%{transform:translate(112px,70px) rotate(-6deg)}}
.tscene .bottle{animation:bot 2.4s ease-in-out infinite;transform-origin:110px 128px}@keyframes bot{50%{transform:rotate(-7deg)}}.tscene .drp{transform:translate(var(--x),52px);animation:drip var(--d) ease-in var(--l) infinite;opacity:0}@keyframes drip{0%{opacity:0;transform:translate(var(--x),52px)}20%{opacity:1}100%{opacity:0;transform:translate(var(--x),136px)}}
/* estimator card (overlaps hero) */
.estsec{position:relative;z-index:5;margin-top:-72px;padding-bottom:clamp(40px,6vw,80px)}
.estcard{display:grid;grid-template-columns:1.25fr .75fr;background:var(--paper);color:var(--paperInk);border-radius:calc(var(--rad) * 1.4);box-shadow:0 2px 0 var(--line),0 60px 90px -50px rgba(0,0,0,.55);overflow:hidden}
.estl{padding:clamp(24px,3.4vw,44px);display:grid;gap:18px}.estl h2{margin:0;font-size:clamp(26px,3vw,36px)}.estsub{margin:-8px 0 0;color:var(--paperMut)}
.estl fieldset{border:0;margin:0;padding:0;min-width:0}.estl legend{font:700 14.5px var(--fontBody);color:var(--paperMut);margin-bottom:9px;padding:0}
.estl .opts{display:flex;flex-wrap:wrap;gap:8px}.estl .opts label{position:relative}.estl .opts input{position:absolute;opacity:0;inset:0;cursor:pointer;margin:0}
.estl .opts span{display:block;padding:10px 16px;border-radius:999px;border:2px solid var(--line);font-weight:700;font-size:14.5px;transition:transform .2s cubic-bezier(.3,1.6,.5,1),background .2s,color .2s,border-color .2s;background:#fff}
.estl .opts input:hover+span{border-color:var(--accent);transform:translateY(-2px)}.estl .opts input:checked+span{background:var(--accent);color:var(--accentInk);border-color:var(--accent);transform:scale(1.06)}.estl .opts input:focus-visible+span{outline:3px solid var(--accent2);outline-offset:2px}
.estr{background:var(--ink);color:#fff;padding:clamp(24px,3.4vw,44px);display:flex;flex-direction:column;gap:14px;justify-content:center;position:relative;overflow:hidden}.estr:before{content:"";position:absolute;width:380px;height:380px;border-radius:50%;background:radial-gradient(circle,var(--accent),transparent 68%);opacity:.5;right:-120px;top:-120px;animation:pulse 5s ease-in-out infinite}@keyframes pulse{50%{transform:scale(1.15)}}
.pup{position:relative;width:170px;height:170px;border-radius:999px 999px 18px 18px;background:var(--accent2);overflow:hidden;--ds:.9;align-self:flex-start}.pup .bigdog{position:absolute;left:50%;bottom:0;width:150px;height:auto;margin-left:-75px;transform:scale(var(--ds));transform-origin:50% 100%;transition:transform .55s cubic-bezier(.3,1.6,.5,1);filter:none;cursor:default}
.pup .bigdog *{transition:fill .4s}.pup .puff,.pup .ear{transition:transform .4s}.pup[data-coat=curly] .puff{transform:scale(1.3);transform-origin:206px 100px}.pup[data-coat=long] .ear{animation:none;transform:scaleY(1.28)}.pup[data-coat=double] .puff{transform:scale(.82);transform-origin:206px 100px}
.dog .tail{animation:wag 1.1s ease-in-out infinite}.dog .tongue{animation:pant 1.8s ease-in-out infinite;transform-origin:120px 126px}.dog .eyes{animation:blink 5s infinite;transform-origin:120px 90px}.dog .ear.l{animation:ear 3.4s ease-in-out infinite}.dog .ear.r{animation:ear 3.4s ease-in-out .5s infinite reverse}
.estout{display:grid;gap:0;position:relative}.estout .lbl{font-size:14.5px;opacity:.8}.estout .num{font:var(--dw) clamp(42px,5vw,62px)/1.05 var(--fontDisplay);letter-spacing:-.03em;color:var(--accent2);font-variant-numeric:tabular-nums}.estout .un{font-size:14.5px;opacity:.8}
.estr .btn{justify-content:center;background:var(--accent2);color:var(--ink);position:relative}.estr .btn:hover{background:#fff}.estr .fine{font-size:13px;opacity:.7;margin:0;position:relative}
@media(max-width:940px){.estcard{grid-template-columns:1fr}.estsec{margin-top:-60px}}
/* service tiles */
.svcs{margin:44px 0 0;display:grid;grid-template-columns:repeat(3,1fr);gap:26px;perspective:1200px}
.tile{display:flex;flex-direction:column;background:var(--paper);color:var(--paperInk);border-radius:calc(var(--rad) * 1.2);text-decoration:none;box-shadow:0 1px 0 var(--line),0 30px 50px -34px rgba(0,0,0,.5);transform:rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transform-style:preserve-3d;transition:transform .2s ease-out,box-shadow .3s;position:relative;overflow:hidden}
.tile:hover{color:var(--paperInk);box-shadow:0 2px 0 var(--line),0 50px 70px -36px rgba(0,0,0,.6)}.tile .tscene{border-radius:0;aspect-ratio:22/13}.tile .tscene svg{transition:transform .5s cubic-bezier(.3,1.4,.5,1)}.tile:hover .tscene svg{transform:scale(1.07)}
.tile:after{content:"";position:absolute;inset:0;background:radial-gradient(circle at var(--gx,50%) var(--gy,0%),rgba(255,255,255,.28),transparent 45%);opacity:0;transition:opacity .3s;pointer-events:none}.tile:hover:after{opacity:1}
.tbody{padding:22px 24px 24px;display:flex;flex-direction:column;gap:10px;flex:1;transform:translateZ(30px)}.tbody h3{margin:0}.tbody p{margin:0;color:var(--paperMut);font-size:15.5px;flex:1}
.tfoot{display:flex;justify-content:space-between;align-items:end;gap:12px;margin-top:6px;border-top:1px solid var(--line);padding-top:14px}.tile .pr{font:var(--dw) 26px/1.05 var(--fontDisplay);letter-spacing:-.02em;color:var(--accent);font-variant-numeric:tabular-nums}.tile .pr small{display:block;font:500 13px var(--fontBody);color:var(--paperMut);letter-spacing:0;margin-top:3px}.tile .go{font-weight:700;font-size:14.5px;color:var(--ink);white-space:nowrap}.tile .go i{display:inline-block;font-style:normal;transition:transform .25s}.tile:hover .go i{transform:translateX(5px)}
[data-cards=carousel] .svcs{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:22px;padding:8px 24px 36px;margin:44px -24px 0;scrollbar-width:thin}[data-cards=carousel] .tile{flex:0 0 min(340px,82vw);scroll-snap-align:start}
@media(max-width:1000px){[data-cards=tiles] .svcs{grid-template-columns:1fr 1fr}}@media(max-width:640px){[data-cards=tiles] .svcs{grid-template-columns:1fr}}
/* walking dog along the steps */
.walk .rail{position:relative;height:84px;margin:38px 0 0}.walk .track{position:absolute;left:16.66%;right:16.66%;bottom:10px;height:6px;border-radius:3px;background:repeating-linear-gradient(90deg,var(--line) 0 12px,transparent 12px 22px)}.walk .track i{position:absolute;left:0;top:0;bottom:0;width:calc(var(--p,0) * 100%);background:var(--accent);border-radius:3px}
.walk .walker{position:absolute;bottom:6px;left:calc(16.66% + var(--p,0) * 66.68%);width:96px;margin-left:-48px;transition:left .15s linear}.walkdog{width:100%;display:block}.walkdog .wbob{animation:wbob .38s ease-in-out infinite alternate}@keyframes wbob{to{transform:translateY(-3px)}}.walkdog .lg1{animation:leg .38s ease-in-out infinite alternate;transform-origin:50% 0}.walkdog .lg2{animation:leg .38s ease-in-out infinite alternate-reverse;transform-origin:50% 0}@keyframes leg{from{transform:rotate(22deg)}to{transform:rotate(-22deg)}}.walkdog .wt{animation:wag .38s ease-in-out infinite alternate;transform-origin:18px 36px}
.steps{counter-reset:s;display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(20px,4vw,48px);margin:8px 0 0;padding:0;list-style:none}.steps li{counter-increment:s;background:var(--paper);color:var(--mut);border-radius:var(--rad);padding:26px 26px 28px;box-shadow:0 1px 0 var(--line),0 24px 40px -30px rgba(0,0,0,.45);transition:transform .4s cubic-bezier(.3,1.5,.5,1),box-shadow .3s}
.steps li:before{content:counter(s);display:grid;place-items:center;width:52px;height:52px;border-radius:50%;background:var(--line);color:var(--ink);font:var(--dw) 26px/1 var(--fontDisplay);margin-bottom:16px;transition:background .3s,color .3s,transform .4s cubic-bezier(.3,1.8,.5,1)}.steps li.on{transform:translateY(-8px);box-shadow:0 1px 0 var(--line),0 36px 50px -30px rgba(0,0,0,.55)}.steps li.on:before{background:var(--accent);color:var(--accentInk);transform:scale(1.15) rotate(-6deg)}.steps b{display:block;color:var(--ink);font:700 19px/1.25 var(--fontBody);margin-bottom:6px}
@media(max-width:860px){.steps{grid-template-columns:1fr}.walk .rail{display:none}}
/* floating quote button */
.fab{position:fixed;right:22px;bottom:22px;z-index:56;display:flex;align-items:center;gap:8px;background:var(--ink);color:#fff;text-decoration:none;font-weight:700;padding:8px 20px 8px 10px;border-radius:999px;box-shadow:0 14px 30px -10px rgba(0,0,0,.5);transform:translateY(130px);transition:transform .5s cubic-bezier(.3,1.5,.5,1)}.fab.show{transform:none}.fab:hover{color:#fff;background:var(--accent)}.fab .fabdog{width:44px;height:44px;background:var(--accent2);border-radius:50%;padding:3px}.fab .pupil{transform:translate(var(--ex,0px),var(--ey,0px))}.fabdog .fe.l{animation:ear 1.6s ease-in-out infinite}.fabdog .fe.r{animation:ear 1.6s ease-in-out infinite reverse}@media(max-width:900px){.fab{display:none}}
.confetti{position:fixed;left:0;top:0;width:12px;height:12px;pointer-events:none;z-index:99;color:var(--accent)}.confetti svg{width:100%;height:100%;display:block}
.thanks .scene{max-width:420px}
/* lists, steps, trust */
.facts{margin:0;padding:0;list-style:none}.facts li{padding:20px 0 20px 34px;border-top:1px solid var(--line);position:relative;font-size:17.5px}.facts li:last-child{border-bottom:1px solid var(--line)}.facts li:before{content:"";position:absolute;left:2px;top:30px;width:12px;height:12px;background:var(--accent);border-radius:2px;transform:rotate(45deg)}
.trio{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(24px,4vw,56px);margin-top:44px}.trio div{border-top:2px solid var(--accent);padding-top:20px}.trio h3{margin-bottom:8px}.trio p{color:var(--mut);margin:0}@media(max-width:860px){.trio{grid-template-columns:1fr}}
.towns{display:flex;flex-wrap:wrap;gap:10px;margin:34px 0 0;padding:0;list-style:none}.towns a{display:block;padding:12px 18px;border:1.5px solid var(--line);border-radius:var(--br);background:#fff;color:var(--ink);text-decoration:none;font-weight:600;transition:.18s}.towns a:hover{border-color:var(--accent);color:var(--accent)}
[data-towns=grid] .towns{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:0}[data-towns=grid] .towns a{border:0;border-top:1px solid var(--line);border-radius:0;background:none;padding:20px 4px;font:var(--dw) 22px var(--fontDisplay);letter-spacing:var(--tr)}[data-towns=grid] .towns a:hover{padding-left:12px}
[data-towns=list] .towns{display:block;columns:2;column-gap:56px}[data-towns=list] .towns li{break-inside:avoid;border-bottom:1px solid var(--line)}[data-towns=list] .towns a{border:0;border-radius:0;background:none;padding:17px 4px;font:var(--dw) 24px var(--fontDisplay);letter-spacing:var(--tr)}[data-towns=list] .towns a:hover{padding-left:12px}@media(max-width:700px){[data-towns=list] .towns{columns:1}}
table.pt{width:100%;border-collapse:collapse}.pt th{font:700 14.5px var(--fontBody);color:var(--mut);text-align:left;padding:0 0 12px}.pt th:last-child,.pt td:last-child{text-align:right}.pt td{padding:19px 0;border-top:1px solid var(--line);font-size:17.5px}.pt tr:last-child td{border-bottom:1px solid var(--line)}.pt td a{color:var(--ink);font-weight:600;text-decoration:none}.pt td a:hover{color:var(--accent)}.pt td:last-child{font:var(--dw) 21px var(--fontDisplay);color:var(--accent);white-space:nowrap;font-variant-numeric:tabular-nums}
.faqs details{border-top:1px solid var(--line)}.faqs details:last-child{border-bottom:1px solid var(--line)}.faqs summary{cursor:pointer;padding:22px 40px 22px 0;font:700 18px/1.35 var(--fontBody);list-style:none;position:relative}.faqs summary::-webkit-details-marker{display:none}
.faqs summary i{position:absolute;right:4px;top:50%;width:16px;height:16px;transform:translateY(-50%)}.faqs summary i:before,.faqs summary i:after{content:"";position:absolute;left:0;top:7px;width:16px;height:2px;background:var(--accent);transition:transform .25s}.faqs summary i:after{transform:rotate(90deg)}.faqs details[open] summary i:after{transform:rotate(0)}
.faqs details>div{padding:0 0 22px;color:var(--mut);max-width:62ch}.faqs details p{margin:0}
.prose{max-width:70ch}.prose h2{font-size:clamp(24px,3vw,32px);margin-top:1.6em}.prose li{margin-bottom:.5em}.prose .lead{color:var(--ink)}
.outlinks{display:flex;flex-wrap:wrap;gap:10px 28px;margin-top:22px;font-weight:600}
.ink{background:var(--ink);color:var(--bg)}.ink .lead{color:rgba(255,255,255,.78)}.ink a:not(.btn){color:var(--accent2)}.ink h2{color:#fff}.ink .btn{background:var(--accent2);color:var(--ink)}.ink .btn:hover{background:#fff;color:var(--ink)}

/* form */
.lf{background:var(--paper);color:var(--paperInk);padding:clamp(24px,3.2vw,38px);border-radius:var(--rad);box-shadow:0 40px 70px -46px rgba(0,0,0,.5);display:grid;gap:14px;grid-template-columns:1fr 1fr}.lf>*{grid-column:1/-1}.lf .half{grid-column:span 1}
.lf .formh{margin:0 0 6px;font-size:28px}.lf label{display:grid;gap:6px;font-weight:700;font-size:14px}
.lf input,.lf select,.lf textarea{font:16px var(--fontBody);padding:13px 14px;border:1.5px solid rgba(0,0,0,.2);border-radius:var(--br);background:#fff;color:#14171c;width:100%}.lf input:focus,.lf select:focus,.lf textarea:focus{outline:3px solid var(--accent2);border-color:var(--accent)}
.lf .check{display:flex;gap:10px;align-items:flex-start;font-weight:400;font-size:13px;color:var(--paperMut)}.lf .check input{width:20px;height:20px;margin-top:2px;flex:none}
.lf .fine{font-size:12.5px;color:var(--paperMut);margin:0}.lf .fine a{color:var(--accent)}.lf .msg{font-weight:700;font-size:14.5px;margin:0}.lf .msg.err{color:#b3261e}.hp{position:absolute;left:-9999px}.lf .btn{justify-content:center;background:var(--accent);color:var(--accentInk)}.lf .btn:hover{background:var(--ink);color:#fff}
@media(max-width:560px){.lf{grid-template-columns:1fr}.lf .half{grid-column:1/-1}}
.foot{background:var(--ink);color:rgba(255,255,255,.78);padding:64px 0 32px;font-size:15px}.foot a{color:#fff;text-decoration:none}.foot a:hover{color:var(--accent2)}
.fg{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:40px}.foot h3{color:#fff;font-size:16px;font-family:var(--fontBody);font-weight:700;letter-spacing:0}.foot ul{list-style:none;margin:0;padding:0;display:grid;gap:9px}
.foot .brand{color:#fff}.foot .brand svg{color:var(--accent2)}.legal{border-top:1px solid rgba(255,255,255,.14);margin-top:40px;padding-top:22px;font-size:13px}@media(max-width:760px){.fg{grid-template-columns:1fr}}
.mobbar{display:none}@media(max-width:900px){.mobbar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:55;background:var(--ink);padding:10px 14px;gap:10px}.mobbar a{flex:1;text-align:center;background:var(--accent);color:var(--accentInk);padding:13px;border-radius:var(--br);font-weight:700;text-decoration:none}.mobbar a+a{background:#fff;color:var(--ink)}body{padding-bottom:72px}}

@media(max-width:600px){.brand{font-size:18px}.brand svg{width:22px;height:22px}.bar{gap:12px}}
.scene.clean .sponge{display:none}

