.button {
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  background-image: none;
  border: none;
  box-shadow: none;
  cursor: pointer;
  display: inline-block;
  font-family: var(--si-ff-sans);
  font-weight: var(--si-fw-semibold);
  padding-block: 8px;
  padding-inline: 12px;
  position: relative;
  text-decoration: none;
  width: -moz-fit-content;
  width: fit-content;
  font-size: var(--si-fs-body-18);
  line-height: var(--si-lh-body-18);
}
@media (min-width: 768px) {
  .button {
    padding-block: 12px;
    padding-inline: 16px;
  }
}
.button:hover, .button:focus {
  text-decoration: none;
}
.button.has-icon-prefix, .button.has-icon-suffix {
  display: inline-flex;
  align-items: center;
}
.button span {
  background-image: linear-gradient(180deg, transparent 0, transparent calc(100% - 1px), currentColor calc(100% - 1px), currentColor 100%);
  background-position: 0 calc(100% - 0px);
  background-repeat: no-repeat;
  background-size: 0;
  display: inline;
  padding-bottom: 2px;
  position: relative;
  text-decoration: none;
  transition: background-size 0.2s cubic-bezier(0.37, 0, 0.63, 1);
}
.button span:hover, .button span:focus {
  background-size: 100%;
  text-decoration: none;
}
.button:hover span, .button:focus span {
  background-size: 100%;
  text-decoration: none;
}
.button .icon {
  inline-size: 1.5rem;
  block-size: 1.5rem;
  display: inline-flex;
  flex-shrink: 0;
  margin-block: auto;
  transform: translateX(0);
  transition: transform 0.25s cubic-bezier(0.37, 0, 0.63, 1);
}
.button .icon.icon--refresh {
  block-size: 1rem;
}
@media (min-width: 768px) {
  .button .icon {
    block-size: 1.44rem;
    inline-size: 1.44rem;
  }
}
.button.has-icon-suffix .icon {
  inset-inline-start: 1px;
}
.button:hover .icon:last-child, .button:focus .icon:last-child {
  transform: translateX(4px);
}
.button .is-disabled {
  cursor: not-allowed;
}

.button--primary:not(.ui-widget) {
  background-color: var(--si-color-black);
  color: var(--si-color-white);
}
.button--primary:not(.ui-widget):hover, .button--primary:not(.ui-widget):focus {
  color: var(--si-color-white);
}
.button--primary:not(.ui-widget):before {
  background-color: var(--si-color-white);
}
.button--primary:not(.ui-widget):hover:before, .button--primary:not(.ui-widget):focus:before {
  background-color: var(--si-color-white);
}
.button--primary:not(.ui-widget) .icon {
  background-color: var(--si-color-white);
}

.button--yellow {
  background-color: var(--si-color-yellow);
  color: var(--si-color-black);
}
.button--yellow:hover, .button--yellow:focus {
  color: var(--si-color-black);
}
.button--yellow:before {
  background-color: var(--si-color-black);
}
.button--yellow:hover:before, .button--yellow:focus:before {
  background-color: var(--si-color-black);
}
.button--yellow .icon {
  background-color: var(--si-color-black);
}

.button--blue {
  background-color: var(--si-color-bright-blue);
  color: var(--si-color-black);
}
.button--blue:hover, .button--blue:focus {
  color: var(--si-color-black);
}
.button--blue:before {
  background-color: var(--si-color-black);
}
.button--blue:hover:before, .button--blue:focus:before {
  background-color: var(--si-color-black);
}
.button--blue .icon {
  background-color: var(--si-color-black);
}

.button--transparent,
.button--white {
  background-color: var(--si-color-white);
  color: var(--si-color-black);
}
.button--transparent:hover, .button--transparent:focus,
.button--white:hover,
.button--white:focus {
  color: var(--si-color-black);
}
.button--transparent:before,
.button--white:before {
  background-color: var(--si-color-black);
}
.button--transparent:hover:before, .button--transparent:focus:before,
.button--white:hover:before,
.button--white:focus:before {
  background-color: var(--si-color-black);
}
.button--transparent .icon,
.button--white .icon {
  background-color: var(--si-color-black);
}

.button--transparent {
  background-color: transparent;
}

.button--rounded-corners {
  border-radius: 100px;
}