/*
Theme Name: Dombes Média
Theme URI: https://dombesmedia.fr
Author: Studio — d'après les maquettes « L'Almanach » (5a)
Description: Thème sur mesure pour Dombes Média — annuaire local, agenda et marchés du pays aux mille étangs. Annuaire de professionnels (fiches tenues par la rédaction), événements, marchés hebdomadaires, actualités, bandeau « Partenaires Or » réglable. Aucun plugin requis.
Version: 1.19.0
Requires at least: 6.2
Tested up to: 6.7
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: dombes-media
Tags: custom-theme, annuaire, agenda, local
*/

/* =========================================================================
   SOMMAIRE
   01. Jetons (couleurs, typo, mesures)
   02. Reset & base
   03. Typographie & primitives (titres, liens, boutons, champs, badges)
   04. Mise en page (conteneurs, grilles)
   05. Bandeau Partenaires Or
   06. En-tête du site & navigation mobile
   07. Héro & bande de recherche
   08. Accueil : triptyque, carnet, prochainement
   09. Formulaire de contact
   10. Pied de page & bandeau cookies
   11. En-têtes de page, filtres, tri, pagination
   12. Annuaire : grille & cartes
   13. Fiche professionnelle
   14. Événements : agenda & calendrier
   15. Marchés
   16. Actualités, recherche, 404
   17. Accessibilité & impression
   ========================================================================= */

/* ============================ 01. JETONS ================================ */
:root{
  /* Fonds */
  --bg:#ece3cc;
  --panel:#f2ead6;
  --panel-accent:#e9dfc6;
  --panel-soft:#f7f1e0;

  /* Encre & textes */
  --ink:#21251c;
  --ink-deep:#14170f;
  --text-2:#3d4636;
  --text-3:#4c5847;
  --text-body:#2e332a;
  --muted:#6b7261;
  --muted-2:#8d8468;
  --muted-3:#57604f;
  --muted-4:#5b6355;
  --placeholder:#7a7f6d;
  --placeholder-strong:#6d7261;

  /* Verts */
  /* État d'ouverture. Le doré servait aussi bien à l'ouvert qu'au Partenaire
     Or : deux informations sans rapport dans la même couleur. Le vert dit
     « ouvert » sans qu'on ait à lire, et il reste dans la famille du thème. */
  --status-open:#2f6b41;
  --status-closed:#86806f;
  --green:#1d2d23;
  --green-btn:#1d2f24;
  --green-btn-hover:#16241c;
  --green-footer:#16241c;
  --green-top:#141f18;
  --green-top-hover:#1f3024;

  /* Ors */
  --gold:#a8781d;
  --gold-deep:#98690f;
  --gold-hover:#a87c1f;
  --gold-badge-ink:#7a5a12;
  --gold-badge-bg:#f3e8c9;
  --gold-light:#dcbc6f;
  --gold-lighter:#e6cd8c;
  --gold-lightest:#f0d38b;
  --gold-on-dark:#c8b06a;

  /* Filets */
  --rule:#cfc6ab;
  --rule-2:#cfc4a2;
  --rule-3:#b8ae8f;
  --dotted:#c8c1a8;
  --rule-dark:#2a3c30;
  --rule-dark-2:#263a2c;
  --border-ui:#8f9a84;
  --rank-border:#6b7d63;

  /* Sur fond sombre */
  --on-dark:#f2eee0;
  --on-dark-2:#f2ead6;
  --on-dark-3:#f4f0e2;
  --on-dark-4:#f7f3e8;
  --on-dark-muted:#9fb0a0;
  --on-dark-muted-2:#95a492;
  --on-dark-muted-3:#7e937f;

  /* Typographies */
  --font-title:'Spectral',Georgia,'Times New Roman',serif;
  --font-edito:'EB Garamond',Georgia,'Times New Roman',serif;
  --font-ui:'Instrument Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;

  /* Mesures */
  --wrap:1280px;
  --gutter:16px;
  --radius-photo:3px;
  --tap:44px;
}

@media (min-width:700px){ :root{ --gutter:28px; } }
@media (min-width:1040px){ :root{ --gutter:44px; } }
@media (min-width:1240px){ body.home{ --gutter:56px; } }

/* ============================ 02. RESET & BASE ========================== */
*,*::before,*::after{ box-sizing:border-box; }

html{
  -webkit-text-size-adjust:100%;
  scroll-behavior:smooth; /* neutralisé plus bas si l'utilisateur limite les animations */
}

body{
  margin:0;
  background:var(--bg);
  color:var(--ink);
  font:400 15px/1.6 var(--font-ui);
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  overflow-wrap:break-word;
}

img{ max-width:100%; height:auto; display:block; }
figure{ margin:0; }

/* Les photos ont 3px, rien d'autre n'est arrondi. */
.dm-photo,.dm-photo img{ border-radius:var(--radius-photo); }

svg{ display:block; }

hr{ border:0; border-top:1px solid var(--rule); margin:26px 0; }

fieldset{ border:0; margin:0; padding:0; min-width:0; }
legend{ padding:0; }
button{ font-family:inherit; }
ul,ol{ margin:0 0 1em; padding-left:1.2em; }

/* ================= 03. TYPOGRAPHIE & PRIMITIVES ======================== */
h1,h2,h3,h4,h5,h6{
  font-family:var(--font-title);
  font-weight:600;
  color:var(--ink);
  margin:0 0 .5em;
  line-height:1.16;
  text-wrap:balance;
}

p{ margin:0 0 1em; }
p:last-child{ margin-bottom:0; }

a{ color:inherit; text-decoration:none; }
a:hover,a:focus-visible{ color:var(--gold-hover); }

.dm-link{
  font:500 13.5px var(--font-ui);
  color:var(--ink);
  text-decoration:underline;
  text-decoration-thickness:1px;
  text-underline-offset:4px;
}
.dm-link:hover{ color:var(--gold-hover); }
.dm-link--sm{ font-size:12.5px; text-underline-offset:3px; }

/* Surtitre / label d'interface */
.dm-eyebrow{
  font:600 10.5px var(--font-ui);
  letter-spacing:.24em;
  text-transform:uppercase;
  color:var(--gold);
  margin:0;
}
.dm-eyebrow--muted{ color:var(--muted); }
.dm-label{
  display:flex;
  align-items:baseline;
  gap:8px;
  font:600 11.5px var(--font-ui);
  letter-spacing:.13em;
  text-transform:uppercase;
  color:var(--text-3);
}
/* Obligatoire ou facultatif : l'information se lit sur l'étiquette, pas après
   coup dans un message d'erreur. */
.dm-label__req{ color:var(--gold-deep); font-size:13px; line-height:1; }
.dm-label__opt{
  font:italic 400 11px var(--font-edito);
  letter-spacing:0;
  text-transform:none;
  color:var(--muted);
}

/* Voix éditoriale */
.dm-edito{ font:400 15.5px/1.75 var(--font-edito); color:var(--text-body); }
.dm-note{ font:italic 400 13.5px/1.6 var(--font-edito); color:var(--muted); }

/* Boutons */
.dm-btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  min-height:var(--tap);
  padding:13px 26px;
  background:var(--green-btn);
  color:var(--on-dark-4);
  font:600 14px var(--font-ui);
  border:0;
  border-radius:0;
  cursor:pointer;
  text-align:center;
  transition:background-color .15s ease;
}
.dm-btn:hover,.dm-btn:focus-visible{ background:var(--green-btn-hover); color:var(--on-dark-4); }
.dm-btn--ghost{
  background:transparent;
  color:var(--ink);
  border:1.5px solid var(--ink);
  padding:11.5px 24px;
}
.dm-btn--ghost:hover,.dm-btn--ghost:focus-visible{ background:var(--ink); color:var(--panel); }
.dm-btn--gold{ background:var(--gold-light); color:var(--green-top); }
.dm-btn--gold:hover,.dm-btn--gold:focus-visible{ background:var(--gold-lightest); color:var(--green-top); }
.dm-btn--block{ display:flex; width:100%; }
.dm-btn__arrow{ font:400 14px var(--font-edito); }

/* Champs : ligne soulignée, placeholder Garamond italique */
.dm-field{ display:block; }
.dm-field + .dm-field{ margin-top:18px; }
.dm-input,
.dm-textarea,
.dm-select{
  display:block;
  width:100%;
  margin-top:4px;
  padding:7px 2px 8px;
  background:transparent;
  border:0;
  border-bottom:1.5px solid var(--text-3);
  border-radius:0;
  font:400 17px/1.5 var(--font-edito);
  color:var(--ink);
  min-height:var(--tap);
  appearance:none;
}
.dm-textarea{ resize:vertical; min-height:96px; }
/* Curseurs déclarés explicitement. Sans cela, un curseur posé sur un parent
   se propage au champ, et un visiteur qui voit un sens interdit sur « Votre
   nom » en conclut que le formulaire est fermé. */
.dm-input,.dm-textarea{ cursor:text; }
.dm-label{ cursor:pointer; }
.dm-input:focus,.dm-textarea:focus,.dm-select:focus{
  outline:none;
  border-bottom-color:var(--gold);
  box-shadow:0 1px 0 0 var(--gold);
}
.dm-input::placeholder,.dm-textarea::placeholder{
  font-style:italic;
  color:var(--placeholder-strong);
  opacity:1;
}
/* Le champ actif se repère à son étiquette autant qu'à son trait. */
.dm-field:focus-within .dm-label{ color:var(--gold-deep); }
.dm-select{
  background-image:linear-gradient(45deg,transparent 50%,var(--ink) 50%),linear-gradient(135deg,var(--ink) 50%,transparent 50%);
  background-position:calc(100% - 12px) calc(50% + 1px),calc(100% - 7px) calc(50% + 1px);
  background-size:5px 5px,5px 5px;
  background-repeat:no-repeat;
  padding-right:26px;
  cursor:pointer;
}

/* Étiquettes / chips */
.dm-chip{
  display:inline-flex;
  align-items:center;
  gap:7px;
  min-height:36px;
  padding:7px 15px;
  border:1px solid var(--border-ui);
  font:500 13px var(--font-ui);
  color:#3f4a3c;
  white-space:nowrap;
  background:transparent;
  cursor:pointer;
}
.dm-chip:hover{ border-color:var(--gold); color:var(--ink); }
.dm-chip.is-active,.dm-chip[aria-current="true"]{
  background:var(--green-btn);
  border-color:var(--green-btn);
  color:var(--on-dark-2);
  padding:8px 15px;
}
.dm-chip.is-active:hover{ color:var(--on-dark-2); }
.dm-chip__count{ color:var(--muted-2); }
.dm-chip.is-active .dm-chip__count{ color:inherit; opacity:.65; }

.dm-tag{
  display:inline-block;
  padding:6px 13px;
  border:1px solid var(--border-ui);
  font:500 12px var(--font-ui);
  color:#3f4a3c;
}

/* Badge Partenaire Or */
.dm-badge-or{
  display:inline-block;
  padding:4px 9px;
  background:var(--gold-badge-bg);
  border:1px solid var(--gold);
  color:var(--gold-badge-ink);
  font:600 9.5px var(--font-ui);
  letter-spacing:.18em;
  text-transform:uppercase;
  white-space:nowrap;
}
.dm-badge-nouveau{
  font:600 10px var(--font-ui);
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--gold);
  white-space:nowrap;
}

/* Filets décoratifs des titres d'accueil.
   Trois traitements distincts, un par section, et jamais ailleurs. */

/* 1. Double filet. `border: double` laisse le navigateur choisir la
   répartition des épaisseurs et rend deux cheveux flottants. On dessine donc
   les deux traits, épais puis fin, serrés sous le texte. */
.dm-title-double{
  position:relative;
  display:inline-block;
  margin:0 0 18px;
  padding:0 2px 13px;
  border:0;
  font:600 23px/1.2 var(--font-title);
  color:var(--ink-deep);
}
.dm-title-double::after{
  content:"";
  position:absolute;
  left:0;
  right:0;
  bottom:0;
  height:5px;
  border-top:2px solid var(--ink-deep);
  border-bottom:1px solid var(--ink-deep);
}

/* Titre de section sans ornement. Les trois traitements ci-dessous sont
   réservés à leur section : partout ailleurs, un titre reste un titre. */
.dm-title-plain{
  margin:0 0 14px;
  font:600 20px/1.2 var(--font-title);
  color:var(--ink);
}
@media (min-width:700px){ .dm-title-plain{ font-size:23px; margin-bottom:16px; } }

/* 2. Cartouche encre, calé sur la hauteur des majuscules. */
.dm-title-block{
  display:inline-block;
  margin:0 0 18px;
  padding:9px 18px 11px;
  background:var(--ink-deep);
  color:var(--panel);
  font:600 25px/1.1 var(--font-title);
}
.dm-title-gold{
  margin:8px 0 0;
  padding-left:13px;
  border-left:4px solid var(--gold);
  font:600 23px/1.2 var(--font-title);
  color:var(--ink-deep);
}
@media (min-width:700px){
  .dm-title-double{ font-size:29px; padding-bottom:15px; }
  .dm-title-block{ font-size:32px; padding:11px 22px 13px; }
  .dm-title-gold{ font-size:32px; line-height:1.16; padding-left:16px; }
}

/* Liste datée (accueil, agenda) */
.dm-datelist{ margin:0; padding:0; list-style:none; }
.dm-datelist__item{
  display:flex;
  align-items:baseline;
  gap:14px;
  padding:12px 0;
  border-top:1px dotted var(--dotted);
}
.dm-datelist__item:last-child{ border-bottom:1px dotted var(--dotted); }
.dm-datelist__date{
  flex:none;
  font:600 20px var(--font-edito);
  color:var(--gold-deep);
  min-width:58px;
}
.dm-datelist__title{ font:600 19px var(--font-title); color:var(--ink-deep); display:block; }
.dm-datelist__meta{ font:400 14.5px/1.5 var(--font-ui); color:var(--muted-4); margin-top:3px; }

/* ============================ 04. MISE EN PAGE ========================== */
.dm-wrap{
  width:100%;
  max-width:var(--wrap);
  margin-inline:auto;
  padding-inline:var(--gutter);
}
.dm-section{ padding-block:28px; }
@media (min-width:700px){ .dm-section{ padding-block:42px; } }

.dm-grid{ display:grid; gap:22px; }
@media (min-width:700px){ .dm-grid--3{ grid-template-columns:repeat(2,1fr); gap:26px; } }
@media (min-width:1040px){ .dm-grid--3{ grid-template-columns:repeat(3,1fr); gap:26px; } }

.dm-cols{ display:grid; gap:28px; }
@media (min-width:1040px){
  .dm-cols--main{ grid-template-columns:1.5fr 1fr; gap:44px; }
  .dm-cols--agenda{ grid-template-columns:1.45fr 1fr; gap:44px; }
  .dm-cols--half{ grid-template-columns:1fr 1fr; gap:56px; }
  .dm-cols--feature{ grid-template-columns:1.05fr .95fr; gap:52px; }
}

.dm-rule-top{ border-top:1px solid var(--rule); }
.dm-rule-bottom{ border-bottom:1px solid var(--rule); }

/* ==================== 05. BANDEAU PARTENAIRES OR ======================= */
/* Collant en haut sur tous les écrans — desktop comme mobile.
   Aucun ancêtre ne porte d'`overflow`, condition sans laquelle `sticky` serait
   silencieusement ignoré. */
.dm-partners{
  position:sticky;
  top:0;
  z-index:60;
  background:var(--green-top);
  border-bottom:2px solid var(--gold-on-dark);
}

/* Le bandeau collant recouvrirait la cible d'une ancre (« Contact »,
   « Laisser une recommandation »…) : on réserve sa hauteur. */
:target{ scroll-margin-top:120px; }
@media (min-width:1040px){ :target{ scroll-margin-top:80px; } }
.dm-partners__inner{
  max-width:var(--wrap);
  margin-inline:auto;
}

/* — Mobile : ligne d'entête + carrousel — */
.dm-partners__brand,
.dm-partners__aside{ display:none; }

