diff --git a/.env b/.env
index e6ac054..54c5f51 100644
--- a/.env
+++ b/.env
@@ -38,6 +38,9 @@ DATABASE_URL="postgresql://app:!ChangeMe!@127.0.0.1:5432/app?serverVersion=16&ch
###> app ###
RTT_START_DATE=2026-02-23
+# Comma-separated list of public holiday labels to exclude from the government API response
+# (typically the "journée de solidarité" worked in many companies)
+EXCLUDED_PUBLIC_HOLIDAYS="Lundi de Pentecôte"
###< app ###
###> nelmio/cors-bundle ###
diff --git a/CLAUDE.md b/CLAUDE.md
index 90a8cef..53ac590 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -35,6 +35,13 @@
- Absences with `countAsWorkedHours=true`: credit minutes (TIME) or nothing (PRESENCE)
- Driver periods (`isDriver=true` on `EmployeeContractPeriod`): separate screen `/driver-hours`, uses `dayHoursMinutes`/`nightHoursMinutes` + meal/overnight flags on `WorkHour`
+## Fériés
+- Source : API gouv via `PublicHolidayService` (cache 30j)
+- Exclusions : env `EXCLUDED_PUBLIC_HOLIDAYS` (CSV de libellés), défaut `"Lundi de Pentecôte"`. Le filtre s'applique après le cache, côté service, donc frontend et calculs backend voient la même liste.
+- Écrans Heures / Heures Conducteurs (vue jour) : le nom du férié est affiché en badge `#b3e5fc` avec icône `mdi:calendar-star` dans la colonne Absence (distinct du pill absence). Bouton "Modifier" absence masqué sur férié (comme pour les formations).
+- Création/édition d'absence bloquée sur un férié
+- Saisie d'heures (ou de jours de présence) autorisée sur un férié — nécessaire pour éviter un déficit hebdomadaire (la référence hebdo n'est pas réduite par les fériés)
+
## Validation Rules
- `isValid` (RH): locks line for everyone (admin can only untoggle validation)
- `isSiteValid` (site manager): locks for non-admin, admin can still edit
diff --git a/config/services.yaml b/config/services.yaml
index 511f83d..92dac45 100644
--- a/config/services.yaml
+++ b/config/services.yaml
@@ -25,6 +25,7 @@ services:
App\Service\PublicHolidayService:
arguments:
$holidayUrl: '%env(HOLIDAY_URL)%'
+ $excludedLabels: '%env(default::EXCLUDED_PUBLIC_HOLIDAYS)%'
App\Service\Rtt\RttRecoveryComputationService:
arguments:
diff --git a/deploy/docker/.env.example b/deploy/docker/.env.example
index bc2bdec..d66befc 100644
--- a/deploy/docker/.env.example
+++ b/deploy/docker/.env.example
@@ -23,3 +23,4 @@ DEFAULT_URI=https://sirh.malio-dev.fr
APP_SHARE_DIR=var/share
RTT_START_DATE=2026-02-23
HOLIDAY_URL="https://calendrier.api.gouv.fr/jours-feries/"
+EXCLUDED_PUBLIC_HOLIDAYS="Lundi de Pentecôte"
diff --git a/doc/functional-rules.md b/doc/functional-rules.md
index 0f3d26b..e9bdf66 100644
--- a/doc/functional-rules.md
+++ b/doc/functional-rules.md
@@ -161,10 +161,14 @@ Documents complementaires:
## 7) Fériés
- Les jours fériés sont identifiés et affichés
+- Source: API `calendrier.api.gouv.fr/jours-feries/` via `PublicHolidayService` (cache 30j)
+- Exclusions configurables: variable d'env `EXCLUDED_PUBLIC_HOLIDAYS` (liste de libellés séparés par virgules). Par défaut `"Lundi de Pentecôte"` — journée de solidarité généralement travaillée. Le filtre s'applique à tous les consommateurs (frontend + calculs backend) en amont du retour du service.
- Onglet congés: jours fériés affichés sur le calendrier avec fond `rgb(179, 229, 252)` et nom au survol
+- Écran Heures et Heures Conducteurs (vue jour): le nom du férié est affiché dans la colonne Absence sous forme de pill (fond `#b3e5fc`, icône `mdi:calendar-star`), distinct du pill absence
- Règle courante:
- - absences bloquées sur jour férié
- - saisie d'heures autorisée
+ - absences bloquées sur jour férié (création/édition) — bouton "Modifier" masqué comme pour les formations
+ - saisie d'heures ou de jours de présence autorisée — les heures saisies comptent normalement dans le total hebdo et le calcul RTT
+ - la référence hebdomadaire n'est pas réduite par un férié: un salarié qui ne saisit rien sur un férié est en déficit de la journée correspondante
## 8) Impression absences (PDF)
diff --git a/frontend/components/driver-hours/DriverHoursDayView.vue b/frontend/components/driver-hours/DriverHoursDayView.vue
index 3c4783e..89989e3 100644
--- a/frontend/components/driver-hours/DriverHoursDayView.vue
+++ b/frontend/components/driver-hours/DriverHoursDayView.vue
@@ -56,19 +56,31 @@