/* ============================================================================
   Choice Wellness — RN Prescriber Clinic, Brooklin, Ontario
   Palette: deep pine and teal (trust, calm), warm sand and cream (approachable),
   a clay accent for the one action we want taken. Type: Fraunces for headings,
   DM Sans for everything else.
   ============================================================================ */

:root {
  --wn-admin-bar-z: 150;

  --pine:       #163f3b;
  --pine-2:     #1f524d;
  --teal:       #22706a;
  --teal-dark:  #1a5a55;
  --teal-soft:  #dff0ec;
  --mint:       #eef7f4;
  --sage:       #a8c7bf;

  --sand:       #f5efe6;
  --sand-2:     #ebe2d4;
  --cream:      #fcfaf6;
  --white:      #ffffff;

  --ink:        #182322;
  --text:       #2f3d3b;
  --muted:      #62706d;
  --line:       #e1e6e3;
  --line-dark:  rgba(255, 255, 255, 0.14);

  --clay:       #c75d3d;
  --clay-dark:  #a84a2d;
  --clay-deep:  #8e3c23;
  --clay-soft:  #fbe9e2;
  --peach:      #e8a06e;

  --radius:     12px;
  --radius-lg:  22px;
  --radius-pill: 999px;
  --max:        1160px;
  --gutter:     clamp(1.25rem, 4vw, 3rem);
  --inset:      clamp(2rem, 5vw, 4.5rem);
  --rule:       rgba(22, 63, 59, .18);

  --shadow-sm:  0 1px 2px rgba(24, 35, 34, 0.05), 0 2px 8px rgba(24, 35, 34, 0.06);
  --shadow-md:  0 6px 20px rgba(24, 35, 34, 0.08), 0 2px 6px rgba(24, 35, 34, 0.05);
  --shadow-lg:  0 20px 50px rgba(24, 35, 34, 0.14), 0 4px 12px rgba(24, 35, 34, 0.06);

  --font-display: "Fraunces", Georgia, "Times New Roman", serif;
  --font-sans:    "DM Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
}

