:root {
    --max-width: 1340px;
    --min-margin: 3rem;
    --dynamic-width: min(var(--max-width), calc(100% -(2* var(--min-margin))));
    --dynamic-margin: max(calc(50% - 0.5* var(--max-width)), var(--min-margin));
} 

/*
 *
 * INITIALISATION 
 *
 */

html, body{
    width : 100%;
    overflow: hidden;
    overflow-y: auto;
}

header .elementor-widget-image a img[src$=".svg"]{
    width: auto;
}

footer .elementor-widget-image a img[src$=".svg"]{
    width: auto;
}


/* DISPLAY NONE */
.d-none{
    display: none!important;
}

@media screen and (min-width:768px){
    .d-sm-only{
        display: none!important;
    }
}

@media screen and (max-width:767px){
    .d-sm-none{
        display: none!important;
    }
}

@media screen and (min-width:1024px){
    .d-md-only{
        display: none!important;
    }
}

@media screen and (max-width:1023px){
    .d-md-none{
        display: none!important;
    }
}

@media screen and (min-width:1200px){
    .d-lg-only{
        display: none!important;
    }
}

@media screen and (max-width:1199px){
    .d-lg-none{
        display: none!important;
    }
}

/* RECAPTCHA */
.grecaptcha-badge{
	display : none!important;
	opacity : 0;
	z-index : -99999;
}

/*
 *
 * GENERAL 
 *
 */


@media screen and (min-width:768px){
    /* Full height */
    .full-height{
        height: 100%!important;
    }


    /* Offset left wrapper */
    .offset-left-wrapper{
        position: relative;
        padding-left: var(--dynamic-margin);
    }
}

/* Offset left wrapper */
@media screen and (min-width:768px){
    .offset-right-wrapper{
        position: relative;
        padding-right: var(--dynamic-margin);
    }
}

/* Background image & squared background image */
.background-img, .squared-img{
    position: relative;
}

.background-img:before, .squared-img:before{
    z-index: 2;
}

.squared-img{
    aspect-ratio: 1 / 1;
}

.squared-img > div, .background-img > div{
    position: static;
}

.squared-img img, .background-img img{
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    font-family: 'object-fit: cover;';
    object-position: center;
    min-height: 100%;
}

.squared-img .elementor-widget-image, .background-img .elementor-widget-image{
    height: 100%;
}

.squared-img.top img, .background-img.top img{
    object-position: center top;
}

.squared-img.bottom img, .background-img.bottom img{
    object-position: center bottom;
}

@media screen and (max-width:767px){
    .background-img.full-height, .squared-img.full-height{
        height: auto!important;
    }
}


/* Not clickable */
.not-clickable{
    pointer-events: none;
}

/*  */
.elementor-widget-text-editor ul{
    margin-bottom: 1rem;
}

.short-list ul{
    padding-left: 1rem;
}

.check-list ul li{
    position: relative;
    list-style-type: none;
}

.check-list ul{
    padding-left: 0;
}

.check-list ul li{
    padding-left: 1.5rem;
}

.check-list ul li:before{
    content : url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 -960 960 960" width="16px" fill="%23E2007A"><path d="M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z"/></svg>');
    position: absolute;
    left: 0;
    top: 3px;
}


.main-hero > .e-con-inner{
    position: relative;
}

/*
 *
 * HEADER 
 *
 */

#main-header{
    position: fixed;
    transition: all .3s ease;
    z-index: 10;
}

#main-header .elementor-widget-theme-site-logo{
    transition: all .3s ease;
}

/* STICKED */
#main-header .elementor-widget-image {
	z-index: 3;
}

#main-header.sticked{
    position: fixed;
    left: 0;
    width: 100%;
    z-index: 5;
    padding-top : 0!important;
	transform : translateY(-100%);
	transition : transform .3s ease;
}

#main-header.sticked .elementor-widget-theme-site-logo{
    transform: scale(.8);
}

#main-header.sticked.active{
	transform : translateY(0);
}

