/*
Theme Name: Astra Child - Liberta Local
Template: astra
Version: 2.0
Description: Thème enfant pour Liberta Local
*/

/* ============================================================
   LIBERTA LOCAL — Variables & Reset
   ============================================================ */

:root {
    --ll-green:   #2d6a4f;
    --ll-green-l: #52b788;
    --ll-dark:    #1a2e1a;
    --ll-text:    #2c2416;
    --ll-muted:   #6b7c5a;
    --ll-light:   #f5efe0;
    --ll-border:  #ddd0b8;
    --ll-white:   #ffffff;
    --ll-cream:   #fdf6e3;
    --ll-earth:   #8b5e3c;
    --ll-honey:   #c9973a;
    --ll-radius:  12px;
    --ll-max:     1120px;
}

/* Typographie organique */
body, .site { font-family: 'Source Sans 3', 'Inter', system-ui, sans-serif; background: var(--ll-cream); color: var(--ll-text); }
h1, h2, h3, h4, h5, h6 { font-family: 'Lora', Georgia, 'Times New Roman', serif; }
a { color: var(--ll-green); }
a:hover { color: var(--ll-earth); }

/* Reset Astra on homepage */
.home .entry-content,
.home .ast-container { padding: 0 !important; max-width: 100% !important; }
/* Masquer titres et fils d'Ariane sur les pages avec contenu custom.
   Classes lbt-page-* (D1, Vague 4) au lieu de page-id-N codés en dur —
   ces derniers ne valaient que pour les ID du site FR et ne s'appliquaient
   pas sur les 210 sous-sites (cf. functions.php, filtre body_class). */
.home .entry-header,
.home .ast-breadcrumbs-wrap,
.lbt-page-carte .entry-header,
.lbt-page-mon-espace .entry-header,
.lbt-page-inscription .entry-header,
.lbt-page-connexion .entry-header,
.lbt-page-boutique .entry-header,
.lbt-page-evenements .entry-header,
.lbt-page-ajouter-lieu .entry-header,
.lbt-page-verification-2fa .entry-header,
.ast-breadcrumbs-wrap,
.woocommerce-breadcrumb { display: none !important; }
/* Cacher uniquement le titre et le tri WC, pas le contenu (shortcode dans .page-description) */
.woocommerce-products-header__title,
.woocommerce-no-products-found,
.woocommerce-result-count,
.woocommerce-ordering { display: none !important; }
.home .site-content { padding-top: 0 !important; }
.home .entry-content > * + * { margin-top: 0; }

/* ============================================================
   BIBLIOTHÈQUE DE COMPOSANTS — D2, Vague 4
   Boutons/cartes/badges/bandeaux/état-vide réutilisables sur les pages
   publiques, au lieu du style="" en ligne au cas par cas (536 occurrences
   mesurées à l'audit). Chaque composant a un focus clavier visible
   (:focus-visible, jamais retiré à la souris) et une cible tactile
   ≥ 44px. S'appuie sur les jetons --ll-* (D1) — jamais de couleur en dur.
   Migration progressive : ce lot définit les classes et les applique aux
   nouveaux usages ; les 536 style="" existants ne sont pas tous retouchés
   ce soir (chantier séparé, cf. plan §7 D2).
   ============================================================ */

/* Anneau de focus clavier commun à tout composant de cette bibliothèque —
   jamais affiché au clic souris/tactile (:focus-visible), donc aucun
   changement visuel pour la majorité des visiteurs. */
