@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700&display=swap');


/* ============================================================
   VARIABLES CSS — système de design Happy Day CMS
   Les variables de marque (*) sont surchargeables depuis
   le back-office via settings__settings (groupe = 'theme')
   ============================================================ */
:root {
    /* ── Couleurs de marque (*) ───────────────────────────── */
    /* Dérivées de COLOR_PRIMARY/COLOR_SECONDARY (charte SMPS-GED,
       #ED1C25 / #485664) — voir CORRECTIFS-A-REPORTER-CMS-BASE.md :
       ces valeurs restent codées en dur, pas recalculées dynamiquement
       si color-primary/-secondary sont resurchargées via le back-office. */
    --color-primary-rgb: 237, 28, 37;
    --color-primary-light: #fde8e9; /* fond léger primaire */
    --color-primary-dark: #a6141a; /* hover/actif */
    --color-secondary-rgb: 72, 86, 100;

    /* ── Surcharge Bootstrap — lie BS aux couleurs de marque ─ */
    --bs-primary: var(--color-primary);
    --bs-primary-rgb: var(--color-primary-rgb);
    --bs-secondary: var(--color-secondary);
    --bs-secondary-rgb: var(--color-secondary-rgb);
    --bs-link-color: var(--color-primary);
    --bs-link-hover-color: var(--color-primary-dark);
    --bs-focus-ring-color: rgba(var(--color-primary-rgb), .25);
    /* --bs-dark-rgb n'est PAS lié à la marque : "dark" est un neutre
       sémantique Bootstrap (bg-dark, text-dark, data-bs-theme="dark" —
       footer, topbar, blocs "texte" en fond blanc/texte sombre...), pas
       une couleur d'accent. Le lier à --color-primary-rgb (comme
       auparavant) rendait tout élément .bg-dark/.text-dark ROUGE dès que
       la couleur principale est devenue une couleur vive — bug repéré
       après déploiement (topbar, footer et blocs texte entièrement
       rouges). On garde la valeur neutre par défaut de Bootstrap
       (#212529) en ne redéfinissant plus cette variable ici. */


    /* ── Neutres UI ──────────────────────────────────────── */
    --color-bg: #ffffff;
    --color-bg-light: #f8f9fa;
    --color-bg-medium: #f0f0f0;
    --color-border-light: #e9ecef;
    --color-border: #dee2e6;
    --color-border-medium: #c8c8c8;
    --color-border-dark: #adb5bd;

    /* ── Texte ───────────────────────────────────────────── */
    /* --color-text (*) et --color-heading-1/-2/-3 (*) ne sont PAS
       définies ici : elles sont surchargeables depuis Réglages > Thème
       (settings__settings, groupe 'theme') et injectées par
       templates/default/index.php, chargé avant ce fichier — les
       redéfinir ici les écraserait (même piège que radius/shadow,
       voir plus bas). */
    --color-text-primary: #212529;
    --color-text-dark: #343a40;
    --color-text-secondary: #495057;
    --color-text-muted: #6c757d;
    --color-text-hint: #868e96;

    /* ── États sémantiques ───────────────────────────────── */
    --color-info-bg: #e7f1ff;
    --color-info: #0d6efd;
    --color-info-dark: #0d47a1;
    --color-success-bg: #d1e7dd;
    --color-success-text: #0a3622;
    --color-danger: #dc3545;
    --color-warning-bg: #fff3cd;

    /* ── Paramètres de "card" communs (*) ─────────────────────
       Rayon/ombre par défaut hérités par tous les plugins de bloc.
       Un plugin ne doit redéfinir localement que ce qui lui est
       vraiment spécifique (ex : effet 3D, glow, flip-clock...).
       --radius-sm/-card/-lg/-pill et --shadow-card/-hover (*) sont
       définis dans templates/default/index.php — pas ici — car ils
       sont surchargeables depuis Réglages > Thème (settings__settings,
       groupe 'theme'). Les redéfinir ici les écraserait (main.css est
       chargé après le bloc <style> inline qui porte la valeur BDD). */
    --radius-circle: 50%; /* avatars, dots, icônes rondes — non surchargeable */
}

/* ============================================================
   BASE
   ============================================================ */
body {
    color: var(--color-text);
    font-family: 'Montserrat', sans-serif;
    font-optical-sizing: auto;
    font-weight: 400;
    font-style: normal;
    font-size: 1rem;
    line-height: 1.5;
    background-color: var(--color-bg);
}

a:focus {
    outline: none;
    box-shadow: none; /* Supprime l'effet de focus spécifique à certains navigateurs comme Safari */
}

.btn-primary {
    background-color: var(--color-accent);
    border-color: var(--color-accent);
}

.btn-primary:hover {
    background-color: var(--color-support);
    border-color: var(--color-support);
}

.pt-6 {
    padding-top: 5rem !important;
}

.pb-6 {
    padding-bottom: 5rem !important;
}

h1, h2 {
    font-family: 'Montserrat', sans-serif;
    font-weight: 400;
    font-style: normal;
}

h1 {
    color: var(--color-heading-1);
}

h1 span {
    color: var(--color-primary);
}

h2 {
    color: var(--color-heading-2);
}

h2 span {
    color: var(--color-primary);
}

h3 {
    color: var(--color-heading-3);
}

.bg-accent {
    background-color: var(--color-accent);
}

.fw-500 {
    font-weight: 500;
}

.text-white {
    h1 {
        color: var(--color-bg);
    }

    h2 {
        color: var(--color-bg);
    }

    h3 {
        color: var(--color-accent);
    }
}

a {
    color: var(--color-primary);
}

a:hover {
    color: var(--color-support);
}

.btn-xs {
    padding: .20rem .5rem;
    font-size: .700rem;
    line-height: 1.5;
    border-radius: .15rem;
}


/* ============================================================
   Module Actualités — Listing & Détail
   ============================================================ */

/* ── Listing ─────────────────────────────────────────────── */

.news-listing {
    padding: 3rem 0;
}

.news-listing__title {
    margin-bottom: 2rem;
}

.news-listing__empty {
    text-align: center;
    padding: 3rem 0;
}

/* Grille — 3 colonnes desktop, 2 tablette, 1 mobile */
.news-listing__grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 2rem;
    align-items: stretch;
}

@media (max-width: 991px) {
    .news-listing__grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 575px) {
    .news-listing__grid {
        grid-template-columns: 1fr;
    }
}

/* ── Carte actu ──────────────────────────────────────────── */

.news-card {
    display: flex;
    flex-direction: column;
    background: var(--color-bg);
    border-radius: var(--radius-card);
    box-shadow: var(--shadow-card);
    overflow: hidden;
    transition: box-shadow .2s, transform .2s;
}

.news-card:hover {
    box-shadow: var(--shadow-card-hover);
    transform: translateY(-2px);
}

.news-card__img-link {
    display: block;
    position: relative;
    aspect-ratio: 3 / 2;
    overflow: hidden;
    flex-shrink: 0;
}

.news-card__img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform .3s ease;
}

/* ── Badge langue (contenu en repli, autre langue que le site) ── */
.news-card__lang-badge,
.agenda-card__lang-badge,
.search-result-item__lang-badge {
    position: absolute;
    top: 10px;
    right: 10px;
    z-index: 2;
    display: inline-block;
    background: rgba(0, 0, 0, .65);
    color: #fff;
    font-size: .68rem;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
    padding: 2px 8px;
    border-radius: var(--radius-pill);
    line-height: 1.5;
}

/* Carte sans vignette (vignette par défaut désactivée dans Réglages >
   Contenu et aucune image propre à l'enregistrement) : le badge de langue
   n'a plus d'image sur laquelle se superposer — affiché en ligne, en haut
   de la carte, plutôt qu'en position absolue. */
.agenda-card__lang-badge--standalone,
.news-card__lang-badge--standalone,
.mediatheque-card__lang-badge--standalone {
    position: static;
    display: inline-block;
    margin: 1rem 1rem 0;
    align-self: flex-start;
}

.search-result-item__lang-badge {
    position: static;
    display: inline-block;
    margin-left: .4rem;
    background: var(--color-border);
    color: var(--color-text-secondary);
}

.news-card:hover .news-card__img {
    transform: scale(1.04);
}

.news-card__body {
    display: flex;
    flex-direction: column;
    flex: 1;
    padding: 1.25rem;
    gap: .5rem;
}

.news-card__meta {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .4rem;
    font-size: .8rem;
}

.news-card__date {
    color: var(--color-text-muted);
}

.news-card__theme {
    display: inline-block;
    background: var(--color-border-light);
    color: var(--color-text-secondary);
    border-radius: var(--radius-pill);
    padding: 1px 10px;
    font-size: .75rem;
    text-decoration: none;
    transition: background .15s;
}