.dm-partners__mobilehead{
  display:flex;
  align-items:center;
  gap:8px;
  padding:8px var(--gutter) 0;
}
.dm-partners__pill{
  background:var(--gold-light);
  color:var(--green-top);
  font:600 8.5px var(--font-ui);
  letter-spacing:.16em;
  text-transform:uppercase;
  padding:5px 9px;
  white-space:nowrap;
}
.dm-partners__dots{ margin-left:auto; display:flex; align-items:center; gap:4px; }
.dm-partners__dot{ width:4px; height:4px; background:#4a5c47; flex:none; }
.dm-partners__dot.is-on{ width:12px; background:var(--gold-light); }
.dm-partners__hint{
  font:italic 400 10px var(--font-edito);
  color:#7f8f7d;
  white-space:nowrap;
}
.dm-partners__track{
  display:flex;
  gap:8px;
  padding:8px var(--gutter) 9px;
  overflow-x:auto;
  overflow-y:hidden;
  scroll-snap-type:x mandatory;
  scrollbar-width:none;
  -ms-overflow-style:none;
}
.dm-partners__track::-webkit-scrollbar{ display:none; }

/* La carte occupe l'écran, moins de quoi laisser voir le bord de la suivante.
   À 252px fixes, il ne restait que 120px au nom : il était coupé presque à
   chaque fois, et la commune avec lui. */
.dm-partner{
  flex:none;
  width:min(340px, calc(100vw - 2 * var(--gutter) - 44px));
  scroll-snap-align:start;
  display:flex;
  align-items:center;
  gap:10px;
  padding:7px 9px;
  border:1px solid var(--rule-dark);
  background:transparent;
}
.dm-partner__link{
  display:flex;
  align-items:center;
  gap:10px;
  min-width:0;
  flex:1;
}
.dm-partner__link:hover{ color:inherit; }
.dm-partner.is-first{ border-color:var(--gold-light); background:var(--green-top-hover); }
.dm-partner__rank{
  width:24px; height:24px; flex:none;
  display:flex; align-items:center; justify-content:center;
  border:1px solid var(--rank-border);
  color:var(--gold-light);
  font:italic 500 14px var(--font-edito);
}
.dm-partner.is-first .dm-partner__rank{ background:var(--gold-light); color:var(--green-top); border-color:var(--gold-light); }

/* Logo du partenaire, à la place du numéro. Fond papier : un logo sombre
   resterait invisible sur le vert. « contain » : un logo en largeur n'est
   jamais rogné. */
.dm-partner__logo{
  width:40px; height:40px; flex:none;
  display:flex; align-items:center; justify-content:center;
  padding:3px;
  background:var(--on-dark-3);
}
.dm-partner__logo img{
  display:block;
  width:auto; height:auto;
  max-width:100%; max-height:100%;
  object-fit:contain;
}
/* Une fiche sans logo garde son numéro, dans une vignette de même taille. */
.dm-partners--logos .dm-partner__rank{ width:40px; height:40px; font-size:18px; }

.dm-partner__body{ min-width:0; flex:1; }
/* Sur deux lignes au besoin : la carte a la hauteur du bouton « Appeler »,
   autant s'en servir plutôt que de couper le nom. */
.dm-partner__name{
  display:-webkit-box;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:2;
  overflow:hidden;
  font:500 12.5px/1.25 var(--font-ui);
  color:var(--on-dark-3);
}
.dm-partner__meta{
  display:block;
  font:400 10px var(--font-ui);
  color:var(--on-dark-muted-2);
  margin-top:2px;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.dm-partner__tel{
  display:none;
  font:500 11px var(--font-edito);
  color:var(--gold-light);
  white-space:nowrap;
  margin-top:3px;
}
.dm-partner__call{
  flex:none;
  display:flex;
  align-items:center;
  border:1px solid var(--gold-light);
  padding:15px 12px;
  font:600 9.5px var(--font-ui);
  letter-spacing:.1em;
  color:var(--gold-light);
}
.dm-partner__call:hover{ background:var(--gold-light); color:var(--green-top); }

/* Emplacement libre : même cellule, à voix basse. Masqué sur mobile, où le
   carrousel doit rester court et où la carte dorée porte déjà l'invitation. */
.dm-partner--free{ display:none; }
.dm-partner__free-label{
  display:block;
  font:500 12px var(--font-ui);
  color:var(--on-dark-muted-2);
}
.dm-partner__free-hint{
  display:block;
  margin-top:2px;
  font:italic 400 11px var(--font-edito);
  color:#6f7f6d;
}
.dm-partner--free .dm-partner__rank{
  border-style:dashed;
  color:#6f7f6d;
}
.dm-partner--free:hover .dm-partner__rank{ border-color:var(--gold-light); color:var(--gold-light); }
.dm-partner--free:hover .dm-partner__free-label{ color:var(--gold-lighter); }

.dm-partners__cta{
  flex:none;
  width:186px;
  scroll-snap-align:start;
  display:flex;
  flex-direction:column;
  justify-content:center;
  gap:3px;
  background:var(--gold-light);
  padding:8px 14px;
}
.dm-partners__cta:hover{ background:var(--gold-lightest); color:var(--green-top); }
.dm-partners__cta-label{
  font:600 9.5px var(--font-ui);
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--green-top);
  white-space:nowrap;
}
.dm-partners__cta-free{
  font:italic 400 10.5px var(--font-edito);
  color:#3f4a32;
  white-space:nowrap;
}

/* — Desktop : 3 zones, 5 cellules égales — */
@media (min-width:1040px){
  /* Le bandeau s'étend au-delà de la largeur du site (1280px) : sur un écran
     large, il laissait de grands vides de part et d'autre pendant que les
     noms étaient coupés au milieu. */
  .dm-partners__inner{ display:flex; align-items:stretch; max-width:1600px; }
  .dm-partners__mobilehead{ display:none; }

  .dm-partners__brand{
    flex:none;
    display:flex;
    align-items:center;
    padding:0 14px 0 var(--gutter);
    border-right:1px solid var(--rule-dark);
  }
  /* Sur deux lignes, « PARTENAIRES / OR » forme un cachet et rend une
     cinquantaine de pixels aux cellules, où les noms étaient coupés. */
  .dm-partners__pill{ font-size:10px; letter-spacing:.2em; padding:7px 12px; }
  .dm-partners__brand .dm-partners__pill{ display:block; width:min-content; white-space:normal; text-align:center; line-height:1.5; padding:6px 10px; }

  .dm-partners__track{
    flex:1;
    display:flex;
    align-items:stretch;
    min-width:0;
    gap:0;
    padding:0;
    overflow:visible;
  }
  .dm-partner{
    flex:1 1 0;
    width:auto;
    min-width:0;
    gap:8px;
    padding:8px 10px;
    border:0;
    border-right:1px solid var(--rule-dark);
    border-top:2px solid transparent;
    background:transparent;
  }
  .dm-partner__link{ gap:8px; }
  .dm-partner:last-of-type{ border-right:0; }
  /* Le liseré doré de la carte n°1 sur téléphone passait ici en filet haut
     et droit : la cellule paraissait encadrée, sans raison lisible. Sur
     ordinateur, le n°1 se distingue par son carré doré, comme prévu. */
  .dm-partner.is-first{ background:transparent; border-color:transparent var(--rule-dark) transparent transparent; }
  .dm-partner:hover{ background:var(--green-top-hover); border-top-color:var(--gold-light); }
  .dm-partner__rank{ width:20px; height:20px; font-size:12px; }
  .dm-partner__logo,
  .dm-partners--logos .dm-partner__rank{ width:28px; height:28px; font-size:14px; }
  .dm-partner.is-first .dm-partner__logo{ outline:1px solid var(--gold-light); outline-offset:2px; }
  /* Une seule ligne ici : le nom complet s'affiche au survol. */
  .dm-partner__name{
    display:block;
    font-size:12px;
    white-space:nowrap;
    text-overflow:ellipsis;
  }
  .dm-partner__tel{ display:block; }
  .dm-partner__call{ display:none; }

  .dm-partners__aside{
    flex:none;
    display:flex;
    flex-direction:column;
    justify-content:center;
    align-items:flex-end;
    gap:5px;
    padding:0 var(--gutter) 0 14px;
    border-left:1px solid var(--rule-dark);
  }
  .dm-partners__track > .dm-partners__cta{ display:none; }
  .dm-partner--free{ display:flex; }
  .dm-partners__cta{
    flex-direction:row;
    align-items:center;
    gap:8px;
    width:auto;
    padding:8px 15px;
  }
  .dm-partners__cta-label{ font-size:9.5px; letter-spacing:.12em; }
  .dm-partners__aside .dm-partners__cta-free{
    color:var(--on-dark-muted-2);
    font-size:10.5px;
  }
  .dm-partners__cta .dm-partners__cta-free{ display:none; }
}
/* La vignette grandit quand les cellules le permettent. */
@media (min-width:1240px){
  .dm-partner__logo,
  .dm-partners--logos .dm-partner__rank{ width:34px; height:34px; font-size:15px; }
}

/* ============ 06. EN-TÊTE DU SITE & NAVIGATION ========================= */
.dm-header{ background:var(--green); }
.dm-header__inner{
  max-width:var(--wrap);
  margin-inline:auto;
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:12px;
  padding:12px var(--gutter);
}
.dm-header__brand{ display:flex; align-items:center; gap:12px; min-width:0; }
.dm-header__brand:hover{ color:inherit; }
.dm-header__logo{ height:44px; width:auto; flex:none; }
.dm-header__name{ display:block; font:600 16px var(--font-edito); color:var(--on-dark); }
.dm-header__devise{
  display:none;
  font:500 9.5px var(--font-ui);
  letter-spacing:.22em;
  text-transform:uppercase;
  color:var(--on-dark-muted);
  margin-top:2px;
}
.dm-header__cta{ display:none; }

/* Burger */
.dm-burger{
  margin-left:auto;
  display:flex;
  flex-direction:column;
  justify-content:center;
  gap:4px;
  width:var(--tap);
  height:var(--tap);
  padding:0 12px;
  background:transparent;
  border:0;
  cursor:pointer;
  flex:none;
}
.dm-burger span{ display:block; width:20px; height:2px; background:var(--on-dark); transition:transform .2s ease,opacity .2s ease; }
.dm-burger span:last-child{ width:14px; background:var(--gold-on-dark); }
.dm-burger[aria-expanded="true"] span:nth-child(1){ transform:translateY(6px) rotate(45deg); }
.dm-burger[aria-expanded="true"] span:nth-child(2){ opacity:0; }
.dm-burger[aria-expanded="true"] span:nth-child(3){ width:20px; background:var(--on-dark); transform:translateY(-6px) rotate(-45deg); }

.dm-nav{
  display:none;
  width:100%;
  background:var(--green);
  margin-inline:calc(-1 * var(--gutter));
}
.dm-nav.is-open{ display:block; }
.dm-nav__list{
  list-style:none;
  margin-block:0;
  padding:4px var(--gutter) 16px;
}
.dm-nav__list li{ border-top:1px solid var(--rule-dark); }
.dm-nav__list a{
  display:flex;
  align-items:center;
  min-height:var(--tap);
  padding:10px 0;
  font:500 15px var(--font-ui);
  color:var(--on-dark);
}
.dm-nav__list a:hover{ color:var(--gold-lighter); }
.dm-nav__list .current-menu-item > a,
.dm-nav__list .current_page_item > a,
.dm-nav__list .dm-nav-current > a{
  color:var(--gold-lighter);
  text-decoration:underline;
  text-decoration-color:var(--gold-on-dark);
  text-decoration-thickness:2px;
  text-underline-offset:5px;
}
/* Pages légales dans la navigation : présentes, mais en retrait, pour que les
   rubriques du site gardent le premier rôle. */
.dm-nav__list .dm-menu__legal > a{
  font-size:13px;
  font-weight:400;
  color:var(--muted-on-dark,rgba(255,255,255,.62));
}
.dm-nav__cta{ margin:14px var(--gutter) 18px; }
.dm-nav__cta a{
  display:flex;
  align-items:center;
  justify-content:center;
  min-height:var(--tap);
  border:1.5px solid var(--gold-on-dark);
  color:var(--on-dark);
  font:600 13px var(--font-ui);
  padding:10px 16px;
}
.dm-nav__cta a:hover{ background:var(--gold-on-dark); color:var(--green-top); }

/* Le menu horizontal ne s’affiche qu’à partir de 1 120 px, et non 1 040.
   L’entrée « Assos » ajoute une rubrique : à 1 040 px le menu venait
   chevaucher le bouton de droite de 54 px. Plutôt que de resserrer le menu,
   ce qui aurait changé son allure, la bascule vers le bouton à trois traits
   se fait un peu plus tôt. Le menu lui-même est inchangé. */
@media (min-width:1120px){
  .dm-header__inner{ gap:16px; padding:15px var(--gutter); }
  .dm-header__logo{ height:56px; }
  .dm-header__name{ font-size:19px; }
  .dm-header__devise{ display:block; }
  .dm-burger{ display:none; }
  .dm-nav{
    display:block;
    width:auto;
    background:transparent;
    margin:0 0 0 24px;
  }
  .dm-nav__list{
    display:flex;
    gap:24px;
    padding:0;
  }
  .dm-nav__list li{ border:0; }
  .dm-nav__list a{ padding:0; min-height:0; font-size:14px; color:var(--on-dark); }
  /* Un filet sépare les rubriques des pages légales, qui passent en plus petit. */
  .dm-nav__list .dm-menu__legal--first{
    padding-left:24px;
    margin-left:0;
    border-left:1px solid var(--rule-dark);
  }
  .dm-nav__list .dm-menu__legal > a{ font-size:12.5px; }
  .dm-nav__cta{ display:none; }
  .dm-header__cta{
    display:inline-flex;
    align-items:center;
    margin-left:auto;
    border:1.5px solid var(--gold-on-dark);
    padding:9px 16px;
    font:600 13px var(--font-ui);
    color:var(--on-dark);
    white-space:nowrap;
  }
  .dm-header__cta:hover{ background:var(--gold-on-dark); color:var(--green-top); }
}

/* ================= 07. HÉRO & BANDE DE RECHERCHE ======================= */
/* Hauteur calee sur l'accroche : elle tient en six lignes sur un telephone,
   en trois sur un ecran large. */
.dm-hero{ position:relative; height:300px; overflow:hidden; }
.dm-hero__img{ width:100%; height:100%; object-fit:cover; }
.dm-hero__veil{
  position:absolute; inset:0; pointer-events:none;
  background:linear-gradient(180deg,rgba(20,25,18,.20) 0%,rgba(20,25,18,0) 12%,rgba(20,25,18,.58) 56%,rgba(20,25,18,.88) 100%);
}
.dm-hero__content{
  position:absolute;
  left:0; right:0; bottom:16px;
  padding-inline:var(--gutter);
  max-width:var(--wrap);
  margin-inline:auto;
  pointer-events:none;
}
.dm-hero__eyebrow{ display:flex; align-items:center; gap:9px; }
.dm-hero__eyebrow span:first-child{ width:18px; height:1px; background:var(--gold-light); flex:none; }
.dm-hero__eyebrow span:last-child{
  font:600 10px var(--font-ui);
  letter-spacing:.2em;
  text-transform:uppercase;
  color:var(--gold-lighter);
}
.dm-hero__title{
  font:600 36px/1.02 var(--font-title);
  color:#fbf8ee;
  margin:8px 0 0;
}
.dm-hero__baseline{
  font:400 13.5px/1.5 var(--font-edito);
  color:#e3e0cf;
  margin:8px 0 0;
  max-width:640px;
}
@media (min-width:700px){
  .dm-hero{ height:380px; }
  .dm-hero__title{ font-size:52px; }
  .dm-hero__baseline{ font-size:16px; line-height:1.55; max-width:700px; }
}
@media (min-width:1040px){
  .dm-hero{ height:452px; }
  .dm-hero__content{ bottom:34px; }
  .dm-hero__eyebrow span:first-child{ width:26px; }
  .dm-hero__eyebrow span:last-child{ font-size:11px; letter-spacing:.28em; }
  .dm-hero__title{ font-size:70px; line-height:1; margin-top:14px; }
  .dm-hero__baseline{ font-size:18px; line-height:1.55; color:#efeade; margin-top:14px; max-width:820px; }
}

/* Bande de recherche « en phrase » */
.dm-search{
  background:var(--panel);
  border-bottom:1px solid var(--rule);
}
.dm-search__inner{
  max-width:var(--wrap);
  margin-inline:auto;
  padding:18px var(--gutter) 20px;
}
.dm-search__form{ display:block; }
.dm-search__phrase{
  margin:0;
  font:400 16px/1.9 var(--font-edito);
  color:var(--ink);
}
.dm-search__phrase + .dm-search__phrase{ margin-top:10px; }
/* Le champ, son calque et sa jauge de largeur sont empilés : mêmes police et
   mêmes marges intérieures partout, sinon le texte qui défile ne tomberait pas
   sur le trait. Les trois valeurs se règlent ici, une seule fois. */
.dm-search__field{
  --dm-search-pad:2px 4px 4px;
  --dm-search-size:16px;
  position:relative;
  display:block;
  width:100%;
  margin-top:2px;
}
.dm-search__input,
.dm-search__ghost,
.dm-search__sizer{
  padding:var(--dm-search-pad);
  font:400 var(--dm-search-size)/1.5 var(--font-edito);
}
.dm-search__input{
  display:block;
  width:100%;
  background:transparent;
  border:0;
  border-bottom:2px solid var(--green-btn);
  border-radius:0;
  color:var(--ink);
  min-height:38px;
}
.dm-search__input::placeholder{ font-style:italic; color:var(--placeholder); opacity:1; }
.dm-search__input:focus{ outline:none; border-bottom-color:var(--gold); }

/* Le calque : l'exemple qui s'écrit, avec son curseur. */
.dm-search__ghost{
  position:absolute;
  inset:0;
  display:none;
  align-items:center;
  white-space:pre;
  font-style:italic;
  color:var(--placeholder);
  pointer-events:none;
}
.dm-search__field.is-ghosted .dm-search__ghost{ display:flex; }
.dm-search__caret{
  flex:none;
  width:1px;
  height:1.15em;
  margin-left:2px;
  background:var(--gold);
  animation:dm-caret 1.05s steps(1,end) infinite;
}
.dm-search__field.is-still .dm-search__caret{ display:none; }
@keyframes dm-caret{ 50%{ opacity:0; } }

/* La jauge : invisible, elle donne sa largeur au champ sur grand écran. */
.dm-search__sizer{ display:none; white-space:pre; visibility:hidden; }

@media (prefers-reduced-motion:reduce){
  .dm-search__caret{ animation:none; }
}
.dm-search__submit{ margin-top:16px; width:100%; }
.dm-search__stats{
  margin-top:10px;
  font:400 11.5px/1.6 var(--font-ui);
  color:var(--muted);
  text-align:center;
}
@media (min-width:1040px){
  .dm-search__inner{
    display:flex;
    align-items:center;
    gap:28px;
    padding:26px var(--gutter);
  }
  .dm-search__form{ flex:1; }
  .dm-search__phrase{
    display:inline;
    font-size:21px;
    line-height:1.9;
  }
  .dm-search__phrase + .dm-search__phrase{ margin-top:0; }
  /* Le champ prend la largeur du mot en cours, portée par la jauge. Le trait
     grandit donc avec l'exemple qui s'écrit, au lieu de s'étirer d'avance sur
     une longueur fixe qui laissait un long vide après le texte. */
  .dm-search__field{
    --dm-search-pad:0 6px 3px;
    --dm-search-size:21px;
    display:inline-block;
    width:auto;
    min-width:190px;
    max-width:100%;
    margin-top:0;
    vertical-align:baseline;
  }
  .dm-search__field--lieu{ min-width:170px; }
  .dm-search__sizer{ display:block; min-height:34px; }
  .dm-search__input{
    position:absolute;
    inset:0;
    width:100%;
    min-height:0;
  }
  .dm-search__submit{
    display:inline-flex;
    width:auto;
    /* Une marge franche devant le bouton : même si un champ s'élargit un peu,
       il ne vient pas coller « Trouver ». */
    margin:0 0 0 34px;
    padding:11px 26px;
    vertical-align:middle;
    min-height:0;
  }
  .dm-search__stats{
    flex:none;
    margin:0;
    text-align:right;
    font-size:12.5px;
    border-left:1px solid var(--rule);
    padding-left:26px;
  }
}

/* ============= 08. ACCUEIL : TRIPTYQUE / CARNET / PROCHAINEMENT ======== */
/* Triptyque — mobile : lignes compactes ; desktop : 3 colonnes photo */
.dm-tryptic{ display:flex; flex-direction:column; gap:14px; padding-block:24px 8px; }
.dm-tryptic__item{
  display:flex;
  align-items:center;
  gap:14px;
  background:var(--panel);
  border:1px solid var(--rule);
  padding:12px;
}
.dm-tryptic__item:hover{ border-color:var(--gold); color:inherit; }
/* `display:block` explicite : sur grand écran la vignette n'est plus un
   élément flex, et une balise <span> restée en ligne ignorerait `height` —
   l'image sortirait de son cadre et recouvrirait la section suivante. */
.dm-tryptic__thumb{ display:block; width:72px; height:56px; overflow:hidden; flex:none; }
.dm-tryptic__thumb img{ width:100%; height:100%; object-fit:cover; }
.dm-tryptic__body{ display:block; min-width:0; flex:1; }
.dm-tryptic__num{ display:none; }
.dm-tryptic__title{ display:block; font:600 16.5px var(--font-title); color:var(--ink); margin:0; }
.dm-tryptic__text{ display:block; font:400 11.5px var(--font-ui); color:var(--muted); margin:2px 0 0; }
.dm-tryptic__arrow{ margin-left:auto; font:400 16px var(--font-edito); color:var(--gold); flex:none; }
.dm-tryptic__link{ display:none; }

@media (min-width:1040px){
  .dm-tryptic{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:34px;
    padding-block:52px 10px;
  }
  .dm-tryptic__item{
    display:block;
    background:transparent;
    border:0;
    padding:0;
  }
  .dm-tryptic__item:hover{ border:0; }
  .dm-tryptic__thumb{ width:100%; height:225px; border-radius:var(--radius-photo); }
  .dm-tryptic__head{ display:flex; align-items:baseline; gap:10px; margin-top:15px; }
  .dm-tryptic__num{
    display:block;
    font:italic 500 15px var(--font-edito);
    color:var(--gold);
  }
  .dm-tryptic__title{ font-size:23px; color:var(--ink-deep); }
  .dm-tryptic__text{ font-size:14.5px; line-height:1.55; color:var(--text-2); margin:6px 0 8px; }
  .dm-tryptic__arrow{ display:none; }
  .dm-tryptic__link{
    display:inline-block;
    font:500 13.5px var(--font-ui);
    color:var(--ink);
    text-decoration:underline;
    text-underline-offset:4px;
  }
}

/* Nouveaux au carnet */
.dm-carnet{ padding-block:20px 4px; }
.dm-carnet__item{
  display:flex;
  align-items:baseline;
  gap:10px;
  padding:11px 0;
  border-bottom:1px dotted var(--dotted);
  transition:border-color .15s ease;
}
/* Le premier filet ferme la liste par le haut : sans lui, la première ligne
   flottait sous le titre. */
.dm-carnet__item:first-of-type{ border-top:1px dotted var(--dotted); }
.dm-carnet__item:hover{ border-bottom-color:var(--gold); }
.dm-carnet__name{
  display:block;
  font:600 15px var(--font-title);
  color:var(--ink);
}
.dm-carnet__name:hover{ color:var(--gold-hover); }
.dm-carnet__meta{ display:block; font:400 11.5px var(--font-ui); color:var(--muted); margin-top:2px; }
.dm-carnet .dm-badge-nouveau{ margin-left:auto; font-size:8.5px; flex:none; }
@media (min-width:700px){
  .dm-carnet__item{ padding:14px 0; }
  .dm-carnet__name{ display:inline; font-size:17.5px; }
  /* L'étiquette NOUVEAU se cale sur la ligne plutôt que de dériver au loin :
     un filet pointillé la relie au texte, comme dans les listes datées. */
  .dm-carnet__meta{
    font-size:12.5px;
    display:inline;
    margin-left:12px;
    white-space:nowrap;
  }
  .dm-carnet__rule{
    flex:1;
    min-width:24px;
    border-bottom:1px dotted var(--dotted);
    transform:translateY(-4px);
  }
  .dm-carnet .dm-badge-nouveau{ font-size:10px; margin-left:0; }
}
.dm-carnet__rule{ display:none; }
@media (min-width:700px){ .dm-carnet__rule{ display:block; } }
/* La colonne de droite du carnet reste volontairement libre (actualités). */
.dm-carnet-aside:empty{ display:none; }
.dm-carnet-aside__post{
  padding:12px 0;
  border-bottom:1px dotted var(--dotted);
}
.dm-carnet-aside__date{
  font:600 10px var(--font-ui);
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--gold);
}
.dm-carnet-aside__title{ font:600 17.5px var(--font-title); color:var(--ink-deep); margin:4px 0 0; }
.dm-carnet-aside__excerpt{ font:400 13px/1.55 var(--font-ui); color:var(--text-3); margin:4px 0 0; }

/* Prochainement */
.dm-next{ padding-block:22px 6px; }
/* Balise <a> : sans `display:block`, sa hauteur serait ignorée et la photo
   déborderait sur la suite, comme pour les vignettes du triptyque. */
/* L'image de l'événement en vedette suit son format d'origine : une affiche
   verticale reste verticale, une bannière garde sa bande. Le recadrage dur en
   720×480 lui coupait la moitié basse. */
.dm-next__photo{
  display:flex;
  align-items:center;
  justify-content:center;
  background:var(--panel-soft);
  border:1px solid var(--rule);
  overflow:hidden;
  padding:8px;
}
.dm-next__photo img{
  width:auto;
  height:auto;
  max-width:100%;
  max-height:100%;
  object-fit:contain;
}
.dm-next__photo.is-paysage{ height:170px; }
.dm-next__photo.is-portrait{ height:320px; }
.dm-next__meta{
  font:600 9.5px var(--font-ui);
  letter-spacing:.16em;
  text-transform:uppercase;
  color:var(--gold);
  margin-top:12px;
}
.dm-next__title{ font:600 19px var(--font-title); color:var(--ink-deep); margin:4px 0 0; }
.dm-next__text{ font:400 14px/1.6 var(--font-ui); color:var(--text-3); margin:6px 0 10px; }
.dm-next__quote{
  font:italic 400 16.5px/1.5 var(--font-edito);
  color:#55604f;
  border-left:2px solid var(--gold);
  padding-left:16px;
  margin:0 0 26px;
}
.dm-next__quote cite{
  display:block;
  font:400 12.5px var(--font-ui);
  font-style:normal;
  color:var(--gold);
  margin-top:6px;
}
@media (min-width:700px){
  .dm-next__photo.is-paysage{ height:240px; }
  .dm-next__photo.is-portrait{ height:420px; }
  .dm-next__meta{ font-size:11px; letter-spacing:.18em; margin-top:16px; }
  .dm-next__title{ font-size:25px; margin-top:6px; }
}
@media (min-width:1040px){
  .dm-next{ padding-block:44px 50px; }
  .dm-next__aside{ align-self:end; }
}

/* ==================== 09. FORMULAIRE DE CONTACT ======================== */
.dm-contact{
  margin-block:22px 26px;
  border:1px solid var(--rule-3);
  background:var(--panel-accent);
}
.dm-contact__intro{ padding:20px 18px; display:flex; flex-direction:column; }
.dm-contact__body{ padding:0 18px 20px; }
.dm-contact__coords{ margin-top:auto; padding-top:20px; display:flex; flex-direction:column; gap:8px; }
.dm-contact__slots{
  margin:14px 0 0;
  padding:10px 14px;
  background:var(--gold-badge-bg);
  border-left:3px solid var(--gold);
  font:500 13px var(--font-ui);
  color:var(--gold-badge-ink);
}
.dm-contact__mail{ font:400 15px var(--font-edito); color:var(--ink); }
.dm-contact__phone{ font:500 17px var(--font-edito); color:var(--ink); }
.dm-contact__phone:hover{ color:var(--gold-hover); }
.dm-contact__delay{ font:italic 400 13px var(--font-edito); color:var(--muted); }
.dm-contact__text{ font:400 13px/1.55 var(--font-ui); color:var(--text-2); margin:10px 0 0; }

.dm-subjects{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin-top:14px; }
.dm-subjects__label{
  font:600 10.5px var(--font-ui);
  letter-spacing:.2em;
  text-transform:uppercase;
  color:var(--muted);
  margin-right:4px;
}
.dm-subject input{ position:absolute; opacity:0; width:0; height:0; }
.dm-subject span{
  display:inline-flex;
  align-items:center;
  min-height:38px;
  padding:7px 14px;
  border:1px solid var(--border-ui);
  font:500 12.5px var(--font-ui);
  color:#3f4a3c;
  cursor:pointer;
}
.dm-subject input:checked + span{
  background:var(--green-btn);
  border-color:var(--green-btn);
  color:var(--panel);
}
.dm-subject input:focus-visible + span{ outline:2px solid var(--gold); outline-offset:2px; }

.dm-contact__hint{
  margin:16px 0 0;
  font:italic 400 12.5px/1.5 var(--font-edito);
  color:var(--muted);
}
.dm-contact__grid{ margin-top:12px; display:grid; gap:20px; }
/* La grille gère seule l'espacement. Sans cette remise à zéro, la marge de
   « champ qui suit un champ » s'ajoute à l'écart de grille : le second champ
   d'une ligne descend de 18px et ne s'aligne plus sur le premier — c'est ce
   qui décalait « Votre numéro » sous « Votre nom ». */
.dm-contact__grid .dm-field + .dm-field{ margin-top:0; }
.dm-contact__privacy{
  font:italic 400 12px var(--font-edito);
  color:var(--muted);
  text-align:center;
  margin-top:9px;
}
.dm-contact__submit{ margin-top:16px; width:100%; }
/* Champ-piège anti-robot. Il était rejeté à -9999px : un champ de saisie bien
   réel, hors écran, que les gestionnaires de mots de passe repèrent quand même
   et signalent parfois d'une pastille sur le formulaire. On le réduit plutôt à
   un point invisible, sans le sortir de la page. */
.dm-hp{
  position:absolute !important;
  width:1px; height:1px;
  margin:-1px; padding:0;
  overflow:hidden;
  clip-path:inset(50%);
  white-space:nowrap;
  border:0;
}

.dm-alert{
  margin-top:14px;
  padding:12px 16px;
  border-left:4px solid var(--gold);
  background:var(--panel-soft);
  font:400 14px/1.55 var(--font-ui);
  color:var(--text-2);
}
.dm-alert--error{ border-left-color:#9c3a24; }

@media (min-width:1040px){
  .dm-contact{
    display:grid;
    grid-template-columns:.9fr 1.4fr;
    margin-block:0 48px;
  }
  .dm-contact__intro{ padding:34px 36px; border-right:1px solid var(--rule-2); }
  .dm-contact__body{ padding:34px 38px 30px; }
  .dm-contact__text{ font-size:15px; line-height:1.65; margin-top:12px; }
  .dm-contact__coords{ padding-top:26px; }
  .dm-subjects{ margin-top:0; gap:10px; }
  .dm-subject span{ font-size:13px; padding:7px 16px; }
  .dm-contact__grid{
    grid-template-columns:1fr 1fr;
    gap:24px 32px;
    margin-top:18px;
    align-items:start;   /* les champs d'une ligne partent du même point */
  }
  .dm-contact__grid .dm-field--full{ grid-column:1/-1; }
  .dm-contact__foot{
    display:flex;
    align-items:center;
    gap:16px;
    margin-top:24px;
  }
  .dm-contact__privacy{ margin:0; text-align:left; font-size:12.5px; }
  .dm-contact__submit{ margin:0 0 0 auto; width:auto; }
}

/* ============ 10. PIED DE PAGE & BANDEAU COOKIES ======================= */
.dm-footer{ background:var(--green-footer); }
.dm-footer__inner{
  max-width:var(--wrap);
  margin-inline:auto;
  padding:20px var(--gutter);
  display:flex;
  flex-direction:column;
  gap:10px;
  align-items:center;
  text-align:center;
}
.dm-footer__logo{ width:112px; }
.dm-footer__baseline{ font:italic 400 12.5px/1.5 var(--font-edito); color:var(--on-dark-muted); max-width:260px; }

/* Sur mobile, la maquette réduit le pied de page au logo et à la baseline.
   Les rubriques restent affichées en une ligne centrée : sans elles, un
   visiteur arrivé en bas d'une longue page n'a plus aucun chemin sans
   remonter jusqu'au menu. Les deux autres colonnes, secondaires, attendent
   le grand écran. */
.dm-footer__col{ display:none; }
.dm-footer__col--main{ display:block; width:100%; }
.dm-footer__col--main .dm-footer__coltitle{ display:none; }
.dm-footer__col--main ul{
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  gap:6px 18px;
  padding:6px 0 2px;
}
.dm-footer__col--main a{ font-size:13.5px; line-height:1.6; }
.dm-footer__coltitle{
  font:600 11px var(--font-ui);
  letter-spacing:.2em;
  text-transform:uppercase;
  color:var(--gold-on-dark);
  margin-bottom:6px;
}
.dm-footer__col ul{ list-style:none; margin:0; padding:0; }
.dm-footer__col a{ font:400 13px/2 var(--font-ui); color:var(--on-dark-muted); }
.dm-footer__col a:hover{ color:var(--gold-lighter); }

.dm-footer__legal-wrap{
  max-width:var(--wrap);
  margin-inline:auto;
  padding-inline:var(--gutter);
}
.dm-footer__legal{
  border-top:1px solid var(--rule-dark-2);
  padding:14px 0 18px;
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  align-items:center;
  gap:14px;
  font:400 11px var(--font-ui);
  color:var(--on-dark-muted-3);
}
/* Crédit de conception : présent sur chaque page, sans concurrencer les
   mentions légales à côté desquelles il se place. */
.dm-footer__credit{ color:var(--on-dark-muted-3); }
.dm-footer__credit a{
  color:var(--on-dark-muted-2, rgba(255,255,255,.72));
  text-decoration:underline;
  text-underline-offset:3px;
  text-decoration-thickness:1px;
}
.dm-footer__credit a:hover{ color:var(--gold-lighter); }

.dm-footer__cookies{
  padding:0;
  background:none;
  border:0;
  color:inherit;
  font:inherit;
  cursor:pointer;
}
.dm-footer__cookies:hover{ color:var(--gold-lighter); }
@media (min-width:1040px){
  .dm-footer__inner{
    flex-direction:row;
    align-items:flex-start;
    text-align:left;
    gap:60px;
    padding:32px var(--gutter) 20px;
  }
  .dm-footer__logo{ width:152px; flex:none; }
  .dm-footer__col{ display:block; }
  .dm-footer__col--main{ width:auto; }
  .dm-footer__col--main .dm-footer__coltitle{ display:block; }
  .dm-footer__col--main ul{ display:block; padding:0; }
  .dm-footer__col--main a{ font-size:13px; line-height:2; }
  .dm-footer__baseline{
    margin-left:auto;
    max-width:240px;
    font-size:14px;
    line-height:1.6;
  }
  .dm-footer__legal{
    justify-content:flex-start;
    gap:22px;
    padding:14px 0 20px;
    font-size:12px;
  }
}

/* Cookies */
.dm-cookies{
  background:var(--bg);
  border-top:1px solid var(--rule);
}
.dm-cookies__inner{
  max-width:var(--wrap);
  margin-inline:auto;
  padding:14px var(--gutter);
}
.dm-cookies__text{ margin:0; font:400 12px/1.5 var(--font-ui); color:var(--text-3); }
.dm-cookies__text a{ text-decoration:underline; color:var(--ink); }
.dm-cookies__actions{ display:flex; gap:10px; margin-top:12px; }
.dm-cookies__actions button{ flex:1; min-height:var(--tap); }
@media (min-width:1040px){
  .dm-cookies__inner{ display:flex; align-items:center; gap:18px; padding:12px var(--gutter); }
  .dm-cookies__text{ flex:1; font-size:12.5px; }
  .dm-cookies__actions{ margin-top:0; gap:14px; }
  .dm-cookies__actions button{ flex:none; padding:9px 18px; min-height:0; }
}

/* ======= 11. EN-TÊTES DE PAGE, FILTRES, TRI, PAGINATION ================ */
.dm-pagehead{
  background:var(--panel);
  border-bottom:1px solid var(--rule);
}
.dm-pagehead__inner{
  max-width:var(--wrap);
  margin-inline:auto;
  padding:20px var(--gutter);
}
.dm-pagehead__title{
  margin:6px 0 0;
  font:500 25px/1.15 var(--font-title);
  color:var(--ink);
}
.dm-pagehead__count{
  font:italic 400 14px var(--font-edito);
  color:var(--muted);
  margin-top:6px;
}
@media (min-width:700px){
  .dm-pagehead__inner{ padding:38px var(--gutter) 26px; }
  .dm-pagehead__row{ display:flex; align-items:flex-end; gap:28px; margin-top:8px; }
  .dm-pagehead__title{ font-size:38px; line-height:1.1; margin:0; }
  .dm-pagehead__count{ font-size:15px; padding-bottom:5px; margin:0; }
}

/* Fil d'ariane */
.dm-breadcrumb{
  display:flex;
  align-items:baseline;
  gap:12px;
  flex-wrap:wrap;
  font:600 10.5px var(--font-ui);
  letter-spacing:.2em;
  text-transform:uppercase;
}
.dm-breadcrumb a{ color:var(--muted); }
.dm-breadcrumb a:hover{ color:var(--gold-hover); }
.dm-breadcrumb__sep{ font:400 11px var(--font-ui); color:var(--rule-3); letter-spacing:0; }
.dm-breadcrumb__current{ color:var(--gold); }

/* Barre de filtres */
.dm-filters{
  border-bottom:1px solid var(--rule);
}
.dm-filters__inner{
  max-width:var(--wrap);
  margin-inline:auto;
  display:flex;
  align-items:center;
  gap:8px;
  padding:12px var(--gutter);
  overflow-x:auto;
  scrollbar-width:none;
}
.dm-filters__inner::-webkit-scrollbar{ display:none; }
.dm-filters .dm-chip{ flex:none; font-size:12px; }
.dm-filters__sort{
  margin-left:auto;
  flex:none;
  font:400 11.5px var(--font-ui);
  color:var(--muted);
  display:flex;
  align-items:center;
  gap:6px;
  white-space:nowrap;
}
.dm-filters__sort select,
.dm-filters__commune select{
  border:0;
  border-bottom:1px solid var(--ink);
  background:transparent;
  font:500 12px var(--font-ui);
  color:var(--ink);
  padding:2px 18px 2px 2px;
  min-height:32px;
  appearance:none;
  cursor:pointer;
  background-image:linear-gradient(45deg,transparent 50%,var(--ink) 50%),linear-gradient(135deg,var(--ink) 50%,transparent 50%);
  background-position:calc(100% - 8px) calc(50% + 1px),calc(100% - 4px) calc(50% + 1px);
  background-size:4px 4px,4px 4px;
  background-repeat:no-repeat;
}
@media (min-width:1040px){
  .dm-filters__inner{ flex-wrap:wrap; overflow:visible; padding:16px var(--gutter); gap:10px; }
  .dm-filters .dm-chip{ font-size:13px; }
  .dm-filters__sort{ font-size:13px; }
}

/* Le choix de la commune, sur la page des associations. Il a sa propre ligne
   au-dessus des pastilles : dans la barre défilante il terminait hors de
   l'écran sur mobile, et c'est pourtant le filtre que les habitants viennent
   chercher. Pleine largeur sur mobile, largeur de lecture sur grand écran. */
.dm-filters__commune{
  max-width:var(--wrap);
  margin-inline:auto;
  padding:12px var(--gutter) 0;
}
.dm-filters--assos .dm-filters__inner{ padding-top:10px; }
.dm-filters__commune form{
  display:flex;
  align-items:center;
  gap:10px;
  font:400 12px var(--font-ui);
  color:var(--muted);
}
.dm-filters__commune label{ flex:none; }
.dm-filters__commune select{ flex:1; min-width:0; }
@media (min-width:1040px){
  .dm-filters__commune{ padding-top:16px; }
  .dm-filters__commune form{ font-size:13px; }
  .dm-filters__commune select{ flex:none; min-width:240px; }
}

/* Légende de liste */
.dm-legend{
  max-width:var(--wrap);
  margin-inline:auto;
  display:flex;
  align-items:baseline;
  gap:12px;
  padding:14px var(--gutter) 0;
  flex-wrap:wrap;
}
.dm-legend__text{ font:italic 400 13px var(--font-edito); color:var(--muted); }
.dm-legend__rule{ display:none; }
.dm-legend__hint{ font:400 12px var(--font-ui); color:var(--muted); flex:none; }
@media (min-width:1040px){
  .dm-legend{ padding:18px var(--gutter) 0; flex-wrap:nowrap; }
  .dm-legend__text{ font-size:14px; }
  .dm-legend__rule{ display:block; flex:1; border-bottom:1px dotted var(--dotted); }
}

/* Pagination */
.dm-pagination{
  max-width:var(--wrap);
  margin-inline:auto;
  padding:20px var(--gutter) 30px;
  display:flex;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
  font:400 13px var(--font-ui);
}
.dm-pagination__label{ font:italic 400 13px var(--font-edito); color:var(--muted); }
.dm-pagination .page-numbers{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:34px;
  min-height:34px;
  padding:5px 10px;
  border:1px solid var(--border-ui);
  font:500 13px var(--font-ui);
  color:var(--ink);
}
.dm-pagination .page-numbers:hover{ border-color:var(--gold); color:var(--gold-hover); }
.dm-pagination .page-numbers.current{
  background:var(--green-btn);
  border-color:var(--green-btn);
  color:var(--panel);
}
.dm-pagination .page-numbers.dots{ border:0; color:var(--muted); min-width:0; padding:5px 2px; }
.dm-pagination .next,.dm-pagination .prev{
  border:0;
  text-decoration:underline;
  text-underline-offset:4px;
  padding:5px 0;
  margin-left:6px;
}
.dm-pagination .next:hover,.dm-pagination .prev:hover{ border:0; }

/* ================= 12. ANNUAIRE : GRILLE & CARTES ====================== */
.dm-cards{
  max-width:var(--wrap);
  margin-inline:auto;
  padding:14px var(--gutter) 24px;
  display:grid;
  gap:16px;
}
@media (min-width:700px){ .dm-cards{ grid-template-columns:repeat(2,1fr); gap:22px; padding-block:16px 8px; } }
@media (min-width:1040px){ .dm-cards{ grid-template-columns:repeat(3,1fr); gap:26px; } }

.dm-card{
  display:flex;
  flex-direction:column;
  background:var(--panel);
  border:1px solid var(--rule);
  transition:border-color .15s ease;
}
.dm-card:hover{ border-color:var(--gold); }
.dm-card.is-or{ border-top:3px solid var(--gold); }
.dm-card__media{ position:relative; height:130px; overflow:hidden; }
.dm-card__media img{ width:100%; height:100%; object-fit:cover; }
.dm-card__media--empty{
  background:var(--panel-soft);
  display:flex;
  align-items:center;
  justify-content:center;
  font:italic 400 12px var(--font-edito);
  color:var(--muted-2);
}
/* Logo en vignette : posé entier sur le fond, jamais rogné ni étiré. Un logo
   recadré au format de la carte perd son texte, et c'est bien son texte qui
   porte le nom de l'entreprise. */
.dm-card__media--logo{ background:var(--panel-soft); }
.dm-card__media--logo a{
  display:flex;
  align-items:center;
  justify-content:center;
  width:100%;
  height:100%;
  padding:14px 18px;
}
.dm-card__media--logo img{
  width:auto;
  height:auto;
  max-width:100%;
  max-height:100%;
  object-fit:contain;
}
.dm-card__badge{ position:absolute; top:10px; left:10px; font-size:9px; letter-spacing:.16em; padding:4px 8px; }
.dm-card__body{ padding:14px 16px 16px; display:flex; flex-direction:column; flex:1; }
.dm-card__title{ font:500 18px var(--font-title); color:var(--ink); margin:0; }
.dm-card__title a:hover{ color:var(--gold-hover); }
.dm-card__meta{ font:400 11.5px var(--font-ui); color:var(--muted); margin:2px 0 0; }
.dm-card__text{ font:400 13px/1.5 var(--font-ui); color:var(--text-3); margin:8px 0 0; }
.dm-card__tel{ font:500 14.5px var(--font-edito); color:var(--ink); margin-top:7px; display:inline-block; }
.dm-card__tel:hover{ color:var(--gold-hover); }
.dm-card__foot{
  display:flex;
  align-items:baseline;
  gap:12px;
  margin-top:auto;
  padding-top:9px;
  border-top:1px dotted var(--dotted);
}
.dm-card__reco{ font:italic 400 12px var(--font-edito); color:var(--gold); }
.dm-card__more{ margin-left:auto; }
@media (min-width:700px){
  .dm-card__media{ height:150px; }
  .dm-card__body{ padding:16px 18px 18px; }
  .dm-card__title{ font-size:20px; }
  .dm-card__meta{ font-size:12.5px; margin-top:3px; }
  .dm-card__tel{ font-size:15.5px; margin-top:9px; }
  .dm-card__foot{ margin-top:12px; padding-top:10px; }
  .dm-card__reco{ font-size:12.5px; }
  .dm-card__badge{ font-size:9.5px; letter-spacing:.18em; padding:4px 9px; }
}

.dm-empty{
  max-width:var(--wrap);
  margin-inline:auto;
  padding:40px var(--gutter) 60px;
  font:400 16px/1.7 var(--font-edito);
  color:var(--text-3);
}

/* =================== 13. FICHE PROFESSIONNELLE ========================= */
.dm-pro-head{ background:var(--panel); border-bottom:1px solid var(--rule); }
.dm-pro-head__inner{
  max-width:var(--wrap);
  margin-inline:auto;
  padding:16px var(--gutter) 18px;
}
.dm-pro-head__main{ margin-top:14px; }
.dm-pro-head__logo{
  width:84px; height:84px; flex:none;
  border:1px solid var(--rule-3);
  background:var(--panel-soft);
  display:none;
  align-items:center;
  justify-content:center;
  padding:6px;
}
.dm-pro-head__logo img{ max-width:100%; max-height:100%; width:auto; object-fit:contain; }
.dm-pro-title{
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
}
.dm-pro-title h1{ margin:0; font:500 24px/1.15 var(--font-title); color:var(--ink); }
.dm-pro-head__meta{ font:400 12.5px var(--font-ui); color:var(--muted); margin-top:5px; }
.dm-pro-head__status{
  display:flex;
  align-items:center;
  gap:7px;
  margin-top:7px;
  font:500 12px var(--font-ui);
  color:var(--text-3);
}
.dm-pro-head__status i{
  width:8px; height:8px;
  border-radius:50%;
  background:var(--status-open);
  flex:none;
  /* Un halo léger : la pastille se repère sans grossir. */
  box-shadow:0 0 0 3px rgba(47,107,65,.18);
}
.dm-pro-head__status.is-closed i{
  background:var(--status-closed);
  box-shadow:none;
}
/* Le texte suit la pastille, sinon seule la couleur porte l'information. */
.dm-pro-head__status{ color:var(--status-open); font-weight:600; }
.dm-pro-head__status.is-closed{ color:var(--text-3); font-weight:500; }
.dm-pro-head__reco{ font:italic 400 13px var(--font-edito); color:var(--gold); margin:5px 0 0; }
.dm-pro-head__recoline{ margin-top:5px; display:flex; flex-wrap:wrap; align-items:baseline; gap:6px 14px; }
.dm-pro-head__aside .dm-pro-head__status{ display:none; }
.dm-pro-head__actions{ display:flex; gap:10px; margin-top:14px; }
.dm-pro-head__actions > *{ flex:1; }
.dm-pro-head__socials{
  display:flex;
  justify-content:center;
  gap:16px;
  margin-top:10px;
  font:500 12.5px var(--font-ui);
}
.dm-pro-head__socials a{ text-decoration:underline; text-underline-offset:3px; }
.dm-pro-head__tel-lg{ display:none; }

@media (min-width:1040px){
  .dm-pro-head__inner{ padding:30px var(--gutter) 24px; }
  .dm-pro-head__main{ display:flex; align-items:center; gap:24px; }
  .dm-pro-head__logo{ display:flex; }
  .dm-pro-head__id{ flex:1; min-width:0; }
  .dm-pro-title h1{ font-size:36px; line-height:1.1; }
  .dm-pro-title{ gap:14px; }
  .dm-pro-head__meta{ font-size:14px; margin-top:6px; }
  .dm-pro-head__reco{ font-size:14px; }
  .dm-pro-head__recoline{ display:flex; align-items:baseline; gap:18px; margin-top:8px; }
  .dm-pro-head__recoline .dm-pro-head__reco{ margin:0; }
  .dm-pro-head__aside{ text-align:right; flex:none; }
  .dm-pro-head__id .dm-pro-head__status{ display:none; }
  .dm-pro-head__aside .dm-pro-head__status{ display:flex; justify-content:flex-end; margin:0 0 6px; }
  .dm-pro-head__tel-lg{
    display:block;
    font:500 26px var(--font-edito);
    color:var(--ink);
  }
  .dm-pro-head__tel-lg:hover{ color:var(--gold-hover); }
  .dm-pro-head__socials{ justify-content:flex-end; gap:14px; margin-top:6px; font-size:13px; }
  .dm-pro-head__actions{ display:none; }
}

/* Galerie 3×2, 6 vignettes max */
.dm-gallery{
  max-width:var(--wrap);
  margin-inline:auto;
  padding:12px var(--gutter) 0;
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:5px;
}
.dm-gallery__item{ position:relative; height:74px; overflow:hidden; }
.dm-gallery__item img{ width:100%; height:100%; object-fit:cover; }
.dm-gallery__note{
  position:absolute;
  right:8px; bottom:8px;
  background:rgba(20,25,18,.72);
  color:var(--panel);
  font:500 11px var(--font-ui);
  padding:4px 9px;
}
/* Moins de trois photos : on répartit sur ce qui existe plutôt que de laisser
   des colonnes vides. Une seule photo devient une bande, deux se partagent la
   largeur. La hauteur grandit à mesure que la largeur se réduit, pour que le
   recadrage reste supportable. */
.dm-gallery--1{ grid-template-columns:1fr; }
.dm-gallery--2{ grid-template-columns:repeat(2,1fr); }
.dm-gallery--1 .dm-gallery__item{ height:190px; }
.dm-gallery--2 .dm-gallery__item{ height:120px; }

@media (min-width:700px){
  .dm-gallery{ gap:8px; padding-top:20px; }
  .dm-gallery__item{ height:168px; }
  .dm-gallery--1 .dm-gallery__item{ height:320px; }
  .dm-gallery--2 .dm-gallery__item{ height:240px; }
}

.dm-pro-body{
  max-width:var(--wrap);
  margin-inline:auto;
  padding:20px var(--gutter) 30px;
  display:grid;
  gap:24px;
}
@media (min-width:1040px){
  .dm-pro-body{ grid-template-columns:1.5fr 1fr; gap:44px; padding:30px var(--gutter) 40px; }
}
.dm-pro-desc{ font:400 14px/1.7 var(--font-edito); color:var(--text-body); }
@media (min-width:700px){ .dm-pro-desc{ font-size:15.5px; line-height:1.75; } }
.dm-pro-tags{ display:flex; gap:10px; margin-top:16px; flex-wrap:wrap; }

/* Panneau infos pratiques */
.dm-infos{
  background:var(--panel-accent);
  border:1px solid var(--rule-3);
  padding:16px 18px;
}
@media (min-width:700px){ .dm-infos{ padding:22px 24px; } }
.dm-infos__title{
  font:600 9.5px var(--font-ui);
  letter-spacing:.2em;
  text-transform:uppercase;
  color:var(--gold);
}
.dm-hours{ margin-top:6px; }
.dm-hours__row{
  display:flex;
  justify-content:space-between;
  gap:10px;
  padding:9px 0;
  border-bottom:1px dotted var(--dotted);
  font:400 12.5px var(--font-ui);
  color:var(--ink);
}
.dm-hours__row:last-child{ border-bottom:0; }
.dm-hours__row span:first-child{ color:var(--muted); }
.dm-hours__row.is-today{ font-weight:600; }
.dm-hours__row.is-today span:first-child{ color:var(--gold); }
@media (min-width:700px){
  .dm-hours{ margin-top:10px; }
  .dm-hours__row{ padding:10px 0; font-size:13.5px; gap:12px; }
}
.dm-infos__list{
  border-top:1px solid var(--rule-2);
  margin-top:8px;
  padding-top:16px;
  display:flex;
  flex-direction:column;
  gap:9px;
  font:400 14px var(--font-ui);
  color:var(--ink);
}
.dm-infos__list dt{ display:inline; color:var(--muted); }
.dm-infos__list dd{ display:inline; margin:0; }
.dm-infos__list a{ text-decoration:underline; text-underline-offset:3px; }
.dm-infos__cta{ display:flex; margin-top:18px; }

.dm-editorial-note{
  border:1px solid var(--rule);
  padding:18px 22px;
  margin-top:18px;
}
.dm-editorial-note p{ font:italic 400 14px/1.6 var(--font-edito); color:var(--text-3); margin:0; }

/* Recommandations */
.dm-reco{ margin-top:26px; }
.dm-reco__head{
  display:flex;
  align-items:baseline;
  gap:10px;
  flex-wrap:wrap;
  border-top:2px solid var(--ink);
  padding-top:12px;
}
.dm-reco__head h2{
  margin:0;
  font:500 18px var(--font-title);
  color:var(--ink);
}
.dm-reco__count{ font:italic 400 12px var(--font-edito); color:var(--muted); }
@media (min-width:700px){
  .dm-reco{ margin-top:34px; }
  .dm-reco__head{ gap:14px; padding-top:14px; }
  .dm-reco__head h2{
    display:inline-block;
    border:1.5px solid var(--ink);
    padding:7px 15px;
    font-size:30px;
  }
  .dm-reco__count{ font-size:14px; }
}
.dm-reco__list{ list-style:none; margin:0; padding:0; }
.dm-reco__list .children{ list-style:none; margin:0; padding:0; }
.dm-reco__item{ padding:12px 0; border-bottom:1px dotted var(--dotted); list-style:none; }
.dm-reco__meta{ display:flex; align-items:baseline; gap:8px; flex-wrap:wrap; }
.dm-reco__author{ font:500 13.5px var(--font-title); color:var(--ink); }
.dm-reco__place{ font:400 12px var(--font-ui); color:var(--muted-2); }
.dm-reco__flag{ margin-left:auto; font:italic 400 11.5px var(--font-edito); color:var(--gold); }
.dm-reco__text{ margin:5px 0 0; font:italic 400 13.5px/1.55 var(--font-edito); color:var(--text-body); }
.dm-reco__reply{
  margin:10px 0 0 22px;
  border-left:2px solid var(--rule-2);
  padding:2px 0 2px 14px;
  list-style:none;
}
.dm-reco__reply-label{
  font:600 9.5px var(--font-ui);
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--gold);
}
.dm-reco__reply .dm-reco__text{ font-size:13.5px; color:var(--text-3); }
@media (min-width:700px){
  .dm-reco__item{ padding:16px 0; }
  .dm-reco__author{ font-size:15px; }
  .dm-reco__text{ font-size:15px; line-height:1.6; margin-top:7px; }
}
.dm-reco__actions{ display:flex; gap:10px; align-items:center; margin-top:14px; flex-wrap:wrap; }
.dm-reco__actions .dm-btn--ghost{ flex:1; }
@media (min-width:700px){
  .dm-reco__actions{ gap:16px; margin-top:18px; }
  .dm-reco__actions .dm-btn--ghost{ flex:none; }
}
.dm-reco-form{ margin-top:22px; padding-top:18px; border-top:1px dotted var(--dotted); }
.dm-reco-form__title{ font:500 18px var(--font-title); color:var(--ink); margin:0 0 4px; }
.dm-reco-form .dm-note{ margin-bottom:12px; }
/* « Vous publiez sous le nom … » : une information de service, discrète, qui ne
   doit pas se lire comme une consigne du formulaire. */
.dm-reco-form__as{
  margin:0 0 14px;
  font:400 12.5px/1.6 var(--font-ui);
  color:var(--muted);
}
.dm-reco-form__as strong{ font-weight:600; color:var(--text-3); }
.dm-reco-form__as a{ text-decoration:underline; text-underline-offset:3px; }
/* Le lien « annuler la réponse » n'apparaît qu'en mode réponse : il ne doit
   pas peser autant que le titre auquel WordPress l'accroche. */
.dm-reco-form__title #cancel-comment-reply-link{
  margin-left:10px;
  font:400 12.5px var(--font-ui);
  color:var(--muted);
  text-decoration:underline;
  text-underline-offset:3px;
}

