/* ================================================================
   KIT V1 — CHARTE GRAPHIQUE  (la SEULE zone à changer par commune)
   ----------------------------------------------------------------
   Remplis ces variables depuis _data/brief.json (palette + typo).
   Tout le reste du fichier est structurel et réutilisable tel quel.
   RÈGLE : jamais bleu-blanc-rouge / tricolore. Palette dérivée du
   blason + photos locales. Polices = celles du brief (display + corps).
   ================================================================ */

:root {
  --cp:   #7a2418;   /* primaire   (brique/gueules assombri, identité forte)  -> brief.palette.primaire   */
  --cs:   #a67c2e;   /* secondaire (or/terre, contraste chaud)                -> brief.palette.secondaire */
  --ca:   #b8291f;   /* accent     (gueules vif, boutons, liens, carte)       -> brief.palette.accent     */
  --cbr:  #c9a227;   /* 4e ton optionnel (or/laiton)                         -> brief.accents_suggeres   */
  --cbg:  #f8f4ea;   /* fond clair, parchemin chaud                          -> brief.palette.neutre_clair */
  --cbg2: #f1ebdc;   /* fond teinté (sections alternées) = primaire très dilué */
  --ct:   #2b1c14;   /* texte principal, brun profond */
  --cm:   #7a6a5c;   /* texte secondaire */
  --cl:   #e4dccf;   /* bordures */
  --cd:   #2b1c14;   /* ton le plus sombre (header, overlays) = primaire assombri */
  --r:    14px;
  --font-d: 'Cormorant Garamond', Georgia, serif;  /* titres -> brief.typo.titres */
  --font-b: 'Inter', system-ui, sans-serif;        /* corps  -> brief.typo.corps  */
}
/* Si tu changes les Google Fonts, mets aussi à jour le <link> dans build_v1.py (fonction page()). */

/* paragraphe d'accroche (section signature) */
.big-p { max-width:760px; font-size:1.2rem; line-height:1.7; color:var(--cm); }

/* ── Reset ── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; overflow-x: clip; }
body { overflow-x: clip; }
body { font-family: var(--font-b); font-size: 1rem; line-height: 1.65;
       color: var(--ct); background: var(--cbg); }
img, picture { display: block; max-width: 100%; }
a { color: var(--ca); text-decoration: underline; }
a:hover { color: var(--cp); }
h1,h2,h3,h4 { font-family: var(--font-d); line-height: 1.2; }
h1 { font-size: clamp(2.4rem,5vw,4.5rem); font-weight: 600; }
h2 { font-size: clamp(1.5rem,3vw,2.4rem); font-weight: 600; margin-bottom: .5em; }
h3 { font-size: clamp(1.1rem,2vw,1.45rem); font-weight: 600; margin-bottom: .4em; }
p  { margin-bottom: 1em; }
ul, ol { padding-left: 1.5em; margin-bottom: 1em; }
li { margin-bottom: .3em; }
address { font-style: normal; }

/* ── Skip link ── */
.skip { position:absolute; top:-999px; left:0; background:var(--ca); color:#fff;
        padding:.5rem 1.1rem; text-decoration:none; font-weight:600; z-index:9999;
        border-radius:0 0 var(--r) 0; }
.skip:focus { top:0; }

/* ── Wrapper ── */
.wrap { max-width:1200px; margin:0 auto; padding:0 1.5rem; }

/* ══════════════════════ HEADER ══════════════════════ */
.site-header { position:fixed; top:0; left:0; right:0; z-index:1200;
               background:var(--cd); backdrop-filter:blur(14px);
               -webkit-backdrop-filter:blur(14px);
               border-bottom:1px solid rgba(255,255,255,.07); }
/* ── Bandeau horaires/contact (toujours visible, statique = fiable sans JS) ── */
.topbar { border-bottom:1px solid rgba(255,255,255,.08); background:rgba(0,0,0,.14); }
.topbar-in { max-width:1200px; margin:0 auto; padding:.4rem 1.5rem; display:flex;
             align-items:center; gap:1.4rem; flex-wrap:wrap; }
.tb-track { display:contents; }        /* desktop : les items suivent le flex de .topbar-in */
.tb-track-dup { display:none; }
.tb-item { display:inline-flex; align-items:center; gap:.35rem; font-size:.72rem;
           color:rgba(255,255,255,.72); text-decoration:none; white-space:nowrap; }
