:root {
  --paper: #f6f1e7;
  --paper-light: #fbf8f1;
  --ink: #23211c;
  --muted: #5b5648;
  --muted-soft: #625d50;
  --muted-ui: #7a7364;
  --line: rgba(35, 33, 28, 0.12);
  --green: #2e5e45;
  --green-dark: #21452f;
  --green-deep: #13281c;
  --gold: #b08a3e;
  --gold-soft: #baa182;
  --hero-gold: #ebcb84;
  --cream: #f8f4ea;
  --surface-white: #fff;
  --surface-panel: rgba(251, 248, 241, 0.72);
  --surface-wash: rgba(246, 241, 231, 0.9);
  --muted-tab: #9b9485;
  --feature-muted: #526176;
  --shadow-soft: 0 18px 54px rgba(35, 33, 28, 0.05);
  --shadow-panel: 0 24px 70px rgba(35, 33, 28, 0.06);
  --shadow-card: 0 12px 30px rgba(0, 0, 0, 0.04);
  --shadow-card-hover: 0 18px 40px rgba(0, 0, 0, 0.12);
  --font-heading: "Cormorant Garamond", serif;
  --font-body: "Mulish", sans-serif;
  --font-mono: ui-monospace, Menlo, Consolas, monospace;
  --type-hero: clamp(2.6rem, 8vw, 4.4rem);
  --type-section-title: clamp(2.6rem, 5vw, 4.4rem);
  --type-card-title: clamp(2rem, 3.6vw, 3.3rem);
  --type-small-title: clamp(1.4rem, 2.2vw, 1.8rem);
  --type-kicker: 12px;
  --type-label: 13px;
  --type-ui: 14px;
  --type-micro: 11px;
  --type-caption: 10px;
  --type-body: 16px;
  --type-body-large: clamp(16px, 1.6vw, 18.5px);
  --type-h1: clamp(2.4rem, 4.6vw, 4rem);
  --type-h2: clamp(2.2rem, 4vw, 3.6rem);
  --type-h3: var(--type-card-title);
  --type-h4: var(--type-small-title);
  --type-h5: var(--type-label);
  --type-h6: var(--type-micro);
  --tracking-label: 0.16em;
  --tracking-micro: 0.18em;
  --space-section: clamp(70px, 9vw, 120px);
  --space-card: clamp(24px, 3vw, 34px);
  --space-panel: clamp(30px, 5vw, 58px);
  --space-stack-lg: clamp(34px, 5vw, 58px);
}

@font-face {
  font-family: "Cormorant Garamond";
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url("fonts/43d2e636-a8db-4ff6-94a2-08166744e8dc.woff2") format("woff2");
}

@font-face {
  font-family: "Cormorant Garamond";
  font-style: italic;
  font-weight: 400 600;
  font-display: swap;
  src: url("fonts/051c974c-650b-4272-a4cd-8a7c16dbf554.woff2") format("woff2");
}

@font-face {
  font-family: "Mulish";
  font-style: normal;
  font-weight: 300 800;
  font-display: swap;
  src: url("fonts/6db2ca0b-29e8-451b-b505-9d8616aedae9.woff2") format("woff2");
}

:root {
  font-synthesis: none;
}

* {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
}

.anchor-target {
  position: relative;
  top: -78px;
  display: block;
  height: 0;
  visibility: hidden;
}

@keyframes heroZoom {
  from {
    transform: scale(1.12);
  }

  to {
    transform: scale(1);
  }
}

@keyframes fadeUp {
  from {
    opacity: 0;
    transform: translateY(22px);
  }

  to {
    opacity: 1;
    transform: none;
  }
}

@keyframes cueMove {

  0%,
  100% {
    transform: translateY(0);
    opacity: 0.4;
  }

  50% {
    transform: translateY(9px);
    opacity: 1;
  }
}

body {
  margin: 0;
  overflow-x: hidden;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--font-body);
}

body.menu-open,
body.modal-open {
  overflow: hidden;
}

a {
  color: inherit;
  text-decoration: none;
}

.site-nav {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 60;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  min-height: 78px;
  /* tight vertical padding so the lockup can fill the bar without the
     header growing */
  padding: 10px clamp(20px, 5vw, 64px);
  background: transparent;
  border-bottom: 1px solid rgba(255, 255, 255, 0.16);
  color: #fff;
  font-family: "Mulish", sans-serif;
  transition: background 0.45s ease, border-color 0.45s ease, box-shadow 0.45s ease, color 0.45s ease;
}

.site-nav.is-scrolled {
  background: rgba(246, 241, 231, 0.96);
  border-bottom-color: var(--line);
  box-shadow: 0 1px 30px rgba(0, 0, 0, 0.05);
  color: var(--ink);
}

.brand {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: 12px;
  line-height: 1;
}

/* The official lockup: emblem left, wordmark right. The white version
   shows while the nav sits over the hero; the dark one once it solidifies. */
.brand-logo {
  display: block;
  width: auto;
  height: 64px;
  object-fit: contain;
}

/* Dark is the default: every solid nav is cream. The white lockup appears
   only where the bar is genuinely transparent over the hero — which is
   desktop only, since the mobile nav is cream from the first pixel. */
.brand-logo-light {
  display: none;
}

@media (min-width: 981px) {
  .site-nav[data-header-variant="transparent"]:not(.is-scrolled) .brand-logo-light {
    display: block;
  }

  .site-nav[data-header-variant="transparent"]:not(.is-scrolled) .brand-logo-dark {
    display: none;
  }
}

/* Just above the mobile breakpoint the lockup, the six links and Book Now
   are within ~30px of colliding — the menu doesn't wrap, it overlaps its
   neighbours. Tighten the links' own spacing rather than shrink the mark. */
@media (min-width: 981px) and (max-width: 1099.98px) {
  /* .site-nav prefix so this outranks the base .desktop-nav rule below */
  .site-nav .desktop-nav {
    gap: 10px;
    letter-spacing: 0.1em;
  }
}

.brand-lockup {
  display: block;
}

.brand-title {
  display: block;
  font-family: "Cormorant Garamond", serif;
  font-size: 25px;
  font-weight: 600;
  letter-spacing: 0.10em;
}

.brand-subtitle {
  display: block;
  margin-top: 4px;
  font-size: 8.5px;
  font-weight: 600;
  letter-spacing: 0.36em;
  opacity: 0.82;
}

.desktop-nav {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: clamp(14px, 1.6vw, 28px);
  min-width: 0;
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  white-space: nowrap;
}

.desktop-nav a,
.nav-dropdown-toggle {
  opacity: 0.88;
  transition: color 0.2s ease, opacity 0.2s ease;
}

.nav-dropdown {
  position: relative;
}

.nav-dropdown::after {
  content: "";
  position: absolute;
  top: 100%;
  left: -18px;
  right: -18px;
  height: 22px;
}

.nav-dropdown-toggle {
  border: 0;
  background: transparent;
  color: inherit;
  cursor: default;
  font: inherit;
  letter-spacing: inherit;
  text-transform: inherit;
  white-space: nowrap;
}

.nav-dropdown-toggle::after {
  content: "";
  display: inline-block;
  width: 5px;
  height: 5px;
  margin-left: 8px;
  border-right: 1px solid currentColor;
  border-bottom: 1px solid currentColor;
  transform: translateY(-2px) rotate(45deg);
}

.nav-dropdown-menu {
  position: absolute;
  top: calc(100% + 14px);
  left: 50%;
  z-index: 35;
  min-width: 220px;
  padding: 10px 0;
  border: 1px solid rgba(35, 33, 28, 0.14);
  background: rgba(246, 241, 231, 0.98);
  box-shadow: 0 18px 45px rgba(35, 33, 28, 0.12);
  opacity: 0;
  pointer-events: none;
  transform: translate(-50%, -6px);
  transition: opacity 0.2s ease, transform 0.2s ease;
}

.nav-dropdown:hover .nav-dropdown-menu,
.nav-dropdown:focus-within .nav-dropdown-menu {
  opacity: 1;
  pointer-events: auto;
  transform: translate(-50%, 0);
}

.desktop-nav a:hover,
.desktop-nav a:focus-visible,
.nav-dropdown:hover .nav-dropdown-toggle,
.nav-dropdown:focus-within .nav-dropdown-toggle {
  color: var(--gold);
  opacity: 1;
}

.site-nav:not(.is-scrolled) .desktop-nav a:hover,
.site-nav:not(.is-scrolled) .desktop-nav a:focus-visible,
.site-nav:not(.is-scrolled) .nav-dropdown:hover .nav-dropdown-toggle,
.site-nav:not(.is-scrolled) .nav-dropdown:focus-within .nav-dropdown-toggle {
  color: var(--green);
}

.nav-dropdown-menu a {
  display: block;
  padding: 12px 18px;
  color: var(--ink);
  letter-spacing: 0.12em;
  text-align: left;
}

.nav-dropdown-menu a:hover,
.nav-dropdown-menu a:focus-visible {
  color: var(--gold);
  opacity: 1;
}

.site-nav .desktop-nav a.is-active,
.site-nav .nav-dropdown.is-active .nav-dropdown-toggle,
.nav-dropdown-menu a.is-active,
.mobile-menu-panel a.is-active,
.mobile-menu-parent.is-active {
  color: var(--gold);
  opacity: 1;
}

.site-nav:not(.is-scrolled) .desktop-nav a.is-active,
.site-nav:not(.is-scrolled) .nav-dropdown.is-active .nav-dropdown-toggle {
  color: var(--hero-gold);
}

.desktop-cta,
.mobile-menu-panel .menu-cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid currentColor;
  border-radius: 2px;
  padding: 11px 20px;
  background: transparent;
  color: inherit;
  cursor: pointer;
  font: inherit;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-decoration: none;
  text-transform: uppercase;
  white-space: nowrap;
  transition:
    background-color 180ms ease,
    border-color 180ms ease,
    color 180ms ease,
    transform 180ms ease;
}

.desktop-cta:hover,
.desktop-cta:focus-visible,
.mobile-menu-panel .menu-cta:hover,
.mobile-menu-panel .menu-cta:focus-visible {
  background: var(--gold);
  border-color: var(--gold);
  color: var(--paper);
  opacity: 1;
  transform: translateY(-1px);
}

/* Over the homepage hero the nav is transparent and the imagery is already
   gold — green reads with far more contrast there */
.site-nav:not(.is-scrolled) .desktop-cta:hover,
.site-nav:not(.is-scrolled) .desktop-cta:focus-visible {
  background: var(--green);
  border-color: var(--green);
  color: var(--paper);
}

.desktop-cta:active,
.desktop-cta.is-active,
.mobile-menu-panel .menu-cta:active,
.mobile-menu-panel .menu-cta.is-active {
  background: var(--green);
  border-color: var(--green);
  color: var(--paper);
  transform: translateY(0);
}

.mobile-menu-button {
  display: none;
  width: 44px;
  height: 44px;
  flex: 0 0 44px;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(35, 33, 28, 0.25);
  border-radius: 2px;
  background: transparent;
  color: currentColor;
  cursor: pointer;
}

.hamburger {
  display: grid;
  gap: 5px;
  width: 19px;
}

.hamburger span {
  display: block;
  height: 2px;
  background: currentColor;
  transition: transform 0.2s ease, opacity 0.2s ease;
}

body.menu-open .hamburger span:nth-child(1) {
  transform: translateY(7px) rotate(45deg);
}

body.menu-open .hamburger span:nth-child(2) {
  opacity: 0;
}

body.menu-open .hamburger span:nth-child(3) {
  transform: translateY(-7px) rotate(-45deg);
}

.mobile-menu-panel {
  position: fixed;
  top: 86px;
  left: 18px;
  right: 18px;
  z-index: 25;
  display: grid;
  gap: 0;
  padding: 8px 20px 20px;
  /* Short screens: the panel scrolls rather than clipping Contact and
     Book Now below the viewport */
  max-height: calc(100vh - 104px);
  max-height: calc(100dvh - 104px);
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
  background: rgba(246, 241, 231, 0.99);
  border: 1px solid var(--line);
  box-shadow: 0 18px 45px rgba(35, 33, 28, 0.15);
  opacity: 0;
  pointer-events: none;
  transform: translateY(-10px);
  transition: opacity 0.22s ease, transform 0.22s ease;
}

body.menu-open .mobile-menu-panel {
  opacity: 1;
  pointer-events: auto;
  transform: translateY(0);
}

.mobile-menu-panel a,
.mobile-menu-panel button,
.mobile-menu-parent {
  display: block;
  padding: 16px 0;
  border-bottom: 1px solid var(--line);
  background: transparent;
  color: inherit;
  cursor: pointer;
  font: inherit;
  font-size: 13px;
  font-weight: 850;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  transition: color 0.2s ease;
}

/* Book Now pins to the bottom edge of the (scrollable) panel, so the money
   button is visible the moment the menu opens — no scrolling required on
   short screens. Spans the panel's padding as a full-width green bar. */
.mobile-menu-panel .menu-cta {
  position: sticky;
  bottom: -20px;
  z-index: 1;
  margin: 14px -20px -20px;
  padding: 16px 20px;
  justify-content: center;
  border: 0;
  border-top: 1px solid var(--line);
  border-radius: 0;
  background: var(--green);
  color: #fff;
}

.mobile-menu-panel .menu-cta:hover,
.mobile-menu-panel .menu-cta:focus-visible {
  background: var(--green-dark);
  color: #fff;
}

.mobile-menu-group {
  border-bottom: 1px solid var(--line);
}

.mobile-menu-group .mobile-menu-parent {
  padding-bottom: 10px;
  border-bottom: 0;
}

.mobile-menu-parent::after {
  content: "";
  display: inline-block;
  width: 6px;
  height: 6px;
  margin-left: 9px;
  border-right: 1px solid currentColor;
  border-bottom: 1px solid currentColor;
  transform: translateY(-3px) rotate(45deg);
}

.mobile-menu-sub {
  display: grid;
  gap: 0;
  padding: 0 0 8px 18px;
}

.mobile-menu-sub a {
  padding: 8px 0;
  border-bottom: 0;
  color: var(--muted);
  font-size: 12px;
  letter-spacing: 0.14em;
}

.mobile-menu-sub a:hover,
.mobile-menu-sub a:focus-visible {
  color: var(--gold);
}

.mobile-menu-panel a:hover,
.mobile-menu-panel a:focus-visible,
.mobile-menu-panel button:hover,
.mobile-menu-panel button:focus-visible,
.mobile-menu-parent:hover,
.mobile-menu-parent:focus-visible {
  color: var(--gold);
}

