/* ═══════════════════════════════════════════
   GALLERY EVENTS v2 — style.css
═══════════════════════════════════════════ */

@font-face {
  font-family: 'SuisseIntl';
  src: url('https://www.gallerygroupe.com/wp-content/uploads/2025/03/SuisseIntl-Bold-1.ttf') format('truetype');
  font-weight: 800; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'SuisseIntl';
  src: url('https://www.gallerygroupe.com/wp-content/uploads/2025/03/SuisseIntl-Regular-1.ttf') format('truetype');
  font-weight: 400; font-style: normal; font-display: swap;
}

:root {
  --ge-bg:      #F3E6DA;
  --ge-ink:     #0D0D0D;
  --ge-orange:  #ff874d;
  --ge-green:   #244022;
  --ge-sage:    #a6b396;
  --ge-soft:    rgba(13,13,13,.13);
  --ge-font:    'SuisseIntl', Helvetica, sans-serif;
}

/* ════════════════════════════
   BARRE FILTRES + RECHERCHE
════════════════════════════ */
.ge-wrap { width:100%; font-family:var(--ge-font); -webkit-font-smoothing:antialiased; }

.ge-bar { display:flex; align-items:center; justify-content:space-between; gap:16px; padding-bottom:24px; margin-bottom:24px; flex-wrap:wrap; border-bottom:1.5px solid var(--ge-soft); }

.ge-search-wrap { position:relative; flex-shrink:0; }
.ge-search { font-family:var(--ge-font); font-weight:400; font-size:13px; background:transparent; border:none; border-bottom:1.5px solid var(--ge-soft); outline:none; color:var(--ge-ink); padding:9px 44px 9px 0; width:180px; transition:border-color .22s,width .3s ease; -webkit-appearance:none; border-radius:0; }
.ge-search::placeholder { color:rgba(13,13,13,.35); font-family:var(--ge-font); }
.ge-search:focus { border-bottom-color:var(--ge-ink); width:220px; }
.ge-search-icon { position:absolute; right:12px; top:50%; transform:translateY(-50%); pointer-events:none; opacity:.38; color:var(--ge-ink); }

.ge-filters { display:flex; gap:6px; flex-wrap:wrap; justify-content:flex-end; }
.ge-filter-btn { font-family:var(--ge-font); font-weight:800; font-size:10px; letter-spacing:.18em; text-transform:uppercase; padding:9px 16px; border:1.5px solid var(--ge-soft); background:transparent; color:var(--ge-ink); cursor:pointer; transition:all .2s; opacity:.45; line-height:1; }
.ge-filter-btn:hover { opacity:1; border-color:var(--ge-green); color:var(--ge-green); }
.ge-filter-btn.active { background:var(--ge-green); color:var(--ge-bg); border-color:var(--ge-green); opacity:1; }

.ge-count { font-family:var(--ge-font); font-weight:800; font-size:10px; letter-spacing:.16em; text-transform:uppercase; opacity:.28; margin-bottom:20px; }

/* ════════════════════════════
   GRILLE
════════════════════════════ */
.ge-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:2px; width:100%; }
.ge-empty { display:none; grid-column:1/-1; padding:64px 0; text-align:center; font-family:var(--ge-font); font-weight:800; font-size:13px; letter-spacing:.16em; text-transform:uppercase; opacity:.28; }

/* ════════════════════════════
   CARD
════════════════════════════ */
.ge-card-wrap { transition:opacity .25s; }
.ge-card-wrap.ge-hidden { display:none; }

.ge-card { position:relative; overflow:hidden; aspect-ratio:4/5; cursor:pointer; }

.ge-card-img { width:100%; height:100%; object-fit:cover; display:block; transition:transform .6s cubic-bezier(.25,.46,.45,.94), filter .6s ease; }
.ge-card-no-img { width:100%; height:100%; background:rgba(13,13,13,.08); }

/* Assombrir l'image au hover */
.ge-card::after {
  content: '';
  position: absolute;
  inset: 0;
  background: rgba(36,64,34,.72);
  opacity: 0;
  transition: opacity .4s ease;
  z-index: 1;
}
.ge-card:hover::after { opacity: 1; }
.ge-card:hover .ge-card-img { transform: scale(1.05); }

/* Badge */
.ge-badge { position:absolute; top:14px; left:14px; font-family:var(--ge-font); font-weight:800; font-size:9px; letter-spacing:.16em; text-transform:uppercase; padding:5px 10px; line-height:1; z-index:3; }
.ge-badge--new  { background:var(--ge-green); color:var(--ge-bg); }
.ge-badge--last { background:var(--ge-orange); color:var(--ge-bg); }
.ge-badge--full { background:#9b1c1c; color:#fff; }

/* Overlay */
.ge-overlay {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 24px;
  z-index: 2;
  pointer-events: none;
}
.ge-card:hover .ge-overlay { pointer-events: auto; }

/* Boutons overlay — wipe animation */
.ge-btn {
  display: block;
  width: 100%;
  text-align: center;
  font-family: var(--ge-font);
  font-weight: 800;
  font-size: 11px;
  letter-spacing: .16em;
  text-transform: uppercase;
  text-decoration: none;
  padding: 13px 16px;
  cursor: pointer;
  line-height: 1;
  border: none;
  position: relative;
  overflow: hidden;
  transition: color .28s;
  transform: translateY(18px);
  opacity: 0;
  transition: transform .35s cubic-bezier(.25,.46,.45,.94), opacity .35s ease, color .22s;
}

.ge-card:hover .ge-btn:nth-child(1) { transform: translateY(0); opacity: 1; transition-delay: 0s; }
.ge-card:hover .ge-btn:nth-child(2) { transform: translateY(0); opacity: 1; transition-delay: .07s; }
.ge-card:hover .ge-btn:nth-child(3) { transform: translateY(0); opacity: 1; transition-delay: .14s; }

/* Bouton primaire orange */
.ge-btn-primary { background: var(--ge-orange); color: var(--ge-bg); }
.ge-btn-primary::before { content:''; position:absolute; inset:0; background:var(--ge-green); transform:translateX(-101%); transition:transform .32s cubic-bezier(.77,0,.18,1); }
.ge-btn-primary:hover::before { transform:translateX(0); }
.ge-btn-primary:hover { color: var(--ge-bg); }
.ge-btn-primary span { position:relative; z-index:1; }

/* Bouton secondaire contour */
.ge-btn-secondary { background: transparent; color: var(--ge-bg); border: 1.5px solid rgba(243,230,218,.5); }
.ge-btn-secondary:hover { border-color: var(--ge-bg); background: rgba(243,230,218,.1); }

/* Bouton désactivé */
.ge-btn-disabled { background:rgba(255,255,255,.15); color:rgba(255,255,255,.4); cursor:not-allowed; }

/* Bouton alerte */
.ge-btn--alert { background: var(--ge-orange); color: var(--ge-bg); }
.ge-btn--alert::before { content:''; position:absolute; inset:0; background:var(--ge-green); transform:translateX(-101%); transition:transform .32s cubic-bezier(.77,0,.18,1); }
.ge-btn--alert:hover::before { transform:translateX(0); }
.ge-btn--alert:hover { color: var(--ge-bg); }
.ge-btn--alert span { position:relative; z-index:1; }

/* Méta sous la card */
.ge-meta { padding:14px 0 24px; }
.ge-meta-tag   { font-family:var(--ge-font); font-weight:800; font-size:10px; letter-spacing:.2em; text-transform:uppercase; color:var(--ge-sage); margin-bottom:5px; line-height:1; }
.ge-meta-title { font-family:var(--ge-font); font-weight:800; font-size:17px; text-transform:uppercase; letter-spacing:-.01em; line-height:1.05; margin-bottom:4px; color:var(--ge-ink); }
.ge-meta-date  { font-family:var(--ge-font); font-weight:800; font-size:12px; text-transform:uppercase; letter-spacing:.04em; opacity:.5; color:var(--ge-ink); }

/* ════════════════════════════
   VOIR PLUS
════════════════════════════ */
.ge-voir-plus { display:flex; justify-content:center; margin-top:48px; }
.ge-voir-plus-btn { display:inline-flex; align-items:center; gap:12px; background:var(--ge-green); color:var(--ge-bg); font-family:var(--ge-font); font-weight:800; font-size:12px; letter-spacing:.14em; text-transform:uppercase; text-decoration:none; padding:18px 40px; border:2px solid var(--ge-green); position:relative; overflow:hidden; transition:color .28s; }
.ge-voir-plus-btn::before { content:''; position:absolute; inset:0; background:var(--ge-orange); transform:translateX(-101%); transition:transform .32s cubic-bezier(.77,0,.18,1); }
.ge-voir-plus-btn:hover::before { transform:translateX(0); }
.ge-voir-plus-btn:hover { color:var(--ge-bg); border-color:var(--ge-orange); }
.ge-voir-plus-btn span, .ge-voir-plus-btn svg { position:relative; z-index:1; }
.ge-voir-plus-btn svg { transition:transform .25s; }
.ge-voir-plus-btn:hover svg { transform:translateX(5px); }

/* ════════════════════════════
   POP-UP ALERTE
════════════════════════════ */
.ge-popup-overlay { position:fixed; inset:0; background:rgba(36,64,34,.65); z-index:99999; display:flex; align-items:center; justify-content:center; padding:24px; opacity:0; pointer-events:none; transition:opacity .28s ease; backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px); }
.ge-popup-overlay.is-open { opacity:1; pointer-events:auto; }

