/* ============================================================
   HEADER / NAVIGATION — refonte moderne (logo + menu + bouton
   "Rendez-vous atelier" sur une seule ligne, responsive).
   Scope : modules/mod_vgrf_navbar/tmpl/default-*.php (structure
   identique verifiee sur Audi/VW/CUPRA/SEAT/Skoda/Access) +
   .GlobHeaderNew/.LogoHeader/.PrisRendezBtn definis dans l index.php
   de chaque template.
   Aucune modification HTML : uniquement l ordre flexbox et le style
   des elements deja presents dans le DOM.
   ============================================================ */
:root .audi {
        --primary-color: #000;
        --secondary-color: #404040;
		--tertiary-color: #f50537;
		--text-color:#4c4c4c;
		--button-color:#000;
		--button-text-color:#fff;
		--button-hover-color:#f50537;
}
:root .vw,:root .volkswagen {
        --primary-color: #001e50;
        --secondary-color: #02a0d5;
		--tertiary-color: #001e50 ;
		--text-color:#000;
		--button-color:#001e50;
		--button-text-color:#fff;
		--button-hover-color:#001e50;
}
:root .skoda {
        --primary-color: #78faae;
        --secondary-color: #0e3a2f;
		--tertiary-color: #0e3a2f;
		--text-color:#0e3a2f;
		--button-color:#78faae;
		--button-text-color:#0e3a2f;
		--button-hover-color:#0e3a2f;
}
:root .seat {
        --primary-color: #ea5d1a;
        --secondary-color: #190f14;
		--tertiary-color: #ff0036;
		--text-color:#190F14;
		--button-color:#ea5d1a;
		--button-text-color:#000;
		--button-hover-color:#ea5d1a;
}	
:root .cupra {
        --primary-color: #242424;
        --secondary-color: #83694e;
		--tertiary-color: #616652;
		--text-color:#242424;
		--button-color:#242424;
		--button-text-color:#fff;
		--button-hover-color:#242424;
}


	
	
	
:root {
  --nav-primary: var(--primary-color, #16181a);
  --nav-text: #16181a;
  --nav-muted: #6b7075;
  --nav-border: rgba(0, 0, 0, 0.08);
  --nav-bg-soft: #f6f7f9;
  --nav-radius: 12px;
  --nav-shadow: 0 12px 32px rgba(0, 0, 0, 0.12);
  --nav-duration: 180ms;
}

  /* theme.css force html,body{height:100vh} : le header sticky ne peut pas
     dépasser la hauteur du body et disparaît au scroll */
  html, body {
    height: auto !important;
    min-height: 100vh;
  }
  
  /* Le header est déjà fixe via theme.css : le placeholder UIkit
   est inutile et décale le contenu au scroll */
header .uk-sticky-placeholder { display: none !important; }

/* Hauteur identique actif / inactif pour éviter le saut 82px → 64px */
header .uk-sticky .GlobHeaderNew .menuHeader { margin-top: 0; }
  
/* ---------- Ligne d entete : logo + menu + bouton sur UNE seule ligne ---------- */
.GlobHeaderNew {
  display: flex;
  align-items: center;
  gap: 16px;
  min-height: 64px;
  padding: 8px 20px;
}
.GlobHeaderNew .LogoHeader {
  display: flex;
  align-items: center;
  order: 1;
  flex-shrink: 0;
}
.GlobHeaderNew .LogoHeader img { max-height: 36px; width: auto; }
.GlobHeaderNew .LogoHeader .NameMarque {
  margin-left: 10px;
  font-size: 14px;
  color: var(--nav-text);
  white-space: nowrap;
}
.GlobHeaderNew .uk-float-right { order: 2; }

/* Le menu prend tout l espace disponible entre le logo et le bouton */
.GlobHeaderNew #MenuDesktop.menuHeader {
  order: 3;
  flex: 1 1 auto;
  min-width: 0; /* autorise le menu a retrecir plutot que de passer a la ligne */
}
#MenuDesktop #topMenuID { width: 100%; }

.GlobHeaderNew .PrisRendezBtn {
  order: 4;
  flex-shrink: 0;
  margin-left: auto;
}
@media (min-width: 1024px) {
  /* IMPORTANT sur le z-index : header[role="banner"] est position:relative
     avec un z-index propre, ce qui cree un contexte d empilement : AUCUNE
     valeur de z-index posee sur un descendant (le dropdown) ne peut faire
     sortir ce descendant de ce contexte. C est donc le z-index du HEADER
     lui-meme qu il faut depasser celui de la barre sticky de la page
     listing (.StickyMob), qui recoit la classe UIkit .uk-sticky-fixed
     avec un z-index tres eleve (~980 par defaut chez UIkit) une fois
     "collee". D ou la valeur elevee ci-dessous plutot que 100. */
  header[role="banner"] { position: relative; z-index: 1000; }
  .GlobHeaderNew .PrisRendezBtn a {
    display: inline-flex;

    align-items: center;
    justify-content: center;
    height: 40px;
    padding: 0 20px;
    border-radius: 999px;
    background-color: var(--nav-primary);
    color: #fff;
    font-weight: 600;
    font-size: 13px;
    white-space: nowrap;
    transition: transform var(--nav-duration) ease, box-shadow var(--nav-duration) ease;
  }
  .GlobHeaderNew .PrisRendezBtn a:hover {
    transform: translateY(-1px);
    box-shadow: 0 6px 16px rgba(0, 0, 0, 0.18);
  }
}

/* Le theme Cupra (templates/sw-concession-cupra) met "header{position:
   absolute}" par defaut (prevu pour un header transparent sur banniere en
   home) : la regle ci-dessus ne le corrige qu'a partir de 1024px. En
   dessous (mobile/tablette), sur les pages interieures (ex. /neuf), le
   header restait hors du flux et <main> (fil d'Ariane, etc.) se
   retrouvait rendu derriere lui, en haut de la page. On applique le
   meme correctif sans condition de largeur pour cette concession. */
.cupracitygarageparis header[role="banner"] {
  position: relative;
  z-index: 1000;
}

/* ---------- Bouton "Rendez-vous atelier" en mobile ----------
   responsive.css (theme) place ce bouton en "position:absolute; right:
   80px" (mobile) - une coordonnee fixe qui ignore la largeur reelle du
   logo + nom de concession a gauche, et le fait SUPERPOSER le nom de la
   concession des que celui-ci est un peu long (constate : bouton rouge
   au-dessus du texte "Audi Nice La P..."). On repasse ce bouton dans le
   flux flexbox normal de .GlobHeaderNew (deja en place, "order: 4;
   margin-left:auto" plus haut), pour qu il se retrouve TOUJOURS tout a
   droite du header, sans jamais chevaucher le reste, quelle que soit la
   longueur du nom de la concession. */
@media (max-width: 1023px) {
  .GlobHeaderNew .PrisRendezBtn {
    position: static !important;
    top: auto !important;
    right: auto !important;
    order: 4;
    margin-left: auto;
    flex-shrink: 0;
  }
  .GlobHeaderNew .PrisRendezBtn a {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background-color: var(--nav-primary);
    color: #fff;
    line-height: normal;
  }
  .GlobHeaderNew .PrisRendezBtn a svg { fill: #fff; }
}

/* ---------- Liens du menu principal (desktop) ---------- */
@media (min-width: 1024px) {
  #NavMenuSw.uk-navbar-container { background: transparent; }
  /* Menu centre dans l espace disponible entre le logo et le bouton
     (pas centre sur toute la largeur de la page, qui deborderait sur
     le logo/bouton, mais centre dans sa colonne flex du header). */
  #NavMenuSw .uk-navbar-nav {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    gap: 2px;
    flex-wrap: nowrap;
  }
  #NavMenuSw .uk-navbar-nav > li { position: relative; }
  #NavMenuSw .uk-navbar-nav > li > a {
    display: flex;
    align-items: center;
    height: 64px;
    padding: 0 10px;
    font-size: 13px;
    color: var(--nav-text);
    white-space: nowrap;
    position: relative;
    border-bottom: none !important; /* neutralise le 2e trait (noir, statique) impose par theme.css au survol */
    transition: color var(--nav-duration) ease;
  }
  /* Soulignement anime au survol / etat actif, plutot qu un fond plat */
  #NavMenuSw .uk-navbar-nav > li > a::after {
    content: "";
    position: absolute;
    left: 14px;
    right: 14px;
    bottom: 14px;
    height: 2px;
    background: var(--nav-primary);
    transform: scaleX(0);
    transform-origin: left;
    transition: transform var(--nav-duration) ease;
  }
  #NavMenuSw .uk-navbar-nav > li:hover > a,
  #NavMenuSw .uk-navbar-nav > li.uk-active > a {
    color: var(--nav-primary);
    border-bottom: none !important;
  }
  #NavMenuSw .uk-navbar-nav > li:hover > a::after,
  #NavMenuSw .uk-navbar-nav > li.uk-active > a::after {
    transform: scaleX(1);
  }
  /* Pas de chevron : seul le soulignement rouge signale le survol/l etat
     actif, y compris sur les items a sous-menu (demande explicite). */

  /* ---------- Panneaux deroulants (dropdowns) -----------------------------
     IMPORTANT : templates/sw-concession-XXX/css-op/theme.css force deja, sur
     ces memes selecteurs, un ancien design "bandeau plein largeur sous le
     header" : .GlobHeaderNew .uk-navbar-dropdown { left:0!important;
     right:0!important; width:100% } et .uk-navbar-dropdown-nav {
     display:flex; justify-content:center }. C est ce qui cassait le rendu
     (colonnes ecrasees, texte qui retombe a la ligne). On neutralise ces
     proprietes precises avec !important pour retrouver un vrai panneau
     flottant compact, sans toucher au reste du theme. -------------------- */
  .GlobHeaderNew .uk-navbar-dropdown,
  #NavMenuSw .uk-navbar-dropdown {
    left: 0 !important;
    right: auto !important;
    width: auto !important;
    max-width: 300px !important;
    min-width: 220px;
    top: 100% !important;
    margin-top: 10px !important;
    border-radius: var(--nav-radius);
    box-shadow: var(--nav-shadow) !important;
    border: 1px solid var(--nav-border);
    padding: 10px;
    background: #fff;
  }
  /* Le mega-menu (Après-vente & Services, 2 colonnes) a besoin de plus de
     place : on l identifie par la presence de .submenu a l interieur.
     IMPORTANT : un panneau en position absolute avec seulement max-width
     se retreint a la largeur de son contenu ("shrink-to-fit"), ce qui
     ecrasait les 2 colonnes l une sur l autre (constate visuellement :
     169px de large au lieu de 460px). On fixe donc une largeur reelle,
     pas seulement un plafond. */
  .GlobHeaderNew .uk-navbar-dropdown:has(.submenu),
  #NavMenuSw .uk-navbar-dropdown:has(.submenu) {
    width: 620px !important;
    max-width: 620px !important;
  }
  .GlobHeaderNew .uk-navbar-dropdown-nav,
  #NavMenuSw .uk-navbar-dropdown-nav,
  .GlobHeaderNew .uk-navbar-dropdown .submenu > ul,
  #NavMenuSw .uk-navbar-dropdown .submenu > ul {
    display: block !important;
    justify-content: initial !important;
  }
  .GlobHeaderNew .uk-navbar-dropdown-nav li,
  #NavMenuSw .uk-navbar-dropdown-nav li,
  .GlobHeaderNew .uk-navbar-dropdown .submenu > ul li,
  #NavMenuSw .uk-navbar-dropdown .submenu > ul li {
    display: block !important;
    width: 100% !important;
  }
  .GlobHeaderNew .uk-navbar-dropdown-nav li a,
  #NavMenuSw .uk-navbar-dropdown-nav li a,
  .GlobHeaderNew .uk-navbar-dropdown .submenu > ul li a,
  #NavMenuSw .uk-navbar-dropdown .submenu > ul li a {
    display: flex !important;
    align-items: center;
    width: 100%;
    min-height: 40px;
    padding: 8px 8px !important;
    border-radius: 8px;
    font-size: 13.5px !important;
    line-height: 1.4 !important;
    white-space: nowrap;
    text-decoration: none !important;
    transition: background-color var(--nav-duration) ease, color var(--nav-duration) ease;
  }
  .GlobHeaderNew .uk-navbar-dropdown-nav li a:hover,
  #NavMenuSw .uk-navbar-dropdown-nav li a:hover,
  .GlobHeaderNew .uk-navbar-dropdown .submenu > ul li a:hover,
  #NavMenuSw .uk-navbar-dropdown .submenu > ul li a:hover {
    background-color: var(--nav-bg-soft);
    color: var(--nav-primary) !important;
    text-decoration: none !important;
  }
  /* Titres de colonne dans les mega-menus (ex. "Après-vente", "Garantie") :
     couvre a la fois le markup "uk-navbar-dropdown-nav" et le markup
     alternatif "submenu > ul" (utilise par ex. sur le sous-menu Audi
     Après-vente & Services, qui n a pas la classe uk-navbar-dropdown-nav
     et restait donc sans style/avec des liens soulignes). */
  .uk-navbar-dropdown-nav > li > span,
  .uk-navbar-dropdown .submenu > ul > li > span {
    display: block;
    padding: 10px 14px 4px;
    font-size: 10.5px;
    font-weight: 700 !important;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--nav-muted) !important;
  }
  /* Mega-menu 2 colonnes (Après-vente & Services) : vraie grille cote a
     cote avec separateur, la largeur du panneau ayant ete elargie plus
     haut (max-width: 460px) pour laisser la place aux deux colonnes. */
  .uk-navbar-dropdown .submenu {
    display: flex !important;
    flex-wrap: nowrap !important; /* uk-grid met flex-wrap:wrap par defaut -> 2e colonne repassait a la ligne */
    align-items: stretch;
    width: 100% !important;
    gap: 0;
  }
  .uk-navbar-dropdown .submenu > ul {
    flex: 1 1 50% !important;
    width: 50% !important;
    max-width: 50% !important;
    min-width: 0;
    margin-top: 0 !important; /* neutralise .uk-grid-margin ajoute par UIkit */
  }
  .uk-navbar-dropdown .submenu > ul:first-child {
    border-right: 1px solid var(--nav-border);
    padding-right: 10px;
    margin-right: 10px;
  }
  .uk-navbar-dropdown .submenu > ul:nth-child(2) {
    padding-left: 10px;
    border-right: 1px solid var(--nav-border);
    padding-right: 10px;
    margin-right: 10px;
  }

  /* Lien "Rendez-vous en atelier" mis en avant dans le mega-menu */
  .PrisRendezBtnMenu {
    display: flex !important;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    background: var(--nav-primary) !important;
    color: #fff !important;
    font-weight: 600;
    padding: 10px 14px !important;
    margin: 2px 0 8px !important;
    border-radius: 8px;
  }
  /* Le hover generique des liens du menu (".uk-navbar-dropdown-nav li
     a:hover" / ".submenu > ul li a:hover") force "color:
     var(--nav-primary) !important" (texte colore sur fond clair). Ce
     lien-ci a DEJA un fond de la couleur de la marque : sans re-forcer
     le blanc ici, le survol affichait du texte rouge (ou bleu/vert
     selon la marque) sur un fond de la MEME couleur => texte
     invisible. Il faut repeter exactement la chaine de selecteurs
     generique (specificite egale) + la classe .PrisRendezBtnMenu pour
     etre sur de gagner sur le hover generique. On fonce legerement le
     fond (filter, pas opacity, pour ne pas eclaircir vers le blanc de
     la page) et on garde le texte blanc, quelle que soit la marque. */
  .GlobHeaderNew .uk-navbar-dropdown-nav li a.PrisRendezBtnMenu:hover,
  #NavMenuSw .uk-navbar-dropdown-nav li a.PrisRendezBtnMenu:hover,
  .GlobHeaderNew .uk-navbar-dropdown .submenu > ul li a.PrisRendezBtnMenu:hover,
  #NavMenuSw .uk-navbar-dropdown .submenu > ul li a.PrisRendezBtnMenu:hover {
    background: var(--nav-primary) !important;
    color: #fff !important;
    filter: brightness(0.88);
  }
  .PrisRendezBtnMenu:hover * { color: #fff !important; }
  .newrendez {
    display: inline-flex;
    align-items: center;
    flex-shrink: 0;
    margin: 0;
    padding: 2px 9px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.25);
    color: #fff;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: .3px;
    text-transform: uppercase;
  }

}

/* ============================================================
   MOTEUR DE RECHERCHE — .RefonteMoteur2022 (mod_vgrf_search_vehicule)
   Scope : modules/mod_vgrf_search_vehicule/tmpl/home.php + tmpl/
   partials/home/{occasions,neufs}.inc
   Structure reelle (identique pour Occasions/Neufs) : bandeau image
   (.BannMoteurRefonte.RefonteMoteur2022) > .ContentBannNew > h1 +
   .TabHome (uk-tab Occasions/Neufs) + .MoteurSearchHomeNew > .MoteurCard
   (DIV AJOUTEE dans occasions.inc/neufs.inc : regroupe TOUT le bloc de
   recherche — .FitlerLeft, .GlobFiltreMoteur, .SearchVocal/.FindVocal,
   .RechercheLibre, .BtnEnvoie — dans une seule carte vitree, au lieu de
   plusieurs elements epars sur l image) qui contient .FitlerLeft (barre
   de filtres Marque/Modele/Energie/Prix, desktop uniquement, chaque
   filtre = .ElementDrop avec dropdown .Mycontent pilote par UIkit/JS) +
   .GlobFiltreMoteur (selects Marque/Modele, mobile) + .SearchVocal/
   .FindVocal (recherche texte/vocale, affichee seulement en mode
   "Recherche libre") + .RechercheLibre (lien bascule recherche simple/
   avancee) + .BtnEnvoie (bouton "Voir les vehicules").
   La bascule Recherche libre <-> filtres est geree par du JS existant
   (media/VGRF.js) qui ajoute/retire la classe .RechercheLibre-actif sur
   le conteneur #vehicule-search-home-* : NE JAMAIS forcer un display
   permanent sur .SearchVocal/.FitlerLeft hors de ce scope, sous peine
   de les rendre visibles en meme temps (bug corrige ici : la regle
   .SearchVocal{display:flex} posee precedemment cassait le
   display:none par defaut de .RechercheLibreElm).
   Modernisation : uniquement l habillage visuel (radius, ombres,
   couleurs neutres, transitions). On ne touche a AUCUNE valeur de
   position/largeur/z-index deja fixee par le theme, car les panneaux
   dropdown (.Mycontent) et le slider d onglets (.TabMobMoeur:after)
   sont positionnes en JS/CSS sur ces mesures precises.
   ============================================================ */
/* ---------- Centrage horizontal du bloc de recherche + positionnement
   un peu plus haut dans le bandeau (desktop uniquement : .ContentBannNew
   est deja position:absolute inset:0 par le theme, donc sa hauteur =
   hauteur du bandeau, on peut la transformer en conteneur flex sans
   rien casser). Un centrage vertical strict (justify-content:center)
   laissait un trop grand vide au-dessus du titre : on remonte le tout
   avec un padding-top au lieu d un centrage pur. ---------- */
@media (min-width: 961px) {
  .RefonteMoteur2022 .ContentBannNew {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
    padding-top: 56px;
  }
}

/* ---------- Onglets Occasions / Neufs (desktop, .TabHome) : centres,
   un peu plus grands (taille de clic/texte) mais garde une hauteur
   compacte comme demande. ---------- */
.RefonteMoteur2022 .TabMobMoeur {
  display: flex;
  justify-content: center;
  width: 100%;
}
.RefonteMoteur2022 .TabHome {
  display: inline-flex;
  flex-wrap: nowrap !important;
  gap: 4px;
  max-width: 290px;
  padding: 4px;
  background: rgba(255, 255, 255, 0.16);
  border-radius: 999px;
  backdrop-filter: blur(6px);
}
.RefonteMoteur2022 .TabHome li {
  border-radius: 999px;
  overflow: hidden;
}
.RefonteMoteur2022 .TabHome li a {
  height: 42px;
  padding: 0 36px !important;
  font-size: 14.5px;
  border-radius: 999px;
  transition: color 200ms ease;
}
.RefonteMoteur2022 .TabHome li.uk-active {
  border-radius: 999px;
  box-shadow: 0 8px 20px rgba(0, 0, 0, 0.3);
}
.RefonteMoteur2022 .TabHome li.uk-active:after {
  display: none;
}

/* ---------- Carte vitree unique regroupant tout le moteur ---------- */
.RefonteMoteur2022 .MoteurCard {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  width: 100%;
  max-width: 760px;
  margin: 14px auto 0;
  padding: 18px 22px;
  background: rgba(255, 255, 255, 0.14);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border: 1px solid rgba(255, 255, 255, 0.28);
  border-radius: 28px;
  box-shadow: 0 25px 60px rgba(0, 0, 0, 0.35);
  box-sizing: border-box;
  /* Cree un contexte d empilement au-dessus des sections suivantes de
     la page (slider de bannieres, etc.) : sans z-index explicite ici,
     le panneau dropdown .Mycontent (position:absolute, enfant de cette
     carte) se faisait recouvrir par la section suivante des qu il
     depassait la hauteur du bandeau (constate sur capture : le menu
     "Modele" etait tronque net a la jonction avec le bloc suivant). */
  position: relative;
  z-index: 6;
}
.RefonteMoteur2022 .MoteurCard .FitlerLeft,
.RefonteMoteur2022 .MoteurCard .SearchVocal {
  width: 100%;
}

/* ---------- Ligne du bas : "Recherche libre"/"avancee" a gauche,
   bouton "Voir les vehicules" a droite (desktop). .MoteurCardFooter est
   une div ajoutee dans occasions.inc/neufs.inc qui regroupe les 2 liens
   de bascule (mutuellement exclusifs) + les 2 variantes du bouton
   submit (desktop/mobile, egalement mutuellement exclusives). ---------- */
/* Le JS (VGRF.js, searchSwitcherHandler) ajoute/retire uniquement la
   classe .RechercheLibre-actif sur le conteneur du module quand on
   clique "Recherche libre"/"Recherche avancee" — le bouton .BtnEnvoie
   n est cible par aucune classe .RechercheLibreElm/.SearchAvanceElm
   dans le HTML, donc il restait visible dans les 2 modes. On le masque
   ici explicitement en mode "Recherche libre" (ou il n a pas de sens,
   puisqu il n y a alors ni marque/modele/energie/prix selectionnes) et
   on s assure qu il reapparait en mode "Recherche avancee" (etat par
   defaut). S applique aux 2 widgets (occasions et neufs), classes
   identiques sur les 2 partials. */
.RefonteMoteur2022 .RechercheLibre-actif .MoteurCardFooter .BtnEnvoie.uk-visible\@s.uk-visible\@m {
  display: none;
}
.RefonteMoteur2022 .MoteurCardFooter .BtnEnvoie.uk-visible\@s.uk-visible\@m {
  display: block;
}
.RefonteMoteur2022 .MoteurCardFooter {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.RefonteMoteur2022 .MoteurCardFooter .RechercheLibre {
  margin: 0;
}

/* ---------- Barre de filtres desktop (.FitlerLeft) : chaque filtre
   devient sa propre pilule (petit espace entre chacune) plutot qu une
   seule barre fusionnee avec traits de separation. ---------- */
.RefonteMoteur2022 .FitlerLeft {
  background: transparent;
  box-shadow: none;
  display: flex;
}
.RefonteMoteur2022 .FitlerLeft .AccordionFilter {
  display: flex;
  width: 100%;
  gap: 6px;
}
/* .Myfilter-1/.Myfilter-2/.myaccordion ne sont que des conteneurs de
   mise en page (pas de style visuel propre) : display:contents les
   retire de l arbre de rendu pour que CHAQUE AccordGlob (Marque,
   Modele, Energie, Prix) devienne un enfant flex direct de
   .AccordionFilter avec un poids egal (flex:1). Resultat : la 1ere
   pilule touche toujours le bord gauche et la derniere le bord droit
   (alignee avec "Recherche libre"/le bouton juste en dessous), que la
   page ait 3 filtres (Neufs) ou 4 (Occasions) — avant ce correctif,
   le justify-content:center herite du theme centrait le groupe et
   laissait ~30px de marge de chaque cote, desalignant tout le bas de
   la carte. */
.RefonteMoteur2022 .FitlerLeft .Myfilter-1,
.RefonteMoteur2022 .FitlerLeft .Myfilter-2,
.RefonteMoteur2022 .FitlerLeft .myaccordion {
  display: contents;
}
.RefonteMoteur2022 .FitlerLeft .AccordGlob {
  flex: 1 1 0;
  width: auto !important;
  margin-right: 0 !important;
}
/* Hauteur reduite + centrage flex du texte : le theme ne definit qu un
   padding (15px) sans alignement vertical explicite, ce qui laissait
   le libelle ("Marque") mal centre / plaque en bas de la pilule une
   fois celle-ci agrandie par notre habillage (constate sur capture). */
.RefonteMoteur2022 .FitlerLeft .Mytitle.ElementDrop {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between;
  height: 44px;
  box-sizing: border-box;
  background: #fff;
  border-radius: 999px !important;
  border-color: rgba(0, 0, 0, 0.06);
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.1);
  transition: background-color 180ms ease;
}
/* Le chevron (icone :before, float:right en mode bloc) devient un item
   flex : sans "order", il se placerait AVANT le libelle (les pseudo-
   elements ::before sont generes en premier dans l ordre des boites),
   ce qui inversait visuellement "Marque" et la fleche. */
.RefonteMoteur2022 .FitlerLeft .Mytitle.ElementDrop:before {
  order: 2;
  float: none;
  margin-left: 10px;
  flex-shrink: 0;
}
@media (hover: hover) {
  .RefonteMoteur2022 .FitlerLeft .ElementDrop:hover,
  .RefonteMoteur2022 .FitlerLeft .ElementDrop[aria-expanded="true"] {
    background-color: var(--color-bg-soft, #f6f7f9);
  }
}
.RefonteMoteur2022 .FitlerLeft .Myfilter-1 .AccordGlob:first-child .Mytitle.ElementDrop {
  padding-left: 20px !important;
}

/* ---------- Panneaux dropdown (.Mycontent) et items de filtre
   (marque/modele/energie = liste de checkbox, prix = slider) : ancres
   pile sous LEUR PROPRE AccordGlob (et non a une position fixe), avec
   un fondu + glissement d ouverture. ---------- */
.RefonteMoteur2022 .AccordGlob {
  position: relative;
}
.RefonteMoteur2022 .Mycontent {
  min-width: 240px;
  margin-top: 8px !important;
  border-radius: 16px !important;
  border: 1px solid rgba(0, 0, 0, 0.06);
  box-shadow: 0 20px 45px rgba(0, 0, 0, 0.22) !important;
  opacity: 0;
  transform: translateY(-8px);
  transition: opacity 180ms cubic-bezier(0.22, 1, 0.36, 1),
              transform 180ms cubic-bezier(0.22, 1, 0.36, 1);
}
/* Le panneau Prix a besoin d une largeur suffisante pour aligner les 2
   champs "De"/"a" cote a cote sans repasser a la ligne. */
.RefonteMoteur2022 .PrixAccrod .Mycontent {
  min-width: 300px;
}
.RefonteMoteur2022 .Mycontent.uk-open {
  opacity: 1;
  transform: translateY(0);
}
.RefonteMoteur2022 .FitlerLeft .TypeOffFilter.search-input,
.RefonteMoteur2022 .FitlerLeft input.search-input {
  border-radius: 10px !important;
  height: 40px !important;
  padding: 0 14px;
  font-size: 13px !important;
}
.RefonteMoteur2022 .FitlerLeft .TypeOffFilter {
  margin-bottom: 2px;
}
.RefonteMoteur2022 .FitlerLeft .TypeOffFilter label {
  padding: 9px 10px;
  border-radius: 10px;
  font-weight: 600;
  letter-spacing: 0.02em;
  transition: background-color 160ms ease;
}
@media (hover: hover) {
  .RefonteMoteur2022 .FitlerLeft .TypeOffFilter label:hover {
    background-color: var(--color-bg-soft, #f6f7f9);
  }
}
.RefonteMoteur2022 .FitlerLeft .TypeOffFilter label i {
  font-weight: 500;
}
.RefonteMoteur2022 .FitlerLeft .TypeOffFilter span {
  color: var(--color-muted, #6b7075);
  font-weight: 600;
}
.RefonteMoteur2022 .FitlerLeft .TypeOffFilter input[type="checkbox"] {
  width: 16px;
  height: 16px;
  border-radius: 4px;
  accent-color: var(--color-text, #16181a);
}
.RefonteMoteur2022 .FitlerLeft .lienPlusMoinsFilter {
  border-radius: 10px;
  transition: background-color 160ms ease;
}
@media (hover: hover) {
  .RefonteMoteur2022 .FitlerLeft .lienPlusMoinsFilter:hover {
    background-color: var(--color-bg-soft, #f6f7f9);
  }
}

/* ---------- Panneau Prix (curseur de plage ion.rangeSlider + champs
   "De"/"a") : le theme livre un curseur tres fin et des inputs minuscules
   (hauteur 21px), on modernise en gardant le meme composant JS. ---------- */
.RefonteMoteur2022 .DropDownSlider {
  padding: 6px 4px 2px;
}
.RefonteMoteur2022 .range-wrapper {
  padding-top: 6px;
}
.RefonteMoteur2022 .irs--flat .irs-line {
  height: 4px;
  border-radius: 999px;
  background-color: var(--color-bg-soft, #ebedf0);
}
.RefonteMoteur2022 .irs--flat .irs-bar {
  height: 4px;
  background-color: var(--color-text, #16181a);
}
.RefonteMoteur2022 .irs--flat .irs-handle > i:first-child {
  width: 20px;
  height: 20px;
  margin-left: -14px;
  border: none;
  background-color: #fff;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.28);
  transition: transform 160ms ease;
}
@media (hover: hover) {
  .RefonteMoteur2022 .irs--flat .irs-handle:hover > i:first-child,
  .RefonteMoteur2022 .irs--flat .irs-handle.state_hover > i:first-child {
    background-color: #fff;
    transform: scale(1.1);
  }
}
.RefonteMoteur2022 .irs--flat .irs-from,
.RefonteMoteur2022 .irs--flat .irs-to,
.RefonteMoteur2022 .irs--flat .irs-single {
  background-color: var(--color-text, #16181a);
  border-radius: 6px;
  font-weight: 600;
}
.RefonteMoteur2022 .irs--flat .irs-from:before,
.RefonteMoteur2022 .irs--flat .irs-to:before,
.RefonteMoteur2022 .irs--flat .irs-single:before {
  border-top-color: var(--color-text, #16181a);
}
/* Les 2 ".budgetfilter" (De/a) comptent sur width:50%+float:left (theme)
   pour se placer cote a cote : avec des champs plus larges (100px) que
   l original (90px), le total depassait la moitie du panneau et le
   champ "De" chevauchait le libelle "a" du second bloc. On passe la
   ligne en flex pour un partage d espace fiable quelle que soit la
   largeur des champs. */
.RefonteMoteur2022 .range-wrapper {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
}
/* Le curseur (span.irs, injecte par le plugin JS) occupe toute la
   largeur sur sa propre ligne ; les 2 ".budgetfilter" (De/a) passent
   alors ensemble a la ligne suivante et se partagent l espace. */
.RefonteMoteur2022 .range-wrapper > .irs {
  flex: 1 1 100%;
}
.RefonteMoteur2022 .budgetfilter {
  width: auto;
  float: none;
  flex: 1 1 0;
  /* Sans min-width:0, un flex-item garde par defaut la largeur minimale
     de son contenu (label + input) : les 2 blocs "De"/"a" ne tenaient
     alors jamais sur la meme ligne (chacun retombant seul sur sa ligne,
     empechant tout partage d espace) malgre flex:1. */
  min-width: 0;
  gap: 8px;
}
.RefonteMoteur2022 .budgetfilter.uk-flex-right {
  justify-content: flex-end;
}
.RefonteMoteur2022 .budgetfilter label {
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  color: var(--color-muted, #6b7075);
}
.RefonteMoteur2022 .budgetfilter input[type="text"] {
  height: 38px !important;
  width: 100px !important;
  padding: 0 10px;
  border: 1.5px solid var(--color-border, rgba(0, 0, 0, 0.1));
  border-radius: 10px;
  font-size: 13.5px;
  transition: border-color 160ms ease;
}
.RefonteMoteur2022 .budgetfilter input[type="text"]:focus {
  outline: none;
  border-color: var(--color-text, #16181a);
}

/* ---------- Recherche libre / avancee (lien bascule) ---------- */
.RefonteMoteur2022 .MoteurSearchHomeNew .RechercheLibre {
  margin-top: 0;
}
.RefonteMoteur2022 .MoteurSearchHomeNew .RechercheLibre span {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 9px 18px;
  white-space: nowrap;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.18);
  transition: background-color 200ms ease;
}
@media (hover: hover) {
  .RefonteMoteur2022 .MoteurSearchHomeNew .RechercheLibre span:hover {
    background: rgba(255, 255, 255, 0.3);
  }
}

/* ---------- Recherche vocale/texte (mode "Recherche libre" actif) :
   meme carte pilule blanche que la barre de filtres (.FitlerLeft), au
   lieu d un champ carre colle a un bouton micro carre sombre.
   Structure reelle : .SearchVocal > .inputvocal.autocomplete-search-
   wrapper (input + .result) ET .Speech (bouton micro) sont DEUX
   ENFANTS DIRECTS/FRERES de .SearchVocal (pas l un dans l autre) : le
   conteneur flex doit donc etre .SearchVocal lui-meme.
   IMPORTANT : display:flex n est applique QUE lorsque le JS active
   .RechercheLibre-actif — sinon .SearchVocal (qui porte aussi la
   classe .RechercheLibreElm, display:none par defaut) redevenait
   visible en permanence et se superposait a la barre de filtres. ---------- */
.RefonteMoteur2022 .RechercheLibre-actif .SearchVocal {
  max-width: 100%;
  display: flex;
  align-items: center;
  position: relative;
  background: #fff;
  border-radius: 999px;
  box-shadow: 0 10px 26px rgba(0, 0, 0, 0.14);
  /* PAS d overflow:hidden ici : .result (liste d autocompletion) est
     position:absolute et enfant de .inputvocal, donc a l interieur de
     cette pilule — un overflow:hidden sur le parent la decoupait/
     masquait entierement des qu elle depassait la hauteur de la
     pilule (bug signale : les suggestions ne s affichaient jamais). Les
     coins de l input/bouton micro sont arrondis individuellement au
     lieu de compter sur le clip du conteneur. */
}
.RefonteMoteur2022 .MoteurSearchHomeNew .SearchVocal .inputvocal.autocomplete-search-wrapper {
  flex: 1 1 auto;
  width: auto;
  float: none;
  position: relative;
}
.RefonteMoteur2022 .MoteurSearchHomeNew .SearchVocal .inputvocal input {
  width: 100%;
  height: 50px;
  padding: 0 22px;
  border-radius: 999px 0 0 999px;
}
.RefonteMoteur2022 .MoteurSearchHomeNew .SearchVocal .Speech {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 50px;
  height: 50px;
  padding-right: 6px;
}
.RefonteMoteur2022 .MoteurSearchHomeNew .SearchVocal .Speech input {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background-color: var(--color-text, #16181a);
  background-size: 16px;
  transition: background-color 180ms ease;
}
@media (hover: hover) {
  .RefonteMoteur2022 .MoteurSearchHomeNew .SearchVocal .Speech input:hover {
    background-color: var(--color-primary, var(--nav-primary, #16181a));
  }
}

/* ---------- Liste de suggestions (.result, autocompletion "Recherche
   libre") : le theme ne definit qu un fond blanc plat colle a l input ;
   on en fait une carte flottante moderne, separee de la pilule, avec
   un survol marque sur chaque suggestion. ---------- */
.RefonteMoteur2022 .MoteurSearchHomeNew .SearchVocal .result {
  left: 0;
  right: 0;
  top: calc(100% + 10px) !important;
  margin: 0;
  padding: 8px;
  max-height: 340px;
  border-radius: 16px;
  box-shadow: 0 20px 45px rgba(0, 0, 0, 0.24);
}
.RefonteMoteur2022 .MoteurSearchHomeNew .SearchVocal .result a {
  padding: 10px 14px;
  border-radius: 10px;
  font-size: 13.5px;
  transition: background-color 140ms ease;
}
@media (hover: hover) {
  .RefonteMoteur2022 .MoteurSearchHomeNew .SearchVocal .result a:hover {
    background-color: var(--color-bg-soft, #f6f7f9);
  }
}

/* ---------- Bouton "Voir les vehicules" : centre horizontalement ET
   verticalement dans la carte (flex column + align-items:center du
   parent .MoteurCard), plus besoin du float/width:100% du theme. ---------- */
.RefonteMoteur2022 .MoteurSearchHomeNew .BtnEnvoie {
  width: auto;
  float: none;
  margin-top: 4px;
  /* Le theme place ce bouton en position:absolute avec bottom:-30px en
     mobile (@media max-width, .RefonteMoteur2022 .BtnEnvoie) : pense a
     l origine pour deborder volontairement sous le bandeau. Dans notre
     carte vitree, cela faisait sortir le bouton "Lancer la recherche"
     du bas du bloc (visible sur capture, bouton a moitie hors cadre).
     On le repasse en flux normal pour qu il reste contenu dans la
     carte comme les autres champs. */
  position: static !important;
  bottom: auto !important;
}
.RefonteMoteur2022 .MoteurSearchHomeNew .BtnEnvoie .uk-button {
  border-radius: 999px !important;
  transition: transform 200ms ease, box-shadow 200ms ease;
}
/* "Recherche libre" (lien bascule, desktop) : largeur fixe de 420px et
   meme hauteur que le bouton "Voir les vehicules d'occasion/neufs" a
   cote, dans la ligne .MoteurCardFooter. Cible .occasions.inc ET
   .neufs.inc (memes classes CSS sur les deux partials). */
/* Pas de display:flex ici (ni sur le span) : .SearchAvanceElm vaut
   display:none des que .RechercheLibre-actif est actif (home.php) — un
   display force sans condition ecraserait ce masquage et le lien
   resterait visible apres avoir clique dessus. On garde le display
   (block) herite du theme et on centre verticalement avec line-height,
   qui n a pas cet effet de bord. */
.RefonteMoteur2022 .MoteurCardFooter .SearchLibre.RechercheLibre.SearchAvanceElm.uk-visible\@s.uk-visible\@m {
  flex: 0 0 420px;
  width: 420px;
  height: 54px;
}
.RefonteMoteur2022 .MoteurCardFooter .SearchLibre.RechercheLibre.SearchAvanceElm.uk-visible\@s.uk-visible\@m span {
  width: 100%;
  height: 54px;
  line-height: 54px;
}
/* "Recherche avancee" (etat par defaut, remplace "Recherche libre" au
   meme endroit une fois RechercheLibre-actif retire) : meme hauteur
   que "Recherche libre", et meme largeur que le bouton "Voir les
   vehicules d'occasion/neufs" juste a cote — les deux sont donc fixes
   a une largeur commune (300px) pour matcher exactement, le texte du
   bouton differant selon occasion/neuf (largeur naturelle sinon
   differente d une page a l autre). */
/* Pas de display:flex ici (ni sur le span) : .RechercheLibreElm vaut
   display:none par defaut (home.php) et ne passe a display:block que
   lorsque .RechercheLibre-actif est present sur le module — un display
   force sans condition ecraserait ce masquage et le lien resterait
   visible en permanence (bug constate sur capture : "Recherche libre"
   + "Recherche avancee" + le bouton tous visibles en meme temps). La
   largeur/hauteur restent sans condition (sans effet tant que
   display:none s applique), seul le centrage vertical passe par
   line-height plutot que flex. */
.RefonteMoteur2022 .MoteurCardFooter .SearchAvance.RechercheLibre.RechercheLibreElm.uk-visible\@s.uk-visible\@m {
  width: 300px;
  height: 54px;
}
.RefonteMoteur2022 .MoteurCardFooter .SearchAvance.RechercheLibre.RechercheLibreElm.uk-visible\@s.uk-visible\@m span {
  width: 100%;
  height: 54px;
  line-height: 54px;
}
.RefonteMoteur2022 .MoteurCardFooter .BtnEnvoie.uk-visible\@s.uk-visible\@m .uk-button {
  width: 300px;
  height: 54px;
  line-height: 54px;
  padding-top: 0;
  padding-bottom: 0;
  box-sizing: border-box;
  text-align: center;
}
@media (hover: hover) {
  .RefonteMoteur2022 .MoteurSearchHomeNew .BtnEnvoie .uk-button:hover {
    transform: translateY(-2px);
    box-shadow: 0 12px 26px rgba(0, 0, 0, 0.35);
  }
}

/* ---------- Responsive (mobile/tablette, filtres = selects + recherche
   texte plutot que la barre .FitlerLeft, masquee sous 960px) ---------- */
@media (max-width: 960px) {
  /* Le bandeau mobile a une hauteur fixe (425px, imposee par le theme,
     .RefonteMoteur2022{height:425px}) : la carte + son espacement au-
     dessus (h1, onglets) devaient tenir dedans, sinon elle debordait
     sur le bloc suivant de la page (constate sur capture : le bas de
     la carte et le bouton "Lancer la recherche" empietaient sur le
     slider de bannieres en dessous). On resserre les marges et les
     hauteurs de chaque element. */
  .RefonteMoteur2022 h1 {
    margin-top: 0 !important;
    margin-bottom: 6px !important;
  }
  .RefonteMoteur2022 .TabMobMoeur {
    margin: 10px auto !important;
  }
  .RefonteMoteur2022 .TabMobMoeur li.uk-active {
    background: var(--primary-color);
  }
  .RefonteMoteur2022 .MoteurCard {
    margin-top: 6px;
    padding: 12px;
    border-radius: 20px;
    gap: 8px;
  }
  /* En desktop, .MoteurCardFooter est une ligne (lien bascule a gauche,
     bouton a droite) : en mobile, le lien est masque par le theme
     (uk-visible@s uk-visible@m) et il ne reste que le bouton — le flex
     row par defaut le faisait pourtant retrecir a son contenu au lieu
     de garder sa largeur de 90%. On repasse la ligne en bloc simple. */
  .RefonteMoteur2022 .MoteurCardFooter {
    display: block;
    width: 100%;
  }
  /* Le theme centre/retrecit ces blocs (max-width:305px, margin:auto) :
     dans la carte vitree on les etire pleine largeur pour un alignement
     coherent avec le reste du bloc de recherche. */
  .RefonteMoteur2022 .MoteurCard .GlobFiltreMoteur,
  .RefonteMoteur2022 .MoteurCard .FindVocal {
    align-self: stretch;
    width: 100%;
  }
  .RefonteMoteur2022 .MoteurCard .GlobFiltreMoteur .LienGlobFiltreMoteur,
  .RefonteMoteur2022 .MoteurCard .FindVocal .autocomplete-search,
  .RefonteMoteur2022 .MoteurCard .FindVocal .inputvocal {
    max-width: 100% !important;
    width: 100% !important;
    text-align: left !important;
  }
  .RefonteMoteur2022 .MoteurSearchHomeNew .BtnEnvoie button.uk-button {
    display: block;
    width: 90%;
    max-width: 305px;
    margin: 4px auto 0;
    border-radius: 37px !important;
    height: 44px;
    line-height: 44px;
    padding: 0;
  }
  .RefonteMoteur2022 .GlobFiltreMoteur .LienGlobFiltreMoteur {
    border-radius: 14px !important;
    margin-top: 0 !important;
    margin-bottom: 6px !important;
    min-height: 40px !important;
    box-shadow: 0 6px 16px rgba(0, 0, 0, 0.12);
  }
  .RefonteMoteur2022 .MoteurSearchHomeNew .SearchVocal .inputvocal input,
  .RefonteMoteur2022 .MoteurSearchHomeNew .SearchVocal .Speech {
    height: 40px;
  }
  .RefonteMoteur2022 .MoteurSearchHomeNew .SearchVocal .Speech {
    width: 40px;
  }
  /* Liste native du <select> (popup pilote par le moteur du navigateur,
     pas par le CSS du site) : Chrome/Chromium (desktop et Android)
     acceptent malgre tout de styler les <option> (police, espacement,
     couleurs), contrairement a Firefox/Safari qui imposent leur propre
     rendu OS. On applique donc un style coherent avec le reste du site
     partout ou le moteur le permet. */
  .RefonteMoteur2022 .liste-marques,
  .RefonteMoteur2022 .liste-modeles {
    font-size: 15px;
    color: var(--color-text, #16181a);
  }
  .RefonteMoteur2022 .liste-marques option,
  .RefonteMoteur2022 .liste-modeles option {
    padding: 12px 14px;
    font-size: 15px;
    font-weight: 500;
    color: var(--color-text, #16181a);
    background-color: #fff;
  }
  .RefonteMoteur2022 .liste-marques option:first-child,
  .RefonteMoteur2022 .liste-modeles option:first-child {
    color: var(--color-muted, #6b7075);
  }
  /* L etat "selectionne" (:checked) ignore un simple background-color
     sur Chrome : seul un fond en degrade (meme uni) est pris en compte
     pour cette pseudo-classe precise sur <option>, c est un contournement
     connu et documente du moteur de rendu. */
  .RefonteMoteur2022 .liste-marques option:checked,
  .RefonteMoteur2022 .liste-modeles option:checked {
    background: var(--color-text, #16181a) linear-gradient(0deg, var(--color-text, #16181a) 0%, var(--color-text, #16181a) 100%);
    color: #fff;
  }
  .RefonteMoteur2022 .FindVocal .autocomplete-search {
    border-radius: 14px !important;
    height: 40px !important;
    box-shadow: 0 6px 16px rgba(0, 0, 0, 0.12);
  }
  /* Icone loupe dans le champ "Recherche par modele" (mobile,
     occasions_refonte_op.inc / neufs equivalent). */
  .RefonteMoteur2022 .FindVocal .inputvocal {
    position: relative;
  }
  .RefonteMoteur2022 .FindVocal .inputvocal .sw-search-icon {
    position: absolute;
    top: 50%;
    left: 14px;
    transform: translateY(-50%);
    color: var(--color-muted, #6b7075);
    pointer-events: none;
    z-index: 1;
  }
 
}

/* ============================================================
   FILTRES DE LA LISTE VEHICULES — .RefonteListe .FitlerLeft
   (com_swconcession, vue "vehicules", tmpl/default_filter.php)
   Scope : page /occasion (et /neuf) — panneau lateral de filtres avec
   accordeons imbriques (.AccordGlob : Marque/Modele/Energie/Finition,
   Budget, Kilometrage, Annee, Type, Boite, Chevaux, Portes/Couleurs,
   CO2), chacun avec une liste de checkbox (.sw-multi-checkbox) OU un
   curseur de plage (.DropDownSlider, ion.rangeSlider). ATTENTION : la
   classe .FitlerLeft est reutilisee ici dans un CONTEXTE DIFFERENT du
   moteur de recherche home (.RefonteMoteur2022 .FitlerLeft, barre
   horizontale) — on scope tout sous .RefonteListe pour ne jamais faire
   fuir l un vers l autre.
   Desktop : colonne laterale (carte blanche, sticky). Mobile : panneau
   plein ecran (#NewFilterRefonte, deja gere par le theme/JS en
   position:fixed + display via .uk-open, non modifie ici), avec
   navigation a tiroir (les sous-filtres s ouvrent dans le meme panneau,
   .BtnContinueFilter/.backFiltreR ramene au niveau precedent).
   ============================================================ */
.RefonteListe .FitlerLeft {
  --fl-radius: 14px;
  --fl-border: var(--color-border, rgba(0, 0, 0, 0.08));
  --fl-duration: 200ms;
  --fl-ease: cubic-bezier(0.22, 1, 0.36, 1);
  background: #fff;
  border-radius: var(--fl-radius);
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.06);
  padding: 6px 18px 18px;
}

/* ---------- Titre desktop "Critères de recherche" ---------- */
.RefonteListe .FitlerLeft .TitreFilterLeft {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 2px;
  font-size: 16px;
  font-weight: 800;
  border-bottom: 1px solid var(--fl-border);
}
.RefonteListe .FitlerLeft .TitreFilterLeft .icon-chevron {
  transition: transform var(--fl-duration) var(--fl-ease);
}

/* ---------- En-tete mobile plein ecran ---------- */
.RefonteListe .FitlerLeft .HeaderMobileNew {
  display: flex;
  align-items: center;
  justify-content: center;
  position: sticky;
  top: 0;
  /* Au-dessus de tout le contenu du panneau plein ecran (liste de
     filtres, carrousel de checkbox...) pour que le bouton de fermeture
     reste toujours accessible, quel que soit le scroll. */
  z-index: 30;
  background: #fff;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
}
.RefonteListe .FitlerLeft .TitreFiltreMobile {
  font-size: 16px;
  font-weight: 800;
}
.RefonteListe .FitlerLeft .HeaderMobileNew .uk-modal-close-default {
  position: absolute;
  right: 10px;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: var(--color-bg-soft, #f6f7f9);
  transition: background-color var(--fl-duration) var(--fl-ease);
}
@media (hover: hover) {
  .RefonteListe .FitlerLeft .HeaderMobileNew .uk-modal-close-default:hover {
    background: var(--color-border, rgba(0, 0, 0, 0.12));
  }
}

/* ---------- Groupes (.Myfilter) : liens de categorie, visibles
   uniquement en mobile (le desktop affiche tout empile directement) ---------- */
.RefonteListe .FitlerLeft .Myfilter + .Myfilter {
  border-top: 1px solid var(--fl-border);
}
.RefonteListe .FitlerLeft .Myfilter > a.uk-accordion-title {
  display: flex;
  align-items: center;
  gap: 12px;
  justify-content: flex-start;
  padding: 14px 4px;
  font-size: 15px;
  font-weight: 700;
  color: var(--color-text, #16181a);
  background-image: none !important;
  background: none !important;
  transition: color var(--fl-duration) var(--fl-ease);
}
/* Neutralise le chevron natif du theme (icone PNG en :before, geree par
   uk-accordion) : sans cela il s affichait EN PLUS de notre propre
   fleche ci-dessous, donnant un double chevron gauche+droite et un
   texte pousse au centre (constate sur capture). */
.RefonteListe .FitlerLeft .Myfilter > a.uk-accordion-title:before {
  content: none !important;
}
.RefonteListe .FitlerLeft .Myfilter > a.uk-accordion-title .FilterIcon {
  color: var(--nav-primary, var(--color-primary, #16181a));
  flex-shrink: 0;
}
.RefonteListe .FitlerLeft .Myfilter > a.uk-accordion-title .FilterIcon svg {
  width: 18px;
  height: 18px;
}
.RefonteListe .FitlerLeft .Myfilter > a.uk-accordion-title:after {
  content: "";
  width: 9px;
  height: 9px;
  margin-left: auto;
  border-right: 2px solid var(--color-muted, #6b7075);
  border-bottom: 2px solid var(--color-muted, #6b7075);
  transform: rotate(-45deg);
  flex-shrink: 0;
}
@media (hover: hover) {
  .RefonteListe .FitlerLeft .Myfilter > a.uk-accordion-title:hover {
    color: var(--color-primary, var(--nav-primary, #16181a));
  }
}

/* ---------- En-tete de chaque filtre (.Mytitle / .uk-accordion-title
   a l interieur d un .AccordGlob) : chevron anime au lieu de l icone
   PNG native du theme, fond leger au survol/ouverture. ---------- */
.RefonteListe .FitlerLeft .AccordGlob {
  border-radius: 10px;
  transition: background-color var(--fl-duration) var(--fl-ease);
}
/* Icone d illustration de chaque filtre (span.FilterIcon, ajoutee en
   HTML dans default_filter.php juste avant le libelle), a la maniere
   des filtres d autosphere.fr : un petit pictogramme neutre devant
   chaque titre (Marques, Modeles, Energies, Budget...), sans toucher
   au bouton de retour mobile (.BtnContinueFilter) ni au chevron. */
.RefonteListe .FitlerLeft .Mytitle.uk-accordion-title .FilterIcon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  flex-shrink: 0;
  color: var(--nav-primary, var(--color-primary, #16181a));
  order: 0;
  transition: color var(--fl-duration) var(--fl-ease);
}
.RefonteListe .FitlerLeft .Mytitle.uk-accordion-title .FilterIcon svg {
  width: 18px;
  height: 18px;
}
.RefonteListe .FitlerLeft .Mytitle.uk-accordion-title[aria-expanded="true"] .FilterIcon {
  color: var(--nav-primary, var(--color-primary, #16181a));
}

.RefonteListe .FitlerLeft .Mytitle.uk-accordion-title {
  display: flex;
  align-items: center;
  /* justify-content:flex-start (au lieu de space-between) : avec la
     fleche generee en :before (donc premiere dans l ordre des boites),
     space-between la plaquait a gauche et poussait le texte a droite —
     l inverse de ce qui est demande (titre a gauche, fleche a droite).
     "order:2" ci-dessous force la fleche APRES le texte, et le
     margin-left:auto sur la fleche absorbe tout l espace restant pour
     la coller au bord droit. */
  justify-content: flex-start;
  gap: 10px;
  padding: 12px 10px;
  border-radius: 10px;
  font-size: 14.5px;
  font-weight: normal;
  background-image: none !important;
  transition: background-color var(--fl-duration) var(--fl-ease);
}
.RefonteListe .FitlerLeft .Mytitle.uk-accordion-title:before {
  content: "";
  order: 2;
  width: 9px;
  height: 9px;
  margin-left: auto;
  border-right: 2px solid var(--color-muted, #6b7075);
  border-bottom: 2px solid var(--color-muted, #6b7075);
  transform: rotate(45deg);
  transition: transform var(--fl-duration) var(--fl-ease);
  background: none !important;
  flex-shrink: 0;
}
.RefonteListe .FitlerLeft .Mytitle.uk-accordion-title[aria-expanded="true"]:before {
  transform: rotate(225deg);
}
@media (hover: hover) {
  .RefonteListe .FitlerLeft .Mytitle.uk-accordion-title:hover {
    background-color: var(--color-bg-soft, #f6f7f9);
  }
}
.RefonteListe .FitlerLeft .Mytitle.uk-accordion-title[aria-expanded="true"] {
  background-color: var(--color-bg-soft, #f6f7f9);
  color: var(--color-text, #16181a);
}

/* Bouton "retour" (drill-down mobile) : cercle discret plutot que le
   glyphe brut. */
.RefonteListe .FitlerLeft .BtnContinueFilter {
  margin-right: 8px;
}
.RefonteListe .FitlerLeft .backFiltreR {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: var(--color-bg-soft, #f6f7f9);
  transition: background-color var(--fl-duration) var(--fl-ease);
}
@media (hover: hover) {
  .RefonteListe .FitlerLeft .backFiltreR:hover {
    background: var(--color-border, rgba(0, 0, 0, 0.12));
  }
}

/* ---------- Contenu (.Mycontent) ---------- */
.RefonteListe .FitlerLeft .Mycontent {
  padding: 6px 10px 12px;
}

/* ---------- Liste de checkbox (.sw-multi-checkbox / .TypeOffFilter) ---------- */
.RefonteListe .FitlerLeft .search-input {
  height: 40px !important;
  border-radius: 10px !important;
  border: 1.5px solid var(--fl-border) !important;
  padding: 0 12px;
  font-size: 13.5px !important;
  transition: border-color var(--fl-duration) var(--fl-ease);
}
.RefonteListe .FitlerLeft .search-input:focus {
  outline: none;
  border-color: var(--color-text, #16181a) !important;
}

/* ---------- Carrousel des items (.SliderMobFiltre, ajoute par le
   theme/JS pour paginer les listes de checkbox par "page" de .items-
   list, ex. .GroupeFiltre) : fleches discretes cohérentes avec le
   reste du site plutot que le style UIkit brut. ---------- */
.RefonteListe .FitlerLeft .SliderMobFiltre {
  position: relative;
  padding: 0 4px;
}
.RefonteListe .FitlerLeft .SliderMobFiltre .items-list {
  display: flex;
}
.RefonteListe .FitlerLeft .GroupeFiltre {
  width: 100%;
  flex-shrink: 0;
}
/* Fleche "precedente" du carrousel supprimee (demande explicite) : le
   premier groupe d items est toujours visible en arrivant sur le
   filtre, revenir en arriere n a pas d utilite ici. */
.RefonteListe .FitlerLeft .SliderMobFiltre .uk-slidenav-previous {
  display: none !important;
}
.RefonteListe .FitlerLeft .SliderMobFiltre .uk-slidenav {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.16);
  color: var(--color-text, #16181a);
  transition: background-color var(--fl-duration) var(--fl-ease);
}
.RefonteListe .FitlerLeft .SliderMobFiltre .uk-slidenav svg {
  width: 9px;
  height: 15px;
}
@media (hover: hover) {
  .RefonteListe .FitlerLeft .SliderMobFiltre .uk-slidenav:hover {
    background: var(--color-bg-soft, #f6f7f9);
  }
}

/* Chaque option (checkbox + libelle + compteur) devient sa propre
   ligne/carte bien delimitee, plutot qu un simple texte flottant —
   plus lisible et plus "design" comme demande. */
.RefonteListe .FitlerLeft .TypeOffFilter {
  margin-bottom: 6px;
}
.RefonteListe .FitlerLeft .TypeOffFilter label {
  display: flex;
  align-items: center;
  padding: 3px 9px;
  border-radius: 10px;
  font-weight: 600;
  letter-spacing: 0.01em;
  transition: background-color var(--fl-duration) var(--fl-ease),
              border-color var(--fl-duration) var(--fl-ease);
}
@media (hover: hover) {
  .RefonteListe .FitlerLeft .TypeOffFilter label:hover {
    background-color: var(--color-bg-soft, #f6f7f9);
    border-color: var(--color-text, #16181a);
  }
}
.RefonteListe .FitlerLeft .TypeOffFilter label:has(input:checked) {
  background-color: var(--color-bg-soft, #f6f7f9);
  border-color: var(--color-text, #16181a);
}
.RefonteListe .FitlerLeft .TypeOffFilter label i {
  font-weight: 500;
  flex: 1 1 auto;
}
.RefonteListe .FitlerLeft .TypeOffFilter span {
  color: var(--color-muted, #6b7075);
  font-weight: 600;
  font-size: 12px;
}
/* Specificite/priorite renforcees : responsive.css (theme) impose sa
   propre icone carree noire plate (background-image check_box_black.png)
   via un selecteur plus specifique que celui-ci, qui l emportait sans
   qu on s en rende compte. */
.RefonteListe .FitlerLeft .AccordGlob .TypeOffFilter input[type="checkbox"],
.RefonteListe .FitlerLeft .TypeOffFilter input[type="checkbox"] {
  width: 19px !important;
  height: 19px !important;
  min-width: 19px !important;
  border-radius: 5px !important;
  border: 1.5px solid var(--fl-border) !important;
  accent-color: var(--color-text, #16181a);
  margin-right: 12px;
  flex-shrink: 0;
}
.RefonteListe .FitlerLeft .lienPlusMoinsFilter {
  border-radius: 10px;
  color: var(--color-muted, #6b7075);
  transition: background-color var(--fl-duration) var(--fl-ease),
              color var(--fl-duration) var(--fl-ease);
}
@media (hover: hover) {
  .RefonteListe .FitlerLeft .lienPlusMoinsFilter:hover {
    background-color: var(--color-bg-soft, #f6f7f9);
    color: var(--color-text, #16181a);
  }
}

/* ---------- Lien "Plus de filtres" (retour au niveau des categories
   depuis un filtre ouvert, mobile) : pilule discrete avec icone "+"
   plutot qu un texte brut centre. ---------- */
.RefonteListe .FitlerLeft .PlusDeFiltres {
  display: flex;
  justify-content: center;
  margin: 18px 0;
}
.RefonteListe .FitlerLeft .PlusDeFiltres a {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 10px 20px;
  border-radius: 999px;
  background: var(--color-bg-soft, #f6f7f9);
  color: var(--color-text, #16181a);
  font-weight: 700;
  font-size: 13.5px;
  transition: background-color var(--fl-duration) var(--fl-ease);
}
.RefonteListe .FitlerLeft .PlusDeFiltres a .uk-icon {
  display: inline-flex;
  color: var(--nav-primary, var(--color-primary, #16181a));
}
@media (hover: hover) {
  .RefonteListe .FitlerLeft .PlusDeFiltres a:hover {
    background: var(--color-border, rgba(0, 0, 0, 0.12));
  }
}

/* ---------- Curseurs de plage (Budget/Kilometrage/Annee/Chevaux) :
   meme langage visuel noir/blanc que le moteur de recherche home. ---------- */
.RefonteListe .FitlerLeft .titleBudget {
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--color-muted, #6b7075);
  margin-top: 20px;
  margin-bottom: 12px;
  padding-top: 16px;
  border-top: 1px solid var(--fl-border);
}
.RefonteListe .FitlerLeft .DropDownSlider + .TypeOffFilter {
  margin-top: 16px;
  padding-top: 16px;
  border-top: 1px solid var(--fl-border);
}
.RefonteListe .FitlerLeft .irs--flat .irs-line {
  height: 4px;
  border-radius: 999px;
  background-color: var(--color-bg-soft, #ebedf0);
}
.RefonteListe .FitlerLeft .irs--flat .irs-bar {
  height: 4px;
  background-color: var(--color-text, #16181a);
}
.RefonteListe .FitlerLeft .irs--flat .irs-handle > i:first-child {
  width: 20px;
  height: 20px;
  margin-left: -14px;
  border: none;
  background-color: #fff;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.28);
  transition: transform var(--fl-duration) ease;
}
@media (hover: hover) {
  .RefonteListe .FitlerLeft .irs--flat .irs-handle:hover > i:first-child,
  .RefonteListe .FitlerLeft .irs--flat .irs-handle.state_hover > i:first-child {
    transform: scale(1.1);
  }
}
.RefonteListe .FitlerLeft .irs--flat .irs-from,
.RefonteListe .FitlerLeft .irs--flat .irs-to,
.RefonteListe .FitlerLeft .irs--flat .irs-single {
  background-color: var(--color-text, #16181a);
  border-radius: 6px;
  font-weight: 600;
}
.RefonteListe .FitlerLeft .irs--flat .irs-from:before,
.RefonteListe .FitlerLeft .irs--flat .irs-to:before,
.RefonteListe .FitlerLeft .irs--flat .irs-single:before {
  border-top-color: var(--color-text, #16181a);
}
.RefonteListe .FitlerLeft .range-wrapper {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
}
.RefonteListe .FitlerLeft .range-wrapper > .irs {
  flex: 1 1 100%;
}
/* "De"/"a" (+ suffixe brut " /mois" pour le loyer, simple noeud texte
   apres l input, pas un element a lui) se disputaient tous les trois
   la meme ligne dans une colonne etroite : le libelle passe maintenant
   sur sa propre ligne au-dessus (flex-wrap + flex-basis:100%), l input
   et son suffixe recuperent alors toute la largeur disponible sur la
   ligne suivante et ne se tronquent plus (constate sur capture : "973
   /mo" coupe, "€" colle au bord). */
.RefonteListe .FitlerLeft .budgetfilter {
  flex: 1 1 0;
  min-width: 0;
  flex-wrap: wrap;
  align-items: center;
  gap: 4px 6px;
  font-size: 11px;
}
.RefonteListe .FitlerLeft .budgetfilter label {
  flex: 1 1 100%;
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  color: var(--color-muted, #6b7075);
}
.RefonteListe .FitlerLeft .budgetfilter input[type="text"] {
  height: 34px !important;
  min-width: 0;
  flex: 1 1 auto;
  padding: 0 6px;
  border: 1.5px solid var(--fl-border);
  border-radius: 10px;
  /* Police plus petite et non grasse (demande explicite) : la valeur
     ("10 890 €", etc.) en 13px/600 debordait/coupait le suffixe dans
     le champ (constate sur capture : "1 78" tronque). */
  font-size: 11px;
  font-weight: 400;
  transition: border-color var(--fl-duration) var(--fl-ease);
}
.RefonteListe .FitlerLeft .budgetfilter input[type="text"]:focus {
  outline: none;
  border-color: var(--color-text, #16181a);
}

/* ---------- Responsive : panneau plein ecran mobile ---------- */
@media (max-width: 960px) {
  .RefonteListe .FitlerLeft {
    padding: 0 14px 24px;
    border-radius: 0;
    box-shadow: none;
    /* header[role="banner"] est en z-index:1000 (regle posee plus haut
       dans ce fichier, pour le mega-menu desktop) : sans depasser cette
       valeur, ce panneau plein ecran (position:fixed) restait recouvert
       par l en-tete du site, qui masquait notre propre bouton de
       fermeture "Filtres" (constate : invisible malgre display:flex). */
    z-index: 1100;
  }
  /* Marge de respiration entre l en-tete (titre "Filtres" + bouton de
     fermeture) et la premiere ligne de la liste ("Marques"), qui la
     touchait directement sinon. */
  .RefonteListe .FitlerLeft .AccordionFilter {
    margin-top: 16px;
  }
  .RefonteListe .FitlerLeft .myaccordion {
    background: #fff !important;
  }

  /* Le theme (responsive.css) force chaque option en colonnes de 50%
     sur mobile (2 par ligne, ex. VOLKSWAGEN/AUDI cote a cote) et masque
     le compteur : demande explicite de repasser a une option par ligne,
     avec un peu d air entre chaque, comme le reste de la liste. */
  .RefonteListe .FitlerLeft .AccordGlob:not(.LocalisationAccrod) .TypeOffFilter,
  .RefonteListe .FitlerLeft .AccordGlob:not(.LocalisationAccrod) .SliderMobFiltre .TypeOffFilter,
  .RefonteListe .FitlerLeft .MarqueAccrod .TypeOffFilter,
  .RefonteListe .FitlerLeft .ModeleAccrod .TypeOffFilter,
  .RefonteListe .FitlerLeft .TypeVAccrod .TypeOffFilter,
  .RefonteListe .FitlerLeft .PorteAccrod .TypeOffFilter {
    width: 100% !important;
    display: block !important;
    float: none !important;
    margin-bottom: 10px !important;
  }
  .RefonteListe .FitlerLeft .AccordGlob:not(.LocalisationAccrod) .TypeOffFilter span,
  .RefonteListe .FitlerLeft .MarqueAccrod .TypeOffFilter span,
  .RefonteListe .FitlerLeft .ModeleAccrod .TypeOffFilter span,
  .RefonteListe .FitlerLeft .TypeVAccrod .TypeOffFilter span,
  .RefonteListe .FitlerLeft .PorteAccrod .TypeOffFilter span {
    display: inline-block !important;
  }
  .RefonteListe .FitlerLeft .GroupeFiltre {
    display: block !important;
  }

  /* Lignes de checkbox (Marque, Modele, Type de vehicule...) trop
     hautes sur mobile : on reduit le padding/la hauteur et on resserre
     l'espacement pour que la liste reste compacte et lisible. */
  .RefonteListe .FitlerLeft .TypeOffFilter {
    margin-bottom: 8px !important;
  }
  .RefonteListe .FitlerLeft .TypeOffFilter label {
    padding: 8px 10px !important;
    min-height: 40px;
    border-radius: 9px !important;
    font-size: 13.5px !important;
  }
  .RefonteListe .FitlerLeft .TypeOffFilter label i {
    font-size: 13.5px !important;
    font-style: normal;
  }
  .RefonteListe .FitlerLeft .TypeOffFilter input[type="checkbox"] {
    width: 17px !important;
    height: 17px !important;
    min-width: 17px !important;
    margin-right: 10px !important;
  }
  .RefonteListe .FitlerLeft .TypeOffFilter span {
    font-size: 11.5px !important;
  }

  /* Bouton "Lancer la recherche" : le theme le laissait en barre noire
     plate collee aux bords (rectangle pleine largeur, texte en bas de
     casse) — on en fait un vrai bouton flottant, arrondi, avec de la
     marge visible tout autour et une icone de recherche, pour qu il se
     lise clairement comme un bouton cliquable plutot qu un bandeau. */
  .RefonteListe .FitlerLeft .LancerRecherche {
    padding: 14px !important;
    background: linear-gradient(to top, #fff 60%, rgba(255, 255, 255, 0)) !important;
  }
  .RefonteListe .FitlerLeft .LancerRecherche button {
    display: flex !important;
    align-items: center;
    justify-content: center;
    gap: 10px;
    width: 100% !important;
    height: 54px;
    line-height: normal !important;
    border-radius: 999px !important;
    font-size: 15px;
    font-weight: 700;
    text-transform: none;
    box-shadow: 0 10px 28px rgba(0, 0, 0, 0.28);
    transition: transform 160ms ease, box-shadow 160ms ease;
  }
  .RefonteListe .FitlerLeft .LancerRecherche button:active {
    transform: scale(0.97);
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.24);
  }
  .RefonteListe .FitlerLeft .LancerRechercheIcon {
    display: inline-flex;
    flex-shrink: 0;
  }
  .RefonteListe .FitlerLeft .LancerRechercheIcon svg {
    width: 18px;
    height: 18px;
  }
}

/* ============================================================
   MODALE "MON COMPTE" — .LoginModalNew #Mcompte (mod_vgrf_navbar,
   partials/login.php)
   Historique : ce bloc etait auparavant un panneau deroulant
   (uk-dropdown) imbrique DANS le mega-menu "Univers Audi" — un panneau
   dans un panneau, ce qui donnait un empilement confus colle au menu
   (constate sur plusieurs captures malgre la refonte du formulaire).
   Bascule vers une vraie fenetre modale (uk-modal, HTML modifie dans
   partials/login.php : trigger avec uk-toggle, conteneur avec uk-modal
   + .uk-modal-dialog .uk-modal-body) : centree a l ecran, overlay
   sombre derriere, plus jamais accrochee au menu. Fonctionne a toutes
   les tailles d ecran (pas de media query desktop-only ici).
   ============================================================ */
/* IMPORTANT : theme.css garde encore une regle legacy de l ANCIEN
   panneau deroulant : ".ConnexionHeader{position:fixed;top:0;right:0}"
   (le lien-declencheur "Mon compte" lui-meme). Cette regle n a plus de
   sens maintenant que c est un simple lien ouvrant une modale : elle
   collait le lien "Mon compte" fixe en haut a droite de l ecran,
   detache de sa place dans le menu (bug constate en desktop ET mobile).
   On neutralise ce position:fixed pour qu il reste un lien normal, a sa
   place dans la liste. */
.ConnexionHeader {
  position: static !important;
  top: auto !important;
  right: auto !important;
}
/* IMPORTANT : UIkit n a PAS de centrage vertical natif sur .uk-modal
   par defaut (uikit.css : "display:none;position:fixed;inset:0;
   overflow-y:auto;padding:15px") — sans l option "center:true" posee
   dans l attribut uk-modal (absente ici, HTML non modifiable), la
   modale reste collee en haut de l ecran avec un simple padding, jamais
   centree verticalement (bug constate sur capture : modale plaquee
   sous le header). On transforme .uk-modal lui-meme (l overlay plein
   ecran, pas la boite .uk-modal-dialog) en conteneur flex qui centre
   sa boite enfant dans les 2 sens. */
#Mcompte.LoginModalNew.uk-modal.uk-open,
.LoginModalNew.uk-modal.uk-open {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  backdrop-filter: blur(3px);
}
/* Filet de securite : #Mcompte est imbrique dans <header uk-sticky>
   (position:relative pose plus haut). position:relative seul ne casse
   PAS position:fixed chez un descendant (seuls transform/filter/
   perspective/will-change/contain le font) — mais on re-affirme ici
   explicitement position:fixed + inset:0 avec l ID (specificite
   maximale) au cas ou un futur ajout (animation, transform au scroll
   via uk-sticky, etc) sur un ancetre romprait ce contexte, ce qui
   donnerait exactement le symptome observe (modale/overlay cantonnes a
   la zone du header au lieu de tout l ecran). */
#Mcompte.uk-modal.uk-open {
  position: fixed !important;
  inset: 0 !important;
  top: 0 !important;
  right: 0 !important;
  bottom: 0 !important;
  left: 0 !important;
}
#Mcompte {
  height: 100%;
}
/* Filet de securite supplementaire, INDEPENDANT des classes : UIkit
   pose "style=display:block" en inline sur #Mcompte quand la modale
   s ouvre (verifie sur le HTML reellement genere). Si pour une raison
   quelconque la classe "uk-open" ou "LoginModalNew" ne matche pas au
   moment voulu (ex. timing JS, variante de markup), ce selecteur base
   sur l attribut capte quand meme l etat "ouvert" et force le centrage
   plein ecran, qui ne depend alors d aucune classe. */
#Mcompte[style*="display: block"],
#Mcompte[style*="display:block"] {
  position: fixed !important;
  inset: 0 !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  z-index: 2000 !important;
}
.LoginModalNew.uk-modal { z-index: 2000; }
.LoginModalNew .uk-modal-dialog {
  /* UIkit impose .uk-modal-dialog { max-width:100% !important } (voir
     uikit.css) pour pouvoir etre surcharge par des modificateurs de
     taille comme .uk-width-auto : sans !important ici, notre largeur
     de 430px etait annulee et la modale prenait presque toute la
     largeur de la page (constate sur la capture). */
  max-width: 430px !important;
  width: calc(100% - 32px);
  max-height: calc(100vh - 40px);
  margin: 0 auto;
  border-radius: 18px;
  box-shadow: 0 24px 60px rgba(0, 0, 0, 0.22);
  padding: 32px 30px;
  position: relative;
  overflow-x: hidden;
  overflow-y: auto;
  /* Petite entree animee (scale+fade) plutot que l apparition seche par
     defaut d UIkit, pour un rendu plus "moderne". */
  animation: mcompteModalIn 260ms cubic-bezier(0.22, 1, 0.36, 1) both;
}
@keyframes mcompteModalIn {
  from { opacity: 0; transform: scale(0.94) translateY(8px); }
  to   { opacity: 1; transform: scale(1) translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
  .LoginModalNew .uk-modal-dialog { animation: none; }
}
/* Fine bande couleur de marque en haut de la modale, pour un peu de
   personnalite sans surcharger le reste (reste blanc/neutre). */
.LoginModalNew .uk-modal-dialog::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 4px;
  background: var(--nav-primary, var(--color-primary, #16181a));
}
.LoginModalNew .TitreModalDrop {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 18px;
}
.LoginModalNew .MonCompteMenu { font-weight: 700; font-size: 17px; }
.LoginModalNew .uk-modal-close-default {
  position: static;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: var(--nav-bg-soft, #f6f7f9);
  transition: background-color 160ms ease, transform 160ms ease;
}
@media (hover: hover) {
  .LoginModalNew .uk-modal-close-default:hover {
    background: var(--nav-border, rgba(0, 0, 0, 0.12));
    transform: rotate(90deg);
  }
}

/* Neutralise le systeme de grille UIkit du formulaire (uk-width-1-4@m
   etc, qui repondent a la largeur de la FENETRE et non du conteneur) :
   chaque champ occupe toute la largeur et s empile proprement. */
#Mcompte .ConnexionDonnes,
#Mcompte .ConnexionDonnes [uk-grid] {
  display: block !important;
  margin: 0 !important;
  padding: 0 !important;
}
#Mcompte .ConnexionDonnes [uk-grid] > div {
  width: 100% !important;
  max-width: 100% !important;
  padding: 0 !important;
  margin: 0 0 14px !important;
}
#Mcompte .ConnexionDonnes [uk-grid] > div:last-child { margin-bottom: 0 !important; }
/* Le logo integre au formulaire fait doublon avec le titre "Mon
   compte" de la modale : masque ici. */
#Mcompte .ConnexionDonnes > [uk-grid] > div:first-child img { display: none; }

/* IMPORTANT : le formulaire lui-meme (labels, inputs, liens, bouton,
   icones, message d erreur, captcha) a DEJA tout un systeme de style
   complet et plus avance sous ".ConnexionDonnes" porte par l ID
   "#frm_connexion" (variables --form-*, carte a bordure degradee,
   focus avec color-mix, fallback @supports, responsive mobile deja
   gere) — construit independamment de cette modale. Les 2 systemes
   (#Mcompte ... et #frm_connexion ...) ciblaient les MEMES elements
   (label, input, bouton, liens) avec une specificite EGALE (1 id + 1
   classe), le dernier declare dans le fichier gagnant au hasard de
   l ordre : d ou "le style ne s affiche pas" (les regles #Mcompte
   etaient ecrasees) et un effet "carte dans la carte" (le cadre a
   bordure degradee de #frm_connexion a l interieur du dialogue deja
   blanc/arrondi/ombre de la modale). On supprime donc ici le doublon
   et on garde uniquement #frm_connexion comme source unique de verite
   pour l interieur du formulaire ; #Mcompte ne garde que ce qui est
   propre a la modale (centrage, titre, bouton fermer, et la
   neutralisation de grille juste au-dessus, absente de #frm_connexion). */
#Mcompte #frm_connexion .ConnexionDonnes {
  background: none;
  background-image: none;
  border: none;
  box-shadow: none;
  padding: 0;
  border-radius: 0;
}

#Mcompte .error-msg:empty { display: none; }
#Mcompte #login-compte-captcha { display: flex; justify-content: center; margin-top: 4px; }

@media (max-width: 639px) {
  .LoginModalNew .uk-modal-dialog {
    padding: 22px;
    width: calc(100% - 24px);
    border-radius: 16px;
  }
  .LoginModalNew .MonCompteMenu { font-size: 16px; }
}

/* ============================================================
   MENU "MON COMPTE" — UTILISATEUR CONNECTE (#Mcompte.FiltreHeader)
   Scope : partials/login.php, branche $session->get('User'). Different
   du formulaire de connexion ci-dessus : ici "Mon compte" ouvre un
   uk-dropdown (pas une uk-modal) contenant juste 2 liens ("Mon profil",
   "Se deconnecter"). Aucun style n existait avant (dropdown UIkit brut,
   liens sans icone stylee) : meme langage visuel que la modale de
   connexion (rayons, ombre, couleur de marque) pour une experience
   coherente, connecte ou non. ============================================================ */
#Mcompte.FiltreHeader {
  min-width: 240px;
  padding: 10px;
  border-radius: var(--nav-radius, 12px);
  box-shadow: var(--nav-shadow, 0 12px 32px rgba(0, 0, 0, 0.16));
  border: none;
}
/* .TitreModalDrop est display:none par defaut (theme.css) et seulement
   .uk-hidden@m (donc visible en dessous du seuil @m d UIkit) : on ne
   force PAS de display ici (ca le rendrait visible en desktop aussi),
   seulement l espacement quand il EST visible (mobile). */
#Mcompte.FiltreHeader .TitreModalDrop.uk-hidden\@m {
  align-items: center;
  justify-content: space-between;
  padding: 4px 6px 12px;
  margin-bottom: 6px;
  border-bottom: 1px solid var(--nav-border, rgba(0, 0, 0, 0.08));
}
#Mcompte.FiltreHeader .MonCompteMenu { font-weight: 700; font-size: 15px; }
#Mcompte.FiltreHeader .uk-modal-close-default {
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: var(--nav-bg-soft, #f6f7f9);
}
#Mcompte .profildecon {
  display: flex !important;
  flex-direction: column;
  justify-content: flex-start !important;
  gap: 2px;
  margin: 0 !important;
  padding: 0 !important;
}
#Mcompte .profildecon a.ConnexionHeader {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0 !important;
  padding: 11px 10px;
  border-radius: 8px;
  font-size: 14px;
  font-weight: 600;
  color: var(--nav-text, #16181a);
  transition: background-color 160ms ease, color 160ms ease;
}
#Mcompte .profildecon a.ConnexionHeader .uk-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: var(--nav-bg-soft, #f6f7f9);
  color: var(--nav-primary, var(--color-primary, #16181a));
  flex-shrink: 0;
  margin-right: 0 !important;
}
@media (hover: hover) {
  #Mcompte .profildecon a.ConnexionHeader:hover {
    background-color: var(--nav-bg-soft, #f6f7f9);
    color: var(--nav-primary, var(--color-primary, #16181a));
  }
}
/* Lien "Se deconnecter" : legerement distingue (couleur d alerte douce). */
#Mcompte .profildecon a.ConnexionHeader[href*="se-deconnecter"] .uk-icon {
  color: #dc2626;
}
@media (max-width: 639px) {
  #Mcompte.FiltreHeader {
    min-width: 0;
    width: calc(100vw - 32px);
    max-width: 320px;
  }
  #Mcompte.FiltreHeader .TitreModalDrop { display: flex !important; }
}

/* ============================================================
   MENU MOBILE (< 1024px) — .menuBurger + .MenuMobile (offcanvas) +
   #MobileMenu. Structure identique sur les 5 marques (verifie dans
   modules/mod_vgrf_navbar/tmpl/default-*.php) : le menu mobile reutilise
   EXACTEMENT le meme DOM que le menu desktop, deplace en JS (jQuery
   appendTo) — ces regles s appliquent donc a l identique sur Audi, VW,
   CUPRA, SEAT et Skoda.
   ============================================================ */
@media (max-width: 1023px) {
  /* Bouton burger : cible tactile confortable, retour visuel au tap. */
  .menuBurger {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    transition: background-color var(--nav-duration) ease;
  }
  .menuBurger:active { background-color: rgba(0, 0, 0, 0.06); }

  /* Bouton "Rendez-vous atelier" du header : icone ronde compacte pour
     ne pas concurrencer le burger sur une largeur d ecran reduite. */
  .PrisRendezBtn a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background-color: var(--nav-primary);
    color: #fff;
  }

  /* Panneau coulissant (offcanvas) */
  .MenuMobile .uk-offcanvas-bar,
  .MenuMobileOffcanvas {
    width: 88vw;
    max-width: 380px;
    background: #fff;
    padding: 24px 20px 96px;
    box-shadow: var(--nav-shadow);
  }
  .uk-offcanvas.uk-open::before {
    background: rgba(10, 10, 10, 0.55);
  }

  /* En-tete du panneau : logo + bouton fermer.
     IMPORTANT : ".headMobLog" n existe pas dans le DOM reel (verifie sur
     le HTML genere) — .LogoMenuMob et .uk-offcanvas-close sont deux
     FRERES directs de #MobileMenu, pas des enfants d un wrapper flex
     commun. La regle ci-dessous (basee sur .headMobLog) etait donc du
     code mort qui ne s appliquait jamais. On style directement
     .LogoMenuMob (le bouton fermer reste positionne en absolu, cf. regle
     .uk-offcanvas-close plus bas, qui fonctionne independamment). */
  .MenuMobile .LogoMenuMob,
  #MobileMenu .LogoMenuMob {
    display: flex;
    align-items: center;
    margin-bottom: 20px;
    padding-bottom: 16px;
    padding-right: 48px; /* espace pour ne pas passer sous le bouton fermer */
    border-bottom: 1px solid var(--nav-border);
  }
  .MenuMobile .LogoMenuMob img,
  #MobileMenu .LogoMenuMob img { max-height: 30px; width: auto; }
  .uk-offcanvas-close,
  .MenuMobile .uk-offcanvas-close {
    top: 20px;
    right: 16px;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: var(--nav-bg-soft);
    transition: transform var(--nav-duration) ease;
  }
  .uk-offcanvas-close:active { transform: scale(0.92); }

  /* Liens de niveau 1 : grande cible tactile, separateur discret,
     retour de couleur au tap plutot qu un simple survol (inutile au
     doigt). */
  .MenuMobile .uk-nav > li > a,
  .MenuMobile .uk-navbar-nav > li > a,
  #MobileMenu .uk-nav > li > a,
  #MobileMenu > ul > li > a {
    display: flex !important;
    align-items: center;
    justify-content: flex-start !important;
    min-height: 52px;
    padding: 12px 4px;
    font-size: 16px;
    text-align: left !important;
    color: var(--nav-text);
    border-bottom: 1px solid var(--nav-border);
    transition: color var(--nav-duration) ease;
  }
  .MenuMobile .uk-nav > li > a:active,
  #MobileMenu .uk-nav > li > a:active {
    color: var(--nav-primary);
  }

  /* Sous-menus (accordeon) : le JS (deja en place, non modifie) ajoute
     la classe .uk-accordion-title sur les items a sous-menu et bascule
     .open / .uk-open au clic. UIkit ajoute alors AUTOMATIQUEMENT sa
     propre icone "+/-" via ::before sur .uk-accordion-title (verifie
     dans uikit.css) : plutot que d en superposer une seconde (ce qui
     donnait un "+" trop massif et sans lien visuel avec le reste du
     site, constate sur la capture), on redessine directement CETTE
     icone native en petit cercle discret, cohérent avec le reste du
     menu. */
  .MenuMobile .uk-accordion-title::before,
  #MobileMenu .uk-accordion-title::before {
    width: 22px !important;
    height: 22px !important;
    margin-left: auto !important;
    border-radius: 50%;
    background-color: var(--nav-bg-soft);
    background-size: 10px 10px !important;
    transition: transform var(--nav-duration) ease, background-color var(--nav-duration) ease;
  }
  .MenuMobile .subNavNew.open .uk-accordion-title::before,
  #MobileMenu .subNavNew.open .uk-accordion-title::before {
    background-color: var(--nav-bg-soft);
    transform: rotate(180deg);
  }
  .MenuMobile .uk-navbar-dropdown,
  #MobileMenu .uk-navbar-dropdown {
    position: static !important;
    width: 100% !important;
    max-width: none !important;
    box-shadow: none !important;
    border: none !important;
    background: var(--nav-bg-soft) !important;
    border-radius: 8px;
    margin: 4px 0 10px;
    padding: 6px !important;
    display: none;
  }
  .MenuMobile .subNavNew.open > .uk-navbar-dropdown,
  #MobileMenu .subNavNew.open > .uk-navbar-dropdown {
    display: block;
  }
  .MenuMobile .uk-navbar-dropdown-nav > li > a,
  #MobileMenu .uk-navbar-dropdown-nav > li > a,
  .MenuMobile .submenu > ul > li > a,
  #MobileMenu .submenu > ul > li > a {
    display: flex;
    align-items: center;
    min-height: 44px;
    padding: 8px 10px !important;
    font-size: 14.5px;
    font-weight: 400 !important;
    color: var(--nav-muted) !important;
    border-bottom: none !important;
    text-decoration: none !important;
    border-radius: 6px;
    transition: background-color var(--nav-duration) ease, color var(--nav-duration) ease;
  }
  .MenuMobile .uk-navbar-dropdown-nav > li > a:active,
  #MobileMenu .uk-navbar-dropdown-nav > li > a:active,
  .MenuMobile .submenu > ul > li > a:active,
  #MobileMenu .submenu > ul > li > a:active {
    background-color: #fff;
    color: var(--nav-primary) !important;
  }
  /* Sous-titres de rubrique ("Après-vente", "Garantie", "Rendez-vous") :
     petit repere colore (barre verticale) + espacement plus genereux,
     pour bien les distinguer des liens cliquables juste en dessous. */
  .MenuMobile .uk-navbar-dropdown-nav > li > span,
  #MobileMenu .uk-navbar-dropdown-nav > li > span,
  .MenuMobile .submenu > ul > li > span,
  #MobileMenu .submenu > ul > li > span {
    display: flex;
    align-items: center;
    gap: 7px;
    margin: 4px 0 2px;
    padding: 8px 10px;
    font-size: 11px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.07em;
    color: var(--nav-text);
  }
  .MenuMobile .uk-navbar-dropdown-nav > li > span::before,
  #MobileMenu .uk-navbar-dropdown-nav > li > span::before,
  .MenuMobile .submenu > ul > li > span::before,
  #MobileMenu .submenu > ul > li > span::before {
    content: "";
    width: 3px;
    height: 13px;
    border-radius: 999px;
    background: var(--nav-primary);
    flex-shrink: 0;
  }
  /* Separateur visuel entre les groupes du mega-menu (Après-vente /
     Garantie / Rendez-vous) une fois empiles en 1 colonne sur mobile. */
  .MenuMobile .submenu > ul + ul,
  #MobileMenu .submenu > ul + ul {
    margin-top: 10px !important;
    padding-top: 12px;
    border-top: 1px dashed var(--nav-border);
  }
  /* Mega-menu (Après-vente & Services) : 2 colonnes -> 1 seule colonne
     empilee sur mobile, bien plus lisible qu une grille etroite. On
     force explicitement TOUTES les proprietes de mise en page (pas
     seulement display) pour eviter tout conflit residuel. */
  #MobileMenu .submenu,
  .MenuMobile .submenu {
    display: block !important;
    flex-wrap: wrap !important;
    width: auto !important;
  }
  #MobileMenu .submenu > ul,
  .MenuMobile .submenu > ul {
    display: block !important;
    flex: none !important;
    width: 100% !important;
    max-width: 100% !important;
    border-right: none !important;
    padding-right: 0 !important;
    margin-right: 0 !important;
  }
  /* Le 3e groupe ("Rendez-vous") met ses <li> en uk-float-left (theme) :
     dans une colonne empilee en pleine largeur sur mobile, un float
     casse l alignement (2e lien remonte a cote du 1er au lieu de
     dessous). On repasse ces li en bloc normal. */
  #MobileMenu .submenu > ul > li.uk-float-left,
  .MenuMobile .submenu > ul > li.uk-float-left {
    float: none !important;
    width: 100% !important;
  }

  /* CTA "Rendez-vous en atelier" mis en avant dans le menu : vrai
     bouton plutot qu un simple lien, pour capter l action prioritaire.
     IMPORTANT : la regle generique ".MenuMobile .submenu > ul > li > a"
     plus haut (2 classes dans son selecteur) a une specificite PLUS
     ELEVEE que ".PrisRendezBtnMenu" seul (1 classe) — malgre le "!important"
     des 2 cotes, c est elle qui gagnait (couleur grise/muette imposee
     par dessus le fond colore), rendant le texte du bouton illisible
     (signale sur capture). On reprend ici la MEME chaine de selecteurs
     + la classe .PrisRendezBtnMenu pour etre certain de gagner. */
  .MenuMobile .submenu > ul > li > a.PrisRendezBtnMenu,
  #MobileMenu .submenu > ul > li > a.PrisRendezBtnMenu,
  .PrisRendezBtnMenu {
    display: flex !important;
    align-items: center;
    justify-content: center;
    gap: 8px;
    margin: 10px 0 2px !important;
    padding: 14px 18px !important;
    border-radius: 999px !important;
    background: var(--nav-primary) !important;
    color: #fff !important;
    font-size: 15px !important;
    font-weight: 700 !important;
    text-align: center;
    box-shadow: 0 8px 20px rgba(0, 0, 0, 0.18);
    transition: transform var(--nav-duration) ease, box-shadow var(--nav-duration) ease;
  }
  .MenuMobile .submenu > ul > li > a.PrisRendezBtnMenu:active,
  #MobileMenu .submenu > ul > li > a.PrisRendezBtnMenu:active,
  .PrisRendezBtnMenu:active {
    color: #fff !important;
    background: var(--nav-primary) !important;
    transform: scale(0.97);
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.14);
  }
  .newrendez {
    display: inline-flex;
    align-items: center;
    margin-left: 0;
    padding: 2px 8px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.25);
    color: #fff !important;
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
  }

  /* Panneau "Mon compte" (#Mcompte) : cache par le JS existant sur
     mobile (attribut hidden), rien a faire de plus ici. */
}

/* ============================================================
   Anti-zoom iOS — empêche le zoom automatique sur les champs
   ============================================================ */
@media screen and (-webkit-min-device-pixel-ratio: 0) {
  input[type="text"],
  input[type="email"],
  input[type="number"],
  input[type="tel"],
  input[type="password"],
  input[type="search"],
  input[type="url"],
  select,
  textarea {
    font-size: 16px !important;
  }
}

/* ============================================================
   FORMULAIRE PREMIUM — Design adaptatif multi-thèmes 2025
   Scope : :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes)  (simple.php)
   Réutilise var(--primary-color) de chaque template.
   Aucune modification HTML requise.
   ============================================================ */

/* ---------- Variables de design (hérite --primary-color du thème actif) ---------- */
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) {
  /* Accent = couleur primaire du thème, fallback gris anthracite neutre */
  --form-accent:          var(--primary-color, #1a1a1a);
  --form-radius:          10px;
  --form-color-border:    #d0d5dd;
  --form-color-bg:        #ffffff;
  --form-color-bg-hover:  #f7f7f7;
  --form-color-text:      #1a1a1a;
  --form-color-placeholder: #9ca3af;
  --form-color-label:     #374151;
  --form-color-error:     #dc2626;
  --form-color-success:   #16a34a;
  --form-shadow-field:    0 1px 3px rgba(0,0,0,.07);
  --form-transition:      all .22s cubic-bezier(.4,0,.2,1);
  --form-gap:             7px;
}

/* ---------- Largeur du conteneur page ---------- */
.FormulairePros .uk-container {
  max-width: 800px;
}

/* ---------- Conteneur principal ---------- */
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) #frm_simple,
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) #frm_pro {
  background: #fff;
  border-radius: 16px;
  padding: 16px 22px;
  box-shadow: 0 8px 40px rgba(0,0,0,.08);
  max-width: 800px;
  margin: 0 auto;
  animation: formFadeIn .45s ease both;
  overflow-x: hidden;
}

#frm_createcompte {
  background: #fff;
  border-radius: 16px;
  padding: 16px 22px;
  box-shadow: 0 8px 40px rgba(0,0,0,.08);
  max-width: 700px;
  margin: 0 auto;
  animation: formFadeIn .45s ease both;
  overflow-x: hidden;
}

/* ---------- Titre h3 — bloc clair premium ---------- */
.FormulairePros.sw-formulaire-pros > h3 {
  display: block;
  max-width: 800px;
  margin: 0 auto 24px auto;
  padding: 14px 20px 14px 22px;
  font-size: clamp(1rem, 2vw, 1.2rem);
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  line-height: 1.3;
  color: #1a1a1a;
  background: #ffffff;
  border-radius: 10px;
  border: 1px solid #e5e7eb;
  border-left: 4px solid var(--primary-color, #1a1a1a);
  box-shadow: 0 2px 10px rgba(0,0,0,.06);
}

/* ---------- Grille — espacement des colonnes ---------- */
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-grid {
  margin-left: calc(-1 * var(--form-gap));
}
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-grid > * {
  padding-left: var(--form-gap);
}
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .rsform-block,
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .formControls {
  margin-bottom: var(--form-gap);
}

/* ---------- Champs texte, select, textarea ---------- */
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-input,
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-select,
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-textarea {
  width: 100%;
  height: 44px;
  padding: 0 14px;
  border: 1.5px solid var(--form-color-border);
  border-radius: var(--form-radius);
  background: var(--form-color-bg);
  color: var(--form-color-text);
  font-size: 15px;
  font-weight: 400;
  line-height: 1.5;
  box-shadow: var(--form-shadow-field);
  transition: var(--form-transition);
  outline: none;
  -webkit-appearance: none;
  appearance: none;
}

:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-textarea {
  height: auto;
  padding: 14px 16px;
  resize: vertical;
  min-height: 90px;
  line-height: 1.6;
}

:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-input::placeholder,
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-select::placeholder,
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-textarea::placeholder {
  color: var(--form-color-placeholder);
}

/* Hover */
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-input:hover,
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-select:hover,
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-textarea:hover {
  border-color: #a0aec0;
  background: var(--form-color-bg-hover);
}

/* Focus inputs et textarea */
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-input:focus,
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-textarea:focus {
  border-color: var(--form-accent);
  background: #fff;
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--form-accent) 18%, transparent);
}

/* Focus select — sans box-shadow pour éviter l'effet flush */
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-select:focus {
  border-color: var(--form-accent);
  background: #fff;
  box-shadow: none;
  transition: border-color .15s ease;
}

/* Fallback pour navigateurs sans color-mix */
@supports not (color: color-mix(in srgb, red 50%, blue)) {
  :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-input:focus,
  :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-textarea:focus {
    box-shadow: 0 0 0 3px rgba(26,26,26,.14);
  }
}

/* Select — pas de transition (évite le flush) */
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-select {
  transition: border-color .15s ease;
}

/* ---------- Select — flèche neutre (SVG noir, s'adapte à tout fond) ---------- */
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-select {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%231a1a1a' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 14px center;
  padding-right: 40px;
  cursor: pointer;
}

/* ---------- Civilité — Pills avec radio button visible ---------- */

 

 

/* Radio button */
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-radio {
  width: 18px;
  height: 18px;
  min-width: 18px;
  border: 2px solid #d1d5db;
  border-radius: 50%;
  appearance: none;
  -webkit-appearance: none;
  cursor: pointer;
  flex-shrink: 0;
  background: #fff;
  transition: border-color .15s ease;
  position: relative;
}

/* Point central — visible uniquement quand coché */
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-radio::after {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--form-accent);
  opacity: 0;
  transition: opacity .15s ease;
}

:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-radio:checked {
  border-color: var(--form-accent);
  background: #fff;
}

:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-radio:checked::after {
  opacity: 1;
}

 
 

 

/* ---------- Cases à cocher ---------- */
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-form-controls > label:not(.fb-radio),
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .formControls > label:not(.fb-radio) {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  cursor: pointer;
  font-size: 13.5px;
  color: #4b5563;
  line-height: 1.6;
}

:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-checkbox {
  width: 18px;
  height: 18px;
  min-width: 18px;
  border: 2px solid var(--form-color-border);
  border-radius: 5px;
  appearance: none;
  -webkit-appearance: none;
  cursor: pointer;
  background: #fff;
  transition: var(--form-transition);
  position: relative;
  margin-top: 2px;
}

:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-checkbox:hover {
  border-color: var(--form-accent);
}

:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-checkbox:checked {
  background-color: var(--form-accent) !important;
  background-image: none !important;
  border-color: var(--form-accent) !important;
}

:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-checkbox:checked::after {
  content: '' !important;
  display: block !important;
  position: absolute;
  left: 4px;
  top: 1px;
  width: 6px;
  height: 10px;
  border: 2px solid #fff;
  border-top: none;
  border-left: none;
  transform: rotate(45deg);
}

/* Liens RGPD */
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-form-controls > label:not(.fb-radio) a,
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .formControls > label:not(.fb-radio) a {
  color: var(--form-accent);
  text-decoration: underline;
  text-underline-offset: 2px;
}

/* ---------- Bouton d'envoi — structure seulement, couleurs héritées du thème ---------- */
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-button-primary.BtnEnv {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 52px;
  padding: 0 32px;
  font-size: 15px;
  font-weight: 600;
  letter-spacing: .04em;
  text-transform: uppercase;
  border-radius: 6px;
  cursor: pointer;
  transition: transform .22s ease, box-shadow .22s ease;
  position: relative;
  overflow: hidden;
}

/* Effet shimmer subtil au survol — ne modifie pas la couleur, juste l'effet */
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-button-primary.BtnEnv::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(120deg, transparent 30%, rgba(255,255,255,.15) 50%, transparent 70%);
  transform: translateX(-100%);
  transition: transform .5s ease;
  pointer-events: none;
}

:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-button-primary.BtnEnv:hover {
  transform: translateY(-1px);
  box-shadow: 0 6px 18px rgba(0,0,0,.18);
}

:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-button-primary.BtnEnv:hover::before {
  transform: translateX(100%);
}

:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-button-primary.BtnEnv:active {
  transform: translateY(0);
  box-shadow: 0 2px 6px rgba(0,0,0,.12);
}

/* Image loader pendant le submit — centré, fond conservé */
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-button-primary.BtnEnv img {
  display: block;
  max-height: 28px;
  width: auto;
  margin: 0 auto;
  position: relative;
  z-index: 1;
  filter: brightness(0) invert(1); /* rend le loader blanc sur fond coloré */
}

/* Bouton désactivé pendant le chargement */
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-button-primary.BtnEnv:disabled,
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-button-primary.BtnEnv[disabled] {
  opacity: 1 !important;
  transform: none !important;
  box-shadow: none !important;
  background-color: var(--primary-color, #1a1a1a) !important;
  color: #fff !important;
}

/* Masquer le shimmer pendant le chargement */
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-button-primary.BtnEnv:disabled::before,
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-button-primary.BtnEnv[disabled]::before {
  display: none;
}

/* ---------- Animations alertes ---------- */
@keyframes alertSlideIn {
  from { opacity: 0; transform: translateY(-8px) scale(.98); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}
@keyframes alertShake {
  0%, 100% { transform: translateX(0); }
  20%       { transform: translateX(-5px); }
  40%       { transform: translateX(5px); }
  60%       { transform: translateX(-3px); }
  80%       { transform: translateX(3px); }
}

/* ---------- Base alert ---------- */
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-alert {
  border-radius: 12px;
  padding: 16px 20px;
  font-size: 14px;
  font-weight: 400;
  line-height: 1.6;
  margin-bottom: 20px;
  border: 1px solid transparent;
}

/* ---------- Alerte d'erreur — moderne 2025 ---------- */
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .form-error-msg,
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-alert-danger {
  background: #ffffff;
  border: 1px solid #fecaca;
  border-left: 4px solid var(--form-color-error);
  border-radius: 12px;
  padding: 16px 20px 16px 52px;
  color: #374151;
  box-shadow: 0 2px 16px rgba(220,38,38,.1), 0 1px 4px rgba(0,0,0,.05);
  position: relative;
  animation: alertSlideIn .28s cubic-bezier(.4,0,.2,1) both,
             alertShake    .45s .28s cubic-bezier(.36,.07,.19,.97) both;
}

/* Icône warning SVG positionnée à gauche */
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .form-error-msg::before,
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-alert-danger::before {
  content: '';
  position: absolute;
  left: 18px;
  top: 18px;
  width: 20px;
  height: 20px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23dc2626' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z'/%3E%3Cline x1='12' y1='9' x2='12' y2='13'/%3E%3Ccircle cx='12' cy='17' r='.5' fill='%23dc2626'/%3E%3C/svg%3E") no-repeat center / contain;
}

/* Titre d'erreur si présent */
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .form-error-msg strong,
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-alert-danger strong {
  display: block;
  font-weight: 600;
  font-size: 14px;
  color: var(--form-color-error);
  margin-bottom: 6px;
}

/* Messages individuels */
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .form-error-msg p,
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-alert-danger p {
  margin: 0 0 5px 0;
  color: #4b5563;
}
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .form-error-msg p:last-child,
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-alert-danger p:last-child {
  margin-bottom: 0;
}
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .form-error-msg ul,
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-alert-danger ul {
  margin: 4px 0 0 0;
  padding: 0;
  list-style: none;
}
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .form-error-msg li,
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-alert-danger li {
  margin-bottom: 5px;
  padding-left: 14px;
  position: relative;
  color: #4b5563;
  line-height: 1.55;
}
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .form-error-msg li::before,
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-alert-danger li::before {
  content: '›';
  position: absolute;
  left: 0;
  color: var(--form-color-error);
  font-weight: 700;
}

/* ---------- Alerte succès — une seule ligne ---------- */
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-alert-success,
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .success-msg {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: nowrap;
  background: linear-gradient(135deg, #f0fdf4 0%, #dcfce7 60%, #f0fdf4 100%);
  border: 1px solid #86efac;
  border-left: 4px solid var(--form-color-success);
  border-radius: 12px;
  padding: 12px 14px 12px 52px;
  color: #166534;
  font-size: 14px;
  font-weight: 500;
  line-height: 1.4;
  box-shadow: 0 2px 12px rgba(22,163,74,.12), 0 1px 3px rgba(0,0,0,.04);
  position: relative;
  animation: alertSlideIn .32s cubic-bezier(.4,0,.2,1) both;
  box-sizing: border-box;
}

/* Texte principal — prend l'espace restant */
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .success-msg p,
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-alert-success p {
  flex: 1;
  margin: 0;
  font-size: 13.5px;
  color: #166534;
  min-width: 0;
}

/* Zone CTA */
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .success-msg .success-actions {
  display: contents; /* le lien participe directement au flex parent */
}

/* Bouton CTA "Voir nos véhicules disponibles" */
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .success-msg .success-actions .uk-button.uk-button-primary {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
  padding: 0 16px;
  height: 36px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .05em;
  text-transform: uppercase;
  border-radius: 20px;
  background-color: var(--form-color-success);
  color: #fff;
  border: none;
  text-decoration: none;
  white-space: nowrap;
  box-shadow: 0 2px 8px rgba(22,163,74,.30);
  transition: background-color .18s ease, transform .15s ease, box-shadow .18s ease;
  -webkit-tap-highlight-color: transparent;
}

:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .success-msg .success-actions .uk-button.uk-button-primary::after {
  content: '→';
  font-size: 13px;
  transition: transform .18s ease;
}

:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .success-msg .success-actions .uk-button.uk-button-primary:hover {
  background-color: #15803d;
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(22,163,74,.38);
}

:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .success-msg .success-actions .uk-button.uk-button-primary:hover::after {
  transform: translateX(3px);
}

/* Span X fermer — masqué */
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .success-msg > span {
  display: none;
}

/* Cercle icône ✓ */
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-alert-success::before,
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .success-msg::before {
  content: '';
  position: absolute;
  left: 14px;
  top: 50%;
  transform: translateY(-50%);
  width: 26px;
  height: 26px;
  border-radius: 50%;
  background: var(--form-color-success)
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E")
    no-repeat center / 13px;
  box-shadow: 0 2px 6px rgba(22,163,74,.35);
  flex-shrink: 0;
}

/* ---------- État d'erreur champs ---------- */

/* has-error sur un div parent (cas standard) */
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .has-error .uk-input,
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .has-error .uk-select,
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .has-error .uk-textarea {
  border-color: var(--form-color-error) !important;
  background: #fff5f5 !important;
  box-shadow: 0 0 0 3px rgba(220,38,38,.12) !important;
}

/* has-error sur le label lui-même (checkbox RGPD) */
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) label.has-error .uk-checkbox {
  border-color: var(--form-color-error) !important;
  background: #fff5f5 !important;
  box-shadow: 0 0 0 3px rgba(220,38,38,.12) !important;
}

/* has-error sur la pill civilité (label.fb-radio.has-error) */
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) label.fb-radio.has-error {
  border-color: var(--form-color-error) !important;
  background: #fff5f5 !important;
}

:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) label.fb-radio.has-error .uk-radio {
  border-color: var(--form-color-error) !important;
}

/* ---------- Utilitaires ---------- */
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .sw-margin-top {
  margin-top: 4px;
}

:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .captcha {
  display: flex;
  align-items: center;
}

/* ---------- Animation d'entrée ---------- */
@keyframes formFadeIn {
  from { opacity: 0; transform: translateY(14px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ============================================================
   RESPONSIVE MOBILE — < 640px
   Optimisé iPhone (320–430px) + Android
   ============================================================ */
@media (max-width: 639px) {

  /* --- Conteneur page --- */
  .FormulairePros .uk-container {
    padding-left: 12px;
    padding-right: 12px;
    box-sizing: border-box;
  }

  /* --- Titre h3 --- */
  .FormulairePros.sw-formulaire-pros > h3 {
    font-size: .88rem;
    padding: 12px 14px 12px 16px;
    margin-bottom: 14px;
    border-left-width: 3px;
    letter-spacing: .05em;
  }

  /* --- Carte formulaire --- */
  :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) #frm_simple,
  :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) #frm_pro,
  #frm_createcompte {
    padding: 14px 12px 20px;
    border-radius: 12px;
    box-shadow: 0 4px 20px rgba(0,0,0,.08);
    overflow-x: hidden;
  }

  /* --- Grille : toutes les colonnes en pleine largeur --- */
  :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-grid > * {
    width: 100% !important;
    max-width: 100% !important;
    flex: none !important;
    padding-left: 0;
  }
  :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-grid {
    margin-left: 0;
  }

  /* --- Espacement entre blocs --- */
  :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .rsform-block,
  :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .formControls {
    margin-bottom: 10px;
  }

  /* --- Champs : hauteur confortable au doigt (48px) --- */
  :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-input,
  :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-select {
    height: 48px;
    font-size: 16px !important; /* prévient le zoom iOS */
    padding: 0 14px;
    border-radius: 8px;
  }

  :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-textarea {
    font-size: 16px !important;
    min-height: 100px;
    padding: 12px 14px;
    border-radius: 8px;
  }

 

 

  /* --- Cases à cocher : zone de tap agrandie --- */
  :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-form-controls > label:not(.fb-radio),
  :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .formControls > label:not(.fb-radio) {
    padding: 6px 0;
    font-size: 13px;
    gap: 10px;
    line-height: 1.55;
  }

  :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-checkbox {
    width: 20px;
    height: 20px;
    min-width: 20px;
    margin-top: 1px;
    flex-shrink: 0;
  }

  /* --- Bouton d'envoi --- */
  :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-button-primary.BtnEnv {
    height: 52px;
    font-size: 15px;
    border-radius: 8px;
    letter-spacing: .05em;
    /* Tap highlight supprimé — le bouton a son propre feedback */
    -webkit-tap-highlight-color: transparent;
  }

  /* Feedback tactile au press */
  :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-button-primary.BtnEnv:active {
    transform: scale(.98);
    box-shadow: 0 2px 8px rgba(0,0,0,.14);
  }

  /* --- Marges top des blocs RGPD/newsletter --- */
  :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .sw-margin-top {
    margin-top: 6px;
  }

  /* --- Alertes : icône plus petite, padding réduit --- */
  :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .form-error-msg,
  :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-alert-danger {
    padding: 14px 14px 14px 44px;
    font-size: 13px;
    border-radius: 10px;
  }
  :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .form-error-msg::before,
  :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-alert-danger::before {
    left: 12px;
    top: 15px;
    width: 18px;
    height: 18px;
  }

  :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-alert-success,
  :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .success-msg {
    padding: 14px 14px 14px 48px;
    font-size: 13px;
    border-radius: 10px;
  }
  :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-alert-success::before,
  :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .success-msg::before {
    left: 12px;
    width: 24px;
    height: 24px;
    background-size: 11px;
  }

  /* Succès mobile : passage en wrap sur petits écrans */
  :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-alert-success,
  :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .success-msg {
    flex-wrap: wrap;
    padding: 12px 12px 12px 46px;
    gap: 8px;
  }

  :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .success-msg p,
  :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-alert-success p {
    width: 100%;
    font-size: 13px;
  }

  :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .success-msg .success-actions .uk-button.uk-button-primary {
    height: 38px;
    font-size: 11.5px;
    padding: 0 14px;
  }


  /* --- Captcha : pleine largeur --- */
  :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .captcha {
    width: 100%;
    justify-content: flex-start;
  }
}

/* ============================================================
   TRÈS PETITS ÉCRANS — ≤ 360px (iPhone SE, Galaxy A serie)
   ============================================================ */
@media (max-width: 360px) {
  :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) #frm_simple,
:is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) #frm_pro {
    padding: 12px 10px 18px;
  }

  :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-input,
  :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-select {
    height: 46px;
    font-size: 15px !important;
    padding: 0 12px;
  }

 

  :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-radio {
    width: 16px;
    height: 16px;
    min-width: 16px;
  }

  :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-radio::after {
    width: 7px;
    height: 7px;
  }
}

/* ============================================================
   TABLETTE — 640px–959px
   ============================================================ */
@media (min-width: 640px) and (max-width: 959px) {
  :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) #frm_simple,
  :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) #frm_pro,
  #frm_createcompte {
    padding: 28px 24px;
  }

  :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-input,
  :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-select {
    height: 46px;
  }
}

/* ============================================================
   Anti-zoom iOS — surcharge locale sur champs du formulaire
   ============================================================ */
@media screen and (-webkit-min-device-pixel-ratio: 0) {
  :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-input,
  :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-select,
  :is(.vgrf-form-simple, .vgrf-form-pro, .ContactModalNew, .MesDonnes) .uk-textarea {
    font-size: 16px !important;
  }
}


/* ============================================================
   FORMULAIRE CONTACT — même design que form simple / pro
   Scope : #contact-page  (default_form.php)
   Différences : selects sans .uk-select, bouton sans .BtnEnv
   ============================================================ */

/* ---------- Variables ---------- */
#contact-page {
  --form-accent:            var(--primary-color, #1a1a1a);
  --form-radius:            10px;
  --form-color-border:      #d0d5dd;
  --form-color-bg:          #ffffff;
  --form-color-bg-hover:    #f7f7f7;
  --form-color-text:        #1a1a1a;
  --form-color-placeholder: #9ca3af;
  --form-color-label:       #374151;
  --form-color-error:       #dc2626;
  --form-color-success:     #16a34a;
  --form-shadow-field:      0 1px 3px rgba(0,0,0,.07);
  --form-transition:        all .22s cubic-bezier(.4,0,.2,1);
  --form-gap:               7px;
}

/* ---------- Carte formulaire ---------- */
#contact-page #form-contact {
  background: #fff;
  border-radius: 16px;
  padding: 16px 22px;
  box-shadow: 0 8px 40px rgba(0,0,0,.08);
  max-width: 800px;
  margin: 0 auto;
  animation: formFadeIn .45s ease both;
  overflow-x: hidden;
}

/* ---------- Espacement blocs ---------- */
#contact-page #form-contact > div {
  margin-bottom: var(--form-gap);
}

/* ---------- Champs texte ---------- */
#contact-page .uk-input {
  width: 100%;
  height: 44px;
  padding: 0 14px;
  border: 1.5px solid var(--form-color-border);
  border-radius: var(--form-radius);
  background: var(--form-color-bg);
  color: var(--form-color-text);
  font-size: 15px;
  box-shadow: var(--form-shadow-field);
  transition: border-color .22s ease, box-shadow .22s ease;
  outline: none;
  -webkit-appearance: none;
  appearance: none;
  box-sizing: border-box;
}

#contact-page .uk-input::placeholder {
  color: var(--form-color-placeholder);
}

#contact-page .uk-input:hover {
  border-color: #a0aec0;
  background: var(--form-color-bg-hover);
}

#contact-page .uk-input:focus {
  border-color: var(--form-accent);
  background: #fff;
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--form-accent) 18%, transparent);
}

@supports not (color: color-mix(in srgb, red 50%, blue)) {
  #contact-page .uk-input:focus {
    box-shadow: 0 0 0 3px rgba(26,26,26,.14);
  }
}

/* ---------- Textarea ---------- */
#contact-page .uk-textarea {
  width: 100%;
  height: auto;
  min-height: 90px;
  padding: 14px 16px;
  border: 1.5px solid var(--form-color-border);
  border-radius: var(--form-radius);
  background: var(--form-color-bg);
  color: var(--form-color-text);
  font-size: 15px;
  line-height: 1.6;
  resize: vertical;
  box-shadow: var(--form-shadow-field);
  transition: border-color .22s ease, box-shadow .22s ease;
  outline: none;
  -webkit-appearance: none;
  appearance: none;
  box-sizing: border-box;
}

#contact-page .uk-textarea::placeholder {
  color: var(--form-color-placeholder);
}

#contact-page .uk-textarea:focus {
  border-color: var(--form-accent);
  background: #fff;
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--form-accent) 18%, transparent);
}

/* ---------- Select (pas de classe uk-select dans ce form) ---------- */
#contact-page select {
  width: 100%;
  height: 44px;
  padding: 0 40px 0 14px;
  border: 1.5px solid var(--form-color-border);
  border-radius: var(--form-radius);
  background: var(--form-color-bg)
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%231a1a1a' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E")
    no-repeat right 14px center;
  color: var(--form-color-text);
  font-size: 15px;
  box-shadow: var(--form-shadow-field);
  outline: none;
  cursor: pointer;
  -webkit-appearance: none;
  appearance: none;
  transition: border-color .15s ease;
  box-sizing: border-box;
}

#contact-page select:hover {
  border-color: #a0aec0;
  background-color: var(--form-color-bg-hover);
}

#contact-page select:focus {
  border-color: var(--form-accent);
  background-color: #fff;
  box-shadow: none;
}

/* Label "Concession" — étiquette de champ simple */
#contact-page .uk-width-1-1 > label:first-child {
  display: block;
  margin-bottom: 6px;
  font-size: 13px;
  font-weight: 600;
  color: var(--form-color-label);
  letter-spacing: .02em;
}

/* ---------- Cases à cocher ---------- */
#contact-page .formControls > label,
#contact-page .uk-form-controls > label {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  cursor: pointer;
  font-size: 13.5px;
  color: #4b5563;
  line-height: 1.6;
}

#contact-page .uk-checkbox {
  width: 18px;
  height: 18px;
  min-width: 18px;
  border: 2px solid var(--form-color-border);
  border-radius: 5px;
  appearance: none;
  -webkit-appearance: none;
  cursor: pointer;
  background: #fff;
  transition: var(--form-transition);
  position: relative;
  margin-top: 2px;
  flex-shrink: 0;
}

#contact-page .uk-checkbox:hover {
  border-color: var(--form-accent);
}

#contact-page .uk-checkbox:checked {
  background-color: var(--form-accent) !important;
  background-image: none !important;
  border-color: var(--form-accent) !important;
}

#contact-page .uk-checkbox:checked::after {
  content: '' !important;
  display: block !important;
  position: absolute;
  left: 4px;
  top: 1px;
  width: 6px;
  height: 10px;
  border: 2px solid #fff;
  border-top: none;
  border-left: none;
  transform: rotate(45deg);
}

/* Liens RGPD dans les labels */
#contact-page .formControls > label a,
#contact-page .uk-form-controls > label a {
  color: var(--form-accent);
  text-decoration: underline;
  text-underline-offset: 2px;
}

/* ---------- Bouton d'envoi ---------- */
#contact-page #submit-contact {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 52px;
  padding: 0 32px;
  font-size: 15px;
  font-weight: 600;
  letter-spacing: .04em;
  text-transform: uppercase;
  border-radius: 6px;
  cursor: pointer;
  transition: transform .22s ease, box-shadow .22s ease;
  position: relative;
  overflow: hidden;
  -webkit-tap-highlight-color: transparent;
  box-sizing: border-box;
}

#contact-page #submit-contact::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(120deg, transparent 30%, rgba(255,255,255,.15) 50%, transparent 70%);
  transform: translateX(-100%);
  transition: transform .5s ease;
  pointer-events: none;
}

#contact-page #submit-contact:hover {
  transform: translateY(-1px);
  box-shadow: 0 6px 18px rgba(0,0,0,.18);
}

#contact-page #submit-contact:hover::before {
  transform: translateX(100%);
}

#contact-page #submit-contact:active {
  transform: translateY(0);
  box-shadow: 0 2px 6px rgba(0,0,0,.12);
}

/* Image loader pendant le submit */
#contact-page #submit-contact img {
  display: block;
  max-height: 28px;
  width: auto;
  margin: 0 auto;
  filter: brightness(0) invert(1);
}

/* État désactivé pendant le chargement */
#contact-page #submit-contact:disabled,
#contact-page #submit-contact[disabled] {
  opacity: 1 !important;
  transform: none !important;
  box-shadow: none !important;
  background-color: var(--primary-color, #1a1a1a) !important;
  color: #fff !important;
}

#contact-page #submit-contact:disabled::before,
#contact-page #submit-contact[disabled]::before {
  display: none;
}

/* ---------- Alertes ---------- */
#contact-page .form-error-msg,
#contact-page .uk-alert-danger {
  display: block;
  background: #ffffff;
  border: 1px solid #fecaca;
  border-left: 4px solid var(--form-color-error);
  border-radius: 12px;
  padding: 16px 20px 16px 52px;
  color: #374151;
  font-size: 14px;
  box-shadow: 0 2px 16px rgba(220,38,38,.1), 0 1px 4px rgba(0,0,0,.05);
  position: relative;
  animation: alertSlideIn .28s cubic-bezier(.4,0,.2,1) both,
             alertShake    .45s .28s cubic-bezier(.36,.07,.19,.97) both;
  box-sizing: border-box;
      width: 100%;
}

#contact-page .form-error-msg::before,
#contact-page .uk-alert-danger::before {
  content: '';
  position: absolute;
  left: 18px;
  top: 18px;
  width: 20px;
  height: 20px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23dc2626' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z'/%3E%3Cline x1='12' y1='9' x2='12' y2='13'/%3E%3Ccircle cx='12' cy='17' r='.5' fill='%23dc2626'/%3E%3C/svg%3E") no-repeat center / contain;
}

#contact-page .uk-alert-success,
#contact-page .success-msg {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: nowrap;
  background: linear-gradient(135deg, #f0fdf4 0%, #dcfce7 60%, #f0fdf4 100%);
  border: 1px solid #86efac;
  border-left: 4px solid var(--form-color-success);
  border-radius: 12px;
  padding: 12px 14px 12px 52px;
  color: #166534;
  font-size: 14px;
  font-weight: 500;
  line-height: 1.4;
  box-shadow: 0 2px 12px rgba(22,163,74,.12), 0 1px 3px rgba(0,0,0,.04);
  position: relative;
  animation: alertSlideIn .32s cubic-bezier(.4,0,.2,1) both;
  box-sizing: border-box;
  width:100%;
}

#contact-page .success-msg p,
#contact-page .uk-alert-success p {
  flex: 1;
  margin: 0;
  font-size: 13.5px;
  color: #166534;
}

#contact-page .uk-alert-success::before,
#contact-page .success-msg::before {
  content: '';
  position: absolute;
  left: 14px;
  top: 50%;
  transform: translateY(-50%);
  width: 26px;
  height: 26px;
  border-radius: 50%;
  background: var(--form-color-success)
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E")
    no-repeat center / 13px;
  box-shadow: 0 2px 6px rgba(22,163,74,.35);
}

/* Zone actions succès */
#contact-page .success-msg .success-actions {
  display: contents;
}

#contact-page .success-msg .success-actions .uk-button.uk-button-primary {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
  padding: 0 16px;
  height: 36px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .05em;
  text-transform: uppercase;
  border-radius: 20px;
  background-color: var(--form-color-success);
  color: #fff;
  border: none;
  text-decoration: none;
  white-space: nowrap;
  box-shadow: 0 2px 8px rgba(22,163,74,.30);
  transition: background-color .18s ease, transform .15s ease;
}

#contact-page .success-msg .success-actions .uk-button.uk-button-primary::after {
  content: '→';
  font-size: 13px;
  transition: transform .18s ease;
}

#contact-page .success-msg .success-actions .uk-button.uk-button-primary:hover {
  background-color: #15803d;
  transform: translateY(-1px);
}

#contact-page .success-msg .success-actions .uk-button.uk-button-primary:hover::after {
  transform: translateX(3px);
}

/* Span X — masqué */
#contact-page .success-msg > span {
  display: none;
}

/* État d'erreur champs — has-error sur un div parent (cas standard) */
#contact-page .has-error .uk-input,
#contact-page .has-error .uk-textarea,
#contact-page .has-error select {
  border-color: var(--form-color-error) !important;
  background-color: #fff5f5 !important;
  box-shadow: 0 0 0 3px rgba(220,38,38,.12) !important;
}

/* has-error sur le label lui-même (checkbox mention légale / RGPD) */
#contact-page label.has-error .uk-checkbox {
  border-color: var(--form-color-error) !important;
  background-color: #fff5f5 !important;
  box-shadow: 0 0 0 3px rgba(220,38,38,.12) !important;
}

/* Marges top RGPD / newsletter */
#contact-page .sw-margin-top {
  margin-top: 4px;
}

/* ============================================================
   CONTACT — MOBILE < 640px
   ============================================================ */
@media (max-width: 639px) {
  #contact-page #form-contact {
    padding: 14px 12px 20px;
    border-radius: 12px;
  }

  #contact-page .uk-input,
  #contact-page .uk-textarea,
  #contact-page select {
    height: 48px;
    font-size: 16px !important;
    border-radius: 8px;
  }

  #contact-page .uk-textarea {
    height: auto;
    min-height: 100px;
    padding: 12px 14px;
  }

  #contact-page .formControls > label,
  #contact-page .uk-form-controls > label {
    padding: 6px 0;
    font-size: 13px;
  }

  #contact-page .uk-checkbox {
    width: 20px;
    height: 20px;
    min-width: 20px;
  }

  #contact-page #submit-contact {
    height: 52px;
    font-size: 15px;
    border-radius: 8px;
  }

  #contact-page .form-error-msg,
  #contact-page .uk-alert-danger {
    padding: 14px 14px 14px 44px;
    font-size: 13px;
    border-radius: 10px;
  }

  #contact-page .uk-alert-success,
  #contact-page .success-msg {
    flex-wrap: wrap;
    padding: 12px 12px 12px 46px;
    gap: 8px;
    font-size: 13px;
    border-radius: 10px;
  }

  #contact-page .success-msg p,
  #contact-page .uk-alert-success p {
    width: 100%;
    font-size: 13px;
  }
}

/* ============================================================
   CONTACT — TRÈS PETITS ÉCRANS ≤ 360px
   ============================================================ */
@media (max-width: 360px) {
  #contact-page #form-contact {
    padding: 12px 10px 18px;
  }

  #contact-page .uk-input,
  #contact-page select {
    height: 46px;
    font-size: 15px !important;
    padding: 0 12px;
  }
}

/* ============================================================
   CONTACT — Anti-zoom iOS
   ============================================================ */
@media screen and (-webkit-min-device-pixel-ratio: 0) {
  #contact-page .uk-input,
  #contact-page .uk-textarea,
  #contact-page select {
    font-size: 16px !important;
  }
}


/* ============================================================
   MODAL CONTACT — .ContactModalNew
   Border dégradé moderne (infos_principales.inc)
   ============================================================ */
.ContactModalNew {
  border-radius: 16px;
  border: 2px solid transparent;
  background-image:
    linear-gradient(#fff, #fff),
    linear-gradient(135deg,
      var(--primary-color, #1a1a1a) 0%,
      rgba(26,26,26,.25) 55%,
      #e2e8f0 100%
    );
  background-origin: border-box;
  background-clip: padding-box, border-box;
  box-shadow:
    0 4px 6px rgba(0,0,0,.04),
    0 12px 32px rgba(0,0,0,.10);
}

#ModalContact {
  z-index: 1500 !important;
}

/* Fallback navigateurs anciens */
@supports not (background-clip: border-box) {
  .ContactModalNew {
    border: 2px solid #d1d5db;
    background-image: none;
  }
}

@media (max-width: 639px) {
  .ContactModalNew {
    border-radius: 12px;
  }
}


/* ============================================================
   FORM VÉHICULE MODAL — .ContactModalNew
   Scope : #ModalContact  (infos_principales.inc)
   Spécificité : inputs sans classe .uk-input → ciblés par type
   Bouton .BtnEnv, alertes et checkboxes → couverts par :is() global
   ============================================================ */

/* ---------- Variables (même palette que les autres forms) ---------- */
.ContactModalNew {
  --form-accent:            var(--primary-color, #1a1a1a);
  --form-radius:            10px;
  --form-color-border:      #d0d5dd;
  --form-color-bg:          #ffffff;
  --form-color-bg-hover:    #f7f7f7;
  --form-color-text:        #1a1a1a;
  --form-color-placeholder: #9ca3af;
  --form-color-label:       #374151;
  --form-color-error:       #dc2626;
  --form-color-success:     #16a34a;
  --form-shadow-field:      0 1px 3px rgba(0,0,0,.07);
  --form-transition:        all .22s cubic-bezier(.4,0,.2,1);
  --form-gap:               7px;
}


/* ---------- Inputs (class="uk-width-1-1" ou sans classe) ---------- */
.ContactModalNew .ContactFModal input[type="text"],
.ContactModalNew .ContactFModal input[type="email"],
.ContactModalNew .ContactFModal input[type="tel"] {
  width: 100%;
  height: 44px;
  padding: 0 14px;
  border: 1.5px solid var(--form-color-border);
  border-radius: var(--form-radius);
  background: var(--form-color-bg);
  color: var(--form-color-text);
  font-size: 15px;
  box-shadow: var(--form-shadow-field);
  transition: border-color .22s ease, box-shadow .22s ease;
  outline: none;
  -webkit-appearance: none;
  appearance: none;
  box-sizing: border-box;
}

.ContactModalNew .ContactFModal input[type="text"]::placeholder,
.ContactModalNew .ContactFModal input[type="email"]::placeholder,
.ContactModalNew .ContactFModal input[type="tel"]::placeholder {
  color: var(--form-color-placeholder);
}

.ContactModalNew .ContactFModal input[type="text"]:hover,
.ContactModalNew .ContactFModal input[type="email"]:hover,
.ContactModalNew .ContactFModal input[type="tel"]:hover {
  border-color: #a0aec0;
  background: var(--form-color-bg-hover);
}

.ContactModalNew .ContactFModal input[type="text"]:focus,
.ContactModalNew .ContactFModal input[type="email"]:focus,
.ContactModalNew .ContactFModal input[type="tel"]:focus {
  border-color: var(--form-accent);
  background: #fff;
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--form-accent) 18%, transparent);
}

@supports not (color: color-mix(in srgb, red 50%, blue)) {
  .ContactModalNew .ContactFModal input[type="text"]:focus,
  .ContactModalNew .ContactFModal input[type="email"]:focus,
  .ContactModalNew .ContactFModal input[type="tel"]:focus {
    box-shadow: 0 0 0 3px rgba(26,26,26,.14);
  }
}

/* ---------- Champ email avec préfixe @ (.ElemCoord) ---------- */
.ContactModalNew .ContactFModal .ElemCoord {
  display: flex;
  align-items: center;
  gap: 8px;
}

.ContactModalNew .ContactFModal .ElemCoord .adresseC {
  font-size: 16px;
  font-weight: 600;
  color: var(--form-color-label);
  flex-shrink: 0;
  line-height: 1;
}

.ContactModalNew .ContactFModal .ElemCoord input[type="text"] {
  flex: 1;
  min-width: 0;
}

/* ---------- Civilité pills (dans .formControls directement) ---------- */
.ContactModalNew .ContactFModal .formControls {
  display: flex;
  gap: 14px;
  padding: 2px 0;
  flex-wrap: wrap;
}

.ContactModalNew .ContactFModal label.fb-radio {
  flex: 1;
  display: flex !important;
  align-items: center !important;
  justify-content: center;
  gap: 10px;
  cursor: pointer;
  font-size: 15px;
  font-weight: 500;
  color: #374151;
  min-height: 35px;
  padding: 0 12px;
  border: 1.5px solid var(--form-color-border);
  border-radius: 50px;
  background: #fff;
  box-shadow: 0 1px 4px rgba(0,0,0,.06);
  transition: border-color .2s ease, background .2s ease, color .2s ease;
  user-select: none;
  line-height: 1;
  max-width: 130px;
}

.ContactModalNew .ContactFModal label.fb-radio:has(.uk-radio:checked) {
  border-color: var(--form-accent);
  color: #1a1a1a;
  font-weight: 600;
}

/* ---------- Label "Message" simple ---------- */
.ContactModalNew .ContactFModal .MessageContact > label:first-child {
  display: block;
  margin-bottom: 6px;
  font-size: 13px;
  font-weight: 600;
  color: var(--form-color-label);
}

/* ---------- Erreur champs ---------- */
.ContactModalNew .ContactFModal .has-error input[type="text"],
.ContactModalNew .ContactFModal .has-error input[type="email"],
.ContactModalNew .ContactFModal .has-error input[type="tel"],
.ContactModalNew .ContactFModal .has-error .uk-textarea {
  border-color: var(--form-color-error) !important;
  background: #fff5f5 !important;
  box-shadow: 0 0 0 3px rgba(220,38,38,.12) !important;
}

/* ============================================================
   MODAL CONTACT — MOBILE < 640px
   ============================================================ */
@media (max-width: 639px) {
  .ContactModalNew .ContactFModal input[type="text"],
  .ContactModalNew .ContactFModal input[type="email"],
  .ContactModalNew .ContactFModal input[type="tel"] {
    height: 48px;
    font-size: 16px !important;
    border-radius: 8px;
  }

  .ContactModalNew .ContactFModal .formControls {
    gap: 10px;
  }

  .ContactModalNew .ContactFModal label.fb-radio {
    max-width: none;
    min-height: 44px;
    font-size: 14px;
  }
}

/* ============================================================
   MODAL CONTACT — Anti-zoom iOS
   ============================================================ */
@media screen and (-webkit-min-device-pixel-ratio: 0) {
  .ContactModalNew .ContactFModal input[type="text"],
  .ContactModalNew .ContactFModal input[type="email"],
  .ContactModalNew .ContactFModal input[type="tel"] {
    font-size: 16px !important;
  }
}


/* ============================================================
   FORMULAIRE CONNEXION — #frm_connexion
   Scope : mod_vgrf_login/default.php
   Inputs sans classe → ciblés par type
   Bouton sans BtnEnv → ciblé par #submit-login
   ============================================================ */

/* ---------- Variables ---------- */
#frm_connexion {
  --form-accent:            var(--primary-color, #1a1a1a);
  --form-radius:            10px;
  --form-color-border:      #d0d5dd;
  --form-color-bg:          #ffffff;
  --form-color-bg-hover:    #f7f7f7;
  --form-color-text:        #1a1a1a;
  --form-color-placeholder: #9ca3af;
  --form-color-label:       #374151;
  --form-color-error:       #dc2626;
  --form-shadow-field:      0 1px 3px rgba(0,0,0,.07);
}

/* ---------- Conteneur — carte avec border dégradé ---------- */
#frm_connexion .ConnexionDonnes {
  background: #fff;
  border-radius: 16px;
  padding: 18px 22px;
  border: 2px solid transparent;
  background-image:
    linear-gradient(#fff, #fff),
    linear-gradient(135deg,
      var(--primary-color, #1a1a1a) 0%,
      rgba(26,26,26,.25) 55%,
      #e2e8f0 100%
    );
  background-origin: border-box;
  background-clip: padding-box, border-box;
  box-shadow: 0 4px 6px rgba(0,0,0,.04), 0 12px 32px rgba(0,0,0,.10);
}

@supports not (background-clip: border-box) {
  #frm_connexion .ConnexionDonnes {
    border: 2px solid #d1d5db;
    background-image: none;
    background-color: #fff;
  }
}

/* ---------- Labels ---------- */
#frm_connexion .ConnexionDonnes label {
  display: block;
  margin-bottom: 5px;
  font-size: 12px;
  font-weight: 600;
  color: var(--form-color-label);
  letter-spacing: .04em;
  text-transform: uppercase;
}

/* ---------- Inputs (text + password — aucune classe dans le HTML) ---------- */
#frm_connexion input[type="text"],
#frm_connexion input[type="password"] {
  width: 100%;
  height: 46px;
  padding: 0 14px 0 40px;
  border: 1.5px solid var(--form-color-border);
  border-radius: var(--form-radius);
  background: var(--form-color-bg);
  color: var(--form-color-text);
  font-size: 15px;
  box-shadow: var(--form-shadow-field);
  transition: border-color .22s ease, box-shadow .22s ease;
  outline: none;
  -webkit-appearance: none;
  appearance: none;
  box-sizing: border-box;
}
/* Icone email / cadenas dans chaque champ : les 2 wrappers (email,
   mot de passe) partagent la meme structure (div > label + input) et ne
   different QUE par la classe "uk-grid-margin" (absente sur le champ
   email, presente sur le champ mot de passe juste apres) — seul moyen
   fiable de les cibler individuellement sans modifier le HTML. */
#Mcompte .ConnexionDonnes .uk-width-1-4\@m {
  position: relative;
}
/* L icone (email/cadenas) est positionnee en absolute a left:13px DANS
   le champ, mais l input n avait pas de padding-left pour lui laisser
   la place : le texte saisi venait recouvrir l icone. On reserve donc
   40px a gauche sur l input correspondant. */
#Mcompte .ConnexionDonnes .uk-width-1-4\@m input {
  padding-left: 40px !important;
}
#Mcompte .ConnexionDonnes .uk-width-1-4\@m::before {
  content: "";
  position: absolute;
  left: 13px;
  bottom: 13px;
  width: 18px;
  height: 18px;
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
  opacity: .55;
  pointer-events: none;
}
#Mcompte .ConnexionDonnes .uk-width-1-4\@m:not(.uk-grid-margin)::before {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23374151' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 4h16v16H4z'/%3E%3Cpath d='M4 6l8 7 8-7'/%3E%3C/svg%3E");
}
#Mcompte .ConnexionDonnes .uk-width-1-4\@m.uk-grid-margin::before {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23374151' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='5' y='11' width='14' height='9' rx='2'/%3E%3Cpath d='M8 11V8a4 4 0 0 1 8 0v3'/%3E%3C/svg%3E");
}

#frm_connexion input[type="text"]:hover,
#frm_connexion input[type="password"]:hover {
  border-color: #a0aec0;
  background: var(--form-color-bg-hover);
}

#frm_connexion input[type="text"]:focus,
#frm_connexion input[type="password"]:focus {
  border-color: var(--form-accent);
  background: #fff;
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--form-accent) 18%, transparent);
}

@supports not (color: color-mix(in srgb, red 50%, blue)) {
  #frm_connexion input[type="text"]:focus,
  #frm_connexion input[type="password"]:focus {
    box-shadow: 0 0 0 3px rgba(26,26,26,.14);
  }
}

/* ---------- Bloc liens — une seule ligne, aligné avec les inputs ---------- */
#frm_connexion .ConnexionDonnes .uk-width-1-3\@m {
  display: flex;
  flex-direction: row;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px 16px;
  padding-top: 22px; /* compense label + margin pour aligner avec les inputs */
}

/* Masquer le <br> si présent */
#frm_connexion .ConnexionDonnes .uk-width-1-3\@m br {
  display: none;
}

/* Tous les liens — style simple, pas de pill */
#frm_connexion .ConnexionDonnes .uk-width-1-3\@m a,
#frm_connexion .ConnexionDonnes .uk-width-1-3\@m span a {
  font-size: 13px;
  font-weight: 500;
  color: var(--form-accent);
  text-decoration: underline;
  text-underline-offset: 3px;
  text-decoration-thickness: 1px;
  transition: opacity .15s ease;
  white-space: nowrap;
}

#frm_connexion .ConnexionDonnes .uk-width-1-3\@m a:hover,
#frm_connexion .ConnexionDonnes .uk-width-1-3\@m span a:hover {
  opacity: .7;
}

/* Séparateur visuel entre les deux liens */
#frm_connexion .ConnexionDonnes .uk-width-1-3\@m span {
  display: inline-flex;
  align-items: center;
  gap: 0;
}

#frm_connexion .ConnexionDonnes .uk-width-1-3\@m span::before {
  content: '·';
  margin-right: 16px;
  color: #d1d5db;
  font-size: 16px;
  line-height: 1;
}

/* ---------- Bouton Valider ---------- */
#frm_connexion #submit-login {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 44px;
  padding: 0 24px;
  font-size: 14px;
  font-weight: 600;
  letter-spacing: .04em;
  text-transform: uppercase;
  border-radius: var(--form-radius);
  cursor: pointer;
  transition: transform .22s ease, box-shadow .22s ease;
  position: relative;
  overflow: hidden;
  -webkit-tap-highlight-color: transparent;
  box-sizing: border-box;
}

#frm_connexion #submit-login:hover {
  transform: translateY(-1px);
  box-shadow: 0 6px 18px rgba(0,0,0,.18);
}

#frm_connexion #submit-login:active {
  transform: translateY(0);
  box-shadow: 0 2px 6px rgba(0,0,0,.12);
}

#frm_connexion #submit-login img {
  display: block;
  max-height: 24px;
  width: auto;
  margin: 0 auto;
  filter: brightness(0) invert(1);
}

#frm_connexion #submit-login:disabled,
#frm_connexion #submit-login[disabled] {
  opacity: 1 !important;
  cursor: wait;
  transform: none !important;
  box-shadow: none !important;
  background-color: var(--primary-color, #1a1a1a) !important;
  color: #fff !important;
}

/* ---------- Message d'erreur ---------- */
#frm_connexion .error-msg {
  background: #ffffff;
  border: 1px solid #fecaca;
  border-left: 4px solid var(--form-color-error);
  border-radius: 10px;
  padding: 12px 14px 12px 44px;
  color: #374151;
  font-size: 13.5px;
  position: relative;
  animation: alertSlideIn .28s cubic-bezier(.4,0,.2,1) both;
  display: none;
}

#frm_connexion .error-msg:not(:empty) {
  display: block;
}

#frm_connexion .error-msg::before {
  content: '';
  position: absolute;
  left: 14px;
  top: 14px;
  width: 18px;
  height: 18px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23dc2626' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z'/%3E%3Cline x1='12' y1='9' x2='12' y2='13'/%3E%3Ccircle cx='12' cy='17' r='.5' fill='%23dc2626'/%3E%3C/svg%3E") no-repeat center / contain;
}

/* ============================================================
   CONNEXION — MOBILE < 640px
   ============================================================ */
@media (max-width: 639px) {
  #frm_connexion .ConnexionDonnes {
    border-radius: 12px;
    padding: 16px 14px 20px;
  }

  #frm_connexion input[type="text"],
  #frm_connexion input[type="password"] {
    height: 48px;
    font-size: 16px !important;
  }

  #frm_connexion #submit-login {
    height: 50px;
    font-size: 15px;
    margin-top: 8px;
  }

  /* Liens mobile */
  #frm_connexion .ConnexionDonnes .uk-width-1-3\@m {
    padding-top: 4px;
    gap: 4px 12px;
  }

  #frm_connexion .ConnexionDonnes .uk-width-1-3\@m a,
  #frm_connexion .ConnexionDonnes .uk-width-1-3\@m span a {
    font-size: 12px;
  }

  #frm_connexion .ConnexionDonnes .uk-width-1-3\@m span::before {
    margin-right: 12px;
  }
}

/* ============================================================
   CONNEXION — Anti-zoom iOS
   ============================================================ */
@media screen and (-webkit-min-device-pixel-ratio: 0) {
  #frm_connexion input[type="text"],
  #frm_connexion input[type="password"] {
    font-size: 16px !important;
  }
}


/* ============================================================
   FORMULAIRE COMPTE / MES DONNÉES — .MesDonnes
   Scope : default_mesdonnes.php
   Spécificités vs simple.php :
   - Blocs en .ElementDonnes (pas .rsform-block)
   - Inputs dans uk-grid sans .formControls wrapper
   - Bouton sans .BtnEnv → #submit-compte
   ============================================================ */

/* ---------- Variables ---------- */
.MesDonnes {
  --form-accent:            var(--primary-color, #1a1a1a);
  --form-radius:            10px;
  --form-color-border:      #d0d5dd;
  --form-color-bg:          #ffffff;
  --form-color-bg-hover:    #f7f7f7;
  --form-color-text:        #1a1a1a;
  --form-color-placeholder: #9ca3af;
  --form-color-label:       #374151;
  --form-color-error:       #dc2626;
  --form-color-success:     #16a34a;
  --form-shadow-field:      0 1px 3px rgba(0,0,0,.07);
  --form-transition:        all .22s cubic-bezier(.4,0,.2,1);
  --form-gap:               7px;
}

/* ---------- Titre h2 ---------- */
#frm_createcompte h2 {
  font-size: 20px;
  font-weight: 700;
  color: #111827;
  margin: 0 0 18px;
  padding-bottom: 12px;
  border-bottom: 2px solid var(--form-accent, #1a1a1a);
  letter-spacing: -.01em;
}

/* ---------- Espacement uniforme entre blocs ---------- */
#frm_createcompte .ElementDonnes {
  margin-bottom: var(--form-gap);
  box-sizing: border-box;
}

/* ---------- Inputs directs dans .ElementDonnes (sans wrapper intermédiaire) ---------- */
#frm_createcompte .ElementDonnes > .uk-input,
#frm_createcompte .ElementDonnes.ElemMail .uk-input {
  display: block;
  width: 100%;
  box-sizing: border-box;
}

/* ---------- Inputs dans les colonnes uk-grid (pas de .formControls) ---------- */
#frm_createcompte .ElementDonnes .uk-width-1-2 .uk-input,
#frm_createcompte .ElementDonnes .uk-width-1-2\@s .uk-input,
#frm_createcompte .ElementDonnes .uk-width-3-5 .uk-input,
#frm_createcompte .ElementDonnes .uk-width-1-3 .uk-input,
#frm_createcompte .ElementDonnes .uk-width-2-3 .uk-input {
  width: 100%;
  box-sizing: border-box;
}

/* ---------- Grille interne : même gap que simple.php ---------- */
#frm_createcompte .ElementDonnes.uk-grid-small {
  margin-left: calc(-1 * var(--form-gap));
}
#frm_createcompte .ElementDonnes.uk-grid-small > * {
  padding-left: var(--form-gap);
  box-sizing: border-box;
}
#frm_createcompte .ElementDonnes.uk-grid-collapse {
  margin-left: 0;
}
#frm_createcompte .ElementDonnes.uk-grid-collapse > * {
  padding-left: 0;
}

/* ---------- Civilité pills — .fb-radio-group ---------- */
.MesDonnes .fb-radio-group {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  padding: 2px 0;
}

.MesDonnes .fb-radio-group label.fb-radio {
  flex: 1;
  display: inline-flex !important;
  align-items: center !important;
  gap: 8px;
  padding: 0 14px;
  min-height: 40px;
  border: 1.5px solid var(--form-color-border);
  border-radius: 50px;
  cursor: pointer;
  font-size: 14px;
  font-weight: 500;
  color: #374151;
  background: #fff;
  box-shadow: 0 1px 3px rgba(0,0,0,.06);
  transition: border-color .18s ease, background .18s ease;
  user-select: none;
  min-width: 88px;
  max-width: 140px;
  white-space: nowrap;
}

.MesDonnes .fb-radio-group label.fb-radio:hover {
  border-color: var(--form-accent);
}

.MesDonnes .fb-radio-group label.fb-radio:has(.uk-radio:checked) {
  border-color: var(--form-accent);
  background: color-mix(in srgb, var(--form-accent) 6%, #fff);
  font-weight: 600;
  color: #1a1a1a;
}

@supports not (color: color-mix(in srgb, black 10%, white)) {
  .MesDonnes .fb-radio-group label.fb-radio:has(.uk-radio:checked) {
    background: #f0f4ff;
  }
}

/* ---------- Labels checkbox RGPD directs dans .ElementDonnes ---------- */
#frm_createcompte .ElementDonnes > label {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  cursor: pointer;
  font-size: 13.5px;
  color: #4b5563;
  line-height: 1.6;
}

#frm_createcompte .ElementDonnes > label a {
  color: var(--form-accent);
  text-decoration: underline;
  text-underline-offset: 2px;
}

/* Labels RGPD newsletter dans .formControls */
#frm_createcompte .formControls > label,
#frm_createcompte .uk-form-controls > label {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  cursor: pointer;
  font-size: 13.5px;
  color: #4b5563;
  line-height: 1.6;
}

#frm_createcompte .formControls > label a,
#frm_createcompte .uk-form-controls > label a {
  color: var(--form-accent);
  text-decoration: underline;
  text-underline-offset: 2px;
}

/* ---------- Champ téléphone .ElemTow — indicatif + input ---------- */
#frm_createcompte .ElemTow {
  display: flex;
  align-items: stretch;
}

#frm_createcompte .ElemTow .uk-width-1-3 {
  display: flex;
  align-items: center;
  gap: 4px;
  padding: 0 10px;
  height: 44px;
  background: #f9fafb;
  border: 1.5px solid var(--form-color-border);
  border-right: none;
  border-radius: var(--form-radius) 0 0 var(--form-radius);
  flex-shrink: 0;
  box-sizing: border-box;
}

#frm_createcompte .ElemTow .uk-width-2-3 {
  flex: 1;
  min-width: 0;
}

#frm_createcompte .ElemTow .inputTow {
  border-radius: 0 var(--form-radius) var(--form-radius) 0 !important;
  width: 100% !important;
  box-sizing: border-box !important;
}

/* ---------- Champ date avec icône calendrier ---------- */
#frm_createcompte .datepick {
  position: relative;
}

#frm_createcompte .datepick .iconcalendar {
  position: absolute;
  right: 12px;
  top: 50%;
  transform: translateY(-50%);
  pointer-events: none;
  color: #9ca3af;
}

#frm_createcompte .datepick .uk-input {
  padding-right: 40px;
}

/* ---------- Séparateur visuel ville / CP (.DivOu) ---------- */
#frm_createcompte .DivOu {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  flex-shrink: 0;
  font-size: 11px;
  color: #d1d5db;
  font-weight: 600;
  letter-spacing: .05em;
}

/* ---------- Jauge force du mot de passe ---------- */
#frm_createcompte #passstrength {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  padding: 2px 0 4px;
}

#frm_createcompte #passstrength .txt_strength {
  font-size: 12px;
  font-weight: 500;
  color: #6b7280;
  margin-right: 2px;
  white-space: nowrap;
}

#frm_createcompte #passstrength .rectangle {
  display: inline-block;
  height: 5px;
  width: 40px;
  border-radius: 3px;
  background: #e5e7eb;
  transition: background .3s ease;
}

#frm_createcompte .TextSecurite {
  font-size: 11.5px;
  color: #9ca3af;
  line-height: 1.5;
}

/* ---------- Bouton Enregistrer — pleine largeur (même style que BtnEnv) ---------- */
#submit-compte {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 52px;
  padding: 0 32px;
  font-size: 15px;
  font-weight: 600;
  letter-spacing: .04em;
  text-transform: uppercase;
  border-radius: var(--form-radius);
  cursor: pointer;
  transition: transform .22s ease, box-shadow .22s ease;
  -webkit-tap-highlight-color: transparent;
  box-sizing: border-box;
}

#submit-compte:hover {
  transform: translateY(-1px);
  box-shadow: 0 6px 20px rgba(0,0,0,.18);
}

#submit-compte:active {
  transform: scale(.98);
  box-shadow: 0 2px 8px rgba(0,0,0,.14);
}

#submit-compte img {
  display: block;
  max-height: 28px;
  width: auto;
  margin: 0 auto;
  filter: brightness(0) invert(1);
}

#submit-compte:disabled,
#submit-compte[disabled] {
  opacity: 1 !important;
  cursor: wait;
  transform: none !important;
  box-shadow: none !important;
  background-color: var(--primary-color, #1a1a1a) !important;
  color: #fff !important;
}

/* ---------- Zone bouton + suppression compte ---------- */
#frm_createcompte .ElementDonnes.uk-text-center {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
}

/* ============================================================
   MES DONNÉES — MOBILE < 640px
   ============================================================ */
@media (max-width: 639px) {
  #frm_createcompte h2 {
    font-size: 17px;
    margin-bottom: 14px;
  }

  #frm_createcompte .ElementDonnes {
    margin-bottom: 8px;
  }

  /* Colonnes en pleine largeur */
  #frm_createcompte .ElementDonnes.uk-grid-small > *,
  #frm_createcompte .ElementDonnes.uk-grid-collapse > * {
    width: 100% !important;
    max-width: 100% !important;
    flex: none !important;
    padding-left: 0 !important;
  }
  #frm_createcompte .ElementDonnes.uk-grid-small {
    margin-left: 0;
  }

  /* Civilité pills */
  .MesDonnes .fb-radio-group {
    gap: 8px;
  }
  .MesDonnes .fb-radio-group label.fb-radio {
    max-width: none;
    min-height: 44px;
    font-size: 13.5px;
    padding: 0 10px;
  }

  /* Téléphone */
  #frm_createcompte .ElemTow .uk-width-1-3 {
    height: 48px;
  }

  /* Bouton */
  #submit-compte {
    height: 52px;
    font-size: 15px;
    border-radius: 8px;
  }
}

/* ============================================================
   MES DONNÉES — TRÈS PETITS ÉCRANS ≤ 360px
   ============================================================ */
@media (max-width: 360px) {
  #frm_createcompte h2 {
    font-size: 16px;
  }

  .MesDonnes .fb-radio-group label.fb-radio {
    font-size: 13px;
    padding: 0 8px;
    gap: 6px;
  }
}

/* ============================================================
   MES DONNÉES — Anti-zoom iOS
   ============================================================ */
@media screen and (-webkit-min-device-pixel-ratio: 0) {
  .MesDonnes .uk-input,
  .MesDonnes .uk-select,
  .MesDonnes .uk-textarea {
    font-size: 16px !important;
  }
}



/* ============================================================
   Formulaire Mobile après envoi - Message de confirmation et CTA
   ============================================================ */
 @media (max-width: 767px) {
    .success-msg .success-actions .uk-button {
        width: 100% !important;
        min-height: 44px !important;

  text-align: center !important;

        line-height: 1.3 !important;

        white-space: normal !important;
    }
}

.type-financement {
    cursor: pointer;
}


.home .uk-container{
    width: 100% !important;
    /* box-sizing:border-box manquant -> le padding (15px de chaque cote,
       via theme.css) s ajoutait A LA largeur de 100%, provoquant un
       debordement horizontal de 30px sur mobile (scrollWidth 420px pour
       un viewport de 390px, verifie). Corrige ici sans toucher au reste
       du theme. */
    box-sizing: border-box !important;
}

/* ============================================================
   SELECTION DE LA SEMAINE — .NotreSelectionHome (mod_vgrf_selection)
   Scope : modules/mod_vgrf_selection/tmpl/default.php
   Cards partagees avec le reste du site (.NotreSelecSub, deja stylees
   dans theme.css) : on modernise ici sans dupliquer (rayons, ombres,
   hover, badges, fleches, animation d apparition douce).
   ============================================================ */
.NotreSelectionHome {
  --sel-radius: 16px;
  --sel-shadow: 0 4px 16px rgba(0, 0, 0, 0.06);
  --sel-shadow-hover: 0 16px 40px rgba(0, 0, 0, 0.14);
  --sel-duration: 260ms;
  --sel-ease: cubic-bezier(0.22, 1, 0.36, 1);
  padding-left: 20px;
  padding-right: 20px;
  box-sizing: border-box;
}

.NotreSelectionHome h2 {
  text-align: center;
  font-size: 26px;
  font-weight: 800;
  letter-spacing: -0.01em;
}

.NotreSelectionHome .financement_vehicule .financement_vehicule_type {
    width: 100% !important;
}

/* ---------- Carte vehicule ---------- */
/* En colonne + hauteur pleine (le <li> parent est deja mis a egalite de
   hauteur par uk-height-match) afin que le bouton "En savoir plus" soit
   toujours ancre en bas, meme quand une carte a plus de badges qu une
   autre (ex. "Hybride rechargeable..." sur 2 lignes). */
.NotreSelectionHome .uk-slider-items {
  /* Si un seul vehicule est en vedette (ou moins que la capacite d une
     ligne), la carte restait collee a gauche avec du vide a droite :
     meme correctif que .SliderHome, centrer la ligne entiere est sans
     danger pour la logique de translation du slider (UIkit agit via
     transform sur ce meme element).
     IMPORTANT : cet element porte aussi la classe .uk-grid, qui lui
     applique une marge negative (-30px, voire -40px a partir de
     1200px, cf. uikit.css) pour sa gouttiere — il est donc decale vers
     la gauche et plus large que son viewport visible. Sans neutraliser
     cette marge, justify-content:center centre l item DANS cette boite
     decalee/trop large, pas dans la zone reellement visible du slider
     (c est exactement ce qui faisait echouer ce correctif ici, deja vu
     et corrige sur .SliderHome juste en dessous). */
  margin-left: 0 !important;
  /* justify-content:center ne doit s appliquer QUE quand la ligne ne
     deborde pas (peu de vehicules en vedette) : applique sans
     condition, ca centrait aussi le cas NORMAL (plus de vehicules que
     la capacite d une vue), et centrer une ligne flex qui deborde la
     fait deborder SYMETRIQUEMENT des 2 cotes — exactement le bug
     constate sur capture mobile (bout de carte visible a gauche ET a
     droite au lieu d 1 seule carte pile dans le cadre). Meme correctif
     que .SliderHome juste en dessous : centrage via :has() uniquement
     quand le slider ne contient qu 1 carte (jamais plus en mobile, vu
     que uk-child-width-1-1 force 1 colonne). */
  justify-content: flex-start;
}
.NotreSelectionHome .uk-slider-items:has(> li:first-child:last-child),
.NotreSelectionHome .uk-slider-items:has(> li:first-child:nth-last-child(2)),
.NotreSelectionHome .uk-slider-items:has(> li:first-child:nth-last-child(3)) {
  justify-content: center;
}
.NotreSelectionHome .uk-slider-items > li {
  display: flex;
  height: 100%;
}
.NotreSelectionHome .NotreSelecSub {
  display: flex;
  flex-direction: column;
  width: 100%;
  height: 100%;
  /* uk-height-match (UIkit) n egalise pas fiablement la hauteur des cartes
     dans ce slider (constate visuellement : boutons "En savoir plus" a
     des hauteurs differentes selon le nombre de lignes de badges/le
     financement affiche ou non). Une hauteur minimale commune, combinee
     au flex-column + margin-top:auto du bouton plus bas, garantit un
     alignement horizontal des CTA quel que soit le contenu de la carte.
     Valeur mesuree reellement (hauteur naturelle de la carte la plus
     haute, titre 1 ligne + 4 badges + prix), pas une estimation. */
  background: #fff;
  border-radius: var(--sel-radius);
  box-shadow: var(--sel-shadow);
  overflow: hidden;
  transition: box-shadow var(--sel-duration) var(--sel-ease),
              transform var(--sel-duration) var(--sel-ease);
  will-change: transform;
}
.NotreSelectionHome .NotreSelecSub > .uk-position-relative {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  min-height: 0;
}
@media (hover: hover) {
  .NotreSelectionHome .NotreSelecSub:hover {
    box-shadow: var(--sel-shadow-hover);
    transform: translateY(-4px);
  }
}

/* Image : zoom discret au survol de la carte, jamais deformee */
.NotreSelectionHome .ImgVoitureEqui {
  overflow: hidden;
  border-radius: var(--sel-radius) var(--sel-radius) 0 0;
  position: relative;
}
.NotreSelectionHome .ImgVoitureEqui img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 500ms var(--sel-ease);
}
@media (hover: hover) {
  .NotreSelectionHome .NotreSelecSub:hover .ImgVoitureEqui img {
    transform: scale(1.06);
  }
  /* Page liste vehicules (.vehicules) : le zoom au survol deplace/zoome
     la photo dans le slider, ce qui n est pas voulu ici (juste les
     fleches du slider doivent fonctionner, l image ne doit pas bouger).
     L attribut HTML [uk-cover] a ete retire du template (remplace par
     object-fit:contain + position:static, voir plus bas), donc plus
     besoin de reappliquer de translate(-50%,-50%) ici : ce recadrage
     etait justement la cause du "zoom" signale sur /occasion au survol
     (la regle ci-dessous le reactivait a chaque :hover). On neutralise
     simplement le transform. */
  .vehicules .NotreSelectionHome .NotreSelecSub:hover .ImgVoitureEqui img {
    transform: none !important;
  }
}
.vehicules .NotreSelectionHome .ImgVoitureEqui img {
  transition: none !important;
}
/* Etiquettes deja presentes dans le DOM en haut de l image ("Audi
   Occasion :plus", "Occasions Garanties") : transformees en badge
   flottant premium plutot qu un texte brut colle sur la photo. */
.NotreSelectionHome .ImgVoitureEqui > a > span,
.NotreSelectionHome .ImgVoitureEqui .remiseNew {
  position: absolute;
  top: 12px;
  left: 12px;
  z-index: 2;
  padding: 5px 12px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.95);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.02em;
}

.NotreSelectionHome .TitreVoitureEquivalent {
  font-size: 16px;
  font-weight: 700;
  line-height: 1.3;
}

/* Caracteristiques en badges pilules, alignees, jamais coupees */
.NotreSelectionHome .CaractTopFiche {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  padding: 2px 16px 12px;
    justify-content: center;
}
.NotreSelectionHome .CaractTopFiche > span {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 10px;
  border-radius: 999px;
  font-size: 11px;
 
  color: #3a3d40;
  white-space: nowrap;
}

/* Bloc prix : le prix comptant se detache nettement du financement */
.NotreSelectionHome .PrixVoitureNew {
  padding: 0px 16px 4px;
  border-top: 1px solid rgba(0, 0, 0, 0.06);
  padding-left: 0;
  padding-right: 0;
  padding-top: 15px;
}
.NotreSelectionHome .PrixTTC span:first-child {
  display: block;
  font-size: 10.5px;
  color: #6b7075;
  margin-bottom: 2px;
}
.NotreSelectionHome .PrixSubListe {
  font-size: 18px;
  font-weight: 800;
}
.NotreSelectionHome .SeparOu {
  font-size: 11px;
  color: #9aa0a6;
  font-weight: 600;
  align-self: center;
}
/* "En Location avec Option d'Achat à partir de" : phrase complete, sans
   troncature ni chevauchement avec le badge "Ou", grace a un retour a
   la ligne propre et une largeur dediee a la colonne financement. */
.NotreSelectionHome .PrixVoitureNew {
  align-items: flex-start;
}
.NotreSelectionHome .PrixLoa {
  text-align: right;
}
.NotreSelectionHome .PrixLoa .InfoTypeFinance {
  display: block;
  font-size: 10px;
  line-height: 1.35;
  color: #6b7075;
  white-space: normal;
  overflow-wrap: break-word;
  margin-bottom: 2px;
}
/* Icone info (cercle "i"), meme correctif que .vehicule .PrixVoitureListe
   .PrixCredit .infoPrixN (fiche vehicule) : l icone etait invisible ici
   aussi, meme cause racine identifiee en navigateur reel (Playwright) —
   un conteneur flex imbrique dans un parent inline/flex calcule une
   largeur "auto" a 0px sans qu aucune regle ne fixe 0 explicitement. On
   fixe donc une taille EXPLICITE sur le conteneur lui-meme (pas
   seulement sur le svg) et on bloque le retrecissement flex. */
.NotreSelectionHome .PrixLoa .infoPrixN {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  width: 16px !important;
  height: 16px !important;
  flex: 0 0 16px !important;
  margin-left: 4px;
  cursor: pointer;
}
.NotreSelectionHome .PrixLoa .infoPrixN svg {
  width: 13px;
  height: 13px;
  flex-shrink: 0;
}
.NotreSelectionHome .PrixLoa .PrixSubListe {
  font-size: 15px;
  white-space: nowrap;
}

/* CTA : pleine largeur, arrondi, effet de survol coherent avec le reste
   du site (translateY + ombre), sans jamais changer la couleur de la
   marque (le bouton garde le style .uk-button-primary du theme). Toujours
   colle en bas de carte via margin-top:auto (cf. flex-column ci-dessus). */
.NotreSelectionHome .BtnSection {
  padding: 14px 16px 18px;
}
.NotreSelectionHome .BtnSection .uk-button {
  width: 100%;
  border-radius: 999px;
  font-weight: 700;
  letter-spacing: 0.01em;
  transition: transform var(--sel-duration) var(--sel-ease),
              box-shadow var(--sel-duration) var(--sel-ease);
}
@media (hover: hover) {
  .NotreSelectionHome .BtnSection .uk-button:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 20px rgba(0, 0, 0, 0.16);
  }
}

/* ---------- Fleches de navigation du slider ---------- */
.NotreSelectionHome .btnNavHome {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.14);
  color: var(--color-text, #16181a);
  transition: background-color var(--sel-duration) var(--sel-ease),
              transform var(--sel-duration) var(--sel-ease);
  opacity: 1 !important; /* certains themes les rendaient quasi invisibles */
}
@media (hover: hover) {
  .NotreSelectionHome .btnNavHome:hover {
    background: linear-gradient(135deg, #26282b 0%, #101113 100%);
    color: #fff;
    transform: translateY(-50%) scale(1.06);
  }
}

/* ---------- Entete : titre + lien "Voir toutes les voitures..." sur la
   meme ligne, meme principe que .BonnesAffairesHead/.BonnesAffairesLien
   (titre centre sur toute la largeur, lien positionne en haut a droite
   en absolu, couleur de la marque de la concession). ---------- */
.NotreSelectionHead {
  position: relative;
  text-align: center;
  margin-bottom: 28px;
}
.NotreSelectionHead h2 {
  margin: 0;
}
.NotreSelectionHome .NotreSelectionLien {
  position: absolute;
  right: 0;
  top: 6px;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-weight: 700;
  font-size: 14px;
  color: var(--nav-primary, var(--color-primary, #16181a));
  text-decoration: none;
  white-space: nowrap;
  padding-bottom: 2px;
  border-bottom: 1.5px solid transparent;
  transition: border-color 160ms ease, gap 160ms ease;
}
@media (hover: hover) {
  .NotreSelectionHome .NotreSelectionLien:hover {
    border-color: currentColor;
    gap: 10px;
  }
}

/* ---------- Pied de liste : mention credit a gauche, CTA VRAIMENT
   centre dans toute la largeur du bloc (pas juste "a droite" via
   justify-content:space-between, qui ne centre rien). La mention
   credit est positionnee en absolu pour ne pas entrer dans le calcul
   du centrage du CTA, qui reste donc un bloc normal avec margin:auto. ---------- */
.NotreSelectionFoot {
  position: relative;
  min-height: 40px;
  padding-left: 0;
}
.NotreSelectionHome .NotreSelectionLienFoot {
  position: static;
  top: auto;
  right: auto;
  display: block;
  width: fit-content;
  margin: 0 0 0 auto;
}
.NotreSelectionCredit {
  display: flex !important;
  align-items: center;
  gap: 6px;
  margin: 0;
  padding: 0;
  background: none;
  border: none;
  color: var(--color-muted, #6b7075);
  text-align: left;
}
.NotreSelectionCredit .uk-icon {
  flex-shrink: 0;
  color: var(--color-muted, #6b7075);
}
@media (min-width: 640px) {
  .NotreSelectionCredit {
    position: absolute;
    left: 0;
    top: 50%;
    transform: translateY(-50%);
    max-width: 48%;
  }

}
@media (max-width: 639px) {
  .NotreSelectionFoot {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 14px;
    text-align: center;
  }
  .NotreSelectionCredit {
    justify-content: center;
    text-align: center;
  }
  .NotreSelectionHome .BtnSection {
    margin-top: 0px;
  }
    .NotreSelectionHome .NotreSelectionLienFoot {
 
  margin: 0 0 0 0;
}
}

/* ---------- Pagination (points) : switcher les vehicules en vedette,
   meme principe que .SliderHome.SliderHomeDots ---------- */
.NotreSelectionHome .NotreSelectionDots {
  margin-top: 16px;
  gap: 8px;
}
.NotreSelectionHome .NotreSelectionDots > * > * {
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: var(--color-border, #e4e6ea);
  transition: background-color var(--sel-duration, 260ms) ease,
              transform var(--sel-duration, 260ms) ease;
}
.NotreSelectionHome .NotreSelectionDots > .uk-active > * {
  background: var(--nav-primary, var(--color-primary, #16181a));
  transform: scale(1.15);
}

/* ---------- Animation d apparition douce a l affichage ---------- */
@keyframes selFadeUp {
  from { opacity: 0; transform: translateY(14px); }
  to   { opacity: 1; transform: translateY(0); }
}
.NotreSelectionHome .uk-slider-items > li {
  animation: selFadeUp 480ms var(--sel-ease) both;
}
.NotreSelectionHome .uk-slider-items > li:nth-child(1) { animation-delay: 0ms; }
.NotreSelectionHome .uk-slider-items > li:nth-child(2) { animation-delay: 60ms; }
.NotreSelectionHome .uk-slider-items > li:nth-child(3) { animation-delay: 120ms; }
.NotreSelectionHome .uk-slider-items > li:nth-child(4) { animation-delay: 180ms; }
.NotreSelectionHome .uk-slider-items > li:nth-child(5) { animation-delay: 240ms; }
@media (prefers-reduced-motion: reduce) {
  .NotreSelectionHome .uk-slider-items > li { animation: none; }
}

/* ---------- Responsive : mobile confortable, tablette, desktop ---------- */
@media (max-width: 639px) {
  .NotreSelectionHome { padding: 32px 0 0px; }
  .NotreSelectionHome h2 { font-size: 20px; }
  .NotreSelectionHome .ImgVoitureEqui { min-height: 190px; }
  /* Une seule carte visible a la fois sur mobile (slider 1 par vue) :
     pas besoin d une hauteur commune entre cartes, on evite le vide. */
  .NotreSelectionHome .NotreSelecSub { min-height: 0; }
  /* Le build UIkit charge ici ne definit QUE .uk-child-width-1-1\@s/@m/@l/@xl
     (avec breakpoint) : la classe de base "uk-child-width-1-1" (sans @),
     utilisee dans le HTML pour le mobile, n a donc AUCUNE regle de largeur
     associee. Resultat : le <li> du slider n avait pas de width explicite
     sous 640px et se redimensionnait sur son contenu -> plusieurs cartes
     (partielles) visibles au lieu d une seule carte pleine largeur, et le
     "next" ne faisait pas avancer d une carte complete. On force donc ici
     la largeur a 100% du slide, en plus haute specificite que les regles
     width:100% des breakpoints @s/@m/@l (qui ne s appliquent de toute
     facon qu a partir de 640px, donc pas de conflit desktop). */
  .NotreSelectionHome .uk-slider-items > li {
    width: 100% !important;
    flex: none !important;
    /* uk-grid-small (sur le <ul>) ajoute un padding-left au <li> pour sa
       gouttiere : avec width:100% en content-box, ca fait deborder la
       carte de ce padding en plus du 100%, laissant un bout de carte
       suivante visible (meme famille de bug que .SliderHome). */
    padding-left: 0 !important;
    box-sizing: border-box !important;
	margin-right: 20px !important;
  }
  /* Filet de securite : overflow:hidden est deja la valeur par defaut
     d UIkit sur ce conteneur, mais on la reaffirme ici explicitement
     pour etre certain qu aucun bout de carte precedente/suivante ne
     deborde visuellement, quelle que soit la cause residuelle. */
  .NotreSelectionHome .uk-slider-container {
    overflow: hidden !important;
		padding: 1px !important;
  }
  .NotreSelectionHome .btnNavHome { width: 36px; height: 36px; }
  /* Le lien "Voir toutes les voitures..." doit venir APRES le titre (pas
     avant) : on repasse en flux normal (il est deja APRES le titre dans
     le HTML) plutot qu en position absolue en haut du bloc, meme
     principe que .BonnesAffairesLien en mobile. */
  .NotreSelectionHome .NotreSelectionLien {
    position: static;
    display: block;
    margin-top: 10px;
    text-align: center;
  }
  .NotreSelectionHead { margin-bottom: 18px; }
}
/* Entre 640px et 767px, le HTML applique uk-child-width-1-2@s (2
   colonnes) : meme bug de "bout de carte suivante visible" que sous
   639px, juste a une autre largeur. On force donc le meme 1-carte-par-
   vue sur toute la plage mobile/tablette-portrait (jusqu a 767px, meme
   limite que l alignement des fleches plus bas). */
@media (min-width: 640px) and (max-width: 767px) {
  .NotreSelectionHome .uk-slider-items > li {
    width: 100% !important;
    flex: none !important;
    padding-left: 0 !important;
    box-sizing: border-box !important;
  }
  .NotreSelectionHome .uk-slider-container {
    overflow: hidden !important;
    border-radius: var(--sel-radius) !important;
	padding: 1px !important;
  }
}

/* ============================================================
   MODELES DISPONIBLES — .SliderHome (mod_vgrf_offers)
   Scope : modules/mod_vgrf_offers/tmpl/default.php
   Meme langage visuel que .NotreSelectionHome (Selection de la semaine) :
   cards modernes, badges, hover, fleches stylees, apparition douce.
   ============================================================ */

/* Largeur du conteneur : juste assez pour loger 4 cartes + les fleches
   precedent/suivant, PAS 100% de l ecran (demande explicite — on
   neutralise .uk-container qui imposait 100%/pas de max-width). Les 5%
   restants (2.5% de chaque cote) logent les boutons de slider sans
   deborder du viewport. */
.SliderHome.uk-container,
.SliderHome.uk-container-center,
.SliderHome {
  /* 1320px = juste la largeur necessaire a 4 cartes (chacune ~300px de
     large maximum utile) + leurs espacements, pas 100% ni 1600px
     (qui laissait assez de place visuellement pour un bout de 5e/6e
     carte a deborder sur grand ecran). */
  
  width: 95% !important;
  margin-left: auto !important;
  margin-right: auto !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
  box-sizing: border-box;
}
/* IMPORTANT : uk-grid-small (present sur le <ul>) applique une marge
   negative (-15px) + un padding-left equivalent sur chaque <li>, un
   mecanisme de gouttiere qui suppose un conteneur avec du padding pour
   l absorber. Le conteneur ci-dessus n ayant plus de padding lateral,
   ce mecanisme n est plus absorbe et fait deborder le slider de 15px a
   gauche de l ecran en mobile (scrollWidth 420px au lieu de 390px,
   verifie). On neutralise ce mecanisme UIkit et on garde uniquement
   notre propre espacement (padding 0 10px sur la carte, plus bas). */
.SliderHome .uk-slider-items {
  margin-left: 0 !important;
  /* IMPORTANT : justify-content:center ne doit s appliquer QUE quand la
     ligne ne deborde pas (4 modeles ou moins). Applique sans condition,
     ca centrait aussi le cas NORMAL (plus de 4 modeles, ligne plus large
     que le conteneur) : centrer un flex row qui deborde le fait deborder
     SYMETRIQUEMENT des 2 cotes (debut ET fin coupes), exactement le bug
     constate sur capture (bout de carte visible a gauche ET a droite au
     lieu de 4 cartes pile dans le cadre). Par defaut la ligne reste donc
     alignee au debut (comportement slider normal, pagine par .ItemNav). */
  justify-content: flex-start;
}
/* Cas particulier : 4 modeles ou moins au total -> pas de pagination
   possible/utile, on centre alors la ligne (plus de vide colle a
   gauche). :has() + :nth-last-child(-n+4) cible le <ul> dont le PREMIER
   <li> fait aussi partie des 4 derniers, cad un total de 4 <li> ou
   moins — sans ca il n y a aucun moyen en CSS pur de conditionner sur
   le nombre total d enfants. */
.SliderHome .uk-slider-items:has(> li[data-modele-id]:first-child:nth-last-child(-n+4)) {
  justify-content: center;
}
/* 4 colonnes forcees a partir de 640px (ecrase les classes
   uk-child-width-1-2@s / uk-child-width-1-4@m du HTML, qui laissaient
   un affichage a 6 colonnes sur tres grands ecrans selon la largeur
   reelle du conteneur) ; 2 colonnes en dessous. */
@media (min-width: 640px) {
  .SliderHome .uk-slider-items > li[data-modele-id] {
    /* calc() compense le margin:0 4px (8px au total) du <li> : UIkit
       calcule la translation du slider a partir de cette largeur SANS
       tenir compte du margin ajoute en plus, sinon la largeur reelle
       (25% + 8px) deborde du slot suppose et desynchronise le slider,
       coupant la derniere carte (meme bug qu auparavant). */
    width: calc(25% - 8px) !important;
  }
}
/* En dessous de 640px, la largeur de la carte est geree par le bloc
   dedie "@media (max-width: 639px)" plus bas (width: calc(100% - 12px),
   1 carte par vue, avec sa bordure/son ombre propres) — ne PAS dupliquer
   ici de regle de largeur concurrente : les 2 regles sur le meme
   element avec !important entraient en conflit selon l ordre de
   cascade, ce qui desynchronisait le calcul de translation du slider
   (UIkit lit la largeur reelle au chargement) et laissait un bout de
   carte suivante mal aligne/visible apres un "suivant" (bug constate
   sur capture, carte "ID 3"). */
.SliderHome .uk-slider-items > li[data-modele-id] {
  padding-left: 0 !important;
  margin-bottom: 5px;
}

.SliderHome {
  --sh-radius: 16px;
  --sh-shadow: 0 4px 16px rgba(0, 0, 0, 0.06);
  --sh-shadow-hover: 0 16px 40px rgba(0, 0, 0, 0.14);
  --sh-duration: 260ms;
  --sh-ease: cubic-bezier(0.22, 1, 0.36, 1);
  margin: 0 auto;
  padding: 30px 0 30px;
}
.Newhome.home .SliderHome {
  margin: 0px auto;
  padding-bottom: 0px;
}

.Newhome.home .ItemNav svg {
 
    color: #000 !important;
	 
}

.Newhome.home .SliderHome .ItemNav  {
 
    background: #fff !important;
	 
}

.Newhome.home .OffreMomentNew {
  margin-top: 0px;
}
 
.SliderHome > h2 {
  text-align: center;
  font-size: 26px;
  font-weight: 800;
  letter-spacing: -0.01em;
  margin-bottom: 28px;
}

/* ---------- Carte modele ---------- */
/* IMPORTANT : ce <li data-modele-id> est le MEME element que celui pilote
   par les classes responsive d UIkit (uk-child-width-1-2@s / -1-4@m sur
   le <ul> parent, appliquant width:25% etc. directement sur ce <li>).
   Ne jamais y poser de "width" ici : ca ecraserait ces classes et
   casserait la grille (constate : une seule carte pleine largeur au lieu
   de 4 par ligne). On ne touche qu a l affichage interne de la carte. */
.SliderHome li[data-modele-id] {
  display: flex;
  flex-direction: column;
  height: 100%;
  /* box-sizing:border-box + padding horizontal cree un vrai espace
     visuel entre les cartes SANS toucher a la largeur en % posee par
     les classes responsive d UIkit (le padding vit a l interieur du
     slot attribue a chaque carte, pas en plus). */
  box-sizing: border-box;
  /* padding: 0 8px; */
  margin: 0 4px;
}
/* Vraie carte moderne (bordure fine, coins arrondis) au lieu du bloc
   plat sans relief constate sur capture. Le border vit SUR le <li>
   lui-meme (box-sizing:border-box => il s ajoute au padding sans
   agrandir la largeur du slot UIkit, contrairement a un margin). */
.SliderHome li[data-modele-id] {
  background: transparent;
  border: 1px solid var(--color-border, rgba(0, 0, 0, 0.08));
  border-radius: var(--sh-radius);
  overflow: hidden;
  transition: transform var(--sh-duration) var(--sh-ease),
              border-color var(--sh-duration) var(--sh-ease);
}
@media (hover: hover) {
  .SliderHome li[data-modele-id]:hover {
    border-color: transparent;
  }
}
/* Image un peu plus petite/compacte (reduite par rapport a l ancienne
   hauteur fixe de 190px imposee par theme.css), pour une carte plus
   dense et moderne. */
.SliderHome .PhotoSliderHome {
  position: relative;
  overflow: hidden;
  background: #f6f7f9 !important;
  width: 100%;
  aspect-ratio: 16 / 10;
  border-radius: var(--sh-radius) var(--sh-radius) 0 0;
}
.SliderHome .PhotoSliderHome img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 500ms var(--sh-ease);
}

/* Ombre + legere elevation sur la carte ENTIERE au survol, avec un
   leger zoom de la photo. */
@media (hover: hover) {
  .SliderHome li[data-modele-id]:hover {
    box-shadow: var(--sh-shadow-hover);
    transform: translateY(-4px);
  }
  .SliderHome li[data-modele-id]:hover .PhotoSliderHome img {
    transform: scale(1.06);
  }
}

.SliderHome h3 {
  padding: 12px 14px 2px;
  margin: 0;
  font-size: 15px;
  font-weight: 800;
}

/* Les deux liens VN/VO (CTA) sont empiles verticalement, un lien par
   ligne (pas 2 colonnes cote a cote) : chaque lien est une barre
   pleine largeur, moderne et responsive. */
.SliderHome > div > div > ul > li > div:last-child {
  display: flex !important;
  flex-direction: column !important;
  flex-wrap: nowrap !important;
  align-items: stretch;
  gap: 6px;
  padding: 8px 14px 14px;
  margin-top: auto;
}
.SliderHome .LienDispoNew {
  display: flex !important;
  flex-direction: row;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  width: 100% !important;
  flex: none !important;
  min-width: 0;
  padding: 10px 14px;
  border-radius: 10px !important;
  background: var(--color-bg-soft, #f6f7f9);
  border-right: none !important;
  color: var(--color-text, #16181a) !important;
  font-size: 12px !important;
  font-weight: 700;
  text-align: left;
  line-height: 1.3;
  transition: background-color var(--sh-duration) var(--sh-ease),
              color var(--sh-duration) var(--sh-ease),
              transform var(--sh-duration) var(--sh-ease);
}
.SliderHome .LienDispoNew span {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 11px !important;
  font-weight: 500;
  color: inherit;
  white-space: normal;
  padding-left: 10px;
}
.SliderHome .LienDispoNew .ColorMarque {
  flex-shrink: 0;
  margin-left: auto;
}
@media (hover: hover) {
  /* Degrade sombre neutre (meme famille que le bouton noir "En savoir
     plus"), plutot que la couleur d accent de la marque (rouge chez
     Audi) qui denotait trop par rapport au reste des CTA du site. */
  .SliderHome .LienDispoNew:hover {
    background: linear-gradient(135deg, #26282b 0%, #101113 100%);
    color: #fff !important;
    transform: translateX(2px);
  }
  .SliderHome .LienDispoNew:hover .ColorMarque {
    color: #fff !important;
  }
}
@media (max-width: 480px) {
  .SliderHome .LienDispoNew {
    font-size: 11px !important;
    padding: 9px 12px;
  }
  .SliderHome .LienDispoNew span {
    font-size: 10px !important;
  }
}

/* ---------- Fleches de navigation (memes codes que Selection de la
   semaine, coherence visuelle entre les deux sliders) ---------- */
.SliderHome .ItemNav {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.14);
  color:#16181a  !important;
  transition: background-color var(--sh-duration) var(--sh-ease),
              transform var(--sh-duration) var(--sh-ease);
  opacity: 1 !important;
}
@media (hover: hover) {
  .SliderHome .ItemNav:hover {
    background: linear-gradient(135deg, #26282b 0%, #101113 100%);
    color: #fff;
    transform: translateY(-50%) scale(1.06);
  }
}
/* Boutons precedent/suivant repositionnes dans la marge de 5% restante
   (plutot que de deborder hors du viewport), avec un peu de marge a
   droite du bouton "suivant". */
/* Memes espace/position des 2 cotes (symetrique) entre les cartes et
   les boutons precedent/suivant : l ancienne regle (margin-right:8px
   sur les 2 boutons, annule ensuite pour le bouton "suivant") etait un
   residu sans effet reel (margin-right n a pas de prise sur un element
   positionne via "left", et etait remis a 0 sur l autre) — aucun
   espace n etait donc reellement cree, d ou les fleches collees aux
   cartes constatees sur capture. */
.SliderHome a.uk-position-center-left-out.ItemNav {
  left: -22px;
}
/* UIkit fixe lui-meme ".uk-position-center-right-out{left:100%}" : avec
   notre "right:-22px" EN PLUS (et une largeur fixe 44px, pas "auto"),
   les 3 valeurs gauche/largeur/droite sont definies -> cas "sur-
   contraint" ou le navigateur IGNORE "right" et utilise "left:100%"
   seul (verifie en navigateur reel : fleche "suivant" 22px plus a
   droite que prevu, debordant hors de l ecran, alors que la fleche
   "precedent" etait correctement a -22px de l autre cote). On annule
   ce "left" pour laisser "right" faire effet, comme pour la fleche de
   gauche. */
.SliderHome a.uk-position-center-right-out.ItemNav {
  left: auto !important;
  right: -22px;
}
/* ---------- Pagination (points) : switcher vers les groupes suivants
   de 4 modeles plutot que de ne compter que sur les fleches ---------- */
.SliderHome .SliderHomeDots {
  margin-top: 20px;
  gap: 8px;
}
.SliderHome .SliderHomeDots > * > * {
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: var(--nav-bg-soft, #e4e6ea);
  transition: background-color var(--sh-duration, 260ms) ease,
              transform var(--sh-duration, 260ms) ease;
}
.SliderHome .SliderHomeDots > .uk-active > * {
  background: var(--nav-primary, #16181a);
  transform: scale(1.15);
}

/* ---------- Animation d apparition douce ---------- */
@keyframes shFadeUp {
  from { opacity: 0; transform: translateY(14px); }
  to   { opacity: 1; transform: translateY(0); }
}
.SliderHome .uk-slider-items > li {
  animation: shFadeUp 480ms var(--sh-ease) both;
}
.SliderHome .uk-slider-items > li:nth-child(1) { animation-delay: 0ms; }
.SliderHome .uk-slider-items > li:nth-child(2) { animation-delay: 60ms; }
.SliderHome .uk-slider-items > li:nth-child(3) { animation-delay: 120ms; }
.SliderHome .uk-slider-items > li:nth-child(4) { animation-delay: 180ms; }
.SliderHome .uk-slider-items > li:nth-child(5) { animation-delay: 240ms; }
@media (prefers-reduced-motion: reduce) {
  .SliderHome .uk-slider-items > li { animation: none; }
}

/* ---------- Responsive ---------- */
/* Ancienne regle qui reduisait chaque carte a 16.6% (~6-7 par ecran) a
   partir de 1200px — retiree : demande explicite de garder exactement
   4 cartes par defaut a toutes les largeurs desktop/tablette (geree
   plus haut par la regle @media (min-width:640px){ width:25% !important }). */

@media (max-width: 639px) {
  .SliderHome { padding: 32px 0 28px; }
  .SliderHome > h2 { font-size: 20px; margin-bottom: 18px; }
  .SliderHome .ItemNav { width: 36px; height: 36px; }
  .SliderHome h3 { font-size: 15px; }

  /* Bordure autour de chaque carte en mobile (pas de survol pour en
     reveler les limites autrement).
     IMPORTANT : l ancien "width:calc(100% - 12px) + margin-left/right:6px"
     ajoutait de la largeur EN PLUS du slot 100% calcule par UIkit pour
     chaque slide — l erreur se cumulait slide apres slide et finissait
     par mal aligner/couper la DERNIERE carte du slider (bug constate sur
     capture : bloc "T-CROSS" tronque a droite, bout de la carte
     precedente visible a gauche). On garde width:100% (le vrai slot
     UIkit) et on cree l espacement visuel en PADDING (inclus dans la
     largeur grace a box-sizing:border-box), la bordure/le fond
     s appliquant alors sur ce meme cadre sans rien agrandir. */
  .SliderHome li[data-modele-id] {
    /* calc() compense le margin:0 4px (8px au total, regle de base) :
       meme raisonnement que la regle desktop ci-dessus (@media
       min-width:640px), sinon la derniere carte est a nouveau tronquee
       en mobile (bug constate sur capture : bloc "GOLF" coupe). */
    width: calc(100% - 8px) !important;
    background: #fff;
    border: 1px solid var(--color-border, rgba(0, 0, 0, 0.1));
    border-radius: var(--sh-radius);
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.06);
  }
  /* La photo est directement au bord interieur de la carte (elle
     touchait avant les 10px de padding horizontal du <li>) : coins
     hauts arrondis pour epouser la bordure de la carte. */
  .SliderHome .PhotoSliderHome {
    border-radius: var(--sh-radius) var(--sh-radius) 0 0;
  }
}

/* Fleches de navigation des deux sliders (.ItemNav et .btnNavHome) :
   UIkit les positionne "a moitie a l exterieur" du conteneur via les
   classes uk-position-center-left-out / -right-out (normal en desktop,
   ou il y a de la marge disponible). Sur mobile, sans cette marge, elles
   depassaient de 13px de chaque cote et provoquaient un scroll
   horizontal sur toute la page (scrollWidth mesure : 403px pour un
   viewport de 390px). On les ramene a l interieur de l ecran.
   IMPORTANT (alignement entre .SliderHome et .NotreSelectionHome,
   capture mobile) : meme "left:0 / right:0" sur les 2, les ronds
   n etaient PAS a la meme position horizontale a l ecran, car les 2
   conteneurs parents n ont pas le meme modele de boite : .SliderHome
   est a width:95% centre (bord a 2.5% du viewport), tandis que
   .SliderVoitureEquiv (wrapper du slider de .NotreSelectionHome)
   herite de regles de theme.css (max-width:550px + padding-left/right:
   20px/10px) PREVUES POUR UN AUTRE CONTEXTE (le slider "vehicules
   equivalents" de la fiche vehicule, meme nom de classe reutilise par
   coincidence) : son bord n est donc pas au meme endroit que celui de
   .SliderHome. On neutralise cet heritage non voulu pour que les 2
   conteneurs aient exactement le meme modele (pleine largeur + 16px de
   padding fixe), ce qui aligne enfin les fleches des 2 modules au
   meme endroit. */
@media (max-width: 767px) {
  .NotreSelectionHome .SliderVoitureEquiv {
    max-width: none !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
    margin: 0 !important;
  }
  /* Les fleches (.btnNavHome) sont positionnees dans .uk-position-relative,
     qui est le PARENT de .uk-slider-container (lequel seul a
     overflow:hidden par defaut) : la bande laterale ou elles se trouvent
     n etait donc pas decoupee, laissant voir la carte precedente/suivante
     en transparence derriere les boutons (bande sombre visible sur
     capture, de part et d autre, toute la hauteur de la carte). On
     decoupe desormais ce conteneur aussi — sans risque pour les fleches,
     qui sont deja repositionnees "a plat" (left:0/right:0, cf. plus bas)
     et non plus a moitie a l exterieur. */
  .NotreSelectionHome .SliderVoitureEquiv > .uk-position-relative {
    overflow: hidden !important;
  }
  .SliderHome.uk-container,
  .SliderHome.uk-container-center,
  .SliderHome {
    width: 100% !important;
    max-width: none !important;
    padding-left: 10px !important;
    padding-right: 10px !important;
  }
  .NotreSelectionHome {
    padding-left: 16px !important;
    padding-right: 16px !important;
  }
  .SliderHome .ItemNav.uk-position-center-left-out,
  .NotreSelectionHome .btnNavHome.uk-position-center-left-out {
    left: 10px !important;
    transform: translateY(-50%) !important;
  }
  .SliderHome .ItemNav.uk-position-center-right-out,
  .NotreSelectionHome .btnNavHome.uk-position-center-right-out {
    right: 10px !important;
    left: auto !important;
    transform: translateY(-50%) !important;
  }
}

/* ============================================================
   NOS OFFRES DU MOMENT — .OffreMomentNew (mod_vgrf_offres_vn)
   Scope : modules/mod_vgrf_offres_vn/tmpl/default.php
   Structure reelle : .ListeOffreMomentNew > .imgoff (h3 + img) +
   .uk-button ("Je decouvre") + <a> (lien plein cadre invisible, deja
   fonctionnel : ne pas changer position/couverture). Refonte "plein
   cadre" demandee : image sur toute la hauteur de la carte, titre et
   lien superposes en bas a gauche sur un degrade, sans carte blanche
   ni bouton plein — juste un texte discret, comme sur la maquette
   fournie.
   ============================================================ */
.OffreMomentNew {
  --om-radius: 14px;
  --om-shadow: 0 4px 16px rgba(0, 0, 0, 0.10);
  --om-shadow-hover: 0 16px 40px rgba(0, 0, 0, 0.22);
  --om-duration: 260ms;
  --om-ease: cubic-bezier(0.22, 1, 0.36, 1);
  margin-top: 0px;
  margin-bottom: 0px;
  padding: 0;
}
.OffreMomentNew > h2 {
  text-align: center;
  font-size: 26px;
  font-weight: 800;
  letter-spacing: -0.01em;
  margin: 24px 0;
}

/* Carte plein cadre : plus de fond blanc ni de bouton separe, l image
   occupe toute la hauteur de la carte. */
.OffreMomentNew .ListeOffreMomentNew {
  position: relative;
  height: 280px;
  border-radius: var(--om-radius);
  overflow: hidden;
  box-shadow: var(--om-shadow);
  background: none;
  padding-bottom: 0;
  transition: box-shadow var(--om-duration) var(--om-ease),
              transform var(--om-duration) var(--om-ease);
}
@media (hover: hover) {
  .OffreMomentNew .ListeOffreMomentNew:hover {
    box-shadow: var(--om-shadow-hover);
    transform: translateY(-4px);
  }
}

/* Image plein cadre + degrade sombre en bas (indispensable ici : le
   titre ET le lien "Je decouvre" reposent tous les deux dessus). */
.OffreMomentNew .imgoff {
  position: absolute;
  inset: 0;
  height: 100% !important;
}
.OffreMomentNew .imgoff::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(0, 0, 0, 0.75) 0%, rgba(0, 0, 0, 0.25) 45%, rgba(0, 0, 0, 0) 75%);
  pointer-events: none;
}
.OffreMomentNew .imgoff img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 500ms var(--om-ease);
}
@media (hover: hover) {
  .OffreMomentNew .ListeOffreMomentNew:hover .imgoff img {
    transform: scale(1.06);
  }
}

/* Titre repositionne en bas a gauche (au lieu de centre a 35% de la
   hauteur), aligne a gauche, au-dessus du lien "Je decouvre". */
.OffreMomentNew .imgoff h3 {
  z-index: 1;
  top: auto !important;
  bottom: 46px;
  left: 24px !important;
  right: 24px !important;
  text-align: left;
  white-space: normal;
  font-size: 20px;
  font-weight: 700;
  letter-spacing: 0.01em;
  text-shadow: 0 1px 6px rgba(0, 0, 0, 0.45);
}

/* "Je decouvre" : simple lien discret superpose sur l image (plus de
   bouton plein), aligne a gauche sous le titre, avec un leger
   soulignement anime au survol de la carte plutot qu un changement de
   couleur vers l accent rouge de la marque. */
.OffreMomentNew .ListeOffreMomentNew .uk-button {
  position: absolute;
  z-index: 1;
  left: 24px;
  bottom: 18px;
  width: auto;
  margin: 0;
  padding: 0;
  height: auto;
  min-height: 0;
  background: none !important;
  border: none !important;
  color: #fff;
  font-size: 13.5px;
  font-weight: 600;
  text-align: left;
  border-radius: 0 !important;
  box-shadow: none;
  transition: opacity var(--om-duration) var(--om-ease);
}
.OffreMomentNew .ListeOffreMomentNew .uk-button::after {
  content: "";
  display: block;
  width: 0;
  height: 1px;
  margin-top: 3px;
  background: #fff;
  transition: width var(--om-duration) var(--om-ease);
}
.OffreMomentNew .ListeOffreMomentNew:hover span,
.OffreMomentNew .ListeOffreMomentNew:hover .uk-button {
  background: none !important;
  border-color: transparent !important;
  color: #fff;
  opacity: 0.85;
}
.OffreMomentNew .ListeOffreMomentNew:hover .uk-button::after {
  width: 28px;
}

/* Le lien invisible qui couvre toute la carte reste au-dessus de tout
   (fonctionnalite de clic deja en place, non modifiee). */
.OffreMomentNew .ListeOffreMomentNew a {
  z-index: 2;
}

/* ---------- Animation d apparition douce ---------- */
@keyframes omFadeUp {
  from { opacity: 0; transform: translateY(14px); }
  to   { opacity: 1; transform: translateY(0); }
}
.OffreMomentNew .uk-grid > div {
  animation: omFadeUp 480ms var(--om-ease) both;
}
.OffreMomentNew .uk-grid > div:nth-child(1) { animation-delay: 0ms; }
.OffreMomentNew .uk-grid > div:nth-child(2) { animation-delay: 80ms; }
.OffreMomentNew .uk-grid > div:nth-child(3) { animation-delay: 160ms; }
@media (prefers-reduced-motion: reduce) {
  .OffreMomentNew .uk-grid > div { animation: none; }
}

/* ---------- Responsive ---------- */
@media (max-width: 639px) {
  .OffreMomentNew > h2 { font-size: 20px; margin: 18px 0; }
  .OffreMomentNew .ListeOffreMomentNew { height: 220px; }
  .OffreMomentNew .imgoff h3 { font-size: 17px; bottom: 42px; }
  /* Les cartes touchaient les deux bords de l ecran (aucun padding sur
     ce conteneur en mobile, verifie : carte mesuree de x=0 a x=390 pour
     un viewport de 390px). Un padding sur le conteneur suffit ici (pas
     besoin de marge + calc() sur chaque carte comme pour .SliderHome) :
     ce module n a pas retire le padding natif de son .uk-container, la
     gouttiere negative d uk-grid-small l absorbe donc normalement. */
  .OffreMomentNew {
    padding-left: 12px;
    padding-right: 12px;
  }
}

/* ============================================================
   POURQUOI CHOISIR — .ChoixSonauto (mod_vgrf_features)
   Scope : modules/mod_vgrf_features/tmpl/default.php
   Structure reelle : bandeau clair (theme.css, fond #F2F2F2) > uk-grid
   4 colonnes, chaque colonne = icone (.imgChoix.ColorMarque, couleur de
   marque geree par la classe existante, non touchee) + <h3> + <p>.
   Modernisation : icone dans un badge circulaire neutre, carte avec
   leger relief au survol, espacements/typo plus aeres, sans toucher a
   la couleur de marque ni au fond existant.
   ============================================================ */
.ChoixSonauto {
  margin-bottom: 20px;
}
.ChoixSonautoGrid {
  margin-left: 0px;
}
.ChoixSonauto h2 {
  text-align: center;
  font-size: 24px;
  font-weight: 800;
  line-height: 1.35;
  letter-spacing: -0.01em;
}
.ChoixSonauto .SubChoixSonauto {
  margin-top: 0;
  padding: 22px 16px 8px;
  border-right: none !important;
  border-radius: 16px;
  transition: background-color 220ms cubic-bezier(0.22, 1, 0.36, 1),
              transform 220ms cubic-bezier(0.22, 1, 0.36, 1);
}
@media (hover: hover) {
  .ChoixSonauto .SubChoixSonauto:hover {
    background: #fff;
    box-shadow: 0 12px 28px rgba(0, 0, 0, 0.07);
    transform: translateY(-4px);
  }
}
.ChoixSonauto .imgChoix {
  height: 104px !important;
  width: 104px;
  margin: 0 auto 18px;
  display: flex !important;
  align-items: center !important;
  justify-content: center;
  border-radius: 50%;
  background: rgba(0, 0, 0, 0.06);
  transition: background-color 220ms cubic-bezier(0.22, 1, 0.36, 1),
              transform 220ms cubic-bezier(0.22, 1, 0.36, 1);
}
.ChoixSonauto .imgChoix svg {
  width: 54px;
  height: 54px;
  margin-right: 0;
  transition: transform 220ms cubic-bezier(0.22, 1, 0.36, 1);
  margin-right: 0px !important;
}
@media (hover: hover) {
  .ChoixSonauto .SubChoixSonauto:hover .imgChoix {
    background: rgba(0, 0, 0, 0.1);
  }
  .ChoixSonauto .SubChoixSonauto:hover .imgChoix svg {
    transform: scale(1.1);
  }
}
.ChoixSonauto .SubChoixSonauto h3 {
  font-size: 15px;
  font-weight: 700;
  margin: 0 0 10px;
  line-height: 1.3;
}
.ChoixSonauto .SubChoixSonauto p {
  font-size: 13px;
  line-height: 1.55;
  color: var(--color-muted, #6b7075);
  margin: 0;
}

/* ---------- Responsive ---------- */
@media (max-width: 959px) {
  .ChoixSonauto .SubChoixSonauto {
    padding-bottom: 24px;
    margin-bottom: 8px;
    border-bottom: 1px solid rgba(0, 0, 0, 0.08);
  }
  .ChoixSonauto .SubChoixSonauto:last-child {
    border-bottom: none;
    margin-bottom: 0;
  }
}
@media (max-width: 639px) {
  .ChoixSonauto { padding: 0; }
  .ChoixSonauto h2 { font-size: 20px; margin-bottom: 24px; }
  /* Meme espace lateral que les autres blocs de la home en mobile
     (.SliderHome, .NotreSelectionHome) : le .uk-container garde sinon
     le padding par defaut d UIkit (15px), different des 16px utilises
     ailleurs sur la page. */
  .ChoixSonauto .uk-container {
    padding-left: 16px !important;
    padding-right: 16px !important;
  }
  /* Icone + texte bien centres sur chaque colonne, meme si une colonne
     devient plus large que son contenu (empile en pleine largeur sur
     mobile) : on centre explicitement en flex plutot que de compter
     uniquement sur text-align (n aurait pas centre le <div class="imgChoix">,
     un bloc, s il avait une largeur de contenu differente du texte). */
  .ChoixSonauto .SubChoixSonauto {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
  }
  .ChoixSonauto .imgChoix { width: 86px; height: 86px !important; margin-left: auto; margin-right: auto; }
  .ChoixSonauto .SubChoixSonauto p { max-width: 320px; margin: 0 auto; }
}

/* ============================================================
   NOS ENGAGEMENTS — .EngagementGlobal (mod_vgrf_engagements)
   Scope : modules/mod_vgrf_engagements/tmpl/default.php
   Structure reelle : bandeau sombre (theme.css) > uk-grid 5 colonnes,
   chaque colonne = icone (.imgEngagement, <a> ou <div> selon marque) +
   <h4><a>Titre</a></h4> + <p>Texte</p>. Modernisation : icones dans un
   badge circulaire semi-transparent (sans imposer de couleur de
   marque), carte avec leger relief au survol, espacements et
   typographie plus aeres, sans toucher au fond sombre existant ni aux
   liens/JS.
   ============================================================ */
.EngagementGlobal {
}
.EngagementGlobalGrid {
  margin-left: 0px;
}
.EngagementGlobal h3 {
  text-align: center;
  font-size: 24px;
  font-weight: 800;
  letter-spacing: -0.01em;
}
.EngagementGlobal .uk-grid > div {
  text-align: center;
  padding: 22px 14px 26px;
  border-radius: 16px;
  transition: background-color 220ms cubic-bezier(0.22, 1, 0.36, 1),
              transform 220ms cubic-bezier(0.22, 1, 0.36, 1);
}
@media (hover: hover) {
  .EngagementGlobal .uk-grid > div:hover {
    background: rgba(255, 255, 255, 0.06);
    transform: translateY(-4px);
  }
}
.EngagementGlobal .imgEngagement {
  display: flex !important;
  align-items: center;
  justify-content: center;
  width: 108px;
  height: 108px;
  margin: 0 auto 18px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.08);
  transition: background-color 220ms cubic-bezier(0.22, 1, 0.36, 1),
              transform 220ms cubic-bezier(0.22, 1, 0.36, 1);
}
.EngagementGlobal .imgEngagement svg {
  width: 56px;
  height: 56px;
  color: #fff !important;
  transition: transform 220ms cubic-bezier(0.22, 1, 0.36, 1);
}
@media (hover: hover) {
  .EngagementGlobal .uk-grid > div:hover .imgEngagement {
    background: rgba(255, 255, 255, 0.16);
  }
  .EngagementGlobal .uk-grid > div:hover .imgEngagement svg {
    transform: scale(1.1);
  }
}
.EngagementGlobal h4 {
  margin: 0 0 10px;
  font-size: 15px;
  font-weight: 700;
  line-height: 1.3;
}
.EngagementGlobal h4 a {
  color: inherit;
  transition: opacity 200ms ease;
}
@media (hover: hover) {
  .EngagementGlobal h4 a:hover { opacity: 0.75; }
}
.EngagementGlobal p {
  margin: 0;
  font-size: 13px;
  line-height: 1.55;
  opacity: 0.72;
}

/* ---------- Responsive ---------- */
@media (max-width: 959px) {
  .EngagementGlobal .uk-grid > div {
    padding-bottom: 24px;
    margin-bottom: 8px;
    border-bottom: 1px solid rgba(255, 255, 255, 0.08);
  }
  .EngagementGlobal .uk-grid > div:last-child {
    border-bottom: none;
  }
}
@media (max-width: 639px) {
  .EngagementGlobal { padding: 40px 0 36px; }
  .EngagementGlobal h3 { font-size: 20px; margin-bottom: 24px; }
  .EngagementGlobal .imgEngagement { width: 90px; height: 90px; }
  .EngagementGlobal .imgEngagement svg { width: 44px; height: 44px; }
  .EngagementGlobal p { max-width: 320px; margin: 0 auto; }
  /* Constate sur capture mobile : les blocs (titre, icone, texte) ne sont
     pas centres malgre le text-align:center pose plus haut — renforce
     ici avec !important en cas de conflit residuel (ex. theme.css). */
  .EngagementGlobal .uk-grid > div {
    text-align: center !important;
  }
  .EngagementGlobal .imgEngagement {
    margin: 0 auto 14px !important;
  }
}

/* ============================================================
   CORRECTIFS MOBILE DIVERS — retours utilisateur sur capture d ecran
   ============================================================ */
@media (max-width: 959px) {
  /* Le second logo VGRF du menu mobile (offcanvas), en
     "uk-position-bottom" (donc position:absolute, bottom:0, DANS le
     panneau offcanvas, lui-meme position:fixed) reste fige a l ecran et
     se superpose aux derniers liens du menu quand la liste est plus
     longue que la hauteur visible (constate sur capture : logo VGRF
     flottant par-dessus "Mon compte" / "Contact"). On le repasse en
     flux normal (apres les liens, pas superpose dessus). */
  .MenuMobileOffcanvas .uk-position-bottom,
  #MobileMenu .uk-position-bottom {
    position: static !important;
    margin-top: 24px;
  }

  /* Champ de recherche texte (ex. page d accueil, "Marques, modeles,
     energie") : theme.css pose une icone loupe en arriere-plan a
     background-position:94% mais ne reserve que 10px de padding-right,
     insuffisant des que le texte saisi/placeholder s approche du bord
     droit -> chevauchement icone/texte (constate sur capture). */
  .autocomplete-search {
    padding-right: 34px !important;
  }
}

/* ============================================================
   DECOUVREZ NOS SERVICES — .DecouvService (mod_vgrf_services)
   Scope : modules/mod_vgrf_services/tmpl/default.php
   Structure reelle : .itemService > <a> (img + <span>Titre &gt;</span>).
   Meme design "plein cadre" que .OffreMomentNew juste au-dessus : image
   sur toute la hauteur, titre superpose en bas a gauche sur un degrade,
   plus de bandeau noir plein, hover sombre coherent (pas de rouge).
   ============================================================ */
.DecouvService {
  --ds-radius: 14px;
  --ds-shadow: 0 4px 16px rgba(0, 0, 0, 0.10);
  --ds-shadow-hover: 0 16px 40px rgba(0, 0, 0, 0.22);
  --ds-duration: 260ms;
  --ds-ease: cubic-bezier(0.22, 1, 0.36, 1);
}
.DecouvService > h2 {
  text-align: center;
  font-size: 26px;
  font-weight: 800;
  letter-spacing: -0.01em;
  margin-bottom: 24px;
}

/* IMPORTANT : .itemService est directement l element de grille pilote
   par uk-grid (gouttiere PAR DEFAUT d UIkit, plus large que le
   uk-grid-small utilise sur OffreMomentNew) : il porte donc un
   padding-left natif d UIkit. En posant le rayon/l ombre/le overflow
   directement dessus, ce padding se retrouvait A L INTERIEUR de la
   carte, laissant un vide blanc visible entre le bord arrondi et
   l image (constate sur la capture : 40px d ecart mesure). Le style de
   carte doit donc vivre sur le <a> (le vrai contenu visuel), pas sur
   .itemService (qui reste seulement la cellule de grille + son
   espacement natif entre cartes). */
.DecouvService .itemService {
  transition: transform var(--ds-duration) var(--ds-ease);
}
@media (hover: hover) {
  .DecouvService .itemService:hover {
    transform: translateY(-4px);
  }
}

/* <a> = la carte visuelle reelle (comme .imgoff sur OffreMomentNew) :
   image plein cadre + degrade sombre en bas pour la lisibilite du
   titre, rayon/ombre poses ICI pour ne jamais inclure la gouttiere
   d UIkit. */
.DecouvService .itemService a {
  position: relative;
  display: block;
  height: 100%;
  border-radius: var(--ds-radius);
  overflow: hidden;
  box-shadow: var(--ds-shadow);
  transition: box-shadow var(--ds-duration) var(--ds-ease);
}
@media (hover: hover) {
  .DecouvService .itemService:hover a {
    box-shadow: var(--ds-shadow-hover);
  }
}
.DecouvService .itemService a::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(0, 0, 0, 0.75) 0%, rgba(0, 0, 0, 0.25) 45%, rgba(0, 0, 0, 0) 75%);
  pointer-events: none;
}
.DecouvService .itemService img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 500ms var(--ds-ease);
}
@media (hover: hover) {
  /* On corrige le hover d origine (theme.css retrecit l image a 0.95,
     effet peu flatteur) par un leger zoom, comme les autres modules. */
  .DecouvService .itemService a:hover img {
    transform: scale(1.06);
  }
}

/* Titre + fleche (span) : repositionne en bas a gauche en texte simple
   sur le degrade, sans bandeau noir plein, avec un soulignement anime
   au survol plutot qu un changement de couleur vers l accent marque. */
.DecouvService .itemService span {
  position: absolute;
  z-index: 1;
  left: 24px;
  right: 24px;
  bottom: 18px;
  top: auto;
  height: auto;
  min-width: 0;
  line-height: 1.3;
  background: none;
  color: #fff;
  text-align: left;
  font-size: 17px;
  font-weight: 700;
  letter-spacing: 0.01em;
  text-shadow: 0 1px 6px rgba(0, 0, 0, 0.45);
}
/* theme.css impose ".skoda .DecouvService .itemService span{color:
   var(--secondary-color)}" (3 classes, plus specifique que la regle
   generale ci-dessus a 2 classes) — un vert fonce quasi illisible sur
   les photos sombres (verifie en navigateur reel : rgb(14,58,47), tres
   faible contraste, "Assistance" presque invisible sur sa photo). Le
   degrade sombre pose juste au-dessus garantit deja une bonne lisibilite
   en blanc quelle que soit la photo/marque : on force donc le blanc ici
   avec une specificite egale (meme prefixe de marque) + !important. */
.DecouvService .itemService span {
      color: #fff !important;
}
@media (hover: hover) {
  .DecouvService .itemService a:hover span {
    transform: none; /* neutralise le scale(.95) impose par theme.css sur le span */
    opacity: 0.9;
  }
}

/* ---------- Animation d apparition douce ---------- */
@keyframes dsFadeUp {
  from { opacity: 0; transform: translateY(14px); }
  to   { opacity: 1; transform: translateY(0); }
}
.DecouvService .uk-grid > div {
  animation: dsFadeUp 480ms var(--ds-ease) both;
}
.DecouvService .uk-grid > div:nth-child(1) { animation-delay: 0ms; }
.DecouvService .uk-grid > div:nth-child(2) { animation-delay: 80ms; }
.DecouvService .uk-grid > div:nth-child(3) { animation-delay: 160ms; }
@media (prefers-reduced-motion: reduce) {
  .DecouvService .uk-grid > div { animation: none; }
}

/* ---------- Responsive ---------- */
@media (max-width: 639px) {
  .DecouvService > h2 { font-size: 20px; margin-bottom: 18px; }
  .DecouvService .itemService,
  .DecouvService .itemService img { height: 220px; }
  .DecouvService .itemService span { font-size: 16px; }
}

/* ============================================================
   UNE QUESTION ? NOUS VOUS REPONDONS ICI ! — .FaqModule (mod_vgrf_faq)
   Scope : modules/mod_vgrf_faq/tmpl/default.php
   Structure reelle : .FaqModule > h2 + ul[uk-accordion] (li >
   a.uk-accordion-title + div.uk-accordion-content) + div.uk-text-center
   (bouton "Consulter la FAQ"). Disposition 2 colonnes demandee (titre +
   bouton a gauche, accordeon a droite) obtenue en CSS Grid avec
   placement explicite de chaque enfant : aucune modification du HTML,
   l ordre reel dans le DOM reste h2 -> ul -> bouton.
   ============================================================ */
/* Le module est enveloppe par un <div class="uk-container uk-container-
   center uk-margin"> sans classe propre : on le cible via :has() pour
   ne pas impacter les AUTRES .uk-container de la page, et on le passe
   en pleine largeur comme les modules "Selection de la semaine" /
   "Modeles disponibles". */
.uk-container:has(> .FaqModule) {
  max-width: none !important;
  width: 100% !important;
  padding-left: 24px !important;
  padding-right: 24px !important;
  box-sizing: border-box !important;
}

/* Le titre et le bouton (colonne de gauche) sont centres verticalement
   sur toute la hauteur de la liste (colonne de droite) grace a deux
   "lignes ressort" (1fr) au-dessus et en dessous : elles se partagent
   l espace restant a parts egales et compriment le duo titre+bouton
   au centre, sans avoir besoin d un conteneur englobant dans le HTML. */
.FaqModule {
  background: none;
  padding: 0;
  display: grid;
  grid-template-columns: minmax(220px, 320px) 1fr;
  grid-template-rows: 1fr auto auto 1fr;
  column-gap: 64px;
}
.FaqModule > h2 {
  grid-column: 1;
  grid-row: 2;
  font-size: 26px;
  font-weight: 800;
  letter-spacing: -0.01em;
  margin: 0 0 12px;
}
.FaqModule > ul {
  grid-column: 2;
  grid-row: 1 / span 4;
  margin: 0;
  align-self: start;
}
.FaqModule > div.uk-text-center {
  grid-column: 1;
  grid-row: 3;
  text-align: left;
  margin: 8px 0 0;
}
.FaqModule > div.uk-text-center .uk-button {
  background: none;
  border: 1.5px solid var(--color-text, #16181a);
  color: var(--color-text, #16181a);
  border-radius: 999px;
  font-weight: 600;
  transition: background-color 220ms ease, color 220ms ease;
}
@media (hover: hover) {
  .FaqModule > div.uk-text-center .uk-button:hover {
    background: var(--color-text, #16181a);
    color: #fff;
  }
}

/* Liste : simples lignes separees par un filet, sans encadre ni fond
   gris (le theme imposait un bloc gris #f2f2f2 autour de tout le
   module, retire ci-dessus). Un fond discret apparait au survol de
   toute la ligne (pas seulement de l icone), avec un leger retrait
   horizontal du texte pour un retour visuel "moderne", plus une
   transition douce sur la couleur du filet. */
.FaqModule .uk-accordion li {
  background: none;
  border-bottom: 1px solid rgba(0, 0, 0, 0.08);
  margin: 0 !important;
  font-size: 16px;
  border-radius: 10px;
  transition: background-color 220ms ease;
}
.FaqModule .uk-accordion li:first-child {
  border-top: 1px solid rgba(0, 0, 0, 0.08);
}
@media (hover: hover) {
  .FaqModule .uk-accordion li:hover {
    background: var(--color-bg-soft, #f6f7f9);
  }
}

/* Question + icone +/- : la question est a gauche, l icone toujours a
   droite dans un cercle (au lieu du chevron impose par theme.css). Le
   pseudo-element ::before (deja genere par UIkit pour son icone) est
   entierement redessine ici en glyphe "+"/"-" dans un cercle, sans
   dependre d une image. */
.FaqModule .uk-accordion-title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  padding: 11px 16px;
  font-weight: 600;
  font-size: 16.5px;
  color: var(--color-text, #16181a);
  cursor: pointer;
  transition: color 220ms ease, padding-left 220ms ease;
}
@media (hover: hover) {
  .FaqModule .uk-accordion-title:hover {
    padding-left: 22px;
  }
}
.FaqModule .uk-accordion-title::before {
  order: 2;
  flex-shrink: 0;
  float: none;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  margin-left: 0;
  border: 1.5px solid rgba(0, 0, 0, 0.18);
  border-radius: 50%;
  background: none;
  background-image: none !important; /* neutralise l icone chevron imposee par theme.css */
  content: "+";
  font-size: 17px;
  line-height: 1;
  font-weight: 400;
  color: var(--color-text, #16181a);
  transition: background-color 220ms ease, color 220ms ease, border-color 220ms ease;
}
.FaqModule li.uk-open .uk-accordion-title::before {
  content: "\2212"; /* signe moins */
}
@media (hover: hover) {
  .FaqModule .uk-accordion-title:hover::before {
    border-color: var(--color-primary, var(--primary-color, #16181a));
    color: var(--color-primary, var(--primary-color, #16181a));
  }
}

.FaqModule .uk-accordion-content {
  margin: 0;
  padding: 0 16px 18px;
  color: var(--color-muted, #6b7075);
  font-size: 14.5px;
  line-height: 1.6;
}
.FaqModule .uk-accordion-content p {
  margin: 0;
}

/* ---------- Responsive : empile en une colonne (titre, liste, bouton) --------- */
@media (max-width: 767px) {
  .FaqModule {
    grid-template-columns: 1fr;
    row-gap: 20px;
  }
  .FaqModule > h2,
  .FaqModule > ul,
  .FaqModule > div.uk-text-center {
    grid-column: 1;
    grid-row: auto;
  }
  .FaqModule > h2 { font-size: 21px; }
  .FaqModule .uk-accordion-title { font-size: 15px; }
}

/* ============================================================
   MAILLAGE DES CONCESSIONS — .SeoMaillage (mod_vgrf_concession_home)
   Scope : modules/mod_vgrf_concession_home/tmpl/default.php
   Structure reelle : .SeoMaillage > .uk-column-1-*@* (colonnes CSS) >
   ul.uk-list.sw-list-icon (repete par region) > li > span (nom de
   region, une seule fois par groupe) ou <a> (lien concession). Pas de
   titre dans ce module (le "Pensez a covoiturer..." vient d un module
   distinct juste au-dessus). Simple liste de maillage interne, stylee
   en mini-sitemap moderne et lisible plutot qu une liste brute grise.
   ============================================================ */
.SeoMaillage {
  --sm-duration: 200ms;
  --sm-ease: cubic-bezier(0.22, 1, 0.36, 1);
  margin-top: 48px;
  padding-top: 15px;
  padding-bottom: 8px;
  border-top: 1px solid var(--color-border, rgba(0, 0, 0, 0.08));
}
.SeoMaillage .uk-column-1-2\@s {
  column-gap: 40px;
}

.SeoMaillage ul {
  margin: 0 0 28px;
}
/* "break-inside:avoid" sur le <ul> lui-meme (version precedente)
   empechait tout saut de colonne A L INTERIEUR d une liste : ca marche
   pour les petits groupes region/concessions (5-8 items) mais casse
   completement la page /occasion, ou tout le maillage est UN SEUL <ul>
   d une cinquantaine de liens "Voitures Marque Occasion Ville" - la
   colonne CSS refusait alors de le couper et tout restait entasse dans
   la 1ere colonne, colonnes 2/3 vides. On evite la coupure ligne par
   ligne (li) plutot que bloc par bloc (ul), ce qui suffit a eviter
   qu une ligne soit coupee en deux tout en laissant la liste se
   repartir sur les colonnes. */
.SeoMaillage li {
  break-inside: avoid;
}

/* Nom de region : petite etiquette avec accent colore, plutot qu un
   simple texte gras majuscule brut. */
.SeoMaillage li:first-child > span {
  text-transform: uppercase;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.06em;
  color: var(--color-text, #16181a);
  margin-bottom: 6px;
}
.SeoMaillage li:first-child > span::before {
  content: "";
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--color-primary, var(--primary-color, #16181a));
  flex-shrink: 0;
}

/* Liens concessions : ligne discrete avec transition de couleur + leger
   decalage au survol, sans souligner en permanence. */
.SeoMaillage li {
  margin-top: 0;
}
.SeoMaillage li:not(:first-child) {
  border-top: 1px dashed var(--color-border, rgba(0, 0, 0, 0.08));
}
.SeoMaillage a {
  display: block;
  padding: 7px 0;
  color: var(--color-muted, #6b7075);
  font-size: 13.5px;
  text-decoration: none;
  transition: color var(--sm-duration) var(--sm-ease),
              padding-left var(--sm-duration) var(--sm-ease);
}
@media (hover: hover) {
  .SeoMaillage a:hover {
    color: var(--color-primary, var(--primary-color, #16181a));
    padding-left: 6px;
  }
}

/* ---------- Responsive ---------- */
@media (max-width: 639px) {
  .SeoMaillage { margin-top: 32px; padding-top: 28px; }
  .SeoMaillage ul { margin-bottom: 20px; text-align: center; }
  .SeoMaillage li:first-child > span {
    justify-content: center;
  }
}

/* ============================================================
   SLIDER DE BANNIERES — .bannSlider (mod_vgrf_bannieres)
   Scope : modules/mod_vgrf_bannieres/tmpl/default.php
   Demande explicite : uniquement une bordure + un radius moderne autour
   du visuel, sans toucher aux fleches precedent/suivant ni a l animation
   du slider (uk-slideshow reste tel quel). */
.bannSlider {
  /* .bannSlider est un .uk-container (padding lateral impose par
     UIkit) : sans l annuler, la bordure entoure ce conteneur plus large
     que l image et laisse une bande blanche visible de chaque cote. */
  padding-left: 0 !important;
  padding-right: 0 !important;
  border-radius: 0;
  overflow: hidden;
  border: none;
  box-shadow: none;
}
.bannSlider .uk-slideshow-items,
.bannSlider .uk-slideshow-items > li,
.bannSlider .uk-slideshow-items > li > a {
  border-radius: inherit;
}
/* Image affichee en entier (pas de recadrage/zoom) sur desktop comme
   mobile : object-fit:contain au lieu de cover, quitte a laisser
   apparaitre un leger espace de chaque cote si le ratio de l image ne
   correspond pas exactement au cadre 3:1. */
.bannSlider img {
  width: 100% !important;
  height: 100% !important;
  object-fit: contain !important;
}
@media (max-width: 639px) {
  /* Le margin seul sur .bannSlider ne suffisait pas a creer un espace
     visible a droite (uk-slideshow mesure/retaille ses enfants en JS
     a partir de la largeur de CE conteneur ; un residu de largeur trop
     grande du cote droit restait possible selon le moment de ce calcul).
     On fixe donc l espace en PADDING (inclus dans la largeur du
     conteneur grace a box-sizing:border-box) plutot qu en marge
     exterieure : l image/le slideshow se redimensionnent alors
     eux-memes bien a l interieur de cet espace, des le depart, sans
     dependre d un recalcul JS ulterieur. */
  .bannSlider {
    box-sizing: border-box !important;
    width: 100% !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
    padding-left: 12px !important;
    padding-right: 12px !important;
  }
  /* Sur mobile, "min-height:200" (impose en JS par uk-slideshow, cf.
     attribut uk-slideshow du template) reste fixe a 200px alors que la
     largeur reelle est bien plus etroite : le cadre passe alors d un
     ratio ~3:1 (voulu, proche du ratio naturel des images) a un ratio
     ~1.9:1 (carre), ce qui force object-fit:cover a rogner beaucoup
     plus large que necessaire pour remplir ce cadre trop haut - percu
     comme un "zoom" important sur mobile. On reimpose le ratio 3:1 par
     CSS (prioritaire sur le style inline JS) pour un cadrage fidele. */
  .bannSlider .uk-slideshow-items,
  .bannSlider .uk-slideshow-items > li {
    width: 100% !important;
    height: auto !important;
    min-height: 0 !important;
    aspect-ratio: 3 / 1;
  }
}

/* ============================================================
   FOOTER — .FooterGlobNew (mod_vgrf_footer)
   Scope : modules/mod_vgrf_footer/tmpl/default.php
   Structure reelle : footer > .FooterGlobNew > .swfooter (uk-grid) >
   .Footer1 (logo groupe + logo VGRF + slogan + copyright) + colonne
   droite (.SuiveFooter reseaux sociaux + .footer-last liste "Infos
   pratiques" + widget avis/note en option). Modernisation : typographie,
   espacements, icones sociales en boutons circulaires, liens avec
   soulignement anime, sans changer les couleurs de marque ni les
   liens/JS existants.
   ============================================================ */
.FooterGlobNew {
  --ft-duration: 200ms;
  --ft-ease: cubic-bezier(0.22, 1, 0.36, 1);
  padding-top: 25px;
  padding-bottom: 10px;
  color: var(--color-muted, #6b7075);
  font-size: 13.5px;
  line-height: 1.5;
}
footer[role="contentinfo"] { background: var(--color-bg-soft, #f8f9fb); }
footer {
  padding: 0px;
}
.FooterGlobNew .swfooter { align-items: flex-start; }
/* Petit espace vertical entre colonnes quand elles s empilent avant le
   breakpoint @m (tablette), en plus de l espacement mobile dedie
   gere plus bas (@max-width:639px). */
@media (min-width: 640px) and (max-width: 959px) {
  .FooterGlobNew .swfooter > * {
    margin-bottom: 24px;
  }
}
.FooterGlobNew a {
  color: var(--color-muted, #6b7075);
  transition: color var(--ft-duration) var(--ft-ease);
}
.FooterGlobNew a:hover {
  color: var(--color-text, #16181a);
  text-decoration: none;
}

/* ---------- Bloc logo (.Footer1) ---------- */
/* Colonne verticale centree (logo + slogan + copyright empiles avec un
   espacement regulier), desktop comme mobile : avant, l espacement
   venait de marges ad hoc disparates entre ces 3 elements. */
.FooterGlobNew .Footer1 {
  display: flex;
  flex-direction: column;
  align-items: center;
  /* theme.css impose un filet vertical a droite de cette colonne
     (border-right:1px solid #d5d5d5) : supprime, demande explicite. */
  border-right: none;
}
.FooterGlobNew .Footer1 img {
  max-width: 250px;
}
.FooterGlobNew .Footer1 p.SlogFooter {
  font-size: 12.5px;
  line-height: 1.5;
  color: var(--color-text, #16181a);
  margin: 0 0 10px;
}
.FooterGlobNew .copyright {
  margin-top: 0;
  font-size: 11px;
  color: var(--color-muted, #6b7075);
}

/* ---------- Reseaux sociaux (.SuiveFooter) ---------- */
.FooterGlobNew .SuiveFooter span {
  display: block;
  font-size: 15px;
  font-weight: 700;
  color: var(--color-text, #16181a);
  margin-bottom: 4px;
}
.FooterGlobNew .SuiveFooter p {
  font-size: 12.5px;
  color: var(--color-muted, #6b7075);
}
/* Icones sociales en boutons circulaires discrets, qui s assombrissent
   au survol plutot qu un simple changement de couleur de trait. */
.FooterGlobNew .SuiveFooter a:not(.uk-button) {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  border-radius: 50%;
  background: var(--color-bg-soft, #f6f7f9);
  margin-right: 8px;
  transition: background-color var(--ft-duration) var(--ft-ease),
              transform var(--ft-duration) var(--ft-ease);
}
.FooterGlobNew .SuiveFooter a span {
  margin: 0;
}
/* Bouton "Nous contacter" (variante CupraCityGarage) : pilule coherente
   avec le reste du site plutot qu un bouton a bordure orange isolee. */
.FooterGlobNew .uk-button {
  border-radius: 999px;
  border-color: var(--color-border, rgba(0, 0, 0, 0.16));
  transition: background-color var(--ft-duration) var(--ft-ease),
              color var(--ft-duration) var(--ft-ease);
}

/* ---------- Liste "Infos pratiques" (.footer-last) ---------- */
.FooterGlobNew ul {
  list-style: none;
  margin: 0;
  padding: 0;
}
.FooterGlobNew ul li { margin-bottom: 6px; }
.FooterGlobNew ul li span {
  display: block;
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--color-text, #16181a);
  margin-bottom: 10px;
}
.FooterGlobNew .footer-last a {
  display: inline-block;
  padding: 4px 0;
  font-size: 13px;
  background-image: linear-gradient(currentColor, currentColor);
  background-position: 0 100%;
  background-repeat: no-repeat;
  background-size: 0 1px;
  transition: background-size var(--ft-duration) var(--ft-ease),
              color var(--ft-duration) var(--ft-ease);
}
@media (hover: hover) {
  .FooterGlobNew .footer-last a:hover {
    background-size: 100% 1px;
  }
}

/* ---------- Widget avis (.mobadv, car_advisor) ----------
   Widget tiers (banner-web-component, shadow DOM) avec sa propre
   bordure carree fixe : on ne peut/doit pas restyler son interieur,
   on corrige seulement l alignement (le style inline margin-top:-20px
   du composant laissait un vide dans la colonne). */
.FooterGlobNew .mobadv {
  align-items: center;
}
.FooterGlobNew .mobadv > div {
  margin-top: 0 !important;
}

/* ---------- Responsive ---------- */
@media (max-width: 639px) {
  footer {
    padding: 0px;
  }
  /* theme.css impose ici un mode "mobile ancien" agressif (font-size:18px,
     icones sociales forcees a 50px de large) qui rendait le footer
     disproportionne (constate sur la capture : icones geantes empilees).
     On reprend la main avec une specificite/priorite suffisante pour
     retrouver une mise en page compacte, avec une marge laterale
     (le footer lui-meme n a plus de padding, cf. "footer{padding:0px}"
     plus haut) et tous les elements centres, comme demande. */
  .FooterGlobNew {
    font-size: 13.5px !important;
    text-align: center !important;
    padding-top: 32px;
    padding-bottom: 28px;
    padding-left: 20px;
    padding-right: 20px;
  }
  .FooterGlobNew .swfooter,
  .FooterGlobNew .swfooter .swfooter_uk_grid {
    margin: auto !important;
  }
  .FooterGlobNew .swfooter {
    justify-content: center;
    text-align: center;
  }

  /* Bloc logo/slogan : centre, espacement resserre (l ancien 28px de
     marge combine au gap de grille du theme laissait un grand vide
     avant "Nous suivre", constate sur capture). */
  .FooterGlobNew .Footer1 {
    text-align: center;
  }

  /* Chaque section suivante (reseaux sociaux, infos pratiques, avis)
     devient un vrai "bloc" separe par un filet fin plutot qu un simple
     saut de ligne : plus lisible et plus structure sur mobile qu une
     succession de paragraphes flottants. */
  .FooterGlobNew .paddingFoo {
    padding-left: 0 !important;
    margin-bottom: 0;
    padding-top: 20px;
    border-top: 1px solid var(--color-border, rgba(0, 0, 0, 0.08));
  }
  .FooterGlobNew .paddingFoo {
    text-align: center;
  }
  .FooterGlobNew .SuiveFooter span {
    font-size: 13px;
    margin-bottom: 10px;
  }
  .FooterGlobNew .SuiveFooter p {
    display: flex;
    justify-content: center;
  }
  /* Attention : le 2eme <p> de .SuiveFooter contient les icones sociales
     elles-memes (<a><span uk-icon></a> par <p>), ce n est pas juste du
     texte — masquer TOUS les <p> masquait aussi les icones (bug
     constate : plus aucune icone visible sur la capture). On ne cache
     que le tout premier, purement descriptif ("Sur les reseaux
     sociaux"). */
  .FooterGlobNew .SuiveFooter > p:first-of-type { display: none; }

  /* Icones sociales : cercles compacts en ligne plutot qu empiles en
     50px de large chacun. */
  .FooterGlobNew .SuiveFooter a:not(.uk-button) {
    width: 48px !important;
    height: 48px !important;
    margin-right: 10px !important;
    display: inline-flex !important;
  }
  .FooterGlobNew .SuiveFooter a svg {
    width: 22px !important;
    height: 22px !important;
  }

  /* Liens "Infos pratiques" : on retire le trait decoratif statique du
     theme (faisait doublon avec le soulignement anime au survol) et on
     garde une liste compacte alignee a gauche, dans son propre bloc
     separe par un filet. */
  .FooterGlobNew .footer-last {
    padding-left: 0;
    padding-top: 20px;
    border-top: 1px solid var(--color-border, rgba(0, 0, 0, 0.08));
  }
  .FooterGlobNew ul li a {
    display: block !important;
    text-align: center !important;
    padding: 7px 0 !important;
  }
  .FooterGlobNew ul li a::after {
    display: none !important;
  }

  /* Widget d avis (.mobadv) : dans son propre bloc separe egalement,
     centre, avec une petite carte (fond/ombre/radius) autour du widget
     tiers pour l integrer visuellement au reste du footer plutot que
     de laisser sa bordure carree brute flotter seule sur le fond. On ne
     touche pas au contenu du widget lui-meme (shadow DOM tiers). */
  .FooterGlobNew .mobadv {
    margin-top: 0 !important;
    margin-bottom: 20px;
    padding-top: 20px;
    padding-bottom: 20px;
    border-top: 1px solid var(--color-border, rgba(0, 0, 0, 0.08));
    justify-content: center !important;
    /* Les 2 widgets (style inline PHP : margin-right:10px sur le 1er,
       margin:0 sur le 2nd) n avaient pas le meme espace de chaque cote.
       Le gap sur le conteneur flex remplace ces marges inline au lieu
       de les cumuler, pour un espacement identique entre les 2 et de
       part et d autre. */
    gap: 16px;
  }
  .FooterGlobNew .mobadv > div {
    margin: 0 !important;
    padding: 12px;
    border-radius: 16px;
    background: #fff;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08);
  }
}

@media (max-width: 767px) {
  .FooterGlob .uk-grid>* {
  }
}

/* ============================================================
   Carte vehicule de la liste (/occasion, /neuf) - default_grid_item.php
   - image du slider sans "zoom" (cover propre, hauteur fixe, pas de
     recadrage qui bouge selon l image source) ;
   - bandeau ".DivPromo" (remise + livraison) superpose en haut de
     l image plutot que pousse en dessous dans le flux (c est ce qui
     creait l espace vide entre l image et le titre) ;
   - ".RemiseOperation" en haut a GAUCHE du slider (comme demande),
     livraison en haut a droite ;
   - suppression des paddings/marges qui laissaient du vide dans le
     bloc info (titre, caracteristiques, prix).
   Les regles ".vehicules .RemiseOperation" / ".LivraisonPo" du theme
   sont en position absolute mais ne s appliquent qu a l interieur d un
   ancetre ".vehicules" (fiche vehicule) : sur la liste, cet ancetre
   n existe pas, donc ces badges retombaient dans le flux normal. On
   les repositionne ici explicitement pour ".ListeNewVoiture". */
.ListeNewVoiture .NotreSelecSub {
  overflow: hidden;
  padding-bottom: 0 !important;
}
/* Nouvelle approche, plus simple et fiable que les essais precedents
   (flex-grow + margin-top:auto, sans effet visuel constate) : au lieu
   d essayer de pousser les boutons vers LE BAS de la carte (ce qui
   depend de uk-height-match et d une chaine flex fragile), on reserve
   une hauteur FIXE pour la zone "Prix TTC / Ou / financement" (qui est
   le seul bloc dont le contenu varie, 1 ou 2 lignes selon qu il y a une
   offre de financement ou non). Cette zone a toujours la meme hauteur,
   donc les boutons qui la suivent juste apres en flux normal demarrent
   TOUJOURS a la meme position, qu il y ait du LOA ou non (s il n y en a
   pas, l espace reserve reste simplement vide). */
.ListeNewVoiture .ImgVoitureEqui {
  overflow: hidden;
  background: var(--color-bg-soft, #f6f7f9);
}
/* Un seul visuel dans le slideshow (pas plusieurs photos du vehicule) :
   centrer ce <li> unique plutot que de le laisser cale au debut (meme
   principe deja applique aux autres sliders du site). */
.ListeNewVoiture .uk-slideshow-items:has(> li:first-child:last-child) {
  display: flex;
  justify-content: center;
}
.ListeNewVoiture .ImgVoitureEqui,
.ListeNewVoiture .ImgVoitureEqui .uk-slideshow,
.ListeNewVoiture .uk-slideshow-items,
.ListeNewVoiture .uk-slideshow-items > li {
  height: 220px !important;
  min-height: 220px !important;
  max-height: 220px !important;
}
.ListeNewVoiture .uk-slideshow-items > li img {
  /* L attribut HTML "uk-cover" declenche le composant JS "Cover" d UIkit,
     qui pose en INLINE un gabarit de recadrage manuel (prevu pour les
     navigateurs sans object-fit) : width/height en px (ex. 378x284px,
     plus grand que le cadre) + position:absolute + top/left en px (ex.
     110px/188px) pour centrer cette image surdimensionnee — en conflit
     avec notre object-fit:cover. Neutraliser seulement le transform
     laissait top/left inline actifs, decalant l image hors cadre (verifie
     en navigateur reel : visible au-dela du cadre, "trou" en haut de la
     carte). Il faut neutraliser position/top/left EN PLUS du transform
     pour un recadrage CSS pur, coherent avec le reste du site. */
  position: static !important;
  top: auto !important;
  left: auto !important;
  transform: none !important;
  width: 100% !important;
  height: 100% !important;
  /* Demande explicite : image COMPLETE dans le bloc, sans rognage ni
     zoom ("afficher image complete sans zoom") — contain au lieu de
     cover. Le fond "ImgVoitureEqui" (overflow:hidden + couleur de
     fond) comble les bandes vides si le ratio de la photo ne remplit
     pas tout le cadre 220px de haut. */
  object-position: center !important;
  /* Changement de slide (clic sur la fleche) : UIkit recalcule et
     reapplique un recadrage (translate(-50%,-50%) base sur la taille
     reelle de l image) via une transition CSS active, qui passe
     AU-DESSUS de n importe quelle regle !important tant qu elle
     tourne (verifie en navigateur reel : l image de la 2e/3e photo
     du slider ressort toujours decalee/zoomee malgre les regles
     ci-dessus). Couper la transition supprime ce recalcul en cours
     de route et laisse nos regles statiques s appliquer direct. */
  transition: none !important;
  animation: none !important;
}

.ListeNewVoiture .DivPromo {
  position: absolute !important;
  top: 10px;
  left: 10px;
  right: 10px;
  z-index: 3;
  display: flex !important;
  flex-direction: row !important;
  align-items: flex-start;
  justify-content: space-between;
  gap: 8px;
  margin: 0 !important;
  padding: 0 !important;
  pointer-events: none;
}
.ListeNewVoiture .DivPromo > * {
  pointer-events: auto;
}
.ListeNewVoiture .RemiseOperation {
  position: static !important;
  top: auto !important;
  left: auto !important;
  height: auto !important;
  width: auto !important;
  display: block !important;
  order: -1;
}
.ListeNewVoiture .RemiseOperation .remiseNew {
  position: static !important;
  top: auto !important;
  margin: 0 !important;
  border-radius: 6px;
  font-size: 11px;
  line-height: normal;
  padding: 5px 10px;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.18);
}
.ListeNewVoiture .LivraisonPo {
  position: static !important;
  top: auto !important;
  right: auto !important;
  border-radius: 6px;
  font-size: 11px;
  line-height: normal;
  padding: 5px 10px;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.12);
}
/* Badge "Livraison a domicile" repositionne en superposition, en bas a
   droite de l image du slider (deplace du bloc titre vers .ImgVoitureEqui
   dans le HTML, demande explicite). */
.ListeNewVoiture .LivraisonPoImg {
  position: absolute !important;
  bottom: 10px !important;
  right: 10px !important;
  top: auto !important;
  left: auto !important;
  z-index: 2;
}
/* Tag remise ("Controle technique offert"...), rendu via
   .TagsOverImgBottom > .RemiseOperation > .remiseNew (titreVignetteHtml) :
   meme gabarit exact (padding/font-size/line-height) que le badge
   "Livraison a domicile" juste a cote, pour une hauteur identique entre
   les 2 (ils avaient des valeurs differentes : 4px/9.5px vs 5px/11px). */
.ListeNewVoiture .TagsOverImgBottom .RemiseOperation .remiseNew {
  padding: 8px 10px !important;
  font-size: 11px !important;
  line-height: normal !important;
}
/* Mobile : le tag remise doit rester cale a gauche et "Livraison a
   domicile" a droite, sur la meme ligne basse de l image (ils sont deja
   positionnes ainsi en desktop : .TagsOverImgBottom aligne son contenu
   a gauche, .LivraisonPoImg est ancre a droite) — on le reaffirme
   explicitement en mobile et on limite la largeur du tag remise pour
   qu il ne s etende jamais sur toute la largeur (ce qui bloquerait les
   clics sur le lien "Livraison a domicile" a droite, meme invisible). */
@media (max-width: 767px) {
  .ListeNewVoiture .TagsOverImgBottom {
    text-align: left !important;
  }
  .ListeNewVoiture .TagsOverImgBottom .RemiseOperation {
    width: fit-content !important;
    justify-content: flex-start !important;
  }
}

/* Bloc info : plus d espace mort entre l image et le contenu, ni entre
   les lignes du contenu lui-meme. */
.ListeNewVoiture .InfoVehiculecolmun {
  padding: 12px !important;
}
.ListeNewVoiture .TitreVoitureEquivalent {
  margin-top: 0 !important;
  min-height: 0 !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
  text-align: left !important;
  /* Marque + modele (<strong>) et finition (<span>) sur une seule ligne,
     tronquee avec "..." plutot que de passer a la ligne si le nom est
     trop long pour la largeur de la carte. */
  display: block;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.ListeNewVoiture .TitreVoitureEquivalent span {
  margin-left: 4px;
  font-weight: 400;
}
.ListeNewVoiture .MapVnew {
  margin-top: 5px;
  margin-bottom: 5px;
  display: flex !important;
  align-items: center;
  justify-content: center;
  gap: 5px;
  font-size: 12.5px;
  color: var(--color-muted, #6b7075);
}
/* Icone de localisation (<i></i>) retiree du HTML : masquee ici aussi
   au cas ou elle resterait injectee par un autre contexte/override. */
.ListeNewVoiture .MapVnew i {
  display: none !important;
}
.ListeNewVoiture .CaractTopFiche {
  padding-top: 8px !important;
  min-height: 0 !important;
  text-align: center !important;
  display: flex !important;
  flex-wrap: wrap !important;
  justify-content: center !important;
  float: none !important;
  gap: 6px 6px;
}
/* Reduction de la taille de chaque "pastille" (Essence, boite, annee,
   km, CV, garantie...) pour que la liste tienne sur 2 lignes maximum
   plutot que de deborder sur 3-4 lignes. */
.ListeNewVoiture .CaractTopFiche span {
  display: inline-flex !important;
  align-items: center;
  float: none !important;
  margin: 0 !important;
  padding: 3px 7px;
  border-radius: 999px;
  font-size: 12px !important;
  line-height: 14px !important;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  letter-spacing: -0.01em;
  text-decoration: none;
}
.ListeNewVoiture .CaractTopFiche span svg {
  width: 10px !important;
  height: 10px !important;
  margin-right: 4px !important;
  margin-top: 0 !important;
  flex-shrink: 0;
}
.ListeNewVoiture .CaractTopFiche span img {
  width: 12px !important;
  height: auto !important;
  margin-left: 3px;
}
.ListeNewVoiture .PrixVoitureNew {
  margin-top: 4px !important;
  margin-bottom: 10px !important;
}
@media (min-width: 640px) {
  .ListeNewVoiture .PrixVoitureNew {
    height: 100px !important;
  }
}

/* ---------- Bloc prix (.MobilPrix) ----------
   Structure reelle : .MobilPrix > .PrixTTC (prix comptant) + .SeparOu
   ("Ou", si financement dispo) + .PrixTTC.PrixLoa.financement_vehicule
   (mensualite credit, affichee comme un bouton primaire). theme.css
   applique ici des dizaines de regles contradictoires issues d autres
   contextes (meme noms de classe reutilises ailleurs sur le site) : on
   reprend la main entierement avec une specificite/priorite suffisante
   pour un rendu propre et coherent avec le reste de la carte. */
.ListeNewVoiture .MobilPrix {
  min-height: 62px;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 14px;
  min-height: 0 !important;
  line-height: normal !important;
  flex-wrap: wrap;
}
.ListeNewVoiture .MobilPrix .PrixTTC {
  margin: 0 !important;
  padding: 0 !important;
  text-align: center !important;
  width: auto !important;
  font-size: inherit !important;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
}
.ListeNewVoiture .MobilPrix .PrixTTC .IconGaranti {
  font-size: 14px !important;
  color: var(--color-muted, #6b7075);
  text-transform: none;
}
.ListeNewVoiture .MobilPrix .PrixSubListe {
  font-size: 18px !important;
  font-weight: 800 !important;
  color: var(--color-text, #16181a) !important;
  font-family: inherit !important;
  white-space: nowrap;
  border: none !important;
  padding: 0 !important;
}
.ListeNewVoiture .MobilPrix .PrixTTC.PrixBarre .PrixSubListe {
  font-size: 13px !important;
  font-weight: 400 !important;
  text-decoration: line-through;
  color: var(--color-muted, #6b7075) !important;
}
.ListeNewVoiture .MobilPrix .PrixTTC.PrixRemise .PrixSubListe {
  color: var(--color-primary, var(--primary-color, #16181a)) !important;
}
.ListeNewVoiture .MobilPrix .SeparOu {
  display: block !important;
  position: static !important;
  width: auto !important;
  margin: 0 !important;
  font-size: 11px !important;
  font-weight: 600;
  color: var(--color-muted, #6b7075);
}
.ListeNewVoiture .MobilPrix .SeparOu div,
.ListeNewVoiture .MobilPrix .SeparOu hr {
  display: none !important;
}
/* Mensualite credit : bouton pilule plein (deja .uk-button-primary),
   on en tidy juste l agencement interne (prix + "/mois" + icone info
   alignes proprement). */
.ListeNewVoiture .MobilPrix .PrixTTC.PrixLoa {
  gap: 2px;
}
.ListeNewVoiture .MobilPrix .loatitre {
  display: block !important;
  font-size: 11px !important;
  font-weight: 600;
  color: var(--color-muted, #6b7075);
}
.ListeNewVoiture .MobilPrix .PrixCredit.PrixSubListe {
  display: inline-flex !important;
  align-items: center;
  gap: 5px;
  font-size: 15px !important;
  font-weight: 800 !important;
  background: var(--color-bg-soft, #f2f2f2) !important;
  color: var(--color-text, #16181a) !important;
  padding: 8px 14px !important;
  border-radius: 999px !important;
  line-height: normal !important;
  white-space: nowrap;
}
.ListeNewVoiture .MobilPrix .PrixCredit.PrixSubListe strong {
  color: var(--color-text, #16181a) !important;
  font-size: 12px !important;
  font-weight: 500 !important;
}
.ListeNewVoiture .MobilPrix .PrixCredit .type-financement1 {
  display: inline-flex !important;
  align-items: center;
}
/* Meme correctif que .vehicule .PrixVoitureListe .PrixCredit .infoPrixN
   et .NotreSelectionHome .PrixLoa .infoPrixN (verifie en navigateur
   reel) : une taille explicite sur le conteneur de l icone lui-meme
   (pas seulement sur le svg a l interieur) + flex-shrink:0, sinon la
   chaine d elements flex imbriques calcule une largeur "auto" a 0px. */
.ListeNewVoiture .MobilPrix .PrixCredit .infoPrixN {
  position: static !important;
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  width: 16px !important;
  height: 16px !important;
  flex: 0 0 16px !important;
  color: var(--color-text, #16181a);
}
.ListeNewVoiture .MobilPrix .PrixCredit .infoPrixN svg {
  display: block !important;
  width: 13px !important;
  height: 13px !important;
  flex-shrink: 0;
}

/* Ligne titre : nom du vehicule a gauche, badges (remise + "Livraison
   a domicile") a droite, sur la meme ligne. Le tag ".RemiseOperation"
   (ex: "Controle technique offert") est deplace ici, AVANT le badge
   livraison, plutot que superpose sur l image du slider. */
.ListeNewVoiture .TitreVoitureRow {
  display: flex;
  align-items: flex-start;
  gap: 8px;
}
.ListeNewVoiture .TitreVoitureRow .TitreVoitureEquivalent {
  flex: 1 1 auto;
  min-width: 0;
  text-align: center !important;
}
.ListeNewVoiture .TitreVoitureBadges {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  flex: 0 0 auto;
  max-width: 45%;
  gap: 6px;
}
.ListeNewVoiture .TitreVoitureBadges .LivraisonPo,
.ListeNewVoiture .TitreVoitureBadges .RemiseOperation .remiseNew {
  display: inline-block;
  white-space: normal;
  text-align: center;
  font-size: 10.5px;
  line-height: 1.25;
  padding: 5px 8px;
  border-radius: 6px;
}
.ListeNewVoiture .TitreVoitureBadges .RemiseOperation {
  position: static !important;
  top: auto !important;
  height: auto !important;
  width: auto !important;
}

/* Boutons "Reservez des maintenant" / "En savoir plus" sur la meme
   ligne, chacun dans son propre bloc a cote de l autre, avec exactement
   la meme bordure et le meme rayon (seule la couleur de fond change,
   gris pour "reserver", noir pour "en savoir plus"). */
.ListeNewVoiture .BtnSectionRow {
  display: flex;
  gap: 8px;
}
.ListeNewVoiture .BtnSectionRow .uk-button {
  flex: 1 1 0;
  padding-left: 6px;
  padding-right: 6px;
  font-size: 12.5px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  border-radius: 999px !important;
  border: 1.5px solid transparent !important;
  box-sizing: border-box;
}

/* Lien "Nous contacter" : simple lien (pas de fond/bordure de bouton),
   soulignement/estompage au survol seulement. */

.ListeNewVoiture .lienContacterV a {
  display: inline-block;
  background: none !important;
  border: none !important;
  text-decoration: none !important;
  color: var(--color-text, #16181a);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  padding: 0;
  transition: opacity 160ms ease;
}
@media (hover: hover) {
  .ListeNewVoiture .lienContacterV a:hover {
    opacity: 0.6;
  }
}

/* Cartes etroites (grille 2 ou 3 colonnes entre 640px et ~1199px : la
   carte elle-meme ne fait alors plus que 190-320px de large) : le
   layout "2 colonnes" (titre / badges) et les 2 boutons cote a cote
   debordent et se retrouvent tronques ("Rés...", badge coupe a
   gauche...). On repasse en empilement vertical simple, sans troncature
   ni recadrage, tant qu il n y a pas assez de place. */
@media (max-width: 1199px) {
  .ListeNewVoiture .TitreVoitureRow {
    flex-direction: column;
    gap: 6px;
  }
  .ListeNewVoiture .TitreVoitureRow .TitreVoitureEquivalent {
    flex: 1 1 100%;
    /* Le parent ".TitreVoitureRow" a "align-items:flex-start" (regle
       desktop) : en flex-direction:column, ca empeche ce <h3> de
       s etirer sur toute la largeur (cross-axis) — il se reduit a la
       largeur de son contenu et reste colle a gauche, rendant le
       text-align:center inefficace (centre dans une boite deja trop
       etroite). width:100% force l etirement quel que soit align-items
       du parent (verifie en navigateur reel : 165px -> pleine largeur). */
    width: 100% !important;
    text-align: center !important;
  }
}
/* En mobile (cartes 1 ou 2 par ligne, tres etroites) : la troncature
   "nowrap + ellipsis" (prevue pour les cartes larges desktop) empechait
   le centrage d etre visible (le texte depasse presque toujours la
   largeur de la carte, donc toujours coupe du meme cote, jamais
   vraiment centre). On autorise le retour a la ligne sur 2 lignes max
   a la place, en gardant tout centre, pour un rendu plus soigne et
   lisible que des mots tronques en plein milieu. */
@media (max-width: 639px) {
  .ListeNewVoiture .TitreVoitureEquivalent {
    white-space: normal !important;
    overflow: visible !important;
    text-overflow: clip !important;
    text-align: center !important;
    font-size: 15px;
    line-height: 1.3;
  }
  .ListeNewVoiture .TitreVoitureEquivalent span {
    display: block;
    margin-left: 0;
    font-size: 12.5px;
    font-weight: 400;
    color: var(--color-muted, #6b7075);
    margin-top: 2px;
  }
  .ListeNewVoiture .TitreVoitureBadges {
    flex-direction: row;
    flex-wrap: wrap;
    align-items: flex-start;
    max-width: 100%;
    width: 100%;
  }
  .ListeNewVoiture .TitreVoitureBadges .LivraisonPo,
  .ListeNewVoiture .TitreVoitureBadges .RemiseOperation .remiseNew {
    white-space: nowrap;
  }



  .ListeNewVoiture .BtnSectionRow {
    flex-direction: column;
  }
  /* En colonne, "flex:1 1 0" + "overflow:hidden" (regle desktop) fait
     que la hauteur automatique du bouton se resout a 0 (le minimum
     automatique d un flex item devient 0 des que overflow n est pas
     visible - cf. spec flexbox) : le bouton se retrouve ecrase a 1-2px,
     visible seulement comme un mince trait noir/gris (bug constate).
     On repasse en taille naturelle (flex fixe, pas de grow/shrink). */
  .ListeNewVoiture .BtnSectionRow .uk-button {
    flex: 0 0 auto;
    width: 100%;
    height: auto;
    min-height: 44px;
    overflow: visible;
    white-space: normal;
    line-height: 1.3;
    padding-top: 11px;
    padding-bottom: 11px;
  }
}

/* ============================================================
   Banniere pub (offre/operation) au dessus de la liste vehicules
   (.TextFestivalVo, default_listing.php) : image forcee en
   width:100% / height:320px (desktop et mobile), recadree proprement
   (object-fit:cover) plutot que de garder sa taille naturelle brute
   ("uk-align-center" ne fait qu un centrage, pas un redimensionnement). */
.TextFestivalVo {
  padding: 0 !important;
  margin: 24px 0;
}
.TextFestivalVo a {
  display: block;
  border-radius: 14px;
  overflow: hidden;
}
.TextFestivalVo img {
  display: block;
  width: 100% !important;
  height: 320px !important;
  max-width: 100% !important;
  object-fit: cover !important;
  object-position: center !important;
  margin: 0 !important;
  float: none !important;
}
@media (max-width: 767px) {
  .TextFestivalVo {
    margin: 16px 12px;
  }
  .TextFestivalVo a {
    border-radius: 10px;
  }
  /* Mobile : image entiere visible, sans recadrage/zoom - la hauteur
     fixe + object-fit:cover du desktop coupait des morceaux de l image
     (ex: texte/logo en bord de photo) ; ici la hauteur suit la largeur
     (aspect-ratio naturel) et rien n est rogne. */
  .TextFestivalVo img {
    height: auto !important;
    max-height: none !important;
    object-fit: contain !important;
  }
}

/* ============================================================
   FICHE VEHICULE — .vehicule (components/com_swconcession/tmpl/vehicule)
   Scope : default.php + default_info.php + partials/{header,infos_
   principales,caracteristiques,equipements_serie,equipements_options,
   a_propos}.inc
   Bloc de droite (nom/prix/CTA) + bloc "Caracteristiques" en bas de
   page, modernises (cartes, accordeon, grille 2 colonnes desktop / 1
   colonne mobile). Le formulaire ".ContactFModal" (modale de contact)
   n est volontairement PAS touche ici (demande explicite).
   ============================================================ */

/* ---------- Colonne de droite : nom, prix, CTA ---------- */
.vehicule .RightFicheVoitureNew {
  margin-top: 0px;
  padding: 22px 24px 28px;
  background: #fff;
  border: 1px solid var(--color-border, rgba(0, 0, 0, 0.08));
  border-radius: 16px;
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.06);
}
/* Espaces verticaux resserres : le theme pose des marges genereuses
   (h1:10px, span:10px, .MapLienFiche:20px, en plus d un badge remise
   qui reserve deja sa propre hauteur) qui laissaient un bloc "titre"
   avec beaucoup de vide. On reduit ces marges sans les supprimer
   totalement (ne pas coller les elements les uns aux autres). */
.vehicule .NomVehiculesFiche h1 {
  font-size: 22px;
  font-weight: 700;
  margin: 4px 0 2px;
  line-height: 1.25;
}
.vehicule .NomVehiculesFiche span {
  display: block;
  color: var(--color-muted, #6b7075);
  font-size: 14px;
  margin-bottom: 4px;
}
.vehicule .NomVehiculesFiche .MapLienFiche {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin: 8px 0 0;
  font-size: 13px;
  font-weight: 600;
  color: var(--color-text, #16181a);
  background: var(--color-bg-soft, #f6f7f9);
  padding: 6px 14px;
  border-radius: 999px;
}
/* IMPORTANT : sur cette page, .TagsOverImgTop/.TagsOverImgBottom (ici
   dans .NomVehiculesFiche, pas dans une image en position:relative)
   sont deux conteneurs DISTINCTS (tag1 d un cote, tag2+tag3 de l autre)
   : impossible de les aligner sur une seule ligne tant qu ils restent 2
   boites separees, meme en flex. display:contents les retire du rendu
   (sans toucher au HTML) et "remonte" directement leurs enfants
   (.RemiseOperation, puis .remiseNew) au niveau de .NomVehiculesFiche,
   qui les affiche alors comme de vrais freres sur une seule ligne,
   centres grace a sa classe uk-text-center + remiseNew en inline-flex. */
.vehicule .NomVehiculesFiche .TagsOverImgTop,
.vehicule .NomVehiculesFiche .TagsOverImgBottom {
  position: static !important;
  display: contents !important;
}
.vehicule .NomVehiculesFiche .RemiseOperation {
  display: contents !important;
}
.vehicule .RemiseOperation {
  display: flex !important;
  flex-wrap: nowrap !important;
  justify-content: center !important;
  align-items: center !important;
  gap: 6px !important;
  width: 100% !important;
  overflow-x: auto;
  scrollbar-width: none;
}
.vehicule .RemiseOperation::-webkit-scrollbar {
  display: none;
}
.vehicule .RemiseOperation .remiseNew {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  white-space: nowrap;
  margin: 0 !important;
  border-radius: 8px;
  font-weight: 700;
  letter-spacing: 0.01em;
}
/* .NomVehiculesFiche .remiseNew (sans ancetre .RemiseOperation au-dessus
   puisqu il est aplati par display:contents) garde SA PROPRE regle avec
   margin:0 3px (gap visuel entre les 3 tags) plutot que margin:0
   impose par la regle ci-dessus pour les autres contextes. */
.vehicule .NomVehiculesFiche .remiseNew {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  white-space: nowrap;
  margin: 0 6px !important;
  border-radius: 8px;
  font-weight: 700;
  letter-spacing: 0.01em;
}

/* Pastilles caracteristiques rapides (Essence, CV, Km, boite, garantie) */
.vehicule .CaractTopFiche {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 10px 0 !important;
  padding: 10px 0 !important;
  border-top: 1px solid var(--color-border, rgba(0, 0, 0, 0.08));
  border-bottom: 1px solid var(--color-border, rgba(0, 0, 0, 0.08));
}
.vehicule .CaractTopFiche > span {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 3px;
  flex: 1 1 0;
  min-width: 64px;
  text-align: center;
  font-size: 11.5px;
  font-weight: 600;
  color: var(--color-text, #16181a);
}
.vehicule .CaractTopFiche > span i,
.vehicule .CaractTopFiche > span [uk-icon] {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--nav-primary, var(--color-primary, #16181a));
  width: 22px;
  height: 22px;
}
.vehicule .CaractTopFiche > span i svg,
.vehicule .CaractTopFiche > span [uk-icon] svg {
  width: 100%;
  height: 100%;
}
.vehicule .CaractTopFiche .IconGaranti em {
  font-style: normal;
}

/* Prix + financement : espacement resserre (le theme posait 20px de
   marge au dessus du bloc + un padding disparate sur le lien credit). */
.vehicule .PrixVoitureListe {
  margin: 20px 0 !important;
  align-items: center !important;
}
.vehicule .PrixVoitureListe .PrixTTC {
  padding: 0 !important;
}
.vehicule .PrixVoitureListe .PrixTTC .smallSpan {
  display: block;
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--color-muted, #6b7075);
  margin-bottom: 4px;
}
.vehicule .PrixVoitureListe .PrixSubListe {
  font-size: 26px;
  font-weight: 800;
  color: var(--color-text, #16181a);
}
.vehicule .PrixVoitureListe .PrixBarreNew {
  text-decoration: line-through;
  color: var(--color-muted, #6b7075);
  font-size: 14px;
}
.vehicule .PrixVoitureListe .SeparOu {
  color: var(--color-muted, #6b7075);
  font-weight: 700;
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  padding: 0 !important;
}

.NotreSelectionHome .PrixVoitureListe .SeparOu div  {
  color: var(--color-muted, #6b7075) !important;
  background: transparent !important;
}

.vehicule .PrixVoitureListe .SeparOu .uk-divider-vertical {
  height: 34px;
  margin: 0 0 6px;
  border-color: var(--color-border, rgba(0, 0, 0, 0.12));
}
.vehicule .PrixVoitureListe .PrixCredit {
  display: block;
  text-decoration: none;
  padding: 0 !important;
  line-height: normal !important;
}
.vehicule .PrixVoitureListe .PrixCredit .smallSpan {
  display: block;
  font-size: 11.5px;
  line-height: 1.3;
  color: var(--color-muted, #6b7075);
  margin-bottom: 4px;
}
.vehicule .PrixVoitureListe .PrixCredit .PrixSubListe {
  font-size: 22px;
  display: inline-flex !important;
  align-items: center;
  gap: 4px;
}
.vehicule .PrixVoitureListe .PrixCredit strong {
  display: inline-flex !important;
  align-items: center;
  gap: 4px;
  font-size: 13px;
  font-weight: 400;
  position: static !important;
}
.vehicule .PrixVoitureListe .PrixCredit strong .infoPrixN {
  flex-shrink: 0 !important;
}
/* Icone info ("sw-info") : theme.css la positionne en absolute avec un
   offset inline en pixels ("right:-17px", fragile/variable selon le
   texte autour) — on la remet en flux normal, alignee avec le texte. */
.vehicule .PrixVoitureListe .PrixCredit .infoPrixN {
  position: static !important;
  right: auto !important;
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  /* .infoPrixN (<i>) est lui-meme un conteneur flex, imbrique dans
     .uk-position-relative (<strong>) egalement flex, imbrique dans
     .financement_vehicule_prix (<span>) egalement flex : cette chaine
     d elements NATIVEMENT inline (i/strong/span) forces en flex calcule
     une largeur "auto" a 0px (verifie via CDP : aucune regle ne fixe
     explicitement 0, c est le calcul flex imbrique qui echoue a sizer
     sur le contenu). On fixe donc une largeur/hauteur EXPLICITES sur le
     conteneur lui-meme (pas seulement sur le svg a l interieur) et on
     empeche tout retrecissement flex. */
  width: 16px !important;
  height: 16px !important;
  flex: 0 0 16px !important;
  margin-left: 4px;
  color: var(--color-muted, #6b7075);
  text-decoration: none !important;
}
.vehicule .PrixVoitureListe .PrixCredit .infoPrixN svg {
  width: 13px;
  height: 13px;
  flex-shrink: 0;
}
/* Mention legale du financement (LOA/credit) : petit texte muted,
   compact, sans marge exterieure superflue. */
.vehicule .PrixVoitureListe p {
  margin: 8px 0 0 !important;
  color: var(--color-muted, #6b7075);
  line-height: 1.4 !important;
}

/* Boutons CTA */
.vehicule .BtnContactficheNew {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
}
.vehicule .BtnContactficheNew .loadSw {
  flex: 0 0 100%;
  order: 10;
}
.vehicule .BtnContactficheNew .uk-button {
  flex: 1 1 0;
  min-width: 0;
  border-radius: 999px !important;
  font-weight: 700 !important;
  height: 52px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  transition: transform 160ms ease, box-shadow 160ms ease;
  color: #fff !important;
}
@media (hover: hover) {
  .vehicule .BtnContactficheNew .uk-button:hover {
    transform: translateY(-1px);
    box-shadow: 0 10px 24px rgba(0, 0, 0, 0.18);
  }
}

/* Bloc livraison (accordeon simple) : le theme (theme.css) pose une
   ligne sur deux en pilule pleine couleur marque (".ListeLiv:nth-child
   (even) { background:var(--primary-color); border-radius:17px }"),
   illisible sur une ligne large (texte blanc qui deborde du radius,
   coupe a mi-hauteur) - remplace ici par un tableau propre, rayures
   discretes, sans depasser du theme d etat "ouvert/ferme" de l icone
   +/- (deja gere par le theme via [aria-expanded], on l habille juste). */
.vehicule .BlocLivraison {
  max-width: none !important;
  margin: 18px auto 0 !important;
  border: 1px solid var(--color-border, rgba(0, 0, 0, 0.08)) !important;
  border-radius: 12px !important;
  padding: 14px 18px !important;
}
.vehicule .BlocLivraison .TitreLiv {
  cursor: pointer;
  font-size: 13.5px;
  font-weight: 600;
  color: var(--color-text, #16181a) !important;
  gap: 10px;
}
.vehicule .BlocLivraison .TitreLiv span {
  margin-left: 0 !important;
  flex-shrink: 0;
  color: var(--nav-primary, var(--color-primary, #16181a));
}
/* Le theme bascule +/- via "[aria-expanded]" sur le declencheur, mais
   uk-toggle ne pose jamais cet attribut ici (constate : reste "null"
   apres ouverture) - l icone restait bloquee sur "+" meme une fois le
   contenu deplie. On pilote plutot l icone via l etat REEL du panneau
   cible (attribut "hidden" sur .ContentLiv), fiable quel que soit le
   comportement de aria-expanded. */
.vehicule .BlocLivraison .TitreLiv .LivPlus {
  display: none;
}
.vehicule .BlocLivraison .TitreLiv .LivMoins {
  display: inline-flex;
}
.vehicule .BlocLivraison .TitreLiv:has(+ .ContentLiv[hidden]) .LivPlus {
  display: inline-flex;
}
.vehicule .BlocLivraison .TitreLiv:has(+ .ContentLiv[hidden]) .LivMoins {
  display: none;
}
.vehicule .BlocLivraison .TitreTabLiv {
  font-weight: 700;
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  color: var(--color-muted, #6b7075);
  padding-top: 16px;
  margin-top: 14px;
  border-top: 1px dashed var(--color-border, rgba(0, 0, 0, 0.1));
}
.vehicule .BlocLivraison .TitreTabLiv div {
  padding: 8px 10px !important;
}
.vehicule .BlocLivraison .ContentLiv .ListeLiv {
  font-size: 13px;
  padding: 0 !important;
  border-radius: 0 !important;
  background: none !important;
  color: var(--color-text, #16181a) !important;
  border-bottom: 1px solid var(--color-border, rgba(0, 0, 0, 0.06));
}
.vehicule .BlocLivraison .ContentLiv .ListeLiv:last-child {
  border-bottom: none;
}
.vehicule .BlocLivraison .ContentLiv .ListeLiv:nth-child(even) {
  background: var(--color-bg-soft, #f6f7f9) !important;
  border-radius: 8px !important;
}
.vehicule .BlocLivraison .ContentLiv .ListeLiv div {
  padding: 9px 10px !important;
  font-weight: 600;
}

/* Icones de contact rapide (mobile uniquement) */
.vehicule .ContactMobile {
  margin-top: 16px;
  padding-top: 16px;
  border-top: 1px solid var(--color-border, rgba(0, 0, 0, 0.08));
}
.vehicule .ContactMobile a {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  height: 44px;
  border-radius: 999px;
  background: var(--color-bg-soft, #f6f7f9);
  font-size: 12.5px;
  font-weight: 600;
}

/* ---------- Bloc "Caracteristiques" (accordeon en bas de fiche) ---------- */
.vehicule .CaracteristiqueVoiture {
  margin-top: 8px;
}
.vehicule .CaracteristiqueVoiture > div > div {
  margin-bottom: 14px;
  background: #fff;
  border: 1px solid var(--color-border, rgba(0, 0, 0, 0.08));
  border-radius: 14px;
  overflow: hidden;
}
.vehicule .CaracteristiqueVoiture .uk-accordion-title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 18px 22px;
  font-size: 15px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  color: var(--color-text, #16181a);
  text-decoration: none !important;
}
.vehicule .CaracteristiqueVoiture .uk-accordion-title .plus,
.vehicule .CaracteristiqueVoiture .uk-accordion-title .minus {
  color: var(--nav-primary, var(--color-primary, #16181a));
  flex-shrink: 0;
}
.vehicule .CaracteristiqueVoiture .uk-accordion-content {
  padding: 4px 22px 20px;
  border-top: 1px solid var(--color-border, rgba(0, 0, 0, 0.06));
}

/* Lignes cle/valeur "Caracteristiques" : une seule colonne, un item par
   ligne pleine largeur (demande explicite - pas de grille 2 colonnes),
   aussi bien sur desktop que mobile. Pas de fond colore (demande
   explicite) : simple separateur + leger accent de couleur marque sur
   le bord gauche au survol. */
.vehicule .ListeCaracteristique {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  width: 100%;
  padding: 13px 4px;
  border-bottom: 1px solid var(--color-border, rgba(0, 0, 0, 0.08));
  border-left: 3px solid transparent;
  font-size: 13.5px;
  line-height: normal;
  float: none;
  background: none !important;
  transition: border-color 160ms ease, padding-left 160ms ease;
}
@media (hover: hover) {
  .vehicule .ListeCaracteristique:hover {
    border-left-color: var(--nav-primary, var(--color-primary, #16181a));
    padding-left: 12px;
  }
}
.vehicule .ListeCaracteristique .TypeCarat {
  color: var(--color-muted, #6b7075);
  font-weight: 600;
  flex: 1 1 auto;
}
.vehicule .ListeCaracteristique .ValueCaract {
  font-weight: 700;
  text-align: right;
  flex: 0 0 auto;
  max-width: 60%;
}

/* ---------- Ligne CO2 (.Caract_CO2) ----------
   Variante de .ListeCaracteristique qui contient en plus toute
   l etiquette energie-CO2 (.GlobCO2Etiquette) : le flex row
   label/valeur generique (justify-content:space-between, ValueCaract
   limite a 60%) ne convient pas ici, il faut une colonne pleine
   largeur (libelle "CO2" au-dessus, echelle en dessous). */
.vehicule .Caract_CO2 {
  flex-direction: column;
  align-items: flex-start;
  gap: 8px;
  margin-left: 40px;
   margin-top: 10px;
  width: 80%;
}
.vehicule .Caract_CO2 .ValueCaract {
  max-width: none;
  text-align: left;
  color: var(--color-muted, #6b7075);
  font-weight: 600;
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.vehicule .Caract_CO2 .GlobCO2Etiquette {
  width: 100%;
}

/* Listes d equipements (serie / options) : pas de fond colore (demande
   explicite) - simple ligne avec coche dans un rond de la couleur de
   la marque et un separateur discret, grille 2 colonnes sur desktop,
   1 colonne pleine largeur sur mobile. */
.vehicule .equipementfiche .uk-accordion-content ul {
  list-style: none;
  margin: 0;
  padding: 4px 0 0;
  display: grid;
  grid-template-columns: 1fr;
  gap: 0;
}
@media (min-width: 768px) {
  .vehicule .equipementfiche .uk-accordion-content ul {
    grid-template-columns: 1fr 1fr;
    column-gap: 24px;
  }
}
.vehicule .equipementfiche .uk-accordion-content ul li {
  position: relative;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 11px 4px 11px 30px;
  font-size: 13.5px;
  float: none;
  background: none !important;
  border-bottom: 1px solid var(--color-border, rgba(0, 0, 0, 0.08));
}
.vehicule .equipementfiche .uk-accordion-content ul li::before {
  content: "";
  position: absolute;
  left: 2px;
  top: 50%;
  transform: translateY(-50%);
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: var(--nav-primary, var(--color-primary, #16181a));
  -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='white' d='M8 15l-4.5-4.5 1.4-1.4L8 12.2l7.1-7.1 1.4 1.4z'/></svg>") center / 11px no-repeat;
  mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='white' d='M8 15l-4.5-4.5 1.4-1.4L8 12.2l7.1-7.1 1.4 1.4z'/></svg>") center / 11px no-repeat;
  flex-shrink: 0;
}

/* "A propos" : texte plus lisible, espacements corrects */
.vehicule .CaracteristiqueVoiture .uk-accordion-content p {
  line-height: 1.6;
  font-size: 13.5px;
  color: var(--color-text, #16181a);
}

/* ---------- Responsive mobile ---------- */
@media (max-width: 767px) {
  .vehicule .RightFicheVoitureNew {
    padding: 18px 16px 22px;
    border-radius: 0;
    border-left: none;
    border-right: none;
    box-shadow: none;
  }
  .vehicule .MentionTTC {
    margin-right: 20px;
  }
  .vehicule .NomVehiculesFiche h1 {
    font-size: 19px;
  }
  /* Tag ".RemiseOperation > .remiseNew" ("Controle technique offert"...) :
     theme.css passe ".RightFicheVoitureNew .NomVehiculesFiche" en
     display:flex;flex-direction:column SANS align-items (donc "stretch"
     par defaut) a cette largeur. Or ".RemiseOperation" est aplati par
     display:contents (cf. regle plus haut) : son enfant ".remiseNew"
     devient alors un enfant flex DIRECT de .NomVehiculesFiche, et c est
     "align-items" (axe transversal d un flex en colonne = horizontal)
     qui determine son alignement, pas "justify-content" sur
     .RemiseOperation (qui n est meme plus une boite -> aucun effet,
     d ou le "ca ne marche pas"). */
  .vehicule .NomVehiculesFiche {
    align-items: center !important;
  }
  /* Ordre d affichage : theme.css impose ici h1 (order:1), puis
     .MapLienFiche (order:2), puis <span> finition (order:3) — la map
     apparaissait donc AVANT la finition du vehicule. Demande explicite :
     map APRES le <span>. */
  .vehicule .NomVehiculesFiche h1 {
    order: 1 !important;
  }
  .vehicule .NomVehiculesFiche span {
    order: 2 !important;
  }
  .vehicule .NomVehiculesFiche .MapLienFiche {
    order: 3 !important;
  }
  .vehicule .CaractTopFiche {
    justify-content: flex-start;
    gap: 14px 10px;
  }
  .vehicule .CaractTopFiche > span {
    flex: 0 0 auto;
    min-width: 0;
  }
  .vehicule .PrixVoitureListe {
    flex-wrap: wrap;
  }
  .vehicule .PrixVoitureListe .PrixSubListe {
    font-size: 21px;
  }
  /* Sur mobile les 2 boutons cote a cote n ont plus assez de place
     pour leur texte en entier a la taille desktop : on reduit la
     police/le padding plutot que de tronquer ("Réservez dès..."
     devenait illisible avec l'ellipsis coupant le debut du texte). */
  .vehicule .BtnContactficheNew .uk-button {
    height: 46px;
    padding: 0 8px;
    font-size: 12px;
  }
  .vehicule .CaracteristiqueVoiture .uk-accordion-title {
    padding: 15px 16px;
    font-size: 13.5px;
  }
  .vehicule .CaracteristiqueVoiture .uk-accordion-content {
    padding: 2px 16px 16px;
  }

  /* ---------- Etiquette CO2 (.GlobCO2Etiquette) ----------
     Reproduction fidele de la maquette (barres en forme de fleche,
     lettre coloree affichee EN DEHORS de la barre a droite, ligne
     active plus grande), adaptee en mobile avec des unites relatives
     (%) au lieu des PX fixes de theme.css (width:300px, barres 81px a
     243px, pointe ::after en bordure 13px/26px, span lettre en
     "right:-45px") qui debordaient toutes sur un ecran etroit.
     - Largeurs en % (plafonnees a 88% max, pas 100%) pour garder un
       couloir a droite ou afficher la lettre.
     - Pointe en fleche recreee via clip-path (independant de la
       largeur, contrairement aux bordures en triangle px d origine).
     - Lettre (span), au lieu d etre masquee, repositionnee en
       "left:100%" (relatif a SA PROPRE barre, quelle que soit sa
       largeur en %) plutot qu un offset fixe en px du conteneur. */
  .vehicule .GlobCO2Etiquette {
    width: 100% !important;
    max-width: 100% !important;
    margin: 8px 0 !important;
    overflow: visible !important;
  }
  .vehicule .GlobCO2Etiquette div {
    position: relative !important;
    font-size: 11px !important;
    font-weight: 700 !important;
    height: 22px !important;
    line-height: 22px !important;
    padding-left: 8px !important;
    clip-path: polygon(0 0, calc(100% - 9px) 0, 100% 50%, calc(100% - 9px) 100%, 0 100%);
  }
  .vehicule .GlobCO2Etiquette div::before,
  .vehicule .GlobCO2Etiquette div::after {
    display: none !important;
  }
  .vehicule .GlobCO2Etiquette div span {
    display: block !important;
    position: absolute !important;
    left: 100% !important;
    right: auto !important;
    top: 50% !important;
    transform: translateY(-50%);
    margin-left: 6px;
    font-size: 13px !important;
    font-weight: 800 !important;
  }
  .vehicule .GlobCO2Etiquette div.CO2EtiquetteA { width: 30% !important; }
  .vehicule .GlobCO2Etiquette div.CO2EtiquetteB { width: 40% !important; }
  .vehicule .GlobCO2Etiquette div.CO2EtiquetteC { width: 50% !important; }
  .vehicule .GlobCO2Etiquette div.CO2EtiquetteD { width: 60% !important; }
  .vehicule .GlobCO2Etiquette div.CO2EtiquetteE { width: 70% !important; }
  .vehicule .GlobCO2Etiquette div.CO2EtiquetteF { width: 80% !important; }
  .vehicule .GlobCO2Etiquette div.CO2EtiquetteG { width: 88% !important; }
  /* Ligne active (contient en plus la valeur "118 g CO2/Km", pas juste
     la lettre) : plus grande/haute que les autres, comme sur la
     maquette, mais garde la MEME largeur proportionnelle que sa lettre
     (pas 100%) pour rester fidele au visuel "marches d escalier". */
  .vehicule .GlobCO2Etiquette div.active {
	  width: 100% !important;
    height: auto !important;
    min-height: 34px;
    line-height: 1.25 !important;
    font-size: 13px !important;
    display: flex !important;
    align-items: center;
    flex-wrap: nowrap;
    white-space: nowrap;
    gap: 2px;
    padding: 6px 14px 6px 8px !important;
    clip-path: polygon(0 0, calc(100% - 14px) 0, 100% 50%, calc(100% - 14px) 100%, 0 100%);
  }
  .vehicule .GlobCO2Etiquette div.active strong {
    font-size: 16px;
    margin-right: 2px;
  }
  .vehicule .GlobCO2Etiquette div.active span {
    font-size: 15px !important;
  }
}

/* Supprime la bordure coloree (theme.css) autour du prix TTC et le
   fond plein colore du bouton credit, demande explicite. Meme
   breakpoint (max-width:960px) que les regles theme.css visees, pour
   une neutralisation exacte sur toute leur plage d application. */
@media (max-width: 960px) {
  .vehicule .RightFicheVoitureNew .TopVoitureContenu .PrixVoitureListe .PrixTTC .PrixSubListe {
    border: none !important;
  }
  .vehicule .RightFicheVoitureNew .TopVoitureContenu .PrixVoitureListe .PrixCredit.type-financement {
    background-color: transparent !important;
  }
  /* theme.css masque completement ".smallSpan" ici ("En Location avec
     Option d Achat a partir de" / libelle du type de financement) :
     reaffiche, demande explicite. */
  .vehicule .RightFicheVoitureNew .TopVoitureContenu .PrixVoitureListe .smallSpan {
    display: block !important;
  }
  .vehicule .RightFicheVoitureNew .TopVoitureContenu .PrixVoitureListe .PrixCredit.type-financement .PrixSubListe {
    text-decoration: none !important;
  }
  .vehicule .RightFicheVoitureNew .BtnContactficheNew {
    max-width: none !important;
  }
  .vehicule .RightFicheVoitureNew .BtnContactficheNew .BtnGlobContact {
    background-color: var(--primary-color);
  }
  .vehicule .RightFicheVoitureNew .BtnContactficheNew a.BtnReserverDes {
    margin-left: 25px;

  }
}

 .vehicule .RightFicheVoitureNew .BtnContactficheNew a.BtnReserverDes {

	  background-color: #404040 !important;
  }
/* ---------- Breadcrumb : dernier element (page courante) trop long
   ----------
   Le dernier <li> (".fromvalue") reprend tout le titre SEO de la fiche
   (marque + modele + finition + energie + boite + ville) sans aucune
   troncature. Solution en CSS pur (pas de JS, demande explicite) :
   "max-width: 50ch" limite l affichage a environ 50 caracteres (unite
   CSS "ch" = largeur du caractere "0" de la police) avec
   text-overflow:ellipsis pour le "...". Le fil d Ariane reste par
   ailleurs contenu dans la largeur de page (pas de debordement/retour
   a la ligne). */
.breadcrumb {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  width: 100%;
  overflow: hidden;
}
.breadcrumb li {
  flex-shrink: 0;
}
.breadcrumb li:has(.fromvalue) {
  flex-shrink: 1;
}
.breadcrumb .fromvalue {
  display: inline-block;
  text-overflow: ellipsis;
  white-space: nowrap;
  vertical-align: bottom;
}
/* En mobile : afficher le breadcrumb EN ENTIER (texte complet du
   dernier element, pas tronque/invisible) — demande explicite. Le
   troncature ci-dessus (nowrap + overflow:hidden du parent) avait pour
   effet de couper completement ce dernier element sur un ecran etroit
   (verifie en navigateur reel : invisible, pas meme un "..."). On
   autorise donc le retour a la ligne pour ce cas precis. */
@media (max-width: 639px) {
  .breadcrumb {
    flex-wrap: wrap;
    overflow: visible;
  }
  .breadcrumb li:has(.fromvalue) {
    flex-shrink: 1;

  }
  .breadcrumb .fromvalue {
    display: block;
    white-space: normal;
    overflow: visible;
    text-overflow: clip;
    max-width: none;
    margin-top: 4px;
    line-height: 1.4;
  }
}

/* ============================================================
   VEHICULES EQUIVALENTS — .VoitureEquivalent (fiche vehicule)
   Scope : components/com_swconcession/tmpl/vehicule/partials/
   vehicules_equivalentes.inc
   Meme carte/bordure que les sections "Equipements de serie" et
   "Financement" (.CaracteristiqueVoiture > div), et memes cartes
   vehicule modernisees que sur la liste (.ListeNewVoiture) : image
   arrondie, badges compacts, prix, CTA pilule.
   ============================================================ */
.vehicule .VoitureEquivalent {
  margin: 24px 0 !important;
  background: #fff;
  border: 1px solid var(--color-border, rgba(0, 0, 0, 0.08));
  border-radius: 14px;
  padding: 22px;
}
.vehicule .VoitureEquivalent h3 {
  font-size: 15px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  color: var(--color-text, #16181a);
  text-align: left;
  margin: 0 0 4px;
  font-family: inherit;
}
.vehicule .VoitureEquivalent > p {
  text-align: left;
  color: var(--color-muted, #6b7075);
  font-size: 13px;
  margin: 0 0 6px;
}
.vehicule .VoitureEquivalent .SliderVoitureEquiv {
  max-width: 100%;
  padding-left: 40px;
  padding-right: 40px;
}

/* ---------- Carte vehicule (chaque slide) ---------- */
/* Marge entre les cartes du slider : le <li> ("vehicule-item") reste
   INTEGRALEMENT intact (aucun padding/margin/width dessus) - UIkit
   calcule la position/translation du slider a partir de sa largeur
   exacte (uk-child-width-1-2@s...) et le moindre changement de son
   box-model desynchronise cette translation (constate : cartes
   massivement decalees hors-champ). La marge visuelle est donc portee
   UNIQUEMENT par le wrapper interne (.VehiculeEquivCard, ajoute au
   template), qui n a aucune incidence sur le calcul du slider. */
.vehicule .VoitureEquivalent .vehicule-item {
  height: 100%;
}
.vehicule .VoitureEquivalent .VehiculeEquivCard {
  height: calc(100% - 4px);
  margin: 2px 6px;
  display: flex;
  flex-direction: column;
  background: #fff;
  border: 1px solid var(--color-border, rgba(0, 0, 0, 0.08));
  border-radius: 14px;
  overflow: hidden;
  transition: box-shadow 200ms ease, transform 200ms ease;
}
@media (hover: hover) {
  .vehicule .VoitureEquivalent .VehiculeEquivCard:hover {
    box-shadow: 0 12px 28px rgba(0, 0, 0, 0.1);
    transform: translateY(-2px);
  }
}
.vehicule .VoitureEquivalent .ImgVoitureEqui {
  height: 190px !important;
  overflow: hidden;
}
.vehicule .VoitureEquivalent .ImgVoitureEqui img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.vehicule .VoitureEquivalent .uk-position-relative:not(.SliderVoitureEquiv) {
  padding: 14px 16px 16px;
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
}
.vehicule .VoitureEquivalent .TitreVoitureEquivalent {
  font-size: 14.5px;
  font-weight: 700;
  color: var(--color-text, #16181a);
  text-transform: none;
  text-align: left;
  margin: 0 0 4px;
}
.vehicule .VoitureEquivalent .MapVnew {
  text-align: left;
  margin-bottom: 10px;
}
.vehicule .VoitureEquivalent .MapVnew .MapLienFiche {
  font-size: 12px;
  color: var(--color-muted, #6b7075);
  background: none;
  padding: 0;
  display: inline-flex;
}

/* Pastilles caracteristiques (petit format, ligne compacte) */
.vehicule .VoitureEquivalent .CaractTopFiche {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 0 0 14px;
  padding: 0;
  border: none;
}
.vehicule .VoitureEquivalent .CaractTopFiche > span {
  display: inline-flex;
  flex-direction: row;
  align-items: center;
  flex: 0 0 auto;
  min-width: 0;
  gap: 5px;
  padding: 5px 10px;
  background: #fff;
  border: 1px solid var(--color-border, rgba(0, 0, 0, 0.1));
  border-radius: 999px;
  color: var(--color-text, #16181a);
  font-size: 11px;
  font-weight: 600;
  line-height: 1.3;
  transition: border-color 160ms ease, background-color 160ms ease;
}
.vehicule .VoitureEquivalent .CaractTopFiche > span [uk-icon],
.vehicule .VoitureEquivalent .CaractTopFiche > span i {
  color: var(--nav-primary, var(--color-primary, #16181a));
  flex-shrink: 0;
  width: 13px;
  height: 13px;
}

.vehicule .VoitureEquivalent .PrixVoitureListe {
  margin-top: auto;
  padding-top: 12px;
  border-top: 1px solid var(--color-border, rgba(0, 0, 0, 0.08));
}
.vehicule .VoitureEquivalent .lienPrixF {
  margin-bottom: 10px;
  text-align: center;
}
.vehicule .VoitureEquivalent .lienPrixF a {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  width: auto;
  max-width: 100%;
  justify-content: center;
  padding: 7px 14px;
  border-radius: 999px;
  background: var(--color-text, #16181a);
  color: #fff;
  font-size: 11px;
  font-weight: 700;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  text-decoration: none;
  transition: transform 160ms ease;
}
.vehicule .VoitureEquivalent .lienPrixF a [uk-icon] {
  width: 12px;
  height: 12px;
}
@media (hover: hover) {
  .vehicule .VoitureEquivalent .lienPrixF a:hover {
    transform: translateY(-1px);
  }
}
.vehicule .VoitureEquivalent .PrixTTC > span:first-child {
  display: block;
  font-size: 10.5px;
  color: var(--color-muted, #6b7075);
  font-weight: 700;
  text-transform: uppercase;
}
.vehicule .VoitureEquivalent .PrixSubListe {
  font-size: 16px;
  font-weight: 800;
  color: var(--color-text, #16181a);
}
.vehicule .VoitureEquivalent .SeparOu {
  color: var(--color-muted, #6b7075);
  font-weight: 700;
  font-size: 12px;
}

/* Fleches du slider : boutons circulaires, coherents avec le reste
   du site (ex. .bannSlider .ItemNav) */
.vehicule .VoitureEquivalent .SliderVoitureEquiv a.ItemNav {
  display: flex;
  align-items: center;
  justify-content: center;
  top: 50%;
  transform: translateY(-50%);
  width: 38px;
  height: 38px;
  border-radius: 50%;
  background-color: #fff;
  background-image: none !important;
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.16);
  color: var(--color-text, #16181a);
}
.vehicule .VoitureEquivalent .SliderVoitureEquiv a.ItemNav::before {
  content: "";
  width: 8px;
  height: 8px;
  border-top: 2px solid currentColor;
  border-right: 2px solid currentColor;
}
.vehicule .VoitureEquivalent .SliderVoitureEquiv a.uk-position-center-left-out {
  right: auto;
  left: 0;
}
.vehicule .VoitureEquivalent .SliderVoitureEquiv a.uk-position-center-left-out::before {
  transform: rotate(-135deg);
  margin-left: 3px;
}
.vehicule .VoitureEquivalent .SliderVoitureEquiv a.uk-position-center-right-out {
  left: auto;
  right: 0;
}
.vehicule .VoitureEquivalent .SliderVoitureEquiv a.uk-position-center-right-out::before {
  transform: rotate(45deg);
  margin-right: 3px;
}

@media (max-width: 767px) {
  .vehicule .VoitureEquivalent {
    padding: 16px;
    border-radius: 12px;
  }
  .vehicule .VoitureEquivalent .SliderVoitureEquiv a.uk-position-center-left-out {
    left: 4px;
  }
  .vehicule .VoitureEquivalent .SliderVoitureEquiv a.uk-position-center-right-out {
    right: 4px;
  }
  .vehicule .VoitureEquivalent .ImgVoitureEqui {
    height: 160px !important;
  }
}

/* ============================================================
   "REVENIR A LA LISTE" — fiche vehicule
   Scope : default_info.php (".RevenirListe .return-to-list-link",
   desktop, dans la colonne de droite) + default.php (".back-btn",
   mobile, au dessus du visuel). Remplace la boite grise avec icone en
   image de fond par un lien discret, fleche dessinee en CSS qui glisse
   au survol/tap.
   ============================================================ */
.vehicule .RightFicheVoitureNew .RevenirListe {
  background: none;
  padding: 0;
  margin-bottom: 6px;
  border-bottom: none;
}
.vehicule .RightFicheVoitureNew .RevenirListe a,
.vehicule .back-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: none;
  padding: 0;
  font-size: 12px;
  font-weight: 700;
  color: var(--color-muted, #6b7075);
  text-decoration: none;
  transition: color 160ms ease;
}
.vehicule .RightFicheVoitureNew .RevenirListe a::before,
.vehicule .back-btn::before {
  content: "";
  width: 7px;
  height: 7px;
  border-left: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  transform: rotate(45deg);
  transition: transform 160ms ease;
  flex-shrink: 0;
}
@media (hover: hover) {
  .vehicule .RightFicheVoitureNew .RevenirListe a:hover,
  .vehicule .back-btn:hover {
    color: var(--nav-primary, var(--color-primary, #16181a));
  }
  .vehicule .RightFicheVoitureNew .RevenirListe a:hover::before,
  .vehicule .back-btn:hover::before {
    transform: rotate(45deg) translate(-2px, -2px);
  }
}

/* Version mobile (".back-btn", en haut de la fiche, au dessus du
   slider photos) : meme lien, avec un peu d air autour pour rester
   une cible tactile confortable. */
.vehicule .back-btn {
  margin: 12px 16px !important;
  font-size: 13.5px;
}

/* ============================================================
   SLIDER PHOTOS — .SliderNewFiche (fiche vehicule)
   Scope : components/com_swconcession/tmpl/vehicule/partials/
   images.inc + block_share.inc.
   Demande explicite : garder tout le fonctionnement/style d origine
   (fleches, miniatures, icones de partage) tel quel, ajouter
   UNIQUEMENT une bordure + un radius sur le visuel, et centrer les
   boutons de partage sous le slider (au lieu de flotter en overlay).
   La bordure/radius est posee sur ".slick-list" (le cadre reellement
   recadre par Slick autour de l image) et non sur tout le conteneur,
   pour ne pas couper les fleches positionnees en dehors de l image. */
.vehicule .SliderNewFiche .slider .slick-list {
  border: 1px solid var(--color-border, rgba(0, 0, 0, 0.08));
  border-radius: 16px;
}

/* Boutons de partage (Facebook, X, LinkedIn, WhatsApp, mail, favori) :
   centres, APRES le slider (en bas), plutot qu en overlay flottant sur
   l image. Dans le DOM, ".BlocNavF" (qui contient les boutons de
   partage) est place AVANT le visuel : on reordonne en CSS (flex +
   order) plutot que de toucher au HTML, pour l afficher en dessous. */
/* Recentrage des boutons de partage : UNIQUEMENT en desktop (>=768px).
   En mobile, ".block_share" est transforme en menu deroulant
   (uk-dropdown, cf. script de default.php qui bascule ce comportement
   sous 960px) declenche par le bouton rond "partager" : le forcer en
   ligne fixe casserait ce fonctionnement d origine (demande explicite
   de le garder tel quel). */
@media (min-width: 768px) {
  .vehicule .SliderNewFiche {
    display: flex;
    flex-direction: column;
  }
  .vehicule .SliderNewFiche .BlocNavF {
    /* Le theme pose "position:absolute" sur ce conteneur (superpose a
       mi-hauteur de l image), ce qui rend "order" inefficace : un
       element hors flux n est pas repositionne par le flex de son
       parent. On le repasse en flux normal pour qu il suive vraiment
       le slider + les miniatures. */
    position: static !important;
    top: auto !important;
    bottom: auto !important;
    order: 2;
    width: 100%;
  }
  .vehicule .SliderNewFiche > .uk-position-relative {
    order: 1;
  }
  /* ".ShareButtonNew" (theme) restait en "position:absolute" et
     s affichait donc a mi-hauteur de l image, MALGRE le reordonnement
     ci-dessus (l ordre flex ne joue aucun role sur un element sorti du
     flux normal) : il faut aussi neutraliser cette position pour que
     le lien de partage suive reellement le flux, apres les miniatures
     ".slider-nav-thumbnails" (demande explicite). */
  .vehicule .SliderNewFiche .ShareButtonNew {
    position: static !important;
    top: auto !important;
    right: auto !important;
    display: flex;
    justify-content: center;
    width: 100%;
    margin-top: 40px;
  }
  .vehicule .SliderNewFiche .block_share {
    position: static !important;
    display: flex;
    justify-content: center;
    gap: 12px;
    width: 100%;
  }
}

@media (max-width: 767px) {
  .vehicule .SliderNewFiche .slider .slick-list {
    border-radius: 12px;
  }
}

/* ============================================================
   BONNES AFFAIRES — .BonnesAffaires (mod_vgrf_services)
   Scope : modules/mod_vgrf_services/tmpl/default.php
   Bloc statique (HTML + CSS) : grille de cartes vehicule en remise,
   badge de type d offre, prix barre/nouveau prix + pastille de
   reduction, coherent avec le langage visuel du reste du site
   (cartes blanches arrondies, ombre douce, pilule CTA couleur marque).
   ============================================================ */
.BonnesAffaires {
  margin: 40px auto;
}
/* Titre centre, comme les autres titres de module du site (ex.
   ".DecouvService h2" est en text-align:center) : le lien "Toutes les
   bonnes affaires" reste positionne en haut a droite (absolu), sans
   perturber le centrage du titre sur toute la largeur du bloc. */
.BonnesAffairesHead {
  position: relative;
  text-align: center;
  margin-bottom: 24px;
}
.BonnesAffairesHead h2 {
  font-size: 26px;
  font-weight: 800;
  margin: 0 0 6px;
  color: var(--color-text, #16181a);
}
.BonnesAffairesHead p {
  margin: 0;
  color: var(--color-muted, #6b7075);
  font-size: 14px;
}
.BonnesAffaires .BonnesAffairesLien {
  position: absolute;
  right: 0;
  top: 6px;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-weight: 700;
  font-size: 14px;
  color: var(--nav-primary, var(--color-primary, #16181a));
  text-decoration: none;
  white-space: nowrap;
  padding-bottom: 2px;
  border-bottom: 1.5px solid transparent;
  transition: border-color 160ms ease, gap 160ms ease;
}
@media (hover: hover) {
  .BonnesAffaires .BonnesAffairesLien:hover {
    border-color: currentColor;
    gap: 10px;
  }
}

/* Variante en pied de bloc (apres la grille) : flux normal, aligne a
   droite, au lieu du positionnement absolu en haut utilise par
   .BonnesAffairesHead. */
.BonnesAffairesFoot {
  display: flex;
  justify-content: flex-end;
  margin-top: 24px;
}
.BonnesAffairesFoot .BonnesAffairesLien {
  position: static;
  top: auto;
  right: auto;
}
@media (max-width: 767px) {
  .BonnesAffairesFoot {
    justify-content: center;
  }
}

.BonnesAffairesGrid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
}

.BACard {
  position: relative;
  display: flex;
  flex-direction: column;
  background: #fff;
  border: 1px solid var(--color-border, rgba(0, 0, 0, 0.08));
  border-radius: 16px;
  overflow: hidden;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.05);
  transition: transform 200ms ease, box-shadow 200ms ease;
}
/* Carte entierement cliquable : lien invisible en pleine surface,
   sous les elements reellement interactifs (le badge n en est pas un,
   mais le futur lien "Toutes les bonnes affaires" du header, lui,
   reste cliquable independamment car en dehors de la carte). */
.BACardLink {
  position: absolute;
  inset: 0;
  z-index: 1;
}
@media (hover: hover) {
  .BACard:hover {
    transform: translateY(-3px);
    box-shadow: 0 16px 36px rgba(0, 0, 0, 0.1);
  }
}

.BAMedia {
  position: relative;
  height: 220px;
  overflow: hidden;
  background: var(--color-bg-soft, #f2f3f5);
}
.BAMedia img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 300ms ease;
}
@media (hover: hover) {
  .BACard:hover .BAMedia img {
    transform: scale(1.04);
  }
}
.BABadge {
  position: absolute;
  top: 14px;
  left: 14px;
  z-index: 2;
  padding: 6px 14px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: #16181a;
  box-shadow: 0 4px 10px rgba(0, 0, 0, 0.15);
}
.BABadgeGold {
  background: #f0b429;
}
.BABadgeRed {
  background: var(--nav-primary, #e5383b);
  color: #fff;
}
.BABody {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  padding: 18px 20px 20px;
}
.BABody h3 {
  font-size: 17px;
  font-weight: 700;
  margin: 0 0 6px;
  color: var(--color-text, #16181a);
}
.BAMeta {
  margin: 0 0 14px;
  font-size: 12.5px;
  color: var(--color-muted, #6b7075);
}
.BAPriceRow {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding-top: 14px;
  border-top: 1px solid var(--color-border, rgba(0, 0, 0, 0.08));
}
.BAPrice {
  display: flex;
  flex-direction: column;
}
.BAOldPrice {
  font-size: 12.5px;
  color: var(--color-muted, #6b7075);
  text-decoration: line-through;
}
.BANewPrice {
  font-size: 21px;
  font-weight: 800;
  color: var(--color-text, #16181a);
}
.BADiscount {
  flex-shrink: 0;
  padding: 6px 12px;
  border-radius: 999px;
  background: var(--color-bg-soft, #f2f3f5);
  color: var(--color-text, #16181a);
  font-size: 12.5px;
  font-weight: 700;
}
.BANote {
  margin: 12px 0 0;
  font-size: 12px;
  line-height: 1.4;
  color: var(--color-muted, #6b7075);
}

/* Bouton "En savoir plus" : au dessus du lien de carte invisible
   (z-index), pilule pleine couleur marque comme les autres CTA du
   site ; la carte entiere reste cliquable via ".BACardLink", ce bouton
   est surtout visuel/affordance. */
.BABtn {
  position: relative;
  z-index: 2;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  align-self: flex-start;
  margin-top: 16px;
  padding: 10px 18px;
  border-radius: 999px;
  background: var(--color-text, #16181a);
  color: #fff;
  font-size: 13px;
  font-weight: 700;
  pointer-events: none;
  transition: transform 160ms ease, box-shadow 160ms ease;
}
@media (hover: hover) {
  .BACard:hover .BABtn {
    transform: translateY(-1px);
    box-shadow: 0 8px 18px rgba(0, 0, 0, 0.18);
  }
}

/* ---------- Responsive ---------- */
@media (max-width: 1023px) {
  .BonnesAffairesGrid {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (max-width: 639px) {
  .BonnesAffaires {
    margin: 36px auto;
    padding-left: 16px;
    padding-right: 16px;
  }
  /* Sur mobile, le lien "Toutes les bonnes affaires" doit venir APRES
     le titre (pas avant) : on repasse en flux normal (il est deja
     APRES le titre dans le HTML) plutot qu en position absolue en haut
     du bloc. */
  .BonnesAffaires .BonnesAffairesLien {
    position: static;
    display: block;
    margin-top: 12px;
  }
  .BonnesAffairesHead h2 {
    font-size: 21px;
  }
  .BonnesAffairesGrid {
    grid-template-columns: 1fr;
    gap: 18px;
  }
  .BAMedia {
    height: 200px;
  }
}

/* ============================================================
   LIEN RAPIDE "Hybrides & Electriques" — .FilterQuickLink
   Scope : components/com_swconcession/tmpl/vehicules/default_filter.php
   Raccourci vers le filtre energie Hybride/Electrique, affiche juste
   sous le label "Criteres de recherche" (desktop) / "Filtres" (mobile).
   Pilule pleine couleur marque, meme langage visuel que les CTA du
   reste du site (ex. ".BABtn", ".BtnContactficheNew .uk-button").
   ============================================================ */
.RefonteListe .FitlerLeft .FilterQuickLink {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 14px 0 18px;
  padding: 12px 16px;
  border-radius: 999px;
  background: #eaeaea;
  color: var(--color-text, #16181a);
  font-size: 13.5px;
  text-decoration: none;
  transition: background-color 160ms ease, transform 160ms ease, box-shadow 160ms ease;
}
@media (hover: hover) {
  .RefonteListe .FitlerLeft .FilterQuickLink:hover {
    background: #dedede;
    transform: translateY(-1px);
    box-shadow: 0 8px 20px rgba(0, 0, 0, 0.1);
    color: var(--color-text, #16181a);
  }
}
.RefonteListe .FitlerLeft .FilterQuickLinkIcon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 22px;
  height: 22px;
}
.RefonteListe .FitlerLeft .FilterQuickLinkIcon svg {
  width: 100%;
  height: 100%;
}
.RefonteListe .FitlerLeft .FilterQuickLinkIcon svg,
.RefonteListe .FitlerLeft .FilterQuickLinkIcon svg path,
.RefonteListe .FitlerLeft .FilterQuickLinkIcon svg [fill] {
  fill: var(--nav-primary, var(--color-primary, #16181a)) !important;
}
.RefonteListe .FitlerLeft .FilterQuickLinkIcon svg [stroke] {
  stroke: var(--nav-primary, var(--color-primary, #16181a)) !important;
}
.RefonteListe .FitlerLeft .FilterQuickLinkText {
  flex: 1 1 auto;
}
.RefonteListe .FitlerLeft .FilterQuickLinkArrow {
  flex-shrink: 0;
  transition: transform 160ms ease;
}
@media (hover: hover) {
  .RefonteListe .FitlerLeft .FilterQuickLink:hover .FilterQuickLinkArrow {
    transform: translateX(3px);
  }
}

@media (max-width: 959px) {
  .RefonteListe .FitlerLeft .FilterQuickLink {
    margin: 12px 16px;
  }
}

/* ============================================================
   Offres VN (components/com_swconcession/tmpl/offres_vn/default.php)
   — amelioration mobile : 1 bloc par ligne.
   Le fichier de la page definit lui-meme la grille en inline <style>
   (chargee dans le <body>, donc apres ce common.css dans la cascade) :
   .ListeOffresNew [uk-grid] > * est a calc(50% - 12px) par defaut (2
   par ligne, y compris sur mobile) puis calc(25% - 18px) a partir de
   640px (4 par ligne desktop/tablette). On passe a 100% (1 par ligne)
   en dessous de 640px, avec !important pour primer sur la regle du
   fichier de la page malgre un ordre de chargement plus tardif. ============================================================ */
@media (max-width: 639px) {
  .ListeOffresNew [uk-grid] > * {
    width: 100% !important;
  }
}

@media (max-width: 960px) {
  .ActuLigne3:nth-of-type(even) .ContenuOffre a {
  }
}


.financement_vehicule .financement_vehicule_prix {
	    width: 120px !important;
    color: #000 !important;
    background-color: #f2f2f2 !important;
	    padding: 0 20px 0 10px;
    line-height: 30px;
    border-radius: 20px;
    padding-top: 3px;
    position: relative;
    font-size: 15px;
    font-weight: bold;
	margin-left: 15px;
    margin-right: 15px;
}
.financement_vehicule .financement_vehicule_prix strong{
    color: #000 !important;
}
.financement_vehicule .financement_vehicule_type {
   width: 157px;
}


/* ============================================================
   TAGS OVERLAY SUR IMAGE VEHICULE — .TagsOverImgTop / .TagsOverImgBottom
   Scope : genere par SwconcessionHelper::titreVignetteHtml(), affiche a
   l interieur de .ImgVoitureEqui (position:relative). Tag1 en haut a
   gauche, Tag2+Tag3 en bas a gauche, sur une seule ligne, style pilule
   compact. Seules les couleurs par marque (.tag1/.tag2/.tag3) restent
   injectees dynamiquement par le helper (dependent de $color1/2/3) ;
   tout le reste du style vit ici. Place en fin de fichier pour primer
   sur ".ListeNewVoiture .RemiseOperation(.remiseNew)" (meme
   specificite) deja defini plus haut pour un autre contexte. ============================================================ */
.TagsOverImgTop {
  position: absolute !important;
  left: 8px !important;
  top: 8px !important;
  z-index: 2 !important;
  pointer-events: none !important;
}
.TagsOverImgBottom {
  position: absolute !important;
  left: 0 !important;
  right: 0 !important;
  bottom: 8px !important;
  z-index: 2 !important;
  padding: 0 8px !important;
  pointer-events: none !important;
}
.TagsOverImgTop .RemiseOperation,
.TagsOverImgBottom .RemiseOperation {
  pointer-events: auto !important;
  position: static !important;
  top: auto !important;
  left: auto !important;
  height: auto !important;
  display: flex !important;
  flex-wrap: nowrap !important;
  justify-content: flex-start !important;
  align-items: center !important;
  gap: 4px !important;
  width: 100% !important;
  margin: 0 !important;
  padding: 0 !important;
  text-align: left !important;
  float: none !important;
  overflow-x: auto !important;
  scrollbar-width: none !important;
}
.TagsOverImgTop .RemiseOperation::-webkit-scrollbar,
.TagsOverImgBottom .RemiseOperation::-webkit-scrollbar {
  display: none !important;
}
.TagsOverImgTop .RemiseOperation .remiseNew,
.TagsOverImgBottom .RemiseOperation .remiseNew {
  position: static !important;
  top: auto !important;
  flex: 0 0 auto !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  text-align: center !important;
  width: fit-content !important;
  max-width: none !important;
  padding: 4px 9px !important;
  border-radius: 999px !important;
  font-size: 10.5px !important;
  font-weight: 700 !important;
  line-height: 1.2 !important;
  white-space: nowrap !important;
  box-shadow: 0 2px 6px rgba(0, 0, 0, .25) !important;
}


  .vehicule .MentionTTC {
    margin-left: 25px;
    margin-right: 25px;
  }
  
  
/* ============================================================
   RECAP FILTRES — .RecapeFilter .blocFilterGlob
   theme.css impose un fond blanc fixe ; supprime en mobile. */
@media (max-width: 639px) {
  .RecapeFilter .blocFilterGlob {
    background-color: transparent;
  }
  
  .vehicules .NotreSelectionHome{padding:0px;}
}
 

.vehicule .SliderNewFiche .slick-dots {
    bottom: -60px;
}


.vehicule .SliderNewFiche .slider {
	
	margin-bottom: 5px;
    max-height: 500px;
}


.vehicule .iconZoomInIcon{

	display: none !important;
}

/* theme.css (vw, multimarque) impose ".PrisRendezBtn>a:after{content:'>'}",
   un chevron texte ajoute apres le bouton "Rendez-vous atelier" —
   supprime, demande explicite. */
.PrisRendezBtn > a::after {
  content: none !important;
}

/* ============================================================
   PAGE MODELE (landingmodele) — .landingmodele
   Scope : components/com_swconcession/tmpl/landingmodele/*.php
   - .BannLanding (default.php) : image en cover plein cadre + degrade
     sombre + titre centre, au lieu de l image en taille naturelle
     flottant au milieu d un fond gris (verifie en navigateur reel).
   - .ListeNewVoiture dans ce contexte (default_vehicules_new.php) :
     structure HTML plus simple que la vraie liste /occasion (pas de
     .TitreVoitureRow ni .InfoVehiculecolmun), d ou le titre et le prix
     restes alignes a gauche malgre nos regles existantes qui ciblent
     ces wrappers absents ici. Meme remarque que la liste des resultats :
     centrage du titre/prix.
   ============================================================ */
.landingmodele .BannLanding {
  position: relative;
  height: 320px;
  border-radius: 0;
  overflow: hidden;
  /* object-fit:contain (ci-dessous) peut laisser des bandes vides de
     chaque cote si le ratio de l image ne remplit pas tout le cadre :
     un fond uni plutot qu un blanc/transparent brut, coherent avec
     l ancien rendu (fond gris) de ce bandeau. */
  background: #e9eaec;
}
.landingmodele .BannLanding img {
  position: absolute;
  inset: 0;
  z-index: 1;
  width: 100%;
  height: 100%;
  /* Demande explicite : image COMPLETE, sans rognage ("sans zoom, je
     veux avoir l image complete") — contain au lieu de cover, l image
     entiere reste visible (quitte a laisser une bande de fond de
     chaque cote si son ratio ne correspond pas exactement au cadre). */
  object-fit: contain;
  /* Animation d entree SANS effet de zoom (demande explicite) : simple
     fondu + leger glissement vers le haut, pas de scale. */
  animation: bannLandingFadeIn 900ms cubic-bezier(0.22, 1, 0.36, 1) both;
}
@keyframes bannLandingFadeIn {
  from { opacity: 0; transform: translateY(14px); }
  to   { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
  .landingmodele .BannLanding img { animation: none; }
}
.landingmodele .BannLanding .LandTitre {
  position: absolute;
  inset: 0;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 24px;
  background: linear-gradient(180deg, rgba(0, 0, 0, 0.45) 0%, rgba(0, 0, 0, 0.15) 55%, rgba(0, 0, 0, 0.45) 100%);
}
.landingmodele .BannLanding .LandTitre h1 {
  color: #fff !important;
  font-size: 34px;
  font-weight: 800;
  margin: 0 0 10px;
}
.landingmodele .BannLanding .LandTitre h2 {
  color: #fff !important;
  font-size: 17px;
  font-weight: 500;
  margin: 0;
  opacity: 0.95;
}
@media (max-width: 639px) {
  .landingmodele .BannLanding { height: 220px; }
  .landingmodele .BannLanding .LandTitre h1 { font-size: 22px; }
  .landingmodele .BannLanding .LandTitre h2 { font-size: 13.5px; }
}

/* ---------- Cartes vehicules (meme remarque que la liste /occasion) ---------- */
/* .NotreSelecSub est etire par flexbox a la hauteur de la carte la plus
   haute de sa rangee (uk-grid = display:flex), avec overflow:hidden —
   le margin-top ajoute sur le titre ci-dessous faisait depasser le
   contenu reel de cette hauteur partagee sur certaines cartes,
   coupant le bouton "En savoir plus" en bas (verifie en navigateur
   reel : scrollHeight 496px pour une hauteur stretchee de 444px,
   bouton entierement sous le bord visible de la carte). On donne a la
   carte une hauteur minimale COHERENTE AVEC CE CONTENU (image 220px +
   marge/texte/bouton), pour qu elle ne soit jamais plus courte que ce
   qu il lui faut. */
.landingmodele .NotreSelecSub {
  min-height: 550px;
}
.landingmodele .ListeNewVoiture .TitreVoitureEquivalent {
  text-align: center !important;
  margin-top: 20px !important;
}
.landingmodele .ListeNewVoiture .TitreVoitureEquivalent a {
  color: inherit;
  text-decoration: none;
}
.landingmodele .ListeNewVoiture .MapVnew {
  justify-content: center;
}
.landingmodele .ListeNewVoiture .PrixVoitureNew {
  align-items: center;
}
.landingmodele .ListeNewVoiture .PrixTTC {
  text-align: center;
}
.landingmodele .ListeNewVoiture .PrixTTC span {
  display: block;
  font-size: 12px;
  color: var(--color-muted, #6b7075);
  margin-bottom: 2px;
}
.landingmodele .ListeNewVoiture .PrixTTC .PrixSubListe {
  font-size: 20px;
  font-weight: 800;
  color: var(--color-text, #16181a);
}
.landingmodele .ListeNewVoiture .BtnSection .uk-button {
  width: 100%;
  border-radius: 999px;
}

/* ---------- Mobile ---------- */
@media (max-width: 639px) {
  .landingmodele .BannLanding {
    height: 200px;
  }
  .landingmodele .BannLanding .LandTitre {
    padding: 16px;
  }
  .landingmodele .BannLanding .LandTitre h1 {
    font-size: 19px;
    margin-bottom: 6px;
  }
  .landingmodele .BannLanding .LandTitre h2 {
    font-size: 12.5px;
  }
  /* 1 carte par ligne (uk-width-1-2@s/1-3@m du HTML ne s appliquent
     qu a partir de 640px/960px de LARGEUR DE FENETRE, donc deja 100%
     en dessous — ceci reaffirme explicitement et resserre les marges). */
  .landingmodele .ListeNewVoiture {
    margin-bottom: 20px;
  }
  .landingmodele .ListeNewVoiture .TitreVoitureEquivalent {
    font-size: 15px;
    margin-top: 10px;
  }
  .landingmodele .ListeNewVoiture .PrixTTC .PrixSubListe {
    font-size: 18px;
  }
  .landingmodele .ListeNewVoiture .CaractTopFiche {
    justify-content: center;
    gap: 8px 10px;
  }
}

/* ============================================================
   SLIDER "MODELES DISPONIBLES" — page modele (landingmodele)
   Scope : components/com_swconcession/tmpl/landingmodele/default_modeles.php
   IMPORTANT : ce fichier reutilise la classe ".SliderHome" (deja stylee
   pour mod_vgrf_offers, cf. plus haut) mais avec une structure HTML
   DIFFERENTE et invalide pour nos selecteurs existants : ici c est le
   <a class="LienDispoNew"> qui est l enfant DIRECT du <ul> (chaque
   slide = cet <a>), avec le <li data-modele-id> imbrique A L INTERIEUR
   - alors que nos regles ".SliderHome .uk-slider-items > li[...]"
   ciblent un <li> enfant direct. Resultat verifie en navigateur reel :
   aucun style ne s applique, un seul immense visuel brut s affiche
   (1 par vue au lieu de 4, pas de carte/ombre/titre stylise). On cree
   donc ici des regles dediees qui ciblent la VRAIE structure
   (uk-slider-items > a), sans toucher aux regles existantes qui
   servent l autre usage de .SliderHome (page d accueil). */
.landingmodele .SliderHome .uk-slider-items {
  margin-left: 0 !important;
  justify-content: flex-start;
}
/* Moins de 4 modeles au total (ex. 3 pour une marque avec peu de
   modeles, cf. CUPRA) : la ligne ne remplit pas les 4 colonnes et
   reste calee a gauche par defaut — on la centre dans ce cas, comme
   deja fait pour les autres sliders/grilles du site. Les enfants sont
   des <a> ici (pas des <li>, cf. structure HTML particuliere de cette
   page expliquee plus haut). */
.landingmodele .SliderHome .uk-slider-items:has(> a:first-child:nth-last-child(-n+3)) {
  justify-content: center;
}
.landingmodele .SliderHome .uk-slider-items > a {
  display: block !important;
  /* Correspond aux classes du HTML : uk-child-width-1-2@s (640px+, 2
     colonnes) puis uk-child-width-1-4@m (960px+, 4 colonnes demandees) —
     width:100% par defaut en dessous de 640px (cf. media query plus
     bas), ces classes HTML n ayant aucune regle de largeur associee
     dans ce build UIkit (meme cause deja rencontree ailleurs sur ce
     site). */
  width: 100%;
  margin: 0 4px;
  text-decoration: none !important;
  color: inherit;
}
@media (min-width: 640px) {
  .landingmodele .SliderHome .uk-slider-items > a {
    width: calc(50% - 8px) !important;
  }
}
@media (min-width: 960px) {
  .landingmodele .SliderHome .uk-slider-items > a {
    width: calc(25% - 8px) !important;
  }
}
.landingmodele .SliderHome .uk-slider-items > a > li {
  list-style: none;
  background: #fff;
  border: 1px solid var(--color-border, rgba(0, 0, 0, 0.08));
  border-radius: var(--sh-radius, 16px);
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.05);
  overflow: hidden;
  transition: box-shadow 220ms cubic-bezier(0.22, 1, 0.36, 1),
              transform 220ms cubic-bezier(0.22, 1, 0.36, 1);
}
@media (hover: hover) {
  .landingmodele .SliderHome .uk-slider-items > a:hover > li {
    box-shadow: 0 16px 36px rgba(0, 0, 0, 0.12);
    transform: translateY(-4px);
  }
}
.landingmodele .SliderHome .PhotoSliderHome {
  height: 160px;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 14px;
  background: var(--color-bg-soft, #f6f7f9);
}
.landingmodele .SliderHome .PhotoSliderHome img {
  max-width: 100%;
  max-height: 100%;
  width: auto !important;
  height: auto !important;
  object-fit: contain;
  transition: transform 400ms cubic-bezier(0.22, 1, 0.36, 1);
}
@media (hover: hover) {
  .landingmodele .SliderHome .uk-slider-items > a:hover .PhotoSliderHome img {
    transform: scale(1.06);
  }
}
.landingmodele .SliderHome h3 {
  margin: 0;
  padding: 14px 10px;
  text-align: center;
  font-size: 15px;
  font-weight: 700;
  color: var(--color-text, #16181a);
  letter-spacing: 0.01em;
}
@media (max-width: 639px) {
  .landingmodele .SliderHome .uk-slider-items > a {
    width: 100% !important;
    margin: 0;
  }
  .landingmodele .SliderHome .PhotoSliderHome {
    height: 140px;
  }
}

/* .LienDispoNew est ici la classe de l <a> qui enveloppe TOUTE la
   carte (cf. structure HTML particuliere de cette page expliquee plus
   haut), pas le petit lien "stock neuf/occasion" de l autre usage de
   .SliderHome — la regle generale (fond + hover sombre) ne convient
   donc pas ici. Neutralise + hover clair, uniquement sur cette page. */
.landingmodele .SliderHome .LienDispoNew {
  background: none;
}
@media (hover: hover) {
  .landingmodele .SliderHome .LienDispoNew:hover {
    background: var(--color-bg-soft, #f6f7f9);
    color: inherit !important;
    transform: none;
  }
  .landingmodele .SliderHome .LienDispoNew:hover .ColorMarque {
    color: inherit !important;
  }
}
.landingmodele .SliderHome {
  padding: 30px 0 0px;
}

/* Grille de resultats (default_vehicules_new.php) : quand il n y a que
   1, 2 ou 3 vehicules au total, la ligne ne remplit pas toute la
   largeur et reste calee a gauche par defaut (uk-grid), laissant un
   grand vide a droite (verifie en navigateur reel : une seule carte
   "Q3 S Line" collee a gauche, le reste de la rangee vide). On centre
   la rangee uniquement dans ce cas, sans toucher au cas normal (4+
   vehicules, qui doit rester aligne a gauche comme un vrai debut de
   grille). */
.landingmodele .uk-grid-small.NotreSelectionHome:has(> .ListeNewVoiture:first-child:last-child),
.landingmodele .uk-grid-small.NotreSelectionHome:has(> .ListeNewVoiture:first-child:nth-last-child(2)),
.landingmodele .uk-grid-small.NotreSelectionHome:has(> .ListeNewVoiture:first-child:nth-last-child(3)) {
  justify-content: center;
}



    .cupracitygarageparis header {
        padding: 0px !important;
    }


	.cupracitygarageparis main {
        padding-top: 0px !important;
    }
	
		.cupracitygarageparis .uk-container .breadcrumb {
        margin-top: 0px;
	 }

/* =====================================================================
   HOME — CUPRA City Garage Paris (cupracitygarageparis)
   Style uniquement (aucun changement de contenu/texte/markup) :
   - corrige deux blocs rendus invisibles (voir ci-dessous)
   - harmonise l'habillage visuel (cartes arrondies, ombres, espacements)
   avec le reste du site, sans toucher a la charte de couleurs/fonts
   deja definie par templates/sw-concession-cupra/css/theme.css.
   ===================================================================== */

/* Bug constate en navigateur reel : les blocs textuels pilotes par
   "uk-scrollspy" (ex. "CHALLENGER L'ESTABLISHMENT", "BIENVENUE DANS
   L'EPICENTRE") restent bloques a opacity:0 — l'animation d'entree ne se
   declenche jamais une fois qu'on a defile plus bas dans la page (les
   images chargees en lazy plus loin modifient la hauteur du document
   apres coup, ce qui decale les seuils de declenchement calcules par
   UIkit). Resultat : de grands blocs de page totalement vides. On
   neutralise cette animation cassee en forcant ces textes visibles —
   le contenu doit toujours pouvoir se lire, anime ou non. */
.cupracitygarageparis .textBlock h2 span,
.cupracitygarageparis .textBlock h3,
.cupracitygarageparis .textBlock p,
.cupracitygarageparis .uk-text-center[uk-scrollspy] > div,
.cupracitygarageparis .photo-home > div {
    opacity: 1 !important;
}

.cupracitygarageparis .textBlock {
    text-align: center;
}
.cupracitygarageparis .textBlock h2 {
    text-align: center;
    font-size: clamp(26px, 3.2vw, 34px);
    margin-bottom: 18px;
}
.cupracitygarageparis .textBlock h3 {
    margin: 0 0 16px;
}
.cupracitygarageparis .textBlock p {
    color: #4b4b4b;
}
.cupracitygarageparis .textBlock p + p {
    margin-top: 14px;
}

/* Photos "photo-home" (2 images cote a cote) et "imageText" (bloc
   image + texte sur fond fonce) : coins arrondis + ombre douce, dans le
   meme langage visuel que les cartes utilisees ailleurs sur le site
   (vehicules, actualites, etc.), sans changer ni les images ni leur
   disposition en grille/flex deja en place. */
.cupracitygarageparis .photo-home img,
.cupracitygarageparis .imageText img,
.cupracitygarageparis .BlocLaune img {
    display: block;
    width: 100%;
    height: auto;
    border-radius: 16px;
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.18);
    object-fit: cover;
}
.cupracitygarageparis .photo-home > div {
    min-height: 60px;
}

/* .BlocLaune ("A LA UNE" / "ESSAYEZ MAINTENANT") : alignement vertical
   plus confortable entre l'image et le texte, et un peu plus d'air
   entre les deux colonnes en desktop (ne concerne pas le mobile, deja
   gere par la media query existante qui empile les blocs). */
@media (min-width: 960px) {
    .cupracitygarageparis .BlocLaune .imageText {
        display: flex;
        align-items: center;
        gap: 60px;
    }
    .cupracitygarageparis .BlocLaune .imageText > div:first-child {
        flex: 0 0 45%;
    }
    .cupracitygarageparis .BlocLaune .imageText > .TextHomeImg {
        flex: 1;
    }
}

/* Image pleine largeur en bas de page (img-6, avant le footer) :
   coins arrondis et marge coherente avec le reste des blocs, au lieu
   d'un rectangle brut colle au footer. */
.cupracitygarageparis #mod-custom242 img {
    display: block;
    width: 100%;
    height: auto;
    border-radius: 16px;
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.12);
}

/* Bloc Instagram : bouton + feed un peu plus espaces du reste, dans
   l'esprit du reste des sections (deja en pt-10, on affine juste la
   respiration verticale avant/apres). */
.cupracitygarageparis #InstagramScroll {
    padding-top: 10px;
    padding-bottom: 10px;
}
.cupracitygarageparis .TitreInstagram {
    text-align: center;
}

@media (max-width: 767px) {
    .cupracitygarageparis .photo-home img,
    .cupracitygarageparis .imageText img,
    .cupracitygarageparis .BlocLaune img {
        border-radius: 12px;
    }
    .cupracitygarageparis .textBlock {
        padding: 0 16px;
    }
}