.et_pb_code_inner:has(.acf_image),
.et_pb_code_inner:has(.acf_image) *,
.et_pb_text_inner:has(.acf_image) *,
.et_pb_text_inner:has(.acf_image) {
    height: inherit;
    max-height: inherit;
}

*:has(>.acf_image) {
    height: inherit;
    max-height: inherit;
}

.acf_image {
    max-width: 100%;
    vertical-align: middle;
    max-height: inherit;

    &.full {
        width: 100%;
    }

    &.cover {
        width: 100%;
        height: 100%;
        object-fit: cover;
        position: absolute;
    }

}

.et_pb_code:has(.acf_image.cover),
.et_pb_text:has(.acf_image.cover),
.et-l--body:has(.acf_image.cover),
.et_pb_code_inner:has(.acf_image.cover),
.et_pb_text_inner:has(.acf_image.cover) {
    position: relative;
    height: 100%;
}

.at-marquee-wrapper {
    overflow: hidden;
    width: 100%;
    display: flex;

    .track {
        display: flex;
        white-space: nowrap;
        will-change: transform;
        /* La piste est plus large que sa zone visible : sans ça, elle est un
           item flex compressible et se ferait rétrécir au lieu de déborder. */
        flex: none;
    }
}


/* Mode répétition : la piste est remplie de clones, un demi-tour suffit à
   boucler sans raccord visible. */
@keyframes at-marquee-scroll {
    from {
        transform: translateX(0);
    }

    to {
        transform: translateX(-50%);
    }
}

/* Mode passage unique (data-repeat="0") : le contenu n'est pas dupliqué, il
   traverse la zone. Les bornes sont calculées en pixels par initMarquee, car
   elles mélangent la largeur de la zone visible et celle de la piste. */
@keyframes at-marquee-scroll-once {
    from {
        transform: translateX(var(--at-marquee-from, 100%));
    }

    to {
        transform: translateX(var(--at-marquee-to, -100%));
    }
}

body:has(#wp-adminbar) {
    .sdui-sticky-content.is-active {}
}

/* Optionnel : Pause au survol */
/* .at-marquee-wrapper:hover .track {
  animation-play-state: paused;
} */