
/* ==============================================
   ESF - Énergies Services France - Custom CSS
   v8.5.0
   ============================================== */

/* --- Global --- */
html {
    scroll-behavior: smooth;
    overflow-x: clip;
    /* Décale le point d'arrivée des ancres pour compenser le header fixe (140px desktop) */
    scroll-padding-top: 140px;
}
html.admin-bar {
    scroll-padding-top: 172px; /* 140 + 32 admin bar */
}
@media (max-width: 782px) {
    html.admin-bar {
        scroll-padding-top: 126px; /* 80 + 46 admin bar mobile */
    }
}
@media (max-width: 767px) {
    html {
        scroll-padding-top: 80px;
    }
}
::selection { background: #F59E0B; color: white; }
body {
    overflow-x: hidden;
    font-family: 'Open Sans', sans-serif;
    color: #2D3748;
}

/* Prevent Elementor full-width containers from overflowing */
.elementor-location-header,
.elementor-location-footer,
.elementor[data-elementor-type="wp-page"] {
    overflow-x: clip;
    max-width: 100%;
}

/* ==============================================
   ESF HEADER — Elementor Theme Builder (template #19)
   ============================================== */

/* --- Admin bar: must stay above the fixed header --- */
#wpadminbar,
#wpadminbar .ab-sub-wrapper,
#wpadminbar .quicklinks .menupop ul {
    z-index: 999999 !important;
}

/* --- Header wrapper: fixed at top, full width --- */
.elementor-location-header {
    position: fixed !important;
    top: 0;
    left: 0;
    right: 0;
    z-index: 99999;
    opacity: 0.96;
    transition: opacity 0.4s ease, box-shadow 0.4s ease;
}
.elementor-location-header:hover {
    opacity: 1;
}

/* Admin bar offset */
.admin-bar .elementor-location-header {
    top: 32px;
}
@media screen and (max-width: 782px) {
    .admin-bar .elementor-location-header {
        top: 46px;
    }
}

/* Push page content below the fixed header */
.elementor-location-header + .elementor-location-single,
.elementor-location-header + .site-main,
.elementor-location-header ~ .elementor-element,
.page-template-elementor_header_footer .elementor[data-elementor-type="wp-page"],
.page-template-elementor_header_footer .elementor[data-elementor-type="wp-post"] {
    margin-top: 0; /* Elementor templates manage their own top margins */
}
body.page-template-elementor_header_footer {
    padding-top: 140px; /* ~90px topbar + ~50px navbar */
}
.admin-bar.page-template-elementor_header_footer {
    padding-top: 172px; /* 140 + 32 */
}
@media (max-width: 767px) {
    body.page-template-elementor_header_footer {
        padding-top: 80px;
    }
    .admin-bar.page-template-elementor_header_footer {
        padding-top: 126px; /* 80 + 46 */
    }
}

/* Archive CPT esf_realisation + tribe_events — body sans page-template-elementor_header_footer */
body.post-type-archive-esf_realisation,
body.post-type-archive-tribe_events {
    padding-top: 140px; /* même décalage que page-template-elementor_header_footer */
}
.admin-bar.post-type-archive-esf_realisation,
.admin-bar.post-type-archive-tribe_events {
    padding-top: 0; /* mode admin-bar : le hero gère son propre décalage */
}
@media (max-width: 1024px) {
    body.post-type-archive-esf_realisation,
    body.post-type-archive-tribe_events { padding-top: 80px; }
}
@media (max-width: 767px) {
    body.post-type-archive-esf_realisation,
    body.post-type-archive-tribe_events { padding-top: 70px; }
}

/* --- Sticky scroll effect: full opacity + shadow --- */
.elementor-sticky--active {
    opacity: 1 !important;
    box-shadow: 0 2px 20px rgba(0,0,0,0.10) !important;
}

/* --- Nav bar: transparent/white background --- */
.elementor-location-header .elementor-element-esf_navbar {
    background-color: rgba(255,255,255,0.92) !important;
    border-top: 1px solid rgba(0,0,0,0.06) !important;
    border-bottom: 1px solid rgba(0,0,0,0.06) !important;
}

/* --- Phone widget --- */
.esf-el-phone a { text-decoration: none; }
.esf-el-phone .elementor-icon-box-wrapper { align-items: center; }
.esf-el-phone:hover .elementor-icon-box-title,
.esf-el-phone:hover .elementor-icon-box-icon .elementor-icon {
    color: #ee6c00 !important;
    border-color: #ee6c00 !important;
}

/* --- Burger nav (mobile/tablet) — hidden on desktop --- */
.esf-burger-nav,
.elementor-element-esf_burger { display: none !important; }
@media (max-width: 1024px) {
    .esf-burger-nav,
    .elementor-element-esf_burger { display: block !important; text-align: center; }
    .esf-phone-picto { display: none !important; }
    .elementor-element-esf_phone { display: none !important; }
    .elementor-element-esf_navbar { display: none !important; }

    .elementor-element-esf_topbar,
    .elementor-element-esf_topbar .elementor-container,
    .elementor-element-esf_topbar .elementor-column,
    .elementor-element-esf_topbar .elementor-widget-wrap {
        overflow: visible !important;
    }
    .elementor-location-header {
        overflow: visible !important;
        z-index: 2147483000 !important;
    }

    /* Burger widget: position relative so dropdown can be absolute */
    .esf-burger-nav .elementor-widget-container,
    .elementor-element-esf_burger .elementor-widget-container {
        position: relative;
    }

    /* Burger icon: centered */
    .esf-burger-nav .elementor-menu-toggle,
    .elementor-element-esf_burger .elementor-menu-toggle {
        margin: 0 auto;
        display: flex;
        justify-content: center;
    }

    /* Dropdown container: fixed overlay under header */
    .esf-burger-nav .elementor-nav-menu__container.elementor-nav-menu--dropdown,
    .elementor-element-esf_burger .elementor-nav-menu__container.elementor-nav-menu--dropdown {
        position: fixed !important;
        top: 70px !important;
        left: 0 !important;
        right: 0 !important;
        transform: none !important;
        width: 100vw !important;
        max-width: 100vw !important;
        z-index: 2147483600 !important;
        max-height: calc(100vh - 70px) !important;
    }
    .admin-bar .esf-burger-nav .elementor-nav-menu__container.elementor-nav-menu--dropdown,
    .admin-bar .elementor-element-esf_burger .elementor-nav-menu__container.elementor-nav-menu--dropdown {
        top: 116px !important;
        max-height: calc(100vh - 116px) !important;
    }
}
@media (max-width: 767px) {
    .esf-burger-nav .elementor-nav-menu__container.elementor-nav-menu--dropdown,
    .elementor-element-esf_burger .elementor-nav-menu__container.elementor-nav-menu--dropdown {
        top: 60px !important;
        max-height: calc(100vh - 60px) !important;
    }
    .admin-bar .esf-burger-nav .elementor-nav-menu__container.elementor-nav-menu--dropdown,
    .admin-bar .elementor-element-esf_burger .elementor-nav-menu__container.elementor-nav-menu--dropdown {
        top: 106px !important;
        max-height: calc(100vh - 106px) !important;
    }
}

/* Burger dropdown styling */
.esf-burger-nav .elementor-nav-menu__container.elementor-nav-menu--dropdown,
.elementor-element-esf_burger .elementor-nav-menu__container.elementor-nav-menu--dropdown {
    background: #FFFFFF !important;
    border: none !important;
    border-top: none !important;
    box-shadow: none !important;
    border-radius: 0 !important;
    display: none !important;
    max-height: 0 !important;
    overflow: hidden !important;
}
.esf-burger-nav .elementor-menu-toggle.elementor-active ~ .elementor-nav-menu__container.elementor-nav-menu--dropdown,
.esf-burger-nav .elementor-nav-menu__container.elementor-nav-menu--dropdown.elementor-nav-menu--visible,
.elementor-element-esf_burger .elementor-menu-toggle.elementor-active ~ .elementor-nav-menu__container.elementor-nav-menu--dropdown,
.elementor-element-esf_burger .elementor-nav-menu__container.elementor-nav-menu--dropdown.elementor-nav-menu--visible {
    display: block !important;
    border-top: 2px solid #ee6c00 !important;
    box-shadow: 0 10px 40px rgba(0,0,0,0.15) !important;
    max-height: 85vh !important;
    overflow-y: auto !important;
}
.esf-burger-nav .elementor-nav-menu__container.elementor-nav-menu--dropdown .elementor-item,
.esf-burger-nav .elementor-nav-menu__container.elementor-nav-menu--dropdown .elementor-sub-item,
.elementor-element-esf_burger .elementor-nav-menu__container.elementor-nav-menu--dropdown .elementor-item,
.elementor-element-esf_burger .elementor-nav-menu__container.elementor-nav-menu--dropdown .elementor-sub-item {
    color: #1E3A5F !important;
    font-family: 'Montserrat', sans-serif;
    font-weight: 600;
    font-size: 15px;
    padding: 14px 24px !important;
    border-bottom: 1px solid rgba(0,0,0,0.05);
    text-align: left;
}
.esf-burger-nav .elementor-nav-menu__container.elementor-nav-menu--dropdown .elementor-sub-item,
.elementor-element-esf_burger .elementor-nav-menu__container.elementor-nav-menu--dropdown .elementor-sub-item {
    padding-left: 40px !important;
    font-size: 13px;
    font-weight: 500;
}
.esf-burger-nav .elementor-nav-menu__container.elementor-nav-menu--dropdown .elementor-item:hover,
.esf-burger-nav .elementor-nav-menu__container.elementor-nav-menu--dropdown .elementor-sub-item:hover,
.elementor-element-esf_burger .elementor-nav-menu__container.elementor-nav-menu--dropdown .elementor-item:hover,
.elementor-element-esf_burger .elementor-nav-menu__container.elementor-nav-menu--dropdown .elementor-sub-item:hover {
    color: #ee6c00 !important;
    background: #fef3e6 !important;
}
.esf-burger-nav .elementor-nav-menu__container.elementor-nav-menu--dropdown .elementor-item-active,
.elementor-element-esf_burger .elementor-nav-menu__container.elementor-nav-menu--dropdown .elementor-item-active {
    color: #ee6c00 !important;
    background: rgba(238,108,0,0.05) !important;
}

/* --- Social picto images --- */
.esf-picto-social img {
    width: 40px !important;
    height: 40px !important;
    object-fit: contain;
    transition: all 0.3s ease;
    border-radius: 6px;
}
.esf-picto-social img:hover {
    transform: translateY(-3px);
    filter: brightness(1.15);
}

