/* --------------------------------------------------------------------------
   UZELIA — accord entre les conteneurs d'Elementor et la charte.

   FICHIER GÉNÉRÉ par build/pont.py à partir de uzelia.css :
   ne pas le modifier à la main.

   Elementor met tous ses conteneurs en « flex, colonne », avec 20 px
   d'espace entre les enfants et « flex: 0 1 auto ». La maquette, elle, est
   en flux normal sauf pour une trentaine de classes. On remet donc les
   conteneurs issus de la conversion (marqués « uz ») en bloc sans
   espacement, puis on rétablit une à une toutes les décisions de mise en
   page que la charte prend — y compris la répartition des largeurs, que
   les conteneurs d'Elementor écrasent sans cela.
   -------------------------------------------------------------------------- */

.elementor .e-con.uz {
  display: block;
  --display: block;
  flex-direction: initial;
  flex: 0 1 auto;
  gap: 0;
  --gap: 0px;
  --flex-gap: 0px 0px;
  --width: 100%;
  --max-width: 100%;
  --content-width: 100%;
  --padding-block-start: 0; --padding-block-end: 0;
  --padding-inline-start: 0; --padding-inline-end: 0;
  --margin-block-start: 0; --margin-block-end: 0;
  min-width: 0;
}

/* décisions de mise en page reprises de la charte, dans son ordre */
.elementor .e-con.uz.wrap { width: 100%; max-width: var(--wrap) }
.elementor .e-con.uz.wrap-mid { max-width: var(--wrap-mid) }
.elementor .e-con.uz.wrap-narrow { max-width: var(--wrap-narrow) }
.elementor .e-con.uz.sr { position: absolute; width: 1px; height: 1px; overflow: hidden }
.elementor .e-con.uz.skip { position: absolute }
.elementor .e-con.uz.lede--center { max-width: 60ch }
.elementor .e-con.uz.btn { display: inline-flex; align-items: center; justify-content: center; gap: 12px; min-height: 54px; position: relative; overflow: hidden }
.elementor .e-con.uz.btn--white { min-height: 47px }
.elementor .e-con.uz.btn--ghost { min-height: auto }
.elementor .e-con.uz.link-u { display: inline-flex; align-items: center; gap: 11px }
.elementor .e-con.uz.ph { position: relative; overflow: hidden }
.elementor .e-con.uz.ratio-43 { aspect-ratio: 4/3 }
.elementor .e-con.uz.ratio-11 { aspect-ratio: 1/1 }
.elementor .e-con.uz.ratio-34 { aspect-ratio: 3/4 }
.elementor .e-con.uz.ratio-169 { aspect-ratio: 16/9 }
.elementor .e-con.uz.ratio-23 { aspect-ratio: 2/3 }
.elementor .e-con.uz.hdr { position: absolute; height: var(--header-h); display: flex; align-items: center }
.elementor .e-con.uz.hdr__nav { display: flex; align-items: center; gap: clamp(10px,2.1vw,40px); min-width: 0 }
.elementor .e-con.uz.hdr__nav--r { justify-content: flex-end }
.elementor .e-con.uz.hdr__nav--l { justify-content: flex-start }
.elementor .e-con.uz.hdr__link { position: relative }
.elementor .e-con.uz.hdr__logo { height: clamp(24px,2.6vw,38px); display: flex; align-items: center; justify-content: center }
.elementor .e-con.uz.hdr__burger { display: none }
.elementor .e-con.uz.logo-dark { display: none }
.elementor .e-con.uz.mega { position: absolute; display: grid; grid-template-columns: repeat(4,1fr); gap: clamp(24px,2.6vw,44px) }
.elementor .e-con.uz.mega__foot { grid-column: 1/-1; display: flex; flex-wrap: wrap; gap: 18px 34px; align-items: center; justify-content: space-between }
.elementor .e-con.uz.mega__note { max-width: 62ch }
.elementor .e-con.uz.hero { position: relative; height: var(--hero-h); max-height: 92svh; min-height: 520px; display: flex; align-items: center; justify-content: center; overflow: hidden }
.elementor .e-con.uz.hero__media { position: absolute; overflow: hidden }
.elementor .e-con.uz.hero__veil { position: absolute }
.elementor .e-con.uz.hero__in { position: relative; max-width: 1100px }
.elementor .e-con.uz.hero__actions { display: flex; flex-wrap: wrap; gap: 14px; justify-content: center }
.elementor .e-con.uz.hero__meta { position: absolute }
.elementor .e-con.uz.scroll-cue { position: absolute; display: flex; flex-direction: column; align-items: center; gap: 10px }
.elementor .e-con.uz.phead { position: relative; min-height: 62svh; display: flex; align-items: flex-end; overflow: hidden }
.elementor .e-con.uz.phead__bg { position: absolute }
.elementor .e-con.uz.phead__veil { position: absolute }
.elementor .e-con.uz.phead__in { position: relative; width: 100% }
.elementor .e-con.uz.bloc-pleine-largeur { grid-column: 1/-1 }
.elementor .e-con.uz.bloc-deux { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(30px,4vw,70px) }
.elementor .e-con.uz.form { max-width: var(--wrap-narrow) }
.elementor .e-con.uz.form__grid { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(22px,2.6vw,34px) }
.elementor .e-con.uz.form__row { display: flex; flex-direction: column }
.elementor .e-con.uz.form__row--large { grid-column: 1/-1 }
.elementor .e-con.uz.form__consent { grid-column: 1/-1; display: flex; gap: 14px; align-items: flex-start }
.elementor .e-con.uz.form__actions { grid-column: 1/-1; display: flex; flex-wrap: wrap; gap: 18px; align-items: center }
.elementor .e-con.uz.form__pot { position: absolute; width: 1px; height: 1px; overflow: hidden }
.elementor .e-con.uz.form__reponse { display: none }
.elementor .e-con.uz.form__reponse.is-on { display: block }
.elementor .e-con.uz.sec { position: relative }
.elementor .e-con.uz.pillars { display: grid; grid-template-columns: repeat(4,1fr); gap: clamp(20px,2.4vw,40px) }
.elementor .e-con.uz.pillars--duo { grid-template-columns: repeat(2,minmax(0,340px)); justify-content: center }
.elementor .e-con.uz.pillar__n { display: block }
.elementor .e-con.uz.pillar__dot { width: 6px; height: 6px }
.elementor .e-con.uz.quote { display: grid; grid-template-columns: 1.05fr .95fr; gap: clamp(30px,5vw,90px); align-items: center }
.elementor .e-con.uz.quote__mark { display: block }
.elementor .e-con.uz.split { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(30px,5.5vw,100px); align-items: center }
.elementor .e-con.uz.duo { display: grid; grid-template-columns: 1fr 1fr; min-height: min(806px,74svh); align-items: stretch }
.elementor .e-con.uz.duo__media { position: relative; overflow: hidden }
.elementor .e-con.uz.duo__body { display: flex; flex-direction: column; justify-content: center }
.elementor .e-con.uz.feature { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(30px,5vw,80px); align-items: center }
.elementor .e-con.uz.feature__body { max-width: 46ch }
.elementor .e-con.uz.steps { display: grid; grid-template-columns: repeat(4,1fr); gap: 1px }
.elementor .e-con.uz.rail { position: relative }
.elementor .e-con.uz.rail__track { display: flex; gap: clamp(26px,3vw,54px) }
.elementor .e-con.uz.rail__item { flex: 0 0 clamp(240px,26vw,340px) }
.elementor .e-con.uz.rail__nav { display: flex; gap: 10px; justify-content: flex-end }
.elementor .e-con.uz.expo { display: flex; gap: 12px; height: clamp(400px,52vh,560px) }
.elementor .e-con.uz.ep { position: relative; flex: 1 1 0; min-width: 0; overflow: hidden }
.elementor .e-con.uz.ep.is-open { flex: 4.2 }
.elementor .e-con.uz.ep__scrim { position: absolute }
.elementor .e-con.uz.ep__vlab { position: absolute }
.elementor .e-con.uz.ep__body { position: absolute }
.elementor .e-con.uz.ep__x { max-width: 38ch }
.elementor .e-con.uz.filters { display: flex; flex-wrap: wrap; gap: 10px }
.elementor .e-con.uz.cards { display: grid; grid-template-columns: repeat(3,1fr); gap: clamp(22px,2.6vw,44px) }
.elementor .e-con.uz.card { display: flex; flex-direction: column }
.elementor .e-con.uz.card__b { display: flex; flex-direction: column; flex: 1 }
.elementor .e-con.uz.card__f { display: flex; justify-content: space-between; gap: 14px }
.elementor .e-con.uz.needs { display: grid; grid-template-columns: repeat(auto-fit,minmax(210px,1fr)); gap: clamp(26px,3vw,56px) }
.elementor .e-con.uz.jnl { display: grid; grid-template-columns: minmax(0,1.05fr) minmax(0,.95fr); gap: clamp(22px,3vw,52px); align-items: start }
.elementor .e-con.uz.jnl__stage { position: relative; min-height: clamp(340px,42vh,500px) }
.elementor .e-con.uz.jnl__card { position: absolute }
.elementor .e-con.uz.jnl__scrim { position: absolute }
.elementor .e-con.uz.jnl__meta { position: absolute }
.elementor .e-con.uz.jnl__pill { display: inline-block }
.elementor .e-con.uz.jnl__date { display: block }
.elementor .e-con.uz.jnl__list { min-width: 0 }
.elementor .e-con.uz.jnl__row { display: grid; grid-template-columns: auto minmax(0,1fr) auto; gap: clamp(14px,1.5vw,22px); align-items: center; min-width: 0 }
.elementor .e-con.uz.jnl__n { align-self: start }
.elementor .e-con.uz.jnl__cat { display: block }
.elementor .e-con.uz.jnl__t { display: -webkit-box; overflow: hidden }
.elementor .e-con.uz.jnl__arw { align-self: center; flex: 0 0 auto }
.elementor .e-con.uz.faq--scroll { max-height: clamp(340px,50vh,500px) }
.elementor .e-con.uz.faq__hint { display: flex; align-items: center; justify-content: center; gap: 10px }
.elementor .e-con.uz.marquee { overflow: hidden }
.elementor .e-con.uz.marquee__in { display: flex; gap: 44px; width: max-content }
.elementor .e-con.uz.cta__actions { display: flex; flex-wrap: wrap; gap: 14px; justify-content: center }
.elementor .e-con.uz.infos { display: grid; grid-template-columns: repeat(4,1fr); gap: clamp(24px,3vw,50px) }
.elementor .e-con.uz.infos__ico { width: 46px; height: 46px }
.elementor .e-con.uz.ftr { position: relative; overflow: hidden }
.elementor .e-con.uz.ftr__mark { position: absolute }
.elementor .e-con.uz.ftr__in { position: relative; display: grid; grid-template-columns: 1.2fr 1fr 1fr; gap: clamp(34px,4.4vw,80px) }
.elementor .e-con.uz.ftr__logo { width: clamp(150px,15vw,190px) }
.elementor .e-con.uz.ftr__bar { position: relative; display: flex; flex-wrap: wrap; gap: 14px 30px; justify-content: space-between; align-items: center }
.elementor .e-con.uz.dock { position: fixed; display: none; gap: 10px }
.elementor .e-con.uz.mnav { position: fixed }
.elementor .e-con.uz.mnav__close { position: absolute; width: 44px; height: 44px }

