/* Wellness theme — organic, calm, soft self-care. A humanist serif display set
   over a warm sage/eucalyptus + clay/sand palette, paired with a soft rounded
   humanist sans. Generous breathing room, gently layered shadows, large soft
   radii, and subtle botanical/blob atmosphere built from radial-gradients and
   inline data-URI SVG leaves (no external requests). Nothing harsh: low contrast,
   light, earthy, soothing. A tenant re-skins purely by changing design tokens —
   every brand value below reads from a CSS custom property. Loaded after
   static/css/site.css, so it overrides the shared component styles for wellness. */

.theme-wellness {
  /* Distinctive, robust web-safe stacks. Real OS humanist serif/sans lead; the
     generic fallback (what actually renders for most visitors) still reads soft
     and warm. The token-chosen face slots in front when self-hosted. */
  --font-display: var(--font-heading), "Palatino Linotype", "Palatino", "Iowan Old Style", "Hoefler Text", Georgia, serif;
  --font-sans: var(--font-body), "Avenir Next", "Avenir", "Segoe UI", "Helvetica Neue", system-ui, sans-serif;

  --space: clamp(3.5rem, 8vw, 7rem);
  /* Soft, layered, low-contrast depth — never a hard drop shadow. */
  --shadow-soft: 0 1px 2px rgba(60, 56, 48, 0.04), 0 12px 30px -18px rgba(60, 56, 48, 0.22);
  --shadow-raise: 0 2px 6px rgba(60, 56, 48, 0.06), 0 24px 50px -28px rgba(60, 56, 48, 0.3);
  /* Roomier radius for big surfaces, derived softly from the token. */
  --radius-lg: calc(var(--radius) + 0.75rem);
  /* Token-driven washes used for atmosphere; mixed so they track any palette. */
  --wash-sage: color-mix(in srgb, var(--color-primary) 12%, var(--color-surface));
  --wash-clay: color-mix(in srgb, var(--color-accent) 12%, var(--color-surface));
  --tint: color-mix(in srgb, var(--color-primary) 7%, var(--color-surface));
  --line: 1px solid color-mix(in srgb, var(--color-border) 85%, transparent);

  margin: 0;
  font-family: var(--font-sans);
  font-size: 1.0625rem;
  line-height: 1.78;
  color: var(--color-text);
  /* Atmosphere: two soft botanical washes drifting in from the corners over the
     warm sand background — depth and texture without flat fills. Fixed so the
     page feels like it sits on a calm, continuous surface. */
  background-color: var(--color-bg);
  background-image:
    radial-gradient(70% 55% at 8% 0%, var(--wash-sage), transparent 60%),
    radial-gradient(60% 50% at 100% 12%, var(--wash-clay), transparent 58%),
    radial-gradient(50% 40% at 50% 100%, color-mix(in srgb, var(--color-primary) 7%, transparent), transparent 60%);
  background-attachment: fixed;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

.theme-wellness ::selection { background: color-mix(in srgb, var(--color-primary) 22%, var(--color-surface)); color: var(--color-text); }

.theme-wellness .container { width: 100%; max-width: var(--max-width); margin-inline: auto; padding-inline: clamp(1.25rem, 5vw, 2.75rem); }

/* --- Type ----------------------------------------------------------------- */

.theme-wellness h1, .theme-wellness h2, .theme-wellness h3 {
  font-family: var(--font-display); font-weight: 500; line-height: 1.14;
  letter-spacing: -0.01em; color: var(--color-text);
}
.theme-wellness h1 { font-size: clamp(2.5rem, 6.5vw, 4.5rem); margin: 0 0 0.35em; }
.theme-wellness h2 { font-size: clamp(1.9rem, 4vw, 2.9rem); margin: 0 0 0.6em; }
.theme-wellness h3 { font-size: clamp(1.25rem, 2.3vw, 1.6rem); margin: 0 0 0.5em; }
.theme-wellness p { margin: 0 0 1.15rem; }

/* In-content links: primary at rest, with a soft underline that grows in. Excludes
   .btn so a button's own contrast colour always wins over the primary link colour. */
.theme-wellness a:not(.btn) { color: var(--color-primary); text-underline-offset: 4px; }
.theme-wellness .prose a:not(.btn), .theme-wellness .wel-footer a:not(.btn) {
  text-decoration: none;
  background: linear-gradient(currentColor, currentColor) 0 100% / 0% 2px no-repeat;
  padding-bottom: 2px;
  transition: background-size 0.4s cubic-bezier(0.2, 0.7, 0.2, 1);
}
.theme-wellness .prose a:not(.btn):hover, .theme-wellness .prose a:not(.btn):focus-visible,
.theme-wellness .wel-footer a:not(.btn):hover, .theme-wellness .wel-footer a:not(.btn):focus-visible { background-size: 100% 2px; }

.theme-wellness .prose { max-width: 40rem; }
.theme-wellness .prose > :first-child { margin-top: 0; }
.theme-wellness .prose h2 { margin-top: 0; }
.theme-wellness .prose strong { font-weight: 600; }
.theme-wellness .prose ul, .theme-wellness .prose ol { margin: 0 0 1.15rem; padding-left: 1.2rem; }
.theme-wellness .prose li { margin: 0 0 0.45rem; }
.theme-wellness .prose blockquote {
  margin: 1.6rem 0; padding: 0.4rem 0 0.4rem 1.5rem;
  border-left: 3px solid color-mix(in srgb, var(--color-primary) 55%, var(--color-surface));
  font-family: var(--font-display); font-size: 1.35rem; line-height: 1.5; font-style: italic; color: var(--color-text);
}

/* Soft lowercase-feel eyebrow used by the hero + labelled sections. */
.eyebrow {
  font-family: var(--font-sans); font-size: 0.78rem; font-weight: 600;
  text-transform: uppercase; letter-spacing: 0.2em;
  color: var(--color-primary); margin: 0 0 1.2rem;
  display: inline-flex; align-items: center; gap: 0.6rem;
}
.eyebrow::before {
  content: ""; width: 1.6rem; height: 1px;
  background: color-mix(in srgb, var(--color-primary) 60%, transparent);
}

.theme-wellness .section__heading { margin-top: 0; }

/* --- Buttons -------------------------------------------------------------- */

.btn {
  display: inline-flex; align-items: center; justify-content: center;
  text-decoration: none; cursor: pointer;
  font-family: var(--font-sans); font-size: 0.95rem; font-weight: 600; letter-spacing: 0.01em;
  background: var(--color-primary); color: var(--color-primary-contrast);
  padding: 0.85rem 1.9rem; border: 1px solid var(--color-primary);
  border-radius: 999px; /* fully pill — soft and friendly, independent of token radius */
  box-shadow: var(--shadow-soft);
  transition: transform 0.25s cubic-bezier(0.2, 0.7, 0.2, 1), box-shadow 0.25s ease, background 0.25s ease, color 0.25s ease;
}
.btn:hover { background: color-mix(in srgb, var(--color-primary) 88%, #000); box-shadow: var(--shadow-raise); }
.btn--ghost {
  background: transparent; color: var(--color-primary);
  border-color: color-mix(in srgb, var(--color-primary) 45%, var(--color-border));
  box-shadow: none;
}
.btn--ghost:hover { background: var(--tint); color: var(--color-primary); box-shadow: var(--shadow-soft); }

/* --- Header --------------------------------------------------------------- */

.wel-header { position: sticky; top: 0; z-index: 20; padding-block: 0.85rem; }
.wel-header__inner {
  display: flex; align-items: center; justify-content: space-between; gap: 1rem;
  background: color-mix(in srgb, var(--color-surface) 80%, transparent);
  -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
  border: var(--line);
  border-radius: 999px;
  padding: 0.6rem 0.6rem 0.6rem 1.4rem;
  box-shadow: var(--shadow-soft);
}
.wel-brand { font-family: var(--font-display); font-size: clamp(1.3rem, 2.4vw, 1.7rem); font-weight: 500; letter-spacing: -0.01em; color: var(--color-text); text-decoration: none; }
.wel-brand__logo { max-height: 2.6rem; width: auto; }

.wel-nav ul { display: flex; flex-wrap: wrap; align-items: center; gap: 0.35rem; list-style: none; margin: 0; padding: 0; }
.wel-nav a {
  display: inline-block; position: relative; font-size: 0.95rem; font-weight: 500;
  text-decoration: none; color: var(--color-text);
  padding: 0.5rem 1rem; border-radius: 999px;
  transition: background 0.2s ease, color 0.2s ease;
}
.wel-nav a:hover { background: var(--wash-sage); color: var(--color-primary); }
.wel-nav a[aria-current="page"] {
  background: color-mix(in srgb, var(--color-primary) 16%, var(--color-surface));
  color: var(--color-primary); font-weight: 600;
}

/* --- Mobile nav (no-JS safe: nav is visible until JS hides + reveals toggle) -- */

.wel-nav__toggle {
  align-items: center; gap: 0.55rem;
  font-family: var(--font-sans); font-size: 0.95rem; font-weight: 600;
  background: var(--color-surface); color: var(--color-text);
  border: var(--line); border-radius: 999px; padding: 0.55rem 1.1rem; cursor: pointer;
  box-shadow: var(--shadow-soft);
}
.wel-nav__toggle-bars, .wel-nav__toggle-bars::before, .wel-nav__toggle-bars::after {
  display: block; width: 1.05rem; height: 2px; border-radius: 2px; background: currentColor; position: relative;
}
.wel-nav__toggle-bars::before, .wel-nav__toggle-bars::after { content: ""; position: absolute; left: 0; }
.wel-nav__toggle-bars::before { top: -5px; }
.wel-nav__toggle-bars::after { top: 5px; }

@media (max-width: 46rem) {
  /* site.js un-hides the toggle (button.hidden=false) and toggles .is-open. */
  .wel-nav__toggle[hidden] { display: none; }
  .wel-nav__toggle { display: inline-flex; }
  .wel-header__inner { flex-wrap: wrap; border-radius: var(--radius-lg); }
  .wel-nav { display: none; flex-basis: 100%; }
  .wel-nav.is-open { display: block; }
  .wel-nav ul { flex-direction: column; align-items: stretch; gap: 0.25rem; padding-top: 0.6rem; }
  .wel-nav a { padding: 0.7rem 1rem; }
}

/* --- Section rhythm ------------------------------------------------------- */

.section { padding-block: var(--space); position: relative; }
.section + .section { padding-top: 0; }
.section--text + .section--text { padding-top: var(--space); }
.section--text .prose { margin-inline: auto; }

/* --- Hero ----------------------------------------------------------------- */

.wel-hero { padding-block: clamp(3rem, 7vw, 6rem) var(--space); position: relative; overflow: hidden; }
.wel-hero__inner { display: grid; gap: clamp(2rem, 5vw, 4rem); align-items: center; position: relative; z-index: 1; }
.wel-hero--split .wel-hero__inner { grid-template-columns: 1fr; }
@media (min-width: 54rem) {
  .wel-hero--split .wel-hero__inner { grid-template-columns: 1.05fr 0.95fr; }
}
.wel-hero__title { font-size: clamp(2.6rem, 7.5vw, 5rem); }
.wel-hero__lead { font-size: 1.25rem; line-height: 1.65; color: var(--color-muted); max-width: 34rem; }
.wel-hero__cta { margin-top: 1.7rem; }
.wel-hero:not(.wel-hero--split) .wel-hero__copy { max-width: 46rem; margin-inline: auto; text-align: center; }
.wel-hero:not(.wel-hero--split) .eyebrow { justify-content: center; }

/* Image cradled in a soft organic blob with a layered halo behind it. */
.wel-hero__media { position: relative; margin: 0; }
.wel-hero__media::before {
  content: ""; position: absolute; inset: -6% -4% -8% -6%; z-index: 0;
  background: var(--wash-clay);
  border-radius: 42% 58% 60% 40% / 52% 44% 56% 48%;
  filter: blur(2px);
}
.wel-hero__media img {
  position: relative; z-index: 1; width: 100%; aspect-ratio: 4 / 5; object-fit: cover;
  border-radius: 48% 52% 52% 48% / 56% 56% 44% 44%;
  box-shadow: var(--shadow-raise);
}

/* Drifting botanical leaf accents (inline SVG, no request). Token-tinted via mask. */
.wel-hero__leaf {
  position: absolute; z-index: 0; width: 9rem; height: 9rem; pointer-events: none;
  background-color: color-mix(in srgb, var(--color-primary) 22%, transparent);
  -webkit-mask: var(--leaf) center / contain no-repeat;
  mask: var(--leaf) center / contain no-repeat;
  --leaf: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Cpath d='M50 4C24 18 14 44 22 72c2 8 8 18 16 24 2-30 8-52 24-78-10 22-14 44-12 78 8-6 14-16 16-24 8-28-2-54-16-68z'/%3E%3C/svg%3E");
}
.wel-hero__leaf--a { top: -2rem; right: -1.5rem; transform: rotate(24deg); }
.wel-hero__leaf--b { bottom: -2.5rem; left: -2rem; width: 7rem; height: 7rem; transform: rotate(-150deg); opacity: 0.7; }

/* --- image + text --------------------------------------------------------- */

.image-text__grid { display: grid; gap: clamp(2rem, 5vw, 4rem); align-items: center; }
@media (min-width: 54rem) {
  .image-text__grid { grid-template-columns: 1fr 1fr; }
  .image-text--right .image-text__media { order: 2; }
}
.image-text__media { position: relative; margin: 0; }
.image-text__media::before {
  content: ""; position: absolute; inset: -1.25rem; z-index: 0;
  background: var(--wash-sage);
  border-radius: 46% 54% 56% 44% / 54% 46% 54% 46%;
}
.image-text__media img {
  position: relative; z-index: 1; width: 100%; aspect-ratio: 5 / 4; object-fit: cover;
  border-radius: var(--radius-lg); box-shadow: var(--shadow-soft);
  transition: transform 0.6s cubic-bezier(0.2, 0.7, 0.2, 1);
}
@media (prefers-reduced-motion: no-preference) {
  .image-text__media:hover img { transform: scale(1.03); }
}
.image-text__copy .btn { margin-top: 0.5rem; }

/* --- gallery -------------------------------------------------------------- */

.gallery-grid {
  list-style: none; margin: 0; padding: 0;
  display: grid; gap: 1rem;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 15rem), 1fr));
}
.gallery-grid__item a {
  display: block; overflow: hidden; background: var(--color-surface);
  border-radius: var(--radius-lg); box-shadow: var(--shadow-soft);
}
.gallery-grid__item img {
  width: 100%; aspect-ratio: 3 / 4; object-fit: cover;
  transition: transform 0.6s cubic-bezier(0.2, 0.7, 0.2, 1), opacity 0.3s ease;
}
@media (prefers-reduced-motion: no-preference) {
  .gallery-grid__item a:hover img { transform: scale(1.05); opacity: 0.94; }
}

