Votre panier

Finaliser ma commande

Merci ! Votre commande a bien été enregistrée. Nous vous écrivons à l'adresse email fournie.

. window.rsHasConsent = function(category) { try { var raw = localStorage.getItem(STORAGE_KEY); if (!raw) return false; var c = JSON.parse(raw); if (!c || c.v !== VERSION) return false; return !!c[category]; } catch (e) { return false; } }; window.rsLoadAnalytics = function() { var slug = window.__rsAnalyticsSlug || ''; if (!slug) return; var vid; try { vid = localStorage.getItem('polsia_vid'); if (!vid) { vid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { var r = Math.random() * 16 | 0; return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16); }); localStorage.setItem('polsia_vid', vid); } } catch (e) { return; } new Image().src = 'https://polsia.com/api/beacon/pixel?s=' + encodeURIComponent(slug) + '&v=' + encodeURIComponent(vid); document.dispatchEvent(new CustomEvent('rs:analytics-loaded')); }; window.rsOpenCookieSettings = function() { openBanner(); }; var lastOpener = null; function announce(msg) { if (live) live.textContent = msg; } function persist(state) { var payload = Object.assign({ analytics: false, marketing: false, ts: new Date().toISOString(), v: VERSION }, state); try { localStorage.setItem(STORAGE_KEY, JSON.stringify(payload)); } catch (e) {} document.dispatchEvent(new CustomEvent('rs:consent', { detail: payload })); return payload; } function closeBanner() { if (!banner) return; banner.hidden = true; banner.setAttribute('aria-hidden', 'true'); if (panel) { panel.setAttribute('aria-hidden', 'true'); } if (customizeBtn) customizeBtn.setAttribute('aria-expanded', 'false'); if (notice) notice.hidden = true; if (lastOpener && typeof lastOpener.focus === 'function') { try { lastOpener.focus(); } catch (e) {} } } function openBanner(opener) { if (!banner) return; lastOpener = opener || null; banner.hidden = false; banner.setAttribute('aria-hidden', 'false'); if (notice) notice.hidden = false; if (acceptBtn) acceptBtn.focus(); } function acceptAll() { persist({ analytics: true, marketing: true }); announce('Choix enregistré : tout accepter.'); if (analyticsToggle) analyticsToggle.checked = true; if (marketingToggle) marketingToggle.checked = true; closeBanner(); if (window.rsLoadAnalytics) window.rsLoadAnalytics(); } function rejectAll() { persist({ analytics: false, marketing: false }); announce('Choix enregistré : tout refuser.'); if (analyticsToggle) analyticsToggle.checked = false; if (marketingToggle) marketingToggle.checked = false; closeBanner(); } function savePreferences() { var aN = analyticsToggle ? analyticsToggle.checked : false; var mN = marketingToggle ? marketingToggle.checked : false; persist({ analytics: !!aN, marketing: !!mN }); announce('Choix enregistré.'); closeBanner(); if (aN && window.rsLoadAnalytics) window.rsLoadAnalytics(); } function togglePanel() { if (!panel || !customizeBtn) return; var expanded = customizeBtn.getAttribute('aria-expanded') === 'true'; var next = !expanded; customizeBtn.setAttribute('aria-expanded', next ? 'true' : 'false'); panel.setAttribute('aria-hidden', next ? 'false' : 'true'); if (next) { panel.scrollIntoView({ block: 'nearest', behavior: 'smooth' }); } } if (acceptBtn) acceptBtn.addEventListener('click', acceptAll); if (rejectBtn) rejectBtn.addEventListener('click', rejectAll); if (customizeBtn) customizeBtn.addEventListener('click', togglePanel); if (saveBtn) saveBtn.addEventListener('click', savePreferences); if (banner) { document.addEventListener('keydown', function(e) { if (!banner || banner.hidden) return; if (e.key === 'Escape') { e.preventDefault(); rejectAll(); } }); } // First-load: synchronous reveal BEFORE first paint so there is no flash. // The partial ships with hidden=true; we remove it inline. try { var raw = localStorage.getItem(STORAGE_KEY); var existing = raw ? JSON.parse(raw) : null; if (!existing || existing.v !== VERSION) { banner.hidden = false; banner.setAttribute('aria-hidden', 'false'); if (notice) notice.hidden = false; } else { // Existing choice: still wire up so toggles reflect stored state if user reopens settings. if (analyticsToggle) analyticsToggle.checked = !!existing.analytics; if (marketingToggle) marketingToggle.checked = !!existing.marketing; } } catch (e) { banner.hidden = false; banner.setAttribute('aria-hidden', 'false'); if (notice) notice.hidden = false; } })();