.news-card__theme:hover {
    background: var(--color-border);
    color: var(--color-text-primary);
}

.news-card__title {
    font-size: 1.05rem;
    font-weight: 600;
    line-height: 1.35;
    margin: 0;
}

.news-card__title a {
    color: inherit;
    text-decoration: none;
}

.news-card__title a:hover {
    color: var(--color-primary);
}

.news-card__intro {
    font-size: .9rem;
    color: var(--color-text-muted);
    line-height: 1.5;
    flex: 1;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
    margin: 0;
}

.news-card__btn {
    align-self: flex-start;
    margin-top: auto;
}

/* ── Indicateurs de contenu (galerie, diaporama, vidéo, audio, document) ──
   Partagés entre les listings actus/agenda/médiathèque — voir
   FrontOffice::renderIndicateursContenu(). Classes non préfixées par
   module : une seule définition suffit pour les 3 cartes. */
.content-indicators {
    display: flex;
    align-items: center;
    gap: .4rem;
    margin: .5rem 0 0;
    font-size: .8rem;
    color: var(--color-text-muted);
}

.content-indicators__label {
    font-weight: 500;
}

.content-indicators__icon {
    font-size: 1rem;
    color: var(--color-primary);
    cursor: help;
}

/* ── Cartes de listing : boutons toujours en bas de la carte ──
   (actus, agenda, retour sur, médiathèque, et les blocs qui réutilisent
   ces cartes : prochains RDV, derniers retours sur...). Le dernier élément
   du corps (bouton seul, ou ligne de boutons « Lire la suite » + « Voir le
   retour sur ») est poussé en bas, que l'intro existe ou non ; les
   indicateurs de contenu, s'il y en a, descendent avec lui. */
.news-card__body > :last-child,
.agenda-card__body > :last-child,
.mediatheque-card__body > :last-child {
    margin-top: auto;
}

.news-card__body > .content-indicators,
.agenda-card__body > .content-indicators,
.mediatheque-card__body > .content-indicators {
    margin-top: auto;
}

.news-card__body > .content-indicators ~ :last-child,
.agenda-card__body > .content-indicators ~ :last-child,
.mediatheque-card__body > .content-indicators ~ :last-child {
    margin-top: 0;
}

/* ── Pagination ──────────────────────────────────────────── */

.news-pagination {
    margin-top: 3rem;
    text-align: center;
}

.news-pagination__list {
    list-style: none;
    padding: 0;
    margin: 0 0 .75rem;
    display: flex;
    justify-content: center;
    align-items: center;
    flex-wrap: wrap;
    gap: .35rem;
}

.news-pagination__link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 38px;
    height: 38px;
    padding: 0 .75rem;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    text-decoration: none;
    color: var(--color-text-secondary);
    font-size: .9rem;
    transition: background .15s, border-color .15s, color .15s;
}

.news-pagination__link:hover {
    background: var(--color-bg-light);
    border-color: var(--color-border-dark);
}

.news-pagination__link--active {
    background: var(--color-primary);
    border-color: var(--color-primary);
    color: var(--color-bg);
    pointer-events: none;
}

.news-pagination__ellipsis {
    color: var(--color-border-dark);
    padding: 0 .35rem;
}

.news-pagination__info {
    font-size: .85rem;
    color: var(--color-text-muted);
}

/* ── Détail ──────────────────────────────────────────────── */

.news-detail {
    padding: 3rem 0;
}

.news-detail__breadcrumb {
    font-size: .85rem;
    color: var(--color-text-muted);
    margin-bottom: 1.5rem;
}

.news-detail__breadcrumb-link {
    color: var(--color-text-muted);
    text-decoration: none;
}

.news-detail__breadcrumb-link:hover {
    text-decoration: underline;
}

.news-detail__breadcrumb-sep {
    margin: 0 .4rem;
}

.news-detail__header {
    margin-bottom: 2.5rem;
}

.news-detail__themes {
    display: flex;
    flex-wrap: wrap;
    gap: .4rem;
    margin-bottom: .75rem;
}

.news-detail__theme-badge {
    display: inline-block;
    background: var(--color-border-light);
    color: var(--color-text-secondary);
    border-radius: var(--radius-pill);
    padding: 2px 12px;
    font-size: .8rem;
    text-decoration: none;
}

.news-detail__theme-badge:hover {
    background: var(--color-border);
}

.news-detail__title {
    font-size: clamp(1.5rem, 4vw, 2.5rem);
    font-weight: 700;
    line-height: 1.2;
    margin-bottom: .5rem;
}

.news-detail__date {
    display: block;
    color: var(--color-text-muted);
    font-size: .9rem;
    margin-bottom: 1rem;
}

.news-detail__intro {
    font-size: 1.15rem;
    color: var(--color-text-secondary);
    line-height: 1.6;
    border-left: 3px solid var(--color-primary);
    padding-left: 1rem;
    margin-bottom: 1.5rem;
}

.news-detail__vignette {
    border-radius: var(--radius-card);
    overflow: hidden;
    margin-bottom: 2rem;
}

.news-detail__img {
    width: 100%;
    max-height: 480px;
    object-fit: cover;
    display: block;
}

.news-detail__tags {
    margin-top: 2.5rem;
    padding-top: 1.5rem;
    border-top: 1px solid var(--color-border);
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .4rem;
}

.news-detail__tags-label {
    font-size: .85rem;
    color: var(--color-text-muted);
    margin-right: .25rem;
}

.news-detail__tag {
    display: inline-block;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-pill);
    padding: 2px 12px;
    font-size: .8rem;
    color: var(--color-text-secondary);
    text-decoration: none;
    transition: border-color .15s, background .15s;
}

.news-detail__tag:hover {
    background: var(--color-bg-light);
    border-color: var(--color-border-dark);
}

.news-detail__back {
    margin-top: 2rem;
}

/* ── Filtres actifs ──────────────────────────────────────── */

.news-listing__active-filters {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .5rem;
    margin-bottom: 1.5rem;
}

.news-filter-badge {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    background: var(--color-info-bg);
    color: var(--color-info-dark);
    border-radius: var(--radius-pill);
    padding: 3px 12px;
    font-size: .85rem;
}

.news-filter-badge__remove {
    color: var(--color-info);
    text-decoration: none;
    font-size: 1rem;
    line-height: 1;
    font-weight: bold;
}

.news-filter-badge__remove:hover {
    color: var(--color-info-dark);
}

.news-listing__reset {
    font-size: .85rem;
    color: var(--color-text-muted);
    text-decoration: underline;
}

.news-listing__reset:hover {
    color: var(--color-text-primary);
}

/* ── Bloc _news_info ──────────────────────────────────────── */

.actu-info {
}

.actu-info__vignette {
    border-radius: var(--radius-card);
    overflow: hidden;
}

.actu-info__vignette--top {
    margin-bottom: 2rem;
}

.actu-info__vignette--below {
    margin-top: 2rem;
}

.actu-info__img {
    width: 100%;
    max-height: 520px;
    object-fit: cover;
    display: block;
}

.actu-info__header {
    display: flex;
    flex-direction: column;
    gap: .6rem;
}

.actu-info__themes {
    display: flex;
    flex-wrap: wrap;
    gap: .4rem;
}

.actu-info__theme-badge {
    display: inline-block;
    background: var(--color-border-light);
    color: var(--color-text-secondary);
    border-radius: var(--radius-pill);
    padding: 2px 12px;
    font-size: .8rem;
    text-decoration: none;
    transition: background .15s;
}

.actu-info__theme-badge:hover {
    background: var(--color-border);
}

.actu-info__title {
    font-size: clamp(1.5rem, 4vw, 2.5rem);
    line-height: 1.2;
    margin: 0;
}

.actu-info__date {
    font-size: .9rem;
    color: var(--color-text-muted);
}

.actu-info__intro {
    font-size: 1.1rem;
    color: var(--color-text-secondary);
    line-height: 1.6;
    border-left: 3px solid var(--color-primary);
    padding-left: 1rem;
    margin: 0;
}

.actu-info__tags {
    border-top: 1px solid var(--color-border-medium);
    padding-top: 1rem;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .4rem;
    margin-top: 2rem;
}

.actu-info__tags-label {
    font-size: .85rem;
    color: var(--color-text-muted);
}

.actu-info__tag {
    display: inline-block;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-pill);
    padding: 2px 12px;
    font-size: .8rem;
    color: var(--color-text-secondary);
    text-decoration: none;
    transition: border-color .15s, background .15s;
}

.actu-info__tag:hover {
    background: var(--color-bg-light);
    border-color: var(--color-border-dark);
}


/* ============================================================
   Module Agenda — Listing & Détail
   ============================================================ */

/* ── Listing ─────────────────────────────────────────────── */

.agenda-listing {
    padding: 3rem 0;
}

.agenda-listing__title {
    margin-bottom: 2rem;
}