#main-header li a span.d-sm-none{
    padding-right : 0.3rem;
}

/* Main menu */
#main-menu .menu-item.emphasized{
    position: relative;
    background-color: var(--e-global-color-accent);
}

#main-menu .menu-item.emphasized:before{
    content: "";
    position: absolute;
    width: 0;
    height: 100%;
    top: 0;
    left: 0;
    background-color: var(--e-global-color-secondary);
    transition: width 0.3s ease;
}


#main-menu .menu-item.emphasized a{
    color : #ffffff;
}

#main-menu .menu-item.emphasized:hover:before,
#main-menu .menu-item.emphasized:focus:before{
    width: 100%;
}

@media screen and (min-width:881px) {
    /* Main menu */
    #main-menu > nav, #main-menu > nav > ul, #main-menu > nav > ul > li{
        position: static;
    }

    #main-menu > nav > ul > li > ul{
        /*display: flex;*/
        width: 100%!important;
        max-width: none!important;
        right: 0;
        right: 0px;
        justify-content: stretch;
    }

    #main-menu .sub-menu{
        display: flex!important;
    }

    #main-menu .sub-menu[aria-hidden="true"]{
        display: none!important;
    }

    #main-menu > nav > ul > li > ul > li{
        flex-grow: 1;
    }

    #main-menu > nav > ul > li > ul > li:not(:last-child){
        border-right : 1px solid var(--e-global-color-accent);
    }

    #main-menu > nav > ul > li > ul > li > a{
        padding: 1.6rem;
        text-align: center;
        justify-content: center;
        align-items: center;
    }
}

@media screen and (max-width:880px) {
    #main-menu .elementor-menu-toggle{
        z-index: 10;
    } 

    #main-menu nav{
        position: fixed;
        top: 0px;
        margin: 0px;
        height: 100vh;
        padding: 4rem;
        z-index: 5;
        width: 100%;
        left: 0;
    }
}

/*
 *
 * MENU 
 *
 */

header.elementor-location-header{
    position: relative;
    z-index: 10;
}

@media screen and (max-width:1024px){
    #burger-menu-wrapper.active #burger-menu{
        overflow: scroll;
    }

    .elementor-nav-menu--main .elementor-nav-menu ul.sub-menu{
        margin: 0!important;
        position: relative!important;
    }

    .elementor-nav-menu--main .elementor-nav-menu ul.sub-menu li a{
        justify-content: center!important;
    }

    #burger-menu-wrapper .menu-separator{
        padding-top: 1rem;
        margin-top: 1rem;
        border-top: 1px solid #cccccc;
    }
}

/* Burger menu icon */
#burger-menu-wrapper, #burger-menu-wrapper *{
    cursor: pointer;
    pointer-events: all;
}

#burger-menu-icon, #burger-menu-icon *{
    pointer-events: none;
}

.elementor-icon-wrapper {
    pointer-events: auto;
}

#burger-menu-icon #top-line,
#burger-menu-icon #middle-line,
#burger-menu-icon #bottom-line{
    transition: all .3s ease;
}

#burger-menu-icon #top-line, #burger-menu-icon #bottom-line{
    transform-origin: top left;
}

#burger-menu-wrapper.active > .elementor-widget-icon{
    z-index: 25;
}

#burger-menu-wrapper.active #burger-menu-icon{
    z-index: 10;
}

#burger-menu-wrapper.active #burger-menu-icon #top-line{
    transform: rotate(45deg) scale(1.2) translateX(1.2rem) translateY(-1.7rem);
}

#burger-menu-wrapper.active #burger-menu-icon #bottom-line{
    transform: rotate(-45deg) scale(1.2) translateX(-3.2rem) translateY(-5.6rem);
}

#burger-menu-wrapper.active #burger-menu-icon #middle-line{
    opacity: 0;
}