/* ---------------------------------------------------------------------------
   Base
   --------------------------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: 6rem; }
html, body { margin: 0; padding: 0; min-height: 100%; }
body {
  font-family: var(--font-sans);
  font-size: 1.0625rem;
  line-height: 1.65;
  color: var(--text);
  background: var(--cream);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  min-height: 100dvh;
  display: flex;
  flex-direction: column;
}
body > main { flex: 1 0 auto; overflow-x: clip; }
body.nav-open { overflow: hidden; }
img, svg { max-width: 100%; }
img { height: auto; display: block; }
button { font: inherit; cursor: pointer; }
address { font-style: normal; }
ul, ol { margin: 0; padding: 0; }
.icon { width: 1em; height: 1em; display: inline-block; vertical-align: -0.15em; flex: none; }

h1, h2, h3, h4 {
  font-family: var(--font-display);
  font-weight: 400;
  color: var(--ink);
  line-height: 1.12;
  letter-spacing: -0.02em;
  margin: 0 0 0.6em;
  font-variation-settings: "opsz" 96, "SOFT" 100, "WONK" 1;
}
h1 { font-size: clamp(2.4rem, 5.2vw, 3.9rem); }
h2 { font-size: clamp(1.9rem, 3.6vw, 2.7rem); }
h3 { font-size: clamp(1.25rem, 2vw, 1.5rem); font-variation-settings: "opsz" 36, "SOFT" 100, "WONK" 1; }
h4 { font-variation-settings: normal; font-family: var(--font-sans); font-size: 0.8rem; font-weight: 600; letter-spacing: 0.12em; text-transform: uppercase; color: var(--teal); }
h1 em, h2 em, .page-hero__title em { font-style: italic; font-weight: 400; color: var(--clay-dark); }

p { margin: 0 0 1em; }
a { color: var(--teal-dark); text-decoration: none; transition: color .2s ease; }
a:hover { color: var(--clay-dark); }
:focus-visible { outline: 3px solid var(--focus, var(--clay)); outline-offset: 3px; border-radius: 4px; }
/* On the pine sections clay is under 3:1; peach keeps the ring visible. */
.section--pine, .cta-band, .site-footer, .route-hero__lake, .limits-spread__side--cannot { --focus: var(--peach); }
.skip-link { position: absolute; left: 1rem; top: -5rem; padding: .6rem 1rem; background: var(--pine); color: #fff; border-radius: var(--radius); z-index: 1000; }
.skip-link:focus { top: 1rem; color: #fff; }

.wrap { max-width: var(--max); margin: 0 auto; padding-left: var(--gutter); padding-right: var(--gutter); }
.eyebrow {
  display: inline-flex; align-items: center; gap: .5rem;
  font-size: .78rem; font-weight: 600; letter-spacing: .18em; text-transform: uppercase;
  color: var(--teal); margin: 0 0 1rem;
}
.eyebrow::before { content: ""; width: 1.5rem; height: 2px; background: currentColor; border-radius: 2px; opacity: .7; }
.eyebrow--light { color: var(--sage); }
.eyebrow--plain::before { display: none; }
.lede { font-size: clamp(1.1rem, 1.6vw, 1.3rem); line-height: 1.6; color: var(--text); max-width: 42rem; }
.muted { color: var(--muted); }
.small { font-size: .9rem; }
.prose { max-width: 44rem; }
.prose h2 { font-size: clamp(1.5rem, 2.4vw, 1.9rem); margin-top: 2.2em; }
.prose h3 { margin-top: 1.8em; }
.prose ul, .prose ol { padding-left: 1.3rem; margin: 0 0 1.2em; }
.prose li { margin: .35em 0; }
.prose li::marker { color: var(--teal); }

/* ---------------------------------------------------------------------------
   Buttons
   --------------------------------------------------------------------------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
  padding: .85rem 1.45rem;
  font-family: var(--font-sans); font-size: .95rem; font-weight: 600; letter-spacing: .005em;
  border: 1.5px solid transparent; border-radius: var(--radius-pill);
  transition: background .2s ease, color .2s ease, border-color .2s ease, transform .15s ease, box-shadow .2s ease;
  white-space: nowrap;
}
.btn:active { transform: translateY(1px); }
.btn--lg { padding: 1rem 1.8rem; font-size: 1.02rem; }
.btn--sm { padding: .55rem 1rem; font-size: .88rem; }
.btn--clay { background: var(--clay-dark); color: #fff; border-color: var(--clay-dark); box-shadow: 0 6px 16px rgba(168, 74, 45, .25); }
.btn--clay:hover { background: var(--clay-deep); border-color: var(--clay-deep); color: #fff; box-shadow: 0 8px 20px rgba(168, 74, 45, .32); }
.btn--teal { background: var(--teal); color: #fff; border-color: var(--teal); }
.btn--teal:hover { background: var(--teal-dark); border-color: var(--teal-dark); color: #fff; }
.btn--ghost { background: transparent; color: var(--pine); border-color: var(--pine); }
.btn--ghost:hover { background: var(--pine); color: #fff; }
.btn--outline { background: transparent; color: #fff; border-color: rgba(255,255,255,.6); }
.btn--outline:hover { background: #fff; color: var(--pine); border-color: #fff; }
.btn--soft { background: var(--teal-soft); color: var(--teal-dark); border-color: var(--teal-soft); }
.btn--soft:hover { background: var(--sage); border-color: var(--sage); color: var(--pine); }
.actions { display: flex; flex-wrap: wrap; gap: .75rem 1rem; align-items: center; margin-top: 1.75rem; }
.link-arrow { display: inline-flex; align-items: center; gap: .45rem; font-weight: 600; color: var(--teal-dark); }
.link-arrow .icon { transition: transform .2s ease; }
.link-arrow:hover .icon { transform: translateX(4px); }

/* ---------------------------------------------------------------------------
   Header
   --------------------------------------------------------------------------- */
.site-nav {
  position: sticky; top: var(--wn-admin-bar, 0px); z-index: 60;
  background: rgba(252, 250, 246, .88);
  -webkit-backdrop-filter: saturate(160%) blur(14px); backdrop-filter: saturate(160%) blur(14px);
  border-bottom: 1px solid transparent;
  transition: border-color .25s ease, box-shadow .25s ease;
}
.site-nav.is-scrolled { border-bottom-color: var(--line); box-shadow: 0 6px 24px rgba(24, 35, 34, .06); }
.site-nav__inner { display: flex; align-items: center; gap: 2rem; min-height: 5rem; }
.site-nav__logo { color: var(--pine); display: inline-flex; margin-right: auto; }
.site-nav__logo:hover { color: var(--teal); }

.brand { display: inline-flex; align-items: center; gap: .7rem; color: inherit; }
.brand__mark { width: 40px; height: 40px; flex: none; }
.brand__ring { color: var(--pine); }
.brand__check { color: var(--clay); }
.brand--light .brand__ring { color: var(--teal-soft); }
.brand--light .brand__check { color: var(--peach); }
.brand__word { display: flex; flex-direction: column; line-height: 1; }
.brand__name { font-family: var(--font-display); font-size: 1.5rem; font-weight: 500; letter-spacing: -.01em; color: var(--pine); font-variation-settings: "opsz" 48, "SOFT" 50; }
.brand__sub { font-size: .66rem; font-weight: 600; letter-spacing: .3em; text-transform: uppercase; color: var(--teal); margin-top: .3rem; }
.brand--light .brand__name { color: #fff; }
.brand--light .brand__sub { color: var(--sage); }

.site-nav__menu { display: flex; align-items: center; gap: 1.75rem; }
.site-nav__list { list-style: none; display: flex; align-items: center; gap: .25rem; }
.site-nav__item { position: relative; display: flex; align-items: center; }
.site-nav__link, .site-nav__item > a {
  display: inline-block; padding: .55rem .8rem; border-radius: var(--radius-pill);
  font-weight: 500; font-size: .98rem; color: var(--ink); white-space: nowrap;
}
.site-nav__item > a:hover { color: var(--teal-dark); background: var(--mint); }
.site-nav__item > a.is-active { color: var(--teal-dark); }
.site-nav__item > a.is-active::after { content: ""; display: block; height: 2px; margin: .15rem .1rem 0; background: var(--clay); border-radius: 2px; }
.site-nav__dropdown-toggle {
  display: inline-flex; align-items: center; justify-content: center;
  width: 1.75rem; height: 1.75rem; margin-left: -.5rem; border: 0; background: transparent; color: var(--muted); border-radius: 50%;
  transition: transform .2s ease, background .2s ease;
}
.site-nav__dropdown-toggle:hover { background: var(--mint); color: var(--teal-dark); }
.site-nav__item.is-open > .site-nav__dropdown-toggle { transform: rotate(180deg); }
.site-nav__dropdown {
  list-style: none; position: absolute; top: calc(100% + .6rem); left: 0; min-width: 17rem;
  background: #fff; border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow-lg); padding: .5rem;
  opacity: 0; visibility: hidden; transform: translateY(6px); transition: opacity .18s ease, transform .18s ease, visibility .18s;
}
.site-nav__item.is-open > .site-nav__dropdown, .site-nav__item:hover > .site-nav__dropdown { opacity: 1; visibility: visible; transform: translateY(0); }
.site-nav__dropdown li a { display: block; padding: .6rem .85rem; border-radius: 8px; color: var(--text); font-size: .95rem; }
.site-nav__dropdown li a:hover { background: var(--mint); color: var(--teal-dark); }
.site-nav__dropdown li a.is-active { color: var(--teal-dark); font-weight: 600; }
.site-nav__cta { display: flex; align-items: center; gap: 1.1rem; }
.site-nav__phone { display: inline-flex; align-items: center; gap: .45rem; font-weight: 600; color: var(--pine); font-size: .95rem; white-space: nowrap; }
@media (min-width: 1025px) and (max-width: 1240px) { .site-nav__phone span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); } .site-nav__phone .icon { font-size: 1.25rem; } }
.site-nav__phone .icon { color: var(--teal); }
.site-nav__toggle { display: none; }
.site-nav__backdrop { display: none; }

@media (max-width: 1024px) {
  /* A backdrop-filter makes the header the containing block of its fixed
     children, which would trap the slide-in menu inside it: solid header here. */
  .site-nav { -webkit-backdrop-filter: none; backdrop-filter: none; background: var(--cream); }
  .site-nav__inner { min-height: 4.5rem; gap: 1rem; }
  .site-nav__toggle {
    display: inline-flex; align-items: center; gap: .6rem; border: 1.5px solid var(--line); background: #fff; color: var(--pine);
    padding: .5rem .85rem; border-radius: var(--radius-pill); font-weight: 600; font-size: .9rem;
  }
  .site-nav__toggle-box { display: inline-flex; flex-direction: column; justify-content: center; gap: 4px; width: 18px; }
  .site-nav__toggle-box span { display: block; height: 2px; background: currentColor; border-radius: 2px; transition: transform .25s ease, opacity .2s ease; }
  .site-nav.is-open .site-nav__toggle-box span:nth-child(1) { transform: translateY(6px) rotate(45deg); }
  .site-nav.is-open .site-nav__toggle-box span:nth-child(2) { opacity: 0; }
  .site-nav.is-open .site-nav__toggle-box span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }
  .site-nav__menu {
    position: fixed; inset: calc(4.5rem + var(--wn-admin-bar, 0px)) 0 0 0; z-index: 55;
    flex-direction: column; align-items: stretch; gap: 1.5rem;
    background: var(--cream); padding: 1.25rem var(--gutter) 2rem; overflow-y: auto;
    transform: translateX(100%); transition: transform .3s cubic-bezier(.2,.8,.2,1); visibility: hidden;
  }
  .site-nav__menu.is-open { transform: none; visibility: visible; }
  .site-nav__list { flex-direction: column; align-items: stretch; gap: .15rem; }
  .site-nav__item { flex-wrap: wrap; border-bottom: 1px solid var(--line); }
  .site-nav__item > a { flex: 1; padding: 1rem .25rem; font-size: 1.15rem; border-radius: 0; }
  .site-nav__item > a:hover { background: transparent; }
  .site-nav__item > a.is-active::after { display: none; }
  .site-nav__item > a.is-active { color: var(--teal-dark); font-weight: 600; }
  .site-nav__dropdown-toggle { width: 2.75rem; height: 2.75rem; margin: 0; color: var(--pine); }
  .site-nav__dropdown {
    position: static; width: 100%; min-width: 0; box-shadow: none; border: 0; background: var(--mint); border-radius: var(--radius);
    opacity: 1; visibility: visible; transform: none; display: none; margin: 0 0 .75rem; padding: .5rem;
  }
  .site-nav__item.is-open > .site-nav__dropdown { display: block; }
  .site-nav__item:hover > .site-nav__dropdown { display: none; }
  .site-nav__item.is-open:hover > .site-nav__dropdown { display: block; }
  .site-nav__cta { flex-direction: column; align-items: stretch; gap: .9rem; }
  .site-nav__cta .btn { width: 100%; }
  .site-nav__phone { justify-content: center; font-size: 1.05rem; }
  .site-nav__backdrop { display: block; position: fixed; inset: 0; background: rgba(22, 63, 59, .35); z-index: 50; opacity: 0; pointer-events: none; transition: opacity .25s ease; }
  body.nav-open .site-nav__backdrop { opacity: 1; pointer-events: auto; }
}

/* ---------------------------------------------------------------------------
   Sections
   --------------------------------------------------------------------------- */
