/* Sacred Air — brand colours from sacredair.ca (#1F2624, #1E3B36).
   Layout pacing inspired by experiencezenden.com (not its assets). */
:root {
  --ink: #1F2624;
  --forest: #1E3B36;
  --forest-deep: #141A18;
  --cream: #F4EFE6;
  --cream-soft: #EBE4D6;
  --sand: #E2D8C6;
  --text: #1F2624;
  --muted: #2E3432;
  --on-dark: #F4EFE6;
  --on-dark-muted: #E8E0D0;
  --rule: rgba(31, 38, 36, 0.16);
  --rule-dark: rgba(244, 239, 230, 0.22);
  --font-display: "Cormorant Garamond", "Palatino Linotype", Palatino, "Times New Roman", serif;
  --font-sans: Inter, "Helvetica Neue", Helvetica, Arial, sans-serif;
  --space: clamp(1.25rem, 4vw, 3.5rem);
  --wide: 1180px;
  --measure: 38rem;
  --radius: 6px;
  --header: 4.25rem;
  --section-y: clamp(5rem, 10vw, 8.5rem);
  --section-y-sm: clamp(3.5rem, 7vw, 5.5rem);
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}
body {
  margin: 0;
  font-family: var(--font-sans);
  font-size: 1.0625rem;
  line-height: 1.75;
  color: var(--text);
  background: var(--cream);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
img, video { max-width: 100%; height: auto; display: block; }
img[src$=".png"] { height: auto; }
a { color: inherit; }
button, input, textarea, select { font: inherit; color: inherit; }
h1, h2, h3, h4, p, ul, ol, figure, blockquote { margin: 0; }
ul, ol { padding: 0; }

.skip {
  position: absolute;
  left: 1rem;
  top: -4rem;
  background: var(--ink);
  color: var(--on-dark);
  padding: 0.6rem 1rem;
  z-index: 200;
}
.skip:focus { top: 0.75rem; }

/* Typography */
.eyebrow {
  font-family: var(--font-sans);
  font-size: 0.6875rem;
  font-weight: 500;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--muted);
  display: block;
  margin-bottom: 1rem;
}
.dark .eyebrow, .hero .eyebrow { color: var(--on-dark-muted); }

h1, .display {
  font-family: var(--font-display);
  font-weight: 400;
  font-size: clamp(2.6rem, 7.2vw, 5.75rem);
  line-height: 0.95;
  letter-spacing: -0.02em;
}
h2 {
  font-family: var(--font-display);
  font-weight: 400;
  font-size: clamp(2rem, 4.6vw, 3.65rem);
  line-height: 1.05;
  letter-spacing: -0.02em;
}
h3 {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: clamp(1.5rem, 2.6vw, 2rem);
  line-height: 1.2;
}
.lede {
  font-family: var(--font-display);
  font-size: clamp(1.4rem, 2.6vw, 2rem);
  line-height: 1.5;
  font-weight: 400;
}
.muted { color: var(--muted); }
.dark .muted { color: var(--on-dark-muted); }

/* Layout */
.wrap {
  width: min(var(--wide), calc(100% - 2 * var(--space)));
  margin-inline: auto;
}
.section {
  padding: var(--section-y) 0;
}
.section-sm { padding: var(--section-y-sm) 0; }
.dark { background: var(--ink); color: var(--on-dark); }
.forest { background: var(--forest); color: var(--on-dark); }
.cream { background: var(--cream); color: var(--text); }
.sand { background: var(--cream-soft); color: var(--text); }
.rule {
  border: 0;
  border-top: 1px solid var(--rule);
  margin: 0;
}
.dark .rule, .forest .rule, .hero-links { border-color: var(--rule-dark); }
.split {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(1.5rem, 5vw, 5rem);
  align-items: center;
}
.split img, .split .media {
  width: 100%;
  height: min(78vh, 720px);
  object-fit: cover;
  border-radius: var(--radius);
}
.split.reverse { direction: rtl; }
.split.reverse > * { direction: ltr; }
.stack > * + * { margin-top: 1.4rem; }
.stack-lg > * + * { margin-top: 2rem; }

/* Header */
.site-header {
  position: fixed;
  inset: 0 0 auto 0;
  z-index: 50;
  height: var(--header);
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 clamp(1rem, 3vw, 2rem);
  background: transparent;
  color: var(--on-dark);
  transition: background 0.3s ease, color 0.3s ease, box-shadow 0.3s ease;
}
.site-header.is-scrolled,
.site-header.on-light.is-scrolled {
  background: rgba(20, 26, 24, 0.92);
  color: var(--on-dark);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  box-shadow: 0 1px 0 var(--rule-dark);
}
.header-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 2.4rem;
  padding: 0 0.95rem;
  border: 1px solid rgba(244, 239, 230, 0.55);
  border-radius: 2px;
  text-decoration: none;
  font-size: 0.6875rem;
  font-weight: 500;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  background: transparent;
  color: inherit;
  cursor: pointer;
  white-space: nowrap;
}
.header-btn:hover, .header-btn:focus-visible {
  background: var(--on-dark);
  color: var(--ink);
  outline: none;
}
.logo {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  align-items: center;
  height: 100%;
}
.logo img {
  height: 38px;
  width: auto;
  max-width: 200px;
}
.header-right { display: flex; align-items: center; gap: 0.5rem; margin-left: auto; }
.menu-toggle {
  display: inline-flex;
  align-items: center;
  gap: 0.55rem;
  background: none;
  border: 0;
  color: inherit;
  cursor: pointer;
  font-size: 0.6875rem;
  font-weight: 500;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  min-height: 2.4rem;
  padding: 0 0.4rem;
}
.menu-toggle:focus-visible { outline: 2px solid var(--on-dark); outline-offset: 3px; }
.menu-toggle .bars {
  width: 18px;
  height: 10px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}
.menu-toggle .bars span {
  display: block;
  height: 1px;
  background: currentColor;
  width: 100%;
}

/* Full-screen menu */
.site-menu {
  position: fixed;
  inset: 0;
  z-index: 80;
  background: var(--forest-deep);
  color: var(--on-dark);
  display: flex;
  flex-direction: column;
  padding: 1.25rem clamp(1.25rem, 4vw, 3rem) 2.5rem;
  overflow: auto;
  transform: translateY(-8px);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity 0.28s ease, transform 0.28s ease, visibility 0.28s;
}
.site-menu.is-open {
  transform: none;
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}
body.menu-open { overflow: hidden; }
.menu-top {
  display: flex;
  justify-content: space-between;
  align-items: center;
  min-height: var(--header);
  margin: -1.25rem -0.5rem 2rem;
  padding: 0 0.5rem;
}
.menu-top img { height: 36px; width: auto; }
.menu-close { color: var(--on-dark); }
.menu-nav {
  list-style: none;
  display: grid;
  gap: 0;
  max-width: 40rem;
  margin: auto 0;
  width: 100%;
}
.menu-nav a {
  display: block;
  text-decoration: none;
  font-family: var(--font-display);
  font-size: clamp(2rem, 6vw, 3.4rem);
  line-height: 1.15;
  padding: 0.35rem 0;
  border-bottom: 1px solid var(--rule-dark);
}
.menu-nav a:hover, .menu-nav a:focus-visible { color: #fff; }
.menu-meta {
  margin-top: auto;
  padding-top: 2.5rem;
  display: flex;
  flex-wrap: wrap;
  gap: 1.25rem 2rem;
  font-size: 0.9rem;
  color: var(--on-dark-muted);
}
.menu-meta a { text-decoration: none; }

/* Buttons */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 3rem;
  padding: 0.7rem 1.4rem;
  text-decoration: none;
  font-size: 0.75rem;
  font-weight: 500;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  border-radius: 2px;
  border: 1px solid currentColor;
  background: transparent;
  cursor: pointer;
  transition: background 0.2s ease, color 0.2s ease;
}
.btn:hover, .btn:focus-visible {
  background: var(--ink);
  color: var(--cream);
  outline: none;
}
.dark .btn:hover, .forest .btn:hover,
.dark .btn:focus-visible, .forest .btn:focus-visible,
.btn-solid:hover, .btn-solid:focus-visible {
  background: var(--cream);
  color: var(--ink);
}
.btn-solid {
  background: var(--ink);
  color: var(--cream);
  border-color: var(--ink);
}
.dark .btn-solid, .forest .btn-solid {
  background: var(--cream);
  color: var(--ink);
  border-color: var(--cream);
}
.btn-row { display: flex; flex-wrap: wrap; gap: 0.75rem; margin-top: 1.75rem; }