/* ============== 14. ÉVÉNEMENTS : AGENDA & CALENDRIER =================== */
.dm-viewswitch{ display:flex; margin-top:14px; border:1px solid var(--border-ui); }
.dm-viewswitch button{
  flex:1;
  min-height:var(--tap);
  background:transparent;
  border:0;
  font:500 12.5px var(--font-ui);
  color:#3f4a3c;
  cursor:pointer;
}
.dm-viewswitch button.is-active{ background:var(--green-btn); color:var(--panel); font-weight:600; }
@media (min-width:1040px){ .dm-viewswitch{ display:none; } }

.dm-agenda{
  max-width:var(--wrap);
  margin-inline:auto;
  padding:16px var(--gutter) 24px;
  display:grid;
  gap:24px;
}
@media (min-width:1040px){
  .dm-agenda{ grid-template-columns:1.45fr 1fr; gap:44px; padding:30px var(--gutter) 42px; }
  /* Sur grand écran les deux panneaux coexistent : la bascule ne s'applique plus. */
  .dm-agenda > [data-dm-panel]{ display:block !important; }
}
.dm-agenda__month{
  font:600 10px var(--font-ui);
  letter-spacing:.2em;
  text-transform:uppercase;
  color:var(--gold);
  border-bottom:2px solid var(--ink);
  padding-bottom:7px;
  margin-top:22px;
}
.dm-agenda__month:first-child{ margin-top:0; }
@media (min-width:700px){ .dm-agenda__month{ font-size:11px; letter-spacing:.24em; padding-bottom:8px; margin-top:30px; } }

