
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  font-family: 'Inter', system-ui, sans-serif;
  color: var(--text);
  background:
    radial-gradient(circle at top left, rgba(124, 146, 121, .10), transparent 24%),
    radial-gradient(circle at 100% 12%, rgba(7, 94, 68, .06), transparent 18%),
    radial-gradient(circle at 8% 100%, rgba(122, 158, 126, .10), transparent 18%),
    linear-gradient(180deg, #fcfdfb 0%, #f3f7f1 100%);
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
  position: relative;
}
body::before,
body::after {
  content: '';
  position: fixed;
  inset: auto;
  width: 34vw;
  height: 34vw;
  min-width: 220px;
  min-height: 220px;
  max-width: 520px;
  max-height: 520px;
  border-radius: 50%;
  pointer-events: none;
  z-index: -1;
  filter: blur(32px);
  opacity: .42;
}
body::before {
  top: -120px;
  right: -120px;
  background: radial-gradient(circle, rgba(137, 170, 133, .16) 0%, rgba(137, 170, 133, 0) 68%);
}
body::after {
  left: -150px;
  bottom: 10vh;
  background: radial-gradient(circle, rgba(7, 94, 68, .11) 0%, rgba(7, 94, 68, 0) 72%);
}
img { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-decoration: none; }
button { font: inherit; }
:root {
  --dark-green: #075e44;
  --mid-green: #2f6b1f;
  --sage: #7c9279;
  --sage-soft: #edf6e8;
  --grey: #c9d3c5;
  --grey-soft: #f3f7f1;
  --white: #ffffff;
  --text: #23332a;
  --text-soft: #5e6f64;
  --border: rgba(7, 94, 68, .10);
  --shadow-sm: 0 10px 30px rgba(18, 43, 24, .06);
  --shadow-md: 0 22px 60px rgba(18, 43, 24, .12);
  --shadow-lg: 0 28px 80px rgba(18, 43, 24, .16);
  --radius-sm: 14px;
  --radius-md: 22px;
  --radius-lg: 34px;
  --nav-h: 88px;
  --font-serif: 'Cormorant Garamond', Georgia, serif;
  --transition: .25s ease;
  --brand-accent: url('../brand-whisper.svg');
}

