/* EzWeb — mise en page commune à tous les thèmes.
   Les thèmes (theme.css) et les réglages du site (site.css) ne changent que les variables. */

:root {
  --ez-primaire: #1f2933;
  --ez-secondaire: #52606d;
  --ez-accent: #0f62ae;
  --ez-fond: #ffffff;
  --ez-surface: #f5f7fa;
  --ez-texte: #1f2933;
  --ez-texte-doux: #52606d;
  --ez-bord: #d9e2ec;
  --ez-sur-primaire: #ffffff;
  --ez-sur-accent: #ffffff;
  --ez-avertissement: #b54708;
  --ez-sur-avertissement: #ffffff;
  --ez-alerte-fond: #fdecea;
  --ez-alerte-texte: #8a1c13;
  --ez-ombre: rgb(0 0 0 / .08);
  --ez-marqueur-fond: #fff3b0;
  --ez-marqueur-texte: #6b4e00;
  --ez-police-secours: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --ez-police-secours-serif: Georgia, "Times New Roman", serif;
  --ez-police-titres: var(--ez-police-secours);
  --ez-police-texte: var(--ez-police-secours);
  --ez-rayon: 8px;
  --ez-densite: 1;
  --ez-espace: calc(1.5rem * var(--ez-densite));
  --ez-largeur: 72rem;
  --ez-hauteur-entete: 4.25rem;
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
body {
  margin: 0;
  background: var(--ez-fond);
  color: var(--ez-texte);
  font-family: var(--ez-police-texte);
  font-size: 1.0625rem;
  line-height: 1.6;
  overflow-wrap: break-word;
}
img { max-width: 100%; height: auto; display: block; }
h1, h2, h3, h4 { font-family: var(--ez-police-titres); line-height: 1.2; margin: 0 0 .6em; color: var(--ez-primaire); }
h1 { font-size: clamp(2rem, 1.4rem + 2.6vw, 3rem); }
h2 { font-size: clamp(1.5rem, 1.2rem + 1.3vw, 2rem); }
h3 { font-size: 1.2rem; }
/* Titres d'éléments remontés en h2 sur les pages de liste : même taille qu'un h3. */
:is(.ez-carte, .ez-evenement, .ez-personne, .ez-offre, .ez-publication, .ez-competence, .ez-chronologie) h2 { font-size: 1.2rem; font-style: normal; }
.ez-contenu :is(.ez-carte, .ez-evenement, .ez-personne, .ez-offre, .ez-publication, .ez-competence, .ez-chronologie) h2::after { content: none; }
p, ul, ol, dl { margin: 0 0 1em; }
a { color: var(--ez-accent); text-underline-offset: .15em; }
a:hover { text-decoration-thickness: 2px; }
:focus-visible { outline: 3px solid var(--ez-accent); outline-offset: 2px; }

.ez-masque { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.ez-conteneur { width: 100%; max-width: var(--ez-largeur); margin: 0 auto; padding: 0 1rem; }
@media (min-width: 48rem) { .ez-conteneur { padding: 0 1.5rem; } }

/* Lien d'évitement */
.ez-evitement { position: absolute; left: 1rem; top: -4rem; z-index: 100; background: var(--ez-primaire); color: var(--ez-sur-primaire); padding: .6rem 1rem; border-radius: var(--ez-rayon); }
.ez-evitement:focus { top: 1rem; }

/* Repère des informations manquantes */
.ez-a-completer { background: var(--ez-marqueur-fond); color: var(--ez-marqueur-texte); padding: 0 .3em; border-radius: 3px; font-weight: 600; font-size: .9em; }
.ez-image-manquante { display: flex; align-items: center; justify-content: center; gap: .5rem; min-height: 12rem; background: repeating-linear-gradient(45deg, var(--ez-surface), var(--ez-surface) 12px, var(--ez-fond) 12px, var(--ez-fond) 24px); border: 2px dashed var(--ez-bord); border-radius: var(--ez-rayon); color: var(--ez-texte-doux); text-align: center; padding: 1rem; }

/* En-tête et menu */
.ez-entete { position: sticky; top: 0; z-index: 50; background: var(--ez-fond); border-bottom: 1px solid var(--ez-bord); }
.ez-entete-ligne { display: flex; align-items: center; gap: 1rem; min-height: var(--ez-hauteur-entete); }
.ez-marque { display: flex; align-items: center; text-decoration: none; color: var(--ez-primaire); font-family: var(--ez-police-titres); font-weight: 700; font-size: 1.2rem; margin-right: auto; }
.ez-logo { max-height: 2.75rem; width: auto; margin-right: .6rem; }
@media (max-width: 30rem) { .ez-nom-site { font-size: 1rem; } }
.ez-menu { display: flex; align-items: center; gap: 1.25rem; }
.ez-navigation ul, .ez-langues ul { list-style: none; margin: 0; padding: 0; }
.ez-navigation > ul { display: flex; flex-wrap: wrap; gap: .25rem; }
.ez-navigation li { position: relative; }
.ez-navigation a { display: block; padding: .5rem .6rem; border-radius: var(--ez-rayon); color: var(--ez-texte); text-decoration: none; font-weight: 500; }
.ez-navigation a:hover { background: var(--ez-surface); }
.ez-navigation a[aria-current="page"], .ez-navigation a[aria-current="true"], .ez-navigation .ez-actif > a { color: var(--ez-accent); }
.ez-a-sous-menu { display: flex; align-items: center; }
.ez-bouton-sous-menu { border: 0; background: transparent; width: 1.75rem; height: 1.75rem; margin-left: -.4rem; cursor: pointer; border-radius: var(--ez-rayon); color: var(--ez-texte); }
.ez-bouton-sous-menu::before { content: ""; display: inline-block; width: .45rem; height: .45rem; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: translateY(-2px) rotate(45deg); }
.ez-bouton-sous-menu[aria-expanded="true"]::before { transform: translateY(1px) rotate(-135deg); }
.ez-sous-menu { position: absolute; top: 100%; left: 0; min-width: 14rem; background: var(--ez-fond); border: 1px solid var(--ez-bord); border-radius: var(--ez-rayon); box-shadow: 0 8px 24px var(--ez-ombre); padding: .35rem; display: none; z-index: 60; }
.ez-a-sous-menu:hover > .ez-sous-menu, .ez-a-sous-menu:focus-within > .ez-sous-menu, .ez-bouton-sous-menu[aria-expanded="true"] + .ez-sous-menu { display: block; }
.js .ez-a-sous-menu:hover > .ez-sous-menu { display: block; }
.ez-langues ul { display: flex; gap: .25rem; }
.ez-langues a { display: block; padding: .3rem .5rem; font-size: .85rem; font-weight: 600; text-decoration: none; color: var(--ez-texte-doux); border: 1px solid transparent; border-radius: var(--ez-rayon); }
.ez-langues a[aria-current="true"] { color: var(--ez-primaire); border-color: var(--ez-bord); }
.ez-bouton-menu { display: none; border: 1px solid var(--ez-bord); background: var(--ez-fond); width: 2.75rem; height: 2.75rem; border-radius: var(--ez-rayon); cursor: pointer; color: var(--ez-texte); }
.ez-icone-menu, .ez-icone-menu::before, .ez-icone-menu::after { display: block; width: 1.25rem; height: 2px; background: currentColor; margin: 0 auto; position: relative; transition: transform .2s; }
.ez-icone-menu::before, .ez-icone-menu::after { content: ""; position: absolute; left: 0; }
.ez-icone-menu::before { top: -6px; } .ez-icone-menu::after { top: 6px; }
.ez-bouton-menu[aria-expanded="true"] .ez-icone-menu { background: transparent; }
.ez-bouton-menu[aria-expanded="true"] .ez-icone-menu::before { transform: translateY(6px) rotate(45deg); }
.ez-bouton-menu[aria-expanded="true"] .ez-icone-menu::after { transform: translateY(-6px) rotate(-45deg); }

/* Menu compact (« burger ») : activé par le script sur petit écran ou quand le menu ne tient pas sur une ligne. */
.ez-burger .ez-bouton-menu { display: block; }
.ez-burger .ez-entete-ligne { flex-wrap: wrap; }
.ez-burger .ez-menu { width: 100%; flex-direction: column; align-items: stretch; gap: .5rem; padding-bottom: 1rem; display: none; }
.ez-burger .ez-menu.ez-ouvert { display: flex; max-height: calc(100vh - var(--ez-hauteur-entete)); overflow-y: auto; }
.ez-burger .ez-navigation > ul { flex-direction: column; }
.ez-burger .ez-a-sous-menu { flex-wrap: wrap; }
.ez-burger .ez-a-sous-menu > a { flex: 1; }
.ez-burger .ez-bouton-sous-menu { width: 2.75rem; height: 2.75rem; margin: 0; }
.ez-burger .ez-sous-menu { position: static; width: 100%; box-shadow: none; border: 0; border-left: 2px solid var(--ez-bord); border-radius: 0; margin-left: .7rem; padding: 0 0 0 .5rem; }
.ez-burger .ez-a-sous-menu:hover > .ez-sous-menu, .ez-burger .ez-a-sous-menu:focus-within > .ez-sous-menu { display: none; }
.ez-burger .ez-a-sous-menu > .ez-bouton-sous-menu[aria-expanded="true"] + .ez-sous-menu { display: block; }
.ez-nom-site { white-space: nowrap; }

/* Contenu */
.ez-contenu:focus { outline: none; }
.ez-titre-page { max-width: var(--ez-largeur); margin: calc(var(--ez-espace) * 1.6) auto calc(var(--ez-espace) * .4); padding: 0 1rem; }
@media (min-width: 48rem) { .ez-titre-page { padding: 0 1.5rem; } }
.ez-bloc { padding: calc(var(--ez-espace) * 1.6) 0; }
.ez-bloc + .ez-bloc { padding-top: calc(var(--ez-espace) * .6); }
.ez-bloc-hero + .ez-bloc { padding-top: calc(var(--ez-espace) * 1.6); }
.ez-texte { max-width: 46rem; }
.ez-texte ul { padding-left: 1.25rem; }

/* Bannière */
.ez-bloc-hero { position: relative; padding: calc(var(--ez-espace) * 3) 0; background: var(--ez-surface); overflow: hidden; }
.ez-bloc-hero.ez-hero-avec-image { color: #fff; min-height: 24rem; display: flex; align-items: flex-end; }
.ez-hero-image { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.ez-hero-avec-image::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgb(0 0 0 / .05) 20%, rgb(0 0 0 / .62)); }
.ez-hero-avec-image .ez-conteneur { position: relative; z-index: 1; }
.ez-hero-avec-image h1, .ez-hero-avec-image h2 { color: #fff; }
.ez-hero-texte { max-width: 44rem; }
.ez-hero-sous-titre { font-size: 1.2rem; }
.ez-hero-avec-image .ez-hero-sous-titre { color: #fff; }

/* Boutons */
.ez-bouton { display: inline-block; background: var(--ez-accent); color: var(--ez-sur-accent); padding: .7rem 1.25rem; border-radius: var(--ez-rayon); text-decoration: none; font-weight: 600; border: 0; cursor: pointer; font: inherit; font-weight: 600; }
.ez-bouton:hover { filter: brightness(1.1); }
.ez-bouton-inactif { opacity: .8; cursor: default; }

/* Grilles et cartes */
.ez-grille { display: grid; gap: var(--ez-espace); grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr)); }
.ez-carte, .ez-tarif { background: var(--ez-fond); border: 1px solid var(--ez-bord); border-radius: var(--ez-rayon); overflow: hidden; display: flex; flex-direction: column; }
.ez-carte-image { aspect-ratio: 16 / 10; object-fit: cover; width: 100%; }
.ez-carte-corps, .ez-tarif { padding: calc(var(--ez-espace) * .9); }
.ez-carte-corps > :last-child, .ez-tarif > :last-child { margin-bottom: 0; }
.ez-tarif-prix { font-size: 1.6rem; font-weight: 700; color: var(--ez-primaire); }
.ez-grille-chiffres { grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr)); text-align: center; }
.ez-chiffre-valeur { display: block; font-family: var(--ez-police-titres); font-size: 2.4rem; font-weight: 700; color: var(--ez-accent); line-height: 1.1; }
.ez-chiffre-libelle { color: var(--ez-texte-doux); }