/* menu-burger */
#burger-menu{
    position: fixed;
    top: 0;
    left: auto;
    right: 0;
    bottom: 0;
    background-color: var(--e-global-color-accent);
    padding: 8rem 2rem 2rem 2rem;
    z-index: -1;
    opacity: 0;
    pointer-events: none;
    width: 40rem;
    transform: translateX(100%);
    height: 100vh!important;
}

#burger-menu-wrapper.active #burger-menu{
    z-index: 6;
    opacity: 1;
    pointer-events: all;
    transform: translateX(0);
}

#burger-menu-wrapper #burger-menu nav > ul{
    overflow: clip;
}

#burger-menu-wrapper #burger-menu nav > ul > li{
    display: flex;
    flex-direction: column;
    flex-wrap: wrap;
    align-items: flex-start;
}
    
#burger-menu-wrapper #burger-menu nav > ul > li a{
    line-height: 1.2;
}

#burger-menu-wrapper #burger-menu nav > ul > li > a{
    position: relative;
    text-transform: uppercase;
    transition: all .1s ease;
}

#burger-menu-wrapper #burger-menu nav > ul > li > a:hover,
#burger-menu-wrapper #burger-menu nav > ul > li > a:focus{
    font-weight: 700;
    font-style: italic;
}

#burger-menu-wrapper .sub-arrow svg{
    width: 1.5rem;
    height: 1.5rem;
    transform-origin: 50%;
    transition: all .25s cubic-bezier(0.65, 0, 0.35, 1);
}

#burger-menu-wrapper .has-submenu[aria-expanded="true"] .sub-arrow svg{
    transform: rotate(180deg);
}


#burger-menu-wrapper #burger-menu nav ul.sub-menu{
    flex-direction: column;
    gap: .5rem;
    padding-left : 2rem;
}

#burger-menu-wrapper #burger-menu nav .elementor-item-active + ul.sub-menu{
    display: flex;
}

#burger-menu-wrapper #burger-menu nav > ul > li > ul > li > a{
    font-size: 1.5rem;
    font-weight: 300;
    padding: 0;
}

#burger-menu-wrapper #burger-menu nav > ul > li > ul > li > a:hover,
#burger-menu-wrapper #burger-menu nav > ul > li > ul > li > a:focus{
    font-weight: 700;
}

@media screen and (max-width: 1024px){
    #burger-menu-wrapper #burger-menu nav > ul > li > ul > li > a{
        font-size: 1.2rem;
        font-weight: 300;
        padding: 0;
    }
}

@media screen and (max-width: 880px){
    #burger-menu {
        width: 25rem;
        padding: 7rem 2rem 2rem 2rem;
    }

    #burger-menu-wrapper #burger-menu nav > ul > li > ul {
        padding-left: 1rem;
    }
}

@media screen and (max-width: 768px){
    #burger-menu {
        width: 100%;
        padding: 7rem 2rem 2rem 2rem;
    }

    #burger-menu-wrapper #burger-menu nav > ul > li > ul > li > a{
        font-size: 1rem;
        font-weight: 300;
        padding: 0;
    }
}

/* Complianz Fix */
.cmplz-hidden{ display:none!important; }

/*  */
.img-container:before{
    content: "";
    position: absolute;
    height: 0%;
    width: 0%;
    top: auto;
    left: auto;
    bottom: auto;
    right: auto;
    border-radius: 10px 0px 10px 0px;
    transition: all .75s cubic-bezier(0.65, 0, 0.35, 1);
}

.img-container.primary:before{
    background-color: var(--e-global-color-accent);
}

.img-container.secondary:before{
    background-color: var(--e-global-color-b16b399);
}

.img-container.bottom:before{ bottom: 0;}
.img-container.top:before{ top: 0;}
.img-container.left:before{ left: 0; }
.img-container.right:before{ right: 0; }

.img-container.active:before{
    height: 80%;
    width: 80%;
}

.img-container svg{
    transform: scale(0);
    transform-origin: 50%;
    transition: all .75s cubic-bezier(0.65, 0, 0.35, 1);
}

.img-container.active svg{
    transform: scale(1);
}