/* Événement du jour, en encart photo */
.dm-today-event{
  border:1px solid var(--rule-3);
  background:var(--panel);
  margin-bottom:16px;
}
.dm-today-event__media{ position:relative; height:110px; overflow:hidden; }
.dm-today-event__media img{ width:100%; height:100%; object-fit:cover; }
.dm-today-event__flag{
  position:absolute; top:8px; left:8px;
  background:var(--green-btn);
  color:var(--panel);
  font:600 8.5px var(--font-ui);
  letter-spacing:.14em;
  text-transform:uppercase;
  padding:4px 8px;
}
.dm-today-event__body{ padding:12px 14px 14px; }
.dm-today-event__title{ font:500 16.5px var(--font-title); color:var(--ink); margin:0; }
.dm-today-event__meta{ font:400 11.5px var(--font-ui); color:var(--muted); margin-top:3px; }
.dm-today-event__text{ font:400 13.5px/1.55 var(--font-ui); color:var(--text-3); margin:7px 0 0; }
.dm-today-event__links{ display:flex; gap:18px; margin-top:12px; flex-wrap:wrap; }
@media (min-width:1040px){
  .dm-today-event{ display:grid; grid-template-columns:220px 1fr; margin-top:16px; }
  .dm-today-event__media{ height:auto; min-height:158px; }
  .dm-today-event__body{ padding:18px 22px 16px; }
  .dm-today-event__title{ font-size:21px; }
  .dm-today-event__meta{ font-size:13px; margin-top:5px; }
}