/* Hero */
.hero {
  position: relative;
  min-height: 100vh;
  min-height: 100dvh;
  color: var(--on-dark);
  display: flex;
  align-items: flex-end;
  isolation: isolate;
  overflow: hidden;
}
.hero-media {
  position: absolute;
  inset: 0;
  z-index: -2;
}
.hero-media img, .hero-media video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 30%;
}
.hero-shade {
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(to top, rgba(15, 18, 17, 0.78) 0%, rgba(15, 18, 17, 0.28) 45%, rgba(15, 18, 17, 0.35) 100%);
}
.hero-inner {
  width: 100%;
  padding: 0 0 0;
}
.hero-copy {
  width: min(var(--wide), calc(100% - 2 * var(--space)));
  margin: 0 auto;
  padding: 0 0 2.5rem;
  text-align: center;
}
.hero h1 { margin-bottom: 0.85rem; }
.hero .offer {
  font-family: var(--font-display);
  font-size: clamp(1.2rem, 2.4vw, 1.7rem);
  font-style: italic;
  margin: 0.75rem 0 0;
}
.hero .offer a {
  color: var(--on-dark);
  text-decoration: none;
}
.hero-links {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  border-top: 1px solid var(--rule-dark);
  width: 100%;
}
.hero-links a {
  text-decoration: none;
  text-align: center;
  padding: 1.1rem 0.5rem;
  font-size: 0.78rem;
  letter-spacing: 0.04em;
  border-right: 1px solid var(--rule-dark);
}
.hero-links a:last-child { border-right: 0; }
.hero-links a:hover, .hero-links a:focus-visible {
  background: rgba(244, 239, 230, 0.1);
}

/* Page hero (inner) */
.page-hero {
  position: relative;
  min-height: 68vh;
  min-height: 68dvh;
  color: var(--on-dark);
  display: flex;
  align-items: flex-end;
  isolation: isolate;
  overflow: hidden;
}
.page-hero .hero-copy { text-align: left; padding-bottom: 3.5rem; padding-top: calc(var(--header) + 2rem); }

/* Manifesto */
.manifesto { text-align: center; }
.manifesto .lede { max-width: 42rem; margin: 0 auto; }
.manifesto .rule { max-width: var(--wide); margin: 3rem auto 0; }

/* Cards / offerings */
.cards {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0.85rem;
}
.card {
  background: var(--cream);
  color: var(--ink);
  padding: 1.5rem 1.35rem 1.4rem;
  border-radius: var(--radius);
  display: flex;
  flex-direction: column;
  min-height: 14.5rem;
  text-decoration: none;
}
.card h3 { margin: 0 0 0.65rem; }
.card p { font-size: 0.95rem; color: var(--muted); flex: 1; }
.card .card-link {
  margin-top: 1.15rem;
  font-size: 0.75rem;
  letter-spacing: 0.08em;
  text-decoration: none;
  color: var(--ink);
}
.price {
  font-family: var(--font-display);
  font-size: 2.4rem;
  line-height: 1;
  margin: 0.35rem 0 0.6rem;
}
.price span { font-size: 1rem; letter-spacing: 0; }

/* Offer band */
.offer-band {
  text-align: center;
}
.offer-band h2 { max-width: 18ch; margin-inline: auto; }

/* Schedule list */
.dates { list-style: none; margin-top: 1.25rem; }
.dates li {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  padding: 0.7rem 0;
  border-top: 1px solid var(--rule);
  font-size: 0.98rem;
}
.dark .dates li { border-color: var(--rule-dark); }
.dates li:last-child { border-bottom: 1px solid var(--rule); }
.dark .dates li:last-child { border-bottom-color: var(--rule-dark); }
.dates .when { color: var(--muted); white-space: nowrap; }
.dark .dates .when { color: var(--on-dark-muted); }

/* FAQ */
.faq { max-width: 44rem; }
.faq + .faq { margin-top: 2.5rem; }
.faq h3 { margin-bottom: 0.75rem; }
details {
  border-top: 1px solid var(--rule);
  padding: 0;
}
details:last-child { border-bottom: 1px solid var(--rule); }
.dark details { border-color: var(--rule-dark); }
summary {
  cursor: pointer;
  list-style: none;
  padding: 1.05rem 2rem 1.05rem 0;
  font-weight: 500;
  position: relative;
  display: block;
}
summary::-webkit-details-marker { display: none; }
summary::after {
  content: "";
  position: absolute;
  right: 0;
  top: 50%;
  width: 12px;
  height: 12px;
  border-right: 1px solid currentColor;
  border-bottom: 1px solid currentColor;
  transform: translateY(-70%) rotate(45deg);
  transition: transform 0.2s ease;
}
details[open] summary::after { transform: translateY(-20%) rotate(225deg); }
summary:focus-visible { outline: 2px solid var(--forest); outline-offset: 3px; }
details .answer {
  padding: 0 0 1.2rem;
  color: var(--muted);
  max-width: 40rem;
}
.dark details .answer { color: var(--on-dark-muted); }

/* Forms */
.form-frame {
  width: 100%;
  min-height: 640px;
  border: 0;
  background: var(--cream);
  border-radius: var(--radius);
}
.newsletter {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(1.5rem, 5vw, 4rem);
  align-items: start;
}
.field { display: flex; flex-direction: column; gap: 0.35rem; margin-bottom: 0.9rem; }
.field label { font-size: 0.8rem; letter-spacing: 0.04em; }
.field input, .field textarea, .field select {
  background: transparent;
  border: 0;
  border-bottom: 1px solid var(--rule);
  border-radius: 0;
  padding: 0.65rem 0;
  width: 100%;
}
.dark .field input, .dark .field textarea { border-color: var(--rule-dark); color: var(--on-dark); }
.field input:focus, .field textarea:focus {
  outline: none;
  border-bottom-color: var(--ink);
}
.dark .field input:focus { border-bottom-color: var(--cream); }
.form-note { font-size: 0.85rem; color: var(--muted); margin-top: 0.75rem; }
.dark .form-note { color: var(--on-dark-muted); }

/* Contact facts */
.facts {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 2rem;
}
.facts a { text-decoration: none; }

/* Footer */
.site-footer {
  background: var(--forest-deep);
  color: var(--on-dark);
  padding: 3.5rem 0 2rem;
  font-size: 0.92rem;
}
.footer-grid {
  display: grid;
  grid-template-columns: 1.3fr 1fr 1fr 1fr;
  gap: 2rem;
}
.site-footer a { text-decoration: none; }
.site-footer a:hover, .site-footer a:focus-visible { text-decoration: none; }
.footer-col h3, .footer-col p.foot-label {
  font-family: var(--font-sans);
  font-size: 0.6875rem;
  font-weight: 500;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--on-dark-muted);
  margin-bottom: 0.9rem;
}
.footer-col ul { list-style: none; }
.footer-col li + li { margin-top: 0.4rem; }
.footer-logo { height: 42px; width: auto; margin-bottom: 1rem; }
.footer-bottom {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 0.75rem;
  margin-top: 3rem;
  padding-top: 1.25rem;
  border-top: 1px solid var(--rule-dark);
  color: var(--on-dark-muted);
  font-size: 0.8rem;
}

