/*
 * Structural styles. No literal colours, fonts, sizes or radii here —
 * everything comes from tokens.css.
 */

/* ---- Reset / base ------------------------------------------------------ */
*, *::before, *::after { box-sizing: border-box; }

html {
  scroll-padding-top: var(--header-offset); /* in-page anchors clear the sticky header */
  font-family: var(--font-body);
  line-height: var(--line-height);
  color: var(--color-text);
  background: var(--color-bg);
  -webkit-text-size-adjust: 100%;
}

body {
  margin: 0;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  font-size: var(--font-size-base);
}

img { max-width: 100%; height: auto; display: block; }

h1, h2, h3 {
  font-family: var(--font-heading);
  color: var(--color-heading);
  line-height: var(--line-height-tight);
  font-weight: var(--font-weight-heading);
  margin: 0 0 var(--space-4);
  overflow-wrap: anywhere;
}
h1 { font-size: var(--font-size-h1); line-height: var(--line-height-h1); margin-bottom: var(--space-5); }
h2 { font-size: var(--font-size-h2); margin-top: var(--space-6); }
h3 { font-size: var(--font-size-h3); margin-top: var(--space-5); }
p, ul, ol, dl { margin: 0 0 var(--space-4); }
strong { font-weight: var(--font-weight-bold); }

a { color: var(--color-link); text-decoration: underline; text-underline-offset: 0.15em; }
a:hover { color: var(--color-link-hover); }

/* Visible focus for keyboard users, on every focusable element. */
:focus-visible {
  outline: var(--focus-ring);
  outline-offset: var(--focus-offset);
  border-radius: var(--radius-sm);
}

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

/* ---- Layout ------------------------------------------------------------ */
.wrap {
  width: 100%;
  max-width: var(--wrap);
  margin-inline: auto;
  padding-inline: var(--gutter);
}

.site-main { flex: 1 0 auto; }
.site-main > .wrap:first-child:empty { display: none; }

/* Reading column for running text. */
.reading { max-width: var(--measure); margin-inline: auto; }

/* Full-width colour bands: the section is the band, .wrap sits inside.
 * Content bands alternate white and blush down every page. */
.band { padding-block: var(--band-pad); }
.band--alt { background: var(--color-band); }
.band--white { background: var(--color-surface); }
.band--first { padding-top: var(--section-pad); }
.band .prose > :last-child, .band .reading > :last-child { margin-bottom: 0; }
.band .reading > h2:first-child, .band .wrap > h2:first-child { margin-top: 0; }
.cta.band { padding-block: var(--section-pad); }

/* A body's first paragraph. */
.prose-lead { font-size: var(--font-size-lead); line-height: var(--line-height-lead); max-width: var(--measure-lead); }

/* Prose-only section beside its heading on wide screens. */
.split { display: grid; gap: var(--space-3) var(--space-7); max-width: var(--measure-wide); margin-inline: auto; }
.split__heading > * { margin: 0; }
@media (min-width: 60em) {
  .split { grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); align-items: start; }
}
.band--alt a { color: var(--color-accent-hover); }
.band--accent { background: var(--color-accent); color: var(--color-on-primary); }
.band--accent h1, .band--accent h2, .band--accent h3, .band--accent p { color: var(--color-on-primary); }
.band--accent a:not(.button) { color: var(--color-on-primary); }

/* ---- Skip link --------------------------------------------------------- */
.skip-link {
  position: absolute;
  left: var(--space-4);
  top: -100%;
  z-index: 100;
  padding: var(--space-2) var(--space-4);
  background: var(--color-primary);
  color: var(--color-on-primary);
  border-radius: var(--radius-sm);
}
.skip-link:focus { top: var(--space-4); }

/* ---- Eyebrow labels ---------------------------------------------------- */
.eyebrow {
  font-size: var(--font-size-xs);
  font-weight: var(--font-weight-bold);
  letter-spacing: var(--letter-spacing-eyebrow);
  text-transform: uppercase;
  color: var(--color-sage-text);
  margin: 0 0 var(--space-4);
}

