.bandeau { position: sticky; top: 0; z-index: 10; display: flex; align-items: center; gap: 0.5rem; padding: 0.6rem 0.75rem; background: #1b3a5c; color: #fff; } .marque { color: #fff; font-size: 1.15rem; font-weight: 600; text-decoration: none; display: inline-flex; align-items: center; gap: 0.4rem; /* La marque prend la place restante : c'est elle qui repousse la bascule à droite, sans dépendre d'un justify-content que le nombre d'éléments du bandeau ferait varier (la pastille hors-ligne et le nom d'utilisateur vont et viennent). */ flex: 1 1 auto; min-width: 0; } .marque-nom { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .marque-logo { width: 1.3rem; height: 1.3rem; flex: 0 0 auto; color: #fff; } /* Boutons du bandeau (retour, bascule du menu). Cibles tactiles de 2.25rem : on les touche au pouce, souvent en marchant. */ .bandeau-icone { flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; width: 2.25rem; height: 2.25rem; padding: 0; font-size: 1.15rem; line-height: 1; color: #fff; background: transparent; border: 1px solid rgba(255, 255, 255, 0.35); border-radius: 6px; cursor: pointer; } .bandeau-icone:hover, .bandeau-icone:focus-visible { background: rgba(255, 255, 255, 0.15); } .utilisateur { flex: 0 1 auto; font-size: 0.8rem; opacity: 0.85; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 40%; } /* L'état du réseau change ce que l'application permet : il se voit dans le bandeau, en permanence, et pas seulement au moment où une action échoue. */ .pastille-hors-ligne { flex: 0 0 auto; font-size: 0.75rem; font-weight: 600; letter-spacing: 0.02em; padding: 0.15rem 0.5rem; border-radius: 999px; background: #f5d76e; color: #4a3800; white-space: nowrap; } /* Dire d'où viennent les données affichées, et de quand elles datent : sans cette phrase, un catalogue hors-ligne est indiscernable d'un catalogue à jour. */ .bandeau-reseau { max-width: 46rem; margin: 0 auto; padding: 0.6rem 1rem; background: #fff8e1; border-bottom: 1px solid #e6d28a; color: #6b5200; font-size: 0.9rem; } .contenu { display: block; width: 100%; max-width: 46rem; margin: 0 auto; /* Marge basse généreuse : la barre d'actions flottantes ne doit pas masquer le dernier livre de la liste. */ padding: 1rem 1rem 6rem; } /* --- Menu principal --- */ /* Repli du gabarit Blazor par défaut : sur téléphone, la liste est masquée et se déploie au clic sur la bascule ; sur PC elle devient une rangée sous le bandeau. ⚠️ Le défaut de la version précédente (six onglets en `flex: 1 1 0` sur une barre fixe) était qu'elle n'avait AUCUN état de repli : dès que la place manquait — ou que la feuille de style scopée n'était pas celle attendue — les six libellés se retrouvaient collés, tronqués ou empilés sans mise en forme. Ici, l'état sans style est une liste de liens. */ .menu { display: none; flex-direction: column; background: #16304c; border-bottom: 1px solid rgba(255, 255, 255, 0.15); } .menu-ouvert { display: flex; } .menu-lien { display: block; padding: 0.7rem 1rem; color: #e8edf3; text-decoration: none; font-size: 0.95rem; border-left: 4px solid transparent; } .menu-lien:hover, .menu-lien:focus-visible { background: rgba(255, 255, 255, 0.1); color: #fff; } /* NavLink pose « active » tout seul ; « Catalogue » utilise NavLinkMatch.All, sans quoi il resterait allumé sur toutes les pages — son href est la racine. */ .menu-lien.active { color: #fff; font-weight: 600; background: rgba(255, 255, 255, 0.16); border-left-color: #f5d76e; } /* À partir de 40rem la rangée tient sans se comprimer, et la bascule n'a plus de raison d'être : le menu est toujours visible, l'état déployé n'a plus d'effet. Le point de rupture est à 40rem plutôt qu'aux 48rem du reste de la feuille : six libellés courts tiennent bien avant que la grille de cartes ne s'élargisse, et les garder cachés derrière une bascule sur une tablette serait un clic de trop. */ @media (min-width: 40rem) { .menu { display: flex; flex-direction: row; justify-content: center; gap: 0.25rem; padding: 0 0.5rem; } .bandeau-bascule { display: none; } .menu-lien { padding: 0.6rem 0.9rem; border-left: 0; border-bottom: 3px solid transparent; } .menu-lien.active { background: rgba(255, 255, 255, 0.12); border-bottom-color: #f5d76e; } }