/* Ces classes sont posées en absolu par la charte : leur enveloppe de bloc
   doit disparaître de la mise en page, sinon elle décale ce qui suit. */
.elementor .elementor-widget.dock:not(.ph),
.elementor .elementor-widget.ep__body:not(.ph),
.elementor .elementor-widget.ep__scrim:not(.ph),
.elementor .elementor-widget.ep__vlab:not(.ph),
.elementor .elementor-widget.form__pot:not(.ph),
.elementor .elementor-widget.ftr__mark:not(.ph),
.elementor .elementor-widget.hdr:not(.ph),
.elementor .elementor-widget.hero__media:not(.ph),
.elementor .elementor-widget.hero__meta:not(.ph),
.elementor .elementor-widget.hero__veil:not(.ph),
.elementor .elementor-widget.jnl__card:not(.ph),
.elementor .elementor-widget.jnl__meta:not(.ph),
.elementor .elementor-widget.jnl__scrim:not(.ph),
.elementor .elementor-widget.mega:not(.ph),
.elementor .elementor-widget.mnav:not(.ph),
.elementor .elementor-widget.mnav__close:not(.ph),
.elementor .elementor-widget.phead__bg:not(.ph),
.elementor .elementor-widget.phead__veil:not(.ph),
.elementor .elementor-widget.scroll-cue:not(.ph),
.elementor .elementor-widget.skip:not(.ph),
.elementor .elementor-widget.sr:not(.ph) { display: contents }
