.elementor-2907 .elementor-element.elementor-element-0c0c0ff{--display:flex;--justify-content:center;--align-items:center;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--padding-top:100px;--padding-bottom:80px;--padding-left:24px;--padding-right:24px;}.elementor-2907 .elementor-element.elementor-element-430c309{--display:flex;--align-items:center;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );}.elementor-2907 .elementor-element.elementor-element-a781e53{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 30px) 0px;text-align:center;}.elementor-2907 .elementor-element.elementor-element-a781e53 .elementor-heading-title{font-family:"Libre Baskerville", Sans-serif;font-size:clamp(40px, 6vw, 80px);font-weight:400;font-style:normal;text-decoration:none;line-height:1.1em;letter-spacing:0px;}.elementor-2907 .elementor-element.elementor-element-77be7ea{width:var( --container-widget-width, 600% );max-width:600%;margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 80px) 0px;--container-widget-width:600%;--container-widget-flex-grow:0;text-align:center;font-family:"Inter", Sans-serif;font-size:18px;font-weight:400;font-style:normal;text-decoration:none;line-height:1.6em;letter-spacing:0.2px;color:#A8A8A8;}.elementor-2907 .elementor-element.elementor-element-77be7ea.elementor-element{--align-self:center;}.elementor-2907 .elementor-element.elementor-element-3dbce37{--display:flex;--flex-direction:column;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;}.elementor-2907 .elementor-element.elementor-element-bdbbe75{--display:flex;--flex-direction:column;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;}.elementor-2907 .elementor-element.elementor-element-1fc8f36{--display:flex;--flex-direction:column;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;}@media(min-width:768px){.elementor-2907 .elementor-element.elementor-element-bdbbe75{--width:100%;}}@media(max-width:1024px){.elementor-2907 .elementor-element.elementor-element-a781e53 .elementor-heading-title{font-size:32px;}.elementor-2907 .elementor-element.elementor-element-77be7ea{font-size:16px;line-height:1.6em;letter-spacing:0.2px;}}@media(max-width:767px){.elementor-2907 .elementor-element.elementor-element-430c309{--align-items:center;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );}.elementor-2907 .elementor-element.elementor-element-a781e53{text-align:center;}.elementor-2907 .elementor-element.elementor-element-77be7ea{text-align:justify;font-size:16px;line-height:1.6em;letter-spacing:0.15px;word-spacing:0em;}}/* Start custom CSS for html, class: .elementor-element-37f58ed *//* =========================================================
   WORLD MAP — CSS Pro (desktop stable + hover stable + a11y)
   Aligné avec JS: tooltip.left/top = clientX/clientY (position:fixed)
   ========================================================= */
/* Anti-flash (FOUC) : cache le SVG tant que JS n'a pas fini */
.world-map svg{
  opacity: 0;
  transition: opacity .18s ease;
}

.world-map.is-ready svg{
  opacity: 1;
}

/* -----------------------------
   VARIABLES
   ----------------------------- */
:root{
  --map-country: rgba(255,255,255,.22);
  --map-country-active: rgba(255,255,255,.30);
  --map-country-hover: rgba(255,255,255,.88);
  --map-glow: rgba(255,255,255,.35);

  --tooltip-bg: rgba(10,10,10,.78);
  --tooltip-fg: rgba(255,255,255,.94);
  --tooltip-offset: 12px; /* distance du curseur */
}

/* -----------------------------
   LAYOUT (breakout Elementor)
   ----------------------------- */
.world-map{
  width: 100vw;
  max-width: none;
  margin-left: calc(50% - 50vw);
  margin-right: calc(50% - 50vw);
  padding: clamp(28px, 5vh, 72px) 0;
  overflow-x: hidden;
  position: relative;
}

.world-map svg{
  width: 100%;
  height: auto;
  display: block;

  transform: scale(1.12);
  transform-origin: center;
}

/* -----------------------------
   PAYS — BASE
   ----------------------------- */

