/* ══════════════════════════════════════════════════════════════════
   Little Way Playschool — homepage, "workshop" register.
   The look of the Professional Learning Workshop deck: warm cream ground,
   rounded pastel-tint cards, soft flat line-art in brand colors, sprouts
   from little green hills, a gold bee on a dotted trail, hand-drawn hearts
   with sparkle bursts. All Quicksand, weight for hierarchy.
   Built on the tokens in styles.css.
   ══════════════════════════════════════════════════════════════════ */

:root {
  /* Pastel tints, sampled from the workshop deck */
  --mint:#DCEFD3;   --blush:#FBDDE6;   --lilac:#EAE0F4;
  --butter:#FCEEC5; --steam:#D3ECEA;   --peach:#FBE4D2;
  --ink-soft:#4A3E44;
  --r-card:26px; --r-lg:34px;
  --ease-out:cubic-bezier(0.16,1,0.3,1);   /* ease-out-expo-ish */
}

/* Page ground — warm near-white, faint sky wash toward the top */
body.ws {
  background:
    radial-gradient(120% 60% at 78% -8%, rgba(75,194,195,.10), transparent 60%),
    radial-gradient(90% 50% at 8% 4%, rgba(235,180,83,.09), transparent 55%),
    var(--cream);
  color: var(--ink);
  font-family: var(--body);
  overflow-x: clip;
}
.ws main { display: block; }
.wrap-lg { max-width: 1200px; margin: 0 auto; padding: 0 clamp(20px, 4vw, 44px); }

/* Reveal-on-scroll */
.rise { opacity: 0; transform: translateY(22px); transition: opacity .7s var(--ease-out), transform .7s var(--ease-out); }
.rise.in { opacity: 1; transform: none; }
.rise.d1 { transition-delay: .08s } .rise.d2 { transition-delay: .16s } .rise.d3 { transition-delay: .24s } .rise.d4 { transition-delay: .32s }
@media (prefers-reduced-motion: reduce) { .rise { opacity: 1; transform: none; transition: none; } }

/* ── Top bar ─ hidden by default; slides down only when you scroll up ─ */
.topbar {
  position: fixed; top: 0; left: 0; right: 0; z-index: 60;
  background: color-mix(in srgb, var(--cream) 90%, transparent);
  backdrop-filter: saturate(1.15) blur(10px); -webkit-backdrop-filter: saturate(1.15) blur(10px);
  border-bottom: 1px solid color-mix(in srgb, var(--border) 60%, transparent);
  transform: translateY(-100%); transition: transform .32s var(--ease-out);
}
.topbar.show { transform: translateY(0); }
.topbar__in { max-width: 1200px; margin: 0 auto; padding: 12px clamp(20px, 4vw, 44px);
  display: flex; align-items: center; gap: 20px; }
.topbar__logo img { height: 44px; width: auto; display: block; }
.topbar__nav { display: flex; gap: 6px; margin-left: 8px; }
.topbar__nav a { font-weight: 600; font-size: 15px; color: var(--ink-2); padding: 8px 12px; border-radius: 999px; transition: color .16s, background .16s; }
.topbar__nav a:hover { color: var(--plum-deep); background: color-mix(in srgb, var(--lilac) 60%, transparent); text-decoration: none; }
.topbar__cta { margin-left: auto; display: flex; align-items: center; gap: 12px; }
.topbar__menu { display: none; }
@media (max-width: 860px) {
  .topbar__nav { display: none; }
  .topbar__cta .cta--ghost { display: none; } /* keep one CTA on small screens */
}