.section { padding: clamp(3.5rem, 7vw, 6rem) 0; }
.section--tight { padding: clamp(2.5rem, 5vw, 4rem) 0; }
.section--sand { background: var(--sand); }
.section--mint { background: var(--mint); }
.section--pine { background: var(--pine); color: #e6efec; }
.section--pine h2, .section--pine h3 { color: #fff; }
.section--pine p { color: #cfe0db; }
.section-head { max-width: 40rem; margin-bottom: clamp(2rem, 4vw, 3rem); }
.section-head--center { margin-left: auto; margin-right: auto; text-align: center; }
.section-head--center .eyebrow { justify-content: center; }
.section-head--center .eyebrow::before { display: none; }
.section-head__sub { color: var(--muted); font-size: 1.08rem; }
.section-head--row { display: flex; align-items: flex-end; justify-content: space-between; gap: 2rem; max-width: none; flex-wrap: wrap; }
.section-head--row > div { max-width: 40rem; }
.section-head--row h2 { margin-bottom: .2em; }

/* ---------------------------------------------------------------------------
   Service index (cw_service_cards): a printed list, not a grid of cards.
   Hovering a row draws the route's clay line along its top rule.
   --------------------------------------------------------------------------- */
.service-index__list { list-style: none; --rule: rgba(22, 63, 59, .18); }
.service-index__list li { border-top: 1px solid var(--rule); }
.service-index__list li:last-child { border-bottom: 1px solid var(--rule); }
.service-index__row {
  position: relative; display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr) 11rem 1.75rem; gap: 1rem clamp(1.5rem, 3vw, 3rem); align-items: baseline;
  padding: clamp(1.5rem, 2.6vw, 2.1rem) 0; color: var(--text);
}
.service-index__row:hover { color: var(--text); }
.service-index__row::before { content: ""; position: absolute; left: 0; right: 0; top: -1px; height: 3px; background: var(--clay); transform: scaleX(0); transform-origin: left; transition: transform .5s cubic-bezier(.45, 0, .2, 1); }
.service-index__row::after { content: ""; position: absolute; left: -5px; top: -5.5px; width: 12px; height: 12px; border-radius: 50%; background: var(--clay); transform: scale(0); transition: transform .25s ease; }
.service-index__row:hover::before, .service-index__row:focus-visible::before { transform: scaleX(1); }
.service-index__row:hover::after, .service-index__row:focus-visible::after { transform: scale(1); }
.service-index__title {
  font-family: var(--font-display); font-size: clamp(1.85rem, 3.1vw, 2.65rem); font-weight: 400; line-height: 1.06; letter-spacing: -.02em; color: var(--ink);
  font-variation-settings: "opsz" 144, "SOFT" 100, "WONK" 1; transition: color .2s ease, transform .3s cubic-bezier(.2, .8, .2, 1);
}
.service-index__row:hover .service-index__title, .service-index__row:focus-visible .service-index__title { color: var(--clay-dark); transform: translateX(.5rem); }
.service-index__text { font-size: 1rem; line-height: 1.55; }
.service-index__fee { display: grid; gap: .15rem; text-align: right; }
.service-index__price { font-family: var(--font-display); font-size: 1.55rem; line-height: 1.1; color: var(--pine); font-variation-settings: "opsz" 40, "SOFT" 100, "WONK" 1; }
.service-index__price small { font-family: var(--font-sans); font-size: .82rem; color: var(--muted); }
.service-index__fee-label { font-size: .82rem; line-height: 1.3; color: var(--muted); }
.service-index__go { justify-self: end; color: var(--teal-dark); font-size: 1.35rem; line-height: 1; transition: transform .25s ease, color .2s ease; }
.service-index__row:hover .service-index__go { color: var(--clay-dark); transform: translateX(4px); }
.service-index__note { margin: 1.1rem 0 0; font-size: .9rem; color: var(--muted); }
.service-index__note a { font-weight: 600; white-space: nowrap; }

.service-index--compact .service-index__list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: clamp(2rem, 5vw, 4rem); }
.service-index--compact .service-index__list li { border-top: 0; border-bottom: 1px solid var(--rule); }
.service-index--compact .service-index__list li:nth-child(-n+2) { border-top: 1px solid var(--rule); }
.service-index--compact .service-index__row { grid-template-columns: minmax(0, 1fr) 1.75rem; padding: 1.3rem 0; }
.service-index--compact .service-index__title { font-size: clamp(1.4rem, 2.1vw, 1.75rem); line-height: 1.15; font-variation-settings: "opsz" 48, "SOFT" 100, "WONK" 1; }

@media (max-width: 900px) {
  .service-index__row { grid-template-columns: minmax(0, 1fr) auto; }
  .service-index__title, .service-index__text { grid-column: 1 / -1; }
  .service-index__fee { text-align: left; }
  .service-index__go { align-self: center; }
  .service-index--compact .service-index__row { grid-template-columns: minmax(0, 1fr) 1.75rem; }
  .service-index--compact .service-index__title { grid-column: auto; }
}
@media (max-width: 600px) {
  .service-index--compact .service-index__list { grid-template-columns: 1fr; }
  .service-index--compact .service-index__list li:nth-child(2) { border-top: 0; }
}

/* ---------------------------------------------------------------------------
   Steps: a vertical route (service pages, request page)
   --------------------------------------------------------------------------- */
.steps { --mark: 2.75rem; list-style: none; counter-reset: step; }
.steps li { position: relative; counter-increment: step; padding: 0 0 2rem calc(var(--mark) + 1.15rem); }
.steps li:last-child { padding-bottom: 0; }
.steps li::before {
  content: counter(step); position: absolute; z-index: 1; left: 0; top: 0; display: grid; place-items: center; width: var(--mark); height: var(--mark);
  border-radius: 50%; background: var(--pine); color: #fff; box-shadow: 0 0 0 7px rgba(199, 93, 61, .16);
  font-family: var(--font-display); font-size: 1.25rem; line-height: 1; font-variation-settings: "opsz" 40, "SOFT" 100, "WONK" 1;
}
.steps li::after { content: ""; position: absolute; top: 0; bottom: 0; left: calc(var(--mark) / 2 - 1.5px); width: 3px; background: var(--clay); }
.steps li:last-child::after { bottom: auto; height: calc(var(--mark) / 2); }
.steps h3 { font-size: 1.35rem; line-height: 1.2; margin-bottom: .35em; padding-top: .45rem; }
.steps p { margin: 0; color: var(--text); font-size: .98rem; }
.steps p:first-child { padding-top: .55rem; }

/* ---------------------------------------------------------------------------
   Ruled lists, scope columns, limits
   --------------------------------------------------------------------------- */
.check-list { list-style: none; }
.check-list li { display: flex; gap: .7rem; align-items: flex-start; padding: .85rem 0; border-top: 1px solid var(--rule); }
.check-list li:last-child { border-bottom: 1px solid var(--rule); }
.check-list .icon { flex: none; width: 1.1rem; height: 1.1rem; margin-top: .3rem; color: var(--teal-dark); }
.check-list--x .icon { color: var(--clay-dark); }

.scope-cols { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2.5rem var(--inset); }
.scope-col h3 { font-size: clamp(1.6rem, 2.6vw, 2.1rem); margin-bottom: .6em; }
.scope-col p.small { margin-top: 1.1rem; }
@media (max-width: 800px) { .scope-cols { grid-template-columns: 1fr; } }

.limits { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; }
.limits > :first-child { padding-right: var(--inset); }
.limits > :last-child { margin-left: var(--inset); }
@media (max-width: 860px) {
  .limits { grid-template-columns: 1fr; gap: 2rem; }
  .limits > :first-child { padding-right: 0; }
  .limits > :last-child { margin-left: 0; }
}
.limit-list { list-style: none; }
.limit-list li { padding: 1.1rem 0; border-top: 1px solid var(--rule); }
.limit-list li:last-child { border-bottom: 1px solid var(--rule); }
.limit-list strong { display: block; margin-bottom: .25rem; font-family: var(--font-display); font-size: 1.4rem; font-weight: 400; line-height: 1.18; letter-spacing: -.012em; color: var(--ink); font-variation-settings: "opsz" 48, "SOFT" 100, "WONK" 1; }
.limit-list p { margin: 0; color: var(--text); font-size: .97rem; }

.scope-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(17rem, 1fr)); gap: 2.25rem clamp(1.5rem, 3vw, 2.5rem); }
.scope-tile { position: relative; display: block; padding-top: 1rem; border-top: 1px solid var(--rule); color: var(--text); }
a.scope-tile:hover { color: var(--text); }
a.scope-tile::before { content: ""; position: absolute; left: 0; right: 0; top: -2px; height: 3px; background: var(--clay); transform: scaleX(0); transform-origin: left; transition: transform .5s cubic-bezier(.45, 0, .2, 1); }
a.scope-tile:hover::before, a.scope-tile:focus-visible::before { transform: scaleX(1); }
a.scope-tile:hover h3 { color: var(--clay-dark); }
.scope-tile__cat { display: block; margin-bottom: .35rem; font-size: .84rem; color: var(--muted); }
.scope-tile h3 { font-size: 1.5rem; line-height: 1.15; margin-bottom: .35em; transition: color .2s ease; }
.scope-tile p { margin: 0; color: var(--text); font-size: .97rem; }
.scope-tile__photo { display: block; width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: cover; margin-bottom: 1rem; background: var(--sand-2); }
.scope-tile .scope-tile__links { margin-top: .75rem; font-size: .9rem; font-weight: 600; color: var(--muted); }
.scope-tile__links a { color: var(--teal-dark); }
.scope-tile__links a:hover { color: var(--clay-dark); }
.scope-tile__more { display: inline-flex; align-items: center; gap: .35rem; margin-top: .7rem; font-weight: 600; font-size: .9rem; color: var(--teal-dark); }