/* Texte et image */
.ez-texte-image { display: grid; gap: calc(var(--ez-espace) * 1.5); align-items: center; }
@media (min-width: 48rem) {
  .ez-texte-image { grid-template-columns: 1fr 1fr; }
  .ez-image-gauche .ez-figure { order: -1; }
}
.ez-figure { margin: 0; }
.ez-figure img { border-radius: var(--ez-rayon); width: 100%; }

/* Appel à l'action */
.ez-appel { background: var(--ez-primaire); color: var(--ez-sur-primaire); border-radius: var(--ez-rayon); padding: calc(var(--ez-espace) * 1.5); }
.ez-appel h2 { color: var(--ez-sur-primaire); }
.ez-appel .ez-bouton { background: var(--ez-sur-primaire); color: var(--ez-primaire); }

/* FAQ */
.ez-faq { max-width: 46rem; }
.ez-question { border-bottom: 1px solid var(--ez-bord); }
.ez-question summary { cursor: pointer; padding: 1rem 0; font-weight: 600; list-style-position: outside; }
.ez-question[open] summary { color: var(--ez-accent); }

/* Frise */
.ez-frise { list-style: none; padding: 0; border-left: 2px solid var(--ez-bord); margin-left: .5rem; }
.ez-etape { position: relative; padding: 0 0 var(--ez-espace) 1.5rem; }
.ez-etape::before { content: ""; position: absolute; left: -.5rem; top: .35rem; width: .85rem; height: .85rem; border-radius: 50%; background: var(--ez-accent); border: 3px solid var(--ez-fond); }
.ez-etape-date { font-weight: 700; color: var(--ez-accent); }

