/* ===========================================================================
   LTTC site stylesheet.

   Everything below is a straight port of the LTTC design-system components
   (_ds/lttc-design-system-90d4ba5e.../_ds_bundle.js) from React inline styles
   into plain CSS classes. Values come from the token files -- if a number here
   is not a token, it was a literal in the component source too.

   Section order mirrors the design system's own folders:
     core -> forms -> navigation -> patterns -> page sections
   =========================================================================== */

/* --- page scaffolding ---------------------------------------------------- */

html{scroll-behavior:smooth}
body{background:var(--lttc-paper)}

.wrap{max-width:var(--page-max);margin:0 auto}

/* Keep anchored sections clear of the sticky header. site.js measures the
   header and keeps --header-h in sync; the 104px is the desktop fallback. */
[id]{scroll-margin-top:calc(var(--header-h,90px) + 14px)}

.skip-link{position:absolute;left:-9999px;top:0;z-index:300;padding:12px 20px;background:var(--surface-card);border-radius:0 0 var(--radius-md) 0;font-family:var(--font-heading);font-weight:var(--weight-bold)}
.skip-link:focus{left:0}

.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* ===== core ============================================================== */

/* --- Icon --------------------------------------------------------------- */
/* The design system fetched Lucide glyphs from a CDN at runtime. They are
   inlined as an SVG sprite in the document instead, so the page renders
   offline and without a network round-trip per icon. */
.ico{display:block;flex:0 0 auto;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}