/* --- menu / price list (treatments) --------------------------------------- */

.menu-list { list-style: none; margin: 0; padding: 0; max-width: 48rem; }
.menu-item {
  padding: 1.35rem 1.5rem; border-radius: var(--radius-lg);
  background: color-mix(in srgb, var(--color-surface) 70%, transparent);
  border: var(--line);
}
.menu-item + .menu-item { margin-top: 0.9rem; }
.menu-item__head { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; }
.menu-item__name { font-family: var(--font-display); font-size: 1.3rem; font-weight: 500; }
.menu-item__price {
  font-family: var(--font-sans); font-weight: 600; color: var(--color-primary); white-space: nowrap;
  background: var(--wash-sage); padding: 0.2rem 0.7rem; border-radius: 999px;
}
.menu-item__desc { color: var(--color-muted); margin: 0.4rem 0 0; }

/* --- faq ------------------------------------------------------------------ */

.faq-list { max-width: 48rem; display: flex; flex-direction: column; gap: 0.85rem; }
.faq-item {
  border: var(--line); border-radius: var(--radius-lg);
  background: color-mix(in srgb, var(--color-surface) 70%, transparent);
  padding: 0.3rem 1.4rem; transition: box-shadow 0.25s ease, background 0.25s ease;
}
.faq-item[open] { background: var(--color-surface); box-shadow: var(--shadow-soft); }
.faq-item summary {
  cursor: pointer; font-family: var(--font-display); font-size: 1.2rem; font-weight: 500;
  padding: 0.95rem 0; list-style: none; display: flex; justify-content: space-between; align-items: center; gap: 1rem;
}
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary::after {
  content: ""; flex: none; width: 1.5rem; height: 1.5rem; border-radius: 999px;
  background:
    linear-gradient(var(--color-primary), var(--color-primary)) center / 0.75rem 2px no-repeat,
    linear-gradient(var(--color-primary), var(--color-primary)) center / 2px 0.75rem no-repeat,
    var(--wash-sage);
  transition: transform 0.3s cubic-bezier(0.2, 0.7, 0.2, 1);
}
.faq-item[open] summary::after { transform: rotate(135deg); }
.faq-item__answer { padding-bottom: 1rem; color: var(--color-muted); }
.faq-item__answer > :first-child { margin-top: 0; }