/* Contenus externes chargés au clic */
.ez-externe { background: var(--ez-surface); border: 1px solid var(--ez-bord); border-radius: var(--ez-rayon); padding: calc(var(--ez-espace) * 1.2); aspect-ratio: 16 / 9; display: flex; flex-direction: column; justify-content: center; align-items: flex-start; max-width: 52rem; }
.ez-externe-type { font-weight: 700; margin-bottom: .3rem; }
.ez-externe-avis { color: var(--ez-texte-doux); font-size: .95rem; max-width: 36rem; }
.ez-externe iframe { width: 100%; height: 100%; border: 0; border-radius: var(--ez-rayon); }
.ez-externe.ez-charge { padding: 0; background: #000; }
.ez-legende { color: var(--ez-texte-doux); font-size: .95rem; margin-top: .5rem; }

/* Module à venir */
.ez-a-venir { color: var(--ez-texte-doux); font-style: italic; border: 1px dashed var(--ez-bord); border-radius: var(--ez-rayon); padding: 1rem; }

/* Pages légales */
.ez-liste-legale { display: grid; grid-template-columns: max-content 1fr; gap: .4rem 1.5rem; }
.ez-liste-legale dt { font-weight: 600; }
.ez-liste-legale dd { margin: 0; }
@media (max-width: 36rem) { .ez-liste-legale { grid-template-columns: 1fr; } .ez-liste-legale dd { margin-bottom: .6rem; } }

/* 404 */
.ez-404 + .ez-404 { border-top: 1px solid var(--ez-bord); }

/* Pied de page */
.ez-pied { margin-top: calc(var(--ez-espace) * 2); background: var(--ez-surface); border-top: 1px solid var(--ez-bord); font-size: .95rem; }
.ez-pied-grille { display: grid; gap: var(--ez-espace); padding-top: calc(var(--ez-espace) * 1.5); padding-bottom: var(--ez-espace); grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr)); }
.ez-pied p { margin: 0 0 .35rem; }
.ez-pied-nom { font-weight: 700; color: var(--ez-primaire); }
.ez-pied ul { list-style: none; padding: 0; margin: 0; }
.ez-pied li { margin-bottom: .35rem; }
.ez-pied-bas { border-top: 1px solid var(--ez-bord); padding-top: .8rem; padding-bottom: 1rem; }
.ez-mention-ezweb { color: var(--ez-texte-doux); font-size: .85rem; }
.ez-mention-ezweb a { color: inherit; }