/* Ligne d'agenda */
.dm-event-row{
  display:flex;
  gap:14px;
  padding:14px 0;
  border-bottom:1px dotted var(--dotted);
}
.dm-event-row__date{
  flex:none;
  width:52px;
  text-align:center;
  border:1px solid var(--rule-3);
  background:var(--panel);
  padding:6px 0;
  align-self:flex-start;
}
.dm-event-row__day{ font:500 21px var(--font-edito); color:var(--ink); }
.dm-event-row__month{
  font:600 8.5px var(--font-ui);
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--gold);
}
.dm-event-row__body{ min-width:0; flex:1; }
.dm-event-row__title{ font:500 18px var(--font-title); color:var(--ink); margin:0; }
.dm-event-row__meta{ font:400 13.5px/1.5 var(--font-ui); color:var(--muted); margin-top:4px; }
.dm-event-row__type{
  font:600 9px var(--font-ui);
  letter-spacing:.14em;
  text-transform:uppercase;
  color:#3f4a3c;
  border:1px solid var(--border-ui);
  padding:3px 8px;
  flex:none;
  white-space:nowrap;
}
.dm-event-row__more{ display:none; }
@media (min-width:700px){
  .dm-event-row{ gap:22px; padding:22px 0; }
  .dm-event-row__date{ width:64px; padding:8px 0; }
  .dm-event-row__day{ font-size:26px; }
  .dm-event-row__month{ font-size:9.5px; letter-spacing:.16em; }
  .dm-event-row__head{ display:flex; align-items:baseline; gap:12px; flex-wrap:wrap; }
  .dm-event-row__title{ font-size:22px; }
  .dm-event-row__meta{ font-size:15px; margin-top:5px; }
  .dm-event-row__more{
    display:block;
    align-self:center;
    flex:none;
    font:500 13px var(--font-ui);
    color:var(--ink);
    text-decoration:underline;
    text-underline-offset:4px;
  }
}

/* Calendrier mensuel */
.dm-calendar{
  border:1px solid var(--rule-3);
  background:var(--panel);
  padding:18px 20px;
}
.dm-calendar__nav{
  display:flex;
  align-items:baseline;
  justify-content:space-between;
  gap:10px;
}
.dm-calendar__nav a{ font:400 15px var(--font-edito); color:var(--muted); }
.dm-calendar__nav a:hover{ color:var(--gold-hover); }
.dm-calendar__title{ font:500 19px var(--font-title); color:var(--ink); }
.dm-calendar__dows,
.dm-calendar__grid{
  display:grid;
  grid-template-columns:repeat(7,1fr);
  gap:4px;
  text-align:center;
}
.dm-calendar__dows{
  margin-top:14px;
  font:600 9.5px var(--font-ui);
  letter-spacing:.1em;
  color:var(--muted-2);
}
.dm-calendar__grid{ margin-top:6px; font:400 12.5px var(--font-ui); color:var(--ink); }
.dm-calendar__grid span,
.dm-calendar__grid a{
  display:block;
  padding:7px 0;
  min-height:32px;
}
.dm-calendar__grid a.has-event{
  background:var(--green-btn);
  color:var(--panel);
  font-weight:600;
}
.dm-calendar__grid a.has-event:hover{ background:var(--green-btn-hover); color:var(--panel); }
.dm-calendar__grid .is-today{ outline:2px solid var(--gold); outline-offset:-2px; }
.dm-calendar__grid .is-out{ color:var(--muted-2); }
.dm-calendar__legend{
  display:flex;
  align-items:center;
  gap:16px;
  margin-top:14px;
  border-top:1px dotted var(--dotted);
  padding-top:12px;
  flex-wrap:wrap;
}
.dm-calendar__legend span{ display:flex; align-items:center; gap:7px; font:italic 400 12.5px var(--font-edito); color:var(--muted); }
.dm-calendar__legend i{ width:10px; height:10px; flex:none; background:var(--green-btn); }
.dm-calendar__legend i.is-today-key{ background:transparent; border:2px solid var(--gold); }

