/* Homepage only. The portal and ops retain the shared brand styles. */
html { scroll-behavior:smooth; scroll-padding-top:7rem; }
body { font-size:1rem; overflow-wrap:break-word; }
main { min-width:0; }
.wrap { --wrap:1180px; }
h1,h2 { text-wrap:balance; }
h2 { font-size:clamp(1.875rem,3.2vw,2.625rem); font-weight:500; line-height:1.18; }
h3 { font-size:1.5rem; font-weight:500; }
img { max-width:100%; }
figure { margin:0; }
figure img { display:block; width:100%; height:auto; }
.section { padding-block:clamp(3.5rem,6.6vw,5.5rem); }
.lede { font-size:1.0625rem; line-height:1.75; }
.small { font-size:.875rem; line-height:1.65; }
.eyebrow { font-size:.75rem; letter-spacing:.12em; }
.btn { min-height:3rem; padding:.75rem 1.5rem; font-size:.9375rem; white-space:normal; text-align:center; }
a:focus-visible,button:focus-visible,summary:focus-visible { outline:3px solid var(--accent); outline-offset:4px; }
section[tabindex="-1"]:focus,main:focus { outline:none; }
.text-link { display:inline-flex; gap:.625rem; align-items:center; min-height:3rem; font-size:.9375rem; font-weight:600; }
.skip-link { position:fixed; top:-6rem; left:1rem; padding:.75rem 1.25rem; background:var(--surface); z-index:30; }
.skip-link:focus { top:.75rem; }

/* Navigation stays available without sacrificing the primary action on phones. */
.masthead { position:sticky; top:0; z-index:20; }
.masthead .header-inner { position:relative; flex-wrap:nowrap; gap:1.5rem; padding-block:1rem; }
.masthead .logo { flex-shrink:0; }
.masthead .logo img { width:9.6875rem; height:auto; }
.masthead .desktop-nav { margin-left:auto; flex-wrap:nowrap; gap:1.5rem; }
.masthead nav a:not(.btn) { display:flex; align-items:center; min-height:2.75rem; font-size:.875rem; white-space:nowrap; }
.header-actions { display:flex; align-items:center; gap:.625rem; flex-shrink:0; }
.masthead .btn.small { min-height:2.75rem; font-size:.875rem; padding:.625rem 1.125rem; }
.mobile-menu { display:none; margin:0; padding:0; border:0; }
.mobile-menu > summary { display:flex; gap:.5rem; align-items:center; justify-content:center; min-width:2.75rem; min-height:2.75rem; padding:.625rem; border:1px solid var(--line-strong); border-radius:var(--r-pill); font-size:.875rem; }
.mobile-menu > summary::after,.mobile-menu[open] > summary::after { content:none; }
.menu-icon { width:1rem; height:.625rem; border-block:2px solid currentColor; }
.mobile-menu[open] .menu-icon { height:0; border-bottom:0; transform:rotate(-45deg); }
.mobile-menu nav { position:absolute; top:calc(100% - 1px); left:0; right:0; display:flex; flex-direction:column; align-items:stretch; gap:0; padding:.75rem 1.5rem 1.25rem; background:var(--bg); border-bottom:1px solid var(--line-strong); box-shadow:0 16px 24px -20px rgba(22,20,29,.25); max-height:70vh; overflow:auto; }
.masthead .mobile-menu nav a { min-height:3.25rem; border-bottom:1px solid var(--line); }

.hero { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); align-items:center; gap:2.125rem; padding-block:3.75rem 4.75rem; }
.hero h1 { font-size:clamp(2.625rem,5.1vw,4rem); font-weight:500; line-height:1.1; letter-spacing:-.045em; }
.hero h1 > span { display:block; }
.hero-accent { color:var(--accent); }
.hero .lede { margin:1.375rem 0 .75rem; max-width:37ch; }
.hero-frequency { font-size:1rem; line-height:1.6; margin:0 0 1.5625rem; }
.hero .btn-row { gap:1.375rem; }
.hero-price { font-size:.875rem; line-height:1.6; color:var(--ink-2); margin:.875rem 0 0; }
.hero-reassurance { font-size:.875rem; color:var(--ink-2); margin:.625rem 0 0; max-width:45ch; }
.hero-copy > .eyebrow { max-width:36ch; font-size:.875rem; letter-spacing:.07em; line-height:1.6; }
.hero-art { min-width:0; }
.hero-art figcaption { text-align:center; font:italic 1.0625rem/1.5 var(--serif); color:var(--ink-2); margin-top:.5rem; }