/* ===== Modules ===== */
[hidden] { display: none !important; }
.ez-surplus { display: none !important; }
.ez-meta { color: var(--ez-texte-doux); font-size: .92rem; margin-bottom: .4rem; }
.ez-vide { color: var(--ez-texte-doux); font-style: italic; }
.ez-tout-voir { margin-top: var(--ez-espace); font-weight: 600; }
.ez-tout-voir a { text-decoration: none; }
.ez-h3 { font-size: 1.05rem; margin-bottom: .3rem; }
.ez-boutons { display: flex; flex-wrap: wrap; gap: .6rem; margin-top: var(--ez-espace); }
.ez-bouton-secondaire { background: transparent; color: var(--ez-accent); box-shadow: inset 0 0 0 2px var(--ez-accent); }
.ez-carte :is(h2, h3) a { color: inherit; text-decoration: none; }
.ez-carte :is(h2, h3) a:hover { color: var(--ez-accent); }
.ez-carte :is(h2, h3) a::after { content: ""; position: absolute; inset: 0; }
.ez-carte { position: relative; }
.ez-carte a:not(h2 a, h3 a) { position: relative; z-index: 1; }
.ez-prix { font-weight: 700; color: var(--ez-primaire); }

/* Évènements */
.ez-evenements { display: grid; gap: calc(var(--ez-espace) * .75); margin-bottom: var(--ez-espace); }
.ez-evenement { display: flex; gap: 1rem; align-items: flex-start; padding: calc(var(--ez-espace) * .75); border: 1px solid var(--ez-bord); border-radius: var(--ez-rayon); background: var(--ez-fond); }
.ez-evenement :is(h2, h3) { margin-bottom: .25rem; }
.ez-evenement :is(h2, h3) a { color: inherit; text-decoration: none; }
.ez-evenement :is(h2, h3) a:hover { color: var(--ez-accent); }
.ez-evenement-corps > :last-child { margin-bottom: 0; }
.ez-pastille { flex: none; width: 4rem; text-align: center; border-radius: var(--ez-rayon); background: var(--ez-accent); color: var(--ez-sur-accent); padding: .45rem 0; line-height: 1.1; }
.ez-pastille-jour { display: block; font-size: 1.6rem; font-weight: 700; }
.ez-pastille-mois { display: block; font-size: .85rem; text-transform: uppercase; letter-spacing: .03em; }
.ez-evenements-passes .ez-pastille { background: var(--ez-texte-doux); }
.ez-evenements-passes .ez-evenement { opacity: .85; }