/* --- Badge -------------------------------------------------------------- */
.badge{display:inline-flex;align-items:center;gap:6px;padding:5px 14px;border-radius:var(--radius-pill);font-family:var(--font-heading);font-weight:var(--weight-bold);font-size:var(--text-body-sm);line-height:1.3;background:var(--surface-sunken);color:var(--text-body)}
.badge--sm{padding:3px 10px;font-size:var(--text-label)}
.badge--success{background:var(--state-success);color:#fff}
.badge--warning{background:var(--state-warning);color:var(--lttc-navy-deep)}
.badge--danger{background:var(--state-danger);color:#fff}
.badge--info{background:var(--state-info);color:#fff}
.badge--accent{background:var(--brand-accent);color:#fff}

/* --- Button ------------------------------------------------------------- */
.btn{display:inline-flex;width:auto;align-items:center;justify-content:center;gap:var(--space-2);
  font-family:var(--font-heading);font-weight:var(--weight-bold);letter-spacing:var(--tracking-normal);
  text-decoration:none;cursor:pointer;border:none;border-radius:var(--radius-pill);
  box-shadow:var(--shadow-sticker);
  padding:12px 24px;font-size:var(--text-body-md);min-height:44px;
  transition:background var(--duration-fast) var(--ease-out),
             transform var(--duration-fast) var(--ease-bounce),
             box-shadow var(--duration-fast) var(--ease-out)}
.btn:hover{transform:translateY(var(--hover-lift))}
.btn:active{transform:translateY(2px) scale(var(--press-scale));box-shadow:none}
.btn--sm{padding:8px 16px;font-size:var(--text-body-sm);min-height:36px}
.btn--lg{padding:16px 32px;font-size:var(--text-body-lg);min-height:52px}
.btn--block{display:flex;width:100%}

.btn--primary{background:var(--brand-primary);color:var(--text-on-brand)}
.btn--primary:hover{background:var(--brand-primary-hover);color:var(--text-on-brand)}
.btn--secondary{background:var(--brand-secondary);color:var(--lttc-navy-deep)}
.btn--secondary:hover{background:var(--brand-secondary-hover);color:var(--lttc-navy-deep)}
.btn--accent{background:var(--brand-accent);color:var(--text-on-brand)}
.btn--accent:hover{background:var(--brand-accent-hover);color:var(--text-on-brand)}
.btn--navy{background:var(--surface-navy);color:var(--text-on-dark)}
.btn--navy:hover{background:var(--lttc-navy-deep);color:var(--text-on-dark)}
.btn--ghost{background:transparent;color:var(--text-body);border:2px solid var(--border-hairline);box-shadow:none}
.btn--ghost:hover{background:var(--surface-sunken);color:var(--text-body)}
.btn--ghost:active{box-shadow:none}

/* --- Card --------------------------------------------------------------- */
.card{background:var(--surface-card);color:var(--text-body);border-radius:var(--radius-lg);
  padding:var(--space-6);border:1px solid var(--border-hairline);box-shadow:var(--shadow-card)}
.card--accent{border:none;border-top:6px solid var(--card-accent,var(--brand-primary))}
.card--cream{background:var(--surface-card-alt)}

/* --- LetterTiles -------------------------------------------------------- */
.letter-tiles{display:flex;gap:8px}
.letter-tiles__tile{width:42px;height:42px;display:flex;align-items:center;justify-content:center;
  border-radius:var(--radius-sticker);box-shadow:var(--shadow-sticker);
  font-family:var(--font-display);font-size:24.36px;line-height:1;
  color:var(--lttc-yellow);text-shadow:var(--outline-toon-navy)}
.letter-tiles__tile:nth-child(1){background:var(--lttc-red-dark)}
.letter-tiles__tile:nth-child(2){background:var(--lttc-red)}
.letter-tiles__tile:nth-child(3){background:var(--lttc-green)}
.letter-tiles__tile:nth-child(4){background:var(--lttc-pink)}

/* --- Logo --------------------------------------------------------------- */
.logo{display:inline-flex;align-items:center;gap:var(--space-3);text-decoration:none}
.logo__seal{width:var(--logo-size,64px);height:var(--logo-size,64px);border-radius:var(--radius-circle);
  object-fit:cover;box-shadow:var(--shadow-card);flex:0 0 auto}
.logo__wordmark{display:flex;flex-direction:column;line-height:1.05}
.logo__wordmark span{font-family:var(--font-display);font-size:calc(var(--logo-size,64px) * .26);letter-spacing:.01em}
.logo__wordmark span:first-child{color:var(--lttc-navy)}
.logo__wordmark span:last-child{color:var(--brand-primary)}

/* --- StickerTitle ------------------------------------------------------- */
/* Rainbow mode: each letter is its own span, cycling the seven crayon hues. */
.sticker-title{font-family:var(--font-display);line-height:var(--leading-tight);
  letter-spacing:var(--tracking-display);text-transform:uppercase;text-align:center;
  text-shadow:var(--outline-toon);margin:0}
.sticker-title--left{text-align:left}
.sticker-title i{font-style:normal}
.sticker-title i:nth-child(7n+1){color:var(--lttc-red)}
.sticker-title i:nth-child(7n+2){color:var(--lttc-purple)}
.sticker-title i:nth-child(7n+3){color:var(--lttc-green)}
.sticker-title i:nth-child(7n+4){color:var(--lttc-pink)}
.sticker-title i:nth-child(7n+5){color:var(--lttc-orange)}
.sticker-title i:nth-child(7n+6){color:var(--lttc-teal)}
.sticker-title i:nth-child(7n+7){color:var(--lttc-gold)}
.sticker-title i.sp{color:transparent}

/* --- Tag ---------------------------------------------------------------- */
.tag{display:inline-flex;align-items:center;gap:8px;padding:8px 16px;
  border:2px solid var(--tag-color,var(--brand-primary));border-radius:var(--radius-pill);
  background:var(--surface-card);color:var(--tag-color,var(--brand-primary));
  font-family:var(--font-body);font-weight:var(--weight-bold);font-size:var(--text-body-sm)}

/* ===== forms ============================================================= */

.field{display:flex;flex-direction:column;gap:var(--space-2)}
.field__label{font-family:var(--font-heading);font-weight:var(--weight-bold);font-size:var(--text-body-sm);color:var(--text-heading)}
.field__hint{font-size:var(--text-label);color:var(--text-muted)}

.input,.select,.textarea{width:100%;padding:12px 16px;min-height:44px;
  font-family:var(--font-body);font-size:var(--text-body-md);font-weight:var(--weight-medium);
  color:var(--text-body);background:var(--surface-card);border-radius:var(--radius-md);
  border:2px solid var(--border-hairline);box-shadow:var(--shadow-inset-soft);outline:none;
  transition:border-color var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out)}
.input:focus,.select:focus,.textarea:focus{border-color:var(--brand-primary);box-shadow:var(--ring-focus)}
.textarea{min-height:auto;resize:vertical;line-height:var(--leading-normal)}
.select{appearance:none;-webkit-appearance:none;cursor:pointer;padding-right:44px;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2322376e' stroke-width='3' stroke-linecap='round'><path d='M6 9l6 6 6-6'/></svg>");
  background-repeat:no-repeat;background-position:right 14px center;background-size:18px 18px}

/* ===== navigation ======================================================== */

.site-header{position:sticky;top:0;z-index:60;display:flex;align-items:center;gap:var(--space-6);
  padding:var(--space-4) var(--space-6);background:var(--surface-card);
  border-bottom:1px solid var(--border-hairline);box-shadow:var(--shadow-card)}
.site-header .logo{--logo-size:56px}
.site-nav{display:flex;gap:var(--space-2);margin-left:auto;flex-wrap:wrap}
.site-nav a{padding:10px 18px;min-height:44px;display:inline-flex;align-items:center;
  border:none;cursor:pointer;background:transparent;border-radius:var(--radius-pill);
  font-family:var(--font-heading);font-weight:var(--weight-bold);font-size:var(--text-body-md);
  color:var(--text-body);text-decoration:none;box-shadow:none;
  transition:background var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out)}
.site-nav a:hover{background:var(--surface-sunken);color:var(--text-body)}
.site-nav a[aria-current="true"]{background:var(--brand-primary);color:var(--text-on-brand);box-shadow:var(--shadow-sticker)}

/* ===== patterns ========================================================== */

/* --- ContactRow --------------------------------------------------------- */
.contact-row{display:flex;gap:var(--space-3);align-items:center;text-decoration:none;color:inherit}
.contact-row:hover{color:inherit}
/* Rows that are links get a hover cue -- nothing else about them says so. */
a.contact-row:hover .contact-row__value{color:var(--text-link-hover);text-decoration:underline;text-underline-offset:3px}
.contact-row__dot{width:40px;height:40px;flex:0 0 auto;border-radius:var(--radius-circle);
  background:var(--row-color,var(--brand-accent));display:flex;align-items:center;justify-content:center;
  box-shadow:var(--shadow-sticker);color:#fff}
.contact-row__label{font-family:var(--font-heading);font-weight:var(--weight-bold);font-size:var(--text-label);
  color:var(--text-muted);text-transform:uppercase;letter-spacing:var(--tracking-caps)}
.contact-row__value{font-weight:var(--weight-bold);font-size:var(--text-body-md);color:var(--text-body);
  line-height:var(--leading-snug);word-break:break-word}
.contact-row__body{min-width:0}

/* --- PhotoFrame --------------------------------------------------------- */
.photo{margin:0}
.photo--tilt-up{transform:rotate(-2deg)}
.photo--tilt-down{transform:rotate(2deg)}
.photo__frame{aspect-ratio:var(--photo-ratio,4 / 3);overflow:hidden;border-radius:var(--radius-lg);
  background:var(--surface-sunken);border:4px solid var(--border-sticker);box-shadow:var(--shadow-card)}
.photo__frame picture{display:block;width:100%;height:100%}
.photo__frame img{width:100%;height:100%;object-fit:cover;display:block}
.photo figcaption{margin-top:var(--space-2);font-size:var(--text-label);font-weight:var(--weight-bold);
  color:var(--text-muted);text-align:center}

/* --- ProgramCard -------------------------------------------------------- */
.program{display:flex;gap:var(--space-4);align-items:flex-start;padding:var(--space-5)}
.program__dot{width:52px;height:52px;flex:0 0 auto;border-radius:var(--radius-circle);
  background:var(--card-accent);display:flex;align-items:center;justify-content:center;
  box-shadow:var(--shadow-sticker);color:#fff}
.program__body{flex:1;min-width:0}
.program__head{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}
.program__name{font-family:var(--font-heading);font-size:var(--text-heading-sm);font-weight:var(--weight-extrabold);
  color:var(--card-accent);margin:0;text-transform:uppercase;letter-spacing:.02em}
.program__desc{margin:6px 0 0;font-size:var(--text-body-sm);color:var(--text-muted);line-height:var(--leading-normal)}
.program__star{color:var(--card-accent)}

/* --- RibbonHeading ------------------------------------------------------ */
.ribbon{display:flex;justify-content:center}
.ribbon h2{margin:0;padding:10px 28px;background:var(--ribbon-color,var(--brand-accent));color:#fff;
  border-radius:var(--radius-pill);font-family:var(--font-heading);font-weight:var(--weight-extrabold);
  font-size:var(--text-heading-md);text-transform:uppercase;letter-spacing:var(--tracking-caps);
  box-shadow:var(--shadow-sticker);outline:2px dashed rgba(255,255,255,.85);outline-offset:-6px}

/* --- TaglineStrip ------------------------------------------------------- */
.tagline{display:flex;gap:.4em;justify-content:center;flex-wrap:wrap;font-family:var(--font-display);
  font-size:clamp(28px,5vw,46px);line-height:var(--leading-tight);text-transform:uppercase}
.tagline span{text-shadow:var(--outline-toon)}
.tagline span:nth-child(1){color:var(--lttc-pink)}
.tagline span:nth-child(2){color:var(--lttc-purple)}
.tagline span:nth-child(3){color:var(--lttc-green)}

/* ===== page sections ===================================================== */

.section{padding:72px var(--page-pad)}
.section__lead{text-align:center;font-size:17px;color:var(--text-muted);margin:16px auto 0;max-width:56ch}
.section__title{font-family:var(--font-heading);font-weight:var(--weight-extrabold);
  font-size:clamp(26px,3.6vw,34px);color:var(--text-heading);text-align:center;margin:0}

/* auto-fit grid: the design's repeat(auto-fit,minmax(min(100%,N),1fr)) */
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,var(--col,300px)),1fr));gap:var(--gap,18px)}