.hero {
  position: relative;
  min-height: 100vh;
  display: grid;
  /* Text row takes the free space so it centers between nav and booking bar */
  grid-template-rows: 1fr auto;
  place-items: center;
  padding: 140px 24px 90px;
  overflow: hidden;
  text-align: center;
  color: #f8f4ea;
  background: linear-gradient(135deg, #d9b676 0%, #bb914f 42%, #7a5a32 78%, #4a3720 100%);
}

.hero-video-bg {
  position: absolute;
  inset: 0;
  z-index: 0;
  overflow: hidden;
  background: linear-gradient(135deg, #d9b676 0%, #bb914f 42%, #7a5a32 78%, #4a3720 100%);
}

.hero-video-bg::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 130px;
  z-index: 1;
  background: linear-gradient(180deg, rgba(20, 14, 8, 0.38) 0%, rgba(20, 14, 8, 0.22) 45%, rgba(20, 14, 8, 0) 100%);
  pointer-events: none;
}

.hero-video-bg video {
  position: absolute;
  top: 50%;
  left: 50%;
  width: max(100vw, 177.78vh);
  height: max(56.25vw, 100vh);
  border: 0;
  transform: translate(-50%, -50%);
  pointer-events: none;
  object-fit: cover;
}

.film-modal {
  position: fixed;
  inset: 0;
  z-index: 100;
  display: grid;
  place-items: center;
  padding: clamp(18px, 4vw, 56px);
  background: rgba(20, 14, 8, 0.82);
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.24s ease;
}

.film-modal.is-open {
  opacity: 1;
  pointer-events: auto;
}

.film-modal-frame {
  width: min(100%, 1080px);
  aspect-ratio: 16 / 9;
  background: #16110c;
  box-shadow: 0 24px 80px rgba(0, 0, 0, 0.45);
}

.film-modal-frame iframe {
  display: block;
  width: 100%;
  height: 100%;
  border: 0;
  background: #16110c;
}

.film-modal-close {
  position: absolute;
  top: clamp(14px, 3vw, 32px);
  right: clamp(14px, 3vw, 32px);
  width: 44px;
  height: 44px;
  border: 1px solid rgba(248, 244, 234, 0.55);
  border-radius: 50%;
  background: transparent;
  color: #f8f4ea;
  cursor: pointer;
  font: 300 30px/1 "Mulish", sans-serif;
}

.hero-inner {
  position: relative;
  z-index: 2;
  isolation: isolate;
  width: min(100%, 1000px);
}

.hero-inner::before {
  content: "";
  position: absolute;
  inset: -70px -120px -56px;
  z-index: -1;
  border-radius: 50%;
  background: radial-gradient(ellipse at center, rgba(20, 14, 8, 0.42) 0%, rgba(20, 14, 8, 0.28) 38%, rgba(20, 14, 8, 0) 72%);
  filter: blur(18px);
  pointer-events: none;
}

.hero-note {
  position: absolute;
  left: clamp(16px, 5vw, 40px);
  bottom: 18px;
  z-index: 2;
  color: rgba(255, 255, 255, 0.5);
  font-family: ui-monospace, Menlo, monospace;
  font-size: 10px;
  letter-spacing: 0.08em;
}

.eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 16px;
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: 0.34em;
  text-transform: uppercase;
}

.eyebrow::before,
.eyebrow::after {
  content: "";
  width: 34px;
  height: 1px;
  background: currentColor;
  opacity: 0.55;
}

h1,
h2,
h3 {
  font-family: var(--font-heading);
  font-weight: 500;
  letter-spacing: 0.005em;
}

h1 {
  font-size: var(--type-h1);
}

h2 {
  font-size: var(--type-h2);
}

h3 {
  font-size: var(--type-h3);
}

h4,
h5 {
  font-family: var(--font-heading);
  font-weight: 600;
  letter-spacing: 0.005em;
  line-height: 1.08;
}

h4 {
  font-size: var(--type-h4);
}

h5 {
  font-size: var(--type-h5);
}

h6 {
  font-family: var(--font-body);
  font-size: var(--type-h6);
  font-weight: 800;
  letter-spacing: var(--tracking-label);
  line-height: 1.35;
  text-transform: uppercase;
}

.hero h1 {
  margin: 24px 0 0;
  font-size: var(--type-hero);
  font-weight: 700;
  line-height: 1;
  color: #fff;
}

.hero h1 span {
  color: var(--hero-gold);
  font-style: italic;
}

.hero p {
  max-width: 560px;
  margin: 26px auto 0;
  color: rgba(248, 244, 234, 0.9);
  font-size: clamp(15px, 1.5vw, 18px);
  line-height: 1.7;
  font-weight: 300;
}

.hero-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: 18px 34px;
  margin-top: 42px;
}

.film-button {
  display: inline-flex;
  align-items: center;
  gap: 13px;
  padding: 0;
  border: 0;
  background: transparent;
  color: #f8f4ea;
  cursor: pointer;
  font: inherit;
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: 0.2em;
  text-transform: uppercase;
}

.play-icon {
  display: block;
  flex: 0 0 46px;
}

.primary-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 16px 32px;
  border: 0;
  border-radius: 2px;
  background: var(--green);
  color: #f8f4ea;
  cursor: pointer;
  font: inherit;
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-decoration: none;
  text-transform: uppercase;
}

.scroll-cue {
  position: absolute;
  left: 50%;
  bottom: 10px;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  transform: translateX(-50%);
  font-size: 9.5px;
  font-weight: 600;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: #fff;
}

.scroll-cue::after {
  content: "";
  width: 1px;
  height: 42px;
  background: linear-gradient(180deg, rgba(248, 244, 234, 0.8), transparent);
  animation: cueMove 2.2s ease-in-out infinite;
}

.intro {
  padding: clamp(90px, 13vw, 160px) 24px;
  text-align: center;
  background: var(--paper);
}

.intro-inner {
  width: min(100%, 1000px);
  margin: 0 auto;
}

.kicker {
  display: block;
  color: var(--gold);
  font-family: var(--font-body);
  font-size: var(--type-kicker);
  font-weight: 700;
  letter-spacing: 0.32em;
  text-transform: uppercase;
}

.intro h2 {
  margin: 18px 0 0;
  font-size: var(--type-h2);
  line-height: 0.9;
  letter-spacing: 0.01em;
}

.intro-title {
  max-width: 980px;
  margin-inline: auto;
  line-height: 1.08;
  font-weight: 600;
}

.intro-title span {
  color: var(--gold);
}

.intro-line {
  display: block;
  width: 54px;
  height: 2px;
  margin: 40px auto 34px;
  background: var(--gold);
}

.intro p {
  max-width: 920px;
  margin: 0 auto;
  color: var(--muted);
  font-size: var(--type-body-large);
  line-height: 1.9;
  font-weight: 300;
}

.intro p+p {
  margin-top: 18px;
}

.intro em {
  color: var(--green);
  font-style: italic;
}

.intro-camp-link {
  color: var(--gold);
  font-weight: 500;
  text-decoration: none;
  transition: color 180ms ease;
}

.intro-camp-link:hover,
.intro-camp-link:focus-visible {
  color: var(--green);
}

.journey {
  margin-top: 34px;
  color: #9a9078;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.26em;
  text-transform: uppercase;
}

.camps {
  padding: clamp(90px, 12vw, 150px) clamp(20px, 6vw, 90px);
  background: var(--paper-light);
  border-top: 1px solid rgba(35, 33, 28, 0.06);
}

.camps-inner {
  width: min(100%, 1320px);
  margin: 0 auto;
}

.section-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 40px;
}

.section-head h2 {
  margin: 14px 0 0;
  font-size: var(--type-h2);
  line-height: 1.02;
}

.section-head p {
  max-width: 460px;
  margin: 0;
  color: #6c6657;
  font-size: 15px;
  line-height: 1.7;
  font-weight: 300;
}

.camps-layout {
  display: grid;
  grid-template-columns: minmax(0, 1.22fr) minmax(300px, 0.9fr);
  gap: clamp(30px, 5vw, 70px);
  align-items: center;
  margin-top: clamp(42px, 5vw, 64px);
}

/* Both camps read in one continuous scroll; Spirit mirrors Bush with the
   photo on the right and the copy on the left. */
.camps-layout--flip {
  grid-template-columns: minmax(300px, 0.9fr) minmax(0, 1.22fr);
}

.camps-layout + .camps-layout {
  margin-top: clamp(64px, 8vw, 110px);
}

.camp-media {
  position: relative;
  min-height: 380px;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  border-radius: 2px;
  background: linear-gradient(135deg, #84a06f 0%, #5f7e52 46%, #374f33 100%);
}

.camp-media.has-photo::before { display: none; }

.camp-media::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: repeating-linear-gradient(118deg, rgba(255, 255, 255, 0.05) 0 2px, transparent 2px 11px);
}

.camp-media::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, transparent 55%, rgba(20, 14, 8, 0.35));
}

.camp-label {
  position: absolute;
  left: 16px;
  right: 16px;
  bottom: 16px;
  z-index: 1;
  display: inline-block;
  max-width: max-content;
  padding: 6px 11px;
  border-radius: 2px;
  background: rgba(0, 0, 0, 0.32);
  color: rgba(255, 255, 255, 0.92);
  font-family: ui-monospace, Menlo, Consolas, monospace;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.06em;
}

.camp-copy .kicker {
  font-size: 12px;
  letter-spacing: 0.24em;
}

.camp-copy h3 {
  margin: 14px 0 0;
  font-size: var(--type-h3);
  line-height: 1.06;
}

.camp-copy p {
  margin: 22px 0 0;
  color: var(--muted);
  font-size: 16.5px;
  line-height: 1.85;
  font-weight: 300;
}

.learn-more {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  margin-top: 30px;
  padding-bottom: 7px;
  border: 0;
  border-bottom: 1px solid rgba(46, 94, 69, 0.3);
  background: transparent;
  color: var(--green);
  cursor: pointer;
  font: inherit;
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
}

.section-pad {
  padding: clamp(90px, 12vw, 150px) clamp(20px, 6vw, 90px);
}

.wide-inner {
  width: min(100%, 1320px);
  margin: 0 auto;
}

.center-head {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
}

.center-head h2 {
  margin: 14px 0 0;
  font-size: var(--type-h2);
  line-height: 1.02;
}

.center-head p {
  max-width: 620px;
  margin: 18px 0 0;
  color: #6c6657;
  font-size: 16px;
  line-height: 1.8;
  font-weight: 300;
}

.experiences {
  background: var(--paper);
}

.experiences-grid,
.conservation-grid,
.plan-grid {
  display: grid;
  gap: clamp(34px, 5vw, 76px);
  align-items: center;
}

.experiences-grid {
  grid-template-columns: minmax(0, 1.08fr) minmax(300px, 0.92fr);
}

.experience-media,
.lightbox-image,
.gallery-tile,
.map-card {
  position: relative;
  overflow: hidden;
  border-radius: 2px;
  background: linear-gradient(135deg, #dcb877 0%, #b98f4f 46%, #6b4d2b 100%);
}

.experience-media.has-photo::before,
.exp-moment-media.has-photo::before {
  display: none;
}

.experience-media {
  min-height: 440px;
  aspect-ratio: 5 / 6;
  transition: background 0.45s ease;
}

.experience-media::before,
.gallery-tile::before,
.lightbox-image::before,
.map-card::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: repeating-linear-gradient(118deg, rgba(255, 255, 255, 0.05) 0 2px, transparent 2px 11px);
}

.experience-media::after,
.gallery-tile::after,
.lightbox-image::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, transparent 45%, rgba(20, 14, 8, 0.58));
}

.lightbox-image .image-tag {
  left: 50%;
  transform: translateX(-50%);
  text-align: center;
}

.image-tag {
  position: absolute;
  z-index: 2;
  left: 16px;
  top: 16px;
  padding: 6px 11px;
  border-radius: 2px;
  background: rgba(0, 0, 0, 0.32);
  color: rgba(255, 255, 255, 0.92);
  font-family: ui-monospace, Menlo, Consolas, monospace;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.06em;
}

.experience-media-copy {
  position: absolute;
  z-index: 2;
  left: 28px;
  right: 28px;
  bottom: 28px;
  color: #f8f4ea;
}

.experience-media-copy .kicker,
.conservation .kicker {
  color: var(--hero-gold);
}

.experience-media-copy h3,
.experience-copy h2,
.conservation h2,
.plan-copy h4 {
  margin: 10px 0 0;
  line-height: 1.05;
}

.experience-media-copy h3 {
  font-size: var(--type-h3);
}

.experience-media-copy p {
  max-width: 440px;
  margin: 12px 0 0;
  color: rgba(248, 244, 234, 0.9);
  font-size: 15px;
  line-height: 1.7;
  font-weight: 300;
}

.experience-copy h2,
.conservation h2,
.plan .center-head h2 {
  font-size: var(--type-h2);
}

.experience-copy p {
  max-width: 420px;
  margin: 12px 0 22px;
  color: #6c6657;
  font-size: 15px;
  line-height: 1.7;
  font-weight: 300;
}

.experience-list {
  display: grid;
}

.experience-tab {
  display: flex;
  align-items: center;
  gap: 16px;
  width: 100%;
  padding: 18px 4px;
  border: 0;
  border-bottom: 1px solid rgba(35, 33, 28, 0.1);
  background: transparent;
  color: #8d8676;
  cursor: pointer;
  font-family: "Cormorant Garamond", serif;
  font-size: clamp(1.3rem, 2.2vw, 1.7rem);
  font-weight: 500;
  text-align: center;
  transition: color 0.25s ease;
}

.experience-tab span {
  width: 26px;
  color: #bdb6a4;
  font-family: "Mulish", sans-serif;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.1em;
  transition: color 0.25s ease;
}

.experience-tab i {
  margin-left: auto;
  color: var(--gold);
  font-style: normal;
  opacity: 0;
  transform: translateX(-8px);
  transition: opacity 0.25s ease, transform 0.25s ease;
}

.experience-tab[aria-selected="true"] {
  color: var(--ink);
}

.experience-tab[aria-selected="true"] span {
  color: var(--gold);
}

.experience-tab[aria-selected="true"] i {
  opacity: 1;
  transform: translateX(0);
}

/* Cookie notice ------------------------------------------------------ */

.cookie-notice {
  position: fixed;
  z-index: 60;
  right: 0;
  bottom: 0;
  left: 0;
  background: var(--paper-light);
  border-top: 1px solid rgba(35, 33, 28, 0.1);
  box-shadow: 0 -14px 40px rgba(35, 33, 28, 0.12);
  animation: cookie-rise 0.4s ease both;
}

.cookie-notice[hidden] {
  display: none;
}

@keyframes cookie-rise {
  from {
    opacity: 0;
    transform: translateY(12px);
  }
}

@media (prefers-reduced-motion: reduce) {
  .cookie-notice {
    animation: none;
  }
}

.cookie-notice-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: clamp(18px, 3vw, 40px);
  width: min(100%, 1320px);
  margin: 0 auto;
  padding: 20px clamp(20px, 6vw, 90px);
}

