/* ============================================================
   BizVa v20 — Feuille de style UNIQUE et faisant autorité
   pour les modales (Réserver / Payer / Inscription / Catalogue),
   la barre de partage et le chatbot.

   HISTORIQUE DU PROBLÈME :
   La mise en page des modales était redéfinie, avec !important, à
   au moins 10 endroits différents à travers 6 fichiers CSS ajoutés
   au fil du temps (v8, v9, v10, v12.4-fix, v13-rebrand, v18) — dont
   certains se contredisaient directement. Ces 6 fichiers s'accompa-
   gnaient aussi de scripts JS qui scannaient toute la page en boucle
   (setInterval + MutationObserver sur tout le document), en
   permanence, même quand aucune modale n'était ouverte : c'était la
   cause principale des lenteurs/gels ressentis au clic sur
   "Réserver", "Payer" ou à l'ouverture du formulaire d'inscription.

   CE FICHIER remplace intégralement bizva-v8.css, bizva-v9.css,
   bizva-v10.css, bizva-v12.4-fix.css, bizva-v18-layout-fix.css
   (supprimés) et retire les 4 règles de bizva-v13-rebrand.css qui
   touchaient les modales. Il n'en garde que ce qui était réellement
   unique et utile (barre de partage, ouverture forcée du chatbot).
   Le JS correspondant (scans en boucle) a lui aussi été retiré et
   remplacé par des appels directs, une seule fois, au bon moment
   (voir index.html : openModal / closeModal / openCatalog /
   closeCatalog gèrent désormais eux-mêmes body.classList
   'modal-open', sans observateur).
   ============================================================ */

/* ---- Fond de la modale (l'overlay plein écran) ---- */
.modal-bg{
  position:fixed!important;
  inset:0!important;
  z-index:1500!important;
  background:rgba(0,0,0,.58)!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
  display:none!important;
  align-items:center!important;
  justify-content:center!important;
  padding:1.5rem!important;
  overflow:hidden!important;          /* seul .modal-body défile, jamais le fond */
  overscroll-behavior:contain!important;
  touch-action:auto!important;        /* ne bloque jamais le geste de scroll mobile */
}
.modal-bg.open{ display:flex!important; }
.modal-bg.open > *{ animation:bzModalIn19 .18s ease-out both; }
@keyframes bzModalIn19{ from{opacity:0;transform:translateY(8px)} to{opacity:1;transform:none} }
@media (prefers-reduced-motion: reduce){ .modal-bg.open > *{ animation:none!important; } }

/* v324 — Fenêtre « Précisez votre adresse » ouverte depuis la
   réservation : Variante C « Resserrée ». Même ordre qu'avant (recherche,
   carte, code GPS, Quartier/Ville/Pays, repère, boutons), tout tient sur
   un seul écran. La carte suit la hauteur de l'écran (8,5 à 13 rem,
   15 rem sur ordinateur) ; sur un très petit écran, le corps défile au
   lieu d'être coupé. Remplace le bloc v323 ; c'est le SEUL endroit où
   ces règles vivent (index.html n'en garde plus de copie). Les boutons
   sont exclus de la règle mobile générale « .modal-body button
   {min-height:44px;padding:.6rem .9rem} », qui les écrasait. */
