@import url("https://fonts.googleapis.com/css2?family=Stack+Sans+Headline:wght@400;500;600;700&display=swap");

/* ==============================
   Header
   ============================== */

.cms-header {
  --header-inset: 40px;
  --header-logo-width: 170px;
  --header-title-offset: -25px;

  position: relative;
}

#header-top-links {
  position: relative;
  z-index: 2;

  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 14px;

  box-sizing: border-box;
  width: 100%;
  height: 40px;
  padding: 0 40px;

  border-bottom: 2px solid #fff;
  background-color: var(--org-brand);

  font-family: var(--org-font);
  transition: height 0.25s ease-in;
}

#header-top-links a {
  display: inline-block;
  color: var(--color-white, #fff);
  text-decoration: none;
}

#header-top-links a:hover,
#header-top-links a:focus-visible {
  color: #000;
}

#header-top-links a:not(.fa-brands) {
  font-family: var(--org-font);
  font-size: 18px;
  font-weight: 400;
  line-height: 17px;
}

#header-top-links .fa-brands {
  font-size: 22px;
}

#header-content {
  position: relative;

  display: grid;
  grid-template-columns: minmax(0, 1fr);
  grid-template-rows: 110px auto;
  align-items: center;

  box-sizing: border-box;
  width: 100%;
  height: auto;
  overflow: visible;

  background-color: #000;
  box-shadow: 0 0 8px rgba(0, 0, 0, 0.75);

  transition: height 0.25s ease-in;
}

#header-brand {
  display: flex;
  flex: 0 0 auto;
  align-items: center;

  min-width: 0;
  margin: 0 0 0 var(--header-inset);

  transition: all 0.25s ease-in;
}

#header-brand a {
  display: flex;
  align-items: center;
  gap: 0;

  text-decoration: none;
}

#header-logo {
  position: relative;
  top: 40px;
  z-index: 2;

  display: block;
  flex: 0 0 auto;

  width: var(--header-logo-width);
  height: 200px;
  max-width: 36vw;
  padding-top: 0;

  object-fit: contain;
  object-position: left center;

  transition: all 0.25s ease-in;
}

#header-title {
  position: relative;
  z-index: 2;
  top: auto;
  left: auto;

  display: block;
  width: auto;
  height: 95px;
  max-width: 42vw;
  margin-left: var(--header-title-offset);

  object-fit: contain;

  transition: all 0.25s ease-in;
}

/* ==============================
   Navigation
   ============================== */

#design-container-main-nav {
  --cms-bg: var(--org-brand);
  --cms-bg-hover: var(--org-brand-alt, #006b75);
  --cms-text: #fff;

  position: relative;

  display: flex;
  align-items: center;
  justify-content: flex-start;

  box-sizing: border-box;
  width: 100%;
  min-width: 0;
  min-height: 60px;

  padding: 0 24px 0 calc(
    var(--header-inset) +
    var(--header-logo-width) +
    var(--header-title-offset)
  );

  background-color: var(--org-brand);
  color: #fff;

  font-family: var(--org-body-font, "Stack Sans Headline", sans-serif);
  font-weight: 400;
}

#design-container-main-nav .dii-content-nav-menu {
  background-color: var(--org-brand);
  color: #fff;
  font-family: var(--org-body-font, "Stack Sans Headline", sans-serif);
}

#design-container-main-nav .dii-content-nav-menu a,
#design-container-main-nav .dii-sub-menu-link {
  color: #fff;
  font-family: var(--org-body-font, "Stack Sans Headline", sans-serif);
}

#design-container-main-nav .dii-content-nav-menu > ul > li > a {
  font-size: 20px;
  font-weight: 700;
  letter-spacing: -0.04em;
  text-transform: uppercase;
}

/* Main navigation uses the organization body font in bold. */
#design-container-main-nav .dii-content-nav-menu > ul > li > a,
#design-container-main-nav .dii-content-nav-menu > ul > li > .dii-sub-menu-link,
#design-container-main-nav .dii-content-nav-menu > ul > li > .dii-sub-menu-link > a {
  font-family: var(--org-body-font, "Stack Sans Headline", sans-serif);
  font-weight: 700;
}

/* All submenu levels use the organization body font at regular weight. */
#design-container-main-nav .dii-content-nav-menu ul ul,
#design-container-main-nav .dii-content-nav-menu ul ul a,
#design-container-main-nav .dii-content-nav-menu ul ul .dii-sub-menu-link {
  font-family: var(--org-body-font, "Stack Sans Headline", sans-serif);
  font-weight: 400;
}

/* Top-level link hover and keyboard focus. */
#design-container-main-nav .dii-content-nav-menu > ul > li > .dii-sub-menu-link:hover,
#design-container-main-nav .dii-content-nav-menu > ul > li > .dii-sub-menu-link:focus-visible {
  color: #000;
}

/* Submenu hover and keyboard focus. */
#design-container-main-nav .dii-content-nav-menu ul ul {
  --cms-bg-hover: #000;
}

