.dropdown {
  position: relative;

  &:not(.icon) > :has(+ div) {
    white-space: nowrap;

    &:after {
      content: '';
      width: .3em;
      height: .3em;
      border-right: 2px solid;
      border-bottom: 2px solid;
      transform: rotate(45deg);
      margin: .25em .25em .25em .5em;
      transition: all .3s;
      display: inline-block;
    } 
  }
  > input:checked ~ label:after {
    transform: translateY(.2em) rotate(-135deg);
  }

  > input,
  > div ~ button {
    display: none;
  }

  > div {
    display: flex;
    flex-direction: column;
    box-sizing: border-box;
    min-width: 10em;
    overflow-y: auto;
    box-shadow: var(--shadow);
    background: var(--color-fg);
    border-radius: var(--border-radius);
    z-index: 1000;
    transition: all .3s ease;
  }
}

@media (max-width: 900px) {
  .dropdown:not(.-desktop) {
    > div {
      max-height: 80vh;
      position: fixed;
      bottom: -80vh;
      left: 0;
      right: 0;
      pointer-events: none;
    }

    > input:checked ~ div,
    > :is(button, span, a):hover ~ *,
    > :is(button, span, a) ~ div:hover {
      bottom: 0;
      pointer-events: auto;
    }
    &:before,
    &:after,
    label:before {
      content: '';
      position: fixed;
      top: 0;
      right: 0;
      left: 0;
      z-index: 1000;
      transition: all .3s .3s;
      height: 100vh;
      pointer-events: visible;
      visibility: hidden;
    }
    &:has(> input:checked) > label:before {
      visibility: visible;
    }
    &:has(> input:checked, > :is(button, span, a):hover, > :is(button, span, a) + div:hover):before {
      z-index: 999;
      backdrop-filter: blur(2px);
      visibility: visible;
    }
    &:after {
      width: .5em;
      height: .5em;
      border-right: 2px solid;
      border-bottom: 2px solid;
      transform: rotate(45deg);
      margin: 1em auto;
      pointer-events: none;
      opacity: 0;
    }
    &:has(> input:checked, > :is(button, span, a):hover, > :is(button, span, a) + div:hover):after {
      visibility: visible;
      opacity: 1;
    }
  }

  .dropdown.-desktop {
    > :has(+ div) {
      font-weight: bold;
      background: none;
      color: var(--color-header-text) !important;
      border: 0;
      padding: 0;

      &:after {
        display: none;
      }
    }

    > div {
      box-shadow: none;
      border-bottom: var(--border-width) solid var(--color-text);
      max-height: none;
      background: none;
      padding: 1em 0 !important;
      border-radius: 0;
    }
  }
}

@media (min-width: 900px) {
  .dropdown:not(.-mobile) > div {
    display: none;
    position: absolute;
    right: inherit;
    left: inherit;
    max-height: 60vh;
  }

  .dropdown {
    > input:checked ~ div,
    &:hover > :not(input, label) ~ div,
    &:focus-within > :is(button) ~ div {
      display: flex;
    }
  }

  .dropdown.-mobile {
    > :has(+ div) {
      font-weight: bold;
      background: none;
      color: var(--color-header-text) !important;
      border: 0;
      padding: 0;

      &:after {
        display: none;
      }
    }

    > div {
      box-shadow: none !important;
      border-bottom: var(--border-width) solid var(--color-text);
      max-height: none;
      background: none;
      padding: 1em 0 !important;
      border-radius: 0;
    }
  }
}