.cookie-notice-kicker {
  display: block;
  margin-bottom: 6px;
  color: var(--gold);
  font-size: var(--type-kicker);
  font-weight: 700;
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
}

.cookie-notice-copy p {
  max-width: 68ch;
  margin: 0;
  color: var(--muted-soft);
  font-size: 13.5px;
  font-weight: 300;
  line-height: 1.7;
}

.cookie-notice-copy a {
  color: var(--gold);
  border-bottom: 1px solid rgba(176, 134, 58, 0.4);
  text-decoration: none;
}

.cookie-notice-copy a:hover {
  color: var(--green);
}

.cookie-notice-actions {
  display: flex;
  flex: none;
  gap: 12px;
}

.cookie-btn {
  border-radius: 2px;
  cursor: pointer;
  font-family: var(--font-body);
  font-size: 10.5px;
  font-weight: 800;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  padding: 13px 24px;
  transition: background-color 0.25s ease, color 0.25s ease, border-color 0.25s ease;
  white-space: nowrap;
}

.cookie-btn-solid {
  background: var(--green);
  border: 2px solid var(--green);
  color: #f8f4ea;
}

.cookie-btn-solid:hover {
  background: #234a36;
  border-color: #234a36;
}

.cookie-btn-ghost {
  background: transparent;
  border: 2px solid rgba(35, 33, 28, 0.2);
  color: var(--ink);
}

.cookie-btn-ghost:hover {
  border-color: var(--green);
  color: var(--green);
}

@media (max-width: 767.98px) {
  .cookie-notice-inner {
    flex-direction: column;
    align-items: stretch;
    gap: 16px;
    padding: 18px 16px;
  }

  .cookie-notice-actions .cookie-btn {
    flex: 1 1 0;
    padding: 13px 10px;
  }
}

.experience-viewall {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  margin-top: 22px;
  color: var(--gold);
  font-size: var(--type-label);
  font-weight: 700;
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
  text-decoration: none;
}

.experience-viewall i {
  font-style: normal;
  transition: transform 0.25s ease;
}

.experience-viewall:hover {
  color: var(--green);
}

.experience-viewall:hover i {
  transform: translateX(4px);
}

.conservation {
  position: relative;
  overflow: hidden;
  background: #1c2e22;
  color: #f2eee2;
}

.conservation::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, #26412f 0%, #1c2e22 50%, #14241a 100%);
}

.conservation::after {
  content: "";
  position: absolute;
  inset: 0;
  background-image: repeating-linear-gradient(118deg, rgba(255, 255, 255, 0.03) 0 2px, transparent 2px 13px);
}

.conservation-grid {
  position: relative;
  z-index: 1;
  grid-template-columns: minmax(0, 1fr) minmax(300px, 1fr);
}

.conservation h2 {
  color: #f8f4ea;
}

.conservation h2 span {
  color: var(--hero-gold);
  font-style: italic;
}

.conservation p {
  max-width: 480px;
  margin: 24px 0 0;
  color: rgba(242, 238, 226, 0.82);
  font-size: 16.5px;
  line-height: 1.9;
  font-weight: 300;
}

.outline-gold {
  margin-top: 34px;
  padding: 15px 30px;
  border: 1px solid rgba(235, 203, 132, 0.5);
  border-radius: 2px;
  background: transparent;
  color: var(--hero-gold);
  cursor: pointer;
  font: inherit;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
}

.stats-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1px;
  background: rgba(255, 255, 255, 0.1);
}

.stats-grid div {
  padding: clamp(26px, 3vw, 40px) clamp(20px, 2.4vw, 32px);
  background: #1c2e22;
}

.stats-grid strong {
  display: block;
  color: var(--hero-gold);
  font-family: "Cormorant Garamond", serif;
  font-size: clamp(2.6rem, 4vw, 3.6rem);
  font-weight: 500;
  line-height: 1;
}

.stats-grid span {
  display: block;
  margin-top: 12px;
  color: rgba(242, 238, 226, 0.78);
  font-size: 13px;
  line-height: 1.6;
  font-weight: 300;
}

.gallery {
  background: var(--paper-light);
  border-top: 1px solid rgba(35, 33, 28, 0.06);
}

.gallery-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-auto-rows: 170px;
  gap: 14px;
  margin-top: clamp(40px, 5vw, 56px);
}

.gallery-tile.has-photo::before { display: none; }

.gallery-tile {
  min-height: 100%;
  padding: 0;
  border: 0;
  cursor: pointer;
  color: #f8f4ea;
  text-align: left;
}

