@import url('https://fonts.googleapis.com/css2?family=Merriweather:wght@300;400;500;600;700;800;900&display=swap');

/* ---------- Antropos (self-hosted, embedded) ---------- */
@font-face {
  font-family: 'Antropos';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(data:font/woff2;charset=utf-8;base64,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) format('woff2');
}

:root {
  --text-dark: #2a2a26;
  --mustard: #f2a82f;
  --cream: #fef6ea;
  --green: #4b5f00;
  --dark-purple: #5c4656;
}

* { box-sizing: border-box; }

html { font-size: 18px; }

body {
  margin: 0;
  font-family: "Merriweather", Georgia, "Times New Roman", serif;
  color: var(--text-dark);
  background: white;
  line-height: 1.5;
}

body, button, input, textarea, select {
  -webkit-font-smoothing: antialiased;
}

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

img { max-width: 100%; display: block; }

p {
  font-family: "Merriweather", Georgia, "Times New Roman", serif;
  font-size: 18px;
}

/* ---------- Typography ---------- */
h1, h2, h3, h4 {
  line-height: 1.5;
  font-family: "Antropos", Georgia, "Cambria", "Times New Roman", serif;
  font-weight: 800;
  margin-top: 0;
}

h1 {
  margin-bottom: 2rem;
  font-size: clamp(4rem, 5.9vw, 72px);
  color: var(--green);
  line-height: 1.2;
  text-wrap: balance;
  margin-bottom: 1.5rem;
}

h2 {
  margin-bottom: 1rem;
  font-size: clamp(2rem, 3.4vw, 42px);
  color: var(--green);
  line-height: 1;
  text-wrap: balance;
}

h3 {
  margin-bottom: 1rem;
  font-size: clamp(1.8rem, 2.2vw, 30px);
  color: var(--dark-purple);
}

h4 {
  margin: 0 0 0.5rem;
  font-size: clamp(1.1rem, 1.5vw, 26px);
  color: var(--green);
}

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  white-space: nowrap;
  border: 0;
  border-radius: 0.8rem;
  padding: 0.8rem 1.8rem;
  color: white;
  font-family: inherit;
  font-size: 18px;
  font-weight: 800;
  letter-spacing: 0;
  text-align: center;
  cursor: pointer;
  transition:
  background 0.25s ease,
  color 0.25s ease,
  transform 0.15s ease,
  box-shadow 0.25s ease,
  backdrop-filter 0.25s ease;
}

.btn:active {
  transform: translateY(0);
  color:white;
}

.button-filled {
  background: var(--mustard);
  color: white;
  box-shadow: 0 10px 30px rgba(92, 70, 86, 0.1);
}

.button-filled:hover {
  background: var(--green);
  color: white;
  box-shadow: 0 5px 30px rgba(92, 70, 86, 0.1);
  transform: translateY(-2px);
}

.button-green {
  background: var(--green);
  color: white;
  box-shadow: 0 10px 30px rgba(92, 70, 86, 0.1);
}

.button-green:hover {
  background: var(--mustard);
  color: white;
  box-shadow: 0 5px 30px rgba(92, 70, 86, 0.1);
  transform: translateY(-2px);
}

.button-white {
  background: white;
  color: var(--green);
  box-shadow: 0 10px 30px rgba(92, 70, 86, 0.1);
}

.button-white:hover {
  background: white;
  color: var(--green);
  box-shadow: 0 5px 30px rgba(92, 70, 86, 0.1);
  transform: translateY(-2px);
}

.button-ghost {
  background: transparent;
  backdrop-filter: blur(4px);
  box-shadow: inset 0 0 0 0.111rem rgba(255, 255, 255, 0.9);
}

.button-ghost:hover {
  background: rgba(255, 255, 255, 0.1);
  backdrop-filter: blur(4px);
  box-shadow:
  inset 0 0 0 0.111rem white,
  0 10px 30px rgba(92, 70, 86, 0.1);
  transform: translateY(-2px);
}

.button-outline {
  background: transparent;
  backdrop-filter: blur(4px);
  color: white;
  box-shadow: inset 0 0 0 2px white;
  white-space: normal;
}

.button-outline:hover {
  background: white;
  color: var(--green);
  box-shadow:
  inset 0 0 0 2px white,
  0 10px 30px rgba(92, 70, 86, 0.1);
  transform: translateY(-2px);
}

.link {
  display: inline-flex;
  align-items: center;
  gap: 0.333rem;
  color: var(--dark-purple);
  font-weight: 600;
  transition: color 0.2s ease;
}

.link:hover {
  color: var(--mustard);
}

.testimonial-link {
  color: var(--green);
}

.testimonial-link:hover {
  color: var(--mustard);
}

.link-arrow {
  display: inline-block;
  text-decoration: none;
}

.eyebrow {
  display: inline-block;
  margin: 0 0 0.8rem;
  padding: 0.4rem 0.9rem;
  border-radius: 0.6rem;
  background: var(--mustard);
  color: white;
  font-family: "Antropos", Georgia, "Cambria", "Times New Roman", serif;
  font-size: 16px;
  font-weight: 600;
  letter-spacing: 0;
  text-transform: uppercase;
}
  .section, #in-a-nutshell, #about { scroll-margin-top: 5.5rem; }
  
  .section { padding: 5.5rem 8%; }

  .split {
    display: grid;
    grid-template-columns: 1fr;
    align-items: stretch;
    background: white;
  }
  
  .section-split {
    margin-bottom: 2rem;
  }

  /* -- HEADER -- */  
.site-header {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  z-index: 10;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0.8rem 8%;
  background: transparent;
  border-bottom: none;
}  

.logo {
  display: inline-flex;
  align-items: center;
  gap: 0.75rem;
  font-size: 18px;
  font-weight: 700;
  letter-spacing: 0;
  color: var(--green);
}  

.logo-image {
  height: 7.778rem;
  width: auto;
  object-fit: contain;
}  

.menu-toggle {
  display: none;
  border: 0;
  background: none;
  font-size: 28px;
  cursor: pointer;
  color: white;
}  

.nav-links {
  display: flex;
  gap: 1.8rem;
  align-items: center;
}  

.nav-links a:not(.btn) {
  font-family: "Merriweather", Georgia, "Times New Roman", serif;
  font-size: 18px;
  font-weight: 600;
  color: white;
  transition: color 0.5s ease;
}  

.nav-links a:not(.btn):hover { color: var(--mustard); }

/* -- NAV DROPDOWN -- */
.nav-dropdown {
  position: relative;
}

.nav-dropdown-toggle {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  cursor: pointer;
}

.nav-dropdown-caret {
  font-size: 12px;
  transition: transform 0.2s ease;
}

.nav-dropdown:hover .nav-dropdown-caret {
  transform: rotate(180deg);
}

.nav-dropdown-menu {
  position: absolute;
  top: 100%;
  left: 0;
  z-index: 20;
  display: flex;
  flex-direction: column;
  min-width: 220px;
  /* Sits flush under the link, but padded so the pointer can cross the gap
     without the menu closing. */
  padding: 8px 0;
  margin-top: 8px;
  border-radius: 12px;
  /* Alpha lives on the background, not on `opacity`, because `opacity` is
     already driving the open/close transition below. */
  background: color-mix(in srgb, var(--dark-purple) 80%, transparent);
  backdrop-filter: blur(6px);
  /* Downward drop plus a symmetric ambient ring, so the left edge reads with
     the same depth as the right instead of sitting flat against the header. */
  box-shadow:
    0 12px 30px rgba(42, 42, 38, 0.18),
    0 0 24px rgba(42, 42, 38, 0.22);
  opacity: 0;
  visibility: hidden;
  transform: translateY(-6px);
  transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s;
}

.nav-dropdown:hover .nav-dropdown-menu,
.nav-dropdown:focus-within .nav-dropdown-menu {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}

.nav-links .nav-dropdown-menu a:not(.btn) {
  padding: 10px 20px;
  white-space: nowrap;
  transition: background 0.2s ease, color 0.2s ease;
}

.nav-links .nav-dropdown-menu a:not(.btn):hover {
  background: var(--mustard);
  color: white;
}

/* -- ABOVE HERO -- */

.above-hero {
  background: var(--green);
  min-height: 20rem;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 10rem 8% 2rem;
}

.above-hero-text {
  display: flex;
  flex-direction: column;
  align-items: center;
  max-width: 50rem;
}

.above-hero-text * {
  color: white;
}

.above-hero-text .hero-actions {
  justify-content: center;
  margin-bottom: 0;
}

/* -- SECONDARY HERO -- */
/* Interior-page variant of .above-hero, on mustard instead of purple. */
.secondary-hero {
  background: var(--green);
  min-height: 10rem;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 10rem 8% 2rem;
}

.secondary-hero-text {
  display: flex;
  flex-direction: column;
  align-items: center;
  max-width: 50rem;
}

.secondary-hero-text * {
  color: white;
}

.secondary-hero-text .hero-actions {
  justify-content: center;
  margin-bottom: 0;
}

/* -- HERO -- */

.about-hero {
  position: relative;
  min-height: 34rem;
  display: flex;
  align-items: center;
  padding: 5.2rem 8%;
  overflow: hidden;
}

