/* ─────────────────────────────────────────────────────────────────
   React variant A — full design system port (v2)
   ─────────────────────────────────────────────────────────────────
   Direct port of:
     src/components/VariationLayout.tsx  (nav + footer chrome)
     src/pages/VariationPage.tsx         (Hero, Stats, Sec, Programs, CTA)
     src/index.css                       (.var-a tokens + font-brand)

   Strategy: namespaced .ra-* classes so this coexists with the
   existing site CSS. Pages that adopt this design use class="ra-page"
   on <body>, and use .ra-* class names instead of the site's own.
   ───────────────────────────────────────────────────────────── */

/* ─── Brand font: RR Beaver (used by VariationLayout's logo wordmark) ─── */
@font-face {
    font-family: 'RR Beaver';
    src: url('../fonts/RRBeaver.woff2') format('woff2');
    font-weight: 400;
    font-style: normal;
    font-display: swap;
}

/* ─── Google Fonts: DM Sans + Inter + Quicksand (variation A's stack) ─── */
@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@500;600;700&family=Inter:wght@400;500;600&family=Quicksand:wght@500;600;700&display=swap');

/* ─── Design tokens
   ─────────────────────────────────────────────────────────────────
   In Space Universe — Final Brand Palette (2026):
     - In Space Blue       #42A5F5   (primary, used site-wide)
     - Orbit White         #FFFFFF
     - Cosmic Black        #000000   (footer background, dark text)
     - Academy Blue        #1565C0   (RESERVED — academy page only)
     - Institutional Blue  #2B5073   (RESERVED — academy page only)

   Brand colors are exposed as --ra-color-* tokens (do not redefine
   on a per-page basis). The semantic React-A tokens below map onto
   those brand colors. Academy overrides only the semantic tokens
   it's allowed to use (the two academy-only blues + neutral ash).
   ───────────────────────────────────────────────────────────── */
.ra-page {
    /* ── Brand palette (canonical, do not override per page) ── */
    --ra-color-blue:       #42A5F5;   /* In Space Blue */
    --ra-color-orbit:      #FFFFFF;   /* Orbit White */
    --ra-color-black:      #000000;   /* Cosmic Black */
    --ra-color-academy:    #1565C0;   /* Academy Blue (academy page only) */
    --ra-color-institute:  #2B5073;   /* Institutional Blue (academy page only) */

    /* ── Semantic tokens (mapped from brand) ── */
    --ra-bg:           #FFFFFF;       /* page background — pure white so the
                                         marquee's transparent edge-zones and
                                         plain sections match the React build
                                         (was #FAFAFA, which left a slight
                                         gray cast around the marquee) */
    --ra-surface:      #FFFFFF;
    --ra-surface-alt:  #F0F4F8;       /* pale band — used above the footer
                                         on the home page and now for every
                                         'Ready to Launch'-style strip too */
    --ra-text:         #1A1A1A;
    --ra-text-sec:     #5A6A7A;
    --ra-text-muted:   #8899AA;
    --ra-accent:       var(--ra-color-blue);
    --ra-accent-light: #90CAF9;
    --ra-accent-dark:  #1976D2;       /* slightly darker In Space Blue for hover —
                                         NOT Academy Blue, which is reserved */
    --ra-accent-warm:  #BBDEFB;
    --ra-border:       #E0E8F0;
    --ra-border-dark:  #C0D0E0;
    --ra-hero-bg:      #E8F0F8;
    --ra-dark-bg:      #000000;       /* Footer + dark strips now Cosmic Black
                                         (was navy #0A1628 in earlier versions) */

    background: var(--ra-bg);
    color: var(--ra-text);
    font-family: 'Inter', system-ui, -apple-system, sans-serif;
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
    margin: 0;
}

/* Reset any padding the site-overrides.css might force on body */
body.ra-page { padding: 0; }

/* ─── Prevent horizontal page-scrollbar from the marquee 100vw trick ───
   The marquee uses width:100vw + margin-left:calc(50% - 50vw) to break
   out of any container. When a vertical scrollbar is present, 100vw
   includes the scrollbar width while the body doesn't, causing a few
   pixels of horizontal overflow. Hiding overflow-x at the html level
   eliminates the spurious horizontal scrollbar without breaking the
   full-bleed layout. */
html:has(body.ra-page) {
    overflow-x: hidden;
}
/* Fallback for browsers without :has() (a tiny fraction in 2026, but) */
body.ra-page { overflow-x: hidden; }

/* ─── Minimal scrollbar styling ─── */
/* Firefox + modern browsers — thin scrollbar with custom colors */
body.ra-page,
body.ra-page * {
    scrollbar-width: thin;
    scrollbar-color: rgba(66, 165, 245, 0.4) transparent;
}
/* WebKit browsers (Chrome, Safari, Edge) — explicit minimal styling */
body.ra-page::-webkit-scrollbar,
body.ra-page *::-webkit-scrollbar {
    width: 8px;
    height: 8px;
}
body.ra-page::-webkit-scrollbar-track,
body.ra-page *::-webkit-scrollbar-track {
    background: transparent;
}
body.ra-page::-webkit-scrollbar-thumb,
body.ra-page *::-webkit-scrollbar-thumb {
    background: rgba(66, 165, 245, 0.4);   /* In Space Blue at 40% */
    border-radius: 100px;
    transition: background 0.2s;
}
body.ra-page::-webkit-scrollbar-thumb:hover,
body.ra-page *::-webkit-scrollbar-thumb:hover {
    background: rgba(66, 165, 245, 0.7);
}
body.ra-page::-webkit-scrollbar-corner,
body.ra-page *::-webkit-scrollbar-corner {
    background: transparent;
}

/* ─── Type utility classes ─── */
.ra-font-headline { font-family: 'DM Sans', system-ui, sans-serif; }
.ra-font-body     { font-family: 'Inter', system-ui, sans-serif; }
.ra-font-ui       { font-family: 'Quicksand', system-ui, sans-serif; }
.ra-font-brand    { font-family: 'RR Beaver', system-ui, sans-serif; }
.ra-font-mono-label {
    font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    font-size: 11px;
}

/* ═════════════════════════════════════════════════════════════
   NAV — port of VariationLayout's <nav> (sticky 60px white bar)
   ═════════════════════════════════════════════════════════════ */

.ra-nav {
    position: sticky;
    top: 0;
    z-index: 50;
    background: var(--ra-surface);
    border-bottom: 1px solid var(--ra-border);
}

.ra-nav-inner {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 1rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    height: 72px;          /* up from 60 so the 56px logo has breathing room */
}
@media (min-width: 1024px) {
    .ra-nav-inner { padding: 0 2rem; }
}

/* NAV LOGO — single all-in-one PNG (v29)
   Replaces the previous setup of a round wings-mark + SVG-masked
   wordmark spans. The new artwork bakes the wings, circle, and
   "IN SPACE UNIVERSE / RISING STARS" wordmark into one transparent
   PNG. We render it as a background image on the .ra-nav-logo link
   itself, and visually hide the legacy mark/text children (they
   stay in the DOM for accessibility and SEO).

   The source PNG is 2448x367 (aspect ratio ~6.67:1). We display it
   at 48px tall in the nav, which scales it down to ~320px wide —
   the original artwork has a lot of horizontal headroom, so the
   downscale looks crisp on retina.

   Academy pages (body.program-academy) override the background to
   the academy-branded logo further down. */
.ra-nav-logo {
    display: block;
    width: 273px;          /* 40px tall × 6.82 aspect ratio */
    height: 40px;
    text-decoration: none;
    color: inherit;
    background-image: url("logo-universe-nav.png");
    background-repeat: no-repeat;
    background-position: left center;
    background-size: contain;
    flex-shrink: 0;
}
/* Visually hide the legacy children — DOM stays intact for
   screen readers, search engines, and any JS that still queries
   them. */
.ra-nav-logo-mark,
.ra-nav-logo-text,
.ra-nav-logo-title,
.ra-nav-logo-sub {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}
/* Academy pages get the academy-branded variant. */
body.ra-page.program-academy .ra-nav-logo {
    background-image: url("logo-academy-nav.png");
    width: 262px;          /* 40px tall × 6.56 aspect ratio (academy logo is slightly narrower) */
}
/* Childcare pages — black-text banner for the light nav.
   Source webp is 2598×371 (~7:1), shown 40px tall → ~280px wide. */
body.ra-page.program-childcare .ra-nav-logo {
    background-image: url("headerversionchildcare.webp");
    width: 280px;
}
/* Aquatics pages — black-text banner for the light nav.
   Source webp is 2461×371 (~6.63:1), shown 40px tall → ~265px wide. */
body.ra-page.program-aquatics .ra-nav-logo {
    background-image: url("headerversionaquatics.webp");
    width: 265px;
}
/* The footer-brand-title/sub mask styles are kept below in the
   footer block. The nav versions are replaced by the visually-
   hidden treatment above. */
.ra-footer-brand-title,
.ra-footer-brand-sub {
    display: block;
    color: transparent;
    font-size: 0;
    line-height: 0;
    user-select: none;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: left center;
    mask-position: left center;
    -webkit-mask-size: contain;
    mask-size: contain;
}

.ra-nav-links {
    display: none;
    align-items: center;
}
@media (min-width: 1024px) {
    .ra-nav-links { display: flex; }
}
.ra-nav-link {
    padding: 0.375rem 0.625rem;
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 14px;          /* up from 12px */
    font-weight: 500;
    color: var(--ra-text-sec);
    text-decoration: none;
    white-space: nowrap;
    /* Reserve space for the underline so the link doesn't jump on hover */
    border-bottom: 2px solid transparent;
    transition: color 0.18s, border-color 0.18s;
}
.ra-nav-link:hover,
.ra-nav-link[aria-current="page"] {
    color: var(--ra-accent);
    border-bottom-color: var(--ra-accent);    /* blue underline */
}

.ra-nav-toggle {
    display: inline-flex;
    background: transparent;
    border: 0;
    padding: 0.5rem;
    color: var(--ra-text);
    cursor: pointer;
}
@media (min-width: 1024px) {
    .ra-nav-toggle { display: none; }
}

/* Mobile menu panel (rendered below the nav bar, shown when .is-open) */
.ra-nav-mobile {
    display: none;
    background: var(--ra-surface);
    padding: 0 1rem 1rem;
}
.ra-nav-mobile.is-open { display: block; }
.ra-nav-mobile a {
    display: block;
    padding: 0.5rem 0;
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--ra-text-sec);
    text-decoration: none;
}
.ra-nav-mobile a[aria-current="page"] {
    color: var(--ra-accent);
}

/* ═════════════════════════════════════════════════════════════
   HERO — Hero component with optional background image
   ═════════════════════════════════════════════════════════════ */

.ra-hero {
    position: relative;
    /* Padding matches .ra-info-hero so the home hero sits at the
       same vertical height as the founder/locations/contact heroes.
       Was 4rem 0 5rem / 6rem 0 7rem (much taller); reduced to align. */
    padding: 4rem 0 3rem;
    overflow: hidden;
    background: var(--ra-hero-bg);
}
@media (min-width: 768px) {
    .ra-hero { padding: 5rem 0 4rem; }
}

/* Hero with background image — base (non-split program pages still
   use the full-bleed treatment below via .ra-hero-bg). */
.ra-hero--with-image {
    background: transparent;
}
.ra-hero-bg {
    position: absolute;
    inset: 0;
    z-index: 0;
}
.ra-hero-bg img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    filter: brightness(1.0);
}
.ra-hero-bg-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(to right,
        rgba(255,255,255,0.30) 0%,
        rgba(255,255,255,0.15) 50%,
        rgba(255,255,255,0.05) 100%);
}
/* Paintbrush stroke — real photographic brush asset (white-on-
   transparent webp) layered behind the hero text to supply contrast.
   Used by the full-bleed hero variant (program pages). */
.ra-hero-bg-overlay::after {
    content: '';
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    background: url("brush-stroke.webp") no-repeat left center / 65% auto;
}
@media (max-width: 768px) {
    .ra-hero-bg-overlay::after {
        background: url("brush-stroke.webp") no-repeat center / 110% 100%;
    }
}

/* ═════════════════════════════════════════════════════════════
   SPLIT HERO (Goddard-style) — white text panel left, image
   masked into a large circle/arch on the right, with a subtle
   brush-textured stroke running along the circle's edge.
   ═════════════════════════════════════════════════════════════ */
.ra-hero--split {
    background: #fff;            /* white / light text panel */
    overflow: hidden;
    padding: 0;                 /* the inner grid controls spacing */
}
.ra-hero--split .ra-hero-inner {
    display: grid;
    grid-template-columns: 1fr;
    align-items: center;
    gap: 2rem;
    min-height: 460px;
    padding-top: 3rem;
    padding-bottom: 3rem;
}
@media (min-width: 900px) {
    .ra-hero--split .ra-hero-inner {
        grid-template-columns: 1.05fr 1fr;
        gap: 1rem;
        min-height: 560px;
        padding-top: 0;
        padding-bottom: 0;
    }
}
.ra-hero-text {
    position: relative;
    z-index: 2;
    padding: 1rem 0;
}

/* ── Image circle/arch (right) ──────────────────────────────────── */
.ra-hero-media {
    position: relative;
    z-index: 1;
    align-self: stretch;
    min-height: 320px;
}
@media (max-width: 899px) {
    /* Stacked on mobile: image sits below the text as a wide rounded
       panel rather than a giant off-screen circle. */
    .ra-hero-media { min-height: 300px; border-radius: 24px; overflow: hidden; }
    .ra-hero-circle { position: absolute; inset: 0; }
    .ra-hero-circle img,
    .ra-hero-circle video { width: 100%; height: 100%; object-fit: cover; display: block; }
    .ra-hero-arc { display: none; }
}
@media (min-width: 900px) {
    /* The circle is much larger than the hero and pushed right, so only
       its left arc sweeps across the hero — the Goddard "definement". */
    .ra-hero-media { overflow: visible; }
    /* Defined edge: a crisp white separation ring + soft shadow keeps
       the circle cleanly "defined" against the white panel. */
    .ra-hero-circle {
        position: absolute;
        top: 50%;
        left: 0;
        transform: translateY(-50%);
        width: 130%;
        aspect-ratio: 1 / 1;
        border-radius: 50%;
        overflow: hidden;
        box-shadow: 0 0 0 6px #fff, 0 20px 60px rgba(26, 60, 90, 0.18);
    }
    .ra-hero-circle img,
    .ra-hero-circle video {
        width: 100%; height: 100%;
        object-fit: cover;
        display: block;
    }
    /* Brush-stroke arc accent — overlays the upper-left curve of the
       circle (the portion that sweeps into the white text panel), so
       the hand-painted swoosh sits on the visible edge. Matched in
       size/position to the circle. */
    .ra-hero-arc {
        position: absolute;
        top: 50%;
        left: 0;
        transform: translateY(-50%);
        width: 130%;
        aspect-ratio: 1 / 1;
        pointer-events: none;
        z-index: 2;
        overflow: visible;
    }
}

/* "Tap for sound" overlay button — sits CENTERED over the visible
   portion of the hero circle, styled as a subtle circular speaker icon.
   Clicking unmutes the video AND restarts it from the beginning
   (handled by plugins/ra-hero-video.js).

   The label span inside the button is HIDDEN via CSS (we keep it in the
   DOM for accessibility — screen readers still announce "Tap for sound").

   Positioning: the overlay button is an absolute child of .ra-hero-media
   (the visible cell), NOT of .ra-hero-circle. On desktop the circle is
   width:130% and pinned at left:0 — its right 30% overflows past the
   media cell and is clipped. The user only ever sees what fits inside
   .ra-hero-media. So `left: 50%` of the cell == the horizontal middle
   of the visible video on every viewport. This scales naturally as the
   window resizes.

   On mobile .ra-hero-circle uses inset:0 inside .ra-hero-media so the
   visible video fills the container; centered at 50% still applies. */
.ra-hero-video-overlay {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: 3;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 72px;
    height: 72px;
    padding: 0;
    background: rgba(10, 22, 40, 0.45);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    color: #fff;
    border: 1px solid rgba(255, 255, 255, 0.45);
    border-radius: 50%;
    cursor: pointer;
    opacity: 0.85;           /* always visible enough to be obviously interactive */
    box-shadow: 0 6px 24px rgba(10, 22, 40, 0.35);
    transition: opacity 0.18s, background 0.18s, transform 0.18s, border-color 0.18s;
}
.ra-hero-video-overlay:hover,
.ra-hero-video-overlay:focus-visible {
    background: rgba(10, 22, 40, 0.65);
    border-color: rgba(255, 255, 255, 0.7);
    opacity: 1;
    transform: translate(-50%, -50%) scale(1.08);
    outline: none;
}
.ra-hero-video-overlay-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.ra-hero-video-overlay-icon svg { width: 30px; height: 30px; }

/* Subtle pulse ring — fades + scales outward so the button reads as
   "click me" without being noisy. Disabled in reduced-motion mode and
   removed once the overlay has been clicked. */
.ra-hero-video-overlay::after {
    content: "";
    position: absolute;
    inset: -6px;
    border-radius: 50%;
    border: 2px solid rgba(255, 255, 255, 0.55);
    pointer-events: none;
    animation: raHeroPulse 2.2s ease-out infinite;
}
@keyframes raHeroPulse {
    0%   { transform: scale(0.9);  opacity: 0.9; }
    70%  { transform: scale(1.25); opacity: 0;   }
    100% { transform: scale(1.25); opacity: 0;   }
}
@media (prefers-reduced-motion: reduce) {
    .ra-hero-video-overlay::after { animation: none; opacity: 0.4; }
}
.ra-hero-video-overlay.is-playing::after { display: none; }
/* Hide the text label visually but keep it for screen readers. */
.ra-hero-video-overlay-label {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}
/* Once the user clicks once (sound on), ra-hero-video.js adds an
   .is-active state — fade the overlay out so it doesn't block the
   video. */
.ra-hero-video-overlay.is-active,
.ra-hero-video-overlay.is-playing {
    opacity: 0;
    pointer-events: none;
}

.ra-hero-inner {
    position: relative;
    z-index: 1;
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 1rem;
}
@media (min-width: 1024px) {
    .ra-hero-inner { padding: 0 2rem; }
}

.ra-hero-eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    height: 32px;
    padding: 0 1rem;
    margin-bottom: 1.5rem;
    background: var(--ra-accent);
    color: #fff;
    border-radius: 100px;  /* variation A's br for eyebrow pill */
    font-family: 'Quicksand', system-ui, sans-serif;
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.08em;
}

.ra-hero-title {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: clamp(2.5rem, 5vw, 4rem);
    font-weight: 700;
    line-height: 1.05;
    letter-spacing: -0.02em;
    color: var(--ra-text);
    max-width: 800px;
    margin: 0;
}

.ra-hero-sub {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 1rem;
    line-height: 1.625;
    color: var(--ra-text-sec);
    max-width: 520px;
    margin: 1.25rem 0 0;
}
@media (min-width: 768px) {
    .ra-hero-sub { font-size: 1.125rem; }
}

.ra-hero-ctas {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-top: 2rem;
}

/* ═════════════════════════════════════════════════════════════
   BUTTONS — React's primary (filled) + secondary (outlined) shapes
   ═════════════════════════════════════════════════════════════ */

.ra-btn {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    height: 48px;
    padding: 0 1.75rem;
    border-radius: 100px;
    font-family: 'Quicksand', system-ui, sans-serif;
    font-size: 0.875rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    text-decoration: none;
    border: 0;
    cursor: pointer;
    transition: background 0.18s, transform 0.18s, border-color 0.18s;
}

.ra-btn--primary {
    background: var(--ra-accent);
    color: #fff;
}
.ra-btn--primary:hover {
    background: var(--ra-accent-dark);
    transform: translateY(-1px);
}

.ra-btn--secondary {
    background: transparent;
    color: var(--ra-text);
    border: 2px solid var(--ra-border-dark);
}
.ra-btn--secondary:hover {
    border-color: var(--ra-accent);
    color: var(--ra-accent);
}

.ra-btn-arrow {
    display: inline-flex;
    align-items: center;
    transition: transform 0.18s;
}
.ra-btn:hover .ra-btn-arrow { transform: translateX(2px); }

/* ═════════════════════════════════════════════════════════════
   STATS — 4-up grid
   ═════════════════════════════════════════════════════════════ */

.ra-stats {
    padding: 3rem 0;
    background: var(--ra-bg);
    border-bottom: 1px solid var(--ra-border);
}
@media (min-width: 768px) {
    .ra-stats { padding: 4rem 0; }
}
.ra-stats-inner {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 1rem;
}
@media (min-width: 1024px) {
    .ra-stats-inner { padding: 0 2rem; }
}

/* ─── By The Numbers heading (sits above .ra-stats) ─── */
.ra-stats-heading {
    padding: 3rem 0 0;        /* pt-12 + pb-0 in React */
    background: var(--ra-bg);
}
@media (min-width: 768px) {
    .ra-stats-heading { padding: 4rem 0 0; }     /* md:pt-16 */
}
.ra-stats-heading-inner {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 1rem;
}
@media (min-width: 1024px) {
    .ra-stats-heading-inner { padding: 0 2rem; }
}
.ra-stats-heading h2 {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 22px;          /* text-[22px] */
    font-weight: 700;
    text-align: center;
    color: var(--ra-text);
    margin: 0;
}
@media (min-width: 768px) {
    .ra-stats-heading h2 {
        font-size: 32px;       /* md:text-[32px] */
    }
}
.ra-stats-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 1.5rem;
}
@media (min-width: 768px) {
    .ra-stats-grid { grid-template-columns: repeat(4, 1fr); }
}
.ra-stat {
    text-align: center;
    margin: 0;
}
.ra-stat-num {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 2.25rem;
    font-weight: 700;
    line-height: 1;
    color: var(--ra-text);
    margin: 0;
}
@media (min-width: 768px) {
    .ra-stat-num { font-size: 2.75rem; }
}
.ra-stat-suffix {
    font-size: 1.5rem;
    color: var(--ra-accent);
}
.ra-stat-label {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 13px;
    color: var(--ra-text-sec);
    margin: 0.25rem 0 0;
}