/* Proof / awards */
.proof {
  display: flex;
  flex-wrap: wrap;
  gap: 1.25rem 2.5rem;
  align-items: baseline;
  margin-top: 1.5rem;
}
.proof strong {
  font-family: var(--font-display);
  font-size: 2rem;
  font-weight: 400;
  display: block;
  line-height: 1;
}

/* Legal */
.legal { max-width: 46rem; }
.legal h1 { font-size: clamp(2.2rem, 5vw, 3.5rem); margin: 0 0 1.5rem; }
.legal h2 { font-size: 1.45rem; margin: 2.2rem 0 0.7rem; }
.legal p + p { margin-top: 0.9rem; }
.legal-page { padding-top: calc(var(--header) + 3rem); }

/* Packs */
.packs {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0.85rem;
}
.pack {
  border: 1px solid var(--rule);
  padding: 1.4rem 1.2rem;
  border-radius: var(--radius);
}
.dark .pack { border-color: var(--rule-dark); }
.pack.featured {
  background: var(--cream);
  color: var(--ink);
  border-color: var(--cream);
}

/* Misc */
.sr-only {
  position: absolute;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0,0,0,0);
  white-space: nowrap; border: 0;
}
.center { text-align: center; }
.max { max-width: var(--measure); }
.max-c { max-width: var(--measure); margin-inline: auto; }
.mt-s { margin-top: 0.75rem; }
.mt { margin-top: 1.25rem; }
.mt-l { margin-top: 2rem; }
.creds { list-style: none; }
.creds li {
  padding: 0.65rem 0;
  border-top: 1px solid var(--rule);
}
.creds li:last-child { border-bottom: 1px solid var(--rule); }

/* Responsive */
@media (max-width: 960px) {
  .split, .split.reverse, .newsletter, .footer-grid, .facts {
    grid-template-columns: 1fr;
    direction: ltr;
  }
  .split img, .split .media { height: min(58vh, 460px); }
  .cards { grid-template-columns: 1fr 1fr; }
  .packs { grid-template-columns: 1fr 1fr; }
  .hero-links { grid-template-columns: 1fr 1fr; }
  .hero-links a { border-bottom: 1px solid var(--rule-dark); }
  .footer-grid { gap: 2rem 1.5rem; }
}
@media (max-width: 620px) {
  .cards, .packs, .facts { grid-template-columns: 1fr; }
  .hero-links { grid-template-columns: 1fr; }
  .hero-links a { border-right: 0; padding: 0.85rem 0; }
  .logo img { height: 30px; max-width: 150px; }
  .header-btn.book-desk { display: none; }
  .dates li { flex-direction: column; gap: 0.15rem; }
  h1, .display { font-size: clamp(2.35rem, 11vw, 3.4rem); }
  .hero { min-height: 92vh; }
  .hero-copy { padding-bottom: 1.5rem; }
  .card { min-height: 0; }
}
@media (min-width: 621px) {
  .header-btn.book-mob { display: none; }
}

