/* ========================================================================== Consentement cookies + balise Google Ads (compte AW-1070646184) -------------------------------------------------------------------------- À charger en tout premier dans le
de chaque page : - Mode Consentement Google v2 (« basique ») : tant que le visiteur n'a pas cliqué « Accepter », gtag.js n'est pas chargé et rien n'est envoyé à Google. - Le choix est conservé 6 mois (localStorage), puis redemandé. - Le visiteur peut changer d'avis via le lien « Gérer les cookies » ajouté au pied de page, ou tout bouton appelant solisCookies(). - Conversion « Demande de démo » : déclenchée dans index.html après une réservation Cal.com réussie (gtag('event', 'conversion', …)). ========================================================================== */ (function () { var ID = 'AW-1070646184'; var CLE = 'solis-cookies'; var DUREE = 182 * 24 * 3600 * 1000; // 6 mois var CONSENT_PUB = ['ad_storage', 'ad_user_data', 'ad_personalization']; window.dataLayer = window.dataLayer || []; window.gtag = window.gtag || function () { dataLayer.push(arguments); }; function lireChoix() { try { var c = JSON.parse(localStorage.getItem(CLE)); if (c && (c.choix === 'accepte' || c.choix === 'refuse') && Date.now() - c.date < DUREE) return c.choix; } catch (e) {} return null; } function ecrireChoix(choix) { try { localStorage.setItem(CLE, JSON.stringify({ choix: choix, date: Date.now() })); } catch (e) {} } function etat(valeur) { var o = {}; for (var i = 0; i < CONSENT_PUB.length; i++) o[CONSENT_PUB[i]] = valeur; return o; } var gtagCharge = false; function chargerGtag() { if (gtagCharge) return; gtagCharge = true; var s = document.createElement('script'); s.async = true; s.src = 'https://www.googletagmanager.com/gtag/js?id=' + ID; document.head.appendChild(s); } function effacerCookiesGoogle() { var hotes = ['', location.hostname, '.' + location.hostname.replace(/^www\./, '')]; document.cookie.split(';').forEach(function (c) { var nom = c.split('=')[0].trim(); if (!/^_gcl_|^_ga/.test(nom)) return; hotes.forEach(function (h) { document.cookie = nom + '=; Max-Age=0; path=/' + (h ? '; domain=' + h : ''); }); }); } // État initial, avant toute balise var choix = lireChoix(); var defaut = etat(choix === 'accepte' ? 'granted' : 'denied'); defaut.analytics_storage = 'denied'; // pas de mesure d'audience sur le site gtag('consent', 'default', defaut); gtag('js', new Date()); gtag('config', ID); if (choix === 'accepte') chargerGtag(); // ---- Bandeau ---- var bandeau = null; function appliquer(nouveau) { ecrireChoix(nouveau); if (nouveau === 'accepte') { gtag('consent', 'update', etat('granted')); chargerGtag(); } else { gtag('consent', 'update', etat('denied')); effacerCookiesGoogle(); } masquer(); } function masquer() { if (bandeau) bandeau.style.display = 'none'; } // Sur mobile, une page plus large que l'écran agrandit la zone de référence des // éléments « fixed » : le bandeau sortirait de l'écran. On le cale alors sur la // partie réellement visible (visualViewport). Sans débordement : CSS normal. function placer() { if (!bandeau || bandeau.style.display === 'none') return; var vv = window.visualViewport, s = bandeau.style; if (vv && vv.scale <= 1.01 && (window.innerWidth - vv.width > 1 || window.innerHeight - vv.height > 1)) { s.margin = '0'; s.right = 'auto'; s.bottom = 'auto'; s.left = (vv.offsetLeft + 12) + 'px'; s.width = Math.min(vv.width - 24, 760) + 'px'; s.top = (vv.offsetTop + vv.height - bandeau.offsetHeight - 12) + 'px'; } else { s.margin = s.right = s.bottom = s.left = s.width = s.top = ''; } } if (window.visualViewport) { visualViewport.addEventListener('resize', placer); visualViewport.addEventListener('scroll', placer); } window.addEventListener('resize', placer); window.addEventListener('load', placer); // le débordement peut n'apparaître qu'après les images function construire() { var css = document.createElement('style'); css.textContent = '#solis-cookies{position:fixed;left:16px;right:16px;bottom:16px;z-index:2147483000;max-width:760px;margin:0 auto;box-sizing:border-box;' + 'display:flex;flex-wrap:wrap;align-items:center;gap:14px 20px;padding:16px 20px;border-radius:16px;' + 'background:#0e3d1f;color:#fff;box-shadow:0 18px 40px -12px rgba(0,0,0,.45);' + "font-family:'Manrope',system-ui,-apple-system,'Segoe UI',sans-serif;font-size:.9rem;line-height:1.5}" + '#solis-cookies p{flex:1 1 320px;margin:0;color:#dceccd}' + '#solis-cookies p b{color:#fff}' + '#solis-cookies a{color:#b9e36a;text-decoration:underline}' + '#solis-cookies .sc-btns{display:flex;gap:10px;flex:0 0 auto}' + '#solis-cookies button{font:inherit;font-weight:800;min-width:118px;padding:11px 20px;border-radius:999px;cursor:pointer;border:2px solid #b9e36a}' + '#solis-cookies button[data-choix=refuse]{background:transparent;color:#fff}' + '#solis-cookies button[data-choix=accepte]{background:#b9e36a;color:#08300f}' + '#solis-cookies button:focus-visible{outline:3px solid #fff;outline-offset:2px}' + '@media(max-width:560px){#solis-cookies .sc-btns{flex:1 1 100%}#solis-cookies button{flex:1}}'; document.head.appendChild(css); bandeau = document.createElement('div'); bandeau.id = 'solis-cookies'; bandeau.setAttribute('role', 'region'); bandeau.setAttribute('aria-label', 'Gestion des cookies'); bandeau.innerHTML = 'Cookies — Nous utilisons des cookies Google Ads pour mesurer l\'efficacité de nos annonces. ' + 'Ils ne sont déposés qu\'avec votre accord. En savoir plus
' + '