.mykn-select {
  --mykn-select-color-background: var(--form-select-default-background);
  --mykn-select-color-text: var(--form-select-default-text);
  --mykn-select-color-border: var(--form-border);

  --mykn-select-padding-v: 0;
  --mykn-select-padding-h: 0;
  --mykn-select-font-size: var(--typography-font-size-body-s);
  --mykn-select-line-height: var(--typography-line-height-body-s);
  --mykn-select-min-height: 0;
  --mykn-select-spacing-pill: calc(var(--sizes-spacing-xs-h) / 4);

  align-items: center;
  background: var(--mykn-select-color-background);
  border: 1px solid var(--mykn-select-color-border);
  border-radius: var(--sizes-border-radius-s);
  box-sizing: border-box;
  color: var(--mykn-select-color-text);
  cursor: pointer;
  display: inline-flex;
  justify-content: space-between;
  font-family: var(--typography-font-family-body), sans-serif;
  font-size: var(--mykn-select-font-size);
  font-weight: var(--typography-font-weight-normal);
  line-height: var(--mykn-select-line-height);
  min-height: var(--mykn-select-min-height);
  width: min(320px, 100%);
  max-width: 100%;
  padding-block: var(--mykn-select-padding-v);
  padding-inline: var(--mykn-select-padding-h);
  position: relative;
  text-align: start;

  &--pad-h {
    --mykn-select-padding-h: var(--sizes-spacing-xs-h);
  }

  &--pad-v {
    --mykn-select-min-height: 42px;
    --mykn-select-padding-v: var(
      --mykn-select-padding-xs,
      var(--sizes-spacing-xs-v)
    );
  }

  &--multiple#{&}--pad-v {
    --mykn-select-padding-v: calc(
      var(--mykn-select-padding-xs, var(--sizes-spacing-xs-v)) - var(
          --mykn-select-spacing-pill
        ) *
        2
    );
  }

  &--size-xl {
    --mykn-select-font-size: var(--typography-font-size-xl);
    --mykn-select-line-height: var(--typography-line-height-xl);
  }

  &--size-xs {
    --mykn-select-font-size: var(--typography-font-size-body-xs);
    --mykn-select-line-height: var(--typography-line-height-body-xs);
    --mykn-select-min-height: 0;
    --mykn-select-padding-xs: calc(var(--sizes-spacing-xs-h) / 2);
  }

  &--size-xxs {
    --mykn-select-font-size: var(--typography-font-size-body-xs);
    --mykn-select-line-height: var(--typography-line-height-body-xs);
    --mykn-select-min-height: 0;
    --mykn-select-padding-xs: calc(var(--sizes-spacing-xs-h) / 2);
    --mykn-select-height: calc(3 * var(--sizes-spacing-xs-h) + 2px) !important;
    --mykn-select-width: calc(3 * var(--sizes-spacing-xs-h) + 2px) !important;
  }

  &[aria-hidden="true"] {
    display: none;
  }

  &--input-size-fit-content {
    width: fit-content;
  }

  // Empty state
  &:has(option[selected][value=""]) &__label {
    color: var(--typography-color-muted);
  }

  &:has(option[selected][value=""]) &__clear {
    visibility: hidden;
  }

  &--variant-primary {
    --mykn-select-color-background: var(--form-select-primary-background);
    --mykn-select-color-border: var(--form-select-primary-border);
    --mykn-select-color-text: var(--form-select-primary-text);
  }

  &--variant-secondary {
    --mykn-select-color-background: var(--form-select-secondary-background);
    --mykn-select-color-border: var(--form-select-secondary-border);
    --mykn-select-color-text: var(--form-select-secondary-text);
  }

  &--variant-accent {
    --mykn-select-color-background: var(--form-select-accent-background);
    --mykn-select-color-border: var(--form-select-accent-border);
    --mykn-select-color-text: var(--form-select-accent-text);
  }

  &--variant-transparent {
    --mykn-select-color-background: transparent;
  }

  .mykn-icon {
    pointer-events: none;
    transition: transform var(--animation-duration-medium)
      var(--animation-timing-function);
  }

  &[aria-expanded="true"] > .mykn-icon {
    transform: scaleY(-1);
  }

  &__label {
    font-size: var(--mykn-select-font-size);
    line-height: var(--mykn-select-line-height);
    width: 100%;
    flex-grow: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }

  &--multiple &__label {
    white-space: unset;
    overflow: visible;
  }

  &__pill {
    display: inline-flex;
    align-items: center;
    padding: 0 0.5em; // TODO: spacing-h and spacing-v are too big for this. Add more tokens or hardcode?
    margin: var(--mykn-select-spacing-pill);
    border-radius: var(--sizes-border-radius-l);
    background-color: var(--form-select-secondary-background);
    color: var(--form-select-secondary-text);
    font-size: var(--typography-font-size-body-xs);
    line-height: var(--typography-font-size-body-xs);

    &-remove {
      margin-inline-start: 0.05em;
    }
  }

  &__clear {
    appearance: none;
    background-color: transparent;
    border: none;
    color: var(--typography-color-body);
    margin: 0;
    margin-inline-end: var(--sizes-spacing-xs-h);
    padding: 0;
    flex-shrink: 0;
  }

  .mykn-icon {
    flex-shrink: 0;
  }

  &__dropdown {
    background: var(--form-select-default-background);
    border: 1px solid var(--form-border);
    border-radius: var(--sizes-border-radius-s);
    box-sizing: border-box;
    cursor: default;
    display: flex;
    flex-direction: column;
    max-height: var(--mykn-select-dropdown-max-h);
    min-width: 100%;
    overflow: auto;
    padding: var(--sizes-spacing-xs-v) 0;
    width: fit-content;
    z-index: 1000;
  }

  &__loading {
    display: flex;
    justify-content: center;
    padding: var(--sizes-spacing-s-v) 0;
  }

  &__options {
    overflow: auto;
  }

  &__search {
    position: relative;
    margin: var(--sizes-spacing-xs-v) var(--sizes-spacing-xs-h);
    .mykn-input {
      width: 100%;
    }
  }

  &__search-clear {
    position: absolute;
    right: var(--sizes-spacing-xs-h);
    top: 50%;
    transform: translateY(-50%);
  }

  &__no-results {
    display: flex;
    justify-content: center;
  }
}

.mykn-option {
  --mykn-option-color-background: var(--form-select-default-background);
  --mykn-option-color-body: var(--form-select-default-text);
  --mykn-option-font-weight: var(--typography-font-weight-normal);

  background: var(--mykn-option-color-background);
  box-sizing: border-box;
  color: var(--mykn-option-color-body);
  cursor: pointer;
  font-family: var(--typography-font-family-body), sans-serif;
  font-size: var(--mykn-select-font-size);
  font-weight: var(--mykn-option-font-weight);
  line-height: var(--mykn-select-line-height);
  padding: 0 var(--sizes-spacing-xs-h);
  text-align: start;
  white-space: nowrap;

  &[aria-selected="true"] {
    --mykn-option-color-body: var(--form-select-secondary-text);
    --mykn-option-font-weight: var(--typography-font-weight-bold);
  }

  &#{&}--active {
    --mykn-option-color-background: var(--form-select-primary-background);
    --mykn-option-color-body: var(--form-select-primary-text);
  }
}
