/* Point Franchises — compléments du site aux styles des maquettes v2 (commun.css, inchangé). */

/* Emplacements publicitaires (pub/PUB-ET-TAGS.md). Recette V1 / V3 (Sébastien, 01/11) : emplacements dynamiques,
   aucune hauteur réservée sans créative ; pf-pub.js pose .pub--remplie quand GAM en livre une (slotRenderEnded),
   collapseEmptyDivs replie le conteneur GPT sinon. Le conteneur reste affiché (GPT doit pouvoir y rendre l'annonce),
   sans hauteur ni marge tant qu'il est vide. */
.pub{display:flex;justify-content:center;align-items:center}
.pub--banniere{max-width:1180px;margin:0 auto;padding:0 20px}
.pub--banniere.pub--remplie{padding-top:8px}
.actualites-pub:not(:has(.pub--remplie)){grid-template-columns:minmax(0,1fr)}

/* Décision 9 : au-delà de 30 cartes, les suivantes restent dans le HTML, repliées jusqu'au clic. */
.est-replie[data-visibles="30"] > li:nth-child(n+31){display:none}
/* Blocs de liens : listes filles complètes dans le HTML, repliées au-delà de 6 (listes) ou 10 (hubs). */
.est-replie[data-visibles="6"] > li:nth-child(n+7),.est-replie[data-visibles="10"] > li:nth-child(n+11){display:none}
.voir-plus{display:flex;justify-content:center;margin-top:4px}

/* Enseigne sans logo : initiales (comportement des maquettes, cf. 00-DONNEES-SIMULEES.md). */
.carte-enseigne__logo .initiales{width:96px;height:96px;font-size:28px}

