/* =============================================================================
   BAZA-S275 §4.2 — STATUT DE PRÉSENCE DISTINGUABLE SANS LA COULEUR.

   Contexte : S173C (ordre Philippe, liste plus épurée) a remplacé le TEXTE
   « En ligne » / « Hors ligne » des cartes de la liste Profils par un point
   VERT / ROUGE. L'information reste exposée aux lecteurs d'écran (aria-label +
   title sur le composant), mais À L'ŒIL elle ne tenait plus qu'à la TEINTE :
   un daltonisme rouge-vert (deutéranopie/protanopie, la forme la plus
   répandue) confond exactement ces deux teintes à luminosité voisine.

   Correctif : la pastille HORS LIGNE devient un ANNEAU CREUX, la pastille EN
   LIGNE reste un disque PLEIN. La distinction passe donc par la FORME, lisible
   en niveaux de gris comme en vision anormale des couleurs. Aucun texte
   réintroduit : la décision produit S173C (liste épurée) est préservée.

   MÉTHODE (invariant S141) : cette feuille vit dans `public/` et est chargée
   par un <link> de `apps/app/index.html`. Vite ne la fusionne donc PAS dans
   `assets/index-*.css` : la coque CSS GELÉE reste byte-identique et le hash
   épinglé par `check:app-s141-real-only-no-global-demo` n'est pas re-pinné
   (mise à jour PWA sans réinstallation).

   Surcharge par SPÉCIFICITÉ (`span` + deux classes = 0,2,1) et non par ordre
   de chargement : le CSS gelé peut être injecté après cette feuille.

   Présentation SEULE : aucune géométrie de coque, aucune unité de viewport,
   aucune safe-area, aucune animation, aucune donnée.
   ========================================================================== */

/* HORS LIGNE — anneau creux. `box-shadow` (et non `border`) : le gabarit reste
   EXACTEMENT 9 × 9 px, aucun décalage de la ligne `.card-sub`. */
span.s173c-presence-dot.is-offline {
  background: transparent;
  box-shadow: inset 0 0 0 2px #e5484d;
}

/* EN LIGNE — disque plein RÉAFFIRMÉ (aucun anneau hérité si l'ordre de
   chargement plaçait un jour cette feuille avant la coque gelée). */
span.s173c-presence-dot.is-online {
  box-shadow: none;
}

/* Contrastes forcés (Windows « Contraste élevé », lecteurs à palette imposée) :
   les couleurs de fond sont alors remplacées par le système. On conserve la
   distinction PLEIN / CREUX avec les couleurs système, jamais avec les nôtres. */
@media (forced-colors: active) {
  span.s173c-presence-dot.is-online {
    background: CanvasText;
    box-shadow: none;
  }

  span.s173c-presence-dot.is-offline {
    background: Canvas;
    box-shadow: inset 0 0 0 2px CanvasText;
  }
}