.about-hero::before {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 6rem;
  z-index: 3;
  pointer-events: none;
  /* Symmetric shallow bowl: high at both corners, bottoming out at centre. */
  background-image: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201440%20130'%20preserveAspectRatio='none'%3E%3Cpath%20d='M0,20%20C400,120%201040,120%201440,20%20L1440,130%20L0,130%20Z'%20fill='%23fef6ea'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-size: 100% 100%;
}

.about-hero::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 10rem;
  z-index: 3;
  pointer-events: none;
  background-image: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201440%20120'%20preserveAspectRatio='none'%3E%3Cpath%20d='M0,50%20C200,30%20600,20%20800,40%20C1000,60%201250,60%201440,30%20L1440,0%20L0,0%20Z'%20fill='%234b5f00'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-size: 100% 100%;
}

.about-hero .hero-image {
  background-image:
    url("https://images.squarespace-cdn.com/content/v1/67169c3e131cc65107d6f62a/722d7c63-13a1-4ca5-9908-312ce3e75c8d/APR05049_e2.jpg");
}

.hero-image {
  position: absolute;
  inset: 0;
  min-height: 0rem;
  background-size: cover;
  background-position: center 90%;
  background-repeat: no-repeat;
}

/* Interior-page hero photo, paired with .secondary-hero above it.
   The photo itself is set per page with an inline background-image on the
   element, so each page can use its own without touching this file. */
.secondary-hero-image {
  position: absolute;
  inset: 0;
  min-height: 0rem;
  background-size: cover;
  background-position: center 50%;
  background-repeat: no-repeat;
}

/* Half the height of the main hero band. */
.about-hero-secondary {
  min-height: 17rem;
}

/* The top wave blends into the hero above it, so it follows the dark purple.
   Both waves halve too, or they would swallow the shorter band. */
.about-hero-secondary::after {
  height: 5rem;
  background-image: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201440%20120'%20preserveAspectRatio='none'%3E%3Cpath%20d='M0,50%20C200,30%20600,20%20800,40%20C1000,60%201250,60%201440,30%20L1440,0%20L0,0%20Z'%20fill='%234b5f00'/%3E%3C/svg%3E");
}

.about-hero-secondary::before {
  height: 3rem;
  background-image: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201440%20130'%20preserveAspectRatio='none'%3E%3Cpath%20d='M0,12%20C420,-5%201020,-50%201440,126%20L1440,130%20L0,130%20Z'%20fill='%23fef6ea'/%3E%3C/svg%3E");
}

/* Program variant — same treatment as the secondary about hero. */
.program-hero-secondary {
  min-height: 25rem;
}

.program-hero-secondary .secondary-hero-image {
  background-position: center 70%;
}

.program-hero-secondary::after {
  height: 5rem;
  background-image: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201440%20120'%20preserveAspectRatio='none'%3E%3Cpath%20d='M0,50%20C200,30%20600,20%20800,40%20C1000,60%201250,60%201440,30%20L1440,0%20L0,0%20Z'%20fill='%234b5f00'/%3E%3C/svg%3E");
}

.program-hero-secondary::before {
  height: 3rem;
  background-image: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201440%20130'%20preserveAspectRatio='none'%3E%3Cpath%20d='M0,12%20C420,-5%201020,-50%201440,126%20L1440,130%20L0,130%20Z'%20fill='%23fef6ea'/%3E%3C/svg%3E");
}

.hero-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  margin-bottom: 2.2rem;
}  

/* -- IN A NUTSHELL -- */
.in-a-nutshell {
  display: grid;
  grid-template-columns: 0.8fr 1.2fr;
  gap: 1rem;
  align-items: start;
  background: var(--cream);
  padding-top: 2rem;
  padding-bottom: 1.4rem;
}

.nutshells {
  display: grid;
  gap: 1.5rem;
}

.nutshell-item {
  display: flex;
  align-items: center;
  gap: 2rem;
  padding: 2rem 6rem 2rem 1.5rem;
  border-radius: 21% 43% 25% 18% / 42% 50% 60% 61%;
  background: white;
  box-shadow: 0 8px 22px rgba(75, 95, 0, 0.06);
}

.nutshell-item-image {
  flex-shrink: 0;
  width: 10rem;
  height: 10rem;
  object-fit: contain;
}

.nutshell-item-text h4 {
  margin: 0 0 0.5rem;
}

.nutshell-item-text p {
  margin: 0;
}

/* -- CALENDAR -- */
/* Independent copy of the "In a Nutshell" layout, for calendar.html. */
.calendar {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem;
  align-items: start;
  background: var(--cream);
  padding-top: 2rem;
  padding-bottom: 10rem;
}

.calendar-items {
  display: grid;
  gap: 1.5rem;
    background: var(--cream);
}

/* Label in column 1, the year buttons in column 2; the PDF sits below both. */
.calendar-toolbar {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  align-items: center;
}

.calendar-toolbar-title {
  margin: 0;
}

.calendar-tabs {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 12px;
}

/* Mustard while inactive, green for the calendar currently in the frame. */
.calendar-tab {
  background: var(--mustard);
  color: white;
  box-shadow: 0 10px 30px rgba(92, 70, 86, 0.1);
}

.calendar-tab:hover {
  transform: translateY(-2px);
  box-shadow: 0 5px 30px rgba(92, 70, 86, 0.1);
}

.calendar-tab.is-active {
  background: var(--green);
  color: white;
}

/* Ratio of the PDF's landscape letter page, so the height scales with the
   width instead of being pinned to a fixed px value. */
.calendar-pdf {
  aspect-ratio: 11 / 8.5;
  width: 100%;
  overflow: hidden;
  border-radius: 12px;
  background: var(--cream);
  box-shadow: 0 8px 22px rgba(75, 95, 0, 0.06);
}

.calendar-pdf iframe {
  display: block;
  width: 100%;
  height: 100%;
  border: 0;
}

.calendar-download {
  margin: 0;
}

/* -- SUB HERO -- */
.sub-hero {
  position: relative;
  min-height: 24rem;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  overflow: hidden;
  padding: 10rem 8% 7.2rem;
  background-image: url("https://images.squarespace-cdn.com/content/v1/67169c3e131cc65107d6f62a/b481f92a-0905-42b5-bbdd-a1a678dd3cef/WaldorfDolls.jpg");
  background-size: cover;
  background-position: center 60%;
}

.sub-hero-tint {
  position: absolute;
  inset: 0;
  z-index: 1;
  background: color-mix(in srgb, var(--mustard) 85%, transparent);
  pointer-events: none;
}

.sub-hero::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 8rem;
  z-index: 2;
  pointer-events: none;
  background-image: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201440%20130'%20preserveAspectRatio='none'%3E%3Cpath%20d='M0,4%20C420,135%201020,135%201440,118%20L1440,0%20L0,0%20Z'%20fill='%23fef6ea'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-size: 100% 100%;
}

/* Same shallow bowl path as .about-hero::before — high at both corners, dipping
   to centre. z-index 2 puts it above .sub-hero-tint but under .sub-hero-content. */
.sub-hero::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 6rem;
  z-index: 2;
  pointer-events: none;
  background-image: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201440%20130'%20preserveAspectRatio='none'%3E%3Cpath%20d='M0,20%20C400,120%201040,120%201440,20%20L1440,130%20L0,130%20Z'%20fill='%23fef6ea'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-size: 100% 100%;
}

/* The band above now overlaps this edge, so its own cream bowl would just show
   as a stripe underneath the incoming wave. */
.sub-hero:has(+ .testimonials-band)::after {
  display: none;
}

.sub-hero-content {
  position: relative;
  z-index: 3;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  max-width: 40rem;
  margin: 0 auto;
}

.sub-hero-heading {
  color: white;
  text-align: center;
  margin: 0 0 1.8rem;
}

/* .sub-hero-content is a centred flex column, so text-align alone won't shift a
   short line — align-self is what moves the item itself to the right edge. */
.sub-hero-attribution {
  align-self: center;
  margin: 0;
  color: white;
  font-weight: 700;
}

/* -- ACCENT HERO -- */
/* Standalone copy of the .sub-hero set. Same wave curves to start with, on its
   own class names so the shapes can be retuned without moving .sub-hero.
   Markup: <section class="section accent-hero">
             <div class="accent-hero-tint"></div>
             <div class="accent-hero-content">
               <h2 class="accent-hero-heading">…</h2>
               <p class="accent-hero-attribution">…</p>
             </div>
           </section> */
.accent-hero {
  position: relative;
  min-height: 24rem;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  overflow: hidden;
  padding: 10rem 8% 7.2rem;
  background-image: url("https://images.squarespace-cdn.com/content/v1/67169c3e131cc65107d6f62a/b481f92a-0905-42b5-bbdd-a1a678dd3cef/WaldorfDolls.jpg");
  background-size: cover;
  background-position: center 60%;
}

.accent-hero-tint {
  position: absolute;
  inset: 0;
  z-index: 1;
  background: color-mix(in srgb, var(--mustard) 85%, transparent);
  pointer-events: none;
}

