:root {
  --site-navy: #011627;
  --site-turquoise: #41ead4;
  --site-paper: #fcf7f8;
  --site-shell: min(1320px, calc(100vw - 24px));
  --site-nav-height: 101px;
}

/* One site-wide header. Page styles are not allowed to theme it. */
.header {
  position: relative !important;
  z-index: 1000 !important;
  width: 100%;
  height: 0 !important;
  background: transparent !important;
  font-family: Montserrat, Arial, sans-serif;
}

.header .navbar,
.header .navbar.fixed-top,
.header .navbar.header-background {
  position: fixed !important;
  inset: 0 0 auto !important;
  width: 100%;
  height: var(--site-nav-height);
  padding: 8px 0 !important;
  color: var(--site-paper);
  background: transparent !important;
  font-family: Montserrat, Arial, sans-serif !important;
  transition: background-color .5s ease !important;
}

.header .navbar.header-background {
  background: #2ed3be !important;
}

.header .navbar > .container-lg,
.site-footer-shell > .container-lg {
  width: var(--site-shell);
  max-width: 1320px !important;
  margin: 0 auto;
  padding-right: 12px !important;
  padding-left: 12px !important;
}

.header .navbar > .container-lg {
  height: 100%;
  display: flex;
  align-items: center;
}

.header .navbar-brand {
  width: auto;
  height: 75px;
  flex: 0 0 auto;
  margin: 0;
  padding: 0;
}

.header .navbar-brand img {
  width: auto !important;
  height: 75px !important;
  display: block;
  object-fit: contain;
}

.header .navbar-collapse { margin-left: auto; }
.header .navbar-expand-lg .navbar-toggler { display: none !important; }
.header .navbar-nav { display: flex; align-items: center; gap: clamp(22px, 2vw, 36px); }
.header .nav-link {
  padding: 7px 0 !important;
  color: rgba(252, 247, 248, .72) !important;
  font-family: Montserrat, Arial, sans-serif !important;
  font-size: 14px !important;
  font-weight: 700 !important;
  line-height: 1.2;
  opacity: 1 !important;
  transition: color .2s ease !important;
}

.header .nav-link:hover,
.header .nav-link:focus-visible,
.header .nav-link.active {
  color: var(--site-paper) !important;
}

.header .nav-school,
.header .nav-school.active {
  margin-left: 0;
  padding: 7px 3px !important;
  color: var(--site-turquoise) !important;
  background: transparent !important;
  border: 0 !important;
  border-bottom: 2px solid currentColor !important;
}

.header .navbar.header-background .nav-school {
  color: var(--site-paper) !important;
  border-bottom-color: var(--site-paper) !important;
}

.header .nav-school:hover,
.header .nav-school:focus-visible {
  color: var(--site-paper) !important;
}

/* One site-wide footer. */
.site-footer-shell {
  color: var(--site-paper);
  background: var(--site-navy) !important;
  border-top: 1px solid rgba(252, 247, 248, .16);
  font-family: Montserrat, Arial, sans-serif;
}

.site-footer-shell footer {
  margin: 0 !important;
  padding: 24px 0 !important;
  display: grid !important;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 24px;
}

.site-footer-shell .col {
  width: auto !important;
  margin: 0 0 16px !important;
  padding: 0 !important;
}

.site-footer-shell img {
  width: 48px !important;
  height: 68px !important;
  display: block;
  object-fit: contain;
}

.site-footer-shell h4 {
  margin: 0 0 8px;
  color: var(--site-turquoise) !important;
  font: 500 24px/1.2 Montserrat, Arial, sans-serif !important;
}

.site-footer-shell a,
.site-footer-shell p {
  margin: 0;
  color: var(--site-paper) !important;
  font: 400 16px/1.5 Montserrat, Arial, sans-serif !important;
}

.site-footer-shell .footer-school-link {
  display: inline-block;
  max-width: 170px;
  margin-top: 4px;
  padding-top: 12px;
  color: var(--site-turquoise) !important;
  border-top: 1px solid rgba(65, 234, 212, .45);
  font-size: 14px !important;
  font-weight: 700 !important;
  line-height: 1.25 !important;
}

.site-footer-shell a:hover,
.site-footer-shell a:focus-visible {
  color: var(--site-turquoise) !important;
}

@media (min-width: 992px) {
  .header .navbar-collapse {
    display: flex !important;
    flex-basis: auto;
  }
}

@media (max-width: 991.98px) {
  :root { --site-nav-height: 84px; }

  .header .navbar-brand,
  .header .navbar-brand img {
    height: 68px !important;
  }

  .header .navbar-brand {
    width: auto !important;
    flex-basis: auto;
  }

  .header .navbar-expand-lg .navbar-toggler {
    width: 44px;
    height: 40px;
    margin-left: auto;
    padding: 7px;
    display: block !important;
    color: var(--site-paper);
    background: transparent;
    border: 1px solid rgba(252, 247, 248, .45);
    border-radius: 0;
    box-shadow: none !important;
  }

  .header .navbar-toggler-icon {
    width: 28px;
    height: 24px;
    display: block;
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 24'%3e%3cpath stroke='%23fcf7f8' stroke-linecap='square' stroke-width='1.5' d='M2 4h26M2 12h26M2 20h26'/%3e%3c/svg%3e") !important;
    background-position: center;
    background-repeat: no-repeat;
    background-size: 28px 24px;
  }

  .header .navbar-collapse,
  .header .navbar-collapse.collapsing,
  .header .navbar-collapse.show {
    position: absolute;
    z-index: 10;
    top: var(--site-nav-height);
    right: 0;
    left: 0;
    margin: 0;
    padding: 0;
    background: #2ed3be !important;
    border-top: 1px solid rgba(252, 247, 248, .16);
  }

  .header .navbar-collapse:not(.show):not(.collapsing) { display: none; }
  .header .navbar-nav {
    width: var(--site-shell) !important;
    margin: 0 auto;
    padding: 16px 0 22px;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 0;
  }

  .header .nav-link { padding: 11px 0 !important; }
  .header .nav-school,
  .header .nav-school.active {
    width: max-content;
    margin: 4px 0 6px;
    padding: 11px 0 5px !important;
  }

  .site-footer-shell footer {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 700px) {
  :root { --site-shell: calc(100vw - 24px); }
  .site-footer-shell footer { grid-template-columns: 1fr; gap: 0; }
}