/* ═════════════════════════════════════════════════════════════
   FEATURES — "Why Families Choose In Space"
   ═════════════════════════════════════════════════════════════ */

.ra-features {
    padding: 4rem 0;
    background: var(--ra-bg);
}
@media (min-width: 768px) {
    .ra-features { padding: 5rem 0; }
}
.ra-features-inner {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 1rem;
}
@media (min-width: 1024px) {
    .ra-features-inner { padding: 0 2rem; }
}
.ra-features-title {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: clamp(1.375rem, 2.8vw, 2rem);
    font-weight: 700;
    text-align: center;
    color: var(--ra-text);
    margin: 0 0 2.5rem;
}
.ra-features-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1rem;
}
@media (min-width: 640px) {
    .ra-features-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 1024px) {
    .ra-features-grid { grid-template-columns: repeat(3, 1fr); }
}
.ra-feature {
    /* Column layout — image on top, text below (matches React build) */
    display: flex;
    flex-direction: column;
    overflow: hidden;
    background: var(--ra-surface);
    border: 1px solid var(--ra-border);
    border-radius: 16px;
    transition: transform 0.18s;
}
.ra-feature:hover { transform: translateY(-2px); }

/* ─── Image wrap — 25:18 aspect via padding-bottom trick ─── */
.ra-feature-img-wrap {
    position: relative;
    width: 100%;
    padding-bottom: 72%;          /* React: paddingBottom:"72%" — 25:18 ish */
    overflow: hidden;
    background: var(--ra-bg);     /* fallback while img loads */
}
.ra-feature-img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

/* ─── Check-circle badge — floats over the image top-left ─── */
.ra-feature-check {
    position: absolute;
    top: 12px;
    left: 12px;
    width: 36px;                  /* React: w-9 h-9 = 36px */
    height: 36px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--ra-accent);
    color: #fff;
    border-radius: 50%;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.25);
    z-index: 2;
}

/* ─── Text body below image ─── */
.ra-feature-body {
    padding: 20px;                /* React: p-5 = 20px */
    flex: 1;
}
.ra-feature-body h3 {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.875rem;          /* text-sm */
    font-weight: 600;
    color: var(--ra-text);
    margin: 0;
    line-height: 1.4;
}
.ra-feature-body p {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 13px;              /* text-[13px] */
    line-height: 1.55;            /* leading-relaxed */
    color: var(--ra-text-sec);
    margin: 0.25rem 0 0;
}

/* ═════════════════════════════════════════════════════════════
   PROGRAMS — 3-up cards with photo top, brand-color treatment
   ═════════════════════════════════════════════════════════════ */

.ra-programs {
    padding: 4rem 0;
    background: var(--ra-bg);
}
@media (min-width: 768px) {
    .ra-programs { padding: 5rem 0; }
}
.ra-programs-inner {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 1rem;
}
@media (min-width: 1024px) {
    .ra-programs-inner { padding: 0 2rem; }
}
/* Narrow the grid itself so each of the 3 cards is slimmer than the
   max page width (programs section heading still spans full 1200px,
   only the cards row narrows). 960px / 3 cards ≈ 295px per card
   (minus the gap) — feels more like "feature tiles" than "wide
   billboards". */
@media (min-width: 768px) {
    .ra-programs-grid {
        max-width: 960px;
        margin-left: auto;
        margin-right: auto;
    }
}
.ra-programs-head {
    text-align: center;
    margin-bottom: 2.5rem;
}
.ra-programs-head h2 {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: clamp(1.75rem, 3.5vw, 2.25rem);
    font-weight: 700;
    color: var(--ra-text);
    margin: 0;
}
.ra-programs-legend {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
    margin-top: 0.75rem;
    flex-wrap: wrap;
}
.ra-programs-legend-item {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
}
.ra-programs-legend-dot {
    width: 10px;
    height: 10px;
    border-radius: 50%;
}
.ra-programs-legend-label {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--ra-text-sec);
}

.ra-programs-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.5rem;
}
@media (min-width: 768px) {
    .ra-programs-grid { grid-template-columns: repeat(3, 1fr); }
}

.ra-program-card {
    display: block;
    text-decoration: none;
    color: var(--ra-text);
    overflow: hidden;
    background: var(--ra-surface);
    border: 1px solid var(--ra-border);
    border-top: 4px solid #0A0A0A;
    border-radius: 16px;
    transition: transform 0.18s, box-shadow 0.18s;
}
.ra-program-card:hover {
    transform: translateY(-4px);
    box-shadow: 0 12px 32px rgba(0,0,0,0.08);
}

.ra-program-card--academy {
    background: #0A0A0A;
    color: #fff;
    border-top-color: #0A0A0A;
    border: 1px solid transparent;
    border-top: 4px solid #0A0A0A;
}
.ra-program-card--aquatics {
    background: #42A5F5;
    color: #fff;
    border-top-color: #42A5F5;
    border: 1px solid transparent;
    border-top: 4px solid #42A5F5;
}
.ra-program-card--childcare {
    border-top-color: #FFFFFF;
    border: 1px solid var(--ra-border);
    border-top: 4px solid #FFFFFF;
}

.ra-program-card-img-wrap {
    position: relative;
    height: 220px;          /* was 140px — taller image gives each card
                               more visual weight up top, balancing the
                               narrower card width */
    overflow: hidden;
}
.ra-program-card-img-wrap img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.5s;
}
.ra-program-card:hover .ra-program-card-img-wrap img { transform: scale(1.05); }
.ra-program-card-img-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(to bottom, rgba(0,0,0,0.1), rgba(255,255,255,0.8));
}
.ra-program-card--academy .ra-program-card-img-wrap img { filter: brightness(0.7); }
.ra-program-card--academy .ra-program-card-img-overlay {
    background: linear-gradient(to bottom, rgba(10,10,10,0.3), rgba(10,10,10,0.8));
}
.ra-program-card--aquatics .ra-program-card-img-wrap img { filter: brightness(0.7); }
.ra-program-card--aquatics .ra-program-card-img-overlay {
    background: linear-gradient(to bottom, rgba(66,165,245,0.3), rgba(66,165,245,0.8));
}

.ra-program-card-body { padding: 1.5rem; }
@media (min-width: 768px) {
    .ra-program-card-body { padding: 2rem; }
}

.ra-program-card-meta {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 0.75rem;
}
.ra-program-card-badge {
    display: inline-flex;
    align-items: center;
    height: 28px;
    padding: 0 1rem;
    border-radius: 100px;
    font-family: 'Quicksand', system-ui, sans-serif;
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    background: rgba(66,165,245,0.1);
    color: var(--ra-accent);
}
.ra-program-card--academy .ra-program-card-badge {
    background: rgba(255,255,255,0.15);
    color: #fff;
}
.ra-program-card--aquatics .ra-program-card-badge {
    background: rgba(255,255,255,0.2);
    color: #fff;
}

.ra-program-card-title {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 1.25rem;
    font-weight: 600;
    margin: 0;
}
.ra-program-card-desc {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.875rem;
    line-height: 1.625;
    margin: 0.5rem 0 0;
    color: var(--ra-text-sec);
}
.ra-program-card--academy .ra-program-card-desc { color: rgba(255,255,255,0.7); }
.ra-program-card--aquatics .ra-program-card-desc { color: rgba(255,255,255,0.85); }

.ra-program-card-link {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    margin-top: 1rem;
    font-family: 'Quicksand', system-ui, sans-serif;
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    opacity: 0.7;
    transition: opacity 0.18s;
}
.ra-program-card:hover .ra-program-card-link { opacity: 1; }

/* ═════════════════════════════════════════════════════════════
   FOUNDER SEC — Sec component invoked with {quote, attribution}
   ═════════════════════════════════════════════════════════════ */

.ra-founder-sec {
    padding: 4rem 0;
    background: var(--ra-surface-alt);
}
@media (min-width: 768px) {
    .ra-founder-sec { padding: 5rem 0; }
}
.ra-founder-sec-inner {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 1rem;
}
@media (min-width: 1024px) {
    .ra-founder-sec-inner { padding: 0 2rem; }
}
.ra-founder-block {
    max-width: 680px;
}
.ra-founder-quotemark {
    display: block;
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 3rem;
    line-height: 1;
    color: var(--ra-accent);
    margin: 0;
}
.ra-founder-quote {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 1.25rem;
    font-weight: 500;
    line-height: 1.4;
    color: var(--ra-text);
    margin: -0.25rem 0 0;  /* -mt-2 in React */
}
@media (min-width: 768px) {
    .ra-founder-quote { font-size: 1.5rem; }
}
.ra-founder-attribution {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--ra-accent);
    margin: 0.75rem 0 0;
}

/* ═════════════════════════════════════════════════════════════
   FOOTER — port of VariationLayout's <footer>
   ═════════════════════════════════════════════════════════════ */