/* ---- Buttons and arrow links ------------------------------------------- */
.button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: var(--tap-target);
  padding: var(--button-padding);
  background: var(--color-accent);
  color: var(--color-on-primary);
  border: var(--border-width) solid var(--color-accent);
  border-radius: var(--radius-pill);
  font-weight: var(--font-weight-bold);
  line-height: 1.2;
  text-align: center;
  text-decoration: none;
  transition: background var(--transition), border-color var(--transition), color var(--transition);
}
.button:hover { background: var(--color-accent-hover); border-color: var(--color-accent-hover); color: var(--color-on-primary); }
.button--secondary { background: transparent; color: var(--color-accent); }
.button--secondary:hover { background: var(--color-band); color: var(--color-accent-hover); border-color: var(--color-accent-hover); }
.button--blush { background: var(--color-blush-fill); border-color: var(--color-blush-fill); color: var(--color-text); }
.button--blush:hover { background: var(--color-surface); border-color: var(--color-surface); color: var(--color-text); }
.button--small { padding: var(--space-2) var(--space-5); min-height: var(--tap-target); }

.link-arrow {
  display: inline-flex;
  align-items: center;
  min-height: var(--tap-target);
  color: var(--color-accent);
  font-weight: var(--font-weight-bold);
  text-decoration: none;
}
.link-arrow::after { content: " \2192" / ""; margin-left: 0.35em; }
.link-arrow:hover { color: var(--color-accent-hover); text-decoration: underline; }

/* ---- Header (sticky; compacts after a little scrolling) ---------------- */
.site-header {
  position: sticky;
  top: 0;
  z-index: 50;
  background: var(--color-bg);
  border-bottom: var(--border-width) solid var(--color-border);
  transition: box-shadow var(--motion-header) ease;
}
.site-header--compact { box-shadow: var(--shadow-header); }
.site-header__inner {
  position: relative;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-3) var(--space-5);
  padding-block: var(--space-3);
  transition: padding var(--motion-header) ease;
}
.site-header--compact .site-header__inner { padding-block: var(--space-2); }
.site-logo { display: inline-flex; align-items: center; border-radius: var(--radius-sm); }
.site-logo img { height: var(--logo-height); width: auto; transition: height var(--motion-header) ease; }
.site-header--compact .site-logo img { height: var(--logo-height-compact); }
.site-nav { margin-left: auto; }
.site-nav__list, .footer-nav__list, .crisis__list, .card-list { list-style: none; margin: 0; padding: 0; }
.site-nav__list { display: flex; flex-wrap: wrap; gap: var(--space-1) var(--space-2); }
.site-nav__item > a, .site-nav__toggle {
  display: inline-flex;
  align-items: center;
  min-height: var(--tap-target);
  padding-inline: var(--space-2);
  color: var(--color-text);
  font: inherit;
  font-weight: var(--font-weight-semibold);
  text-decoration: none;
  border: 0;
  border-bottom: 2px solid transparent;
  background: none;
  cursor: pointer;
}
.site-nav__item > a:hover, .site-nav__toggle:hover { color: var(--color-accent-hover); }
.site-nav__item > a[aria-current="page"], .site-nav__toggle[aria-current="page"] {
  font-weight: var(--font-weight-bold);
  border-bottom-color: var(--color-accent);
}
.site-nav__toggle::after {
  content: "";
  display: inline-block;
  width: 0.45em;
  height: 0.45em;
  margin-left: var(--space-2);
  border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  transform: translateY(-0.15em) rotate(45deg);
  transition: transform var(--transition);
}
.site-nav__toggle[aria-expanded="true"]::after { transform: translateY(0.1em) rotate(225deg); }

