@charset "UTF-8";
/**
 * Refonte 2027 — compléments à style.css (chargé après master.css).
 * Aucun sélecteur existant n'est modifié : le rendu des layouts est conservé.
 */

/* ---- Lien d'évitement (RGAA 12.7) ---- */
.skip-link {
    position: absolute; top: .5rem; left: .5rem; z-index: 2000;
    padding: .5rem 1rem; border-radius: .5rem;
    background: var(--bs-body-bg); color: var(--bs-body-color); font-weight: 700;
}

/* ---- Focus visible (RGAA 10.7) ---- */
a:focus-visible, button:focus-visible, [tabindex]:focus-visible, .form-control:focus-visible {
    outline: 3px solid var(--bs-warning, #ffc107) !important;
    outline-offset: 2px;
}

/* ==== Généré depuis css/style.css : mêmes règles que #mainContents et « .section-title h2/h1 »,
   appliquées à .main-contents et aux titres de section .surtitre (p) / .titre (h2). ==== */

.main-contents h1:not(.title-font),
.main-contents h2:not(.title-font),
.main-contents h3:not(.title-font),
.main-contents h4:not(.title-font),
.main-contents h5:not(.title-font),
.main-contents h6:not(.title-font) {
	font-weight: 300;
	line-height: normal !important;
}

.main-contents p {
	text-align: start;
}

.main-contents>p:first-of-type::first-letter {
	float: left;
	margin: 0 10px 0 0 !important;
	font-family: 'Asap Condensed', sans-serif !important;
	font-size: calc(5rem + 4.5vw) !important;
	font-weight: 900 !important;
	line-height: 0.8 !important;
	color: var(--bs-dark-text-emphasis) !important;
}

.section-title .surtitre {
	padding: 0;
	text-transform: uppercase;
	font-family: 'Asap Condensed', sans-serif !important;
	font-size: 1.05rem !important;
	font-weight: 300 !important;
	line-height: 1px;
	letter-spacing: 2px;
	color: rgb(var(--bs-tertiary-color-rgb));
}

.section-title .surtitre::after {
	content: "";
	display: inline-block;
	width: 120px;
	height: .15rem !important;
	margin: 4px 10px;
	background-color: var(--bs-rouge);
}

.section-title .surtitre::before {
	content: "";
	display: inline-block;
	width: 25px;
	height: .15rem !important;
	margin: 4px 10px;
	background-color: var(--bs-rouge);
}

#mainContents .section-title .titre,
.main-contents .section-title .titre {
	font-family: "Asap Condensed", sans-serif;
    font-size: clamp(2.5rem, 1.8rem + 3vw, 5rem);
    font-weight: 800;
    line-height: 1.1;
    color: var(--bs-secondary);
}

#rSidebar .section-title .titre {
    font-family: "Asap Condensed", sans-serif;
    font-size: clamp(2rem, 1.5rem + 1vw, 2.5rem);
    font-weight: 800;
    line-height: 1.1;
}

@media (min-width:1200px) {
	.main-contents>p:first-of-type::first-letter {
		font-size: calc(2.5rem + 4.5vw) !important;
	}
}

/* Métriques des balises d'origine (h2 et h1) conservées pour les nouveaux éléments */
.section-title .surtitre { margin: 0 0 .5rem; }
.section-title .titre { margin: 0 0 .5rem; font-size: calc(1.375rem + 1.5vw); font-weight: 500; line-height: 1.2; }
@media (min-width: 1200px) { .section-title .titre { font-size: 2.5rem; } }
.section-title .surtitre i, .section-title .surtitre svg { vertical-align: middle; }

/* ---- Façade YouTube ---- */
.yt-facade { background: #000; border-radius: var(--bs-border-radius); overflow: hidden; }
.yt-facade__btn { position: absolute; inset: 0; width: 100%; padding: 0; border: 0; background: none; cursor: pointer; }
.yt-facade__btn img { width: 100%; height: 100%; object-fit: cover; }
.yt-facade__play {
    position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);
    display: flex; align-items: center; justify-content: center;
    width: 72px; height: 72px; border-radius: 50%;
    background: rgba(200, 0, 0, .9); color: #fff; font-size: 1.75rem; transition: transform .15s;
}
.yt-facade__btn:hover .yt-facade__play, .yt-facade__btn:focus-visible .yt-facade__play { transform: translate(-50%, -50%) scale(1.1); }
.yt-facade iframe { width: 100%; height: 100%; border: 0; }

/* ---- Bandeau d'alerte (remplace l'ouverture automatique de modales, RGAA 13.1) ---- */
.alerte-stm { border-radius: 0; margin: 0; }

/* ---- Publicité des actes ---- */
.actes-filtres .form-select, .actes-filtres .form-control { border-width: 2px; }
.acte-card .card-title { font-size: 1.15rem; }
.acte-card mark { padding: 0 .15em; }

/* ---- Fil d'Ariane ---- */
.breadcrumb a { text-decoration: underline; text-underline-offset: 2px; }

/* ---- Préférence de mouvement réduit ---- */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
}