.ra-footer {
    background: var(--ra-dark-bg);
    color: #fff;
}
.ra-footer-inner {
    max-width: 1200px;
    margin: 0 auto;
    padding: 3rem 1rem;
}
@media (min-width: 1024px) {
    .ra-footer-inner { padding: 3rem 2rem; }
}
.ra-footer-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 2rem;
}
@media (min-width: 768px) {
    .ra-footer-grid { grid-template-columns: repeat(5, 1fr); }
}
.ra-footer-brand {
    grid-column: span 2;
}
@media (min-width: 768px) {
    .ra-footer-brand { grid-column: span 1; }
}
.ra-footer-brand-row {
    /* Footer logo — single all-in-one PNG (v29). Same approach as
       the nav: the artwork bakes wings + wordmark + subtitle into
       one transparent PNG with white pixels (since the footer is
       Cosmic Black). We render it as a background image on the
       brand row and visually hide the legacy mark/text children
       (kept in DOM for accessibility). Footer uses 40px tall, so
       at the source aspect ratio of ~6.67:1 the image renders
       around 267px wide. */
    display: block;
    width: 260px;
    height: 40px;
    margin-bottom: 0.75rem;
    background-image: url("logo-universe-footer.png");
    background-repeat: no-repeat;
    background-position: left center;
    background-size: contain;
}
body.ra-page.program-academy .ra-footer-brand-row {
    background-image: url("logo-academy-footer.png");
}
/* Childcare/Aquatics footer — white-text banners for the dark footer. */
body.ra-page.program-childcare .ra-footer-brand-row {
    background-image: url("footerversionchildcare.webp");
    width: 280px;
}
body.ra-page.program-aquatics .ra-footer-brand-row {
    background-image: url("footerversionaquatics.webp");
    width: 265px;
}
.ra-footer-brand-mark,
.ra-footer-brand-text,
.ra-footer-brand-title,
.ra-footer-brand-sub {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}
.ra-footer-blurb {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.875rem;
    color: rgba(255,255,255,0.6);
    line-height: 1.625;
    margin: 0;
}
.ra-footer-blurb--tiny {
    font-size: 0.75rem;
    color: rgba(255,255,255,0.4);
    margin-top: 0.5rem;
}
.ra-footer-col h4 {
    font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: rgba(255,255,255,0.5);
    margin: 0 0 0.75rem;
}
.ra-footer-col a {
    display: block;
    padding: 0.25rem 0;
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.875rem;
    color: rgba(255,255,255,0.7);
    text-decoration: none;
    transition: color 0.18s;
}
.ra-footer-col a:hover { color: #fff; }

.ra-footer-bottom {
    border-top: 1px solid rgba(255,255,255,0.1);
    margin-top: 2rem;
    padding-top: 1.5rem;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    align-items: center;
    gap: 0.5rem;
}
@media (min-width: 640px) {
    .ra-footer-bottom { flex-direction: row; }
}
.ra-footer-bottom p {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.75rem;
    color: rgba(255,255,255,0.4);
    margin: 0;
}

/* ═════════════════════════════════════════════════════════════
   MARQUEE — modern pill+character with space-dock tunnel framing
   ═════════════════════════════════════════════════════════════
   DOM (astro.js injects the .marquee-bar; index-ra.html wraps it
   in a .marquee-shell after injection so the backdrop and the
   masked pills can be stacked correctly):

     <div class="marquee-shell">
       <div class="marquee-backdrop"></div>          ← tunnel + accent lines (unmasked)
       <div class="marquee-bar">                     ← scrollable, mask-image applied
         <div class="marquee-track">
           <a class="marquee-item">
             <img>
             <span class="marquee-label">…</span>
           </a> ×N
         </div>
       </div>
     </div>

   Why two layers: mask-image on the bar fades its painted output
   to transparent at the edges. If the bar painted the tunnel
   background, that would also fade — showing the page beneath
   and breaking the illusion. By splitting: backdrop paints the
   tunnel (unmasked); bar paints only the pills (masked → true
   fade to dock-doors).
   ───────────────────────────────────────────────────────────── */

/* ─── Shell: positioning context for backdrop + bar ─── */

/* ═════════════════════════════════════════════════════════════════
   MARQUEE TUNABLE KNOBS
   ─────────────────────────────────────────────────────────────────
   Every magic number lives here so you can tweak the marquee
   look in seconds without hunting through CSS. Examples:
     --marquee-pill-height: 52px;          larger pills
     --marquee-tunnel-color: #0F1F3A;      brighter navy
     --marquee-feather-w: 80px;            wider blur halo
     --marquee-gap: 16px;                  more breathing room
     --marquee-speed: 1.0;                 set in astro.js too (px/frame)

   COMMON RECIPES (apply to .ra-page .marquee-shell):

     -- Make it faster (more energetic):
        --marquee-speed: 1.0;   (~60 px/sec)
        --marquee-speed: 1.5;   (~90 px/sec, snappy)

     -- Make it slower (more cinematic):
        --marquee-speed: 0.4;   (~24 px/sec, contemplative)

     -- Bigger pills (more substantial feel):
        --marquee-pill-height: 52px;
        --marquee-char-w: 64px;
        --marquee-char-h: 74px;

     -- Tighter (more pills visible):
        --marquee-gap: 8px;
        --marquee-pill-char-overflow: 50px;

     -- Brighter tunnel (less moody):
        --marquee-tunnel-color: #1A2A44;
        --marquee-tunnel-center: #20324E;

     -- Move ovals further from edge (larger porthole margin):
        --marquee-oval-offset: 100px;
        --marquee-feather-w: 70px;

     -- Softer / wider blur (more atmospheric):
        --marquee-feather-w: 90px;
        --marquee-feather-h: 90px;

     -- Crisper blur (tighter halo):
        --marquee-feather-w: 30px;
        --marquee-feather-h: 50px;

     -- More dramatic ovals (heavier outlines):
        --marquee-oval-color: #2A4868;
        --marquee-oval-opacity: 1;
        (Note: stroke-width is hardcoded in the SVG data URI; this
         affects color only. Change stroke-width: '1.2' → '1.8' in
         the SVG strings below for thicker oval lines.)

     -- Stronger glass-tunnel rim-lighting (more sci-fi):
        --marquee-glow-w: 100px;
        --marquee-glow-h: 70px;
        (And in the radial-gradient stops, raise the cyan alpha:
         rgba(66, 165, 245, 0.55) → 0.75.)

     -- Different rim-glow color (e.g. magenta portal):
        --marquee-glow-color:  #E040FB;
        --marquee-glow-accent: #FFB0FF;
        (Also update the hardcoded rgba(66, 165, 245, …) stops in
         the backdrop's inner-rim glow gradients to match.)

   ═════════════════════════════════════════════════════════════════ */
.ra-page .marquee-shell {
    /* Pill geometry */
    --marquee-pill-height: 44px;
    --marquee-pill-radius: 100px;
    --marquee-pill-pad-x: 18px;
    --marquee-pill-char-overflow: 60px;   /* right-padding to make room for character image */
    --marquee-gap: 12px;

    /* Character image dims (the smallboy/smallgirl PNGs) */
    --marquee-char-w: 56px;
    --marquee-char-h: 64px;
    --marquee-char-right: -8px;
    --marquee-char-bottom: -8px;

    /* Portal/oval geometry — distance from screen edge */
    --marquee-oval-offset: 70px;           /* distance from edge to oval center */
    --marquee-oval-w: 20px;                /* oval ellipse width */
    --marquee-oval-h: 76px;                /* oval ellipse height */

    /* Soft blur feather around each oval — radial gradients that
       create a halo so the tunnel→page transition is gradual, not
       a hard horizontal line. Larger values = softer/wider blur. */
    --marquee-feather-w: 50px;             /* feather horizontal radius */
    --marquee-feather-h: 60px;             /* feather vertical radius (matches oval height) */

    /* Colors — light theme. The marquee tunnel was originally a dark
       navy "portal" that the program pills scrolled through. The light
       variant flips this: the tunnel itself is white (matching the
       page bg), with only the ovals and a subtle inner shadow defining
       the bar's edges. Pills become the visual anchor.

       Tradeoffs of the light variant:
        - Glass-tunnel rim glow (cyan crescents inside the ovals) is
          much less visible on white than on navy. Kept the tokens
          here at lower opacity so the airlock feel doesn't vanish
          entirely, but it reads more like a soft ring than a portal.
        - Pale pills (Childcare, Programs, Founder/Contact/Careers/
          Locations) needed their gradients darkened so they don't
          vanish on white. */
    --marquee-tunnel-color: #FFFFFF;       /* white tunnel base */
    --marquee-tunnel-center: #FFFFFF;      /* no center lift on white */
    --marquee-oval-color: #B0BFCF;         /* mid-gray oval outline so it reads on white */
    --marquee-oval-opacity: 0.6;

    /* Glass-tunnel rim-lighting — softer cyan glows on the white
       variant since they have less contrast to fight against. The
       horizontal spread was widened in v32 so the cyan reach extends
       further along the bar — matches the nav-content column more
       organically rather than terminating in a sharp glow puddle. */
    --marquee-glow-color:   #42A5F5;       /* In Space Blue — primary rim glow */
    --marquee-glow-accent:  #7FD4FF;       /* lighter cyan — specular highlight */
    --marquee-glow-w:       110px;         /* horizontal spread of inner-rim bloom (was 70px) */
    --marquee-glow-h:       55px;          /* vertical spread of inner-rim bloom */

    /* Inner-cutout: a half-circle is carved from the inward-facing
       side of each cyan glow, with a thin white ring outlining the
       cutout. This reads as a "portal mouth" — the pills appear to
       enter / exit through a clean rounded opening rather than
       fading through a featureless blur. */
    --marquee-cutout-r:     28px;          /* cutout radius — bigger = wider portal mouth */
    --marquee-cutout-ring:  1.5px;         /* outline ring thickness */

    /* Track spacing */
    --marquee-track-pad: 30px;
    --marquee-bar-pad-y: 16px;

    /* Animation speed — also set in astro.js as speedPxPerFrame.
       Keep these in sync; CSS var is for documentation. */
    --marquee-speed: 0.4;                  /* px/frame, ~24 px/sec at 60fps */

    /* Shell positioning — extends 96px beyond the nav-content width
       on each side (max-width 1392 = 1200 nav + 2×96). The bar inside
       fills the shell's content box, so the entire marquee — pills,
       cutouts, cyan blur — shifts outward by ~96px on each end vs. a
       strict nav-aligned shell. The half-circle cutouts still sit at
       their original position relative to the shell's edges (so the
       bar internal layout is unchanged); they just live in a wider
       shell that reaches further toward the viewport sides. */
    position: relative;
    width: 100%;
    max-width: 1392px;
    margin-left: auto;
    margin-right: auto;
    padding-left: 1rem;
    padding-right: 1rem;
    box-sizing: border-box;
    overflow-y: visible;
}
@media (min-width: 1024px) {
    .ra-page .marquee-shell {
        padding-left: 2rem;
        padding-right: 2rem;
    }
}

/* ─── Backdrop: dark tunnel scoped to the inter-oval region only.
   Painted in the shell's coords, unmasked. Sits behind the bar.

   New approach: the dark tunnel exists ONLY between the two ovals
   (~80px from each edge inward). Past that, the backdrop is fully
   transparent so the page background shows through naturally — no
   white "bookends" needed, no dark border/shadow bleed.

   The oval outlines are drawn on top at exactly the boundary, so
   their INNER half overlaps the dark tunnel (hollow portal look —
   you can see pills moving through the oval) and their OUTER half
   sits on page white. */
.ra-page .marquee-backdrop {
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    /* GLASS TUNNEL EFFECT
       Half-circle cutouts at each end of the bar with cyan blur
       blooming outward from each cutout. Drawn as inline SVG so the
       cutout shape (a hard circle subtracted from a soft-edged cyan
       rectangle) can be exact — pure CSS gradients can't subtract
       a crisp circle from a soft gradient cleanly.

       Geometry (200×76 SVG, left side, anchored left center):
         · Cutout center: (140, h/2), radius 38 — the cutout extends
                           x=102..178 inside the SVG. Its inboard edge
                           at x=178 sits inside the bar.
         · Cyan center:   cx=0.45 → x=90, well LEFT of the cutout, so
                           the gradient's dense ring is positioned
                           outboard. The cyan crescent blooms toward
                           the shell's left edge and fades cleanly,
                           with the inboard side of the gradient just
                           grazing the cutout's outer edge.
         · White arc:     half-circle from (140, 0) to (140, 76) along
                           the right side of the cutout, tracing the
                           inboard-facing edge where pills appear to
                           emerge.

       Right side mirrors: cutout at x=60, gradient at cx=0.55. */
    background:
        /* ① Left portal */
        url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 76' preserveAspectRatio='none'><defs><radialGradient id='glow' cx='0.45' cy='0.5' r='0.50'><stop offset='0%25' stop-color='%2342A5F5' stop-opacity='0.50'/><stop offset='55%25' stop-color='%2342A5F5' stop-opacity='0.25'/><stop offset='100%25' stop-color='%2342A5F5' stop-opacity='0'/></radialGradient><mask id='bite'><rect width='200' height='76' fill='white'/><circle cx='140' cy='38' r='38' fill='black'/></mask></defs><rect width='200' height='76' fill='url(%23glow)' mask='url(%23bite)'/><path d='M 140 0 A 38 38 0 0 0 140 76' fill='none' stroke='white' stroke-width='2.5' stroke-opacity='1'/></svg>")
            no-repeat left center / 200px 100%,
        /* ② Right portal — mirrored */
        url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 76' preserveAspectRatio='none'><defs><radialGradient id='glow' cx='0.55' cy='0.5' r='0.50'><stop offset='0%25' stop-color='%2342A5F5' stop-opacity='0.50'/><stop offset='55%25' stop-color='%2342A5F5' stop-opacity='0.25'/><stop offset='100%25' stop-color='%2342A5F5' stop-opacity='0'/></radialGradient><mask id='bite'><rect width='200' height='76' fill='white'/><circle cx='60' cy='38' r='38' fill='black'/></mask></defs><rect width='200' height='76' fill='url(%23glow)' mask='url(%23bite)'/><path d='M 60 0 A 38 38 0 0 1 60 76' fill='none' stroke='white' stroke-width='2.5' stroke-opacity='1'/></svg>")
            no-repeat right center / 200px 100%;
}

/* ─── Bar: scrollable, masked. Holds the pills.
   Transparent background — the backdrop below paints the tunnel.
   The mask fades the pills to alpha 0 within the cutout zones. */
.ra-page .marquee-bar {
    position: relative;
    z-index: 1;
    width: 100%;
    overflow-x: auto;
    overflow-y: visible;
    background: transparent;
    border: 0;
    padding: var(--marquee-bar-pad-y) 0;
    margin: 0;
    cursor: grab;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    -ms-overflow-style: none;
    /* Pills fade out within the cutout zones so they don't render
       on top of the white half-circle artwork. */
    -webkit-mask-image:
        linear-gradient(
            to right,
            transparent 0,
            transparent var(--marquee-oval-offset),
            black calc(var(--marquee-oval-offset) + var(--marquee-feather-w) * 2),
            black calc(100% - var(--marquee-oval-offset) - var(--marquee-feather-w) * 2),
            transparent calc(100% - var(--marquee-oval-offset)),
            transparent 100%
        );
    mask-image:
        linear-gradient(
            to right,
            transparent 0,
            transparent var(--marquee-oval-offset),
            black calc(var(--marquee-oval-offset) + var(--marquee-feather-w) * 2),
            black calc(100% - var(--marquee-oval-offset) - var(--marquee-feather-w) * 2),
            transparent calc(100% - var(--marquee-oval-offset)),
            transparent 100%
        );
}
.ra-page .marquee-bar::-webkit-scrollbar { display: none; }

/* ─── Track ─── */
.ra-page .marquee-track {
    display: flex;
    align-items: center;
    gap: var(--marquee-gap);
    width: max-content;
    padding: 0 var(--marquee-track-pad);
}

/* ─── Pill ─── */
.ra-page .marquee-item {
    display: inline-flex !important;
    flex-direction: row !important;
    align-items: center !important;
    justify-content: flex-start !important;
    text-align: left !important;
    gap: 0 !important;
    flex: none;
    position: relative;
    height: var(--marquee-pill-height);
    padding: 0 var(--marquee-pill-char-overflow) 0 var(--marquee-pill-pad-x);
    border-radius: var(--marquee-pill-radius);
    text-decoration: none !important;
    background: linear-gradient(135deg, #42A5F5 0%, #1565C0 100%);
    color: #fff !important;
    /* Shadows were heavy (0.35 black) for the dark-tunnel variant.
       On a white tunnel they look harsh, so they're toned down to a
       gentler lift. */
    box-shadow:
        0 2px 8px rgba(20, 40, 70, 0.14),
        0 1px 2px rgba(20, 40, 70, 0.08),
        0 0 0 1px rgba(0, 0, 0, 0.04);
    overflow: visible;
    transition: transform 0.22s cubic-bezier(0.16, 1, 0.3, 1),
                box-shadow 0.22s ease;
    isolation: isolate;
}

.ra-page .marquee-item:hover {
    transform: translateY(-2px);
    box-shadow:
        0 6px 16px rgba(20, 40, 70, 0.22),
        0 2px 4px rgba(20, 40, 70, 0.12),
        0 0 0 1px rgba(66, 165, 245, 0.25);
}

/* ─── Character image — anchored bottom-right, overflowing ─── */
.ra-page .marquee-item img {
    position: absolute !important;
    width: var(--marquee-char-w) !important;
    height: var(--marquee-char-h) !important;
    object-fit: contain;
    object-position: bottom center;
    right: var(--marquee-char-right);
    bottom: var(--marquee-char-bottom);
    margin: 0 !important;
    pointer-events: none;
    user-select: none;
    -webkit-user-drag: none;
    transition: transform 0.28s cubic-bezier(0.16, 1, 0.3, 1);
    transform-origin: bottom right;
    z-index: 1;
    filter: drop-shadow(0 2px 6px rgba(0, 0, 0, 0.4));
}

.ra-page .marquee-item:hover img {
    transform: scale(1.10) translateY(-2px);
}

/* ─── Label ─── */
.ra-page .marquee-label {
    display: inline-block !important;
    position: relative;
    z-index: 2;
    width: auto !important;
    margin: 0 !important;
    font-family: 'Quicksand', system-ui, -apple-system, sans-serif !important;
    font-size: 12px !important;
    font-weight: 700 !important;
    letter-spacing: 0.06em !important;
    text-transform: uppercase !important;
    text-align: left !important;
    color: inherit !important;
    white-space: nowrap;
    line-height: 1;
}

/* ─── Per-destination color treatments

   Pill gradients changed when the tunnel was switched from navy to
   white. Pale-blue gradients that worked on dark would be near-
   invisible on white, so the pale pills got their light end pulled
   in toward a stronger blue. Bold pills (aquatics, academy) didn't
   need to change. */

.ra-page .marquee-item[href*="academy"] {
    background: linear-gradient(135deg, #1A2A3C 0%, #050810 100%);
}
.ra-page .marquee-item[href*="childcare"] {
    /* Was pale: #BBDEFB → #64B5F6. On white that gradient is barely
       visible. Pull both stops to a deeper blue so the pill has
       presence. Text stays dark since the gradient is still on the
       lighter side. */
    background: linear-gradient(135deg, #64B5F6 0%, #1976D2 100%);
    color: #FFFFFF !important;
}
.ra-page .marquee-item[href*="aquatics"] {
    background: linear-gradient(135deg, #42A5F5 0%, #1565C0 100%);
    color: #fff !important;
}
.ra-page .marquee-item[href*="#programs"] {
    /* Was pale neutral #E8F0F8 → #A8C0D8. Bumped to a darker mid-
       blue so it reads against white. */
    background: linear-gradient(135deg, #90A4B8 0%, #4A5C70 100%);
    color: #FFFFFF !important;
}
.ra-page .marquee-item[href*="founder"],
.ra-page .marquee-item[href*="contact"],
.ra-page .marquee-item[href*="careers"],
.ra-page .marquee-item[href*="locations"] {
    /* Same pale-neutral treatment as #programs — pulled darker for white. */
    background: linear-gradient(135deg, #90A4B8 0%, #4A5C70 100%);
    color: #FFFFFF !important;
}

/* ─── Mobile — override the knobs instead of duplicating the rules.

   v34: the dark-navy tunnel variant for mobile was removed — mobile
   now inherits the desktop white-tunnel + SVG cutout backdrop. Only
   the size tokens are mobile-specific (smaller pills, character
   overflow, tighter glow offsets). The SVG portal artwork scales
   automatically because it's set to `200px 100%` background-size,
   so the cutout height tracks the smaller mobile bar height. */
@media (max-width: 600px) {
    .ra-page .marquee-shell {
        --marquee-pill-height: 40px;
        --marquee-pill-pad-x: 14px;
        --marquee-pill-char-overflow: 52px;
        --marquee-gap: 10px;
        --marquee-char-w: 48px;
        --marquee-char-h: 56px;
        --marquee-char-right: -6px;
        --marquee-char-bottom: -6px;
        /* Glow offset closer to the edge on mobile — there's less
           horizontal room so the cutouts need to nest tighter. */
        --marquee-oval-offset: 24px;
        --marquee-oval-w: 14px;
        --marquee-oval-h: 60px;
        --marquee-feather-w: 30px;
        --marquee-feather-h: 50px;
        --marquee-track-pad: 20px;
        --marquee-bar-pad-y: 12px;
    }
    .ra-page .marquee-label { font-size: 11px !important; }
}

/* ─── Reduced motion ─── */
@media (prefers-reduced-motion: reduce) {
    .ra-page .marquee-item,
    .ra-page .marquee-item img,
    .ra-page .marquee-item:hover,
    .ra-page .marquee-item:hover img {
        transition: none;
        transform: none;
    }
}

/* ─── Fallback for browsers without mask-image support
   (very rare in 2026 — basically only old Samsung Internet).
   Without mask, the pills won't fade — they'll just hit the
   accent line and stop. Still readable, just no tunnel illusion. */
@supports not (mask-image: linear-gradient(black, black)) {
    .ra-page .marquee-bar {
        -webkit-mask-image: none;
        mask-image: none;
    }
}

/* ═════════════════════════════════════════════════════════════
   END MARQUEE
   ═════════════════════════════════════════════════════════════ */

/* ═════════════════════════════════════════════════════════════
   PROGRAM PAGES — shared template
   ═════════════════════════════════════════════════════════════
   Used by academy, childcare, aquatics. Each page renders:
     1. Full-bleed image hero with headline + sub
     2. Stats grid (4 stats, page-specific values)
     3. "What Makes Us Different" 2-col photo cards (numbered)
        (or, for childcare which uses bullets, simpler photo cards)
     4. Academy only: Day Timeline
     5. Founder snippet (reused from home)
     6. CTA band

   Structure matches React's VariationPage rendering for case
   "academy"|"childcare"|"aquatics".
   ───────────────────────────────────────────────────────────── */

/* ─── Hero with full-bleed background image ─── */
.ra-program-hero {
    position: relative;
    padding: 4rem 0 5rem;
    overflow: hidden;
}
@media (min-width: 768px) {
    .ra-program-hero { padding: 6rem 0 7rem; }
}
.ra-program-hero-bg {
    position: absolute;
    inset: 0;
    z-index: 0;
}
.ra-program-hero-bg img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    filter: brightness(0.85);
}
.ra-program-hero-bg-overlay {
    position: absolute;
    inset: 0;
    /* Match React's variant-A overlay — white gradient from solid at left to transparent at right */
    background: linear-gradient(
        to right,
        rgba(255, 255, 255, 0.92) 0%,
        rgba(255, 255, 255, 0.7) 60%,
        rgba(255, 255, 255, 0.2) 100%
    );
}
.ra-program-hero-inner {
    position: relative;
    z-index: 10;
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 1rem;
}
@media (min-width: 1024px) {
    .ra-program-hero-inner { padding: 0 2rem; }
}
.ra-program-hero h1 {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: clamp(2.5rem, 5vw, 4rem);
    font-weight: 700;
    line-height: 1.05;
    letter-spacing: -0.02em;
    color: var(--ra-text);
    margin: 0;
    max-width: 800px;
}
.ra-program-hero-sub {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: clamp(1rem, 1.5vw, 1.125rem);
    line-height: 1.6;
    color: var(--ra-text-sec);
    margin: 1.25rem 0 0;
    max-width: 520px;
}

/* ─── What Makes Us Different — 2-col grid of numbered photo cards ─── */
.ra-program-features {
    padding: 3rem 0;
    background: var(--ra-bg);
}
@media (min-width: 768px) {
    .ra-program-features { padding: 4rem 0; }
}
.ra-program-features-inner {
    max-width: 1100px;
    margin: 0 auto;
    padding: 0 1rem;
}
@media (min-width: 1024px) {
    .ra-program-features-inner { padding: 0 2rem; }
}
.ra-program-features h2 {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: clamp(1.375rem, 2.8vw, 1.75rem);
    font-weight: 700;
    color: var(--ra-text);
    margin: 0 0 2rem;
}
.ra-program-features-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.25rem;
}
@media (min-width: 768px) {
    .ra-program-features-grid { grid-template-columns: repeat(2, 1fr); }
}

/* Individual feature card */
.ra-program-feature {
    display: flex;
    flex-direction: column;
    overflow: hidden;
    background: var(--ra-surface);
    border: 1px solid var(--ra-border);
    border-radius: 14px;
    transition: transform 0.18s, box-shadow 0.18s;
}
.ra-program-feature:hover {
    transform: translateY(-2px);
    box-shadow: 0 6px 20px rgba(10, 22, 40, 0.08);
}
.ra-program-feature-img-wrap {
    position: relative;
    width: 100%;
    padding-bottom: 72%;
    overflow: hidden;
    background: var(--ra-bg);
}
.ra-program-feature-img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
/* Number badge — overlay on top-left of image, BIG (Fraunces-like) numeral */
.ra-program-feature-number {
    position: absolute;
    top: 1rem;
    left: 1.25rem;
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 28px;
    font-weight: 700;
    line-height: 1;
    color: #fff;
    text-shadow: 0 2px 8px rgba(0, 0, 0, 0.6);
    z-index: 2;
}
@media (min-width: 768px) {
    .ra-program-feature-number { font-size: 34px; }
}
.ra-program-feature-body {
    padding: 1.25rem;
    flex: 1;
    display: flex;
    flex-direction: column;
}
.ra-program-feature-body h3 {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 1.125rem;
    font-weight: 600;
    color: var(--ra-text);
    margin: 0 0 0.75rem;
    line-height: 1.3;
}
@media (min-width: 768px) {
    .ra-program-feature-body h3 { font-size: 1.25rem; }
}
.ra-program-feature-body p {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.875rem;
    line-height: 1.6;
    color: var(--ra-text-sec);
    margin: 0;
}

/* ─── Academy Day Timeline (academy only) ─── */
.ra-schedule {
    padding: 3rem 0;
    background: var(--ra-surface-alt);
}
@media (min-width: 768px) {
    .ra-schedule { padding: 4rem 0; }
}
.ra-schedule-inner {
    max-width: 900px;
    margin: 0 auto;
    padding: 0 1rem;
}
@media (min-width: 1024px) {
    .ra-schedule-inner { padding: 0 2rem; }
}
.ra-schedule-eyebrow {
    font-family: 'Quicksand', system-ui, sans-serif;
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--ra-accent);
    display: block;
}
.ra-schedule h2 {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: clamp(1.375rem, 2.5vw, 1.75rem);
    font-weight: 700;
    color: var(--ra-text);
    margin: 0.5rem 0 2rem;
}
.ra-schedule-list {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}
.ra-schedule-item {
    display: flex;
    align-items: flex-start;
    gap: 1rem;
    padding: 1rem;
    background: var(--ra-surface);
    border: 1px solid var(--ra-border);
    border-radius: 12px;
}
.ra-schedule-time {
    font-family: 'Quicksand', system-ui, sans-serif;
    font-size: 13px;
    font-weight: 600;
    color: var(--ra-accent);
    flex-shrink: 0;
    width: 110px;
}
.ra-schedule-body {
    flex: 1;
}
.ra-schedule-body h3 {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 0.9375rem;
    font-weight: 600;
    color: var(--ra-text);
    margin: 0;
}
.ra-schedule-body p {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 13px;
    line-height: 1.5;
    color: var(--ra-text-sec);
    margin: 0.25rem 0 0;
}

/* ─── Bottom CTA band (universal for program pages) ───
   Default (childcare + aquatics): pale band with dark text. Buttons:
   solid In Space Blue + outline-blue ghost. Academy gets an
   Institutional Blue override below (since institutional is
   academy-only). */
.ra-program-cta {
    padding: 3.5rem 0;
    background: var(--ra-surface-alt);    /* pale band, same as band-above-footer */
    color: var(--ra-text);
    text-align: center;
}
@media (min-width: 768px) {
    .ra-program-cta { padding: 5rem 0; }
}
.ra-program-cta-inner {
    max-width: 800px;
    margin: 0 auto;
    padding: 0 1rem;
}
.ra-program-cta h2 {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: clamp(1.625rem, 3.5vw, 2.5rem);
    font-weight: 700;
    line-height: 1.15;
    letter-spacing: -0.01em;
    color: var(--ra-text);
    margin: 0 0 1rem;
}
.ra-program-cta-sub {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 1.0625rem;
    line-height: 1.55;
    color: var(--ra-text-sec);
    margin: 0 0 2rem;
}
.ra-program-cta-buttons {
    display: flex;
    flex-direction: column;
    flex-wrap: wrap;
    gap: 0.75rem;
    align-items: center;
    justify-content: center;
}
@media (min-width: 600px) {
    .ra-program-cta-buttons { flex-direction: row; }
}

/* Button: solid In Space Blue (primary register button) */
.ra-program-cta-btn-primary {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.875rem 1.75rem;
    background: var(--ra-color-blue);
    color: var(--ra-color-orbit);
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.9375rem;
    font-weight: 600;
    text-decoration: none;
    border-radius: 100px;
    border: 2px solid transparent;
    transition: background 0.18s, transform 0.18s, box-shadow 0.18s;
    cursor: pointer;
    white-space: nowrap;
}
.ra-program-cta-btn-primary:hover {
    background: var(--ra-accent-dark);
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(66, 165, 245, 0.3);
}

/* Button: outline (secondary, e.g. View Handbook / Back to Home) */
.ra-program-cta-btn-secondary {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.875rem 1.75rem;
    background: transparent;
    color: var(--ra-color-blue);
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.9375rem;
    font-weight: 600;
    text-decoration: none;
    border-radius: 100px;
    border: 2px solid var(--ra-color-blue);
    transition: background 0.18s, color 0.18s, transform 0.18s;
    cursor: pointer;
    white-space: nowrap;
}
.ra-program-cta-btn-secondary:hover {
    background: var(--ra-color-blue);
    color: var(--ra-color-orbit);
    transform: translateY(-1px);
}

/* ═════════════════════════════════════════════════════════════
   ACADEMY PAGE — palette overrides ("feel unique" requirement)
   ═════════════════════════════════════════════════════════════
   Per Phase 2 design decision + 2026 brand lockup: academy is the
   one page that uses Academy Blue + Institutional Blue (academy-
   only colors), on a cool neutral ash background instead of the
   default near-white. The shift from cream parchment to ash
   gives academy a more institutional / serious feel (a school
   document zone inside the universe).

   Allowed colors on academy: Academy Blue, Institutional Blue,
   any neutral ash/grey, plus the In Space Blue chrome (nav,
   marquee, footer) and Cosmic Black.
   ───────────────────────────────────────────────────────────── */
body.ra-page.program-academy {
    --ra-bg:           #E8ECF0;   /* cool neutral ash (was cream #FAF6EF) */
    --ra-surface:      #FFFFFF;   /* paper-white cards */
    --ra-surface-alt:  #DDE2E8;   /* slightly darker ash for schedule strip */
    --ra-text:         #1A1A1A;
    --ra-text-sec:     #4A5560;   /* cool neutral secondary (was greenish-warm) */
    --ra-text-muted:   #889098;
    --ra-accent:       var(--ra-color-academy);   /* Academy Blue #1565C0 */
    --ra-accent-light: #5B95D5;
    --ra-accent-dark:  var(--ra-color-institute); /* Institutional Blue #2B5073 */
    --ra-accent-warm:  #BBD4EC;
    --ra-border:       #C8D0D8;   /* cool ash border (was warm cream) */
    --ra-border-dark:  #A8B2BC;
    --ra-hero-bg:      #E8ECF0;
}

/* Academy reading width narrowed (Ashta's "slower visual rhythm") */
body.ra-page.program-academy .ra-program-hero-inner { max-width: 1100px; }
body.ra-page.program-academy .ra-program-features-inner { max-width: 1000px; }
body.ra-page.program-academy .ra-program-hero-sub { max-width: 600px; }

/* Marquee on academy pages should sit on white (matching home page),
   not on the academy's cool-ash --ra-bg. The marquee tunnel is white;
   if the surround is also white, the edges blend seamlessly. Without
   this override, the white marquee floats on the academy's #E8ECF0
   ash background and looks like a visible card edge.

   The shell itself has max-width: 1392px, so painting its own bg
   white only covers the center band. To extend the white to the full
   viewport edges (and eliminate ash gutters on wide screens), we
   paint a full-bleed white strip with a ::before pseudo using the
   100vw breakout trick. */
body.ra-page.program-academy .marquee-shell {
    background: #FFFFFF;
}
body.ra-page.program-academy .marquee-shell::before {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    /* Full-bleed 100vw breakout — using right: auto to clear the
       conflict with inset/right that would otherwise stretch the
       element between left:50% and right:0 (= half viewport). */
    width: 100vw;
    left: 50%;
    right: auto;
    margin-left: -50vw;
    background: #FFFFFF;
    z-index: -1;            /* behind the marquee-backdrop and bar */
    pointer-events: none;
}

/* Academy CTA strip — Institutional Blue background with white text
   and white solid + outline white buttons (different from default
   pale-band variant used by childcare + aquatics). */
body.ra-page.program-academy .ra-program-cta {
    background: var(--ra-color-institute);
    color: var(--ra-color-orbit);
}
body.ra-page.program-academy .ra-program-cta h2 {
    color: var(--ra-color-orbit);
}
body.ra-page.program-academy .ra-program-cta-sub {
    color: rgba(255, 255, 255, 0.78);
}
body.ra-page.program-academy .ra-program-cta-btn-primary {
    background: var(--ra-color-orbit);
    color: var(--ra-color-institute);
}
body.ra-page.program-academy .ra-program-cta-btn-primary:hover {
    background: rgba(255, 255, 255, 0.92);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25);
}
body.ra-page.program-academy .ra-program-cta-btn-secondary {
    background: transparent;
    color: var(--ra-color-orbit);
    border-color: rgba(255, 255, 255, 0.5);
}
body.ra-page.program-academy .ra-program-cta-btn-secondary:hover {
    background: rgba(255, 255, 255, 0.12);
    color: var(--ra-color-orbit);
    border-color: var(--ra-color-orbit);
}

/* ═════════════════════════════════════════════════════════════
   END PROGRAM PAGES
   ═════════════════════════════════════════════════════════════ */

/* ═════════════════════════════════════════════════════════════
   HANDBOOK PAGES
   ═════════════════════════════════════════════════════════════
   Used by /handbooks/parent-handbook.html, employee-handbook.html,
   company-handbook.html. Ports React's `lb`, `cb`, `db` renderer
   patterns:
     - .ra-handbook-welcome: hero with eyebrow + paragraphs + signoff
     - .ra-handbook-sec: a section with h2 title + body content
     - .ra-handbook-card: a bordered, padded surface
     - .ra-handbook-grid-2: 2-column responsive grid (used for
       philosophy attributes, ratios pairs, etc.)
     - .ra-handbook-list: bulleted items inside a card
     - .ra-handbook-pdf-cta: bottom-of-page download button band
   ───────────────────────────────────────────────────────────── */

/* ─── Welcome / opening hero ─── */
.ra-handbook-welcome {
    padding: 4rem 0;
    background: var(--ra-hero-bg);
}
@media (min-width: 768px) {
    .ra-handbook-welcome { padding: 5rem 0; }
}
.ra-handbook-welcome-inner {
    max-width: 900px;
    margin: 0 auto;
    padding: 0 1rem;
}
@media (min-width: 1024px) {
    .ra-handbook-welcome-inner { padding: 0 2rem; }
}
.ra-handbook-eyebrow {
    font-family: 'Quicksand', system-ui, sans-serif;
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--ra-accent);
    display: block;
}
.ra-handbook-welcome p {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 1rem;
    line-height: 1.65;
    color: var(--ra-text-sec);
    margin: 0.75rem 0 0;
}
.ra-handbook-signoff {
    margin-top: 1.5rem;
    padding-top: 1.5rem;
    border-top: 1px solid var(--ra-border);
}
.ra-handbook-signoff-name {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.9375rem;
    font-weight: 600;
    color: var(--ra-accent);
    margin: 0;
}
.ra-handbook-signoff-title {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.875rem;
    color: var(--ra-text-sec);
    margin: 0.125rem 0 0;
}

/* ─── Section: titled content block ─── */
.ra-handbook-sec {
    padding: 3rem 0;
    background: var(--ra-bg);
}
@media (min-width: 768px) {
    .ra-handbook-sec { padding: 4rem 0; }
}
.ra-handbook-sec--alt {
    background: var(--ra-surface-alt);
}
.ra-handbook-sec-inner {
    max-width: 900px;
    margin: 0 auto;
    padding: 0 1rem;
}
@media (min-width: 1024px) {
    .ra-handbook-sec-inner { padding: 0 2rem; }
}
.ra-handbook-sec h2 {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: clamp(1.375rem, 2.5vw, 1.75rem);
    font-weight: 700;
    color: var(--ra-text);
    margin: 0 0 1.5rem;
    letter-spacing: -0.01em;
}
.ra-handbook-sec h3 {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 1.0625rem;
    font-weight: 600;
    color: var(--ra-text);
    margin: 1.5rem 0 0.5rem;
}
.ra-handbook-sec p {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 1rem;
    line-height: 1.65;
    color: var(--ra-text-sec);
    margin: 0.75rem 0 0;
}
.ra-handbook-sec p:first-child { margin-top: 0; }
.ra-handbook-sec .ra-handbook-lede {
    font-size: 1.0625rem;
    color: var(--ra-text);
    margin-bottom: 1.5rem;
}

/* ─── Card: bordered surface for grouping ─── */
.ra-handbook-card {
    background: var(--ra-surface);
    border: 1px solid var(--ra-border);
    border-radius: 16px;
    padding: 1.5rem;
    margin: 0 0 1rem;
}
.ra-handbook-card-eyebrow {
    font-family: 'Quicksand', system-ui, sans-serif;
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--ra-accent);
    display: block;
    margin-bottom: 0.5rem;
}
.ra-handbook-card h3 {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 1rem;
    font-weight: 600;
    color: var(--ra-text);
    margin: 0 0 0.5rem;
}
.ra-handbook-card p {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.9375rem;
    line-height: 1.55;
    color: var(--ra-text);
    margin: 0;
}

/* ─── 2-column responsive grid (philosophy, ratios) ─── */
.ra-handbook-grid-2 {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1rem;
    margin: 0 0 1.5rem;
}
@media (min-width: 768px) {
    .ra-handbook-grid-2 { grid-template-columns: repeat(2, 1fr); }
}

/* ─── Bulleted lists inside cards ─── */
.ra-handbook-list {
    list-style: none;
    padding: 0;
    margin: 0.75rem 0 0;
}
.ra-handbook-list li {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.9375rem;
    line-height: 1.55;
    color: var(--ra-text);
    padding: 0.375rem 0 0.375rem 1.5rem;
    position: relative;
}
.ra-handbook-list li::before {
    content: "•";
    color: var(--ra-accent);
    position: absolute;
    left: 0.5rem;
    font-weight: 700;
}

/* ─── BC Ratios table (company handbook) ─── */
.ra-handbook-ratios-table {
    width: 100%;
    border-collapse: collapse;
    margin: 1rem 0 0;
    font-family: 'Inter', system-ui, sans-serif;
}
.ra-handbook-ratios-table th,
.ra-handbook-ratios-table td {
    padding: 0.875rem 1rem;
    text-align: left;
    border-bottom: 1px solid var(--ra-border);
    font-size: 0.9375rem;
    line-height: 1.45;
}
.ra-handbook-ratios-table thead th {
    background: var(--ra-surface-alt);
    font-weight: 600;
    color: var(--ra-text);
    font-size: 0.875rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}
.ra-handbook-ratios-table tbody tr:hover {
    background: var(--ra-surface-alt);
}
.ra-handbook-ratios-table tbody td:first-child {
    color: var(--ra-text);
    font-weight: 500;
}
.ra-handbook-ratios-table tbody td:last-child {
    color: var(--ra-text-sec);
    font-weight: 500;
}

/* ─── PDF download CTA — centered block at end of handbook ─── */
.ra-handbook-pdf-cta {
    padding: 3.5rem 0;
    background: var(--ra-surface-alt);
    text-align: center;
}
@media (min-width: 768px) {
    .ra-handbook-pdf-cta { padding: 5rem 0; }
}
.ra-handbook-pdf-cta-inner {
    max-width: 700px;
    margin: 0 auto;
    padding: 0 1rem;
}
.ra-handbook-pdf-cta h2 {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: clamp(1.5rem, 3vw, 2rem);
    font-weight: 700;
    color: var(--ra-text);
    margin: 0 0 0.75rem;
    letter-spacing: -0.01em;
}
.ra-handbook-pdf-cta p {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 1rem;
    line-height: 1.55;
    color: var(--ra-text-sec);
    margin: 0 0 1.5rem;
}
.ra-handbook-pdf-cta a {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.875rem 1.75rem;
    background: var(--ra-color-blue);
    color: var(--ra-color-orbit);
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.9375rem;
    font-weight: 600;
    text-decoration: none;
    border-radius: 100px;
    transition: background 0.18s, transform 0.18s, box-shadow 0.18s;
}
.ra-handbook-pdf-cta a:hover {
    background: var(--ra-accent-dark);
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(66, 165, 245, 0.3);
}
.ra-handbook-pdf-cta svg {
    width: 16px;
    height: 16px;
    stroke: currentColor;
    fill: none;
    stroke-width: 2.4;
}

/* ─── Stack (vertical card stack with consistent gap) ─── */
.ra-handbook-stack {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
}

/* ─── Subheading h3 (used inside sections between content blocks) ─── */
.ra-handbook-subheading {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 1.0625rem;
    font-weight: 600;
    color: var(--ra-text);
    margin: 1.5rem 0 0.75rem;
}
.ra-handbook-subheading-tight {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 0.9375rem;
    font-weight: 600;
    color: var(--ra-text);
    margin: 1rem 0 0.5rem;
}

/* ─── Check-icon bulleted list (replaces • marker) ─── */
.ra-handbook-check-list {
    list-style: none;
    padding: 0;
    margin: 0.5rem 0 0;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}
.ra-handbook-check-li {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.9375rem;
    line-height: 1.55;
    color: var(--ra-text-sec);
}
.ra-handbook-check-icon {
    width: 16px;
    height: 16px;
    flex-shrink: 0;
    margin-top: 0.2em;
    color: var(--ra-accent);
}
.ra-handbook-check-li span {
    flex: 1;
}

/* ─── Chip pills (used for programs.focus + locations.schools) ─── */
.ra-handbook-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin: 0.5rem 0 0;
}
.ra-handbook-chip {
    display: inline-block;
    padding: 0.375rem 0.875rem;
    background: var(--ra-surface);
    border: 1px solid var(--ra-border);
    border-radius: 100px;
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.8125rem;
    color: var(--ra-text);
}