.container { width: min(1180px, calc(100% - 40px)); margin: 0 auto; }
.section { padding: 100px 0; }
.section-tight { padding: 76px 0; }
.eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 9px 15px;
  border-radius: 999px;
  background: var(--sage-soft);
  color: var(--mid-green);
  text-transform: uppercase;
  font-size: .75rem;
  font-weight: 700;
  letter-spacing: .12em;
  border: 1px solid rgba(47, 107, 31, .08);
}
.info-card > .eyebrow,
.quote-card > .eyebrow { margin-bottom: 16px; }
.section-header {
  max-width: 760px;
  margin-bottom: 54px;
}
.section-header.centered {
  position: relative;
  margin-inline: auto;
  text-align: center;
  padding-bottom: 0;
}
.section-header.centered::after {
  content: none;
}
.section-header h1,
.section-header h2,
.section-header h3,
.page-hero h1,
.hero-title,
.display-title {
  margin: 16px 0;
  font-family: var(--font-serif);
  font-weight: 600;
  line-height: 1.02;
  color: var(--dark-green);
}
.section-header p,
.lead,
.page-hero p,
.hero-sub { color: var(--text-soft); font-size: 1.06rem; }
.section-header.centered .eyebrow {
  box-shadow: 0 10px 20px rgba(124, 146, 121, .08);
}
.display-title { font-size: clamp(2.4rem, 5vw, 4.9rem); }
.section-title { font-size: clamp(2rem, 4vw, 3.2rem); }
.card-title { font-family: var(--font-serif); font-size: 1.72rem; margin: 0 0 12px; color: var(--dark-green); }
.text-link { color: var(--mid-green); font-weight: 700; }
.text-link:hover { color: var(--dark-green); }

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-height: 50px;
  padding: 12px 24px;
  border-radius: 999px;
  font-weight: 700;
  transition: transform var(--transition), background var(--transition), color var(--transition), border-color var(--transition), box-shadow var(--transition), opacity var(--transition);
}
.btn:hover { transform: translateY(-1px); }
.btn-primary { background: linear-gradient(135deg, var(--mid-green) 0%, #356f13 100%); color: var(--white); box-shadow: 0 14px 30px rgba(47, 107, 31, .22); }
.btn-primary:hover { background: linear-gradient(135deg, #295b18 0%, #2f6120 100%); }
.btn-outline { border: 1.5px solid rgba(7, 94, 68, .18); color: var(--dark-green); background: rgba(255,255,255,.92); }
.btn-outline:hover { background: var(--sage-soft); border-color: rgba(7, 94, 68, .3); }
.btn-soft { background: var(--sage-soft); color: var(--mid-green); }
.btn-soft:hover { background: #e1edd9; }
.btn-block { width: 100%; }
.button-row { display: flex; flex-wrap: wrap; gap: 14px; }

.skip-link {
  position: absolute;
  left: -999px;
  top: 8px;
  background: var(--dark-green);
  color: var(--white);
  padding: 10px 14px;
  border-radius: 8px;
  z-index: 2000;
}
.skip-link:focus { left: 8px; }

.site-header {
  position: sticky;
  top: 0;
  z-index: 1000;
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
  background: rgba(255,255,255,.92);
  border-bottom: 1px solid rgba(7,94,68,.08);
  transition: box-shadow var(--transition), border-color var(--transition), background var(--transition);
}
.site-header.scrolled { box-shadow: 0 10px 24px rgba(18, 43, 24, .07); border-color: rgba(7,94,68,.14); }
.nav-wrap {
  min-height: var(--nav-h);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
}
.logo {
  display: inline-flex;
  align-items: center;
  padding: 4px 0;
  flex-shrink: 0;
}
.logo img { width: auto; height: 76px; object-fit: contain; }
.nav-right { display: flex; align-items: center; gap: 18px; }
.nav-list {
  list-style: none;
  display: flex;
  align-items: center;
  gap: 2px;
  margin: 0;
  padding: 0;
}
.nav-list a {
  display: inline-flex;
  align-items: center;
  min-height: 42px;
  padding: 0 13px;
  border-radius: 999px;
  color: var(--text-soft);
  font-size: .95rem;
  font-weight: 600;
}
.nav-list a:hover,
.nav-list a.active { background: var(--sage-soft); color: var(--mid-green); }
.nav-cta { white-space: nowrap; }
.hamburger {
  display: none;
  width: 48px;
  height: 48px;
  border-radius: 14px;
  border: 1px solid rgba(7,94,68,.12);
  background: var(--white);
  align-items: center;
  justify-content: center;
  flex-direction: column;
  gap: 5px;
}
.hamburger span {
  display: block;
  width: 18px;
  height: 2px;
  border-radius: 2px;
  background: var(--dark-green);
  transition: transform var(--transition), opacity var(--transition);
}
.hamburger.open span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.hamburger.open span:nth-child(2) { opacity: 0; }
.hamburger.open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

.hero {
  position: relative;
  min-height: calc(100svh - var(--nav-h));
  display: grid;
  align-items: center;
  overflow: clip;
  background: #0f1710;
  padding: 10px 0 14px;
}
.hero::before {
  content: '';
  position: absolute;
  right: clamp(-70px, -5vw, -24px);
  top: 56px;
  width: min(36vw, 410px);
  aspect-ratio: 1 / 1;
  background:
    radial-gradient(circle at 72% 20%, rgba(137, 170, 133, .18) 0 9%, transparent 10%),
    radial-gradient(circle at 54% 38%, rgba(137, 170, 133, .14) 0 7%, transparent 8%),
    radial-gradient(circle at 34% 56%, rgba(137, 170, 133, .11) 0 5%, transparent 6%),
    var(--brand-accent) center / contain no-repeat;
  opacity: .16;
  z-index: 0;
  pointer-events: none;
  filter: drop-shadow(0 24px 40px rgba(0, 0, 0, .10));
}
.hero::after {
  content: '';
  position: absolute;
  inset: auto auto 40px -70px;
  width: 220px;
  height: 220px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(124,146,121,.16), rgba(124,146,121,0) 68%);
  pointer-events: none;
}
.hero-media,
.page-hero-media {
  position: absolute;
  inset: 0;
}
.hero-media img,
.page-hero-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.hero-media img.hero-image--event {
  object-position: 50% 62%;
}
.hero-overlay,
.page-hero-overlay {
  position: absolute;
  inset: 0;
  background:
    linear-gradient(180deg, rgba(3, 15, 10, .18) 0%, rgba(3, 15, 10, .36) 30%, rgba(3, 15, 10, .68) 100%),
    linear-gradient(90deg, rgba(8, 29, 21, .78) 0%, rgba(8, 29, 21, .50) 44%, rgba(8, 29, 21, .42) 100%),
    radial-gradient(circle at 80% 20%, rgba(124,146,121, .18), transparent 20%);
}
.hero-grid {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(360px, .76fr);
  gap: 24px;
  align-items: center;
  min-height: auto;
  padding: 18px 0 10px;
}
.hero-copy { max-width: 570px; color: var(--white); }
.hero-copy .eyebrow {
  background: rgba(255,255,255,.12);
  color: #e8f0e8;
  border-color: rgba(255,255,255,.16);
}
.hero-title {
  color: var(--white);
  font-size: clamp(2.8rem, 4.8vw, 4.7rem);
  margin: 12px 0 10px;
  text-wrap: balance;
}
.hero-sub { color: rgba(255,255,255,.88); max-width: 520px; font-size: .96rem; margin-bottom: 0; }
.hero-highlights {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  margin-top: 14px;
  max-width: 560px;
}
.hero-badge {
  padding: 12px 14px;
  border-radius: 20px;
  background: rgba(255,255,255,.10);
  border: 1px solid rgba(255,255,255,.14);
  color: rgba(255,255,255,.9);
  font-size: .88rem;
  line-height: 1.35;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.06);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}
.hero-badge strong { display: block; font-size: .76rem; letter-spacing: .05em; text-transform: uppercase; margin-bottom: 5px; color: #f3f8f1; }
.hero-badge span { display: block; }
.hero-card {
  background: linear-gradient(180deg, rgba(255,255,255,.98) 0%, rgba(246,250,244,.96) 100%);
  border: 1px solid rgba(255,255,255,.36);
  border-radius: 28px;
  padding: 24px 26px 20px;
  box-shadow: var(--shadow-lg);
  color: var(--text);
  position: relative;
  isolation: isolate;
  max-width: 455px;
  justify-self: end;
  overflow: hidden;
}
.hero-card::after {
  content: '';
  position: absolute;
  right: -34px;
  bottom: -48px;
  width: 170px;
  height: 170px;
  border-radius: 40% 60% 58% 42% / 40% 38% 62% 60%;
  background:
    radial-gradient(circle at 24% 28%, rgba(137, 170, 133, .22) 0 15%, transparent 16%),
    radial-gradient(circle at 44% 44%, rgba(137, 170, 133, .14) 0 10%, transparent 11%),
    linear-gradient(145deg, rgba(137, 170, 133, .22), rgba(7, 94, 68, .06) 72%, rgba(255,255,255,0) 100%);
  opacity: .65;
  z-index: 0;
  pointer-events: none;
  transform: rotate(-16deg);
}
.hero-card h2 { margin: 8px 0 10px; font-size: 1.6rem; font-family: var(--font-serif); color: var(--dark-green); line-height: 1.06; }
.hero-card p { margin: 0 0 12px; color: var(--text-soft); font-size: .95rem; }
.hero-card ul { list-style: none; padding: 0; margin: 0 0 14px; display: grid; gap: 7px; }
.hero-card li { display: grid; grid-template-columns: 14px 1fr; gap: 9px; align-items: start; color: var(--text-soft); font-size: .94rem; }
.hero-card li::before { content: '•'; color: var(--sage); font-size: 1.15rem; line-height: 1; margin-top: 2px; font-weight: 700; }

.quickfacts {
  position: relative;
  z-index: 2;
  padding: 0;
}
.quickfacts-strip {
  position: relative;
  z-index: 2;
  padding: 72px 0 80px;
  background: linear-gradient(180deg, #eef5ea 0%, #f3f7f1 100%);
}
.quickfacts-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
  align-items: stretch;
}
.quickfact {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  background: linear-gradient(180deg, rgba(255,255,255,.96) 0%, rgba(248,251,247,.96) 100%);
  border: 1px solid rgba(7,94,68,.09);
  border-radius: 22px;
  padding: 18px 18px;
  box-shadow: 0 16px 34px rgba(18, 43, 24, .08);
  min-height: 100%;
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}
.quickfact::after {
  content: '';
  position: absolute;
  right: -32px;
  bottom: -36px;
  width: 120px;
  height: 120px;
  border-radius: 42% 58% 58% 42% / 42% 38% 62% 58%;
  background:
    radial-gradient(circle at 24% 28%, rgba(137, 170, 133, .16) 0 14%, transparent 15%),
    radial-gradient(circle at 44% 44%, rgba(137, 170, 133, .10) 0 9%, transparent 10%),
    linear-gradient(145deg, rgba(137, 170, 133, .14), rgba(7, 94, 68, .04) 72%, rgba(255,255,255,0) 100%);
  opacity: .55;
  z-index: 0;
  pointer-events: none;
  transform: rotate(-14deg);
}
.quickfact .label {
  display: inline-block;
  margin-bottom: 6px;
  font-size: .76rem;
  text-transform: uppercase;
  letter-spacing: .12em;
  color: var(--sage);
  font-weight: 800;
}
.quickfact strong {
  display: block;
  font-size: 1rem;
  line-height: 1.28;
  color: var(--dark-green);
  margin-bottom: 6px;
}
.quickfact p { margin: 0; color: var(--text-soft); }

.page-hero {
  position: relative;
  min-height: 470px;
  display: flex;
  align-items: end;
  overflow: clip;
  background: #132016;
}
.page-hero::before {
  content: '';
  position: absolute;
  right: clamp(-56px, -4vw, -16px);
  top: clamp(66px, 12vw, 112px);
  width: min(26vw, 280px);
  aspect-ratio: 1 / 1;
  background:
    radial-gradient(circle at 70% 20%, rgba(137, 170, 133, .14) 0 8%, transparent 9%),
    radial-gradient(circle at 48% 40%, rgba(137, 170, 133, .10) 0 6%, transparent 7%),
    var(--brand-accent) center / contain no-repeat;
  opacity: .11;
  z-index: 0;
  pointer-events: none;
}
.page-hero .container { position: relative; z-index: 1; padding: 156px 0 66px; }
.page-hero h1 { color: var(--white); font-size: clamp(2.8rem, 5vw, 4.8rem); max-width: 860px; }
.page-hero p { color: rgba(255,255,255,.9); max-width: 760px; }
.page-hero .eyebrow { background: rgba(255,255,255,.12); color: #e5efe4; border-color: rgba(255,255,255,.14); }

.panel {
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
}

.intro-grid,
.split-grid,
.cta-grid,
.about-grid,
.contact-grid,
.dual-grid,
.footer-grid,
.page-intro-grid {
  display: grid;
  gap: 30px;
}
.intro-grid,
.page-intro-grid,
.about-grid,
.contact-grid,
.dual-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.intro-grid { grid-template-columns: minmax(320px, .9fr) minmax(0, 1fr); align-items: stretch; }
.cta-grid { grid-template-columns: minmax(0, 1.1fr) minmax(280px, .9fr); align-items: center; }
.footer-grid { grid-template-columns: 1.2fr repeat(3, .8fr); }

.image-frame {
  overflow: clip;
  border-radius: 30px;
  box-shadow: var(--shadow-md);
  position: relative;
}
.image-frame::after {
  content: '';
  position: absolute;
  inset: auto 18px 18px auto;
  width: 88px;
  height: 88px;
  border-radius: 28px;
  background: linear-gradient(135deg, rgba(137,170,133,.46), rgba(7,94,68,.58));
  filter: blur(0px);
  opacity: .72;
}
.image-frame img { width: 100%; height: 100%; object-fit: cover; }

.intro-card,
.copy-panel,
.info-card,
.service-card,
.condition-card,
.quote-card,
.approach-step,
.contact-card,
.hours-card,
.map-card,
.feature-card {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  background: linear-gradient(180deg, rgba(255,255,255,.98) 0%, #f8fbf7 100%);
  border: 1px solid var(--border);
  border-radius: 26px;
  box-shadow: var(--shadow-sm);
}
.intro-card,
.copy-panel,
.info-card,
.quote-card,
.hours-card,
.map-card { padding: 32px; }
.service-card,
.condition-card,
.approach-step,
.contact-card,
.feature-card { padding: 28px; }
.feature-card,
.service-card,
.condition-card,
.contact-card,
.approach-step {
  position: relative;
  overflow: hidden;
}
.intro-card::after,
.copy-panel::after,
.info-card::after,
.service-card::after,
.condition-card::after,
.quote-card::after,
.approach-step::after,
.contact-card::after,
.hours-card::after,
.map-card::after,
.feature-card::after,
.booking-shell::after,
.cta-box::after {
  content: '';
  position: absolute;
  right: -36px;
  bottom: -46px;
  width: 150px;
  height: 150px;
  border-radius: 42% 58% 56% 44% / 40% 36% 64% 60%;
  background:
    radial-gradient(circle at 26% 28%, rgba(137, 170, 133, .16) 0 14%, transparent 15%),
    radial-gradient(circle at 44% 44%, rgba(137, 170, 133, .11) 0 9%, transparent 10%),
    linear-gradient(145deg, rgba(137, 170, 133, .16), rgba(7, 94, 68, .05) 72%, rgba(255,255,255,0) 100%);
  opacity: .58;
  z-index: 0;
  pointer-events: none;
  transform: rotate(-14deg);
}
.hero-card > *,
.quickfact > *,
.intro-card > *,
.copy-panel > *,
.info-card > *,
.service-card > *,
.condition-card > *,
.quote-card > *,
.approach-step > *,
.contact-card > *,
.hours-card > *,
.map-card > *,
.feature-card > *,
.booking-shell > *,
.cta-box > *,
.highlight-panel > * {
  position: relative;
  z-index: 1;
}
.feature-card::before,
.service-card::before,
.condition-card::before,
.contact-card::before,
.approach-step::before {
  content: '';
  position: absolute;
  inset: 0 auto auto 0;
  width: 100%;
  height: 4px;
  background: linear-gradient(90deg, var(--dark-green), rgba(124,146,121,.95));
}
.feature-card:hover,
.service-card:hover,
.condition-card:hover,
.contact-card:hover,
.approach-step:hover,
.info-card:hover,
.quote-card:hover,
.hours-card:hover,
.map-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 20px 42px rgba(18, 43, 24, .10);
}
.feature-card,
.service-card,
.condition-card,
.contact-card,
.approach-step,
.info-card,
.quote-card,
.hours-card,
.map-card {
  transition: transform var(--transition), box-shadow var(--transition), border-color var(--transition);
}

.check-list,
.detail-list,
.hours-list,
.footer-list,
.info-list,
.mini-list {
  list-style: none;
  padding: 0;
  margin: 0;
}
.check-list,
.detail-list,
.mini-list { display: grid; gap: 12px; }
.check-list li,
.detail-list li,
.mini-list li {
  display: grid;
  grid-template-columns: 18px 1fr;
  gap: 12px;
  align-items: start;
  color: var(--text-soft);
}
.check-list li::before,
.detail-list li::before,
.mini-list li::before {
  content: '•';
  color: var(--dark-green);
  font-weight: 800;
}

.process-grid,
.feature-grid,
.services-grid,
.conditions-grid,
.cards-3,
.cards-4,
.contact-cards,
.qualifications-grid,
.faq-grid {
  display: grid;
  gap: 22px;
}
.process-grid,
.feature-grid,
.qualifications-grid,
.contact-cards { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.cards-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.cards-3,
.faq-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.services-grid,
.conditions-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }

.step-number,
.icon-badge {
  width: 52px;
  height: 52px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 18px;
  background: linear-gradient(135deg, rgba(124,146,121,.16), rgba(7,94,68,.14));
  color: var(--dark-green);
  font-weight: 800;
  margin-bottom: 18px;
  border: 1px solid rgba(7,94,68,.08);
}
.service-card h3,
.condition-card h3,
.approach-step h3,
.feature-card h3,
.contact-card h3,
.hours-card h3,
.map-card h3,
.info-card h3,
.quote-card h3 {
  margin: 0 0 12px;
  font-family: var(--font-serif);
  color: var(--dark-green);
  font-size: 1.62rem;
  line-height: 1.1;
}
.service-card p,
.condition-card p,
.approach-step p,
.feature-card p,
.contact-card p,
.hours-card p,
.map-card p,
.info-card p,
.quote-card p,
.copy-panel p,
.intro-card p { color: var(--text-soft); }
.kicker { display: inline-block; margin-bottom: 10px; font-size: .78rem; text-transform: uppercase; letter-spacing: .12em; color: var(--sage); font-weight: 800; }
.muted { color: var(--text-soft); }

.service-meta {
  display: grid;
  gap: 14px;
  margin-top: 18px;
  padding-top: 18px;
  border-top: 1px solid rgba(7,94,68,.08);
}
.service-meta div span {
  display: block;
  font-size: .78rem;
  text-transform: uppercase;
  letter-spacing: .08em;
  color: var(--sage);
  margin-bottom: 6px;
  font-weight: 800;
}
.service-meta div p { margin: 0; font-size: .96rem; }

.highlight-panel {
  background: linear-gradient(135deg, #0a5c42 0%, #2f6b1f 100%);
  color: var(--white);
  border-radius: 32px;
  padding: 36px;
  box-shadow: var(--shadow-lg);
  position: relative;
  isolation: isolate;
  overflow: hidden;
}
.highlight-panel::before {
  content: '';
  position: absolute;
  right: -10px;
  bottom: -30px;
  width: 220px;
  height: 220px;
  background:
    radial-gradient(circle at 70% 20%, rgba(207, 232, 204, .20) 0 9%, transparent 10%),
    radial-gradient(circle at 54% 38%, rgba(207, 232, 204, .14) 0 7%, transparent 8%),
    var(--brand-accent) center / contain no-repeat;
  opacity: .14;
  z-index: 0;
  pointer-events: none;
}
.highlight-panel::after {
  content: '';
  position: absolute;
  inset: auto -80px -110px auto;
  width: 240px;
  height: 240px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(255,255,255,.20), rgba(255,255,255,0));
}
.highlight-panel .eyebrow {
  margin-bottom: 14px;
}
.highlight-panel h2,
.highlight-panel h3 { color: var(--white); margin-top: 0; font-family: var(--font-serif); position: relative; z-index: 1; }
.highlight-panel p,
.highlight-panel li,
.highlight-panel a { color: rgba(255,255,255,.9); position: relative; z-index: 1; }
.highlight-panel .check-list li::before,
.highlight-panel .detail-list li::before,
.highlight-panel .mini-list li::before { color: #dff3d1; }

.testimonial-section { background: linear-gradient(180deg, var(--grey-soft) 0%, #eaf2e7 100%); }
.quote-card blockquote {
  margin: 0 0 18px;
  font-family: var(--font-serif);
  font-size: clamp(1.55rem, 2.8vw, 2.35rem);
  line-height: 1.24;
  color: var(--dark-green);
}
.quote-card cite { font-style: normal; color: var(--text-soft); font-weight: 700; }

.cta-band {
  background: linear-gradient(135deg, rgba(124,146,121,.10) 0%, rgba(7,94,68,.10) 100%);
  border-top: 1px solid rgba(7,94,68,.08);
  border-bottom: 1px solid rgba(7,94,68,.08);
}
.cta-box {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  padding: 36px;
  border-radius: 32px;
  background:
    linear-gradient(180deg, rgba(255,255,255,.96) 0%, rgba(247,250,245,.94) 100%);
  border: 1px solid rgba(7,94,68,.08);
  box-shadow: 0 18px 40px rgba(18, 43, 24, .08);
}
.cta-box h2 { margin: 0 0 14px; font-family: var(--font-serif); color: var(--dark-green); font-size: clamp(2rem, 4vw, 3.15rem); line-height: 1.05; }
.cta-box p { color: var(--text-soft); }

.contact-cards .contact-card a:not(.btn),
.contact-card a:not(.btn),
.info-card a:not(.btn),
.footer-list a { color: var(--mid-green); font-weight: 700; }
.contact-card small,
.hours-card small,
.map-card small { color: var(--text-soft); }
.hours-list { display: grid; gap: 12px; }
.hours-list li {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 16px;
  padding-bottom: 12px;
  border-bottom: 1px solid rgba(7,94,68,.08);
  color: var(--text-soft);
}
.hours-list li:last-child { border-bottom: 0; padding-bottom: 0; }
.hours-list strong { color: var(--dark-green); }
.hours-note {
  margin: 18px 0 0;
  padding-top: 14px;
  border-top: 1px solid rgba(7,94,68,.08);
  font-size: .88rem;
  line-height: 1.55;
  color: var(--text-soft);
}

.map-panel {
  overflow: hidden;
  border-radius: 28px;
  border: 1px solid var(--border);
  min-height: 100%;
  background: linear-gradient(135deg, rgba(124,146,121,.12) 0%, rgba(7,94,68,.12) 100%);
  display: flex;
  align-items: stretch;
}
.map-panel img { width: 100%; height: 100%; object-fit: cover; }

.footer {
  position: relative;
  overflow: hidden;
  background: linear-gradient(180deg, #122116 0%, #0c1710 100%);
  color: rgba(255,255,255,.84);
  padding: 74px 0 36px;
}
.footer::before {
  content: '';
  position: absolute;
  right: -40px;
  bottom: -40px;
  width: min(30vw, 320px);
  aspect-ratio: 1 / 1;
  background:
    radial-gradient(circle at 70% 22%, rgba(137, 170, 133, .20) 0 8%, transparent 9%),
    radial-gradient(circle at 52% 38%, rgba(137, 170, 133, .13) 0 6%, transparent 7%),
    var(--brand-accent) center / contain no-repeat;
  opacity: .10;
  z-index: 0;
  pointer-events: none;
}
.footer > .container { position: relative; z-index: 1; }
.footer h3,
.footer h4 { color: var(--white); margin-top: 0; font-family: var(--font-serif); }
.footer h3 { font-size: 2rem; }
.footer p { color: rgba(255,255,255,.78); }
.footer-list { display: grid; gap: 12px; }
.footer-list a:hover { color: #ffffff; }
.footer-bottom {
  margin-top: 34px;
  padding-top: 22px;
  border-top: 1px solid rgba(255,255,255,.12);
  color: rgba(255,255,255,.66);
  display: flex;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
}

.reveal {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity .7s ease, transform .7s ease;
  will-change: opacity, transform;
}
.reveal.is-visible {
  opacity: 1;
  transform: none;
}
@media (prefers-reduced-motion: reduce) {
  .reveal { opacity: 1; transform: none; transition: none; }
}

@media (max-width: 1160px) {
  .quickfacts-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 980px) {
  .hero-card-mini {
    padding: 15px 18px 15px 14px;
    gap: 11px;
  }
  .hero-card-mini strong {
    font-size: .83rem;
  }
}

@media (max-width: 1080px) {
  .hero-grid,
  .intro-grid,
  .page-intro-grid,
  .about-grid,
  .contact-grid,
  .dual-grid,
  .cta-grid,
  .footer-grid,
  .services-grid,
  .conditions-grid,
  .process-grid,
  .feature-grid,
  .cards-3,
  .cards-4,
  .contact-cards,
  .qualifications-grid,
  .faq-grid { grid-template-columns: 1fr; }
  .hero { min-height: auto; }
  .hero-grid { min-height: auto; padding-top: 34px; padding-bottom: 10px; }
  .hero-card { max-width: 620px; justify-self: start; }
  .hero { min-height: auto; }
}

@media (max-width: 920px) {
  :root { --nav-h: 82px; }
  .hamburger { display: inline-flex; }
  .nav-right { gap: 12px; }
  .nav-list {
    position: fixed;
    inset: calc(var(--nav-h) + 8px) 20px auto;
    background: rgba(255,255,255,.98);
    border: 1px solid rgba(7,94,68,.10);
    border-radius: 24px;
    box-shadow: var(--shadow-md);
    padding: 14px;
    display: none;
    flex-direction: column;
    align-items: stretch;
  }
  .nav-list.open { display: flex; }
  .nav-list a { justify-content: center; padding: 12px 16px; }
  .nav-cta { display: none; }
  .logo img { height: 66px; }
}

@media (max-width: 720px) {
  .section-header.centered { padding-bottom: 0; }
  .section-header.centered::after { content: none; }
  .quickfacts-strip { padding: 60px 0 44px; }
  .section { padding: 80px 0; }
  .section-tight { padding: 62px 0; }
  .container { width: min(100% - 28px, 1180px); }
  .hero-card,
  .intro-card,
  .copy-panel,
  .info-card,
  .quote-card,
  .hours-card,
  .map-card,
  .cta-box,
  .highlight-panel,
  .service-card,
  .condition-card,
  .approach-step,
  .feature-card,
  .contact-card,
  .quickfact { padding: 22px; border-radius: 22px; }
  .logo img { height: 58px; }
  .display-title { font-size: clamp(2.35rem, 9vw, 3.45rem); }
  .hero-title { font-size: clamp(2.75rem, 11vw, 4.1rem); }
  .hero-highlights,
  .quickfacts-grid { grid-template-columns: 1fr; }
  .button-row { flex-direction: column; }
  .button-row .btn { width: 100%; }
  .footer-bottom { font-size: .95rem; }
  .page-hero .container { padding: 142px 0 54px; }
}

/* Services page refinements */
.service-page-hero .container { max-width: 820px; }
.service-page-hero .page-hero-overlay {
  background:
    linear-gradient(90deg, rgba(8, 29, 21, .94) 0%, rgba(8, 29, 21, .84) 42%, rgba(8, 29, 21, .44) 72%, rgba(8, 29, 21, .20) 100%),
    radial-gradient(circle at 78% 24%, rgba(122, 158, 126, .22), transparent 24%),
    linear-gradient(180deg, rgba(255,255,255,.02), rgba(255,255,255,.02));
}
.service-page-hero-media {
  background:
    radial-gradient(circle at 78% 24%, rgba(122, 158, 126, .20), transparent 22%),
    linear-gradient(135deg, #0b1e17 0%, #123125 52%, #174033 100%);
}
.service-page-hero-logo {
  position: absolute;
  right: min(8vw, 120px);
  top: 50%;
  transform: translateY(-50%);
  width: min(36vw, 420px);
  height: auto !important;
  opacity: .12;
  object-fit: contain !important;
  filter: drop-shadow(0 18px 28px rgba(0, 0, 0, .18));
}

.page-hero-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  margin-top: 26px;
}
.quickfacts-grid--three { grid-template-columns: repeat(3, minmax(0, 1fr)); }

.featured-services-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 24px;
}
.featured-service-card {
  background: linear-gradient(180deg, rgba(255,255,255,.98) 0%, #f6faf4 100%);
  border: 1px solid rgba(7, 94, 68, .10);
  border-radius: 28px;
  box-shadow: var(--shadow-sm);
  padding: 34px;
  position: relative;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
.featured-service-card .service-link {
  margin-top: auto;
}
.featured-service-card::before {
  content: '';
  position: absolute;
  inset: 0 auto auto 0;
  width: 100%;
  height: 4px;
  background: linear-gradient(90deg, var(--dark-green), var(--sage));
}
.featured-service-card::after {
  content: '';
  position: absolute;
  inset: auto -36px -46px auto;
  width: 150px;
  height: 150px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(124, 146, 121, .18), rgba(124, 146, 121, 0));
}
.featured-service-card h3 {
  margin: 0 0 14px;
  font-family: var(--font-serif);
  color: var(--dark-green);
  font-size: clamp(2rem, 3.4vw, 2.6rem);
  line-height: 1.04;
  max-width: 14ch;
  position: relative;
  z-index: 1;
}
.featured-service-card p,
.featured-service-card ul,
.featured-service-card a { position: relative; z-index: 1; }
.featured-service-card p { color: var(--text-soft); }

.service-includes-grid { align-items: center; }
.service-includes-image img { min-height: 100%; }

.service-clusters { display: grid; gap: 56px; }
.service-cluster-header {
  max-width: 760px;
  margin-bottom: 26px;
}
.cluster-title {
  margin: 14px 0 12px;
  font-family: var(--font-serif);
  font-weight: 600;
  font-size: clamp(1.95rem, 3.5vw, 2.9rem);
  line-height: 1.05;
  color: var(--dark-green);
}
.service-cluster-header p { color: var(--text-soft); font-size: 1.04rem; }
.service-cluster-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 22px;
}
.service-card--compact h3 { font-size: 1.52rem; }
.service-card--compact {
  display: flex;
  flex-direction: column;
}
.service-card--compact .service-link {
  margin-top: auto;
}
.service-link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-top: 20px;
  color: var(--mid-green);
  font-weight: 700;
}
.service-link::after {
  content: '→';
  transition: transform var(--transition);
}
.service-link:hover::after { transform: translateX(2px); }

@media (max-width: 1160px) {
  .quickfacts-grid--three { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 980px) {
  .hero-card-mini {
    padding: 15px 18px 15px 14px;
    gap: 11px;
  }
  .hero-card-mini strong {
    font-size: .83rem;
  }
}

@media (max-width: 1080px) {
  .featured-services-grid { grid-template-columns: 1fr; }
}

@media (max-width: 720px) {
  .page-hero::before {
    width: min(40vw, 180px);
    right: -20px;
    top: 84px;
    opacity: .10;
  }
  .page-hero-actions,
  .service-cluster .button-row { flex-direction: column; }
  .page-hero-actions .btn { width: 100%; }
  .service-page-hero-logo {
    width: min(52vw, 260px);
    right: 20px;
    opacity: .14;
  }
  .quickfacts-grid--three { grid-template-columns: 1fr; }
  .featured-service-card { padding: 24px; border-radius: 24px; }
  .featured-service-card h3 { max-width: none; }
  .service-clusters { gap: 46px; }
}

/* Conditions page refinements */
.conditions-page-hero {
  min-height: 540px;
}
.conditions-page-hero .container {
  max-width: 900px;
}
.conditions-page-hero .page-hero-media img {
  object-position: center 18%;
}
.conditions-page-hero .page-hero-overlay {
  background:
    linear-gradient(90deg, rgba(8, 29, 21, .92) 0%, rgba(8, 29, 21, .84) 34%, rgba(8, 29, 21, .54) 64%, rgba(8, 29, 21, .24) 100%),
    linear-gradient(180deg, rgba(3, 15, 10, .12) 0%, rgba(3, 15, 10, .56) 100%),
    radial-gradient(circle at 74% 20%, rgba(122, 158, 126, .24), transparent 24%);
}
.conditions-recognition-header {
  margin-bottom: 30px;
}
.quickfacts-grid--conditions {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
.conditions-proof-section {
  background: linear-gradient(180deg, var(--grey-soft) 0%, #eef4ea 100%);
}
.conditions-patterns-grid {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 22px;
}
.conditions-patterns-grid > .condition-card { grid-column: span 2; }
.conditions-patterns-grid > .condition-card:nth-child(4),
.conditions-patterns-grid > .condition-card:nth-child(5) { grid-column: span 3; }
@media (max-width: 820px) {
  .conditions-patterns-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .conditions-patterns-grid > .condition-card,
  .conditions-patterns-grid > .condition-card:nth-child(4),
  .conditions-patterns-grid > .condition-card:nth-child(5) { grid-column: auto; }
}
@media (max-width: 560px) {
  .conditions-patterns-grid { grid-template-columns: 1fr; }
}
.conditions-approach-section {
  background: linear-gradient(180deg, rgba(255,255,255,.72) 0%, rgba(237, 246, 232, .8) 100%);
}
.conditions-approach-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 22px;
}

@media (max-width: 1160px) {
  .quickfacts-grid--conditions {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 980px) {
  .hero-card-mini {
    padding: 15px 18px 15px 14px;
    gap: 11px;
  }
  .hero-card-mini strong {
    font-size: .83rem;
  }
}

@media (max-width: 1080px) {
  .conditions-approach-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 720px) {
  .conditions-page-hero {
    min-height: 500px;
  }
  .conditions-page-hero .page-hero-media img {
    object-position: center 16%;
  }
  .quickfacts-grid--conditions,
  .conditions-approach-grid {
    grid-template-columns: 1fr;
  }
}


/* About page refinements */
.about-page-hero {
  min-height: 540px;
}
.about-page-hero .container {
  max-width: 840px;
}
.about-page-hero .page-hero-media img {
  object-position: center 18%;
}
.about-page-hero .page-hero-overlay {
  background:
    linear-gradient(90deg, rgba(8, 29, 21, .90) 0%, rgba(8, 29, 21, .80) 36%, rgba(8, 29, 21, .52) 64%, rgba(8, 29, 21, .20) 100%),
    linear-gradient(180deg, rgba(3, 15, 10, .10) 0%, rgba(3, 15, 10, .54) 100%),
    radial-gradient(circle at 76% 22%, rgba(122, 158, 126, .24), transparent 24%);
}
.about-story-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.16fr) minmax(300px, .84fr);
  gap: 30px;
  align-items: start;
}
.about-at-a-glance {
  background: linear-gradient(180deg, rgba(255,255,255,.98) 0%, #f7faf5 100%);
}
.about-expect-grid,
.about-credentials-grid {
  display: grid;
  gap: 22px;
}
.about-expect-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
.about-credentials-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
.about-credentials-grid .feature-card p {
  margin-bottom: 0;
}
.about-location-section {
  background: linear-gradient(180deg, rgba(255,255,255,.72) 0%, rgba(243,247,241,.98) 100%);
}
.about-location-grid {
  align-items: center;
}
.about-location-grid .image-frame {
  background: #ffffff;
  aspect-ratio: 4 / 3;
}
.about-location-grid .image-frame img {
  object-fit: contain;
  object-position: center;
  padding: 28px;
}
.about-location-grid .image-frame::after { content: none; }
.about-proof-section {
  background: linear-gradient(180deg, #edf4e8 0%, var(--grey-soft) 100%);
}

@media (max-width: 980px) {
  .hero-card-mini {
    padding: 15px 18px 15px 14px;
    gap: 11px;
  }
  .hero-card-mini strong {
    font-size: .83rem;
  }
}

@media (max-width: 1080px) {
  .about-story-grid {
    grid-template-columns: 1fr;
  }
  .about-expect-grid,
  .about-credentials-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 720px) {
  .about-page-hero {
    min-height: 500px;
  }
  .about-page-hero .page-hero-media img {
    object-position: center 14%;
  }
  .about-expect-grid,
  .about-credentials-grid {
    grid-template-columns: 1fr;
  }
}


/* Contact page booking refinements */
.contact-booking-hero .page-hero-overlay {
  background:
    linear-gradient(90deg, rgba(8, 29, 21, .92) 0%, rgba(8, 29, 21, .78) 42%, rgba(8, 29, 21, .42) 74%, rgba(8, 29, 21, .20) 100%),
    radial-gradient(circle at 78% 22%, rgba(122, 158, 126, .24), transparent 24%),
    linear-gradient(180deg, rgba(255,255,255,.02), rgba(255,255,255,.02));
}
.contact-route-section {
  background: linear-gradient(180deg, rgba(255,255,255,.98) 0%, #f6faf4 100%);
}
.contact-route-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 22px;
}
.booking-section { scroll-margin-top: calc(var(--nav-h) + 18px); }
.booking-section .container {
  width: min(1360px, calc(100% - 32px));
}
.booking-layout {
  display: grid;
  grid-template-columns: minmax(0, .68fr) minmax(0, 1.52fr);
  gap: 22px;
  align-items: stretch;
}
.booking-sidebar {
  position: sticky;
  top: calc(var(--nav-h) + 18px);
}
.booking-dark-eyebrow {
  background: rgba(255,255,255,.12);
  color: #dfe9df;
  border-color: rgba(255,255,255,.14);
}
.booking-dark-btn {
  border-color: rgba(255,255,255,.34);
  color: #fff;
  background: rgba(255,255,255,.08);
}
.booking-dark-btn:hover {
  background: rgba(255,255,255,.15);
  border-color: rgba(255,255,255,.42);
}
.booking-facts-grid {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin: 18px 0 14px;
}
.booking-facts-grid--compact {
  gap: 10px;
}
.booking-fact-card,
.booking-side-panel {
  position: relative;
  z-index: 1;
  border-radius: 22px;
  border: 1px solid rgba(255,255,255,.12);
  background: rgba(255,255,255,.10);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.06);
}
.booking-fact-card {
  padding: 14px 15px;
}
.booking-fact-card span {
  display: block;
  font-size: .72rem;
  text-transform: uppercase;
  letter-spacing: .10em;
  font-weight: 800;
  color: rgba(255,255,255,.72);
  margin-bottom: 6px;
}
.booking-fact-card strong {
  display: block;
  color: #fff;
  font-size: .95rem;
  line-height: 1.3;
}
.booking-side-panel {
  padding: 15px 16px;
  margin-bottom: 10px;
}
.booking-side-panel .kicker {
  color: #dfe9df;
}
.booking-side-panel--compact p {
  margin: 8px 0 0;
  font-size: .95rem;
  line-height: 1.55;
}
.booking-side-panel--action {
  margin-top: auto;
}
.booking-side-panel--quote p {
  margin: 0;
  font-family: var(--font-serif);
  font-size: 1.35rem;
  line-height: 1.35;
  color: #fff;
}
.booking-shell {
  position: relative;
  isolation: isolate;
  background: linear-gradient(180deg, rgba(255,255,255,.99) 0%, rgba(247,250,245,.97) 100%);
  border: 1px solid var(--border);
  border-radius: 32px;
  box-shadow: var(--shadow-md);
  padding: 20px;
}
.booking-shell-header h3 {
  margin: 0 0 8px;
  font-family: var(--font-serif);
  color: var(--dark-green);
  font-size: clamp(1.7rem, 3vw, 2.25rem);
  line-height: 1.05;
}
.booking-shell-header p { color: var(--text-soft); margin: 0; font-size: .98rem; }
.booking-shell-header--compact .kicker { margin-bottom: 6px; }
.booking-live-wrap {
  margin-top: 14px;
  display: grid;
  gap: 12px;
}
.booking-live-wrap--tight {
  gap: 10px;
}
.booking-status-row {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: center;
  flex-wrap: wrap;
}
.booking-status-pill,
.booking-status-text {
  display: inline-flex;
  align-items: center;
  min-height: 34px;
  padding: 7px 12px;
  border-radius: 999px;
  font-size: .82rem;
  font-weight: 700;
}
.booking-status-pill {
  background: var(--sage-soft);
  color: var(--mid-green);
  border: 1px solid rgba(47, 107, 31, .12);
}
.booking-status-text {
  background: rgba(7, 94, 68, .06);
  color: var(--dark-green);
  border: 1px solid rgba(7, 94, 68, .10);
}
.booking-status-pill--live {
  background: linear-gradient(135deg, rgba(7,94,68,.12) 0%, rgba(124,146,121,.20) 100%);
  color: var(--dark-green);
}
.google-booking-frame {
  border-radius: 24px;
  overflow: hidden;
  border: 1px solid rgba(7, 94, 68, .10);
  background: linear-gradient(180deg, #f7faf5 0%, #edf5e9 100%);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.6);
}
.google-booking-frame iframe {
  display: block;
  width: 100%;
  min-height: 700px;
  background: #fff;
}
.google-booking-frame--viewport iframe {
  height: 1000px;
  min-height: 900px;
}
.booking-placeholder-note {
  margin: 0;
  color: var(--text-soft);
}
@media (min-width: 981px) {
  .booking-layout {
    align-items: stretch;
  }
  .booking-sidebar {
    display: flex;
    flex-direction: column;
    align-self: start;
  }
  .booking-shell {
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
  }
  .booking-shell .google-booking-frame--viewport iframe {
    height: 1000px;
    min-height: 1000px;
  }
}
.booking-guidance-section {
  background: linear-gradient(180deg, var(--grey-soft) 0%, #edf4e9 100%);
}
.booking-process-grid {
  margin-bottom: 28px;
}
.booking-practical-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 22px;
}
.availability-summary-list {
  list-style: none;
  padding: 0;
  margin: 18px 0 0;
  display: grid;
  gap: 12px;
}
.availability-summary-list li {
  display: grid;
  grid-template-columns: 112px 1fr;
  gap: 16px;
  align-items: start;
  padding-bottom: 12px;
  border-bottom: 1px solid rgba(7,94,68,.08);
  color: var(--text-soft);
}
.availability-summary-list li:last-child {
  border-bottom: 0;
  padding-bottom: 0;
}
.availability-summary-list strong {
  color: var(--dark-green);
}

@media (max-width: 1180px) {
  .contact-route-grid,
  .process-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 1180px) {
  .booking-section .container {
    width: min(1180px, calc(100% - 40px));
  }
}

@media (max-width: 980px) {
  .hero-card-mini {
    padding: 15px 18px 15px 14px;
    gap: 11px;
  }
  .hero-card-mini strong {
    font-size: .83rem;
  }
}

@media (max-width: 1080px) {
  .booking-layout,
  .booking-practical-grid,
  .contact-route-grid {
    grid-template-columns: 1fr;
  }
  .booking-sidebar {
    position: static;
  }
}

@media (max-width: 720px) {
  .booking-shell,
  .contact-card,
  .info-card,
  .hours-card,
  .map-card,
  .highlight-panel,
  .approach-step { padding: 22px; border-radius: 22px; }
  .booking-facts-grid { grid-template-columns: 1fr; }
  .availability-summary-list li {
    grid-template-columns: 1fr;
    gap: 6px;
  }
}

/* Contact page slimming refinements */
.contact-practical-section {
  background: linear-gradient(180deg, var(--grey-soft) 0%, #edf4e9 100%);
}
.contact-practical-grid {
  display: grid;
  grid-template-columns: 1.1fr 1fr .9fr;
  gap: 22px;
}
.map-card--with-embed {
  padding: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.map-card--with-embed .map-card-body {
  padding: 32px 32px 24px;
}
.map-card--with-embed .map-card-embed {
  margin-top: auto;
  width: 100%;
  aspect-ratio: 4 / 3;
  background: #eef2ec;
  position: relative;
  z-index: 1;
}
.map-card--with-embed .map-card-embed iframe {
  width: 100%;
  height: 100%;
  border: 0;
  display: block;
}
.map-card--with-embed::after { content: none; }
.compact-list {
  gap: 10px;
}
.compact-list li {
  padding-bottom: 10px;
}
@media (max-width: 980px) {
  .hero-card-mini {
    padding: 15px 18px 15px 14px;
    gap: 11px;
  }
  .hero-card-mini strong {
    font-size: .83rem;
  }
}

@media (max-width: 1080px) {
  .contact-practical-grid {
    grid-template-columns: 1fr;
  }
}


html {
  scroll-behavior: smooth;
  scroll-padding-top: calc(var(--nav-h) + 16px);
}

.button-row .btn {
  justify-content: center;
}

.footer-bottom p {
  margin: 0;
}

.mobile-cta-bar {
  display: none;
}

@media (max-width: 920px) {
  body {
    padding-bottom: 94px;
  }

  .nav-list {
    inset: calc(var(--nav-h) + 8px) 14px auto;
    max-height: calc(100svh - var(--nav-h) - 28px);
    overflow-y: auto;
  }

  .mobile-cta-bar {
    position: fixed;
    left: 14px;
    right: 14px;
    bottom: calc(14px + env(safe-area-inset-bottom));
    z-index: 1100;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
    padding: 12px;
    border-radius: 24px;
    border: 1px solid rgba(7,94,68,.10);
    background: rgba(255,255,255,.94);
    box-shadow: 0 18px 40px rgba(18, 43, 24, .16);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
  }

  .mobile-cta-bar .btn {
    min-height: 48px;
    padding-inline: 14px;
    font-size: .95rem;
  }
}

@media (max-width: 1180px) {
  .contact-practical-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .contact-practical-grid > :last-child {
    grid-column: 1 / -1;
  }

  .booking-section .container {
    width: min(1180px, calc(100% - 28px));
  }
}

@media (max-width: 820px) {
  .section {
    padding: 72px 0;
  }

  .section-tight {
    padding: 58px 0;
  }

  .hero-grid {
    gap: 18px;
  }

  .hero-copy,
  .hero-card {
    max-width: 100%;
  }

  .google-booking-frame--viewport iframe {
    height: 900px;
    min-height: 900px;
  }
}

@media (max-width: 720px) {
  .page-hero {
    min-height: 440px;
  }

  .hero-media img.hero-image--event {
    object-position: 50% 50%;
  }

  .page-hero .container {
    padding: 134px 0 46px;
  }

  .hero {
    padding-bottom: 8px;
  }

  .hero-grid {
    padding-top: 24px;
  }

  .hero-highlights {
    gap: 10px;
  }

  .booking-shell-header h3 {
    font-size: 1.9rem;
  }

  .google-booking-frame--viewport iframe {
    height: 850px;
    min-height: 850px;
  }

  .contact-practical-grid {
    grid-template-columns: 1fr;
  }

  .contact-practical-grid > :last-child {
    grid-column: auto;
  }
}

@media (max-width: 520px) {
  .hero::before {
    width: 160px;
    right: -24px;
    top: 84px;
    opacity: .14;
  }

  .hero-card::after,
  .intro-card::after,
  .copy-panel::after,
  .info-card::after,
  .service-card::after,
  .condition-card::after,
  .quote-card::after,
  .approach-step::after,
  .contact-card::after,
  .hours-card::after,
  .map-card::after,
  .feature-card::after,
  .booking-shell::after,
  .cta-box::after,
  .quickfact::after {
    width: 104px;
    height: 104px;
    right: -26px;
    bottom: -30px;
  }

  body {
    padding-bottom: 88px;
  }

  .mobile-cta-bar {
    left: 10px;
    right: 10px;
    bottom: calc(10px + env(safe-area-inset-bottom));
    padding: 10px;
    border-radius: 20px;
  }

  .mobile-cta-bar .btn {
    min-height: 46px;
    font-size: .9rem;
  }

  .hero-title {
    font-size: clamp(2.4rem, 11vw, 3.5rem);
  }

  .page-hero h1 {
    font-size: clamp(2.3rem, 10vw, 3.5rem);
  }

  .hours-list li {
    grid-template-columns: 1fr;
    gap: 6px;
  }
}


/* Editorial typography pass */
:root {
  --measure: 62ch;
  --measure-wide: 68ch;
  --measure-tight: 16ch;
}

html {
  text-rendering: optimizeLegibility;
  -webkit-text-size-adjust: 100%;
}

body {
  font-size: 17px;
  line-height: 1.72;
  letter-spacing: -0.005em;
  font-kerning: normal;
  font-feature-settings: "liga" 1, "clig" 1, "kern" 1;
}

h1, h2, h3, .hero-title, .section-title, .cluster-title, .card-title, .display-title {
  letter-spacing: -0.022em;
  text-wrap: balance;
  font-kerning: normal;
}

.section-header h1,
.section-header h2,
.section-header h3,
.page-hero h1,
.hero-title,
.display-title,
.cluster-title,
.cta-box h2,
.highlight-panel h2,
.highlight-panel h3,
.featured-service-card h3,
.hero-card h2,
.quote-card blockquote,
.service-card h3,
.condition-card h3,
.approach-step h3,
.feature-card h3,
.contact-card h3,
.hours-card h3,
.map-card h3,
.info-card h3,
.quote-card h3,
.card-title {
  font-weight: 500;
}

.display-title {
  font-size: clamp(2.8rem, 5vw, 5.25rem);
  line-height: .94;
}

.hero-title {
  font-size: clamp(3rem, 5.1vw, 5rem);
  line-height: .93;
  max-width: 11ch;
  margin: 14px 0 14px;
}

.page-hero h1 {
  font-size: clamp(3rem, 5.1vw, 5rem);
  line-height: .95;
  max-width: 13ch;
}

.section-title,
.cta-box h2,
.highlight-panel h2 {
  font-size: clamp(2.2rem, 4vw, 3.45rem);
  line-height: .98;
}

.cluster-title {
  font-size: clamp(2.15rem, 3.7vw, 3.1rem);
  line-height: .98;
}

.card-title,
.service-card h3,
.condition-card h3,
.approach-step h3,
.feature-card h3,
.contact-card h3,
.hours-card h3,
.map-card h3,
.info-card h3,
.quote-card h3,
.hero-card h2 {
  letter-spacing: -0.018em;
  line-height: 1.02;
}

.card-title,
.service-card h3,
.condition-card h3,
.approach-step h3,
.feature-card h3,
.contact-card h3,
.hours-card h3,
.map-card h3,
.info-card h3,
.quote-card h3 {
  font-size: 1.74rem;
  margin-bottom: 14px;
}

.featured-service-card h3 {
  font-size: clamp(2.15rem, 3.6vw, 2.9rem);
  line-height: .98;
  max-width: 13ch;
}

.hero-card h2 {
  font-size: 1.82rem;
}

.quote-card blockquote {
  font-size: clamp(1.75rem, 2.9vw, 2.55rem);
  line-height: 1.18;
  letter-spacing: -0.018em;
}

.quote-card cite {
  letter-spacing: .02em;
  text-transform: uppercase;
  font-size: .82rem;
}

.eyebrow,
.kicker,
.quickfact .label,
.service-meta div span,
.booking-fact-card span,
.booking-status-pill,
.booking-status-text {
  letter-spacing: .14em;
}

.eyebrow {
  padding: 10px 16px;
  font-size: .72rem;
}

.hero-sub,
.section-header p,
.lead,
.page-hero p {
  font-size: 1.08rem;
  line-height: 1.78;
}

.hero-sub,
.section-header p,
.page-hero p,
.intro-card p,
.copy-panel p,
.info-card p,
.service-card p,
.condition-card p,
.approach-step p,
.feature-card p,
.contact-card p,
.hours-card p,
.map-card p,
.quote-card p,
.hero-card p,
.highlight-panel p,
.cta-box p,
.featured-service-card p,
.service-cluster-header p {
  max-width: var(--measure);
}

.hero-copy,
.page-hero .container,
.section-header {
  max-width: 840px;
}

.hero-sub { max-width: 58ch; }
.hero-card p { font-size: .98rem; line-height: 1.68; }
.hero-badge { font-size: .9rem; line-height: 1.42; }
.hero-badge strong { font-size: .74rem; letter-spacing: .08em; }

.nav-list a {
  font-size: .92rem;
  letter-spacing: .01em;
}

.btn {
  letter-spacing: .01em;
}

.check-list li,
.detail-list li,
.mini-list li,
.service-meta div p,
.availability-summary-list li,
.hours-list li,
.footer p,
.footer-list a,
.booking-shell-header p,
.booking-placeholder-note {
  font-size: .98rem;
}

.footer h3 {
  font-size: 2.15rem;
  line-height: .98;
  letter-spacing: -0.02em;
}

.footer h4 {
  font-size: 1.35rem;
  line-height: 1.04;
  letter-spacing: -0.016em;
}

.footer p,
.footer-list a {
  line-height: 1.7;
}

@media (max-width: 920px) {
  body {
    font-size: 16px;
    line-height: 1.68;
  }

  .nav-list a {
    font-size: .98rem;
  }
}

@media (max-width: 720px) {
  .hero-title {
    font-size: clamp(2.8rem, 11vw, 4.25rem);
    max-width: 10ch;
    line-height: .95;
  }

  .page-hero h1 {
    font-size: clamp(2.65rem, 10vw, 4rem);
    line-height: .97;
    max-width: 12ch;
  }

  .section-title,
  .cta-box h2,
  .highlight-panel h2,
  .cluster-title {
    font-size: clamp(2rem, 8vw, 2.9rem);
    line-height: 1.01;
  }

  .section-header p,
  .hero-sub,
  .page-hero p {
    font-size: 1.02rem;
    line-height: 1.72;
  }

  .card-title,
  .service-card h3,
  .condition-card h3,
  .approach-step h3,
  .feature-card h3,
  .contact-card h3,
  .hours-card h3,
  .map-card h3,
  .info-card h3,
  .quote-card h3,
  .hero-card h2 {
    font-size: 1.56rem;
    line-height: 1.05;
  }

  .quote-card blockquote {
    font-size: clamp(1.55rem, 7vw, 2.1rem);
    line-height: 1.22;
  }

  .eyebrow {
    font-size: .68rem;
    letter-spacing: .13em;
    padding: 9px 14px;
  }
}


/* Home page visual enrichment */
.icon-sprite {
  position: absolute;
  width: 0;
  height: 0;
  overflow: hidden;
}
.ui-icon {
  display: block;
  width: 24px;
  height: 24px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
  flex-shrink: 0;
  overflow: visible;
}
.icon-chip,
.quickfact-icon,
.card-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--dark-green);
}
.icon-chip {
  width: 48px;
  height: 48px;
  border-radius: 18px;
  background: linear-gradient(135deg, rgba(124,146,121,.14), rgba(7,94,68,.10));
  border: 1px solid rgba(7,94,68,.08);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.35);
}
.icon-chip--light {
  color: #f4faf2;
  background: rgba(255,255,255,.14);
  border-color: rgba(255,255,255,.18);
}
.hero-highlights--iconic .hero-badge {
  display: grid;
  grid-template-columns: 42px 1fr;
  gap: 16px;
  align-items: start;
}
.hero-badge-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  color: #f4faf2;
  justify-self: center;
  margin-top: 2px;
}
.hero-badge-icon .ui-icon {
  width: 34px;
  height: 34px;
  stroke-width: 1.9;
}
.hero-highlights--iconic .hero-badge strong {
  margin-bottom: 4px;
}
.hero-card--visual {
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
}
.hero-card-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  margin: 18px 0 16px;
}
.hero-card-list {
  margin: 18px 0 20px;
  gap: 11px;
}
.hero-card-list li {
  font-size: .94rem;
  line-height: 1.45;
  color: var(--text);
}
.hero-card-list li::before {
  color: var(--mid-green);
  font-size: 1.2rem;
  line-height: 1.1;
}
.hero-card-mini {
  display: grid;
  grid-template-columns: 48px minmax(0, 1fr);
  gap: 12px;
  align-items: center;
  padding: 16px 22px 16px 16px;
  border-radius: 20px;
  background: rgba(255,255,255,.76);
  border: 1px solid rgba(7,94,68,.07);
}
.hero-card-mini > div {
  min-width: 0;
  padding-right: 4px;
}
.hero-card-mini strong {
  display: block;
  color: var(--dark-green);
  font-size: .86rem;
  line-height: 1.14;
  margin-bottom: 4px;
  text-wrap: balance;
}
.hero-card-mini span:last-child {
  display: block;
  color: var(--text-soft);
  font-size: .8rem;
  line-height: 1.28;
}
.quickfacts-strip--visual {
  padding-top: 34px;
  padding-bottom: 72px;
}
.compact-header {
  max-width: 840px;
}
.quickfacts-strip--visual .quickfact {
  display: grid;
  grid-template-columns: 54px 1fr;
  gap: 14px;
  align-items: start;
}
.quickfact-icon,
.card-icon {
  width: 54px;
  height: 54px;
  border-radius: 20px;
  background: linear-gradient(135deg, rgba(124,146,121,.14), rgba(7,94,68,.08));
  border: 1px solid rgba(7,94,68,.08);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.38);
}
.quickfact-icon .ui-icon,
.card-icon .ui-icon {
  width: 30px;
  height: 30px;
}
.approach-step .icon-chip .ui-icon {
  width: 28px;
  height: 28px;
}
.feature-card .card-icon .ui-icon {
  width: 32px;
  height: 32px;
}
.signature-section .icon-chip .ui-icon {
  width: 28px;
  height: 28px;
}
.intro-grid--home {
  align-items: center;
}
.image-stack {
  position: relative;
  padding-bottom: 40px;
}
.image-frame--portrait {
  min-height: 640px;
}
.image-frame--portrait img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 18%;
}
.image-float-card,
.image-float-badge,
.signature-training-card,
.signature-booking-card {
  position: absolute;
  z-index: 2;
}
.image-float-card {
  right: -24px;
  bottom: 0;
  width: min(280px, 54%);
  padding: 22px;
  border-radius: 24px;
  background: rgba(255,255,255,.94);
  border: 1px solid rgba(7,94,68,.08);
  box-shadow: 0 22px 44px rgba(18, 43, 24, .12);
}
.image-float-card strong,
.signature-training-card strong,
.signature-booking-card strong {
  display: block;
  font-family: var(--font-serif);
  font-size: 1.5rem;
  line-height: 1.04;
  color: var(--dark-green);
  margin-bottom: 8px;
}
.image-float-card p,
.signature-training-card p,
.signature-booking-card p {
  margin: 0;
  color: var(--text-soft);
}
.image-float-badge {
  top: 20px;
  left: 18px;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 12px 16px;
  border-radius: 999px;
  background: rgba(255,255,255,.90);
  border: 1px solid rgba(7,94,68,.08);
  box-shadow: 0 16px 34px rgba(18, 43, 24, .12);
  color: var(--dark-green);
  font-weight: 700;
}
.intro-card--story {
  padding: 36px;
}
.mini-feature-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
  margin: 24px 0;
}
.mini-feature {
  padding: 18px;
  border-radius: 22px;
  background: rgba(255,255,255,.76);
  border: 1px solid rgba(7,94,68,.08);
}
.mini-feature h3 {
  margin: 14px 0 8px;
  font-family: var(--font-serif);
  color: var(--dark-green);
  font-size: 1.32rem;
  line-height: 1.08;
}
.mini-feature p {
  margin: 0;
  color: var(--text-soft);
  font-size: .94rem;
  line-height: 1.45;
}
.section-process-home {
  position: relative;
  overflow: clip;
}
.section-process-home::before {
  content: '';
  position: absolute;
  inset: auto auto -120px -100px;
  width: 260px;
  height: 260px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(124,146,121,.18), rgba(124,146,121,0) 70%);
  pointer-events: none;
}
.process-grid--visual {
  position: relative;
}
.process-grid--visual::before {
  content: '';
  position: absolute;
  left: 12%;
  right: 12%;
  top: 76px;
  height: 1px;
  background: linear-gradient(90deg, rgba(7,94,68,0), rgba(7,94,68,.16) 12%, rgba(7,94,68,.16) 88%, rgba(7,94,68,0));
  z-index: 0;
}
.step-meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 14px;
}
.step-pill {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 44px;
  height: 34px;
  padding: 0 12px;
  border-radius: 999px;
  background: rgba(7,94,68,.06);
  color: var(--mid-green);
  font-size: .76rem;
  font-weight: 800;
  letter-spacing: .14em;
}
.cards-4--home {
  align-items: stretch;
}
.feature-card--home {
  padding-top: 26px;
  display: flex;
  flex-direction: column;
}
.feature-card--home .feature-link {
  margin-top: auto;
}
.card-top {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 18px;
  margin-bottom: 8px;
}
.card-top h3 {
  margin-bottom: 0;
}
.feature-link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-top: 16px;
  color: var(--mid-green);
  font-weight: 700;
}
.feature-link::after {
  content: '→';
  transition: transform var(--transition);
}
.feature-link:hover::after {
  transform: translateX(2px);
}
.signature-section {
  position: relative;
  overflow: clip;
  background: linear-gradient(180deg, rgba(255,255,255,.86) 0%, rgba(237,246,232,.92) 100%);
}
.signature-section::before {
  content: '';
  position: absolute;
  right: -140px;
  top: -120px;
  width: 360px;
  height: 360px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(124,146,121,.18), rgba(124,146,121,0) 70%);
  pointer-events: none;
}
.signature-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(360px, .94fr);
  gap: 34px;
  align-items: center;
}
.signature-copy {
  position: relative;
  z-index: 1;
}
.signature-pillars {
  display: grid;
  gap: 16px;
  margin-top: 24px;
}
.signature-pillar {
  display: grid;
  grid-template-columns: 48px 1fr;
  gap: 14px;
  align-items: start;
  padding: 18px;
  border-radius: 24px;
  background: rgba(255,255,255,.72);
  border: 1px solid rgba(7,94,68,.08);
  box-shadow: 0 18px 36px rgba(18, 43, 24, .06);
}
.signature-pillar h3 {
  margin: 0 0 6px;
  font-family: var(--font-serif);
  font-size: 1.42rem;
  line-height: 1.06;
  color: var(--dark-green);
}
.signature-pillar p {
  margin: 0;
  color: var(--text-soft);
}
.signature-media {
  position: relative;
  min-height: 640px;
}
.signature-photo {
  position: absolute;
  inset: 34px 22px 18px 48px;
  border-radius: 34px;
  overflow: hidden;
  box-shadow: var(--shadow-lg);
}
.signature-photo::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(8, 29, 21, .02) 0%, rgba(8, 29, 21, .18) 100%);
}
.signature-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 12%;
}
.signature-training-card {
  top: -30px;
  right: -62px;
  left: auto;
  width: min(272px, 64%);
  padding: 22px;
  border-radius: 24px;
  background: rgba(255,255,255,.94);
  border: 1px solid rgba(7,94,68,.08);
  box-shadow: 0 22px 44px rgba(18, 43, 24, .12);
}
.signature-booking-card {
  left: -8px;
  right: auto;
  bottom: 10px;
  width: min(250px, 62%);
  display: grid;
  grid-template-columns: 48px 1fr;
  gap: 12px;
  align-items: start;
  padding: 18px;
  border-radius: 24px;
  background: rgba(255,255,255,.94);
  border: 1px solid rgba(7,94,68,.08);
  box-shadow: 0 22px 44px rgba(18, 43, 24, .12);
}
.quote-card--review {
  align-self: stretch;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  gap: 22px;
  padding: 40px 44px;
}
.quote-card--review .eyebrow {
  align-self: flex-start;
}
.quote-card--review blockquote {
  position: relative;
  margin: 0;
  padding-left: 28px;
  font-size: clamp(1.4rem, 2.4vw, 1.95rem);
  line-height: 1.3;
}
.quote-card--review blockquote::before {
  content: '';
  position: absolute;
  left: 0;
  top: 6px;
  bottom: 6px;
  width: 3px;
  border-radius: 3px;
  background: linear-gradient(180deg, var(--sage) 0%, rgba(124,146,121,.25) 100%);
}
.quote-card--review cite {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-size: .78rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--mid-green);
}
.quote-card--review cite::before {
  content: '';
  width: 22px;
  height: 1px;
  background: var(--sage);
  display: inline-block;
}
@media (max-width: 720px) {
  .quote-card--review {
    padding: 32px 28px;
    gap: 18px;
  }
  .quote-card--review blockquote {
    padding-left: 20px;
  }
}

