/* ============================================================
   WP LocAll — Front CSS
   Variables overridées via admin Apparence
   ============================================================ */
:root {
    --locall-primary:   #2d6a9f;
    --locall-secondary: #27ae60;
    --locall-text:      #333333;
    --locall-bg:        #ffffff;
    --locall-font:      inherit;
    --locall-radius:    6px;
    --locall-border:    #dde4ec;
    --locall-bg-light:  #f8fbff;
}

/* ── Reset local ───────────────────────────────────────────── */
.locall-article-wrap *, .locall-tarifs-wrap *, .locall-paiement-wrap *,
.locall-contact-wrap *, .locall-signature-wrap *, .locall-succes-wrap * {
    box-sizing: border-box;
    font-family: var(--locall-font);
}

/* ── Boutons ────────────────────────────────────────────────── */
.locall-btn {
    display: inline-block;
    padding: 12px 28px;
    border-radius: var(--locall-radius);
    border: none;
    cursor: pointer;
    font-size: 15px;
    font-weight: 600;
    text-decoration: none;
    transition: opacity .2s, transform .1s;
    text-align: center;
}
.locall-btn:hover { opacity: .88; transform: translateY(-1px); }
.locall-btn-primary  { background: var(--locall-primary);   color: #fff !important; }
.locall-btn-secondary{ background: #f0f4f8; color: var(--locall-text); border: 1px solid var(--locall-border); }
.locall-submit-btn   { width: 100%; margin-top: 16px; font-size: 16px; padding: 14px; }

/* ── Notices ────────────────────────────────────────────────── */
.locall-notice        { padding: 12px 16px; border-radius: var(--locall-radius); margin: 12px 0; font-size: 14px; }
.locall-notice-success{ background: #eafaf1; border-left: 4px solid #27ae60; color: #1a6b3a; }
.locall-notice-error  { background: #fdecea; border-left: 4px solid #e74c3c; color: #c0392b; }
.locall-notice-info   { background: #e8f4fd; border-left: 4px solid var(--locall-primary); color: #1e3a5f; }

/* ── Formulaires communs ────────────────────────────────────── */
.locall-form-row-2 {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px 20px;
    margin-bottom: 0;
}
.locall-form-field {
    display: flex;
    flex-direction: column;
    gap: 5px;
    margin-bottom: 14px;
}
.locall-field-full { grid-column: span 2; }
.locall-form-field label { font-size: 13px; font-weight: 600; color: #555; }
.locall-form-field input,
.locall-form-field select,
.locall-form-field textarea {
    border: 1px solid var(--locall-border);
    border-radius: var(--locall-radius);
    padding: 9px 12px;
    font-size: 14px;
    width: 100%;
    background: #fff;
    color: var(--locall-text);
    transition: border-color .2s, box-shadow .2s;
}
.locall-form-field input:focus,
.locall-form-field select:focus,
.locall-form-field textarea:focus {
    border-color: var(--locall-primary);
    outline: none;
    box-shadow: 0 0 0 3px rgba(45,106,159,.12);
}

/* ── Titres de section ──────────────────────────────────────── */
.locall-form-title,
.locall-section-title {
    font-size: 20px;
    color: var(--locall-primary);
    margin: 0 0 20px;
    padding-bottom: 10px;
    border-bottom: 2px solid var(--locall-border);
}

/* ================================================================
   ARTICLE INDIVIDUEL
   ================================================================ */
.locall-article-wrap { max-width: 900px; margin: 0 auto; }

.locall-article-top {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    margin-bottom: 40px;
    align-items: start;
}
.locall-article-img img {
    width: 100%;
    border-radius: var(--locall-radius);
    object-fit: cover;
    aspect-ratio: 4/3;
}
.locall-article-title { font-size: 28px; color: var(--locall-primary); margin: 0 0 12px; }
.locall-article-desc  { color: var(--locall-text); line-height: 1.6; margin-bottom: 20px; }

.locall-article-prix  { display: flex; flex-direction: column; gap: 8px; margin-bottom: 20px; }
.locall-prix-item     { display: flex; justify-content: space-between; align-items: center; padding: 8px 12px; background: var(--locall-bg-light); border-radius: var(--locall-radius); font-size: 14px; border: 1px solid var(--locall-border); }
.locall-prix-item strong { font-size: 16px; color: var(--locall-secondary); }
.locall-prix-main     { border-color: var(--locall-primary); }
.locall-prix-main strong { font-size: 20px; }
.locall-caution-info  { font-size: 12px; color: #888; padding: 4px 0; }

/* ── Calendrier mini ────────────────────────────────────────── */
.locall-cal-section { margin-bottom: 36px; }
.locall-mini-cal    { border: 1px solid var(--locall-border); border-radius: var(--locall-radius); overflow: hidden; }

/* ── Formulaire réservation ─────────────────────────────────── */
.locall-resa-section  { background: var(--locall-bg-light); padding: 28px; border-radius: var(--locall-radius); border: 1px solid var(--locall-border); }

/* ================================================================
   PAGE TARIFS
   ================================================================ */
.locall-tarifs-wrap   { max-width: 1100px; margin: 0 auto; }
.locall-tarifs-grid   { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 24px; margin-bottom: 40px; }

.locall-tarif-card {
    background: var(--locall-bg);
    border: 1px solid var(--locall-border);
    border-radius: var(--locall-radius);
    overflow: hidden;
    transition: box-shadow .2s, transform .2s;
}
.locall-tarif-card:hover { box-shadow: 0 8px 24px rgba(0,0,0,.1); transform: translateY(-3px); }
.locall-tarif-img img    { width: 100%; aspect-ratio: 4/3; object-fit: cover; display: block; }
.locall-tarif-body       { padding: 20px; }
.locall-tarif-nom        { font-size: 18px; color: var(--locall-primary); margin: 0 0 8px; }
.locall-tarif-desc       { font-size: 13px; color: #777; margin-bottom: 14px; line-height: 1.5; }
.locall-tarif-prix       { margin-bottom: 16px; }
.prix-ligne              { display: flex; justify-content: space-between; padding: 6px 0; border-bottom: 1px solid #f0f0f0; font-size: 14px; }
.prix-ligne strong       { color: var(--locall-secondary); }
.locall-prix-principal   { font-weight: 700; }
.locall-prix-principal strong { font-size: 18px; }
.locall-caution          { color: #888; font-size: 12px; }

/* Livraisons */
.locall-livraisons-section { margin-top: 40px; }
.locall-livraisons-section h3 { font-size: 20px; color: var(--locall-primary); margin-bottom: 16px; }
.locall-table-tarifs { width: 100%; border-collapse: collapse; font-size: 14px; }
.locall-table-tarifs th { background: var(--locall-bg-light); padding: 10px 14px; text-align: left; border-bottom: 2px solid var(--locall-border); }
.locall-table-tarifs td { padding: 10px 14px; border-bottom: 1px solid #f0f4f8; }

/* ================================================================
   PAGE CONTACT
   ================================================================ */
.locall-contact-wrap  { max-width: 900px; margin: 0 auto; }
.locall-contact-grid  { display: grid; grid-template-columns: 2fr 1fr; gap: 40px; align-items: start; }
.locall-contact-form  h3 { font-size: 22px; color: var(--locall-primary); margin: 0 0 20px; }

.locall-contact-pref  { margin-bottom: 24px; }
.locall-pref-btns     { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 8px; }
.locall-pref-btn {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 10px 18px; border-radius: var(--locall-radius);
    background: var(--locall-bg-light); border: 1px solid var(--locall-border);
    color: var(--locall-text); text-decoration: none; font-size: 14px; font-weight: 600;
    transition: background .2s;
}
.locall-pref-btn:hover { background: var(--locall-primary); color: #fff; }

.locall-contact-infos { background: var(--locall-bg-light); padding: 24px; border-radius: var(--locall-radius); border: 1px solid var(--locall-border); }
.locall-info-bloc     { display: flex; align-items: center; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--locall-border); font-size: 14px; }
.locall-info-bloc:last-child { border-bottom: none; }
.locall-info-bloc span:first-child { font-size: 20px; flex-shrink: 0; }
.locall-info-bloc a   { color: var(--locall-primary); text-decoration: none; }

/* ================================================================
   PAGE PAIEMENT
   ================================================================ */
.locall-paiement-wrap { max-width: 860px; margin: 0 auto; }
.locall-paiement-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 30px; align-items: start; }

.locall-recap-bloc    { background: var(--locall-bg-light); padding: 24px; border-radius: var(--locall-radius); border: 1px solid var(--locall-border); }
.locall-recap-bloc h3 { font-size: 16px; color: var(--locall-primary); margin: 0 0 16px; }
.locall-recap-ligne   { display: flex; justify-content: space-between; padding: 8px 0; border-bottom: 1px solid var(--locall-border); font-size: 14px; }
.locall-recap-ligne:last-child { border-bottom: none; }
.locall-remise span   { color: #27ae60; }
.locall-recap-total   { margin-top: 12px; padding-top: 12px; border-top: 2px solid var(--locall-primary); }
.locall-montant-payer { font-size: 16px; font-weight: 700; }
.locall-montant-payer strong { font-size: 22px; color: var(--locall-primary); }

.locall-stripe-bloc   { background: #fff; padding: 24px; border-radius: var(--locall-radius); border: 1px solid var(--locall-border); }
.locall-stripe-secure { font-size: 12px; color: #888; text-align: center; margin-top: 10px; }

/* ================================================================
   PAGE SIGNATURE
   ================================================================ */
.locall-signature-wrap { max-width: 100%; margin: 0; }
.locall-contrat-text   { background: var(--locall-bg-light); border: 1px solid var(--locall-border); border-radius: var(--locall-radius); padding: 20px; margin-bottom: 28px; max-height: 400px; overflow-y: auto; font-size: 13px; line-height: 1.7; }
.locall-signature-zone { background: #fff; border: 1px solid var(--locall-border); border-radius: var(--locall-radius); padding: 24px; }
.locall-signature-zone h3 { margin: 0 0 14px; color: var(--locall-primary); }
.locall-checkbox-label { display: flex; align-items: flex-start; gap: 10px; font-size: 14px; margin: 14px 0; cursor: pointer; line-height: 1.5; }
.locall-checkbox-label input { margin-top: 3px; flex-shrink: 0; }

/* ================================================================
   PAGE SUCCÈS
   ================================================================ */
.locall-succes-wrap  { max-width: 540px; margin: 60px auto; text-align: center; padding: 40px 24px; background: #fff; border: 1px solid var(--locall-border); border-radius: var(--locall-radius); }
.locall-succes-icon  { font-size: 64px; margin-bottom: 16px; }
.locall-succes-titre { color: var(--locall-primary); font-size: 26px; margin-bottom: 10px; }

/* ================================================================
   TEXTES LÉGAUX
   ================================================================ */
.locall-legal-wrap { max-width: 860px; margin: 0 auto; line-height: 1.8; font-size: 14px; }
.locall-legal-wrap h2 { color: var(--locall-primary); margin-top: 28px; }
.locall-legal-wrap h3 { color: #444; margin-top: 20px; }

/* ================================================================
   RESPONSIVE
   ================================================================ */
@media (max-width: 768px) {
    .locall-article-top,
    .locall-contact-grid,
    .locall-paiement-grid { grid-template-columns: 1fr; }
    .locall-form-row-2 { grid-template-columns: 1fr; }
    .locall-field-full { grid-column: span 1; }
    .locall-tarifs-grid { grid-template-columns: 1fr; }
}

/* ─── Page Accueil [locall_accueil] ────────────────────────────────────────── */
.locall-accueil-wrap { max-width: 1100px; margin: 0 auto; }

.locall-hero {
    background: linear-gradient(135deg, var(--locall-primary) 0%, var(--locall-secondary) 100%);
    color: #fff; border-radius: var(--locall-radius); padding: 60px 40px;
    text-align: center; margin-bottom: 40px;
}
.locall-hero-title  { font-size: 2.2rem; margin: 0 0 16px; font-weight: 700; }
.locall-hero-subtitle { font-size: 1.1rem; opacity: .9; margin: 0 0 28px; }
.locall-hero-cta    { display: flex; gap: 14px; justify-content: center; flex-wrap: wrap; }
.locall-hero-cta .locall-btn-secondary { background: rgba(255,255,255,.15); color: #fff; border-color: rgba(255,255,255,.5); }
.locall-hero-cta .locall-btn-secondary:hover { background: rgba(255,255,255,.25); }

.locall-avantages   { margin-bottom: 48px; }
.locall-avantages-grid { display: grid; grid-template-columns: repeat(4,1fr); gap: 20px; }
.locall-avantage-item {
    background: #fff; border: 1px solid #dde4ec; border-radius: var(--locall-radius);
    padding: 24px 20px; text-align: center;
}
.locall-avantage-icon { font-size: 2rem; display: block; margin-bottom: 12px; }
.locall-avantage-item h3 { font-size: 15px; color: var(--locall-primary); margin: 0 0 8px; }
.locall-avantage-item p  { font-size: 13px; color: #666; margin: 0; }

.locall-vitrine     { margin-bottom: 48px; }
.locall-section-title { font-size: 1.5rem; color: var(--locall-primary); text-align: center; margin: 0 0 28px; }
.locall-vitrine-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 20px; }
.locall-vitrine-card {
    background: #fff; border: 1px solid #dde4ec; border-radius: var(--locall-radius);
    overflow: hidden; transition: box-shadow .2s;
}
.locall-vitrine-card:hover { box-shadow: 0 4px 20px rgba(45,106,159,.12); }
.locall-vitrine-img  { height: 180px; overflow: hidden; }
.locall-vitrine-img img { width: 100%; height: 100%; object-fit: cover; }
.locall-vitrine-info { padding: 16px; }
.locall-vitrine-info h3 { font-size: 16px; color: var(--locall-primary); margin: 0 0 8px; }
.locall-vitrine-prix { font-size: 13px; color: #666; margin-bottom: 12px; }
.locall-vitrine-prix strong { color: var(--locall-secondary); font-size: 15px; }
.locall-btn-sm-full { display: block; text-align: center; width: 100%; box-sizing: border-box; }

.locall-cta-final {
    background: var(--locall-bg-card); border: 1px solid #dde4ec;
    border-radius: var(--locall-radius); padding: 40px; text-align: center;
}
.locall-cta-final h2 { font-size: 1.5rem; color: var(--locall-primary); margin: 0 0 12px; }
.locall-cta-final p  { color: #666; margin: 0 0 20px; }

/* ─── Iframe contrat ─────────────────────────────────────────────────────── */
.locall-contrat-iframe-wrap {
    background: #f8fbff; border: 1px solid #dde4ec;
    border-radius: var(--locall-radius); padding: 12px 0 0; margin-bottom: 24px;
}
.locall-contrat-iframe-wrap h3 { margin: 0 8px 8px; }
.locall-contrat-iframe-wrap p  { margin: 0 8px 8px; }
.locall-contrat-iframe-wrap iframe {
    display: block;
    width: 100%;
    height: 82vh;
    min-height: 600px;
    border: none;
    border-radius: 0;
}
.locall-contrat-iframe-wrap .locall-iframe-footer {
    padding: 6px 12px 10px;
    text-align: right;
    font-size: 12px;
}

/* ─── Responsive accueil ─────────────────────────────────────────────────── */
@media (max-width: 768px) {
    .locall-hero { padding: 36px 20px; }
    .locall-hero-title { font-size: 1.5rem; }
    .locall-avantages-grid { grid-template-columns: 1fr 1fr; }
    .locall-vitrine-grid   { grid-template-columns: 1fr; }
}
@media (max-width: 480px) {
    .locall-avantages-grid { grid-template-columns: 1fr; }
}

/* ── Légende calendrier front ────────────────────────────────────── */
.locall-cal-legende {
    display: flex;
    gap: 16px;
    flex-wrap: wrap;
    margin-top: 8px;
    font-size: 12px;
    color: #555;
}
.locall-cal-legende span {
    display: flex;
    align-items: center;
    gap: 5px;
}
.locall-cal-legende i {
    display: inline-block;
    width: 12px;
    height: 12px;
    border-radius: 2px;
}

/* ─── Neutraliser les icônes de validation du thème sur les champs du plugin ── */
/* Certains thèmes (Twenty Twenty-Five) ajoutent des icônes (:after/:before)     */
/* sur les inputs required ou invalid — on les supprime dans notre scope          */
.locall-article-wrap input,
.locall-article-wrap select,
.locall-article-wrap textarea,
.locall-paiement-wrap input,
.locall-paiement-wrap select,
.locall-signature-wrap input,
.locall-contact-wrap input,
.locall-contact-wrap select,
.locall-contact-wrap textarea {
    background-image: none !important;
    box-shadow: none;
}
.locall-article-wrap input:before,
.locall-article-wrap input:after,
.locall-article-wrap .locall-form-field:before,
.locall-article-wrap .locall-form-field:after {
    display: none !important;
    content: none !important;
}
/* Supprimer les pseudo-éléments sur les wrappers de champs */
.locall-form-field::before,
.locall-form-field::after {
    display: none !important;
    content: none !important;
}

/* ─── Formulaire réservation multi-articles ────────────────────────────────── */
.locall-multi-wrap { max-width: 780px; margin: 0 auto; }
.locall-multi-section { margin-bottom: 20px !important; }
.locall-multi-titre { font-size: 15px; font-weight: 700; color: var(--locall-primary, #2d6a9f); margin: 0 0 16px; padding-bottom: 8px; border-bottom: 2px solid var(--locall-border, #e0e7ef); }
.locall-multi-articles { display: flex; flex-direction: column; gap: 10px; }
.locall-multi-article { border: 2px solid var(--locall-border, #e0e7ef); border-radius: 8px; transition: border-color .2s, background .2s; }
.locall-multi-article:has(.locall-multi-check:checked) { border-color: var(--locall-primary, #2d6a9f); background: #f0f6ff; }
.locall-multi-article-label { display: flex; align-items: center; gap: 14px; padding: 12px 14px; cursor: pointer; }
.locall-multi-check { width: 20px; height: 20px; flex-shrink: 0; accent-color: var(--locall-primary, #2d6a9f); cursor: pointer; }
.locall-multi-img { width: 70px; height: 70px; object-fit: cover; border-radius: 6px; flex-shrink: 0; }
.locall-multi-article-info { flex: 1; }
.locall-multi-article-info strong { font-size: 15px; color: #333; }
.locall-multi-desc { font-size: 12px; color: #888; margin: 3px 0 6px; }
.locall-multi-prix-liste { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 4px; }
.locall-multi-prix-liste span { font-size: 12px; background: #f0f4f8; color: #555; padding: 2px 8px; border-radius: 12px; }
.locall-multi-prix-liste .locall-prix-main { background: var(--locall-primary, #2d6a9f); color: #fff; font-weight: 600; }
@media (max-width: 540px) {
    .locall-multi-img { width: 50px; height: 50px; }
    .locall-multi-article-label { padding: 10px; gap: 10px; }
}

/* ─── Responsive Front complémentaire ─────────────────────────────────────── */
@media (max-width: 768px) {
    /* Formulaire article */
    .locall-article-wrap { padding: 0 12px; }
    .locall-article-top  { flex-direction: column; }
    .locall-article-img  { width: 100%; max-height: 220px; object-fit: cover; }

    /* Formulaire multi */
    .locall-multi-wrap   { padding: 0 12px; }
    .locall-multi-articles { gap: 8px; }
    .locall-multi-article-label { flex-wrap: wrap; }

    /* Paiement */
    .locall-paiement-grid { grid-template-columns: 1fr; }

    /* Formulaire réservation : lignes triple → 2 col */
    .locall-form-row-triple { grid-template-columns: 1fr 1fr; }

    /* Devis */
    #locall-multi-devis table { font-size: 12px; }

    /* Prix article */
    .locall-prix-box { flex-wrap: wrap; gap: 6px; }

    /* Signature */
    #locall-sig-canvas { width: 100% !important; height: 140px !important; }
}

@media (max-width: 540px) {
    /* Champs formulaire : toujours 1 colonne */
    .locall-form-row-2,
    .locall-form-row-triple { grid-template-columns: 1fr !important; }

    /* Bouton submit pleine largeur */
    .locall-submit-btn,
    .locall-btn-primary { width: 100%; text-align: center; box-sizing: border-box; }

    /* Multi articles : image plus petite */
    .locall-multi-img { width: 48px; height: 48px; }

    /* Blocs tarifs */
    .locall-tarif-card { padding: 12px; }
    .locall-prix-item  { font-size: 13px; }

    /* Accueil hero */
    .locall-hero { padding: 24px 14px; }
    .locall-hero-title { font-size: 1.3rem; }

    /* Page paiement : montants */
    .locall-paiement-montant { font-size: 20px; }

    /* Tabs front (calendrier) */
    .locall-cal-legende { gap: 8px; font-size: 12px; }

    /* Récap commande */
    .locall-recap-table td { padding: 6px 4px; font-size: 12px; }
}

@media (max-width: 380px) {
    .locall-article-wrap,
    .locall-multi-wrap,
    .locall-paiement-wrap { padding: 0 8px; }

    .locall-btn { padding: 10px 16px; font-size: 13px; }
    .locall-multi-titre { font-size: 14px; }
}

/* Horaires table dans le formulaire multi → scroll */
.locall-multi-section table {
    display: block;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

/* ─── Empêcher le zoom automatique iOS sur les champs (font-size >= 16px) ──── */
@media (max-width: 768px) {
    .locall-form-field input,
    .locall-form-field select,
    .locall-form-field textarea,
    .locall-multi-wrap input,
    .locall-multi-wrap select,
    .locall-multi-wrap textarea {
        font-size: 16px !important;
    }
}

/* ─── [locall_catalogue] ──────────────────────────────────────────────────── */
.locall-catalogue-wrap { max-width: 1200px; margin: 0 auto; padding: 0 16px; }

.locall-catalogue-grid {
    display: grid;
    grid-template-columns: repeat(var(--cols, 3), 1fr);
    gap: 28px;
    margin-bottom: 48px;
}

.locall-catalogue-card {
    background: #fff;
    border-radius: 12px;
    box-shadow: 0 2px 16px rgba(0,0,0,.08);
    overflow: hidden;
    display: flex;
    flex-direction: column;
    transition: transform .2s, box-shadow .2s;
}
.locall-catalogue-card:hover {
    transform: translateY(-4px);
    box-shadow: 0 8px 32px rgba(0,0,0,.14);
}

.locall-catalogue-img-wrap {
    position: relative;
    aspect-ratio: 4/3;
    overflow: hidden;
    background: #f0f4f8;
}
.locall-catalogue-img {
    width: 100%; height: 100%;
    object-fit: cover;
    transition: transform .3s;
}
.locall-catalogue-card:hover .locall-catalogue-img { transform: scale(1.04); }

.locall-catalogue-img-placeholder {
    display: flex; align-items: center; justify-content: center;
    height: 100%; font-size: 56px; color: #c3cdd9;
}

.locall-catalogue-badge {
    position: absolute; bottom: 10px; left: 10px;
    background: var(--locall-primary, #2d6a9f);
    color: #fff;
    padding: 4px 12px;
    border-radius: 20px;
    font-size: 12px; font-weight: 700;
    box-shadow: 0 2px 6px rgba(0,0,0,.2);
}

.locall-catalogue-body {
    padding: 18px 20px 20px;
    display: flex; flex-direction: column; flex: 1;
}
.locall-catalogue-nom {
    font-size: 18px; font-weight: 700;
    color: var(--locall-primary, #1e3a5f);
    margin: 0 0 8px;
}
.locall-catalogue-desc {
    font-size: 13px; color: #666;
    margin: 0 0 14px; line-height: 1.5;
    flex: 1;
}

.locall-catalogue-prix {
    border-top: 1px solid #f0f4f8;
    padding-top: 12px;
    margin-bottom: 16px;
}
.locall-prix-ligne {
    display: flex; justify-content: space-between;
    font-size: 13px; padding: 3px 0; color: #555;
}
.locall-prix-principal { font-size: 15px; font-weight: 700; color: #1e3a5f; }
.locall-prix-caution { color: #e67e22; font-size: 12px; }

.locall-catalogue-btn {
    display: block; text-align: center;
    background: var(--locall-primary, #2d6a9f);
    color: #fff !important;
    padding: 11px 20px;
    border-radius: 8px;
    font-size: 14px; font-weight: 700;
    text-decoration: none;
    transition: background .2s, transform .15s;
    margin-top: auto;
}
.locall-catalogue-btn:hover { background: var(--locall-secondary, #1e3a5f); transform: translateY(-1px); }
.locall-catalogue-btn-disabled {
    background: #c3cdd9; cursor: default; color: #888 !important;
}

/* Livraisons */
.locall-catalogue-livraison { margin-top: 40px; padding-top: 32px; border-top: 2px solid #f0f4f8; }
.locall-catalogue-livraison h3 { font-size: 20px; margin-bottom: 16px; }
.locall-livraison-grid {
    display: flex; flex-wrap: wrap; gap: 12px;
}
.locall-livraison-card {
    background: #f8fbff;
    border: 1px solid #dde4ec;
    border-radius: 8px;
    padding: 12px 20px;
    text-align: center; min-width: 120px;
}
.locall-livraison-km { font-size: 13px; color: #666; margin-bottom: 4px; }
.locall-livraison-prix { font-size: 18px; font-weight: 700; color: var(--locall-primary, #2d6a9f); }

/* Responsive catalogue */
@media (max-width: 900px) {
    .locall-catalogue-grid { grid-template-columns: repeat(2, 1fr) !important; }
}
@media (max-width: 540px) {
    .locall-catalogue-grid { grid-template-columns: 1fr !important; gap: 16px; }
    .locall-catalogue-badge { font-size: 11px; }
}

/* ── Gallery thumbnails ──────────────────────────────────────────────────── */
.locall-gallery-thumbs {
    display: flex;
    gap: 6px;
    margin-top: 8px;
    flex-wrap: wrap;
}
.locall-gallery-thumb {
    width: 56px;
    height: 56px;
    object-fit: cover;
    border-radius: var(--locall-radius, 6px);
    border: 2px solid transparent;
    transition: border-color .2s;
    opacity: .75;
}
.locall-gallery-thumb:hover,
.locall-gallery-thumb.active {
    border-color: var(--locall-primary, #2d6a9f);
    opacity: 1;
}
.locall-gallery-count {
    position: absolute;
    bottom: 8px;
    right: 8px;
    background: rgba(0,0,0,.55);
    color: #fff;
    font-size: 12px;
    padding: 2px 8px;
    border-radius: 20px;
}
.locall-article-img { position: relative; }
.locall-gallery-main { transition: opacity .2s; }
.locall-gallery-main:hover { opacity: .92; }

/* ── Lightbox ────────────────────────────────────────────────────────────── */
#locall-lightbox {
    position: fixed; inset: 0;
    background: rgba(0,0,0,.88);
    z-index: 99999;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    gap: 12px;
    padding: 20px;
}
#locall-lightbox img {
    max-width: 90vw;
    max-height: 80vh;
    object-fit: contain;
    border-radius: 4px;
    box-shadow: 0 8px 40px rgba(0,0,0,.5);
}
.locall-lb-close {
    position: absolute; top: 16px; right: 20px;
    color: #fff; font-size: 32px; cursor: pointer;
    background: none; border: none; line-height: 1; opacity: .85;
}
.locall-lb-close:hover { opacity: 1; }
.locall-lb-nav {
    position: absolute; top: 50%; transform: translateY(-50%);
    color: #fff; font-size: 36px; cursor: pointer;
    background: rgba(255,255,255,.1); border: none;
    border-radius: 50%; width: 48px; height: 48px;
    display: flex; align-items: center; justify-content: center;
    transition: background .2s;
}
.locall-lb-nav:hover { background: rgba(255,255,255,.25); }
.locall-lb-prev { left: 16px; }
.locall-lb-next { right: 16px; }
.locall-lb-thumbs {
    display: flex; gap: 8px; flex-wrap: wrap;
    justify-content: center; max-width: 90vw;
}
.locall-lb-thumbs img {
    width: 48px; height: 48px;
    object-fit: cover; border-radius: 4px;
    cursor: pointer; opacity: .6; border: 2px solid transparent;
    transition: opacity .2s, border-color .2s;
}
.locall-lb-thumbs img.active,
.locall-lb-thumbs img:hover { opacity: 1; border-color: #fff; }
.locall-lb-counter {
    color: rgba(255,255,255,.7); font-size: 13px;
}

/* ── Week selector devis detail ──────────────────────────────────────────── */
#resa-semaines-detail { margin-top: 8px; }
[id^="resa-semaines-detail-"] {
    background: #f8fbff;
    border: 1px solid #dde4ec;
    border-radius: 6px;
    padding: 8px 10px;
    margin-top: 6px;
    font-size: 12px;
}

/* ════════════════════════════════════════════════════════════════════════════
   WP LocAll — Panier flottant
   ════════════════════════════════════════════════════════════════════════════ */
#locall-panier-widget {
    position: fixed;
    bottom: 24px;
    right: 24px;
    z-index: 9999;
    font-family: var(--locall-font, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif);
}
#locall-panier-toggle {
    background: var(--locall-primary, #2d6a9f);
    color: #fff;
    width: 56px; height: 56px;
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    cursor: pointer;
    box-shadow: 0 4px 16px rgba(0,0,0,.25);
    font-size: 22px;
    position: relative;
    transition: transform .2s;
}
#locall-panier-toggle:hover { transform: scale(1.08); }
.locall-panier-badge {
    position: absolute; top: -4px; right: -4px;
    background: #e74c3c; color: #fff;
    border-radius: 50%; width: 20px; height: 20px;
    font-size: 11px; font-weight: 700;
    display: flex; align-items: center; justify-content: center;
    border: 2px solid #fff;
}
#locall-panier-dropdown {
    display: none;
    position: absolute; bottom: 64px; right: 0;
    width: 320px;
    background: #fff;
    border-radius: 12px;
    box-shadow: 0 8px 32px rgba(0,0,0,.18);
    overflow: hidden;
}
#locall-panier-header {
    display: flex; align-items: center; justify-content: space-between;
    padding: 14px 16px;
    background: var(--locall-primary, #2d6a9f);
    color: #fff;
}
.locall-panier-close {
    background: none; border: none; color: #fff;
    font-size: 18px; cursor: pointer; padding: 0;
}
#locall-panier-items { max-height: 280px; overflow-y: auto; padding: 8px 0; }
.locall-panier-item {
    display: flex; align-items: center; gap: 10px;
    padding: 8px 14px;
    border-bottom: 1px solid #f0f4f8;
}
.locall-panier-item:last-child { border-bottom: none; }
.locall-panier-item-info { flex: 1; min-width: 0; }
.locall-panier-item-info strong { font-size: 13px; display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.locall-panier-item-info span { font-size: 11px; color: #888; }
.locall-panier-item-qty { display: flex; align-items: center; gap: 6px; font-size: 13px; }
.locall-qty-btn {
    background: #f0f4f8; border: none; border-radius: 4px;
    width: 24px; height: 24px; cursor: pointer; font-size: 14px; font-weight: 700;
    display: flex; align-items: center; justify-content: center;
}
.locall-qty-btn:hover { background: #dde4ec; }
.locall-panier-remove {
    background: none; border: none; cursor: pointer;
    font-size: 14px; color: #aaa; padding: 0;
    flex-shrink: 0;
}
.locall-panier-remove:hover { color: #e74c3c; }
#locall-panier-footer { padding: 12px 14px; border-top: 1px solid #f0f4f8; }
.locall-panier-btn-primary {
    display: block; width: 100%; text-align: center;
    background: var(--locall-primary, #2d6a9f);
    color: #fff !important; text-decoration: none;
    padding: 10px; border-radius: 8px; font-size: 14px; font-weight: 600;
    transition: opacity .2s;
}
.locall-panier-btn-primary:hover { opacity: .88; }
/* Bouton ajouter sur les cartes */
.locall-catalogue-btns { display: flex; flex-direction: column; gap: 6px; margin-top: 10px; }
.locall-btn-add {
    background: var(--locall-primary, #2d6a9f) !important;
    color: #fff !important;
    border: none; border-radius: var(--locall-radius, 6px);
    padding: 10px 16px; font-size: 14px; font-weight: 600;
    cursor: pointer; width: 100%; transition: background .2s, transform .1s;
}
.locall-btn-add:hover { opacity: .88; transform: translateY(-1px); }
.locall-btn-added { background: #27ae60 !important; }
.locall-catalogue-btn-detail {
    display: inline-block; text-align: center;
    background: var(--locall-primary, #2d6a9f);
    color: #fff !important;
    font-size: 14px; font-weight: 600; text-decoration: none;
    padding: 10px 18px; border-radius: 8px;
    transition: background .2s, transform .1s;
    white-space: nowrap;
}
.locall-catalogue-btn-detail:hover {
    background: var(--locall-secondary, #1a5080);
    text-decoration: none; transform: translateY(-1px);
}

/* ════════════════════════════════════════════════════════════════════════════
   WP LocAll — Wizard Réservation
   ════════════════════════════════════════════════════════════════════════════ */
.locall-wizard-wrap {
    max-width: 960px;
    margin: 0 auto;
    font-family: var(--locall-font, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif);
    color: var(--locall-text, #333);
}
/* Barre de progression */
.locall-wizard-steps {
    display: flex; align-items: center;
    margin-bottom: 32px;
    padding: 0 8px;
}
.locall-wizard-step {
    display: flex; flex-direction: column; align-items: center;
    gap: 6px; cursor: default; flex: 0 0 auto;
}
.locall-step-num {
    width: 36px; height: 36px; border-radius: 50%;
    background: #dde4ec; color: #888; font-weight: 700; font-size: 14px;
    display: flex; align-items: center; justify-content: center;
    transition: background .3s, color .3s;
}
.locall-step-label { font-size: 12px; color: #888; white-space: nowrap; }
.locall-wizard-step.active .locall-step-num { background: var(--locall-primary,#2d6a9f); color: #fff; }
.locall-wizard-step.active .locall-step-label { color: var(--locall-primary,#2d6a9f); font-weight: 600; }
.locall-wizard-step.done .locall-step-num { background: #27ae60; color: #fff; }
.locall-wizard-step-sep { flex: 1; height: 2px; background: #dde4ec; margin: 0 8px; margin-bottom: 18px; }
/* Panels */
.locall-wiz-title { font-size: 20px; color: var(--locall-primary,#2d6a9f); margin: 0 0 6px; }
.locall-wiz-desc  { color: #888; font-size: 14px; margin: 0 0 20px; }
/* Panier étape 1 */
.locall-wiz-panier-list { display: flex; flex-direction: column; gap: 10px; margin-bottom: 16px; }
.locall-wiz-panier-item {
    display: flex; align-items: center; gap: 12px;
    background: #fff; border: 1px solid #dde4ec; border-radius: 10px;
    padding: 12px 14px;
}
.locall-wiz-item-img { width: 56px; height: 56px; object-fit: cover; border-radius: 8px; flex-shrink: 0; }
.locall-wiz-item-img-ph { background: #f0f4f8; display:flex; align-items:center; justify-content:center; font-size:24px; }
.locall-wiz-panier-item-info { flex: 1; }
.locall-wiz-panier-item-info strong { display: block; font-size: 15px; }
.locall-wiz-cfg-badge {
    display: inline-block; font-size: 11px; padding: 2px 8px; border-radius: 12px;
    background: #eafaf1; color: #27ae60; font-weight: 600; margin-top: 2px;
}
.locall-wiz-cfg-todo { background: #fff8e1; color: #f39c12; }
.locall-wiz-panier-item-qty { display: flex; align-items: center; gap: 8px; font-weight: 700; }
.locall-wiz-empty { text-align: center; padding: 48px 20px; color: #888; }
.locall-wiz-empty span { font-size: 48px; display: block; margin-bottom: 12px; }
/* Actions bar */
.locall-wiz-actions { display: flex; gap: 12px; justify-content: flex-end; margin-top: 24px; flex-wrap: wrap; }
.locall-wiz-btn-primary {
    background: var(--locall-primary,#2d6a9f); color: #fff !important;
    border: none; border-radius: var(--locall-radius,8px);
    padding: 12px 28px; font-size: 15px; font-weight: 600;
    cursor: pointer; text-decoration: none; display: inline-block;
    transition: opacity .2s;
}
.locall-wiz-btn-primary:hover { opacity: .88; }
.locall-wiz-btn-outline {
    background: #fff; color: var(--locall-primary,#2d6a9f);
    border: 2px solid var(--locall-primary,#2d6a9f);
    border-radius: var(--locall-radius,8px);
    padding: 11px 24px; font-size: 15px; font-weight: 600;
    cursor: pointer; text-decoration: none; display: inline-block;
    transition: background .2s;
}
.locall-wiz-btn-outline:hover { background: #f0f7ff; }
/* Étape 2 layout */
.locall-wiz-step2-layout { display: grid; grid-template-columns: 220px 1fr; gap: 20px; }
@media (max-width: 640px) { .locall-wiz-step2-layout { grid-template-columns: 1fr; } }
.locall-wiz-sidebar { background: #f8fbff; border: 1px solid #dde4ec; border-radius: 10px; padding: 12px; }
.locall-wiz-sidebar-title { font-size: 11px; text-transform: uppercase; letter-spacing: .5px; color: #888; margin-bottom: 10px; }
.locall-wiz-sb-item {
    display: flex; align-items: center; gap: 10px;
    padding: 10px 12px; border-radius: 8px; cursor: pointer;
    margin-bottom: 6px; transition: background .2s;
}
.locall-wiz-sb-item:hover { background: #e8f0f8; }
.locall-wiz-sb-item.active { background: var(--locall-primary,#2d6a9f); color: #fff; }
.locall-wiz-sb-item.done { background: #eafaf1; color: #27ae60; }
.locall-wiz-sb-num { width: 24px; height: 24px; border-radius: 50%; background: rgba(255,255,255,.3); font-size: 12px; font-weight: 700; display:flex;align-items:center;justify-content:center; flex-shrink:0; }
.locall-wiz-sb-item.active .locall-wiz-sb-num { background: rgba(255,255,255,.25); }
.locall-wiz-sb-item.done .locall-wiz-sb-num { background: #27ae60; color: #fff; }
.locall-wiz-sb-nom { font-size: 13px; font-weight: 600; line-height: 1.3; }
.locall-wiz-config-panel {
    background: #fff; border: 1px solid #dde4ec; border-radius: 10px;
    padding: 24px; min-height: 300px;
}
.locall-wiz-config-header { margin-bottom: 20px; }
.locall-wiz-config-num { font-size: 12px; color: #888; margin-bottom: 4px; }
.locall-wiz-config-nom { font-size: 18px; color: var(--locall-primary,#2d6a9f); margin: 0; }
/* Form grid */
.locall-wiz-form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
@media (max-width: 500px) { .locall-wiz-form-grid { grid-template-columns: 1fr; } }
.locall-wiz-field { display: flex; flex-direction: column; gap: 5px; }
.locall-wiz-field-full { grid-column: 1 / -1; }
.locall-wiz-field label { font-size: 13px; font-weight: 600; color: #444; }
.locall-wiz-field input,
.locall-wiz-field select,
.locall-wiz-field textarea {
    border: 1px solid #c3cdd9; border-radius: 6px;
    padding: 9px 12px; font-size: 14px;
    width: 100%; box-sizing: border-box;
    font-family: inherit;
}
.locall-wiz-field input:focus,
.locall-wiz-field select:focus,
.locall-wiz-field textarea:focus {
    outline: none; border-color: var(--locall-primary,#2d6a9f);
    box-shadow: 0 0 0 3px rgba(45,106,159,.12);
}
/* Dispo message */
.locall-wiz-dispo-msg { min-height: 20px; font-size: 13px; margin: 10px 0; }
.locall-wiz-dispo-ok { color: #27ae60; }
.locall-wiz-dispo-error { color: #e74c3c; font-weight: 600; }
.locall-wiz-dispo-checking { color: #888; }
/* Devis */
.locall-wiz-devis-box {
    background: #f0f8f0; border: 2px solid #27ae60;
    border-radius: 10px; padding: 16px; margin: 14px 0;
}
.locall-wiz-devis-box h4 { margin: 0 0 10px; font-size: 14px; color: #1a6b3a; }
.locall-wiz-devis-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.locall-wiz-devis-table td { padding: 5px 6px; border-bottom: 1px solid #c8e6c9; }
.locall-wiz-devis-total { font-size: 15px; font-weight: 700; color: #1a6b3a; text-align: right; margin-top: 8px; }
/* Sections étape 3 */
.locall-wiz-section {
    background: #fff; border: 1px solid #dde4ec; border-radius: 10px;
    padding: 20px 24px; margin-bottom: 16px;
}
.locall-wiz-section-title { font-size: 15px; color: var(--locall-primary,#2d6a9f); margin: 0 0 14px; }
/* Récap table */
.locall-wiz-recap-table { width: 100%; border-collapse: collapse; font-size: 14px; }
.locall-wiz-recap-table th { background: #f0f4f8; padding: 10px 12px; text-align: left; font-size: 12px; color: #666; }
.locall-wiz-recap-table td { padding: 12px; border-bottom: 1px solid #f0f4f8; }
.locall-wiz-recap-table tr:last-child td { border-bottom: none; }
/* Total */
.locall-wiz-total-section { background: #fff8; }
.locall-wiz-total-box { margin-bottom: 16px; }
.locall-wiz-total-ligne {
    display: flex; justify-content: space-between; align-items: center;
    font-size: 20px; font-weight: 700; color: var(--locall-primary,#2d6a9f);
    padding: 14px 0; border-top: 2px solid #dde4ec;
}
/* Notice */
.locall-wiz-notice { padding: 12px 16px; border-radius: 8px; font-size: 14px; margin-bottom: 12px; }
.locall-wiz-notice-error { background: #fff0f0; color: #c0392b; border: 1px solid #e74c3c; }
.locall-wiz-notice-ok    { background: #eafaf1; color: #1e8449; border: 1px solid #27ae60; }
/* Succès */
.locall-wiz-succes { text-align: center; padding: 48px 20px; }
.locall-wiz-succes-icon { font-size: 64px; margin-bottom: 16px; }
.locall-wiz-succes h3 { font-size: 22px; color: #27ae60; margin: 0 0 10px; }
.locall-wiz-succes p  { color: #666; margin-bottom: 20px; }

/* Catalogue: image cliquable */
.locall-catalogue-img-wrap a { display: block; }
.locall-catalogue-img-wrap a img { transition: opacity .2s; }
.locall-catalogue-img-wrap a img:hover { opacity: .88; }

/* ── Contact : préférence de contact toggle ─────────────────────────────────── */
.locall-pref-btns { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 12px; }
.locall-pref-toggle {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 9px 18px;
    border: 2px solid var(--locall-border, #dde4ec);
    border-radius: var(--locall-radius, 8px);
    background: #fff;
    color: var(--locall-text, #333);
    font-size: 14px; font-weight: 500;
    cursor: pointer;
    transition: all .2s;
    user-select: none;
}
.locall-pref-toggle:hover {
    border-color: var(--locall-primary, #2d6a9f);
    color: var(--locall-primary, #2d6a9f);
    background: #f0f7ff;
}
.locall-pref-toggle.locall-pref-active {
    background: var(--locall-primary, #2d6a9f);
    border-color: var(--locall-primary, #2d6a9f);
    color: #fff !important;
    box-shadow: 0 2px 8px rgba(45,106,159,.25);
}
.locall-pref-toggle.locall-pref-active:hover {
    opacity: .88;
    background: var(--locall-primary, #2d6a9f);
}

/* ── FullCalendar : jour sélectionné ──────────────────────────────────────── */
.fc-day-selected {
    background: var(--locall-primary, #2d6a9f) !important;
    border-radius: 4px;
}
.fc-day-selected .fc-daygrid-day-number {
    color: #fff !important;
    font-weight: 700;
}
.locall-mini-cal .fc-daygrid-day:hover:not(.fc-day-selected) {
    background: #e8f0f8;
    cursor: pointer;
    border-radius: 4px;
}

/* ════════════════════════════════════════════════════════════════════════════
   CATALOGUE — 4 modes d'affichage modernes
   ════════════════════════════════════════════════════════════════════════════ */

/* Grille commune */
.locall-catalogue-wrap { max-width: 1200px; margin: 0 auto; padding: 0 16px; }
.locall-catalogue-grid {
    display: grid;
    grid-template-columns: repeat(var(--cols, 3), 1fr);
    gap: 24px;
}
@media (max-width: 768px) { .locall-catalogue-grid { grid-template-columns: 1fr 1fr; gap: 14px; } }
@media (max-width: 480px) { .locall-catalogue-grid { grid-template-columns: 1fr; } }

/* Éléments communs aux cartes */
.locall-cat-nom { font-size: 16px; font-weight: 700; color: var(--locall-primary,#1e3a5f); margin: 0 0 6px; line-height: 1.3; }
.locall-cat-nom-lg { font-size: 20px; margin-bottom: 10px; }
.locall-cat-desc { font-size: 13px; color: #666; line-height: 1.55; margin: 0 0 12px; }
.locall-cat-desc-lg { font-size: 14px; margin-bottom: 14px; }
.locall-cat-prix-from { font-size: 13px; color: var(--locall-primary,#2d6a9f); margin: 6px 0 14px; }
.locall-cat-prix-from-sm { font-size: 12px; color: var(--locall-primary,#2d6a9f); font-weight: 600; }
.locall-cat-caution { padding: 8px 12px; background: #fff8e1; border: 1px solid #ffe082; border-radius: 6px; font-size: 13px; margin-bottom: 14px; }
.locall-cat-badge {
    position: absolute; bottom: 10px; left: 10px;
    background: var(--locall-primary,#2d6a9f); color: #fff;
    padding: 4px 10px; border-radius: 20px; font-size: 12px; font-weight: 600;
}
.locall-cat-badge-lg { font-size: 14px; padding: 6px 14px; }

/* ── MODE CARTE ───────────────────────────────────────────────────────────── */
.locall-cat-mode-carte {
    background: #fff; border: 1px solid #dde4ec;
    border-radius: var(--locall-radius,10px); overflow: hidden;
    transition: box-shadow .2s, transform .2s;
    display: flex; flex-direction: column;
}
.locall-cat-mode-carte:hover { box-shadow: 0 6px 24px rgba(0,0,0,.1); transform: translateY(-2px); }
.locall-cat-mode-carte .locall-cat-img-wrap { position: relative; aspect-ratio: 4/3; overflow: hidden; }
.locall-cat-mode-carte .locall-cat-img-link { display: block; height: 100%; }
.locall-cat-mode-carte .locall-cat-img { width: 100%; height: 100%; object-fit: cover; transition: transform .3s; }
.locall-cat-mode-carte:hover .locall-cat-img { transform: scale(1.04); }
.locall-cat-mode-carte .locall-cat-body { padding: 16px; flex: 1; display: flex; flex-direction: column; }
.locall-cat-mode-carte .locall-catalogue-btns { margin-top: auto; padding-top: 12px; }

/* ── MODE LISTE ───────────────────────────────────────────────────────────── */
/* Mode liste : 1 colonne — appliqué via classe sur le wrapper en PHP */
.locall-catalogue-grid.mode-liste { grid-template-columns: 1fr; }
/* Fallback :has() pour navigateurs modernes */
.locall-catalogue-grid:has(.locall-cat-mode-liste) { grid-template-columns: 1fr; }
.locall-cat-mode-liste { background: #fff; border: 1px solid #dde4ec; border-radius: var(--locall-radius,10px); overflow: hidden; }
.locall-cat-liste-row { display: flex; align-items: stretch; gap: 0; }
.locall-cat-liste-img { flex: 0 0 240px; overflow: hidden; }
.locall-cat-liste-img img { width: 100%; height: 100%; object-fit: cover; transition: transform .3s; }
.locall-cat-mode-liste:hover .locall-cat-liste-img img { transform: scale(1.03); }
.locall-cat-liste-body { flex: 1; padding: 20px 24px; display: flex; flex-direction: column; justify-content: center; }
.locall-cat-liste-actions { flex: 0 0 auto; padding: 20px; display: flex; flex-direction: column; gap: 8px; justify-content: center; border-left: 1px solid #f0f4f8; }
@media (max-width: 600px) {
    .locall-cat-liste-row { flex-direction: column; }
    .locall-cat-liste-img { flex: 0 0 200px; }
    .locall-cat-liste-actions { border-left: none; border-top: 1px solid #f0f4f8; flex-direction: row; flex-wrap: wrap; }
}

/* ── MODE GALERIE ─────────────────────────────────────────────────────────── */
.locall-cat-mode-galerie {
    background: #fff; border-radius: var(--locall-radius,10px); overflow: hidden;
    box-shadow: 0 2px 8px rgba(0,0,0,.07);
    transition: box-shadow .2s, transform .2s;
}
.locall-cat-mode-galerie:hover { box-shadow: 0 8px 28px rgba(0,0,0,.14); transform: translateY(-3px); }
.locall-cat-galerie-wrap { display: flex; flex-direction: column; height: 100%; }
.locall-cat-galerie-img { position: relative; aspect-ratio: 4/3; overflow: hidden; flex-shrink: 0; }
.locall-cat-badge-galerie { position: absolute; bottom: 10px; left: 10px; }
.locall-cat-galerie-img img { width: 100%; height: 100%; object-fit: cover; transition: transform .4s; display: block; }
.locall-cat-galerie-link { display: block; width: 100%; height: 100%; overflow: hidden; }
.locall-cat-mode-galerie:hover .locall-cat-galerie-img img { transform: scale(1.05); }
.locall-cat-galerie-foot {
    padding: 14px 16px; display: flex; align-items: center; justify-content: space-between;
    border-top: 1px solid #f0f4f8; background: #fff; flex: 1; gap: 12px;
}
.locall-cat-galerie-info { flex: 1; min-width: 0; }
.locall-cat-galerie-nom-link { text-decoration: none; color: inherit; }
.locall-cat-galerie-nom-link:hover .locall-cat-nom { color: var(--locall-primary,#2d6a9f); text-decoration: underline; }

/* ── MODE VITRINE ─────────────────────────────────────────────────────────── */
.locall-cat-mode-vitrine {
    background: #fff; border: 1px solid #dde4ec;
    border-radius: var(--locall-radius,10px); overflow: hidden;
    transition: box-shadow .2s;
}
.locall-cat-mode-vitrine:hover { box-shadow: 0 6px 24px rgba(0,0,0,.1); }
.locall-cat-vitrine-img { position: relative; aspect-ratio: 16/9; overflow: hidden; }
.locall-cat-vitrine-img img { width: 100%; height: 100%; object-fit: cover; transition: transform .3s; }
.locall-cat-mode-vitrine:hover .locall-cat-vitrine-img img { transform: scale(1.03); }
.locall-cat-body-vitrine { padding: 22px 24px; }

/* ── Wizard : alignement questions radio/checkbox ──────────────────────────── */
.locall-wiz-form-grid .locall-wiz-field .locall-wiz-radio-group,
.locall-wiz-form-grid .locall-wiz-field .locall-wiz-checkbox-group {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-top: 4px;
}
.locall-wiz-form-grid .locall-wiz-field .locall-wiz-radio-group label,
.locall-wiz-form-grid .locall-wiz-field .locall-wiz-checkbox-group label {
    display: flex;
    align-items: center;
    gap: 8px;
    font-weight: normal;
    cursor: pointer;
    padding: 6px 10px;
    border-radius: var(--locall-radius, 6px);
    border: 1px solid #dde4ec;
    background: #f8fbff;
    transition: background .15s;
}
.locall-wiz-form-grid .locall-wiz-field .locall-wiz-radio-group label:hover,
.locall-wiz-form-grid .locall-wiz-field .locall-wiz-checkbox-group label:hover {
    background: #e8f0f8;
}
.locall-wiz-form-grid .locall-wiz-field input[type="radio"],
.locall-wiz-form-grid .locall-wiz-field input[type="checkbox"] {
    flex-shrink: 0;
    width: 16px;
    height: 16px;
    margin: 0;
}
