/* ==========================================================================
   Little Luminaries — the homepage world (playful reset, September 2026)

   One fixed sky sits behind the whole homepage. As you scroll, /js/world.js
   blends it through six "times of day" taken from each section's data-sky:
   dusk (hero) → night → forest → moon → dawn → day. Stars fade, the moon
   sets, the sun rises, and the fireflies dim as morning comes.

   Loaded on the homepage and on inner pages that use the same world
   (templates/partials/world-assets.html, world-sky.html, world-hills.html).
   Without JS, every section falls back to its own solid background; with
   prefers-reduced-motion, colours still follow the scroll but nothing drifts.
   ========================================================================== */

/* ---------- The sky ---------- */
.world {
  --sky-1: #1d2350; --sky-2: #4a3f78; --sky-3: #c98579;
  --stars: .35; --moon-o: .4; --moon-y: 0px; --sun: 0; --drift: 0px;
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  overflow: hidden;
  display: none;
}
.js .world { display: block; }
.world-sky { position: absolute; inset: 0; background: linear-gradient(180deg, var(--sky-1) 0%, var(--sky-2) 58%, var(--sky-3) 100%); }
.world-stars {
  position: absolute; inset: -10% 0 30%;
  opacity: var(--stars);
  background-image:
    radial-gradient(1.4px 1.4px at 12% 18%, #fff 50%, transparent 51%),
    radial-gradient(1px 1px at 27% 42%, #fff 50%, transparent 51%),
    radial-gradient(1.6px 1.6px at 43% 12%, #fff8dc 50%, transparent 51%),
    radial-gradient(1px 1px at 58% 33%, #fff 50%, transparent 51%),
    radial-gradient(1.3px 1.3px at 71% 8%, #fff 50%, transparent 51%),
    radial-gradient(1px 1px at 84% 27%, #fff8dc 50%, transparent 51%),
    radial-gradient(1.5px 1.5px at 93% 52%, #fff 50%, transparent 51%),
    radial-gradient(1px 1px at 6% 61%, #fff 50%, transparent 51%),
    radial-gradient(1.2px 1.2px at 36% 70%, #fff 50%, transparent 51%),
    radial-gradient(1px 1px at 64% 58%, #fff 50%, transparent 51%);
  background-size: 520px 420px;
  transform: translateY(calc(var(--drift) * -.03));
}
.world-stars::after {
  content: ""; position: absolute; inset: 0;
  background-image:
    radial-gradient(1.2px 1.2px at 20% 30%, #fff 50%, transparent 51%),
    radial-gradient(1px 1px at 50% 80%, #fff 50%, transparent 51%),
    radial-gradient(1.4px 1.4px at 80% 50%, #fff8dc 50%, transparent 51%);
  background-size: 330px 290px;
}
.world-moon {
  position: absolute; top: calc(9vh + var(--moon-y)); right: 9vw;
  width: clamp(54px, 7vw, 96px); aspect-ratio: 1; border-radius: 50%;
  background: radial-gradient(circle at 36% 34%, #fffbea, #f3e6bf 55%, #d9c89a);
  box-shadow: 0 0 40px 10px hsla(48, 90%, 85%, .25), 0 0 120px 40px hsla(48, 90%, 80%, .12);
  opacity: var(--moon-o);
}
.world-moon::after { /* a soft crater or two */
  content: ""; position: absolute; width: 22%; height: 22%; left: 52%; top: 48%; border-radius: 50%;
  background: hsla(40, 30%, 70%, .35); box-shadow: -18px -14px 0 -4px hsla(40, 30%, 70%, .25);
}
.world-sun {
  position: absolute; left: 50%; bottom: 0;
  width: 150vmax; height: 150vmax; border-radius: 50%;
  transform: translate(-50%, calc(88% - var(--sun) * 30%));
  background: radial-gradient(circle at 50% 50%, hsla(46, 100%, 80%, .75) 0 8%, hsla(40, 100%, 75%, .35) 18%, hsla(35, 100%, 75%, 0) 40%);
  opacity: var(--sun);
}
.world-fireflies { position: absolute; inset: 0; width: 100%; height: 100%; }

/* Sections float over the sky. Without JS they carry their own colour. */
.world-home > section, .world-home > .horizon { position: relative; z-index: 1; }
body.world-page { background: #0e2436; }
body.world-page .site-footer { z-index: 1; }
body.world-page .site-header { background: hsla(228, 42%, 14%, .78); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); }
html:not(.js) [data-sky="dusk"] { background: linear-gradient(180deg, #1d2350, #4a3f78); }
html:not(.js) [data-sky="night"] { background: #0e2436; }
html:not(.js) [data-sky="forest"] { background: #0d2e2f; }
html:not(.js) [data-sky="moon"] { background: #1c3f5c; }
html:not(.js) [data-sky="dawn"] { background: #f6dcc0; }
html:not(.js) [data-sky="day"] { background: var(--paper); }
html:not(.js) .horizon { background: #0d2e2f; }
html:not(.js) .horizon--dawn { background: #1c3f5c; }

/* ---------- Shared chapter styles ---------- */
.w-chapter { padding-block: clamp(3.5rem, 8vw, 7rem); }
.w-night, .w-hero { color: hsl(45, 60%, 92%); }
.w-night h2, .w-night h3, .w-night h4, .w-hero h1 { color: var(--on-dark); }
.w-night .eyebrow, .w-hero .eyebrow { color: var(--gold); }
.w-night .lead, .w-hero .lead { color: hsl(45, 50%, 88%); }
.w-night a:not(.btn):not(.text-link) { color: var(--on-dark); }
.w-night a:not(.btn):not(.text-link):hover { color: var(--gold); }
.w-night .text-link, .w-hero .text-link { color: var(--on-dark); background: hsla(45, 100%, 70%, .1); }
.w-night .text-link:hover, .w-hero .text-link:hover { background: var(--gold); border-color: var(--gold); color: var(--midnight); }
.w-night :focus-visible, .w-hero :focus-visible { outline-color: var(--gold); }
.w-night h2, .w-hero h1 { text-shadow: 0 2px 30px hsla(220, 60%, 5%, .45); }
.w-day { color: var(--navy); }
.hand { color: var(--gold); }
.w-day .hand { color: var(--gold-ink); }
.w-small { font-size: .95rem; opacity: .85; }

/* ---------- 1. Hero (dusk) ---------- */
.w-hero { min-height: calc(100svh - var(--header-h)); display: grid; align-items: center; padding-block: clamp(2rem, 5vw, 4rem) clamp(4.5rem, 8vw, 6rem); }
.w-hero-grid { display: grid; gap: clamp(2rem, 5vw, 4rem); align-items: center; }
.w-hero-title { font-size: clamp(2.5rem, 1.6rem + 3.6vw, 4.6rem); line-height: 1.02; font-weight: 600; margin-bottom: .35em; }
.w-word { display: inline-block; }
.w-glow { color: var(--gold); text-shadow: 0 0 24px hsla(45, 100%, 60%, .55), 0 0 60px hsla(45, 100%, 60%, .25); }
.w-hero .lead { max-width: 52ch; }
.w-tags { list-style: none; margin: 1.6rem 0 0; padding: 0; display: flex; flex-direction: column; align-items: flex-start; gap: .3rem; font-size: 1rem; font-weight: 700; color: hsl(45, 60%, 90%); text-shadow: 0 1px 2px hsla(250, 45%, 14%, .7), 0 0 14px hsla(250, 45%, 14%, .55); }
.w-tags li { margin: 0; display: inline-flex; align-items: center; gap: .5rem; }
.w-tags li::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--gold); box-shadow: 0 0 8px 2px hsla(45, 100%, 60%, .6); }
.w-hero-visual { position: relative; justify-self: center; width: min(100%, 440px); }
.w-arch {
  position: relative; border-radius: 999px 999px 32px 32px; overflow: hidden;
  border: 3px solid hsla(45, 90%, 75%, .55);
  box-shadow: 0 0 0 10px hsla(45, 90%, 75%, .07), 0 0 80px 10px hsla(45, 100%, 60%, .18);
}
.w-arch > figure { width: 100%; margin: 0; border-radius: 0; }
.w-arch > figure img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; border-radius: 0; }
.w-hero-trail { position: absolute; left: -38%; bottom: -12%; width: 92%; z-index: 2; }
.w-hero-trail picture { display: block; }
.w-hero-trail .sprite--a { left: 70%; top: -30%; }
.w-hero-trail .sprite--b { right: -70%; bottom: 110%; }
.w-scroll-cue {
  position: absolute; left: 50%; bottom: 1.25rem; transform: translateX(-50%);
  display: inline-flex; flex-direction: column; align-items: center; gap: .3rem;
  font: 600 1.3rem/1 var(--font-hand); color: hsl(45, 70%, 88%); text-decoration: none; opacity: .9;
}
.w-scroll-cue:hover { color: var(--gold); }
.w-cue-bug { width: 12px; height: 12px; border-radius: 50%; background: var(--gold); box-shadow: 0 0 14px 5px hsla(45, 100%, 60%, .6); }

/* ---------- 2. What brings you here: the picker (site.js) ---------- */
.picker { display: grid; gap: 1.25rem; }
.picker-tabs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; }
.picker-tabs[hidden] { display: none; }
.picker-tab {
  position: relative; display: flex; align-items: center; gap: .85rem; min-height: 78px; margin: 0; padding: .7rem 1rem .7rem .7rem;
  border: 2px solid hsla(45, 80%, 85%, .18); border-radius: var(--radius-inner); background: hsla(215, 45%, 16%, .6);
  color: hsl(45, 70%, 92%); font: 600 1.08rem/1.22 var(--font-display); text-align: left; cursor: pointer;
  -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
  transition: transform .35s cubic-bezier(.34, 1.56, .64, 1), background-color .25s, border-color .25s, box-shadow .25s, color .25s;
}
@media (hover: hover) { .picker-tab:hover { border-color: var(--tone); } }
.picker-tab[aria-selected="true"] { background: var(--card); color: var(--navy); border-color: var(--tone); box-shadow: 0 0 0 5px color-mix(in srgb, var(--tone) 40%, transparent), 0 14px 40px hsla(220, 60%, 4%, .4); }
.picker-tab:focus-visible { outline: 3px solid var(--gold); outline-offset: 4px; }
.picker-icon { flex-shrink: 0; width: 56px; height: 56px; border-radius: 18px; display: grid; place-items: center; background: color-mix(in srgb, var(--tone) 38%, var(--card)); box-shadow: inset 0 -3px 0 hsla(0, 0%, 0%, .06); }
.picker-icon svg { width: 42px; height: 42px; }
.picker-panel {
  position: relative; display: flex; flex-direction: column; padding: clamp(1.4rem, 3vw, 2.2rem); border-radius: var(--radius-card); background: var(--card); color: var(--navy);
  border-top: 10px solid var(--tone); box-shadow: 0 20px 60px hsla(220, 60%, 4%, .45);
}
.w-night .picker-panel h3 { color: var(--navy); font-size: clamp(1.4rem, 1.1rem + 1vw, 1.85rem); margin-bottom: .2rem; }
.picker-sub { margin: 1rem 0 .3rem; font: 700 1.45rem/1.1 var(--font-hand); color: var(--gold-ink); }
.picker-list { list-style: none; margin: 0 0 .25rem; padding: 0; display: grid; gap: .4rem; }
.picker-list li { position: relative; margin: 0; padding-left: 1.5rem; }
.picker-list li::before { content: ""; position: absolute; left: .1rem; top: .45em; width: .7rem; height: .7rem; border-radius: 50%; background: var(--tone); box-shadow: 0 0 0 2px hsla(200, 47%, 24%, .15); }
.picker-panel p { margin-bottom: 0; }
.picker-actions { display: flex; flex-wrap: wrap; gap: .6rem .75rem; margin-top: auto !important; padding-top: 1.4rem; }
.picker:not(.is-live) .picker-panels { display: grid; gap: 1rem; }
.picker.is-live .picker-panels { display: grid; }
.picker.is-live .picker-panel { grid-area: 1 / 1; }
.picker.is-live .picker-panel[hidden] { display: block; visibility: hidden; }
@media (min-width: 960px) {
  .picker.is-live { grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: 1.75rem; align-items: stretch; }
  .picker-tabs { grid-template-columns: 1fr; align-content: start; }
  .picker:not(.is-live) .picker-panels { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 599px) {
  .picker-tabs { gap: .6rem; }
  .picker-tab { flex-direction: column; justify-content: flex-start; text-align: center; gap: .5rem; min-height: 132px; padding: .9rem .6rem; font-size: 1rem; }
  .picker-icon { width: 52px; height: 52px; }
}
@media (prefers-reduced-motion: no-preference) {
@media (hover: hover) {   .picker-tab:hover { transform: translateY(-3px); } }
  .picker-tab[aria-selected="true"] { transform: scale(1.02); }
  .picker-tab[aria-selected="true"] .picker-icon svg { animation: picker-pop .6s cubic-bezier(.34, 1.56, .64, 1); }
  @keyframes picker-pop { 0% { transform: scale(.7) rotate(-12deg); } 60% { transform: scale(1.12) rotate(4deg); } 100% { transform: none; } }
  .picker-panel.is-fresh { animation: picker-in .45s var(--ease); }
  @keyframes picker-in { from { opacity: 0; transform: translateY(12px) scale(.98); } }
}

/* ---------- Horizons (in-flow hill and grass silhouettes) ---------- */
.horizon { height: clamp(90px, 14vw, 200px); margin-block: -4rem 0; pointer-events: none; -webkit-mask-image: linear-gradient(180deg, #000 55%, transparent); mask-image: linear-gradient(180deg, #000 55%, transparent); }
.horizon .h-layer { position: absolute; inset: 0; width: 100%; height: 100%; will-change: transform; }

/* ---------- 4. Floortime (forest) ---------- */
.w-ft-intro { display: grid; gap: clamp(2rem, 5vw, 4.5rem); align-items: center; }
.w-ft-visual { position: relative; }
.w-blob { border-radius: 58% 42% 52% 48% / 46% 56% 44% 54%; box-shadow: 0 0 0 3px hsla(45, 90%, 75%, .35), 0 0 70px hsla(45, 100%, 60%, .18); }
.w-circles { width: min(220px, 60%); margin: -3.2rem auto 0; position: relative; z-index: 2; background: hsla(180, 40%, 8%, .72); border-radius: 40px; padding: .2rem .6rem; border: 1px solid hsla(45, 80%, 80%, .2); }
.w-circles svg { width: 100%; height: auto; overflow: visible; }
.w-circles-path { fill: none; stroke: hsla(45, 80%, 85%, .35); stroke-width: 1.5; stroke-dasharray: 3 6; }
.w-circles-a, .w-circles-b { fill: hsl(200, 30%, 70%); }
.w-circles-b { fill: hsl(160, 25%, 62%); }
.w-circles-spark { fill: #fff2b8; filter: drop-shadow(0 0 6px #f5c242) drop-shadow(0 0 12px #f5c242); }
.w-circles-cap { margin: 1rem auto 0; max-width: 40ch; text-align: center; font-size: .98rem; }
.w-circles-cap .hand { display: block; font-size: 1.6rem; margin-bottom: .2rem; }
.w-cert { display: inline-flex; align-items: center; gap: .7rem; margin: .5rem 0 0; padding: .55rem 1.1rem .55rem .6rem; border-radius: var(--radius-pill); background: hsla(45, 100%, 70%, .14); border: 1px solid hsla(45, 100%, 70%, .5); }
.w-cert-badge { width: 30px; height: 30px; border-radius: 50%; flex-shrink: 0; background: radial-gradient(circle at 40% 35%, #fff4c4, var(--gold) 60%, #d49a1c); box-shadow: 0 0 14px hsla(45, 100%, 60%, .6); position: relative; }
.w-cert-badge::after { content: ""; position: absolute; left: 10px; top: 7px; width: 7px; height: 12px; border: solid var(--midnight); border-width: 0 2.5px 2.5px 0; transform: rotate(45deg); }
.w-cert--small { padding: .3rem .8rem .3rem .35rem; font-size: .92rem; font-weight: 800; margin: 0 0 .75rem; background: hsla(45, 100%, 60%, .18); }
.w-cert--small .w-cert-badge { width: 24px; height: 24px; }
.w-cert--small .w-cert-badge::after { left: 8px; top: 5px; width: 6px; height: 10px; }

.w-ft-helps-title { margin: clamp(3rem, 7vw, 5rem) 0 1.5rem; text-align: center; font-size: clamp(1.6rem, 1.2rem + 1.4vw, 2.4rem); }
.w-lanterns { list-style: none; margin: 0; padding: 0; display: grid; gap: 1.25rem; }
.w-lantern {
  position: relative; margin: 0; padding: 2.4rem 1.5rem 1.5rem; border-radius: 120px 120px 28px 28px; text-align: center;
  background: linear-gradient(180deg, hsla(45, 100%, 70%, .12), hsla(180, 30%, 60%, .05));
  border: 1px solid hsla(45, 90%, 80%, .22);
}
.w-lantern h4 { font-family: var(--font-display); font-weight: 600; font-size: 1.35rem; margin-bottom: .5rem; }
.w-lantern p { margin: 0; font-size: 1rem; }
.w-lantern-glow { display: block; width: 44px; height: 44px; margin: 0 auto 1rem; border-radius: 50%; background: radial-gradient(circle, #fff4c4, var(--gold) 55%, transparent 72%); box-shadow: 0 0 30px 10px hsla(45, 100%, 60%, .35); transition: box-shadow 1.2s var(--ease), transform 1.2s var(--ease); }
.js .w-lantern:not(.is-in) .w-lantern-glow { box-shadow: 0 0 0 0 hsla(45, 100%, 60%, 0); transform: scale(.5); }

/* ---------- Glass cards and chips (night chapters) ---------- */
.w-card-glass {
  padding: 1.5rem 1.4rem; border-radius: var(--radius-card);
  background: hsla(215, 45%, 14%, .45); border: 1px solid hsla(45, 80%, 85%, .16);
  backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
}
.w-card-glass h3 { font-size: 1.4rem; margin-bottom: .45rem; }
.w-card-glass p:last-child { margin-bottom: 0; }
.w-chips { list-style: none; margin: .25rem 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: .4rem; }
.w-chips li { margin: 0; padding: .2rem .75rem; border-radius: var(--radius-pill); font-weight: 800; font-size: .92rem; background: hsla(45, 100%, 70%, .18); color: hsl(45, 90%, 88%); }

/* ---------- 6. Gestalt language: word by word, or chunks first ---------- */
.w-paths-grid { display: grid; gap: 1.25rem; margin-top: 1rem; }
.w-trail { padding: 1.5rem 1.4rem; border-radius: var(--radius-card); background: hsla(215, 45%, 14%, .45); border: 1px solid hsla(45, 80%, 85%, .14); }
.w-trail h3 { font-size: 1.45rem; }
.w-trail .hand { font-size: 1.1em; margin-left: .2rem; }
.w-bubbles { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1.8rem; }
.w-bubbles li {
  position: relative; margin: 0; padding: .55rem 1rem; border-radius: 20px 20px 20px 6px;
  background: hsl(45, 70%, 92%); color: var(--navy); font-weight: 800;
  transition: transform .5s var(--ease), opacity .5s var(--ease);
  transition-delay: calc(var(--b, 0) * 260ms + 200ms);
}
.w-bubbles li:not(:last-child)::after { content: "→"; position: absolute; right: -1.35rem; top: 50%; transform: translateY(-50%); color: var(--gold); font-weight: 800; }
.w-bubbles li:nth-child(2) { --b: 1; } .w-bubbles li:nth-child(3) { --b: 2; } .w-bubbles li:nth-child(4) { --b: 3; }
.w-bubbles li:last-child { background: var(--gold); box-shadow: 0 0 22px hsla(45, 100%, 60%, .45); }
.js .w-trail:not(.is-in) .w-bubbles li { opacity: 0; transform: translateY(10px) scale(.9); }
/* ---------- 7. Dawn: team and video ---------- */
.w-team .section-head { margin-inline: auto; text-align: center; }
.w-team .eyebrow { transform-origin: center; }
.w-video { max-width: 780px; margin: 0 auto clamp(2.5rem, 6vw, 4rem); }
.w-video video, .w-video iframe { display: block; width: 100%; aspect-ratio: 16 / 9; border: 0; border-radius: var(--radius-card); background: var(--midnight); box-shadow: 0 20px 60px hsla(205, 50%, 20%, .3); }
.w-video-ph {
  position: relative; aspect-ratio: 16 / 9; border-radius: var(--radius-card); display: grid; place-content: center; justify-items: center; gap: 1rem; text-align: center;
  color: var(--cream); padding: 1rem;
  background:
    radial-gradient(circle at 18% 26%, hsla(45, 100%, 70%, .9) 0 2px, transparent 10px),
    radial-gradient(circle at 80% 20%, hsla(45, 100%, 70%, .9) 0 2px, transparent 9px),
    radial-gradient(circle at 70% 76%, hsla(45, 100%, 70%, .9) 0 2.5px, transparent 12px),
    radial-gradient(circle at 28% 80%, hsla(45, 100%, 70%, .8) 0 1.5px, transparent 8px),
    radial-gradient(ellipse 80% 50% at 50% 115%, hsla(150, 30%, 30%, .9), transparent 70%),
    linear-gradient(180deg, #1d2350, #16384d);
  box-shadow: 0 0 0 6px hsla(45, 90%, 80%, .5), 0 24px 70px hsla(25, 60%, 30%, .3);
}
.w-video-ph p { margin: 0; font-size: 1.05rem; }
.w-video-ph .hand { font-size: 1.7rem; color: var(--gold); }
.w-video-play { width: 76px; height: 76px; border-radius: 50%; background: hsla(45, 100%, 70%, .95); box-shadow: 0 0 40px 10px hsla(45, 100%, 60%, .4); position: relative; }
.w-video-play::after { content: ""; position: absolute; left: 31px; top: 23px; border-style: solid; border-width: 15px 0 15px 24px; border-color: transparent transparent transparent var(--midnight); }
.w-team-grid { display: grid; gap: 1.75rem; max-width: 1040px; margin-inline: auto; }
.w-person { display: grid; gap: 1.25rem; align-items: start; padding: 1.25rem; border-radius: var(--radius-card); background: hsla(45, 100%, 98%, .82); box-shadow: 0 18px 50px hsla(25, 50%, 40%, .14); }
.w-portrait { margin: 0; border-radius: 999px 999px 24px 24px; overflow: hidden; box-shadow: 0 0 0 4px hsla(45, 95%, 60%, .6), 0 0 40px hsla(45, 100%, 60%, .3); align-self: start; }
.w-portrait img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; object-position: 50% 18%; }
.w-person h3 { margin-bottom: .15rem; }
.w-specialties { list-style: none; margin: .25rem 0 1rem; padding: 0; display: flex; flex-wrap: wrap; gap: .4rem; }
.w-specialties li { margin: 0; padding: .25rem .8rem; border-radius: var(--radius-pill); font-size: .9rem; font-weight: 800; background: var(--sky-soft); color: var(--navy); border: 1px solid var(--line); }
.w-specialties li:nth-child(3n+1) { background: hsl(45, 90%, 88%); }
.w-specialties li:nth-child(3n+2) { background: hsl(150, 30%, 88%); }
.w-person p:last-child { margin-bottom: 0; }
.w-team-more { text-align: center; margin: 1.5rem 0 0; }

/* ---------- 8. Day ---------- */
.w-day .pathway { background: hsla(0, 0%, 100%, .7); padding: .9rem .9rem 1.3rem; border-radius: var(--radius-card); box-shadow: 0 18px 50px hsla(25, 50%, 40%, .12); }
.w-day .pathway .ph { border-radius: var(--radius-inner); }
.w-day .pathway-body { padding-inline: .5rem; }
.pathway .w-svc-more { align-self: flex-start; margin-top: auto; color: var(--navy); }
@media (hover: hover) { .pathway:hover .w-svc-more { background: var(--navy); color: var(--cream); } }
.pathway:active { transform: scale(.98); }
.w-steps-wrap { margin-top: clamp(2.5rem, 6vw, 4rem); padding: clamp(1.5rem, 3vw, 2.25rem); border-radius: var(--radius-card); background: var(--cream); }
.w-steps-title { margin-bottom: 1.25rem; }
.w-steps { list-style: none; margin: 0; padding: 0; display: grid; gap: 1rem; counter-reset: none; }
.w-steps li { margin: 0; display: grid; grid-template-columns: 48px 1fr; gap: .9rem; align-items: center; font: 600 1.15rem/1.3 var(--font-display); }
.w-step-n { width: 44px; height: 44px; border-radius: 50%; display: grid; place-items: center; background: var(--gold); color: var(--midnight); font: 600 1.2rem/1 var(--font-display); box-shadow: 0 0 18px hsla(45, 100%, 60%, .45); }
.w-steps-note { margin-top: 1.5rem; padding-top: 1.25rem; border-top: 1px dashed hsla(200, 47%, 24%, .25); display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .75rem 1.5rem; }
.w-steps-note p { margin: 0; font-size: 1.05rem; }
.world-home .cta-band { background: transparent; }

/* ---------- Breakpoints ---------- */
@media (min-width: 700px) {
  .w-lanterns { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .w-paths-grid { grid-template-columns: 1fr 1fr; }
  .w-person { grid-template-columns: minmax(150px, 38%) 1fr; }
  .w-steps { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .w-steps li { grid-template-columns: 1fr; justify-items: start; align-content: start; align-self: start; }
}
@media (min-width: 960px) {
  .w-hero-grid { grid-template-columns: 1.25fr .75fr; }
  .w-hero-visual { justify-self: end; }
  .w-ft-intro { grid-template-columns: 1.05fr .95fr; }
  .w-person { grid-template-columns: minmax(220px, 30%) 1fr; gap: 1.75rem; padding: 1.6rem; }
  .w-ventures { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 959px) {
  .w-hero { min-height: 0; }
  .w-hero-visual { width: min(78%, 360px); margin-top: 1rem; }
  .w-hero-trail { left: -30%; width: 80%; }
  .w-hero-trail .sprite { display: none; }
  .w-scroll-cue { display: none; }
}
@media (max-width: 599px) {
  .w-hero-title { font-size: clamp(2.3rem, 1.4rem + 5vw, 3rem); }
  .w-bubbles { gap: .5rem 1.6rem; }
}

/* ---------- Motion ---------- */
@media (prefers-reduced-motion: no-preference) {
  .js .w-word { opacity: 0; transform: translateY(.35em) rotate(-2deg); filter: blur(6px); animation: w-word-in .9s var(--ease) forwards; animation-delay: calc(var(--wi, 0) * 110ms + 150ms); }
  @keyframes w-word-in { to { opacity: 1; transform: none; filter: none; } }
  .w-glow { animation: w-glow-pulse 3.6s ease-in-out 1.6s infinite alternate; }
  .js .w-glow { animation: w-word-in .9s var(--ease) forwards, w-glow-pulse 3.6s ease-in-out 2.2s infinite alternate; animation-delay: calc(var(--wi, 0) * 110ms + 150ms), 2.2s; }
  @keyframes w-glow-pulse { from { text-shadow: 0 0 18px hsla(45, 100%, 60%, .4), 0 0 50px hsla(45, 100%, 60%, .15); } to { text-shadow: 0 0 28px hsla(45, 100%, 65%, .75), 0 0 80px hsla(45, 100%, 60%, .35); } }
  .w-cue-bug { animation: w-bob 2.2s ease-in-out infinite; }
  @keyframes w-bob { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(8px); } }
  @keyframes w-pulse { 0%, 100% { box-shadow: 0 0 14px 4px hsla(45, 100%, 60%, .45); } 50% { box-shadow: 0 0 28px 12px hsla(45, 100%, 60%, .8); } }
  .w-circles-spark { transform-box: view-box; transform-origin: 110px 60px; animation: w-orbit 3.6s linear infinite; }
  @keyframes w-orbit { to { transform: rotate(360deg); } }
  .w-circles-a { animation: w-touch-a 3.6s linear infinite; }
  .w-circles-b { animation: w-touch-b 3.6s linear infinite; }
  @keyframes w-touch-a { 0%, 62%, 88%, 100% { fill: hsl(200, 30%, 70%); } 75% { fill: #ffe38a; } }
  @keyframes w-touch-b { 0%, 12%, 38%, 100% { fill: hsl(160, 25%, 62%); } 25% { fill: #ffe38a; } }
  .w-video-play { animation: w-pulse 3s ease-in-out infinite; }
}

.w-team .lead { margin-inline: auto; }
.w-person-quote { margin: 0; padding: .2rem 0 0 1rem; border-left: 3px solid var(--gold); }
.w-person-quote p { margin: 0; font: 600 1.55rem/1.15 var(--font-hand); color: var(--teal-dark); }
body.world-page .site-footer { box-shadow: 0 60vh 0 var(--midnight); }
@media (max-width: 699px) { .world-moon { display: none; } }
.w-neighbors { display: grid; gap: 1.25rem; max-width: 1040px; margin: clamp(2rem, 5vw, 3rem) auto 0; }
.w-neighbor { padding: 1.5rem 1.5rem 1rem; border-radius: var(--radius-card); background: hsla(45, 100%, 98%, .82); box-shadow: 0 14px 40px hsla(25, 50%, 40%, .12); }
.w-neighbor h3 { font-size: 1.45rem; }
.w-neighbor--listen { background: var(--navy); color: var(--cream); }
.w-neighbor--listen h3 { color: var(--cream); }
.w-neighbor--listen .eyebrow { color: var(--gold); }
.w-neighbor--listen .text-link { color: var(--cream); }
.w-neighbor--listen .text-link:hover { color: var(--gold); }
@media (min-width: 700px) { .w-neighbors { grid-template-columns: 1.3fr 1fr; } }

/* ==========================================================================
   Immersive pass: hero meadow scene, foreground grass, journey map, glow
   ========================================================================== */
.w-hero { position: relative; overflow: hidden; }
.w-hero-grid { position: relative; z-index: 2; }
.w-scene { position: absolute; left: -4%; right: -4%; bottom: -2px; height: clamp(120px, 20vw, 260px); z-index: 1; pointer-events: none;
  -webkit-mask-image: linear-gradient(180deg, #000 70%, transparent); mask-image: linear-gradient(180deg, #000 70%, transparent); }
.w-scene-layer { position: absolute; inset: 0; width: 100%; height: 100%; will-change: transform; }
.w-scroll-cue { z-index: 3; }

/* A strip of grass along the bottom of the screen, as if walking through
   the meadow. It fades out as morning comes. */
.world-grass {
  position: absolute; left: -40px; right: -40px; bottom: -6px; height: clamp(40px, 6vw, 72px); opacity: var(--grass, .9);
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 240 60' preserveAspectRatio='none'%3E%3Cpath d='M0 60V44l6-26 4 27 7-38 5 40 8-22 4 23 9-44 4 45 7-26 6 28 9-19 4 21 10-40 4 38 6-16 5 18 9-32 5 33 7-22 6 25 8-15 4 18 10-41 4 40 8-19 5 20 8-31 5 32 7-18 6 19 9-37 3 36 7-20 5 22V60z' fill='%2305101a'/%3E%3C/svg%3E") bottom / 240px 100% repeat-x;
  transform-origin: bottom center;
}
@media (prefers-reduced-motion: no-preference) {
  .world-grass { animation: w-sway 7s ease-in-out infinite alternate; }
  @keyframes w-sway { from { transform: skewX(-2deg); } to { transform: skewX(2deg); } }
}

/* The journey map (wide screens only). */
.w-journey { display: none; }
@media (min-width: 1200px) {
  .w-journey {
    --ink: hsl(45, 70%, 90%);
    display: block; position: fixed; z-index: 30; right: 18px; top: 50%; transform: translateY(-50%);
    padding: .5rem 0;
  }
  body[data-sky="dawn"] .w-journey, body[data-sky="day"] .w-journey { --ink: var(--navy); }
  .w-journey ol { list-style: none; margin: 0; padding: 0; position: relative; display: grid; gap: 14px; }
  .w-journey ol::before { content: ""; position: absolute; right: 7px; top: 6px; bottom: 6px; border-right: 2px dotted var(--ink); opacity: .35; }
  .w-journey li { margin: 0; }
  .w-journey a { display: flex; align-items: center; justify-content: flex-end; gap: .6rem; min-height: 16px; text-decoration: none; color: var(--ink); }
  .w-journey a::after { content: ""; width: 12px; height: 12px; margin-right: 2px; border-radius: 50%; border: 2px solid var(--ink); opacity: .6; transition: background .3s, box-shadow .3s, opacity .3s, transform .3s; flex-shrink: 0; }
  .w-journey span { font: 600 1.25rem/1 var(--font-hand); white-space: nowrap; opacity: 0; transform: translateX(6px); transition: opacity .25s, transform .25s; padding: .15rem .5rem; border-radius: 8px; background: hsla(220, 40%, 10%, .55); color: hsl(45, 70%, 92%); }
  .w-journey a:hover span, .w-journey a:focus-visible span, .w-journey a.is-current span { opacity: 1; transform: none; }
  .w-journey a.is-current::after, .w-journey a:hover::after { background: var(--gold); border-color: var(--gold); opacity: 1; box-shadow: 0 0 12px 4px hsla(45, 100%, 60%, .55); transform: scale(1.15); }
  .w-journey-bug { position: absolute; right: 4px; top: 0; width: 18px; height: 15px; background: url('/assets/firefly-sprite.png') center / contain no-repeat; filter: drop-shadow(0 0 6px hsla(45, 100%, 60%, .9)); transform: translateY(var(--jy, 0px)); transition: transform .25s linear; pointer-events: none; }
}

/* Headings in the night chapters catch the light as they arrive. */
@media (prefers-reduced-motion: no-preference) {
  .w-night .is-in h2, .w-night h2.is-in { animation: w-h-glow 2.6s ease-out 1; }
  @keyframes w-h-glow {
    0% { text-shadow: 0 0 0 hsla(45, 100%, 65%, 0); }
    35% { text-shadow: 0 0 26px hsla(45, 100%, 65%, .8), 0 0 70px hsla(45, 100%, 60%, .4); }
    100% { text-shadow: 0 2px 30px hsla(220, 60%, 5%, .45); }
  }
  .w-lantern, .w-card-glass, .w-trail, .w-person { transition: transform .35s var(--ease), box-shadow .35s var(--ease), opacity .7s var(--ease); }
  .w-lantern:hover, .w-card-glass:hover, .w-trail:hover { transform: translateY(-4px); box-shadow: 0 0 50px hsla(45, 100%, 60%, .18); }
  .w-lantern:hover .w-lantern-glow { transform: scale(1.25); box-shadow: 0 0 44px 16px hsla(45, 100%, 60%, .5); }
  .w-person:hover { transform: translateY(-4px) rotate(-.3deg); }
}
.w-day + .w-day { padding-top: clamp(1rem, 3vw, 2.5rem); }

/* ---------- Creative pass: swoosh, catch hint, handwriting ---------- */
.w-swoosh { position: relative; }
.w-swoosh-line { position: absolute; left: -2%; bottom: -.16em; width: 104%; height: .32em; overflow: visible; pointer-events: none; }
.w-swoosh-line path { fill: none; stroke: var(--gold); stroke-width: 4; stroke-linecap: round; filter: drop-shadow(0 0 6px hsla(45, 100%, 60%, .8)); }
.w-catch-hint {
  display: none; align-items: center; gap: .65rem; width: fit-content; max-width: 100%; margin: 1.4rem 0 0; padding: .4rem 1.15rem .4rem .7rem;
  border-radius: var(--radius-pill); background: hsla(45, 100%, 70%, .14); border: 1.5px dashed hsla(45, 100%, 70%, .65);
  color: var(--gold); transform: rotate(-1.5deg); transform-origin: left;
}
.w-catch-hint .hand { font-size: 1.55rem; }
.w-catch-dot { width: 14px; height: 14px; flex-shrink: 0; border-radius: 50%; background: radial-gradient(circle, #fff6cf, var(--gold) 60%); box-shadow: 0 0 14px 5px hsla(45, 100%, 60%, .7); }

@media (prefers-reduced-motion: no-preference) {
  .js .w-catch-hint { display: flex; animation: w-word-in .9s var(--ease) 2.6s both; }
  .w-catch-dot { animation: w-pulse 1.8s ease-in-out infinite; }
  .js .w-swoosh-line path { stroke-dasharray: 1; stroke-dashoffset: 1; animation: w-swoosh 1.1s var(--ease) 1.5s forwards; }
  @keyframes w-swoosh { to { stroke-dashoffset: 0; } }
  /* Handwritten notes write themselves in once their block arrives. */
  .js .world-page [data-reveal] .hand { clip-path: inset(-20% 100% -20% 0); transition: clip-path 1.2s cubic-bezier(.5, 0, .3, 1) .45s; }
  /* A clip on an inline span that wraps only reveals its first line, so a
     handwritten line that runs onto two lines writes in as one box. */
  :where(.js .world-page [data-reveal] span.hand) { display: inline-block; }
  .js .world-page [data-reveal].is-in .hand { clip-path: inset(-20% -5% -20% 0); }
}
@media (max-width: 699px) { .w-catch-hint .hand { font-size: 1.35rem; } }

/* ---------- Playful polish: neighbors and team cards line up ---------- */
.w-neighbor { display: flex; flex-direction: column; }
.w-neighbor > .text-link:last-child { margin-top: auto; align-self: flex-start; }
.w-person-body { display: flex; flex-direction: column; align-self: stretch; }
.w-person-body > .moment--card { margin-top: auto; }
.w-person-body > p:has(+ .moment--card) { margin-bottom: 1.8rem; }
.w-moments { padding-bottom: clamp(1rem, 3vw, 2rem); }

/* ---------- Whimsy: clouds with faces ---------- */
.world-clouds { position: absolute; inset: 0; opacity: calc(var(--sun) * .95); }
.w-cloud { position: absolute; left: 0; width: clamp(96px, 12vw, 180px); height: auto; filter: drop-shadow(0 8px 14px hsla(30, 45%, 55%, .22)); transform: translateX(var(--cx, 10vw)); }
.w-cloud--a { top: 9%; --cx: 8vw; }
.w-cloud--b { top: 27%; width: clamp(76px, 9vw, 130px); --cx: 62vw; }
.w-cloud--c { top: 5%; width: clamp(84px, 10vw, 150px); --cx: 82vw; }
.cloud-eyes { transform-box: fill-box; transform-origin: center; }
@media (prefers-reduced-motion: no-preference) {
  .w-cloud { animation: w-cloud-drift var(--dur, 120s) linear infinite; animation-delay: var(--delay, 0s); }
  .w-cloud--a { --dur: 95s; --delay: -30s; }
  .w-cloud--b { --dur: 130s; --delay: -90s; }
  .w-cloud--c { --dur: 150s; --delay: -10s; }
  @keyframes w-cloud-drift { from { transform: translateX(-22vw); } to { transform: translateX(110vw); } }
  .cloud-eyes { animation: cloud-blink 4.5s infinite; }
  .w-cloud--b .cloud-eyes { animation: none; }
  @keyframes cloud-blink { 0%, 92%, 100% { transform: scaleY(1); } 95% { transform: scaleY(.1); } }
}
.ll-calm .w-catch-hint { display: none !important; }

/* ==========================================================================
   Calmer rework (late September 2026): a family's words first, the
   picker, our approach, Floortime, gestalt language, AAC, the therapists
   ========================================================================== */
.w-hero .actions { gap: .75rem; }

/* A family's words: a letter pinned to the night sky. */
.w-review { padding-top: clamp(3rem, 7vw, 5.5rem); }
.w-letter {
  position: relative; max-width: 880px; margin: 0 auto; padding: clamp(2rem, 4.5vw, 3.2rem) clamp(1.4rem, 4.5vw, 3.4rem) clamp(1.6rem, 3.5vw, 2.4rem);
  border-radius: var(--radius-panel); background: var(--card); color: var(--navy); text-align: center; transform: rotate(-.6deg);
  box-shadow: 0 0 0 8px hsla(45, 100%, 70%, .14), 0 0 90px hsla(45, 100%, 60%, .22), 0 30px 70px hsla(220, 60%, 4%, .45);
}
.w-letter::before, .w-letter::after { content: ""; position: absolute; top: -13px; width: 96px; height: 26px; background: hsla(45, 95%, 65%, .8); border-radius: 2px; }
.w-letter::before { left: 12%; transform: rotate(-5deg); }
.w-letter::after { right: 12%; transform: rotate(4deg); background: hsla(170, 45%, 60%, .75); }
.w-letter-bug { position: absolute; top: -18px; left: 50%; width: 30px; height: 30px; margin-left: -15px; border-radius: 50%; background: radial-gradient(circle, #fff4c4, var(--gold) 60%); box-shadow: 0 0 22px 8px hsla(45, 100%, 60%, .55); }
.w-night .w-letter .eyebrow { color: var(--gold-ink); margin-bottom: .25rem; }
.w-letter-stars { margin: 0 0 .8rem; font-size: 1.5rem; letter-spacing: .15em; color: #e0a526; }
.w-letter blockquote { margin: 0 0 1.25rem; }
.w-letter blockquote p { margin: 0; font: 500 clamp(1.2rem, 1rem + .9vw, 1.65rem)/1.5 var(--font-display); color: var(--navy); }
.w-letter mark { color: inherit; padding: 0 .1em; background: linear-gradient(transparent 55%, hsla(45, 100%, 62%, .65) 55%, hsla(45, 100%, 62%, .65) 92%, transparent 92%); }
.w-letter figcaption { font-size: 1.02rem; }
.w-letter-more { margin: 1.2rem 0 0; }
/* The letter holds a swipeable strip of reviews. Big gold arrows sit on
   the card's sides (below it on phones), with dots to show where you are. */
.w-reviews-track { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; overscroll-behavior-x: contain; border-radius: 18px; }
.w-reviews-track:focus-visible { outline: 3px solid var(--gold); outline-offset: 6px; }
.w-reviews-track.is-live { scrollbar-width: none; }
.w-reviews-track.is-live::-webkit-scrollbar { display: none; }
.w-review-slide { flex: 0 0 100%; min-width: 0; margin: 0; padding: 0 .25rem; scroll-snap-align: center; scroll-snap-stop: always; display: flex; flex-direction: column; justify-content: center; }
.w-reviews-nav { display: flex; align-items: center; justify-content: center; gap: 8px; margin-top: 1.3rem; }
.w-reviews-nav[hidden] { display: none; }
.w-reviews-arrow {
  flex: none; display: grid; place-items: center; width: 56px; height: 56px; padding: 0; border: 0; border-radius: 50%; cursor: pointer;
  background: var(--gold); color: var(--navy); box-shadow: 0 0 0 6px hsla(45, 100%, 60%, .22), 0 10px 22px hsla(220, 60%, 8%, .3);
  transition: transform .2s ease, box-shadow .2s ease;
}
@media (hover: hover) { .w-reviews-arrow:hover { transform: scale(1.08); box-shadow: 0 0 0 9px hsla(45, 100%, 60%, .3), 0 12px 26px hsla(220, 60%, 8%, .35); } }
.w-reviews-arrow:focus-visible { outline: 3px solid var(--navy); outline-offset: 4px; }
.w-reviews-dots { display: flex; flex-wrap: wrap; justify-content: center; gap: .15rem; }
.w-reviews-dot { width: 44px; height: 44px; padding: 0; border: 0; background: none; cursor: pointer; display: grid; place-items: center; }
.w-reviews-dot::before { content: ""; width: 11px; height: 11px; border-radius: 50%; background: hsla(200, 47%, 24%, .25); transition: background .2s ease, transform .2s ease, box-shadow .2s ease; }
.w-reviews-dot:hover::before { background: hsla(200, 47%, 24%, .5); }
.w-reviews-dot[aria-current="true"]::before { background: var(--gold); transform: scale(1.35); box-shadow: 0 0 8px 2px hsla(45, 100%, 55%, .6); }
.w-reviews-dot:focus-visible { outline: 3px solid var(--navy); outline-offset: 1px; border-radius: 50%; }
@media (min-width: 760px) {
  .w-review { --arrow-out: 28px; }
  .w-reviews .w-reviews-arrow { position: absolute; top: 50%; margin-top: -28px; }
  .w-reviews .w-reviews-prev { left: calc(-1 * var(--arrow-out)); }
  .w-reviews .w-reviews-next { right: calc(-1 * var(--arrow-out)); }
}
@media (prefers-reduced-motion: no-preference) {
  .w-reviews-track { scroll-behavior: smooth; }
}

/* Our approach */
.w-approach-intro { display: grid; gap: clamp(1.5rem, 4vw, 3rem); align-items: center; margin-bottom: clamp(1.75rem, 4vw, 2.75rem); }
.w-approach-intro .section-head { margin-bottom: 0; }
.w-toy {
  display: grid; grid-template-columns: minmax(96px, 30%) 1fr; gap: 1.1rem; align-items: center;
  padding: 1.4rem; border-radius: var(--radius-card); background: hsla(45, 100%, 70%, .12); border: 1.5px dashed hsla(45, 100%, 70%, .55);
}
.w-toy h3 { font-size: 1.45rem; margin-bottom: .35rem; }
.w-toy p { margin-bottom: .7rem; }
.w-toy-puppet { width: 100%; height: auto; overflow: visible; filter: drop-shadow(0 10px 18px hsla(220, 60%, 4%, .35)); }
.w-approach-grid, .w-aac-grid { list-style: none; margin: 0; padding: 0; display: grid; gap: 1.1rem; }
.w-approach-grid > li, .w-aac-grid > li { margin: 0; }
.w-card-icon { display: grid; place-items: center; width: 60px; height: 60px; margin-bottom: .8rem; border-radius: 20px; background: hsla(45, 80%, 95%, .1); border: 1px solid hsla(45, 80%, 85%, .2); }
.w-card-icon svg { width: 44px; height: 44px; overflow: visible; }
.w-welcome { margin: clamp(1.75rem, 4vw, 2.5rem) auto 0; max-width: 880px; text-align: center; }
.w-welcome p { font: 500 clamp(1.15rem, 1rem + .6vw, 1.45rem)/1.5 var(--font-display); margin-bottom: 1.1rem; }
.w-welcome .hand { font-size: 1.35em; }

/* DIR/Floortime: who it is for */
.w-ft-for {
  margin: clamp(2.5rem, 6vw, 4rem) auto 0; max-width: 960px; padding: clamp(1.4rem, 3vw, 2rem) clamp(1.4rem, 3vw, 2.2rem);
  border-radius: var(--radius-card); background: linear-gradient(135deg, hsla(45, 100%, 70%, .16), hsla(170, 50%, 60%, .08)); border: 1px solid hsla(45, 100%, 70%, .45);
}
.w-ft-for h3 { font-size: clamp(1.35rem, 1.1rem + 1vw, 1.8rem); margin-bottom: 1rem; }
.w-ft-for ul { list-style: none; margin: 0; padding: 0; display: grid; gap: .8rem; }
.w-ft-for li { margin: 0; display: grid; grid-template-columns: 26px 1fr; gap: .8rem; align-items: start; font-size: 1.08rem; }
.w-ft-for-dot { width: 18px; height: 18px; margin-top: .25rem; border-radius: 50%; background: radial-gradient(circle, #fff4c4, var(--gold) 60%); box-shadow: 0 0 12px 3px hsla(45, 100%, 60%, .55); }

/* Gestalt language: how we use it */
.w-glp-use { margin-top: clamp(1.75rem, 4vw, 2.5rem); display: grid; gap: 1.25rem 2.5rem; align-items: start; padding: clamp(1.4rem, 3vw, 2.2rem); border-radius: var(--radius-card); background: hsla(215, 45%, 14%, .5); border: 1px solid hsla(45, 80%, 85%, .16); }
.w-glp-use h3 { font-size: 1.6rem; }
.w-glp-note { margin: 1rem 0 0; }
.w-glp-note .hand { font-size: 1.65rem; display: inline-block; transform: rotate(-2deg); }
.w-glp-list { list-style: none; margin: 0; padding: 0; display: grid; gap: .9rem; counter-reset: glp; }
.w-glp-list li { margin: 0; position: relative; padding: .95rem 1.1rem .95rem 3.6rem; border-radius: 20px; background: hsla(45, 100%, 70%, .1); counter-increment: glp; }
.w-glp-list li::before { content: counter(glp); position: absolute; left: .9rem; top: .9rem; width: 34px; height: 34px; border-radius: 50%; display: grid; place-items: center; background: var(--gold); color: var(--midnight); font: 600 1.05rem/1 var(--font-display); box-shadow: 0 0 14px hsla(45, 100%, 60%, .45); }
.w-glp-list strong { display: block; font: 600 1.15rem/1.3 var(--font-display); color: var(--on-dark); margin-bottom: .15rem; }
.w-section-actions { display: flex; flex-wrap: wrap; justify-content: center; gap: .75rem; margin: clamp(1.75rem, 4vw, 2.5rem) 0 0; }

/* AAC */
.w-aac-intro { display: grid; gap: clamp(1.5rem, 4vw, 3rem); align-items: center; margin-bottom: clamp(1.75rem, 4vw, 2.5rem); }
.w-aac-intro .section-head { margin-bottom: 0; }
.w-aac-device { justify-self: center; width: min(100%, 330px); padding: 14px; border-radius: var(--radius-card); background: #1b2440; box-shadow: 0 0 0 3px hsla(45, 80%, 85%, .25), 0 24px 60px hsla(220, 60%, 4%, .5); }
.w-aac-screen { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; padding: 10px; border-radius: 18px; background: var(--card); }
.w-aac-screen span { display: grid; place-items: center; min-height: 58px; padding: .3rem; border-radius: 12px; font: 600 min(1rem, 18px)/1.1 var(--font-display); color: #1b2440; text-align: center; background: #a9cdf0; box-shadow: inset 0 -3px 0 hsla(0, 0%, 0%, .12); }
.w-aac-screen span:nth-child(1), .w-aac-screen span:nth-child(8) { background: #f7e08a; }
.w-aac-screen span:nth-child(2), .w-aac-screen span:nth-child(3), .w-aac-screen span:nth-child(5), .w-aac-screen span:nth-child(6), .w-aac-screen span:nth-child(9) { background: #b7e3bd; }
.w-aac-screen span:nth-child(7) { background: #f6b8c6; }
.w-aac-said { margin: .7rem 0 .1rem; text-align: center; }
.w-aac-said .hand { font-size: 1.7rem; color: var(--gold); }
.w-aac-n { display: grid; place-items: center; width: 40px; height: 40px; margin-bottom: .8rem; border-radius: 50%; background: var(--gold); color: var(--midnight); font: 600 1.15rem/1 var(--font-display); box-shadow: 0 0 16px hsla(45, 100%, 60%, .45); }
.w-aac-foot { margin-top: clamp(1.5rem, 4vw, 2.25rem); display: grid; gap: 1.25rem; align-items: stretch; }
.w-aac-systems { padding: 1.4rem 1.5rem; border-radius: var(--radius-card); background: hsla(45, 100%, 70%, .1); border: 1px solid hsla(45, 100%, 70%, .4); }
.w-aac-systems p { margin-bottom: .8rem; }
.w-aac-quote { margin: 0; padding: 1.4rem 1.5rem; border-radius: var(--radius-card); background: var(--card); color: var(--navy); }
.w-aac-quote blockquote { margin: 0 0 .7rem; }
.w-aac-quote blockquote p { margin: 0; font: 500 1.15rem/1.5 var(--font-display); }
.w-aac-quote figcaption { font-size: .98rem; }

/* Meet the therapists */
.w-trained { font-size: .98rem; padding: .8rem 1rem; border-radius: 18px; background: var(--cream-soft, hsl(45, 70%, 93%)); }
.w-person-quote { margin: 0 0 1rem; }
.w-ventures { list-style: none; margin: 0; padding: 0; display: grid; gap: .5rem; font-size: .96rem; }
.w-ventures li { margin: 0; padding: .6rem .85rem; border-radius: 16px; background: hsla(170, 45%, 60%, .14); }
.w-ventures a { display: inline-flex; align-items: center; min-height: 44px; margin-right: .3rem; color: var(--teal-dark); }
.w-ventures a:hover { color: var(--navy); }

@media (min-width: 700px) {
  .w-approach-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .w-aac-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .w-ft-for ul { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .w-aac-foot { grid-template-columns: 1fr 1fr; }
}
@media (min-width: 960px) {
  .w-approach-intro { grid-template-columns: 1.1fr .9fr; }
  .w-approach-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .w-aac-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .w-glp-use { grid-template-columns: .85fr 1.15fr; }
  .w-aac-intro { grid-template-columns: 1.25fr .75fr; }
}
@media (max-width: 699px) {
  /* Compact cards on phones: the icon or number sits beside the heading. */
  .w-approach-grid .w-card-glass, .w-aac-grid .w-card-glass { display: grid; grid-template-columns: 48px 1fr; gap: .15rem .9rem; align-items: start; padding: 1.15rem 1.1rem; }
  .w-approach-grid .w-card-icon { grid-row: span 2; width: 48px; height: 48px; margin: 0; border-radius: 16px; }
  .w-approach-grid .w-card-icon svg { width: 34px; height: 34px; }
  .w-aac-grid .w-aac-n { grid-row: span 2; margin: .1rem 0 0; }
  .w-approach-grid h3, .w-aac-grid h3 { font-size: 1.25rem; margin-bottom: .2rem; }
}
@media (max-width: 599px) {
  .w-toy { grid-template-columns: 1fr; text-align: center; }
  .w-toy-puppet { width: 120px; margin: 0 auto; }
  .w-toy .w-chips { justify-content: center; }
  .w-letter::before, .w-letter::after { width: 70px; }
}
@media (prefers-reduced-motion: no-preference) {
  .w-letter-bug { animation: w-bob 3s ease-in-out infinite; }
  .w-toy-puppet { transform-origin: 30% 100%; animation: w-puppet 4.5s ease-in-out infinite; }
  @keyframes w-puppet { 0%, 100% { transform: rotate(0); } 20% { transform: rotate(-5deg) translateY(-4px); } 30% { transform: rotate(3deg); } 40% { transform: rotate(0); } }
  /* The device says "I love you", one button at a time. */
  .w-aac-screen span:nth-child(1) { animation: w-aac-tap 7s ease-in-out infinite; }
  .w-aac-screen span:nth-child(9) { animation: w-aac-tap 7s ease-in-out .9s infinite; }
  .w-aac-screen span:nth-child(8) { animation: w-aac-tap 7s ease-in-out 1.8s infinite; }
  @keyframes w-aac-tap { 0%, 10%, 100% { transform: none; box-shadow: inset 0 -3px 0 hsla(0, 0%, 0%, .12); } 4% { transform: scale(.92); box-shadow: 0 0 0 3px var(--gold), 0 0 18px hsla(45, 100%, 60%, .8); } }
  .w-aac-said .hand { display: inline-block; animation: w-aac-say 7s ease-in-out 2.4s infinite both; }
  @keyframes w-aac-say { 0% { opacity: 0; transform: translateY(6px) scale(.9); } 8%, 60% { opacity: 1; transform: none; } 70%, 100% { opacity: 0; transform: translateY(-4px); } }
}

/* ==========================================================================
   Inner pages share the world (late September 2026). Taylor asked for the
   homepage's style everywhere, with short lines and the detail behind taps.
   ========================================================================== */
body.world-page .crumbs { position: relative; z-index: 2; background: transparent; color: hsl(45, 55%, 88%); }
body.world-page .crumbs a:hover { color: var(--gold); }
.js .w-js-only { display: inline; }
.w-js-only { display: none; }
.w-page-hero { min-height: min(84svh, 760px); }
.w-page-hero .w-hero-title { font-size: clamp(2.4rem, 1.5rem + 3.4vw, 4.3rem); }

/* Three arched portraits in the hero: the team. */
.w-trio { position: relative; width: min(100%, 460px); aspect-ratio: 1 / 1.02; }
.w-trio-arch { position: absolute; margin: 0; overflow: hidden; border-radius: 999px 999px 26px 26px; border: 3px solid hsla(45, 90%, 75%, .6); box-shadow: 0 0 0 8px hsla(45, 90%, 75%, .07), 0 0 60px hsla(45, 100%, 60%, .2), 0 24px 50px hsla(230, 50%, 8%, .45); background: #2b3160; }
.w-trio-arch img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 18%; }
.w-trio-arch--main { left: 26%; top: 0; width: 48%; height: 74%; z-index: 2; }
.w-trio-arch--left { left: 0; top: 30%; width: 34%; height: 52%; transform: rotate(-5deg); }
.w-trio-arch--right { right: 0; top: 36%; width: 34%; height: 52%; transform: rotate(5deg); }
.w-trio-fly { position: absolute; z-index: 3; width: 12px; height: 12px; border-radius: 50%; background: radial-gradient(circle, #fff6cf, var(--gold) 60%); box-shadow: 0 0 16px 6px hsla(45, 100%, 60%, .6); }
.w-trio-fly--a { left: 18%; top: 14%; }
.w-trio-fly--b { right: 14%; top: 22%; width: 9px; height: 9px; }
.w-trio-fly--c { left: 50%; bottom: 6%; width: 10px; height: 10px; }

/* Cards that flip over on tap. Without JS both sides simply show. */
.w-flips { list-style: none; margin: 0; padding: 0; display: grid; gap: 1.1rem; }
.w-flip { position: relative; margin: 0; }
.w-flip-inner { display: grid; gap: .5rem; }
.w-flip-face { border-radius: var(--radius-card); padding: 1.5rem 1.3rem; }
.w-flip-front { display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; background: hsla(215, 45%, 14%, .5); border: 1.5px solid hsla(45, 80%, 85%, .18); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
.w-flip-front h3 { margin: .9rem 0 0; font-size: 1.3rem; line-height: 1.2; }
.w-flip-icon { display: grid; place-items: center; width: 76px; height: 76px; border-radius: var(--radius-inner); background: color-mix(in srgb, var(--tone) 40%, var(--card)); box-shadow: 0 0 0 6px color-mix(in srgb, var(--tone) 25%, transparent); }
.w-flip-icon svg { width: 54px; height: 54px; }
.w-flip-hint { display: none; margin-top: .5rem; font-size: 1.3rem; color: var(--gold); }
.w-flip-back { display: grid; place-items: center; text-align: center; background: color-mix(in srgb, var(--tone) 55%, var(--card)); color: var(--navy); }
.w-flip-back p { margin: 0; font: 500 1.08rem/1.5 var(--font-display); }
.w-flip-btn { position: absolute; inset: 0; z-index: 3; width: 100%; height: 100%; padding: 0; border: 0; border-radius: var(--radius-card); background: transparent; cursor: pointer; }
.w-flip-btn:focus-visible { outline: 3px solid var(--gold); outline-offset: 4px; }
.w-flips.is-live .w-flip { perspective: 1100px; }
/* Both faces share one grid cell, so a card is always as tall as its longer
   side (no text spills out on small phones or with large text). */
.w-flips.is-live .w-flip-inner { position: relative; display: grid; gap: 0; height: 100%; min-height: 240px; transform-style: preserve-3d; transition: transform .7s cubic-bezier(.34, 1.3, .64, 1); }
.w-flips.is-live .w-flip-face { grid-area: 1 / 1; min-width: 0; -webkit-backface-visibility: hidden; backface-visibility: hidden; }
.w-flips.is-live .w-flip-back { transform: rotateY(180deg); }
.w-flips.is-live .w-flip-hint { display: block; }
.w-flips.is-live .w-flip.is-flipped .w-flip-inner { transform: rotateY(180deg); }
@media (hover: hover) { .w-flips.is-live .w-flip:hover .w-flip-front { border-color: var(--tone); box-shadow: 0 0 40px color-mix(in srgb, var(--tone) 30%, transparent); } }

/* What child-led looks like: three little scenes. */
.w-childled { margin-top: clamp(3rem, 7vw, 5rem); }
.w-childled .section-head { margin-bottom: 1.5rem; }
.w-childled-kicker { margin: 0 0 .3rem; font-size: clamp(1.8rem, 1.4rem + 1.4vw, 2.5rem); }
.w-vignettes { list-style: none; margin: 0; padding: 0; display: grid; gap: 1.1rem; }
.w-vignette { margin: 0; display: grid; grid-template-columns: 84px 1fr; gap: 1rem; align-items: center; padding: 1.1rem 1.2rem; border-radius: var(--radius-card); background: var(--card); color: var(--navy); box-shadow: 0 16px 40px hsla(220, 60%, 4%, .35); transform: rotate(var(--r, 0deg)); }
.w-vignette:nth-child(1) { --r: -1.2deg; }
.w-vignette:nth-child(2) { --r: .8deg; }
.w-vignette:nth-child(3) { --r: -.6deg; }
.w-vignette-art { display: grid; place-items: center; width: 84px; height: 84px; border-radius: var(--radius-inner); background: color-mix(in srgb, var(--tone) 35%, var(--card)); }
.w-vignette-art svg { width: 64px; height: 64px; }
.w-vignette p { margin: 0; font-size: 1.05rem; }
.w-vignette strong { font-family: var(--font-display); font-weight: 600; }
.w-bigline { margin: clamp(1.75rem, 4vw, 2.5rem) 0 0; text-align: center; }
.w-bigline .hand, .w-quote-line .hand { font-size: clamp(1.7rem, 1.3rem + 1.6vw, 2.6rem); line-height: 1.15; color: var(--gold); text-shadow: 0 0 24px hsla(45, 100%, 60%, .35); }

/* The whole child: lights around your child (tabs, driven by [data-picker]). */
.w-orbit { display: grid; gap: 1.5rem; justify-items: center; }
.w-orbit-stage { position: relative; width: min(100%, 420px); aspect-ratio: 1; }
.w-orbit-stage::before { content: ""; position: absolute; inset: 15%; border-radius: 50%; border: 2px dotted hsla(45, 80%, 85%, .35); }
.w-orbit-center { position: absolute; left: 50%; top: 50%; width: 34%; aspect-ratio: 1; transform: translate(-50%, -50%); border-radius: 50%; display: grid; place-items: center; background: radial-gradient(circle, hsla(45, 100%, 80%, .35), hsla(45, 100%, 60%, .08) 70%); }
.w-orbit-center .hand { position: relative; font-size: clamp(1.25rem, 1rem + .8vw, 1.6rem); white-space: nowrap; color: hsl(45, 90%, 88%); }
.w-orbit-glow { position: absolute; width: 22px; height: 22px; top: 18%; border-radius: 50%; background: radial-gradient(circle, #fff6cf, var(--gold) 60%); box-shadow: 0 0 26px 10px hsla(45, 100%, 60%, .55); }
.w-orbit-ring[hidden] { display: none; }
.w-orbit-tab {
  --ang: calc(var(--n) * 72deg - 90deg);
  position: absolute; left: 50%; top: 50%; width: 30%; margin: 0; padding: 0; border: 0; background: none; cursor: pointer;
  display: flex; flex-direction: column; align-items: center; gap: .3rem; color: hsl(45, 70%, 92%); font: 600 .98rem/1.15 var(--font-display); text-align: center;
  transform: translate(-50%, -50%) rotate(var(--ang)) translate(clamp(118px, 35vw, 158px)) rotate(calc(-1 * var(--ang)));
}
.w-orbit-icon { display: grid; place-items: center; width: clamp(58px, 16vw, 74px); aspect-ratio: 1; border-radius: 50%; background: color-mix(in srgb, var(--tone) 35%, var(--card)); box-shadow: 0 0 0 4px hsla(45, 80%, 85%, .15); transition: transform .35s cubic-bezier(.34, 1.56, .64, 1), box-shadow .3s; }
.w-orbit-icon svg { width: 62%; height: 62%; }
@media (hover: hover) { .w-orbit-tab:hover .w-orbit-icon { transform: scale(1.08); } }
.w-orbit-tab[aria-selected="true"] .w-orbit-icon { transform: scale(1.14); box-shadow: 0 0 0 5px var(--tone), 0 0 36px 8px color-mix(in srgb, var(--tone) 60%, transparent); }
.w-orbit-tab[aria-selected="true"] .w-orbit-label { color: var(--gold); }
.w-orbit-tab:focus-visible { outline: none; }
.w-orbit-tab:focus-visible .w-orbit-icon { outline: 3px solid var(--gold); outline-offset: 4px; }
.w-orbit-panels { width: 100%; max-width: 560px; display: grid; gap: 1rem; }
.w-orbit-panel { padding: 1.4rem 1.5rem; border-radius: var(--radius-card); background: var(--card); color: var(--navy); border-top: 8px solid var(--tone); box-shadow: 0 20px 50px hsla(220, 60%, 4%, .4); }
.w-night .w-orbit-panel h3 { color: var(--navy); font-size: 1.4rem; margin-bottom: .3rem; }
.w-orbit-panel p { margin: 0; font-size: 1.08rem; }
.w-orbit.is-live .w-orbit-panels { display: grid; }
.w-orbit.is-live .w-orbit-panel { grid-area: 1 / 1; }
.w-orbit.is-live .w-orbit-panel[hidden] { display: block; visibility: hidden; }
.w-orbit:not(.is-live) .w-orbit-stage { display: none; }
@media (min-width: 960px) {
  .w-orbit.is-live { grid-template-columns: 1fr 1fr; align-items: center; gap: 3rem; }
  .w-orbit.is-live .w-orbit-stage { justify-self: end; }
  .w-orbit.is-live .w-orbit-panels { justify-self: start; }
}
@media (prefers-reduced-motion: no-preference) {
  .w-orbit-panel.is-fresh { animation: picker-in .45s var(--ease); }
  .w-orbit-glow { animation: w-pulse 2.6s ease-in-out infinite; }
  .w-orbit-stage::before { animation: w-spin 60s linear infinite; }
  @keyframes w-spin { to { transform: rotate(360deg); } }
  .w-trio-fly { animation: w-bob 3.2s ease-in-out infinite; }
  .w-trio-fly--b { animation-delay: -1.1s; }
  .w-trio-fly--c { animation-delay: -2s; }
  .w-flips.is-live .w-flip:not(.is-flipped):hover .w-flip-icon svg { animation: picker-pop .6s cubic-bezier(.34, 1.56, .64, 1); }
}
.w-quote-line { margin: clamp(2.5rem, 6vw, 4rem) auto 0; max-width: 820px; text-align: center; }
.w-neighbor-note { max-width: 760px; margin: clamp(2rem, 5vw, 3rem) auto 0; padding: 1.5rem 1.6rem; border-radius: var(--radius-card); color: hsl(45, 60%, 94%); background: hsla(215, 45%, 14%, .94); border: 1.5px dashed hsla(45, 100%, 70%, .55); box-shadow: 0 18px 44px hsla(220, 60%, 4%, .3); }
.w-neighbor-note h3 { margin-bottom: .4rem; color: #fff6dc; }
.w-neighbor-note p:not(.eyebrow) { margin-bottom: 1rem; }

/* Team cards on inner pages: the full bio opens on tap. */
.w-person-role { margin-bottom: .2rem; font-size: 1.35rem; }
.w-day .w-person-role { color: var(--gold-ink); }
.w-person--small { max-width: 820px; justify-self: center; width: 100%; }
.w-trained-label { margin: 0 0 .4rem; font-weight: 800; }
.w-trained-chips { list-style: none; margin: 0 0 1rem; padding: 0; display: flex; flex-wrap: wrap; gap: .4rem; }
.w-trained-chips li { margin: 0; padding: .22rem .75rem; border-radius: var(--radius-pill); font-size: .88rem; font-weight: 700; background: #fff; border: 1.5px solid hsla(200, 47%, 24%, .18); }
.w-bio { margin-top: 1.1rem; }
.w-bio summary {
  display: inline-flex; align-items: center; gap: .5rem; max-width: 100%; min-height: 48px; padding: .6rem 1.2rem; border-radius: var(--radius-pill); cursor: pointer; list-style: none;
  border: 2px solid var(--navy); color: var(--navy); font: 600 1rem/1.2 var(--font-display); background: hsla(45, 100%, 70%, .25);
}
.w-bio summary::-webkit-details-marker { display: none; }
.w-bio summary::after { content: ""; width: 9px; height: 9px; border: solid currentColor; border-width: 0 2.5px 2.5px 0; transform: rotate(45deg) translate(-2px, -2px); transition: transform .25s; }
.w-bio[open] summary::after { transform: rotate(-135deg) translate(-2px, -2px); }
.w-bio summary:hover { background: var(--navy); color: var(--cream); }
.w-bio-body { margin-top: 1rem; padding: 1.2rem 1.3rem; border-radius: var(--radius-inner); background: hsla(45, 100%, 70%, .14); }
.w-bio-body p:last-child { margin-bottom: 0; }

/* Come say hi */
.w-visit { display: grid; gap: 1.5rem 2.5rem; align-items: center; padding: clamp(1.5rem, 3.5vw, 2.5rem); border-radius: var(--radius-panel); background: hsla(45, 100%, 98%, .85); box-shadow: 0 18px 50px hsla(25, 50%, 40%, .14); }
.w-visit-pin { width: 72px; }
.w-visit-pin svg { width: 100%; height: auto; filter: drop-shadow(0 8px 12px hsla(40, 80%, 40%, .3)); }
.w-visit-copy h2 { margin-bottom: .4rem; }
.w-visit-address { font: 600 1.25rem/1.4 var(--font-display); margin-bottom: .6rem; }
.w-tags--day { color: var(--navy); margin: 0 0 1.25rem; }
.w-visit-photo { max-width: 420px; justify-self: center; }
@media (min-width: 700px) {
  .w-flips { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .w-vignettes { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .w-vignette { grid-template-columns: 1fr; justify-items: center; text-align: center; padding: 1.5rem 1.3rem; }
  .w-vignette-art { width: 110px; height: 110px; }
  .w-vignette-art svg { width: 82px; height: 82px; }
}
@media (min-width: 960px) {
  .w-flips { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .w-flips.is-live .w-flip-inner { min-height: 280px; }
  .w-visit { grid-template-columns: auto 1fr minmax(260px, 38%); }
}
@media (max-width: 959px) {
  .w-trio { width: min(100%, 380px); margin-inline: auto; }
}
/* Phones: flip cards lie on their side (icon left, title right) so four of them stay short. */
@media (max-width: 699px) {
  .w-flips.is-live .w-flip-inner { min-height: 160px; }
  .w-flip-front { display: grid; grid-template-columns: auto 1fr; align-content: center; column-gap: 1.1rem; text-align: left; }
  .w-flip-front h3 { margin: 0; align-self: end; }
  .w-flip-hint { margin-top: .2rem; grid-column: 2; align-self: start; }
  .w-flip-icon { grid-row: span 2; width: 68px; height: 68px; }
  .w-flip-icon svg { width: 48px; height: 48px; }
  .w-flip-back { padding: 1.2rem 1.3rem; }
  .w-flip-back p { font-size: 1.02rem; }
}
@media (prefers-reduced-motion: reduce) {
  .w-flips.is-live .w-flip-inner { transition: none; }
}

/* ==========================================================================
   Rates & insurance: the essentials on one pinned card, each way to pay
   one tap away, and the fine print one more tap after that.
   ========================================================================== */
.w-glance {
  position: relative; padding: clamp(1.6rem, 3.5vw, 2.2rem) clamp(1.3rem, 3vw, 1.9rem) 1.3rem; border-radius: var(--radius-card); background: var(--card); color: var(--navy); transform: rotate(1.2deg);
  box-shadow: 0 0 0 8px hsla(45, 100%, 70%, .14), 0 0 80px hsla(45, 100%, 60%, .2), 0 28px 60px hsla(230, 50%, 8%, .45);
}
.w-glance::before { content: ""; position: absolute; top: -12px; left: 14%; width: 84px; height: 24px; border-radius: 2px; background: hsla(170, 45%, 60%, .75); transform: rotate(-5deg); }
.w-glance-title { margin: 0 0 .6rem; font-size: 2rem; line-height: 1; color: var(--gold-ink); }
.w-glance-list { list-style: none; margin: 0; padding: 0; display: grid; }
.w-glance-list li { margin: 0; border-top: 1.5px dashed hsla(200, 47%, 24%, .18); }
.w-glance-list li:first-child { border-top: 0; }
.w-glance-list a, .w-glance-list span {
  position: relative; display: flex; align-items: center; gap: .75rem; min-height: 48px; padding: .45rem .5rem .45rem 0;
  font: 600 1.12rem/1.25 var(--font-display); color: var(--navy); text-decoration: none;
}
.w-glance-list a::before, .w-glance-list span::before { content: ""; flex: none; width: 12px; height: 12px; border-radius: 50%; background: var(--gold); box-shadow: 0 0 10px 3px hsla(45, 100%, 55%, .55); }
.w-glance-list a::after { content: ""; flex: none; width: 9px; height: 9px; margin-left: auto; border: solid currentColor; border-width: 2.5px 2.5px 0 0; transform: rotate(45deg); opacity: .55; transition: transform .25s var(--ease), opacity .25s; }
.w-glance-list a:hover { color: #9a5f10; }
.w-glance-list a:hover::after { opacity: 1; transform: translateX(3px) rotate(45deg); }
.w-glance-list a:focus-visible { outline: 3px solid var(--gold); outline-offset: 2px; border-radius: 10px; }
.w-glance-note { margin: .7rem 0 0; font: 600 1.3rem/1.1 var(--font-hand); color: var(--gold-ink); }

.w-pay-hint { display: block; margin-top: .15rem; font: 700 1.2rem/1.05 var(--font-hand); color: var(--gold); }
.picker-tab[aria-selected="true"] .w-pay-hint { color: var(--gold-ink); }
.w-pay, .w-pay .picker-panel { scroll-margin-top: .25rem; }
@media (min-width: 901px) { .w-pay, .w-pay .picker-panel { scroll-margin-top: calc(var(--header-h) + 1.25rem); } }
.w-pay-panel > p { font-size: 1.06rem; }
.w-pay-panel > * + * { margin-top: 1rem; }
.w-pay-panel h4 { margin: 0 0 .3rem; font: 600 1.15rem/1.25 var(--font-display); color: var(--navy); }

.w-yesno { list-style: none; margin: .6rem 0 0; padding: 0; display: grid; gap: .55rem; }
.w-yesno li { position: relative; margin: 0; padding: .6rem .9rem .6rem 2.9rem; border-radius: 18px; font: 600 1.08rem/1.35 var(--font-display); }
.w-yesno li::before { position: absolute; left: .7rem; top: 50%; width: 1.6rem; height: 1.6rem; margin-top: -.8rem; border-radius: 50%; display: grid; place-items: center; font: 800 .95rem/1 var(--font-body); }
.w-yesno .is-yes { background: hsla(160, 45%, 55%, .16); }
.w-yesno .is-yes::before { content: "\2713"; background: hsl(162, 45%, 42%); color: #fff; }
.w-yesno .is-no { background: hsla(10, 70%, 70%, .14); }
.w-yesno .is-no::before { content: "\2715"; background: hsl(8, 55%, 55%); color: #fff; }

.w-prices { list-style: none; margin: .8rem 0 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .75rem; }
.w-prices li { margin: 0; display: grid; justify-items: center; align-content: center; gap: .15rem; aspect-ratio: 1; border-radius: 50%; background: radial-gradient(circle at 50% 40%, #fff6d6, color-mix(in srgb, var(--tone) 45%, var(--card))); box-shadow: 0 0 0 4px color-mix(in srgb, var(--tone) 35%, transparent), 0 10px 24px hsla(40, 70%, 40%, .18); text-align: center; }
.w-price { font: 700 clamp(1.5rem, 1.1rem + 1.6vw, 2.1rem)/1 var(--font-display); color: var(--navy); }
.w-price-len { font-size: .95rem; font-weight: 700; }
.w-prices li:nth-child(2) { transform: translateY(-8px); }

.w-two-steps { list-style: none; margin: .8rem 0 0; padding: 0; display: grid; gap: .75rem; }
.w-two-steps li { margin: 0; display: grid; grid-template-columns: auto 1fr; column-gap: 1rem; align-items: center; padding: .9rem 1.1rem; border-radius: var(--radius-inner); background: color-mix(in srgb, var(--tone) 22%, var(--card)); }
.w-two-steps .w-price { grid-row: span 2; display: grid; place-items: center; width: 4.6rem; height: 4.6rem; border-radius: 50%; background: var(--card); font-size: 1.35rem; box-shadow: 0 0 0 3px var(--tone); }
.w-two-steps strong { font: 600 1.08rem/1.25 var(--font-display); }
.w-two-steps li > span:last-child { font-size: .98rem; }

.w-pay-duo { display: grid; gap: .8rem; }
.w-pay-duo article { padding: 1rem 1.15rem; border-radius: var(--radius-inner); background: color-mix(in srgb, var(--tone) 22%, var(--card)); }
.w-pay-duo p { margin: 0; font-size: 1.02rem; }

/* The fine print: quiet rows that open on tap. */
.w-fine { border-top: 1.5px dashed hsla(200, 47%, 24%, .2); }
.w-fine-item { border-bottom: 1.5px dashed hsla(200, 47%, 24%, .2); }
.w-fine-item summary {
  display: flex; align-items: center; justify-content: space-between; gap: 1rem; min-height: 52px; padding: .55rem .2rem; cursor: pointer; list-style: none; overflow-wrap: anywhere;
  font: 600 1.06rem/1.25 var(--font-display); color: var(--navy);
}
.w-fine-item summary::-webkit-details-marker { display: none; }
.w-fine-item summary::after { content: "+"; flex: none; display: grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; background: color-mix(in srgb, var(--tone) 45%, var(--card)); font: 700 1.3rem/1 var(--font-body); transition: transform .25s var(--ease); }
.w-fine-item[open] summary::after { transform: rotate(45deg); }
.w-fine-item summary:hover { color: #9a5f10; }
.w-fine-item summary:focus-visible { outline: 3px solid var(--navy); outline-offset: 2px; border-radius: 10px; }
.w-fine-body { padding: 0 .2rem 1rem; font-size: 1rem; line-height: 1.6; }
.w-fine-body h4 { margin-top: 1rem; font-size: 1.05rem; }
.w-fine-body p:last-child { margin-bottom: 0; }
.w-fine-steps, .w-fine-links { margin: .6rem 0 .9rem; padding-left: 1.3rem; }
.w-fine-steps li, .w-fine-links li { margin: .4rem 0; }

/* Questions go straight to Dr. Taylor. */
.w-ask { display: grid; gap: 1.5rem 2.5rem; align-items: center; max-width: 900px; margin: 0 auto; padding: clamp(1.4rem, 3.5vw, 2.4rem); border-radius: var(--radius-panel); background: hsla(45, 100%, 98%, .9); box-shadow: 0 18px 50px hsla(25, 50%, 40%, .14); }
.w-ask-photo { width: min(62%, 220px); margin: 0 auto; overflow: hidden; border-radius: 999px 999px 26px 26px; border: 3px solid hsla(45, 90%, 60%, .7); box-shadow: 0 0 0 8px hsla(45, 100%, 70%, .18); }
.w-ask-photo img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; object-position: 50% 18%; }
.w-ask-copy h2 { margin-bottom: .5rem; }
.w-ask-copy p:not(.eyebrow):not(.actions) { font-size: 1.1rem; }
.w-ask .actions { gap: .75rem; }
@media (min-width: 700px) {
  .w-ask { grid-template-columns: 220px 1fr; }
  .w-ask-photo { width: 100%; }
  .w-pay-duo { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 959px) {
  .w-pay .picker-tab:last-child { grid-column: 1 / -1; }
  .w-glance { transform: rotate(.6deg); }
}
@media (max-width: 599px) {
  .w-pay .picker-tab:last-child { flex-direction: row; min-height: 78px; text-align: left; }
  .w-prices { gap: .5rem; }
  .w-price-len { font-size: .85rem; }
}

/* ==========================================================================
   Services: an arched window in the hero, lanterns for how it helps, flip
   cards for what to expect, and a polaroid beside our approach.
   ========================================================================== */
.w-svc-visual { width: min(100%, 360px); }
.w-svc-visual .w-arch > .ph { width: 100%; margin: 0; border-radius: 0; }
.w-svc-badge { position: absolute; z-index: 3; left: -6%; bottom: 8%; display: grid; place-items: center; width: 92px; height: 92px; border-radius: 50%; background: var(--card); box-shadow: 0 0 0 6px hsla(45, 100%, 70%, .25), 0 0 40px hsla(45, 100%, 60%, .35), 0 14px 30px hsla(230, 50%, 8%, .4); transform: rotate(-6deg); }
.w-svc-badge svg { width: 60px; height: 60px; }

.w-lanterns.w-ways { gap: 1rem; }
.w-ways .w-lantern { padding: 2rem 1.2rem 1.4rem; }
.w-ways .w-lantern p { font: 600 1.12rem/1.35 var(--font-display); color: hsl(45, 70%, 94%); }
@media (min-width: 600px) { .w-lanterns.w-ways { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1100px) { .w-lanterns.w-ways { grid-template-columns: repeat(4, minmax(0, 1fr)); } }

.w-svc-extra { margin-top: clamp(2rem, 5vw, 3rem); text-align: center; }
.w-svc-extra .w-trained-label { color: hsl(45, 70%, 92%); }
.w-chips-night { list-style: none; margin: 0 auto; padding: 0; display: flex; flex-wrap: wrap; justify-content: center; gap: .5rem; max-width: 720px; }
.w-chips-night li { margin: 0; padding: .35rem .95rem; border-radius: var(--radius-pill); font-weight: 800; font-size: .98rem; background: hsla(45, 100%, 70%, .16); border: 1px solid hsla(45, 100%, 70%, .35); color: hsl(45, 90%, 90%); }
.w-svc-extra .actions { justify-content: center; margin-top: 1.25rem; }

.w-flips--expect .w-flip-front h3 { font-size: 1.25rem; }
.w-flips--expect .w-flip-back p { font-size: 1.02rem; line-height: 1.45; }
@media (min-width: 960px) { .w-flips--expect.is-live .w-flip-inner { min-height: 300px; } }

.w-svc-approach { display: grid; gap: 1.75rem 3rem; align-items: center; padding: clamp(1.5rem, 3.5vw, 2.6rem); border-radius: var(--radius-panel); background: hsla(45, 100%, 98%, .9); box-shadow: 0 18px 50px hsla(25, 50%, 40%, .14); }
.w-svc-approach-copy h2 { margin-bottom: .6rem; }
.w-svc-approach-copy > p:not(.eyebrow):not(.actions) { font-size: 1.1rem; }
.w-svc-approach .w-tags--day { flex-direction: row; flex-wrap: wrap; gap: .4rem 1.2rem; margin: .5rem 0 1rem; }
.w-svc-small { font-size: 1rem !important; color: #4a5a6a; }
.w-svc-photo { width: min(100%, 420px); justify-self: center; }
.w-svc-note { max-width: 760px; margin: clamp(1.5rem, 4vw, 2.5rem) auto 0; padding: 1.4rem 1.6rem; border-radius: var(--radius-card); background: hsla(45, 100%, 98%, .9); border: 1.5px dashed hsla(40, 70%, 45%, .45); }
.w-svc-note h3 { margin-bottom: .35rem; }
.w-svc-note .actions { margin: 1rem 0 0; }
@media (min-width: 900px) { .w-svc-approach { grid-template-columns: 1fr minmax(280px, 40%); } }

/* Services: one card per service. The whole card is the link. */
.w-svc-grid { list-style: none; margin: 0; padding: 0; display: grid; gap: 1rem; }
.w-svc-grid > li { margin: 0; }
.w-svc-card {
  height: 100%; display: flex; flex-direction: column; align-items: flex-start; gap: .9rem; padding: 1.5rem 1.4rem 1.4rem; border-radius: var(--radius-card); text-decoration: none;
  background: var(--card); color: var(--navy); border-top: 8px solid var(--tone); box-shadow: 0 20px 50px hsla(220, 60%, 4%, .4);
  transition: transform .35s cubic-bezier(.34, 1.56, .64, 1), box-shadow .3s;
}
@media (hover: hover) { .w-svc-card:hover { transform: translateY(-4px); box-shadow: 0 0 0 5px color-mix(in srgb, var(--tone) 40%, transparent), 0 24px 56px hsla(220, 60%, 4%, .45); } }
.w-svc-card:focus-visible { outline: 3px solid var(--gold); outline-offset: 4px; }
.w-svc-icon { display: grid; place-items: center; width: 72px; height: 72px; border-radius: var(--radius-inner); background: color-mix(in srgb, var(--tone) 38%, var(--card)); }
.w-svc-icon svg { width: 52px; height: 52px; }
.w-svc-card-body { display: grid; gap: .35rem; }
.w-svc-card-title { font: 600 1.35rem/1.2 var(--font-display); }
.w-svc-card-desc { font-size: 1.02rem; line-height: 1.5; }
.w-svc-more { margin-top: auto; display: inline-flex; align-items: center; gap: .5rem; padding: .55rem 1.1rem; border-radius: var(--radius-pill); border: 2px solid var(--navy); font: 600 .98rem/1.2 var(--font-display); }
.w-svc-more::after { content: ""; width: 8px; height: 8px; border: solid currentColor; border-width: 2.5px 2.5px 0 0; transform: rotate(45deg); }
@media (hover: hover) { .w-svc-card:hover .w-svc-more { background: var(--navy); color: var(--cream); } }
.w-svc-beyond { margin: clamp(2.5rem, 6vw, 4rem) auto 1.25rem; }
.w-svc-beyond h3 { font-size: clamp(1.5rem, 1.2rem + 1vw, 2rem); margin-bottom: .4rem; }
.w-svc-card--small { flex-direction: row; flex-wrap: wrap; align-items: center; padding: 1.1rem 1.2rem; }
.w-svc-card--small .w-svc-icon { width: 60px; height: 60px; border-radius: 18px; }
.w-svc-card--small .w-svc-icon svg { width: 44px; height: 44px; }
.w-svc-card--small .w-svc-card-body { flex: 1; min-width: min(12rem, 100%); }
.w-svc-card--small .w-svc-card-title { font-size: 1.15rem; }
.w-svc-card--small .w-svc-more { display: none; }
.w-steps-wrap > .eyebrow { margin-bottom: .2rem; }
@media (min-width: 760px) { .w-svc-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 959px) {
  .w-svc-visual { width: min(78%, 320px); }
  .w-svc-badge { width: 76px; height: 76px; left: -8%; }
  .w-svc-badge svg { width: 50px; height: 50px; }
}
/* Links on cream cards inside the night chapters keep the card's ink. */
.w-night a.w-svc-card:not(.btn):not(.text-link), .w-night a.w-svc-card:not(.btn):not(.text-link):hover { color: var(--navy); }
.w-night .picker-panel a:not(.btn):not(.text-link) { color: var(--navy); text-decoration: underline; text-underline-offset: 3px; }
.w-night .picker-panel a:not(.btn):not(.text-link):hover { color: #9a5f10; }
/* Phones: the "how it helps" lanterns lie on their side so four stay short. */
@media (max-width: 599px) {
  .w-ways .w-lantern { display: flex; align-items: center; gap: 1rem; padding: 1rem 1.2rem; border-radius: var(--radius-card); text-align: left; }
  .w-ways .w-lantern-glow { flex: none; width: 34px; height: 34px; margin: 0; }
}

/* ==========================================================================
   Start here and Contact
   ========================================================================== */
.w-meaning { max-width: 760px; margin: clamp(2rem, 5vw, 3rem) auto 0; padding: 1.4rem 1.6rem; border-radius: var(--radius-card); background: hsla(215, 45%, 14%, .55); border: 1px solid hsla(45, 80%, 85%, .18); text-align: center; }
@media (max-width: 699px) { .w-meaning { text-align: left; } }
.w-meaning h3 { margin-bottom: .4rem; }
.w-meaning p { margin: 0; font-size: 1.08rem; }
.w-familiar .picker-tab { font-size: 1.02rem; }
.w-familiar-more { margin: 1.75rem 0 0; text-align: center; }
.w-steps--detail li { align-items: start; }
.w-steps--detail li > span:last-child { display: grid; gap: .3rem; }
.w-steps--detail strong { font-weight: 600; }
.w-steps--detail li > span:last-child > span { font: 400 1rem/1.5 var(--font-body); }
.w-disclaimer { max-width: 760px; margin: 1.5rem auto 0; font-size: .9rem; line-height: 1.55; color: var(--navy); text-align: center; }

/* Contact: the quickest ways to reach Dr. Taylor, on a pinned card. */
.w-reach {
  position: relative; padding: clamp(1.6rem, 3.5vw, 2.1rem) clamp(1.2rem, 3vw, 1.7rem) 1.2rem; border-radius: var(--radius-card); background: var(--card); color: var(--navy); transform: rotate(-1deg);
  box-shadow: 0 0 0 8px hsla(45, 100%, 70%, .14), 0 0 80px hsla(45, 100%, 60%, .2), 0 28px 60px hsla(230, 50%, 8%, .45);
}
.w-reach::before { content: ""; position: absolute; top: -12px; right: 16%; width: 84px; height: 24px; border-radius: 2px; background: hsla(45, 95%, 65%, .8); transform: rotate(4deg); }
.w-reach-title { margin: 0 0 .7rem; font-size: 2rem; line-height: 1; color: var(--gold-ink); }
.w-reach-list { list-style: none; margin: 0; padding: 0; display: grid; gap: .6rem; }
.w-reach-list li { margin: 0; }
.w-reach-list a { display: flex; align-items: center; gap: .9rem; min-height: 64px; padding: .55rem .8rem; border-radius: 20px; background: color-mix(in srgb, var(--tone) 22%, var(--card)); color: var(--navy); text-decoration: none; transition: transform .3s cubic-bezier(.34, 1.56, .64, 1), box-shadow .25s; }
@media (hover: hover) { .w-reach-list a:hover { transform: translateY(-2px); box-shadow: 0 0 0 3px var(--tone); } }
.w-reach-list a:focus-visible { outline: 3px solid var(--gold); outline-offset: 3px; }
.w-reach-icon { flex: none; display: grid; place-items: center; width: 48px; height: 48px; border-radius: 16px; background: var(--card); }
.w-reach-icon svg { width: 36px; height: 36px; }
.w-reach-list a > span:last-child { display: grid; min-width: 0; }
.w-reach-list strong { font: 600 1.15rem/1.2 var(--font-display); }
.w-reach-list a > span:last-child > span { font-size: .98rem; overflow-wrap: anywhere; }
.w-reach-note { margin: .9rem 0 0; font-size: .98rem; line-height: 1.5; }
.w-reach-fax { margin: .4rem 0 0; font-size: .88rem; opacity: .75; }

.w-form-card { max-width: 760px; margin: 0 auto; }
.w-form-card .form { background: var(--card); color: var(--navy); border-radius: var(--radius-card); border-top: 8px solid var(--gold); box-shadow: 0 20px 60px hsla(220, 60%, 4%, .45); }
.w-night .w-form-card :is(p, label, legend, .hint, .note) { color: var(--navy); text-shadow: none; }
.w-night .w-form-card a:not(.btn):not(.text-link) { color: var(--navy); text-decoration: underline; text-underline-offset: 3px; }
.w-night .w-form-card .form-field-error, .w-night .w-form-card .form-status.err { color: #8c2929; }
.w-night .w-form-card .form-status.ok { color: #24503a; }

.w-visit-map iframe { display: block; width: 100%; height: 320px; border: 0; border-radius: var(--radius-inner); box-shadow: 0 12px 30px hsla(25, 50%, 40%, .18); }
@media (min-width: 960px) { .w-visit--map { grid-template-columns: auto 1fr minmax(300px, 44%); } }
@media (max-width: 959px) { .w-visit-map iframe { height: 260px; } }
@media (max-width: 959px) {
  .w-hero-visual:has(> .w-reach), .w-hero-visual:has(> .w-glance) { width: min(100%, 440px); }
}

/* ==========================================================================
   What we help with: a parent's words in the hero, lanterns for what you
   may be noticing, three steps that flip, and the long read behind a tap.
   ========================================================================== */
.w-concern-hero .w-hero-title { font-size: clamp(2.1rem, 1.4rem + 2.6vw, 3.5rem); line-height: 1.08; }
.w-flip-num { font: 700 2.4rem/1 var(--font-display); color: var(--navy); }
@media (min-width: 960px) {
  .w-flips--steps { grid-template-columns: repeat(3, minmax(0, 1fr)); max-width: 1040px; margin-inline: auto; }
  .w-flips--steps.is-live .w-flip-inner { min-height: 260px; }
}
.w-longer { max-width: 860px; margin: clamp(1.75rem, 4vw, 2.5rem) auto 0; border-radius: var(--radius-card); background: hsla(45, 100%, 98%, .92); box-shadow: 0 14px 40px hsla(25, 50%, 40%, .12); }
.w-longer summary { display: flex; flex-wrap: wrap; align-items: center; gap: .2rem 1rem; min-height: 64px; padding: 1.1rem calc(min(1.2rem, 20px) + 48px) 1.1rem min(1.5rem, 24px); overflow-wrap: anywhere; position: relative; cursor: pointer; list-style: none; }
.w-longer summary::-webkit-details-marker { display: none; }
.w-longer summary::after { content: "+"; position: absolute; right: min(1.2rem, 20px); top: 50%; margin-top: -18px; display: grid; place-items: center; width: 36px; height: 36px; border-radius: 50%; background: hsla(45, 100%, 65%, .45); font: 700 1.4rem/1 var(--font-body); transition: transform .25s var(--ease); }
.w-longer[open] summary::after { transform: rotate(45deg); }
.w-longer summary:focus-visible { outline: 3px solid var(--navy); outline-offset: 3px; border-radius: var(--radius-card); }
.w-longer-kicker { font-size: 1.4rem; }
.w-longer-title { font: 600 1.2rem/1.3 var(--font-display); }
.w-longer-body { padding: 0 min(1.5rem, 24px) 1.5rem; }
.w-longer-body h3 { font-size: 1.25rem; margin-top: 1.4rem; }
.w-concern-grid { gap: .9rem; }
@media (min-width: 760px) { .w-concern-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.w-concern-card .w-svc-card-body { gap: .15rem; }
.w-concern-topic { font: 600 1.15rem/1.1 var(--font-hand); color: var(--gold-ink); }
.w-concern-card .w-svc-card-title { font-size: 1.12rem; }
.w-unsure { text-align: center; }
.w-unsure .actions { justify-content: center; }

/* Cultivate Play's therapists, beside the neighbor notes on Home and About.
   Initials hold the spot until their photos arrive. */
.w-cp-people { list-style: none; margin: 0 0 1.1rem; padding: 0; display: grid; gap: .75rem; }
.w-cp-people li { display: flex; align-items: center; gap: .85rem; margin: 0; }
.w-cp-photo {
  flex: none; display: grid; place-items: center; width: 64px; height: 64px; border-radius: 50%; overflow: hidden;
  font: 700 1.6rem/1 var(--font-display); color: var(--navy); background: radial-gradient(circle at 35% 30%, #fff6d6, hsl(170, 50%, 72%));
  box-shadow: 0 0 0 4px hsla(45, 100%, 70%, .45), 0 0 22px hsla(45, 100%, 60%, .35);
}
.w-cp-photo--b { background: radial-gradient(circle at 35% 30%, #fff6d6, hsl(265, 55%, 84%)); }
.w-cp-photo img { width: 100%; height: 100%; object-fit: cover; }
.w-cp-who { display: grid; gap: .1rem; line-height: 1.3; }
.w-cp-who strong { font: 600 1.15rem/1.2 var(--font-display); }
.w-cp-who span { font-size: .98rem; }
.w-neighbor-note .w-cp-who strong { color: #fff6dc; }
@media (min-width: 700px) { .w-neighbor-note .w-cp-people { grid-template-columns: 1fr 1fr; } }

/* Testimonials: the rating on a pinned card, the featured review as a letter,
   and the rest as notes that flip over to show the whole review. */
.w-rating { max-width: 360px; margin-inline: auto; text-align: center; transform: rotate(-1.4deg); }
.w-rating-num { margin: 0; font: 700 clamp(4rem, 3rem + 4vw, 5.6rem)/1 var(--font-display); color: var(--navy); }
.w-rating .w-letter-stars { margin: .3rem 0 .4rem; font-size: 1.9rem; }
.w-rating-count { margin: 0; font: 600 1.2rem/1.3 var(--font-display); }
.w-rating .w-glance-note { margin-top: .2rem; }
.w-notes-head { margin-top: clamp(3rem, 7vw, 5rem); }
.w-flips--notes { max-width: 1100px; margin-inline: auto; }
.w-flips--notes .w-flip-front { display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; }
.w-note-stars { margin: 0 0 .5rem; font-size: 1.15rem; letter-spacing: .12em; color: var(--gold); }
.w-note-quote { margin: 0; font: 500 1.3rem/1.35 var(--font-display); color: #fff6dc; }
.w-flips--notes .w-flip-front { background: hsla(215, 45%, 14%, .94); border-color: color-mix(in srgb, var(--tone) 55%, transparent); box-shadow: 0 18px 44px hsla(225, 50%, 6%, .35); }
.w-flips--notes .w-flip-back { align-content: center; gap: .6rem; }
.w-flips--notes .w-flip-back blockquote { margin: 0; }
.w-flips--notes .w-flip-back p { font-size: 1rem; line-height: 1.45; }
.w-note-source { font-size: .92rem !important; font-weight: 600; }
.w-note-source span { color: #9a5f10; letter-spacing: .1em; margin-right: .3rem; }
.w-flips--notes.is-live .w-flip-inner { min-height: 290px; }
@media (min-width: 700px) {
  .w-flips--notes { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 1100px) {
  .w-flips--notes { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .w-flips--notes.is-live .w-flip-inner { min-height: 330px; }
}
@media (max-width: 699px) {
  .w-flips--notes .w-flip-front { display: flex; text-align: center; }
  .w-flips--notes .w-flip-hint { align-self: center; }
  .w-flips--notes.is-live .w-flip-inner { min-height: 270px; }
}

/* Support groups: the Thursday group as a pinned invitation, and a pin for groups nearby. */
.w-invite { max-width: 400px; margin-inline: auto; text-align: center; }
.w-invite-name { margin: 0 0 .2rem; font: 600 1.05rem/1.3 var(--font-display); color: var(--navy); }
.w-invite-day { margin: .2rem 0 0; font-size: 2.4rem; line-height: 1; color: var(--gold-ink); }
.w-invite-time { margin: .2rem 0 0; font: 700 clamp(1.8rem, 1.4rem + 1.4vw, 2.3rem)/1.1 var(--font-display); color: var(--navy); }
.w-invite-time abbr { text-decoration: none; }
.w-invite-start { margin: .35rem 0 .6rem; font-weight: 600; }
.w-invite-list { text-align: left; max-width: 300px; margin-inline: auto; }
.w-invite-list span { min-height: 40px; font-size: 1.05rem; }
.w-invite-cta { margin: .9rem 0 .2rem; }
.w-center-cta { margin: clamp(1.75rem, 4vw, 2.5rem) 0 0; text-align: center; }
@media (min-width: 900px) { .w-lanterns.w-ways--three { grid-template-columns: repeat(3, minmax(0, 1fr)); max-width: 1000px; margin-inline: auto; } }
.w-nearby { position: relative; padding-top: 2.6rem; }
.w-nearby-pin { position: absolute; top: -34px; left: 50%; width: 64px; height: 64px; margin-left: -32px; filter: drop-shadow(0 8px 14px hsla(40, 70%, 40%, .3)); }
.w-nearby-pin svg { width: 100%; height: 100%; }
.w-nearby-note { margin: 1rem 0 0; font-size: .98rem; color: hsl(200, 30%, 32%); }

/* Careers: the team with an empty arch for the next clinician, the role as two
   flip cards, what we look for as short cards, and the application at dawn. */
.w-hiring { display: inline-block; padding: .45rem .9rem; border-radius: var(--radius-pill); font-weight: 800; font-size: .92rem; color: var(--gold); background: hsla(45, 100%, 70%, .14); border: 1.5px solid hsla(45, 100%, 70%, .45); }
.w-trio-you { display: grid; place-items: center; background: hsla(45, 100%, 90%, .08); border-style: dashed; container-type: inline-size; }
.w-trio-you .hand { font-size: min(clamp(1.6rem, 1.2rem + 1.2vw, 2.2rem), 34cqi); color: var(--gold); transform: rotate(-6deg); text-shadow: 0 0 18px hsla(45, 100%, 60%, .55); }
.w-flips--two { max-width: 760px; margin-inline: auto; }
@media (min-width: 700px) { .w-flips--two { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 960px) { .w-flips--two.is-live .w-flip-inner { min-height: 250px; } }
.w-more-pair { max-width: 860px; margin: clamp(1.75rem, 4vw, 2.5rem) auto 0; display: grid; gap: .9rem; }
.w-more-pair .w-longer { margin: 0; }
.w-night .w-longer { background: hsla(215, 45%, 14%, .9); border: 1.5px solid hsla(45, 80%, 85%, .2); box-shadow: 0 14px 40px hsla(225, 50%, 6%, .3); }
.w-night .w-longer-kicker { color: var(--gold); }
.w-night .w-longer summary::after { color: var(--midnight); background: var(--gold); }
.w-longer-body ul { margin: 0; padding-left: 1.2rem; }
.w-longer-body li + li { margin-top: .5rem; }
.w-needs { list-style: none; margin: 0 auto; padding: 0; max-width: 1100px; display: flex; flex-wrap: wrap; justify-content: center; gap: .8rem; }
.w-needs li { position: relative; margin: 0; padding: 1rem 1.1rem 1rem 3.3rem; border-radius: var(--radius-inner); background: hsla(215, 45%, 14%, .6); border: 1px solid hsla(45, 80%, 85%, .16); display: flex; flex-direction: column; gap: .2rem; flex: 1 1 100%; }
.w-needs li::before { content: "\2713"; position: absolute; left: 1rem; top: 1rem; width: 1.6rem; height: 1.6rem; border-radius: 50%; display: grid; place-items: center; font: 800 .9rem/1 var(--font-body); color: var(--midnight); background: var(--gold); box-shadow: 0 0 14px 3px hsla(45, 100%, 55%, .45); }
.w-needs strong { font: 600 1.12rem/1.3 var(--font-display); color: var(--on-dark); }
.w-needs span { font-size: .98rem; line-height: 1.45; color: hsl(45, 40%, 84%); }
@media (min-width: 700px) { .w-needs li { flex-basis: calc(50% - .4rem); flex-grow: 0; } }
@media (min-width: 1100px) { .w-needs li { flex-basis: calc(33.333% - .54rem); } }
.w-offer-head { margin-top: clamp(3rem, 7vw, 5rem); }
.w-day .w-form-card .form { background: var(--card); }
.w-meet { font-size: 1.8rem; color: var(--gold-ink); }

/* Parent Resources: questions glow on the night sky; the chosen answer lights up at dawn. */
.pr-page .pr-group-title { color: var(--gold); text-align: center; }
.w-night .pr-link:not(.btn):not(.text-link) { color: var(--on-dark); background: hsla(215, 45%, 14%, .92); border-color: hsla(45, 80%, 85%, .16); box-shadow: none; -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
.w-night .pr-link:not(.btn):not(.text-link):hover { color: #fff6dc; border-color: var(--tone); box-shadow: 0 0 30px color-mix(in srgb, var(--tone) 28%, transparent); }
.w-night .pr-link:focus-visible { outline: 3px solid var(--gold); outline-offset: 3px; }
.pr-page .pr-answers { padding-top: clamp(2.5rem, 6vw, 4rem); }
.pr-answers.is-live .pr-answer.is-found { animation: pr-found 1.4s var(--ease) 1; }
.pr-empty { margin-top: 0; }
.pr-page .pr-more { padding-top: clamp(2rem, 5vw, 3.5rem); }
.w-day .pr-more-grid li { background: hsla(45, 100%, 98%, .9); border: 0; color: var(--navy); box-shadow: 0 14px 40px hsla(25, 50%, 40%, .12); }
.w-day .pr-more-grid h3 { color: var(--navy); }
@media (prefers-reduced-motion: reduce) { .pr-answers.is-live .pr-answer.is-found { animation: none; } }

/* Privacy and accessibility: a calm dawn sky with the full text on a paper card. 404: a lost firefly at dusk. */
.w-legal-head { padding-block: clamp(2.5rem, 6vw, 4.5rem) 0; }
.w-legal-head h1 { font-size: clamp(2.3rem, 1.6rem + 2.6vw, 3.6rem); margin-bottom: .3rem; }
.w-legal-head .lead { margin: 0; }
.w-paper-wrap { padding-top: clamp(2.5rem, 5vw, 3.5rem); padding-bottom: clamp(3rem, 7vw, 5rem); }
.w-paper { position: relative; padding: clamp(1.6rem, 4vw, 2.8rem); border-radius: var(--radius-card); background: var(--card); color: var(--navy); box-shadow: 0 0 0 8px hsla(45, 100%, 70%, .14), 0 24px 60px hsla(25, 50%, 40%, .16); }
.w-paper::before { content: ""; position: absolute; top: -12px; left: 12%; width: 84px; height: 24px; border-radius: 2px; background: hsla(170, 45%, 60%, .75); transform: rotate(-4deg); }
.w-paper .article h2 { margin-top: 2rem; }
.w-lost { display: grid; place-items: center; min-height: 260px; }
.w-lost-bug { width: 26px; height: 26px; border-radius: 50%; background: radial-gradient(circle, #fff4c4, var(--gold) 60%); box-shadow: 0 0 30px 12px hsla(45, 100%, 60%, .55); }
.w-lost-trail { position: absolute; width: 70%; height: 50%; border: 2px dashed hsla(45, 100%, 75%, .45); border-color: hsla(45, 100%, 75%, .45) transparent transparent transparent; border-radius: 50%; transform: rotate(-12deg); }
@media (prefers-reduced-motion: no-preference) { .w-lost-bug { animation: w-bob 3s ease-in-out infinite; } }
body.world-page .crumbs:has(+ main .w-legal-head) { color: var(--navy); }
body.world-page .crumbs:has(+ main .w-legal-head) a:hover { color: #9a5f10; }
body.world-page .crumbs:has(+ main .w-legal-head) :focus-visible { outline-color: var(--navy); }

/* ---------- Large text: nothing spills off a phone ----------
   A parent who turns on large text should never have to scroll sideways.
   1. Single-column grids get a track that can shrink (an implicit "auto"
      track grows to its longest word and pushed cards off screen). Zero
      specificity, so each breakpoint's own columns still win.
   2. The tab pickers and the About circle measure their own width in
      letters: when only a few words fit per line, the tabs stack into one
      column and the circle straightens into a list of the same tabs. */
:where(.w-team-grid, .w-person, .w-visit, .w-glp-use, .w-aac-intro, .w-more-pair, .picker, .picker-panels, .w-svc-approach, .w-svc-grid, .w-orbit, .w-orbit-panels) { grid-template-columns: minmax(0, 1fr); }
@media (max-width: 479px) {
  .w-reviews-arrow { width: 48px; height: 48px; }
  .w-reviews-dot { width: 24px; }
}
.picker { container: picker / inline-size; }
.w-orbit { container: orbit / inline-size; }
@container picker (max-width: 15em) {
  .picker-tabs { grid-template-columns: minmax(0, 1fr); }
  .picker-tab { flex-direction: row; justify-content: flex-start; text-align: left; min-height: 0; padding: .7rem 1rem .7rem .7rem; }
  .picker-label { min-width: 0; overflow-wrap: anywhere; }
}
@container orbit (max-width: 15em) {
  .w-orbit-stage { width: 100%; aspect-ratio: auto; }
  .w-orbit-stage::before, .w-orbit-center { display: none; }
  .w-orbit-ring { display: grid; gap: .6rem; }
  .w-orbit-tab { position: static; width: 100%; transform: none; flex-direction: row; gap: .8rem; text-align: left; }
  .w-orbit-icon { width: 52px; flex-shrink: 0; }
  .w-orbit-label { min-width: 0; overflow-wrap: anywhere; }
}
/* Outline buttons inside the night chapters sit where the sky can turn to
   sunrise peach as you scroll, so they carry their own dark backing and stay
   readable on either sky. */
.w-chapter .btn-ghost { background: hsla(215, 45%, 14%, .82); color: var(--on-dark); border-color: hsla(45, 90%, 80%, .85); }
.w-chapter .btn-ghost:hover { background: var(--on-dark); color: var(--navy); border-color: var(--on-dark); }

/* Pressed feedback: every tappable card, tab and arrow gives a little squeeze
   when pressed (hover looks only run where there is a mouse, so they can't
   stick on after a tap). */
.picker-tab, .w-svc-card, .w-reach-list a, .w-reviews-arrow, .w-flip { -webkit-tap-highlight-color: transparent; }
.picker-tab:active, .w-svc-card:active, .w-reach-list a:active, .w-glance-list a:active { transform: scale(.97); transition-duration: .08s; }
.w-reviews-arrow:active { transform: scale(.92); }
.w-reviews-dot:active::before { transform: scale(.8); }
.w-orbit-tab:active .w-orbit-icon { transform: scale(.94); }
.w-flip { transition: transform .12s ease; }
.w-flip:has(.w-flip-btn:active) { transform: scale(.97); }
.w-night :is(.w-form-card, .picker-panel, .w-orbit-panel, .w-letter) :focus-visible { outline-color: var(--navy); }