/* ─── Schedule rows (dailySchedule.infant/schoolAge) ─── */
.ra-handbook-schedule {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    margin: 0.5rem 0;
}
.ra-handbook-schedule-row {
    display: flex;
    align-items: flex-start;
    gap: 1rem;
    padding: 0.75rem 1rem;
    background: var(--ra-surface);
    border: 1px solid var(--ra-border);
    border-radius: 12px;
}
.ra-handbook-schedule-time {
    flex-shrink: 0;
    width: 100px;
    font-family: 'Quicksand', system-ui, sans-serif;
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--ra-accent);
}
.ra-handbook-schedule-body {
    flex: 1;
}
.ra-handbook-schedule-activity {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.9375rem;
    font-weight: 500;
    color: var(--ra-text);
    margin: 0;
}
.ra-handbook-schedule-body p:last-child {
    font-size: 0.75rem;
    color: var(--ra-text-sec);
    margin: 0.125rem 0 0;
}

/* ─── Document rows (enrollment.documents) ─── */
.ra-handbook-doc-list {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    margin: 0.5rem 0;
}
.ra-handbook-doc-row {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    padding: 0.75rem 1rem;
    background: var(--ra-surface);
    border: 1px solid var(--ra-border);
    border-radius: 12px;
}
.ra-handbook-doc-row .ra-handbook-check-icon {
    width: 16px;
    height: 16px;
    color: var(--ra-accent);
    margin-top: 0.25em;
    flex-shrink: 0;
}
.ra-handbook-doc-name {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.9375rem;
    font-weight: 500;
    color: var(--ra-text);
    margin: 0;
}
.ra-handbook-doc-desc {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.75rem;
    color: var(--ra-text-sec);
    margin: 0.125rem 0 0;
}

/* ─── Location card (galactic1/2) ─── */
.ra-handbook-location-card h3 {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 1.125rem;
    font-weight: 600;
    color: var(--ra-text);
    margin: 0;
}
.ra-handbook-location-address {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.875rem;
    color: var(--ra-text-sec);
    margin: 0.25rem 0 0 !important;
}
.ra-handbook-location-programs {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.875rem;
    color: var(--ra-accent);
    margin: 0.25rem 0 0 !important;
}

/* ─── Eligibility card (enrollment.eligibility) ─── */
.ra-handbook-eligibility-card h3 {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 1.125rem;
    font-weight: 600;
    color: var(--ra-text);
    margin: 0;
}
.ra-handbook-eligibility-ages {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.875rem;
    color: var(--ra-accent) !important;
    margin: 0.25rem 0 0 !important;
}
.ra-handbook-eligibility-note {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.875rem;
    color: var(--ra-text-sec);
    margin: 0.25rem 0 0 !important;
}

/* ─── Payment-method card (tuition.paymentMethods) ─── */
.ra-handbook-payment-card {
    padding: 1rem 1.25rem;
}
.ra-handbook-payment-method {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.9375rem;
    font-weight: 500;
    color: var(--ra-text);
    margin: 0;
}
.ra-handbook-payment-detail {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.75rem;
    color: var(--ra-text-sec);
    margin: 0.125rem 0 0 !important;
}

/* ─── Numbered mini-card (zeroTolerance.items) ─── */
.ra-handbook-grid-2-tight {
    display: grid;
    grid-template-columns: 1fr;
    gap: 0.5rem;
    margin: 0.5rem 0 1rem;
}
@media (min-width: 600px) {
    .ra-handbook-grid-2-tight { grid-template-columns: repeat(2, 1fr); }
}
.ra-handbook-numbered-card {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    padding: 0.75rem 1rem;
    background: var(--ra-surface);
    border: 1px solid var(--ra-border);
    border-radius: 12px;
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.8125rem;
    color: var(--ra-text-sec);
}
.ra-handbook-numbered-index {
    font-weight: 700;
    color: var(--ra-accent);
    flex-shrink: 0;
}

/* ─── Numbered grid wrapper (multi-column layout for numbered cards) ─── */
.ra-handbook-numbered-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 0.75rem;
    margin: 1rem 0;
}
@media (min-width: 600px) {
    .ra-handbook-numbered-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 1024px) {
    .ra-handbook-numbered-grid { grid-template-columns: repeat(3, 1fr); }
}
.ra-handbook-numbered-grid .ra-handbook-numbered-card {
    font-size: 0.9375rem;
    line-height: 1.55;
    padding: 1rem 1.25rem;
    transition: border-color 0.2s, transform 0.2s, box-shadow 0.2s;
}
.ra-handbook-numbered-grid .ra-handbook-numbered-card:hover {
    border-color: var(--ra-color-blue);
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(66, 165, 245, 0.08);
}
.ra-handbook-numbered-grid .ra-handbook-numbered-index {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 1.125rem;
    color: var(--ra-color-blue);
    min-width: 1.75rem;
}

/* ─── Quote section (dark-bg dramatic moment between sections) ─── */
.ra-handbook-quote-section {
    padding: 3rem 1.5rem;
    background: var(--ra-dark-bg, #000000);
    color: #FFFFFF;
    text-align: center;
}
@media (min-width: 768px) {
    .ra-handbook-quote-section { padding: 4rem 1.5rem; }
}
.ra-handbook-quote-inner {
    max-width: 760px;
    margin: 0 auto;
    padding: 0;
}
.ra-handbook-quote-text,
.ra-handbook-quote-section blockquote {
    /* Reset browser default blockquote margin (which throws off
       centering and creates an offset on the left). */
    margin: 0;
    padding: 0;
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: clamp(1.125rem, 2.5vw, 1.5rem);
    font-weight: 500;
    line-height: 1.5;
    color: #FFFFFF;
    font-style: italic;
    text-align: center;
}
/* Decorative opening quote — placed above the text rather than as a
   floating ::before, so it doesn't break centering on short quotes. */
.ra-handbook-quote-inner::before {
    content: "“";
    display: block;
    font-family: 'DM Sans', Georgia, serif;
    font-size: 3rem;
    line-height: 0.8;
    color: var(--ra-color-blue);
    margin-bottom: 0.5rem;
    font-style: normal;
    opacity: 0.7;
    text-align: center;
}

/* ─── Attendance entries (Object.entries pattern) ─── */
.ra-handbook-attendance-entry {
    margin-bottom: 1rem;
}
.ra-handbook-attendance-entry:last-of-type {
    margin-bottom: 0;
}
.ra-handbook-attendance-label {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 0.8125rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--ra-accent);
    margin: 0 0 0.25rem;
}
.ra-handbook-attendance-entry p {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.9375rem;
    line-height: 1.55;
    color: var(--ra-text-sec);
    margin: 0;
}

/* ─── Alert box (monthlyClosure inside attendance) ─── */
.ra-handbook-alert {
    margin-top: 1.5rem;
    padding: 1rem 1.25rem;
    background: var(--ra-surface-alt);
    border: 1px solid var(--ra-accent);
    border-radius: 12px;
}
.ra-handbook-alert .ra-handbook-attendance-label {
    margin-top: 0;
}

/* ─── 3-col grid (pickUp inside attendance) ─── */
.ra-handbook-grid-3 {
    display: grid;
    grid-template-columns: 1fr;
    gap: 0.75rem;
    margin: 0.5rem 0;
}
@media (min-width: 768px) {
    .ra-handbook-grid-3 { grid-template-columns: repeat(3, 1fr); }
}
.ra-handbook-grid-3 .ra-handbook-card {
    padding: 1rem;
}

/* ─── Quote block (teachers.quote) ─── */
.ra-handbook-quote {
    margin: 1.5rem 0 0;
    padding: 0.5rem 0 0.5rem 1rem;
    border-left: 2px solid var(--ra-accent);
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.9375rem;
    font-style: italic;
    line-height: 1.55;
    color: var(--ra-text-sec);
}

/* ─── Teacher card (numbered) ─── */
.ra-handbook-teacher-card .ra-handbook-teacher-num {
    display: block;
    font-family: 'Quicksand', system-ui, sans-serif;
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--ra-accent);
    margin-bottom: 0.5rem;
}
.ra-handbook-teacher-card h4 {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 0.9375rem;
    font-weight: 600;
    color: var(--ra-text);
    margin: 0 0 0.5rem;
}
.ra-handbook-teacher-card p {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.8125rem;
    line-height: 1.55;
    color: var(--ra-text-sec);
    margin: 0;
}

/* ─── Program note (italic accent text in programs section) ─── */
.ra-handbook-program-note {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.875rem !important;
    font-style: italic;
    color: var(--ra-accent) !important;
    margin: 1rem 0 0 !important;
}

/* ─── Emphasized text (consequences, late payment) ─── */
.ra-handbook-emphasis {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.9375rem;
    font-weight: 500;
    color: var(--ra-text) !important;
    margin: 1rem 0 0 !important;
}
.ra-handbook-emphasis-accent {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.9375rem;
    font-style: italic;
    color: var(--ra-accent) !important;
    margin: 1.5rem 0 0 !important;
}

/* ─── Promise closing (font-medium body text) ─── */
.ra-handbook-promise-closing {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 1rem;
    font-weight: 500;
    color: var(--ra-text) !important;
    margin: 1.5rem 0 0 !important;
}

/* ─── Callout (abuseViolence: surface-alt block w/ accent left border) ─── */
.ra-handbook-callout {
    margin-top: 1.5rem;
    padding: 1.25rem 1.5rem;
    background: var(--ra-surface-alt);
    border-left: 3px solid var(--ra-accent);
    border-radius: 8px;
}
.ra-handbook-callout h3 {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 1rem;
    font-weight: 600;
    color: var(--ra-text);
    margin: 0 0 0.5rem;
}
.ra-handbook-callout p {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.9375rem;
    line-height: 1.55;
    color: var(--ra-text-sec);
    margin: 0;
}

/* ─── Signoff variation (signature/signatory/title order) ─── */
.ra-handbook-signoff-signature {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.9375rem;
    font-weight: 500;
    color: var(--ra-text);
    margin: 0;
}

/* ─── Belief (closing section, dark-bg centered white text) ─── */
.ra-handbook-belief {
    padding: 4rem 0;
    background: var(--ra-dark-bg);
}
@media (min-width: 768px) {
    .ra-handbook-belief { padding: 5rem 0; }
}
.ra-handbook-belief-inner {
    max-width: 900px;
    margin: 0 auto;
    padding: 0 1rem;
    text-align: center;
}
.ra-handbook-belief p {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 1.25rem;
    font-weight: 500;
    line-height: 1.55;
    color: #fff;
    margin: 0;
}
@media (min-width: 768px) {
    .ra-handbook-belief p { font-size: 1.5rem; }
}

/* ─── Definition rows (emergency.definitions / sites in company hb) ─── */
.ra-handbook-def-row {
    padding: 0.5rem 0;
    border-bottom: 1px solid var(--ra-border);
}
.ra-handbook-def-row:last-child {
    border-bottom: 0;
}
.ra-handbook-def-row strong {
    display: block;
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--ra-text);
    margin-bottom: 0.125rem;
}
.ra-handbook-def-row span {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.875rem;
    line-height: 1.5;
    color: var(--ra-text-sec);
}

/* ─── Program Rates grid (Tuition section) ─── */
.ra-handbook-rate-note {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.875rem;
    line-height: 1.55;
    color: var(--ra-text-sec);
    margin: 0 0 1.25rem;
}
.ra-handbook-rates-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1rem;
    margin: 0 0 1.5rem;
}
@media (min-width: 600px) {
    .ra-handbook-rates-grid { grid-template-columns: repeat(2, 1fr); }
}
.ra-handbook-rate-card {
    display: flex;
    flex-direction: column;
    padding: 1.5rem;
}
.ra-handbook-rate-card h3 {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 1.0625rem;
    font-weight: 600;
    color: var(--ra-text);
    margin: 0.25rem 0 1rem;
}
.ra-handbook-rate-row {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 0.75rem;
    padding: 0.5rem 0;
    border-bottom: 1px dashed var(--ra-border);
}
.ra-handbook-rate-row:last-child { border-bottom: 0; }
.ra-handbook-rate-row--total {
    margin-top: 0.25rem;
    padding-top: 0.75rem;
    border-top: 1px solid var(--ra-border);
    border-bottom: 0;
}
.ra-handbook-rate-label {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.8125rem;
    color: var(--ra-text-sec);
}
.ra-handbook-rate-value {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.9375rem;
    font-weight: 500;
    color: var(--ra-text);
    text-align: right;
}
.ra-handbook-rate-reduction {
    color: var(--ra-accent);
}
.ra-handbook-rate-row--total .ra-handbook-rate-label {
    font-weight: 600;
    color: var(--ra-text);
    font-size: 0.875rem;
}
.ra-handbook-rate-final {
    font-size: 1.125rem;
    font-weight: 700;
    color: var(--ra-color-blue);
}

/* ─── Rate CTA (call button below rates) ─── */
.ra-handbook-rate-cta {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.75rem;
    padding: 1rem 1.25rem;
    background: var(--ra-surface-alt);
    border-radius: 12px;
    margin: 0 0 1.5rem;
}
@media (min-width: 600px) {
    .ra-handbook-rate-cta {
        flex-direction: row;
        align-items: center;
        justify-content: space-between;
    }
}
.ra-handbook-rate-cta p {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.9375rem;
    color: var(--ra-text);
    margin: 0;
}
.ra-handbook-rate-cta-btn {
    display: inline-flex;
    align-items: center;
    flex-shrink: 0;
    padding: 0.625rem 1.25rem;
    background: var(--ra-color-blue);
    color: var(--ra-color-orbit);
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.875rem;
    font-weight: 600;
    text-decoration: none;
    border-radius: 100px;
    transition: background 0.18s, transform 0.18s, box-shadow 0.18s;
}
.ra-handbook-rate-cta-btn:hover {
    background: var(--ra-accent-dark);
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(66, 165, 245, 0.3);
}

/* ═════════════════════════════════════════════════════════════
   END HANDBOOK PAGES
   ═════════════════════════════════════════════════════════════ */