.scope-note { display: flex; gap: .7rem; align-items: flex-start; margin: 1.5rem 0 0; font-size: .9rem; line-height: 1.55; color: var(--muted); }
.scope-note .icon { flex: none; font-size: 1.25rem; color: var(--teal); margin-top: .1rem; }

/* ---------------------------------------------------------------------------
   Page hero (inner pages): big title, resting on the route line
   --------------------------------------------------------------------------- */
.page-hero { position: relative; padding: clamp(2rem, 4vw, 3.25rem) 0 clamp(2.5rem, 5vw, 4rem); background: var(--cream); border-bottom: 3px solid var(--clay); }
.page-hero::after { content: ""; position: absolute; bottom: -7.5px; left: max(var(--gutter), calc((100% - var(--max)) / 2 + var(--gutter))); width: 12px; height: 12px; margin-left: -5px; border-radius: 50%; background: var(--clay); }
.page-hero__inner { display: grid; gap: 2.5rem; align-items: center; }
.page-hero--split .page-hero__inner { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0; }
.page-hero--split .page-hero__text { padding-right: var(--inset); }
.page-hero--split .page-hero__aside { margin-left: var(--inset); }
.page-hero__title { max-width: 16em; margin-bottom: .4em; font-size: clamp(2.8rem, 5.5vw, 4.5rem); line-height: 1.02; letter-spacing: -.028em; font-variation-settings: "opsz" 144, "SOFT" 100, "WONK" 1; }
.page-hero__text .lede { margin-bottom: 0; }
@media (max-width: 900px) {
  .page-hero--split .page-hero__inner { grid-template-columns: 1fr; gap: 2rem; }
  .page-hero--split .page-hero__text { padding-right: 0; }
  .page-hero--split .page-hero__aside { margin-left: 0; }
}
.crumbs ol { list-style: none; display: flex; flex-wrap: wrap; gap: .4rem; font-size: .86rem; color: var(--muted); margin-bottom: 1.1rem; }
.crumbs li + li::before { content: "/"; margin-right: .4rem; color: var(--sage); }
.crumbs a { color: var(--muted); }
.crumbs a:hover { color: var(--teal-dark); }

/* The sheets that hang from the route line share its stop. */
.glance, .credential, .form-card { position: relative; border-top: 3px solid var(--clay); }
.glance::before, .credential::before, .form-card::before { content: ""; position: absolute; left: -5px; top: -7.5px; width: 12px; height: 12px; border-radius: 50%; background: var(--clay); }

.glance { padding-top: 1.1rem; }
.glance h2 { font-size: 1.35rem; margin-bottom: .6em; }
.glance dl { margin: 0; }
.glance dl div { display: flex; justify-content: space-between; gap: 1rem; padding: .65rem 0; border-top: 1px solid var(--rule); font-size: .96rem; }
.glance dl div:last-child { border-bottom: 1px solid var(--rule); }
.glance dt { color: var(--muted); }
.glance dd { margin: 0; font-weight: 600; color: var(--ink); text-align: right; }

/* ---------------------------------------------------------------------------
   Fees
   --------------------------------------------------------------------------- */
.fee-group { margin-bottom: 2.75rem; }
.fee-group h2 { font-size: clamp(1.6rem, 2.6vw, 2.1rem); margin-bottom: .75rem; }
.fee-note { display: flex; gap: .7rem; align-items: flex-start; padding-top: 1rem; border-top: 1px solid var(--rule); color: var(--text); font-size: .94rem; }
.fee-note .icon { color: var(--clay-dark); font-size: 1.3rem; flex: none; margin-top: .1rem; }
.fee-note p { margin: 0; }
.fee-layout { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, .8fr); gap: clamp(2rem, 5vw, 4rem); align-items: start; }
@media (max-width: 900px) { .fee-layout { grid-template-columns: 1fr; } }
.side-card { position: sticky; top: 6.5rem; padding-top: 1rem; border-top: 1px solid var(--rule); }
.side-card h3 { font-size: 1.35rem; margin-bottom: .75em; }
.side-card ul { list-style: none; display: grid; gap: .8rem; }
.side-card li { display: flex; gap: .7rem; align-items: flex-start; font-size: .95rem; color: var(--text); }
.side-card li .icon { color: var(--teal-dark); flex: none; font-size: 1.15rem; margin-top: .2rem; }
@media (max-width: 900px) { .side-card { position: static; } }

/* ---------------------------------------------------------------------------
   FAQ: ruled questions, on the page's centre line
   --------------------------------------------------------------------------- */
.faq { max-width: none; }
.faq__item { border-top: 1px solid var(--rule); }
.faq__item:last-of-type { border-bottom: 1px solid var(--rule); }
.faq__q { list-style: none; display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1.2rem 0; cursor: pointer; font-family: var(--font-display); font-size: clamp(1.25rem, 1.9vw, 1.5rem); font-weight: 400; line-height: 1.2; letter-spacing: -.01em; color: var(--ink); font-variation-settings: "opsz" 48, "SOFT" 100, "WONK" 1; }
.faq__q::-webkit-details-marker { display: none; }
.faq__q:hover { color: var(--clay-dark); }
.faq__chev { flex: none; width: 1.6rem; height: 1.6rem; position: relative; }
.faq__chev::before, .faq__chev::after { content: ""; position: absolute; left: 50%; top: 50%; width: .75rem; height: 2px; background: var(--clay-dark); transform: translate(-50%, -50%); border-radius: 2px; }
.faq__chev::after { transform: translate(-50%, -50%) rotate(90deg); transition: transform .25s ease; }
.faq__item[open] .faq__chev::after { transform: translate(-50%, -50%) rotate(0deg); }
.faq__a { padding: 0 2.75rem 1.4rem 0; color: var(--text); }
.faq__a p { margin: 0; }
.faq-layout { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; }
.faq-layout > div:first-child { padding-right: var(--inset); }
.faq-layout .faq { margin-left: var(--inset); }
@media (max-width: 900px) {
  .faq-layout { grid-template-columns: 1fr; gap: 1.5rem; }
  .faq-layout > div:first-child { padding-right: 0; }
  .faq-layout .faq { margin-left: 0; }
}