/* --- Hero --------------------------------------------------------------- */
.hero{position:relative;overflow:hidden;padding:56px var(--page-pad) 140px}
.hero__inner{position:relative;z-index:2;display:grid;
  grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));gap:56px;align-items:center}
.hero__lede{font-size:20px;line-height:1.5;max-width:46ch;margin:20px 0 0;text-wrap:pretty}
.hero__actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:28px}
.hero__note{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:24px}
/* :not(.badge) matters. A bare `.hero__note span` outranks `.badge--success`
   (0,1,1 vs 0,1,0) and silently repainted the badge's white text muted grey --
   2.55:1 on the green, worse than the white it replaced. */
.hero__note span:not(.badge){font-size:var(--text-body-sm);font-weight:var(--weight-semibold);color:var(--text-muted)}
/* The gold arc that swells up out of the About band behind the hero. */
.hero__arc{position:absolute;left:-8%;right:-8%;bottom:-70px;height:180px;background:var(--lttc-gold);
  border-radius:50% 50% 0 0 / 110px 110px;z-index:1}

/* --- About -------------------------------------------------------------- */
.about{background:var(--lttc-gold);padding:8px var(--page-pad) 72px}
.about__card p{font-size:19px;line-height:1.55;margin:0;text-wrap:pretty}
.about__card p + p{margin:18px 0 0;font-weight:var(--weight-bold);color:var(--lttc-teal-dark)}
.about__tags{display:flex;gap:10px;flex-wrap:wrap;margin-top:22px}

