/* ═══════════════════════════════════════════════════════════════════════
 * CCBLA — Grille Events (style partagé)
 * Hérite de event-card.css pour les cards individuelles.
 * Ce fichier gère uniquement le layout grille wrapper.
 *
 * Grille :  4 col ≥ 1100px · 3 col ≥ 800px · 2 col ≥ 520px · 1 col mobile
 * ═══════════════════════════════════════════════════════════════════════ */

/* ── Wrapper section ─────────────────────────────────────────────────── */
.ccbla-events-grid {
    margin: 0;
    padding: 0;
}

/* ── Liste (réinitialise ul) ─────────────────────────────────────────── */
.ccbla-events-grid__list {
    list-style: none;
    margin: 0;
    padding: 0;
    padding-left: 0 !important;
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 1.25rem;
}

/* ── Items ───────────────────────────────────────────────────────────── */
.ccbla-events-grid__item {
    /* Garantit que la card prend toute la hauteur de la cellule de grille */
    display: flex;
    flex-direction: column;
}
.ccbla-events-grid__item .ccbla-event-card {
    flex: 1;
}

/* ── Responsive ─────────────────────────────────────────────────────── */
@media (max-width: 1099px) {
    .ccbla-events-grid__list {
        grid-template-columns: repeat(3, 1fr);
    }
}

@media (max-width: 799px) {
    .ccbla-events-grid__list {
        grid-template-columns: repeat(2, 1fr);
        gap: 1rem;
    }
}


/* ── Mobile (<768px) — 1 colonne ─────────────────────────────────────── */
@media (max-width: 767px) {
    .ccbla-events-grid__list {
        grid-template-columns: 1fr;
        gap: .85rem;
    }
}

@media (max-width: 519px) {
    .ccbla-events-grid__list {
        grid-template-columns: 1fr;
        gap: .85rem;
    }
}


/* 2026-05-07 — Pagination AJAX + Titre + Loader POP Pattern copié d'agenda-int-ext mais SCOPÉ sur.ccbla-pem-loop pour éviter toute collision avec les autres blocs events qui partagent.ccbla-events-grid (prochain-events-nos-membres, event-lies-*, …). Particularité demandée: « loader POP aligné au milieu du bloc » → top: 50% au lieu de top: 18px (pattern agenda-int-ext). */

/* ── Wrapper en mode AJAX : positionnement relatif pour overlay ──────── */
.ccbla-pem-loop {
    position: relative;
}

/* ── Titre H2 in-block (pattern Kadence Advanced Heading h2) ─────────── */
.ccbla-pem-loop.ccbla-block-lies > .ccbla-block-lies__title {
    margin: 0 0 30px;
    font-size: 50px;
    line-height: 65px;
    font-weight: 400;
    font-family: 'Agrandir Wide Medium', sans-serif;
}

.ccbla-pem-loop.ccbla-block-lies > .ccbla-block-lies__empty {
    margin: 0;
    font-style: italic;
    color: #555;
}

@media (max-width: 1024px) {
    .ccbla-pem-loop.ccbla-block-lies > .ccbla-block-lies__title {
        margin-bottom: 35px; /* 2026-05-29 (Nic) : gap titre→grille 35px tablette/mobile (était 0) */
        font-size: 30px;
        line-height: 32px;
    }
}

/* 2026-05-29 (Nic, v2) — Titre centré UNIQUEMENT en mobile (≤767px) ; desktop + tablette restent alignés à gauche (défaut). */
@media (max-width: 767px) {
    .ccbla-pem-loop.ccbla-block-lies > .ccbla-block-lies__title {
        text-align: center;
    }
}


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