.agenda-listing__empty {
    text-align: center;
    padding: 3rem 0;
}

.agenda-listing__grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 2rem;
    align-items: stretch;
}

@media (max-width: 991px) {
    .agenda-listing__grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 575px) {
    .agenda-listing__grid {
        grid-template-columns: 1fr;
    }
}

/* ── Carte agenda ─────────────────────────────────────────── */

.agenda-card {
    display: flex;
    flex-direction: column;
    background: var(--color-bg);
    border-radius: var(--radius-card);
    box-shadow: var(--shadow-card);
    overflow: hidden;
    transition: box-shadow .2s, transform .2s;
}

.agenda-card:hover {
    box-shadow: var(--shadow-card-hover);
    transform: translateY(-2px);
}

.agenda-card__img-link {
    display: block;
    position: relative;
    aspect-ratio: 3 / 2;
    overflow: hidden;
    flex-shrink: 0;
}

.agenda-card__img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform .3s ease;
}

.agenda-card:hover .agenda-card__img {
    transform: scale(1.04);
}

.agenda-card__body {
    display: flex;
    flex-direction: column;
    flex: 1;
    padding: 1.25rem;
    gap: .5rem;
}

.agenda-card__meta {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .4rem;
    font-size: .8rem;
}

.agenda-card__date {
    color: var(--color-text-muted);
}

.agenda-card__theme {
    display: inline-block;
    background: var(--color-border-light);
    color: var(--color-text-secondary);
    border-radius: var(--radius-pill);
    padding: 1px 10px;
    font-size: .75rem;
    text-decoration: none;
    transition: background .15s;
}

.agenda-card__theme:hover {
    background: var(--color-border);
    color: var(--color-text-primary);
}

.agenda-card__title {
    font-size: 1.05rem;
    font-weight: 600;
    line-height: 1.35;
    margin: 0;
    color: var(--color-support);
}

.agenda-card__title a {
    color: inherit;
    text-decoration: none;
    color: var(--color-support);
}

.agenda-card__title a:hover {
    color: var(--color-accent);
}

.agenda-card__intro {
    font-size: .9rem;
    color: var(--color-text-muted);
    line-height: 1.5;
    flex: 1;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
    margin: 0;
}

.agenda-card__btn {
    align-self: flex-start;
    margin-top: auto;
}

/* ── Retour sur — surcharges spécifiques ────────────────────
   La date porte tout le poids visuel de la rétrospective (demande
   client) : rendue en <h2>, en toutes lettres (voir retoursur_d() dans
   inc/helpers.php, format "long" — ex. "7 avril 2026"), rattachée
   directement au titre (juste au-dessus), aussi bien sur le listing que
   sur le développé — plus une simple mention dans une ligne de méta. */

/* Listing (#retoursur-listing, cf. modules/retour-sur/listing.php) :
   la date est un <h2> à part entière au-dessus du titre — on la garde
   volontairement plus petite que .agenda-card__title (1.05rem) tout en
   lui donnant du poids (gras + couleur d'accent du module) pour qu'elle
   reste bien visible malgré sa taille réduite. */
.retoursur-card__date {
    margin: 0 0 .15rem;
    font-size: .85rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--color-primary);
}

.retoursur-card__date a {
    color: inherit;
    text-decoration: none;
}

.retoursur-card__date a:hover {
    text-decoration: underline;
}

/* Détail (modules/retour-sur/detail.php) : date (h2) + titre (h1) + lieu,
   affichés en tête de page, au-dessus du reste du contenu (hero compris). */
.retoursur-detail__header {
    margin-bottom: 1rem;
}

.retoursur-detail__date {
    margin: 0 0 .25rem;
    font-size: 1.15rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--color-primary);
}

.retoursur-detail__titre {
    margin: 0 0 .5rem;
}

.retoursur-detail__lieu {
    font-size: .95rem;
    color: var(--color-text-muted);
}

/* ── Pagination ──────────────────────────────────────────── */

.agenda-pagination {
    margin-top: 3rem;
    text-align: center;
}

.agenda-pagination__list {
    list-style: none;
    padding: 0;
    margin: 0 0 .75rem;
    display: flex;
    justify-content: center;
    align-items: center;
    flex-wrap: wrap;
    gap: .35rem;
}

.agenda-pagination__link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 38px;
    height: 38px;
    padding: 0 .75rem;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    text-decoration: none;
    color: var(--color-text-secondary);
    font-size: .9rem;
    transition: background .15s, border-color .15s, color .15s;
}

.agenda-pagination__link:hover {
    background: var(--color-bg-light);
    border-color: var(--color-border-dark);
}

.agenda-pagination__link--active {
    background: var(--color-primary);
    border-color: var(--color-primary);
    color: var(--color-bg);
    pointer-events: none;
}

.agenda-pagination__ellipsis {
    color: var(--color-border-dark);
    padding: 0 .35rem;
}

.agenda-pagination__info {
    font-size: .85rem;
    color: var(--color-text-muted);
}

/* ── Détail ──────────────────────────────────────────────── */

.agenda-detail {
    padding: 3rem 0;
}

.agenda-detail__breadcrumb {
    font-size: .85rem;
    color: var(--color-text-muted);
    margin-bottom: 1.5rem;
}

.agenda-detail__breadcrumb-link {
    color: var(--color-text-muted);
    text-decoration: none;
}

.agenda-detail__breadcrumb-link:hover {
    text-decoration: underline;
}

.agenda-detail__breadcrumb-sep {
    margin: 0 .4rem;
}

.agenda-detail__header {
    margin-bottom: 2.5rem;
}

.agenda-detail__themes {
    display: flex;
    flex-wrap: wrap;
    gap: .4rem;
    margin-bottom: .75rem;
}

.agenda-detail__theme-badge {
    display: inline-block;
    background: var(--color-border-light);
    color: var(--color-text-secondary);
    border-radius: var(--radius-pill);
    padding: 2px 12px;
    font-size: .8rem;
    text-decoration: none;
}

.agenda-detail__theme-badge:hover {
    background: var(--color-border);
}

.agenda-detail__title {
    font-size: clamp(1.5rem, 4vw, 2.5rem);
    font-weight: 700;
    line-height: 1.2;
    margin-bottom: .5rem;
}

.agenda-detail__date {
    display: block;
    color: var(--color-text-muted);
    font-size: .9rem;
    margin-bottom: 1rem;
}

.agenda-detail__intro {
    font-size: 1.15rem;
    color: var(--color-text-secondary);
    line-height: 1.6;
    border-left: 3px solid var(--color-primary);
    padding-left: 1rem;
    margin-bottom: 1.5rem;
}

.agenda-detail__vignette {
    border-radius: var(--radius-card);
    overflow: hidden;
    margin-bottom: 2rem;
}

.agenda-detail__img {
    width: 100%;
    max-height: 480px;
    object-fit: cover;
    display: block;
}

.agenda-detail__tags {
    margin-top: 2.5rem;
    padding-top: 1.5rem;
    border-top: 1px solid var(--color-border);
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .4rem;
}

.agenda-detail__tags-label {
    font-size: .85rem;
    color: var(--color-text-muted);
    margin-right: .25rem;
}

.agenda-detail__tag {
    display: inline-block;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-pill);
    padding: 2px 12px;
    font-size: .8rem;
    color: var(--color-text-secondary);
    text-decoration: none;
    transition: border-color .15s, background .15s;
}

.agenda-detail__tag:hover {
    background: var(--color-bg-light);
    border-color: var(--color-border-dark);
}

.agenda-detail__back {
    margin-top: 2rem;
}

/* ── Filtres actifs ──────────────────────────────────────── */

.agenda-listing__active-filters {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .5rem;
    margin-bottom: 1.5rem;
}

.agenda-filter-badge {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    background: var(--color-info-bg);
    color: var(--color-info-dark);
    border-radius: var(--radius-pill);
    padding: 3px 12px;
    font-size: .85rem;
}

.agenda-filter-badge__remove {
    color: var(--color-info);
    text-decoration: none;
    font-size: 1rem;
    line-height: 1;
    font-weight: bold;
}

.agenda-filter-badge__remove:hover {
    color: var(--color-info-dark);
}

.agenda-listing__reset {
    font-size: .85rem;
    color: var(--color-text-muted);
    text-decoration: underline;
}

.agenda-listing__reset:hover {
    color: var(--color-text-primary);
}

/* ── Bloc _agenda_info ──────────────────────────────────────── */

.agenda-info {
}

.agenda-info__vignette {
    border-radius: var(--radius-card);
    overflow: hidden;
}

.agenda-info__vignette--top {
    margin-bottom: 2rem;
}

.agenda-info__vignette--below {
    margin-top: 2rem;
}

.agenda-info__img {
    width: 100%;
    max-height: 520px;
    object-fit: cover;
    display: block;
}

