/* Presence dot (it-31) — three states, never "unknown".
 *
 *   --voice    a registered softphone: an inbound call will actually ring
 *   --online   a tab is open, but no softphone is registered
 *   --offline  no live socket
 *
 * The middle state must never read as "reachable by phone" — that is the whole
 * point of tracking voice_ready separately from a live WebSocket. Amber matches
 * the it-27.10 phone-intel indicator, where it already means "present, but not
 * reachable the way you expect".
 */

/* The dot's trigger wraps in the shared `.tip` tooltip (tooltip.css), which supplies the
 * bubble, hover/focus behavior, and keyboard access. This class only holds it in place.
 *
 * flex: 0 0 auto keeps the dot visible when a long name ellipsizes beside it. Spacing is
 * the parent row's job (.trow__id supplies a gap) — a margin here would double up wherever
 * the dot is dropped into an existing flex row. */
.presence-tip {
  flex: 0 0 auto;
  align-items: center;
}

.presence-dot {
  display: inline-block;
  inline-size: 0.5rem;
  block-size: 0.5rem;
  border-radius: 50%;
  vertical-align: middle;
  flex: 0 0 auto;
}

.presence-dot--voice {
  background: #1e8e3e;
  box-shadow: 0 0 0 2px color-mix(in srgb, #1e8e3e 22%, transparent);
}

.presence-dot--online {
  background: #b26a00;
}

.presence-dot--offline {
  background: transparent;
  border: 1.5px solid var(--md-sys-color-outline);
}

@media (prefers-reduced-motion: no-preference) {
  .presence-dot {
    transition: background-color 120ms ease, box-shadow 120ms ease;
  }
}