/* --- Worry cards (Why LTTC) --------------------------------------------- */
.worry__dot{display:flex;width:52px;height:52px;border-radius:var(--radius-pill);align-items:center;
  justify-content:center;box-shadow:var(--shadow-sticker);color:#fff;background:var(--card-accent)}
.worry h3{font-family:var(--font-heading);font-weight:var(--weight-extrabold);font-size:20px;
  margin:16px 0 0;color:var(--text-heading)}
.worry p{margin:8px 0 0;font-size:var(--text-body-md);line-height:1.5;color:var(--text-muted)}

/* --- Programs ----------------------------------------------------------- */
.programs__pathway{background:var(--surface-card-alt);border:2px dashed var(--lttc-gold-dark);
  border-radius:var(--radius-lg);padding:22px;display:flex;flex-direction:column;justify-content:center;gap:8px}
.programs__pathway-kicker{font-family:var(--font-heading);font-weight:var(--weight-extrabold);
  text-transform:uppercase;letter-spacing:.06em;font-size:var(--text-body-sm);color:var(--lttc-gold-dark)}
.programs__pathway p{margin:0;font-size:var(--text-body-md);line-height:1.5;color:var(--text-body)}
.tutoring{margin-top:44px;padding:26px}
.tutoring__head{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.tutoring__head h3{font-family:var(--font-heading);font-weight:var(--weight-extrabold);font-size:22px;
  margin:0;color:var(--text-heading);text-transform:uppercase;letter-spacing:.04em}

/* --- A day at LTTC ------------------------------------------------------ */
.day{background:var(--lttc-navy);padding:72px var(--page-pad)}
.day .section__title{color:#fff;text-transform:uppercase;letter-spacing:.06em}
.day__lead{text-align:center;color:rgba(255,255,255,.85);font-size:17px;margin:14px auto 0;max-width:56ch}
.day__flow{display:flex;flex-direction:column;margin-top:32px}
.day__row{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:34px;align-items:center}
.day__step{padding:24px}
.day__step-head{display:flex;align-items:center;gap:14px}
.day__num{width:52px;height:52px;flex:0 0 auto;border-radius:var(--radius-pill);background:var(--card-accent);
  color:#fff;display:flex;align-items:center;justify-content:center;font-family:var(--font-display);
  font-size:26px;box-shadow:var(--shadow-sticker)}
.day__num--on-gold{color:var(--lttc-navy-deep)}
.day__step h3{font-family:var(--font-heading);font-weight:var(--weight-extrabold);font-size:21px;margin:0;color:var(--text-heading)}
.day__step p{margin:14px 0 0;font-size:17px;line-height:1.5;color:var(--text-muted)}
.day__squiggle{width:100%;height:88px;display:block;margin:-6px 0}
.day__foot{text-align:center;color:rgba(255,255,255,.72);font-size:var(--text-body-sm);margin:36px 0 0}

/* --- How to enroll ------------------------------------------------------ */
.step{padding:22px}
.step__num{font-family:var(--font-display);font-size:34px;color:var(--card-accent);line-height:1}
.step h3{font-family:var(--font-heading);font-weight:var(--weight-extrabold);font-size:19px;margin:10px 0 0;color:var(--text-heading)}
.step p{margin:8px 0 0;font-size:var(--text-body-md);line-height:1.5;color:var(--text-muted)}

/* --- Gallery ------------------------------------------------------------ */
.gallery{background:var(--surface-card);padding:72px var(--page-pad);
  border-top:1px solid var(--border-hairline);border-bottom:1px solid var(--border-hairline)}
.gallery__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,140px),1fr));gap:14px;margin-top:32px}
.gallery__shot{padding:0;border:4px solid #fff;border-radius:18px;overflow:hidden;cursor:pointer;
  box-shadow:var(--shadow-card);aspect-ratio:1 / 1;background:var(--surface-sunken);display:block;
  transition:transform var(--duration-base) var(--ease-out),box-shadow var(--duration-base) var(--ease-out)}
