Quelle voiture souhaitez-vous conduire ?
22 voitures
{
const isDesktop = window.innerWidth >= 1024;
const el = document.getElementById((isDesktop ? 'expand-d-' : 'expand-m-') + '27');
if (!el) return;
// Keep scroll position stable after DOM reflow
if (window.scrollY !== startY) window.scrollTo(0, startY);
const rect = el.getBoundingClientRect();
const elTopAbs = rect.top + window.scrollY;
const viewportH = window.innerHeight;
let target;
if (isDesktop) {
// Vertically center expanded in viewport
target = elTopAbs + rect.height / 2 - viewportH / 2;
} else {
// Mobile: align top of expanded ~100px from viewport top
target = elTopAbs - 100;
}
const maxScroll = document.documentElement.scrollHeight - viewportH;
target = Math.max(0, Math.min(target, maxScroll));
const distance = target - startY;
if (Math.abs(distance) < 8) return;
// Gentle: pace ~1px per ms, clamped
const duration = Math.min(1800, Math.max(800, Math.abs(distance) * 1.3));
const startTime = performance.now();
const easeInOutSine = t => -(Math.cos(Math.PI * t) - 1) / 2;
const step = now => {
const elapsed = now - startTime;
const progress = Math.min(elapsed / duration, 1);
window.scrollTo(0, startY + distance * easeInOutSine(progress));
if (progress < 1) requestAnimationFrame(step);
};
requestAnimationFrame(step);
});
}
"
:class="selectedCar === 27 ? 'border-primary ring-2 ring-primary/20' : 'border-gray-200 hover:border-primary/50'"
class="bg-white rounded-2xl border-2 overflow-hidden cursor-pointer transition-all duration-200">
Limousine AUTOMATIQUE
Limousine AUTOMATIQUE
Audi A4 S - line combi
ou similaire Limousine35,79 €
70,00 KM
/ par jour
5
Personnes
Automatique
Transmission
5
Portes
6
Valises
Kilométrage illimité
Sans caution
{
const isDesktop = window.innerWidth >= 1024;
const el = document.getElementById((isDesktop ? 'expand-d-' : 'expand-m-') + '12');
if (!el) return;
// Keep scroll position stable after DOM reflow
if (window.scrollY !== startY) window.scrollTo(0, startY);
const rect = el.getBoundingClientRect();
const elTopAbs = rect.top + window.scrollY;
const viewportH = window.innerHeight;
let target;
if (isDesktop) {
// Vertically center expanded in viewport
target = elTopAbs + rect.height / 2 - viewportH / 2;
} else {
// Mobile: align top of expanded ~100px from viewport top
target = elTopAbs - 100;
}
const maxScroll = document.documentElement.scrollHeight - viewportH;
target = Math.max(0, Math.min(target, maxScroll));
const distance = target - startY;
if (Math.abs(distance) < 8) return;
// Gentle: pace ~1px per ms, clamped
const duration = Math.min(1800, Math.max(800, Math.abs(distance) * 1.3));
const startTime = performance.now();
const easeInOutSine = t => -(Math.cos(Math.PI * t) - 1) / 2;
const step = now => {
const elapsed = now - startTime;
const progress = Math.min(elapsed / duration, 1);
window.scrollTo(0, startY + distance * easeInOutSine(progress));
if (progress < 1) requestAnimationFrame(step);
};
requestAnimationFrame(step);
});
}
"
:class="selectedCar === 12 ? 'border-primary ring-2 ring-primary/20' : 'border-gray-200 hover:border-primary/50'"
class="bg-white rounded-2xl border-2 overflow-hidden cursor-pointer transition-all duration-200">
Sedan AUTOMATIQUE
Sedan AUTOMATIQUE
Dacia Logan Turbo
ou similaire Sedan20,45 €
40,00 KM
/ par jour
5
Personnes
Automatique
Transmission
5
Portes
5
Valises
Kilométrage illimité
Sans caution
{
const isDesktop = window.innerWidth >= 1024;
const el = document.getElementById((isDesktop ? 'expand-d-' : 'expand-m-') + '7');
if (!el) return;
// Keep scroll position stable after DOM reflow
if (window.scrollY !== startY) window.scrollTo(0, startY);
const rect = el.getBoundingClientRect();
const elTopAbs = rect.top + window.scrollY;
const viewportH = window.innerHeight;
let target;
if (isDesktop) {
// Vertically center expanded in viewport
target = elTopAbs + rect.height / 2 - viewportH / 2;
} else {
// Mobile: align top of expanded ~100px from viewport top
target = elTopAbs - 100;
}
const maxScroll = document.documentElement.scrollHeight - viewportH;
target = Math.max(0, Math.min(target, maxScroll));
const distance = target - startY;
if (Math.abs(distance) < 8) return;
// Gentle: pace ~1px per ms, clamped
const duration = Math.min(1800, Math.max(800, Math.abs(distance) * 1.3));
const startTime = performance.now();
const easeInOutSine = t => -(Math.cos(Math.PI * t) - 1) / 2;
const step = now => {
const elapsed = now - startTime;
const progress = Math.min(elapsed / duration, 1);
window.scrollTo(0, startY + distance * easeInOutSine(progress));
if (progress < 1) requestAnimationFrame(step);
};
requestAnimationFrame(step);
});
}
"
:class="selectedCar === 7 ? 'border-primary ring-2 ring-primary/20' : 'border-gray-200 hover:border-primary/50'"
class="bg-white rounded-2xl border-2 overflow-hidden cursor-pointer transition-all duration-200">
Limousine AUTOMATIQUE
Limousine AUTOMATIQUE
Mercedes V-Class
ou similaire Limousine71,58 €
140,00 KM
/ par jour
7
Personnes
Automatique
Transmission
5
Portes
5+
Valises
Kilométrage illimité
Sans caution
{
const isDesktop = window.innerWidth >= 1024;
const el = document.getElementById((isDesktop ? 'expand-d-' : 'expand-m-') + '40');
if (!el) return;
// Keep scroll position stable after DOM reflow
if (window.scrollY !== startY) window.scrollTo(0, startY);
const rect = el.getBoundingClientRect();
const elTopAbs = rect.top + window.scrollY;
const viewportH = window.innerHeight;
let target;
if (isDesktop) {
// Vertically center expanded in viewport
target = elTopAbs + rect.height / 2 - viewportH / 2;
} else {
// Mobile: align top of expanded ~100px from viewport top
target = elTopAbs - 100;
}
const maxScroll = document.documentElement.scrollHeight - viewportH;
target = Math.max(0, Math.min(target, maxScroll));
const distance = target - startY;
if (Math.abs(distance) < 8) return;
// Gentle: pace ~1px per ms, clamped
const duration = Math.min(1800, Math.max(800, Math.abs(distance) * 1.3));
const startTime = performance.now();
const easeInOutSine = t => -(Math.cos(Math.PI * t) - 1) / 2;
const step = now => {
const elapsed = now - startTime;
const progress = Math.min(elapsed / duration, 1);
window.scrollTo(0, startY + distance * easeInOutSine(progress));
if (progress < 1) requestAnimationFrame(step);
};
requestAnimationFrame(step);
});
}
"
:class="selectedCar === 40 ? 'border-primary ring-2 ring-primary/20' : 'border-gray-200 hover:border-primary/50'"
class="bg-white rounded-2xl border-2 overflow-hidden cursor-pointer transition-all duration-200">
Limousine AUTOMATIQUE
Limousine AUTOMATIQUE
Mercedes-Benz B-Class
ou similaire Limousine50,62 €
99,00 KM
/ par jour
5
Personnes
Automatique
Transmission
5
Portes
4
Valises
Kilométrage illimité
Sans caution
{
const isDesktop = window.innerWidth >= 1024;
const el = document.getElementById((isDesktop ? 'expand-d-' : 'expand-m-') + '1');
if (!el) return;
// Keep scroll position stable after DOM reflow
if (window.scrollY !== startY) window.scrollTo(0, startY);
const rect = el.getBoundingClientRect();
const elTopAbs = rect.top + window.scrollY;
const viewportH = window.innerHeight;
let target;
if (isDesktop) {
// Vertically center expanded in viewport
target = elTopAbs + rect.height / 2 - viewportH / 2;
} else {
// Mobile: align top of expanded ~100px from viewport top
target = elTopAbs - 100;
}
const maxScroll = document.documentElement.scrollHeight - viewportH;
target = Math.max(0, Math.min(target, maxScroll));
const distance = target - startY;
if (Math.abs(distance) < 8) return;
// Gentle: pace ~1px per ms, clamped
const duration = Math.min(1800, Math.max(800, Math.abs(distance) * 1.3));
const startTime = performance.now();
const easeInOutSine = t => -(Math.cos(Math.PI * t) - 1) / 2;
const step = now => {
const elapsed = now - startTime;
const progress = Math.min(elapsed / duration, 1);
window.scrollTo(0, startY + distance * easeInOutSine(progress));
if (progress < 1) requestAnimationFrame(step);
};
requestAnimationFrame(step);
});
}
"
:class="selectedCar === 1 ? 'border-primary ring-2 ring-primary/20' : 'border-gray-200 hover:border-primary/50'"
class="bg-white rounded-2xl border-2 overflow-hidden cursor-pointer transition-all duration-200">
SUV AUTOMATIQUE
SUV AUTOMATIQUE
SEAT Arona
ou similaire SUV25,56 €
50,00 KM
/ par jour
5
Personnes
Automatique
Transmission
5
Portes
3
Valises
Kilométrage illimité
Sans caution
{
const isDesktop = window.innerWidth >= 1024;
const el = document.getElementById((isDesktop ? 'expand-d-' : 'expand-m-') + '31');
if (!el) return;
// Keep scroll position stable after DOM reflow
if (window.scrollY !== startY) window.scrollTo(0, startY);
const rect = el.getBoundingClientRect();
const elTopAbs = rect.top + window.scrollY;
const viewportH = window.innerHeight;
let target;
if (isDesktop) {
// Vertically center expanded in viewport
target = elTopAbs + rect.height / 2 - viewportH / 2;
} else {
// Mobile: align top of expanded ~100px from viewport top
target = elTopAbs - 100;
}
const maxScroll = document.documentElement.scrollHeight - viewportH;
target = Math.max(0, Math.min(target, maxScroll));
const distance = target - startY;
if (Math.abs(distance) < 8) return;
// Gentle: pace ~1px per ms, clamped
const duration = Math.min(1800, Math.max(800, Math.abs(distance) * 1.3));
const startTime = performance.now();
const easeInOutSine = t => -(Math.cos(Math.PI * t) - 1) / 2;
const step = now => {
const elapsed = now - startTime;
const progress = Math.min(elapsed / duration, 1);
window.scrollTo(0, startY + distance * easeInOutSine(progress));
if (progress < 1) requestAnimationFrame(step);
};
requestAnimationFrame(step);
});
}
"
:class="selectedCar === 31 ? 'border-primary ring-2 ring-primary/20' : 'border-gray-200 hover:border-primary/50'"
class="bg-white rounded-2xl border-2 overflow-hidden cursor-pointer transition-all duration-200">
Mini AUTOMATIQUE
Mini AUTOMATIQUE
Seat Leon
ou similaire Mini20,45 €
40,00 KM
/ par jour
5
Personnes
Automatique
Transmission
5
Portes
3
Valises
Kilométrage illimité
Sans caution
{
const isDesktop = window.innerWidth >= 1024;
const el = document.getElementById((isDesktop ? 'expand-d-' : 'expand-m-') + '37');
if (!el) return;
// Keep scroll position stable after DOM reflow
if (window.scrollY !== startY) window.scrollTo(0, startY);
const rect = el.getBoundingClientRect();
const elTopAbs = rect.top + window.scrollY;
const viewportH = window.innerHeight;
let target;
if (isDesktop) {
// Vertically center expanded in viewport
target = elTopAbs + rect.height / 2 - viewportH / 2;
} else {
// Mobile: align top of expanded ~100px from viewport top
target = elTopAbs - 100;
}
const maxScroll = document.documentElement.scrollHeight - viewportH;
target = Math.max(0, Math.min(target, maxScroll));
const distance = target - startY;
if (Math.abs(distance) < 8) return;
// Gentle: pace ~1px per ms, clamped
const duration = Math.min(1800, Math.max(800, Math.abs(distance) * 1.3));
const startTime = performance.now();
const easeInOutSine = t => -(Math.cos(Math.PI * t) - 1) / 2;
const step = now => {
const elapsed = now - startTime;
const progress = Math.min(elapsed / duration, 1);
window.scrollTo(0, startY + distance * easeInOutSine(progress));
if (progress < 1) requestAnimationFrame(step);
};
requestAnimationFrame(step);
});
}
"
:class="selectedCar === 37 ? 'border-primary ring-2 ring-primary/20' : 'border-gray-200 hover:border-primary/50'"
class="bg-white rounded-2xl border-2 overflow-hidden cursor-pointer transition-all duration-200">
Mini MANUELLE
Mini MANUELLE
Škoda Citigo
ou similaire Mini11,25 €
22,00 KM
/ par jour
5
Personnes
Manuelle
Transmission
5
Portes
2
Valises
Kilométrage illimité
Sans caution
{
const isDesktop = window.innerWidth >= 1024;
const el = document.getElementById((isDesktop ? 'expand-d-' : 'expand-m-') + '2');
if (!el) return;
// Keep scroll position stable after DOM reflow
if (window.scrollY !== startY) window.scrollTo(0, startY);
const rect = el.getBoundingClientRect();
const elTopAbs = rect.top + window.scrollY;
const viewportH = window.innerHeight;
let target;
if (isDesktop) {
// Vertically center expanded in viewport
target = elTopAbs + rect.height / 2 - viewportH / 2;
} else {
// Mobile: align top of expanded ~100px from viewport top
target = elTopAbs - 100;
}
const maxScroll = document.documentElement.scrollHeight - viewportH;
target = Math.max(0, Math.min(target, maxScroll));
const distance = target - startY;
if (Math.abs(distance) < 8) return;
// Gentle: pace ~1px per ms, clamped
const duration = Math.min(1800, Math.max(800, Math.abs(distance) * 1.3));
const startTime = performance.now();
const easeInOutSine = t => -(Math.cos(Math.PI * t) - 1) / 2;
const step = now => {
const elapsed = now - startTime;
const progress = Math.min(elapsed / duration, 1);
window.scrollTo(0, startY + distance * easeInOutSine(progress));
if (progress < 1) requestAnimationFrame(step);
};
requestAnimationFrame(step);
});
}
"
:class="selectedCar === 2 ? 'border-primary ring-2 ring-primary/20' : 'border-gray-200 hover:border-primary/50'"
class="bg-white rounded-2xl border-2 overflow-hidden cursor-pointer transition-all duration-200">
Sedan MANUELLE
Sedan MANUELLE
Škoda Fabia
ou similaire Sedan20,43 €
39,95 KM
/ par jour
5
Personnes
Manuelle
Transmission
5
Portes
3
Valises
Kilométrage illimité
Sans caution
{
const isDesktop = window.innerWidth >= 1024;
const el = document.getElementById((isDesktop ? 'expand-d-' : 'expand-m-') + '16');
if (!el) return;
// Keep scroll position stable after DOM reflow
if (window.scrollY !== startY) window.scrollTo(0, startY);
const rect = el.getBoundingClientRect();
const elTopAbs = rect.top + window.scrollY;
const viewportH = window.innerHeight;
let target;
if (isDesktop) {
// Vertically center expanded in viewport
target = elTopAbs + rect.height / 2 - viewportH / 2;
} else {
// Mobile: align top of expanded ~100px from viewport top
target = elTopAbs - 100;
}
const maxScroll = document.documentElement.scrollHeight - viewportH;
target = Math.max(0, Math.min(target, maxScroll));
const distance = target - startY;
if (Math.abs(distance) < 8) return;
// Gentle: pace ~1px per ms, clamped
const duration = Math.min(1800, Math.max(800, Math.abs(distance) * 1.3));
const startTime = performance.now();
const easeInOutSine = t => -(Math.cos(Math.PI * t) - 1) / 2;
const step = now => {
const elapsed = now - startTime;
const progress = Math.min(elapsed / duration, 1);
window.scrollTo(0, startY + distance * easeInOutSine(progress));
if (progress < 1) requestAnimationFrame(step);
};
requestAnimationFrame(step);
});
}
"
:class="selectedCar === 16 ? 'border-primary ring-2 ring-primary/20' : 'border-gray-200 hover:border-primary/50'"
class="bg-white rounded-2xl border-2 overflow-hidden cursor-pointer transition-all duration-200">
Sedan AUTOMATIQUE
Sedan AUTOMATIQUE
Škoda Fabia DSG
ou similaire Sedan29,40 €
57,50 KM
/ par jour
5
Personnes
Automatique
Transmission
5
Portes
3
Valises
Kilométrage illimité
Sans caution
{
const isDesktop = window.innerWidth >= 1024;
const el = document.getElementById((isDesktop ? 'expand-d-' : 'expand-m-') + '30');
if (!el) return;
// Keep scroll position stable after DOM reflow
if (window.scrollY !== startY) window.scrollTo(0, startY);
const rect = el.getBoundingClientRect();
const elTopAbs = rect.top + window.scrollY;
const viewportH = window.innerHeight;
let target;
if (isDesktop) {
// Vertically center expanded in viewport
target = elTopAbs + rect.height / 2 - viewportH / 2;
} else {
// Mobile: align top of expanded ~100px from viewport top
target = elTopAbs - 100;
}
const maxScroll = document.documentElement.scrollHeight - viewportH;
target = Math.max(0, Math.min(target, maxScroll));
const distance = target - startY;
if (Math.abs(distance) < 8) return;
// Gentle: pace ~1px per ms, clamped
const duration = Math.min(1800, Math.max(800, Math.abs(distance) * 1.3));
const startTime = performance.now();
const easeInOutSine = t => -(Math.cos(Math.PI * t) - 1) / 2;
const step = now => {
const elapsed = now - startTime;
const progress = Math.min(elapsed / duration, 1);
window.scrollTo(0, startY + distance * easeInOutSine(progress));
if (progress < 1) requestAnimationFrame(step);
};
requestAnimationFrame(step);
});
}
"
:class="selectedCar === 30 ? 'border-primary ring-2 ring-primary/20' : 'border-gray-200 hover:border-primary/50'"
class="bg-white rounded-2xl border-2 overflow-hidden cursor-pointer transition-all duration-200">
SUV AUTOMATIQUE
SUV AUTOMATIQUE
Škoda Kamiq
ou similaire SUV25,56 €
50,00 KM
/ par jour
5
Personnes
Automatique
Transmission
5
Portes
3
Valises
Kilométrage illimité
Sans caution
{
const isDesktop = window.innerWidth >= 1024;
const el = document.getElementById((isDesktop ? 'expand-d-' : 'expand-m-') + '34');
if (!el) return;
// Keep scroll position stable after DOM reflow
if (window.scrollY !== startY) window.scrollTo(0, startY);
const rect = el.getBoundingClientRect();
const elTopAbs = rect.top + window.scrollY;
const viewportH = window.innerHeight;
let target;
if (isDesktop) {
// Vertically center expanded in viewport
target = elTopAbs + rect.height / 2 - viewportH / 2;
} else {
// Mobile: align top of expanded ~100px from viewport top
target = elTopAbs - 100;
}
const maxScroll = document.documentElement.scrollHeight - viewportH;
target = Math.max(0, Math.min(target, maxScroll));
const distance = target - startY;
if (Math.abs(distance) < 8) return;
// Gentle: pace ~1px per ms, clamped
const duration = Math.min(1800, Math.max(800, Math.abs(distance) * 1.3));
const startTime = performance.now();
const easeInOutSine = t => -(Math.cos(Math.PI * t) - 1) / 2;
const step = now => {
const elapsed = now - startTime;
const progress = Math.min(elapsed / duration, 1);
window.scrollTo(0, startY + distance * easeInOutSine(progress));
if (progress < 1) requestAnimationFrame(step);
};
requestAnimationFrame(step);
});
}
"
:class="selectedCar === 34 ? 'border-primary ring-2 ring-primary/20' : 'border-gray-200 hover:border-primary/50'"
class="bg-white rounded-2xl border-2 overflow-hidden cursor-pointer transition-all duration-200">
SUV AUTOMATIQUE
SUV AUTOMATIQUE
Skoda Karoq
ou similaire SUV35,28 €
69,00 KM
/ par jour
5
Personnes
Automatique
Transmission
5
Portes
5
Valises
Kilométrage illimité
Sans caution
{
const isDesktop = window.innerWidth >= 1024;
const el = document.getElementById((isDesktop ? 'expand-d-' : 'expand-m-') + '33');
if (!el) return;
// Keep scroll position stable after DOM reflow
if (window.scrollY !== startY) window.scrollTo(0, startY);
const rect = el.getBoundingClientRect();
const elTopAbs = rect.top + window.scrollY;
const viewportH = window.innerHeight;
let target;
if (isDesktop) {
// Vertically center expanded in viewport
target = elTopAbs + rect.height / 2 - viewportH / 2;
} else {
// Mobile: align top of expanded ~100px from viewport top
target = elTopAbs - 100;
}
const maxScroll = document.documentElement.scrollHeight - viewportH;
target = Math.max(0, Math.min(target, maxScroll));
const distance = target - startY;
if (Math.abs(distance) < 8) return;
// Gentle: pace ~1px per ms, clamped
const duration = Math.min(1800, Math.max(800, Math.abs(distance) * 1.3));
const startTime = performance.now();
const easeInOutSine = t => -(Math.cos(Math.PI * t) - 1) / 2;
const step = now => {
const elapsed = now - startTime;
const progress = Math.min(elapsed / duration, 1);
window.scrollTo(0, startY + distance * easeInOutSine(progress));
if (progress < 1) requestAnimationFrame(step);
};
requestAnimationFrame(step);
});
}
"
:class="selectedCar === 33 ? 'border-primary ring-2 ring-primary/20' : 'border-gray-200 hover:border-primary/50'"
class="bg-white rounded-2xl border-2 overflow-hidden cursor-pointer transition-all duration-200">
Limousine AUTOMATIQUE
Limousine AUTOMATIQUE
Skoda Octavia dsg
ou similaire Limousine33,23 €
65,00 KM
/ par jour
5
Personnes
Automatique
Transmission
5
Portes
5
Valises
Kilométrage illimité
Sans caution
{
const isDesktop = window.innerWidth >= 1024;
const el = document.getElementById((isDesktop ? 'expand-d-' : 'expand-m-') + '28');
if (!el) return;
// Keep scroll position stable after DOM reflow
if (window.scrollY !== startY) window.scrollTo(0, startY);
const rect = el.getBoundingClientRect();
const elTopAbs = rect.top + window.scrollY;
const viewportH = window.innerHeight;
let target;
if (isDesktop) {
// Vertically center expanded in viewport
target = elTopAbs + rect.height / 2 - viewportH / 2;
} else {
// Mobile: align top of expanded ~100px from viewport top
target = elTopAbs - 100;
}
const maxScroll = document.documentElement.scrollHeight - viewportH;
target = Math.max(0, Math.min(target, maxScroll));
const distance = target - startY;
if (Math.abs(distance) < 8) return;
// Gentle: pace ~1px per ms, clamped
const duration = Math.min(1800, Math.max(800, Math.abs(distance) * 1.3));
const startTime = performance.now();
const easeInOutSine = t => -(Math.cos(Math.PI * t) - 1) / 2;
const step = now => {
const elapsed = now - startTime;
const progress = Math.min(elapsed / duration, 1);
window.scrollTo(0, startY + distance * easeInOutSine(progress));
if (progress < 1) requestAnimationFrame(step);
};
requestAnimationFrame(step);
});
}
"
:class="selectedCar === 28 ? 'border-primary ring-2 ring-primary/20' : 'border-gray-200 hover:border-primary/50'"
class="bg-white rounded-2xl border-2 overflow-hidden cursor-pointer transition-all duration-200">
Limousine AUTOMATIQUE
Limousine AUTOMATIQUE
Skoda Octavia Scaut
ou similaire Limousine25,56 €
50,00 KM
/ par jour
5
Personnes
Automatique
Transmission
5
Portes
6
Valises
Kilométrage illimité
Sans caution
{
const isDesktop = window.innerWidth >= 1024;
const el = document.getElementById((isDesktop ? 'expand-d-' : 'expand-m-') + '22');
if (!el) return;
// Keep scroll position stable after DOM reflow
if (window.scrollY !== startY) window.scrollTo(0, startY);
const rect = el.getBoundingClientRect();
const elTopAbs = rect.top + window.scrollY;
const viewportH = window.innerHeight;
let target;
if (isDesktop) {
// Vertically center expanded in viewport
target = elTopAbs + rect.height / 2 - viewportH / 2;
} else {
// Mobile: align top of expanded ~100px from viewport top
target = elTopAbs - 100;
}
const maxScroll = document.documentElement.scrollHeight - viewportH;
target = Math.max(0, Math.min(target, maxScroll));
const distance = target - startY;
if (Math.abs(distance) < 8) return;
// Gentle: pace ~1px per ms, clamped
const duration = Math.min(1800, Math.max(800, Math.abs(distance) * 1.3));
const startTime = performance.now();
const easeInOutSine = t => -(Math.cos(Math.PI * t) - 1) / 2;
const step = now => {
const elapsed = now - startTime;
const progress = Math.min(elapsed / duration, 1);
window.scrollTo(0, startY + distance * easeInOutSine(progress));
if (progress < 1) requestAnimationFrame(step);
};
requestAnimationFrame(step);
});
}
"
:class="selectedCar === 22 ? 'border-primary ring-2 ring-primary/20' : 'border-gray-200 hover:border-primary/50'"
class="bg-white rounded-2xl border-2 overflow-hidden cursor-pointer transition-all duration-200">
Sedan AUTOMATIQUE
Sedan AUTOMATIQUE
Volkswagen Passat
ou similaire Sedan30,68 €
60,00 KM
/ par jour
5
Personnes
Automatique
Transmission
5
Portes
5
Valises
Kilométrage illimité
Sans caution
{
const isDesktop = window.innerWidth >= 1024;
const el = document.getElementById((isDesktop ? 'expand-d-' : 'expand-m-') + '36');
if (!el) return;
// Keep scroll position stable after DOM reflow
if (window.scrollY !== startY) window.scrollTo(0, startY);
const rect = el.getBoundingClientRect();
const elTopAbs = rect.top + window.scrollY;
const viewportH = window.innerHeight;
let target;
if (isDesktop) {
// Vertically center expanded in viewport
target = elTopAbs + rect.height / 2 - viewportH / 2;
} else {
// Mobile: align top of expanded ~100px from viewport top
target = elTopAbs - 100;
}
const maxScroll = document.documentElement.scrollHeight - viewportH;
target = Math.max(0, Math.min(target, maxScroll));
const distance = target - startY;
if (Math.abs(distance) < 8) return;
// Gentle: pace ~1px per ms, clamped
const duration = Math.min(1800, Math.max(800, Math.abs(distance) * 1.3));
const startTime = performance.now();
const easeInOutSine = t => -(Math.cos(Math.PI * t) - 1) / 2;
const step = now => {
const elapsed = now - startTime;
const progress = Math.min(elapsed / duration, 1);
window.scrollTo(0, startY + distance * easeInOutSine(progress));
if (progress < 1) requestAnimationFrame(step);
};
requestAnimationFrame(step);
});
}
"
:class="selectedCar === 36 ? 'border-primary ring-2 ring-primary/20' : 'border-gray-200 hover:border-primary/50'"
class="bg-white rounded-2xl border-2 overflow-hidden cursor-pointer transition-all duration-200">
Limousine AUTOMATIQUE
Limousine AUTOMATIQUE
Volkswagen Passat B8
ou similaire Limousine28,13 €
55,02 KM
/ par jour
5
Personnes
Automatique
Transmission
5
Portes
5
Valises
Kilométrage illimité
Sans caution
{
const isDesktop = window.innerWidth >= 1024;
const el = document.getElementById((isDesktop ? 'expand-d-' : 'expand-m-') + '4');
if (!el) return;
// Keep scroll position stable after DOM reflow
if (window.scrollY !== startY) window.scrollTo(0, startY);
const rect = el.getBoundingClientRect();
const elTopAbs = rect.top + window.scrollY;
const viewportH = window.innerHeight;
let target;
if (isDesktop) {
// Vertically center expanded in viewport
target = elTopAbs + rect.height / 2 - viewportH / 2;
} else {
// Mobile: align top of expanded ~100px from viewport top
target = elTopAbs - 100;
}
const maxScroll = document.documentElement.scrollHeight - viewportH;
target = Math.max(0, Math.min(target, maxScroll));
const distance = target - startY;
if (Math.abs(distance) < 8) return;
// Gentle: pace ~1px per ms, clamped
const duration = Math.min(1800, Math.max(800, Math.abs(distance) * 1.3));
const startTime = performance.now();
const easeInOutSine = t => -(Math.cos(Math.PI * t) - 1) / 2;
const step = now => {
const elapsed = now - startTime;
const progress = Math.min(elapsed / duration, 1);
window.scrollTo(0, startY + distance * easeInOutSine(progress));
if (progress < 1) requestAnimationFrame(step);
};
requestAnimationFrame(step);
});
}
"
:class="selectedCar === 4 ? 'border-primary ring-2 ring-primary/20' : 'border-gray-200 hover:border-primary/50'"
class="bg-white rounded-2xl border-2 overflow-hidden cursor-pointer transition-all duration-200">
Sedan AUTOMATIQUE
Sedan AUTOMATIQUE
Volkswagen Polo
ou similaire Sedan20,45 €
40,00 KM
/ par jour
5
Personnes
Automatique
Transmission
5
Portes
3
Valises
Kilométrage illimité
Sans caution
{
const isDesktop = window.innerWidth >= 1024;
const el = document.getElementById((isDesktop ? 'expand-d-' : 'expand-m-') + '15');
if (!el) return;
// Keep scroll position stable after DOM reflow
if (window.scrollY !== startY) window.scrollTo(0, startY);
const rect = el.getBoundingClientRect();
const elTopAbs = rect.top + window.scrollY;
const viewportH = window.innerHeight;
let target;
if (isDesktop) {
// Vertically center expanded in viewport
target = elTopAbs + rect.height / 2 - viewportH / 2;
} else {
// Mobile: align top of expanded ~100px from viewport top
target = elTopAbs - 100;
}
const maxScroll = document.documentElement.scrollHeight - viewportH;
target = Math.max(0, Math.min(target, maxScroll));
const distance = target - startY;
if (Math.abs(distance) < 8) return;
// Gentle: pace ~1px per ms, clamped
const duration = Math.min(1800, Math.max(800, Math.abs(distance) * 1.3));
const startTime = performance.now();
const easeInOutSine = t => -(Math.cos(Math.PI * t) - 1) / 2;
const step = now => {
const elapsed = now - startTime;
const progress = Math.min(elapsed / duration, 1);
window.scrollTo(0, startY + distance * easeInOutSine(progress));
if (progress < 1) requestAnimationFrame(step);
};
requestAnimationFrame(step);
});
}
"
:class="selectedCar === 15 ? 'border-primary ring-2 ring-primary/20' : 'border-gray-200 hover:border-primary/50'"
class="bg-white rounded-2xl border-2 overflow-hidden cursor-pointer transition-all duration-200">
Sports AUTOMATIQUE
Sports AUTOMATIQUE
Volkswagen Polo R-Line
ou similaire Sports20,45 €
40,00 KM
/ par jour
5
Personnes
Automatique
Transmission
5
Portes
3
Valises
Kilométrage illimité
Sans caution
{
const isDesktop = window.innerWidth >= 1024;
const el = document.getElementById((isDesktop ? 'expand-d-' : 'expand-m-') + '25');
if (!el) return;
// Keep scroll position stable after DOM reflow
if (window.scrollY !== startY) window.scrollTo(0, startY);
const rect = el.getBoundingClientRect();
const elTopAbs = rect.top + window.scrollY;
const viewportH = window.innerHeight;
let target;
if (isDesktop) {
// Vertically center expanded in viewport
target = elTopAbs + rect.height / 2 - viewportH / 2;
} else {
// Mobile: align top of expanded ~100px from viewport top
target = elTopAbs - 100;
}
const maxScroll = document.documentElement.scrollHeight - viewportH;
target = Math.max(0, Math.min(target, maxScroll));
const distance = target - startY;
if (Math.abs(distance) < 8) return;
// Gentle: pace ~1px per ms, clamped
const duration = Math.min(1800, Math.max(800, Math.abs(distance) * 1.3));
const startTime = performance.now();
const easeInOutSine = t => -(Math.cos(Math.PI * t) - 1) / 2;
const step = now => {
const elapsed = now - startTime;
const progress = Math.min(elapsed / duration, 1);
window.scrollTo(0, startY + distance * easeInOutSine(progress));
if (progress < 1) requestAnimationFrame(step);
};
requestAnimationFrame(step);
});
}
"
:class="selectedCar === 25 ? 'border-primary ring-2 ring-primary/20' : 'border-gray-200 hover:border-primary/50'"
class="bg-white rounded-2xl border-2 overflow-hidden cursor-pointer transition-all duration-200">
SUV AUTOMATIQUE
SUV AUTOMATIQUE
Volkswagen Taigo
ou similaire SUV28,12 €
55,00 KM
/ par jour
5
Personnes
Automatique
Transmission
5
Portes
3
Valises
Kilométrage illimité
Sans caution
{
const isDesktop = window.innerWidth >= 1024;
const el = document.getElementById((isDesktop ? 'expand-d-' : 'expand-m-') + '3');
if (!el) return;
// Keep scroll position stable after DOM reflow
if (window.scrollY !== startY) window.scrollTo(0, startY);
const rect = el.getBoundingClientRect();
const elTopAbs = rect.top + window.scrollY;
const viewportH = window.innerHeight;
let target;
if (isDesktop) {
// Vertically center expanded in viewport
target = elTopAbs + rect.height / 2 - viewportH / 2;
} else {
// Mobile: align top of expanded ~100px from viewport top
target = elTopAbs - 100;
}
const maxScroll = document.documentElement.scrollHeight - viewportH;
target = Math.max(0, Math.min(target, maxScroll));
const distance = target - startY;
if (Math.abs(distance) < 8) return;
// Gentle: pace ~1px per ms, clamped
const duration = Math.min(1800, Math.max(800, Math.abs(distance) * 1.3));
const startTime = performance.now();
const easeInOutSine = t => -(Math.cos(Math.PI * t) - 1) / 2;
const step = now => {
const elapsed = now - startTime;
const progress = Math.min(elapsed / duration, 1);
window.scrollTo(0, startY + distance * easeInOutSine(progress));
if (progress < 1) requestAnimationFrame(step);
};
requestAnimationFrame(step);
});
}
"
:class="selectedCar === 3 ? 'border-primary ring-2 ring-primary/20' : 'border-gray-200 hover:border-primary/50'"
class="bg-white rounded-2xl border-2 overflow-hidden cursor-pointer transition-all duration-200">
Mini MANUELLE
Mini MANUELLE
Volkswagen UP
ou similaire Mini15,34 €
30,00 KM
/ par jour
4
Personnes
Manuelle
Transmission
5
Portes
2
Valises
Kilométrage illimité
Sans caution
{
const isDesktop = window.innerWidth >= 1024;
const el = document.getElementById((isDesktop ? 'expand-d-' : 'expand-m-') + '35');
if (!el) return;
// Keep scroll position stable after DOM reflow
if (window.scrollY !== startY) window.scrollTo(0, startY);
const rect = el.getBoundingClientRect();
const elTopAbs = rect.top + window.scrollY;
const viewportH = window.innerHeight;
let target;
if (isDesktop) {
// Vertically center expanded in viewport
target = elTopAbs + rect.height / 2 - viewportH / 2;
} else {
// Mobile: align top of expanded ~100px from viewport top
target = elTopAbs - 100;
}
const maxScroll = document.documentElement.scrollHeight - viewportH;
target = Math.max(0, Math.min(target, maxScroll));
const distance = target - startY;
if (Math.abs(distance) < 8) return;
// Gentle: pace ~1px per ms, clamped
const duration = Math.min(1800, Math.max(800, Math.abs(distance) * 1.3));
const startTime = performance.now();
const easeInOutSine = t => -(Math.cos(Math.PI * t) - 1) / 2;
const step = now => {
const elapsed = now - startTime;
const progress = Math.min(elapsed / duration, 1);
window.scrollTo(0, startY + distance * easeInOutSine(progress));
if (progress < 1) requestAnimationFrame(step);
};
requestAnimationFrame(step);
});
}
"
:class="selectedCar === 35 ? 'border-primary ring-2 ring-primary/20' : 'border-gray-200 hover:border-primary/50'"
class="bg-white rounded-2xl border-2 overflow-hidden cursor-pointer transition-all duration-200">
Mini MANUELLE
Mini MANUELLE
Volkswagen up! Comfortline
ou similaire Mini15,34 €
30,00 KM
/ par jour
5
Personnes
Manuelle
Transmission
5
Portes
3
Valises
Kilométrage illimité
Sans caution
{
const isDesktop = window.innerWidth >= 1024;
const el = document.getElementById((isDesktop ? 'expand-d-' : 'expand-m-') + '26');
if (!el) return;
// Keep scroll position stable after DOM reflow
if (window.scrollY !== startY) window.scrollTo(0, startY);
const rect = el.getBoundingClientRect();
const elTopAbs = rect.top + window.scrollY;
const viewportH = window.innerHeight;
let target;
if (isDesktop) {
// Vertically center expanded in viewport
target = elTopAbs + rect.height / 2 - viewportH / 2;
} else {
// Mobile: align top of expanded ~100px from viewport top
target = elTopAbs - 100;
}
const maxScroll = document.documentElement.scrollHeight - viewportH;
target = Math.max(0, Math.min(target, maxScroll));
const distance = target - startY;
if (Math.abs(distance) < 8) return;
// Gentle: pace ~1px per ms, clamped
const duration = Math.min(1800, Math.max(800, Math.abs(distance) * 1.3));
const startTime = performance.now();
const easeInOutSine = t => -(Math.cos(Math.PI * t) - 1) / 2;
const step = now => {
const elapsed = now - startTime;
const progress = Math.min(elapsed / duration, 1);
window.scrollTo(0, startY + distance * easeInOutSine(progress));
if (progress < 1) requestAnimationFrame(step);
};
requestAnimationFrame(step);
});
}
"
:class="selectedCar === 26 ? 'border-primary ring-2 ring-primary/20' : 'border-gray-200 hover:border-primary/50'"
class="bg-white rounded-2xl border-2 overflow-hidden cursor-pointer transition-all duration-200">
SUV AUTOMATIQUE
SUV AUTOMATIQUE
VW Caravelle T6
ou similaire SUV51,13 €
100,00 KM
/ par jour
9
Personnes
Automatique
Transmission
5
Portes
6
Valises
Kilométrage illimité
Sans caution
{
const isDesktop = window.innerWidth >= 1024;
const el = document.getElementById((isDesktop ? 'expand-d-' : 'expand-m-') + '8');
if (!el) return;
// Keep scroll position stable after DOM reflow
if (window.scrollY !== startY) window.scrollTo(0, startY);
const rect = el.getBoundingClientRect();
const elTopAbs = rect.top + window.scrollY;
const viewportH = window.innerHeight;
let target;
if (isDesktop) {
// Vertically center expanded in viewport
target = elTopAbs + rect.height / 2 - viewportH / 2;
} else {
// Mobile: align top of expanded ~100px from viewport top
target = elTopAbs - 100;
}
const maxScroll = document.documentElement.scrollHeight - viewportH;
target = Math.max(0, Math.min(target, maxScroll));
const distance = target - startY;
if (Math.abs(distance) < 8) return;
// Gentle: pace ~1px per ms, clamped
const duration = Math.min(1800, Math.max(800, Math.abs(distance) * 1.3));
const startTime = performance.now();
const easeInOutSine = t => -(Math.cos(Math.PI * t) - 1) / 2;
const step = now => {
const elapsed = now - startTime;
const progress = Math.min(elapsed / duration, 1);
window.scrollTo(0, startY + distance * easeInOutSine(progress));
if (progress < 1) requestAnimationFrame(step);
};
requestAnimationFrame(step);
});
}
"
:class="selectedCar === 8 ? 'border-primary ring-2 ring-primary/20' : 'border-gray-200 hover:border-primary/50'"
class="bg-white rounded-2xl border-2 overflow-hidden cursor-pointer transition-all duration-200">
SUV AUTOMATIQUE
SUV AUTOMATIQUE
VW Tiguan
ou similaire SUV51,13 €
100,00 KM
/ par jour
5
Personnes
Automatique
Transmission
5
Portes
4
Valises
Kilométrage illimité
Sans caution