.c__select {
  position: relative;

  &__wrapper {
    border-radius: var(--c--components--forms-select--border-radius);
    border-width: var(--c--components--forms-select--border-width);
    border-color: var(--c--components--forms-select--border-color);
    border-style: var(--c--components--forms-select--border-style);
    display: flex;
    align-items: center;
    transition: border var(--c--theme--transitions--duration) var(--c--theme--transitions--ease-out);
    padding: 0 0.75rem;
    gap: 1rem;
    color: var(--c--components--forms-select--color);
    box-sizing: border-box;
    height: var(--c--components--forms-select--height);
    cursor: pointer;
    background-color: var(--c--components--forms-select--background-color);
    position: relative;
    overflow: hidden;

    label {
      cursor: pointer;
    }

    &:hover {
      border-radius: var(--c--components--forms-select--border-radius--hover);
      border-color: var(--c--components--forms-select--border-color--hover);
    }

    &:focus-within {
      border-radius: var(--c--components--forms-select--border-radius--focus);
      border-color: var(--c--components--forms-select--border-color--focus);

      label {
        color: var(--c--components--forms-select--label-color--focus);
      }
    }
  }

  &__inner {
    flex-grow: 1;
    display: flex;
    justify-content: space-between;
    user-select: none;
    min-width: 0;

    &__value {
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;
      flex-grow: 1;
      font-size: var(--c--components--forms-select--font-size);

      input {
        outline: 0;
        border: 0;
        padding: 0;
        margin: 0;
        color: var(--c--components--forms-select--color);
        font-size: var(--c--components--forms-select--font-size);
      }
    }

    &__actions {
      position: relative;
      top: -14px;
      display: flex;
      align-items: center;

      span {
        font-size: 1.25rem;
        transition: all var(--c--theme--transitions--duration) var(--c--theme--transitions--ease-out);
        &.opened {
          transform: rotate(180deg);
        }
      }

      &__clear {
        color: var(--c--theme--colors--greyscale-500);
      }
      &__separator {
        background-color: var(--c--theme--colors--greyscale-400);
        height: 24px;
        width: 1px;
      }
      &__open {
        color: var(--c--theme--colors--greyscale-900);
      }
    }
  }

  .labelled-box--no-label {
    .c__select__inner {
      align-items: center;
      &__actions {
        top: 0;
      }
    }
  }

  &__menu {
    position: absolute;
    overflow: auto;
    width: calc(100% - 4px);
    max-height: 10rem;
    box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.3);
    background-color: var(--c--components--forms-select--menu-background-color);
    transform: translate(2px, 0);
    display: none;
    z-index: 1;

    &--opened {
      display: block;
    }

    ul {
      list-style-type: none;
      padding: 0;
      margin: 0;
      padding-top: 3px;
    }

    &__item {
      padding: 0.75rem;
      font-size: var(--c--components--forms-select--item-font-size);
      color: var(--c--components--forms-select--item-color);
      cursor: pointer;

      &--highlight {
        background-color: var(--c--components--forms-select--item-background-color--hover);
      }

      &--selected {
        background-color: var(--c--components--forms-select--item-background-color--selected);
      }

      &--disabled {
        color: var(--c--components--forms-select--item-color--disabled);
        cursor: default;
      }
    }
  }

  /** Modifiers */

  &--disabled {

    .c__select__wrapper {
      color: var(--c--theme--colors--greyscale-600);
      border-color: var(--c--theme--colors--greyscale-200);
      cursor: default;

      label {
        cursor: default;
        color: var(--c--theme--colors--greyscale-600);
      }
    }

    &:hover {
      border-color: var(--c--theme--colors--greyscale-200);
    }
  }

  &--error {

    .c__select__wrapper {
      border-color: var(--c--theme--colors--danger-600);
    }

    &:not(.c__select__wrapper--disabled) {
      .c__select__wrapper:hover {
        border-color: var(--c--theme--colors--danger-200);
      }
    }
  }

  &--success {

    .c__select__wrapper {
      border-color: var(--c--theme--colors--success-600);
    }

    &:not(.c__select__wrapper--disabled) {
      .c__select__wrapper:hover {
        border-color: var(--c--theme--colors--success-400);
      }
    }
  }
}