/* Équipe */
.ez-grille-equipe { grid-template-columns: repeat(auto-fill, minmax(13rem, 1fr)); }
.ez-personne { text-align: center; }
.ez-personne-photo, .ez-personne-initiales { width: 8.5rem; height: 8.5rem; border-radius: 50%; object-fit: cover; margin: 0 auto 1rem; }
.ez-personne-initiales { display: flex; align-items: center; justify-content: center; background: var(--ez-surface); color: var(--ez-primaire); font-size: 2rem; font-weight: 700; border: 1px solid var(--ez-bord); }
.ez-personne :is(h2, h3) { margin-bottom: .2rem; }

/* Témoignages */
.ez-grille-temoignages { grid-template-columns: repeat(auto-fit, minmax(18rem, 1fr)); }
.ez-temoignage { margin: 0; padding: calc(var(--ez-espace) * 1); background: var(--ez-surface); border-radius: var(--ez-rayon); border-left: 4px solid var(--ez-accent); }
.ez-temoignage blockquote { margin: 0 0 .8rem; font-size: 1.08rem; }
.ez-temoignage blockquote p::before { content: "« "; } .ez-temoignage blockquote p::after { content: " »"; }
.ez-temoignage figcaption span { display: block; color: var(--ez-texte-doux); font-size: .92rem; }

/* Partenaires */
.ez-logos { list-style: none; padding: 0; display: grid; gap: var(--ez-espace); grid-template-columns: repeat(auto-fill, minmax(9rem, 1fr)); align-items: center; }
.ez-partenaire a, .ez-partenaire > img, .ez-partenaire > span { display: flex; align-items: center; justify-content: center; min-height: 5rem; padding: .75rem; border: 1px solid var(--ez-bord); border-radius: var(--ez-rayon); background: var(--ez-fond); text-decoration: none; color: var(--ez-texte); }
.ez-logo-partenaire { max-height: 3.5rem; width: auto; object-fit: contain; }

/* Documents */
.ez-documents { list-style: none; padding: 0; display: grid; gap: .6rem; max-width: 52rem; }
.ez-document { display: flex; gap: 1rem; align-items: flex-start; padding: .8rem 1rem; border: 1px solid var(--ez-bord); border-radius: var(--ez-rayon); }
.ez-document p { margin: .2rem 0 0; }
.ez-document .ez-meta { margin: .1rem 0 0; }
.ez-document-icone { flex: none; width: 3rem; height: 3rem; border-radius: var(--ez-rayon); background: var(--ez-surface); color: var(--ez-accent); display: flex; align-items: center; justify-content: center; font-size: .75rem; font-weight: 700; }
.ez-document-lien { font-weight: 600; }

/* Offres */
.ez-offres { display: grid; gap: .8rem; max-width: 52rem; }
.ez-offre { padding: 1rem 1.2rem; border: 1px solid var(--ez-bord); border-radius: var(--ez-rayon); }
.ez-offre :is(h2, h3) { margin: 0 0 .3rem; }
.ez-offre > :last-child { margin-bottom: 0; }

/* Calendrier sportif */
.ez-tableau-defilant { overflow-x: auto; margin-bottom: var(--ez-espace); }
.ez-tableau-sport { width: 100%; border-collapse: collapse; min-width: 34rem; }
.ez-tableau-sport td { padding: .65rem .6rem; border-bottom: 1px solid var(--ez-bord); vertical-align: middle; }
.ez-equipe-domicile { text-align: right; }
.ez-score { text-align: center; white-space: nowrap; width: 5.5rem; font-variant-numeric: tabular-nums; }
/* Petit écran : chaque match sur trois lignes (date ; équipes et score ; compétition), sans défilement */
@media (max-width: 40rem) {
  .ez-tableau-sport { min-width: 0; }
  .ez-tableau-sport tr { display: grid; grid-template-columns: 1fr auto 1fr; gap: .25rem .6rem; padding: .7rem .4rem;
    border-bottom: 1px solid var(--ez-bord); }
  .ez-tableau-sport td { border: 0; padding: 0; }
  .ez-tableau-sport .ez-date, .ez-tableau-sport .ez-meta { grid-column: 1 / -1; font-size: .9rem; }
  .ez-tableau-sport .ez-score { width: auto; }
}