/* --- hours + open/closed badge -------------------------------------------- */

.open-badge {
  display: inline-flex; align-items: center; gap: 0.45rem;
  font-size: 0.78rem; font-weight: 600; letter-spacing: 0.02em;
  padding: 0.35rem 0.95rem; border-radius: 999px; border: var(--line);
}
.open-badge::before { content: ""; width: 0.5rem; height: 0.5rem; border-radius: 999px; background: currentColor; }
.open-badge--open { color: #4d7c3f; background: color-mix(in srgb, #4d7c3f 12%, var(--color-surface)); border-color: color-mix(in srgb, #4d7c3f 28%, transparent); }
.open-badge--closed { color: var(--color-muted); }
.hours-list { display: grid; grid-template-columns: auto auto; gap: 0.5rem 2.5rem; justify-content: start; margin: 1.1rem 0 0; }
.hours-list dt { letter-spacing: 0.01em; }
.hours-list dd { margin: 0; color: var(--color-muted); }
.hours-list--block { gap: 0.55rem 3rem; }

.wel-hours .wel-hours__card {
  max-width: 38rem; background: var(--color-surface); border: var(--line);
  border-radius: var(--radius-lg); padding: clamp(1.75rem, 4vw, 2.75rem);
  box-shadow: var(--shadow-soft);
}
.wel-hours .wel-hours__card h2 { margin-bottom: 0.8rem; }
.wel-hours .open-badge { margin-bottom: 0.4rem; }

/* --- cta (a soft invitation) ---------------------------------------------- */

.section--cta { text-align: center; }
.wel-cta .wel-cta__card {
  position: relative; overflow: hidden;
  max-width: 50rem; margin-inline: auto;
  padding: clamp(3rem, 7vw, 5rem) clamp(1.5rem, 5vw, 4rem);
  border-radius: var(--radius-lg);
  background:
    radial-gradient(80% 100% at 0% 0%, var(--wash-sage), transparent 70%),
    radial-gradient(80% 100% at 100% 100%, var(--wash-clay), transparent 70%),
    var(--color-surface);
  border: var(--line); box-shadow: var(--shadow-soft);
}
.wel-cta .cta__inner { position: relative; z-index: 1; max-width: 38rem; margin-inline: auto; }
.wel-cta h2 { font-size: clamp(2rem, 4.5vw, 3.2rem); }
.wel-cta p { font-size: 1.2rem; color: var(--color-muted); margin-bottom: 1.8rem; }
.wel-cta__leaf {
  position: absolute; z-index: 0; top: -2rem; right: -2rem; width: 11rem; height: 11rem; pointer-events: none;
  background-color: color-mix(in srgb, var(--color-primary) 14%, transparent);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Cpath d='M50 4C24 18 14 44 22 72c2 8 8 18 16 24 2-30 8-52 24-78-10 22-14 44-12 78 8-6 14-16 16-24 8-28-2-54-16-68z'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Cpath d='M50 4C24 18 14 44 22 72c2 8 8 18 16 24 2-30 8-52 24-78-10 22-14 44-12 78 8-6 14-16 16-24 8-28-2-54-16-68z'/%3E%3C/svg%3E") center / contain no-repeat;
  transform: rotate(35deg);
}

/* --- map ------------------------------------------------------------------ */

.section--map address { font-style: normal; color: var(--color-muted); margin: 0 0 1.3rem; font-size: 1.15rem; line-height: 1.6; }
.section--map .btn { margin-top: 0.2rem; }

/* --- section lead (muted intro under a section heading) ------------------- */

.section__lead {
  color: var(--color-muted); font-size: 1.2rem; line-height: 1.65;
  max-width: 40rem; margin: -0.2rem 0 2.4rem;
}

/* --- team (our practitioners) --------------------------------------------- */

.team-grid {
  list-style: none; margin: 0; padding: 0;
  display: grid; gap: clamp(1.25rem, 3vw, 2rem);
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 14.5rem), 1fr));
}
.team-card {
  display: flex; flex-direction: column;
  background: var(--color-surface); border: var(--line);
  border-radius: var(--radius-lg); overflow: hidden;
  box-shadow: var(--shadow-soft);
  transition: box-shadow 0.3s ease, transform 0.3s cubic-bezier(0.2, 0.7, 0.2, 1);
}
@media (prefers-reduced-motion: no-preference) {
  .team-card:hover { box-shadow: var(--shadow-raise); transform: translateY(-3px); }
}
.team-card__photo {
  width: 100%; aspect-ratio: 4 / 5; object-fit: cover; display: block;
  background: var(--wash-sage);
}
/* Photoless cards still read intentional: a soft sage panel with a centred,
   token-tinted botanical leaf glyph in place of the portrait. */