#design-container-main-nav .dii-content-nav-menu ul ul li > a:hover,
#design-container-main-nav .dii-content-nav-menu ul ul li > a:focus-visible {
  background-color: #000;
  color: #fff;
}

/* Keep the CMS Add Nav control after the menu, at the right edge. */
#design-container-main-nav > .dii-content-add {
  order: 10;
  flex: 0 0 auto;
  margin-left: auto;
  margin-right: 0;
}

/* ==============================
   Sticky header
   ============================== */

.cms-sticky-header {
  position: sticky;
  z-index: 10;
  top: 0;
}

.cms-sticky-header + main {
  position: relative;
  z-index: 1;

  transition: top 0.25s ease-in;
}

.cms-sticky-header.is-sticky {
  --header-logo-width: 45px;
  --header-title-offset: -5px;
}

.cms-sticky-header.is-sticky + main {
  top: 0;
}

.cms-sticky-header.is-sticky #header-top-links {
  height: 30px;
}

.cms-sticky-header.is-sticky #header-content {
  grid-template-rows: 70px auto;
}

.cms-sticky-header.is-sticky #header-logo {
  top: 0;
  height: 45px;
}

.cms-sticky-header.is-sticky #header-title {
  height: 50px;
}

.cms-sticky-header.is-sticky #design-container-main-nav {
  min-height: 50px;
}

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

@media (min-width: 1025px) {
  #design-container-main-nav {
    /* Align the desktop menu with the left edge of the header title. */
    padding-left: calc(
      var(--header-inset) +
      var(--header-logo-width) +
      var(--header-title-offset)
    ) !important;
    text-align: left;
  }

  /* Keep the compact sticky menu aligned with its smaller title. */
  .cms-sticky-header.is-sticky #design-container-main-nav {
    padding-left: calc(
      var(--header-inset) +
      var(--header-logo-width) +
      var(--header-title-offset)
    ) !important;
  }

  /* Size only the menu wrapper, menu, and list. */
  #design-container-main-nav > :has(.dii-content-nav-menu),
  #design-container-main-nav .dii-content-nav-menu,
  #design-container-main-nav .dii-content-nav-menu > ul {
    flex: 1 1 auto;

    box-sizing: border-box;
    width: 100%;
    max-width: none;
    min-width: 0;
    margin: 0;
    padding: 0;
  }

  #design-container-main-nav .dii-content-nav-menu,
  #design-container-main-nav .dii-content-nav-menu > ul {
    display: flex;
    justify-content: flex-start;

    float: none;
    text-align: left;
  }

  #design-container-main-nav .dii-content-nav-menu > ul {
    gap: 0;
    list-style: none;
  }

  /* Remove CMS wrapper spacing before the menu. */
  #design-container-main-nav :has(.dii-content-nav-menu),
  #design-container-main-nav .dii-content-nav-menu,
  #design-container-main-nav .dii-content-nav-menu > ul,
  #design-container-main-nav .dii-content-nav-menu > ul > li:first-child {
    margin-left: 0 !important;
    padding-left: 0 !important;
  }

  /* CMS labels may use a submenu-link wrapper rather than a direct anchor. */
  #design-container-main-nav .dii-content-nav-menu > ul > li:first-child > a,
  #design-container-main-nav .dii-content-nav-menu > ul > li:first-child > .dii-sub-menu-link,
  #design-container-main-nav .dii-content-nav-menu > ul > li:first-child > .dii-sub-menu-link > a {
    margin-left: 0 !important;
    padding-left: 0 !important;
  }

  #design-container-main-nav .dii-content-nav-menu > ul > li {
    flex: 0 0 auto;
    margin: 0;
    padding: 0;

    float: none;
    text-align: left;
  }
}

/* ==============================
   Tablet and mobile
   1024px and below
   ============================== */

@media (max-width: 1024px) {
  /* Black hover and keyboard-focus backgrounds for mobile submenu items. */
  #design-container-main-nav .dii-content-nav-menu ul ul li > a:hover,
  #design-container-main-nav .dii-content-nav-menu ul ul li > a:focus-visible,
  #design-container-main-nav .dii-content-nav-menu ul ul .dii-sub-menu-link:hover,
  #design-container-main-nav .dii-content-nav-menu ul ul .dii-sub-menu-link:focus-within {
    background-color: #000 !important;
    color: #fff !important;
  }

  #design-container-main-nav {
    justify-content: flex-end;
    padding: 0 12px;
  }

  .cms-header #design-container-main-nav
  .dii-mobile-navigation-icon.fa-bars {
    position: relative;
    top: 0 !important;

    color: #fff;
  }

  #design-container-main-nav .dii-is-mobile > ul {
    position: absolute;
    z-index: 20;
    top: 100%;
    right: 0;
    left: auto;

    width: min(280px, calc(100vw - 24px));
    max-height: calc(100dvh - 210px);
    margin: 0;

    overflow-y: auto;
    background-color: var(--org-brand);
    transform: none;
  }

  .cms-sticky-header.is-sticky #design-container-main-nav
  .dii-is-mobile > ul {
    max-height: calc(100dvh - 150px);
  }

  #design-container-main-nav .dii-menu-item-sub-menu > ul.show {
    display: block !important;
    visibility: visible;
    opacity: 1;
  }
}