@media (max-width: 1160px) {
  .signature-grid {
    grid-template-columns: 1fr;
  }
  .signature-media {
    min-height: 560px;
  }
}

@media (max-width: 980px) {
  .hero-card-mini {
    padding: 15px 18px 15px 14px;
    gap: 11px;
  }
  .hero-card-mini strong {
    font-size: .83rem;
  }
}

@media (max-width: 1080px) {
  .hero-card-grid,
  .mini-feature-grid {
    grid-template-columns: 1fr 1fr;
  }
  .process-grid--visual::before {
    display: none;
  }
  .image-float-card {
    right: 18px;
  }
}

@media (max-width: 720px) {
  .hero-highlights--iconic .hero-badge,
  .quickfacts-strip--visual .quickfact,
  .signature-pillar,
  .signature-booking-card {
    grid-template-columns: 52px 1fr;
  }
  .hero-card-mini {
    grid-template-columns: 48px 1fr;
    padding: 15px 18px 15px 14px;
  }
  .hero-highlights--iconic .hero-badge {
    grid-template-columns: 40px 1fr;
  }
  .hero-badge-icon {
    width: 40px;
    height: 40px;
  }
  .hero-badge-icon .ui-icon {
    width: 32px;
    height: 32px;
  }
  .hero-card-grid,
  .mini-feature-grid {
    grid-template-columns: 1fr;
  }
  .quickfacts-strip--visual {
    padding-top: 20px;
  }
  .image-frame--portrait {
    min-height: 480px;
  }
  .image-stack {
    padding-bottom: 0;
    display: grid;
    gap: 16px;
  }
  .image-float-card,
  .image-float-badge,
  .signature-training-card,
  .signature-booking-card,
  .signature-photo {
    position: relative;
    inset: auto;
    width: 100%;
  }
  .image-float-card,
  .signature-training-card,
  .signature-booking-card {
    box-shadow: var(--shadow-sm);
  }
  .image-float-badge {
    justify-content: flex-start;
  }
  .signature-media {
    min-height: auto;
    display: grid;
    gap: 16px;
  }
  .signature-photo {
    min-height: 420px;
  }
}

