/* Public menu pages opt in explicitly. Admin, kiosk and booking applications
   retain their own layout. Shared rhythm first; page compositions below. */
.public-site {
  --site-width: 1200px;
  --site-gutter: clamp(20px, 3vw, 32px);
  --section-space: clamp(48px, 5.6vw, 80px);
  --card-space: clamp(20px, 2vw, 28px);
  --surface-warm: #fcf9f4;
  --line-soft: #d7e4e5;
  --shadow-soft: 0 6px 20px rgba(24, 65, 72, .05);
}
.public-site .container,
.public-site .container-lg {
  width: 100%;
  max-width: var(--site-width);
  padding-inline: var(--site-gutter);
}
.public-site h1 { font-size: clamp(1.9rem, 3.5vw, 3rem); line-height: 1.18; text-wrap: balance; }
.public-site .section-title { font-size: clamp(1.75rem, 2.8vw, 2.25rem); margin-bottom: 12px; text-wrap: balance; }
.public-site .section-text { max-width: 660px; font-size: 1rem; line-height: 1.65; margin-bottom: 28px; }
.public-site .lead,
.public-site .hero-subtitle { font-size: clamp(1rem, 1.5vw, 1.125rem); line-height: 1.65; }
.public-site .btn { min-height: 44px; display: inline-flex; align-items: center; justify-content: center; line-height: 1.4; }
.public-site :is(a, button, summary):focus-visible { outline: 3px solid #215f6d; outline-offset: 4px; }
.public-site :is(.hero-section, .hero, .blog-hero, .hero--compact) :is(a, button):focus-visible { outline-color: #fff; }
.public-site :is(.hero--compact, .hero, .blog-hero) {
  min-height: auto;
  margin: 0;
  padding: clamp(32px, 4.5vw, 64px) 0 !important;
  background-attachment: scroll;
}
.public-site :is(.hero--compact, .hero, .blog-hero) .container { padding-block: 0 !important; }
.public-site :is(.hero--compact, .hero, .blog-hero) h1 { margin-bottom: 12px; }
.public-site :is(.hero--compact, .hero, .blog-hero) :is(.lead, .hero-subtitle, .hero-kicker) { max-width: 680px; margin: 0 auto; }
.public-site :is(.hero-buttons, .hero-cta-row) { margin-top: 24px; }
.public-site main > section.py-5,
.public-site main.py-5,
.public-site #gifts-root > section.py-5 { padding-block: var(--section-space) !important; }
.public-site main > section + section { scroll-margin-top: 24px; }
.public-site .service-card {
  padding: var(--card-space);
  text-align: left;
  border-color: var(--line-soft);
  box-shadow: var(--shadow-soft);
  border-radius: 16px;
}
.public-site .service-card :is(h4, h5) { font-size: 1.3rem; line-height: 1.3; margin: 0 0 12px; text-wrap: balance; }
.public-site .service-card p { line-height: 1.65; margin-bottom: 20px; }
.public-site .service-card:hover { transform: translateY(-3px) !important; box-shadow: var(--shadow-soft); }
.public-site .eyebrow { color: #215f6d; font-size: .78rem; font-weight: 600; text-transform: uppercase; letter-spacing: .12em; }

/* One aligned header; the menu stays legible on its pale teal background. */
.public-site .navbar { padding-block: 12px; }
.public-site .navbar-brand img { height: 44px; width: auto; }
.public-site .navbar-brand-text { color: #23404a; }
.public-site .navbar-nav .nav-link { margin-inline: 3px; }
.public-site .navbar-nav .nav-link:hover { color: #153f49 !important; }
.public-site .navbar-nav .nav-link:hover::after { background: #153f49; }
.public-site .navbar .navbar-toggler { border-color: #52777d !important; }
.public-site .navbar .navbar-toggler-icon {
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%2323404a' stroke-linecap='round' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e") !important;
}

/* Home: an immersive opening followed by a continuous, readable sequence. */
.public-site.page-home #home {
  position: relative;
  isolation: isolate;
  display: grid;
  place-items: center;
  min-height: clamp(540px, 72svh, 720px);
  padding: 64px 0 !important;
  background: #24302e;
  text-align: center;
  color: #fff;
  overflow: hidden;
}
.page-home .hero-bg { position: absolute; inset: 0; z-index: -1; background: linear-gradient(90deg, rgba(12,22,23,.62), rgba(12,22,23,.38)), url('/images/hero/hero-bg.webp') center/cover; }
.page-home .hero-content { position: relative; }
.public-site.page-home .hero-title { max-width: 900px; margin: 0 auto 16px; font-size: clamp(2.1rem, 4vw, 3.5rem); }
.public-site.page-home .hero-subtitle { max-width: 620px; margin: 0 auto; }
.page-home .hero-helper { margin-top: 12px; font-size: .875rem; color: #f2f6f5; }
.page-home .hero-proof { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 12px; margin: 28px auto 0; font-size: .8rem; }
.page-home .hero-proof-label { color: #f2f6f5; }
.page-home .hero-proof-link { color: #fff; text-underline-offset: 4px; padding: 6px 0; }
.page-home .hero-proof-link:hover { color: #fff; }
.page-home #top-services .service-card { display: flex; flex-direction: column; padding: 20px; }
.page-home #top-services .service-image { order: -1; margin-bottom: 20px !important; }
.page-home #top-services .service-image img { width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: cover; }
.page-home #top-services .pill { align-self: flex-start; font-size: .7rem; line-height: 1.45; margin-bottom: 12px !important; padding: 0; background: none; border: 0; color: #52676c; font-weight: 500; }
.page-home #top-services .service-buttons { margin-top: auto; flex-wrap: wrap; justify-content: flex-start !important; }
.page-home #top-services .service-buttons .btn { flex: 1 1 auto; padding-inline: 16px; }
.page-home .segmented-tabs { position: relative; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); padding: 4px; background: #fff; border: 1px solid var(--line-soft); border-radius: 28px; }
.page-home .segmented-tab { position: relative; z-index: 1; min-height: 44px; padding: 8px 4px; border: 0; border-radius: 24px; background: transparent; color: #215f6d; font-size: .8rem; font-weight: 600; }
.page-home .segmented-tab[aria-selected='true'] { color: #fff; background: #215f6d; }
.page-home #svcTabs .active-indicator { display: none; }
.page-home #memberships-summary { background: var(--surface-warm) !important; }
.page-home .gift-ritual-card { height: 100%; background: #fff; border-top: 3px solid #c79861; }
.page-home .gift-ritual-card__content { display: flex; flex-direction: column; height: 100%; align-items: flex-start; }
.page-home .gift-ritual-card .pill { margin-bottom: 12px; }
.page-home .about-layout { display: grid; grid-template-columns: 1fr 1fr; align-items: center; gap: clamp(28px, 5vw, 72px); }
.page-home .about-image { min-height: 400px; height: 100%; border-radius: 20px; background: url('/images/hero/membership-hero.webp') center/cover; }
.page-home .about-copy { padding-block: 20px; }
.page-home .about-copy .section-title { text-align: left; }
.page-home .about-copy p { max-width: 54ch; }
.page-home #featured-journal { background: var(--surface-warm) !important; }
.page-home .journal-feature-link { display: block; height: 100%; text-decoration: none; }
.public-site.page-home .journal-card { position: relative; overflow: hidden; display: flex; align-items: flex-end; min-height: 250px; padding: 24px; background: linear-gradient(0deg, rgba(8,22,25,.88), rgba(8,22,25,.12)), var(--journal-bg) center/cover; border: 0; }
.page-home .journal-card__content { width: 100%; }
.page-home .journal-card .journal-tag { margin-bottom: 12px; background: transparent; border: 0; padding: 0; color: #fff; font-size: .75rem; }
.public-site.page-home .journal-card :is(h5, p) { color: #fff; }
.public-site.page-home .journal-card p { margin-bottom: 0; font-size: .95rem; }
.page-home .review-header { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 16px; }
.page-home .review-title { display: flex; align-items: center; gap: 8px; font-size: 1.3rem; margin: 0; }
.page-home .review-title img { height: 18px; width: auto; }
.page-home .review-card .reviews-list { max-height: 280px !important; }
.page-home .review-card .badge { font-size: .8rem; background: #215f6d !important; }

/* Treatments: choices lead, local context follows; cards use readable text. */
.public-site.page-services .hero-overlay { background: rgba(0,0,0,.12); }
.page-services #service-tabs { max-width: 720px; margin-inline: auto; }
.page-services .service-introduction { background: var(--surface-warm) !important; }
.page-services .service-introduction .container { max-width: 900px; }
.public-site.page-services .service-card > img { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; }

/* A reference menu needs a shorter reading line than a photo gallery. */
.public-site.page-pricing main { padding-block: var(--section-space); }
.public-site.page-pricing main > .container { max-width: 1040px; }
.page-pricing .page-intro { max-width: 65ch; }
.page-pricing .pricing-table { font-size: .95rem; }
.page-pricing .pricing-table th, .page-pricing .pricing-table td { padding: 14px 12px; }
.page-pricing .pricing-table .col-service { width: 60%; }
.page-pricing .pricing-table .col-price { width: 20%; }
.page-pricing .pricing-table .service-link-btn { line-height: 1.5; }

/* Offers and gifts grow with their real content, without narrow or offset rows. */
.public-site.page-offers .sanctuary-grid { grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); max-width: 1140px; margin-inline: auto; gap: 24px; align-items: start; }
.public-site.page-offers .sanctuary-card { min-height: auto; background: #fff; padding: var(--card-space); box-shadow: var(--shadow-soft); }
.public-site.page-offers .sanctuary-body { font-size: .95rem; line-height: 1.65; }
.public-site.page-offers .sanctuary-notes { font-size: .875rem; }
.public-site.page-offers .sanctuary-kicker { color: #526469; }
.public-site.page-offers .cta-button-link { margin-top: 12px; min-height: 44px; }
.page-gifts .gift-choices { padding: 40px 0 0; }
.public-site.page-gifts .entry-grid { margin-top: 0; gap: 24px; }
.public-site.page-gifts .entry-card { padding: var(--card-space); border-color: var(--line-soft); border-top: 3px solid #c79861; box-shadow: var(--shadow-soft); display: flex; flex-direction: column; align-items: flex-start; }
.public-site.page-gifts .entry-card h2 { font-size: 1.6rem; }
.public-site.page-gifts .entry-card ul { padding-left: 20px; }
.public-site.page-gifts .entry-card > .btn { margin-top: auto; width: auto !important; }
.public-site.page-gifts .voucher-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; }
.public-site.page-gifts .voucher-card { padding: 0; border-color: var(--line-soft); box-shadow: var(--shadow-soft); }
.public-site.page-gifts .voucher-card .card-body { text-align: left !important; padding: var(--card-space) !important; }
.public-site.page-gifts .voucher-card .card-header { padding: var(--card-space); }
.public-site.page-gifts .voucher-card .pill { align-self: flex-start; }
.public-site.page-gifts .voucher-card .btn { align-self: flex-start; width: auto !important; }

/* Journal: quiet reading measure and links, rather than another button wall. */
.public-site.page-journal main > .container { max-width: 1080px; }
.page-journal main section { max-width: 70ch; }
.public-site.page-journal .blog-card { box-shadow: none; border-color: var(--line-soft); background: #fff; }
.public-site.page-journal .blog-card .card-body { padding: var(--card-space); }
.page-journal .blog-card .btn { align-self: flex-start; }
.public-site.page-journal .blog-kicker { color: #526469; }
.public-site.page-journal .blog-hero .blog-kicker { color: #fff !important; }

/* Contact and intake use the same outer rhythm with task-sized interiors. */
.public-site.page-contact .contact-card { padding: var(--card-space); box-shadow: var(--shadow-soft); }
.page-contact .map-responsive { height: 100%; min-height: 360px; }
.page-contact .map-responsive iframe { display: block; height: 100%; min-height: 360px; }
.public-site.page-intake .hero--compact { padding-block: 32px !important; }
.public-site.page-intake .hero--compact > .container { max-width: 900px; }
.public-site.page-intake #intake-form-wrapper { padding-block: 32px 48px; }
.public-site.page-intake .intake-container { max-width: 900px; padding-inline: 20px; }
.public-site.page-intake .step-header { text-align: left; }
.public-site.page-intake .card { box-shadow: var(--shadow-soft); }

@media (min-width: 992px) and (max-width: 1199.98px) {
  .public-site .navbar-nav .nav-link { font-size: .85rem; margin-inline: 0; padding-inline: 7px; }
}
@media (max-width: 991.98px) {
  .public-site .navbar .navbar-collapse { border-radius: 12px; }
  .public-site .navbar-nav .nav-link:hover { color: #fff !important; }
  .public-site .navbar-nav .nav-link { min-height: 44px; }
  .public-site .dock { background: #fcfdfc; padding: 6px 12px calc(6px + env(safe-area-inset-bottom, 0px)); }
  .public-site .dock nav { gap: 4px; }
  .public-site .dockItem { flex-direction: column; gap: 5px; min-height: 54px; padding: 6px 2px; border: 0; border-radius: 10px; background: transparent; font-size: .75rem; line-height: 1.2; }
  .public-site .dockItem span { display: block; overflow: visible; white-space: nowrap; }
  .public-site .dockItem.dockAction { color: #215f6d; }
  .public-site .dockItem[aria-current="page"] { background: #e6f0ef; color: #153f49; }
  .public-site .dockItem > i { font-size: 1rem; }
  .public-site .dockItem .externalIcon { display: none; }
  .public-site .dockItem.dockCta { background: #215f6d; color: #fff; box-shadow: none; }
  .public-site #dantara-chat-root .dc-nudge { display: none !important; }
}
@media (max-width: 767.98px) {
  .public-site.page-home #home { min-height: auto; padding: 48px 0 !important; }
  .public-site.page-home .hero-title { font-size: 2rem; }
  .page-home .hero-proof { margin-top: 24px; gap: 8px 16px; }
  .page-home .hero-proof-label { flex-basis: 100%; }
  .page-home .about-layout { grid-template-columns: minmax(0, 1fr); gap: 24px; }
  .page-home .about-image { min-width: 0; min-height: 0; width: 100%; height: auto; aspect-ratio: 4 / 3; }
  .page-home .about-copy { padding: 0; }
  .public-site.page-home .journal-card { min-height: 230px; }
  .page-home .review-card .reviews-list { max-height: 250px !important; }
  .page-home #top-services .service-card { padding: 20px; }
  .public-site.page-gifts .voucher-grid { grid-template-columns: minmax(0, 1fr); }
  .public-site.page-gifts .entry-card ul { display: none; }
  .page-gifts .entry-card p { margin-bottom: 20px; }
  .public-site.page-gifts .entry-card > .btn { width: 100% !important; }
  .page-pricing .pricing-table { font-size: .85rem; }
  .page-pricing .pricing-table th, .page-pricing .pricing-table td { padding: 12px 6px; }
  .page-pricing .service-link-hint { display: none; }
  .page-pricing .pricing-table td:nth-child(2) { white-space: nowrap; }
  .page-pricing .pricing-table .col-service { width: 54%; }
  .page-contact .contact-actions .btn { flex: 1 1 130px; }
  .public-site.page-intake .hero--compact { padding: 48px 0 28px !important; }
  .public-site.page-intake .step-lang-toggle { justify-content: flex-start; }
  .public-site.page-intake .field-input { font-size: 16px; }
}
@media (prefers-reduced-motion: reduce) {
  .public-site .service-card:hover { transform: none !important; }
  .public-site *, .public-site *::before, .public-site *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; }
}
@media print {
  .public-site.page-pricing main { padding: 0; }
  .public-site.page-pricing .container { max-width: none; padding: 0; }
}

/* Reveal animations must not hide content or reduce reading contrast. */
.public-site .loading { opacity: 1; transform: none; }
.public-site.page-intake .privacy-link a { text-decoration: underline; text-underline-offset: 3px; }