.ge-popup { background:var(--ge-bg); max-width:480px; width:100%; padding:40px; position:relative; transform:translateY(24px); transition:transform .32s cubic-bezier(.25,.46,.45,.94); }
.ge-popup-overlay.is-open .ge-popup { transform:translateY(0); }

.ge-popup-close { position:absolute; top:16px; right:16px; background:transparent; border:none; font-size:18px; cursor:pointer; color:var(--ge-ink); opacity:.3; line-height:1; padding:4px 8px; transition:opacity .2s; }
.ge-popup-close:hover { opacity:1; }

.ge-popup-eyebrow { font-family:var(--ge-font); font-weight:800; font-size:10px; letter-spacing:.2em; text-transform:uppercase; color:var(--ge-orange); margin-bottom:10px; }
.ge-popup-title   { font-family:var(--ge-font); font-weight:800; font-size:26px; text-transform:uppercase; letter-spacing:-.02em; line-height:1; margin-bottom:8px; color:var(--ge-ink); }
.ge-popup-opening { font-family:var(--ge-font); font-weight:800; font-size:11px; letter-spacing:.12em; text-transform:uppercase; color:var(--ge-sage); margin-bottom:16px; }
.ge-popup-desc    { font-family:var(--ge-font); font-weight:400; font-size:14px; line-height:1.65; opacity:.6; margin-bottom:24px; color:var(--ge-ink); }

.ge-popup-fields { display:grid; grid-template-columns:1fr 1fr; gap:16px; margin-bottom:20px; }
.ge-popup-field label { display:block; font-family:var(--ge-font); font-weight:800; font-size:9px; letter-spacing:.18em; text-transform:uppercase; color:var(--ge-sage); margin-bottom:6px; transition:color .2s; }
.ge-popup-field:focus-within label { color:var(--ge-green); }
.ge-popup-field input { width:100%; background:transparent; border:none; border-bottom:1.5px solid var(--ge-soft); outline:none; font-family:var(--ge-font); font-weight:400; font-size:15px; color:var(--ge-ink); padding:8px 0 10px; transition:border-color .22s; -webkit-appearance:none; border-radius:0; }
.ge-popup-field input::placeholder { color:rgba(13,13,13,.2); }
.ge-popup-field input:focus { border-bottom-color:var(--ge-green); }

.ge-popup-submit { display:flex; align-items:center; justify-content:space-between; gap:10px; width:100%; background:var(--ge-orange); color:var(--ge-bg); font-family:var(--ge-font); font-weight:800; font-size:12px; letter-spacing:.14em; text-transform:uppercase; padding:16px 24px; border:none; cursor:pointer; position:relative; overflow:hidden; transition:color .28s; }
.ge-popup-submit::before { content:''; position:absolute; inset:0; background:var(--ge-green); transform:translateX(-101%); transition:transform .32s cubic-bezier(.77,0,.18,1); }
.ge-popup-submit:hover::before { transform:translateX(0); }
.ge-popup-submit span, .ge-popup-submit svg { position:relative; z-index:1; }

.ge-popup-msg { margin-top:12px; font-family:var(--ge-font); font-weight:800; font-size:11px; letter-spacing:.08em; text-transform:uppercase; opacity:0; transition:opacity .3s; }
.ge-popup-msg.show    { opacity:1; }
.ge-popup-msg.success { color:var(--ge-green); }
.ge-popup-msg.error   { color:#9b1c1c; }

/* ════════════════════════════
   SINGLE EVENT
════════════════════════════ */
.ge-single {
  width: 100%;
  font-family: var(--ge-font);
  -webkit-font-smoothing: antialiased;
  color: var(--ge-ink);
  overflow-x: hidden;
}

/* Hero plein écran */
.ge-single-hero {
  position: relative;
  width: 100%;
  min-height: 75vh;
  display: flex;
  align-items: flex-end;
  overflow: hidden;
  background: var(--ge-ink);
}
.ge-single-hero--no-img { background: var(--ge-green); min-height: 320px; }

.ge-single-hero-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center top;
  display: block;
}

/* Dégradé vers fond crème */
.ge-single-hero-fade {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to bottom,
    rgba(243,230,218,0)   0%,
    rgba(243,230,218,0)   25%,
    rgba(243,230,218,.55) 65%,
    rgba(243,230,218,1)   100%
  );
  z-index: 1;
}

.ge-single-badge { position:absolute; top:28px; left:28px; z-index:3; }

.ge-single-hero-content {
  position: relative;
  z-index: 2;
  width: 100%;
  padding: 0 56px 52px;
}

.ge-single-eyebrow {
  font-family: var(--ge-font);
  font-weight: 800;
  font-size: 10px;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--ge-sage);
  margin-bottom: 10px;
}

.ge-single-title {
  font-family: var(--ge-font);
  font-weight: 800;
  font-size: clamp(40px, 6vw, 80px);
  line-height: .92;
  text-transform: uppercase;
  letter-spacing: -.03em;
  color: var(--ge-ink);
  margin: 0;
  max-width: 900px;
}

/* ── BODY ── */
.ge-single-body {
  padding: 0 56px 0;
}

.ge-single-layout {
  display: grid;
  grid-template-columns: 1fr 380px;
  gap: 56px;
  align-items: start;
  padding-top: 48px;
  padding-bottom: 72px;
}

/* Colonne gauche */
.ge-single-infos {
  display: flex;
  gap: 40px;
  flex-wrap: wrap;
  margin-bottom: 32px;
  padding-bottom: 28px;
  border-bottom: 1px solid var(--ge-soft);
}
.ge-single-info-item  { display:flex; flex-direction:column; gap:5px; }
.ge-single-info-label { font-family:var(--ge-font); font-weight:800; font-size:9px; letter-spacing:.22em; text-transform:uppercase; color:var(--ge-sage); }
.ge-single-info-value { font-family:var(--ge-font); font-weight:800; font-size:15px; text-transform:uppercase; letter-spacing:-.01em; color:var(--ge-ink); }

.ge-single-desc {
  font-family: var(--ge-font);
  font-weight: 400;
  font-size: 16px;
  line-height: 1.78;
  color: var(--ge-ink);
  opacity: .72;
  margin-bottom: 40px;
  max-width: 580px;
}

/* Formules */
.ge-single-formules { margin-bottom: 40px; }
.ge-single-formules-title {
  font-family: var(--ge-font);
  font-weight: 800;
  font-size: 10px;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--ge-sage);
  margin-bottom: 14px;
}
.ge-single-formules-grid { display:flex; flex-direction:column; gap:2px; }

.ge-single-formule {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr;
  align-items: center;
  gap: 16px;
  padding: 16px 20px;
  background: rgba(36,64,34,.04);
  border-left: 3px solid var(--ge-sage);
}

.ge-single-formule-nom   { font-family:var(--ge-font); font-weight:800; font-size:13px; text-transform:uppercase; letter-spacing:-.01em; color:var(--ge-ink); }
.ge-single-formule-heure { font-family:var(--ge-font); font-weight:400; font-size:13px; color:var(--ge-ink); opacity:.5; }
.ge-single-formule-prix  { display:flex; gap:20px; justify-content:flex-end; }

