/* ==========================================================================
   La Belle Viande — refonte 2026, phase 1 (page d'accueil)
   Portée : préfixe .lbv- uniquement, pour ne rien casser ailleurs sur le site.
   ========================================================================== */

/* Les jetons restent sur .lbv : l'en-tete et le pied de page s'en servent sur
   TOUTES les pages, y compris celles encore servies par OceanWP ou Elementor. */
.lbv {
  --ground:#100E0D; --ground2:#1A1716; --ground3:#241F1D;
  --ink:#F3EEE9; --muted:rgba(243,238,233,.62); --faint:rgba(243,238,233,.38);
  --line:rgba(243,238,233,.13);
  --rouge:#8E1516; --orange:#F07613; --vert:#6FCB95; --papier:#F4EFE9;
  /* Le rouge de l'enseigne (#882828 relevé sur le logo) tombe à 2:1 de contraste sur
     le fond quasi noir : on garde la teinte, éclaircie, pour que le mot se lise. */
  --rouge-enseigne:#D93A33;
  --large:1240px;
  margin:0;
  -webkit-font-smoothing:antialiased;
}

/* La mise en forme du corps, elle, ne s'applique qu'a nos gabarits. Sur une page
   pas encore refaite, imposer fond sombre et texte clair casserait la mise en
   page existante au lieu de la laisser tranquille. */
.lbv-refonte {
  background:var(--ground);
  color:var(--ink);
  font-family:'Archivo',ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif;
  font-size:16px;
  line-height:1.6;
}
.lbv-refonte *,.lbv-refonte *::before,.lbv-refonte *::after,.lbv-chrome *,.lbv-chrome *::before,.lbv-chrome *::after,.lbv-pied *,.lbv-pied *::before,.lbv-pied *::after{box-sizing:border-box}
.lbv-refonte img,.lbv-refonte video,.lbv-chrome img,.lbv-pied img{max-width:100%;display:block}
.lbv-refonte a,.lbv-chrome a,.lbv-pied a{color:var(--ink);text-decoration:none}
.lbv-refonte a:hover,.lbv-chrome a:hover,.lbv-pied a:hover{color:var(--orange)}
.lbv-refonte a:focus-visible,.lbv-chrome a:focus-visible,.lbv-pied a:focus-visible,.lbv .lbv-bouton:focus-visible{outline:2px solid var(--orange);outline-offset:3px}
.lbv-refonte p,.lbv-chrome p,.lbv-pied p{margin:0 0 16px}
.lbv-refonte ul,.lbv-chrome ul,.lbv-pied ul{margin:0;padding:0;list-style:none}
.lbv-refonte em{font-style:normal;color:var(--orange)}

.lbv-contenant{width:100%;max-width:var(--large);margin:0 auto;padding:0 48px}

