:root{--exh-violet:#40135a;--exh-violet2:#6f35b8;--exh-magenta:#c01891;--exh-pink:#ef4bb1;--exh-gold:#d8aa63;--exh-text:#735e7d;--exh-cream:#fffaf7;--exh-line:rgba(90,45,110,.12);--exh-shadow:0 22px 70px rgba(55,18,70,.10)}
.exh-directory{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}.exh-partner-card{overflow:hidden;border:1px solid var(--exh-line);border-radius:26px;background:#fff;box-shadow:var(--exh-shadow)}.exh-partner-card img{width:100%;height:220px;object-fit:contain;background:#fff;padding:18px}.exh-partner-card-body{padding:22px}.exh-partner-card h3{margin:8px 0;font-size:24px;color:var(--exh-violet)}.exh-partner-card p{color:#74677a;line-height:1.6}.exh-badge,.exh-kicker{display:inline-flex;align-items:center;width:max-content;padding:8px 13px;border-radius:999px;background:#f8e8f4;color:var(--exh-magenta);font-size:11px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.exh-mini-advantage{margin:14px 0;padding:12px 14px;border-radius:14px;background:#fff6ef;color:#6d4e3c;font-weight:650}.exh-text-link{font-weight:800;color:#9c2e62}.exh-btn,.exh-link-row a{display:inline-flex;align-items:center;justify-content:center;min-height:46px;padding:11px 19px;border:0;border-radius:999px;background:linear-gradient(90deg,var(--exh-violet2),var(--exh-magenta));color:#fff!important;font-weight:800;text-decoration:none;cursor:pointer;box-shadow:0 12px 30px rgba(111,53,184,.18)}

/* Premium partner profile */
.exh-partner-page{box-sizing:border-box;width:min(1280px,calc(100% - 24px));max-width:calc(100vw - 24px);margin:26px auto 70px;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--exh-violet);overflow-x:clip}
.exh-partner-hero{position:relative;min-height:470px;border-radius:38px;overflow:hidden;background:radial-gradient(circle at 15% 10%,rgba(239,75,177,.32),transparent 30%),linear-gradient(135deg,#4e1769,#8b35a8 55%,#c01891);background-position:center;background-size:cover;box-shadow:0 30px 90px rgba(55,18,70,.18)}
.exh-partner-hero:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,255,255,.04),rgba(43,7,58,.20));pointer-events:none}.exh-partner-hero-inner{position:absolute;z-index:2;left:0;right:0;bottom:0;display:flex;align-items:flex-end;gap:28px;padding:48px}.exh-partner-logo{width:160px;height:160px;flex:0 0 160px;border-radius:30px;background:#fff;display:grid;place-items:center;padding:18px;box-shadow:0 20px 60px rgba(30,6,43,.28);border:1px solid rgba(255,255,255,.9)}.exh-partner-logo-img{width:100%!important;height:100%!important;object-fit:contain!important;padding:0!important;background:transparent!important}.exh-partner-hero-copy h1{margin:13px 0 12px;color:#fff;font-family:"Cormorant Garamond",Georgia,serif;font-size:clamp(48px,6vw,88px);line-height:.94;letter-spacing:-.03em;text-shadow:0 5px 20px rgba(30,6,43,.35)}.exh-partner-hero .exh-kicker{background:rgba(255,255,255,.92);box-shadow:0 10px 30px rgba(0,0,0,.08)}.exh-tag-row{display:flex;flex-wrap:wrap;gap:8px}.exh-tag-row span{padding:8px 12px;border-radius:999px;background:rgba(255,255,255,.88);color:var(--exh-violet);font-size:12px;font-weight:800;backdrop-filter:blur(8px)}
.exh-partner-layout{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(330px,.75fr);gap:28px;align-items:start;margin-top:28px}.exh-partner-main,.exh-partner-side{display:grid;gap:24px}.exh-partner-side{position:sticky;top:105px}.exh-partner-section,.exh-contact-card,.exh-advantage,.exh-booking-box,.exh-locked{padding:30px;border:1px solid rgba(90,45,110,.11);border-radius:28px;background:rgba(255,255,255,.94);box-shadow:var(--exh-shadow)}.exh-description{font-size:17px;line-height:1.75;color:var(--exh-text)}.exh-partner-editor-content{margin-top:16px}.exh-partner-editor-content p:first-child{margin-top:0}.exh-partner-editor-content p:last-child{margin-bottom:0}.exh-section-heading h2,.exh-advantage h2,.exh-booking-box h3,.exh-locked h2{margin:10px 0 16px;font-family:"Cormorant Garamond",Georgia,serif;font-size:36px;line-height:1;color:var(--exh-violet)}
.exh-gallery{display:grid;grid-template-columns:1.4fr 1fr 1fr;grid-auto-rows:190px;gap:12px;margin-top:20px}.exh-gallery-item{display:block;overflow:hidden;border-radius:20px;background:#f6eef8}.exh-gallery-item.is-featured{grid-row:span 2}.exh-gallery-item img{width:100%;height:100%;object-fit:cover;transition:transform .35s ease}.exh-gallery-item:hover img{transform:scale(1.035)}
.exh-contact-card{background:linear-gradient(180deg,#fff,#fffafd)}.exh-info-line{display:grid;gap:5px;padding:15px 0;border-bottom:1px solid rgba(90,45,110,.09);color:var(--exh-text);line-height:1.5}.exh-info-line strong{color:var(--exh-violet)}.exh-link-row{display:flex;flex-wrap:wrap;gap:9px;margin-top:18px}.exh-link-row a{font-size:13px;min-height:42px;padding:9px 15px}.exh-advantage{margin-top:0;background:radial-gradient(circle at 100% 0,rgba(246,223,181,.35),transparent 32%),linear-gradient(145deg,#fff7fb,#fff)}.exh-advantage-value{font-family:"Cormorant Garamond",Georgia,serif;font-size:36px;line-height:1.05;font-weight:700;color:var(--exh-magenta);margin:14px 0 18px}.exh-promo{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:16px 0;padding:14px 16px;border-radius:16px;background:#fff;border:1px dashed rgba(192,24,145,.30)}.exh-promo span{font-size:12px;font-weight:900;text-transform:uppercase;letter-spacing:.05em;color:var(--exh-text)}.exh-promo code{font-family:inherit;font-size:18px;font-weight:900;color:var(--exh-violet);background:#f8ecfb;padding:7px 10px;border-radius:10px}.exh-conditions{margin:13px 0 0;color:var(--exh-text);font-size:13px;line-height:1.6}.exh-advantage-locked p,.exh-booking-box p,.exh-locked p{color:var(--exh-text);line-height:1.65}.exh-booking-box{margin-top:0}.exh-locked{max-width:780px;margin:80px auto;text-align:center}.exh-locked .exh-kicker{margin:0 auto}.exh-locked .exh-btn{margin-top:10px}
.exh-reservation-form,.exh-login-card{display:grid;gap:14px}.exh-reservation-form label,.exh-login-card label{display:grid;gap:7px;font-weight:700}.exh-reservation-form input,.exh-reservation-form textarea,.exh-login-card input{width:100%;padding:12px 14px;border:1px solid #ddd;border-radius:12px}.exh-two{display:grid;grid-template-columns:1fr 1fr;gap:12px}.exh-consent{grid-template-columns:auto 1fr!important;align-items:start}.exh-consent input{width:auto!important;margin-top:4px}.exh-notice{padding:14px 16px;border-radius:14px;background:#f7f1ff}

/* Login UX */
.exh-password-wrap{position:relative;display:block}.exh-password-wrap input{padding-right:52px!important}.exh-password-toggle{position:absolute;right:8px;top:50%;transform:translateY(-50%);width:38px;height:38px;display:grid;place-items:center;border:0;border-radius:10px;background:transparent;color:#6b4778;cursor:pointer}.exh-password-toggle:hover{background:rgba(111,53,184,.08)}.exh-password-toggle:focus-visible{outline:2px solid #8b4ed9;outline-offset:2px}.exh-eye-icon{position:relative;width:21px;height:14px;border:2px solid currentColor;border-radius:70% 15%/70% 15%;transform:rotate(45deg);display:block}.exh-eye-icon:after{content:"";position:absolute;width:5px;height:5px;border:2px solid currentColor;border-radius:50%;left:5px;top:2px}.exh-password-toggle[aria-pressed="true"] .exh-eye-icon:before{content:"";position:absolute;width:28px;height:2px;background:currentColor;left:-5px;top:5px;transform:rotate(-90deg);transform-origin:center}.exh-login-message{padding:13px 15px;border-radius:14px;line-height:1.5}.exh-login-error{background:#fff0f3;border:1px solid rgba(186,34,74,.18);color:#8c1f3b}.exh-login-error strong{color:#71172f}.screen-reader-text{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}

@media(max-width:1050px){.exh-partner-layout{grid-template-columns:1fr}.exh-partner-side{position:static}.exh-directory{grid-template-columns:repeat(2,minmax(0,1fr))}.exh-gallery{grid-template-columns:1.2fr 1fr;grid-auto-rows:180px}}
@media(max-width:700px){.exh-partner-page{width:calc(100% - 16px);max-width:calc(100vw - 16px);margin:18px auto 50px}.exh-partner-hero{min-height:520px;border-radius:26px}.exh-partner-hero-inner{padding:24px;display:block}.exh-partner-logo{width:112px;height:112px;margin-bottom:22px;border-radius:22px}.exh-partner-hero-copy h1{font-size:50px}.exh-partner-layout{gap:18px;margin-top:18px}.exh-partner-section,.exh-contact-card,.exh-advantage,.exh-booking-box,.exh-locked{padding:22px;border-radius:22px}.exh-gallery{grid-template-columns:1fr 1fr;grid-auto-rows:150px}.exh-gallery-item.is-featured{grid-column:1/-1;grid-row:auto;height:240px}.exh-two,.exh-directory{grid-template-columns:1fr}}

.exh-partner-page, .exh-partner-hero, .exh-partner-layout{max-width:100%;}


/* ===== v0.1.6 — suppression définitive du débordement horizontal ===== */
body.single-exh_partner,
body.post-type-archive-exh_partner{
  overflow-x:hidden !important;
}

.exh-partner-page{
  position:relative;
  left:auto !important;
  right:auto !important;
  transform:none !important;
}

.exh-partner-page,
.exh-partner-page *,
.exh-partner-layout,
.exh-partner-main,
.exh-partner-side,
.exh-partner-section,
.exh-contact-card,
.exh-advantage,
.exh-booking-box,
.exh-gallery{
  box-sizing:border-box;
  min-width:0;
  max-width:100%;
}

.exh-promo{
  flex-wrap:wrap;
}

.exh-promo code{
  max-width:100%;
  overflow-wrap:anywhere;
  word-break:break-word;
}


/* ===== v0.1.7 — hero pleine largeur / page plus premium ===== */
.exh-partner-page{
  width:100% !important;
  max-width:none !important;
  margin:0 auto 70px !important;
}

.exh-partner-hero{
  width:100%;
  max-width:none;
  border-radius:0 0 38px 38px;
  margin:0 0 28px 0;
}

.exh-partner-layout{
  width:min(1280px, calc(100% - 24px));
  max-width:calc(100vw - 24px);
  margin:0 auto;
}

@media(max-width:700px){
  .exh-partner-page{
    margin:0 auto 50px !important;
  }
  .exh-partner-hero{
    border-radius:0 0 26px 26px;
    margin-bottom:18px;
  }
  .exh-partner-layout{
    width:calc(100% - 16px);
    max-width:calc(100vw - 16px);
  }
}


/* ===== v0.1.8 — fond de page pleine largeur + hero plus compact ===== */

/* Le fond violet/rose appartient à toute la page partenaire, pas seulement
   au conteneur central. Le box-shadow full-bleed traverse les wrappers du thème. */
.exh-partner-page{
  width:min(1280px, calc(100% - 24px)) !important;
  max-width:calc(100vw - 24px) !important;
  margin:0 auto 70px !important;
  padding:24px 0 70px;
  background:
    radial-gradient(circle at 8% 5%, rgba(223,203,246,.48), transparent 28%),
    radial-gradient(circle at 94% 22%, rgba(255,220,236,.42), transparent 30%),
    linear-gradient(180deg,#f7f1fb 0%,#fbf5fb 48%,#fff8f5 100%);
  box-shadow:
    0 0 0 100vmax #f7f1fb,
    0 24px 80px rgba(55,18,70,.06);
  clip-path:inset(0 -100vmax);
}

/* Le hero redevient un bloc premium contenu dans la largeur de la page. */
.exh-partner-hero{
  width:100%;
  max-width:100%;
  min-height:360px;
  margin:0;
  border-radius:38px;
}

.exh-partner-hero-inner{
  padding:38px 42px;
}

.exh-partner-logo{
  width:135px;
  height:135px;
  flex-basis:135px;
  border-radius:26px;
}

.exh-partner-hero-copy h1{
  font-size:clamp(46px,5.3vw,78px);
}

/* Le contenu garde la même largeur que le hero. */
.exh-partner-layout{
  width:100%;
  max-width:100%;
  margin:28px auto 0;
}

@media(max-width:700px){
  .exh-partner-page{
    width:calc(100% - 16px) !important;
    max-width:calc(100vw - 16px) !important;
    margin:0 auto 50px !important;
    padding:14px 0 50px;
  }

  .exh-partner-hero{
    min-height:430px;
    border-radius:26px;
    margin:0;
  }

  .exh-partner-hero-inner{
    padding:22px;
  }

  .exh-partner-logo{
    width:105px;
    height:105px;
  }

  .exh-partner-layout{
    width:100%;
    max-width:100%;
    margin-top:18px;
  }
}


/* ===== v0.1.9 — vrai fond full width, indépendamment d'Elementor ===== */

/* On enlève le faux full-bleed précédent. */
.exh-partner-page{
  position:relative;
  z-index:0;
  background:transparent !important;
  box-shadow:none !important;
  clip-path:none !important;
  overflow:visible !important;
}

/* Le fond est dessiné sur 100vw derrière toute la fiche partenaire. */
.exh-partner-page::before{
  content:"";
  position:absolute;
  z-index:-1;
  top:0;
  bottom:0;
  left:50%;
  width:100vw;
  transform:translateX(-50%);
  background:
    radial-gradient(circle at 8% 5%, rgba(223,203,246,.58), transparent 28%),
    radial-gradient(circle at 94% 20%, rgba(255,220,236,.52), transparent 31%),
    radial-gradient(circle at 50% 78%, rgba(246,225,242,.44), transparent 34%),
    linear-gradient(180deg,#f3eafa 0%,#f8eff8 46%,#fff7f2 100%);
  pointer-events:none;
}

/* Les wrappers du thème ne doivent plus couper le fond pleine largeur. */
body.single-exh_partner #content,
body.single-exh_partner .site-content,
body.single-exh_partner .content-area,
body.single-exh_partner .site-main,
body.single-exh_partner article.exh_partner,
body.single-exh_partner article.exh_partner > .entry-content{
  overflow:visible !important;
  background:transparent !important;
}

/* Le contenu garde une belle marge intérieure. */
.exh-partner-page{
  width:min(1280px, calc(100% - 48px)) !important;
  max-width:calc(100vw - 48px) !important;
  margin:0 auto 70px !important;
  padding:24px 0 70px;
}

/* Hero compact dans le contenu, pas en pleine largeur. */
.exh-partner-hero{
  min-height:330px;
  border-radius:34px;
}

.exh-partner-hero-inner{
  padding:34px 40px;
}

@media(max-width:700px){
  .exh-partner-page{
    width:calc(100% - 20px) !important;
    max-width:calc(100vw - 20px) !important;
    padding:12px 0 48px;
  }

  .exh-partner-hero{
    min-height:400px;
    border-radius:24px;
  }

  .exh-partner-hero-inner{
    padding:22px;
  }
}


/* ===== v0.2.0 — formulaire réservation pleine largeur ===== */

/* Le formulaire sort de la colonne latérale : plus de grand vide sous les photos. */
.exh-booking-wide{
  width:100%;
  max-width:100%;
  margin:28px auto 0;
}

.exh-booking-wide .exh-booking-box{
  margin:0;
  border-radius:32px;
  border:1px solid rgba(90,45,110,.10);
  background:
    radial-gradient(circle at 0 0,rgba(223,203,246,.52),transparent 34%),
    radial-gradient(circle at 100% 100%,rgba(255,224,236,.56),transparent 32%),
    rgba(255,255,255,.96);
  box-shadow:0 26px 80px rgba(55,18,70,.10);
}

/* Demande de réservation : présentation éditoriale à gauche, formulaire à droite. */
.exh-booking-request{
  display:grid;
  grid-template-columns:minmax(260px,.72fr) minmax(0,1.28fr);
  gap:38px;
  align-items:start;
  padding:38px;
}

.exh-booking-intro{
  padding:8px 6px 8px 2px;
}

.exh-booking-intro h3{
  margin:14px 0 16px;
  font-family:"Cormorant Garamond",Georgia,serif;
  font-size:clamp(38px,4vw,56px);
  line-height:.98;
  color:var(--exh-violet);
}

.exh-booking-intro > p{
  margin:0;
  color:var(--exh-text);
  font-size:15.5px;
  line-height:1.75;
}

.exh-booking-reassurance{
  display:grid;
  gap:12px;
  margin-top:26px;
}

.exh-booking-reassurance > div{
  display:grid;
  grid-template-columns:30px 1fr;
  gap:10px;
  align-items:center;
  color:var(--exh-violet);
  font-size:13px;
  line-height:1.45;
}

.exh-booking-reassurance span{
  width:27px;
  height:27px;
  display:grid;
  place-items:center;
  border-radius:50%;
  background:linear-gradient(135deg,var(--exh-violet2),var(--exh-magenta));
  color:#fff;
  font-weight:900;
  box-shadow:0 8px 22px rgba(111,53,184,.16);
}

.exh-booking-request .exh-reservation-form{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:16px 18px;
  padding:26px;
  border-radius:25px;
  background:rgba(255,255,255,.84);
  border:1px solid rgba(111,53,184,.10);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.95);
}

.exh-booking-request .exh-reservation-form label{
  display:grid;
  gap:8px;
  min-width:0;
  color:var(--exh-violet);
  font-size:13px;
  font-weight:800;
}

.exh-booking-request .exh-reservation-form label > span{
  display:block;
}

.exh-booking-request .exh-reservation-form input,
.exh-booking-request .exh-reservation-form textarea{
  width:100%;
  min-width:0;
  min-height:50px;
  padding:13px 15px;
  border:1px solid rgba(111,53,184,.18);
  border-radius:15px;
  background:#fff;
  color:#5f4d69;
  font:inherit;
  font-weight:500;
  outline:none;
  transition:border-color .2s ease,box-shadow .2s ease;
}

.exh-booking-request .exh-reservation-form textarea{
  min-height:128px;
  resize:vertical;
}

.exh-booking-request .exh-reservation-form input:focus,
.exh-booking-request .exh-reservation-form textarea:focus{
  border-color:rgba(192,24,145,.55);
  box-shadow:0 0 0 4px rgba(192,24,145,.08);
}

.exh-field-full{
  grid-column:1/-1;
}

.exh-booking-request .exh-consent{
  grid-template-columns:auto 1fr !important;
  align-items:start;
  gap:11px !important;
  padding:2px 2px 0;
  color:var(--exh-text) !important;
  font-size:12.5px !important;
  font-weight:600 !important;
  line-height:1.55;
}

.exh-booking-request .exh-consent input{
  width:18px !important;
  min-height:18px !important;
  height:18px;
  margin:2px 0 0;
  padding:0;
  accent-color:var(--exh-magenta);
}

.exh-form-actions{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:14px 18px;
  padding-top:4px;
}

.exh-form-actions .exh-btn{
  min-width:210px;
  min-height:50px;
}

.exh-form-actions small{
  flex:1 1 260px;
  color:var(--exh-text);
  font-size:11.5px;
  line-height:1.5;
}

/* Un simple lien externe garde également une belle carte pleine largeur. */
.exh-booking-wide > .exh-booking-box:not(.exh-booking-request){
  display:flex;
  align-items:center;
  gap:22px;
  padding:28px 32px;
}

.exh-booking-wide > .exh-booking-box:not(.exh-booking-request) h3{
  margin:0;
}

.exh-booking-wide > .exh-booking-box:not(.exh-booking-request) p{
  margin:0;
  flex:1;
}

@media(max-width:900px){
  .exh-booking-request{
    grid-template-columns:1fr;
    gap:24px;
    padding:28px;
  }
}

@media(max-width:620px){
  .exh-booking-request{
    padding:22px;
    border-radius:24px;
  }

  .exh-booking-request .exh-reservation-form{
    grid-template-columns:1fr;
    padding:18px;
  }

  .exh-field-full{
    grid-column:auto;
  }

  .exh-booking-request .exh-consent,
  .exh-form-actions{
    grid-column:1/-1;
  }

  .exh-booking-wide > .exh-booking-box:not(.exh-booking-request){
    display:grid;
    padding:24px;
  }
}


/* ===== v0.2.1 — correction galerie responsive ===== */
@media(max-width:700px){

  .exh-gallery{
    display:grid !important;
    grid-template-columns:repeat(2,minmax(0,1fr)) !important;
    grid-auto-flow:row !important;
    grid-auto-rows:auto !important;
    gap:10px !important;
    align-items:stretch !important;
  }

  .exh-gallery-item,
  .exh-gallery-item.is-featured{
    position:relative !important;
    display:block !important;
    width:100% !important;
    min-width:0 !important;
    height:auto !important;
    grid-column:auto !important;
    grid-row:auto !important;
    overflow:hidden !important;
    border-radius:16px !important;
    aspect-ratio:1 / 1 !important;
  }

  /* La première photo reste mise en avant mais sans chevaucher les suivantes. */
  .exh-gallery-item.is-featured{
    grid-column:1 / -1 !important;
    aspect-ratio:16 / 10 !important;
  }

  .exh-gallery-item img,
  .exh-gallery-item.is-featured img{
    position:static !important;
    inset:auto !important;
    display:block !important;
    width:100% !important;
    height:100% !important;
    min-height:0 !important;
    max-height:none !important;
    margin:0 !important;
    padding:0 !important;
    object-fit:cover !important;
    transform:none !important;
  }
}

@media(max-width:430px){
  .exh-gallery{
    grid-template-columns:1fr !important;
  }

  .exh-gallery-item,
  .exh-gallery-item.is-featured{
    grid-column:1 !important;
    aspect-ratio:4 / 3 !important;
  }
}


/* ===== v0.2.3 — Grandes enseignes / Partenaires locaux ===== */
.exh-partner-card-body > .exh-badge{
  margin:0 7px 7px 0;
}

.exh-kind-badge{
  background:#f2ebff;
  color:#6f35b8;
}

.exh-brand-badge{
  background:linear-gradient(135deg,#efe7ff,#fcecf8);
  color:#5a2488;
}

.exh-local-badge{
  background:linear-gradient(135deg,#fff4e6,#fff8f1);
  color:#8b5a31;
}

.exh-tier-badge{
  background:#f8e8f4;
  color:var(--exh-magenta);
}