.ge-single-prix-item       { display:flex; flex-direction:column; align-items:flex-end; gap:2px; }
.ge-single-prix-label      { font-family:var(--ge-font); font-weight:800; font-size:9px; letter-spacing:.16em; text-transform:uppercase; color:var(--ge-sage); }
.ge-single-prix-val        { font-family:var(--ge-font); font-weight:800; font-size:22px; letter-spacing:-.02em; color:var(--ge-ink); }
.ge-single-prix-membre .ge-single-prix-val { color:var(--ge-sage); font-size:18px; }

/* Colonne droite — CTA box */
.ge-single-right { position: sticky; top: 40px; max-width: 380px; width: 100%; }

.ge-single-cta-box {
  border: 1.5px solid var(--ge-soft);
  padding: 24px;
  margin-bottom: 12px;
}

.ge-single-cta-box-label {
  font-family: var(--ge-font);
  font-weight: 800;
  font-size: 9px;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--ge-sage);
  margin-bottom: 14px;
}

.ge-single-cta-date {
  font-family: var(--ge-font);
  font-weight: 800;
  font-size: 13px;
  text-transform: uppercase;
  letter-spacing: .02em;
  margin-bottom: 16px;
  color: var(--ge-ink);
}

.ge-single-cta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  width: 100%;
  background: var(--ge-orange);
  color: var(--ge-bg);
  font-family: var(--ge-font);
  font-weight: 800;
  font-size: 12px;
  letter-spacing: .14em;
  text-transform: uppercase;
  text-decoration: none;
  padding: 16px 20px;
  border: none;
  position: relative;
  overflow: hidden;
  transition: color .28s;
  cursor: pointer;
}
.ge-single-cta::before { content:''; position:absolute; inset:0; background:var(--ge-green); transform:translateX(-101%); transition:transform .32s cubic-bezier(.77,0,.18,1); }
.ge-single-cta:hover::before { transform:translateX(0); }
.ge-single-cta:hover { color:var(--ge-bg); }
.ge-single-cta span, .ge-single-cta svg { position:relative; z-index:1; }
.ge-single-cta svg { transition:transform .25s; }
.ge-single-cta:hover svg { transform:translateX(4px); }
.ge-single-cta--full { background:var(--ge-soft); color:rgba(13,13,13,.35); pointer-events:none; }
.ge-single-cta--full::before { display:none; }

.ge-single-opening-soon { padding: 0; }
.ge-single-opening-label { font-family:var(--ge-font); font-weight:800; font-size:9px; letter-spacing:.22em; text-transform:uppercase; color:var(--ge-sage); margin-bottom:8px; }
.ge-single-opening-date  { font-family:var(--ge-font); font-weight:800; font-size:20px; text-transform:uppercase; letter-spacing:-.02em; color:var(--ge-ink); }