/* Specialties menu: a cascade of two columns under the button. */
.site-nav__item--menu { position: relative; }
.site-nav__panel {
  display: none;
  position: absolute;
  left: 0;
  top: 100%;
  z-index: 20;
  width: var(--menu-width);
  margin-top: var(--space-1);
  padding: var(--space-2);
  background: var(--color-surface);
  border: var(--border-width) solid var(--color-border);
  border-radius: var(--radius-menu);
  box-shadow: var(--shadow-panel);
}
.site-nav__item--menu.is-open > .site-nav__panel { display: block; }
.cascade, .cascade__sub { list-style: none; margin: 0; padding: 0; }
.cascade__item { position: static; }
.cascade__link {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
  width: 100%;
  min-height: var(--tap-target);
  padding: var(--space-2) var(--space-4);
  border: 0;
  border-radius: var(--radius-md);
  background: none;
  color: var(--color-text);
  font: inherit;
  text-align: left;
  text-decoration: none;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
.cascade__link:hover { background: var(--color-band); color: var(--color-accent-hover); }
.cascade__item.is-active > .cascade__link { background: var(--color-band); color: var(--color-accent); }
.cascade__chevron { font-size: var(--font-size-lg); line-height: 1; color: var(--color-text-muted); }
.cascade__item.is-active > .cascade__link .cascade__chevron { color: currentColor; }
/* Column two: beside column one, aligned with the panel's top. */
.cascade__sub {
  display: none;
  position: absolute;
  top: 0;
  left: 100%;
  width: var(--menu-width);
  margin-left: var(--space-2);
  padding: var(--space-2);
  background: var(--color-surface);
  border: var(--border-width) solid var(--color-border);
  border-radius: var(--radius-menu);
  box-shadow: var(--shadow-panel);
}
.cascade__sub::before { content: ""; position: absolute; top: 0; bottom: 0; right: 100%; width: var(--space-2); } /* keeps the pointer "inside" across the gap */
.cascade__item.is-open > .cascade__sub { display: block; }
.cascade__sub .cascade__link { font-size: var(--font-size-sm); }
.cascade__sub li:first-child .cascade__link { font-weight: var(--font-weight-bold); }
/* Without JS: hover and keyboard focus open the columns through CSS alone. */
html:not(.js) .site-nav__item--menu:hover > .site-nav__panel,
html:not(.js) .site-nav__item--menu:focus-within > .site-nav__panel,
html:not(.js) .cascade__item:hover > .cascade__sub,
html:not(.js) .cascade__item:focus-within > .cascade__sub { display: block; }
@media (max-width: 52em) {
  .cascade__sub { left: auto; right: 100%; margin-left: 0; margin-right: var(--space-2); }
  .cascade__sub::before { right: auto; left: 100%; }
}
@keyframes menu-in {
  from { opacity: 0; transform: translateY(calc(-1 * var(--menu-slide))); }
  to   { opacity: 1; transform: none; }
}
@media (prefers-reduced-motion: no-preference) {
  .site-nav__item--menu.is-open > .site-nav__panel, .cascade__item.is-open > .cascade__sub { animation: menu-in var(--motion-menu) ease; }
}

/* Phones: logo and Book button on the first row, links in a row below; the
 * menu expands in place under that row, and each category with pages is an
 * expandable row (tap to reveal them beneath). */
@media (max-width: 39.99em) {
  .site-header__inner { justify-content: space-between; gap: var(--space-2) var(--space-3); }
  .site-logo img, .site-header--compact .site-logo img { height: var(--logo-height-sm); }
  .site-nav { order: 3; flex: 1 1 100%; margin-left: 0; }
  .site-nav__list { display: grid; grid-template-columns: repeat(4, auto); grid-auto-flow: row dense; justify-content: space-between; gap: 0; }
  .site-nav__item--menu { display: contents; }
  .site-nav__item > a, .site-nav__toggle { font-size: var(--font-size-sm); padding-inline: var(--space-1); }
  .site-nav__panel {
    grid-column: 1 / -1;
    position: static;
    width: auto;
    margin: var(--space-2) 0 var(--space-1);
    box-shadow: none;
  }
  .cascade__sub { position: static; width: auto; margin: 0 0 var(--space-2) var(--space-4); padding: 0; border: 0; box-shadow: none; }
  .cascade__sub::before { display: none; }
  .cascade__item.is-active > .cascade__link .cascade__chevron { transform: rotate(90deg); }
  .site-header__book { order: 2; }
}

/* ---- Content ----------------------------------------------------------- */
.lead { font-size: var(--font-size-lg); color: var(--color-text-muted); }
.note, .card__summary, .breadcrumb, .practitioner__title, .practitioner__pronouns { color: var(--color-text-muted); }
.hero__actions, .page__actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-3) var(--space-5);
  margin-top: var(--space-5);
}
.breadcrumb { font-size: var(--font-size-sm); margin-bottom: var(--space-3); }
.breadcrumb a { color: var(--color-text-muted); }
.breadcrumb a:hover { color: var(--color-accent-hover); }