.lbv-evitement{position:absolute;left:-9999px;top:0;background:var(--rouge);color:#fff;padding:12px 20px;z-index:99}
.lbv-evitement:focus{left:0}

/* ---- typographie -------------------------------------------------------- */
.lbv-titre-1,.lbv-titre-2,.lbv-titre-3,.lbv-titre-4{margin:0;font-weight:600;line-height:1.04;letter-spacing:-.03em;text-wrap:balance}
.lbv-titre-1{font-size:clamp(40px,6vw,78px);letter-spacing:-.038em}
.lbv-titre-2{font-size:clamp(30px,4vw,50px)}
.lbv-titre-3{font-size:clamp(22px,2.4vw,27px);letter-spacing:-.02em}
.lbv-titre-4{font-size:16px;font-weight:700;letter-spacing:0}

/* Correctif de cascade : OceanWP applique une couleur directement sur
   h1..h6 (sélecteur d'élément), ce qui l'emporte sur la couleur héritée
   de .lbv. On la réaffirme explicitement, uniquement dans notre portée. */
.lbv-refonte h1,.lbv-refonte h2,.lbv-refonte h3,.lbv-refonte h4,.lbv-refonte h5,.lbv-refonte h6,
.lbv .lbv-titre-1,.lbv .lbv-titre-2,.lbv .lbv-titre-3,.lbv .lbv-titre-4{
  color:var(--ink) !important;
  font-family:'Archivo',ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif;
}
.lbv .lbv-titre-1 em,.lbv-refonte h1 em,.lbv-refonte h2 em,.lbv-refonte h3 em,
.lbv-refonte em{color:var(--orange) !important}
.lbv-refonte .lbv-mesure__contenu h1,.lbv .lbv-mesure__contenu h2,
.lbv .lbv-mesure__contenu h3,.lbv .lbv-mesure__contenu h4{color:#fff !important}
.lbv .lbv-surtitre,.lbv .lbv-surtitre--accent{color:var(--orange) !important}
.lbv .lbv-surtitre--clair{color:#F7C29B !important}
.lbv .lbv-script{color:var(--orange) !important}
.lbv-script{font-family:'Petit Formal Script',Georgia,serif;color:var(--orange);
  font-size:clamp(22px,3vw,34px);margin:14px 0 0}
.lbv-surtitre{font-size:11px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;
  color:var(--orange);margin:0 0 18px}
.lbv-surtitre--clair{color:#F7C29B}
.lbv-surtitre--accent{color:var(--orange)}
.lbv-chapeau{font-size:17px;color:rgba(243,238,233,.76);max-width:470px;line-height:1.72;margin-top:26px;text-wrap:pretty}

.lbv-etiquette{display:inline-flex;align-items:center;height:26px;padding:0 11px;border-radius:999px;
  font-size:10.5px;font-weight:700;letter-spacing:.11em;text-transform:uppercase;margin:0}
.lbv-etiquette--halal{background:rgba(111,203,149,.13);color:var(--vert);border:1px solid rgba(111,203,149,.35)}

/* ---- boutons ------------------------------------------------------------ */
.lbv-actions{display:flex;gap:16px;flex-wrap:wrap;margin-top:38px}
.lbv-bouton{position:relative;display:inline-flex;align-items:center;justify-content:center;
  min-height:54px;padding:0 32px;background:var(--rouge);color:#fff;border:1px solid var(--rouge);
  font-weight:600;font-size:14px;letter-spacing:.05em;text-transform:uppercase;border-radius:2px}
.lbv-bouton:hover{background:#A81A1B;border-color:#A81A1B;color:#fff}
.lbv-bouton--ligne{background:transparent;border-color:rgba(243,238,233,.42);color:var(--ink)}
.lbv-bouton--ligne:hover{background:rgba(243,238,233,.08);border-color:var(--ink);color:var(--ink)}
.lbv-bouton--accent{background:var(--orange);border-color:var(--orange);color:#100E0D}
.lbv-bouton--accent:hover{background:#D8680F;border-color:#D8680F;color:#100E0D}
.lbv-bouton--petit{min-height:44px;padding:0 20px;font-size:12px}

.lbv-lien-fleche{display:inline-flex;align-items:center;gap:9px;margin-top:20px;color:var(--orange);
  font-weight:600;font-size:12px;letter-spacing:.1em;text-transform:uppercase}
.lbv-lien-fleche::after{content:"";width:22px;height:1px;background:currentColor}

/* ---- filigrane manuscrit ------------------------------------------------ */
.lbv-filigrane{position:absolute;left:-30px;bottom:-60px;z-index:1;pointer-events:none;
  font-family:'Petit Formal Script',Georgia,serif;font-size:clamp(120px,22vw,300px);
  line-height:1;white-space:nowrap;color:rgba(243,238,233,.045)}
.lbv-filigrane--clair{left:auto;right:-20px;top:-40px;bottom:auto;color:rgba(255,255,255,.055);
  font-size:clamp(90px,16vw,230px)}

/* ---- bandeau d'accueil -------------------------------------------------- */
.lbv-heros{position:relative;overflow:hidden;min-height:940px;display:flex;background:#0C0B0A;
  box-shadow:inset 0 0 190px 54px rgba(0,0,0,.74)}
.lbv-heros__video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0}
.lbv-heros__voile{position:absolute;inset:0;z-index:1;
  background:linear-gradient(96deg,rgba(11,10,9,.92) 0%,rgba(11,10,9,.74) 40%,rgba(11,10,9,.22) 78%,rgba(11,10,9,.44) 100%)}
.lbv-heros__contenu{position:relative;z-index:2;width:100%;display:flex;flex-direction:column}
.lbv-heros__texte{padding-top:96px;padding-bottom:130px;max-width:var(--large)}
.lbv-heros__texte > *{max-width:640px}

.lbv-barre{border-bottom:1px solid rgba(243,238,233,.09)}
.lbv-barre__interieur{height:42px;display:flex;align-items:center;gap:20px;
  font-size:12px;color:rgba(243,238,233,.6)}
.lbv-barre__sep{opacity:.3}

.lbv-entete{border-bottom:1px solid rgba(243,238,233,.09)}
.lbv-entete__interieur{min-height:92px;display:flex;align-items:center;justify-content:space-between;gap:24px}
.lbv-marque{display:flex;align-items:center;gap:14px}
.lbv-marque__logo{border-radius:50%;width:52px;height:52px}
.lbv-marque__texte{display:flex;flex-direction:column;line-height:1.15}
.lbv-marque__nom{font-weight:700;font-size:15.5px;letter-spacing:.15em;text-transform:uppercase;margin:0}
.lbv-marque__sous{font-family:'Petit Formal Script',Georgia,serif;color:var(--orange);font-size:14px}

/* La barre doit tenir sur UNE ligne. Avec l'arrivée de « Spéciaux », les sept
   liens + la marque + le panier réclamaient 1175 px pour 1144 disponibles : la
   navigation passait à la ligne et le nom de la boutique se coupait en trois.
   Mesuré dans le navigateur, resserré à 1105 px. La marque ne rétrécit plus et
   ne se coupe plus ; sous 1240 px, c'est le hamburger qui prend le relais. */
.lbv-marque{flex:0 0 auto}
.lbv-marque__nom,.lbv-marque__sous{white-space:nowrap}
.lbv-nav__liste{display:flex;align-items:center;gap:18px;flex-wrap:nowrap}
.lbv-nav__liste a{white-space:nowrap}
.lbv-nav__liste a{font-weight:500;font-size:12px;letter-spacing:.09em;text-transform:uppercase;
  padding-bottom:5px;border-bottom:1.5px solid transparent}
.lbv-nav__liste a:hover{border-bottom-color:var(--orange)}

.lbv-panier{display:inline-flex;align-items:center;gap:9px;font-size:12.5px;font-weight:600;
  letter-spacing:.11em;text-transform:uppercase}
.lbv-panier__pastille{min-width:20px;height:20px;padding:0 5px;border-radius:999px;background:var(--orange);
  color:#100E0D;font-size:11px;font-weight:800;display:inline-flex;align-items:center;justify-content:center}

/* ---- engagements -------------------------------------------------------- */
.lbv-engagements{border-bottom:1px solid var(--line);padding:52px 0}
.lbv-engagement p{color:var(--muted);font-size:14px;line-height:1.65;margin:12px 0 0}

.lbv-grille-4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:22px}
.lbv-grille-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}

/* ---- rayons ------------------------------------------------------------- */
.lbv-rayons{padding:100px 0 0}
.lbv-rayons .lbv-grille-3{margin-top:36px}
.lbv-carte{display:flex;flex-direction:column;background:var(--ground2);border:1px solid var(--line);
  border-radius:2px;overflow:hidden;color:var(--ink)}
.lbv-carte:hover{border-color:rgba(240,118,19,.4);color:var(--ink)}
.lbv-carte__image{display:block;height:230px;background:#151211 center/cover no-repeat}
.lbv-carte__corps{display:block;padding:28px}
.lbv-carte__compte{display:block;font-size:11px;font-weight:600;letter-spacing:.2em;
  text-transform:uppercase;color:var(--faint);margin-bottom:16px}
.lbv-carte__texte{display:block;color:var(--muted);font-size:14px;line-height:1.65;margin-top:11px}

/* ---- choix de la viande ------------------------------------------------- */
.lbv-viande{position:relative;overflow:hidden;margin-top:100px;min-height:780px;display:flex;
  align-items:center;background:#0C0B0A;box-shadow:inset 0 0 190px 54px rgba(0,0,0,.74)}
.lbv-viande__video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0}
.lbv-viande__voile{position:absolute;inset:0;z-index:1;
  background:linear-gradient(180deg,rgba(11,10,9,.86) 0%,rgba(11,10,9,.42) 45%,rgba(11,10,9,.88) 100%)}
.lbv-viande__contenu{position:relative;z-index:2;display:grid;grid-template-columns:1fr 1fr;gap:90px;
  padding-top:96px;padding-bottom:96px}
.lbv-viande__contenu p{color:rgba(243,238,233,.74);line-height:1.78;margin-top:24px;max-width:520px}
.lbv-viande__second{align-self:end}
.lbv-liste-cochee{display:flex;flex-direction:column;gap:14px;margin-top:26px;font-size:15px}
.lbv-liste-cochee li{display:flex;gap:13px;align-items:flex-start}
.lbv-liste-cochee li::before{content:"";flex:none;width:16px;height:9px;margin-top:6px;
  border-left:2px solid var(--vert);border-bottom:2px solid var(--vert);transform:rotate(-45deg)}

/* ---- sélection de produits ---------------------------------------------- */
.lbv-selection{padding:100px 0 0}
.lbv-selection .lbv-grille-4{margin-top:36px}
.lbv-produit{display:flex;flex-direction:column;background:var(--ground2);border:1px solid var(--line);border-radius:2px}
.lbv-produit__lien{display:flex;flex-direction:column;flex:1}
.lbv-produit__image{display:flex;align-items:center;justify-content:center;height:236px;overflow:hidden;
  background:radial-gradient(120% 90% at 50% 25%,#2C2624 0%,#151211 70%)}
.lbv-produit__image img{width:100%;height:100%;object-fit:cover}
.lbv-produit__vide{font-size:10.5px;font-weight:600;letter-spacing:.13em;text-transform:uppercase;color:rgba(243,238,233,.3)}
.lbv-produit__nom{display:block;padding:20px 20px 0;font-size:19px;font-weight:600;letter-spacing:-.02em}
.lbv-produit__pied{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 20px 20px;margin-top:auto}
.lbv-prix{font-size:20px;font-weight:700;letter-spacing:-.02em}
.lbv-prix .woocommerce-Price-amount{color:var(--ink)}
.lbv-prix--absent{font-size:13px;font-weight:600;color:#F5A45C;border-bottom:1px dashed rgba(240,118,19,.6)}

/* ---- découpe sur mesure ------------------------------------------------- */
.lbv-mesure{position:relative;overflow:hidden;background:var(--rouge);margin-top:104px}
.lbv-mesure__contenu{position:relative;z-index:2;display:grid;grid-template-columns:1fr 1fr;gap:64px;
  align-items:center;padding-top:88px;padding-bottom:88px}
.lbv-mesure__contenu h2{color:#fff}
.lbv-mesure__contenu p{color:rgba(255,255,255,.84);font-size:16.5px;line-height:1.72;max-width:460px;margin-top:24px}
.lbv-mesure__options{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.lbv-mesure__options li{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.17);
  padding:22px;font-size:14.5px;color:#fff}
.lbv-mesure__options span{display:block;font-size:11px;font-weight:600;letter-spacing:.2em;
  text-transform:uppercase;color:#F7C29B;margin-bottom:11px}

/* ---- visite ------------------------------------------------------------- */
.lbv-visite{padding:100px 0}
.lbv-visite__contenu{display:grid;grid-template-columns:1fr 1fr;gap:22px}
.lbv-visite__bloc{background:var(--ground2);border:1px solid var(--line);padding:56px}
.lbv-visite__image{min-height:420px;border:1px solid var(--line);background:#151211 center/cover no-repeat;
  box-shadow:inset 0 0 120px 30px rgba(0,0,0,.6)}
.lbv-coordonnees{display:flex;flex-direction:column;gap:14px;margin-top:30px;color:var(--muted);font-size:15px}

/* ---- pied de page ------------------------------------------------------- */
.lbv-pied{border-top:1px solid var(--line);padding-top:72px}
.lbv-pied__interieur{display:grid;grid-template-columns:1.4fr 1fr;gap:52px}
.lbv-pied__texte{color:rgba(243,238,233,.6);font-size:14px;max-width:320px;line-height:1.7;margin:16px 0 20px}
.lbv-pied__bas{margin-top:60px;padding:26px 0;border-top:1px solid var(--line);
  color:rgba(243,238,233,.42);font-size:13px}

/* ---- adaptation ---------------------------------------------------------- */
@media (max-width:1040px){
  .lbv-grille-4{grid-template-columns:repeat(2,minmax(0,1fr))}
  .lbv-grille-3{grid-template-columns:1fr}
  .lbv-viande__contenu,.lbv-mesure__contenu,.lbv-visite__contenu,.lbv-pied__interieur{grid-template-columns:1fr;gap:44px}
  .lbv-viande__second{align-self:auto}
  .lbv-nav{display:none}
}
@media (max-width:640px){
  .lbv-contenant{padding:0 20px}
  .lbv-heros{min-height:0}
  .lbv-heros__texte{padding-top:44px;padding-bottom:60px}
  .lbv-grille-4{grid-template-columns:1fr}
  .lbv-mesure__options{grid-template-columns:1fr}
  .lbv-visite__bloc{padding:32px 24px}
  .lbv-barre__interieur{height:auto;padding:10px 0;flex-direction:column;align-items:flex-start;gap:4px}
  .lbv-barre__sep{display:none}
  .lbv-actions .lbv-bouton{width:100%}
}
@media (prefers-reduced-motion:reduce){
  .lbv-heros__video,.lbv-viande__video{display:none}
  .lbv-heros{background:#0C0B0A url('../img/hero-poster.webp') center/cover no-repeat}
  .lbv-viande{background:#0C0B0A url('../img/poster-grillade.webp') center/cover no-repeat}
}

/* ==========================================================================
   Phase 2 — ossature partagée et pages intérieures
   ========================================================================== */

/* ---- en-tête hors accueil ------------------------------------------------ */
.lbv-chrome{position:relative;z-index:5;background:var(--ground);
  border-bottom:1px solid var(--line)}
.lbv-principal{display:block}

/* ---- menu mobile --------------------------------------------------------- */
.lbv-bascule{position:absolute;opacity:0;pointer-events:none;width:0;height:0}
.lbv-hamburger{display:none;width:44px;height:44px;align-items:center;justify-content:center;
  cursor:pointer;border:1px solid var(--line);border-radius:2px;order:3}
.lbv-hamburger span,.lbv-hamburger span::before,.lbv-hamburger span::after{
  display:block;width:20px;height:2px;background:var(--ink);content:'';position:relative}
.lbv-hamburger span::before{position:absolute;top:-6px}
.lbv-hamburger span::after{position:absolute;top:6px}
.lbv-barre__tel{font-weight:600;letter-spacing:.04em}

/* ---- bandeau de titre des pages intérieures ------------------------------ */
.lbv-page-tete{position:relative;overflow:hidden;background:var(--ground2);
  padding:104px 0 76px;border-bottom:1px solid var(--line)}
.lbv-page-tete--image{background-position:center;background-size:cover;background-repeat:no-repeat;
  padding:150px 0 120px;border-bottom:0}
.lbv-page-tete__voile{position:absolute;inset:0;z-index:1;
  background:linear-gradient(180deg,rgba(16,14,13,.62) 0%,rgba(16,14,13,.86) 62%,var(--ground) 100%)}
.lbv-page-tete__texte{position:relative;z-index:2}
.lbv-page-tete__texte > *{max-width:660px}

/* ---- zone claire : contenu pas encore refait ----------------------------- */
.lbv-papier{background:var(--ground);padding:64px 0 96px}
.lbv-prose{background:var(--papier);color:#1A1716;border-radius:3px;
  padding:56px 60px;max-width:900px;margin:0 auto;line-height:1.7}
.lbv-prose h1,.lbv-prose h2,.lbv-prose h3,.lbv-prose h4,.lbv-prose h5,.lbv-prose h6{
  color:#100E0D !important;margin:2em 0 .6em;line-height:1.2}
.lbv-prose h1:first-child,.lbv-prose h2:first-child{margin-top:0}
.lbv-prose a{color:var(--rouge);text-decoration:underline}
.lbv-prose a:hover{color:var(--orange)}
.lbv-prose ul,.lbv-prose ol{list-style:revert;padding-left:1.4em;margin:0 0 1.2em}
.lbv-prose table{width:100%;border-collapse:collapse}
.lbv-prose td,.lbv-prose th{border:1px solid rgba(16,14,13,.14);padding:10px 12px}

/* Gabarits encore servis par OceanWP ou Elementor (boutique, fiche produit,
   panier, commande, politique de cookies).

   On se contente de rendre le corps clair, comme il l'était sous OceanWP, et on
   ne touche NI aux conteneurs NI aux titres. Une première version repeignait
   `#main` en clair : elle rendait illisibles les blocs Elementor dont le texte
   avait été réglé en blanc pour un fond sombre. Le bon filet est le plus discret
   possible — laisser ces pages exactement comme elles étaient. */
body.lbv-heritage{background:#fff;color:#1A1716}
/* Pas de règle sur les liens ici : `body.lbv-heritage a` (0,2,1) l'emportait sur
   `.lbv-chrome a` (0,1,1) et repeignait la navigation de l'en-tête en gris foncé
   sur le bandeau noir. Le contenu de ces pages n'a de toute façon aucune règle de
   lien venant de nous — il n'y a rien à annuler. */

/* ---- encadré « à compléter », visible seulement en interne --------------- */
.lbv-manque{background:rgba(240,118,19,.08);border:1px dashed rgba(240,118,19,.45);
  border-radius:2px;padding:14px 16px;font-size:14.5px;color:rgba(243,238,233,.8);line-height:1.6}
.lbv-manque strong{color:var(--orange)}
.lbv-manque__note{display:block;margin-top:6px;font-size:12px;color:var(--faint)}

/* ---- À propos : le récit ------------------------------------------------- */
.lbv-recit{padding:104px 0}
.lbv-recit__grille{display:grid;grid-template-columns:1fr 1.15fr;gap:64px;align-items:start}
.lbv-recit__texte{font-size:16.5px;line-height:1.75;color:rgba(243,238,233,.78)}
.lbv-recit__texte > * + *{margin-top:18px}

/* ---- À propos : halal ---------------------------------------------------- */
.lbv-halal{padding:0 0 104px}
.lbv-halal__grille{display:grid;grid-template-columns:1.2fr 1fr;gap:48px;align-items:start}
.lbv-halal__grille > div > * + *{margin-top:20px}
.lbv-halal__aparte{background:var(--ground2);border:1px solid var(--line);padding:40px}

/* ---- Contact ------------------------------------------------------------- */
.lbv-contact{padding:88px 0 96px}
.lbv-contact__grille{display:grid;grid-template-columns:1fr 1.05fr;gap:56px;align-items:start}
.lbv-contact__fiches{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.lbv-fiche{background:var(--ground2);border:1px solid var(--line);padding:30px 28px;border-radius:2px}
.lbv-fiche > * + *{margin-top:12px}
.lbv-fiche__ligne{font-size:16px;line-height:1.6;margin:0}
.lbv-contact__formulaire{background:var(--ground2);border:1px solid var(--line);padding:44px 40px;border-radius:2px}
.lbv-contact__formulaire > * + *{margin-top:16px}

/* Formulaire Formidable : il est écrit pour un fond blanc, on le rhabille. */
.lbv-formulaire{margin-top:26px}
.lbv-formulaire label,.lbv-formulaire .frm_primary_label{display:block;font-size:12px;font-weight:600;
  letter-spacing:.13em;text-transform:uppercase;color:var(--muted);margin:0 0 7px}
.lbv-formulaire input[type=text],.lbv-formulaire input[type=email],.lbv-formulaire input[type=tel],
.lbv-formulaire input[type=url],.lbv-formulaire select,.lbv-formulaire textarea{
  width:100%;background:var(--ground3);border:1px solid var(--line);border-radius:2px;
  color:var(--ink);font:inherit;font-size:15px;padding:13px 15px}
.lbv-formulaire textarea{min-height:150px;resize:vertical}
.lbv-formulaire input:focus,.lbv-formulaire textarea:focus,.lbv-formulaire select:focus{
  outline:2px solid var(--orange);outline-offset:1px;border-color:var(--orange)}
.lbv-formulaire ::placeholder{color:var(--faint)}
.lbv-formulaire .frm_form_field{margin:0 0 18px}
.lbv-formulaire .frm_required{color:var(--orange)}
.lbv-formulaire .frm_description{font-size:13px;color:var(--faint);margin-top:5px}
.lbv-formulaire input[type=submit],.lbv-formulaire button[type=submit]{
  min-height:54px;padding:0 32px;background:var(--rouge);color:#fff;border:1px solid var(--rouge);
  font-weight:600;font-size:14px;letter-spacing:.05em;text-transform:uppercase;border-radius:2px;cursor:pointer}
.lbv-formulaire input[type=submit]:hover,.lbv-formulaire button[type=submit]:hover{
  background:#A81A1B;border-color:#A81A1B}
.lbv-formulaire .frm_error,.lbv-formulaire .frm_error_style{color:#F5A0A0;font-size:14px}
.lbv-formulaire .frm_message,.lbv-formulaire .frm_success_style{
  background:rgba(111,203,149,.12);border:1px solid rgba(111,203,149,.4);color:var(--vert);
  padding:14px 16px;border-radius:2px}

/* ---- Contact : la carte -------------------------------------------------- */
.lbv-plan{padding:0 0 104px}
.lbv-plan .lbv-contenant{margin-bottom:30px}
.lbv-plan__cadre{position:relative;width:100%;height:440px;border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);background:var(--ground2)}
/* Les tuiles d'OpenStreetMap sont claires : on les retourne pour qu'elles vivent
   sur le fond sombre du site. L'attribution « © Contributeurs OpenStreetMap »
   reste lisible — elle est obligatoire, on ne la masque pas. */
.lbv-plan__cadre iframe{width:100%;height:100%;border:0;display:block;
  filter:invert(1) hue-rotate(180deg) brightness(.92) contrast(.9) saturate(.6)}

/* Filet : si un greffon de consentement bloquait un jour cette carte, il
   remplace l'iframe par un fond blanc et un petit bouton gris. Au moins, que ça
   reste sombre et que le bouton se voie. */
.lbv-plan__cadre .cmplz-placeholder-element{background:var(--ground2) !important;filter:none}
.lbv-plan__cadre .cmplz-blocked-content-notice{background:var(--ground3);border:1px solid var(--line);
  border-radius:2px;color:var(--ink);font-size:13.5px;line-height:1.5;padding:16px 20px}

/* ---- Carrières : les offres --------------------------------------------- */
.lbv-offres{padding:96px 0}
.lbv-offres__liste{margin-top:44px;border-top:1px solid var(--line)}
.lbv-offre{display:flex;align-items:center;justify-content:space-between;gap:32px;
  padding:28px 4px;border-bottom:1px solid var(--line)}
.lbv-offre__texte > * + *{margin-top:8px}
.lbv-offre__meta{font-size:12.5px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--faint);margin:0}
.lbv-offre .lbv-bouton{flex:0 0 auto}

/* ---- adaptations ---------------------------------------------------------- */
@media (max-width:1040px){
  .lbv-recit__grille,.lbv-halal__grille,.lbv-contact__grille{grid-template-columns:1fr;gap:40px}
  .lbv-hamburger{display:flex}
  .lbv-nav{display:none;order:4;flex:1 0 100%;padding:0 0 22px}
  .lbv-bascule:checked ~ .lbv-nav{display:block}
  .lbv-entete__interieur{flex-wrap:wrap}
  .lbv-nav__liste{flex-direction:column;align-items:flex-start;gap:2px}
  .lbv-nav__liste a{display:block;padding:12px 0;font-size:14px}
  .lbv-page-tete--image{padding:110px 0 90px}
}
@media (max-width:640px){
  .lbv-contact__fiches{grid-template-columns:1fr}
  .lbv-prose{padding:32px 22px}
  .lbv-offre{flex-direction:column;align-items:flex-start;gap:16px}
  .lbv-plan__cadre{height:320px}
  .lbv-page-tete{padding:64px 0 48px}
  .lbv-page-tete--image{padding:80px 0 64px}
  .lbv-recit,.lbv-offres,.lbv-contact{padding:56px 0}
  .lbv-halal{padding-bottom:56px}
  .lbv-contact__formulaire,.lbv-halal__aparte{padding:28px 22px}
}

/* ---- À propos : les fondateurs ------------------------------------------ */
.lbv-fondateurs{padding:0 0 104px}
.lbv-fondateurs__liste{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:44px}
.lbv-fondateur{display:flex;flex-direction:column;align-items:flex-start;gap:14px;
  background:var(--ground2);border:1px solid var(--line);padding:34px 30px;border-radius:2px}
.lbv-fondateur__jeton{display:inline-flex;align-items:center;justify-content:center;
  width:62px;height:62px;border-radius:50%;background:var(--rouge);color:#fff;
  font-weight:700;font-size:19px;letter-spacing:.06em}
.lbv-fondateur__nom{font-size:18px;font-weight:600;letter-spacing:-.01em}
.lbv-fondateur__role{font-size:11.5px;font-weight:600;letter-spacing:.16em;
  text-transform:uppercase;color:var(--faint)}
@media (max-width:860px){
  .lbv-fondateurs__liste{grid-template-columns:1fr}
  .lbv-fondateurs{padding-bottom:56px}
}

/* ==========================================================================
   Phase 3 — les rayons (Boucherie, Grillades, Mets préparés) et la boutique
   ========================================================================== */

.lbv-page-tete__texte .lbv-chapeau{margin-top:22px}
.lbv-page-tete__texte .lbv-chapeau p{margin:0 0 10px}
.lbv-page-tete .lbv-surtitre a{color:var(--orange)}
.lbv-page-tete .lbv-surtitre a:hover{color:var(--ink)}

/* ---- sous-rayons --------------------------------------------------------- */
.lbv-sous-rayons{padding:38px 0 0}
.lbv-puces{display:flex;flex-wrap:wrap;gap:10px}
.lbv-puce{display:inline-flex;align-items:center;gap:10px;height:44px;padding:0 18px;
  background:var(--ground2);border:1px solid var(--line);border-radius:999px;
  font-size:13.5px;font-weight:500}
.lbv-puce:hover{border-color:rgba(240,118,19,.5);background:var(--ground3)}
.lbv-puce__nom{color:var(--ink)}
.lbv-puce:hover .lbv-puce__nom{color:var(--ink)}
.lbv-puce__compte{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  color:var(--faint)}

/* ---- catalogue ----------------------------------------------------------- */
.lbv-catalogue{padding:48px 0 96px}
.lbv-outils{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;
  padding-bottom:22px;border-bottom:1px solid var(--line)}
.lbv-outils__compte{margin:0;font-size:12.5px;font-weight:600;letter-spacing:.14em;
  text-transform:uppercase;color:var(--muted)}
.lbv-outils__tri form{margin:0}
.lbv-outils select,.lbv-outils .orderby{background:var(--ground2);border:1px solid var(--line);
  color:var(--ink);font:inherit;font-size:13.5px;padding:10px 14px;border-radius:2px}
.lbv-outils select:focus{outline:2px solid var(--orange);outline-offset:1px}

.lbv-grille-produits{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:22px;margin-top:32px}
.lbv-produit__resume{display:block;padding:8px 20px 0;font-size:13.5px;line-height:1.6;
  color:rgba(243,238,233,.6)}
.lbv-produit__action .button,.lbv-produit__action a{display:inline-flex;align-items:center;
  justify-content:center;min-height:44px;padding:0 20px;background:var(--rouge);color:#fff;
  border:1px solid var(--rouge);font-weight:600;font-size:12px;letter-spacing:.05em;
  text-transform:uppercase;border-radius:2px;text-decoration:none}
.lbv-produit__action .button:hover,.lbv-produit__action a:hover{background:#A81A1B;border-color:#A81A1B;color:#fff}
.lbv-produit__action .added_to_cart{margin-left:8px;background:transparent;border-color:var(--line);
  color:var(--ink)}
.lbv-produit__action .loading{opacity:.6}

/* ---- avis WooCommerce ---------------------------------------------------- */
.lbv-avis .woocommerce-message,.lbv-avis .woocommerce-info,.lbv-avis .woocommerce-error{
  list-style:none;margin:0 0 26px;padding:16px 20px;border-radius:2px;font-size:15px;
  background:rgba(111,203,149,.12);border:1px solid rgba(111,203,149,.4);color:var(--ink)}
.lbv-avis .woocommerce-error{background:rgba(142,21,22,.2);border-color:rgba(245,160,160,.45)}
.lbv-avis a{color:var(--orange)}

/* ---- pagination ---------------------------------------------------------- */
.lbv-pagination{margin-top:52px;padding-top:30px;border-top:1px solid var(--line)}
.lbv-pagination ul{display:flex;flex-wrap:wrap;gap:8px}
.lbv-pagination a,.lbv-pagination span{display:inline-flex;align-items:center;justify-content:center;
  min-width:44px;height:44px;padding:0 14px;border:1px solid var(--line);border-radius:2px;
  font-size:14px;font-weight:600}
.lbv-pagination .current{background:var(--rouge);border-color:var(--rouge);color:#fff}
.lbv-pagination a:hover{border-color:var(--orange);color:var(--orange)}

/* ---- rayon vide ---------------------------------------------------------- */
.lbv-vide{background:var(--ground2);border:1px solid var(--line);border-radius:2px;
  padding:56px 48px;max-width:660px}
.lbv-vide > * + *{margin-top:16px}
.lbv-vide p{color:rgba(243,238,233,.72);line-height:1.72;margin:16px 0 0}

.lbv-catalogue .lbv-manque{margin-top:40px}

@media (max-width:1040px){
  .lbv-grille-produits{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media (max-width:860px){
  .lbv-grille-produits{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:560px){
  .lbv-grille-produits{grid-template-columns:1fr}
  .lbv-catalogue{padding:32px 0 56px}
  .lbv-vide{padding:32px 24px}
  .lbv-outils{flex-direction:column;align-items:flex-start;gap:14px}
}

/* ==========================================================================
   Phase 3b — le panier (blocs WooCommerce)
   ==========================================================================
   La page utilise le bloc `woocommerce/cart`, rendu par React : son HTML n'est
   pas modifiable depuis un gabarit PHP. On l'habille donc entièrement en CSS,
   en visant ses classes `wc-block-*`. Tout est cadré sous `.lbv-achat` pour ne
   rien changer ailleurs.
   ========================================================================== */

/* ATTENTION : la section s'appelle .lbv-achat et NON .lbv-panier. `.lbv-panier`
   est déjà pris depuis la phase 1 par le lien « Panier » de l'en-tête, qui est
   en `display:inline-flex`. Réutiliser le nom écrasait la largeur de la section
   à 96 px et écrasait tout le tableau du panier dans une colonne de 280 px. */
.lbv-achat{display:block;padding:56px 0 88px}
.lbv-achat .alignwide,.lbv-achat .wp-block-woocommerce-cart{max-width:none;margin:0}

/* Deux colonnes : les articles à gauche, le récapitulatif à droite. Les blocs
   WooCommerce ne posent leur propre disposition qu'au-delà d'une largeur qu'ils
   mesurent eux-mêmes ; on la pose ici pour être sûr. */
.lbv-achat .wc-block-cart{display:flex;flex-wrap:wrap;align-items:flex-start;gap:48px}
.lbv-achat .wc-block-cart__main{flex:1 1 520px;min-width:0}
.lbv-achat .wc-block-cart__sidebar{flex:0 1 360px;min-width:280px}

/* OceanWP met les titres de produits en capitales dans son CSS WooCommerce.
   Dans un panier, un nom d'article en capitales se lit mal et une description
   en capitales ne se lit plus du tout. */
.lbv-achat .wc-block-components-product-name,
.lbv-achat .wc-block-components-product-metadata,
.lbv-achat .wc-block-components-product-metadata__description,
.lbv-achat .wc-block-cart-item__prices,
.lbv-achat .wc-block-components-product-price,
.lbv-achat .wc-block-cart-items__row td{text-transform:none;letter-spacing:normal}
.lbv-manque--grave{background:rgba(142,21,22,.16);border-color:rgba(245,160,160,.5);
  color:rgba(243,238,233,.9);margin-bottom:34px}
.lbv-manque--grave strong{color:#F5A0A0}

/* ---- structure en deux colonnes ------------------------------------------ */
.lbv-achat .wc-block-cart{gap:48px}
.lbv-achat .wc-block-cart__sidebar .wc-block-components-sidebar,
.lbv-achat .wc-block-cart__sidebar{background:var(--ground2);border:1px solid var(--line);
  border-radius:2px;padding:32px 28px}
.lbv-achat .wc-block-cart__totals-title{font-size:11px;font-weight:700;letter-spacing:.2em;
  text-transform:uppercase;color:var(--orange)}

/* ---- lignes du panier ---------------------------------------------------- */
.lbv-achat .wc-block-cart-items{border:0;width:100%}
.lbv-achat .wc-block-cart-items__header{border-bottom:1px solid var(--line);
  font-size:11px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.lbv-achat .wc-block-cart-items__row{border-bottom:1px solid var(--line)}
.lbv-achat .wc-block-cart-items__row td{padding-top:24px;padding-bottom:24px;border:0}
.lbv-achat .wc-block-cart-item__image img{border-radius:2px;background:var(--ground3)}
.lbv-achat .wc-block-components-product-name{font-size:17px;font-weight:600;
  letter-spacing:-.01em;color:var(--ink);text-decoration:none}
.lbv-achat .wc-block-components-product-name:hover{color:var(--orange)}
.lbv-achat .wc-block-components-product-metadata,
.lbv-achat .wc-block-components-product-metadata__description{color:var(--faint);font-size:13.5px;
  line-height:1.6;max-width:46ch}
.lbv-achat .wc-block-cart-item__prices,
.lbv-achat .wc-block-components-product-price{color:var(--muted)}
.lbv-achat .wc-block-cart-item__total-price-and-sale-badge-wrapper{font-weight:700;color:var(--ink)}
.lbv-achat .wc-block-cart-item__remove-link{color:var(--faint);font-size:12.5px;
  text-decoration:underline;text-underline-offset:3px}
.lbv-achat .wc-block-cart-item__remove-link:hover{color:#F5A0A0}

/* ---- sélecteur de quantité ----------------------------------------------- */
.lbv-achat .wc-block-components-quantity-selector{background:var(--ground3);
  border:1px solid var(--line);border-radius:2px;max-width:120px}
.lbv-achat .wc-block-components-quantity-selector::after{display:none}
.lbv-achat .wc-block-components-quantity-selector__input{background:transparent;color:var(--ink);
  font:inherit;font-weight:600}
.lbv-achat .wc-block-components-quantity-selector__button{color:var(--muted);background:transparent}
.lbv-achat .wc-block-components-quantity-selector__button:hover{color:var(--orange)}

/* ---- totaux -------------------------------------------------------------- */
.lbv-achat .wc-block-components-totals-item{color:var(--muted);font-size:14.5px}
.lbv-achat .wc-block-components-totals-item__label{color:var(--muted)}
.lbv-achat .wc-block-components-totals-item__value{color:var(--ink);font-weight:600}
.lbv-achat .wc-block-components-totals-footer-item,
.lbv-achat .wc-block-components-totals-footer-item .wc-block-components-totals-item__value{
  color:var(--ink);font-size:22px;font-weight:700;letter-spacing:-.02em}
.lbv-achat .wc-block-components-totals-item__description,
.lbv-achat .wc-block-components-totals-footer-item-tax{color:var(--faint);font-size:12.5px}
.lbv-achat hr,.lbv-achat .wc-block-components-totals-wrapper{border-color:var(--line)}
.lbv-achat .wc-block-components-totals-wrapper::after{background:var(--line)}

/* ---- coupon -------------------------------------------------------------- */
.lbv-achat .wc-block-components-panel__button{color:var(--muted);font-size:13.5px}
.lbv-achat .wc-block-components-panel__button:hover{color:var(--orange)}
.lbv-achat .wc-block-components-text-input input,
.lbv-achat .wc-block-components-text-input input[type=text]{background:var(--ground3);
  border:1px solid var(--line);color:var(--ink);border-radius:2px}
.lbv-achat .wc-block-components-text-input label{color:var(--faint)}

/* ---- boutons ------------------------------------------------------------- */
.lbv-achat .wc-block-components-button:not(.is-link){min-height:54px;padding:0 30px;
  background:var(--rouge);border:1px solid var(--rouge);color:#fff;border-radius:2px;
  font-weight:600;font-size:14px;letter-spacing:.05em;text-transform:uppercase}
.lbv-achat .wc-block-components-button:not(.is-link):hover{background:#A81A1B;border-color:#A81A1B;color:#fff}
.lbv-achat .wc-block-cart__submit-button{width:100%}
.lbv-achat .wc-block-components-button.is-link{color:var(--orange)}

/* ---- panier vide --------------------------------------------------------- */
.lbv-achat .wp-block-woocommerce-empty-cart-block{text-align:center;padding:40px 0 0}
.lbv-achat .wc-block-cart__empty-cart__title{color:var(--ink) !important}
.lbv-achat .wc-block-cart__empty-cart__title::before{filter:invert(1) opacity(.75)}
.lbv-achat .wp-block-separator{border-color:var(--line);opacity:.5}
.lbv-achat .wp-block-woocommerce-empty-cart-block h2{margin-top:44px}

/* La grille « Nouveau dans la boutique » du panier vide : mêmes cartes que
   les rayons, pour qu'elle ne ressemble pas à un bloc étranger. */
.lbv-achat .wc-block-grid__products{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));
  gap:22px;margin:32px 0 0;padding:0;list-style:none;text-align:left}
/* WooCommerce dessine cette grille en flex et borne chaque carte à `max-width:25%`,
   via `.wc-block-grid.has-4-columns .wc-block-grid__product` (0,3,0). Nous, on la met
   en CSS grid : les 25 % se calculent alors sur la COLONNE et non sur la rangée, et
   chaque carte tombait à 67 px de large dans une colonne de 270 px — texte à la
   verticale, une lettre par ligne. D'où le sélecteur à quatre classes, qui gagne.
   Mesuré dans le navigateur avant/après : 67 px → 270 px. */
.lbv-achat .wc-block-grid[class] .wc-block-grid__product{max-width:none;width:auto;flex:initial}
.lbv-achat .wc-block-grid__product{display:flex;flex-direction:column;margin:0;padding:0;
  background:var(--ground2);border:1px solid var(--line);border-radius:2px;overflow:hidden}
.lbv-achat .wc-block-grid__product-link{display:block}
.lbv-achat .wc-block-grid__product-image{margin:0}
.lbv-achat .wc-block-grid__product-image img{width:100%;height:200px;object-fit:cover;
  background:var(--ground3);opacity:.55}
.lbv-achat .wc-block-grid__product-title{padding:18px 20px 0;font-size:17px;font-weight:600;
  color:var(--ink);text-align:left}
.lbv-achat .wc-block-grid__product-price{padding:6px 20px 0;color:var(--muted);text-align:left}
.lbv-achat .wc-block-grid__product-add-to-cart{padding:16px 20px 20px;margin-top:auto;text-align:left}
.lbv-achat .wc-block-grid__product-add-to-cart .wp-block-button__link{display:inline-flex;
  align-items:center;justify-content:center;min-height:44px;padding:0 20px;background:transparent;
  border:1px solid rgba(243,238,233,.42);color:var(--ink);border-radius:2px;font-weight:600;
  font-size:12px;letter-spacing:.05em;text-transform:uppercase}
.lbv-achat .wc-block-grid__product-add-to-cart .wp-block-button__link:hover{
  background:rgba(243,238,233,.08);border-color:var(--ink)}

/* ---- avis et messages ---------------------------------------------------- */
.lbv-achat .wc-block-components-notice-banner{background:var(--ground2);border-color:var(--line);
  color:var(--ink)}
.lbv-achat .wc-block-components-notice-banner__content{color:var(--ink)}

/* ---- rappels sous le panier ---------------------------------------------- */
.lbv-rappels{padding:0 0 96px}
.lbv-rappels .lbv-grille-4{padding-top:44px;border-top:1px solid var(--line)}

@media (max-width:1040px){
  .lbv-achat .wc-block-grid__products{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:640px){
  .lbv-achat{padding:32px 0 56px}
  .lbv-achat .wc-block-cart__sidebar{padding:24px 20px}
  .lbv-achat .wc-block-grid__products{grid-template-columns:1fr}
  .lbv-rappels{padding-bottom:56px}
}

/* ---- Contact : le bloc « venir sur place » ------------------------------- */
.lbv-atelier{padding:0 0 96px}
.lbv-atelier__grille{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center}
.lbv-atelier__image{min-height:420px;border:1px solid var(--line);border-radius:2px;
  background:#151211 center/cover no-repeat}
.lbv-atelier__texte > * + *{margin-top:20px}
.lbv-atelier__texte p{color:rgba(243,238,233,.74);line-height:1.75;max-width:460px}
@media (max-width:860px){
  .lbv-atelier__grille{grid-template-columns:1fr;gap:32px}
  .lbv-atelier__image{min-height:260px}
  .lbv-atelier{padding-bottom:56px}
}

/* ==========================================================================
   Phase 3c — la fiche produit
   ==========================================================================
   Noms vérifiés avant écriture : `.lbv-fiche` existe déjà (les cartes de
   coordonnées de Contact), donc ici tout est préfixé `.lbv-fiche-produit`.
   ========================================================================== */

.lbv-fiche-produit{padding:44px 0 88px}
.lbv-fil{font-size:12px;font-weight:600;letter-spacing:.13em;text-transform:uppercase;
  color:var(--faint);margin:0 0 32px}
.lbv-fil a{color:var(--faint)}
.lbv-fil a:hover{color:var(--orange)}
.lbv-fil span{margin:0 4px;opacity:.5}

.lbv-fiche-produit__grille{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:start}

.lbv-fiche-produit__image{display:flex;align-items:center;justify-content:center;
  aspect-ratio:1/1;overflow:hidden;border:1px solid var(--line);border-radius:2px;
  background:radial-gradient(120% 90% at 50% 25%,#2C2624 0%,#151211 70%)}
.lbv-fiche-produit__image img{width:100%;height:100%;object-fit:cover}
.lbv-fiche-produit__galerie{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:12px}
.lbv-fiche-produit__galerie img{width:100%;aspect-ratio:1/1;object-fit:cover;
  border:1px solid var(--line);border-radius:2px}

.lbv-fiche-produit__infos > * + *{margin-top:20px}
.lbv-fiche-produit__infos .lbv-chapeau{margin-top:18px;max-width:none}

.lbv-fiche-produit__achat{margin-top:32px;padding:28px 0;
  border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.lbv-fiche-produit__achat .lbv-prix{font-size:32px;display:block;margin-bottom:20px}
.lbv-fiche-produit__achat .lbv-prix--absent{font-size:15px}
.lbv-fiche-produit__demande{color:rgba(243,238,233,.72);line-height:1.7;max-width:44ch}

/* Le formulaire d'ajout au panier de WooCommerce, habillé sans être réécrit. */
.lbv-fiche-produit__form form.cart{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:0}
.lbv-fiche-produit__form .quantity{display:inline-flex;align-items:center;
  background:var(--ground3);border:1px solid var(--line);border-radius:2px}
.lbv-fiche-produit__form .quantity input.qty{width:74px;height:54px;background:transparent;
  border:0;color:var(--ink);font:inherit;font-weight:600;font-size:16px;text-align:center}
.lbv-fiche-produit__form .quantity label{position:absolute;left:-9999px}
.lbv-fiche-produit__form button.button,
.lbv-fiche-produit__form .single_add_to_cart_button{display:inline-flex;align-items:center;
  justify-content:center;min-height:54px;padding:0 32px;background:var(--rouge);color:#fff;
  border:1px solid var(--rouge);border-radius:2px;font:inherit;font-weight:600;font-size:14px;
  letter-spacing:.05em;text-transform:uppercase;cursor:pointer}
.lbv-fiche-produit__form button.button:hover,
.lbv-fiche-produit__form .single_add_to_cart_button:hover{background:#A81A1B;border-color:#A81A1B}
.lbv-fiche-produit__form .stock{width:100%;margin:6px 0 0;font-size:13px;color:var(--vert)}
.lbv-fiche-produit__form .stock.out-of-stock{color:#F5A0A0}

.lbv-fiche-produit__points{display:flex;flex-direction:column;gap:14px;margin-top:30px;
  font-size:14.5px;line-height:1.6;color:rgba(243,238,233,.7)}
.lbv-fiche-produit__points li{padding-left:16px;border-left:2px solid rgba(240,118,19,.5)}
.lbv-fiche-produit__points strong{color:var(--ink);font-weight:600}


.lbv-fiche-produit__texte{margin-top:72px;padding-top:44px;border-top:1px solid var(--line);
  max-width:760px;font-size:16.5px;line-height:1.78;color:rgba(243,238,233,.78)}
.lbv-fiche-produit__texte h2{margin-bottom:18px}
.lbv-fiche-produit__texte p{margin:0 0 16px}

.lbv-fiche-produit + .lbv-selection{padding-top:0}
.lbv-fiche-produit + .lbv-selection .lbv-grille-produits{margin-top:36px}

@media (max-width:900px){
  .lbv-fiche-produit__grille{grid-template-columns:1fr;gap:36px}
  .lbv-fiche-produit{padding:28px 0 56px}
  .lbv-fiche-produit__texte{margin-top:44px;padding-top:32px}
}

/* ---- la note au boucher --------------------------------------------------
   Le champ vit DANS le formulaire d'ajout de WooCommerce (form.cart, en flex) :
   il prend toute la ligne et se place au-dessus de la quantité, qui le suit. */
.lbv-note-boucher{flex:0 0 100%;margin:0 0 18px}
.lbv-note-boucher label{display:flex;align-items:baseline;gap:10px;margin-bottom:9px;
  font-size:12px;font-weight:600;letter-spacing:.13em;text-transform:uppercase;color:var(--muted)}
.lbv-note-boucher label span{font-size:11px;font-weight:500;letter-spacing:.04em;
  text-transform:none;color:var(--faint)}
.lbv-note-boucher textarea{width:100%;min-height:78px;padding:14px 16px;background:var(--ground3);
  border:1px solid var(--line);border-radius:2px;color:var(--ink);font:inherit;font-size:15px;
  line-height:1.55;resize:vertical}
.lbv-note-boucher textarea::placeholder{color:rgba(243,238,233,.34)}
.lbv-note-boucher textarea:focus{outline:2px solid var(--orange);outline-offset:1px;
  border-color:transparent}

/* La même note, telle que le panier l'affiche sous l'article. */
.lbv-achat .wc-block-components-product-details{margin:10px 0 0;padding:0;list-style:none;
  font-size:13px;line-height:1.55;color:var(--muted);text-transform:none}
.lbv-achat .wc-block-components-product-details__name{color:var(--orange);font-weight:600;
  text-transform:none}
.lbv-achat .wc-block-components-product-details__value{text-transform:none}

/* ---- « VIANDE » en rouge, comme sur l'enseigne ---------------------------- */
.lbv .lbv-marque__accent{color:var(--rouge-enseigne)}
.lbv .lbv-marque:hover .lbv-marque__accent{color:var(--rouge-enseigne)}

/* ---- sélecteur de langue Weglot, masqué ----------------------------------
   Demandé par Bouba le 2026-09-06. Le site reste traduit : seules les pages
   /en/ deviennent inaccessibles au clic, pas au lien direct. Weglot pose son
   sélecteur en `position:fixed` en bas à droite (relevé sur le site en direct :
   `aside.country-selector.weglot-dropdown`). */
aside.country-selector,
.weglot-container,
#weglot-language-selector{display:none !important}

/* ==========================================================================
   Les pages de détail des postes (WP Job Openings)
   ==========================================================================
   Le greffon rend son gabarit DANS notre `<main>`, sans conteneur d'OceanWP
   autour — vérifié sur le site en direct. Rien à remplacer donc : on marque le
   corps `lbv-emploi` (functions.php) et on habille son balisage, exactement
   comme les blocs du panier. Les libellés du formulaire restent ceux du
   greffon ; ils se changent dans ses réglages, pas ici.
   ========================================================================== */

.lbv-emploi .awsm-job-main{padding:0 0 96px}
.lbv-emploi .awsm-job-container{width:100%;max-width:var(--large);margin:0 auto;padding:72px 48px 0}
.lbv-emploi .awsm-jobs-single-title{font-size:clamp(34px,4.6vw,60px);font-weight:600;
  line-height:1.05;letter-spacing:-.035em;margin:0 0 36px;padding:0 0 32px;
  border-bottom:1px solid var(--line);text-wrap:balance}

/* Le greffon met les deux colonnes en `float` avec des largeurs fixes, via
   `.awsm-job-single-wrap.awsm-col-2 .awsm-job-form` — plus précis que nos deux
   classes. D'où le sélecteur allongé et les `!important` : sans eux, la colonne
   de texte tombait à 342 px et le formulaire à 207 px (mesuré dans le navigateur). */
.lbv-emploi .awsm-job-single-wrap.awsm-col-2{display:grid;grid-template-columns:1.12fr .88fr;
  gap:64px;align-items:start}
.lbv-emploi .awsm-job-single-wrap .awsm-job-content,
.lbv-emploi .awsm-job-single-wrap .awsm-job-form{width:auto !important;max-width:none !important;
  float:none !important;padding:0 !important;margin:0 !important}
.lbv-emploi .awsm-job-form-inner{width:auto !important;max-width:none !important}

/* le texte de l'offre */
.lbv-emploi .awsm-job-entry-content{font-size:16.5px;line-height:1.78;color:rgba(243,238,233,.78)}
.lbv-emploi .awsm-job-entry-content h2{font-size:clamp(20px,2.2vw,25px);letter-spacing:-.02em;
  margin:38px 0 18px}
.lbv-emploi .awsm-job-entry-content h2:first-child{margin-top:0}
.lbv-emploi .awsm-job-entry-content strong{color:var(--ink);font-weight:600}
.lbv-emploi .awsm-job-entry-content p{margin:0 0 16px}
.lbv-emploi .awsm-job-entry-content ul,
.lbv-emploi .awsm-job-entry-content ol{list-style:revert;padding-left:1.35em;margin:0 0 22px}
.lbv-emploi .awsm-job-entry-content li{margin:0 0 8px}
.lbv-emploi .awsm-job-entry-content li::marker{color:var(--orange)}
.lbv-emploi .awsm-job-entry-content a{color:var(--orange);text-decoration:underline}

/* catégorie, type, lieu */
.lbv-emploi .awsm-job-specifications-container{margin-top:40px;padding-top:28px;
  border-top:1px solid var(--line)}
.lbv-emploi .awsm-job-specification-wrapper{display:flex;flex-wrap:wrap;gap:14px 44px}
.lbv-emploi .awsm-job-specification-item{display:flex;flex-direction:column;gap:5px;
  font-size:14.5px;color:var(--ink)}
.lbv-emploi .awsm-job-specification-label strong{font-size:11px;font-weight:600;
  letter-spacing:.18em;text-transform:uppercase;color:var(--orange)}
.lbv-emploi .awsm-job-specification-term{color:var(--ink)}
.lbv-emploi .awsm-job-specification-term:hover{color:var(--orange)}

/* le formulaire de candidature */
.lbv-emploi .awsm-job-form-inner{background:var(--ground2);border:1px solid var(--line);
  border-radius:2px;padding:34px 32px}
.lbv-emploi .awsm-job-form-inner h2{font-size:22px;letter-spacing:-.02em;margin:0 0 26px}
.lbv-emploi .awsm-job-form-group{margin:0 0 20px}
.lbv-emploi .awsm-application-form label{display:block;margin:0 0 8px;font-size:12px;
  font-weight:600;letter-spacing:.13em;text-transform:uppercase;color:var(--muted)}
.lbv-emploi .awsm-job-form-error{color:#F5A0A0}
.lbv-emploi .awsm-application-form .awsm-job-form-control,
.lbv-emploi .awsm-application-form input[type="text"],
.lbv-emploi .awsm-application-form input[type="email"],
.lbv-emploi .awsm-application-form input[type="tel"],
.lbv-emploi .awsm-application-form textarea{width:100%;padding:13px 15px;
  background:var(--ground3) !important;border:1px solid var(--line) !important;
  border-radius:2px;color:var(--ink) !important;font:inherit;font-size:15px;line-height:1.5}
.lbv-emploi .awsm-application-form textarea{min-height:120px;resize:vertical}
.lbv-emploi .awsm-application-form .awsm-job-form-control::placeholder{color:rgba(243,238,233,.34)}
.lbv-emploi .awsm-application-form .awsm-job-form-control:focus{outline:2px solid var(--orange);
  outline-offset:1px;border-color:transparent !important}
.lbv-emploi .awsm-application-form input[type="file"]{padding:12px;font-size:14px;color:var(--muted) !important}
.lbv-emploi .awsm-application-form input[type="file"]::file-selector-button{margin-right:12px;
  padding:8px 14px;background:transparent;border:1px solid rgba(243,238,233,.42);border-radius:2px;
  color:var(--ink);font:inherit;font-size:13px;cursor:pointer}
.lbv-emploi .awsm-application-form small{display:block;margin-top:8px;font-size:12px;color:var(--faint)}
.lbv-emploi .awsm-job-inline-group{display:flex;align-items:flex-start;gap:10px}
.lbv-emploi .awsm-job-inline-group label{margin:0;text-transform:none;letter-spacing:normal;
  font-size:13.5px;font-weight:400;color:rgba(243,238,233,.72);line-height:1.5}
.lbv-emploi .awsm-application-form input[type="checkbox"]{width:17px;height:17px;margin:3px 0 0;
  flex:0 0 auto;accent-color:var(--rouge)}
.lbv-emploi .awsm-application-submit-btn{display:inline-flex;align-items:center;
  justify-content:center;min-height:54px;padding:0 34px;background:var(--rouge);color:#fff;
  border:1px solid var(--rouge);border-radius:2px;font:inherit;font-weight:600;font-size:14px;
  letter-spacing:.05em;text-transform:uppercase;cursor:pointer}
.lbv-emploi .awsm-application-submit-btn:hover{background:#A81A1B;border-color:#A81A1B}
.lbv-emploi .awsm-application-message{margin-top:18px;font-size:14.5px;color:var(--ink)}

@media (max-width:900px){
  .lbv-emploi .awsm-job-single-wrap{grid-template-columns:1fr;gap:40px}
  .lbv-emploi .awsm-job-container{padding:44px 24px 0}
  .lbv-emploi .awsm-job-main{padding-bottom:56px}
  .lbv-emploi .awsm-job-form-inner{padding:26px 20px}
}

/* ==========================================================================
   L'en-tête mobile — correctif 1.3.1
   ==========================================================================
   Le bouton du menu se retrouvait seul sur une deuxième ligne, à gauche, sous
   le logo. Cause : `.lbv-entete__interieur` gardait `gap:36px` et le logo sa
   taille de bureau, si bien qu'à 412 px la ligne réclamait ~447 px pour 372 px
   disponibles — le hamburger (`order:3`) passait donc à la ligne suivante.
   On resserre la barre, on réduit le logo, et on place le bouton juste après le
   panier, à droite ; le panneau de navigation prend toute la largeur.

   Les quatre paliers ont été mesurés dans le navigateur, à 412, 360 et 320 px :
   c'est la largeur de `.lbv-marque` (logo + nom + « boucherie halal · Lévis »)
   qui décide, pas une intuition. Ce bloc est volontairement placé en dernier :
   il passe après les deux autres blocs `@media (max-width:1040px)` du fichier,
   qu'il complète.

   Seuil relevé à 1240 px en 1.4.1 : le conteneur est plafonné à 1240 px, donc
   sous cette largeur la rangée perd de la place alors que la navigation vient
   de gagner un lien. Entre 1041 et 1240 px, c'était la navigation qui passait à
   la ligne et le nom de la boutique qui se coupait en trois.
   ========================================================================== */

.lbv-panier__icone{display:inline-flex;align-items:center}
.lbv-panier__icone svg{display:block}

@media (max-width:1240px){
  .lbv-entete__interieur{flex-wrap:wrap;gap:12px;min-height:78px}
  .lbv-marque{flex:1 1 auto;min-width:0;gap:11px}
  .lbv-marque__logo{width:46px;height:46px}
  .lbv-marque__nom{font-size:14px;letter-spacing:.12em}
  .lbv-marque__sous{font-size:12.5px}
  .lbv-panier{order:2;flex:0 0 auto}
  .lbv-hamburger{order:3;flex:0 0 auto;display:flex}
  .lbv-nav{order:4;flex:1 0 100%;display:none;margin:0;padding:6px 0 18px;
    border-top:1px solid var(--line)}
  .lbv-bascule:checked ~ .lbv-nav{display:block}
  .lbv-nav__liste{flex-direction:column;align-items:stretch;gap:0}
  .lbv-nav__liste li + li{border-top:1px solid rgba(243,238,233,.07)}
  .lbv-nav__liste a{display:block;padding:14px 2px;font-size:14px;border-bottom:0}

  /* Le bouton devient une croix quand le menu est ouvert. */
  .lbv-bascule:checked ~ .lbv-hamburger{border-color:rgba(243,238,233,.4)}
  .lbv-bascule:checked ~ .lbv-hamburger span{background:transparent}
  .lbv-bascule:checked ~ .lbv-hamburger span::before{top:0;transform:rotate(45deg)}
  .lbv-bascule:checked ~ .lbv-hamburger span::after{top:0;transform:rotate(-45deg)}
}

/* Sous 520 px, le mot « Panier » cède la place : l'icône et la pastille suffisent. */
@media (max-width:520px){
  .lbv-panier__mot{position:absolute;left:-9999px}
}

/* Sous 400 px, la signature manuscrite passe à la trappe : c'est elle, et non le
   nom, qui rend le bloc de marque trop large. */
@media (max-width:400px){
  .lbv-marque__sous{display:none}
  .lbv-marque__nom{font-size:13px;letter-spacing:.1em}
}

/* Sous 380 px (iPhone SE), on réduit encore le logo et le nom. */
@media (max-width:380px){
  .lbv-entete__interieur{gap:8px}
  .lbv-marque__logo{width:40px;height:40px}
  .lbv-marque__nom{font-size:11.5px;letter-spacing:.08em}
}

/* ---- images d'illustration ------------------------------------------------
   Une photo qui n'est pas la pièce vendue le dit, sur la fiche comme sur la
   carte. Le texte vient de la légende du fichier joint, pas du gabarit. */
.lbv-fiche-produit__credit{margin:10px 0 0;font-size:12px;letter-spacing:.06em;
  text-transform:uppercase;color:var(--faint)}
.lbv-produit__image{position:relative}
.lbv-produit__mention{position:absolute;left:10px;bottom:10px;padding:4px 9px;border-radius:2px;
  background:rgba(16,14,13,.72);color:rgba(243,238,233,.82);font-size:9.5px;font-weight:600;
  letter-spacing:.14em;text-transform:uppercase;line-height:1}

/* ---- les spéciaux ---------------------------------------------------------
   Un seul lien accentué dans la navigation : c'est la page qui bouge, celle
   qu'on veut que les habitués rouvrent. */
/* L'étoile reprend celle de « Mise en avant » dans WooCommerce, qui est le geste
   par lequel un spécial se publie. Dessinée en masque plutôt qu'en image : elle
   prend la couleur du lien, donc elle change au survol comme le texte. */
.lbv .lbv-nav__vedette > a{color:var(--orange);display:inline-flex;align-items:center;gap:7px}
.lbv .lbv-nav__vedette > a:hover{color:var(--ink)}
.lbv .lbv-nav__vedette > a::before{content:"";flex:0 0 auto;width:13px;height:13px;
  background:currentColor;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2.1l3.02 6.12 6.76.98-4.89 4.77 1.15 6.73L12 17.52l-6.04 3.18 1.15-6.73L2.22 9.2l6.76-.98z'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2.1l3.02 6.12 6.76.98-4.89 4.77 1.15 6.73L12 17.52l-6.04 3.18 1.15-6.73L2.22 9.2l6.76-.98z'/%3E%3C/svg%3E") center/contain no-repeat}
/* Sans masque CSS (très vieux navigateur), pas de carré plein à la place du
   pictogramme : le lien reste simplement du texte. */
@supports not ((-webkit-mask: url('')) or (mask: url(''))){
  .lbv .lbv-nav__vedette > a::before{display:none}
}
.lbv-speciaux-tete .lbv-titre-1{max-width:14ch}
.lbv-speciaux-tete .lbv-chapeau{max-width:560px}

/* ==========================================================================
   Mobile : la barre d'infos descend, l'en-tête reste à portée — 1.4.2
   ==========================================================================
   Constat de Bouba, capture à l'appui : en mobilité, la barre du haut
   (adresse | horaire | jours fermés | téléphone) s'empile sur quatre lignes
   AVANT le logo. Elle repousse la page au moment où le visiteur arrive, et
   tout ce qu'elle dit se retrouve déjà dans le pied.

   Donc : masquée en haut, remplacée en bas par une barre d'appel flottante
   réduite à l'utile (quand c'est ouvert + un bouton pour appeler), et l'en-tête
   devient collant pour que le menu et le panier restent à un pouce.
   ========================================================================== */

.lbv-appel{display:none;position:fixed;left:0;right:0;bottom:0;z-index:70;
  align-items:center;justify-content:space-between;gap:14px;
  padding:9px 16px calc(9px + env(safe-area-inset-bottom, 0px));
  background:rgba(16,14,13,.95);border-top:1px solid var(--line);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.lbv-appel__infos{display:flex;flex-direction:column;gap:2px;min-width:0}
.lbv-appel__horaire{font-size:12.5px;font-weight:600;color:var(--ink);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lbv-appel__ferme{font-size:11px;color:var(--faint);white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis}
.lbv-appel__bouton{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;
  min-height:42px;padding:0 22px;background:var(--rouge);border:1px solid var(--rouge);
  border-radius:2px;color:#fff;font-weight:600;font-size:13px;letter-spacing:.06em;
  text-transform:uppercase}
.lbv .lbv-appel__bouton{color:#fff}
.lbv .lbv-appel__bouton:hover{background:#A81A1B;border-color:#A81A1B;color:#fff}

@media (max-width:1240px){
  /* L'en-tête suit le défilement : le menu et le panier restent à portée.
     Sur l'accueil, l'en-tête est posé DANS le héros (overflow:hidden), qui est
     son propre conteneur de défilement : il y reste solidaire de la vidéo. */
  .lbv-chrome{position:sticky;top:0;z-index:60}
}

@media (max-width:900px){
  .lbv-barre{display:none}
  .lbv-appel{display:flex}
  /* pour que le bas du pied ne passe pas sous la barre flottante */
  .lbv-pied__bas{padding-bottom:84px}
}

@media (max-width:380px){
  .lbv-appel__bouton{padding:0 16px;font-size:12px}
}
