/* Présentation partagée des blocs du moteur de pages. L'éditeur utilise ce même rendu. */
.vc-bloc-container{position:relative;transition:filter .18s,opacity .18s;scroll-margin-top:25px;
  background-color:var(--vc-bloc-fond,var(--site-bg,#f7f6f0));color:var(--vc-bloc-texte,var(--site-text,#1b2c25));}
/* Fond commun pilote par le moteur ; l'interieur du module ne doit pas le masquer. */
.site .accueil-sections > .vc-bloc-container{background-color:var(--vc-bloc-fond,var(--site-bg,#f7f6f0))}
/* Une section à fond intégral, un conteneur de contenu : pas de troisième niveau. */
.site .vc-bloc-container{width:100%;max-width:none;z-index:var(--vc-bloc-plan,auto)}
/* L'empilement reste sous l'en-tête fixe, y compris si la page contient de nombreux blocs. */
.site .accueil-sections,.site.vc-site-preview{isolation:isolate}
/* Padding interne additionnel : ne modifie ni la découpe ni la remontée du bloc suivant. */
.site .vc-bloc-contenu{box-sizing:border-box;width:100%;min-width:0;margin-inline:auto;padding-top:var(--vc-bloc-espacement-haut,0px)}
.site .vc-bloc-largeur-limitee > .vc-bloc-contenu{max-width:var(--site-content-max,1250px)}
.site .vc-bloc-largeur-pleine > .vc-bloc-contenu{max-width:none}
/* Toutes les pages se terminent avec une respiration au-dessus du pied de page.
   Le padding est porte par le dernier bloc pour prolonger son fond (sans marge externe).
   Aucun rapport avec le decalage interieur ou les decoupes des blocs precedents. */
.site .vc-bloc-container.vc-bloc-dernier{padding-bottom:80px}
@media(max-width:680px){.site .vc-bloc-container.vc-bloc-dernier{padding-bottom:40px}}

/* Les découpes appartiennent à l'enveloppe commune des blocs, jamais au Hero seul.
   Deux masques complémentaires couvrent le haut et la zone de découpe de hauteur fixe.
   Le bloc suivant remonte derrière l'évidement ; son contenu conserve sa position. */
.site .vc-bloc-container.vc-bloc-decoupe{
  position:relative;
  padding-bottom:var(--vc-decoupe-hauteur,80px);
  -webkit-mask-image:linear-gradient(#000 0 0),var(--vc-decoupe-masque);
  mask-image:linear-gradient(#000 0 0),var(--vc-decoupe-masque);
  -webkit-mask-size:100% calc(100% - var(--vc-decoupe-hauteur,80px)),100% var(--vc-decoupe-hauteur,80px);
  mask-size:100% calc(100% - var(--vc-decoupe-hauteur,80px)),100% var(--vc-decoupe-hauteur,80px);
  -webkit-mask-position:top left,bottom left;
  mask-position:top left,bottom left;
  -webkit-mask-repeat:no-repeat;
  mask-repeat:no-repeat;
  -webkit-mask-mode:alpha;
  mask-mode:alpha;
}
.site .vc-bloc-decoupe-vague{--vc-decoupe-masque:url('/images/decoupes/vague.svg')}
.site .vc-bloc-decoupe-courbe{--vc-decoupe-masque:url('/images/decoupes/courbe.svg')}
.site .vc-bloc-decoupe-diagonale{--vc-decoupe-masque:url('/images/decoupes/diagonale.svg')}
.site .vc-bloc-decoupe-double-vague{--vc-decoupe-masque:url('/images/decoupes/double-vague.svg')}
.site .vc-bloc-container.vc-bloc-apres-decoupe{
  position:relative;
  margin-top:calc(-1 * var(--vc-decoupe-precedente,0px));
  padding-top:var(--vc-decoupe-precedente,0px);
}
/* L'ombre appartient au bloc suivant : le masque du bloc supérieur ne peut donc pas la couper.
   Le doublon opaque de la forme est masqué par le bloc précédent, seule son ombre déborde. */
.site .vc-bloc-container.vc-bloc-ombre-avant::before{
  content:"";
  position:absolute;
  z-index:2;
  pointer-events:none;
  left:0;
  right:0;
  top:0;
  height:var(--vc-decoupe-precedente,80px);
  background:var(--vc-decoupe-masque-precedente) center/100% 100% no-repeat;
  filter:drop-shadow(0 var(--vc-ombre-y,5px) var(--vc-ombre-flou,6px) rgba(0,0,0,var(--vc-ombre-alpha,.24)));
}
/* L'ombre intérieure suit le tracé SVG de la découpe, sur toute la largeur.
   Le contour est flouté puis masqué par la découpe du bloc parent : aucune
   soustraction de masques décalés (qui créait une bande et une tranche droite). */
.site .vc-bloc-decoupe-vague{--vc-ombre-contour:url('/images/decoupes/ombre-interieure-vague.svg')}
.site .vc-bloc-decoupe-courbe{--vc-ombre-contour:url('/images/decoupes/ombre-interieure-courbe.svg')}
.site .vc-bloc-decoupe-diagonale{--vc-ombre-contour:url('/images/decoupes/ombre-interieure-diagonale.svg')}
.site .vc-bloc-decoupe-double-vague{--vc-ombre-contour:url('/images/decoupes/ombre-interieure-double-vague.svg')}
.site .vc-bloc-container.vc-bloc-ombre-interieure::after{
  content:"";
  position:absolute;
  z-index:3;
  pointer-events:none;
  left:0;right:0;bottom:0;
  height:var(--vc-decoupe-hauteur,80px);
  background:var(--vc-ombre-contour) center/100% 100% no-repeat;
  opacity:var(--vc-ombre-alpha,.35);
  transform:translateY(calc(-0.33 * var(--vc-ombre-y,0px)));
  filter:blur(var(--vc-ombre-interne-flou,12px));
}
.site .vc-bloc-ombre-interieure > .vc-bloc-contenu{position:relative;z-index:4}
.site .vc-bloc-ombre-avant > .vc-bloc-contenu{position:relative;z-index:3}
/* Les médias d'un Hero qui suit la découpe doivent également remplir la partie chevauchée. */

.vc-bloc-attenue{opacity:.46;filter:grayscale(.25) blur(1px)}
.vc-bloc-actif{outline:2px solid #518469;outline-offset:-2px}
/* Les blocs publics héritent de la charte du site (.site et ApparenceSite.Variables).
   Le même HTML est utilisé dans l'aperçu, isolé visuellement de la gestion. */
body.admin-body .bloc-apercu-defilant.site.vc-site-preview{
  background:var(--site-bg,#f7f6f0);
  color:var(--site-text,#1b2c25);
  font-family:var(--site-font,Manrope,Arial,sans-serif);
}
.vc-hero{
  box-sizing:border-box;min-height:325px;background-color:transparent;
  background-size:cover;background-position:center;display:flex;flex-direction:column;
  justify-content:center;align-items:flex-start;padding:clamp(26px,6vw,80px);
  font-family:var(--site-font,Manrope,Arial,sans-serif);color:#fff;
}
.site .vc-hero-sans-image{color:var(--vc-bloc-texte,var(--site-text,#1b2c25))}

.vc-hero-centre{align-items:center;text-align:center}
.vc-hero-droite{align-items:flex-end;text-align:right}
/* Sélecteurs sous .site : les règles des fiches d'administration ne doivent pas
   griser les paragraphes sur le fond sombre du Hero. */
.site .vc-hero .vc-hero-kicker{
  display:flex;align-items:center;gap:12px;max-width:850px;
  font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.13em;
  color:#f2eadc;line-height:1.5;margin:0 0 18px;
}
.site .vc-hero .vc-hero-kicker::before{
  content:"";width:8px;height:8px;flex:0 0 8px;border-radius:50%;background:var(--accent,#b58a53);
}
.site .vc-hero h2{
  font-family:var(--site-font,Manrope,Arial,sans-serif);font-weight:800;
  font-size:clamp(28px,3.4vw,54px);line-height:1.14;letter-spacing:-.025em;
  margin:0 0 18px;color:#fff;max-width:850px;
}
.site .vc-hero .vc-hero-desc{
  font-size:clamp(14px,1.3vw,20px);line-height:1.65;
  margin:0 0 24px;max-width:650px;color:#e1e8e1;
}
.site .vc-hero-sans-image h2,.site .vc-hero-sans-image .vc-hero-desc,
.site .vc-hero-sans-image .vc-hero-kicker{color:inherit}
.vc-bloc-boutons{display:flex;flex-wrap:wrap;gap:12px}
.vc-hero-buttons{justify-content:inherit}
.vc-btn{
  display:inline-flex;align-items:center;justify-content:center;padding:12px 19px;
  border-radius:var(--site-btn-radius,0px);border:1px solid transparent;
  text-decoration:none!important;font-family:var(--site-font,Manrope,Arial,sans-serif);
  font-weight:800;font-size:14px;line-height:1.35;
}
.vc-btn-primary{background:var(--accent,#b58a53);color:#14221d}
.vc-btn-secondary{background:transparent;border-color:rgba(255,255,255,.7);color:#fff}
.site .vc-btn.vc-btn-link{
  border:0;border-radius:0;background:transparent;color:var(--accent,#b58a53);
  padding:8px 0;text-decoration:underline!important;text-underline-offset:5px;
  box-shadow:none;
}
.site .vc-btn.vc-btn-link::after{content:"↗";display:inline-block;margin-left:7px;text-decoration:none}
.site .vc-realisations .vc-btn-secondary{color:inherit;border-color:currentColor}
.site[style*="--site-button-mode:contour"] .vc-realisations .vc-btn-primary{
  background:transparent;border:2px solid var(--accent,#b58a53);color:inherit;
}
.site[style*="--site-button-mode:contour"] .vc-hero .vc-btn-primary{
  background:transparent;border:2px solid var(--accent,#b58a53);color:#fff;
}
.site .vc-hero .vc-btn-secondary{color:#fff}
.site .vc-hero-sans-image .vc-btn-secondary{color:inherit;border-color:currentColor}
.site[style*="--site-button-mode:contour"] .vc-hero-sans-image .vc-btn-primary{color:inherit}
/* Image et texte : photographie et texte sur deux moities, inversables sans superposition. */
.site .vc-image-texte{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);min-height:clamp(380px,42vw,590px);background:transparent;color:inherit}
.site .vc-image-texte-image{position:relative;overflow:hidden;min-width:0;min-height:100%;background:var(--site-bg-alt,#e8eee7)}
.site .vc-image-texte-image>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.site .vc-image-texte-sans-image{display:flex;align-items:center;justify-content:center;min-height:100%;padding:24px;box-sizing:border-box;text-align:center;color:var(--site-text,#1b2c25);opacity:.65}
.site .vc-image-texte-legende{position:absolute;left:clamp(16px,3vw,42px);bottom:clamp(16px,3vw,42px);max-width:calc(100% - 32px);padding:9px 15px;background:var(--accent,#b58a53);color:var(--site-text,#1b2c25);font-size:11px;font-weight:800;letter-spacing:.1em;text-transform:uppercase}
.site .vc-image-texte-texte{box-sizing:border-box;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;text-align:left;min-width:0;padding:clamp(28px,5vw,80px) clamp(28px,4.2vw,72px);}
.site .vc-image-texte-texte .vc-editorial-titre{font-size:clamp(30px,3.25vw,58px)}
.site .vc-image-texte-texte .vc-editorial-description{max-width:650px}
.site .vc-image-texte-image-droite .vc-image-texte-image{order:2}
.site .vc-image-texte-image-droite .vc-image-texte-texte{order:1;align-items:flex-end;text-align:right}
.site .vc-image-texte .vc-image-texte-boutons{justify-content:flex-start}
.site .vc-image-texte-image-droite .vc-image-texte-boutons{justify-content:flex-end}
.site .vc-image-texte .vc-btn-secondary{color:inherit;border-color:currentColor}
.site[style*="--site-button-mode:contour"] .vc-image-texte .vc-btn-primary{background:transparent;border:2px solid var(--accent,#b58a53);color:inherit}
@media(max-width:700px){
  .site .vc-image-texte{display:flex;flex-direction:column;min-height:0}
  .site .vc-image-texte .vc-image-texte-image{order:0;min-height:0;height:clamp(240px,65vw,400px);flex:0 0 auto}
  .site .vc-image-texte .vc-image-texte-texte{order:1;align-items:flex-start;text-align:left;padding:30px 24px}
  .site .vc-image-texte-image-droite .vc-image-texte-boutons{justify-content:flex-start}
}

.vc-contact{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:clamp(20px,4vw,60px);padding:clamp(24px,5vw,65px);background:transparent;color:inherit}
.vc-contact-droite .vc-contact-infos{order:2}
.vc-contact-droite .vc-contact-form{order:1}
.vc-contact-seul{display:flex;justify-content:center}
.vc-contact-seul .vc-contact-form{width:100%;max-width:650px}
/* Editorial headings shared by Contact and other text-based blocks. */
.site .vc-editorial-kicker{
  margin:0 0 18px;color:var(--accent,#b58a53);font-family:var(--site-font,Manrope,Arial,sans-serif);
  font-size:11px;font-weight:800;letter-spacing:.18em;line-height:1.5;text-transform:uppercase;
}
.site .vc-editorial-titre{
  margin:0 0 22px;color:inherit;font-family:var(--site-font,Manrope,Arial,sans-serif);
  font-size:clamp(34px,3.5vw,70px);font-weight:800;letter-spacing:-.045em;line-height:1.1;
}
.site .vc-editorial-titre-principal,.site .vc-editorial-titre-accent{display:block}
.site .vc-editorial-titre-accent{color:var(--accent,#b58a53);font-weight:500}
.site .vc-editorial-description{margin:0 0 22px;color:inherit;opacity:.80;line-height:1.85}
/* The legacy contact layout relies on the theme, not on administrator text colours. */
/* Mise en avant d'un telephone, reutilisable dans tous les modules de la vitrine. */
.site .site-telephone-important{
  margin:35px 0 10px;
  color:inherit;
  font-family:var(--site-font,Manrope,Arial,sans-serif);
  font-size:24px;
  font-weight:700;
  line-height:1.3;
}
.site .site-telephone-important a{
  display:inline-flex;
  align-items:center;
  gap:8px;
  color:inherit;
  text-decoration:none;
}
.site .site-telephone-important a:hover{text-decoration:underline;text-underline-offset:3px}
.site .site-telephone-important-icone{font-size:.85em;line-height:1}
@media(max-width:680px){.site .site-telephone-important{font-size:20px}}
.vc-contact h3{font-size:22px;margin:0 0 18px}
.vc-contact-infos p{line-height:1.6;margin:0 0 18px}
.vc-contact-form{background:#fff;color:#1a3e2e;padding:clamp(20px,3vw,38px);border-radius:12px;box-shadow:0 8px 25px #193b2c14}
.vc-contact-form label{display:block;font-size:13px;font-weight:650;margin:0 0 13px}
.vc-contact-form input,.vc-contact-form select,.vc-contact-form textarea{display:block;width:100%;box-sizing:border-box;min-height:42px;margin-top:7px;padding:11px 12px;border:1px solid #cdd9d0;border-radius:6px;background:#f9fbf9;color:#63736a;font:inherit}
.vc-contact-form textarea{height:95px;resize:none}
.vc-contact-two{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.vc-contact-form small{display:block;margin-top:12px;color:#68766c}
/* Les realisations heritent du theme : palette, police, coins et boutons.
   Les cinq styles modifient uniquement la presentation et la choregraphie des cartes. */
.site .vc-realisations{padding:clamp(24px,4vw,65px);background:transparent;color:inherit;container-type:inline-size}
.site .vc-realisations .vc-editorial-kicker{margin-bottom:12px}
.site .vc-realisations .vc-editorial-titre{
  font-size:clamp(32px,3.2vw,52px);line-height:1.12;margin:0 0 15px;
}
.site .vc-realisations .vc-editorial-description{margin:0 0 28px;max-width:790px;line-height:1.75}
.vc-realisations-entete{display:flex;align-items:flex-start;justify-content:space-between;gap:clamp(16px,3vw,36px);margin-bottom:25px}
.vc-realisations-intitule{flex:1 1 auto;min-width:0}
.site .vc-realisations-entete .vc-editorial-description{margin-bottom:0}
.vc-realisations-entete .vc-realisations-boutons{flex:0 1 auto;justify-content:flex-end;max-width:45%;padding-top:8px}
.vc-realisations-grille{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(12px,1.5vw,20px)}
.site .vc-realisation-carte{
  position:relative;min-width:0;overflow:hidden;isolation:isolate;
  background:var(--site-bg,#f7f6f0);color:var(--site-text,#1b2c25);
  border:1px solid color-mix(in srgb,var(--site-text,#1b2c25) 13%,transparent);
  border-radius:var(--site-radius,0px);
  transition:transform .42s cubic-bezier(.2,.75,.25,1),box-shadow .42s,border-color .32s;
}
.vc-realisation-visuel{position:relative;overflow:hidden;height:clamp(185px,18vw,250px);background:var(--site-bg-alt,#e8eee7)}
.vc-realisation-visuel img,.vc-realisation-sans-image{
  display:block;width:100%;height:100%;object-fit:cover;
  transition:transform .65s cubic-bezier(.2,.75,.25,1),filter .55s;
}
.vc-realisation-sans-image{display:flex;align-items:center;justify-content:center;color:var(--site-text,#1b2c25);opacity:.7}
.site .vc-realisation-carte h3{
  position:relative;margin:0;padding:17px 18px;
  color:inherit;font-family:var(--site-font,Manrope,Arial,sans-serif);
  font-size:clamp(15px,1.25vw,19px);line-height:1.4;font-weight:700;
  transition:transform .35s,color .35s;
}
/* La bordure subtile et les ombres sont neutres ; l'accent provient toujours de la palette. */
.vc-realisations-style-classique .vc-realisation-carte:hover img{transform:scale(1.055)}
.vc-realisations-style-classique .vc-realisation-carte:hover{border-color:var(--accent,#b58a53)}
.vc-realisations-style-flottantes .vc-realisation-carte:hover{
  transform:translateY(-11px);box-shadow:0 19px 38px color-mix(in srgb,var(--site-dark,#19382d) 21%,transparent);
  border-color:var(--accent,#b58a53);
}
.vc-realisations-style-flottantes .vc-realisation-carte:hover img{transform:scale(1.04)}
/* Dans le style revelation, la legende vit sur la photographie : degrade de lisibilite neutre. */
.vc-realisations-style-revelation .vc-carte-avec-photo .vc-realisation-visuel{height:clamp(220px,23vw,310px)}
.site .vc-realisations-style-revelation .vc-carte-avec-photo h3{
  position:absolute;bottom:0;left:0;right:0;z-index:1;margin:0;padding:46px 19px 20px;
  color:#fff;background:linear-gradient(transparent,rgba(0,0,0,.77));
  text-shadow:0 1px 7px rgba(0,0,0,.42);
}
.vc-realisations-style-revelation .vc-carte-avec-photo:hover img{transform:scale(1.10)}
.site .vc-realisations-style-revelation .vc-carte-avec-photo:hover h3{color:#fff;transform:translateY(-5px)}
.vc-realisations-style-revelation .vc-carte-avec-photo:hover{border-color:var(--accent,#b58a53)}
.vc-realisations-style-cascade .vc-realisation-carte:hover{
  transform:translateY(-8px);border-color:var(--accent,#b58a53);
  box-shadow:0 15px 30px color-mix(in srgb,var(--site-dark,#19382d) 15%,transparent);
}
.vc-realisations-style-cascade .vc-realisation-carte:hover img{transform:scale(1.12)}
.vc-realisations-style-cascade .vc-realisation-carte:hover h3{transform:translateX(7px)}
.vc-realisations-style-spectaculaire .vc-realisations-grille{perspective:1100px}
.vc-realisations-style-spectaculaire .vc-realisation-carte:hover{
  transform:perspective(900px) translateY(-13px) rotateY(-4deg) scale(1.025);
  box-shadow:12px 22px 42px color-mix(in srgb,var(--site-dark,#19382d) 23%,transparent);
  border-color:var(--accent,#b58a53);
}
.vc-realisations-style-spectaculaire .vc-realisation-carte:hover img{transform:scale(1.09)}
.vc-realisations-style-spectaculaire .vc-realisation-carte:hover h3{color:var(--site-dark,#19382d)}
/* Les emplacements des boutons utilisent le composant commun. */
.vc-realisations-boutons{justify-content:center;min-width:0}
.vc-realisations-boutons-centre,.vc-realisations-boutons-gauche,.vc-realisations-boutons-droite{margin-top:29px}
.vc-realisations-boutons-centre .vc-realisations-boutons{justify-content:center}
.vc-realisations-boutons-gauche .vc-realisations-boutons{justify-content:flex-start}
.vc-realisations-boutons-droite .vc-realisations-boutons{justify-content:flex-end}
@container (max-width:740px){
  .vc-realisations-entete{flex-direction:column;align-items:stretch;gap:6px}
  .vc-realisations-entete .vc-realisations-boutons{max-width:100%;padding-top:0;justify-content:flex-start}
  .vc-realisations-grille{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@container (max-width:480px){.vc-realisations-grille{grid-template-columns:1fr}}
.vc-empty-projects{font-style:italic;color:inherit;opacity:.8}
@media(max-width:850px){.vc-contact{grid-template-columns:1fr}.vc-contact-droite .vc-contact-infos,.vc-contact-droite .vc-contact-form{order:unset}}
@media(max-width:500px){.vc-contact-two{grid-template-columns:1fr}}

/* Module partage de bibliotheque et recadrage des images dans l'editeur. */
.bloc-image-section{display:grid;gap:9px;padding:7px 0}
.bloc-image-section .bloc-section-heading{margin:0}
.bloc-image-current{border:1px solid #d6e1da;border-radius:8px;padding:8px;display:flex;align-items:center;gap:10px;font-size:12px;color:#5d6a63;min-height:44px}
.bloc-image-current img{width:82px;height:56px;object-fit:cover;border-radius:5px}
.bloc-image-current span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bloc-image-actions{display:flex;align-items:center;flex-wrap:wrap;gap:7px}
.bloc-image-actions .btn{padding:7px 11px;font-size:12px}
.bloc-image-placement-label{font-size:12px;font-weight:700;margin:5px 0 0}
.bloc-position-grille{display:grid;grid-template-columns:repeat(3,38px);gap:4px}
.bloc-position-grille button{height:30px;border:1px solid #acbdb4;border-radius:4px;background:#e8efea;cursor:pointer;display:grid;place-items:center}
.bloc-position-grille button span{width:9px;height:9px;border-radius:2px;background:#94a69b}
.bloc-position-grille button[aria-pressed="true"]{border:2px solid #247b52;background:#d3eadb}
.bloc-position-grille button[aria-pressed="true"] span{background:#247b52}
.bloc-image-dialog{width:min(880px,95vw);max-width:95vw}
.bloc-image-drop{padding:16px;margin:10px 0;border:2px dashed #b8c8bc;border-radius:8px;text-align:center;font-size:13px}
.bloc-image-drop.is-over{border-color:#278b50;background:#edf8ef}
.bloc-images-liste{display:grid;grid-template-columns:repeat(auto-fill,minmax(134px,1fr));gap:9px;max-height:40vh;min-height:135px;overflow:auto;margin:12px 0}
.bloc-image-card{display:flex;flex-direction:column;gap:4px;border:1px solid #d5ded7;border-radius:7px;background:#fff;padding:5px;text-align:left;cursor:pointer;min-width:0}
.bloc-image-card img{width:100%;aspect-ratio:4/3;object-fit:contain;background:#f1f3f1}
.bloc-image-card span{font-size:12px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.bloc-image-card small{font-size:10px;color:#5e6b62}
.bloc-image-card.is-selected{border:2px solid #168451;background:#f0faef;padding:4px}
.bloc-image-footer-quota{display:flex;justify-content:space-between;align-items:center;gap:15px;font-size:12px}
.bloc-image-footer-quota progress{width:35%;height:9px;accent-color:#268654}
.bloc-crop-dialog{width:min(790px,95vw);max-width:95vw}
.bloc-crop-stage{position:relative;display:block;margin:auto;overflow:hidden;background:#29372d;touch-action:none}
.bloc-crop-stage>img{display:block;width:100%;height:100%;user-select:none;pointer-events:none}
.bloc-crop-selection{position:absolute;box-sizing:border-box;border:2px solid #fff;box-shadow:0 0 0 100vmax rgba(0,0,0,.45);cursor:move;touch-action:none}
.bloc-crop-handle{position:absolute;right:-7px;bottom:-7px;width:15px;height:15px;border:2px solid #fff;border-radius:3px;background:#168451;cursor:nwse-resize}

/* Keep the editorial title readable in the resizable editor preview. */
@media(max-width:850px){.site .vc-editorial-titre{font-size:clamp(34px,6vw,56px)}}

/* La dissimulation est activee seulement par JavaScript sur les blocs encore hors
   de l'ecran. Sans JavaScript ou en mode mouvements reduits, tout reste visible. */
@media(prefers-reduced-motion:no-preference){
  .site:not(.vc-site-preview) .vc-bloc-scroll-pending .vc-hero:not(.vc-hero-anim-aucune) > *,
  .site:not(.vc-site-preview) .vc-bloc-scroll-pending .vc-realisations:not(.vc-realisations-style-revelation) .vc-realisation-carte,
  .site:not(.vc-site-preview) .vc-bloc-scroll-pending .vc-realisations-style-revelation .vc-realisation-visuel,
  .site:not(.vc-site-preview) .vc-bloc-scroll-pending .vc-expertises .vc-expertise-carte{opacity:0}
}

/* Animations ponctuelles du Hero : deux sobres et trois choregraphies element par element.
   Le site public les lance lorsque le bloc entre dans la zone visible ; l'editeur
   uniquement apres demande ou changement de choix. */
@keyframes vc-hero-fondu{from{opacity:0}to{opacity:1}}
@keyframes vc-hero-montee{from{opacity:0;transform:translateY(34px)}to{opacity:1;transform:translateY(0)}}
@keyframes vc-hero-entree-gauche{from{opacity:0;transform:translateX(-90px) rotate(-3deg)}to{opacity:1;transform:translateX(0) rotate(0)}}
@keyframes vc-hero-entree-droite{from{opacity:0;transform:translateX(90px) rotate(3deg)}to{opacity:1;transform:translateX(0) rotate(0)}}
@keyframes vc-hero-entree-haut{from{opacity:0;transform:translateY(-38px)}to{opacity:1;transform:translateY(0)}}
@keyframes vc-hero-rebond{
  0%{opacity:0;transform:scale(.62) translateY(32px)}
  58%{opacity:1;transform:scale(1.10) translateY(-5px)}
  78%{transform:scale(.96) translateY(2px)}
  100%{opacity:1;transform:scale(1) translateY(0)}
}
@keyframes vc-hero-pop{
  0%{opacity:0;transform:scale(.5) translateY(45px)}
  65%{opacity:1;transform:scale(1.10) translateY(-4px)}
  100%{opacity:1;transform:scale(1) translateY(0)}
}
@keyframes vc-hero-revelation{
  0%{opacity:0;clip-path:inset(0 100% 0 0);transform:translateY(30px) skewX(-7deg)}
  65%{opacity:1}
  100%{opacity:1;clip-path:inset(0 0 0 0);transform:translateY(0) skewX(0)}
}
@keyframes vc-hero-retourne{
  from{opacity:0;transform:perspective(650px) rotateX(-75deg) translateY(-24px)}
  to{opacity:1;transform:perspective(650px) rotateX(0) translateY(0)}
}
@keyframes vc-hero-tourbillon{
  0%{opacity:0;transform:rotate(-13deg) scale(.45) translateY(35px)}
  65%{opacity:1;transform:rotate(4deg) scale(1.09) translateY(-3px)}
  100%{opacity:1;transform:rotate(0) scale(1) translateY(0)}
}
/* En public, chaque animation attend vc-bloc-scroll-visible sur sa section.
   Dans l'editeur, seul le bouton Rejouer (ou le choix) declenche l'effet. */
:is(.site:not(.vc-site-preview) .vc-bloc-scroll-visible,.site.vc-site-preview.vc-preview-playing .vc-bloc-actif) .vc-hero-anim-fondu > *{
  animation:vc-hero-fondu 1s ease-out both;
}
:is(.site:not(.vc-site-preview) .vc-bloc-scroll-visible,.site.vc-site-preview.vc-preview-playing .vc-bloc-actif) .vc-hero-anim-cascade > :is(.vc-hero-kicker,h2,.vc-hero-desc),
:is(.site:not(.vc-site-preview) .vc-bloc-scroll-visible,.site.vc-site-preview.vc-preview-playing .vc-bloc-actif) .vc-hero-anim-cascade .vc-hero-buttons > .vc-btn{
  animation:vc-hero-montee .72s cubic-bezier(.2,.75,.25,1) both;
}
:is(.site:not(.vc-site-preview) .vc-bloc-scroll-visible,.site.vc-site-preview.vc-preview-playing .vc-bloc-actif) .vc-hero-anim-cascade > .vc-hero-kicker{animation-delay:.08s}
:is(.site:not(.vc-site-preview) .vc-bloc-scroll-visible,.site.vc-site-preview.vc-preview-playing .vc-bloc-actif) .vc-hero-anim-cascade > h2{animation-delay:.24s}
:is(.site:not(.vc-site-preview) .vc-bloc-scroll-visible,.site.vc-site-preview.vc-preview-playing .vc-bloc-actif) .vc-hero-anim-cascade > .vc-hero-desc{animation-delay:.46s}
:is(.site:not(.vc-site-preview) .vc-bloc-scroll-visible,.site.vc-site-preview.vc-preview-playing .vc-bloc-actif) .vc-hero-anim-cascade .vc-hero-buttons > .vc-btn{animation-delay:var(--vc-hero-delai-bouton,.76s)}
/* Fun 1 : les textes traversent l'ecran dans des directions differentes. */
:is(.site:not(.vc-site-preview) .vc-bloc-scroll-visible,.site.vc-site-preview.vc-preview-playing .vc-bloc-actif) .vc-hero-anim-croisees > .vc-hero-kicker{animation:vc-hero-entree-haut .7s ease-out .06s both}
:is(.site:not(.vc-site-preview) .vc-bloc-scroll-visible,.site.vc-site-preview.vc-preview-playing .vc-bloc-actif) .vc-hero-anim-croisees > h2{animation:vc-hero-entree-gauche 1s cubic-bezier(.15,.8,.25,1) .16s both}
:is(.site:not(.vc-site-preview) .vc-bloc-scroll-visible,.site.vc-site-preview.vc-preview-playing .vc-bloc-actif) .vc-hero-anim-croisees > .vc-hero-desc{animation:vc-hero-entree-droite .95s cubic-bezier(.15,.8,.25,1) .35s both}
:is(.site:not(.vc-site-preview) .vc-bloc-scroll-visible,.site.vc-site-preview.vc-preview-playing .vc-bloc-actif) .vc-hero-anim-croisees .vc-hero-buttons > .vc-btn{animation:vc-hero-montee .7s ease-out var(--vc-hero-delai-bouton,.76s) both}
/* Fun 2 : grand rebond du titre, suivi de petits rebonds des actions. */
:is(.site:not(.vc-site-preview) .vc-bloc-scroll-visible,.site.vc-site-preview.vc-preview-playing .vc-bloc-actif) .vc-hero-anim-rebond > .vc-hero-kicker{animation:vc-hero-entree-haut .6s ease-out .05s both}
:is(.site:not(.vc-site-preview) .vc-bloc-scroll-visible,.site.vc-site-preview.vc-preview-playing .vc-bloc-actif) .vc-hero-anim-rebond > h2{animation:vc-hero-rebond 1.05s ease-out .13s both}
:is(.site:not(.vc-site-preview) .vc-bloc-scroll-visible,.site.vc-site-preview.vc-preview-playing .vc-bloc-actif) .vc-hero-anim-rebond > .vc-hero-desc{animation:vc-hero-montee .85s ease-out .45s both}
:is(.site:not(.vc-site-preview) .vc-bloc-scroll-visible,.site.vc-site-preview.vc-preview-playing .vc-bloc-actif) .vc-hero-anim-rebond .vc-hero-buttons > .vc-btn{animation:vc-hero-pop .7s ease-out var(--vc-hero-delai-bouton,.76s) both}
/* Fun 3 : accroche qui bascule, titre devoile et boutons en tourbillon. */
:is(.site:not(.vc-site-preview) .vc-bloc-scroll-visible,.site.vc-site-preview.vc-preview-playing .vc-bloc-actif) .vc-hero-anim-spectaculaire > .vc-hero-kicker{animation:vc-hero-retourne .72s ease-out .04s both;transform-origin:top center}
:is(.site:not(.vc-site-preview) .vc-bloc-scroll-visible,.site.vc-site-preview.vc-preview-playing .vc-bloc-actif) .vc-hero-anim-spectaculaire > h2{animation:vc-hero-revelation 1.12s cubic-bezier(.16,.8,.24,1) .15s both}
:is(.site:not(.vc-site-preview) .vc-bloc-scroll-visible,.site.vc-site-preview.vc-preview-playing .vc-bloc-actif) .vc-hero-anim-spectaculaire > .vc-hero-desc{animation:vc-hero-entree-droite .78s ease-out .5s both}
:is(.site:not(.vc-site-preview) .vc-bloc-scroll-visible,.site.vc-site-preview.vc-preview-playing .vc-bloc-actif) .vc-hero-anim-spectaculaire .vc-hero-buttons > .vc-btn{animation:vc-hero-tourbillon .8s ease-out var(--vc-hero-delai-bouton,.76s) both}
@media(prefers-reduced-motion:reduce){
  .site .vc-hero[class*="vc-hero-anim-"] > *,
  .site .vc-hero .vc-hero-buttons > .vc-btn{animation:none!important;opacity:1!important;transform:none!important;clip-path:none!important}
}

/* Apparitions ponctuelles des cartes, avec delais limites en cas de grande galerie.
   Dans l'editeur, seule la commande Rejouer (ou un changement de style) les lance. */
@keyframes vc-carte-apparition{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
@keyframes vc-carte-flottante{from{opacity:0;transform:translateY(37px) scale(.94)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes vc-carte-rideau{from{clip-path:inset(0 100% 0 0);transform:scale(1.09)}to{clip-path:inset(0 0 0 0);transform:scale(1)}}
@keyframes vc-carte-cascade{
  0%{opacity:0;transform:translate(var(--vc-carte-direction,75px),44px) rotate(3deg) scale(.88)}
  70%{opacity:1;transform:translate(-6px,-6px) rotate(-1deg) scale(1.02)}
  100%{opacity:1;transform:none}
}
@keyframes vc-carte-spectaculaire{
  0%{opacity:0;transform:perspective(800px) rotateY(-60deg) rotateX(20deg) translateY(45px) scale(.66)}
  65%{opacity:1;transform:perspective(800px) rotateY(9deg) rotateX(-3deg) translateY(-5px) scale(1.04)}
  100%{opacity:1;transform:perspective(800px) rotateY(0) rotateX(0) translateY(0) scale(1)}
}
/* La classe d'apercu est separee de celle du Hero pour ne pas rejouer l'autre module. */
:is(.site:not(.vc-site-preview) .vc-bloc-scroll-visible,.site.vc-site-preview.vc-preview-cartes-playing .vc-bloc-actif)
  .vc-realisations-style-classique .vc-realisation-carte{
  animation:vc-carte-apparition .62s ease-out both;
  animation-delay:calc(min(var(--vc-carte-index),8) * 100ms);
}
:is(.site:not(.vc-site-preview) .vc-bloc-scroll-visible,.site.vc-site-preview.vc-preview-cartes-playing .vc-bloc-actif)
  .vc-realisations-style-flottantes .vc-realisation-carte{
  animation:vc-carte-flottante .8s cubic-bezier(.2,.75,.25,1) both;
  animation-delay:calc(min(var(--vc-carte-index),8) * 125ms);
}
:is(.site:not(.vc-site-preview) .vc-bloc-scroll-visible,.site.vc-site-preview.vc-preview-cartes-playing .vc-bloc-actif)
  .vc-realisations-style-revelation .vc-realisation-visuel{
  animation:vc-carte-rideau .9s cubic-bezier(.18,.78,.22,1) both;
  animation-delay:calc(min(var(--vc-carte-index),8) * 165ms);
}
.vc-realisations-style-cascade .vc-realisation-carte:nth-child(even){--vc-carte-direction:-75px}
:is(.site:not(.vc-site-preview) .vc-bloc-scroll-visible,.site.vc-site-preview.vc-preview-cartes-playing .vc-bloc-actif)
  .vc-realisations-style-cascade .vc-realisation-carte{
  animation:vc-carte-cascade 1s cubic-bezier(.2,.78,.26,1) both;
  animation-delay:calc(min(var(--vc-carte-index),8) * 160ms);
}
:is(.site:not(.vc-site-preview) .vc-bloc-scroll-visible,.site.vc-site-preview.vc-preview-cartes-playing .vc-bloc-actif)
  .vc-realisations-style-spectaculaire .vc-realisation-carte{
  animation:vc-carte-spectaculaire 1.15s cubic-bezier(.18,.82,.26,1) both;
  animation-delay:calc(min(var(--vc-carte-index),8) * 175ms);
  backface-visibility:hidden;
}
@media(prefers-reduced-motion:reduce){
  .site .vc-realisations .vc-realisation-carte,
  .site .vc-realisations .vc-realisation-visuel,
  .site .vc-realisations .vc-realisation-visuel img,
  .site .vc-realisations .vc-realisation-carte h3{
    animation:none!important;transition:none!important;transform:none!important;clip-path:none!important;opacity:1!important;
  }
}


/* Liste d'expertises : donnees des Prestations et couleurs du theme.
   Les cinq styles jouent sur les cartes, jamais sur l'identite graphique. */
.site .vc-expertises{padding:clamp(24px,4vw,65px);color:inherit;container-type:inline-size}
.site .vc-expertises .vc-editorial-kicker{margin-bottom:12px}
.site .vc-expertises .vc-editorial-titre{font-size:clamp(32px,3.2vw,52px);line-height:1.12;margin:0 0 15px;max-width:900px}
.site .vc-expertises .vc-editorial-description{margin:0 0 32px;max-width:780px;line-height:1.7}
.vc-expertises-grille{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(12px,1.4vw,20px)}
.site .vc-expertise-carte{
  display:flex;flex-direction:column;min-width:0;min-height:270px;
  padding:clamp(18px,2vw,28px);overflow:hidden;isolation:isolate;
  background:var(--site-bg,#f7f6f0);color:var(--site-text,#1b2c25);
  border:1px solid color-mix(in srgb,var(--site-text,#1b2c25) 15%,transparent);
  border-radius:var(--site-radius,0px);
  transition:transform .4s cubic-bezier(.2,.75,.25,1),box-shadow .4s,border-color .3s;
}
.vc-expertise-entete{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}
.vc-expertise-icone{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;color:var(--accent,#b58a53);font-size:30px;line-height:1}
.vc-expertise-icone-svg{display:block;width:32px;height:32px;background:currentColor;mask:var(--vc-expertise-icone-url) center/contain no-repeat;-webkit-mask:var(--vc-expertise-icone-url) center/contain no-repeat}
.vc-expertise-numero{font-size:11px;font-weight:750;letter-spacing:.06em;color:var(--site-text,#1b2c25);opacity:.45}
.site .vc-expertise-carte h3{margin:0 0 12px;color:inherit;font-family:var(--site-font,Manrope,Arial,sans-serif);font-size:clamp(17px,1.45vw,21px);font-weight:750;line-height:1.3}
.site .vc-expertise-carte p{margin:0 0 18px;color:inherit;opacity:.78;font-size:clamp(12px,1.08vw,14px);line-height:1.7;overflow-wrap:anywhere}
.site .vc-expertise-carte .vc-expertise-lien{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  margin-top:auto;padding-top:14px;color:inherit;
  border-top:1px solid color-mix(in srgb,var(--site-text,#1b2c25) 14%,transparent);
  text-decoration:none;font-weight:750;font-size:13px;
  transition:color .3s;
}
.site .vc-expertise-carte .vc-expertise-lien:hover{color:var(--accent,#b58a53)}
.site .vc-expertise-carte .vc-expertise-lien span:last-child{transition:transform .3s}
.site .vc-expertise-carte .vc-expertise-lien:hover span:last-child{transform:translate(3px,-3px)}
.site .vc-expertise-carte:focus-within{outline:2px solid var(--accent,#b58a53);outline-offset:2px}
.vc-expertises-boutons{justify-content:center;margin-top:28px}
.vc-expertises-style-classique .vc-expertise-carte:hover{border-color:var(--accent,#b58a53)}
.vc-expertises-style-flottantes .vc-expertise-carte:hover{transform:translateY(-10px);box-shadow:0 18px 37px color-mix(in srgb,var(--site-dark,#19382d) 18%,transparent);border-color:var(--accent,#b58a53)}
/* Sans photographie, revelation anime l'accent et le contenu textuel. */
.vc-expertises-style-revelation .vc-expertise-carte{position:relative}
.vc-expertises-style-revelation .vc-expertise-carte::before{content:'';position:absolute;inset:0 auto 0 0;width:4px;background:var(--accent,#b58a53);transform:scaleY(0);transform-origin:top;transition:transform .42s}
.vc-expertises-style-revelation .vc-expertise-carte:hover::before{transform:scaleY(1)}
.vc-expertises-style-revelation .vc-expertise-carte:hover{border-color:var(--accent,#b58a53)}
.vc-expertises-style-cascade .vc-expertise-carte:hover{transform:translateY(-9px) rotate(-1deg);box-shadow:0 15px 32px color-mix(in srgb,var(--site-dark,#19382d) 18%,transparent)}
.vc-expertises-style-spectaculaire .vc-expertises-grille{perspective:1100px}
.vc-expertises-style-spectaculaire .vc-expertise-carte:hover{transform:perspective(850px) translateY(-12px) rotateY(-4deg) scale(1.02);box-shadow:11px 20px 37px color-mix(in srgb,var(--site-dark,#19382d) 21%,transparent);border-color:var(--accent,#b58a53)}
@container (max-width:950px){.vc-expertises-grille{grid-template-columns:repeat(3,minmax(0,1fr))}}
@container (max-width:640px){.vc-expertises-grille{grid-template-columns:repeat(2,minmax(0,1fr))}}
@container (max-width:410px){.vc-expertises-grille{grid-template-columns:1fr}.site .vc-expertise-carte{min-height:220px}}
:is(.site:not(.vc-site-preview) .vc-bloc-scroll-visible,.site.vc-site-preview.vc-preview-expertises-playing .vc-bloc-actif) .vc-expertises-style-classique .vc-expertise-carte{animation:vc-carte-apparition .62s ease-out both;animation-delay:calc(min(var(--vc-carte-index),8) * 100ms)}
:is(.site:not(.vc-site-preview) .vc-bloc-scroll-visible,.site.vc-site-preview.vc-preview-expertises-playing .vc-bloc-actif) .vc-expertises-style-flottantes .vc-expertise-carte{animation:vc-carte-flottante .8s cubic-bezier(.2,.75,.25,1) both;animation-delay:calc(min(var(--vc-carte-index),8) * 125ms)}
:is(.site:not(.vc-site-preview) .vc-bloc-scroll-visible,.site.vc-site-preview.vc-preview-expertises-playing .vc-bloc-actif) .vc-expertises-style-revelation .vc-expertise-carte{animation:vc-carte-rideau .9s cubic-bezier(.18,.78,.22,1) both;animation-delay:calc(min(var(--vc-carte-index),8) * 165ms)}
.vc-expertises-style-cascade .vc-expertise-carte:nth-child(even){--vc-carte-direction:-75px}
:is(.site:not(.vc-site-preview) .vc-bloc-scroll-visible,.site.vc-site-preview.vc-preview-expertises-playing .vc-bloc-actif) .vc-expertises-style-cascade .vc-expertise-carte{animation:vc-carte-cascade 1s cubic-bezier(.2,.78,.26,1) both;animation-delay:calc(min(var(--vc-carte-index),8) * 160ms)}
:is(.site:not(.vc-site-preview) .vc-bloc-scroll-visible,.site.vc-site-preview.vc-preview-expertises-playing .vc-bloc-actif) .vc-expertises-style-spectaculaire .vc-expertise-carte{animation:vc-carte-spectaculaire 1.15s cubic-bezier(.18,.82,.26,1) both;animation-delay:calc(min(var(--vc-carte-index),8) * 175ms);backface-visibility:hidden}
@media(prefers-reduced-motion:reduce){
  .site .vc-expertise-carte,.site .vc-expertise-carte::before,.site .vc-expertise-lien span{
    animation:none!important;transition:none!important;transform:none!important;opacity:1!important;clip-path:none!important
  }
}

/* Le moteur de pages peut afficher une page sans Hero ou sans page principale. */
.site-public-accueil-sans-hero > main{padding-top:92px;min-height:calc(100svh - 92px)}
.site-public-accueil .vc-page-accueil-manquante{box-sizing:border-box;max-width:1250px;margin:auto;padding:clamp(55px,8vw,130px) 24px;color:var(--site-text,#1b2c25)}
.site-public-accueil .vc-page-accueil-manquante h1{font-size:clamp(28px,3vw,45px);margin:0 0 20px}
.site-public-accueil .vc-page-accueil-manquante p{line-height:1.8;max-width:650px}
@media(max-width:680px){.site-public-accueil-sans-hero > main{padding-top:76px;min-height:calc(100svh - 76px)}}

.site-public-accueil .vc-public-ancre{display:block;height:0;scroll-margin-top:110px}

/* Début de page : le choix est propre à chaque page, pas au premier type de bloc. */
.site.site-page-depart-sous > main{padding-top:var(--vc-page-entete-mesure,var(--vc-page-entete-hauteur,110px))}
.site.site-page-depart-haut > main{padding-top:0}
@media(max-width:1000px){
  .site.site-page-depart-sous > main{padding-top:var(--vc-page-entete-mesure,92px)}
}
@media(max-width:680px){
  .site.site-page-depart-sous > main{padding-top:var(--vc-page-entete-mesure,76px)}
}

/* Hero V2 : les photographies occupent le fond independamment du contenu texte. */
.site .vc-bloc-container:has(> .vc-hero-media){isolation:isolate;overflow:hidden}
.site .vc-bloc-container:has(> .vc-hero-media) > .vc-bloc-contenu{position:relative;z-index:1}
.vc-hero-media{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none;background:#122c23}
.vc-hero-media::after{content:"";position:absolute;inset:0;z-index:3;background:linear-gradient(90deg,rgba(0,0,0,.75),rgba(0,0,0,.36));pointer-events:none}
/* Cinq transitions reelles, partagees par toutes les photos du Hero.
   L'effet aleatoire choisit une transition differente a chaque passage. */
.vc-hero-photo{position:absolute;inset:0;opacity:0;z-index:0;transition:opacity var(--vc-hero-transition,1s) ease;pointer-events:none;backface-visibility:hidden}
.vc-hero-photo.is-active{opacity:1;z-index:2}
.vc-hero-photo.is-past{opacity:1;z-index:1}
.vc-hero-photo-visuel{position:absolute;inset:calc(-1 * var(--vc-hero-parallax-debord,12%)) 0;background-size:cover;background-position:center;transform:translate3d(0,var(--vc-hero-parallax,0px),0);will-change:transform}
.vc-hero-media[data-hero-effect="glissement"] .vc-hero-photo{opacity:1;transform:translateX(100%);transition:transform var(--vc-hero-transition,1s) cubic-bezier(.25,.7,.2,1)}
.vc-hero-media[data-hero-effect="glissement"] .vc-hero-photo.is-active{transform:translateX(0)}
.vc-hero-media[data-hero-effect="glissement"] .vc-hero-photo.is-past{transform:translateX(-100%)}
.vc-hero-media[data-hero-effect="zoom"] .vc-hero-photo{transform:scale(1.24);filter:blur(6px);transition:opacity var(--vc-hero-transition,1s) ease,transform var(--vc-hero-transition,1s) ease,filter var(--vc-hero-transition,1s) ease}
.vc-hero-media[data-hero-effect="zoom"] .vc-hero-photo:is(.is-active,.is-past){transform:scale(1);filter:blur(0)}
.vc-hero-media[data-hero-effect="oblique"] .vc-hero-photo{opacity:1;clip-path:polygon(0 0,0 0,0 100%,0 100%);transition:clip-path var(--vc-hero-transition,1s) cubic-bezier(.25,.7,.2,1)}
.vc-hero-media[data-hero-effect="oblique"] .vc-hero-photo:is(.is-active,.is-past){clip-path:polygon(0 0,100% 0,100% 100%,0 100%)}
.vc-hero-media[data-hero-effect="rotation"]{perspective:1300px}
.vc-hero-media[data-hero-effect="rotation"] .vc-hero-photo{transform-origin:0 50%;transform:rotateY(-70deg) scale(.93);transition:opacity var(--vc-hero-transition,1s) ease,transform var(--vc-hero-transition,1s) cubic-bezier(.18,.77,.2,1)}
.vc-hero-media[data-hero-effect="rotation"] .vc-hero-photo:is(.is-active,.is-past){transform:rotateY(0) scale(1)}
/* Le Hero garde sa hauteur cible : le padding commun réduit la place disponible,
   tandis que ses 9 positions et son décalage restent propres au Hero. */
.site .vc-bloc-container > .vc-bloc-contenu .vc-hero{min-height:max(0px,calc(var(--vc-hero-height,500px) - var(--vc-bloc-espacement-haut,0px)))}
.site .vc-hero[data-hero-position^="haut-"]{justify-content:flex-start}
.site .vc-hero[data-hero-position^="centre-"]{justify-content:center}
.site .vc-hero[data-hero-position^="bas-"]{justify-content:flex-end}
.site .vc-hero[data-hero-position$="-gauche"]{align-items:flex-start;text-align:left}
.site .vc-hero[data-hero-position$="-centre"]{align-items:center;text-align:center}
.site .vc-hero[data-hero-position$="-droite"]{align-items:flex-end;text-align:right}
.site .vc-hero > :is(.vc-hero-kicker,h2,.vc-hero-desc,.vc-hero-buttons){position:relative;top:var(--vc-hero-decalage,0px)}
@media(max-width:767px){
  .site .vc-bloc-container > .vc-bloc-contenu .vc-hero{min-height:max(0px,calc(max(320px,min(var(--vc-hero-height,500px),70svh)) - var(--vc-bloc-espacement-haut,0px)));height:auto}
  .site .vc-hero[data-hero-position-mobile^="haut-"]{justify-content:flex-start}
  .site .vc-hero[data-hero-position-mobile^="centre-"]{justify-content:center}
  .site .vc-hero[data-hero-position-mobile^="bas-"]{justify-content:flex-end}
  .site .vc-hero[data-hero-position-mobile$="-gauche"]{align-items:flex-start;text-align:left}
  .site .vc-hero[data-hero-position-mobile$="-centre"]{align-items:center;text-align:center}
  .site .vc-hero[data-hero-position-mobile$="-droite"]{align-items:flex-end;text-align:right}
  .site .vc-hero > :is(.vc-hero-kicker,h2,.vc-hero-desc,.vc-hero-buttons){top:min(var(--vc-hero-decalage-mobile,0px),15svh)}
  .vc-hero-photo-visuel{inset:0}
}
@media(prefers-reduced-motion:reduce){
  .vc-hero-photo{transition:none!important}
  .vc-hero-photo-visuel{transform:none!important;will-change:auto}
}

/* Edition rapide : commandes dans un calque fixe hors des sections.
   Les masques des decoupes et le debordement coupe du Hero ne les cachent plus.
   Le navigateur place chaque barre sous le vrai bandeau, dans sa section visible. */
.vc-quick-calque{position:fixed;inset:0;z-index:45;pointer-events:none}
.vc-quick-calque > .vc-quick-outils{display:none!important}
.vc-quick-mode .vc-quick-calque > .vc-quick-outils:not([hidden]){
  position:fixed;display:flex!important;align-items:center;gap:3px;
  padding:3px;border:1px solid #b6c4bb;border-radius:7px;background:#fffefcf2;
  color:#1b382b;box-shadow:0 3px 13px #0003;opacity:1;pointer-events:auto;
}
.vc-quick-calque > .vc-quick-outils[hidden]{display:none!important}
.vc-quick-mode .vc-quick-calque .vc-quick-outil{
  display:grid;place-items:center;width:27px;height:27px;min-width:27px;padding:0;margin:0;
  border:0;border-radius:4px;background:transparent;color:#1b4231;
  font:800 16px/1 system-ui,Arial,sans-serif;cursor:pointer;
}
.vc-quick-mode .vc-quick-calque .vc-quick-outil:hover,
.vc-quick-mode .vc-quick-calque .vc-quick-outil:focus-visible{background:#e5efe7;outline:1px solid #8eae99}
.vc-quick-mode .vc-quick-calque .vc-quick-outil:disabled{color:#a8aaa7;cursor:not-allowed}
/* Les cibles restent visibles et accessibles au clic dans chaque bloc du site.
   outline n'affecte pas la mise en page ni les decoupes. */
.vc-quick-mode .site .vc-bloc-container > .vc-bloc-contenu .vc-quick-cible{cursor:text;outline:1px dashed #9ed7b4;outline-offset:3px}
.vc-quick-mode .site .vc-bloc-container > .vc-bloc-contenu :is(a,button).vc-quick-cible{cursor:pointer}
.vc-quick-mode .site .vc-bloc-container > .vc-bloc-contenu .vc-quick-cible:is(:hover,:focus-visible){outline:2px solid #50b77a;outline-offset:3px}
/* Le champ rapide conserve la largeur du texte telle qu'elle etait AVANT
   l'edition. Il peut grandir verticalement, avec les actions sur une autre ligne. */
.vc-quick-mode .site .vc-quick-editeur{
  display:flex;flex-direction:column;gap:6px;min-width:0;max-width:100%;
  box-sizing:border-box;text-align:initial;
}
.vc-quick-mode .site .vc-quick-editeur > .vc-quick-saisie{
  display:block!important;box-sizing:border-box;width:100%!important;max-width:100%!important;
  min-width:0!important;min-height:0!important;overflow:hidden!important;resize:none;
  padding:4px 7px!important;margin:0!important;
  background:#fff!important;border:2px solid #328464!important;border-radius:5px!important;
  color:#183629!important;white-space:pre-wrap;overflow-wrap:break-word;
  box-shadow:0 2px 10px #0002;opacity:1!important;
}
.vc-quick-mode .site .vc-quick-editeur > .vc-quick-saisie-actions{
  display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end;margin:0;
  font:500 12px/1.2 system-ui,Arial,sans-serif;
}
.vc-quick-mode .site .vc-quick-saisie-actions button{padding:7px 10px;border:1px solid #94b4a0;border-radius:5px;background:#fff;color:#1e4934;font:700 12px/1 system-ui,Arial,sans-serif;white-space:nowrap}
.vc-quick-mode .site .vc-quick-saisie-actions button:last-child{background:#1d513c;color:#fff}
.vc-quick-toast{position:fixed;z-index:101;bottom:22px;left:50%;transform:translateX(-50%);max-width:min(90vw,500px);padding:12px 18px;border:1px solid #a9c8b2;border-radius:8px;box-shadow:0 10px 30px #0002;background:#e6f5e9;color:#1f6340;font:600 13px/1.4 system-ui,Arial,sans-serif}
.vc-quick-toast-erreur{border-color:#ebc5bc;background:#fcebe8;color:#913524}
.vc-quick-dialog{position:fixed;z-index:105;max-width:min(94vw,420px);width:420px;max-height:90vh;overflow:auto;padding:24px;background:#fff;color:#17372c;border:1px solid #d8e2db;border-radius:12px;box-shadow:0 20px 60px #0005;font:500 14px/1.45 system-ui,Arial,sans-serif}
.vc-quick-dialog::backdrop{background:#102b2470}
.vc-quick-dialog h3{font-size:20px;line-height:1.25;margin:0 0 16px;color:#17372c}
.vc-quick-dialog label{display:block!important;position:relative;font:700 12px/1.35 system-ui,Arial,sans-serif!important;letter-spacing:0!important;margin:0 0 14px!important;color:#234638!important}
.vc-quick-dialog label[hidden]{display:none!important}
.vc-quick-dialog :is(input,select){display:block;box-sizing:border-box;width:100%;height:40px;min-height:40px;margin:5px 0 0!important;padding:7px 10px!important;border:1px solid #bdcec2;border-radius:6px;background:#f9fbf9;color:#1b3327;font:500 14px system-ui,Arial,sans-serif}
.vc-quick-dialog-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:20px}
.vc-quick-dialog-actions button{padding:10px 16px;border:1px solid #b7c9ba;border-radius:6px;background:#fff;color:#1e4937;font:700 13px system-ui,Arial,sans-serif}
.vc-quick-dialog-actions button:last-child{background:#194935;border-color:#194935;color:#fff}
@media(max-width:680px){.vc-quick-mode .vc-quick-calque .vc-quick-outil{width:30px;height:30px}}

/* Editeur de boutons mutualise entre les interfaces de gestion et le site public. */
.vc-bouton-editeur .vc-bouton-erreur:not([hidden]){display:block;margin:8px 0;color:#a32727;font-size:13px}
.vc-bouton-editeur .vc-bouton-destination[hidden]{display:none}
.vc-bouton-editeur .vc-bouton-destination label{display:block;margin-bottom:12px}

/* Réalisations détaillées : une ligne par chantier, sans modifier les cartes existantes. */
.site .vc-realisations-detaillees{padding:clamp(24px,4vw,65px);color:inherit}
.site .vc-details-liste{display:grid;gap:clamp(24px,4vw,56px)}
.site .vc-detail-ligne{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(20px,4vw,65px);align-items:center;min-width:0}
.site .vc-detail-ligne[hidden],.site .vc-detail-photo-cadre img[hidden]{display:none!important}
.site .vc-detail-image-droite .vc-detail-medias{order:2}
.site .vc-detail-image-droite .vc-detail-texte{order:1}
.site .vc-detail-texte{min-width:0}
.site .vc-detail-texte h3{font-size:var(--vc-details-titre,28px);line-height:1.2;margin:0 0 15px;color:inherit}
.site .vc-detail-texte p{font-size:var(--vc-details-description,16px);white-space:normal;line-height:1.65;margin:0;color:inherit;opacity:.86}
.site .vc-detail-medias{min-width:0}
.site .vc-detail-photo-cadre,.site .vc-avant-apres,.site .vc-detail-sans-photo{position:relative;aspect-ratio:16/9;overflow:hidden;border-radius:var(--site-radius,8px);background:var(--site-bg-alt,#e8eee7)}
.site .vc-detail-photo-cadre img,.site .vc-avant-apres img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.site .vc-detail-sans-photo{display:grid;place-items:center;opacity:.7}
.site .vc-detail-diaporama-controls{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-top:8px}
.site .vc-detail-diaporama-controls button,.site .vc-details-pagination button{cursor:pointer;color:inherit;background:transparent;border:1px solid currentColor;border-radius:7px;min-width:37px;min-height:37px;padding:5px 10px}
.site .vc-detail-diaporama-controls button:hover,.site .vc-details-pagination button:hover{background:var(--accent,#b58a53);color:#fff;border-color:var(--accent,#b58a53)}
.site .vc-detail-diaporama-controls span{font-size:13px;opacity:.8}
.site .vc-diaporama-secondaire{margin-top:14px}
.site .vc-diaporama-secondaire summary{cursor:pointer;font-weight:600;margin-bottom:10px}
.site .vc-details-pagination{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:9px;margin:36px auto 0}
.site .vc-details-pagination button[aria-current=page]{background:var(--accent,#b58a53);color:white;border-color:var(--accent,#b58a53)}
.site .vc-details-pagination button:disabled{cursor:default;opacity:.3;background:transparent;color:inherit;border-color:currentColor}
/* La photo Avant est le fond commun, Après se superpose selon le mode. */
.site .vc-avant-apres{--vc-comparaison-position:50%;isolation:isolate}
.site .vc-avant-apres .vc-comparaison-apres{transition:opacity .35s ease,transform .35s ease;z-index:1}
.site .vc-comparaison-badge{position:absolute;top:12px;padding:6px 10px;border-radius:5px;background:rgba(15,27,25,.77);color:#fff;font-size:11px;letter-spacing:.08em;font-weight:800;z-index:4;pointer-events:none}
.site .vc-badge-avant{left:12px}
.site .vc-badge-apres{right:12px}
.site .vc-comparaison-ligne{position:absolute;top:0;bottom:0;left:var(--vc-comparaison-position);width:3px;transform:translateX(-50%);background:#fff;z-index:3;box-shadow:0 0 5px #0008;pointer-events:none}
.site .vc-comparaison-ligne span{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:36px;height:36px;display:grid;place-items:center;border-radius:50%;background:#fff;color:#243c32;box-shadow:0 2px 10px #0005;font-weight:800}
.site .vc-avant-apres img{pointer-events:none;user-select:none;-webkit-user-drag:none}
.site .vc-comparaison-range{position:absolute;inset:0;margin:0;width:100%;height:100%;opacity:0;z-index:5;pointer-events:none}
.site .vc-comparaison-slider{cursor:ew-resize;touch-action:pan-y;user-select:none}
.site .vc-comparaison-slider:focus-within .vc-comparaison-ligne span{outline:3px solid var(--accent,#b58a53);outline-offset:2px}
.site .vc-comparaison-slider .vc-comparaison-apres{clip-path:inset(0 0 0 var(--vc-comparaison-position));transition:none}
.site .vc-comparaison-survol .vc-comparaison-apres{opacity:0}
.site .vc-comparaison-survol .vc-badge-apres{opacity:0}
.site .vc-comparaison-survol .vc-comparaison-ligne,.site .vc-comparaison-survol .vc-comparaison-range{display:none}
@media (hover:hover) and (pointer:fine){
  .site .vc-comparaison-survol:hover .vc-comparaison-apres{opacity:1;transform:none}
  .site .vc-comparaison-survol:hover .vc-badge-apres{opacity:1}
  .site .vc-comparaison-survol:hover .vc-badge-avant{opacity:0}
  .site .vc-comparaison-effet-aucun .vc-comparaison-apres{transition:none}
  .site .vc-comparaison-effet-glissement .vc-comparaison-apres{transform:translateX(-9%)}
  .site .vc-comparaison-effet-zoom .vc-comparaison-apres{transform:scale(1.08)}
}
@media (hover:none),(pointer:coarse){
  .site .vc-comparaison-survol .vc-comparaison-apres{opacity:1;clip-path:inset(0 0 0 var(--vc-comparaison-position));transition:none;transform:none}
  .site .vc-comparaison-survol .vc-badge-apres{opacity:1}
  .site .vc-comparaison-survol .vc-comparaison-ligne{display:block}
  .site .vc-comparaison-survol .vc-comparaison-range{display:block}
  .site .vc-comparaison-survol{cursor:ew-resize;touch-action:pan-y;user-select:none}
}
@media(max-width:700px){
  .site .vc-detail-ligne{grid-template-columns:minmax(0,1fr);gap:18px}
  .site .vc-detail-image-droite .vc-detail-medias,.site .vc-detail-image-droite .vc-detail-texte{order:initial}
  .site .vc-detail-texte h3{margin-bottom:10px}
}
@media(prefers-reduced-motion:reduce){.site .vc-avant-apres .vc-comparaison-apres{transition:none!important}}

.site .vc-detail-galerie-secondaire{margin-top:14px}
.site .vc-detail-galerie-secondaire summary{cursor:pointer;padding:8px 0;font-size:13px;font-weight:650}
.site .vc-detail-galerie-secondaire .vc-diaporama-secondaire{margin-top:0}

@media(hover:hover) and (pointer:fine){
  .site .vc-comparaison-survol:focus .vc-comparaison-apres{opacity:1;transform:none}
  .site .vc-comparaison-survol:focus .vc-badge-apres{opacity:1}
  .site .vc-comparaison-survol:focus .vc-badge-avant{opacity:0}
}