.gallery__shot:hover{transform:translateY(-3px);box-shadow:0 10px 22px rgba(34,55,110,.2)}
.gallery__shot picture{display:block;width:100%;height:100%}
.gallery__shot img{width:100%;height:100%;object-fit:cover;display:block}

/* --- Lightbox ----------------------------------------------------------- */
/* Deliberately no backdrop-filter here: on a position:fixed full-viewport
   element it blanked the entire page on real Android hardware in the sibling
   site, and DevTools emulation does not reproduce it. A deeper scrim reads
   almost the same. See README, "Do not reintroduce backdrop-filter". */
.lightbox{position:fixed;inset:0;z-index:200;background:rgba(23,38,79,.78);
  display:flex;align-items:center;justify-content:center;padding:32px;border:none}
.lightbox[hidden]{display:none}
.lightbox figure{margin:0;max-width:min(92vw,760px)}
.lightbox picture{display:block}
.lightbox img{width:min(92vw,760px);height:76vh;object-fit:contain;border-radius:var(--radius-lg);
  border:4px solid #fff;background:#fff;box-shadow:0 18px 40px rgba(0,0,0,.4);display:block}
.lightbox figcaption{margin-top:12px;text-align:center;color:#fff;font-weight:var(--weight-bold);font-size:15px}
.lightbox__close{position:absolute;top:20px;right:20px;width:44px;height:44px;border-radius:var(--radius-circle);
  border:none;background:var(--surface-card);color:var(--text-body);cursor:pointer;
  display:flex;align-items:center;justify-content:center;font-size:24px;line-height:1;box-shadow:var(--shadow-sticker)}

/* --- FAQ ---------------------------------------------------------------- */
.faq__list{display:flex;flex-direction:column;gap:12px;margin-top:32px}
.faq__item{background:var(--surface-card);border:1px solid var(--border-hairline);border-radius:var(--radius-lg);
  box-shadow:var(--shadow-card);overflow:hidden}
.faq__q{width:100%;min-height:56px;display:flex;align-items:center;justify-content:space-between;gap:16px;
  text-align:left;padding:18px 22px;background:transparent;border:none;cursor:pointer;
  font-family:var(--font-heading);font-weight:var(--weight-extrabold);font-size:18px;color:var(--text-heading)}
.faq__q:hover{background:var(--surface-sunken)}
.faq__sign{font-family:var(--font-heading);font-size:24px;color:var(--lttc-teal);line-height:1}
.faq__a{margin:0;padding:0 22px 20px;font-size:17px;line-height:1.55;color:var(--text-muted)}
.faq__a[hidden]{display:none}

/* --- Contact ------------------------------------------------------------ */
.contact{background:var(--surface-card-alt);padding:72px var(--page-pad)}
.contact__card{display:flex;flex-direction:column;gap:20px;padding:26px}
.contact__map{border:4px solid #fff;border-radius:var(--radius-lg);overflow:hidden;
  box-shadow:var(--shadow-card);background:var(--surface-sunken)}
.contact__map iframe{width:100%;height:360px;border:0;display:block}

/* --- Enroll ------------------------------------------------------------- */
.enroll__title{font-family:var(--font-display);font-size:clamp(28px,4.6vw,40px);color:var(--lttc-navy);
  text-align:center;margin:0;text-transform:uppercase;text-shadow:var(--outline-toon)}
.enroll__lead{text-align:center;font-size:17px;color:var(--text-muted);margin:14px auto 0;max-width:52ch}
.enroll__form{margin-top:32px;padding:28px;display:grid;
  grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:18px}
.enroll__form .span-all{grid-column:1 / -1}
.enroll__submit{grid-column:1 / -1;display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.enroll__submit span{font-size:var(--text-body-sm);color:var(--text-muted)}
.enroll__done{margin-top:32px;padding:32px;text-align:center}
.enroll__done h3{font-family:var(--font-heading);font-weight:var(--weight-extrabold);font-size:24px;margin:0;color:var(--text-heading)}
.enroll__done p{font-size:17px;line-height:1.55;color:var(--text-muted);margin:12px auto 0;max-width:46ch}
.enroll__done-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:22px}
[hidden]{display:none !important}

/* --- Tagline band + footer ---------------------------------------------- */
.band{background:var(--lttc-navy);padding:64px var(--page-pad);text-align:center}
.band p{color:rgba(255,255,255,.85);margin:18px 0 0;font-size:20px;font-weight:var(--weight-semibold)}

.footer{background:var(--surface-card);border-top:1px solid var(--border-hairline);padding:44px var(--page-pad)}
.footer__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:36px}
.footer__blurb{font-size:15px;color:var(--text-muted);margin:16px 0 0;max-width:34ch}
.footer__col{display:flex;flex-direction:column;gap:10px}
.footer__col--contact{gap:16px}
.footer__head{font-family:var(--font-heading);font-weight:var(--weight-bold);font-size:var(--text-label);
  letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted)}
