/* ==========================================================================
   Assoscope : feuille de style unique
   Charte retenue : disposition B (proximité), teinte prune.
   Pour changer une couleur, modifiez seulement les variables ci-dessous.
   ========================================================================== */

@font-face { font-family: 'Inter'; src: url('../fonts/inter.woff2') format('woff2'); font-weight: 100 900; font-display: swap; }
@font-face { font-family: 'Bricolage'; src: url('../fonts/bricolage.woff2') format('woff2'); font-weight: 200 800; font-display: swap; }

:root {
  --encre: #1D1A22;
  --texte: #3E3945;
  --gris: #57525E;
  --fond: #F6F3F5;
  --blanc: #FFFFFF;
  --ligne: #E4E1E6;
  --champ: #D5D0D9;
  --accent: #7A2E5A;
  --accent-fonce: #5F2346;
  --accent-doux: #F3E6EE;
  --chaud: #8A3B12;
  --chaud-doux: #FCEBDD;
  --vert: #1F6F47;
  --vert-doux: #E2F1E8;
  --rouge: #A3222B;
  --rouge-doux: #FBE6E7;
  --rayon: 18px;
  --police: 'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
  --titres: 'Bricolage', 'Inter', system-ui, sans-serif;
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; background: var(--fond); color: var(--encre); font-family: var(--police); font-size: 16px; line-height: 1.55; -webkit-font-smoothing: antialiased; }
img { max-width: 100%; height: auto; display: block; }
a { color: var(--accent); text-underline-offset: 2px; }
h1, h2, h3 { font-family: var(--titres); font-weight: 700; letter-spacing: -0.02em; line-height: 1.12; margin: 0 0 .5em; }
h1 { font-size: clamp(2.1rem, 5vw, 3.5rem); }
h2 { font-size: clamp(1.6rem, 3vw, 1.9rem); }
h3 { font-size: 1.15rem; }
p { margin: 0 0 1em; }
:focus-visible { outline: 3px solid var(--accent); outline-offset: 2px; }
.visuellement-cache { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.evitement { position: absolute; left: -9999px; top: 8px; z-index: 100; background: var(--blanc); padding: 10px 16px; border-radius: 8px; font-weight: 600; }
.evitement:focus { left: 8px; }
.piege { position: absolute; left: -9999px; }

.conteneur { width: 100%; max-width: 1240px; margin: 0 auto; padding: 0 16px; }
@media (min-width: 640px) { .conteneur { padding: 0 20px; } }
.conteneur--etroit { max-width: 860px; }
.section { padding-top: 56px; }
.section--blanche { background: var(--blanc); padding: 48px 0; margin-top: 0; }
.section__tete { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: flex-end; gap: 8px 24px; margin-bottom: 20px; }
.section__tete h2 { margin: 0; }
.section__tete p { margin: 4px 0 0; color: var(--gris); font-size: 15px; }
.surtitre { margin: 0 0 10px; font-size: 14px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--accent); }
.chapo { font-size: 18px; color: var(--texte); max-width: 640px; }
.gris { color: var(--gris); }
.petit { font-size: 14px; }
.grille { display: grid; gap: 16px; grid-template-columns: repeat(auto-fill, minmax(min(100%, 260px), 1fr)); }
.grille--large { grid-template-columns: repeat(auto-fill, minmax(min(100%, 380px), 1fr)); gap: 12px; }
.deux-colonnes { display: flex; flex-wrap: wrap; gap: 40px; }
.deux-colonnes > * { flex: 1 1 400px; min-width: 0; }
.pile > * + * { margin-top: 12px; }