.modal-bg.bz-ap-nested-scrim{background:rgba(35,22,12,.28)!important;backdrop-filter:blur(2px)!important;z-index:1700!important;padding:.6rem!important}
.modal-bg.bz-ap-nested-scrim>.bz-ap-shell{max-width:34rem!important;border-radius:1.5rem!important;box-shadow:0 32px 64px -12px rgba(45,27,14,.34)!important;animation:bzAddressIn .32s cubic-bezier(.32,.72,0,1)!important;max-height:calc(100dvh - 1.2rem)!important;display:flex!important;flex-direction:column!important;overflow:hidden!important;margin:auto!important}
.modal-bg.bz-ap-nested-scrim .bz-ap-head{padding:.75rem .75rem .5rem 1.1rem!important;border-bottom:0!important;align-items:center!important;gap:.6rem!important;flex:0 0 auto!important}
.modal-bg.bz-ap-nested-scrim .bz-ap-title{font-size:1.06rem!important;line-height:1.2!important;letter-spacing:-.01em!important;color:#2d1b0e!important}
.modal-bg.bz-ap-nested-scrim .bz-ap-subtitle{margin:.08rem 0 0!important;color:var(--muted-fg)!important;font-size:.7rem!important;line-height:1.3!important}
.modal-bg.bz-ap-nested-scrim .bz-ap-close{width:2.25rem!important;height:2.25rem!important;min-height:0!important;flex:0 0 auto!important;border-radius:999px!important;padding:0!important;border:1px solid var(--border)!important;display:inline-flex!important;align-items:center!important;justify-content:center!important}
.modal-bg.bz-ap-nested-scrim .bz-ap-body{padding:0 .9rem .9rem!important;display:flex!important;flex-direction:column!important;gap:.55rem!important;flex:1 1 auto!important;min-height:0!important;overflow-y:auto!important;overscroll-behavior:contain!important}
.modal-bg.bz-ap-nested-scrim .bz-ap-body>*{margin:0!important}
.modal-bg.bz-ap-nested-scrim .bz-ap-top{position:relative!important}
.modal-bg.bz-ap-nested-scrim .bz-ap-searchrow{gap:.4rem!important;flex-wrap:nowrap!important}
.modal-bg.bz-ap-nested-scrim #bz-ap-search{height:2.5rem!important;padding:0 .7rem 0 2.1rem!important;border-width:1px!important;border-radius:.7rem!important;font-size:.82rem!important}
.modal-bg.bz-ap-nested-scrim .bz-ap-search-ico{display:block!important;position:absolute!important;left:.7rem!important;top:1.25rem!important;transform:translateY(-50%)!important;font-size:1rem!important;color:var(--muted-fg)!important;pointer-events:none!important;z-index:1!important}
.modal-bg.bz-ap-nested-scrim .bz-ap-bookbtn.has-items{display:inline-flex!important}
.modal-bg.bz-ap-nested-scrim .bz-ap-body .bz-ap-iconbtn{width:2.5rem!important;height:2.5rem!important;min-height:0!important;flex:0 0 auto!important;align-items:center!important;justify-content:center!important;padding:0!important;border:1px solid var(--border)!important;border-radius:.7rem!important;background:#fff!important;color:#945328!important;font-size:1.05rem!important;cursor:pointer!important;white-space:nowrap!important}
.modal-bg.bz-ap-nested-scrim .bz-ap-body .bz-ap-iconbtn[aria-expanded="true"]{background:var(--muted)!important;border-color:#945328!important}
.modal-bg.bz-ap-nested-scrim .bz-ap-body .bz-ap-detect{width:2.5rem!important;height:2.5rem!important;min-height:0!important;flex:0 0 auto!important;padding:0!important;gap:0!important;justify-content:center!important;border-radius:.7rem!important;font-size:1.15rem!important;white-space:nowrap!important}
.modal-bg.bz-ap-nested-scrim .bz-ap-detect-txt{display:none!important}
.modal-bg.bz-ap-nested-scrim #bz-ap-book{position:absolute!important;right:0!important;top:calc(100% + .3rem)!important;z-index:46!important;display:none!important;flex-direction:column!important;align-items:stretch!important;flex-wrap:nowrap!important;gap:.2rem!important;min-width:12rem!important;max-width:100%!important;max-height:12rem!important;overflow:auto!important;background:var(--card,#fff)!important;border:1px solid var(--border)!important;border-radius:.8rem!important;padding:.35rem!important;box-shadow:0 12px 28px rgba(45,27,14,.18)!important}
.modal-bg.bz-ap-nested-scrim #bz-ap-book.open{display:flex!important}
.modal-bg.bz-ap-nested-scrim .bz-ap-body #bz-ap-book button{text-align:left!important;border:0!important;border-radius:.5rem!important;font-size:.8rem!important;min-height:2.5rem!important;padding:.5rem .6rem!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
.modal-bg.bz-ap-nested-scrim .bz-ap-body .bz-ap-results button{min-height:2.5rem!important;white-space:normal!important}
.modal-bg.bz-ap-nested-scrim #bz-ap-map{height:clamp(8.5rem,calc(100dvh - 29rem),13rem)!important;border-radius:1rem!important;border:1px solid var(--border)!important}
.modal-bg.bz-ap-nested-scrim .bz-ap-hint,.modal-bg.bz-ap-nested-scrim .bz-ap-locate{display:none!important}
.modal-bg.bz-ap-nested-scrim .bz-ap-meta{flex-wrap:nowrap!important;overflow:hidden!important;white-space:nowrap!important;min-height:1.3rem!important;font-size:.72rem!important;gap:.3rem!important;margin-top:-.15rem!important}
.modal-bg.bz-ap-nested-scrim .bz-ap-chip{font-size:.68rem!important;padding:.15rem .45rem!important;flex:0 0 auto!important}
.modal-bg.bz-ap-nested-scrim .bz-ap-place{flex:1 1 auto!important;min-width:0!important;overflow:hidden!important;text-overflow:ellipsis!important}
.modal-bg.bz-ap-nested-scrim #bz-ap-extra .bm-d-row3{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:.4rem!important}
.modal-bg.bz-ap-nested-scrim #bz-ap-extra .bm-d-row3>div{grid-column:auto!important;min-width:0!important}
.modal-bg.bz-ap-nested-scrim #bz-ap-extra .label-xs{display:block!important;font-size:.66rem!important;margin-bottom:.15rem!important}
.modal-bg.bz-ap-nested-scrim #bz-ap-extra .input{height:2.3rem!important;padding:0 .6rem!important;background:#fcfaf7!important;border-width:1px!important;border-radius:.65rem!important;font-size:.8rem!important}
.modal-bg.bz-ap-nested-scrim .bz-ap-lmblock .label{display:block!important;font-size:.75rem!important;margin-bottom:.25rem!important}
.modal-bg.bz-ap-nested-scrim #bz-ap-landmark{height:2.55rem!important;padding:0 .75rem!important;border-width:1px!important;border-radius:.7rem!important;font-size:.84rem!important}
.modal-bg.bz-ap-nested-scrim .bz-ap-lm-sugg{flex-wrap:nowrap!important;overflow-x:auto!important;scrollbar-width:none!important;min-height:0!important;margin-top:.35rem!important;gap:.35rem!important}
.modal-bg.bz-ap-nested-scrim .bz-ap-lm-sugg::-webkit-scrollbar{display:none!important}
.modal-bg.bz-ap-nested-scrim .bz-ap-body .bz-ap-lm-sugg button{flex:0 0 auto!important;min-height:2rem!important;padding:.3rem .65rem!important;font-size:.74rem!important;line-height:1.2!important;white-space:nowrap!important}
.modal-bg.bz-ap-nested-scrim .bz-ap-lm-hint{white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
.modal-bg.bz-ap-nested-scrim .bz-ap-err:empty{display:none!important}
.modal-bg.bz-ap-nested-scrim .bz-ap-actions{padding-top:.6rem!important;border-top:1px solid var(--border)!important;flex-wrap:nowrap!important;gap:.5rem!important}
.modal-bg.bz-ap-nested-scrim .bz-ap-body .bz-ap-btn{height:2.75rem!important;min-height:0!important;padding:0 .9rem!important;border-radius:1.4rem!important;font-weight:700!important;white-space:nowrap!important}
.modal-bg.bz-ap-nested-scrim .bz-ap-body .bz-ap-btn-main{background:#945328!important;color:#fff!important;border-color:#945328!important;flex:1 1 auto!important}
@media(min-width:641px){
  .modal-bg.bz-ap-nested-scrim #bz-ap-map{height:clamp(8.5rem,calc(100dvh - 29rem),15rem)!important}
}
/* Navigateurs sans dvh : repli en vh */
@supports not (height:1dvh){
  .modal-bg.bz-ap-nested-scrim>.bz-ap-shell{max-height:calc(100vh - 1.2rem)!important}
  .modal-bg.bz-ap-nested-scrim #bz-ap-map{height:clamp(8.5rem,calc(100vh - 29rem),13rem)!important}
}

/* v325 — Étape 3 : position d'intervention + point de repère.
   Réécrit en classes, sans style en ligne : les règles mobiles générales
   « .modal-body [style*=display:flex]{flex-wrap:wrap} » et « .modal-body
   button{white-space:normal;word-break:break-word} » cassaient ce bloc dès
   qu'une suggestion de repère apparaissait (après « Confirmer cette
   position ») : pastille coupée lettre par lettre, bloc étiré sur 270 px.
   Tout est donc verrouillé ici, pour ce bloc seulement. */
#booking-modal .bm-loc-row{display:grid!important;grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;gap:.6rem!important;align-items:start!important;margin:0!important}
#booking-modal .bm-loc-row>.bm-loc-card{display:flex!important;flex-direction:row!important;flex-wrap:nowrap!important;align-items:center!important;gap:.55rem!important;width:auto!important;min-width:0!important;max-width:none!important;height:auto!important;min-height:0!important;margin:0!important;padding:.45rem!important}
#booking-modal .bm-loc-row .bm-loc-thumb{flex:0 0 4.2rem!important;width:4.2rem!important;height:4.2rem!important;min-height:0!important;max-height:4.2rem!important;align-self:center!important}
#booking-modal .bm-loc-row .bm-loc-body{flex:1 1 auto!important;min-width:0!important;display:flex!important;flex-direction:column!important;gap:.2rem!important;justify-content:center!important}
#booking-modal .bm-loc-row .bm-loc-title{white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
#booking-modal .bm-loc-row .bm-loc-sub{display:-webkit-box!important;-webkit-line-clamp:2!important;-webkit-box-orient:vertical!important;overflow:hidden!important;white-space:normal!important;word-break:normal!important;overflow-wrap:anywhere!important}
#booking-modal .bm-loc-row .bm-loc-chips{display:flex!important;flex-wrap:wrap!important;gap:.25rem!important;min-width:0!important}
#booking-modal .bm-loc-row .bm-loc-chips span{white-space:nowrap!important;max-width:100%!important;overflow:hidden!important;text-overflow:ellipsis!important}
#booking-modal .bm-lm-col{min-width:0!important;display:flex!important;flex-direction:column!important;gap:.3rem!important;border-left:1px solid var(--border)!important;padding-left:.6rem!important;margin:0!important}
#booking-modal .bm-lm-label{display:block!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;margin:0!important}
#booking-modal .bm-lm-col #bm-landmark{width:100%!important;min-width:0!important;margin:0!important}
#booking-modal .bm-lm-strip{display:flex!important;flex-wrap:nowrap!important;gap:.3rem!important;overflow-x:auto!important;overflow-y:hidden!important;scrollbar-width:none!important;min-width:0!important;max-width:100%!important;padding:0 0 .1rem!important;margin:0!important}
#booking-modal .bm-lm-strip::-webkit-scrollbar{display:none!important}
#booking-modal .bm-lm-strip:empty{display:none!important}
#booking-modal .bm-lm-strip button{flex:0 0 auto!important;display:inline-flex!important;align-items:center!important;gap:.3rem!important;max-width:15rem!important;min-width:0!important;min-height:32px!important;height:auto!important;padding:.25rem .6rem!important;font-size:.72rem!important;line-height:1.2!important;white-space:nowrap!important;word-break:normal!important;overflow-wrap:normal!important;border-radius:999px!important;border:1px solid var(--border)!important;background:var(--muted)!important;color:inherit!important;cursor:pointer!important;width:auto!important}
#booking-modal .bm-lm-strip .bm-lm-txt{min-width:0!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important}
#booking-modal .bm-lm-strip .bm-lm-m{flex:0 0 auto!important;color:var(--muted-fg)!important;font-size:.66rem!important}
@media(max-width:560px){
  #booking-modal .bm-loc-row{grid-template-columns:minmax(0,1fr)!important}
  #booking-modal .bm-lm-col{border-left:0!important;padding-left:0!important}
}

/* v325 — Prestataires en cours de vérification sur la carte (non
   sélectionnables) et prestataires qui partagent leur position en direct. */
.bm-prov-pending-dot{width:18px;height:18px;border-radius:50%;background:#b8b2a7;border:2px solid #fff;box-shadow:0 1px 4px rgba(0,0,0,.3)}
.bm-prov-live-ring{position:absolute;inset:-5px;border-radius:50%;border:2px solid #1D9E75;animation:bmLivePulse 1.8s ease-out infinite}
@keyframes bmLivePulse{0%{opacity:.9;transform:scale(.85)}100%{opacity:0;transform:scale(1.5)}}
.bm-prov-badge{display:inline-block;font-size:.62rem;font-weight:600;padding:.05rem .35rem;border-radius:.35rem;margin-left:.3rem;vertical-align:middle}
.bm-prov-badge.real{background:hsl(150,45%,90%);color:hsl(150,60%,22%)}
.bm-prov-badge.live{background:hsl(160,60%,88%);color:hsl(160,70%,20%)}

/* ---- La boîte de la modale elle-même ---- */
.modal-box{
  background:#fff!important;
  color:#1a1410!important;
  border-radius:var(--r-xl,1.25rem)!important;
  width:100%!important;
  max-width:min(40rem,100%)!important;
  max-height:min(92dvh,92vh)!important;
  margin:auto!important;
  box-shadow:var(--sh-lg,0 24px 64px rgba(0,0,0,.3))!important;
  display:flex!important;
  flex-direction:column!important;
  overflow:hidden!important;          /* le débordement est géré par .modal-body, pas ici */
}
.modal-head{
  flex:0 0 auto!important;
  padding:1.5rem 1.5rem 1rem!important;
  display:flex!important;
  align-items:center!important;
  justify-content:space-between!important;
  border-bottom:1px solid var(--border)!important;
}

/* ---- Le corps défilant : SEUL endroit où le scroll interne se produit ---- */
.modal-body,
.modal-body-inner{
  flex:1 1 auto!important;
  min-height:0!important;             /* indispensable pour qu'un enfant flex puisse défiler */
  overflow-y:auto!important;
  overflow-x:hidden!important;
  -webkit-overflow-scrolling:touch!important;
  overscroll-behavior:contain!important;
  touch-action:pan-y!important;
  padding:1.5rem!important;
}
.modal-bg [id$="-success"]{ max-height:none!important; overflow:visible!important; }

/* Les anciens écrans "étape" ne doivent plus avoir leur propre scroll
   imbriqué (ça cassait le geste tactile sur mobile) : un seul scroll,
   celui de .modal-body ci-dessus. */
.step-panel{ display:none!important; }
.step-panel.active-step{ display:block!important; }
.form-step-fields,
.bm-step-scroll,
[class*="-step-scroll"]{
  max-height:none!important;
  overflow:visible!important;
  touch-action:auto!important;
}

/* ---- Champs de formulaire ---- */
.modal-bg input,
.modal-bg select,
.modal-bg textarea{
  width:100%!important;
  max-width:100%!important;
  font-size:16px!important;   /* empêche le zoom automatique iOS au focus */
  line-height:1.35!important;
}
.modal-bg textarea{ resize:vertical!important; min-height:92px!important; }
.modal-bg label{ display:block!important; }
.modal-bg .btn,
.modal-bg button{
  min-height:44px!important;  /* cible tactile confortable, norme mobile */
  white-space:normal!important;
  text-align:center!important;
}
.iti,.iti__tel-input{ width:100%!important; }

/* ---- Catalogue (grille à l'intérieur d'une modale) ---- */
#catalog-modal .modal-box{ max-height:min(92dvh,92vh)!important; }
#catalog-modal .modal-body{ padding-bottom:1.5rem!important; }
#catalog-grid{
  display:grid!important;
  grid-template-columns:repeat(auto-fill,minmax(min(100%,11rem),1fr))!important;
  gap:.85rem!important;
}
#catalog-grid > *{ min-width:0!important; }
#catalog-grid img{
  width:100%!important; height:120px!important; object-fit:cover!important;
  border-radius:.6rem!important; background:#f3eee6!important;
}

/* ---- Mobile : la modale devient une feuille pleine largeur ancrée en bas ---- */
@media (max-width:768px){
  .modal-bg{
    padding:.5rem .5rem calc(.5rem + env(safe-area-inset-bottom))!important;
    align-items:flex-end!important;
  }
  .modal-box{
    max-width:100%!important;
    width:100%!important;
    max-height:min(94dvh,94vh)!important;
    border-radius:1rem 1rem 0 0!important;
    margin:0!important;
  }
  .modal-head{ padding:1rem 1rem .75rem!important; }
  .modal-body{ padding:1rem .9rem calc(1.5rem + env(safe-area-inset-bottom))!important; }

  .btn, button.btn, .modal-body button, .modal-body .btn{
    min-height:44px!important;
    padding:.6rem .9rem!important;
    font-size:.875rem!important;
    white-space:normal!important;
    word-break:break-word!important;
    line-height:1.2!important;
  }
  .modal-body .flex,
  .modal-body [style*="display:flex"],
  .modal-body [style*="display: flex"]{
    flex-wrap:wrap!important;
    gap:.5rem!important;
  }
  .modal-body .flex > .btn,
  .modal-body [style*="display:flex"] > .btn{ flex:1 1 auto!important; min-width:0!important; }

  #catalog-grid{ grid-template-columns:repeat(2,minmax(0,1fr))!important; gap:.6rem!important; }
  #catalog-grid img{ height:96px!important; }

  .steps{ flex-wrap:wrap!important; gap:.25rem!important; justify-content:center!important; }
  .step-dot{ min-width:1.5rem!important; height:1.5rem!important; font-size:.75rem!important; }
  .step-line{ display:none!important; }

  .bm-grid2,.bm-grid2-forced,.bm-media-grid{ grid-template-columns:1fr 1fr!important; }
  .bz-share-bar{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    flex-wrap:wrap!important; gap:.4rem!important; padding:.5rem 0!important;
  }
  .bz-share-bar .btn{ flex:1 1 45%!important; min-height:42px!important; font-size:.78rem!important; }

  /* Le chatbot ne doit jamais recouvrir une modale ouverte */
  body.modal-open #chatbot-fab,
  body.modal-open #chatbot-help-label,
  body.modal-open #chatbot-box{ display:none!important; }
}
@media (max-width:400px){
  .bm-grid2,.bm-grid2-forced,.bm-media-grid{ grid-template-columns:1fr!important; }
}

/* ---- Desktop large : la modale respire, centrée, pas collée aux bords ---- */
@media (min-width:1024px){
  .modal-bg{ padding:2rem 1.5rem!important; align-items:center!important; }
}

/* ---- Verrouillage du scroll de la page pendant qu'une modale est ouverte ----
   (le décalage -top est appliqué dynamiquement en JS via _bzLockScroll(),
   ce fichier ne fait que garantir position:fixed de façon cohérente) */
body.modal-open{
  position:fixed!important;
  left:0!important;
  right:0!important;
  width:100%!important;
  overflow:hidden!important;
}

/* ============================================================
   Barre de partage (PDF / WhatsApp / e-mail / Facebook) affichée
   sur les écrans de confirmation (réservation, annonce, location...).
   Récupéré de l'ancien bizva-v8.css — c'était la seule règle
   réellement unique de ce fichier, le reste était redondant avec
   ce qui précède.
   ============================================================ */
.bz-share-bar{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:.5rem;
  margin-top:1rem;
}
@media (min-width:480px){
  .bz-share-bar{ grid-template-columns:repeat(4,minmax(0,1fr)); }
}
.bz-share-bar .btn{
  width:100%;
  justify-content:center;
  font-size:.8rem;
  padding:.65rem .5rem;
  white-space:nowrap;
}
.bz-share-bar .bz-pdf { background:#6b3e1c; color:#fff; }
.bz-share-bar .bz-wa  { background:#25D366; color:#fff; }
.bz-share-bar .bz-mail{ background:#0072c6; color:#fff; }
.bz-share-bar .bz-fb  { background:#1877F2; color:#fff; }
.bz-share-bar .btn:disabled{ opacity:.7; cursor:wait; }

/* ============================================================
   Le chatbot force son ouverture visuelle via la classe
   .cb-force-open (ajoutée par patchToggle() dans le script
   principal). Récupéré de l'ancien bizva-v12.4-fix.css — seule
   règle unique de ce fichier, le reste (scroll des modales,
   catalogue, boutons mobile) est déjà couvert plus haut.
   ============================================================ */
#chatbot-box.cb-force-open{
  display:flex!important;
  flex-direction:column!important;
  opacity:1!important;
}

/* ============================================================
   v25 — DURCISSEMENT MISE EN PAGE DES MODALES
   Objectif : toute modale du projet est bien cadrée dans l'écran,
   son contenu ne déborde jamais, et le scroll interne s'active
   automatiquement dès que le contenu dépasse la hauteur dispo.
   ============================================================ */

/* Le fond centre toujours la boîte et laisse une marge de sécurité */
.modal-bg{
  padding:max(1rem,env(safe-area-inset-top)) 1rem max(1rem,env(safe-area-inset-bottom))!important;
}

/* Toute boîte de modale (même sans la classe .modal-box) est cadrée */
.modal-bg > div{
  max-height:min(92dvh,92vh)!important;
  max-width:min(40rem,100%)!important;
  width:100%!important;
  display:flex!important;
  flex-direction:column!important;
  overflow:hidden!important;
}
/* La largeur personnalisée en style inline (ex: catalogue 54rem) reste prioritaire */
.modal-bg > div[style*="max-width"]{ width:100%!important; }

/* En-tête et pied figés, corps défilant */
.modal-head{ position:sticky!important; top:0!important; z-index:2!important; background:#fff!important; }
.modal-foot,
.modal-actions{
  flex:0 0 auto!important;
  position:sticky!important; bottom:0!important; z-index:2!important;
  background:#fff!important;
  border-top:1px solid var(--border)!important;
  padding:.9rem 1.5rem calc(.9rem + env(safe-area-inset-bottom))!important;
  display:flex!important; gap:.6rem!important; flex-wrap:wrap!important;
  justify-content:flex-end!important;
}
.modal-head h2,.modal-head h3{ min-width:0!important; overflow-wrap:anywhere!important; }

/* Corps : un seul scroll interne, jamais de débordement horizontal */
.modal-body,.modal-body-inner{
  flex:1 1 auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  overscroll-behavior:contain!important;
  scrollbar-width:thin;
}
.modal-body::-webkit-scrollbar{width:6px}
.modal-body::-webkit-scrollbar-thumb{background:var(--border);border-radius:99px}

/* Aucun enfant ne peut élargir la modale */
.modal-body *{ max-width:100%!important; }
.modal-body img,.modal-body video,.modal-body iframe,.modal-body canvas{
  max-width:100%!important; height:auto!important; display:block;
}
.modal-body pre,.modal-body code{ white-space:pre-wrap!important; overflow-wrap:anywhere!important; }
.modal-body table{ display:block!important; width:100%!important; overflow-x:auto!important; }
.modal-body p,.modal-body h1,.modal-body h2,.modal-body h3,.modal-body span,.modal-body div,.modal-body a{
  overflow-wrap:anywhere;
}
.modal-body > *:first-child{ margin-top:0!important; }
.modal-body > *:last-child{ margin-bottom:0!important; }

/* Grilles internes : jamais de colonne qui déborde */
.modal-body .grid > *{ min-width:0!important; }

/* Mobile : feuille ancrée en bas, toujours entièrement visible */
@media (max-width:768px){
  .modal-bg{ align-items:flex-end!important; padding:.5rem .5rem calc(.5rem + env(safe-area-inset-bottom))!important; }
  .modal-bg > div{
    max-width:100%!important;
    max-height:min(94dvh,94vh)!important;
    border-radius:1rem 1rem 0 0!important;
    margin:0!important;
  }
  .modal-foot,.modal-actions{ padding:.75rem 1rem calc(.75rem + env(safe-area-inset-bottom))!important; }
  .modal-foot .btn,.modal-actions .btn{ flex:1 1 auto!important; }
}

/* ══════════════════════════════════════════════════════════════
   v25 — HERO HOME : hauteur verticale compacte et STABLE
   (la règle globale `section{padding-block:clamp(3rem,6vw,5.5rem)}`
    ajoutait ~150px de vide sous les CTA après le chargement du CSS)
   ══════════════════════════════════════════════════════════════ */
#page-home > section.hero-home-tight,
section.hero-home-tight{
  padding-top:0!important;
  padding-bottom:0!important;
  min-height:0!important;
}
section.hero-home-tight > .container{
  padding-bottom:2rem!important;
}
section.hero-home-tight #slide-dots{ bottom:.65rem!important; }
@media (min-width:1024px){
  /* les deux colonnes du hero restent alignées et compactes */
  section.hero-home-tight > .container > .grid{ align-items:center!important; }
}
@media (max-width:768px){
  section.hero-home-tight > .container{ padding-top:1.5rem!important; padding-bottom:1.75rem!important; }
}

/* ══════════════════════════════════════════════════════════════
   v25 — MODALES : cadrage propre + scroll interne garanti
   S'applique à TOUTES les modales du projet (.modal-bg / .modal-box)
   ══════════════════════════════════════════════════════════════ */
.modal-bg{
  align-items:center!important;
  justify-content:center!important;
  padding:clamp(.75rem,2vh,1.5rem)!important;
  overflow:hidden!important;              /* le scroll se fait DANS la modale */
}
.modal-bg > .modal-box,
.modal-bg > div{
  display:flex!important;
  flex-direction:column!important;
  max-height:min(92dvh,92vh)!important;
  overflow:hidden!important;
}
.modal-bg .modal-head{
  flex:0 0 auto!important;
  position:sticky; top:0; z-index:3;
  background:#fff;
  gap:.75rem;
}
.modal-bg .modal-head h2,
.modal-bg .modal-head h3{ min-width:0; overflow-wrap:anywhere; }

/* Corps : seul élément scrollable, toujours réductible (min-height:0) */
.modal-bg .modal-body{
  flex:1 1 auto!important;
  min-height:0!important;
  display:block!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  -webkit-overflow-scrolling:touch;
  overscroll-behavior:contain;
  scrollbar-width:thin;
}
.modal-bg .modal-body-inner,
.modal-bg .form-step-fields,
.modal-bg .step-panel.active-step{
  overflow:visible!important;
  min-height:0!important;
}
/* Les sous-conteneurs ne créent plus de 2e scroll imbriqué */
.modal-bg .bm-step-scroll{
  max-height:none!important;
  overflow:visible!important;
}
.modal-bg .modal-body::-webkit-scrollbar{width:8px}
.modal-bg .modal-body::-webkit-scrollbar-thumb{background:var(--border);border-radius:99px}

/* Pied d'action toujours visible */
.modal-bg .modal-foot,
.modal-bg .modal-actions{
  flex:0 0 auto!important;
  position:sticky; bottom:0; z-index:3;
  background:#fff;
  border-top:1px solid var(--border);
}

/* Contenu bien cadré à l'intérieur */
.modal-bg .modal-body img,
.modal-bg .modal-body video,
.modal-bg .modal-body iframe,
.modal-bg .modal-body canvas{ max-width:100%!important; height:auto; }
.modal-bg .modal-body table{ display:block; width:100%; overflow-x:auto; }
.modal-bg .modal-body pre{ white-space:pre-wrap; overflow-wrap:anywhere; }
.modal-bg .modal-body > *{ min-width:0; }

@media (max-width:768px){
  .modal-bg{ align-items:flex-end!important; padding:.5rem .5rem calc(.5rem + env(safe-area-inset-bottom))!important; }
  .modal-bg > .modal-box,
  .modal-bg > div{
    width:100%!important; max-width:100%!important;
    max-height:min(90dvh,90vh)!important;
    border-radius:1.1rem 1.1rem 0 0!important;
    margin:0!important;
  }
  .modal-bg .modal-body{ padding:1rem .9rem 1.25rem!important; }
}

/* ── v42 : mini-calendrier du hero (Urgent / Cette semaine) ───────── */
.hero-datepanel{
  margin-top:.55rem;padding:.6rem .65rem;border-radius:.85rem;
  background:rgba(0,0,0,.32);border:1px solid rgba(255,255,255,.14);
  max-height:min(46vh,340px);overflow-y:auto;-webkit-overflow-scrolling:touch;
}
.hero-datepanel-head{
  display:flex;align-items:center;justify-content:space-between;gap:.5rem;
  font-size:.7rem;font-weight:700;color:#fff8e6;margin-bottom:.45rem;
  position:sticky;top:-.6rem;background:transparent;
}
.hero-datepanel-close{
  background:transparent;border:0;color:rgba(255,248,230,.65);
  font-size:.8rem;line-height:1;cursor:pointer;padding:.15rem .25rem;
}
.hero-datepanel-close:hover{color:#fff}
.hero-datepanel-sub{font-size:.66rem;color:rgba(255,248,230,.6);margin:.55rem 0 .35rem}
.hero-datepanel-days,.hero-datepanel-slots{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(66px,1fr));gap:.35rem;
}
.hero-datepanel-slots{grid-template-columns:repeat(auto-fill,minmax(88px,1fr))}
.hero-datepanel-month{
  grid-column:1/-1;font-size:.62rem;font-weight:700;letter-spacing:.04em;
  text-transform:uppercase;color:hsl(var(--gold));margin:.3rem 0 .1rem;
}
.hero-datepanel-recap{
  margin-top:.55rem;font-size:.68rem;color:#2b1a08;font-weight:700;
  background:hsl(var(--gold));border-radius:.55rem;padding:.35rem .5rem;text-align:center;
}


/* ═══════════ v43 — Modale « date + créneau » du hero ═══════════ */
#hero-date-modal .modal-box{ display:flex!important; flex-direction:column!important; max-height:min(88vh,44rem)!important; }
#hero-date-modal .modal-body{ flex:1 1 auto!important; min-height:0!important; overflow-y:auto!important; -webkit-overflow-scrolling:touch; }
.hero-dm-sub{ font-size:.78rem; font-weight:700; color:var(--muted-fg); margin:0 0 .5rem; }
.hero-dm-month{ grid-column:1/-1; font-size:.72rem; font-weight:700; text-transform:capitalize; color:var(--muted-fg); margin:.35rem 0 .15rem; }
.hero-dm-days{ display:grid; grid-template-columns:repeat(auto-fill,minmax(4.1rem,1fr)); gap:.4rem; }
.hero-dm-slots{ display:grid; grid-template-columns:repeat(auto-fill,minmax(6.2rem,1fr)); gap:.4rem; }
.hero-day{
  display:flex; flex-direction:column; align-items:center; gap:.05rem;
  padding:.45rem .2rem; border:1px solid var(--border,rgba(0,0,0,.12));
  border-radius:.55rem; background:transparent; cursor:pointer; line-height:1.15;
  color:var(--espresso);
}
.hero-day-dow{ font-size:.62rem; text-transform:uppercase; color:var(--muted-fg); }
.hero-day-num{ font-size:1rem; font-weight:800; color:var(--espresso); }
.hero-day-mon{ font-size:.58rem; color:var(--muted-fg); }
.hero-slot{
  padding:.5rem .35rem; border:1px solid var(--border,rgba(0,0,0,.12));
  border-radius:.55rem; background:transparent; cursor:pointer;
  font-size:.78rem; font-weight:600; text-align:center; color:var(--espresso);
}
.hero-day:hover,.hero-slot:hover{ border-color:hsl(var(--gold,42 90% 55%)); }
.hero-day.active,.hero-slot.active{
  border-color:hsl(var(--gold,42 90% 55%));
  background:hsl(var(--gold,42 90% 55%)/.16);
  box-shadow:inset 0 0 0 1px hsl(var(--gold,42 90% 55%));
  color:var(--espresso);
}
/* Jours déjà passés (semaine en cours) : visibles mais estompés et
   non cliquables, plutôt que masqués — le client garde le repère
   visuel de "quel jour on est" dans la semaine. */
.hero-day.is-past{
  opacity:.38; cursor:not-allowed; pointer-events:none;
}
.hero-day.is-past .hero-day-dow,
.hero-day.is-past .hero-day-num,
.hero-day.is-past .hero-day-mon{ color:var(--muted-fg); }
.hero-dm-recap{
  margin-top:.9rem; padding:.55rem .7rem; border-radius:.5rem;
  background:hsl(var(--gold,42 90% 55%)/.14); font-size:.8rem; font-weight:600;
}
.hero-dm-foot{
  flex:0 0 auto; display:flex; justify-content:flex-end; gap:.5rem;
  padding:.75rem 1.25rem calc(.85rem + env(safe-area-inset-bottom));
  border-top:1px solid var(--border,rgba(0,0,0,.1));
  background:var(--card,#fff);
}
.hero-datepanel-recap{
  margin-top:.5rem; padding:.4rem .6rem; border-radius:.5rem;
  background:rgba(255,255,255,.1); border:1px solid hsl(var(--gold,42 90% 55%)/.5);
  color:rgba(255,248,230,.92); font-size:.72rem; font-weight:600; cursor:pointer;
}
@media (max-width:640px){
  .hero-dm-days{ grid-template-columns:repeat(auto-fill,minmax(3.6rem,1fr)); }
  .hero-dm-slots{ grid-template-columns:repeat(2,1fr); }
}

/* v325 — Espace prestataire : carte « Ma position sur la carte des clients » */
.pv-loc-card{background:var(--card);border:1px solid var(--border);border-radius:.7rem;padding:.65rem .75rem;margin-bottom:.6rem;display:flex;flex-direction:column;gap:.5rem}
.pv-loc-head{display:flex;align-items:flex-start;justify-content:space-between;gap:.6rem}
.pv-loc-state{font-size:.74rem;color:var(--muted-fg);line-height:1.4;margin-top:.1rem}
.pv-loc-pill{flex:0 0 auto;font-size:.68rem;font-weight:700;padding:.2rem .55rem;border-radius:999px;background:var(--muted);white-space:nowrap}
.pv-loc-pill.is-on{background:hsl(150,45%,90%);color:hsl(150,60%,22%)}
.pv-loc-pill.is-live{background:hsl(160,60%,86%);color:hsl(160,70%,18%)}
.pv-loc-pill.is-off{background:hsl(38,90%,90%);color:hsl(30,80%,28%)}
.pv-loc-actions{display:flex!important;flex-wrap:wrap!important;align-items:center!important;gap:.5rem!important}
.pv-loc-actions .btn{white-space:nowrap!important}
.pv-loc-live{display:inline-flex;align-items:center;gap:.4rem;font-size:.74rem;cursor:pointer;min-height:40px}
.pv-loc-live input{width:1.05rem;height:1.05rem;accent-color:#945328}
.pv-loc-msg{font-size:.72rem;color:var(--muted-fg);min-height:0}
.pv-loc-msg:empty{display:none}
.pv-loc-msg.is-ok{color:hsl(150,60%,24%)}
.pv-loc-msg.is-warn{color:hsl(20,70%,35%)}
/* v325 — Inscription prestataire : deux boutons de position côte à côte */
.su-loc-btns{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:.5rem!important}
.su-loc-btns .btn{font-size:.8rem!important;padding:.6rem .5rem!important;white-space:nowrap!important;min-width:0!important}
@media(max-width:380px){.su-loc-btns{grid-template-columns:minmax(0,1fr)!important}}
#s-geo-msg{margin-top:.35rem}

/* v326 — Fenêtre d'adresse : état de la localisation et champs remplis automatiquement */
.modal-bg.bz-ap-nested-scrim .bz-ap-locstat,.bz-ap-locstat{flex:0 1 auto!important;min-width:0!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important;background:hsl(45,90%,90%)!important;color:hsl(30,70%,26%)!important}
@keyframes bzApFlash{0%{background:hsl(45,100%,84%)}100%{background:#fcfaf7}}
.bz-ap-flash{animation:bzApFlash 1.1s ease-out}

/* v328 — Inscription livreur : vérification d'identité */
.kyc{border:1px solid var(--border);border-radius:.9rem;padding:.8rem .85rem;margin:0;display:flex;flex-direction:column;gap:.45rem;min-width:0}
.kyc-why{font-size:.74rem;color:var(--muted-fg);margin:0 0 .2rem;line-height:1.45}
.kyc-lbl{font-size:.76rem;font-weight:700}
.kyc-types{display:flex!important;flex-wrap:wrap!important;gap:.4rem!important}
.kyc-types label{cursor:pointer}
.kyc-types input{position:absolute;opacity:0;width:1px;height:1px}
.kyc-types span{display:inline-flex;align-items:center;min-height:40px;padding:.4rem .8rem;border-radius:999px;border:1.5px solid var(--border);font-size:.78rem;background:#fff}
.kyc-types input:checked+span{border-color:var(--primary);background:hsl(24,58%,95%);color:var(--primary);font-weight:600}
.kyc-types input:focus-visible+span{outline:2px solid var(--primary);outline-offset:2px}
.kyc-tiles{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:.5rem!important}
.kyc-tile{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.15rem;min-height:7rem;border-radius:.8rem;border:1.5px dashed var(--primary);background:hsl(24,58%,97%);color:var(--primary);cursor:pointer;text-align:center;padding:.6rem;overflow:hidden}
.kyc-tile input{position:absolute;inset:0;opacity:0;cursor:pointer}
.kyc-tile b{font-size:.8rem}
.kyc-tile small{font-size:.66rem;color:var(--muted-fg)}
.kyc-ico{font-size:1.5rem;line-height:1}
.kyc-tile.done{border-style:solid;border-color:hsl(150,55%,35%)}
.kyc-tile .kyc-prev{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;pointer-events:none}
.kyc-tile.done::after{content:"✓";position:absolute;left:.4rem;bottom:.4rem;width:1.4rem;height:1.4rem;border-radius:50%;background:hsl(150,55%,35%);color:#fff;font-size:.8rem;font-weight:700;display:flex;align-items:center;justify-content:center}
.kyc-tile.kyc-na{opacity:.35;pointer-events:none}
.kyc-selfie{min-height:6rem}
.kyc-opt{display:flex;align-items:center;gap:.45rem;font-size:.76rem;min-height:40px;cursor:pointer}
.kyc-opt input{width:1.05rem;height:1.05rem;accent-color:var(--primary)}
.kyc-note{font-size:.68rem;color:var(--muted-fg);margin:.3rem 0 0}
.kyc-lock{font-size:.7rem;color:var(--muted-fg);margin:.4rem 0 0;line-height:1.45}

/* ══════════════════════════════════════════════════════════════════════
   v331 — Fenêtres « Inscription » et « Commander un repas » compactes
   ══════════════════════════════════════════════════════════════════════
   • UNE seule zone de défilement (le corps de la fenêtre). Avant, la boîte
     ET son contenu défilaient chacun : au clic sur « Passeport », les deux
     sautaient en même temps (zone blanche).
   • Champs compacts, même gabarit que le mini-formulaire du hero
     (input-dense) : 36 px de haut, texte 13 px — 16 px sur téléphone,
     sinon l'iPhone zoome au toucher.
   • Inscription livreur : variante B, deux colonnes à l'étape 3. */
#signup-modal .modal-box,#food-modal .modal-box{display:flex!important;flex-direction:column!important;max-height:calc(100vh - 1.5rem)!important;max-height:calc(100dvh - 1.5rem)!important;overflow:hidden!important}
#signup-modal .modal-head,#food-modal .modal-head{flex:0 0 auto!important;padding:.75rem 1rem .6rem 1.25rem!important}
#signup-modal .modal-head h2,#food-modal .modal-head h2{font-size:1.1rem!important;line-height:1.25!important}
#signup-modal .modal-body,#food-modal .modal-body{flex:1 1 auto!important;min-height:0!important;overflow-y:auto!important;overflow-x:hidden!important;overscroll-behavior:contain;padding:.35rem 1.25rem 1rem!important}
#signup-modal #signup-card{padding:0!important;max-width:none!important;width:100%!important;box-shadow:none!important;border:0!important;background:transparent!important;margin:0!important}
#signup-modal #signup-card>.text-center{display:none!important}
#signup-modal #signup-card>p.text-center{display:block!important;margin-top:.6rem!important;font-size:.78rem!important}
#signup-modal .steps,#food-modal .steps{margin-bottom:.7rem!important}
#signup-modal .space-y-4>*+*,#signup-modal .space-y-3>*+*,#food-modal .space-y-3>*+*{margin-top:.55rem!important}
#signup-modal .modal-box.su-wide{max-width:56rem!important;width:calc(100vw - 1.5rem)!important}

/* Champs compacts */
#signup-modal .input,#food-modal .input{height:2.25rem!important;min-height:0!important;padding:0 .7rem!important;font-size:.82rem!important;border-radius:.75rem!important;line-height:1.2!important}
#signup-modal textarea.input,#food-modal textarea.input{height:auto!important;padding:.45rem .7rem!important;min-height:3.2rem!important}
#signup-modal input[type="file"].input,#food-modal input[type="file"].input{padding:.38rem .5rem!important;font-size:.74rem!important}
#signup-modal .label,#food-modal .label{font-size:.72rem!important;margin-bottom:.2rem!important;font-weight:600!important}
#signup-modal .btn,#food-modal .btn{min-height:2.6rem!important;padding-top:.45rem!important;padding-bottom:.45rem!important}
#signup-modal .bz-key{height:2.55rem!important;min-height:0!important;font-size:1.05rem!important}
#signup-modal .bz-pin-box{width:2.8rem!important;height:3rem!important}
@media(max-width:640px){
  #signup-modal .input,#food-modal .input{font-size:16px!important;height:2.5rem!important}
  #signup-modal .modal-body,#food-modal .modal-body{padding:.3rem .9rem .9rem!important}
}

/* Inscription livreur — deux colonnes */
#signup-modal .liv-cols{display:grid!important;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr)!important;gap:1.1rem!important;align-items:start!important}
#signup-modal .liv-col-a,#signup-modal .liv-col-b{min-width:0!important;display:flex!important;flex-direction:column!important;gap:.55rem!important}
#signup-modal .liv-col-a>*,#signup-modal .liv-col-b>*{margin:0!important}
#signup-modal .liv-2{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:.5rem!important}
#signup-modal #s-livreur-files{padding:.75rem!important}
#signup-modal #s-livreur-files>p{font-size:.72rem!important;margin:0 0 .5rem!important}
@media(max-width:760px){ #signup-modal .liv-cols{grid-template-columns:minmax(0,1fr)!important} }

/* Identité : puces, photos, case à cocher */
#signup-modal .kyc{padding:.6rem .7rem!important;gap:.4rem!important;margin:0!important}
#signup-modal .kyc legend{font-size:.76rem!important;font-weight:700!important}
.kyc-types label{position:relative!important;display:inline-flex!important}
/* Le bouton radio caché reste DANS sa puce : focalisé au clic, il ne fait
   plus défiler la fenêtre vers un point lointain (cause du « saut »). */
.kyc-types input{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;margin:0!important;opacity:0!important;pointer-events:none!important}
#signup-modal .kyc-types{gap:.3rem!important}
#signup-modal .kyc-types span{min-height:2rem!important;padding:.2rem .65rem!important;font-size:.72rem!important}
#signup-modal .kyc-tile{min-height:4.8rem!important;padding:.4rem!important}
#signup-modal .kyc-tile b{font-size:.74rem!important}
#signup-modal .kyc-tile small{font-size:.62rem!important}
#signup-modal .kyc-ico{font-size:1.2rem!important}
#signup-modal .kyc-selfie{min-height:3.6rem!important;flex-direction:row!important;justify-content:flex-start!important;gap:.6rem!important;text-align:left!important;padding:.4rem .75rem!important}
#signup-modal .kyc-lbl{font-size:.72rem!important;margin:0!important}
.kyc-opt{display:flex!important;flex-direction:row!important;align-items:center!important;justify-content:flex-start!important;gap:.45rem!important;text-align:left!important;min-height:2rem!important;font-size:.74rem!important;margin:0!important}
.kyc-opt input{flex:0 0 auto!important;width:1rem!important;height:1rem!important;margin:0!important;position:static!important;opacity:1!important}
#signup-modal .kyc-lock{font-size:.66rem!important;margin:.1rem 0 0!important}

/* Commander un repas — 2 étapes */
#food-modal .fd-h{font-size:.92rem!important;font-weight:700!important;margin:0 0 .5rem!important}
#food-modal .fd-grid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:.5rem .6rem!important}
#food-modal .fd-grid>*{margin:0!important;min-width:0!important}
#food-modal .fd-full{grid-column:1 / -1!important}
#food-modal .fd-next{margin-top:.8rem!important}
#food-modal #fd-menu-list{max-height:11rem!important}
#food-modal #fd-deliv-intro{font-size:.74rem!important;margin-bottom:.5rem!important;line-height:1.45!important}
#food-modal #fd-spot-name{margin-bottom:.2rem!important}
#food-modal .geo-badge,#food-modal #geo-bar-food{padding:.35rem .6rem!important;margin-bottom:.55rem!important;min-height:0!important}
#food-modal .geo-badge-sub{display:none!important}
#food-modal .flex.gap-3.mt-4{margin-top:.7rem!important}
@media(max-width:420px){ #food-modal .fd-grid{grid-template-columns:minmax(0,1fr)!important} }
/* v331 — gains de hauteur : barre d'étapes fine, tuiles photo empilées */
#signup-modal .steps .step-dot,#food-modal .steps .step-dot{width:1.7rem!important;height:1.7rem!important;font-size:.72rem!important;min-width:0!important}
#signup-modal .steps,#food-modal .steps{margin-bottom:.55rem!important}
#signup-modal .liv-intro{font-size:.72rem!important;color:var(--muted-fg)!important;margin:0 0 .55rem!important}
#signup-modal .kyc-tile{display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;gap:.1rem!important}
#signup-modal .kyc-selfie{flex-direction:row!important;justify-content:flex-start!important}
#signup-modal .kyc-selfie b,#signup-modal .kyc-selfie small{display:block!important}
#signup-modal .kyc-tiles{gap:.45rem!important}
#food-modal .geo-badge-title{font-size:.72rem!important}
#food-modal #fd-promo-msg:empty,#food-modal #fd-deliv-est:empty,#food-modal #fd-total-note:empty{display:none!important}
#food-modal .fd-promo-btn{white-space:nowrap!important;word-break:normal!important;padding:0 .8rem!important;min-height:2.25rem!important;height:2.25rem!important;font-size:.78rem!important;flex:0 0 auto!important}
#food-modal .fd-grid .flex.gap-2{gap:.35rem!important}
#food-modal .fd-h{margin-bottom:.35rem!important}
#signup-modal .su-wide #signup-card>p.text-center{display:none!important}
@media(max-width:640px){
  #food-modal .input{height:2.35rem!important}
  #food-modal textarea.input{min-height:2.9rem!important}
  #food-modal .fd-promo-btn{height:2.35rem!important;min-height:2.35rem!important}
}
#signup-modal .kyc-selfie{display:grid!important;grid-template-columns:auto minmax(0,1fr)!important;column-gap:.65rem!important;align-items:center!important;align-content:center!important}
#signup-modal .kyc-selfie .kyc-ico{grid-row:1 / 3!important}
/* Liste des plats : hauteur selon l'écran (≈ 3 plats visibles sur 1366×650,
   davantage sur un écran plus haut) ; elle défile seule. */
#food-modal #fd-menu-list{max-height:clamp(6.25rem, calc(100vh - 34.5rem), 11rem)!important;max-height:clamp(6.25rem, calc(100dvh - 34.5rem), 11rem)!important}

/* v332 — Boutons Google/Facebook dans la fenêtre d'inscription compacte */
#signup-modal .oauth-su{margin-bottom:.7rem!important}
#signup-modal .oauth-su .btn{min-height:2.4rem!important;font-size:.82rem!important}
#signup-modal .oauth-su>div:last-child{margin-top:.6rem!important}
/* Cartes de paiement du panier : zones tactiles de 44 px au moins */
#co-pay-cards .pay-card{min-height:44px;cursor:pointer}
#co-pay-cards .pay-card.locked{opacity:.55;cursor:not-allowed}
