/* Parent .bloom-locations : deux conteneurs natifs puis le widget du plan. */
.bloom-locations {
    position: relative;
    overflow: clip;
    isolation: isolate;
}

.bloom-locations > .e-con-inner {
    position: relative;
    isolation: isolate;
}

.bloom-locations :is(.bloom-location, [data-bloom-location]) {
    position: relative;
    z-index: 1;
    isolation: isolate;
    overflow: hidden;
    background: transparent !important;
}

/* Remove native overlays: all decorative layers now belong to the widget. */
.bloom-locations :is(.bloom-location, [data-bloom-location])::before {
    content: none !important;
}

.bloom-locations .elementor-widget-bloom-locations-overlay {
    --bloom-opacity-idle: .48;
    --bloom-opacity-active: .72;
    --bloom-opacity-inactive: .18;
    --bloom-hover-zoom: 1.1;
    position: absolute;
    /* No stacking context: backgrounds and SVG surround the sibling columns. */
    z-index: auto !important;
    isolation: auto;
    transform: none;
    opacity: 1;
    inset: 0;
    width: 100%;
    height: 100%;
    margin: 0 !important;
    pointer-events: none;
}

.bloom-locations .elementor-widget-bloom-locations-overlay > .elementor-widget-container,
.bloom-locations .bloom-locations-overlay {
    position: static;
    z-index: auto;
    isolation: auto;
    display: block;
    width: 100%;
    height: 100%;
}

.bloom-locations-overlay__background {
    --bloom-overlay-color: #000;
    position: absolute;
    z-index: 0;
    top: 0;
    bottom: 0;
    width: 50%;
    overflow: hidden;
    background: #242424;
    pointer-events: none;
}

.bloom-locations-overlay__background--left {
    left: 0;
}

.bloom-locations-overlay__background--right {
    left: 50%;
}

.bloom-locations-overlay__background img {
    display: block;
    width: 100%;
    height: 100%;
    max-width: none;
    object-fit: cover;
    object-position: center;
    transform: scale(1);
    transition: transform .45s ease;
}

