/* ═══════════════════════════════════════════════════════════════════════
 * CCBLA — Agenda Int/Ext (loop maison)
 * Layout grille + pagination GET-based + état chargement.
 *
 * La grille .ccbla-events-grid__list et les cards .ccbla-event-card
 * héritent de leurs styles respectifs (event-card.css est une dep).
 *
 * L'overlay de chargement .ccbla-loop-agenda--loading est dans
 * filters-agenda/style.css (toujours chargé en tandem sur la page).
 * ═══════════════════════════════════════════════════════════════════════ */

/* ── Wrapper région ─────────────────────────────────────────────────── */
.ccbla-loop-agenda--scolaire {
    position:       relative; /* nécessaire pour l'overlay ::after de filters-agenda */
    margin-top:     0;
    margin-bottom:  0;
    padding-top:    0;
    padding-bottom: 0;
}

/* ── Message vide ────────────────────────────────────────────────────── */
.ccbla-loop-agenda__empty {
    padding:     2.5rem 0;
    text-align:  center;
    font-size:   1rem;
    color:       #555;
    font-style:  italic;
}

/* ── Toolbar : (vide) | count | toggle ───────────────────────────────── */
.ccbla-loop-agenda--scolaire .ccbla-loop-agenda__toolbar {
    display:         flex;
    align-items:     center;
    margin:          0 0 1.25rem 0;
}

.ccbla-loop-agenda--scolaire .ccbla-loop-agenda__toolbar-left,
.ccbla-loop-agenda--scolaire .ccbla-loop-agenda__toolbar-center,
.ccbla-loop-agenda--scolaire .ccbla-loop-agenda__toolbar-right {
    flex: 1 1 33.333%;
    min-width: 0;
}

.ccbla-loop-agenda--scolaire .ccbla-loop-agenda__toolbar-center {
    text-align: center;
}
.ccbla-loop-agenda--scolaire .ccbla-toolbar__count {
    font-family: var(--wp--preset--font-family--agrandir-wide-medium, 'Agrandir Wide Medium', sans-serif);
    font-size:   16px;
    font-weight: 400;
    color:       #111;
    white-space: nowrap;
}

.ccbla-loop-agenda--scolaire .ccbla-loop-agenda__toolbar-right {
    display:         flex;
    justify-content: flex-end;
}

/* ── Grille (calque sur .ccbla-events-grid__list partagé) ─────────────── */
/* Défini ici pour que le bloc soit autonome même sans autre bloc events */
.ccbla-loop-agenda--scolaire .ccbla-events-grid__list {
    list-style:              none;
    margin:                  0;
    padding:                 0 !important;
    padding-left:            0 !important;
    display:                 grid;
    grid-template-columns:   repeat( 4, 1fr );
    gap:                     1.25rem;
}

.ccbla-loop-agenda--scolaire .ccbla-events-grid__item {
    display:        flex;
    flex-direction: column;
}
.ccbla-loop-agenda--scolaire .ccbla-events-grid__item .ccbla-event-card {
    flex: 1;
}

/* ── Responsive grille ───────────────────────────────────────────────── */
/* Tablette : 2 cols × 3 rangées = 6 items (JS gère per_page) */
@media ( max-width: 1099px ) {
    .ccbla-loop-agenda--scolaire .ccbla-events-grid__list {
        grid-template-columns: repeat( 2, 1fr );
    }
}
/* Mobile (<768px) : 1 col */
@media ( max-width: 767px ) {
    .ccbla-loop-agenda--scolaire .ccbla-events-grid__list {
        grid-template-columns: 1fr;
        gap: .85rem;
    }
}

/* ── État de chargement (AJAX pagination + init responsive) ────────── */
.ccbla-loop-agenda--loading {
    position: relative;
    min-height: 200px;
}
.ccbla-loop-agenda--loading::after {
    content: '';
    position: absolute;
    inset: 0;
    background: rgba( 255, 255, 255, .75 );
    z-index: 20;
    pointer-events: none;
}
.ccbla-loop-agenda--loading .ccbla-events-grid__list,
.ccbla-loop-agenda--loading .ccbla-loop-agenda__pagination,
.ccbla-loop-agenda--loading .ccbla-toolbar__count {
    opacity: .4;
    pointer-events: none;
    transition: opacity .15s ease;
}