.dm-promo{
  border:1px solid var(--rule);
  padding:18px 20px;
  margin-top:18px;
}
.dm-promo__title{ font:500 18px var(--font-title); color:var(--ink); margin:0; }
.dm-promo p{ margin:6px 0 12px; font:400 13px/1.55 var(--font-ui); color:var(--text-3); }

/* Fiche événement */
.dm-event-single__media{ max-width:var(--wrap); margin-inline:auto; padding:0 var(--gutter); }
.dm-event-single__media img{ width:100%; max-height:420px; object-fit:cover; border-radius:var(--radius-photo); }
.dm-event-facts{
  display:grid;
  gap:0;
  border:1px solid var(--rule-3);
  background:var(--panel-accent);
  padding:16px 18px;
  margin-top:18px;
}
.dm-event-facts__row{
  display:flex;
  justify-content:space-between;
  gap:12px;
  padding:9px 0;
  border-bottom:1px dotted var(--dotted);
  font:400 13.5px var(--font-ui);
}
.dm-event-facts__row:last-child{ border-bottom:0; }
.dm-event-facts__row dt{ color:var(--muted); margin:0; }
.dm-event-facts__row dd{ margin:0; text-align:right; color:var(--ink); }

/* ========================= 15. MARCHÉS ================================= */
.dm-markets-head{ background:var(--panel); border-bottom:1px solid var(--rule); }
.dm-markets-head__photo{ height:150px; overflow:hidden; }
.dm-markets-head__photo img{ width:100%; height:100%; object-fit:cover; }
.dm-markets-head__inner{ padding:18px var(--gutter) 14px; }
.dm-markets-head__text{
  margin:8px 0 0;
  font:400 13.5px/1.6 var(--font-edito);
  color:var(--text-3);
  max-width:560px;
}
.dm-weekbar{ display:flex; gap:5px; margin-top:14px; }
.dm-weekbar__day{
  flex:1;
  text-align:center;
  border:1px solid var(--rule);
  color:var(--muted-2);
  font:500 11px var(--font-ui);
  padding:7px 0;
  min-height:34px;
}
.dm-weekbar__day.has-market{
  background:var(--green-btn);
  border-color:var(--green-btn);
  color:var(--panel);
  font-weight:600;
}
.dm-weekbar__day.is-today{ outline:2px solid var(--gold); outline-offset:2px; }
.dm-weekbar__note{ display:none; }
@media (min-width:1040px){
  .dm-markets-head__inner{ padding:38px var(--gutter) 30px; }
  .dm-markets-head__wrap{
    max-width:var(--wrap);
    margin-inline:auto;
    display:grid;
    grid-template-columns:1fr 380px;
  }
  .dm-markets-head__photo{ height:auto; border-left:1px solid var(--rule); order:2; }
  .dm-markets-head__text{ font-size:15px; line-height:1.65; margin-top:12px; }
  .dm-weekbar{ align-items:center; gap:6px; margin-top:18px; }
  .dm-weekbar__day{ flex:none; width:34px; height:34px; display:flex; align-items:center; justify-content:center; font-size:12px; padding:0; }
  .dm-weekbar__note{
    display:inline;
    font:italic 400 13px var(--font-edito);
    color:var(--muted);
    margin-left:10px;
  }
}

.dm-today-market{
  background:var(--green-btn);
  padding:14px var(--gutter);
}
.dm-today-market__inner{ max-width:var(--wrap); margin-inline:auto; }
.dm-today-market__label{
  font:600 9px var(--font-ui);
  letter-spacing:.22em;
  text-transform:uppercase;
  color:var(--gold-on-dark);
  flex:none;
}
.dm-today-market__text{
  font:400 14.5px/1.5 var(--font-edito);
  color:var(--panel);
  margin-top:5px;
}
@media (min-width:1040px){
  .dm-today-market{ margin:24px auto 0; max-width:calc(var(--wrap) - 2 * var(--gutter)); padding:14px 22px; }
  .dm-today-market__inner{ display:flex; align-items:center; gap:16px; }
  .dm-today-market__label{ font-size:9.5px; }
  .dm-today-market__text{ margin-top:0; font-size:15px; }
  .dm-today-market__link{ margin-left:auto; flex:none; color:var(--panel); }
}

.dm-markets{
  max-width:var(--wrap);
  margin-inline:auto;
  padding:14px var(--gutter) 22px;
}
.dm-market-row{
  padding:14px 0;
  border-bottom:1px dotted var(--dotted);
}
.dm-market-row.is-today{
  background:var(--panel);
  border-left:3px solid var(--gold);
  padding-left:12px;
}
.dm-market-row__head{ display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; }
.dm-market-row__day{ font:500 22px var(--font-title); color:var(--ink); }
.dm-market-row__hours{
  margin-left:auto;
  font:400 17px var(--font-title);
  letter-spacing:.01em;
  color:var(--gold-deep);
  white-space:nowrap;
}
.dm-market-row__place{ font:500 17px var(--font-title); color:var(--ink); margin-top:6px; }
.dm-market-row__text{ font:400 14px/1.6 var(--font-ui); color:var(--text-3); margin-top:5px; }
.dm-market-row__flag{ font-size:8px; padding:3px 7px; letter-spacing:.14em; }
@media (min-width:1040px){
  .dm-markets{ padding:12px var(--gutter) 8px; }
  .dm-market-row{
    display:flex;
    gap:22px;
    align-items:flex-start;
    padding:22px 0;
    border-bottom:1px solid var(--rule);
  }
  .dm-market-row.is-today{ padding:22px 18px; border-bottom:0; }
  .dm-market-row__head{ flex:none; width:190px; display:block; }
  .dm-market-row__day{ font-size:28px; display:block; }
  .dm-market-row__hours{
    display:block;
    margin:3px 0 0;
    font-size:20px;
    letter-spacing:.01em;
  }
  .dm-market-row.is-today .dm-market-row__hours{ margin-top:3px; }
  .dm-market-row__flag{ display:inline-block; margin-top:6px; font-size:8.5px; letter-spacing:.16em; }
  .dm-market-row__body{ flex:1; }
  .dm-market-row__place{ font-size:23px; margin-top:0; }
  .dm-market-row__text{ font-size:16px; line-height:1.6; margin-top:6px; }
}
.dm-markets__nodays{
  max-width:var(--wrap);
  margin-inline:auto;
  padding:0 var(--gutter);
  font:italic 400 12.5px var(--font-edito);
  color:var(--muted-2);
  margin-top:12px;
}
.dm-markets__notice{
  max-width:var(--wrap);
  margin:14px auto 30px;
  border:1px solid var(--rule);
  padding:13px 15px;
}
.dm-markets__notice p{ font:italic 400 13px/1.5 var(--font-edito); color:var(--text-3); margin:0; }
@media (min-width:1040px){
  .dm-markets__notice{
    display:flex;
    align-items:center;
    gap:20px;
    padding:16px 24px;
    margin:16px auto 36px;
    max-width:calc(var(--wrap) - 2 * var(--gutter));
  }
  .dm-markets__notice p{ font-size:14px; }
  .dm-markets__notice a{ margin-left:auto; white-space:nowrap; }
}

/* ============= 16. ACTUALITÉS, RECHERCHE, 404 ========================== */
.dm-article{
  max-width:var(--wrap);
  margin-inline:auto;
  padding:24px var(--gutter) 40px;
}
.dm-article__body{ max-width:720px; }
.dm-article__body p,
.dm-article__body li{ font:400 16px/1.75 var(--font-edito); color:var(--text-body); }
.dm-article__body h2{ font-size:26px; margin-top:1.4em; }
.dm-article__body h3{ font-size:21px; margin-top:1.3em; }
.dm-article__body blockquote{
  margin:1.4em 0;
  padding-left:16px;
  border-left:2px solid var(--gold);
  font:italic 400 17px/1.6 var(--font-edito);
  color:#55604f;
}
.dm-article__body img{ border-radius:var(--radius-photo); margin-block:1.2em; }
.dm-article__body a{ text-decoration:underline; text-underline-offset:3px; }
.dm-article__date{
  font:600 10px var(--font-ui);
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--gold);
}

.dm-postlist{
  max-width:var(--wrap);
  margin-inline:auto;
  padding:14px var(--gutter) 30px;
}
.dm-postlist__item{
  display:flex;
  gap:16px;
  padding:18px 0;
  border-bottom:1px dotted var(--dotted);
}
.dm-postlist__thumb{ width:96px; height:72px; flex:none; overflow:hidden; border-radius:var(--radius-photo); }
.dm-postlist__thumb img{ width:100%; height:100%; object-fit:cover; }
.dm-postlist__title{ font:600 18px var(--font-title); color:var(--ink); margin:4px 0 0; }
.dm-postlist__excerpt{ font:400 13.5px/1.55 var(--font-ui); color:var(--text-3); margin:5px 0 0; }
@media (min-width:700px){
  .dm-postlist__thumb{ width:180px; height:120px; }
  .dm-postlist__title{ font-size:22px; }
}

.dm-404{
  max-width:var(--wrap);
  margin-inline:auto;
  padding:60px var(--gutter) 80px;
  text-align:center;
}
.dm-404 h1{ font-size:38px; }
.dm-404 p{ font:400 17px/1.7 var(--font-edito); color:var(--text-3); max-width:520px; margin-inline:auto; }
.dm-404__actions{ display:flex; gap:12px; justify-content:center; flex-wrap:wrap; margin-top:22px; }

/* ============== 17. ACCESSIBILITÉ & IMPRESSION ========================= */
.screen-reader-text{
  position:absolute !important;
  width:1px; height:1px;
  margin:-1px; padding:0;
  overflow:hidden;
  clip:rect(0 0 0 0);
  clip-path:inset(50%);
  white-space:nowrap;
  border:0;
}
.dm-skip{
  position:absolute;
  left:-9999px;
  z-index:999;
  background:var(--gold-light);
  color:var(--green-top);
  padding:12px 18px;
  font:600 13px var(--font-ui);
}
.dm-skip:focus{ left:8px; top:8px; }

:focus-visible{ outline:2px solid var(--gold); outline-offset:2px; }

.dm-hidden{ display:none !important; }

@media (prefers-reduced-motion:reduce){
  *{ animation-duration:.001ms !important; transition-duration:.001ms !important; scroll-behavior:auto !important; }
}

@media print{
  .dm-partners,.dm-header,.dm-nav,.dm-cookies,.dm-footer__legal,.dm-viewswitch,.dm-pagination{ display:none !important; }
  body{ background:#fff; }
  .dm-card,.dm-infos{ break-inside:avoid; }
}

/* Blocs WordPress alignés */
.alignwide{ max-width:1100px; }
.alignfull{ max-width:none; }
.aligncenter{ margin-inline:auto; }
.alignleft{ float:left; margin:0 1.4em 1em 0; }
.alignright{ float:right; margin:0 0 1em 1.4em; }
.wp-caption-text,.wp-element-caption{
  font:italic 400 13px var(--font-edito);
  color:var(--muted);
  margin-top:6px;
}

/* Brouillon légal non publié : visible de la seule équipe éditoriale. */
.dm-footer__draft{
  color:var(--gold-lighter);
  text-decoration:underline;
  text-underline-offset:3px;
}

/* ---------------------------------------------- Pages légales ------------ */
/* Mentions et conditions : un texte long, dense, que personne ne lit en entier.
   La mise en forme sert donc à s'y repérer — un sommaire, des titres qui se
   détachent, les coordonnées dans des blocs qu'on repère d'un coup d'œil. */
.dm-legal{ max-width:680px; }
.dm-legal h2{
  position:relative;
  padding-top:18px;
  margin-top:2em;
  font-size:22px;
  scroll-margin-top:90px;   /* l'en-tête collant ne doit pas masquer la cible */
}
.dm-legal h2::before{
  content:"";
  position:absolute;
  top:0;
  left:0;
  width:34px;
  height:2px;
  background:var(--gold);
}
.dm-legal h2:first-of-type{ margin-top:1em; }

/* Sommaire construit à partir des titres de la page. */
.dm-legal-toc{
  margin:0 0 34px;
  padding:20px 24px;
  background:var(--panel-soft);
  border-top:2px solid var(--gold);
}
.dm-legal-toc__title{
  margin:0 0 10px;
  font:600 10.5px var(--font-ui);
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--gold);
}
.dm-legal-toc ol{
  margin:0;
  padding-left:20px;
  columns:2;
  column-gap:28px;
}
.dm-legal-toc li{ margin-bottom:5px; break-inside:avoid; }
.dm-legal-toc a{
  font:400 14px/1.5 var(--font-ui);
  color:var(--text-body);
  text-decoration:none;
}
.dm-legal-toc a:hover{ color:var(--gold-hover); text-decoration:underline; text-underline-offset:3px; }
@media (max-width:640px){
  .dm-legal-toc ol{ columns:1; }
}

/* Coordonnées : éditeur, hébergeur, concepteur. */
.dm-legal-card{
  margin:1.1em 0 1.6em;
  padding:16px 20px;
  background:var(--panel-soft);
  border-left:2px solid var(--rule-3);
}
.dm-legal-card p{ margin:0; }
.dm-legal-card p + p{ margin-top:10px; }

.dm-legal-updated{
  margin-top:2.4em;
  padding-top:14px;
  border-top:1px dotted var(--dotted);
  font:italic 400 14px var(--font-edito);
  color:var(--muted);
}

/* Rappel des mentions manquantes, en tête des pages légales. Il se voit assez
   pour qu'on ne publie pas la page sans l'avoir traité, et se supprime comme
   n'importe quel paragraphe dans l'éditeur. */
.dm-legal-todo{
  margin:0 0 32px;
  padding:20px 24px;
  border-left:3px solid var(--gold);
  background:rgba(176,141,63,.07);
  font-family:var(--font-ui);
  font-size:.9375rem;
  line-height:1.6;
}
.dm-legal-todo p{ margin:0; }
.dm-legal-todo ul{
  margin:10px 0;
  padding-left:20px;
}
.dm-legal-todo li{ margin-bottom:4px; }
.dm-legal-todo p:last-child{
  margin-top:10px;
  font-size:.875rem;
  opacity:.75;
}

/* ============== 20. VISIONNEUSE DES PHOTOS DE FICHE ==================== */
/* Cliquer sur une photo ouvrait le fichier image, hors du site. On agrandit
   sur place, et l'on passe d'une photo à l'autre sans quitter la fiche. */

/* Indice de survol : la photo est cliquable, il faut que ça se voie. */
.dm-gallery__item a{ display:block; width:100%; height:100%; position:relative; }
.dm-gallery__item img{ transition:transform .35s ease; }
.dm-gallery__item a:hover img,
.dm-gallery__item a:focus-visible img{ transform:scale(1.04); }
.dm-gallery__zoom{
  position:absolute;
  right:8px; bottom:8px;
  width:26px; height:26px;
  background:rgba(20,25,18,.62);
  opacity:0;
  transition:opacity .25s ease;
  pointer-events:none;
}
/* Une loupe dessinée en CSS : pas d'image à charger, pas de police d'icônes. */
.dm-gallery__zoom::before{
  content:"";
  position:absolute;
  top:7px; left:7px;
  width:9px; height:9px;
  border:1.5px solid #fff;
  border-radius:50%;
}
.dm-gallery__zoom::after{
  content:"";
  position:absolute;
  top:16px; left:16px;
  width:6px; height:1.5px;
  background:#fff;
  transform:rotate(45deg);
  transform-origin:left center;
}
.dm-gallery__item a:hover .dm-gallery__zoom,
.dm-gallery__item a:focus-visible .dm-gallery__zoom{ opacity:1; }