.agenda-info__header {
    display: flex;
    flex-direction: column;
    gap: .6rem;
}

.agenda-info__themes {
    display: flex;
    flex-wrap: wrap;
    gap: .4rem;
}

.agenda-info__theme-badge {
    display: inline-block;
    background: var(--color-border-light);
    color: var(--color-text-secondary);
    border-radius: var(--radius-pill);
    padding: 2px 12px;
    font-size: .8rem;
    text-decoration: none;
    transition: background .15s;
}

.agenda-info__theme-badge:hover {
    background: var(--color-border);
}

.agenda-info__title {
    font-size: clamp(1.5rem, 4vw, 2.5rem);
    line-height: 1.2;
    margin: 0;
}

.agenda-info__date {
    font-size: .9rem;
    color: var(--color-text-muted);
}

.agenda-info__intro {
    font-size: 1.1rem;
    color: var(--color-text-secondary);
    line-height: 1.6;
    border-left: 3px solid var(--color-primary);
    padding-left: 1rem;
    margin: 0;
}

.agenda-info__tags {
    border-top: 1px solid var(--color-border-medium);
    padding-top: 1rem;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .4rem;
    margin-top: 2rem;
}

.agenda-info__tags-label {
    font-size: .85rem;
    color: var(--color-text-muted);
}

.agenda-info__tag {
    display: inline-block;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-pill);
    padding: 2px 12px;
    font-size: .8rem;
    color: var(--color-text-secondary);
    text-decoration: none;
    transition: border-color .15s, background .15s;
}

.agenda-info__tag:hover {
    background: var(--color-bg-light);
    border-color: var(--color-border-dark);
}


/* ============================================================
   LAYOUT PAGE + SIDEBAR
   ============================================================ */

.layout-content {
    min-width: 0;
}

.layout-sidebar {
    width: 320px;
    max-width: 28%;
    min-width: 220px;
    background-color: var(--color-sidebar-bg, #ffffff);
}

@media (max-width: 767.98px) {
    .layout-sidebar {
        width: 100%;
        max-width: 100%;
        min-width: 0;
    }
}

@media (min-width: 768px) and (max-width: 1199.98px) {
    .layout-sidebar {
        width: 260px;
        max-width: 30%;
    }
}

@media (min-width: 1400px) {
    .layout-sidebar {
        width: 340px;
        max-width: 25%;
    }
}


/* ============================================================
   SIDEBAR — styles communs
   ============================================================ */

.sidebar {
    display: flex;
    flex-direction: column;
    gap: 0;
}

.sidebar-block {
}

.sidebar-block-title {
    font-size: .9rem;
    font-weight: 600;
    letter-spacing: .05em;
    text-transform: uppercase;
    color: var(--color-accent);
    margin-bottom: 10px;
}


/* ============================================================
   RECHERCHE — sidebar_search
   ============================================================ */
.sidebar-search-form .input-group {
    border-radius: var(--radius-card);
    overflow: hidden;
    border: 1px solid var(--color-border-light);
    display: flex;
}

.sidebar-search-form .sidebar-search-input {
    border: none;
    border-radius: 0;
    font-size: 13px;
    padding: 8px 12px;
    flex: 1;
    background: var(--color-bg-light);
    color: inherit;
    outline: none;
}

.sidebar-search-form .sidebar-search-btn {
    border: none;
    border-left: 1px solid var(--color-border-light);
    border-radius: 0;
    background: var(--color-bg-light);
    padding: 8px 12px;
    cursor: pointer;
    color: var(--color-text-muted);
    transition: background .15s;
}

.sidebar-search-form .sidebar-search-btn:hover {
    background: var(--color-bg-medium);
}


/* ============================================================
   LIENS / NAVIGATION — sidebar_liens
   ============================================================ */
.sidebar-liens-list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.sidebar-lien-item {
}

.sidebar-lien {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    color: var(--color-text-secondary);
    padding: 5px 8px;
    border-radius: var(--radius-sm);
    text-decoration: none;
    transition: background .12s, color .12s;
}

.sidebar-lien:hover {
    background: var(--color-bg-medium);
    color: var(--color-text-primary);
}

.sidebar-lien.active {
    background: var(--color-bg-medium);
    color: var(--color-text-primary);
    font-weight: 500;
}

.sidebar-lien-arrow {
    font-size: 10px;
    color: var(--color-border-dark);
    flex-shrink: 0;
    transition: transform .12s;
}

.sidebar-lien:hover .sidebar-lien-arrow {
    transform: translateX(2px);
    color: var(--color-text-muted);
}


/* ============================================================
   TAGS — sidebar_tags
   ============================================================ */
.sidebar-tags-cloud {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}

/* Pastille : libellé + compteur, même vocabulaire visuel que le bloc
   Thématiques (.sidebar-theme / .sidebar-theme-count). La taille varie
   légèrement selon la fréquence du tag (--sidebar-tag-scale, de 1 à 1.25). */
.sidebar-tag {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 4px 6px 4px 10px;
    font-size: calc(13px * var(--sidebar-tag-scale, 1));
    line-height: 1.3;
    color: var(--color-text-secondary);
    background: var(--color-bg);
    border: 1px solid var(--color-border-light);
    border-radius: var(--radius-pill, 999px);
    text-decoration: none;
    transition: background .12s, border-color .12s, color .12s;
    white-space: nowrap;
}

.sidebar-tag__count {
    font-size: 11px;
    font-weight: 500;
    background: var(--color-border-light);
    color: var(--color-text-muted);
    padding: 0 7px;
    border-radius: var(--radius-lg);
    line-height: 1.6;
}

.sidebar-tag:hover {
    background: var(--color-bg-medium);
    border-color: var(--color-border);
    color: var(--color-text-primary);
}

.sidebar-tag.active {
    /* Même principe que le thème actif (.sidebar-theme.active) */
    background: var(--color-bg-medium);
    border-color: var(--color-border);
    color: var(--color-text-primary);
    font-weight: 500;
}

.sidebar-tag.active .sidebar-tag__count {
    background: var(--color-border);
    color: var(--color-text-secondary);
}


/* ============================================================
   THÈMES — sidebar_themes
   ============================================================ */
.sidebar-themes-list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.sidebar-theme-item {
}

.sidebar-theme {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    padding: 6px 8px;
    border-radius: var(--radius-sm);
    text-decoration: none;
    transition: background .12s;
}

.sidebar-theme:hover {
    background: var(--color-bg-medium);
}

.sidebar-theme.active {
    background: var(--color-bg-medium);
}

.sidebar-theme-label {
    font-size: 13px;
    color: var(--color-text-secondary);
}

.sidebar-theme.active .sidebar-theme-label {
    color: var(--color-text-primary);
    font-weight: 500;
}

.sidebar-theme-count {
    font-size: 11px;
    font-weight: 500;
    background: var(--color-border-light);
    color: var(--color-text-muted);
    padding: 2px 7px;
    border-radius: var(--radius-lg);
    line-height: 1.5;
}

.sidebar-theme.active .sidebar-theme-count {
    background: var(--color-border);
    color: var(--color-text-secondary);
}


/* ============================================================
   FILTRES AGENDA — sidebar_agenda_filtres
   ============================================================ */
.sidebar-agenda-filtres-list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.sidebar-agenda-filtre {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    color: var(--color-text-secondary);
    padding: 6px 10px;
    border-radius: var(--radius-sm);
    text-decoration: none;
    transition: background .12s, color .12s;
}

.sidebar-agenda-filtre::before {
    content: '';
    display: inline-block;
    width: 6px;
    height: 6px;
    border-radius: var(--radius-circle);
    background: var(--color-border);
    flex-shrink: 0;
    transition: background .12s;
}

.sidebar-agenda-filtre:hover {
    background: var(--color-bg-medium);
    color: var(--color-text-primary);
}

.sidebar-agenda-filtre:hover::before {
    background: var(--color-border-dark);
}

.sidebar-agenda-filtre.active {
    background: var(--color-bg-medium);
    color: var(--color-text-primary);
    font-weight: 500;
}

.sidebar-agenda-filtre.active::before {
    background: var(--color-primary-dark);
}


/* ============================================================
   TEXTE LIBRE — sidebar_texte
   ============================================================ */
.sidebar-texte-content {
    font-size: 13px;
    line-height: 1.7;
    color: var(--color-text-secondary);
}

.sidebar-texte-content p {
    margin-bottom: 8px;
}

.sidebar-texte-content p:last-child {
    margin-bottom: 0;
}

.sidebar-texte-content a {
    color: inherit;
    text-decoration: underline;
}

.sidebar-texte-content strong {
    font-weight: 500;
    color: var(--color-text-primary);
}


/* ============================================================
   TÉLÉCHARGEMENTS — sidebar_download
   ============================================================ */
.sidebar-download-list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.sidebar-download-item {
}

.sidebar-download-link {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 10px;
    border-radius: var(--radius-card);
    border: 1px solid var(--color-border-light);
    text-decoration: none;
    color: inherit;
    transition: background .12s, border-color .12s;
    background: var(--color-bg);
}

.sidebar-download-link:hover {
    background: var(--color-bg-light);
    border-color: var(--color-border-medium);
}

.sidebar-download-icon {
    font-size: 16px;
    flex-shrink: 0;
    width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--radius-sm);
    background: var(--color-bg-medium);
}

