/*
 * pub_carousel_public.css
 *
 * Rendu PUBLIC du carrousel d'images (PE3 recap client, PE4 client, PE4 ouvert).
 *
 * Specs :
 *  - Ratio 16/9 (largeur de la publication, hauteur calee)
 *  - Fond gris #F5F5F5 si l'image ne remplit pas le cadre (object-fit: contain)
 *  - Boutons Precedent/Suivant noir/blanc (charte v8, aucun bleu)
 *  - Indicators (puces) noires
 *  - Focus visible accessible (outline noir 2px)
 *  - Pas d'auto-rotate (RGAA)
 *  - Fonctionne sans JS : premiere slide visible + a11y conservee
 */

.pub-carousel {
    position: relative;
    width: 100%;
    margin: 0 0 20px;
    box-sizing: border-box;
}

/* === Viewport + track === */
.pub-carousel-viewport {
    position: relative;
    overflow: hidden;
    border-radius: var(--radius, 8px);
    background: #F5F5F5;
}

.pub-carousel-track {
    list-style: none;
    margin: 0;
    padding: 0;
    /* En mode JS, on n'utilise pas le scroll horizontal : on toggle .is-active.
       En no-JS, seule la 1ere slide est visible et les suivantes sont en
       dessous (display:none) — fallback degrade mais accessible. */
}

.pub-carousel-slide {
    /* En mode JS : .is-active visible, autres masquees */
    display: none;
    margin: 0;
    padding: 0;
}

.pub-carousel-slide.is-active {
    display: block;
}

/* Cadre image avec ratio 16/9 + fond gris si l'image est plus petite */
.pub-carousel-slide-frame {
    position: relative;
    width: 100%;
    aspect-ratio: 16 / 9;
    background: #F5F5F5;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
}

.pub-carousel-slide-frame img {
    max-width: 100%;
    max-height: 100%;
    width: auto;
    height: auto;
    object-fit: contain;
    display: block;
}

/* Caption sous l'image (legende + copyright) */
.pub-carousel-caption {
    margin: 0;
    padding: 8px 4px 0;
    font-size: 13px;
    color: #555;
    line-height: 1.4;
}

.pub-carousel-caption-copyright {
    color: #888;
    font-style: italic;
}

/* === Controles (Prev / Next + Indicators) === */
.pub-carousel-controls {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    margin-top: 12px;
}

.pub-carousel-prev,
.pub-carousel-next {
    border: 1px solid #0A0A0A;
    background: #ffffff;
    color: #0A0A0A;
    width: 36px;
    height: 36px;
    border-radius: var(--radius, 8px);
    cursor: pointer;
    font-size: 16px;
    line-height: 1;
    padding: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background 0.15s ease, color 0.15s ease;
}

.pub-carousel-prev:hover,
.pub-carousel-next:hover,
.pub-carousel-prev:focus-visible,
.pub-carousel-next:focus-visible {
    background: #0A0A0A;
    color: #ffffff;
    outline: none;
}

.pub-carousel-prev:focus-visible,
.pub-carousel-next:focus-visible {
    outline: 2px solid #0A0A0A;
    outline-offset: 2px;
}

.pub-carousel-prev[disabled],
.pub-carousel-next[disabled] {
    opacity: 0.35;
    cursor: not-allowed;
}

/* Indicators : puces */
.pub-carousel-indicators {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    align-items: center;
    gap: 6px;
}

.pub-carousel-indicators li {
    margin: 0;
    padding: 0;
}

.pub-carousel-indicators button {
    width: 10px;
    height: 10px;
    padding: 0;
    border: 1px solid #0A0A0A;
    background: #ffffff;
    border-radius: 50%;
    cursor: pointer;
    transition: background 0.15s ease;
}

.pub-carousel-indicators button[aria-current="true"] {
    background: #0A0A0A;
}

.pub-carousel-indicators button:focus-visible {
    outline: 2px solid #0A0A0A;
    outline-offset: 2px;
}

/* Counter pour lecteurs d'ecran uniquement */
.pub-carousel-counter.sr-only,
.pub-carousel .sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}