/* Top edge: mirror of .sub-hero::before — every x becomes 1440-x, so the
   endpoints swap (0,4 / 1440,118 -> 0,118 / 1440,4) and the shallow end now
   sits on the right. */
.accent-hero::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 8rem;
  z-index: 2;
  pointer-events: none;
  background-image: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201440%20130'%20preserveAspectRatio='none'%3E%3Cpath%20d='M0,118%20C420,135%201020,135%201440,4%20L1440,0%20L0,0%20Z'%20fill='%23fef6ea'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-size: 100% 100%;
}

/* Bottom edge: shallow bowl, high at both corners, dipping to centre. */
.accent-hero::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 6rem;
  z-index: 2;
  pointer-events: none;
  background-image: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201440%20130'%20preserveAspectRatio='none'%3E%3Cpath%20d='M0,20%20C400,120%201040,120%201440,20%20L1440,130%20L0,130%20Z'%20fill='%23fef6ea'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-size: 100% 100%;
}

.accent-hero-content {
  position: relative;
  z-index: 3;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  max-width: 40rem;
  margin: 0 auto;
}

.accent-hero-heading {
  color: white;
  text-align: center;
  margin: 0 0 1.8rem;
}

.accent-hero-attribution {
  align-self: center;
  margin: 0;
  color: white;
}

/* -- PROGRAM OVERVIEW -- */

.program-overview {
  position: relative;
  z-index: 5;
  display: block;
  background: var(--green);
  padding: 6rem 6% 6.5rem;
}

.program-overview::after {
  content: "";
  position: absolute;
  bottom: -6rem;
  left: 0;
  right: 0;
  height: 6rem;
  z-index: 2;
  pointer-events: none;
  background-image: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201440%20130'%20preserveAspectRatio='none'%3E%3Cpath%20d='M0,20%20C400,120%201040,120%201440,20%20L1440,0%20L0,0%20Z'%20fill='%234b5f00'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-size: 100% 100%;
}

.program-overview + .testimonials-band {
  padding-top: 7rem;
}