.gallery-tile:nth-child(1) {
  background: linear-gradient(135deg, #dcb877, #b98f4f, #6b4d2b);
}

.gallery-tile:nth-child(2) {
  background: linear-gradient(135deg, #e6c98a, #cf9b62, #7a5a32);
}

.gallery-tile:nth-child(3) {
  background: linear-gradient(135deg, #c98a5a, #9a5f3a, #4a3720);
}

.gallery-tile:nth-child(4) {
  background: linear-gradient(135deg, #84a06f, #5f7e52, #374f33);
}

.gallery-tile:nth-child(5) {
  background: linear-gradient(135deg, #a98b5a, #7d6238, #3f3018);
}

.gallery-tile:nth-child(6) {
  background: linear-gradient(135deg, #a96a52, #7d4a38, #3f2418);
}

.gallery-tile:nth-child(7) {
  background: linear-gradient(135deg, #e6c98a, #cf9b62, #7a5a32);
}

.gallery-tile:nth-child(8) {
  background: linear-gradient(135deg, #c98a5a, #9a5f3a, #4a3720);
}

.tile-large {
  grid-column: span 2;
  grid-row: span 2;
}

.tile-wide {
  grid-column: span 2;
}

.gallery-tile span {
  position: absolute;
  z-index: 2;
  left: 14px;
  bottom: 12px;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.1em;
}

.gallery-tile i {
  position: absolute;
  z-index: 2;
  top: 12px;
  right: 12px;
  display: grid;
  place-items: center;
  width: 32px;
  height: 32px;
  border: 1px solid rgba(248, 244, 234, 0.6);
  border-radius: 50%;
  font-style: normal;
}

.stories {
  background: var(--paper);
  text-align: center;
}

.story-inner {
  width: min(100%, 920px);
  margin: 0 auto;
}

.quote-mark {
  height: 48px;
  margin-top: 26px;
  color: #d8c39a;
  font-family: "Cormorant Garamond", serif;
  font-size: 90px;
  line-height: 0.6;
}

.stories blockquote {
  min-height: 2.8em;
  margin: 0;
  color: var(--ink);
  font-family: "Cormorant Garamond", serif;
  font-size: clamp(1.7rem, 3.4vw, 2.9rem);
  font-style: italic;
  line-height: 1.4;
}

.story-name {
  margin-top: 30px;
  color: var(--green);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.22em;
  text-transform: uppercase;
}

.story-place {
  margin-top: 7px;
  color: #9a9078;
  font-size: 13px;
  font-weight: 300;
  letter-spacing: 0.04em;
}

.story-controls {
  display: inline-flex;
  align-items: center;
  gap: 22px;
  margin-top: 42px;
}

.story-controls>button,
.lightbox-nav,
.lightbox-close,
.enquiry-close {
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: transparent;
  cursor: pointer;
  font-family: "Mulish", sans-serif;
}

.story-controls>button {
  width: 46px;
  height: 46px;
  border: 1px solid rgba(35, 33, 28, 0.22);
  color: var(--ink);
  font-size: 17px;
}

.story-dots {
  display: flex;
  gap: 9px;
}

.story-dots button {
  width: 9px;
  height: 9px;
  padding: 0;
  border: 0;
  border-radius: 5px;
  background: rgba(35, 33, 28, 0.2);
  cursor: pointer;
  transition: width 0.25s ease, background 0.25s ease;
}

.story-dots button[aria-current="true"] {
  width: 26px;
  background: var(--green);
}

.postcard {
  position: relative;
  overflow: hidden;
  padding: clamp(56px, 7vw, 96px) clamp(20px, 5vw, 72px);
  background: #1c2e22;
}

.postcard::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: repeating-linear-gradient(118deg, rgba(255, 255, 255, 0.03) 0 2px, transparent 2px 13px);
}

.postcard-card {
  position: relative;
  display: grid;
  grid-template-columns: 1.25fr 1fr;
  width: min(100%, 1140px);
  margin: 0 auto;
  overflow: hidden;
  border-radius: 3px;
  background: #f4ecd8;
  box-shadow: 0 28px 64px rgba(0, 0, 0, 0.4);
}

.postcard-note {
  padding: clamp(30px, 3.6vw, 50px);
  border-right: 2px dashed rgba(35, 33, 28, 0.22);
}

.postcard-note p {
  margin: 0;
  color: #3a352a;
  font-family: "Cormorant Garamond", serif;
  font-size: clamp(1.45rem, 2.2vw, 1.9rem);
  font-style: italic;
  line-height: 1.4;
}

.postcard-note p:first-child {
  color: var(--green);
  font-size: clamp(2rem, 3vw, 2.7rem);
}

.postcard-note p+p {
  margin-top: 14px;
}

.postcard-form {
  display: flex;
  flex-direction: column;
  padding: clamp(26px, 3vw, 40px);
}

.stamp {
  align-self: flex-end;
  display: grid;
  place-items: end center;
  width: 74px;
  height: 88px;
  padding-bottom: 7px;
  border: 1px solid rgba(35, 33, 28, 0.25);
  border-radius: 2px;
  background: linear-gradient(150deg, #cf9b62, #7a5a32);
  color: #f4ecd8;
  font-family: "Cormorant Garamond", serif;
  font-size: 13px;
  letter-spacing: 0.1em;
}

.postcard-form form {
  margin-top: auto;
}

.postcard-form label {
  display: block;
  margin-bottom: 14px;
  color: #9a8a64;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
}

.postcard-form input {
  width: 100%;
  padding: 7px 0;
  border: 0;
  border-bottom: 1.5px solid rgba(35, 33, 28, 0.4);
  background: transparent;
  color: var(--ink);
  font: inherit;
  font-size: 15px;
  outline: none;
}

.postcard-form button,
.enquiry-dialog form button {
  width: 100%;
  margin-top: 20px;
  padding: 13px;
  border: 0;
  border-radius: 2px;
  background: var(--green);
  color: #f8f4ea;
  cursor: pointer;
  font: inherit;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
}

.plan {
  background: var(--paper);
}

.plan-grid {
  grid-template-columns: minmax(0, 1.1fr) minmax(300px, 0.9fr);
  align-items: stretch;
  margin-top: clamp(40px, 5vw, 60px);
}

.map-card {
  min-height: 380px;
  background: linear-gradient(150deg, #cdbf99 0%, #a9a06f 42%, #6f7a4c 100%);
}

/* ===== Map embeds =====
   Cards keep their stylised placeholder until the Google Maps iframe loads
   (on optional-cookie consent, or the card's own Load button). */
[data-map-embed] .map-frame {
  position: absolute;
  inset: 0;
  z-index: 3;
  width: 100%;
  height: 100%;
  border: 0;
}

[data-map-embed].is-loaded::before,
[data-map-embed].is-loaded .map-pin,
[data-map-embed].is-loaded .map-note,
[data-map-embed].is-loaded .contact-map-pin,
[data-map-embed].is-loaded .contact-map-note {
  display: none;
}

/* Camp switcher on the homepage map, shown once the map is live */
.map-switch {
  position: absolute;
  bottom: 26px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 5;
  justify-content: center;
  width: max-content;
  display: flex;
  flex-wrap: wrap;
  max-width: calc(100% - 24px);
  border: 1px solid rgba(35, 33, 28, 0.25);
  border-radius: 2px;
  overflow: hidden;
  box-shadow: 0 6px 18px rgba(35, 33, 28, 0.18);
}

.map-switch-btn {
  border: 0;
  white-space: nowrap;
  background: rgba(246, 241, 231, 0.95);
  padding: 9px 14px;
  color: var(--ink);
  cursor: pointer;
  font-family: "Mulish", sans-serif;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.map-switch-btn + .map-switch-btn {
  border-left: 1px solid rgba(35, 33, 28, 0.18);
}

.map-switch-btn.is-active {
  background: var(--green);
  color: #f8f4ea;
}

/* three chips must share one row on phones */
@media (max-width: 560px) {
  .map-switch-btn {
    padding: 8px 9px;
    font-size: 9px;
    letter-spacing: 0.08em;
  }
}

.map-pin {
  position: absolute;
  z-index: 2;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 3px 7px;
  border-radius: 2px;
  background: rgba(246, 241, 231, 0.85);
  color: var(--ink);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.08em;
}

.map-pin::before {
  content: "";
  width: 13px;
  height: 13px;
  border: 2px solid var(--paper);
  border-radius: 50%;
  background: var(--green);
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
}

.map-pin.bush {
  left: 32%;
  top: 40%;
}

.map-pin.spirit {
  left: 58%;
  top: 62%;
}

.map-pin.spirit::before {
  background: #b0863a;
}

.map-note {
  position: absolute;
  left: 16px;
  bottom: 14px;
  z-index: 2;
  color: rgba(255, 255, 255, 0.65);
  font-family: ui-monospace, Menlo, Consolas, monospace;
  font-size: 10px;
  letter-spacing: 0.06em;
}

.plan-copy article {
  padding: 22px 0;
  border-top: 1px solid rgba(35, 33, 28, 0.12);
}

.plan-copy article:last-of-type {
  border-bottom: 1px solid rgba(35, 33, 28, 0.12);
}

.plan-copy article span {
  color: var(--gold);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.24em;
  text-transform: uppercase;
}

.plan-copy h4 {
  color: var(--ink);
  font-size: var(--type-h4);
}

.plan-copy p {
  margin: 8px 0 0;
  color: var(--muted);
  font-size: 15px;
  line-height: 1.7;
  font-weight: 300;
}

.primary-link.compact {
  margin-top: 28px;
}

.site-footer {
  padding: clamp(54px, 6vw, 76px) clamp(28px, 5vw, 72px) 34px;
  background: #14241a;
  color: rgba(242, 238, 226, 0.82);
}

.legal-nav {
  position: sticky;
}

.legal-cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  text-decoration: none;
}

/* Focus indicators in the brand palette instead of the browser's blue.
   Kept visible for keyboard users; a mouse click no longer leaves a ring. */
:focus-visible {
  outline: 2px solid var(--gold);
  outline-offset: 3px;
}

:focus:not(:focus-visible) {
  outline: none;
}

/* The booking widget ships with Bootstrap, whose buttons and fields glow
   blue on focus — replace that with the same brand ring */
#booking-widget .btn:focus,
#booking-widget .btn.focus,
#booking-widget .form-control:focus,
#booking-widget .btn:active:focus,
#booking-widget button:focus {
  box-shadow: none !important;
  outline: none;
}

#booking-widget .btn:focus-visible,
#booking-widget .form-control:focus-visible,
#booking-widget button:focus-visible {
  outline: 2px solid var(--gold) !important;
  outline-offset: 2px;
}

.legal-page {
  min-height: 100vh;
  background: var(--paper);
}

.legal-shell {
  display: grid;
  grid-template-columns: 240px minmax(0, 1fr);
  gap: clamp(42px, 6vw, 84px);
  max-width: 1180px;
  margin: 0 auto;
  padding: clamp(44px, 6vw, 76px) 24px var(--space-section);
}

.legal-toc {
  position: sticky;
  top: 124px;
  align-self: start;
  padding: 4px 0 0;
}

.legal-toc span {
  display: block;
  margin-bottom: 18px;
  color: var(--gold);
  font-size: var(--type-micro);
  font-weight: 800;
  letter-spacing: 0.22em;
  text-transform: uppercase;
}

.legal-toc a {
  display: block;
  margin-top: 12px;
  padding-left: 16px;
  border-left: 2px solid transparent;
  color: var(--muted);
  font-size: var(--type-ui);
  font-weight: 400;
  line-height: 1.35;
  text-decoration: none;
  transition: border-color 180ms ease, color 180ms ease;
}

.legal-toc a:hover,
.legal-toc a:focus-visible {
  border-left-color: var(--gold);
  color: var(--gold);
}

.legal-content {
  min-width: 0;
}

.legal-content pre {
  margin: 0;
  padding: var(--space-panel) clamp(26px, 5vw, 64px);
  border-top: 2px solid var(--gold);
  background: var(--surface-panel);
  box-shadow: var(--shadow-panel);
  color: var(--muted);
  font-family: var(--font-body);
  font-size: var(--type-body);
  font-weight: 300;
  line-height: 1.82;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}

.policy-document {
  padding: var(--space-panel) clamp(26px, 5vw, 64px);
  border-top: 2px solid var(--gold);
  background: var(--surface-panel);
  box-shadow: var(--shadow-panel);
  color: var(--muted);
  font-size: var(--type-body);
  font-weight: 300;
  line-height: 1.82;
}

.policy-document section+section {
  margin-top: clamp(34px, 5vw, 52px);
  padding-top: clamp(28px, 4vw, 40px);
  border-top: 1px solid rgba(35, 33, 28, 0.12);
}

.policy-document h2 {
  margin: 0 0 16px;
  color: var(--ink);
  font-family: var(--font-heading);
  font-size: var(--type-h2);
  font-weight: 600;
  line-height: 1.08;
}

.policy-document h3 {
  margin: 0 0 16px;
  color: var(--ink);
  font-family: var(--font-heading);
  font-size: var(--type-h3);
  font-weight: 600;
  line-height: 1.08;
}

.policy-document h4 {
  margin: 0 0 16px;
  color: var(--ink);
  font-family: var(--font-heading);
  font-size: var(--type-h4);
  font-weight: 600;
  line-height: 1.08;
}

.policy-document p {
  margin: 0;
}

.policy-document p+p,
.policy-document ul+p {
  margin-top: 16px;
}

.policy-document ul {
  display: grid;
  gap: 12px;
  margin: 16px 0 0;
  padding-left: 22px;
}

.policy-document li::marker {
  color: var(--gold);
}

.policy-document strong {
  color: var(--ink);
  font-weight: 700;
}

.about-page {
  padding-top: 0;
  background: var(--surface-white);
}

.about-hero {
  padding: clamp(86px, 10vw, 132px) clamp(20px, 6vw, 90px) clamp(72px, 8vw, 108px);
  background: var(--paper);
  text-align: center;
}

.about-story-grid,
.about-solidarity-grid {
  display: grid;
  grid-template-columns: minmax(300px, 0.9fr) minmax(0, 1.1fr);
  gap: clamp(38px, 6vw, 86px);
  align-items: start;
}

.about-hero-grid {
  max-width: 920px;
  margin: 0 auto;
}

.about-hero h1 {
  max-width: 880px;
  margin: 14px auto 0;
  color: var(--ink);
  font-size: var(--type-h1);
  line-height: 0.98;
}

.about-section-heading h2 {
  margin: 12px 0 0;
  color: var(--ink);
  font-size: var(--type-h2);
  line-height: 1.02;
}

.about-section-heading h2 span {
  color: var(--gold);
}

.about-hero p {
  max-width: 660px;
  margin: 28px auto 0;
  color: var(--muted);
  font-size: var(--type-body-large);
  font-weight: 300;
  line-height: 1.7;
}

.about-story {
  background: var(--surface-white);
}

.about-story-simple h2 {
  margin: 12px 0 0;
  color: var(--ink);
  font-family: var(--font-heading);
  font-size: var(--type-h2);
  font-weight: 500;
  line-height: 1.06;
}

.about-story-simple h2 span {
  color: var(--gold-soft);
}

.about-story-simple p {
  max-width: none;
  margin: 28px 0 0;
  color: var(--muted);
  font-size: var(--type-body);
  font-weight: 300;
  line-height: 1.85;
}

.about-section-heading {
  max-width: 520px;
}

.about-copy p {
  max-width: none;
  color: var(--muted-soft);
  font-size: var(--type-body);
  font-weight: 300;
  line-height: 1.85;
}

.about-copy h3 {
  margin: 38px 0 16px;
  color: var(--ink);
  font-family: var(--font-heading);
  font-size: var(--type-h3);
  font-weight: 500;
  line-height: 1.06;
}

.about-copy p+p {
  margin-top: 18px;
}

.about-faq {
  background: var(--paper-light);
}

.about-faq-head {
  align-items: end;
}

.about-faq-head h2 {
  max-width: 1120px;
  font-size: var(--type-h2);
  line-height: 1.06;
}

.about-faq-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1px;
  margin-top: clamp(36px, 5vw, 58px);
  border: 1px solid rgba(35, 33, 28, 0.1);
  background: rgba(35, 33, 28, 0.1);
}

.about-faq-grid article {
  padding: clamp(28px, 4vw, 46px);
  background: var(--surface-white);
}

.about-faq-grid article:last-child {
  grid-column: 1 / -1;
}

.about-faq-title {
  display: grid;
  grid-template-columns: 42px minmax(0, 1fr);
  gap: 18px;
  align-items: baseline;
  margin-bottom: 20px;
}

.about-faq-title span {
  display: block;
  color: var(--gold);
  font-family: var(--font-body);
  font-size: var(--type-micro);
  font-weight: 800;
  letter-spacing: var(--tracking-micro);
  line-height: 1.2;
  text-transform: uppercase;
}

.about-faq-item {
  display: grid;
  grid-template-columns: 42px minmax(0, 1fr);
  gap: 18px;
  align-items: start;
}

.about-faq-icon {
  display: block;
  width: 34px;
  height: 34px;
  margin-top: 5px;
  background: var(--green);
  mask: var(--icon) center / contain no-repeat;
  -webkit-mask: var(--icon) center / contain no-repeat;
}

.about-faq-grid h3 {
  margin: 0;
  color: var(--ink);
  font-family: var(--font-body);
  font-size: var(--type-label);
  font-weight: 800;
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
}

.about-faq-grid p {
  max-width: none;
  margin: 0;
  color: var(--muted-soft);
  font-size: var(--type-body);
  font-weight: 300;
  line-height: 1.85;
}

.about-solidarity {
  background: var(--green-deep);
  color: rgba(242, 238, 226, 0.82);
}

.about-solidarity-grid {
  grid-template-columns: minmax(320px, 0.9fr) minmax(0, 1.1fr);
  align-items: center;
}

.about-solidarity-card {
  aspect-ratio: 1 / 1;
  min-height: 0;
  padding: clamp(42px, 5vw, 70px);
  border: 1px solid rgba(220, 184, 119, 0.28);
  background:
    linear-gradient(135deg, rgba(94, 74, 40, 0.55) 0%, rgba(16, 30, 22, 0.82) 100%),
    url("/assets/images/solidarity-card.jpg") center / cover no-repeat;
  display: flex;
  flex-direction: column;
  justify-content: center;
  position: relative;
  overflow: hidden;
}

.about-solidarity-card::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: repeating-linear-gradient(118deg, rgba(255, 255, 255, 0.08) 0 2px, transparent 2px 11px);
}

.about-solidarity-card .kicker,
.about-solidarity-card h2 {
  position: relative;
  z-index: 1;
}

.about-solidarity-card h2 {
  max-width: 360px;
  color: var(--surface-white);
  font-size: var(--type-h2);
  font-weight: 500;
  line-height: 1.06;
}

.about-solidarity-card p {
  position: relative;
  z-index: 1;
  max-width: none;
  margin: 16px 0 0;
  color: rgba(242, 238, 226, 0.78);
  font-size: 12.5px;
  font-weight: 300;
  line-height: 1.7;
}

.about-solidarity-copy h3 {
  max-width: 760px;
  margin: 0;
  color: var(--hero-gold);
  font-family: var(--font-heading);
  font-size: var(--type-h3);
  font-weight: 500;
  line-height: 1.05;
}

.about-solidarity-copy p {
  max-width: 790px;
  margin: 28px 0 0;
  color: rgba(242, 238, 226, 0.78);
  font-size: var(--type-body);
  font-weight: 300;
  line-height: 1.9;
}

.about-link {
  margin-top: 28px;
  color: var(--hero-gold);
}

.about-partners {
  background: var(--surface-white);
  text-align: center;
}

.about-partners .wide-inner {
  max-width: 1220px;
}

.about-partners .kicker {
  color: var(--muted-tab);
}

.about-partners-grid {
  display: grid;
  grid-template-columns: repeat(6, minmax(130px, 170px));
  gap: clamp(18px, 3vw, 42px);
  align-items: center;
  justify-content: center;
  margin-top: clamp(34px, 5vw, 62px);
}

.about-partner-logo {
  display: flex;
  min-height: 96px;
  align-items: center;
  justify-content: center;
}

.about-partner-logo img {
  display: block;
  max-width: min(170px, 100%);
  max-height: 78px;
  object-fit: contain;
  filter: saturate(0.92);
}

.air-heading {
  background: var(--paper);
  padding-bottom: clamp(44px, 6vw, 72px);
}

/* Air safari banner photographed rather than illustrated; the scrim keeps
   the cream page-head text legible over the sky */
.air-banner.air-banner-photo::before,
.air-banner.bush-banner-photo::before,
.air-banner.about-banner-photo::before,
.air-banner.spirit-banner-photo::before {
  display: none;
}

/* Spirit Camp banner: golden-light plains shot behind the page head */
.air-banner.spirit-banner-photo {
  background:
    linear-gradient(160deg, rgba(26, 38, 24, 0.7) 0%, rgba(26, 38, 24, 0.36) 55%, rgba(64, 50, 27, 0.5) 100%),
    url("/assets/images/page-headers/spirit-banner.jpg") center bottom / cover no-repeat;
}

/* About banner: the game-viewer at high tea; the sky carries the title */
.air-banner.about-banner-photo {
  background:
    linear-gradient(160deg, rgba(26, 38, 24, 0.66) 0%, rgba(26, 38, 24, 0.34) 55%, rgba(64, 50, 27, 0.46) 100%),
    url("/assets/images/page-headers/who-we-are-banner.jpg") center 86% / cover no-repeat;
}

/* Bush Camp banner: the lounge photograph, biased toward the seating
   rather than the canvas ceiling in the wide crop */
.air-banner.bush-banner-photo {
  background:
    linear-gradient(160deg, rgba(26, 38, 24, 0.72) 0%, rgba(26, 38, 24, 0.38) 55%, rgba(64, 50, 27, 0.5) 100%),
    url("/assets/images/tembo-bush-camp/bush-camp-lounge.jpg") center 82% / cover no-repeat;
}

.air-banner.air-banner-photo {
  background:
    linear-gradient(160deg, rgba(26, 38, 24, 0.72) 0%, rgba(26, 38, 24, 0.38) 55%, rgba(64, 50, 27, 0.5) 100%),
    url("/assets/images/page-headers/air-safari-banner.jpg") center 78% / cover no-repeat;
}

.air-banner {
  position: relative;
  min-height: clamp(220px, 28vw, 360px);
  width: 100%;
  margin: 0;
  overflow: hidden;
  background: linear-gradient(135deg, #33492e 0%, #46573a 42%, #9f7a43 72%, #d8bd78 100%);
}

.air-banner::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: repeating-linear-gradient(118deg, rgba(255, 255, 255, 0.05) 0 2px, transparent 2px 11px);
}

.air-banner::after {
  content: none;
}

.air-banner-tag {
  position: absolute;
  left: 18px;
  bottom: 18px;
  z-index: 1;
  display: inline-block;
  max-width: calc(100% - 36px);
  padding: 6px 11px;
  border-radius: 2px;
  background: rgba(0, 0, 0, 0.34);
  color: rgba(255, 255, 255, 0.92);
  font-family: var(--font-mono);
  font-size: var(--type-caption);
  font-weight: 700;
  letter-spacing: 0.06em;
  white-space: normal;
}

.air-center-head h1 {
  margin: 14px 0 0;
  font-family: var(--font-heading);
  font-size: var(--type-h1);
  font-weight: 500;
  line-height: 1.02;
}

.air-center-head p {
  max-width: 660px;
  margin: 18px 0 0;
  color: var(--muted);
  font-size: var(--type-body);
  font-weight: 300;
  line-height: 1.8;
}

.air-shell {
  max-width: 1180px;
  margin: 0 auto;
  padding: var(--space-section) 24px;
}

.air-rates-content {
  color: var(--muted);
  font-size: var(--type-body);
  font-weight: 300;
  line-height: 1.78;
}

.air-two-col {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 22px;
  margin: 0 0 22px;
}

.air-info-card {
  padding: var(--space-card);
  border-top: 2px solid var(--gold);
  background: var(--surface-panel);
  box-shadow: var(--shadow-soft);
}

/* Centred strapline under the banner */
.air-offer-note {
  margin-bottom: var(--space-stack-lg);
  text-align: center;
}

.air-offer-badge {
  display: inline-block;
  margin: 0 0 14px;
  padding: 7px 14px;
  border: 1px solid rgba(46, 94, 69, 0.45);
  border-radius: 2px;
  background: rgba(46, 94, 69, 0.08);
  color: var(--green);
  font-size: var(--type-micro);
  font-weight: 800;
  letter-spacing: var(--tracking-micro);
  text-transform: uppercase;
}

.air-offer-headline {
  margin: 0;
  color: var(--ink);
  font-family: var(--font-heading);
  font-size: clamp(1.5rem, 2.6vw, 2.1rem);
  font-weight: 500;
  line-height: 1.25;
}

.air-offer-sub {
  margin: 8px 0 0;
  color: var(--muted);
  font-size: var(--type-body);
  font-weight: 300;
}

.air-offer-agent {
  margin: 12px 0 0;
  color: var(--gold);
  font-size: var(--type-label);
  font-weight: 800;
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
}

/* The camp rate sections flow continuously; a hairline marks each break */
.air-camp-section + .air-camp-section {
  margin-top: var(--space-stack-lg);
  padding-top: 10px;
  border-top: 1px solid var(--line);
}

/* Camp switcher tabs (used on the camp-rates page) */
.air-camp-tabs {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(18px, 3vw, 34px);
  margin: var(--space-stack-lg) 0 0;
}

.air-camp-tab {
  width: 100%;
  padding: 18px 4px;
  border: 0;
  border-top: 3px solid rgba(35, 33, 28, 0.12);
  background: transparent;
  color: var(--muted-tab);
  cursor: pointer;
  font: inherit;
  font-size: var(--type-label);
  font-weight: 800;
  letter-spacing: var(--tracking-label);
  text-align: center;
  text-transform: uppercase;
}

.air-camp-tab[aria-selected="true"] {
  border-top-color: var(--gold);
  color: var(--ink);
}

.air-camp-panel[hidden] {
  display: none;
}

.air-rates-content h4 {
  margin: var(--space-stack-lg) 0 14px;
  color: var(--ink);
  font-family: var(--font-heading);
  font-size: var(--type-h4);
  font-weight: 600;
  line-height: 1.08;
}

.air-rates-content h5,
.air-info-card h3 {
  margin: 26px 0 10px;
  color: var(--green);
  font-family: var(--font-body);
  font-size: var(--type-label);
  font-weight: 800;
  letter-spacing: var(--tracking-label);
  line-height: 1.35;
  text-transform: uppercase;
}

.air-info-card h3 {
  margin-top: 0;
}

.air-accent {
  color: var(--gold);
}

.air-rates-content p {
  max-width: none;
  margin: 0 0 18px;
}

.air-rates-content ul {
  display: grid;
  gap: 9px;
  margin: 12px 0 0;
  padding-left: 20px;
}

.air-rates-content li::marker {
  color: var(--gold);
}

.air-rates-table-wrap {
  margin: 18px 0 36px;
  overflow-x: auto;
  border-top: 2px solid var(--gold);
  background: var(--surface-panel);
  box-shadow: var(--shadow-soft);
}

.air-rates-table {
  width: 100%;
  min-width: 760px;
  border-collapse: collapse;
}

.air-rates-table th,
.air-rates-table td {
  padding: 14px 16px;
  border-bottom: 1px solid rgba(35, 33, 28, 0.1);
  text-align: left;
  vertical-align: middle;
}

.air-rates-table th {
  color: var(--ink);
  font-size: var(--type-micro);
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.air-table-group {
  text-align: center;
}

.air-rates-table td {
  color: var(--muted);
  font-size: var(--type-ui);
}

.air-th-note {
  display: block;
  margin-top: 5px;
  color: rgba(35, 33, 28, 0.55);
  font-size: var(--type-caption);
  font-weight: 500;
  letter-spacing: 0.04em;
  text-transform: none;
}

.air-rates-validity {
  margin: 0 0 22px;
  color: var(--muted);
  font-size: var(--type-ui);
  font-weight: 300;
}

.air-rates-subhead {
  margin-top: clamp(34px, 4vw, 52px);
}

.air-rates-note {
  margin: 6px 0 0;
  color: var(--muted);
  font-size: var(--type-ui);
  font-weight: 300;
}

.air-rates-table td:not(:first-child) {
  color: var(--green);
  font-weight: 700;
  white-space: nowrap;
}

.camp-rates-banner {
  background: linear-gradient(135deg, #3a4f32 0%, #465538 44%, #9f7a43 74%, #d8bd78 100%);
}

.reservations-banner {
  background: linear-gradient(115deg, #14241a 0%, #2c4a37 42%, #7a5a32 82%, #d2a959 100%);
}

.camp-rates-notes {
  max-width: 980px;
  margin-top: var(--space-stack-lg);
  padding-top: clamp(28px, 4vw, 42px);
  border-top: 1px solid rgba(35, 33, 28, 0.12);
}

.camp-rates-notes>p,
.camp-rates-notes>ul,
.camp-rates-notes>ol {
  max-width: 920px;
}

.camp-rates-notes>p {
  margin: 0 0 12px;
}

.camp-rates-notes>ul,
.camp-rates-notes>ol {
  display: grid;
  gap: 9px;
  margin: 12px 0 clamp(28px, 4vw, 44px);
  padding-left: 22px;
}

.camp-rates-notes h4 {
  margin: clamp(28px, 4vw, 42px) 0 12px;
  color: var(--ink);
  text-transform: none;
}

.camp-rates-notes h4:first-child {
  margin-top: 0;
}

.camp-rates-notes li::marker {
  color: var(--gold);
  font-weight: 700;
}

.camp-rates-notes li p {
  margin: 6px 0 0;
  color: var(--muted-ui);
}

.park-fees-banner {
  background: linear-gradient(135deg, #2f5a43 0%, #3f5a3e 42%, #a77f43 74%, #d8bd78 100%);
}

.privacy-banner {
  background: linear-gradient(115deg, #1b2c20 0%, #2f4d38 44%, #7c5d34 80%, #c9a25c 100%);
}

.terms-banner {
  background: linear-gradient(115deg, #22321f 0%, #37503a 44%, #8a6838 80%, #cfa960 100%);
}

.park-fees-content h4 {
  max-width: 980px;
  margin: 0 0 18px;
  color: var(--ink);
  font-family: var(--font-heading);
  font-size: var(--type-h4);
  font-weight: 600;
  line-height: 1.08;
}

.park-fees-content>p {
  max-width: none;
  margin-bottom: clamp(32px, 4vw, 46px);
}

.park-fees-content h5 {
  margin: clamp(32px, 4vw, 48px) 0 18px;
  color: var(--ink);
  font-family: var(--font-heading);
  font-size: var(--type-h5);
  font-weight: 600;
  letter-spacing: 0;
  line-height: 1.1;
  text-transform: none;
}

.park-fees-content h5+p {
  margin-bottom: clamp(22px, 3vw, 34px);
}

.park-fee-grid {
  display: grid;
  gap: 22px;
}

.park-fee-grid-three {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.park-fee-grid-two {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.park-fee-card {
  padding: var(--space-card);
  border-top: 2px solid var(--gold);
  background: var(--surface-panel);
  box-shadow: var(--shadow-soft);
}

.park-fee-card h6 {
  margin: 0 0 22px;
  color: var(--ink);
  font-size: var(--type-h6);
}

.park-fee-card p {
  margin: 18px 0 6px;
}

.park-fee-card p:first-of-type {
  margin-top: 0;
}

.park-fee-card strong {
  color: var(--green);
  font-weight: 700;
}

.park-fee-card ul {
  margin-top: 8px;
}

.tembo-divider {
  width: 100%;
  height: 1px;
  margin: clamp(42px, 6vw, 70px) 0 0;
  border: 0;
  background: rgba(35, 33, 28, 0.12);
}

.camp-detail-page {
  background: var(--paper);
}

.camp-detail-hero {
  position: relative;
  display: grid;
  min-height: clamp(280px, 34vw, 430px);
  place-items: center;
  overflow: hidden;
  background:
    linear-gradient(180deg, rgba(10, 8, 5, 0.3), rgba(10, 8, 5, 0.58)),
    radial-gradient(circle at 50% 30%, rgba(186, 161, 130, 0.45), transparent 34%),
    linear-gradient(135deg, #17271c 0%, #394b2d 42%, #826a3b 100%);
  color: var(--surface-white);
  text-align: center;
}

.camp-detail-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image:
    repeating-linear-gradient(92deg, rgba(255, 255, 255, 0.05) 0 2px, transparent 2px 18px),
    linear-gradient(90deg, rgba(14, 25, 18, 0.48), transparent 26%, transparent 74%, rgba(14, 25, 18, 0.48));
}

.camp-detail-hero.spirit-hero {
  background:
    linear-gradient(180deg, rgba(10, 8, 5, 0.28), rgba(10, 8, 5, 0.6)),
    radial-gradient(circle at 48% 28%, rgba(220, 184, 119, 0.38), transparent 34%),
    linear-gradient(135deg, #1d2d22 0%, #52613a 42%, #b98f4f 100%);
}

.camp-detail-hero-inner {
  position: relative;
  z-index: 1;
  padding: 80px 24px;
}

.camp-breadcrumb {
  display: block;
  margin-bottom: 10px;
  color: rgba(255, 255, 255, 0.78);
  font-size: var(--type-kicker);
  font-weight: 500;
}

.camp-detail-hero h1 {
  margin: 0;
  color: var(--surface-white);
  font-family: var(--font-heading);
  font-size: var(--type-h1);
  font-weight: 600;
  letter-spacing: 0;
  line-height: 0.98;
}

.camp-life {
  padding-top: clamp(64px, 8vw, 105px);
  padding-bottom: clamp(48px, 6vw, 82px);
  background: var(--surface-white);
}

.camp-life-layout {
  display: grid;
  grid-template-columns: minmax(300px, 0.95fr) minmax(0, 1.25fr);
  gap: clamp(38px, 6vw, 86px);
  align-items: start;
}

.camp-life-heading {
  /* Pin the heading rail while the chapters scroll past */
  position: sticky;
  top: 120px;
}

.camp-life-heading h2 {
  margin: 10px 0 18px;
  color: var(--ink);
  font-size: var(--type-h2);
  line-height: 1.05;
}

.camp-life-heading h2 span {
  color: var(--gold);
}

.camp-location-copy h2 {
  margin: 10px 0 18px;
  color: var(--ink);
  font-size: var(--type-h2);
  line-height: 1.08;
}

.camp-lead {
  margin-top: 24px;
  color: var(--muted-soft);
  font-size: var(--type-body);
  font-weight: 300;
  line-height: 1.9;
}

.camp-life-copy p,
.camp-location-copy p {
  max-width: none;
  color: var(--muted-soft);
  font-size: var(--type-body);
  font-weight: 300;
  line-height: 1.9;
}

.camp-life-copy p+p {
  margin-top: 18px;
}

.camp-cta-row {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 30px;
}

.camp-rates-link,
.camp-book-link,
.camp-air-link {
  display: inline-block;
  padding: 13px 20px;
  border: 1px solid var(--green);
  border-radius: 2px;
  color: var(--green);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  transition: background-color 180ms ease, color 180ms ease;
}

.camp-rates-link:hover,
.camp-rates-link:focus-visible {
  background: var(--green);
  color: #f8f4ea;
}

.camp-book-link {
  border-color: var(--gold);
  color: var(--gold);
}

.camp-book-link:hover,
.camp-book-link:focus-visible {
  background: var(--gold);
  color: #f8f4ea;
}

.camp-air-link {
  border-color: rgba(35, 33, 28, 0.35);
  color: var(--ink);
}

.camp-air-link:hover,
.camp-air-link:focus-visible {
  background: var(--ink);
  border-color: var(--ink);
  color: #f8f4ea;
}

.camp-life-media {
  position: relative;
  margin-top: 36px;
  min-height: clamp(200px, 22vw, 300px);
  overflow: hidden;
  border-radius: 3px;
}

/* A real photograph fills the media card edge to edge */
.camp-life-media.has-photo::before {
  display: none;
}

.camp-life-media img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.camp-life-media::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: repeating-linear-gradient(118deg, rgba(255, 255, 255, 0.05) 0 2px, transparent 2px 11px);
}

.camp-life-media.bush {
  background: linear-gradient(135deg, #84a06f 0%, #5f7e52 46%, #374f33 100%);
}

.camp-life-media.spirit {
  background: linear-gradient(135deg, #dcb877 0%, #b98f4f 46%, #6b4d2b 100%);
}

.camp-life-media .image-tag {
  top: auto;
  bottom: 14px;
}

.camp-chapter+.camp-chapter {
  margin-top: 24px;
  padding-top: 22px;
  border-top: 1px solid rgba(35, 33, 28, 0.12);
}

.camp-chapter-label {
  display: flex;
  align-items: baseline;
  gap: 10px;
  margin-bottom: 6px;
}

.camp-chapter-label i {
  color: var(--gold);
  font-family: "Cormorant Garamond", serif;
  font-size: 21px;
  font-style: normal;
  line-height: 1;
}

.camp-chapter-label span {
  color: var(--ink);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}

.camp-at-glance {
  /* Full-bleed contrast band; content stays in the page column */
  width: 100vw;
  margin-top: clamp(44px, 6vw, 70px);
  margin-left: calc(50% - 50vw);
  margin-right: calc(50% - 50vw);
  padding: 0 clamp(20px, 6vw, 90px);
  background: var(--green-deep);
}

.camp-at-glance-inner {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  width: min(100%, 1320px);
  margin: 0 auto;
}

.camp-at-glance-inner > div {
  position: relative;
  padding: clamp(38px, 5vw, 64px) 14px;
  text-align: center;
}

.camp-at-glance-inner > div:not(:last-child)::after {
  content: "";
  position: absolute;
  right: 0;
  top: 50%;
  width: 1px;
  height: 58%;
  transform: translateY(-50%);
  background: rgba(235, 203, 132, 0.22);
}

.camp-at-glance .highlight-icon {
  width: 28px;
  height: 28px;
  margin: 0 auto 16px;
  background: #f8f4ea;
}

.camp-at-glance strong {
  display: block;
  color: var(--hero-gold);
  font-family: var(--font-heading);
  font-size: clamp(30px, 3vw, 38px);
  font-weight: 600;
  line-height: 1;
}

.camp-at-glance strong::after {
  content: "";
  display: block;
  width: 22px;
  height: 1px;
  margin: 12px auto 0;
  background: rgba(235, 203, 132, 0.5);
}

.camp-at-glance span {
  display: block;
  margin-top: 10px;
  color: rgba(248, 244, 234, 0.75);
  font-size: var(--type-micro);
  font-weight: 800;
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
}

.tembo-highlights {
  margin-top: var(--space-stack-lg);
  padding: clamp(40px, 5vw, 64px) clamp(24px, 4vw, 56px);
  border-radius: 3px;
  background: var(--surface-wash);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
}

.amenities-inner {
  width: min(100%, 1320px);
  margin: 0 auto;
}

.amenities-inner .center-head {
  margin-bottom: clamp(48px, 5vw, 68px);
}

.amenities-inner .center-head h2 {
  font-size: clamp(1.9rem, 3.2vw, 2.8rem);
}

.amenity-groups {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: clamp(24px, 4vw, 52px);
}

.amenity-group h3 {
  margin: 0;
  padding-bottom: 14px;
  border-bottom: 2px solid var(--gold);
  color: var(--ink);
  font-family: var(--font-heading);
  font-size: 24px;
  font-weight: 500;
}

.amenity-items {
  display: flex;
  flex-direction: column;
  margin-top: 6px;
}

.amenity-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 13px 0;
  border-bottom: 1px solid rgba(35, 33, 28, 0.1);
}

.amenity-item .highlight-icon {
  width: 20px;
  height: 20px;
  flex-shrink: 0;
}

.amenity-item span:last-child {
  color: #4a463c;
  font-size: 13.5px;
  font-weight: 500;
}

.highlight-icon {
  display: block;
  width: 28px;
  height: 28px;
  background: var(--green);
  mask: var(--icon) center / contain no-repeat;
  -webkit-mask: var(--icon) center / contain no-repeat;
  transition: background 0.25s ease;
}

.icon-tent {
  --icon: url("icons/tent.svg");
}

.icon-users {
  --icon: url("icons/users.svg");
}

.icon-accessibility {
  --icon: url("icons/accessibility.svg");
}

.icon-sofa {
  --icon: url("icons/sofa.svg");
}

.icon-utensils {
  --icon: url("icons/utensils.svg");
}

.icon-mountain {
  --icon: url("icons/mountain.svg");
}

.icon-map {
  --icon: url("icons/map.svg");
}

.icon-drum {
  --icon: url("icons/drum.svg");
}

.icon-car {
  --icon: url("icons/car.svg");
}

.icon-sun {
  --icon: url("icons/sun.svg");
}

.icon-solar-panel {
  --icon: url("icons/solar-panel.svg");
}

.icon-coffee {
  --icon: url("icons/coffee.svg");
}

.icon-washing-machine {
  --icon: url("icons/washing-machine.svg");
}

.icon-wind {
  --icon: url("icons/wind.svg");
}

.icon-refrigerator {
  --icon: url("icons/refrigerator.svg");
}

.icon-wine {
  --icon: url("icons/wine.svg");
}

.icon-flame {
  --icon: url("icons/flame.svg");
}

.icon-leaf {
  --icon: url("icons/leaf.svg");
}

.icon-lock {
  --icon: url("icons/lock.svg");
}

.icon-wifi {
  --icon: url("icons/wifi.svg");
}

.icon-shopping-bag {
  --icon: url("icons/shopping-bag.svg");
}

.icon-sprout {
  --icon: url("icons/sprout.svg");
}

.icon-bed {
  --icon: url("icons/bed.svg");
}

.icon-moon {
  --icon: url("icons/moon.svg");
}

.icon-person-standing {
  --icon: url("icons/person-standing.svg");
}

.icon-flower-2 {
  --icon: url("icons/flower-2.svg");
}

.icon-waves {
  --icon: url("icons/waves.svg");
}

/* Standalone marquee gallery (homepage + air safari) sits on the lighter
   paper shade so it reads as its own section. */
.photo-marquee {
  background: var(--paper-light);
}

/* Square 1:1 tiles — used for the Instagram feed on the homepage. */
.photo-marquee--square .camp-gallery-track div {
  width: clamp(220px, 22vw, 300px);
  min-height: 0;
  aspect-ratio: 1 / 1;
}

/* Instagram tiles link out to the post; the anchor covers the whole tile. */
.camp-gallery-track div .ig-tile-link {
  position: absolute;
  inset: 0;
  z-index: 2;
}

.camp-gallery-strip {
  overflow: hidden;
  margin-top: var(--space-stack-lg);
}

/* Continuous rotating loop: the track holds two identical tile sets and
   slides by half its width, so the end hands off seamlessly to the start */
.camp-gallery-track {
  display: flex;
  width: max-content;
  animation: gallery-marquee 45s linear infinite;
}

.camp-gallery-strip:hover .camp-gallery-track {
  animation-play-state: paused;
}

@keyframes gallery-marquee {
  to {
    transform: translateX(-50%);
  }
}

@media (prefers-reduced-motion: reduce) {
  .camp-gallery-track {
    animation: none;
  }
}

.camp-gallery-track div {
  position: relative;
  flex: 0 0 auto;
  width: clamp(240px, 24vw, 320px);
  min-height: clamp(190px, 13vw, 250px);
  margin-right: 10px;
  overflow: hidden;
  border-radius: 8px;
  background: linear-gradient(135deg, #a35f37 0%, #caa269 45%, #475c34 100%);
}

.camp-gallery-track div.has-photo::before { display: none; }
.camp-gallery-track div.has-photo { cursor: pointer; }

.camp-gallery-track div::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: repeating-linear-gradient(118deg, rgba(255, 255, 255, 0.07) 0 2px, transparent 2px 11px);
}

.camp-gallery-track div:nth-child(5n+2) {
  background: linear-gradient(135deg, #405c39, #b98f58);
}

.camp-gallery-track div:nth-child(5n+3) {
  background: linear-gradient(135deg, #cfb08a, #82553a);
}

.camp-gallery-track div:nth-child(5n+4) {
  background: linear-gradient(135deg, #7a3c2f, #c8a071);
}

.camp-gallery-track div:nth-child(5n) {
  background: linear-gradient(135deg, #f0dfbe, #6e7150);
}

.camp-gallery-strip span {
  position: absolute;
  left: 12px;
  bottom: 10px;
  z-index: 1;
  padding: 5px 8px;
  border-radius: 2px;
  background: rgba(0, 0, 0, 0.3);
  color: rgba(255, 255, 255, 0.92);
  font-family: var(--font-mono);
  font-size: var(--type-caption);
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.camp-location {
  padding-top: clamp(42px, 5vw, 72px);
  background: var(--surface-white);
}

.camp-location-grid {
  display: grid;
  grid-template-columns: minmax(0, 0.88fr) minmax(320px, 1.12fr);
  gap: clamp(34px, 6vw, 80px);
  align-items: center;
}

.camp-location-map {
  min-height: 360px;
}

.legal-heading {
  display: inline-block;
  width: 100%;
  color: var(--ink);
}

.legal-heading-major {
  margin-top: 12px;
  padding-top: 26px;
  border-top: 1px solid rgba(35, 33, 28, 0.12);
  font-family: var(--font-heading);
  font-size: var(--type-h4);
  font-weight: 600;
  letter-spacing: 0.02em;
  line-height: 1.1;
}

.legal-heading-sub {
  margin-top: 4px;
  color: var(--green);
  font-weight: 700;
}

.legal-anchor {
  position: relative;
  top: -124px;
}

.footer-contact-grid {
  display: grid;
  grid-template-columns: 1.9fr 1fr 1fr 1fr;
  gap: clamp(28px, 4vw, 56px);
  align-items: start;
}

/* Four columns stop fitting around here — the address and the email start
   wrapping mid-phrase. Give the lockup its own full-width row and let the
   three detail columns keep the space. Once the desktop row breaks up the
   whole footer centres, so nothing is left hugging the left edge. */
@media (max-width: 1024px) {
  .footer-contact-grid {
    grid-template-columns: repeat(3, 1fr);
    text-align: center;
  }

  .footer-about {
    grid-column: 1 / -1;
    justify-self: center;
  }
}

/* Three no longer fit either; two still hold a full line of text, with the
   odd block out spanning the pair rather than sitting off to one side */
@media (max-width: 767px) {
  .footer-contact-grid {
    grid-template-columns: repeat(2, 1fr);
  }

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

.footer-about {
  align-self: center;
}

.footer-brand-lockup {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  line-height: 1;
}

.footer-brand-logo {
  display: block;
  width: auto;
  max-width: 100%;
  /* Floor matches the header lockup — the footer's should never read
     smaller than the one in the nav */
  height: clamp(64px, 5.86vw, 84.4px);
  object-fit: contain;
}

.footer-brand-text {
  display: inline-flex;
  flex-direction: column;
}

.footer-brand-text span {
  color: var(--cream);
  font-family: var(--font-heading);
  font-size: var(--type-small-title);
  font-weight: 600;
  letter-spacing: 0.10em;
}

.footer-brand-text small {
  margin-top: 5px;
  color: rgba(242, 238, 226, 0.7);
  font-size: var(--type-caption);
  font-weight: 600;
  letter-spacing: 0.36em;
}

.footer-social {
  display: flex;
  align-items: center;
  gap: 18px;
  margin-top: 24px;
  color: var(--hero-gold);
}

.footer-social a {
  display: flex;
  color: inherit;
  transition: color 0.2s ease;
}

.footer-social a:hover,
.footer-social a:focus-visible {
  color: #fff;
}

.footer-bottom .footer-social {
  margin-top: 0;
}

.footer-column h3 {
  margin: 0 0 16px;
  color: var(--hero-gold);
  font-family: var(--font-body);
  font-size: var(--type-micro);
  font-weight: 700;
  letter-spacing: 0.24em;
  text-transform: uppercase;
}

.footer-column span,
.footer-column a {
  display: block;
  color: inherit;
  font-size: var(--type-ui);
  font-weight: 300;
  line-height: 1.5;
  text-decoration: none;
}

.footer-column span+span,
.footer-column span+a,
.footer-column a+span,
.footer-column a+a {
  margin-top: 10px;
}

.footer-column a:hover,
.footer-column a:focus-visible {
  color: var(--hero-gold);
}

.footer-column .muted {
  opacity: 0.7;
}

/* Copyright and the design credit travel together, so the social row stays
   on the far side of the bar */
.footer-legal {
  display: flex;
  align-items: center;
  gap: 6px 18px;
  flex-wrap: wrap;
}

.footer-credit {
  position: relative;
  padding-left: 19px;
}

.footer-credit a {
  color: var(--hero-gold);
  text-decoration: none;
}

.footer-credit a:hover,
.footer-credit a:focus-visible {
  color: #fff;
}

.footer-credit::before {
  content: "";
  position: absolute;
  left: 0;
  top: 50%;
  width: 1px;
  height: 11px;
  transform: translateY(-50%);
  background: rgba(242, 238, 226, 0.25);
}

.footer-bottom {
  display: flex;
  justify-content: space-between;
  gap: 20px;
  flex-wrap: wrap;
  margin-top: 48px;
  padding-top: 28px;
  border-top: 1px solid rgba(255, 255, 255, 0.1);
  color: rgba(242, 238, 226, 0.55);
  font-size: var(--type-kicker);
  letter-spacing: 0.06em;
}

.enquiry-modal,
.gallery-lightbox {
  position: fixed;
  inset: 0;
  z-index: 100;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.24s ease;
}

.enquiry-modal.is-open,
.gallery-lightbox.is-open {
  opacity: 1;
  pointer-events: auto;
}

.enquiry-modal {
  display: grid;
  place-items: center;
  padding: 24px;
  background: rgba(20, 14, 8, 0.62);
  backdrop-filter: blur(3px);
}

.enquiry-dialog {
  position: relative;
  width: min(100%, 540px);
  max-height: 92vh;
  overflow: auto;
  padding: clamp(30px, 4vw, 48px);
  border-radius: 3px;
  background: var(--paper);
  box-shadow: 0 30px 80px rgba(0, 0, 0, 0.4);
}

.enquiry-close,
.lightbox-close {
  width: 42px;
  height: 42px;
  border: 1px solid rgba(35, 33, 28, 0.18);
  color: var(--ink);
  font-size: 22px;
}

.enquiry-close {
  position: absolute;
  top: 18px;
  right: 18px;
}

.enquiry-dialog h2 {
  margin: 12px 0 0;
  font-size: var(--type-h2);
  line-height: 1.06;
}

.enquiry-dialog form {
  display: grid;
  gap: 14px;
  margin-top: 24px;
}

.enquiry-dialog input,
.enquiry-dialog textarea {
  width: 100%;
  padding: 14px 16px;
  border: 1px solid rgba(35, 33, 28, 0.16);
  border-radius: 2px;
  background: #fff;
  color: var(--ink);
  font: inherit;
  font-size: 14px;
  outline: none;
}

.field-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}

.form-message {
  margin: 14px 0 0;
  color: var(--green);
  font-family: "Cormorant Garamond", serif;
  font-size: 22px;
  font-style: italic;
}

.gallery-lightbox {
  display: grid;
  place-items: center;
  padding: clamp(20px, 5vw, 70px);
  background: rgba(12, 9, 5, 0.9);
}

.lightbox-close {
  position: absolute;
  top: 22px;
  right: 24px;
  border-color: rgba(248, 244, 234, 0.4);
  color: #f8f4ea;
}

.lightbox-nav {
  position: absolute;
  top: 50%;
  width: 54px;
  height: 54px;
  border: 1px solid rgba(248, 244, 234, 0.4);
  color: #f8f4ea;
  font-size: 22px;
  transform: translateY(-50%);
}

.lightbox-nav.prev {
  left: clamp(12px, 3vw, 40px);
}

.lightbox-nav.next {
  right: clamp(12px, 3vw, 40px);
}

.lightbox-content {
  width: min(100%, 1000px);
}

.lightbox-image {
  aspect-ratio: 16 / 10;
}

.lightbox-meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  margin-top: 18px;
  color: #f8f4ea;
}

.lightbox-meta span:first-child {
  font-family: "Cormorant Garamond", serif;
  font-size: 20px;
  font-style: italic;
}

.lightbox-meta span:last-child {
  color: rgba(248, 244, 234, 0.6);
  font-family: ui-monospace, Menlo, Consolas, monospace;
  font-size: 13px;
  letter-spacing: 0.12em;
}

@media (max-width: 980px) {
  .site-nav {
    min-height: 80px;
    padding: 16px clamp(18px, 5vw, 38px);
    background: rgba(246, 241, 231, 0.96);
    border-bottom-color: var(--line);
    box-shadow: 0 1px 30px rgba(0, 0, 0, 0.05);
    color: var(--ink);
  }


  .desktop-nav,
  .desktop-cta {
    display: none;
  }

  .mobile-menu-button {
    display: inline-flex;
  }

  .mobile-menu-panel {
    top: 80px;
  }

  .hero {
    min-height: 76vh;
    padding-top: 125px;
  }

  .section-head,
  .camps-layout,
  .experiences-grid,
  .conservation-grid,
  .plan-grid {
    grid-template-columns: 1fr;
  }

  .section-head {
    display: grid;
    align-items: start;
  }

  .section-head p {
    max-width: 620px;
  }

  .camps-layout,
  .camps-layout.camps-layout--flip {
    display: grid;
    grid-template-columns: 1fr;
  }

  /* stacked: copy first, photo after it — both camp rows */
  .camps-layout .camp-media { order: 2; }

  .gallery-grid {
    grid-template-columns: repeat(2, 1fr);
  }

  .tile-large,
  .tile-wide {
    grid-column: span 1;
    grid-row: span 1;
  }

  .postcard-card {
    grid-template-columns: 1fr;
  }

  .postcard-note {
    border-right: 0;
    border-bottom: 2px dashed rgba(35, 33, 28, 0.22);
  }

  .legal-shell {
    grid-template-columns: 1fr;
    gap: 26px;
    padding-inline: clamp(28px, 5vw, 52px);
    padding-bottom: 72px;
  }

  .legal-toc {
    position: static;
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    padding: 18px;
    background: rgba(251, 248, 241, 0.72);
  }

  .legal-toc span {
    width: 100%;
    margin-bottom: 4px;
  }

  .legal-toc a {
    margin-top: 0;
    padding: 8px 10px;
    border: 1px solid rgba(35, 33, 28, 0.12);
    font-size: 12px;
  }

  .legal-toc a:hover,
  .legal-toc a:focus-visible {
    border-color: var(--gold);
  }

  .air-two-col {
    grid-template-columns: 1fr;
  }

  .about-page .section-pad,
  .camp-detail-page .section-pad {
    padding-block: 64px;
    padding-inline: clamp(28px, 5vw, 52px);
  }

  .about-faq-grid {
    margin-top: 36px;
  }

  .about-solidarity-grid {
    gap: 36px;
  }

  .air-banner {
    min-height: 240px;
  }

  .air-heading {
    padding-block: 50px 44px;
  }

  .air-shell {
    padding-inline: clamp(28px, 5vw, 52px);
    padding-bottom: 72px;
  }

  .park-fee-grid-three,
  .park-fee-grid-two {
    grid-template-columns: 1fr;
  }

  .about-partners-grid {
    grid-template-columns: repeat(3, minmax(130px, 170px));
  }

  .amenity-groups {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 32px;
  }

  .camp-life-layout,
  .camp-at-glance-inner {
    grid-template-columns: 1fr;
  }

  .camp-at-glance-inner > div:not(:last-child)::after {
    display: none;
  }

  .camp-detail-hero {
    min-height: 300px;
  }

  .camp-detail-hero-inner {
    padding: 58px 28px;
  }

  .camp-life {
    padding-top: 62px;
    padding-bottom: 56px;
  }

  .camp-life-heading {
    position: static;
  }

  .camp-life-layout,
  .camp-location-grid {
    gap: 36px;
  }

  .camp-at-glance,
  .tembo-highlights,
  .camp-gallery-strip {
    margin-top: 38px;
  }

  .tembo-highlights {
    padding: 34px clamp(28px, 5vw, 52px);
  }

  .camp-location {
    padding-top: 52px;
  }

  .camp-gallery-strip,
  .camp-location-grid {
    grid-template-columns: 1fr;
  }

  .camp-gallery-strip {
    gap: 10px;
  }
}

@media (max-width: 767px) {
  .legal-page {
    padding-top: 0;
  }

  .legal-shell {
    gap: 22px;
    padding: 36px 20px 56px;
  }

  .legal-content pre,
  .policy-document {
    padding: 28px 20px;
    font-size: 15px;
    line-height: 1.74;
  }

  .policy-document section+section {
    margin-top: 28px;
    padding-top: 24px;
  }

  .about-page .section-pad,
  .camp-detail-page .section-pad {
    padding-block: 48px;
  }

  .about-story-simple p,
  .about-copy p,
  .about-faq-grid p,
  .about-solidarity-copy p,
  .camp-life-copy p,
  .camp-location-copy p {
    line-height: 1.72;
  }

  .about-story-simple p,
  .camp-lead {
    margin-top: 18px;
  }

  .about-faq-grid {
    margin-top: 30px;
  }

  .about-faq-grid article {
    padding: 26px 22px;
  }

  .about-solidarity {
    scroll-margin-top: 80px;
  }

  .about-solidarity-grid {
    gap: 28px;
  }

  .about-solidarity-card {
    aspect-ratio: auto;
    min-height: 320px;
    padding: 34px 28px;
  }

  .about-partners-grid {
    grid-template-columns: repeat(2, minmax(120px, 150px));
    gap: 18px 24px;
  }

  .about-partner-logo {
    min-height: 82px;
  }

  .about-partner-logo img {
    max-width: min(145px, 100%);
    max-height: 68px;
  }

  .air-banner {
    min-height: 190px;
  }

  .air-heading {
    padding-block: 42px 34px;
  }

  .air-center-head p {
    max-width: none;
    line-height: 1.64;
  }

  .air-shell {
    padding: 40px 20px 56px;
  }

  .air-two-col {
    gap: 16px;
    margin-bottom: 16px;
  }

  .air-info-card,
  .park-fee-card {
    padding: 24px 20px;
  }

  .air-camp-tabs {
    gap: 16px;
    margin-top: 34px;
  }

  .air-rates-content h4 {
    margin-top: 34px;
  }

  .air-rates-table-wrap {
    margin-bottom: 30px;
  }

  .camp-rates-notes {
    margin-top: 36px;
    padding-top: 28px;
  }

  .park-fees-content>p {
    margin-bottom: 30px;
  }

  .park-fees-content h5 {
    margin-top: 34px;
  }

  .tembo-divider {
    margin-top: 36px;
  }

  .camp-life-layout,
  .camp-location-grid {
    gap: 30px;
  }

  .camp-at-glance {
    margin-top: 34px;
  }

  .tembo-highlights {
    margin-top: 34px;
    padding: 28px 20px;
  }

  .camp-gallery-strip {
    margin-top: 34px;
  }

  .camp-gallery-strip div {
    min-height: 190px;
  }

  .camp-location {
    padding-top: 44px;
  }
}

@media (max-width: 560px) {
  .brand {
    gap: 9px;
  }


  .brand-title {
    font-size: 25px;
  }

  .brand-subtitle {
    font-size: 8px;
    letter-spacing: 0.26em;
  }

  .hero {
    min-height: 720px;
    padding-inline: 18px;
  }

  .tembo-highlights {
    padding: 18px;
  }

  .amenity-groups {
    grid-template-columns: 1fr;
    gap: 26px;
  }

  .highlight-icon {
    width: 24px;
    height: 24px;
  }

  .eyebrow {
    gap: 10px;
    font-size: 10px;
    letter-spacing: 0.2em;
  }

  .eyebrow::before,
  .eyebrow::after {
    width: 22px;
  }

  .hero-actions {
    align-items: stretch;
    flex-direction: column;
  }

  .primary-link,
  .film-button {
    justify-content: center;
  }

  .air-rates-table,
  .air-rates-table thead,
  .air-rates-table tbody,
  .air-rates-table th,
  .air-rates-table td,
  .air-rates-table tr {
    display: block;
    width: 100%;
    min-width: 0;
  }

  .air-rates-table thead {
    display: none;
  }

  .air-rates-table tr {
    padding: 14px 16px;
    border-bottom: 1px solid rgba(35, 33, 28, 0.1);
  }

  .air-rates-table td {
    display: flex;
    justify-content: space-between;
    gap: 18px;
    padding: 5px 0;
    border-bottom: 0;
    text-align: right;
  }

  .air-rates-table td:first-child {
    display: block;
    margin-bottom: 8px;
    color: var(--ink);
    font-weight: 700;
    text-align: left;
  }

  .air-rates-table td:not(:first-child)::before {
    content: attr(data-label);
    color: var(--muted);
    font-weight: 500;
    text-align: left;
  }

  .camps {
    padding-inline: 28px;
  }

  .camp-media {
    min-height: 0;
    aspect-ratio: 1.08 / 1;
  }

  .camp-label {
    max-width: calc(100% - 32px);
    white-space: normal;
  }

  .section-pad {
    padding-inline: 24px;
  }

  .air-heading {
    padding-inline: 18px;
  }

  .legal-shell,
  .air-shell {
    padding-inline: 18px;
  }

  .about-page .section-pad,
  .camp-detail-page .section-pad {
    padding-block: 38px;
    padding-inline: 18px;
  }

  .air-banner {
    min-height: 164px;
  }

  .air-banner-tag {
    left: 14px;
    bottom: 14px;
    max-width: calc(100% - 28px);
  }

  .air-heading {
    padding-block: 34px 28px;
  }

  .air-camp-tabs {
    grid-template-columns: 1fr;
    gap: 12px;
  }

  .air-camp-tab {
    padding: 14px 4px;
  }

  .air-info-card,
  .park-fee-card {
    padding: 22px 18px;
  }

  .about-solidarity-card {
    min-height: 280px;
  }

  .camp-at-glance-inner {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .about-hero-grid,
  .about-story-grid,
  .about-solidarity-grid,
  .about-faq-grid {
    grid-template-columns: 1fr;
  }

  /* stacked, the story reads first and the film card closes the section */
  .about-solidarity-grid .about-solidarity-card {
    order: 2;
  }

  .about-section-heading {
    position: static;
  }

  .about-faq-grid article:last-child {
    grid-column: auto;
  }

  .about-faq-title {
    grid-template-columns: 34px minmax(0, 1fr);
    gap: 14px;
    margin-bottom: 16px;
  }

  .about-faq-item {
    grid-template-columns: 34px minmax(0, 1fr);
    gap: 14px;
  }

  .about-faq-icon {
    width: 28px;
    height: 28px;
    margin-top: 4px;
  }

  .experience-media,
  .map-card {
    min-height: 360px;
  }

  .gallery-grid {
    grid-auto-rows: 130px;
    gap: 10px;
  }

  .stats-grid,
  .field-row {
    grid-template-columns: 1fr;
  }

  .lightbox-nav {
    width: 44px;
    height: 44px;
  }

  .lightbox-nav.prev {
    left: 10px;
  }

  .lightbox-nav.next {
    right: 10px;
  }

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

  .footer-bottom {
    align-items: center;
    flex-direction: column;
    text-align: center;
  }

  /* stacked, the credit's divider would hang off its own line */
  .footer-legal {
    flex-direction: column;
    align-items: center;
  }

  .footer-credit {
    padding-left: 0;
  }

  .footer-credit::before {
    display: none;
  }
}

/* ===== Experiences page ===== */

.experiences-banner {
  background:
    linear-gradient(160deg, rgba(26, 38, 24, 0.68) 0%, rgba(26, 38, 24, 0.34) 55%, rgba(64, 50, 27, 0.48) 100%),
    url("/assets/images/page-headers/experiences.jpg") center 72% / cover no-repeat;
}

.air-banner.experiences-banner::before {
  display: none;
}

.exp-safaris {
  display: flex;
  flex-direction: column;
  gap: clamp(60px, 8vw, 100px);
  margin-top: clamp(44px, 5vw, 64px);
}

.exp-safari {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(32px, 5vw, 80px);
  align-items: center;
}

.exp-safari-media.has-photo::before { display: none; }

.exp-safari:nth-child(even) .exp-safari-media {
  order: 2;
}

.exp-safari-media {
  position: relative;
  min-height: clamp(280px, 30vw, 400px);
  overflow: hidden;
  border-radius: 2px;
}

/* Video facades: a thumbnail and play ring stand in for the YouTube
   iframe until tapped, keeping pages light. Used by the experience
   entries and the camp media cards. */
.video-facade {
  cursor: pointer;
}

.video-facade::before {
  display: none;
}

.video-thumb,
.video-frame {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
}

.video-thumb {
  object-fit: cover;
}

.video-play {
  position: absolute;
  top: 50%;
  left: 50%;
  z-index: 2;
  width: 74px;
  height: 74px;
  transform: translate(-50%, -50%);
  border: 1px solid rgba(248, 244, 234, 0.85);
  border-radius: 50%;
  background: rgba(20, 36, 26, 0.45);
  cursor: pointer;
  transition: background-color 160ms ease, transform 160ms ease;
}

.video-play span {
  position: absolute;
  top: 50%;
  left: 53%;
  width: 0;
  height: 0;
  transform: translate(-50%, -50%);
  border-style: solid;
  border-width: 11px 0 11px 19px;
  border-color: transparent transparent transparent #f8f4ea;
}

.video-facade:hover .video-play,
.video-play:focus-visible {
  background: rgba(46, 94, 69, 0.75);
  transform: translate(-50%, -50%) scale(1.05);
}

.video-facade.is-playing .video-play,
.video-facade.is-playing .video-thumb {
  display: none;
}

.about-solidarity-card .video-frame {
  z-index: 2;
}

.lightbox-image::before { display: none; }
.lightbox-image::after { display: none; }

.exp-safari-media::before,
.exp-moment-media::before,
.exp-tl-media.has-photo::before { display: none; }

.exp-tl-media::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: repeating-linear-gradient(118deg, rgba(255, 255, 255, 0.05) 0 2px, transparent 2px 12px);
}

.exp-safari-media .image-tag,
.exp-moment-media .image-tag {
  top: auto;
  left: 10px;
  bottom: 10px;
}

.exp-num {
  color: #b0863a;
  font-family: var(--font-heading);
  font-size: 22px;
  font-style: italic;
}

.exp-safari h3 {
  margin: 10px 0 0;
  color: var(--ink);
  font-family: var(--font-heading);
  font-size: clamp(2rem, 3.4vw, 3rem);
  font-weight: 500;
  line-height: 1.06;
}

.exp-safari-copy p {
  max-width: 500px;
  margin: 20px 0 0;
  color: #5b5648;
  font-size: 15px;
  font-weight: 300;
  line-height: 1.9;
}

.exp-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 24px;
}

.exp-tag {
  border: 1px solid rgba(46, 94, 69, 0.3);
  border-radius: 999px;
  padding: 7px 15px;
  color: #2c4a37;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.exp-moments {
  background: var(--paper-light);
  border-top: 1px solid rgba(35, 33, 28, 0.06);
}

.exp-moment-groups {
  display: flex;
  flex-direction: column;
  gap: clamp(48px, 6vw, 72px);
  margin-top: clamp(44px, 5vw, 64px);
}

.exp-group-head {
  display: flex;
  align-items: center;
  gap: 18px;
}

.exp-group-head h3 {
  margin: 0;
  color: #2c4a37;
  font-family: var(--font-heading);
  font-size: clamp(1.5rem, 2.4vw, 2rem);
  font-style: italic;
  font-weight: 500;
  white-space: nowrap;
}

.exp-group-head::after {
  content: "";
  flex: 1;
  height: 1px;
  background: rgba(35, 33, 28, 0.14);
}

.exp-moment-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(20px, 3vw, 40px);
  margin-top: 26px;
}

.exp-moment-card {
  display: flex;
  flex-direction: column;
  gap: 13px;
}

.exp-moment-media {
  position: relative;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  border-radius: 2px;
}

.exp-moment-card h4 {
  margin: 0;
  padding-bottom: 12px;
  border-bottom: 1px solid rgba(35, 33, 28, 0.14);
  color: var(--ink);
  font-family: var(--font-heading);
  font-size: 21px;
  font-weight: 500;
  line-height: 1.15;
}

.exp-moment-card p {
  margin: 0;
  color: #5b5648;
  font-size: 13px;
  font-weight: 300;
  line-height: 1.75;
}

.exp-timeline {
  position: relative;
  width: min(100%, 920px);
  margin: clamp(44px, 5vw, 64px) auto 0;
}

.exp-timeline::before {
  content: "";
  position: absolute;
  left: 19px;
  top: 8px;
  bottom: 8px;
  width: 1.5px;
  background: linear-gradient(180deg, #d2a959, #b0863a 60%, #22321f);
}

.exp-tl-rows {
  display: flex;
  flex-direction: column;
  gap: 34px;
}

.exp-tl-row {
  display: grid;
  grid-template-columns: 40px 110px 1fr 200px;
  gap: 18px;
  align-items: start;
}

.exp-tl-dot {
  width: 11px;
  height: 11px;
  margin: 6px 0 0 14px;
  border: 2.5px solid #b0863a;
  border-radius: 50%;
  background: var(--paper);
}

.exp-tl-time {
  margin-top: 4px;
  color: #b0863a;
  font-size: 10.5px;
  font-weight: 800;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}

.exp-tl-row h4 {
  margin: 0;
  color: var(--ink);
  font-family: var(--font-heading);
  font-size: 23px;
  font-weight: 500;
  line-height: 1.1;
}

.exp-tl-row p {
  max-width: 520px;
  margin: 8px 0 0;
  color: #5b5648;
  font-size: 13px;
  font-weight: 300;
  line-height: 1.75;
}

.exp-tl-media {
  position: relative;
  aspect-ratio: 16 / 10;
  overflow: hidden;
  border-radius: 2px;
}

.exp-cta {
  background: var(--paper);
  border-top: 1px solid rgba(35, 33, 28, 0.06);
}

.exp-cta-frame {
  width: min(100%, 920px);
  margin: 0 auto;
  border: 1px solid rgba(176, 134, 58, 0.5);
  padding: 8px;
}

.exp-cta-inner {
  border: 1px solid rgba(176, 134, 58, 0.5);
  padding: clamp(36px, 5vw, 60px) clamp(24px, 4vw, 52px);
  background: var(--paper-light);
  text-align: center;
}

/* Experiences page flips the pairing: light outside, paper inside the frame */
.experiences-page .exp-cta {
  background: var(--paper-light);
}

.experiences-page .exp-cta-inner {
  background: var(--paper);
}

.exp-cta-inner h2 {
  margin: 16px 0 0;
  color: var(--ink);
  font-family: var(--font-heading);
  font-size: clamp(1.7rem, 3.1vw, 2.7rem);
  font-weight: 500;
  line-height: 1.1;
}

.exp-cta-inner h2 span {
  color: var(--green);
  font-style: italic;
}

.exp-cta-inner > p {
  margin: 16px 0 0;
  color: #6c6657;
  font-size: 14.5px;
  font-weight: 300;
  line-height: 1.75;
}

.exp-cta-form {
  display: flex;
  align-items: flex-end;
  gap: 14px;
  width: min(100%, 420px);
  margin: 30px auto 0;
}

.exp-cta-form input {
  flex: 1;
  padding: 9px 2px;
  border: 0;
  border-bottom: 1.5px solid rgba(35, 33, 28, 0.35);
  background: transparent;
  color: var(--ink);
  font-family: "Mulish", sans-serif;
  font-size: 14.5px;
  text-align: center;
  outline: none;
}

.exp-cta-form button {
  padding: 12px 24px;
  border: 0;
  border-radius: 2px;
  background: var(--green);
  color: #f8f4ea;
  cursor: pointer;
  font-family: "Mulish", sans-serif;
  font-size: 10.5px;
  font-weight: 800;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}

.exp-cta-message {
  margin: 28px 0 0;
  color: var(--green);
  font-size: 15px;
  letter-spacing: 0.04em;
}

.exp-cta-links {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 16px;
  margin-top: 34px;
}

@media (max-width: 980px) {
  .exp-safari {
    grid-template-columns: 1fr;
  }

  /* stacked: text first, media (photo or video) after it */
  .exp-safari-copy { order: 1; }
  .exp-safari-media,
  .exp-safari:nth-child(even) .exp-safari-media { order: 2; }

  .exp-moment-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .exp-tl-row {
    grid-template-columns: 34px 1fr;
    gap: 6px 16px;
  }

  .exp-tl-dot { grid-column: 1; grid-row: 1; }
  .exp-tl-time { grid-column: 2; grid-row: 1; }
  .exp-tl-row > div:not(.exp-tl-media) { grid-column: 2; grid-row: 2; }

  .exp-tl-media {
    display: block;
    grid-column: 2;
    grid-row: 3;
    margin-top: 14px;
  }
}

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

  /* stacked: heading + description first, photo after */
  .exp-moment-media { order: 3; margin-top: 4px; }

  .exp-cta-form {
    flex-direction: column;
    align-items: stretch;
  }
}

/* ===== Contact page ===== */

.contact-banner {
  background: linear-gradient(115deg, #14241a 0%, #2c4a37 42%, #7a5a32 82%, #d2a959 100%);
}

.contact-head h2 span {
  color: var(--gold);
  font-style: italic;
}

.contact-grid {
  display: grid;
  grid-template-columns: 1fr 2fr;
  gap: clamp(36px, 6vw, 90px);
  align-items: start;
  margin-top: clamp(44px, 5vw, 64px);
}

.contact-rail h2 {
  margin: 14px 0 0;
  color: var(--ink);
  font-family: var(--font-heading);
  font-size: clamp(2rem, 3.4vw, 3rem);
  font-weight: 500;
  line-height: 1.08;
}

.contact-block {
  padding: 24px 0;
  border-bottom: 1px solid rgba(35, 33, 28, 0.12);
}

.contact-rail .contact-block:first-of-type {
  margin-top: 26px;
}

.contact-block-label {
  margin-bottom: 12px;
  color: #b08a3e;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.24em;
  text-transform: uppercase;
}

.contact-block-body {
  display: flex;
  flex-direction: column;
  gap: 8px;
  color: #4a463c;
  font-size: 15px;
  font-weight: 300;
  line-height: 1.6;
}

.contact-block-body a {
  align-self: flex-start;
  color: #4a463c;
  transition: color 0.25s ease;
}

.contact-block-body a:hover,
.contact-block-body a:focus-visible {
  color: var(--green);
}

.contact-travel-links {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.contact-travel-links a {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: #2c4a37;
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}

.contact-travel-links a i {
  color: #b0863a;
  font-style: normal;
}

.contact-social {
  display: flex;
  align-items: center;
  gap: 18px;
  margin-top: 30px;
  color: var(--green);
}

.contact-social a {
  display: flex;
  color: inherit;
  transition: color 0.2s ease;
}

.contact-social a:hover,
.contact-social a:focus-visible {
  color: var(--gold);
}

.contact-form-card {
  padding: clamp(28px, 4vw, 48px);
  border: 1px solid rgba(35, 33, 28, 0.1);
  border-radius: 2px;
  background: var(--paper-light);
}

.contact-form-card h2 {
  margin: 12px 0 0;
  color: var(--ink);
  font-family: var(--font-heading);
  font-size: clamp(1.8rem, 2.8vw, 2.4rem);
  font-weight: 500;
  line-height: 1.1;
}

.contact-form-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
  margin-top: 30px;
}

.contact-field-label {
  margin-bottom: 8px;
  color: #9a9078;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
}

.contact-form-card input,
.contact-form-card select,
.contact-form-card textarea {
  width: 100%;
  padding: 13px 14px;
  border: 1px solid rgba(35, 33, 28, 0.16);
  border-radius: 2px;
  background: #fff;
  color: var(--ink);
  font-family: "Mulish", sans-serif;
  font-size: 14px;
  outline: none;
}

.contact-form-card select {
  appearance: none;
  -webkit-appearance: none;
  padding-right: 38px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2323211c' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 14px center;
  background-size: 12px;
  cursor: pointer;
}

.contact-form-card textarea {
  resize: vertical;
}

.contact-form-full {
  margin-top: 20px;
}

.contact-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.contact-chip {
  padding: 9px 16px;
  border: 1.5px solid rgba(35, 33, 28, 0.2);
  border-radius: 999px;
  background: transparent;
  color: #4a463c;
  cursor: pointer;
  font-family: "Mulish", sans-serif;
  font-size: 12px;
  font-weight: 600;
  transition: all 0.25s ease;
}

.contact-chip.is-selected {
  border-color: var(--green);
  background: var(--green);
  color: #f8f4ea;
}

.contact-error {
  margin: 14px 0 0;
  color: #a04328;
  font-size: 13px;
}

.contact-submit {
  margin-top: 24px;
  padding: 15px 34px;
  border: 0;
  border-radius: 2px;
  background: var(--green);
  color: #f8f4ea;
  cursor: pointer;
  font-family: "Mulish", sans-serif;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  transition: background 0.3s ease;
}

.contact-submit:hover,
.contact-submit:focus-visible {
  background: var(--green-dark);
}

.contact-success {
  padding: 60px 20px;
  text-align: center;
}

.contact-success svg {
  margin: 0 auto;
}

.contact-success h3 {
  margin: 22px 0 0;
  color: var(--ink);
  font-family: var(--font-heading);
  font-size: 30px;
  font-weight: 500;
}

.contact-success p {
  margin: 12px 0 0;
  color: #5b5648;
  font-size: 15px;
  font-weight: 300;
  line-height: 1.7;
}

.contact-reset {
  margin-top: 26px;
  padding: 0 0 5px;
  border: 0;
  border-bottom: 1px solid rgba(46, 94, 69, 0.35);
  background: none;
  color: var(--green);
  cursor: pointer;
  font-family: "Mulish", sans-serif;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}

.contact-maps-section {
  background: var(--paper-light);
  border-top: 1px solid rgba(35, 33, 28, 0.06);
}

.contact-maps {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(20px, 3vw, 36px);
  margin-top: clamp(40px, 5vw, 56px);
}

.contact-map-card {
  position: relative;
  aspect-ratio: 16 / 11;
  overflow: hidden;
  border-radius: 2px;
}

.contact-map-card::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: repeating-linear-gradient(118deg, rgba(255, 255, 255, 0.05) 0 2px, transparent 2px 13px);
}

.contact-map-card.bush {
  background: linear-gradient(140deg, #cfc498 0%, #a8a468 55%, #8a8f55 100%);
}

.contact-map-card.spirit {
  background: linear-gradient(140deg, #d8c9a2 0%, #b5a878 55%, #7d8455 100%);
}

.contact-map-pin {
  position: absolute;
  display: flex;
  align-items: center;
  gap: 8px;
}

.contact-map-pin i {
  width: 13px;
  height: 13px;
  border: 2px solid #f6f1e7;
  border-radius: 50%;
  background: var(--green);
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
}

.contact-map-card.spirit .contact-map-pin i {
  background: #b0863a;
}

.contact-map-pin span {
  padding: 4px 8px;
  border-radius: 2px;
  background: rgba(246, 241, 231, 0.9);
  color: var(--ink);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.08em;
}

.contact-map-note {
  position: absolute;
  left: 14px;
  bottom: 12px;
  color: rgba(255, 255, 255, 0.7);
  font-family: ui-monospace, Menlo, Consolas, monospace;
  font-size: 10px;
  letter-spacing: 0.08em;
}

.contact-map-title {
  margin: 18px 0 0;
  color: var(--ink);
  font-family: var(--font-heading);
  font-size: var(--type-small-title);
  font-weight: 500;
}

.contact-map-copy {
  margin: 8px 0 0;
  color: var(--muted-soft);
  font-size: var(--type-body);
  font-weight: 300;
  line-height: 1.9;
}

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

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

/* ===== Banner-hosted page heads (reservations, contact) ===== */

.air-banner.has-page-head {
  display: flex;
  align-items: flex-end;
  min-height: clamp(300px, 32vw, 430px);
  padding: 120px clamp(20px, 6vw, 90px) clamp(40px, 5vw, 56px);
}

.air-banner.has-page-head .air-banner-tag {
  left: auto;
  right: 14px;
}

.page-head {
  position: relative;
  z-index: 2;
  width: min(100%, 1320px);
  margin: 0 auto;
}

.page-head-kicker {
  display: flex;
  align-items: center;
  gap: 16px;
  color: var(--hero-gold, #ebcb84);
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: 0.3em;
  text-transform: uppercase;
}

.page-head-kicker::before {
  content: "";
  width: 34px;
  height: 1px;
  background: rgba(246, 241, 231, 0.6);
}

/* Banner titles carry the homepage hero's display treatment */
.page-head h2 {
  margin: 18px 0 0;
  color: #f8f4ea;
  font-family: var(--font-heading);
  font-size: var(--type-hero);
  font-weight: 700;
  line-height: 1;
}

.page-head h2 span {
  color: var(--hero-gold, #ebcb84);
  font-style: italic;
}

.page-head p {
  max-width: 560px;
  margin: 18px 0 0;
  color: rgba(248, 244, 234, 0.9);
  font-size: var(--type-body, 16px);
  font-weight: 300;
  line-height: 1.7;
}

/* Page banners now carry photographs (added by the client) */
.air-banner.camp-rates-banner {
  background:
    linear-gradient(160deg, rgba(26,38,24,0.7) 0%, rgba(26,38,24,0.36) 55%, rgba(64,50,27,0.5) 100%),
    url("/assets/images/page-headers/camp-rates.jpg") center bottom / cover no-repeat;
}
.air-banner.camp-rates-banner::before { display: none; }

.air-banner.park-fees-banner {
  background:
    linear-gradient(160deg, rgba(26,38,24,0.7) 0%, rgba(26,38,24,0.36) 55%, rgba(64,50,27,0.5) 100%),
    url("/assets/images/page-headers/park-fees.jpg") center 15% / cover no-repeat;
}
.air-banner.park-fees-banner::before { display: none; }

.air-banner.contact-banner {
  background:
    radial-gradient(70% 85% at 42% 55%, rgba(15,26,18,0.6) 0%, rgba(15,26,18,0.32) 46%, rgba(15,26,18,0) 78%),
    linear-gradient(160deg, rgba(26,38,24,0.32) 0%, rgba(26,38,24,0.12) 55%, rgba(26,38,24,0.28) 100%),
    url("/assets/images/page-headers/contact-us.jpg") center bottom / cover no-repeat;
}
.air-banner.contact-banner::before { display: none; }

.air-banner.privacy-banner {
  background:
    linear-gradient(160deg, rgba(26,38,24,0.7) 0%, rgba(26,38,24,0.36) 55%, rgba(64,50,27,0.5) 100%),
    url("/assets/images/page-headers/privacy-policy.jpg") center 82% / cover no-repeat;
}
.air-banner.privacy-banner::before { display: none; }


.air-banner.terms-banner {
  background:
    linear-gradient(160deg, rgba(26,38,24,0.7) 0%, rgba(26,38,24,0.36) 55%, rgba(64,50,27,0.5) 100%),
    url("/assets/images/page-headers/terms-conditions.jpg") center 55% / cover no-repeat;
}
.air-banner.terms-banner::before { display: none; }