/* ═════════════════════════════════════════════════════════════
   INFO PAGES (founder, locations, contact, careers, partnerships, store)
   Lives in /info/<slug>.html — shares chrome with handbooks.
   ═════════════════════════════════════════════════════════════ */

/* ─── Shared info-page hero (eyebrow + headline + sub) ─── */
.ra-info-hero {
    position: relative;
    padding: 4rem 0 3rem;
    overflow: hidden;
    background: linear-gradient(135deg, #F5F9FC 0%, #DDE9F4 100%);
}
@media (min-width: 768px) {
    .ra-info-hero { padding: 5rem 0 4rem; }
}

/* Light-speed streaks background. The SVG is loaded as <img> from
   /plugins/hero-streaks.svg, sized to cover the hero. Overlay above
   it softens contrast so headlines read clean. Same layering pattern
   as program .ra-hero. */
.ra-info-hero-bg {
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    overflow: hidden;
}
.ra-info-hero-bg img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
/* Tilted wings logo overlay (v29). Sits ABOVE the streaks but BELOW
   the soft-radial overlay, so the overlay naturally fades it without
   needing a per-pixel gradient on the logo itself.

   Implementation as a ::before pseudo-element on .ra-info-hero so we
   don't have to touch the HTML of all 6 info pages — purely a CSS
   addition. The wings PNG sits oversized in the top-right region of
   the hero, tilted ~14° clockwise, at 0.18 opacity. Adjust with the
   tunable knobs below.

   Tradeoffs of this placement:
    - Top-right keeps the visual mass out of the center where the
      headline + sub sit, so it doesn't compete with the text.
    - Sitting under the overlay means at the very edges it fades to
      near-invisible, which is the desired "fades out" character.
    - On mobile, the tilt + scale stays the same but we reduce its
      apparent size by pulling it further off-canvas top-right. */
.ra-info-hero::before,
.ra-founder-hero::before {
    content: "";
    position: absolute;
    /* Position oversized in the top-right corner. The negative
       right + top values pull the logo partially off-canvas so only
       a portion of the wings shows — a "peeking" effect rather than
       a centered decorative mark. */
    top: -8%;
    right: -6%;
    width: 520px;          /* wider box: wings PNG is 800x520 (aspect 1.54:1) */
    height: 340px;
    background-image: url("wings-black.png");
    background-repeat: no-repeat;
    background-position: center;
    background-size: contain;
    /* 14° clockwise tilt — feels intentional without being chaotic. */
    transform: rotate(14deg);
    transform-origin: center center;
    opacity: 0.12;         /* lower than the old logo since black ink is heavier than the
                              circle+wings composite — 0.12 reads as a soft watermark, not a mark */
    /* z:0 puts this on the same stacking layer as the bg + overlay;
       the overlay (declared after) paints on top, naturally veiling
       the wings. ::after if we want it above the overlay later. */
    z-index: 0;
    pointer-events: none;
}
@media (max-width: 768px) {
    .ra-info-hero::before,
    .ra-founder-hero::before {
        width: 340px;
        height: 220px;
        top: -10%;
        right: -14%;
        opacity: 0.09;     /* softer still on mobile */
    }
}
/* On the founder hero, the right side is occupied by the portrait
   card on desktop, so move the tilted wings to the top-left and
   flip the rotation. Mirrors the silhouette balance on the page. */
@media (min-width: 768px) {
    .ra-founder-hero::before {
        right: auto;
        left: -6%;
        transform: rotate(-14deg);
    }
}
.ra-info-hero-overlay {
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    /* Soft radial: lighter at center where text sits, gentle veil
       toward the edges. Lets streaks read without overwhelming. */
    background: radial-gradient(ellipse at center,
        rgba(255,255,255,0.55) 0%,
        rgba(255,255,255,0.85) 100%);
}
.ra-info-hero-inner {
    position: relative;
    z-index: 1;
    max-width: 900px;
    margin: 0 auto;
    padding: 0 1.5rem;
    text-align: center;
}
.ra-info-hero-eyebrow {
    display: inline-block;
    font-family: 'Quicksand', system-ui, sans-serif;
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.14em;
    color: var(--ra-accent);
    margin-bottom: 0.875rem;
}
.ra-info-hero-headline {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: clamp(2rem, 4.5vw, 3.25rem);
    font-weight: 800;
    line-height: 1.05;
    letter-spacing: -0.02em;
    color: var(--ra-text);
    margin: 0 0 1.25rem;
}
.ra-info-hero-sub {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: clamp(1rem, 1.6vw, 1.125rem);
    line-height: 1.55;
    color: var(--ra-text-sec);
    max-width: 680px;
    margin: 0 auto;
}

/* ═════════════════════════════════════════════════════════════
   FOUNDER PAGE
   ═════════════════════════════════════════════════════════════ */
.ra-founder-hero {
    position: relative;
    padding: 3.5rem 0 3rem;
    overflow: hidden;
    background: linear-gradient(135deg, #F5F9FC 0%, #DDE9F4 100%);
}
@media (min-width: 768px) {
    .ra-founder-hero { padding: 5rem 0 4rem; }
}
.ra-founder-hero-inner {
    position: relative;
    z-index: 1;
    max-width: 960px;
    margin: 0 auto;
    padding: 0 1.5rem;
    display: flex;
    flex-direction: column-reverse;
    align-items: center;
    justify-content: center;
    gap: 2.5rem;
}
@media (min-width: 768px) {
    .ra-founder-hero-inner {
        flex-direction: row;
        align-items: center;
        justify-content: center;
        gap: 3.5rem;
    }
}
.ra-founder-hero-text {
    flex: 0 1 540px;
    max-width: 540px;
    text-align: center;
}
@media (min-width: 768px) {
    .ra-founder-hero-text { text-align: left; }
}
.ra-founder-hero-text .ra-info-hero-headline {
    margin-top: 0.875rem;
}
.ra-founder-hero-text .ra-info-hero-sub {
    margin: 1.25rem auto 0;
}
@media (min-width: 768px) {
    .ra-founder-hero-text .ra-info-hero-sub { margin-left: 0; margin-right: 0; }
}
.ra-founder-portrait-card {
    flex-shrink: 0;
    text-align: center;
    width: 240px;
}
.ra-founder-portrait-frame {
    width: 200px;
    height: 200px;
    margin: 0 auto;
    padding: 0.875rem;
    background: var(--ra-surface);
    border: 2px solid #C0D0E0;
    border-radius: 16px;
    box-shadow: 0 4px 24px rgba(0, 0, 0, 0.06);
}
@media (min-width: 768px) {
    .ra-founder-portrait-frame {
        width: 220px;
        height: 220px;
    }
}
.ra-founder-portrait-frame img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 50%;
    border: 4px solid #fff;
    box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
    background: var(--ra-surface-alt);
}
.ra-founder-portrait-name {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 1rem;
    font-weight: 600;
    color: var(--ra-text);
    margin: 1rem 0 0.125rem;
}
.ra-founder-portrait-title {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.875rem;
    color: var(--ra-accent);
    margin: 0;
}

/* By the Numbers band — sits between hero and Origin Story.
   Inherits .ra-locations-stats layout; this modifier tightens
   spacing and tints the band so it visually bridges the
   gradient hero above and the white prose below. */
.ra-founder-stats {
    padding: 2rem 0 2.5rem;
    background: linear-gradient(180deg, #F0F4F8 0%, var(--ra-bg) 100%);
}
@media (min-width: 768px) {
    .ra-founder-stats { padding: 2.5rem 0 3rem; }
}
.ra-founder-stats .ra-locations-stats-inner {
    gap: 2.5rem;
}
/* Longer labels like "CHILDCARE CAPACITY" need a touch more room than
   the locations band's defaults — bump min-width so they don't wrap,
   and trim tracking just a hair so the line fits in mobile columns. */
.ra-founder-stats .ra-locations-stat {
    min-width: 120px;
}
.ra-founder-stats .ra-locations-stat-label {
    font-size: 0.7rem;
    letter-spacing: 0.10em;
    white-space: nowrap;
}
@media (max-width: 600px) {
    .ra-founder-stats .ra-locations-stats-inner {
        gap: 1.25rem 1.75rem;
    }
    .ra-founder-stats .ra-locations-stat-num {
        font-size: clamp(1.85rem, 7vw, 2.5rem);
    }
}

/* Founder content sections */
.ra-founder-section {
    padding: 2.5rem 0;
    background: var(--ra-bg);
}
@media (min-width: 768px) {
    .ra-founder-section { padding: 4rem 0; }
}
.ra-founder-section--alt {
    background: var(--ra-surface-alt);
}
.ra-founder-section-inner {
    max-width: 760px;
    margin: 0 auto;
    padding: 0 1.5rem;
}
.ra-founder-section-eyebrow {
    display: inline-block;
    font-family: 'Quicksand', system-ui, sans-serif;
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    color: var(--ra-accent);
    margin-bottom: 0.5rem;
}
.ra-founder-section-title {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: clamp(1.375rem, 2.5vw, 1.75rem);
    font-weight: 700;
    line-height: 1.2;
    color: var(--ra-text);
    margin: 0.25rem 0 1.25rem;
}
.ra-founder-section-body {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 1rem;
    line-height: 1.7;
    color: var(--ra-text-sec);
    margin: 0.5rem 0 0;
}
.ra-founder-stack {
    display: flex;
    flex-direction: column;
    gap: 2.5rem;
}
.ra-founder-quote-attribution {
    margin-top: 1rem;
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.875rem;
    color: rgba(255, 255, 255, 0.55);
    text-align: center;
}
.ra-founder-closing {
    margin: 1rem 0 0;
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.9375rem;
    color: rgba(255, 255, 255, 0.65);
    font-style: italic;
}

/* ═════════════════════════════════════════════════════════════
   PRIVACY PAGE
   ─────────────────────────────────────────────────────────────
   Reuses .ra-founder-section* for the alternating section
   pattern (white ↔ pale tint) but adds three privacy-specific
   block types that the founder page doesn't have:

     · .ra-privacy-callout       — the tinted box with thick blue
                                    left border ("The short version.",
                                    Privacy Officer card)
     · .ra-privacy-card          — plain bordered sub-card (used inside
                                    "Information you share with us" and
                                    "The few cases")
     · .ra-privacy-bullets       — bullet list with custom blue dots
                                    (used under "Why we need it")

   The hero variant .ra-info-hero--plain strips the gradient bg
   and streaks SVG, left-aligns the text, and lets the page open
   on plain white — matches the privacy hero in the React build.
   ═════════════════════════════════════════════════════════════ */

/* ─── Hero variant for plainer pages (privacy, terms, etc.) ─── */
.ra-info-hero--plain {
    background: var(--ra-bg);
    padding: 4rem 0 1.5rem;
}
@media (min-width: 768px) {
    .ra-info-hero--plain { padding: 5.5rem 0 2rem; }
}
.ra-info-hero--plain .ra-info-hero-inner {
    max-width: 760px;
    text-align: left;
}
.ra-info-hero--plain .ra-info-hero-sub {
    margin: 0;          /* override centering from base .ra-info-hero-sub */
}

/* ─── Section heading sits in the same constrained column as
       founder sections (760px), but the privacy renderer uses a
       slightly larger h2 to match the React build's hierarchy. */
.ra-privacy-section .ra-founder-section-title {
    font-size: clamp(1.625rem, 3vw, 2.125rem);
    margin-top: 0.5rem;
}

/* ─── Tinted callout (short-version, contact card) ─── */
.ra-privacy-callout {
    margin: 1.25rem 0 0;
    padding: 1.5rem 1.75rem;
    background: var(--ra-surface-alt);
    border-left: 4px solid var(--ra-color-blue);
    border-radius: 12px;
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 1rem;
    line-height: 1.7;
    color: var(--ra-text);
}
@media (min-width: 768px) {
    .ra-privacy-callout {
        padding: 2rem 2.25rem;
    }
}
.ra-privacy-callout > * + * {
    /* Vertical rhythm between paragraphs inside the callout */
    margin-top: 1rem;
}
.ra-privacy-callout a {
    color: var(--ra-color-academy);
    text-decoration: underline;
    text-underline-offset: 2px;
}
/* Inside a .ra-founder-section--alt (pale-blue bg), the callout's
   tint would disappear — switch it to white-on-tint so it still
   reads as a separated block. */
.ra-founder-section--alt .ra-privacy-callout {
    background: #FFFFFF;
}
.ra-privacy-callout-title {
    display: block;
    font-family: 'DM Sans', system-ui, sans-serif;
    font-weight: 700;
    font-size: 1.125rem;
    color: var(--ra-text);
    margin: 0 0 0.5rem;
}

/* ─── Plain bordered sub-card (used inside "what we collect",
       "the few cases", and the photos/media list) ─── */
.ra-privacy-cards {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    margin-top: 1.25rem;
}
@media (min-width: 768px) {
    .ra-privacy-cards { gap: 1.25rem; }
}
.ra-privacy-card {
    padding: 1.25rem 1.5rem;
    background: var(--ra-bg);
    border: 1px solid var(--ra-border);
    border-radius: 12px;
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 1rem;
    line-height: 1.65;
    color: var(--ra-text-sec);
}
@media (min-width: 768px) {
    .ra-privacy-card { padding: 1.5rem 1.75rem; }
}
.ra-privacy-card h3 {
    margin: 0 0 0.625rem;
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 1.125rem;
    font-weight: 700;
    color: var(--ra-color-academy);
}
.ra-privacy-card p {
    margin: 0;
    color: var(--ra-text-sec);
}
.ra-privacy-card p + p {
    margin-top: 0.75rem;
}
/* On the pale-blue background, the bordered card needs an explicit
   white fill so its 1px border still reads as a separator. */
.ra-founder-section--alt .ra-privacy-card {
    background: #FFFFFF;
}

/* ─── Lead-in inline-bold pattern. Used inside .ra-privacy-card
       for the "The few cases" list and the "Photos and media"
       list, where each card starts with a bold blue phrase
       (e.g. "With your permission.") followed by regular prose. */
.ra-privacy-card .ra-privacy-leadin {
    color: var(--ra-color-academy);
    font-weight: 700;
}

/* ─── Bullet list with blue dots (used for "Why we need it") ─── */
.ra-privacy-bullets {
    margin: 1rem 0 0;
    padding: 0;
    list-style: none;
}
.ra-privacy-bullets li {
    position: relative;
    padding-left: 1.5rem;
    margin: 0.875rem 0;
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 1rem;
    line-height: 1.65;
    color: var(--ra-text-sec);
}
.ra-privacy-bullets li::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0.55rem;
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--ra-color-blue);
}

/* ─── Footer for "effective date" stamp ─── */
.ra-privacy-effective {
    margin-top: 2.5rem;
    padding-top: 1.5rem;
    border-top: 1px solid var(--ra-border);
    font-family: 'Quicksand', system-ui, sans-serif;
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.14em;
    color: var(--ra-text-muted);
}

/* ═════════════════════════════════════════════════════════════
   LOCATIONS PAGE
   ═════════════════════════════════════════════════════════════ */
.ra-locations-section {
    padding: 2rem 0 3.5rem;
    background: var(--ra-bg);
}
.ra-locations-section-inner {
    max-width: 1000px;
    margin: 0 auto;
    padding: 0 1.5rem;
}
.ra-locations-grid {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
}
.ra-locations-program-row {
    display: inline-flex;
    flex-wrap: wrap;
    gap: 0.375rem;
}
.ra-locations-program-pill {
    display: inline-flex;
    align-items: center;
    height: 1.5rem;
    padding: 0 0.75rem;
    background: var(--ra-color-blue);
    color: var(--ra-color-orbit);
    font-family: 'Quicksand', system-ui, sans-serif;
    font-size: 0.6875rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    border-radius: 100px;
}
.ra-locations-card-header {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.625rem;
    margin-bottom: 0.875rem;
}
.ra-locations-card-header h3 {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 1.25rem;
    font-weight: 600;
    color: var(--ra-text);
    margin: 0;
}
.ra-locations-address {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.9375rem;
    color: var(--ra-text-sec);
    margin: 0 0 0.25rem;
}

/* Locations CTA banner */
.ra-locations-cta {
    padding: 4rem 0;
    background: var(--ra-surface-alt);
    text-align: center;
}
@media (min-width: 768px) {
    .ra-locations-cta { padding: 5rem 0; }
}
.ra-locations-cta-inner {
    max-width: 760px;
    margin: 0 auto;
    padding: 0 1.5rem;
}
.ra-locations-cta-inner h2 {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: clamp(1.5rem, 3vw, 2rem);
    font-weight: 700;
    line-height: 1.2;
    color: var(--ra-text);
    margin: 0 0 0.75rem;
}
.ra-locations-cta-inner p {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 1rem;
    line-height: 1.55;
    color: var(--ra-text-sec);
    margin: 0 0 1.75rem;
}
.ra-locations-cta-btn {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    height: 3rem;
    padding: 0 1.75rem;
    background: var(--ra-color-blue);
    color: var(--ra-color-orbit);
    font-family: 'Quicksand', system-ui, sans-serif;
    font-size: 0.875rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    text-decoration: none;
    border-radius: 100px;
    transition: background 0.18s, transform 0.18s, box-shadow 0.18s;
}
.ra-locations-cta-btn:hover {
    background: var(--ra-accent-dark);
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(66, 165, 245, 0.3);
}

/* ═════════════════════════════════════════════════════════════
   CONTACT PAGE
   ═════════════════════════════════════════════════════════════ */
.ra-contact-section {
    padding: 2rem 0 3rem;
    background: var(--ra-bg);
}
.ra-contact-section-inner {
    max-width: 900px;
    margin: 0 auto;
    padding: 0 1.5rem;
}
.ra-contact-card-label {
    display: block;
    font-family: 'Quicksand', system-ui, sans-serif;
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    color: var(--ra-accent);
    margin-bottom: 0.5rem;
}
.ra-contact-card-value {
    display: inline-block;
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 1.0625rem;
    font-weight: 500;
    color: var(--ra-text);
    text-decoration: none;
    transition: color 0.18s;
}
.ra-contact-card-value:hover {
    color: var(--ra-accent);
}

/* Contact form */
.ra-contact-form-section {
    padding: 3rem 0 5rem;
    background: var(--ra-surface-alt);
}
.ra-contact-form-inner {
    max-width: 600px;
    margin: 0 auto;
    padding: 0 1.5rem;
}
.ra-contact-form-inner h2 {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: clamp(1.375rem, 2.5vw, 1.75rem);
    font-weight: 700;
    color: var(--ra-text);
    margin: 0 0 0.5rem;
    text-align: center;
}
.ra-contact-form-sub {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.9375rem;
    line-height: 1.55;
    color: var(--ra-text-sec);
    margin: 0 0 2rem;
    text-align: center;
}
.ra-contact-form {
    display: flex;
    flex-direction: column;
    gap: 1.125rem;
}
.ra-contact-form-row {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.125rem;
}
@media (min-width: 600px) {
    .ra-contact-form-row { grid-template-columns: 1fr 1fr; }
}
.ra-contact-form-field {
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
    min-width: 0;
}
.ra-contact-form-label {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--ra-text);
}
.ra-contact-form-field input,
.ra-contact-form-field textarea {
    width: 100%;
    box-sizing: border-box;
    padding: 0.75rem 0.875rem;
    background: var(--ra-surface);
    border: 1px solid var(--ra-border);
    border-radius: 10px;
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.9375rem;
    color: var(--ra-text);
    transition: border-color 0.18s, box-shadow 0.18s;
}
.ra-contact-form-field textarea {
    resize: vertical;
    min-height: 7.5rem;
    font-family: 'Inter', system-ui, sans-serif;
}
.ra-contact-form-field input:focus,
.ra-contact-form-field textarea:focus {
    outline: none;
    border-color: var(--ra-color-blue);
    box-shadow: 0 0 0 3px rgba(66, 165, 245, 0.15);
}
.ra-contact-form-submit {
    align-self: flex-start;
    margin-top: 0.5rem;
    padding: 0.875rem 2rem;
    background: var(--ra-color-blue);
    color: var(--ra-color-orbit);
    font-family: 'Quicksand', system-ui, sans-serif;
    font-size: 0.875rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    border: 0;
    border-radius: 100px;
    cursor: pointer;
    transition: background 0.18s, transform 0.18s, box-shadow 0.18s;
}
.ra-contact-form-submit:hover {
    background: var(--ra-accent-dark);
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(66, 165, 245, 0.3);
}

/* ═════════════════════════════════════════════════════════════
   CAREERS / PARTNERSHIPS (shared "sections" pattern)
   ═════════════════════════════════════════════════════════════ */
.ra-info-sections {
    padding: 2rem 0 5rem;
    background: var(--ra-bg);
}
.ra-info-sections-inner {
    max-width: 900px;
    margin: 0 auto;
    padding: 0 1.5rem;
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
}

/* ─── Numbered eyebrow + body layout for section cards ─── */
.ra-info-section-card {
    display: flex;
    gap: 1.5rem;
    align-items: flex-start;
    padding: 1.75rem 2rem;
    background: var(--ra-surface);
    border: 1px solid var(--ra-border);
    border-radius: 16px;
    transition: border-color 0.2s, transform 0.2s, box-shadow 0.2s;
}
.ra-info-section-card:hover {
    border-color: var(--ra-color-blue);
    transform: translateY(-1px);
    box-shadow: 0 4px 20px rgba(66, 165, 245, 0.08);
}
.ra-info-section-card-num {
    flex-shrink: 0;
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 1.5rem;
    font-weight: 700;
    line-height: 1;
    color: var(--ra-color-blue);
    letter-spacing: -0.02em;
    min-width: 2.5rem;
}
.ra-info-section-card-body {
    flex: 1;
}
.ra-info-section-card-body h3 {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 1.125rem;
    font-weight: 600;
    color: var(--ra-text);
    margin: 0 0 0.625rem;
}
.ra-info-section-card-body p {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.9375rem;
    line-height: 1.6;
    color: var(--ra-text-sec);
    margin: 0;
}

