button {
  border: 0;

  background-color: inherit;
  color: inherit;

  white-space: nowrap;
}

.button-group {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 1rem;
}

.btn {
  min-width: 0;

  display: flex;
  align-items: center;
  gap: 0.25rem;

  transition: all 50ms ease-in-out;

  &.btn-center {
    justify-content: center;
  }

  &.btn-fill {
    width: 100%;
  }

  &:hover,
  &:active {
    i {
      opacity: 1;
    }
  }
}

.btn.btn-simple {
  --bs-btn-border-width: 0 !important;

  --bs-btn-color: currentColor;
  --bs-btn-bg: transparent;
  --bs-btn-border-color: transparent;

  --bs-btn-hover-color: currentColor;
  --bs-btn-hover-bg: transparent;
  --bs-btn-hover-border-color: transparent;

  --bs-btn-active-color: color-mix(in srgb, currentColor, var(--bs-black) 60%);
  --bs-btn-active-bg: transparent;
  --bs-btn-active-border-color: transparent;

  --bs-btn-disabled-color: color-mix(in srgb, currentColor, var(--bs-black) 20%);
  --bs-btn-disabled-bg: transparent;
  --bs-btn-disabled-border-color: transparent;
}

.btn.btn-ghost {
  --bs-btn-border-width: 1px;

  --bs-btn-color: var(--bs-body-color);
  --bs-btn-bg: transparent;
  --bs-btn-border-color: transparent;

  --bs-btn-hover-color: var(--bs-body-color);
  --bs-btn-hover-bg: var(--bs-secondary-bg);
  --bs-btn-hover-border-color: var(--bs-secondary-bg);

  --bs-btn-active-color: var(--bs-body-color);
  --bs-btn-active-bg: var(--bs-secondary-bg);
  --bs-btn-active-border-color: var(--bs-secondary-bg);

  --bs-btn-disabled-color: color-mix(in srgb, var(--bs-body-color), var(--bs-black) 20%);
  --bs-btn-disabled-bg: transparent;
  --bs-btn-disabled-border-color: transparent;
}

.btn.btn-default {
  --bs-btn-border-width: 1px;

  --bs-btn-color: var(--bs-body-color);
  --bs-btn-bg: var(--bs-body-bg);
  --bs-btn-border-color: var(--bs-border-color);

  --bs-btn-hover-color: var(--bs-body-color);
  --bs-btn-hover-bg: color-mix(in srgb, var(--bs-body-bg), var(--bs-black) 20%);
  --bs-btn-hover-border-color: var(--bs-border-color);

  --bs-btn-active-color: var(--bs-body-color);
  --bs-btn-active-bg: color-mix(in srgb, var(--bs-body-bg), var(--bs-black) 20%);
  --bs-btn-active-border-color: var(--bs-border-color);

  --bs-btn-disabled-color: color-mix(in srgb, var(--bs-body-color), var(--bs-black) 20%);
  --bs-btn-disabled-bg: var(--bs-body-bg);
  --bs-btn-disabled-border-color: var(--bs-border-color);
}

.btn.btn-orange {
  --bs-btn-border-width: 2px;

  --bs-btn-color: var(--bs-white);
  --bs-btn-bg: var(--bs-orange);
  --bs-btn-border-color: var(--bs-orange);

  --bs-btn-hover-color: var(--bs-white);
  --bs-btn-hover-bg: color-mix(in srgb, var(--bs-orange), var(--bs-black) 20%);
  --bs-btn-hover-border-color: var(--bs-orange);

  --bs-btn-active-color: var(--bs-white);
  --bs-btn-active-bg: color-mix(in srgb, var(--bs-orange), var(--bs-black) 20%);
  --bs-btn-active-border-color: var(--bs-orange);

  --bs-btn-disabled-color: var(--bs-white);
  --bs-btn-disabled-bg: color-mix(in srgb, var(--bs-orange), var(--bs-black) 20%);
  --bs-btn-disabled-border-color: var(--bs-orange);
}

