/*
 * Careil — Visites à venir
 * Toute l'apparence passe par les variables ci-dessous : une refonte = modifier ces valeurs
 * (ici, ou dans le CSS additionnel du thème en redéfinissant :root { --cv-… }).
 * Valeurs par défaut = design actuel de l'accueil (cartes #fafafa, titres 30px/900 en capitales).
 */
:root {
    --cv-accent: var(--accent, #1e73be);
    --cv-texte: var(--contrast, #222);
    --cv-texte-doux: var(--contrast-2, #575760);
    --cv-fond-carte: #fafafa;
    --cv-fond-fort: #f3efe6;
    --cv-bordure: rgba(0, 0, 0, .08);
    --cv-filet: rgba(0, 0, 0, .25);
    --cv-rayon: 0;
    --cv-espace: 20px;
    --cv-pad: 20px;
    --cv-colonnes: 3;
    --cv-titre-taille: 30px;
    --cv-titre-graisse: 900;
    --cv-titre-casse: uppercase;
    --cv-etat-taille: 20px;
    --cv-etat-graisse: 700;
    --cv-badge-fond: #fff;
    --cv-badge-texte: var(--cv-texte);
    --cv-libre: #2e7d32;
    --cv-libre-fond: rgba(46, 125, 50, .08);
    --cv-requise-fond: rgba(30, 115, 190, .08);
    --cv-limite: #8a5a00;
    --cv-complet: #b32d2e;
    --cv-relatif-fond: var(--cv-accent);
    --cv-relatif-texte: #fff;
    --cv-btn-fond: var(--cv-accent);
    --cv-btn-texte: #fff;
    --cv-btn-fiche-fond: var(--cv-btn-fond);
    --cv-btn-fiche-texte: var(--cv-btn-texte);
    --cv-bandeau-fond: #1b1b1b;
    --cv-bandeau-texte: #fff;
    --cv-bandeau-fort-fond: #7a1f2b;
    --cv-etiquette-accent: var(--cv-accent);
    --cv-pastille-fond: #fff;
    --cv-quand-fond: #fff;
    --cv-quand-rayon: 6px;
    --cv-pastille-largeur: 52px;
    --cv-pastille-hauteur: 62px;
    --cv-etiquette-or: #a67c00;
    --cv-etiquette-bordeaux: #7a1f2b;
    --cv-etiquette-vert: #2e6b3a;
    --cv-etiquette-bleu: #1f4e79;
}

/* ---------- Module ---------- */
.cv-module { display: grid; gap: var(--cv-espace); }
.cv-module__titre { margin: 0; }

.cv-cartes {
    display: grid;
    gap: var(--cv-espace);
    grid-template-columns: repeat(var(--cv-colonnes), minmax(0, 1fr));
}
@media (max-width: 1024px) { .cv-cartes { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px)  { .cv-cartes { grid-template-columns: 1fr; } }

/* ---------- Carte ---------- */
.cv-carte {
    position: relative;
    display: flex;
    flex-direction: column;
    background: var(--cv-fond-carte);
    border-radius: var(--cv-rayon);
    padding: var(--cv-pad);
    color: var(--cv-texte);
}
.cv-carte__media { position: relative; display: block; margin: 0 0 16px; }
.cv-carte__img { display: block; width: 100%; aspect-ratio: 16 / 9; object-fit: cover; }
/* Badge du type et « Ce soir / Demain » posés sur la photo (en haut, à gauche et à droite). */
.cv-carte__badges--photo {
    position: absolute;
    top: calc(var(--cv-pad) + 10px);
    left: calc(var(--cv-pad) + 10px);
    right: calc(var(--cv-pad) + 10px);
    justify-content: space-between;
    pointer-events: none;
}
.cv-carte__badges--photo .cv-badge { border-color: transparent; box-shadow: 0 1px 2px rgba(0, 0, 0, .15); }
.cv-carte__corps { display: flex; flex-direction: column; gap: 12px; flex: 1; }
/* Zones de hauteur fixe : les cartes d'une rangée restent alignées. */
.cv-carte__badges { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 12px; }
.cv-carte__titre,
.cv-fort__titre {
    margin: 0;
    font-size: var(--cv-titre-taille);
    font-weight: var(--cv-titre-graisse);
    text-transform: var(--cv-titre-casse);
    line-height: 1.15;
}
.cv-carte__titre a,
.cv-fort__titre a { color: inherit; text-decoration: none; }
.cv-carte__titre a:hover,
.cv-fort__titre a:hover { text-decoration: underline; }
.cv-carte__accroche {
    margin: 0;
    color: var(--cv-texte-doux);
    line-height: 1.5;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    line-clamp: 2;
    overflow: hidden;
}
@media (min-width: 641px) {
    .cv-carte__titre { min-height: calc(2em * 1.15); }
    .cv-carte__accroche { min-height: calc(2em * 1.5); }
}
/* Mobile : cartes empilées, rien à aligner → accroche entière. */
@media (max-width: 640px) {
    .cv-carte__accroche { display: block; -webkit-line-clamp: unset; line-clamp: none; overflow: visible; }
}
.cv-carte__infos { display: grid; gap: 0; font-size: .9em; }
.cv-carte__infos p { margin: 0; }
/* Tarifs isolés en petits blocs : prix en gras au-dessus, public en dessous, filet entre deux blocs. */
.cv-carte__tarifs { display: flex; flex-wrap: nowrap; align-items: stretch; margin: 6px 0 16px !important; }
.cv-carte__tarifs .cv-sep { display: none; }
.cv-carte__tarifs .cv-tarif {
    display: flex;
    flex-direction: column-reverse;
    align-items: flex-start;
    padding: 0 14px;
    border-left: 1px solid var(--cv-filet);
    font-size: .85em;
    line-height: 1.25;
    white-space: nowrap;
    color: var(--cv-texte-doux);
}
.cv-carte__tarifs .cv-tarif:first-child { padding-left: 0; border-left: 0; }
.cv-carte__tarifs .cv-tarif strong { font-size: 1.45em; color: var(--cv-texte); }
.cv-carte__resa { display: flex; align-items: center; gap: 6px; color: var(--cv-texte-doux); }
.cv-carte__resa--repli { display: block; font-style: italic; }
.cv-rythme { font-weight: var(--cv-etat-graisse); }
.cv-repli { margin: 0; font-style: italic; color: var(--cv-texte-doux); }
.cv-note { margin: 0; font-size: .9em; color: var(--cv-texte-doux); }
.cv-module__paiement { margin: 0; text-align: center; font-size: .9em; color: var(--cv-texte-doux); }

/* ---------- Icônes ---------- */
.cv-ico { width: 1.1em; height: 1.1em; flex: none; vertical-align: -.2em; }

/* ---------- Zone « quand » : encadré qui détache les dates du reste de la carte ---------- */
.cv-quand {
    display: grid;
    gap: 10px;
    margin: 4px 0 8px;
    padding: 12px;
    background: var(--cv-quand-fond);
    border: 1px solid var(--cv-bordure);
    border-radius: var(--cv-quand-rayon);
}
.cv-quand .cv-pastille { background: var(--cv-fond-carte); }
.cv-quand .cv-horaires { margin: 0; }

/* ---------- Pastilles de calendrier ---------- */
.cv-pastilles { display: flex; flex-wrap: wrap; gap: 6px; min-height: var(--cv-pastille-hauteur); }
.cv-pastille {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-width: var(--cv-pastille-largeur);
    height: var(--cv-pastille-hauteur);
    padding: 0 6px;
    background: var(--cv-pastille-fond);
    border: 1px solid var(--cv-bordure);
    border-radius: 4px;
    line-height: 1.1;
    text-align: center;
    color: var(--cv-texte);
    text-decoration: none;
}
.cv-pastille__jour,
.cv-pastille__mois { font-size: .72rem; text-transform: uppercase; letter-spacing: .03em; color: var(--cv-texte-doux); }
.cv-pastille__num { font-size: 1.35rem; font-weight: 700; }
.cv-pastille--prochaine { border: 2px solid var(--cv-accent); }
.cv-pastille--complet .cv-pastille__num { text-decoration: line-through; color: var(--cv-texte-doux); }
.cv-pastille--complet .cv-pastille__mois { color: var(--cv-complet); }
.cv-pastille--plus { background: transparent; border-style: dashed; }
.cv-pastille--plus:hover { border-color: var(--cv-accent); }
.cv-pastille--repli { align-items: flex-start; padding: 0 12px; }
.cv-pastille--repli .cv-pastille__num { font-size: 1.1rem; }
.cv-horaires { display: flex; flex-wrap: wrap; gap: 4px 16px; margin: -6px 0 0; font-size: .9em; color: var(--cv-texte-doux); min-height: 1.5em; }
.cv-horaires__item { display: inline-flex; align-items: center; gap: 5px; }
.cv-horaires__rythme { flex-basis: 100%; }

.cv-infos { margin: 0; display: grid; gap: 4px; font-size: .9em; }
.cv-infos div { display: flex; gap: 8px; }
.cv-infos dt { font-weight: 700; flex: none; width: 5.5em; }
.cv-infos dd { margin: 0; }
.cv-tarif { white-space: nowrap; }
.cv-tarifs { margin: 0; font-size: .9em; }

.cv-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-top: auto; padding-top: 6px; }
.cv-carte .cv-actions { flex-direction: column; align-items: stretch; gap: 8px; }
.cv-carte .cv-actions .cv-resa { display: flex; }
.cv-carte .cv-actions .cv-btn { flex: 1; min-height: 3.4em; }
.cv-carte .cv-lien--secondaire { text-align: center; min-height: 1.4em; }
.cv-lien { font-weight: 700; }
.cv-lien--secondaire { font-weight: 400; font-size: .9em; color: var(--cv-texte-doux); text-decoration: underline; }
.cv-btn--fiche { background: var(--cv-btn-fiche-fond); color: var(--cv-btn-fiche-texte); }
.cv-btn--fiche:hover,
.cv-btn--fiche:focus { color: var(--cv-btn-fiche-texte); }

/* ---------- Badges & boutons ---------- */
.cv-badge,
.cv-etiquette {
    display: inline-block;
    padding: 2px 8px;
    font-size: .75rem;
    font-weight: 700;
    letter-spacing: .03em;
    text-transform: uppercase;
    line-height: 1.6;
    border-radius: 2px;
    background: var(--cv-badge-fond);
    color: var(--cv-badge-texte);
    border: 1px solid var(--cv-bordure);
}
.cv-badge--libre { color: var(--cv-libre); }
.cv-badge--limite { color: var(--cv-limite); }
.cv-badge--complet { color: #fff; background: var(--cv-complet); border-color: var(--cv-complet); }
.cv-badge--relatif { background: var(--cv-relatif-fond); color: var(--cv-relatif-texte); border-color: transparent; }
.cv-etiquette { color: #fff; background: var(--cv-etiquette-accent); border-color: transparent; }
.cv-etiquette--or { background: var(--cv-etiquette-or); }
.cv-etiquette--bordeaux { background: var(--cv-etiquette-bordeaux); }
.cv-etiquette--vert { background: var(--cv-etiquette-vert); }
.cv-etiquette--bleu { background: var(--cv-etiquette-bleu); }

.cv-resa { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.cv-btn {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    line-height: 1.2;
    text-align: center;
    padding: 8px 16px;
    background: var(--cv-btn-fond);
    color: var(--cv-btn-texte);
    font-weight: 700;
    text-decoration: none;
    border-radius: var(--cv-rayon);
}
.cv-btn:hover,
.cv-btn:focus { color: var(--cv-btn-texte); opacity: .9; }
/* Plus précis que « .inside-article a » de GeneratePress (classe doublée), où que soit placé le bouton. */
a.cv-btn.cv-btn,
a.cv-btn.cv-btn:visited,
a.cv-btn.cv-btn:hover,
a.cv-btn.cv-btn:focus { color: var(--cv-btn-texte); }
a.cv-btn.cv-btn--fiche,
a.cv-btn.cv-btn--fiche:visited,
a.cv-btn.cv-btn--fiche:hover,
a.cv-btn.cv-btn--fiche:focus { color: var(--cv-btn-fiche-texte); }
.cv-btn__l1 { font-weight: 700; }
.cv-btn__l2 { font-weight: 400; font-size: .85em; }

/* ---------- Temps forts ---------- */
.cv-forts { display: grid; gap: var(--cv-espace); }
.cv-fort {
    display: grid;
    grid-template-columns: minmax(0, 2fr) minmax(0, 3fr);
    gap: var(--cv-espace);
    align-items: center;
    background: var(--cv-fond-fort);
    padding: var(--cv-pad);
    border-radius: var(--cv-rayon);
    border-left: 6px solid var(--cv-etiquette-accent);
}
.cv-fort__img { display: block; width: 100%; aspect-ratio: 16 / 9; object-fit: cover; }
.cv-fort__corps { display: flex; flex-direction: column; gap: 10px; align-items: flex-start; }
.cv-fort__dates { margin: 0; }
@media (max-width: 640px) { .cv-fort { grid-template-columns: 1fr; } }

/* ---------- Fiche d'une visite : prochaines séances + infos pratiques ---------- */
.cv-fiche-visite {
    display: grid;
    grid-template-columns: minmax(0, 1.7fr) minmax(0, 1fr);
    gap: 32px;
    align-items: start;
    text-align: left;
}
@media (max-width: 900px) { .cv-fiche-visite { grid-template-columns: 1fr; } }
.cv-fiche-visite__titre { margin: 0 0 12px; font-size: 1.25em; }
.cv-fiche-visite__plus { margin: 12px 0 0; }
.cv-fiche-visite__infos {
    padding: 16px 18px;
    background: var(--cv-quand-fond);
    border: 1px solid var(--cv-bordure);
    border-radius: var(--cv-quand-rayon);
}
.cv-fiche-visite__resa { margin: 0 0 16px; padding: 10px 12px; border-radius: 4px; }
.cv-fiche-visite__resa p { margin: 0; display: flex; gap: 8px; align-items: center; font-weight: 700; }
.cv-fiche-visite__resa--libre { background: var(--cv-libre-fond); color: var(--cv-libre); }
.cv-fiche-visite__resa--requise { background: var(--cv-requise-fond); color: var(--cv-accent); }
.cv-fiche-visite__resa .cv-fiche-visite__limite { margin-top: 2px; padding-left: calc(1.1em + 8px); font-size: .85em; font-weight: 400; color: var(--cv-limite); }
.cv-fiche-visite__bloc { padding: 12px 0; border-top: 1px solid var(--cv-bordure); }
.cv-fiche-visite__intitule { margin: 0 0 6px; font-size: .78em; text-transform: uppercase; letter-spacing: .04em; color: var(--cv-texte-doux); }
.cv-fiche-visite__infos .cv-carte__tarifs { margin: 0 !important; }
.cv-fiche-visite__liste { list-style: none; margin: 0; padding: 14px 0 0; border-top: 1px solid var(--cv-bordure); display: grid; gap: 10px; font-size: .9em; color: var(--cv-texte-doux); }
.cv-fiche-visite__liste li { display: flex; gap: 8px; align-items: flex-start; margin: 0; }
.cv-fiche-visite__liste .cv-ico { margin-top: .15em; }
.cv-quand--repli { display: flex; gap: 14px; align-items: center; }
.cv-quand--repli .cv-repli { margin: 0; }

/* ---------- Lignes de séances (fiche et agenda) ---------- */
.cv-jours { list-style: none; margin: 0; padding: 0; }
.cv-jour {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    gap: 16px;
    align-items: center;
    margin: 0;
    padding: 12px 0;
    border-bottom: 1px solid var(--cv-bordure);
}
.cv-jour__titre { margin: 0; font-weight: 700; display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.cv-jour__titre a { color: inherit; }
.cv-jour__heures { margin: 6px 0 0; display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.cv-heure { padding: 1px 8px; font-size: .9em; background: #fff; border: 1px solid var(--cv-filet); border-radius: 4px; }
.cv-heure--complet { text-decoration: line-through; color: var(--cv-texte-doux); }
.cv-jour--complet .cv-jour__titre { color: var(--cv-texte-doux); }
.cv-libre { display: inline-flex; gap: 6px; align-items: center; font-size: .9em; font-weight: 700; color: var(--cv-libre); white-space: nowrap; }
.cv-jour__action .cv-btn { font-size: .9em; }
@media (max-width: 640px) {
    .cv-jour { grid-template-columns: auto minmax(0, 1fr); }
    .cv-jour__action { grid-column: 1 / -1; }
    .cv-jour__action .cv-resa,
    .cv-jour__action .cv-btn { display: flex; width: 100%; }
}

/* ---------- Les autres visites (fin de fiche) ---------- */
.cv-autres { margin-top: 48px; }
.cv-autres__titre { margin: 0; text-align: center; }
@media (min-width: 641px) {
    .cv-autres .cv-cartes--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); max-width: 880px; margin: 0 auto; width: 100%; }
}

/* ---------- Agenda (page Visites) ---------- */
.cv-agenda { margin-top: 40px; text-align: left; }
.cv-agenda__titre { margin: 0 0 8px; }
.cv-agenda__mois { margin: 24px 0 4px; font-size: 1.1em; }

/* ---------- Fiche tarifs ---------- */
.cv-fiche { display: grid; gap: 10px; }
.cv-fiche__titre { margin: 10px 0 0; font-size: 1.1em; }
.cv-fiche__tarifs { width: auto; border: 0; margin: 0; }
.cv-fiche__tarifs th,
.cv-fiche__tarifs td { border: 0; padding: 2px 16px 2px 0; text-align: left; font-weight: 400; }
.cv-fiche__tarifs td { font-weight: 700; }

/* ---------- Bandeau ---------- */
.cv-bandeau {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    padding: 8px 16px;
    background: var(--cv-bandeau-fond);
    color: var(--cv-bandeau-texte);
    font-size: .95rem;
    text-align: center;
}
.cv-bandeau[hidden] { display: none; }
.cv-bandeau--fort { background: var(--cv-bandeau-fort-fond); }
.cv-bandeau__lien { color: inherit; font-weight: 700; text-decoration: none; }
.cv-bandeau__lien:hover,
.cv-bandeau__lien:focus { color: inherit; text-decoration: underline; }
.cv-bandeau__fermer {
    flex: none;
    background: none;
    border: 0;
    padding: 0 4px;
    color: inherit;
    font-size: 1.4rem;
    line-height: 1;
    cursor: pointer;
}
@media (max-width: 640px) {
    .cv-bandeau { justify-content: space-between; text-align: left; font-size: .875rem; }
}