/* ── Loader POP — haut du bloc ─────────────────────────────────────── */
.ccbla-loop-agenda__spinner {
    display: none;
    position: absolute;
    top: 18px;
    left: 50%;
    transform: translateX( -50% );
    z-index: 22;
    width: 42px;
    height: 42px;
    aspect-ratio: 1;
    border: 0;
    border-radius: 50%;
    background: transparent;
    pointer-events: none;
}
.ccbla-loop-agenda__spinner::before {
    content: '';
    position: absolute;
    inset: 0;
    border: var(--ccbla-pop-loader-ring-width) solid var(--ccbla-pop-loader-ring-color);
    border-top-color: var(--ccbla-pop-loader-ring-accent);
    border-radius: 50%;
    animation: ccbla-pop-loader-spin .9s linear infinite;
}
.ccbla-loop-agenda__spinner::after {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    width: var(--ccbla-pop-loader-badge-width);
    height: var(--ccbla-pop-loader-badge-height);
    transform: translate(-50%, -50%);
    border-radius: var(--ccbla-pop-loader-badge-radius);
    background-color: var(--ccbla-pop-loader-badge-bg);
    background-image: var(--ccbla-pop-loader-logo);
    background-position: center;
    background-repeat: no-repeat;
    background-size: var(--ccbla-pop-loader-logo-size);
}
.ccbla-loop-agenda--loading .ccbla-loop-agenda__spinner { display: block; }

/* ── Loader bas — pagination uniquement ─────────────────────────────── */
.ccbla-loop-agenda__spinner--bottom {
    top: auto;
    bottom: 18px;
}
.ccbla-loop-agenda--loading .ccbla-loop-agenda__spinner--bottom { display: none; }
.ccbla-loop-agenda--loading-pag .ccbla-loop-agenda__spinner--bottom { display: block; }

/* ── Screen-reader only ─────────────────────────────────────────────── */
.ccbla-loop-agenda .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;
}

/* ── Pagination ──────────────────────────────────────────────────────── */
.ccbla-loop-agenda__pagination {
    margin-top: 2.5rem;
}

.ccbla-loop-agenda__pagination .ccbla-pagination {
    display:         flex;
    justify-content: center;
}

.ccbla-loop-agenda__pagination .ccbla-pagination__list {
    list-style:      none;
    margin:          0;
    padding:         0;
    display:         flex;
    flex-wrap:       wrap;
    align-items:     center;
    justify-content: center;
    /* 2026-05-19 (passe pagination harmonisation — demande graphiste): gap unifié 15px sur toutes les paginations CCBLA. Anciennement.35rem. */
    gap:             15px;
}

.ccbla-loop-agenda__pagination .ccbla-pagination__item {
    display:     flex;
    align-items: center;
}

