:root {
  --forest: #0f4036;
  --forest-deep: #082f28;
  --forest-soft: #1b5549;
  --paper: #fffdf8;
  --ivory: #f7f1e6;
  --flax: #e9ddc8;
  --mustard: #e1ad3d;
  --mustard-light: #f3d17b;
  --mustard-dark: #6d4906;
  --teal: #2f7168;
  --ink: #18342c;
  --muted: #586862;
  --line: rgba(15, 64, 54, .18);
  --line-light: rgba(255, 253, 248, .22);
  --error: #a52f2a;
  --header-height: 84px;
  --header-compact-height: 72px;
  --shell: 1280px;
  --gutter: clamp(18px, 4vw, 58px);
  --font-display: "Avenir Next", Avenir, "Segoe UI", Helvetica, Arial, sans-serif;
  --font-body: "Avenir Next", Avenir, "Segoe UI", Helvetica, Arial, sans-serif;
  --ease-out: cubic-bezier(.22, 1, .36, 1);
  --ease-standard: cubic-bezier(.2, 0, 0, 1);
}

*, *::before, *::after { box-sizing: border-box; }
html { max-width: 100%; overflow-x: clip; scroll-behavior: smooth; scroll-padding-top: 0; background: var(--ivory); }
html.scroll-instant { scroll-behavior: auto; }
body {
  min-width: 320px;
  margin: 0;
  overflow-x: clip;
  color: var(--ink);
  background: var(--paper);
  font: 18px/1.58 var(--font-body);
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
}
body.menu-open { overflow: hidden; }
img, picture, svg { display: block; max-width: 100%; }
img { height: auto; }
button, input, select, textarea { color: inherit; font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
a { color: inherit; text-underline-offset: .22em; }
p, h1, h2, h3, dl, dd, figure, ol, ul { margin-top: 0; }
dd { margin-left: 0; }
p:last-child, dl:last-child, dd:last-child, figure:last-child, ol:last-child, ul:last-child { margin-bottom: 0; }
h1, h2, h3 {
  margin-bottom: .42em;
  color: var(--forest);
  font-family: var(--font-display);
  font-weight: 650;
  letter-spacing: -.045em;
  line-height: .98;
  text-wrap: balance;
}
h1 { font-size: clamp(3.5rem, 5.2vw, 5.15rem); }
h2 { font-size: clamp(2.65rem, 3.75vw, 4rem); }
h3 { font-size: clamp(1.55rem, 2vw, 2.05rem); }
::selection { color: var(--paper); background: var(--teal); }
:focus-visible { outline: 3px solid var(--mustard); outline-offset: 4px; }
[hidden] { display: none !important; }
.sr-only {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

.skip-link {
  position: fixed;
  z-index: 1000;
  top: 10px;
  left: 10px;
  padding: 11px 16px;
  color: var(--paper);
  background: var(--forest-deep);
  transform: translateY(-160%);
  transition: transform 180ms var(--ease-out);
}
.skip-link:focus { transform: none; }
.shell { width: min(var(--shell), calc(100% - var(--gutter) * 2)); margin-inline: auto; }
.section { position: relative; scroll-margin-top: var(--header-compact-height); }
.section-kicker {
  margin-bottom: 14px;
  color: var(--teal);
  font-size: 15px;
  font-weight: 760;
  line-height: 1.25;
}
.section-kicker-light { color: var(--mustard-light); }
.eyebrow { margin-bottom: 14px; color: var(--teal); font-size: 15px; font-weight: 760; line-height: 1.25; }
.section-intro { max-width: 660px; font-size: 20px; line-height: 1.5; }

.button {
  display: inline-flex;
  min-height: 50px;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 12px 23px;
  border: 1px solid transparent;
  border-radius: 999px;
  font-size: 16px;
  font-weight: 760;
  line-height: 1;
  text-align: center;
  text-decoration: none;
  transition: color 160ms var(--ease-standard), background-color 160ms var(--ease-standard), border-color 160ms var(--ease-standard), transform 160ms var(--ease-out), box-shadow 160ms var(--ease-standard);
}
.button::after { content: "→"; transition: transform 160ms var(--ease-out); }
.button:hover::after { transform: translateX(4px); }
.button:active { transform: translateY(1px); }
.button-primary { color: var(--forest-deep); background: var(--mustard); }
.button-primary:hover { background: #edbb4e; box-shadow: 0 9px 22px rgba(8, 47, 40, .16); }
.button-outline-light { color: var(--paper); border-color: rgba(255, 253, 248, .66); }
.button-outline-light:hover { color: var(--forest-deep); background: var(--paper); border-color: var(--paper); }
.button-forest { color: var(--paper); background: var(--forest-deep); }
.button-forest:hover { background: var(--forest-soft); }
.button-outline-forest { color: var(--forest-deep); border-color: rgba(8, 47, 40, .52); }
.button-outline-forest:hover { color: var(--paper); background: var(--forest-deep); border-color: var(--forest-deep); }
.button-secondary { color: var(--forest-deep); border-color: rgba(8, 47, 40, .42); background: transparent; }
.button-secondary:hover { color: var(--paper); background: var(--forest-deep); border-color: var(--forest-deep); }
.text-link {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: var(--forest-deep);
  font-size: 16px;
  font-weight: 760;
  text-decoration: none;
}
.text-link::after { content: "→"; transition: transform 160ms var(--ease-out); }
.text-link::before {
  position: absolute;
  right: 0;
  bottom: -3px;
  left: 0;
  height: 1px;
  content: "";
  background: currentColor;
  transform: scaleX(.24);
  transform-origin: left;
  transition: transform 180ms var(--ease-out);
}
.text-link:hover::before { transform: scaleX(1); }
.text-link:hover::after { transform: translateX(4px); }
.text-link-light { color: var(--paper); }

/* Header */
.site-header {
  --logo-zone-width: calc(max(var(--gutter), calc((100vw - var(--shell)) / 2)) + 296px);
  --logo-zone-cut: 24px;
  position: fixed;
  z-index: 100;
  isolation: isolate;
  top: 0;
  right: 0;
  left: 0;
  height: var(--header-height);
  color: var(--paper);
  transition: height 200ms var(--ease-out), background-color 200ms var(--ease-standard), box-shadow 200ms var(--ease-standard);
}
.site-header::before {
  position: absolute;
  z-index: 0;
  top: 0;
  bottom: 0;
  left: 0;
  width: var(--logo-zone-width);
  content: "";
  background: rgba(247, 241, 230, .99);
  clip-path: polygon(0 0, 100% 0, calc(100% - var(--logo-zone-cut)) 100%, 0 100%);
  transition: width 200ms var(--ease-out), clip-path 200ms var(--ease-out);
}
.site-header::after {
  position: absolute;
  z-index: 2;
  right: 0;
  bottom: 0;
  left: 0;
  height: 1px;
  content: "";
  background: rgba(255, 255, 255, .14);
  opacity: 0;
  transition: opacity 180ms var(--ease-standard);
}
.site-header.is-at-top:not(.utility-header) {
  background: linear-gradient(180deg, rgba(5, 37, 31, .98) 0%, rgba(5, 37, 31, .94) 72%, rgba(5, 37, 31, .88) 100%);
  box-shadow: 0 8px 24px rgba(5, 37, 31, .12);
}
.site-header.is-scrolled, .site-header.utility-header {
  height: var(--header-compact-height);
  background: var(--forest-deep);
  box-shadow: 0 6px 18px rgba(8, 47, 40, .12);
}
.site-header.is-scrolled::after, .site-header.utility-header::after { opacity: 1; }
.header-shell {
  position: relative;
  z-index: 1;
  width: min(var(--shell), calc(100% - var(--gutter) * 2));
  height: 100%;
  margin-inline: auto;
  display: flex;
  align-items: center;
  gap: clamp(18px, 2.2vw, 34px);
}
.site-header.is-scrolled .header-shell { height: 100%; }
.brand {
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  gap: 11px;
  color: var(--forest-deep);
  text-decoration: none;
}
.brand img { width: 84px; height: 62px; object-fit: contain; }
.brand-name { display: grid; line-height: 1.02; white-space: nowrap; }
.brand-name strong { font-size: 22px; font-weight: 760; letter-spacing: -.025em; }
.brand-name span { margin-top: 4px; font-size: 11.5px; font-weight: 720; letter-spacing: .065em; text-transform: uppercase; }
.brand-phrase { white-space: nowrap; }
.desktop-nav { margin-left: auto; display: flex; align-items: center; gap: clamp(17px, 1.8vw, 28px); }
.desktop-nav a {
  position: relative;
  padding: 28px 0 25px;
  font-size: 16px;
  font-weight: 680;
  text-decoration: none;
  text-shadow: 0 1px 8px rgba(5, 37, 31, .34);
  white-space: nowrap;
}
.desktop-nav a::after {
  position: absolute;
  right: 0;
  bottom: 19px;
  left: 0;
  height: 2px;
  content: "";
  background: var(--mustard);
  transform: scaleX(0);
  transform-origin: right;
  transition: transform 180ms var(--ease-out);
}
.desktop-nav a:hover::after, .desktop-nav a[aria-current="location"]::after { transform: scaleX(1); transform-origin: left; }
.button-header { flex: 0 0 auto; min-height: 44px; padding: 10px 18px; }
.menu-toggle {
  display: none;
  min-width: 56px;
  min-height: 48px;
  margin-left: auto;
  padding: 6px 0;
  border: 0;
  color: inherit;
  background: transparent;
  font-size: 16px;
  font-weight: 740;
}
.menu-toggle-lines { display: grid; width: 24px; gap: 6px; }
.menu-toggle-lines i { display: block; height: 2px; border-radius: 2px; background: currentColor; transition: transform 180ms var(--ease-out); }
.menu-toggle[aria-expanded="true"] .menu-toggle-lines i:first-child { transform: translateY(4px) rotate(45deg); }
.menu-toggle[aria-expanded="true"] .menu-toggle-lines i:last-child { transform: translateY(-4px) rotate(-45deg); }
.mobile-menu {
  position: fixed;
  z-index: 90;
  inset: 0;
  padding: calc(var(--header-height) + 28px) var(--gutter) 34px;
  overflow-y: auto;
  color: var(--paper);
  background: var(--forest-deep);
  opacity: 0;
  transform: translateX(18px);
  transition: opacity 190ms var(--ease-standard), transform 210ms var(--ease-out);
}
.mobile-menu.is-open { opacity: 1; transform: none; }
.mobile-menu nav { display: grid; }
.mobile-menu nav a {
  padding: 11px 0;
  border-bottom: 1px solid rgba(255,255,255,.16);
  font-size: clamp(1.85rem, 8.6vw, 2.7rem);
  font-weight: 650;
  letter-spacing: -.04em;
  line-height: 1.08;
  text-decoration: none;
}
.mobile-menu nav a[aria-current="location"] { color: var(--mustard-light); }
.mobile-menu-details { display: grid; gap: 5px; margin: 24px 0; color: rgba(255,255,255,.8); font-size: 15px; }
.mobile-menu-details a { width: max-content; color: var(--paper); font-weight: 720; }

/* Hero */
.hero { position: relative; color: var(--paper); background: var(--forest); }
.hero-grid { min-height: clamp(620px, 74svh, 710px); display: grid; grid-template-columns: 47% 53%; }
.hero-copy-panel { position: relative; z-index: 2; display: grid; align-items: center; background: var(--forest); }
.hero-copy-panel::after {
  position: absolute;
  z-index: -1;
  top: 0;
  right: -110px;
  bottom: 0;
  width: 110px;
  content: "";
  background: var(--forest);
  clip-path: polygon(0 0, 51% 0, 100% 100%, 0 100%);
}
.hero-copy { width: min(100%, 610px); margin-left: max(var(--gutter), calc((100vw - var(--shell)) / 2 + var(--gutter))); padding: calc(var(--header-height) + 34px) 34px 44px 0; }
.hero-location { margin-bottom: 18px; color: var(--mustard-light); font-size: 16px; font-weight: 740; }
.hero h1 { max-width: 600px; margin-bottom: 20px; color: var(--paper); font-size: clamp(3.35rem, 4.75vw, 4.9rem); }
.hero-intro { max-width: 480px; margin-bottom: 26px; color: rgba(255,255,255,.86); font-size: 19px; line-height: 1.5; }
.hero-actions { display: flex; flex-wrap: wrap; gap: 11px; }
.hero-photo { position: relative; min-width: 0; overflow: hidden; background: var(--teal); }
.hero-photo::after { position: absolute; inset: 0; content: ""; background: linear-gradient(180deg, rgba(7,37,31,.22), transparent 34%, rgba(7,37,31,.05)); pointer-events: none; }
.hero-photo picture { position: absolute; inset: var(--header-height) 0 0; display: block; }
.hero-photo img { width: 100%; height: 100%; }
.hero-photo img { object-fit: cover; object-position: 50% 48%; }
.hero-facts { color: var(--forest-deep); background: var(--paper); border-bottom: 1px solid var(--line); }
.hero-facts-grid { display: grid; grid-template-columns: .85fr 1.26fr 1.25fr .82fr; }
.hero-facts-grid > * {
  position: relative;
  min-height: 92px;
  display: grid;
  align-content: center;
  gap: 3px;
  padding: 14px clamp(18px, 2vw, 30px);
  text-decoration: none;
}
.hero-facts-grid > * + *::before { position: absolute; top: 18px; bottom: 18px; left: 0; width: 1px; content: ""; background: var(--line); }
.hero-facts-grid a { transition: background-color 160ms var(--ease-standard); }
.hero-facts-grid a:hover { background: rgba(225,173,61,.12); }
.hero-facts-grid a:focus-visible { z-index: 2; background: rgba(225,173,61,.12); outline-offset: -4px; }
.hero-facts span { color: var(--teal); font-size: 14px; font-weight: 760; }
.hero-facts strong { font-size: 16px; font-weight: 700; line-height: 1.38; }

/* Welcome */
.welcome { padding: 60px 0 62px; background: var(--ivory); }
.welcome-layout { display: grid; grid-template-columns: minmax(310px,.7fr) minmax(0,1.3fr); align-items: start; gap: clamp(44px,6vw,92px); }
.welcome-heading h2 { max-width: 580px; font-size: clamp(2.55rem,3.55vw,3.65rem); }
.welcome-lead { max-width: 570px; margin-bottom: 0; color: var(--teal); font-size: 20px; font-weight: 650; line-height: 1.48; }
.welcome-copy { width: min(100%, 75ch); display: grid; gap: 18px; }
.welcome-copy p { margin: 0; color: var(--muted); font-size: 18px; line-height: 1.62; }
.welcome-copy .welcome-closing { color: var(--forest-deep); font-weight: 720; }

/* Philosophy */
.philosophy { padding: 60px 0 58px; background: var(--paper); }
.philosophy-layout { display: grid; grid-template-columns: minmax(0,.9fr) minmax(0,1.1fr); align-items: center; gap: clamp(48px, 6vw, 92px); }
.philosophy-photo { min-width: 0; margin: 0; overflow: hidden; background: var(--flax); }
.philosophy-photo picture, .philosophy-photo img { width: 100%; height: 100%; }
.philosophy-photo img { aspect-ratio: .9; object-fit: cover; object-position: 50% 45%; }
.philosophy-copy { max-width: 680px; }
.philosophy-copy h2 { max-width: 650px; }
.philosophy-copy .section-intro { margin-bottom: 19px; color: var(--teal); font-weight: 680; }
.philosophy-text { border-top: 1px solid var(--line); }
.philosophy-text p { padding-top: 15px; color: var(--muted); font-size: 17px; line-height: 1.52; }

/* Why */
.why { padding: 66px 0 64px; color: var(--paper); background: var(--forest-deep); }
.why-layout { display: grid; grid-template-columns: .78fr 1.22fr; gap: clamp(58px, 7vw, 112px); }
.why h2 { max-width: 530px; color: var(--paper); }
.why-heading > p:last-child { max-width: 460px; color: rgba(255,255,255,.78); font-size: 18px; }
.why-list { display: grid; grid-template-columns: 1fr 1fr; gap: 0 38px; margin: 0; padding: 0; list-style: none; }
.why-list li { display: grid; grid-template-columns: 34px 1fr; gap: 12px; padding: 18px 0; border-top: 1px solid var(--line-light); }
.why-list li > span { color: var(--mustard-light); font-size: 14px; font-weight: 760; }
.why-list h3 { margin-bottom: 5px; color: var(--paper); font-size: 23px; letter-spacing: -.025em; }
.why-list p { margin: 0; color: rgba(255,255,255,.78); font-size: 16px; line-height: 1.48; }

/* Programme */
.programme { padding: 68px 0 70px; background: var(--ivory); }
.programme-layout { display: grid; grid-template-columns: minmax(230px,.57fr) minmax(0,1.43fr); gap: clamp(42px, 5vw, 76px); align-items: start; }
.programme-heading { padding-top: 2px; }
.programme-heading h2 { font-size: clamp(2.65rem, 3.45vw, 3.65rem); }
.programme-introduction { max-width: 390px; }
.programme-introduction p { color: var(--muted); font-size: 16px; line-height: 1.48; }
.programme-introduction p:first-child { color: var(--ink); font-size: 17px; font-weight: 650; }
.programme-explorer { min-width: 0; align-self: stretch; display: grid; grid-template-columns: minmax(180px,.34fr) minmax(0,1fr); align-items: stretch; background: var(--paper); box-shadow: 0 18px 44px rgba(8,47,40,.08); }
.programme-tabs { position: relative; display: grid; grid-template-rows: repeat(3,minmax(0,1fr)); align-content: stretch; background: var(--forest); }
.programme-tabs button {
  position: relative;
  z-index: 2;
  min-height: 132px;
  padding: 19px 18px 18px 25px;
  border: 0;
  border-bottom: 1px solid rgba(255,255,255,.15);
  color: rgba(255,255,255,.7);
  background: transparent;
  text-align: left;
  cursor: pointer;
  transition: color 180ms var(--ease-standard), background-color 180ms var(--ease-standard);
}
.programme-tabs button:last-child { border-bottom: 0; }
.programme-tabs button:hover { color: var(--paper); background: rgba(255,255,255,.05); }
.programme-tabs button[aria-selected="true"] { color: var(--paper); }
.programme-tabs strong { display: block; margin-bottom: 5px; font-size: 18px; line-height: 1.16; }
.programme-tabs span { display: block; font-size: 15px; line-height: 1.35; }
.programme-marker { position: absolute; z-index: 1; top: 0; left: 0; width: 4px; height: 33.333%; background: var(--mustard); transform: translateY(var(--marker-y, 0)); transition: transform 220ms var(--ease-out); }
.programme-panels { min-width: 0; height: 100%; }
.has-js .programme-panels { display: grid; }
.programme-panel { height: 100%; display: grid; grid-template-columns: minmax(0,1.08fr) minmax(270px,.92fr); }
.has-js .programme-panel { grid-area: 1 / 1; visibility: hidden; opacity: 0; pointer-events: none; }
.has-js .programme-panel.is-active { visibility: visible; opacity: 1; pointer-events: auto; }
.programme-panel figure, .programme-panel picture, .programme-panel img { width: 100%; height: 100%; }
.programme-panel figure { position: relative; min-height: 100%; margin: 0; overflow: hidden; background: var(--flax); }
.programme-panel picture { position: absolute; inset: 0; }
.programme-panel img { object-fit: cover; object-position: 50% 46%; }
#programme-nursery img { object-position: 50% 24%; }
#programme-preschool img { object-position: 50% 22%; }
#programme-school img { object-position: 50% 46%; }
.programme-panel.is-entering figure { animation: programme-photo-in 220ms var(--ease-out); }
.programme-panel.is-entering .programme-copy { animation: programme-copy-in 200ms var(--ease-out); }
.programme-copy { align-self: stretch; display: flex; flex-direction: column; justify-content: center; padding: 28px clamp(24px, 3vw, 38px); }
.programme-age { margin-bottom: 9px; color: var(--teal); font-size: 15px; font-weight: 760; }
.programme-copy h3 { margin-bottom: 13px; font-size: clamp(2rem, 2.65vw, 2.85rem); }
.programme-copy > p:not(.programme-age) { margin-bottom: 0; color: var(--muted); font-size: 17px; line-height: 1.5; }
.programme-copy .text-link { align-self: flex-start; margin-top: 18px; }
.school-readiness-feature { grid-column: 1 / -1; display: grid; grid-template-columns: minmax(280px,.72fr) minmax(0,1.28fr); align-items: stretch; gap: clamp(40px,5.5vw,78px); padding-top: 34px; border-top: 1px solid var(--line); }
.school-readiness-photo { min-height: 540px; margin: 0; overflow: hidden; background: var(--flax); }
.school-readiness-photo picture, .school-readiness-photo img { width: 100%; height: 100%; }
.school-readiness-photo img { object-fit: cover; object-position: 50% 43%; }
.school-readiness-content { align-self: center; max-width: 790px; padding-block: 12px; }
.school-readiness-feature h3 { max-width: 100%; margin-bottom: 24px; font-size: clamp(2.15rem,2.8vw,3rem); }
.school-readiness-copy { width: min(100%, 75ch); display: grid; gap: 17px; }
.school-readiness-copy p { margin: 0; color: #000000; font-size: 18px; line-height: 1.62; }

/* Environment */
.environment { padding: 58px 0 60px; overflow: hidden; background: var(--paper); }
.environment-heading { display: grid; grid-template-columns: 1.1fr .72fr; align-items: end; gap: 56px; margin-bottom: 28px; }
.environment-heading h2 { max-width: 800px; margin-bottom: 0; }
.environment-heading p { max-width: 500px; margin-bottom: 6px; color: var(--muted); }
.environment-images { position: relative; height: clamp(370px, 32vw, 450px); }
.environment-main { width: 82%; height: 100%; margin: 0; overflow: hidden; background: var(--flax); }
.environment-main picture, .environment-main img { width: 100%; height: 100%; }
.environment-main img { object-fit: cover; object-position: 50% 48%; }
.environment-detail { position: absolute; right: 0; bottom: -18px; width: 27%; height: 72%; margin: 0; overflow: hidden; border: 9px solid var(--paper); background: var(--flax); box-shadow: 0 16px 36px rgba(8,47,40,.14); }
.environment-detail picture, .environment-detail img { width: 100%; height: 100%; }
.environment-detail img { object-fit: cover; object-position: 50% 10%; transition: transform 180ms var(--ease-out); }
@media (hover: hover) and (pointer: fine) {
  .environment-detail:hover img { transform: scale(1.012); }
}

/* Community */
.community { padding: 54px 0 56px; background: var(--ivory); }
.community-layout { display: grid; grid-template-columns: minmax(300px,.82fr) minmax(0,1.18fr); gap: clamp(52px,7vw,112px); }
.community-heading h2 { max-width: 650px; margin-bottom: 0; font-size: clamp(2.45rem,3.35vw,3.45rem); }
.community-copy { max-width: 750px; display: grid; grid-template-columns: 1fr 1fr; gap: 0 36px; }
.community-copy p { margin: 0; padding: 14px 0; border-top: 1px solid var(--line); color: var(--muted); font-size: 17px; line-height: 1.5; }
.community-copy p:last-child { grid-column: 1 / -1; color: var(--forest-deep); font-weight: 650; }

/* Gallery */
.gallery { padding: 64px 0 68px; background: var(--paper); }
.gallery-heading { display: grid; grid-template-columns: minmax(0,1.18fr) minmax(280px,.82fr); align-items: end; gap: clamp(42px,6vw,92px); margin-bottom: 28px; }
.gallery-heading h2 { max-width: 820px; margin-bottom: 0; }
.gallery-heading > p { max-width: 520px; margin-bottom: 5px; color: var(--muted); font-size: 18px; line-height: 1.55; }
.gallery-controls { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 14px 24px; margin-bottom: 22px; padding-block: 13px; border-block: 1px solid var(--line); }
.gallery-filters { display: flex; flex-wrap: wrap; gap: 8px; }
.gallery-filters button {
  min-height: 44px;
  padding: 9px 16px;
  border: 1px solid var(--line);
  border-radius: 999px;
  color: var(--forest-deep);
  background: transparent;
  font-size: 15px;
  font-weight: 740;
  line-height: 1.2;
  cursor: pointer;
  transition: color 160ms var(--ease-standard), background-color 160ms var(--ease-standard), border-color 160ms var(--ease-standard);
}
.gallery-filters button:hover { border-color: rgba(8,47,40,.48); }
.gallery-filters button[aria-pressed="true"] { color: var(--paper); background: var(--forest-deep); border-color: var(--forest-deep); }
.gallery-status { margin: 0; color: var(--muted); font-size: 15px; line-height: 1.4; }
.gallery-grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); grid-auto-flow: dense; gap: 12px; }
.gallery-item { position: relative; min-width: 0; margin: 0; overflow: hidden; contain: layout paint style; background: var(--flax); }
.gallery-item picture, .gallery-item img { width: 100%; height: 100%; }
.gallery-item { aspect-ratio: 3 / 4; }
.gallery-item-landscape { grid-column: span 2; aspect-ratio: 3 / 2; }
.gallery-item img { object-fit: cover; transition: transform 220ms var(--ease-out); }
.gallery-item:hover img { transform: scale(1.012); }
.gallery-item figcaption { position: absolute; right: 9px; bottom: 9px; padding: 6px 9px; color: var(--paper); background: rgba(8,47,40,.94); font-size: 13px; font-weight: 720; line-height: 1.2; }
.gallery-more { display: flex; justify-content: center; padding-top: 24px; }
.gallery-more .button { min-width: 190px; cursor: pointer; }

/* Kai */
.kai { padding: 60px 0 62px; color: var(--paper); background: var(--teal); }
.kai-layout { display: grid; grid-template-columns: minmax(300px,.82fr) minmax(0,1.18fr); align-items: start; gap: clamp(52px, 7vw, 110px); }
.kai h2 { max-width: 620px; color: var(--paper); font-size: clamp(2.45rem, 3.45vw, 3.55rem); }
.kai-heading > p:not(.section-kicker) { max-width: 590px; margin-bottom: 13px; color: rgba(255,255,255,.84); font-size: 17px; line-height: 1.5; }
.kai-details { display: grid; grid-template-columns: 1fr 1fr; gap: 0 32px; }
.kai-details > div { padding: 14px 0 15px; border-top: 1px solid rgba(255,255,255,.24); }
.kai-details h3 { margin-bottom: 7px; color: var(--paper); font-size: 21px; letter-spacing: -.025em; }
.kai-details p { margin: 0; color: rgba(255,255,255,.86); font-size: 16px; line-height: 1.48; }
.kai-details > div:nth-child(3) { grid-column: 1 / -1; }
.kai-details .kai-closing { grid-column: 1 / -1; max-width: none; padding-top: 16px; border-top: 1px solid rgba(255,255,255,.24); color: var(--paper); font-size: 17px; font-weight: 650; }
.kai-details .text-link { grid-column: 1 / -1; justify-self: start; margin-top: 13px; }

/* Director */
.director { padding: 58px 0 60px; overflow: hidden; background: var(--ivory); }
.director-layout { position: relative; display: grid; grid-template-columns: minmax(0,1.12fr) minmax(340px,.88fr); align-items: center; gap: clamp(54px, 7vw, 112px); }
.director-copy { position: relative; z-index: 3; max-width: 700px; }
.director-greeting { margin: -4px 0 15px; color: var(--teal); font-size: 21px; font-weight: 740; }
.director-copy > p:not(.section-kicker):not(.director-greeting) { max-width: 690px; color: var(--ink); font-size: 17px; line-height: 1.52; }
.director-portrait { position: relative; z-index: 2; height: min(520px, 48vw); margin: 0; overflow: hidden; background: var(--flax); }
.director-portrait picture, .director-portrait img { width: 100%; height: 100%; }
.director-portrait img { object-fit: cover; object-position: 50% 48%; }

/* Genuine parent-book feedback. No autoplay and no invented ratings or identities. */
.testimonials { padding: 64px 0 66px; background: var(--paper); }
.testimonials-layout { display: grid; grid-template-columns: minmax(250px,.48fr) minmax(0,1.52fr); align-items: start; gap: clamp(38px,5vw,74px); }
.testimonials-intro { max-width: 430px; }
.testimonials-intro > p:not(.section-kicker) { color: var(--muted); font-size: 18px; line-height: 1.58; }
.testimonials-intro .text-link { margin-top: 4px; }
.testimonial-carousel { min-width: 0; }
.testimonial-carousel:focus-visible { outline-offset: 8px; }
.testimonial-slides { display: grid; min-height: 430px; }
.testimonial-slide { grid-area: 1 / 1; display: grid; grid-template-columns: minmax(0,1.1fr) minmax(0,.9fr); min-height: 430px; overflow: hidden; background: var(--forest-deep); }
.has-js .testimonial-slide { visibility: hidden; opacity: 0; transform: translateX(10px); pointer-events: none; transition: opacity 220ms var(--ease-standard), transform 220ms var(--ease-out); }
.has-js .testimonial-slide.is-active { visibility: visible; opacity: 1; transform: none; pointer-events: auto; }
.testimonial-handwriting { min-width: 0; min-height: 0; display: grid; place-items: stretch; margin: 0; overflow: hidden; padding: clamp(12px,1.5vw,20px); background: var(--ivory); }
.testimonial-handwriting picture, .testimonial-handwriting img { width: 100%; height: 100%; }
.testimonial-handwriting img { object-fit: contain; object-position: center; }
.testimonial-safe-crop { width: 100%; height: auto; aspect-ratio: 970 / 470; align-self: center; display: block; }
.testimonial-slide:first-child { grid-template-columns: minmax(0,1.28fr) minmax(280px,.72fr); }
.testimonial-quote { align-self: stretch; display: flex; flex-direction: column; justify-content: center; padding: clamp(30px,4vw,54px); color: var(--paper); }
.testimonial-quote blockquote { margin: 0 0 24px; }
.testimonial-quote blockquote p { margin: 0; color: var(--paper); font-size: clamp(1.5rem,2.25vw,2.15rem); font-weight: 620; letter-spacing: -.03em; line-height: 1.2; text-wrap: pretty; }
.testimonial-attribution { margin: 0; color: var(--mustard-light); font-size: 15px; font-weight: 760; }
.testimonial-controls { min-height: 58px; display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 14px; border-bottom: 1px solid var(--line); }
.testimonial-controls button { min-height: 48px; display: inline-flex; align-items: center; gap: 8px; padding: 8px 0; border: 0; color: var(--forest-deep); background: transparent; font-size: 15px; font-weight: 760; cursor: pointer; }
.testimonial-controls button:last-child { justify-self: end; }
.testimonial-controls button span[aria-hidden="true"] { font-size: 20px; transition: transform 160ms var(--ease-out); }
.testimonial-controls button:first-child:hover span[aria-hidden="true"] { transform: translateX(-3px); }
.testimonial-controls button:last-child:hover span[aria-hidden="true"] { transform: translateX(3px); }
.testimonial-count { color: var(--muted); font-size: 14px; font-variant-numeric: tabular-nums; font-weight: 700; letter-spacing: .08em; }

/* Google Maps Platform content is intentionally separated from Miller Nest testimonials. */
.google-reviews { padding: 64px 0 66px; background: var(--ivory); }
.google-reviews-layout { display: grid; gap: 32px; }
.google-reviews-intro { max-width: 760px; }
.google-reviews-intro > p:not(.section-kicker) { max-width: 660px; color: var(--muted); font-size: 18px; line-height: 1.58; }
.google-reviews-content { min-width: 0; padding-top: 18px; border-top: 1px solid var(--line); }
.google-reviews-source { min-height: 28px; display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 8px 20px; margin-bottom: 18px; }
.gmp-attribution { color: #5e5e5e; font-family: Roboto, var(--font-body), sans-serif; font-size: 15px; font-style: normal; font-weight: 400; letter-spacing: normal; line-height: 1.35; white-space: nowrap; }
.google-reviews-source p { margin: 0; color: var(--forest-deep); font-size: 15px; font-weight: 720; }
.google-reviews-status, .google-reviews-fallback { max-width: 720px; margin: 0; color: var(--muted); font-size: 17px; line-height: 1.55; }
.google-reviews-fallback { padding: 22px 0 4px; }
.google-reviews-fallback .text-link { margin-top: 8px; }
.google-review-grid { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); align-items: stretch; gap: 16px; }
.google-review-card { min-width: 0; display: flex; flex-direction: column; padding: clamp(22px,2.25vw,30px); border: 1px solid var(--line); background: var(--paper); }
.google-review-author { display: grid; grid-template-columns: 46px minmax(0,1fr); align-items: center; gap: 12px; margin-bottom: 18px; }
.google-review-avatar, .google-review-avatar-fallback { width: 46px; height: 46px; border-radius: 50%; background: var(--flax); }
.google-review-avatar { object-fit: cover; }
.google-review-avatar-fallback { display: grid; place-items: center; color: var(--forest-deep); font-size: 17px; font-weight: 760; }
.google-review-author-copy { min-width: 0; }
.google-review-author-name { display: block; width: fit-content; max-width: 100%; overflow: hidden; color: var(--forest-deep); font-size: 16px; font-weight: 760; text-overflow: ellipsis; white-space: nowrap; }
a.google-review-author-name { text-decoration-thickness: 1px; }
.google-review-date { display: block; margin-top: 2px; color: var(--muted); font-size: 14px; line-height: 1.35; }
.google-review-rating { margin-bottom: 15px; color: var(--mustard-dark); font-size: 16px; font-weight: 760; letter-spacing: .08em; line-height: 1; }
.google-review-text { flex: 1; margin: 0 0 22px; color: var(--ink); font-size: 17px; line-height: 1.55; overflow-wrap: anywhere; }
.google-review-translation { margin: -12px 0 16px; color: var(--muted); font-size: 14px; line-height: 1.4; }
.google-review-source-link { width: fit-content; color: var(--forest-deep); font-size: 15px; font-weight: 760; }
.google-review-controls { min-height: 54px; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 12px; border-bottom: 1px solid var(--line); }
.google-review-controls button { min-height: 48px; display: inline-flex; align-items: center; gap: 8px; padding: 8px 0; border: 0; color: var(--forest-deep); background: transparent; font-size: 15px; font-weight: 760; cursor: pointer; }
.google-review-controls button:last-child { justify-self: end; }
.google-review-controls button span[aria-hidden="true"] { font-size: 20px; transition: transform 160ms var(--ease-out); }
.google-review-controls button:first-child:hover span[aria-hidden="true"] { transform: translateX(-3px); }
.google-review-controls button:last-child:hover span[aria-hidden="true"] { transform: translateX(3px); }
.google-review-controls > span { color: var(--muted); font-size: 14px; font-variant-numeric: tabular-nums; font-weight: 700; letter-spacing: .08em; }

/* FAQ */
.faq { padding: 62px 0 58px; background: var(--paper); }
.faq-layout { display: grid; grid-template-columns: minmax(230px,.62fr) minmax(0,1.38fr); gap: clamp(58px, 8vw, 130px); }
.faq-heading { max-width: 410px; }
.faq-list { border-top: 1px solid var(--line); }
.faq-list details { border-bottom: 1px solid var(--line); }
.faq-list summary {
  position: relative;
  min-height: 61px;
  display: flex;
  align-items: center;
  padding: 14px 48px 14px 0;
  color: var(--forest-deep);
  font-size: 17px;
  font-weight: 740;
  line-height: 1.35;
  cursor: pointer;
  list-style: none;
}
.faq-list summary::-webkit-details-marker { display: none; }
.faq-list summary::before, .faq-list summary::after { position: absolute; top: 50%; right: 7px; width: 16px; height: 2px; content: ""; background: var(--teal); transition: transform 180ms var(--ease-out); }
.faq-list summary::before { transform: translateY(-50%); }
.faq-list summary::after { transform: translateY(-50%) rotate(90deg); }
.faq-list details[open] summary::after { transform: translateY(-50%) rotate(0); }
.faq-answer { display: grid; grid-template-rows: 0fr; transition: grid-template-rows 200ms var(--ease-out); }
.faq-answer > div { min-height: 0; overflow: hidden; }
.faq-list details[open] .faq-answer { grid-template-rows: 1fr; }
.faq-answer p { max-width: 760px; margin: 0; padding: 0 48px 16px 0; color: var(--muted); font-size: 16px; line-height: 1.5; }
.faq-answer a { color: var(--forest-deep); font-weight: 700; }

/* Contact */
.contact { padding: 58px 0 40px; color: var(--paper); background: var(--forest-deep); }
.contact-layout { display: grid; grid-template-columns: minmax(300px,.78fr) minmax(0,1.22fr); align-items: start; gap: clamp(50px, 7vw, 110px); }
.contact h2 { max-width: 580px; color: var(--paper); }
.contact-details { margin: 28px 0 22px; }
.contact-details > div { display: grid; grid-template-columns: 112px 1fr; gap: 14px; padding: 11px 0; border-top: 1px solid rgba(255,255,255,.16); }
.contact-details dt { color: var(--mustard-light); font-size: 15px; font-weight: 760; }
.contact-details dd { display: grid; gap: 5px; color: rgba(255,255,255,.87); font-size: 16px; line-height: 1.45; }
.contact-details a { width: fit-content; font-weight: 680; }
.contact-details dd > span { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px; }
.contact-details small { min-width: 47px; color: rgba(255,255,255,.72); font-size: 15px; font-weight: 650; }
.contact-links { display: flex; flex-wrap: wrap; gap: 7px 18px; }
.contact-links a { position: relative; color: var(--paper); font-size: 15px; font-weight: 700; text-decoration: none; }
.contact-links a::after { position: absolute; right: 0; bottom: -3px; left: 0; height: 1px; content: ""; background: var(--mustard); transform: scaleX(.25); transform-origin: left; transition: transform 180ms var(--ease-out); }
.contact-links a:hover::after { transform: scaleX(1); }
.contact-intro, .visit-form { min-width: 0; }
.visit-form { display: grid; gap: 12px; padding: clamp(25px, 2.7vw, 32px); color: var(--ink); background: var(--paper); }
.form-heading { display: flex; align-items: end; justify-content: space-between; gap: 20px; }
.form-heading h3 { margin-bottom: 0; font-size: 29px; }
.form-heading p { max-width: 270px; margin-bottom: 3px; color: var(--muted); font-size: 15px; line-height: 1.4; }
.form-fallback { padding: 10px 0 11px; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); color: var(--muted); font-size: 15px; line-height: 1.45; }
.form-fallback strong { color: var(--forest-deep); font-size: 15px; }
.form-fallback p { margin: 0; }
.form-fallback a { color: var(--forest-deep); font-weight: 720; white-space: nowrap; }
.form-honeypot { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.turnstile-slot { min-height: 65px; }
.visit-form[data-delivery-disabled] > .button[disabled] { cursor: not-allowed; opacity: .56; }
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.form-field { display: grid; align-content: start; gap: 5px; min-width: 0; }
.form-field label, .form-field legend { color: var(--forest-deep); font-size: 15px; font-weight: 760; }
.form-field input, .form-field select, .form-field textarea {
  width: 100%;
  min-height: 47px;
  padding: 10px 12px;
  border: 1px solid rgba(15,64,54,.3);
  border-radius: 2px;
  color: var(--ink);
  background: #fff;
  font-size: 17px;
  line-height: 1.35;
  transition: border-color 160ms var(--ease-standard), box-shadow 160ms var(--ease-standard), background-color 160ms var(--ease-standard);
}
.form-field textarea { min-height: 78px; resize: vertical; }
.form-field input:focus, .form-field select:focus, .form-field textarea:focus { border-color: var(--teal); outline: 0; box-shadow: 0 0 0 3px rgba(47,113,104,.16); }
.form-field [aria-invalid="true"], .form-consent [aria-invalid="true"], [data-contact-method][aria-invalid="true"] { border-color: var(--error); }
.field-note { color: var(--muted); font-size: 15px; line-height: 1.35; }
.field-error { min-height: 0; color: var(--error); font-size: 15px; font-weight: 650; line-height: 1.35; }
.field-error:empty { display: none; }
.contact-method { margin: 0; padding: 0; border: 0; }
.contact-method legend { margin-bottom: 8px; }
.choice-row { min-height: 47px; display: flex; align-items: center; gap: 16px; padding: 0 10px; border: 1px solid rgba(15,64,54,.3); background: #fff; }
.choice-row label { min-height: 44px; display: inline-flex; align-items: center; gap: 7px; font-weight: 600; }
.choice-row input { width: 18px; height: 18px; min-height: 0; margin: 0; padding: 0; accent-color: var(--teal); }
.form-consent label { display: grid; grid-template-columns: 19px 1fr; gap: 9px; align-items: start; color: var(--muted); font-size: 15px; line-height: 1.45; }
.form-consent input { width: 18px; height: 18px; margin: 2px 0 0; accent-color: var(--teal); }
.form-consent a { color: var(--forest-deep); font-weight: 700; }
.visit-form > .button { width: fit-content; min-width: 166px; }
.visit-form > .button[disabled] { cursor: wait; opacity: .65; }
.form-status { min-height: 22px; margin: -3px 0 0; color: var(--forest-deep); font-size: 15px; font-weight: 650; }

/* Closing CTA and footer */
.closing-cta { position: relative; overflow: hidden; padding: 50px 0; color: var(--forest-deep); background: var(--mustard); scroll-margin-top: var(--header-compact-height); }
.closing-layout { position: relative; min-height: 175px; display: grid; grid-template-columns: minmax(0,1fr) auto; align-items: center; gap: 44px; }
.closing-layout > div:first-child { position: relative; z-index: 2; max-width: 760px; }
.closing-cta h2 { margin-bottom: 10px; color: var(--forest-deep); }
.closing-cta p { max-width: 600px; margin-bottom: 0; }
.closing-actions { position: relative; z-index: 3; display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 10px; }
.site-footer { color: var(--ink); background: var(--paper); }
.footer-main { min-height: 160px; display: grid; grid-template-columns: 180px 1fr 1.1fr; align-items: center; gap: clamp(30px, 6vw, 94px); padding-top: 30px; padding-bottom: 28px; }
.footer-brand img { width: 118px; height: auto; }
.footer-contact { display: grid; gap: 4px; color: var(--muted); font-size: 15px; }
.footer-contact a { width: fit-content; color: var(--forest-deep); font-weight: 680; }
.footer-nav { display: grid; grid-template-columns: repeat(3,auto); justify-content: end; gap: 7px 24px; }
.footer-nav a { color: var(--forest-deep); font-size: 15px; font-weight: 680; text-decoration: none; }
.footer-nav a:hover { text-decoration: underline; }
.footer-lower { min-height: 58px; display: flex; align-items: center; justify-content: space-between; gap: 20px; padding-top: 14px; padding-bottom: 14px; border-top: 1px solid var(--line); color: var(--muted); font-size: 14px; }
.footer-lower p { margin: 0; }
.footer-lower a { color: var(--forest-deep); }
.utility-footer-links { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 22px; }
.utility-footer-links a { font-weight: 680; }
.mobile-visit-bar { display: none; }

/* Utility pages */
.utility-header { position: fixed; }
.utility-header-actions { margin-left: auto; display: flex; align-items: center; gap: 20px; }
.utility-header-actions .header-call { color: var(--paper); font-size: 16px; font-weight: 700; }
.utility-main, .error-page { min-height: calc(100svh - 218px); padding: calc(var(--header-height) + 68px) 0 78px; background: var(--ivory); }
.utility-layout { display: grid; grid-template-columns: minmax(240px,.55fr) minmax(0,1.45fr); gap: clamp(50px,8vw,130px); }
.utility-title { max-width: 430px; }
.utility-title h1, .utility-card h1 { font-size: clamp(2.8rem,5vw,4.9rem); }
.utility-title > p:last-child { color: var(--muted); }
.utility-content { max-width: 820px; }
.utility-content h2 { margin-top: 1.4em; font-size: 28px; }
.utility-content h2:first-child { margin-top: 0; }
.utility-content p { color: var(--muted); }
.utility-content a { color: var(--forest-deep); font-weight: 700; }
.utility-card { max-width: 840px; margin-inline: auto; padding: clamp(28px,5vw,60px); background: var(--paper); }
.utility-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 26px; }
.error-card { margin-top: 30px; }

@keyframes programme-photo-in { from { opacity: .7; transform: scale(1.015); } to { opacity: 1; transform: none; } }
@keyframes programme-copy-in { from { opacity: .55; transform: translateX(9px); } to { opacity: 1; transform: none; } }

@media (max-width: 1180px) {
  .desktop-nav { gap: 17px; }
  .programme-layout { grid-template-columns: minmax(210px,.5fr) minmax(0,1.5fr); gap: 38px; }
  .programme-explorer { grid-template-columns: 178px minmax(0,1fr); }
  .programme-tabs button { min-height: 126px; padding-left: 20px; }
  .programme-panel { grid-template-columns: 1fr minmax(250px,.82fr); }
}

@media (max-width: 1040px) {
  :root { --header-height: 78px; }
  .site-header { --logo-zone-width: calc(var(--gutter) + 296px); --logo-zone-cut: 21px; }
  .desktop-nav, .button-header { display: none; }
  .brand-name { display: grid; }
  .menu-toggle { display: inline-flex; align-items: center; justify-content: flex-end; gap: 9px; }
  .hero-grid { grid-template-columns: 45% 55%; }
  .hero-copy-panel::after { right: -62px; width: 82px; }
  .hero-copy { padding-right: 32px; }
  .hero h1 { font-size: clamp(3.1rem,5.8vw,4.1rem); }
  .philosophy-layout { gap: 48px; }
  .programme-layout { grid-template-columns: 1fr; gap: 28px; }
  .programme-heading { display: grid; grid-template-columns: minmax(270px,.75fr) minmax(0,1.25fr); align-items: start; gap: 12px 40px; }
  .programme-heading .section-kicker { grid-column: 1 / -1; margin-bottom: 0; }
  .programme-heading h2 { margin-bottom: 0; }
  .programme-introduction { max-width: 690px; }
  .programme-explorer { grid-template-columns: 220px minmax(0,1fr); }
  .programme-tabs button { min-height: 127px; }
  .director-layout { grid-template-columns: 1fr minmax(300px,.8fr); gap: 46px; }
  .director-portrait { height: 520px; }
  .testimonials-layout { grid-template-columns: 1fr; gap: 30px; }
  .testimonials-intro { max-width: 720px; }
  .gallery-grid { grid-template-columns: repeat(3,minmax(0,1fr)); }
  .contact-layout { gap: 46px; }
}

@media (max-width: 820px) {
  .hero-grid { min-height: 610px; grid-template-columns: 48% 52%; }
  .hero-copy { padding-top: calc(var(--header-height) + 24px); padding-bottom: 34px; }
  .hero h1 { font-size: clamp(2.75rem,6.1vw,3.45rem); }
  .hero-intro { font-size: 17px; }
  .hero-facts-grid { grid-template-columns: 1fr 1.2fr 1.25fr 1fr; }
  .hero-facts-grid > * { min-height: 88px; padding-inline: 14px; }
  .hero-facts strong { font-size: 15px; }
  .welcome-layout { grid-template-columns: 1fr; gap: 30px; }
  .welcome-heading { max-width: 720px; }
  .welcome-copy { width: min(100%, 72ch); }
  .philosophy { padding-block: 58px; }
  .philosophy-layout { grid-template-columns: .78fr 1.22fr; gap: 36px; }
  .philosophy-copy h2 { font-size: 42px; }
  .principle-list { grid-template-columns: 1fr; }
  .principle-list > div { padding-block: 10px; }
  .why-layout { grid-template-columns: 1fr; gap: 32px; }
  .why-heading { display: grid; grid-template-columns: 1.15fr .85fr; align-items: end; gap: 28px; }
  .why-heading .section-kicker { grid-column: 1 / -1; margin-bottom: -17px; }
  .why-heading h2 { margin-bottom: 0; }
  .why-heading > p:last-child { margin-bottom: 4px; }
  .programme-heading { grid-template-columns: .8fr 1.2fr; }
  .programme-explorer { grid-template-columns: 180px minmax(0,1fr); }
  .programme-tabs button { min-height: 125px; padding: 16px; }
  .programme-panel { grid-template-columns: 1.02fr .98fr; }
  .programme-copy { padding: 23px; }
  .school-readiness-feature { grid-template-columns: 1fr; gap: 28px; }
  .school-readiness-photo { min-height: 0; height: 390px; }
  .school-readiness-photo img { object-position: 50% 42%; }
  .school-readiness-content { max-width: 760px; padding-block: 0; }
  .environment-heading { gap: 35px; }
  .community-layout { grid-template-columns: .82fr 1.18fr; gap: 40px; }
  .community-copy { grid-template-columns: 1fr; }
  .community-copy p:last-child { grid-column: auto; }
  .gallery-heading { grid-template-columns: 1fr; gap: 18px; }
  .gallery-heading > p { max-width: 700px; }
  .kai-layout { gap: 40px; }
  .kai-details { grid-template-columns: 1fr; }
  .kai-details > div:nth-child(3), .kai-details .kai-closing, .kai-details .text-link { grid-column: auto; }
  .director-layout { grid-template-columns: 1fr .82fr; gap: 38px; }
  .director-portrait { height: 480px; }
  .testimonial-slide { grid-template-columns: minmax(0,1.04fr) minmax(0,.96fr); }
  .faq-layout { grid-template-columns: 230px 1fr; gap: 44px; }
  .contact-layout { grid-template-columns: 1fr; }
  .contact-intro { display: grid; grid-template-columns: .8fr 1.2fr; gap: 0 40px; }
  .contact-intro > .section-kicker, .contact-intro > h2 { grid-column: 1; }
  .contact-intro > .contact-details, .contact-intro > .contact-links { grid-column: 2; }
  .contact-intro > .contact-details { grid-row: 1 / span 3; margin: 0 0 18px; }
  .google-review-grid { display: grid; grid-template-columns: 1fr; }
  .has-js .google-review-card { grid-area: 1 / 1; visibility: hidden; opacity: 0; transform: translateX(10px); pointer-events: none; transition: opacity 200ms var(--ease-standard), transform 200ms var(--ease-out); }
  .has-js .google-review-card.is-active { visibility: visible; opacity: 1; transform: none; pointer-events: auto; }
  .google-review-controls:not([hidden]) { display: grid; }
  .closing-layout { grid-template-columns: 1fr; gap: 24px; }
  .closing-actions { justify-content: flex-start; }
  .footer-main { grid-template-columns: 135px 1fr; }
  .footer-nav { grid-column: 1 / -1; grid-template-columns: repeat(4,auto); justify-content: start; }
}

@media (max-width: 620px) {
  :root { --header-height: 74px; --header-compact-height: 66px; --gutter: 18px; }
  .site-header { --logo-zone-width: calc(var(--gutter) + 231px); --logo-zone-cut: 18px; }
  body { font-size: 17px; }
  h2 { font-size: clamp(2.25rem, 10.5vw, 3rem); }
  .section { scroll-margin-top: var(--header-compact-height); }
  .section-kicker { margin-bottom: 11px; font-size: 15px; }
  .brand img { width: 62px; height: 46px; }
  .brand-name strong { font-size: 17px; }
  .brand-name span { font-size: 9.5px; }
  .site-header.is-scrolled .header-shell { height: 100%; }
  .mobile-menu { padding-top: calc(var(--header-height) + 22px); }

  .hero-grid { min-height: calc(704px + var(--header-height)); display: grid; grid-template-columns: 1fr; grid-template-rows: calc(310px + var(--header-height)) minmax(394px, auto); }
  .hero-photo { grid-row: 1; }
  .hero-photo::after { background: linear-gradient(180deg, rgba(7,37,31,.48), transparent 55%, rgba(7,37,31,.08)); }
  .hero-photo img { object-position: 48% 46%; }
  .hero-copy-panel { grid-row: 2; align-items: center; }
  .hero-copy-panel::after { display: none; }
  .hero-copy { width: auto; margin: 0; padding: 28px var(--gutter) 30px; }
  .hero-location { margin-bottom: 11px; font-size: 15px; }
  .hero h1 { max-width: 520px; margin-bottom: 14px; font-size: clamp(2.45rem, 11.4vw, 3.15rem); line-height: .98; }
  .hero-intro { max-width: 510px; margin-bottom: 18px; font-size: 17px; line-height: 1.45; }
  .hero-actions .button { min-height: 48px; padding-inline: 19px; }
  .hero-facts-grid { width: 100%; grid-template-columns: 1fr 1fr; }
  .hero-facts-grid > * { min-height: 83px; padding: 12px 18px; }
  .hero-facts-grid > * + *::before { top: 13px; bottom: 13px; }
  .hero-facts-grid > *:nth-child(3)::before { display: none; }
  .hero-facts-grid > *:nth-child(n+3) { border-top: 1px solid var(--line); }
  .hero-facts span { font-size: 14px; }
  .hero-facts strong { font-size: 15px; }
  .welcome { padding: 38px 0 40px; }
  .welcome-layout { grid-template-columns: 1fr; gap: 22px; }
  .welcome-heading h2 { margin-bottom: 13px; font-size: clamp(2.25rem,10vw,2.9rem); }
  .welcome-lead { font-size: 18px; }
  .welcome-copy { gap: 15px; }
  .welcome-copy p { font-size: 17px; line-height: 1.58; }

  .philosophy { padding: 38px 0 38px; }
  .philosophy-layout { grid-template-columns: 1fr; gap: 28px; }
  .philosophy-copy { grid-row: 1; }
  .philosophy-photo { grid-row: 2; height: 280px; }
  .philosophy-photo img { aspect-ratio: auto; object-position: 50% 42%; }
  .philosophy-copy h2 { font-size: clamp(2.3rem,10.7vw,3rem); }
  .philosophy-copy .section-intro { margin-bottom: 15px; font-size: 18px; }
  .philosophy-text p { padding-top: 12px; font-size: 17px; }

  .why { padding: 38px 0 36px; }
  .why-layout { gap: 24px; }
  .why-heading { display: block; }
  .why-heading .section-kicker { margin-bottom: 11px; }
  .why-heading h2 { margin-bottom: 14px; }
  .why-heading > p:last-child { font-size: 17px; }
  .why-list { grid-template-columns: 1fr 1fr; gap: 0 18px; }
  .why-list li { grid-template-columns: 25px 1fr; gap: 7px; padding: 13px 0; }
  .why-list li > span { font-size: 13px; }
  .why-list h3 { font-size: 19px; }
  .why-list p { font-size: 15px; line-height: 1.4; }

  .programme { padding: 38px 0 40px; }
  .programme-layout { gap: 21px; }
  .programme-heading { display: block; }
  .programme-heading h2 { margin-bottom: 13px; font-size: clamp(2.25rem,10vw,2.9rem); }
  .programme-introduction { max-width: none; }
  .programme-introduction p, .programme-introduction p:first-child { font-size: 17px; }
  .programme-explorer { display: block; box-shadow: none; background: transparent; }
  .programme-tabs { display: grid; grid-template-columns: .82fr 1.3fr 1fr; grid-template-rows: 1fr; overflow: visible; background: transparent; border-bottom: 1px solid var(--line); }
  .programme-tabs button { min-width: 0; min-height: 62px; padding: 8px 5px; border: 0; color: var(--muted); background: transparent; text-align: center; }
  .programme-tabs button[aria-selected="true"] { color: var(--forest-deep); }
  .programme-tabs strong { margin: 0; font-size: 16px; line-height: 1.08; }
  .programme-tabs button span { display: none; }
  .programme-marker { top: auto; bottom: -1px; width: var(--marker-width, 80px); height: 3px; transform: translateX(var(--marker-x, 0)); }
  .programme-panels { height: auto; min-height: 540px; }
  .programme-panel { height: 100%; display: block; }
  .programme-panel figure { height: 280px; min-height: 0; }
  .programme-panel img { object-position: 50% 43%; }
  #programme-nursery img { object-position: 50% 24%; }
  #programme-preschool img { object-position: 50% 22%; }
  #programme-school img { object-position: 50% 0; }
  .programme-copy { justify-content: flex-start; padding: 22px 0 0; }
  .programme-copy h3 { margin-bottom: 9px; font-size: 31px; }
  .programme-copy > p:not(.programme-age) { font-size: 17px; }
  .school-readiness-feature { grid-template-columns: 1fr; gap: 18px; padding-top: 23px; }
  .school-readiness-photo { height: 280px; }
  .school-readiness-feature h3 { font-size: 29px; }
  .school-readiness-copy { gap: 14px; }
  .school-readiness-copy p { font-size: 17px; line-height: 1.58; }
  .programme-copy .text-link { margin-top: 12px; }

  .environment { padding: 36px 0 42px; }
  .environment-heading { display: block; margin-bottom: 20px; }
  .environment-heading h2 { margin-bottom: 13px; }
  .environment-heading p { font-size: 17px; }
  .environment-images { height: 292px; }
  .environment-main { width: 91%; }
  .environment-detail { right: -4px; bottom: -10px; width: 39%; height: 58%; border-width: 6px; }

  .community { padding: 38px 0 40px; }
  .community-layout { grid-template-columns: 1fr; gap: 22px; }
  .community-heading h2 { font-size: clamp(2.2rem,9.8vw,2.8rem); }
  .community-copy p { padding: 12px 0; font-size: 17px; }

  .gallery { padding: 40px 0 44px; }
  .gallery-heading { margin-bottom: 20px; }
  .gallery-heading > p { font-size: 17px; }
  .gallery-controls { align-items: flex-start; margin-bottom: 16px; padding-block: 11px; }
  .gallery-filters { width: 100%; padding: 3px; }
  .gallery-filters button { flex: 0 0 auto; }
  .gallery-grid { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 8px; }
  .gallery-item { grid-column: auto; aspect-ratio: 3 / 4; }
  .gallery-item-landscape { grid-column: 1 / -1; aspect-ratio: 3 / 2; }
  .gallery-item figcaption { right: 6px; bottom: 6px; max-width: calc(100% - 12px); padding: 5px 7px; font-size: 12px; }
  .gallery-more { padding-top: 18px; }

  .kai { padding: 38px 0 40px; }
  .kai-layout { grid-template-columns: 1fr; gap: 24px; }
  .kai h2 { font-size: clamp(2rem,9.4vw,2.55rem); }
  .kai-heading > p:not(.section-kicker) { margin-bottom: 11px; font-size: 17px; }
  .kai-details { grid-template-columns: 1fr; }
  .kai-details > div { padding: 12px 0; }
  .kai-details h3 { font-size: 20px; }
  .kai-details p { font-size: 16px; }
  .kai-details .kai-closing { grid-column: auto; font-size: 17px; }
  .kai-details .text-link { grid-column: auto; }

  .director { padding: 38px 0 40px; }
  .director-layout { grid-template-columns: 1fr; gap: 28px; }
  .director-copy h2 { margin-bottom: 11px; }
  .director-greeting { margin-bottom: 12px; font-size: 19px; }
  .director-copy > p:not(.section-kicker):not(.director-greeting) { font-size: 17px; line-height: 1.5; }
  .director-portrait { height: 340px; }

  .testimonials { padding: 40px 0 42px; }
  .testimonials-layout { gap: 24px; }
  .testimonials-intro > p:not(.section-kicker) { font-size: 17px; }
  .testimonial-slides, .testimonial-slide { min-height: 0; }
  .testimonial-slide { grid-template-columns: 1fr; grid-template-rows: 266px minmax(250px,auto); }
  .testimonial-slide:first-child { grid-template-columns: 1fr; }
  .testimonial-handwriting { padding: 14px; }
  .testimonial-quote { padding: 28px 22px 30px; }
  .testimonial-quote blockquote { margin-bottom: 18px; }
  .testimonial-quote blockquote p { font-size: clamp(1.38rem,6.5vw,1.7rem); line-height: 1.22; }
  .testimonial-controls { gap: 8px; }
  .testimonial-controls button { font-size: 15px; }

  .google-reviews { padding: 42px 0 44px; }
  .google-reviews-layout { gap: 24px; }
  .google-reviews-intro > p:not(.section-kicker) { font-size: 17px; }
  .google-reviews-content { padding-top: 14px; }
  .google-reviews-source { margin-bottom: 14px; }
  .google-review-card { min-height: 340px; padding: 22px 20px 24px; }
  .google-review-text { font-size: 17px; }
  .google-reviews-notice p { font-size: 15px; }

  .faq { padding: 43px 0 40px; }
  .faq-layout { grid-template-columns: 1fr; gap: 20px; }
  .faq-heading h2 { margin-bottom: 0; }
  .faq-list summary { min-height: 57px; padding-right: 38px; font-size: 16px; }
  .faq-answer p { padding-right: 34px; font-size: 15px; }

  .contact { padding: 38px 0 30px; }
  .contact-layout { grid-template-columns: 1fr; gap: 30px; }
  .contact-intro { display: block; }
  .contact-details { margin: 22px 0 18px; }
  .contact-details > div { grid-template-columns: 100px minmax(0,1fr); gap: 10px; padding: 8px 0; }
  .contact-details dt { font-size: 15px; }
  .contact-details dd { font-size: 15px; }
  .contact-links { gap: 7px 16px; }
  .visit-form { gap: 11px; padding: 21px 18px; }
  .form-heading { display: block; }
  .form-heading h3 { margin-bottom: 5px; }
  .form-fallback { padding-block: 9px; }
  .form-row { grid-template-columns: 1fr; gap: 11px; }
  .form-field label, .form-field legend { font-size: 15px; }
  .form-field input, .form-field select, .form-field textarea { font-size: 16px; }
  .field-note { font-size: 15px; }
  .field-error, .form-consent label, .form-status { font-size: 15px; }
  .contact-details a, .contact-details dd, .form-consent span { overflow-wrap: anywhere; }

  .closing-cta { padding: 40px 0 42px; }
  .closing-layout { min-height: 0; gap: 20px; }
  .closing-cta h2 { font-size: clamp(2.25rem,10vw,2.85rem); }
  .closing-cta p { font-size: 17px; }
  .closing-actions { gap: 8px; }
  .closing-actions .button { min-height: 48px; padding-inline: 18px; }
  .footer-main { min-height: 0; grid-template-columns: 90px 1fr; align-items: start; gap: 22px; padding-top: 24px; padding-bottom: 20px; }
  .footer-brand img { width: 82px; }
  .footer-contact { font-size: 15px; }
  .footer-nav { grid-column: 1 / -1; grid-template-columns: repeat(2,minmax(0,1fr)); justify-content: stretch; gap: 7px 18px; }
  .footer-nav a { font-size: 15px; }
  .footer-lower { min-height: 52px; font-size: 15px; }
  .utility-footer-links { gap: 7px 16px; }
  .has-mobile-visit-bar { padding-bottom: calc(70px + env(safe-area-inset-bottom, 0px)); }
  .mobile-visit-bar {
    position: fixed;
    z-index: 80;
    right: 0;
    bottom: 0;
    left: 0;
    min-height: calc(70px + env(safe-area-inset-bottom, 0px));
    display: grid;
    grid-template-columns: .72fr 1.28fr;
    align-items: center;
    gap: 10px;
    padding: 9px 14px calc(9px + env(safe-area-inset-bottom, 0px));
    color: var(--paper);
    background: rgba(8,47,40,.97);
    box-shadow: 0 -7px 22px rgba(8,47,40,.18);
    transition: transform 190ms var(--ease-out);
  }
  .mobile-visit-bar.is-hidden { transform: translateY(110%); }
  .mobile-visit-bar > a:first-child { min-height: 48px; display: grid; place-items: center; font-size: 16px; font-weight: 740; }
  .mobile-visit-bar .button { min-height: 48px; padding: 10px 16px; }

  .utility-header .brand-name { display: grid; }
  .utility-header-actions { display: none; }
  .utility-header-actions .header-call { display: none; }
  .utility-main, .error-page { min-height: calc(100svh - 180px); padding: calc(var(--header-height) + 42px) 0 48px; }
  .utility-layout { grid-template-columns: 1fr; gap: 30px; }
  .utility-card { padding: 26px 20px; }
  .utility-title h1, .utility-card h1 { font-size: 42px; }
}

@media (max-width: 370px) {
  .site-header { --logo-zone-width: calc(var(--gutter) + 202px); --logo-zone-cut: 16px; }
  .brand { gap: 7px; }
  .brand img { width: 54px; height: 40px; }
  .brand-name strong { font-size: 15.5px; }
  .brand-name span { margin-top: 3px; font-size: 8.5px; }
  .header-shell { gap: 12px; }
  .hero-grid { grid-template-rows: calc(286px + var(--header-height)) minmax(420px, auto); min-height: calc(706px + var(--header-height)); }
  .hero h1 { font-size: 38px; }
  .hero-intro { font-size: 16px; }
  .hero-actions { gap: 8px; }
  .hero-actions .button { padding-inline: 16px; }
  .hero-facts-grid > * { padding-inline: 14px; }
  .why-list li { grid-template-columns: 24px 1fr; }
  .programme-panel figure { height: 260px; }
  .programme-panels { min-height: 620px; }
  .environment-images { height: 270px; }
  .director-portrait { height: 320px; }
  .contact-details > div { grid-template-columns: 88px 1fr; }
  .contact-details > div:nth-child(3) { grid-template-columns: 1fr; gap: 4px; }
  .turnstile-slot { min-height: 140px; }
  .footer-main { grid-template-columns: 78px 1fr; gap: 17px; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; transition-duration: .01ms !important; }
}

/* v27: preserve complete heads when the split hero becomes too narrow. */
@media (min-width: 621px) {
  .hero-photo img { object-position: 50% 0; }
}
@media (min-width: 621px) and (max-width: 1366px) {
  .hero-grid { min-height: 0; grid-template-columns: 1fr; grid-template-rows: calc(var(--header-height) + 60vw) auto; }
  .hero-photo { grid-row: 1; }
  .hero-copy-panel { grid-row: 2; }
  .hero-copy-panel::after { display: none; }
  .hero-copy { width: min(760px, calc(100% - var(--gutter) * 2)); margin-inline: auto; padding: 36px 0 40px; }
  .hero h1, .hero-intro { max-width: 680px; }
}

/* Inline brand spans must remain in normal text flow inside FAQ labels. */
.faq-list summary { display: block; padding-block: 19px; }

@media (max-width: 620px) {
  .hero-grid { min-height: 0; grid-template-rows: calc(var(--header-height) + 75vw) auto; }
  .hero-photo img { object-position: 50% 0; }
}

@media (min-width: 621px) and (max-width: 820px) {
  .school-readiness-photo { width: min(100%, 420px); height: auto; aspect-ratio: 3 / 4; margin-inline: auto; }
}

@media (min-width: 1367px) and (max-width: 1600px) {
  .hero-photo img { object-position: 100% 0; }
  .hero-copy-panel::after { right: -30px; width: 30px; }
}

/* Astra v28: readable hierarchy, calmer controls and efficient rendering. */
h1, h2, h3 { font-weight: 600; letter-spacing: -.035em; line-height: 1.08; }
.hero h1 { line-height: 1.04; }
.section-kicker, .eyebrow { font-weight: 700; letter-spacing: .015em; }
.school-readiness-copy { max-width: 66ch; }
.programme-introduction p { line-height: 1.58; }
.kai-details p, .why-list p { line-height: 1.55; }
.why-list h3, .kai-details h3 { line-height: 1.2; }
.button, .gallery-filters button { font-weight: 700; }
.site-header, .site-header::before { transition: background-color 160ms ease, box-shadow 160ms ease; }
.gallery-item img, .environment-detail img { transition: none; }
.gallery-item:hover img, .environment-detail:hover img { transform: none; }
.programme-panel.is-entering figure, .programme-panel.is-entering .programme-copy { animation: none; }
.has-js .testimonial-slide, .has-js .google-review-card { transform: none; transition: opacity 140ms ease; }
.button:focus-visible::after, .text-link:focus-visible::after { transform: translateX(4px); }
.text-link:focus-visible::before, .contact-links a:focus-visible::after,
.desktop-nav a:focus-visible::after { transform: scaleX(1); }
.gallery-filters button:focus-visible { border-color: var(--forest); }
.programme-tabs button:focus-visible { outline-offset: -5px; background: rgba(255,255,255,.08); }
.faq-list summary:hover, .faq-list summary:focus-visible { color: var(--teal); }
.closing-cta :focus-visible { outline-color: var(--forest-deep); }
.visit-form input:focus-visible, .visit-form select:focus-visible, .visit-form textarea:focus-visible { outline: 2px solid var(--forest); outline-offset: 2px; }
@media (min-width: 1041px) {
  .programme-layout { grid-template-columns: 1fr; gap: 40px; }
  .programme-heading { display: grid; grid-template-columns: .8fr 1.2fr; gap: 12px 64px; align-items: start; }
  .programme-heading .section-kicker { grid-column: 1 / -1; margin-bottom: 0; }
  .programme-heading h2 { max-width: 12ch; margin-bottom: 0; }
  .programme-introduction { max-width: 68ch; }
  .programme-introduction p { font-size: 17px; }
  .programme-explorer { grid-template-columns: 230px minmax(0,1fr); min-height: 510px; box-shadow: 0 8px 24px rgba(8,47,40,.05); }
  .programme-panel { grid-template-columns: minmax(0,1fr) minmax(0,1fr); }
  .programme-copy { padding: 36px 44px; }
  #programme-school img { object-position: 50% 0; }
}
@media (max-width: 620px) {
  .hero h1 { line-height: 1.04; }
  .why-list { grid-template-columns: 1fr; }
  .why-list li { grid-template-columns: 28px 1fr; gap: 12px; padding-block: 18px; }
  .why-list p { font-size: 16px; }
  .gallery-filters { gap: 8px 6px; padding-inline: 0; }
  .gallery-filters button { padding-inline: 12px; font-size: 14px; }
  .testimonial-slide { grid-template-rows: 210px minmax(220px,auto); }
  .testimonial-quote { padding: 24px 22px; }
  .footer-lower { gap: 22px; }
  .footer-lower > a { flex-shrink: 0; white-space: nowrap; }
}

/* v29: section names lead; supporting approved lines remain secondary. */
.section-title, .programme-heading h2.section-title {
  max-width: none; margin: 0 0 18px; font-size: clamp(2rem,3.2vw,3.25rem); line-height: 1.12; letter-spacing: -.035em;
}
.section-deck { margin: 0 0 24px; color: var(--forest); font-size: clamp(1.35rem,2vw,1.8rem); line-height: 1.25; font-weight: 600; letter-spacing: -.025em; text-wrap: balance; }
.welcome-copy > p:not(.welcome-closing), .philosophy-text p { color: #000; }
.why .section-title, .kai .section-title { color: var(--mustard-light); }
.why .section-deck, .kai .kai-heading > .section-deck { color: var(--paper); font-size: clamp(1.35rem,2vw,1.8rem); line-height: 1.25; }
.director .director-copy > .section-deck { color: var(--forest); font-size: clamp(1.6rem,2.3vw,2.2rem); line-height: 1.2; font-weight: 600; }
.google-reviews-intro > .section-deck { color: var(--forest); font-size: clamp(1.35rem,2vw,1.8rem); line-height: 1.25; }
.school-readiness-content > .section-title { font-size: clamp(1.9rem,2.6vw,2.75rem); }
.school-readiness-content > .section-deck { font-size: 1.4rem; }
.programme-heading .programme-title-group { min-width: 0; }
.environment { padding-block: clamp(44px,5vw,76px); }
.environment-heading { align-items: start; grid-template-columns: 1.15fr .85fr; gap: 48px; margin-bottom: 32px; }
.environment-heading h2 { font-size: clamp(2rem,3.2vw,3.25rem); line-height: 1.12; }
.environment-heading p { padding-top: 5px; color: var(--ink); }
.environment-images { display: grid; grid-template-columns: 2.28fr 1fr; gap: 24px; align-items: start; height: auto; }
.environment-main, .environment-detail { position: static; width: 100%; height: auto; margin: 0; border: 0; box-shadow: none; }
.environment-main picture, .environment-main img, .environment-detail picture, .environment-detail img { height: auto; width: 100%; }
.environment-main img { aspect-ratio: 1600/933; }
.environment-detail img { aspect-ratio: 3/4; }
.gallery-hint { color: var(--muted); font-size: 15px; margin-bottom: 14px; }
.gallery-open { display: block; width: 100%; height: 100%; padding: 0; border: 0; cursor: zoom-in; background: transparent; }
.gallery-open:focus-visible { outline: 4px solid var(--mustard); outline-offset: -5px; }
.gallery-item figcaption { pointer-events: none; }
.gallery-open::after { content: '↗'; position: absolute; top: 10px; right: 10px; display: grid; place-items: center; width: 32px; height: 32px; border-radius: 50%; background: var(--paper); color: var(--forest); font-size: 20px; opacity: 0; }
.gallery-open:hover::after, .gallery-open:focus-visible::after { opacity: 1; }
.gallery-dialog { width: min(1100px,calc(100% - 32px)); max-height: calc(100dvh - 32px); padding: 20px; border: 0; border-radius: 8px; background: var(--paper); color: var(--ink); overflow: auto; }
.gallery-dialog::backdrop { background: rgba(4,24,20,.9); }
body.gallery-opened { overflow: hidden; }
.gallery-dialog-toolbar, .gallery-dialog-controls { display: flex; justify-content: space-between; align-items: center; gap: 16px; }
.gallery-dialog-toolbar p { margin: 0; font-size: 15px; }
.gallery-dialog button { min-height: 44px; padding: 8px 14px; border: 1px solid var(--line); border-radius: 4px; background: var(--paper); cursor: pointer; font-size: 16px; font-weight: 600; }
.gallery-dialog button:hover { background: var(--ivory); }
.gallery-dialog-toolbar button { flex-shrink: 0; white-space: nowrap; }
.gallery-dialog button:focus-visible { outline-color: var(--forest); }
.gallery-dialog figure { margin: 16px 0; }
.gallery-dialog figure img { width: 100%; height: min(65dvh,760px); object-fit: contain; background: var(--ivory); }
.gallery-dialog figcaption { margin-top: 12px; line-height: 1.4; font-size: 16px; }
@media (min-width:621px) and (max-width:1040px) {
  .why-heading { display: block; }
}
@media (max-width:620px) {
  .section-title, .programme-heading h2.section-title { margin-bottom: 14px; font-size: 2rem; }
  .section-deck { margin-bottom: 20px; }
  .environment-heading { display: block; }
  .environment-images { gap: 12px; }
  .environment-main { grid-column: 1/-1; }
  .environment-detail { grid-column: 1/-1; width: min(250px,75%); justify-self: end; }
  .gallery-dialog { width: calc(100% - 16px); padding: 12px; max-height: calc(100dvh - 16px); }
  .gallery-dialog figure img { height: 57dvh; }
  .gallery-open::after { opacity: 1; width: 26px; height: 26px; font-size: 17px; top: 7px; right: 7px; }
}

/* Keep named headings separated from their supporting line at every breakpoint. */
.section h2.section-title { margin-bottom: 18px; }
.gallery-dialog figure img.is-loading { opacity: 0; }
@media (max-width:620px) {
  .section h2.section-title { margin-bottom: 14px; }
  .programme-title-group { margin-bottom: 24px; }
}

/* Tablet Programme: give the photograph and description two usable columns. */
@media (min-width:621px) and (max-width:1040px) {
  .programme-heading { display: block; }
  .programme-title-group { margin-bottom: 24px; }
  .programme-introduction { max-width: 70ch; }
  .programme-explorer { grid-template-columns: 1fr; }
  .programme-tabs { grid-template-columns: repeat(3,minmax(0,1fr)); grid-template-rows: 1fr; }
  .programme-tabs button { min-height: 95px; padding: 18px; border-bottom: 0; border-right: 1px solid var(--line-light); }
  .programme-marker { top: auto; bottom: 0; width: var(--marker-width,33.333%); height: 3px; transform: translateX(var(--marker-x,0)); }
  .programme-panels { min-height: 430px; }
  .programme-panel { grid-template-columns: 1fr 1fr; }
  .programme-copy { padding: 30px; }
}

.visit-form { grid-template-columns: minmax(0,1fr); }
.visit-form > *, .form-field input, .form-field select, .form-field textarea, .turnstile-slot { min-width: 0; max-width: 100%; }
.turnstile-slot[data-size="compact"] { min-height: 140px; }
.director .director-copy > p.section-deck { font-size: clamp(1.6rem,2.3vw,2.2rem); line-height: 1.2; font-weight: 600; }
.google-reviews-intro > p.section-deck { font-size: clamp(1.35rem,2vw,1.8rem); line-height: 1.25; }

/* Original site-wide tūī: fixed decoration adds no space or layout shift. */
.tui-flight { position: fixed; inset: 0; z-index: 105; pointer-events: none; overflow: hidden; }
.tui-flight-track, .tui-trail { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }
.tui-trail path { fill: none; stroke: var(--teal); stroke-width: 1.5; stroke-dasharray: 3 7; stroke-linecap: round; opacity: .5; }
.tui-flying-bird { position: absolute; top: 0; left: 0; width: 44px; height: 36px; max-width: none; }
.gallery-opened .tui-flight, .menu-open .tui-flight { visibility: hidden; }
.google-reviews-fallback { padding: 18px 22px; background: var(--paper); border-left: 3px solid var(--mustard); color: var(--ink); }
.google-reviews-fallback p { margin: 0; }
.gallery-dialog { width: min(1100px,calc(100vw - 24px),calc((100dvh - 160px) * var(--gallery-ratio, .75) + 40px)); }
.gallery-dialog figure { margin: 14px 0; }
.gallery-dialog figure img { display: block; width: 100%; height: auto; max-height: calc(100dvh - 160px); background: transparent; }
@media (min-width:821px) {
  .google-review-grid.has-many-reviews { grid-template-columns: repeat(2,minmax(0,1fr)); }
}
@media (max-width:1040px) {
  .tui-flying-bird { width: 28px; height: 23px; }
}
@media (max-width:620px) {
  .gallery-dialog { padding: 12px; }
}

/* The tiny resting hover affects artwork only, never document geometry. */
.tui-flying-bird { transform-origin: center; }
.tui-flying-bird.is-resting .tui-artwork { animation: tui-rest 4.8s ease-in-out infinite; }
@keyframes tui-rest { 0%,100% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-2px) rotate(1deg); } }
@media (max-width:1040px), (prefers-reduced-motion:reduce) { .tui-flying-bird.is-resting .tui-artwork { animation:none; } }

/* Owner-pinned Google cards; the aggregate above remains live Places data. */
.google-review-grid, .google-review-grid.has-many-reviews { display:grid; grid-template-columns:none; grid-auto-flow:column; grid-auto-columns:calc((100% - 32px)/3); gap:16px; overflow-x:auto; scroll-snap-type:x mandatory; scrollbar-width:none; padding:4px 0 8px; }
.google-review-grid::-webkit-scrollbar { display:none; }
.google-review-grid .google-review-card { grid-area:auto; position:relative; visibility:visible; opacity:1; pointer-events:auto; height:410px; padding:24px; scroll-snap-align:start; border-radius:10px; }
.google-review-author-copy { display:flex; flex-wrap:wrap; align-items:center; gap:6px; }
.google-review-author-name { white-space:normal; line-height:1.35; }
.google-review-grid .google-review-text { display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:6; overflow:hidden; flex:none; height:158px; margin-bottom:10px; font-size:16px; line-height:1.65; white-space:pre-line; }
.google-review-more { align-self:flex-start; padding:4px 0; min-height:32px; border:0; background:none; color:var(--forest-deep); font:700 14px/1.5 var(--font-body); text-decoration:underline; text-underline-offset:4px; cursor:pointer; }
.google-review-source-link { margin-top:auto; font-size:14px; font-weight:500; }
.google-review-controls:not([hidden]) { display:grid; margin-top:8px; }
.google-review-controls button:disabled { opacity:.35; cursor:default; }
.review-dialog { width:min(640px,calc(100vw - 32px)); max-height:calc(100dvh - 40px); padding:28px; border:1px solid var(--line); border-radius:14px; color:var(--ink); background:var(--paper); overscroll-behavior:contain; }
.review-dialog::backdrop { background:rgb(12 35 29 / .65); }
.review-dialog-toolbar { display:flex; justify-content:space-between; align-items:center; gap:20px; margin-bottom:24px; }
.review-dialog-toolbar button { border:1px solid var(--line); padding:10px 14px; border-radius:6px; background:var(--cream); color:var(--forest-deep); font:inherit; cursor:pointer; }
.review-dialog h2 { font-size:30px; line-height:1.2; margin:0 0 16px; }
.full-review-text { white-space:pre-wrap; font-size:17px; line-height:1.7; margin:20px 0 24px; }
.review-opened { overflow:hidden; }
.review-opened .tui-flight { visibility:hidden; }
@media(max-width:1040px) { .google-review-grid,.google-review-grid.has-many-reviews { grid-auto-columns:calc((100% - 16px)/2); } }
@media(max-width:620px) { .google-review-grid,.google-review-grid.has-many-reviews { grid-auto-columns:100%; } .google-review-grid .google-review-card { padding:22px; } .review-dialog { padding:22px; } }
@media(prefers-reduced-motion:reduce) { .google-review-grid { scroll-behavior:auto; } }

.review-dialog-toolbar { position:sticky; top:-28px; z-index:1; background:var(--paper); padding:12px 0; }
@media(max-width:620px) { .review-dialog-toolbar { top:-22px; } }

.tui-wing { transform-origin:55px 38px; }
.tui-flying-bird:not(.is-resting) .tui-wing { animation:tui-wingbeat 1.1s ease-in-out infinite; }
@keyframes tui-wingbeat { 0%,100% { transform:rotate(-3deg); } 50% { transform:rotate(5deg); } }
@media(max-width:1040px),(prefers-reduced-motion:reduce) { .tui-flying-bird .tui-wing { animation:none !important; } }

/* Official wordmark artwork within the established header footprint. */
.site-header::before { background:#fff; }
.brand-name.official-wordmark { position:relative; display:block; width:166.9140625px; height:38.1640625px; overflow:hidden; }
.brand-name.official-wordmark img { position:absolute; left:-4.56px; top:-104.8px; width:176px; max-width:none; height:auto; object-fit:contain; }
@media(max-width:620px) { .brand-name.official-wordmark { width:137.8828125px; height:31.0234375px; } .brand-name.official-wordmark img { width:145.4px; left:-3.76px; top:-86.7px; } }
@media(max-width:370px) { .brand-name.official-wordmark { width:123.375px; height:27.46875px; } .brand-name.official-wordmark img { width:130.1px; left:-3.36px; top:-77.5px; } }

.tui-flying-bird { width:54px; height:44px; }
@media(max-width:1040px) { .tui-flying-bird { width:32px; height:26px; } }

/* Full, privacy-safe messages retain their natural page proportions. */
.testimonials-layout { grid-template-columns:1fr; gap:30px; }
.testimonials-intro { max-width:700px; }
.testimonial-slide,.testimonial-slide:first-child { grid-template-columns:minmax(0,1fr) minmax(0,1fr); grid-template-rows:auto; min-height:0; align-items:center; }
.testimonial-handwriting { align-self:stretch; align-items:center; padding:24px; }
.testimonial-handwriting img { height:auto; object-fit:contain; }
.testimonial-quote { padding:clamp(24px,3vw,44px); }
.testimonial-quote blockquote p { font-size:clamp(1rem,1.35vw,1.2rem); line-height:1.65; font-weight:450; letter-spacing:0; }
.testimonial-quote blockquote p+p { margin-top:18px; }
@media(max-width:760px) { .testimonial-slide,.testimonial-slide:first-child { grid-template-columns:1fr; } .testimonial-handwriting { padding:16px; } .testimonial-quote { padding:24px; } }
.gallery-item [aria-busy="true"] { cursor:progress; }
.has-js .testimonial-slide { display:none; }
.has-js .testimonial-slide.is-active { display:grid; }
.testimonial-slides { min-height:0; }
/* Reserve both control rows at short viewport heights. */
.gallery-dialog { width:min(1100px,calc(100vw - 24px),calc((100dvh - 200px) * var(--gallery-ratio,.75) + 40px)); }
.gallery-dialog figure img { max-height:calc(100dvh - 200px); }

.google-review-source-badge { display:inline-flex; width:17px; height:17px; margin-left:6px; color:#2676d7; vertical-align:-3px; }
.google-review-source-badge svg { width:100%;height:100%; }
.testimonial-handwriting img { max-height:680px; }
@media(max-width:760px) { .testimonial-handwriting img { max-height:none; } }

/* Clean word-boundary excerpts; the full original remains in the Read more dialog. */
.google-review-grid .google-review-text { display:block; -webkit-line-clamp:unset; }
.google-reviews-source:has([data-google-reviews-summary][hidden]) { display:none; }
.turnstile-slot,.turnstile-slot[data-size="compact"] { min-height:0; }

.testimonial-handwriting picture { height:auto; align-self:center; }

@media (min-width:761px) and (max-width:1040px) { .testimonial-slide,.testimonial-slide:first-child { grid-template-columns:1fr; } .testimonial-handwriting { padding:24px; } .testimonial-handwriting img { max-height:none; } }

.testimonial-attribution .testimonial-signoff { display:block; font-weight:450; margin-bottom:4px; }
.testimonial-attribution .testimonial-family { display:block; font-weight:750; }

/* Keep navigation opaque throughout the sticky-state transition. */
.site-header,.site-header.is-at-top:not(.utility-header) { background-color:var(--forest-deep); }

.tui-flight { z-index:90; }
.tui-trail path { stroke-dasharray:none; stroke-width:1.35; opacity:.42; }

/* Reserve the full angled panel, not only the narrower artwork box. */
@media(min-width:1041px){.header-shell{column-gap:24px}.header-shell>.brand{margin-right:42px}.desktop-nav{flex-shrink:0}}
.note-open{display:block;width:100%;padding:0;border:0;background:transparent;cursor:zoom-in;color:inherit;border-radius:3px}
.note-open:hover{box-shadow:0 0 0 3px var(--mustard)}
.note-open:focus-visible{outline:3px solid var(--forest);outline-offset:5px}
.note-opened{overflow:hidden}.note-opened .tui-flight{visibility:hidden}
.note-dialog{width:min(1200px,calc(100vw - 24px));max-height:calc(100dvh - 24px);padding:16px;border:0;border-radius:8px;background:var(--paper);color:var(--ink);overflow:hidden}
.note-dialog::backdrop{background:rgba(4,24,20,.9)}
.note-toolbar{display:flex;justify-content:space-between;gap:16px;padding-bottom:12px}
.note-toolbar button{min-height:44px;padding:8px 16px;border:1px solid var(--line);border-radius:4px;background:var(--paper);font:inherit;cursor:pointer}
.note-toolbar button:hover{background:var(--ivory)}
.note-viewport{max-height:calc(100dvh - 112px);overflow:auto;overscroll-behavior:contain}
.note-viewport img{display:block;width:100%;height:auto;max-height:calc(100dvh - 112px);object-fit:contain}
.note-dialog.is-zoomed .note-viewport img{width:max(100%,1000px);max-width:none;max-height:none}
@media(max-width:620px){.note-dialog{padding:10px;width:calc(100vw - 12px)}.note-dialog.is-zoomed .note-viewport img{width:1000px}}

.tui-trail path{stroke-width:4.5;stroke-dasharray:8 22;stroke-linecap:round;opacity:.65}
@media(max-width:1040px){.tui-trail path{stroke-width:3;stroke-dasharray:5 15}}

/* One anchor clearance shared by native and enhanced navigation. */
.section,.closing-cta{scroll-margin-top:calc(var(--header-compact-height) + 16px - var(--anchor-heading-offset, 0px))}

/* Balance the initial photographs without cropping or changing full-gallery navigation. */
.gallery-grid.gallery-initial { display:block; columns:4; column-gap:12px; }
.gallery-initial .gallery-item { break-inside:avoid; margin-bottom:12px; aspect-ratio:auto; }
.gallery-initial .gallery-open, .gallery-initial picture, .gallery-initial img { height:auto; }
.gallery-initial img { display:block; object-fit:contain; }
@media (max-width:1040px) { .gallery-grid.gallery-initial { columns:3; } }
@media (max-width:620px) { .gallery-grid.gallery-initial { columns:2; column-gap:8px; } .gallery-initial .gallery-item { margin-bottom:8px; } }
.tui-flying-bird{overflow:visible;filter:drop-shadow(0 0 .65px #fffdf8) drop-shadow(0 0 .65px #fffdf8)}
@media(max-width:1040px){.tui-flying-bird .tui-artwork{transform-box:view-box;transform-origin:50% 50%;scale:1.25}}
.note-open{position:relative}
.note-open::after{content:"";position:absolute;right:12px;bottom:12px;width:34px;height:34px;border-radius:50%;background:var(--paper) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23173c36' stroke-width='1.8' stroke-linecap='round'%3E%3Ccircle cx='10' cy='10' r='6.5'/%3E%3Cpath d='m15 15 5 5M7 10h6M10 7v6'/%3E%3C/svg%3E") center/20px no-repeat;box-shadow:0 1px 6px #173c3626;opacity:0;transition:opacity 150ms ease;pointer-events:none}
.note-open:hover::after,.note-open:focus-visible::after{opacity:1}
@media(hover:none),(max-width:1040px){.note-open::after{opacity:1}}
@media(prefers-reduced-motion:reduce){.note-open::after{transition:none}}

/* Fixes(8): owner-approved title hierarchy and selected paragraph contrast. */
#welcome-title, #testimonials-title, #faq-title, #contact-title { font-size:clamp(2rem,3.4vw,3.25rem); line-height:1.12; letter-spacing:-.035em; }
.testimonials-intro > p.section-deck { color:var(--forest); font-size:clamp(1.35rem,2vw,1.8rem); line-height:1.25; }
.contact-intro > .section-deck { grid-column:1; color:var(--paper); }
.community-copy > p:not(:last-child),
.programme-introduction > p:not(:first-child),
.gallery-heading > p,
.testimonials-intro > p:not(.section-deck) { color:#000; }