.img-container .background-img{
    height: 0%;
    width: 0%;
    transition: all .75s cubic-bezier(0.65, 0, 0.35, 1);
}

.img-container.active .background-img{
    height: 100%;
    width: 100%;
}

/* Extended title */
.extended-title:before{
    content: "";
    position: absolute;
    background-color: inherit;
    height: 100%;
    width: 1000%;
    right: 100%;
    top: 0;
}

/* CARDS */
.cards.link svg{
    transform: rotate(0deg);
    transform-origin: 50%;
    transition: all .25s cubic-bezier(0.65, 0, 0.35, 1);
}

.cards.link:hover svg,
.cards.link:focus svg{
    transform: rotate(360deg);
}

@media screen and (max-width : 767px) {
    #main-title{
        position: relative;
        top: auto;
        left: auto;
    }

    .main-infos-header-wrapper{
        position: relative;
        top: auto;
        left: auto;
    }
}

/*
 *
 * SWIPER SLIDE CENTERED
 *
 */

.centered-slider .swiper-slide > div:before{
    content: "";
    left: 0;
    top: 0;
    right: 0;
    bottom: 0;
    background-color: var(--e-global-color-294f475);
    border-radius: 10rem;
    transform: scale(0);
    transition: transform .3s cubic-bezier(0.65, 0, 0.35, 1);
}

.centered-slider .swiper-slide.swiper-slide-active > div:before{
    transform: scale(1);
}
 
/*
 *
 * EXPERTISE SECTION (SHORTCODE)
 *
 */

.vp-section {
    overflow: hidden;
}

.vp-container {
    max-width: var(--max-width);
    margin: 0 auto;
}

.vp-grid {
    display: grid;
    grid-template-columns: 38% 1fr;
    grid-template-rows: auto 1fr;
    gap: 1.5rem;
}

.vp-main {
    grid-column: 1;
    grid-row: 1 / -1;
}

.vp-thumbnails {
    grid-column: 2;
    grid-row: 1;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1rem;
}

.vp-content {
    grid-column: 2;
    grid-row: 2;
}

/* Main Card */
.vp-main-card {
    height: 100%;
    border-radius: 12px;
    overflow: hidden;
    position: relative;
    background-color: var(--e-global-color-secondary);
}

.vp-main-image {
    width: 100%;
    height: 100%;
    min-height: 480px;
    background-size: cover;
    background-position: center;
    position: relative;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    padding: 1.75rem;
    border-radius: 12px;
}

.vp-main-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgba(0,0,0,0.05) 0%, rgba(0,0,0,0.55) 100%);
    pointer-events: none;
}

/* Tags */
.vp-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    position: relative;
    z-index: 2;
}

.vp-tag {
    background: rgba(255, 255, 255, 0.92);
    color: #222;
    padding: 0.4rem 0.9rem;
    border-radius: 4px;
    font-size: 0.78rem;
    font-weight: 500;
    line-height: 1.3;
    border: 1px solid rgba(255, 255, 255, 0.5);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
}

/* Main Title */
.vp-main-title {
    position: relative;
    z-index: 2;
}

.vp-main-title h3 {
    color: var(--e-global-color-b16b399);
    font-size: 2rem;
    font-weight: 800;
    line-height: 1.15;
    margin: 0;
    text-shadow: 0 2px 12px rgba(0, 0, 0, 0.25);
}

/* Thumbnails */
.vp-thumb {
    border-radius: 12px;
    overflow: hidden;
    cursor: pointer;
    position: relative;
    background-color: var(--e-global-color-secondary);
}

.vp-thumb-image {
    width: 100%;
    height: 100%;
    min-height: 260px;
    background-size: cover;
    background-position: center;
    position: relative;
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    padding: 1.25rem;
    transition: transform 0.4s cubic-bezier(0.25, 1, 0.5, 1);
}

.vp-thumb:hover .vp-thumb-image {
    transform: scale(1.04);
}

.vp-thumb-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgba(237,249,121,0.5) 25%, rgba(237,249,121,0.5) 100%);
    pointer-events: none;
    transition: background 0.3s ease;
}