.prose > :first-child { margin-top: 0; }
.prose a { font-weight: var(--font-weight-bold); }

/* ---- Highlights (**bold** in copy) and scroll-in motion ---------------- */
.prose strong, .faq__answer strong {
  color: var(--color-heading);
  background-image: linear-gradient(var(--color-highlight), var(--color-highlight));
  background-repeat: no-repeat;
  background-size: 100% var(--highlight-height);
  background-position: 0 92%;
  -webkit-box-decoration-break: clone;
  box-decoration-break: clone;
  padding-inline: 0.08em;
  margin-inline: -0.08em;
}
@media (prefers-reduced-motion: no-preference) {
  html.motion .sweep:not(.is-visible) { background-size: 0% var(--highlight-height); }
  html.motion .sweep.is-visible { transition: background-size var(--motion-sweep) ease-out; }
  html.motion .reveal:not(.is-visible) { opacity: 0; transform: translateY(var(--motion-rise)); }
  html.motion .reveal.is-visible {
    transition: opacity var(--motion-fade) ease-out, transform var(--motion-fade) ease-out;
    transition-delay: var(--reveal-delay, 0s);
  }
  html.motion .hero__media { will-change: transform; }
}

/* Short hand-drawn rose line under section headings (added by motion.js). */
.heading-rule { display: block; width: var(--rule-width); height: 0.5rem; margin-top: var(--space-2); overflow: visible; }
.draw-line path { fill: none; stroke: var(--color-rule-rose); stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
@media (prefers-reduced-motion: no-preference) {
  html.motion .draw-line path { stroke-dasharray: var(--len); stroke-dashoffset: var(--len); }
  html.motion .draw-line.is-visible path { stroke-dashoffset: 0; transition: stroke-dashoffset var(--motion-draw) ease-out 0.1s; }
}

.pull-quote, .statement__text {
  font-family: var(--font-heading);
  font-style: italic;
  font-weight: 500;
  color: var(--color-accent);
  text-align: center;
  line-height: var(--line-height-tight);
  overflow-wrap: anywhere;
}
.pull-quote {
  font-size: var(--font-size-quote);
  max-width: var(--quote-measure);
  margin: var(--space-8) auto;
  padding-block: var(--space-5);
  position: relative;
}
.pull-quote::before, .pull-quote::after {
  content: "";
  display: block;
  width: var(--space-7);
  height: 1px;
  background: var(--color-rule);
  margin-inline: auto;
}
.pull-quote::before { margin-bottom: var(--space-5); }
.pull-quote::after { margin-top: var(--space-5); }
.pull-quote__text { margin: 0; }
.pull-quote__text p { margin: 0; }
.statement__text {
  font-size: var(--font-size-statement);
  max-width: calc(var(--quote-measure) * 1.3);
  margin: 0 auto;
}
/* Hand-drawn rose line under the home statement (draws in on scroll). */
.flourish { display: block; width: var(--flourish-width); height: 1.5rem; margin: var(--space-5) auto 0; overflow: visible; }

/* ---- FAQ accordion ----------------------------------------------------- */

.faq__heading { margin-top: 0; }
.faq__item {
  background: var(--color-surface);
  border: var(--border-width) solid var(--color-border);
  border-radius: var(--radius-lg);
  margin-bottom: var(--space-3);
}
.faq__question {
  cursor: pointer;
  list-style: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  min-height: var(--tap-target);
  padding: var(--space-4) var(--space-5);
  font-family: var(--font-heading);
  font-size: var(--font-size-h3);
  font-weight: var(--font-weight-heading);
  line-height: var(--line-height-tight);
  color: var(--color-heading);
  border-radius: var(--radius-lg);
}
.faq__question::-webkit-details-marker { display: none; }
.faq__question::after {
  content: "";
  flex: 0 0 auto;
  width: 0.6em;
  height: 0.6em;
  border-right: 2px solid var(--color-accent);
  border-bottom: 2px solid var(--color-accent);
  transform: rotate(45deg);
  transition: transform var(--transition);
}
.faq__item[open] > .faq__question::after { transform: rotate(225deg); }
.faq__question:hover { color: var(--color-accent-hover); }
.faq__answer { padding: 0 var(--space-5) var(--space-5); }
.faq__answer > :last-child { margin-bottom: 0; }
.site-footer__area { margin: 0 0 var(--space-5); max-width: var(--measure); }
.prose ol { padding-left: var(--space-5); }
.prose li { margin-bottom: var(--space-2); }

/* Bulleted lists are checklists: two columns on wide screens, rose check marks. */
.prose ul { list-style: none; padding: 0; display: grid; gap: var(--space-2) var(--space-6); }
.prose ul li { position: relative; padding-left: var(--space-5); margin: 0; }
.prose ul li::before {
  content: "";
  position: absolute;
  left: 0.2em;
  top: calc(0.5em + 1px);
  width: calc(var(--check-size) / 2);
  height: var(--check-size);
  border-right: 2px solid var(--color-accent);
  border-bottom: 2px solid var(--color-accent);
  transform: rotate(45deg);
}
@media (min-width: 52em) {
  .prose ul { grid-template-columns: 1fr 1fr; }
}

/* "Together, we work to" lists: small numbered cards. */
.prose .num-grid { list-style: none; counter-reset: num; margin: var(--space-5) 0 0; padding: 0; display: grid; gap: var(--space-4); }
.prose .num-grid > li {
  counter-increment: num;
  margin: 0;
  padding: var(--space-5);
  background: var(--color-surface);
  border: var(--border-width) solid var(--color-border);
  border-radius: var(--radius-md);
}
.prose .num-grid > li::before {
  content: counter(num, decimal-leading-zero);
  display: block;
  font-family: var(--font-heading);
  font-size: var(--font-size-h3);
  font-weight: var(--font-weight-heading);
  line-height: 1;
  color: var(--color-accent);
  margin-bottom: var(--space-2);
}
@media (min-width: 52em) {
  .prose .num-grid { grid-template-columns: 1fr 1fr; }
}

/* ---- Cards ------------------------------------------------------------- */
.card-list { display: grid; gap: var(--space-5); grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); }
.card {
  display: flex;
  flex-direction: column;
  padding: var(--card-padding);
  background: var(--color-surface);
  border: var(--border-width) solid var(--color-border);
  border-radius: var(--radius-lg);
}
@media (prefers-reduced-motion: no-preference) {
  .card { transition: transform var(--motion-lift) ease, box-shadow var(--motion-lift) ease; }
  .card:hover, .card:focus-within { transform: translateY(var(--card-lift)); box-shadow: var(--shadow-card); }
}
.card__icon { display: block; width: var(--icon-size); height: var(--icon-size); color: var(--color-accent); }
.card__icon { margin-bottom: var(--space-4); }
.card__icon svg {
  display: block;
  width: 100%;
  height: 100%;
  fill: none;
  stroke: currentColor;
  stroke-width: var(--icon-stroke);
  stroke-linecap: round;
  stroke-linejoin: round;
}
.card__title { margin: 0 0 var(--space-3); font-size: var(--font-size-h3); }
.card__title a { color: var(--color-heading); text-decoration: none; }
.card__title a:hover { color: var(--color-accent-hover); }
.card__summary { margin: 0 0 var(--space-4); }
.card__more { margin-top: auto; }

