/* ============================================================
   PetSquad design system — brand tokens 1:1 from petsquad-nova.
   Mobile-first. Framework-free. Component styles ported from the
   approved v0.1 concept.
   ============================================================ */

:root {
  --brand:#5cd615; --brand-deep:#3f9c0e;
  --ink:#1E2A39; --ink-2:#5c6b7a;
  --paper:#ffffff; --paper-2:#f4f8f0; --paper-3:#eef4e8; --line:#e6ede1;
  --secondary:#95b6bc;

  --s-grooming:#e0b800; --s-bath:#00a6d6; --s-boarding:#02b3b8;
  --s-daycare:#e95601;  --s-dropin:#5bbd2a; --s-walking:#8a4dff;
  --s-house:#ff48a4;    --s-transport:#1f9077; --s-poop:#7a5038;

  --wrap:1180px; --content:760px; --radius:22px;
  --font-head:"Poppins", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  --font-body:"Nunito Sans", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  --shadow:0 18px 40px -24px rgba(30,42,57,.4);
}

*, *::before, *::after { box-sizing: border-box; }
body { margin:0; font-family:var(--font-body); color:var(--ink); background:var(--paper); line-height:1.55; -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility; }
h1,h2,h3,h4 { font-family:var(--font-head); letter-spacing:-.02em; line-height:1.1; color:var(--ink); text-wrap:balance; margin:0 0 .4em; }
a { color:var(--brand-deep); }
img, svg { max-width:100%; height:auto; }
:focus-visible { outline:3px solid var(--brand); outline-offset:2px; }