.ll-btn-primary:focus-visible,
.ll-btn-outline:focus-visible,
.ll-btn-outline-dark:focus-visible,
.ll-btn-white:focus-visible,
.ll-tab:focus-visible,
.ll-card a:focus-visible,
.ll-badge:focus-visible,
a.ll-badge:focus-visible {
    outline: 2.5px solid var(--ll-honey, #c9973a);
    outline-offset: 2px;
}

/* Anneau de focus clavier étendu (D5) — couvre tout lien/bouton/champ du
   contenu principal des pages publiques (hors dashboard/wp-admin, gérés
   à part en Vague 5) : la plupart n'avaient encore aucun indicateur de
   focus (audit : "2 règles :focus-visible dans tout le thème" avant ce
   correctif, confirmé — 0 dans style.css/almanach.css, 2 dans le plugin).
   :focus-visible n'apparaît jamais au clic souris/tactile. */
#content a:focus-visible,
#content button:focus-visible,
#content input:focus-visible,
#content select:focus-visible,
#content textarea:focus-visible,
#content [tabindex]:focus-visible {
    outline: 2.5px solid var(--ll-honey, #c9973a);
    outline-offset: 2px;
}

/* Lien d'évitement (D5) — invisible hors focus clavier, saute directement
   au contenu principal (#content). */
.ll-skip-link {
    position: absolute; top: -60px; left: 12px; z-index: 100000;
    background: var(--ll-dark, #1a2e1a); color: var(--ll-white, #fff) !important;
    padding: 12px 20px; border-radius: 0 0 8px 8px;
    font-size: 14px; font-weight: 700; text-decoration: none;
    transition: top .15s ease;
}
.ll-skip-link:focus { top: 0; outline: 2.5px solid var(--ll-honey, #c9973a); outline-offset: -2px; }

/* ── Boutons ──────────────────────────────────────────────────────────
   Le système de boutons publics (.ll-btn-primary/-outline/-outline-dark/
   -white, cf. section BOUTONS plus bas dans ce fichier) existait déjà et
   couvre déjà les 4 contextes visuels du site (fond vert, hero sombre,
   fond clair, fond blanc) — pas de nouvelle classe ici, seulement la
   cible tactile 44px (déjà quasiment atteinte par le padding existant)
   et le focus clavier qui manquaient, ajoutés ci-dessus et ci-dessous. */
.ll-btn-primary, .ll-btn-outline, .ll-btn-outline-dark, .ll-btn-white {
    min-height: 44px; box-sizing: border-box;
}

/* ── Cartes ───────────────────────────────────────────────────────────
   Conteneur générique (fond papier, filet, coin arrondi) — même
   vocabulaire visuel que .ll-feature-card (almanach.css) mais utilisable
   hors de .liberta-home. */
.ll-card {
    background: var(--ll-white); border: 1px solid var(--ll-border);
    border-radius: var(--ll-radius, 12px); padding: 20px;
}
.ll-card-title { font-size: 16px; font-weight: 800; color: var(--ll-dark); margin: 0 0 8px; }
.ll-card-text { font-size: 14px; color: var(--ll-muted); line-height: 1.6; margin: 0; }

/* ── Badges ───────────────────────────────────────────────────────────
   Pastille d'état/étiquette — 3 variantes sémantiques neutres/succès/
   attention, plus une base à personnaliser via currentColor. */
.ll-badge {
    display: inline-flex; align-items: center; gap: 5px;
    padding: 4px 12px; border-radius: 100px;
    font-size: 12px; font-weight: 700; line-height: 1.4;
    background: #f1f5f9; color: #475569;
}
.ll-badge-success { background: #f0fdf4; color: #15803d; }
.ll-badge-warning { background: #fffbeb; color: #b45309; }
.ll-badge-info     { background: #eff6ff; color: #1d4ed8; }

/* ── Bandeaux / alertes ───────────────────────────────────────────────
   Message contextuel pleine largeur — variantes info/succès/attention.
   À utiliser à la place d'un style="background:#...;border:1px solid..."
   ponctuel (cf. bannières fiche test, mode privé, etc. déjà en inline). */
.ll-alert {
    display: flex; align-items: flex-start; gap: 10px;
    padding: 14px 18px; border-radius: 10px; border: 1px solid;
    font-size: 13.5px; line-height: 1.55;
}
.ll-alert-info    { background: #f8fafc; border-color: #e2e8f0; color: #475569; }
.ll-alert-success { background: #f0fdf4; border-color: #bbf7d0; color: #166534; }
.ll-alert-warning { background: #fffbeb; border-color: #fde68a; color: #92400e; }

/* ── État vide ────────────────────────────────────────────────────────
   Version publique de .lbd-empty-state (dashboard) — même intention
   (jamais un simple vide silencieux), utilisable hors de l'espace
   membre (ex : recherche boutique/carte sans résultat). */
.ll-empty-state {
    text-align: center; padding: 48px 24px;
    background: var(--ll-white); border: 1.5px dashed var(--ll-border);
    border-radius: var(--ll-radius, 12px);
}
.ll-empty-state-icon { font-size: 38px; margin-bottom: 10px; }
.ll-empty-state-title { font-size: 16px; font-weight: 800; color: var(--ll-dark); margin: 0 0 6px; }
.ll-empty-state-text { font-size: 13.5px; color: var(--ll-muted); margin: 0 0 16px; }

/* ============================================================
   LAYOUT UTILS
   ============================================================ */

.ll-container {
    max-width: var(--ll-max);
    margin: 0 auto;
    padding: 0 24px;
}

.ll-section-header {
    text-align: center;
    margin-bottom: 56px;
}

.ll-section-label {
    display: inline-block;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 1.5px;
    text-transform: uppercase;
    color: var(--ll-green);
    margin-bottom: 12px;
}

.ll-section-header h2 {
    font-size: clamp(28px, 4vw, 44px);
    font-weight: 800;
    color: var(--ll-dark);
    margin: 0 0 16px;
    line-height: 1.15;
    letter-spacing: -0.5px;
}

.ll-section-desc {
    font-size: 17px;
    color: var(--ll-muted);
    max-width: 560px;
    margin: 0 auto;
    line-height: 1.7;
}

/* ============================================================
   BOUTONS
   ============================================================ */

.ll-btn-primary {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 14px 28px;
    background: var(--ll-green);
    color: var(--ll-white) !important;
    border-radius: 8px;
    font-weight: 700;
    font-size: 15px;
    text-decoration: none !important;
    transition: background 0.2s, transform 0.15s;
    border: none;
    cursor: pointer;
}
.ll-btn-primary:hover { background: #15803d; transform: translateY(-1px); }
.ll-btn-primary.ll-btn-lg { padding: 18px 36px; font-size: 17px; border-radius: 10px; }

.ll-btn-outline {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 14px 28px;
    background: transparent;
    color: rgba(255,255,255,0.85) !important;
    border: 1.5px solid rgba(255,255,255,0.3);
    border-radius: 8px;
    font-weight: 600;
    font-size: 15px;
    text-decoration: none !important;
    transition: all 0.2s;
}
.ll-btn-outline:hover { border-color: rgba(255,255,255,0.7); color: var(--ll-white) !important; }

.ll-btn-outline-dark {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 13px 24px;
    background: transparent;
    color: var(--ll-dark) !important;
    border: 1.5px solid var(--ll-border);
    border-radius: 8px;
    font-weight: 600;
    font-size: 14px;
    text-decoration: none !important;
    transition: all 0.2s;
}
.ll-btn-outline-dark:hover { border-color: var(--ll-green); color: var(--ll-green) !important; }

.ll-btn-white {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 16px 32px;
    background: var(--ll-white);
    color: var(--ll-dark) !important;
    border-radius: 8px;
    font-weight: 700;
    font-size: 16px;
    text-decoration: none !important;
    transition: all 0.2s;
    border: none;
}
.ll-btn-white:hover { background: #f0fdf4; transform: translateY(-2px); }
.ll-btn-white.ll-btn-lg { padding: 18px 40px; font-size: 17px; }

/* ============================================================
   FULL-BLEED — sections à fond plein qui doivent aller bord à bord,
   même à l'intérieur du .ast-container padded d'Astra (padding non
   nul jusqu'en mobile : --ast-container-default-xs-padding). Sans ce
   correctif, le fond crème global (body{background:var(--ll-cream)})
   apparaît en liseré des deux côtés sur mobile. Ne s'applique qu'aux
   sections réellement pleine largeur (pas aux cartes arrondies comme
   .ll-launch-panel/.ll-suspend-panel/.ll-entraide-panel, qui ont une
   marge intentionnelle par design).
   ============================================================ */
.ll-hero,
.ll-colibri,
.ll-entraide-hero,
.ll-entraide-network {
    width: 100vw;
    position: relative;
    left: 50%;
    right: 50%;
    margin-left: -50vw;
    margin-right: -50vw;
}

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

.ll-hero {
    background: linear-gradient(160deg, var(--ll-dark) 0%, #2d4a1e 55%, var(--ll-dark) 100%);
    padding: 100px 24px 80px;
    text-align: center;
    position: relative;
    overflow: hidden;
}

.ll-hero::before {
    content: '';
    position: absolute;
    top: -200px; left: 50%;
    transform: translateX(-50%);
    width: 800px; height: 600px;
    background: radial-gradient(ellipse, rgba(201,151,58,0.12) 0%, transparent 70%);
    pointer-events: none;
}

.ll-hero-inner {
    position: relative;
    z-index: 2;
    max-width: 780px;
    margin: 0 auto;
}

.ll-hero-2col {
    max-width: var(--ll-max);
    display: grid;
    grid-template-columns: 1.05fr 1fr;
    gap: 44px;
}
.ll-hero-text { text-align: left; }
.ll-hero-text .ll-hero-sub { margin: 0 0 36px; }
.ll-hero-text .ll-hero-actions { justify-content: flex-start; margin-bottom: 0; }

@media (max-width: 900px) {
    .ll-hero-2col { grid-template-columns: 1fr; gap: 32px; }
    .ll-hero-text { text-align: center; }
    .ll-hero-text .ll-hero-sub { margin: 0 auto 32px; }
    .ll-hero-text .ll-hero-actions { justify-content: center; }
    /* Sur mobile, la grille 2 colonnes s'empile — la carte passait après tout le texte
       (badge/titre/sous-titre/persona/CTA), donc hors du premier écran. Remontée en
       tête de pile (demande utilisateur 22/07) : c'est le repère le plus concret et le
       plus immédiat pour quelqu'un qui découvre le site. */
    .ll-hero-map-link { order: -1; }
}

.ll-hero-badge {
    display: inline-block;
    background: rgba(201,151,58,0.15);
    border: 1px solid rgba(201,151,58,0.4);
    color: #e4b96a;
    border-radius: 100px;
    padding: 6px 18px;
    font-size: 13px;
    font-weight: 600;
    margin-bottom: 32px;
    letter-spacing: 0.2px;
}

.ll-hero-title {
    font-size: clamp(40px, 6vw, 72px) !important;
    font-weight: 900 !important;
    line-height: 1.08 !important;
    color: var(--ll-white) !important;
    margin: 0 0 24px !important;
    letter-spacing: -1.5px;
}

.ll-hero-em {
    color: var(--ll-green-l);
}

.ll-hero-sub {
    font-size: clamp(16px, 2vw, 19px);
    color: rgba(255,255,255,0.72);
    max-width: 580px;
    margin: 0 auto 40px;
    line-height: 1.7;
}

/* Sélecteur persona du hero — accroche immédiate "Je suis...", saute vers l'onglet "Pour qui" correspondant.
   Boutons volontairement très visibles (bordure claire, fond distinct au survol/focus) — jamais un lien discret. */
.ll-hero-persona {
    margin: 0 0 28px;
}
.ll-hero-text .ll-hero-persona { text-align: left; }
.ll-hero-persona-label {
    display: block;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 0.3px;
    color: rgba(255,255,255,0.8);
    margin-bottom: 10px;
    text-transform: uppercase;
}
.ll-hero-persona-label::before { content: '👉 '; }
.ll-hero-persona-btns {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
}
.ll-hero-text .ll-hero-persona-btns { justify-content: flex-start; }
.ll-hero-persona-btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 12px 18px;
    background: var(--ll-white);
    border: 2px solid var(--ll-white);
    border-radius: 10px;
    color: var(--ll-dark);
    font-family: 'Fraunces', serif;
    font-weight: 700;
    font-size: 14px;
    cursor: pointer;
    box-shadow: 0 3px 0 rgba(0,0,0,.12), 0 4px 10px -4px rgba(0,0,0,.35);
    transition: background .2s ease, color .2s ease, border-color .2s ease, transform .2s ease, box-shadow .2s ease;
}
.ll-hero-persona-btn::after {
    content: '\203A';
    font-size: 16px;
    font-weight: 900;
    line-height: 1;
    color: var(--ll-green);
}
.ll-hero-persona-btn:hover,
.ll-hero-persona-btn:focus-visible {
    background: var(--ll-gold-l, #d8a847);
    border-color: var(--ll-gold-l, #d8a847);
    color: var(--ll-dark);
    transform: translateY(-2px);
    box-shadow: 0 5px 0 rgba(0,0,0,.18), 0 8px 14px -4px rgba(0,0,0,.4);
    outline: none;
}
.ll-hero-persona-btn:active {
    transform: translateY(1px);
    box-shadow: 0 1px 0 #b8863f inset;
}
.ll-hero-persona-btn.is-active {
    background: var(--ll-gold-l, #d8a847);
    border-color: var(--ll-gold-l, #d8a847);
    color: var(--ll-dark);
}
@media (max-width: 900px) {
    .ll-hero-text .ll-hero-persona { text-align: center; }
    .ll-hero-text .ll-hero-persona-btns { justify-content: center; }
}

/* Mini-panneau persona du hero (ajout additif 22/07, Phase 6 du plan "SSI publique") —
   révélation inline au clic sur un bouton persona, réutilise les données/CTA existants
   de la section "Pour qui", ne remplace/supprime rien. */
.ll-hero-persona-reveal { margin-top: 14px; }
.ll-hero-persona-card {
    background: var(--ll-cream, #fbf7ec);
    border: 2px solid var(--ll-gold-l, #d8a847);
    border-radius: 14px;
    padding: 18px 20px;
    max-width: 420px;
    animation: llPersonaCardIn .25s ease;
}
.ll-hero-text .ll-hero-persona-card { text-align: left; }
@keyframes llPersonaCardIn {
    from { opacity: 0; transform: translateY(-6px); }
    to   { opacity: 1; transform: translateY(0); }
}
.ll-hero-persona-card-icon { font-size: 22px; line-height: 1; margin-bottom: 6px; }
.ll-hero-persona-card-icon svg { width: 22px; height: 22px; }
.ll-hero-persona-card-h {
    font-family: 'Fraunces', serif;
    font-size: 18px;
    margin: 0 0 4px;
    color: var(--ll-dark);
}
.ll-hero-persona-card-tag {
    font-size: 14px;
    color: var(--ll-dark);
    opacity: .8;
    margin: 0 0 10px;
}
.ll-hero-persona-card-items { list-style: none; margin: 0 0 14px; padding: 0; }
.ll-hero-persona-card-items li {
    font-size: 13.5px;
    color: var(--ll-dark);
    padding: 4px 0;
}
.ll-hero-persona-card-actions {
    display: flex;
    align-items: center;
    gap: 14px;
    flex-wrap: wrap;
}
.ll-btn-primary.ll-btn-sm { padding: 10px 18px; font-size: 13px; }
.ll-hero-persona-card-more {
    background: none;
    border: none;
    padding: 10px 0;
    color: var(--ll-green, #1f5135);
    font-weight: 700;
    font-size: 13px;
    cursor: pointer;
    text-decoration: underline;
    min-height: 44px;
}
@media (max-width: 900px) {
    .ll-hero-persona-card { max-width: 100%; text-align: center; }
    .ll-hero-persona-card-actions { justify-content: center; }
}

.ll-hero-actions {
    display: flex;
    gap: 12px;
    justify-content: center;
    flex-wrap: wrap;
    margin-bottom: 36px;
}

.ll-hero-proof {
    display: flex;
    gap: 24px;
    justify-content: center;
    flex-wrap: wrap;
}

.ll-hero-proof span {
    font-size: 13px;
    color: rgba(255,255,255,0.45);
    font-weight: 500;
}

/* Navigation rapide (ancres) — sous le hero, pour sauter directement à une section
   sans tout parcourir au scroll. Ajout Phase 5 (petites touches), 19/07. */
.ll-quicknav {
    display: flex;
    gap: 10px;
    justify-content: center;
    flex-wrap: wrap;
    margin-top: 28px;
    padding-top: 20px;
    border-top: 1px solid rgba(255,255,255,0.12);
}

.ll-quicknav a {
    display: inline-flex;
    align-items: center;
    min-height: 40px;
    padding: 8px 16px;
    border-radius: 20px;
    background: rgba(255,255,255,0.08);
    color: var(--ll-white);
    font-size: 13px;
    font-weight: 600;
    text-decoration: none;
    transition: background .15s;
}

.ll-quicknav a:hover,
.ll-quicknav a:focus-visible {
    background: rgba(255,255,255,0.18);
    outline: 2px solid rgba(255,255,255,0.5);
    outline-offset: 1px;
}

/* ============================================================
   MINI-CARTE (aperçu réel, décorative + lien vers /carte/) — colonne droite du hero
   ============================================================ */

.ll-hero-map-link {
    position: relative;
    display: block;
    border-radius: var(--ll-radius);
    overflow: hidden;
    border: 1px solid var(--ll-border);
    box-shadow: 0 20px 50px -20px rgba(0,0,0,.55);
    min-height: 340px;
    height: 100%;
}

.ll-hero-map {
    height: 100%;
    min-height: 340px;
    width: 100%;
    background: var(--ll-light);
}
.ll-hero-map .leaflet-container { pointer-events: none; cursor: pointer; }

.ll-hero-map-badge {
    position: absolute;
    right: 16px;
    bottom: 16px;
    z-index: 500;
    background: var(--ll-dark);
    color: var(--ll-white);
    font-size: 13px;
    font-weight: 700;
    padding: 9px 16px;
    border-radius: 30px;
    box-shadow: 0 6px 18px rgba(0,0,0,.25);
    transition: transform .2s ease, background .2s ease;
}
.ll-hero-map-link:hover .ll-hero-map-badge { transform: translateY(-2px); background: var(--ll-green); }

@media (max-width: 900px) {
    .ll-hero-map-link,
    .ll-hero-map { min-height: 260px; }
}
@media (max-width: 640px) {
    .ll-hero-map-link,
    .ll-hero-map { min-height: 200px; }
    .ll-hero-map-badge { right: 10px; bottom: 10px; font-size: 12px; padding: 8px 13px; }
}

/* ============================================================
   FONCTIONNALITÉS — bloc à onglets (Carte/Co-livraison/Billetterie/Paiements)
   ============================================================ */

.ll-functions { background: var(--ll-light); padding: 64px 24px; }

.ll-tabs-hint {
    text-align: center;
    font-size: 13.5px;
    color: var(--ll-muted);
    margin: 0 0 14px;
}
.ll-tabs-hint::before { content: '👉 '; }

.ll-tabs {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
    justify-content: center;
    margin-bottom: 32px;
}
.ll-tab {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 13px 22px;
    border-radius: 10px;
    border: 2px solid var(--ll-border);
    background: var(--ll-white);
    color: var(--ll-text);
    font-size: 14.5px;
    font-weight: 700;
    cursor: pointer;
    box-shadow: 0 3px 0 var(--ll-border), 0 4px 10px -4px rgba(0,0,0,.2);
    transition: background .2s ease, color .2s ease, border-color .2s ease, transform .2s ease, box-shadow .2s ease;
}
.ll-tab::after {
    content: '\203A';
    font-size: 17px;
    font-weight: 900;
    line-height: 1;
    transition: transform .2s ease;
}
.ll-tab:hover { border-color: var(--ll-green); transform: translateY(-2px); box-shadow: 0 5px 0 var(--ll-green), 0 8px 14px -4px rgba(0,0,0,.25); }
.ll-tab.active {
    background: var(--ll-dark); color: var(--ll-white); border-color: var(--ll-dark);
    box-shadow: 0 2px 0 rgba(0,0,0,.3) inset;
    transform: translateY(1px);
}
.ll-tab.active::after { transform: rotate(90deg); }

@media (max-width: 640px) {
    .ll-tabs { flex-direction: column; gap: 10px; }
    .ll-tab { width: 100%; justify-content: space-between; min-height: 48px; padding: 13px 20px; }
}

.ll-tab-panel { display: none; }
.ll-tab-panel.active { display: block; }
.ll-tab-panel[hidden] { display: none; }

.ll-tab-panel-solo {
    max-width: 640px;
    margin: 0 auto;
}
.ll-tab-panel-h { font-size: clamp(24px,3vw,32px); font-weight: 900; color: var(--ll-dark); margin: 0 0 14px; line-height: 1.2; }
.ll-tab-panel-p { font-size: 16px; color: var(--ll-muted); margin: 0 0 28px; line-height: 1.6; }

.ll-tab-panel-dark {
    background: linear-gradient(135deg, var(--ll-dark) 0%, #2a4a1a 50%, var(--ll-dark) 100%);
    border-radius: var(--ll-radius);
    padding: 40px clamp(20px,4vw,48px);
}

@media (max-width: 768px) and (min-width: 641px) {
    .ll-tab { padding: 11px 18px; font-size: 13.5px; }
}

/* ── Accordéons (Petites annonces fusionnées / Ğ1 en 3 clics fusionné) ──── */
.ll-accordion { margin-top: 14px; }
.ll-accordion-toggle {
    cursor: pointer;
    list-style: none;
    font-size: 14px;
    font-weight: 700;
    color: var(--ll-green);
    background: var(--ll-white);
    border: 1px solid var(--ll-border);
    border-radius: 30px;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 9px 18px;
    box-shadow: 0 2px 6px -3px rgba(0,0,0,.2);
    transition: border-color .2s ease, transform .2s ease;
}
.ll-accordion-toggle:hover { border-color: var(--ll-green); transform: translateY(-1px); }
.ll-accordion-toggle::-webkit-details-marker { display: none; }
.ll-accordion-chevron { transition: transform .2s ease; }
.ll-accordion[open] .ll-accordion-chevron { transform: rotate(180deg); }
.ll-accordion-body { padding-top: 18px; }

.ll-payments .ll-accordion,
.ll-tab-panel-solo > .ll-accordion {
    border-top: 1px solid var(--ll-border);
    margin-top: 40px;
    padding-top: 20px;
    text-align: center;
}
.ll-tab-panel-solo > .ll-accordion .ll-accordion-toggle { justify-content: center; width: 100%; }
.ll-tab-panel-solo > .ll-accordion .ll-accordion-body .ll-g1x-grid { text-align: left; margin-top: 10px; }

.ll-accordion-card { text-align: left; }
.ll-accordion-card .ll-accordion-body { text-align: center; }
.ll-annonces-merged-h { font-size: 16px; font-weight: 700; color: var(--ll-dark); margin: 0 0 8px; }

/* ============================================================
   STATS
   ============================================================ */

.ll-stats {
    background: var(--ll-cream);
    border-bottom: 1px solid var(--ll-border);
}

.ll-stats-grid {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
}

.ll-stat {
    flex: 1;
    text-align: center;
    padding: 40px 24px;
}
.ll-stat-link:hover { background: rgba(22,163,74,.06); border-radius: 12px; }
.ll-stat-link:hover .ll-stat-num { color: #16a34a; }

.ll-stat-num {
    font-size: clamp(32px, 4vw, 52px);
    font-weight: 900;
    color: var(--ll-dark);
    letter-spacing: -1px;
    line-height: 1;
    margin-bottom: 8px;
}

.ll-stat-label {
    font-size: 14px;
    color: var(--ll-muted);
    font-weight: 500;
}

.ll-stat-sep {
    width: 1px;
    height: 60px;
    background: var(--ll-border);
    flex-shrink: 0;
}

.ll-band-row {
    display: flex;
    align-items: center;
    gap: 16px;
    flex-wrap: wrap;
    justify-content: center;
    padding: 16px 0 0;
    margin-top: 8px;
    border-top: 1px solid var(--ll-border);
}

/* ============================================================
   FEATURES
   ============================================================ */

.ll-features {
    background: var(--ll-light);
    padding: 96px 24px;
}

.ll-features-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 20px;
}

.ll-feature-card {
    background: var(--ll-white);
    border: 1px solid var(--ll-border);
    border-radius: var(--ll-radius);
    padding: 32px 24px;
    transition: box-shadow 0.2s, transform 0.2s;
}

.ll-feature-card:hover {
    box-shadow: 0 8px 32px rgba(0,0,0,0.08);
    transform: translateY(-2px);
}

.ll-feature-icon {
    font-size: 32px;
    margin-bottom: 16px;
    display: block;
}

.ll-feature-card h3 {
    font-size: 18px;
    font-weight: 800;
    color: var(--ll-dark);
    margin: 0 0 10px;
    line-height: 1.3;
}

.ll-feature-card p {
    font-size: 14px;
    color: var(--ll-muted);
    margin: 0 0 20px;
    line-height: 1.6;
}

.ll-feature-link {
    font-size: 13px;
    font-weight: 700;
    color: var(--ll-green) !important;
    text-decoration: none !important;
    display: inline-flex;
    align-items: center;
    gap: 4px;
}
.ll-feature-link:hover { text-decoration: underline !important; }

/* ============================================================
   FOR WHO
   ============================================================ */

.ll-forwho {
    background: var(--ll-white);
    padding: 64px 24px;
}

.ll-forwho-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 28px;
}

.ll-forwho-card {
    border-radius: 16px;
    padding: 40px 36px;
    border: 1px solid var(--ll-border);
}

.ll-forwho-producer {
    background: #eef6ee;
    border-color: #b7d9c3;
}

.ll-forwho-consumer {
    background: var(--ll-light);
}

.ll-forwho-icon {
    font-size: 40px;
    margin-bottom: 16px;
    display: block;
}

.ll-forwho-card h3,
.ll-forwho-panel h3 {
    font-size: 24px;
    font-weight: 800;
    color: var(--ll-dark);
    margin: 0 0 8px;
}

.ll-forwho-tagline {
    font-size: 15px;
    color: var(--ll-muted);
    font-style: italic;
    margin: 0 0 24px;
}

.ll-forwho-list {
    list-style: none;
    margin: 0 0 28px;
    padding: 0;
}

.ll-forwho-list li {
    font-size: 14px;
    color: var(--ll-text);
    padding: 6px 0;
    border-bottom: 1px solid rgba(0,0,0,0.05);
    line-height: 1.5;
}

.ll-forwho-list li:last-child { border-bottom: none; }

.ll-forwho-note {
    font-size: 12px;
    color: var(--ll-muted);
    margin-top: 12px;
    font-style: italic;
    text-align: center;
}

/* ============================================================
   PANIER COLLECTIF — Section différenciateur principal
   ============================================================ */

.ll-colibri {
    background: linear-gradient(135deg, var(--ll-dark) 0%, #2a4a1a 50%, var(--ll-dark) 100%);
    padding: 96px 24px;
    position: relative;
    overflow: hidden;
}

.ll-colibri::before {
    content: '';
    position: absolute;
    top: -40%;
    left: -10%;
    width: 500px;
    height: 500px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(82,183,136,0.18) 0%, transparent 70%);
    pointer-events: none;
}

.ll-colibri::after {
    content: '';
    position: absolute;
    bottom: -30%;
    right: -5%;
    width: 400px;
    height: 400px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(139,94,60,0.18) 0%, transparent 70%);
    pointer-events: none;
}

.ll-colibri .ll-section-label { color: #74c69d; }
.ll-colibri .ll-section-header h2 { color: var(--ll-white); }
.ll-colibri .ll-section-desc { color: rgba(255,255,255,0.75); }

.ll-colibri-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(82,183,136,0.18);
    border: 1px solid rgba(82,183,136,0.45);
    color: #74c69d;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 1px;
    text-transform: uppercase;
    padding: 6px 14px;
    border-radius: 100px;
    margin-bottom: 20px;
}

.ll-colibri-layout {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 60px;
    align-items: center;
    max-width: 1120px;
    margin: 0 auto;
    position: relative;
    z-index: 1;
}

.ll-colibri-visual {
    position: relative;
}

/* Schéma visuel : boutiques → panier commun */
.ll-shops-diagram {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.ll-shop-node {
    display: flex;
    align-items: center;
    gap: 14px;
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.1);
    border-radius: 12px;
    padding: 14px 18px;
    transition: border-color 0.2s;
}

.ll-shop-node:hover { border-color: rgba(82,183,136,0.45); }

.ll-shop-icon {
    font-size: 26px;
    width: 44px;
    height: 44px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 10px;
    flex-shrink: 0;
}

.ll-shop-node.node-1 .ll-shop-icon { background: rgba(45,106,79,0.25); }
.ll-shop-node.node-2 .ll-shop-icon { background: rgba(139,94,60,0.25); }
.ll-shop-node.node-3 .ll-shop-icon { background: rgba(82,183,136,0.2); }

.ll-shop-info { flex: 1; }
.ll-shop-name { font-size: 14px; font-weight: 700; color: var(--ll-white); }
.ll-shop-products { font-size: 12px; color: rgba(255,255,255,0.5); margin-top: 2px; }

.ll-shop-badge {
    font-size: 11px;
    font-weight: 700;
    padding: 3px 10px;
    border-radius: 20px;
    background: rgba(82,183,136,0.18);
    color: #74c69d;
    white-space: nowrap;
}

.ll-arrow-down {
    text-align: center;
    font-size: 20px;
    color: rgba(82,183,136,0.7);
    margin: 4px 0;
    animation: bounce-down 1.5s infinite;
}

@keyframes bounce-down {
    0%, 100% { transform: translateY(0); }
    50%       { transform: translateY(4px); }
}

.ll-basket-node {
    background: linear-gradient(135deg, rgba(45,106,79,0.28), rgba(45,106,79,0.12));
    border: 2px solid rgba(82,183,136,0.55);
    border-radius: 16px;
    padding: 18px 20px;
    display: flex;
    align-items: center;
    gap: 14px;
    margin-top: 4px;
}

.ll-basket-icon { font-size: 32px; }
.ll-basket-label { font-size: 15px; font-weight: 800; color: var(--ll-white); }
.ll-basket-sub { font-size: 12px; color: rgba(255,255,255,0.6); margin-top: 3px; }
.ll-basket-price { margin-left: auto; font-size: 20px; font-weight: 800; color: #74c69d; }

/* Points clés à droite */
.ll-colibri-points { display: flex; flex-direction: column; gap: 28px; }

.ll-colibri-point {
    display: flex;
    gap: 16px;
    align-items: flex-start;
}

.ll-colibri-point-icon {
    width: 48px;
    height: 48px;
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 22px;
    flex-shrink: 0;
    background: rgba(255,255,255,0.07);
}

.ll-colibri-point-text h4 {
    font-size: 16px;
    font-weight: 800;
    color: var(--ll-white);
    margin: 0 0 4px;
}

.ll-colibri-point-text p {
    font-size: 14px;
    color: rgba(255,255,255,0.65);
    margin: 0;
    line-height: 1.5;
}

.ll-colibri-cta {
    margin-top: 36px;
    display: flex;
    gap: 12px;
    flex-wrap: wrap;
}

.ll-unique-tag {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    color: rgba(255,255,255,0.45);
    margin-top: 16px;
}

.ll-unique-tag::before {
    content: '★';
    color: #fbbf24;
}

@media (max-width: 900px) {
    .ll-colibri-layout { grid-template-columns: 1fr; gap: 40px; }
    .ll-colibri-visual { order: 2; }
    .ll-colibri-points { order: 1; }
}

/* ============================================================
   PAYMENTS
   ============================================================ */

.ll-payments {
    background: var(--ll-dark);
    padding: 80px 24px;
}

.ll-payments .ll-section-header h2 {
    color: var(--ll-white);
}

.ll-payments-grid {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: stretch;
    gap: 16px;
}

.ll-payment-item {
    flex: 1 1 100px;
    max-width: 140px;
    background: var(--ll-white);
    border: 1px solid var(--ll-border);
    border-radius: 12px;
    padding: 24px 16px;
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
    box-shadow: 0 2px 8px -4px rgba(0,0,0,.15);
    transition: background 0.2s, border-color .2s, transform .2s;
}

.ll-payment-item:hover {
    border-color: var(--ll-green);
    transform: translateY(-2px);
}

.ll-payment-featured {
    background: #f0fdf4;
    border-color: #86caa2;
}

.ll-payment-icon {
    font-size: 28px;
    margin-bottom: 10px;
    display: block;
}

.ll-payment-name {
    font-size: 15px;
    font-weight: 700;
    color: var(--ll-dark);
    margin-bottom: 4px;
}

.ll-payment-desc {
    font-size: 12px;
    color: var(--ll-muted);
}

.ll-payment-g1-link { margin-top: 10px; }
.ll-payment-g1-link .lbt-g1-help-link {
    display: inline-block;
    font-size: 11.5px;
    font-weight: 700;
    color: var(--ll-green);
    background: #f0fdf4;
    border: 1px solid #86caa2;
    border-radius: 20px;
    padding: 4px 12px;
    text-decoration: none;
}
.ll-payment-g1-link .lbt-g1-help-link:hover { background: var(--ll-green); border-color: var(--ll-green); color: var(--ll-white); }

/* ============================================================
   WHY DIFFERENT
   ============================================================ */

.ll-why {
    background: var(--ll-light);
    padding: 64px 24px;
}

.ll-whysteps-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 48px;
    align-items: start;
}
.ll-whysteps-header { text-align: left; margin-bottom: 28px; }
.ll-whysteps-header h2 { font-size: clamp(22px,2.6vw,30px); }
@media (max-width: 900px) {
    .ll-whysteps-grid { grid-template-columns: 1fr; gap: 56px; }
}

.ll-why-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 2px;
    background: var(--ll-border);
    border: 1px solid var(--ll-border);
    border-radius: 16px;
    overflow: hidden;
}

.ll-why-item {
    background: var(--ll-white);
    padding: 32px 28px;
    transition: background 0.15s;
}

.ll-why-item:hover { background: #f7f1e6; }

.ll-why-num {
    font-size: 12px;
    font-weight: 800;
    color: var(--ll-green);
    letter-spacing: 1px;
    margin-bottom: 12px;
}

.ll-why-item h4 {
    font-size: 17px;
    font-weight: 800;
    color: var(--ll-dark);
    margin: 0 0 10px;
    line-height: 1.3;
}

.ll-why-item p {
    font-size: 14px;
    color: var(--ll-muted);
    margin: 0;
    line-height: 1.6;
}

/* ============================================================
   STEPS
   ============================================================ */

.ll-steps {
    background: var(--ll-white);
    padding: 96px 24px;
}

.ll-steps-grid {
    display: flex;
    align-items: flex-start;
    gap: 16px;
    max-width: 900px;
    margin: 0 auto 48px;
}

.ll-steps-grid-vertical {
    flex-direction: column;
    max-width: 420px;
    margin: 0 0 28px;
}
.ll-steps-grid-vertical .ll-step { width: 100%; }
.ll-steps-grid-vertical .ll-step-arrow { margin: 0 auto; }

.ll-step {
    flex: 1;
    text-align: center;
    padding: 32px 20px;
    background: var(--ll-light);
    border: 1px solid var(--ll-border);
    border-radius: var(--ll-radius);
}

.ll-step-num {
    width: 40px;
    height: 40px;
    background: var(--ll-green);
    color: var(--ll-white);
    border-radius: 50%;
    font-weight: 900;
    font-size: 16px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 0 auto 16px;
}

.ll-step h4 {
    font-size: 17px;
    font-weight: 800;
    color: var(--ll-dark);
    margin: 0 0 10px;
}

.ll-step p {
    font-size: 14px;
    color: var(--ll-muted);
    margin: 0;
    line-height: 1.6;
}

.ll-step-arrow {
    font-size: 22px;
    color: var(--ll-border);
    flex-shrink: 0;
    margin-top: 50px;
}

.ll-steps-cta { text-align: center; }

/* ============================================================
   NEWS
   ============================================================ */

.ll-news-section {
    background: var(--ll-light);
    padding: 80px 24px;
}

/* News cards (du shortcode [liberta_actualites]) */
.lh-news-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 24px;
    margin-bottom: 40px;
}

.lh-news-card {
    background: var(--ll-white);
    border-radius: var(--ll-radius);
    overflow: hidden;
    border: 1px solid var(--ll-border);
    transition: box-shadow 0.2s;
}

.lh-news-card:hover { box-shadow: 0 8px 32px rgba(0,0,0,0.08); }

.lh-news-img-wrap {
    display: block;
    height: 180px;
    overflow: hidden;
    background: var(--ll-light);
}

.lh-news-img-wrap img {
    width: 100%; height: 100%;
    object-fit: cover;
    transition: transform 0.4s;
}

.lh-news-card:hover .lh-news-img-wrap img { transform: scale(1.04); }

.lh-news-img-placeholder {
    display: flex !important;
    align-items: center;
    justify-content: center;
    font-size: 40px;
    background: var(--ll-light);
    text-decoration: none;
}

.lh-news-body { padding: 20px 22px 22px; }

.lh-news-cat {
    display: inline-block;
    background: var(--ll-light);
    color: var(--ll-green);
    border-radius: 6px;
    padding: 3px 10px;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 10px;
}

.lh-news-title {
    font-size: 17px;
    font-weight: 800;
    color: var(--ll-dark);
    margin: 0 0 10px;
    line-height: 1.3;
}

.lh-news-title a { color: inherit !important; text-decoration: none !important; }
.lh-news-title a:hover { color: var(--ll-green) !important; }

.lh-news-excerpt { font-size: 14px; color: var(--ll-muted); margin: 0 0 16px; line-height: 1.6; }

.lh-news-meta {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 12px;
    color: #8a7e68;
    border-top: 1px solid var(--ll-border);
    padding-top: 14px;
}

.lh-news-read { color: var(--ll-green) !important; font-weight: 700; text-decoration: none !important; font-size: 13px; }
.lh-news-footer { text-align: center; }

/* ============================================================
   DEMO BOUTIQUE
   ============================================================ */

.ll-demo {
    background: var(--ll-white);
    padding: 80px 24px;
}

.ll-demo-header {
    text-align: center;
    margin-bottom: 48px;
}

.ll-demo-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 20px;
}

.ll-demo-card {
    border: 1px solid var(--ll-border);
    border-radius: var(--ll-radius);
    overflow: hidden;
    transition: box-shadow 0.2s, transform 0.2s;
}

.ll-demo-card:hover {
    box-shadow: 0 8px 24px rgba(0,0,0,0.09);
    transform: translateY(-2px);
}

.ll-demo-img {
    height: 160px;
    overflow: hidden;
    background: var(--ll-light);
}

.ll-demo-img img {
    width: 100%; height: 100%;
    object-fit: cover;
    transition: transform 0.4s;
}

.ll-demo-card:hover .ll-demo-img img { transform: scale(1.04); }

.ll-demo-info { padding: 16px; }

.ll-demo-info h4 {
    font-size: 14px;
    font-weight: 700;
    color: var(--ll-dark);
    margin: 0 0 8px;
    line-height: 1.3;
}

.ll-demo-price {
    display: flex;
    align-items: baseline;
    gap: 8px;
    margin-bottom: 12px;
}

.ll-demo-price strong { font-size: 18px; font-weight: 900; color: var(--ll-dark); }
.ll-demo-price span   { font-size: 12px; color: var(--ll-muted); }

.ll-demo-btn {
    display: block;
    text-align: center;
    padding: 8px 12px;
    background: var(--ll-light);
    color: var(--ll-dark) !important;
    border-radius: 6px;
    font-size: 13px;
    font-weight: 600;
    text-decoration: none !important;
    transition: background 0.15s;
    border: 1px solid var(--ll-border);
}
.ll-demo-btn:hover { background: #eef6ee; border-color: #b7d9c3; color: var(--ll-green) !important; }

/* ============================================================
   CTA FINAL
   ============================================================ */

.ll-cta {
    background: var(--ll-dark);
    padding: 100px 24px;
    text-align: center;
    position: relative;
    overflow: hidden;
}

.ll-cta::before {
    content: '';
    position: absolute;
    bottom: -100px; left: 50%;
    transform: translateX(-50%);
    width: 600px; height: 400px;
    background: radial-gradient(ellipse, rgba(201,151,58,0.14) 0%, transparent 70%);
    pointer-events: none;
}

.ll-cta-inner { position: relative; z-index: 2; max-width: 620px; margin: 0 auto; }

.ll-cta-inner h2 {
    font-size: clamp(30px, 4vw, 48px);
    font-weight: 900;
    color: var(--ll-white);
    margin: 0 0 16px;
    letter-spacing: -0.5px;
    line-height: 1.15;
}

.ll-cta-desc {
    font-size: 17px;
    color: rgba(255,255,255,0.5);
    margin: 0 0 36px;
    line-height: 1.7;
}

.ll-cta-login {
    margin-top: 20px;
    font-size: 14px;
    color: rgba(255,255,255,0.35);
}

.ll-cta-login a { color: rgba(255,255,255,0.6) !important; text-decoration: underline; }

/* ============================================================
   MAP & PLUGIN FILTERS (global)
   ============================================================ */

#liberta-filters button.liberta-filter {
    color: #2c3e50 !important;
    background-color: var(--ll-white) !important;
}
#liberta-filters button.liberta-filter:hover,
#liberta-filters button.liberta-filter.active {
    color: var(--ll-white) !important;
    background-color: #2ecc71 !important;
}

/* ============================================================
   Ğ1 PRICE ON PRODUCTS (global)
   ============================================================ */

.liberta-g1-price {
    background: #f0fdf4;
    border: 1px solid #bbf7d0;
    border-radius: 8px;
    padding: 10px 16px;
    font-size: 15px;
    color: #15803d;
    margin: 8px 0 16px;
    display: flex;
    align-items: center;
    gap: 8px;
}

.liberta-g1-loop-price {
    display: block;
    font-size: 13px;
    color: var(--ll-green);
    font-weight: 700;
    margin-top: 4px;
}

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

@media (max-width: 1024px) {
    .ll-features-grid { grid-template-columns: repeat(2, 1fr); }
    .ll-why-grid { grid-template-columns: repeat(2, 1fr); }
    .ll-demo-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 768px) {
    .ll-stats-grid { flex-direction: column; gap: 0; }
    .ll-stat-sep { width: 60px; height: 1px; margin: 0 auto; }
    .ll-features-grid { grid-template-columns: 1fr; }
    .ll-forwho-grid { grid-template-columns: 1fr; }
    .ll-why-grid { grid-template-columns: 1fr; gap: 1px; }
    .ll-steps-grid { flex-direction: column; }
    .ll-step-arrow { transform: rotate(90deg); margin: 0 auto; }
    .ll-demo-grid { grid-template-columns: repeat(2, 1fr); }
    .lh-news-grid { grid-template-columns: 1fr; }
    .ll-hero-title { letter-spacing: -1px; }
    .ll-payments-grid { gap: 10px; }
    .ll-payment-item { min-width: 90px; padding: 18px 14px; }
}

@media (max-width: 480px) {
    .ll-hero-actions    { flex-direction: column; align-items: center; }
    .ll-hero-proof      { flex-direction: column; gap: 8px; }
    .ll-demo-grid       { grid-template-columns: 1fr; }
    .ll-forwho-card     { padding: 28px 20px; }

    /* Très petits écrans : éviter tout débordement */
    .ll-cats-grid       { grid-template-columns: repeat(2, 1fr); gap: 8px; }
    .ll-section-header h2 { font-size: clamp(20px, 5vw, 28px) !important; }
    .ll-hero-title      { font-size: clamp(32px, 8vw, 48px) !important; }
    .ll-stat-num        { font-size: 28px; }
    .ll-why-grid        { grid-template-columns: 1fr; }
    .ll-forwho-grid     { grid-template-columns: 1fr; }
    .ll-payment-item    { min-width: 70px; padding: 14px 10px; }
    .ll-payment-icon    { font-size: 22px; }
    .ll-payment-name    { font-size: 12px; }

    /* Panier collectif */
    .ll-colibri h2          { font-size: 22px !important; }
    .ll-shop-node           { padding: 10px 12px; }
    .ll-shop-name           { font-size: 13px; }
    .ll-colibri-point       { gap: 12px; }
    .ll-colibri-point-icon  { display: none; }

    /* CTA */
    .ll-btn-primary,
    .ll-btn-outline,
    .ll-btn-white           { padding: 13px 20px; font-size: 14px; width: 100%; box-sizing: border-box; text-align: center; }
}

/* ============================================================
   SITE-WIDE — Cohérence typographie & navigation
   ============================================================ */

/* ====================================================
   HEADER — fond sombre forcé sur TOUTES les pages
   (y compris homepage avec ast-theme-transparent-header)
   ==================================================== */

/* Cibler via ID #masthead pour passer toute spécificité Astra */
#masthead,
#masthead .ast-primary-header-bar,
#masthead .main-header-bar,
.ast-theme-transparent-header #masthead,
.ast-theme-transparent-header .site-header,
.ast-theme-transparent-header .ast-primary-header-bar,
.ast-theme-transparent-header .main-header-bar,
.site-header,
.ast-primary-header-bar,
.main-header-bar {
    background:       var(--ll-dark) !important;
    background-color: var(--ll-dark) !important;
    border-bottom:    1px solid rgba(255,255,255,0.08) !important;
}

/* S'assurer que le header reste au-dessus du hero sur la homepage */
#masthead {
    position: relative !important;
    z-index: 9999 !important;
}

/* Header container — pleine largeur sur toutes les pages pour cohérence (évite le saut de largeur
   du menu en navigant entre homepage/carte et les autres pages) */
#masthead .ast-container,
.site-header .ast-container,
.main-header-bar .ast-container {
    max-width: 100% !important;
    padding-left: 24px !important;
    padding-right: 24px !important;
}

/* Logo et titre site */
#masthead .site-title a,
#masthead .site-title a:hover,
.site-title a,
.site-title a:hover { color: var(--ll-white) !important; }

/* Navigation desktop — liens */
#masthead .main-header-menu .menu-item > a,
#masthead .main-navigation .menu-item > a,
.ast-theme-transparent-header .main-header-menu .menu-item > a,
.ast-theme-transparent-header .main-navigation .menu-item > a,
.main-header-menu .menu-item a,
.main-navigation .menu-item a {
    color: rgba(255,255,255,0.80) !important;
    font-weight: 500 !important;
    font-size: 14px;
}

#masthead .main-header-menu .menu-item > a:hover,
#masthead .main-navigation .menu-item > a:hover,
.main-header-menu .menu-item a:hover,
.main-navigation .menu-item a:hover {
    color: #4ade80 !important;
}

/* Item actif desktop */
#masthead .current-menu-item > a,
.main-header-menu .current-menu-item > a {
    color: #4ade80 !important;
}

/* Sous-menus desktop */
#masthead .main-header-menu .sub-menu,
.main-header-menu .sub-menu {
    background: #2d4a1e !important;
    border: 1px solid rgba(255,255,255,0.08) !important;
}

/* Dernier item du menu (Aide & guides) : sous-menu aligné à droite pour éviter le débordement hors écran */
#masthead .main-header-menu > li:last-child > .sub-menu,
.main-header-menu > li:last-child > .sub-menu {
    right: 0;
    left: auto;
}

#masthead .main-header-menu .sub-menu .menu-item a,
.main-header-menu .sub-menu .menu-item a {
    color: rgba(255,255,255,0.75) !important;
}

/* Icônes + badges du menu principal (v6.82) */
.lbt-menu-ico {
    font-size: 13px;
    margin-right: 2px;
    vertical-align: -1px;
}
.lbt-menu-badge {
    display: inline-flex !important;
    align-items: center;
    align-self: center !important;
    flex: 0 0 auto;
    height: auto !important;
    font-size: 10px;
    line-height: 1.4;
    font-weight: 700;
    letter-spacing: .02em;
    padding: 2px 7px;
    border-radius: 20px;
    vertical-align: middle;
    margin-left: 2px;
}
.lbt-menu-badge.pro         { background: #dcfce7 !important; color: #15803d !important; }
.lbt-menu-badge.particulier { background: #eff6ff !important; color: #1d4ed8 !important; }
/* Astra neutralise le fond des liens mobile (a, a *) : on le réaffirme ci-dessus avec !important */
.main-header-menu .sub-menu .lbt-menu-badge,
.ast-mobile-popup-drawer .lbt-menu-badge {
    font-size: 9px;
    padding: 1px 6px;
}

/* Bouton panier WC dans le header */
#masthead .ast-site-header-cart a,
.ast-site-header-cart a { color: rgba(255,255,255,0.75) !important; }
#masthead .ast-site-header-cart a:hover,
.ast-site-header-cart a:hover { color: #4ade80 !important; }

/* Icône recherche, hamburger, etc. */
#masthead svg path,
#masthead svg rect,
#masthead svg line,
#masthead .ast-icon { stroke: var(--ll-white) !important; fill: rgba(255,255,255,0.8) !important; }

/* ============================================================
   PAGES INTÉRIEURES — cohérence générale
   ============================================================ */

/* Fond page */
.ast-separate-container .entry-content,
.entry-content {
    font-size: 15px;
    line-height: 1.75;
    color: #2d4a1e;
}

/* Titres de page */
.entry-title,
.page-title {
    font-size: clamp(24px, 3vw, 36px) !important;
    font-weight: 800 !important;
    color: var(--ll-dark) !important;
    letter-spacing: -0.3px;
}

/* Page carte — full width */
.lbt-page-carte .entry-content,
.lbt-page-carte .ast-container { padding: 0 !important; max-width: 100% !important; }
/* Masquer le titre "Carte" — remplacé par le header du shortcode */
.lbt-page-carte .entry-header { display: none !important; }
/* Supprimer tout l'espace blanc entre le menu et le header de la carte */
.lbt-page-carte #primary,
.lbt-page-carte .site-main,
.lbt-page-carte .ast-article-single,
.lbt-page-carte .entry-content.clear,
.lbt-page-carte #content { padding-top: 0 !important; margin-top: 0 !important; }
.lbt-page-carte .site-content { padding-top: 0 !important; }

/* Breadcrumb */
.ast-breadcrumbs-wrap,
#ast-breadcrumbs-custom { display: none; }

/* ============================================================
   WOOCOMMERCE — cohérence produits
   ============================================================ */

.woocommerce-loop-product__title {
    font-weight: 700 !important;
    color: var(--ll-dark) !important;
}

.woocommerce .price,
.woocommerce-Price-amount {
    color: var(--ll-green) !important;
    font-weight: 700 !important;
}

.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce #respond input#submit {
    background: var(--ll-green) !important;
    color: var(--ll-white) !important;
    border-radius: 8px !important;
    font-weight: 700 !important;
    transition: background 0.18s !important;
    border: none !important;
}

.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce input.button:hover {
    background: #15803d !important;
    color: var(--ll-white) !important;
}

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

.site-footer,
.ast-small-footer {
    background: var(--ll-dark) !important;
    color: rgba(255,255,255,0.5) !important;
    border-top: 1px solid rgba(255,255,255,0.06) !important;
    font-size: 13px;
}

.site-footer a,
.ast-small-footer a {
    color: rgba(255,255,255,0.6) !important;
}

.site-footer a:hover,
.ast-small-footer a:hover { color: #4ade80 !important; }

/* ============================================================
   MENU MOBILE — couverture exhaustive de toutes les variantes Astra
   ============================================================ */

/* Bouton hamburger — couleur et fond */
#masthead .menu-toggle,
#masthead .ast-mobile-menu-trigger-minimal,
[data-section="section-header-mobile-trigger"] .ast-button-wrap .ast-mobile-menu-trigger-minimal,
[data-section="section-header-mobile-trigger"] .ast-button-wrap .mobile-menu-wrap,
.menu-toggle.main-header-menu-toggle,
.ast-mobile-menu-trigger-minimal,
.ast-mobile-menu-trigger-minimal .mobile-menu-toggle-icon,
.ast-mobile-menu-trigger-minimal .mobile-menu-toggle-icon span {
    color:            var(--ll-white) !important;
    fill:             var(--ll-white) !important;
    background:       transparent !important;
    background-color: transparent !important;
    border:           none !important;
}

/* SVG hamburger */
#masthead svg path,
#masthead svg rect,
#masthead svg line,
.ast-mobile-menu-trigger-minimal svg path,
.ast-mobile-menu-trigger-minimal svg rect,
.ast-mobile-menu-trigger-minimal svg line,
[data-section="section-header-mobile-trigger"] svg path,
[data-section="section-header-mobile-trigger"] svg rect,
[data-section="section-header-mobile-trigger"] svg line {
    stroke: var(--ll-white) !important;
    fill:   var(--ll-white) !important;
}

/* ——— Fond sombre sur le panneau déplié ——— */
#masthead .ast-mobile-header-content,
#masthead .main-header-bar-navigation,
.ast-mobile-header-content,
.ast-mobile-header-wrap .ast-mobile-header-content,
.ast-desktop-header-content,
.ast-mobile-header-wrap .main-header-bar-navigation,
.ast-header-break-point .main-header-bar-navigation,
.ast-header-break-point .main-navigation,
.ast-header-break-point .ast-primary-header-bar,
.ast-mobile-popup-wrapper,
.ast-mobile-popup-drawer,
.ast-mobile-popup-drawer .ast-mobile-popup-inner,
.ast-mobile-popup-drawer.active .ast-mobile-popup-inner,
.ast-above-header-section-wrap {
    background:       var(--ll-dark) !important;
    background-color: var(--ll-dark) !important;
    border-top:       1px solid rgba(255,255,255,0.08) !important;
}

/* ——— Texte des liens ——— */
/* Cibler .menu-link ET le sélecteur Astra .ast-builder-menu-mobile.
   Les deux premiers sélecteurs de la liste (juste "#masthead .menu-item",
   sans classe Astra de scoping mobile comme .ast-header-break-point /
   .ast-mobile-*) ont été retirés le 21/08 : présents sur TOUTES les pages,
   ils appliquaient ce padding 13px 20px + bordure "ligne de tiroir mobile"
   au menu DESKTOP aussi — la boîte de chaque lien gonflait verticalement,
   ce qui, via le stretch flex de la rangée, décalait le badge du panier
   (.lc-nav-count) et déformait l'icône recherche (constaté par capture).
   Toutes les variantes mobiles réelles restent couvertes par les 7
   sélecteurs ci-dessous (chacun scopé à une classe Astra mobile connue). */
.ast-mobile-header-content .menu-item > .menu-link,
.ast-mobile-header-content .menu-item > a,
.ast-header-break-point .main-header-menu .menu-item > .menu-link,
.ast-header-break-point .main-header-menu .menu-item > a,
.ast-header-break-point .main-navigation .menu-item > a,
.ast-header-break-point .ast-nav-menu .menu-item > a,
.ast-mobile-popup-wrapper .menu-item > a,
.ast-builder-menu-mobile .main-navigation .main-header-menu .menu-item > .menu-link,
.ast-builder-menu-mobile .main-navigation .menu-item > a {
    color:         rgba(255,255,255,0.88) !important;
    background:    transparent !important;
    border-bottom: 1px solid rgba(255,255,255,0.06) !important;
    padding:       13px 20px !important;
    font-weight:   500 !important;
    font-size:     15px !important;
}

/* Hover */
.ast-mobile-header-content .menu-item:hover > .menu-link,
.ast-mobile-header-content .menu-item:hover > a,
.ast-header-break-point .main-header-menu .menu-item:hover > a,
.ast-header-break-point .main-navigation .menu-item:hover > a,
.ast-builder-menu-mobile .main-navigation .main-header-menu .menu-item:hover > .menu-link,
.ast-builder-menu-mobile .main-navigation .menu-item:hover > a {
    color:      #4ade80 !important;
    background: rgba(255,255,255,0.04) !important;
}

/* Item actif */
.ast-mobile-header-content .current-menu-item > .menu-link,
.ast-mobile-header-content .current-menu-item > a,
.ast-header-break-point .main-header-menu .current-menu-item > a,
.ast-builder-menu-mobile .main-navigation .menu-item.current-menu-item > .menu-link {
    color: #4ade80 !important;
    background: rgba(74,222,128,0.07) !important;
}

/* Flèches sous-menus (ast-menu-toggle) */
.ast-mobile-header-content .menu-item > .ast-menu-toggle,
.ast-header-break-point .menu-item > .ast-menu-toggle,
.ast-builder-menu-mobile .menu-item > .ast-menu-toggle {
    color: rgba(255,255,255,0.5) !important;
}

/* Sous-menus */
.ast-mobile-header-content .sub-menu,
.ast-header-break-point .main-header-menu .sub-menu,
.ast-builder-menu-mobile .sub-menu {
    background:   rgba(255,255,255,0.03) !important;
    border-left:  2px solid rgba(74,222,128,0.3) !important;
}

.ast-mobile-header-content .sub-menu .menu-item > a,
.ast-header-break-point .main-header-menu .sub-menu .menu-item > a {
    color:        rgba(255,255,255,0.65) !important;
    padding-left: 32px !important;
}

/* Bouton fermer le drawer */
.ast-mobile-popup-drawer.active .menu-toggle-close {
    color: rgba(255,255,255,0.7) !important;
}

/* ============================================================
   HOMEPAGE — Showcase catégories (14 univers)
   ============================================================ */

.ll-cats {
    padding: 80px 0;
    background: var(--ll-white);
}

.ll-cats-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 16px;
    margin-top: 48px;
}

.ll-cat-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    padding: 24px 16px 20px;
    background: var(--ll-light);
    border: 1.5px solid var(--ll-border);
    border-radius: var(--ll-radius);
    text-decoration: none;
    color: var(--ll-text);
    transition: all 0.2s ease;
    cursor: pointer;
}

.ll-cat-item:hover {
    border-color: var(--ll-green);
    background: #f0fdf4;
    transform: translateY(-3px);
    box-shadow: 0 8px 24px rgba(22,163,74,0.12);
    color: var(--ll-text);
    text-decoration: none;
}

.ll-cat-item.ll-cat-featured {
    border-color: var(--ll-green);
    background: linear-gradient(135deg, #f0fdf4, #dcfce7);
    position: relative;
}

.ll-cat-item.ll-cat-featured::after {
    content: 'Nouveau';
    position: absolute;
    top: -8px;
    right: 12px;
    background: var(--ll-green);
    color: var(--ll-white);
    font-size: 10px;
    font-weight: 700;
    padding: 2px 8px;
    border-radius: 20px;
    letter-spacing: 0.5px;
}

.ll-cat-icon {
    font-size: 36px;
    line-height: 1;
    margin-bottom: 10px;
}

.ll-cat-name {
    font-weight: 700;
    font-size: 13px;
    line-height: 1.35;
    margin-bottom: 6px;
    color: var(--ll-text);
}

.ll-cat-examples {
    font-size: 11px;
    color: var(--ll-muted);
    line-height: 1.4;
}

/* 5 colonnes pour features */
.ll-features-grid-5 {
    grid-template-columns: repeat(5, 1fr);
}

/* 3 colonnes pour pour-qui */
.ll-forwho-grid-3 {
    grid-template-columns: repeat(3, 1fr);
}

/* 4 colonnes pour pour-qui (avec la carte particuliers) */
.ll-forwho-grid-4 {
    grid-template-columns: repeat(4, 1fr);
}

.ll-forwho-events {
    border-color: var(--ll-green);
    background: linear-gradient(135deg, #f0fdf4 0%, var(--ll-white) 100%);
}

.ll-forwho-particulier {
    border-color: #d97706;
    background: linear-gradient(135deg, #fffbeb 0%, var(--ll-white) 100%);
}

/* Responsive catégories */
@media (max-width: 900px) {
    .ll-cats-grid {
        grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
        gap: 12px;
    }
    .ll-features-grid-5 {
        grid-template-columns: repeat(2, 1fr);
    }
    .ll-forwho-grid-3,
    .ll-forwho-grid-4 {
        grid-template-columns: 1fr;
    }
}

@media (min-width: 901px) and (max-width: 1200px) {
    .ll-forwho-grid-4 {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 600px) {
    /* Catégories */
    .ll-cats-grid {
        grid-template-columns: repeat(2, 1fr);
        gap: 10px;
    }
    .ll-cat-item    { padding: 16px 10px 14px; }
    .ll-cat-icon    { font-size: 28px; }
    .ll-cat-name    { font-size: 12px; }
    .ll-cat-examples { display: none; }

    /* Paddings sections excessifs */
    .ll-hero        { padding: 60px 20px 72px; }
    .ll-features    { padding: 60px 20px; }
    .ll-colibri     { padding: 60px 16px; }
    .ll-payments    { padding: 56px 16px; }
    .ll-why         { padding: 56px 16px; }
    .ll-forwho      { padding: 60px 16px; }

    /* Section panier collectif */
    .ll-colibri h2      { font-size: 24px !important; line-height: 1.25 !important; }
    .ll-shop-node       { flex-wrap: wrap; gap: 8px 12px; padding: 12px 14px; }
    .ll-shop-info       { flex: 1 1 60%; min-width: 120px; }
    .ll-shop-badge      { font-size: 10px; padding: 2px 8px; }
    .ll-basket-node     { flex-wrap: wrap; gap: 8px; }
    .ll-basket-price    { margin-left: 0; font-size: 16px; }
    .ll-basket-label    { font-size: 14px; }
    .ll-colibri-point-icon { width: 40px; height: 40px; font-size: 18px; border-radius: 10px; }
    .ll-colibri-point-text h4 { font-size: 14px; }
    .ll-colibri-cta     { flex-direction: column; }
    .ll-colibri-cta a   { text-align: center; justify-content: center; }
    .ll-colibri-badge   { font-size: 11px; }
    .ll-unique-tag      { font-size: 11px; }

    /* Hero */
    .ll-hero-proof      { flex-direction: column; gap: 6px; text-align: center; }
    .ll-hero-actions    { flex-direction: column; align-items: center; gap: 10px; }
    .ll-hero-sub        { font-size: 15px; }

    /* CTA final */
    .ll-cta-desc        { font-size: 15px; }

    /* Steps */
    .ll-steps           { padding: 56px 16px; }
    .ll-step            { padding: 20px; }
}

/* ============================================================
   COULEURS PAR CATÉGORIE — Homepage cards + map filter badges
   ============================================================ */
/* Palette identique aux catColors de liberta-map.js */
:root {
    --cat-agriculture:  #27ae60; --cat-agriculture-bg:  #f0fdf4;
    --cat-jardins:      #2ecc71; --cat-jardins-bg:      #f0fdf4;
    --cat-ecolieux:     #8e44ad; --cat-ecolieux-bg:     #faf5ff;
    --cat-tiers-lieux:  #3498db; --cat-tiers-lieux-bg:  #eff6ff;
    --cat-ateliers:     #e67e22; --cat-ateliers-bg:     #fff7ed;
    --cat-numerique:    #1abc9c; --cat-numerique-bg:    #f0fdfa;
    --cat-solidarite:   #e74c3c; --cat-solidarite-bg:   #fff1f2;
    --cat-economie:     #f39c12; --cat-economie-bg:     #fffbeb;
    --cat-art:          #e91e63; --cat-art-bg:          #fdf2f8;
    --cat-evenements:   #2980b9; --cat-evenements-bg:   #eff6ff;
    --cat-sante:        #16a085; --cat-sante-bg:        #f0fdfa;
    --cat-artisanat:    #d35400; --cat-artisanat-bg:    #fff7ed;
    --cat-mobilite:     #7f8c8d; --cat-mobilite-bg:     #f8fafc;
    --cat-animaux:      #27ae60; --cat-animaux-bg:      #f0fdf4;
}

/* Bordure colorée + icône colorée par catégorie sur les cartes homepage */
.ll-cat-item[data-cat="agriculture-alimentation"] { border-color: var(--cat-agriculture); }
.ll-cat-item[data-cat="agriculture-alimentation"] .ll-cat-icon { color: var(--cat-agriculture); }
.ll-cat-item[data-cat="agriculture-alimentation"]:hover { background: var(--cat-agriculture-bg); }

.ll-cat-item[data-cat="jardins-echanges"] { border-color: var(--cat-jardins); }
.ll-cat-item[data-cat="jardins-echanges"] .ll-cat-icon { color: var(--cat-jardins); }
.ll-cat-item[data-cat="jardins-echanges"]:hover { background: var(--cat-jardins-bg); }

.ll-cat-item[data-cat="ecolieux-habitat"] { border-color: var(--cat-ecolieux); }
.ll-cat-item[data-cat="ecolieux-habitat"] .ll-cat-icon { color: var(--cat-ecolieux); }
.ll-cat-item[data-cat="ecolieux-habitat"]:hover { background: var(--cat-ecolieux-bg); }

.ll-cat-item[data-cat="tiers-lieux"] { border-color: var(--cat-tiers-lieux); }
.ll-cat-item[data-cat="tiers-lieux"] .ll-cat-icon { color: var(--cat-tiers-lieux); }
.ll-cat-item[data-cat="tiers-lieux"]:hover { background: var(--cat-tiers-lieux-bg); }

.ll-cat-item[data-cat="ateliers-pratiques"] { border-color: var(--cat-ateliers); }
.ll-cat-item[data-cat="ateliers-pratiques"] .ll-cat-icon { color: var(--cat-ateliers); }
.ll-cat-item[data-cat="ateliers-pratiques"]:hover { background: var(--cat-ateliers-bg); }

.ll-cat-item[data-cat="ateliers-numeriques"] { border-color: var(--cat-numerique); }
.ll-cat-item[data-cat="ateliers-numeriques"] .ll-cat-icon { color: var(--cat-numerique); }
.ll-cat-item[data-cat="ateliers-numeriques"]:hover { background: var(--cat-numerique-bg); }

.ll-cat-item[data-cat="solidarite-alimentaire"] { border-color: var(--cat-solidarite); }
.ll-cat-item[data-cat="solidarite-alimentaire"] .ll-cat-icon { color: var(--cat-solidarite); }
.ll-cat-item[data-cat="solidarite-alimentaire"]:hover { background: var(--cat-solidarite-bg); }

.ll-cat-item[data-cat="economie-alternative"] { border-color: var(--cat-economie); }
.ll-cat-item[data-cat="economie-alternative"] .ll-cat-icon { color: var(--cat-economie); }
.ll-cat-item[data-cat="economie-alternative"]:hover { background: var(--cat-economie-bg); }

.ll-cat-item[data-cat="art-culture"] { border-color: var(--cat-art); }
.ll-cat-item[data-cat="art-culture"] .ll-cat-icon { color: var(--cat-art); }
.ll-cat-item[data-cat="art-culture"]:hover { background: var(--cat-art-bg); }

.ll-cat-item[data-cat="evenements-rencontres"] { border-color: var(--cat-evenements); }
.ll-cat-item[data-cat="evenements-rencontres"] .ll-cat-icon { color: var(--cat-evenements); }
.ll-cat-item[data-cat="evenements-rencontres"]:hover { background: var(--cat-evenements-bg); }

.ll-cat-item[data-cat="sante-bien-etre"] { border-color: var(--cat-sante); }
.ll-cat-item[data-cat="sante-bien-etre"] .ll-cat-icon { color: var(--cat-sante); }
.ll-cat-item[data-cat="sante-bien-etre"]:hover { background: var(--cat-sante-bg); }

.ll-cat-item[data-cat="artisanat-creation"] { border-color: var(--cat-artisanat); }
.ll-cat-item[data-cat="artisanat-creation"] .ll-cat-icon { color: var(--cat-artisanat); }
.ll-cat-item[data-cat="artisanat-creation"]:hover { background: var(--cat-artisanat-bg); }

.ll-cat-item[data-cat="mobilite-transport"] { border-color: var(--cat-mobilite); }
.ll-cat-item[data-cat="mobilite-transport"] .ll-cat-icon { color: var(--cat-mobilite); }
.ll-cat-item[data-cat="mobilite-transport"]:hover { background: var(--cat-mobilite-bg); }

.ll-cat-item[data-cat="animaux-nature"] { border-color: var(--cat-animaux); }
.ll-cat-item[data-cat="animaux-nature"] .ll-cat-icon { color: var(--cat-animaux); }
.ll-cat-item[data-cat="animaux-nature"]:hover { background: var(--cat-animaux-bg); }

/* ============================================================
   PAGES FICHE LIEU — Design enrichi
   ============================================================ */
.single-liberta_location .site-content,
.single-liberta_event   .site-content   { padding-top: 0 !important; }
.single-liberta_location .entry-header,
.single-liberta_event   .entry-header   { display: none !important; }

/* Bannière TEST déjà stylée dans meta-fields.php */

/* Page lieu : largeur étendue, pas de sidebar */
.single-liberta_location #primary,
.single-liberta_event   #primary        { max-width: 860px; margin: 0 auto; padding: 0 20px 40px; }

/* Titres de section dans le contenu */
.single-liberta_location .entry-content h3,
.single-liberta_event .entry-content h3 {
    font-size: 17px; font-weight: 700; color: var(--ll-dark);
    border-left: 3px solid var(--ll-green); padding-left: 12px; margin: 28px 0 12px;
}

.single-liberta_location .entry-content ul,
.single-liberta_event .entry-content ul {
    list-style: none; padding: 0; margin: 0 0 16px;
}
.single-liberta_location .entry-content ul li,
.single-liberta_event .entry-content ul li {
    padding: 5px 0 5px 8px; font-size: 14px; color: #334155;
    border-bottom: 1px solid #f1f5f9;
}
.single-liberta_location .entry-content ul li:last-child,
.single-liberta_event .entry-content ul li:last-child { border: none; }

/* ============================================================
   PAGES PRODUIT WOOCOMMERCE — Design enrichi
   ============================================================ */
.single-product .woocommerce-product-gallery__image img {
    border-radius: 16px;
    box-shadow: 0 4px 24px rgba(0,0,0,0.10);
}
.single-product .product_title {
    font-size: 26px !important; font-weight: 800 !important; color: var(--ll-dark) !important;
}
.single-product .woocommerce-Price-amount {
    font-size: 24px !important; font-weight: 800 !important; color: var(--ll-green) !important;
}
.single-product .woocommerce-product-details__short-description {
    background: #f0fdf4; border-left: 3px solid var(--ll-green);
    padding: 12px 16px; border-radius: 0 8px 8px 0;
    font-size: 14px; color: #166534; margin-bottom: 20px;
}
/* Indicateur d'onglet produit actif ("Plus de produits") : accent Astra bleu
   (--ast-global-color-0 #046bd2) → vert charte Liberta */
.woocommerce div.product .woocommerce-tabs ul.tabs li.active:before,
.woocommerce div.ast-product-tabs-layout-vertical .woocommerce-tabs ul.tabs li:hover::before {
    background: var(--ll-green) !important;
}
.single-product .button.single_add_to_cart_button,
.single-product .wc-block-components-product-button__button {
    background: var(--ll-green) !important; color: var(--ll-white) !important;
    border-radius: 10px !important; font-weight: 700 !important;
    padding: 14px 28px !important; font-size: 15px !important;
    transition: background 0.15s, transform 0.12s !important;
}
.single-product .button.single_add_to_cart_button:hover {
    background: #15803d !important; transform: translateY(-1px) !important;
}
/* Catégorie déjà dans le fil d'Ariane (pointant vers la boutique du vendeur
   filtrée sur cette catégorie) — la ligne "Catégorie : X" du product_meta
   natif WooCommerce ferait doublon. SKU/étiquettes restent visibles. */
.single-product .product_meta .posted_in { display: none !important; }

/* ============================================================
   BOUTIQUE VENDEUR (Dokan store) — Design enrichi
   ============================================================ */
.dokan-store-page .dokan-store-header {
    border-radius: 16px; overflow: hidden; margin-bottom: 24px;
    box-shadow: 0 4px 20px rgba(0,0,0,0.08);
}
.dokan-store-page .dokan-store-info .dokan-store-name {
    font-size: 26px !important; font-weight: 800 !important; color: var(--ll-dark) !important;
}
/* Notice "aucun produit" — bleu Dokan par défaut → vert charte Liberta */
.dokan-store-page .dokan-info,
.dokan-store-wrap .dokan-info {
    font-size: 14px !important;
    color: #166534 !important;
    background: #f0fdf4 !important;
    border: 1px solid #bbf7d0 !important;
    border-left: 4px solid var(--ll-green) !important;
    border-radius: 10px !important;
    padding: 14px 18px !important;
    box-shadow: none !important;
    text-shadow: none !important;
}
.dokan-store-page .dokan-info::before,
.dokan-store-wrap .dokan-info::before { display: none !important; }
.dokan-store-page .dokan-info,
.dokan-store-wrap .dokan-info { border-top: 1px solid #bbf7d0 !important; }
.dokan-store-page .woocommerce ul.products li.product {
    border-radius: 14px; overflow: hidden;
    box-shadow: 0 2px 12px rgba(0,0,0,0.07);
    transition: transform 0.15s, box-shadow 0.15s;
}
.dokan-store-page .woocommerce ul.products li.product:hover {
    transform: translateY(-3px);
    box-shadow: 0 6px 24px rgba(0,0,0,0.12);
}
.dokan-store-page .woocommerce ul.products li.product .woocommerce-loop-product__title {
    font-weight: 700 !important; font-size: 14px !important; color: var(--ll-dark) !important;
}
.dokan-store-page .woocommerce ul.products li.product .price {
    color: var(--ll-green) !important; font-weight: 800 !important;
}
.dokan-store-page .woocommerce ul.products li.product a.add_to_cart_button,
.dokan-store-page .woocommerce ul.products li.product a.button {
    background: var(--ll-green) !important; color: var(--ll-white) !important;
    border-radius: 8px !important; font-weight: 700 !important; font-size: 13px !important;
    padding: 8px 16px !important;
}

/* ══════════════════════════════════════════════════════════════
   BOUTIQUE VENDEUR — Harmonisation charte Liberta (dokan-store-page)
   ══════════════════════════════════════════════════════════════ */

/* Boutons Dokan violet → vert Liberta (global, pas de dokan-store-page sur body) */
.dokan-btn-theme,
.dokan-btn-theme:focus,
input.dokan-btn-theme {
    background-color: var(--ll-green) !important;
    border-color: var(--ll-green) !important;
    color: var(--ll-white) !important;
    border-radius: 8px !important;
    font-weight: 700 !important;
    width: auto !important;
    min-width: max-content !important;
    white-space: nowrap !important;
    padding: 10px 20px !important;
}
.dokan-btn-theme:hover,
input.dokan-btn-theme:hover {
    background-color: #1a4a36 !important;
    border-color: #1a4a36 !important;
}

/* Barre "Rechercher un produit / Rechercher / Tri par défaut" — Dokan pose ces
   3 champs en float/flex-basis %, ce qui s'effondre sur mobile (le bouton
   prenait sa largeur de contenu au lieu de sa part de ligne). Flex géré à
   nous : recherche + bouton groupés sur une ligne, tri en dessous, à toutes
   les tailles d'écran plutôt que juste la fenêtre étroite ciblée par Dokan. */
.dokan-store-products-filter-area .dokan-store-products-ordeby {
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: center !important;
    gap: 10px !important;
    float: none !important;
}
.dokan-store-products-filter-area input.product-name-search {
    float: none !important;
    flex: 1 1 200px;
    height: 44px !important;
    margin: 0 !important;
}
.dokan-store-products-filter-area input.search-store-products {
    background-color: var(--ll-green) !important;
    border-color: var(--ll-green) !important;
    color: var(--ll-white) !important;
    border-radius: 8px !important;
    font-weight: 700 !important;
    float: none !important;
    flex: 0 0 auto;
    height: 44px !important;
    line-height: 1 !important;
    margin: 0 !important;
}
.dokan-store-products-filter-area input.search-store-products:hover {
    background-color: #1a4a36 !important;
    border-color: #1a4a36 !important;
}
.dokan-store-products-filter-area select.orderby-search {
    float: none !important;
    flex: 1 1 100%;
    height: 44px !important;
    margin: 0 !important;
}
@media (max-width: 480px) {
    .dokan-store-products-filter-area input.product-name-search { flex-basis: 100%; }
    .dokan-store-products-filter-area input.search-store-products { flex-basis: 100%; }
}

/* Bouton Suivre le vendeur */
.dokan-follow-store-button,
.dokan-follow-store-button button {
    background-color: var(--ll-green) !important;
    border-color: var(--ll-green) !important;
    color: var(--ll-white) !important;
    border-radius: 8px !important;
    font-weight: 700 !important;
}
.dokan-follow-store-button:hover,
.dokan-follow-store-button button:hover { background-color: #1a4a36 !important; }

/* Couleurs Dokan theme (liens, icônes) */
.dokan-theme-color, a.dokan-theme-color { color: var(--ll-green) !important; }
.dokan-theme-color-bg { background-color: var(--ll-green) !important; }

/* Inputs et selects boutique vendeur — accent vert */
.dokan-store-wrap input[type="text"],
.dokan-store-wrap input[type="email"],
.dokan-store-wrap input[type="search"],
.dokan-store-wrap select,
.dokan-store-wrap textarea,
.dokan-store-wrap .dokan-form-control {
    border-color: #d1e9dc !important;
    border-radius: 8px !important;
    font-size: 14px !important;
}
.dokan-store-wrap input:focus,
.dokan-store-wrap select:focus,
.dokan-store-wrap textarea:focus,
.dokan-store-wrap .dokan-form-control:focus {
    border-color: var(--ll-green) !important;
    outline: none !important;
    box-shadow: 0 0 0 3px rgba(45,106,79,.12) !important;
}

/* Onglets Dokan */
.dokan-store-tabs { border-bottom: 2px solid #e2e8f0 !important; margin-bottom: 24px !important; }
.dokan-store-tabs .dokan-list-inline li a {
    color: #64748b !important; font-weight: 600 !important; font-size: 14px !important;
    padding: 8px 16px !important; border-radius: 0 !important;
    border-bottom: 2px solid transparent !important; margin-bottom: -2px !important;
}
.dokan-store-tabs .dokan-list-inline li.active a,
.dokan-store-tabs .dokan-list-inline li a:hover {
    color: var(--ll-green) !important; border-bottom-color: var(--ll-green) !important;
    background: transparent !important;
}

/* Étoiles de notation */
.star-rating, .star-rating span, .star-rating::before { color: #f59e0b !important; }
.dokan-rating i { color: #f59e0b !important; }

/* Border-radius header vendeur → 0 */
.dokan-store-header { border-radius: 0 !important; }

/* ============================================================
   PAGE BOUTIQUE GLOBALE (/boutique/)
   ============================================================ */

/* Empêcher tout débordement horizontal sur la page boutique
   overflow-x: hidden sur chaque conteneur entre le viewport et la carte */
body.woocommerce-shop #content,
body.woocommerce-shop #primary,
body.woocommerce-shop .site-main,
body.woocommerce-shop .ast-woocommerce-container,
body.woocommerce-shop .page-description {
    overflow-x: hidden;
    max-width: 100%;
    box-sizing: border-box;
}

/* Grille produits WC : contraindre les items à leur cellule */
body.woocommerce-shop ul.products { max-width: 100%; overflow: hidden; }
body.woocommerce-shop ul.products li.product { box-sizing: border-box; max-width: 100%; min-width: 0; }

/* Annuaire boutiques : contraindre strictement à la largeur du viewport */
.ll-shop-directory { box-sizing: border-box; width: 100%; max-width: 100%; }
.ll-shop-dir-grid  { box-sizing: border-box; width: 100%; }

.woocommerce-page.archive ul.products li.product {
    border-radius: 14px; overflow: hidden;
    box-shadow: 0 2px 12px rgba(0,0,0,0.07);
    transition: transform 0.15s, box-shadow 0.15s;
}
.woocommerce-page.archive ul.products li.product:hover {
    transform: translateY(-3px); box-shadow: 0 8px 28px rgba(0,0,0,0.12);
}
.woocommerce-page.archive ul.products li.product .price { color: var(--ll-green) !important; font-weight: 800 !important; }
.woocommerce-page.archive ul.products li.product .woocommerce-loop-product__title { font-weight: 700 !important; color: var(--ll-dark) !important; }
.woocommerce-page.archive ul.products li.product .button {
    background: var(--ll-green) !important; color: var(--ll-white) !important;
    border-radius: 8px !important; font-weight: 700 !important;
}

/* ============================================================
   PAGE ÉVÉNEMENT — Hero enrichi
   ============================================================ */
.single-liberta_event .liberta-event-hero {
    background: linear-gradient(135deg, #2a4a1a 0%, var(--ll-dark) 100%);
    color: var(--ll-white); padding: 32px 28px; border-radius: 0;
    margin-bottom: 0;
}
.single-liberta_event .liberta-event-hero h1 { color: var(--ll-white) !important; font-size: 26px !important; margin: 0 0 8px !important; }
.single-liberta_event .liberta-event-hero .event-meta-pill {
    display: inline-flex; align-items: center; gap: 6px;
    background: rgba(255,255,255,0.12); padding: 5px 12px;
    border-radius: 100px; font-size: 13px; margin: 4px 4px 0 0;
}

/* ============================================================
   BOUTIQUE — Annuaire vendeurs (page /boutique/)
   ============================================================ */
.ll-shop-directory { max-width: 900px; margin: 0 auto; padding: 0 0 60px; font-family: inherit; }

.ll-shop-dir-header { text-align: center; padding: 40px 0 32px; }
.ll-shop-dir-header h2 { font-size: 28px; font-weight: 800; color: var(--ll-dark); margin: 0 0 10px; }
.ll-shop-dir-header p { color: #64748b; font-size: 15px; margin: 0 0 6px; line-height: 1.6; }
.ll-shop-dir-map-link { color: var(--ll-green); font-weight: 600; text-decoration: none; }
.ll-shop-dir-map-link:hover { text-decoration: underline; }

.ll-shop-dir-grid { display: grid; grid-template-columns: 1fr; gap: 24px; }

.ll-shop-dir-card {
    box-sizing: border-box;
    width: 100%;
    background: var(--ll-white);
    border: 1px solid #ddd0b8;
    border-radius: 16px;
    padding: 24px;
    box-shadow: 0 2px 12px rgba(0,0,0,0.05);
    transition: box-shadow 0.15s;
    min-width: 0;
    overflow: hidden;
}
.ll-shop-dir-card:hover { box-shadow: 0 6px 24px rgba(0,0,0,0.1); }

.ll-shop-dir-card-header { margin-bottom: 10px; }
.ll-shop-dir-name { font-size: 20px; font-weight: 800; color: var(--ll-dark); margin: 0 0 4px; }
.ll-shop-dir-city { font-size: 13px; color: #64748b; margin: 0 0 6px; }
.ll-shop-dir-cats { display: flex; flex-wrap: wrap; gap: 6px; }
.ll-shop-dir-cat { padding: 2px 10px; background: #f0fdf4; color: var(--ll-green); border-radius: 100px; font-size: 11px; font-weight: 600; }

.ll-shop-dir-bio { font-size: 14px; color: var(--ll-muted); line-height: 1.6; margin: 8px 0 16px; }

.ll-shop-dir-products { display: flex; gap: 12px; margin-bottom: 18px; overflow-x: auto; padding-bottom: 4px; width: 100%; min-width: 0; }
.ll-shop-dir-product {
    flex: 0 0 120px; width: 120px; background: var(--ll-light); border-radius: 10px;
    overflow: hidden; text-decoration: none; color: var(--ll-dark); font-size: 12px;
    border: 1px solid var(--ll-border); transition: transform 0.12s;
}
.ll-shop-dir-product:hover { transform: translateY(-2px); }
.ll-shop-dir-product img { width: 100%; height: 80px; object-fit: cover; display: block; }
.ll-shop-dir-product-placeholder { display: flex; width: 100%; height: 80px; align-items: center; justify-content: center; font-size: 24px; background: var(--ll-light); }
.ll-shop-dir-product span { display: block; padding: 6px 8px 2px; font-weight: 600; line-height: 1.3; }
.ll-shop-dir-product strong { display: block; padding: 0 8px 8px; color: var(--ll-green); font-weight: 800; }

.ll-shop-dir-actions { display: flex; gap: 10px; flex-wrap: wrap; }
.ll-shop-dir-btn-primary {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 10px 20px; background: var(--ll-green); color: var(--ll-white) !important;
    border-radius: 8px; font-size: 14px; font-weight: 700; text-decoration: none !important;
    transition: background 0.15s;
}
.ll-shop-dir-btn-primary:hover { background: #15803d; }
.ll-shop-dir-btn-secondary {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 9px 16px; background: var(--ll-light); color: var(--ll-muted) !important;
    border: 1px solid var(--ll-border); border-radius: 8px; font-size: 13px;
    font-weight: 600; text-decoration: none !important; transition: border-color 0.15s;
}
.ll-shop-dir-btn-secondary:hover { border-color: var(--ll-green); color: var(--ll-green) !important; }

.ll-shop-dir-cta { text-align: center; margin-top: 40px; padding: 28px; background: var(--ll-light); border-radius: 14px; }
.ll-shop-dir-cta p { font-size: 15px; color: var(--ll-text); font-weight: 600; margin: 0 0 10px; }
.ll-shop-dir-cta a { color: var(--ll-green); font-weight: 700; font-size: 15px; text-decoration: none; }
.ll-shop-dir-cta a:hover { text-decoration: underline; }

.ll-shop-dir-empty { text-align: center; padding: 40px; color: #64748b; }

/* Neutraliser les <p>/<br> injectés par wpautop dans les flex containers */
.ll-shop-dir-products > p, .ll-shop-dir-products > br,
.ll-shop-dir-actions > br { display: none; }

@media (min-width: 640px) { .ll-shop-dir-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 480px) { .ll-shop-dir-products { gap: 8px; } .ll-shop-dir-product { flex: 0 0 90px; width: 90px; } }

/* Popup carte — bouton boutique vert prioritaire */
.liberta-popup-btn-shop {
    background: var(--ll-green) !important;
    font-weight: 800 !important;
    font-size: 14px !important;
}
.liberta-popup-btn-shop:hover { background: #15803d !important; }

/* ── Bandeau construction ── */
#liberta-construction-banner {
    position: sticky;
    top: 0;
    z-index: 99999;
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 20px;
    background: linear-gradient(90deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%);
    color: #e2e8f0;
    font-size: 13.5px;
    font-family: inherit;
    line-height: 1.4;
    border-bottom: 2px solid #f59e0b;
    box-shadow: 0 2px 12px rgba(0,0,0,.35);
}
.lcb-icon { font-size: 18px; flex-shrink: 0; animation: lcb-swing .9s ease-in-out infinite alternate; }
@keyframes lcb-swing { from { transform: rotate(-12deg); } to { transform: rotate(12deg); } }
.lcb-text { flex: 1; }
.lcb-text a { color: #fbbf24; text-decoration: underline; }
.lcb-text a:hover { color: #f59e0b; }
.lcb-close {
    flex-shrink: 0;
    background: none;
    border: 1px solid rgba(255,255,255,.3);
    color: #cbd5e1;
    border-radius: 4px;
    width: 26px; height: 26px;
    cursor: pointer;
    font-size: 14px;
    line-height: 1;
    transition: background .15s;
}
.lcb-close:hover { background: rgba(255,255,255,.12); color: var(--ll-white); }
@media (max-width: 640px) {
    #liberta-construction-banner { font-size: 12px; padding: 8px 14px; gap: 8px; }
    .lcb-icon { font-size: 15px; }
}

/* ============================================================
   PANIER — icône dans le header (11/07)
   Même traitement que "Mon espace" : élément inline dans le menu principal
   sur desktop, cloné dans le header mobile par injection JS (functions.php,
   avec "Mon espace") — plus de bouton rond fixe par-dessus le contenu qui
   se superposait aux menus du dashboard.
   ============================================================ */
/* .lc-empty double-classe pour dépasser la spécificité (0,2,0) d'Astra ".main-header-menu .menu-item" */
.liberta-nav-cart-item.lc-empty { display: none !important; }
/* "flex" et non "list-item" (21/08) : Astra affiche nativement chaque
   .menu-item en display:flex (nécessaire pour qu'align-self:center du lien
   panier ci-dessous fonctionne) — "list-item" cassait ce contexte flex,
   le lien panier retombait aligné en haut de la rangée ~80px au lieu
   d'être centré, entraînant le badge rouge avec lui hors du bandeau. */
.liberta-nav-cart-item:not(.lc-empty) { display: flex !important; }
.liberta-nav-cart-item .menu-link {
    display: flex !important; align-items: center; justify-content: center; gap: 6px;
    position: relative !important; padding: 0 12px !important;
    /* La rangée du menu desktop (#ast-hf-menu-1) fait ~80px de haut (hauteur
       de header Astra) et étire par défaut chaque lien à cette même hauteur
       (align-items:stretch hérité) — sans hauteur explicite ici, le lien
       panier héritait de ces ~80px, décentrant l'icône et faisant sortir le
       badge rouge (.lc-nav-count, position:absolute top:-6px relative à CE
       lien) tout en haut de la rangée au lieu de coller à l'icône (constaté
       par capture le 21/08 — même cause que l'icône recherche juste avant,
       cf. .liberta-nav-search-item .lgs-toggle : hauteur figée = fix). */
    height: 34px !important;
    align-self: center;
}
.liberta-nav-cart-item svg { flex-shrink: 0; }
.lc-nav-count {
    position: absolute; top: -6px; right: 2px;
    background: #e74c3c; color: var(--ll-white); font-size: 10px; font-weight: 800;
    min-width: 18px; height: 18px; border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    border: 2px solid var(--ll-white); line-height: 1;
}
/* Sur mobile, la nav principale est cachée derrière le hamburger — l'icône
   injectée (#lbt-mobile-cart-hdr, functions.php) prend le relais. */
@media (max-width: 921px) {
    .liberta-nav-cart-item { display: none !important; }
}

/* Icône recherche globale (menu desktop) — la règle générique plus haut
   (#masthead .menu-item > .menu-link, ~ligne 1952) applique déjà padding
   13px 20px + border-bottom pensés pour une ligne de tiroir mobile ; sans
   contre-règle de spécificité au moins égale (même préfixe #masthead), le
   bouton hérite de ce gabarit "ligne pleine largeur" au lieu du carré 34px
   compact attendu — rendu bancal/à peine visible sur le header desktop
   (constaté 21/08 ; le mobile utilise l'icône clonée #lbt-mobile-search-hdr,
   stylée séparément, jamais concerné). */
#masthead .liberta-nav-search-item .lgs-toggle {
    display: flex !important;
    align-items: center;
    justify-content: center;
    width: 34px !important;
    height: 34px !important;
    padding: 0 !important;
    border-bottom: none !important;
    color: rgba(255,255,255,0.80) !important;
}
#masthead .liberta-nav-search-item .lgs-toggle:hover { color: #4ade80 !important; background: transparent !important; }
/* Sur mobile, l'icône injectée (#lbt-mobile-search-hdr) prend le relais. */
@media (max-width: 921px) {
    .liberta-nav-search-item { display: none !important; }
}

/* Notice invité au checkout */
.liberta-checkout-guest-notice {
    background: #f0fdf4; border: 1.5px solid #b7d9c3; border-radius: 10px;
    padding: 12px 18px; margin-bottom: 20px; font-size: 14px; color: var(--ll-dark);
}
.liberta-checkout-guest-notice a { color: var(--ll-green); font-weight: 700; }

/* ── Dokan sidebar : masquée sur /mon-espace/ de base (notre tab system gère la nav) ── */
.lbt-page-mon-espace .dokan-dashboard-wrap .dokan-dashboard-menu { display: none !important; }
.lbt-page-mon-espace .dokan-dashboard-wrap .dokan-dashboard-content { margin-left: 0 !important; width: 100% !important; }
/* Sur les sous-pages Dokan (/mon-espace/products/ etc.), la sidebar est utile → on la laisse */

/* ============================================================
   PAGE BOUTIQUE VENDEUR (Dokan store page) — design Liberta
   ============================================================ */

/* Retirer la marge excessive du layout global */
.dokan-store-wrap { max-width: 1200px; margin: 0 auto; padding: 0 20px 40px; gap: 28px; }
.dokan-store-wrap.layout-left { display: flex; align-items: flex-start; gap: 28px; }

/* ── Header boutique ── */
.dokan-store-header-wrap, .profile-frame { border-radius: 0; overflow: hidden; margin-bottom: 24px; }
/* Pas de bannière uploadée → dégradé vert charte au lieu du PNG gris Dokan.
   Le dégradé est posé sur le conteneur : une vraie bannière (img opaque) le
   masque, l'image par défaut (rendue transparente) le laisse apparaître. */
.profile-info-box {
    background: linear-gradient(135deg, #1a3a2a 0%, #245741 60%, var(--ll-green) 100%);
}
.profile-info-img[src*="default-store-banner"] { opacity: 0 !important; }
.profile-img { border-radius: 0 !important; }
/* Bannière plus haute */
.profile-img img { height: 280px !important; object-fit: cover; width: 100%; }
/* Info overlay sur la bannière */
.dokan-store-header-info-wrap {
    background: linear-gradient(0deg, rgba(26,46,26,0.92) 0%, rgba(26,46,26,0.6) 60%, transparent 100%) !important;
    padding: 28px 28px 20px !important;
}
.dokan-store-name { color: var(--ll-white) !important; font-size: 26px !important; font-family: 'Lora', serif !important; font-weight: 700 !important; }
.dokan-store-location, .dokan-store-phone, .dokan-store-email { color: rgba(255,255,255,0.85) !important; font-size: 14px !important; }
/* Cacher l email du vendeur (confidentialité) */
.dokan-store-email, .vendor-email, .store-email { display: none !important; }

/* ── Sidebar ── */
#dokan-secondary {
    min-width: 240px; max-width: 260px; flex-shrink: 0;
    background: #f8fafc; border-radius: 14px; border: 1.5px solid #e2e8f0;
    padding: 20px; font-size: 14px;
}
.dokan-store-widget h3.widget-title {
    font-size: 13px; font-weight: 800; text-transform: uppercase;
    letter-spacing: 0.6px; color: var(--ll-dark); margin: 0 0 12px;
    padding-bottom: 8px; border-bottom: 2px solid #b7d9c3;
}
/* Widget catégories */
.dokan-store-widget .product-categories { padding: 0; list-style: none; }
.dokan-store-widget .product-categories li a { color: var(--ll-green); font-size: 13px; text-decoration: none; }
.dokan-store-widget .product-categories li a:hover { text-decoration: underline; }
/* Widget contact — retirer le champ email visible, garder juste le form */
.dokan-store-widget input[type="email"].dokan-form-control { display: none !important; }
.dokan-contact-form input, .dokan-contact-form textarea {
    border: 1.5px solid #ddd0b8; border-radius: 8px; padding: 8px 12px;
    font-size: 13px; width: 100%; box-sizing: border-box; margin-bottom: 8px;
}
.dokan-contact-form button, .dokan-contact-form input[type="submit"] {
    background: var(--ll-green); color: var(--ll-white); border: none; border-radius: 8px;
    padding: 9px 18px; font-size: 13px; font-weight: 700; cursor: pointer; width: 100%;
}
.dokan-contact-form button:hover { background: #1a5c3f; }
/* Retirer la map dans la sidebar */
.dokan-store-location-widget, .dokan_store_location { display: none !important; }
/* Retirer les horaires de la sidebar (déjà dans le header) */
.dokan-store-time-widget { display: none !important; }
/* Résumé condensé (statut + adresse) ajouté en haut de la sidebar */
.lbt-store-sidebar-summary { margin-bottom: 16px; padding-bottom: 16px; border-bottom: 1px solid #e2e8f0; }

/* ── Refonte page boutique v6.90 ──────────────────────────────────────────
   Widget de notation natif Dokan retiré du header : `liberta_render_vendor_avis_follow()`
   (déjà hooké sur dokan_store_profile_frame_after) couvre ce rôle en mieux
   et sans doublon de message "aucun avis". */
.dokan-store-page .dokan-store-rating,
.dokan-store-wrap .dokan-store-rating { display: none !important; }
/* Barre d'onglets à un seul item déjà masquée côté PHP (filtre dokan_store_tabs) ;
   filet de sécurité CSS si un cache sert une version périmée du fragment. */
.dokan-store-tabs:has(.dokan-list-inline li:only-child) { display: none; }
.lbt-store-mini-map { border: 1.5px solid #e2e8f0; }
.lbt-store-desc { border: 1px solid #e2e8f0; }

/* ── Grille produits ── */
#dokan-primary { flex: 1; min-width: 0; }
.dokan-single-store .seller-items { margin: 0; }
.dokan-single-store ul.products {
    display: grid !important;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)) !important;
    gap: 20px !important;
}
.dokan-single-store ul.products li.product {
    border-radius: 12px; overflow: hidden; background: var(--ll-white);
    border: 1.5px solid #e2e8f0;
    box-shadow: 0 2px 8px rgba(0,0,0,0.06);
    transition: box-shadow .2s, transform .2s;
    display: flex; flex-direction: column;
}
.dokan-single-store ul.products li.product:hover {
    box-shadow: 0 6px 20px rgba(0,0,0,0.12); transform: translateY(-2px);
}
.dokan-single-store ul.products li.product img { width: 100%; height: 160px; object-fit: cover; }
.dokan-single-store ul.products li.product .woocommerce-loop-product__title {
    font-size: 14px; font-weight: 700; padding: 10px 12px 4px; color: var(--ll-dark);
}
.dokan-single-store ul.products li.product .price { padding: 0 12px 8px; font-size: 15px; font-weight: 800; color: var(--ll-green); }
.dokan-single-store ul.products li.product .button {
    margin: auto 12px 12px !important; display: block !important;
    background: var(--ll-green) !important; color: var(--ll-white) !important;
    border-radius: 8px !important; padding: 9px 12px !important;
    font-size: 13px !important; font-weight: 700 !important;
    text-align: center !important; text-decoration: none !important;
    transition: background .15s !important;
}
.dokan-single-store ul.products li.product .button:hover { background: #1a5c3f !important; }
/* Filtre/tri au-dessus des produits */
.dokan-single-store .woocommerce-ordering select,
.dokan-single-store .products-per-page select {
    border: 1.5px solid #ddd0b8; border-radius: 8px; padding: 6px 10px; font-size: 13px;
}
/* Pagination */
.dokan-single-store .woocommerce-pagination .page-numbers a,
.dokan-single-store .woocommerce-pagination .page-numbers span {
    border-radius: 6px; border: 1.5px solid #ddd0b8;
}
.dokan-single-store .woocommerce-pagination .page-numbers .current {
    background: var(--ll-green); color: var(--ll-white); border-color: var(--ll-green);
}

/* Avatar rond Dokan (mobile) — masqué, redondant avec le hero */
.profile-img-circle, .seller-avatar { display: none !important; }

/* Section "Suivre" + avis — style cohérent */
.dokan-follow-store-button { margin-bottom: 20px !important; display: block !important; }
.dokan-rating { margin-bottom: 16px !important; }
.dokan-rating .dokan-rating-count { color: var(--ll-green) !important; font-weight: 700 !important; }

/* Liens dans la zone avis → vert */
.dokan-store-tabs a,
.dokan-single-store .dokan-rating a,
.dokan-single-store a:not(.button):not(.add_to_cart_button):not(.dokan-btn) {
    color: var(--ll-green) !important;
}
.dokan-single-store a:not(.button):not(.add_to_cart_button):not(.dokan-btn):hover {
    color: #1a4a36 !important;
}

/* "Avis clients" titre → style charte */
.dokan-single-store .dokan-rating h3,
.dokan-single-store .seller-review-wrap h3 {
    font-size: 16px !important; font-weight: 800 !important;
    color: var(--ll-dark) !important; margin-bottom: 12px !important;
}

/* "Tri par défaut" select */
.dokan-single-store .woocommerce-ordering select {
    border-color: #b7d9c3 !important;
    color: var(--ll-dark) !important;
}

/* Mobile */
@media (max-width: 768px) {
    .dokan-store-wrap.layout-left { flex-direction: column; }
    #dokan-secondary { min-width: 100%; max-width: 100%; }
    .dokan-single-store ul.products { grid-template-columns: repeat(2, 1fr) !important; }
}
@media (max-width: 480px) {
    .dokan-single-store ul.products { grid-template-columns: 1fr !important; }
    .profile-img img { height: 200px !important; }
}

/* =====================================================
   Page d'accueil — sections grille 2 colonnes inline
   responsive mobile (ajout v5.36)
   ===================================================== */
.ll-hp-2col {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 60px;
    align-items: center;
}
@media (max-width: 900px) {
    .ll-hp-2col {
        grid-template-columns: 1fr;
        gap: 36px;
    }
    /* Section billetterie : masquer le ticket preview sur mobile */
    .ll-hp-ticket-preview {
        display: none;
    }
    /* Section filtres carte : masquer le widget démo sur mobile */
    .ll-hp-map-demo {
        display: none;
    }
}

/* =====================================================
   Paiement direct vendeur — bouton sur cartes boutique
   ===================================================== */
.ll-dir-card-pay-direct {
    padding: 0 14px 12px;
}
.ll-dir-card-pay-link {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 6px 14px;
    background: #eff6ff;
    color: #1d4ed8;
    border: 1.5px solid #bfdbfe;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 600;
    text-decoration: none;
    transition: background 0.15s, border-color 0.15s;
}
.ll-dir-card-pay-link:hover {
    background: #dbeafe;
    border-color: #93c5fd;
    color: #1e40af;
}

/* ============================================================
   DASHBOARD v5.49 — Tableau de bord Liberta Local
   ============================================================ */

/* ── Boutons globaux ─────────────────────────────────────── */
.liberta-btn-primary {
    display: inline-flex; align-items: center; gap: 6px;
    /* padding 1.5px de plus + bordure transparente de même épaisseur que
       .liberta-btn-secondary : les 2 boutons ont ainsi une hauteur de boîte
       identique et restent alignés côte à côte (align-items:center) — sans
       ça, le bouton sans bordure paraît décalé par rapport à celui qui en a
       une (bug remonté par vidéo le 11/07). line-height fixe en plus (12/07) :
       l'emoji 🧾 a des métriques de police différentes du texte/flèche → de
       "Voir ma boutique", ce qui pouvait encore faire varier la hauteur de
       ligne malgré un padding identique. */
    padding: 9px 20px; background: #16a34a !important; color: var(--ll-white) !important;
    border: 1.5px solid transparent; border-radius: 10px; font-size: 14px; font-weight: 600;
    line-height: 1.2; cursor: pointer; text-decoration: none; transition: background .2s, transform .1s;
}
.liberta-btn-primary:hover { background: #15803d; transform: translateY(-1px); }
.liberta-btn-primary:active { transform: translateY(0); }
.liberta-btn-secondary {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 9px 18px; background: var(--ll-white); color: #374151 !important;
    border: 1.5px solid #d1d5db; border-radius: 10px; font-size: 14px; font-weight: 600;
    line-height: 1.2; cursor: pointer; text-decoration: none; transition: border-color .2s, background .2s;
}
.liberta-btn-secondary:hover { border-color: #16a34a; color: #16a34a !important; background: #f0fdf4; }

/* ── Fix ciblé topbar dashboard : conflit avec assets/css/liberta-map.css ──
   Le plugin définit SA PROPRE version de .liberta-btn-primary/-secondary
   (padding 12px 24px + margin-top 12px sur primary, aucun de ces deux sur
   secondary, font-size 13px sur secondary) — même spécificité (0,1,0) que
   les règles ci-dessus, donc l'ordre de chargement des feuilles de style
   décide laquelle gagne, indépendamment de tout ce qu'on édite ici. Boutons
   "Ouvrir la caisse"/"Voir ma boutique" restés décalés malgré 2 correctifs
   successifs (12/07) à cause de ce conflit, jamais identifié avant. Fix :
   sélecteur scopé à .lbd-topbar-right, spécificité (0,2,0) > (0,1,0),
   gagne toujours quel que soit l'ordre d'enqueue des CSS. */
.lbd-topbar-right .liberta-btn-primary,
.lbd-topbar-right .liberta-btn-secondary {
    padding: 9px 20px !important; margin-top: 0 !important; font-size: 14px !important;
    line-height: 1.2 !important; box-sizing: border-box !important;
    border: 1.5px solid transparent !important; border-radius: 10px !important;
}
.lbd-topbar-right .liberta-btn-secondary {
    padding: 9px 18px !important; border-color: #d1d5db !important;
}

/* ── Champs formulaire ───────────────────────────────────── */
.liberta-form-field { margin-bottom: 14px; }
.liberta-form-field label { display: block; font-size: 13px; font-weight: 600; color: #374151; margin-bottom: 6px; }
.liberta-form-field input[type="text"],
.liberta-form-field input[type="email"],
.liberta-form-field input[type="password"],
.liberta-form-field input[type="url"],
.liberta-form-field input[type="number"],
.liberta-form-field textarea,
.liberta-form-field select {
    width: 100%; padding: 10px 14px; border: 1.5px solid #e2e8f0; border-radius: 10px;
    font-size: 14px; background: var(--ll-white); transition: border-color .2s;
    box-sizing: border-box;
}
.liberta-form-field input:focus,
.liberta-form-field textarea:focus,
.liberta-form-field select:focus { border-color: #16a34a; outline: none; }
.liberta-form-field small { display: block; font-size: 11px; color: #94a3b8; margin-top: 4px; }

/* ══════════════════════════════════════════════════════════
   DASHBOARD — Shell app + sidebar (refonte v5.77)
   ══════════════════════════════════════════════════════════ */
#liberta-dashboard.lbd-shell {
    --lbd-green:#16a34a; --lbd-green-d:#15803d; --lbd-ink:#0f172a;
    --lbd-muted:#64748b; --lbd-line:#e8edf2;
    display: flex; align-items: flex-start; gap: 26px;
    max-width: 1120px; margin: 0 auto; padding: 24px 0 60px;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    color: var(--lbd-ink);
}

/* ── Sidebar ─────────────────────────────────────────────── */
.lbd-sidebar {
    position: sticky; top: 20px; flex: 0 0 236px; width: 236px;
    background: var(--ll-white); border: 1px solid var(--lbd-line); border-radius: 20px;
    box-shadow: 0 4px 22px rgba(15,23,42,.05);
    padding: 16px 14px; display: flex; flex-direction: column; gap: 14px;
    box-sizing: border-box;
}
.lbd-brand { display: flex; align-items: center; gap: 10px; padding: 6px 8px 4px; }
.lbd-brand-mark { font-size: 22px; line-height: 1; }
.lbd-brand-name { font-weight: 800; font-size: 16px; letter-spacing: -.01em; color: var(--lbd-ink); }

.lbd-nav { display: flex; flex-direction: column; gap: 3px; }
.lbd-nav .liberta-dash-tab {
    display: flex; align-items: center; gap: 12px;
    padding: 11px 13px; border-radius: 12px; cursor: pointer;
    font-size: 14.5px; font-weight: 600; color: #475569;
    transition: background .15s, color .15s; white-space: nowrap; position: relative;
    /* Reset chrome natif <button> (E3, Vague 5) — span devenu button pour
       être atteignable au clavier ; sans ce reset, Firefox/Safari
       affichent leur bordure/fond de bouton par défaut par-dessus. */
    background: none; border: none; width: 100%; text-align: left;
    font-family: inherit; -webkit-appearance: none; appearance: none;
}
.lbd-nav .lbd-nav-ico { font-size: 18px; width: 22px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; transition: transform .15s; }
.lbd-nav .lbd-nav-ico svg { width: 19px; height: 19px; }
.lbd-nav .lbd-nav-txt { flex: 1; }
.lbd-nav .liberta-dash-tab:hover { background: #f1f5f9; color: var(--lbd-ink); }
.lbd-nav .liberta-dash-tab.active { background: #ecfdf3; color: var(--lbd-green-d); }
.lbd-nav .liberta-dash-tab.active .lbd-nav-ico { transform: scale(1.1); }
.lbd-nav .lbd-badge { margin-left: auto; }
.lbd-nav-group {
    display: block; font-size: 10.5px; font-weight: 800; letter-spacing: .6px; text-transform: uppercase;
    color: #94a3b8; margin: 16px 0 4px 13px;
}
.lbd-nav-group:first-of-type { margin-top: 12px; }

.lbd-sidebar-foot { margin-top: auto; padding-top: 10px; border-top: 1px solid var(--lbd-line); }
.lbd-wizard-btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 6px;
    width: 100%; box-sizing: border-box;
    padding: 10px 14px; background: #f0fdf4; color: #166534; border: 1.5px solid #bbf7d0;
    border-radius: 12px; font-size: 13px; font-weight: 700; cursor: pointer; transition: background .2s;
}
.lbd-wizard-btn:hover { background: #dcfce7; }

/* ── Main ────────────────────────────────────────────────── */
.lbd-main { flex: 1; min-width: 0; }
.liberta-dash-panel { max-width: 780px; }

/* ── Topbar (header du contenu) ──────────────────────────── */
.lbd-topbar {
    display: flex; justify-content: space-between; align-items: center;
    flex-wrap: wrap; gap: 12px; margin-bottom: 22px;
    background: linear-gradient(135deg,var(--ll-white) 0%,#f5faf6 100%);
    border: 1px solid var(--lbd-line); border-radius: 18px;
    padding: 18px 22px; box-shadow: 0 4px 20px rgba(15,23,42,.04);
}
.lbd-greeting { margin: 0; font-size: 22px; font-weight: 800; color: var(--lbd-ink); letter-spacing: -.01em; }
.lbd-role-tags { display: flex; gap: 6px; margin-top: 7px; flex-wrap: wrap; }
.lbd-tag { padding: 3px 11px; border-radius: 20px; font-size: 12px; font-weight: 700; }
.lbd-tag.producer  { background: #dcfce7; color: #166534; }
.lbd-tag.organizer { background: #e0f2fe; color: #075985; }
.lbd-tag.consumer  { background: #fef9c3; color: #854d0e; }
.lbd-tag.member    { background: #eef2f6; color: #475569; }
.lbd-topbar-right { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; justify-content: flex-end; }

/* ── Mobile : la sidebar devient une barre de navigation en bas ─ */
@media (max-width: 860px) {
    #liberta-dashboard.lbd-shell { flex-direction: column; gap: 0; padding: 12px 0 calc(var(--lbd-bar-h, 92px) + 16px); }
    /* La pastille "Guide pas à pas" flotte au-dessus de la barre du bas (cf.
       .lbd-sidebar-foot plus bas) : sans cette réserve, elle recouvre le bas
       du contenu réel au lieu de flotter dans un espace vide. */
    #liberta-dashboard.lbd-shell.lbd-has-wizard { padding-bottom: calc(var(--lbd-bar-h, 92px) + 76px); }
    .lbd-sidebar {
        position: fixed; bottom: 0; left: 0; right: 0; top: auto; z-index: 9990;
        flex-direction: row; width: auto; flex: none; border-radius: 0;
        border: none; border-top: 1px solid var(--lbd-line);
        box-shadow: 0 -2px 18px rgba(15,23,42,.10);
        padding: 6px 4px calc(6px + env(safe-area-inset-bottom, 0px));
        gap: 0; overflow-x: auto; -webkit-overflow-scrolling: touch;
    }
    .lbd-brand { display: none; }
    /* Bouton Guide → pastille flottante au-dessus de la barre du bas.
       Étant en position fixe, elle survole forcément le contenu qui défile
       sous elle — pour rester discrète, elle s'estompe et devient
       non-cliquable pendant le scroll actif (le contenu redevient lisible
       à travers), puis reprend son aspect normal dès l'arrêt du scroll ;
       cf. .lbd-scrolling ajoutée/retirée en JS. */
    .lbd-sidebar-foot {
        display: block; position: fixed; right: 14px; z-index: 9991;
        /* --lbd-bar-h = hauteur RÉELLE de la barre (mesurée en JS, cf. liberta-dashboard.js) :
           elle peut s'enrouler sur 1 ou 2 lignes selon le nombre d'onglets du rôle. */
        bottom: calc(var(--lbd-bar-h, 140px) + 14px);
        margin: 0; padding: 0; border: none; width: auto;
        transition: opacity .2s ease, transform .2s ease;
    }
    body.lbd-scrolling .lbd-sidebar-foot {
        opacity: .35; transform: scale(.92); pointer-events: none;
    }
    .lbd-sidebar-foot .lbd-wizard-btn {
        width: auto; padding: 11px 18px; border-radius: 999px;
        background: #1f4636; color: var(--ll-white); border: none;
        box-shadow: 0 6px 18px rgba(15,23,42,.22);
    }
    .lbd-nav { flex-direction: row; gap: 0; flex: 1; justify-content: space-around; }
    .lbd-nav-group { display: none; }
    .lbd-nav .liberta-dash-tab {
        flex-direction: column; gap: 3px; padding: 7px 8px; border-radius: 10px;
        font-size: 10.5px; font-weight: 600; min-width: 54px; width: auto; text-align: center;
    }
    .lbd-nav .lbd-nav-ico { font-size: 21px; width: auto; justify-content: center; }
    .lbd-nav .lbd-nav-ico svg { width: 21px; height: 21px; }
    .lbd-nav .lbd-nav-txt { line-height: 1.1; }
    .lbd-nav .lbd-badge { position: absolute; top: 1px; right: 7px; margin: 0; }
    .lbd-main { width: 100%; }
    .lbd-topbar { padding: 15px 16px; border-radius: 14px; margin-bottom: 16px; }
    .liberta-dash-panel { max-width: none; }
}
.lbd-badge {
    display: inline-flex; align-items: center; justify-content: center;
    background: #dc2626; color: var(--ll-white); border-radius: 50%; font-size: 10px;
    min-width: 17px; height: 17px; padding: 0 4px; margin-left: 4px; font-weight: 700;
}

/* ── Panneaux ────────────────────────────────────────────── */
.liberta-dash-panel { animation: lbd-fade .2s ease-out; }
@keyframes lbd-fade { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }

/* ── Bannière "en attente de validation" : au-dessus de la nav mobile ── */
@media (max-width: 860px) {
    #lbt-pending-banner {
        bottom: var(--lbd-bar-h, 92px) !important;
    }
}

/* ── Alertes ─────────────────────────────────────────────── */
.lbd-alert {
    display: flex; gap: 12px; align-items: flex-start;
    padding: 14px 16px; border-radius: 12px; border-left: 4px solid;
}
.lbd-alert.warning { background: #fffbeb; border-color: #f59e0b; }
.lbd-alert.info    { background: #eff6ff; border-color: #3b82f6; }

/* ── KPIs ────────────────────────────────────────────────── */
.lbd-kpi-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px,1fr)); gap: 12px; margin-bottom: 24px; }
.lbd-kpi {
    background: var(--ll-white); border: 1.5px solid #e2e8f0; border-radius: 14px;
    padding: 18px 16px; text-align: center;
    box-shadow: 0 1px 4px rgba(0,0,0,.04);
}
.lbd-kpi-num { font-size: 28px; font-weight: 800; color: #1e293b; line-height: 1; }
.lbd-kpi-num.warn  { color: #f59e0b; }
.lbd-kpi-num.green { color: var(--lbd-green, #16a34a); }
.lbd-kpi-num.blue  { color: #3b82f6; }
.lbd-kpi-label { font-size: 11px; color: #94a3b8; margin-top: 6px; font-weight: 600; text-transform: uppercase; letter-spacing: .5px; }

/* ── Section label ───────────────────────────────────────── */
.lbd-section-label { font-size: 13px; font-weight: 700; color: var(--lbd-muted, #64748b); text-transform: uppercase; letter-spacing: .5px; margin: 0 0 12px; }

/* ── Actions rapides ─────────────────────────────────────── */
.lbd-quick-actions { margin-bottom: 24px; }
.lbd-quick-grid { display: flex; flex-wrap: wrap; gap: 10px; }
.lbd-quick-btn {
    display: flex; flex-direction: column; align-items: center; gap: 4px;
    padding: 14px 18px; background: var(--ll-white); border: 1.5px solid #e2e8f0; border-radius: 12px;
    font-size: 12px; font-weight: 600; color: #374151; cursor: pointer; text-decoration: none;
    min-width: 90px; text-align: center; transition: border-color .2s, background .2s, transform .1s;
}
.lbd-quick-btn span { font-size: 22px; display: block; line-height: 1; }
a.lbd-quick-btn { text-decoration: none !important; }
.lbd-quick-btn:hover { border-color: var(--lbd-green, #16a34a); background: #f0fdf4; color: var(--lbd-green, #16a34a); transform: translateY(-2px); }

/* ── Commandes récentes ──────────────────────────────────── */
.lbd-recent-orders { display: flex; flex-direction: column; gap: 8px; }
.lbd-order-row {
    display: flex; justify-content: space-between; align-items: center;
    padding: 12px 16px; background: #f8fafc; border-radius: 10px;
    border: 1px solid #e2e8f0; flex-wrap: wrap; gap: 8px;
}
.lbd-order-date { font-size: 12px; color: #94a3b8; margin-left: 8px; }
.lbd-order-total { font-weight: 700; font-size: 14px; color: #1e293b; }
.lbd-order-status {
    padding: 3px 10px; border-radius: 20px; font-size: 11px; font-weight: 600;
    background: #f1f5f9; color: var(--lbd-muted, #64748b);
}
.lbd-order-status.processing, .lbd-order-status.on-hold { background: #fef9c3; color: #854d0e; }
.lbd-order-status.completed { background: #dcfce7; color: #166534; }
.lbd-order-status.cancelled { background: #fee2e2; color: #991b1b; }

/* ── Boutique (onglet Ventes) ────────────────────────────── */
.liberta-boutique-dashboard .lbd-header {
    display: flex; justify-content: space-between; align-items: flex-start;
    flex-wrap: wrap; gap: 10px; margin-bottom: 16px;
}
.lbd-store-name { margin: 0; font-size: 18px; font-weight: 700; color: #1e293b; }
.lbd-visit-link { font-size: 13px; color: var(--lbd-green, #16a34a); text-decoration: none; display: block; margin-top: 4px; }
.lbd-visit-link:hover { text-decoration: underline; }
.lbd-stats { display: flex; gap: 12px; flex-wrap: wrap; margin-bottom: 16px; }
.lbd-stat-card {
    flex: 1; min-width: 100px; text-align: center; padding: 16px 12px;
    background: var(--ll-white); border: 1.5px solid #e2e8f0; border-radius: 12px;
    text-decoration: none; transition: border-color .2s;
}
.lbd-stat-card:hover { border-color: var(--lbd-green, #16a34a); }
.lbd-stat-num { display: block; font-size: 28px; font-weight: 800; color: var(--lbd-green, #16a34a); }
.lbd-stat-label { display: block; font-size: 12px; color: var(--lbd-muted, #64748b); margin-top: 4px; }
.lbd-actions { display: flex; gap: 10px; flex-wrap: wrap; }

/* ── Lieux / Présence ────────────────────────────────────── */
.liberta-dash-location-card {
    background: var(--ll-white); border: 1.5px solid #e2e8f0; border-radius: 12px;
    padding: 16px; margin-bottom: 10px;
}
.liberta-dash-loc-header { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 8px; margin-bottom: 10px; }
.liberta-dash-loc-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.liberta-status-badge {
    padding: 3px 10px; border-radius: 20px; font-size: 11px; font-weight: 700;
}
.liberta-status-badge.status-approved  { background: #dcfce7; color: #166534; }
.liberta-status-badge.status-approved.is-private { background: #e0e7ff; color: #3730a3; }
.liberta-status-badge.status-pending   { background: #fef9c3; color: #854d0e; }
.liberta-status-badge.status-suspended { background: #fee2e2; color: #991b1b; }

/* ── Mode privé — toggle switch ─────────────────────────── */
.lbd-toggle-switch { position:relative; display:inline-block; width:44px; height:24px; cursor:pointer; flex-shrink:0; }
.lbd-toggle-switch input { opacity:0; width:0; height:0; }
.lbd-toggle-slider {
    position:absolute; inset:0; background:#cbd5e1; border-radius:24px;
    transition:background .2s; cursor:pointer;
}
.lbd-toggle-slider::before {
    content:''; position:absolute; height:18px; width:18px;
    left:3px; bottom:3px; background:var(--ll-white); border-radius:50%;
    transition:transform .2s; box-shadow:0 1px 3px rgba(0,0,0,.2);
}
.lbd-toggle-switch input:checked + .lbd-toggle-slider { background:var(--lbd-green, #16a34a); }
.lbd-toggle-switch input:checked + .lbd-toggle-slider::before { transform:translateX(20px); }
.lbd-private-mode-box { transition:border-color .25s, background .25s; }

/* ── Info box & Co-livraison ─────────────────────────────── */
.lbd-info-box {
    background: #f0fdf4; border: 1px solid #86efac; border-radius: 12px;
    padding: 14px 16px; font-size: 13px; color: #166534; line-height: 1.6;
}
.lbd-colivraison-section {
    border: 1.5px solid #e2e8f0; border-radius: 14px; overflow: hidden;
}
.lbd-colivraison-section > summary {
    display: flex; justify-content: space-between; align-items: center;
    padding: 14px 18px; cursor: pointer; background: #f8fafc;
    font-weight: 600; font-size: 14px; list-style: none;
}
.lbd-colivraison-section > summary::-webkit-details-marker { display: none; }
.lbd-colivraison-section > summary::after { content: '▼'; font-size: 11px; color: #94a3b8; transition: transform .2s; }
.lbd-colivraison-section[open] > summary::after { transform: rotate(180deg); }
.lbd-details-hint { font-size: 12px; color: #94a3b8; font-weight: 400; flex: 1; margin: 0 12px; }
.lbd-colivraison-section > div { padding: 0 18px 18px; }

/* ── Engagements ─────────────────────────────────────────── */
.lbd-engagements-sections { display: flex; flex-direction: column; gap: 0; }
.lbd-eng-section { padding: 20px 0; }
.lbd-eng-hr { border: none; border-top: 1px solid #f1f5f9; margin: 0; }
.lbd-eng-title { font-size: 16px; font-weight: 700; color: #1e293b; margin: 0 0 14px; }

/* ── Cartes adoptions ────────────────────────────────────── */
.ll-adopt-card {
    background: var(--ll-white); border: 1.5px solid #e2e8f0; border-radius: 12px;
    padding: 16px; margin-bottom: 10px; transition: border-color .2s;
}
.ll-adopt-card:hover { border-color: #86efac; }
.ll-adoption-card {
    background: #fef9ee; border: 1.5px solid #fde68a; border-radius: 12px; padding: 16px; margin-bottom: 10px;
}

/* ── Consignes ───────────────────────────────────────────── */
.lbd-consignes-panel {}
.lbd-consignes-summary { display: flex; gap: 12px; flex-wrap: wrap; margin-bottom: 16px; }
.lbd-consignes-list { display: flex; flex-direction: column; gap: 10px; }
.lbd-consigne-row {
    background: var(--ll-white); border: 1.5px solid #fde68a; border-radius: 12px; padding: 14px;
    transition: opacity .3s;
}
.lbd-consigne-row.lbd-consigne-done { border-color: #86efac; background: #f0fdf4; }
.lbd-consigne-main {
    display: flex; gap: 10px; align-items: baseline; flex-wrap: wrap; margin-bottom: 6px;
}
.lbd-consigne-label { font-weight: 700; font-size: 14px; color: #92400e; }
.lbd-consigne-product { font-size: 12px; color: var(--lbd-muted, #64748b); }
.lbd-consigne-meta {
    display: flex; gap: 12px; flex-wrap: wrap; font-size: 12px; color: var(--lbd-muted, #64748b); margin-bottom: 10px;
}
.lbd-consigne-amount { font-weight: 700; color: #1e293b; }
.lbd-consigne-actions { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.lbd-consignes-info { color: var(--lbd-muted, #64748b); font-size: 13px; margin-bottom: 12px; }

/* ── Accordéon Compte ────────────────────────────────────── */
.lbd-compte-accordion { display: flex; flex-direction: column; gap: 8px; }
.lbd-acc-section {
    border: 1.5px solid #e2e8f0; border-radius: 14px; overflow: hidden;
    transition: border-color .2s;
}
.lbd-acc-section[open] { border-color: #86efac; }
.lbd-acc-section > summary {
    display: flex; justify-content: space-between; align-items: center;
    padding: 14px 18px; cursor: pointer; background: #f8fafc;
    font-weight: 600; font-size: 14px; list-style: none; user-select: none;
    transition: background .2s;
}
.lbd-acc-section[open] > summary { background: #f0fdf4; }
.lbd-acc-section > summary::-webkit-details-marker { display: none; }
.lbd-acc-section > summary::after { content: '▼'; font-size: 11px; color: #94a3b8; transition: transform .2s; margin-left: 8px; }
.lbd-acc-section[open] > summary::after { transform: rotate(180deg); }
.lbd-acc-body { padding: 20px 18px; }

/* ── Cartes de découverte (E6, Vague 5) — Accueil dashboard ─────────── */
.lbd-discover-grid {
    display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 14px;
}
.lbd-discover-card {
    display: flex; gap: 12px; align-items: flex-start;
    padding: 14px; border: 1px solid var(--lbd-line, #e8edf2); border-radius: 12px;
    background: var(--ll-white);
}
.lbd-discover-ico { font-size: 22px; line-height: 1; flex-shrink: 0; }
.lbd-discover-card strong { display: block; font-size: 13.5px; color: var(--lbd-ink, #0f172a); margin-bottom: 3px; }
.lbd-discover-card p { font-size: 12.5px; color: var(--lbd-muted, #64748b); line-height: 1.5; margin: 0 0 10px; }
.lbd-discover-cta {
    display: inline-flex; align-items: center; gap: 4px;
    background: none; border: none; padding: 0; margin: 0;
    font-size: 12.5px; font-weight: 700; color: var(--lbd-green, #16a34a);
    cursor: pointer; font-family: inherit;
}
.lbd-discover-cta:hover { color: var(--lbd-green-d, #15803d); text-decoration: underline; }
.lbd-discover-cta:focus-visible { outline: 2.5px solid var(--lbd-green, #16a34a); outline-offset: 2px; border-radius: 3px; }
.lbd-acc-badge {
    padding: 3px 10px; border-radius: 20px; font-size: 11px; font-weight: 700;
    margin-left: auto; margin-right: 8px;
}
.lbd-acc-badge.ok   { background: #dcfce7; color: #166534; }
.lbd-acc-badge.warn { background: #fef9c3; color: #854d0e; }

/* ── Sous-accordéons Paiements ───────────────────────────── */
.lbd-pay-section {
    border: 1px solid #e2e8f0; border-radius: 10px; overflow: hidden; margin-bottom: 8px;
}
.lbd-pay-section > summary {
    display: flex; justify-content: space-between; align-items: center;
    padding: 12px 14px; cursor: pointer; background: #fafafa; font-size: 14px; list-style: none;
}
.lbd-pay-section > summary::-webkit-details-marker { display: none; }
.lbd-pay-section[open] > summary { background: #f0fdf4; }
.lbd-pay-body { padding: 14px; }
.lbd-pay-status { font-size: 12px; font-weight: 700; }
.lbd-pay-status.ok { color: var(--lbd-green, #16a34a); }

/* ── Profil aplati : sections plates + grille paiements (v5.77) ── */
.lbd-profile-section {
    border: 1px solid var(--lbd-line, #e8edf2); border-radius: 16px;
    background: var(--ll-white); padding: 18px 18px 20px; margin-bottom: 8px;
    box-shadow: 0 2px 12px rgba(15,23,42,.04);
}
.lbd-profile-head { display: flex; align-items: center; gap: 10px; margin-bottom: 4px; }
.lbd-profile-title { margin: 0; font-size: 16px; font-weight: 800; color: var(--lbd-ink, #0f172a); letter-spacing: -.01em; }
.lbd-profile-head .lbd-acc-badge { margin-left: auto; margin-right: 0; }
.lbd-profile-sub { font-size: 13px; color: var(--lbd-muted, #64748b); margin: 0 0 16px; line-height: 1.5; }

/* Comparatif virement direct vs Stripe */
.lbd-bank-compare { border: 1px solid #e6ebf0; border-radius: 12px; background: #f8fafc; margin-bottom: 16px; overflow: hidden; }
.lbd-bank-compare > summary { cursor: pointer; padding: 12px 16px; font-size: 14px; font-weight: 700; color: var(--lbd-ink, #0f172a); list-style: none; }
.lbd-bank-compare > summary::-webkit-details-marker { display: none; }
.lbd-bank-compare > summary::before { content: '▸'; margin-right: 8px; color: #94a3b8; }
.lbd-bank-compare[open] > summary::before { content: '▾'; }
.lbd-bank-compare[open] > summary { background: #eef2f6; }
.lbd-bank-compare-body { padding: 14px 16px 16px; }
.lbd-bank-compare-table { overflow-x: auto; }
.lbd-bank-compare-table table { width: 100%; border-collapse: collapse; font-size: 13px; min-width: 460px; }
.lbd-bank-compare-table th, .lbd-bank-compare-table td { text-align: left; padding: 9px 12px; border-bottom: 1px solid var(--lbd-line, #e8edf2); vertical-align: top; }
.lbd-bank-compare-table thead th { font-size: 13px; font-weight: 800; color: var(--lbd-ink, #0f172a); background: var(--ll-white); border-bottom: 2px solid #e2e8f0; }
.lbd-bank-compare-table tbody td:first-child { font-weight: 700; color: #475569; white-space: nowrap; }
.lbd-bank-compare-table tbody tr:last-child td { border-bottom: none; }

/* Grille de moyens de paiement — un seul niveau, cartes claires */
.lbd-pay-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(258px, 1fr)); gap: 12px; align-items: start; }
.lbd-pay-grid .lbd-pay-section {
    margin-bottom: 0; border: 1.5px solid #e6ebf0; border-radius: 14px; background: var(--ll-white);
    transition: border-color .15s, box-shadow .15s; align-self: start;
}
.lbd-pay-grid .lbd-pay-section:hover { border-color: #cbd5e1; }
.lbd-pay-grid .lbd-pay-section[open] {
    border-color: #86efac; box-shadow: 0 3px 16px rgba(22,163,74,.09); grid-column: 1 / -1;
}
.lbd-pay-grid .lbd-pay-section > summary {
    flex-wrap: wrap; gap: 6px; padding: 14px 16px; background: var(--ll-white); font-weight: 700; border-radius: 13px;
}
.lbd-pay-grid .lbd-pay-section[open] > summary { background: #f0fdf4; border-radius: 13px 13px 0 0; }
.lbd-pay-grid .lbd-pay-section > summary::after { content: '+'; font-size: 18px; line-height: 1; color: #94a3b8; font-weight: 700; margin-left: auto; }
.lbd-pay-grid .lbd-pay-section[open] > summary::after { content: '\2013'; }
.lbd-pay-grid .lbd-pay-status { margin-left: 4px; padding: 2px 9px; border-radius: 20px; background: #f1f5f9; color: var(--lbd-muted, #64748b); }
.lbd-pay-grid .lbd-pay-status.ok { background: #dcfce7; color: #166534; }
.lbd-pay-ok-bar {
    background: #f0fdf4; border: 1px solid #86efac; border-radius: 8px;
    padding: 10px 14px; font-size: 13px; color: #166534;
}

/* ── Hero Stripe (moyen recommandé) ───────────────────────── */
.lbd-pay-hero {
    position: relative; border: 2px solid #86efac; border-radius: 16px; background: var(--ll-white);
    padding: 18px 20px 16px; margin-bottom: 14px;
    box-shadow: 0 4px 20px rgba(22,163,74,.08);
}
.lbd-pay-hero-flag {
    position: absolute; top: -11px; left: 16px;
    background: linear-gradient(135deg, var(--lbd-green, #16a34a), var(--lbd-green-d, #15803d)); color: var(--ll-white);
    font-size: 11px; font-weight: 800; letter-spacing: .4px;
    padding: 3px 12px; border-radius: 99px;
}
.lbd-pay-hero-head {
    display: flex; flex-wrap: wrap; align-items: center; gap: 8px;
    font-size: 16px; font-weight: 800; color: var(--lbd-ink, #0f172a); margin: 4px 0 10px;
}
.lbd-pay-hero-head .lbd-pay-status { padding: 2px 9px; border-radius: 20px; background: #f1f5f9; color: var(--lbd-muted, #64748b); margin-left: auto; }
.lbd-pay-hero-head .lbd-pay-status.ok { background: #dcfce7; color: #166534; }
.lbd-pay-hero-perks { margin: 0 0 8px; padding-left: 20px; font-size: 13.5px; color: #334155; line-height: 1.75; }
.lbd-pay-hero-fees { font-size: 12px; color: #94a3b8; margin: 0 0 12px; }
.lbd-pay-hero .lbd-pay-body { padding: 12px 0 0; border-top: 1px dashed #e2e8f0; }

/* ── Repli « Autres moyens d'encaissement » ───────────────── */
.lbd-pay-more { margin-top: 14px; border: 1px dashed #d3dce5; border-radius: 12px; background: #fafbfc; }
.lbd-pay-more > summary {
    cursor: pointer; list-style: none; padding: 12px 16px;
    font-size: 13.5px; font-weight: 600; color: var(--lbd-muted, #64748b);
}
.lbd-pay-more > summary::-webkit-details-marker { display: none; }
.lbd-pay-more > summary::before { content: '▸'; margin-right: 8px; color: #94a3b8; }
.lbd-pay-more[open] > summary::before { content: '▾'; }
.lbd-pay-more[open] > summary { color: var(--lbd-ink, #0f172a); border-bottom: 1px dashed #d3dce5; }
.lbd-pay-more-body { padding: 14px 16px 16px; }

/* ── Bouton edit location ────────────────────────────────── */
.liberta-btn-edit-location {
    padding: 8px 14px; background: var(--ll-white); border: 1.5px solid #d1d5db; border-radius: 8px;
    font-size: 13px; font-weight: 600; color: #374151; cursor: pointer; transition: border-color .2s;
}
.liberta-btn-edit-location:hover { border-color: var(--lbd-green, #16a34a); color: var(--lbd-green, #16a34a); }

/* ── Dashboard v5.51 "pour les nuls" ────────────────────── */

/* Tab title + description */
.lbd-tab-title {
    font-size: 20px; font-weight: 700; color: #111827; margin: 0 0 4px;
}
.lbd-tab-desc {
    font-size: 14px; color: #6b7280; margin: 0 0 20px;
}

/* Action cards ("Ce qui demande votre attention") */
.lbd-attention-section { margin-bottom: 24px; }
.lbd-attention-label {
    font-size: 11px; font-weight: 700; letter-spacing: .08em;
    text-transform: uppercase; color: #9ca3af; margin: 0 0 10px;
}
.lbd-attention-card {
    display: flex; align-items: flex-start; gap: 14px;
    border-radius: 12px; padding: 16px 18px; margin-bottom: 10px;
    border: 1px solid transparent;
}
.lbd-attention-card.urgent  { background: #fff7ed; border-color: #fed7aa; }
.lbd-attention-card.info    { background: #eff6ff; border-color: #bfdbfe; }
.lbd-attention-card.warning { background: #fefce8; border-color: #fde68a; }
.lbd-att-icon {
    font-size: 24px; line-height: 1; flex-shrink: 0; margin-top: 2px;
}
.lbd-att-body { flex: 1; }
.lbd-att-title {
    font-size: 15px; font-weight: 700; margin: 0 0 3px;
}
.lbd-attention-card.urgent  .lbd-att-title { color: #9a3412; }
.lbd-attention-card.info    .lbd-att-title { color: #1e40af; }
.lbd-attention-card.warning .lbd-att-title { color: #92400e; }
.lbd-att-help {
    font-size: 13px; color: #6b7280; margin: 0 0 10px;
}
.lbd-att-btn {
    display: inline-block; padding: 7px 16px; border-radius: 8px;
    font-size: 13px; font-weight: 600; text-decoration: none;
    border: none; cursor: pointer;
}
.lbd-attention-card.urgent  .lbd-att-btn { background: #fb923c; color: var(--ll-white); }
.lbd-attention-card.info    .lbd-att-btn { background: #3b82f6; color: var(--ll-white); }
.lbd-attention-card.warning .lbd-att-btn { background: #f59e0b; color: var(--ll-white); }

/* All-good state */
.lbd-all-good {
    text-align: center; padding: 28px 20px; background: #f0fdf4;
    border: 1px solid #bbf7d0; border-radius: 12px; margin-bottom: 20px;
}
.lbd-all-good-icon { font-size: 36px; display: block; margin-bottom: 8px; }
.lbd-all-good p { font-size: 15px; color: #166534; margin: 0; font-weight: 600; }

/* Revenue strip */
.lbd-revenue-strip {
    display: flex; align-items: center; justify-content: space-between;
    background: #f9fafb; border: 1px solid #e5e7eb; border-radius: 12px;
    padding: 16px 20px; margin-bottom: 20px; flex-wrap: wrap; gap: 12px;
}
.lbd-rev-label { font-size: 13px; color: #6b7280; }
.lbd-rev-amount { font-size: 28px; font-weight: 800; color: #111827; }
.lbd-rev-period { font-size: 12px; color: #9ca3af; }

/* Empty state */
.lbd-empty-state {
    text-align: center; padding: 32px 20px;
}
.lbd-empty-icon { font-size: 40px; display: block; margin-bottom: 10px; }
.lbd-empty-title { font-size: 17px; font-weight: 700; color: #374151; margin: 0 0 6px; }
.lbd-empty-text  { font-size: 14px; color: #6b7280; margin: 0 0 16px; }

/* Boutique section inside "Ma boutique" tab */
.lbd-boutique-section { margin-bottom: 28px; }
.lbd-boutique-section > h4 {
    font-size: 14px; font-weight: 700; color: #374151;
    margin: 0 0 10px; padding-bottom: 6px; border-bottom: 1px solid #e5e7eb;
}
.lbd-shop-links {
    display: flex; flex-wrap: wrap; gap: 10px; margin-top: 12px;
}
.lbd-shop-links a {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 8px 14px; background: var(--ll-white); border: 1.5px solid #d1d5db;
    border-radius: 8px; font-size: 13px; font-weight: 600; color: #374151;
    text-decoration: none; transition: border-color .15s, color .15s;
}
.lbd-shop-links a:hover { border-color: var(--lbd-green, #16a34a); color: var(--lbd-green, #16a34a); }

/* Soutiens / engagement cards */
.lbd-soutien-section { margin-bottom: 24px; }
.lbd-soutien-section > h4 {
    font-size: 14px; font-weight: 700; color: #374151;
    margin: 0 0 8px; padding-bottom: 6px; border-bottom: 1px solid #e5e7eb;
}

/* ══════════════════════════════════════════════════════════
   DASHBOARD — Polish des panneaux (design system cohérent v5.77)
   ══════════════════════════════════════════════════════════ */
.lbd-main .lbd-tab-title {
    font-size: 23px; font-weight: 800; color: var(--lbd-ink, #0f172a);
    letter-spacing: -.015em; margin: 0 0 6px;
}
.lbd-main .lbd-tab-desc {
    font-size: 14.5px; color: var(--lbd-muted, #64748b); line-height: 1.55; margin: 0 0 22px; max-width: 62ch;
}
.lbd-section-label {
    font-size: 12px; font-weight: 800; color: #94a3b8;
    text-transform: uppercase; letter-spacing: .06em; margin: 0 0 12px;
}
.lbd-boutique-section { margin-bottom: 26px; }

/* Cartes unifiées : lieu, événement, commande */
.liberta-dash-location-card,
.lbd-order-row {
    border-radius: 16px; border: 1px solid var(--lbd-line, #e8edf2);
    box-shadow: 0 2px 10px rgba(15,23,42,.04);
    transition: border-color .15s, box-shadow .15s;
}
.liberta-event-card {
    background: var(--ll-white); border: 1px solid var(--lbd-line, #e8edf2);
    border-radius: 16px; padding: 16px 18px; margin-bottom: 12px;
    box-shadow: 0 2px 10px rgba(15,23,42,.04);
    transition: border-color .15s, box-shadow .15s;
}
.liberta-event-card.event-past { opacity: .72; }
.liberta-event-meta {
    display: flex; flex-wrap: wrap; gap: 8px 16px; margin-top: 8px;
    font-size: 13px; color: var(--lbd-muted, #64748b);
}
.liberta-dash-location-card:hover,
.liberta-event-card:hover {
    border-color: #cbd5e1; box-shadow: 0 5px 18px rgba(15,23,42,.07);
}
.lbd-order-row { background: var(--ll-white); }

/* État vide → carte douce en pointillés */
.lbd-empty-state {
    background: #fafbfc; border: 1.5px dashed #d8e0e8; border-radius: 16px;
    padding: 34px 22px;
}

/* Accordéons de section (livraison, commandes, achats, profil) — cohérence */
.lbd-acc-section,
.lbd-colivraison-section { border-radius: 16px; border-color: var(--lbd-line, #e8edf2); }
.lbd-acc-section > summary,
.lbd-colivraison-section > summary { background: var(--ll-white); font-weight: 700; font-size: 14.5px; }
.lbd-acc-section[open] > summary,
.lbd-colivraison-section[open] > summary { background: #f6faf7; }

/* Boutons liens boutique + statut */
.lbd-shop-links a { border-radius: 10px; }
.liberta-status-badge { letter-spacing: .01em; }

/* Responsive ──────────────────────────────────────────── */
/* ── Responsive ──────────────────────────────────────────── */
@media (max-width: 600px) {
    .lbd-greeting { font-size: 18px; }
    .lbd-kpi-grid { grid-template-columns: repeat(2, 1fr); }
    .lbd-quick-btn { min-width: 70px; padding: 10px 12px; }
    .lbd-acc-section > summary { padding: 12px 14px; }
    .lbd-acc-body { padding: 14px; }
    .lbd-attention-card { padding: 12px 14px; gap: 10px; }
    .lbd-rev-amount { font-size: 22px; }
    .lbd-revenue-strip { padding: 12px 14px; }
}

/* ── Récapitulatif multi-vendeurs (panier WC Blocks) ──── */
.liberta-cart-vendor-summary {
    background: #f0fdf4;
    border: 1.5px solid #bbf7d0;
    border-radius: 12px;
    padding: 18px 20px;
    margin-bottom: 24px;
}
.liberta-cvsv-card {
    background: var(--ll-white);
    border: 1px solid #e2e8f0;
    border-radius: 8px;
    padding: 12px 14px;
    margin-bottom: 10px;
}
.liberta-cvsv-card:last-child { margin-bottom: 0; }
.liberta-cvsv-header { display: flex; align-items: center; gap: 10px; margin-bottom: 6px; }
.liberta-cvsv-city { font-size: 12px; color: var(--lbd-muted, #64748b); }
.liberta-cvsv-items { margin: 0 0 6px 18px; padding: 0; font-size: 13px; color: #475569; }
.liberta-cvsv-sub { font-size: 13px; color: #475569; }

/* ── Widget "Où va votre argent" (panier + checkout, WC Blocks) ──── */
.liberta-repartition-widget {
    background: #fbf7ec;
    border: 1.5px solid #e3d9bd;
    border-radius: 12px;
    padding: 18px 20px;
    margin-bottom: 24px;
}
.lrw-title { font-size: 15px; font-weight: 700; margin: 0 0 12px; color: #1a3a2a; }
.lrw-row {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    flex-wrap: nowrap;
    gap: 10px;
    font-size: 13px;
    color: #475569;
    padding: 5px 0;
    border-bottom: 1px solid rgba(30, 41, 59, .06);
}
.lrw-row:last-of-type { border-bottom: none; }
.lrw-row .lrw-label { min-width: 0; }
.lrw-value { font-weight: 600; color: #1a3a2a; white-space: nowrap; flex-shrink: 0; }
.lrw-stripe { cursor: help; }
.lrw-stripe .lrw-info { opacity: .6; font-size: 12px; }
.lrw-stripe-pending .lrw-value { color: #94a3b8; font-weight: 500; font-style: italic; }
.lrw-stripe-pending { border-bottom-style: dashed; }
.lrw-stripe-caption {
    font-size: 11.5px;
    color: #94a3b8;
    font-style: italic;
    margin-top: -2px;
    padding-bottom: 4px;
}
@media (max-width: 420px) {
    .lrw-row { font-size: 12.5px; gap: 8px; }
    .lrw-title { font-size: 14px; }
}

/* ── Diagramme Sankey du widget (décoratif — les .lrw-row texte restent
   le contenu accessible principal, affichées en dessous) ──────────── */
.lrw-sankey { margin: 0 0 14px; }
.lrw-sankey svg { display: block; width: 100%; height: auto; max-width: 420px; margin: 0 auto; }
.lrw-node-src { fill: #1a3a2a; }
.lrw-sankey-label { font-size: 11px; fill: #475569; font-family: inherit; dominant-baseline: middle; }
.lrw-sankey-src-label { font-size: 10px; fill: var(--lbd-muted, #64748b); font-style: italic; }
@media (max-width: 420px) {
    .lrw-sankey svg { max-width: 320px; }
}

.lrw-detail { margin-top: 10px; font-size: 13px; }
.lrw-detail summary {
    cursor: pointer;
    color: var(--lbd-muted, #64748b);
    text-decoration: underline;
    text-underline-offset: 3px;
}
.lrw-detail summary:hover { color: #1a3a2a; }
.lrw-detail-vendor {
    background: var(--ll-white);
    border: 1px solid #e2e8f0;
    border-radius: 8px;
    padding: 10px 12px;
    margin-top: 8px;
}
.lrw-detail-vendor strong { display: block; margin-bottom: 4px; color: #1a3a2a; }
.lrw-detail-vendor .lrw-row { font-size: 12.5px; }

/* ── Co-livraison : badge produit ─────────────────────── */
.liberta-coliv-product-badge {
    background: #f0fdf4;
    border: 1.5px solid #86efac;
    border-radius: 8px;
    padding: 10px 14px;
    font-size: 13px;
    color: #166534;
    margin: 12px 0;
    line-height: 1.5;
}
.liberta-coliv-product-badge strong { color: var(--lbd-green-d, #15803d); }

/* ── Co-livraison : formulaire conditions partenaire ─── */
.liberta-coliv-cond-form { margin-bottom: 8px; }
.liberta-partner-card {
    display: flex; align-items: flex-start; gap: 10px;
    background: var(--ll-white); border: 1px solid #e2e8f0;
    border-radius: 8px; padding: 12px 14px; margin-bottom: 6px;
}

/* ── Logo Liberta Local — contrainte de taille header ────────────────── */
.custom-logo-link img.custom-logo,
.ast-logo-container img,
header .custom-logo {
    height: 52px !important;
    width: auto !important;
    max-width: none !important;
}

/* Logo transparent — agrandissement + masquer le titre texte dupliqué */
.custom-logo-link img.custom-logo,
.ast-logo-container img,
header .custom-logo {
    height: 68px !important;
    width: auto !important;
}
/* Mobile : 68px déforme le header et le menu — trop grand pour la hauteur
   disponible (constaté 11/07, remonté par l'utilisateur). */
@media (max-width: 921px) {
    .custom-logo-link img.custom-logo,
    .ast-logo-container img,
    header .custom-logo {
        height: 40px !important;
        width: auto !important;
    }
}
/* Masquer le titre texte à côté du logo (déjà inclus dans le logo) */
.ast-site-title,
.site-title,
#masthead .site-branding .ast-site-title {
    display: none !important;
}

/* ── ALTCHA — masquer le branding + espacement CGU ─────────────────────── */
.altcha-footer,
altcha-widget::part(footer),
.altcha .altcha-footer,
.altcha-logo,
.altcha-main .altcha-logo { display: none !important; }
altcha-widget { display: block; margin-bottom: 16px; }

/* ── Masquer liens/sections vendeur Dokan pour les membres non-vendeurs ─── */
.dokan-dashboard-menu,
.dokan-go-seller,
.woocommerce-MyAccount-navigation-link--dokan-seller-setup,
.woocommerce-MyAccount-navigation-link--dokan-dashboard,
.go-to-vendor-dashboard,
a[href*="dashboard/"][href*="dokan"] {
    display: none !important;
}
/* Ré-afficher pour les vrais vendeurs (role seller) */
.seller .dokan-dashboard-menu,
.seller a[href*="dashboard/"] {
    display: block !important;
}

/* ── Lien don dans CTA homepage ─────────────────────────────────────────── */
.ll-cta-don-line { margin-top:20px !important; font-size:14px !important; color:var(--ll-white) !important; opacity:1 !important; }
.ll-cta-don-link { color:#4ade80 !important; font-weight:700 !important; text-decoration:underline !important; }

/* ── Footer enrichi (navigation + liens légaux + contact) ───────────────── */
.ll-footer-links {
    display: flex; flex-wrap: wrap; justify-content: center;
    gap: 8px 22px; margin-bottom: 12px;
}
.ast-footer-copyright .ll-footer-links a,
.ll-footer-links a {
    color: var(--ll-green) !important; font-size: 14px; font-weight: 600;
    text-decoration: none; transition: color .15s;
}
.ast-footer-copyright .ll-footer-links a:hover,
.ll-footer-links a:hover { color: #1a5c3f !important; text-decoration: underline; }
.ast-footer-copyright .ll-footer-copy,
.ll-footer-copy { font-size: 13px; color: var(--lbd-muted, #64748b); }

/* ── Boutons "Ajouter au panier" des blocs WooCommerce (product-collection,
      cross-sells, panier) — forcer le vert Liberta (corrige le bleu WC) ──── */
.wc-block-components-product-button__button,
.wc-block-components-product-button .wp-block-button__link,
.wc-block-grid__product .wp-block-button__link {
    background-color: var(--ll-green) !important;
    color: var(--ll-white) !important;
    border-color: var(--ll-green) !important;
    border-radius: 8px !important;
    font-weight: 700 !important;
}
.wc-block-components-product-button__button:hover,
.wc-block-components-product-button .wp-block-button__link:hover,
.wc-block-grid__product .wp-block-button__link:hover {
    background-color: #1a5c3f !important;
    border-color: #1a5c3f !important;
}

/* ── CTA panier / commande (WC Blocks) : "Valider la commande" + "Commander"
      bleu WC par défaut → vert charte Liberta ──── */
.wp-block-woocommerce-cart .wc-block-components-button.contained,
.wp-block-woocommerce-checkout .wc-block-components-button.contained,
.wc-block-cart__submit-button,
.wc-block-components-checkout-place-order-button {
    background-color: var(--ll-green) !important;
    color: var(--ll-white) !important;
    border-color: var(--ll-green) !important;
    border-radius: 10px !important;
}
.wp-block-woocommerce-cart .wc-block-components-button.contained:hover,
.wp-block-woocommerce-checkout .wc-block-components-button.contained:hover,
.wc-block-cart__submit-button:hover,
.wc-block-components-checkout-place-order-button:hover {
    background-color: #1a4a36 !important;
    border-color: #1a4a36 !important;
}

/* ═══════════════════════════════════════════════════════════
   PANIER / COMMANDE (WC Blocks) — identité Liberta Local
   11/07 : retour utilisateur — ressemblait au style WooCommerce/Dokan
   par défaut, contenu collé aux bords sur mobile. Classes vérifiées
   dans woocommerce/assets/client/blocks/{cart,checkout}.css (WC 10.6.1)
   avant d'écrire les sélecteurs ci-dessous — pas de nom deviné.
   ═══════════════════════════════════════════════════════════ */
/* Cause réelle du décalage "serré à gauche" : Astra applique sa propre
   règle .alignwide en calc(-41vw + 50%) (class-astra-dynamic-css.php) pour
   élargir le bloc hors de sa colonne — ce calcul en vw inclut la largeur de
   la scrollbar desktop alors que le "50%" du conteneur ne l'inclut pas,
   d'où un léger décalage asymétrique systématique. Cette règle Astra
   (spécificité 0,3,0) gagnait sur un simple .wp-block-woocommerce-cart
   (0,1,0) — il faut égaler/dépasser sa spécificité pour la neutraliser. */
.ast-no-sidebar .entry-content .wp-block-woocommerce-cart.alignwide,
.ast-no-sidebar .entry-content .wp-block-woocommerce-checkout.alignwide {
    margin-left: 0;
    margin-right: 0;
    max-width: 100%;
    width: 100%;
}
.wp-block-woocommerce-cart,
.wp-block-woocommerce-checkout {
    padding-left: 16px;
    padding-right: 16px;
    box-sizing: border-box;
}
@media (max-width: 480px) {
    .wp-block-woocommerce-cart,
    .wp-block-woocommerce-checkout {
        padding-left: 12px;
        padding-right: 12px;
    }
}

/* Titres de section : police éditoriale du site (Lora) au lieu du sans-serif
   WooCommerce par défaut, cohérent avec "Panier"/"Actions rapides" ailleurs. */
.wp-block-woocommerce-cart h2,
.wp-block-woocommerce-checkout h2,
.wc-block-components-checkout-step__title,
.wc-block-cart__totals-title,
.wc-block-components-checkout-order-summary__title-text {
    font-family: 'Lora', serif !important;
    color: #1f2937 !important;
    font-weight: 700 !important;
}

/* Étapes de commande : cartes blanches arrondies avec petite icône de
   repère (l'ordre des 5 étapes est fixe dans le bloc Checkout WC :
   coordonnées → adresse → livraison → paiement → infos complémentaires). */
.wc-block-components-checkout-step {
    background: var(--ll-white);
    border: 1px solid #ecebe3;
    border-radius: 16px;
    padding: 18px 18px 20px;
    margin-bottom: 14px;
    box-shadow: 0 4px 20px rgba(15,23,42,.04);
}
.wc-block-components-checkout-step:nth-of-type(1) .wc-block-components-checkout-step__title::before { content: '📧 '; }
.wc-block-components-checkout-step:nth-of-type(2) .wc-block-components-checkout-step__title::before { content: '📍 '; }
.wc-block-components-checkout-step:nth-of-type(3) .wc-block-components-checkout-step__title::before { content: '🚚 '; }
.wc-block-components-checkout-step:nth-of-type(4) .wc-block-components-checkout-step__title::before { content: '💳 '; }
.wc-block-components-checkout-step:nth-of-type(5) .wc-block-components-checkout-step__title::before { content: '📝 '; }

/* Panier : liste d'articles + résumé de commande en cartes blanches,
   même langage visuel que les cartes du tableau de bord (.lbd-topbar). */
.wc-block-cart-items,
.wc-block-components-panel,
.wc-block-cart .wp-block-woocommerce-cart-order-summary-block {
    background: var(--ll-white);
    border: 1px solid #ecebe3;
    border-radius: 16px;
    padding: 16px;
    box-sizing: border-box;
    box-shadow: 0 4px 20px rgba(15,23,42,.04);
}
.wc-block-cart-items { margin-bottom: 16px; }
.wc-block-cart-items__row { padding-bottom: 12px; margin-bottom: 12px; border-bottom: 1px solid #f1f0e9; }
.wc-block-cart-items__row:last-child { border-bottom: none; margin-bottom: 0; padding-bottom: 0; }
.wc-block-cart-item__image img { border-radius: 12px; }

/* Bouton de validation : icône fixe, indépendante du texte dynamique WC. */
.wc-block-cart__submit-button::before,
.wc-block-components-checkout-place-order-button::before {
    content: '✅ ';
}

/* ═══════════════════════════════════════════════════════════
   DASHBOARD ADMIN Liberta Local
   ═══════════════════════════════════════════════════════════ */
.lbd-admin-shell .liberta-dash-panel { max-width: none; }

.lbd-admin-metrics-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 16px;
    margin-bottom: 16px;
}
.lbd-admin-stat-card {
    background: var(--ll-white);
    border: 1px solid #e5e7eb;
    border-radius: 12px;
    padding: 18px 16px;
    border-top: 3px solid #e5e7eb;
}
.lbd-admin-stat-icon { font-size: 24px; margin-bottom: 8px; }
.lbd-admin-stat-val  { font-size: 20px; font-weight: 700; color: #111827; line-height: 1.2; }
.lbd-admin-stat-lbl  { font-size: 12px; color: #6b7280; margin-top: 4px; }

.lbd-admin-metrics-row {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 12px;
    margin-bottom: 28px;
}
.lbd-admin-mini-card {
    background: #f9fafb;
    border: 1px solid #e5e7eb;
    border-radius: 10px;
    padding: 14px 16px;
}
.lbd-admin-mini-val { font-size: 18px; font-weight: 700; color: #111827; }
.lbd-admin-mini-lbl { font-size: 12px; color: #6b7280; margin-top: 3px; }
.lbd-admin-link { color: #d97706; font-weight: 600; text-decoration: none; }
.lbd-admin-link:hover { text-decoration: underline; }

.lbd-admin-section { margin-bottom: 28px; }
.lbd-admin-section-title { font-size: 15px; font-weight: 700; color: #374151; margin: 0 0 12px; }

.lbd-admin-table-wrap { overflow-x: auto; border-radius: 10px; border: 1px solid #e5e7eb; }
.lbd-admin-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.lbd-admin-table thead th {
    background: #f9fafb; padding: 10px 12px; text-align: left;
    font-weight: 600; color: #374151; border-bottom: 1px solid #e5e7eb; white-space: nowrap;
}
.lbd-admin-table tbody td { padding: 9px 12px; border-bottom: 1px solid #f3f4f6; vertical-align: middle; }
.lbd-admin-table tbody tr:last-child td { border-bottom: none; }
.lbd-admin-table tbody tr:hover td { background: #f9fafb; }

.lbd-admin-badge {
    display: inline-block; padding: 2px 8px; border-radius: 20px;
    font-size: 11px; font-weight: 600; margin: 1px 2px 1px 0;
}
.lbd-admin-badge.admin   { background: #ede9fe; color: #7c3aed; }
.lbd-admin-badge.mod     { background: #fef3c7; color: #92400e; }
.lbd-admin-badge.seller  { background: #dcfce7; color: #15803d; }
.lbd-admin-badge.member  { background: #eff6ff; color: #1d4ed8; }
.lbd-admin-badge.pending { background: #fffbeb; color: #b45309; }

.lbd-admin-filter-tabs {
    display: flex; gap: 2px; flex-wrap: wrap;
    margin-bottom: 16px; border-bottom: 2px solid #e5e7eb;
}
.lbd-admin-filter {
    padding: 8px 16px; border-radius: 8px 8px 0 0; font-size: 13px; font-weight: 500;
    cursor: pointer; color: #6b7280; border: 1px solid transparent;
    border-bottom: 2px solid transparent; margin-bottom: -2px;
    display: flex; align-items: center; gap: 6px; user-select: none; transition: color .15s;
}
.lbd-admin-filter:hover { color: #374151; }
.lbd-admin-filter.active {
    color: #16a34a; border-color: #e5e7eb #e5e7eb var(--ll-white);
    background: var(--ll-white); font-weight: 600;
}
.lbd-admin-filter-count {
    background: #f3f4f6; border-radius: 10px;
    padding: 1px 6px; font-size: 11px; color: #6b7280;
}

.lbd-admin-lieux-list { display: flex; flex-direction: column; gap: 10px; }
.lbd-admin-lieu-row {
    display: flex; align-items: center; gap: 12px;
    background: var(--ll-white); border: 1px solid #e5e7eb; border-radius: 12px;
    padding: 12px; transition: box-shadow .15s;
}
.lbd-admin-lieu-row:hover { box-shadow: 0 2px 8px rgba(0,0,0,.06); }
.lbd-admin-lieu-thumb {
    width: 52px; height: 52px; border-radius: 8px; overflow: hidden;
    flex-shrink: 0; background: #f3f4f6; display: flex;
    align-items: center; justify-content: center;
}
.lbd-admin-lieu-thumb img { width: 100%; height: 100%; object-fit: cover; }
.lbd-admin-lieu-thumb-ph { font-size: 22px; }
.lbd-admin-lieu-info { flex: 1; min-width: 0; }
.lbd-admin-lieu-name { font-weight: 600; color: #111827; font-size: 14px; margin-bottom: 3px; }
.lbd-admin-lieu-meta { display: flex; flex-wrap: wrap; gap: 8px; font-size: 12px; color: #6b7280; margin-bottom: 4px; }
.lbd-admin-lieu-cats { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 2px; }
.lbd-admin-cat-tag { background: #f0fdf4; color: #15803d; border-radius: 4px; padding: 1px 6px; font-size: 11px; }
.lbd-admin-lieu-actions { display: flex; gap: 6px; flex-wrap: wrap; flex-shrink: 0; align-items: center; }

.lbd-admin-btn {
    display: inline-flex; align-items: center; gap: 4px; padding: 6px 11px;
    border-radius: 7px; font-size: 12px; font-weight: 600; border: 1px solid transparent;
    cursor: pointer; text-decoration: none; transition: opacity .15s; white-space: nowrap;
    line-height: 1.4; background: none;
}
.lbd-admin-btn:hover { opacity: .82; }
.lbd-admin-btn:disabled { opacity: .5; cursor: not-allowed; }
.lbd-admin-btn.ghost  { background: #f9fafb; border-color: #e5e7eb; color: #374151; }
.lbd-admin-btn.green  { background: #16a34a; color: var(--ll-white); border-color: #16a34a; }
.lbd-admin-btn.red    { background: #dc2626; color: var(--ll-white); border-color: #dc2626; }
.lbd-admin-btn.orange { background: #f59e0b; color: var(--ll-white); border-color: #f59e0b; }

.lbd-admin-avatar { border-radius: 50%; vertical-align: middle; margin-right: 6px; }

@media (max-width: 860px) {
    .lbd-admin-metrics-grid { grid-template-columns: 1fr 1fr; }
    .lbd-admin-metrics-row  { grid-template-columns: 1fr 1fr; }
    .lbd-admin-lieu-row     { flex-wrap: wrap; }
    .lbd-admin-lieu-actions { width: 100%; justify-content: flex-end; margin-top: 4px; }
}
@media (max-width: 480px) {
    .lbd-admin-metrics-grid { grid-template-columns: 1fr 1fr; }
    .lbd-admin-metrics-row  { grid-template-columns: 1fr; }
}

/* ── Report cards (dashboard modérateur) ────────────────────── */
.lbd-admin-reports-list { display: flex; flex-direction: column; gap: 12px; }
.lbd-report-card {
    background: var(--ll-white);
    border: 1px solid #e5e7eb;
    border-radius: 12px;
    padding: 14px 16px;
    transition: box-shadow .15s;
}
.lbd-report-card:hover { box-shadow: 0 2px 8px rgba(0,0,0,.06); }
.lbd-report-card-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 8px;
}
.lbd-report-content-info { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; }
.lbd-report-label { font-weight: 600; color: #111827; font-size: 14px; text-decoration: none; }
.lbd-report-label:hover { text-decoration: underline; }
.lbd-report-score { display: flex; flex-direction: column; align-items: center; flex-shrink: 0; }
.lbd-report-score-num { font-size: 22px; font-weight: 800; line-height: 1; }
.lbd-report-score-lbl { font-size: 10px; color: #9ca3af; text-transform: uppercase; letter-spacing: .05em; }
.lbd-report-reasons { font-size: 12px; color: #6b7280; margin-bottom: 10px; line-height: 1.5; }
.lbd-report-actions { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.lbd-mod-msg { font-size: 12px; margin-left: 4px; }

/* ── Code Client Liberta (espace membre) ──────────────────── */
.lbd-clientcode-card {
  background: linear-gradient(135deg, #0f2e21 0%, #166534 100%);
  border-radius: 16px; padding: 20px; color: var(--ll-white);
}
.lbd-cc-head { display: flex; gap: 12px; align-items: flex-start; margin-bottom: 16px; }
.lbd-cc-ico { font-size: 26px; flex-shrink: 0; }
.lbd-cc-title { font-size: 16px; font-weight: 800; }
.lbd-cc-help { font-size: 12.5px; color: #c7f0d8; line-height: 1.5; margin-top: 3px; }
.lbd-cc-body { display: flex; gap: 18px; align-items: center; flex-wrap: wrap; }
.lbd-cc-left { flex: 1; min-width: 200px; }
.lbd-cc-code {
  font-family: "SF Mono", "Roboto Mono", ui-monospace, Menlo, Consolas, monospace;
  font-size: 26px; font-weight: 800; letter-spacing: 2px; color: var(--ll-white);
  background: rgba(255,255,255,.1); border-radius: 12px; padding: 12px 14px; text-align: center;
}
.lbd-cc-actions { display: flex; gap: 8px; margin-top: 12px; }
.lbd-cc-btn {
  flex: 1; background: var(--ll-white); color: #166534; border: none; border-radius: 10px;
  padding: 10px 12px; font-size: 13px; font-weight: 700; cursor: pointer;
}
.lbd-cc-btn.ghost { background: rgba(255,255,255,.14); color: var(--ll-white); }
.lbd-cc-btn:active { opacity: .85; }
.lbd-cc-privacy { font-size: 11.5px; color: #9fe3bd; margin-top: 10px; }
.lbd-cc-qr {
  background: var(--ll-white); border-radius: 12px; padding: 10px; flex-shrink: 0;
  width: 152px; height: 152px; display: flex; align-items: center; justify-content: center;
}
.lbd-cc-qr img, .lbd-cc-qr canvas { display: block; max-width: 100%; height: auto; }
@media (max-width: 560px) {
  .lbd-cc-body { flex-direction: column-reverse; align-items: stretch; }
  .lbd-cc-qr { align-self: center; }
}

/* ── Clients fidèles / Mes commerçants ────────────────────── */
.lbd-fid-compose { background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 12px; padding: 16px; margin-bottom: 8px; }
.lbd-fid-list { display: flex; flex-direction: column; gap: 8px; }
.lbd-fid-row {
  display: flex; align-items: center; gap: 12px;
  background: var(--ll-white); border: 1px solid #e5e7eb; border-radius: 12px; padding: 10px 12px;
}
.lbd-fid-av {
  width: 38px; height: 38px; border-radius: 50%; flex-shrink: 0;
  background: #dcfce7; color: #15803d; font-weight: 800; font-size: 16px;
  display: flex; align-items: center; justify-content: center;
}
.lbd-fid-info { flex: 1; min-width: 0; }
.lbd-fid-name { font-weight: 600; color: #111827; font-size: 14px; }
.lbd-fid-city { font-weight: 400; color: #94a3b8; font-size: 13px; }
.lbd-fid-meta { font-size: 12px; color: #6b7280; margin-top: 2px; }

/* ── e-reporting / export ─────────────────────────────────── */
.lbd-ereport-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-top: 6px; }
.lbd-ereport-stat { background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 10px; padding: 14px; text-align: center; }
.lbd-ereport-stat .v { font-size: 20px; font-weight: 800; color: #0f172a; }
.lbd-ereport-stat .l { font-size: 12px; color: #6b7280; margin-top: 3px; }
@media (max-width: 480px) { .lbd-ereport-grid { grid-template-columns: 1fr; } }

/* ============================================================
   Homepage — Encart de lancement (invitations + plaquettes) v5.85
   ============================================================ */
.ll-launch{ padding:38px 0 8px; }
.ll-launch-panel{
  position:relative; overflow:hidden; border-radius:22px; color:var(--ll-white);
  display:grid; grid-template-columns:1.3fr 1fr; gap:30px; align-items:center;
  padding:34px 36px;
  background:radial-gradient(130% 130% at 88% -10%,#1f7a45,#0f3a22 58%,#0c2c1a);
}
.ll-launch-glow{ position:absolute; top:-40%; right:-6%; width:46%; height:180%;
  background:radial-gradient(circle,rgba(46,204,113,.22),transparent 70%); pointer-events:none; }
.ll-launch-main{ position:relative; z-index:1; }
.ll-launch-eye{ font-size:.8rem; font-weight:800; letter-spacing:.14em; text-transform:uppercase; color:#7ee787; margin-bottom:10px; }
.ll-launch-h{ font-family:'Bricolage Grotesque',Inter,sans-serif; font-weight:800; font-size:1.9rem; line-height:1.06; color:var(--ll-white); margin:0 0 10px; letter-spacing:-.02em; }
.ll-launch-p{ font-size:1rem; line-height:1.6; color:#cfeed8; margin:0 0 18px; max-width:46ch; }
.ll-launch-actions{ display:flex; flex-wrap:wrap; gap:12px; }
.ll-launch-btn{ display:inline-flex; align-items:center; gap:.5rem; font-weight:800; text-decoration:none; padding:.8rem 1.3rem; border-radius:12px; font-size:.98rem; transition:transform .12s,background .15s,border-color .15s; }
.ll-launch-btn.primary{ background:#7ee787; color:#06351c !important; }
.ll-launch-btn.primary:hover{ background:#a8f5b8; transform:translateY(-1px); }
.ll-launch-btn.ghost{ background:rgba(255,255,255,.08); color:#eafff1 !important; border:1.5px solid rgba(126,231,135,.5); }
.ll-launch-btn.ghost:hover{ background:rgba(255,255,255,.16); transform:translateY(-1px); }
.ll-launch-side{ position:relative; z-index:1; display:flex; flex-direction:column; gap:10px; }
.ll-launch-dl-title{ font-size:.72rem; font-weight:800; letter-spacing:.14em; text-transform:uppercase; color:#9fd9b4; }
.ll-launch-card{ display:flex; align-items:center; gap:12px; background:rgba(255,255,255,.06); border:1px solid rgba(126,231,135,.32);
  border-radius:14px; padding:12px 14px; text-decoration:none !important; transition:background .15s,border-color .15s,transform .12s; }
.ll-launch-card:hover{ background:rgba(255,255,255,.12); border-color:#7ee787; transform:translateY(-1px); }
.ll-launch-ic{ font-size:1.5rem; line-height:1; flex-shrink:0; }
.ll-launch-card-txt{ display:flex; flex-direction:column; flex:1; min-width:0; }
.ll-launch-card-txt b{ color:var(--ll-white); font-size:.96rem; font-weight:700; }
.ll-launch-card-txt em{ color:#bfe6cb; font-style:normal; font-size:.8rem; }
.ll-launch-dlbtn{ flex-shrink:0; font-size:.74rem; font-weight:800; color:#06351c; background:#7ee787; border-radius:30px; padding:.34rem .7rem; }
.ll-launch-feat{ display:flex; align-items:center; gap:14px; margin-top:14px; background:var(--ll-white); border:1px solid #e3ece6;
  border-radius:14px; padding:14px 18px; text-decoration:none !important; transition:box-shadow .15s,transform .12s; }
.ll-launch-feat:hover{ box-shadow:0 6px 20px rgba(20,60,40,.1); transform:translateY(-1px); }
.ll-launch-feat-tag{ flex-shrink:0; font-size:.7rem; font-weight:800; letter-spacing:.1em; text-transform:uppercase; color:#15803d; background:#eafdf0; border:1px solid #b6ebc6; border-radius:30px; padding:.34rem .7rem; }
.ll-launch-feat-title{ flex:1; min-width:0; color:#14331f; font-weight:700; font-size:1rem; }
.ll-launch-feat-read{ flex-shrink:0; color:#15803d; font-weight:800; font-size:.9rem; white-space:nowrap; }
@media(max-width:860px){
  .ll-launch-panel{ grid-template-columns:1fr; gap:22px; padding:26px 22px; }
  .ll-launch-h{ font-size:1.55rem; }
  .ll-launch-feat{ flex-wrap:wrap; }
  .ll-launch-feat-title{ flex-basis:100%; order:3; }
}

/* ============================================================
   « LE REGISTRE » — refonte homepage (v6.84)
   Les jetons --ll-* et le fond/typo de .liberta-home sont désormais
   définis une seule fois, dans almanach.css (D1, Vague 4) — ce bloc-ci
   les redéfinissait à l'identique en second, systématiquement écrasé
   par almanach.css chargé après (même sélecteur, même spécificité,
   dernier gagne) : deux sources de vérité pour les mêmes 10 variables,
   silencieusement inertes sur 8 d'entre elles. --reg-mono/--reg-line,
   seules valeurs non dupliquées ailleurs, ont été déplacées dans le
   bloc de jetons d'almanach.css.
   ============================================================ */

/* ── Registre (carte-ticket signature du hero) ────────────────────────── */
.ll-registre{
  position: relative;
  max-width: 480px;
  margin: 44px auto 32px;
  background: var(--ll-cream);
  border: 1px solid var(--ll-border);
  border-radius: 6px;
  padding: 28px 26px 22px;
  text-align: left;
  box-shadow: 0 24px 60px -20px rgba(0,0,0,.5), 0 2px 0 rgba(0,0,0,.04);
  transform: rotate(-1.1deg);
}
.ll-registre::before{
  content: '';
  position: absolute; inset: 7px;
  border: 1px dashed rgba(31,81,53,.22);
  border-radius: 3px;
  pointer-events: none;
}
.ll-registre-head{
  display: flex; align-items: baseline; justify-content: space-between;
  font-family: var(--reg-mono);
  font-size: 11px; letter-spacing: .06em; text-transform: uppercase;
  color: var(--ll-muted);
  border-bottom: 1px solid var(--reg-line);
  padding-bottom: 10px; margin-bottom: 4px;
}
.ll-registre-stamp{
  position: absolute; top: -14px; right: 18px;
  background: var(--ll-earth); color: var(--ll-white);
  font-family: var(--reg-mono); font-size: 10.5px; font-weight: 700;
  letter-spacing: .08em; text-transform: uppercase;
  padding: 6px 12px; border-radius: 3px;
  transform: rotate(4deg);
  box-shadow: 0 6px 14px rgba(168,73,43,.35);
}
.ll-registre-row{
  display: flex; align-items: baseline; gap: 8px;
  padding: 10px 0;
  border-bottom: 1px dotted var(--reg-line);
  font-family: var(--reg-mono);
  opacity: 0; transform: translateY(4px);
  animation: reg-line-in .5s ease forwards;
}
.ll-registre-row:last-of-type{ border-bottom: none; }
.ll-registre-row:nth-of-type(1){ animation-delay: .15s; }
.ll-registre-row:nth-of-type(2){ animation-delay: .45s; }
.ll-registre-row:nth-of-type(3){ animation-delay: .75s; }
.ll-registre-label{
  color: var(--ll-dark); font-size: 13.5px; font-weight: 500;
}
.ll-registre-link{
  font-size: 11px; font-weight: 400; opacity: .7;
  text-decoration: underline; margin-left: 4px; white-space: nowrap;
}
.ll-registre-fill{
  flex: 1; border-bottom: 1px dotted var(--reg-line);
  transform: translateY(-4px);
}
.ll-registre-val{
  font-weight: 700; font-size: 14px; white-space: nowrap;
}
.ll-registre-val.is-green{ color: var(--ll-green); }
.ll-registre-val.is-gold{ color: var(--ll-honey); }
.ll-registre-note{
  margin-top: 12px; font-size: 11.5px; color: var(--ll-muted);
  font-style: italic;
}
@keyframes reg-line-in{ to{ opacity: 1; transform: translateY(0); } }
@media (prefers-reduced-motion: reduce){
  .ll-registre-row{ animation: none !important; opacity: 1; transform: none; }
  /* D5 (Vague 4) — les deux seules animations en boucle infinie (donc
     potentiellement gênantes/nauséogènes) trouvées sur les pages
     publiques : flèche de défilement de l'accueil et icône du panier
     flottant. Le reste (fade-in ponctuel à l'ouverture d'un panneau,
     transitions de survol) est bref et non bouclé, donc non concerné. */
  .ll-arrow-down{ animation: none !important; }
  .lcb-icon{ animation: none !important; }
}
@media (max-width: 480px){
  .ll-registre{ padding: 22px 18px 18px; transform: rotate(-.6deg); }
  .ll-registre-label{ font-size: 12.5px; }
}

/* ── Ledger line-items (section "pas comme les autres") ────────────────── */
.ll-why{ background: var(--ll-light); }
.ll-why-grid{
  display: block;
  background: var(--ll-cream);
  border: 1px solid var(--ll-border);
  border-radius: 10px;
  overflow: hidden;
  box-shadow: 0 1px 0 rgba(0,0,0,.02);
}
.ll-why-item{
  display: grid;
  grid-template-columns: 34px 1fr;
  gap: 16px;
  padding: 22px 26px;
  background: transparent;
  border-bottom: 1px dashed var(--ll-border);
  transition: background .15s;
}
.ll-why-item:last-child{ border-bottom: none; }
.ll-why-item:hover{ background: rgba(31,81,53,.04); }
.ll-why-num{
  margin: 0; align-self: start; margin-top: 2px;
  width: 26px; height: 26px; border-radius: 50%;
  background: var(--ll-green); color: var(--ll-white);
  display: flex; align-items: center; justify-content: center;
  font-size: 13px;
}
.ll-why-num::before{ content: '✓'; }
.ll-why-item h4{
  font-family: 'Fraunces', Georgia, serif;
  font-size: 17px; font-weight: 700; color: var(--ll-dark);
  margin: 0 0 6px;
}
.ll-why-item p{ font-size: 14px; color: var(--ll-muted); margin: 0; line-height: 1.6; }
@media (max-width: 768px){
  .ll-why-item{ padding: 18px 20px; }
}

/* ── Petites annonces (nouvelle section courte) ─────────────────────────── */
.ll-annonces{ padding: 64px 0; }
.ll-annonces-card{
  max-width: 760px; margin: 0 auto;
  background: var(--ll-cream);
  border: 1px solid var(--ll-border);
  border-radius: 14px;
  padding: 40px 36px;
  text-align: center;
}
.ll-annonces-eyebrow{
  display: inline-block; font-family: var(--reg-mono);
  font-size: 11px; letter-spacing: .08em; text-transform: uppercase;
  color: var(--ll-earth); border: 1px solid var(--ll-earth);
  border-radius: 3px; padding: 3px 10px; margin-bottom: 14px;
}
.ll-annonces-card h2{ font-size: clamp(22px,3vw,30px); color: var(--ll-dark); margin: 0 0 12px; }
.ll-annonces-card p{ color: var(--ll-muted); font-size: 15px; line-height: 1.7; max-width: 560px; margin: 0 auto 22px; }

/* ── Garde-fou paiement (trust) ──────────────────────────────────────────── */
.ll-safeguard{ background: var(--ll-dark); padding: 64px 0; }
.ll-safeguard-inner{
  max-width: 760px; margin: 0 auto; text-align: center;
}
.ll-safeguard-badge{
  display: inline-block; font-family: var(--reg-mono);
  font-size: 11px; letter-spacing: .08em; text-transform: uppercase;
  color: #cfe8d9; border: 1px solid rgba(255,255,255,.25);
  border-radius: 3px; padding: 4px 12px; margin-bottom: 16px;
}
.ll-safeguard h2{ color: var(--ll-white); font-size: clamp(22px,3vw,30px); margin: 0 0 14px; }
.ll-safeguard p{ color: rgba(255,255,255,.72); font-size: 15px; line-height: 1.75; max-width: 600px; margin: 0 auto; }
.ll-safeguard-marks{ display: flex; gap: 28px; justify-content: center; margin-top: 26px; flex-wrap: wrap; }
.ll-safeguard-marks span{ font-family: var(--reg-mono); font-size: 12.5px; color: #a9d4bb; }

/* ── Ğ1 en 3 clics + dividende du jour ───────────────────────────────────── */
.ll-g1x{ padding: 64px 0; }
.ll-g1x-grid{ display: grid; grid-template-columns: 1fr 1fr; gap: 44px; align-items: center; }
.ll-g1x-steps{ display: flex; flex-direction: column; gap: 18px; }
.ll-g1x-step{ display: flex; gap: 14px; align-items: flex-start; }
.ll-g1x-step-ic{ font-size: 22px; line-height: 1; flex-shrink: 0; margin-top: 2px; }
.ll-g1x-step b{ display: block; font-size: 15.5px; color: var(--ll-dark); margin-bottom: 2px; }
.ll-g1x-step span{ font-size: 13.5px; color: var(--ll-muted); line-height: 1.55; }
.ll-g1x-du{
  background: var(--ll-cream); border: 1px solid var(--ll-border);
  border-radius: 12px; padding: 30px 26px; text-align: center;
}
.ll-g1x-du-label{ font-family: var(--reg-mono); font-size: 11px; letter-spacing: .06em; text-transform: uppercase; color: var(--ll-muted); }
.ll-g1x-du-num{ font-family: var(--reg-mono); font-size: clamp(34px,5vw,48px); font-weight: 700; color: var(--ll-honey); margin: 10px 0 4px; }
.ll-g1x-du-note{ font-size: 12.5px; color: var(--ll-muted); }
.ll-g1x-du-link{ display: inline-block; margin-top: 14px; font-size: 12.5px; font-weight: 700; color: var(--ll-honey); text-decoration: none; }
.ll-g1x-du-link:hover{ text-decoration: underline; }
@media (max-width: 768px){
  .ll-g1x-grid{ grid-template-columns: 1fr; gap: 30px; }
}

/* ============================================================
   Entraide locale — teaser public "Sécurité Sociale Intégrale" (jamais ce nom en public),
   appel à candidature collectif pilote. Homepage uniquement.
   ============================================================ */
.ll-entraide{ padding:38px 0; }
.ll-entraide-panel{
  border-radius:22px; padding:40px 44px; text-align:center;
  background:radial-gradient(130% 130% at 12% -10%,#eef7f0,#f9fdfa 60%,var(--ll-white));
  border:1px solid var(--ll-border);
  max-width:760px; margin:0 auto;
}
.ll-ssi-logo-svg{ display:block; margin:0 auto 10px; }
.ll-entraide-h{ font-family:'Bricolage Grotesque',Inter,sans-serif; font-weight:800; font-size:clamp(24px,3.4vw,34px); margin:0 0 16px; color:var(--ll-dark); letter-spacing:-.02em; }
.ll-entraide-p{ font-size:16px; line-height:1.7; color:var(--ll-muted); max-width:64ch; margin:0 auto 22px; }
.ll-entraide-questions{
  list-style:none; margin:0 0 26px; padding:0;
  display:flex; flex-direction:column; gap:10px; max-width:56ch; margin-left:auto; margin-right:auto;
  text-align:left;
}
.ll-entraide-questions li{
  font-size:14.5px; line-height:1.5; color:var(--ll-dark); font-weight:600;
  background:var(--ll-white); border:1px solid var(--ll-border); border-radius:12px; padding:12px 16px;
}
.ll-entraide-questions li::before{ content:"❓ "; }
.ll-entraide-note{ font-size:13px; color:var(--ll-muted); margin:14px 0 0; }
.ll-entraide-learn-more{
  display:inline-flex; align-items:center; gap:6px; margin:0 0 24px;
  padding:11px 20px; background:var(--ll-white); border:1.5px solid var(--ll-green); border-radius:100px;
  font-family:'Fraunces',serif; font-size:14px; font-weight:700; color:var(--ll-green); text-decoration:none;
  box-shadow:0 2px 6px -3px rgba(0,0,0,.2); transition:background .15s ease, transform .15s ease;
}
.ll-entraide-learn-more:hover{ background:var(--ll-green); color:var(--ll-white); transform:translateY(-1px); text-decoration:none; }
.ll-entraide-form{
  margin-top:28px; text-align:left; background:var(--ll-white); border:1px solid var(--ll-border);
  border-radius:16px; padding:26px 28px;
}
.ll-entraide-form h3{ font-size:19px; font-weight:800; color:var(--ll-dark); margin:0 0 18px; }
.ll-entraide-form label{ display:block; font-size:13.5px; font-weight:700; color:var(--ll-dark); margin:14px 0 6px; }
.ll-entraide-form label:first-of-type{ margin-top:0; }
.ll-entraide-form input[type="text"],
.ll-entraide-form input[type="email"],
.ll-entraide-form textarea{
  width:100%; padding:11px 14px; border:1.5px solid var(--ll-border); border-radius:10px;
  font-size:15px; font-family:inherit; color:var(--ll-dark); background:#fbfdfc;
}
.ll-entraide-form input:focus,
.ll-entraide-form textarea:focus{ outline:none; border-color:var(--ll-green); background:var(--ll-white); }
.ll-entraide-form-actions{ display:flex; gap:12px; margin-top:20px; flex-wrap:wrap; }
.ll-entraide-form-msg{ margin:14px 0 0; font-size:14px; font-weight:600; color:var(--ll-green); }
.ll-entraide-qcm-h3{ font-size:19px; font-weight:800; color:var(--ll-dark); margin:0 0 14px; text-align:center; }
.ll-entraide-qcm-intro{ font-size:14px; color:var(--ll-muted); margin:0 0 16px; }
.ll-entraide-qcm-option{
  display:flex !important; align-items:flex-start; gap:10px; padding:10px 12px; margin:0 0 8px !important;
  border:1.5px solid var(--ll-border); border-radius:10px; font-size:14px; font-weight:600;
  color:var(--ll-dark); cursor:pointer; background:#fbfdfc;
}
.ll-entraide-qcm-option input[type="radio"]{ margin-top:3px; flex-shrink:0; }
.ll-entraide-qcm-option:has(input:checked){ border-color:var(--ll-green); background:#f0fdf4; }
.ll-entraide-qcm-count{ color:var(--ll-muted); font-weight:700; white-space:nowrap; }
.ll-entraide-qcm-msg{ margin:14px 0 0; font-size:14px; font-weight:600; color:var(--ll-green); }
.ll-entraide-qcm-pseudo-label{ margin-top:16px !important; }
@media (max-width:640px){
  .ll-entraide-panel{ padding:28px 20px; }
  .ll-entraide-form{ padding:20px 18px; }
}

/* ============================================================
   Page /entraide-locale/ approfondie ([liberta_entraide_page])
   ============================================================ */
.ll-entraide-page{ background:var(--ll-white); }

/* Fond forêt texturé — même motif de bruit + dégradé radial que .ll-dark-section/.ll-colibri
   (charte Almanach, astra-child/almanach.css), plutôt qu'un vert plat isolé du reste du site. */
.ll-entraide-hero{
  padding:56px 0 44px;
  background:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.05'/%3E%3C/svg%3E"),
    radial-gradient(120% 120% at 12% -10%,#2c5a3a 0%,#173324 52%,#10241a 100%);
  text-align:center;
}
.ll-entraide-back{
  display:inline-flex; align-items:center; gap:6px; margin-bottom:22px;
  font-size:13.5px; font-weight:700; color:rgba(255,255,255,.75); text-decoration:none;
}
.ll-entraide-back:hover{ color:var(--ll-white); text-decoration:underline; }
.ll-entraide-hero .ll-section-label{
  display:inline-block; background:rgba(185,132,43,0.18); border:1px solid rgba(216,168,71,0.45);
  color:var(--ll-gold-l,#d8a847); border-radius:100px; padding:7px 18px; margin-bottom:24px; letter-spacing:.6px;
}
.ll-entraide-hero .ll-section-label::before{ color:var(--ll-gold-l,#d8a847); }
.ll-entraide-page-h1{
  font-weight:900;
  font-size:clamp(32px,5vw,52px); line-height:1.08; color:var(--ll-white); margin:0 0 20px; letter-spacing:-1px;
}
.ll-entraide-page-intro{
  font-size:clamp(16px,2vw,19px); line-height:1.7; color:rgba(255,255,255,.78);
  max-width:640px; margin:0 auto;
}

.ll-entraide-how{ padding:56px 0; text-align:center; }
.ll-entraide-how h2{ font-size:clamp(24px,3.4vw,34px); font-weight:800; color:var(--ll-dark); margin:8px 0 32px; letter-spacing:-.02em; }
.ll-entraide-cards{
  display:grid; grid-template-columns:repeat(4,1fr); gap:18px; text-align:left;
}
.ll-entraide-card{
  background:var(--ll-cream,#f9f7f1); border:1px solid var(--ll-border); border-radius:16px; padding:24px 20px;
  transition:transform .15s ease, box-shadow .15s ease;
}
.ll-entraide-card:hover{ transform:translateY(-3px); box-shadow:0 10px 24px -12px rgba(0,0,0,.18); }
.ll-entraide-card-icon{
  width:44px; height:44px; margin-bottom:16px; display:flex; align-items:center; justify-content:center;
  background:var(--ll-white); border-radius:12px; color:var(--ll-green); box-shadow:0 2px 6px -3px rgba(0,0,0,.15);
}
.ll-entraide-card-svg{ width:24px; height:24px; }
.ll-entraide-card h3{ font-size:16.5px; font-weight:800; color:var(--ll-dark); margin:0 0 8px; }
.ll-entraide-card p{ font-size:14px; line-height:1.6; color:var(--ll-muted); margin:0; }
@media (max-width:900px){ .ll-entraide-cards{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:560px){ .ll-entraide-cards{ grid-template-columns:1fr; } }

.ll-entraide-network{ padding:48px 0; background:var(--ll-cream,#f9f7f1); }
.ll-entraide-network-inner{
  display:grid; grid-template-columns:1.1fr 1fr; gap:40px; align-items:center;
}
.ll-entraide-network-text h2{ font-size:clamp(22px,3vw,30px); font-weight:800; color:var(--ll-dark); margin:8px 0 14px; letter-spacing:-.02em; }
.ll-entraide-network-text p{ font-size:15.5px; line-height:1.7; color:var(--ll-muted); margin:0; }
.ll-entraide-network-graphic{ display:flex; justify-content:center; }
.ll-entraide-network-svg{ width:100%; max-width:400px; height:auto; }
@media (max-width:820px){
  .ll-entraide-network-inner{ grid-template-columns:1fr; text-align:center; }
  .ll-entraide-network-text{ order:2; }
  .ll-entraide-network-graphic{ order:1; }
}

.ll-entraide-questions-section{ padding:56px 0; text-align:center; }
.ll-entraide-questions-section h2{ font-size:clamp(24px,3.4vw,34px); font-weight:800; color:var(--ll-dark); margin:8px 0 28px; letter-spacing:-.02em; }
.ll-entraide-questions-page{ max-width:620px; margin-left:auto; margin-right:auto; margin-bottom:40px; }

.ll-entraide-feedback{
  max-width:520px; margin:0 auto; text-align:left; background:var(--ll-white);
  border:1px solid var(--ll-border); border-radius:16px; padding:26px 28px;
}
.ll-entraide-feedback h3{ font-size:18px; font-weight:800; color:var(--ll-dark); margin:0 0 8px; }
.ll-entraide-feedback-p{ font-size:14px; color:var(--ll-muted); margin:0 0 18px; line-height:1.6; }
.ll-entraide-feedback label{ display:block; font-size:13.5px; font-weight:700; color:var(--ll-dark); margin:14px 0 6px; }
.ll-entraide-feedback label:first-of-type{ margin-top:0; }
.ll-entraide-feedback input[type="text"],
.ll-entraide-feedback textarea{
  width:100%; padding:11px 14px; border:1.5px solid var(--ll-border); border-radius:10px;
  font-size:15px; font-family:inherit; color:var(--ll-dark); background:#fbfdfc;
}
.ll-entraide-feedback input:focus,
.ll-entraide-feedback textarea:focus{ outline:none; border-color:var(--ll-green); background:var(--ll-white); }
.ll-entraide-feedback button{ margin-top:16px; }
.ll-entraide-feedback-msg{ margin:14px 0 0; font-size:14px; font-weight:600; color:var(--ll-green); }

.ll-entraide-cta-section{ padding:20px 0 64px; }
.ll-entraide-cta-section .ll-entraide-panel{ max-width:640px; }

@media (max-width:640px){
  .ll-entraide-hero{ padding:44px 0 34px; }
  .ll-entraide-how, .ll-entraide-questions-section{ padding:40px 0; }
  .ll-entraide-network{ padding:36px 0; }
  .ll-entraide-feedback{ padding:20px 18px; }
}

/* ============================================================
   Centre d'aide / base de connaissance ([liberta_knowledge_base], /aide/)
   ============================================================ */
.ll-kb-page{ background:var(--ll-white); }
.ll-kb-hero{
  padding:64px 0 40px;
  background:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.05'/%3E%3C/svg%3E"),
    radial-gradient(120% 120% at 88% -10%,#2c5a3a 0%,#173324 52%,#10241a 100%);
  text-align:center;
  width:100vw; position:relative; left:50%; right:50%; margin-left:-50vw; margin-right:-50vw;
}
.ll-kb-h1{
  font-weight:900;
  font-size:clamp(30px,4.5vw,46px); color:var(--ll-white); margin:0 0 16px; letter-spacing:-1px;
}
.ll-kb-intro{ font-size:16px; line-height:1.6; color:rgba(255,255,255,.78); max-width:560px; margin:0 auto 28px; }
.ll-kb-search{ max-width:520px; margin:0 auto; }
.ll-kb-search input{
  width:100%; padding:16px 22px; border-radius:100px; border:none; font-size:16px;
  font-family:'Spectral',Georgia,serif; color:var(--ll-dark); box-shadow:0 8px 24px -8px rgba(0,0,0,.35);
}
.ll-kb-search input:focus{ outline:3px solid var(--ll-gold-l,#d8a847); outline-offset:2px; }
.ll-kb-results{
  list-style:none; margin:16px auto 0; padding:0; max-width:520px; text-align:left;
  background:var(--ll-white); border-radius:14px; overflow:hidden; box-shadow:0 12px 28px -10px rgba(0,0,0,.3);
}
.ll-kb-results li + li{ border-top:1px solid var(--ll-border); }
.ll-kb-results a{
  display:flex; justify-content:space-between; align-items:center; gap:12px;
  padding:13px 18px; text-decoration:none; color:var(--ll-dark); font-weight:600; font-size:14.5px;
}
.ll-kb-results a:hover{ background:var(--ll-cream); }
.ll-kb-result-cat{ font-size:12px; font-weight:700; color:var(--ll-green); white-space:nowrap; }
.ll-kb-noresult{ margin:16px 0 0; color:rgba(255,255,255,.8); font-size:14px; }

.ll-kb-categories{ padding:48px 0 64px; }
.ll-kb-grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:20px; }
.ll-kb-card{ background:var(--ll-cream); border:1px solid var(--ll-border); border-radius:16px; padding:26px 26px 22px; }
.ll-kb-card h2{ font-size:19px; font-weight:800; color:var(--ll-dark); margin:0 0 14px; }
.ll-kb-card-links{ list-style:none; margin:0 0 16px; padding:0; }
.ll-kb-card-links li{ margin:0 0 9px; }
.ll-kb-card-links a{ font-size:14px; color:var(--ll-text); text-decoration:none; line-height:1.4; }
.ll-kb-card-links a:hover{ color:var(--ll-green); text-decoration:underline; }
.ll-kb-open{ display:inline-block; font-family:'Fraunces',serif; font-size:13.5px; font-weight:700; color:var(--ll-green); text-decoration:none; }
.ll-kb-open:hover{ text-decoration:underline; }
@media (max-width:820px){ .ll-kb-grid{ grid-template-columns:1fr; } }
@media (max-width:640px){
  .ll-kb-hero{ padding:48px 0 32px; }
  .ll-kb-categories{ padding:36px 0 48px; }
}

/* ============================================================
   Produit suspendu — homepage + fiche produit + panneau vendeur
   ============================================================ */
.ll-suspend{ padding:18px 0 38px; }
.ll-suspend-panel{
  border-radius:22px; padding:30px 34px; text-align:center;
  background:radial-gradient(130% 130% at 12% -10%,#fef3c7,#fff8e6 60%,#fffdf7);
  border:1px solid #fde68a;
}
.ll-suspend-h{ font-family:'Bricolage Grotesque',Inter,sans-serif; font-weight:800; font-size:1.6rem; margin:0 0 10px; color:#78350f; }
.ll-suspend-p{ font-size:1rem; line-height:1.6; color:#92400e; max-width:60ch; margin:0 auto 14px; }
.ll-suspend-counter{ display:inline-block; font-weight:700; font-size:.95rem; color:#78350f; background:#fde68a; border-radius:999px; padding:6px 16px; }

.lbt-suspend-field{ margin:0 0 16px; font-size:14px; color:#374151; }
.lbt-suspend-toggle{ display:flex; align-items:flex-start; gap:8px; cursor:pointer; font-weight:600; }
.lbt-suspend-radio{ display:inline-flex; align-items:center; gap:4px; font-size:13px; font-weight:500; margin-right:12px; cursor:pointer; }

.lbt-suspend-badge{
  display:inline-block; background:#fef3c7; border:1px solid #fde68a; color:#92400e;
  border-radius:999px; padding:6px 14px; font-size:13px; font-weight:700; margin-bottom:10px;
}
.lbt-suspend-claim-btn{
  display:block; background:#16a34a; color:var(--ll-white); border:none; border-radius:10px;
  padding:12px 20px; font-size:15px; font-weight:700; cursor:pointer; margin-bottom:14px;
}
.lbt-suspend-claim-btn:hover{ background:#15803d; }
.lbt-suspend-claim-btn:disabled{ background:#9ca3af; cursor:not-allowed; }
.lbt-suspend-claim-msg{ font-size:13px; color:#374151; margin:-8px 0 14px; }

.lbt-suspend-panel h3{ font-size:16px; }
.lbt-suspend-panel h4{ margin:14px 0 6px; }
.lbt-suspend-panel ul{ margin:0 0 4px; padding-left:20px; }
.lbt-suspend-deliver-btn{
  background:#eff6ff; border:1px solid #bfdbfe; color:#1d4ed8; border-radius:8px;
  padding:4px 10px; font-size:12px; font-weight:700; cursor:pointer; margin-left:8px;
}

/* Attribution OpenStreetMap discrète — le crédit reste obligatoire (licence ODbL)
   mais n'a pas besoin d'être visuellement proéminent sur nos cartes. */
.leaflet-control-attribution{
  font-size:9px; opacity:.55; background:rgba(255,255,255,.6);
}
.lbt-suspend-deliver-btn:hover{ background:#dbeafe; }
