/* ============================================================
   Navigator Hub — AWATAR OSOBY Z ZESPOŁU (NH.avatar, ui/avatar.js)
   Tylko tokeny. Kolor osoby wchodzi z danych jako --av-bg / --av-ink
   (inline, liczone w avatar.js z kontrastem ≥ 4.5); brak → neutralny.
   ============================================================ */
.nh-av {
  --av-size: var(--avatar-md);
  width: var(--av-size); height: var(--av-size); flex: none; box-sizing: border-box;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: 50%; overflow: hidden; vertical-align: middle;
  background: var(--av-bg, var(--nh-field)); color: var(--av-ink, var(--nh-text-2));
  font: 600 max(9.5px, calc(var(--av-size) * .42))/1 var(--nh-font-body); letter-spacing: 0;   /* ≥ 9.5px — czytelne inicjały w najmniejszym */
  user-select: none;
}
.nh-av--xs { --av-size: var(--avatar-xs); }
.nh-av--sm { --av-size: var(--avatar-sm); }
.nh-av--md { --av-size: var(--avatar-md); }
.nh-av--lg { --av-size: var(--avatar-lg); }
/* zdjęcie: cienki obrys z linii, żeby jasne zdjęcie nie „rozlewało się" w białą kartę */
.nh-av--photo { background: var(--nh-field); box-shadow: 0 0 0 1px var(--nh-line); }
.nh-av-img { width: 100%; height: 100%; object-fit: cover; display: block; }
/* nikt nieprzypisany: przerywany okrąg z ikoną osób */
.nh-av--empty { background: transparent; border: 1.5px dashed var(--nh-text-muted); color: var(--nh-text-2); --icon-color: var(--nh-text-2); }
/* awatar + imię obok (NH.avatar.who) — w listach/tabelach/stopkach; tekst dziedziczy krój i kolor z miejsca */
.nh-av-who { display: inline-flex; align-items: center; gap: var(--space-1); min-width: 0; vertical-align: middle; }
.nh-av-who .nh-av-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