.details { display: grid; grid-template-columns: max-content 1fr; gap: var(--space-2) var(--space-4); }
.details dt { font-weight: var(--font-weight-bold); }
.details dd { margin: 0; }

.placeholder { color: var(--color-text-muted); font-style: italic; }

/* ---- Rates page --------------------------------------------------------- */
.rate-cards { margin: var(--space-6) 0; text-align: center; }
.rate-card { align-items: center; }
.rate-card__title { margin: 0 0 var(--space-3); font-weight: var(--font-weight-bold); color: var(--color-heading); }
.rate-card__price { font-family: var(--font-heading); font-weight: var(--font-weight-heading); font-size: var(--font-size-price); line-height: 1; color: var(--color-accent); margin: 0 0 var(--space-2); }
.rate-card__per { margin: 0; color: var(--color-text-muted); }
.rates__notes { font-size: var(--font-size-sm); color: var(--color-text-muted); }
.rates__notes strong { color: var(--color-heading); }
.soft-box { max-width: var(--measure); margin-inline: auto; padding: var(--space-6); background: var(--color-band); border-radius: var(--radius-lg); }
.soft-box > h2:first-child { margin-top: 0; }

/* Editorial TODO notice and review banner: deliberately loud on dev. */
.content-todo, .review-banner {
  margin: var(--space-5) 0 0;
  padding: var(--space-3) var(--space-4);
  background: var(--color-notice-bg);
  color: var(--color-notice-text);
  border: 2px solid var(--color-notice-border);
  border-left-width: 8px;
  border-radius: var(--radius-sm);
}

