/**
 * Button
 */
.button {
  display: inline-flex;
  font-weight: var(--button--font-weight, var(--font-weight-normal));
  font-size: var(--button--font-size, var(--font-size));
  line-height: 1;
  text-align: center;
  white-space: nowrap;
  vertical-align: middle;
  user-select: none;
  color: var(--button--color);
  background: var(--button--background);
  border-style: var(--button--border-style, var(--button--border-top-style, var(--border-top-style)) var(--button--border-right-style, var(--border-right-style)) var(--button--border-bottom-style, var(--border-bottom-style)) var(--button--border-left-style, var(--border-left-style)));
  border-width: var(--button--border-width, var(--button--border-top-width, var(--border-top-width)) var(--button--border-right-width, var(--border-right-width)) var(--button--border-bottom-width, var(--border-bottom-width)) var(--button--border-left-width, var(--border-left-width)));
  border-color: var(--button--border-color, var(--button--border-top-color, var(--border-top-color)) var(--button--border-right-color, var(--border-right-color)) var(--button--border-bottom-color, var(--border-bottom-color)) var(--button--border-left-color, var(--border-left-color)));
  border-radius: var(--button--border-radius, var(--button--border-top-left-radius, var(--border-top-left-radius)) var(--button--border-top-right-radius, var(--border-top-right-radius)) var(--button--border-bottom-right-radius, var(--border-bottom-right-radius)) var(--button--border-bottom-left-radius, var(--border-bottom-left-radius)));
  box-shadow: var(--button--box-shadow, var(--button--box-shadow-x-offset, var(--box-shadow-offset-x)) var(--button--box-shadow-y-offset, var(--box-shadow-offset-y)) var(--button--box-shadow-blur-radius, var(--box-shadow-blur-radius)) var(--button--box-shadow-spread-radius, var(--box-shadow-spread-radius)) var(--button--box-shadow-color, var(--box-shadow-color)));
  padding: var(--button--padding, var(--button--padding-top, var(--padding-top)) var(--button--padding-right, var(--padding-right)) var(--button--padding-bottom, var(--padding-bottom)) var(--button--padding-left, var(--padding-left)));
  justify-content: center;
  align-items: center;
  transition-property: var(--button--transition-property, background-color, color, border-color);
  transition-duration: var(--button--transition-duration, var(--transition-duration));
  transition-timing-function: var(--button--transition-timing-function, var(--transition-timing-function));
}
.button:not(:disabled, .-disabled) {
  cursor: pointer;
}
.button:not(:disabled, .-disabled):hover, .button:not(:disabled, .-disabled):focus, .button:not(:disabled, .-disabled).-hovered, .button:not(:disabled, .-disabled).-focused {
  background: var(--button--hover--background, var(--button--background));
  border-color: var(--button--hover--border-color, var(--button--hover--border-top-color, var(--button--border-top-color)) var(--button--hover--border-right-color, var(--button--border-right-color)) var(--button--hover--border-bottom-color, var(--button--border-bottom-color)) var(--button--hover--border-left-color, var(--button--border-left-color)));
  text-decoration: none;
  color: var(--button--color);
  outline: 0;
}
.button:not(:disabled, .-disabled):active, .button:not(:disabled, .-disabled).-active {
  background: var(--button--active--background, var(--button--background));
}
.button.-disabled, .button:disabled {
  opacity: var(--button--disabled--opacity, 0.8);
  box-shadow: none;
  cursor: not-allowed;
}
.button.-block {
  display: flex;
  width: 100%;
}
.button.-block + .button.-block {
  margin-left: 0;
  margin-top: var(--button--block--margin-top, var(--margin-top));
}
.button.-link {
  color: var(--button--link--color, var(--button--color));
  box-shadow: none;
  background-color: transparent;
  border-color: transparent;
}
.button.-link:not(:disabled, .-disabled):hover, .button.-link:not(:disabled, .-disabled):focus, .button.-link:not(:disabled, .-disabled):active, .button.-link:not(:disabled, .-disabled).-hovered, .button.-link:not(:disabled, .-disabled).-focused, .button.-link:not(:disabled, .-disabled).-active {
  color: var(--button--link--active--color, var(--button--color));
  background-color: transparent;
  border-color: transparent;
  box-shadow: none;
  text-decoration: underline;
}
.button.-link:disabled, .button.-link.-disabled {
  pointer-events: none;
}
.button.-outline {
  background: transparent;
  color: var(--button--background);
  border-color: var(--button--background);
  box-shadow: none;
}
.button.-outline:not(:disabled, .-disabled):hover, .button.-outline:not(:disabled, .-disabled):focus, .button.-outline:not(:disabled, .-disabled):active, .button.-outline:not(:disabled, .-disabled).-hovered, .button.-outline:not(:disabled, .-disabled).-focused, .button.-outline:not(:disabled, .-disabled).-active {
  border-color: var(--button--background);
  background: var(--button--background);
  color: var(--button--color);
}
.button.-circle {
  border-radius: 50%;
  width: var(--button--circle--size);
  height: var(--button--circle--size);
  padding: 0;
}
.button.-loading {
  pointer-events: none;
  cursor: default;
}
.button .loader {
  width: var(--button--font-size);
  height: var(--button--font-size);
}
.button .loader > svg > circle {
  stroke: var(--button--color) !important;
}
.button .button-icon,
.button .button-content {
  display: inline-flex;
  justify-content: center;
  align-items: center;
}
.button .button-icon + .button-content {
  margin-left: var(--button--icon--margin-right, var(--margin-right-1-2));
}
.button-group:not(.-vertical) > .button:not(:first-of-type) {
  border-left-color: var(--button--border-left-color);
}
.button-group.-vertical > .button:not(:first-of-type) {
  border-top-color: var(--button--border-top-color);
}

