/* Shared type system. Loaded after page-specific layout styles. */
:root {
  --font-body: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --type-small: .875rem;
  --type-body: clamp(1rem, .95rem + .2vw, 1.125rem);
  --type-lead: clamp(1.125rem, 1rem + .4vw, 1.375rem);
  --type-title: clamp(2.25rem, 1.45rem + 3vw, 4.25rem);
}
body {
  font-family: var(--font-body);
  font-size: var(--type-body);
  line-height: 1.6;
}
h1, h2, h3, p { overflow-wrap: break-word; }
h1, h2, h3 { text-wrap: balance; }
.hero h1, .page-title, .contact-title-wrap .page-title,
.home-page .hero h1 {
  font-size: var(--type-title);
  font-weight: 600;
  line-height: 1.1;
  letter-spacing: -.04em;
}
.hero h1, .home-page .hero h1 { max-width: 12ch; }
.eyebrow, .section-label, .home-page .hero .eyebrow {
  font-size: .8125rem;
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: .14em;
}
.hero .eyebrow { margin-bottom: 2rem; }
.section-label { margin-bottom: 2.25rem; }
.hero-copy { max-width: 65ch; margin-top: 2rem; }
.hero-copy .lead, .home-page .hero-copy .lead {
  font-size: var(--type-lead);
  line-height: 1.5;
  letter-spacing: -.015em;
  margin-bottom: 1.15rem;
}
.hero-copy .sub, .home-page .hero-copy .sub,
.landing-intro, .programme-desc, .home-body p,
.city-grid p, .steps-grid p, .split-card p,
.programme-index p, .thanks-page p,
.contact-title-wrap .contact-kicker, .contact-intro {
  font-size: var(--type-body);
  font-weight: 400;
  line-height: 1.65;
  letter-spacing: 0;
  max-width: 65ch;
}
.home-body h2, .subsection h2 {
  font-size: clamp(1.75rem, 1.25rem + 1.6vw, 2.75rem);
  font-weight: 600;
  line-height: 1.18;
  letter-spacing: -.03em;
}
.city-grid h3, .steps-grid h3, .split-card h3,
.programme-index h3, .programme-name {
  font-size: clamp(1.125rem, 1.025rem + .3vw, 1.3125rem);
  line-height: 1.4;
  font-weight: 600;
  letter-spacing: -.02em;
}
.programme-meta {
  font-size: 1rem;
  line-height: 1.5;
  font-weight: 400;
}
.programme-desc { margin-top: 1.25rem; }
.hero-nav, .page-nav, .home-page .hero-nav {
  font-size: 1rem;
  font-style: normal;
  font-weight: 500;
  line-height: 1.5;
  letter-spacing: -.01em;
  text-transform: none;
  gap: .25rem;
}
.hero-nav a, .page-nav a { padding-block: .5rem; }
.home-page .hero-nav a { color: var(--blue); }
.home-page .hero-nav a:hover { color: #0b65b1; }
.site-chrome .top-link {
  font-size: .875rem !important;
  font-weight: 600;
  letter-spacing: .08em !important;
  line-height: 1.4;
}
label, .detail-label {
  font-size: var(--type-small);
  line-height: 1.5;
  font-weight: 500;
  letter-spacing: 0;
  text-transform: none;
  opacity: 1;
}
input, select, textarea {
  font-size: 1rem;
  line-height: 1.5;
}
input, select { min-height: 2.75rem; }
input::placeholder, textarea::placeholder { color: #626d9b; }
.form-guidance, .form-note, .form-status, .contact-bottom,
.pricing, footer, .response-note {
  font-size: var(--type-small);
  line-height: 1.6;
  opacity: 1;
}
.response-note { font-size: var(--type-small) !important; }
.contact-intro, .contact-bottom .contact-meta { opacity: 1; }
.submit-btn {
  font-size: var(--type-small);
  line-height: 1.5;
  font-weight: 600;
  letter-spacing: .06em;
  min-height: 2.75rem;
  opacity: 1;
}
a:focus-visible, button:focus-visible,
input:focus-visible, select:focus-visible, textarea:focus-visible {
  outline: 2px solid var(--blue);
  outline-offset: 4px;
}
.contact-form { max-width: 100%; }
@media (max-width: 820px) {
  .home-page .hero h1 { font-size: clamp(2.25rem, 8.8vw, 3.5rem); }
  .home-page .hero .eyebrow { margin-bottom: 1.5rem; }
  .hero-copy .lead, .home-page .hero-copy .lead { margin-bottom: 1rem; }
  .contact-form { width: 100%; }
  .contact-bottom .contact-meta span { display: block; }
  .contact-bottom .contact-meta span + span::before { content: none; }
}

.programme-desc.departure-note {
  display: block;
  margin-top: 1rem;
  font-weight: 700;
}
