$select-colors: $form-colors !default

.select
  --select-arrow: #{$input-arrow}
  --select-disabled-border-color: #{$input-disabled-border-color}
  --select-hover-color: #{$input-hover-color}
  --select-disabled-color: #{$input-disabled-color}
  --select-focus-box-shadow-size: #{$input-focus-box-shadow-size}
  display: inline-block
  max-width: 100%
  position: relative
  vertical-align: top
  &:not(.is-multiple)
    height: var(--input-height)
  &:not(.is-multiple):not(.is-loading)
    &::after
      @extend %arrow
      border-color: var(--select-arrow)
      +ltr-position(1.125em)
      z-index: 4
  &.is-rounded
    select
      border-radius: var(--radius-rounded, #{$radius-rounded})
      +ltr-property("padding", 1em, false)
  select
    @extend %input
    cursor: pointer
    display: block
    font-size: 1em
    max-width: 100%
    outline: none
    &::-ms-expand
      display: none
    &[disabled]:hover,
    fieldset[disabled] &:hover
      border-color: var(--select-disabled-border-color)
    &:not([multiple])
      +ltr-property("padding", 2.5em)
    &[multiple]
      height: auto
      padding: 0
      option
        padding: 0.5em 1em
  // States
  &:not(.is-multiple):not(.is-loading):hover
    &::after
      border-color: var(--select-hover-color)
  // Colors
  @each $name, $pair in $select-colors
    $color: nth($pair, 1)
    &.is-#{$name}
      --hover-border-delta: -5%
      --hover-border-#{$name}-l: calc(#{var(--#{$name}-l)} + #{var(--hover-border-delta)})
      --hover-border-color: hsla(var(--#{$name}-h), var(--#{$name}-s), var(--hover-border-#{$name}-l), var(--#{$name}-a))
      --focus-box-shadow-color: hsla(var(--#{$name}-h), var(--#{$name}-s), var(--#{$name}-l), 0.25)
      &:not(:hover)::after
        border-color: var(--#{$name}, #{$color})
      select
        border-color: var(--#{$name}, #{$color})
        &:hover,
        &.is-hovered
          border-color: var(--hover-border-color, #{bulmaDarken($color, 5%)})
        &:focus,
        &.is-focused,
        &:active,
        &.is-active
          box-shadow: var(--select-focus-box-shadow-size) var(--focus-box-shadow-color, #{bulmaRgba($color, 0.25)})
  // Sizes
  &.is-small
    +control-small
  &.is-medium
    +control-medium
  &.is-large
    +control-large
  // Modifiers
  &.is-disabled
    &::after
      border-color: var(--select-disabled-color)
  &.is-fullwidth
    width: 100%
    select
      width: 100%
  &.is-loading
    &::after
      @extend %loader
      margin-top: 0
      position: absolute
      +ltr-position(0.625em)
      top: 0.625em
      transform: none
    &.is-small:after
      font-size: var(--size-small, #{$size-small})
    &.is-medium:after
      font-size: var(--size-medium, #{$size-medium})
    &.is-large:after
      font-size: var(--size-large, #{$size-large})
