/*
Theme Name:  Listeo ChildTheme
Theme URI: http://listeo.pro
Author: Purethemes
Author URI: http://themeforest.net/user/purethemes
Description: Directory WordPress Theme by Purethemes
Version: 1.1.3
License: ThemeForest
License URI: http://themeforest.net/licenses
Text Domain: listeo
Domain Path: /languages/
Tags: light, responsive-layout, post-formats, theme-options, translation-ready, two-columns
Template:  listeo
*/

/* =========================================================
 * HEADER — dropdown menu hover
 * ========================================================= */

.transparent-header #header:not(.cloned) {
    border-bottom: none !important;
}

/* =========================================================
 * FOOTER
 * ========================================================= */

#footer.custom-footer {
    background-color: #3A472A !important;
}

#footer.custom-footer,
#footer.custom-footer p,
#footer.custom-footer h4,
#footer.custom-footer a,
#footer.custom-footer li a,
#footer.custom-footer .footer-widget,
#footer.custom-footer .textwidget {
    color: #ffffff !important;
}

#footer.custom-footer a:hover {
    color: #c4a35a !important;
}

#footer.custom-footer .footer-new-bottom-inner {
    border-top-color: rgba(255,255,255,0.15);
}

/* =========================================================
 * HEADER NAV — réduction espacement pour 5+ items
 * ========================================================= */
#navigation.style-1 > ul > li > a {
    padding: 2px 10px !important;
    font-size: 14px;
}

#navigation.style-1 > ul > li {
    margin: 0 1px !important;
}

body #navigation.style-1 ul li li a {
    transition: background .15s, color .15s, padding-left .15s;
}

body #navigation.style-1 ul li li a:hover {
    background: #f7f4ef !important;
    color: #c4a35a !important;
    padding-left: 24px;
}

/* =========================================================
 * BELLONIE AUTHOR PAGE (bap-*)
 * ========================================================= */

.bellonie-author-page {
    background: #f7f4ef;
}

/* ----- Section title shared ----- */
.bap-section-title {
    font-size: 22px;
    font-weight: 700;
    color: #2d2d2d;
    margin: 0 0 32px;
    padding: 0;
}

/* =========================================================
 * HERO
 * ========================================================= */

.bap-hero {
    background: #f7f4ef;
    padding: 48px 0 40px;
}

.bap-hero-card {
    background: #fff;
    border-radius: 12px;
    box-shadow: 0 2px 20px rgba(0,0,0,.06);
    display: flex;
    align-items: flex-start;
    gap: 48px;
    padding: 40px 48px;
    position: relative;
    overflow: hidden;
}

/* Portrait photo */
.bap-hero-photo {
    flex: 0 0 260px;
}

.bap-hero-photo img.bap-avatar,
.bap-hero-photo img {
    width: 260px;
    height: 340px;
    object-fit: cover;
    object-position: top center;
    border-radius: 8px;
    display: block;
}

/* Info column */
.bap-hero-info {
    flex: 1;
    padding-top: 8px;
}

.bap-name {
    font-size: 32px;
    font-weight: 800;
    color: #2d2d2d;
    margin: 0 0 8px;
    line-height: 1.2;
    display: flex;
    align-items: center;
    gap: 10px;
}

.bap-verified-badge {
    color: #c4a35a;
    font-size: 22px;
}

.bap-tagline {
    font-size: 16px;
    color: #888;
    font-style: italic;
    margin: 0 0 20px;
}

.bap-bio {
    font-size: 15px;
    line-height: 1.75;
    color: #555;
    margin: 0 0 24px;
}

.bap-bio p {
    margin: 0 0 14px;
}

/* Pills */
.bap-pills {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 20px;
}

.bap-pill {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: #f7f4ef;
    border-radius: 20px;
    padding: 6px 14px;
    font-size: 13px;
    color: #555;
    font-weight: 500;
}

.bap-pill i {
    color: #c4a35a;
    font-size: 14px;
}

/* Social links */
.bap-social {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
}

.bap-social-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: #f0ece4;
    color: #555;
    font-size: 15px;
    transition: background .2s, color .2s;
    text-decoration: none;
}

.bap-social-link:hover {
    background: #c4a35a;
    color: #fff;
}

/* Decorative star */
.bap-hero-deco {
    position: absolute;
    top: -20px;
    left: 30px;
    width: 140px;
    height: 140px;
    opacity: .5;
    pointer-events: none;
}

/* =========================================================
 * GALLERY
 * ========================================================= */

.bap-gallery {
    background: #fff;
    padding: 56px 0;
}

/* Layout : grande image gauche + 2×2 petites à droite */
.bap-gallery-grid {
    display: grid;
    grid-template-columns: 2fr 1fr 1fr;
    grid-template-rows: 260px 260px;
    gap: 8px;
}

.bap-gallery-item {
    display: flex;
    overflow: hidden;
    border-radius: 6px;
    background: #e8e2d9;
    cursor: pointer;
    align-self: stretch;  /* remplit la hauteur de la cellule grid */
}

.bap-gallery-item img {
    width: 100%;
    height: 100%;
    min-height: 0;
    object-fit: cover;
    object-position: center;
    display: block;
    flex: 1;
    transition: transform .35s ease;
}

.bap-gallery-item:hover img {
    transform: scale(1.04);
}

/* Grande image : colonne 1, occupe les 2 rangées */
.bap-gallery-main {
    grid-column: 1;
    grid-row: 1 / 3;
}

/* Images 6+ : dans le DOM pour MFP mais invisibles visuellement */
.bap-gallery-hidden {
    position: absolute !important;
    width: 0 !important;
    height: 0 !important;
    overflow: hidden !important;
    pointer-events: none !important;
    opacity: 0 !important;
}

.bap-gallery-badge {
    position: absolute;
    bottom: 12px;
    right: 12px;
    background: rgba(0,0,0,.55);
    color: #fff;
    font-size: 12px;
    font-weight: 600;
    padding: 5px 10px;
    border-radius: 20px;
    display: flex;
    align-items: center;
    gap: 5px;
}

@media (max-width: 600px) {
    .bap-gallery-grid {
        grid-template-columns: 1fr 1fr;
        grid-template-rows: auto;
    }
    .bap-gallery-main {
        grid-column: 1 / 3;
        grid-row: auto;
        height: 220px;
    }
    .bap-gallery-item:not(.bap-gallery-main) {
        height: 140px;
    }
}

/* =========================================================
 * INTELLIGENCES MULTIPLES
 * ========================================================= */

.bap-intel {
    background: #f7f4ef;
    padding: 56px 0;
}

.bap-intel-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 16px;
}

.bap-intel-card {
    background: #fff;
    padding: 32px 24px;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
}

/* Icône image */
.bap-intel-img {
    width: 80px;
    height: 80px;
    object-fit: contain;
    margin-bottom: 16px;
    display: block;
}

/* Icône FA fallback */
.bap-intel-icon-fa {
    width: 80px;
    height: 80px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 16px;
    flex-shrink: 0;
}

.bap-intel-icon-fa i {
    font-size: 30px;
    color: #fff;
}

/* Nom */
.bap-intel-name {
    font-family: 'Playfair Display', Georgia, serif;
    font-size: 16px;
    font-weight: 600;
    color: #514D40;
    line-height: 1.3;
    margin: 0 0 12px;
}

/* Diviseur */
.bap-intel-divider {
    width: 28px;
    height: 2px;
    margin-bottom: 14px;
    flex-shrink: 0;
}

/* Liste de points */
.bap-intel-desc {
    list-style: none;
    margin: 0 0 14px;
    padding: 0;
    width: 100%;
}

.bap-intel-desc li {
    font-size: 13px;
    color: #7a6a5a;
    line-height: 1.65;
    padding: 7px 0;
    border-bottom: 1px solid #ede8df;
}

/* Citation */
.bap-intel-quote {
    font-size: 12px;
    font-style: italic;
    line-height: 1.5;
    margin: 0;
}

/* Fallback — intelligence cochée mais non décrite */
.bap-intel-empty {
    font-size: 12px;
    font-style: italic;
    line-height: 1.5;
    color: #a89c8a;
    margin: 0;
}

/* Variante statique : 1 paragraphe descriptif au lieu d'une liste de bullets */
.bap-intel-static-desc {
    font-size: 13px;
    color: #7a6a5a;
    line-height: 1.65;
    margin: 0;
    width: 100%;
}

/* =========================================================
 * LISTINGS — cartes custom (bap-lcard)
 * ========================================================= */

.bap-listings {
    background: #fff;
    padding: 56px 0;
}

.bap-listings-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 24px;
}
/* 1 seule carte → max 480px centrée */
.bap-listings-grid:has(> :only-child) {
    grid-template-columns: minmax(280px, 480px);
    justify-content: center;
}

/* Carte */
.bap-lcard {
    display: flex;
    flex-direction: column;
    background: #fff;
    border-radius: 14px;
    overflow: hidden;
    box-shadow: 0 2px 16px rgba(0,0,0,.07);
    text-decoration: none;
    color: inherit;
    transition: transform .2s ease, box-shadow .2s ease;
}

.bap-lcard:hover {
    transform: translateY(-4px);
    box-shadow: 0 8px 28px rgba(0,0,0,.12);
    color: inherit;
}

/* Image */
.bap-lcard-img {
    position: relative;
    width: 100%;
    padding-bottom: 75%; /* ratio 4:3 fiable */
    overflow: hidden;
    background: #f0ece4;
    border-radius: 12px 12px 0 0;
}

.bap-lcard-img > img:not(.bap-lcard-avatar) {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    display: block;
    z-index: 0;
}

.bap-lcard-img-placeholder {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #c8bfb0;
    font-size: 40px;
    z-index: 0;
}

/* Auteur en overlay bas-gauche */
.bap-lcard-meta {
    position: absolute;
    bottom: 12px;
    left: 12px;
    right: 12px;
    z-index: 2;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px;
}

.bap-lcard-author {
    display: flex;
    align-items: center;
    gap: 7px;
    background: rgba(255,255,255,.92);
    border-radius: 20px;
    padding: 4px 12px 4px 4px;
    font-size: 13px;
    font-weight: 600;
    color: #2d2d2d;
}

.bap-lcard-cat {
    display: inline-block;
    background: #c4a35a;
    color: #fff;
    border-radius: 20px;
    padding: 5px 12px;
    font-size: 12px;
    font-weight: 600;
    line-height: 1.2;
    white-space: nowrap;
    box-shadow: 0 1px 4px rgba(0,0,0,.15);
}

.bap-lcard-avatar {
    width: 32px !important;
    height: 32px !important;
    min-width: 32px;
    min-height: 32px;
    border-radius: 50% !important;
    object-fit: cover;
    display: block;
    flex-shrink: 0;
}

/* Corps */
.bap-lcard-body {
    padding: 18px 20px 20px;
    display: flex;
    flex-direction: column;
    flex: 1;
}

.bap-lcard-duration {
    font-size: 12px;
    font-weight: 600;
    color: #c4a35a;
    letter-spacing: .4px;
    margin-bottom: 8px;
}

.bap-lcard-duration i {
    margin-right: 3px;
}

.bap-lcard-title {
    font-size: 17px;
    font-weight: 700;
    color: #2d2d2d;
    margin: 0 0 8px;
    line-height: 1.3;
}

.bap-lcard-excerpt {
    font-size: 13px;
    color: #777;
    line-height: 1.6;
    margin: 0 0 16px;
    flex: 1;
}

/* Footer : bouton + prix */
.bap-lcard-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    border-top: 1px solid #f0ece4;
    padding-top: 14px;
    margin-top: auto;
}

.bap-lcard-btn {
    display: inline-block;
    background: #2d2d2d;
    color: #fff;
    border-radius: 50px;
    padding: 8px 18px;
    font-size: 13px;
    font-weight: 600;
    white-space: nowrap;
    transition: background .2s;
}

.bap-lcard:hover .bap-lcard-btn {
    background: #c4a35a;
}

.bap-lcard-price {
    text-align: right;
    line-height: 1.3;
}

.bap-lcard-price small {
    display: block;
    font-size: 11px;
    color: #aaa;
}

.bap-lcard-price strong {
    font-size: 16px;
    color: #2d2d2d;
    font-weight: 700;
}

.bap-lcard-price strong span {
    font-size: 12px;
    color: #999;
    font-weight: 400;
}

/* =========================================================
 * REVIEWS
 * ========================================================= */

.bap-reviews {
    background: #f7f4ef;
    padding: 56px 0;
}

.bap-review-slide {
    padding: 0 40px;
    text-align: center;
}

.bap-review-text {
    font-size: 17px;
    font-style: italic;
    color: #444;
    line-height: 1.8;
    border: none;
    margin: 0 0 24px;
    padding: 0;
    quotes: "\00AB" "\00BB";
}

.bap-review-text::before {
    content: open-quote;
    color: #c4a35a;
}

.bap-review-text::after {
    content: close-quote;
    color: #c4a35a;
}

.bap-review-meta {
    display: inline-flex;
    align-items: center;
    gap: 12px;
}

.bap-review-avatar img {
    border-radius: 50%;
    width: 48px;
    height: 48px;
    object-fit: cover;
}

.bap-review-name {
    font-size: 14px;
    color: #2d2d2d;
    display: block;
}

/* =========================================================
 * REVIEWS — état vide
 * ========================================================= */

.bap-reviews-empty {
    background: #fff;
    border-radius: 14px;
    padding: 48px 32px;
    text-align: center;
    max-width: 460px;
    margin: 0 auto;
}

.bap-reviews-empty-icon {
    width: 52px;
    height: 52px;
    border-radius: 50%;
    border: 2px solid #c4a35a;
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 0 auto 20px;
    color: #c4a35a;
    font-size: 18px;
    letter-spacing: 2px;
    line-height: 1;
}

.bap-reviews-empty-title {
    font-size: 18px;
    font-weight: 700;
    color: #2d2d2d;
    margin: 0 0 10px;
}

.bap-reviews-empty-sub {
    font-size: 14px;
    color: #888;
    margin: 0;
    line-height: 1.6;
}

/* =========================================================
 * CONTACT CTA
 * ========================================================= */

.bap-cta {
    background: #fff;
    padding: 64px 0;
}

.bap-cta-inner {
    text-align: center;
    max-width: 480px;
    margin: 0 auto;
}

.bap-cta-title {
    font-size: 26px;
    font-weight: 800;
    color: #2d2d2d;
    margin: 0 0 8px;
}

.bap-cta-subtitle {
    font-size: 15px;
    color: #888;
    margin: 0 0 28px;
}

.bap-cta-logo {
    margin-bottom: 28px;
}

.bap-cta-logo-img {
    max-height: 80px;
    width: auto;
    display: inline-block;
}

.bap-cta-btn {
    display: inline-block;
    background: #2d2d2d;
    color: #fff !important;
    border-radius: 25px;
    padding: 13px 32px;
    font-size: 15px;
    font-weight: 600;
    text-decoration: none;
    transition: background .2s;
}

.bap-cta-btn:hover {
    background: #c4a35a;
    color: #fff !important;
}

/* =========================================================
 * RESPONSIVE
 * ========================================================= */