/* ---------------------------------------------------------------------------
   CTA band
   --------------------------------------------------------------------------- */
.cta-band { padding: clamp(3rem, 6vw, 5rem) 0; background: var(--pine); }
.cta-band__inner { display: flex; align-items: center; justify-content: space-between; gap: 2.5rem; flex-wrap: wrap; }
.cta-band__text { max-width: 36rem; }
.cta-band h2 { color: #fff; margin-bottom: .4em; }
.cta-band p { color: #cfe0db; margin: 0; font-size: 1.05rem; }
.cta-band__actions { display: flex; flex-wrap: wrap; gap: .9rem; }

/* ---------------------------------------------------------------------------
   About / split sections
   --------------------------------------------------------------------------- */
.split { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: center; }
.split > :first-child { padding-right: var(--inset); }
.split > :last-child { padding-left: var(--inset); }
.split--start { align-items: start; }
@media (max-width: 900px) {
  .split { grid-template-columns: 1fr; gap: 2rem; }
  .split > :first-child { padding-right: 0; }
  .split > :last-child { padding-left: 0; }
}
.credential { padding-top: 1.5rem; }
.credential__avatar { display: grid; place-items: center; width: 4.5rem; height: 4.5rem; margin-bottom: 1.1rem; border-radius: 50%; background: var(--pine); color: #fff; box-shadow: 0 0 0 7px rgba(199, 93, 61, .16); font-family: var(--font-display); font-size: 1.5rem; font-variation-settings: "opsz" 40, "SOFT" 100, "WONK" 1; }
.credential h3 { font-size: 1.8rem; margin-bottom: .2em; }
.credential__role { color: var(--teal-dark); font-weight: 600; margin-bottom: 1.1rem; }
.credential dl { margin: 0 0 1.25rem; font-size: .95rem; }
.credential dl div { display: flex; justify-content: space-between; gap: 1rem; padding: .65rem 0; border-top: 1px solid var(--rule); }
.credential dl div:last-child { border-bottom: 1px solid var(--rule); }
.credential dt { color: var(--muted); }
.credential dd { margin: 0; font-weight: 600; color: var(--ink); text-align: right; }
.stat-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr)); gap: 1.75rem clamp(1.25rem, 2.5vw, 2rem); margin-top: clamp(2.5rem, 5vw, 4rem); }
.stat { padding-top: 1rem; border-top: 1px solid var(--rule); }
.stat strong { display: block; font-family: var(--font-display); font-size: clamp(2.6rem, 4.4vw, 3.6rem); font-weight: 400; line-height: 1; letter-spacing: -.02em; color: var(--pine); margin-bottom: .35rem; font-variation-settings: "opsz" 144, "SOFT" 100, "WONK" 1; }
.stat span { font-size: .94rem; color: var(--text); }

/* ---------------------------------------------------------------------------
   Contact / book
   --------------------------------------------------------------------------- */