/* Print */
@media print {
  .site-header, .site-menu, .menu-toggle, .hero-media, .hero-shade { display: none; }
  body { background: #fff; color: #000; }
  .hero, .page-hero { min-height: 0; color: #000; }
}

/* Three-up cards: no inline styles, so breakpoints still apply */
.cards-3 { grid-template-columns: repeat(3, 1fr); }
.cards-2 { grid-template-columns: 1fr 1fr; }
@media (max-width: 960px) {
  .cards-3 { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 620px) {
  .cards-3, .cards-2 { grid-template-columns: 1fr; }
}

/* Solid header for pages without a photo hero (legal) */
.site-header.is-solid {
  background: rgba(20, 26, 24, 0.96);
  color: var(--on-dark);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
}

/* Avoid overflow from long unbroken strings */
.legal p, .answer p, .card p { overflow-wrap: break-word; }

.hero h1, .page-hero h1,
.hero .offer, .page-hero .offer,
.hero .eyebrow, .page-hero .eyebrow {
  text-shadow: 0 1px 18px rgba(0, 0, 0, 0.45);
}
.hero-shade,
.page-hero .hero-shade {
  background: linear-gradient(
    to top,
    rgba(15, 18, 17, 0.88) 0%,
    rgba(15, 18, 17, 0.42) 48%,
    rgba(15, 18, 17, 0.32) 100%
  );
}
.page-hero .hero-media img {
  object-position: center 45%;
}
.legal h2 {
  font-family: var(--font-sans);
  font-size: 0.78rem;
  font-weight: 500;
  letter-spacing: 0.1em;
  line-height: 1.4;
}

/* ---- Hero video ---- */
.hero-media video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 42%;
  z-index: 1;
}
.hero-media .hero-still {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 30%;
}
@media (prefers-reduced-motion: reduce) {
  .hero-media video { display: none; }
}

/* ---- Reviews ---- */
.reviews h2 {
  max-width: 18ch;
}
.reviews-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.5rem 2.5rem;
}
.reviews-three { grid-template-columns: 1fr 1fr 1fr; }
.reviews-one { grid-template-columns: 1fr; max-width: 46rem; }
.review {
  margin: 0;
  padding: 1.6rem 0 0.4rem;
  border-top: 1px solid var(--rule-dark);
}
.review blockquote {
  margin: 0;
  font-family: var(--font-display);
  font-size: clamp(1.15rem, 2vw, 1.55rem);
  font-weight: 400;
  font-style: italic;
  line-height: 1.4;
  color: var(--cream);
}
.review blockquote p { margin: 0 0 0.7em; overflow-wrap: break-word; }
.review blockquote p:last-child { margin-bottom: 0; }
.review figcaption {
  margin-top: 1.15rem;
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.45rem 1rem;
  font-family: var(--font-sans);
  font-size: 0.78rem;
  letter-spacing: 0.04em;
  color: var(--on-dark-muted);
}
.review cite {
  font-style: normal;
  font-weight: 500;
  color: var(--cream);
}
.review .stars {
  color: var(--sand);
  letter-spacing: 0.12em;
  font-size: 0.72rem;
}
.review-src { opacity: 0.85; }
.reviews-more { margin-top: 2rem; }
@media (max-width: 960px) {
  .reviews-three { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 620px) {
  .reviews-grid, .reviews-three { grid-template-columns: 1fr; }
}

/* ---- Photo gallery and breaks ---- */
.gallery {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.7rem;
}
.gallery picture,
.gallery img {
  display: block;
  width: 100%;
  height: min(58vh, 520px);
  object-fit: cover;
}
.gallery picture img { width: 100%; height: 100%; object-fit: cover; }
@media (max-width: 620px) {
  .gallery { grid-template-columns: 1fr; }
  .gallery picture,
  .gallery img { height: min(52vh, 420px); }
}

.photo-break {
  padding: 0;
  background: var(--forest-deep);
}
.photo-break picture,
.photo-break img,
.photo-break .break-img {
  display: block;
  width: 100%;
  height: min(72vh, 760px);
  object-fit: cover;
  object-position: center 60%;
}
.photo-break picture img { width: 100%; height: 100%; object-fit: cover; object-position: center 60%; }

/* Picture elements in splits and heroes */
.split picture,
.hero-media picture,
.page-hero .hero-media picture {
  display: block;
  width: 100%;
  height: 100%;
}
.split picture img,
.hero-media picture img,
.page-hero .hero-media picture img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.page-hero .hero-media img.pos-face { object-position: center 58%; }
.page-hero .hero-media img.pos-upper { object-position: center 78%; }
.page-hero .hero-media img.pos-mid { object-position: center 50%; }

/* Split pictures need the same height as bare imgs */
.split picture { height: min(80vh, 720px); }
@media (max-width: 960px) {
  .split picture { height: min(58vh, 460px); }
}

.split img.pos-lower, .split picture img.pos-lower { object-position: center 68%; }


/* ==== POLISH + DESIGN SYSTEM (Nov 2026) ================================
   Six reusable section patterns, used on every page:
     1. .hero / .page-hero     — full-bleed photo or video, lower-third type,
                                 consistent scrim, cream type on a dark veil
     2. .split                 — image + text, 4:5 photo (3:2 if .split-land),
                                 shared radius, same gap and type
     3. .reviews               — dark quote band
     4. .photo-break           — full-bleed editorial still, no type
     5. .cta-band / .offer-band / .newsletter — short call to action
                                 (forest for offers, dark for mail / close)
     6. .section.cream|.sand   — simple text, cards, forms, FAQ, legal prose
   Background rhythm: photo → optional dark manifesto → cream content →
   dark support (quotes) → cream → optional photo-break → dark CTA → footer.
   Forest is reserved for offer CTAs only.
   ==================================================================== */

/* --- Type & colour on every surface --- */
.eyebrow {
  font-size: 0.75rem;
  color: var(--muted);
}
.dark .eyebrow,
.forest .eyebrow,
.hero .eyebrow,
.page-hero .eyebrow,
.site-footer .eyebrow,
.site-footer .foot-label,
.footer-col h3,
.footer-col p.foot-label {
  color: var(--on-dark);
}
.muted { color: var(--muted); }
.dark .muted,
.forest .muted,
.dark .form-note,
.forest .form-note,
.dark details .answer,
.forest details .answer,
.dark .dates .when,
.forest .dates .when,
.footer-bottom,
.menu-meta {
  color: var(--on-dark-muted);
}
.card p { color: var(--muted); }

/* --- Links: no underlines, recognizable by weight; visible focus --- */
a,
a:hover,
a:focus,
a:active,
a:visited,
.card-link,
.facts a,
.hero .offer a,
.page-hero .offer a,
.menu-meta a,
.menu-nav a,
.site-footer a,
.site-footer a:hover,
.site-footer a:focus-visible,
.form-note a,
.legal a {
  text-decoration: none;
}
p a, li a, .form-note a, .legal a, .answer a, .facts a, .stack a {
  font-weight: 600;
}
p a:hover, li a:hover, .form-note a:hover, .legal a:hover,
.answer a:hover, .facts a:hover, .stack a:hover,
p a:focus-visible, li a:focus-visible, .form-note a:focus-visible,
.legal a:focus-visible, .answer a:focus-visible, .facts a:focus-visible {
  color: var(--forest);
}
.dark p a:hover, .forest p a:hover,
.dark p a:focus-visible, .forest p a:focus-visible,
.dark .form-note a:hover, .forest .form-note a:hover,
.dark li a:hover, .forest li a:hover,
.site-footer a:hover, .site-footer a:focus-visible {
  color: var(--sand);
}
.hero p a:hover, .page-hero p a:hover,
.hero p a:focus-visible, .page-hero p a:focus-visible,
.hero .offer a:hover, .page-hero .offer a:hover {
  color: var(--sand);
}
.card-link {
  text-decoration: none;
  font-weight: 600;
  letter-spacing: 0.08em;
  color: var(--ink);
}
a:focus-visible,
button:focus-visible,
.btn:focus-visible,
.header-btn:focus-visible,
.menu-toggle:focus-visible,
summary:focus-visible,
input:focus-visible,
textarea:focus-visible {
  outline: 2px solid currentColor;
  outline-offset: 3px;
}
.btn:hover { outline: none; }
.btn:focus-visible {
  outline: 2px solid currentColor;
  outline-offset: 3px;
}

/* --- Header: always frosted dark, so type never sits raw on a photo --- */
.site-header,
.site-header.is-scrolled,
.site-header.on-light,
.site-header.on-light.is-scrolled,
.site-header.is-solid {
  background: rgba(20, 26, 24, 0.92);
  color: var(--on-dark);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  box-shadow: 0 1px 0 var(--rule-dark);
}
.header-btn,
.menu-toggle {
  font-size: 0.75rem;
  color: var(--on-dark);
}
.header-btn {
  border-color: rgba(244, 239, 230, 0.85);
}

/* --- Hero: one scrim, one type colour, enough veil for bright autumn photos --- */
.hero-shade,
.page-hero .hero-shade {
  background: linear-gradient(
    to top,
    rgba(15, 18, 17, 0.94) 0%,
    rgba(15, 18, 17, 0.72) 40%,
    rgba(15, 18, 17, 0.55) 68%,
    rgba(15, 18, 17, 0.52) 100%
  );
}
.hero,
.page-hero {
  color: var(--on-dark);
}
.page-hero {
  min-height: 75vh;
  min-height: 75dvh;
}
.hero h1, .page-hero h1,
.hero .offer, .page-hero .offer,
.hero .eyebrow, .page-hero .eyebrow {
  color: var(--on-dark);
  text-shadow: 0 1px 18px rgba(0, 0, 0, 0.45);
}
.hero .offer a, .page-hero .offer a {
  color: var(--on-dark);
  text-decoration: none;
  font-weight: 500;
}

/* --- Pattern 2: image + text split --- */
.split img,
.split .media,
.split picture {
  width: 100%;
  aspect-ratio: 4 / 5;
  height: auto;
  max-height: 36rem;
  object-fit: cover;
  border-radius: var(--radius);
}
.split picture img,
.split img.pos-lower,
.split picture img.pos-lower {
  width: 100%;
  height: 100%;
  aspect-ratio: auto;
  max-height: none;
  object-fit: cover;
  border-radius: inherit;
}
.split-land img,
.split-land .media,
.split-land picture {
  aspect-ratio: 3 / 2;
  max-height: 32rem;
}
@media (max-width: 960px) {
  .split img, .split .media, .split picture {
    max-height: 28rem;
  }
}

/* --- Pattern 3: quote band --- */
.review figcaption,
.review-src {
  color: var(--on-dark-muted);
  opacity: 1;
}
.review cite { color: var(--on-dark); }
.review .stars { color: var(--sand); }

/* --- Pattern 4: full-bleed image --- */
.photo-break picture,
.photo-break img,
.photo-break .break-img,
.photo-break picture img {
  height: min(64vh, 680px);
  object-fit: cover;
}

/* --- Pattern 5: CTA bands --- */
.offer-band,
.cta-band.offer-band {
  text-align: center;
}
.newsletter {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(1.5rem, 5vw, 4.5rem);
  align-items: start;
}

/* --- Pattern 6: cards, packs, forms on light and dark --- */
.card {
  background: var(--cream-soft);
  color: var(--ink);
  border: 1px solid var(--rule);
  text-decoration: none;
}
.dark .card,
.forest .card {
  background: var(--cream);
  color: var(--ink);
  border-color: transparent;
}
.pack.featured {
  background: var(--ink);
  color: var(--on-dark);
  border-color: var(--ink);
}
.dark .pack.featured,
.forest .pack.featured {
  background: var(--cream);
  color: var(--ink);
  border-color: var(--cream);
}

/* Footer type: cream, not grey */
.site-footer { color: var(--on-dark); }
.site-footer a { color: var(--on-dark); }
.footer-bottom { color: var(--on-dark-muted); font-size: 0.875rem; }

/* Form notes and small print: never fade below AA */
.form-note { color: var(--muted); font-size: 0.875rem; }

.offer-band .btn-row,
.cta-band .btn-row { justify-content: center; }
.lion-emblem { width: 140px; height: auto; margin-top: 1rem; }

.pack.featured .btn,
.pack.featured .btn-solid {
  background: var(--cream);
  color: var(--ink);
  border-color: var(--cream);
}
.pack.featured .btn:hover,
.pack.featured .btn:focus-visible,
.pack.featured .btn-solid:hover,
.pack.featured .btn-solid:focus-visible {
  background: transparent;
  color: var(--cream);
  border-color: var(--cream);
  outline: 2px solid var(--cream);
  outline-offset: 3px;
}
.dark .pack.featured .btn-solid,
.forest .pack.featured .btn-solid {
  background: var(--ink);
  color: var(--cream);
  border-color: var(--ink);
}
.dark .pack.featured .btn-solid:hover,
.dark .pack.featured .btn-solid:focus-visible {
  background: transparent;
  color: var(--ink);
  border-color: var(--ink);
}

/* Prices inside cards must keep the display size (.card p would otherwise shrink them) */
.card .price {
  font-family: var(--font-display);
  font-size: 2.2rem;
  line-height: 1;
  color: var(--ink);
  font-weight: 400;
  margin: 0.35rem 0 0.7rem;
}
.card .price span {
  font-family: var(--font-sans);
  font-size: 0.85rem;
  letter-spacing: 0.04em;
  font-weight: 500;
  margin-left: 0.45rem;
  color: var(--muted);
}

.measure { max-width: var(--measure); margin-inline: auto; }
.packs + .btn-row { margin-top: 2.25rem; justify-content: center; }

/* ====================================================================
   Elevation pass: hero crop, journey, sessions, features, process
   ==================================================================== */

/* Bright outdoor hero (mountain lake): keep Sandy in frame, heavier veil for AA */
.hero-media img.pos-lake,
.hero-media picture img.pos-lake,
.photo-break img.pos-lake,
.photo-break picture img.pos-lake {
  object-position: center 78%;
}
/* Seated-at-the-lake is a taller frame; sit her (and the raised arms) in the viewport. */
.page-hero .hero-media img.pos-lake-seated,
.page-hero .hero-media picture img.pos-lake-seated {
  object-position: center 58%;
}
.photo-break img.pos-lake-tree,
.photo-break picture img.pos-lake-tree {
  object-position: center 42%;
}
.hero-bright .hero-shade {
  background: linear-gradient(
    to top,
    rgba(15, 18, 17, 0.92) 0%,
    rgba(15, 18, 17, 0.78) 38%,
    rgba(15, 18, 17, 0.50) 62%,
    rgba(15, 18, 17, 0.48) 100%
  );
}
.hero-lede {
  font-family: var(--font-sans);
  font-size: clamp(1rem, 1.8vw, 1.2rem);
  line-height: 1.6;
  font-weight: 400;
  max-width: 36rem;
  margin: 0.85rem auto 0;
  color: var(--on-dark);
}
.page-hero .hero-lede {
  margin-left: 0;
  margin-right: auto;
  max-width: 34rem;
}
.hero-cta {
  justify-content: center;
  margin-top: 1.6rem;
}
.hero-bright .hero-copy {
  padding-bottom: 4.5rem;
}
.promise-line {
  font-family: var(--font-display);
  font-style: italic;
  font-size: clamp(1.15rem, 2vw, 1.5rem);
  margin: 0.5rem auto 0;
  max-width: 28rem;
  color: var(--on-dark);
}

/* Four foundations */
.pillars {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1.15rem;
}
.pillars figure { margin: 0; }
.pillars img,
.pillars picture,
.pillars picture img {
  display: block;
  width: 100%;
  height: 22rem;
  object-fit: cover;
  border-radius: var(--radius);
}
.pillars picture img { height: 100%; }
.pillars picture { height: 22rem; }
.pillars figcaption {
  font-family: var(--font-display);
  font-size: clamp(1.25rem, 2vw, 1.6rem);
  margin-top: 0.85rem;
  text-align: center;
  color: var(--ink);
}

/* Beyond Wednesday — not identical cards */
.features {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(1.5rem, 4vw, 2.5rem);
}
.feature-main {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(1.5rem, 5vw, 4rem);
  align-items: center;
}
.feature img,
.feature picture,
.feature picture img {
  display: block;
  width: 100%;
  height: 22rem;
  object-fit: cover;
  border-radius: var(--radius);
}
.feature-main img,
.feature-main picture,
.feature-main picture img {
  height: min(36rem, 70vh);
}
.feature picture,
.feature-main picture { height: auto; }
.feature picture img,
.feature-main picture img { height: 100%; }
.feature .stack { padding-top: 0.25rem; }

/* Six-stage journey */
.journey-steps {
  list-style: none;
  counter-reset: step;
  margin: 0;
  padding: 0;
}
.journey-steps li {
  counter-increment: step;
  padding: 1.1rem 0 1.1rem 3.25rem;
  border-bottom: 1px solid var(--rule);
  position: relative;
}
.journey-steps li:last-child { border-bottom: 0; }
.journey-steps li::before {
  content: counter(step, decimal-leading-zero);
  position: absolute;
  left: 0;
  top: 1.15rem;
  font-family: var(--font-display);
  font-size: 1.15rem;
  letter-spacing: 0.06em;
  color: var(--muted);
}
.journey-steps h3 {
  font-size: clamp(1.25rem, 2.2vw, 1.65rem);
  margin: 0;
}
.journey-steps p {
  margin-top: 0.35rem;
  color: var(--muted);
}
.journey-close {
  font-family: var(--font-display);
  font-style: italic;
  font-size: clamp(1.4rem, 2.6vw, 2rem);
  text-align: center;
  margin-top: 3rem;
}

/* Upcoming session cards */
.session-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1rem;
}
.session-card {
  background: var(--cream);
  border: 1px solid var(--rule);
  border-radius: var(--radius);
  padding: 1.5rem 1.35rem 1.35rem;
}
.sand .session-card,
.cream .session-card { background: var(--cream-soft); }
.session-card h3 {
  font-size: clamp(1.25rem, 2vw, 1.55rem);
}
.session-meta {
  margin-top: 0.5rem;
  color: var(--muted);
  font-size: 0.95rem;
}
.session-card .btn-row { margin-top: 1.15rem; }

/* Occasions + process steps */
.occasions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.65rem 1.75rem;
  list-style: none;
  margin: 1.25rem 0 0;
  padding: 0;
  font-family: var(--font-display);
  font-size: clamp(1.35rem, 2.6vw, 1.85rem);
}
.process {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1.25rem 1.75rem;
  counter-reset: proc;
}
.process li {
  counter-increment: proc;
  padding-top: 2.4rem;
  position: relative;
}
.process li::before {
  content: counter(proc, decimal-leading-zero);
  position: absolute;
  top: 0;
  left: 0;
  font-family: var(--font-display);
  font-size: 1.1rem;
  letter-spacing: 0.08em;
  color: var(--muted);
}
.process li strong { display: block; font-family: var(--font-display); font-size: clamp(1.2rem, 2vw, 1.5rem); font-weight: 500; }
.facts cite.src,
cite.src {
  display: block;
  font-style: normal;
  font-size: 0.8rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--muted);
  margin-top: 0.45rem;
}