a.button.-disabled,
*:disabled a.button {
  pointer-events: none;
}

input[type=submit].-block,
input[type=reset].-block,
input[type=button].-block {
  width: 100%;
}

/**
 * Color variants
 */
.button.-primary {
  --button--background: var(--button--primary--background, var(--color-primary));
  --button--hover--background: var(
      --button--primary--hover--background,
      var(--color-primary-shade-50)
  );
  --button--active--background: var(
      --button--primary--active--background,
      var(--color-primary-shade-100)
  );
  --button--border-top-color: var(
      --button--primary--border-top-color,
      var(--color-primary-shade-50)
  );
  --button--border-right-color: var(
      --button--primary--border-right-color,
      var(--color-primary-shade-50)
  );
  --button--border-bottom-color: var(
      --button--primary--border-bottom-color,
      var(--color-primary-shade-50)
  );
  --button--border-left-color: var(
      --button--primary--border-left-color,
      var(--color-primary-shade-50)
  );
  --button--color: var(--button--primary--color, var(--contrast-text-color-primary));
  --button--link--color: var(--button--primary--link--color, var(--color-primary));
  --button--link--active--color: var(
      --button--primary--link--active--color,
      var(--color-primary-shade-50)
  );
}
.button.-secondary {
  --button--background: var(--button--secondary--background, var(--color-secondary));
  --button--hover--background: var(
      --button--secondary--hover--background,
      var(--color-secondary-shade-50)
  );
  --button--active--background: var(
      --button--secondary--active--background,
      var(--color-secondary-shade-100)
  );
  --button--border-top-color: var(
      --button--secondary--border-top-color,
      var(--color-secondary-shade-50)
  );
  --button--border-right-color: var(
      --button--secondary--border-right-color,
      var(--color-secondary-shade-50)
  );
  --button--border-bottom-color: var(
      --button--secondary--border-bottom-color,
      var(--color-secondary-shade-50)
  );
  --button--border-left-color: var(
      --button--secondary--border-left-color,
      var(--color-secondary-shade-50)
  );
  --button--color: var(--button--secondary--color, var(--contrast-text-color-secondary));
  --button--link--color: var(--button--secondary--link--color, var(--color-secondary));
  --button--link--active--color: var(
      --button--secondary--link--active--color,
      var(--color-secondary-shade-50)
  );
}
.button.-light {
  --button--background: var(--button--light--background, var(--color-light));
  --button--hover--background: var(
      --button--light--hover--background,
      var(--color-light-shade-50)
  );
  --button--active--background: var(
      --button--light--active--background,
      var(--color-light-shade-100)
  );
  --button--border-top-color: var(
      --button--light--border-top-color,
      var(--color-light-shade-50)
  );
  --button--border-right-color: var(
      --button--light--border-right-color,
      var(--color-light-shade-50)
  );
  --button--border-bottom-color: var(
      --button--light--border-bottom-color,
      var(--color-light-shade-50)
  );
  --button--border-left-color: var(
      --button--light--border-left-color,
      var(--color-light-shade-50)
  );
  --button--color: var(--button--light--color, var(--contrast-text-color-light));
  --button--link--color: var(--button--light--link--color, var(--color-light));
  --button--link--active--color: var(
      --button--light--link--active--color,
      var(--color-light-shade-100)
  );
}
.button.-dark {
  --button--background: var(--button--dark--background, var(--color-dark));
  --button--hover--background: var(
      --button--dark--hover--background,
      var(--color-dark-tint-50)
  );
  --button--active--background: var(
      --button--dark--active--background,
      var(--color-dark-tint-100)
  );
  --button--border-top-color: var(
      --button--dark--border-top-color,
      var(--color-dark-tint-50)
  );
  --button--border-right-color: var(
      --button--dark--border-right-color,
      var(--color-dark-tint-50)
  );
  --button--border-bottom-color: var(
      --button--dark--border-bottom-color,
      var(--color-dark-tint-50)
  );
  --button--border-left-color: var(
      --button--dark--border-left-color,
      var(--color-dark-tint-50)
  );
  --button--color: var(--button--dark--color, var(--contrast-text-color-dark));
  --button--link--color: var(--button--dark--link--color, var(--color-dark));
  --button--link--active--color: var(
      --button--dark--link--active--color,
      var(--color-dark-tint-50)
  );
}
.button.-info {
  --button--background: var(--button--info--background, var(--color-info));
  --button--hover--background: var(
      --button--info--hover--background,
      var(--color-info-shade-50)
  );
  --button--active--background: var(
      --button--info--active--background,
      var(--color-info-shade-100)
  );
  --button--border-top-color: var(
      --button--info--border-top-color,
      var(--color-info-shade-50)
  );
  --button--border-right-color: var(
      --button--info--border-right-color,
      var(--color-info-shade-50)
  );
  --button--border-bottom-color: var(
      --button--info--border-bottom-color,
      var(--color-info-shade-50)
  );
  --button--border-left-color: var(
      --button--info--border-left-color,
      var(--color-info-shade-50)
  );
  --button--color: var(--button--info--color, var(--contrast-text-color-info));
  --button--link--color: var(--button--info--link--color, var(--color-info));
  --button--link--active--color: var(
      --button--info--link--active--color,
      var(--color-info-shade-50)
  );
}
.button.-success {
  --button--background: var(--button--success--background, var(--color-success));
  --button--hover--background: var(
      --button--success--hover--background,
      var(--color-success-shade-50)
  );
  --button--active--background: var(
      --button--success--active--background,
      var(--color-success-shade-100)
  );
  --button--border-top-color: var(
      --button--success--border-top-color,
      var(--color-success-shade-50)
  );
  --button--border-right-color: var(
      --button--success--border-right-color,
      var(--color-success-shade-50)
  );
  --button--border-bottom-color: var(
      --button--success--border-bottom-color,
      var(--color-success-shade-50)
  );
  --button--border-left-color: var(
      --button--success--border-left-color,
      var(--color-success-shade-50)
  );
  --button--color: var(--button--success--color, var(--contrast-text-color-success));
  --button--link--color: var(--button--success--link--color, var(--color-success));
  --button--link--active--color: var(
      --button--success--link--active--color,
      var(--color-success-shade-50)
  );
}
.button.-warning {
  --button--background: var(--button--warning--background, var(--color-warning));
  --button--hover--background: var(
      --button--warning--hover--background,
      var(--color-warning-shade-50)
  );
  --button--active--background: var(
      --button--warning--active--background,
      var(--color-warning-shade-100)
  );
  --button--border-top-color: var(
      --button--warning--border-top-color,
      var(--color-warning-shade-50)
  );
  --button--border-right-color: var(
      --button--warning--border-right-color,
      var(--color-warning-shade-50)
  );
  --button--border-bottom-color: var(
      --button--warning--border-bottom-color,
      var(--color-warning-shade-50)
  );
  --button--border-left-color: var(
      --button--warning--border-left-color,
      var(--color-warning-shade-50)
  );
  --button--color: var(--button--warning--color, var(--contrast-text-color-warning));
  --button--link--color: var(--button--warning--link--color, var(--color-warning));
  --button--link--active--color: var(
      --button--warning--link--active--color,
      var(--color-warning-shade-50)
  );
}
.button.-danger {
  --button--background: var(--button--danger--background, var(--color-danger));
  --button--hover--background: var(
      --button--danger--hover--background,
      var(--color-danger-shade-50)
  );
  --button--active--background: var(
      --button--danger--active--background,
      var(--color-danger-shade-100)
  );
  --button--border-top-color: var(
      --button--danger--border-top-color,
      var(--color-danger-shade-50)
  );
  --button--border-right-color: var(
      --button--danger--border-right-color,
      var(--color-danger-shade-50)
  );
  --button--border-bottom-color: var(
      --button--danger--border-bottom-color,
      var(--color-danger-shade-50)
  );
  --button--border-left-color: var(
      --button--danger--border-left-color,
      var(--color-danger-shade-50)
  );
  --button--color: var(--button--danger--color, var(--contrast-text-color-danger));
  --button--link--color: var(--button--danger--link--color, var(--color-danger));
  --button--link--active--color: var(
      --button--danger--link--active--color,
      var(--color-danger-shade-50)
  );
}