.team-card__body {
  padding: 1.35rem 1.5rem 1.6rem;
  display: flex; flex-direction: column; gap: 0.25rem;
}
.team-card:not(:has(.team-card__photo)) .team-card__body {
  padding-top: 1.7rem; position: relative;
}
.team-card:not(:has(.team-card__photo)) .team-card__body::before {
  content: ""; width: 3.25rem; height: 3.25rem; margin-bottom: 0.85rem; border-radius: 999px;
  background:
    color-mix(in srgb, var(--color-primary) 26%, transparent)
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Cpath fill='%23fff' d='M50 4C24 18 14 44 22 72c2 8 8 18 16 24 2-30 8-52 24-78-10 22-14 44-12 78 8-6 14-16 16-24 8-28-2-54-16-68z'/%3E%3C/svg%3E")
    center / 1.9rem 1.9rem no-repeat;
}
.team-card__name {
  font-family: var(--font-display); font-size: 1.25rem; font-weight: 500;
  line-height: 1.2; color: var(--color-text); margin: 0;
}
.team-card__role {
  font-family: var(--font-sans); font-size: 0.82rem; font-weight: 600;
  text-transform: uppercase; letter-spacing: 0.1em;
  color: var(--color-primary); margin: 0.2rem 0 0.55rem;
}
.team-card__bio { color: var(--color-muted); margin: 0; font-size: 0.96rem; line-height: 1.6; }