/* Newsletter consent */
.consent {
  display: flex;
  align-items: flex-start;
  gap: 0.65rem;
  font-size: 0.9rem;
  line-height: 1.5;
  color: var(--on-dark-muted);
  margin: 0.5rem 0 1rem;
}
.consent input {
  margin-top: 0.25rem;
  flex-shrink: 0;
  accent-color: var(--cream);
}

@media (max-width: 960px) {
  .pillars { grid-template-columns: 1fr 1fr; }
  .pillars img, .pillars picture, .pillars picture img, .pillars picture { height: 18rem; }
  .feature-main { grid-template-columns: 1fr; }
  .feature-main img, .feature-main picture, .feature-main picture img { height: 24rem; }
  .session-grid { grid-template-columns: 1fr 1fr; }
  .process { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 620px) {
  .pillars { grid-template-columns: 1fr 1fr; gap: 0.85rem; }
  .pillars img, .pillars picture, .pillars picture img, .pillars picture { height: 12rem; }
  .features { grid-template-columns: 1fr; }
  .feature img, .feature picture, .feature picture img { height: 18rem; }
  .session-grid { grid-template-columns: 1fr; }
  .process { grid-template-columns: 1fr; }
  .hero-bright .hero-copy { padding-bottom: 3rem; }
  .hero-cta { flex-direction: column; align-items: stretch; }
  .hero-cta .btn { text-align: center; }
}

/* Print already hides hero media; no extra needed */

.hero .btn,
.page-hero .btn {
  color: var(--on-dark);
  border-color: var(--on-dark);
}
.hero .btn-solid,
.page-hero .btn-solid,
.hero-bright .btn-solid {
  background: var(--cream);
  color: var(--ink);
  border-color: var(--cream);
}
.hero .btn-solid:hover,
.hero .btn-solid:focus-visible,
.page-hero .btn-solid:hover,
.page-hero .btn-solid:focus-visible {
  background: var(--on-dark);
  color: var(--ink);
  border-color: var(--on-dark);
}


/* --- Gaps pass: session blurbs, draft notes, promise terms, YUNITY options --- */
.session-desc {
  margin-top: 0.7rem;
  font-size: 0.98rem;
  line-height: 1.55;
  color: var(--ink);
}
.dark .session-desc,
.forest .session-desc { color: var(--on-dark); }

.draft-note {
  margin-top: 0.85rem;
  font-size: 0.92rem;
  letter-spacing: 0.01em;
  color: var(--ink);
  max-width: var(--measure);
}
.draft-note::before {
  content: none;
}
.sand .draft-note,
.cream .draft-note { color: var(--ink); }

.draft-flag {
  display: inline-block;
  margin-left: 0.55rem;
  font-family: var(--font-body);
  font-size: 0.72rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  font-weight: 500;
  color: var(--forest);
}

.promise-terms {
  margin: 1.15rem auto 0;
  max-width: 38rem;
  text-align: left;
}
.promise-terms summary {
  cursor: pointer;
  list-style: none;
  font-family: var(--font-body);
  font-size: 0.95rem;
  color: inherit;
  text-decoration: none;
}
.promise-terms summary::-webkit-details-marker { display: none; }
.promise-terms summary::before {
  content: "+ ";
  font-weight: 500;
}
.promise-terms[open] summary::before { content: "– "; }
.promise-terms summary:hover,
.promise-terms summary:focus-visible {
  text-decoration: none;
  outline: 2px solid currentColor;
  outline-offset: 3px;
}
.promise-terms-body {
  margin-top: 0.9rem;
}
.promise-terms-body p {
  margin-top: 0.65rem;
  font-size: 0.98rem;
  line-height: 1.65;
}
.forest .promise-terms,
.forest .promise-terms-body p,
.forest .promise-terms .form-note,
.forest .draft-flag { color: var(--cream); }
.forest .promise-terms a { color: var(--cream); }

.option-card .price { margin: 0.35rem 0 0.75rem; }
.option-card .btn-row { margin-top: 1.25rem; }

.season-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1rem;
}
.season-card {
  background: var(--cream);
  border: 1px solid var(--rule);
  border-radius: var(--radius);
  padding: 1.4rem 1.25rem 1.3rem;
}
.sand .season-card { background: var(--cream-soft); }
.season-card h3 {
  font-size: clamp(1.25rem, 2vw, 1.55rem);
  margin-top: 0.35rem;
}
.season-card p {
  margin-top: 0.65rem;
  font-size: 0.98rem;
  line-height: 1.55;
}