/* Pendant l'ouverture, la page derrière ne défile plus. */
.dm-noscroll, .dm-noscroll body{ overflow:hidden; }

.dm-lightbox{
  position:fixed;
  inset:0;
  z-index:1000;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  padding:56px 12px 64px;
  background:rgba(16,26,20,.94);
  animation:dm-lb-in .2s ease;
}
.dm-lightbox[hidden]{ display:none; }

.dm-lightbox__stage{
  margin:0;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:14px;
  max-width:100%;
  max-height:100%;
}
.dm-lightbox__img{
  display:block;
  max-width:100%;
  max-height:calc(100vh - 150px);
  width:auto; height:auto;
  object-fit:contain;
}
.dm-lightbox__caption{
  max-width:60ch;
  font:italic 400 14px/1.6 var(--font-edito);
  color:rgba(255,255,255,.78);
  text-align:center;
}
.dm-lightbox__caption[hidden]{ display:none; }

.dm-lightbox__count{
  position:absolute;
  left:0; right:0; bottom:20px;
  margin:0;
  text-align:center;
  font:500 12px var(--font-ui);
  letter-spacing:.14em;
  color:rgba(255,255,255,.68);
}

/* Boutons : cibles d'au moins 44px, la taille d'un doigt. */
.dm-lightbox__nav,
.dm-lightbox__close{
  flex:none;
  display:flex;
  align-items:center;
  justify-content:center;
  width:46px; height:46px;
  padding:0;
  background:rgba(255,255,255,.09);
  border:1px solid rgba(255,255,255,.2);
  border-radius:0;
  color:#fff;
  cursor:pointer;
  transition:background .2s ease, border-color .2s ease;
}
.dm-lightbox__nav{ font-size:26px; line-height:1; }
.dm-lightbox__close{ position:absolute; top:14px; right:14px; font-size:16px; }
.dm-lightbox__nav:hover,
.dm-lightbox__close:hover{ background:rgba(255,255,255,.18); border-color:var(--gold-lighter); }
.dm-lightbox__nav:focus-visible,
.dm-lightbox__close:focus-visible{ outline:2px solid var(--gold-lighter); outline-offset:2px; }
.dm-lightbox__nav[hidden],
.dm-lightbox__count[hidden]{ display:none; }

@keyframes dm-lb-in{ from{ opacity:0; } to{ opacity:1; } }

@media (max-width:700px){
  .dm-lightbox{ padding:56px 8px 76px; gap:4px; }
  /* Sur mobile les flèches passent en bas : elles mangeraient la photo sur
     les côtés, et le glissement du doigt suffit à changer d'image. */
  .dm-lightbox__nav{ position:absolute; bottom:16px; width:44px; height:44px; }
  .dm-lightbox__nav--prev{ left:16px; }
  .dm-lightbox__nav--next{ right:16px; }
  .dm-lightbox__count{ bottom:30px; }
  .dm-lightbox__img{ max-height:calc(100vh - 190px); }
}

@media (prefers-reduced-motion:reduce){
  .dm-lightbox{ animation:none; }
  .dm-gallery__item img{ transition:none; }
  .dm-gallery__item a:hover img{ transform:none; }
}

/* ============== 21. PAGE D'UN MARCHÉ =================================== */
/* Un marché tient en quatre informations. Plutôt que de les répéter dans une
   colonne « en pratique », on les donne une fois, en grand, et l'on remplit la
   page avec ce que le site sait déjà : les commerces de la commune et les
   marchés des autres jours. */

.dm-market-head{
  background:var(--panel);
  border-bottom:1px solid var(--rule);
}
.dm-market-head.is-today{ background:var(--panel-accent); }
.dm-market-head__inner{
  max-width:var(--wrap);
  margin-inline:auto;
  padding:16px var(--gutter) 22px;
}
.dm-market-head__main{ margin-top:12px; }

.dm-market-head__day{
  margin:0;
  font:600 11px var(--font-ui);
  letter-spacing:.22em;
  color:var(--gold);
}
.dm-market-head__title{
  margin:6px 0 0;
  font:400 34px/1.12 var(--font-title);
  color:var(--ink);
}
.dm-market-head__place{
  margin:6px 0 0;
  font:italic 400 18px var(--font-edito);
  color:var(--text-3);
}

.dm-market-head__when{ margin-top:18px; }
.dm-market-head__hours{
  margin:0;
  font:400 30px var(--font-title);
  color:var(--ink);
  letter-spacing:.01em;
}
.dm-market-head__next{
  margin:4px 0 0;
  font:italic 400 15px var(--font-edito);
  color:var(--muted);
}
.dm-market-head__next.is-today{
  font-style:normal;
  font-weight:600;
  color:var(--status-open);
}
.dm-market-head__map{ margin-top:14px; width:100%; }

.dm-market-photo{
  max-width:var(--wrap);
  margin-inline:auto;
  padding:18px var(--gutter) 0;
}
.dm-market-photo img{ width:100%; height:220px; object-fit:cover; display:block; }

.dm-market-intro{
  max-width:var(--wrap);
  margin-inline:auto;
  padding:22px var(--gutter) 0;
}
.dm-market-intro__text{ max-width:62ch; }
.dm-market-intro__text p{
  font:400 18px/1.65 var(--font-edito);
  color:var(--text-body);
  margin:0 0 .8em;
}

/* Blocs de rattachement au reste du site. */
.dm-market-block{
  max-width:var(--wrap);
  margin-inline:auto;
  padding:30px var(--gutter) 0;
}
.dm-market-block__head{
  display:flex;
  align-items:baseline;
  justify-content:space-between;
  gap:16px;
  flex-wrap:wrap;
  border-bottom:1px solid var(--rule);
  padding-bottom:10px;
  margin-bottom:16px;
}
.dm-market-block__head h2{ margin:0; font-size:23px; }

.dm-market-pros{ display:grid; gap:12px; }
.dm-market-pro{
  background:var(--panel);
  border:1px solid var(--rule);
  padding:14px 16px;
}
.dm-market-pro__name{ margin:0; font:500 18px var(--font-title); color:var(--ink); }
.dm-market-pro__name a:hover{ color:var(--gold-hover); }
.dm-market-pro__meta{ margin:3px 0 0; font:400 13px var(--font-ui); color:var(--muted); }
.dm-market-pro__tel{
  display:inline-block;
  margin-top:8px;
  font:500 16px var(--font-edito);
  color:var(--ink);
}
.dm-market-pro__tel:hover{ color:var(--gold-hover); }

.dm-market-week{ display:grid; gap:10px; }
.dm-market-week__item{
  display:block;
  padding:14px 16px;
  border:1px solid var(--rule);
  background:var(--panel);
}
.dm-market-week__item:hover{ border-color:var(--gold); }
.dm-market-week__item.is-today{ border-left:3px solid var(--gold); background:var(--panel-accent); }
.dm-market-week__day{
  display:block;
  font:600 10.5px var(--font-ui);
  letter-spacing:.2em;
  color:var(--gold);
}
.dm-market-week__place{
  display:block;
  margin-top:4px;
  font:500 19px var(--font-title);
  color:var(--ink);
}
.dm-market-week__where{
  display:block;
  margin-top:2px;
  font:italic 400 14px var(--font-edito);
  color:var(--text-3);
}
.dm-market-week__hours{
  display:block;
  margin-top:6px;
  font:400 16px var(--font-title);
  color:var(--ink);
}

.dm-market-foot{
  max-width:var(--wrap);
  margin:34px auto 40px;
  padding:16px var(--gutter) 0;
  border-top:1px solid var(--rule);
}
.dm-market-foot .dm-note{ margin:0 0 6px; font-size:14px; }

@media (min-width:700px){
  .dm-market-pros{ grid-template-columns:repeat(2,1fr); gap:14px; }
  .dm-market-week{ grid-template-columns:repeat(2,1fr); }
  .dm-market-photo img{ height:300px; }
}

@media (min-width:1040px){
  .dm-market-head__inner{ padding:20px var(--gutter) 30px; }
  .dm-market-head__main{
    display:flex;
    align-items:flex-end;
    justify-content:space-between;
    gap:40px;
    margin-top:16px;
  }
  .dm-market-head__title{ font-size:48px; }
  .dm-market-head__place{ font-size:21px; }
  .dm-market-head__when{
    flex:none;
    text-align:right;
    margin-top:0;
  }
  .dm-market-head__hours{ font-size:38px; }
  .dm-market-head__map{ width:auto; }
  .dm-market-photo img{ height:380px; }
  .dm-market-intro__text p{ font-size:19px; }
  .dm-market-block{ padding-top:38px; }
  .dm-market-block__head h2{ font-size:26px; }
  .dm-market-pros{ grid-template-columns:repeat(4,1fr); }
  .dm-market-week{ grid-template-columns:repeat(4,1fr); gap:12px; }
}

/* ============== 22. PAGE D'UN ÉVÉNEMENT ================================ */
/* L'image d'un événement est presque toujours une affiche : format portrait,
   pleine de texte, souvent scannée. Elle ne se recadre pas, elle se lit. On la
   montre donc entière et on la rend agrandissable. */

.dm-event-past{
  margin:10px 0 0;
  font:italic 400 14px var(--font-edito);
  color:var(--muted);
}

.dm-event-main{
  max-width:var(--wrap);
  margin-inline:auto;
  padding:20px var(--gutter) 0;
  display:grid;
  gap:22px;
}

/* L'affiche : jamais rognée, posée sur un fond qui absorbe le format. */
.dm-event-affiche{
  margin:0 auto;
  /* Bornee en largeur comme en hauteur : une affiche se regarde, elle ne
     s'etale pas. Le detail se lit en cliquant. */
  max-width:300px;
  width:100%;
}
/* Verticale : c'est la hauteur qui la borne. Horizontale : la largeur. */
.dm-event-affiche.is-paysage{ max-width:100%; }
.dm-event-affiche a{
  display:flex;
  align-items:center;
  justify-content:center;
  background:var(--panel-soft);
  border:1px solid var(--rule);
  padding:8px;
  position:relative;
}
.dm-event-affiche img{
  display:block;
  width:auto;
  height:auto;
  max-width:100%;
  max-height:400px;
  object-fit:contain;
  transition:transform .35s ease;
}
.dm-event-affiche a:hover img,
.dm-event-affiche a:focus-visible img{ transform:scale(1.02); }
.dm-event-affiche__zoom{
  position:absolute;
  right:16px; bottom:16px;
  width:30px; height:30px;
  background:rgba(20,25,18,.66);
  opacity:0;
  transition:opacity .25s ease;
  pointer-events:none;
}
.dm-event-affiche__zoom::before{
  content:"";
  position:absolute;
  top:8px; left:8px;
  width:10px; height:10px;
  border:1.6px solid #fff;
  border-radius:50%;
}
.dm-event-affiche__zoom::after{
  content:"";
  position:absolute;
  top:18px; left:18px;
  width:7px; height:1.6px;
  background:#fff;
  transform:rotate(45deg);
  transform-origin:left center;
}
.dm-event-affiche a:hover .dm-event-affiche__zoom,
.dm-event-affiche a:focus-visible .dm-event-affiche__zoom{ opacity:1; }
.dm-event-affiche__hint{
  margin-top:7px;
  font:italic 400 12.5px var(--font-edito);
  color:var(--muted);
  text-align:center;
}

/* Les informations pratiques, à côté de l'affiche. */
.dm-event-side{ display:flex; flex-direction:column; gap:16px; }

.dm-event-when{
  border-top:2px solid var(--gold);
  padding-top:12px;
}
.dm-event-when__day{
  margin:0;
  font:600 11px var(--font-ui);
  letter-spacing:.2em;
  color:var(--gold);
}
.dm-event-when__hours{
  margin:6px 0 0;
  font:400 30px var(--font-title);
  color:var(--ink);
}

.dm-event-where__place{
  margin:0;
  font:italic 400 17px/1.5 var(--font-edito);
  color:var(--text-3);
}
.dm-event-where__map{ margin-top:11px; width:100%; }

.dm-event-facts{
  display:grid;
  gap:0;
  border:1px solid var(--rule-3);
  background:var(--panel);
  padding:14px 16px;
  margin:0;
}
.dm-event-ics{ width:100%; }

.dm-event-intro{
  max-width:var(--wrap);
  margin-inline:auto;
  padding:26px var(--gutter) 0;
}
.dm-event-intro__text{ max-width:62ch; }
.dm-event-intro__text p{
  font:400 18px/1.65 var(--font-edito);
  color:var(--text-body);
  margin:0 0 .8em;
}

@media (min-width:1040px){
  .dm-event-main{
    padding:28px var(--gutter) 0;
    gap:40px;
  }
  /* L'affiche impose sa hauteur, les informations l'occupent. */
  /* Colonne de largeur fixe pour l'affiche : les informations pratiques
     prennent tout le reste, la page ne bascule plus autour de l'image. */
  .dm-event-main.has-affiche{ grid-template-columns:minmax(0,auto) 1fr; align-items:start; }
  .dm-event-affiche{ max-width:340px; }
  .dm-event-affiche.is-paysage{ max-width:440px; }
  .dm-event-affiche img{ max-height:470px; }
  .dm-event-affiche.is-paysage img{ max-height:300px; }
  .dm-event-when__hours{ font-size:36px; }
  .dm-event-where__place{ font-size:18px; }
  .dm-event-where__map,
  .dm-event-ics{ width:auto; }
  .dm-event-intro__text p{ font-size:19px; }
}
/* ============== 23. ACTUALITÉS ========================================= */
/* Rubrique volontairement généraliste : nouvelles du territoire, offres
   d'emploi, portraits, vie associative. Ce sont les articles natifs de
   WordPress, classés par catégorie, donc la rédaction fait évoluer les
   rubriques sans que le thème bouge.

   La page reprend la grammaire de l'agenda : un article en tête, une liste
   rythmée par les mois, une colonne de côté. Les vignettes ne sont jamais
   rognées : une offre d'emploi arrive souvent sous forme d'affiche
   verticale, comme les affiches d'événement. */

.dm-news-desc{
  margin-top:12px;
  max-width:62ch;
  font:italic 400 15px/1.6 var(--font-edito);
  color:var(--text-3);
}

.dm-news-filters{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  padding-top:16px;
}
.dm-news-filters .dm-chip__count{
  margin-left:6px;
  opacity:.6;
  font-size:.85em;
}

/* Deux colonnes, comme l'agenda ------------------------------------- */
.dm-news-layout{
  max-width:var(--wrap);
  margin-inline:auto;
  padding:16px var(--gutter) 24px;
  display:grid;
  gap:24px;
}
.dm-news-layout__aside{
  display:flex;
  flex-direction:column;
  gap:18px;
}

/* L'article de tête -------------------------------------------------- */
.dm-news-lead{
  display:grid;
  gap:0;
  background:var(--panel);
  border:1px solid var(--rule);
}
.dm-news-lead__media{
  display:flex;
  align-items:center;
  justify-content:center;
  background:var(--panel-soft);
  border-bottom:1px solid var(--rule);
  overflow:hidden;
  padding:10px;
  height:230px;
}
.dm-news-lead__media img{
  width:auto;
  height:auto;
  max-width:100%;
  max-height:100%;
  object-fit:contain;
  transition:transform .35s ease;
}
.dm-news-lead__media:hover img{ transform:scale(1.03); }
.dm-news-lead__media.is-portrait{ height:300px; }

.dm-news-lead__body{ padding:18px 20px 22px; }
.dm-news-lead__flag{
  background:var(--gold);
  color:var(--panel);
  font:600 10px var(--font-ui);
  letter-spacing:.16em;
  padding:3px 8px;
}
.dm-news-lead__title{
  margin:10px 0 0;
  font:500 26px/1.2 var(--font-title);
  color:var(--ink);
}
.dm-news-lead__title a:hover{ color:var(--gold-hover); }
.dm-news-lead__text{
  margin:10px 0 0;
  font:400 16px/1.65 var(--font-edito);
  color:var(--text-body);
}
.dm-news-lead__more{ margin-top:16px; }

