.d-input-pin {
  --#{$prefix}input-pin-form-gap: var(--#{$prefix}ref-spacer-1);
  --#{$prefix}input-pin-form-control-focus-border-color: #{$input-focus-border-color};
  --#{$prefix}input-pin-form-control-focus-box-shadow: #{$input-focus-box-shadow};
  --#{$prefix}input-pin-form-control-min-width: 2rem;
  --#{$prefix}input-pin-form-control-max-width: 4rem;


  display: flex;
  flex-direction: column;
  align-items: flex-start;

  .d-input-pin-group {
    display: flex;
    flex-direction: row;
    gap: var(--#{$prefix}input-pin-form-gap);
    width: 100%;
  }

  .form-control {
    min-width: var(--#{$prefix}input-pin-form-control-min-width);
    max-width: var(--#{$prefix}input-pin-form-control-max-width);
    aspect-ratio: 1;
    text-align: center;
    box-shadow: none;

    &:has(~ .input-group-text) {
      padding: var(--#{$prefix}ref-spacer-3) var(--#{$prefix}ref-spacer-3);
    }

  }

  .form-control::-webkit-inner-spin-button,
  .form-control::-webkit-outer-spin-button {
    margin: 0;
    appearance: none;
  }

  &:focus-within {
    .form-control:not(.is-invalid, .is-valid) {
      border-color: var(--#{$prefix}input-pin-form-control-focus-border-color);
      box-shadow: var(--#{$prefix}input-pin-form-control-focus-box-shadow);
    }

    &:has(.form-control:hover) .form-control:not(.is-invalid, .is-valid) {
      border-color: var(--#{$prefix}input-pin-form-control-focus-border-color);
    }
  }

  // validation states
  @each $state, $data in $form-validation-states {
    $border-color: map-get($data, "border-color");
    $tooltip-bg-color: map-get($data, "tooltip-bg-color");
    $box-shadow: map-get($data, "focus-box-shadow");
    $icon: map-get($data, "icon");

    &:has(.form-control.is-#{$state}) {
      @if $enable-validation-icons {
        padding-right: $input-height-inner;
        background-image: $icon;
        background-repeat: no-repeat;
        background-position: right $input-height-inner-quarter center;
        background-size: $input-height-inner-half $input-height-inner-half;
      }

      .form-control {
        padding: $input-padding-y $input-padding-x;
        background: $input-bg;
        border-color: $tooltip-bg-color;
        box-shadow: $box-shadow;
      }

      .form-text {
        color: $border-color;
      }
    }
  }

  .input-group-text {
    padding-left: var(--#{$prefix}input-pin-form-gap);
    background-color: transparent;
  }
}