/* ---- Call to action (accent band) -------------------------------------- */
.cta { text-align: center; }
.cta__inner { max-width: var(--measure); margin-inline: auto; }
.cta__heading { margin-top: 0; }
.cta p { margin: 0 0 var(--space-5); }
.cta p:last-child { margin-bottom: 0; }

.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}

/* ---- Home: hero -------------------------------------------------------- */
.hero { padding-block: calc(var(--section-pad) * 0.75) var(--section-pad); }
.hero__grid { display: grid; gap: var(--space-6); align-items: center; }
.hero__copy .lead { max-width: var(--measure); }
.lead--short { display: none; }
@media (max-width: 39.99em) {
  .hero .eyebrow { display: none; }
  .lead--full { display: none; }
  .lead--short { display: block; }
  .card-list--compact .card__summary { display: none; }
}
.hero__media {
  min-height: var(--hero-media-min-height-sm);
  background: var(--color-blush-fill);
  border-radius: var(--radius-arch);
}
/* The arch is a fixed-height box at every width, so the cover-cropped photo
 * never changes the layout. */
.hero__media { height: var(--hero-media-min-height-sm); overflow: hidden; }
.hero__media img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: var(--hero-focus); border-radius: inherit; }
@media (min-width: 52em) {
  .hero__media { height: var(--hero-media-min-height); }
}

/* Category photo wrapped by a page's opening copy (hub and specialty pages).
 * Phones: full width above the lead, 3:2. Wide screens: floats right of the
 * lead and intro as a portrait, the text wrapping on its left. The block
 * contains the float (flow-root) so a tall photo never spills into the next
 * band, and anything full-width inside the copy clears it. */
.intro-flow { display: flow-root; margin-top: var(--space-5); }
.inset { margin: 0 0 var(--space-5); }
.inset__img { display: block; width: 100%; aspect-ratio: var(--inset-ratio-sm); object-fit: cover; border-radius: var(--radius-inset-sm); background: var(--color-blush-fill); }
@media (min-width: 60em) {
  .inset { float: right; width: var(--inset-width); max-width: var(--inset-max); margin: 0 0 var(--space-5) var(--inset-gap); }
  .inset__img { aspect-ratio: var(--inset-ratio); border-radius: var(--radius-inset); }
}
.intro-flow h2, .intro-flow h3, .intro-flow ul, .intro-flow ol, .intro-flow .num-grid, .intro-flow .card-list, .pull-quote, .band { clear: both; }
/* Per-category focus: the subject's place in each photo, so it survives the portrait, 3:2 and card crops. */
.inset--postpartum-mental-health .inset__img,
.category-card--postpartum-mental-health .category-card__img { object-position: var(--focus-postpartum-mental-health); }
.inset--fertility-pregnancy .inset__img,
.category-card--fertility-pregnancy .category-card__img { object-position: var(--focus-fertility-pregnancy); }
.inset--relationships-couples .inset__img,
.category-card--relationships-couples .category-card__img { object-position: var(--focus-relationships-couples); }
.inset--motherhood-identity-burnout .inset__img,
.category-card--motherhood-identity-burnout .category-card__img { object-position: var(--focus-motherhood-identity-burnout); }
.inset--pregnancy-loss .inset__img,
.category-card--pregnancy-loss .category-card__img { object-position: var(--focus-pregnancy-loss); }
.inset--military-families .inset__img,
.category-card--military-families .category-card__img { object-position: var(--focus-military-families); }
@media (min-width: 52em) {
  .hero { padding-block: var(--space-8) var(--space-9); }
  .hero__grid { grid-template-columns: minmax(0, 1.1fr) minmax(0, 0.9fr); gap: var(--space-8); }
  .hero__media { min-height: var(--hero-media-min-height); }
}