@media (max-width: 1024px) {
    .bap-listings-grid {
        grid-template-columns: repeat(2, 1fr);
    }

    .bap-intel-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 600px) {
    .bap-listings-grid {
        grid-template-columns: 1fr;
    }

    .bap-intel-grid {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 768px) {
    .bap-hero-card {
        flex-direction: column;
        gap: 24px;
        padding: 28px 24px;
    }

    .bap-hero-photo,
    .bap-hero-photo img.bap-avatar,
    .bap-hero-photo img {
        width: 100%;
        height: 280px;
        flex: none;
    }

    .bap-listings-grid {
        grid-template-columns: 1fr;
    }

    .bap-intel-grid {
        grid-template-columns: repeat(2, 1fr);
    }

    .bap-review-slide {
        padding: 0 16px;
    }
}

@media (max-width: 480px) {
    .bap-hero-deco {
        display: none;
    }

    .bap-name {
        font-size: 24px;
    }
}

/* =========================================================
 * GRILLE ÉCLAIREURS [bellonie_eclaireurs]
 * ========================================================= */

/* Photo : ratio portrait + ancrage en haut pour ne pas couper les têtes */
.bel-eclaireur-photo {
    aspect-ratio: 3 / 4 !important;
    object-position: top center !important;
}

/* =========================================================
 * SINGLE LISTING BELLONIE (bsl-*)
 * Template : listeo-child/listeo-core/single-listing.php
 * ========================================================= */

/* ── Variables ───────────────────────────────────────────── */
:root {
    --bsl-beige:  #f5eed8;
    --bsl-cream:  #ffffff;
    --bsl-brown:  #2c1f0e;
    --bsl-gold:   #c9a227;
    --bsl-muted:  #7a6a5a;
    --bsl-border: #e8e0d4;
    --bsl-tan:    #4a3c2e;
    --bsl-pad:    120px;
}

/* ── Masque les éléments Listeo par défaut sur nos pages ─── */
body.single-listing #titlebar,
body.single-listing #listing-nav,
body.single-listing .listing-nav-container { display: none !important; }

/* ── Galerie ─────────────────────────────────────────────── */
.bsl-gallery-wrap {
    background: #F7F4EA;
    padding: 40px 0 50px;
    position: relative;
    overflow: hidden;
}

/* Étoile déco */
.bsl-gal__star {
    position: absolute;
    left: -60px;
    top: 50%;
    transform: translateY(-50%);
    width: 280px;
    opacity: .18;
    pointer-events: none;
    z-index: 0;
}

/* Grille principale : grande image + miniatures */
.bsl-gal__grid {
    display: grid;
    grid-template-columns: 3fr 2fr;
    gap: 10px;
    max-width: 1180px;
    margin: 0 auto;
    padding: 0 24px;
    position: relative;
    z-index: 1;
}
/* 1 seule photo : pleine largeur centrée */
.bsl-gal__grid--solo {
    grid-template-columns: 1fr;
    max-width: 860px;
}

/* Grande image */
.bsl-gal__main {
    display: block;
    border-radius: 16px;
    overflow: hidden;
    height: 420px;
}
.bsl-gal__main img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform .4s ease;
}
.bsl-gal__main:hover img { transform: scale(1.03); }

/* Grille miniatures 2x2 */
.bsl-gal__thumbs {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
}
.bsl-gal__thumb {
    display: block;
    border-radius: 12px;
    overflow: hidden;
    position: relative;
    height: 205px;
}
.bsl-gal__thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform .4s ease;
}
.bsl-gal__thumb:hover img { transform: scale(1.05); }

/* Badge "X photos" */
.bsl-gal__more-badge {
    position: absolute;
    bottom: 12px;
    right: 12px;
    background: rgba(0,0,0,.52);
    color: #fff;
    font-size: 13px;
    font-weight: 600;
    font-family: 'Nunito', sans-serif;
    padding: 5px 12px;
    border-radius: 30px;
    display: flex;
    align-items: center;
    gap: 6px;
    backdrop-filter: blur(4px);
    pointer-events: none;
    z-index: 2;
}
.bsl-gal__thumb--more::after {
    content: '';
    position: absolute;
    inset: 0;
    background: rgba(0,0,0,.25);
    transition: background .3s;
}
.bsl-gal__thumb--more:hover::after { background: rgba(0,0,0,.4); }

/* Liens cachés pour lightbox */
.bsl-gal__hidden { display: none; }

/* Quand pas de galerie : bande fine en haut */
.bsl-no-gallery-bar {
    height: 48px;
    background: #F7F4EA;
}

/* Responsive */
@media (max-width: 768px) {
    .bsl-gal__grid { grid-template-columns: 1fr; }
    .bsl-gal__main { height: 260px; }
    .bsl-gal__thumbs { grid-template-columns: repeat(2, 1fr); }
    .bsl-gal__thumb { height: 130px; }
    .bsl-gal__star { display: none; }
}

/* ── Container centré commun ─────────────────────────────── */
.bsl-container {
    max-width: 1180px;
    margin: 0 auto;
    width: 100%;
}

/* ── Section principale (2 colonnes) ────────────────────── */
.bsl-main-wrap {
    background: var(--bsl-cream);
    padding: 52px 20px 64px;
}
.bsl-row {
    max-width: 1180px;
    margin: 0 auto;
    display: flex;
    gap: 48px;
    align-items: flex-start;
}
.bsl-col-content {
    flex: 0 0 60%;
    min-width: 0;
}
.bsl-col-sidebar {
    flex: 1;
    min-width: 0;
    position: sticky;
    top: 20px;
}

/* Titre */
.bsl-title {
    font-family: 'Fraunces', serif !important;
    font-size: 48px !important;
    font-weight: 500 !important;
    color: #514D40 !important;
    color: var(--bsl-brown) !important;
    line-height: 1.2 !important;
    margin: 0 0 14px !important;
    padding: 0 !important;
}

/* Meta row (lieu, durée) */
.bsl-meta-row {
    display: flex;
    gap: 24px;
    align-items: center;
    margin-bottom: 24px;
    flex-wrap: wrap;
}
.bsl-meta-item {
    font-family: Avenir, sans-serif;
    font-size: 14px;
    color: var(--bsl-tan);
    display: flex;
    align-items: center;
    gap: 6px;
}
.bsl-meta-icon { color: var(--bsl-gold); }

/* Séparateur */
.bsl-divider {
    height: 1px;
    background: var(--bsl-border);
    margin: 0 0 28px;
    border: none;
}

/* Titres de section */
.bsl-section-title {
    font-family: 'Fraunces', serif !important;
    font-size: 36px !important;
    font-weight: 500 !important;
    color: #514D40 !important;
    color: var(--bsl-brown) !important;
    margin: 0 0 14px !important;
    padding: 0 !important;
    border: none !important;
}

/* Description */
.bsl-description {
    font-family: 'Nunito', sans-serif;
    font-size: 15px;
    line-height: 1.75;
    color: var(--bsl-tan);
    margin-bottom: 40px;
}
.bsl-description p { margin-bottom: 12px; color: var(--bsl-tan); }
.bsl-description ul { list-style: none; padding: 0; margin: 12px 0 0; }
.bsl-description li { padding: 5px 0; }
.bsl-description li::before { content: '● '; color: var(--bsl-gold); font-size: 10px; margin-right: 4px; }

/* Lieu */
.bsl-location-section { margin-top: 40px; }
.bsl-location-address {
    font-family: Avenir, sans-serif;
    font-size: 14px;
    color: var(--bsl-muted);
    margin-bottom: 14px;
}
.bsl-location-address i { color: var(--bsl-gold); margin-right: 6px; }
.bsl-map-wrap { border-radius: 12px; overflow: hidden; margin-top: 12px; }
.bsl-map-wrap h3,
.bsl-map-wrap .listing-section-headline { display: none !important; }
.bsl-map-wrap #listing-location { margin-top: 0 !important; padding-top: 0 !important; }