/* Contact */
.ez-contact { display: grid; gap: calc(var(--ez-espace) * 1.5); }
@media (min-width: 52rem) { .ez-contact:has(.ez-contact-carte) { grid-template-columns: 1fr 1.3fr; } }
.ez-contact-infos > div { margin-bottom: var(--ez-espace); }
.ez-contact-carte .ez-externe { aspect-ratio: 4 / 3; }

/* CV : compétences, langues, liens, publications */
.ez-grille-competences { grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr)); }
.ez-etiquettes { list-style: none; padding: 0; display: flex; flex-wrap: wrap; gap: .4rem; }
.ez-etiquettes li { background: var(--ez-surface); border: 1px solid var(--ez-bord); border-radius: 999px; padding: .2rem .75rem; font-size: .92rem; }
.ez-langues-parlees { list-style: none; padding: 0; display: grid; gap: .5rem; max-width: 34rem; }
.ez-langue-parlee { display: flex; justify-content: space-between; gap: 1rem; padding: .55rem 0; border-bottom: 1px solid var(--ez-bord); }
.ez-langue-parlee span { color: var(--ez-texte-doux); }
.ez-liens { list-style: none; padding: 0; display: grid; gap: .7rem; max-width: 30rem; }
.ez-bouton-lien { display: block; text-align: center; }
.ez-publications { list-style: none; padding: 0; max-width: 52rem; }
.ez-publication { padding: 1rem 0; border-bottom: 1px solid var(--ez-bord); }
.ez-publication :is(h2, h3) { margin-bottom: .3rem; }
.ez-publication > :last-child { margin-bottom: 0; }

/* Actualités : archives, RSS, pagination */
.ez-archives { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; color: var(--ez-texte-doux); font-size: .95rem; }
.ez-archives ul { list-style: none; display: flex; flex-wrap: wrap; gap: .4rem; margin: 0; padding: 0; }
.ez-archives a { display: inline-block; padding: .15rem .55rem; border: 1px solid var(--ez-bord); border-radius: var(--ez-rayon); text-decoration: none; }
.ez-archives a[aria-current="page"] { background: var(--ez-accent); color: var(--ez-sur-accent); border-color: var(--ez-accent); }
.ez-rss { max-width: var(--ez-largeur); margin: .3rem auto 0; padding: 0 1rem; font-size: .9rem; }
@media (min-width: 48rem) { .ez-rss { padding: 0 1.5rem; } }
.ez-pagination { display: flex; flex-wrap: wrap; gap: .4rem; margin-top: calc(var(--ez-espace) * 1.2); }
.ez-pagination a { padding: .4rem .75rem; border: 1px solid var(--ez-bord); border-radius: var(--ez-rayon); text-decoration: none; }
.ez-pagination a[aria-current="page"] { background: var(--ez-accent); color: var(--ez-sur-accent); border-color: var(--ez-accent); }

