/* =============================================================================
   Max's Poo Crew — site styles
   -----------------------------------------------------------------------------
   Single-page rebuild. The site used to be eight separate pages; it is now one
   page with anchored sections, and the Worker 301s the retired URLs onto those
   anchors so nothing that was indexed or bookmarked breaks. /privacy-policy/
   and /terms/ stay as real pages — legal text does not belong in a marketing
   anchor.

   The brand colours are the ones this repo already had (--red #C8102E and
   friends). Only the surfaces moved: the page background is warmer and redder
   than the old near-white cream, which is the look Mike signed off on.

   Everything is hand-written CSS with no build step, same as before. The
   running dogs are inline SVG drawn by assets/js/site.js and animated here.

   Layout order below follows the page top to bottom.
   ========================================================================== */

/* ============================================================
   FONT
   Archivo, latin subset, self-hosted (SIL Open Font License). The file is
   variable with a weight axis of 100-900. The descriptor limits it to 400-700
   because that is what the Google Fonts request used to ask for, so the look
   is unchanged: where no rounded system face wins (Android, Windows), headings
   that ask for 800/900 render at 700, exactly as they did before. Widening this
   to 100 900 makes those headings heavier - a design change, not a fix.
   ============================================================ */
@font-face{
  font-family:"Archivo"; font-style:normal; font-weight:400 700; font-stretch:100%; font-display:swap;
  src:url("/assets/fonts/archivo-latin-var.v1.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}


:root{
  /* Brand — unchanged from the previous site */
  --red:        #C8102E;
  --red-ink:    #A50D26;   /* red as text on a light surface: 7.3:1 on --cream */
  --red-dark:   #A50D26;
  --red-deep:   #7F0A1D;   /* the 3px "lip" under buttons, and hover depth */

  /* Accents */
  --butter:     #FFD166;
  --butter-deep:#F0B32E;
  --yard:       #5FA243;
  --yard-deep:  #42782E;
  --yard-pale:  #8CC46E;
  --pink:       #F58BA0;

  /* Surfaces and ink — every neutral leans red so the page reads warm-red
     rather than a neutral cream with red accents dropped on top. */
  --cream:      #FFF1EB;
  --cream-2:    #FFDFD6;
  --surface:    #FFFFFF;
  --surface-2:  #FFF7F3;
  --panel:      #3A1210;
  --panel-ink:  #FFECE5;
  --panel-ink-2:#DBADA1;

  --ink:        #331411;
  --ink-2:      #6E433A;
  --ink-3:      #835548;   /* was #9C6E62: 3.9-4.4:1 on the light surfaces, below AA for small text */
  --rule:       #F7D8CD;
  --rule-2:     #ECBBAB;

  --sky-1:      #FFD1C1;
  --sky-2:      #FFF1EB;

  --shadow-sm:0 2px 6px rgba(140,20,30,.07), 0 10px 22px -12px rgba(140,20,30,.18);
  --shadow:0 4px 10px rgba(140,20,30,.07), 0 28px 56px -26px rgba(140,20,30,.32);
  --shadow-lg:0 6px 14px rgba(140,20,30,.09), 0 44px 80px -30px rgba(140,20,30,.42);

  --ambient:.10;   /* opacity of the dogs drifting behind the page */

  /* Type. Archivo is kept from the previous site for headings; the rounded
     display face is a system stack so there is no extra webfont to download. */
  --display:ui-rounded,"SF Pro Rounded","Varela Round","Archivo",system-ui,-apple-system,sans-serif;
  --body:Archivo,system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;

  --r-sm:12px; --r:18px; --r-lg:26px; --r-xl:34px;
  --wrap:1180px;   /* matches the old --max */
  --pad:clamp(20px,5vw,40px);
}

/* Dark theme. Three states: an explicit choice stamps data-theme on <html>,
   and the default "system" setting stamps nothing — so the media query has to
   be guarded against an explicit light choice winning on a dark OS. */
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --red:        #E23048;
    --red-ink:    #FF9182;
    --red-dark:   #C8102E;
    --red-deep:   #7F0A1D;
    --butter:     #FFD98A;
    --butter-deep:#EAB74A;
    --yard:       #6FB84F;
    --yard-deep:  #59A03B;
    --yard-pale:  #8ECB6E;

    --cream:      #1F0D0A;
    --cream-2:    #291310;
    --surface:    #2C1512;
    --surface-2:  #351B17;
    --panel:      #170807;
    --panel-ink:  #FFECE5;
    --panel-ink-2:#CFA096;

    --ink:        #FFF1EA;
    --ink-2:      #D6ADA2;
    --ink-3:      #A97E74;
    --rule:       #412019;
    --rule-2:     #552C23;

    --sky-1:      #40150F;
    --sky-2:      #1F0D0A;
    --shadow-sm:0 2px 6px rgba(0,0,0,.34), 0 10px 22px -12px rgba(0,0,0,.5);
    --shadow:0 4px 10px rgba(0,0,0,.36), 0 28px 56px -26px rgba(0,0,0,.62);
    --shadow-lg:0 6px 14px rgba(0,0,0,.4), 0 44px 80px -30px rgba(0,0,0,.7);
    --ambient:.13;
  }
}
:root[data-theme="dark"]{
  --red:        #E23048;
  --red-ink:    #FF9182;
  --red-dark:   #C8102E;
  --red-deep:   #7F0A1D;
  --butter:     #FFD98A;
  --butter-deep:#EAB74A;
  --yard:       #6FB84F;
  --yard-deep:  #59A03B;
  --yard-pale:  #8ECB6E;

  --cream:      #1F0D0A;
  --cream-2:    #291310;
  --surface:    #2C1512;
  --surface-2:  #351B17;
  --panel:      #170807;
  --panel-ink:  #FFECE5;
  --panel-ink-2:#CFA096;

  --ink:        #FFF1EA;
  --ink-2:      #D6ADA2;
  --ink-3:      #A97E74;
  --rule:       #412019;
  --rule-2:     #552C23;

  --sky-1:      #40150F;
  --sky-2:      #1F0D0A;
  --shadow-sm:0 2px 6px rgba(0,0,0,.34), 0 10px 22px -12px rgba(0,0,0,.5);
  --shadow:0 4px 10px rgba(0,0,0,.36), 0 28px 56px -26px rgba(0,0,0,.62);
  --shadow-lg:0 6px 14px rgba(0,0,0,.4), 0 44px 80px -30px rgba(0,0,0,.7);
  --ambient:.13;
}

/* ============================================================
   BASE
   ============================================================ */
*,*::before,*::after{box-sizing:border-box}
/* overflow-x on body alone leaves html scrollable: the running dogs translate
   past the viewport and widened the page on very narrow screens */
