.nes-select {
  // prettier-ignore
  $dropdown: (
    (1,1,1,1,1,1,1),
    (1,1,1,1,1,1,1),
    (0,1,1,1,1,1,0),
    (0,1,1,1,1,1,0),
    (0,0,1,1,1,0,0),
    (0,0,0,1,0,0,0),
  );
  $colors: ($base-color, map-get($default-colors, "shadow"));

  position: relative;
  width: calc(100% - #{2 * $border-size});
  margin: 4px;

  select {
    @include compact-rounded-corners();

    width: 100%;
    padding: 0.5rem 2.5rem 0.5rem 1rem;
    cursor: $cursor-click-url, pointer;
    border-radius: 0;
    outline-color: map-get($default-colors, "hover");
    -webkit-appearance: none;
    appearance: none;

    &:invalid {
      color: map-get($disabled-colors, shadow);
    }
  }

  &.is-dark select {
    color: $background-color;
    background-color: $base-color;
  }

  &::after {
    @include pixelize(3px, $dropdown, $colors);

    position: absolute;
    top: calc(50% - 11px);
    right: 36px;
    pointer-events: none;
    content: "";
  }

  // prettier-ignore
  $types:
    "success" map-get($success-colors, "normal") map-get($success-colors, "hover"),
    "warning" map-get($warning-colors, "normal") map-get($warning-colors, "hover"),
    "error" map-get($error-colors, "normal") map-get($error-colors, "hover"),
    "dark" map-get($default-colors, "normal") map-get($default-colors, "hover");

  @each $type in $types {
    &.is-#{nth($type, 1)} {
      $color: nth($type, 2);

      &::after {
        color: $color;
      }

      select {
        @include compact-border-image($color);

        outline-color: nth($type, 3);
      }
    }
  }
}