/* Recurring visits follow the service benefits, keeping the family in the hero. */
.routine-visits { list-style:none; margin:0; padding:0; }
.routine-visits li { position:relative; display:grid; grid-template-columns:2.75rem minmax(0,1fr); gap:1rem; padding-bottom:2rem; }
.routine-visits li:last-child { padding-bottom:0; }
.routine-visits li:first-child::before { content:""; position:absolute; top:2.75rem; bottom:0; left:calc(1.375rem - .5px); width:1px; background:var(--line-strong); }
.routine-number { display:flex; align-items:center; justify-content:center; width:2.75rem; height:2.75rem; border:1px solid var(--accent-line); border-radius:50%; background:var(--bg-alt); color:var(--accent); font-size:.875rem; }
.routine-visits .routine-label { font-size:.875rem; color:var(--accent); font-weight:500; margin:0 0 .375rem; }
.routine-visits h3 { font-size:1.5rem; line-height:1.3; }
.routine-visits p { font-size:1rem; line-height:1.65; color:var(--ink-2); margin:.5rem 0 0; }

.benefits-section { background:var(--surface); border-block:1px solid var(--line); }
.section-heading { max-width:44rem; margin-bottom:2.5rem; }
.section-heading .lede { margin:1rem 0 0; }
.benefits { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:2.75rem; }
.benefits-section .section { padding-block:2.5rem; }
.benefits-heading { display:flex; align-items:baseline; justify-content:space-between; flex-wrap:wrap; gap:.75rem 2rem; max-width:none; margin-bottom:2rem; }
.benefits-heading .eyebrow { font-size:.875rem; margin:0; }
.benefits-heading h2 { font-size:1.875rem; }
.benefit-icon { display:inline-flex; align-items:center; justify-content:center; width:2.75rem; height:2.75rem; background:var(--accent-soft); border-radius:.75rem; margin-bottom:.75rem; }
.benefit-icon img { display:block; width:1.5rem; height:1.5rem; }
.benefit h3 { margin-bottom:.75rem; }
.benefit p { font-size:1rem; line-height:1.7; color:var(--ink-2); margin:0; max-width:34ch; }

.story-section { background:var(--bg-alt); }
.story { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:4.375rem; align-items:center; }
.story h2 { white-space:pre-line; }
.story .lede { margin:1.375rem 0 0; }