a.tb-item:hover { color:#fff; }
.tb-hours { font-weight:600; color:rgba(255,255,255,.85); }
/* Mobile : le bandeau (tél · horaires · adresse) déborde → marquee défilant.
   2 pistes identiques + translation -50% = boucle sans couture. */
@media(max-width:640px){
  .topbar{ overflow:hidden; }
  .topbar-in{ flex-wrap:nowrap; width:max-content; max-width:none; gap:0;
              padding-left:0; padding-right:0; animation:tb-marquee 24s linear infinite; }
  .topbar-in:hover, .topbar-in:active{ animation-play-state:paused; }
  .tb-track{ display:flex; flex:0 0 auto; align-items:center; gap:1.4rem; padding-left:1.4rem; }
  .tb-track-dup{ display:flex; }
}
@keyframes tb-marquee{ from{transform:translateX(0)} to{transform:translateX(-50%)} }
@media(prefers-reduced-motion:reduce){ @media(max-width:640px){
  .topbar-in{ animation:none; width:auto; flex-wrap:nowrap; overflow-x:auto;
              -webkit-overflow-scrolling:touch; scrollbar-width:none; }
  .topbar-in::-webkit-scrollbar{ display:none; }
  .tb-track-dup{ display:none; }
} }
.bar { display:flex; align-items:center; gap:1.5rem; max-width:1200px;
       margin:0 auto; padding:.7rem 1.5rem; }
.brand { display:flex; align-items:center; gap:.75rem; text-decoration:none; flex-shrink:0; }
.brand-emblem { width:40px; height:48px; }
.brand-txt { display:flex; flex-direction:column; }
.brand-txt strong { font-family:var(--font-d); font-size:1.2rem; font-weight:700;
                    color:#fff; letter-spacing:.01em; }
.brand-txt em { font-family:var(--font-b); font-size:.65rem; font-style:normal;
                color:rgba(255,255,255,.55); letter-spacing:.1em; text-transform:uppercase; }

/* ── Navigation ── */
.mainnav { margin-left:auto; }
.navlist  { list-style:none; padding:0; margin:0; display:none; }
@media(min-width:980px){ .navlist{ display:flex; gap:.15rem; align-items:center; } }

.nav-item { position:relative; }
.nav-link { display:flex; align-items:center; gap:.3rem; padding:.48rem .7rem;
            color:rgba(255,255,255,.82); font-size:.85rem; font-weight:500;
            cursor:pointer; border-radius:8px;
            transition:background .18s,color .18s; text-decoration:none; user-select:none; }
.nav-link:hover, .nav-item.active .nav-link { background:rgba(255,255,255,.1); color:#fff; }
.caret { font-size:.65rem; opacity:.55; transition:transform .2s; }
.nav-item.open .caret { transform:rotate(90deg); }

/* Sous-menus — left:0;right:0 obligatoire (backdrop-filter stacking context) */
.sub { display:none; position:absolute; top:calc(100% + .4rem); left:0;
       background:#fff; border:1px solid var(--cl); border-radius:var(--r);
       box-shadow:0 14px 44px rgba(0,0,0,.14); min-width:220px; padding:.45rem 0; z-index:300; }
.sub-wide { left:0; right:0; width:auto; position:fixed; top:92px;
            padding:.75rem max(1.5rem,calc(50% - 600px));
            border-radius:0 0 var(--r) var(--r); }
.nav-item.open > .sub { display:block; }
.sub ul { list-style:none; padding:0; margin:0; }
.sub ul li a { display:block; padding:.5rem 1.1rem; color:var(--ct);
               font-size:.865rem; text-decoration:none;
               transition:background .14s,color .14s; white-space:nowrap; }
.sub ul li a:hover, .sub ul li a[aria-current="page"] { background:var(--cbg2); color:var(--ca); }

/* Burger mobile */
.burger { display:flex; flex-direction:column; gap:5px; background:none; border:none;
          cursor:pointer; padding:.4rem; margin-left:auto; }
.burger span { display:block; width:24px; height:2px; background:rgba(255,255,255,.82);
               border-radius:2px; transition:.25s; }
.mainnav.open { position:fixed; top:92px; left:0; right:0; height:calc(100dvh - 92px); z-index:250;
                background:var(--cd); overflow-y:auto; padding:.5rem 1rem; }
.mainnav.open .navlist { display:flex; flex-direction:column; align-items:stretch; gap:0; padding:.5rem 0; }
.mainnav.open .nav-link { color:rgba(255,255,255,.88); }
.mainnav.open .sub { display:none; position:static; box-shadow:none; border:none;
                      background:rgba(255,255,255,.06); border-radius:8px; margin:.25rem .5rem; }
.mainnav.open .nav-item.open > .sub { display:block; }
.mainnav.open .sub ul li a { color:rgba(255,255,255,.75); }
@media(min-width:980px){ .burger{display:none}
  .mainnav.open { position:static; background:none; padding:0; overflow:visible; } }

/* ══════════════════════ HERO ══════════════════════ */
.hero { position:relative; height:100svh; min-height:580px;
        display:flex; align-items:center; overflow:hidden; }
.hero-bg { position:absolute; inset:0; z-index:0; }
.hero-bg picture, .hero-bg img { width:100%; height:100%; object-fit:cover; }
.hero-bg::after { content:''; position:absolute; inset:0;
  background:linear-gradient(to top,
    color-mix(in srgb, var(--cd) 85%, transparent) 0%,
    color-mix(in srgb, var(--cd) 35%, transparent) 55%,
    color-mix(in srgb, var(--cd) 10%, transparent) 100%); }
.hero-inner { position:relative; z-index:1; max-width:1200px; margin:0 auto;
              padding:0 1.5rem; padding-top:112px; }
.hero-kicker { display:block; font-family:var(--font-b); font-size:.78rem; font-weight:700;
               letter-spacing:.18em; text-transform:uppercase; color:#f0d6bf; margin-bottom:1rem;
               text-shadow:0 1px 8px rgba(0,0,0,.5); }
.hero-title  { font-family:var(--font-d); font-size:clamp(2.6rem,7.5vw,8rem); font-weight:600;
               color:#fff; line-height:1.14; margin-bottom:1rem; }
.hero-title .em { font-style:italic; color:var(--cbr); padding-right:.06em; }
.hero-sub { font-size:clamp(.9rem,1.8vw,1.1rem); color:rgba(255,255,255,.8);
            max-width:540px; margin-bottom:2.2rem; line-height:1.65; }
.hero-cta  { display:flex; flex-wrap:wrap; gap:.75rem; }
.scroll-cue { position:absolute; bottom:2rem; left:50%; transform:translateX(-50%); z-index:1;
              color:rgba(255,255,255,.55); font-size:1.5rem; text-decoration:none;
              animation:bounce 2.2s infinite; }
@keyframes bounce { 0%,100%{transform:translateX(-50%) translateY(0)} 50%{transform:translateX(-50%) translateY(7px)} }
.hero-credit { position:absolute; bottom:.75rem; right:1.5rem; z-index:1;
               font-size:.62rem; color:rgba(255,255,255,.45); }

/* ══════════════════════ PAGE HERO ══════════════════════ */
.page-hero { background:linear-gradient(135deg,var(--cp) 0%,var(--cs) 100%);
             padding:8rem 0 3rem; color:#fff; }
.page-hero h1 { font-family:var(--font-d); font-size:clamp(1.8rem,4vw,3.2rem);
                color:#fff; margin-bottom:.5rem; }
.page-hero .lead { font-size:1.05rem; color:rgba(255,255,255,.78); max-width:600px; }
.crumb { font-size:.8rem; color:rgba(255,255,255,.5); margin-bottom:1rem; }
.crumb a { color:rgba(255,255,255,.68); }
.crumb span { color:rgba(255,255,255,.88); }

/* ══════════════════════ SECTIONS ══════════════════════ */
.block  { padding:5rem 0; }
.block.tinted { background:var(--cbg2); }
.block.dark   { background:var(--cp); color:#fff; }
.block.dark h2, .block.dark h3, .block.dark h4 { color:#fff; }
.block.dark p  { color:rgba(255,255,255,.82); }
.block.dark a  { color:var(--cbr); }
.block.dark .eyebrow { color:var(--cbr); }

.sec-head { margin-bottom:3rem; }
.sec-head.center { text-align:center; }
.sec-head p { color:var(--cm); font-size:1.05rem; max-width:600px; }
.sec-head.center p { margin:0 auto; }

.eyebrow { display:block; font-family:var(--font-b); font-size:.72rem; font-weight:700;
           letter-spacing:.16em; text-transform:uppercase; color:var(--ca); margin-bottom:.5rem; }

/* ── Stats ── */
.stats { display:flex; flex-wrap:wrap; justify-content:center; gap:2.5rem;
         padding:2rem 1.5rem; max-width:1200px; margin:0 auto; }
.stat { text-align:center; min-width:140px; }
.stat .num { font-family:var(--font-d); font-size:clamp(2.6rem,5.5vw,5rem); font-weight:700;
             color:#fff; line-height:1; }
.stat .lab { font-size:.78rem; font-weight:500; color:rgba(255,255,255,.65);
             letter-spacing:.07em; margin-top:.5rem; text-transform:uppercase; }

/* ── Quick cards ── */
.quick { display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr));
         gap:1rem; max-width:1200px; margin:0 auto; padding:0 1.5rem; }
.qcard { background:#fff; border:1px solid var(--cl); border-radius:var(--r); padding:1.5rem;
         text-decoration:none; color:var(--ct);
         transition:transform .22s,box-shadow .22s,border-color .22s; }
.qcard:hover { transform:translateY(-4px); box-shadow:0 12px 32px rgba(0,0,0,.1);
               border-color:var(--ca); color:var(--ct); }
.qcard .ic { font-size:2rem; margin-bottom:.75rem; }
.qcard h3 { font-family:var(--font-b); font-size:1rem; font-weight:600; margin-bottom:.3rem; }
.qcard p  { font-size:.875rem; color:var(--cm); margin:0; }

/* ── Cards grid ── */
.grid { display:grid; gap:1.5rem; max-width:1200px; margin:0 auto; padding:0 1.5rem; }
.g3 { grid-template-columns:repeat(auto-fill,minmax(280px,1fr)); }
.g2 { grid-template-columns:repeat(auto-fill,minmax(340px,1fr)); }
.card { background:#fff; border:1px solid var(--cl); border-radius:var(--r); overflow:hidden;
        text-decoration:none; color:var(--ct); transition:transform .22s,box-shadow .22s; }
.card:hover { transform:translateY(-4px); box-shadow:0 12px 32px rgba(0,0,0,.1); }
.card picture img { aspect-ratio:16/9; width:100%; object-fit:cover; transition:transform .4s; }
.card:hover picture img { transform:scale(1.04); }
.card .bd { padding:1.25rem; }
.card .tag { display:inline-block; background:var(--cbg2); color:var(--cp); font-size:.7rem;
             font-weight:700; padding:.2rem .55rem; border-radius:5px; margin-bottom:.5rem;
             text-transform:uppercase; letter-spacing:.06em; }
.card h3   { font-family:var(--font-d); font-size:1.2rem; margin-bottom:.4rem; }
.card .meta { font-size:.78rem; color:var(--cm); margin-bottom:.5rem; }
.card p    { font-size:.875rem; color:var(--cm); }
.card .more { font-size:.8rem; font-weight:600; color:var(--ca); }

/* ── Split layout ── */
.split { display:grid; grid-template-columns:1fr 1fr; gap:3.5rem; align-items:center;
         max-width:1200px; margin:0 auto; padding:0 1.5rem; }
.split-media { border-radius:var(--r); overflow:hidden; }
.split-media picture { display:block; }
.split-media img { width:100%; aspect-ratio:4/3; object-fit:cover; transition:transform .4s; }
.split-media:hover img { transform:scale(1.03); }
.split-txt h2 { margin-bottom:1rem; }
.split-txt p  { color:var(--cm); }
@media(max-width:768px){ .split { grid-template-columns:1fr; gap:2rem; } }

/* ── Mémoire section (dark + bg image) ── */
.block.memoire { position:relative; overflow:hidden; }
.memoire-bg { position:absolute; inset:0; z-index:0; }
.memoire-bg picture, .memoire-bg img { width:100%; height:100%; object-fit:cover; }
.memoire-bg::after { content:''; position:absolute; inset:0;
  background:color-mix(in srgb, var(--cd) 82%, transparent); }
.block.memoire .wrap, .block.memoire .sec-head { position:relative; z-index:1; }
.cem-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr));
            gap:1rem; max-width:1000px; margin:0 auto; padding:0 1.5rem; position:relative; z-index:1; }
.cem-grid picture { border-radius:10px; overflow:hidden; }
.cem-grid img { width:100%; aspect-ratio:3/2; object-fit:cover; transition:transform .4s; }
.cem-grid picture:hover img { transform:scale(1.04); }

/* ── Élus ── */
.team-lead { display:grid; grid-template-columns:80px 1fr; gap:1.5rem; align-items:start;
             background:#fff; border:1px solid var(--cl); border-radius:var(--r);
             padding:1.5rem; margin-bottom:1.5rem; max-width:1200px; margin-inline:auto; }
.team-lead .av { width:80px; height:80px; border-radius:50%; background:var(--cp); color:#fff;
                  font-family:var(--font-d); font-size:2rem; font-weight:700;
                  display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.team-lead .role { font-size:.85rem; color:var(--cm); margin-bottom:.75rem; }
.members { display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr));
           gap:1rem; max-width:1200px; margin:0 auto; }
.member  { display:grid; grid-template-columns:48px 1fr; gap:1rem; align-items:center;
           background:#fff; border:1px solid var(--cl); border-radius:var(--r); padding:1rem; }
.member .av { width:48px; height:48px; border-radius:50%; background:var(--cs); color:#fff;
               font-family:var(--font-d); font-size:1rem; font-weight:700;
               display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.member b   { font-size:.88rem; display:block; }
.member span { font-size:.78rem; color:var(--cm); }
.member-role { font-size:.8rem; color:var(--cs); font-weight:500; margin-top:.15rem; }
.team-more, .sec-more { text-align:center; margin:1.5rem 0 0; }
.team-more a:not(.btn), .sec-more a:not(.btn) { display:inline-flex; align-items:center;
  gap:.35rem; font-weight:600; font-size:.9rem; color:var(--ca); text-decoration:none; }
.team-more a:not(.btn):hover, .sec-more a:not(.btn):hover { text-decoration:underline; }

/* ── Content pages ── */
.with-aside { display:grid; grid-template-columns:1fr 280px; gap:3rem;
              max-width:1200px; margin:0 auto; padding:0 1.5rem; align-items:start; }
/* enfants de grille : min-width:0 sinon un tableau/pré large les étire et déborde
   (le tableau doit scroller dans .tbl-wrap, pas pousser la page). */
.with-aside > * { min-width:0; }
@media(max-width:768px){ .with-aside{ grid-template-columns:1fr; }
  /* en 1 colonne, la colonne latérale passe SOUS le texte : le sticky la ferait
     chevaucher le contenu au scroll (bug d'affichage mobile) → on la fige. */
  .with-aside aside{ margin-top:2.5rem; }
  .side-card{ position:static !important; top:auto !important; } }
.prose { max-width:70ch; font-size:1.08rem; line-height:1.8; }
.prose p { margin-bottom:1.3rem; }
.prose ul, .prose ol { margin-bottom:1.3rem; }
.prose li { margin-bottom:.5em; }
.prose h2 { margin-top:2.6rem; padding-top:1.2rem; border-top:2px solid var(--cl); }
.prose h2:first-child { margin-top:0; border-top:none; padding-top:0; }
.prose h3 { color:var(--cs); margin-top:1.8rem; }
.prose ul li::marker { color:var(--ca); }
.prose a  { color:var(--ca); text-underline-offset:.15em; }
.prose ol { padding-left:1.5em; }
.prose .src { font-size:.78rem; color:var(--cm); font-style:italic; margin-top:2rem; }

/* ── Fiche contact structurée (associations : responsable, tél, email, adresse) ── */
.info-card { background:#fff; border:1px solid var(--cl); border-radius:var(--r);
             padding:.4rem 1.3rem; margin-bottom:1.5rem; max-width:520px; }
.info-row { display:flex; align-items:center; gap:.9rem; padding:.85rem 0;
            border-bottom:1px solid var(--cl); }
.info-row:last-child { border-bottom:none; }
.info-ico { flex-shrink:0; font-size:1.1rem; width:1.6rem; text-align:center; }
.info-label { flex-shrink:0; width:7.5rem; font-weight:700; color:var(--cp); font-size:.88rem; }
.info-val { color:var(--ct); font-size:.94rem; }
/* Fiche « large » (urgences, horaires, contacts issus d'un pavé structuré) :
   pleine largeur du texte + libellé auto (certains libellés sont plus longs). */
.info-card.wide { max-width:none; }
.info-card.wide .info-label { width:auto; min-width:9rem; max-width:16rem;
             padding-right:1.2rem; align-self:flex-start; }
.info-card.wide .info-row { align-items:flex-start; }
/* Sous-titres de rubrique générés depuis le contenu : petit liseré accent
   pour rythmer la lecture (pages environnement, histoire, scolarité…). */
.prose h3 { position:relative; padding-left:.85rem; }
.prose h3::before { content:""; position:absolute; left:0; top:.18em; bottom:.18em;
             width:3px; border-radius:3px; background:var(--ca); }
/* Paragraphe d'introduction : la 1re phrase respire un peu plus. */
.prose > p:first-of-type { font-size:1.14rem; color:var(--cp); }

/* ── Le maire et les élus : pyramide hiérarchique de cases ── */
.elus-pyramid { display:flex; flex-direction:column; align-items:center; gap:2.2rem; }
.ep-tier { width:100%; display:flex; flex-direction:column; align-items:center; gap:.9rem; }
.ep-tier-lab { font-size:.78rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase;
               color:var(--cm); }
.ep-card { background:#fff; border:1px solid var(--cl); border-radius:var(--r);
           display:flex; align-items:center; gap:1rem; padding:1rem 1.3rem; }
.ep-card .av { flex-shrink:0; width:52px; height:52px; border-radius:50%; background:var(--cs);
               color:#fff; font-family:var(--font-d); font-size:1.05rem; font-weight:700;
               display:flex; align-items:center; justify-content:center; }
.ep-card b { font-size:.92rem; }
.ep-role { display:block; font-size:.76rem; font-weight:700; color:var(--ca);
           text-transform:uppercase; letter-spacing:.04em; margin-bottom:.15rem; }
.ep-card-maire { max-width:460px; padding:1.6rem 2rem; border-color:var(--cp); border-width:2px;
                 box-shadow:0 8px 24px rgba(0,0,0,.06); }
.ep-card-maire .av-lg { width:84px; height:84px; font-size:1.9rem; background:var(--cp); }
.ep-card-maire h3 { margin:.1rem 0 .3rem; }
.ep-card-maire p { font-size:.85rem; color:var(--cm); }
.ep-row { display:flex; flex-wrap:wrap; justify-content:center; gap:1rem; }
.ep-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr));
           gap:.85rem; max-width:1000px; width:100%; }
.ep-card-sm { padding:.7rem 1rem; }
.ep-card-sm .av { width:40px; height:40px; font-size:.85rem; }
.ep-card-sm b { font-size:.85rem; }

/* ── Tableau de tarifs ── */
.tbl-wrap { overflow-x:auto; margin-bottom:1.5rem; }
.tbl-wrap .htable { min-width:480px; }
.tbl-wrap .htable th[scope="col"] { text-align:center; }
.tbl-wrap .htable td { text-align:center; }

/* ── Documents à télécharger ── */
.doc-list { display:flex; flex-direction:column; gap:.6rem; margin-bottom:1.3rem; }
.doc-item { display:flex; align-items:center; gap:.8rem; background:#fff;
            border:1px solid var(--cl); border-radius:10px; padding:.75rem 1rem;
            text-decoration:none; color:var(--ct); transition:border-color .2s,transform .2s; }
.doc-item:hover { border-color:var(--ca); transform:translateX(3px); color:var(--ct); }
.doc-ico { flex-shrink:0; background:var(--cp); color:#fff; font-family:var(--font-b);
           font-size:.68rem; font-weight:700; letter-spacing:.03em; border-radius:6px;
           padding:.3rem .5rem; }
.doc-name { flex:1; font-size:.9rem; }
.doc-meta { flex-shrink:0; font-size:.75rem; color:var(--cm); }
.doc-year { border:1px solid var(--cl); border-radius:10px; margin-bottom:.6rem; overflow:hidden; }
.doc-year summary { cursor:pointer; list-style:none; padding:.85rem 1.1rem; font-weight:700;
                     font-family:var(--font-b); color:var(--cp); background:var(--cbg2); }
.doc-year summary::-webkit-details-marker { display:none; }
.doc-year summary::before { content:'▸ '; color:var(--ca); }
.doc-year[open] summary::before { content:'▾ '; }
.doc-year .doc-list { padding:1rem; margin-bottom:0; }
.doc-count { font-weight:400; color:var(--cm); font-size:.82rem; }
.side-card { background:#fff; border:1px solid var(--cl); border-radius:var(--r);
             padding:1.5rem; position:sticky; top:80px; }
.side-card h3 { font-size:.95rem; font-family:var(--font-b); font-weight:700; color:var(--cp);
                border-bottom:2px solid var(--cl); padding-bottom:.45rem;
                margin-bottom:.75rem; margin-top:1.25rem; }
.side-card h3:first-child { margin-top:0; }
.side-card ul { list-style:none; padding:0; font-size:.875rem; }
.side-card ul li { padding:.3rem 0; border-bottom:1px solid var(--cl); color:var(--cm); }
.side-card ul li a { color:var(--ca); text-decoration:none; }
.htable { width:100%; border-collapse:collapse; font-size:.87rem; }
.htable td, .htable th { padding:.4rem .6rem; border-bottom:1px solid var(--cl); text-align:left; }
.htable th { font-weight:700; background:var(--cbg2); }
.htable td:first-child { font-weight:600; color:var(--cp); white-space:nowrap; }
.htable.wide { width:100%; }

/* ── Help band ── */
.help-band { background:linear-gradient(135deg,var(--cp) 0%,var(--cs) 100%);
             padding:3rem 0; color:#fff; }
.help-band .wrap { display:flex; align-items:center; justify-content:space-between;
                    gap:2rem; flex-wrap:wrap; }
.help-band h3 { font-family:var(--font-d); font-size:1.7rem; color:#fff; margin-bottom:.25rem; }
.help-band p  { color:rgba(255,255,255,.78); margin:0; }
.hb-cta { display:flex; gap:.75rem; flex-wrap:wrap; }

/* ── Tele links ── */
.tele { display:flex; flex-direction:column; gap:.5rem; margin:1rem 0; }
.tele a { display:flex; align-items:center; justify-content:space-between;
           background:var(--cbg2); border:1px solid var(--cl); border-radius:10px;
           padding:.72rem 1rem; font-weight:500; font-size:.9rem; color:var(--cp);
           text-decoration:none; transition:background .18s,border-color .18s,color .18s; }
.tele a:hover { background:#fff; border-color:var(--ca); color:var(--ca); }
.tele a .ar { color:var(--ca); font-size:.9rem; flex-shrink:0; }

/* ── Timeline ── */
.timeline { list-style:none; padding:0; border-left:3px solid var(--cbr); margin:1.5rem 0; }
.tl-item  { padding:.5rem 0 1rem 1.5rem; position:relative; }
.tl-item::before { content:''; position:absolute; left:-7px; top:.65rem;
                    width:11px; height:11px; border-radius:50%;
                    background:var(--cbr); border:2px solid var(--cbg); }
.tl-date { display:inline-block; font-family:var(--font-d); font-weight:700;
            color:var(--ca); font-size:1rem; margin-bottom:.2rem; }
.tl-item p { margin:0; font-size:.88rem; color:var(--cm); }

/* ── Form ── */
.cform { display:flex; flex-direction:column; gap:1rem; margin:1.5rem 0; }
.frow  { display:grid; grid-template-columns:1fr 1fr; gap:1rem; }
@media(max-width:600px){ .frow{ grid-template-columns:1fr; } }
.cform label { display:flex; flex-direction:column; gap:.4rem; font-size:.9rem;
               font-weight:500; color:var(--cp); }
.cform input, .cform textarea { font-family:var(--font-b); font-size:1rem;
  border:1.5px solid var(--cl); border-radius:8px; padding:.65rem .85rem;
  background:#fff; transition:border-color .18s,outline .18s; }
.cform input:focus, .cform textarea:focus { outline:2px solid var(--ca); border-color:var(--ca); }
.cform textarea { resize:vertical; min-height:120px; }
.form-note { font-size:.78rem; color:var(--cm); }
.form-note a { color:var(--cs); }

/* ── Annuaire cards ── */
.ann-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(260px,1fr));
            gap:1rem; margin:1.5rem 0; }
.ann-card { background:#fff; border:1px solid var(--cl); border-radius:var(--r); padding:1.25rem; }
.ann-card h3 { font-family:var(--font-b); font-size:.95rem; font-weight:700;
               color:var(--cp); margin-bottom:.3rem; }
.ann-card .ann-cat { font-size:.68rem; font-weight:700; color:var(--ca); text-transform:uppercase;
                      letter-spacing:.06em; background:var(--cbg2); padding:.15rem .5rem;
                      border-radius:4px; display:inline-block; margin-bottom:.5rem; }
.ann-card address { font-size:.84rem; color:var(--cm); line-height:1.5; }
.ann-card p { font-size:.84rem; color:var(--cm); margin:.25rem 0 0; }

/* ── Plan du site ── */
.ps-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(190px,1fr));
           gap:2rem; margin-top:1.5rem; }
.ps-col h3 { font-family:var(--font-b); font-size:.9rem; font-weight:700; color:var(--cp);
             border-bottom:2px solid var(--ca); padding-bottom:.4rem; margin-bottom:.75rem; }
.ps-col ul { list-style:none; padding:0; }
.ps-col ul li a { font-size:.875rem; color:var(--ct); text-decoration:none;
                   display:block; padding:.2rem 0; }
.ps-col ul li a:hover { color:var(--ca); }

/* ── Cols ── */
.cols-2 { columns:2; column-gap:2rem; }
@media(max-width:640px){ .cols-2{ columns:1; } }

/* ── Leaflet map ── */
#map { height:380px; border-radius:var(--r); overflow:hidden; border:1px solid var(--cl); margin-top:1.5rem; }

/* ══════════════════════ FOOTER ══════════════════════ */
.site-footer { background:var(--cp); color:rgba(255,255,255,.82); padding:4rem 0 0; }
.foot-grid { display:grid; grid-template-columns:1.8fr 1fr 1fr 1.4fr; gap:3rem;
             max-width:1200px; margin:0 auto; padding:0 1.5rem 3rem; }
@media(max-width:900px){ .foot-grid{ grid-template-columns:1fr 1fr; gap:2rem; } }
@media(max-width:600px){ .foot-grid{ grid-template-columns:1fr; } }
.foot-emblem { width:52px; height:62px; margin-bottom:1rem; }
.foot-id h3  { font-family:var(--font-d); font-size:1.4rem; color:#fff; margin-bottom:.5rem; }
.foot-id p   { font-size:.87rem; color:rgba(255,255,255,.6); line-height:1.55; }
.foot-col h4 { font-family:var(--font-b); font-size:.76rem; font-weight:700; color:var(--cbr);
               text-transform:uppercase; letter-spacing:.12em; margin-bottom:1rem; }
.foot-col ul { list-style:none; padding:0; }
.foot-col ul li { margin-bottom:.4rem; }
.foot-col ul li a { font-size:.87rem; color:rgba(255,255,255,.68); text-decoration:none; }
.foot-col ul li a:hover { color:#fff; }
.foot-col address { font-size:.87rem; color:rgba(255,255,255,.68); line-height:1.8; }
.foot-col address a { color:rgba(255,255,255,.82); text-decoration:none; }
.foot-col address a:hover { color:#fff; }
.foot-hours { list-style:none; padding:0; margin-top:.75rem; }
.foot-hours li { display:flex; justify-content:space-between; gap:1rem;
                  font-size:.78rem; color:rgba(255,255,255,.55); padding:.2rem 0;
                  border-bottom:1px solid rgba(255,255,255,.08); }
.foot-bottom { border-top:1px solid rgba(255,255,255,.1); max-width:1200px; margin:0 auto;
               padding:1.25rem 1.5rem; display:flex; align-items:center;
               justify-content:space-between; gap:1rem; flex-wrap:wrap; }
.foot-bottom span { font-size:.78rem; color:rgba(255,255,255,.45); }
.foot-bottom nav { display:flex; gap:1rem; flex-wrap:wrap; }
.foot-bottom nav a { font-size:.78rem; color:rgba(255,255,255,.45); text-decoration:none; }
.foot-bottom nav a:hover { color:rgba(255,255,255,.82); }
.credit a { color:rgba(255,255,255,.45); text-decoration:none; }
.credit a:hover { color:rgba(255,255,255,.75); }

/* ══════════════════════ BOUTONS ══════════════════════ */
.btn { display:inline-flex; align-items:center; justify-content:center; gap:.5rem;
       padding:.65rem 1.4rem; border-radius:8px; font-family:var(--font-b);
       font-size:.88rem; font-weight:600; text-decoration:none; cursor:pointer;
       transition:background .2s,color .2s,transform .15s,box-shadow .18s;
       border:2px solid transparent; line-height:1.3; }
.btn:hover { transform:translateY(-2px); }
.btn-primary { background:var(--ca); color:#fff; }
.btn-primary:hover { background:color-mix(in srgb, var(--ca) 80%, black); color:#fff;
                      box-shadow:0 4px 16px color-mix(in srgb, var(--ca) 35%, transparent); }
.btn-ghost { background:rgba(255,255,255,.12); color:#fff; border-color:rgba(255,255,255,.28); }
.btn-ghost:hover { background:rgba(255,255,255,.22); color:#fff; }
.btn-out { background:transparent; color:var(--ca); border-color:var(--ca); }
.btn-out:hover { background:var(--ca); color:#fff; }
.btn.full { width:100%; margin-top:.75rem; }

/* ══════════════════════ REVEAL (screenshot-safe) ══════════════════════ */
.reveal { opacity:1; }
@keyframes rise { from{opacity:0;transform:translateY(22px)} to{opacity:1;transform:translateY(0)} }
html.anim .reveal { opacity:0; }
html.anim .reveal.in { animation:rise .62s ease forwards; }
html.anim .grid .reveal.in:nth-child(2) { animation-delay:.1s; }
html.anim .grid .reveal.in:nth-child(3) { animation-delay:.2s; }
html.anim .members .reveal.in:nth-child(2) { animation-delay:.08s; }
html.anim .members .reveal.in:nth-child(3) { animation-delay:.16s; }
html.anim .members .reveal.in:nth-child(4) { animation-delay:.24s; }

/* ══════════════════════ RESPONSIVE ══════════════════════ */
@media(max-width:768px){
  .block { padding:3.5rem 0; }
  .stats { gap:1.5rem; }
  .stat .num { font-size:clamp(2.2rem,8vw,3.5rem); }
  .split { gap:2rem; }
  .help-band .wrap { flex-direction:column; text-align:center; }
  .hb-cta { justify-content:center; }
  .team-lead { grid-template-columns:56px 1fr; gap:1rem; }
  .team-lead .av { width:56px; height:56px; font-size:1.4rem; }
  .sec-head { margin-bottom:2rem; }
}
@media(max-width:480px){
  .wrap, .grid, .with-aside, .quick { padding-inline:1rem; }
  .hero-inner { padding:0 1rem; padding-top:80px; }
  .quick { grid-template-columns:1fr 1fr; }
  .split { padding:0 1rem; }
}

/* ══════════════════════ V2 — pages de contenu ══════════════════════ */
.gallery { display:grid; grid-template-columns:repeat(auto-fill,minmax(180px,1fr));
           gap:1rem; margin:2.2rem 0 .5rem; }
.gal-item { margin:0; border-radius:var(--r); overflow:hidden;
            box-shadow:0 6px 20px rgba(0,0,0,.09); background:var(--cbg2); }
.gal-item img { width:100%; height:100%; aspect-ratio:4/3; object-fit:cover; display:block;
                transition:transform .4s; }
.gal-item:hover img { transform:scale(1.04); }
.prose .tbl { background:var(--cbg2); border-left:3px solid var(--ca);
              padding:.8rem 1rem; border-radius:8px; font-size:.9rem; color:var(--ct); }
.page-hero .eyebrow { color:var(--cbr); margin-bottom:.6rem; }
.split-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:2.5rem; }
.split-col h2 { font-size:1.1rem; color:var(--cs); border:none; padding:0; margin:0 0 .9rem; }
.split-col ul { list-style:none; padding:0; margin:0; }
.split-col li { margin:.4rem 0; border-bottom:1px solid var(--cl); padding-bottom:.4rem; }
.split-col a { color:var(--ct); text-decoration:none; font-size:.92rem; }
.split-col a:hover { color:var(--ca); }
/* ===== RGAA V3 : focus visible global + réduction de mouvement ===== */
a:focus-visible, button:focus-visible, [tabindex]:focus-visible,
.nav-link:focus-visible, .burger:focus-visible {
  outline:3px solid var(--ca); outline-offset:2px; border-radius:3px; }
@media (prefers-reduced-motion: reduce){
  *, *::before, *::after {
    animation-duration:.001ms !important; animation-iteration-count:1 !important;
    transition-duration:.001ms !important; scroll-behavior:auto !important; }
  .reveal{ opacity:1 !important; transform:none !important; }
}

/* ===== Widgets mairie (V3 standard) — hérite des variables de charte ===== */
.mw-alert{ position:sticky; top:0; z-index:1300; background:var(--ca); color:#fff; }
.mw-alert.lvl-warn{ background:#c9450f; }
.mw-alert.lvl-info{ background:var(--cp); }
.mw-alert-in{ max-width:1180px; margin:0 auto; display:flex; align-items:center;
  gap:.7rem; padding:.65rem 1.1rem; font-family:var(--font-b); }
.mw-alert-in p{ margin:0; font-size:.94rem; line-height:1.35; flex:1; }
.mw-alert-ico{ font-size:1.1rem; }
.mw-alert-x{ background:transparent; border:0; color:#fff; font-size:1.5rem;
  line-height:1; cursor:pointer; padding:0 .2rem; opacity:.85; }
.mw-alert-x:hover{ opacity:1; }

/* ── Bande pratique : UNE ligne fine (statut · météo · air), sans boîtes ── */
.mw-band{ padding:0; border-bottom:1px solid var(--cl); background:var(--cbg2); }
.mw-grid{ max-width:1180px; margin:0 auto; display:flex; align-items:stretch;
  gap:0; padding:0 1.5rem; flex-wrap:wrap; }
.mw-card{ display:flex; align-items:center; gap:.7rem; padding:.85rem 1.5rem;
  font-family:var(--font-b); position:relative; }
.mw-card + .mw-card::before{ content:''; position:absolute; left:0; top:22%;
  bottom:22%; width:1px; background:var(--cl); }
.mw-card:first-child{ padding-left:0; }

/* Ouvert / fermé */
.mw-dot{ width:10px; height:10px; border-radius:50%; flex:none; }
.mw-dot.on{ background:#2f9e44; box-shadow:0 0 0 3px rgba(47,158,68,.18); }
.mw-dot.off{ background:#c92a2a; box-shadow:0 0 0 3px rgba(201,42,42,.15); }
.mw-status-lbl{ font-size:.92rem; font-weight:700; color:var(--ct); margin-right:.35rem; }
.mw-status-sub{ font-size:.85rem; color:var(--cm); }
.mw-status-lbl,.mw-status-sub{ display:inline; }
.mw-status-link{ font-size:.82rem; color:var(--ca); text-decoration:none;
  font-weight:600; white-space:nowrap; margin-left:.75rem; }
.mw-status-link:hover{ text-decoration:underline; }

/* Météo — inline */
.mw-w-hd,.mw-a-hd{ font-size:.74rem; text-transform:uppercase; letter-spacing:.06em;
  color:var(--cm); font-weight:600; margin-right:.6rem; }
.mw-w-row{ display:flex; gap:1rem; }
.mw-w-day{ display:flex; align-items:center; gap:.3rem; }
.mw-w-d{ font-size:.78rem; color:var(--cm); }
.mw-w-i{ font-size:1.05rem; line-height:1; }
.mw-w-t{ font-size:.85rem; font-weight:600; color:var(--ct); white-space:nowrap; }
.mw-w-t em{ font-style:normal; color:var(--cm); font-weight:400; margin-left:.1rem; }
.mw-weather{ flex-wrap:nowrap; }

/* Qualité de l'air — inline */
.mw-a-body{ display:flex; align-items:center; gap:.5rem; }
.mw-a-badge{ width:26px; height:26px; border-radius:7px; color:#fff;
  display:flex; align-items:center; justify-content:center; font-weight:700;
  font-size:.78rem; flex:none; }
.mw-a-body b{ font-size:.85rem; color:var(--ct); font-weight:600; }
.mw-a-sub{ display:none; }

/* Démarches de l'État : lignes épurées 2 colonnes, filets fins */
.mw-etat-grid{ max-width:1180px; margin:0 auto; display:grid; gap:0 3.5rem;
  grid-template-columns:1fr 1fr; }
.mw-etat-card{ display:flex; align-items:center; gap:1rem; padding:1.05rem .25rem;
  border-bottom:1px solid var(--cl); text-decoration:none; color:var(--ct);
  font-family:var(--font-b); transition:background .18s; }
.mw-etat-card:hover{ background:var(--cbg2); }
.mw-etat-card:hover .mw-etat-tx b{ color:var(--ca); }
.mw-etat-ico{ flex:none; color:var(--ca); display:flex; }
.mw-etat-ico svg{ width:24px; height:24px; }
.mw-etat-tx b{ display:block; font-size:.98rem; color:var(--ct); transition:color .18s; }
.mw-etat-tx span{ font-size:.82rem; color:var(--cm); }
.mw-etat-ext{ margin-left:auto; color:var(--ca); font-size:1rem; opacity:.7; }

@media (max-width:820px){
  .mw-grid{ padding:0 1rem; }
  .mw-card{ padding:.7rem .9rem; }
  .mw-card:first-child{ padding-left:0; }
  /* météo : ne garder qu'aujourd'hui, masquer l'air pour tenir sur 1-2 lignes */
  .mw-w-day:nth-child(n+2){ display:none; }
  .mw-w-hd{ margin-right:.3rem; }
  .mw-etat-grid{ grid-template-columns:1fr; gap:0; }
}


/* ══════════ VARIANTES DE HÉROS (différenciation par commune) ══════════
   Même markup que .hero — on ajoute une classe modificatrice sur <section>.
   .hero-split   → panneau clair à gauche, image plein-cadre à droite (éditorial)
   .hero-mag     → image plein-cadre + contenu dans une carte de verre (magazine)
   .hero-minimal → fond dégradé, image en carte arrondie, titre dégradé (moderne)
   (sans classe = cinématique plein-cadre par défaut)
   ===================================================================== */

/* — SPLIT éditorial — */
.hero.hero-split { height:auto; min-height:86vh; background:var(--cbg2); align-items:center; }
.hero.hero-split .hero-bg { left:auto; right:0; width:44%; }
.hero.hero-split .hero-bg::after {
  background:linear-gradient(to right, var(--cbg2) 0%, transparent 26%); }
.hero.hero-split .hero-inner { width:100%; padding-top:120px; padding-bottom:72px; padding-right:50%; }
.hero.hero-split .hero-kicker { color:var(--ca); }
.hero.hero-split .hero-title  { color:var(--ct); }
.hero.hero-split .hero-title .em { color:var(--ca); }
.hero.hero-split .hero-sub    { color:var(--cm); }
.hero.hero-split .scroll-cue  { color:var(--cm); }
.hero.hero-split .hero-credit { color:var(--cm); opacity:.7; }
.hero.hero-split .btn-ghost   { color:var(--ct); border-color:var(--cl); }

/* — MAGAZINE (carte de verre) — */
.hero.hero-mag .hero-inner {
  background:color-mix(in srgb, var(--cd) 60%, transparent);
  backdrop-filter:blur(9px); -webkit-backdrop-filter:blur(9px);
  border:1px solid rgba(255,255,255,.14); border-radius:22px;
  max-width:640px; margin-left:6%; padding:2.5rem 2.5rem 2.7rem; }
.hero.hero-mag .hero-kicker {
  display:inline-block; background:var(--ca); color:#fff;
  padding:.35rem .85rem; border-radius:999px; margin-bottom:1.1rem; letter-spacing:.12em; }
.hero.hero-mag .hero-title { font-size:clamp(2.6rem,5.4vw,5rem); }

/* — MINIMAL moderne — */
.hero.hero-minimal { height:auto; min-height:90vh; align-items:center;
  background:
    radial-gradient(1100px 520px at 88% 6%, color-mix(in srgb,var(--ca) 24%,transparent), transparent 60%),
    radial-gradient(900px 480px at 2% 96%, color-mix(in srgb,var(--cbr) 30%,transparent), transparent 60%),
    var(--cbg); }
.hero.hero-minimal .hero-bg { inset:auto; right:4%; top:50%; transform:translateY(-50%);
  width:38%; height:64%; border-radius:26px; overflow:hidden;
  box-shadow:0 30px 70px -24px rgba(0,0,0,.42); }
.hero.hero-minimal .hero-bg::after { display:none; }
.hero.hero-minimal .hero-inner { padding-top:120px; padding-bottom:72px; padding-right:46%; }
.hero.hero-minimal .hero-kicker { color:var(--ca); }
.hero.hero-minimal .hero-title  { color:var(--ct); font-size:clamp(2.8rem,6vw,5.6rem); }
.hero.hero-minimal .hero-title .em {
  background:linear-gradient(100deg,var(--ca),var(--cbr));
  -webkit-background-clip:text; background-clip:text; color:transparent; font-style:normal; }
.hero.hero-minimal .hero-sub    { color:var(--cm); }
.hero.hero-minimal .scroll-cue  { color:var(--cm); }
.hero.hero-minimal .hero-credit { color:var(--cm); opacity:.6; }
.hero.hero-minimal .btn-ghost   { color:var(--ct); border-color:var(--cl); }

@media (max-width:820px){
  .hero.hero-split, .hero.hero-minimal { display:block; min-height:auto; }
  .hero.hero-mag { align-items:flex-end; }
  .hero.hero-split .hero-bg, .hero.hero-minimal .hero-bg {
    position:relative; inset:auto; right:auto; top:auto; width:100%; height:40vh;
    transform:none; border-radius:0; margin-bottom:1.2rem; }
  .hero.hero-minimal .hero-bg { border-radius:0 0 20px 20px; box-shadow:none; }
  .hero.hero-split .hero-inner, .hero.hero-minimal .hero-inner {
    padding-right:1rem; padding-top:.5rem; padding-bottom:2.5rem; }
  .hero.hero-mag .hero-inner { margin:0 1rem 1rem; max-width:none; }
}


/* ══════════ RYTHME PAR COMMUNE (différenciation des sections) ══════════
   Classe posée sur <body> (RHYTHM). Restyle surtout la section « chiffres »
   (.block.dark) + le radius des cartes, pour que deux communes ne partagent
   pas le même rythme visuel. Sans classe = rythme cinématique de base.
   ===================================================================== */

/* — ÉDITO : chiffres sur fond clair, filets verticaux, chiffres serif — */
.rh-edito .block.dark { background:var(--cbg2); color:var(--ct); }
.rh-edito .block.dark h2, .rh-edito .block.dark h3 { color:var(--ct); }
.rh-edito .block.dark p { color:var(--cm); }
.rh-edito .block.dark .eyebrow { color:var(--ca); }
.rh-edito .stats { gap:0; border-top:1px solid var(--cl); border-bottom:1px solid var(--cl);
  padding-inline:0; }
.rh-edito .stat { flex:1 1 0; padding:1.6rem 1.5rem; }
.rh-edito .stat + .stat { border-left:1px solid var(--cl); }
.rh-edito .stat .num { color:var(--cp); }
.rh-edito .stat .lab { color:var(--cm); }
.rh-edito .qcard { border-radius:0; border-left:3px solid var(--ca); }

/* — MAG : chiffres en bandeau accent plein — */
.rh-mag .block.dark { background:var(--ca); }
.rh-mag .block.dark .eyebrow { color:rgba(255,255,255,.88); }
.rh-mag .stat .lab { color:rgba(255,255,255,.82); }
.rh-mag .qcard, .rh-mag .card { border-radius:16px; }

/* — MODERN : chiffres en cartes bordées sur clair, nombres en dégradé — */
.rh-modern .block.dark { background:var(--cbg); color:var(--ct); }
.rh-modern .block.dark h2, .rh-modern .block.dark h3 { color:var(--ct); }
.rh-modern .block.dark .eyebrow { color:var(--ca); }
.rh-modern .stats { gap:1rem; }
.rh-modern .stat { background:#fff; border:1px solid var(--cl); border-radius:18px;
  padding:1.6rem 2rem; min-width:170px; box-shadow:0 1px 2px rgba(0,0,0,.04); }
.rh-modern .stat .num { background:linear-gradient(100deg,var(--ca),var(--cbr));
  -webkit-background-clip:text; background-clip:text; color:transparent; }
.rh-modern .stat .lab { color:var(--cm); }
.rh-modern .qcard, .rh-modern .card { border-radius:18px; }

@media (max-width:640px){
  .rh-edito .stat + .stat { border-left:0; border-top:1px solid var(--cl); }
}


/* ══════════ MOBILE FIX — gouttières horizontales cohérentes ══════════
   Corrige le texte « collé à gauche » : .sec-head (titres/intros de section)
   et les grilles widgets .mw-grid/.mw-etat-grid n'avaient aucune contrainte
   horizontale et touchaient le bord de l'écran. On leur donne la même
   gouttière que .wrap, et on la renforce en mobile.
   ===================================================================== */

/* Titres/intros de section : mêmes marges que le contenu (.wrap) */
.sec-head{
  max-width:1200px;
  margin-left:auto;
  margin-right:auto;
  padding-inline:1.5rem;
  box-sizing:border-box;
}

/* Grilles widgets : ajouter la gouttière manquante */
.mw-grid, .mw-etat-grid{
  padding-inline:1.5rem;
  box-sizing:border-box;
}

/* Renfort mobile : gouttière garantie sur les conteneurs de 1er niveau
   (ne PAS lister .prose/.big-p : ils sont déjà dans .wrap → double padding) */
@media (max-width:768px){
  .wrap, .grid, .with-aside, .quick,
  .sec-head, .stats, .mw-grid, .mw-etat-grid,
  .hero-inner{ padding-inline:1.5rem; }
}
@media (max-width:480px){
  .wrap, .grid, .with-aside, .quick,
  .sec-head, .stats, .mw-grid, .mw-etat-grid,
  .hero-inner{ padding-inline:1.25rem; }
}


/* ══════════ VARIANTES ACTUALITÉS (différenciation par commune) ══════════
   Classe posée sur <body> (en plus de la classe de rythme). Restyle la section
   #actualites sans changer le markup (mêmes .card). But : deux communes ne
   présentent jamais leurs actus de la même façon.
     ac-featured : une « une » large + reste en grille (base)
     ac-timeline : liste éditoriale, filet accent à gauche
     ac-band     : cartes magazine, bandeau accent en haut
     ac-stack    : cartes modernes bordées, index chiffré
   ===================================================================== */

/* — FEATURED : première actu en vedette pleine largeur — */
.ac-featured #actualites .g3{ grid-template-columns:repeat(3,1fr); }
.ac-featured #actualites .card:first-child{ grid-column:1 / -1; }
.ac-featured #actualites .card:first-child .bd{ padding:2.2rem 2.4rem; }
.ac-featured #actualites .card:first-child .tag{ background:var(--ca); color:#fff; }
.ac-featured #actualites .card:first-child h3{ font-size:clamp(1.5rem,3.2vw,2.1rem); }
.ac-featured #actualites .card:first-child p{ font-size:1rem; max-width:60ch; }
@media (max-width:760px){ .ac-featured #actualites .g3{ grid-template-columns:1fr; } }

/* — TIMELINE : liste éditoriale à filet accent — */
.ac-timeline #actualites .g3{ grid-template-columns:1fr; gap:1rem; max-width:880px; }
.ac-timeline #actualites .card{ border:0; border-left:3px solid var(--ca);
  border-radius:0; background:var(--cbg2); box-shadow:none; }
.ac-timeline #actualites .card:hover{ transform:translateX(5px); box-shadow:none; }
.ac-timeline #actualites .card .bd{ padding:1.3rem 1.6rem; }
.ac-timeline #actualites .card .tag{ background:transparent; color:var(--ca);
  padding-left:0; letter-spacing:.1em; }
.ac-timeline #actualites .card h3{ font-family:var(--font-d); font-size:1.35rem; }

/* — BAND : cartes magazine avec bandeau accent — */
.ac-band #actualites .card{ border:0; border-radius:16px; overflow:hidden;
  position:relative; box-shadow:0 4px 18px rgba(0,0,0,.06); }
.ac-band #actualites .card::before{ content:""; position:absolute; inset:0 0 auto 0;
  height:5px; background:linear-gradient(90deg,var(--ca),var(--cbr)); }
.ac-band #actualites .card .bd{ padding-top:1.7rem; }
.ac-band #actualites .card .tag{ background:var(--ca); color:#fff; }

/* — STACK : cartes modernes bordées, index chiffré — */
.ac-stack #actualites .g3{ counter-reset:acn; }
.ac-stack #actualites .card{ border:1px solid var(--cl); border-radius:18px;
  box-shadow:0 1px 2px rgba(0,0,0,.04); position:relative; }
.ac-stack #actualites .card .bd{ padding-top:2.6rem; }
.ac-stack #actualites .card .bd::before{ counter-increment:acn; content:counter(acn,decimal-leading-zero);
  position:absolute; top:1.1rem; right:1.25rem; font-family:var(--font-d);
  font-size:1.4rem; font-weight:700; color:var(--cl); }
.ac-stack #actualites .card .tag{ background:#fff; border:1px solid var(--cl); color:var(--ca); }


/* ══════════ GALERIE ACCUEIL + CRÉDITS (V3 max) ══════════ */
.gal-item{ display:flex; flex-direction:column; }
.gal-item figcaption{ font-family:var(--font-b); font-size:.72rem; color:var(--cm);
  padding:.5rem .7rem .6rem; line-height:1.3; }
#galerie .gallery{ grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); }
.credits-list{ list-style:none; padding:0; margin:1rem 0 0; display:grid; gap:.55rem; }
.credits-list li{ font-size:.85rem; color:var(--cm); line-height:1.45; }
.credits-list a{ color:var(--ca); }


/* ══════════ A11Y V3 max — contraste AA + cibles tactiles (audit Lighthouse) ══════════ */
/* Crédit héros : pastille sombre lisible quelle que soit la photo de fond */
.hero-credit{ color:#fff; background:rgba(0,0,0,.55); padding:.2rem .55rem;
  border-radius:5px; backdrop-filter:blur(2px); }
.hero.hero-split .hero-credit,
.hero.hero-minimal .hero-credit{ color:#fff; opacity:1; }
/* Flèche de défilement : cible ≥24px + contraste renforcé */
.scroll-cue{ color:rgba(255,255,255,.85); min-width:44px; min-height:44px;
  display:inline-flex; align-items:center; justify-content:center; }
/* Liens du pied de page : passage au seuil AA sur fond sombre */
.foot-col ul li a{ color:rgba(255,255,255,.82); }
.foot-col ul li a:hover{ color:#fff; }
.foot-bottom nav a{ color:rgba(255,255,255,.82); }
.foot-bottom nav a:hover{ color:#fff; }


/* ══════════ A11Y V3 credit — mention/crédit bas de page (contraste AA) ══════════ */
.foot-bottom span{ color:rgba(255,255,255,.82); }
.credit,.credit a{ color:rgba(255,255,255,.82); }
.credit a:hover{ color:#fff; }

/* ===== Méga-menu V2 (palette-safe, variables de la charte) ===== */
.sub-wide{ left:0; right:0; width:auto; position:fixed; top:92px;
  background:var(--cbg); border-top:3px solid var(--cp);
  box-shadow:0 24px 48px -20px rgba(0,0,0,.28); padding:0; }
.mega{ max-width:1180px; margin:0 auto; display:grid;
  grid-template-columns:260px 1fr; gap:2.5rem; padding:2.2rem 2rem 2.4rem; }
.mega-head{ border-right:1px solid var(--cl); padding-right:1.8rem; }
.mega-head h3{ font-family:var(--font-d); font-size:1.5rem;
  color:var(--cp); margin:0 0 .5rem; line-height:1.15; }
.mega-head p{ color:var(--cm); font-size:.92rem; line-height:1.5; margin:0 0 1.1rem; }
.mega-all{ display:inline-flex; align-items:center; gap:.35rem; font-weight:600;
  font-size:.88rem; color:var(--ca); text-decoration:none; }
.mega-all span{ transition:transform .2s; }
.mega-all:hover span{ transform:translateX(4px); }
.mega-links{ list-style:none; margin:0; padding:0;
  columns:3; column-gap:2rem; }
.mega-links li{ break-inside:avoid; margin:0 0 .1rem; }
.mega-links li a{ display:block; padding:.5rem .7rem; border-radius:8px;
  color:var(--ct); text-decoration:none; font-size:.93rem; line-height:1.3;
  border-left:2px solid transparent; transition:background .15s,border-color .15s,color .15s; }
.mega-links li a:hover{ background:var(--cbg2); color:var(--ca);
  border-left-color:var(--ca); }
@media (max-width:980px){
  .sub-wide{ position:static; top:auto; box-shadow:none; border-top:none; background:transparent; }
  .mega{ display:block; padding:.4rem 0; max-width:none; }
  .mega-head{ display:none; }
  .mega-all{ display:none; }
  .mega-links{ columns:1; }
  .mega-links li a{ color:rgba(255,255,255,.75); padding:.55rem .4rem; }
  .mega-links li a:hover{ background:rgba(255,255,255,.08); }
}

/* ══════════════════════ IMPRESSION ══════════════════════ */
@media print {
  .site-header, .site-footer, .side-card, .help-band, aside { display:none !important; }
  .page-hero { background:none !important; color:#000 !important; padding:1rem 0 !important; }
  .page-hero h1, .page-hero .lead, .eyebrow { color:#000 !important; }
  .with-aside { grid-template-columns:1fr !important; display:block !important; }
  .prose { max-width:none; color:#000; }
  .prose a { color:#000; text-decoration:underline; }
  body { background:#fff; }
  .page-hero.has-img .ph-bg, .page-hero .ph-credit, .fig-wide { display:none !important; }
}

/* ── Accès rapides : tuiles sobres sans encadré (filets fins) ── */
.qa-strip{ padding-top:2.6rem; padding-bottom:2.6rem; }
.qa-row{ max-width:1180px; margin:0 auto; padding:0 1.5rem; display:grid;
  grid-template-columns:repeat(4,1fr); }
.qa-tile{ display:flex; align-items:flex-start; gap:.9rem; padding:.4rem 1.4rem;
  text-decoration:none; color:var(--ct); border-left:1px solid var(--cl); }
.qa-tile:first-child{ border-left:none; padding-left:0; }
.qa-ic{ flex:none; color:var(--ca); display:flex; margin-top:.15rem; }
.qa-ic svg{ width:26px; height:26px; }
.qa-tx b{ display:block; font-family:var(--font-d); font-size:1.08rem; margin-bottom:.15rem;
  transition:color .18s; }
.qa-tx span{ font-size:.83rem; color:var(--cm); line-height:1.45; display:block; }
.qa-tile:hover .qa-tx b{ color:var(--ca); }
@media (max-width:820px){
  .qa-row{ grid-template-columns:1fr 1fr; gap:1.4rem 0; padding:0 1rem; }
  .qa-tile:nth-child(3){ border-left:none; padding-left:0; }
}
@media (max-width:460px){
  .qa-row{ grid-template-columns:1fr; gap:0; }
  .qa-tile{ border-left:none; padding:1rem 0; border-bottom:1px solid var(--cl); }
  .qa-tile:last-child{ border-bottom:none; }
}

/* ── Bloc éditorial patrimoine : photo + texte, sans encadré ── */
.edito-split{ max-width:1180px; margin:0 auto; padding:0 1.5rem; display:grid;
  grid-template-columns:minmax(0,5fr) minmax(0,7fr); gap:3.5rem; align-items:center; }
.edito-media{ margin:0; }
.edito-media img{ width:100%; height:auto; max-height:460px; object-fit:cover;
  object-position:top; border-radius:var(--r); display:block; }
.edito-body h2{ margin:.4rem 0 1rem; }
@media (max-width:820px){
  .edito-split{ grid-template-columns:1fr; gap:1.8rem; padding:0 1rem; }
  .edito-media img{ max-height:300px; }
}

/* ── Vie associative : liste éditoriale inline (fini les 10 boîtes) ── */
.asso-line{ max-width:900px; margin:0 auto; padding:0 1.5rem; text-align:center;
  line-height:2.5; }
.asso-name{ display:inline-block; font-family:var(--font-d); font-size:1.15rem;
  color:var(--ct); text-decoration:none; padding:0 1.1rem; position:relative;
  transition:color .18s; }
.asso-name + .asso-name::before{ content:'·'; position:absolute; left:-.35rem;
  color:var(--ca); font-weight:700; }
.asso-name:hover{ color:var(--ca); text-decoration:underline; text-underline-offset:.25em; }
@media (max-width:640px){
  .asso-line{ line-height:2.2; padding:0 1rem; }
  .asso-name{ font-size:1.02rem; padding:0 .7rem; }
}

/* ── Cartes actus : plus de bordure, ombre douce seule ── */
.card{ border:none !important; box-shadow:0 2px 6px rgba(0,0,0,.05), 0 12px 30px -12px rgba(0,0,0,.10); }
.card:hover{ box-shadow:0 4px 10px rgba(0,0,0,.07), 0 20px 44px -14px rgba(0,0,0,.16); }

/* ── Équipe : adjoints en ligne compacte, sans boîtes ── */
.members{ display:flex !important; flex-wrap:wrap; gap:.6rem 2.4rem; margin-top:1.4rem; }
.member{ display:flex !important; grid-template-columns:none !important;
  align-items:center; gap:.7rem; background:none !important; border:none !important;
  padding:0 !important; }
.member .av{ width:40px; height:40px; font-size:.85rem; }

/* ── Carte : bande pleine largeur ── */
#contact .wrap{ max-width:none; padding:0; }
/* isolation:isolate = stacking context local : les z-index internes de Leaflet
   (tuiles 400, contrôles 1000) ne peuvent plus passer au-dessus du header (200)
   ni du méga menu (300) au scroll. */
#map{ height:420px; border-radius:0; border:none; border-top:1px solid var(--cl);
  border-bottom:1px solid var(--cl); margin-top:2rem;
  position:relative; z-index:0; isolation:isolate; }
#contact{ padding-bottom:0 !important; }
@media (max-width:640px){ #map{ height:320px; } }

/* ── Hero accueil : texte + portrait encadré de la mairie ── */
.hero-cols { display:flex; align-items:center; gap:3.5rem; width:100%; }
.hero-txt { flex:1 1 auto; min-width:0; }
.hero-mairie { flex:0 0 auto; margin:0; position:relative; transform:rotate(1.2deg); }
.hero-mairie img { display:block; width:min(340px,30vw); height:auto;
  border-radius:14px; border:5px solid rgba(255,255,255,.92);
  box-shadow:0 24px 60px -18px rgba(0,0,0,.55); }
.hero-mairie figcaption { position:absolute; left:50%; bottom:-1.1rem; transform:translateX(-50%);
  white-space:nowrap; background:var(--cd); color:rgba(255,255,255,.92);
  font-size:.74rem; font-weight:600; letter-spacing:.04em;
  padding:.42rem .95rem; border-radius:100px; box-shadow:0 6px 20px rgba(0,0,0,.35); }
@media (max-width:900px) {
  .hero-cols { flex-direction:column; align-items:flex-start; gap:2.2rem; }
  .hero-mairie { transform:none; align-self:center; }
  .hero-mairie img { width:min(300px,72vw); }
  .hero { height:auto; min-height:100svh; padding:118px 0 72px; }
}

/* ── Bannière de page illustrée par une photo réelle de la commune ── */
.page-hero.has-img { position:relative; overflow:hidden; background:var(--cp); }
.page-hero.has-img .ph-bg { position:absolute; inset:0; width:100%; height:100%;
  object-fit:cover; z-index:0; }
.page-hero.has-img::after { content:''; position:absolute; inset:0; z-index:1;
  background:linear-gradient(180deg, rgba(24,12,6,.52) 0%, rgba(24,12,6,.74) 100%); }
.page-hero.has-img .wrap { position:relative; z-index:2; }
.page-hero.has-img .eyebrow { color:#f0d6bf; }
.page-hero .ph-credit { position:absolute; right:1.2rem; bottom:.7rem; z-index:2;
  font-size:.72rem; color:rgba(255,255,255,.68); }

/* ── Figure large dans le corps de texte ── */
.fig-wide { margin:2.2rem 0; }
.fig-wide img { width:100%; height:auto; display:block; aspect-ratio:16/9;
  object-fit:cover; border-radius:var(--r); }
.fig-wide figcaption { font-size:.85rem; color:var(--cm); padding:.55rem .2rem 0;
  font-style:italic; }
/* Figure portrait flottée (calvaires, verticaux) : le texte s'enroule autour */
.fig-side { float:right; width:min(300px,44%); margin:.35rem 0 1rem 1.6rem; }
.fig-side img { width:100%; height:auto; display:block; border-radius:var(--r); }
.fig-side figcaption { font-size:.8rem; color:var(--cm); padding:.5rem .2rem 0;
  font-style:italic; }
@media (max-width:560px) { .fig-side { float:none; width:100%; margin:1.4rem 0; } }

/* ── Fiche coordonnées + horaires ── */
.contact-grid { display:grid; grid-template-columns:1fr 1fr; gap:1.5rem; }
@media(max-width:680px){ .contact-grid{ grid-template-columns:1fr; } }
.contact-card { background:var(--cbg2); border:1px solid var(--cl); border-radius:var(--r);
  padding:1.6rem 1.7rem; }
.contact-card h2 { margin:0 0 1.1rem; font-size:1.3rem; }
.contact-list { list-style:none; padding:0; margin:0 0 1.4rem; display:flex;
  flex-direction:column; gap:1rem; }
.contact-list li { display:flex; gap:.8rem; align-items:flex-start; line-height:1.5; }
.contact-list .ci { font-size:1.2rem; flex:0 0 auto; }
.contact-card a:not(.btn) { color:var(--ca); text-underline-offset:.15em; }
.oh { display:flex; flex-direction:column; }
.oh-row { display:flex; justify-content:space-between; gap:1rem; padding:.6rem 0;
  border-bottom:1px solid var(--cl); }
.oh-row:last-child { border-bottom:none; }
.oh-day { font-weight:600; color:var(--ct); }
.oh-time { color:var(--cm); text-align:right; }

/* ── Agenda : liste d'évènements ── */
.event-list { display:flex; flex-direction:column; gap:1rem; margin-top:1.5rem; }
.event { display:flex; gap:1.2rem; align-items:flex-start; background:var(--cbg2);
  border:1px solid var(--cl); border-radius:var(--r); padding:1.1rem 1.3rem; }
.event-date { flex:0 0 auto; min-width:112px; font-family:var(--font-b); font-weight:700;
  font-size:.82rem; letter-spacing:.03em; color:var(--cbr); text-transform:uppercase;
  border-right:2px solid var(--ca); padding-right:1rem; line-height:1.4; }
.event-body h3 { margin:0 0 .3rem; }
.event-body p { margin:.2rem 0 0; }
.event-time { font-weight:600; color:var(--cs); font-size:.9rem; }
.event-poster { flex:0 0 96px; margin-left:auto; }
.event-poster img { width:96px; height:132px; object-fit:cover; border-radius:8px;
  border:1px solid var(--cl); box-shadow:0 3px 12px rgba(0,0,0,.12);
  transition:transform .2s; display:block; }
.event-poster:hover img { transform:scale(1.05); }
@media (max-width:560px) {
  .event { flex-direction:column; gap:.5rem; }
  .event-date { border-right:none; border-bottom:2px solid var(--ca); padding:0 0 .5rem; }
  .event-poster { margin-left:0; }
}

/* Grille de fiches (actualités / associations) avec image + accroche */
.fcard-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr));
  gap:1.1rem; margin-top:2rem; }
.fcard { display:flex; flex-direction:column; background:#fff; border:1px solid var(--cl);
  border-radius:var(--r); overflow:hidden; text-decoration:none; color:var(--ct);
  transition:transform .22s, box-shadow .22s; }
.fcard:hover { transform:translateY(-4px); box-shadow:0 12px 32px rgba(0,0,0,.1); }
.fcard-media img { width:100%; height:150px; object-fit:cover; object-position:top;
  display:block; transition:transform .4s; }
.fcard:hover .fcard-media img { transform:scale(1.05); }
.fcard-bd { padding:1rem 1.15rem 1.2rem; }
.fcard-bd h3 { font-size:1.02rem; margin:0 0 .4rem; line-height:1.35; }
.fcard-bd p { font-size:.86rem; color:var(--cm); margin:0; line-height:1.55; }

/* Cartes actualité de l'accueil : image réelle de la fiche */
.card-media { overflow:hidden; }
.card-media img { width:100%; height:170px; object-fit:cover; object-position:top;
  display:block; transition:transform .4s; }
.card:hover .card-media img { transform:scale(1.04); }
.card-go { display:inline-block; margin-top:.6rem; font-weight:600; font-size:.85rem;
  color:var(--ca); }
