.input-group {
  position: relative;
  display: flex;
  align-items: stretch;
  flex-wrap: wrap;
  width: 100%;

  > input,
  > select,
  > textarea,
  > .input {
    position: relative;
    flex: 1 1 0%;
    min-width: 0;
    margin-bottom: 0;

    + input,
    + select,
    + textarea,
    + .input {
      margin-left: -$input-border-width;
    }

    &:not(:last-child) { @include border-right-radius(0); }
    &:not(:first-child) { @include border-left-radius(0); }
  }

  > .input {
    display: flex;
    align-items: stretch;
  }
}

.input-group-prepend,
.input-group-append {
  display: flex;

  .btn {
    position: relative;
    margin: 0;
  }

  .btn + .btn,
  .btn + .input-group-text,
  .input-group-text + .input-group-text,
  .input-group-text + .btn {
    margin-left: -$input-border-width;
  }
}

.input-group-prepend { margin-right: -$input-border-width; }
.input-group-append { margin-left: -$input-border-width; }

.input-group-text {
  display: flex;
  align-items: center;
  padding: $input-padding-y $input-padding-x;
  margin-bottom: 0;
  font-size: $font-size;
  text-align: center;
  white-space: nowrap;
  border: $input-border-width solid $input-border-color;
  @include border-radius($input-radius);
}

.input-group-prepend > .btn,
.input-group-prepend > .input-group-text,
.input-group-append:not(:last-child) > .btn,
.input-group-append:not(:last-child) > .input-group-text,
.input-group-append:last-child > .btn:not(:last-child),
.input-group-append:last-child > .input-group-text:not(:last-child) {
  @include border-right-radius(0);
}

.input-group-append > .btn,
.input-group-append > .input-group-text,
.input-group-prepend:not(:first-child) > .btn,
.input-group-prepend:not(:first-child) > .input-group-text,
.input-group-prepend:first-child > .btn:not(:first-child),
.input-group-prepend:first-child > .input-group-text:not(:first-child) {
  @include border-left-radius(0);
}