/* Carte niveau ville — cercle approximatif */
.bsl-map-city #singleListingMap { height: 320px; border-radius: 12px; }
.bsl-map-city .circle-point-marker {
    border: 3px solid var(--bsl-gold, #C4A962);
    background: rgba(196,169,98,.15);
}
/* Masquer "Obtenir l'itinéraire" — révèle l'adresse exacte */
#getDirection { display: none !important; }

/* ── Sidebar droite ──────────────────────────────────────── */
.bsl-booking-title {
    font-family: 'Fraunces', serif;
    font-size: 36px;
    font-weight: 500;
    color: #514D40;
    color: var(--bsl-brown);
    margin: 0 0 14px;
}
.bsl-booking-card {
    background: var(--bsl-cream);
    border: 1px solid var(--bsl-border);
    border-radius: 16px;
    box-shadow: 0 4px 24px rgba(44,31,14,.08);
    padding: 24px;
    margin-bottom: 16px;
    position: relative;
    overflow: visible;
}

/* Étoile — coin haut droit de la carte */
.bsl-deco-star {
    position: absolute;
    top: -14px;
    right: -14px;
    width: 60px;
    height: auto;
    pointer-events: none;
    z-index: 2;
}
/* Main — coin bas droit de la carte */
.bsl-deco-hand {
    position: absolute;
    bottom: -10px;
    right: -20px;
    width: 100px;
    height: auto;
    pointer-events: none;
    z-index: 2;
}

/* Prix */
.bsl-price-row {
    display: flex;
    align-items: baseline;
    gap: 6px;
    margin-bottom: 16px;
}
.bsl-price {
    font-family: 'Fraunces', serif;
    font-size: 36px;
    font-weight: 500;
    color: var(--bsl-brown);
    line-height: 1;
}
.bsl-price-unit {
    font-family: Avenir, sans-serif;
    font-size: 14px;
    color: var(--bsl-muted);
}

/* ── Widgets Listeo dans la sidebar ──────────────────────── */
/* Reset visuel du container widget */
.bsl-booking-form > div,
.bsl-booking-form .widget { box-shadow: none !important; border: none !important; padding: 0 !important; margin: 0 !important; background: transparent !important; }
/* Masquer les titres des widgets */
.bsl-booking-form h3,
.bsl-booking-form .widget-title { display: none !important; }

/* ── MASQUER : owner, partage (bookmarks), contact ────────── */
/* Classes CSS réelles des widgets Listeo (≠ widget_id) */
.bsl-booking-form .widget_listing_owner { display: none !important; }  /* Hosted By */
.bsl-booking-form .widget_buttons       { display: none !important; }  /* Bookmarks & Share */
.bsl-booking-form .message-vendor       { display: none !important; }  /* Contact form */

/* ── Boutons — base commune (tous les boutons de la page) ─── */
.bsl-booking-form .button,
.bsl-booking-form input[type="submit"],
.bsl-booking-form a.button,
.bsl-booking-form #booking-btn,
.bsl-booking-form .btn-book,
.bsl-booking-form .booking-widget-btn {
    width: 100% !important;
    height: 40px !important;
    line-height: 40px !important;
    padding: 0 24px !important;
    background: var(--bsl-brown) !important;
    color: #fff !important;
    border-radius: 50px !important;
    border: none !important;
    font-family: Avenir, sans-serif !important;
    font-size: 14px !important;
    font-weight: 600 !important;
    cursor: pointer !important;
    margin-bottom: 0 !important;
    text-align: center !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    transition: background .2s !important;
    box-shadow: none !important;
    text-decoration: none !important;
}
.bsl-booking-form .button:hover,
.bsl-booking-form input[type="submit"]:hover,
.bsl-booking-form #booking-btn:hover { background: #4a3520 !important; }

/* ── Aucun créneau : cacher tous les champs, garder seulement le bouton ── */
.bsl-booking-form.bsl-no-slots .booking-widget-title-wrap,
.bsl-booking-form.bsl-no-slots .panel-dropdown,
.bsl-booking-form.bsl-no-slots #date-picker,
.bsl-booking-form.bsl-no-slots .date-picker-wrap,
.bsl-booking-form.bsl-no-slots .booking-estimated-cost,
.bsl-booking-form.bsl-no-slots .booking-estimated-discount-cost,
.bsl-booking-form.bsl-no-slots .booking-error-message,
.bsl-booking-form.bsl-no-slots .loadingspinner,
.bsl-booking-form.bsl-no-slots input[type="hidden"],
.bsl-booking-form.bsl-no-slots hr { display: none !important; }

/* ── Style du bouton désactivé ───────────────────────────── */
.bsl-booking-form.bsl-no-slots .button,
.bsl-booking-form.bsl-no-slots a.book-now,
.bsl-booking-form .button.inactive,
.bsl-booking-form a.book-now.inactive,
.bsl-booking-form .button[disabled],
.bsl-booking-form button[disabled] {
    background: #ede8e0 !important;
    color: #9e9189 !important;
    cursor: not-allowed !important;
    pointer-events: none !important;
    border: none !important;
    display: flex !important;
}
.bsl-booking-form.bsl-no-slots .button:hover,
.bsl-booking-form .button.inactive:hover { background: #ede8e0 !important; }

/* ── Méta (âge / participants) — sous la carte ───────────── */
.bsl-booking-meta {
    display: flex;
    gap: 20px;
    flex-wrap: wrap;
    margin-top: 16px;
    padding-top: 0;
}
.bsl-booking-meta span {
    font-family: Avenir, sans-serif;
    font-size: 13px;
    color: var(--bsl-muted);
    display: flex;
    align-items: center;
    gap: 6px;
}

/* ── Badges — sous les méta ──────────────────────────────── */
.bsl-badges { display: flex; flex-direction: column; gap: 8px; margin-top: 16px; }
.bsl-badges p {
    font-family: Avenir, sans-serif;
    font-size: 13px;
    color: var(--bsl-tan);
    margin: 0;
    display: flex;
    align-items: center;
    gap: 8px;
}

/* ── Card aide ───────────────────────────────────────────── */
.bsl-help-card {
    background: var(--bsl-beige);
    border-radius: 16px;
    padding: 20px;
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 16px;
    margin-top: 20px;
}
/* Logo avatar — cercle blanc avec le SVG Bellonie */
.bsl-help-logo {
    flex-shrink: 0;
    width: 104px;
    height: 104px;
    border-radius: 50%;
    background: #fff;
    border: 1px solid var(--bsl-border);
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
}
.bsl-help-logo img {
    width: 80px;
    height: 80px;
    object-fit: contain;
    display: block;
}
.bsl-help-body {
    display: flex;
    flex-direction: column;
    gap: 8px;
    flex: 1;
}
.bsl-help-title {
    font-family: 'Nunito', sans-serif;
    font-size: 26px;
    font-weight: 400;
    color: var(--bsl-brown);
    margin: 0;
    line-height: 1.2;
}
.bsl-help-btn {
    display: inline-block;
    align-self: flex-start;
    font-family: Avenir, sans-serif;
    font-size: 13px;
    font-weight: 500;
    color: var(--bsl-brown) !important;
    border: 1.5px solid var(--bsl-brown);
    border-radius: 50px;
    padding: 6px 16px;
    text-decoration: none !important;
    transition: background .2s, color .2s;
}
.bsl-help-btn:hover { background: var(--bsl-brown); color: #fff !important; }

/* ── Section intelligences ──────────────────────────────── */
.bsl-intel-wrap {
    background: var(--bsl-beige);
    padding: 60px 20px 64px;
}
.bsl-intel-inner {
    max-width: 1180px;
    margin: 0 auto;
}
.bsl-intel-wrap .bsl-section-title { font-size: 36px !important; margin-bottom: 32px !important; }

/* ── Section éclaireur ──────────────────────────────────── */
.bsl-eclaireur-wrap {
    background: var(--bsl-cream);
    padding: 80px 20px;
}
.bsl-eclaireur-inner {
    max-width: 1180px;
    margin: 0 auto;
    display: flex;
    gap: 60px;
    align-items: flex-start;
}
.bsl-ecl-photo-col {
    flex: 0 0 42%;
    max-width: 420px;
}
.bsl-ecl-photo {
    width: 100%;
    max-height: 560px;
    border-radius: 16px;
    object-fit: cover;
    object-position: top center;
    display: block;
}
.bsl-ecl-content-col { flex: 1; min-width: 0; }
.bsl-ecl-pretitle {
    font-family: Avenir, sans-serif;
    font-size: 11px;
    font-weight: 500;
    letter-spacing: 2.5px;
    color: var(--bsl-gold);
    margin: 0 0 8px;
    text-transform: uppercase;
}
.bsl-ecl-name {
    font-family: 'Fraunces', serif !important;
    font-size: 36px !important;
    font-weight: 500 !important;
    color: #514D40 !important;
    color: var(--bsl-brown) !important;
    margin: 0 0 4px !important;
    line-height: 1.1 !important;
    padding: 0 !important;
}
.bsl-ecl-tagline {
    font-family: Avenir, sans-serif;
    font-size: 16px;
    color: var(--bsl-muted);
    margin: 0 0 20px;
}
.bsl-ecl-bio {
    font-family: 'Nunito', sans-serif;
    font-size: 15px;
    line-height: 1.75;
    color: var(--bsl-tan);
    margin-bottom: 28px;
    /* Pas de troncature — affiche la bio complète */
}
.bsl-ecl-btns { display: flex; gap: 12px; flex-wrap: wrap; }
.bsl-btn-primary {
    display: inline-block;
    font-family: Avenir, sans-serif;
    font-size: 14px;
    font-weight: 500;
    background: var(--bsl-gold);
    color: #fff !important;
    border-radius: 50px;
    padding: 12px 28px;
    text-decoration: none !important;
    transition: background .2s;
}
.bsl-btn-primary:hover { background: #a88420; }
.bsl-btn-outline {
    display: inline-block;
    font-family: Avenir, sans-serif;
    font-size: 14px;
    font-weight: 500;
    background: transparent;
    color: var(--bsl-brown) !important;
    border: 1px solid var(--bsl-brown);
    border-radius: 50px;
    padding: 12px 28px;
    text-decoration: none !important;
    transition: background .2s, color .2s;
}
.bsl-btn-outline:hover { background: var(--bsl-brown); color: #fff !important; }

/* ── Autres ateliers ────────────────────────────────────── */
.bsl-more-wrap {
    background: var(--bsl-beige);
    padding: 60px 20px 80px;
}
.bsl-more-inner {
    max-width: 1180px;
    margin: 0 auto;
}
.bsl-more-wrap .bsl-section-title { font-size: 36px !important; margin-bottom: 32px !important; }
.bsl-more-wrap .bap-listings-grid { grid-template-columns: repeat(4, 1fr); }

/* ── Responsive ─────────────────────────────────────────── */
@media (max-width: 900px) {
    .bsl-row { flex-direction: column; }
    .bsl-col-content, .bsl-col-sidebar { flex: 0 0 100%; }
    .bsl-col-sidebar { position: static; }
    .bsl-eclaireur-inner { flex-direction: column; gap: 32px; }
    .bsl-ecl-photo-col { flex: 0 0 100%; }
    .bsl-ecl-name { font-size: 32px !important; }
    .bsl-more-wrap .bap-listings-grid { grid-template-columns: repeat(2, 1fr); }
}

/* =========================================================
 * BOOKING WIDGET (Bellonie) — calendrier + séances
 * Sidebar de la fiche atelier : remplace le widget Listeo natif
 * ========================================================= */
.bsl-booking-widget {
    margin-top: 18px;
}

/* ── Calendrier (FullCalendar) ──────────────────────────── */
.bsl-cal-wrap {
    background: #fff;
    border: 1px solid var(--bsl-border, #ede8df);
    border-radius: 12px;
    padding: 14px;
    margin-bottom: 16px;
}
.bsl-fullcal {
    font-family: Avenir, 'Nunito', sans-serif;
    font-size: 13px;
}
.bsl-fullcal .fc-toolbar-title {
    font-family: 'Fraunces', serif;
    font-size: 16px;
    font-weight: 500;
    color: var(--bsl-brown, #3d3530);
    text-transform: capitalize;
}
.bsl-fullcal .fc-button {
    background: transparent !important;
    border: 1px solid var(--bsl-border, #ede8df) !important;
    color: var(--bsl-brown, #3d3530) !important;
    box-shadow: none !important;
    padding: 4px 10px !important;
    font-size: 12px !important;
    border-radius: 6px !important;
}
.bsl-fullcal .fc-button:hover { background: #f9f5ec !important; }
.bsl-fullcal .fc-button-primary:not(:disabled):active,
.bsl-fullcal .fc-button-primary:not(:disabled).fc-button-active {
    background: var(--bsl-gold, #C4A962) !important;
    border-color: var(--bsl-gold, #C4A962) !important;
    color: #fff !important;
}
.bsl-fullcal .fc-day-today { background: #fdf8ee !important; }
.bsl-fullcal .fc-col-header-cell-cushion { font-weight: 600; color: #6b5c4d; }

/* Jours passés grisés */
.bsl-fullcal .fc-day-past { opacity: .35; }

/* Cases avec séance : style cliquable */
.bsl-fullcal .fc-daygrid-day:not(.fc-day-past):has(.fc-event) {
    cursor: pointer;
}
.bsl-fullcal .fc-daygrid-day:not(.fc-day-past):has(.fc-event):hover .fc-daygrid-day-frame {
    background: #fdf5e0;
}

/* Hauteur min des cellules pour respirer */
.bsl-fullcal .fc-daygrid-day-frame { min-height: 56px; padding: 2px; }
.bsl-fullcal .fc-scroller { overflow: visible !important; }
.bsl-fullcal .fc-daygrid-body,
.bsl-fullcal .fc-daygrid-body > table { width: 100% !important; }

/* Pastille événement */
.bsl-fullcal .fc-event {
    background: var(--bsl-gold, #C4A962) !important;
    border-color: var(--bsl-gold, #C4A962) !important;
    color: #fff !important;
    border-radius: 6px;
    font-size: 11px;
    font-weight: 600;
    padding: 3px 4px;
    cursor: pointer;
    transition: transform .15s ease;
    text-align: center;
    line-height: 1.1;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.bsl-fullcal .fc-event .fc-event-title,
.bsl-fullcal .fc-event .fc-event-main { padding: 0 !important; text-align: center; }
.bsl-fullcal .fc-event:hover { transform: scale(1.05); }

/* Événement sélectionné */
.bsl-fullcal .fc-event.bsl-fc-event-selected {
    background: var(--bsl-brown, #3d3530) !important;
    border-color: var(--bsl-brown, #3d3530) !important;
    box-shadow: 0 2px 6px rgba(61,53,48,.3);
}

/* ── Bloc séance sélectionnée ───────────────────────────── */
.bsl-selected-session {
    background: #fdf8ee;
    border: 1px solid var(--bsl-gold, #C4A962);
    border-radius: 12px;
    padding: 14px 16px;
    margin-bottom: 16px;
}
.bsl-selected-label {
    font-family: Avenir, sans-serif;
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: .8px;
    color: var(--bsl-muted, #8a7d6a);
    margin-bottom: 6px;
}
.bsl-selected-info {
    display: flex;
    align-items: baseline;
    gap: 12px;
    font-family: 'Fraunces', serif;
    color: var(--bsl-brown, #3d3530);
}
.bsl-selected-date {
    font-size: 16px;
    font-weight: 500;
    text-transform: capitalize;
}
.bsl-selected-time {
    font-size: 14px;
    background: var(--bsl-gold, #C4A962);
    color: #fff;
    padding: 2px 10px;
    border-radius: 20px;
    font-family: Avenir, sans-serif;
    font-weight: 600;
    font-size: 12px;
}

/* ── Annulation participant — état de succès dans la modale (remplace alert()) ── */
.lsv2-pcancel-success {
    text-align: center;
    padding: 12px 8px 4px;
}
.lsv2-pcancel-success-icon {
    width: 56px;
    height: 56px;
    margin: 0 auto 16px;
    border-radius: 50%;
    background: #eaf6ec;
    color: #2e9e50;
    font-size: 30px;
    line-height: 56px;
    font-weight: 700;
}
.lsv2-pcancel-success h3 {
    font-family: 'Fraunces', serif;
    font-size: 20px;
    color: #3d3530;
    margin: 0 0 8px;
}
.lsv2-pcancel-success p {
    font-family: 'Nunito', sans-serif;
    font-size: 14px;
    line-height: 1.55;
    color: #6b5c4d;
    margin: 0 auto 20px;
    max-width: 380px;
}
.lsv2-pcancel-success .button {
    min-width: 140px;
}

/* ── Dashboard réservations — dates d'une réservation multi-jours (feature 016) ──
   Notre section (jours + horaires) REMPLACE la section date native : on masque
   la section date native quand elle est immédiatement suivie de la nôtre. */
.booking-section:has( + .lsv2-bk-days-section ) { display: none; }
.lsv2-bk-hours {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin-top: 12px;
    padding: 5px 12px;
    background: #fdf8ee;
    border: 1px solid #f0e6cf;
    border-radius: 20px;
    font-family: 'Nunito', sans-serif;
    font-size: 13px;
    font-weight: 600;
    color: #6b5c4d;
}
.lsv2-bk-hours svg {
    width: 15px;
    height: 15px;
    color: var(--bsl-gold, #c9a227);
    flex-shrink: 0;
}
.lsv2-bk-days {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-top: 6px;
}
.lsv2-bk-day {
    font-family: 'Nunito', sans-serif;
    font-size: 13px;
    font-weight: 600;
    color: #3d3530;
    background: #fff;
    border: 1px solid var(--bsl-gold, #c9a227);
    border-radius: 8px;
    padding: 3px 10px;
    line-height: 1.35;
    white-space: nowrap;
}
.lsv2-bk-day.is-first {
    background: var(--bsl-gold, #c9a227);
    color: #fff;
}

/* ── Dashboard réservations — icône prix en € (au lieu du $ natif Listeo) ──
   Listeo rend une icône « dollar-sign » (SVG inline) devant le prix, sur les
   dashboards client ET artisan. On la masque et on affiche un « € » à la place
   (le montant lui-même est déjà en euros). Zéro édition plugin. */
.booking-detail-item:has(.booking-price) .booking-section-header > svg { display: none; }
.booking-detail-item:has(.booking-price) .booking-section-header::before {
    content: "€";
    font-family: 'Nunito', sans-serif;
    font-size: 19px;
    font-weight: 700;
    line-height: 1;
    color: currentColor;
    margin-right: 2px;
}

/* ── Feature 016 — récap bloc multi-jours (chips des dates) ─────── */
.bsl-selected-days {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-top: 10px;
}
.bsl-day-chip {
    font-family: Avenir, sans-serif;
    font-size: 12px;
    font-weight: 600;
    color: var(--bsl-brown, #3d3530);
    background: #fff;
    border: 1px solid var(--bsl-gold, #C4A962);
    border-radius: 8px;
    padding: 3px 9px;
    line-height: 1.3;
    white-space: nowrap;
}
/* Le 1er jour du bloc (arrivée) est mis en avant. */
.bsl-day-chip.is-first {
    background: var(--bsl-gold, #C4A962);
    color: #fff;
}

/* ── Feature 016 — teinte de fond des jours d'un bloc dans le calendrier ── */
.bsl-fullcal .fc-bg-event.bsl-fc-block-bg {
    background: rgba(201, 162, 39, .16) !important;
    opacity: 1 !important;
}
.bsl-fullcal .fc-bg-event.bsl-fc-block-bg-selected {
    background: rgba(201, 162, 39, .34) !important;
}

/* ── Sélecteur d'invités ────────────────────────────────── */
.bsl-guests-row {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-bottom: 14px;
}
.bsl-guests-label {
    font-family: Avenir, sans-serif;
    font-size: 13px;
    color: var(--bsl-brown, #3d3530);
    font-weight: 600;
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    align-items: baseline;
}
.bsl-guests-hint {
    font-weight: 400;
    color: var(--bsl-muted, #8a7d6a);
    font-size: 12px;
}
.bsl-guests-counter {
    display: inline-flex;
    align-items: stretch;
    align-self: flex-start;     /* ne pas stretch en flex column parent */
    width: fit-content;
    border: 1px solid var(--bsl-border, #ede8df);
    border-radius: 50px;
    background: #fff;
    height: 44px;
    padding: 2px;
}
.bsl-guests-btn,
button.bsl-guests-btn {
    width: 38px !important;
    height: 38px !important;
    min-width: 38px !important;
    border: none !important;
    background: transparent !important;
    color: var(--bsl-brown, #3d3530) !important;
    font-size: 18px !important;
    font-weight: 500 !important;
    line-height: 1 !important;
    cursor: pointer;
    transition: background .15s ease;
    border-radius: 50% !important;
    padding: 0 !important;
    margin: 0 !important;
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    flex: 0 0 38px !important;
    box-shadow: none !important;
}
.bsl-guests-btn:hover { background: #f9f5ec; }
.bsl-guests-btn:disabled { opacity: .35; cursor: not-allowed; }
.bsl-guests-input,
input.bsl-guests-input,
input[type="number"].bsl-guests-input {
    width: 56px !important;
    max-width: 56px !important;
    min-width: 56px !important;
    height: 38px !important;
    line-height: 38px !important;
    border: none !important;
    background: transparent !important;
    text-align: center !important;
    font-family: Avenir, 'Nunito', sans-serif !important;
    font-size: 16px !important;
    font-weight: 600 !important;
    color: var(--bsl-brown, #3d3530) !important;
    -moz-appearance: textfield !important;
    appearance: textfield !important;
    padding: 0 !important;
    margin: 0 !important;
    flex: 0 0 56px !important;
    display: inline-block !important;
    box-shadow: none !important;
    border-radius: 0 !important;
}
.bsl-guests-input::-webkit-outer-spin-button,
.bsl-guests-input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.bsl-guests-input:focus { outline: none; }

/* Info seuil minimum pour que l'atelier ait lieu */
.bsl-guests-info {
    margin: 8px 0 0;
    padding: 10px 12px;
    background: #f9f5ec;
    border-left: 3px solid var(--bsl-gold, #C4A962);
    border-radius: 6px;
    font-family: Avenir, sans-serif;
    font-size: 12px;
    color: var(--bsl-brown, #3d3530);
    line-height: 1.5;
    display: flex;
    gap: 8px;
    align-items: flex-start;
}
.bsl-guests-info i {
    color: var(--bsl-gold, #C4A962);
    margin-top: 2px;
    flex-shrink: 0;
}

/* ── Total ──────────────────────────────────────────────── */
.bsl-total-row {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    padding: 12px 0;
    border-top: 1px solid var(--bsl-border, #ede8df);
    border-bottom: 1px solid var(--bsl-border, #ede8df);
    margin-bottom: 16px;
}
.bsl-total-label {
    font-family: Avenir, sans-serif;
    font-size: 13px;
    color: var(--bsl-muted, #8a7d6a);
}
.bsl-total-value {
    font-family: 'Fraunces', serif;
    font-size: 22px;
    font-weight: 500;
    color: var(--bsl-brown, #3d3530);
}

/* ── Boutons de réservation ─────────────────────────────── */
.bsl-booking-form-wrap {
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.bsl-book-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    width: 100%;
    height: 46px;
    padding: 0 22px;
    border: none;
    border-radius: 50px;
    font-family: Avenir, 'Nunito', sans-serif;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    transition: transform .15s ease, box-shadow .15s ease;
}
.bsl-book-btn-primary {
    background: var(--bsl-brown, #3d3530);
    color: #fff;
}
.bsl-book-btn-primary:hover {
    background: #2a241f;
    transform: translateY(-1px);
    box-shadow: 0 6px 18px rgba(61,53,48,.25);
}
.bsl-book-btn-secondary {
    background: transparent;
    color: var(--bsl-brown, #3d3530);
    border: 1px solid var(--bsl-brown, #3d3530);
}
.bsl-book-btn-secondary:hover {
    background: var(--bsl-brown, #3d3530);
    color: #fff;
}
.bsl-priv-hint {
    font-weight: 400;
    opacity: .85;
    font-size: 12px;
}

/* ── État vide ──────────────────────────────────────────── */
.bsl-booking-empty {
    text-align: center;
    padding: 32px 18px;
    background: #faf7f0;
    border: 1px dashed var(--bsl-border, #ede8df);
    border-radius: 14px;
}
.bsl-booking-empty-icon {
    font-size: 36px;
    margin-bottom: 8px;
    opacity: .65;
}
.bsl-booking-empty-title {
    font-family: 'Fraunces', serif;
    font-size: 17px;
    font-weight: 500;
    color: var(--bsl-brown, #3d3530);
    margin: 0 0 6px;
}
.bsl-booking-empty-sub {
    font-family: Avenir, sans-serif;
    font-size: 13px;
    color: var(--bsl-muted, #8a7d6a);
    margin: 0;
    line-height: 1.5;
}

/* ── Responsive ─────────────────────────────────────────── */
@media (max-width: 600px) {
    .bsl-fullcal .fc-toolbar-title { font-size: 14px; }
    .bsl-selected-info { flex-direction: column; gap: 6px; align-items: flex-start; }
    .bsl-total-value { font-size: 18px; }
}

/* =========================================================
 * BOOKING WIDGET — État initial : boutons seuls
 * ========================================================= */
.bsl-step-buttons {
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin-top: 8px;
}

/* =========================================================
 * MODALE DE RÉSERVATION
 * ========================================================= */
body.bsl-modal-open { overflow: hidden; }

.bsl-modal[hidden] { display: none !important; }
.bsl-modal {
    position: fixed !important;
    inset: 0 !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    width: 100% !important;
    height: 100% !important;
    z-index: 2147483600 !important; /* max int32 area, au-dessus de tout */
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    animation: bslFadeIn .2s ease;
    isolation: isolate;
    transform: none !important;
    margin: 0 !important;
}
@keyframes bslFadeIn { from { opacity: 0; } to { opacity: 1; } }

.bsl-modal-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(28, 22, 18, .55);
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
}

.bsl-modal-dialog {
    position: relative;
    background: #fff;
    border-radius: 18px;
    box-shadow: 0 20px 60px rgba(0, 0, 0, .25);
    max-width: 580px;
    width: 100%;
    max-height: 90vh;
    overflow-y: auto;
    padding: 28px 28px 24px;
    animation: bslSlideUp .25s ease;
}
@keyframes bslSlideUp {
    from { transform: translateY(20px); opacity: 0; }
    to   { transform: translateY(0);    opacity: 1; }
}

.bsl-modal-close {
    position: absolute;
    top: 14px;
    right: 14px;
    width: 36px;
    height: 36px;
    background: #f5f1e8;
    border: none;
    border-radius: 50%;
    font-size: 22px;
    line-height: 1;
    color: var(--bsl-brown, #3d3530);
    cursor: pointer;
    transition: background .15s ease, transform .15s ease;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
}
.bsl-modal-close:hover { background: #e8dfc9; transform: rotate(90deg); }

.bsl-modal-title {
    font-family: 'Fraunces', serif;
    font-size: 22px;
    font-weight: 500;
    color: var(--bsl-brown, #3d3530);
    margin: 0 36px 6px 0;
    line-height: 1.25;
}

.bsl-modal-mode-info {
    font-family: Avenir, sans-serif;
    font-size: 13px;
    color: var(--bsl-muted, #8a7d6a);
    line-height: 1.5;
    margin: 0 0 16px;
    padding: 10px 12px;
    background: #fdf8ee;
    border-left: 3px solid var(--bsl-gold, #C4A962);
    border-radius: 6px;
}

/* Affichage conditionnel selon le mode (standard / privatisation) */
.bsl-modal[data-mode="standard"]      .bsl-modal-title-privatisation,
.bsl-modal[data-mode="standard"]      .bsl-modal-mode-info-privatisation,
.bsl-modal[data-mode="privatisation"] .bsl-modal-title-standard,
.bsl-modal[data-mode="privatisation"] .bsl-mode-standard-only {
    display: none !important;
}

.bsl-modal[data-mode="standard"] .bsl-modal-mode-info-privatisation { display: none; }

/* Compteur d'invités désactivé en mode privatisation (cas où on garderait visible) */
.bsl-guests-input:disabled { opacity: .55; }

/* ---- Anti-overbook : séances complètes (fix feature-001) ---- */
.bsl-fc-event-full {
    background: #999 !important;
    border-color: #777 !important;
    color: #fff !important;
    text-decoration: line-through;
    opacity: .65;
    cursor: not-allowed;
}
.bsl-fc-event-selected.bsl-fc-event-full {
    background: #888 !important;
    border-color: #666 !important;
    text-decoration: line-through;
    opacity: 1;
}
/* ---- Privatisation : séances déjà réservées, non privatisables (fix feature-001) ---- */
.bsl-fc-event-nopriv {
    background: #c9b8a8 !important;
    border-color: #b3a394 !important;
    color: #fff !important;
    opacity: .6;
    cursor: not-allowed;
}
.bsl-fc-event-selected.bsl-fc-event-nopriv {
    background: #a8907a !important;
    border-color: #8f7763 !important;
    opacity: 1;
}
.bsl-session-remaining {
    margin-top: 4px;
    font-size: 13px;
    color: #5a5048;
    font-weight: 600;
}
.bsl-session-remaining.is-full {
    color: #cc3333;
}

/* ---- Services réservables (fix feature-001) ---- */
.bsl-services-row {
    margin-top: 16px;
    padding-top: 16px;
    border-top: 1px solid #ede8df;
}
.bsl-services-title {
    font-family: 'Fraunces', serif;
    font-size: 15px;
    color: #3d3530;
    margin: 0 0 10px;
}
.bsl-services-list {
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.bsl-service-item {
    background: #fff;
    border: 2px solid #ede8df;
    border-radius: 8px;
    transition: border-color 0.15s, background 0.15s;
    overflow: hidden;
    position: relative;
}
.bsl-service-item:hover {
    border-color: #c4a35a;
}

/* Cacher la checkbox native — l'indicateur visuel est dans .bsl-service-check */
.bsl-service-cb {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    padding: 0 !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important;
    white-space: nowrap !important;
    border: 0 !important;
}

.bsl-service-label {
    display: flex !important;
    align-items: center !important;
    gap: 12px !important;
    margin: 0 !important;
    padding: 12px 14px !important;
    cursor: pointer !important;
    width: 100%;
    box-sizing: border-box;
}

/* Indicateur custom de la checkbox */
.bsl-service-check {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 20px;
    height: 20px;
    border: 2px solid #c9a227;
    border-radius: 4px;
    background: #fff;
    transition: all 0.15s;
    position: relative;
}
.bsl-service-cb:checked + .bsl-service-label .bsl-service-check {
    background: #c9a227;
}
.bsl-service-cb:checked + .bsl-service-label .bsl-service-check::after {
    content: '';
    position: absolute;
    top: 2px;
    left: 5px;
    width: 5px;
    height: 9px;
    border: solid #fff;
    border-width: 0 2px 2px 0;
    transform: rotate(45deg);
}
.bsl-service-cb:focus-visible + .bsl-service-label .bsl-service-check {
    box-shadow: 0 0 0 3px rgba(201, 162, 39, 0.25);
}

/* Carte sélectionnée */
.bsl-service-cb:checked + .bsl-service-label {
    background: #fdf8ee;
}
.bsl-service-item:has(.bsl-service-cb:checked) {
    border-color: #c9a227;
    background: #fdf8ee;
}

.bsl-service-name {
    flex: 1;
    min-width: 0;
    font-size: 14px;
    color: #3d3530;
    font-weight: 500;
    line-height: 1.3;
}
.bsl-service-price {
    flex-shrink: 0;
    font-size: 14px;
    font-weight: 700;
    color: #c9a227;
    white-space: nowrap;
}
.bsl-service-price.is-free {
    color: #999;
    font-weight: 400;
    font-style: italic;
}

/* Qty controls — sous le label, séparés par un trait fin */
.bsl-service-qty {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 8px 14px 12px;
    border-top: 1px solid #f3f0ea;
    background: #fafafa;
}
.bsl-service-qty[hidden] {
    display: none !important;
}
.bsl-service-qty-label {
    flex: 1 1 auto;
    font-size: 12px;
    color: #888;
    white-space: nowrap;
}
.bsl-svc-qty-btn {
    width: 28px;
    height: 28px;
    border: 1px solid #ddd;
    background: #fff;
    border-radius: 4px;
    cursor: pointer;
    font-size: 16px;
    line-height: 1;
    color: #3d3530;
    padding: 0;
    flex-shrink: 0;
}
.bsl-svc-qty-btn:hover {
    border-color: #c9a227;
    color: #c9a227;
}
/* spécificité bumpée pour battre le `input[type="number"] { width:100%; height:51px; ... }` du theme parent Listeo */
input[type="number"].bsl-service-qty-input,
.bsl-service-qty-input {
    width: 44px;
    min-width: 44px;
    max-width: 44px;
    height: 28px;
    line-height: 28px;
    text-align: center;
    border: 1px solid #ddd;
    border-radius: 4px;
    padding: 0 4px;
    margin: 0;
    font-size: 13px;
    box-sizing: border-box;
    flex: 0 0 44px;
    display: inline-block;
    box-shadow: none;
}
input[type="number"].bsl-service-qty-input::-webkit-inner-spin-button,
input[type="number"].bsl-service-qty-input::-webkit-outer-spin-button {
    -webkit-appearance: none;
    margin: 0;
}
input[type="number"].bsl-service-qty-input {
    -moz-appearance: textfield;
    appearance: textfield;
}

/* =========================================================
 * Feature 005 — Avis ateliers post-participation
 * ========================================================= */

.lsv2-reviews-section {
    margin-top: 60px;
    padding-top: 30px;
    border-top: 1px solid #ece8e0;
}

.lsv2-reviews-summary {
    display: flex;
    align-items: center;
    gap: 24px;
    background: #faf7f2;
    border: 1px solid #ece8e0;
    border-radius: 6px;
    padding: 18px 22px;
    margin-bottom: 24px;
    flex-wrap: wrap;
}
.lsv2-reviews-summary-rating {
    display: flex;
    align-items: baseline;
    gap: 6px;
}
.lsv2-reviews-summary-value {
    font-family: 'Fraunces', serif;
    font-size: 36px;
    font-weight: 600;
    color: #3d3530;
    line-height: 1;
}
.lsv2-reviews-summary-out {
    font-size: 14px;
    color: #888;
}
.lsv2-reviews-summary-stars .star-rating {
    font-size: 18px;
}
.lsv2-reviews-summary-count {
    font-size: 13px;
    color: #888;
    margin-left: auto;
}

/* ── Formulaire d'avis ─────────────────────────────────── */
.lsv2-review-form-wrap {
    background: #fff;
    border: 1px solid #ece8e0;
    border-radius: 6px;
    padding: 22px 26px;
    margin-bottom: 28px;
}
.lsv2-review-form-title {
    font-family: 'Fraunces', serif;
    font-size: 20px;
    color: #3d3530;
    margin: 0 0 18px;
}
.lsv2-review-form .lsv2-required {
    color: #c0392b;
}
.lsv2-rating-fieldset {
    border: none;
    padding: 0;
    margin: 0 0 20px;
}
.lsv2-rating-legend {
    font-size: 14px;
    color: #555;
    margin-bottom: 8px;
    padding: 0;
}
/* Étoiles cliquables — input radio caché, label = étoile */
.lsv2-stars-input {
    display: inline-flex;
    flex-direction: row-reverse;
    gap: 4px;
}
.lsv2-stars-input input[type="radio"] {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}
.lsv2-stars-input label {
    cursor: pointer;
    font-size: 28px;
    color: #d8d3ca;
    transition: color 0.15s ease;
    margin: 0;
    padding: 0 2px;
}
.lsv2-stars-input label i {
    pointer-events: none;
}
.lsv2-stars-input label:hover,
.lsv2-stars-input label:hover ~ label,
.lsv2-stars-input input[type="radio"]:checked ~ label {
    color: #c9a227;
}
.lsv2-stars-input input[type="radio"]:focus + label {
    outline: 2px solid #c9a227;
    outline-offset: 2px;
    border-radius: 2px;
}

.lsv2-comment-field {
    margin: 0 0 18px;
}
.lsv2-comment-label {
    display: block;
    font-size: 14px;
    color: #555;
    margin-bottom: 6px;
}
.lsv2-review-form textarea#comment {
    width: 100%;
    min-height: 120px;
    padding: 12px 14px;
    border: 1px solid #d8d3ca;
    border-radius: 4px;
    font-family: 'Nunito', sans-serif;
    font-size: 14px;
    line-height: 1.55;
    box-sizing: border-box;
    resize: vertical;
    box-shadow: none;
    margin: 0;
    height: auto;
    line-height: 1.55;
}
.lsv2-review-form textarea#comment:focus {
    border-color: #c9a227;
    outline: none;
    box-shadow: 0 0 0 2px rgba(201, 162, 39, 0.18);
}
.lsv2-comment-hint {
    display: block;
    font-size: 12px;
    color: #999;
    margin-top: 4px;
}
.lsv2-review-submit-btn {
    background: #c9a227;
    color: #fff;
    border: none;
    border-radius: 4px;
    padding: 11px 24px;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.15s ease;
}
.lsv2-review-submit-btn:hover {
    background: #b08c1e;
}

/* ── État "déjà reviewé" ───────────────────────────────── */
.lsv2-review-already-submitted {
    display: flex;
    align-items: center;
    gap: 10px;
    background: #f1f7f0;
    border: 1px solid #c8e0c4;
    color: #4a6f47;
    border-radius: 6px;
    padding: 14px 18px;
    margin-bottom: 24px;
    font-size: 14px;
}
.lsv2-review-already-submitted i {
    font-size: 18px;
    color: #6ba967;
}

/* ── Liste d'avis ──────────────────────────────────────── */
.lsv2-reviews-list {
    margin-top: 18px;
    position: relative;
    clear: both;
    width: 100%;
    box-sizing: border-box;
}
.lsv2-review-item {
    display: flex;
    gap: 16px;
    padding: 18px 0;
    border-bottom: 1px solid #f0ece5;
    /* Protections contre les héritages parent (float/position absolute du theme Listeo
       sur d'éventuelles classes WP par défaut .comment / .comment-body / etc.) */
    position: relative;
    float: none;
    clear: both;
    width: auto;
    max-width: 100%;
    box-sizing: border-box;
    margin: 0;
}
.lsv2-review-item:last-child {
    border-bottom: none;
}
.lsv2-review-item--reply {
    margin-left: 60px;
    background: #faf7f2;
    border: 1px solid #ece8e0;
    border-radius: 6px;
    padding: 14px 18px;
    margin-top: 8px;
    margin-bottom: 8px;
}
.lsv2-review-avatar {
    flex: 0 0 60px;
    position: relative;
}
.lsv2-review-avatar img {
    border-radius: 50%;
    width: 60px;
    height: 60px;
    object-fit: cover;
    /* L'avatar img par défaut WP peut hériter de display: block ou position absolue
       depuis le theme parent — on force le positionnement local. */
    position: relative !important;
    left: auto !important;
    top: auto !important;
    margin: 0;
    display: block;
}
.lsv2-review-body {
    flex: 1 1 auto;
    min-width: 0;
}
.lsv2-review-header {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
    margin-bottom: 6px;
}
.lsv2-review-author {
    font-size: 15px;
    color: #3d3530;
    font-weight: 600;
}
.lsv2-review-reply-badge {
    background: #c9a227;
    color: #fff;
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    padding: 3px 8px;
    border-radius: 3px;
}
.lsv2-review-date {
    font-size: 12px;
    color: #999;
    margin-left: auto;
}
.lsv2-review-rating {
    margin-bottom: 6px;
}
.lsv2-review-rating .star-rating {
    font-size: 14px;
}
.lsv2-review-content {
    font-size: 14px;
    line-height: 1.6;
    color: #555;
}
.lsv2-review-content p {
    margin: 0 0 8px;
}
.lsv2-review-actions {
    margin-top: 8px;
}
.lsv2-review-reply-btn {
    color: #c9a227;
    font-size: 13px;
    font-weight: 600;
    text-decoration: none;
    border-bottom: 1px dotted #c9a227;
    padding-bottom: 1px;
    cursor: pointer;
}
.lsv2-review-reply-btn:hover {
    color: #b08c1e;
}
.lsv2-review-reply-btn[hidden] {
    display: none !important;
}

/* Mini formulaire de réponse owner inline */
.lsv2-review-reply-form {
    margin-top: 10px;
    background: #faf7f2;
    border: 1px solid #ece8e0;
    border-radius: 6px;
    padding: 12px 14px;
}
.lsv2-review-reply-form[hidden] {
    display: none !important;
}
.lsv2-review-reply-form textarea {
    width: 100%;
    min-height: 70px;
    padding: 10px 12px;
    border: 1px solid #d8d3ca;
    border-radius: 4px;
    font-family: 'Nunito', sans-serif;
    font-size: 13px;
    line-height: 1.5;
    box-sizing: border-box;
    resize: vertical;
    box-shadow: none;
    margin: 0 0 10px;
    height: auto;
}
.lsv2-review-reply-form textarea:focus {
    border-color: #c9a227;
    outline: none;
    box-shadow: 0 0 0 2px rgba(201, 162, 39, 0.18);
}
.lsv2-review-reply-form-actions {
    display: flex;
    gap: 8px;
    align-items: center;
}
.lsv2-review-reply-submit {
    background: #c9a227;
    color: #fff;
    border: none;
    border-radius: 4px;
    padding: 8px 16px;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.15s ease;
}
.lsv2-review-reply-submit:hover { background: #b08c1e; }
.lsv2-review-reply-submit:disabled { opacity: 0.6; cursor: wait; }
.lsv2-review-reply-cancel {
    background: transparent;
    color: #888;
    border: 1px solid #d8d3ca;
    border-radius: 4px;
    padding: 7px 14px;
    font-size: 13px;
    cursor: pointer;
    transition: all 0.15s ease;
}
.lsv2-review-reply-cancel:hover { border-color: #888; color: #555; }
.lsv2-review-reply-error {
    color: #c0392b;
    font-size: 12px;
    margin: 8px 0 0;
    min-height: 14px;
}
.lsv2-review-reply-error:empty { margin: 0; }

.lsv2-reviews-empty {
    text-align: center;
    color: #999;
    font-style: italic;
    padding: 30px 0;
}

/* ── Pagination avis ──────────────────────────────────── */
.lsv2-reviews-pagination {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    margin: 24px 0 8px;
    flex-wrap: wrap;
}
.lsv2-reviews-pagination__btn,
.lsv2-reviews-pagination__num,
.lsv2-reviews-pagination__current {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 36px;
    height: 36px;
    padding: 0 12px;
    border-radius: 4px;
    font-size: 13px;
    font-weight: 600;
    text-decoration: none;
    border: 1px solid #ece8e0;
    background: #fff;
    color: #3d3530;
    transition: all 0.15s ease;
    box-sizing: border-box;
}
.lsv2-reviews-pagination__btn:hover,
.lsv2-reviews-pagination__num:hover {
    border-color: #c9a227;
    color: #c9a227;
    background: #fffaf0;
}
.lsv2-reviews-pagination__current {
    background: #c9a227;
    color: #fff;
    border-color: #c9a227;
    cursor: default;
}
.lsv2-reviews-pagination__pages {
    display: inline-flex;
    align-items: center;
    gap: 4px;
}
.lsv2-reviews-pagination__ellipsis {
    color: #999;
    padding: 0 4px;
    font-size: 14px;
}

/* ── Section profil artisan : avis agrégés ────────────── */
.lsv2-artisan-reviews-section {
    margin-top: 30px;
}
.lsv2-artisan-rating-summary {
    display: inline-flex;
    align-items: baseline;
    gap: 8px;
    font-family: 'Fraunces', serif;
    font-size: 22px;
    color: #3d3530;
}
.lsv2-artisan-rating-summary .star-rating {
    font-size: 16px;
}
.lsv2-artisan-review-item {
    display: flex;
    gap: 14px;
    padding: 14px 0;
    border-bottom: 1px solid #f0ece5;
}
.lsv2-artisan-review-source {
    font-size: 12px;
    color: #999;
    font-style: italic;
    margin-top: 6px;
    display: block;
}
.lsv2-artisan-review-source a {
    color: #c9a227;
    text-decoration: none;
}
.lsv2-artisan-review-source a:hover {
    text-decoration: underline;
}
.lsv2-artisan-no-reviews {
    color: #999;
    font-style: italic;
    padding: 14px 0;
}

/* =========================================================
 * Fix feature-001 — Page "Gérer mes séances" (owner-sessions.php)
 * ========================================================= */
.lsv2-session-mgr {
    max-width: 1100px;
    margin: 30px auto;
    font-family: 'Nunito', sans-serif;
}
.lsv2-session-mgr-title {
    font-family: 'Fraunces', serif;
    font-size: 26px;
    color: #3d3530;
    margin: 0 0 8px;
}
.lsv2-session-mgr-desc {
    font-size: 14px;
    color: #5a5048;
    margin: 0 0 12px;
}
.lsv2-session-mgr-archive {
    font-size: 12px;
    color: #888;
    font-style: italic;
    margin: 0 0 20px;
}
.lsv2-session-mgr-grid {
    display: grid;
    grid-template-columns: 1fr 320px;
    gap: 24px;
    align-items: flex-start;
}
@media (max-width: 900px) {
    .lsv2-session-mgr-grid { grid-template-columns: 1fr; }
}
.lsv2-session-mgr-cal-col .fc {
    font-family: 'Nunito', sans-serif;
    font-size: 14px;
}
.lsv2-session-mgr-cal-col .fc-day-today { background: #fdf8ee !important; }
.lsv2-session-mgr-cal-col .fc-event {
    background: #C4A962 !important;
    border-color: #C4A962 !important;
    color: #fff !important;
    border-radius: 4px;
    font-size: 11px;
    font-weight: 600;
    cursor: pointer;
    padding: 1px 5px;
}
.lsv2-session-mgr-cal-col .fc-toolbar-title {
    font-family: 'Fraunces', serif;
    font-size: 18px;
}

.lsv2-session-mgr-list-col {
    background: #fff;
    border: 1px solid #ede8df;
    border-radius: 8px;
    padding: 16px;
    /* Hauteur fixe = calendrier (560px FullCalendar) — la liste scrolle en interne */
    height: 560px;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}
#lsv2-session-mgr-rows {
    flex: 1;
    overflow-y: auto;
    margin-right: -8px; /* compense la scrollbar */
    padding-right: 8px;
}
#lsv2-session-mgr-rows::-webkit-scrollbar { width: 4px; }
#lsv2-session-mgr-rows::-webkit-scrollbar-thumb { background: #ddd; border-radius: 2px; }
.lsv2-session-mgr-list-title {
    font-family: 'Fraunces', serif;
    font-size: 15px;
    color: #3d3530;
    margin: 0 0 4px;
    display: flex;
    align-items: center;
    gap: 8px;
    text-transform: capitalize;
}
.lsv2-month-count-badge {
    background: #C4A962;
    color: #fff;
    border-radius: 20px;
    font-size: 12px;
    font-family: 'Nunito', sans-serif;
    padding: 1px 10px;
    font-weight: 700;
    text-transform: none;
}
.lsv2-session-mgr-list-subtitle {
    font-size: 12px;
    color: #888;
    margin: 0 0 12px;
}
.lsv2-session-mgr-list-subtitle strong {
    color: #3d3530;
}

.lsv2-session-mgr-row {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 0;
    border-bottom: 1px solid #f3f0ea;
    white-space: nowrap;
}
.lsv2-session-mgr-row:last-child { border-bottom: none; }

/* Groupes par mois (collapsibles) */
.lsv2-month-group {
    border: 1px solid #ede8df;
    border-radius: 6px;
    margin-bottom: 8px;
    overflow: hidden;
    background: #fff;
}
.lsv2-month-header {
    width: 100%;
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 12px;
    background: #fdf8ee;
    border: none;
    cursor: pointer;
    font-family: inherit;
    text-align: left;
    transition: background 0.15s;
}
.lsv2-month-header:hover {
    background: #fdf5e0;
}
.lsv2-month-name {
    flex: 1;
    font-weight: 600;
    color: #3d3530;
    font-size: 14px;
    text-transform: capitalize;
}
.lsv2-month-count {
    font-size: 12px;
    color: #888;
    background: #fff;
    border-radius: 12px;
    padding: 2px 10px;
}
.lsv2-month-toggle {
    color: #888;
    font-size: 12px;
    transition: transform 0.2s;
}
.lsv2-month-group.is-open .lsv2-month-toggle {
    transform: rotate(180deg);
}
.lsv2-month-body {
    display: none;
    max-height: 320px;
    overflow-y: auto;
}
.lsv2-month-group.is-open .lsv2-month-body {
    display: block;
}
.lsv2-month-body::-webkit-scrollbar { width: 4px; }
.lsv2-month-body::-webkit-scrollbar-thumb { background: #ddd; border-radius: 2px; }
.lsv2-row-date {
    flex: 0 0 auto;
    font-size: 11px;
    color: #888;
    font-weight: 500;
    white-space: nowrap;
    font-family: monospace, system-ui;
}
.lsv2-row-time {
    border: 1px solid #ddd;
    border-radius: 4px;
    padding: 4px 6px;
    font-size: 12px;
    background: #fff;
    cursor: pointer;
}
.lsv2-row-remove {
    background: none;
    border: none;
    color: #ccc;
    font-size: 18px;
    cursor: pointer;
    padding: 0 4px;
    line-height: 1;
}
.lsv2-row-remove:hover { color: #cc3333; }
.lsv2-session-mgr-empty {
    color: #bbb;
    font-style: italic;
    font-size: 13px;
    margin: 8px 0 0;
}

.lsv2-session-mgr-actions {
    margin-top: 24px;
    display: flex;
    align-items: center;
    gap: 16px;
}
.lsv2-session-mgr-msg {
    margin: 0;
    font-size: 13px;
}
.lsv2-session-mgr-msg.is-success { color: #2d8a4d; }
.lsv2-session-mgr-msg.is-error   { color: #cc3333; }

/* =========================================================
 * Barre de recherche [bellonie_search]
 * ========================================================= */
.bel-search {
    display: flex;
    align-items: stretch;
    background: #fff;
    border-radius: 12px;
    box-shadow: 0 4px 18px rgba(0, 0, 0, 0.08);
    overflow: hidden;
    max-width: 980px;
    margin: 0 auto;
    padding: 6px;
    gap: 0;
    flex-wrap: nowrap;
    box-sizing: border-box;
}
.bel-search-field {
    flex: 1 1 0;
    display: flex;
    align-items: center;
    justify-content: flex-start;
    gap: 8px;
    padding: 0 14px;
    min-width: 0;
    min-height: 50px;
    box-sizing: border-box;
}
.bel-search-icon {
    color: #c9a227;
    font-size: 16px;
    flex-shrink: 0;
    line-height: 1;
    display: inline-flex;
    align-items: center;
}
.bel-search .bel-search-input,
.bel-search .bel-search-select {
    flex: 1 1 auto;
    width: 100%;
    min-width: 0;
    border: 0 none !important;
    outline: none !important;
    font-size: 15px;
    color: #3d3530;
    background: transparent !important;
    background-color: transparent !important;
    background-image: none !important;
    font-family: inherit;
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    line-height: 1.4;
    height: auto !important;
    padding: 0 !important;
    margin: 0 !important;
    box-shadow: none !important;
    border-radius: 0 !important;
}
.bel-search .bel-search-input { cursor: text; }
.bel-search .bel-search-select { cursor: pointer; }
.bel-search .bel-search-input:focus,
.bel-search .bel-search-select:focus {
    box-shadow: none !important;
    border: 0 none !important;
    outline: none !important;
}
.bel-search-input:focus,
.bel-search-select:focus {
    color: #3d3530;
}
.bel-search-input::placeholder {
    color: #999;
}
.bel-search-submit {
    background: #c9a227;
    color: #fff;
    border: none;
    border-radius: 8px;
    padding: 0;
    width: 48px;
    height: 48px;
    margin: 0 4px;
    cursor: pointer;
    font-size: 18px;
    transition: background 0.15s;
    flex-shrink: 0;
    align-self: center;
    display: flex;
    align-items: center;
    justify-content: center;
}
.bel-search-submit:hover {
    background: #a8851d;
}

/* Champ "Lieu" : input + bouton "Autour de moi" intégré à droite */
.bel-search-field-location {
    position: relative;
    flex: 2 1 0;
}
.bel-search-near-me {
    background: transparent;
    border: 1px solid #ede8df;
    color: #c9a227;
    border-radius: 50%;
    width: 32px;
    height: 32px;
    cursor: pointer;
    font-size: 13px;
    transition: background 0.15s, color 0.15s, border-color 0.15s;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    line-height: 1;
}
.bel-search-near-me:hover {
    background: #fff7e0;
    border-color: #c9a227;
}
.bel-search-near-me.is-active {
    background: #c9a227;
    border-color: #c9a227;
    color: #fff;
}
.bel-search-near-me.is-loading {
    opacity: .6;
    cursor: progress;
}
.bel-search-near-me.is-loading i {
    animation: bel-spin 0.9s linear infinite;
}
@keyframes bel-spin {
    to { transform: rotate(360deg); }
}

/* Champ rayon (select court) */
.bel-search-field-radius {
    flex: 0 0 110px;
    min-width: 110px;
}

.bel-search-divider {
    width: 1px;
    height: 28px;
    background: #ede8df;
    flex-shrink: 0;
    align-self: center;
}

/* Responsive : empile en colonne sous 900px */
@media (max-width: 900px) {
    .bel-search {
        flex-direction: column;
        padding: 12px;
        max-width: 480px;
    }
    .bel-search-field {
        width: 100%;
        padding: 10px 14px;
        border: 1px solid #ede8df;
        border-radius: 8px;
        margin-bottom: 8px;
        min-height: 48px;
    }
    .bel-search-field-location,
    .bel-search-field-radius {
        flex: 0 0 auto;
        min-width: 0;
    }
    .bel-search-divider {
        display: none;
    }
    .bel-search-submit {
        width: 100%;
        height: 48px;
        margin-top: 4px;
    }
}

/* US2 — Bouton "Privatiser cet atelier" désactivé (anti-overbook) */
.bsl-book-btn-disabled,
.bsl-book-btn:disabled {
    opacity: .55;
    cursor: not-allowed;
    pointer-events: none;
}
.bsl-priv-disabled-msg {
    margin: 8px 0 0;
    font-size: 13px;
    color: #888;
    font-style: italic;
}

/* =========================================================
 * Feature 002 — Annulation owner + recovery participant
 * ========================================================= */

/* ---- Bouton "Annuler la séance" sur le dashboard owner ----
 * Rendu via hook puis déplacé en JS vers .booking-actions (footer card).
 * Couleur dorée volontairement distincte pour différencier du flow natif Listeo. */
.lsv2-cancel-btn {
    background: #c9a227 !important;
    color: #fff !important;
    border: none;
    padding: 6px 14px;
    border-radius: 4px;
    cursor: pointer;
    font-size: 13px;
    font-weight: 600;
}
.lsv2-cancel-btn:hover:not(.disabled):not(:disabled) {
    background: #a8851d !important;
}
.lsv2-cancel-btn.disabled,
.lsv2-cancel-btn[aria-disabled="true"],
.lsv2-cancel-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
    background: #999 !important;
    pointer-events: none;
}

/* Masque le bouton natif Listeo "Cancel" quand notre bouton recovery est rendu :
 * le flow d'annulation owner doit passer par notre modale (motif + emails recovery). */
.booking-card:has(.lsv2-cancel-btn) .booking-btn.cancel {
    display: none !important;
}

/* ---- Modale d'annulation ---- */
.lsv2-modal {
    position: fixed;
    inset: 0;
    z-index: 100000;
    display: flex;
    align-items: center;
    justify-content: center;
}
.lsv2-modal[hidden] {
    display: none !important;
}
.lsv2-modal-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.55);
}
.lsv2-modal-dialog {
    position: relative;
    background: #fff;
    border-radius: 8px;
    padding: 28px;
    max-width: 540px;
    width: 90%;
    max-height: 90vh;
    overflow-y: auto;
    box-shadow: 0 10px 40px rgba(0, 0, 0, 0.25);
}
.lsv2-modal-close {
    position: absolute;
    top: 8px;
    right: 12px;
    background: none;
    border: none;
    font-size: 28px;
    line-height: 1;
    cursor: pointer;
    color: #888;
}
.lsv2-modal-close:hover {
    color: #333;
}
.lsv2-modal-dialog h3 {
    margin: 0 0 12px;
    font-family: 'Fraunces', serif;
}
.lsv2-modal-dialog label {
    display: block;
    margin: 12px 0 4px;
    font-weight: 600;
}
.lsv2-modal-dialog textarea {
    width: 100%;
    border: 1px solid #ddd;
    border-radius: 4px;
    padding: 10px;
    font-family: inherit;
    font-size: 14px;
    box-sizing: border-box;
}
.lsv2-cancel-counter {
    margin: 4px 0 0;
    font-size: 12px;
    color: #888;
    text-align: right;
}
.lsv2-cancel-error {
    color: #cc3333;
    font-size: 13px;
    min-height: 18px;
    margin: 8px 0 0;
}
.lsv2-modal-actions {
    margin-top: 18px;
    display: flex;
    gap: 10px;
    justify-content: flex-end;
}

/* ---- Page de choix participant ---- */
.lsv2-recovery {
    max-width: 1100px;
    margin: 40px auto;
    padding: 36px 40px;
    background: #fdf8ee;
    border-radius: 12px;
    font-family: 'Nunito', sans-serif;
    box-shadow: 0 2px 12px rgba(0,0,0,0.04);
}
.lsv2-recovery-title {
    font-family: 'Fraunces', serif;
    font-size: 28px;
    color: #3d3530;
    margin: 0 0 12px;
}
.lsv2-recovery-subtitle {
    font-size: 16px;
    color: #5a5048;
    margin: 0 0 20px;
}
.lsv2-recovery-reason {
    background: #fff;
    border-left: 4px solid #c9a227;
    padding: 12px 16px;
    margin: 0 0 24px;
    border-radius: 0 4px 4px 0;
}
.lsv2-recovery-reason p {
    margin: 6px 0 0;
    color: #3d3530;
}
.lsv2-recovery-intro {
    font-size: 15px;
    margin: 0 0 16px;
    color: #5a5048;
}

.lsv2-recovery-cards {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 20px;
    align-items: stretch;
}
.lsv2-recovery-card {
    display: flex;
    flex-direction: column;
    background: #fff;
    border: 1px solid #ede8df;
    border-radius: 10px;
    padding: 28px 24px;
    text-align: center;
    transition: border-color 0.15s, transform 0.15s, box-shadow 0.15s;
    min-height: 240px;
}
.lsv2-recovery-card:hover {
    border-color: #c9a227;
    transform: translateY(-2px);
    box-shadow: 0 4px 14px rgba(201,162,39,0.12);
}
.lsv2-recovery-card h3 {
    font-family: 'Fraunces', serif;
    font-size: 19px;
    color: #3d3530;
    margin: 0 0 12px;
}
.lsv2-recovery-card p {
    font-size: 14px;
    color: #5a5048;
    line-height: 1.5;
    margin: 0 0 20px;
    flex-grow: 1;
}
.lsv2-recovery-btn {
    display: inline-block;
    background: #c9a227;
    color: #fff;
    border: none;
    padding: 12px 20px;
    border-radius: 6px;
    cursor: pointer;
    font-size: 14px;
    font-weight: 600;
    text-decoration: none;
    width: 100%;
    box-sizing: border-box;
    margin-top: auto;
}
.lsv2-recovery-btn:hover:not(.disabled):not(:disabled) {
    background: #a8851d;
}
.lsv2-recovery-btn.disabled,
.lsv2-recovery-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
    background: #999;
}
.lsv2-recovery-hint {
    font-size: 12px;
    color: #888;
    font-style: italic;
    margin: 8px 0 0;
}

/* ---- Picker de séances pour reprogrammer ---- */
.lsv2-recovery-picker {
    margin-top: 20px;
}
.lsv2-session-list {
    list-style: none;
    padding: 0;
    margin: 0 0 20px;
}
.lsv2-session-item {
    background: #fff;
    border: 1px solid #ede8df;
    border-radius: 6px;
    padding: 12px 16px;
    margin: 0 0 8px;
    transition: border-color 0.15s;
}
.lsv2-session-item:hover:not(.lsv2-session-disabled) {
    border-color: #c9a227;
}
.lsv2-session-item label {
    display: flex;
    align-items: center;
    gap: 12px;
    cursor: pointer;
    line-height: 1.4;
}
.lsv2-session-item label input[type="radio"] {
    margin: 0;
    flex-shrink: 0;
}
.lsv2-session-item.lsv2-session-disabled label {
    cursor: not-allowed;
    opacity: 0.5;
}
.lsv2-session-label {
    flex: 1;
    font-weight: 600;
    color: #3d3530;
}
.lsv2-session-spots {
    font-size: 13px;
    color: #888;
}

/* ---- Écrans success / error / info ---- */
.lsv2-recovery-success,
.lsv2-recovery-error,
.lsv2-recovery-info {
    text-align: center;
    padding: 40px 24px;
}
.lsv2-recovery-success h2 {
    color: #2d8a4d;
}
.lsv2-recovery-error h2 {
    color: #cc3333;
}
.lsv2-recovery-info h2 {
    color: #3d3530;
}

/* Le wrapper widget n'a plus besoin du padding interne (la card extérieure gère) */
.bsl-booking-widget { margin-top: 4px; }

/* Modale : ajustements responsive */
@media (max-width: 600px) {
    .bsl-modal { padding: 0; }
    .bsl-modal-dialog {
        border-radius: 0;
        max-height: 100vh;
        height: 100%;
        padding: 22px 18px;
    }
    .bsl-modal-title { font-size: 18px; }
}

/* =========================================================
 * Feature 002 — Page admin "Demandes de remboursement" (US4)
 * Vit dans wp-admin, donc on garde des sélecteurs préfixés
 * pour ne pas polluer le front. Les classes .wp-list-table /
 * .subsubsub viennent du core WP, on ne fait que les compléter.
 * ========================================================= */

.lsv2-refund-queue .lsv2-refund-search .search-box { display: flex; gap: 8px; align-items: center; }
.lsv2-refund-queue .lsv2-refund-search input[type="search"] { min-width: 320px; }

.lsv2-refund-queue .lsv2-refund-table td { vertical-align: top; }
.lsv2-refund-queue .lsv2-refund-table small { color: #666; }

.lsv2-status-badge {
    display: inline-block;
    padding: 3px 10px;
    border-radius: 12px;
    font-size: 12px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    line-height: 1.4;
}
.lsv2-status-badge.lsv2-status-pending   { background: #fff4d6; color: #8a5a00; border: 1px solid #f0c674; }
.lsv2-status-badge.lsv2-status-processed { background: #d6f4dd; color: #0a6b2c; border: 1px solid #74c485; }
.lsv2-status-badge.lsv2-status-refused   { background: #ececec; color: #555;    border: 1px solid #c9c9c9; }

.lsv2-refund-mark-btn + .lsv2-refund-mark-btn { margin-left: 6px; }

/* Cellules détaillées de la queue refonte */
.lsv2-refund-table td.lsv2-cell-request,
.lsv2-refund-table td.lsv2-cell-listing,
.lsv2-refund-table td.lsv2-cell-participant,
.lsv2-refund-table td.lsv2-cell-payment,
.lsv2-refund-table td.lsv2-cell-reason,
.lsv2-refund-table td.lsv2-cell-action {
    vertical-align: top;
    padding: 14px 12px;
}
.lsv2-refund-table .lsv2-meta-line {
    display: block;
    margin-top: 4px;
    font-size: 12px;
    color: #666;
    line-height: 1.5;
}
.lsv2-refund-table .lsv2-amount {
    font-size: 16px;
    color: #3d3530;
    font-weight: 700;
}
.lsv2-refund-table .lsv2-reason-text {
    font-size: 13px;
    line-height: 1.5;
    color: #444;
    max-width: 320px;
}
.lsv2-refund-table .lsv2-sep {
    color: #ccc;
    margin: 0 4px;
}
.lsv2-refund-table .lsv2-action-buttons {
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin-top: 10px;
    align-items: flex-start;
}
.lsv2-refund-table .lsv2-action-buttons .button { white-space: nowrap; }
.lsv2-refund-table .lsv2-admin-note { font-size: 12px; color: #555; }

.lsv2-refund-modal {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.55);
    display: none;
    align-items: center;
    justify-content: center;
    z-index: 100050;
    padding: 24px;
}
.lsv2-refund-modal-inner {
    background: #fff;
    border-radius: 6px;
    padding: 24px 28px;
    max-width: 520px;
    width: 100%;
    box-shadow: 0 18px 48px rgba(0, 0, 0, 0.25);
}
.lsv2-refund-modal-inner h2 { margin-top: 0; font-size: 18px; }
.lsv2-refund-modal-inner textarea { width: 100%; resize: vertical; }
.lsv2-refund-modal-inner .button + .button { margin-left: 8px; }

@media (max-width: 600px) {
    .lsv2-refund-queue .lsv2-refund-search input[type="search"] { min-width: 0; flex: 1; }
    .lsv2-refund-queue .lsv2-refund-table th,
    .lsv2-refund-queue .lsv2-refund-table td { padding: 8px 6px; font-size: 13px; }
}

/* ---- Page "Mes bons cadeaux" (dashboard utilisateur) ---- */
.lsv2-vouchers {
    max-width: 900px;
    margin: 20px 0;
    font-family: 'Nunito', sans-serif;
}
.lsv2-vouchers-title {
    font-family: 'Fraunces', serif;
    font-size: 26px;
    color: #3d3530;
    margin: 0 0 24px;
}
.lsv2-vouchers-empty {
    background: #fdf8ee;
    border-radius: 8px;
    padding: 32px;
    text-align: center;
    color: #5a5048;
}
.lsv2-vouchers-list {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
    gap: 20px;
}
.lsv2-voucher-card {
    background: #fff;
    border: 1px solid #ede8df;
    border-radius: 10px;
    padding: 20px 22px;
    transition: border-color 0.15s, box-shadow 0.15s;
    border-left: 4px solid #c9a227;
}
.lsv2-voucher-card.lsv2-voucher-expired,
.lsv2-voucher-card.lsv2-voucher-used {
    opacity: 0.65;
    border-left-color: #999;
}
.lsv2-voucher-card.lsv2-voucher-active:hover {
    box-shadow: 0 4px 14px rgba(201,162,39,0.12);
}
.lsv2-voucher-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 14px;
}
.lsv2-voucher-status {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 1px;
    font-weight: 700;
    padding: 4px 10px;
    border-radius: 4px;
    background: #e7f5e1;
    color: #3d6b1e;
}
.lsv2-voucher-expired .lsv2-voucher-status,
.lsv2-voucher-used .lsv2-voucher-status {
    background: #f0f0f0;
    color: #666;
}
.lsv2-voucher-amount {
    font-family: 'Fraunces', serif;
    font-size: 22px;
    font-weight: 700;
    color: #3d3530;
}
.lsv2-voucher-code-block {
    background: #fdf8ee;
    border-radius: 6px;
    padding: 12px 14px;
    margin: 0 0 14px;
    text-align: center;
}
.lsv2-voucher-code-label {
    display: block;
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: #888;
    margin-bottom: 4px;
}
.lsv2-voucher-code {
    display: block;
    font-family: Courier, monospace;
    font-size: 18px;
    font-weight: 700;
    letter-spacing: 2px;
    color: #3d3530;
    background: transparent;
    padding: 0;
    user-select: all;
}
.lsv2-voucher-meta {
    margin: 0;
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 4px 12px;
    font-size: 13px;
}
.lsv2-voucher-meta dt {
    color: #888;
    font-weight: 400;
}
.lsv2-voucher-meta dd {
    margin: 0;
    color: #3d3530;
    font-weight: 600;
}
.lsv2-vouchers-footer {
    margin-top: 24px;
    padding: 14px 18px;
    background: #fdf8ee;
    border-left: 3px solid #c9a227;
    font-size: 13px;
    color: #5a5048;
    border-radius: 0 4px 4px 0;
}

/* ============================================================
 * FEATURE 003 — Annulation participant + Quorum non atteint
 * ============================================================ */

/* ---- Bouton "Annuler ma réservation" (côté participant) ----
 * Couleur volontairement plus douce que le bouton owner doré, pour
 * différencier les deux flux quand un participant a aussi un compte owner. */
.lsv2-participant-cancel-btn {
    background: #6b7280 !important;
    color: #fff !important;
}
.lsv2-participant-cancel-btn:hover {
    background: #4b5563 !important;
    color: #fff !important;
}

/* ---- Modale annulation participant ----
 * Hérite de .lsv2-modal (feature 002). Petits ajouts pour les radios. */
#lsv2-participant-cancel-modal label[style*="display:block"] input[type="radio"] {
    margin-right: 8px;
    vertical-align: middle;
}
#lsv2-pcancel-fm-block {
    margin: 12px 0;
}
#lsv2-pcancel-fm-block textarea {
    width: 100%;
    box-sizing: border-box;
    resize: vertical;
    font-family: inherit;
    padding: 8px 10px;
    border: 1px solid #ede8df;
    border-radius: 6px;
}

/* ---- Bouton "Quorum non atteint" (côté owner, feature 003) ----
 * Couleur ambre/orange pour distinguer du bouton "Annuler la séance" doré (feature 002)
 * et du bouton "Annuler ma réservation" gris (participant 003). */
.lsv2-quorum-btn {
    background: #d97706 !important;
    color: #fff !important;
}
.lsv2-quorum-btn:hover {
    background: #b45309 !important;
    color: #fff !important;
}

/* ---- Queue admin — extension force majeure (feature 003) ---- */
.lsv2-status-badge.lsv2-status-pending_force_majeure {
    background: #ffeed6; color: #8a4a00; border: 1px solid #f0a474;
}
.lsv2-window-badge {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 3px;
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}
.lsv2-window-badge.lsv2-window-over_15_days {
    background: #d6f4dd; color: #0a6b2c; border: 1px solid #74c485;
}
.lsv2-window-badge.lsv2-window-between_7_and_15_days {
    background: #fff4d6; color: #8a5a00; border: 1px solid #f0c674;
}
.lsv2-window-badge.lsv2-window-under_7_days {
    background: #fde0e0; color: #8a1a1a; border: 1px solid #e09595;
}

/* =========================================================
 * Feature 004 — Gate publication atelier
 * ========================================================= */

/* Bloc d'erreur dans le template listing-submitted (US1) */
.lsv2-pending-reason-block {
    margin: 24px auto 0;
    max-width: 640px;
    padding: 20px 24px;
    border-radius: 8px;
    background: #fff5e6;
    border: 1px solid #f5a623;
    color: #5a3b00;
    text-align: left;
}
.lsv2-pending-reason-block__title {
    margin: 0 0 8px;
    font-size: 16px;
    font-weight: 700;
    color: #5a3b00;
}
.lsv2-pending-reason-block__text {
    margin: 0 0 16px;
    font-size: 14px;
    line-height: 1.55;
}
.lsv2-pending-reason-block__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
}

/* CTAs partagés bandeau dashboard (US2) + bloc form (US1) */
.lsv2-dashboard-banner__cta {
    display: inline-block;
    padding: 9px 18px;
    border-radius: 4px;
    font-weight: 600;
    text-decoration: none;
    font-size: 14px;
    line-height: 1.2;
    transition: background-color 0.15s ease, color 0.15s ease;
}
.lsv2-dashboard-banner__cta--subscription {
    background: #5a3b00;
    color: #fff;
}
.lsv2-dashboard-banner__cta--subscription:hover {
    background: #3d2700;
    color: #fff;
    text-decoration: none;
}
.lsv2-dashboard-banner__cta--stripe {
    background: #635BFF;
    color: #fff;
}
.lsv2-dashboard-banner__cta--stripe:hover {
    background: #4f46d4;
    color: #fff;
    text-decoration: none;
}

/* Badge admin column "Cause pending" (US1) */
.lsv2-pending-cause-badge {
    display: inline-block;
    padding: 3px 9px;
    border-radius: 3px;
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.4px;
    line-height: 1.4;
    white-space: nowrap;
}
.lsv2-pending-cause-badge--no-subscription {
    background: #fde0e0;
    color: #8a1a1a;
    border: 1px solid #e09595;
}
.lsv2-pending-cause-badge--no-stripe {
    background: #e6e6ff;
    color: #2f2c8a;
    border: 1px solid #9c97e6;
}
.lsv2-pending-cause-badge--no-both {
    background: #fff4d6;
    color: #8a5a00;
    border: 1px solid #f0c674;
}

/* Bandeau dashboard owner (US2) */
.lsv2-dashboard-banner {
    display: flex;
    gap: 16px;
    padding: 16px 20px;
    margin: 0 0 24px;
    border-radius: 8px;
    background: #fff5e6;
    border: 1px solid #f5a623;
    color: #5a3b00;
    align-items: flex-start;
}
.lsv2-dashboard-banner__icon {
    font-size: 24px;
    line-height: 1.2;
    flex-shrink: 0;
}
.lsv2-dashboard-banner__body {
    flex: 1;
    min-width: 0;
}
.lsv2-dashboard-banner__title {
    margin: 0 0 6px;
    font-size: 16px;
    font-weight: 700;
    color: #5a3b00;
    line-height: 1.3;
}
.lsv2-dashboard-banner__text {
    margin: 0 0 12px;
    font-size: 14px;
    line-height: 1.55;
}
.lsv2-dashboard-banner__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
}
@media (max-width: 600px) {
    .lsv2-dashboard-banner {
        flex-direction: column;
        gap: 8px;
    }
}

/* Indicateurs Stripe statut dans page admin "Transferts en attente" (US3) */
.lsv2-stripe-status {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 3px;
    font-size: 12px;
    font-weight: 600;
    line-height: 1.4;
    white-space: nowrap;
}
.lsv2-stripe-status--connected {
    background: #d6f4dd;
    color: #0a6b2c;
    border: 1px solid #74c485;
}
.lsv2-stripe-status--missing {
    background: #fde0e0;
    color: #8a1a1a;
    border: 1px solid #e09595;
}

/* =========================================================
 * Feature 006 — Refonte UX checkout WooCommerce
 * ========================================================= */

/* ── Layout général ─────────────────────────────────────── */
.lsv2-checkout-page {
    max-width: 1200px;
    margin: 30px auto;
    padding: 0 20px;
    font-family: 'Nunito', sans-serif;
    color: #3d3530;
}
.lsv2-checkout-header {
    margin-bottom: 32px;
    padding-bottom: 20px;
    border-bottom: 1px solid #ece8e0;
}
.lsv2-checkout-title {
    font-family: 'Fraunces', serif;
    font-size: 32px;
    color: #3d3530;
    margin: 0 0 8px;
    line-height: 1.2;
}
.lsv2-checkout-subtitle {
    font-size: 15px;
    color: #888;
    margin: 0;
}
.lsv2-checkout-subtitle strong {
    color: #3d3530;
    font-weight: 600;
}

.lsv2-checkout-grid {
    display: grid;
    grid-template-columns: 1fr 380px;
    gap: 40px;
    align-items: start;
}
.lsv2-checkout-main {
    min-width: 0;
}
.lsv2-checkout-summary {
    position: sticky;
    top: 100px;
    background: #faf7f2;
    border: 1px solid #ece8e0;
    border-radius: 8px;
    padding: 24px;
    align-self: start;
}
.lsv2-checkout-summary-title {
    font-family: 'Fraunces', serif;
    font-size: 20px;
    color: #3d3530;
    margin: 0 0 18px;
    padding-bottom: 12px;
    border-bottom: 1px solid #ece8e0;
}

/* ── Récap atelier ─────────────────────────────────────── */
.lsv2-summary-atelier {
    margin-bottom: 18px;
}
.lsv2-summary-atelier h4 {
    font-family: 'Fraunces', serif;
    font-size: 18px;
    color: #3d3530;
    margin: 0 0 10px;
    line-height: 1.3;
}
.lsv2-summary-meta {
    list-style: none;
    margin: 0;
    padding: 0;
    font-size: 13px;
    color: #555;
}
.lsv2-summary-meta li {
    padding: 4px 0;
    display: flex;
    align-items: center;
    gap: 8px;
}
.lsv2-summary-meta i {
    color: #c9a227;
    font-size: 14px;
    width: 16px;
    text-align: center;
}
.lsv2-summary-services {
    list-style: none;
    margin: 12px 0 0;
    padding: 12px 0 0;
    border-top: 1px dashed #ece8e0;
    font-size: 13px;
}
.lsv2-summary-services li {
    display: flex;
    justify-content: space-between;
    padding: 4px 0;
    color: #555;
}
.lsv2-summary-service-price {
    font-weight: 600;
    color: #3d3530;
}

/* ── Table totals ──────────────────────────────────────── */
.lsv2-checkout-summary .shop_table,
.lsv2-summary-table {
    width: 100%;
    margin: 14px 0;
    border-collapse: collapse;
    background: transparent !important;
    box-shadow: none;
}
.lsv2-checkout-summary .shop_table thead {
    display: none;
}
.lsv2-checkout-summary .shop_table tr {
    border: none;
}
.lsv2-checkout-summary .shop_table th,
.lsv2-checkout-summary .shop_table td {
    padding: 8px 0;
    border: none;
    border-bottom: 1px solid #ece8e0;
    background: transparent !important;
    font-size: 13px;
    color: #555;
    text-align: left;
}
.lsv2-checkout-summary .shop_table .order-total th,
.lsv2-checkout-summary .shop_table .order-total td {
    font-family: 'Fraunces', serif;
    font-size: 18px;
    color: #3d3530;
    font-weight: 600;
    border-top: 2px solid #ece8e0;
    border-bottom: none;
    padding-top: 12px;
}
.lsv2-checkout-summary .shop_table .product-total,
.lsv2-checkout-summary .shop_table .order-total td {
    text-align: right;
}

/* ── Bloc Code cadeau ───────────────────────────────────── */
.lsv2-gift-code-block {
    margin-top: 18px;
    padding: 14px 0 0;
    border-top: 1px solid #ece8e0;
}
.lsv2-gift-code-label {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    color: #3d3530;
    font-weight: 600;
    margin-bottom: 8px;
}
.lsv2-gift-code-label i {
    color: #c9a227;
}
.lsv2-gift-code-row {
    display: flex;
    gap: 6px;
}
.lsv2-checkout-form input#lsv2-gift-code,
input#lsv2-gift-code {
    flex: 1;
    height: 40px;
    line-height: 40px;
    padding: 0 12px;
    border: 1px solid #d8d3ca;
    border-radius: 4px;
    background: #fff;
    font-family: 'Nunito', sans-serif;
    font-size: 13px;
    color: #3d3530;
    box-shadow: none;
    margin: 0;
    box-sizing: border-box;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}
input#lsv2-gift-code:focus {
    border-color: #c9a227;
    outline: none;
    box-shadow: 0 0 0 2px rgba(201, 162, 39, 0.18);
}
.lsv2-gift-code-apply {
    height: 40px;
    padding: 0 16px;
    border: none;
    border-radius: 4px;
    background: #3d3530;
    color: #fff;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.15s ease;
    flex-shrink: 0;
}
.lsv2-gift-code-apply:hover {
    background: #5a4f47;
}
.lsv2-gift-code-apply:disabled {
    opacity: 0.6;
    cursor: wait;
}
.lsv2-gift-code-status {
    margin: 8px 0 0;
    font-size: 12px;
    min-height: 14px;
    line-height: 1.4;
}
.lsv2-gift-code-status:empty { margin: 0; min-height: 0; }
.lsv2-gift-code-status.is-success { color: #4a6f47; }
.lsv2-gift-code-status.is-error   { color: #c0392b; }
.lsv2-gift-code-status.is-info    { color: #888; }

/* ── Bloc paiement + bouton submit ────────────────────── */
.lsv2-payment-block {
    margin-top: 18px;
    padding-top: 14px;
    border-top: 1px solid #ece8e0;
}
.lsv2-payment-block .wc_payment_methods {
    list-style: none;
    margin: 0;
    padding: 0;
}
.lsv2-payment-block .wc_payment_methods li {
    padding: 12px 0;
    border-bottom: 1px solid #f0ece5;
}
.lsv2-payment-block .wc_payment_methods li:last-child {
    border-bottom: none;
}
.lsv2-payment-not-needed {
    background: #f1f7f0;
    border: 1px solid #c8e0c4;
    border-radius: 4px;
    padding: 12px 14px;
    color: #4a6f47;
    font-size: 13px;
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 0 0 12px;
}
.lsv2-payment-not-needed i {
    color: #6ba967;
    font-size: 16px;
}

#place_order,
.lsv2-place-order {
    width: 100%;
    background: #c9a227 !important;
    color: #fff !important;
    border: none !important;
    border-radius: 4px !important;
    padding: 14px 24px !important;
    font-family: 'Nunito', sans-serif !important;
    font-size: 15px !important;
    font-weight: 600 !important;
    cursor: pointer !important;
    height: auto !important;
    line-height: 1.4 !important;
    transition: background 0.15s ease;
    margin: 14px 0 0 !important;
    box-shadow: none !important;
    text-shadow: none !important;
    text-transform: none;
}
#place_order:hover,
.lsv2-place-order:hover {
    background: #b08c1e !important;
}
#place_order:disabled,
.lsv2-place-order:disabled {
    opacity: 0.7;
    cursor: wait;
}
#place_order.is-loading {
    position: relative;
    padding-left: 42px !important;
}
#place_order.is-loading::before {
    content: '';
    position: absolute;
    left: 16px;
    top: 50%;
    width: 16px;
    height: 16px;
    margin-top: -8px;
    border: 2px solid #fff;
    border-right-color: transparent;
    border-radius: 50%;
    animation: lsv2-spin 0.7s linear infinite;
}
@keyframes lsv2-spin {
    to { transform: rotate(360deg); }
}

/* ── Erreurs inline ─────────────────────────────────── */
.lsv2-field-error,
.lsv2-payment-error {
    display: block;
    color: #c0392b;
    font-size: 13px;
    line-height: 1.4;
    margin: 6px 0 0;
    padding: 8px 12px;
    background: #fff5f4;
    border-left: 3px solid #c0392b;
    border-radius: 4px;
}
.lsv2-payment-error:empty {
    display: none;
}

/* ── Masquage des notices WC standards (refonte UX) ──── */
.woocommerce-NoticeGroup-checkout,
form.checkout > .woocommerce-error,
form.checkout > .woocommerce-message,
form.checkout > .woocommerce-info {
    display: none !important;
}

/* ── Inputs WC restylés (form de gauche) ────────────── */
.lsv2-checkout-form .form-row {
    margin-bottom: 16px;
}
.lsv2-checkout-form label {
    display: block;
    font-family: 'Nunito', sans-serif;
    font-size: 13px;
    color: #555;
    font-weight: 600;
    margin-bottom: 6px;
}
.lsv2-checkout-form .required {
    color: #c0392b;
    text-decoration: none;
}
.lsv2-checkout-form input[type="text"],
.lsv2-checkout-form input[type="email"],
.lsv2-checkout-form input[type="tel"],
.lsv2-checkout-form input[type="password"],
.lsv2-checkout-form input[type="number"],
.lsv2-checkout-form select,
.lsv2-checkout-form textarea {
    width: 100%;
    height: 44px;
    line-height: 44px;
    padding: 0 14px;
    border: 1px solid #d8d3ca;
    border-radius: 4px;
    background: #fff;
    font-family: 'Nunito', sans-serif;
    font-size: 14px;
    color: #3d3530;
    box-shadow: none;
    margin: 0;
    box-sizing: border-box;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.lsv2-checkout-form textarea {
    height: auto;
    min-height: 90px;
    line-height: 1.5;
    padding: 12px 14px;
    resize: vertical;
}
.lsv2-checkout-form input:focus,
.lsv2-checkout-form select:focus,
.lsv2-checkout-form textarea:focus {
    border-color: #c9a227;
    outline: none;
    box-shadow: 0 0 0 2px rgba(201, 162, 39, 0.18);
}
.lsv2-checkout-form .select2-container .select2-selection--single {
    height: 44px !important;
    border: 1px solid #d8d3ca !important;
    border-radius: 4px !important;
    background: #fff !important;
}
.lsv2-checkout-form .select2-container--default .select2-selection--single .select2-selection__rendered {
    line-height: 44px !important;
    padding-left: 14px !important;
    color: #3d3530 !important;
    font-family: 'Nunito', sans-serif !important;
    font-size: 14px !important;
}
.lsv2-checkout-form .select2-container--default .select2-selection--single .select2-selection__arrow {
    height: 44px !important;
}

.lsv2-checkout-form h3 {
    font-family: 'Fraunces', serif;
    font-size: 20px;
    color: #3d3530;
    margin: 0 0 16px;
}

/* ── Sticky bar mobile ──────────────────────────────── */
.lsv2-checkout-mobile-cta {
    display: none;
}
@media (max-width: 768px) {
    .lsv2-checkout-grid {
        grid-template-columns: 1fr;
        gap: 24px;
    }
    .lsv2-checkout-summary {
        position: static;
        order: -1;
    }
    .lsv2-checkout-mobile-cta {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 12px;
        position: sticky;
        bottom: 0;
        left: 0;
        right: 0;
        background: #fff;
        border-top: 1px solid #ece8e0;
        padding: 12px 16px;
        z-index: 100;
        margin: 24px -20px 0;
        box-shadow: 0 -4px 12px rgba(0, 0, 0, 0.06);
    }
    .lsv2-checkout-mobile-total {
        font-family: 'Fraunces', serif;
        font-size: 18px;
        color: #3d3530;
        font-weight: 600;
    }
    .lsv2-checkout-mobile-submit {
        background: #c9a227;
        color: #fff;
        border: none;
        border-radius: 4px;
        padding: 12px 24px;
        font-family: 'Nunito', sans-serif;
        font-size: 14px;
        font-weight: 600;
        cursor: pointer;
        flex-shrink: 0;
    }
    .lsv2-checkout-mobile-submit:hover {
        background: #b08c1e;
    }
    .lsv2-checkout-page {
        padding-bottom: 80px;
    }
}

/* =========================================================
 * Bon cadeau YITH — booking-confirmation
 * Réplique le style du champ coupon Listeo pour cohérence visuelle.
 * Le sélecteur ciblé `listeo-booking-widget-apply_new_coupon` ne peut pas
 * être réutilisé directement (collision avec le binding JS Listeo qui
 * déclencherait l'AJAX `listeo_validate_coupon` en plus du notre).
 * ========================================================= */
.lsv2-gift-card-form {
    display: flex !important;
    margin-top: 5px;
}
.lsv2-gift-card-form input,
.lsv2-gift-card-form input:focus {
    border: none;
    border-radius: 5px 0 0 5px;
    box-shadow: 0 1px 6px 0 rgba(0, 0, 0, 0.1);
    font-size: 15px;
    font-weight: 600;
    height: 50px;
    padding: 10px 16px;
    line-height: 30px;
    margin: 0 0 15px 0;
    background-color: #fff;
    text-align: left;
    color: #888;
    flex: 1;
}
.lsv2-gift-card-block .button.lsv2-gift-card-apply {
    border-radius: 0 5px 5px 0;
    padding: 0 13px;
    height: 50px;
    text-align: center;
    min-width: 70px;
    line-height: 50px;
}
.lsv2-gift-card-applied {
    margin-top: 8px;
}
.lsv2-gift-card-applied span {
    background: #eaffe2;
    padding: 4px 10px 5px;
    display: inline-block;
    margin: 0 24px 12px 0;
    border: 2px dashed #6aa654;
    border-radius: 4px;
    font-weight: 700;
    text-transform: uppercase;
    font-size: 13px;
    letter-spacing: 2px;
    color: #6aa654;
    position: relative;
    line-height: 20px;
}
.lsv2-gift-card-applied span .fa.fa-times {
    position: absolute;
    right: -21px;
    top: 7px;
    color: #de2626;
    cursor: pointer;
    -webkit-text-stroke: 1px #f9f9f9;
    font-size: 15px;
}
/* Lignes injectées par notre flow gift card dans le récap :
   - `.lsv2-promo-line`     : "Code promo − X €" (si shop_coupon Listeo actif)
   - `.lsv2-gift-card-line` : "Bon cadeau − Y €"
   - `.lsv2-gift-card-final`: "Total à payer Z €" (total unifié)
   On laisse l'héritage du style `<li>` Listeo, on accentue juste la teinte
   verte du montant déduit et on appuie le total final.
*/
/* Quand un bon cadeau est appliqué, le "Coût final" Listeo natif
   (`.total-discounted_costs`) est masqué — notre `.lsv2-gift-card-final`
   le remplace en englobant aussi le discount gift card. Via CSS (et pas
   via `$.hide()` JS) pour résister aux `.fadeIn()` que Listeo appelle après
   ses recalculs AJAX. */
body.lsv2-gift-card-active .total-discounted_costs {
    display: none !important;
}
.lsv2-promo-line span,
.lsv2-gift-card-line span {
    color: #6aa654;
}
.lsv2-gift-card-final {
    border-top: 1px solid rgba(0,0,0,0.06);
    padding-top: 10px;
    margin-top: 4px;
    font-weight: 700;
}
.lsv2-gift-card-final span {
    font-weight: 700;
}

/* =========================================================
 * AUTHOR PAGE — RESPONSIVE OVERRIDE
 * Elementor template "Bellonie - Profil Éclaireur"
 * Réduit padding horizontal 120px et empile les colonnes hero
 * ========================================================= */

/* --- Tablette : réduire les paddings 120px → 40px --- */
@media (max-width: 1024px) {
    .elementor-element.elementor-element-vp_hero_01_mw,
    .elementor-element.elementor-element-vp_gallery_title_mw,
    .elementor-element.elementor-element-vp_gallery_grid_mw,
    .elementor-element.elementor-element-vp_intelligences_01_mw,
    .elementor-element.elementor-element-vp_intel_row1_mw,
    .elementor-element.elementor-element-vp_listings_01_mw,
    .elementor-element.elementor-element-vp_testimonial_mw,
    .elementor-element.elementor-element-vp_contact_cta_mw {
        padding-left: 40px !important;
        padding-right: 40px !important;
    }
}

/* --- Mobile : padding minimal + hero empilé --- */
@media (max-width: 767px) {
    .elementor-element.elementor-element-vp_hero_01_mw,
    .elementor-element.elementor-element-vp_gallery_title_mw,
    .elementor-element.elementor-element-vp_gallery_grid_mw,
    .elementor-element.elementor-element-vp_intelligences_01_mw,
    .elementor-element.elementor-element-vp_intel_row1_mw,
    .elementor-element.elementor-element-vp_listings_01_mw,
    .elementor-element.elementor-element-vp_testimonial_mw,
    .elementor-element.elementor-element-vp_contact_cta_mw {
        padding-left: 16px !important;
        padding-right: 16px !important;
    }

    /* Empiler les 2 colonnes du hero (photo + info) */
    .elementor-element.elementor-element-vp_hero_01_mw {
        flex-direction: column !important;
        gap: 24px !important;
    }

    .elementor-element.elementor-element-vp_hero_col1,
    .elementor-element.elementor-element-vp_hero_col2 {
        width: 100% !important;
        max-width: 100% !important;
        align-items: center !important;
    }

    /* Texte centré et largeur pleine dans la colonne info */
    .elementor-element.elementor-element-vp_hero_col2 {
        align-items: flex-start !important;
    }

    /* Réduire la taille du padding vertical du hero */
    .elementor-element.elementor-element-vp_hero_01 {
        padding-top: 40px !important;
        padding-bottom: 40px !important;
    }

    /* Section padding-top/bottom plus compact partout */
    .elementor-element.elementor-element-vp_gallery_title,
    .elementor-element.elementor-element-vp_intelligences_01,
    .elementor-element.elementor-element-vp_listings_01,
    .elementor-element.elementor-element-vp_testimonial,
    .elementor-element.elementor-element-vp_contact_cta {
        padding-top: 40px !important;
        padding-bottom: 40px !important;
    }

    /* Avatar : tailler la photo pour ne pas déborder */
    .bellonie-vendor-photo img,
    .bellonie-vendor-photo {
        max-width: 220px !important;
        height: auto !important;
        margin: 0 auto !important;
    }

    /* Sécurité : forcer le word-wrap au cas où une largeur résiduelle persisterait */
    .elementor-element.elementor-element-vp_hero_col2 h1,
    .elementor-element.elementor-element-vp_hero_col2 h2,
    .elementor-element.elementor-element-vp_hero_col2 p {
        word-break: normal;
        overflow-wrap: break-word;
        hyphens: auto;
    }

    /* Intelligences multiples : 1 carte par ligne sur mobile */
    .bap-intel-grid {
        grid-template-columns: 1fr !important;
        gap: 16px !important;
    }
}

/* --- Très petit écran (≤ 400px) : compacter encore --- */
@media (max-width: 400px) {
    .elementor-element.elementor-element-vp_hero_01_mw,
    .elementor-element.elementor-element-vp_gallery_title_mw,
    .elementor-element.elementor-element-vp_gallery_grid_mw,
    .elementor-element.elementor-element-vp_intelligences_01_mw,
    .elementor-element.elementor-element-vp_intel_row1_mw,
    .elementor-element.elementor-element-vp_listings_01_mw,
    .elementor-element.elementor-element-vp_testimonial_mw,
    .elementor-element.elementor-element-vp_contact_cta_mw {
        padding-left: 12px !important;
        padding-right: 12px !important;
    }

    .bellonie-vendor-photo img,
    .bellonie-vendor-photo {
        max-width: 180px !important;
    }
}

/* =========================================================
 * Feature 008 — Recovery card (US1)
 * ========================================================= */
.bsl-recovery-card {
    background: #fff8e6;
    border: 1px solid #ffd76b;
    border-radius: 6px;
    padding: 24px;
    margin-bottom: 16px;
    text-align: center;
}
.bsl-recovery-card-icon {
    font-size: 32px;
    line-height: 1;
    margin-bottom: 8px;
}
.bsl-recovery-card-title {
    color: #7a5a00;
    margin: 0 0 12px;
    font-size: 18px;
}
.bsl-recovery-card-session,
.bsl-recovery-card-amount {
    margin: 4px 0;
    color: #444;
}
.bsl-recovery-card-countdown {
    font-weight: 600;
    color: #c0392b;
    margin: 8px 0;
}
.bsl-recovery-card-cta {
    display: inline-block;
    margin-top: 12px;
}
.bsl-recovery-card-cta.is-disabled {
    opacity: 0.5;
    pointer-events: none;
}
.bsl-recovery-card-hint {
    font-size: 13px;
    color: #666;
    margin-top: 12px;
}

/* =========================================================
 * Feature 008 — Bouton abandon + modale (US2)
 * ========================================================= */
.lsv2-abandon-btn {
    display: inline-block;
    background: transparent;
    border: 1px solid #c0392b;
    color: #c0392b;
    padding: 10px 16px;
    margin-top: 12px;
    cursor: pointer;
    font-size: 14px;
    border-radius: 4px;
    transition: background 0.15s ease;
}
.lsv2-abandon-btn:hover {
    background: #fef0ed;
}
.lsv2-modal[hidden] {
    display: none;
}
.lsv2-modal {
    position: fixed;
    inset: 0;
    z-index: 9999;
    display: flex;
    align-items: center;
    justify-content: center;
}
.lsv2-modal-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.5);
}
.lsv2-modal-dialog {
    position: relative;
    background: #fff;
    border-radius: 6px;
    padding: 24px;
    max-width: 480px;
    width: 90%;
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);
}
.lsv2-modal-close {
    position: absolute;
    top: 8px;
    right: 12px;
    background: none;
    border: 0;
    font-size: 24px;
    cursor: pointer;
    line-height: 1;
    color: #888;
}
.lsv2-modal-actions {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    margin-top: 16px;
    flex-wrap: wrap;
}
.lsv2-modal-error {
    color: #c0392b;
    margin-top: 12px;
    font-size: 14px;
}
.lsv2-modal-confirm {
    background: #c0392b;
    color: #fff;
    border: 0;
    padding: 10px 16px;
    cursor: pointer;
    border-radius: 4px;
}
.lsv2-modal-confirm:hover {
    background: #a73323;
}
.lsv2-modal-cancel {
    padding: 10px 16px;
    cursor: pointer;
    border-radius: 4px;
}
.lsv2-abandon-thanks-toast {
    position: fixed;
    bottom: 24px;
    right: 24px;
    background: #2c7a3a;
    color: #fff;
    padding: 14px 18px;
    border-radius: 4px;
    z-index: 9999;
    max-width: 360px;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
.lsv2-abandon-thanks-toast p {
    margin: 0;
}

/* =========================================================
 * Feature 008 — Sidebar dashboard : retrait item "En attente" (US3)
 *
 * Filet CSS qui complète le buffer PHP (booking-recovery.php). Si le buffer
 * ne fire pas (contextes Elementor, layouts custom, etc.), le CSS retire
 * proprement le <li> via :has() (supporté tous navigateurs modernes 2023+).
 * Justification métier : instant_booking forcé sur Bellonie, aucune
 * booking `waiting` ne peut exister → cet item mène toujours à 0 résultat.
 * ========================================================= */
.dashboard-nav li:has(> a[href*="status=waiting"]),
ul li:has(> a[href*="status=waiting"]) {
    display: none !important;
}
/* Fallback navigateurs sans :has() — cache au moins le lien (l'item reste
 * comme un <li> vide mais le compteur trompeur disparaît) */
.dashboard-nav a[href*="status=waiting"],
ul a[href*="status=waiting"] {
    display: none !important;
}

/* =========================================================
 * Feature 012 — Éditeur atelier wp-admin
 * Meta-box « Atelier » + meta-box « Artisan » + galerie + séances.
 * Palette Bellonie : #c9a227 (or) / #f7f4ef (crème) / #3d3530 (anthracite).
 * ========================================================= */

.lsv2-admin-atelier-editor { font-size: 13px; line-height: 1.5; }

.lsv2-admin-atelier-section {
    background: #fff;
    border: 1px solid #e8e4dc;
    border-radius: 6px;
    padding: 16px 18px;
    margin: 0 0 16px;
}
.lsv2-admin-atelier-section__title {
    font-family: 'Fraunces', Georgia, serif;
    font-size: 16px;
    font-weight: 600;
    color: #3d3530;
    margin: 0 0 12px;
    padding-bottom: 8px;
    border-bottom: 1px solid #f0ebe2;
    display: flex;
    align-items: center;
    justify-content: space-between;
}
.lsv2-admin-atelier-section p.description { color: #888; margin-top: 4px; }

.lsv2-admin-atelier-grid {
    display: grid;
    gap: 12px;
    margin-bottom: 8px;
}
.lsv2-admin-atelier-grid--3 { grid-template-columns: repeat(3, 1fr); }
.lsv2-admin-atelier-grid--4 { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 1100px) {
    .lsv2-admin-atelier-grid--3 { grid-template-columns: 1fr; }
    .lsv2-admin-atelier-grid--4 { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 700px) {
    .lsv2-admin-atelier-grid--4 { grid-template-columns: 1fr; }
}

.lsv2-admin-atelier-options,
.lsv2-admin-atelier-intel {
    display: flex;
    flex-wrap: wrap;
    gap: 16px 24px;
}
.lsv2-admin-atelier-options label,
.lsv2-admin-atelier-intel label {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    cursor: pointer;
    font-weight: 500;
}

/* — Sélecteur d'artisan (sidebar) — */
.lsv2-admin-atelier-owner-select { width: 100%; }
.lsv2-admin-atelier-owner-current { margin-top: 8px; font-size: 12px; }
.lsv2-admin-atelier-owner-badge {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 12px;
    font-size: 11px;
    font-weight: 600;
}
.lsv2-admin-atelier-owner-badge--ok   { background: #e8f5e9; color: #2e7d32; }
.lsv2-admin-atelier-owner-badge--warn { background: #fff3e0; color: #ef6c00; }
.lsv2-admin-atelier-owner-badge--ko   { background: #fdecea; color: #c62828; }

.lsv2-admin-atelier-owner-warning { margin-top: 12px; }

/* — Compteur galerie — */
.lsv2-admin-atelier-counter {
    background: #c9a227;
    color: #fff;
    padding: 2px 10px;
    border-radius: 20px;
    font-family: 'Nunito', sans-serif;
    font-size: 12px;
    font-weight: 700;
}

/* — Grille galerie — */
.lsv2-admin-atelier-gallery {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 8px;
    margin-top: 8px;
}
@media (max-width: 1100px) {
    .lsv2-admin-atelier-gallery { grid-template-columns: repeat(4, 1fr); }
}
.lsv2-admin-atelier-gallery__item {
    position: relative;
    aspect-ratio: 1;
    border-radius: 4px;
    overflow: hidden;
    background: #f5f5f5;
}
.lsv2-admin-atelier-gallery__item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.lsv2-admin-atelier-gallery__remove {
    position: absolute;
    top: 4px;
    right: 4px;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    border: none;
    background: rgba(0,0,0,0.6);
    color: #fff;
    font-size: 14px;
    line-height: 1;
    cursor: pointer;
    opacity: 0;
    transition: opacity 0.15s;
}
.lsv2-admin-atelier-gallery__item:hover .lsv2-admin-atelier-gallery__remove { opacity: 1; }

/* — Séances (calendrier + liste, look frontend artisan) — */
.lsv2-admin-atelier-sessions__historic {
    font-size: 12px;
    color: #a39581;
    margin: 4px 0 14px;
}
.lsv2-admin-atelier-sessions {
    display: grid;
    grid-template-columns: 2fr 1fr;
    gap: 20px;
    margin-top: 8px;
    align-items: start;
}
@media (max-width: 1100px) {
    .lsv2-admin-atelier-sessions { grid-template-columns: 1fr; }
}

/* Calendrier FullCalendar — couleurs sable Bellonie */
.lsv2-admin-atelier-sessions .bsess-calendar-col .fc {
    font-family: 'Nunito', sans-serif;
    font-size: 13px;
}
.lsv2-admin-atelier-sessions .bsess-calendar-col .fc-day-today {
    background: #fdf8ee !important;
}
.lsv2-admin-atelier-sessions .bsess-calendar-col .fc-daygrid-day:not(.fc-day-past) {
    cursor: pointer;
}
.lsv2-admin-atelier-sessions .bsess-calendar-col .fc-daygrid-day:not(.fc-day-past):hover .fc-daygrid-day-frame {
    background: #fdf5e0;
}
.lsv2-admin-atelier-sessions .bsess-calendar-col .fc-event {
    background: #c4a962 !important;
    border-color: #c4a962 !important;
    color: #fff !important;
    border-radius: 4px;
    font-size: 11px;
    font-weight: 600;
    cursor: pointer;
    padding: 1px 5px;
}
.lsv2-admin-atelier-sessions .bsess-calendar-col .fc-toolbar-title {
    font-family: 'Fraunces', Georgia, serif;
    font-size: 18px;
    color: #3d3530;
}
.lsv2-admin-atelier-sessions .bsess-calendar-col .fc-button {
    background: #3d3530;
    border-color: #3d3530;
    color: #fff;
    text-transform: none;
}
.lsv2-admin-atelier-sessions .bsess-calendar-col .fc-button:hover {
    background: #5a4d44;
    border-color: #5a4d44;
}

/* Liste séances — card avec ombre */
.lsv2-admin-atelier-sessions .bsess-list-col {
    background: #fff;
    border: 1px solid #ede8df;
    border-radius: 8px;
    padding: 16px;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.03);
}
.lsv2-admin-atelier-sessions .bsess-list-title {
    font-family: 'Fraunces', Georgia, serif;
    font-size: 16px;
    color: #3d3530;
    margin: 0 0 4px;
    display: flex;
    align-items: center;
    gap: 8px;
}
.lsv2-admin-atelier-sessions .bsess-list-title span {
    background: #c4a962;
    color: #fff;
    border-radius: 20px;
    font-family: 'Nunito', sans-serif;
    font-size: 11px;
    padding: 1px 8px;
    font-weight: 700;
}
.lsv2-admin-atelier-sessions .bsess-list-subtitle {
    font-size: 11px;
    color: #a39581;
    margin: 0 0 14px;
}
.lsv2-admin-atelier-sessions .bsess-rows {
    display: flex;
    flex-direction: column;
    max-height: 320px;
    overflow-y: auto;
}
.lsv2-admin-atelier-sessions .bsess-row {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 8px 0;
    border-bottom: 1px solid #f5f0e8;
}
.lsv2-admin-atelier-sessions .bsess-row:last-child { border-bottom: none; }
.lsv2-admin-atelier-sessions .bsess-row-date {
    flex: 1;
    font-weight: 600;
    color: #3d3530;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.lsv2-admin-atelier-sessions .bsess-row-time select {
    border: 1px solid #ddd;
    border-radius: 4px;
    padding: 3px 8px;
    background: #fff;
}
.lsv2-admin-atelier-sessions .bsess-row-remove {
    background: none;
    border: none;
    color: #ccc;
    font-size: 16px;
    cursor: pointer;
}
.lsv2-admin-atelier-sessions .bsess-row-remove:hover { color: #c62828; }
.lsv2-admin-atelier-sessions .bsess-empty {
    color: #aaa;
    font-style: italic;
    font-size: 12px;
}

/* — Notices feature 012 — */
.lsv2-admin-atelier-eligibility-notice,
.lsv2-admin-atelier-save-errors {
    border-left-width: 4px;
}

/* ── Formulaire atelier : masquer la case « Masquer le tableau des prix… » ──
 * Champ natif Listeo `_hide_pricing_if_bookable` (ajouté dans init_fields APRÈS
 * le filtre listeo_listing_type_fields → impossible à unset proprement en PHP).
 * Sans intérêt pour Bellonie : décoché par défaut = comportement voulu (les
 * services s'affichent s'il y en a, sinon rien). On le masque visuellement. */
.form-field-_hide_pricing_if_bookable-container {
    display: none !important;
}
