@charset "UTF-8";
.contact-form { margin-top: 2rem; }
.form-field { margin-bottom: 1.4rem; }
.form-field label { display: block; font-weight: 650; margin-bottom: .5rem; }
.form-field input, .form-field textarea {
  width: 100%; padding: .9rem 1rem; border: 1px solid #a7aab5;
  border-radius: 0; background: white; color: #101114; font: inherit;
}
.form-field textarea { resize: vertical; min-height: 180px; }
.form-field input:focus, .form-field textarea:focus { outline: 2px solid #0026e2; outline-offset: 2px; }
.form-field [aria-invalid="true"] { border-color: #a51c25; }
.field-help { display: block; font-size: .875rem; margin-top: .3rem; color: #62646e; }
.form-notice { padding: 1rem; margin-top: 1.5rem; background: #eef0fa; border-left: 3px solid #0026e2; overflow-wrap: anywhere; }
.form-notice.success { background: #e6f5eb; border-color: #227440; }
.form-notice a, .contact-form .small-note a { text-decoration: underline; }
.contact-form button { border: 0; color: white; cursor: pointer; }
.contact-form button:disabled { background: #646875; cursor: not-allowed; transform: none; }
.captcha-container { margin: 1.5rem 0; }
:root {
  --blue:#0026e2;
  --electric:#5274ff;
  --ink:#101114;
  --paper:#f6f7f9;
  --muted:#62646e;
  --line:#dcdde3;
  --space:clamp(1.25rem,5vw,6rem);
}

* {
  box-sizing:border-box;
}

html {
  scroll-behavior:smooth;
  scroll-padding-top:2rem;
}

body {
  margin:0;
  background:var(--ink);
  color:white;
  font:1rem/1.65 "Segoe UI",Arial,sans-serif;
}

a {
  color:inherit;
  text-decoration:none;
}

button,input,select,textarea {
  font:inherit;
}

img {
  max-width:100%;
  display:block;
}

h1,h2,h3,p {
  margin-top:0;
}

h1,h2,h3 {
  line-height:1.04;
  letter-spacing:-.055em;
}

h1,h2 {
  font-weight:850;
}

p {
  margin-bottom:1.5rem;
}

a,button {
  touch-action:manipulation;
}

a:focus-visible,button:focus-visible,summary:focus-visible {
  outline:3px solid var(--electric);
  outline-offset:6px;
}

a:hover {
  text-decoration:none;
}

.skip-link {
  position:fixed;
  left:1rem;
  top:-8rem;
  padding:1rem;
  background:white;
  color:black;
  z-index:10;
}

.skip-link:focus {
  top:1rem;
}

.site-header {
  padding:1.25rem var(--space);
  min-height:100px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:2rem;
  background:#0a0a0b;
}

.brand {
  display:flex;
  align-items:center;
  gap:1rem;
  line-height:1.25;
  flex-shrink:0;
}

.brand img {
  object-fit:contain;
}

.brand>span {
  font-size:1.12rem;
  font-weight:400;
  letter-spacing:.02em;
}

.brand strong {
  font-weight:800;
}

.brand small {
  display:block;
  font-size:.65rem;
  letter-spacing:.21em;
  margin-top:.4rem;
  color:#b8b8c1;
}

nav {
  display:flex;
  align-items:center;
  gap:2rem;
}

nav>a {
  font-size:.9rem;
  color:#b8b8c1;
  padding:.7rem 0;
}

nav>a:hover,nav>a[aria-current] {
  color:white;
}

nav>a[aria-current]:not(.nav-contact) {
  box-shadow:0 2px var(--electric);
}

nav .nav-contact {
  color:white;
  border:1px solid #54555c;
  padding:.65rem 1.15rem;
  display:flex;
  gap:1.5rem;
  align-items:center;
}

.hero {
  min-height:670px;
  height:min(780px,calc(100svh - 100px));
  position:relative;
  isolation:isolate;
  display:flex;
  align-items:center;
  padding:3rem var(--space) 5rem;
}

.hero-image {
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:38% center;
  z-index:-3;
}

.hero-shade {
  position:absolute;
  inset:0;
  background:linear-gradient(90deg,rgba(0,0,0,.92),rgba(0,0,0,.38) 58%,rgba(0,0,0,.05)),linear-gradient(0deg,rgba(0,0,0,.65),transparent 35%);
  z-index:-2;
}

.hero-content {
  max-width:700px;
}

.eyebrow {
  font-size:.75rem;
  font-weight:700;
  letter-spacing:.16em;
  line-height:1.5;
  margin-bottom:1.4rem;
}

.blue-line {
  display:inline-block;
  vertical-align:middle;
  width:32px;
  height:3px;
  background:var(--electric);
  margin-right:.7rem;
}

.hero h1 {
  font-size:clamp(3.75rem,6.7vw,7rem);
  line-height:.92;
  margin:1.5rem 0 1.8rem;
  letter-spacing:-.065em;
}

.hero h1 span {
  color:var(--electric);
}

.hero-intro {
  font-size:1.07rem;
  color:#dddfe5;
  line-height:1.6;
}

.button {
  display:inline-flex;
  align-items:center;
  justify-content:space-between;
  gap:2.7rem;
  background:var(--blue);
  padding:1rem 1.4rem;
  font-weight:650;
  min-height:56px;
  transition:background .2s,transform .2s;
}

.button:hover {
  background:#133df7;
  transform:translateY(-2px);
}

.button span {
  font-size:1.4rem;
  line-height:1;
}

.hero-caption {
  position:absolute;
  bottom:1.5rem;
  left:var(--space);
  right:var(--space);
  display:flex;
  justify-content:space-between;
  gap:1rem;
  border-top:1px solid #ffffff38;
  padding-top:1rem;
  font-size:.75rem;
  color:#d0d0d5;
  letter-spacing:.06em;
}

.intro-strip {
  padding:2.5rem var(--space);
  display:grid;
  grid-template-columns:1fr 1.5fr 1fr;
  align-items:center;
  gap:2rem;
  border-bottom:1px solid #303137;
}

.intro-strip p {
  margin:0;
  font-size:.9rem;
  color:#b7b7c0;
}

.intro-strip p:first-child {
  color:white;
  line-height:1.5;
  letter-spacing:.015em;
}

.text-link {
  display:inline-flex;
  gap:2rem;
  align-items:center;
  font-weight:650;
  border-bottom:1px solid currentColor;
  padding-bottom:.4rem;
  width:fit-content;
}

.text-link span {
  font-size:1.4rem;
}

.intro-strip .text-link {
  justify-self:end;
  font-size:.9rem;
}

.section {
  padding:6rem var(--space);
}

.light {
  background:var(--paper);
  color:var(--ink);
}

.section-heading {
  display:flex;
  justify-content:space-between;
  align-items:end;
  gap:2rem;
  margin-bottom:3rem;
}

.section-heading h2,h2 {
  font-size:clamp(2.4rem,4.1vw,4.6rem);
  margin-bottom:0;
}

.section-heading>p {
  color:var(--muted);
  font-size:1rem;
  max-width:420px;
  margin-bottom:.3rem;
}

.light .eyebrow {
  color:var(--blue);
}

.course-teasers {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:1rem;
}

.teaser {
  min-height:320px;
  position:relative;
  background:white;
  border:1px solid var(--line);
  padding:2rem;
  transition:transform .2s;
}

.teaser:hover {
  transform:translateY(-5px);
}

.card-number {
  display:block;
  font-size:.85rem;
  color:var(--muted);
  margin-bottom:3rem;
}

.teaser h3 {
  font-size:clamp(1.9rem,2.8vw,3rem);
  margin-bottom:1.6rem;
}

.teaser p {
  font-size:.9rem;
  color:var(--muted);
  margin:0;
  padding-right:2rem;
}

.round-arrow {
  position:absolute;
  right:1.5rem;
  bottom:1.5rem;
  border:1px solid var(--line);
  border-radius:50%;
  width:38px;
  height:38px;
  text-align:center;
  line-height:35px;
  font-size:1.5rem;
}

.teaser.blue {
  background:var(--blue);
  color:white;
  border-color:var(--blue);
}

.teaser.blue p,.teaser.blue .card-number {
  color:#e1e6ff;
}

.together {
  display:grid;
  grid-template-columns:1.1fr 1fr;
  min-height:540px;
}

.together>img {
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:42% center;
}

.together>div {
  padding:4.5rem var(--space) 4.5rem 4rem;
}

.together h2 {
  margin-bottom:2rem;
}

.together p:not(.eyebrow) {
  color:#b7b7c0;
  max-width:440px;
}

.contact-band {
  background:var(--blue);
  padding:4rem var(--space);
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:3rem;
}

.contact-band h2 {
  font-size:clamp(2.5rem,4vw,4.5rem);
}

.white {
  background:white;
  color:var(--ink);
}

.white:hover {
  background:#e8ecff;
}

.site-footer {
  padding:3rem var(--space);
  display:flex;
  justify-content:space-between;
  gap:2.5rem;
  align-items:start;
  font-size:.85rem;
}

.footer-name {
  font-weight:800;
  font-size:1rem;
  letter-spacing:.04em;
}

.footer-name span {
  display:block;
  font-size:.85rem;
  font-weight:400;
  color:#b7b7c0;
  letter-spacing:0;
  margin-top:.5rem;
}

.site-footer>div {
  display:flex;
  gap:1.5rem;
}

.site-footer p {
  color:#b7b7c0;
  margin:0;
}

.site-footer a:hover {
  text-decoration:underline;
}

.page-heading {
  padding:5rem var(--space);
  max-width:1100px;
}

.page-heading h1 {
  font-size:clamp(3.5rem,6vw,6rem);
  margin-bottom:1.5rem;
}

.page-heading>p:not(.eyebrow) {
  color:#b7b7c0;
  max-width:650px;
  font-size:1.1rem;
}

@media(min-width:1600px) {
  .hero {
    height:800px;
  }
}

@media(max-width:1000px) {
  .site-header {
    gap:1rem;
    flex-wrap:wrap;
  }
  nav {
    gap:1.5rem;
  }
  .intro-strip {
    grid-template-columns:1fr 1.5fr;
  }
  .intro-strip .text-link {
    grid-column:2;
    justify-self:start;
  }
  .teaser {
    padding:1.5rem;
  }
  .together>div {
    padding:3rem 2rem;
  }
  .site-footer {
    flex-wrap:wrap;
  }
  .hero {
    min-height:650px;
  }
  .section-heading>p br {
    display:none;
  }
}

@media(max-width:680px) {
  .site-header {
    padding-top:1rem;
    padding-bottom:1rem;
    gap:1.2rem;
  }
  .brand img {
    width:44px;
    height:44px;
  }
  .brand>span {
    font-size:1rem;
  }
  .site-header nav {
    width:100%;
    gap:1rem;
    justify-content:space-between;
    flex-wrap:wrap;
  }
  .site-header nav>a {
    font-size:.875rem;
  }
  .site-header nav .nav-contact {
    padding:.5rem .65rem;
    gap:.5rem;
  }
  .hero {
    height:auto;
    min-height:650px;
    padding-top:3rem;
  }
  .hero h1 {
    font-size:clamp(3.6rem,12vw,5rem);
  }
  .hero-image {
    object-position:43% center;
  }
  .hero-shade {
    background:linear-gradient(90deg,#000c,#0006),linear-gradient(0deg,#000b,transparent);
  }
  .hero-caption {
    font-size:.7rem;
  }
  .hero-caption span:last-child {
    display:none;
  }
  .intro-strip {
    grid-template-columns:1fr;
    gap:1.5rem;
  }
  .intro-strip .text-link {
    grid-column:auto;
  }
  .section {
    padding-top:3.5rem;
    padding-bottom:3.5rem;
  }
  .section-heading {
    display:block;
    margin-bottom:2rem;
  }
  .section-heading>p {
    margin-top:1.5rem;
  }
  .course-teasers {
    grid-template-columns:1fr;
  }
  .teaser {
    min-height:240px;
  }
  .teaser h3 {
    font-size:2.6rem;
  }
  .card-number {
    margin-bottom:1.5rem;
  }
  .together {
    grid-template-columns:1fr;
  }
  .together>img {
    height:300px;
  }
  .together>div {
    padding:3rem var(--space);
  }
  .contact-band {
    display:block;
    padding-top:3rem;
    padding-bottom:3rem;
  }
  .contact-band .button {
    margin-top:2rem;
    gap:1.2rem;
  }
  .site-footer {
    display:grid;
    gap:2rem;
  }
  .page-heading {
    padding-top:3rem;
    padding-bottom:3rem;
  }
  .page-heading h1 {
    font-size:3.4rem;
  }
}

.accent {
  color:var(--electric);
}

.course-section {
  padding-top:2.5rem;
}

.filters {
  display:flex;
  flex-wrap:wrap;
  gap:.65rem;
  margin-bottom:1.5rem;
}

.filters a {
  border:1px solid #b8bac4;
  padding:.65rem 1.2rem;
  color:var(--ink);
  font-size:.9rem;
}

.filters a:hover {
  border-color:var(--blue);
  color:var(--blue);
}

.filters a[aria-current] {
  background:var(--blue);
  border-color:var(--blue);
  color:white;
  box-shadow:none;
}

.schedule-note {
  font-size:.875rem;
  color:var(--muted);
  margin-bottom:2.5rem;
  max-width:780px;
}

.course-list {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:1.25rem;
}

.course {
  background:white;
  border:1px solid var(--line);
  padding:2.5rem;
  scroll-margin-top:2rem;
  display:flex;
  flex-direction:column;
  align-items:start;
}

.course-topline {
  display:flex;
  justify-content:space-between;
  gap:1rem;
  width:100%;
  margin-bottom:1.4rem;
}

.course-topline .eyebrow {
  font-size:.72rem;
  margin:0;
}

.course h2 {
  font-size:clamp(2rem,3vw,3rem);
  margin-bottom:1.2rem;
}

.course>p {
  color:var(--muted);
  max-width:520px;
}

.schedule {
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
  padding:1rem 0;
  width:100%;
  display:flex;
  justify-content:space-between;
  gap:1rem;
  font-size:.9rem;
  margin-top:auto;
}

.schedule span {
  color:var(--muted);
}

.course>.text-link {
  margin-top:1.5rem;
  font-size:.9rem;
}

.course details {
  font-size:.9rem;
  padding-top:1rem;
  width:100%;
}

.course summary {
  cursor:pointer;
  padding:.25rem 0;
  font-weight:600;
}

.course ul {
  padding-left:1.2rem;
  color:var(--muted);
}

.event-feature {
  position:relative;
  min-height:390px;
  display:flex;
  align-items:center;
  padding:3rem var(--space);
  isolation:isolate;
}

.event-feature>img {
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  z-index:-2;
}

.event-feature::after {
  content:"";
  position:absolute;
  inset:0;
  z-index:-1;
  background:linear-gradient(90deg,#000d,#0004);
}

.event-feature h2 {
  margin-bottom:1.3rem;
}

.event-feature p {
  max-width:350px;
}

.event-row {
  display:grid;
  grid-template-columns:.2fr 1.5fr .8fr;
  gap:3rem;
  padding:3rem 0;
  border-top:1px solid var(--line);
}

.event-row:last-child {
  border-bottom:1px solid var(--line);
}

.event-index {
  font-size:1.15rem;
  color:var(--muted);
}

.event-row h2 {
  font-size:clamp(2rem,3vw,3rem);
  margin-bottom:1.5rem;
}

.event-row p:not(.eyebrow) {
  color:var(--muted);
  max-width:620px;
  margin-bottom:0;
}

.event-status {
  display:flex;
  flex-direction:column;
  gap:2rem;
  align-items:start;
  justify-content:center;
}

.event-status>span {
  font-size:.875rem;
  color:var(--muted);
}

.contact-layout {
  display:grid;
  grid-template-columns:1.2fr .8fr;
  gap:5rem;
}

.contact-description {
  margin-top:2rem;
  max-width:540px;
  color:var(--muted);
}

.email-address {
  margin:1.5rem 0 .4rem;
  overflow-wrap:anywhere;
}

.small-note {
  font-size:.875rem;
  color:var(--muted);
}

.location {
  padding:3rem;
  background:#e9edf9;
  align-self:start;
}

.location h3 {
  font-size:2.5rem;
  margin-bottom:1.5rem;
}

.location>p:not(.eyebrow) {
  color:var(--muted);
}

@media(max-width:800px) {
  .course {
    padding:1.6rem;
  }
  .course-list {
    gap:1rem;
  }
  .schedule {
    flex-direction:column;
    gap:.2rem;
  }
  .contact-layout {
    grid-template-columns:1fr;
    gap:2.5rem;
  }
  .event-row {
    grid-template-columns:1fr;
    gap:1rem;
  }
  .event-status {
    gap:1rem;
  }
  .location {
    padding:2rem;
  }
  .event-index {
    display:none;
  }
}

@media(max-width:580px) {
  .course-list {
    grid-template-columns:1fr;
  }
  .course {
    padding:1.7rem;
  }
  .filters a {
    padding:.65rem .8rem;
  }
  .course h2 {
    font-size:2.25rem;
  }
  .event-feature {
    min-height:380px;
  }
  .page-heading h1 {
    overflow-wrap:anywhere;
  }
  .contact-layout .button {
    gap:1.5rem;
  }
}

.error-page {
  display:grid;
  grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);
  min-height:65vh;
  background:var(--paper);
  color:var(--ink);
}
.error-copy {
  padding:clamp(3rem,7vw,7rem) var(--space);
  align-self:center;
  min-width:0;
}
.error-copy h1 {
  font-size:clamp(2.5rem,5.5vw,5.5rem);
  max-width:12ch;
  overflow-wrap:break-word;
  margin-bottom:1.5rem;
}
.error-description { max-width:44ch; color:#484b55; font-size:1.125rem; }
.error-actions { display:flex; flex-wrap:wrap; align-items:center; gap:1.5rem; }
.error-actions .button { background:var(--blue); color:white; gap:1.5rem; white-space:normal; max-width:100%; }
.error-link { font-weight:650; text-decoration:underline; text-underline-offset:.3em; }
.error-score {
  display:flex;
  flex-direction:column;
  justify-content:space-between;
  padding:clamp(1.5rem,4vw,4rem);
  color:white;
  background:var(--blue);
  overflow:hidden;
  min-width:0;
}
.error-score-top { font-size:.875rem; font-weight:650; letter-spacing:.12em; }
.error-number { font-size:clamp(6rem,20vw,24rem); font-weight:900; line-height:1.3; letter-spacing:-.075em; }
.error-score-bottom { display:flex; flex-wrap:wrap; justify-content:space-between; gap:1rem; border-top:1px solid #ffffff66; padding-top:1rem; font-weight:700; }
@media(max-width:800px) {
  .error-page { grid-template-columns:1fr; }
  .error-copy h1 { max-width:16ch; }
  .error-score { min-height:0; }
  .error-number { font-size:clamp(6rem,30vw,12rem); line-height:1.15; }
}

@media(prefers-reduced-motion:reduce) {
  html {
    scroll-behavior:auto;
  }
  *,*::before,*::after {
    transition:none!important;
    animation:none!important;
  }
}
