templates/entreprise/privacy.html.twig line 1

Open in your IDE?
  1. {% extends 'base.html.twig' %}
  2.     
  3. {% block title  %}
  4. {{ parent() }} |  {{ 'entreprise.pricing' | trans }}
  5. {% endblock title  %}
  6. {% block stylesheets %}
  7.     {{ parent() }}
  8.     <style>
  9.       
  10.         /* Couleur principale : #0A0A9C */
  11.         :root {
  12.             --primary: #0A0A9C;
  13.             --primary-dark: #07076e;
  14.             --primary-light: #2e2eb3;
  15.             --primary-soft: #eef2ff;
  16.             --gray-50: #f9fafb;
  17.             --gray-100: #f1f5f9;
  18.             --gray-200: #e2e8f0;
  19.             --gray-600: #475569;
  20.             --gray-800: #1e293b;
  21.             --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
  22.             --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);
  23.         }
  24.         /* Layout */
  25.         .container {
  26.             max-width: 1280px;
  27.             margin: 0 auto;
  28.             padding: 0 1.5rem;
  29.         }
  30.         /* Header avec accent principal */
  31.         .site-header {
  32.             background: white;
  33.             border-bottom: 1px solid var(--gray-200);
  34.             box-shadow: var(--shadow-sm);
  35.             position: sticky;
  36.             top: 0;
  37.             z-index: 10;
  38.             backdrop-filter: blur(0px);
  39.         }
  40.         .header-inner {
  41.             display: flex;
  42.             align-items: center;
  43.             justify-content: space-between;
  44.             flex-wrap: wrap;
  45.             padding: 1rem 0;
  46.             gap: 1rem;
  47.         }
  48.         .logo-area {
  49.             display: flex;
  50.             align-items: center;
  51.             gap: 0.75rem;
  52.         }
  53.         .logo-icon {
  54.             background: var(--primary);
  55.             width: 40px;
  56.             height: 40px;
  57.             border-radius: 12px;
  58.             display: flex;
  59.             align-items: center;
  60.             justify-content: center;
  61.             color: white;
  62.             font-weight: 700;
  63.             font-size: 1.25rem;
  64.             box-shadow: 0 2px 6px rgba(10,10,156,0.2);
  65.         }
  66.         .logo-text h1 {
  67.             font-size: 1.35rem;
  68.             font-weight: 700;
  69.             letter-spacing: -0.3px;
  70.             color: var(--primary-dark);
  71.         }
  72.         .logo-text p {
  73.             font-size: 0.75rem;
  74.             color: var(--gray-600);
  75.         }
  76.         .back-home {
  77.             background: white;
  78.             border: 1px solid var(--gray-200);
  79.             padding: 0.5rem 1.2rem;
  80.             border-radius: 40px;
  81.             font-size: 0.9rem;
  82.             font-weight: 500;
  83.             color: var(--primary);
  84.             text-decoration: none;
  85.             transition: all 0.2s ease;
  86.             display: inline-flex;
  87.             align-items: center;
  88.             gap: 0.5rem;
  89.         }
  90.         .back-home:hover {
  91.             background: var(--primary-soft);
  92.             border-color: var(--primary-light);
  93.             color: var(--primary-dark);
  94.         }
  95.         /* Hero cookie */
  96.         .cookie-hero {
  97.             background: linear-gradient(135deg, #ffffff 0%, var(--primary-soft) 100%);
  98.             border-radius: 2rem;
  99.             margin: 2rem 0 2rem 0;
  100.             padding: 2rem 2rem;
  101.             box-shadow: var(--shadow-sm);
  102.             border: 1px solid rgba(10,10,156,0.1);
  103.         }
  104.         .hero-badge {
  105.             display: inline-block;
  106.             background: var(--primary);
  107.             color: white;
  108.             padding: 0.2rem 0.9rem;
  109.             border-radius: 40px;
  110.             font-size: 0.8rem;
  111.             font-weight: 600;
  112.             letter-spacing: 0.3px;
  113.             margin-bottom: 1rem;
  114.         }
  115.         .cookie-hero h1 {
  116.             font-size: 2.2rem;
  117.             font-weight: 800;
  118.             color: #0a0a2a;
  119.             margin-bottom: 1rem;
  120.             line-height: 1.2;
  121.         }
  122.         .cookie-hero p.lead {
  123.             font-size: 1.1rem;
  124.             color: var(--gray-800);
  125.             max-width: 85%;
  126.             opacity: 0.85;
  127.         }
  128.         /* Main content */
  129.         .policy-card {
  130.             background: white;
  131.             border-radius: 1.5rem;
  132.             box-shadow: var(--shadow-md);
  133.             margin-bottom: 3rem;
  134.             overflow: hidden;
  135.             border: 1px solid var(--gray-200);
  136.         }
  137.         .policy-section {
  138.             padding: 2rem 2rem;
  139.             border-bottom: 1px solid var(--gray-100);
  140.         }
  141.         .policy-section:last-child {
  142.             border-bottom: none;
  143.         }
  144.         .section-title {
  145.             display: flex;
  146.             align-items: center;
  147.             gap: 0.75rem;
  148.             margin-bottom: 1.25rem;
  149.         }
  150.         .section-title .title-icon {
  151.             background: var(--primary-soft);
  152.             width: 40px;
  153.             height: 40px;
  154.             border-radius: 40px;
  155.             display: inline-flex;
  156.             align-items: center;
  157.             justify-content: center;
  158.             color: var(--primary);
  159.             font-size: 1.25rem;
  160.             font-weight: 600;
  161.         }
  162.         .section-title h2 {
  163.             font-size: 1.6rem;
  164.             font-weight: 700;
  165.             color: var(--primary-dark);
  166.             letter-spacing: -0.2px;
  167.         }
  168.         .policy-text {
  169.             color: var(--gray-800);
  170.             margin-bottom: 1.25rem;
  171.         }
  172.         .policy-text p {
  173.             margin-bottom: 1rem;
  174.         }
  175.         .cookie-table {
  176.             width: 100%;
  177.             border-collapse: collapse;
  178.             margin: 1.5rem 0;
  179.             background: var(--gray-50);
  180.             border-radius: 1rem;
  181.             overflow: hidden;
  182.             box-shadow: var(--shadow-sm);
  183.         }
  184.         .cookie-table th, .cookie-table td {
  185.             padding: 1rem;
  186.             text-align: left;
  187.             border-bottom: 1px solid var(--gray-200);
  188.             vertical-align: top;
  189.         }
  190.         .cookie-table th {
  191.             background-color: var(--primary);
  192.             color: white;
  193.             font-weight: 600;
  194.             font-size: 0.9rem;
  195.         }
  196.         .cookie-table tr:last-child td {
  197.             border-bottom: none;
  198.         }
  199.         .cookie-table td {
  200.             background-color: white;
  201.             font-size: 0.9rem;
  202.         }
  203.         .badge-cookie {
  204.             background: var(--primary-soft);
  205.             color: var(--primary);
  206.             border-radius: 30px;
  207.             padding: 0.2rem 0.8rem;
  208.             font-size: 0.7rem;
  209.             font-weight: 600;
  210.             display: inline-block;
  211.         }
  212.         .consent-actions {
  213.             background: var(--gray-100);
  214.             padding: 1.5rem;
  215.             border-radius: 1rem;
  216.             margin: 1.5rem 0 0.5rem;
  217.             display: flex;
  218.             flex-wrap: wrap;
  219.             gap: 1rem;
  220.             align-items: center;
  221.             justify-content: space-between;
  222.         }
  223.         .btn-primary {
  224.             background: var(--primary);
  225.             color: white;
  226.             border: none;
  227.             padding: 0.75rem 1.8rem;
  228.             border-radius: 60px;
  229.             font-weight: 600;
  230.             font-size: 0.9rem;
  231.             cursor: pointer;
  232.             transition: all 0.2s;
  233.             box-shadow: 0 1px 2px rgba(0,0,0,0.05);
  234.             text-decoration: none;
  235.             display: inline-block;
  236.         }
  237.         .btn-primary:hover {
  238.             background: var(--primary-dark);
  239.             transform: translateY(-1px);
  240.         }
  241.         .btn-outline {
  242.             background: transparent;
  243.             border: 1px solid var(--gray-400);
  244.             padding: 0.7rem 1.5rem;
  245.             border-radius: 60px;
  246.             font-weight: 500;
  247.             color: var(--gray-800);
  248.             cursor: pointer;
  249.             transition: 0.2s;
  250.         }
  251.         .btn-outline:hover {
  252.             background: white;
  253.             border-color: var(--primary);
  254.             color: var(--primary);
  255.         }
  256.         .last-updated {
  257.             font-size: 0.8rem;
  258.             color: var(--gray-600);
  259.             border-top: 1px solid var(--gray-200);
  260.             padding-top: 1.5rem;
  261.             margin-top: 1rem;
  262.             text-align: right;
  263.         }
  264.         footer {
  265.             background: white;
  266.             border-top: 1px solid var(--gray-200);
  267.             padding: 2rem 0;
  268.             margin-top: 2rem;
  269.             color: var(--gray-600);
  270.             font-size: 0.85rem;
  271.         }
  272.         .footer-links {
  273.             display: flex;
  274.             flex-wrap: wrap;
  275.             gap: 1.5rem;
  276.             justify-content: center;
  277.             margin-bottom: 1rem;
  278.         }
  279.         .footer-links a {
  280.             color: var(--primary);
  281.             text-decoration: none;
  282.             font-weight: 500;
  283.         }
  284.         .footer-links a:hover {
  285.             text-decoration: underline;
  286.         }
  287.         @media (max-width: 768px) {
  288.             .cookie-hero h1 {
  289.                 font-size: 1.8rem;
  290.             }
  291.             .cookie-hero p.lead {
  292.                 max-width: 100%;
  293.             }
  294.             .policy-section {
  295.                 padding: 1.5rem;
  296.             }
  297.             .section-title h2 {
  298.                 font-size: 1.3rem;
  299.             }
  300.             .cookie-table th, .cookie-table td {
  301.                 padding: 0.75rem;
  302.             }
  303.             .consent-actions {
  304.                 flex-direction: column;
  305.                 align-items: stretch;
  306.             }
  307.         }
  308.     </style>
  309. {% endblock stylesheets %}
  310. {% block body  %}
  311.           <main class="container">
  312.         <!-- HERO section avec la couleur primaire dominante -->
  313.         <div class="cookie-hero">
  314.             <span class="hero-badge">🍪 Transparence totale</span>
  315.             <h1>Politique de cookies</h1>
  316.             <p class="lead">Chez {{ app_name }}, nous utilisons des cookies pour amĂ©liorer votre expĂ©rience, sĂ©curiser notre plateforme de mise en relation et vous proposer des prestataires (plombiers, Ă©lectriciens, etc.) pertinents près de chez vous.</p>
  317.         </div>
  318.         <div class="policy-card">
  319.             <div class="policy-section">
  320.                 <div class="section-title">
  321.                     <span class="title-icon">🍪</span>
  322.                     <h2>Qu'est-ce qu'un cookie ?</h2>
  323.                 </div>
  324.                 <div class="policy-text">
  325.                     <p>Un cookie est un petit fichier texte dĂ©posĂ© sur votre terminal (ordinateur, tablette, smartphone) lors de la visite d’un site web. Il permet de stocker des informations relatives Ă  votre navigation et de vous reconnaĂ®tre lors de vos visites ultĂ©rieures. Sur {{ app_name }}, nous utilisons des cookies essentiels, fonctionnels et d’analyse pour faciliter la mise en relation rapide avec un plombier, un Ă©lectricien ou tout autre artisan Ă  domicile.</p>
  326.                     <p>Les cookies ne contiennent aucune donnĂ©e personnelle sensible sans votre consentement explicite. Vous gardez le contrĂ´le total de vos prĂ©fĂ©rences Ă  tout moment.</p>
  327.                 </div>
  328.             </div>
  329.             <div class="policy-section">
  330.                 <div class="section-title">
  331.                     <span class="title-icon">⚙️</span>
  332.                     <h2>Cookies utilisĂ©s sur {{ app_name }}</h2>
  333.                 </div>
  334.                 <div class="policy-text">
  335.                     <p>Notre plateforme utilise diffĂ©rentes catĂ©gories de cookies pour garantir un fonctionnement optimal et une expĂ©rience fluide, que vous soyez un particulier recherchant un artisan ou un prestataire inscrit.</p>
  336.                 </div>
  337.                 <table class="cookie-table">
  338.                     <thead>
  339.                         <tr><th>Type de cookie</th><th>FinalitĂ©</th><th>DurĂ©e de conservation</th></tr>
  340.                     </thead>
  341.                     <tbody>
  342.                         <tr><td><span class="badge-cookie">Essentiels</span></td><td>Authentification, sĂ©curitĂ©, Ă©quilibrage de charge, mĂ©morisation du consentement. Indispensables Ă  la navigation et Ă  la mise en relation.</td><td>Session / jusqu’à 12 mois</td></tr>
  343.                         <tr><td><span class="badge-cookie">Fonctionnels</span></td><td>MĂ©moriser vos prĂ©fĂ©rences (code postal, type de prestation : plomberie, Ă©lectricitĂ©), affichage personnalisĂ© des artisans disponibles.</td><td>Jusqu’à 13 mois</td></tr>
  344.                         <tr><td><span class="badge-cookie">Analytiques / Statistiques</span></td><td>Mesurer l’audience, comprendre comment les utilisateurs interagissent avec le site (pages visitĂ©es, taux de conversion) afin d’optimiser nos services.</td><td>Jusqu’à 25 mois</td></tr>
  345.                         <tr><td><span class="badge-cookie">PrĂ©fĂ©rences publicitaires</span></td><td>Proposer des annonces pertinentes liĂ©es aux services Ă  domicile (uniquement avec votre accord explicite).</td><td>Jusqu’à 13 mois</td></tr>
  346.                     </tbody>
  347.                 </table>
  348.                 <p class="policy-text" style="font-size:0.85rem; margin-top:0.5rem;">Nous utilisons Ă©galement des cookies tiers (Google Analytics, Ă©ventuellement des services de cartographie) dans le cadre de l’amĂ©lioration de notre service. Vous pouvez Ă  tout moment modifier vos prĂ©fĂ©rences via notre gestionnaire de cookies.</p>
  349.             </div>
  350.             <div class="policy-section">
  351.                 <div class="section-title">
  352.                     <span class="title-icon">🛡️</span>
  353.                     <h2>Gestion et contrĂ´le de vos cookies</h2>
  354.                 </div>
  355.                 <div class="policy-text">
  356.                     <p>ConformĂ©ment Ă  la rĂ©glementation (RGPD et directive ePrivacy), nous recueillons votre consentement prĂ©alable pour le dĂ©pĂ´t de cookies non essentiels. Vous pouvez Ă  tout moment modifier vos choix ou retirer votre consentement via le lien â€śGĂ©rer mes cookies” en bas de page, ou directement dans les paramètres de votre navigateur.</p>
  357.                     <p>La plupart des navigateurs vous permettent de contrĂ´ler les cookies via leurs rĂ©glages : vous pouvez bloquer tous les cookies, supprimer ceux dĂ©jĂ  installĂ©s, ou ĂŞtre averti avant qu’un cookie ne soit dĂ©posĂ©. Attention, la dĂ©sactivation des cookies essentiels pourrait affecter certaines fonctionnalitĂ©s clĂ©s de mise en relation (connexion, recherche d’artisan).</p>
  358.                 </div>
  359.                 <div class="consent-actions">
  360.                     <span style="font-weight:500;">âś‹ Modifiez vos prĂ©fĂ©rences Ă  tout moment :</span>
  361.                     <div style="display: flex; gap: 12px;">
  362.                         <button id="acceptCookiesBtn" class="btn-primary">Accepter tous les cookies</button>
  363.                         <button id="refuseNonEssentialBtn" class="btn-outline">Refuser les cookies non essentiels</button>
  364.                     </div>
  365.                 </div>
  366.                 <div class="policy-text" style="margin-top: 1rem;">
  367.                     <p>đź’ˇ <strong>Pour les prestataires inscrits :</strong> les cookies nous aident Ă  sĂ©curiser votre espace professionnel et Ă  faciliter la gestion de vos disponibilitĂ©s (plomberie, Ă©lectricitĂ©, etc.). Vous retrouvez ici les mĂŞmes garanties de transparence.</p>
  368.                 </div>
  369.             </div>
  370.             <div class="policy-section">
  371.                 <div class="section-title">
  372.                     <span class="title-icon">đź“‹</span>
  373.                     <h2>Cookies tiers et partenaires</h2>
  374.                 </div>
  375.                 <div class="policy-text">
  376.                     <p>Notre site de mise en relation peut intĂ©grer des services tiers qui dĂ©posent leurs propres cookies :</p>
  377.                     <ul style="margin-left: 1.5rem; margin-top: 0.5rem; margin-bottom: 1rem;">
  378.                         <li>• <strong>Google Analytics</strong> : mesure d’audience anonymisĂ©e, nous aide Ă  amĂ©liorer l’expĂ©rience des artisans et des particuliers.</li>
  379.                         <li>• <strong>Google Maps / API cartographie</strong> : pour afficher les zones d’intervention des plombiers et Ă©lectriciens.</li>
  380.                         <li>• <strong>Outils de paiement sĂ©curisĂ©</strong> (le cas Ă©chĂ©ant) : cookies liĂ©s Ă  la transaction.</li>
  381.                     </ul>
  382.                     <p>Nous ne revendons aucune donnĂ©e Ă  des fins publicitaires tierces sans consentement explicite. Les donnĂ©es collectĂ©es sont strictement utilisĂ©es pour optimiser notre plateforme de mise en relation.</p>
  383.                 </div>
  384.             </div>
  385.             <div class="policy-section">
  386.                 <div class="section-title">
  387.                     <span class="title-icon">⚖️</span>
  388.                     <h2>Base lĂ©gale et durĂ©e de conservation</h2>
  389.                 </div>
  390.                 <div class="policy-text">
  391.                     <p>Le traitement des donnĂ©es via les cookies repose sur :</p>
  392.                     <ul style="margin-left: 1.5rem; margin-bottom: 1rem;">
  393.                         <li>• L’exĂ©cution du contrat (cookies essentiels Ă  la mise en relation entre particulier et prestataire).</li>
  394.                         <li>• Votre consentement pour les cookies de mesure d’audience, fonctionnels avancĂ©s et publicitaires.</li>
  395.                     </ul>
  396.                     <p>Les donnĂ©es issues des cookies sont conservĂ©es pour une durĂ©e n’excĂ©dant pas 13 mois (sauf exceptions lĂ©gales). Les donnĂ©es anonymisĂ©es d’analyse peuvent ĂŞtre conservĂ©es plus longtemps Ă  des fins statistiques.</p>
  397.                 </div>
  398.             </div>
  399.             <div class="policy-section">
  400.                 <div class="section-title">
  401.                     <span class="title-icon">📞</span>
  402.                     <h2>Vos droits et contact</h2>
  403.                 </div>
  404.                 <div class="policy-text">
  405.                     <p>ConformĂ©ment au RGPD, vous disposez d’un droit d’accès, de rectification, d’effacement et de limitation des traitements de vos donnĂ©es personnelles. Pour toute demande relative aux cookies ou Ă  notre politique de confidentialitĂ©, vous pouvez nous Ă©crire Ă  : <strong>info@myhelpplace.com</strong> ou par courrier Ă  l’adresse indiquĂ©e dans nos mentions lĂ©gales.</p>
  406.                     <p>Nous nous engageons Ă  rĂ©pondre dans les meilleurs dĂ©lais et Ă  garantir une expĂ©rience de confiance pour tous nos utilisateurs : particuliers et artisans (plombiers, Ă©lectriciens, serruriers, etc.).</p>
  407.                 </div>
  408.             </div>
  409.             <div class="last-updated container" style="padding: 1rem 2rem 1.5rem 2rem;">
  410.                 đź“… Dernière mise Ă  jour : 20 mars 2026 â€” {{ app_name }} s'engage Ă  mettre Ă  jour cette politique en cas d’évolution lĂ©gale ou technique.
  411.             </div>
  412.         </div>
  413.         <!-- Message de confirmation dynamique (toast-like) -->
  414.         <div id="toastMessage" style="position: fixed; bottom: 2rem; right: 2rem; background: #0A0A9C; color: white; padding: 0.8rem 1.5rem; border-radius: 60px; font-weight: 500; box-shadow: 0 10px 20px rgba(0,0,0,0.1); z-index: 1000; opacity: 0; transition: opacity 0.2s; pointer-events: none;"></div>
  415.     </main>
  416. {% endblock body  %}
  417. {% block javascripts %}
  418. {{ parent() }}
  419.     <script>
  420.         (function() {
  421.             // Ă‰mulation de gestion de consentement â€“ purement front Ă  titre Ă©ducatif/dĂ©monstration interactive.
  422.             // L'implĂ©mentation rĂ©elle devrait stocker les prĂ©fĂ©rences dans localStorage et/ou via un consent manager.
  423.             // Ici on simule un stockage des prĂ©fĂ©rences pour l'expĂ©rience utilisateur cohĂ©rente.
  424.             
  425.             const STORAGE_KEY = 'servicepro_cookie_consent';
  426.             
  427.             function getConsent() {
  428.                 const stored = localStorage.getItem(STORAGE_KEY);
  429.                 if (stored === null) return null;
  430.                 try {
  431.                     return JSON.parse(stored);
  432.                 } catch(e) { return null; }
  433.             }
  434.             
  435.             function saveConsent(consentValue) {
  436.                 // consentValue: 'all' (tout acceptĂ©) , 'necessary_only' (uniquement essentiels)
  437.                 localStorage.setItem(STORAGE_KEY, JSON.stringify({ consent: consentValue, updatedAt: new Date().toISOString() }));
  438.                 showToast(`🍪 Vos prĂ©fĂ©rences ont Ă©tĂ© enregistrĂ©es : ${consentValue === 'all' ? 'tous les cookies acceptĂ©s' : 'seuls les cookies essentiels sont activĂ©s'}.`);
  439.                 // En condition rĂ©elle, on appliquerait les tags consent ou on dĂ©sactiverait les scripts tiers.
  440.                 // Ici on se contente d'un feedback utilisateur.
  441.                 console.log(`[Cookie consent] ${consentValue}`);
  442.             }
  443.             
  444.             function showToast(message) {
  445.                 const toast = document.getElementById('toastMessage');
  446.                 if (!toast) return;
  447.                 toast.textContent = message;
  448.                 toast.style.opacity = '1';
  449.                 setTimeout(() => {
  450.                     toast.style.opacity = '0';
  451.                 }, 3200);
  452.             }
  453.             
  454.             // Boutons d'interaction
  455.             const acceptBtn = document.getElementById('acceptCookiesBtn');
  456.             const refuseBtn = document.getElementById('refuseNonEssentialBtn');
  457.             const manageFooter = document.getElementById('manageCookiesFooter');
  458.             
  459.             if (acceptBtn) {
  460.                 acceptBtn.addEventListener('click', () => {
  461.                     saveConsent('all');
  462.                 });
  463.             }
  464.             if (refuseBtn) {
  465.                 refuseBtn.addEventListener('click', () => {
  466.                     saveConsent('necessary_only');
  467.                 });
  468.             }
  469.             if (manageFooter) {
  470.                 manageFooter.addEventListener('click', (e) => {
  471.                     e.preventDefault();
  472.                     // Simuler un panneau de gestion rapide - on peut ouvrir une alerte ou un modal simple pour dĂ©mo
  473.                     const currentConsent = getConsent();
  474.                     let msg = 'Gestion des cookies HelpPlace\n\n';
  475.                     msg += 'Choisissez votre prĂ©fĂ©rence :\n';
  476.                     msg += currentConsent ? `État actuel : ${currentConsent.consent === 'all' ? 'Tous les cookies acceptĂ©s' : 'Cookies essentiels uniquement'}\n\n` : 'Aucun choix enregistrĂ©.\n\n';
  477.                     const choice = confirm(msg + '✔️ OK = Accepter tous les cookies\n❌ Annuler = Refuser les cookies non essentiels');
  478.                     if (choice) {
  479.                         saveConsent('all');
  480.                     } else if (choice === false) {
  481.                         saveConsent('necessary_only');
  482.                     }
  483.                 });
  484.             }
  485.             
  486.             // Au chargement, afficher un petit message de bienvenue si l'utilisateur n'a jamais fait de choix (optionnel)
  487.             if (!getConsent()) {
  488.                 // Ne pas spammer, mais suggestion subtile via toast après 1 seconde
  489.                 setTimeout(() => {
  490.                     showToast('🍪 Nous respectons votre vie privĂ©e. Utilisez les boutons pour gĂ©rer vos cookies.');
  491.                 }, 1000);
  492.             } else {
  493.                 const consent = getConsent();
  494.                 if (consent.consent === 'all') {
  495.                     console.log('Cookies complets activĂ©s (simulation)');
  496.                 } else {
  497.                     console.log('Seuls les cookies essentiels actifs (simulation)');
  498.                 }
  499.             }
  500.             
  501.             // Simulation de lien retour vers l'accueil (placeholder)
  502.             const homeLink = document.querySelector('.back-home');
  503.             if (homeLink) {
  504.                 homeLink.addEventListener('click', (e) => {
  505.                     e.preventDefault();
  506.                     showToast('đźš§ Retour vers la page d’accueil (simulation) â€” dans un vrai site, redirection vers l’index.');
  507.                     // window.location.href = '/';
  508.                 });
  509.             }
  510.             
  511.             // Gestion responsive et Ă©lĂ©gance: smooth scroll pour ancres internes (pas d'ancre particulière mais safe)
  512.             document.querySelectorAll('a[href^="#"]').forEach(anchor => {
  513.                 anchor.addEventListener('click', function(e) {
  514.                     const targetId = this.getAttribute('href');
  515.                     if (targetId === "#" || targetId === "") return;
  516.                     const targetEl = document.querySelector(targetId);
  517.                     if (targetEl) {
  518.                         e.preventDefault();
  519.                         targetEl.scrollIntoView({ behavior: 'smooth' });
  520.                     }
  521.                 });
  522.             });
  523.         })();
  524.     </script>
  525. {% endblock javascripts %}