.btn {
  --bs-btn-font-weight: #{$font-weight-normal};
  --bs-btn-disabled-color: var(--bs-body-color-inverse);

  &:not(.btn-plus, .btn-minus, .btn-sm) {
    --bs-btn-padding-x: 1.5rem;
  }

  i {
    color: currentColor;
  }

  .icon {
    color: currentColor;

    > svg {
      top: 0.25em;
    }
  }

  &.btn-primary {
    --bs-btn-color: var(--bs-body-color-inverse);
    --bs-btn-hover-color: var(--bs-btn-color);
    --bs-btn-active-color: var(--bs-btn-color);
    --bs-btn-disabled-color: var(--bs-btn-color);
  }

  &.btn-outline-primary {
    --bs-btn-hover-color: var(--bs-body-color-inverse);
  }

  &.btn-outline-white {
    --bs-btn-color: var(--bs-body-color-inverse);
    --bs-btn-bg: transparent;
    --bs-btn-border-color: var(--bs-body-color-inverse);
    --bs-btn-hover-bg: var(--bs-body-color-inverse);
    --bs-btn-hover-color: var(--bs-primary);
    --bs-btn-active-color: var(--bs-primary);
    --bs-btn-disabled-color: var(--bs-primary);
  }

  &.btn-buy {
    @include media-breakpoint-down(lg) {
      --bs-btn-padding-x: .5rem;
    }

    i {
      font-size: 1.75rem;
      margin-right: .5rem;
      line-height: 1;
      position: relative;
      top: 4px;

      @include media-breakpoint-up(lg) {
        margin-right: 1rem;
      }
    }
  }

  &.disabled {
    opacity: .85;
  }
}