/* Base: tous les pays */
.world-map svg g path{
  fill: var(--map-country);
  transition: fill .18s ease, filter .18s ease, opacity .18s ease;
}

/* IMPORTANT: stabilise les interactions dans un SVG */
.world-map svg g{
  pointer-events: none; /* par défaut, rien n’accroche */
}

/* Pays cliquables uniquement (dans un <a>) */
.world-map svg a{
  pointer-events: auto;
}

/* Les paths cliquables doivent capter l’hover UNIQUEMENT sur le "fill" */
.world-map svg a g path{
  pointer-events: visibleFill; /* évite les micro-flash aux frontières */
  fill: var(--map-country-active);
  cursor: pointer;
}

/* Hover souris (desktop) */
.world-map svg a:hover g path{
  fill: var(--map-country-hover);
  filter: drop-shadow(0 0 7px var(--map-glow));
  opacity: 1;
}

/* Focus clavier (accessibilité) */
.world-map svg a:focus-visible g path{
  fill: var(--map-country-hover);
  filter: drop-shadow(0 0 7px var(--map-glow));
  opacity: 1;

  /* petit ring au stroke */
  stroke: rgba(255,255,255,.65);
  stroke-width: 1.2px;
  paint-order: stroke;
}

.world-map svg a:focus{ outline: none; }

/* -----------------------------
   TOOLTIP
   ----------------------------- */

/* Base tooltip: position fixed (aligné clientX/clientY) */
.world-map .map-tooltip{
  position: fixed;
  z-index: 9999;
  pointer-events: none;

  /* JS pilote left/top */
  left: 0;
  top: 0;

  opacity: 0;

  /* On garde un offset léger, MAIS pas “loin” :
     -> on utilise translate avec une valeur stable */
transform: translate(var(--tooltip-offset, 12px), var(--tooltip-offset, 12px));
  transition: opacity .12s ease;

  padding: 8px 12px;
  border-radius: 999px;
  font-size: 14px;
  line-height: 1;
  letter-spacing: .2px;
  white-space: nowrap;

  background: var(--tooltip-bg);
  color: var(--tooltip-fg);

  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  box-shadow: 0 10px 30px rgba(0,0,0,.25);
}

.world-map .map-tooltip.is-visible{
  opacity: 1;
}

/* FORCE desktop: si jamais ton navigateur "croit" être en coarse pointer,
   ces règles assurent que left/top continuent de marcher proprement. */
@media (hover: hover) and (pointer: fine){
  .world-map .map-tooltip{
    bottom: auto;
  }
}

/* -----------------------------
   PREFERS REDUCED MOTION
   ----------------------------- */
@media (prefers-reduced-motion: reduce){
  .world-map svg g path{ transition: none; }
  .world-map .map-tooltip{ transition: none; }
}

/* -----------------------------
   MOBILE / TOUCH (à garder pour plus tard)
   -> IMPORTANT: je le laisse MAIS je le rends moins intrusif.
   ----------------------------- */
@media (hover: none) and (pointer: coarse){

  .world-map svg a{
    -webkit-tap-highlight-color: transparent;
    touch-action: manipulation;
  }

  /* On n’augmente PAS la zone de tap via stroke ici tant que tout n’est pas validé,
     car ça peut créer des chevauchements de hover/tap entre pays voisins. */
  /* (On réactivera une version safe quand tu passes en mobile.) */

  /* Tooltip mobile: centré bas */
  .world-map .map-tooltip{
    left: 50%;
    top: auto;
    bottom: 16px;
    transform: translateX(-50%);
  }
  .world-map svg{
  opacity: 0;
  transition: opacity .18s ease;
}
.world-map.is-ready svg{
  opacity: 1;
}

}/* End custom CSS */
/* Start custom CSS for html, class: .elementor-element-6bdf23c */.wm-hero{
  position: relative;
  width: 100%;
  padding: clamp(56px, 7vw, 96px) 0;
  overflow: hidden;
}

