diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml
new file mode 100644
index 0000000..3fadc3d
--- /dev/null
+++ b/.idea/sqldialects.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/functional-rules.md b/doc/functional-rules.md
index b0b191d..ead88f8 100644
--- a/doc/functional-rules.md
+++ b/doc/functional-rules.md
@@ -344,7 +344,24 @@ Tous les filtres checkbox sont cochés par défaut à l'ouverture du drawer.
| CHAUFFEUR - samedi | WorkHour (samedi) | Samedis travaillés (chauffeurs uniquement) |
| Observations | — | Colonne vide pour saisie manuelle |
-## 12) Notifications
+## 12) Frais
+
+- Onglet "Frais" sur la fiche employé (icône `mdi:account-cash-outline`)
+- Entité `MileageAllowance` (table `mileage_allowances`)
+- Champs:
+ - `month` (mois, obligatoire)
+ - `kilometers` (nombre de km, optionnel)
+ - `amount` (montant en €, optionnel)
+ - `comment` (commentaire, optionnel)
+ - `receiptPath` / `receiptName` (justificatif PDF)
+- Règle de validation:
+ - le mois est obligatoire
+ - au moins un des deux champs `kilometers` ou `amount` doit être > 0
+ - les deux peuvent être remplis simultanément
+- Tableau: colonnes Mois, Nombre de Km, Montant €, Commentaire, Justificatif
+- Justificatif: upload PDF uniquement, téléchargement via endpoint dédié
+
+## 13) Notifications
- Icône cloche en topbar:
- badge = nombre de notifications non lues
diff --git a/frontend/components/employees/MileageTab.vue b/frontend/components/employees/MileageTab.vue
index 7c033e3..8fd7937 100644
--- a/frontend/components/employees/MileageTab.vue
+++ b/frontend/components/employees/MileageTab.vue
@@ -2,9 +2,10 @@