/* ===== Polish pass ===== */

/* Header logo — tighter, more consistent sizing across breakpoints */
.logo img { height: 68px; }
@media (max-width: 920px) {
  .logo img { height: 58px; }
}
@media (max-width: 520px) {
  .logo img { height: 50px; }
}

/* Safe-area top padding on the sticky header so notch devices look clean */
.site-header {
  padding-top: env(safe-area-inset-top, 0);
}

/* Hamburger breakpoint lift — show mobile nav earlier so nav doesn't crowd */
@media (max-width: 1020px) {
  .hamburger { display: inline-flex; }
  .nav-right { gap: 12px; }
  .nav-list {
    position: fixed;
    inset: calc(var(--nav-h) + 8px) 20px auto;
    background: rgba(255,255,255,.98);
    border: 1px solid rgba(7,94,68,.10);
    border-radius: 24px;
    box-shadow: var(--shadow-md);
    padding: 14px;
    display: none;
    flex-direction: column;
    align-items: stretch;
    max-height: calc(100svh - var(--nav-h) - 28px);
    overflow-y: auto;
  }
  .nav-list.open { display: flex; }
  .nav-list a { justify-content: center; padding: 12px 16px; }
  .nav-cta { display: none; }
}

/* Booking form-fields card (contact page) */
.booking-form-fields {
  margin: 12px 0 0;
  padding: 16px 16px 15px;
  border-radius: 22px;
  border: 1px solid rgba(255,255,255,.14);
  background: rgba(255,255,255,.08);
}
.booking-form-fields .kicker {
  color: #dfe9df;
  margin-bottom: 8px;
}
.booking-form-fields ul {
  list-style: none;
  margin: 10px 0 0;
  padding: 0;
  display: grid;
  gap: 8px;
}
.booking-form-fields li {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  color: rgba(255,255,255,.92);
  font-size: .93rem;
  line-height: 1.5;
}
.booking-form-fields li::before {
  content: '';
  flex: none;
  width: 7px;
  height: 7px;
  margin-top: 9px;
  border-radius: 50%;
  background: var(--sage);
  box-shadow: 0 0 0 3px rgba(124,146,121,.22);
}
.booking-form-fields .note {
  margin: 12px 0 0;
  font-size: .86rem;
  line-height: 1.5;
  color: rgba(255,255,255,.74);
  font-style: italic;
}