/* Overlay plus doux (portfolio = image qui vit) */
.wm-hero::before{
  content:"";
  position:absolute; inset:0;
  background:
    radial-gradient(70% 65% at 55% 55%, rgba(0,0,0,.18), rgba(0,0,0,.72) 78%, rgba(0,0,0,.90) 100%);
  pointer-events:none;
}

.wm-wrap{
  position: relative;
  max-width: 1240px; /* plus large */
  margin: 0 auto;
  padding: 0 clamp(16px, 3vw, 32px);
}

.wm{
  max-width: 920px; /* plus “galerie” */
}

/* Chips plus “objets” (sensation UI premium) */
.wm-chip{
  border-radius: 999px;
  padding: 11px 14px;
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  transition: transform .12s ease, background .12s ease, border-color .12s ease;
}
.wm-chip:active{
  transform: scale(.98);
}/* End custom CSS */
/* Start custom CSS for html, class: .elementor-element-eac415f */.wm {
  /* Palette : noir profond + verre + texte crème + doré discret */
  --wm-ink: rgba(255, 255, 255, .92);
  --wm-muted: rgba(255, 255, 255, .68);
  --wm-gold: rgba(231, 196, 123, .82); /* Doré doux */
  --wm-surface: rgba(255, 255, 255, .035);
  --wm-surface-2: rgba(255, 255, 255, .06);
  --wm-stroke: rgba(255, 255, 255, .10);
  --wm-stroke-2: rgba(255, 255, 255, .16);
  --wm-radius: 22px;
  --wm-radius-soft: 16px;

  max-width: 980px;
  margin: 0 auto;
  padding: 22px 16px 32px;
  color: var(--wm-ink);
  letter-spacing: .2px;

  /* Effet "parchemin" subtil */
  background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="4" height="4" viewBox="0 0 4 4"><path fill="%23ffffff08" d="M1 3h1v1H1V3zm2-2h1v1H3V1z"/></svg>');
  background-size: 64px 64px;
}

.wm__header {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 14px;
}

.wm__title {
  margin: 0;
  font-size: clamp(22px, 4.6vw, 32px);
  line-height: 1.06;
  letter-spacing: .2px;
  font-weight: 560;
  background: linear-gradient(90deg, var(--wm-ink), var(--wm-gold));
  background-clip: text;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
}

.wm__sub {
  margin: 8px 0 0;
  font-size: 14px;
  line-height: 1.35;
  color: var(--wm-muted);
  max-width: 42ch;
}

.wm__btn {
  appearance: none;
  border: 1px solid var(--wm-stroke-2);
  background: linear-gradient(180deg, rgba(255, 255, 255, .08), rgba(255, 255, 255, .03));
  color: var(--wm-ink);
  border-radius: 999px;
  padding: 10px 14px;
  font-size: 13px;
  line-height: 1;
  cursor: pointer;
  white-space: nowrap;
  transition: all .2s cubic-bezier(.25, .8, .25, 1);
  position: relative;
  overflow: hidden;

  box-shadow:
    0 12px 30px rgba(0, 0, 0, .20),
    inset 0 1px 0 rgba(255, 255, 255, .10);
}

.wm__btn::before {
  content: '';
  position: absolute;
  top: 0;
  left: -100%;
  width: 100%;
  height: 100%;
  background: linear-gradient(90deg, transparent, rgba(231, 196, 123, .1), transparent);
  transition: .4s;
}

.wm__btn:hover::before {
  left: 100%;
}

.wm__btn:active {
  transform: translateY(1px);
}

.wm__btn:focus-visible {
  outline: 2px solid var(--wm-gold);
  outline-offset: 2px;
}

.wm__controls {
  margin: 12px 0 18px;
}