/* scroll-padding keeps an anchor target clear of the sticky header: ~95px
   above 560px (74px logo + 2x10 padding + border), ~91px below. .rv:target
   (in the reveal section) stops the target itself from sliding up into it. */
html{scroll-behavior:smooth; scroll-padding-top:110px; -webkit-text-size-adjust:100%; overflow-x:clip}
body{
  margin:0;
  background:var(--cream);
  color:var(--ink);
  font-family:var(--body);
  font-size:17px;
  line-height:1.62;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}
img,svg{max-width:100%}
h1,h2,h3,h4{font-family:var(--display); margin:0; line-height:1.08; letter-spacing:-.022em; text-wrap:balance; font-weight:800}
p{margin:0}
a{color:inherit}
ul{margin:0;padding:0;list-style:none}
button,input,select,textarea{font:inherit;color:inherit}

:focus-visible{outline:3px solid var(--red); outline-offset:3px; border-radius:6px}

.wrap{width:100%; max-width:var(--wrap); margin-inline:auto; padding-inline:var(--pad)}
.section{position:relative; z-index:1; padding-block:clamp(64px,8vw,104px)}
.section--tint{background:var(--cream-2)}
.sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* eyebrow / label utility face */
.eyebrow{
  display:inline-flex; align-items:center; gap:8px;
  font-family:var(--body); font-size:12.5px; font-weight:700;
  letter-spacing:.14em; text-transform:uppercase;
  color:var(--red-ink);
}
.eyebrow .paw{width:15px;height:15px;fill:currentColor;flex:none}

.h2{font-size:clamp(31px,4.6vw,50px)}
.h3{font-size:clamp(20px,2.2vw,24px); letter-spacing:-.015em}
.lede{font-size:clamp(17px,1.7vw,19.5px); color:var(--ink-2); max-width:62ch; line-height:1.62}

.head{display:flex; flex-direction:column; gap:14px; margin-bottom:clamp(34px,4.4vw,52px)}
.head .lede{margin-top:2px}
.head--center{align-items:center; text-align:center}
.head--center .lede{text-align:center}

