/*
 * BAZA-S231H — Bandeau de mise à jour PWA : PLACE RÉSERVÉE DANS LE FLUX.
 *
 * Défaut PROUVÉ (recette visuelle Codex sur les 24 captures S231F, FR/EN/ES) :
 * `.s148-update-banner` (index.css gelé S141) est `position: fixed` ancré en
 * haut de coque. En tant qu'OVERLAY il ne réserve AUCUN espace — il RECOUVRE
 * l'en-tête et le titre (Profils / Groupes / Moi), mord sur la recherche, les
 * filtres, le bouton « Filtres » (desktop) et le CTA « Créer un groupe », et
 * selon la langue (message EN/ES plus long) empile/rogne le libellé du bouton.
 * Le correctif S231G précédent (barre PLEINE LARGEUR fixe) a AGGRAVÉ le
 * recouvrement du titre : une barre fixe pleine largeur cache tout le header.
 *
 * Correctif de catégorie « mise en page » (jamais un offset magique fragile) :
 * on sort le bandeau du positionnement `fixed` et on le replace comme PREMIÈRE
 * RANGÉE EN FLUX de la coque `.app` (flex column, dont il est déjà le premier
 * enfant dans le DOM). Il RÉSERVE alors sa propre hauteur : l'en-tête et tout
 * le contenu sont POUSSÉS vers le bas, jamais recouverts — quelle que soit la
 * LANGUE (hauteur de texte variable) ou l'ÉCRAN. La zone défilante `.app-main`
 * se réduit d'autant ; la barre d'onglets reste visible (coque à hauteur fixe).
 *
 * Servi HORS bundle CSS gelé S141 (public/ + <link> dans index.html), comme
 * `s215-scroll-red-bands.css` / `s226-desktop.css` : le hash figé S141
 * (`assets/index-*.css`) reste byte-identique — aucun re-pin.
 *
 * SPÉCIFICITÉ : Vite injecte le bundle gelé APRÈS ce <link> dans <head> ; on
 * préfixe par `html` (spécificité 0,1,1 > 0,1,0 de la règle de base) pour
 * gagner quel que soit l'ordre d'injection — jamais `!important`.
 */

/* Bandeau EN FLUX : première rangée de la coque, pleine largeur (marges 8px). */
html .s148-update-banner {
  position: static;
  top: auto;
  left: auto;
  right: auto;
  transform: none;
  z-index: auto;
  flex: 0 0 auto;
  align-self: stretch;
  width: auto;
  max-width: none;
  margin: 8px;
  /* Le bandeau devient l'élément le plus haut de la coque : il assume désormais
     l'inset de la barre de statut iOS (PWA standalone) que l'en-tête portait. */
  margin-top: calc(env(safe-area-inset-top, 0px) + 8px);
}

/* Quand le bandeau (topmost) assume déjà l'inset de statut, l'en-tête ne doit
   plus le réserver : neutralise le double-espace vert au-dessus du titre en PWA
   standalone. Sans bandeau (`:has` faux), la règle gelée S129 reste seule. */
html .app:has(> .s148-update-banner) .app-header {
  padding-top: 10px;
}

/* Desktop (≥ 768px) : bandeau centré et borné (≈480px), TOUJOURS EN FLUX (il
   réserve sa hauteur) — plus jamais l'overlay `fixed` qui couvrait le bouton
   « Filtres » ou empilait le libellé du bouton MAJ. */
@media (min-width: 768px) {
  html .s148-update-banner {
    align-self: center;
    width: auto;
    max-width: min(92vw, 480px);
    margin-left: auto;
    margin-right: auto;
  }
}