/* ==============================
   Mobile
   600px and below
   ============================== */

@media (max-width: 600px) {
  /* Compact teal bar with equal space above and below the menu icon. */
  .cms-header #design-container-main-nav,
  .cms-sticky-header.is-sticky #design-container-main-nav {
    height: 40px;
    min-height: 40px;
    padding: 0 12px !important;
    align-items: center;
  }

  .cms-header #design-container-main-nav .dii-mobile-navigation-icon.fa-bars {
    position: absolute;
    top: 50% !important;
    right: 12px;
    bottom: auto;
    margin: 0;
    transform: translateY(-50%);
    line-height: 1;
  }

  /* Reduce the black brand row while allowing the logo to overlap below. */
  #header-content {
    grid-template-rows: 80px auto;
  }

  .cms-sticky-header.is-sticky #header-content {
    grid-template-rows: 60px auto;
  }

  .cms-header {
    --header-inset: 12px;
    --header-logo-width: 116px;
    --header-title-offset: -5px;
  }

  .cms-sticky-header.is-sticky {
    --header-logo-width: 55px;
  }

  #header-top-links {
    gap: 10px;
    padding: 0 12px;
  }

  #header-top-links a:not(.fa-brands) {
    font-size: 12px;
    line-height: 1;
  }

  #header-top-links .fa-brands {
    font-size: 16px;
  }

  #header-brand {
    margin-right: var(--header-inset);
  }

  #header-brand a {
    flex: 1 1 auto;
    width: 100%;
    min-width: 0;
  }

  /* Extend the mobile logo over the teal navigation bar. */
  #header-logo {
    top: 25px;
    max-width: none;
    height: 160px;
  }

  .cms-sticky-header.is-sticky #header-logo {
    height: 60px;
  }

  #header-title {
    flex: 1 1 0;
    min-width: 0;
    width: 100%;
    height: 80px;
    max-width: none;
    object-position: left center;
  }

  .cms-sticky-header.is-sticky #header-title {
    height: 50px;
  }
}

/* Expanded submenu trigger uses the organization brand background. */
.cms-header #design-container-main-nav li:has(> .show) > .dii-sub-menu-link {
  background-color: var(--org-brand, #00a3a7) !important;
}

/* Mobile dropdown: connect to the teal bar and fill the header width. */
@media (max-width: 1024px) {
  .cms-header #design-container-main-nav {
    position: relative;
  }

  /* Anchor the dropdown to the navigation bar, rather than an inner wrapper. */
  .cms-header #design-container-main-nav :has(.dii-is-mobile),
  .cms-header #design-container-main-nav .dii-is-mobile {
    position: static !important;
  }

  .cms-header #design-container-main-nav .dii-is-mobile > ul {
    position: absolute !important;
    top: 100% !important;
    right: 0 !important;
    left: 0 !important;
    box-sizing: border-box;
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
    padding: 0 !important;
    transform: none !important;
    background-color: var(--org-brand);
  }

  .cms-header #design-container-main-nav .dii-is-mobile li {
    box-sizing: border-box;
    width: 100%;
    margin: 0 !important;
  }

  /* Keep expanded submenus in the flow, spanning the dropdown width. */
  .cms-header #design-container-main-nav .dii-is-mobile ul ul {
    position: static !important;
    box-sizing: border-box;
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
    padding: 0 !important;
    transform: none !important;
  }

  .cms-header #design-container-main-nav .dii-is-mobile li > a:not(.dii-sub-menu-icon) {
    display: block;
    box-sizing: border-box;
    width: 100% !important;
  }
}

/* Larger account links and tap areas on mobile only. */
@media (max-width: 600px) {
  #header-top-links {
    height: 48px;
    min-height: 46px;
    gap: 8px;
  }

  .cms-sticky-header.is-sticky #header-top-links {
    height: 46px;
  }

  #header-top-links a:not(.fa-brands) {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    min-height: 44px;
    padding: 0 4px;
    font-size: 16px;
    line-height: 1.2;
  }
}

/* Extra desktop clearance between the logo and navigation links. */
@media (min-width: 1025px) {
  .cms-header #design-container-main-nav {
    padding-left: calc(
      var(--header-inset) +
      var(--header-logo-width) +
      var(--header-title-offset) + 40px
    ) !important;
  }

  /* Keep the compact sticky navigation aligned with its smaller title. */
  .cms-header.is-sticky #design-container-main-nav {
    padding-left: calc(
      var(--header-inset) +
      var(--header-logo-width) +
      var(--header-title-offset)
    ) !important;
  }
}