.accent-hero:has(+ .program-overview) {
  z-index: 6;
  padding-bottom: 2.5rem;
  margin-bottom: -6rem;
  -webkit-mask-image:
    linear-gradient(#000, #000),
    url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201440%20130'%20preserveAspectRatio='none'%3E%3Cpath%20d='M0,20%20C400,120%201040,120%201440,20%20L1440,0%20L0,0%20Z'%20fill='%23000'/%3E%3C/svg%3E");
  -webkit-mask-size: 100% calc(100% - 6rem), 100% 6rem;
  -webkit-mask-position: top left, bottom left;
  -webkit-mask-repeat: no-repeat, no-repeat;
  mask-image:
    linear-gradient(#000, #000),
    url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201440%20130'%20preserveAspectRatio='none'%3E%3Cpath%20d='M0,20%20C400,120%201040,120%201440,20%20L1440,0%20L0,0%20Z'%20fill='%23000'/%3E%3C/svg%3E");
  mask-size: 100% calc(100% - 6rem), 100% 6rem;
  mask-position: top left, bottom left;
  mask-repeat: no-repeat, no-repeat;
}

.accent-hero:has(+ .program-overview)::after {
  display: none;
}

.accent-hero + .program-overview {
  padding-top: 12rem;
}

.program-overview-items {
  max-width: 70rem;
  margin-left: auto;
  margin-right: auto;
}

.program-overview-title,
.program-overview-intro {
  max-width: 80rem;
  margin-left: auto;
  margin-right: auto;
}


.program-overview-title {
  margin-top: 0;
  margin-bottom: 2.5rem;
  color: white;
  text-align: center;
}

/* Copy on the left, the call-to-action stack on the right. */
.program-overview-intro {
  display: grid;
  /* Both columns size to their content and the pair is centred, so the only
     space between them is the gap. With an fr-sized column the leftover width
     sat inside the column — the list's short lines ended well before its edge,
     which read as a far wider gap than the value set here. */
  grid-template-columns: 1.75fr 0.25fr;
  max-width: 60rem;
  justify-content: center;
  gap: 4rem;
  align-items: start;
  margin-bottom: 5.5rem;
}

.program-overview-list {
  margin: 0;
  /* Bullet indent stays in rem — a percentage indent drifts with the column. */
  padding-left: 1.5rem;
  color: white;
  text-align: left;
}

.program-overview-list li {
  margin-bottom: 0.75rem;
}

.program-overview-list ul {
  margin: 0.75rem 0 0;
  padding-left: 1.5rem;
  list-style: circle;
}

.program-overview-actions {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  align-self: start;
  gap: 1rem;
}

.program-overview-subheading {
  margin-top: 0;
  margin-bottom: 0.5rem;
  /* The global heading line-height of 1.5 pushes the text down inside its own
     line box, so the column looked lower than the list beside it. */
  line-height: 1.1;
  color: white;
  text-align: left;
}

.program-overview-items {
  display: grid;
  grid-template-columns: 1fr;
  justify-items: center;
  gap: 4rem;
  align-items: start;
}

/* Photo left, card overlapping its right edge — the card is pulled back over
   the photo so the two blobs interlock instead of sitting in a row. */
.program-overview-item {
  display: flex;
  flex-direction: row;
  align-items: center;
  text-align: center;
  width: 100%;
  max-width: 70rem;
}

/* Same blob family as .core-values-photo and .mission-vision-photo — the radii
   are lifted straight from those two so the shapes match across the site. The
   second column takes the mission-vision variant so the pair isn't identical. */
.program-overview-media {
  flex: 0 0 58%;
  aspect-ratio: 5 / 4;
  overflow: hidden;
  border-radius: 50% 78% 44% 52% / 76% 60% 62% 50%;
}

.program-overview-item:nth-child(even) .program-overview-media {
  border-radius: 62% 38% 46% 54% / 54% 62% 38% 46%;
}

.program-overview-image {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.program-overview-card {
  position: relative;
  z-index: 2;
  flex: 0 0 52%;
  margin-left: -10%;
  margin-top: 2.5rem;
  padding: 5rem;
  background: var(--mustard);
  /* .review-card's silhouette, mirrored left-to-right (corner pairs swapped). */
  border-radius: 42% 24% 28% 36% / 66% 41% 69% 100%;
  box-shadow: 0 18px 40px rgba(75, 95, 0, 0.18);
}

.program-overview-heading {
  margin: 0 0 1rem;
  color: var(--green);
  text-align: center;
}

.program-overview-text {
  margin: 0;
  color: var(--green);
  text-align: center;
}

/* -- GRADES PROGRAM OVERVIEW -- */
/* Photo band carrying two purple blob cards side by side, with the buttons
   stacked underneath. Its own class set rather than a variant of
   .program-overview, which is a green band with a different structure. */
.grades-program-overview {
  position: relative;
  overflow: hidden;
  padding: 5rem 6% 6rem;
  background-image: url("https://images.squarespace-cdn.com/content/v1/67169c3e131cc65107d6f62a/b976b24b-9ba9-4bd4-8f92-e37d397d6f5c/APR04898_e2.jpg");
  background-size: cover;
  background-position: center;
}

/* Keeps the copy legible over the photo. */
.grades-program-overview-tint {
  position: absolute;
  inset: 0;
  z-index: 1;
  background: rgba(42, 42, 38, 0.25);
  pointer-events: none;
}

.grades-program-overview-inner {
  position: relative;
  z-index: 2;
  max-width: 80rem;
  margin-left: auto;
  margin-right: auto;
}

.grades-program-overview-title {
  margin-top: 0;
  margin-bottom: 3rem;
  color: white;
  text-align: center;
}

.grades-program-overview-cards {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 3rem;
  align-items: start;
}

/* .review-card's silhouette, mirrored top-to-bottom (corner pairs swapped). */
.grades-program-overview-card {
  padding: 3rem 8% 3.5rem;
  background: var(--dark-purple);
  border-radius: 28% 36% 42% 24% / 69% 100% 66% 41%;
  box-shadow: 0 1.125rem 2.5rem rgba(42, 42, 38, 0.25);
  text-align: center;
}

.grades-program-overview-heading {
  margin-top: 0;
  margin-bottom: 1.5rem;
  color: var(--mustard);
  text-align: center;
  text-decoration: underline;
  text-underline-offset: 0.5rem;
}

.grades-program-overview-grades {
  margin: 0 0 1.5rem;
  color: white;
  font-weight: 700;
  text-align: center;
}

.grades-program-overview-text {
  margin: 0;
  color: white;
  text-align: center;
}

.grades-program-overview-actions {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1rem;
  margin-top: 3rem;
}

.grades-program-overview-actions .btn {
  width: 100%;
  max-width: 24rem;
}

/* -- COLUMNED HIGHLIGHTS -- */
/* Duplicate of the .sub-hero set, split into two columns: photo on the left,
   quote and button on the right. The tinted panel and both wavy edges are
   recreated so the band still reads as part of the same family.
   Markup: <section class="section column-highlights">
             <div class="column-highlights-tint"></div>
             <div class="column-highlights-media">
               <img class="column-highlights-image" src="…" alt="…" />
             </div>
             <div class="column-highlights-content">
               <h2 class="column-highlights-heading">…</h2>
               <a class="btn button-ghost" href="…">…</a>
             </div>
           </section> */
.column-highlights {
  position: relative;
  min-height: 40rem;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 3.5rem;
  overflow: hidden;
  padding: 10rem 8% 7.1875rem;
  background-image: url("https://images.squarespace-cdn.com/content/v1/67169c3e131cc65107d6f62a/b481f92a-0905-42b5-bbdd-a1a678dd3cef/WaldorfDolls.jpg");
  background-size: cover;
  background-position: center 60%;
}

.column-highlights-tint {
  position: absolute;
  inset: 0;
  z-index: 1;
  background: color-mix(in srgb, var(--mustard) 85%, transparent);
  pointer-events: none;
}

/* Top edge: same wave path as .sub-hero::before. */
.column-highlights::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 8rem;
  z-index: 5;
  pointer-events: none;
  background-image: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201440%20130'%20preserveAspectRatio='none'%3E%3Cpath%20d='M0,4%20C420,135%201020,135%201440,118%20L1440,0%20L0,0%20Z'%20fill='%23fef6ea'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-size: 100% 100%;
}

/* Bottom edge: shallow bowl, high at both corners, dipping to centre. */
.column-highlights::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 6rem;
  z-index: 5;
  pointer-events: none;
  background-image: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201440%20130'%20preserveAspectRatio='none'%3E%3Cpath%20d='M0,20%20C400,120%201040,120%201440,20%20L1440,130%20L0,130%20Z'%20fill='%23fef6ea'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-size: 100% 100%;
}

/* The photo owns the whole left column, bleeding to the section's edges rather
   than sitting in a frame. Its right edge uses the same two-layer mask idiom as
   the full-width photo band: a wave for the outer 6rem, a solid fill for the
   rest, so the photo meets the copy on a curve. The section's own cream waves
   sit above it (z-index 5) and trim its top and bottom. */
.column-highlights-media {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  width: 54%;
  z-index: 2;
  -webkit-mask-image:
    url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2080%201440'%20preserveAspectRatio='none'%3E%3Cpath%20d='M40,0%20C5,360%205,360%2040,720%20C75,1080%2075,1080%2040,1440%20L0,1440%20L0,0%20Z'%20fill='%23000'/%3E%3C/svg%3E"),
    linear-gradient(#000, #000);
  -webkit-mask-size: 6rem 100%, calc(100% - 6rem) 100%;
  -webkit-mask-position: top right, top left;
  -webkit-mask-repeat: no-repeat, no-repeat;
  mask-image:
    url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2080%201440'%20preserveAspectRatio='none'%3E%3Cpath%20d='M40,0%20C5,360%205,360%2040,720%20C75,1080%2075,1080%2040,1440%20L0,1440%20L0,0%20Z'%20fill='%23000'/%3E%3C/svg%3E"),
    linear-gradient(#000, #000);
  mask-size: 6rem 100%, calc(100% - 6rem) 100%;
  mask-position: top right, top left;
  mask-repeat: no-repeat, no-repeat;
}

.column-highlights-image {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  /* Crop from the right — keeps the left of the frame in view. */
  object-position: left center;
}

.column-highlights-content {
  position: relative;
  z-index: 4;
  flex: 0 1 44%;
  min-width: 0;
  padding-left: 4%;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  text-align: left;
  max-width: 40rem;
}

.column-highlights-heading {
  color: white;
  text-align: left;
  margin: 0 0 1.75rem;
}

.column-highlights-attribution {
  align-self: flex-start;
  margin: 0;
  color: white;
  font-weight: 700;
}

/* Both names share this band: .forest-photo is still used on the interior
   pages, .row-highlights is the newer name used on the home page. */
.row-highlights,
.forest-photo {
  position: relative;
  z-index: 4;
  min-height: 22rem;
  margin-top: -8rem;
  overflow: hidden;
  -webkit-mask-image:
    url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201440%2080'%20preserveAspectRatio='none'%3E%3Cpath%20d='M0,40%20C360,5%20360,5%20720,40%20C1080,75%201080,75%201440,40%20L1440,80%20L0,80%20Z'%20fill='%23000'/%3E%3C/svg%3E"),
    linear-gradient(#000, #000);
  -webkit-mask-size: 100% 6rem, 100% calc(100% - 6rem);
  -webkit-mask-position: top left, bottom left;
  -webkit-mask-repeat: no-repeat, no-repeat;
  mask-image:
    url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201440%2080'%20preserveAspectRatio='none'%3E%3Cpath%20d='M0,40%20C360,5%20360,5%20720,40%20C1080,75%201080,75%201440,40%20L1440,80%20L0,80%20Z'%20fill='%23000'/%3E%3C/svg%3E"),
    linear-gradient(#000, #000);
  mask-size: 100% 6rem, 100% calc(100% - 6rem);
  mask-position: top left, bottom left;
  mask-repeat: no-repeat, no-repeat;
}

.forest-photo-image {
  background-image: url("https://images.squarespace-cdn.com/content/v1/67169c3e131cc65107d6f62a/9b39156b-411f-4984-89df-0055b9b58932/APR04811_e2.jpg");
  background-position: center 15%;
}

.forest-photo::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 6rem;
  z-index: 2;
  pointer-events: none;
  background-image: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201440%20120'%20preserveAspectRatio='none'%3E%3Cpath%20d='M0,20%20C240,70%20460,90%20680,60%20C900,30%201180,10%201440,60%20L1440,120%20L0,120%20Z'%20fill='%23fef6ea'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-size: 100% 100%;
}

/* -- WAVE HAND-OFFS -- */
/* Each wave is painted in the colour of the band it hands off to. Where the
   neighbour isn't cream, the default cream fill reads as a stripe wedged
   between two sections, so these adjacency rules repaint it to match. */

/* Green program band feeding into the mustard sub-hero: the curve is carried by
   .program-overview::after, so the sub-hero's own cream top wave stands down. */
.program-overview + .sub-hero::before {
  display: none;
}

/* -- PHOTO BAND, BLENDED BOTTOM EDGE -- */
/* Opt-in variant of .forest-photo for pages where the band below has its own
   artwork. Instead of painting a solid wave over the photo, the bottom edge is
   masked with the wave — the same treatment its top edge already gets — so the
   section underneath shows through the curve and the two images run together.
   Add alongside the base class: class="forest-photo forest-photo-blend". */
.forest-photo-blend {
  -webkit-mask-image:
    url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201440%2080'%20preserveAspectRatio='none'%3E%3Cpath%20d='M0,40%20C360,5%20360,5%20720,40%20C1080,75%201080,75%201440,40%20L1440,80%20L0,80%20Z'%20fill='%23000'/%3E%3C/svg%3E"),
    url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201440%20120'%20preserveAspectRatio='none'%3E%3Cpath%20d='M0,20%20C240,70%20460,90%20680,60%20C900,30%201180,10%201440,60%20L1440,0%20L0,0%20Z'%20fill='%23000'/%3E%3C/svg%3E"),
    linear-gradient(#000, #000);
  -webkit-mask-size: 100% 6rem, 100% 6rem, 100% calc(100% - 12rem);
  -webkit-mask-position: top left, bottom left, left 0 top 6rem;
  -webkit-mask-repeat: no-repeat, no-repeat, no-repeat;
  mask-image:
    url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201440%2080'%20preserveAspectRatio='none'%3E%3Cpath%20d='M0,40%20C360,5%20360,5%20720,40%20C1080,75%201080,75%201440,40%20L1440,80%20L0,80%20Z'%20fill='%23000'/%3E%3C/svg%3E"),
    url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201440%20120'%20preserveAspectRatio='none'%3E%3Cpath%20d='M0,20%20C240,70%20460,90%20680,60%20C900,30%201180,10%201440,60%20L1440,0%20L0,0%20Z'%20fill='%23000'/%3E%3C/svg%3E"),
    linear-gradient(#000, #000);
  mask-size: 100% 6rem, 100% 6rem, 100% calc(100% - 12rem);
  mask-position: top left, bottom left, left 0 top 6rem;
  mask-repeat: no-repeat, no-repeat, no-repeat;
}

/* The painted wave would sit on top of the mask and defeat the point. */
.forest-photo-blend::after {
  display: none;
}

/* The band below climbs under the masked edge so its own artwork fills the
   curve rather than the page background. */
.forest-photo-blend + .testimonials-band {
  margin-top: -6rem;
  padding-top: 7rem;
}

/* -- PROGRAMS -- */
#programs {
  background: var(--cream);
  padding-top: 2rem;
  padding-bottom: 3rem;
}

.cards {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
  margin-top: 1.8rem;
}

.card {
  position: relative;
  background: white;
  display: flex;
  flex-direction: column;
  transition: transform 0.2s ease, box-shadow 0.2s ease;
  box-shadow: 0 8px 22px rgba(75, 95, 0, 0.06);
  padding: 1.2rem 3rem;
  border-radius: 48% 22% 40% 18% / 26% 20% 34% 15%;
}

.card:hover {
  transform: translateY(-3px);
  box-shadow: 0 18px 40px rgba(75, 95, 0, 0.12);
}

.card p {
  color: var(--text-dark);
  flex: 1;
  margin: 0 0 1rem;
}

.programs-cards {
  align-items: stretch;
}

.programs-cards .card {
  padding: 0;
  overflow: hidden;
  text-align: left;
  align-items: stretch;
}

.programs-card-media {
  position: relative;
}

.programs-card-photo {
  display: block;
  width: 100%;
  height: 20rem;
  object-fit: cover;
}

.programs-card-body {
  display: flex;
  flex-direction: column;
  flex: 1;
  padding: 2.5rem 3rem 3rem;
  box-shadow: 0 8px 22px rgba(75, 95, 0, 0.06);
}

.programs-card-body p {
  margin-bottom: 1rem;
}

.programs-card-body .link {
  margin-top: auto;
}

/* -- APPROACH -- */

#approach {
  background: var(--cream);
  padding-top: 2.8rem;
  padding-bottom: 1.5rem;
}
#approach h1 {
  margin-bottom: 1rem;
}

/* -- MEDIA-CONSCIOUS PARENTING -- */
#media-parenting {
  background: var(--cream);
  padding-top: 2.5rem;
  padding-bottom: 3rem;
}

#media-parenting h1 {
  text-align: center;
  margin-bottom: 2rem;
}

#media-parenting h2 {
  text-align: center;
  color: white;
}

