/* Geek Life V4 — page Exposants : ce que les éléments atomiques ne savent pas faire seuls
   (fiche en surimpression, filtres, « Afficher plus », cartes sans visuel). Chargée par [gl_exposants_index].
   Repères posés dans Elementor par identifiant HTML (_cssid) : #xp-… et #stand-<slug> pour les cartes de la boucle. */

/* --- Fiche en surimpression : cachée hors éditeur, ouverte par le script --- */
body:not(.elementor-editor-active) #xp-fiche{display:none!important}
body:not(.elementor-editor-active) #xp-fiche.est-ouverte{display:flex!important}
/* « body » devant : le conteneur Elementor (.e-con) impose position:relative à la même spécificité. */
body #xp-fiche{position:fixed;top:0;right:0;bottom:0;left:0;width:auto;z-index:99990;margin:0}
body #xp-fiche-voile{position:absolute;top:0;right:0;bottom:0;left:0;width:auto;height:auto;cursor:pointer}
body #xp-fiche-panneau{position:relative;overscroll-behavior:contain}
/* Dans l'éditeur : fiche posée dans le flux de la page, pour ne pas recouvrir le canevas. */
body.elementor-editor-active #xp-fiche{position:relative;top:auto;right:auto;bottom:auto;left:auto;z-index:1;height:auto;min-height:0;margin:40px 0}
body.elementor-editor-active #xp-fiche-voile{display:none}
html.xp-fiche-ouverte,html.xp-fiche-ouverte body{overflow:hidden}
#xp-fiche-photo,#xp-fiche-photo img{display:block}
picture#xp-fiche-photo>img{display:block;width:100%;height:100%;object-fit:cover}
#xp-fiche.sans-visuel #xp-fiche-photo{display:none!important}
#xp-fiche:not(.sans-visuel) #xp-fiche-vide{display:none!important}
#xp-fiche-tags .xp-tag{height:28px;display:inline-flex;align-items:center;padding:0 10px;border-radius:999px;background:#F3F5F6;color:#1D2424;font:700 12px/1 'Inter',sans-serif}
#xp-fiche-texte p{margin:0;text-wrap:pretty}
#xp-fiche-texte p+p{margin-top:10px}
#xp-fiche-texte strong,#xp-fiche-texte b{font-weight:600;color:#1D2424}
#xp-fiche #xp-fiche-fermer:focus:not(:focus-visible),#xp-fiche #xp-fiche-retour:focus:not(:focus-visible){outline:none}
#xp-fiche #xp-fiche-fermer:focus-visible{outline:3px solid #DC3347;outline-offset:2px}

/* --- Boutons construits en blocs <button> : le thème leur impose majuscules, bordures et couleurs --- */
#xp-stats button,#stands button,#xp-fiche button{text-transform:none;letter-spacing:normal;font-family:inherit;box-shadow:none;white-space:normal}
/* Le thème (Hello) pose une bordure rose (#CC3366) sur tout <button>, et sur :hover/:focus un fond rose plus
   spécifique qu'un style local : on neutralise ce qui n'a pas de bordure voulue, et on fixe le reste. */
#xp-stats button,#xp-effacer,#xp-fiche-fermer{border:0!important}
#xp-stats button{border-radius:0!important}
#xp-fiche-retour,#xp-vide-btn,#xp-plus{border-color:#C9CFD2!important}
#xp-plus:hover{border-color:#1D2424!important}
#xp-effacer:hover,#xp-effacer:focus{background-color:transparent!important}
#xp-fiche-retour:hover,#xp-fiche-retour:focus,#xp-vide-btn:hover,#xp-vide-btn:focus,#xp-plus:hover,#xp-plus:focus,#xp-fiche-fermer:hover,#xp-fiche-fermer:focus{background-color:#FFFFFF!important}
#xp-stats button:focus{background-color:#262624!important}#xp-stats button:hover{background-color:#33332F!important}
#xp-stats button:focus-visible,#stands button:focus-visible{outline:3px solid #DC3347;outline-offset:2px}

/* --- Barre de filtres (restée visible au défilement, sous l'en-tête) --- */
body #xp-barre{position:sticky;top:var(--xp-haut,0px)}
#xp-filtres{scrollbar-width:none}
#xp-filtres::-webkit-scrollbar{display:none}
#xp-filtres .xp-filtre[type=button]{flex:none;height:44px;box-sizing:border-box;display:flex;align-items:center;gap:6px;margin:0;padding:0 16px;border-radius:999px;border:1px solid #D8DDDF;background:#FFFFFF;color:#1D2424;font:600 14px/1 'Inter',sans-serif;text-transform:none;letter-spacing:normal;white-space:nowrap;box-shadow:none;cursor:pointer}
#xp-filtres .xp-filtre[type=button]:hover{background:#F3F5F6;color:#1D2424}
#xp-filtres .xp-filtre[type=button][aria-pressed=true]{background:#1E1E1C;border-color:#1E1E1C;color:#FFFFFF}
#xp-filtres .xp-filtre span{font-weight:500;opacity:.7}

/* --- Cartes --- */
[data-xp-carte]{cursor:pointer}
[data-xp-carte]:focus-visible{outline:3px solid #DC3347;outline-offset:4px;border-radius:14px}
/* Cadre de la carte = 1ᵉʳ enfant ; dedans, la photo puis le bloc « Visuel à venir » (affiché si la fiche n'a pas de vraie image). */
body [id^="stand-"]>:first-child>:nth-child(2){display:none}
body .xp-sans-visuel>:first-child>:first-child{display:none!important}
body .xp-sans-visuel>:first-child>:nth-child(2){display:flex}
[id^="stand-"] img{width:100%;height:100%;object-fit:cover;display:block}
/* 2ᵉ catégorie vide = pas de pastille */
[id^="stand-"] p:empty,[id^="stand-"] span:empty{display:none!important}
.xp-masque{display:none!important}

/* --- États pilotés par le script (visibles dans l'éditeur) --- */
body:not(.elementor-editor-active) #xp-effacer:not(.est-visible),
body:not(.elementor-editor-active) #xp-vide:not(.est-visible),
body:not(.elementor-editor-active) #xp-plus-zone:not(.est-visible){display:none!important}

/* Section « Fin des tarifs réduits » (copie de la page Invités) : états datés, la classe gl-etat-* est posée sur <html>
   par le script commun des en-têtes V4. */
html:not([class*="gl-etat-"]) .gl-js-etat-weekend:not(.gl-js-etat-prevente),html:not([class*="gl-etat-"]) .gl-js-etat-apres:not(.gl-js-etat-prevente){display:none}
html.gl-etat-prevente [class*="gl-js-etat-"]:not(.gl-js-etat-prevente),html.gl-etat-weekend [class*="gl-js-etat-"]:not(.gl-js-etat-weekend),html.gl-etat-apres [class*="gl-js-etat-"]:not(.gl-js-etat-apres){display:none!important}
/* Le SVG d'un e-svg est rendu en ligne : sans ceci il descend sous le texte voisin. */
.e-svg-base{line-height:0}.e-svg-base>svg{display:block}
/* Accroche des cartes (3ᵉ enfant du bloc texte) : 2 lignes au plus, terminées par « … » */
body [id^="stand-"]>:last-child>:nth-child(3){display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;max-height:none}
