.button {
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 3.0625rem;
  border: 1px solid;
  text-decoration: none;
  font-family: var(--brand-font-bold);
  color: var(--color-white);
  min-height: var(--touch-area, 56px);
  box-sizing: border-box;
}

.button__container {
  display: flex;
  flex-direction: column;
}

/* Button defaults */

.buttonPrimary {
  background-color: var(--color-black);
  cursor: pointer;
  color: var(--color-white);
}

.buttonSecondary {
  border-color: var(--color-black);
  background-color: transparent;
  color: var(--color-black);
}

.buttonTertiary {
  border-color: transparent;
  background-color: transparent;
  color: var(--color-black);
  text-decoration: underline;
  width: fit-content;
}

/* Success */

.buttonPrimary_success {
  background-color: var(--color-success);
  cursor: pointer;
  color: var(--color-white);
}

.buttonSecondary_success {
  border-color: var(--color-success);
  background-color: transparent;
  color: var(--color-success);
}

.buttonTertiary_success {
  border-color: transparent;
  background-color: transparent;
  color: var(--color-success);
  text-decoration: underline;
}

/* Information */

.buttonPrimary_information {
  background-color: var(--color-information);
  cursor: pointer;
  color: var(--color-white);
}

.buttonSecondary_information {
  border-color: var(--color-information);
  background-color: transparent;
  color: var(--color-information);
}

.buttonTertiary_information {
  border-color: transparent;
  background-color: transparent;
  color: var(--color-information);
  text-decoration: underline;
}

/* Warning */

.buttonPrimary_warning {
  background-color: var(--color-warning);
  cursor: pointer;
  color: var(--color-white);
}

.buttonSecondary_warning {
  border-color: var(--color-warning);
  background-color: transparent;
  color: var(--color-warning);
}

.buttonTertiary_warning {
  border-color: transparent;
  background-color: transparent;
  color: var(--color-warning);
  text-decoration: underline;
}

/* Danger */

.buttonPrimary_danger {
  background-color: var(--color-danger);
  cursor: pointer;
  color: var(--color-white);
}

.buttonSecondary_danger {
  border-color: var(--color-danger);
  background-color: transparent;
  color: var(--color-danger);
}

.buttonTertiary_danger {
  border-color: transparent;
  background-color: transparent;
  color: var(--color-danger);
  text-decoration: underline;
}

.button_link {
  padding: 0;
  height: var(--line-height-body);
  text-decoration: underline;
  background: none;
  border: none;
  font-family: var(--brand-font-bold);
  user-select: none;
  line-height: var(--line-height-body);
  font-size: var(--font-size-body);
  color: var(--color-information);
  cursor: pointer;
}

.button_small {
  padding-inline: 0.75rem;
  font-size: var(--font-body-small-font-size, 12px);
  cursor: pointer;
  height: 2rem;
  min-height: 2rem;
  margin: auto 1rem;
  color: var(--color-black);
}

.button_loading {
  --base-color: #ebebeb;
  --highlight-color: #f5f5f5;
  --animation-duration: 1.5s;
  --animation-direction: normal;
  --pseudo-element-display: block;
  background-color: var(--base-color);
  color: var(--base-color);
  position: relative;
  overflow: hidden;
  z-index: 1;
  border: none;
  cursor: default;
}

.button_loading::after {
  content: ' ';
  color: var(--base-color);
  
  display: var(--pseudo-element-display);
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 100%;
  background-repeat: no-repeat;
  background-image: linear-gradient( 90deg, var(--base-color), var(--highlight-color), var(--base-color) );
  transform: translateX(-100%);
  animation-name: react-loading-skeleton;
  animation-direction: var(--animation-direction);
  animation-duration: var(--animation-duration);
  animation-timing-function: ease-in-out;
  animation-iteration-count: infinite;
  cursor: default;
}