.footer__col a{font-weight:var(--weight-bold);font-size:15px}
.footer__legal{max-width:var(--page-max);margin:32px auto 0;font-size:var(--text-label);color:var(--text-muted);text-align:center}

/* ===== responsive ======================================================== */

/* Below the wrap width the header's six nav pills would stack into three
   rows. Scroll them sideways instead so the header stays one band tall. */
@media (max-width:900px){
  .site-header{gap:var(--space-3);padding:var(--space-3) var(--space-4)}
  .site-header .logo{--logo-size:44px}
  .site-nav{flex-wrap:nowrap;overflow-x:auto;margin-left:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .site-nav::-webkit-scrollbar{display:none}
  .site-nav a{white-space:nowrap;padding:8px 14px;font-size:var(--text-body-sm)}
}
@media (max-width:560px){
  .site-header{flex-wrap:wrap;gap:var(--space-2);padding:10px 12px}
  .site-header .logo{--logo-size:40px}
  .site-nav{order:3;width:100%;margin-left:0;gap:var(--space-1)}
  .site-nav a{min-height:36px;padding:6px 12px}
  .site-header .btn{margin-left:auto;padding:10px 18px;min-height:40px;font-size:var(--text-body-sm)}
  .logo__wordmark span{font-size:13px}
  .hero{padding:32px var(--page-pad) 120px}
  .section,.day,.gallery,.contact{padding-left:16px;padding-right:16px}
  .ribbon h2{font-size:var(--text-heading-sm);padding:8px 20px}
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *{animation-duration:.01ms !important;animation-iteration-count:1 !important;
    transition-duration:.01ms !important;scroll-behavior:auto !important}
  .photo--tilt-up,.photo--tilt-down{transform:none}
}

@media print{
  .site-header,.lightbox,.hero__actions,.enroll__form{display:none}
  body{background:#fff}
}