/* ---- Colonne latérale épurée ---- */
#rSidebar { font-size: .95rem; }
.aside-bloc { padding: 0 0 1.5rem; margin-bottom: 1.5rem; border-bottom: 1px solid var(--drm-trait); }
.aside-bloc:last-child { border-bottom: 0; }
.aside-titre {
    font-family: "Asap Condensed", sans-serif; font-size: 1.2rem !important; font-weight: 700 !important;
    color: var(--drm-accent); margin: 0 0 .75rem; padding-inline-start: .6rem; line-height: 1.2 !important;
    border-inline-start: .25rem solid var(--drm-or);
}
.aside-liste { list-style: none; margin: 0; padding: 0; }
.aside-liste--numerotee { counter-reset: sommaire; }
.aside-liste--numerotee li { counter-increment: sommaire; }
.aside-liste--numerotee .aside-lien::before { content: counter(sommaire) "."; color: var(--bs-secondary-color); min-width: 1.4em; }
.aside-lien {
    display: flex; gap: .6rem; align-items: flex-start; padding: .55rem .5rem; min-height: var(--drm-cible);
    color: var(--bs-body-color); text-decoration: none; border-radius: .4rem; line-height: 1.35;
}
.aside-lien:hover, .aside-lien:focus-visible { background: var(--drm-surface); color: var(--drm-accent); }
.aside-lien > i { margin-top: .2rem; color: var(--drm-rouge); }
.aside-lien.is-actif, .aside-lien.active { background: var(--drm-surface); color: var(--drm-accent); font-weight: 700; box-shadow: inset .2rem 0 0 var(--drm-accent); }
.aside-meta { display: block; font-size: .8rem; color: var(--bs-secondary-color); font-weight: 400; }
.aside-actu { display: flex; gap: .75rem; padding: .5rem 0; color: var(--bs-body-color); text-decoration: none; }
.aside-actu img { flex: 0 0 64px; width: 64px; height: 64px; object-fit: cover; border-radius: .4rem; }
.aside-actu__titre { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; overflow: hidden; line-height: 1.3; font-weight: 600; }
.aside-actu:hover .aside-actu__titre, .aside-actu:focus-visible .aside-actu__titre { color: var(--drm-accent); text-decoration: underline; }
.aside-plus { display: inline-block; margin-top: .5rem; font-weight: 600; }
.aside-annees { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: .35rem; }
.aside-annees a, .aside-annees span { display: flex; align-items: center; justify-content: center; min-height: 40px; border: 1px solid var(--drm-trait); border-radius: .4rem; text-decoration: none; font-weight: 600; }
.aside-annees .is-actif { background: var(--drm-bleu); border-color: var(--drm-accent); color: #fff; }
.aside-aide .fa-solid, .aside-aide .fas { color: var(--drm-accent); }
@media (min-width: 992px) {
    /* Sommaire : reste visible pendant la lecture des pages longues */
    #rSidebar .aside-sommaire { position: sticky; top: calc(var(--entete-hauteur, 9rem) + 1rem); z-index: 1; background: var(--bs-body-bg); max-height: calc(100vh - var(--entete-hauteur, 9rem) - 2rem); overflow-y: auto; }
}

/* ---- Outils de la page (sous le contenu) ---- */
.outils-page { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem; margin-top: 3rem; padding-top: 1rem; border-top: 1px solid var(--drm-trait); }
.outils-page__libelle { font-weight: 600; margin-inline-end: .25rem; }
.outils-page__btn {
    display: inline-flex; align-items: center; justify-content: center; width: var(--drm-cible); height: var(--drm-cible);
    border: 1px solid var(--drm-trait); border-radius: 50%; background: none; color: var(--bs-body-color); text-decoration: none !important;
}
.outils-page__btn:hover, .outils-page__btn:focus-visible { border-color: var(--drm-accent); color: var(--drm-accent); }

/* ---- Partenaires (pied de page) ---- */
.footer-partenaires img { max-height: 48px; width: auto; }

/* ---- Validation des formulaires (Bootstrap natif) ---- */
.was-validated .form-control:valid:not([required]):placeholder-shown { border-color: var(--bs-border-color); background-image: none; padding-right: .75rem; }
.invalid-feedback { font-weight: 600; }
[data-recapitulatif-erreurs] a { text-decoration: underline; }
button[aria-busy="true"] { cursor: progress; opacity: .75; }

@media print {
    .outils-page, .barre-mobile, .bandeau-page__vague, #rSidebar, .top-banner, #mainHeader, footer, .back-to-top, .alerte-stm, .skip-link { display: none !important; }
    #mainContents { width: 100% !important; }
}

/* =====================================================================
   DESIGN 2027 — couche institutionnelle, mobile d'abord
   Identité conservée (bleu Département, violet, rouge, or ; Asap Condensed pour les titres).
   Élément signature : le bandeau de page bleu à bord « lagon ». Tout le reste reste sobre.
   ===================================================================== */
:root {
    --drm-bleu: #13357B;
    --drm-bleu-profond: #0B2356;
    --drm-violet: #4E1273;
    --drm-rouge: #9A2323;
    --drm-or: #CC9A05;
    --drm-surface: #F2F5FA;
    --drm-trait: #D9E0EC;
    --drm-rayon: .75rem;
    --drm-cible: 44px; /* taille minimale des zones tactiles (WCAG 2.5.5) */
    --drm-accent: var(--drm-bleu);          /* texte, bordures et indicateurs « bleu Département » */
    --drm-accent-contraste: #FFFFFF;        /* texte posé sur un fond --drm-accent */
}
[data-bs-theme="dark"] {
    --drm-surface: #1C2333;
    --drm-trait: #3A4560;
    --drm-accent: #A9C0F0;                  /* contraste ≥ 7:1 sur le fond sombre */
    --drm-accent-contraste: #0B2356;
}

/* ---- Lecture ---- */
#mainContents { font-size: 1.0625rem; line-height: 1.7; overflow-wrap: anywhere; }
#mainContents img { max-width: 100%; height: auto; }
#mainContents iframe:not(.ratio iframe) { max-width: 100%; }
#mainContents table:not(.table) { display: block; max-width: 100%; overflow-x: auto; }

/* ---- Bandeau de page (signature) ---- */
.bandeau-page { position: relative; background: var(--drm-bleu); color: #fff; padding-bottom: 2.5rem; }
.bandeau-page__contenu { padding-top: 1.75rem; }
.bandeau-page .bandeau-page__titre h1.header-title {
    color: #fff; font-family: "Asap Condensed", sans-serif; font-weight: 700 !important;
    font-size: clamp(1.9rem, 1.2rem + 3vw, 3.4rem); line-height: 1.08 !important;
    width: 100%; max-width: none; margin-bottom: .75rem; text-wrap: pretty;
    border-inline-start: .35rem solid var(--drm-or); padding-inline-start: .9rem;
}
.bandeau-page__titre .header-small { color: rgba(255, 255, 255, .85) !important; font-size: clamp(1rem, .9rem + .5vw, 1.35rem) !important; font-weight: 400 !important; max-width: none; padding-inline-start: 1.25rem; }
.bandeau-page__titre .btn-like, .bandeau-page__titre p { color: #fff; }
.bandeau-page__maj { padding-inline-start: 1.25rem; font-size: .875rem; color: rgba(255, 255, 255, .75) !important; margin-top: .5rem; }
.bandeau-page .fil-ariane .breadcrumb-item, .bandeau-page .fil-ariane .breadcrumb-item::before, .bandeau-page .fil-ariane a { color: rgba(255, 255, 255, .85); }
.bandeau-page .fil-ariane .breadcrumb-item.active { color: #fff; }
.bandeau-page .fil-ariane a:hover, .bandeau-page .fil-ariane a:focus-visible { color: #fff; }
.bandeau-page__vague { position: absolute; left: 0; right: 0; bottom: -1px; width: 100%; height: 2.5rem; display: block; }
.bandeau-page__vague path { fill: var(--bs-body-bg); }

/* Pas de lettrine dans le bandeau (réservée au premier paragraphe du contenu) */
.bandeau-page .bandeau-page__titre > p::first-letter {
    float: none; margin: 0 !important; font-family: inherit !important; font-size: inherit !important;
    font-weight: inherit !important; line-height: inherit !important; color: inherit !important;
}

/* Fil d'Ariane : une ligne défilante sur mobile */
.fil-ariane .breadcrumb { flex-wrap: nowrap; overflow-x: auto; white-space: nowrap; scrollbar-width: none; }
.fil-ariane .breadcrumb::-webkit-scrollbar { display: none; }

/* ---- En-tête collant : seule l'ombre change au défilement (aucune variation de hauteur) ---- */
#mainHeader { transition: box-shadow .2s ease; }
.back-to-top { display: none; }
/* Flèche centrée horizontalement et verticalement (l'icône Font Awesome devient un <svg> aligné sur la ligne
   de base : décalage vertical supprimé), bouton sans décalage de 20 px hérité du thème */
.back-to-top.is-visible {
    display: flex; align-items: center; justify-content: center;
    padding: 0; line-height: 1; transform: translateY(0);
}
.back-to-top.is-visible:hover { transform: translateY(-3px); }
.back-to-top > i, .back-to-top > svg, .back-to-top .svg-inline--fa {
    display: block; margin: 0; vertical-align: 0; line-height: 1; width: 1.25rem; height: 1.25rem;
}
.back-to-top:hover > i, .back-to-top:hover > svg { transform: none; }

/* ---- Composants ---- */
.card { border-radius: var(--drm-rayon); }
.card-img-top { border-top-left-radius: var(--drm-rayon); border-top-right-radius: var(--drm-rayon); object-fit: cover; }
.titre-carte { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: var(--lignes, 3); line-clamp: var(--lignes, 3); overflow: hidden; }
.btn, .list-group-item-action, .page-link, .form-control, .form-select { min-height: var(--drm-cible); }
.btn-sm { min-height: 36px; }
.btn.rounded-circle { min-width: var(--drm-cible); display: inline-flex; align-items: center; justify-content: center; }
.list-group-item.fleche { padding-block: .7rem; }
.pagination { flex-wrap: wrap; gap: .25rem; }
.page-link { display: flex; align-items: center; justify-content: center; min-width: var(--drm-cible); border-radius: .5rem !important; }

/* Liens de contenu : soulignement lisible, pas de simple changement de couleur */
#mainContents p a, #mainContents li > a:not(.btn):not(.list-group-item) { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .18em; }

/* Filtres instantanés */
.filtre-liste { background: var(--drm-surface); border: 1px solid var(--drm-trait); border-radius: var(--drm-rayon); padding: 1rem; }
.filtre-liste__puces { display: flex; gap: .4rem; overflow-x: auto; padding-bottom: .15rem; scrollbar-width: thin; }
.filtre-liste__puces .btn { white-space: nowrap; flex: 0 0 auto; }
[hidden] { display: none !important; }

/* Alertes : grandes icônes historiques ramenées à l'échelle sur petit écran */
@media (max-width: 575.98px) {
    .alert .fa-5x { font-size: 2.5em; }
    .alert .display-1.fs-1, .alert .fs-3 { font-size: 1.15rem !important; }
}

/* ---- Tableaux empilés sur mobile ---- */
@media (max-width: 767.98px) {
    table.table-empilee thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
    table.table-empilee, table.table-empilee tbody, table.table-empilee tr, table.table-empilee td, table.table-empilee th { display: block; width: 100%; }
    table.table-empilee tr { margin-bottom: .75rem; border-radius: var(--drm-rayon); overflow: hidden; }
    table.table-empilee td, table.table-empilee tbody th { display: flex; justify-content: space-between; gap: 1rem; text-align: end !important; }
    table.table-empilee td[data-label]::before, table.table-empilee tbody th[data-label]::before { content: attr(data-label); font-weight: 600; text-align: start; }
}

/* ---- Typographie des pages sur mobile ---- */
@media (max-width: 767.98px) {
    #mainContents .display-1, #mainContents .display-2 { font-size: clamp(1.6rem, 1.2rem + 3vw, 2.4rem) !important; }
    #mainContents .display-4 { font-size: clamp(1.5rem, 1.1rem + 2.5vw, 2.2rem) !important; }
    .featurette-heading { font-size: 1.6rem; }
    .main-contents .section-title .titre { font-size: clamp(2rem, 1.4rem + 3vw, 2.75rem); }
    .feature-icon[style*="9rem"] { width: 7rem !important; height: 7rem !important; }
    #mainContents .d-flex.shadow { flex-direction: column; align-items: flex-start; gap: .75rem; }
    #mainContents .d-flex.shadow > .flex-grow-1 { margin-inline-start: 0 !important; }
    .modal-body .row > [class*="col-8"], .modal-body .row > [class*="col-4"] { flex: 0 0 100%; max-width: 100%; }
}

/* ---- Barre d'actions mobile ---- */
.barre-mobile {
    position: fixed; inset: auto 0 0 0; z-index: 1030;
    background: var(--bs-body-bg); border-top: 1px solid var(--drm-trait);
    box-shadow: 0 -.25rem 1rem rgba(11, 35, 86, .08);
    padding-bottom: env(safe-area-inset-bottom, 0);
}
.barre-mobile__liste { display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; margin: 0; padding: 0; list-style: none; }
.barre-mobile__liste a, .barre-mobile__liste button {
    display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .15rem;
    min-height: 58px; width: 100%; border: 0; background: none; color: var(--bs-body-color);
    font-size: .72rem; font-weight: 600; text-decoration: none;
}
.barre-mobile__liste i { font-size: 1.15rem; color: var(--drm-accent); }
.barre-mobile__liste [aria-current="page"] { color: var(--drm-accent); box-shadow: inset 0 3px 0 var(--drm-or); }
@media (max-width: 991.98px) {
    body { padding-bottom: calc(58px + env(safe-area-inset-bottom, 0px)); }
    .back-to-top { bottom: calc(70px + env(safe-area-inset-bottom, 0px)) !important; }
}

/* ---- Pied de page ---- */
.footer-contact-section .h5 a { text-decoration: none; }
.footer-contact-section .h5 a:hover, .footer-contact-section .h5 a:focus-visible { text-decoration: underline; }
@media (max-width: 575.98px) {
    .footer-contact-section .row-cols-2 > * { flex: 0 0 100%; max-width: 100%; margin-bottom: 1rem; }
    footer .copyright ul { flex-direction: column; gap: .25rem !important; }
}

/* ---- Accueil : carrousel lisible sur mobile ---- */
@media (max-width: 767.98px) {
    .featured-slider .item { min-height: 62vw; }
    .post-title.title-extra-large { font-size: 1.35rem; }
    .hot-post-top .post-title.title-large { font-size: 1.2rem; }
}

/* ---- Titres de section de l'accueil : modèle « Projets européens » ---- */
/* Grand titre identique à h2#projets-ue-titre ; protégé contre les règles génériques de .main-contents */
.titre-accueil .titre-accueil__titre,
h2#projets-ue-titre.titre-accueil__titre {
    font-family: "Asap Condensed", sans-serif;
    font-size: clamp(2.5rem, 1.8rem + 3vw, 5rem);
    font-weight: 800 !important;
    line-height: 1.1 !important;
    color: var(--bs-secondary);
    text-wrap: pretty;
}
.titre-accueil--compact .titre-accueil__titre { font-size: clamp(2rem, 1.5rem + 1.2vw, 2.75rem); }
/* Surtitre : reprend .projets-ue__surtitre (couleur, casse, espacement) */
.titre-accueil .titre-accueil__surtitre { display: flex; align-items: center; line-height: 1.4; }
/* Pictogramme au format du drapeau européen (34 × 23), couleurs du Département */
.titre-accueil__picto {
    display: inline-flex; align-items: center; justify-content: center; flex: 0 0 34px;
    width: 34px; height: 23px; border-radius: 2px; background: var(--drm-bleu); color: var(--drm-or);
    font-size: .75rem; box-shadow: 0 0 0 1px rgba(0, 0, 0, .08);
}
[data-bs-theme="dark"] .titre-accueil__picto { box-shadow: 0 0 0 1px rgba(255, 255, 255, .15); }
.titre-accueil__lien { color: var(--cdm-pue-surtitre, var(--drm-bleu)); text-decoration: none; }
.titre-accueil__lien:hover, .titre-accueil__lien:focus-visible { text-decoration: underline; }

/* =====================================================================
   FONCTIONNALITÉS 2027 : chiffres clés, budget visuel, carte, guichet
   ===================================================================== */
.chiffre-cle { height: 100%; padding: 1rem 1.25rem; border-radius: var(--drm-rayon); background: var(--drm-surface); border-inline-start: .3rem solid var(--drm-or); }
.chiffre-cle__valeur { display: block; font-family: "Asap Condensed", sans-serif; font-weight: 800; font-size: clamp(1.6rem, 1.2rem + 1.5vw, 2.4rem); color: var(--drm-accent); line-height: 1.1; }
.chiffre-cle__libelle { display: block; font-size: .95rem; margin-top: .25rem; }

/* Budget visuel */
.budget-barre { display: flex; height: 2.5rem; border-radius: .5rem; overflow: hidden; box-shadow: inset 0 0 0 1px var(--drm-trait); }
.budget-barre span { display: block; min-width: 2px; }
.budget-ligne { border-bottom: 1px solid var(--drm-trait); }
.budget-ligne summary, .budget-ligne--simple { display: grid; grid-template-columns: 1rem 1fr auto; grid-template-rows: auto auto; column-gap: .75rem; align-items: center; padding: .75rem .25rem; cursor: pointer; list-style: none; }
.budget-ligne summary::-webkit-details-marker { display: none; }
.budget-ligne summary:hover { background: var(--drm-surface); }
.budget-ligne--simple { cursor: default; }
.budget-ligne__pastille { width: 1rem; height: 1rem; border-radius: 50%; }
.budget-ligne__libelle { font-weight: 600; }
.budget-ligne__valeur { font-family: "Asap Condensed", sans-serif; font-weight: 800; font-size: 1.25rem; color: var(--drm-accent); white-space: nowrap; }
.budget-ligne__jauge { grid-column: 2 / 4; height: .4rem; background: var(--drm-surface); border-radius: 1rem; margin-top: .35rem; overflow: hidden; }
.budget-ligne__jauge span { display: block; height: 100%; border-radius: 1rem; }
.budget-ligne__detail { padding: 0 .25rem 1rem 1.75rem; }
.budget-ligne details[open] summary .budget-ligne__libelle { color: var(--drm-accent); }

/* Carte des projets */
.carte-projets__carte { height: clamp(320px, 60vh, 560px); border-radius: var(--drm-rayon); border: 1px solid var(--drm-trait); z-index: 0; }
.leaflet-container a { color: #13357B; }
.leaflet-popup-content { font-size: .95rem; line-height: 1.4; }

/* Guichet unique */
.guichet-recherche { background: var(--drm-surface); border: 1px solid var(--drm-trait); border-radius: var(--drm-rayon); padding: 1.25rem; }
.guichet-theme { display: flex; flex-direction: column; gap: .35rem; height: 100%; padding: 1rem; border: 1px solid var(--drm-trait); border-radius: var(--drm-rayon); color: var(--bs-body-color); text-decoration: none; font-weight: 600; }
.guichet-theme i { font-size: 1.5rem; color: var(--drm-accent); }
.guichet-theme:hover, .guichet-theme:focus-visible { border-color: var(--drm-accent); background: var(--drm-surface); }
.guichet-liste { display: grid; gap: .75rem; }
.guichet-demarche { display: flex; flex-direction: column; padding: 1rem 1.25rem; border: 1px solid var(--drm-trait); border-inline-start: .3rem solid var(--drm-accent); border-radius: var(--drm-rayon); color: var(--bs-body-color); text-decoration: none; }
.guichet-demarche:hover, .guichet-demarche:focus-visible { background: var(--drm-surface); }
.guichet-demarche__theme { font-size: .85rem; color: var(--bs-secondary-color); }
.guichet-demarche__titre { font-family: "Asap Condensed", sans-serif; font-weight: 700; font-size: 1.3rem; color: var(--drm-accent); }
.guichet-demarche__resume { margin-top: .25rem; }
.guichet-resume { background: var(--drm-surface); border-radius: var(--drm-rayon); padding: 1.25rem; }
.guichet-etapes ol { counter-reset: etape; list-style: none; padding-left: 0; }
.guichet-etapes ol > li { counter-increment: etape; position: relative; padding: 0 0 1rem 3rem; }
.guichet-etapes ol > li::before { content: counter(etape); position: absolute; left: 0; top: 0; width: 2rem; height: 2rem; border-radius: 50%; background: var(--drm-bleu); color: #fff; display: flex; align-items: center; justify-content: center; font-weight: 700; }

/* Bouton « Mes démarches » de l'en-tête */
.entete-guichet { white-space: nowrap; }

/* ---- Éditeur du message (Trix 2) intégré à la validation Bootstrap ---- */
trix-toolbar .trix-button-group--file-tools,
trix-toolbar [data-trix-attribute="heading1"], trix-toolbar [data-trix-attribute="quote"], trix-toolbar [data-trix-attribute="code"],
trix-toolbar [data-trix-action="increaseNestingLevel"], trix-toolbar [data-trix-action="decreaseNestingLevel"] { display: none !important; }
trix-toolbar .trix-button-row { flex-wrap: wrap; }
trix-toolbar .trix-button { min-height: 40px; min-width: 40px; }
trix-toolbar .trix-button:focus-visible { outline: 3px solid var(--bs-warning, #ffc107); outline-offset: 1px; z-index: 1; }
trix-editor.trix-contenu { min-height: 190px; line-height: 1.6; }
trix-editor.trix-contenu.is-invalid { border-color: var(--bs-form-invalid-border-color, #dc3545); box-shadow: 0 0 0 .2rem rgba(220, 53, 69, .2); }
trix-editor.trix-contenu.is-valid { border-color: var(--bs-form-valid-border-color, #198754); }
/* Le message d'erreur reste affiché sous l'éditeur (la zone d'origine est masquée) */
.was-validated textarea:invalid ~ .invalid-feedback, textarea.is-invalid ~ .invalid-feedback { display: block; }

/* Bouton pause du carrousel (RGAA 13.8) */
.col-lg-7.pad-r { position: relative; }
.carrousel-pause { position: absolute; left: 1rem; bottom: 1rem; z-index: 5; box-shadow: 0 .25rem .75rem rgba(0, 0, 0, .25); }
@media (max-width: 575.98px) { .carrousel-pause span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); } }

/* =====================================================================
   MODE SOMBRE — lisibilité des liens, boutons et surfaces
   Principe : aucun texte sombre sur fond sombre, aucun texte clair sur fond clair.
   Le thème d'origine force la couleur du texte des cartes (.card, .card-title) en clair ;
   les surfaces « claires » de Bootstrap (bg-light, text-bg-light, bg-white) sont donc
   converties en surfaces sombres, et les boutons « primaire » redéfinis avec contraste.
   ===================================================================== */
[data-bs-theme="dark"] {
    --bs-link-color: #A9C0F0;
    --bs-link-color-rgb: 169, 192, 240;
    --bs-link-hover-color: #D4E0FA;
    --bs-link-hover-color-rgb: 212, 224, 250;
    --bs-secondary-color: rgba(230, 230, 230, .78);
    --bs-emphasis-color: #F2F2F2;
}

/* Liens de contenu */
[data-bs-theme="dark"] #mainContents a:not(.btn):not(.badge):not(.list-group-item):not([class*="text-bg-"]):not(.link-light):not(.aside-lien):not(.guichet-demarche):not(.guichet-theme):not(.stretched-link),
[data-bs-theme="dark"] .fil-ariane a { color: var(--bs-link-color); }
[data-bs-theme="dark"] #mainContents a:not(.btn):not(.badge):not(.list-group-item):not([class*="text-bg-"]):not(.link-light):hover { color: var(--bs-link-hover-color); }
[data-bs-theme="dark"] .bandeau-page .fil-ariane a { color: rgba(255, 255, 255, .88); }

/* Surfaces claires de Bootstrap → surfaces sombres (hors paires explicites « bg-light text-dark ») */
[data-bs-theme="dark"] .bg-light:not(.text-dark):not(.btn-close):not(.badge),
[data-bs-theme="dark"] .text-bg-light:not(.badge),
[data-bs-theme="dark"] .bg-white:not(.badge) {
    background-color: var(--drm-surface) !important;
    color: var(--bs-body-color) !important;
}
[data-bs-theme="dark"] .text-black,
[data-bs-theme="dark"] .text-dark:not(.bg-light):not(.badge):not(.bg-warning):not(.text-bg-warning),
[data-bs-theme="dark"] .text-body { color: var(--bs-body-color) !important; }
[data-bs-theme="dark"] .text-secondary { color: #B8C0CC !important; }
[data-bs-theme="dark"] .text-muted { color: rgba(230, 230, 230, .72) !important; }
[data-bs-theme="dark"] .table-light, [data-bs-theme="dark"] .table-light > * { --bs-table-bg: var(--drm-surface); --bs-table-color: var(--bs-body-color); color: var(--bs-body-color); }

/* Boutons */
[data-bs-theme="dark"] .btn-primary {
    --bs-btn-color: #0B2356; --bs-btn-bg: #C9D6F3; --bs-btn-border-color: #C9D6F3;
    --bs-btn-hover-color: #0B2356; --bs-btn-hover-bg: #FFFFFF; --bs-btn-hover-border-color: #FFFFFF;
    --bs-btn-active-color: #0B2356; --bs-btn-active-bg: #E4EBFA; --bs-btn-active-border-color: #E4EBFA;
    --bs-btn-disabled-color: #0B2356; --bs-btn-disabled-bg: #9FAFCF;
    color: var(--bs-btn-color) !important; background-color: var(--bs-btn-bg) !important; border-color: var(--bs-btn-border-color) !important;
}
[data-bs-theme="dark"] .btn-primary:hover, [data-bs-theme="dark"] .btn-primary:focus-visible {
    color: var(--bs-btn-hover-color) !important; background-color: var(--bs-btn-hover-bg) !important; border-color: var(--bs-btn-hover-border-color) !important;
}
[data-bs-theme="dark"] .btn-outline-primary {
    --bs-btn-color: #A9C0F0; --bs-btn-border-color: #A9C0F0;
    --bs-btn-hover-color: #0B2356; --bs-btn-hover-bg: #A9C0F0; --bs-btn-hover-border-color: #A9C0F0;
    --bs-btn-active-color: #0B2356; --bs-btn-active-bg: #C9D6F3; --bs-btn-active-border-color: #C9D6F3;
    --bs-btn-disabled-color: #A9C0F0;
}
[data-bs-theme="dark"] .btn-check:checked + .btn-outline-primary { color: #0B2356; background-color: #A9C0F0; border-color: #A9C0F0; }
[data-bs-theme="dark"] .btn-outline-secondary {
    --bs-btn-color: #CED4DA; --bs-btn-border-color: #8C96A3;
    --bs-btn-hover-color: #111418; --bs-btn-hover-bg: #CED4DA; --bs-btn-hover-border-color: #CED4DA;
    --bs-btn-active-color: #111418; --bs-btn-active-bg: #CED4DA;
}
[data-bs-theme="dark"] .btn-link { --bs-btn-color: #A9C0F0; --bs-btn-hover-color: #D4E0FA; --bs-btn-active-color: #D4E0FA; }
[data-bs-theme="dark"] .btn-dark { --bs-btn-border-color: rgba(255, 255, 255, .45); }
[data-bs-theme="dark"] .btn-outline-danger { --bs-btn-color: #F1A2A8; --bs-btn-border-color: #F1A2A8; --bs-btn-hover-color: #2B0A0D; --bs-btn-hover-bg: #F1A2A8; }
[data-bs-theme="dark"] .btn-outline-warning { --bs-btn-color: #F3D27A; --bs-btn-border-color: #F3D27A; --bs-btn-hover-color: #2B2205; --bs-btn-hover-bg: #F3D27A; }
/* Boutons clairs posés sur une surface devenue sombre : restent lisibles */
[data-bs-theme="dark"] .btn-outline-light { --bs-btn-color: #F8F9FA; --bs-btn-border-color: rgba(248, 249, 250, .75); --bs-btn-hover-color: #111418; --bs-btn-hover-bg: #F8F9FA; }
[data-bs-theme="dark"] .btn-light { --bs-btn-color: #111418; --bs-btn-bg: #E9ECEF; --bs-btn-border-color: #E9ECEF; }
/* Le thème force « aside a » en clair : les boutons clairs de la colonne gardent leur texte sombre */
[data-bs-theme="dark"] aside a.btn-primary, [data-bs-theme="dark"] aside a.btn-light { color: #0B2356 !important; }
[data-bs-theme="dark"] aside a.btn-outline-primary:hover, [data-bs-theme="dark"] aside a.btn-outline-primary:focus-visible { color: #0B2356 !important; }

/* Pagination, groupes de listes, puces de filtre */
[data-bs-theme="dark"] .page-link { color: #A9C0F0; background-color: var(--drm-surface); border-color: var(--drm-trait); }
[data-bs-theme="dark"] .page-item.active .page-link { color: #0B2356; background-color: #A9C0F0; border-color: #A9C0F0; }
[data-bs-theme="dark"] .page-item.disabled .page-link { color: rgba(230, 230, 230, .45); background-color: transparent; }
[data-bs-theme="dark"] .list-group-item { background-color: var(--drm-surface); color: var(--bs-body-color); border-color: var(--drm-trait); }
[data-bs-theme="dark"] .list-group-item-action:hover, [data-bs-theme="dark"] .list-group-item-action:focus { background-color: #26304A; color: #FFFFFF; }
[data-bs-theme="dark"] .list-group-item.active { background-color: #A9C0F0; border-color: #A9C0F0; color: #0B2356; }

/* Composants du projet */
[data-bs-theme="dark"] .aside-lien.is-actif, [data-bs-theme="dark"] .aside-lien.active { color: #FFFFFF; background: #26304A; }
[data-bs-theme="dark"] .aside-annees a { color: var(--bs-body-color) !important; }
[data-bs-theme="dark"] .aside-annees .is-actif { background: #A9C0F0; border-color: #A9C0F0; color: #0B2356; }
[data-bs-theme="dark"] .outils-page__btn { color: var(--bs-body-color); }
[data-bs-theme="dark"] .guichet-appel, [data-bs-theme="dark"] .guichet-demarche, [data-bs-theme="dark"] .guichet-theme { color: var(--bs-body-color); }
[data-bs-theme="dark"] .invalid-feedback { color: #F1A2A8; }
[data-bs-theme="dark"] .valid-feedback { color: #8FD6A8; }
[data-bs-theme="dark"] .form-control, [data-bs-theme="dark"] .form-select { background-color: #12161F; color: var(--bs-body-color); border-color: #4A5570; }
[data-bs-theme="dark"] .form-control::placeholder { color: rgba(230, 230, 230, .55); }
/* Éditeur Trix : lisible en mode sombre (icônes de la barre : fond clair) */
[data-bs-theme="dark"] trix-editor.trix-contenu { background: #12161F; color: var(--bs-body-color); border-color: #4A5570; }
[data-bs-theme="dark"] trix-toolbar .trix-button-group { background: #E9ECEF; border-color: #8C96A3; }
[data-bs-theme="dark"] trix-toolbar .trix-dialog { background: #1C2333; color: var(--bs-body-color); }

/* Guichet : cartes des appels à projets */
.guichet-appel { display: flex; flex-direction: column; padding: 1rem 1.25rem; border: 1px solid var(--drm-trait); border-top: .3rem solid var(--drm-or); border-radius: var(--drm-rayon); background: var(--bs-body-bg); }
.guichet-appels { padding: 1.25rem; border-radius: var(--drm-rayon); background: var(--drm-surface); }

/* ---- Visionneuse de photos (GLightbox) ---- */
.glightbox-container .gbtn:focus-visible { outline: 3px solid var(--drm-or); outline-offset: 2px; }
.glightbox-container .gbtn { min-width: var(--drm-cible); min-height: var(--drm-cible); }
.glightbox-clean .gslide-title { font-family: "Asap Condensed", sans-serif; font-weight: 700; margin-bottom: 0; }
.gallery-lightbox { display: block; cursor: zoom-in; }
.gallery-lightbox:focus-visible img { outline: 3px solid var(--drm-or); outline-offset: 2px; }

/* ---- Accueil : bouton « pause » du carrousel visible au survol et au clavier uniquement ----
   (toujours visible sur écran tactile, où le survol n'existe pas ; RGAA 13.8 respecté) */
@media (hover: hover) and (pointer: fine) {
    .carrousel-pause { opacity: 0; transform: translateY(.25rem); transition: opacity .2s ease, transform .2s ease; }
    .col-lg-7.pad-r:hover .carrousel-pause,
    .col-lg-7.pad-r:focus-within .carrousel-pause,
    .carrousel-pause:focus-visible,
    .carrousel-pause[aria-pressed="true"] { opacity: 1; transform: none; }
}
@media (prefers-reduced-motion: reduce) { .carrousel-pause { transition: none; } }

/* ---- Accueil : mises en évidence — plus de fond blanc derrière les boutons ---- */
.mises-en-evidence .card,
.mises-en-evidence .card-body { background-color: transparent !important; }
.mises-en-evidence .card-body { padding-top: 0; position: relative; }

/* ---- Lecture d'une actualité : légende de l'image ---- */
.figure-actualite { margin: 0; }
.figure-actualite__legende {
    display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: .25rem 1rem;
    padding: .5rem .25rem 0; font-size: .875rem !important; line-height: 1.45; color: var(--bs-secondary-color);
    overflow-wrap: anywhere;
}
.figure-actualite__texte { flex: 1 1 18rem; text-align: start; }
.figure-actualite__credit { flex: 0 0 auto; margin-inline-start: auto; font-style: italic; white-space: nowrap; }
[data-bs-theme="dark"] .figure-actualite__legende { color: rgba(230, 230, 230, .78) !important; }
/* La carte du chapô chevauche le bas de l'image (-2rem, thème d'origine) : quand l'image a une légende,
   la carte se place sous la légende au lieu de la recouvrir */
.figure-actualite--legende + .actuCardBody { margin-top: .75rem !important; }
.figure-actualite--legende .figure-actualite__legende { position: relative; z-index: 1; }

/* ═══ Plans de transport (carte des lignes interurbaines) ═══ */
.carte-transport__carte { height: clamp(360px, 65vh, 620px); border-radius: var(--drm-rayon); border: 1px solid var(--drm-trait); z-index: 0; }
.carte-transport__lignes { display: flex; flex-wrap: wrap; gap: .5rem; margin: 0 0 .75rem; padding: 0; border: 0; }
.carte-transport__choix { display: inline-flex; align-items: center; gap: .5rem; padding: .35rem .75rem .35rem .4rem; border: 1px solid var(--drm-trait); border-radius: 999px; background: var(--bs-body-bg); font-size: .875rem; cursor: pointer; }
.carte-transport__choix:has(input:not(:checked)) { opacity: .55; }
.carte-transport__choix input { accent-color: var(--couleur-ligne, #13357B); }
.carte-transport__choix:has(input:focus-visible) { outline: 3px solid var(--couleur-ligne, #13357B); outline-offset: 2px; }
.carte-transport__pastille { display: inline-flex; align-items: center; justify-content: center; min-width: 2.4em; padding: .15em .45em; border-radius: .4em; background: var(--couleur-ligne, #13357B); color: #fff; font-weight: 700; font-size: .85em; line-height: 1.3; }
.carte-transport__pastille--grande { min-width: 3.2rem; padding: .45rem .6rem; font-size: 1.15rem; border-radius: .6rem; }
.carte-ligne { border-top: .3rem solid var(--couleur-ligne, #13357B) !important; }
.carte-ligne__arrets { list-style: none; margin: 0; padding: 0 0 0 1.1rem; border-left: 4px solid var(--couleur-ligne, #13357B); font-size: .9rem; }
.carte-ligne__arrets li { position: relative; padding: .15rem 0 .15rem .4rem; }
.carte-ligne__arrets li::before { content: ""; position: absolute; left: calc(-1.1rem - 8px); top: .55em; width: 12px; height: 12px; border-radius: 50%; background: var(--bs-body-bg); border: 3px solid var(--couleur-ligne, #13357B); }
.carte-ligne__arrets .carte-ligne__arret--pole { font-weight: 700; }
.carte-ligne__arrets .carte-ligne__arret--pole::before { border-color: var(--bs-emphasis-color); width: 14px; height: 14px; left: calc(-1.1rem - 9px); }