/* Galerie et visionneuse */
.ez-galerie { list-style: none; padding: 0; display: grid; gap: .6rem; grid-template-columns: repeat(auto-fill, minmax(12rem, 1fr)); margin: var(--ez-espace) 0; }
.ez-galerie figure { margin: 0; }
.ez-galerie img { aspect-ratio: 1; object-fit: cover; width: 100%; border-radius: var(--ez-rayon); transition: opacity .2s; }
.ez-galerie a:hover img { opacity: .85; }
.ez-galerie figcaption { font-size: .88rem; color: var(--ez-texte-doux); margin-top: .3rem; }
.ez-visionneuse { border: 0; padding: 0; max-width: 100vw; max-height: 100vh; width: 100vw; height: 100vh; background: rgb(10 12 16 / .94); color: #fff; }
.ez-visionneuse::backdrop { background: rgb(10 12 16 / .94); }
.ez-visionneuse figure { margin: 0; height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 3.5rem 4rem 1.5rem; }
.ez-visionneuse img { max-width: 100%; max-height: calc(100vh - 7rem); object-fit: contain; }
.ez-visionneuse figcaption { margin-top: .8rem; text-align: center; }
.ez-visionneuse button { position: absolute; background: rgb(255 255 255 / .12); color: #fff; border: 0; width: 3rem; height: 3rem; border-radius: 50%; font-size: 1.5rem; cursor: pointer; }
.ez-visionneuse button:hover { background: rgb(255 255 255 / .25); }
.ez-visionneuse-fermer { top: 1rem; right: 1rem; }
.ez-visionneuse-prec { left: 1rem; top: 50%; transform: translateY(-50%); }
.ez-visionneuse-suiv { right: 1rem; top: 50%; transform: translateY(-50%); }
@media (max-width: 36rem) { .ez-visionneuse figure { padding: 4rem .5rem 1rem; } .ez-visionneuse-prec, .ez-visionneuse-suiv { top: auto; bottom: 1rem; transform: none; } }

/* Pages de détail */
.ez-detail { padding: calc(var(--ez-espace) * 1.2) 0; }
.ez-retour { font-size: .95rem; margin-bottom: var(--ez-espace); }
.ez-retour a { text-decoration: none; }
.ez-detail-titre { margin-bottom: .4rem; }
.ez-conteneur-large { max-width: calc(var(--ez-largeur) + 0rem); margin: var(--ez-espace) auto; padding: 0 1rem; }
@media (min-width: 48rem) { .ez-conteneur-large { padding: 0 1.5rem; } }
.ez-detail-image { width: 100%; max-height: 32rem; object-fit: cover; border-radius: var(--ez-rayon); }
.ez-fiche { display: grid; grid-template-columns: max-content 1fr; gap: .4rem 1.25rem; margin: var(--ez-espace) 0; padding: 1rem 1.2rem; background: var(--ez-surface); border-radius: var(--ez-rayon); max-width: 46rem; }
.ez-fiche dt { font-weight: 600; } .ez-fiche dd { margin: 0; }
.ez-alerte { padding: .8rem 1rem; border-radius: var(--ez-rayon); background: var(--ez-alerte-fond); color: var(--ez-alerte-texte); font-weight: 600; }

/* Bandeau d'annonce */
.ez-annonce { background: var(--ez-accent); color: var(--ez-sur-accent); font-size: .95rem; }
.ez-annonce p { margin: 0; padding: .6rem 0; }
.ez-annonce a { color: inherit; font-weight: 600; }
.ez-annonce-warning { background: var(--ez-avertissement); color: var(--ez-sur-avertissement); }

/* ===== Lot 4 : one page, menus, recherche ===== */
.ez-section { scroll-margin-top: calc(var(--ez-hauteur-entete) + .5rem); }
.ez-style-one-page-scroll .ez-section + .ez-section { border-top: 1px solid var(--ez-bord); }
.ez-titre-section { padding-top: calc(var(--ez-espace) * 1.6); }
.ez-titre-section + .ez-bloc { padding-top: calc(var(--ez-espace) * .4); }
.ez-section > .ez-bloc-module:first-child, .ez-section > h1 + .ez-bloc-module { padding-top: calc(var(--ez-espace) * 1.6); }

/* One page à sections : une section visible à la fois (seulement avec le script) */
.js [data-ez-sections] .ez-section { display: none; }
.js [data-ez-sections] .ez-section.ez-section-active { display: block; animation: ez-fondu .35s ease; }
@keyframes ez-fondu { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .js [data-ez-sections] .ez-section.ez-section-active { animation: none; } }
.js [data-ez-sections] .ez-contenu { min-height: calc(100vh - var(--ez-hauteur-entete) - 12rem); }

/* Page de liens */
.ez-page-liens { background: var(--ez-surface); }
.ez-page-liens .ez-entete-simple { background: transparent; border: 0; position: static; }
.ez-carte-liens { text-align: center; padding-top: calc(var(--ez-espace) * 2); }
.ez-carte-liens .ez-conteneur { max-width: 34rem; background: var(--ez-fond); border-radius: calc(var(--ez-rayon) * 2); padding: calc(var(--ez-espace) * 2) 1.5rem; box-shadow: 0 10px 30px rgb(0 0 0 / .06); }
.ez-liens-photo { width: 7.5rem; height: 7.5rem; object-fit: cover; border-radius: 50%; margin: 0 auto 1rem; }
.ez-liens-accroche { color: var(--ez-texte-doux); }
.ez-carte-liens .ez-liens { margin: calc(var(--ez-espace) * 1.2) auto 0; }
.ez-liens-reseaux { list-style: none; padding: 0; display: flex; justify-content: center; flex-wrap: wrap; gap: 1rem; margin-top: var(--ez-espace); }

/* Loupe de recherche */
.ez-loupe { display: inline-flex; align-items: center; gap: .4rem; padding: .45rem .55rem; border-radius: var(--ez-rayon); color: var(--ez-texte); text-decoration: none; }
.ez-loupe:hover, .ez-loupe[aria-current="page"] { background: var(--ez-surface); color: var(--ez-accent); }
.ez-icone-loupe { width: 1rem; height: 1rem; border: 2px solid currentColor; border-radius: 50%; position: relative; flex: none; }
.ez-icone-loupe::after { content: ""; position: absolute; width: 2px; height: .45rem; background: currentColor; right: -.3rem; bottom: -.4rem; transform: rotate(-45deg); }
.ez-loupe-texte { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.ez-menu { order: 3; }
.ez-loupe { order: 4; }
.ez-bouton-menu { order: 5; }
.ez-burger .ez-loupe { order: 2; }
.ez-burger .ez-bouton-menu { order: 3; }
.ez-burger .ez-menu { order: 4; }
.ez-lateral:not(.ez-burger) .ez-loupe-texte { position: static; width: auto; height: auto; clip: auto; }
.ez-lateral:not(.ez-burger) .ez-nom-site { white-space: normal; }

/* Page de recherche */
.ez-recherche { max-width: 40rem; }
.ez-recherche label { display: block; font-weight: 600; margin-bottom: .4rem; }
.ez-recherche-ligne { display: flex; gap: .5rem; }
.ez-recherche input { flex: 1; min-width: 0; font: inherit; padding: .65rem .8rem; border: 1px solid var(--ez-bord); border-radius: var(--ez-rayon); background: var(--ez-fond); color: var(--ez-texte); }
.ez-recherche input:focus { outline: 3px solid var(--ez-accent); outline-offset: 1px; }
.ez-recherche-statut { margin-top: var(--ez-espace); color: var(--ez-texte-doux); }
.ez-resultats { list-style: none; padding: 0; max-width: 46rem; }
.ez-resultats li { padding: .9rem 0; border-bottom: 1px solid var(--ez-bord); }
.ez-resultats a { font-weight: 600; font-size: 1.1rem; }
.ez-resultats p { margin: .25rem 0 0; color: var(--ez-texte-doux); font-size: .95rem; }
.ez-resultats .ez-meta { margin: 0 0 .15rem; font-size: .85rem; }
.ez-resultats mark { background: var(--ez-marqueur-fond); color: inherit; padding: 0 .1em; }

/* Menu vertical latéral (grand écran) */
@media (min-width: 60.01rem) {
  .ez-lateral:not(.ez-burger) body { display: grid; grid-template-columns: 17rem 1fr; grid-template-rows: auto 1fr auto; }
  .ez-lateral:not(.ez-burger) .ez-evitement { grid-column: 1 / -1; }
  .ez-lateral:not(.ez-burger) .ez-entete { grid-column: 1; grid-row: 1 / span 3; position: sticky; top: 0; height: 100vh; overflow-y: auto; border-bottom: 0; border-right: 1px solid var(--ez-bord); }
  .ez-lateral:not(.ez-burger) .ez-entete-ligne { flex-direction: column; align-items: stretch; padding: 1.5rem 1rem; gap: 1.5rem; }
  .ez-lateral:not(.ez-burger) .ez-marque { margin: 0; }
  .ez-lateral:not(.ez-burger) .ez-menu { flex-direction: column; align-items: stretch; }
  .ez-lateral:not(.ez-burger) .ez-navigation > ul { flex-direction: column; }
  .ez-lateral:not(.ez-burger) .ez-a-sous-menu { flex-wrap: wrap; }
  .ez-lateral:not(.ez-burger) .ez-a-sous-menu > a { flex: 1; }
  .ez-lateral:not(.ez-burger) .ez-sous-menu { position: static; display: block; width: 100%; border: 0; box-shadow: none; padding: 0 0 0 .8rem; }
  .ez-lateral:not(.ez-burger) .ez-bouton-sous-menu { display: none; }
  .ez-lateral:not(.ez-burger) .ez-annonce, .ez-lateral:not(.ez-burger) .ez-contenu, .ez-lateral:not(.ez-burger) .ez-pied { grid-column: 2; min-width: 0; }
  .ez-lateral:not(.ez-burger) .ez-pied { margin-top: 0; }
}

/* Mode sombre : les thèmes définissent leurs couleurs sombres sous .ez-sombre-auto (prefers-color-scheme). */
@media (prefers-color-scheme: dark) {
  :root.ez-sombre-auto { color-scheme: dark; }
  .ez-sombre-auto .ez-image-manquante { background: repeating-linear-gradient(45deg, var(--ez-surface), var(--ez-surface) 12px, var(--ez-fond) 12px, var(--ez-fond) 24px); }
  .ez-sombre-auto .ez-a-completer { background: #ffe066; color: #3d2e00; }
}

/* Images en plusieurs tailles (lot 6) : <picture> ne crée pas de boîte, l'image garde sa mise en page */
picture { display: contents; }