/* ============================================================
   BUTTONS
   ============================================================ */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:9px;
  font-family:var(--display); font-weight:800; font-size:16.5px; letter-spacing:-.01em;
  padding:14px 26px; border-radius:999px; border:2px solid transparent;
  text-decoration:none; cursor:pointer; white-space:nowrap;
  transition:transform .16s cubic-bezier(.34,1.56,.64,1), box-shadow .16s ease, background-color .16s ease, color .16s ease;
}
.btn svg{width:19px;height:19px;flex:none}
.btn--primary{
  background:var(--red); color:#fff;
  box-shadow:0 3px 0 var(--red-dark), 0 14px 26px -12px rgba(152,24,24,.5);
}
.btn--primary:hover{background:var(--red-dark); transform:translateY(-2px); box-shadow:0 5px 0 #6E1010, 0 20px 32px -12px rgba(152,24,24,.6)}
.btn--primary:active{transform:translateY(1px); box-shadow:0 1px 0 var(--red-dark)}
.btn--ghost{background:var(--surface); color:var(--ink); border-color:var(--rule-2); box-shadow:var(--shadow-sm)}
.btn--ghost:hover{border-color:var(--red); color:var(--red-ink); transform:translateY(-2px)}
.btn--onDark{background:var(--butter); color:#3A2418; box-shadow:0 3px 0 var(--butter-deep)}
.btn--onDark:hover{transform:translateY(-2px); background:#FFDC84}
.btn--sm{padding:10px 18px; font-size:15px}
.btn-row{display:flex; flex-wrap:wrap; gap:13px}

/* wiggle the dog icon inside a button on hover */
.btn:hover .wag{animation:btnwag .5s ease-in-out infinite}
@keyframes btnwag{0%,100%{transform:rotate(-11deg)}50%{transform:rotate(11deg)}}

/* ============================================================
   RUNNING DOGS — shared SVG animation
   ============================================================ */
.dog{display:block; width:100%; height:auto; overflow:visible}
.dog .d-leg{fill:none; stroke-width:9; stroke-linecap:round; transform-box:view-box; animation:gait var(--gait,.42s) linear infinite}
.dog .g1{animation-delay:0s}
.dog .g2{animation-delay:calc(var(--gait,.42s) * -.5)}
.dog .g3{animation-delay:calc(var(--gait,.42s) * -.11)}
.dog .g4{animation-delay:calc(var(--gait,.42s) * -.61)}
.dog .d-bob{transform-box:view-box; animation:bob var(--gait,.42s) ease-in-out infinite}
.dog .d-tail{transform-box:view-box; animation:wag .3s ease-in-out infinite}
.dog .d-ear{transform-box:view-box; animation:earflap var(--gait,.42s) ease-in-out infinite}
.dog .d-tongue{transform-box:view-box; animation:lolly calc(var(--gait,.42s) * 1.7) ease-in-out infinite}

@keyframes gait{
  0%{transform:rotate(36deg)}
  25%{transform:rotate(8deg)}
  50%{transform:rotate(-30deg)}
  75%{transform:rotate(1deg)}
  100%{transform:rotate(36deg)}
}
@keyframes bob{0%,100%{transform:translateY(0)}45%{transform:translateY(-4px)}}
@keyframes wag{0%,100%{transform:rotate(-15deg)}50%{transform:rotate(17deg)}}
@keyframes earflap{0%,100%{transform:rotate(-11deg)}50%{transform:rotate(15deg)}}
@keyframes lolly{0%,100%{transform:rotate(-7deg)}50%{transform:rotate(9deg)}}

/* a runner = one dog crossing the screen */
.runner{position:absolute; left:0; bottom:0; width:var(--w,120px); animation:dash var(--dur,15s) linear infinite; animation-delay:var(--delay,0s); will-change:transform}
.runner--rev{animation-name:dashRev}
.runner--rev .dog{transform:scaleX(-1)}
@keyframes dash{from{transform:translateX(-28vw)} to{transform:translateX(128vw)}}
@keyframes dashRev{from{transform:translateX(128vw)} to{transform:translateX(-28vw)}}

/* ambient pack — fixed behind the whole page */
.pack{position:fixed; inset:0; z-index:0; pointer-events:none; overflow:hidden; opacity:var(--ambient)}
.pack .runner{bottom:auto; top:var(--y)}
.pack .dog *{fill:var(--red) !important; stroke:var(--red) !important}

/* drifting paw prints */
.drift{position:absolute; width:var(--w,30px); color:var(--red); opacity:.5; animation:drift var(--dur,22s) linear infinite; animation-delay:var(--delay,0s)}
.drift svg{width:100%;height:auto;fill:currentColor}
@keyframes drift{
  from{transform:translate3d(-10vw,0,0) rotate(0deg)}
  to{transform:translate3d(112vw,-40px,0) rotate(300deg)}
}

/* ============================================================
   HEADER + SCROLL-PROGRESS DOG
   ============================================================ */
.site-header{
  position:sticky; top:0; z-index:60;
  background:color-mix(in srgb, var(--cream) 86%, transparent);
  -webkit-backdrop-filter:saturate(1.6) blur(14px);
  backdrop-filter:saturate(1.6) blur(14px);
  border-bottom:1px solid var(--rule);
  transition:box-shadow .25s ease;
}
.site-header.is-stuck{box-shadow:0 10px 30px -18px rgba(140,46,30,.5)}
.hdr{display:flex; align-items:center; gap:14px; min-height:90px; padding-block:10px; position:relative}

.brand{display:flex; align-items:center; gap:10px; text-decoration:none; margin-right:auto; flex:none}
/* full logo with the wordmark, like the original site. White tile because the
   logo's black Labrador and black type vanish on the dark theme's header. */
.brand-logo{
  height:74px; width:auto; flex:none; display:block;
  background:#fff; border-radius:14px; padding:5px 8px;
  box-shadow:0 4px 12px -6px rgba(90,20,14,.35);
  transition:transform .2s cubic-bezier(.34,1.56,.64,1);
}
.brand:hover .brand-logo{transform:rotate(-3deg) scale(1.05)}
.brand-sub{font-size:10px; font-weight:700; letter-spacing:.09em; text-transform:uppercase; color:var(--ink-3); width:11ch; line-height:1.3; flex:none}
/* compact tap-to-call that replaces the header CTA on phones */
.hdr-call{display:none}

.nav{display:flex; align-items:center; gap:3px; flex:none}
/* padding stays tight: seven links plus the phone number just fit the 1140 wrap */
.nav a{
  text-decoration:none; font-size:15px; font-weight:600; color:var(--ink-2);
  padding:9px 10px; border-radius:999px; white-space:nowrap;
  transition:color .15s, background-color .15s;
}
.nav a:hover{color:var(--red-ink); background:color-mix(in srgb, var(--red) 12%, transparent)}

/* Services dropdown in the desktop nav. .is-open is the only thing that shows
   it; site.js sets it from hover (a real mouse), a click or tap, and the
   keyboard, and clears it on Escape, a click elsewhere, or focus leaving. The padding-top on .nav-menu bridges the gap under the
   button so the pointer can travel down without the menu closing. */
.nav-drop{position:relative}
.nav-drop-btn{
  font:inherit; font-size:15px; font-weight:600; color:var(--ink-2); background:none; border:0; cursor:pointer;
  padding:9px 10px; border-radius:999px; white-space:nowrap; display:inline-flex; align-items:center; gap:3px;
  transition:color .15s, background-color .15s;
}
.nav-drop-btn svg{width:16px; height:16px; fill:currentColor; transition:transform .15s}
.nav-drop-btn:hover, .nav-drop-btn.is-current, .nav-drop.is-open .nav-drop-btn{color:var(--red-ink); background:color-mix(in srgb, var(--red) 12%, transparent)}
.nav-drop.is-open .nav-drop-btn svg{transform:rotate(180deg)}
.nav-menu{position:absolute; top:100%; left:0; padding-top:8px; display:none; z-index:60}
.nav-drop.is-open .nav-menu{display:block}
/* without site.js (html has no .js class) the menu still opens on hover and
   when the keyboard reaches the button; with it, .is-open is the one state */
html:not(.js) .nav-drop:hover .nav-menu, html:not(.js) .nav-drop:focus-within .nav-menu{display:block}
.nav-menu-inner{min-width:190px; display:grid; gap:2px; padding:6px; background:var(--surface); border:1px solid var(--rule); border-radius:var(--r); box-shadow:var(--shadow)}
.nav .nav-menu a{border-radius:10px; padding:10px 14px}
.nav .nav-menu a[aria-current]{color:var(--red-ink)}

/* the services, grouped under a label in the mobile panel */
.mobile-nav-label{display:block; padding:14px 4px 2px; font-size:12.5px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-2)}
.mobile-nav a.mobile-nav-sub:not(.btn){padding-left:18px}   /* the extra :not(.btn) outranks the base .mobile-nav a:not(.btn) rule */

.hdr-tel{display:inline-flex; align-items:center; gap:8px; text-decoration:none; font-family:var(--display); font-weight:800; font-size:15.5px; color:var(--ink); padding:9px 13px; border-radius:999px; white-space:nowrap; flex:none; transition:color .15s, background-color .15s}
.hdr-tel svg{width:17px;height:17px;fill:var(--red)}
.hdr-tel:hover{color:var(--red-ink); background:color-mix(in srgb, var(--red) 12%, transparent)}

.burger{display:none; width:44px;height:44px; border-radius:13px; border:2px solid var(--rule-2); background:var(--surface); cursor:pointer; align-items:center; justify-content:center}
.burger span{display:block; width:19px; height:2.5px; background:var(--ink); border-radius:2px; position:relative; transition:transform .22s ease, background-color .22s}
.burger span::before,.burger span::after{content:""; position:absolute; left:0; width:19px; height:2.5px; background:var(--ink); border-radius:2px; transition:transform .22s ease}
.burger span::before{top:-6.5px} .burger span::after{top:6.5px}
.burger[aria-expanded="true"] span{background:transparent}
.burger[aria-expanded="true"] span::before{transform:translateY(6.5px) rotate(45deg)}
.burger[aria-expanded="true"] span::after{transform:translateY(-6.5px) rotate(-45deg)}

.mobile-nav{display:none; border-top:1px solid var(--rule); padding:12px var(--pad) 20px; background:var(--cream)}
.mobile-nav[data-open]{display:block}
/* :not(.btn) keeps this from overriding display/padding on the two CTAs below */
.mobile-nav a:not(.btn){display:block; text-decoration:none; font-family:var(--display); font-weight:700; font-size:18px; padding:12px 4px; border-bottom:1px solid var(--rule); color:var(--ink)}
.mobile-nav .btn{width:100%; margin-top:14px}
.mobile-nav a:not(.btn) + .btn{margin-top:20px}

/* the progress dog */
.progress{position:absolute; left:0; right:0; bottom:-1px; height:3px; background:var(--rule)}
.progress-fill{height:100%; width:var(--p,0%); background:linear-gradient(90deg,var(--butter),var(--red)); border-radius:0 3px 3px 0}
.progress-dog{position:absolute; bottom:1px; left:var(--p,0%); width:40px; margin-left:-20px; transition:left .06s linear}
.progress-dog .dog{--gait:.36s}

/* ============================================================
   HERO
   ============================================================ */
.hero{position:relative; z-index:1; background:linear-gradient(180deg,var(--sky-1) 0%, var(--sky-2) 74%); overflow:hidden; padding-top:clamp(46px,6vw,70px)}
.hero-inner{position:relative; z-index:3; text-align:center; display:flex; flex-direction:column; align-items:center; gap:22px; padding-bottom:clamp(28px,4vw,48px)}

.sun{position:absolute; top:-46px; right:6%; width:min(230px,34vw); aspect-ratio:1; border-radius:50%; background:radial-gradient(circle at 50% 50%, var(--butter) 0 44%, color-mix(in srgb,var(--butter) 42%, transparent) 62%, transparent 72%); z-index:1; animation:sunpulse 7s ease-in-out infinite}
@keyframes sunpulse{0%,100%{transform:scale(1);opacity:.95}50%{transform:scale(1.06);opacity:1}}

.badge{
  display:inline-flex; align-items:center; gap:10px;
  background:var(--surface); border:2px solid var(--butter);
  border-radius:999px; padding:8px 18px 8px 10px;
  font-weight:700; font-size:14.5px; color:var(--ink);
  box-shadow:var(--shadow-sm);
}
.badge .bone{width:26px;height:26px;flex:none; animation:bonespin 4s ease-in-out infinite}
@keyframes bonespin{0%,100%{transform:rotate(-14deg)}50%{transform:rotate(14deg)}}

.hero h1{font-size:clamp(38px,8.4vw,86px); font-weight:900; letter-spacing:-.038em; line-height:.98}
/* each sentence owns its line at every width — never let the break land mid-phrase */
.hero h1 .ln{display:block; white-space:nowrap}
/* the second tagline is a phrase, not two words: half size, one line, and
   shrinking with the viewport on the narrowest phones rather than wrapping -
   a wrapped line would leave the squiggle spanning the whole container */
.hero h1 .ln--sub{font-size:min(.5em, 5.4vw); letter-spacing:-.025em; line-height:1.1; margin-top:.3em}
.hero h1 .ln--sub .squiggle{bottom:-.42em}
.hero h1 .pop{color:var(--red-ink); position:relative; display:inline-block}
/* sits clear of the descenders in "You enjoy it." */
.squiggle{position:absolute; left:-2%; right:-2%; bottom:-.32em; width:104%; height:.24em; overflow:visible}
.squiggle path{fill:none; stroke:var(--butter); stroke-width:10; stroke-linecap:round; stroke-dasharray:340; stroke-dashoffset:340; animation:draw 1.1s .45s cubic-bezier(.65,0,.35,1) forwards}
@keyframes draw{to{stroke-dashoffset:0}}

.hero .lede{font-size:clamp(17px,2vw,20.5px); max-width:60ch; margin-inline:auto}

.chips{display:flex; flex-wrap:wrap; justify-content:center; gap:9px; margin-top:4px}
.chip{display:inline-flex; align-items:center; gap:7px; background:color-mix(in srgb,var(--surface) 78%, transparent); border:1px solid var(--rule-2); border-radius:999px; padding:7px 15px; font-size:14px; font-weight:600; color:var(--ink-2)}
.chip svg{width:15px;height:15px;fill:var(--yard);flex:none}

/* the yard: three depth lanes of dogs on grass */
.yard{position:relative; z-index:2; height:clamp(180px,25vw,260px); margin-top:-10px}
.yard .turf{position:absolute; left:0; right:0; width:100%; display:block}
.turf--far{bottom:38%; height:22%; fill:var(--yard-pale); opacity:.75}
.turf--mid{bottom:16%; height:34%; fill:var(--yard)}
.turf--near{bottom:0; height:26%; fill:var(--yard-deep)}
.lane{position:absolute; left:0; right:0; height:0}
.lane--back{bottom:46%}
.lane--mid{bottom:24%}
.lane--front{bottom:5%}
.lane--back .runner{opacity:.55}
.lane--mid .runner{opacity:.85}

/* ============================================================
   CARDS / GRIDS
   ============================================================ */
.grid{display:grid; gap:20px}
.grid-3{grid-template-columns:repeat(3,1fr)}
.grid-4{grid-template-columns:repeat(4,1fr)}
.grid-2{grid-template-columns:repeat(2,1fr)}

.card{
  background:var(--surface); border:1px solid var(--rule);
  border-radius:var(--r-lg); padding:28px;
  box-shadow:var(--shadow-sm);
  display:flex; flex-direction:column; gap:12px;
  transition:transform .22s cubic-bezier(.34,1.56,.64,1), box-shadow .22s ease, border-color .22s ease;
}
.card:hover{transform:translateY(-5px); box-shadow:var(--shadow); border-color:var(--rule-2)}
.card p{color:var(--ink-2); font-size:16px}
.card .icon{
  width:56px;height:56px;border-radius:18px;display:grid;place-items:center;flex:none;
  background:color-mix(in srgb,var(--red) 15%, var(--surface));
  transition:transform .25s cubic-bezier(.34,1.56,.64,1);
}
.card:hover .icon{transform:rotate(-7deg) scale(1.07)}
.card .icon svg{width:30px;height:30px;fill:var(--red-ink)}
.card .card-link{margin-top:auto; padding-top:6px; font-family:var(--display); font-weight:800; font-size:15.5px; color:var(--red-ink); text-decoration:none; display:inline-flex; align-items:center; gap:7px; align-self:flex-start}
.card .card-link svg{width:16px;height:16px;fill:currentColor; transition:transform .18s ease}
.card .card-link:hover svg{transform:translateX(4px)}
/* specificity must beat `.card p` above, or the price collapses to body size */
.card p.price-tag{font-family:var(--display); font-weight:900; font-size:30px; color:var(--ink); letter-spacing:-.03em; font-variant-numeric:tabular-nums}
.card p.price-tag span{font-size:15px; font-weight:700; color:var(--ink-3); letter-spacing:0}

/* how it works */
.steps{counter-reset:s; display:grid; gap:20px; grid-template-columns:repeat(4,1fr)}
.step{position:relative; background:var(--surface); border:1px solid var(--rule); border-radius:var(--r-lg); padding:26px 24px 24px; box-shadow:var(--shadow-sm); display:flex; flex-direction:column; gap:9px}
.step::before{
  counter-increment:s; content:counter(s);
  position:absolute; top:-17px; left:24px;
  width:38px;height:38px;border-radius:50%;
  background:var(--red); color:#fff;
  font-family:var(--display); font-weight:900; font-size:18px;
  display:grid; place-items:center;
  box-shadow:0 3px 0 var(--red-dark);
  font-variant-numeric:tabular-nums;
}
.step h3{font-size:19px; margin-top:8px}
.step p{color:var(--ink-2); font-size:15.5px}

/* why scoop */
.reason{background:var(--surface); border:1px solid var(--rule); border-radius:var(--r-lg); padding:26px; box-shadow:var(--shadow-sm); display:flex; flex-direction:column; gap:11px; border-top:5px solid var(--accent,var(--red))}
.reason .rn-icon{width:48px;height:48px;border-radius:15px;display:grid;place-items:center;background:color-mix(in srgb,var(--accent,var(--red)) 16%, var(--surface))}
.reason .rn-icon svg{width:27px;height:27px;fill:var(--accent,var(--red))}
/* min-height keeps the four bodies on a shared baseline when a heading wraps */
.reason h3{font-size:19.5px; min-height:2.2em}
.reason p{color:var(--ink-2); font-size:15.5px}

/* ============================================================
   PRICING
   ============================================================ */
.tabs{display:inline-flex; gap:5px; padding:5px; background:var(--surface); border:1px solid var(--rule-2); border-radius:999px; box-shadow:var(--shadow-sm); margin-inline:auto}
.tab{
  border:0; background:transparent; cursor:pointer;
  font-family:var(--display); font-weight:800; font-size:15.5px;
  padding:11px 22px; border-radius:999px; color:var(--ink-2);
  display:inline-flex; align-items:center; gap:8px;
  transition:background-color .18s, color .18s, transform .18s;
}
.tab svg{width:18px;height:18px;fill:currentColor;opacity:.75}
.tab:hover{color:var(--red-ink)}
.tab[aria-selected="true"]{background:var(--red); color:#fff; box-shadow:0 3px 0 var(--red-dark)}
.tab[aria-selected="true"] svg{opacity:1}

.plans{display:grid; grid-template-columns:repeat(4,1fr); gap:18px; margin-top:34px; align-items:stretch}
/* display:grid above out-specifies the browser's [hidden]{display:none},
   so the attribute alone would not hide the two inactive tables. */
.plans[hidden]{display:none}
.plan{
  position:relative; background:var(--surface); border:2px solid var(--rule);
  border-radius:var(--r-lg); padding:28px 24px 24px;
  display:flex; flex-direction:column; gap:6px; text-align:center;
  box-shadow:var(--shadow-sm);
  transition:transform .22s cubic-bezier(.34,1.56,.64,1), box-shadow .22s, border-color .22s;
}
.plan:hover{transform:translateY(-5px); box-shadow:var(--shadow)}
.plan--best{border-color:var(--red); box-shadow:var(--shadow); padding-top:36px}
.plan-flag{
  position:absolute; top:-14px; left:50%; transform:translateX(-50%);
  background:var(--red); color:#fff; border-radius:999px;
  font-family:var(--display); font-weight:800; font-size:12.5px; letter-spacing:.05em; text-transform:uppercase;
  padding:6px 15px; white-space:nowrap; box-shadow:0 3px 0 var(--red-dark);
}
.plan-freq{font-family:var(--display); font-weight:800; font-size:18.5px}
.plan-price{font-family:var(--display); font-weight:900; font-size:46px; letter-spacing:-.045em; line-height:1.05; color:var(--red-ink); font-variant-numeric:tabular-nums}
.plan-price sup{font-size:23px; top:-.55em; font-weight:800}
.plan-per{font-size:13.5px; font-weight:700; letter-spacing:.09em; text-transform:uppercase; color:var(--ink-3)}
.plan-visit{font-size:13.5px; color:var(--ink-3); font-variant-numeric:tabular-nums; margin-top:2px}
.plan-note{font-size:14.5px; color:var(--ink-2); min-height:42px; margin-top:6px}
.plan .btn{margin-top:auto; width:100%}
.plan-num{transition:opacity .22s ease, transform .22s ease}
.plans.is-swapping .plan-num{opacity:0; transform:translateY(-6px)}

.pricing-extra{display:grid; grid-template-columns:repeat(2,1fr); gap:18px; margin-top:22px}
.xcard{background:color-mix(in srgb,var(--red) 8%, var(--surface)); border:1px dashed var(--rule-2); border-radius:var(--r-lg); padding:24px 26px; display:flex; gap:18px; align-items:center; flex-wrap:wrap}
.xcard .icon{width:52px;height:52px;border-radius:16px;background:var(--surface);display:grid;place-items:center;flex:none;box-shadow:var(--shadow-sm)}
.xcard .icon svg{width:28px;height:28px;fill:var(--red-ink)}
.xcard h3{font-size:18.5px}
.xcard p{color:var(--ink-2); font-size:15px; margin-top:3px}
.xcard .btn{margin-left:auto}
.fineprint{margin-top:20px; font-size:14.5px; color:var(--ink-3); text-align:center; max-width:74ch; margin-inline:auto}

/* service pages: two panels side by side, a check list, a centred answer */
.com-grid{display:grid; grid-template-columns:1fr 1fr; gap:18px; margin-top:22px}
.com-block{background:var(--surface); border:1px solid var(--rule); border-radius:var(--r-lg); padding:clamp(22px,3vw,32px); box-shadow:var(--shadow-sm)}
.com-block p{color:var(--ink-2); margin-top:12px}
.com-list{list-style:none; margin:14px 0 0; padding:0; display:grid; gap:10px}
.com-list li{display:flex; gap:10px; align-items:flex-start; color:var(--ink-2)}
.com-list svg{width:20px; height:20px; flex:none; margin-top:2px; fill:var(--red-ink)}
.com-faq{margin-top:clamp(30px,4vw,44px)}
.cost-answer{max-width:780px; margin:clamp(30px,4vw,44px) auto 0; text-align:center}
.cost-answer p{color:var(--ink-2); margin-top:10px}
@media (max-width:760px){ .com-grid{grid-template-columns:1fr} }

/* towns we serve, two columns inside each county card */
.towns{list-style:none; margin:4px 0 0; padding:0; columns:2; column-gap:18px}
.towns li{padding:4px 0; break-inside:avoid; color:var(--ink-2)}

/* local pet waste rules, /dog-poop-laws/ */
.law{max-width:920px; margin:0 auto; background:var(--surface); border:1px solid var(--rule); border-radius:var(--r-lg); padding:clamp(24px,3.4vw,38px); box-shadow:var(--shadow-sm)}
.law-list{margin:18px 0 0; display:grid; gap:0}
.law-list > div{display:grid; grid-template-columns:210px 1fr; gap:16px; padding:14px 0; border-top:1px solid var(--rule)}
.law-list dt{font-family:var(--display); font-weight:800}
.law-list dd{margin:0; color:var(--ink-2); font-size:15.5px}
.law-note{margin-top:18px; color:var(--ink-2)}
.law-fine{margin-top:14px; font-size:13.5px; color:var(--ink-3)}
.law-fine a{color:inherit}
/* a phone number broken across two lines stops reading as one */
.fineprint a[href^="tel:"], .law-note a[href^="tel:"]{white-space:nowrap}
@media (max-width:760px){ .law-list > div{grid-template-columns:1fr; gap:4px} }

/* ============================================================
   ABOUT (deep panel)
   ============================================================ */
.panel{background:var(--panel); color:var(--panel-ink); position:relative; z-index:1; overflow:hidden}
.panel .eyebrow{color:var(--butter)}
.panel .lede{color:var(--panel-ink-2)}
.panel h2,.panel h3{color:var(--panel-ink)}
.about-grid{display:grid; grid-template-columns:1.15fr .85fr; gap:clamp(30px,5vw,60px); align-items:start}
.about-copy p{color:var(--panel-ink-2); font-size:16.5px}
.about-copy p + p{margin-top:15px}
.about-copy strong{color:var(--panel-ink); font-weight:700}
/* founder portrait, right column of the About panel */
.founder{margin:0; display:flex; flex-direction:column; gap:13px}
.founder img{width:100%; height:auto; display:block; border-radius:var(--r-lg); box-shadow:var(--shadow-lg)}
.founder figcaption{font-size:14px; color:var(--panel-ink-2); line-height:1.55}

/* Max and Simon */
.namesakes{margin-top:clamp(38px,5vw,60px)}
.namesakes h3{font-size:clamp(21px,2.4vw,26px); margin-bottom:20px}
.pups{display:grid; grid-template-columns:1fr 1fr; gap:18px}
.pup{margin:0; background:color-mix(in srgb,#fff 7%, transparent); border:1px solid color-mix(in srgb,#fff 13%, transparent); border-radius:var(--r-lg); padding:20px 22px; display:flex; gap:18px; align-items:center}
.pup img{width:106px; height:106px; flex:none; border-radius:50%; object-fit:cover; border:3px solid var(--butter); box-shadow:var(--shadow)}
.pup figcaption h4{font-family:var(--display); font-weight:800; font-size:19.5px; letter-spacing:-.015em; color:var(--panel-ink)}
.pup figcaption p{color:var(--panel-ink-2); font-size:14.5px; margin-top:4px}
.pup .cert{display:inline-flex; align-items:center; gap:6px; margin-top:9px; font-size:11.5px; font-weight:700; letter-spacing:.05em; text-transform:uppercase; white-space:nowrap; color:var(--butter); background:color-mix(in srgb,var(--butter) 16%, transparent); border-radius:999px; padding:4px 11px}
.nasar-note{margin-top:18px; color:var(--panel-ink-2); font-size:14.8px; line-height:1.62}
.nasar-note strong{color:var(--panel-ink)}

/* photo cards — contained rather than full-bleed, so the source resolution
   never has to stretch and the whole frame stays visible */
.photo-band{position:relative; z-index:1; margin:0; padding:clamp(34px,4.5vw,56px) var(--pad)}
.photo-band .shot{position:relative; max-width:1020px; margin:0 auto; overflow:hidden; border-radius:var(--r-xl); box-shadow:var(--shadow-lg); line-height:0}
.photo-band img{width:100%; height:auto; display:block}
.photo-band figcaption{position:absolute; inset:auto 0 0 0; padding:54px 26px 18px; background:linear-gradient(180deg,transparent,rgba(28,14,4,.8))}
.photo-band figcaption b{font-family:var(--body); font-size:14.5px; font-weight:600; line-height:1.5; color:#fff; text-shadow:0 1px 4px rgba(0,0,0,.55)}

/* ============================================================
   WHY US
   ============================================================ */
.perks{display:grid; grid-template-columns:repeat(2,1fr); gap:18px}
.perk{display:flex; gap:17px; align-items:flex-start; background:var(--surface); border:1px solid var(--rule); border-radius:var(--r-lg); padding:24px; box-shadow:var(--shadow-sm); transition:transform .2s cubic-bezier(.34,1.56,.64,1), box-shadow .2s}
.perk:hover{transform:translateY(-4px); box-shadow:var(--shadow)}
.perk .icon{width:52px;height:52px;border-radius:16px;background:color-mix(in srgb,var(--red) 14%, var(--surface));display:grid;place-items:center;flex:none}
.perk .icon svg{width:28px;height:28px;fill:var(--red-ink)}
.perk h3{font-size:18.5px}
.perk p{color:var(--ink-2); font-size:15.5px; margin-top:5px}

/* ============================================================
   REFER
   ============================================================ */
/* ============================================================
   WHERE WE COME IN  (Max's K9 Club)
   ============================================================ */
.k9-quote{
  margin:clamp(30px,4vw,46px) 0 0; background:linear-gradient(140deg,#B01C14,#981818);
  color:#fff; border-radius:var(--r-xl); padding:clamp(30px,4.4vw,52px);
  box-shadow:var(--shadow-lg);
}
.k9-quote p{font-size:clamp(19px,2.2vw,25px); line-height:1.5; font-weight:600; letter-spacing:-.012em; max-width:44ch}
.k9-quote em{font-style:italic; color:var(--butter)}
.k9-cta{display:flex; flex-wrap:wrap; align-items:center; gap:22px; margin-top:26px}
/* text colour must come from --cream, not a literal: --ink flips with the theme,
   so a hard-coded #fff would sit on a near-white button in dark mode */
.btn--ink{background:var(--ink); color:var(--cream); box-shadow:var(--shadow-sm)}
.btn--ink:hover{background:var(--ink-2); color:var(--cream); transform:translateY(-2px); box-shadow:var(--shadow)}
.k9-link{
  display:inline-flex; align-items:center; gap:8px; text-decoration:none;
  font-family:var(--display); font-weight:800; font-size:16.5px; color:var(--red-ink);
}
.k9-link svg{width:19px;height:19px;fill:currentColor; transition:transform .18s ease}
.k9-link:hover svg{transform:translateX(5px)}

/* ============================================================
   FRIENDS & PARTNERS
   ============================================================ */
/* The plate is a literal white in both themes, on purpose: these are other
   companies' logos, drawn for a white page, and Kennelwood's wordmark is black.
   On --surface it would vanish in the dark theme. */
.partner-logo{display:block; height:132px; padding:16px 22px; background:#fff; border:1px solid var(--rule); border-radius:var(--r); margin-bottom:6px}
/* width and height both 100%, with contain doing the fitting: a max-height in
   percent resolves against nothing here and the logo spills out of the plate */
.partner-logo img{display:block; width:100%; height:100%; object-fit:contain}

/* promotional banner */
.banner{margin:0; padding:0 var(--pad) clamp(20px,3vw,34px)}
.banner img{display:block; width:100%; max-width:1020px; margin-inline:auto; height:auto; border-radius:var(--r-lg); box-shadow:var(--shadow); border:1px solid var(--rule)}

/* full red band — the single loudest use of the brand colour on the page */
.refer{background:linear-gradient(150deg,#B01C14 0%, #981818 55%, #7C1210 100%); position:relative; z-index:1; overflow:hidden; color:#FFF1EB}
.refer .eyebrow{color:var(--butter)}
.refer h2{color:#fff}
.refer-grid{display:grid; grid-template-columns:.9fr 1.1fr; gap:clamp(28px,5vw,56px); align-items:center}
.refer p{color:#FBD8CF; font-size:16.5px}
/* these two must out-specify `.refer p` above */
.refer .refer-amount{font-family:var(--display); font-weight:900; font-size:clamp(40px,5.2vw,62px); letter-spacing:-.04em; line-height:1.02; color:#fff; text-shadow:0 4px 0 rgba(70,8,8,.4); margin-top:14px; white-space:nowrap}
.rsteps{display:grid; gap:13px}
.rstep{background:#FFF7F4; border-radius:var(--r); padding:17px 20px; display:flex; gap:15px; align-items:flex-start; box-shadow:0 10px 24px -16px rgba(60,6,6,.7)}
.rstep b{display:grid;place-items:center; width:31px;height:31px;border-radius:50%; background:#981818; color:#fff; font-family:var(--display); font-size:15px; flex:none; font-variant-numeric:tabular-nums}
.rstep h3{font-size:16.5px; color:#331411}
.rstep p{font-size:14.8px; color:#6E433A; margin-top:2px}
.refer p.refer-terms{margin-top:18px; font-size:13.8px; color:#F0B8AC; line-height:1.55}

/* ============================================================
   FAQ
   ============================================================ */
.faq{display:grid; gap:11px; max-width:900px; margin-inline:auto}
.qa{background:var(--surface); border:1px solid var(--rule); border-radius:var(--r); overflow:hidden; transition:border-color .2s, box-shadow .2s}
.qa[open]{border-color:var(--red); box-shadow:var(--shadow-sm)}
.qa summary{
  list-style:none; cursor:pointer; padding:19px 22px; display:flex; gap:15px; align-items:center;
  font-family:var(--display); font-weight:800; font-size:17.5px; letter-spacing:-.012em;
}
.qa summary::-webkit-details-marker{display:none}
.qa summary::after{
  content:""; margin-left:auto; flex:none; width:13px;height:13px;
  border-right:2.5px solid var(--red); border-bottom:2.5px solid var(--red);
  transform:rotate(45deg) translateY(-3px); transition:transform .22s ease;
}
.qa[open] summary::after{transform:rotate(-135deg) translateY(-3px)}
.qa summary .paw{width:19px;height:19px;fill:var(--red);flex:none; transition:transform .22s ease}
.qa[open] summary .paw{transform:rotate(-16deg) scale(1.12)}
.qa .ans{padding:0 22px 21px 56px; color:var(--ink-2); font-size:16px}

/* ============================================================
   QUOTE + CONTACT
   ============================================================ */
.quote-grid{display:grid; grid-template-columns:1.25fr .75fr; gap:24px; align-items:start}
/* Jobber ships its own light-themed stylesheet for the embed, so this card stays
   white in both themes — on our dark ground it would render dark text on dark. */
.form-embed{
  background:#fff; color:#331411;
  border:1px solid var(--rule); border-radius:var(--r-xl);
  padding:clamp(20px,3vw,32px); box-shadow:var(--shadow);
  min-height:420px;
}
.form-embed iframe{width:100%; border:0; display:block}
.embed-note{margin-top:18px; padding-top:16px; border-top:1px solid #F0DCD4; font-size:14.5px; color:#6E433A}
.embed-note a{color:#A81C14; font-weight:700}
.embed-fallback{padding:22px 0 4px; display:flex; flex-direction:column; align-items:flex-start; gap:14px}
/* display:flex above out-specifies the browser's [hidden]{display:none}, so the
   attribute alone would not hide it */
.embed-fallback[hidden]{display:none}
.embed-fallback p{font-size:15.5px; color:#6E433A; max-width:44ch}

.contact-card{background:var(--surface); border:1px solid var(--rule); border-radius:var(--r-xl); padding:clamp(24px,3vw,32px); box-shadow:var(--shadow-sm); display:flex; flex-direction:column; gap:6px}
.cinfo{display:flex; gap:15px; align-items:flex-start; padding:15px 0; border-bottom:1px solid var(--rule)}
.cinfo:last-of-type{border-bottom:0}
.cinfo .icon{width:44px;height:44px;border-radius:14px;background:color-mix(in srgb,var(--red) 14%, var(--surface));display:grid;place-items:center;flex:none}
.cinfo .icon svg{width:23px;height:23px;fill:var(--red-ink)}
.cinfo .k{font-size:12px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-3)}
.cinfo .v{font-family:var(--display); font-weight:800; font-size:17px; margin-top:2px; text-decoration:none; color:var(--ink); display:block; word-break:break-word}
a.v:hover{color:var(--red-ink)}
.cinfo .v small{display:block; font-family:var(--body); font-weight:500; font-size:14px; color:var(--ink-2); letter-spacing:0; margin-top:3px}

/* ============================================================
   FOOTER
   ============================================================ */
.site-footer{background:var(--panel); color:var(--panel-ink); position:relative; z-index:1; padding-block:clamp(48px,6vw,68px) 30px; overflow:hidden}
/* four equal columns so the gutters between them are all the same width */
.foot-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:34px}
/* white tile so the black Labrador in the logo reads against the dark footer */
.foot-logo{display:inline-block; line-height:0; background:#fff; border-radius:20px; padding:16px 18px; box-shadow:0 10px 26px -12px rgba(0,0,0,.55)}
.foot-logo img{width:150px; height:auto; display:block}
.foot-sub{font-size:10.5px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:var(--panel-ink-2); margin-top:12px}
.foot-blurb{color:var(--panel-ink-2); font-size:15px; margin-top:11px}
.foot-h{font-family:var(--display); font-weight:800; font-size:14px; letter-spacing:.11em; text-transform:uppercase; color:var(--butter); margin-bottom:14px; min-height:1.5em}
/* colour lives on the li so plain items (the hours) match the links */
.site-footer li{margin-bottom:9px; color:var(--panel-ink-2); font-size:15.5px; line-height:1.5}
.site-footer li a{color:inherit; text-decoration:none; transition:color .15s}
.site-footer li a:hover{color:var(--butter)}
.foot-bottom{margin-top:40px; padding-top:22px; border-top:1px solid color-mix(in srgb,#fff 13%, transparent); display:flex; justify-content:space-between; gap:16px; flex-wrap:wrap; font-size:14px; color:var(--panel-ink-2)}
.foot-bottom a{color:var(--panel-ink-2); text-decoration:none}
.foot-bottom a:hover{color:var(--butter)}
.foot-lane{position:absolute; left:0; right:0; bottom:4px; height:0; opacity:.11; pointer-events:none}

/* ============================================================
   REVEAL ON SCROLL
   ============================================================ */
.rv{opacity:0; transform:translateY(22px); transition:opacity .6s cubic-bezier(.22,1,.36,1), transform .6s cubic-bezier(.22,1,.36,1)}
.rv.in{opacity:1; transform:none}
.rv:target{opacity:1; transform:none}

/* Heading above each price table. Only visible with JS off — once the tabs
   work, the selected tab is the label, so site.js hides these. */
.plans-heading{
  font-size:clamp(20px,2.4vw,25px); text-align:center;
  margin-top:34px; color:var(--ink);
}

/* Max's K9 Club section */
.k9-head{display:flex; gap:clamp(22px,4vw,44px); align-items:center; flex-wrap:wrap}
.k9-logo{width:clamp(120px,15vw,190px); height:auto; flex:none}
.k9-head .head{flex:1 1 420px; margin-bottom:0}

/* ============================================================
   LEGAL PAGES  (/privacy-policy/, /terms/)
   These stay as real pages rather than anchors on the home page.
   ============================================================ */
.legal{max-width:74ch; margin-inline:auto; padding-block:clamp(46px,6vw,76px)}
.legal h1{font-size:clamp(33px,5vw,46px); margin-bottom:10px}
.legal .updated{color:var(--ink-3); font-size:14.5px; margin-bottom:clamp(28px,4vw,44px)}
.legal h2{font-size:clamp(19px,2.2vw,23px); margin-top:34px; margin-bottom:10px}
.legal p{color:var(--ink-2); font-size:16.5px; line-height:1.7}
.legal p + p{margin-top:13px}
.legal a{color:var(--red-ink); font-weight:600}
.legal ul{margin:12px 0 0; padding-left:22px; list-style:disc}
.legal li{color:var(--ink-2); font-size:16.5px; line-height:1.7; margin-bottom:7px}

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width:1240px){
  .hdr-tel{display:none}
}
@media (max-width:1000px){
  .grid-4,.steps,.plans{grid-template-columns:repeat(2,1fr)}
  .about-grid,.refer-grid,.quote-grid{grid-template-columns:1fr}
  .founder{max-width:430px; margin-inline:auto}
  .foot-grid{grid-template-columns:1fr 1fr; gap:30px}
  .nav,.hdr-tel{display:none}
  .burger{display:flex}
}
@media (max-width:760px){
  body{font-size:16.5px}
  .grid-3,.grid-2,.perks,.pricing-extra,.pups{grid-template-columns:1fr}
  .k9-head{flex-direction:column; align-items:flex-start; gap:20px}
  .plans{gap:26px; margin-top:40px}
  .plan--best{order:-1}
    .hero h1{max-width:none}
  .xcard{flex-direction:column; align-items:flex-start}
  .xcard .btn{margin-left:0; width:100%}
  .foot-grid{grid-template-columns:1fr}
  .tabs{width:100%; justify-content:center}
  .tab{padding:11px 14px; font-size:14.5px}
}
@media (max-width:560px){
  /* four cards two-across leave ~95px each on a phone: long words overflow */
  .grid-4{grid-template-columns:1fr}
  /* four tabs do not fit a phone at their desktop size: the row is ~440px and
     a 390px screen has 358. Drop the paw, share the width equally. */
  .tab{flex:1 1 0; justify-content:center; padding:11px 4px; font-size:14px; white-space:nowrap}
  .tab svg{display:none}
  .plans{grid-template-columns:1fr}
  .brand-sub{display:none}
  .brand-logo{height:52px}   /* keep the logo's sizes="(max-width:560px) 48px" in step */
  /* stack the photo above the text so the NASAR pill has room */
  .pup{flex-direction:column; align-items:flex-start; gap:14px}
  /* on a phone, tapping to call beats a scroll-to-form button */
  .hdr .btn--cta{display:none}
  .hdr-call{display:inline-flex}
  .hdr{gap:12px}
}

@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important}
  .rv{opacity:1; transform:none}
  .squiggle path{stroke-dashoffset:0}
  .pack{opacity:calc(var(--ambient) * .7)}
}


/* ============================================================
   PRICE GUARANTEE
   The short version rides in a band under the hero on the home
   page; the full terms sit at the foot of the pricing page.
   ============================================================ */
.gbar{background:var(--butter); border-top:1px solid var(--butter-deep); border-bottom:1px solid var(--butter-deep)}
.gbar-inner{display:flex; align-items:center; justify-content:center; gap:12px 24px; flex-wrap:wrap; padding:16px var(--pad)}
.gbar-h{font-family:var(--display); font-weight:800; letter-spacing:-.02em; color:var(--ink); font-size:clamp(17px,2.2vw,21px)}
.gbar-p{color:#6B4A16; font-size:15px; max-width:54ch}
@media(max-width:720px){ .gbar-inner{flex-direction:column; text-align:center} }

.guarantee{margin-top:clamp(36px,5vw,58px); padding-top:clamp(28px,4vw,42px); border-top:1px solid var(--rule)}
/* Leading the section instead of closing it: the rule above belonged to a block
   that followed the plans, and here it would cut the section heading off from
   its own content. The rule moves to the underside. */
.guarantee--lead{margin-top:0; padding-top:0; border-top:0;
  padding-bottom:clamp(30px,4vw,44px); margin-bottom:clamp(30px,4vw,44px);
  border-bottom:1px solid var(--rule)}
.guarantee .rsteps{margin-top:26px}
.gnote{text-align:center; color:var(--ink-2); font-size:15.5px; margin-top:20px}
.quals{margin-top:28px}
.qual h3{margin-bottom:4px}
.qual ul{margin:0; padding:0; list-style:none; display:grid; gap:11px}
.qual li{position:relative; padding-left:30px; font-size:15px; line-height:1.55; color:var(--ink-2)}
.qual li::before{position:absolute; left:2px; top:-1px; font-size:17px; font-weight:800}
.qual--yes li::before{content:"\2713"; color:var(--red)}
.qual--no li::before{content:"\2715"; color:var(--ink-3)}
.gcta{text-align:center; margin-top:32px}
.gcta .btn-row{justify-content:center; margin-top:16px}
@media(max-width:760px){ .quals{grid-template-columns:1fr} }
