/* ==========================================================================
 * Avatar
 * ========================================================================== */

.mds-c-avatars {
  display: flex;
  white-space: nowrap;

  &.mds-is-clickable {
    cursor: pointer;

    button {
      cursor: pointer;
    }
  }

  > *:not(.mds-c-avatar):not(:first-child) {
    margin-left: var(--mds-d-spacing--sm);
  }

  a&,
  button& {
    cursor: pointer;
  }

  .mds-h-screenreader-text + button.mds-c-avatar {
    margin-left: 0.1rem;
    margin-right: -0.4rem;
  }

  .mds-h-screenreader-text:not(.data-label) {
    margin-left: 0;
  }
}

.mds-c-avatar {
  --mds-v-avatar__color: var(--mds-t-background-color--tertiary);
  --mds-v-avatar__outline-color: var(--mds-t-background-color--primary);
  --mds-v-avatar__outline-width: 2px;
  --mds-v-avatar__size: var(--mds-d-spacing--xxl);

  background-color: var(--mds-v-avatar__color);
  background-image: var(--mds-v-avatar__image, none);
  background-position: center;
  background-size: cover;
  border: 1px solid transparent;
  border-radius: 50%;
  box-shadow: 0 0 0 var(--mds-v-avatar__outline-width)
    var(--mds-v-avatar__outline-color);
  box-sizing: content-box;
  color: var(--mds-t-text-color--primary);
  display: inline-block;
  font-size: var(--mds-v-avatar__font-size, var(--mds-d-font-size--sm));
  font-weight: var(
    --mds-v-avatar__font-weight,
    var(--mds-d-font-weight--semibold)
  );
  height: var(--mds-v-avatar__size);
  line-height: var(--mds-v-avatar__size);
  position: relative;
  text-align: center;
  text-transform: uppercase;
  user-select: none;
  vertical-align: middle;
  white-space: nowrap;
  width: var(--mds-v-avatar__size);

  &.mds-is-active {
    background-color: var(--mds-t-background-color--inverse-primary);
    border: none;
    color: var(--mds-t-text-color--inverse-primary);
  }

  &--user-disabled {
    opacity: 0.4;
  }

  &--color-blue {
    --mds-v-avatar__image: var(--mds-t-color--blue);
  }

  &--color-green {
    --mds-v-avatar__image: var(--mds-t-color--green);
  }

  &--color-orange {
    --mds-v-avatar__image: var(--mds-t-color--orange);
  }

  &--color-purple {
    --mds-v-avatar__image: var(--mds-t-color--purple);
  }

  &--color-red {
    --mds-v-avatar__image: var(--mds-t-color--red);
  }

  &--size-sm {
    --mds-v-avatar__font-size: var(--mds-d-font-size--xs);
    --mds-v-avatar__font-weight: var(--mds-d-font-weight--semibold);
    --mds-v-avatar__size: var(--mds-d-spacing--xl);
  }

  &--size-med {
    --mds-v-avatar__font-size: var(--mds-d-font-size--sm);
    --mds-v-avatar__font-weight: var(--mds-d-font-weight--semibold);
    --mds-v-avatar__size: var(--mds-d-spacing--xxl);
  }

  &--size-lg {
    --mds-v-avatar__font-size: var(--mds-d-font-size--xl);
    --mds-v-avatar__font-weight: var(--mds-d-font-weight--semibold);
    --mds-v-avatar__size: var(--mds-d-spacing--xxxl);
  }

  &--size-xl {
    --mds-v-avatar__font-size: 2.5rem;
    --mds-v-avatar__font-weight: var(--mds-d-font-weight--medium);
    --mds-v-avatar__size: calc(var(--mds-d-spacing--xxxl) * 2);
  }

  &--add {
    --mds-v-avatar__color: var(--mds-t-background-color--primary);

    border: var(--mds-v-avatar__outline-width) dashed
      var(--mds-t-border-color--secondary);
    box-sizing: border-box;
    color: var(--mds-t-text-color--tertiary);
    overflow: hidden;

    .mds-c-icon {
      bottom: 0;
      left: 0;
      margin: auto;
      position: absolute;
      right: 0;
      top: 0;
      transform: scale(1.5);
    }
  }

  &:enter {
    text-decoration: none;
  }

  &:focus-visible {
    outline: 2px solid var(--mds-t-text-color--accent);
    z-index: 1;
  }

  &[style^='background-image'] {
    background-color: var(--mds-t-background-color--primary);
    box-shadow:
      0 0 0 1px var(--mds-t-border-color--secondary) inset,
      0 0 0 var(--mds-v-avatar__outline-width)
        var(--mds-v-avatar__outline-color);
    color: transparent;

    &::before {
      background-image: inherit;
      background-position: inherit;
      background-size: inherit;
      border-radius: 50%;
      content: '';
      display: block;
      height: 100%;
      left: 0;
      position: absolute;
      top: 0;
      width: 100%;
      z-index: 1;
    }
  }

  & + span.mds-h-screenreader-text + & {
    margin-left: -0.4em;
    z-index: 1;
  }
}