/* Disclosure rows put the area first and its detail immediately underneath. */
.panel-layout { display:grid; grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr); gap:4.5rem; align-items:start; }
.panel-copy .lede { margin:1.25rem 0; }
.panel-facts { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1.5rem; margin:1.75rem 0 2rem; padding-block:1.25rem; border-block:1px solid var(--line-strong); }
.panel-facts dt { font-size:.875rem; color:var(--ink-2); }
.panel-facts dd { margin:.4rem 0 0; font-size:.875rem; color:var(--ink-2); }
.panel-facts strong { color:var(--accent); font:2.625rem var(--serif); margin-right:.25rem; }
.continuity-note h3 { font-size:1.1875rem; }
.continuity-note p { margin:.75rem 0 0; font-size:1rem; line-height:1.7; color:var(--ink-2); }
.panel-explorer { min-width:0; border:var(--surface-border); border-radius:var(--surface-radius); background:var(--surface); box-shadow:var(--surface-shadow); }
.explorer-heading { padding:1.5rem 1.75rem; }
.explorer-heading h3 { font-size:1.375rem; }
.explorer-heading p { margin:.5rem 0 0; color:var(--ink-2); font-size:.875rem; }
.marker-group { padding:0; border:0; border-top:1px solid var(--line); }
.marker-group > summary { display:grid; grid-template-columns:minmax(0,1fr) auto 1.25rem; align-items:center; gap:.75rem; min-height:3.875rem; padding:1rem 1.75rem; font-size:1rem; font-weight:500; }
.marker-group > summary::after,.marker-group[open] > summary::after,.faq-item > summary::after,.faq-item[open] > summary::after { content:none; }
.marker-group > summary:hover,.faq-item > summary:hover { background:var(--bg-alt); }
.marker-group[open] { background:var(--accent-soft); }
.marker-count { color:var(--ink-2); font-size:.875rem; font-weight:400; white-space:nowrap; }
.disclosure-icon { display:block; position:relative; width:1.25rem; height:1.25rem; color:var(--accent); flex-shrink:0; }
.disclosure-icon::before,.disclosure-icon::after { content:""; position:absolute; left:3px; right:3px; top:calc(50% - 1px); height:2px; background:currentColor; }
.disclosure-icon::after { transform:rotate(90deg); }
details[open] > summary .disclosure-icon::after { transform:rotate(0); }
.marker-body { padding:0 1.75rem 1.5rem; }
.marker-body p { margin:0 0 1rem; font-size:1rem; line-height:1.65; }
.marker-body ul { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); column-gap:1rem; row-gap:.5rem; padding:0; margin:0; list-style:none; }
.marker-body li { font-size:.875rem; color:var(--ink-2); padding-left:.875rem; position:relative; }
.marker-body li::before { content:""; position:absolute; left:0; top:.65em; width:4px; height:4px; border-radius:50%; background:var(--accent); }
.panel-footnote { font-size:.8125rem; line-height:1.65; color:var(--ink-2); padding:1.125rem 1.75rem; margin:0; border-top:1px solid var(--line); }

.consent-band { background:var(--accent-soft); border-block:1px solid var(--accent-line); }
.consent { display:flex; align-items:center; gap:3.25rem; padding-block:1.625rem; }
.consent img { width:12.5rem; height:auto; flex-shrink:0; }
.consent h2 { font-size:2rem; }
.consent p { font-size:1rem; line-height:1.75; color:var(--ink-2); max-width:65ch; margin:1rem 0 0; }

.membership { display:grid; grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr); align-items:center; gap:3.25rem; padding:3.25rem; border:var(--surface-border); border-radius:var(--surface-radius); background:var(--accent-soft); box-shadow:var(--surface-shadow); }
.membership .lede { margin:1.125rem 0 1.5rem; }
.membership-includes { display:grid; gap:.75rem; list-style:none; padding:0; margin:0; }
.membership-includes li { position:relative; padding-left:1.625rem; color:var(--ink-2); font-size:1rem; }
.membership-includes li::before { content:"✓"; color:var(--accent); position:absolute; left:0; font-weight:600; }
.membership-action { border-left:1px solid var(--line); padding-left:3.25rem; }
.membership-price { display:flex; align-items:baseline; flex-wrap:wrap; gap:.75rem; margin:0; }
.membership-price strong { color:var(--ink); font:3.75rem var(--serif); letter-spacing:-.04em; }
.membership-price span { font-size:.9375rem; color:var(--ink-2); }
.membership-for { margin:.25rem 0 1.5rem; font-size:.9375rem; color:var(--ink-2); }
.membership-action .btn { width:100%; }
.availability { font-size:.875rem; margin:.75rem 0 0; color:var(--ink-2); text-align:center; }
.refund-note { font-size:.875rem; color:var(--ink-2); margin:1.5rem 0 0; padding-top:1rem; border-top:1px solid var(--accent-line); }

.faq-section { padding-top:0; border-top:0!important; }
.faq-layout { display:grid; grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr); gap:5rem; }
.faq-layout .lede { margin:1rem 0; }
.faq-list { border-top:1px solid var(--line-strong); }
.faq-item { padding:0; }
.faq-item > summary { display:flex; align-items:center; justify-content:space-between; gap:1.25rem; min-height:4.5rem; padding:1.375rem .5rem; font-size:1.0625rem; font-weight:500; }
.faq-answer { padding:0 .5rem 1.5rem; }
.faq-answer p { font-size:1rem; line-height:1.75; margin:0; }
.footer .wrap { display:flex; justify-content:space-between; align-items:start; gap:3rem; padding-block:.5rem; }
.footer-brand .logo { margin-bottom:1rem; }
.footer p { margin:0; font-size:.875rem; }
.footer .small { margin-top:.25rem; font-size:.8125rem; }
.footer nav { display:grid; grid-template-columns:repeat(2,auto); column-gap:2rem; }
.footer nav a { display:flex; align-items:center; min-height:2.75rem; color:var(--ink-2); font-size:.875rem; text-decoration:none; }
.footer nav a:hover { color:var(--accent); text-decoration:underline; }