.btn.btn-green {
  --bs-btn-border-width: 2px;

  --bs-btn-color: var(--bs-white);
  --bs-btn-bg: var(--bs-green);
  --bs-btn-border-color: var(--bs-green);

  --bs-btn-hover-color: var(--bs-white);
  --bs-btn-hover-bg: color-mix(in srgb, var(--bs-green), var(--bs-black) 20%);
  --bs-btn-hover-border-color: var(--bs-green);

  --bs-btn-active-color: var(--bs-white);
  --bs-btn-active-bg: color-mix(in srgb, var(--bs-green), var(--bs-black) 20%);
  --bs-btn-active-border-color: var(--bs-green);

  --bs-btn-disabled-color: var(--bs-white);
  --bs-btn-disabled-bg: color-mix(in srgb, var(--bs-green), var(--bs-black) 20%);
  --bs-btn-disabled-border-color: var(--bs-green);
}

.btn.btn-blue {
  --bs-btn-border-width: 2px;

  --bs-btn-color: var(--bs-white);
  --bs-btn-bg: var(--bs-blue);
  --bs-btn-border-color: var(--bs-blue);

  --bs-btn-hover-color: var(--bs-white);
  --bs-btn-hover-bg: color-mix(in srgb, var(--bs-blue), var(--bs-black) 20%);
  --bs-btn-hover-border-color: var(--bs-blue);

  --bs-btn-active-color: var(--bs-white);
  --bs-btn-active-bg: color-mix(in srgb, var(--bs-blue), var(--bs-black) 20%);
  --bs-btn-active-border-color: var(--bs-blue);

  --bs-btn-disabled-color: var(--bs-white);
  --bs-btn-disabled-bg: color-mix(in srgb, var(--bs-blue), var(--bs-black) 20%);
  --bs-btn-disabled-border-color: var(--bs-blue);
}

.btn.btn-blue-outline {
  --bs-btn-border-width: 2px;

  --bs-btn-color: var(--bs-blue);
  --bs-btn-bg: transparent;
  --bs-btn-border-color: var(--bs-blue);

  --bs-btn-hover-color: color-mix(in srgb, var(--bs-blue), var(--bs-black) 20%);
  --bs-btn-hover-bg: transparent;
  --bs-btn-hover-border-color: color-mix(in srgb, var(--bs-blue), var(--bs-black) 20%);

  --bs-btn-active-color: color-mix(in srgb, var(--bs-blue), var(--bs-black) 20%);
  --bs-btn-active-bg: transparent;
  --bs-btn-active-border-color: color-mix(in srgb, var(--bs-blue), var(--bs-black) 20%);

  --bs-btn-disabled-color: color-mix(in srgb, var(--bs-blue), var(--bs-black) 20%);
  --bs-btn-disabled-bg: transparent;
  --bs-btn-disabled-border-color: color-mix(in srgb, var(--bs-blue), var(--bs-black) 20%);
}

.btn.btn-purple {
  --bs-btn-border-width: 2px;

  --bs-btn-color: var(--bs-white);
  --bs-btn-bg: var(--bs-purple);
  --bs-btn-border-color: var(--bs-purple);

  --bs-btn-hover-color: var(--bs-white);
  --bs-btn-hover-bg: color-mix(in srgb, var(--bs-purple), var(--bs-black) 20%);
  --bs-btn-hover-border-color: var(--bs-purple);

  --bs-btn-active-color: var(--bs-white);
  --bs-btn-active-bg: color-mix(in srgb, var(--bs-purple), var(--bs-black) 20%);
  --bs-btn-active-border-color: var(--bs-purple);

  --bs-btn-disabled-color: var(--bs-white);
  --bs-btn-disabled-bg: color-mix(in srgb, var(--bs-purple), var(--bs-black) 20%);
  --bs-btn-disabled-border-color: var(--bs-purple);
}

.btn.btn-red {
  --bs-btn-border-width: 2px;

  --bs-btn-color: var(--bs-white);
  --bs-btn-bg: var(--bs-red);
  --bs-btn-border-color: var(--bs-red);

  --bs-btn-hover-color: var(--bs-white);
  --bs-btn-hover-bg: color-mix(in srgb, var(--bs-red), var(--bs-black) 20%);
  --bs-btn-hover-border-color: var(--bs-red);

  --bs-btn-active-color: var(--bs-white);
  --bs-btn-active-bg: color-mix(in srgb, var(--bs-red), var(--bs-black) 20%);
  --bs-btn-active-border-color: var(--bs-red);

  --bs-btn-disabled-color: var(--bs-white);
  --bs-btn-disabled-bg: color-mix(in srgb, var(--bs-red), var(--bs-black) 20%);
  --bs-btn-disabled-border-color: var(--bs-red);
}