/* ─── Locations stat band (numbers) ─── */
.ra-locations-stats {
    padding: 1.5rem 0 3rem;
    background: var(--ra-bg);
}
.ra-locations-stats-inner {
    max-width: 800px;
    margin: 0 auto;
    padding: 0 1.5rem;
    display: flex;
    justify-content: center;
    gap: 3rem;
    flex-wrap: wrap;
}
.ra-locations-stat {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    min-width: 80px;
}
.ra-locations-stat-num {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: clamp(2.5rem, 5vw, 3.5rem);
    font-weight: 800;
    line-height: 1;
    color: var(--ra-color-blue);
    letter-spacing: -0.02em;
}
.ra-locations-stat-label {
    font-family: 'Quicksand', system-ui, sans-serif;
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.14em;
    color: var(--ra-text-sec);
    margin-top: 0.5rem;
}

/* ─── Locations card — numbered + meta row ─── */
.ra-locations-card {
    display: flex;
    gap: 1.5rem;
    padding: 1.75rem;
    background: var(--ra-surface);
    border: 1px solid var(--ra-border);
    border-radius: 16px;
    transition: border-color 0.2s, transform 0.2s, box-shadow 0.2s;
}
.ra-locations-card:hover {
    border-color: var(--ra-color-blue);
    transform: translateY(-1px);
    box-shadow: 0 4px 20px rgba(66, 165, 245, 0.08);
}
.ra-locations-card-num {
    flex-shrink: 0;
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 1.5rem;
    font-weight: 700;
    line-height: 1;
    color: var(--ra-color-blue);
    letter-spacing: -0.02em;
    min-width: 2.5rem;
}
.ra-locations-card-body {
    flex: 1;
}
.ra-locations-card-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem 1.5rem;
    margin-top: 0.5rem;
}
.ra-locations-phone,
.ra-locations-map {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.9375rem;
    font-weight: 500;
    color: var(--ra-accent);
    text-decoration: none;
    transition: color 0.18s;
}
.ra-locations-phone:hover,
.ra-locations-map:hover {
    color: var(--ra-accent-dark);
}
.ra-locations-phone svg,
.ra-locations-map svg {
    width: 14px;
    height: 14px;
}

/* ─── Contact 3-card grid with icons ─── */
.ra-contact-grid--three {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1rem;
}
@media (min-width: 720px) {
    .ra-contact-grid--three {
        grid-template-columns: repeat(3, 1fr);
    }
}
.ra-contact-card {
    padding: 2rem 1.25rem;
    background: var(--ra-surface);
    border: 1px solid var(--ra-border);
    border-radius: 14px;
    text-align: center;
    transition: border-color 0.2s, transform 0.2s, box-shadow 0.2s;
    display: flex;
    flex-direction: column;
    align-items: center;
}
.ra-contact-card:hover {
    border-color: var(--ra-color-blue);
    transform: translateY(-1px);
    box-shadow: 0 4px 20px rgba(66, 165, 245, 0.08);
}
.ra-contact-card-icon {
    width: 48px;
    height: 48px;
    margin-bottom: 0.875rem;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--ra-surface-alt);
    color: var(--ra-color-blue);
    border-radius: 50%;
}
.ra-contact-card-icon svg {
    width: 22px;
    height: 22px;
}
.ra-contact-card-hint {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.8125rem;
    color: var(--ra-text-sec);
    margin: 0.375rem 0 0;
}

/* ═════════════════════════════════════════════════════════════
   STORE PAGE — trust pills, catalog, scholarship mission, help CTA
   ═════════════════════════════════════════════════════════════ */
.ra-store-badges {
    padding: 0 0 2rem;
    background: var(--ra-bg);
}
.ra-store-badges-inner {
    max-width: 900px;
    margin: 0 auto;
    padding: 0 1.5rem;
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 0.75rem;
}
.ra-store-pill {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 1rem;
    background: var(--ra-surface);
    border: 1px solid var(--ra-border);
    border-radius: 100px;
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.8125rem;
    font-weight: 500;
    color: var(--ra-text-sec);
}
.ra-store-pill svg {
    width: 14px;
    height: 14px;
    color: var(--ra-color-blue);
}

.ra-store-catalog {
    padding: 2rem 0 4rem;
    background: var(--ra-bg);
}
.ra-store-catalog-inner {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 1.5rem;
}

/* Filter toolbar */
.store-toolbar {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
    margin-bottom: 2rem;
    padding-bottom: 1.25rem;
    border-bottom: 1px solid var(--ra-border);
}
.store-filters {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}
.store-filter {
    appearance: none;
    border: 1px solid var(--ra-border);
    background: var(--ra-surface);
    color: var(--ra-text-sec);
    padding: 0.4rem 1rem;
    border-radius: 100px;
    font-family: 'Quicksand', system-ui, sans-serif;
    font-size: 0.8125rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    cursor: pointer;
    transition: all 0.18s;
}
.store-filter:hover {
    border-color: var(--ra-color-blue);
    color: var(--ra-text);
}
.store-filter.active {
    background: var(--ra-color-blue);
    border-color: var(--ra-color-blue);
    color: var(--ra-color-orbit);
}
.store-count {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.875rem;
    color: var(--ra-text-sec);
}

/* Product grid */
.store-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.5rem;
}
@media (min-width: 600px) {
    .store-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 900px) {
    .store-grid { grid-template-columns: repeat(3, 1fr); }
}
@media (min-width: 1200px) {
    .store-grid { grid-template-columns: repeat(4, 1fr); }
}

/* Product cards (rendered by JS into .store-grid) */
.store-card {
    background: var(--ra-surface);
    border: 1px solid var(--ra-border);
    border-radius: 14px;
    overflow: hidden;
    cursor: pointer;
    transition: border-color 0.2s, transform 0.2s, box-shadow 0.2s;
    display: flex;
    flex-direction: column;
}
.store-card:hover {
    border-color: var(--ra-color-blue);
    transform: translateY(-2px);
    box-shadow: 0 6px 20px rgba(66, 165, 245, 0.1);
}
.store-card-image {
    position: relative;
    aspect-ratio: 1 / 1;
    background: var(--ra-surface-alt);
    overflow: hidden;
}
.store-card-image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.4s ease;
}
.store-card:hover .store-card-image img {
    transform: scale(1.04);
}
.store-card-body {
    padding: 1rem 1.125rem 1.25rem;
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
    flex: 1;
}
.store-card-eyebrow {
    font-family: 'Quicksand', system-ui, sans-serif;
    font-size: 0.6875rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    color: var(--ra-color-blue);
}
.store-card-title {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 1rem;
    font-weight: 600;
    color: var(--ra-text);
    margin: 0;
    line-height: 1.3;
}
.store-card-price {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.9375rem;
    font-weight: 600;
    color: var(--ra-text);
    margin-top: auto;
}
.store-card-price-from {
    font-weight: 400;
    color: var(--ra-text-sec);
    font-size: 0.8125rem;
    margin-right: 0.25rem;
}
/* Card meta row (variant summary + "Quick view" affordance) and the
   alt/hover image + sold-out badge. These sub-elements are emitted by
   store.html's productCardHtml() but weren't in the original React
   stylesheet, so they're defined here to complete the card. */
.store-card-meta {
    display: flex;
    align-items: center;
    margin-top: 0.5rem;
    font-family: 'Quicksand', system-ui, sans-serif;
    font-size: 0.75rem;
    font-weight: 500;
    letter-spacing: 0.02em;
    color: var(--ra-text-sec);
}
.store-card-variants {
    text-transform: capitalize;
}
/* Sold-out badge, top-left over the image. */
.store-card-badge {
    position: absolute;
    top: 0.625rem;
    left: 0.625rem;
    z-index: 2;
    font-family: 'Quicksand', system-ui, sans-serif;
    font-size: 0.6875rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    padding: 0.25rem 0.5rem;
    border-radius: 6px;
    background: rgba(0, 0, 0, 0.72);
    color: #fff;
}
.store-card-badge.oos { background: rgba(0, 0, 0, 0.72); }
/* Alt image: a second product photo cross-faded in on hover. Sits
   absolutely over the primary image; opacity flips on card hover.
   If a product has no alt image, this element isn't rendered. */
.store-card-image-alt {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    opacity: 0;
    transition: opacity 0.4s ease;
    z-index: 1;
}
.store-card:hover .store-card-image-alt { opacity: 1; }
/* Filter hide state — set by the category filter buttons. */
.store-card.is-hidden { display: none; }

/* ════════════════════════════════════════════════════════════════
   PARTNERSHIPS — discrete partner blocks (v29)
   Each partner gets a self-contained block: logo + name + outbound
   link header, an intro paragraph, a "what we do together" bullet
   list, and a closing pull-quote. Preceded by a lead-in intro and
   followed by a territory acknowledgement + "Let's partner" CTA.
   ════════════════════════════════════════════════════════════════ */
.ra-partners-intro {
    padding: 2.5rem 0 0.5rem;
    background: var(--ra-bg);
}
.ra-partners-intro-inner {
    max-width: 760px;
    margin: 0 auto;
    padding: 0 1.5rem;
}
.ra-partners-intro p {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 1.0625rem;
    line-height: 1.7;
    color: var(--ra-text-sec);
    margin: 0;
    text-align: center;
}
.ra-partners {
    padding: 2.5rem 0 1.5rem;
    background: var(--ra-bg);
}
.ra-partners-inner {
    max-width: 920px;
    margin: 0 auto;
    padding: 0 1.5rem;
    display: flex;
    flex-direction: column;
    gap: 2rem;
}
.ra-partner-block {
    border: 1px solid var(--ra-border);
    border-radius: 18px;
    background: var(--ra-surface);
    padding: 2rem;
    transition: box-shadow 0.2s, border-color 0.2s;
}
@media (min-width: 768px) {
    .ra-partner-block { padding: 2.5rem; }
}
.ra-partner-block:hover {
    border-color: var(--ra-color-blue);
    box-shadow: 0 8px 30px rgba(0, 0, 0, 0.06);
}
.ra-partner-head {
    display: flex;
    align-items: center;
    gap: 1.25rem;
    flex-wrap: wrap;
    padding-bottom: 1.25rem;
    margin-bottom: 1.25rem;
    border-bottom: 1px solid var(--ra-border);
}
.ra-partner-logo {
    flex-shrink: 0;
    width: 96px;
    height: 96px;
    border-radius: 12px;
    background: #fff;
    border: 1px solid var(--ra-border);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 10px;
    overflow: hidden;
}
.ra-partner-logo img {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
}
.ra-partner-head-text {
    flex: 1;
    min-width: 200px;
}
.ra-partner-name {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: clamp(1.25rem, 2.5vw, 1.5rem);
    font-weight: 700;
    color: var(--ra-text);
    margin: 0 0 0.25rem;
    line-height: 1.2;
}
.ra-partner-tagline {
    font-family: 'Quicksand', system-ui, sans-serif;
    font-size: 0.9375rem;
    font-weight: 600;
    color: var(--ra-color-blue);
    margin: 0 0 0.5rem;
}
.ra-partner-link {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--ra-color-blue);
    text-decoration: none;
    transition: gap 0.18s;
}
.ra-partner-link:hover { gap: 0.6rem; text-decoration: underline; }
.ra-partner-intro {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 1rem;
    line-height: 1.7;
    color: var(--ra-text-sec);
    margin: 0 0 1.25rem;
}
.ra-partner-bullets {
    list-style: none;
    margin: 0 0 1.5rem;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.625rem;
}
.ra-partner-bullets li {
    position: relative;
    padding-left: 1.75rem;
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.9375rem;
    line-height: 1.55;
    color: var(--ra-text);
}
.ra-partner-bullets li::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0.45em;
    width: 0.6rem;
    height: 0.6rem;
    border-radius: 50%;
    background: var(--ra-color-blue);
    box-shadow: 0 0 0 4px rgba(66, 165, 245, 0.15);
}
.ra-partner-quote {
    margin: 0;
    padding: 1.25rem 1.5rem;
    border-left: 3px solid var(--ra-color-blue);
    background: var(--ra-bg);
    border-radius: 0 12px 12px 0;
}
.ra-partner-quote p {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 1.0625rem;
    line-height: 1.6;
    font-style: italic;
    color: var(--ra-text);
    margin: 0 0 0.5rem;
}
.ra-partner-quote-author {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.8125rem;
    font-weight: 600;
    font-style: normal;
    color: var(--ra-text-sec);
}
.ra-partners-ack {
    padding: 1.5rem 0 2.5rem;
    background: var(--ra-bg);
}
.ra-partners-ack-inner {
    max-width: 760px;
    margin: 0 auto;
    padding: 0 1.5rem;
}
.ra-partners-ack p {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.9375rem;
    line-height: 1.7;
    color: var(--ra-text-sec);
    margin: 0;
    text-align: center;
    font-style: italic;
}
.ra-partner-cta {
    padding: 3rem 0 4.5rem;
    background: var(--ra-bg);
}
.ra-partner-cta-inner {
    max-width: 680px;
    margin: 0 auto;
    padding: 2.5rem 1.5rem;
    text-align: center;
    border-radius: 18px;
    background: linear-gradient(135deg, #F5F9FC 0%, #DDE9F4 100%);
}
.ra-partner-cta-inner h2 {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: clamp(1.5rem, 3vw, 2rem);
    font-weight: 700;
    color: var(--ra-text);
    margin: 0 0 0.75rem;
}
.ra-partner-cta-inner p {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 1rem;
    line-height: 1.6;
    color: var(--ra-text-sec);
    margin: 0 0 1.5rem;
}
.ra-partner-cta-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    justify-content: center;
}
.ra-partner-cta-btn {
    display: inline-flex;
    align-items: center;
    padding: 0.75rem 1.5rem;
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.9375rem;
    font-weight: 600;
    text-decoration: none;
    border-radius: 10px;
    background: var(--ra-color-blue);
    color: #fff;
    border: 1px solid var(--ra-color-blue);
    transition: background 0.18s, transform 0.18s;
}
.ra-partner-cta-btn:hover { transform: translateY(-1px); }
.ra-partner-cta-btn--ghost {
    background: transparent;
    color: var(--ra-color-blue);
}
.ra-partner-cta-btn--ghost:hover { background: rgba(66, 165, 245, 0.08); }

/* ════════════════════════════════════════════════════════════════
   CAREERS — job blocks + perks + apply form (v29)
   ════════════════════════════════════════════════════════════════ */
.ra-careers-intro {
    padding: 2.5rem 0 0.5rem;
    background: var(--ra-bg);
}
.ra-careers-intro-inner {
    max-width: 760px;
    margin: 0 auto;
    padding: 0 1.5rem;
}
.ra-careers-intro p {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 1.0625rem;
    line-height: 1.7;
    color: var(--ra-text-sec);
    margin: 0;
    text-align: center;
}
.ra-jobs {
    padding: 2.5rem 0 1.5rem;
    background: var(--ra-bg);
}
.ra-jobs-inner {
    max-width: 860px;
    margin: 0 auto;
    padding: 0 1.5rem;
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
}
.ra-job-block {
    border: 1px solid var(--ra-border);
    border-radius: 16px;
    background: var(--ra-surface);
    padding: 1.75rem;
    transition: box-shadow 0.2s, border-color 0.2s;
}
@media (min-width: 768px) {
    .ra-job-block { padding: 2rem; }
}
.ra-job-block:hover {
    border-color: var(--ra-color-blue);
    box-shadow: 0 8px 30px rgba(0, 0, 0, 0.06);
}
.ra-job-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
    margin-bottom: 0.875rem;
}
.ra-job-title {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: clamp(1.15rem, 2.2vw, 1.375rem);
    font-weight: 700;
    color: var(--ra-text);
    margin: 0 0 0.4rem;
    line-height: 1.2;
}
.ra-job-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem 1.25rem;
}
.ra-job-meta-item {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.8125rem;
    color: var(--ra-text-sec);
}
.ra-job-apply-btn {
    flex-shrink: 0;
    appearance: none;
    border: 1px solid var(--ra-color-blue);
    background: var(--ra-color-blue);
    color: #fff;
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.875rem;
    font-weight: 600;
    padding: 0.55rem 1.1rem;
    border-radius: 10px;
    cursor: pointer;
    transition: transform 0.18s, background 0.18s;
}
.ra-job-apply-btn:hover { transform: translateY(-1px); }
.ra-job-summary {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 1rem;
    line-height: 1.65;
    color: var(--ra-text-sec);
    margin: 0 0 1.25rem;
}
.ra-job-resp h4 {
    font-family: 'Quicksand', system-ui, sans-serif;
    font-size: 0.8125rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--ra-text);
    margin: 0 0 0.625rem;
}
.ra-job-resp ul {
    list-style: none;
    margin: 0 0 1.25rem;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}
.ra-job-resp li {
    position: relative;
    padding-left: 1.5rem;
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.9375rem;
    line-height: 1.5;
    color: var(--ra-text);
}
.ra-job-resp li::before {
    content: "›";
    position: absolute;
    left: 0.25rem;
    top: 0;
    color: var(--ra-color-blue);
    font-weight: 700;
}
.ra-job-qualities {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.9375rem;
    line-height: 1.55;
    color: var(--ra-text-sec);
    margin: 0;
    padding-top: 0.75rem;
    border-top: 1px solid var(--ra-border);
}
.ra-job-qualities strong { color: var(--ra-text); }
.ra-careers-perks {
    padding: 2rem 0;
    background: var(--ra-bg);
}
.ra-careers-perks-inner {
    max-width: 760px;
    margin: 0 auto;
    padding: 2rem 1.5rem;
    border-radius: 16px;
    background: linear-gradient(135deg, #F5F9FC 0%, #DDE9F4 100%);
}
.ra-careers-perks-inner h2 {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: clamp(1.25rem, 2.5vw, 1.625rem);
    font-weight: 700;
    color: var(--ra-text);
    margin: 0 0 1rem;
    text-align: center;
}
.ra-careers-perks-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.625rem;
    max-width: 560px;
    margin: 0 auto;
}
.ra-careers-perks-list li {
    position: relative;
    padding-left: 1.75rem;
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.9375rem;
    line-height: 1.5;
    color: var(--ra-text);
}
.ra-careers-perks-list li::before {
    content: "★";
    position: absolute;
    left: 0;
    top: 0;
    color: var(--ra-color-blue);
}
.ra-apply {
    padding: 3rem 0 4.5rem;
    background: var(--ra-bg);
}
.ra-apply-inner {
    max-width: 680px;
    margin: 0 auto;
    padding: 0 1.5rem;
}
.ra-apply-inner h2 {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: clamp(1.5rem, 3vw, 2rem);
    font-weight: 700;
    color: var(--ra-text);
    margin: 0.5rem 0 0.75rem;
}
.ra-apply-intro {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 1rem;
    line-height: 1.65;
    color: var(--ra-text-sec);
    margin: 0 0 1.75rem;
}
.ra-apply-form {
    display: flex;
    flex-direction: column;
    gap: 1.125rem;
}
.ra-apply-row {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.125rem;
}
@media (min-width: 600px) {
    .ra-apply-row { grid-template-columns: 1fr 1fr; }
}
.ra-apply-field {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
}
.ra-apply-label {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--ra-text);
}
.ra-apply-field input,
.ra-apply-field select,
.ra-apply-field textarea {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.9375rem;
    color: var(--ra-text);
    background: var(--ra-surface);
    border: 1px solid var(--ra-border);
    border-radius: 10px;
    padding: 0.7rem 0.85rem;
    width: 100%;
    box-sizing: border-box;
    transition: border-color 0.18s, box-shadow 0.18s;
}
.ra-apply-field input:focus,
.ra-apply-field select:focus,
.ra-apply-field textarea:focus {
    outline: none;
    border-color: var(--ra-color-blue);
    box-shadow: 0 0 0 3px rgba(66, 165, 245, 0.15);
}
.ra-apply-field textarea { resize: vertical; }
.ra-apply-file input {
    padding: 0.5rem;
    font-size: 0.875rem;
    cursor: pointer;
}
.ra-apply-actions {
    display: flex;
    align-items: center;
    gap: 1rem;
    flex-wrap: wrap;
    margin-top: 0.25rem;
}
.ra-apply-submit {
    appearance: none;
    border: 0;
    background: var(--ra-color-blue);
    color: #fff;
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.9375rem;
    font-weight: 600;
    padding: 0.8rem 1.75rem;
    border-radius: 10px;
    cursor: pointer;
    transition: transform 0.18s, background 0.18s;
}
.ra-apply-submit:hover:not(:disabled) { transform: translateY(-1px); }
.ra-apply-submit:disabled { opacity: 0.6; cursor: default; }
.ra-apply-status {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.875rem;
    font-weight: 500;
}
.ra-apply-status.is-success { color: #2e9e5b; }
.ra-apply-status.is-error { color: #e05252; }
.ra-apply-note {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.875rem;
    color: var(--ra-text-sec);
    margin: 1.25rem 0 0;
    text-align: center;
}

/* ─── Cart drawer ─── */
.store-cart-overlay {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.4);
    z-index: 1100;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.25s;
}
.store-cart-overlay.open {
    opacity: 1;
    pointer-events: auto;
}
.store-cart-drawer {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    width: 100%;
    max-width: 420px;
    background: var(--ra-surface);
    z-index: 1200;
    transform: translateX(100%);
    transition: transform 0.32s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    flex-direction: column;
    box-shadow: -8px 0 32px rgba(0, 0, 0, 0.12);
}
.store-cart-drawer.open { transform: translateX(0); }
.cart-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 1.25rem 1.5rem;
    border-bottom: 1px solid var(--ra-border);
}
.cart-header h3 {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 1.125rem;
    font-weight: 600;
    color: var(--ra-text);
    margin: 0;
}
.cart-close {
    appearance: none;
    background: none;
    border: 0;
    padding: 0.25rem;
    cursor: pointer;
    color: var(--ra-text-sec);
    transition: color 0.18s;
}
.cart-close:hover { color: var(--ra-text); }
.cart-body {
    flex: 1;
    overflow-y: auto;
    padding: 1rem 1.5rem;
}
.cart-empty {
    text-align: center;
    padding: 3rem 1rem;
    color: var(--ra-text-sec);
    font-size: 0.9375rem;
}
.cart-line {
    display: grid;
    grid-template-columns: 60px 1fr auto;
    gap: 0.875rem;
    padding: 0.875rem 0;
    border-bottom: 1px solid var(--ra-border);
}
.cart-line:last-child { border-bottom: 0; }
.cart-line-img {
    width: 60px;
    height: 60px;
    background: var(--ra-surface-alt);
    border-radius: 8px;
    object-fit: cover;
}
.cart-line-body { display: flex; flex-direction: column; gap: 0.25rem; }
.cart-line-name { font-size: 0.875rem; font-weight: 600; color: var(--ra-text); margin: 0; }
.cart-line-variant { font-size: 0.75rem; color: var(--ra-text-sec); }
.cart-line-controls {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    margin-top: 0.25rem;
}
.cart-line-controls button {
    width: 22px;
    height: 22px;
    appearance: none;
    border: 1px solid var(--ra-border);
    background: var(--ra-surface);
    border-radius: 6px;
    cursor: pointer;
    font-size: 0.875rem;
    color: var(--ra-text);
}
.cart-line-controls button:hover { border-color: var(--ra-color-blue); }
.cart-line-controls .qty-value {
    min-width: 22px;
    text-align: center;
    font-size: 0.875rem;
    color: var(--ra-text);
}
.cart-line-remove {
    appearance: none;
    margin-left: 0.5rem;
    padding: 0.25rem 0.625rem;
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.7rem;
    font-weight: 600;
    color: var(--ra-text-sec);
    background: var(--ra-surface);
    border: 1px solid var(--ra-border);
    border-radius: 6px;
    cursor: pointer;
    transition: border-color 0.18s, color 0.18s, background 0.18s;
}
.cart-line-remove:hover {
    color: #fff;
    background: #e05252;
    border-color: #e05252;
}
.cart-line-price {
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--ra-text);
    text-align: right;
}
.cart-footer {
    border-top: 1px solid var(--ra-border);
    padding: 1.25rem 1.5rem;
    background: var(--ra-bg);
}
.cart-totals {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 0.75rem;
}
.cart-totals.subtotal {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 1rem;
    font-weight: 600;
    color: var(--ra-text);
}
.cart-fineprint {
    font-size: 0.75rem;
    color: var(--ra-text-sec);
    margin: 0 0 1rem;
    line-height: 1.5;
}
.cart-checkout {
    width: 100%;
    appearance: none;
    border: 0;
    padding: 0.875rem 1rem;
    background: var(--ra-color-blue);
    color: var(--ra-color-orbit);
    border-radius: 100px;
    font-family: 'Quicksand', system-ui, sans-serif;
    font-size: 0.875rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    transition: background 0.18s, transform 0.18s, box-shadow 0.18s;
}
.cart-checkout:hover {
    background: var(--ra-accent-dark);
    transform: translateY(-1px);
    box-shadow: 0 4px 14px rgba(66, 165, 245, 0.3);
}
.cart-checkout:disabled {
    opacity: 0.5;
    cursor: not-allowed;
    transform: none;
    box-shadow: none;
}