/* --- Nav menu --- */
.esf-el-nav .elementor-item { color: #1E3A5F !important; }
.esf-el-nav .elementor-item:hover { color: #ee6c00 !important; }
.esf-el-nav .elementor-item-active { color: #ee6c00 !important; }
.esf-el-nav .elementor-nav-menu--dropdown .elementor-sub-item {
    border-left: 3px solid transparent;
    transition: all 0.25s ease;
}
.esf-el-nav .elementor-nav-menu--dropdown .elementor-sub-item:hover {
    border-left-color: #ee6c00;
}

/* --- Mobile / Tablet --- */
@media (max-width: 1024px) {
    body.page-template-elementor_header_footer { padding-top: 80px; }
    .admin-bar.page-template-elementor_header_footer { padding-top: 112px; }
    .esf-picto-social img { width: 34px !important; height: 34px !important; }

    /* Force social icons to stay in a horizontal row */
    .elementor-element-esf_inner_social > .elementor-container {
        flex-wrap: nowrap !important;
        flex-direction: row !important;
    }
    .elementor-element-esf_inner_social .elementor-column {
        width: 25% !important;
    }

    /* Tighter topbar padding */
    .elementor-element-esf_topbar > .elementor-container {
        flex-wrap: nowrap !important;
    }
}
@media (max-width: 767px) {
    body.page-template-elementor_header_footer { padding-top: 70px; }
    .admin-bar.page-template-elementor_header_footer { padding-top: 116px; }
    .esf-picto-social img { width: 26px !important; height: 26px !important; }

    /* Force topbar columns to stay in a row, not stack */
    .elementor-element-esf_topbar > .elementor-container {
        flex-wrap: nowrap !important;
        flex-direction: row !important;
        align-items: center !important;
    }
    .elementor-element-esf_topbar .elementor-column {
        width: auto !important;
    }
    .elementor-element-esf_colA { flex: 0 0 30% !important; max-width: 30% !important; }
    .elementor-element-esf_colB { flex: 0 0 30% !important; max-width: 30% !important; }
    .elementor-element-esf_colC { flex: 0 0 40% !important; max-width: 40% !important; }

    /* Force social icons row on mobile */
    .elementor-element-esf_inner_social > .elementor-container {
        flex-wrap: nowrap !important;
        flex-direction: row !important;
        gap: 4px;
    }
    .elementor-element-esf_inner_social .elementor-column {
        width: 25% !important;
        flex: 0 0 25% !important;
    }

    /* Compact topbar */
    .elementor-element-esf_topbar {
        min-height: 55px !important;
    }
}

/* ==============================================
   ESF FOOTER
   ============================================== */

/* --- Footer phone icon-box --- */
.esf-footer-phone a { text-decoration: none; }
.esf-footer-phone .elementor-icon-box-wrapper { align-items: center; }
.esf-footer-phone .elementor-icon-box-icon .elementor-icon {
    color: #FFFFFF !important;
    border-color: #FFFFFF !important;
}
.esf-footer-phone .elementor-icon-box-title {
    color: #a0aec0 !important;
}
.esf-footer-phone:hover .elementor-icon-box-title {
    color: #ee6c00 !important;
}
.esf-footer-phone:hover .elementor-icon-box-icon .elementor-icon {
    color: #ee6c00 !important;
    border-color: #ee6c00 !important;
}

/* --- Footer social icons: white --- */
.esf-footer-social img {
    filter: brightness(0) invert(1) !important;
    width: 32px !important;
    height: 32px !important;
    object-fit: contain;
    transition: all 0.3s ease;
}
.esf-footer-social img:hover {
    filter: brightness(0) invert(1) opacity(0.7) !important;
    transform: translateY(-2px);
}

/* --- Hero Section (Section 0) --- */
.esf-cards-section {
    position: relative;
    /* Bleed derrière le header semi-transparent (desktop + tablette : 140px) */
    margin-top: -140px !important;
}
.admin-bar .esf-cards-section {
    margin-top: -172px !important; /* +32px barre admin */
}
/* Mobile (≤767px) : header réduit à 80px */
@media (max-width: 767px) {
    .esf-cards-section {
        margin-top: -80px !important;
    }
    .admin-bar .esf-cards-section {
        margin-top: -126px !important; /* 80 + 46 admin bar mobile */
    }
}
.esf-cards-section .elementor-widget-heading .elementor-heading-title {
    font-family: 'Montserrat', sans-serif;
    font-weight: 800;
    color: #1E3A5F;
    text-shadow: 0 2px 4px rgba(0,0,0,0.04);
}

/* --- Fade In Up Animation --- */
@keyframes esf-fadeInUp {
    from { opacity: 0; transform: translateY(40px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* --- Buttons General --- */
.elementor-button {
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1) !important;
    font-family: 'Montserrat', sans-serif !important;
    font-weight: 600 !important;
    letter-spacing: 0.5px !important;
}
.elementor-button:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 25px rgba(0,0,0,0.15) !important;
}

/* --- Section Titles --- */
.esf-section-title .elementor-heading-title {
    position: relative;
}

/* --- Divider under section titles --- */
.esf-section-title + .elementor-widget-divider {
    opacity: 0.9;
}

/* --- Footer Links --- */
[data-elementor-type="footer"] a {
    transition: color 0.3s ease, padding-left 0.3s ease;
}
[data-elementor-type="footer"] a:hover {
    color: #F59E0B !important;
    padding-left: 5px;
}

/* ==============================================
   Service Cards Swiper Carousel — Coverflow
   ============================================== */
.esf-services-carousel {
    position: relative;
    padding: 0 20px;
    max-width: 1200px;
    margin: 0 auto;
}
.esf-swiper-services {
    overflow: hidden !important;
    padding: 30px 0 40px;
}

/* --- Coverflow: slides styling --- */
.esf-swiper-services .swiper-slide {
    transition: opacity 0.5s ease, transform 0.5s ease, filter 0.5s ease;
    opacity: 0 !important;
    pointer-events: none;
}
.esf-swiper-services .swiper-slide-active {
    opacity: 1 !important;
    filter: brightness(1) !important;
    z-index: 10;
    pointer-events: auto;
}
.esf-swiper-services .swiper-slide-prev,
.esf-swiper-services .swiper-slide-next {
    opacity: 0.55 !important;
    filter: brightness(.7);
    pointer-events: auto;
}
.esf-swiper-services .swiper-slide-active .esf-card {
    box-shadow: 0 20px 60px rgba(0,0,0,0.18);
    transform: scale(1.05);
}

/* --- Card design --- */
.esf-card {
    background: #FFFFFF;
    border-radius: 16px;
    box-shadow: 0 10px 40px rgba(0,0,0,0.10);
    padding: 0;
    text-align: center;
    overflow: hidden;
    height: 100%;
    display: flex;
    flex-direction: column;
    transition: box-shadow 0.4s ease, transform 0.4s ease;
}
.esf-card:hover {
    transform: translateY(-4px);
}

/* --- Icon area --- */
.esf-card-icon {
    padding: 30px 20px 15px;
    font-size: 44px;
    color: #F59E0B;
}

/* --- Card title --- */
.esf-card-title {
    font-family: 'Montserrat', sans-serif;
    font-weight: 700;
    font-size: 17px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: #1E3A5F;
    padding: 5px 20px;
    margin: 0;
    line-height: 1.3;
}

/* --- Description --- */
.esf-card-desc {
    padding: 15px 22px 10px;
    color: #718096;
    font-family: 'Open Sans', sans-serif;
    font-size: 14px;
    line-height: 1.6;
    flex: 1;
}

/* --- Button --- */
.esf-card-btn {
    display: inline-block;
    margin: 10px 22px 25px;
    padding: 8px 22px;
    border: 2px solid #F59E0B;
    border-radius: 30px;
    color: #F59E0B;
    font-family: 'Montserrat', sans-serif;
    font-weight: 600;
    font-size: 13px;
    text-decoration: none;
    letter-spacing: 0.5px;
    transition: all 0.3s ease;
}
.esf-card-btn:hover {
    background: #F59E0B;
    color: #FFFFFF;
    transform: translateY(-2px);
    box-shadow: 0 6px 20px rgba(245,158,11,0.4);
}

/* --- Responsive Carousel --- */
@media (max-width: 767px) {
    .esf-services-carousel { padding: 0 15px; }
    .esf-card-title { font-size: 14px; }
}

/* ==============================================
   Section Title Bands (orange / blue)
   ============================================== */
.esf-title-band .elementor-heading-title {
    display: inline-block;
    padding: 12px 35px;
    color: #FFFFFF !important;
    border-radius: 6px;
    font-family: 'Montserrat', sans-serif;
    box-shadow: 0 4px 15px rgba(0,0,0,0.15);
    letter-spacing: 0.3px;
}
/* Curseur uniquement pendant l'animation typewriter */
.esf-title-band .elementor-heading-title.esf-typing {
    border-right: 3px solid rgba(255,255,255,0.8);
    animation: esf-blink-cursor 0.7s step-end infinite;
}
.esf-title-band .elementor-heading-title.esf-typed-done {
    border-right: none;
    animation: none;
}
@keyframes esf-blink-cursor {
    50% { border-right-color: transparent; }
}
.esf-title-band-orange .elementor-heading-title {
    background: linear-gradient(135deg, #F59E0B, #D97706);
    box-shadow: 0 4px 20px rgba(245,158,11,0.35);
}
.esf-title-band-blue .elementor-heading-title {
    background: linear-gradient(135deg, #1E3A5F, #2563EB);
    box-shadow: 0 4px 20px rgba(30,58,95,0.35);
}

/* ==============================================
   Testimonial Cards (Section "Ils en parlent")
   ============================================== */

/* Stars styling in testimonials */
.elementor-inner-section .elementor-inner-section .elementor-widget-heading:first-child .elementor-heading-title {
    letter-spacing: 3px;
}

/* Testimonial author names */
.elementor-inner-section .elementor-inner-section h5.elementor-heading-title {
    font-family: 'Montserrat', sans-serif;
    border-left: 3px solid #F59E0B;
    padding-left: 12px;
}

/* ==============================================
   Arguments Cards (Section "La confiance")
   ============================================== */
/* Card columns hover */
.elementor-element-conf_r1 > .elementor-container > .elementor-column,
.elementor-element-conf_r2 > .elementor-container > .elementor-column {
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.elementor-element-conf_r1 > .elementor-container > .elementor-column:hover,
.elementor-element-conf_r2 > .elementor-container > .elementor-column:hover {
    transform: translateY(-4px);
    box-shadow: 0 12px 35px rgba(0,0,0,0.12);
}
/* Arguments section icons */
.elementor-element-conf_r1 .elementor-widget-icon .elementor-icon,
.elementor-element-conf_r2 .elementor-widget-icon .elementor-icon {
    transition: transform 0.3s ease;
}
.elementor-element-conf_r1 .elementor-column:hover .elementor-widget-icon .elementor-icon,
.elementor-element-conf_r2 .elementor-column:hover .elementor-widget-icon .elementor-icon {
    transform: scale(1.15);
}

/* ==============================================
   Sections — Body text improvements
   ============================================== */
.elementor-widget-text-editor {
    font-family: 'Open Sans', sans-serif;
    line-height: 1.8;
}

/* ==============================================
   Testimonials Carousel
   ============================================== */
.esf-testimonials-carousel,
.esf-refs-carousel {
    position: relative;
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 20px;
    overflow: visible;
}
.esf-swiper-testimonials,
.esf-swiper-refs {
    overflow: hidden !important;
    padding: 30px 0 50px;
}

/* Coverflow visibility for all 3 carousels */
.esf-swiper-testimonials .swiper-slide,
.esf-swiper-refs .swiper-slide {
    transition: opacity 0.5s ease, transform 0.5s ease, filter 0.5s ease;
    opacity: 0 !important;
    pointer-events: none;
    width: 40%;
}
.esf-swiper-testimonials .swiper-slide-active,
.esf-swiper-refs .swiper-slide-active {
    opacity: 1 !important;
    filter: brightness(1) !important;
    z-index: 10;
    pointer-events: auto;
    transform: translateZ(0) scale(1.08);
}
.esf-swiper-testimonials .swiper-slide-prev,
.esf-swiper-testimonials .swiper-slide-next,
.esf-swiper-refs .swiper-slide-prev,
.esf-swiper-refs .swiper-slide-next {
    opacity: 0.6 !important;
    filter: brightness(.75);
    pointer-events: auto;
}

/* --- Testimonial Card --- */
.esf-testimonial-card {
    background: #FFFFFF;
    border-radius: 16px;
    box-shadow: 0 8px 30px rgba(0,0,0,0.08);
    padding: 30px 25px;
    height: 100%;
    display: flex;
    flex-direction: column;
    transition: box-shadow 0.4s ease, transform 0.4s ease;
}
.swiper-slide-active .esf-testimonial-card {
    box-shadow: 0 15px 50px rgba(0,0,0,0.15);
    transform: scale(1.05);
}
.esf-testimonial-stars {
    color: #F59E0B;
    font-size: 20px;
    letter-spacing: 3px;
    margin-bottom: 15px;
}
.esf-testimonial-text {
    color: #4A5568;
    font-family: 'Open Sans', sans-serif;
    font-size: 14px;
    line-height: 1.7;
    font-style: italic;
    flex: 1;
    margin: 0 0 20px 0;
}
.esf-testimonial-author {
    border-top: 1px solid #E2E8F0;
    padding-top: 15px;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.esf-testimonial-name {
    font-family: 'Montserrat', sans-serif;
    font-weight: 700;
    font-size: 14px;
    color: #1E3A5F;
}
.esf-testimonial-meta {
    font-size: 12px;
    color: #A0AEC0;
}

/* ==============================================
   References Carousel — Photo bg + orange overlay
   ============================================== */
.esf-ref-card {
    display: block;
    text-decoration: none;
    color: inherit;
    position: relative;
    border-radius: 16px;
    overflow: hidden;
    height: 280px;
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    box-shadow: 0 8px 30px rgba(0,0,0,0.12);
    transition: box-shadow 0.4s ease, transform 0.4s ease;
}
.swiper-slide-active .esf-ref-card {
    box-shadow: 0 15px 50px rgba(0,0,0,0.2);
    transform: scale(1.05);
}
.esf-ref-overlay {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    background: linear-gradient(to top, rgba(245, 158, 11, 0.95) 0%, rgba(245, 158, 11, 0.85) 70%, transparent 100%);
    padding: 20px 20px 16px;
    text-align: center;
}
.esf-ref-title {
    font-family: 'Montserrat', sans-serif;
    font-weight: 800;
    font-size: 20px;
    color: #FFFFFF;
    margin: 0 0 4px 0;
    text-shadow: 0 1px 3px rgba(0,0,0,0.2);
}
.esf-ref-location {
    font-family: 'Open Sans', sans-serif;
    font-size: 13px;
    color: #FFFFFF;
    font-weight: 600;
    margin: 0;
    text-shadow: 0 1px 2px rgba(0,0,0,0.15);
}
.esf-ref-location i {
    margin-right: 4px;
}
@media (max-width: 767px) {
    .esf-ref-card {
        height: 220px;
    }
    .esf-ref-title {
        font-size: 16px;
    }
}

/* ==============================================
   Section "Qui sommes-nous ?" (2 columns)
   ============================================== */
/* Founder photo */
.elementor-element-qui_photo img {
    border-radius: 12px;
    box-shadow: 0 8px 25px rgba(30, 58, 95, 0.15);
    width: 100%;
    height: auto;
    object-fit: cover;
}
/* Founder name */
.elementor-element-qui_name .elementor-heading-title {
    font-family: 'Montserrat', sans-serif;
    color: #1E3A5F;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 1.5px;
    text-transform: uppercase;
}
/* Founder role */
.elementor-element-qui_role .elementor-heading-title {
    font-family: 'Montserrat', sans-serif;
    color: #F59E0B;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 2px;
    text-transform: uppercase;
}
/* Founder text */
.elementor-element-qui_text p {
    color: #2D3748;
    font-size: 15px;
    line-height: 1.8;
    margin-bottom: 12px;
}
/* Inner section layout */
.elementor-element-qui_inner > .elementor-container {
    align-items: flex-start;
}
/* Mobile: stack columns */
@media (max-width: 767px) {
    .elementor-element-qui_left {
        text-align: center;
        margin-bottom: 30px;
    }
    .elementor-element-qui_photo img {
        max-width: 250px;
        margin: 0 auto;
    }
    .elementor-element-qui_text p {
        font-size: 14px;
    }
}

/* ==============================================
   Section Contact "Un café, un thé…"
   ============================================== */
/* Contact location cards */
.elementor-element-cafe_left,
.elementor-element-cafe_right {
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.elementor-element-cafe_left:hover,
.elementor-element-cafe_right:hover {
    transform: translateY(-4px);
    box-shadow: 0 12px 40px rgba(0,0,0,0.12) !important;
}
.elementor-element-cafe_siege_img img,
.elementor-element-cafe_agence_img img {
    width: 100%;
    height: 160px;
    object-fit: cover;
    border-radius: 16px 16px 0 0;
}
/* CTA center column */
.elementor-element-cafe_center {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
}
/* CTA button */
.elementor-element-cafe_btn .elementor-button {
    box-shadow: 0 4px 15px rgba(245,158,11,0.4);
    transition: all 0.3s ease;
}
.elementor-element-cafe_btn .elementor-button:hover {
    box-shadow: 0 6px 25px rgba(245,158,11,0.5);
    transform: translateY(-2px);
}
@media (max-width: 767px) {
    .elementor-element-cafe_inner > .elementor-container {
        flex-direction: column;
    }
    .elementor-element-cafe_center {
        order: -1;
        margin-bottom: 25px;
    }
    .elementor-element-cafe_left,
    .elementor-element-cafe_right {
        margin-bottom: 20px;
    }
}

/* ==============================================
   Alternating section backgrounds
   ============================================== */
.elementor-section > .elementor-container {
    max-width: 100%;
}

/* ==============================================
   Scroll Reveal Animation
   ============================================== */
.esf-reveal {
    opacity: 0;
    transform: translateY(30px);
    transition: opacity 0.6s ease, transform 0.6s ease;
}
.esf-reveal.revealed,
.elementor-editor-active .esf-reveal {
    opacity: 1;
    transform: translateY(0);
}

/* ==============================================
   Icon List Styling
   ============================================== */
.elementor-icon-list-item .elementor-icon-list-icon {
    transition: transform 0.3s ease;
}
.elementor-icon-list-item:hover .elementor-icon-list-icon {
    transform: scale(1.2);
}

/* ==============================================
   Responsive
   ============================================== */
@media (max-width: 1024px) {
    .esf-title-band .elementor-heading-title {
        font-size: 26px !important;
        padding: 10px 25px;
    }
}
@media (max-width: 767px) {
    .esf-title-band .elementor-heading-title {
        font-size: 20px !important;
        padding: 8px 20px;
    }
    .elementor-inner-section .elementor-inner-section {
        margin-bottom: 15px;
    }
}

/* ==============================================
   Elementor Animated Headline — Mobile word wrap
   ============================================== */
.elementor-headline-animation-type-typing .elementor-headline-dynamic-text {
    word-break: break-word;
    overflow-wrap: break-word;
}

/* ==============================================
   Section Title Bands — Template Pages
   ============================================== */
.esf-section-band {
    padding: 22px 30px;
    text-align: center;
    margin: 50px 0 30px;
    border-radius: 14px;
    box-sizing: border-box;
}
.esf-section-band h2,
.esf-section-band h3,
.esf-section-band h4,
.esf-section-band p,
.esf-section-band span {
    color: #FFFFFF !important;
}
.esf-section-band h2 {
    font-family: 'Montserrat', sans-serif;
    font-weight: 800;
    font-size: 28px !important;
    color: #FFFFFF !important;
    margin: 0;
    letter-spacing: 0.3px;
    line-height: 1.3;
    display: inline;
}
/* Curseur uniquement pendant l'animation typewriter */
.esf-section-band h2.esf-typing {
    border-right: 3px solid rgba(255,255,255,0.8);
    animation: esf-blink-cursor 0.7s step-end infinite;
}
.esf-section-band h2.esf-typed-done {
    border-right: none;
    animation: none;
}
.esf-section-band-orange {
    background: linear-gradient(135deg, #F59E0B, #D97706);
    box-shadow: 0 4px 20px rgba(245,158,11,0.25);
}
.esf-section-band-blue {
    background: linear-gradient(135deg, #1E3A5F, #2563EB);
    box-shadow: 0 4px 20px rgba(30,58,95,0.25);
}
/* First band on page should have less top margin */
.esf-page-wrap > .esf-section-band:first-child,
.esf-page-wrap > div:first-child + .esf-section-band {
    margin-top: 0;
}
/* Consecutive bands: tighter spacing */
.esf-section-band + .esf-section-band {
    margin-top: 0;
}
@media (max-width: 1024px) {
    .esf-section-band h2 {
        font-size: 26px !important;
    }
}
@media (max-width: 767px) {
    .esf-section-band {
        padding: 16px 18px;
        margin: 30px 0 20px;
        border-radius: 10px;
    }
    .esf-section-band h2 {
        font-size: 20px !important;
    }
}
@media (max-width: 480px) {
    .esf-section-band h2 {
        font-size: 17px !important;
    }
}

/* ==========================================================================
   RÉALISATIONS - Single & Archive Pages (v2.8.0)
   ========================================================================== */

/* --- Single Réalisation --- */
.esf-single-realisation {
    font-family: 'Open Sans', sans-serif;
    color: #333;
}

/* Hero */
.esf-real-hero {
    position: relative;
    height: 50vh;
    min-height: 350px;
    max-height: 500px;
    background-size: cover;
    background-position: center;
    background-color: #1a3a5c;
}
.esf-real-hero-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(to top, rgba(0,0,0,0.7) 0%, rgba(0,0,0,0.2) 60%, transparent 100%);
    display: flex;
    align-items: flex-end;
    padding: 40px 5%;
}
.esf-real-hero-content {
    max-width: 1000px;
    margin: 0 auto;
    width: 100%;
}
.esf-real-badge {
    display: inline-block;
    background: #ee6c00;
    color: #fff;
    font-family: 'Montserrat', sans-serif;
    font-weight: 600;
    font-size: 13px;
    padding: 5px 15px;
    border-radius: 20px;
    margin-bottom: 12px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}
.esf-real-hero-title {
    font-family: 'Montserrat', sans-serif;
    font-size: 36px;
    font-weight: 800;
    color: #fff;
    margin: 0 0 12px;
    line-height: 1.2;
}
.esf-real-hero-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 20px;
}
.esf-real-meta-item {
    color: rgba(255,255,255,0.9);
    font-size: 15px;
}
.esf-real-meta-item i {
    color: #ee6c00;
    margin-right: 6px;
}

/* Content Wrap */
.esf-real-content-wrap {
    max-width: 1000px;
    margin: 0 auto;
    padding: 50px 20px;
}

/* Info Cards */
.esf-real-info-cards {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 20px;
    margin-bottom: 50px;
}
.esf-real-info-card {
    background: #f8f9fa;
    border-radius: 12px;
    padding: 25px 20px;
    text-align: center;
    border: 1px solid #e9ecef;
    transition: transform 0.3s, box-shadow 0.3s;
}
.esf-real-info-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 8px 25px rgba(0,0,0,0.1);
}
.esf-real-info-icon {
    font-size: 28px;
    color: #ee6c00;
    margin-bottom: 10px;
}
.esf-real-info-icon .elementor-icon {
    color: #ee6c00;
}
.esf-real-info-icon .elementor-icon i,
.esf-real-info-icon .elementor-icon svg {
    font-size: 28px;
}
.esf-real-info-label {
    font-family: 'Montserrat', sans-serif;
    font-size: 12px;
    font-weight: 600;
    text-transform: uppercase;
    color: #999;
    letter-spacing: 1px;
    margin-bottom: 5px;
}
.esf-real-info-label .elementor-heading-title {
    font-family: inherit;
    font-size: inherit;
    font-weight: inherit;
    text-transform: inherit;
    color: inherit;
    letter-spacing: inherit;
    margin: 0;
}
.esf-real-info-value {
    font-family: 'Montserrat', sans-serif;
    font-size: 18px;
    font-weight: 700;
    color: #1a3a5c;
}
.esf-real-info-value .elementor-heading-title,
.esf-real-info-value .elementor-heading-title a {
    font-family: inherit;
    font-size: inherit;
    font-weight: inherit;
    color: inherit;
    margin: 0;
    text-decoration: none;
}

/* Body Content */
.esf-real-body {
    font-size: 16px;
    line-height: 1.8;
    margin-bottom: 50px;
}
.esf-real-body h2, .esf-real-body h3 {
    font-family: 'Montserrat', sans-serif;
    color: #1a3a5c;
    margin-top: 30px;
}
.esf-real-body img {
    max-width: 100%;
    height: auto;
    border-radius: 10px;
    margin: 20px 0;
}

/* Gallery */
.esf-real-gallery {
    margin-bottom: 50px;
}
.esf-real-gallery-title {
    font-family: 'Montserrat', sans-serif;
    font-size: 24px;
    font-weight: 700;
    color: #1a3a5c;
    margin-bottom: 20px;
}
.esf-real-gallery-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 15px;
}
.esf-real-gallery-item img {
    width: 100%;
    height: 200px;
    object-fit: cover;
    border-radius: 10px;
    transition: transform 0.3s;
}
.esf-real-gallery-item:hover img {
    transform: scale(1.03);
}

/* CTA */
.esf-real-cta {
    text-align: center;
    background: linear-gradient(135deg, #1a3a5c 0%, #2a5a8c 100%);
    border-radius: 16px;
    padding: 50px 40px;
    margin: 50px 0 40px;
    color: #fff;
    position: relative;
    overflow: hidden;
}
.esf-real-cta::before {
    content: '';
    position: absolute;
    top: -50%;
    right: -10%;
    width: 300px;
    height: 300px;
    background: radial-gradient(circle, rgba(238,108,0,0.15) 0%, transparent 70%);
    border-radius: 50%;
    pointer-events: none;
}
.esf-real-cta::after {
    content: '';
    position: absolute;
    bottom: -30%;
    left: -5%;
    width: 200px;
    height: 200px;
    background: radial-gradient(circle, rgba(245,158,11,0.1) 0%, transparent 70%);
    border-radius: 50%;
    pointer-events: none;
}
.esf-real-cta > * {
    position: relative;
    z-index: 1;
}
.esf-real-cta h3 {
    font-family: 'Montserrat', sans-serif;
    font-size: 26px;
    font-weight: 700;
    margin: 0 0 12px;
    color: #fff;
}
.esf-real-cta p {
    font-size: 16px;
    opacity: 0.9;
    margin-bottom: 25px;
    max-width: 600px;
    margin-left: auto;
    margin-right: auto;
}
.esf-real-cta-btn {
    display: inline-block;
    background: #ee6c00;
    color: #fff !important;
    font-family: 'Montserrat', sans-serif;
    font-weight: 700;
    font-size: 16px;
    padding: 14px 35px;
    border-radius: 30px;
    text-decoration: none !important;
    transition: background 0.3s, transform 0.3s;
}
.esf-real-cta-btn:hover {
    background: #ff8c2a;
    transform: translateY(-2px);
}
.esf-real-cta-phone {
    display: block;
    margin-top: 12px;
    font-size: 14px;
    opacity: 0.7;
}

/* Navigation */
.esf-real-nav {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 15px;
    padding-top: 30px;
    border-top: 1px solid #e9ecef;
}
.esf-real-nav-link {
    font-family: 'Montserrat', sans-serif;
    font-weight: 600;
    font-size: 14px;
    color: #1a3a5c !important;
    text-decoration: none !important;
    padding: 10px 18px;
    border-radius: 8px;
    transition: background 0.3s;
}
.esf-real-nav-link:hover {
    background: #f0f4f8;
}
.esf-real-nav-link i {
    color: #ee6c00;
}
.esf-real-nav-prev { text-align: left; }
.esf-real-nav-next { text-align: right; }
.esf-real-nav-all {
    background: #f0f4f8;
}

/* --- Archive Réalisations --- */
.esf-archive-realisations {
    font-family: 'Open Sans', sans-serif;
}

/* Archive Hero */
.esf-archive-hero {
    background: linear-gradient(135deg, #1a3a5c 0%, #2a5a8c 50%, #ee6c00 100%);
    padding: 240px 20px 110px;
    min-height: 70vh;
    display: flex;
    align-items: flex-start;
    justify-content: center;
    text-align: center;
}

.esf-archive-hero-overlay {
    width: 100%;
    max-width: 900px;
    margin: 0 auto;
}

/* Hero archive aligné avec les autres pages (header fixe + hero bleed) */
@media (min-width: 1025px) {
    .esf-archive-hero {
        margin-top: -140px;
    }
    .admin-bar .esf-archive-hero {
        margin-top: 0;
        padding-top: 180px;
        min-height: 64vh;
    }
    .esf-archive-hero-overlay {
        margin-top: 140px;
    }
    .admin-bar .esf-archive-hero-overlay {
        margin-top: 0;
    }
}

@media (min-width: 768px) and (max-width: 1024px) {
    .esf-archive-hero {
        padding-top: 140px;
        padding-bottom: 80px;
        min-height: 58vh;
        align-items: flex-start;
    }
    .esf-archive-hero-overlay {
        margin-top: 70px;
    }
    .admin-bar .esf-archive-hero {
        margin-top: 0;
        padding-top: 140px;
    }
    .admin-bar .esf-archive-hero-overlay {
        margin-top: 0;
    }
}

@media (max-width: 767px) {
    .esf-archive-hero {
        padding-top: 120px;
        padding-bottom: 60px;
        min-height: 48vh;
        align-items: flex-start;
    }
    .esf-archive-hero-overlay {
        margin-top: 40px;
    }
    .admin-bar .esf-archive-hero {
        margin-top: 0;
        padding-top: 120px;
    }
    .admin-bar .esf-archive-hero-overlay {
        margin-top: 0;
    }
}
.esf-archive-hero-title {
    font-family: 'Montserrat', sans-serif;
    font-size: 42px;
    font-weight: 800;
    color: #fff;
    margin: 0 0 12px;
}
.esf-archive-hero-sub {
    font-size: 18px;
    color: rgba(255,255,255,0.85);
    max-width: 600px;
    margin: 0 auto;
}

/* Filter Bar */
.esf-archive-filters {
    background: #f8f9fa;
    border-bottom: 1px solid #e9ecef;
    padding: 15px 20px;
    position: sticky;
    top: 0;
    z-index: 50;
}
.esf-archive-filters-inner {
    max-width: 1000px;
    margin: 0 auto;
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    justify-content: center;
}
.esf-filter-btn {
    font-family: 'Montserrat', sans-serif;
    font-weight: 600;
    font-size: 13px;
    padding: 8px 18px;
    border-radius: 20px;
    background: #fff;
    color: #555;
    border: 1px solid #ddd;
    text-decoration: none !important;
    transition: all 0.3s;
}
.esf-filter-btn:hover, .esf-filter-btn.active {
    background: #ee6c00;
    color: #fff !important;
    border-color: #ee6c00;
}

/* Archive Grid */
.esf-archive-grid-wrap {
    max-width: 1100px;
    margin: 0 auto;
    padding: 40px 20px;
}
.esf-archive-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    gap: 25px;
}
.esf-archive-card {
    background: #fff;
    border-radius: 14px;
    overflow: hidden;
    box-shadow: 0 3px 15px rgba(0,0,0,0.08);
    text-decoration: none !important;
    transition: transform 0.3s, box-shadow 0.3s;
    display: block;
}
.esf-archive-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 12px 35px rgba(0,0,0,0.15);
}
.esf-archive-card-img {
    position: relative;
    height: 220px;
    background-size: cover;
    background-position: center;
    background-color: #e0e0e0;
}
.esf-archive-card-badge {
    position: absolute;
    top: 12px;
    left: 12px;
    background: rgba(238,108,0,0.9);
    color: #fff;
    font-family: 'Montserrat', sans-serif;
    font-weight: 600;
    font-size: 11px;
    padding: 4px 12px;
    border-radius: 15px;
    text-transform: uppercase;
}
.esf-archive-card-overlay {
    display: flex;
    justify-content: space-between;
    align-items: center;
    background: linear-gradient(135deg, #ee6c00 0%, #ff8c2a 100%);
    padding: 12px 18px;
    color: #fff;
}
.esf-archive-card-power {
    font-family: 'Montserrat', sans-serif;
    font-weight: 800;
    font-size: 20px;
}
.esf-archive-card-location {
    font-family: 'Montserrat', sans-serif;
    font-weight: 600;
    font-size: 14px;
    text-align: right;
}
.esf-archive-card-location small {
    opacity: 0.85;
    font-weight: 400;
}
.esf-archive-card-title {
    padding: 15px 18px;
    font-family: 'Montserrat', sans-serif;
    font-weight: 600;
    font-size: 15px;
    color: #1a3a5c;
}

/* Empty State */
.esf-archive-empty {
    grid-column: 1 / -1;
    text-align: center;
    padding: 60px 20px;
    color: #999;
}
.esf-archive-empty i {
    font-size: 48px;
    margin-bottom: 15px;
    display: block;
}

/* Pagination */
.esf-archive-pagination {
    text-align: center;
    margin-top: 40px;
}
.esf-archive-pagination .page-numbers {
    display: inline-block;
    padding: 10px 16px;
    margin: 0 3px;
    border-radius: 8px;
    font-family: 'Montserrat', sans-serif;
    font-weight: 600;
    font-size: 14px;
    color: #1a3a5c;
    background: #f0f4f8;
    text-decoration: none;
    transition: all 0.3s;
}
.esf-archive-pagination .page-numbers.current,
.esf-archive-pagination .page-numbers:hover {
    background: #ee6c00;
    color: #fff;
}

/* Archive CTA */
.esf-archive-cta {
    text-align: center;
    background: linear-gradient(135deg, #1a3a5c 0%, #2a5a8c 100%);
    border-radius: 16px;
    padding: 50px 30px;
    color: #fff;
    max-width: 800px;
    margin: 20px auto 50px;
}
.esf-archive-cta h3 {
    font-family: 'Montserrat', sans-serif;
    font-size: 26px;
    font-weight: 700;
    margin: 0 0 10px;
    color: #fff;
}
.esf-archive-cta p {
    font-size: 16px;
    opacity: 0.9;
    margin-bottom: 25px;
}

/* --- Responsive --- */
@media (max-width: 768px) {
    .esf-real-hero {
        height: 40vh;
        min-height: 280px;
    }
    .esf-real-hero-title {
        font-size: 26px;
    }
    .esf-real-hero-meta {
        gap: 12px;
    }
    .esf-real-info-cards {
        grid-template-columns: repeat(2, 1fr);
    }
    .esf-real-nav {
        flex-direction: column;
        align-items: stretch;
        text-align: center;
    }
    .esf-archive-hero-title {
        font-size: 30px;
    }
    .esf-archive-grid {
        grid-template-columns: 1fr;
    }
    #esf-archive-map {
        height: 350px !important;
    }
}
@media (max-width: 480px) {
    .esf-real-info-cards {
        grid-template-columns: 1fr;
    }
    .esf-archive-card-overlay {
        flex-direction: column;
        text-align: center;
        gap: 5px;
    }
    .esf-archive-card-location {
        text-align: center;
    }
}

/* ==========================================================================
   MAP — Leaflet carte dynamique (v2.9.0)
   ========================================================================== */

/* Archive Map Section */
.esf-archive-map-section {
    max-width: 1100px;
    margin: -30px auto 30px;
    padding: 0 20px;
    position: relative;
    z-index: 10;
}
.esf-archive-map-header {
    background: #fff;
    border-radius: 16px 16px 0 0;
    padding: 25px 30px 15px;
    box-shadow: 0 -5px 20px rgba(0,0,0,0.08);
}
.esf-archive-map-header h2 {
    font-family: 'Montserrat', sans-serif;
    font-size: 22px;
    font-weight: 700;
    color: #1a3a5c;
    margin: 0 0 5px;
}
.esf-archive-map-header h2 i {
    color: #ee6c00;
    margin-right: 8px;
}
.esf-archive-map-header p {
    font-size: 14px;
    color: #94a3b8;
    margin: 0;
}
#esf-archive-map {
    height: 450px;
    border-radius: 0 0 16px 16px;
    box-shadow: 0 5px 20px rgba(0,0,0,0.08);
    z-index: 10;
}

/* Single Map */
.esf-real-map-section {
    margin-bottom: 50px;
}
.esf-real-map-section h3 i {
    color: #ee6c00;
    margin-right: 8px;
}
#esf-single-map {
    box-shadow: 0 3px 15px rgba(0,0,0,0.08);
}

/* Custom Map Pins */
.esf-map-pin-wrapper {
    background: none !important;
    border: none !important;
}
.esf-map-pin {
    width: 36px;
    height: 36px;
    border-radius: 50% 50% 50% 0;
    transform: rotate(-45deg);
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 3px 10px rgba(0,0,0,0.3);
}
.esf-map-pin i {
    transform: rotate(45deg);
    color: #fff;
    font-size: 14px;
}

/* Cluster Icons */
.esf-cluster {
    background: none !important;
}
.esf-cluster-icon {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: #ee6c00;
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: 'Montserrat', sans-serif;
    font-weight: 800;
    font-size: 15px;
    box-shadow: 0 3px 12px rgba(238,108,0,0.4);
    border: 3px solid #fff;
}

/* Map Popup */
.esf-map-popup {
    display: flex;
    gap: 12px;
    min-width: 220px;
}
.esf-map-popup img {
    width: 70px;
    height: 70px;
    object-fit: cover;
    border-radius: 8px;
    flex-shrink: 0;
}
.esf-map-popup-body {
    display: flex;
    flex-direction: column;
    gap: 3px;
}
.esf-map-popup-body strong {
    font-family: 'Montserrat', sans-serif;
    font-size: 16px;
    color: #1a3a5c;
}
.esf-map-popup-body span {
    font-size: 13px;
    color: #64748b;
}
.esf-map-popup-body a {
    font-size: 13px;
    font-weight: 600;
    color: #ee6c00 !important;
    text-decoration: none !important;
    margin-top: 4px;
}
.esf-map-popup-body a:hover {
    text-decoration: underline !important;
}
.leaflet-popup-content-wrapper {
    border-radius: 12px !important;
    box-shadow: 0 5px 20px rgba(0,0,0,0.15) !important;
}
.leaflet-popup-content {
    margin: 12px 14px !important;
}

/* Filter buttons with icons */
.esf-filter-btn i {
    margin-right: 4px;
    font-size: 12px;
}

/* ==========================================================================
   PAGES — Templates personnalisés (v3.0.0)
   ========================================================================== */

/* --- Page Hero --- */
.esf-page-hero {
    position: relative;
    min-height: 50vh;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding: 100px 20px 60px;
}
.esf-page-hero-small {
    min-height: 30vh;
    padding: 80px 20px 40px;
}
.esf-page-hero-img {
    background-size: cover;
    background-position: center;
    background-color: #1a3a5c;
}

/* --- Hero bleed : image derrière le header transparent (desktop seulement) ---
   Sur desktop, le hero remonte derrière le header fixe semi-transparent.
   Le padding-top de l'inner est forcé à ≥140px pour que les textes
   restent visibles en dessous du header.
   Sur tablette/mobile, le body a déjà padding-top:80px → pas de bleed. */
@media (min-width: 1025px) {
    .esf-page-hero-section {
        margin-top: -140px; /* tire le hero derrière le header */
    }
    /* Avec la barre d'admin (header décalé de 32px supplémentaires) */
    .admin-bar .esf-page-hero-section {
        margin-top: -172px;
    }
}
.esf-page-hero-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(135deg, rgba(26,58,92,0.85) 0%, rgba(42,90,140,0.75) 50%, rgba(238,108,0,0.7) 100%);
    display: flex;
    align-items: center;
    justify-content: center;
}
.esf-page-hero-content {
    position: relative;
    z-index: 2;
    max-width: 800px;
}
.esf-page-hero-title {
    font-family: 'Montserrat', sans-serif;
    font-size: 42px;
    font-weight: 800;
    color: #fff;
    margin: 0 0 12px;
    line-height: 1.2;
}
.esf-page-hero-title i {
    margin-right: 10px;
    opacity: 0.8;
}
.esf-page-hero-sub {
    font-size: 18px;
    color: rgba(255,255,255,0.9);
    margin: 0;
    font-family: 'Open Sans', sans-serif;
    line-height: 1.6;
}
.esf-page-badge {
    display: inline-block;
    background: rgba(238,108,0,0.9);
    color: #fff;
    font-family: 'Montserrat', sans-serif;
    font-weight: 600;
    font-size: 13px;
    padding: 6px 18px;
    border-radius: 20px;
    margin-bottom: 15px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

/* --- Page Content Wrap --- */
.esf-page-wrap {
    max-width: 1100px;
    margin: 0 auto;
    padding: 50px 20px 60px;
}

/* --- Page CTA (reuses real-cta pattern) --- */
.esf-page-cta {
    text-align: center;
    background: linear-gradient(135deg, #1a3a5c 0%, #2a5a8c 100%);
    border-radius: 16px;
    padding: 50px 40px;
    color: #fff;
    margin: 50px 0 40px;
}
.esf-page-cta h3 {
    font-family: 'Montserrat', sans-serif;
    font-size: 26px;
    font-weight: 700;
    margin: 0 0 12px;
    color: #fff;
}
.esf-page-cta p {
    font-size: 16px;
    opacity: 0.9;
    margin-bottom: 25px;
    max-width: 600px;
    margin-left: auto;
    margin-right: auto;
}
.esf-page-cta-btn {
    display: inline-block;
    background: #ee6c00;
    color: #fff !important;
    font-family: 'Montserrat', sans-serif;
    font-weight: 700;
    font-size: 16px;
    padding: 14px 35px;
    border-radius: 30px;
    text-decoration: none !important;
    border: none;
    cursor: pointer;
    transition: background 0.3s, transform 0.3s;
}
.esf-page-cta-btn:hover {
    background: #ff8c2a;
    transform: translateY(-2px);
}
.esf-page-cta-phone {
    display: block;
    margin-top: 12px;
    font-size: 14px;
    opacity: 0.7;
    color: #fff;
}

/* --- Page Content Block --- */
.esf-page-content-block {
    font-size: 16px;
    line-height: 1.8;
    color: #2d3748;
}
.esf-page-content-block h2 {
    font-family: 'Montserrat', sans-serif;
    font-size: 28px;
    font-weight: 700;
    color: #1a3a5c;
    margin: 40px 0 15px;
}
.esf-page-content-block h3 {
    font-family: 'Montserrat', sans-serif;
    font-size: 22px;
    font-weight: 600;
    color: #2a5a8c;
    margin: 25px 0 10px;
}
.esf-page-content-block img {
    max-width: 100%;
    height: auto;
    border-radius: 12px;
    margin: 20px 0;
    box-shadow: 0 5px 20px rgba(0,0,0,0.1);
}
.esf-page-content-block ul {
    padding-left: 20px;
}
.esf-page-content-block li {
    margin-bottom: 8px;
}

/* ==============================================
   Nos Atouts — Cards Grid
   ============================================== */
.esf-atouts-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    gap: 25px;
    margin-bottom: 20px;
}
.esf-atout-card {
    background: #fff;
    border-radius: 16px;
    padding: 35px 25px;
    text-align: center;
    box-shadow: 0 3px 15px rgba(0,0,0,0.08);
    border: 1px solid #f0f0f0;
    transition: transform 0.3s, box-shadow 0.3s;
}
.esf-atout-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 12px 35px rgba(0,0,0,0.12);
}
.esf-atout-icon {
    width: 70px;
    height: 70px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 0 auto 20px;
    font-size: 28px;
}
.esf-atout-title {
    font-family: 'Montserrat', sans-serif;
    font-size: 17px;
    font-weight: 700;
    color: #1a3a5c;
    text-transform: uppercase;
    margin: 0 0 12px;
    letter-spacing: 0.3px;
}
.esf-atout-desc {
    font-family: 'Open Sans', sans-serif;
    font-size: 14px;
    line-height: 1.7;
    color: #718096;
    margin: 0;
}

/* ==============================================
   Climatisation
   ============================================== */
.esf-clim-image {
    text-align: center;
    margin: 30px 0;
}
.esf-clim-image img {
    max-width: 600px;
    width: 100%;
    border-radius: 12px;
    box-shadow: 0 5px 25px rgba(0,0,0,0.1);
}
.esf-clim-highlight {
    background: #f0f7ff;
    border-left: 4px solid #2a5a8c;
    padding: 20px 25px;
    border-radius: 0 12px 12px 0;
    font-size: 16px;
    line-height: 1.7;
    margin: 30px 0;
}

/* ==============================================
   Tierra Madre
   ============================================== */
.esf-tierra-section {
    margin-bottom: 50px;
    padding-bottom: 50px;
    border-bottom: 1px solid #e9ecef;
}
.esf-tierra-section:last-of-type {
    border-bottom: none;
}
.esf-tierra-section h2 {
    font-family: 'Montserrat', sans-serif;
    font-size: 30px;
    font-weight: 800;
    color: #1a3a5c;
    margin: 0 0 20px;
}
.esf-tierra-section h3 {
    font-family: 'Montserrat', sans-serif;
    font-size: 20px;
    font-weight: 700;
    color: #2a5a8c;
    margin: 30px 0 10px;
}
.esf-tierra-section p {
    font-size: 16px;
    line-height: 1.8;
    color: #2d3748;
    text-align: justify;
}
.esf-tierra-section ul {
    padding-left: 20px;
    margin: 15px 0;
}
.esf-tierra-section li {
    font-size: 16px;
    margin-bottom: 8px;
    color: #2d3748;
}
.esf-tierra-label {
    display: inline-block;
    background: linear-gradient(135deg, #10b981, #059669);
    color: #fff;
    font-family: 'Montserrat', sans-serif;
    font-weight: 600;
    font-size: 12px;
    padding: 5px 15px;
    border-radius: 15px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 12px;
}
.esf-tierra-highlight {
    background: linear-gradient(135deg, #f0fdf4, #dcfce7);
    border-left: 4px solid #10b981;
    padding: 20px 25px;
    border-radius: 0 12px 12px 0;
    font-family: 'Montserrat', sans-serif;
    font-weight: 700;
    font-size: 16px;
    color: #1a3a5c;
    margin: 25px 0;
}
.esf-tierra-highlight i {
    color: #10b981;
    margin-right: 8px;
}
.esf-tierra-quote {
    background: #f8f9fa;
    border-left: 4px solid #ee6c00;
    padding: 25px 30px;
    border-radius: 0 12px 12px 0;
    font-style: italic;
    font-size: 15px;
    line-height: 1.8;
    color: #4a5568;
    margin: 30px 0;
}
.esf-tierra-quote cite {
    display: block;
    margin-top: 12px;
    font-style: normal;
    font-weight: 600;
    font-size: 13px;
    color: #ee6c00;
}
.esf-tierra-footnote {
    font-size: 13px;
    color: #999;
    font-style: italic;
    margin-top: 20px;
}

/* Hero logo & button */
.esf-tierra-hero-logo {
    max-width: 280px;
    margin-bottom: 30px;
    filter: drop-shadow(0 2px 8px rgba(0,0,0,.4));
}
.esf-page-hero-btn {
    display: inline-block;
    margin-top: 25px;
    padding: 14px 40px;
    background: #ee6c00;
    color: #fff !important;
    font-family: 'Montserrat', sans-serif;
    font-weight: 700;
    font-size: 14px;
    letter-spacing: 2px;
    text-decoration: none;
    border-radius: 50px;
    transition: transform .3s, box-shadow .3s;
}
.esf-page-hero-btn:hover {
    transform: translateY(-3px);
    box-shadow: 0 6px 20px rgba(238,108,0,.5);
}

/* Tierra Madre gallery (fermez les yeux section) */
.esf-tierra-gallery .e-gallery-item {
    border-radius: 12px;
    overflow: hidden;
}

/* Featured image (arbre, forêt) */
.esf-tierra-featured-img img {
    border-radius: 12px;
    width: 100%;
    max-height: 500px;
    object-fit: cover;
    margin: 20px 0 30px;
}

/* Google Maps wrapper */
.esf-tierra-map-wrap {
    margin: 10px 0 30px;
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 4px 20px rgba(0,0,0,.1);
}

/* Niveaulogie diagram */
.esf-tierra-niveaulogie img {
    max-width: 100%;
    margin: 30px auto;
    display: block;
}

/* Faune section */
.esf-tierra-faune {
    padding-bottom: 30px !important;
}

/* Carousel styling */
.esf-tierra-carousel .swiper-slide-image {
    border-radius: 10px;
    transition: transform .3s ease;
}
.esf-tierra-carousel .swiper-slide:hover .swiper-slide-image {
    transform: scale(1.03);
}
.esf-tierra-carousel .elementor-swiper-button {
    background: rgba(26, 58, 92, .8);
    border-radius: 50%;
    width: 40px;
    height: 40px;
    color: #fff;
}
.esf-tierra-carousel .swiper-pagination-bullet-active {
    background: #ee6c00;
}

@media (max-width: 767px) {
    .esf-tierra-hero-logo { max-width: 180px; }
    .esf-tierra-featured-img img { max-height: 300px; }
    .esf-tierra-map-wrap iframe { height: 250px; }
}

/* ==============================================
   Avis Clients
   ============================================== */
.esf-avis-stars {
    text-align: center;
    margin-bottom: 40px;
}
.esf-avis-stars-row {
    font-size: 36px;
    color: #f59e0b;
    margin-bottom: 10px;
}
.esf-avis-stars-row i {
    margin: 0 3px;
}
.esf-avis-stars-text {
    font-family: 'Montserrat', sans-serif;
    font-size: 18px;
    color: #4a5568;
}
.esf-avis-featured {
    background: #fff;
    border-radius: 16px;
    padding: 35px 30px;
    box-shadow: 0 3px 15px rgba(0,0,0,0.08);
    border: 1px solid #f0f0f0;
    margin-bottom: 40px;
    text-align: center;
}
.esf-avis-featured-icon {
    font-size: 42px;
    color: #4285f4;
    margin-bottom: 20px;
}
.esf-avis-featured blockquote {
    font-size: 16px;
    line-height: 1.8;
    color: #4a5568;
    font-style: italic;
    margin: 0;
    padding: 0;
    border: none;
}
.esf-avis-widget {
    text-align: center;
    padding: 30px;
    background: #f8f9fa;
    border-radius: 16px;
    margin-bottom: 20px;
}
.esf-avis-widget p {
    font-size: 16px;
    color: #4a5568;
    margin: 0;
}

/* ==============================================
   Contact
   ============================================== */
.esf-contact-quick {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
    gap: 20px;
    margin-bottom: 40px;
}
.esf-contact-quick-item {
    background: #fff;
    border-radius: 14px;
    padding: 30px 25px;
    text-align: center;
    box-shadow: 0 3px 15px rgba(0,0,0,0.08);
    border: 1px solid #f0f0f0;
    text-decoration: none !important;
    transition: transform 0.3s, box-shadow 0.3s;
    display: block;
}
.esf-contact-quick-item:hover {
    transform: translateY(-4px);
    box-shadow: 0 10px 30px rgba(0,0,0,0.12);
}
.esf-contact-quick-icon {
    font-size: 32px;
    color: #ee6c00;
    margin-bottom: 12px;
}
.esf-contact-quick-icon .elementor-icon,
.esf-contact-address-header .elementor-icon {
    color: #ee6c00;
}
.esf-contact-quick-icon .elementor-icon i,
.esf-contact-quick-icon .elementor-icon svg {
    font-size: 32px;
}
.esf-contact-quick-label {
    font-family: 'Montserrat', sans-serif;
    font-size: 12px;
    font-weight: 600;
    text-transform: uppercase;
    color: #999;
    letter-spacing: 1px;
    margin-bottom: 5px;
}
.esf-contact-quick-label .elementor-heading-title {
    font-family: inherit;
    font-size: inherit;
    font-weight: inherit;
    text-transform: inherit;
    color: inherit;
    letter-spacing: inherit;
    margin: 0;
}
.esf-contact-quick-value {
    font-family: 'Montserrat', sans-serif;
    font-size: 16px;
    font-weight: 700;
    color: #1a3a5c;
}
.esf-contact-quick-value .elementor-heading-title,
.esf-contact-quick-value .elementor-heading-title a {
    font-family: inherit;
    font-size: inherit;
    font-weight: inherit;
    color: inherit;
    margin: 0;
    text-decoration: none;
}

.esf-contact-addresses {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
    column-gap: 25px;
    row-gap: 18px; /* espace partagé entre les sous-blocs via subgrid */
    margin-bottom: 50px;
}
.esf-contact-address-card {
    background: #fff;
    border-radius: 16px;
    padding: 30px;
    box-shadow: 0 3px 15px rgba(0,0,0,0.08);
    border: 1px solid #f0f0f0;
    /* Subgrid : chaque carte s'étend sur 4 rangées partagées →
       header / adresse / horaires / map s'alignent entre les 2 colonnes */
    grid-row: span 4;
    display: grid;
    grid-template-rows: subgrid;
}
/* Supprimer les marges-bas des enfants : le row-gap du parent les remplace */
.esf-contact-address-card > .esf-contact-address-header {
    margin-bottom: 0;
}
.esf-contact-address-card > .esf-contact-address-text {
    margin-bottom: 0;
}
.esf-contact-address-card > .esf-contact-hours {
    margin-bottom: 0;
}
.esf-contact-address-header {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 18px;
}
.esf-contact-address-header i {
    font-size: 24px;
    color: #ee6c00;
}
.esf-contact-address-header h3 {
    font-family: 'Montserrat', sans-serif;
    font-size: 20px;
    font-weight: 700;
    color: #1a3a5c;
    margin: 0;
}
.esf-contact-address-header .elementor-heading-title {
    font-family: inherit;
    font-size: inherit;
    font-weight: inherit;
    color: inherit;
    margin: 0;
}
.esf-contact-address-text {
    font-size: 15px;
    color: #4a5568;
    line-height: 1.7;
    margin-bottom: 15px;
}
.esf-contact-address-text .elementor-widget-container,
.esf-contact-address-text p {
    font-size: inherit;
    color: inherit;
    line-height: inherit;
    margin: 0;
}
.esf-contact-address-text i {
    color: #ee6c00;
    margin-right: 6px;
}
.esf-contact-hours {
    background: #f8f9fa;
    border-radius: 10px;
    padding: 15px 18px;
    margin-bottom: 15px;
}
.esf-contact-hours-title {
    font-family: 'Montserrat', sans-serif;
    font-weight: 700;
    font-size: 14px;
    color: #1a3a5c;
    margin: 0 0 8px;
}
.esf-contact-hours-title .elementor-heading-title {
    font-family: inherit;
    font-weight: inherit;
    font-size: inherit;
    color: inherit;
    margin: 0 0 8px;
}
.esf-contact-hours-title i {
    color: #ee6c00;
    margin-right: 6px;
}
.esf-contact-hours p {
    font-size: 14px;
    color: #4a5568;
    margin: 0;
    line-height: 1.6;
}
.esf-contact-hours .elementor-widget-text-editor,
.esf-contact-hours .elementor-widget-text-editor p {
    font-size: 14px;
    color: #4a5568;
    margin: 0;
    line-height: 1.6;
}
.esf-contact-map {
    margin-top: 15px;
}

/* Contact Form */
.esf-contact-form-section {
    margin-top: 50px;
}
.esf-contact-form-section h2 {
    font-family: 'Montserrat', sans-serif;
    font-size: 28px;
    font-weight: 700;
    color: #1a3a5c;
    margin: 0 0 10px;
}
.esf-contact-form-section h2 i {
    color: #ee6c00;
    margin-right: 8px;
}
.esf-contact-form-section > p {
    font-size: 16px;
    color: #718096;
    margin-bottom: 30px;
}
.esf-contact-form {
    background: #fff;
    border-radius: 16px;
    padding: 35px 30px;
    box-shadow: 0 3px 15px rgba(0,0,0,0.08);
    border: 1px solid #f0f0f0;
}
.esf-contact-form-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-bottom: 20px;
}
.esf-contact-form-field {
    display: flex;
    flex-direction: column;
}
.esf-contact-form-full {
    margin-bottom: 20px;
}
.esf-contact-form label {
    font-family: 'Montserrat', sans-serif;
    font-size: 13px;
    font-weight: 600;
    color: #1a3a5c;
    margin-bottom: 6px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}
.esf-contact-form input,
.esf-contact-form textarea {
    font-family: 'Open Sans', sans-serif;
    font-size: 15px;
    padding: 12px 15px;
    border: 1px solid #e2e8f0;
    border-radius: 8px;
    transition: border-color 0.3s, box-shadow 0.3s;
    outline: none;
    width: 100%;
    box-sizing: border-box;
}
.esf-contact-form input:focus,
.esf-contact-form textarea:focus {
    border-color: #ee6c00;
    box-shadow: 0 0 0 3px rgba(238,108,0,0.15);
}

/* ==============================================
   Parrainage
   ============================================== */
.esf-parrainage-intro {
    text-align: center;
    margin-bottom: 40px;
}
.esf-parrainage-intro-icon {
    font-size: 48px;
    color: #ee6c00;
    margin-bottom: 15px;
}
.esf-parrainage-intro h2 {
    font-family: 'Montserrat', sans-serif;
    font-size: 28px;
    font-weight: 700;
    color: #1a3a5c;
    margin: 0 0 12px;
}
.esf-parrainage-intro p {
    font-size: 16px;
    color: #718096;
}
.esf-parrainage-form-section {
    max-width: 700px;
    margin: 0 auto;
}
.esf-parrainage-form-label {
    font-family: 'Montserrat', sans-serif;
    font-size: 18px;
    font-weight: 700;
    color: #ee6c00;
    margin: 0 0 15px;
}
.esf-parrainage-form-label i {
    margin-right: 6px;
}

/* ==============================================
   Mentions Légales
   ============================================== */
.esf-legal-content {
    max-width: 800px;
    margin: 0 auto;
    font-size: 15px;
    line-height: 1.8;
    color: #4a5568;
}
.esf-legal-content h2 {
    font-family: 'Montserrat', sans-serif;
    font-size: 22px;
    font-weight: 700;
    color: #1a3a5c;
    margin: 35px 0 15px;
    padding-bottom: 8px;
    border-bottom: 2px solid #f0f0f0;
}
.esf-legal-content p {
    margin-bottom: 12px;
}
.esf-legal-content a {
    color: #ee6c00;
    text-decoration: none;
}
.esf-legal-content a:hover {
    text-decoration: underline;
}
.esf-legal-notice {
    text-align: center;
    font-size: 18px;
    color: #718096;
    padding: 40px 0;
}

/* ==============================================
   Actualités & Références — Grid
   ============================================== */
.esf-actu-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    gap: 25px;
    margin-bottom: 20px;
}
.esf-actu-card {
    background: #fff;
    border-radius: 14px;
    overflow: hidden;
    box-shadow: 0 3px 15px rgba(0,0,0,0.08);
    text-decoration: none !important;
    transition: transform 0.3s, box-shadow 0.3s;
    display: flex;
    flex-direction: column;
}
.esf-actu-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 12px 35px rgba(0,0,0,0.15);
}
.esf-actu-card-img {
    position: relative;
    height: 200px;
    background-size: cover;
    background-position: center;
    background-color: #e5e7eb;
}
.esf-actu-card-date {
    position: absolute;
    top: 12px;
    left: 12px;
    background: rgba(238,108,0,0.9);
    color: #fff;
    border-radius: 10px;
    padding: 8px 12px;
    text-align: center;
    line-height: 1.2;
}
.esf-actu-day {
    display: block;
    font-family: 'Montserrat', sans-serif;
    font-weight: 800;
    font-size: 22px;
}
.esf-actu-month {
    display: block;
    font-family: 'Montserrat', sans-serif;
    font-weight: 600;
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}
.esf-actu-card-badge {
    position: absolute;
    top: 12px;
    right: 12px;
    background: rgba(26,58,92,0.85);
    color: #fff;
    font-family: 'Montserrat', sans-serif;
    font-weight: 600;
    font-size: 11px;
    padding: 4px 12px;
    border-radius: 15px;
    text-transform: uppercase;
}
.esf-actu-card-body {
    padding: 18px;
    flex: 1;
    display: flex;
    flex-direction: column;
}
.esf-actu-card-title {
    font-family: 'Montserrat', sans-serif;
    font-size: 16px;
    font-weight: 700;
    color: #1a3a5c;
    margin: 0 0 10px;
    line-height: 1.4;
}
.esf-actu-card-excerpt {
    font-size: 14px;
    color: #718096;
    line-height: 1.6;
    flex: 1;
    margin: 0 0 12px;
}
.esf-actu-card-link {
    font-family: 'Montserrat', sans-serif;
    font-weight: 600;
    font-size: 13px;
    color: #ee6c00;
}
.esf-actu-card-link i {
    margin-left: 4px;
    transition: margin-left 0.3s;
}
.esf-actu-card:hover .esf-actu-card-link i {
    margin-left: 8px;
}

/* ==============================================
   Événements — Grid
   ============================================== */
.esf-events-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 20px;
}
.esf-event-card {
    background: #fff;
    border-radius: 14px;
    padding: 30px 25px;
    text-align: center;
    box-shadow: 0 3px 15px rgba(0,0,0,0.08);
    border: 1px solid #f0f0f0;
    text-decoration: none !important;
    transition: transform 0.3s, box-shadow 0.3s, border-color 0.3s;
    display: block;
}
.esf-event-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 12px 35px rgba(0,0,0,0.12);
    border-color: #ee6c00;
}
.esf-event-card-icon {
    font-size: 36px;
    color: #ee6c00;
    margin-bottom: 15px;
}
.esf-event-card-title {
    font-family: 'Montserrat', sans-serif;
    font-size: 17px;
    font-weight: 700;
    color: #1a3a5c;
    margin: 0 0 12px;
    line-height: 1.3;
}
.esf-event-card-link {
    font-family: 'Montserrat', sans-serif;
    font-weight: 600;
    font-size: 13px;
    color: #ee6c00;
}
.esf-event-card-link i {
    margin-left: 4px;
}

/* ==============================================
   Pages — Responsive
   ============================================== */
@media (max-width: 768px) {
    .esf-page-hero-title {
        font-size: 28px;
    }
    .esf-page-hero-sub {
        font-size: 15px;
    }
    .esf-atouts-grid {
        grid-template-columns: 1fr;
    }
    .esf-contact-form-row {
        grid-template-columns: 1fr;
    }
    /* Sur mobile, les cartes se superposent : on désactive le subgrid et on
       utilise flex pour l'espacement interne */
    .esf-contact-addresses {
        grid-template-columns: 1fr;
        row-gap: 25px;
    }
    .esf-contact-address-card {
        grid-row: auto;               /* chaque carte occupe 1 rang */
        grid-template-rows: none;     /* désactive subgrid */
        display: flex;
        flex-direction: column;
        gap: 18px;                    /* espacement interne via flex */
    }
    .esf-tierra-section h2 {
        font-size: 24px;
    }
    .esf-actu-grid {
        grid-template-columns: 1fr;
    }
    .esf-events-grid {
        grid-template-columns: 1fr;
    }
}

/* ==============================================
   SIMULATEUR PHOTOVOLTAÏQUE — Multi-step Wizard
   ============================================== */

.esf-sim {
    max-width: 800px;
    margin: 40px auto 60px;
    background: #ffffff;
    border-radius: 16px;
    box-shadow: 0 8px 40px rgba(0,0,0,0.08);
    padding: 0 0 30px;
    overflow: hidden;
}

/* Progress bar */
.esf-sim-progress {
    height: 6px;
    background: #e8ecf1;
    border-radius: 6px 6px 0 0;
    overflow: hidden;
}
.esf-sim-progress-bar {
    height: 100%;
    width: 14.28%;
    background: linear-gradient(90deg, #ee6c00, #F59E0B);
    border-radius: 0 3px 3px 0;
    transition: width 0.5s ease;
}
.esf-sim-step-indicator {
    text-align: center;
    padding: 18px 30px 0;
    font-family: 'Montserrat', sans-serif;
    font-size: 13px;
    font-weight: 600;
    color: #718096;
    letter-spacing: 0.5px;
}

/* Steps */
.esf-sim-step {
    display: none;
    padding: 20px 40px 30px;
    animation: esfSimFadeIn 0.4s ease;
}
.esf-sim-step.active {
    display: block;
}
@keyframes esfSimFadeIn {
    from { opacity: 0; transform: translateY(15px); }
    to   { opacity: 1; transform: translateY(0); }
}

.esf-sim-question {
    font-family: 'Montserrat', sans-serif;
    font-size: 24px;
    font-weight: 700;
    color: #1E3A5F;
    text-align: center;
    margin-bottom: 8px;
}
.esf-sim-hint {
    text-align: center;
    color: #718096;
    font-size: 15px;
    margin-bottom: 30px;
}

/* Choices grid */
.esf-sim-choices {
    display: grid;
    gap: 16px;
    justify-content: center;
}
.esf-sim-choices-2 { grid-template-columns: repeat(2, 1fr); max-width: 440px; margin: 0 auto; }
.esf-sim-choices-3 { grid-template-columns: repeat(3, 1fr); max-width: 560px; margin: 0 auto; }
.esf-sim-choices-4 { grid-template-columns: repeat(2, 1fr); max-width: 500px; margin: 0 auto; }

.esf-sim-choice {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 12px;
    padding: 28px 20px;
    background: #f8f9fa;
    border: 2px solid #e8ecf1;
    border-radius: 14px;
    cursor: pointer;
    transition: all 0.3s ease;
    font-family: 'Montserrat', sans-serif;
}
.esf-sim-choice:hover {
    border-color: #1E3A5F;
    background: #eef3f9;
    transform: translateY(-3px);
    box-shadow: 0 6px 20px rgba(30,58,95,0.12);
}
.esf-sim-choice.selected {
    border-color: #ee6c00;
    background: #fff8f0;
    box-shadow: 0 4px 16px rgba(238,108,0,0.15);
}
.esf-sim-choice-icon {
    font-size: 32px;
    color: #1E3A5F;
    width: 64px;
    height: 64px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #e8ecf1;
    border-radius: 50%;
    transition: all 0.3s ease;
}
.esf-sim-choice:hover .esf-sim-choice-icon {
    background: #1E3A5F;
    color: #ffffff;
}
.esf-sim-choice.selected .esf-sim-choice-icon {
    background: #ee6c00;
    color: #ffffff;
}
.esf-sim-choice-label {
    font-weight: 600;
    font-size: 15px;
    color: #1E3A5F;
}

/* Contact form */
.esf-sim-form {
    max-width: 600px;
    margin: 0 auto;
}
.esf-sim-form-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
    margin-bottom: 16px;
}
.esf-sim-form-field {
    display: flex;
    flex-direction: column;
}
.esf-sim-form-field label {
    font-family: 'Montserrat', sans-serif;
    font-weight: 600;
    font-size: 13px;
    color: #1E3A5F;
    margin-bottom: 6px;
}
.esf-sim-form-field input,
.esf-sim-form-field textarea {
    padding: 12px 16px;
    border: 2px solid #e8ecf1;
    border-radius: 10px;
    font-family: 'Open Sans', sans-serif;
    font-size: 15px;
    color: #2D3748;
    transition: border-color 0.3s ease;
    outline: none;
}
.esf-sim-form-field input:focus,
.esf-sim-form-field textarea:focus {
    border-color: #1E3A5F;
    box-shadow: 0 0 0 3px rgba(30,58,95,0.1);
}
.esf-sim-form-field input.esf-sim-invalid,
.esf-sim-form-field textarea.esf-sim-invalid {
    border-color: #e53e3e;
}
.esf-sim-form-full {
    margin-bottom: 20px;
}

/* Submit */
.esf-sim-submit {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    margin: 10px auto 0;
    padding: 16px 40px;
    background: linear-gradient(135deg, #ee6c00 0%, #F59E0B 100%);
    color: #ffffff;
    font-family: 'Montserrat', sans-serif;
    font-size: 16px;
    font-weight: 700;
    border: none;
    border-radius: 50px;
    cursor: pointer;
    transition: all 0.3s ease;
    text-decoration: none;
    width: fit-content;
}
.esf-sim-submit:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 25px rgba(238,108,0,0.3);
}

/* Back button */
.esf-sim-nav {
    padding: 0 40px;
}
.esf-sim-back {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 10px 24px;
    background: none;
    border: 2px solid #e8ecf1;
    border-radius: 50px;
    color: #718096;
    font-family: 'Montserrat', sans-serif;
    font-weight: 600;
    font-size: 14px;
    cursor: pointer;
    transition: all 0.3s ease;
}
.esf-sim-back:hover {
    border-color: #1E3A5F;
    color: #1E3A5F;
}

/* Result screen */
.esf-sim-result {
    padding: 20px 0;
}

/* Result header with check icon */
.esf-sim-result-header {
    display: flex;
    align-items: center;
    gap: 16px;
    margin-bottom: 32px;
}
.esf-sim-result-check {
    width: 48px;
    height: 48px;
    background: #e8ecf1;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}
.esf-sim-result-check i {
    font-size: 22px;
    color: #718096;
}
.esf-sim-result-title {
    font-family: 'Montserrat', sans-serif;
    font-size: 24px;
    font-weight: 800;
    color: #1E3A5F;
    margin: 0;
    text-align: left;
}

/* ── Solar panel: 2-column layout (map + KPIs) ── */
.esf-sim-solar-panel {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 32px;
    margin-bottom: 30px;
    text-align: left;
}
.esf-sim-solar-heading {
    font-family: 'Montserrat', sans-serif;
    font-size: 16px;
    font-weight: 700;
    color: #1E3A5F;
    margin: 0 0 16px;
}

/* Map */
.esf-sim-map-wrap {
    border-radius: 14px;
    overflow: hidden;
    box-shadow: 0 4px 16px rgba(0,0,0,0.10);
}
.esf-sim-map {
    width: 100%;
    height: 320px;
    background: #e8ecf1;
}
.esf-map-marker {
    color: #ee6c00;
    font-size: 30px;
    text-shadow: 0 2px 6px rgba(0,0,0,0.4);
    background: none !important;
    border: none !important;
}

/* Solar badge (sunshine hours) */
.esf-sim-solar-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: #1E3A5F;
    color: #fff;
    font-family: 'Montserrat', sans-serif;
    font-weight: 700;
    font-size: 15px;
    padding: 12px 22px;
    border-radius: 50px;
    margin-bottom: 20px;
}
.esf-sim-solar-badge i {
    color: #F59E0B;
    font-size: 18px;
}

/* Solar KPIs list */
.esf-sim-solar-kpis {
    display: flex;
    flex-direction: column;
    gap: 0;
}
.esf-sim-solar-kpi {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 16px 0;
    border-bottom: 1px solid #e8ecf1;
}
.esf-sim-solar-kpi:last-child {
    border-bottom: none;
}
.esf-sim-solar-kpi-icon {
    width: 44px;
    height: 44px;
    background: #f0f4f8;
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}
.esf-sim-solar-kpi-icon i {
    font-size: 18px;
    color: #718096;
}
.esf-sim-solar-kpi-body {
    flex: 1;
}
.esf-sim-solar-kpi-value {
    font-family: 'Montserrat', sans-serif;
    font-size: 22px;
    font-weight: 800;
    color: #1E3A5F;
    line-height: 1.2;
}
.esf-sim-solar-kpi-label {
    font-size: 13px;
    color: #718096;
    margin-top: 2px;
}
.esf-sim-solar-kpi-badge {
    background: #fef3c7;
    color: #92400e;
    font-family: 'Montserrat', sans-serif;
    font-weight: 700;
    font-size: 13px;
    padding: 4px 12px;
    border-radius: 20px;
    white-space: nowrap;
}
.esf-sim-result-text {
    color: #4A5568;
    font-size: 16px;
    line-height: 1.7;
    margin-bottom: 30px;
}
.esf-sim-result-summary {
    background: #f8f9fa;
    border-radius: 12px;
    padding: 24px 30px;
    margin: 0 auto 30px;
    max-width: 500px;
    text-align: left;
}
.esf-sim-result-summary .esf-sim-summary-row {
    display: flex;
    justify-content: space-between;
    padding: 8px 0;
    border-bottom: 1px solid #e8ecf1;
    font-size: 14px;
}
.esf-sim-result-summary .esf-sim-summary-row:last-child {
    border-bottom: none;
}
.esf-sim-summary-label {
    font-weight: 600;
    color: #1E3A5F;
}
.esf-sim-summary-value {
    color: #ee6c00;
    font-weight: 600;
}

/* Responsive */
@media (max-width: 600px) {
    .esf-sim {
        margin: 20px 15px 40px;
        border-radius: 12px;
    }
    .esf-sim-step {
        padding: 20px 20px 24px;
    }
    .esf-sim-question {
        font-size: 20px;
    }
    .esf-sim-choices-2,
    .esf-sim-choices-3,
    .esf-sim-choices-4 {
        grid-template-columns: 1fr;
        max-width: 320px;
    }
    .esf-sim-form-row {
        grid-template-columns: 1fr;
    }
    .esf-sim-nav {
        padding: 0 20px;
    }
    .esf-sim-submit {
        width: 100%;
        justify-content: center;
    }
    .esf-sim-result-summary {
        padding: 16px 20px;
    }
}

/* ==============================================
   SIMULATEUR — Address Autocomplete
   ============================================== */

.esf-sim-address-wrap {
    max-width: 560px;
    margin: 0 auto;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 16px;
}
.esf-sim-address-wrap .esf-sim-form-field {
    width: 100%;
    position: relative;
}
.esf-sim-address-wrap .esf-sim-form-field input {
    width: 100%;
    padding: 14px 18px;
    border: 2px solid #e8ecf1;
    border-radius: 12px;
    font-size: 16px;
    font-family: 'Open Sans', sans-serif;
    outline: none;
    transition: border-color 0.3s;
    box-sizing: border-box;
}
.esf-sim-address-wrap .esf-sim-form-field input:focus {
    border-color: #1E3A5F;
    box-shadow: 0 0 0 3px rgba(30,58,95,0.1);
}
.esf-sim-address-list {
    display: none;
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    background: #fff;
    border: 1px solid #e8ecf1;
    border-radius: 0 0 12px 12px;
    box-shadow: 0 8px 20px rgba(0,0,0,0.1);
    z-index: 10;
    max-height: 240px;
    overflow-y: auto;
}
.esf-sim-addr-item {
    padding: 12px 18px;
    cursor: pointer;
    font-size: 14px;
    color: #2D3748;
    transition: background 0.2s;
    border-bottom: 1px solid #f0f0f0;
}
.esf-sim-addr-item:last-child { border-bottom: none; }
.esf-sim-addr-item:hover {
    background: #eef3f9;
    color: #1E3A5F;
}
.esf-sim-addr-item i { color: #ee6c00; margin-right: 8px; }
.esf-sim-addr-empty { color: #718096; cursor: default; }
.esf-sim-addr-empty:hover { background: transparent; }

.esf-sim-address-card {
    display: flex;
    align-items: center;
    gap: 16px;
    background: #f0fdf4;
    border: 2px solid #38a169;
    border-radius: 12px;
    padding: 16px 20px;
    width: 100%;
    box-sizing: border-box;
}
.esf-sim-address-card > i {
    font-size: 24px;
    color: #38a169;
}
.esf-sim-address-card strong {
    color: #1E3A5F;
    font-size: 15px;
}
.esf-sim-addr-coords {
    font-size: 12px;
    color: #718096;
}
.esf-sim-addr-change {
    margin-left: auto;
    background: none;
    border: 1px solid #718096;
    border-radius: 6px;
    padding: 6px 12px;
    font-size: 12px;
    color: #718096;
    cursor: pointer;
    white-space: nowrap;
    transition: all 0.3s;
}
.esf-sim-addr-change:hover {
    border-color: #1E3A5F;
    color: #1E3A5F;
}
.esf-sim-addr-next {
    margin-top: 8px;
}

/* ==============================================
   SIMULATEUR — Loading Spinner
   ============================================== */

.esf-sim-loading {
    text-align: center;
    padding: 40px 0;
}
.esf-sim-spinner {
    width: 56px;
    height: 56px;
    border: 5px solid #e8ecf1;
    border-top-color: #ee6c00;
    border-radius: 50%;
    margin: 0 auto 24px;
    animation: esfSpin 0.8s linear infinite;
}
@keyframes esfSpin {
    to { transform: rotate(360deg); }
}

/* ==============================================
   SIMULATEUR — KPI Cards
   ============================================== */

.esf-sim-kpis {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 16px;
    margin: 30px 0;
}
.esf-sim-kpi {
    background: #f8f9fa;
    border-radius: 14px;
    padding: 24px 16px;
    text-align: center;
    border: 1px solid #e8ecf1;
    transition: transform 0.3s, box-shadow 0.3s;
}
.esf-sim-kpi:hover {
    transform: translateY(-3px);
    box-shadow: 0 6px 20px rgba(0,0,0,0.08);
}
.esf-sim-kpi-icon {
    font-size: 28px;
    color: #ee6c00;
    margin-bottom: 10px;
}
.esf-sim-kpi-value {
    font-family: 'Montserrat', sans-serif;
    font-size: 22px;
    font-weight: 800;
    color: #1E3A5F;
    margin-bottom: 6px;
}
.esf-sim-kpi-label {
    font-size: 12px;
    color: #718096;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.3px;
}

/* ==============================================
   SIMULATEUR — Monthly Bar Chart
   ============================================== */

.esf-sim-chart-section {
    margin: 30px 0;
}
.esf-sim-chart-section h3 {
    font-family: 'Montserrat', sans-serif;
    font-size: 18px;
    font-weight: 700;
    color: #1E3A5F;
    text-align: center;
    margin-bottom: 20px;
}
.esf-sim-chart-section h3 i {
    color: #ee6c00;
    margin-right: 8px;
}
.esf-sim-bars {
    display: flex;
    align-items: flex-end;
    justify-content: center;
    gap: 6px;
    height: 180px;
    padding: 0 10px;
}
.esf-sim-bar-col {
    display: flex;
    flex-direction: column;
    align-items: center;
    flex: 1;
    max-width: 52px;
    height: 100%;
    justify-content: flex-end;
}
.esf-sim-bar-value {
    font-size: 10px;
    font-weight: 700;
    color: #1E3A5F;
    margin-bottom: 4px;
}
.esf-sim-bar {
    width: 100%;
    background: linear-gradient(180deg, #ee6c00 0%, #F59E0B 100%);
    border-radius: 6px 6px 0 0;
    min-height: 4px;
    transition: height 0.6s ease;
}
.esf-sim-bar-label {
    font-size: 11px;
    color: #718096;
    font-weight: 600;
    margin-top: 6px;
}
.esf-sim-chart-unit {
    text-align: center;
    font-size: 12px;
    color: #a0aec0;
    margin-top: 8px;
}

/* ==============================================
   SIMULATEUR — Result CTA
   ============================================== */

.esf-sim-result-cta {
    text-align: center;
    margin-top: 30px;
    padding-top: 24px;
    border-top: 1px solid #e8ecf1;
}
.esf-sim-result-cta p {
    color: #4A5568;
    font-size: 15px;
    margin-bottom: 16px;
}
.esf-sim-result-actions {
    display: flex;
    gap: 16px;
    justify-content: center;
    flex-wrap: wrap;
    align-items: center;
}
.esf-sim-back-link {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 14px 28px;
    border: 2px solid #e8ecf1;
    border-radius: 50px;
    color: #718096;
    font-family: 'Montserrat', sans-serif;
    font-weight: 600;
    font-size: 15px;
    text-decoration: none;
    transition: all 0.3s;
}
.esf-sim-back-link:hover {
    border-color: #1E3A5F;
    color: #1E3A5F;
}

/* Responsive KPIs + chart */
@media (max-width: 768px) {
    .esf-sim-solar-panel {
        grid-template-columns: 1fr;
    }
    .esf-sim-map {
        height: 240px;
    }
    .esf-sim-result-header {
        flex-direction: column;
        text-align: center;
    }
    .esf-sim-result-title {
        text-align: center;
        font-size: 20px;
    }
    .esf-sim-kpis {
        grid-template-columns: repeat(2, 1fr);
    }
    .esf-sim-kpi-value {
        font-size: 18px;
    }
    .esf-sim-bars {
        height: 140px;
        gap: 3px;
    }
    .esf-sim-bar-value {
        font-size: 8px;
    }
    .esf-sim-bar-label {
        font-size: 9px;
    }
    .esf-sim-address-card {
        flex-wrap: wrap;
    }
}
@media (max-width: 480px) {
    .esf-sim-kpis {
        grid-template-columns: 1fr;
    }
    .esf-sim-solar-kpi-value {
        font-size: 18px;
    }
}

/* ==========================================================================
   DESIGN CONSISTENCY v8.0.0 — Match homepage polish on all pages
   ========================================================================== */

/* ─── Animated Hero Gradient ──────────────────────────────────────────── */
@keyframes esf-hero-gradient {
    0%   { background-position: 0% 50%; }
    50%  { background-position: 100% 50%; }
    100% { background-position: 0% 50%; }
}
.esf-page-hero {
    background-size: 200% 200%;
    animation: esf-hero-gradient 8s ease infinite;
}
.esf-page-hero-img {
    animation: none; /* No gradient animation on image heroes */
}

/* Hero content entrance animation */
.esf-page-hero-content {
    animation: esf-heroEntrance 0.8s ease-out;
}
@keyframes esf-heroEntrance {
    from {
        opacity: 0;
        transform: translateY(30px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* Hero badge glow */
.esf-page-badge {
    animation: esf-badgePulse 2s ease-in-out infinite;
}
@keyframes esf-badgePulse {
    0%, 100% { box-shadow: 0 0 0 0 rgba(238,108,0,0.4); }
    50% { box-shadow: 0 0 20px 4px rgba(238,108,0,0.2); }
}

/* ─── Alternating Section Backgrounds ─────────────────────────────────── */
.esf-page-wrap > .esf-section-band:nth-of-type(even) + *,
.esf-page-wrap > .esf-tierra-section:nth-child(even) {
    /* Subtle alternating tint handled by sections */
}

/* Full-width alternating backgrounds for content sections */
.esf-page-wrap > .esf-atouts-grid,
.esf-page-wrap > .esf-events-grid,
.esf-page-wrap > .esf-actu-grid {
    position: relative;
}

/* Section separators */
.esf-page-wrap > .esf-section-band + * {
    margin-top: 0;
}

/* ─── Improved Scroll Reveal ──────────────────────────────────────────── */
.esf-reveal {
    opacity: 0;
    transform: translateY(30px);
    transition: opacity 0.7s cubic-bezier(0.4, 0, 0.2, 1),
                transform 0.7s cubic-bezier(0.4, 0, 0.2, 1);
}
.esf-reveal.revealed,
.elementor-editor-active .esf-reveal {
    opacity: 1;
    transform: translateY(0);
}

/* ─── Event Card Upgrade (date badge like actus) ──────────────────────── */
.esf-event-card {
    position: relative;
    padding-top: 50px;
}
.esf-event-card-date {
    position: absolute;
    top: -1px;
    right: 20px;
    background: linear-gradient(135deg, #ee6c00 0%, #F59E0B 100%);
    color: #fff;
    border-radius: 0 0 10px 10px;
    padding: 10px 14px;
    text-align: center;
    line-height: 1.2;
    box-shadow: 0 4px 12px rgba(238,108,0,0.3);
}
.esf-event-card-venue {
    font-size: 13px;
    color: #718096;
    margin: 0 0 12px;
}
.esf-event-card-venue i {
    color: #ee6c00;
    margin-right: 4px;
}

/* Past events — muted */
.esf-events-past .esf-event-card {
    opacity: 0.7;
    filter: grayscale(0.3);
    transition: opacity 0.3s, filter 0.3s, transform 0.3s, box-shadow 0.3s;
}
.esf-events-past .esf-event-card:hover {
    opacity: 1;
    filter: grayscale(0);
}

/* ─── Cards Universal Hover Enhancement ───────────────────────────────── */
.esf-atout-card,
.esf-event-card,
.esf-actu-card,
.esf-contact-quick-item,
.esf-contact-address-card,
.esf-avis-featured {
    transition: transform 0.35s cubic-bezier(0.4, 0, 0.2, 1),
                box-shadow 0.35s cubic-bezier(0.4, 0, 0.2, 1),
                border-color 0.35s ease;
}

/* ─── CTA Section Enhancement ─────────────────────────────────────────── */
.esf-page-cta {
    position: relative;
    overflow: hidden;
}
.esf-page-cta::before {
    content: '';
    position: absolute;
    top: -50%;
    right: -10%;
    width: 300px;
    height: 300px;
    background: radial-gradient(circle, rgba(238,108,0,0.15) 0%, transparent 70%);
    border-radius: 50%;
    pointer-events: none;
}
.esf-page-cta::after {
    content: '';
    position: absolute;
    bottom: -30%;
    left: -5%;
    width: 200px;
    height: 200px;
    background: radial-gradient(circle, rgba(245,158,11,0.1) 0%, transparent 70%);
    border-radius: 50%;
    pointer-events: none;
}
.esf-page-cta > * {
    position: relative;
    z-index: 1;
}

/* CTA button pulse on hover */
.esf-page-cta-btn {
    position: relative;
}
.esf-page-cta-btn:hover {
    box-shadow: 0 8px 30px rgba(238,108,0,0.35);
}

/* ─── Section Band Enhancement ────────────────────────────────────────── */
.esf-section-band {
    position: relative;
    overflow: hidden;
}
.esf-section-band::before {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,0.15), transparent);
    animation: esf-bandShine 4s ease-in-out infinite;
}
@keyframes esf-bandShine {
    0% { left: -100%; }
    50% { left: 100%; }
    100% { left: 100%; }
}

/* ─── Typewriter Band — Homogenized Boxed Style (v8.6.0) ─────────────── */
/* width / max-width / margin / box-shadow gérés via les contrôles Elementor du widget */
.esf-tw-band {
    border-radius: 14px !important;
    position: relative;
    overflow: hidden;
}
.esf-tw-band::before {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,0.15), transparent);
    animation: esf-bandShine 4s ease-in-out infinite;
    pointer-events: none;
}

/* ─── Avis Client Stars Animation ─────────────────────────────────────── */
.esf-avis-stars-row i {
    display: inline-block;
    animation: esf-starPop 0.5s ease both;
}
.esf-avis-stars-row i:nth-child(1) { animation-delay: 0.1s; }
.esf-avis-stars-row i:nth-child(2) { animation-delay: 0.2s; }
.esf-avis-stars-row i:nth-child(3) { animation-delay: 0.3s; }
.esf-avis-stars-row i:nth-child(4) { animation-delay: 0.4s; }
.esf-avis-stars-row i:nth-child(5) { animation-delay: 0.5s; }
@keyframes esf-starPop {
    0%   { transform: scale(0); opacity: 0; }
    60%  { transform: scale(1.3); }
    100% { transform: scale(1); opacity: 1; }
}

/* ─── Atout Card Icon Hover ───────────────────────────────────────────── */
.esf-atout-card:hover .esf-atout-icon {
    transform: scale(1.1) rotate(5deg);
    transition: transform 0.3s ease;
}
.esf-atout-icon {
    transition: transform 0.3s ease;
}

/* ─── Contact Form Focus Effects ──────────────────────────────────────── */
.esf-contact-form input:focus,
.esf-contact-form textarea:focus,
.esf-sim-form-field input:focus,
.esf-sim-form-field textarea:focus {
    transform: scale(1.01);
    transition: border-color 0.3s, box-shadow 0.3s, transform 0.2s;
}

/* ─── Page Content Block — Better Typography ──────────────────────────── */
.esf-page-content-block p {
    margin-bottom: 16px;
}
.esf-page-content-block strong {
    color: #1a3a5c;
}

/* ─── Footer Enhancement ──────────────────────────────────────────────── */
[data-elementor-type="footer"] {
    position: relative;
}

/* ─── Smooth page transitions ─────────────────────────────────────────── */
.esf-page {
    animation: esf-pageEnter 0.5s ease-out;
}
@keyframes esf-pageEnter {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}

/* ─── Better Link Underline Effect ────────────────────────────────────── */
.esf-page-content-block a,
.esf-legal-content a,
.esf-tierra-section a {
    position: relative;
    text-decoration: none;
    color: #ee6c00;
}
.esf-page-content-block a::after,
.esf-legal-content a::after,
.esf-tierra-section a::after {
    content: '';
    position: absolute;
    bottom: -1px;
    left: 0;
    width: 0;
    height: 2px;
    background: #ee6c00;
    transition: width 0.3s ease;
}
.esf-page-content-block a:hover::after,
.esf-legal-content a:hover::after,
.esf-tierra-section a:hover::after {
    width: 100%;
}

/* ─── Responsive Enhancements ─────────────────────────────────────────── */
@media (max-width: 768px) {
    .esf-event-card-date {
        right: 10px;
        padding: 8px 10px;
    }
    .esf-event-card {
        padding-top: 40px;
    }
    .esf-page-cta::before,
    .esf-page-cta::after,
    .esf-real-cta::before,
    .esf-real-cta::after {
        display: none;
    }
    .esf-page-cta,
    .esf-real-cta {
        padding: 35px 20px;
        margin: 35px 0 30px;
        border-radius: 12px;
    }
    .esf-page-cta h3,
    .esf-real-cta h3 {
        font-size: 22px;
    }
    .esf-tw-band {
        border-radius: 10px !important;
        margin-left: 10px !important;
        margin-right: 10px !important;
    }
    .esf-tw-band::before {
        display: none;
    }
}

@media (max-width: 480px) {
    .esf-page-hero-title {
        font-size: 26px;
    }
    .esf-page-hero-sub {
        font-size: 14px;
    }
}

/* ==============================================
   Single Event — Meta Block (v8.1)
   ============================================== */
.esf-event-meta {
    display: flex;
    gap: 30px;
    padding: 25px 30px;
    background: #f7f9fc;
    border-radius: 14px;
    border-left: 4px solid #ee6c00;
    margin-bottom: 35px;
    flex-wrap: wrap;
}
.esf-event-meta-item {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    font-family: 'Open Sans', sans-serif;
    font-size: 15px;
    color: #4a5568;
    line-height: 1.5;
}
.esf-event-meta-item > i {
    font-size: 20px;
    color: #ee6c00;
    margin-top: 2px;
    flex-shrink: 0;
}
.esf-event-meta-item strong {
    color: #1a3a5c;
    font-weight: 700;
}
@media (max-width: 600px) {
    .esf-event-meta {
        flex-direction: column;
        gap: 18px;
        padding: 20px;
    }
}

/* ==============================================
   Page Événements — Hero aligné (v8.6.11)
   ============================================== */
.esf-page-evenements .esf-page-hero {
    padding: 240px 20px 110px;
    min-height: 70vh;
    align-items: flex-start;
}

.esf-page-evenements .esf-page-hero-content {
    margin-top: 140px;
}

@media (min-width: 1025px) {
    .esf-page-evenements .esf-page-hero {
        margin-top: -140px;
    }
    .admin-bar .esf-page-evenements .esf-page-hero {
        margin-top: 0;
        padding-top: 180px;
        min-height: 64vh;
    }
    .admin-bar .esf-page-evenements .esf-page-hero-content {
        margin-top: 0;
    }
}

@media (min-width: 768px) and (max-width: 1024px) {
    .esf-page-evenements .esf-page-hero {
        padding-top: 140px;
        padding-bottom: 80px;
        min-height: 58vh;
        align-items: flex-start;
    }
    .esf-page-evenements .esf-page-hero-content {
        margin-top: 70px;
    }
    .admin-bar .esf-page-evenements .esf-page-hero {
        margin-top: 0;
        padding-top: 140px;
    }
    .admin-bar .esf-page-evenements .esf-page-hero-content {
        margin-top: 0;
    }
}

@media (max-width: 767px) {
    .esf-page-evenements .esf-page-hero {
        padding-top: 120px;
        padding-bottom: 60px;
        min-height: 48vh;
        align-items: flex-start;
    }
    .esf-page-evenements .esf-page-hero-content {
        margin-top: 40px;
    }
    .admin-bar .esf-page-evenements .esf-page-hero {
        margin-top: 0;
        padding-top: 120px;
    }
    .admin-bar .esf-page-evenements .esf-page-hero-content {
        margin-top: 0;
    }
}

/* ==============================================
   Page Contact — Hero aligné (v8.6.12)
   ============================================== */
.esf-page-contact .esf-page-hero {
    padding: 240px 20px 110px;
    min-height: 70vh;
    align-items: flex-start;
}

.esf-page-contact .esf-page-hero-content {
    margin-top: 140px;
}

@media (min-width: 1025px) {
    .esf-page-contact .esf-page-hero {
        margin-top: -140px;
    }
    .admin-bar .esf-page-contact .esf-page-hero {
        margin-top: 0;
        padding-top: 180px;
        min-height: 64vh;
    }
    .admin-bar .esf-page-contact .esf-page-hero-content {
        margin-top: 0;
    }
}

@media (min-width: 768px) and (max-width: 1024px) {
    .esf-page-contact .esf-page-hero {
        padding-top: 140px;
        padding-bottom: 80px;
        min-height: 58vh;
        align-items: flex-start;
    }
    .esf-page-contact .esf-page-hero-content {
        margin-top: 70px;
    }
    .admin-bar .esf-page-contact .esf-page-hero {
        margin-top: 0;
        padding-top: 140px;
    }
    .admin-bar .esf-page-contact .esf-page-hero-content {
        margin-top: 0;
    }
}

@media (max-width: 767px) {
    .esf-page-contact .esf-page-hero {
        padding-top: 120px;
        padding-bottom: 60px;
        min-height: 48vh;
        align-items: flex-start;
    }
    .esf-page-contact .esf-page-hero-content {
        margin-top: 40px;
    }
    .admin-bar .esf-page-contact .esf-page-hero {
        margin-top: 0;
        padding-top: 120px;
    }
    .admin-bar .esf-page-contact .esf-page-hero-content {
        margin-top: 0;
    }
}

/* ==============================================
   Events — View Switcher + 3 Modes (v8.2)
   ============================================== */

/* ─── Switcher buttons ────────────────────────────────────────────────── */
.esf-events-switcher {
    display: flex;
    gap: 8px;
    justify-content: center;
    margin-bottom: 35px;
    flex-wrap: wrap;
}
.esf-ev-mode {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 12px 24px;
    border: 2px solid #e2e8f0;
    border-radius: 50px;
    background: #fff;
    color: #4a5568;
    font-family: 'Montserrat', sans-serif;
    font-weight: 600;
    font-size: 14px;
    cursor: pointer;
    transition: all 0.3s ease;
}

/* ==============================================
   Hero Harmonization (hors accueil) — v8.7.0
   Objectif: mêmes hauteurs de hero sur toutes les pages,
   sauf la page d'accueil.
   ============================================== */
@media (min-width: 1025px) {
    body:not(.home) .esf-page-hero-section,
    body:not(.home) .esf-page-hero,
    body:not(.home) .esf-archive-hero {
        min-height: 56vh !important;
    }

    body:not(.home) .esf-page-evenements .esf-page-hero,
    body:not(.home) .esf-page-contact .esf-page-hero,
    body.page-id-49 .esf-page-hero-section,
    body.page-id-48 .esf-page-hero-section,
    body:not(.home) .esf-archive-hero {
        padding-top: 185px !important;
        padding-bottom: 50px !important;
    }

    body:not(.home) .esf-page-evenements .esf-page-hero-content,
    body:not(.home) .esf-page-contact .esf-page-hero-content,
    body:not(.home) .esf-archive-hero-overlay {
        margin-top: 0 !important;
    }
}

@media (min-width: 768px) and (max-width: 1024px) {
    body:not(.home) .esf-page-hero-section,
    body:not(.home) .esf-page-hero,
    body:not(.home) .esf-archive-hero {
        min-height: 48vh !important;
    }

    body:not(.home) .esf-page-evenements .esf-page-hero,
    body:not(.home) .esf-page-contact .esf-page-hero,
    body.page-id-49 .esf-page-hero-section,
    body.page-id-48 .esf-page-hero-section,
    body:not(.home) .esf-archive-hero {
        padding-top: 40px !important;
        padding-bottom: 50px !important;
    }

    body:not(.home) .esf-page-evenements .esf-page-hero-content,
    body:not(.home) .esf-page-contact .esf-page-hero-content,
    body:not(.home) .esf-archive-hero-overlay {
        margin-top: 0 !important;
    }
}

@media (max-width: 767px) {
    body:not(.home) .esf-page-hero-section,
    body:not(.home) .esf-page-hero,
    body:not(.home) .esf-archive-hero {
        min-height: 44vh !important;
    }

    body:not(.home) .esf-page-evenements .esf-page-hero,
    body:not(.home) .esf-page-contact .esf-page-hero,
    body.page-id-49 .esf-page-hero-section,
    body.page-id-48 .esf-page-hero-section,
    body:not(.home) .esf-archive-hero {
        padding-top: 80px !important;
        padding-bottom: 40px !important;
    }

    body:not(.home) .esf-page-evenements .esf-page-hero-content,
    body:not(.home) .esf-page-contact .esf-page-hero-content,
    body:not(.home) .esf-archive-hero-overlay {
        margin-top: 0 !important;
    }
}
.esf-ev-mode:hover {
    border-color: #ee6c00;
    color: #ee6c00;
}
.esf-ev-mode.active {
    background: linear-gradient(135deg, #1a3a5c, #2a5a8c);
    border-color: #1a3a5c;
    color: #fff;
    box-shadow: 0 4px 15px rgba(26,58,92,0.3);
}
.esf-ev-mode i {
    font-size: 16px;
}

/* ─── View containers ─────────────────────────────────────────────────── */
.esf-ev-view {
    display: none;
}
.esf-ev-view.active {
    display: block;
}

/* ─── Planning View — Calendar Grid ──────────────────────────────────── */
.esf-planning-controls {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 15px;
    margin-bottom: 25px;
}
.esf-planning-month {
    font-family: 'Montserrat', sans-serif;
    font-weight: 700;
    font-size: 22px;
    color: #1a3a5c;
    min-width: 220px;
    text-align: center;
    text-transform: capitalize;
}
.esf-planning-nav {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    border: 2px solid #e2e8f0;
    background: #fff;
    color: #1a3a5c;
    font-size: 16px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.3s;
}
.esf-planning-nav:hover {
    background: #1a3a5c;
    border-color: #1a3a5c;
    color: #fff;
}
.esf-planning-today {
    padding: 8px 18px;
    border-radius: 50px;
    border: 2px solid #ee6c00;
    background: transparent;
    color: #ee6c00;
    font-family: 'Montserrat', sans-serif;
    font-weight: 600;
    font-size: 13px;
    cursor: pointer;
    transition: all 0.3s;
}
.esf-planning-today:hover {
    background: #ee6c00;
    color: #fff;
}
.esf-planning-grid {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 2px;
    background: #e2e8f0;
    border-radius: 14px;
    overflow: hidden;
    box-shadow: 0 3px 15px rgba(0,0,0,0.08);
}
.esf-plan-header {
    background: #1a3a5c;
    color: #fff;
    text-align: center;
    padding: 12px 4px;
    font-family: 'Montserrat', sans-serif;
    font-weight: 700;
    font-size: 13px;
    text-transform: uppercase;
}
.esf-plan-cell {
    background: #fff;
    min-height: 90px;
    padding: 6px;
    position: relative;
    vertical-align: top;
}
.esf-plan-cell.other-month {
    background: #f7f9fc;
}
.esf-plan-cell.today {
    background: #fffbf0;
}
.esf-plan-day {
    font-family: 'Montserrat', sans-serif;
    font-weight: 600;
    font-size: 13px;
    color: #718096;
    margin-bottom: 4px;
}
.esf-plan-cell.today .esf-plan-day {
    color: #ee6c00;
    font-weight: 800;
}
.esf-plan-event {
    display: block;
    padding: 3px 6px;
    margin-bottom: 2px;
    border-radius: 4px;
    font-size: 11px;
    font-family: 'Open Sans', sans-serif;
    font-weight: 600;
    line-height: 1.3;
    text-decoration: none;
    color: #fff;
    background: linear-gradient(135deg, #ee6c00, #F59E0B);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    transition: transform 0.2s, box-shadow 0.2s;
}
.esf-plan-event:hover {
    transform: scale(1.05);
    box-shadow: 0 2px 8px rgba(238,108,0,0.3);
    color: #fff;
}
.esf-plan-event.past {
    background: linear-gradient(135deg, #718096, #a0aec0);
}

/* ─── Map View (listing page — removed) ───────────────────────────────── */
/* .esf-events-map removed in v4 — was for listing page geographic map */

/* ─── Compact List View ───────────────────────────────────────────────── */
.esf-events-list {
    display: flex;
    flex-direction: column;
    gap: 0;
    margin-bottom: 30px;
}
.esf-event-row {
    display: flex;
    align-items: center;
    gap: 20px;
    padding: 18px 24px;
    background: #fff;
    text-decoration: none;
    color: inherit;
    border-bottom: 1px solid #e8ecf1;
    transition: background 0.2s, transform 0.2s, box-shadow 0.2s;
}
.esf-event-row:first-child {
    border-radius: 14px 14px 0 0;
}
.esf-event-row:last-child {
    border-radius: 0 0 14px 14px;
    border-bottom: none;
}
.esf-event-row:only-child {
    border-radius: 14px;
}
.esf-event-row:hover {
    background: #f7f9fc;
    box-shadow: 0 2px 12px rgba(0,0,0,0.06);
    transform: translateX(4px);
}
.esf-event-row-date {
    display: flex;
    flex-direction: column;
    align-items: center;
    min-width: 55px;
    background: linear-gradient(135deg, #1a3a5c, #2a5a8c);
    color: #fff;
    border-radius: 10px;
    padding: 8px 10px;
    text-align: center;
    flex-shrink: 0;
}
.esf-event-row-day {
    font-family: 'Montserrat', sans-serif;
    font-weight: 800;
    font-size: 22px;
    line-height: 1;
}
.esf-event-row-month {
    font-family: 'Montserrat', sans-serif;
    font-weight: 600;
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    opacity: 0.9;
}
.esf-event-row-year {
    font-family: 'Montserrat', sans-serif;
    font-weight: 500;
    font-size: 10px;
    opacity: 0.7;
}
.esf-event-row-info {
    flex: 1;
    min-width: 0;
}
.esf-event-row-title {
    font-family: 'Montserrat', sans-serif;
    font-weight: 700;
    font-size: 16px;
    color: #1a3a5c;
    margin: 0 0 4px 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.esf-event-row:hover .esf-event-row-title {
    color: #ee6c00;
}
.esf-event-row-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
    font-family: 'Open Sans', sans-serif;
    font-size: 13px;
    color: #718096;
}
.esf-event-row-meta i {
    color: #ee6c00;
    margin-right: 4px;
    font-size: 12px;
}
.esf-event-row-arrow {
    flex-shrink: 0;
    color: #cbd5e0;
    font-size: 18px;
    transition: color 0.2s, transform 0.2s;
}
.esf-event-row:hover .esf-event-row-arrow {
    color: #ee6c00;
    transform: translateX(4px);
}
.esf-events-list-past .esf-event-row {
    opacity: 0.65;
}
.esf-events-list-past .esf-event-row:hover {
    opacity: 1;
}
.esf-events-list-past .esf-event-row-date {
    background: linear-gradient(135deg, #718096, #a0aec0);
}

/* ─── Single Event Map ────────────────────────────────────────────────── */
.esf-event-map-wrap {
    margin-bottom: 40px;
}
.esf-event-map {
    height: 350px;
    border-radius: 14px;
    overflow: hidden;
    box-shadow: 0 5px 20px rgba(0,0,0,0.1);
}

/* Leaflet popup override */
.esf-map-popup {
    font-family: 'Open Sans', sans-serif;
    line-height: 1.5;
}
.esf-map-popup strong {
    font-family: 'Montserrat', sans-serif;
    color: #1a3a5c;
    font-size: 14px;
}
.esf-map-popup a {
    color: #ee6c00;
    font-weight: 600;
    text-decoration: none;
}
.esf-map-popup a:hover {
    text-decoration: underline;
}

/* ─── Responsive ──────────────────────────────────────────────────────── */
@media (max-width: 768px) {
    .esf-planning-grid {
        font-size: 11px;
    }
    .esf-plan-cell {
        min-height: 60px;
        padding: 3px;
    }
    .esf-plan-event {
        font-size: 9px;
        padding: 2px 4px;
    }
    .esf-planning-month {
        font-size: 18px;
        min-width: 160px;
    }
    .esf-event-map {
        height: 300px;
    }
    .esf-ev-mode {
        padding: 10px 16px;
        font-size: 13px;
    }
    .esf-event-row {
        gap: 14px;
        padding: 14px 16px;
    }
    .esf-event-row-title {
        font-size: 14px;
        white-space: normal;
    }
    .esf-event-row-meta {
        font-size: 12px;
        gap: 10px;
    }
    .esf-event-row-day {
        font-size: 18px;
    }
    .esf-event-row-date {
        min-width: 48px;
        padding: 6px 8px;
    }
}
@media (max-width: 480px) {
    .esf-plan-header {
        font-size: 10px;
        padding: 8px 2px;
    }
    .esf-plan-event {
        font-size: 8px;
    }
}

/* ═══════════════════════════════════════════════
   FORM STATUS MESSAGES (v8.3.0)
   ═══════════════════════════════════════════════ */
.esf-form-status {
    padding: 16px 20px;
    border-radius: 10px;
    margin-top: 20px;
    font-size: 15px;
    font-weight: 600;
    display: flex;
    align-items: center;
    gap: 10px;
    transition: opacity 0.4s ease;
    animation: esf-form-status-in 0.4s ease;
}
.esf-form-status i {
    font-size: 20px;
    flex-shrink: 0;
}
.esf-form-status-success {
    background: linear-gradient(135deg, #ecfdf5 0%, #d1fae5 100%);
    color: #065f46;
    border: 1px solid #a7f3d0;
}
.esf-form-status-success i {
    color: #10b981;
}
.esf-form-status-error {
    background: linear-gradient(135deg, #fef2f2 0%, #fee2e2 100%);
    color: #991b1b;
    border: 1px solid #fecaca;
}
.esf-form-status-error i {
    color: #ef4444;
}
@keyframes esf-form-status-in {
    from { opacity: 0; transform: translateY(-10px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* Bouton submit loading state */
.esf-contact-form button[type="submit"]:disabled {
    opacity: 0.7;
    cursor: wait;
}
.esf-contact-form button[type="submit"] .fa-spinner {
    margin-right: 6px;
}

/* ==========================================================================
   SINGLE RÉALISATION — Design v3.0
   ========================================================================== */

/* Section titles */
.esf-real-section-title {
    font-family: 'Montserrat', sans-serif;
    font-size: 22px;
    font-weight: 700;
    color: #1a3a5c;
    margin: 0 0 20px;
    display: flex;
    align-items: center;
    gap: 10px;
}
.esf-real-section-title i {
    color: #ee6c00;
}

/* Badge with icon */
.esf-real-badge i {
    margin-right: 6px;
}

/* Info cards with colored top border */
.esf-real-info-card {
    border-top: 3px solid #ee6c00;
}

/* Two-column layout: content + sidebar map */
.esf-real-two-col {
    display: grid;
    grid-template-columns: 1fr 380px;
    gap: 40px;
    margin-bottom: 50px;
    align-items: start;
}
.esf-real-two-col-main .esf-real-body {
    margin-bottom: 0;
}
.esf-real-two-col-side {
    position: relative;
}
.esf-real-map-sticky {
    position: sticky;
    top: 100px;
}

/* Map label */
.esf-real-map-label {
    font-family: 'Montserrat', sans-serif;
    font-size: 14px;
    font-weight: 600;
    color: #64748b;
    margin: 12px 0 0;
    padding: 0;
}
.esf-real-map-label i {
    color: #ee6c00;
    margin-right: 6px;
}

/* Gallery improvements */
.esf-real-gallery-item {
    position: relative;
    overflow: hidden;
    border-radius: 10px;
    display: block;
}
.esf-real-gallery-zoom {
    position: absolute;
    inset: 0;
    background: rgba(0,0,0,0.4);
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    transition: opacity 0.3s;
}
.esf-real-gallery-zoom i {
    color: #fff;
    font-size: 24px;
}
.esf-real-gallery-item:hover .esf-real-gallery-zoom {
    opacity: 1;
}
.esf-gallery-few {
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)) !important;
}

/* CTA improvements */
.esf-real-cta-icon {
    font-size: 40px;
    margin-bottom: 15px;
    color: #f59e0b;
}
.esf-real-cta-actions {
    display: flex;
    gap: 15px;
    justify-content: center;
    flex-wrap: wrap;
}
.esf-real-cta-btn-outline {
    background: transparent !important;
    border: 2px solid #fff;
}
.esf-real-cta-btn-outline:hover {
    background: rgba(255,255,255,0.15) !important;
}

/* Navigation improvements */
.esf-real-nav {
    display: grid !important;
    grid-template-columns: 1fr auto 1fr;
    gap: 15px;
    align-items: center;
}
.esf-real-nav-link {
    display: flex !important;
    flex-direction: column;
    gap: 4px;
}
.esf-real-nav-dir {
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: #94a3b8;
}
.esf-real-nav-title {
    font-size: 14px;
    color: #1a3a5c;
    line-height: 1.3;
}
.esf-real-nav-prev { text-align: left; }
.esf-real-nav-next { text-align: right; }
.esf-real-nav-all {
    text-align: center;
    flex-direction: row !important;
    gap: 8px !important;
    align-items: center;
    justify-content: center;
}

/* Archive cards: better styling for migrated articles without meta */
.esf-archive-card-img:not([style*="background-image"]) {
    background: linear-gradient(135deg, #1a3a5c 0%, #2a5a8c 50%, #ee6c00 100%);
    display: flex;
    align-items: center;
    justify-content: center;
}
.esf-archive-card-img:not([style*="background-image"])::after {
    content: '\f5ba'; /* fa-solar-panel */
    font-family: 'Font Awesome 5 Free';
    font-weight: 900;
    font-size: 48px;
    color: rgba(255,255,255,0.3);
}

/* Archive: show location when no power */
.esf-archive-card-overlay:empty {
    display: none;
}

/* Archive card body */
.esf-archive-card-body {
    padding: 15px 18px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.esf-archive-card-body .esf-archive-card-title {
    padding: 0;
}
.esf-archive-card-link {
    font-family: 'Montserrat', sans-serif;
    font-size: 13px;
    font-weight: 600;
    color: #ee6c00;
    display: flex;
    align-items: center;
    gap: 6px;
    transition: gap 0.3s;
}
.esf-archive-card:hover .esf-archive-card-link {
    gap: 10px;
}
.esf-archive-card-overlay i {
    margin-right: 4px;
    font-size: 13px;
}

/* Archive card badge with icon */
.esf-archive-card-badge i {
    margin-right: 4px;
}

/* Responsive: two-column layout */
@media (max-width: 900px) {
    .esf-real-two-col {
        grid-template-columns: 1fr;
    }
    .esf-real-map-sticky {
        position: static;
    }
}
@media (max-width: 768px) {
    .esf-real-nav {
        grid-template-columns: 1fr !important;
    }
    .esf-real-nav-link {
        text-align: center !important;
    }
    .esf-real-cta-actions {
        flex-direction: column;
        align-items: center;
    }
}

/* ==============================================
   Hero centrage — Événements + Réalisations (v8.7.1)
   Alignement visuel sur la présentation "Panneaux photovoltaïques"
   ============================================== */
.esf-page-evenements .esf-page-hero,
.esf-archive-hero {
    align-items: center;
}

.esf-page-evenements .esf-page-hero-content,
.esf-archive-hero-overlay {
    margin-top: 0;
}

/* ==============================================
   Hero images + overlay léger (v8.7.2)
   ============================================== */
.esf-page-contact .esf-page-hero,
.esf-page-evenements .esf-page-hero,
.esf-page-parrainage .esf-page-hero,
.esf-archive-hero {
    position: relative;
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
}

.esf-page-contact .esf-page-hero::before,
.esf-page-evenements .esf-page-hero::before,
.esf-page-parrainage .esf-page-hero::before,
.esf-archive-hero::before {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(135deg, rgba(26,58,92,0.42) 0%, rgba(42,90,140,0.36) 55%, rgba(238,108,0,0.26) 100%);
    pointer-events: none;
    z-index: 1;
}

.esf-page-contact .esf-page-hero-content,
.esf-page-evenements .esf-page-hero-content,
.esf-page-parrainage .esf-page-hero-content,
.esf-archive-hero-overlay {
    position: relative;
    z-index: 2;
}

/* ==============================================
   Contact — disposition + palette harmonisee (v8.7.3)
   ============================================== */
.esf-page-contact .esf-contact-quick {
    margin-bottom: 30px;
}

.esf-page-contact .esf-contact-lower {
    display: grid;
    grid-template-columns: minmax(0, 1.08fr) minmax(0, 0.92fr);
    gap: 26px;
    align-items: start;
}

.esf-page-contact .esf-contact-lower-col {
    min-width: 0;
}

.esf-page-contact .esf-contact-lower .esf-contact-addresses,
.esf-page-contact .esf-contact-lower .esf-contact-form-section {
    margin-top: 16px;
}

.esf-page-contact .esf-contact-lower .esf-contact-addresses {
    margin-bottom: 0;
}

.esf-page-contact .esf-contact-lower .esf-contact-form-section {
    margin-top: 16px;
}

.esf-page-contact .esf-contact-quick-item,
.esf-page-contact .esf-contact-address-card,
.esf-page-contact .esf-contact-form {
    border-color: #dbe6f2;
    box-shadow: 0 6px 20px rgba(26,58,92,0.08);
}

.esf-page-contact .esf-contact-quick-item:hover {
    border-color: #1a3a5c;
    box-shadow: 0 14px 30px rgba(26,58,92,0.18);
}

.esf-page-contact .esf-contact-quick-icon,
.esf-page-contact .esf-contact-quick-icon .elementor-icon,
.esf-page-contact .esf-contact-address-header .elementor-icon,
.esf-page-contact .esf-contact-address-header i,
.esf-page-contact .esf-contact-address-text i,
.esf-page-contact .esf-contact-hours-title i {
    color: #1a3a5c;
}

.esf-page-contact .esf-contact-hours {
    background: #f3f7fc;
}

.esf-page-contact .esf-contact-form input:focus,
.esf-page-contact .esf-contact-form textarea:focus {
    border-color: #2a5a8c;
    box-shadow: 0 0 0 3px rgba(42,90,140,0.2);
}

@media (max-width: 1024px) {
    .esf-page-contact .esf-contact-lower {
        grid-template-columns: 1fr;
        gap: 20px;
    }

    .esf-page-contact .esf-contact-lower .esf-contact-addresses,
    .esf-page-contact .esf-contact-lower .esf-contact-form-section {
        margin-top: 14px;
    }
}

/* ==============================================
   Page Contact /contact-2/ — Styles spécifiques Elementor (page-id-51)
   ============================================== */

/* --- 4 cartes rapides : icône bleu foncé avec cercle, style homepage --- */
.page-id-51 .esf-real-info-card .elementor-icon-wrapper {
    background: rgba(26, 58, 92, 0.09);
    border-radius: 50%;
    width: 64px;
    height: 64px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 0 auto 14px;
}
.page-id-51 .esf-real-info-card .elementor-icon,
.page-id-51 .esf-real-info-card .elementor-icon svg {
    color: #1a3a5c !important;
    fill: #1a3a5c !important;
    width: 26px;
    height: 26px;
}
/* Étiquette : petite, grise, majuscules */
.page-id-51 .esf-real-info-card .elementor-widget-icon + .elementor-widget-heading .elementor-heading-title {
    font-family: 'Montserrat', sans-serif;
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    color: #999 !important;
    letter-spacing: 1px;
    margin: 0;
}
/* Valeur : gras, bleu foncé */
.page-id-51 .esf-real-info-card .elementor-widget-heading + .elementor-widget-heading .elementor-heading-title {
    font-family: 'Montserrat', sans-serif;
    font-size: 16px;
    font-weight: 700;
    color: #1a3a5c !important;
    line-height: 1.3;
    margin: 4px 0 0;
}

/* --- H2 "La Team Colibri…" → bande orange style homepage --- */
.page-id-51 .esf-page-content-block .elementor-widget-heading:first-child .elementor-widget-container {
    background: linear-gradient(135deg, #ee6c00 0%, #f59e0b 100%);
    border-radius: 10px;
    padding: 14px 24px;
    margin-bottom: 8px;
}
.page-id-51 .esf-page-content-block .elementor-widget-heading:first-child .elementor-heading-title {
    color: #fff !important;
    font-family: 'Montserrat', sans-serif;
    font-weight: 800;
    font-size: 22px !important;
    margin: 0;
}
@media (max-width: 1024px) {
    .page-id-51 .esf-page-content-block .elementor-widget-heading:first-child .elementor-heading-title {
        font-size: 20px !important;
    }
}
@media (max-width: 767px) {
    .page-id-51 .esf-page-content-block .elementor-widget-heading:first-child .elementor-heading-title {
        font-size: 17px !important;
    }
}
@media (max-width: 480px) {
    .page-id-51 .esf-page-content-block .elementor-widget-heading:first-child .elementor-heading-title {
        font-size: 15px !important;
    }
}

/* --- En-têtes des agences (Siège social / Agence du Pays de Gex) → bande bleue --- */
.page-id-51 .esf-contact-address-header {
    background: linear-gradient(135deg, #1a3a5c 0%, #2a5a8c 100%) !important;
    border-radius: 10px;
    padding: 14px 20px;
    margin-bottom: 20px;
    gap: 12px;
}
.page-id-51 .esf-contact-address-header .elementor-icon,
.page-id-51 .esf-contact-address-header .elementor-icon svg {
    color: #fff !important;
    fill: #fff !important;
}
.page-id-51 .esf-contact-address-header .elementor-heading-title {
    color: #fff !important;
    font-family: 'Montserrat', sans-serif;
    font-weight: 700;
    font-size: 18px !important;
    margin: 0;
}
@media (max-width: 1024px) {
    .page-id-51 .esf-contact-address-header .elementor-heading-title {
        font-size: 16px !important;
    }
}
@media (max-width: 767px) {
    .page-id-51 .esf-contact-address-header .elementor-heading-title {
        font-size: 14px !important;
    }
}

/* --- Cartes d'agences en 2 colonnes côte à côte --- */
.page-id-51 .esf-contact-addresses {
    grid-template-columns: 1fr 1fr !important;
    display: grid !important;
    align-items: stretch !important;
    gap: 24px;
}
/* La page Elementor utilise flex sur les cartes : on neutralise le subgrid
   hérité du template PHP */
.page-id-51 .esf-contact-address-card {
    display: flex !important;
    flex-direction: column !important;
    grid-row: auto !important;        /* annule le span 4 du template PHP */
    grid-template-rows: none !important;
}
.page-id-51 .esf-contact-address-card > .e-con-inner {
    display: flex !important;
    flex-direction: column !important;
    flex: 1;
    height: 100%;
}
.page-id-51 .esf-contact-address-card .esf-contact-hours {
    flex: 1;
}
@media (max-width: 900px) {
    .page-id-51 .esf-contact-addresses {
        grid-template-columns: 1fr !important;
    }
}

/* --- Case RGPD dans le formulaire de contact --- */
.esf-rgpd-field {
    margin-top: 8px;
}
.esf-rgpd-label {
    display: flex !important;
    align-items: flex-start !important;
    gap: 10px !important;
    font-size: 14px !important;
    font-weight: 500 !important;
    font-family: inherit !important;
    line-height: 1.6 !important;
    color: #4a5568 !important;
    text-transform: none !important;
    letter-spacing: normal !important;
    margin-bottom: 0 !important;
    cursor: pointer;
}
.esf-rgpd-label .esf-rgpd-checkbox {
    margin-top: 3px;
    flex-shrink: 0;
    width: 16px;
    height: 16px;
    accent-color: #1a3a5c;
    cursor: pointer;
}
.esf-rgpd-label span {
    flex: 1;
    min-width: 0;
}
.esf-rgpd-label a {
    color: #2a5a8c !important;
    text-decoration: underline !important;
    text-transform: none !important;
    letter-spacing: normal !important;
    font-size: inherit !important;
}
.esf-rgpd-label a:hover {
    color: #ee6c00 !important;
}

/* ─── Accessibilité — WCAG 2.1 ─────────────────────────────────────────────── */

/* Classe utilitaire : masqué visuellement mais accessible aux lecteurs d'écran */
.esf-visually-hidden {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    padding: 0 !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important;
    white-space: nowrap !important;
    border: 0 !important;
}

/* Focus visible global — WCAG 2.1 critère 2.4.7 (AA) */
/* Garantit que tous les éléments interactifs affichent un indicateur de focus clair */
*:focus-visible {
    outline: 3px solid #F59E0B !important;
    outline-offset: 3px !important;
    border-radius: 3px !important;
    box-shadow: 0 0 0 5px rgba(245, 158, 11, 0.25) !important;
}

/* Liens dans le contenu */
a:focus-visible,
.elementor-widget-nav-menu a:focus-visible {
    outline: 3px solid #F59E0B !important;
    outline-offset: 2px !important;
    border-radius: 2px !important;
}

/* Boutons Elementor */
.elementor-button:focus-visible,
.e-n-tab-title:focus-visible,
button:focus-visible {
    outline: 3px solid #F59E0B !important;
    outline-offset: 3px !important;
    box-shadow: 0 0 0 5px rgba(245, 158, 11, 0.25) !important;
}

/* Inputs et selects */
input:focus-visible,
select:focus-visible,
textarea:focus-visible {
    outline: 3px solid #F59E0B !important;
    outline-offset: 0 !important;
    box-shadow: 0 0 0 4px rgba(245, 158, 11, 0.2) !important;
}

/* Skip link — déjà présent dans le thème Hello Elementor, on s'assure qu'il est visible au focus */
.skip-link:focus {
    display: block !important;
    position: fixed !important;
    top: 1rem !important;
    left: 1rem !important;
    z-index: 99999 !important;
    padding: 0.75rem 1.5rem !important;
    background: #1a3a5c !important;
    color: #fff !important;
    font-weight: 700 !important;
    font-size: 1rem !important;
    border-radius: 6px !important;
    text-decoration: none !important;
    outline: 3px solid #F59E0B !important;
}

/* Supprimer outline par défaut sur clic souris (mais le garder au clavier) */
:focus:not(:focus-visible) {
    outline: none !important;
    box-shadow: none !important;
}