.quick-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr)); gap: 1.75rem clamp(1.25rem, 2.5vw, 2rem); }
.quick-card { position: relative; display: flex; flex-direction: column; gap: .25rem; padding-top: 1rem; border-top: 1px solid var(--rule); color: var(--text); }
.quick-card:hover { color: var(--text); }
.quick-card::before { content: ""; position: absolute; left: 0; right: 0; top: -2px; height: 3px; background: var(--clay); transform: scaleX(0); transform-origin: left; transition: transform .5s cubic-bezier(.45, 0, .2, 1); }
.quick-card:hover::before, .quick-card:focus-visible::before { transform: scaleX(1); }
.quick-card__label { font-family: var(--font-display); font-size: 1.5rem; line-height: 1.15; letter-spacing: -.012em; color: var(--ink); font-variation-settings: "opsz" 48, "SOFT" 100, "WONK" 1; transition: color .2s ease; }
.quick-card:hover .quick-card__label { color: var(--clay-dark); }
.quick-card__sub { font-size: .92rem; color: var(--muted); overflow-wrap: anywhere; }
.contact-layout { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; }
.contact-layout > :first-child { padding-right: var(--inset); }
.contact-layout > :last-child { padding-left: var(--inset); }
@media (max-width: 900px) {
  .contact-layout { grid-template-columns: 1fr; gap: 2rem; }
  .contact-layout > :first-child { padding-right: 0; }
  .contact-layout > :last-child { padding-left: 0; }
}
.detail-list { list-style: none; }
.detail-list li { display: grid; grid-template-columns: auto 1fr; gap: .9rem; align-items: start; padding: 1rem 0; border-top: 1px solid var(--rule); }
.detail-list li:last-child { border-bottom: 1px solid var(--rule); }
.detail-list .icon { width: 1.25rem; height: 1.25rem; margin-top: .25rem; color: var(--clay-dark); }
.detail-list strong { display: block; color: var(--ink); font-weight: 600; margin-bottom: .1rem; }
.detail-list p, .detail-list address { margin: 0; color: var(--text); }
.area-note { margin-top: 2.25rem; padding-top: 1rem; border-top: 1px solid var(--rule); }
.area-note h3 { font-size: 1.35rem; margin-bottom: .6em; }
.area-note p { margin: 0 0 .5rem; font-size: .96rem; }
.area-note strong { font-weight: 600; color: var(--ink); }
.form-card { padding: clamp(1.5rem, 3vw, 2.5rem); background: #fff; border-left: 1px solid var(--rule); border-right: 1px solid var(--rule); border-bottom: 1px solid var(--rule); }
.form-card > h2 { font-size: 1.9rem; }
.notice { display: flex; gap: .7rem; align-items: flex-start; padding: .15rem 0 .15rem 1rem; border-left: 3px solid var(--clay); color: var(--text); font-size: .94rem; }
.notice .icon { flex: none; font-size: 1.25rem; margin-top: .1rem; color: var(--clay-dark); }
.notice p { margin: 0; color: inherit; }
.notice strong { color: var(--ink); }
.notice--mint { border-left-color: var(--teal); }
.notice--mint .icon { color: var(--teal); }

/* Forms plugin — the theme's look for .wn-form */
.wn-form { --wnf-accent: var(--teal); --wnf-accent-text: #fff; --wnf-radius: 10px; --wnf-border: var(--line); }
.wn-form label, .wn-form legend { font-weight: 600; color: var(--ink); }
.wn-form input[type="text"], .wn-form input[type="email"], .wn-form input[type="tel"], .wn-form input[type="url"], .wn-form input[type="number"], .wn-form input[type="date"], .wn-form select, .wn-form textarea {
  font: inherit; width: 100%; padding: .8rem .95rem; border: 1.5px solid var(--line); border-radius: 10px; background: #fff; color: var(--ink);
  transition: border-color .2s ease, box-shadow .2s ease;
}
.wn-form input:focus, .wn-form select:focus, .wn-form textarea:focus { outline: none; border-color: var(--teal); box-shadow: 0 0 0 3px rgba(34, 112, 106, .38); }
.wn-form .wn-form__submit, .wn-form button[type="submit"] {
  display: inline-flex; align-items: center; justify-content: center; padding: .95rem 1.7rem; border-radius: var(--radius-pill);
  background: var(--clay-dark); color: #fff; border: 1.5px solid var(--clay-dark); font-weight: 600; font-size: 1rem; box-shadow: 0 6px 16px rgba(168, 74, 45, .25);
  transition: background .2s ease, box-shadow .2s ease;
}
.wn-form .wn-form__submit:hover, .wn-form button[type="submit"]:hover { background: var(--clay-deep); border-color: var(--clay-deep); }
.wn-form .wn-form__success { padding: 1.5rem; border-radius: var(--radius); background: var(--mint); color: var(--pine); font-weight: 500; }

/* ---------------------------------------------------------------------------
   Footer
   --------------------------------------------------------------------------- */
.site-footer { background: var(--pine); color: #c9dad5; margin-top: auto; }
.site-footer a { color: #e6efec; }
.site-footer a:hover { color: var(--peach); }
.site-footer__top { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 1.25rem 3rem; padding-top: clamp(2.25rem, 4vw, 3rem); padding-bottom: 1.5rem; }
.site-footer__links ul, .site-footer__legal { list-style: none; display: flex; flex-wrap: wrap; gap: .35rem 1.5rem; margin: 0; }
.site-footer__links a, .site-footer__legal a { display: inline-block; padding-block: .2rem; }
.site-footer__reg { font-size: .86rem; color: #a9bfb9; max-width: 52rem; margin: 0 0 1.5rem; }
.site-footer__reg a { text-decoration: underline; text-underline-offset: .15em; }
.site-footer__base { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: .5rem 1.5rem; padding-top: 1.1rem; padding-bottom: 1.4rem; border-top: 1px solid var(--line-dark); font-size: .86rem; color: #a9bfb9; }
.site-footer__base p { margin: 0; }

/* ---------------------------------------------------------------------------
   404
   --------------------------------------------------------------------------- */
.not-found { text-align: center; padding: clamp(4rem, 10vw, 8rem) var(--gutter); max-width: 38rem; margin: 0 auto; }
.not-found__num { font-family: var(--font-display); font-size: clamp(5rem, 14vw, 9rem); line-height: 1; color: var(--teal-soft); margin: 0 0 .1em; font-variation-settings: "opsz" 144, "SOFT" 100; }
.not-found .actions { justify-content: center; }

/* ---------------------------------------------------------------------------
   Reveal
   --------------------------------------------------------------------------- */
.reveal { opacity: 0; transform: translateY(18px); transition: opacity .6s ease var(--delay, 0ms), transform .6s cubic-bezier(.2,.8,.2,1) var(--delay, 0ms); }
.reveal.is-revealed { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
  .reveal { opacity: 1; transform: none; transition: none; }
  html { scroll-behavior: auto; }
  /* Safety net for anything below without its own rule: end states, no motion. */
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}

/* ---------------------------------------------------------------------------
   Mobile service: where we visit, how a home visit works
   --------------------------------------------------------------------------- */
.home-visit { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: center; }
.home-visit > div:first-child { padding-right: var(--inset); }
.home-visit > div:last-child { padding-left: var(--inset); }
.perks { list-style: none; }
.perks li { padding: 1.3rem 0; border-top: 1px solid rgba(22, 63, 59, .2); }
.perks li:last-child { border-bottom: 1px solid rgba(22, 63, 59, .2); }
.perks strong { display: block; margin-bottom: .3rem; font-family: var(--font-display); font-size: clamp(1.4rem, 2.1vw, 1.7rem); font-weight: 400; line-height: 1.15; letter-spacing: -.012em; color: var(--ink); font-variation-settings: "opsz" 60, "SOFT" 100, "WONK" 1; }
.perks p { margin: 0; font-size: 1rem; line-height: 1.5; color: var(--text); }
@media (max-width: 860px) {
  .home-visit { grid-template-columns: 1fr; gap: 2rem; }
  .home-visit > div:first-child, .home-visit > div:last-child { padding: 0; }
}

/* ---------------------------------------------------------------------------
   Home hero: the route map (include/hero-route.php)
   --------------------------------------------------------------------------- */
.route-hero { position: relative; overflow: hidden; background: var(--cream); }
.route-hero__inner { display: grid; grid-template-columns: minmax(0, .92fr) minmax(0, 1.08fr); gap: clamp(1rem, 3vw, 2.5rem); }
.route-hero__text { position: relative; z-index: 2; align-self: center; padding: clamp(2.5rem, 5vw, 4rem) 0 clamp(4rem, 7vw, 6rem); }
.route-hero__title {
  font-size: clamp(2.8rem, 5.5vw, 4.5rem); font-weight: 400; line-height: 1.02; letter-spacing: -.028em; margin-bottom: .45em;
  font-variation-settings: "opsz" 144, "SOFT" 100, "WONK" 1;
}
.route-hero__title em { color: var(--clay-dark); font-weight: 400; }
.route-hero__text .lede { max-width: 33rem; }

.route-hero__map { position: relative; align-self: end; margin-right: calc(var(--gutter) * -1); padding-top: 1.25rem; }
.rmap { display: block; width: 100%; height: auto; overflow: visible; }
.rmap stop { stop-color: var(--sand-2); }
.rmap__road { fill: none; stroke: url(#rmap-road); stroke-width: 4; stroke-linecap: round; }
.rmap__inland { fill: var(--sage); opacity: .55; }
.rmap__lake { fill: var(--pine); }
.rmap__ripple { fill: none; stroke: var(--sage); stroke-width: 1; stroke-opacity: var(--o); }
.rmap__water { font-family: var(--font-display); font-style: italic; }
.rmap__water--lake { fill: var(--sage); font-size: 27px; letter-spacing: .14em; font-variation-settings: "opsz" 60, "SOFT" 100, "WONK" 1; }
.rmap__shield rect { fill: var(--cream); stroke: var(--sand-2); stroke-width: 1.5; }
.rmap__shield text { font-family: var(--font-sans); font-size: 12.5px; font-weight: 600; fill: var(--muted); }

.rmap__arc { fill: none; stroke-linecap: round; }
.rmap__arc--core { stroke: var(--clay); stroke-width: 3; animation: rmap-draw .9s cubic-bezier(.45, 0, .2, 1) backwards; animation-delay: calc(var(--i) * 130ms + 250ms); }
.rmap__arc--extended { stroke: var(--pine-2); stroke-width: 2; stroke-dasharray: .5 8; animation: rmap-fade .7s ease backwards; animation-delay: calc(var(--i) * 90ms + 800ms); }
.rmap__town circle { transform-box: fill-box; transform-origin: center; animation: rmap-pop .4s cubic-bezier(.2, 1.5, .4, 1) backwards; animation-delay: calc(var(--i) * 130ms + 900ms); }
.rmap__town--core circle { fill: var(--clay); stroke: var(--cream); stroke-width: 3; }
.rmap__town--extended circle { fill: var(--cream); stroke: var(--pine-2); stroke-width: 2.25; }
.rmap__label { font-family: var(--font-sans); font-size: 16px; font-weight: 600; fill: var(--ink); paint-order: stroke; stroke: var(--cream); stroke-width: 5px; stroke-linejoin: round; }
.rmap__town--extended .rmap__label { font-weight: 500; fill: var(--muted); }
.rmap__label--base { font-family: var(--font-display); font-size: 25px; font-weight: 500; font-variation-settings: "opsz" 40, "SOFT" 100, "WONK" 1; }
.rmap__sub { font-family: var(--font-sans); font-size: 13px; font-weight: 500; fill: var(--clay-dark); paint-order: stroke; stroke: var(--cream); stroke-width: 4px; stroke-linejoin: round; }
.rmap__base-dot { fill: var(--pine); }
.rmap__base-ring { fill: var(--clay); opacity: .16; }
.rmap__base-house { fill: none; stroke: #fff; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
@keyframes rmap-draw { from { stroke-dasharray: 1; stroke-dashoffset: 1; } to { stroke-dasharray: 1; stroke-dashoffset: 0; } }
@keyframes rmap-fade { from { opacity: 0; } }
@keyframes rmap-pop { from { transform: scale(0); } }

.route-hero__legend { position: absolute; top: 2.25rem; right: var(--gutter); font-size: .88rem; color: var(--text); }
.route-hero__legend-title { font-family: var(--font-display); font-size: 1.15rem; color: var(--ink); margin: 0 0 .4rem; font-variation-settings: "opsz" 30, "SOFT" 100, "WONK" 1; }
.route-hero__legend ul { list-style: none; display: grid; gap: .2rem; margin-bottom: .45rem; }
.route-hero__legend li { display: flex; align-items: center; gap: .55rem; }
.route-hero__legend a { display: inline-flex; align-items: center; gap: .35rem; font-weight: 600; }
.route-hero__key { flex: none; width: 1.6rem; height: 0; border-top: 3px solid var(--clay); border-radius: 2px; }
.route-hero__key--extended { border-top: 3px dotted var(--pine-2); }

.route-hero__map--framed { margin-right: 0; padding-top: 0; border: 1px solid var(--rule); }
.route-hero__map--framed .rmap { overflow: hidden; }
.route-hero__map--framed .route-hero__legend { top: .9rem; right: .9rem; }
.route-hero__map--framed .rmap__label { font-size: 21px; stroke-width: 6px; }
.route-hero__map--framed .rmap__label--base { font-size: 31px; }
.route-hero__map--framed .rmap__sub { font-size: 18px; }
.route-hero__map--framed .rmap__water--lake { font-size: 32px; }
.route-hero__map--framed .rmap__shield { display: none; }

.route-hero__lake { position: relative; z-index: 2; background: var(--pine); color: #cfe0db; }
.route-hero__facts { list-style: none; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)) minmax(0, 1.3fr); gap: 1.25rem 2rem; padding-top: 1.35rem; padding-bottom: 1.6rem; }
.route-hero__facts li + li { border-left: 1px solid var(--line-dark); padding-left: 2rem; }
.route-hero__facts strong { display: block; color: #fff; font-weight: 600; font-size: .98rem; line-height: 1.3; }
.route-hero__facts span { font-size: .9rem; }
.route-hero__facts a { color: var(--peach); text-decoration: underline; text-underline-offset: .15em; }
.route-hero__facts a:hover { color: #fff; }

@media (max-width: 1040px) {
  .route-hero__facts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .route-hero__facts li + li { border-left: 0; padding-left: 0; }
}
@media (max-width: 860px) {
  .route-hero__inner { grid-template-columns: 1fr; gap: 0; }
  .route-hero__text { padding: 2.25rem 0 1.25rem; }
  .route-hero__map:not(.route-hero__map--framed) { margin-left: calc(var(--gutter) * -1); padding-top: 3.5rem; }
  .route-hero__legend { top: .5rem; }
  .rmap__label { font-size: 21px; stroke-width: 6px; }
  .rmap__label--base { font-size: 31px; }
  .rmap__sub { font-size: 18px; }
  .rmap__water--lake { font-size: 32px; }
  .rmap__shield { display: none; }
}
@media (max-width: 560px) { .route-hero__facts { grid-template-columns: 1fr; gap: .9rem; } }
@media (prefers-reduced-motion: reduce) { .rmap__arc, .rmap__town circle { animation: none; } }

/* ---------------------------------------------------------------------------
   Home "step by step": stops on the route (cw_route_stops)
   Columns have no gap so each stop sits at an exact share of the list's width,
   which is what keeps the stretched line running through the markers.
   --------------------------------------------------------------------------- */
.route-stops { --mark: 2.75rem; position: relative; }
.route-stops__track { position: absolute; top: 0; left: calc(var(--mark) / 2); width: 100%; height: 110px; }
.route-stops__track.reveal { opacity: 1; transform: none; transition: none; }
.route-stops__track svg { display: block; width: 100%; height: 100%; overflow: visible; clip-path: inset(-40px 100% -40px -100vw); transition: clip-path 1.7s cubic-bezier(.45, 0, .2, 1); }
.route-stops__track.is-revealed svg { clip-path: inset(-40px -100vw -40px -100vw); }
.route-stops__road, .route-stops__line { fill: none; stroke-linecap: round; }
.route-stops__road { stroke: var(--sand-2); stroke-width: 11; }
.route-stops__line { stroke: var(--clay); stroke-width: 3; }

.route-stops__list { position: relative; list-style: none; display: grid; grid-template-columns: repeat(var(--stops), minmax(0, 1fr)); }
.route-stops__list li { position: relative; padding: calc(var(--y) * 1px - var(--mark) / 2) 1.9rem 0 0; }
.route-stops__mark {
  position: relative; z-index: 1; display: grid; place-items: center; width: var(--mark); height: var(--mark); margin-bottom: 1.2rem;
  border-radius: 50%; background: var(--pine); color: #fff; box-shadow: 0 0 0 7px rgba(199, 93, 61, .16);
  font-family: var(--font-display); font-size: 1.25rem; line-height: 1; font-variation-settings: "opsz" 40, "SOFT" 100, "WONK" 1;
}
.route-stops__list h3 { font-size: 1.35rem; line-height: 1.2; margin-bottom: .4em; font-variation-settings: "opsz" 24, "SOFT" 100, "WONK" 1; }
.route-stops__list p { margin: 0; color: var(--text); font-size: .98rem; }

@media (max-width: 860px) {
  .route-stops__track { display: none; }
  .route-stops__list { grid-template-columns: 1fr; }
  .route-stops__list li { padding: 0 0 2.25rem calc(var(--mark) + 1.15rem); }
  .route-stops__list li:last-child { padding-bottom: 0; }
  .route-stops__list li::before { content: ""; position: absolute; top: 0; bottom: 0; left: calc(var(--mark) / 2 - 1.5px); width: 3px; background: var(--clay); box-shadow: 0 0 0 4px var(--sand-2); }
  .route-stops__list li:last-child::before { bottom: auto; height: calc(var(--mark) / 2); }
  .route-stops__mark { position: absolute; left: 0; top: 0; margin: 0; }
}
@media (prefers-reduced-motion: reduce) { .route-stops__track svg { clip-path: none; transition: none; } }

/* ---------------------------------------------------------------------------
   Home "we can / we can't": a two-tone spread split by the route line.
   The colour change sits at the page's exact centre, as does the .wrap's
   column boundary, so the line and the text columns always agree. Subgrid
   keeps each row's rule level on both sides of the line.
   --------------------------------------------------------------------------- */
.limits-spread { padding-top: clamp(3.5rem, 7vw, 6rem); background: var(--cream); }
.limits-spread__intro { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); padding-bottom: clamp(2.5rem, 5vw, 4rem); }
.limits-spread__intro > div:first-child { padding-right: var(--inset); }
.limits-spread__intro > div:last-child { padding-left: var(--inset); }
.limits-spread__intro h2 { margin-bottom: 0; }
.limits-spread__intro .actions { margin-top: 1.25rem; }
.limits-spread__intro .scope-note { margin-top: 1.25rem; padding: 0; background: none; font-size: .9rem; color: var(--muted); }

.limits-spread__split { background: linear-gradient(90deg, var(--cream) 50%, var(--pine) 50%); }
.limits-spread__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.limits-spread__grid--level { grid-template-rows: auto repeat(4, auto); }
.limits-spread__grid.reveal { opacity: 1; transform: none; transition: none; }
.limits-spread__grid--level .limits-spread__side { display: grid; grid-row: 1 / span 5; grid-template-rows: subgrid; }
.limits-spread__side { position: relative; padding-top: clamp(3rem, 6vw, 4.75rem); padding-bottom: clamp(3rem, 6vw, 4.75rem); --rule: rgba(22, 63, 59, .18); }
.limits-spread__side--can { padding-right: var(--inset); }
.limits-spread__side--cannot { padding-left: var(--inset); color: #e6efec; --rule: var(--line-dark); }
.limits-spread__side h3 {
  font-size: clamp(2rem, 3.6vw, 3rem); font-weight: 400; line-height: 1.05; letter-spacing: -.024em; margin: 0 0 .6em;
  font-variation-settings: "opsz" 144, "SOFT" 100, "WONK" 1;
}
.limits-spread__grid--level h3 { font-size: clamp(2.8rem, 5.4vw, 4.4rem); line-height: 1; letter-spacing: -.028em; margin-bottom: .5em; }
.limits-spread__side--cannot h3 { color: #fff; }
.limits-spread__side ul { list-style: none; }
.limits-spread__grid--level ul { display: grid; grid-row: span 4; grid-template-rows: subgrid; }
.limits-spread__side li { padding: 1.05rem 0; border-top: 1px solid var(--rule); font-size: 1.08rem; line-height: 1.45; }
.limits-spread__side li:last-child { border-bottom: 1px solid var(--rule); }
.limits-spread__foot { margin: 1.25rem 0 0; font-size: .92rem; line-height: 1.5; color: #cfe0db; }

.limits-spread__side--cannot::before { content: ""; position: absolute; top: 0; bottom: 0; left: -1.5px; width: 3px; background: var(--clay); transform: scaleY(0); transform-origin: top; transition: transform 1.2s cubic-bezier(.45, 0, .2, 1); }
.limits-spread__grid.is-revealed .limits-spread__side--cannot::before { transform: none; }
.limits-spread__mark {
  position: absolute; z-index: 1; top: 0; left: 0; transform: translate(-50%, -50%); padding: .4rem 1rem; white-space: nowrap;
  border-radius: var(--radius-pill); background: var(--clay-dark); color: #fff;
  font-family: var(--font-display); font-style: italic; font-size: 1rem; line-height: 1.2; font-variation-settings: "opsz" 24, "SOFT" 100, "WONK" 1;
}

@media (max-width: 860px) {
  .limits-spread__intro { grid-template-columns: 1fr; gap: 1rem; }
  .limits-spread__intro > div:first-child, .limits-spread__intro > div:last-child { padding: 0; }
  .limits-spread__split { background: var(--cream); }
  .limits-spread__grid, .limits-spread__grid--level { grid-template-columns: 1fr; grid-template-rows: none; }
  .limits-spread__grid--level .limits-spread__side { display: block; grid-row: auto; }
  .limits-spread__grid--level ul { display: block; }
  .limits-spread__side--can { padding-right: 0; padding-top: 1rem; }
  .limits-spread__side--cannot { margin: 0 calc(var(--gutter) * -1); padding: 3.5rem var(--gutter) 3.25rem; background: var(--pine); }
  .limits-spread__side--cannot::before { top: -1.5px; bottom: auto; left: 0; right: 0; width: auto; height: 3px; transform: scaleX(0); transform-origin: left; }
  .limits-spread__mark { left: 50%; }
}
@media (prefers-reduced-motion: reduce) { .limits-spread__side--cannot::before { transform: none; transition: none; } }

/* ---------------------------------------------------------------------------
   Home fees: a printed price list (cw_fee_sheet), then the small print.
   The list hangs from the route line; the leaders use the map's dotted line.
   --------------------------------------------------------------------------- */
.fee-sheet { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; }
.fee-sheet__intro { padding-right: var(--inset); }
.fee-sheet__intro h2 { margin-bottom: .5em; }
.fee-sheet > .fee-sheet__list { margin-left: var(--inset); }
.fee-sheet__list { position: relative; list-style: none; padding: .6rem 0 .4rem; border-top: 3px solid var(--clay); border-bottom: 1px solid rgba(22, 63, 59, .18); }
.fee-sheet__list::before { content: ""; position: absolute; left: -5px; top: -7.5px; width: 12px; height: 12px; border-radius: 50%; background: var(--clay); }
.fee-sheet__list li { padding: 1.05rem 0; }
.fee-sheet__line { display: flex; align-items: baseline; align-items: last baseline; gap: .6rem; }
.fee-sheet__label, .fee-sheet__price { font-family: var(--font-display); font-size: clamp(1.4rem, 2.1vw, 1.75rem); line-height: 1.15; letter-spacing: -.012em; font-variation-settings: "opsz" 60, "SOFT" 100, "WONK" 1; }
.fee-sheet__label { flex: 0 1 auto; min-width: 0; color: var(--ink); }
.fee-sheet__leader { flex: 1 1 1.5rem; min-width: 1.5rem; border-bottom: 2px dotted rgba(22, 63, 59, .38); transform: translateY(-.25em); }
.fee-sheet__price { flex: none; color: var(--pine); white-space: nowrap; }
.fee-sheet__price small { font-family: var(--font-sans); font-size: .82rem; letter-spacing: 0; color: var(--muted); }
.fee-sheet__note { margin: .3rem 4.5rem 0 0; font-size: .92rem; line-height: 1.45; color: var(--muted); }

.fee-small { margin-top: clamp(3rem, 5vw, 4.5rem); }
.fee-small h3 { font-size: 1.25rem; margin-bottom: .9rem; font-variation-settings: "opsz" 30, "SOFT" 100, "WONK" 1; }
.fee-small ul { list-style: none; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); }
.fee-small li { padding: 0 1.5rem; font-size: .92rem; line-height: 1.5; }
.fee-small li:first-child { padding-left: 0; }
.fee-small li + li { border-left: 1px solid rgba(22, 63, 59, .18); }

@media (max-width: 1000px) {
  .fee-small ul { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.25rem 0; }
  .fee-small li:nth-child(odd) { padding-left: 0; border-left: 0; }
}
@media (max-width: 860px) {
  .fee-sheet { grid-template-columns: 1fr; gap: 2rem; }
  .fee-sheet__intro { padding-right: 0; }
  .fee-sheet > .fee-sheet__list { margin-left: 0; }
  .fee-sheet__note { margin-right: 0; }
}
@media (max-width: 560px) {
  .fee-small ul { grid-template-columns: 1fr; gap: .9rem; }
  .fee-small li, .fee-small li + li { padding: 0; border-left: 0; }
}

/* ---------------------------------------------------------------------------
   Home "why Choice Wellness": one large statement, then its reasons
   --------------------------------------------------------------------------- */
.why { }
.why__head h2 { max-width: 19em; margin-bottom: 0; font-size: clamp(2.4rem, 5.2vw, 4.3rem); line-height: 1.05; letter-spacing: -.026em; font-variation-settings: "opsz" 144, "SOFT" 100, "WONK" 1; }
.why__body { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); margin-top: clamp(1.75rem, 3.5vw, 3rem); }
.why__body > p { margin: 0; padding-right: var(--inset); }
.why__body > div { padding-left: var(--inset); }
.why__body > div p { margin-bottom: 1.25rem; }
.why__values { list-style: none; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1.75rem clamp(1.25rem, 2.5vw, 2rem); margin-top: clamp(2.5rem, 5vw, 4rem); }
.why__values li { padding-top: 1rem; border-top: 1px solid rgba(22, 63, 59, .22); }
.why__values h3 { margin-bottom: .35em; font-size: 1.35rem; line-height: 1.2; font-weight: 400; font-variation-settings: "opsz" 40, "SOFT" 100, "WONK" 1; }
.why__values p { margin: 0; font-size: .96rem; line-height: 1.5; color: var(--text); }
.why__values a { text-decoration: underline; text-underline-offset: .15em; }
@media (max-width: 1000px) { .why__values { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 860px) {
  .why__body { grid-template-columns: 1fr; gap: 1rem; }
  .why__body > p { padding-right: 0; }
  .why__body > div { padding-left: 0; }
}
@media (max-width: 560px) { .why__values { grid-template-columns: 1fr; gap: 1.1rem; } }

/* ---------------------------------------------------------------------------
   Photos (cw_photo): a wide band under a page opening or at the top of a
   section. Square corners, no frame, like the rest of the ruled layout.
   On phones the band crops to 3:2 from the centre so it isn't a sliver.
   --------------------------------------------------------------------------- */
.photo-band img { display: block; width: 100%; height: auto; background: var(--sand-2); }
.photo-band--after-hero { margin-top: clamp(2rem, 4vw, 3rem); }
.photo-band--in-section { margin-bottom: clamp(2.5rem, 5vw, 4rem); }
@media (max-width: 700px) { .photo-band img { aspect-ratio: 3 / 2; object-fit: cover; } }