/* Couleurs sémantiques par type de fichier — intentionnellement en dur */
.sidebar-download-icon .bi-file-earmark-pdf {
    color: #c0392b;
}

.sidebar-download-icon .bi-file-earmark-word {
    color: #185fa5;
}

.sidebar-download-icon .bi-file-earmark-excel {
    color: #3b6d11;
}

.sidebar-download-icon .bi-file-earmark-ppt {
    color: #854f0b;
}

.sidebar-download-icon .bi-file-earmark-zip {
    color: #5f5e5a;
}

.sidebar-download-icon .bi-file-earmark-image {
    color: #185fa5;
}

.sidebar-download-icon .bi-file-earmark-music {
    color: #6c3483;
}

.sidebar-download-icon .bi-file-earmark-play {
    color: #c0392b;
}

.sidebar-download-icon .bi-file-earmark-text {
    color: #5f5e5a;
}

.sidebar-download-icon .bi-file-earmark {
    color: var(--color-text-hint);
}

.sidebar-download-label {
    font-size: 13px;
    font-weight: 500;
    color: var(--color-text-primary);
    flex: 1;
    min-width: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.sidebar-download-size {
    font-size: 11px;
    color: var(--color-text-hint);
    white-space: nowrap;
    flex-shrink: 0;
}

/* ============================================================
   SIDEBAR — bloc CTA
   ============================================================ */

.sidebar .cta-block {
    border-radius: var(--radius-card);
    overflow: hidden;
    padding: 24px 20px !important;
}

.sidebar .cta-block h2 {
    font-size: 1.15rem !important;
    font-weight: 600 !important;
    line-height: 1.3;
    margin-bottom: 8px !important;
}

.sidebar .cta-block .lead {
    font-size: .875rem !important;
    margin-bottom: 16px !important;
    line-height: 1.55;
}

.sidebar .cta-block .btn {
    font-size: .8125rem !important;
    padding: 8px 18px !important;
    width: 100%;
    text-align: center;
}

.sidebar .cta-block .text-start,
.sidebar .cta-block .text-end {
    text-align: center !important;
}

.sidebar .cta-block .justify-content-start,
.sidebar .cta-block .justify-content-end {
    justify-content: center !important;
}

.sidebar .cta-block .d-flex {
    display: block !important;
}

.sidebar .cta-block[style*="linear-gradient"] {
    background-size: cover !important;
}

.sidebar .cta-block:not([style*="linear-gradient"]) {
    background-color: var(--color-bg-medium) !important;
    border: 1px solid var(--color-border-light);
}

.sidebar .cta-block:not([style*="linear-gradient"]) h2 {
    color: var(--color-text-primary);
}

.sidebar .cta-block:not([style*="linear-gradient"]) .lead {
    color: var(--color-text-secondary);
    opacity: 1 !important;
}


/* ============================================================
   SIDEBAR — bloc diaporama
   ============================================================ */

.sidebar .diaporama-section .container-xl {
    max-width: 100% !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
}

.sidebar .diaporama-section h2 {
    font-size: 11px !important;
    font-weight: 600 !important;
    letter-spacing: .09em;
    text-transform: uppercase;
    color: var(--color-text-muted) !important;
    margin-bottom: 10px !important;
}

.sidebar .diaporama-section .group-carousel {
    border-radius: var(--radius-card) !important;
    box-shadow: 0 2px 8px rgba(0, 0, 0, .12) !important;
    overflow: hidden;
}

.sidebar .diaporama-section .ratio {
    --bs-aspect-ratio: 75% !important;
}

.sidebar .diaporama-section [id^="btn-fs-"] {
    display: none !important;
}

.sidebar .diaporama-section .carousel-control-prev,
.sidebar .diaporama-section .carousel-control-next {
    width: 12% !important;
    opacity: 0.6;
}

.sidebar .diaporama-section .carousel-control-prev:hover,
.sidebar .diaporama-section .carousel-control-next:hover {
    opacity: 1;
}

.sidebar .diaporama-section .carousel-caption {
    display: block !important;
    padding: 8px 10px 10px !important;
    padding-top: 24px !important;
}

.sidebar .diaporama-section .carousel-caption h5 {
    font-size: .75rem !important;
    font-weight: 400 !important;
    margin-bottom: 2px !important;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.sidebar .diaporama-section .carousel-caption p {
    font-size: .65rem !important;
    margin-bottom: 0 !important;
}

/* ============================================================
   RECHERCHE — Barre header + Modale + Page résultats
   ============================================================ */

.search-trigger {
    background: none;
    border: none;
    cursor: pointer;
    font-size: 1.25rem;
    color: inherit;
    padding: 4px 8px;
    border-radius: var(--radius-sm);
    transition: background .15s;
}

.search-trigger:hover {
    background: rgba(0, 0, 0, .06);
}

/* Icône mail de l'en-tête → /contact — reprend le bouton carré teal
   ("btn-getstarted") du site actuel, pour un repère visuel identique. */
.btn-contact-header {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    border-radius: var(--radius-sm);
    background: var(--color-accent);
    color: #fff;
    font-size: 1.05rem;
    text-decoration: none;
    transition: filter .15s, transform .15s;
}

.btn-contact-header:hover,
.btn-contact-header:focus {
    color: #fff;
    filter: brightness(.92);
}

#search-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, .5);
    z-index: 1050;
    display: none;
    align-items: flex-start;
    justify-content: center;
    padding-top: 80px;
}

#search-overlay.active {
    display: flex;
}

#search-overlay-bar {
    background: var(--color-bg);
    border-radius: var(--radius-lg);
    width: 100%;
    max-width: 680px;
    margin: 0 16px;
    box-shadow: 0 20px 60px rgba(0, 0, 0, .2);
    overflow: hidden;
}

#search-overlay-input {
    width: 100%;
    border: none;
    outline: none;
    padding: 18px 20px;
    font-size: 1.1rem;
    background: transparent;
}

#search-overlay-close {
    position: absolute;
    top: 16px;
    right: 16px;
    background: none;
    border: none;
    font-size: 1.4rem;
    cursor: pointer;
    color: var(--color-text-muted);
}

#search-suggestions {
    border-top: 1px solid var(--color-border-light);
    max-height: 320px;
    overflow-y: auto;
}

.search-suggestion-item {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 10px 20px;
    cursor: pointer;
    transition: background .1s;
    text-decoration: none;
    color: inherit;
}

.search-suggestion-item:hover {
    background: var(--color-bg-light);
}

.search-suggestion-item__icon {
    width: 28px;
    height: 28px;
    border-radius: var(--radius-sm);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    font-size: .85rem;
}

.search-suggestion-item__titre {
    flex: 1;
    font-size: .9rem;
    font-weight: 500;
}

.search-suggestion-item__type {
    font-size: .7rem;
    padding: 2px 6px;
    border-radius: var(--radius-pill);
}

/* ── Modale résultats ────────────────────────────────────────── */
#modal-search-results .modal-dialog {
    max-width: 720px;
}

#modal-search-results .modal-content {
    transition: height .3s ease;
}

#modal-search-results .modal-body {
    padding: 0;
    max-height: 70vh;
    overflow-y: auto;
    transition: max-height .3s ease;
}

.search-modal-filters {
    padding: 12px 20px;
    border-bottom: 1px solid var(--color-border-light);
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    position: sticky;
    top: 0;
    background: var(--color-bg);
    z-index: 1;
}

.search-result-item {
    display: flex;
    gap: 16px;
    padding: 16px 20px;
    border-bottom: 1px solid var(--color-border-light);
    overflow: hidden;
    opacity: 1;
    max-height: 500px;
    transition: opacity .25s ease, max-height .3s ease, padding .3s ease;
}

.search-result-item:hover {
    background: var(--color-bg-light);
}

.search-result-item:last-child {
    border-bottom: none;
}

.search-result-item__thumb {
    flex-shrink: 0;
    width: 80px;
    height: 60px;
    border-radius: var(--radius-sm);
    overflow: hidden;
}

.search-result-item__thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.search-result-item__body {
    flex: 1;
    min-width: 0;
}

.search-result-item__meta {
    margin-bottom: 4px;
}