.form-frame-nl {
  min-height: 520px;
  background: var(--cream);
}

@media (max-width: 960px) {
  .season-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 620px) {
  .season-grid { grid-template-columns: 1fr; }
}

/* Later design-system .newsletter (1fr 1fr) overrode the 960px stack. Restore it. */
@media (max-width: 960px) {
  .newsletter {
    grid-template-columns: 1fr;
  }
}
@media (max-width: 620px) {
  .form-frame-nl { min-height: 580px; }
}
.promise-terms summary::marker { content: none; display: none; }

/* Five Wednesday session cards: no empty sixth slot.
   Desktop: two on the last row, centered. Below 960px: single column
   (overrides the 2-col rule, which would leave a lone fifth card). */
@media (min-width: 961px) {
  .session-grid:has(> .session-card:nth-child(5):last-child) {
    grid-template-columns: repeat(6, 1fr);
  }
  .session-grid:has(> .session-card:nth-child(5):last-child) > .session-card {
    grid-column: span 2;
  }
  .session-grid:has(> .session-card:nth-child(5):last-child) > .session-card:nth-child(4) {
    grid-column: 2 / span 2;
  }
  .session-grid:has(> .session-card:nth-child(5):last-child) > .session-card:nth-child(5) {
    grid-column: 4 / span 2;
  }
}
@media (max-width: 960px) {
  .session-grid:has(> .session-card:nth-child(5):last-child) {
    grid-template-columns: 1fr;
  }
}

/* ---- Home hero: headline in the sky, supporting copy below the figure ---- */
.hero.hero-bright {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  min-height: 0;
  color: var(--ink);
  overflow: visible;
  isolation: isolate;
  position: relative;
}
.hero-bright .hero-frame {
  position: relative;
  width: 100%;
  height: 100vh;
  height: 100dvh;
  overflow: hidden;
}
.hero-bright .hero-media {
  position: absolute;
  inset: 0;
  z-index: 0;
}
.hero-bright .hero-media img,
.hero-bright .hero-media picture,
.hero-bright .hero-media picture img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 46%;
}
.hero-bright .hero-shade { display: none; }
.hero-bright .hero-sky {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  z-index: 1;
  padding-top: calc(var(--header) + 0.85rem);
  pointer-events: none;
}
.hero-bright .hero-copy-sky {
  width: min(var(--wide), calc(100% - 2 * var(--space)));
  margin: 0 auto;
  text-align: center;
  padding: 0;
  color: var(--ink);
}
.hero-bright .hero-copy-sky .eyebrow {
  color: var(--ink);
  text-shadow: 0 1px 10px rgba(244, 239, 230, 0.65);
}
.hero-bright .hero-copy-sky h1 {
  color: var(--ink);
  text-shadow: 0 1px 14px rgba(244, 239, 230, 0.75);
  margin-bottom: 0;
}
.hero-bright .hero-below {
  position: relative;
  background: var(--cream);
  color: var(--ink);
  text-align: center;
  padding: 2.15rem 0 2.6rem;
  z-index: 1;
}
.hero-bright .hero-below .hero-lede {
  color: var(--ink);
  max-width: 36rem;
  margin: 0 auto;
}
.hero-bright .hero-below .offer {
  margin-top: 0.7rem;
  color: var(--ink);
}
.hero-bright .hero-below .offer a {
  color: var(--ink);
  text-decoration: none;
  text-shadow: none;
}
.hero-bright .hero-below .hero-cta {
  margin-top: 1.4rem;
  justify-content: center;
}
.hero-bright .hero-below .btn {
  color: var(--ink);
  border-color: var(--ink);
}
.hero-bright .hero-below .btn-solid {
  background: var(--ink);
  color: var(--cream);
  border-color: var(--ink);
}
.hero-bright .hero-below .btn-solid:hover,
.hero-bright .hero-below .btn-solid:focus-visible {
  background: var(--forest);
  color: var(--cream);
  border-color: var(--forest);
}
.hero-bright .hero-below .btn:hover,
.hero-bright .hero-below .btn:focus-visible {
  background: var(--ink);
  color: var(--cream);
}
@media (max-width: 620px) {
  .hero-bright .hero-frame {
    height: 100vh;
    height: 100dvh;
  }
  .hero-bright .hero-media img,
  .hero-bright .hero-media picture img {
    object-position: center 42%;
  }
  .hero-bright .hero-copy-sky h1 {
    font-size: clamp(2.1rem, 10vw, 3.1rem);
  }
  .hero-bright .hero-sky {
    padding-top: calc(var(--header) + 0.65rem);
  }
  .hero-bright .hero-below {
    padding: 1.75rem 0 2.15rem;
  }
}