/* Waitlist box */
.ge-waitlist-box  { border:1.5px solid var(--ge-soft); padding:20px 24px; }
.ge-waitlist-title{ font-family:var(--ge-font); font-weight:800; font-size:13px; text-transform:uppercase; letter-spacing:-.01em; margin-bottom:8px; color:var(--ge-ink); }
.ge-waitlist-desc { font-family:var(--ge-font); font-weight:400; font-size:13px; color:var(--ge-ink); opacity:.58; line-height:1.6; margin-bottom:16px; }
.ge-waitlist-field { margin-bottom:14px; }
.ge-waitlist-field label { display:block; font-family:var(--ge-font); font-weight:800; font-size:9px; letter-spacing:.18em; text-transform:uppercase; color:var(--ge-sage); margin-bottom:6px; transition:color .2s; }
.ge-waitlist-field:focus-within label { color:var(--ge-green); }
.ge-waitlist-field input { width:100%; background:transparent; border:none; border-bottom:1.5px solid var(--ge-soft); outline:none; font-family:var(--ge-font); font-weight:400; font-size:15px; color:var(--ge-ink); padding:8px 0 10px; transition:border-color .22s; -webkit-appearance:none; border-radius:0; }
.ge-waitlist-field input::placeholder { color:rgba(13,13,13,.2); }
.ge-waitlist-field input:focus { border-bottom-color:var(--ge-green); }
.ge-waitlist-btn { display:flex; align-items:center; justify-content:space-between; gap:10px; width:100%; background:var(--ge-green); color:var(--ge-bg); font-family:var(--ge-font); font-weight:800; font-size:11px; letter-spacing:.14em; text-transform:uppercase; padding:14px 20px; border:none; cursor:pointer; position:relative; overflow:hidden; transition:color .28s; margin-top:4px; }
.ge-waitlist-btn::before { content:''; position:absolute; inset:0; background:var(--ge-orange); transform:translateX(-101%); transition:transform .32s cubic-bezier(.77,0,.18,1); }
.ge-waitlist-btn:hover::before { transform:translateX(0); }
.ge-waitlist-btn span, .ge-waitlist-btn svg { position:relative; z-index:1; }
.ge-waitlist-msg { margin-top:10px; font-family:var(--ge-font); font-weight:800; font-size:11px; letter-spacing:.08em; text-transform:uppercase; opacity:0; transition:opacity .3s; }
.ge-waitlist-msg.show    { opacity:1; }
.ge-waitlist-msg.success { color:var(--ge-green); }
.ge-waitlist-msg.error   { color:#9b1c1c; }

/* Events suggérés */
.ge-single-suggested       { border-top:1.5px solid var(--ge-soft); }
.ge-single-suggested-inner { padding:48px 48px 80px; }
.ge-single-suggested-title { font-family:var(--ge-font); font-weight:800; font-size:10px; letter-spacing:.2em; text-transform:uppercase; color:var(--ge-sage); margin-bottom:24px; }
.ge-single-suggested-grid  { display:grid; grid-template-columns:repeat(4,1fr); gap:2px; }

.ge-sugg-card       { text-decoration:none; color:var(--ge-ink); display:block; }
.ge-sugg-img-wrap   { position:relative; aspect-ratio:4/5; overflow:hidden; background:rgba(13,13,13,.06); margin-bottom:14px; }
.ge-sugg-img-wrap img { width:100%; height:100%; object-fit:cover; display:block; transition:transform .5s cubic-bezier(.25,.46,.45,.94),filter .5s ease; }
.ge-sugg-card:hover .ge-sugg-img-wrap img { transform:scale(1.04); filter:brightness(.8); }
.ge-sugg-no-img     { width:100%; height:100%; background:rgba(13,13,13,.08); }
.ge-sugg-title      { font-family:var(--ge-font); font-weight:800; font-size:14px; text-transform:uppercase; letter-spacing:-.01em; line-height:1.05; margin-bottom:4px; }
.ge-sugg-date       { font-family:var(--ge-font); font-weight:800; font-size:11px; text-transform:uppercase; letter-spacing:.04em; color:var(--ge-sage); }

/* ════════════════════════════
   SINGLE — PLEINE LARGEUR
════════════════════════════ */
body.single-ge_event .entry-content,
body.single-ge_event .post-content,
body.single-ge_event article.ge-single { max-width:100% !important; width:100% !important; padding-left:0 !important; padding-right:0 !important; margin-left:0 !important; margin-right:0 !important; }

body.single-ge_event .site-main,
body.single-ge_event main,
body.single-ge_event #primary,
body.single-ge_event #content,
body.single-ge_event .container,
body.single-ge_event .wp-site-blocks { max-width:100% !important; padding-left:0 !important; padding-right:0 !important; }

/* ════════════════════════════
   RESPONSIVE
════════════════════════════ */
@media (max-width: 960px) {
  .ge-grid { grid-template-columns:repeat(2,1fr); }
  .ge-single-layout { grid-template-columns:1fr; gap:40px; }
  .ge-single-right  { position:static; max-width:480px; }
  .ge-single-suggested-grid { grid-template-columns:repeat(2,1fr); }
  .ge-single-formule { grid-template-columns:1fr 1fr; }
  .ge-single-formule-prix { grid-column:1/-1; justify-content:flex-start; }
}

@media (max-width: 640px) {
  .ge-grid { grid-template-columns:1fr; gap:1px; }
  .ge-bar  { flex-direction:column; align-items:flex-start; gap:12px; }
  .ge-search, .ge-search:focus { width:100%; }
  .ge-search-wrap { width:100%; }
  .ge-filters { justify-content:flex-start; }
  .ge-single-hero-content    { padding:0 24px 36px; }
  .ge-single-body            { padding:0 24px; }
  .ge-single-suggested-inner { padding:36px 24px 56px; }
  .ge-single-suggested-grid  { grid-template-columns:repeat(2,1fr); }
  .ge-single-formule         { grid-template-columns:1fr; gap:6px; }
  .ge-popup-fields           { grid-template-columns:1fr; }
}

/* ════════════════════════════════════════
   CORRECTIONS CIBLÉES
════════════════════════════════════════ */

/* Boutons overlay — taille identique elementor-size-sm
   padding: 10px 20px / font-size: 13px (sm Elementor) */
.ge-btn {
  padding: 10px 20px !important;
  font-size: 13px !important;
  letter-spacing: .08em !important;
  font-weight: 700 !important;
  border-radius: 3px;
}

/* Hover bouton primaire : wipe vert, texte crème → lisible */
.ge-btn-primary::before,
.ge-btn--alert::before {
  background: var(--ge-green) !important;
}
.ge-btn-primary:hover,
.ge-btn--alert:hover {
  color: var(--ge-bg) !important;
}

/* Bouton secondaire "Plus d'infos" : contour crème, hover fond vert */
.ge-btn-secondary {
  border: 1.5px solid rgba(243,230,218,.6) !important;
  color: var(--ge-bg) !important;
  background: transparent !important;
}
.ge-btn-secondary:hover {
  background: rgba(243,230,218,.15) !important;
  border-color: var(--ge-bg) !important;
  color: var(--ge-bg) !important;
}

/* ── SINGLE EVENT — typographie corps + background ── */

/* Background crème sur toute la page event */
body.single-ge_event {
  background-color: #f3e6da !important;
}

/* Typo corps de la page single */
.ge-single-desc,
.ge-single-desc p,
.ge-single-desc li {
  font-family: "Suisse Intl", 'SuisseIntl', sans-serif !important;
  font-size: 20px !important;
  color: #244022 !important;
  opacity: 1 !important;
}

/* Infos (date, lieu, horaires) */
.ge-single-info-value {
  font-family: "Suisse Intl", 'SuisseIntl', sans-serif !important;
  font-size: 20px !important;
  color: #244022 !important;
}

/* Titre */
.ge-single-title {
  color: #244022 !important;
}

/* Eyebrow catégorie */
.ge-single-eyebrow {
  color: var(--ge-sage) !important;
}

/* Formules */
.ge-single-formule-nom {
  font-size: 16px !important;
  color: #244022 !important;
}
.ge-single-formule-heure {
  font-size: 14px !important;
  color: #244022 !important;
}
.ge-single-prix-val {
  color: #244022 !important;
}

/* CTA box droite */
.ge-single-cta-date {
  color: #244022 !important;
  font-size: 14px !important;
}
.ge-single-opening-date {
  color: #244022 !important;
}

/* ── BARRE RECHERCHE — icone espacée ── */
.ge-search-icon {
  right: 12px !important;
}

/* ════════════════════════════════════════
   FIX CONTRASTE — TOUS LES CTA
   Orange #ff874d → texte vert foncé #244022
   Hover wipe vert → texte crème #f3e6da
════════════════════════════════════════ */

/* ── Overlay grille : bouton RÉSERVER / M'ALERTER ── */
.ge-btn-primary,
.ge-btn--alert {
  background: var(--ge-orange) !important;
  color: var(--ge-green) !important;   /* vert foncé lisible sur orange */
  border: none !important;
}
.ge-btn-primary::before,
.ge-btn--alert::before {
  background: var(--ge-green) !important;
}
.ge-btn-primary:hover,
.ge-btn--alert:hover {
  color: var(--ge-bg) !important;      /* crème sur vert = parfait */
}

/* ── Overlay grille : bouton PLUS D'INFOS ── */
.ge-btn-secondary {
  background: transparent !important;
  color: var(--ge-bg) !important;
  border: 1.5px solid rgba(243,230,218,.55) !important;
}
.ge-btn-secondary:hover {
  background: rgba(243,230,218,.18) !important;
  border-color: var(--ge-bg) !important;
  color: var(--ge-bg) !important;
}

/* ── Single event : bouton RÉSERVER colonne droite ── */
.ge-single-cta {
  background: var(--ge-orange) !important;
  color: var(--ge-green) !important;
}
.ge-single-cta::before {
  background: var(--ge-green) !important;
}
.ge-single-cta:hover {
  color: var(--ge-bg) !important;
}

/* ── Pop-up : bouton ME PRÉVENIR ── */
.ge-popup-submit {
  background: var(--ge-orange) !important;
  color: var(--ge-green) !important;
}
.ge-popup-submit::before {
  background: var(--ge-green) !important;
}
.ge-popup-submit:hover {
  color: var(--ge-bg) !important;
}

/* ── Waitlist single : bouton ME PRÉVENIR ── */
.ge-waitlist-btn {
  background: var(--ge-green) !important;
  color: var(--ge-bg) !important;
}
.ge-waitlist-btn::before {
  background: var(--ge-orange) !important;
}
.ge-waitlist-btn:hover {
  color: var(--ge-green) !important;   /* vert sur fond orange au hover */
}

/* ── Voir tous les événements ── */
.ge-voir-plus-btn {
  background: var(--ge-green) !important;
  color: var(--ge-bg) !important;
  border-color: var(--ge-green) !important;
}
.ge-voir-plus-btn::before {
  background: var(--ge-orange) !important;
}
.ge-voir-plus-btn:hover {
  color: var(--ge-green) !important;   /* vert sur orange = lisible */
  border-color: var(--ge-orange) !important;
}

/* ── Filtres catégories ── */
.ge-filter-btn.active {
  background: var(--ge-green) !important;
  color: var(--ge-bg) !important;
  border-color: var(--ge-green) !important;
}
.ge-filter-btn:hover {
  color: var(--ge-green) !important;
  border-color: var(--ge-green) !important;
  opacity: 1 !important;
}

/* ════════════════════════════════════════
   FIX FINAL CONTRASTES
════════════════════════════════════════ */

/* Filtres — hover : texte blanc sur vert */
.ge-filter-btn:hover {
  color: #fff !important;
  background: var(--ge-green) !important;
  border-color: var(--ge-green) !important;
  opacity: 1 !important;
}

/* Bouton RÉSERVER overlay :
   Normal  → orange bg  / vert texte
   Hover   → vert bg    / blanc texte  */
.ge-btn-primary,
.ge-btn--alert {
  background: var(--ge-orange) !important;
  color: var(--ge-green) !important;
}
.ge-btn-primary:hover,
.ge-btn--alert:hover {
  color: #fff !important;
}

/* Bouton PLUS D'INFOS overlay :
   Normal  → transparent / crème texte + contour crème
   Hover   → crème bg    / vert texte  */
.ge-btn-secondary {
  background: transparent !important;
  color: #f3e6da !important;
  border: 1.5px solid rgba(243,230,218,.6) !important;
}
.ge-btn-secondary:hover {
  background: #f3e6da !important;
  color: var(--ge-green) !important;
  border-color: #f3e6da !important;
}

/* CTA Réserver single event :
   Normal → orange / vert texte
   Hover  → vert   / blanc texte */
.ge-single-cta {
  background: var(--ge-orange) !important;
  color: var(--ge-green) !important;
}
.ge-single-cta:hover {
  color: #fff !important;
}

/* ════════════════════
   FIX BOUTONS OVERLAY
════════════════════ */

/* Pas de soulignement sur aucun bouton */
.ge-btn,
.ge-btn:hover,
.ge-btn:focus,
.ge-btn:visited {
  text-decoration: none !important;
}

/* RÉSERVER — normal : orange / texte vert foncé
              hover  : fond vert foncé / texte BLANC */
.ge-btn-primary,
.ge-btn--alert {
  background: var(--ge-orange) !important;
  color: #244022 !important;
  text-decoration: none !important;
}
.ge-btn-primary::before,
.ge-btn--alert::before {
  background: #244022 !important;
}
.ge-btn-primary:hover,
.ge-btn--alert:hover {
  color: #ffffff !important;
  text-decoration: none !important;
}

/* PLUS D'INFOS — normal : transparent / texte crème
                  hover  : fond crème / texte vert foncé */
.ge-btn-secondary,
.ge-btn-secondary:visited {
  background: transparent !important;
  color: #f3e6da !important;
  border: 1.5px solid rgba(243,230,218,.6) !important;
  text-decoration: none !important;
}
.ge-btn-secondary:hover {
  background: #f3e6da !important;
  color: #244022 !important;
  border-color: #f3e6da !important;
  text-decoration: none !important;
}

/* ════════════════════════════════════════
   MOBILE FIRST — GRILLE 2 COLONNES
════════════════════════════════════════ */

@media (max-width: 640px) {

  /* Grille : 2 colonnes avec padding latéral */
  .ge-wrap {
    padding: 0 12px !important;
  }

  .ge-grid {
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 8px !important;
  }

  /* Titres sous les cards plus compacts */
  .ge-meta-title {
    font-size: 13px !important;
    margin-bottom: 3px !important;
  }

  .ge-meta-date {
    font-size: 11px !important;
  }

  .ge-meta {
    padding: 10px 0 16px !important;
  }

  /* Barre filtres compacte */
  .ge-bar {
    padding: 0 0 16px !important;
    gap: 10px !important;
  }

  .ge-filter-btn {
    font-size: 9px !important;
    padding: 7px 12px !important;
  }

  /* Bouton voir plus full width */
  .ge-voir-plus-btn {
    width: 100% !important;
    justify-content: center !important;
  }
}

/* ════════════════════════════════════════
   MOBILE FIRST — PAGE SINGLE EVENT
   Ordre : hero → titre → infos → desc → CTA → formules → suggérés
════════════════════════════════════════ */

@media (max-width: 768px) {

  /* Hero moins haut sur mobile */
  .ge-single-hero {
    min-height: 50vh !important;
  }

  .ge-single-hero-content {
    padding: 0 20px 28px !important;
  }

  .ge-single-title {
    font-size: 32px !important;
    line-height: .95 !important;
  }

  /* Body sans padding excessif */
  .ge-single-body {
    padding: 0 20px !important;
  }

  /* Layout : 1 colonne, colonne droite passe EN PREMIER
     grâce à order pour mettre le CTA juste après les infos */
  .ge-single-layout {
    display: flex !important;
    flex-direction: column !important;
    gap: 0 !important;
    padding-top: 28px !important;
  }

  /* Ordre mobile :
     1. infos date/lieu (.ge-single-left commence par ça)
     2. CTA box (.ge-single-right)
     3. description
     4. formules
  */
  .ge-single-left {
    order: 1 !important;
    display: contents !important; /* laisse les enfants se placer individuellement */
  }

  .ge-single-right {
    order: 2 !important;
    position: static !important;
    max-width: 100% !important;
    width: 100% !important;
    padding-bottom: 28px !important;
    border-bottom: 1px solid var(--ge-soft) !important;
    margin-bottom: 28px !important;
  }

  /* Infos date/lieu : passe avant la colonne droite */
  .ge-single-infos {
    order: 1 !important;
    gap: 20px !important;
    margin-bottom: 20px !important;
    padding-bottom: 20px !important;
  }

  /* Description : passe après le CTA */
  .ge-single-desc {
    order: 3 !important;
    font-size: 16px !important;
    margin-bottom: 28px !important;
  }

  /* Formules : en dernier */
  .ge-single-formules {
    order: 4 !important;
  }

  /* CTA box pleine largeur */
  .ge-single-cta-box {
    border: none !important;
    padding: 0 !important;
    margin-bottom: 0 !important;
  }

  .ge-single-cta {
    width: 100% !important;
    justify-content: center !important;
    padding: 16px !important;
    font-size: 14px !important;
  }

  /* Formule : 1 colonne sur mobile */
  .ge-single-formule {
    grid-template-columns: 1fr !important;
    gap: 6px !important;
    padding: 14px 16px !important;
  }

  .ge-single-formule-prix {
    justify-content: flex-start !important;
    gap: 24px !important;
  }

  /* Events suggérés : 2 colonnes */
  .ge-single-suggested-inner {
    padding: 32px 20px 48px !important;
  }

  .ge-single-suggested-grid {
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 8px !important;
  }

  /* Pop-up plein écran sur mobile */
  .ge-popup {
    padding: 28px 20px !important;
    max-width: 100% !important;
    margin: 0 !important;
    align-self: flex-end !important;
  }

  .ge-popup-overlay {
    align-items: flex-end !important;
    padding: 0 !important;
  }

  .ge-popup-fields {
    grid-template-columns: 1fr !important;
  }

  .ge-popup-title {
    font-size: 20px !important;
  }
}

/* ════════════════════════════════════════
   FIX DÉFINITIF — HOVER BOUTONS
   Règle : orange bg → texte vert foncé
           hover wipe vert → texte BLANC
   Aucune ambiguïté possible
════════════════════════════════════════ */

/* Réserver / M'alerter sur overlay card */
.ge-btn-primary     { background:#ff874d!important; color:#244022!important; text-decoration:none!important; }
.ge-btn-primary::before { background:#244022!important; }
.ge-btn-primary:hover,
.ge-btn-primary:hover span { color:#ffffff!important; text-decoration:none!important; }

.ge-btn--alert      { background:#ff874d!important; color:#244022!important; text-decoration:none!important; }
.ge-btn--alert::before { background:#244022!important; }
.ge-btn--alert:hover,
.ge-btn--alert:hover span { color:#ffffff!important; text-decoration:none!important; }

/* Plus d'infos sur overlay card */
.ge-btn-secondary   { background:transparent!important; color:#f3e6da!important; border:1.5px solid rgba(243,230,218,.55)!important; text-decoration:none!important; }
.ge-btn-secondary:hover { background:#f3e6da!important; color:#244022!important; border-color:#f3e6da!important; text-decoration:none!important; }

/* CTA Réserver page single */
.ge-single-cta     { background:#ff874d!important; color:#244022!important; }
.ge-single-cta::before { background:#244022!important; }
.ge-single-cta:hover,
.ge-single-cta:hover span { color:#ffffff!important; }

/* Pop-up Me prévenir */
.ge-popup-submit   { background:#ff874d!important; color:#244022!important; }
.ge-popup-submit::before { background:#244022!important; }
.ge-popup-submit:hover,
.ge-popup-submit:hover span { color:#ffffff!important; }

/* Waitlist Me prévenir */
.ge-waitlist-btn   { background:#244022!important; color:#f3e6da!important; }
.ge-waitlist-btn::before { background:#ff874d!important; }
.ge-waitlist-btn:hover,
.ge-waitlist-btn:hover span { color:#244022!important; }

/* Voir tous les événements */
.ge-voir-plus-btn  { background:#244022!important; color:#f3e6da!important; border-color:#244022!important; }
.ge-voir-plus-btn::before { background:#ff874d!important; }
.ge-voir-plus-btn:hover,
.ge-voir-plus-btn:hover span { color:#244022!important; border-color:#ff874d!important; }

/* Filtres */
.ge-filter-btn.active { background:#244022!important; color:#f3e6da!important; border-color:#244022!important; }
.ge-filter-btn:hover  { background:#244022!important; color:#ffffff!important; border-color:#244022!important; opacity:1!important; }

/* Dates events sous les cards — même couleur que le titre */
.ge-meta-date { color:#0D0D0D!important; opacity:.55!important; }

/* Supprimer tout soulignement partout */
.ge-btn, .ge-btn:any-link, .ge-btn:visited { text-decoration:none!important; }

/* ════════════════════════════
   PARTAGE SOCIAL
════════════════════════════ */
.ge-share { margin-top: 40px; padding-top: 28px; border-top: 1px solid var(--ge-soft); }

.ge-share-label {
  font-family: var(--ge-font);
  font-weight: 800;
  font-size: 10px;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--ge-sage);
  margin-bottom: 12px;
}

.ge-share-btns {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.ge-share-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: var(--ge-font);
  font-weight: 800;
  font-size: 11px;
  letter-spacing: .1em;
  text-transform: uppercase;
  text-decoration: none;
  padding: 10px 18px;
  cursor: pointer;
  border: 1.5px solid var(--ge-soft);
  background: transparent;
  color: var(--ge-ink);
  transition: background .22s, border-color .22s, color .22s;
  position: relative;
  overflow: hidden;
}

.ge-share-btn:hover {
  border-color: var(--ge-green);
  background: var(--ge-green);
  color: #fff;
}

.ge-share-btn--wa:hover { background: #25d366; border-color: #25d366; }
.ge-share-btn--copy.copied { background: var(--ge-green); border-color: var(--ge-green); color: #fff; }
.ge-share-btn--ics:hover { background: var(--ge-orange); border-color: var(--ge-orange); color: var(--ge-green); }

@media (max-width: 640px) {
  .ge-share-btn { font-size: 10px; padding: 9px 14px; }
}

/* ════════════════════════════════════════
   FIX FINAL — CTA overlay
════════════════════════════════════════ */

/* Suisse Bold sur tous les boutons overlay */
.ge-btn {
  font-family: 'SuisseIntl', Helvetica, sans-serif !important;
  font-weight: 800 !important;
}

/* RÉSERVER
   Normal : fond orange #ff874d, texte vert #244022
   Hover  : fond vert #244022, texte crème #f3e6da
   Wipe ::before = vert #244022 → texte reste crème */
.ge-btn-primary,
.ge-btn--alert {
  background: #ff874d !important;
  color: #244022 !important;
  font-weight: 800 !important;
  text-decoration: none !important;
}
/* Le wipe est vert foncé */
.ge-btn-primary::before,
.ge-btn--alert::before {
  background: #244022 !important;
}
/* Texte au hover : crème sur vert → visible */
.ge-btn-primary:hover,
.ge-btn--alert:hover {
  color: #f3e6da !important;
  text-decoration: none !important;
}
/* Le span à l'intérieur aussi */
.ge-btn-primary:hover span,
.ge-btn--alert:hover span,
.ge-btn-primary:hover *,
.ge-btn--alert:hover * {
  color: #f3e6da !important;
}

/* PLUS D'INFOS
   Normal : transparent, texte crème
   Hover  : fond crème, texte vert */
.ge-btn-secondary {
  background: transparent !important;
  color: #f3e6da !important;
  border: 1.5px solid rgba(243,230,218,.55) !important;
  font-weight: 800 !important;
  text-decoration: none !important;
}
.ge-btn-secondary:hover {
  background: #f3e6da !important;
  color: #244022 !important;
  border-color: #f3e6da !important;
  text-decoration: none !important;
}

/* ════════════════════════════════════════
   BOUTONS OVERLAY — ANIMATION SIMPLE
   Pas de wipe ::before, juste background-color
   Texte toujours visible, z-index clean
════════════════════════════════════════ */

/* Reset complet du wipe sur les boutons overlay */
.ge-btn-primary::before,
.ge-btn--alert::before,
.ge-btn-secondary::before {
  display: none !important;
  content: none !important;
}

/* RÉSERVER — orange → vert au hover, texte toujours lisible */
.ge-btn-primary,
.ge-btn--alert {
  background: #ff874d !important;
  color: #244022 !important;
  font-family: 'SuisseIntl', Helvetica, sans-serif !important;
  font-weight: 800 !important;
  text-decoration: none !important;
  transition: background .22s ease, color .22s ease !important;
  position: relative !important;
  z-index: 1 !important;
  overflow: visible !important;
}

.ge-btn-primary:hover,
.ge-btn--alert:hover,
.ge-btn-primary:focus,
.ge-btn--alert:focus {
  background: #244022 !important;
  color: #f3e6da !important;
  text-decoration: none !important;
}

/* PLUS D'INFOS — transparent → crème au hover */
.ge-btn-secondary {
  background: transparent !important;
  color: #f3e6da !important;
  border: 1.5px solid rgba(243,230,218,.6) !important;
  font-family: 'SuisseIntl', Helvetica, sans-serif !important;
  font-weight: 800 !important;
  text-decoration: none !important;
  transition: background .22s ease, color .22s ease, border-color .22s ease !important;
  position: relative !important;
  z-index: 1 !important;
  overflow: visible !important;
}

.ge-btn-secondary:hover,
.ge-btn-secondary:focus {
  background: #f3e6da !important;
  color: #244022 !important;
  border-color: #f3e6da !important;
  text-decoration: none !important;
}

/* ════════════════════════════════════════
   BILLETS WOOCOMMERCE
════════════════════════════════════════ */
.ge-tickets {
  margin-top: 48px;
  padding-top: 36px;
  border-top: 2px solid var(--ge-green);
}

.ge-tickets-title {
  font-family: var(--ge-font);
  font-weight: 800;
  font-size: 11px;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--ge-green);
  margin: 0 0 20px;
}

/* Ligne billet */
.ge-ticket {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  padding: 20px 0;
  border-bottom: 1px solid rgba(36,64,34,.1);
}

.ge-ticket:last-of-type { border-bottom: none; }
.ge-ticket--full { opacity: .5; }

/* Gauche : nom + description */
.ge-ticket-info { flex: 1; min-width: 0; }

.ge-ticket-nom {
  font-family: var(--ge-font);
  font-weight: 800;
  font-size: 15px;
  text-transform: uppercase;
  letter-spacing: -.01em;
  color: var(--ge-green);
  margin: 0 0 4px;
}

.ge-ticket-desc {
  font-size: 13px;
  color: var(--ge-ink);
  opacity: .6;
  margin: 0 0 4px;
  line-height: 1.5;
}

.ge-ticket-stock {
  font-size: 11px;
  font-weight: 800;
  color: var(--ge-orange);
  letter-spacing: .05em;
  margin: 0;
}

/* Droite : prix + CTA */
.ge-ticket-right {
  display: flex;
  align-items: center;
  gap: 20px;
  flex-shrink: 0;
}

.ge-ticket-prix {
  display: flex;
  flex-direction: column;
  gap: 4px;
  text-align: right;
}

.ge-ticket-prix-item {
  display: flex;
  align-items: baseline;
  gap: 6px;
  justify-content: flex-end;
}

.ge-ticket-prix-label {
  font-size: 9px;
  font-weight: 800;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--ge-sage);
}

.ge-ticket-prix-val {
  font-family: var(--ge-font);
  font-weight: 800;
  font-size: 18px;
  color: var(--ge-green);
  letter-spacing: -.02em;
}

.ge-ticket-prix-item--membre .ge-ticket-prix-val {
  font-size: 15px;
  color: var(--ge-orange);
}

/* Add to cart */
.ge-ticket-add {
  display: flex;
  flex-direction: column;
  gap: 8px;
  align-items: stretch;
  min-width: 180px;
}

.ge-ticket-variation {
  font-family: var(--ge-font);
  font-size: 11px;
  font-weight: 700;
  padding: 8px 10px;
  border: 1.5px solid rgba(36,64,34,.2);
  background: transparent;
  color: var(--ge-green);
  cursor: pointer;
  appearance: auto;
}

.ge-ticket-btn-cart {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  background: var(--ge-orange);
  color: var(--ge-green);
  font-family: var(--ge-font);
  font-weight: 800;
  font-size: 11px;
  letter-spacing: .12em;
  text-transform: uppercase;
  border: none;
  padding: 13px 20px;
  cursor: pointer;
  transition: background .2s, color .2s;
  width: 100%;
}

.ge-ticket-btn-cart:hover {
  background: var(--ge-green);
  color: #f3e6da;
}

.ge-ticket-btn-cart.loading {
  opacity: .6;
  pointer-events: none;
}

.ge-ticket-btn-cart.success {
  background: var(--ge-green);
  color: #f3e6da;
}

/* States */
.ge-ticket-cta {
  font-family: var(--ge-font);
  font-weight: 800;
  font-size: 10px;
  letter-spacing: .14em;
  text-transform: uppercase;
  padding: 10px 18px;
  display: inline-block;
}

.ge-ticket-cta--full {
  background: rgba(36,64,34,.08);
  color: var(--ge-green);
  opacity: .5;
}

.ge-ticket-cta--soon {
  background: rgba(255,135,77,.12);
  color: var(--ge-orange);
}

/* Lien panier */
.ge-tickets-cart-link {
  margin-top: 16px;
  padding: 14px 18px;
  background: rgba(36,64,34,.06);
  border-left: 3px solid var(--ge-green);
  font-size: 13px;
  color: var(--ge-green);
}

.ge-tickets-cart-link p { margin: 0; }
.ge-tickets-cart-link a {
  color: var(--ge-green);
  font-weight: 800;
  text-decoration: underline;
}

/* Mobile */
@media (max-width: 640px) {
  .ge-ticket {
    flex-direction: column;
    align-items: flex-start;
    gap: 14px;
  }
  .ge-ticket-right {
    width: 100%;
    flex-direction: row;
    align-items: flex-end;
    justify-content: space-between;
  }
  .ge-ticket-add { min-width: 160px; }
  .ge-ticket-prix { text-align: left; }
  .ge-ticket-prix-item { justify-content: flex-start; }
}

/* ════════════════════════════════════════
   STAGES VACANCES — Interface billets DA Gallery
════════════════════════════════════════ */
.ge-stage-tickets {
  margin-top: 40px;
  padding-top: 32px;
  border-top: 1px solid rgba(13,13,13,.12);
}

.ge-stage-tickets-title {
  font-family: var(--ge-font);
  font-weight: 800;
  font-size: 11px;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--ge-green);
  margin: 0 0 32px;
}

/* Étape */
.ge-stage-step {
  margin-bottom: 28px;
}

.ge-stage-step-label {
  font-family: var(--ge-font);
  font-size: 9px;
  font-weight: 800;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--ge-sage);
  margin: 0 0 12px;
}

/* Boutons sport */




/* Résumé + CTA */
.ge-stage-summary {
  margin-top: 20px;
  transition: opacity .2s;
}


.ge-stage-summary-info {
  padding: 14px 18px;
  background: var(--ge-green);
  margin-bottom: 0;
}

.ge-stage-summary-titre {
  font-family: var(--ge-font);
  font-weight: 800;
  font-size: 13px;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: #f3e6da;
  margin: 0 0 4px;
}

.ge-stage-summary-prix {
  font-family: var(--ge-font);
  font-weight: 800;
  font-size: 28px;
  letter-spacing: -.03em;
  color: var(--ge-orange);
  margin: 0;
  line-height: 1;
}

.ge-stage-summary-stock {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: rgba(243,230,218,.55);
  margin: 4px 0 0;
}

.ge-stage-summary-stock.low { color: #fca5a5; }



/* Quantité */
.ge-stage-qty-wrap {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 16px;
}

.ge-stage-qty-label {
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--ge-sage);
}

.ge-stage-qty {
  display: flex;
  align-items: center;
  gap: 0;
  border: 1.5px solid rgba(36,64,34,.25);
}

.ge-stage-qty-btn {
  font-family: var(--ge-font);
  font-weight: 800;
  font-size: 16px;
  width: 36px;
  height: 36px;
  background: transparent;
  border: none;
  color: var(--ge-green);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background .15s;
}

.ge-stage-qty-btn:hover { background: rgba(36,64,34,.07); }

.ge-stage-qty-val {
  font-family: var(--ge-font);
  font-weight: 800;
  font-size: 14px;
  width: 40px;
  text-align: center;
  color: var(--ge-green);
  border: none;
  border-left: 1.5px solid rgba(36,64,34,.2);
  border-right: 1.5px solid rgba(36,64,34,.2);
  background: transparent;
  padding: 0;
  height: 36px;
}

/* Épuisé */
.ge-stage-summary.sold-out .ge-stage-buy-btn {
  background: rgba(36,64,34,.15);
  color: rgba(36,64,34,.3);
  cursor: not-allowed;
  pointer-events: none;
}

/* Mobile */
@media (max-width: 640px) {
  .ge-stage-tarif-grid { grid-template-columns: 1fr 1fr; }

  .ge-stage-summary {
    flex-direction: column;
    align-items: flex-start;
    gap: 16px;
    padding: 20px;
  }

  .ge-stage-buy-btn { width: 100%; justify-content: center; }
}

/* ════════════════════════════════════════
   STAGES — Boutons sélecteurs
════════════════════════════════════════ */

/* Étapes cachées par défaut (progressive disclosure via JS) */
.ge-stage-step--hidden { display: none !important; }

/* Conteneurs boutons */
.ge-stage-sport-btns,
.ge-stage-jour-btns,
.ge-stage-duree-btns {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

/* Bouton sport avec sous-titre (Mixte, Multi-sports) */
.ge-stage-sport-btn--detail {
  display: flex !important;
  flex-direction: column !important;
  align-items: flex-start !important;
  gap: 3px !important;
  text-align: left !important;
}
.ge-stage-sport-nom {
  display: block;
}
.ge-stage-sport-sub {
  display: block;
  font-weight: 400 !important;
  font-size: 8px !important;
  letter-spacing: .06em !important;
  text-transform: none !important;
  opacity: .7;
  line-height: 1.2;
}
.ge-stage-sport-btn--detail.active .ge-stage-sport-sub { opacity: .85; }

/* Base commune à tous les boutons sélecteurs */
.ge-stage-sport-btn,
.ge-stage-duree-btn,
.ge-stage-jour-btn,
.ge-stage-tarif-btn {
  font-family: var(--ge-font) !important;
  font-weight: 800 !important;
  font-size: 10px !important;
  letter-spacing: .14em !important;
  text-transform: uppercase !important;
  padding: 10px 18px !important;
  border: 1.5px solid #ff874d !important;
  background: transparent !important;
  color: #244022 !important;
  cursor: pointer !important;
  transition: background .15s, color .15s, border-color .15s !important;
  box-shadow: none !important;
  border-radius: 0 !important;
  outline: none !important;
  -webkit-appearance: none !important;
}

/* Hover */
.ge-stage-sport-btn:hover,
.ge-stage-duree-btn:hover,
.ge-stage-jour-btn:hover:not(.disabled),
.ge-stage-tarif-btn:hover {
  border-color: #ff874d !important;
  background: rgba(255,135,77,.08) !important;
  color: #244022 !important;
}

/* Actif */
.ge-stage-sport-btn.active,
.ge-stage-duree-btn.active,
.ge-stage-jour-btn.active,
.ge-stage-tarif-btn.active {
  background: #244022 !important;
  color: #f3e6da !important;
  border-color: #244022 !important;
}

/* Jour grisé quand max atteint */
.ge-stage-jour-btn.disabled {
  opacity: .3 !important;
  cursor: not-allowed !important;
  border-color: rgba(36,64,34,.2) !important;
}
/* Jour clôturé — inscriptions fermées */
.ge-stage-jour-btn.clos {
  opacity: .25 !important;
  cursor: not-allowed !important;
  border-color: rgba(36,64,34,.15) !important;
  text-decoration: line-through !important;
  pointer-events: none !important;
}

/* Tarif pleine largeur */
.ge-stage-tarif-btn { width: 100% !important; }

/* Compteur jours */
.ge-stage-jours-compteur {
  font-family: var(--ge-font);
  font-weight: 400;
  font-size: 9px;
  letter-spacing: .08em;
  color: #ff874d;
  display: none;
}

/* Résumé */
.ge-stage-summary-info {
  padding: 16px 18px;
  background: #244022;
}

/* Bouton Réserver */
.ge-stage-buy-btn {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 10px !important;
  width: 100% !important;
  background: #ff874d !important;
  color: #244022 !important;
  font-family: var(--ge-font) !important;
  font-weight: 800 !important;
  font-size: 11px !important;
  letter-spacing: .14em !important;
  text-transform: uppercase !important;
  border: none !important;
  padding: 18px 24px !important;
  cursor: pointer !important;
  transition: background .2s, color .2s !important;
  margin-top: 12px !important;
  border-radius: 0 !important;
  box-shadow: none !important;
}
.ge-stage-buy-btn:hover { background: #244022 !important; color: #f3e6da !important; }
.ge-stage-buy-btn:disabled { background: rgba(36,64,34,.15) !important; color: rgba(36,64,34,.3) !important; cursor: not-allowed !important; }
.ge-stage-buy-btn.loading { opacity: .6 !important; pointer-events: none !important; }

/* Mobile */
@media (max-width: 768px) {
  .ge-stage-tickets { width: 100%; box-sizing: border-box; overflow: hidden; }
  .ge-stage-step { margin-bottom: 20px; }
  .ge-stage-sport-btns,
  .ge-stage-jour-btns,
  .ge-stage-duree-btns { gap: 6px; }
  .ge-stage-sport-btn,
  .ge-stage-duree-btn,
  .ge-stage-jour-btn,
  .ge-stage-tarif-btn { padding: 9px 12px !important; font-size: 9px !important; }
  .ge-stage-tarif-grid { grid-template-columns: 1fr 1fr; }
  .ge-stage-summary-info { padding: 14px 16px; }
  .ge-stage-buy-btn { padding: 16px 20px !important; }
}

/* ════════════════════════════════════════
   STAGE — Quantité step 04
════════════════════════════════════════ */
.ge-stage-qty-row {
  display: flex;
  align-items: center;
  gap: 16px;
}
.ge-stage-qty-hint {
  font-size: 11px;
  color: var(--ge-sage);
  margin: 0;
  font-weight: 400;
}

/* ════════════════════════════════════════
   SINGLE EVENT — RESPONSIVE MOBILE FIX
════════════════════════════════════════ */

/* Titre mobile — masqué sur desktop (déjà dans le hero) */
.ge-single-mobile-header { display: none; }

@media (max-width: 768px) {
  /* Afficher le titre sous le hero sur mobile */
  .ge-single-mobile-header {
    display: block !important;
    padding: 24px 0 0;
    margin-bottom: 20px;
    border-bottom: 1px solid var(--ge-soft);
    padding-bottom: 20px;
  }
  .ge-single-title--mobile {
    font-family: var(--ge-font) !important;
    font-weight: 800 !important;
    font-size: 28px !important;
    line-height: .95 !important;
    text-transform: uppercase !important;
    letter-spacing: -.02em !important;
    color: #244022 !important;
    margin: 0 !important;
  }
  .ge-single-eyebrow--mobile {
    font-family: var(--ge-font) !important;
    font-weight: 800 !important;
    font-size: 9px !important;
    letter-spacing: .22em !important;
    text-transform: uppercase !important;
    color: var(--ge-sage) !important;
    margin: 0 0 8px !important;
  }
  /* Masquer le titre dans le hero sur mobile pour éviter le doublon */
  .ge-single-hero-content .ge-single-title,
  .ge-single-hero-content .ge-single-eyebrow {
    display: none !important;
  }

  /* Billets : colonne gauche visible mobile, droite masquée */
  .ge-single-left-tickets  { display: block !important; }
  .ge-single-right-tickets { display: none !important; }

  /* Box réservation sur mobile : retirer la bordure */
  .ge-single-cta-box {
    border: none !important;
    padding: 0 !important;
    margin-bottom: 20px !important;
  }
}

@media (min-width: 769px) {
  /* Desktop : billets dans la colonne droite uniquement */
  .ge-single-left-tickets  { display: none !important; }
  .ge-single-right-tickets { display: block !important; }

  /* Masquer le header mobile sur desktop */
  .ge-single-mobile-header { display: none !important; }
}

/* ════════════════════════════════════════
   ANALYTICS DASHBOARD — DA Gallery
════════════════════════════════════════ */
.ge-analytics-wrap {
  font-family: 'SuisseIntl', -apple-system, sans-serif;
  max-width: 1400px;
  padding-bottom: 60px;
}

/* Header */
.ge-analytics-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  margin-bottom: 24px;
  padding-bottom: 20px;
  border-bottom: 2px solid #244022;
}
.ge-analytics-title {
  font-size: 22px !important;
  font-weight: 800 !important;
  color: #244022 !important;
  margin: 0 0 4px !important;
}
.ge-analytics-subtitle {
  font-size: 12px;
  color: #a6b396;
  margin: 0;
}
.ge-analytics-live {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 11px;
  font-weight: 700;
  color: #244022;
  background: #f0fdf4;
  border: 1px solid #86efac;
  border-radius: 20px;
  padding: 6px 14px;
  margin-top: 4px;
}
.ge-analytics-dot {
  width: 7px; height: 7px;
  background: #22c55e;
  border-radius: 50%;
  animation: ge-pulse 1.5s infinite;
}
@keyframes ge-pulse {
  0%,100% { opacity: 1; }
  50%      { opacity: .3; }
}

/* Filtres */
.ge-analytics-filters {
  display: flex;
  align-items: flex-end;
  gap: 16px;
  flex-wrap: wrap;
  margin-bottom: 24px;
  padding: 18px 20px;
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 8px;
}
.ge-analytics-filter-group {
  display: flex;
  flex-direction: column;
  gap: 5px;
}
.ge-analytics-filter-group label {
  font-size: 9px !important;
  font-weight: 800 !important;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: #a6b396;
}
.ge-analytics-select {
  font-size: 12px;
  font-weight: 700;
  color: #244022;
  border: 1.5px solid #e2e8f0;
  background: #fff;
  padding: 8px 12px;
  border-radius: 4px;
  cursor: pointer;
  min-width: 160px;
}
.ge-analytics-refresh-btn {
  display: flex;
  align-items: center;
  gap: 7px;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: #f3e6da;
  background: #244022;
  border: none;
  padding: 9px 18px;
  cursor: pointer;
  border-radius: 4px;
  transition: background .2s;
  margin-top: 16px;
}
.ge-analytics-refresh-btn:hover { background: #ff874d; color: #244022; }
.ge-analytics-refresh-btn.loading { opacity: .5; pointer-events: none; }

/* KPI Cards */
.ge-analytics-kpis {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 12px;
  margin-bottom: 20px;
}
.ge-analytics-kpi-card {
  background: #fff;
  border: 1px solid #e2e8f0;
  border-top: 3px solid var(--kpi-color, #244022);
  border-radius: 8px;
  padding: 18px 20px;
  position: relative;
}
.ge-analytics-kpi-icon {
  font-size: 20px;
  display: block;
  margin-bottom: 8px;
}
.ge-analytics-kpi-label {
  font-size: 9px !important;
  font-weight: 800 !important;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: #a6b396;
  margin: 0 0 6px !important;
}
.ge-analytics-kpi-val {
  font-size: 22px !important;
  font-weight: 800 !important;
  color: var(--kpi-color, #244022);
  margin: 0 !important;
  line-height: 1;
  letter-spacing: -.02em;
}

/* Rows */
.ge-analytics-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  margin-bottom: 16px;
}
.ge-analytics-card {
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 8px;
  padding: 20px 22px;
}
.ge-analytics-card--wide {
  grid-column: span 1;
}
.ge-analytics-card-title {
  font-size: 10px !important;
  font-weight: 800 !important;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: #a6b396;
  margin: 0 0 16px !important;
}

/* Donut legend */
.ge-analytics-donut-legend {
  margin-top: 16px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.ge-donut-leg-item {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 12px;
  color: #244022;
}
.ge-donut-leg-item span:first-child {
  width: 10px; height: 10px;
  border-radius: 50%;
  flex-shrink: 0;
}
.ge-donut-leg-item strong { margin-left: auto; font-size: 14px; color: #244022; }
.ge-donut-leg-item small  { font-size: 10px; color: #a6b396; }

/* Barres top events */
.ge-analytics-bars { display: flex; flex-direction: column; gap: 10px; }
.ge-analytics-bar-row { display: flex; align-items: center; gap: 10px; }
.ge-analytics-bar-label { font-size: 11px; font-weight: 700; color: #244022; min-width: 140px; max-width: 140px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ge-analytics-bar-track { flex: 1; height: 8px; background: rgba(36,64,34,.08); border-radius: 4px; overflow: hidden; }
.ge-analytics-bar-fill  { height: 100%; background: #244022; border-radius: 4px; transition: width .4s ease; }
.ge-analytics-bar-val   { font-size: 11px; font-weight: 800; color: #244022; min-width: 120px; text-align: right; }
.ge-analytics-bar-val small { font-weight: 400; color: #a6b396; font-size: 10px; }

/* Fill rates */
.ge-analytics-fill-rates { display: flex; flex-direction: column; gap: 16px; }
.ge-fill-rate-row {}
.ge-fill-rate-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 6px; font-size: 12px; font-weight: 700; color: #244022; }
.ge-fill-rate-track  { height: 8px; background: rgba(36,64,34,.08); border-radius: 4px; overflow: hidden; margin-bottom: 4px; }
.ge-fill-rate-bar    { height: 100%; border-radius: 4px; transition: width .5s ease; }
.ge-fill-rate-sub    { font-size: 10px; color: #a6b396; font-weight: 400; }

/* Responsive analytics */
@media (max-width: 1200px) {
  .ge-analytics-kpis { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 900px) {
  .ge-analytics-row  { grid-template-columns: 1fr; }
  .ge-analytics-kpis { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 600px) {
  .ge-analytics-kpis { grid-template-columns: 1fr 1fr; }
  .ge-analytics-filters { flex-direction: column; }
}
