.avatar {
  --avatar-border-radius: 50%;

  aspect-ratio: 1;
  border-radius: var(--avatar-border-radius);
  display: grid;
  inline-size: var(--avatar-size, 5ch);
  margin: 0;
  place-items: center;
  position: relative;

  img {
    aspect-ratio: 1;
    block-size: auto;
    border-radius: var(--avatar-border-radius);
    grid-area: 1/1;
    inline-size: var(--avatar-size, 5ch);
    max-inline-size: 100%;
    object-fit: cover;

    .banned & {
      opacity: 0.5;
    }
  }

  .banned &:after {
    background: url("/assets/cancel-c6dfeb78.svg") no-repeat center center;
    block-size: auto;
    content: "";
    filter: invert(0%);
    inline-size: var(--avatar-size, 5ch);
    inset: 0;
    max-inline-size: 100%;
    position: absolute;

    filter: invert(100%);
  }
}

html[data-theme="mideval"] .avatar img {
  box-shadow: none;
}

html[data-theme="mideval"] .avatar--icon {
  background-color: var(--mideval-wood);
}

html[data-theme="mideval"] .avatar--icon img {
  filter: var(--icon-filter-black);
}


.presence-indicator {
  --presence-size: calc(var(--avatar-size, 5ch) * 0.25);
  --presence-border-width: 2px;
  --presence-min-size: 8px;
  --presence-max-size: 12px;

  background-color: var(--color-background);
  border-radius: 50%;
  block-size: clamp(var(--presence-min-size), var(--presence-size), var(--presence-max-size));
  border: var(--presence-border-width) solid var(--color-background);
  grid-area: 1/1;
  inline-size: clamp(var(--presence-min-size), var(--presence-size), var(--presence-max-size));
  inset-block-end: 0;
  inset-inline-end: 0;
  position: absolute;
  transition: background-color 0.2s ease;
  z-index: 1;

  &.presence-indicator--online {
    background-color: #22c55e;
  }

  &.presence-indicator--offline {
    background-color: #9ca3af;
  }
}

.avatar__group .presence-indicator {
  --presence-size: calc(var(--avatar-size, 2.5ch) * 0.3);
  --presence-min-size: 6px;
  --presence-max-size: 10px;
}

.avatar--icon {
  border: none;
  background-color: var(--color-text-reversed);

  img {
    background-color: transparent;
    border-radius: 0;
    inline-size: auto;
    margin: var(--inline-space);
  }

  @media (any-hover: hover) {
    &:where(:not(:active):hover) {
      box-shadow: 0 0 0 var(--hover-size) var(--hover-color);
    }
  }
}

.avatar__group {
  --_gs: var(--group-size, 5ch);
  --avatar-size: calc(var(--_gs) * 0.5);

  block-size: var(--_gs);
  display: grid;
  gap: 1px;
  grid-template-columns: 1fr 1fr;
  grid-template-rows: min-content;
  inline-size: var(--_gs);
  overflow: hidden;
  place-content: center;

  .avatar {
    margin: auto;
  }

  &:where(:has(> :last-child:nth-child(2))) {
    --avatar-size: calc(var(--_gs) * 0.6);

    > :first-child {
      margin-block-end: calc(var(--_gs) * 0.25);
      margin-inline-end: calc(var(--_gs) * -0.1);
    }

    > :last-child {
      margin-block-start: calc(var(--_gs) * 0.25);
      margin-inline-start: calc(var(--_gs) * -0.1);
    }
  }

  &:where(:has(> :last-child:nth-child(3))) {
    > :last-child {
      margin-inline: calc(var(--_gs) * 0.25) calc(var(--_gs) * -0.25);
    }
  }
}

.avatar__form {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
}

/* Account logo */
.account-logo {
  --avatar-border-radius: 0.5em;

  #nav & {
    block-size: var(--btn-size);
    inline-size: auto;
  }
}
