/* Site navigation: separate desktop (top-right) and mobile (bottom-center, ≤768px) toggles driving one slide-in panel */

.site-nav {
  position: relative;
  z-index: 1500;
}

.site-nav-toggle {
  display: flex;
  justify-content: center;
  align-items: center;
  position: fixed;
  z-index: 1502;
  width: 80px;
  height: 80px;
  padding: 12px;
  margin: 0;
  border: 0;
  background: var(--jct-black);
  color: var(--jct-white);
  cursor: pointer;
  font: var(--button);
  letter-spacing: var(--button-letter-spacing);
  text-transform: uppercase;
}

.site-nav-toggle-desktop {
  top: 0;
  right: 0;
  transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1), padding 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.site-nav-toggle-desktop:hover,
.site-nav-toggle-desktop:focus-visible {
  width: 96px;
  padding: 12px 28px 12px 12px;
}

.site-nav-toggle-mobile {
  display: none;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
}

.site-nav-toggle-text {
  white-space: nowrap;
}

.site-nav-panel {
  display: none;
  position: fixed;
  top: 0;
  right: 0;
  z-index: 1501;
  width: 100%;
  max-width: 476px;
  height: 100vh;
  height: 100dvh;
  flex-direction: column;
  background: var(--jct-black);
  color: var(--jct-white);
  overflow-y: auto;
  transform: translateX(100%);
  transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

/* toggled by JS: shown just before the open transition starts, hidden again once the close transition finishes */
.site-nav-panel.is-visible {
  display: flex;
}

.site-nav.is-open .site-nav-panel {
  transform: translateX(0);
}

.site-nav-links {
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: center;
  list-style: none;
  margin: 0;
  padding: 0 12px;
}

.site-nav-links li {
  display: block;
  /* negative margin cancels the ul's side padding so the border-bottom bleeds edge to edge */
  margin: 0 -12px;
  padding: 0 12px;
  border-bottom: 1px solid var(--jct-white);
}

.site-nav-links a {
  display: block;
  padding: 20px 0;
  color: var(--jct-white);
  font: var(--h3);
  text-decoration: none;
  transition: opacity 0.2s ease;
}

.site-nav-links li.menu-item-home > a {
  font: var(--h2);
}

.site-nav-links li.menu-item-type-custom > a {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font: var(--h2);
}

.site-nav-links li.menu-item-type-custom > a::after {
  content: "↗";
}

.site-nav-links a:hover,
.site-nav-links li.current-menu-item > a,
.site-nav-links li.current_page_item > a,
.site-nav-links li.current-page-ancestor > a {
  opacity: 0.6;
}

body.site-nav-open {
  overflow: hidden;
}

/* Room for the WP admin toolbar in development / when logged in */
body.admin-bar .site-nav-toggle,
body.admin-bar .site-nav-panel {
  top: 32px;
}

body.admin-bar .site-nav-panel {
  height: calc(100vh - 32px);
  height: calc(100dvh - 32px);
}

@media (max-width: 782px) {
  body.admin-bar .site-nav-toggle,
  body.admin-bar .site-nav-panel {
    top: 46px;
  }

  body.admin-bar .site-nav-panel {
    height: calc(100vh - 46px);
    height: calc(100dvh - 46px);
  }
}

/* the mobile toggle is bottom-anchored; cancel the admin-bar top offset it inherits via the shared .site-nav-toggle class */
body.admin-bar .site-nav-toggle-mobile {
  top: auto;
}

@media (max-width: 768px) {
  .site-nav-toggle-desktop {
    display: none;
  }

  .site-nav-toggle-mobile {
    display: flex;
  }

  .site-nav-panel {
    max-width: 100%;
    transform: translateY(100%);
  }

  .site-nav.is-open .site-nav-panel {
    transform: translateY(0);
  }

  .site-nav-links a {
    padding: 16px 0;
  }
}

@media (max-width: 443px) {
  .site-nav-links a {
    font: var(--h4);
  }

  .site-nav-links li.menu-item-home > a,
  .site-nav-links li.menu-item-type-custom > a {
    font: var(--h3);
  }
}

@media (max-width: 375px) {
  .site-nav-links {
    padding-bottom: 40px;
  }
}