.vp-thumb:hover .vp-thumb-overlay {
    background: linear-gradient(180deg, rgba(237,249,121,0) 10%, rgba(237,249,121,0.6) 100%);
}

/* Plus icon */
.vp-thumb-plus {
    position: absolute;
    top: 0.9rem;
    right: 0.9rem;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    border: 2px solid rgba(255, 255, 255, 0.65);
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    z-index: 2;
    transition: all 0.35s cubic-bezier(0.25, 1, 0.5, 1);
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
    transform-origin: 50%;
}

.vp-thumb:hover .vp-thumb-plus {
    transform: rotate(90deg);
}

/* Thumb Title */
.vp-thumb-title {
    position: relative;
    z-index: 2;
}

.vp-thumb-title h4 {
    color: #fff;
    font-size: 1.05rem;
    font-weight: 700;
    line-height: 1.2;
    margin: 0;
    text-shadow: 0 1px 6px rgba(0, 0, 0, 0.3);
}

/* Content area */
.vp-content-inner {
    padding: 0.25rem 0;
}

.vp-content-inner p:first-child {
    margin-top: 0;
}

.vp-content-inner ul {
    padding-left: 1.25rem;
    margin: 0.5rem 0;
}

.vp-content-inner ul li {
    margin-bottom: 0.3rem;
    line-height: 1.55;
    font-size: 0.92rem;
}

/* CSS fallback animations */
.vp-main-image.vp-slide-out {
    animation: vpSlideOut 0.4s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}

.vp-main-image.vp-slide-in {
    animation: vpSlideIn 0.45s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}

@keyframes vpSlideOut {
    from { opacity: 1; transform: translateX(0) scale(1); }
    to   { opacity: 0; transform: translateX(-40px) scale(0.96); }
}

@keyframes vpSlideIn {
    from { opacity: 0; transform: translateX(40px) scale(0.96); }
    to   { opacity: 1; transform: translateX(0) scale(1); }
}

.vp-content-inner.vp-fade-out {
    animation: vpFadeOut 0.3s ease forwards;
}

.vp-content-inner.vp-fade-in {
    animation: vpFadeIn 0.4s ease forwards;
}

@keyframes vpFadeOut {
    from { opacity: 1; transform: translateY(0); }
    to   { opacity: 0; transform: translateY(12px); }
}

