#block-reboat-navigationmenu {
  --navigation-panel-top: 100px;
  --menu-reveal-duration: 500ms;

  display: none;
  position: fixed;
  top: var(--navigation-panel-top);
  left: var(--padding-page);
  right: var(--padding-page);
  max-height: calc(100dvh - var(--navigation-panel-top) - 16px);
  z-index: 4;
  padding: 36px clamp(24px, 3vw, 48px);
  isolation: isolate;
  border: 1px solid var(--color-white);
  border-radius: clamp(18px, 2vw, 28px);
  overflow: hidden;

  /* Reveal downwards and retract upwards, with a straight lower edge. */
  clip-path: inset(0 0 100%);
  transition: clip-path var(--menu-reveal-duration) cubic-bezier(0.55, 0, 0.7, 0.3);
}

#block-reboat-navigationmenu[is-open="true"] {
  display: flex;
}

#block-reboat-navigationmenu.navigation-menu--open {
  --menu-reveal-duration: 340ms;

  clip-path: inset(0);
  transition-timing-function: cubic-bezier(0.22, 0.61, 0.36, 1);
}

#block-reboat-navigationmenu.navigation-menu--positioning {
  transition: none;
}

#block-reboat-navigationmenu .field--name-body {
  display: flex;
  min-height: 0;
  width: 100%;
}

.navigation-menu-background {
  background-color: var(--color-brand-blue);
  position: absolute;
  inset: 0;
  z-index: -1;
  pointer-events: none;
}

.navigation-menu {
  width: 100%;
  min-height: 0;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.navigation-menu:focus {
  /* The landmark is a focus hand-off; individual links retain visible focus. */
  outline: none;
}

.navigation-menu-links-wrapper {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(24px, 3vw, 48px);
  overflow-y: auto;
  overscroll-behavior: contain;
  min-height: 0;
  padding: 6px 6px 10px;
}

.navigation-menu-links-list,
.navigation-menu-links-list ul {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.navigation-menu-links-list-title {
  color: #6ed1ed;
  font-size: 16px;
  line-height: 1.3;
  margin-bottom: 8px;
}

.navigation-menu-links-list a {
  font-size: clamp(22px, 2.2vw, 32px);
  line-height: 1.15;
  font-family: var(--font-heading);
  font-weight: 400;
  color: var(--color-white);
  text-transform: lowercase;
  display: block;
  overflow-wrap: anywhere;
  transition: color 200ms ease;
}

.navigation-menu-links-list a:hover,
.navigation-menu-links-list a:focus-visible {
  color: #6ed1ed;
}

.navigation-menu-links-list a::first-letter {
  text-transform: uppercase;
}

@media (width <= 769px) {
  #block-reboat-navigationmenu {
    padding-block: 28px;
  }

  .navigation-menu-links-wrapper {
    grid-template-columns: 1fr;
    gap: 28px;
  }

  .navigation-menu-links-list a {
    font-size: 24px;
  }
}

@media (prefers-reduced-motion: no-preference) {
  .navigation-menu-links-list:nth-child(2) {
    --menu-column-delay: 80ms;
  }

  .navigation-menu-links-list:nth-child(3) {
    --menu-column-delay: 160ms;
  }

  .navigation-menu-links-list-title {
    --menu-row-delay: 25ms;
  }

  .navigation-menu-links-list li {
    --menu-row-delay: 110ms;
  }

  .navigation-menu-links-list li:nth-child(2) {
    --menu-row-delay: 165ms;
  }

  .navigation-menu-links-list li:nth-child(3) {
    --menu-row-delay: 220ms;
  }

  .navigation-menu-links-list li:nth-child(4) {
    --menu-row-delay: 275ms;
  }

  .navigation-menu-links-list li:nth-child(5) {
    --menu-row-delay: 330ms;
  }

  .navigation-menu-links-list li:nth-child(n + 6) {
    --menu-row-delay: 385ms;
  }

  .navigation-menu-links-list-title,
  .navigation-menu-links-list li {
    --menu-text-tilt: -3deg;

    width: fit-content;
    max-width: 100%;
    opacity: 0;
  }

  .navigation-menu-links-list li:nth-child(even) {
    --menu-text-tilt: 3deg;
  }

  .navigation-menu--open :is(.navigation-menu-links-list-title, .navigation-menu-links-list li) {
    /* InDancEdu's elastic wiggle, mirrored vertically to arrive from above. */
    animation: reboat-menu-text-in 540ms ease-out both;
    animation-delay: calc((var(--menu-column-delay, 0ms) + var(--menu-row-delay, 0ms)) * 0.8);
    transform-origin: 50% 65%;
  }

  .navigation-menu--closing :is(.navigation-menu-links-list-title, .navigation-menu-links-list li) {
    animation: reboat-menu-text-out 350ms ease-in-out both;

    /* Reverse the entrance order, finishing before the 500ms panel close. */
    animation-delay: calc((545ms - var(--menu-column-delay, 0ms) - var(--menu-row-delay, 0ms)) * 0.25);
    transform-origin: 50% 65%;
  }

  .navigation-menu-links-list li:focus-within {
    animation: none;
    opacity: 1;
  }
}

@keyframes reboat-menu-text-in {
  0% {
    opacity: 0;
    transform: translateY(-24px) rotate(var(--menu-text-tilt)) scale(0.97, 1.04);
  }

  55% {
    opacity: 1;
    transform: translateY(5px) rotate(calc(var(--menu-text-tilt) * -0.5)) scale(1.02, 0.98);
  }

  78% {
    transform: translateY(-2px) rotate(calc(var(--menu-text-tilt) * 0.2)) scale(0.995, 1.01);
  }

  100% {
    opacity: 1;
    transform: none;
  }
}

@keyframes reboat-menu-text-out {
  0% {
    opacity: var(--menu-exit-opacity, 1);
    transform: translate(0, 0) rotate(0deg);
  }

  25% {
    transform: translateY(2px) rotate(calc(var(--menu-text-tilt) * 0.2)) scale(0.995, 1.01);
  }

  55% {
    transform: translateY(-8px) rotate(calc(var(--menu-text-tilt) * -0.5)) scale(1.02, 0.98);
  }

  100% {
    opacity: 0;
    transform: translateY(-24px) rotate(var(--menu-text-tilt)) scale(0.97, 1.04);
  }
}

@media (prefers-reduced-motion: reduce) {
  #block-reboat-navigationmenu {
    clip-path: none;
    transition: none;
  }
}