/* Accueil : pavé pub à droite des actualités en desktop, dessous en mobile (arbitrage du 31/10). */
.actualites-pub{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:24px;align-items:start}
/* U10 (lot 22, vague 2) : les 4 news de l'accueil en 2 × 2, avec ou sans pavé publicitaire ; une colonne sous 641 px */
@media (min-width:641px){.actualites-pub .grille-articles{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:999px){.actualites-pub{grid-template-columns:minmax(0,1fr)}}

/* Fiche 04 : boutons retirés de la colonne principale (01/11) ; la barre collante couvre toute la plage où
   l'encart « Documentation gratuite » passe sous le contenu (≤ 999 px, maquette : ≤ 640 px seulement). */
@media (max-width:999px){.barre-mobile{display:flex}.barre-mobile .btn{flex:1}}
/* U3 (lot 22, vague 2) : barre de sélection des listes et des hubs, masquée tant que la sélection est vide */
.barre-selection{align-items:center}
.barre-selection[hidden]{display:none}
.barre-selection__libelle{display:flex;align-items:center;gap:6px;font-size:14px;font-weight:700;white-space:nowrap}

/* Recette V2 : encart enseigne des articles, description en texte brut limitée à 4 lignes. */
.encart-enseigne__desc{display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}

/* Recette V4 : accueil, « les plus recherchées » : libellé du secteur sur 2 lignes au plus, carte à hauteur automatique. */
.vedette{grid-template-rows:72px 40px auto}
.vedette__secteur{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}

/* Recette V7 : compteur animé et message bref partout ; « Retirer » au survol sur les boutons larges seulement
   (fiche, encarts : .btn--bloc, .btn--grand). Vignettes (.btn-selection--coin, 32 px) : icône seule « + » / « ✓ »,
   couleur inversée une fois cochée (commun.css), title et aria-label (Sébastien, 01/11 14 h 40). */
.btn-selection .btn__retirer{display:none}
@media (hover:hover){
  .btn-selection.btn--bloc[aria-pressed="true"]:hover .btn__libelle,.btn-selection.btn--bloc[aria-pressed="true"]:hover .si-coche,
  .btn-selection.btn--grand[aria-pressed="true"]:hover .btn__libelle,.btn-selection.btn--grand[aria-pressed="true"]:hover .si-coche{display:none}
  .btn-selection.btn--bloc[aria-pressed="true"]:hover .btn__retirer,.btn-selection.btn--grand[aria-pressed="true"]:hover .btn__retirer{display:inline}
}
.compteur--anime{animation:compteur-pulse .45s ease-out}
@keyframes compteur-pulse{0%{transform:scale(1)}40%{transform:scale(1.45)}100%{transform:scale(1)}}
.message-selection{position:fixed;left:16px;right:16px;bottom:16px;z-index:900;display:flex;align-items:center;gap:14px;width:fit-content;max-width:560px;margin:0 auto;padding:12px 16px;border-radius:var(--rayon);background:var(--brun);color:var(--blanc);font-size:14px;font-weight:700;box-shadow:var(--ombre-haute);transform:translateY(16px);opacity:0;visibility:hidden;transition:opacity .2s,transform .2s,visibility 0s .2s}
.message-selection--visible{opacity:1;visibility:visible;transform:none;transition:opacity .2s,transform .2s}
.message-selection__lien{flex:none;padding:0;border:0;background:none;color:var(--jaune);font:inherit;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
@media (max-width:999px){body:has(.barre-mobile:not([hidden])) .message-selection{bottom:80px}}
@media (prefers-reduced-motion:reduce){.compteur--anime{animation:none}.message-selection{transition:none}}

/* Hub ville sans secteur (01/11) : champ de filtre masqué, la carte garde sa largeur de maquette. */
.hub-filtres--sans-champ{grid-template-columns:minmax(0,360px);justify-content:center}

/* Recette n° 12 (01/11) : (1) listes, mobile : « Demander une documentation à tous ces réseaux » (white-space:nowrap
   des .btn) débordait de 33 px et élargissait la page ; retour à la ligne autorisé. (2) Contact : .champ label (0 de
   marge intérieure) écrasait .profil. (4) Annuaire : .alphabet span transformait le séparateur en case grise 36 × 36. */
@media (max-width:640px){.barre-outils [data-zone="cta-tous"]{white-space:normal;text-align:center;flex:1 1 100%;min-width:0;max-width:100%}}
.champ .profil{padding:14px 16px}
.alphabet .alphabet__separateur{width:1px;min-width:0;height:20px;padding:0;margin:0 4px;border-radius:0;background:var(--gris-200)}
@media (min-width:1000px){.alphabet{gap:2px}}   /* 26 lettres + 0-9 + Top 10 sur une ligne (16 px de trop à 4 px) */

/* Fiche 04, mise en page V1 (maquettes/PF 04 - Fiche enseigne.html, Sébastien 01/11 16 h 14), mesures relevées à 1 440 px. */
.fiche-carte{display:flex;gap:24px;align-items:flex-start;padding:24px;position:relative}
.fiche-carte__logo{width:120px;height:120px;flex-shrink:0;box-sizing:border-box;object-fit:contain;border:1px solid var(--gris-200);border-radius:var(--rayon);background:var(--blanc);padding:6px}
.fiche-carte__initiales{display:grid;place-items:center;background:var(--fond);font-size:36px;font-weight:900}
.fiche-carte__texte{display:flex;flex-direction:column;gap:10px;min-width:0}
.fiche-carte__surtitre{margin:0;font-size:12px;font-weight:700;line-height:1.5;text-transform:uppercase;letter-spacing:.06em;color:var(--gris-600)}
.fiche-carte h1{margin:0;font-size:32px;font-weight:900;line-height:1.15;letter-spacing:-.01em}
.fiche-carte__slogan{margin:0;font-size:20px;font-weight:700;line-height:1.3}
.fiche-carte__accroche{margin:0;font-size:16px;line-height:1.5;color:var(--gris-600);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.fiche-chiffres-v1{display:flex;flex-direction:column;gap:18px;padding:20px 24px}
.fiche-chiffres-v1 h2{margin:0;font-size:20px;font-weight:700;line-height:1.2}
.fiche-chiffres-v1__grille{margin:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px 24px}
.fiche-chiffres-v1__grille dt,.fiche-cta__chiffres dt{font-size:12px;font-weight:700;line-height:1.5;text-transform:uppercase;letter-spacing:.06em;color:var(--gris-600)}
.fiche-chiffres-v1__grille dd{margin:2px 0 0;font-size:20px;font-weight:900;line-height:1.2;color:var(--noir);overflow-wrap:anywhere}
.fiche-chiffres-v1__redevances{margin:0;padding-top:14px;border-top:1px solid var(--filet);display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px 32px;font-size:14px;line-height:1.5}
.fiche-chiffres-v1__redevances div{display:flex;gap:12px;justify-content:space-between}
.fiche-chiffres-v1__redevances dt{color:var(--gris-600)}
/* Source et date des chiffres sous le titre du bloc, avant les valeurs (Sébastien, 01/11 : la légitimité se lit d'abord) */
.fiche-chiffres-v1__tete{display:flex;flex-direction:column;gap:4px}
.fiche-chiffres-v1__source{margin:0;font-size:13px;line-height:1.5;color:var(--gris-600)}
.fiche-chiffres-v1__redevances dd{margin:0;font-weight:700;text-align:right}
.fiche-chiffres-v1 .zones-implantation__emplacement{font-size:14px;line-height:1.5;color:var(--gris-600)}
.fiche-chiffres-v1 .zones-implantation__emplacement strong{color:var(--brun)}
.fiche-cta__chiffres div{display:flex;flex-direction:column}
.fiche-cta__chiffres dd{margin:2px 0 0;font-weight:900;line-height:1.05;letter-spacing:-.01em;color:var(--noir)}
/* Sticky V1 : la colonne (pas le bloc) colle, donc sur toute la hauteur de la grille ; en n° 12 le bloc collait dans une
   colonne à peine plus haute que lui et s'arrêtait tôt. */
@media (min-width:1000px){.fiche-colonne{position:sticky;top:16px;align-self:start}.fiche-colonne .fiche-cta{position:static}}
.fiche-accordeon{padding:0;display:block}
.fiche-accordeon summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 24px;cursor:pointer;border-radius:var(--rayon)}
.fiche-accordeon summary::-webkit-details-marker{display:none}
.fiche-accordeon summary h2{margin:0;font-size:24px;font-weight:700;line-height:1.2;text-wrap:balance}
.fiche-accordeon summary svg{flex-shrink:0;transition:transform .2s}
.fiche-accordeon:not([open]) summary svg{transform:rotate(180deg)}
.fiche-accordeon__corps{display:block;padding:4px 24px 28px;font-size:16px;line-height:1.6;color:var(--brun)}
/* Essai 01/11 : rythme typographique unique des rubriques (pfgen/rubriques.py) : une famille, deux tailles de corps (16 et 18),
   un seul intertitre avec le trait jaune du site, puces du site, colonne de lecture de 72 caractères. */
.fiche-accordeon__corps > *,.fiche-accordeon__corps .rubrique-suite > *{max-width:72ch}
.fiche-accordeon__corps p{margin:0 0 1em;font-size:16px;line-height:1.6}
.fiche-accordeon__corps .chapeau{font-size:18px;line-height:1.55;color:var(--brun-survol);margin-bottom:1.1em}
.fiche-accordeon__corps h3{margin:1.6em 0 .6em;font-size:18px;font-weight:700;line-height:1.3}
.fiche-accordeon__corps h3::after{content:"";display:block;width:28px;height:3px;margin-top:8px;border-radius:2px;background:var(--jaune)}
.fiche-accordeon__corps > h3:first-child{margin-top:.4em}
.fiche-accordeon__corps ul,.fiche-accordeon__corps ol{margin:0 0 1em;padding:0;list-style:none}
.fiche-accordeon__corps ol{counter-reset:rubrique}
.fiche-accordeon__corps li{position:relative;padding-left:20px;margin:0 0 .45em}
.fiche-accordeon__corps ul > li::before{content:"";position:absolute;left:0;top:.62em;width:8px;height:8px;border-radius:2px;background:var(--jaune)}
.fiche-accordeon__corps ol > li{counter-increment:rubrique}
.fiche-accordeon__corps ol > li::before{content:counter(rubrique) ".";position:absolute;left:0;font-weight:700}
.fiche-accordeon__corps strong{font-weight:700}
.fiche-accordeon__corps a{text-underline-offset:3px}
.fiche-accordeon__corps blockquote{margin:1.2em 0;padding:4px 0 4px 18px;border-left:3px solid var(--jaune);font-size:18px;line-height:1.5}
.fiche-accordeon__corps blockquote p{margin:0}
.fiche-accordeon__corps figure{margin:0 0 1em}
.fiche-accordeon__corps figure img{display:block;max-width:100%;height:auto;border-radius:var(--rayon);border:1px solid var(--gris-200)}
.rubrique-tableau{max-width:100%;overflow-x:auto;margin:0 0 1em;-webkit-overflow-scrolling:touch}
.rubrique-tableau table{border-collapse:collapse;min-width:100%;font-size:15px;line-height:1.5}
.rubrique-tableau td{padding:10px 12px;border-bottom:1px solid var(--filet);vertical-align:top;text-align:left}
.rubrique-tableau tr:first-child td{border-top:1px solid var(--filet)}
.fiche-accordeon .rubrique-suite{display:none}
.fiche-accordeon.est-ouvert .rubrique-suite{display:block}
.rubrique-lire{margin-top:-.2em}
.fiche-interesse{background:var(--brun);color:var(--blanc);border-radius:var(--rayon);padding:20px 24px;display:flex;flex-wrap:wrap;gap:16px;align-items:center;justify-content:space-between}
.fiche-interesse__texte{min-width:200px}
.fiche-interesse__titre{margin:0;font-size:18px;font-weight:700;line-height:1.5}
.fiche-interesse__sous-titre{margin:0;font-size:14px;line-height:1.5;color:var(--gris-200)}
.fiche-interesse__actions{display:flex;flex-wrap:wrap;gap:8px}
.fiche-interesse .fiche-interesse__sel{background:transparent;color:var(--blanc);border-color:var(--blanc)}
.fiche-interesse .fiche-interesse__sel[aria-pressed="true"]{background:var(--blanc);color:var(--brun)}
@media (max-width:640px){.fiche-accordeon summary{padding:16px}.fiche-accordeon summary h2{font-size:20px}.fiche-accordeon__corps{padding:4px 16px 20px}.fiche-accordeon__corps .chapeau{font-size:17px}.fiche-interesse{padding:16px}}
.fiche-maillage{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px}
.fiche-maillage__bloc{background:var(--blanc);border:1px solid var(--gris-200);border-radius:var(--rayon);padding:18px 20px}
.fiche-maillage__bloc h2{margin:0 0 10px;font-size:16px;font-weight:700;line-height:1.3}
.fiche-maillage__bloc ol{margin:0;padding:0;list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:4px 16px;font-size:14px}
.fiche-maillage__bloc li{display:flex;gap:10px;align-items:baseline;min-width:0}
.fiche-maillage__rang{width:14px;flex-shrink:0;text-align:right;font-size:13px;font-weight:900;color:var(--gris-600)}
.fiche-maillage__bloc a{min-height:28px;display:inline-flex;align-items:center;text-decoration:none;overflow-wrap:anywhere}
.fiche-maillage__bloc a:hover{text-decoration:underline}
@media (max-width:760px){.fiche-chiffres-v1__grille{grid-template-columns:repeat(2,minmax(0,1fr))}.fiche-chiffres-v1__redevances{grid-template-columns:minmax(0,1fr)}}
@media (max-width:640px){
  .fiche-carte{gap:16px;padding:16px}
  .fiche-carte__logo{width:72px;height:72px;padding:4px}
  .fiche-carte__initiales{font-size:24px}
  .fiche-carte h1{font-size:26px}
  .fiche-carte__slogan{font-size:17px}
  .fiche-chiffres-v1{padding:16px}
}

/* Articles news / infos (Sébastien, 01/11 17 h 36) : la carte du texte (max-width 760 px dans commun.css) était plus
   étroite que la carte du titre ; même largeur, même bord droit. Encart enseigne : un nom long (BOULANGERIES SOPHIE
   LEBREUILLY) débordait du bouton (white-space:nowrap des .btn) ; le libellé passe à la ligne, centré. */
.article__corps{max-width:none}
.encart-enseigne .btn{white-space:normal;text-align:center;line-height:1.25;height:auto;padding-top:10px;padding-bottom:10px;overflow-wrap:anywhere}

/* Compteur « Ma sélection » vide : désactivé (pf-site.js), visible et grisé. */
.entete__selection:disabled{cursor:default;opacity:.55}
.entete__selection:disabled:hover{background:var(--blanc)}

/* Conteneur du marqueur Piano (repris du site actuel). */
.hidden{display:none}

/* Autocomplétion (lot 17). commun.css passait tout « li span » en capitales, libellé compris : libellé en casse
   normale, compte ou type en clair (« 5 enseignes », « Ville ») ; partie prédite en gras, partie saisie (mark) en normal
   (Baymard, arbitrage du chef de projet, 01/11 22 h 45) ; option active encadrée ;
   cibles de 44 px ; 8 suggestions au plus, sans ascenseur (Baymard). Mobile : champ et liste sur toute la largeur. */
.suggestions{max-height:none;overflow:visible}
.suggestions li{min-height:44px;padding:6px 14px;line-height:1.3}
.suggestions li .suggestions__libelle{min-width:0;overflow-wrap:anywhere;font-size:inherit;font-weight:700;text-transform:none;letter-spacing:0;color:inherit}
.suggestions li .suggestions__meta{flex-shrink:0;white-space:nowrap;font-size:13px;font-weight:400;text-transform:none;letter-spacing:0;color:var(--gris-600)}
.suggestions mark{background:none;color:inherit;font-weight:400}
.suggestions li[aria-selected="true"]{outline:2px solid var(--brun);outline-offset:-2px}
.suggestions li.suggestions__vide{cursor:default}
@media (max-width:640px){.recherche-index form{flex-direction:column;align-items:stretch}.suggestions li{font-size:16px}}

/* Champs de recherche (lot 19 H, Sébastien 01/11) : aucun placeholder tronqué (1 440, 1 280, 390), saisie et placeholder à la
   même taille, 17 px en bureau et 16 px en mobile (pas de zoom iOS), placeholder var(--gris-600) (contraste mesuré 6,8:1 sur fond blanc) ; accueil :
   libellés visibles « Où ? » / « Secteur d'activité » au-dessus des champs, bouton aligné sur les champs, jamais réduit. */
.recherche .saisie,.hero__champs .saisie{font-size:17px}
.saisie::placeholder{color:var(--gris-600);opacity:1}
.hero__champ{display:flex;flex-direction:column;gap:6px;min-width:0}
.hero__libelle{font-size:14px;font-weight:700;color:var(--brun)}
.hero__champs{align-items:end}
.hero__champs .btn{flex-shrink:0;white-space:nowrap}
@media (max-width:640px){.recherche .saisie,.hero__champs .saisie{font-size:16px}}