/* --- steps (how your session works) --------------------------------------- */

.steps-list {
  list-style: none; margin: 0; padding: 0; max-width: 48rem;
  display: flex; flex-direction: column; gap: 1rem;
}
.step {
  display: flex; align-items: flex-start; gap: 1.3rem;
  padding: 1.4rem 1.6rem; border-radius: var(--radius-lg);
  background: color-mix(in srgb, var(--color-surface) 70%, transparent);
  border: var(--line);
}
.step__num {
  flex: none;
  display: inline-flex; align-items: center; justify-content: center;
  width: 3rem; height: 3rem; border-radius: 999px;
  font-family: var(--font-display); font-size: 1.2rem; font-weight: 500;
  color: var(--color-primary);
  background: var(--wash-sage);
  border: 1px solid color-mix(in srgb, var(--color-primary) 22%, transparent);
  box-shadow: var(--shadow-soft);
}
.step__body { padding-top: 0.15rem; }
.step__title {
  font-family: var(--font-display); font-size: 1.3rem; font-weight: 500;
  line-height: 1.2; color: var(--color-text); margin: 0 0 0.3rem;
}
.step__desc { color: var(--color-muted); margin: 0; line-height: 1.6; }

/* --- contact form (markup in site.css; wellness softens the chrome) -------- */

