:host {
  position: relative;
  box-sizing: border-box;
  font-feature-settings: "cv03", "cv04", "cv11";
}
:host *, :host *:before, :host *:after {
  box-sizing: inherit;
}

:host {
  display: inline-block;
  width: auto;
  cursor: pointer;
}

.button {
  display: inline-flex;
  align-items: stretch;
  justify-content: center;
  width: 100%;
  border-style: solid;
  border-width: var(--sl-input-border-width);
  font-family: var(--sl-input-font-family);
  font-weight: var(--sl-font-weight-semibold);
  text-decoration: none;
  user-select: none;
  white-space: nowrap;
  vertical-align: middle;
  padding: 0;
  transition: var(--sl-transition-fast) background-color, var(--sl-transition-fast) color, var(--sl-transition-fast) border, var(--sl-transition-fast) box-shadow;
  cursor: inherit;
}
.button::-moz-focus-inner {
  border: 0;
}
.button:focus {
  outline: none;
}
.button.button--disabled {
  opacity: 0.5;
  cursor: not-allowed;
}
.button.button--disabled * {
  pointer-events: none;
}
.button ::slotted(sl-icon) {
  pointer-events: none;
}

.button__prefix,
.button__suffix {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
}

.button__label ::slotted(sl-icon) {
  vertical-align: -2px;
}

.button.button--default {
  background-color: var(--sl-color-white);
  border-color: var(--sl-color-gray-300);
  color: var(--sl-color-gray-600);
}
.button.button--default:hover:not(.button--disabled) {
  background-color: var(--sl-color-blue-50);
  border-color: var(--sl-color-blue-300);
  color: var(--sl-color-blue-600);
}
.button.button--default:focus:not(.button--disabled) {
  background-color: var(--sl-color-blue-50);
  border-color: var(--sl-color-blue-300);
  color: var(--sl-color-blue-600);
  box-shadow: 0 0 0 var(--sl-focus-ring-width) var(--sl-focus-ring-color-primary);
}
.button.button--default:active:not(.button--disabled) {
  background-color: var(--sl-color-blue-100);
  border-color: var(--sl-color-blue-400);
  color: var(--sl-color-blue-700);
}
.button.button--primary {
  background-color: var(--sl-color-blue-600);
  border-color: var(--sl-color-blue-500);
  color: var(--sl-color-blue-text);
}
.button.button--primary:hover:not(.button--disabled) {
  background-color: var(--sl-color-blue-700);
  border-color: var(--sl-color-blue-500);
  color: var(--sl-color-blue-text);
}
.button.button--primary:focus:not(.button--disabled) {
  background-color: var(--sl-color-blue-600);
  border-color: var(--sl-color-blue-500);
  color: var(--sl-color-blue-text);
  box-shadow: 0 0 0 var(--sl-focus-ring-width) var(--sl-focus-ring-color-primary);
}
.button.button--primary:active:not(.button--disabled) {
  background-color: var(--sl-color-blue-600);
  border-color: var(--sl-color-blue-600);
  color: var(--sl-color-blue-text);
}
.button.button--danger {
  background-color: var(--sl-color-red-500);
  border-color: var(--sl-color-red-400);
  color: var(--sl-color-red-text);
}
.button.button--danger:hover:not(.button--disabled) {
  background-color: var(--sl-color-red-400);
  border-color: var(--sl-color-red-400);
  color: var(--sl-color-red-text);
}
.button.button--danger:focus:not(.button--disabled) {
  background-color: var(--sl-color-red-400);
  border-color: var(--sl-color-red-400);
  color: var(--sl-color-red-text);
  box-shadow: 0 0 0 var(--sl-focus-ring-width) var(--sl-focus-ring-color-danger);
}
.button.button--danger:active:not(.button--disabled) {
  background-color: var(--sl-color-red-500);
  border-color: var(--sl-color-red-500);
  color: var(--sl-color-red-text);
}

.button--text {
  background-color: transparent;
  border-color: transparent;
  color: var(--sl-color-blue-500);
}
.button--text:hover:not(.button--disabled) {
  background-color: transparent;
  border-color: transparent;
  color: var(--sl-color-blue-400);
}
.button--text:focus:not(.button--disabled) {
  background-color: transparent;
  border-color: transparent;
  color: var(--sl-color-blue-400);
  box-shadow: 0 0 0 var(--sl-focus-ring-width) var(--sl-focus-ring-color-primary);
}
.button--text:active:not(.button--disabled) {
  background-color: transparent;
  border-color: transparent;
  color: var(--sl-color-blue-600);
}

.button--small {
  font-size: var(--sl-button-font-size-small);
  height: var(--sl-input-height-small);
  line-height: calc(var(--sl-input-height-small) - var(--sl-input-border-width) * 2);
  border-radius: var(--sl-input-border-radius-small);
}