.wm__search {
  position: relative;
  display: block;
  border: 1px solid var(--wm-stroke);
  background: rgba(255, 255, 255, .035);
  border-radius: var(--wm-radius);
  padding: 12px 14px;
  transition: all .3s ease;

  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);

  box-shadow:
    0 18px 42px rgba(0, 0, 0, .18),
    inset 0 1px 0 rgba(255, 255, 255, .08);
}

.wm__search:focus-within {
  border-color: var(--wm-gold);
  box-shadow:
    0 22px 56px rgba(0, 0, 0, .22),
    inset 0 1px 0 rgba(255, 255, 255, .10),
    0 0 0 1px var(--wm-gold);
}

.wm__search input {
  width: 100%;
  border: none;
  outline: none;
  background: transparent;
  color: var(--wm-ink);
  font-size: 14px;
  letter-spacing: .2px;
}

.wm__search input::placeholder {
  color: rgba(255, 255, 255, .52);
}

.wm__content {
  display: grid;
  gap: 18px;
}

.wm-sec {
  border-radius: var(--wm-radius);
  border: 1px solid var(--wm-stroke);
  background: linear-gradient(180deg, rgba(255, 255, 255, .05), rgba(255, 255, 255, .025));
  padding: 14px 14px 14px;
  transition: transform .2s ease, box-shadow .2s ease;
  position: relative;
  overflow: hidden;

  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);

  box-shadow:
    0 24px 70px rgba(0, 0, 0, .22),
    inset 0 1px 0 rgba(255, 255, 255, .08);
}

.wm-sec:hover {
  transform: translateY(-2px);
  box-shadow:
    0 28px 76px rgba(0, 0, 0, .26),
    inset 0 1px 0 rgba(255, 255, 255, .10);
}

.wm-sec__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 12px;
}

.wm-sec__title {
  margin: 0;
  font-size: 12px;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--wm-gold);
}

.wm-sec__count {
  font-size: 12px;
  color: var(--wm-muted);
  padding: 4px 10px;
  border-radius: 999px;
  border: 1px solid var(--wm-stroke);
  background: rgba(255, 255, 255, .03);
}

.wm-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.wm-chip {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  min-height: 44px;
  border-radius: 14px;
  border: 1px solid rgba(255, 255, 255, .12);
  background: linear-gradient(180deg, rgba(255, 255, 255, .08), rgba(255, 255, 255, .03));
  color: var(--wm-ink);
  text-decoration: none;
  font-size: 14px;
  line-height: 1;
  position: relative;
  overflow: hidden;
  transition: all .2s ease;

  box-shadow:
    0 14px 34px rgba(0, 0, 0, .18),
    inset 0 1px 0 rgba(255, 255, 255, .10);
}

.wm-chip::before {
  content: '';
  position: absolute;
  top: 0;
  left: -100%;
  width: 100%;
  height: 100%;
  background: linear-gradient(90deg, transparent, rgba(231, 196, 123, .08), transparent);
  transition: .4s;
}

.wm-chip:hover::before {
  left: 100%;
}

.wm-chip:hover {
  transform: translateY(-1px);
  border-color: var(--wm-gold);
  box-shadow:
    0 16px 38px rgba(0, 0, 0, .22),
    inset 0 1px 0 rgba(255, 255, 255, .12);
}

.wm-chip:active {
  transform: translateY(0px);
}

.wm-chip:focus-visible {
  outline: 2px solid var(--wm-gold);
  outline-offset: 2px;
}

.wm-chip__dot {
  width: 6px;
  height: 6px;
  border-radius: 999px;
  background: var(--wm-gold);
  box-shadow: 0 0 0 3px rgba(231, 196, 123, .2);
  flex: 0 0 auto;
}

.wm-chip span {
  letter-spacing: .15px;
}

.wm__sr {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

@media (min-width: 600px) {
  .wm {
    padding: 28px 18px 38px;
  }
  .wm__content {
    gap: 20px;
  }
  .wm-sec {
    padding: 16px 16px 16px;
  }
}/* End custom CSS */