.section--contact .container { max-width: 46rem; }
.theme-wellness .contact-form { max-width: 38rem; }
.theme-wellness .form-field label { font-size: 0.95rem; font-weight: 600; color: var(--color-text); }
.theme-wellness .form-field input, .theme-wellness .form-field textarea {
  border: var(--line); border-radius: var(--radius); background: var(--color-surface);
  padding: 0.8rem 1rem; transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
.theme-wellness .form-field input:focus, .theme-wellness .form-field textarea:focus {
  border-color: var(--color-primary);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-primary) 18%, transparent);
  outline: none;
}
.theme-wellness .contact-success { border-radius: var(--radius-lg); }

/* --- news_latest ---------------------------------------------------------- */

.news-latest__list {
  list-style: none; margin: 0; padding: 0;
  display: grid; gap: clamp(1.5rem, 4vw, 2.5rem);
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 17rem), 1fr));
}
.news-latest__item {
  display: flex; flex-direction: column; background: var(--color-surface);
  border: var(--line); border-radius: var(--radius-lg); overflow: hidden;
  box-shadow: var(--shadow-soft); transition: box-shadow 0.3s ease, transform 0.3s cubic-bezier(0.2, 0.7, 0.2, 1);
}
@media (prefers-reduced-motion: no-preference) {
  .news-latest__item:hover { box-shadow: var(--shadow-raise); transform: translateY(-3px); }
}
.news-latest__cover { display: block; overflow: hidden; }
.news-latest__cover img {
  width: 100%; aspect-ratio: 3 / 2; object-fit: cover;
  transition: transform 0.6s cubic-bezier(0.2, 0.7, 0.2, 1);
}
@media (prefers-reduced-motion: no-preference) {
  .news-latest__cover:hover img { transform: scale(1.04); }
}
.news-latest__title { font-size: 1.3rem; margin: 0; padding: 0 1.3rem 1.2rem; }
.news-latest__title a { color: var(--color-text); text-decoration: none; }
.news-latest__title a:hover { color: var(--color-primary); }
.news-latest__date {
  order: -1; font-family: var(--font-sans); font-size: 0.78rem; font-weight: 600;
  text-transform: uppercase; letter-spacing: 0.12em; color: var(--color-primary);
  margin: 0; padding: 1.2rem 1.3rem 0.6rem;
}
/* Cards with no cover image still pad nicely. */
.news-latest__item > .news-latest__date:first-child { padding-top: 1.4rem; }
.news-latest__more { margin-top: 2.25rem; }
.news-latest__more a { font-family: var(--font-sans); font-weight: 600; text-decoration: none; }
.news-latest__empty { color: var(--color-muted); }