/* ---- Home: sections ---------------------------------------------------- */
.meet { display: flex; flex-wrap: wrap; gap: var(--space-6); align-items: center; }
.meet__photo {
  flex: 0 0 auto;
  width: var(--headshot-size);
  max-width: 100%;
  aspect-ratio: 1;
  border-radius: 50%;
  background: var(--color-sage-fill);
  object-fit: cover;
  margin: 0;
}
.meet__text { flex: 1 1 20rem; max-width: var(--measure); font-size: var(--font-size-lg); }
.meet__text p:first-child { margin-top: 0; }
.steps { list-style: none; counter-reset: step; margin: 0; padding: 0; display: grid; gap: var(--space-5); max-width: var(--measure); }
.steps__item { position: relative; padding-left: var(--space-8); counter-increment: step; }
.steps__item::before {
  content: counter(step);
  position: absolute;
  left: 0;
  top: 0;
  width: var(--space-7);
  height: var(--space-7);
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: var(--color-sage-fill);
  color: var(--color-sage-text);
  font-family: var(--font-heading);
  font-weight: var(--font-weight-heading);
  font-size: var(--font-size-h3);
  line-height: 1;
}
.steps__title { display: block; font-family: var(--font-heading); font-size: var(--font-size-h3); font-weight: var(--font-weight-heading); color: var(--color-heading); line-height: var(--line-height-tight); margin-bottom: var(--space-1); }
.steps__text { color: var(--color-text-muted); }

/* ---- Clinician profile ------------------------------------------------- */
.profile__wrap { max-width: calc(var(--measure) + 18rem + 2 * var(--gutter)); }
.profile__layout { display: grid; gap: var(--space-6); margin-top: var(--space-5); }
@media (min-width: 52em) {
  .profile__layout { grid-template-columns: 16rem minmax(0, var(--measure)); align-items: start; }
}
.profile__photo { border-radius: var(--radius-lg); margin-bottom: var(--space-4); width: 100%; max-width: 16rem; }
.profile__photo--placeholder { aspect-ratio: 4 / 5; background: var(--color-sage-fill); }
.profile__name { margin-bottom: var(--space-1); }
.credentials-box {
  background: var(--color-surface);
  border: var(--border-width) solid var(--color-border);
  border-radius: var(--radius-lg);
  font-size: var(--font-size-sm);
  margin-top: var(--space-4);
  padding: var(--space-5);
}
.credentials-box__heading { font-size: var(--font-size-h3); margin: 0 0 var(--space-3); }
.credentials-box__body > :last-child { margin-bottom: 0; }
.credentials-box__body ul, .credentials-box__body ol { padding-left: 1.25rem; }
.profile__details { display: grid; grid-template-columns: max-content 1fr; gap: var(--space-1) var(--space-3); margin: 0; }
.profile__details dt { font-weight: var(--font-weight-bold); }
.profile__details dd { margin: 0; }
.profile__specialty-groups { display: grid; gap: var(--space-4); }
@media (min-width: 52em) {
  .profile__specialty-groups { grid-template-columns: 1fr 1fr; }
}
.profile__specialty-group { margin-bottom: var(--space-4); }
.profile__specialty-category { font-family: var(--font-body); font-size: var(--font-size-xs); font-weight: var(--font-weight-bold); letter-spacing: var(--letter-spacing-eyebrow); text-transform: uppercase; color: var(--color-sage-text); margin: 0 0 var(--space-2); }
.profile__specialty-list { padding-left: 1.25rem; margin: 0; }