.wrap { max-width:var(--wrap); margin-inline:auto; padding-inline:clamp(16px,4vw,32px); }
.section { padding-block:clamp(32px,6vw,64px); }
.section-head { display:flex; align-items:baseline; justify-content:space-between; gap:12px; margin-bottom:20px; }
.section-head h2 { font-size:clamp(22px,4vw,30px); margin:0; }
.section-head a { font-size:14px; font-weight:700; text-decoration:none; }
.kicker { display:inline-block; font-family:var(--font-head); font-size:12px; font-weight:700; letter-spacing:.13em; text-transform:uppercase; color:var(--brand-deep); margin-bottom:8px; }
.muted { color:var(--ink-2); }
.stars { color:#f5b301; letter-spacing:1px; }

/* ---- buttons ---- */
.button, .wp-block-button__link {
  display:inline-flex; align-items:center; justify-content:center; gap:.5em;
  font-family:var(--font-head); font-weight:700; font-size:1rem; line-height:1;
  background:var(--brand); color:#0d2b06; border:0; border-radius:var(--radius);
  padding:.85em 1.5em; text-decoration:none; cursor:pointer; transition:background .16s,color .16s,transform .16s;
  box-shadow:0 10px 22px -12px color-mix(in srgb,var(--brand) 80%,transparent);
}
.button:hover { background:var(--brand-deep); color:#fff; }
.button--ghost { background:transparent; color:var(--ink); border:1.5px solid var(--line); box-shadow:none; }
.button--ghost:hover { border-color:var(--ink); background:transparent; color:var(--ink); }
.button--dark { background:var(--ink); color:#fff; box-shadow:none; }
.button--block { width:100%; }
.button--lg { font-size:1.05rem; padding:1em 1.6em; }

/* ---- header ---- */
.site-header { position:sticky; top:0; z-index:50; background:color-mix(in srgb,var(--paper) 90%,transparent); backdrop-filter:blur(10px); border-bottom:1px solid var(--line); }
.site-header .inner { display:flex; align-items:center; gap:14px; min-height:64px; position:relative; }
.brand { display:inline-flex; align-items:center; text-decoration:none; }
.brand-logo { height:42px; width:auto; display:block; }

.nav-check { position:absolute; opacity:0; pointer-events:none; }
.nav-toggle { margin-left:auto; font-size:20px; line-height:1; background:none; border:1px solid var(--line); border-radius:12px; padding:7px 11px; cursor:pointer; color:var(--ink); }
.site-nav { display:none; }
.nav-check:checked ~ .site-nav { display:block; position:absolute; left:0; right:0; top:100%; background:var(--paper); border-bottom:1px solid var(--line); padding:8px 0; box-shadow:0 12px 24px -16px rgba(0,0,0,.3); }
.site-nav ul { list-style:none; display:flex; flex-direction:column; gap:0; margin:0; padding:0; }
.site-nav a { display:block; padding:12px 24px; font-family:var(--font-head); font-weight:600; font-size:15px; color:var(--ink); text-decoration:none; }
.site-nav a:hover { color:var(--brand-deep); }

.header-actions { display:flex; align-items:center; gap:10px; }
.header-phone { display:none; font-weight:800; color:var(--ink); text-decoration:none; }

@media (min-width:900px){
  .nav-toggle { display:none; }
  .site-nav { display:block !important; position:static; margin-left:auto; border:0; padding:0; box-shadow:none; }
  .site-nav ul { flex-direction:row; gap:22px; }
  .site-nav a { padding:0; }
  .header-phone { display:inline-flex; align-items:center; gap:6px; }
}

/* ---- hero ---- */
.hero { position:relative; overflow:hidden; background:var(--paper); }
.hero .inner { display:grid; gap:28px; padding-block:clamp(28px,6vw,56px); align-items:center; }
.hero h1 { font-size:clamp(30px,7vw,52px); line-height:1.03; margin:10px 0 12px; }
.hero h1 .hl { color:var(--brand-deep); position:relative; white-space:nowrap; }
.hero h1 .hl::after { content:""; position:absolute; left:0; right:0; bottom:.06em; height:.28em; background:var(--brand); opacity:.28; border-radius:6px; z-index:-1; }
.hero .sub { font-size:clamp(16px,2.6vw,19px); color:var(--ink-2); max-width:34ch; margin:0 0 20px; }
.trust { display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin-bottom:8px; }
.avstack { display:flex; }
.avstack span { width:30px; height:30px; border-radius:50%; border:2px solid var(--paper); margin-left:-9px; display:grid; place-items:center; font-size:12px; font-weight:800; color:#fff; }
.avstack span:first-child { margin-left:0; }
@media (min-width:900px){ .hero .inner{ grid-template-columns:1.05fr .95fr; gap:44px; } }

/* ---- booking card ---- */
.book-card { background:var(--paper); border:1px solid var(--line); border-radius:24px; padding:18px; box-shadow:var(--shadow); position:relative; min-width:0; max-width:100%; }
/* grid/flex children default to min-width:auto and can be forced wider than their track — clamp them so the booking card never blows out the page */
.hero .inner > *, .loc-hero .inner > *, .svc-hero .inner > * { min-width:0; }
.book-card__live { position:absolute; top:16px; right:16px; display:inline-flex; align-items:center; gap:6px; font-size:11px; font-weight:800; letter-spacing:.05em; text-transform:uppercase; color:var(--brand-deep); }
.book-card__live i { width:7px; height:7px; border-radius:50%; background:var(--brand); box-shadow:0 0 0 0 var(--brand); animation:ping 1.8s infinite; }
@keyframes ping { 0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--brand) 70%,transparent)} 70%{box-shadow:0 0 0 8px transparent} 100%{box-shadow:0 0 0 0 transparent} }
.book-card h3 { margin:0 0 3px; font-size:16px; }
.book-card .next { font-size:24px; font-weight:700; font-family:var(--font-head); margin:4px 0 14px; }
.book-variant { width:100%; margin:2px 0 14px; padding:11px 13px; border:1.5px solid var(--line); border-radius:14px; font:inherit; font-size:15px; font-weight:600; color:var(--ink); background:var(--paper); cursor:pointer; }
.book-variant:focus { border-color:var(--brand); outline:0; }
.book-card .next b { color:var(--brand-deep); }
.slots { display:flex; gap:8px; overflow-x:auto; padding-bottom:6px; margin:0 -2px 14px; scrollbar-width:none; }
.slots::-webkit-scrollbar { display:none; }
.slot { flex:0 0 auto; border:1.5px solid var(--line); background:var(--paper); border-radius:14px; padding:9px 13px; text-align:center; cursor:pointer; min-width:76px; font-family:inherit; }
.slot .d { display:block; font-size:11px; font-weight:700; color:var(--ink-2); }
.slot .t { display:block; font-size:15px; font-weight:800; color:var(--ink); font-family:var(--font-head); }
.slot[aria-pressed="true"] { background:var(--ink); border-color:var(--ink); }
.slot[aria-pressed="true"] .t, .slot[aria-pressed="true"] .ap { color:#fff; }
.slots.is-collapsed .slot:not([aria-pressed="true"]) { display:none; }
.daytabs, .slots { transition:opacity .15s ease, transform .15s ease; }
.daytabs.is-swapping, .slots.is-swapping { opacity:0; transform:translateY(-5px); }
.slot .ap { display:block; font-size:9px; font-weight:700; color:var(--ink-2); letter-spacing:.04em; }
/* day selector + wrapping time grid (fixed width — not a wide row of every slot) */
.daytabs { display:flex; gap:8px; overflow-x:auto; margin:0 -2px 12px; padding-bottom:4px; scrollbar-width:none; }
.daytabs:empty { display:none; }
.daytabs::-webkit-scrollbar { display:none; }
.daytab { flex:0 0 auto; border:1.5px solid var(--line); background:var(--paper); border-radius:12px; padding:6px 13px; text-align:center; cursor:pointer; font-family:inherit; line-height:1.15; }
.daytab .dw { display:block; font-size:10.5px; font-weight:700; color:var(--ink-2); text-transform:uppercase; letter-spacing:.03em; }
.daytab .dd { display:block; font-size:15px; font-weight:800; color:var(--ink); font-family:var(--font-head); }
.daytab[aria-pressed="true"] { background:var(--ink); border-color:var(--ink); }
.daytab[aria-pressed="true"] .dw, .daytab[aria-pressed="true"] .dd { color:#fff; }
.slots--grid { flex-wrap:wrap; overflow-x:visible; max-height:148px; overflow-y:auto; scrollbar-width:thin; }
.slots--grid .slot { min-width:70px; flex:0 0 auto; }
.book-field-label { display:block; font-size:11px; font-weight:800; text-transform:uppercase; letter-spacing:.04em; color:var(--ink-2); margin:6px 0 4px; }
.book-step { margin-bottom:14px; }
.book-step__head { display:flex; align-items:center; gap:8px; font-family:var(--font-head); font-weight:800; font-size:13px; color:var(--ink); margin:0 0 10px; }
.book-step__n { display:inline-grid; place-items:center; width:20px; height:20px; border-radius:50%; background:var(--ink); color:#fff; font-size:11px; flex:0 0 auto; }
.book-laterday { margin-left:auto; font:inherit; font-weight:600; font-size:12px; color:var(--ink-2); border:1.5px solid var(--line); border-radius:10px; padding:5px 8px; background:var(--paper); cursor:pointer; max-width:150px; }
.book-laterday:focus { border-color:var(--brand); outline:0; }
.slots-empty { font-size:13px; color:var(--ink-2); margin:4px 2px; width:100%; }
.book-modelink { display:block; width:100%; text-align:center; background:none; border:0; font:inherit; font-weight:700; font-size:12.5px; color:var(--brand-deep); cursor:pointer; margin-top:10px; padding:2px; }
.book-modelink:hover { text-decoration:underline; }
.book-backdate { display:none; }
.book-card.is-nextavail .book-nextavail, .book-card.is-nextavail [data-ps-date] { display:none; }
.book-card.is-nextavail .book-backdate { display:block; }
.fields { display:flex; flex-direction:column; gap:8px; margin-bottom:12px; }
.field { display:flex; align-items:center; gap:10px; border:1.5px solid var(--line); border-radius:14px; padding:12px 13px; background:var(--paper); transition:.15s; }
.field:focus-within { border-color:var(--brand); background:var(--paper); }
.field input { border:0; background:transparent; font:inherit; font-size:15px; color:var(--ink); width:100%; outline:0; }
.field input::placeholder { color:var(--ink-2); opacity:.7; }
.formnote { font-size:12px; color:var(--ink-2); text-align:center; margin:10px 2px 0; line-height:1.45; }
.book-result { margin:10px 0 0; padding:11px 13px; border-radius:12px; font-size:13px; font-weight:700; line-height:1.4; }
.book-result--ok { background:color-mix(in srgb,var(--brand) 14%,var(--paper)); color:var(--brand-deep); border:1px solid color-mix(in srgb,var(--brand) 40%,transparent); }
.book-result--err { background:#fff2f0; color:#b3261e; border:1px solid #f3c2bd; }
.book-callfallback { display:block; text-align:center; margin-top:8px; font-size:12.5px; font-weight:700; color:var(--ink-2); text-decoration:none; }
.book-card[data-ps-live] .preview-flag { display:none; }
.preview-flag { display:inline-block; font-size:10.5px; font-weight:800; letter-spacing:.04em; text-transform:uppercase; color:var(--ink-2); background:var(--paper-3); border-radius:6px; padding:3px 7px; margin-top:8px; }

/* ---- service cards ---- */
.svc-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
@media (min-width:700px){ .svc-grid{ grid-template-columns:repeat(3,1fr); } }
.svc { --c:var(--brand); position:relative; border:1px solid var(--line); border-radius:18px; background:var(--paper); text-decoration:none; display:block; overflow:hidden; transition:transform .18s, box-shadow .18s; }
.svc:hover { transform:translateY(-3px); box-shadow:0 18px 34px -20px color-mix(in srgb,var(--c) 60%,transparent); }
.svc-media { position:relative; display:block; aspect-ratio:16/10; background:color-mix(in srgb,var(--c) 15%,var(--paper)); overflow:hidden; }
.svc-media img { width:100%; height:100%; object-fit:cover; display:block; transition:transform .35s ease; }
.svc:hover .svc-media img { transform:scale(1.05); }
.svc-body { display:block; padding:20px 18px 18px; }
.svc:hover { transform:translateY(-3px); border-color:color-mix(in srgb,var(--c) 55%,var(--line)); box-shadow:0 16px 30px -20px color-mix(in srgb,var(--c) 80%,transparent); }
.svc .ic { position:absolute; left:14px; bottom:14px; width:44px; height:44px; border-radius:13px; display:grid; place-items:center; margin:0; background:var(--paper); color:var(--c); font-size:22px; box-shadow:0 8px 18px -6px rgba(0,0,0,.45); }
.svc h3 { margin:0 0 4px; font-size:18px; }
.svc p { margin:0; font-size:13px; color:var(--ink-2); line-height:1.4; }
.svc .from { margin-top:12px; font-size:13px; font-weight:800; color:var(--c); font-family:var(--font-head); }
.svc .key-badge { position:absolute; top:14px; right:14px; font-size:10px; font-weight:800; letter-spacing:.05em; text-transform:uppercase; color:var(--brand-deep); background:var(--paper); border-radius:20px; padding:4px 9px; box-shadow:0 4px 12px -4px rgba(0,0,0,.35); }

/* ---- meet-the-squad band ---- */
.squad-band { display:grid; grid-template-columns:1fr; border:1px solid var(--line); border-radius:24px; overflow:hidden; background:var(--paper); }
@media (min-width:820px){ .squad-band{ grid-template-columns:1.15fr .85fr; } }
.squad-band-photo { min-height:260px; background-size:cover; background-position:center 28%; }
@media (min-width:820px){ .squad-band-photo{ min-height:380px; } }
.squad-band-copy { padding:clamp(24px,4vw,44px); display:flex; flex-direction:column; justify-content:center; align-items:flex-start; }
.squad-band-copy .kicker { margin-bottom:12px; }
.squad-band-copy h2 { font-size:clamp(23px,3.4vw,32px); margin:0 0 10px; }
.squad-band-copy p { margin:0 0 20px; color:var(--ink-2); font-size:15px; line-height:1.6; max-width:44ch; }

/* ---- reviews ---- */
.band { background:var(--paper); }
.reviews { column-count:1; column-gap:12px; }
@media (min-width:600px){ .reviews{ column-count:2; } }
@media (min-width:960px){ .reviews{ column-count:3; } }
.reviews.is-collapsed .review:nth-child(n+10) { display:none; }
.reviews-more { text-align:center; margin-top:16px; }
.review { break-inside:avoid; margin:0 0 12px; background:var(--paper); border:1px solid var(--line); border-radius:16px; padding:16px; }
.review .top { display:flex; align-items:center; gap:10px; margin-bottom:8px; }
.review .av { width:36px; height:36px; border-radius:50%; display:grid; place-items:center; font-weight:800; color:#0d2b06; background:var(--brand); }
.review .who { font-weight:800; font-size:14px; font-family:var(--font-head); color:var(--ink); }
.review .when { font-size:11px; color:var(--ink-2); }
.review p { margin:0; font-size:14px; color:var(--ink-2); line-height:1.5; }
.review .tag { display:inline-block; margin-top:10px; font-size:11px; font-weight:700; color:var(--brand-deep); background:color-mix(in srgb,var(--brand) 12%,transparent); padding:3px 10px; border-radius:20px; }

/* ---- locations grid on home ---- */
.loc-cards { display:grid; gap:14px; }
@media (min-width:700px){ .loc-cards{ grid-template-columns:1fr 1fr; } }
.loc-card { border:1px solid var(--line); border-radius:20px; padding:20px; background:var(--paper); }
.loc-card h3 { font-size:20px; margin:0 0 4px; }
.loc-card .addr { font-size:14px; color:var(--ink-2); margin:0 0 14px; }
.loc-card.has-photo { padding:0; overflow:hidden; }
.loc-card.has-photo .loc-card-body { padding:20px; }
.loc-card-media { aspect-ratio:16/9; background:var(--paper-3); }
.loc-card-media img { width:100%; height:100%; object-fit:cover; display:block; }

/* ---- location page ---- */
.loc-hero .inner { display:grid; gap:24px; padding-block:clamp(24px,5vw,44px); }
@media (min-width:900px){ .loc-hero .inner{ grid-template-columns:1fr .9fr; } }
.nap-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-top:16px; }
.napcard { border:1px solid var(--line); border-radius:16px; padding:14px; background:var(--paper); }
.napcard .lab { font-size:11px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; color:var(--ink-2); margin-bottom:6px; }
.napcard .val { font-size:15px; font-weight:700; line-height:1.35; }
.napcard .val a { color:var(--brand-deep); text-decoration:none; }
.hours { list-style:none; margin:0; padding:0; }
.hours li { display:flex; justify-content:space-between; font-size:14px; padding:7px 0; border-bottom:1px dashed var(--line); }
.hours li:last-child { border-bottom:0; }
.hours li.today { font-weight:800; color:var(--brand-deep); }
.locmap { height:180px; border-radius:18px; border:1px solid var(--line); overflow:hidden; position:relative; background:linear-gradient(120deg,#dcebd2,#e9f2e2); }
.locmap .roads { position:absolute; inset:0; background:repeating-linear-gradient(60deg,transparent 0 26px,rgba(255,255,255,.6) 26px 30px),repeating-linear-gradient(-25deg,transparent 0 40px,rgba(255,255,255,.5) 40px 43px); }
.locmap .pin { position:absolute; top:50%; left:50%; transform:translate(-50%,-100%); width:32px; height:32px; border-radius:50% 50% 50% 0; background:var(--brand); rotate:-45deg; box-shadow:0 6px 12px -4px rgba(0,0,0,.4); display:grid; place-items:center; }
.locmap .pin::after { content:""; width:12px; height:12px; background:#fff; border-radius:50%; rotate:45deg; }
.locmap-tiles { position:absolute; inset:0; z-index:1; }
.locmap .leaflet-container { background:linear-gradient(120deg,#dcebd2,#e9f2e2); font:inherit; }
.locmap .leaflet-control-attribution { font-size:9px; background:rgba(255,255,255,.72); }
.locmap .pin { z-index:600; pointer-events:none; }
.locmap-dir { position:absolute; z-index:600; top:12px; right:12px; background:var(--paper); color:var(--ink); font-family:var(--font-head); font-weight:700; font-size:12px; text-decoration:none; padding:7px 12px; border-radius:20px; box-shadow:0 6px 16px -6px rgba(0,0,0,.4); }
.locmap-dir:hover { color:var(--brand-deep); }
.loc-info { display:grid; gap:20px; margin-top:24px; align-items:start; }
@media (min-width:760px){ .loc-info{ grid-template-columns:1fr 1fr; } }
.loc-hours h2 { font-size:22px; margin:0 0 10px; }
.loc-review { border:1.5px solid var(--line); border-radius:20px; padding:24px; background:var(--paper); }
.loc-review .stars { color:#f5a623; font-size:18px; letter-spacing:3px; }
.loc-review h3 { font-family:var(--font-head); font-size:20px; margin:10px 0 6px; }
.loc-review p { color:var(--ink-2); font-size:14px; line-height:1.55; margin:0 0 18px; }
.staff { display:grid; gap:12px; }
@media (min-width:600px){ .staff{ grid-template-columns:1fr 1fr; } }
.staff-card { display:flex; gap:14px; align-items:center; background:var(--paper); border:1px solid var(--line); border-radius:18px; padding:16px; }
.staff-card .ph { width:60px; height:60px; border-radius:50%; flex:0 0 auto; background:linear-gradient(135deg,var(--s-grooming),var(--brand)); display:grid; place-items:center; font-family:var(--font-head); font-weight:800; color:#fff; font-size:22px; overflow:hidden; }
.staff-card .ph img { width:100%; height:100%; object-fit:cover; }
.staff-card h4 { margin:0 0 3px; font-size:16px; }
.staff-card p { margin:0; font-size:13px; color:var(--ink-2); line-height:1.4; }

/* ---- service page ---- */
.svc-hero { --c:var(--brand); background:var(--paper); }
.svc-hero .badge { display:inline-block; font-size:12px; font-weight:800; color:#fff; background:var(--c); padding:5px 12px; border-radius:20px; margin-bottom:12px; }
.feature-cols { display:grid; gap:22px; }
@media (min-width:800px){ .feature-cols{ grid-template-columns:repeat(3,1fr); } }
.feature-list h4 { font-size:15px; margin:0 0 10px; }
.feature-list ul { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:8px; }
.feature-list li { display:flex; gap:9px; font-size:14px; line-height:1.4; }
.feature-list li::before { content:"✓"; color:var(--brand-deep); font-weight:800; }
.plans { display:grid; gap:14px; }
@media (min-width:700px){ .plans{ grid-template-columns:1fr 1fr; } }
.plan { border:1.5px solid var(--line); border-radius:18px; padding:18px; background:var(--paper); }
.plan h4 { margin:0 0 4px; font-size:18px; }
.plan .price { font-family:var(--font-head); font-weight:800; font-size:24px; color:var(--s-daycare); }
.plan .price span { font-size:13px; color:var(--ink-2); font-weight:600; }
.plan p { margin:8px 0 0; font-size:13px; color:var(--ink-2); }

/* ---- squadbar (sticky bottom on mobile) ---- */
.squadbar { position:fixed; left:0; right:0; bottom:0; z-index:60; display:flex; gap:10px; align-items:center;
  padding:12px 14px calc(12px + env(safe-area-inset-bottom)); background:color-mix(in srgb,var(--paper) 92%,transparent);
  backdrop-filter:blur(12px); border-top:1px solid var(--line); }
.squadbar .avail { flex:1; min-width:0; }
.squadbar .avail .l { font-size:10.5px; font-weight:800; letter-spacing:.05em; text-transform:uppercase; color:var(--ink-2); }
.squadbar .avail .v { font-size:14px; font-weight:800; font-family:var(--font-head); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.squadbar .avail .v b { color:var(--brand-deep); }
.squadbar .call { width:46px; height:46px; flex:0 0 auto; border-radius:15px; display:grid; place-items:center; background:var(--paper-3); border:1.5px solid var(--line); color:var(--ink); text-decoration:none; }
body.has-squadbar { padding-bottom:76px; }
@media (min-width:900px){ .squadbar{ display:none; } body.has-squadbar{ padding-bottom:0; } }

/* ---- footer ---- */
.site-footer { background:var(--ink); color:#c7d2dc; padding-block:44px; margin-top:8px; }
.site-footer a { color:#dbe4eb; text-decoration:none; }
.site-footer a:hover { color:var(--brand); }
.footer-grid { display:grid; gap:28px; }
@media (min-width:700px){ .footer-grid{ grid-template-columns:1.4fr 1fr 1fr; } }
.site-footer h4 { color:#fff; font-size:14px; text-transform:uppercase; letter-spacing:.05em; margin:0 0 12px; }
.site-footer ul { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:8px; font-size:14px; }
.site-footer .brand-logo { height:40px; }
.footer-legal { margin-top:28px; padding-top:18px; border-top:1px solid rgba(255,255,255,.12); font-size:12.5px; color:#8ea0ad; }

/* legacy content pages fallback */
.entry { max-width:var(--content); margin-inline:auto; }
.entry img { border-radius:12px; }

/* ---- post cards (archive / blog / search) ---- */
.post-grid { display:grid; gap:22px; grid-template-columns:1fr; }
@media (min-width:600px){ .post-grid{ grid-template-columns:1fr 1fr; } }
@media (min-width:980px){ .post-grid{ grid-template-columns:repeat(3,1fr); } }
.post-card { border:1px solid var(--line); border-radius:20px; overflow:hidden; background:var(--paper); display:flex; flex-direction:column; transition:transform .18s, box-shadow .18s; }
.post-card:hover { transform:translateY(-3px); box-shadow:0 18px 36px -22px rgba(30,42,57,.4); }
.post-card__media { display:block; aspect-ratio:16/10; overflow:hidden; background:var(--paper-3); }
.post-card__media img { width:100%; height:100%; object-fit:cover; display:block; transition:transform .3s; }
.post-card:hover .post-card__media img { transform:scale(1.04); }
.post-card__ph { display:block; width:100%; height:100%; background:linear-gradient(135deg,var(--paper-3),var(--paper-2)); }
.post-card__body { padding:18px; display:flex; flex-direction:column; gap:9px; flex:1; }
.post-card__cat { align-self:flex-start; font-size:11px; font-weight:800; letter-spacing:.04em; text-transform:uppercase; color:var(--brand-deep); background:var(--paper-3); padding:4px 10px; border-radius:20px; }
.post-card__title { font-size:18px; margin:0; line-height:1.22; }
.post-card__title a { color:var(--ink); text-decoration:none; }
.post-card__title a:hover { color:var(--brand-deep); }
.post-card__meta { font-size:12px; font-weight:700; color:var(--ink-2); }
.post-card__excerpt { font-size:13.5px; color:var(--ink-2); line-height:1.5; margin:0; }

/* pagination */
.pagination { margin-top:34px; }
.pagination .nav-links { display:flex; gap:8px; flex-wrap:wrap; justify-content:center; }
.pagination .page-numbers { display:inline-flex; align-items:center; justify-content:center; min-width:42px; height:42px; padding:0 13px; border:1px solid var(--line); border-radius:12px; font-weight:700; font-family:var(--font-head); color:var(--ink); text-decoration:none; }
.pagination .page-numbers:hover { border-color:var(--brand); }
.pagination .current { background:var(--ink); color:#fff; border-color:var(--ink); }

/* booking: pick another day (hands off to MoeGo's hosted calendar) */
.book-otherday { display:block; text-align:center; font-size:12.5px; font-weight:700; color:var(--brand-deep); text-decoration:none; margin:2px 0 12px; }
.book-otherday:hover { text-decoration:underline; }

/* ---- single post (editorial) ---- */
.single-head { max-width:var(--content); margin-inline:auto; padding-top:clamp(28px,5vw,54px); text-align:center; }
.single-cat { display:inline-block; font-size:12px; font-weight:800; letter-spacing:.05em; text-transform:uppercase; color:var(--brand-deep); background:var(--paper-3); padding:5px 12px; border-radius:20px; text-decoration:none; margin-bottom:16px; }
.single-title { font-size:clamp(28px,5vw,44px); line-height:1.08; margin:0 0 14px; }
.single-meta { font-size:14px; font-weight:700; color:var(--ink-2); }
.single-hero { max-width:var(--wrap); margin-block:clamp(24px,4vw,40px); }
.single-hero img { width:100%; border-radius:24px; display:block; aspect-ratio:16/9; object-fit:cover; }
.single-body .entry { max-width:var(--content); margin-inline:auto; font-size:17px; line-height:1.7; color:var(--ink); }
.single-body .entry > p { margin:0 0 1.2em; }
.single-body .entry h2 { font-size:27px; margin:1.6em 0 .45em; }
.single-body .entry h3 { font-size:21px; margin:1.4em 0 .4em; }
.single-body .entry img { border-radius:16px; margin:1.3em 0; }
.single-body .entry ul, .single-body .entry ol { padding-left:1.3em; margin:0 0 1.2em; }
.single-body .entry li { margin:.4em 0; }
.single-body .entry a { color:var(--brand-deep); }
.single-body .entry blockquote { border-left:4px solid var(--brand); margin:1.4em 0; padding:.2em 0 .2em 1.2em; font-family:var(--font-head); font-size:20px; color:var(--ink); }
.single-foot { max-width:var(--content); margin:34px auto 0; }

@media (prefers-reduced-motion:reduce){ *,*::before,*::after{ animation:none!important; transition:none!important; scroll-behavior:auto!important; } }

/* ---- per-service accent binding (defined last so it wins over .svc / .svc-hero defaults) ---- */
.acc-grooming{--c:var(--s-grooming)} .acc-boarding{--c:var(--s-boarding)} .acc-daycare{--c:var(--s-daycare)}
.acc-bath{--c:var(--s-bath)} .acc-dropin{--c:var(--s-dropin)} .acc-walking{--c:var(--s-walking)}
.acc-house{--c:var(--s-house)} .acc-transport{--c:var(--s-transport)} .acc-poop{--c:var(--s-poop)}
/* keep the badge legible on light accents (e.g. grooming gold) */
.svc-hero .badge { background:color-mix(in srgb, var(--c) 84%, #17202b 16%); }

/* photo hero (homepage, service pages, location pages) — image via --hero-photo */
.hero--photo { background-image:linear-gradient(100deg, var(--paper) 0%, var(--paper) 32%, color-mix(in srgb,var(--paper) 74%,transparent) 52%, color-mix(in srgb,var(--paper) 32%,transparent) 78%, color-mix(in srgb,var(--paper) 8%,transparent) 100%), var(--hero-photo); background-size:cover; background-position:center right; }
@media (max-width:899px){ .hero--photo{ background-image:linear-gradient(180deg, var(--paper) 0%, var(--paper) 54%, color-mix(in srgb,var(--paper) 82%,transparent) 100%), var(--hero-photo); background-position:center bottom; } }

/* ---- memberships / plan cards ---- */
.plans--memberships { grid-template-columns:1fr; }
@media (min-width:600px){ .plans--memberships{ grid-template-columns:1fr 1fr; } }
@media (min-width:960px){ .plans--memberships{ grid-template-columns:repeat(3,1fr); } }
.plan { position:relative; display:flex; flex-direction:column; }
.plan--featured { border-color:var(--brand); box-shadow:0 14px 30px -18px color-mix(in srgb,var(--brand) 70%,transparent); }
.plan-badge { position:absolute; top:-11px; left:18px; background:var(--brand); color:#0d2b06; font-size:11px; font-weight:800; padding:4px 10px; border-radius:14px; }
.plan .price { color:var(--brand-deep); }
.plan .price span { display:block; font-size:12px; color:var(--ink-2); font-weight:600; margin-top:3px; }
.plan-includes { list-style:none; margin:12px 0 16px; padding:0; display:flex; flex-direction:column; gap:6px; }
.plan-includes li { display:flex; gap:8px; font-size:13px; color:var(--ink-2); line-height:1.4; }
.plan-includes li::before { content:"✓"; color:var(--brand-deep); font-weight:800; }
.plan .button { margin-top:auto; }
.memberships-intro { max-width:70ch; margin:-6px 0 22px; color:var(--ink-2); font-size:15px; line-height:1.6; }
.memberships-intro p { margin:0 0 10px; }
.memberships-intro p:last-child { margin-bottom:0; }
.plan-freq { align-self:flex-start; font-family:var(--font-head); font-weight:800; font-size:11px; letter-spacing:.03em; text-transform:uppercase; color:var(--brand-deep); background:color-mix(in srgb,var(--brand) 15%,transparent); padding:3px 9px; border-radius:12px; margin:0 0 8px; }

/* ---- newsletter ---- */
.nl-inner { border:1.5px solid var(--line); border-radius:22px; padding:clamp(22px,4vw,40px); display:grid; gap:22px; align-items:center; }
@media (min-width:820px){ .nl-inner{ grid-template-columns:1fr 1.1fr; gap:40px; } }
.nl-copy h2 { font-size:clamp(22px,3.4vw,30px); margin:0 0 8px; }
.nl-copy p { margin:0; color:var(--ink-2); font-size:15px; line-height:1.55; }
.nl-form { min-width:0; }
.nl-fields { display:flex; flex-wrap:wrap; gap:10px; }
.nl-fields input { flex:1 1 180px; min-width:0; padding:13px 15px; border:1.5px solid var(--line); border-radius:12px; font:inherit; font-size:15px; background:var(--paper); color:var(--ink); }
.nl-fields input:focus { outline:none; border-color:var(--brand); box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 22%,transparent); }
.nl-fields .button { flex:0 0 auto; }
.nl-result { margin:12px 0 0; font-size:14px; font-weight:600; }
.nl-result--ok { color:var(--brand-deep); }
.nl-result--err { color:#c0362c; }
.nl-fine { margin:12px 0 0; font-size:12px; color:var(--ink-2); }

/* ---- $25 mailer claim page (/squad25) ---- */
.hero--claim { background:radial-gradient(120% 120% at 15% 0%, var(--paper-2), var(--paper)); border-bottom:1px solid var(--line); }
.claim-inner { display:grid; gap:clamp(24px,4vw,48px); align-items:center; padding-block:clamp(32px,6vw,64px); }
@media (min-width:860px){ .claim-inner{ grid-template-columns:1.05fr .95fr; } }
.claim-copy h1 { font-size:clamp(30px,6vw,50px); margin:0 0 12px; }
.claim-copy .hl { color:var(--brand-deep); }
.claim-copy .sub { font-size:clamp(16px,2.4vw,19px); color:var(--ink-2); max-width:34ch; margin:0 0 20px; }
.claim-points { list-style:none; margin:0; padding:0; display:grid; gap:10px; }
.claim-points li { position:relative; padding-left:30px; font-weight:600; color:var(--ink); }
.claim-points li::before { content:"✓"; position:absolute; left:0; top:-1px; width:20px; height:20px; display:inline-flex; align-items:center; justify-content:center; font-size:12px; font-weight:800; color:#0d2b06; background:var(--brand); border-radius:50%; }
.claim-points strong { color:var(--brand-deep); }

.claim-form { min-width:0; background:var(--paper); border:1.5px solid var(--line); border-radius:var(--radius); padding:clamp(20px,3.5vw,32px); box-shadow:var(--shadow); }
.claim-form-title { font-size:clamp(20px,3vw,26px); margin:0 0 16px; }
.claim-field { display:block; font-family:var(--font-head); font-weight:600; font-size:13px; color:var(--ink-2); margin-bottom:14px; }
.claim-field input, .claim-field select { display:block; width:100%; margin-top:6px; padding:13px 15px; border:1.5px solid var(--line); border-radius:12px; font:inherit; font-size:16px; background:var(--paper); color:var(--ink); }
.claim-field input:focus, .claim-field select:focus { outline:none; border-color:var(--brand); box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 22%,transparent); }
.claim-submit { margin-top:4px; }
.claim-result { margin:14px 0 0; font-size:14px; font-weight:600; }
.claim-result--ok { color:var(--brand-deep); }
.claim-result--err { color:#c0362c; }
.claim-fine { margin:14px 0 0; font-size:12px; color:var(--ink-2); line-height:1.5; }
.claim-fine strong { color:var(--ink); }

/* ---- booking two-axis picker (Type/Tier × Size) ---- */
.book-picker { margin:0 0 14px; }
.book-picker-axes { display:flex; flex-wrap:wrap; gap:10px; }
.book-picker .book-field { flex:1 1 150px; min-width:0; display:flex; flex-direction:column; gap:5px; }
.book-picker .book-field-label { font-family:var(--font-head); font-weight:700; font-size:12px; color:var(--ink-2); }
.book-axis { width:100%; padding:11px 13px; border:1.5px solid var(--line); border-radius:12px; font:inherit; font-size:15px; background:var(--paper); color:var(--ink); }
.book-axis:focus { outline:none; border-color:var(--brand); box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 22%,transparent); }
.book-price { margin-top:11px; display:flex; align-items:baseline; gap:8px; font-family:var(--font-head); font-weight:800; font-size:19px; color:var(--brand-deep); }
.book-price-from { font-size:11px; font-weight:700; letter-spacing:.04em; text-transform:uppercase; color:var(--ink-2); }

/* ---- contact / careers lead form ---- */
.lead-form { max-width:560px; margin:8px 0 0; }
.lead-hp { position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }
.lead-form .lead-field { display:block; font-family:var(--font-head); font-weight:600; font-size:13px; color:var(--ink-2); margin-bottom:14px; }
.lead-form .lead-field input, .lead-form .lead-field select, .lead-form .lead-field textarea { display:block; width:100%; margin-top:6px; padding:12px 14px; border:1.5px solid var(--line); border-radius:12px; font:inherit; font-size:16px; background:var(--paper); color:var(--ink); }
.lead-form .lead-field textarea { resize:vertical; }
.lead-form .lead-field input:focus, .lead-form .lead-field select:focus, .lead-form .lead-field textarea:focus { outline:none; border-color:var(--brand); box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 22%,transparent); }
.lead-row { display:flex; flex-wrap:wrap; gap:14px; }
.lead-row .lead-field { flex:1 1 200px; }
.lead-err { background:#fdecea; color:#c0362c; border-radius:10px; padding:10px 14px; font-size:14px; font-weight:600; margin:0 0 14px; }

/* ---- contact / careers lead page (branded, matches /squad25/) ---- */
.lead-pitch { color:var(--ink-2); font-size:clamp(16px,2.2vw,18px); line-height:1.6; }
.lead-pitch p { margin:0 0 14px; }
.lead-pitch ul { list-style:none; padding:0; margin:18px 0 0; display:grid; gap:12px; }
.lead-pitch li { position:relative; padding-left:30px; font-weight:600; color:var(--ink); }
.lead-pitch li::before { content:"✓"; position:absolute; left:0; top:1px; width:20px; height:20px; display:inline-flex; align-items:center; justify-content:center; font-size:12px; font-weight:800; color:#0d2b06; background:var(--brand); border-radius:50%; }
.lead-pitch li strong { color:var(--ink); }
.claim-form .lead-form { max-width:none; margin:0; }