/* Bouton de base — 44×44px, border 1px solid #000, bg #FFF */
.ccbla-loop-agenda__pagination .ccbla-pagination__btn {
    display:         flex;
    width:           44px;
    height:          44px;
    padding:         10px;
    justify-content: center;
    align-items:     center;
    gap:             10px;
    border:          1px solid #000;
    background:      #FFF;
    color:           #111;
    font-family:     inherit;
    font-size:       .9rem;
    font-weight:     500;
    line-height:     1;
    text-decoration: none;
    text-transform:  uppercase;
    cursor:          pointer;
    box-sizing:      border-box;
    transition:      background .15s ease, border-color .15s ease, color .15s ease;
}
.ccbla-loop-agenda__pagination .ccbla-pagination__btn:not([disabled]):hover,
.ccbla-loop-agenda__pagination .ccbla-pagination__btn:not([disabled]):focus {
    /* 2026-05-19 (passe pagination harmonisation — demande graphiste): hover/focus unifié fond #111 + texte #fff sur tous les boutons (numéros, prev, next). Anciennement #f0f0f0 sur les numéros, dark sur prev/next — désormais cohérent partout. */
    background:   var(--wp--preset--color--pop-dark, #111);
    border-color: var(--wp--preset--color--pop-dark, #111);
    color:        #fff;
}
.ccbla-loop-agenda__pagination .ccbla-pagination__btn:focus-visible {
    outline:        3px solid #005fcc;
    outline-offset: 2px;
}

/* Flèches prev/next : hover dark + blanc (override du hover gris général) */
.ccbla-loop-agenda__pagination .ccbla-pagination__prev:not([disabled]):hover,
.ccbla-loop-agenda__pagination .ccbla-pagination__prev:not([disabled]):focus,
.ccbla-loop-agenda__pagination .ccbla-pagination__next:not([disabled]):hover,
.ccbla-loop-agenda__pagination .ccbla-pagination__next:not([disabled]):focus {
    background:   var(--wp--preset--color--pop-dark, #111);
    border-color: var(--wp--preset--color--pop-dark, #111);
    color:        #fff;
}

/* Page active */
.ccbla-loop-agenda__pagination .ccbla-pagination__btn--active,
.ccbla-loop-agenda__pagination .ccbla-pagination__btn[aria-current="page"] {
    background:     #111111;
    border-color:   #111111;
    color:          #fff;
    font-weight:    500;
    cursor:         default;
    pointer-events: none;
}

/* Ellipsis */
.ccbla-loop-agenda__pagination .ccbla-pagination__ellipsis {
    display:         flex;
    align-items:     center;
    justify-content: center;
    width:           44px;
    height:          44px;
    color:           #888;
    letter-spacing:  0;
}

/* Flèches : même taille, contenu centré */
.ccbla-loop-agenda__pagination .ccbla-pagination__prev,
.ccbla-loop-agenda__pagination .ccbla-pagination__next {
    font-size: 1.1rem;
}

@media ( max-width: 767px ) {
    .ccbla-loop-agenda__pagination .ccbla-pagination__btn {
        width:     36px;
        height:    36px;
        padding:   8px;
        font-size: .82rem;
    }
    .ccbla-loop-agenda__pagination .ccbla-pagination__ellipsis {
        width:  36px;
        height: 36px;
    }
}

/* ── Vue calendrier — masquage SSR initial ────────────────────────────── */
/* Le toolbar reste TOUJOURS visible (contient le toggle vue) */
.ccbla-loop-agenda--scolaire[data-current-view="calendrier"] .ccbla-events-grid__list,
.ccbla-loop-agenda--scolaire[data-current-view="calendrier"] .ccbla-loop-agenda__empty,
.ccbla-loop-agenda--scolaire[data-current-view="calendrier"] .ccbla-loop-agenda__pagination {
    display: none;
}

/* ── Responsive toolbar ──────────────────────────────────────────────── */
@media ( max-width: 767px ) {
    .ccbla-loop-agenda--scolaire .ccbla-loop-agenda__toolbar {
        flex-direction: column;      /* compteur AU-DESSUS des boutons Liste/Calendrier */
        align-items:    center;
        justify-content: center;
        gap:            10px;
    }
    .ccbla-loop-agenda--scolaire .ccbla-loop-agenda__toolbar-left {
        display: none; /* vide, pas besoin en mobile */
    }
    .ccbla-loop-agenda--scolaire .ccbla-loop-agenda__toolbar-center {
        order: 1;                    /* compteur en premier */
        flex: 0 0 auto;
        text-align: center;
        width: 100%;
    }
    .ccbla-loop-agenda--scolaire .ccbla-loop-agenda__toolbar-right {
        order: 2;                    /* puis les boutons */
        flex: 0 0 auto;
        justify-content: center;
        width: 100%;
    }
    .ccbla-loop-agenda--scolaire .ccbla-loop-agenda__toolbar-right .ccbla-view-toggle {
        justify-content: center;
    }
}