/* ---- Specialty page: alternating bands, checklists ---------------------- */
.specialty__intro { padding-block: calc(var(--section-pad) * 0.75); }
.specialty__band { padding-block: calc(var(--section-pad) * 0.75); }
.specialty__band .prose > :last-child { margin-bottom: 0; }
.specialty__band .card-list { margin-top: var(--space-5); }
.specialty .prose ul {
  list-style: none;
  padding: 0;
  display: grid;
  gap: var(--space-2) var(--space-6);
}
.specialty .prose ul li { position: relative; padding-left: var(--space-5); margin: 0; }
.specialty .prose ul li::before {
  content: "";
  position: absolute;
  left: 0.2em;
  top: calc(0.5em + 1px);
  width: calc(var(--check-size) / 2);
  height: var(--check-size);
  border-right: 2px solid var(--color-accent);
  border-bottom: 2px solid var(--color-accent);
  transform: rotate(45deg);
}
@media (min-width: 52em) {
  .specialty .prose ul { grid-template-columns: 1fr 1fr; }
}

/* ---- Specialties index: category cards ---------------------------------- */
.category-cards { grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr)); }
.category-card { padding: 0; overflow: hidden; }
.category-card__img { display: block; width: 100%; aspect-ratio: 3 / 2; object-fit: cover; background: var(--color-blush-fill); }
.category-card__body { display: flex; flex-direction: column; flex: 1 1 auto; padding: var(--card-padding); }
.category-card__body .card__title { margin-top: 0; }
.category-card__reveal {
  display: grid;
  grid-template-rows: 0fr;
  opacity: 0;
  visibility: hidden;
  transition: grid-template-rows var(--motion-reveal) ease, opacity var(--motion-reveal) ease, visibility 0s linear var(--motion-reveal);
}
.category-card__reveal-inner { min-height: 0; overflow: hidden; }
.category-card:hover .category-card__reveal, .category-card:focus-within .category-card__reveal {
  grid-template-rows: 1fr;
  opacity: 1;
  visibility: visible;
  transition-delay: 0s;
}
.category-card__pages { list-style: none; margin: 0 0 var(--space-4); padding: 0; font-size: var(--font-size-sm); }
.category-card__pages a { display: inline-block; padding-block: var(--space-1); }
@media (hover: none), (max-width: 39.99em) {
  .category-card__reveal { grid-template-rows: 1fr; opacity: 1; visibility: visible; }
}

/* ---- Contact page ------------------------------------------------------ */
.booking p:last-child { margin-bottom: 0; }

/* ---- Footer ------------------------------------------------------------ */
.site-footer {
  background: var(--color-footer-bg);
  color: var(--color-footer-text);
  padding-block: var(--space-8) var(--space-6);
  font-size: var(--font-size-sm);
}
.site-footer a { color: var(--color-footer-text); }
.site-footer a:hover { color: var(--color-surface); }
.site-footer h2 { color: var(--color-footer-text); font-size: var(--font-size-h3); margin: 0 0 var(--space-3); }
.site-footer__grid { display: grid; gap: var(--space-6); margin-bottom: var(--space-6); }
@media (min-width: 52em) {
  .site-footer__grid { grid-template-columns: 1fr 1fr; gap: var(--space-8); }
}
.footer-contact__list { display: grid; grid-template-columns: max-content 1fr; gap: var(--space-1) var(--space-4); margin: 0; }
.footer-contact__list dt { font-weight: var(--font-weight-bold); }
.footer-contact__list dd { margin: 0; }
.crisis__list li { margin-bottom: var(--space-2); }
.crisis__list li:last-child { margin-bottom: 0; }
.footer-nav__list { display: flex; flex-wrap: wrap; gap: var(--space-2) var(--space-5); }
.footer-nav__list a { display: inline-flex; align-items: center; min-height: var(--tap-target); }
.site-footer__copy { margin: var(--space-3) 0 0; }

/* ---- Wider screens ----------------------------------------------------- */
@media (min-width: 40em) {
  :root { --gutter: var(--space-6); }
}