/* Le rythme par mois, repris de l'agenda ----------------------------- */
.dm-news__month{ grid-column:1 / -1; }

/* La liste ----------------------------------------------------------- */
.dm-news{
  margin-top:20px;
  display:grid;
  gap:18px;
}

.dm-news-card{
  display:flex;
  flex-direction:column;
  background:var(--panel);
  border:1px solid var(--rule);
}

/* La vignette suit le format du fichier : verticale pour une affiche,
   horizontale pour une photo. */
.dm-news-card__media{
  display:flex;
  align-items:center;
  justify-content:center;
  background:var(--panel-soft);
  border-bottom:1px solid var(--rule);
  overflow:hidden;
  padding:8px;
}
.dm-news-card__media img{
  width:auto;
  height:auto;
  max-width:100%;
  max-height:100%;
  object-fit:contain;
  transition:transform .35s ease;
}
.dm-news-card__media:hover img{ transform:scale(1.03); }
.dm-news-card__media.is-paysage{ height:180px; }
.dm-news-card__media.is-portrait{ height:300px; }

.dm-news-card__body{
  padding:16px 18px 18px;
  display:flex;
  flex-direction:column;
  flex:1;
}
.dm-news-card__meta{
  margin:0;
  display:flex;
  flex-wrap:wrap;
  align-items:baseline;
  gap:10px;
}
.dm-news-card__rubrique{
  font:600 10px var(--font-ui);
  letter-spacing:.18em;
  color:var(--gold);
}
a.dm-news-card__rubrique:hover{ color:var(--gold-hover); text-decoration:underline; text-underline-offset:3px; }
.dm-news-card__date{
  font:italic 400 13px var(--font-edito);
  color:var(--muted);
}
.dm-news-card__title{
  margin:8px 0 0;
  font:500 21px/1.25 var(--font-title);
  color:var(--ink);
}
.dm-news-card__title a:hover{ color:var(--gold-hover); }
.dm-news-card__commune{
  margin:5px 0 0;
  font:400 13.5px var(--font-ui);
  color:var(--text-3);
}
.dm-news-card__text{
  margin:9px 0 0;
  font:400 14.5px/1.6 var(--font-ui);
  color:var(--text-3);
}
.dm-news-card__more{ margin-top:auto; padding-top:12px; }

/* La colonne de côté -------------------------------------------------- */
.dm-news-aside{
  border:1px solid var(--rule);
  padding:16px 18px 6px;
}
.dm-news-aside .dm-market-block__head{ padding:0; margin-bottom:6px; }
.dm-news-aside .dm-datelist__title{ font-size:16.5px; }
.dm-news-aside .dm-datelist__item{ padding:11px 0; }

/* L'état vide --------------------------------------------------------- */
.dm-empty__title{
  font:500 22px var(--font-title);
  color:var(--ink);
  margin:0 0 6px;
}

/* Une publication ---------------------------------------------------- */
.dm-news-single{
  max-width:var(--wrap);
  margin-inline:auto;
  padding:22px var(--gutter) 0;
  display:grid;
  gap:24px;
}
.dm-news-single__media{
  margin:0 auto;
  max-width:300px;
  width:100%;
}
.dm-news-single__media.is-paysage{ max-width:100%; }
.dm-news-single__media a{
  display:flex;
  align-items:center;
  justify-content:center;
  background:var(--panel-soft);
  border:1px solid var(--rule);
  padding:8px;
  position:relative;
}
.dm-news-single__media img{
  display:block;
  width:auto;
  height:auto;
  max-width:100%;
  max-height:400px;
  object-fit:contain;
  transition:transform .35s ease;
}
.dm-news-single__media a:hover img{ transform:scale(1.02); }
.dm-news-single__media a:hover .dm-event-affiche__zoom{ opacity:1; }

.dm-news-single__body{ max-width:66ch; }
.dm-news-single__body p{
  font:400 17.5px/1.7 var(--font-edito);
  color:var(--text-body);
  margin:0 0 1em;
}
.dm-news-single__body h2{ font-size:25px; margin-top:1.4em; }
.dm-news-single__body h3{ font-size:20px; margin-top:1.3em; }
.dm-news-single__body ul,
.dm-news-single__body ol{ margin:0 0 1em; padding-left:22px; }
.dm-news-single__body li{
  font:400 17px/1.7 var(--font-edito);
  color:var(--text-body);
  margin-bottom:5px;
}
.dm-news-single__body a{ text-decoration:underline; text-underline-offset:3px; }
.dm-news-single__body img{ max-width:100%; height:auto; margin-block:1.2em; }
.dm-news-single__rubrique{ margin:16px 0 0; }

/* L'appel à l'action : répondre à une offre, ou écrire à la rédaction. */
.dm-news-cta{
  margin-top:26px;
  border:1px solid var(--rule);
  border-left:3px solid var(--rule);
  padding:16px 18px 18px;
  background:var(--panel);
}
.dm-news-cta.is-emploi{ border-left-color:var(--gold); background:var(--panel-soft); }
.dm-news-cta__title{
  margin:0;
  font:500 19px var(--font-title);
  color:var(--ink);
}
.dm-news-cta__text{
  margin:6px 0 13px;
  font:400 14.5px/1.6 var(--font-ui);
  color:var(--text-3);
}

/* Publication précédente / suivante ----------------------------------- */
.dm-news-nav{
  max-width:var(--wrap);
  margin-inline:auto;
  padding:28px var(--gutter) 0;
  display:grid;
  gap:12px;
}
.dm-news-nav__item{
  border:1px solid var(--rule);
  padding:13px 16px;
  display:block;
  background:var(--panel);
}
.dm-news-nav__item:hover{ border-color:var(--ink); }
.dm-news-nav__sens{
  display:block;
  font:600 10px var(--font-ui);
  letter-spacing:.16em;
  text-transform:uppercase;
  color:var(--muted);
}
.dm-news-nav__titre{
  display:block;
  margin-top:5px;
  font:500 17px/1.3 var(--font-title);
  color:var(--ink);
}

@media (min-width:700px){
  .dm-news{ grid-template-columns:repeat(2,1fr); gap:20px; }
  .dm-news-card__media.is-paysage{ height:200px; }
  .dm-news-card__media.is-portrait{ height:340px; }
  .dm-news-nav{ grid-template-columns:1fr 1fr; gap:16px; }
  .dm-news-nav__item--fin{ text-align:right; }

  /* L'article de tête passe en deux colonnes dès qu'il y a la place, mais
     seulement s'il a une image : sans elle, le texte se retrouverait coincé
     dans la colonne étroite prévue pour la photo. */
  .dm-news-lead.has-image{ grid-template-columns:300px 1fr; align-items:stretch; }
  .dm-news-lead__media{ height:auto; min-height:210px; border-bottom:0; border-right:1px solid var(--rule); }
  .dm-news-lead__media.is-portrait{ height:auto; }
  .dm-news-lead__media img{ max-height:340px; }
  .dm-news-lead__body{ padding:22px 24px 24px; align-self:center; }
  .dm-news-lead__title{ font-size:29px; }
}

@media (min-width:1040px){
  .dm-news-layout{ grid-template-columns:1.55fr 1fr; gap:44px; padding:30px var(--gutter) 42px; }
  .dm-news-filters{ padding-top:20px; gap:10px; }
  .dm-news-card__title{ font-size:22px; }
  .dm-news-lead__title{ font-size:31px; }

  /* L'image tient sa colonne, le texte prend le reste. */
  .dm-news-single{ padding:30px var(--gutter) 0; gap:40px; }
  .dm-news-single.has-image{ grid-template-columns:340px 1fr; align-items:start; }
  /* Une photo en largeur a besoin d'une colonne plus large que l'affiche
     verticale, sans quoi elle reste bridée à 340px quoi qu'en dise sa
     largeur maximale. L'orientation est donc portée aussi par la grille. */
  .dm-news-single.has-image.is-paysage{ grid-template-columns:440px 1fr; }
  .dm-news-single__media{ max-width:340px; }
  .dm-news-single__media.is-paysage{ max-width:440px; }
  .dm-news-single__media img{ max-height:470px; }
  .dm-news-single__media.is-paysage img{ max-height:300px; }
  .dm-news-single__body p{ font-size:18px; }
}
/* ============== 24. TÉLÉPHONE ========================================== */
/* La plupart des visiteurs arrivent par téléphone. Cette section ne corrige
   que ce qui gêne au doigt et sur petit écran : rien n'y change le rendu
   au-dessus de 700 px, sauf la première règle, qui est une correction de
   débordement et non un choix de mise en page. */

/*
 * Un élément de grille a « min-width: auto » : sa largeur minimale est celle
 * de son contenu. Une photo de 768 px ou un logo de 585 px y imposait donc sa
 * taille d'origine, la grille s'élargissait, et le téléphone affichait la
 * page entière rétrécie pour la faire tenir — texte deux fois trop petit,
 * sur toutes les pages. « min-width: 0 » rend la main au conteneur.
 *
 * Cette règle ne peut qu'empêcher un débordement : une mise en page qui
 * tenait déjà ne bouge pas.
 */
/*
 * Le carrousel des partenaires défile dans son cadre, mais sa largeur interne
 * (998 px pour six partenaires) était malgré tout comptée dans la largeur
 * minimale du document. Le téléphone affichait donc TOUTE la page rétrécie
 * pour la faire tenir : 724 px ramenés à 360, soit un texte deux fois trop
 * petit, sur chaque page du site. « overflow » ne suffisait pas ; « contain »
 * retire son contenu de ce calcul sans rien changer à son défilement.
 */
.dm-partners__track { contain: content; }

/*
 * Meme piege pour les grilles de cartes : un element de grille a
 * « min-width: auto », sa largeur minimale est donc celle de son contenu. Un
 * logo de 585 px imposait sa taille et la page annuaire debordait de 2 276 px,
 * y compris sur ordinateur.
 */
.dm-cards > * { min-width: 0; }

/*
 * Les vignettes d'actualite ont le meme defaut, mais seulement sur les
 * largeurs ou la grille est etroite. Au-dela de 1 040 px la mise en page
 * tenait deja : on n'y touche pas.
 */
@media (max-width: 1039.98px) {
  .dm-news > * { min-width: 0; }
}

/*
 * Ce qui suit vise le doigt, pas la largeur d'écran : une tablette tactile de
 * 768 px a besoin des mêmes cibles qu'un téléphone, alors qu'un ordinateur
 * à la souris n'en a aucun besoin. « pointer: coarse » décrit exactement
 * cela, et laisse donc le rendu bureau intact quelle que soit la fenêtre.
 */
@media (max-width: 699.98px), (pointer: coarse) {

  /*
   * Sous 16 px, iOS Safari agrandit la page dès qu'on touche un champ, et ne
   * la remet jamais droite. Les champs du formulaire sont déjà à 17 px ; la
   * barre de recherche et le tri de l'annuaire, eux, héritaient de la taille
   * par défaut du navigateur.
   */
  .dm-search__input,
  .dm-filters__sort select,
  .dm-filters__commune select,
  input, select, textarea { font-size: 16px; }

  .dm-search__input { min-height: 44px; }
  .dm-filters__sort select,
  .dm-filters__commune select { min-height: 44px; padding-block: 4px; }

  /* Les pastilles de filtre sont la navigation principale sur téléphone. */
  .dm-chip { min-height: 44px; padding: 9px 15px; }

  /* Le bandeau doré : appeler est l'action la plus utile depuis un mobile. */
  .dm-partner__link,
  .dm-partner__call { min-height: 44px; }
  .dm-partner__call { display: inline-flex; align-items: center; justify-content: center; }

  /*
   * Téléphone et courriel : ce sont des actions, pas du texte. Elles doivent
   * se toucher sans viser.
   */
  .dm-card__tel,
  .dm-card__ailleurs a,
  .dm-market-pro__tel,
  .dm-contact__mail,
  .dm-pro-actions a {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
  }

  /* Les liens de navigation et de pied de page, trop fins au doigt. */
  .dm-breadcrumb a,
  .dm-footer__nav a,
  .dm-footer__legal a,
  .dm-footer__cookies,
  .dm-link {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
  }

  /* Un libellé court comme « CGV » ne fait que 21 px de large : la hauteur
     ne suffit pas, il faut aussi de quoi poser le doigt. */
  .dm-footer__legal a,
  .dm-footer__cookies { padding-inline: 8px; }

  /* Le bouton d'un formulaire doit rester confortable. */
  input.dm-btn,
  button.dm-btn,
  .dm-btn { min-height: 44px; font-size: 16px; }

  /* Les numéros de page se visent au doigt, ils faisaient 34 px. */
  .dm-pagination .page-numbers { min-width: 44px; min-height: 44px; }
  .dm-pagination .page-numbers.dots { min-width: 0; }

  /*
   * Titres de liste et noms d'adresse : ce sont les liens sur lesquels on
   * tape le plus, et ils ne faisaient que la hauteur de leur ligne de texte.
   */
  .dm-datelist__title,
  .dm-event-row__more,
  .dm-carnet__name,
  .dm-news-card__rubrique,
  .dm-event-row__type,
  .dm-event-facts__row a,
  .dm-infos__list a,
  .dm-pro-head__socials a,
  .dm-pro-links a {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
  }
}

/* ============== 25. ENCADRE VIDE COMPACT =============================== */
/* Le message court affiche quand une liste ne contient encore rien. */
.dm-empty--compact{ padding:14px 0 4px; max-width:none; }
.dm-empty--compact .dm-empty__title{ margin-bottom:2px; }
.dm-empty--compact p{ margin:0; }

/* ============== 26. ASSOCIATIONS ======================================= */
/* Même carte que l'annuaire, à une différence près qui compte : une
   association a rarement un logo ou une photo. Réserver 130 px de vide en
   haut de chaque carte donnait une page qui semblait inachevée. Sans visuel,
   la vignette devient donc un simple bandeau portant le domaine, ce qui se
   lit comme un choix et non comme un manque. */

.dm-card--asso .dm-card__media--empty{
  height:auto;
  padding:9px 16px;
  justify-content:flex-start;
  background:var(--green-btn);
  border-bottom:0;
}
.dm-card--asso .dm-card__media--empty span{
  font:600 10px var(--font-ui);
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--gold-light);
  font-style:normal;
}

/* Le référent prend la place du compteur de recommandations. */
.dm-card--asso .dm-card__reco{ font-style:italic; }

/* La photo d'une association, sur sa page */
.dm-asso-photo{ margin:0 0 18px; }
.dm-asso-photo img{ width:100%; height:auto; display:block; }

/* L'appel à inscription, en bas de la liste */
.dm-asso-cta{ padding-bottom:34px; }
.dm-promo--large{ margin-top:0; }
.dm-promo--large .dm-promo__title{ font-size:20px; }
.dm-promo--large p{ max-width:62ch; }

/* Une fiche venue d'une commune voisine, dans la même grille -------------- */
/* Elle garde la carte de l'annuaire : pour le visiteur c'est une adresse du
   secteur, pas une suggestion de second rang. Seule sa commune et sa distance
   la situent, en petit sous le nom. */
.dm-card__ailleurs{
  margin:5px 0 0;
  display:flex;
  flex-wrap:wrap;
  align-items:baseline;
  gap:8px;
  font:400 13px var(--font-ui);
}
.dm-card__ailleurs a{ color:var(--green-btn); text-decoration:underline; text-underline-offset:3px; }
.dm-card__ailleurs a:hover{ color:var(--gold-hover); }
.dm-card__km{
  font:600 10px var(--font-ui);
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--gold);
}
.dm-cards__note{
  max-width:var(--wrap);
  margin:0 auto;
  padding:0 var(--gutter) 6px;
  font:italic 400 13.5px var(--font-edito);
  color:var(--muted);
}
