/* A single, restrained type scale for the landing page. */
:root {
  --heading: 'Inter', Arial, sans-serif;
  --body: 'Inter', Arial, sans-serif;
}

body { font-size: 16px; }
h1, h2, h3 { font-weight: 600; }
h2 {
  font-size: clamp(34px, 3.6vw, 52px);
  line-height: 1.14;
  letter-spacing: -.025em;
}
.brand strong { font-size: 19px; font-weight: 600; letter-spacing: .015em; }
.brand small { font-size: 14px; letter-spacing: .24em; }
.desktop-nav { font-size: 16px; font-weight: 400; }
.header-cta { font-size: 14px; }
.eyebrow { font-size: 14px; font-weight: 500; letter-spacing: .1em; }
.hero h1 {
  font-size: clamp(72px, 7.3vw, 104px);
  font-weight: 600;
  line-height: 1.12;
  letter-spacing: -.035em;
  margin-top: 24px;
}
.hero-copy { font-size: 18px; line-height: 1.65; }
.hero-actions { gap: 28px; }
.button { font-size: 16px; font-weight: 500; }
.text-link { font-size: 15px; font-weight: 400; }
.hero-side { font-size: 14px; font-weight: 400; letter-spacing: .12em; }
.scroll-link, .video-credit { font-size: 14px; letter-spacing: .08em; }
.section-label { font-size: 14px; font-weight: 500; letter-spacing: .08em; }
.principles span { font-size: 14px; font-weight: 500; letter-spacing: .04em; }
.large-copy, .about-text > p { font-size: 16px; line-height: 1.75; }
.underlined-link { font-size: 14px; font-weight: 500; }
.about-tags span, .image-tag { font-size: 14px; font-weight: 500; }
.photo-label { font-size: 32px; line-height: 1.2; font-weight: 500; letter-spacing: -.02em; }
.section-heading > p { font-size: 16px; line-height: 1.75; }
.program-card { display: flex; flex-direction: column; }
.program-body { display: flex; flex-direction: column; flex: 1; }
.program-body h3 { font-size: 24px; line-height: 1.25; letter-spacing: -.02em; }
.program-body > p { font-size: 16px; line-height: 1.75; min-height: 0; flex: 1; }
.card-action { font-size: 14px; font-weight: 500; }
.card-index { font-size: 32px; font-weight: 400; }
.steps h3 { font-size: 18px; font-weight: 500; letter-spacing: -.01em; }
.steps p { font-size: 16px; line-height: 1.75; }
.steps article > span { font-size: 14px; font-weight: 400; }
.day-tabs button { font-size: 20px; font-weight: 500; }
.day-tabs button span { font-size: 14px; font-weight: 400; }
.session-time { font-size: 32px; font-weight: 400; letter-spacing: -.025em; }
.session-time small { font-size: 14px; letter-spacing: .04em; }
.session-name h3 { font-size: 16px; font-weight: 500; }
.session-name span, .session-level { font-size: 14px; }
.schedule-row .session-contact { font-size: 14px; padding: 12px; gap: 7px; }
.schedule-note, .schedule-foot { font-size: 14px; }
summary { font-size: 16px; font-weight: 500; line-height: 1.5; }
details p { font-size: 16px; line-height: 1.75; }
.closing h2 { font-size: clamp(56px, 6.2vw, 88px); line-height: 1.12; letter-spacing: -.035em; }
.closing-foot p, .closing-foot > a, .closing-foot .text-link { font-size: 15px; }
.footer-brand strong { font-size: 18px; }
.footer-brand small { font-size: 14px; letter-spacing: .22em; }
.footer p, .footer .footer-note { font-size: 14px; }
.booking-dialog h2 { font-size: 44px; line-height: 1.15; }
.dialog-intro { font-size: 14px; line-height: 1.65; }
form label { font-size: 14px; font-weight: 400; }
input, select { font-size: 16px; }
.form-note { font-size: 14px; }
#success-copy { font-size: 16px; }
.mobile-menu > a { font-size: 32px; font-weight: 500; letter-spacing: -.02em; }

@media (max-width: 1100px) {
  .program-body h3 { font-size: 22px; }
  .day-tabs button { flex-direction: column; gap: 7px; }
  .principles span { font-size: 14px; }
}