/* ---------- Boutons ---------- */
[hidden] { display: none !important; }
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 44px; padding: 11px 20px; border-radius: 999px; border: 1px solid transparent; font: inherit; font-size: 15px; font-weight: 600; text-decoration: none; cursor: pointer; transition: background .15s, border-color .15s; white-space: nowrap; }
.btn--principal { background: var(--accent); color: var(--blanc); }
.btn--principal:hover { background: var(--accent-fonce); }
.btn--sombre { background: var(--encre); color: var(--blanc); }
.btn--sombre:hover { background: #000; }
.btn--contour { background: var(--blanc); color: var(--encre); border-color: var(--champ); }
.btn--contour:hover { border-color: var(--encre); }
.btn--blanc { background: var(--blanc); color: var(--encre); }
.btn--danger { background: var(--blanc); color: var(--rouge); border-color: #E7B9BC; }
.btn--petit { min-height: 36px; padding: 7px 14px; font-size: 14px; }
.btn--carre { border-radius: 10px; }
.btn--plein { width: 100%; }
.boutons { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.lien-fort { font-weight: 600; text-decoration: none; }
.lien-fort:hover { text-decoration: underline; }

/* ---------- En-tête et pied ---------- */
/* ---------- En-tête et menu (HTML : app/templates/morceaux/menu.php) ---------- */
.entete { background: var(--fond); }
.entete__ligne { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 28px; padding-top: 16px; padding-bottom: 16px; }
.logo { display: flex; align-items: center; gap: 10px; color: var(--encre); text-decoration: none; font-family: var(--titres); font-weight: 700; font-size: 23px; letter-spacing: -0.02em; }
.menu { display: none; flex-direction: column; width: 100%; gap: 2px; }
.menu.ouvert { display: flex; }
.menu a:not(.btn) { color: var(--encre); text-decoration: none; padding: 10px 0; font-size: 15px; font-weight: 500; }
.menu a[aria-current="page"] { color: var(--accent); }
.menu__cta-mobile { margin-top: 8px; }
.entete__burger { margin-left: auto; width: 44px; height: 44px; border-radius: 50%; border: 1px solid var(--champ); background: var(--blanc); color: var(--encre); display: inline-flex; align-items: center; justify-content: center; cursor: pointer; }
.entete__icone-fermer, .entete__burger[aria-expanded="true"] .entete__icone-ouvrir { display: none; }
.entete__burger[aria-expanded="true"] .entete__icone-fermer { display: block; }
.entete__cta { display: none; }
/* Menu de la personne connectée (bouton à son prénom ; même comportement que « Partager ») */
.entete__compte { margin-left: 0; align-self: center; }
.entete__compte .partage__menu { min-width: 210px; }
.menu__compte-mobile { display: flex; flex-direction: column; margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--ligne); }
.menu__prenom { margin: 4px 0; font-weight: 700; }
.menu__compte-mobile form .btn { width: 100%; }
@media (min-width: 860px) {
  .menu { display: flex; flex-direction: row; width: auto; flex: 1; gap: 24px; }
  .menu__cta-mobile, .entete__burger, .menu__compte-mobile { display: none; }
  .entete__cta { display: inline-flex; }
}
.pied { margin-top: 72px; background: var(--encre); color: #E2DCE5; }
.pied__colonnes { display: flex; flex-wrap: wrap; gap: 32px 48px; padding-top: 48px; padding-bottom: 28px; }
.pied__colonnes > * { flex: 1 1 160px; }
.pied__marque { flex-basis: 240px; }
.pied__logo { font-family: var(--titres); font-weight: 700; font-size: 22px; color: var(--blanc); margin-bottom: 8px; }
.pied nav { display: flex; flex-direction: column; gap: 8px; font-size: 14px; }
.pied strong { color: var(--blanc); }
.pied a { color: #E2DCE5; text-decoration: none; }
.pied a:hover { text-decoration: underline; }
.pied__bas { border-top: 1px solid #3A3541; padding-top: 16px; padding-bottom: 28px; font-size: 13px; }

/* ---------- Accueil ---------- */
/* Bannière pleine largeur sous le menu (version allégée de l'image de partage prune) */
.banniere { position: relative; overflow: hidden; background: var(--accent); color: var(--blanc); }
.banniere::before, .banniere::after { content: ""; position: absolute; border-radius: 50%; pointer-events: none; }
.banniere::before { width: 420px; height: 420px; left: -140px; top: -260px; background: #843566; }
.banniere::after { width: 360px; height: 360px; right: -120px; bottom: -250px; background: #6E2852; }
.banniere__ligne { position: relative; z-index: 1; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px 32px; padding-top: 18px; padding-bottom: 18px; }
.banniere__marque { display: flex; align-items: center; gap: 12px; }
.banniere__repere { flex: 0 0 auto; width: 36px; height: 36px; }
.banniere__nom { margin: 0; font-family: var(--titres); font-weight: 800; font-size: 26px; line-height: 1; letter-spacing: -0.03em; }
.banniere__slogan { margin: 4px 0 0; font-size: 14px; color: var(--accent-doux); }
.banniere__themes { display: flex; flex-wrap: wrap; gap: 8px; }
.banniere__themes a { padding: 6px 14px; border-radius: 999px; background: var(--blanc); color: var(--accent); font-size: 14px; font-weight: 600; text-decoration: none; }
.banniere__themes a:hover { background: var(--accent-doux); }
@media (max-width: 639px) { .banniere__themes { display: none; } }
@media (min-width: 860px) {
  .banniere__ligne { padding-top: 26px; padding-bottom: 26px; }
  .banniere__repere { width: 44px; height: 44px; }
  .banniere__nom { font-size: 34px; }
  .banniere__slogan { font-size: 16px; }
}

/* Tuiles d'accès rapide : 4 sur une ligne (ordinateur), 2 x 2 (tablette), 1 colonne (téléphone)
   Palettes : tuiles--prune (dégradé de prunes), tuiles--bleu, tuiles--crepuscule (prune vers bleu) */
.tuiles { display: grid; grid-template-columns: 1fr; gap: 12px; padding-top: 4px; padding-bottom: 32px; }
@media (min-width: 600px) { .tuiles { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1000px) { .tuiles { grid-template-columns: repeat(4, 1fr); gap: 16px; } }
.tuile { display: flex; flex-direction: column; min-height: 118px; padding: 18px 20px; border-radius: 14px; color: #FFFFFF; text-decoration: none; transition: transform .15s ease, box-shadow .15s ease; }
.tuile:hover { transform: translateY(-2px); box-shadow: 0 10px 24px rgba(29, 26, 34, .16); }
.tuile__surtitre { font-family: Georgia, 'Times New Roman', serif; font-style: italic; font-size: 16px; line-height: 1.2; opacity: .85; }
.tuile__titre { font-family: var(--titres); font-weight: 800; font-size: 1.45rem; line-height: 1.08; letter-spacing: -0.025em; margin-top: 2px; }
.tuile__bas { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: auto; padding-top: 14px; }
.tuile__info { font-family: ui-monospace, 'SFMono-Regular', Menlo, Consolas, monospace; font-size: 11.5px; letter-spacing: .1em; text-transform: uppercase; opacity: .9; }
.tuile__fleche { flex: 0 0 auto; width: 34px; height: 34px; border-radius: 50%; border: 1px solid currentColor; display: inline-flex; align-items: center; justify-content: center; transition: transform .15s ease; }
.tuile__fleche svg { width: 15px; height: 15px; }
.tuile:hover .tuile__fleche { transform: translateX(3px); }
.tuiles--prune .tuile:nth-child(1) { background: linear-gradient(135deg, #B0628F, #94477A); }
.tuiles--prune .tuile:nth-child(2) { background: linear-gradient(135deg, #94477A, #7A2E5A); }
.tuiles--prune .tuile:nth-child(3) { background: linear-gradient(135deg, #7A2E5A, #5F2346); }
.tuiles--prune .tuile:nth-child(4) { background: linear-gradient(135deg, #5F2346, #3F1530); }
.tuiles--bleu .tuile:nth-child(1) { background: linear-gradient(135deg, #3F86C9, #2E6FAE); }
.tuiles--bleu .tuile:nth-child(2) { background: linear-gradient(135deg, #2E6FAE, #245991); }
.tuiles--bleu .tuile:nth-child(3) { background: linear-gradient(135deg, #245991, #1B4474); }
.tuiles--bleu .tuile:nth-child(4) { background: linear-gradient(135deg, #1B4474, #122E52); }
.tuiles--crepuscule .tuile:nth-child(1) { background: linear-gradient(135deg, #94477A, #7A2E5A); }
.tuiles--crepuscule .tuile:nth-child(2) { background: linear-gradient(135deg, #7A3A82, #5E3C8C); }
.tuiles--crepuscule .tuile:nth-child(3) { background: linear-gradient(135deg, #504A9C, #3B55A3); }
.tuiles--crepuscule .tuile:nth-child(4) { background: linear-gradient(135deg, #2E66AE, #1F4E8C); }

/* Compteur dans les puces de thématiques */
.puce__nombre { margin-left: 8px; padding: 0 7px; border-radius: 999px; background: var(--accent-doux); color: var(--accent); font-size: 12.5px; font-weight: 600; line-height: 20px; }

/* Cartes « À découvrir aujourd'hui » */
.grille--decouverte { grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr)); }
.decouverte { display: flex; flex-direction: column; gap: 12px; padding: 20px; border-radius: var(--rayon); background: var(--blanc); color: var(--encre); text-decoration: none; border: 1px solid transparent; transition: border-color .15s; }
.decouverte:hover { border-color: var(--accent); }
.decouverte__tete { display: flex; align-items: center; gap: 14px; }
.decouverte__logo { flex: 0 0 auto; width: 64px; height: 64px; border-radius: 14px; object-fit: contain; background: var(--blanc); border: 1px solid var(--ligne); }
.decouverte__logo--initiales { display: flex; align-items: center; justify-content: center; background: var(--accent-doux); border-color: var(--accent-doux); color: var(--accent); font-family: var(--titres); font-weight: 700; font-size: 22px; }
.decouverte__nom { display: block; font-weight: 700; font-size: 17px; line-height: 1.25; }
.decouverte__lieu { display: block; font-size: 14px; color: var(--gris); }
.decouverte__texte { font-size: 14.5px; line-height: 1.5; color: var(--texte); }
.decouverte__evts { display: flex; flex-direction: column; gap: 8px; }
.decouverte__evts-titre { font-size: 12.5px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--accent); }
.pastilles { display: flex; flex-wrap: wrap; gap: 6px; }
.pastille { display: inline-flex; align-items: center; gap: 6px; max-width: 100%; padding: 4px 11px 4px 4px; border-radius: 999px; background: var(--fond); border: 1px solid var(--ligne); font-size: 13px; line-height: 1.3; }
.pastille__date { flex: 0 0 auto; padding: 2px 8px; border-radius: 999px; background: var(--accent); color: var(--blanc); font-size: 12px; font-weight: 600; white-space: nowrap; }

/* Texte repliable (actualité du moment) */
.depliable__contenu > :last-child { margin-bottom: 0; }
.depliable.est-replie .depliable__contenu { overflow: hidden; -webkit-mask-image: linear-gradient(#000 55%, transparent); mask-image: linear-gradient(#000 55%, transparent); }
.depliable__bouton { display: flex; align-items: center; justify-content: center; gap: 8px; width: 100%; margin-top: 12px; padding: 11px 16px; border: 1px solid var(--ligne); border-radius: 12px; background: var(--fond); color: var(--accent); font: inherit; font-size: 15px; font-weight: 600; cursor: pointer; }
.depliable__bouton:hover { background: var(--accent-doux); border-color: var(--accent-doux); }
.depliable__bouton svg { transition: transform .2s ease; }
.depliable__bouton[aria-expanded="true"] svg { transform: rotate(180deg); }

.hero { display: flex; flex-wrap: wrap; align-items: center; gap: 28px 40px; padding-top: 20px; padding-bottom: 24px; }
.hero__texte { flex: 1 1 420px; min-width: 0; }
.hero__texte h1 { font-size: clamp(1.9rem, 4vw, 2.65rem); line-height: 1.05; letter-spacing: -0.035em; margin-bottom: .35em; }
.hero__texte .chapo { font-size: 17px; margin: 0 0 14px; }
.hero__carte { flex: 1 1 460px; min-width: 0; position: relative; }
.recherche { background: var(--blanc); border-radius: var(--rayon); padding: 14px 16px; display: flex; flex-direction: column; gap: 8px; box-shadow: 0 10px 30px rgba(29, 26, 34, .08); }
.recherche__ligne { display: flex; flex-wrap: wrap; gap: 8px; }
.recherche__ligne .champ { flex: 1 1 200px; min-width: 0; }
.carte { height: 315px; border-radius: 24px; overflow: hidden; background: #EEE6EC; z-index: 0; }   /* accueil : 75 % de l'ancienne hauteur (420 / 540 px) */
@media (min-width: 860px) { .carte { height: 405px; } }
.carte--pleine { height: 70vh; min-height: 420px; border-radius: var(--rayon); }
.carte--mini { height: 240px; border-radius: 14px; }
.hero__carte .btn { position: absolute; top: 16px; right: 16px; z-index: 500; }
.puces { display: flex; flex-wrap: wrap; gap: 8px; }
.puce { display: inline-flex; align-items: center; min-height: 44px; padding: 9px 16px; border-radius: 999px; border: 1px solid var(--champ); background: var(--blanc); color: var(--encre); text-decoration: none; font-size: 15px; }
.puce:hover, .puce[aria-current="page"] { border-color: var(--accent); color: var(--accent); }
.puce small { color: var(--gris); margin-left: 6px; }

.a-la-une { display: flex; flex-wrap: wrap; overflow: hidden; border-radius: 24px; background: var(--blanc); }
.a-la-une__visuel { flex: 1 1 380px; min-height: 280px; object-fit: cover; background: var(--accent-doux); color: var(--accent); display: flex; align-items: center; justify-content: center; font-family: var(--titres); font-size: 72px; font-weight: 700; }
.a-la-une__texte { flex: 1 1 420px; min-width: 0; padding: 32px; display: flex; flex-direction: column; gap: 12px; }
@media (min-width: 860px) { .a-la-une__texte { padding: 40px; } }
.a-la-une__texte h2 { font-size: clamp(1.8rem, 3vw, 2.25rem); margin: 0; }
.bandeau { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 20px 32px; padding: 32px; border-radius: 24px; background: var(--accent); color: var(--blanc); }
.bandeau h2 { margin: 0 0 6px; }
.bandeau p { margin: 0; color: #F1DDE8; }

/* ---------- Cartes et vignettes ---------- */
.carton { background: var(--blanc); border-radius: var(--rayon); padding: 20px; }
@media (min-width: 640px) { .carton { padding: 24px; } }
.carton h2 { font-size: 1.35rem; }
.vignette { display: flex; flex-direction: column; gap: 10px; padding: 18px; border-radius: var(--rayon); background: var(--blanc); color: var(--encre); text-decoration: none; border: 1px solid transparent; transition: border-color .15s; }
.vignette:hover { border-color: var(--accent); }
.vignette__tete { display: flex; align-items: center; gap: 12px; }
.vignette__logo { flex: 0 0 auto; width: 48px; height: 48px; border-radius: 12px; object-fit: cover; }
.vignette__logo--initiales { display: flex; align-items: center; justify-content: center; background: var(--accent-doux); color: var(--accent); font-family: var(--titres); font-weight: 700; }
.vignette__nom { display: block; font-weight: 600; line-height: 1.25; }
.vignette__lieu { display: block; font-size: 14px; color: var(--gris); }
.vignette__texte { font-size: 14px; color: var(--texte); }
.badges { display: flex; flex-wrap: wrap; gap: 6px; margin-top: auto; }
.badge { display: inline-flex; align-items: center; padding: 3px 9px; border-radius: 6px; font-size: 12.5px; font-weight: 600; background: #F0ECEF; color: var(--encre); white-space: nowrap; }
.badge--verifiee { background: var(--accent-doux); color: var(--accent); }
.badge--benevoles { background: var(--chaud-doux); color: var(--chaud); }
.badge--vert { background: var(--vert-doux); color: var(--vert); }
.badge--rouge { background: var(--rouge-doux); color: var(--rouge); }
.badge--tarif { white-space: normal; text-align: left; max-width: 100%; }
.evenement { display: flex; gap: 16px; align-items: center; background: var(--blanc); border-radius: 14px; padding: 14px 16px; }
.evenement__date { flex: 0 0 54px; text-align: center; }
.evenement__jour { display: block; font-family: var(--titres); font-size: 26px; font-weight: 700; line-height: 1; }
.evenement__mois { display: block; font-size: 12px; text-transform: uppercase; color: var(--gris); }
.evenement__corps { flex: 1 1 auto; min-width: 0; }
.evenement__titre { font-family: var(--police); font-size: 16px; font-weight: 600; letter-spacing: 0; margin: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.evenement__titre a { color: var(--encre); text-decoration: none; }
.evenement__titre a:hover { color: var(--accent); }
.evenement__info { margin: 0; font-size: 14px; color: var(--gris); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.evenement__tarif { flex: 0 1 auto; max-width: 42%; display: flex; flex-direction: column; align-items: center; text-align: center; white-space: normal; line-height: 1.3; padding: 5px 10px; }
.evenement__prix { white-space: nowrap; }
.evenement__precision { font-size: 11.5px; font-weight: 500; color: var(--gris); }
.actu { background: var(--blanc); border-radius: var(--rayon); padding: 20px; }
.actu__type { margin: 0; font-size: 12px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--accent); }
.actu h3 { font-family: var(--police); font-size: 16.5px; letter-spacing: 0; margin: 6px 0; }
.actu h3 a { color: var(--encre); text-decoration: none; }

/* ---------- Annuaire ---------- */
.fil { font-size: 14px; color: var(--gris); padding-top: 8px; margin-bottom: 16px; }
.fil ol { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px; }
.fil li + li::before { content: '›'; margin-right: 6px; }
.fil a { color: var(--gris); }
.annuaire { display: flex; flex-wrap: wrap; gap: 28px; align-items: flex-start; }
.filtres { flex: 1 1 260px; max-width: 100%; background: var(--blanc); border-radius: var(--rayon); padding: 20px; display: flex; flex-direction: column; gap: 14px; }
@media (min-width: 900px) { .filtres { flex: 0 0 280px; position: sticky; top: 16px; } }
.resultats { flex: 999 1 480px; min-width: 0; }
.resultats__tete { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px 16px; align-items: center; margin-bottom: 16px; }
.pagination { display: flex; gap: 16px; align-items: center; justify-content: center; margin-top: 28px; font-size: 15px; }
.pagination a { font-weight: 600; }
.vide { background: var(--blanc); border-radius: var(--rayon); padding: 32px; text-align: center; color: var(--gris); }

/* ---------- Fiche association ---------- */
.fiche__tete { display: flex; flex-wrap: wrap; gap: 20px; align-items: center; margin-bottom: 24px; }
.fiche__logo { width: 88px; height: 88px; border-radius: 20px; object-fit: cover; background: var(--accent-doux); color: var(--accent); display: flex; align-items: center; justify-content: center; font-family: var(--titres); font-weight: 700; font-size: 32px; flex: 0 0 auto; }
.fiche__tete h1 { font-size: clamp(1.9rem, 4vw, 2.8rem); margin: 0 0 4px; }
.fiche__corps { display: flex; flex-wrap: wrap; gap: 24px; align-items: flex-start; }
.fiche__principal { flex: 999 1 520px; min-width: 0; display: flex; flex-direction: column; gap: 20px; }
.fiche__cote { flex: 1 1 300px; min-width: 0; display: flex; flex-direction: column; gap: 20px; }
@media (min-width: 900px) { .fiche__cote { flex: 0 0 340px; } }
.texte-asso p:last-child { margin-bottom: 0; }
.galerie { display: grid; gap: 10px; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); }
.galerie figure { margin: 0; }
.galerie img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 12px; }
.galerie figcaption { font-size: 13px; color: var(--gris); margin-top: 4px; }
.infos { margin: 0; display: grid; gap: 10px; }
.infos dt { font-size: 13px; color: var(--gris); }
.infos dd { margin: 0; font-weight: 500; overflow-wrap: anywhere; }
.encart-benevoles { background: var(--chaud-doux); border-radius: var(--rayon); padding: 20px; }
.encart-benevoles h2 { color: var(--chaud); font-size: 1.25rem; }

/* ---------- Formulaires ---------- */
.formulaire { display: flex; flex-direction: column; gap: 18px; }
fieldset { border: 0; padding: 0; margin: 0; }
legend { font-family: var(--titres); font-weight: 700; font-size: 1.25rem; margin-bottom: 12px; padding: 0; }
/* Dans un bloc blanc, le titre du bloc passe à l'intérieur au lieu de chevaucher le bord */
fieldset.carton > legend { float: left; width: 100%; margin-bottom: 0; }
.libelle { display: block; margin-bottom: 4px; font-size: 14px; font-weight: 600; }
.libelle small { font-weight: 400; color: var(--gris); }
.champ { display: block; width: 100%; min-height: 48px; padding: 10px 14px; border-radius: 10px; border: 1px solid var(--champ); background: var(--blanc); color: var(--encre); font: inherit; }
.champ:focus { border-color: var(--accent); outline: 2px solid var(--accent-doux); }
textarea.champ { min-height: 130px; resize: vertical; }
select.champ { appearance: auto; }
.champ[aria-invalid="true"] { border-color: var(--rouge); }
.aide { margin: 4px 0 0; font-size: 13.5px; color: var(--gris); }
.erreur { margin: 4px 0 0; font-size: 14px; font-weight: 500; color: var(--rouge); }
.case { display: flex; gap: 10px; align-items: flex-start; font-size: 15px; }
.case input { margin-top: 4px; width: 18px; height: 18px; accent-color: var(--accent); flex: 0 0 auto; }
.cases { display: grid; gap: 8px; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); }
.ligne-champs { display: grid; gap: 16px; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }
.autocomplete { position: relative; }
.autocomplete ul { position: absolute; z-index: 30; left: 0; right: 0; top: 100%; margin: 4px 0 0; padding: 4px 0; list-style: none; background: var(--blanc); border-radius: 12px; box-shadow: 0 12px 30px rgba(0, 0, 0, .12); max-height: 260px; overflow: auto; }
.autocomplete li { padding: 10px 14px; cursor: pointer; }
.autocomplete li[aria-selected="true"], .autocomplete li:hover { background: var(--accent-doux); }
.alerte { margin: 12px 0; padding: 12px 16px; border-radius: 12px; font-weight: 500; }
.alerte--succes { background: var(--vert-doux); color: #154E32; }
.alerte--erreur { background: var(--rouge-doux); color: var(--rouge); }
.alerte--info { background: var(--accent-doux); color: var(--accent-fonce); }
.etapes { list-style: none; margin: 0; padding: 0; display: grid; gap: 14px; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); counter-reset: etape; }
.etapes li { background: var(--fond); border-radius: var(--rayon); padding: 22px; counter-increment: etape; }
.etapes li::before { content: counter(etape); display: block; font-family: var(--titres); font-weight: 700; font-size: 28px; color: var(--accent); }
.formules { display: grid; gap: 16px; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); }
.formule { border: 1px solid var(--ligne); border-radius: 16px; padding: 24px; display: flex; flex-direction: column; gap: 8px; }
.formule--accent { border: 2px solid var(--accent); }
.formule__prix { font-family: var(--titres); font-size: 32px; font-weight: 700; }
details.question { background: var(--blanc); border-radius: 14px; padding: 16px 20px; }
details.question summary { cursor: pointer; font-weight: 600; }
details.question p { margin: 10px 0 0; color: var(--texte); }
.page-texte { background: var(--blanc); border-radius: var(--rayon); padding: 24px; }
@media (min-width: 640px) { .page-texte { padding: 40px; } }
.page-texte h2 { margin-top: 1.4em; font-size: 1.4rem; }
.page-texte h2:first-child { margin-top: 0; }

/* ---------- Espaces connectés ---------- */
.espace { display: flex; flex-wrap: wrap; gap: 24px; align-items: flex-start; padding-top: 16px; }
.espace__menu { flex: 1 1 220px; background: var(--blanc); border-radius: var(--rayon); padding: 12px; display: flex; flex-direction: column; gap: 2px; }
@media (min-width: 900px) { .espace__menu { flex: 0 0 230px; position: sticky; top: 16px; } }
.espace__menu a { display: flex; justify-content: space-between; align-items: center; padding: 10px 12px; border-radius: 10px; color: var(--encre); text-decoration: none; font-weight: 500; }
.espace__menu a:hover { background: var(--fond); }
.espace__menu a[aria-current="page"] { background: var(--accent-doux); color: var(--accent); }
.espace__menu .compteur { background: var(--accent); color: var(--blanc); border-radius: 999px; font-size: 12px; padding: 1px 8px; }
.espace__menu hr { border: 0; border-top: 1px solid var(--ligne); margin: 8px 0; }
.espace__contenu { flex: 999 1 520px; min-width: 0; display: flex; flex-direction: column; gap: 20px; }
.espace__contenu h1 { font-size: clamp(1.7rem, 3vw, 2.2rem); margin: 0; }
.chiffres { display: grid; gap: 12px; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); }
.chiffre { background: var(--blanc); border-radius: 14px; padding: 16px 18px; text-decoration: none; color: var(--encre); }
.chiffre strong { display: block; font-family: var(--titres); font-size: 30px; line-height: 1.1; }
.chiffre span { font-size: 14px; color: var(--gris); }
.tableau-defile { overflow-x: auto; background: var(--blanc); border-radius: var(--rayon); }
table { width: 100%; border-collapse: collapse; font-size: 15px; }
th, td { text-align: left; padding: 12px 14px; border-bottom: 1px solid var(--ligne); vertical-align: top; }
th { font-size: 13px; color: var(--gris); font-weight: 600; white-space: nowrap; }
tr:last-child td { border-bottom: 0; }
.progression { height: 10px; border-radius: 999px; background: var(--ligne); overflow: hidden; }
.progression span { display: block; height: 100%; background: var(--accent); }
.p0 { width: 0 } .p10 { width: 10% } .p20 { width: 20% } .p30 { width: 30% } .p40 { width: 40% } .p50 { width: 50% } .p60 { width: 60% } .p70 { width: 70% } .p80 { width: 80% } .p90 { width: 90% } .p100 { width: 100% }
.photo-gestion { display: grid; gap: 12px; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); }
.photo-gestion figure { margin: 0; background: var(--fond); border-radius: 12px; padding: 8px; }
.photo-gestion img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 8px; }
.code-secret { font-family: ui-monospace, Menlo, Consolas, monospace; font-size: 18px; letter-spacing: .12em; background: var(--fond); padding: 12px 16px; border-radius: 10px; overflow-wrap: anywhere; }
.message-corps { white-space: pre-wrap; background: var(--fond); border-radius: 12px; padding: 14px; margin: 8px 0; }
.leaflet-popup-content a { font-weight: 600; }
.repere__point { display: block; width: 18px; height: 18px; border-radius: 50%; background: var(--accent); border: 3px solid #fff; box-shadow: 0 1px 4px rgba(0, 0, 0, .35); }
.liste-carte { list-style: none; margin: 0; padding: 0; max-height: 70vh; overflow: auto; }
.liste-carte li { padding: 10px 0; border-bottom: 1px solid var(--ligne); }
.liste-carte a { font-weight: 600; color: var(--encre); text-decoration: none; }
.actu h2 { font-family: var(--police); font-size: 16.5px; letter-spacing: 0; margin: 6px 0; }
.actu h2 a { color: var(--encre); text-decoration: none; }
.texte-asso + h3, .infos + h3 { margin-top: 18px; }
.carton > .btn, .carton > p + .btn { margin-top: 6px; }
.liste-simple { list-style: none; padding-left: 0; }

/* Adresse de la fiche assoscope.fr/xxxxx */
.prefixe { display: flex; align-items: stretch; max-width: 360px; }
.prefixe__texte { display: flex; align-items: center; padding: 0 4px 0 14px; border: 1px solid var(--champ); border-right: 0; border-radius: 10px 0 0 10px; background: var(--fond); color: var(--gris); font-weight: 600; white-space: nowrap; }
.prefixe__champ { border-radius: 0 10px 10px 0; min-width: 0; font-weight: 600; letter-spacing: .08em; }
.aide--ok { color: var(--vert); font-weight: 600; }

/* ==========================================================================
   Fiche association : bloc photo + contact, tableau des événements,
   lignes d'événements dans le formulaire, correcteur
   ========================================================================== */

/* Fiche publique : Photo 1 à gauche, Contact à droite */
.fiche__haut { display: grid; gap: 20px; grid-template-columns: minmax(0, 3fr) minmax(0, 2fr); margin-bottom: 24px; align-items: stretch; }
.fiche__photo { margin: 0; border-radius: var(--rayon); overflow: hidden; background: var(--accent-doux); aspect-ratio: 16 / 10; }
.fiche__photo img { width: 100%; height: 100%; object-fit: cover; }
.fiche__photo img.fiche__photo--logo { object-fit: contain; padding: 12%; background: var(--blanc); }
.fiche__photo-vide { display: flex; align-items: center; justify-content: center; height: 100%; font-family: var(--titres); font-size: 5rem; font-weight: 700; color: var(--accent); opacity: .45; }
.fiche__contact { display: flex; flex-direction: column; }
.fiche__contact .pile { margin-top: auto; padding-top: 12px; }
.reseaux { display: flex; flex-wrap: wrap; gap: 8px; margin: 14px 0 0; }
.reseau { display: inline-flex; align-items: center; min-height: 36px; padding: 6px 14px; border: 1px solid var(--champ); border-radius: 999px; font-size: 14px; font-weight: 600; color: var(--encre); text-decoration: none; }
.reseau:hover { border-color: var(--accent); color: var(--accent); }
@media (max-width: 760px) { .fiche__haut { grid-template-columns: 1fr; } }

/* Fiche publique : événements en lignes Date / Lieu / Thème / Photo */
.evts-public { display: grid; gap: 10px; }
.evts-public__entete, .evts-public__ligne { display: grid; grid-template-columns: 92px minmax(0, 1fr) minmax(0, 1.6fr) 104px; gap: 14px; align-items: center; }
.evts-public__entete { padding: 0 14px; font-size: 12.5px; font-weight: 600; letter-spacing: .05em; text-transform: uppercase; color: var(--gris); }
.evts-public__ligne { padding: 12px 14px; border: 1px solid var(--ligne); border-radius: 14px; }
.evts-public__ligne p { margin: 0; }
.evts-public__date { text-align: center; line-height: 1.1; }
.evts-public__date .evenement__jour, .evts-public__date .evenement__mois { display: block; }
.evts-public__heure { display: block; margin-top: 4px; font-size: 12.5px; color: var(--gris); }
.evts-public__lieu { font-size: 15px; }
.evts-public__etiquette { display: none; color: var(--gris); }
.evts-public__theme > * + * { margin-top: 4px; }
.evts-public__photo img { width: 104px; height: 78px; object-fit: cover; border-radius: 10px; }
@media (max-width: 640px) {
  .evts-public__entete { display: none; }
  .evts-public__ligne { grid-template-columns: 64px minmax(0, 1fr); grid-template-areas: "date theme" "date lieu" "photo photo"; row-gap: 4px; }
  .evts-public__date { grid-area: date; align-self: start; }
  .evts-public__theme { grid-area: theme; }
  .evts-public__lieu { grid-area: lieu; font-size: 14px; }
  .evts-public__etiquette { display: inline; }
  .evts-public__photo { grid-area: photo; }
  .evts-public__photo:empty { display: none; }
  .evts-public__photo img { width: 100%; height: 160px; margin-top: 8px; }
}

/* Formulaire : photo principale */
.photo-principale__img { width: 100%; max-width: 320px; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 12px; }

/* Formulaire : lignes d'événements */
.evts-fiche__tete { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: flex-start; gap: 6px 20px; }
.evts-fiche__tete .aide { flex: 1 1 320px; margin: 0; }
.evts-fiche__compteur { margin: 0; font-size: 15px; color: var(--gris); }
.evts-fiche__compteur strong { font-size: 1.2rem; color: var(--accent); }
.evts-fiche__compteur--plein strong { color: var(--chaud); }
.evts-fiche__liste { display: grid; gap: 12px; }
.evts-fiche__liste:empty { display: none; }
.evts-fiche__max { margin: 0; padding: 10px 14px; border-radius: 12px; background: var(--chaud-doux); color: var(--chaud); font-size: 14.5px; font-weight: 500; }
.evt-ligne { display: grid; grid-template-columns: minmax(0, 1fr) 140px auto; gap: 14px 18px; align-items: start; padding: 16px; border: 1px solid var(--ligne); border-radius: 14px; background: var(--fond); transition: opacity .2s; }
.evt-ligne--attente { opacity: .45; pointer-events: none; }
.evt-ligne__champs { display: grid; grid-template-columns: 170px minmax(0, 1fr); gap: 12px; }
.evt-ligne__theme { grid-column: 1 / -1; }
.evt-ligne__tarif { grid-column: 1 / -1; display: grid; gap: 10px; }
.evt-ligne__tarif > .case { font-weight: 600; }
.evt-ligne__payant { display: grid; grid-template-columns: 170px minmax(0, 1fr); gap: 12px; }
.evt-ligne__payant textarea { min-height: 0; resize: vertical; }
.evt-ligne__photo { display: grid; gap: 6px; justify-items: start; }
.evt-ligne__apercu { width: 140px; height: 96px; border-radius: 10px; overflow: hidden; border: 1px dashed var(--champ); background: var(--blanc); display: flex; align-items: center; justify-content: center; font-size: 13px; color: var(--gris); }
.evt-ligne__apercu img { width: 100%; height: 100%; object-fit: cover; }
.evt-ligne__fichier { position: relative; overflow: hidden; }
.evt-ligne__fichier input { position: absolute; inset: 0; opacity: 0; cursor: pointer; }
.evt-ligne__fichier:focus-within { outline: 3px solid var(--accent); outline-offset: 2px; }
.evt-ligne__actions { display: grid; gap: 8px; justify-items: end; padding-top: 26px; }
@media (max-width: 900px) {
  .evt-ligne { grid-template-columns: minmax(0, 1fr) auto; }
  .evt-ligne__champs { grid-column: 1 / -1; }
  .evt-ligne__actions { padding-top: 0; align-self: end; }
}
@media (max-width: 520px) {
  .evt-ligne__champs, .evt-ligne__payant { grid-template-columns: 1fr; }
  .evt-ligne { grid-template-columns: 1fr; }
  .evt-ligne__actions { justify-items: start; }
}

/* Correcteur sous chaque paragraphe */
.correcteur { margin-top: 6px; }
.correcteur__bouton { display: inline-flex; align-items: center; gap: 5px; padding: 4px 11px; border: 1px solid var(--champ); border-radius: 999px; background: var(--blanc); color: var(--gris); font: inherit; font-size: 13px; font-weight: 600; cursor: pointer; }
.correcteur__bouton:hover { border-color: var(--accent); color: var(--accent); }
.correcteur__bouton--attente { opacity: .6; cursor: progress; }
.correcteur__bouton--attente span::after { content: '…'; }
.correcteur__panneau { margin-top: 8px; padding: 12px 14px; border: 1px solid var(--ligne); border-radius: 12px; background: var(--blanc); font-size: 14.5px; }
.correcteur__panneau p { margin: 0; }
.correcteur__panneau ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.correcteur__panneau li { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; padding-bottom: 8px; border-bottom: 1px solid var(--ligne); }
.correcteur__panneau li:last-child { padding-bottom: 0; border-bottom: 0; }
.correcteur__panneau small { flex-basis: 100%; color: var(--gris); }
.correcteur__tete { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; }
.correcteur__tete strong { margin-right: auto; }
.correcteur__ok { color: var(--vert); font-weight: 600; }
.correcteur__ok::before { content: '✓ '; }
.correcteur__faute { font-weight: 600; white-space: pre-wrap; text-decoration: underline wavy var(--rouge); text-underline-offset: 3px; }
.correcteur__sugg { padding: 3px 10px; border: 0; border-radius: 6px; background: var(--accent-doux); color: var(--accent-fonce); font: inherit; font-size: 14px; font-weight: 600; cursor: pointer; }
.correcteur__sugg:hover { background: var(--accent); color: var(--blanc); }
.correcteur__ignorer { margin-left: auto; padding: 0; border: 0; background: none; color: var(--gris); font: inherit; font-size: 13px; text-decoration: underline; cursor: pointer; }
.correcteur__fermer { padding: 0 4px; border: 0; background: none; color: var(--gris); font-size: 22px; line-height: 1; cursor: pointer; }

/* Case à cocher indisponible (limite atteinte, ex. 3 thématiques) */
.case--grisee { opacity: .45; cursor: not-allowed; }

/* Envoi du logo à l'inscription, avec aperçu */
.logo-envoi { display: flex; align-items: flex-start; gap: 16px; }
.logo-envoi__apercu { flex: 0 0 auto; width: 88px; height: 88px; border-radius: 18px; border: 1px dashed var(--champ); background: var(--fond); color: var(--gris); display: flex; align-items: center; justify-content: center; overflow: hidden; }
.logo-envoi__apercu img { width: 100%; height: 100%; object-fit: contain; background: var(--blanc); }
.logo-envoi__champ { flex: 1; min-width: 0; }

/* Bloc « Votre formule » à l'inscription */
.formule__prix { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 18px; }
.formule__montant { font-family: var(--titres); font-weight: 800; font-size: 2.4rem; line-height: 1; letter-spacing: -0.03em; color: var(--accent); }
.formule__detail { font-size: 15px; font-weight: 400; line-height: 1.4; }
.formule__nom { margin: 0; }
.formule__option { padding: 14px 16px; border: 1px solid var(--ligne); border-radius: 14px; background: var(--fond); align-items: flex-start; }
.formule__option:has(input:checked) { border-color: var(--accent); background: var(--accent-doux); }
.formule__avantages { display: flex; flex-direction: column; gap: 2px; margin-top: 6px; font-size: 14px; color: var(--texte); }
.formule__avantages span::before { content: "+ "; color: var(--accent); font-weight: 700; }

/* ---------- Fiche association (assoscope.fr/[5 lettres]) ---------- */
.af-tete { display: flex; flex-wrap: wrap; align-items: center; gap: 16px 22px; margin-bottom: 20px; }
.af-tete__logo { flex: 0 0 auto; width: 96px; height: 96px; border-radius: 22px; object-fit: contain; background: var(--blanc); border: 1px solid var(--ligne); }
.af-tete__logo--initiales { display: flex; align-items: center; justify-content: center; background: var(--accent-doux); border-color: var(--accent-doux); color: var(--accent); font-family: var(--titres); font-weight: 800; font-size: 32px; }
.af-tete__texte { flex: 1 1 320px; min-width: 0; }
.af-tete h1 { font-size: clamp(1.9rem, 4.5vw, 3rem); line-height: 1.05; margin: 0 0 6px; }
.af-tete__lieu { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; margin: 0 0 10px; color: var(--texte); }
.af-tete__lieu svg { color: var(--accent); }
.af-tete__carte { font-size: 14px; font-weight: 600; color: var(--accent); }
.af-couverture { position: relative; margin: 0 0 24px; border-radius: 24px; overflow: hidden; aspect-ratio: 16 / 6; background: var(--accent-doux); }
.af-couverture img { width: 100%; height: 100%; object-fit: cover; display: block; }
@media (max-width: 639px) { .af-couverture { aspect-ratio: 16 / 9; border-radius: 18px; } }
.af-couverture--vide { aspect-ratio: auto; min-height: 120px; background: linear-gradient(120deg, #94477A, #7A2E5A 45%, #3B55A3); display: flex; align-items: flex-end; padding: 24px 28px; }
.af-couverture__nom { font-family: var(--titres); font-weight: 800; font-size: clamp(1.4rem, 4vw, 2.4rem); letter-spacing: -0.03em; color: rgba(255, 255, 255, .92); }
.af-corps { display: grid; gap: 24px; grid-template-columns: minmax(0, 1fr); align-items: start; }
@media (min-width: 960px) { .af-corps { grid-template-columns: minmax(0, 1fr) 340px; } }
.af-principal, .af-cote { display: flex; flex-direction: column; gap: 20px; min-width: 0; }
@media (min-width: 960px) { .af-cote { position: sticky; top: 16px; } }
.af-actu { border-left: 4px solid var(--accent); }
.af-actu__image { width: 100%; max-height: 360px; object-fit: cover; border-radius: 14px; margin-bottom: 14px; }
.af-plus { margin-top: 14px; border-top: 1px solid var(--ligne); padding-top: 12px; }
.af-plus summary { cursor: pointer; font-weight: 600; color: var(--accent); }
.af-plus__article { padding-top: 14px; }
.af-publics { margin: 14px 0 0; }
.af-galerie { display: grid; gap: 12px; grid-template-columns: repeat(auto-fill, minmax(min(100%, 200px), 1fr)); }
.af-galerie figure { margin: 0; }
.af-galerie img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 14px; display: block; }
.af-galerie figcaption { font-size: 13.5px; color: var(--gris); margin-top: 6px; }
.af-infos { gap: 14px; }
.af-identite { display: flex; flex-direction: column; gap: 14px; }
.af-identite__tete { display: flex; align-items: center; gap: 12px; }
.af-identite__tete h2 { margin: 0; font-size: 1.2rem; }
.af-identite__logo { flex: 0 0 auto; width: 56px; height: 56px; border-radius: 14px; object-fit: contain; background: var(--blanc); border: 1px solid var(--ligne); font-size: 20px; }
.af-liens { display: flex; flex-wrap: wrap; gap: 4px 12px; }
.af-liens a { color: var(--accent); }
.af-suivre__titre { margin: 0; font-size: 13px; color: var(--gris); }
.af-suivre .reseaux { margin-top: 6px; }
.af-partage__adresse { margin: 0 0 12px; font-family: ui-monospace, 'SFMono-Regular', Menlo, Consolas, monospace; font-size: 15px; font-weight: 600; color: var(--accent); overflow-wrap: anywhere; }
.af-contact-mobile { display: flex; gap: 10px; margin: -6px 0 20px; }
.af-contact-mobile .btn { flex: 1; }
@media (min-width: 960px) { .af-contact-mobile { display: none; } }

/* Bouton « Partager » de la fiche : menu au survol, au clic (téléphone) et au clavier */
.partage { position: relative; align-self: flex-start; margin-left: auto; }
.partage__bouton { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 8px 16px; border: 1px solid var(--champ); border-radius: 999px; background: var(--blanc); color: var(--encre); font: inherit; font-size: 15px; font-weight: 600; cursor: pointer; }
.partage__bouton:hover, .partage.ouvert .partage__bouton { border-color: var(--accent); color: var(--accent); }
.partage__menu { position: absolute; right: 0; top: 100%; z-index: 20; min-width: 290px; white-space: nowrap; margin-top: 0; padding: 14px 8px 8px; display: none; flex-direction: column; }
.partage__menu::before { content: ""; position: absolute; inset: 8px 0 0; z-index: -1; background: var(--blanc); border: 1px solid var(--ligne); border-radius: 16px; box-shadow: 0 14px 34px rgba(29, 26, 34, .16); }
.partage:hover .partage__menu, .partage:focus-within .partage__menu, .partage.ouvert .partage__menu { display: flex; }
.partage__menu a, .partage__menu button { display: flex; align-items: center; gap: 10px; width: 100%; padding: 10px 12px; border: 0; border-radius: 10px; background: none; color: var(--encre); font: inherit; font-size: 15px; text-align: left; text-decoration: none; cursor: pointer; }
.partage__menu a:hover, .partage__menu button:hover, .partage__menu a:focus-visible, .partage__menu button:focus-visible { background: var(--accent-doux); color: var(--accent); }
.partage__menu svg { flex: 0 0 auto; color: var(--accent); }
@media (max-width: 639px) { .partage { margin-left: 0; } .partage__menu { left: 0; right: auto; } }

/* Encart « Appelez-moi » (morceaux/appel.php) */
.appel { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 20px 32px; align-items: center; margin-top: 28px; padding: 26px 28px; border-radius: var(--rayon); background: var(--accent); color: var(--blanc); }
.appel__surtitre { margin: 0 0 4px; font-size: 13px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--accent-doux); }
.appel__titre { margin: 0 0 6px; font-size: clamp(1.3rem, 2.6vw, 1.7rem); color: var(--blanc); }
.appel__chapo { margin: 0; max-width: 60ch; color: var(--accent-doux); }
.appel__numero { display: inline-flex; align-items: center; gap: 14px; padding: 14px 22px; border-radius: 999px; background: var(--blanc); color: var(--accent-fonce); text-decoration: none; white-space: nowrap; }
.appel__numero:hover { background: var(--accent-doux); }
.appel__numero:focus-visible { outline: 3px solid var(--blanc); outline-offset: 3px; }
.appel__numero > span { display: grid; line-height: 1.15; }
.appel__prenom { font-size: 13px; font-weight: 600; color: var(--gris); }
.appel__tel { font-family: var(--titres); font-size: 1.6rem; font-weight: 700; letter-spacing: .01em; }
.section--appel { padding-bottom: 28px; }
.section--appel .appel { margin-top: 0; }
@media (max-width: 720px) {
  .appel { grid-template-columns: 1fr; padding: 22px 20px; }
  .appel__numero { justify-self: start; }
}

/* Page Contact : coordonnées et carte de France figée */
.contact-coord { display: grid; gap: 20px; grid-template-columns: 1fr; margin-bottom: 20px; align-items: center; }
.contact-coord__infos p { margin: 0 0 12px; }
.contact-coord__infos a { color: var(--encre); text-decoration: none; }
.contact-coord__carte { height: 300px; border-radius: 14px; cursor: default; }
.contact-coord__carte .leaflet-tooltip { font-weight: 600; }
@media (min-width: 640px) {
  .contact-coord { grid-template-columns: 1fr 1.4fr; }
  .contact-coord__carte { height: 320px; }
}
