.ib::before,
.ibc::before {
  display: inline-block;
  height: 1em;
  width: 1em;
  vertical-align: -0.125em;
  content: "";
}

.ib::before {
  background: currentColor;
  mask-image: var(--url);
  mask-repeat: no-repeat;
  mask-position: center;
  -webkit-mask-image: var(--url);
  -webkit-mask-repeat: no-repeat;
  -webkit-mask-position: center;
}

.ibc::before {
  background-image: var(--url);
  background-size: contain;
  background-position: 50% 50%;
  background-repeat: no-repeat;
}

.ib-fw::before {
  width: 1.28571429em;
}

.ib-sm {
  font-size: 0.875em;
}

.ib-lg {
  font-size: 1.33333333em;
  line-height: 0.75em;
  vertical-align: -0.0667em;
}

.ib-2x {
  font-size: 2em;
}

.ib-3x {
  font-size: 3em;
}

.ib-4x {
  font-size: 4em;
}

.ib-5x {
  font-size: 5em;
}

.ib-flip-horizontal::before {
  transform: scale(-1, 1);
}

.ib-flip-vertical::before {
  transform: scale(1, -1);
}

.ib-rotate-90::before {
  transform: rotate(90deg);
}

.ib-rotate-180::before {
  transform: rotate(180deg);
}

.ib-rotate-270::before {
  transform: rotate(270deg);
}

.ib-embed {
  display: inline-block;
  height: 1em;
  width: 1em;
}

.ib-spin::before {
  animation: ib-spin 2s infinite linear;
}

.ib-pulse::before {
  animation: ib-spin 1s infinite steps(8);
}

@keyframes ib-spin {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(359deg);
  }
}