.search-result-item__type {
    display: inline-flex;
    align-items: center;
    font-size: .7rem;
    font-weight: 600;
    padding: 2px 8px;
    border-radius: var(--radius-pill);
    text-transform: uppercase;
    letter-spacing: .5px;
}

.search-result-item__title {
    font-size: .95rem;
    font-weight: 600;
    margin: 0 0 4px;
    line-height: 1.3;
}

.search-result-item__title a {
    color: inherit;
    text-decoration: none;
}

.search-result-item__title a:hover {
    text-decoration: underline;
}

.search-result-item__extrait {
    font-size: .82rem;
    color: var(--color-text-muted);
    margin: 0;
    line-height: 1.5;
}

.search-result-item__extrait mark {
    background: var(--color-warning-bg);
    padding: 0 2px;
    border-radius: 2px;
    color: inherit;
    font-weight: 600;
}

.search-modal-pagination {
    padding: 12px 20px;
    border-top: 1px solid var(--color-border-light);
    display: flex;
    align-items: center;
    justify-content: space-between;
    font-size: .85rem;
    color: var(--color-text-muted);
}

.search-overlay-extend {
    display: flex;
    align-items: center;
    width: 100%;
    padding: 10px 20px;
    border: none;
    border-top: 1px solid var(--color-border-light);
    background: var(--color-bg-light);
    color: var(--color-primary);
    font-size: .85rem;
    font-weight: 500;
    cursor: pointer;
    transition: background .1s;
    text-align: left;
}

.search-overlay-extend:hover {
    background: var(--color-border-light);
}

/* ── Page résultats ──────────────────────────────────────────── */
.search-results-page__title {
    font-size: 1.6rem;
    font-weight: 700;
    margin-bottom: 1.5rem;
}

.search-results-page__title em {
    font-style: normal;
    color: var(--color-primary);
}

.search-results-page__form-group {
    max-width: 560px;
}

.search-results-list {
    margin-top: 1rem;
}


/* ============================================================
   PUBLICATION DES CONTRIBUTIONS
   ============================================================ */
.forms-published__item {
    background: var(--color-bg);
    border: 1px solid var(--color-border-light);
    border-radius: var(--radius-card);
    padding: 20px;
    margin-bottom: 16px;
}

.forms-published__item-header {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 12px;
}

.forms-published__item-author {
    font-weight: 600;
    font-size: .9rem;
}

.forms-published__item-text {
    font-size: .95rem;
    line-height: 1.6;
    color: var(--color-text-dark);
    margin-bottom: 12px;
}

.forms-published__item-pj {
    margin-bottom: 12px;
}

.forms-published__item-reponse {
    background: var(--color-bg-light);
    border-left: 3px solid var(--color-primary);
    border-radius: 0 6px 6px 0;
    padding: 12px 16px;
    margin-top: 12px;
}

.forms-published__item-reponse-label {
    font-size: .8rem;
    font-weight: 600;
    color: var(--color-primary);
    text-transform: uppercase;
    letter-spacing: .5px;
    margin-bottom: 6px;
}

.forms-published__item-reponse-text {
    font-size: .9rem;
    line-height: 1.6;
}

[data-bs-toggle="collapse"] .toggle-icon {
    transform: rotate(90deg);
    transition: transform .2s ease;
}

[data-bs-toggle="collapse"][aria-expanded="true"] .toggle-icon {
    transform: rotate(180deg);
}


/* ============================================================
   COMMENTAIRES
   ============================================================ */

.cb-bubble {
    background: var(--color-bg-light);
    border-radius: 0 .75rem .75rem .75rem;
    padding: 10px 14px;
}

.cb-avatar {
    flex-shrink: 0;
    width: 36px;
    height: 36px;
    border-radius: var(--radius-circle);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 13px;
    font-weight: 500;
    overflow: hidden;
}

.cb-avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.cb-avatar--sm {
    width: 30px;
    height: 30px;
    font-size: 11px;
}

.cb-meta {
    display: flex;
    align-items: baseline;
    gap: 8px;
    margin-bottom: 4px;
    flex-wrap: wrap;
}

.cb-name {
    font-size: 13px;
    font-weight: 600;
    color: var(--color-text-primary);
}

.cb-date {
    font-size: 11px;
    color: var(--color-text-hint);
}

.cb-text {
    margin: 0;
    font-size: 14px;
    color: var(--color-text-dark);
    line-height: 1.6;
}

.cb-actions {
    display: flex;
    gap: 16px;
    margin-top: 6px;
    padding-left: 4px;
}

.cb-btn-reply {
    background: none;
    border: none;
    cursor: pointer;
    color: var(--color-text-muted);
    display: flex;
    align-items: center;
    gap: 4px;
    padding: 0;
    font-family: inherit;
    font-size: 12px;
    text-decoration: none;
}

.cb-btn-reply:hover {
    color: var(--color-text-primary);
}

.cb-reply-context {
    display: none;
    font-size: 12px;
    background: var(--color-info-bg);
    color: var(--color-info);
    padding: 4px 10px;
    border-radius: var(--radius-card);
    margin-bottom: 8px;
    align-items: center;
    gap: 8px;
}

.cb-form-inner {
    background: var(--color-bg-light);
    border-radius: 0 .75rem .75rem .75rem;
    padding: 10px 14px;
}

.cb-textarea {
    width: 100%;
    border: none;
    background: transparent;
    font-size: 14px;
    color: var(--color-text-primary);
    resize: none;
    outline: none;
    min-height: 64px;
    font-family: inherit;
    line-height: 1.6;
}

.cb-form-footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-top: 8px;
    padding-top: 8px;
    border-top: 1px solid var(--color-border);
}

.cb-submit {
    background: var(--color-primary);
    color: var(--color-bg);
    border: none;
    border-radius: var(--radius-card);
    padding: 6px 18px;
    font-size: 13px;
    cursor: pointer;
    font-family: inherit;
    transition: background .15s;
}

.cb-submit:hover {
    background: var(--color-primary-dark);
}

.cb-login-box {
    padding: 1rem 1.25rem;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
    background: var(--color-bg);
}

.cb-error {
    font-size: 12px;
    color: var(--color-danger);
    margin-top: 4px;
}

.cb-pending {
    font-size: 11px;
    background: var(--color-success-bg);
    color: var(--color-success-text);
    padding: 2px 8px;
    border-radius: var(--radius-pill);
    margin-left: auto;
}

.cb-success-msg {
    font-size: 13px;
    color: var(--color-success-text);
    margin-top: 8px;
    padding: 6px 10px;
    background: var(--color-success-bg);
    border-radius: var(--radius-card);
}

.cb-char-count {
    font-size: 11px;
    color: var(--color-text-hint);
}

.cb-min-w-0 {
    min-width: 0;
}

.cb-input-sm {
    max-width: 140px;
}

.cb-input-md {
    max-width: 220px;
}

.cb-input-lg {
    max-width: 160px;
}

.cb-logout-link {
    font-size: .75rem;
}

/* ============================================================
   FOOTER
   ============================================================ */

.footer-map-wrap {
    min-height: 180px;
}

.footer-map-iframe {
    border: 0;
    display: block;
    min-height: 180px;
}


/* ============================================================
   SOCIAL NETWORKS
   ============================================================ */

.bloc-reseaux-sociaux .rs-link {
    position: relative;
}

.bloc-reseaux-sociaux .rs-link .rs-icon-wrapper {
    transition: transform .3s ease;
}

.bloc-reseaux-sociaux .rs-link:hover .rs-icon-wrapper {
    transform: scale(1.2);
}

.bloc-reseaux-sociaux .rs-icon {

}

/* ============================================================
   BOOTSTRAP TOOLTIP
   ============================================================ */

.custom-tooltip {
    --bs-tooltip-bg: var(--color-primary);;
    --bs-tooltip-color: var(--bs-white);
}

/* ============================================================
   SCROLL TOP
   ============================================================ */
#scroll-top {
    position: fixed;
    bottom: 2rem;
    right: 2rem;
    z-index: 1050;
    width: 42px;
    height: 42px;
    border-radius: var(--radius-circle);
    background: var(--color-accent, #2a2d6b);
    color: #fff;
    font-size: 1.4rem;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 4px 12px rgba(0, 0, 0, .2);
    text-decoration: none;

    opacity: 0;
    transform: translateY(12px);
    pointer-events: none;
    transition: opacity .3s ease, transform .3s ease, background .2s ease;
}

#scroll-top.visible {
    opacity: 1;
    transform: translateY(0);
    pointer-events: auto;
}

#scroll-top:hover {
    background: var(--color-secondary, #e63946);
    transform: translateY(-3px);
    color: #fff;
}

#scroll-top:active {
    transform: translateY(0);
}

/* ============================================================
   Module Médiathèque — clone du bloc CSS Actualités
   Ajouté automatiquement à la migration SMPS-GED (module médiathèque)
   ============================================================ */