/* Availability summary on contact page */
.availability-summary-card {
  margin-top: 12px;
  margin-bottom: 12px;
  padding: 16px 16px 13px;
  border-radius: 22px;
  border: 1px solid rgba(255,255,255,.14);
  background: rgba(255,255,255,.08);
}
.availability-summary-card .kicker {
  color: #dfe9df;
  margin-bottom: 8px;
}
.availability-summary-card p {
  margin: 6px 0 0;
  color: rgba(255,255,255,.88);
  font-size: .93rem;
  line-height: 1.55;
}

/* Instagram callout block (footer / contact) */
.instagram-callout {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 16px 18px;
  border-radius: 20px;
  border: 1px solid rgba(7,94,68,.12);
  background: linear-gradient(135deg, #f6faf4 0%, #eef5ea 100%);
  box-shadow: var(--shadow-sm);
}
.instagram-callout .ig-icon {
  flex: none;
  width: 44px;
  height: 44px;
  border-radius: 14px;
  display: grid;
  place-items: center;
  background: linear-gradient(135deg, var(--dark-green), var(--sage));
  color: #fff;
}
.instagram-callout .ig-icon svg {
  width: 22px;
  height: 22px;
  stroke: #fff;
  fill: none;
  stroke-width: 1.8;
}
.instagram-callout strong {
  display: block;
  color: var(--dark-green);
  font-family: var(--font-serif);
  font-size: 1.18rem;
  line-height: 1.2;
}
.instagram-callout span {
  display: block;
  color: var(--text-soft);
  font-size: .92rem;
  margin-top: 2px;
}
.instagram-callout a.ig-handle {
  display: inline-block;
  margin-top: 4px;
  color: var(--mid-green);
  font-weight: 700;
  font-size: .92rem;
}
.instagram-callout a.ig-handle:hover { text-decoration: underline; }

/* Clean footer spacing */
.footer {
  margin-top: 0;
  padding: 70px 0 36px;
  background: linear-gradient(180deg, #f6faf4 0%, #eef5ea 100%);
  border-top: 1px solid rgba(7,94,68,.10);
}
.footer-grid {
  display: grid;
  grid-template-columns: minmax(260px, 1.3fr) minmax(150px, .9fr) minmax(220px, 1.05fr) minmax(220px, 1fr);
  gap: 44px;
  align-items: start;
}
.footer h3 {
  font-family: var(--font-serif);
  color: var(--dark-green);
  margin: 0 0 14px;
  font-size: 1.42rem;
  line-height: 1.18;
}
.footer h4 {
  color: var(--dark-green);
  margin: 0 0 16px;
  font-size: .94rem;
  font-weight: 800;
  letter-spacing: .09em;
  text-transform: uppercase;
}
.footer p {
  color: var(--text-soft);
  font-size: 1rem;
  line-height: 1.8;
  margin: 0;
}
.footer-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 10px;
}
.footer-list li {
  color: var(--text-soft);
  font-size: 1rem;
  line-height: 1.72;
}
.footer-list a {
  color: var(--text-soft);
  font-size: 1rem;
  line-height: 1.55;
  transition: color var(--transition), transform var(--transition);
}
.footer-list a:hover { color: var(--dark-green); }
.footer-contact-list {
  gap: 12px;
}
.footer-contact-link {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  font-weight: 600;
}
.footer-contact-link span:last-child {
  display: inline-block;
}
.footer-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  flex: 0 0 28px;
  color: var(--dark-green);
  margin-top: 0;
}
.footer-icon svg {
  width: 100%;
  height: 100%;
  display: block;
}
.footer-practice-list li {
  color: #697a70;
}
.footer-bottom {
  margin-top: 44px;
  padding-top: 24px;
  border-top: 1px solid rgba(7,94,68,.10);
  display: flex;
  justify-content: space-between;
  gap: 18px;
  flex-wrap: wrap;
  color: var(--text-soft);
  font-size: .94rem;
  line-height: 1.6;
}
@media (max-width: 980px) {
  .hero-card-mini {
    padding: 15px 18px 15px 14px;
    gap: 11px;
  }
  .hero-card-mini strong {
    font-size: .83rem;
  }
}

@media (max-width: 1080px) {
  .footer-grid { grid-template-columns: 1fr 1fr; gap: 32px; }
}
@media (max-width: 620px) {
  .footer-grid { grid-template-columns: 1fr; gap: 28px; }
  .footer h4 { font-size: .9rem; }
  .footer-bottom { flex-direction: column; gap: 8px; font-size: .9rem; }
}

/* Extra mobile safe-area on the mobile CTA bar already handled; reinforce */
@media (max-width: 920px) {
  .mobile-cta-bar {
    padding-bottom: calc(12px + env(safe-area-inset-bottom));
  }
}

/* Booking layout: tighter stacking on mobile so sidebar + iframe breathe */
@media (max-width: 980px) {
  .hero-card-mini {
    padding: 15px 18px 15px 14px;
    gap: 11px;
  }
  .hero-card-mini strong {
    font-size: .83rem;
  }
}

@media (max-width: 1200px) {
  .booking-sidebar { padding: 28px 26px; }
  .booking-shell { padding: 18px; }
  .google-booking-frame--viewport iframe {
    height: 900px;
    min-height: 900px;
  }
}
@media (max-width: 720px) {
  .booking-sidebar { padding: 24px 22px; border-radius: 22px; }
  .booking-facts-grid { grid-template-columns: 1fr 1fr; }
  .booking-shell { padding: 18px; border-radius: 24px; }
  .google-booking-frame--viewport iframe {
    height: 850px;
    min-height: 850px;
  }
}
@media (max-width: 420px) {
  .booking-facts-grid { grid-template-columns: 1fr; }
}



/* Robust quickfact and contact-detail fixes */
.quickfact .label {
  display: block;
  width: 100%;
  margin-bottom: 10px;
}
.quickfact strong {
  display: block;
  width: 100%;
  clear: both;
  max-width: none;
  margin-bottom: 10px;
}
.quickfact p {
  max-width: none;
}
.quickfact > * {
  min-width: 0;
}

.contact-detail-list {
  display: grid;
  gap: 14px;
  margin: 20px 0 0;
}
.contact-detail-row {
  display: grid;
  gap: 4px;
  padding-bottom: 14px;
  border-bottom: 1px solid rgba(7,94,68,.08);
}
.contact-detail-row:last-child {
  padding-bottom: 0;
  border-bottom: 0;
}
.contact-detail-row span {
  font-size: .78rem;
  text-transform: uppercase;
  letter-spacing: .1em;
  color: var(--sage);
  font-weight: 800;
}
.contact-detail-row a {
  color: var(--mid-green);
  font-weight: 700;
  word-break: normal;
  overflow-wrap: anywhere;
}

/* Final delivery refinements */
body { line-height: 1.72; }
p, li { text-wrap: pretty; }
.section { padding: 88px 0; }
.section-tight { padding: 68px 0; }
.section-header { max-width: 700px; }
.section-header p,
.quickfact p,
.featured-service-card p,
.service-cluster-header p,
.service-card p,
.copy-panel p,
.intro-card p,
.info-card p,
.contact-card p,
.map-card p,
.hours-card p,
.cta-box p,
.highlight-panel p,
.legal-card p { max-width: 64ch; }
.quickfact,
.featured-service-card,
.service-card,
.copy-panel,
.info-card,
.contact-card,
.map-card,
.hours-card,
.approach-step,
.legal-card {
  border: 1px solid rgba(7,94,68,.08);
  box-shadow: 0 18px 44px rgba(18, 43, 24, .07);
}
.quickfact strong,
.featured-service-card h3,
.service-card h3,
.cluster-title,
.legal-card h2,
.page-hero-card h2,
.page-hero-copy h1 { text-wrap: balance; }
.mini-list li,
.check-list li,
.hours-list li,
.service-meta p,
.footer-list a,
.footer p,
.legal-list li { font-size: .98rem; }