.button--medium {
  font-size: var(--sl-button-font-size-medium);
  height: var(--sl-input-height-medium);
  line-height: calc(var(--sl-input-height-medium) - var(--sl-input-border-width) * 2);
  border-radius: var(--sl-input-border-radius-medium);
}

.button--large {
  font-size: var(--sl-button-font-size-large);
  height: var(--sl-input-height-large);
  line-height: calc(var(--sl-input-height-large) - var(--sl-input-border-width) * 2);
  border-radius: var(--sl-input-border-radius-large);
}

.button--pill.button--small {
  border-radius: var(--sl-input-height-small);
}
.button--pill.button--medium {
  border-radius: var(--sl-input-height-medium);
}
.button--pill.button--large {
  border-radius: var(--sl-input-height-large);
}

.button--circle {
  padding-left: 0;
  padding-right: 0;
}
.button--circle.button--small {
  width: var(--sl-input-height-small);
  border-radius: 50%;
}
.button--circle.button--medium {
  width: var(--sl-input-height-medium);
  border-radius: 50%;
}
.button--circle.button--large {
  width: var(--sl-input-height-large);
  border-radius: 50%;
}
.button--circle .button__prefix,
.button--circle .button__suffix,
.button--circle .button__caret {
  display: none;
}

.button--block-first {
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
}

.button--block-middle {
  border-radius: 0;
}

.button--block-last {
  border-top-left-radius: 0;
  border-bottom-left-radius: 0;
}

.button--caret .button__suffix {
  display: none;
}
.button--caret .button__caret {
  display: flex;
  align-items: center;
}
.button--caret .button__caret svg {
  width: 1em;
  height: 1em;
}

.button--loading {
  position: relative;
  cursor: wait;
}
.button--loading .button__prefix,
.button--loading .button__label,
.button--loading .button__suffix,
.button--loading .button__caret {
  visibility: hidden;
}
.button--loading sl-spinner {
  --indicator-color: currentColor;
  position: absolute;
  height: 1em;
  width: 1em;
  top: calc(50% - 0.5em);
  left: calc(50% - 0.5em);
}

.button--checked.button--default {
  background-color: var(--sl-color-gray-100);
  border-color: var(--sl-color-gray-300);
}
.button--checked.button--primary {
  background-color: var(--sl-color-blue-800);
  border-color: var(--sl-color-blue-500);
}
.button--checked.button--danger {
  background-color: var(--sl-color-red-700);
  border-color: var(--sl-color-red-400);
}
.button--checked.button--small {
  box-shadow: inset var(--sl-shadow-small);
}
.button--checked.button--medium {
  box-shadow: inset var(--sl-shadow-medium);
}
.button--checked.button--large {
  box-shadow: inset var(--sl-shadow-large);
}

.button ::slotted(sl-badge) {
  position: absolute;
  top: 0;
  right: 0;
  transform: translateY(-50%) translateX(50%);
  pointer-events: none;
}

.button--has-label.button--small .button__label {
  padding: 0 var(--sl-spacing-x-small);
}
.button--has-label.button--medium .button__label {
  padding: 0 var(--sl-spacing-small);
}
.button--has-label.button--large .button__label {
  padding: 0 var(--sl-spacing-medium);
}

.button--has-prefix.button--small {
  padding-left: var(--sl-spacing-x-small);
}
.button--has-prefix.button--small .button__label {
  padding-left: var(--sl-spacing-x-small);
}
.button--has-prefix.button--medium {
  padding-left: var(--sl-spacing-small);
}
.button--has-prefix.button--medium .button__label {
  padding-left: var(--sl-spacing-small);
}
.button--has-prefix.button--large {
  padding-left: var(--sl-spacing-small);
}
.button--has-prefix.button--large .button__label {
  padding-left: var(--sl-spacing-small);
}

.button--has-suffix.button--small,
.button--caret.button--small {
  padding-right: var(--sl-spacing-x-small);
}
.button--has-suffix.button--small .button__label,
.button--caret.button--small .button__label {
  padding-right: var(--sl-spacing-x-small);
}
.button--has-suffix.button--medium,
.button--caret.button--medium {
  padding-right: var(--sl-spacing-small);
}
.button--has-suffix.button--medium .button__label,
.button--caret.button--medium .button__label {
  padding-right: var(--sl-spacing-small);
}
.button--has-suffix.button--large,
.button--caret.button--large {
  padding-right: var(--sl-spacing-small);
}
.button--has-suffix.button--large .button__label,
.button--caret.button--large .button__label {
  padding-right: var(--sl-spacing-small);
}