.Badge {
  .Badge--size(22px);
  width: var(--size);
  height: var(--size);
  border-radius: calc(~"var(--size) / 2");
  background: var(--badge-bg);
  color: var(--contrast-color, var(--badge-color));
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 2px 4px var(--shadow-color);

  .Badge-label {
    display: none;
  }

  &, .Badge-icon {
    font-size: calc(~"0.56 * var(--size)");
  }

  &-icon {
    line-height: normal;
  }
}

.Badge--size(@size) {
  --size: @size;
}

.badges {
  margin: 0;
  padding: 0;
  list-style: none;

  &, > li {
    display: inline-block;
  }

  &--packed {
    --packing-space: 10px;
    padding-inline-start: var(--packing-space);

    .Badge {
      margin-left: calc(~"0px - var(--packing-space)");
      position: relative;
      pointer-events: auto;
    }
  }

  &:empty {
    display: none;
  }
}

.Badge--hidden {
  --badge-bg: var(--badge-hidden-bg);
}

.Badge--flat {
  box-shadow: none;
}

.Badge--square {
  border-radius: var(--border-radius);
}

.Badge--danger {
  --badge-color: var(--control-danger-color);
  --badge-bg: var(--control-danger-bg);
}

.Badge--success {
  --badge-color: var(--control-success-color);
  --badge-bg: var(--control-success-bg);
}
