diff --git a/Versions.md b/Versions.md
index 3d51485..b7a1015 100644
--- a/Versions.md
+++ b/Versions.md
@@ -6,7 +6,7 @@ L'extension a connu **3 systèmes de versionning successifs** :
|---|---|---|
| Avril 2026 (jeudi 16) | Versions de base | `1.0.0`, `2.0.0`, `3.0.0` |
| Avril 2026 | SemVer classique | `4.1.3`, `4.2.8`, `5.0.12` |
-| Avril 2026 → maintenant | **`ANNÉE.MAJEURE.PATCH`** | `2026.5.16` → `2026.5.43` |
+| Avril 2026 → maintenant | **`ANNÉE.MAJEURE.PATCH`** | `2026.5.16` → `2026.5.44` |
---
@@ -14,7 +14,8 @@ L'extension a connu **3 systèmes de versionning successifs** :
| Date | Version | Résumé en 1 ligne |
|---|---|---|
-| 27 avril 2026 | **`v2026.5.43`** (latest) | Fix Firefox menu dock + stabilité popup pin/unpin |
+| 1 mai 2026 | **`v2026.5.44`** (latest) | Refonte topbar + personnalisation Apparence (couleur + 28 polices) + onboarding équipe + fix #1 |
+| 27 avril 2026 | `v2026.5.43` | Fix Firefox menu dock + stabilité popup pin/unpin |
| 27 avril 2026 | `v2026.5.42` | Nettoyage de commentaires + exemples génériques |
| 27 avril 2026 | `v2026.5.41` | Suppression hardcodes runtime + UX admin + thème unifié + conflits absence/intervention |
| 27 avril 2026 | `v2026.5.40` | Sélection groupe EV + édition domaines + tri équipe + vue horizontale enrichie |
@@ -32,7 +33,76 @@ L'extension a connu **3 systèmes de versionning successifs** :
## Versions notables
-### `v2026.5.43` (latest) — Fix Firefox menu dock + stabilité popup pin/unpin
+### `v2026.5.44` (latest) — Refonte topbar, personnalisation Apparence, onboarding équipe, fix #1
+
+**Refonte topbar (vue classique)**
+- Sélecteur de date du planning **ancré au centre absolu** (`position: absolute; left: 50%; transform: translate(-50%, -50%)`) — il ne se décale plus quand le bouton « ✕ Arrêter » apparaît à droite pendant un rafraîchissement. Auparavant il était centré via `margin-left: auto; margin-right: auto;` dans le flex flow → l'arrivée du bouton Arrêter rétrécissait `topbar-left` et la date glissait vers la gauche.
+- Bouton **« Aujourd'hui »** affiché en toutes lettres (au lieu de « Auj. »).
+- Horloge contextuelle (date du jour + heure) réduite et discrète, à côté du bouton Aujourd'hui dans un cadre encadré (today-block).
+- Date du planning agrandie (28px en classique, 17px gras en horizontal) et neutre — la couleur ne change plus selon la date sélectionnée.
+
+**Personnalisation — Paramètres → Apparence**
+- **Couleur de la barre du haut** : nouveau panneau avec **12 presets cliquables** (Défaut, Blanc, Gris clair, Anthracite, Bleu DGNSI, Marine, Vert sapin, Brique, Violet, Rouge, Bleu pastel, Vert pastel) + **picker custom** (``) + **champ hex** `#rrggbb` + bouton **Réinitialiser**. Persisté dans `cfg.topbarColor`.
+- **Calcul automatique du contraste** : la luminance de la couleur choisie détermine la couleur du texte topbar. Variable CSS `--topbar-text` posée sur `:root` (blanc sur fond foncé, foncé sur fond clair). `.topbar h1`, `.app-clock*`, `.capture-info`, `.date-custom`, boutons et badges héritent de cette variable. Plus de texte invisible quand le user pique du noir/marine.
+- Quand une couleur custom est active (`html.has-topbar-color`), les boutons de la topbar (et de la sidebar en horizontal) adoptent un **look translucide cohérent** via `color-mix(in srgb, var(--topbar-text) X%, transparent)` (10% bg, 28% border, hover plus marqué).
+- **Police de l'application** : sélecteur avec **28 choix** organisés en familles :
+ - sans-serif : Arial, Helvetica, Verdana, Tahoma, Trebuchet MS, Calibri, Segoe UI, Gill Sans, Futura, Optima
+ - serif : Times New Roman, Georgia, Cambria, Garamond, Palatino, Bookman
+ - monospace : Courier New, Consolas, Lucida Console, JetBrains Mono / Fira Code
+ - display : Comic Sans MS, Impact, Brush Script, Copperplate
+ - condensée : Arial Narrow / Helvetica Narrow
+
+ La police choisie s'applique à **TOUTE la page** (body) — topbar, cards, popups, tooltips, panel admin. Variable CSS `--app-font`. Chaque option du select s'affiche dans sa propre police pour prévisualiser, avec un aperçu live (« Aperçu — Vendredi 24.04.2026 ») à droite du select.
+- Persisté dans `cfg.appFont` (ancien `cfg.topbarFont` lu en fallback pour migration).
+
+**Vue horizontale**
+- Bloc « Aujourd'hui + horloge » déplacé en bloc dans la sidebar (`today-block` ajouté à `ELEMENTS_TO_RELOCATE`). Aujourd'hui en haut, horloge en dessous, dans le **même cadre encadré** que la vue classique.
+- Date sélectionnée mise en avant (17px gras), date du jour + heure réduites à 12px (même petite taille pour rester discrètes).
+- **Barre verticale verte** ajoutée à droite des mini-cards quand le ticket est officiellement clôturé / résolu (✓✓). Pseudo-élément `::before` à `right: 0; width: 4px; background: var(--ok)`. Le ✓✓ est décalé à `right: 14px` pour ne pas chevaucher la barre.
+- Quand une couleur de topbar est choisie, **la sidebar adopte aussi cette couleur** : titre, horloge, capture-info, stats globales, today-block, date sélectionnée, boutons (`.btn-action`, `.btn-refresh`, `.btn-today`, `.btn-subtle`, `.btn-icon`, `.btn-nav`), theme-toggle et séparateurs prennent une teinte translucide cohérente. Bordure droite de la sidebar adaptée. Séparateurs (border-top/bottom de `#stats`, trait au-dessus du 1er bouton) en `color-mix(--topbar-text 30%)`.
+
+**Statistiques globales**
+- Nouveau compteur **« X faits / Y clos »** entre `(matin · après-midi)` et `tech. dispo`. `s.done` calculé dans `computeStats` englobe tous les `_disappearStatus` ∈ {closed, terminated, terminated-clos, terminated-pending, terminated-suspended} + statuts EV reconnus comme clôturés/résolus.
+- En vue classique, séparateur `//` après `clos` (au lieu de `·`).
+- En vue horizontale (sidebar), une **barre horizontale 1px** pleine largeur sépare le bloc interventions/faits/clos du bloc tech. dispo + pompiers / absents (le `//` est masqué visuellement et remplacé par `border-top`).
+
+**Onboarding équipe (1ʳᵉ install ou config vide)**
+- L'erreur générique « Aucun technicien sélectionné » est remplacée par une **carte d'onboarding centrée propre** avec :
+ - icône `👥` cerclée (88×88 px, `--accent-soft` / `--accent`)
+ - titre « Aucune équipe configurée » (20px, gras)
+ - description courte (14px, `--text-muted`, line-height 1.6)
+ - bouton primary **« Ouvrir paramètres »** qui ouvre directement le panel admin sur la section **Équipe** via `showAdminPanel("team")`.
+- Carte centrée verticalement et horizontalement dans la zone disponible : `position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%)` ancré sur `` (qui prend `min-height: calc(100vh - var(--topbar-height))` quand la carte est visible). Identique en vue classique et horizontale.
+- `showError(msg, options)` étendu pour supporter `centered: true`, `icon`, `title`, `actionLabel` + `actionHandler`.
+- `showAdminPanel(initialSection)` accepte un identifiant de section (`"appearance"`, `"team"`, `"easyvista"`, `"diagnostics"`, `"about"`) pour ouvrir directement sur l'onglet voulu.
+
+**Refresh / cache / verdicts ghost**
+- Rafraîchissement **séquentiel** (1 fiche à la fois) au lieu de 5 workers parallèles. Avantages : arrêt instantané via `AbortController` (registre `_evFetchControllers` dans `background.js`, message `abortAllFetches`), plus de races DOM, ordre d'affichage stable (pompier d'abord, alpha, puis matin → après-midi).
+- Re-fetch du **checksum frais** via `basicAutoComplete` + `redirectHeader` avant chaque fetch fiche → plus de fiche périmée entre sessions.
+- **Cache merge robuste** : fallback `cachedByRef` quand `actionId` change. Cache écrit toutes les 5 fiches pendant le refresh (incrémental), pour ne pas perdre les statuts déjà récupérés si l'user change de date en cours.
+- **Verdicts ghost unifiés** dans `analyzeOneDisappearedIv` :
+ - `terminated-clos` → ✓✓ vert (clos officiel + commentaire tech)
+ - `terminated-pending` → ✓ gris « Fait » (commentaire tech mais pas encore clos)
+ - `terminated-suspended` → ✓ jaune « Suspendu » (statut Suspendu côté EV)
+ - `cancelled` / `cancelled-reservation` / `cancelled-absence` → REMOVE silencieux
+- **Statuts EV configurables** depuis Paramètres → EasyVista (`cfg.closedStatus`, `cfg.resolvedStatus`, `cfg.cancelledStatus`, `cfg.suspendedStatus`) avec matching insensible à la casse, accents et conjugaisons via `_normalizeStatus` + `_stemStatus` + `_statusMatchesAny`.
+- Mise à jour live du tooltip et du popup épinglé après un verdict (plus besoin de fermer/réouvrir).
+- Clic immédiat possible sur la carte dès que le verdict tombe (`updateInterventionRow` attache le click handler dès que `iv.ghost=false` est posé par `verdict()`).
+- Boutons **« Actualiser »** (rapide, ne re-télécharge pas les fiches déjà connues) vs **« Tout recharger »** (force tout sauf les ✓✓ déjà clos).
+- **Mode diagnostic optionnel** (Paramètres → Diagnostics, `LOG.isDebug()`) : aucune iv n'est retirée silencieusement, tout est tracé sous le préfixe `[disparition]` dans la console F12. En PROD (par défaut), les iv `cancelled` sont bien retirées.
+
+**Bugfix #1 (Pompier + Absence)**
+- Si un technicien est à la fois pompier ET absent, les deux badges s'affichent désormais avec un séparateur `/` (ex: `Pompier / Absent`) au lieu de masquer l'absence derrière le badge pompier.
+- Logique : détection d'un `extraAbsenceBlock` qui ajoute une note d'absence sous la note pompier dans la card.
+
+**Autres bugfixes**
+- **Absences récurrentes au switch de groupe** : quand on changeait de groupe puis revenait au groupe initial, les jours d'absence cochés disparaissaient visuellement (la donnée elle-même restait en `cfg.recurringAbsences`). Fix : restauration depuis `cfg.recurringAbsences[id]` à chaque ré-ajout de ligne dans `refreshTeamForGroup` et la boucle d'auto-détection initiale.
+- **Barre de progression / bannière session expirée** : suivent désormais la hauteur dynamique de la topbar via `--topbar-height` calculée par un `ResizeObserver` sur `header.topbar`. Plus de chevauchement quand on scrolle (les anciens `top: 56px` hardcodés sont remplacés par `top: var(--topbar-height, 56px)`).
+- **STATUS_FR regex** : limite augmentée de `[^"]{2,30}` à `[^"]{2,200}` (ne matchait pas « Suspendu : Attente info bénéficiaire/demandeur » qui fait 47 chars).
+- **Description action** : décodage `" → "`, ` → \n`, HTML strippé via une nouvelle pipeline. Préfixe `login: ` retiré du commentaire technicien dans le tooltip / popup.
+- **Tooltip référence** : flèche ` ↗` retirée du lien cliquable (`.tt-ref-link::after { content: " ↗" }` neutralisée).
+
+### `v2026.5.43` — Fix Firefox menu dock + stabilité popup pin/unpin
**Menu hover sur pastille du dock (popup réduit) — bug Firefox uniquement**
Quand un popup épinglé était réduit dans la taskbar du bas, le menu qui apparaît au survol de la pastille (Agrandir / Fermer) se positionnait trop haut. Cause : `getBoundingClientRect()` appelé immédiatement après `appendChild` sans attendre la mise en page Firefox, combiné à un `transform: translateY` dans l'animation. Fix : positionnement hors écran initial, force-layout via `offsetHeight`, puis pose finale. Animation simplifiée en opacité-only.