:root {
  --fir: #203f36;
  --celadon: #dfe8da;
  --chalk: #f5f6ef;
  --leaf: #b8c9a9;
  --pine: #53645b;
  --rule: #a7b4a5;
  --gutter: 48px;
  --serif: 'Fraunces', Georgia, serif;
  --sans: 'Source Sans 3', sans-serif;
  color-scheme: light;
  font-family: var(--sans);
  color: var(--fir);
  background: var(--chalk);
  font-synthesis: none;
}
* { box-sizing: border-box; }
body { margin: 0; font-size: 20px; line-height: 1.55; }
::selection { color: var(--chalk); background: var(--fir); }
a { color: inherit; text-underline-offset: .2em; text-decoration-thickness: 1px; touch-action: manipulation; -webkit-tap-highlight-color: var(--leaf); }
a:hover { text-decoration-thickness: 2px; }
a:focus-visible { outline: 3px solid currentColor; outline-offset: 5px; border-radius: 2px; }
section, main, h1, h2 { scroll-margin-top: 24px; }
p { margin: 0 0 24px; }
p:last-child { margin-bottom: 0; }
h1, h2, h3 { font-family: var(--serif); font-weight: 500; line-height: 1.1; margin: 0; letter-spacing: -.035em; text-wrap: balance; }
h1 { font-size: clamp(72px, 7.3vw, 104px); }
h2 { font-size: clamp(40px, 4vw, 56px); margin-bottom: 32px; }
h3 { font-size: 32px; letter-spacing: -.025em; }
figure, blockquote { margin: 0; }
address { font-style: normal; font-weight: 600; margin: 32px 0 16px; }
.wrap { width: min(100% - var(--gutter) * 2, 1280px); margin-inline: auto; }
.section { padding-block: 96px; }
.skip-link { position: absolute; z-index: 10; top: 8px; left: 8px; padding: 12px 20px; color: var(--chalk); background: var(--fir); transform: translateY(-160%); }
.skip-link:focus { transform: none; }
.header { display: flex; align-items: center; justify-content: space-between; gap: 24px; min-height: 72px; border-bottom: 1px solid var(--rule); background: var(--celadon); }
body:has(.hero) { background: var(--celadon); }
main, .about, .approach-body, #rates, #schedule, .payment { background: var(--chalk); }
.wordmark { font: 500 36px/1.2 var(--serif); letter-spacing: -.05em; text-decoration: none; display: inline-flex; align-items: center; min-height: 48px; }
.header nav { display: flex; gap: 32px; }
.header nav a, .header-phone { display: inline-flex; align-items: center; min-height: 44px; text-decoration: none; }
.header nav a:hover, .header-phone:hover { text-decoration: underline; }
.header-phone { white-space: nowrap; }
.hero { background: var(--celadon); }
.hero-heading { text-align: center; padding: 16px 0 24px; }
.credential { font-size: 18px; line-height: 1.5; }
.hero-heading .credential { margin-bottom: 16px; }
.hero-lower { display: grid; grid-template-columns: 1.05fr 1fr; }
.hero-offer { grid-column: 2; grid-row: 1; padding: 32px max(48px, calc((100vw - 1280px) / 2)) 32px 48px; }
.offer-title { font: 500 36px/1.13 var(--serif); letter-spacing: -.025em; margin-bottom: 16px; max-width: 22ch; }
.hero-offer > p:not(.offer-title) { max-width: 48ch; margin-bottom: 20px; }
.actions { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 24px; }
.button { display: inline-flex; align-items: center; justify-content: center; min-height: 52px; padding: 12px 24px; background: var(--fir); color: var(--chalk); border-radius: 6px; text-decoration: none; font-weight: 600; text-align: center; line-height: 1.3; }
.button:hover { background: var(--pine); text-decoration: underline; }
.text-link { display: inline-flex; align-items: center; min-height: 48px; }
.hero-location { border-top: 1px solid var(--rule); padding-top: 16px; margin-top: 24px; font-size: 18px; }
.hero-location p { margin-bottom: 0; }
.hero-location a { display: inline-flex; align-items: center; min-height: 44px; overflow-wrap: anywhere; }
.photo-space { display: flex; flex-direction: column; justify-content: center; align-items: center; gap: 24px; text-align: center; background: var(--leaf); padding: 32px; color: var(--fir); }
.photo-space > span { font: 500 30px/1.25 var(--serif); max-width: 20ch; text-wrap: balance; }
.photo-space small { font-size: 16px; }
.hero-photo { grid-column: 1; grid-row: 1; min-height: 400px; }
.about { display: grid; grid-template-columns: 7fr 4fr; gap: clamp(48px, 6vw, 96px); align-items: center; }
.about-copy { max-width: 65ch; }
.about .credential { margin-top: -8px; margin-bottom: 32px; }
.portrait { aspect-ratio: 3/4; width: 100%; }
.approach-intro { background: var(--celadon); padding-block: 64px; }
.approach-intro h2 { font-size: 30px; margin-bottom: 32px; }
.statement { font: 500 clamp(40px, 4.6vw, 64px)/1.13 var(--serif); letter-spacing: -.035em; max-width: 31ch; text-wrap: balance; }
.approach-body { display: grid; grid-template-columns: 1fr 1fr; gap: 64px; padding-block: 48px 0; }
.section-heading { display: flex; gap: 32px; align-items: center; justify-content: space-between; margin-bottom: 32px; }
.section-heading h2 { margin-bottom: 0; }
.rate-row { display: grid; grid-template-columns: 1.4fr 1fr; gap: 64px; padding: 32px; border-bottom: 1px solid var(--rule); }
.rate-row:first-child { background: var(--celadon); }
.rate-row h3 { margin-bottom: 12px; }
.rate-row p { margin-bottom: 0; max-width: 57ch; }
.rate-values { font-variant-numeric: tabular-nums; }
.rate-values > p:not(.availability) { display: flex; justify-content: space-between; gap: 24px; padding-block: 4px; }
.rate-values strong { font-weight: 600; white-space: nowrap; }
.rate-values .availability { margin-top: 16px; }
.schedule { display: grid; grid-template-columns: 5fr 6fr; gap: 96px; padding-top: 0; }
.schedule-panel { background: var(--celadon); padding: 40px; }
.schedule-panel ul { list-style: none; margin: 20px 0 32px; padding: 0; font-variant-numeric: tabular-nums; }
.schedule-panel ul:last-child { margin-bottom: 0; }
.schedule-panel li { padding-block: 8px; }
.schedule-panel h3:not(:first-child) { border-top: 1px solid var(--rule); padding-top: 32px; }
.studio { display: grid; grid-template-columns: 1fr 1fr; background: var(--chalk); }
.studio-image { padding: 48px; background: var(--leaf); display: flex; align-items: center; }
.studio-photo { width: 100%; aspect-ratio: 4/3; border: 1px solid var(--pine); }
.studio-copy { padding: 64px max(48px, calc((100vw - 1280px) / 2)) 64px 48px; }
.testimonials { background: var(--celadon); }
.testimonials h2 { text-align: center; margin-bottom: 64px; }
.testimonial { max-width: 900px; }
.testimonial + .testimonial { margin: 64px 0 0 auto; padding-top: 48px; border-top: 1px solid var(--rule); }
.testimonial blockquote > p:not(.pull-quote) { max-width: 64ch; }
.pull-quote { font: 500 clamp(32px, 3vw, 44px)/1.2 var(--serif); letter-spacing: -.025em; text-wrap: pretty; }
.testimonial figcaption { font-weight: 600; margin-top: 24px; }
.payment { display: grid; grid-template-columns: 4fr 7fr; gap: 96px; }
.medical-note { font-size: 18px; color: var(--pine); padding-top: 24px; border-top: 1px solid var(--rule); }
.contact, .footer { background: var(--fir); color: var(--chalk); }
.contact { padding-block: 80px; }
.contact-grid, .footer-grid { display: grid; grid-template-columns: 1.15fr 1fr; gap: 96px; }
.contact h2 { font-size: 64px; }
.contact-links { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; min-width: 0; }
.contact-links > a { display: inline-flex; align-items: center; min-height: 48px; overflow-wrap: anywhere; max-width: 100%; }
.contact-phone { font-size: 40px; text-decoration: none; font-variant-numeric: tabular-nums; }
.contact-links .button { margin-block: 16px; }
.button.light { color: var(--fir); background: var(--celadon); }
.button.light:hover { background: var(--leaf); }
.footer-grid { padding-block: 48px; border-top: 1px solid var(--pine); font-size: 18px; }
.footer .wordmark { margin-bottom: 16px; font-size: 44px; }
@media (min-width: 1440px) { .hero-offer { padding-top: 40px; padding-bottom: 40px; } }
@media (max-width: 1099px) {
  :root { --gutter: 24px; }
  .header { flex-wrap: wrap; gap: 8px 24px; padding-block: 12px; }
  .header nav { gap: 24px; }
  .header-phone { display: none; }
  .hero-offer, .studio-copy { padding: 32px 24px; }
  .offer-title { font-size: 30px; }
  .about, .schedule, .payment, .contact-grid, .footer-grid { gap: 48px; }
  .rate-row { gap: 32px; }
  .studio-image { padding: 24px; }
  .contact-phone { font-size: 32px; }
}
@media (max-width: 719px) {
  :root { --gutter: 20px; }
  body { font-size: 18px; }
  .section { padding-block: 56px; }
  h1 { font-size: clamp(44px, 12.6vw, 50px); line-height: 1.05; text-wrap: balance; }
  h2 { font-size: 36px; margin-bottom: 24px; }
  h3 { font-size: 28px; }
  .header { display: block; padding-block: 12px 8px; }
  .wordmark { font-size: 30px; }
  .header nav { justify-content: space-between; gap: 8px; font-size: 16px; }
  .header nav a { min-height: 44px; }
  .hero-heading { text-align: left; padding-block: 24px 0; }
  .hero-heading .credential { margin-bottom: 24px; }
  .desktop-break { display: none; }
  .hero-lower { display: flex; flex-direction: column; }
  .hero-offer { padding: 24px 20px 32px; }
  .offer-title { font: 400 20px/1.5 var(--sans); letter-spacing: 0; max-width: 100%; margin-bottom: 16px; }
  .hero-offer > p:not(.offer-title) { margin-bottom: 24px; }
  .actions { gap: 8px; }
  .actions .button { width: 100%; }
  .hero-location { margin-top: 16px; }
  .hero-photo { min-height: 0; aspect-ratio: 8/3; padding: 20px; }
  .photo-space { gap: 16px; }
  .photo-space > span { font-size: 26px; }
  .about, .approach-body, .schedule, .payment, .contact-grid, .footer-grid { display: grid; grid-template-columns: 1fr; gap: 32px; }
  .portrait { max-width: 360px; justify-self: center; }
  .approach-intro { padding-block: 48px; }
  .approach-intro h2 { font-size: 28px; margin-bottom: 24px; }
  .statement { font-size: 36px; }
  .approach-body { padding-top: 32px; gap: 24px; }
  .section-heading { display: block; }
  .section-heading h2 { margin-bottom: 24px; }
  .rate-row { grid-template-columns: 1fr; gap: 16px; padding: 24px 16px; }
  .rate-values > p:not(.availability) { justify-content: flex-start; }
  .rate-values span { min-width: 70px; }
  .schedule { padding-top: 0; }
  .schedule-panel { padding: 24px; }
  .studio { display: flex; flex-direction: column-reverse; }
  .studio-copy { padding: 48px 20px 32px; }
  .studio-image { padding: 24px 20px; }
  .testimonials h2 { text-align: left; margin-bottom: 32px; }
  .testimonial + .testimonial { margin-top: 40px; padding-top: 32px; }
  .pull-quote { font-size: 32px; }
  .payment h2 { margin: 0; }
  .contact { padding-block: 56px 40px; }
  .contact h2 { font-size: 44px; }
  .contact-phone { font-size: 32px; }
  .contact-links { gap: 12px; }
  .footer-grid { padding-block: 32px; }
  .footer .wordmark { font-size: 36px; }
}
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

/* Contact stays directly available when the header telephone is hidden. */
.hero-location .hero-phone { display: none; }
@media (max-width: 1099px) { .hero-location .hero-phone { display: flex; width: fit-content; } }

/* Preserve reflow when every computed font size is doubled. */
body { overflow-wrap: anywhere; }
.wordmark { max-width: 100%; }
.header nav { flex-wrap: wrap; }
.footer-grid > *, .contact-grid > *, .rate-row > * { min-width: 0; }
.rate-values > p:not(.availability) { flex-wrap: wrap; }
