.conn-status {
  position: fixed;
  /* var(--inset-top) lo inyecta NativePHP (WebViewManager/MainActivity.kt) con el alto real de la
     barra de estado del celu/tablet -- en la web (sin inyección) el fallback 0px no cambia nada. */
  top: calc(var(--inset-top, 0px) + 10px);
  right: 12px;
  z-index: 999;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 5px 10px;
  background: rgba(255,255,255,.92);
  border: 1px solid rgba(0,0,0,.10);
  border-radius: 20px;
  font-size: 11px;
  color: #5C5C59;
  box-shadow: 0 1px 4px rgba(0,0,0,.08);
}

.conn-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #9A9A96;
  flex-shrink: 0;
}

/* Dentro de una topbar (páginas de peritajes/peritos) va como un elemento
   más de la barra, no flotando encima — si no, tapa el nombre de usuario. */
.topbar .conn-status {
  position: static;
  top: auto;
  right: auto;
  box-shadow: none;
  background: transparent;
  border-color: var(--border);
}

.conn-dot.conn-online { background: #16A34A; }
.conn-dot.conn-offline { background: #DC2626; }

@media (prefers-reduced-motion: reduce) {
  .conn-dot { transition: none; }
}