#media-parenting p {
  text-align: left;
  color: white;
}

/* Blob card left, photo right. */
.media-top {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 2.5rem;
  align-items: stretch;
  margin-bottom: 2.5rem;
}

.media-top > .media-blob {
  align-self: start;
}

.media-blob {
  padding: 2rem 4rem 3.5rem;
  background: var(--green);
  border-radius: 26% 99% 22% 34% / 50% 58% 66% 136%;
  text-align: center;
  box-shadow: 0 8px 30px rgba(42, 42, 38, 0.4);
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

/* .reveal is on the same element and .reveal.reveal-visible (line ~1848) pins
   transform: translateY(0). It has equal specificity but sits later in the file,
   so it was winning. Naming .reveal here outranks it. */
.media-blob.reveal:hover,
.media-blob:hover {
  transform: translateY(-2px);
  box-shadow: 0 9px 30px rgba(42, 42, 38, 0.55);
}

.media-blob p {
  color: white;
  margin: 0 0 1rem;
}

.media-blob p:last-child {
  margin-bottom: 0;
}

.media-blob a {
  color: var(--mustard);
  font-weight: 700;
  text-decoration: underline;
}

.culture-blob {
  padding: 2rem 6rem 3rem;
  background: var(--green);
  border-radius: 70% 60% 50% 109% / 250% 500% 89% 154%;
  text-align: center;
  box-shadow: 0 8px 30px rgba(42, 42, 38, 0.4);
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

/* .reveal named here for the same reason as .media-blob above — otherwise
   .reveal.reveal-visible pins the transform and the lift never happens. */
.culture-blob.reveal:hover,
.culture-blob:hover {
  transform: translateY(-2px);
  box-shadow: 0 9px 30px rgba(42, 42, 38, 0.55);
}

.culture-blob p {
  color: white;
  margin: 0 0 1rem;
}

.culture-blob p:last-child {
  margin-bottom: 0;
}

.culture-blob a {
  color: var(--mustard);
  font-weight: 700;
  text-decoration: underline;
}

.media-photo {
  position: relative;
  align-self: stretch;
  overflow: hidden;
  border-radius: 40% 48% 24% 26% / 46% 39% 62% 70%;
  box-shadow: 0 8px 30px rgba(42, 42, 38, 0.4);
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.media-photo.reveal:hover,
.media-photo:hover {
  transform: translateY(-2px);
  box-shadow: 0 9px 30px rgba(42, 42, 38, 0.55);
}

.media-photo img {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.approach-cards {
  align-items: stretch;
  grid-template-columns: repeat(4, 1fr);
}

.approach-card {
  position: relative;
  display: flex;
  flex-direction: column;
  background: white;
  padding: 0;
  overflow: hidden;
  text-align: center;
  align-items: stretch;
  border-radius: 48% 22% 40% 48% / 26% 20% 28% 15%;
  box-shadow: 0 8px 22px rgba(75, 95, 0, 0.06);
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.approach-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 10px 24px rgba(75, 95, 0, 0.12);
}

.approach-card p {
  color: var(--text-dark);
  flex: 1;
  margin: 0 0 1rem;
}

.approach-card-media {
  position: relative;
}

.approach-card-photo {
  display: block;
  width: 100%;
  height: 15rem;
  object-fit: cover;
}

.approach-card-body {
  display: flex;
  flex-direction: column;
  flex: 1;
  padding: 1.5rem 2.5rem 2.5rem;
  box-shadow: 0 8px 22px rgba(75, 95, 0, 0.06);
}

.approach-card-body .link {
  margin-top: auto;
}

/* -- ADMISSIONS -- */
#admissions {
  padding-top: 3rem;
  padding-bottom: 5rem;
  background: var(--cream);
}

/* -- MISSION & VISION -- */
.mission-vision {
  padding-top: 1rem;
  padding-bottom: 0rem;
  background: var(--cream);
  grid-template-columns: 1fr 1fr;
  gap: 4rem;
  align-items: center;
}

.core-values {
  padding-top: 1rem;
  padding-bottom: 0;
  background: var(--cream);
  grid-template-columns: 0.45fr 0.55fr;
  gap: 4rem;
  align-items: center;
}

.mission-vision-photo,
.core-values-photo {
  overflow: hidden;
  align-self: stretch;
  min-height: 100%;
  box-shadow: 0 18px 40px rgba(42, 42, 38, 0.12);
}

.mission-vision-photo {
  border-radius: 62% 38% 46% 54% / 54% 62% 38% 46%;
}

.core-values-photo {
  border-radius: 50% 78% 44% 52% / 76% 60% 62% 50%;
}

.mission-vision-photo img,
.core-values-photo img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.mission-vision-text .eyebrow,
.core-values-text .eyebrow {
  margin-top: 0;
}

.core-values-list {
  margin: 0;
  padding-left: 1.2rem;
  list-style: disc;
}

.core-values-list li {
  margin-bottom: 0.8rem;
  padding-left: 0.3rem;
}

.core-values-list li::marker {
  color: var(--mustard);
}

.core-values-list li:last-child {
  margin-bottom: 0;
}

/* -- APP FEATURE -- */
.app-section {
  background: var(--cream);
  padding-top: 2rem;
  padding-bottom: 144px;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 2rem;
}

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

.app-heading {
  color: var(--green);
}

.app-subtitle {
  color: var(--text-dark);
  max-width: 40rem;
  margin: 0;
}

.app-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1rem;
  max-width: 36rem;
  width: 100%;
}

.app-login-btn {
  width: calc((36rem - 1rem) / 2);
}

/* Full-width filled button that fills its container */
.btn-block {
  display: flex;
  width: 100%;
  margin: 1.5rem 0;
  white-space: normal;
}


/* -- REVIEWS PHOTO BAND -- */
/* Same wavy silhouette as .forest-photo, but bridging the green contact
   section above and the purple testimonials band below. Both edges are
   masked rather than painted: the negative margins pull the neighbouring
   sections underneath, so the green above and the testimonials photo below
   show through the waves. */
.reviews-photo {
  position: relative;
  z-index: 4;
  min-height: 22rem;
  margin-top: -6rem;
  margin-bottom: -6rem;
  overflow: hidden;
  -webkit-mask-image:
    url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201440%2080'%20preserveAspectRatio='none'%3E%3Cpath%20d='M0,40%20C360,75%20360,75%20720,40%20C1080,5%201080,5%201440,40%20L1440,80%20L0,80%20Z'%20fill='%23000'/%3E%3C/svg%3E"),
    linear-gradient(#000, #000),
    url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201440%20120'%20preserveAspectRatio='none'%3E%3Cpath%20d='M0,0%20L1440,0%20L1440,20%20C1200,70%20980,90%20760,60%20C540,30%20260,10%200,60%20Z'%20fill='%23000'/%3E%3C/svg%3E");
  -webkit-mask-size: 100% 6rem, 100% calc(100% - 12rem), 100% 6rem;
  -webkit-mask-position: top left, left 6rem, bottom left;
  -webkit-mask-repeat: no-repeat, no-repeat, no-repeat;
  mask-image:
    url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201440%2080'%20preserveAspectRatio='none'%3E%3Cpath%20d='M0,40%20C360,75%20360,75%20720,40%20C1080,5%201080,5%201440,40%20L1440,80%20L0,80%20Z'%20fill='%23000'/%3E%3C/svg%3E"),
    linear-gradient(#000, #000),
    url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201440%20120'%20preserveAspectRatio='none'%3E%3Cpath%20d='M0,0%20L1440,0%20L1440,20%20C1200,70%20980,90%20760,60%20C540,30%20260,10%200,60%20Z'%20fill='%23000'/%3E%3C/svg%3E");
  mask-size: 100% 6rem, 100% calc(100% - 12rem), 100% 6rem;
  mask-position: top left, left 6rem, bottom left;
  mask-repeat: no-repeat, no-repeat, no-repeat;
}

.reviews-photo-image {
  background-image: url("https://images.squarespace-cdn.com/content/v1/67169c3e131cc65107d6f62a/0831e946-4184-4511-82dd-1a0d5d310d19/SS_03699_e1.jpg");
  background-position: center 29%;
}

/* -- TESTIMONIALS -- */
/* The photo lives on the band, not the section, so it runs unbroken behind
   the testimonials and the site footer below it. */
.testimonials-band {
  position: relative;
  overflow: hidden;
  /* Clearance for the .reviews-photo band that overlaps 6rem into this one. */
  padding-top: 32px;
  background-color: var(--dark-purple);
  background-image: url("https://images.squarespace-cdn.com/content/v1/67169c3e131cc65107d6f62a/b481f92a-0905-42b5-bbdd-a1a678dd3cef/WaldorfDolls.jpg");
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}

/* Overlap idiom copied from .forest-photo: pull up over the section above and
   mask a wave into the top edge, so the band climbs into it on a curve instead
   of meeting it with a straight line. Scoped to the philosophy page, where the
   band follows .sub-hero directly with no .reviews-photo bridging them.
   The mask has two layers: the wave for the top 6rem, and a solid fill for the
   remaining height so the rest of the band stays fully opaque. */
.sub-hero + .testimonials-band {
  position: relative;
  z-index: 4;
  margin-top: -6rem;
  padding-top: 0;
  -webkit-mask-image:
    url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201440%2080'%20preserveAspectRatio='none'%3E%3Cpath%20d='M0,40%20C360,5%20360,5%20720,40%20C1080,75%201080,75%201440,40%20L1440,80%20L0,80%20Z'%20fill='%23000'/%3E%3C/svg%3E"),
    linear-gradient(#000, #000);
  -webkit-mask-size: 100% 6rem, 100% calc(100% - 6rem);
  -webkit-mask-position: top left, bottom left;
  -webkit-mask-repeat: no-repeat, no-repeat;
  mask-image:
    url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201440%2080'%20preserveAspectRatio='none'%3E%3Cpath%20d='M0,40%20C360,5%20360,5%20720,40%20C1080,75%201080,75%201440,40%20L1440,80%20L0,80%20Z'%20fill='%23000'/%3E%3C/svg%3E"),
    linear-gradient(#000, #000);
  mask-size: 100% 6rem, 100% calc(100% - 6rem);
  mask-position: top left, bottom left;
  mask-repeat: no-repeat, no-repeat;
}

/* --dark-purple wash over the background photo. */
.testimonials-band::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background: var(--dark-purple);
  opacity: 0.9;
}

.testimonials {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: minmax(0, 0.75fr) minmax(0, 1.25fr);
  gap: 2rem;
  align-items: start;
  background: transparent;
}

.testimonials-panel,
.testimonials-aside {
  position: relative;
  z-index: 1;
}

/* Column 1: heading, rating line, Google logo, then "Write a Review" —
   centred both ways against the slider in column 2. */
.testimonials-aside {
  grid-column: 1;
  grid-row: 1;
  align-self: center;
  justify-self: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  gap: 1rem;
  width: 100%;
}

.reviews-rating {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  margin: 0;
}

.reviews-on {
  color: white;
  font-size: 20px;
  font-weight: 600;
}

.testimonials-panel {
  --reviews-gutter: 4.5rem;
  grid-column: 2;
  grid-row: 1;
  align-self: start;
  display: flex;
  flex-direction: column;
  gap: 1rem;
  /* Grid/flex children default to min-width:auto, which lets the wide
     scroll track expand this column past the section. */
  min-width: 0;
  /* Gutter lives on the panel, not the carousel, so the summary bar,
     the cards and the dots all share exactly the same width. */
  padding-left: var(--reviews-gutter);
  padding-right: var(--reviews-gutter);
}

.testimonials-heading {
  margin: 0;
  color: white;
  text-align: center;
}

.reviews-summary {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 0.6rem;
  padding: 0;
  background: transparent;
  margin-top: 24px;
}

.google-logo {
  height: 3.8rem;
  width: auto;
  flex-shrink: 0;
  /* The PNG carries its own transparent padding, so pull it up under the
     stars rather than widening the aside's flex gap for everything else. */
  margin-top: -12px;
}

.reviews-score {
  font-family: "Antropos", Georgia, serif;
  font-size: 26px;
  font-weight: 800;
  color: white;
}

.reviews-stars {
  color: var(--mustard);
  font-size: 24px;
  letter-spacing: 0.1rem;
}

.reviews-count {
  color: white;
  font-size: 20px;
  font-weight: 600;
}

.reviews-carousel {
  position: relative;
  min-width: 0;
}

.reviews-track {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: 100%;
  gap: 1rem;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scroll-behavior: smooth;
  scrollbar-width: none;
  padding-bottom: 0.2rem;
}

.reviews-track::-webkit-scrollbar { display: none; }

.review-card {
  scroll-snap-align: start;
  display: flex;
  flex-direction: column;
  padding: 3rem 3.5rem 4rem;
  border-radius: 24% 42% 36% 28% / 41% 66% 100% 69%;
  background: white;
  box-shadow: 0 8px 22px rgba(75, 95, 0, 0.12);
}

.review-head {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin-bottom: 0.8rem;
}

.review-avatar {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 3rem;
  height: 3rem;
  border-radius: 0;
  background: transparent;
  color: var(--mustard);
  font-family: "Antropos", Georgia, serif;
  font-size: 22px;
  font-weight: 800;
}

.review-avatar-img {
  flex-shrink: 0;
  width: 3rem;
  height: 3rem;
  border-radius: 0;
  object-fit: cover;
  background: transparent;
}

.reviews-loading {
  margin: 0;
  padding: 1.4rem;
  border-radius: 1rem;
  background: white;
  color: var(--text-dark);
  text-align: center;
}

.review-meta p,
.review-meta h4 { margin: 0; }

.review-verified { color: #4285f4; font-size: 14px; }

.review-date {
  font-size: 18px;
  color: var(--green);
  opacity: 0.75;
}

.review-date span { color: var(--green); font-weight: 600; }

.review-stars {
  display: block;
  margin: 0 0 0.6rem;
  color: var(--mustard);
  font-size: 18px;
  letter-spacing: 0.1rem;
}

/* Text is trimmed to 300 characters in script.js, so no CSS clamp needed. */
.review-card > p {
  margin: 0 0 0.8rem;
}

/* -- FULL-REVIEW POPUP -- */
.review-modal {
  position: fixed;
  inset: 0;
  z-index: 50;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1.5rem;
}

.review-modal[hidden] { display: none; }

.review-modal-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(42, 42, 38, 0.6);
  backdrop-filter: blur(2px);
}

.review-modal-card {
  position: relative;
  z-index: 1;
  width: 100%;
  max-width: 40rem;
  max-height: 80vh;
  overflow-y: auto;
  padding: 3rem 3.5rem 4rem;
  background: white;
  border-radius: 24% 42% 36% 28% / 41% 66% 100% 69%;
  box-shadow: 0 24px 60px rgba(42, 42, 38, 0.35);
}

.review-modal-close {
  position: absolute;
  top: 2.5rem;
  right: 5rem;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2.2rem;
  height: 2.2rem;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: var(--cream);
  color: var(--green);
  font-size: 28px;
  line-height: 1;
  cursor: pointer;
  transition: background 0.2s ease, color 0.2s ease;
}

.review-modal-close:hover {
  background: var(--mustard);
  color: white;
}

.review-modal-card > p {
  margin: 0;
}

.review-more {
  align-self: flex-start;
  margin-top: auto;
  padding: 0;
  border: 0;
  background: none;
  font-family: inherit;
  font-size: 16px;
  cursor: pointer;
}

.reviews-arrow {
  position: absolute;
  top: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 4rem;
  height: 4rem;
  border: 0;
  border-radius: 0;
  background: none;
  color: white;
  font-family: "Merriweather", Georgia, serif;
  font-weight: 400;
  font-size: 120px;
  line-height: 1;
  cursor: pointer;
  transition: color 0.2s ease, transform 0.2s ease;
}

.reviews-arrow-prev {
  left: calc(var(--reviews-gutter) / -2);
  transform: translate(-50%, -50%);
}

.reviews-arrow-next {
  right: calc(var(--reviews-gutter) / -2);
  transform: translate(50%, -50%);
}

.reviews-arrow:hover {
  color: white;
}

.reviews-arrow-prev:hover { transform: translate(-50%, -50%) scale(1.08); }
.reviews-arrow-next:hover { transform: translate(50%, -50%) scale(1.08); }

.reviews-dots {
  display: flex;
  justify-content: center;
  gap: 0.4rem;
}

.reviews-dot {
  width: 0.5rem;
  height: 0.5rem;
  border: 0;
  border-radius: 50%;
  padding: 0;
  background: rgba(255, 255, 255, 0.55);
  cursor: pointer;
  transition: background 0.2s ease;
}

.reviews-dot.is-active { background: var(--mustard); }

/* -- CONTACT -- */
.contact {
  position: relative;
  display: grid;
  grid-template-columns: 1fr;
  gap: 0;
  background: var(--green);
  color: white;
  text-align: center;
  /* Clearance for the .reviews-photo band that pulls up 6rem into this
     section's bottom edge. */
  padding-bottom: 160px;
}

.contact::before {
  content: "";
  position: absolute;
  bottom: 100%;
  left: 0;
  right: 0;
  height: 128px;
  z-index: 2;
  pointer-events: none;
  background-image: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201440%20130'%20preserveAspectRatio='none'%3E%3Cpath%20d='M0,118%20C420,135%201020,135%201440,4%20L1440,130%20L0,130%20Z'%20fill='%234b5f00'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-size: 100% 100%;
}

@media (min-width: 900px) {
  .contact { padding-left: 4%; padding-right: 4%; }
}

.contact .contact-info {
  max-width: none;
}

.contact .contact-form-wrap { max-width: 480px; margin: 0; width: 100%; }

.contact h1,
.contact h2,
.contact p {
  color: white;
  text-align: left;
}

.contact-heading {
  max-width: none;
  margin: 0 0 2.2rem;
}

.contact-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 480px;
  gap: 32px;
  align-items: center;
  justify-content: center;
  max-width: 1120px;
  margin: 0 auto;
}

.contact-info .contact-details { text-align: left; }

.contact-details {
  list-style: none;
  margin: 1.5rem 0 0;
  padding: 0;
  display: grid;
  gap: 0.7rem;
}

.contact-details li {
  display: grid;
  grid-template-columns: 90px 1fr;
  gap: 1rem;
  align-items: baseline;
  padding-bottom: 0.7rem;
  border-bottom: 1px solid rgba(242, 168, 47, 0.12);
  font-family: "Merriweather", Georgia, "Times New Roman", serif;
  font-size: 18px;
}

.contact-details span {
  color: white;
  font-size: 18px;
  letter-spacing: 0;
  text-transform: uppercase;
  font-weight: 700;
}

/* ── CONTACT FORM ── */

.contact-form-wrap {
  max-width: 50rem;
  margin: 0 auto;
}

.contact-form {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.contact-form input,
.contact-form textarea {
  width: 100%;
  padding: 0.8rem 1rem;
  border: 0.028rem solid var(--brown-light);
  border-radius: 0.5rem;
  font-family: inherit;
  font-size: 16px;
  color: var(--text-dark);
  background: white;
  box-sizing: border-box;
  outline: none;
  caret-color: var(--green);
}

.contact-form input::placeholder,
.contact-form textarea::placeholder {
  color: #b7bf99;
}

.contact-form textarea {
  min-height: 9.3rem;
  resize: vertical;
}

.contact-form .btn {
  width: 100%;
  margin-top: 1rem;
}

.contact-form.is-submitted .form-success {
  display: block;
}

.form-success {
  display: none;
  color: white;
  text-align: center;
  margin: 0;
}

/* -- FOOTER -- */

.site-footer {
  position: relative;
  z-index: 1;
  background: var(--dark-purple);
  padding: 1.6rem 6%;
  color: white;
}

/* Inside the band the photo + wash already paint the backdrop. */
.testimonials-band .site-footer {
  background: transparent;
}

/* Contact section placed inside the band (calendar.html) rides the band's
   photo + wash instead of its own green, so the green top wave goes too. */
.testimonials-band .contact {
  z-index: 1;
  background: transparent;
}

.testimonials-band .contact::before {
  display: none;
}

.footer-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.2rem;
}

.wecan-logo {
  height: 120px;
  width: auto;
}

.footer-right {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  align-self: flex-end;
  gap: 1rem;
}

.footer-socials {
  display: flex;
  gap: 1rem;
  align-items: center;
  justify-content: flex-end;
}

.footer-socials a {
  display: flex;
  align-items: center;
  justify-content: center;
}

.footer-socials a:first-child .social-icon {
  width: 30px;
  height: 1.6rem;
}

.footer-socials a:hover .social-icon {
  opacity: 1;
}

.social-icon {
  width: 30px;
  height: 30px;
  display: block;
  opacity: 0.9;
  transition: opacity 0.2s ease;
}

.footer-bottom {
  margin: 0;
  color: rgba(255, 255, 255, 0.7);
  font-family: "Merriweather", Georgia, "Times New Roman", serif;
  font-size: 14px;
  text-align: right;
}

.footer-bottom a {
  color: white;
  text-decoration: none;
}

.footer-bottom a:hover {
  text-decoration: underline;
}

/* -- SUBTLE HOVER ANIMATIONS -- */
.nutshell-item {
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.nutshell-item:hover {
  transform: translateY(-2px);
  box-shadow: 0 10px 24px rgba(75, 95, 0, 0.12);
}

.programs-card-photo,
.approach-card-photo {
  transition: transform 0.35s ease;
}

.card:hover .programs-card-photo,
.approach-card:hover .approach-card-photo {
  transform: scale(1.05);
}

.social-icon {
  transition: opacity 0.2s ease, transform 0.2s ease;
}

.footer-socials a:hover .social-icon {
  transform: scale(1.12);
}

.contact-form input,
.contact-form textarea {
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.contact-form input:focus,
.contact-form textarea:focus {
  border-color: var(--green);
  box-shadow: 0 0 0 0.167rem color-mix(in srgb, var(--green) 20%, transparent);
}

/* -- SCROLL REVEAL (content only, section backgrounds are never animated) -- */
.reveal {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.6s ease, transform 0.6s ease;
}

.reveal.reveal-visible {
  opacity: 1;
  transform: translateY(0);
}

.nutshells .reveal:nth-child(2),
.calendar-items .reveal:nth-child(2) { transition-delay: 0.08s; }
.nutshells .reveal:nth-child(3),
.calendar-items .reveal:nth-child(3) { transition-delay: 0.16s; }

.programs-cards .reveal:nth-child(2),
.approach-cards .reveal:nth-child(2) { transition-delay: 0.08s; }
.programs-cards .reveal:nth-child(3),
.approach-cards .reveal:nth-child(3) { transition-delay: 0.16s; }
.approach-cards .reveal:nth-child(4) { transition-delay: 0.24s; }

@media (prefers-reduced-motion: reduce) {
  .reveal {
    opacity: 1;
    transform: none;
    transition: none;
  }
}

/* ======================================================
   BREAKPOINTS
   Tablet:  max-width 768px
   Mobile:  max-width 480px
   ====================================================== */

/* -- TABLET (<=900px, covers iPad Pro 11's 834px width) -- */
@media (max-width: 900px) {
  .section { padding: 4rem 6%; }
  .split {
    grid-template-columns: 1fr;
    gap: 2rem;
  }
  .site-header { padding: 0.6rem 6%; z-index: 25; }
  .logo-image { height: 5rem; }
  .menu-toggle { display: flex; position: relative; z-index: 25; }
  .nav-links {
    display: flex;
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    width: 75%;
    max-width: 20rem;
    flex-direction: column;
    align-items: stretch;
    gap: 0;
    background: color-mix(in srgb, var(--green) 85%, transparent);
    backdrop-filter: blur(4px);
    padding: 5rem 1.5rem 1.5rem;
    transform: translateX(100%);
    visibility: hidden;
    transition: transform 0.3s ease, visibility 0.3s ease;
    z-index: 20;
  }
  .nav-links.active {
    transform: translateX(0);
    visibility: visible;
  }
  .nav-links a:not(.btn) { padding: 0.7rem 0; color: white; }
  .nav-links .btn { margin-top: 0.5rem; width: 100%; }
  /* In the slide-out panel the submenu expands inline on tap (handled by
     initMobileMenu) rather than floating on hover. */
  .nav-dropdown-menu {
    position: static;
    min-width: 0;
    padding: 0 0 0 1rem;
    margin: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
    display: none;
    opacity: 1;
    visibility: visible;
    transform: none;
  }
  .nav-dropdown.active .nav-dropdown-menu { display: flex; }
  .nav-dropdown:hover .nav-dropdown-menu { display: none; }
  .nav-dropdown.active:hover .nav-dropdown-menu { display: flex; }
  .nav-dropdown.active .nav-dropdown-caret { transform: rotate(180deg); }
  .nav-links .nav-dropdown-menu a:not(.btn) { padding: 0.5rem 0; }
  .nav-links .nav-dropdown-menu a:not(.btn):hover { background: none; }
  .about-hero { min-height: 30rem; padding: 3rem 6%; }
  .about-hero-secondary { min-height: 15rem; }
  .program-hero-secondary { min-height: 15rem; }
  .hero-image { min-height: 20rem; }
  .in-a-nutshell,
  .calendar {
    grid-template-columns: 1fr;
    gap: 1.8rem;
  }
  .calendar-toolbar {
    grid-template-columns: 1fr;
    gap: 12px;
  }
  /* Stacked, the buttons read better under the label than pushed right. */
  .calendar-tabs { justify-content: flex-start; }
  .sub-hero,
  .accent-hero {
    min-height: 18rem;
    padding: 7.5rem 6% 6.5rem;
  }
  .sub-hero::before,
  .accent-hero::before {
    height: 5rem;
  }
  .sub-hero::after,
  .accent-hero::after {
    height: 4rem;
  }
  .program-overview {
    padding: 4rem 6% 4.5rem;
  }
  .grades-program-overview {
    padding: 3.5rem 6% 4rem;
  }
  .grades-program-overview-cards {
    grid-template-columns: 1fr;
    gap: 2rem;
  }
  .grades-program-overview-card {
    padding: 2.5rem 8% 3rem;
    /* Gentler on a narrow card, same vertical flip. */
    border-radius: 17% 15% 18% 14% / 7% 8% 6% 7%;
  }
  .program-overview-intro {
    grid-template-columns: 1fr;
    gap: 2.5rem;
    margin-bottom: 3.5rem;
  }
  .program-overview-items {
    gap: 3.5rem;
  }
  /* Too narrow to interlock — the card drops back under the photo. */
  .program-overview-item {
    flex-direction: column;
  }
  .program-overview-media {
    flex: 0 0 auto;
    width: 100%;
  }
  .program-overview-card {
    flex: 0 0 auto;
    width: 100%;
    margin-left: 0;
    margin-top: -3.5rem;
    padding: 3.5rem 11% 3.75rem;
    /* Gentler on a narrow card — the wide radii swallow the text. */
    border-radius: 18% 14% 17% 15% / 6% 7% 7% 8%;
  }
  /* Columns stack, photo first. */
  .column-highlights {
    flex-direction: column;
    min-height: 28rem;
    padding: 7.5rem 6% 6.5rem;
    gap: 2rem;
  }
  .column-highlights-content {
    flex: 0 0 auto;
    width: 100%;
    max-width: none;
    padding-left: 0;
  }
  /* Stacked: the photo goes full-bleed across the top and the wave moves from
     its right edge to its bottom edge. */
  .column-highlights-media {
    position: relative;
    top: auto;
    bottom: auto;
    left: auto;
    width: calc(100% + 12vw);
    margin: 0 -6vw;
    height: 22.5rem;
    -webkit-mask-image:
      url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201440%2080'%20preserveAspectRatio='none'%3E%3Cpath%20d='M0,40%20C360,75%20360,75%20720,40%20C1080,5%201080,5%201440,40%20L1440,0%20L0,0%20Z'%20fill='%23000'/%3E%3C/svg%3E"),
      linear-gradient(#000, #000);
    -webkit-mask-size: 100% 4rem, 100% calc(100% - 4rem);
    -webkit-mask-position: bottom left, top left;
    mask-image:
      url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201440%2080'%20preserveAspectRatio='none'%3E%3Cpath%20d='M0,40%20C360,75%20360,75%20720,40%20C1080,5%201080,5%201440,40%20L1440,0%20L0,0%20Z'%20fill='%23000'/%3E%3C/svg%3E"),
      linear-gradient(#000, #000);
    mask-size: 100% 4rem, 100% calc(100% - 4rem);
    mask-position: bottom left, top left;
  }
  .column-highlights::before { height: 5rem; }
  .column-highlights::after { height: 4rem; }
  .forest-photo {
    min-height: 18rem;
    margin-top: -4rem;
    -webkit-mask-size: 100% 4rem, 100% calc(100% - 4rem);
    mask-size: 100% 4rem, 100% calc(100% - 4rem);
  }
  .forest-photo::after {
    height: 3.5rem;
  }
  .reviews-photo {
    min-height: 18rem;
    margin-top: -4rem;
    margin-bottom: -4rem;
    -webkit-mask-size: 100% 4rem, 100% calc(100% - 8rem), 100% 4rem;
    -webkit-mask-position: top left, left 4rem, bottom left;
    mask-size: 100% 4rem, 100% calc(100% - 8rem), 100% 4rem;
    mask-position: top left, left 4rem, bottom left;
  }
  .cards {
    grid-template-columns: 1fr;
  }
  .card { padding: 1.2rem 1.5rem; }
  .programs-card-body,
  .approach-card-body { padding: 1.8rem 1.8rem 2rem; }
  .media-top { grid-template-columns: 1fr; gap: 1.8rem; }
  .media-blob,
  .culture-blob { padding: 2rem 1.8rem 2.2rem; }
  /* Nothing beside it to take height from once stacked. */
  .media-photo { aspect-ratio: 4 / 3; }
  /* 70% is too tight once the cards stack — fall back to the usual gutters. */
  #admissions,
  .mission-vision,
  .core-values { padding-bottom: 1rem; }
  /* Stacked by .split above, so there is no text beside the photo to take its
     height from — put the aspect ratio back and cap the width. */
  .mission-vision-photo,
  .core-values-photo {
    max-width: 24rem;
    margin: 0 auto;
    aspect-ratio: 4 / 3;
    min-height: 0;
  }
  .app-section {
    gap: 2rem;
    padding-top: 1rem;
  }
  .app-grid { grid-template-columns: 1fr; }
  .app-login-btn { width: 100%; }
  .testimonials {
    grid-template-columns: 1fr;
    gap: 2rem;
  }
  /* Stacked: heading first, then the blob photo and rating, then the reviews. */
  .testimonials-aside { grid-column: 1; grid-row: auto; order: -1; }
  .testimonials-panel { grid-column: 1; grid-row: auto; order: 0; }
  .reviews-track { grid-auto-columns: 100%; }
  .testimonials-panel { --reviews-gutter: 3.4rem; }
  .reviews-arrow { width: 3rem; height: 3rem; font-size: 88px; }
  .contact-grid {
    grid-template-columns: 1fr;
    max-width: 100%;
    gap: 2.5rem;
  }
  .contact::before { height: 80px; }
  .contact { padding-bottom: 112px; }
  .app-section { padding-bottom: 96px; }
  .contact .contact-info { max-width: none; }
  .contact-form-wrap { width: 100%; }
  .footer-inner {
    flex-direction: column;
    text-align: center;
    gap: 1rem;
  }
  .wecan-logo {
    margin-bottom: 1rem;
  }
  .footer-right {
    align-items: center;
  }
  .footer-socials { justify-content: center; }
  .footer-bottom {
    text-align: center;
    margin-top: 1rem;
  }
}

/* -- PHONE (<=480px) -- */
@media (max-width: 480px) {
  html { font-size: 16px; }
  .section { padding: 3rem 6%; }
  .about-hero { min-height: 36rem; padding: 3.5rem 6%; }
  .about-hero-secondary { min-height: 18rem; }
  .program-hero-secondary { min-height: 18rem; }
  .hero-image { min-height: 24rem; }
  .hero-actions { flex-direction: column; align-items: stretch; }
  .cards { grid-template-columns: 1fr; }
  .nutshell-item {
    flex-direction: column;
    align-items: flex-start;
    gap: 1rem;
    padding: 2rem 1.8rem 1.6rem;
    /* Gentler on a narrow, tall card — the wide-stretch radii would
       swallow the text at this width. */
    border-radius: 14% 18% 15% 17% / 7% 6% 8% 7%;
  }
  .sub-hero,
  .accent-hero {
    min-height: 15.556rem;
    padding: 5.5rem 6% 5rem;
  }
  .sub-hero::before,
  .accent-hero::before {
    height: 3.333rem;
  }
  .sub-hero::after,
  .accent-hero::after {
    height: 2.667rem;
  }
  .sub-hero-heading,
  .accent-hero-heading {
    margin-bottom: 1.333rem;
  }
  .column-highlights {
    min-height: 24rem;
    padding: 5.5rem 6% 5rem;
    gap: 1.5rem;
  }
  .column-highlights::before { height: 3.333rem; }
  .column-highlights::after { height: 2.667rem; }
  .column-highlights-heading { margin-bottom: 1.3125rem; }
  .forest-photo {
    min-height: 15rem;
    margin-top: -3rem;
    -webkit-mask-size: 100% 3rem, 100% calc(100% - 3rem);
    mask-size: 100% 3rem, 100% calc(100% - 3rem);
  }
  .forest-photo::after {
    height: 2.75rem;
  }
  .reviews-photo {
    min-height: 15rem;
    margin-top: -3rem;
    margin-bottom: -3rem;
    -webkit-mask-size: 100% 3rem, 100% calc(100% - 6rem), 100% 3rem;
    -webkit-mask-position: top left, left 3rem, bottom left;
    mask-size: 100% 3rem, 100% calc(100% - 6rem), 100% 3rem;
    mask-position: top left, left 3rem, bottom left;
  }
  .contact { padding-bottom: 88px; }
  .review-modal-card {
    padding: 2.5rem 1.75rem 2rem;
  }
  .review-modal-close { top: 1.75rem; right: 3rem; }
  .reviews-summary { gap: 0.45rem; padding: 0; }
  .google-logo { height: 3rem; }
  .reviews-score { font-size: 22px; }
  .reviews-stars { font-size: 20px; }
  .reviews-summary .btn { width: 100%; margin-top: 0.4rem; }
  .app-grid { grid-template-columns: 1.2fr; }
  #admissions,
  .mission-vision,
  .core-values { padding-bottom: 1.2rem; }
  .app-section { padding-top: 1rem; padding-bottom: 72px; }
  .contact::before { height: 60px; }
  .contact-details li {
    grid-template-columns: 1fr;
    gap: 0.2rem;
  }
  .contact-form-wrap { width: 100%; }
  .wecan-logo { margin-bottom: 1.25rem; }
  .footer-bottom { margin-top: 1.25rem; }
}