/**
 * Size variants
 */
.button.-sm {
  --button--border-top-left-radius: var(
      --button--sm--border-top-left-radius,
      calc(var(--border-top-right-radius) * var(--size-multiplier-sm))
  );
  --button--border-top-right-radius: var(
      --button--sm--border-top-right-radius,
      calc(var(--border-top-right-radius) * var(--size-multiplier-sm))
  );
  --button--border-bottom-right-radius: var(
      --button--sm--border-bottom-right-radius,
      calc(var(--border-bottom-right-radius) * var(--size-multiplier-sm))
  );
  --button--border-bottom-left-radius: var(
      --button--sm--border-bottom-left-radius,
      calc(var(--border-bottom-left-radius) * var(--size-multiplier-sm))
  );
  --button--font-size: var(
      --button--sm--font-size,
      calc(var(--font-size) * var(--size-multiplier-sm))
  );
  --button--padding-top: var(
      --button--sm--padding-top,
      calc(calc(var(--padding-top) * var(--size-multiplier-sm)) * 3 / 4)
  );
  --button--padding-right: var(
      --button--sm--padding-right,
      calc(var(--padding-right) * var(--size-multiplier-sm))
  );
  --button--padding-bottom: var(
      --button--sm--padding-bottom,
      calc(calc(var(--padding-bottom) * var(--size-multiplier-sm)) * 3 / 4)
  );
  --button--padding-left: var(
      --button--sm--padding-left,
      calc(var(--padding-left) * var(--size-multiplier-sm))
  );
  --button--circle--size: var(
      --button--sm--circle--size,
      calc(34px * var(--size-multiplier-sm))
  );
}
.button.-md {
  --button--border-top-left-radius: var(
      --button--md--border-top-left-radius,
      calc(var(--border-top-right-radius) * var(--size-multiplier-md))
  );
  --button--border-top-right-radius: var(
      --button--md--border-top-right-radius,
      calc(var(--border-top-right-radius) * var(--size-multiplier-md))
  );
  --button--border-bottom-right-radius: var(
      --button--md--border-bottom-right-radius,
      calc(var(--border-bottom-right-radius) * var(--size-multiplier-md))
  );
  --button--border-bottom-left-radius: var(
      --button--md--border-bottom-left-radius,
      calc(var(--border-bottom-left-radius) * var(--size-multiplier-md))
  );
  --button--font-size: var(
      --button--md--font-size,
      calc(var(--font-size) * var(--size-multiplier-md))
  );
  --button--padding-top: var(
      --button--md--padding-top,
      calc(calc(var(--padding-top) * var(--size-multiplier-md)) * 3 / 4)
  );
  --button--padding-right: var(
      --button--md--padding-right,
      calc(var(--padding-right) * var(--size-multiplier-md))
  );
  --button--padding-bottom: var(
      --button--md--padding-bottom,
      calc(calc(var(--padding-bottom) * var(--size-multiplier-md)) * 3 / 4)
  );
  --button--padding-left: var(
      --button--md--padding-left,
      calc(var(--padding-left) * var(--size-multiplier-md))
  );
  --button--circle--size: var(
      --button--md--circle--size,
      calc(42px * var(--size-multiplier-md))
  );
}
.button.-lg {
  --button--border-top-left-radius: var(
      --button--lg--border-top-left-radius,
      calc(var(--border-top-right-radius) * var(--size-multiplier-lg))
  );
  --button--border-top-right-radius: var(
      --button--lg--border-top-right-radius,
      calc(var(--border-top-right-radius) * var(--size-multiplier-lg))
  );
  --button--border-bottom-right-radius: var(
      --button--lg--border-bottom-right-radius,
      calc(var(--border-bottom-right-radius) * var(--size-multiplier-lg))
  );
  --button--border-bottom-left-radius: var(
      --button--lg--border-bottom-left-radius,
      calc(var(--border-bottom-left-radius) * var(--size-multiplier-lg))
  );
  --button--font-size: var(
      --button--lg--font-size,
      calc(var(--font-size) * var(--size-multiplier-lg))
  );
  --button--padding-top: var(
      --button--lg--padding-top,
      calc(calc(var(--padding-top) * var(--size-multiplier-lg)) * 3 / 4)
  );
  --button--padding-right: var(
      --button--lg--padding-right,
      calc(var(--padding-right) * var(--size-multiplier-lg))
  );
  --button--padding-bottom: var(
      --button--lg--padding-bottom,
      calc(calc(var(--padding-bottom) * var(--size-multiplier-lg)) * 3 / 4)
  );
  --button--padding-left: var(
      --button--lg--padding-left,
      calc(var(--padding-left) * var(--size-multiplier-lg))
  );
  --button--circle--size: var(
      --button--lg--circle--size,
      calc(49px * var(--size-multiplier-lg))
  );
}