@mixin menu {
  display: none;
  flex-direction: column;
  $shadow-color: transparentize($background, .2);
  $shadow: 0 10px $shadow-color, -10px 10px $shadow-color, 10px 10px $shadow-color;
  position: absolute;
  background: $background;
  box-shadow: $shadow;
  color: white;
  border: 2px solid;
  margin: 0;
  padding: 10px;
  top: 10px;
  left: 0;
  list-style: none;
  z-index: 99;
}

@mixin header-menu-trigger {
  color: $accent;
  border: 2px solid;
  margin-left: 10px;
  height: 100%;
  padding: 3px 8px;
  margin-bottom: 0 !important;
  position: relative;
  cursor: pointer;
}

.navigation-menu {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  margin: 20px 1px;

  @media ($phone) {
    margin: 0;
  }

  &__inner {
    display: flex;
    flex: 1;
    flex-wrap: wrap;
    list-style: none;
    margin: 0;
    padding: 0;

    > li {
      flex: 0 0 auto;
      margin-bottom: 10px;
      white-space: nowrap;

      &:not(:last-of-type) {
        margin-right: 20px;
      }
    }

    @media ($phone) {
      flex-direction: column;
      align-items: flex-start;
      padding: 0;

      li {
        margin: 0;
        padding: 5px;
      }
    }
  }

  .spacer {
    flex-grow: 1 !important;
  }
}

.menu {
  display: flex;
  flex-direction: column;
  position: relative;
  list-style: none;
  padding: 0;
  margin: 0;

  &__trigger {
    margin-right: 0 !important;
    color: $accent;
    user-select: none;
    cursor: pointer;
  }

  &__dropdown {
    @include menu;

    .open & {
      display: flex;
    }

    > li {
      flex: 0 0 auto;

      &:not(:last-of-type) {
        margin-bottom: 10px;
      }

      a {
        display: flex;
        padding: 5px;
      }
    }
  }

  &--desktop {
    @media ($phone) {
      display: none
    }
  }

  &--mobile {
    .menu__trigger {
      @include header-menu-trigger;
      display: none;

      @media ($phone) {
        display: block;
      }
    }

    .menu__dropdown {
      @media ($phone) {
        left: auto;
        right: 0;
      }
    }

    li {
      flex: 0 0 auto;

      &:not(:last-of-type) {
        margin-bottom: 10px;
      }
    }
  }

  &--language-selector {
    .menu__trigger {
      @include header-menu-trigger;

      @media ($phone) {
        display: none;
      }
    }

    .menu__dropdown {
      left: auto;
      right: 0;
    }
  }
}