@media(min-width:761px) and (max-width:1050px) {
  .hero h1 { font-size:3.0625rem; }
  .hero { gap:1.25rem; }
  .benefits { gap:1.75rem; }
  .panel-layout,.story,.faq-layout { gap:2rem; }
  .membership { padding:2rem; gap:2rem; }
  .membership-action { padding-left:2rem; }
}
@media(max-width:899px) {
  .masthead .desktop-nav { display:none; }
  .header-actions { margin-left:auto; }
  .mobile-menu { display:block; }
}
@media(max-width:760px) {
  .wrap { padding-inline:1.375rem; }
  .masthead .header-inner { gap:.75rem; padding-block:.75rem; }
  .masthead .logo img { width:8.25rem; }
  .hero { grid-template-columns:1fr; gap:1.75rem; padding-block:2.5rem 2.625rem; }
  .hero h1 { font-size:clamp(2.375rem,8vw,3.5rem); max-width:17ch; }
  .hero .lede { font-size:1rem; margin:1.3125rem 0 .75rem; }
  .hero-art { width:100%; max-width:28.75rem; margin-inline:auto; }
  .hero-art figcaption { font-size:1rem; }
  .section-heading { margin-bottom:1.875rem; }
  .benefits { grid-template-columns:1fr; gap:2rem; }
  .benefits-heading { flex-direction:column; align-items:start; gap:.5rem; }
  .benefit { display:grid; grid-template-columns:2.75rem minmax(0,1fr); column-gap:1rem; }
  .benefit-icon { grid-row:1/3; margin:0; }
  .benefit h3 { font-size:1.5rem; margin:0 0 .625rem; }
  .benefit p { max-width:none; }
  .story,.panel-layout,.faq-layout { grid-template-columns:1fr; gap:2rem; }
  .consent { gap:1.375rem; padding-block:2rem; }
  .consent img { width:7rem; }
  .consent h2 { font-size:1.75rem; }
  .consent p { margin-top:.75rem; }
  .membership { grid-template-columns:1fr; padding:2rem; gap:1.75rem; }
  .membership-action { border-left:0; border-top:1px solid var(--line); padding:1.75rem 0 0; }
  .membership-price strong { font-size:3.5rem; }
  .membership-action .btn { max-width:none; }
  .refund-note { margin-top:1.25rem; }
  .footer .wrap { flex-direction:column; gap:1.5rem; }
  .footer nav { width:100%; column-gap:1.25rem; }
}
@media(max-width:480px) {
  .wrap { padding-inline:1.125rem; }
  .masthead .header-inner { flex-wrap:wrap; }
  .header-actions { max-width:100%; flex-shrink:1; }
  .masthead .logo img { width:6.75rem; }
  .masthead .btn.small { padding-inline:.875rem; }
  .mobile-menu > summary > span:first-child { display:none; }
  .hero .btn-row { flex-direction:column; align-items:stretch; gap:.25rem; }
  .hero .text-link { justify-content:center; }
  .hero-price,.hero-reassurance { text-align:center; }
  .explorer-heading,.marker-group > summary { padding-inline:1rem; }
  .marker-body { padding-inline:1rem; }
  .marker-body ul { grid-template-columns:1fr; }
  .marker-count { font-size:.8125rem; }
  .panel-footnote { padding-inline:1rem; }
  .consent { flex-direction:column; align-items:start; gap:.625rem; }
  .consent img { width:10.625rem; align-self:center; }
  .membership { padding:1.5rem; }
}
@media(prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } * { transition:none!important; } }
@media(forced-colors:active) { .disclosure-icon::before,.disclosure-icon::after { background:ButtonText; } }