/* ============================================================
   Module Médiathèque — Listing & Détail (clone de Actualités)
   ============================================================ */

/* ── Listing ─────────────────────────────────────────────── */

.mediatheque-listing {
    padding: 3rem 0;
}

.mediatheque-listing__title {
    margin-bottom: 2rem;
}

.mediatheque-listing__empty {
    text-align: center;
    padding: 3rem 0;
}

/* Grille — 3 colonnes desktop, 2 tablette, 1 mobile */
.mediatheque-listing__grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 2rem;
    align-items: stretch;
}

@media (max-width: 991px) {
    .mediatheque-listing__grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 575px) {
    .mediatheque-listing__grid {
        grid-template-columns: 1fr;
    }
}

/* ── Carte actu ──────────────────────────────────────────── */

.mediatheque-card {
    display: flex;
    flex-direction: column;
    background: var(--color-bg);
    border-radius: var(--radius-card);
    box-shadow: var(--shadow-card);
    overflow: hidden;
    transition: box-shadow .2s, transform .2s;
}

.mediatheque-card:hover {
    box-shadow: var(--shadow-card-hover);
    transform: translateY(-2px);
}

.mediatheque-card__img-link {
    display: block;
    position: relative;
    aspect-ratio: 3 / 2;
    overflow: hidden;
    flex-shrink: 0;
}

.mediatheque-card__img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform .3s ease;
}

/* ── Badge langue (contenu en repli, autre langue que le site) ── */
.mediatheque-card__lang-badge {
    position: absolute;
    top: 10px;
    right: 10px;
    z-index: 2;
    display: inline-block;
    background: rgba(0, 0, 0, .65);
    color: #fff;
    font-size: .68rem;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
    padding: 2px 8px;
    border-radius: var(--radius-pill);
    line-height: 1.5;
}


.mediatheque-card:hover .mediatheque-card__img {
    transform: scale(1.04);
}

.mediatheque-card__body {
    display: flex;
    flex-direction: column;
    flex: 1;
    padding: 1.25rem;
    gap: .5rem;
}

.mediatheque-card__meta {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .4rem;
    font-size: .8rem;
}

.mediatheque-card__date {
    color: var(--color-text-muted);
}

.mediatheque-card__theme {
    display: inline-block;
    background: var(--color-border-light);
    color: var(--color-text-secondary);
    border-radius: var(--radius-pill);
    padding: 1px 10px;
    font-size: .75rem;
    text-decoration: none;
    transition: background .15s;
}

.mediatheque-card__theme:hover {
    background: var(--color-border);
    color: var(--color-text-primary);
}

.mediatheque-card__title {
    font-size: 1.05rem;
    font-weight: 600;
    line-height: 1.35;
    margin: 0;
}

.mediatheque-card__title a {
    color: inherit;
    text-decoration: none;
}

.mediatheque-card__title a:hover {
    color: var(--color-primary);
}

.mediatheque-card__intro {
    font-size: .9rem;
    color: var(--color-text-muted);
    line-height: 1.5;
    flex: 1;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
    margin: 0;
}

.mediatheque-card__btn {
    align-self: flex-start;
    margin-top: auto;
}

/* ── Pagination ──────────────────────────────────────────── */

.mediatheque-pagination {
    margin-top: 3rem;
    text-align: center;
}

.mediatheque-pagination__list {
    list-style: none;
    padding: 0;
    margin: 0 0 .75rem;
    display: flex;
    justify-content: center;
    align-items: center;
    flex-wrap: wrap;
    gap: .35rem;
}

.mediatheque-pagination__link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 38px;
    height: 38px;
    padding: 0 .75rem;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    text-decoration: none;
    color: var(--color-text-secondary);
    font-size: .9rem;
    transition: background .15s, border-color .15s, color .15s;
}

.mediatheque-pagination__link:hover {
    background: var(--color-bg-light);
    border-color: var(--color-border-dark);
}

.mediatheque-pagination__link--active {
    background: var(--color-primary);
    border-color: var(--color-primary);
    color: var(--color-bg);
    pointer-events: none;
}

.mediatheque-pagination__ellipsis {
    color: var(--color-border-dark);
    padding: 0 .35rem;
}

.mediatheque-pagination__info {
    font-size: .85rem;
    color: var(--color-text-muted);
}

/* ── Détail ──────────────────────────────────────────────── */

.mediatheque-detail {
    padding: 3rem 0;
}

.mediatheque-detail__breadcrumb {
    font-size: .85rem;
    color: var(--color-text-muted);
    margin-bottom: 1.5rem;
}

.mediatheque-detail__breadcrumb-link {
    color: var(--color-text-muted);
    text-decoration: none;
}

.mediatheque-detail__breadcrumb-link:hover {
    text-decoration: underline;
}

.mediatheque-detail__breadcrumb-sep {
    margin: 0 .4rem;
}

.mediatheque-detail__header {
    margin-bottom: 2.5rem;
}

.mediatheque-detail__themes {
    display: flex;
    flex-wrap: wrap;
    gap: .4rem;
    margin-bottom: .75rem;
}

.mediatheque-detail__theme-badge {
    display: inline-block;
    background: var(--color-border-light);
    color: var(--color-text-secondary);
    border-radius: var(--radius-pill);
    padding: 2px 12px;
    font-size: .8rem;
    text-decoration: none;
}

.mediatheque-detail__theme-badge:hover {
    background: var(--color-border);
}

.mediatheque-detail__title {
    font-size: clamp(1.5rem, 4vw, 2.5rem);
    font-weight: 700;
    line-height: 1.2;
    margin-bottom: .5rem;
}

.mediatheque-detail__date {
    display: block;
    color: var(--color-text-muted);
    font-size: .9rem;
    margin-bottom: 1rem;
}

.mediatheque-detail__intro {
    font-size: 1.15rem;
    color: var(--color-text-secondary);
    line-height: 1.6;
    border-left: 3px solid var(--color-primary);
    padding-left: 1rem;
    margin-bottom: 1.5rem;
}

.mediatheque-detail__vignette {
    border-radius: var(--radius-card);
    overflow: hidden;
    margin-bottom: 2rem;
}

.mediatheque-detail__img {
    width: 100%;
    max-height: 480px;
    object-fit: cover;
    display: block;
}

.mediatheque-detail__tags {
    margin-top: 2.5rem;
    padding-top: 1.5rem;
    border-top: 1px solid var(--color-border);
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .4rem;
}

.mediatheque-detail__tags-label {
    font-size: .85rem;
    color: var(--color-text-muted);
    margin-right: .25rem;
}

.mediatheque-detail__tag {
    display: inline-block;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-pill);
    padding: 2px 12px;
    font-size: .8rem;
    color: var(--color-text-secondary);
    text-decoration: none;
    transition: border-color .15s, background .15s;
}

.mediatheque-detail__tag:hover {
    background: var(--color-bg-light);
    border-color: var(--color-border-dark);
}

.mediatheque-detail__back {
    margin-top: 2rem;
}

/* ── Filtres actifs ──────────────────────────────────────── */

.mediatheque-listing__active-filters {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .5rem;
    margin-bottom: 1.5rem;
}

.mediatheque-filter-badge {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    background: var(--color-info-bg);
    color: var(--color-info-dark);
    border-radius: var(--radius-pill);
    padding: 3px 12px;
    font-size: .85rem;
}

.mediatheque-filter-badge__remove {
    color: var(--color-info);
    text-decoration: none;
    font-size: 1rem;
    line-height: 1;
    font-weight: bold;
}

.mediatheque-filter-badge__remove:hover {
    color: var(--color-info-dark);
}

.mediatheque-listing__reset {
    font-size: .85rem;
    color: var(--color-text-muted);
    text-decoration: underline;
}

.mediatheque-listing__reset:hover {
    color: var(--color-text-primary);
}

/* ── Bloc _mediatheque_info ──────────────────────────────────────── */

.mediatheque-info {
}

.mediatheque-info__vignette {
    border-radius: var(--radius-card);
    overflow: hidden;
}

.mediatheque-info__vignette--top {
    margin-bottom: 2rem;
}

.mediatheque-info__vignette--below {
    margin-top: 2rem;
}

.mediatheque-info__img {
    width: 100%;
    max-height: 520px;
    object-fit: cover;
    display: block;
}

.mediatheque-info__header {
    display: flex;
    flex-direction: column;
    gap: .6rem;
}

.mediatheque-info__themes {
    display: flex;
    flex-wrap: wrap;
    gap: .4rem;
}

.mediatheque-info__theme-badge {
    display: inline-block;
    background: var(--color-border-light);
    color: var(--color-text-secondary);
    border-radius: var(--radius-pill);
    padding: 2px 12px;
    font-size: .8rem;
    text-decoration: none;
    transition: background .15s;
}