/* Cart trigger button (floating bottom-right) */
.store-cart-trigger {
    position: fixed;
    /* Sit at the very bottom-right with minimal padding. The Preston
       chat helper lives at bottom:28px / right:28px, so the cart is
       pulled to the bottom edge and shifted further right than Preston
       to avoid overlapping it. On narrow screens they stack cleanly
       because the cart hugs the corner below Preston's resting spot. */
    bottom: 1rem;
    right: 1rem;
    width: 52px;
    height: 52px;
    appearance: none;
    border: 0;
    background: var(--ra-color-blue);
    color: var(--ra-color-orbit);
    border-radius: 50%;
    cursor: pointer;
    z-index: 960;
    box-shadow: 0 4px 18px rgba(66, 165, 245, 0.4);
    transition: transform 0.18s, box-shadow 0.18s;
    display: flex;
    align-items: center;
    justify-content: center;
}
.store-cart-trigger:hover {
    transform: translateY(-2px) scale(1.04);
    box-shadow: 0 6px 22px rgba(66, 165, 245, 0.5);
}
.store-cart-trigger svg {
    width: 24px;
    height: 24px;
}
.store-cart-count {
    position: absolute;
    top: -4px;
    right: -4px;
    min-width: 22px;
    height: 22px;
    padding: 0 6px;
    background: var(--ra-text);
    color: var(--ra-color-orbit);
    border-radius: 100px;
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 0.75rem;
    font-weight: 700;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.store-cart-count[data-count="0"] {
    display: none;
}

/* Product modal */
.store-modal {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.55);
    z-index: 1300;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.25s;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
}
.store-modal.open {
    opacity: 1;
    pointer-events: auto;
}
.modal-card {
    background: var(--ra-surface);
    border-radius: 18px;
    max-width: 880px;
    width: 100%;
    max-height: 90vh;
    overflow-y: auto;
    display: grid;
    grid-template-columns: 1fr;
    gap: 0;
    position: relative;
}
@media (min-width: 720px) {
    .modal-card { grid-template-columns: 1fr 1fr; }
}
.modal-close {
    position: absolute;
    top: 1rem;
    right: 1rem;
    width: 36px;
    height: 36px;
    appearance: none;
    background: var(--ra-surface);
    border: 1px solid var(--ra-border);
    border-radius: 50%;
    cursor: pointer;
    color: var(--ra-text-sec);
    z-index: 10;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.modal-close:hover { color: var(--ra-text); }
.modal-gallery {
    background: var(--ra-surface-alt);
    padding: 1.5rem;
}
.modal-gallery img {
    width: 100%;
    aspect-ratio: 1 / 1;
    object-fit: cover;
    border-radius: 12px;
    background: var(--ra-surface);
}
.modal-thumbs {
    display: flex;
    gap: 0.5rem;
    margin-top: 0.75rem;
}
.modal-thumbs img {
    width: 60px;
    height: 60px;
    cursor: pointer;
    aspect-ratio: 1 / 1;
    border-radius: 8px;
    object-fit: cover;
    opacity: 0.6;
    transition: opacity 0.18s;
}
.modal-thumbs img.active,
.modal-thumbs img:hover { opacity: 1; }
.modal-body {
    padding: 1.5rem 1.75rem 1.75rem;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}
.modal-eyebrow {
    font-family: 'Quicksand', system-ui, sans-serif;
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    color: var(--ra-color-blue);
}
.modal-title {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--ra-text);
    margin: 0;
}
.modal-price {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--ra-text);
}
.modal-fineprint {
    font-size: 0.75rem;
    color: var(--ra-text-sec);
}
.modal-description {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.9375rem;
    line-height: 1.55;
    color: var(--ra-text-sec);
    margin: 0;
}
.modal-variant {
    margin-top: 0.5rem;
}
.modal-variant-label {
    display: block;
    font-family: 'Quicksand', system-ui, sans-serif;
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--ra-text-sec);
    margin-bottom: 0.5rem;
}
.modal-variant-options {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}
.modal-variant-options button {
    appearance: none;
    background: var(--ra-surface);
    border: 1px solid var(--ra-border);
    padding: 0.45rem 0.875rem;
    border-radius: 8px;
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.875rem;
    color: var(--ra-text);
    cursor: pointer;
    transition: all 0.18s;
}
.modal-variant-options button:hover { border-color: var(--ra-color-blue); }
.modal-variant-options button.active {
    background: var(--ra-color-blue);
    border-color: var(--ra-color-blue);
    color: var(--ra-color-orbit);
}
.modal-actions {
    display: flex;
    gap: 0.75rem;
    margin-top: 0.5rem;
    align-items: center;
}
.modal-qty {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.4rem 0.625rem;
    border: 1px solid var(--ra-border);
    border-radius: 8px;
}
.modal-qty button {
    width: 24px;
    height: 24px;
    appearance: none;
    background: none;
    border: 0;
    cursor: pointer;
    color: var(--ra-text);
    font-size: 1rem;
}
.modal-qty .qty-value {
    min-width: 22px;
    text-align: center;
    font-size: 0.9375rem;
    color: var(--ra-text);
}
.modal-add {
    flex: 1;
    appearance: none;
    border: 0;
    padding: 0.75rem 1.25rem;
    background: var(--ra-color-blue);
    color: var(--ra-color-orbit);
    border-radius: 100px;
    font-family: 'Quicksand', system-ui, sans-serif;
    font-size: 0.875rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    cursor: pointer;
    transition: background 0.18s;
}
.modal-add:hover { background: var(--ra-accent-dark); }
.modal-add:disabled { opacity: 0.5; cursor: not-allowed; }

/* Toast */
.store-toast {
    position: fixed;
    bottom: 1.5rem;
    left: 50%;
    transform: translateX(-50%) translateY(150%);
    background: var(--ra-text);
    color: var(--ra-color-orbit);
    padding: 0.75rem 1.25rem;
    border-radius: 8px;
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.875rem;
    z-index: 1400;
    opacity: 0;
    transition: opacity 0.22s, transform 0.32s cubic-bezier(0.4, 0, 0.2, 1);
    pointer-events: none;
}
.store-toast.show {
    opacity: 1;
    transform: translateX(-50%) translateY(0);
}

/* ─── Store mission section (scholarship explanation) ─── */
.ra-store-mission {
    padding: 4rem 0;
    background: var(--ra-surface-alt);
}
.ra-store-mission-inner {
    max-width: 760px;
    margin: 0 auto;
    padding: 0 1.5rem;
    text-align: center;
}
.ra-store-mission-title {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: clamp(1.5rem, 3vw, 2rem);
    font-weight: 700;
    color: var(--ra-text);
    margin: 0.5rem 0 1.25rem;
}
.ra-store-mission-body {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 1rem;
    line-height: 1.65;
    color: var(--ra-text-sec);
    margin: 0;
}
.ra-store-mission-callout {
    margin-top: 2rem;
    padding: 1.5rem 1.75rem;
    background: var(--ra-surface);
    border-left: 3px solid var(--ra-color-blue);
    border-radius: 8px;
    text-align: left;
}
.ra-store-mission-callout p {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 1rem;
    line-height: 1.5;
    color: var(--ra-text);
    margin: 0 0 0.625rem;
    font-style: italic;
}
.ra-store-mission-attribution {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.8125rem;
    color: var(--ra-text-sec);
}

/* ─── Store help CTA (bottom of page) ─── */
.ra-store-help {
    padding: 4rem 0;
    background: var(--ra-bg);
    text-align: center;
}
.ra-store-help-inner {
    max-width: 700px;
    margin: 0 auto;
    padding: 0 1.5rem;
}
.ra-store-help-title {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: clamp(1.5rem, 3vw, 2rem);
    font-weight: 700;
    color: var(--ra-text);
    margin: 0.5rem 0 1rem;
}
.ra-store-help-body {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 1rem;
    line-height: 1.6;
    color: var(--ra-text-sec);
    margin: 0 0 1.75rem;
}
.ra-store-help-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.875rem;
    justify-content: center;
}
.ra-store-help-btn {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.875rem 1.75rem;
    background: var(--ra-color-blue);
    color: var(--ra-color-orbit);
    font-family: 'Quicksand', system-ui, sans-serif;
    font-size: 0.875rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    text-decoration: none;
    border-radius: 100px;
    transition: background 0.18s, transform 0.18s, box-shadow 0.18s;
}
.ra-store-help-btn:hover {
    background: var(--ra-accent-dark);
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(66, 165, 245, 0.3);
}
.ra-store-help-btn--ghost {
    background: transparent;
    color: var(--ra-color-blue);
    border: 1px solid var(--ra-color-blue);
}
.ra-store-help-btn--ghost:hover {
    background: rgba(66, 165, 245, 0.06);
    color: var(--ra-accent-dark);
    box-shadow: none;
}

/* ═════════════════════════════════════════════════════════════
   END INFO PAGES
   ═════════════════════════════════════════════════════════════ */

/* ═════════════════════════════════════════════════════════════
   CHILDCARE PRICING ACCORDION + CAMP ADD-ONS
   Used by childcare/childcare.html only.
   ═════════════════════════════════════════════════════════════ */

/* ─── Pricing section wrapper ─── */
.ra-childcare-pricing {
    padding: 4rem 0;
    background: var(--ra-surface-alt);
}
@media (min-width: 768px) {
    .ra-childcare-pricing { padding: 5rem 0; }
}
.ra-childcare-pricing-inner {
    max-width: 1100px;
    margin: 0 auto;
    padding: 0 1rem;
}
@media (min-width: 1024px) {
    .ra-childcare-pricing-inner { padding: 0 2rem; }
}
.ra-childcare-pricing h2 {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: clamp(1.75rem, 3.5vw, 2.5rem);
    font-weight: 700;
    color: var(--ra-text);
    text-align: center;
    margin: 0 0 0.75rem;
    letter-spacing: -0.01em;
}
.ra-childcare-pricing-lede {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 1rem;
    line-height: 1.6;
    color: var(--ra-text-sec);
    text-align: center;
    max-width: 720px;
    margin: 0 auto 2.5rem;
}

/* ─── Accordion ─── */
.ra-childcare-accordion {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    margin: 0 0 2rem;
}
.ra-childcare-accordion-item {
    background: var(--ra-surface);
    border: 1px solid var(--ra-border);
    border-radius: 14px;
    overflow: hidden;
    transition: border-color 0.2s, box-shadow 0.2s;
}
.ra-childcare-accordion-item[open] {
    border-color: var(--ra-color-blue);
    box-shadow: 0 4px 16px rgba(66, 165, 245, 0.08);
}
.ra-childcare-accordion-summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 1.25rem 1.5rem;
    cursor: pointer;
    list-style: none;
    -webkit-tap-highlight-color: transparent;
    user-select: none;
}
.ra-childcare-accordion-summary::-webkit-details-marker { display: none; }
.ra-childcare-accordion-summary:hover {
    background: var(--ra-surface-alt);
}
.ra-childcare-accordion-titles {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    flex: 1;
    min-width: 0;
}
.ra-childcare-accordion-name {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 1.125rem;
    font-weight: 600;
    color: var(--ra-text);
}
.ra-childcare-accordion-sub {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.875rem;
    color: var(--ra-text-sec);
}
.ra-childcare-accordion-chevron {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: var(--ra-surface-alt);
    color: var(--ra-color-blue);
    flex-shrink: 0;
    transition: transform 0.25s ease, background 0.2s;
}
.ra-childcare-accordion-chevron svg {
    width: 16px;
    height: 16px;
}
.ra-childcare-accordion-item[open] .ra-childcare-accordion-chevron {
    transform: rotate(180deg);
    background: var(--ra-color-blue);
    color: var(--ra-color-orbit);
}
.ra-childcare-accordion-panel {
    padding: 0 1.5rem 1.5rem;
    border-top: 1px solid var(--ra-border);
    margin-top: 0;
}

/* ─── Rate cards inside the accordion panel ─── */
.ra-childcare-rates-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1rem;
    margin-top: 1.25rem;
}
@media (min-width: 600px) {
    .ra-childcare-rates-grid { grid-template-columns: repeat(2, 1fr); }
}
.ra-childcare-rate-card {
    padding: 1.25rem;
    background: var(--ra-surface-alt);
    border-radius: 12px;
}
.ra-childcare-rate-card h4 {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 1rem;
    font-weight: 600;
    color: var(--ra-text);
    margin: 0 0 0.75rem;
}
.ra-childcare-rate-row {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 0.75rem;
    padding: 0.5rem 0;
    border-bottom: 1px dashed var(--ra-border);
}
.ra-childcare-rate-row:last-child { border-bottom: 0; }
.ra-childcare-rate-row--total {
    margin-top: 0.25rem;
    padding-top: 0.75rem;
    border-top: 1px solid var(--ra-border);
    border-bottom: 0;
}
.ra-childcare-rate-label {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.8125rem;
    color: var(--ra-text-sec);
}
.ra-childcare-rate-value {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.9375rem;
    font-weight: 500;
    color: var(--ra-text);
    text-align: right;
}
.ra-childcare-rate-reduction {
    color: var(--ra-accent);
}
.ra-childcare-rate-row--total .ra-childcare-rate-label {
    font-weight: 600;
    color: var(--ra-text);
    font-size: 0.875rem;
}
.ra-childcare-rate-final {
    font-size: 1.125rem;
    font-weight: 700;
    color: var(--ra-color-blue);
}

/* ─── Pricing CTA (call button below accordion) ─── */
.ra-childcare-pricing-cta {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.75rem;
    padding: 1.25rem 1.5rem;
    background: var(--ra-surface);
    border: 1px solid var(--ra-border);
    border-radius: 12px;
}
@media (min-width: 600px) {
    .ra-childcare-pricing-cta {
        flex-direction: row;
        align-items: center;
        justify-content: space-between;
    }
}
.ra-childcare-pricing-cta p {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.9375rem;
    color: var(--ra-text);
    margin: 0;
}
.ra-childcare-pricing-cta-btn {
    display: inline-flex;
    align-items: center;
    flex-shrink: 0;
    padding: 0.625rem 1.5rem;
    background: var(--ra-color-blue);
    color: var(--ra-color-orbit);
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.875rem;
    font-weight: 600;
    text-decoration: none;
    border-radius: 100px;
    transition: background 0.18s, transform 0.18s, box-shadow 0.18s;
}
.ra-childcare-pricing-cta-btn:hover {
    background: var(--ra-accent-dark);
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(66, 165, 245, 0.3);
}

/* ─── Camp Add-Ons section ─── */
.ra-childcare-camps {
    padding: 4rem 0;
    background: var(--ra-bg);
}
@media (min-width: 768px) {
    .ra-childcare-camps { padding: 5rem 0; }
}
.ra-childcare-camps-inner {
    max-width: 1100px;
    margin: 0 auto;
    padding: 0 1rem;
}
@media (min-width: 1024px) {
    .ra-childcare-camps-inner { padding: 0 2rem; }
}
.ra-childcare-camps-eyebrow {
    display: block;
    text-align: center;
    font-family: 'Quicksand', system-ui, sans-serif;
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    color: var(--ra-accent);
    margin-bottom: 0.75rem;
}
.ra-childcare-camps h2 {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: clamp(1.75rem, 3.5vw, 2.5rem);
    font-weight: 700;
    color: var(--ra-text);
    text-align: center;
    margin: 0 0 0.75rem;
    letter-spacing: -0.01em;
}
.ra-childcare-camps-lede {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 1rem;
    line-height: 1.6;
    color: var(--ra-text-sec);
    text-align: center;
    max-width: 600px;
    margin: 0 auto 2.5rem;
}

/* ─── Two-option choice cards ─── */
.ra-childcare-camps-options {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1rem;
    margin: 0 0 3rem;
}
@media (min-width: 768px) {
    .ra-childcare-camps-options { grid-template-columns: repeat(2, 1fr); }
}
.ra-childcare-camps-option {
    position: relative;
    padding: 2rem 1.75rem 1.75rem;
    background: var(--ra-surface);
    border: 1px solid var(--ra-border);
    border-radius: 14px;
    transition: border-color 0.2s, transform 0.2s, box-shadow 0.2s;
}
.ra-childcare-camps-option:hover {
    border-color: var(--ra-color-blue);
    transform: translateY(-2px);
    box-shadow: 0 8px 24px rgba(66, 165, 245, 0.08);
}
.ra-childcare-camps-option-num {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: var(--ra-color-blue);
    color: var(--ra-color-orbit);
    font-family: 'Quicksand', system-ui, sans-serif;
    font-size: 0.875rem;
    font-weight: 700;
    margin-bottom: 0.75rem;
}
.ra-childcare-camps-option h3 {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 1.125rem;
    font-weight: 600;
    color: var(--ra-text);
    margin: 0 0 0.5rem;
    line-height: 1.3;
}
.ra-childcare-camps-option p {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.9375rem;
    line-height: 1.55;
    color: var(--ra-text-sec);
    margin: 0;
}

/* ─── Hours blocks ─── */
.ra-childcare-camps-hours-title {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 1.25rem;
    font-weight: 600;
    color: var(--ra-text);
    text-align: center;
    margin: 0 0 1.5rem;
}
.ra-childcare-camps-hours {
    display: grid;
    grid-template-columns: 1fr;
    gap: 0.875rem;
    margin: 0 0 2.5rem;
}
@media (min-width: 600px) {
    .ra-childcare-camps-hours { grid-template-columns: repeat(3, 1fr); }
}
.ra-childcare-camps-hours-card {
    padding: 1.25rem 1.25rem 1rem;
    background: var(--ra-surface-alt);
    border-radius: 12px;
    text-align: center;
}
.ra-childcare-camps-hours-card h4 {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 0.9375rem;
    font-weight: 600;
    color: var(--ra-text);
    margin: 0 0 0.5rem;
    line-height: 1.3;
}
.ra-childcare-camps-hours-card p {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.8125rem;
    color: var(--ra-text-sec);
    margin: 0;
    line-height: 1.4;
}
.ra-childcare-camps-hours-time {
    font-family: 'Quicksand', system-ui, sans-serif !important;
    font-size: 0.9375rem !important;
    font-weight: 600 !important;
    color: var(--ra-color-blue) !important;
    margin-top: 0.375rem !important;
}

/* ─── Camp Season Pricing link button ─── */
.ra-childcare-camps-note {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.85rem;
    line-height: 1.55;
    color: var(--ra-text-sec);
    text-align: center;
    margin: 0.75rem auto 0;
    max-width: 640px;
}
.ra-childcare-camps-link {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    margin: 0 auto;
    padding: 0.875rem 1.75rem;
    background: var(--ra-color-blue);
    color: var(--ra-color-orbit);
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.9375rem;
    font-weight: 600;
    text-decoration: none;
    border-radius: 100px;
    transition: background 0.18s, transform 0.18s, box-shadow 0.18s;
}
.ra-childcare-camps-inner > .ra-childcare-camps-link {
    display: flex;
    width: fit-content;
}
.ra-childcare-camps-link:hover {
    background: var(--ra-accent-dark);
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(66, 165, 245, 0.3);
}
.ra-childcare-camps-link svg {
    width: 16px;
    height: 16px;
    flex-shrink: 0;
}

/* ═════════════════════════════════════════════════════════════
   END CHILDCARE PRICING + CAMP ADD-ONS
   ═════════════════════════════════════════════════════════════ */

/* ═════════════════════════════════════════════════════════════
   Reveal animation for entrance (matches Phase 1's pattern)
   ═════════════════════════════════════════════════════════════ */
