/*
 * BAZA-S236F — TRANSITION D'OUVERTURE DE CONVERSATION (entrée par la droite).
 *
 * Servi depuis public/ (Vite ne le FUSIONNE PAS dans assets/index-*.css) : la
 * coque CSS GELÉE S141 reste byte-identique (aucun re-pin du hash). Additif
 * STRICT — aucune règle existante retirée.
 *
 * À l'ouverture, l'écran COMPLET de conversation (privé + groupe) ENTRE depuis
 * la DROITE vers sa position finale — retour visuel immédiat au premier clic,
 * l'utilisateur voit que son action a fonctionné. L'animation ne masque JAMAIS
 * une attente réseau : la coque est déjà montée (en-tête + squelette / cache),
 * l'entrée dure ~200 ms et le contenu réel remplace dès qu'il arrive.
 *
 * PORTÉE : mobile / PWA / APK uniquement (l'écran remplace la liste). Sur
 * desktop deux-panneaux (S226B) la conversation vit dans le panneau droit
 * TOUJOURS visible — aucune entrée latérale (règle ci-dessous non appliquée).
 *
 * SÉCURITÉ COQUE : l'animation ne touche NI la hauteur, NI le viewport, NI la
 * safe-area — uniquement `transform` (translateX). Elle se termine à
 * translateX(0) (identité) SANS fill-mode : après ~200 ms le transform calculé
 * revient à `none`, donc AUCUN bloc conteneur résiduel pour le composer
 * (position du clavier S64D/S173G INTACTE). Marqueur porté par la RACINE du
 * fil RÉEL seulement (`.s236f-enter`) : jamais la coque de chargement de groupe
 * (pas de double glissement), jamais un ré-rendu (l'élément ne remonte pas).
 */

@media (max-width: 767px) {
  .conversation-screen.s236f-enter {
    animation: s236f-thread-enter 200ms ease-out;
    will-change: transform;
  }
}

@keyframes s236f-thread-enter {
  from {
    transform: translateX(100%);
  }
  to {
    transform: translateX(0);
  }
}

/*
 * ACCESSIBILITÉ — « Réduire les animations » : aucune entrée latérale (la
 * navigation et le chargement restent STRICTEMENT identiques, jamais désactivés).
 */
@media (prefers-reduced-motion: reduce) {
  .conversation-screen.s236f-enter {
    animation: none;
    will-change: auto;
  }
}