/* --- reviews -------------------------------------------------------------- */

.reviews-grid {
  list-style: none; margin: 0; padding: 0;
  display: grid; gap: 1.25rem;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 18rem), 1fr));
}
.review-card {
  background: var(--color-surface); border: var(--line); border-radius: var(--radius-lg);
  padding: clamp(1.5rem, 3vw, 2.25rem); display: flex; flex-direction: column; gap: 0.9rem;
  box-shadow: var(--shadow-soft);
}
.review-card__rating { margin: 0; display: flex; align-items: baseline; gap: 0.6rem; }
.review-card__rating span[aria-hidden="true"] { color: var(--color-accent); letter-spacing: 0.12em; font-size: 1rem; }
.review-card__rating-text { font-size: 0.78rem; font-weight: 600; letter-spacing: 0.04em; color: var(--color-muted); }
.review-card__text { margin: 0; font-family: var(--font-display); font-size: 1.25rem; line-height: 1.5; font-style: italic; }
.review-card__text::before { content: "\201C"; }
.review-card__text::after { content: "\201D"; }
.review-card__author { margin: 0; margin-top: auto; font-size: 0.85rem; font-weight: 600; color: var(--color-muted); }
.review-card__source { color: var(--color-primary); }
.reviews-empty { color: var(--color-muted); }
.reviews-google { margin-top: 2.25rem; }
.reviews-google__link { font-family: var(--font-sans); font-weight: 600; text-decoration: none; }

/* --- Footer --------------------------------------------------------------- */

.wel-footer { position: relative; margin-top: var(--space); padding-top: 3rem; }
.wel-footer__wash {
  position: absolute; inset: 0 0 auto; height: 100%; z-index: 0; pointer-events: none;
  background:
    radial-gradient(60% 100% at 0% 0%, var(--wash-sage), transparent 65%),
    radial-gradient(60% 100% at 100% 0%, var(--wash-clay), transparent 65%);
  border-top: var(--line);
}
.wel-footer__grid {
  position: relative; z-index: 1;
  display: grid; gap: 2.5rem;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr));
  padding-block: 1rem 2.5rem;
}
.wel-footer__name { font-family: var(--font-display); font-size: 1.6rem; font-weight: 500; margin: 0 0 0.4rem; }
.wel-footer__tag { color: var(--color-muted); max-width: 22rem; margin: 0 0 1rem; }
.wel-footer address { font-style: normal; color: var(--color-muted); line-height: 1.7; }
.wel-footer__label { font-size: 0.78rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.16em; color: var(--color-primary); margin: 0 0 0.9rem; font-family: var(--font-sans); }
.wel-footer a { color: var(--color-text); }
.wel-footer__legal { position: relative; z-index: 1; border-top: var(--line); padding-block: 1.5rem; color: var(--color-muted); font-size: 0.85rem; }

/* --- Orchestrated page-load reveal (gated behind a motion preference) ------ */
/* One staggered settle of the hero — eyebrow, headline, lead, button, image —
   so it feels like the page exhales into place. Content is fully visible without
   it; site.css separately nulls all motion under prefers-reduced-motion: reduce. */
@media (prefers-reduced-motion: no-preference) {
  .wel-hero .eyebrow, .wel-hero__title, .wel-hero__lead, .wel-hero__cta, .wel-hero__media,
  .wel-hero__leaf { animation: wel-rise 1s both cubic-bezier(0.2, 0.7, 0.2, 1); }
  .wel-hero__title { animation-delay: 0.08s; }
  .wel-hero__lead { animation-delay: 0.16s; }
  .wel-hero__cta { animation-delay: 0.24s; }
  .wel-hero__media { animation-delay: 0.12s; animation-name: wel-bloom; }
  .wel-hero__leaf { animation-delay: 0.3s; animation-name: wel-drift; }
  @keyframes wel-rise { from { opacity: 0; transform: translateY(16px); } to { opacity: 1; transform: none; } }
  @keyframes wel-bloom { from { opacity: 0; transform: translateY(20px) scale(0.97); } to { opacity: 1; transform: none; } }
  @keyframes wel-drift { from { opacity: 0; } to { opacity: 1; } }
}