.mediatheque-info__theme-badge:hover {
    background: var(--color-border);
}

.mediatheque-info__title {
    font-size: clamp(1.5rem, 4vw, 2.5rem);
    line-height: 1.2;
    margin: 0;
}

.mediatheque-info__date {
    font-size: .9rem;
    color: var(--color-text-muted);
}

.mediatheque-info__intro {
    font-size: 1.1rem;
    color: var(--color-text-secondary);
    line-height: 1.6;
    border-left: 3px solid var(--color-primary);
    padding-left: 1rem;
    margin: 0;
}

.mediatheque-info__tags {
    border-top: 1px solid var(--color-border-medium);
    padding-top: 1rem;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .4rem;
    margin-top: 2rem;
}

.mediatheque-info__tags-label {
    font-size: .85rem;
    color: var(--color-text-muted);
}

.mediatheque-info__tag {
    display: inline-block;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-pill);
    padding: 2px 12px;
    font-size: .8rem;
    color: var(--color-text-secondary);
    text-decoration: none;
    transition: border-color .15s, background .15s;
}

.mediatheque-info__tag:hover {
    background: var(--color-bg-light);
    border-color: var(--color-border-dark);
}

/* ============================================================
   TOPBAR ADHÉRENTS — bandeau de connexion espace membre
   Fond neutre sombre (PAS --color-primary, trop vif pour un simple
   bandeau utilitaire — voir la note sur --bs-dark plus haut dans ce
   fichier) : reprend l'esprit du bandeau noir historique, mais dédié
   uniquement à la connexion adhérent (voir header_template.php).
   ============================================================ */
.topbar-adherents {
    background: #212529;
    color: #f1f1f1;
    font-size: .82rem;
}

.topbar-adherents__bar {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 1rem;
    min-height: 36px;
    flex-wrap: wrap;
}

.topbar-adherents__toggle {
    background: none;
    border: none;
    color: #f1f1f1;
    padding: 6px 0;
    font-size: inherit;
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    cursor: pointer;
    transition: opacity .15s;
}

.topbar-adherents__toggle:hover {
    opacity: .8;
}

.topbar-adherents__status {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
}

.topbar-adherents__links {
    display: inline-flex;
    align-items: center;
    gap: 1rem;
}

.topbar-adherents__links a,
.topbar-adherents__status a {
    color: #f1f1f1;
    text-decoration: underline;
    text-underline-offset: 2px;
}

.topbar-adherents__links a:hover,
.topbar-adherents__status a:hover {
    color: #ffffff;
}

/* Panneau déroulant (Bootstrap collapse) — bloc pleine largeur sous la
   barre plutôt qu'un dropdown positionné en absolu : évite tout
   débordement horizontal sur mobile (cf. leçon du switcher planning). */
.topbar-adherents__panel {
    padding: .85rem 0 1rem;
    border-top: 1px solid rgba(255, 255, 255, .12);
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: .5rem;
}

.topbar-adherents__form {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
    justify-content: flex-end;
    width: 100%;
}

.topbar-adherents__form input {
    max-width: 220px;
    flex: 1 1 160px;
}

.topbar-adherents__switch {
    background: none;
    border: none;
    color: #cfcfcf;
    font-size: .78rem;
    text-decoration: underline;
    text-underline-offset: 2px;
    padding: 0;
    cursor: pointer;
}

.topbar-adherents__switch:hover {
    color: #ffffff;
}

.topbar-adherents__feedback {
    font-size: .78rem;
    text-align: right;
    width: 100%;
    min-height: 1em;
}

.topbar-adherents__feedback--ok {
    color: #8be28b;
}

.topbar-adherents__feedback--error {
    color: #ff9b9b;
}

@media (max-width: 575.98px) {
    .topbar-adherents__bar {
        justify-content: center;
        text-align: center;
    }

    .topbar-adherents__panel,
    .topbar-adherents__form {
        align-items: stretch;
        justify-content: center;
    }

    .topbar-adherents__form input {
        max-width: none;
        flex: 1 1 100%;
    }

    .topbar-adherents__feedback {
        text-align: center;
    }
}

/* ── "Mon espace" — page personnalisable pour adhérents connectés ── */
.mon-espace-widget-empty {
    background-color: #f8f9fa;
}

.mon-espace-reglages-liste {
    max-width: 640px;
    margin: 0;
    padding: 0;
}

.mon-espace-reglages-item {
    display: flex;
    align-items: flex-start;
    gap: .6rem;
    padding: .5rem .25rem;
    border-bottom: 1px solid #e9ecef;
}

.mon-espace-reglages-item:last-child {
    border-bottom: none;
}

.mon-espace-reglages-item--disabled {
    opacity: .6;
}

.mon-espace-widget-handle {
    cursor: grab;
    color: #adb5bd;
    margin-top: .3rem;
}

.mon-espace-reglages-item.sortable-ghost {
    opacity: .4;
}

/* ── Aperçu réduit "Mon espace" — cadre non cliquable, mis à jour en
   temps réel par JS (voir modules/mon-espace/index.php) ── */
.mon-espace-preview-frame {
    border: 1px solid #dee2e6;
    border-radius: .5rem;
    overflow: hidden;
    background-color: #fff;
}

.mon-espace-preview-frame__bar {
    display: flex;
    align-items: center;
    gap: .3rem;
    height: 36px;
    padding: 0 .75rem;
    background-color: #f1f3f5;
    border-bottom: 1px solid #dee2e6;
    font-size: .75rem;
    color: #868e96;
}

.mon-espace-preview-frame__dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background-color: #ced4da;
}

.mon-espace-preview-frame__viewport {
    height: 520px;
    overflow: hidden;
    position: relative;
    background-color: #f8f9fa;
}

.mon-espace-preview-frame__canvas {
    width: 220%;
    padding: 1rem;
    transform: scale(.45);
    transform-origin: top left;
    pointer-events: none;
    user-select: none;
}

.mon-espace-preview-widget {
    margin-bottom: 1rem;
}

@media (max-width: 991.98px) {
    .mon-espace-preview-frame__viewport {
        height: 360px;
    }
}


/* ============================================================
   COOKIES — Orejime (bandeau, fenêtre de réglages, avis contextuel
   affiché à la place d'une vidéo YouTube/Vimeo… non autorisée)
   Couleurs et police du site au lieu du bleu « royalblue » par défaut.
   On ne touche pas au fichier vendor (css/orejime.css, chargé APRÈS
   main.css) : surcharge des variables avec une spécificité supérieure
   (html .orejime-Env) pour l'emporter malgré l'ordre de chargement.
   ============================================================ */
html .orejime-Env {
    --orejime-color-interactive: var(--color-primary);
    --orejime-color-on-interactive: #fff;
    --orejime-font-family: 'Montserrat', sans-serif;
    --orejime-radius: var(--radius-sm, 6px);
}

/* Survol / focus des boutons : teinte de survol de la charte */
html .orejime-Env .orejime-Button:not([disabled]):not([aria-disabled=true]):hover {
    background: var(--color-primary-dark);
    outline-color: var(--color-primary-dark);
}

/* Liens (« En savoir plus », « Personnaliser »…) */
html .orejime-Env a:hover {
    color: var(--color-primary-dark);
}


/* ============================================================
   CONTENUS RÉDACTIONNELS — pas de marge sous le dernier élément
   Le dernier paragraphe / liste / titre d'un contenu texte garde sinon
   sa marge basse (1rem), qui s'ajoute au padding du bloc : le vide en
   bas paraît plus grand qu'en haut et sur les côtés.
   ============================================================ */
:is(.texte, .texte-carte, .sidebar-texte-content, .sidebar-block-content, .contact-infos__carte, .modal-body)
> :is(p, ul, ol, dl, blockquote, table, figure, h1, h2, h3, h4, h5, h6, .table-responsive):last-child {
    margin-bottom: 0;
}

/* Listes imbriquées en fin de contenu (ex. dernier <li> contenant un <p>) */
:is(.texte, .texte-carte, .sidebar-texte-content) > :is(ul, ol):last-child > li:last-child > :last-child {
    margin-bottom: 0;
}


/* ============================================================
   FORMULAIRE DE CONTACT — consentement RGPD encadré
   Distingue la case obligatoire de l'opt-in newsletter placé juste
   au-dessus (sinon les deux semblent faire partie du même groupe).
   ============================================================ */
.contact-bloc__rgpd {
    margin: .5rem 0 0;
    padding: .75rem 1rem .75rem 2.5rem; /* 2.5rem : place de la case (form-check) */
    background: var(--color-bg-light, #f8f9fa);
    border: 1px solid var(--color-border-light, #e9ecef);
    border-radius: var(--radius-sm, 6px);
}

.contact-bloc__rgpd .form-check-label {
    color: var(--color-text-secondary, #495057);
}