/* Footer visit details */
.footer-col p + p { margin-top: 0.55rem; }
.footer-bottom a { text-decoration: none; }

/* Keep the legal row clear of the fixed Wix Headless preview badge */
.site-footer {
  padding-bottom: 4.75rem;
}

/* Waiver page: PDF body, site styling */
.waiver-doc .waiver-sub {
  font-family: var(--font-sans);
  font-size: 0.8rem;
  font-weight: 500;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  margin: -0.5rem 0 2rem;
  color: var(--ink);
}
.waiver-doc .waiver-notice {
  font-weight: 600;
  margin-bottom: 1.1rem;
}
.waiver-doc .sign-line {
  margin-top: 1.5rem;
  padding-bottom: 0.15rem;
  white-space: nowrap;
  overflow: hidden;
  max-width: 24rem;
  letter-spacing: 0;
}
.waiver-doc .waiver-cta { margin-top: 2.2rem; }
.waiver-doc h2 { font-size: 1.2rem; margin: 1.7rem 0 0.55rem; }

/* GST companion on price blocks — small, unobtrusive, next to the amount */
.gst,
.price .gst,
.card .price .gst,
.pack .price .gst {
  font-family: var(--font-sans);
  font-size: 0.7rem;
  font-weight: 500;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted);
  white-space: nowrap;
  display: inline-block;
  margin-left: 0.4rem;
  margin-right: 0.05rem;
  vertical-align: 0.55em;
  line-height: 1.2;
  font-style: normal;
}
.dark .gst,
.dark .price .gst {
  color: var(--on-dark-muted);
}
.footer-tax {
  flex-basis: 100%;
  margin: 0.2rem 0 0;
  font-size: 0.75rem;
  letter-spacing: 0.02em;
  color: var(--on-dark-muted);
}

/* At 390px, keep GST on one line and let the unit wrap underneath if needed */
@media (max-width: 420px) {
  .price .gst,
  .card .price .gst,
  .pack .price .gst {
    font-size: 0.65rem;
    letter-spacing: 0.06em;
  }
  .btn {
    white-space: normal;
    text-align: center;
  }
}

.price-inline { white-space: nowrap; }


/* ---- Polish pass ---- */
h1, h2 {
  text-wrap: pretty;
}
.cards,
.packs,
.cards-2,
.cards-3,
.season-grid {
  align-items: stretch;
}
.card,
.option-card,
.pack,
.session-card,
.season-card {
  display: flex;
  flex-direction: column;
  height: 100%;
}
.card .btn-row,
.option-card .btn-row,
.pack .btn-row,
.session-card .btn-row {
  margin-top: auto;
}
.min-note {
  flex: 0 0 auto;
  margin: 0 0 0.85rem;
  font-size: 0.82rem;
  line-height: 1.4;
  letter-spacing: 0.02em;
  color: var(--muted);
}
.card p.min-note,
.option-card .min-note {
  flex: 0 0 auto;
  font-size: 0.82rem;
  color: var(--muted);
}
.option-card .price {
  margin: 0.35rem 0 0.35rem;
}
.dark .min-note {
  color: var(--on-dark-muted);
}

/* ---- Compact type and vertical rhythm (less scrolling) ---- */
:root {
  --section-y: clamp(3rem, 6.2vw, 5.5rem);
  --section-y-sm: clamp(2rem, 4.2vw, 3.5rem);
  --space: clamp(1.1rem, 3.4vw, 2.65rem);
}
body {
  font-size: 1.0625rem; /* 17px */
  line-height: 1.65;
}
h1, .display {
  font-size: clamp(2.2rem, 5.2vw, 4.5rem);
  line-height: 1.02;
}
h2 {
  font-size: clamp(1.65rem, 3.3vw, 2.85rem);
  line-height: 1.12;
}
h3 {
  font-size: clamp(1.3rem, 2.1vw, 1.7rem);
  line-height: 1.22;
}
.lede {
  font-size: clamp(1.2rem, 1.9vw, 1.6rem);
  line-height: 1.45;
}
.eyebrow { margin-bottom: 0.6rem; }
.stack > * + * { margin-top: 1.05rem; }
.stack-lg > * + * { margin-top: 1.4rem; }
.mt { margin-top: 1rem; }
.mt-l { margin-top: 1.5rem; }
.btn {
  min-height: 2.75rem; /* 44px */
}
.btn-row { margin-top: 1.2rem; }
.header-btn,
.menu-toggle,
.menu-close {
  min-height: 2.75rem;
  min-width: 2.75rem;
}
.page-hero {
  min-height: 56vh;
  min-height: 56dvh;
}
.page-hero .hero-copy {
  padding-bottom: 2.15rem;
  padding-top: calc(var(--header) + 1.15rem);
}
.manifesto .rule { margin: 1.65rem auto 0; }
.card {
  min-height: 0;
  padding: 1.2rem 1.15rem 1.1rem;
}
.pack,
.session-card,
.season-card,
.option-card {
  padding: 1.15rem 1.1rem 1.05rem;
}
.card .price,
.pack .price,
.option-card .price,
.price {
  font-size: 2rem;
  margin: 0.25rem 0 0.5rem;
}
.card .price { font-size: 1.95rem; }
.photo-break picture,
.photo-break img,
.photo-break .break-img,
.photo-break picture img {
  height: min(46vh, 520px);
}
.split img,
.split .media,
.split picture {
  height: min(52vh, 540px);
}
.gallery picture,
.gallery img {
  height: min(48vh, 460px);
}
.legal-page { padding-top: calc(var(--header) + 1.75rem); }
.legal h1 { font-size: clamp(2rem, 4.2vw, 3rem); margin: 0 0 1.1rem; }
.legal h2 { margin: 1.35rem 0 0.5rem; }
.legal p + p { margin-top: 0.7rem; }
.waiver-doc h2 { margin: 1.2rem 0 0.4rem; }
.waiver-doc .waiver-cta { margin-top: 1.6rem; }
.faq + .faq { margin-top: 1.75rem; }
details .answer { padding: 0 0 0.95rem; }
summary { padding: 0.9rem 2rem 0.9rem 0; }
.journey-close { margin-top: 1.75rem; }
.reviews-more { margin-top: 1.4rem; }
.lion-emblem { margin-top: 0.75rem; }