.page-hero.page-hero--editorial {
  min-height: auto;
  padding: 26px 0 12px;
  background:
    radial-gradient(circle at 92% 8%, rgba(122,158,126,.16), transparent 16%),
    radial-gradient(circle at 8% 0%, rgba(7,94,68,.08), transparent 18%),
    linear-gradient(180deg, #f8fbf7 0%, #eef5ea 100%);
  overflow: visible;
}
.page-hero.page-hero--editorial::before,
.page-hero.page-hero--editorial::after { content: none; }
.page-hero.page-hero--editorial .page-hero-media { display: none; }
.page-hero.page-hero--editorial .container,
.page-hero-grid {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(280px, .85fr);
  gap: 34px;
  align-items: end;
  padding: 56px 0 20px;
}
.page-hero.page-hero--editorial h1 {
  color: var(--dark-green);
  font-size: clamp(2.5rem, 4.9vw, 4.7rem);
  max-width: 12ch;
  margin-bottom: 18px;
}
.page-hero.page-hero--editorial p {
  color: var(--text-soft);
  font-size: 1.07rem;
  max-width: 60ch;
}
.page-hero.page-hero--editorial .eyebrow {
  background: rgba(255,255,255,.76);
  color: var(--mid-green);
  border-color: rgba(7,94,68,.08);
  box-shadow: var(--shadow-sm);
}
.page-hero-copy { max-width: 760px; }
.page-hero-card {
  background: rgba(255,255,255,.82);
  border: 1px solid rgba(7,94,68,.10);
  border-radius: 28px;
  padding: 28px;
  box-shadow: var(--shadow-md);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}
.page-hero-card h2 {
  margin: 8px 0 0;
  color: var(--dark-green);
  font-family: var(--font-serif);
  font-size: clamp(1.7rem, 3vw, 2.2rem);
  line-height: 1.05;
}
.editorial-list {
  list-style: none;
  margin: 20px 0 0;
  padding: 0;
  display: grid;
  gap: 0;
}
.editorial-list li {
  display: grid;
  gap: 4px;
  padding: 14px 0;
  border-top: 1px solid rgba(7,94,68,.08);
}
.editorial-list li:first-child {
  padding-top: 0;
  border-top: 0;
}
.editorial-list strong {
  color: var(--dark-green);
  font-size: 1rem;
  line-height: 1.3;
}
.editorial-list span {
  color: var(--text-soft);
  font-size: .95rem;
  line-height: 1.58;
}
.editorial-note {
  margin: 18px 0 0;
  padding-top: 16px;
  border-top: 1px solid rgba(7,94,68,.08);
  color: var(--text-soft);
  font-size: .95rem;
}
.editorial-portrait {
  display: grid;
  gap: 18px;
}
.portrait-frame {
  overflow: hidden;
  border-radius: 22px;
  aspect-ratio: 4 / 5;
  background: #dfe8dc;
}
.portrait-frame img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.portrait-caption {
  margin: 10px 0 0;
  color: var(--text-soft);
  font-size: .97rem;
}
.credential-pills {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 14px;
}
.credential-pills span {
  display: inline-flex;
  align-items: center;
  min-height: 38px;
  padding: 8px 14px;
  border-radius: 999px;
  background: var(--sage-soft);
  border: 1px solid rgba(47,107,31,.10);
  color: var(--mid-green);
  font-size: .86rem;
  font-weight: 700;
}
.legal-content {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 24px;
}
.legal-card {
  padding: 28px;
  border-radius: 24px;
  background: rgba(255,255,255,.88);
}
.legal-card h2 {
  margin: 0 0 14px;
  color: var(--dark-green);
  font-size: 1.45rem;
  font-family: var(--font-serif);
}
.legal-card p:last-child { margin-bottom: 0; }
.legal-list {
  margin: 0;
  padding-left: 18px;
  display: grid;
  gap: 10px;
}

.cookie-banner {
  position: fixed;
  left: 18px;
  right: 18px;
  bottom: 18px;
  z-index: 1100;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  max-width: 920px;
  margin: 0 auto;
  padding: 16px 18px;
  border-radius: 22px;
  border: 1px solid rgba(7,94,68,.12);
  background: rgba(255,255,255,.94);
  box-shadow: var(--shadow-md);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
}
.cookie-banner[hidden] { display: none; }
.cookie-banner__copy strong {
  display: block;
  color: var(--dark-green);
  margin-bottom: 4px;
}
.cookie-banner__copy p {
  margin: 0;
  color: var(--text-soft);
  font-size: .92rem;
  line-height: 1.5;
}
.cookie-banner__actions {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  justify-content: flex-end;
}
.btn-sm {
  min-height: 42px;
  padding: 10px 18px;
  font-size: .92rem;
}

@media (max-width: 980px) {
  .page-hero.page-hero--editorial .container,
  .page-hero-grid,
  .legal-content {
    grid-template-columns: 1fr;
  }
  .page-hero.page-hero--editorial .container,
  .page-hero-grid { gap: 22px; }
  .page-hero-card { padding: 24px; }
}
@media (max-width: 720px) {
  .section { padding: 74px 0; }
  .section-tight { padding: 54px 0; }
  .page-hero.page-hero--editorial { padding-top: 16px; }
  .page-hero.page-hero--editorial .container,
  .page-hero-grid { padding: 42px 0 14px; }
  .page-hero.page-hero--editorial h1 { max-width: 10.5ch; }
  .page-hero.page-hero--editorial .page-hero-actions { gap: 12px; }
  .page-hero.page-hero--editorial .page-hero-actions .btn { width: 100%; }
  .page-hero-card { border-radius: 24px; padding: 22px; }
  .cookie-banner {
    left: 12px;
    right: 12px;
    bottom: calc(74px + env(safe-area-inset-bottom));
    flex-direction: column;
    align-items: stretch;
  }
  .cookie-banner__actions { justify-content: stretch; }
  .cookie-banner__actions .btn { width: 100%; }
}


/* ===== Header refinement pass ===== */
:root { --nav-h: 76px; }

.site-header {
  background: rgba(255,255,255,.94);
}

.nav-wrap {
  min-height: var(--nav-h);
  gap: 16px;
}

.site-header > .container.nav-wrap {
  width: min(1600px, calc(100% - 48px));
}

@media (max-width: 920px) {
  .site-header > .container.nav-wrap {
    width: min(100% - 32px, 1600px);
  }
}

.logo {
  gap: 10px;
  padding: 2px 0;
}

.logo-mark {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.logo img,
.logo-mark img {
  width: auto;
  height: 56px;
  object-fit: contain;
}

.logo-text {
  display: inline-block;
  max-width: 220px;
  color: var(--dark-green);
  font-size: .94rem;
  font-weight: 700;
  line-height: 1.15;
  letter-spacing: .015em;
}

.logo-text .logo-text__line {
  display: block;
}

.nav-list a {
  min-height: 40px;
  padding: 0 12px;
  font-size: .92rem;
}

.nav-cta {
  min-height: 44px;
  padding: 10px 18px;
  font-size: .92rem;
  box-shadow: 0 10px 22px rgba(47, 107, 31, .18);
}

@media (max-width: 920px) {
  :root { --nav-h: 72px; }
  .logo img,
  .logo-mark img { height: 48px; }
  .logo-text {
    max-width: 185px;
    font-size: .86rem;
  }
}

@media (max-width: 640px) {
  :root { --nav-h: 68px; }
  .nav-wrap { gap: 12px; }
  .logo { gap: 8px; }
  .logo img,
  .logo-mark img { height: 42px; }
  .logo-text {
    max-width: 145px;
    font-size: .78rem;
    line-height: 1.02;
  }
}


/* Top-section abstract logo styling */
.service-page-hero,
.about-page-hero,
.contact-booking-hero {
  position: relative;
  isolation: isolate;
  overflow: clip;
}

.service-page-hero {
  background:
    radial-gradient(circle at 16% 18%, rgba(255,255,255,.80) 0, rgba(255,255,255,0) 18%),
    radial-gradient(circle at 84% 20%, rgba(255,255,255,.58) 0, rgba(255,255,255,0) 15%),
    url('../brand-whisper.svg') no-repeat left 5% top 68px / 300px,
    url('../brand-orbit.svg') no-repeat right 8% top 48px / 260px,
    linear-gradient(180deg, #f8fbf7 0%, #eef5ea 100%);
}

.about-page-hero {
  background:
    radial-gradient(circle at 15% 18%, rgba(255,255,255,.76) 0, rgba(255,255,255,0) 18%),
    radial-gradient(circle at 86% 22%, rgba(255,255,255,.54) 0, rgba(255,255,255,0) 16%),
    url('../brand-orbit.svg') no-repeat left 6% top 56px / 250px,
    url('../brand-whisper.svg') no-repeat right 7% top 46px / 290px,
    linear-gradient(180deg, #f8fbf7 0%, #eef5ea 100%);
}

.contact-booking-hero {
  background:
    radial-gradient(circle at 16% 18%, rgba(255,255,255,.78) 0, rgba(255,255,255,0) 18%),
    radial-gradient(circle at 85% 20%, rgba(255,255,255,.56) 0, rgba(255,255,255,0) 16%),
    url('../brand-whisper.svg') no-repeat left 6% top 62px / 290px,
    url('../brand-orbit.svg') no-repeat right 8% top 42px / 245px,
    linear-gradient(180deg, #f8fbf7 0%, #eef5ea 100%);
}

.service-page-hero::before,
.service-page-hero::after,
.about-page-hero::before,
.about-page-hero::after,
.contact-booking-hero::before,
.contact-booking-hero::after {
  content: "";
  position: absolute;
  pointer-events: none;
  z-index: 0;
  border-radius: 50%;
  filter: blur(1px);
}

.service-page-hero::before,
.about-page-hero::before,
.contact-booking-hero::before {
  width: 360px;
  height: 360px;
  top: -90px;
  right: -90px;
  background: radial-gradient(circle, rgba(143,182,141,.18) 0%, rgba(143,182,141,0) 68%);
}

.service-page-hero::after,
.about-page-hero::after,
.contact-booking-hero::after {
  width: 280px;
  height: 280px;
  left: -88px;
  bottom: -72px;
  background: radial-gradient(circle, rgba(11,106,86,.10) 0%, rgba(11,106,86,0) 72%);
}

.service-page-hero .container,
.about-page-hero .container,
.contact-booking-hero .container,
.service-page-hero .page-hero-grid,
.about-page-hero .page-hero-grid,
.contact-booking-hero .page-hero-grid {
  position: relative;
  z-index: 2;
}

@media (max-width: 980px) {
  .service-page-hero,
  .about-page-hero,
  .contact-booking-hero {
    background-size: auto, auto, 230px, 195px, auto;
    background-position:
      14% 16%,
      84% 18%,
      left 2% top 78px,
      right 3% top 52px,
      center;
  }

  .service-page-hero::before,
  .about-page-hero::before,
  .contact-booking-hero::before {
    width: 280px;
    height: 280px;
  }

  .service-page-hero::after,
  .about-page-hero::after,
  .contact-booking-hero::after {
    width: 220px;
    height: 220px;
  }
}

@media (max-width: 720px) {
  .service-page-hero,
  .about-page-hero,
  .contact-booking-hero {
    background-size: auto, auto, 150px, 118px, auto;
    background-position:
      12% 12%,
      88% 16%,
      left -18px top 84px,
      right -8px top 118px,
      center;
  }

  .service-page-hero::before,
  .about-page-hero::before,
  .contact-booking-hero::before {
    width: 170px;
    height: 170px;
    top: -30px;
    right: -40px;
    opacity: .72;
  }

  .service-page-hero::after,
  .about-page-hero::after,
  .contact-booking-hero::after {
    width: 130px;
    height: 130px;
    left: -28px;
    bottom: -20px;
    opacity: .46;
  }
}

/* =========================================================
   FINAL POLISH — pre-delivery fixes
   ========================================================= */

/* 1. Horizontal-overflow containment --------------------- */
/* Several decorative ::after pseudo-elements on cards are
   positioned at right: -36px (booking-shell, map-card,
   hours-card, feature-card, etc.) and the highlight-panel's
   ::before/::after extend even further. `overflow: hidden`
   on the parents clips the paint but NOT the scrollWidth,
   so on narrow viewports the contact page leaked a
   horizontal scroll. `overflow-x: clip` genuinely prevents
   both paint overflow and scrollWidth reporting, and is
   widely supported. */
html, body {
  overflow-x: clip;
}
/* Promote the most pseudo-heavy containers to `clip` so
   their decorative blobs don't propagate width upwards. */
.booking-shell,
.booking-sidebar,
.highlight-panel,
.map-card,
.hours-card,
.contact-card,
.feature-card,
.service-card,
.condition-card,
.approach-step,
.quote-card,
.info-card,
.intro-card,
.cta-box,
.footer,
.hero,
.page-hero,
.signature-section {
  overflow: clip;
}
/* Grid children default to min-width: auto which can
   refuse to shrink below their content's intrinsic width.
   Force all grid/flex containers on the booking, contact,
   and footer layouts to allow their children to shrink. */
.booking-layout > *,
.contact-practical-grid > *,
.footer-grid > *,
.page-hero-grid > *,
.hero-grid > *,
.intro-grid > *,
.signature-grid > *,
.dual-grid > *,
.cta-grid > * {
  min-width: 0;
}

/* 2. Long-word wrapping — Info@cdkphysio.co.za, URLs,
   and similar strings should always wrap on narrow screens. */
.footer-contact-link span,
.contact-detail-row a,
.contact-card a[href^="mailto"],
.contact-card a[href^="https"],
.hours-list span,
.booking-fact-card strong {
  overflow-wrap: anywhere;
  word-break: break-word;
}

/* 3. Decorative body blobs — tighten so they can never
   contribute to layout width on very narrow screens. */
@media (max-width: 520px) {
  body::before,
  body::after {
    display: none;
  }
}

/* 4. Tap targets — inline text CTAs inside cards should
   meet the 44px minimum on touch devices. Uses a media
   query so desktop hover states stay compact. */
@media (hover: none) and (pointer: coarse) {
  .feature-link,
  .service-link,
  .text-link,
  .contact-detail-row a,
  .ig-handle {
    min-height: 44px;
    padding: 10px 0;
    align-items: center;
  }
  /* Footer nav links a bit more generous too. */
  .footer-list a:not(.footer-contact-link) {
    display: inline-block;
    padding: 6px 0;
    min-height: 36px;
  }
  .footer-contact-link {
    padding: 6px 0;
    min-height: 40px;
  }
}

/* 5. Google Calendar iframe wrapper — on the narrowest
   screens the iframe's intrinsic content can push the
   parent. Hard-clip it. */
.google-booking-frame {
  overflow: clip;
  max-width: 100%;
}
.google-booking-frame iframe {
  max-width: 100%;
  display: block;
}

/* 6. Images — add explicit max-width safety on any img
   inside cards so a stray image can't push layout. */
.image-frame img,
.signature-photo img {
  max-width: 100%;
  height: auto;
}

/* 7. Mobile CTA bar — ensure enough bottom spacing on
   pages that end with a tight section so content isn't
   hidden behind the fixed bar. */
@media (max-width: 920px) {
  body {
    padding-bottom: calc(96px + env(safe-area-inset-bottom));
  }
  /* The cookie banner sits above the mobile CTA bar
     when both are present; give it breathing room. */
  .cookie-banner {
    bottom: calc(108px + env(safe-area-inset-bottom));
  }
}

/* 8. Footer bottom row — wrap cleanly on narrow screens. */
.footer-bottom {
  flex-wrap: wrap;
  gap: 8px;
}
@media (max-width: 520px) {
  .footer-bottom {
    flex-direction: column;
    align-items: flex-start;
    text-align: left;
  }
}

/* 9. Navigation — ensure mobile menu links have real
   tap height when open. */
@media (max-width: 920px) {
  .nav-list.open a {
    min-height: 48px;
    display: flex;
    align-items: center;
  }
}

/* 10. Brand SVG accents on Services / About / Contact page heros
   -----------------------------------------------------------
   The per-page hero backgrounds (with brand-whisper.svg and
   brand-orbit.svg) were being silently overridden by the
   `.page-hero.page-hero--editorial` rule earlier in the file,
   because that compound selector (specificity 0,2,0) beats
   the per-page single-class selectors (0,1,0). The decorative
   ::before/::after circles were killed the same way via
   `content: none`. These overrides restore both layers by
   matching with higher specificity (0,3,x). */

.page-hero.page-hero--editorial.service-page-hero {
  background:
    radial-gradient(circle at 16% 18%, rgba(255,255,255,.80) 0, rgba(255,255,255,0) 22%),
    radial-gradient(circle at 84% 20%, rgba(255,255,255,.58) 0, rgba(255,255,255,0) 18%),
    url('../brand-whisper.svg') no-repeat left 4% top 70px / 300px,
    url('../brand-orbit.svg')   no-repeat right 6% top 40px / 280px,
    linear-gradient(180deg, #f8fbf7 0%, #eef5ea 100%);
}

.page-hero.page-hero--editorial.about-page-hero {
  background:
    radial-gradient(circle at 14% 20%, rgba(255,255,255,.78) 0, rgba(255,255,255,0) 22%),
    radial-gradient(circle at 86% 22%, rgba(255,255,255,.56) 0, rgba(255,255,255,0) 18%),
    url('../brand-orbit.svg')   no-repeat left 5% top 58px / 260px,
    url('../brand-whisper.svg') no-repeat right 5% top 44px / 310px,
    linear-gradient(180deg, #f8fbf7 0%, #eef5ea 100%);
}

.page-hero.page-hero--editorial.contact-booking-hero {
  background:
    radial-gradient(circle at 16% 18%, rgba(255,255,255,.78) 0, rgba(255,255,255,0) 22%),
    radial-gradient(circle at 85% 20%, rgba(255,255,255,.56) 0, rgba(255,255,255,0) 18%),
    url('../brand-whisper.svg') no-repeat left 5% top 66px / 300px,
    url('../brand-orbit.svg')   no-repeat right 6% top 38px / 265px,
    linear-gradient(180deg, #f8fbf7 0%, #eef5ea 100%);
}

.page-hero.page-hero--editorial.conditions-page-hero {
  background:
    radial-gradient(circle at 15% 20%, rgba(255,255,255,.78) 0, rgba(255,255,255,0) 22%),
    radial-gradient(circle at 85% 18%, rgba(255,255,255,.56) 0, rgba(255,255,255,0) 18%),
    url('../brand-whisper.svg') no-repeat right 5% top 48px / 295px,
    url('../brand-orbit.svg')   no-repeat left 6% top 62px / 255px,
    linear-gradient(180deg, #f8fbf7 0%, #eef5ea 100%);
}

/* Bring back the decorative blurred-disc pseudo accents.
   The editorial base rule sets `content: none`, so we must
   re-declare `content` here — matching with compound
   specificity (0,3,1) beats the editorial rule (0,2,1). */
.page-hero.page-hero--editorial.service-page-hero::before,
.page-hero.page-hero--editorial.service-page-hero::after,
.page-hero.page-hero--editorial.about-page-hero::before,
.page-hero.page-hero--editorial.about-page-hero::after,
.page-hero.page-hero--editorial.contact-booking-hero::before,
.page-hero.page-hero--editorial.contact-booking-hero::after,
.page-hero.page-hero--editorial.conditions-page-hero::before,
.page-hero.page-hero--editorial.conditions-page-hero::after {
  content: "";
  position: absolute;
  pointer-events: none;
  z-index: 0;
  border-radius: 50%;
  filter: blur(2px);
}

.page-hero.page-hero--editorial.service-page-hero::before,
.page-hero.page-hero--editorial.about-page-hero::before,
.page-hero.page-hero--editorial.contact-booking-hero::before,
.page-hero.page-hero--editorial.conditions-page-hero::before {
  width: 380px;
  height: 380px;
  top: -110px;
  right: -110px;
  background: radial-gradient(circle, rgba(143,182,141,.22) 0%, rgba(143,182,141,0) 68%);
}

.page-hero.page-hero--editorial.service-page-hero::after,
.page-hero.page-hero--editorial.about-page-hero::after,
.page-hero.page-hero--editorial.contact-booking-hero::after,
.page-hero.page-hero--editorial.conditions-page-hero::after {
  width: 300px;
  height: 300px;
  left: -100px;
  bottom: -90px;
  background: radial-gradient(circle, rgba(11,106,86,.14) 0%, rgba(11,106,86,0) 72%);
}

/* Keep the hero content layered above the accents. */
.page-hero.page-hero--editorial.service-page-hero .container,
.page-hero.page-hero--editorial.about-page-hero .container,
.page-hero.page-hero--editorial.contact-booking-hero .container,
.page-hero.page-hero--editorial.conditions-page-hero .container {
  position: relative;
  z-index: 2;
}

/* Ensure the editorial hero can host absolutely-positioned
   pseudos (editorial base sets `overflow: visible` which is
   fine, but we need a containing block). */
.page-hero.page-hero--editorial.service-page-hero,
.page-hero.page-hero--editorial.about-page-hero,
.page-hero.page-hero--editorial.contact-booking-hero,
.page-hero.page-hero--editorial.conditions-page-hero {
  position: relative;
  isolation: isolate;
  overflow: clip;
}

/* Scale the SVG accents down on tablet and mobile so they
   stay decorative rather than dominant. */
@media (max-width: 980px) {
  .page-hero.page-hero--editorial.service-page-hero,
  .page-hero.page-hero--editorial.about-page-hero,
  .page-hero.page-hero--editorial.contact-booking-hero,
  .page-hero.page-hero--editorial.conditions-page-hero {
    background-size:
      auto, auto,
      220px, 195px,
      auto;
  }
}
@media (max-width: 720px) {
  .page-hero.page-hero--editorial.service-page-hero,
  .page-hero.page-hero--editorial.about-page-hero,
  .page-hero.page-hero--editorial.contact-booking-hero,
  .page-hero.page-hero--editorial.conditions-page-hero {
    background-size:
      auto, auto,
      160px, 140px,
      auto;
    background-position:
      16% 16%,
      84% 18%,
      left 4% top 22px,
      right 4% top 14px,
      center;
  }
  .page-hero.page-hero--editorial.service-page-hero::before,
  .page-hero.page-hero--editorial.about-page-hero::before,
  .page-hero.page-hero--editorial.contact-booking-hero::before,
  .page-hero.page-hero--editorial.conditions-page-hero::before {
    width: 260px;
    height: 260px;
    top: -80px;
    right: -80px;
  }
  .page-hero.page-hero--editorial.service-page-hero::after,
  .page-hero.page-hero--editorial.about-page-hero::after,
  .page-hero.page-hero--editorial.contact-booking-hero::after,
  .page-hero.page-hero--editorial.conditions-page-hero::after {
    width: 200px;
    height: 200px;
    left: -70px;
    bottom: -60px;
  }
}

/* 11. Richer editorial hero accents — v22 refinement
   Adds more layered brand-matched SVG traces so the top
   sections feel more considered and less sparse, while
   keeping the layout untouched. */
.page-hero.page-hero--editorial.service-page-hero,
.page-hero.page-hero--editorial.about-page-hero,
.page-hero.page-hero--editorial.contact-booking-hero,
.page-hero.page-hero--editorial.conditions-page-hero {
  position: relative;
  isolation: isolate;
  overflow: clip;
}

.page-hero.page-hero--editorial.service-page-hero {
  background:
    radial-gradient(circle at 14% 15%, rgba(255,255,255,.88) 0, rgba(255,255,255,0) 20%),
    radial-gradient(circle at 84% 14%, rgba(255,255,255,.62) 0, rgba(255,255,255,0) 19%),
    radial-gradient(circle at 52% -4%, rgba(124,146,121,.10) 0, rgba(124,146,121,0) 24%),
    url('../brand-echo.svg')    no-repeat left 1.5% top 18px / 230px,
    url('../brand-whisper.svg') no-repeat left 7% top 84px / 310px,
    url('../brand-orbit.svg')   no-repeat right 5% top 38px / 286px,
    url('../brand-bloom.svg')   no-repeat right 17% bottom 18px / 172px,
    linear-gradient(180deg, #f9fcf8 0%, #eef5ea 100%);
}

.page-hero.page-hero--editorial.conditions-page-hero {
  background:
    radial-gradient(circle at 16% 18%, rgba(255,255,255,.84) 0, rgba(255,255,255,0) 21%),
    radial-gradient(circle at 86% 14%, rgba(255,255,255,.60) 0, rgba(255,255,255,0) 18%),
    radial-gradient(circle at 46% -6%, rgba(11,106,86,.06) 0, rgba(11,106,86,0) 23%),
    url('../brand-bloom.svg')   no-repeat left 8% top 26px / 170px,
    url('../brand-orbit.svg')   no-repeat left 4% top 76px / 258px,
    url('../brand-whisper.svg') no-repeat right 4% top 52px / 300px,
    url('../brand-echo.svg')    no-repeat right 11% top 8px / 208px,
    linear-gradient(180deg, #f9fcf8 0%, #eef5ea 100%);
}

.page-hero.page-hero--editorial.about-page-hero {
  background:
    radial-gradient(circle at 14% 16%, rgba(255,255,255,.84) 0, rgba(255,255,255,0) 21%),
    radial-gradient(circle at 87% 16%, rgba(255,255,255,.58) 0, rgba(255,255,255,0) 18%),
    radial-gradient(circle at 50% -2%, rgba(124,146,121,.08) 0, rgba(124,146,121,0) 26%),
    url('../brand-echo.svg')    no-repeat left 3% top 14px / 218px,
    url('../brand-orbit.svg')   no-repeat left 6% top 74px / 250px,
    url('../brand-whisper.svg') no-repeat right 4.5% top 40px / 316px,
    url('../brand-bloom.svg')   no-repeat right 14% bottom 16px / 176px,
    linear-gradient(180deg, #f9fcf8 0%, #eef5ea 100%);
}

.page-hero.page-hero--editorial.contact-booking-hero {
  background:
    radial-gradient(circle at 15% 16%, rgba(255,255,255,.86) 0, rgba(255,255,255,0) 21%),
    radial-gradient(circle at 85% 15%, rgba(255,255,255,.60) 0, rgba(255,255,255,0) 18%),
    radial-gradient(circle at 52% 0%, rgba(124,146,121,.08) 0, rgba(124,146,121,0) 24%),
    url('../brand-bloom.svg')   no-repeat left 9% top 18px / 168px,
    url('../brand-whisper.svg') no-repeat left 4% top 72px / 300px,
    url('../brand-orbit.svg')   no-repeat right 5% top 34px / 270px,
    url('../brand-echo.svg')    no-repeat right 12% top 4px / 205px,
    linear-gradient(180deg, #f9fcf8 0%, #eef5ea 100%);
}

.page-hero.page-hero--editorial.service-page-hero::before,
.page-hero.page-hero--editorial.about-page-hero::before,
.page-hero.page-hero--editorial.contact-booking-hero::before,
.page-hero.page-hero--editorial.conditions-page-hero::before,
.page-hero.page-hero--editorial.service-page-hero::after,
.page-hero.page-hero--editorial.about-page-hero::after,
.page-hero.page-hero--editorial.contact-booking-hero::after,
.page-hero.page-hero--editorial.conditions-page-hero::after {
  content: "";
  position: absolute;
  pointer-events: none;
  z-index: 0;
}

.page-hero.page-hero--editorial.service-page-hero::before,
.page-hero.page-hero--editorial.about-page-hero::before,
.page-hero.page-hero--editorial.contact-booking-hero::before,
.page-hero.page-hero--editorial.conditions-page-hero::before {
  top: -104px;
  right: -108px;
  width: 420px;
  height: 420px;
  background:
    radial-gradient(circle at 46% 44%, rgba(143,182,141,.24) 0%, rgba(143,182,141,.10) 26%, rgba(143,182,141,0) 68%),
    url('../brand-bloom.svg') center / 220px no-repeat;
  opacity: .92;
  filter: blur(.2px);
}

.page-hero.page-hero--editorial.service-page-hero::after,
.page-hero.page-hero--editorial.about-page-hero::after,
.page-hero.page-hero--editorial.contact-booking-hero::after,
.page-hero.page-hero--editorial.conditions-page-hero::after {
  left: -112px;
  bottom: -102px;
  width: 340px;
  height: 340px;
  background:
    radial-gradient(circle at 52% 48%, rgba(11,106,86,.14) 0%, rgba(11,106,86,.07) 24%, rgba(11,106,86,0) 72%),
    url('../brand-echo.svg') center / 220px no-repeat;
  opacity: .9;
  filter: blur(.2px);
}

.page-hero.page-hero--editorial.service-page-hero .container,
.page-hero.page-hero--editorial.about-page-hero .container,
.page-hero.page-hero--editorial.contact-booking-hero .container,
.page-hero.page-hero--editorial.conditions-page-hero .container {
  position: relative;
  z-index: 2;
}

@media (max-width: 1120px) {
  .page-hero.page-hero--editorial.service-page-hero,
  .page-hero.page-hero--editorial.about-page-hero,
  .page-hero.page-hero--editorial.contact-booking-hero,
  .page-hero.page-hero--editorial.conditions-page-hero {
    background-size:
      auto, auto, auto,
      190px, 248px, 225px, 145px,
      auto;
  }
}

@media (max-width: 980px) {
  .page-hero.page-hero--editorial.service-page-hero,
  .page-hero.page-hero--editorial.about-page-hero,
  .page-hero.page-hero--editorial.contact-booking-hero,
  .page-hero.page-hero--editorial.conditions-page-hero {
    background-size:
      auto, auto, auto,
      158px, 208px, 188px, 122px,
      auto;
  }

  .page-hero.page-hero--editorial.service-page-hero::before,
  .page-hero.page-hero--editorial.about-page-hero::before,
  .page-hero.page-hero--editorial.contact-booking-hero::before,
  .page-hero.page-hero--editorial.conditions-page-hero::before {
    width: 330px;
    height: 330px;
    top: -78px;
    right: -86px;
    background-size: auto, 172px;
  }

  .page-hero.page-hero--editorial.service-page-hero::after,
  .page-hero.page-hero--editorial.about-page-hero::after,
  .page-hero.page-hero--editorial.contact-booking-hero::after,
  .page-hero.page-hero--editorial.conditions-page-hero::after {
    width: 270px;
    height: 270px;
    left: -80px;
    bottom: -74px;
    background-size: auto, 176px;
  }
}

@media (max-width: 720px) {
  .page-hero.page-hero--editorial.service-page-hero,
  .page-hero.page-hero--editorial.about-page-hero,
  .page-hero.page-hero--editorial.contact-booking-hero,
  .page-hero.page-hero--editorial.conditions-page-hero {
    background-size:
      auto, auto, auto,
      112px, 154px, 142px, 92px,
      auto;
    background-position:
      16% 16%,
      84% 16%,
      50% -4%,
      left 2.5% top 10px,
      left 2.5% top 54px,
      right 3% top 18px,
      right 14% bottom 10px,
      center;
  }

  .page-hero.page-hero--editorial.service-page-hero::before,
  .page-hero.page-hero--editorial.about-page-hero::before,
  .page-hero.page-hero--editorial.contact-booking-hero::before,
  .page-hero.page-hero--editorial.conditions-page-hero::before {
    width: 244px;
    height: 244px;
    top: -60px;
    right: -58px;
    background-size: auto, 128px;
    opacity: .8;
  }

  .page-hero.page-hero--editorial.service-page-hero::after,
  .page-hero.page-hero--editorial.about-page-hero::after,
  .page-hero.page-hero--editorial.contact-booking-hero::after,
  .page-hero.page-hero--editorial.conditions-page-hero::after {
    width: 198px;
    height: 198px;
    left: -54px;
    bottom: -48px;
    background-size: auto, 126px;
    opacity: .76;
  }
}

/* ========================================================= */
/* Page-wide abstract brand patterns                         */
/* Applied to content sections across all pages. Excluded    */
/* from .hero (home) and .page-hero automatically because    */
/* neither carries the .section / .section-tight /           */
/* .quickfacts-strip classes targeted below. 6 variants      */
/* cycle via :nth-of-type so sections never look identical.  */
/* ========================================================= */

main > section.section,
main > section.section-tight,
main > section.quickfacts-strip {
  position: relative;
  overflow: clip;
}

main > section.section > .container,
main > section.section-tight > .container,
main > section.quickfacts-strip > .container {
  position: relative;
  z-index: 1;
}

main > section.section::after,
main > section.section-tight::after,
main > section.quickfacts-strip::after {
  content: '';
  position: absolute;
  pointer-events: none;
  z-index: 0;
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
}

/* Variant 1 — large bloom, top-right, slight tilt */
main > section.section:nth-of-type(6n+1)::after,
main > section.section-tight:nth-of-type(6n+1)::after,
main > section.quickfacts-strip:nth-of-type(6n+1)::after {
  width: min(42vw, 460px);
  aspect-ratio: 1 / 1;
  top: -60px;
  right: -80px;
  background-image: url('../brand-bloom.svg');
  opacity: .55;
  transform: rotate(-8deg);
}

/* Variant 2 — medium echo, bottom-left, flipped */
main > section.section:nth-of-type(6n+2)::after,
main > section.section-tight:nth-of-type(6n+2)::after,
main > section.quickfacts-strip:nth-of-type(6n+2)::after {
  width: min(36vw, 380px);
  aspect-ratio: 1 / 1;
  bottom: -70px;
  left: -90px;
  background-image: url('../brand-echo.svg');
  opacity: .62;
  transform: scaleX(-1) rotate(12deg);
}

/* Variant 3 — orbit, mid-right, vertical */
main > section.section:nth-of-type(6n+3)::after,
main > section.section-tight:nth-of-type(6n+3)::after,
main > section.quickfacts-strip:nth-of-type(6n+3)::after {
  width: min(32vw, 340px);
  aspect-ratio: 1 / 1;
  top: 40%;
  right: -120px;
  background-image: url('../brand-orbit.svg');
  opacity: .5;
  transform: translateY(-50%) rotate(90deg);
}

/* Variant 4 — whisper, top-left, small and subtle */
main > section.section:nth-of-type(6n+4)::after,
main > section.section-tight:nth-of-type(6n+4)::after,
main > section.quickfacts-strip:nth-of-type(6n+4)::after {
  width: min(28vw, 300px);
  aspect-ratio: 1 / 1;
  top: -50px;
  left: -60px;
  background-image: url('../brand-whisper.svg');
  opacity: .6;
  transform: rotate(168deg);
}

/* Variant 5 — bloom, bottom-right, flipped + rotated */
main > section.section:nth-of-type(6n+5)::after,
main > section.section-tight:nth-of-type(6n+5)::after,
main > section.quickfacts-strip:nth-of-type(6n+5)::after {
  width: min(38vw, 420px);
  aspect-ratio: 1 / 1;
  bottom: -90px;
  right: -70px;
  background-image: url('../brand-bloom.svg');
  opacity: .52;
  transform: scaleX(-1) rotate(-24deg);
}

/* Variant 6 — echo, mid-left, diagonal */
main > section.section:nth-of-type(6n)::after,
main > section.section-tight:nth-of-type(6n)::after,
main > section.quickfacts-strip:nth-of-type(6n)::after {
  width: min(34vw, 360px);
  aspect-ratio: 1 / 1;
  top: 30%;
  left: -110px;
  background-image: url('../brand-echo.svg');
  opacity: .58;
  transform: translateY(-50%) rotate(-42deg);
}

/* Dark/tinted sections — cta-band has a light-green gradient,
   lift pattern opacity a touch so it still reads. */
main > section.section.cta-band::after {
  opacity: .72;
}

/* On narrow viewports shrink patterns and pull them further
   off-canvas so they don't crowd the copy on mobile. */
@media (max-width: 720px) {
  main > section.section::after,
  main > section.section-tight::after,
  main > section.quickfacts-strip::after {
    width: min(64vw, 280px) !important;
    opacity: .45 !important;
  }
  main > section.section:nth-of-type(6n+1)::after,
  main > section.section-tight:nth-of-type(6n+1)::after,
  main > section.quickfacts-strip:nth-of-type(6n+1)::after {
    top: -40px;
    right: -90px;
  }
  main > section.section:nth-of-type(6n+2)::after,
  main > section.section-tight:nth-of-type(6n+2)::after,
  main > section.quickfacts-strip:nth-of-type(6n+2)::after {
    bottom: -50px;
    left: -100px;
  }
  main > section.section:nth-of-type(6n+3)::after,
  main > section.section-tight:nth-of-type(6n+3)::after,
  main > section.quickfacts-strip:nth-of-type(6n+3)::after {
    right: -140px;
  }
  main > section.section:nth-of-type(6n+4)::after,
  main > section.section-tight:nth-of-type(6n+4)::after,
  main > section.quickfacts-strip:nth-of-type(6n+4)::after {
    top: -40px;
    left: -80px;
  }
  main > section.section:nth-of-type(6n+5)::after,
  main > section.section-tight:nth-of-type(6n+5)::after,
  main > section.quickfacts-strip:nth-of-type(6n+5)::after {
    bottom: -60px;
    right: -90px;
  }
  main > section.section:nth-of-type(6n)::after,
  main > section.section-tight:nth-of-type(6n)::after,
  main > section.quickfacts-strip:nth-of-type(6n)::after {
    left: -120px;
  }
}


/* Mobile performance pass */
@media (max-width: 920px) {
  html { scroll-behavior: auto; }

  body::before,
  body::after,
  .hero::before,
  .hero::after,
  .page-hero::before {
    content: none !important;
    display: none !important;
  }

  .site-header,
  .nav-list,
  .hero-badge,
  .quickfact,
  .hero-card--visual,
  .page-hero-card,
  .cookie-banner {
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
  }

  .site-header {
    background: rgba(255,255,255,.98);
  }
}

@media (max-width: 920px), (prefers-reduced-motion: reduce) {
  .reveal {
    opacity: 1;
    transform: none;
    transition: none;
    will-change: auto;
  }
}


/* Hero viewport fit tuning for shorter desktop screens */
@media (min-width: 821px) and (max-height: 860px) {
  .hero {
    min-height: calc(100dvh - var(--nav-h));
    padding: 8px 0 10px;
  }

  .hero-grid {
    gap: 20px;
    padding: 10px 0 6px;
  }

  .hero-title {
    font-size: clamp(2.45rem, 3.8vw, 4.15rem);
    margin: 10px 0 8px;
  }

  .hero-sub {
    font-size: .93rem;
  }

  .hero-highlights {
    margin-top: 12px;
    gap: 10px;
  }

  .hero-badge {
    padding: 10px 12px;
    border-radius: 18px;
    font-size: .84rem;
  }

  .hero-badge strong {
    margin-bottom: 4px;
  }

  .hero-card {
    max-width: 438px;
    padding: 20px 22px 16px;
  }

  .hero-card h2 {
    font-size: 1.45rem;
    margin: 6px 0 8px;
  }

  .hero-card p {
    margin-bottom: 10px;
    font-size: .92rem;
  }

  .hero-card ul {
    gap: 6px;
    margin-bottom: 10px;
  }

  .hero-card li {
    font-size: .9rem;
  }
}

@media (min-width: 821px) and (max-height: 760px) {
  .hero {
    padding: 6px 0 8px;
  }

  .hero-grid {
    gap: 18px;
    padding: 8px 0 4px;
  }

  .hero-title {
    font-size: clamp(2.2rem, 3.4vw, 3.7rem);
  }

  .hero-sub {
    font-size: .9rem;
  }

  .hero-highlights {
    margin-top: 10px;
    gap: 8px;
  }

  .hero-badge {
    padding: 9px 11px;
    font-size: .81rem;
    line-height: 1.3;
  }

  .hero-card {
    max-width: 420px;
    padding: 18px 20px 14px;
  }

  .hero-card h2 {
    font-size: 1.34rem;
  }

  .hero-card p,
  .hero-card li {
    font-size: .88rem;
  }
}


/* Extra hero viewport fit tuning for laptop screens with limited vertical space */
@media (min-width: 821px) and (max-height: 700px) {
  .hero {
    min-height: calc(100dvh - var(--nav-h) - 10px);
    padding: 4px 0 6px;
  }

  .hero-grid {
    grid-template-columns: minmax(0, 1fr) minmax(330px, .72fr);
    gap: 16px;
    padding: 6px 0 2px;
  }

  .hero-copy {
    max-width: 540px;
  }

  .hero-title {
    font-size: clamp(1.95rem, 2.95vw, 3.25rem);
    margin: 8px 0 6px;
  }

  .hero-sub {
    max-width: 500px;
    font-size: .86rem;
  }

  .hero .button-row {
    margin-top: 14px !important;
    gap: 10px;
  }

  .hero .btn {
    min-height: 44px;
    padding: 10px 18px;
    font-size: .92rem;
  }

  .hero-highlights {
    margin-top: 8px;
    gap: 8px;
  }

  .hero-badge {
    padding: 8px 10px;
    border-radius: 16px;
    font-size: .78rem;
    line-height: 1.28;
  }

  .hero-badge strong {
    font-size: .68rem;
    margin-bottom: 3px;
  }

  .hero-card {
    max-width: 396px;
    padding: 16px 18px 12px;
    border-radius: 24px;
  }

  .hero-card h2 {
    font-size: 1.24rem;
    margin: 5px 0 7px;
  }

  .hero-card p {
    margin-bottom: 8px;
    font-size: .85rem;
  }

  .hero-card ul {
    gap: 5px;
    margin-bottom: 8px;
  }

  .hero-card li {
    font-size: .84rem;
  }
}

/* Final homepage hero viewport-fit pass for shorter desktop/laptop screens */
@media (min-width: 821px) {
  .hero {
    min-height: calc(100dvh - var(--nav-h) - 6px);
    padding: clamp(4px, 0.9dvh, 10px) 0 clamp(6px, 1.1dvh, 14px);
  }

  .hero-grid {
    gap: clamp(14px, 1.8vw, 24px);
    padding: clamp(6px, 1.1dvh, 18px) 0 clamp(4px, 0.9dvh, 10px);
  }

  .hero-copy {
    max-width: min(570px, 34vw + 220px);
  }

  .hero-title {
    font-size: clamp(2.35rem, min(4.35vw, 7.2dvh), 4.7rem);
    margin: clamp(8px, 1dvh, 12px) 0 clamp(6px, 0.9dvh, 10px);
  }

  .hero-sub {
    font-size: clamp(.9rem, min(.98vw, 1.75dvh), .96rem);
    max-width: 53ch;
  }

  .hero .button-row {
    gap: clamp(10px, 1vw, 14px);
    margin-top: clamp(12px, 1.35dvh, 18px) !important;
  }

  .hero .btn {
    min-height: clamp(42px, 4.6dvh, 48px);
    padding: clamp(10px, 1dvh, 14px) clamp(16px, 1.25vw, 22px);
  }

  .hero-highlights {
    gap: clamp(8px, 1dvh, 12px);
    margin-top: clamp(8px, 1.15dvh, 14px);
  }

  .hero-badge {
    padding: clamp(8px, 1dvh, 12px) clamp(10px, 1vw, 14px);
    border-radius: clamp(16px, 1.8dvh, 20px);
    font-size: clamp(.8rem, min(.88vw, 1.55dvh), .88rem);
    line-height: 1.28;
  }

  .hero-badge strong {
    font-size: clamp(.68rem, min(.72vw, 1.22dvh), .76rem);
    margin-bottom: clamp(3px, .45dvh, 5px);
  }

  .hero-card {
    max-width: min(455px, 30vw + 120px);
    padding: clamp(16px, 1.5dvh, 24px) clamp(18px, 1.3vw, 26px) clamp(12px, 1.2dvh, 20px);
    border-radius: clamp(22px, 2.4dvh, 28px);
  }

  .hero-card h2 {
    font-size: clamp(1.24rem, min(2vw, 3.1dvh), 1.6rem);
    margin: clamp(5px, .55dvh, 8px) 0 clamp(7px, .9dvh, 10px);
  }

  .hero-card p {
    margin-bottom: clamp(8px, 1dvh, 12px);
    font-size: clamp(.86rem, min(.92vw, 1.6dvh), .95rem);
  }

  .hero-card ul {
    gap: clamp(5px, .7dvh, 7px);
    margin-bottom: clamp(8px, 1dvh, 14px);
  }

  .hero-card li {
    font-size: clamp(.84rem, min(.9vw, 1.55dvh), .94rem);
  }
}

@media (min-width: 821px) and (max-height: 820px) {
  .hero {
    min-height: calc(100dvh - var(--nav-h) - 12px);
  }

  .hero-grid {
    grid-template-columns: minmax(0, 1fr) minmax(340px, .74fr);
  }
}

@media (min-width: 821px) and (max-height: 760px) {
  .hero {
    min-height: calc(100dvh - var(--nav-h) - 18px);
  }

  .hero-grid {
    grid-template-columns: minmax(0, 1fr) minmax(320px, .72fr);
    gap: 14px;
    padding-top: 4px;
    padding-bottom: 2px;
  }

  .hero-title {
    font-size: clamp(2.1rem, min(3.8vw, 6.2dvh), 3.85rem);
  }

  .hero-highlights {
    gap: 8px;
    margin-top: 8px;
  }

  .hero-badge {
    padding: 8px 10px;
  }

  .hero-card {
    max-width: 390px;
    padding: 14px 16px 10px;
  }

  .hero-card p,
  .hero-card li {
    font-size: .84rem;
  }
}

@media (min-width: 821px) and (max-height: 700px) {
  .hero {
    min-height: calc(100dvh - var(--nav-h) - 28px);
  }

  .hero-copy {
    max-width: 520px;
  }

  .hero-title {
    font-size: clamp(1.9rem, min(3.3vw, 5.6dvh), 3.2rem);
  }

  .hero .btn {
    min-height: 42px;
    padding: 9px 16px;
    font-size: .9rem;
  }

  .hero-card {
    max-width: 372px;
  }
}


/* Final micro-adjustment to remove the last visible bottom seam on shorter desktop screens */
@media (min-width: 821px) {
  .hero {
    min-height: calc(100dvh - var(--nav-h) + 2px);
    margin-bottom: -2px;
  }
}

@media (min-width: 821px) and (max-height: 820px) {
  .hero {
    min-height: calc(100dvh - var(--nav-h) - 6px);
  }
}

@media (min-width: 821px) and (max-height: 760px) {
  .hero {
    min-height: calc(100dvh - var(--nav-h) - 10px);
  }
}

@media (min-width: 821px) and (max-height: 700px) {
  .hero {
    min-height: calc(100dvh - var(--nav-h) - 16px);
  }
}