.ra-reveal {
    opacity: 0;
    transform: translateY(8px);
    transition: opacity 0.6s ease, transform 0.6s ease;
}
.ra-reveal.is-visible {
    opacity: 1;
    transform: translateY(0);
}
@media (prefers-reduced-motion: reduce) {
    .ra-reveal { transition: none; opacity: 1; transform: none; }
}

/* ═════════════════════════════════════════════════════════════
   COMPAT: hide the legacy nav/footer on pages that use .ra-page
   so the old chrome doesn't double up with VariationLayout's nav.
   The home page no longer needs the dark-blue HTML nav drawer.
   ═════════════════════════════════════════════════════════════ */
body.ra-page > nav.nav,        /* old top nav */
body.ra-page > .nav-overlay,   /* drawer overlay */
body.ra-page > .nav-drawer,    /* drawer panel */
body.ra-page > footer:not(.ra-footer) {
    display: none !important;
}

/* ════════════════════════════════════════════════════════════════
   PROGRAM FEATURES (v31) — 2 photos in one centered row (shrunk
   ~25% from full width), with the feature points in a structured
   box BELOW both images. Replaces the old 7-card photo grid;
   reduces scroll on mobile and desktop.
   ════════════════════════════════════════════════════════════════ */
.ra-program-photos {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: stretch;
    gap: 1.25rem;
    margin: 1.5rem auto 0;
    max-width: 720px;   /* ~25% narrower than the old full-width grid */
}
.ra-program-photo-wrap {
    flex: 1 1 300px;
    max-width: 340px;
    aspect-ratio: 4 / 3;
    border-radius: 16px;
    overflow: hidden;
    background: var(--ra-bg);
    box-shadow: 0 6px 24px rgba(0, 0, 0, 0.08);
}
.ra-program-photo {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

/* Feature cards below the photos. Academy/Aquatics use a bold title +
   description (their points are full paragraphs, so a flat dotted list
   would read as a wall of text). Childcare's short one-liners use the
   compact --short variant (title only). Two columns on desktop. */
.ra-program-cards {
    max-width: 860px;
    margin: 1.75rem auto 0;
    display: grid;
    grid-template-columns: 1fr;
    gap: 1rem;
}
@media (min-width: 700px) {
    .ra-program-cards { grid-template-columns: 1fr 1fr; }
}
.ra-program-cards .ra-program-card {
    padding: 1.25rem 1.4rem;
    border: 1px solid var(--ra-border);
    border-radius: 14px;
    background: var(--ra-surface);
    transition: border-color 0.18s, box-shadow 0.18s;
}
.ra-program-cards .ra-program-card:hover {
    border-color: var(--ra-color-blue);
    box-shadow: 0 6px 22px rgba(0, 0, 0, 0.05);
}
.ra-program-cards .ra-program-card-title {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 1.05rem;
    font-weight: 700;
    color: var(--ra-text);
    margin: 0 0 0.5rem;
    line-height: 1.3;
    position: relative;
    padding-left: 1.4rem;
}
.ra-program-cards .ra-program-card-title::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0.4em;
    width: 0.6rem;
    height: 0.6rem;
    border-radius: 50%;
    background: var(--ra-color-blue);
    box-shadow: 0 0 0 4px rgba(66, 165, 245, 0.15);
}
.ra-program-cards .ra-program-card-body {
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 0.95rem;
    line-height: 1.6;
    color: var(--ra-text-sec);
    margin: 0;
    padding-left: 1.4rem;
}
/* Short variant — childcare one-liners: title only, no description,
   tighter cards, no hover bump needed. */
.ra-program-cards .ra-program-card--short {
    padding: 1rem 1.25rem;
}
.ra-program-cards .ra-program-card--short .ra-program-card-title {
    font-size: 1rem;
    font-weight: 600;
    margin: 0;
}

/* ════════════════════════════════════════════════════════════════
   PROGRAM PANEL (v32) — single surrounding container that holds the
   title, the two photos, and the feature cards as one cohesive,
   page-centered block (instead of each element centering on its own
   width). Aligns with the rest of the page content.
   ════════════════════════════════════════════════════════════════ */
.ra-program-panel {
    max-width: 920px;
    margin: 0 auto;
    padding: 2rem 1.5rem 2.25rem;
    border: 1px solid var(--ra-border);
    border-radius: 20px;
    background: var(--ra-surface);
    box-shadow: 0 8px 30px rgba(0, 0, 0, 0.04);
    text-align: center;
}
@media (min-width: 768px) {
    .ra-program-panel { padding: 2.5rem 2.5rem 2.75rem; }
}
/* Title sits inside the panel, centered */
.ra-program-panel > h2 {
    margin-top: 0;
}
/* Inside the panel, photos and cards fill the panel width rather than
   imposing their own narrower max-widths. */
.ra-program-panel .ra-program-photos {
    max-width: 100%;
    margin-top: 1.5rem;
}
.ra-program-panel .ra-program-cards {
    max-width: 100%;
    margin-top: 1.75rem;
    text-align: left;
}

/* ════════════════════════════════════════════════════════════════
   GAP-ANALYSIS SECTIONS (v35) — StoryBrand-driven home page additions.
   Announcement bar, sticky CTA, problem, checklist, 3-step plan,
   CTA strips, safety, stakes, testimonials, founder empathy.
   All tuned to the existing design system (In Space Blue #42A5F5,
   surface-alt #F0F4F8 bands, DM Sans headings).
   ════════════════════════════════════════════════════════════════ */

/* ── Announcement bar (Gap 9) ───────────────────────────────────── */
.ra-announce {
    background: var(--ra-accent-dark);
    color: #fff;
}
.ra-announce-inner {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0.6rem 1.5rem;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 1rem;
    flex-wrap: wrap;
    text-align: center;
}
.ra-announce-text {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 0.92rem;
    font-weight: 600;
    letter-spacing: 0.01em;
}
.ra-announce-cta {
    display: inline-block;
    background: #FFD54F;
    color: #1A1A1A;
    font-family: 'DM Sans', system-ui, sans-serif;
    font-weight: 700;
    font-size: 0.82rem;
    text-decoration: none;
    padding: 0.32rem 0.9rem;
    border-radius: 999px;
    white-space: nowrap;
    transition: background 0.18s, transform 0.18s;
}
.ra-announce-cta:hover { background: #FFCA28; transform: translateY(-1px); }

/* ── Sticky Book-a-Tour button (Gap 3) ──────────────────────────── */
.ra-sticky-cta {
    position: fixed;
    right: 1.25rem;
    bottom: 1.25rem;
    z-index: 1000;
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    background: #FF7043;
    color: #fff;
    font-family: 'DM Sans', system-ui, sans-serif;
    font-weight: 700;
    font-size: 0.95rem;
    text-decoration: none;
    padding: 0.85rem 1.3rem;
    border-radius: 999px;
    box-shadow: 0 8px 24px rgba(255, 112, 67, 0.4);
    opacity: 0;
    visibility: hidden;
    transform: translateY(12px);
    transition: opacity 0.25s, transform 0.25s, visibility 0.25s, background 0.18s;
}
.ra-sticky-cta.is-visible { opacity: 1; visibility: visible; transform: translateY(0); }
.ra-sticky-cta:hover { background: #F4511E; }
@media (max-width: 600px) {
    .ra-sticky-cta { right: 0.85rem; bottom: 0.85rem; padding: 0.75rem 1.1rem; font-size: 0.88rem; }
}

/* ── Shared centered section container ──────────────────────────── */
.ra-problem-inner, .ra-checklist-inner, .ra-steps-inner,
.ra-safety-inner, .ra-stakes-inner, .ra-testimonials-inner,
.ra-cta-strip-inner {
    max-width: 1100px;
    margin: 0 auto;
    padding-left: 1.5rem;
    padding-right: 1.5rem;
}

/* ── Problem section (Gap 5) ────────────────────────────────────── */
/* Goddard-style: the problem + checklist read as one calm, premium
   flow on a soft tinted band, with generous whitespace, large quiet
   typography, and the checklist lifted into a clean white card. */
.ra-problem {
    padding: 5rem 0 2rem;
    text-align: center;
    background: var(--ra-surface-alt);
}
.ra-problem-title {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: clamp(1.75rem, 3.6vw, 2.6rem);
    font-weight: 700;
    color: var(--ra-text);
    line-height: 1.18;
    letter-spacing: -0.01em;
    max-width: 820px;
    margin: 0 auto 1.25rem;
}
.ra-problem-lead {
    font-size: 1.15rem;
    color: var(--ra-text-sec);
    margin: 0 0 2rem;
}
.ra-problem-worries {
    display: flex;
    flex-direction: column;
    gap: 1.1rem;
    max-width: 640px;
    margin: 0 auto 2.25rem;
    position: relative;
}
.ra-problem-worry {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: clamp(1.2rem, 2.4vw, 1.5rem);
    font-weight: 500;
    font-style: italic;
    color: var(--ra-accent-dark);
    line-height: 1.4;
    margin: 0;
    padding: 0;
    background: none;
}
.ra-problem-reassure {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: clamp(1.25rem, 2.6vw, 1.5rem);
    font-weight: 700;
    color: var(--ra-text);
    margin: 0;
}

/* ── Two-column split variant ──────────────────────────────────────
   When the section carries `.ra-problem-split`, the parent-worry copy
   sits on the left and the checklist card sits on the right (instead
   of stacked). The whole tinted band spans the full section so the
   problem section flows into the checklist as one visual block —
   we suppress the standalone `.ra-checklist` band below by overriding
   its padding/background when it's not used. */
.ra-problem-split {
    padding-bottom: 5rem;       /* swallow the checklist's normal bottom padding */
}
.ra-problem-split-inner {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 1.5rem;
    display: grid;
    grid-template-columns: 1fr;
    gap: 2.5rem;
    align-items: center;
    text-align: left;
}
@media (min-width: 900px) {
    .ra-problem-split-inner {
        grid-template-columns: 1fr 1fr;
        gap: 4rem;
    }
}
/* Left cell: parent-worry copy. Override the centered defaults that
   the standalone .ra-problem uses, so the headline + worries + reassure
   align left in this two-column layout. */
.ra-problem-split-copy {
    text-align: left;
}
.ra-problem-split-copy .ra-problem-title { margin-left: 0; margin-right: 0; }
.ra-problem-split-copy .ra-problem-lead  { margin-bottom: 1.5rem; }
.ra-problem-split-copy .ra-problem-worries {
    margin-left: 0;
    margin-right: 0;
    max-width: none;
}
.ra-problem-split-copy .ra-problem-reassure { text-align: left; }

/* Right cell: the checklist card sits inside this cell rather than its
   own section, so its outer .ra-checklist wrapper is omitted in the
   split layout. The .ra-checklist-card styling below still applies. */
.ra-problem-split-list .ra-checklist-card {
    max-width: 560px;
    margin: 0 auto;
}

/* ── Problem checklist (Gap 11) — lifted white card on the band ──── */
.ra-checklist { padding: 1.5rem 0 5rem; background: var(--ra-surface-alt); }
.ra-checklist-inner { max-width: 640px; }
.ra-checklist-card {
    background: #fff;
    border-radius: 24px;
    padding: 2.75rem 2.5rem;
    box-shadow: 0 16px 48px rgba(26, 60, 90, 0.08);
}
@media (max-width: 600px) {
    .ra-checklist-card { padding: 2rem 1.4rem; border-radius: 20px; }
}
.ra-checklist-title {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: clamp(1.5rem, 3vw, 2rem);
    font-weight: 700;
    color: var(--ra-text);
    text-align: center;
    margin: 0 0 2rem;
}
.ra-checklist-list { list-style: none; margin: 0 0 2rem; padding: 0; display: grid; gap: 1.15rem; }
.ra-checklist-item {
    display: flex;
    align-items: flex-start;
    gap: 0.9rem;
    font-size: 1.1rem;
    color: var(--ra-text);
    line-height: 1.5;
    text-align: left;
}
.ra-checklist-icon {
    width: 26px; height: 26px;
    flex: 0 0 auto;
    color: #fff;
    background: var(--ra-color-blue);
    border-radius: 50%;
    padding: 5px;
    margin-top: 1px;
    box-shadow: 0 3px 10px rgba(66, 165, 245, 0.3);
}
.ra-checklist-close {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: clamp(1.15rem, 2.4vw, 1.4rem);
    font-weight: 700;
    color: var(--ra-accent-dark);
    text-align: center;
    margin: 0;
}

/* ── How It Works 3-step (Gap 4) ────────────────────────────────── */
.ra-steps { padding: 4rem 0; background: var(--ra-surface-alt); }
.ra-steps-title {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: clamp(1.6rem, 3vw, 2.2rem);
    font-weight: 700;
    color: var(--ra-text);
    text-align: center;
    margin: 0 0 0.5rem;
}
.ra-steps-sub { text-align: center; color: var(--ra-text-sec); font-size: 1.05rem; margin: 0 0 2.5rem; }
.ra-steps-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.5rem;
    counter-reset: step;
}
@media (min-width: 768px) {
    .ra-steps-grid { grid-template-columns: repeat(3, 1fr); }
}
.ra-step {
    background: #fff;
    border: 1px solid var(--ra-border);
    border-radius: 16px;
    padding: 2rem 1.5rem 1.75rem;
    text-align: center;
    position: relative;
}
.ra-step-num {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 48px; height: 48px;
    background: var(--ra-color-blue);
    color: #fff;
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 1.4rem;
    font-weight: 700;
    border-radius: 50%;
    margin-bottom: 1rem;
}
.ra-step-head {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 1.2rem;
    font-weight: 700;
    color: var(--ra-text);
    margin: 0 0 0.5rem;
}
.ra-step-body { font-size: 0.98rem; color: var(--ra-text-sec); line-height: 1.6; margin: 0; }

/* ── Repeated CTA strips (Gap 8) ────────────────────────────────── */
.ra-cta-strip { padding: 3rem 0; }
.ra-cta-strip--soft { background: var(--ra-surface-alt); }
.ra-cta-strip-inner {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 1.25rem;
    flex-wrap: wrap;
    text-align: center;
}
.ra-cta-strip-text {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 1.3rem;
    font-weight: 700;
    color: var(--ra-text);
    margin: 0;
}

/* ── Safety / trust (Gap 12) ────────────────────────────────────── */
.ra-safety { padding: 4rem 0; }
.ra-safety-title {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: clamp(1.6rem, 3vw, 2.2rem);
    font-weight: 700;
    color: var(--ra-text);
    text-align: center;
    margin: 0 0 2.5rem;
}
.ra-safety-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.5rem;
}
@media (min-width: 768px) {
    .ra-safety-grid { grid-template-columns: repeat(3, 1fr); }
}
.ra-safety-card {
    background: var(--ra-surface-alt);
    border-radius: 16px;
    padding: 2rem 1.5rem;
    text-align: center;
}
.ra-safety-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 56px; height: 56px;
    background: #fff;
    color: var(--ra-color-blue);
    border-radius: 50%;
    margin-bottom: 1rem;
    box-shadow: 0 4px 14px rgba(66, 165, 245, 0.18);
}
.ra-safety-head {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 1.15rem;
    font-weight: 700;
    color: var(--ra-text);
    margin: 0 0 0.5rem;
}
.ra-safety-body { font-size: 0.98rem; color: var(--ra-text-sec); line-height: 1.6; margin: 0; }

/* ── Stakes (Gap 6) ─────────────────────────────────────────────── */
.ra-stakes { padding: 4rem 0; background: #0A1628; color: #fff; text-align: center; }
.ra-stakes-lead {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: clamp(1.4rem, 3vw, 2rem);
    font-weight: 700;
    line-height: 1.3;
    max-width: 780px;
    margin: 0 auto 1.25rem;
}
.ra-stakes-body {
    font-size: 1.05rem;
    color: rgba(255, 255, 255, 0.78);
    line-height: 1.7;
    max-width: 640px;
    margin: 0 auto 1.25rem;
}
.ra-stakes-turn {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--ra-accent-light);
    margin: 0;
}

/* ── Testimonials (Gap 1) ───────────────────────────────────────── */
.ra-testimonials { padding: 4rem 0; }
.ra-testimonials-title {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: clamp(1.6rem, 3vw, 2.2rem);
    font-weight: 700;
    color: var(--ra-text);
    text-align: center;
    margin: 0 0 0.4rem;
}
.ra-testimonials-note {
    text-align: center;
    color: var(--ra-text-muted);
    font-size: 0.85rem;
    font-style: italic;
    margin: 0 0 2.25rem;
}
.ra-testimonials-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.5rem;
}
@media (min-width: 768px) {
    .ra-testimonials-grid { grid-template-columns: repeat(3, 1fr); }
}
.ra-testimonial {
    background: #fff;
    border: 1px solid var(--ra-border);
    border-radius: 16px;
    padding: 1.75rem 1.5rem;
    margin: 0;
    box-shadow: 0 4px 18px rgba(0, 0, 0, 0.04);
}
.ra-testimonial-stars { color: #FFB300; font-size: 1.05rem; letter-spacing: 0.1em; margin-bottom: 0.75rem; }
.ra-testimonial-quote {
    font-size: 1rem;
    color: var(--ra-text);
    line-height: 1.65;
    margin: 0 0 1rem;
    quotes: none;
}
.ra-testimonial-author {
    font-family: 'DM Sans', system-ui, sans-serif;
    font-weight: 700;
    color: var(--ra-accent-dark);
    font-size: 0.95rem;
}

/* ─── Reviews marquee/carousel ──────────────────────────────────────
   The testimonials are authored once in the DOM; ra-marquee.js clones
   the set at load time to create a seamless loop. The viewport clips
   the track, the track is a horizontal flex row with fixed-width cards,
   and the JS animates the track's transform for scrolling. CSS provides
   the layout, fixed card sizing, arrow buttons, hover pause, and a CSS
   keyframe fallback so the carousel still moves even before JS runs
   (and so it works gracefully if JS fails to load). */
.ra-marquee {
    position: relative;
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 3.5rem;     /* room for the arrow buttons on each side */
    overflow: hidden;
}
.ra-marquee-viewport {
    overflow: hidden;
    mask-image: linear-gradient(to right, transparent 0, #000 4%, #000 96%, transparent 100%);
    -webkit-mask-image: linear-gradient(to right, transparent 0, #000 4%, #000 96%, transparent 100%);
}
.ra-marquee-track {
    display: flex;
    gap: 1.25rem;
    width: max-content;
    will-change: transform;
    /* CSS fallback animation — JS-driven scrolling overrides this once
       ra-marquee.js initializes. Slow enough to read each review. */
    animation: ra-marquee-scroll 90s linear infinite;
}
@keyframes ra-marquee-scroll {
    from { transform: translateX(0); }
    to   { transform: translateX(-50%); }  /* the track is cloned so 50% = one full set */
}
.ra-marquee:hover .ra-marquee-track,
.ra-marquee[data-paused="true"] .ra-marquee-track {
    animation-play-state: paused;
}
@media (prefers-reduced-motion: reduce) {
    .ra-marquee-track { animation: none; }
}

/* Each testimonial card inside the marquee — fixed width so the row
   can scroll horizontally. Roughly 3 visible at desktop, fewer on
   smaller screens via flex-shrink:0 + a width clamp. */
.ra-marquee .ra-testimonial {
    flex: 0 0 auto;
    width: clamp(280px, 32%, 360px);
    margin: 0;
    display: flex;
    flex-direction: column;
}
.ra-marquee .ra-testimonial-quote {
    flex: 1 1 auto;        /* push the author to the bottom even if quotes vary in length */
}

/* Prev/next arrow buttons — clean circles flanking the viewport. */
.ra-marquee-arrow {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    z-index: 2;
    width: 44px; height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: #fff;
    color: var(--ra-text);
    border: 1px solid var(--ra-border);
    border-radius: 50%;
    cursor: pointer;
    box-shadow: 0 6px 18px rgba(26, 60, 90, 0.10);
    transition: background 0.18s, transform 0.18s, color 0.18s;
}
.ra-marquee-arrow:hover {
    background: var(--ra-color-blue);
    color: #fff;
    transform: translateY(-50%) scale(1.05);
}
.ra-marquee-arrow svg { width: 20px; height: 20px; }
.ra-marquee-arrow--prev { left: 0.25rem; }
.ra-marquee-arrow--next { right: 0.25rem; }
@media (max-width: 600px) {
    .ra-marquee { padding: 0 0.75rem; }
    /* hide arrows on small screens — let users swipe-scroll the track */
    .ra-marquee-arrow { display: none; }
}

/* "Read more reviews on Facebook →" link below the marquee. Rendered as
   a centered, subtle outlined pill so it reads as a deliberate call-to-
   action rather than a default blue underlined link. */
.ra-testimonials-source {
    text-align: center;
    margin: 2.25rem 0 0;
}
.ra-testimonials-source a {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.7rem 1.25rem;
    background: #fff;
    color: var(--ra-accent-dark);
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 0.95rem;
    font-weight: 700;
    text-decoration: none;
    border: 1px solid var(--ra-border);
    border-radius: 999px;
    box-shadow: 0 2px 8px rgba(26, 60, 90, 0.04);
    transition: background 0.18s, color 0.18s, transform 0.18s, border-color 0.18s;
}
.ra-testimonials-source a:hover {
    background: var(--ra-color-blue);
    color: #fff;
    border-color: var(--ra-color-blue);
    transform: translateY(-1px);
    box-shadow: 0 6px 18px rgba(66, 165, 245, 0.25);
}

/* ── Founder empathy line + CTA (Gap 7, 8) ──────────────────────── */
.ra-founder-empathy {
    font-size: 1.05rem;
    color: var(--ra-text-sec);
    line-height: 1.7;
    font-style: italic;
    max-width: 620px;
    margin: 1.5rem auto 0;
}
.ra-founder-cta { margin-top: 1.75rem; }

/* ── Outcome-first program card sub-label (Gap 10) ──────────────── */
.ra-program-card-sublabel {
    display: block;
    font-family: 'DM Sans', system-ui, sans-serif;
    font-size: 0.8rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--ra-text-muted);
    margin: -0.25rem 0 0.6rem;
}
.ra-program-card--academy .ra-program-card-sublabel { color: rgba(255, 255, 255, 0.6); }
.ra-program-card--aquatics .ra-program-card-sublabel { color: rgba(255, 255, 255, 0.85); }