@media (min-width: 621px) {
  body {
    font-size: 1.0625rem; /* 17px — top of 16–17 mobile / 17–18 desktop, kept so pages do not grow */
    line-height: 1.65;
  }
}

@media (max-width: 620px) {
  body {
    font-size: 1.03125rem; /* 16.5px */
    line-height: 1.62;
  }
  h1, .display {
    font-size: clamp(2.15rem, 8.8vw, 2.5rem);
    line-height: 1.06;
  }
  h2 {
    font-size: clamp(1.55rem, 6.6vw, 1.85rem);
    line-height: 1.14;
  }
  h3 { font-size: 1.28rem; }
  .lede {
    font-size: 1.18rem;
    line-height: 1.42;
  }
  .legal h1 { font-size: 2rem; }
  .legal h2 { font-size: 1.15rem; margin: 1.15rem 0 0.4rem; }
  .waiver-doc h2 { font-size: 1.1rem; margin: 1.05rem 0 0.35rem; }
  h1, .display { font-size: clamp(2.15rem, 8.8vw, 2.5rem); }
  /* Override the earlier 11vw mobile display size */
  .hero-bright .hero-copy-sky h1 {
    font-size: clamp(1.95rem, 8.4vw, 2.4rem);
  }
  .hero-bright .hero-frame {
    height: 90vh;
    height: 90dvh;
  }
  .hero-bright .hero-below {
    padding: 1.2rem 0 1.45rem;
  }
  .hero { min-height: 88vh; min-height: 88dvh; }
  .page-hero {
    min-height: 0;
    height: auto;
    min-height: min(48dvh, 22rem);
  }
  .page-hero .hero-copy {
    padding-bottom: 1.5rem;
    padding-top: calc(var(--header) + 0.85rem);
  }
  .photo-break picture,
  .photo-break img,
  .photo-break .break-img,
  .photo-break picture img {
    height: min(34vh, 17.5rem); /* cap ~280px */
  }
  .split img,
  .split .media,
  .split picture {
    height: min(36vh, 17.5rem);
    max-height: 17.5rem;
  }
  .gallery picture,
  .gallery img {
    height: min(34vh, 16.5rem);
  }
  .feature img,
  .feature picture,
  .feature picture img { height: 14rem; }
  .feature-main img,
  .feature-main picture,
  .feature-main picture img { height: 16rem; }
  .pillars img,
  .pillars picture,
  .pillars picture img,
  .pillars picture { height: 11rem; }
  .card .price,
  .pack .price,
  .option-card .price,
  .price {
    font-size: 1.85rem;
    margin: 0.2rem 0 0.4rem;
  }
  .card,
  .pack,
  .session-card,
  .season-card,
  .option-card {
    padding: 1.05rem 1rem 1rem;
  }
  .mt-l { margin-top: 1.25rem; }
  .hero-bright .hero-copy { padding-bottom: 1.5rem; }
  /* Keep form iframes tall enough to avoid clipped fields */
  /* .form-frame stays 640px */
}

/* Tap targets stay at least 44px, including FAQ summaries and header buttons */
summary {
  min-height: 2.75rem;
  display: flex;
  align-items: center;
}
.header-btn {
  box-sizing: border-box;
}


/* ---- Why Sacred Air (one heading, one photo) and YUNITY GST-once ----
   Same wrap, same spacing scale, same text alignment as other cream sections. */
.why-brand .why-copy {
  max-width: var(--measure);
}
.why-brand .lede {
  margin-top: 0.75rem;
}
.why-brand .why-photo {
  margin: 1.75rem 0 0;
}
.why-brand .why-photo img {
  width: 100%;
  height: min(46vh, 520px);
  object-fit: cover;
  object-position: center 35%;
  border-radius: var(--radius);
}
.gst-once {
  margin: 0.75rem 0 0;
  max-width: var(--measure);
  font-size: 0.95rem;
  line-height: 1.5;
  color: var(--muted);
}

@media (max-width: 620px) {
  .why-brand .why-photo {
    margin-top: 1.25rem;
  }
  .why-brand .why-photo img {
    height: min(34vh, 17.5rem);
  }
}


/* Fix split-land overflow at 390: a capped height plus a 3/2 aspect-ratio
   forced the photo (and the text column) to 420px, past the wrap.
   Width follows the wrap; height follows aspect-ratio, still capped. */
@media (max-width: 620px) {
  .split,
  .split > * {
    min-width: 0;
    max-width: 100%;
  }
  .split img,
  .split .media,
  .split picture {
    width: 100%;
    max-width: 100%;
    height: auto;
    max-height: min(34vh, 17.5rem);
  }
  .split picture img {
    width: 100%;
    max-width: 100%;
  }
}


/* ---- Copy-cut whitespace + Why Sacred Air logo / prana ----
   Slightly more space after fewer words. Type scale stays compact.
   Alignment grid (same wrap, same text-align, same spacing scale) unchanged. */
:root {
  --section-y: clamp(3.65rem, 7.2vw, 6.5rem);
  --section-y-sm: clamp(2.35rem, 5vw, 4.15rem);
}
.stack > * + * { margin-top: 1.25rem; }
.stack-lg > * + * { margin-top: 1.75rem; }
.mt-l { margin-top: 1.85rem; }
.btn-row { margin-top: 1.55rem; }
.cards,
.packs { gap: 1.15rem; }
.session-grid { gap: 1.25rem; }
.season-grid { gap: 1.25rem; }
.features { gap: clamp(1.75rem, 4.5vw, 3rem); }
.reviews-grid { gap: 2rem 3rem; }
.journey-steps li { padding: 0.95rem 0; }
.gst-once { margin-top: 1rem; }

.why-wrap {
  position: relative;
  overflow: hidden;
}
.why-brand { overflow: hidden; }
.why-logo-mark {
  position: absolute;
  right: 0;
  top: 6%;
  width: min(54%, 32rem);
  max-width: 100%;
  height: auto;
  pointer-events: none;
  user-select: none;
  z-index: 0;
  opacity: 0.055;
  transform: scale(1);
  transform-origin: 65% 40%;
  animation: why-breathe 8s ease-in-out infinite;
}
.why-copy,
.why-photo {
  position: relative;
  z-index: 1;
}
.why-prana {
  margin-top: 1.25rem;
  max-width: 28rem;
  font-family: var(--font-display);
  font-size: clamp(1.2rem, 1.9vw, 1.5rem);
  font-style: italic;
  font-weight: 500;
  line-height: 1.4;
  color: var(--ink);
  letter-spacing: 0.01em;
}
.why-brand {
  padding-top: calc(var(--section-y) + 0.5rem);
  padding-bottom: calc(var(--section-y) + 0.75rem);
}
.why-brand .lede { margin-top: 1rem; }
.why-brand .why-photo { margin-top: 2.25rem; }

@keyframes why-breathe {
  0%, 100% {
    opacity: 0.04;
    transform: scale(1);
  }
  50% {
    opacity: 0.085;
    transform: scale(1.035);
  }
}

@media (prefers-reduced-motion: reduce) {
  .why-logo-mark {
    animation: none !important;
    opacity: 0.06;
    transform: scale(1);
  }
}

@media (max-width: 620px) {
  .why-logo-mark {
    width: min(96%, 22rem);
    right: 2%;
    left: auto;
    top: 2%;
    opacity: 0.065;
    max-width: 100%;
  }
  .why-brand { padding-top: var(--section-y); padding-bottom: var(--section-y); }
  .why-brand .why-photo { margin-top: 1.65rem; }
  .mt-l { margin-top: 1.5rem; }
  .cards,
  .packs { gap: 1rem; }
}

/* Hide any leftover eyebrow/kicker if one is reintroduced */
.eyebrow { display: none; }