/* ── The pink CTA + "?" info popover ─────────────────────────────── */
.btnwrap { position: relative; display: inline-flex; align-items: center; }
.cta {
  display: inline-flex; align-items: center; gap: 9px;
  background: var(--pink); color: #fff; font-weight: 700; font-size: 16px;
  padding: 13px 22px; border-radius: 999px; border: none; cursor: pointer;
  box-shadow: 0 8px 20px rgba(231,84,128,.30);
  transition: transform .18s var(--ease-out), box-shadow .18s var(--ease-out), background .18s;
}
.cta:hover { background: var(--pink-deep); transform: translateY(-2px); box-shadow: 0 12px 28px rgba(231,84,128,.40); text-decoration: none; }
.cta--ghost { background: #fff; color: var(--plum-deep); box-shadow: 0 6px 16px rgba(58,46,58,.10); border: 1.5px solid color-mix(in srgb, var(--plum) 26%, transparent); }
.cta--ghost:hover { background: #fff; color: var(--plum-deep); border-color: var(--plum); }
.cta--sm { font-size: 14.5px; padding: 10px 16px; }
.cta.has-info { padding-right: 46px; }
.cta--sm.has-info { padding-right: 40px; }

/* the "?" trigger — a real button, sibling of the link, sitting in the pill */
.info {
  position: absolute; right: 8px; top: 50%; transform: translateY(-50%);
  width: 24px; height: 24px; border-radius: 50%; flex: 0 0 auto; padding: 0;
  display: grid; place-items: center;
  background: rgba(255,255,255,.26); color: #fff; font-weight: 700; font-size: 13px; line-height: 1;
  border: 1.4px solid rgba(255,255,255,.65); cursor: help; transition: background .16s, transform .16s;
}
.cta--sm.has-info + .info { width: 22px; height: 22px; right: 7px; }
.info:hover { background: rgba(255,255,255,.4); }
.btnwrap:has(.cta--ghost) .info { background: color-mix(in srgb, var(--plum) 10%, #fff); color: var(--plum-deep); border-color: color-mix(in srgb, var(--plum) 32%, transparent); }
.btnwrap:has(.cta--ghost) .info:hover { background: color-mix(in srgb, var(--plum) 18%, #fff); }
.info:focus-visible { outline: 3px solid var(--plum); outline-offset: 2px; }
/* generous touch target on the "?" without changing its look */
.info::after { content: ""; position: absolute; inset: -12px; border-radius: 50%; }

/* the popover */
.pop {
  position: absolute; left: 50%; top: calc(100% + 12px); transform: translate(-50%, 6px);
  width: min(300px, 78vw); z-index: 40;
  background: #fff; color: var(--ink); border-radius: 18px; padding: 16px 18px;
  box-shadow: 0 2px 6px rgba(58,46,58,.08), 0 18px 44px rgba(58,46,58,.18);
  border: 1px solid var(--border);
  opacity: 0; visibility: hidden; pointer-events: none;
  transition: opacity .2s var(--ease-out), transform .2s var(--ease-out), visibility .2s;
}
.pop::before { /* pointer */
  content: ""; position: absolute; left: 50%; top: -7px; width: 14px; height: 14px;
  background: #fff; border-left: 1px solid var(--border); border-top: 1px solid var(--border);
  transform: translateX(-50%) rotate(45deg); border-radius: 3px 0 0 0;
}
.btnwrap:hover .pop, .btnwrap:focus-within .pop, .pop.show {
  opacity: 1; visibility: visible; transform: translate(-50%, 0); pointer-events: auto;
}
/* The popover drops past the section edge; lift the section that owns an open
   popover above later sections so the tooltip never paints under their text. */
.hero:has(.btnwrap:hover), .hero:has(.btnwrap:focus-within),
.phero:has(.btnwrap:hover), .phero:has(.btnwrap:focus-within),
.sec:has(.btnwrap:hover), .sec:has(.btnwrap:focus-within) { z-index: 30; }
.pop__t { display: block; font-weight: 700; color: var(--plum-deep); font-size: 15px; margin-bottom: 4px; }
.pop__d { display: block; font-size: 14px; line-height: 1.55; color: var(--ink-2); }
/* ── Mobile: the "?" info reveals a slide-up bottom sheet ─────────── */
.pop-scrim { position: fixed; inset: 0; z-index: 95; background: rgba(58,46,58,.42);
  opacity: 0; visibility: hidden; transition: opacity .24s var(--ease-out), visibility .24s; -webkit-tap-highlight-color: transparent; }
.pop-scrim.show { opacity: 1; visibility: visible; }
@media (min-width: 561px) { .pop-scrim { display: none; } }

@media (max-width: 560px) {
  .pop {
    position: fixed; left: 0; right: 0; bottom: 0; top: auto; width: auto; z-index: 96;
    border-radius: 22px 22px 0 0; padding: 20px 20px calc(22px + env(safe-area-inset-bottom, 0px));
    transform: translateY(102%); box-shadow: 0 -10px 40px rgba(58,46,58,.22);
    transition: transform .28s var(--ease-out), visibility .28s;
  }
  .pop::before { display: none; }
  /* on touch, only an explicit .show opens it — hover/focus-within must not */
  .btnwrap:hover .pop:not(.show), .btnwrap:focus-within .pop:not(.show) { opacity: 0; visibility: hidden; transform: translateY(102%); }
  .btnwrap .pop.show, .pop.show { opacity: 1; visibility: visible; left: 0; transform: translateY(0); pointer-events: auto; }
  .pop::after { /* grabber */
    content: ""; position: absolute; top: 9px; left: 50%; transform: translateX(-50%);
    width: 40px; height: 4px; border-radius: 999px; background: var(--border-2); }
  .pop__t { font-size: 17px; margin: 8px 0 6px; }
  .pop__d { font-size: 15px; }
  .pop__close { display: inline-flex; align-items: center; justify-content: center; gap: 6px;
    margin-top: 16px; width: 100%; min-height: 46px; border: none; border-radius: 14px; cursor: pointer;
    background: var(--plum-deep); color: #fff; font-family: var(--body); font-weight: 700; font-size: 15px; }
  .info { width: 26px; height: 26px; }
  .cta.has-info { padding-right: 50px; }
}
@media (min-width: 561px) { .pop__close { display: none; } } /* desktop: hover handles dismissal */

/* ── Hero ────────────────────────────────────────────────────────── */
.hero { position: relative; overflow: visible; padding: clamp(58px, 8vw, 98px) 0 clamp(30px, 5vw, 64px); }
.hero__in { max-width: 1200px; margin: 0 auto; padding: 0 clamp(20px, 4vw, 44px);
  display: grid; grid-template-columns: 1.02fr .98fr; gap: clamp(20px, 4vw, 52px); align-items: center;
  position: relative; z-index: 1; }
.hero__logo { width: clamp(184px, 22vw, 264px); height: auto; display: block; margin-bottom: clamp(16px, 2.2vw, 28px); }
.hero h1 { font-family: var(--disp); font-weight: 600; letter-spacing: -.02em; line-height: 1.08;
  font-size: clamp(29px, 4.2vw, 46px); color: var(--ink); margin: 0; max-width: 20ch; text-wrap: balance; }
.hero h1 em { font-style: normal; color: var(--plum); position: relative; }
.hero h1 em::after { /* hand-drawn underline */
  content: ""; position: absolute; left: 0; right: 0; bottom: -.08em; height: .16em;
  background: var(--gold); border-radius: 999px; transform: scaleX(0); transform-origin: left; opacity: .8;
  animation: underline 1s var(--ease-out) .5s forwards; }
@keyframes underline { to { transform: scaleX(1); } }
@media (prefers-reduced-motion: reduce) { .hero h1 em::after { transform: scaleX(1); animation: none; } }
.hero__sub { font-size: clamp(16px, 1.6vw, 20px); color: var(--ink-2); line-height: 1.6; margin: 20px 0 0; max-width: 34ch; }
.hero__cta { display: flex; flex-wrap: wrap; align-items: center; gap: 14px; margin-top: 30px; }
.hero__ask { display: inline-flex; align-items: center; gap: 7px; font-weight: 600; font-size: 15px; color: var(--teal-deep); margin-top: 18px; }
.hero__ask:hover { text-decoration: none; color: var(--teal-deep); }
.hero__ask svg { transition: transform .2s var(--ease-out); }
.hero__ask:hover svg { transform: translateX(3px); }

/* Hero illustration: a static transparent flat-vector flower on the cream. No
   entrance animation, no frame, no ground band — it just sits there. The life
   comes from the accents around it (hearts, bee, sprigs) drifting gently. */
.hero__art { justify-self: center; max-width: clamp(240px, 32vw, 380px); }
.hero__art picture, .hero__art img { display: block; width: 100%; height: auto; }
@keyframes floaty-hero { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-12px); } }

/* Generated accents scattered at the edges, filling the negative space */
.hero__decor { position: absolute; inset: 0; z-index: 0; pointer-events: none; overflow: hidden; }
.hero__decor .d { position: absolute; height: auto; animation: floaty-hero 8s ease-in-out infinite; }
.d-h1 { width: clamp(28px, 3.2vw, 42px); top: 12%; right: 9%; animation-delay: -1s; }
.d-b1 { width: clamp(42px, 4.8vw, 62px); top: 27%; left: 1.5%; animation-delay: -3s; }
.d-s1 { width: clamp(24px, 2.8vw, 38px); bottom: 3%; left: 3%; animation-delay: -2s; }
.d-h2 { width: clamp(20px, 2.2vw, 30px); bottom: 20%; right: 33%; animation-delay: -4.5s; }
.d-s2 { width: clamp(30px, 3.4vw, 46px); bottom: 7%; right: 10%; animation-delay: -0.6s; }
@media (prefers-reduced-motion: reduce) { .hero__decor .d { animation: none; } }
@media (max-width: 840px) {
  .d-b1, .d-h2 { display: none; }
  .d-h1 { top: 3%; right: 4%; } .d-s1 { bottom: 4%; left: 5%; } .d-s2 { bottom: 3%; right: 5%; }
}

@media (max-width: 840px) {
  .hero__in { grid-template-columns: 1fr; }
  .hero__art { max-width: clamp(220px, 62vw, 320px); margin-top: 8px; }
  .hero h1 { font-size: clamp(30px, 8vw, 40px); }
}

/* floating hearts/sparkles layer */
.confetti { position: absolute; inset: 0; pointer-events: none; overflow: hidden; z-index: 0; }
.confetti .f { position: absolute; opacity: .0; animation: floaty 9s ease-in-out infinite; }
@keyframes floaty { 0%,100% { transform: translateY(0) rotate(-4deg); opacity:.5 } 50% { transform: translateY(-14px) rotate(4deg); opacity:.9 } }
@media (prefers-reduced-motion: reduce) { .confetti .f { animation: none; opacity:.55 } }

/* ── Section scaffolding ─────────────────────────────────────────── */
.sec { padding: clamp(48px, 8vw, 96px) 0; position: relative; }
/* new-set accents drifting in each section's gutters, behind the content */
.sec-decor { position: absolute; inset: 0; pointer-events: none; overflow: hidden; z-index: 0; }
.sec-decor .sd { position: absolute; height: auto; animation: floaty-hero 8.5s ease-in-out infinite; }
.sec-decor .sd:nth-child(2) { animation-delay: -3.5s; }
.sec > .wrap-lg { position: relative; z-index: 1; }
@media (prefers-reduced-motion: reduce) { .sec-decor .sd { animation: none; } }
@media (max-width: 700px) { .sec-decor { display: none; } }
.sec__kick { display: inline-flex; align-items: center; gap: 8px; font-weight: 700; font-size: 13px;
  letter-spacing: .04em; color: var(--plum); }
.sec__kick .dot { width: 22px; height: 22px; border-radius: 50%; background: var(--teal); color: #fff;
  display: grid; place-items: center; font-size: 12px; font-weight: 700; }
.sec h2 { font-family: var(--disp); font-weight: 600; letter-spacing: -.015em; line-height: 1.05;
  font-size: clamp(28px, 4vw, 44px); color: var(--ink); margin: 12px 0 0; text-wrap: balance; }
.sec__lead { font-size: clamp(16px, 1.5vw, 18px); color: var(--ink-2); line-height: 1.6; margin-top: 14px; max-width: 60ch; }

/* ── A note for families ─────────────────────────────────────────── */
.note { position: relative; }
.note__card { background: #fff; border: 1px solid var(--border); border-radius: var(--r-lg);
  padding: clamp(30px, 5vw, 56px); box-shadow: 0 2px 6px rgba(58,46,58,.05), 0 24px 60px rgba(58,46,58,.07);
  max-width: 780px; position: relative; }
.note__card::before { /* torn-tape / heart accent */
  content: ""; position: absolute; top: -16px; left: 40px; width: 64px; height: 28px;
  background: color-mix(in srgb, var(--butter) 84%, transparent); border-radius: 8px; transform: rotate(-4deg);
  box-shadow: 0 4px 10px rgba(58,46,58,.08); }
.note__eyebrow { font-weight: 700; color: var(--plum); font-size: 14px; letter-spacing: .03em; }
.note__card h2 { font-family: var(--disp); font-weight: 600; font-size: clamp(24px, 3vw, 34px); color: var(--ink); margin: 6px 0 16px; }
.note__card p { font-size: clamp(16px, 1.4vw, 18px); line-height: 1.7; color: var(--ink-2); margin-bottom: 14px; }
.note__card p:last-of-type { margin-bottom: 0; }
.note__sign { display: inline-flex; align-items: center; gap: 10px; margin-top: 22px; font-weight: 700; color: var(--teal-deep); }

/* ── Two paths ───────────────────────────────────────────────────── */
.paths { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(16px, 2.4vw, 26px); margin-top: clamp(28px, 4vw, 44px); }
@media (max-width: 720px) { .paths { grid-template-columns: 1fr; } }
.path { position: relative; overflow: hidden; border-radius: var(--r-lg); padding: clamp(26px, 3.4vw, 40px);
  display: flex; flex-direction: column; min-height: 340px; text-decoration: none; color: var(--ink);
  border: 1px solid transparent; transition: transform .24s var(--ease-out), box-shadow .24s var(--ease-out); }
.path:hover { transform: translateY(-5px); text-decoration: none; box-shadow: 0 24px 54px rgba(58,46,58,.14); }
.path--toddler { background: var(--mint); }
.path--early { background: var(--steam); }
.path__age { align-self: flex-start; font-weight: 700; font-size: 13px; color: var(--ink-soft);
  background: rgba(255,255,255,.6); padding: 6px 13px; border-radius: 999px; }
.path__art { width: auto; height: clamp(124px, 15vw, 160px); display: block; margin: -6px 0 2px -6px; }
.path h3 { font-family: var(--disp); font-weight: 600; font-size: clamp(24px, 2.6vw, 30px); margin-top: auto; }
.path p { font-size: 16px; line-height: 1.55; color: var(--ink-2); margin-top: 8px; max-width: 34ch; }
.path__more { display: inline-flex; align-items: center; gap: 7px; margin-top: 18px; font-weight: 700; color: var(--plum-deep); }
.path__more svg { transition: transform .2s var(--ease-out); }
.path:hover .path__more svg { transform: translateX(4px); }

/* ── Pathway (bee dotted trail) ──────────────────────────────────── */
.pathway { background: linear-gradient(180deg, transparent, color-mix(in srgb, var(--beige) 55%, transparent) 40%, transparent); }
.trail { position: relative; margin-top: clamp(30px, 5vw, 56px); }
.trail__track { position: relative; width: 100%; }
.trail svg.route { width: 100%; height: 200px; overflow: visible; display: block; }
.trail__stages { display: grid; grid-template-columns: repeat(6, 1fr); gap: 8px; margin-top: 6px; }
@media (max-width: 760px) { .trail__stages { grid-template-columns: repeat(3, 1fr); row-gap: 22px; } }
.stage { text-align: center; position: relative; }
.stage__btn { appearance: none; background: none; border: none; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 8px; width: 100%; padding: 6px; border-radius: 16px; transition: background .18s; }
.stage__btn:hover, .stage__btn:focus-visible { background: rgba(255,255,255,.6); }
.stage__plant { width: auto; height: clamp(84px, 8.5vw, 116px); display: block; margin: 0 auto; }
.stage__name { font-weight: 700; font-size: 14px; color: var(--ink); }
.stage__age { font-size: 12px; color: var(--ink-3); }
.stage__pop { position: absolute; left: 50%; bottom: calc(100% + 8px); transform: translate(-50%, 6px);
  width: min(230px, 74vw); background: var(--plum-deep); color: #fff; border-radius: 14px; padding: 12px 14px;
  font-size: 13px; line-height: 1.5; box-shadow: 0 14px 34px rgba(142,74,123,.4);
  opacity: 0; visibility: hidden; transition: opacity .2s var(--ease-out), transform .2s var(--ease-out), visibility .2s; z-index: 20; }
.stage__pop::after { content:""; position:absolute; left:50%; bottom:-6px; width:12px; height:12px; background: var(--plum-deep); transform: translateX(-50%) rotate(45deg); border-radius: 0 0 3px 0; }
.stage__btn:hover + .stage__pop, .stage__btn:focus-visible + .stage__pop, .stage__pop.show { opacity: 1; visibility: visible; transform: translate(-50%, 0); }
.bee-rider { position: absolute; top: 0; left: 0; width: 40px; height: 40px; offset-rotate: 0deg; will-change: offset-distance; }

/* Mobile: the horizontal bee-trail can't line up with the wrapped stage grid,
   so retire it and let the stages stand on their own. */
@media (max-width: 760px) {
  .trail svg.route, .bee-rider { display: none; }
  .trail { margin-top: clamp(12px, 4vw, 26px); }
}
/* Mobile: stage tap-notes become bottom sheets so they never clip off-screen. */
@media (max-width: 760px) {
  .stage__pop {
    position: fixed; left: 0; right: 0; bottom: 0; top: auto; width: auto; z-index: 96;
    border-radius: 22px 22px 0 0; padding: 24px 20px calc(22px + env(safe-area-inset-bottom, 0px));
    font-size: 15px; line-height: 1.6; transform: translateY(102%);
    box-shadow: 0 -10px 40px rgba(142,74,123,.34);
    transition: transform .28s var(--ease-out), visibility .28s;
  }
  .stage__pop::after { display: none; } /* drop the little pointer arrow */
  .stage__btn:hover + .stage__pop:not(.show), .stage__btn:focus-visible + .stage__pop:not(.show) {
    opacity: 0; visibility: hidden; transform: translateY(102%); }
  .stage__pop.show { opacity: 1; visibility: visible; transform: translateY(0); }
  .stage__pop::before { /* grabber */
    content: ""; position: absolute; top: 9px; left: 50%; transform: translateX(-50%);
    width: 40px; height: 4px; border-radius: 999px; background: rgba(255,255,255,.5); }
  .stage__pop-title { font-family: var(--disp); font-weight: 700; font-size: 18px; margin: 6px 0 8px; }
  .stage__pop .pop__close { display: inline-flex; align-items: center; justify-content: center;
    margin-top: 16px; width: 100%; min-height: 46px; border: none; border-radius: 14px; cursor: pointer;
    background: #fff; color: var(--plum-deep); font-family: var(--body); font-weight: 700; font-size: 15px; }
}

/* ── Trust signal ────────────────────────────────────────────────── */
.trust { }
.trust__card { background: var(--plum-deep); color: #fff; border-radius: var(--r-lg);
  padding: clamp(32px, 5vw, 60px); position: relative; overflow: hidden; }
.trust__row { display: grid; grid-template-columns: auto 1fr; gap: clamp(20px, 4vw, 48px); align-items: center; }
@media (max-width: 720px) { .trust__row { grid-template-columns: 1fr; gap: 18px; } }
.trust__big { font-family: var(--disp); font-weight: 700; font-size: clamp(64px, 12vw, 128px); line-height: .86; letter-spacing: -.03em; }
.trust__big span { display: block; font-size: clamp(15px, 1.6vw, 18px); font-weight: 600; letter-spacing: .02em; opacity: .92; margin-top: 8px; }
.trust__body p { font-size: clamp(16px, 1.5vw, 19px); line-height: 1.6; opacity: .95; }
.trust__schools { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 18px; }
.trust__schools span { font-weight: 600; font-size: 13px; background: rgba(255,255,255,.14); padding: 6px 13px; border-radius: 999px; }
.trust__ib { display: inline-block; margin-top: 18px; font-weight: 700; font-size: 13px; background: rgba(255,255,255,.92); color: var(--plum-deep); padding: 8px 15px; border-radius: 999px; }

/* ── Hero social-proof taste ─────────────────────────────────────── */
/* Rotating real testimonial, tap to jump to the full reviews */
.hero__proof { display: inline-flex; align-items: center; gap: 13px; margin-top: 22px; max-width: 460px;
  padding: 10px 14px 10px 10px; border-radius: 16px; border: 1px solid transparent; transition: border-color .18s, background .18s; }
.hero__proof:hover { text-decoration: none; background: color-mix(in srgb, #fff 55%, transparent); border-color: color-mix(in srgb, var(--plum) 12%, transparent); }
.hero__rev-av { width: 42px; height: 42px; flex: 0 0 auto; border-radius: 50%; display: grid; place-items: center;
  overflow: hidden; box-shadow: 0 3px 8px rgba(58,46,58,.16);
  transition: background .5s var(--ease-out), opacity .55s var(--ease-out), transform .55s var(--ease-out); }
.hero__rev-av img { width: 100%; height: 100%; object-fit: cover; display: block; }
.hero__rev-body { display: flex; flex-direction: column; gap: 2px; min-width: 0; transition: opacity .55s var(--ease-out), transform .55s var(--ease-out); }
.hero__proof .stars { color: var(--gold); margin-bottom: 2px; }
.hero__rev-quote { font-size: 14px; line-height: 1.45; color: var(--ink); font-weight: 500;
  display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden; }
.hero__rev-name { font-size: 12.5px; color: var(--ink-2); font-weight: 600; }
.hero__proof.is-fading .hero__rev-av { opacity: 0; transform: scale(.9); }
.hero__proof.is-fading .hero__rev-body { opacity: 0; transform: translateY(7px); }

/* ── Reviews (real Google reviews) ───────────────────────────────── */
.reviews { padding-top: clamp(20px, 4vw, 40px); }
.stars { display: inline-flex; align-items: center; gap: 1px; color: var(--gold); line-height: 0; }
.rev-grid { columns: 3 300px; column-gap: 22px; margin-top: clamp(26px, 4vw, 40px); }
@media (max-width: 900px) { .rev-grid { columns: 2 280px; } }
@media (max-width: 560px) { .rev-grid { columns: 1; } }
.rev-card { break-inside: avoid; margin: 0 0 22px; background: #fff; border-radius: var(--r-card);
  padding: 22px 22px 20px; box-shadow: 0 8px 26px rgba(58,46,58,.08); border: 1px solid color-mix(in srgb, var(--plum) 8%, transparent); }
.rev-top { display: flex; align-items: center; gap: 11px; }
.rev-av { width: 42px; height: 42px; flex: 0 0 auto; border-radius: 50%; overflow: hidden; }
.rev-av img { width: 100%; height: 100%; object-fit: cover; display: block; }
.rev-who { display: flex; flex-direction: column; line-height: 1.25; min-width: 0; }
.rev-name { font-weight: 700; font-size: 15px; color: var(--ink); }
.rev-date { font-size: 12.5px; color: var(--ink-2); }
.rev-g { margin-left: auto; display: inline-flex; opacity: .9; }
.rev-stars { margin: 14px 0 10px; }
.rev-text { font-size: 15px; line-height: 1.65; color: var(--ink-soft); margin: 0; }
.rev-all { display: inline-flex; align-items: center; gap: 8px; margin-top: 8px; font-weight: 700; font-size: 15px; color: var(--teal-deep); }
.rev-all:hover { text-decoration: none; color: var(--teal-deep); }
.rev-all svg { transition: transform .2s var(--ease-out); }
.rev-all:hover svg { transform: translateX(3px); }

/* ── Closing band + footer ───────────────────────────────────────── */
.closing { background: var(--teal-deep); color: #fff; position: relative; overflow: visible; margin-top: clamp(40px, 6vw, 80px); }
.closing__in { max-width: 1000px; margin: 0 auto; padding: clamp(48px, 8vw, 92px) clamp(20px, 4vw, 44px); text-align: center; position: relative; z-index: 1; }
.closing__tag { font-family: var(--disp); font-weight: 600; font-size: clamp(26px, 4vw, 44px); line-height: 1.12; text-wrap: balance; }
.closing__sub { font-size: clamp(16px, 1.5vw, 18px); opacity: .92; margin-top: 14px; }
.closing__cta { display: flex; flex-wrap: wrap; gap: 14px; justify-content: center; margin-top: 30px; }
.closing .cta--ghost { background: #fff; }
.closing__ask { display:inline-flex; align-items:center; gap:7px; color:#fff; font-weight:600; margin-top: 20px; opacity:.94; }
.closing__ask:hover { color:#fff; text-decoration: none; opacity: 1; }

.foot { background: var(--ink); color: #e9dee9; }
.foot__in { max-width: 1200px; margin: 0 auto; padding: clamp(40px, 6vw, 64px) clamp(20px, 4vw, 44px);
  display: grid; grid-template-columns: 1.4fr 1fr 1fr; gap: 32px; }
@media (max-width: 720px) { .foot__in { grid-template-columns: 1fr; gap: 26px; } }
.foot__brand img { height: 56px; width: auto; filter: brightness(0) invert(1); opacity: .96; }
.foot__brand p { color: #c9bcc9; font-size: 14.5px; line-height: 1.7; margin-top: 14px; max-width: 34ch; }
.foot__col h4 { font-family: var(--disp); font-weight: 600; font-size: 15px; color: #fff; margin-bottom: 12px; }
.foot__col a, .foot__col p { display: block; color: #c9bcc9; font-size: 14.5px; line-height: 1.9; }
.foot__col a:hover { color: #fff; }
.foot__base { border-top: 1px solid rgba(255,255,255,.1); margin-top: 8px; }
.foot__base .wrap-lg { padding-top: 18px; padding-bottom: 18px; display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap; font-size: 13px; color: #a394a3; }

/* ── Hero scene grow animation ───────────────────────────────────── */
#heroScene .stem { stroke-dasharray: 100; stroke-dashoffset: 100; animation: hdraw 1.5s var(--ease-out) .35s forwards; }
#heroScene .leaf { transform-box: fill-box; transform: scale(0); animation: hunfurl .7s var(--ease-out) forwards; }
#heroScene .leaf-l { transform-origin: 92% 82%; animation-delay: 1.25s; }
#heroScene .leaf-r { transform-origin: 8% 82%; animation-delay: 1.4s; }
#heroScene .bloom { transform-box: fill-box; transform-origin: 50% 100%; transform: scale(0); animation: hblossom .85s var(--ease-out) 1.7s forwards; }
#heroScene .pop-heart svg { animation: hpulse 3.4s ease-in-out 2.6s infinite; opacity: 0; transform-box: fill-box; transform-origin: center; }
#heroScene .pop-heart.d svg { animation-delay: 3.4s; }
@keyframes hdraw { to { stroke-dashoffset: 0; } }
@keyframes hunfurl { to { transform: scale(1); } }
@keyframes hblossom { 0% { transform: scale(0); } 70% { transform: scale(1.08); } 100% { transform: scale(1); } }
@keyframes hpulse { 0%, 100% { opacity: .55; } 50% { opacity: 1; } }
@media (prefers-reduced-motion: reduce) {
  #heroScene .stem { stroke-dashoffset: 0; } #heroScene .leaf, #heroScene .bloom { transform: none; }
  #heroScene .pop-heart svg { opacity: .8; } .beeflyer { display: none; }
}

/* decorative helpers */
.heart-mark { color: var(--pink); }
.sprig { color: var(--green); }

/* ── "Coming soon" modal ─────────────────────────────────────────── */
.cs { position: fixed; inset: 0; z-index: 120; display: grid; place-items: center; padding: 20px; }
.cs[hidden] { display: none; }
.cs__scrim { position: absolute; inset: 0; background: color-mix(in srgb, var(--plum-deep) 46%, transparent);
  backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); opacity: 0; transition: opacity .26s var(--ease-out); }
.cs.is-open .cs__scrim { opacity: 1; }
.cs__card {
  position: relative; z-index: 1; width: min(480px, 100%);
  background:
    radial-gradient(120% 80% at 82% -10%, rgba(75,194,195,.16), transparent 60%),
    radial-gradient(90% 60% at 6% 0%, rgba(235,180,83,.16), transparent 55%),
    var(--cream);
  border: 1px solid color-mix(in srgb, var(--plum) 12%, transparent);
  border-radius: var(--r-lg); padding: 40px clamp(24px, 5vw, 44px) 32px; text-align: center;
  box-shadow: 0 30px 70px rgba(58,46,58,.32);
  transform: translateY(16px) scale(.96); opacity: 0;
  transition: transform .3s var(--ease-out), opacity .3s var(--ease-out);
}
.cs.is-open .cs__card { transform: none; opacity: 1; }
.cs__x { position: absolute; top: 12px; right: 12px; width: 34px; height: 34px; border: none; border-radius: 50%;
  background: color-mix(in srgb, var(--plum) 10%, #fff); color: var(--plum-deep); font-size: 24px; line-height: 1;
  cursor: pointer; display: grid; place-items: center; transition: background .16s; }
.cs__x:hover { background: color-mix(in srgb, var(--plum) 20%, #fff); }

.cs__art { position: relative; height: 116px; margin-bottom: 6px; }
.cs__flower { height: 116px; width: auto; }
.cs__acc { position: absolute; height: auto; animation: floaty-hero 7s ease-in-out infinite; }
.cs__acc--h { width: 30px; top: 4px; left: 30%; animation-delay: -1s; }
.cs__acc--b { width: 48px; top: 14px; right: 26%; animation-delay: -3s; }
.cs__acc--s { width: 30px; bottom: 2px; right: 30%; animation-delay: -2s; }
@media (prefers-reduced-motion: reduce) { .cs__acc { animation: none; } }

.cs__badge { display: inline-block; font-weight: 700; font-size: 12px; letter-spacing: .06em; text-transform: uppercase;
  color: var(--teal-deep); background: color-mix(in srgb, var(--teal) 18%, #fff); padding: 6px 14px; border-radius: 999px; }
.cs__card h2 { font-family: var(--disp); font-weight: 600; font-size: clamp(22px, 3.4vw, 28px); color: var(--ink); margin: 14px 0 8px; text-wrap: balance; }
.cs__sub { font-size: 15.5px; line-height: 1.62; color: var(--ink-2); margin: 0 auto; max-width: 34ch; }
.cs__sub b { color: var(--plum-deep); font-weight: 700; }
.cs__cta { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; margin-top: 26px; }
.cs__cta .cta { cursor: pointer; }

/* ── Booking widget ──────────────────────────────────────────────── */
.bk { position: fixed; inset: 0; z-index: 130; display: grid; place-items: center; padding: 20px; }
.bk[hidden] { display: none; }
.bk__scrim { position: absolute; inset: 0; background: color-mix(in srgb, var(--plum-deep) 48%, transparent);
  backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); opacity: 0; transition: opacity .26s var(--ease-out); }
.bk.is-open .bk__scrim { opacity: 1; }
.bk__card { position: relative; z-index: 1; width: min(460px, 100%); max-height: min(88vh, 720px); display: flex; flex-direction: column;
  background: var(--cream); border: 1px solid color-mix(in srgb, var(--plum) 12%, transparent); border-radius: var(--r-lg);
  box-shadow: 0 30px 70px rgba(58,46,58,.34); overflow: hidden;
  transform: translateY(16px) scale(.97); opacity: 0; transition: transform .3s var(--ease-out), opacity .3s var(--ease-out); }
.bk.is-open .bk__card { transform: none; opacity: 1; }
.bk__x { position: absolute; top: 12px; right: 12px; z-index: 2; width: 34px; height: 34px; border: none; border-radius: 50%;
  background: color-mix(in srgb, var(--plum) 10%, #fff); color: var(--plum-deep); font-size: 24px; line-height: 1; cursor: pointer; display: grid; place-items: center; }
.bk__x:hover { background: color-mix(in srgb, var(--plum) 20%, #fff); }
.bk__head { display: flex; align-items: center; gap: 12px; padding: 20px 22px 16px; flex: 0 0 auto; }
.bk__avatar { width: 42px; height: 42px; flex: 0 0 auto; border-radius: 50%;
  background: #fff url('/assets/illustrations/prog-toddler.webp?v=49') center/86% no-repeat; border: 1px solid var(--border); }
.bk__titles { display: flex; flex-direction: column; line-height: 1.2; }
.bk__titles b { font-family: var(--disp); font-weight: 600; font-size: 19px; color: var(--ink); }
.bk__titles small { font-size: 13px; color: var(--ink-2); }
.bk__body { flex: 1; min-height: 0; overflow-y: auto; padding: 4px 22px 24px; }

.bk-loading, .bk-empty { color: var(--ink-2); font-size: 15px; padding: 16px 2px; }
.bk-choices { display: flex; flex-direction: column; gap: 12px; padding-top: 6px; }
.bk-choice { text-align: left; background: #fff; border: 1.5px solid var(--border); border-radius: 16px; padding: 16px 18px; cursor: pointer;
  display: flex; flex-direction: column; gap: 3px; transition: border-color .16s, transform .16s; }
.bk-choice:hover { border-color: var(--teal); transform: translateY(-1px); }
.bk-choice__t { font-family: var(--disp); font-weight: 600; font-size: 17px; color: var(--ink); }
.bk-choice__d { font-size: 13.5px; color: var(--ink-2); }

.bk-days { display: flex; gap: 8px; overflow-x: auto; padding: 4px 2px 12px; scroll-snap-type: x proximity; }
.bk-day { flex: 0 0 auto; scroll-snap-align: start; background: #fff; border: 1.5px solid var(--border); border-radius: 14px;
  padding: 9px 13px; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 1px; min-width: 60px; transition: border-color .14s, background .14s; }
.bk-day:hover { border-color: var(--teal); }
.bk-day.is-on { background: var(--teal-deep); border-color: var(--teal-deep); color: #fff; }
.bk-day__dow { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .03em; opacity: .8; }
.bk-day__d { font-size: 14px; font-weight: 700; }
.bk-slots { display: grid; grid-template-columns: repeat(auto-fill, minmax(96px, 1fr)); gap: 8px; margin-top: 6px; }
.bk-slot { background: #fff; border: 1.5px solid var(--border); border-radius: 12px; padding: 11px 8px; cursor: pointer;
  font-weight: 700; font-size: 14px; color: var(--plum-deep); transition: border-color .14s, background .14s, transform .14s; }
.bk-slot span { display: block; font-weight: 600; font-size: 11.5px; color: var(--ink-2); }
.bk-slot:hover { border-color: var(--pink); background: color-mix(in srgb, var(--pink) 7%, #fff); transform: translateY(-1px); }

/* ── Month calendar (trial date picker) ── */
.bk-cal { padding: 2px 2px 4px; }
.bk-cal__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.bk-cal__title { font-family: var(--disp); font-weight: 700; font-size: 16px; color: var(--plum-deep); }
.bk-cal__nav { background: color-mix(in srgb, var(--plum) 9%, #fff); border: 1.5px solid var(--border); color: var(--plum-deep);
  width: 34px; height: 34px; border-radius: 10px; cursor: pointer; display: grid; place-items: center; font-size: 17px; line-height: 1;
  transition: border-color .14s, background .14s; }
.bk-cal__nav:hover:not(:disabled) { border-color: var(--teal); background: color-mix(in srgb, var(--teal) 10%, #fff); }
.bk-cal__nav:disabled { opacity: .32; cursor: default; }
.bk-cal__dows { display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px; margin-bottom: 6px; }
.bk-cal__dow { text-align: center; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--ink-2); opacity: .7; }
.bk-cal__grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px; }
.bk-cal__cell { aspect-ratio: 1 / 1; }
.bk-cal__day { width: 100%; height: 100%; background: #fff; border: 1.5px solid var(--border); border-radius: 12px;
  font-family: var(--body); font-weight: 700; font-size: 15px; color: var(--ink); cursor: pointer;
  display: grid; place-items: center; transition: border-color .14s, background .14s, transform .14s; }
.bk-cal__day:hover { border-color: var(--teal); transform: translateY(-1px); }
.bk-cal__day.is-on { background: var(--teal-deep); border-color: var(--teal-deep); color: #fff; }
.bk-cal__cell--empty { visibility: hidden; }
.bk-cal__day--off { color: color-mix(in srgb, var(--ink) 32%, #fff); border-color: color-mix(in srgb, var(--border) 55%, transparent);
  background: color-mix(in srgb, var(--cream-sink) 40%, #fff); cursor: default; }
.bk-cal__day--off:hover { border-color: color-mix(in srgb, var(--border) 55%, transparent); transform: none; }
.bk-cal__times { margin-top: 16px; }
.bk-cal__times-h { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--ink-2); margin-bottom: 8px; }
.bk-cal__hint { text-align: center; color: var(--ink-2); font-size: 14px; padding: 14px 0 4px; }

.bk-form { display: flex; flex-direction: column; gap: 12px; padding-top: 8px; }
.bk-form label { display: flex; flex-direction: column; gap: 5px; font-size: 13px; font-weight: 600; color: var(--ink-2); }
.bk-form input, .bk-form textarea { font-family: var(--body); font-size: 15px; color: var(--ink); background: #fff;
  border: 1.5px solid var(--border); border-radius: 12px; padding: 11px 13px; width: 100%; }
.bk-form input:focus, .bk-form textarea:focus { outline: none; border-color: var(--teal); }
.bk-row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.bk-submit { margin-top: 6px; width: 100%; justify-content: center; cursor: pointer; border: none; }
.bk-submit:disabled { opacity: .7; cursor: default; }
.bk-back { background: none; border: none; color: var(--ink-2); font-family: var(--body); font-weight: 600; font-size: 14px; cursor: pointer; padding: 6px; }
.bk-back:hover { color: var(--plum-deep); }
.bk-alert { background: color-mix(in srgb, var(--pink) 12%, #fff); color: var(--pink-deep); border-radius: 10px; padding: 9px 12px; font-size: 13.5px; font-weight: 600; }

.bk-done { text-align: center; padding: 18px 6px 8px; }
.bk-done__mark { width: 56px; height: 56px; margin: 0 auto 14px; border-radius: 50%; background: var(--green); color: #fff; display: grid; place-items: center; font-size: 30px; }
.bk-done__when { font-family: var(--disp); font-weight: 600; font-size: 19px; color: var(--plum-deep); margin-bottom: 8px; }
.bk-done__msg { font-size: 14.5px; line-height: 1.6; color: var(--ink-2); max-width: 34ch; margin: 0 auto 20px; }
.bk-done__close { cursor: pointer; }

@media (max-width: 560px) {
  .bk { padding: 0; place-items: end center; }
  .bk__card { width: 100%; max-height: 92vh; max-height: 92dvh; border-radius: 24px 24px 0 0;
    transform: translateY(100%); }
  .bk-row { grid-template-columns: 1fr; }
}

/* ── Floating front desk (launcher + chat panel) ─────────────────── */
.fd { position: fixed; right: clamp(14px, 3vw, 24px); bottom: clamp(14px, 3vw, 24px); z-index: 90; }
.fd__fab {
  display: inline-flex; align-items: center; gap: 9px;
  background: var(--pink); color: #fff; font-family: var(--body); font-weight: 700; font-size: 15px;
  border: none; border-radius: 999px; padding: 13px 20px 13px 15px; cursor: pointer;
  box-shadow: 0 12px 28px rgba(231,84,128,.42);
  transition: transform .18s var(--ease-out), box-shadow .18s var(--ease-out), background .18s;
}
.fd__fab:hover { background: var(--pink-deep); transform: translateY(-2px); box-shadow: 0 16px 34px rgba(231,84,128,.52); }
.fd__fab svg { flex: 0 0 auto; }
.fd.is-open .fd__fab { opacity: 0; visibility: hidden; transform: scale(.9); transition: opacity .18s, visibility .18s, transform .18s; }
/* hide the floating button while a mobile info sheet is open, so they never overlap */
body.pop-open .fd__fab { opacity: 0; visibility: hidden; pointer-events: none; animation: none; transition: opacity .15s, visibility .15s; }

.fd__panel {
  position: absolute; right: 0; bottom: 0;
  width: min(384px, calc(100vw - 28px)); height: min(600px, calc(100vh - 100px));
  background: var(--cream-2); border: 1px solid var(--border); border-radius: 24px; overflow: hidden;
  display: flex; flex-direction: column;
  box-shadow: 0 24px 64px rgba(58,46,58,.3);
  transform-origin: bottom right; transform: translateY(18px) scale(.96); opacity: 0; visibility: hidden;
  transition: opacity .24s var(--ease-out), transform .24s var(--ease-out), visibility .24s;
}
.fd.is-open .fd__panel { opacity: 1; visibility: visible; transform: none; }
.fd__head { display: flex; align-items: center; gap: 11px; padding: 13px 14px; background: var(--teal-deep); color: #fff; flex: 0 0 auto; }
.fd__avatar { width: 40px; height: 40px; border-radius: 50%; flex: 0 0 auto;
  background: #fff url('/assets/illustrations/prog-toddler.webp?v=49') center/86% no-repeat; border: 1px solid rgba(255,255,255,.5); }
.fd__title { display: flex; flex-direction: column; line-height: 1.15; }
.fd__title b { font-family: var(--disp); font-weight: 600; font-size: 15.5px; }
.fd__title small { font-size: 12px; opacity: .9; }
.fd__live { margin-left: auto; font-size: 11px; font-weight: 700; background: rgba(255,255,255,.18); padding: 4px 10px; border-radius: 999px; display: inline-flex; align-items: center; gap: 6px; }
.fd__live::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--green); }
.fd__close { flex: 0 0 auto; width: 30px; height: 30px; margin-left: 4px; border: none; border-radius: 50%;
  background: rgba(255,255,255,.16); color: #fff; font-size: 22px; line-height: 1; cursor: pointer; display: grid; place-items: center; }
.fd__close:hover { background: rgba(255,255,255,.3); }

.fd__head { position: relative; overflow: hidden; }
.fd__decor { position: absolute; height: auto; pointer-events: none; opacity: .5; animation: floaty-hero 7s ease-in-out infinite; }
.fd__decor--h { width: 22px; top: 6px; right: 96px; animation-delay: -1.5s; }
.fd__decor--s { width: 24px; bottom: 4px; right: 120px; animation-delay: -3s; }
.fd__avatar, .fd__title, .fd__live, .fd__close { position: relative; z-index: 1; }
/* a faint illustration watermark so the whole panel feels part of the set */
.fd__wm { position: absolute; right: -18px; bottom: -14px; width: 150px; height: auto; opacity: .07; pointer-events: none; z-index: 0; }
@media (prefers-reduced-motion: reduce) { .fd__decor { animation: none; } }

/* the chat card fills the panel; the log scrolls, the composer stays put */
.fd .chatcard { flex: 1; min-height: 0; max-width: none; margin: 0; border: 0; box-shadow: none; background: transparent; border-radius: 0; padding: 14px; display: flex; flex-direction: column; position: relative; z-index: 1; }
.fd .chat-log { flex: 1; min-height: 0; overflow-y: auto; }
.fd .composer-wrap { flex: 0 0 auto; }

@media (max-width: 560px) {
  .fd { right: 0; left: 0; bottom: 0; }
  /* icon-only round pink button that gently bounces to invite a tap */
  .fd__fab-label { display: none; }
  .fd__fab { position: fixed; right: 16px; bottom: 16px; width: 58px; height: 58px; padding: 0;
    border-radius: 50%; justify-content: center; animation: fd-bounce 2.6s var(--ease-out) infinite; }
  .fd__fab svg { width: 24px; height: 24px; }
  .fd__fab:hover, .fd__fab:active { transform: none; }
  .fd__panel { position: fixed; right: 0; left: 0; bottom: 0; width: 100%; height: 88vh; height: 88dvh; border-radius: 24px 24px 0 0; }
}
@keyframes fd-bounce { 0%, 55%, 100% { transform: translateY(0); } 72% { transform: translateY(-9px); } 88% { transform: translateY(-3px); } }
@media (prefers-reduced-motion: reduce) {
  .fd__panel, .fd.is-open .fd__fab { transition: none; }
  .fd__fab { animation: none; }
}

/* ══════════════════════════════════════════════════════════════════
   Inner pages — same workshop language: cream ground, pastel tint
   cards, generated flat illustrations, reveals. body.ws--page keeps
   the topbar visible at the top (no logo hero on these pages).
   ══════════════════════════════════════════════════════════════════ */

/* Page hero */
.phero { position: relative; overflow: visible; padding: clamp(108px, 14vw, 150px) 0 clamp(16px, 3vw, 36px); }
.phero__in { max-width: 1200px; margin: 0 auto; padding: 0 clamp(20px, 4vw, 44px);
  display: grid; grid-template-columns: 1.25fr .75fr; gap: clamp(24px, 5vw, 64px); align-items: center; position: relative; z-index: 1; }
.phero__kick { display: inline-flex; align-items: center; gap: 8px; font-weight: 700; font-size: 13px; letter-spacing: .04em; color: var(--plum); text-transform: uppercase; }
.phero h1 { font-family: var(--disp); font-weight: 600; letter-spacing: -.015em; line-height: 1.06;
  font-size: clamp(30px, 4.6vw, 52px); color: var(--ink); margin: 10px 0 0; text-wrap: balance; }
.phero h1 em { font-style: normal; color: var(--plum); }
.phero__ages { display: inline-block; margin-top: 12px; font-weight: 700; font-size: 13.5px; color: var(--teal-deep);
  background: color-mix(in srgb, var(--teal) 16%, #fff); padding: 6px 14px; border-radius: 999px; }
.phero__lead { font-size: clamp(16px, 1.6vw, 19px); color: var(--ink-2); line-height: 1.7; margin-top: 16px; max-width: 58ch; }
.phero__cta { display: flex; flex-wrap: wrap; align-items: center; gap: 14px; margin-top: 26px; }
.phero__art { justify-self: center; width: clamp(180px, 22vw, 300px); position: relative; }
.phero__art img { width: 100%; height: auto; display: block; }
.phero__art .pa { position: absolute; height: auto; animation: floaty-hero 8s ease-in-out infinite; }
@media (max-width: 840px) {
  .phero__in { grid-template-columns: 1fr; }
  .phero__art { width: clamp(150px, 40vw, 220px); order: -1; }
}

/* Readable prose blocks */
.prose { max-width: 66ch; }
.prose p { font-size: clamp(16px, 1.45vw, 18px); line-height: 1.75; color: var(--ink-2); margin: 0 0 16px; }
.prose p:last-child { margin-bottom: 0; }
.prose b, .prose strong { color: var(--ink); }

/* Two-column section: prose on one side, a floating illustration on the other
   (fills the desktop dead space; stacks on smaller screens). */
/* Text keeps a comfortable wide column; the art is a modest side panel that
   just fills the leftover space (never squeezes the copy). */
.splitrow { display: grid; grid-template-columns: minmax(0, 1fr) minmax(200px, 320px); gap: clamp(28px, 4vw, 60px); align-items: center; }
.splitrow--flip { grid-template-columns: minmax(200px, 320px) minmax(0, 1fr); }
.splitrow__art { position: relative; justify-self: center; width: 100%; max-width: 300px; aspect-ratio: 1 / 1; }
.splitrow__art .ci { position: absolute; height: auto; display: block; }
.splitrow__art .ci--plant { filter: drop-shadow(0 12px 24px rgba(58,46,58,.12)); }
.splitrow__art .ci--float { animation: floaty-hero 7.5s ease-in-out infinite; }
.splitrow__art .ci--float.d { animation-duration: 8.6s; animation-delay: -3s; }
@media (max-width: 820px) {
  .splitrow, .splitrow--flip { grid-template-columns: 1fr; gap: 18px; }
  .splitrow__art { max-width: 240px; order: 2; }
}
@media (prefers-reduced-motion: reduce) { .splitrow__art .ci--float { animation: none; } }

/* Pull-quote band */
.pull { max-width: 900px; margin: 0 auto; text-align: center; }
.pull p { font-family: var(--disp); font-weight: 600; font-size: clamp(21px, 2.8vw, 30px); line-height: 1.35; color: var(--plum-deep); text-wrap: balance; }

/* Pastel value cards (Vision / Mission / Values …) */
.vcards { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 16px; margin-top: clamp(22px, 3.5vw, 36px); }
.vcard { border-radius: var(--r-card); padding: clamp(22px, 3vw, 30px); }
.vcard--mint { background: var(--mint); } .vcard--blush { background: var(--blush); }
.vcard--lilac { background: var(--lilac); } .vcard--butter { background: var(--butter); } .vcard--steam { background: var(--steam); }
.vcard h3 { font-family: var(--disp); font-weight: 600; font-size: 19px; color: var(--ink); margin: 0 0 8px; }
.vcard p { font-size: 15px; line-height: 1.65; color: var(--ink-soft); margin: 0; }

/* Schedule chips */
.timechips { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 16px; }
.timechips span { font-weight: 700; font-size: 15px; color: var(--teal-deep);
  background: #fff; border: 1.5px solid color-mix(in srgb, var(--teal) 40%, transparent); padding: 10px 18px; border-radius: 999px; }

/* Session cards — informational blocks for the class time slots, tinted by
   part of day with a little sun. Not buttons, so not pill-shaped. */
.sessions { display: grid; grid-template-columns: repeat(auto-fit, minmax(158px, 1fr)); gap: 14px; margin-top: 22px; max-width: 660px; }
.session { position: relative; border-radius: 20px; padding: 20px 20px 18px;
  background: color-mix(in srgb, var(--butter) 55%, #fff); border: 1px solid color-mix(in srgb, var(--gold) 22%, transparent); }
.session--am  { background: color-mix(in srgb, var(--mint) 48%, #fff);   border-color: color-mix(in srgb, var(--teal) 20%, transparent); }
.session--mid { background: color-mix(in srgb, var(--butter) 62%, #fff); border-color: color-mix(in srgb, var(--gold) 24%, transparent); }
.session--pm  { background: color-mix(in srgb, var(--peach) 55%, #fff);  border-color: color-mix(in srgb, var(--pink) 18%, transparent); }
.session__sun { display: block; width: 24px; height: 24px; border-radius: 50%; margin-bottom: 13px;
  background: radial-gradient(circle at 40% 38%, #FDEAA6, var(--gold));
  box-shadow: 0 0 0 5px color-mix(in srgb, var(--gold) 18%, transparent); }
.session--pm .session__sun { background: radial-gradient(circle at 40% 38%, #FFD2B0, var(--pink));
  box-shadow: 0 0 0 5px color-mix(in srgb, var(--pink) 16%, transparent); }
.session__part { display: block; font-weight: 700; font-size: 12px; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-2); }
.session__time { display: block; margin-top: 4px; font-family: var(--disp); font-weight: 700; font-size: clamp(19px, 2.3vw, 24px); color: var(--plum-deep); font-variant-numeric: tabular-nums; }

/* Class cards (Seeds, Seedlings, Buds, Blooms, Bees) */
.ccards { display: grid; grid-template-columns: repeat(auto-fit, minmax(270px, 1fr)); gap: 18px; margin-top: clamp(22px, 3.5vw, 36px); }
.ccard { background: #fff; border: 1px solid color-mix(in srgb, var(--plum) 9%, transparent); border-radius: var(--r-card);
  padding: clamp(22px, 3vw, 30px); box-shadow: 0 8px 26px rgba(58,46,58,.07); display: flex; flex-direction: column; }
.ccard__art { height: 108px; margin-bottom: 14px; }
.ccard__art img { height: 100%; width: auto; display: block; }
.ccard__tag { font-weight: 700; font-size: 12px; letter-spacing: .05em; text-transform: uppercase; color: var(--plum); }
.ccard h3 { font-family: var(--disp); font-weight: 600; font-size: 21px; color: var(--ink); margin: 4px 0 10px; }
.ccard p { font-size: 15px; line-height: 1.65; color: var(--ink-2); margin: 0 0 16px; }
.ccard__meta { margin-top: auto; display: flex; flex-direction: column; gap: 8px; }
.ccard__meta span { display: inline-flex; align-items: center; gap: 8px; font-weight: 600; font-size: 14px; color: var(--ink); }
.ccard__meta .dotc { width: 8px; height: 8px; border-radius: 50%; background: var(--gold); flex: 0 0 auto; }
.ccard__fee { font-family: var(--disp); font-weight: 700; font-size: 18px; color: var(--plum-deep); }
.ccard__note { font-size: 13.5px; color: var(--ink-2); margin-top: 14px; }

/* Feature grid (What makes the program different / school life) */
.featgrid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 16px; margin-top: clamp(22px, 3.5vw, 36px); }
.feat { background: #fff; border: 1px solid var(--border); border-radius: var(--r-card); padding: clamp(20px, 2.6vw, 26px); display: flex; flex-direction: column; }
.feat h3 { font-family: var(--disp); font-weight: 600; font-size: 17.5px; color: var(--ink); margin: 0 0 8px; display: flex; align-items: center; gap: 9px; }
.feat h3 .fdot { width: 10px; height: 10px; border-radius: 50%; flex: 0 0 auto; }
.feat p { font-size: 14.5px; line-height: 1.65; color: var(--ink-2); margin: 0; }
/* Expandable copy: clamp to a few lines, reveal on click (toggle hidden by JS
   when the text already fits). */
.feat__body { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 4; overflow: hidden; }
.feat.is-open .feat__body { -webkit-line-clamp: unset; overflow: visible; }
.feat__toggle { align-self: flex-start; margin-top: 12px; padding: 0; background: none; border: none; cursor: pointer;
  display: inline-flex; align-items: center; gap: 7px; font-family: var(--body); font-weight: 700; font-size: 13.5px; color: var(--teal-deep); }
.feat__toggle::after { content: ""; width: 7px; height: 7px; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor;
  transform: rotate(45deg) translateY(-1px); transition: transform .22s var(--ease-out); }
.feat.is-open .feat__toggle::after { transform: rotate(-135deg) translateY(1px); }
.feat__toggle[hidden] { display: none; }

/* FAQ accordion (details/summary, no JS) */
.faq { max-width: 780px; margin-top: clamp(20px, 3vw, 32px); border-top: none; }
.faq details { background: #fff; border: 1px solid var(--border); border-radius: 16px; margin-bottom: 10px; overflow: hidden; }
.faq summary { list-style: none; cursor: pointer; display: flex; align-items: center; justify-content: space-between; gap: 14px;
  padding: 16px 20px; font-weight: 700; font-size: 15.5px; color: var(--ink); }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: "+"; flex: 0 0 auto; width: 26px; height: 26px; border-radius: 50%;
  background: color-mix(in srgb, var(--teal) 16%, #fff); color: var(--teal-deep); font-weight: 700; font-size: 17px;
  display: grid; place-items: center; transition: transform .2s var(--ease-out); }
.faq details[open] summary::after { content: "–"; transform: rotate(180deg); background: var(--teal); color: #fff; }
.faq details p { padding: 0 20px 18px; margin: 0; font-size: 15px; line-height: 1.7; color: var(--ink-2); max-width: 64ch; }
.faq details[open] summary { color: var(--plum-deep); }

/* Enrollment steps */
.steps { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 16px; margin-top: clamp(22px, 3.5vw, 36px); counter-reset: step; }
.step { background: #fff; border: 1px solid var(--border); border-radius: var(--r-card); padding: clamp(20px, 3vw, 28px); position: relative; }
.step::before { counter-increment: step; content: counter(step); position: absolute; top: -14px; left: 20px;
  width: 30px; height: 30px; border-radius: 50%; background: var(--pink); color: #fff; font-weight: 700; font-size: 15px;
  display: grid; place-items: center; box-shadow: 0 4px 10px rgba(231,84,128,.35); }
.step__art { height: 86px; margin-bottom: 12px; }
.step__art img { height: 100%; width: auto; }
.step h3 { font-family: var(--disp); font-weight: 600; font-size: 18px; color: var(--ink); margin: 0 0 8px; }
.step p { font-size: 14.5px; line-height: 1.65; color: var(--ink-2); margin: 0; }

/* Pathway stage rows (alternating) */
.stagerow { display: grid; grid-template-columns: 200px 1fr; gap: clamp(22px, 4vw, 48px); align-items: start;
  padding: clamp(26px, 4vw, 40px) 0; border-top: 1px dashed color-mix(in srgb, var(--gold) 55%, transparent); }
.stagerow:first-of-type { border-top: none; }
.stagerow__art { justify-self: center; text-align: center; }
.stagerow__art img { height: clamp(110px, 12vw, 150px); width: auto; }
.stagerow__art .lvl { display: block; margin-top: 10px; font-weight: 700; font-size: 12px; letter-spacing: .05em; text-transform: uppercase; color: var(--plum); }
.stagerow h3 { font-family: var(--disp); font-weight: 600; font-size: clamp(20px, 2.4vw, 26px); color: var(--ink); margin: 0 0 10px; }
.stagerow p { font-size: clamp(15px, 1.4vw, 16.5px); line-height: 1.75; color: var(--ink-2); margin: 0; max-width: 64ch; }
@media (max-width: 700px) { .stagerow { grid-template-columns: 1fr; gap: 14px; } .stagerow__art { justify-self: start; text-align: left; } }

/* Info cards (calendar / location / contact) */
.icards { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 16px; margin-top: clamp(22px, 3.5vw, 36px); }
.icard { background: #fff; border: 1px solid var(--border); border-radius: var(--r-card); padding: clamp(20px, 3vw, 28px); }
.icard h3 { font-family: var(--disp); font-weight: 600; font-size: 18px; color: var(--ink); margin: 0 0 10px; }
.icard p, .icard a { font-size: 15px; line-height: 1.7; color: var(--ink-2); margin: 0; display: block; }
.icard a { color: var(--teal-deep); font-weight: 600; }
.icard .big { font-family: var(--disp); font-weight: 600; font-size: 16.5px; color: var(--ink); }

/* small section spacing variant */
.sec--tight { padding-top: clamp(28px, 5vw, 56px); }