.bloom-locations-overlay__background::after {
    position: absolute;
    inset: 0;
    content: '';
    background: var(--bloom-overlay-color, #000);
    opacity: var(--bloom-opacity-idle, .48);
    transition: opacity .35s ease;
}

.bloom-locations-overlay__background.is-active img {
    transform: scale(var(--bloom-hover-zoom, 1.1));
}

.bloom-locations-overlay__background.is-active::after {
    opacity: var(--bloom-opacity-active, .72);
}

.bloom-locations-overlay__background.is-inactive::after {
    opacity: var(--bloom-opacity-inactive, .18);
}

.bloom-locations-overlay__svg {
    display: block;
    position: absolute;
    z-index: 2;
    inset: 0;
    width: 100%;
    height: 100%;
    overflow: hidden;
    pointer-events: none;
}

.bloom-locations-overlay__svg--mobile {
    display: none;
}

.bloom-locations-overlay__marker-ring {
    fill: #fff;
    transform-box: fill-box;
    transform-origin: center;
    transform: scale(1);
    transition: fill .25s ease, transform .25s ease, opacity .25s ease;
}

.bloom-locations-overlay__marker-dot--blue {
    fill: #305cea;
    transform-box: fill-box;
    transform-origin: center;
    transform: scale(1);
    transition: transform .25s ease, fill .25s ease, opacity .25s ease;
}

.bloom-locations-overlay__marker-dot--yellow {
    fill: #f7c940;
    transition: transform .25s ease, fill .25s ease, opacity .25s ease;
}

.bloom-locations-overlay__label {
    fill: #fff;
    font-family: 'Paralucent', Inter, Arial, sans-serif;
    font-size: 18px;
    transition: opacity .25s ease;
}

.bloom-locations-overlay__label.bold {
    font-weight: 700;
}

.bloom-locations-overlay__background--left.is-active ~ .bloom-locations-overlay__svg .bloom-locations-overlay__marker--left .bloom-locations-overlay__marker-ring {
    fill: #305cea;
    transform: scale(1.2);
}

.bloom-locations-overlay__background--left.is-active ~ .bloom-locations-overlay__svg .bloom-locations-overlay__marker-dot--blue,
.bloom-locations-overlay__background--right.is-active ~ .bloom-locations-overlay__svg .bloom-locations-overlay__marker-dot--yellow {
    fill: #fff;
}

.bloom-locations-overlay__background--right.is-active ~ .bloom-locations-overlay__svg .bloom-locations-overlay__marker--right .bloom-locations-overlay__marker-ring {
    fill: #f7c940;
    transform: scale(1.2);
}

.bloom-locations-overlay__background--left.is-active ~ .bloom-locations-overlay__svg .bloom-locations-overlay__marker-dot--yellow,
.bloom-locations-overlay__background--right.is-active ~ .bloom-locations-overlay__svg .bloom-locations-overlay__marker-dot--blue,
.bloom-locations-overlay__background--left.is-active ~ .bloom-locations-overlay__svg .bloom-locations-overlay__marker--right .bloom-locations-overlay__marker-ring,
.bloom-locations-overlay__background--right.is-active ~ .bloom-locations-overlay__svg .bloom-locations-overlay__marker--left .bloom-locations-overlay__marker-ring,
.bloom-locations-overlay__background--left.is-active ~ .bloom-locations-overlay__svg .bloom-locations-overlay__marker--right .bloom-locations-overlay__label,
.bloom-locations-overlay__background--right.is-active ~ .bloom-locations-overlay__svg .bloom-locations-overlay__marker--left .bloom-locations-overlay__label {
    opacity: 0.5;
}

.bloom-locations :is(.bloom-reveal, [data-bloom-reveal]) {
    visibility: hidden;
    opacity: 0;
    pointer-events: none;
    transform: translateY(14px);
    transition: opacity .3s ease, transform .3s ease, visibility 0s linear .3s;
}

.bloom-locations :is(.bloom-location, [data-bloom-location]):is(:hover, :focus, :focus-within) :is(.bloom-reveal, [data-bloom-reveal]) {
    visibility: visible;
    opacity: 1;
    pointer-events: auto;
    transform: translateY(0);
    transition-delay: .08s;
}

.bloom-locations:has(.bloom-location:hover, .bloom-location:focus, .bloom-location:focus-within, [data-bloom-location]:hover, [data-bloom-location]:focus, [data-bloom-location]:focus-within) :is(.bloom-location, [data-bloom-location]):not(:hover):not(:focus):not(:focus-within) .bloom-dim-on-other {
    opacity: .28;
    transform: scale(.96);
}

.bloom-locations .bloom-dim-on-other {
    transition: opacity .3s ease, transform .3s ease, top 0.25s ease;
    position: relative;
    top: 100px;
}

.bloom-locations :is(.bloom-location--bloom, [data-bloom-location="bloom"]):is(:hover, :focus, :focus-within) .bloom-dim-on-other,
.bloom-locations :is(.bloom-location--maison, [data-bloom-location="maison"]):is(:hover, :focus, :focus-within) .bloom-dim-on-other {
    top: 0;
}

.bloom-locations :is(.bloom-location, [data-bloom-location]):focus {
    outline: 3px solid #fff;
    outline-offset: -8px;
}

body.elementor-editor-active .bloom-locations :is(.bloom-reveal, [data-bloom-reveal]) {
    visibility: visible;
    opacity: 1;
    pointer-events: auto;
    transform: none;
    transition: none;
}

@media (hover: none), (prefers-reduced-motion: reduce) {
    .bloom-locations :is(.bloom-reveal, [data-bloom-reveal]) {
        visibility: visible;
        opacity: 1;
        pointer-events: auto;
        transform: none;
        transition: none;
    }

    .bloom-locations :is(.bloom-location--bloom, [data-bloom-location="bloom"]) .bloom-dim-on-other,
    .bloom-locations :is(.bloom-location--maison, [data-bloom-location="maison"]) .bloom-dim-on-other {
        top: 0;
    }
}

@media (prefers-reduced-motion: reduce) {
    .bloom-locations-overlay__background img,
    .bloom-locations-overlay__background::after,
    .bloom-locations-overlay__marker-ring,
    .bloom-locations-overlay__marker-dot--blue,
    .bloom-locations-overlay__marker-dot--yellow,
    .bloom-locations .bloom-dim-on-other {
        transition: none;
    }

    .bloom-locations-overlay__background.is-active img {
        transform: none;
    }
}

@media (max-width: 1232px) {
    .bloom-locations .bloom-locations-container > .elementor-container {
        flex-wrap: wrap!important;
    }

    .bloom-locations .bloom-location{
        width: 100%!important;
    }

    .bloom-locations .bloom-location > .elementor-widget-wrap{
        padding: 80px 30px!important;
    }

    .bloom-locations .bloom-location > .elementor-widget-wrap .bloom-dim-on-other{
        max-width: 400px;
        margin: auto;
    }

    .bloom-locations-overlay__svg--desktop {
        display: none;
    }

    .bloom-locations-overlay__svg--mobile {
        display: block;
    }

    .bloom-locations-overlay__road--mobile path {
        fill: none;
    }

    .bloom-locations-overlay__label--mobile {
        font-size: 14px;
    }

    /* La version mobile est statique : aucune zone ne devient active. */
    .bloom-locations-overlay__background img,
    .bloom-locations-overlay__background.is-active img {
        transform: scale(1) !important;
    }

    .bloom-locations-overlay__background::after,
    .bloom-locations-overlay__background.is-active::after,
    .bloom-locations-overlay__background.is-inactive::after {
        opacity: var(--bloom-opacity-idle, .48) !important;
    }

    .bloom-locations .bloom-dim-on-other {
        position: relative;
        top: 0;
        opacity: 1;
        transform: none;
    }

    /* Les textes restent masqués. Marque le widget Bouton avec
       bloom-reveal--button si bloom-reveal est posé sur un conteneur parent. */
    .bloom-locations :is(.bloom-reveal, [data-bloom-reveal]) {
        visibility: hidden !important;
        opacity: 0 !important;
        pointer-events: none !important;
        height: 0;
        transform: translateY(14px) !important;
    }

    .bloom-locations :is(
        .bloom-reveal.elementor-widget-button,
        .bloom-reveal--button,
        [data-bloom-reveal-button]
    ) {
        visibility: visible !important;
        opacity: 1 !important;
        pointer-events: auto !important;
        height: auto;
        transform: none !important;
        transition: none;
    }

    /* Fallback before the geometry script aligns unequal-height columns. */
    .bloom-locations-overlay__background {
        left: 0;
        width: 100%;
        height: 50%;
        bottom: auto;
    }

    .bloom-locations-overlay__background--right {
        top: 50%;
    }
}

