diff --git a/frontend/index.html b/frontend/index.html
index da777a9..deab9b6 100644
--- a/frontend/index.html
+++ b/frontend/index.html
@@ -1146,7 +1146,7 @@
-
+
diff --git a/frontend/js/camera.js b/frontend/js/camera.js
index b87ea8b..3975e3c 100644
--- a/frontend/js/camera.js
+++ b/frontend/js/camera.js
@@ -316,22 +316,30 @@ async function lancerCapture() {
const avecPreMessages = (i === 0);
await compteARebours(avecPreMessages);
- // Surprise : seulement en photo simple (pas strip/multi)
- // Affiche la surprise PUIS capture pendant que les gens reagissent
- const aSurprise = (modeActuel === 'simple') && montrerSurprise();
- if (aSurprise) await pause(500);
+ // Stopper le preview AVANT la surprise (evite un frame flou visible)
+ arreterPreview();
- // Flash blanc immédiat + lancer capture en parallèle
+ // Surprise : seulement en photo simple (pas strip/multi)
+ // La capture DSLR se lance pendant que l'image surprise est affichee
+ const aSurprise = (modeActuel === 'simple') && montrerSurprise();
+
+ // Lancer la capture immediatement (le DSLR met ~1-2s a repondre)
+ const capturePromise = apiPost('/api/capturer').catch(() => null);
+
+ // Laisser la surprise visible pendant que le DSLR capture
+ if (aSurprise) await pause(800);
+
+ // Flash blanc au moment ou le DSLR a eu le temps de declencher
const flash = document.getElementById('flash-blanc');
flash.classList.remove('cache');
flash.style.animation = 'none';
flash.offsetHeight;
flash.style.animation = '';
- arreterPreview();
- let resultat = await apiPost('/api/capturer').catch(() => null);
if (aSurprise) { cacherSurprise(); prechargerSurprise(); }
+ let resultat = await capturePromise;
+
if (!resultat && !resultat?.erreur) {
flash.classList.add('cache');
document.getElementById('capture-en-cours').classList.add('cache');