isLoading est true, la liste entière est remplacée par un
spinner centré. Aucun délai n'est appliqué ici : le chargement initial
d'une liste vide n'a rien à afficher, le spinner apparaît donc
immédiatement pour éviter un écran blanc sans feedback.