/* ── Loader POP — CENTRÉ au milieu du bloc (demande Nic 2026-05-07) ── Réutilise les CSS variables --ccbla-pop-loader-* déclarées dans style.css global du thème (L1129-1139). Pas de duplication. */
.ccbla-pem-loop__spinner {
    display: none;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: 22;
    width: var(--ccbla-pop-loader-size, 42px);
    height: var(--ccbla-pop-loader-size, 42px);
    aspect-ratio: 1;
    border: 0;
    border-radius: 50%;
    background: transparent;
    pointer-events: none;
}
.ccbla-pem-loop__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-pem-loop__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-pem-loop--loading .ccbla-pem-loop__spinner { display: block; }


/* ── Screen-reader only (live region) ────────────────────────────── */
.ccbla-pem-loop .ccbla-pem-loop__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 — pattern identique à agenda-int-ext ───────────────── */
.ccbla-pem-loop__pagination {
    margin-top: 2.5rem;
}

.ccbla-pem-loop__pagination .ccbla-pagination {
    display:         flex;
    justify-content: center;
}

.ccbla-pem-loop__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-pem-loop__pagination .ccbla-pagination__item {
    display:     flex;
    align-items: center;
}

/* Bouton de base — 44×44px, border 1px solid #000, bg #FFF */
.ccbla-pem-loop__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-pem-loop__pagination .ccbla-pagination__btn:not([disabled]):hover,
.ccbla-pem-loop__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-pem-loop__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-pem-loop__pagination .ccbla-pagination__prev:not([disabled]):hover,
.ccbla-pem-loop__pagination .ccbla-pagination__prev:not([disabled]):focus,
.ccbla-pem-loop__pagination .ccbla-pagination__next:not([disabled]):hover,
.ccbla-pem-loop__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-pem-loop__pagination .ccbla-pagination__btn--active,
.ccbla-pem-loop__pagination .ccbla-pagination__btn[aria-current="page"] {
    background:     #111111;
    border-color:   #111111;
    color:          #fff;
    font-weight:    500;
    cursor:         default;
    pointer-events: none;
}

/* Ellipsis */
.ccbla-pem-loop__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-pem-loop__pagination .ccbla-pagination__prev,
.ccbla-pem-loop__pagination .ccbla-pagination__next {
    font-size: 1.1rem;
}

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

/* 2026-06-03 (Nic) — Bouton « voir tous » intégré au bloc (pattern event-lies-*).
 * __cta-wrap scopé --membre : gap bouton→(grille/pagination) = 30px desktop,
 * 35px ≤1024px (mirror titre→grille). Règles .ccbla-block-lies__cta + hover/focus
 * reprises à l'identique d'event-lies-projets/style.css pour rendre le bloc
 * autonome (CSS des blocs ACF chargé conditionnellement). Si ce bloc coexiste
 * avec un bloc liés-* sur une page, .ccbla-block-lies__cta est défini 2× à
 * l'identique → no-op cascade. */
.ccbla-events-grid--membre.ccbla-block-lies > .ccbla-block-lies__cta-wrap {
    margin: 30px 0 0;
    text-align: center;
}

@media (max-width: 1024px) {
    .ccbla-events-grid--membre.ccbla-block-lies > .ccbla-block-lies__cta-wrap {
        margin-top: 35px;
    }
}

.ccbla-block-lies__cta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    min-height: 44px;
    font-family: var(--font-heading, var(--wp--preset--font-family--agrandir-wide-medium, 'Agrandir Wide Medium', sans-serif));
    font-size: 20px;
    line-height: 1;
    background-color: var(--pop-white);
    color: var(--pop-dark);
    border: 1px solid var(--pop-dark);
    border-radius: 0;
    padding-block: 12px 10px;
    padding-inline: 10px;
    text-transform: uppercase;
    font-weight: 500;
    box-shadow: none;
    text-box-trim: trim-both;
    text-box-edge: cap alphabetic;
    text-decoration: none;
    transition: background-color .18s ease, border-color .18s ease, color .18s ease;
}

.ccbla-block-lies__cta:hover,
.ccbla-block-lies__cta:focus-visible {
    background-color: var(--pop-dark);
    color: var(--pop-white);
    border-color: var(--pop-dark);
}
