.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;
    }
}


/* Animation, copies, pause, réduction de mouvement : moteur Bandeau du noyau
   (atgf-placement-rt.js, états `atp-is-marquee` / `atp-mq-run` dans atgf-placement.css). */

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

/* ============================================================
   Champ at_sticky — états posés par atgf-sticky.js
   (`is-stuck` / `is-parked` sont à styler par le site ; ici le
   strict nécessaire : l'effacement hors limite).
   ============================================================ */
.atgf-sticky--js {
    transition: opacity 0.2s ease, visibility 0.2s ease;
}

.atgf-sticky--js.is-out {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}
