@mixin modal---alter() {
}

@mixin modal($openSelector: '.modal--open') {
  display: block;
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  overflow-y: auto;
  overflow-x: hidden;
  outline: 0;
  background: transparent;
  z-index: -1;
  visibility: hidden;
  transition: $modal-transition;
  @include modal---alter;
}

@mixin modal--open---alter() {
}

@mixin modal--open() {
  background-color: $modal-backdrop-bg;
  z-index: $modal-z-index;
  visibility: visible;
  @include modal--open---alter;
}

@mixin modal__dialog---alter() {
}

@mixin modal__dialog() {
  position: relative;
  width: calc(100% - (#{$modal-dialog-margin} * 2));
  margin: $modal-dialog-margin;
  opacity: 0;
  visibility: hidden;
  top: -100%;
  transition: $modal-transition;
  @include media-breakpoint-up(sm) {
    max-width: $modal-md;
    margin: $modal-dialog-margin-y-sm-up auto;
    &--sm {
      max-width: $modal-sm;
    }
    &--fluid {
      max-width: 90%;
    }
  }
  @include media-breakpoint-up(lg) {
    &--lg {
      max-width: $modal-lg;
    }
  }
  @include modal__dialog---alter;
}

@mixin modal__dialog--open---alter() {
}

@mixin modal__dialog--open() {
  opacity: 1;
  visibility: visible;
  top: 0;
  @include modal__dialog--open---alter;
}

@mixin modal__content---alter() {
}

@mixin modal__content() {
  position: relative;
  display: flex;
  flex-direction: column;
  background-color: $modal-content-bg;
  border: $modal-content-border-width solid $modal-content-border-color;
  border-radius: $modal-content-border-radius;
  box-shadow: $modal-content-box-shadow;
  outline: 0;
  @include modal__content---alter;
}

@mixin modal__header---alter() {
}

@mixin modal__header() {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: $modal-header-padding-y $modal-header-padding-x;
  border-bottom: $modal-header-border-width solid $modal-header-border-color;
  @include modal__header---alter;
}

@mixin modal__title---alter() {
}

@mixin modal__title() {
  font-family: $modal-title-font-family;
  font-weight: $modal-title-font-weight;
  font-size: $modal-title-font-size;
  margin-bottom: 0;
  @include modal__title---alter;
}

@mixin modal__body---alter() {
}

@mixin modal__body() {
  position: relative;
  flex: 1 1 auto;
  padding: $modal-body-padding-y $modal-body-padding-x;
  & > .form {
    border: none;
    padding: 0;
    max-width: 100%;
    .form__footer {
      border-top: $modal-footer-border-width solid $modal-footer-border-color;
      padding: ($modal-footer-padding-y - 10px) $modal-footer-padding-x $modal-footer-padding-y;
      margin: $modal-body-padding-y -#{$modal-body-padding-x} -#{$modal-body-padding-y};
    }
  }
  @include modal__body---alter;
}

@mixin modal__footer---alter() {
}

@mixin modal__footer() {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  padding: $modal-footer-padding-y $modal-footer-padding-x;
  border-top: $modal-footer-border-width solid $modal-footer-border-color;
  > :not(:first-child) {
    margin-left: 0.5rem;
  }
  > :not(:last-child) {
    margin-right: 0.5rem;
  }
  @include modal__footer---alter;
}

@mixin has-modal-open---alter() {
}

@mixin has-modal-open() {
  overflow: hidden;
  @include has-modal-open---alter;
}