/* ===========================================================================
   team + steps — section-scoped wellness treatment (appended)
   The generic .team-grid / .team-card / .steps-list / .step / .step__num rules
   above already render these section kinds in the theme's language. The rules
   below are purely additive, scoped to .section--team / .section--steps, and
   introduce no overlap with existing selectors — they finish the "meet the
   team" grid and the "how it works" journey with the soft, organic, botanical
   atmosphere used elsewhere (sage/clay washes, large soft radii, layered
   shadows, humanist serif figures). Tokens only; no requests, no JS.
   ======================================================================== */

/* A shared, gentle intro: the lead sits a touch wider and breathes under the
   heading. (.section__lead is styled once above; this only relaxes its rhythm
   within these two sections so the heading + lead read as one calm unit.) */
.theme-wellness .section--team .section__lead,
.theme-wellness .section--steps .section__lead { margin-bottom: 2.6rem; }

/* --- team: a warm practitioner grid --------------------------------------- */

/* Soften the photo's top corners into the card and lift it onto a faint sage
   cradle, echoing the hero/image-text blobs without competing with them. */
.theme-wellness .section--team .team-card { position: relative; isolation: isolate; }
.theme-wellness .section--team .team-card__photo {
  border-radius: var(--radius-lg) var(--radius-lg) 0 0;
}
/* The name sits over a hairline-light tint so each practitioner reads as their
   own calm panel; role keeps its primary eyebrow, bio stays muted (set above). */
.theme-wellness .section--team .team-card__body {
  background:
    linear-gradient(180deg, color-mix(in srgb, var(--color-primary) 5%, transparent), transparent 70%);
}
/* A quiet botanical mark drifting in the card's top corner — only on cards that
   carry a photo, so the photoless leaf-glyph fallback above isn't doubled up. */
.theme-wellness .section--team .team-card:has(.team-card__photo)::after {
  content: ""; position: absolute; top: 0.7rem; right: 0.7rem; z-index: 2;
  width: 2.1rem; height: 2.1rem; pointer-events: none; opacity: 0.55;
  background-color: color-mix(in srgb, var(--color-surface) 90%, transparent);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Cpath d='M50 4C24 18 14 44 22 72c2 8 8 18 16 24 2-30 8-52 24-78-10 22-14 44-12 78 8-6 14-16 16-24 8-28-2-54-16-68z'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Cpath d='M50 4C24 18 14 44 22 72c2 8 8 18 16 24 2-30 8-52 24-78-10 22-14 44-12 78 8-6 14-16 16-24 8-28-2-54-16-68z'/%3E%3C/svg%3E") center / contain no-repeat;
  transform: rotate(28deg);
}

/* --- steps: a calm, reassuring journey ------------------------------------ */

/* Tie the numbered rows together with a soft sage thread down the badge column,
   so the steps read as one continuous path rather than separate cards. */
.theme-wellness .section--steps .steps-list { position: relative; }
.theme-wellness .section--steps .step { position: relative; z-index: 1; }
.theme-wellness .section--steps .step + .step::before {
  content: ""; position: absolute; left: calc(1.6rem + 1.5rem); top: -1rem; height: 1rem; width: 2px;
  transform: translateX(-1px);
  background: color-mix(in srgb, var(--color-primary) 22%, transparent);
  border-radius: 999px;
}
/* Give the numeral badge a gentle layered halo so it feels soft and inviting,
   not stamped — a quiet bloom of sage behind the rounded figure. */
.theme-wellness .section--steps .step__num {
  position: relative;
  background:
    radial-gradient(60% 60% at 50% 38%, color-mix(in srgb, var(--color-surface) 85%, transparent), transparent 72%),
    var(--wash-sage);
}
.theme-wellness .section--steps .step__num::after {
  content: ""; position: absolute; inset: -0.35rem; z-index: -1; border-radius: 999px;
  background: color-mix(in srgb, var(--color-primary) 8%, transparent);
}

/* Plain, soft hovers — the row warms slightly and settles up a hair. The lift
   itself is gated behind a motion preference below. */
.theme-wellness .section--steps .step {
  transition: background 0.3s ease, box-shadow 0.3s ease, transform 0.3s cubic-bezier(0.2, 0.7, 0.2, 1);
}
.theme-wellness .section--steps .step:hover {
  background: var(--color-surface); box-shadow: var(--shadow-soft);
}

@media (prefers-reduced-motion: no-preference) {
  .theme-wellness .section--steps .step:hover { transform: translateY(-2px); }
}