@media (max-width: 800px) {
  .hero h1 { font-size: 72px; }
  .about h2 { font-size: 32px; }
  .about-text > p, .large-copy { font-size: 16px; }
  .section-heading > p { font-size: 16px; }
  .program-body h3 { font-size: 20px; }
  .program-body > p { font-size: 16px; }
  .card-action { font-size: 14px; }
  .session-time { font-size: 28px; }
  .session-name h3 { font-size: 16px; }
  .session-name span { font-size: 14px; }
  .closing h2 { font-size: 48px; }
  .closing-foot p, .closing-foot > a, .closing-foot .text-link { font-size: 15px; }
  .footer-brand strong { font-size: 16px; }
  .footer-brand small { font-size: 14px; }
}

@media (max-width: 540px) {
  .brand strong { font-size: 17px; letter-spacing: 0; }
  .brand small { font-size: 14px; letter-spacing: .24em; }
  .hero h1 { font-size: clamp(44px, 12vw, 62px); line-height: 1.15; letter-spacing: -.03em; }
  .eyebrow { font-size: 14px; }
  .hero-copy { font-size: 16px; line-height: 1.7; }
  .hero-actions .button { font-size: 16px; }
  .hero-actions .text-link { font-size: 15px; }
  .scroll-link, .video-credit { font-size: 14px; }
  .principles span { font-size: 14px; }
  .section-label { font-size: 14px; }
  .about h2, h2 { font-size: 32px; letter-spacing: -.025em; }
  .large-copy, .about-text > p, .program-body > p, .steps p { font-size: 16px; }
  .section-heading > p { font-size: 16px; }
  .program-body h3 { font-size: 23px; }
  .card-action { font-size: 14px; }
  .steps h3 { font-size: 17px; }
  .photo-label { font-size: 25px; }
  .session-time { font-size: 26px; }
  .session-time small { font-size: 14px; }
  .session-name h3 { font-size: 16px; }
  .session-name span { font-size: 14px; }
  .schedule-row .session-contact { padding: 0; }
  .schedule-foot { font-size: 14px; }
  summary, details p { font-size: 16px; }
  .closing h2 { font-size: clamp(34px, 10vw, 46px); letter-spacing: -.03em; }
  .closing-foot p, .closing-foot > a, .closing-foot .text-link { font-size: 15px; }
  .footer-brand strong { font-size: 17px; }
  .footer p, .footer .footer-note { font-size: 14px; }
  .booking-dialog h2 { font-size: 39px; }
}

/* Readable supporting text, including captions inherited from the base layout. */
.brand small, .footer-brand small { font-size: 12px; letter-spacing: .13em; }
.photo-index, .schedule-foot > span:last-child { font-size: 14px; line-height: 1.5; }
.hero-corner { font-size: 12px; }
.video-credit button { font-size: 14px; }
.section-label { line-height: 1.5; }
.session-time small, .session-name span { line-height: 1.5; }
.schedule-row .session-contact { font-size: 14px; }
.schedule-foot { line-height: 1.6; }
.footer p, .footer .footer-note { line-height: 1.7; }
.form-note { line-height: 1.6; }

@media (max-width: 1100px) {
  .header { gap: 18px; padding-inline: 24px; }
  .desktop-nav { font-size: 14px; gap: 18px; }
  .header-cta { padding-inline: 14px; gap: 14px; }
}

@media (max-width: 800px) {
  .schedule-row { grid-template-columns: 100px minmax(0, 1fr) 140px; }
  .closing-foot { flex-wrap: wrap; gap: 24px; }
  .closing-foot .contact-address { flex-basis: 100%; max-width: none; }
  .closing-foot > a { width: auto; margin-left: auto; }
  .closing-foot .text-link { margin-left: 0; gap: 16px; }
}

@media (max-width: 540px) {
  .header { padding-inline: 20px; }
  .brand small, .footer-brand small { font-size: 12px; }
  .hero-actions .button { max-width: 100%; gap: 24px; padding-inline: 18px; }
  .hero-bottom { flex-wrap: wrap; gap: 14px; }
  .scroll-link { flex: 1 1 200px; font-size: 12px; letter-spacing: .04em; }
  .video-credit { margin-left: auto; font-size: 12px; letter-spacing: .04em; }
  .principles { flex-wrap: wrap; justify-content: center; gap: 10px; padding-block: 16px; }
  .principles span { width: 100%; text-align: center; font-size: 14px; }
  .principles i { display: none; }
  .photo-label { bottom: 50px; }
  .photo-index { left: 20px; right: auto; bottom: 15px; max-width: calc(100% - 40px); text-align: left; }
  .schedule-row { grid-template-columns: 76px minmax(0, 1fr) 40px; }
  .session-time small { display: none; }
  .session-name span { font-size: 14px; }
  .schedule-row .session-contact { padding: 0; }
  .schedule-foot > span:first-child { align-items: baseline; }
}
