/* ================================================================
   Vandeto Map v2.14.0 — Carrousel / Grille infinie (standalone)
   100% CSS scroll-snap natif · 3 dots max · cards PLATES
   (zéro transition/animation sur les cards : glissement pur)
   v2.14.0 : scroll-behavior:smooth retiré du track + slider
   d'images par card (natif, 3 dots max).
   Animations badge : compositor-only (transform/opacity)
   ================================================================ */
.vdm-crs-wrap *,.vdm-crs-wrap *::before,.vdm-crs-wrap *::after{box-sizing:border-box;}
.vdm-crs-wrap{position:relative;z-index:0;width:100%;max-width:100%;font-family:inherit;--vc-gap:16px;}

/* ── Header GPS opt-in (« rendu chez vous ») ────────────────── */
.vdm-crs-head{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin:0 2px 10px;}
.vdm-crs-gps-btn{display:inline-flex;align-items:center;gap:7px;padding:8px 15px;font-size:12.5px;font-weight:700;color:#11151c;background:#fff;border:1.5px solid #e6e6e6;border-radius:999px;cursor:pointer;transition:border-color .2s ease,box-shadow .2s ease,color .2s ease;-webkit-tap-highlight-color:transparent;font-family:inherit;line-height:1;}
.vdm-crs-gps-btn svg{width:15px;height:15px;color:#ff1700;flex-shrink:0;}
.vdm-crs-gps-btn:hover{border-color:#ff1700;box-shadow:0 4px 14px rgba(255,23,0,.14);}
.vdm-crs-gps-btn:active{transform:scale(.97);}
.vdm-crs-gps-btn[disabled]{opacity:.65;cursor:wait;}
.vdm-crs-gps-btn.is-loading svg{animation:vdm-gps-spin 1.1s linear infinite;}
.vdm-crs-gps-btn.is-error{border-color:#ff1700;color:#ff1700;}
@keyframes vdm-gps-spin{to{transform:rotate(360deg);}}
.vdm-crs-gps-chip{display:inline-flex;align-items:center;gap:7px;padding:8px 14px;font-size:12px;font-weight:700;color:#0f7a4d;background:#e9f9f1;border:1px solid #bfeeD8;border-radius:999px;line-height:1;}
.vdm-crs-gps-dot{width:7px;height:7px;border-radius:50%;background:#17b26a;box-shadow:0 0 0 3px rgba(23,178,106,.18);flex-shrink:0;}
@media(max-width:600px){
  .vdm-crs-head{justify-content:center;}
  .vdm-crs-gps-btn,.vdm-crs-gps-chip{font-size:11.5px;padding:7px 12px;}
}

/* ── Track scroll-snap ──────────────────────────────────────── */
/* GLISSEMENT PUR — v2.14.0 : scroll-behavior:smooth RETIRÉ. Il s'ajoutait
   au momentum de vandeto-fluid sur le même conteneur (doigt intercepté).
   Les clics flèche/dot passent leur propre behavior:'smooth' en JS. */
.vdm-crs-track{display:flex;gap:var(--vc-gap);overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding:4px 2px 14px;scroll-padding-left:2px;outline:none;}
.vdm-crs-track::-webkit-scrollbar{display:none;}
.vdm-crs-track .vdm-card{flex:0 0 calc((100% - (var(--vc-d) - 1) * var(--vc-gap)) / var(--vc-d));scroll-snap-align:start;}

/* ── Card (autonome — même design que la carte) ─────────────── */
.vdm-crs-track .vdm-card,.vdm-crs-grid .vdm-card{display:flex;flex-direction:column;background:#fff;border:1px solid #e9e9e9;border-radius:12px;overflow:hidden;text-decoration:none;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;}
.vdm-crs-track .vdm-card:hover,.vdm-crs-grid .vdm-card:hover{border-color:#cfcfcf;text-decoration:none;}
.vdm-crs-track .vdm-card-media,.vdm-crs-grid .vdm-card-media{position:relative;width:100%;padding-top:var(--vdm-ratio,64%);overflow:hidden;background:#f4f4f4;}
.vdm-crs-track .vdm-card-media img,.vdm-crs-grid .vdm-card-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;}
/* ── Slider d'images DANS la card — glissement natif ────────────
   overscroll-behavior-x:contain = indispensable : sans lui, arriver
   au bout du strip enchaîne le scroll sur le carrousel parent. */
.vdm-crs-track .vdm-card-slider,.vdm-crs-grid .vdm-card-slider{position:absolute;inset:0;display:flex;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none;z-index:1;}
.vdm-crs-track .vdm-card-slider::-webkit-scrollbar,.vdm-crs-grid .vdm-card-slider::-webkit-scrollbar{display:none;}
.vdm-crs-track .vdm-card-slider img,.vdm-crs-grid .vdm-card-slider img{position:static;flex:0 0 100%;width:100%;height:100%;object-fit:cover;scroll-snap-align:center;scroll-snap-stop:always;display:block;-webkit-user-drag:none;user-select:none;}
/* Dots du slider images — MAXIMUM 3, signature Vandeto.
   v2.16.0 — Option A : en BAS, sur leur propre ligne, juste au-dessus de
   .vdm-card-cat (gauche) et .vdm-trust-badge (droite). Le centre de la
   ligne des badges ne fait que 6px (desktop) / 16px (mobile) de libre :
   impossible d'y loger 3 dots. bottom:32px/26px = ~4px de marge au-dessus.
   Zéro décoration : pas de fond, pas de radius, pas de backdrop-filter.
   Le drop-shadow n'est pas un ornement — sans lui les dots blancs
   disparaissent sur une image claire (téléphone blanc, voiture argentée). */
.vdm-crs-track .vdm-card-dots,.vdm-crs-grid .vdm-card-dots{position:absolute;bottom:32px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:4px;z-index:3;pointer-events:none;filter:drop-shadow(0 1px 2px rgba(0,0,0,.5));}
.vdm-crs-track .vdm-card-dot,.vdm-crs-grid .vdm-card-dot{width:4px;height:4px;border-radius:50px;background:rgba(255,255,255,.55);}
.vdm-crs-track .vdm-card-dot.is-active,.vdm-crs-grid .vdm-card-dot.is-active{width:10px;background:#fff;}
@media(max-width:600px){
  .vdm-crs-track .vdm-card-dots,.vdm-crs-grid .vdm-card-dots{bottom:26px;gap:3px;}
}
}
.vdm-crs-track .vdm-card-noimg,.vdm-crs-grid .vdm-card-noimg{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#ccc;}
.vdm-crs-track .vdm-card-noimg svg,.vdm-crs-grid .vdm-card-noimg svg{width:36px;height:36px;}
.vdm-crs-track .vdm-card-badge,.vdm-crs-grid .vdm-card-badge{position:absolute;top:8px;left:8px;font-size:10px;font-weight:700;padding:3px 8px;background:linear-gradient(135deg,#ffc220,#ffaa00);color:#11151c;border-radius:20px;letter-spacing:.03em;z-index:2;}
.vdm-crs-track .vdm-card-cat,.vdm-crs-grid .vdm-card-cat{position:absolute;bottom:8px;left:8px;max-width:44%;font-size:10px;font-weight:600;padding:3px 8px;background:rgba(17,21,28,.65);color:#fff;border-radius:20px;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;z-index:2;}
.vdm-crs-track .vdm-card-body,.vdm-crs-grid .vdm-card-body{padding:12px 13px 14px;display:flex;flex-direction:column;gap:5px;flex:1;}
.vdm-crs-track .vdm-card-title,.vdm-crs-grid .vdm-card-title{font-size:13px;font-weight:600;color:#11151c;margin:0;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.vdm-crs-track .vdm-card-price,.vdm-crs-grid .vdm-card-price{font-size:15px;font-weight:800;color:#ff1700;letter-spacing:-.02em;}
.vdm-crs-track .vdm-card-loc,.vdm-crs-grid .vdm-card-loc{display:flex;align-items:center;gap:4px;font-size:11px;color:#999;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.vdm-crs-track .vdm-card-loc svg,.vdm-crs-grid .vdm-card-loc svg{width:11px;height:11px;flex-shrink:0;color:#ff1700;}
.vdm-crs-track .vdm-card-cta,.vdm-crs-grid .vdm-card-cta{margin-top:auto;padding-top:8px;font-size:12px;font-weight:600;color:#ff1700;}

/* ── Flèches (desktop) ──────────────────────────────────────── */
.vdm-crs-arrow{position:absolute;top:calc(32% - 21px);z-index:5;width:42px;height:42px;display:flex;align-items:center;justify-content:center;border:1px solid rgba(255,255,255,.6);border-radius:50%;background:rgba(255,255,255,.92);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:#333;cursor:pointer;box-shadow:0 4px 16px rgba(0,0,0,.16);opacity:0;transition:opacity .2s ease,transform .2s cubic-bezier(.34,1.56,.64,1),color .15s,box-shadow .2s;-webkit-tap-highlight-color:transparent;}
.vdm-crs-arrow svg{width:20px;height:20px;}
.vdm-crs-arrow--prev{left:-10px;}
.vdm-crs-arrow--next{right:-10px;}
.vdm-crs-wrap:hover .vdm-crs-arrow{opacity:1;}
.vdm-crs-arrow:hover{color:#ff1700;transform:scale(1.1);box-shadow:0 6px 22px rgba(255,23,0,.24);}
.vdm-crs-arrow:active{transform:scale(.96);}
.vdm-crs-arrow[disabled]{opacity:0 !important;pointer-events:none;}
.vdm-crs-wrap[data-no-scroll] .vdm-crs-arrow{display:none;}

/* ── Dots — MAXIMUM 3, signature Vandeto ────────────────────── */
.vdm-crs-dots{display:flex;align-items:center;justify-content:center;gap:7px;margin-top:2px;}
.vdm-crs-dot{width:7px;height:7px;border-radius:50px;background:#dcdcdc;cursor:pointer;transition:width .28s cubic-bezier(.22,.9,.34,1),background .28s ease;}
.vdm-crs-dot.is-active{width:22px;background:#ff1700;}
.vdm-crs-dot:hover:not(.is-active){background:#bbb;}
.vdm-crs-wrap[data-no-scroll] .vdm-crs-dots{display:none;}

/* ── Responsive ─────────────────────────────────────────────── */
@media(max-width:900px){
  .vdm-crs-track .vdm-card{flex-basis:calc((100% - (var(--vc-t) - 1) * var(--vc-gap)) / var(--vc-t));}
}
@media(max-width:600px){
  .vdm-crs-wrap{--vc-gap:12px;}
  .vdm-crs-track .vdm-card{flex-basis:calc((100% - (var(--vc-m) - 1) * var(--vc-gap)) / var(--vc-m));}
  .vdm-crs-track .vdm-card-body,.vdm-crs-grid .vdm-card-body{padding:10px 11px 12px;}
  .vdm-crs-track .vdm-card-title,.vdm-crs-grid .vdm-card-title{font-size:12px;}
  .vdm-crs-arrow{display:none;}
  /* Badge catégorie plus compact en mobile (le trust est géré dans mod-trust.css) */
  /* v2.15.0 : 50% + 42% (mod-trust) + 12px d'insets ≈ 100% → les 2 badges
     se touchaient. 42% laisse ~17px de respiration sur une card 2 colonnes. */
  .vdm-crs-track .vdm-card-cat,.vdm-crs-grid .vdm-card-cat{max-width:42%;font-size:9px;padding:2px 6px;bottom:6px;left:6px;}
}

/* ── Peek mobile — la card suivante dépasse (invite au glissement) ── */
@media(max-width:600px){
  .vdm-crs-wrap[data-peek="1"] .vdm-crs-track{scroll-padding-left:6px;}
  .vdm-crs-wrap[data-peek="1"] .vdm-crs-track .vdm-card{flex-basis:calc((100% - (var(--vc-m) - 1) * var(--vc-gap)) / var(--vc-m) - var(--vc-peek, 12%));}
}

/* ── Mode grille + scroll infini ────────────────────────────── */
.vdm-crs-grid{display:grid;grid-template-columns:repeat(var(--vc-d),1fr);gap:var(--vc-gap);}
@media(max-width:900px){.vdm-crs-grid{grid-template-columns:repeat(var(--vc-t),1fr);}}
@media(max-width:600px){.vdm-crs-grid{grid-template-columns:repeat(var(--vc-m),1fr);}}
.vdm-crs-sentinel{display:flex;align-items:center;justify-content:center;min-height:48px;margin-top:6px;}
.vdm-crs-loader{width:26px;height:26px;border:3px solid #eee;border-top-color:#ff1700;border-radius:50%;animation:vdm-crs-spin .8s linear infinite;}
@keyframes vdm-crs-spin{to{transform:rotate(360deg);}}

/* ── Animations badge Vedette — compositor-only (transform/opacity) ── */
.vdm-card-badge{will-change:auto;}

/* 1. Pulse — pulsation d'échelle douce */
.vdm-badge-anim--pulse{animation:vdm-bp 2.2s ease-in-out infinite;transform-origin:center;}
@keyframes vdm-bp{0%,100%{transform:scale(1);}50%{transform:scale(1.08);}}

/* 2. Shine — balayage de brillance (pseudo-élément en translateX) */
.vdm-badge-anim--shine{position:absolute;overflow:hidden;}
.vdm-badge-anim--shine::after{content:'';position:absolute;top:0;left:0;width:40%;height:100%;background:linear-gradient(105deg,rgba(255,255,255,0) 0%,rgba(255,255,255,.75) 50%,rgba(255,255,255,0) 100%);transform:translateX(-160%) skewX(-18deg);animation:vdm-bs 2.8s ease-in-out infinite;}
@keyframes vdm-bs{0%{transform:translateX(-160%) skewX(-18deg);}45%,100%{transform:translateX(330%) skewX(-18deg);}}

/* 3. Float — flottement vertical léger */
.vdm-badge-anim--float{animation:vdm-bf 3s ease-in-out infinite;}
@keyframes vdm-bf{0%,100%{transform:translateY(0);}50%{transform:translateY(-3px);}}

/* 4. Glow — halo doré qui respire (ombre FIXE sur ::before, seule l'opacité s'anime) */
.vdm-badge-anim--glow{position:absolute;}
.vdm-badge-anim--glow::before{content:'';position:absolute;inset:-2px;border-radius:22px;box-shadow:0 0 12px 3px rgba(255,194,32,.85);opacity:0;animation:vdm-bg 2.4s ease-in-out infinite;pointer-events:none;}
@keyframes vdm-bg{0%,100%{opacity:0;}50%{opacity:1;}}

/* ── Entrées des lots AJAX (scroll infini) — v2.16.0 « premium » ──
   Compositor-only. Le glissement du track reste natif (v2.14.0). */
@keyframes vdm-crs-card-in{from{opacity:0;transform:translateY(16px);}to{opacity:1;transform:translateY(0);}}
.vdm-crs-grid .vdm-card-enter{animation:vdm-crs-card-in .38s cubic-bezier(.22,.9,.34,1) both;}
@media(prefers-reduced-motion:reduce){
  .vdm-crs-grid .vdm-card-enter{animation:none;}
}