@keyframes vpFadeIn {
    from { opacity: 0; transform: translateY(12px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* Responsive */
@media screen and (min-width:1366px){

    .vp-container {
        padding: 0 var(--min-margin);
    }

}

@media screen and (max-width: 1023px) {
    .vp-grid {
        grid-template-columns: 1fr 1fr;
        grid-template-rows: auto auto auto;
    }

    .vp-main {
        grid-column: 1;
        grid-row: 1;
    }

    .vp-thumbnails {
        grid-column: 2;
        grid-row: 1;
    }

    .vp-content {
        grid-column: 1 / 3;
        grid-row: 2;
    }

    .vp-main-image {
        min-height: 350px;
    }

    .vp-thumb-image {
        min-height: 220px;
    }
}

@media screen and (max-width: 767px) {
    .vp-thumbnails {
        gap: 0.75rem;
        grid-template-columns: 1fr;
        grid-template-rows: auto auto auto;
    }

    .vp-thumb-plus{
        width: 16px;
        height: 16px;
        border: 1px solid rgba(255, 255, 255, 0.65);
    }

    .vp-main-image {
        min-height: 280px;
        padding: 1.25rem;
    }

    .vp-main-title h3 {
        font-size: 1.2rem;
    }

    .vp-thumb-image {
        min-height: 0px;
        padding: 1rem;
    }

    .vp-thumb-title h4 {
        font-size: 0.9rem;
    }

    .vp-grid {
        gap: 1rem;
    }
}

/*
 *
 * CARTE PROJETS (SHORTCODE)
 *
 */

.pm-section {
    --pm-orange: #E8772A;
    --pm-gold: var(--e-global-color-b16b399);
    --pm-dark: #333;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

.pm-container {
    display: flex;
    align-items: center;
    max-width: var(--max-width);
    margin: 0 auto;
    padding: 0 var(--min-margin);
    position: relative;
    min-height: 550px;
    width: 100%;
}

.pm-card-area {
    flex: 0 0 42%;
    z-index: 3;
    position: relative;
}

.pm-map-area {
    padding-left: 2rem;
    flex: 0 0 58%;
    position: relative;
}

/* Card */
.pm-card {
    opacity: 0;
    transform: translateX(-30px);
    transition: opacity 0.4s ease, transform 0.4s ease;
    pointer-events: none;
}

.pm-card.active {
    opacity: 1;
    transform: translateX(0);
    pointer-events: all;
}

.pm-card-inner {
    position: relative;
    border: 3px solid var(--pm-gold);
    overflow: hidden;
    background: #fff;
}

.pm-card-image-wrapper {
    position: relative;
    aspect-ratio: 4 / 3;
    overflow: hidden;
}

.pm-card-image-wrapper img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.pm-card-btn {
    position: absolute;
    top: 1rem;
    right: 1rem;
    background: var(--pm-orange);
    color: #fff;
    padding: 0.6rem 1.5rem;
    text-decoration: none;
    font-weight: 700;
    font-size: 0.85rem;
    letter-spacing: 0.02em;
    transition: background 0.25s ease;
    z-index: 2;
}

.pm-card-btn:hover {
    background: #d16a22;
    color: #fff;
}

.pm-card-footer {
    position: absolute;
    left: 0;
    bottom: 0;
    right: 0;
    background-color: rgba(255, 255, 255, 0.61);
    backdrop-filter: blur(5px);
    padding: 1rem 1.25rem;
}

.pm-card-footer h3 {
    margin: 0;
    font-size: 1rem;
    letter-spacing: 1px;
    font-weight: 800;
    color: var(--pm-dark);
    line-height: 1.3;
}

/* Legend */
.pm-legend {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    position: absolute;
    top: 0;
    left: 0;
    z-index: 2;
}

.pm-legend-item {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.85rem;
    font-weight: 500;
    color: var(--pm-dark);
}

/* SVG Map */
.pm-svg {
    width: 100%;
    height: auto;
    display: block;
}

.pm-france-outline {
    fill: none;
    stroke: var(--pm-dark);
    stroke-width: 1.5;
    stroke-linejoin: round;
}

/* SVG Markers */
.pm-marker {
    transition: transform 0.2s ease;
}

.pm-marker-projet {
    cursor: pointer;
}

.pm-marker-projet:hover rect {
    fill: var(--pm-gold);
    stroke: var(--pm-gold);
}

/* SVG Labels */
.pm-label {
    font-size: 13px;
    font-weight: 600;
    fill: var(--pm-orange);
}

/* Connecting line */
.pm-line {
    position: absolute;
    height: 2px;
    background: var(--pm-gold);
    z-index: 2;
    opacity: 0;
    transition: opacity 0.3s ease;
    pointer-events: none;
}

.pm-line.active {
    opacity: 1;
}

/* Responsive */
@media screen and (max-width: 1023px) {
    .pm-container {
        flex-direction: column;
        gap: 2rem;
    }

    .pm-card-area {
        flex: 0 0 auto;
        width: 100%;
        order: 2;
    }

    .pm-map-area {
        flex: 0 0 auto;
        padding-left: 0;
        width: 100%;
        order: 1;
    }

    .pm-card {
        opacity: 1;
        transform: none;
        pointer-events: all;
    }

    .pm-line {
        display: none;
    }

    .pm-legend {
        position: relative;
        flex-direction: row;
        gap: 1.5rem;
        margin-bottom: 1rem;
    }
}

@media screen and (max-width: 767px) {
    .pm-card-footer h3 {
        font-size: 0.9rem;
    }
}