<!DOCTYPE html><html lang="fr"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/assets/images/odourlive-logo.png" fetchpriority="high"/><link rel="preload" as="image" href="https://flagcdn.com/w20/fr.png"/><link rel="stylesheet" href="/_next/static/css/d5158fe660f8c901.css" data-precedence="next"/><link rel="preload" as="script" fetchpriority="low" href="/_next/static/chunks/webpack-2b58f6d95bc5789b.js"/><script src="/_next/static/chunks/fd9d1056-5c6c00a9e58a70e5.js" async=""></script><script src="/_next/static/chunks/7023-25fb8dcb99353cb5.js" async=""></script><script src="/_next/static/chunks/main-app-55bbd77d79f9187f.js" async=""></script><script src="/_next/static/chunks/231-3b2f950b589f84df.js" async=""></script><script src="/_next/static/chunks/3855-ff3e0a9a2af3212c.js" async=""></script><script src="/_next/static/chunks/998-39b59bb176a599a7.js" async=""></script><script src="/_next/static/chunks/6648-1c991fd4b6dd6ba5.js" async=""></script><script src="/_next/static/chunks/2827-740bfac59af5e265.js" async=""></script><script src="/_next/static/chunks/7636-c077e0f5f9bbca3f.js" async=""></script><script src="/_next/static/chunks/app/page-bbb5e4947b7986ef.js" async=""></script><script src="/_next/static/chunks/3469-ecc754c7be0c4de7.js" async=""></script><script src="/_next/static/chunks/8303-b6ab36abb10f828c.js" async=""></script><script src="/_next/static/chunks/9213-1ace0de948041665.js" async=""></script><script src="/_next/static/chunks/1503-d7a4cb55716f4331.js" async=""></script><script src="/_next/static/chunks/app/layout-94a908f4a0f38f16.js" async=""></script><script src="/_next/static/chunks/app/not-found-1c83e9bb7ae9c816.js" async=""></script><link rel="icon" href="/assets/images/brand-logos/favicon.ico" sizes="any"/><link rel="manifest" href="/manifest.json"/><meta name="theme-color" content="#2563EB"/><meta name="apple-mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-status-bar-style" content="default"/><meta name="apple-mobile-web-app-title" content="OdourLive"/><link rel="apple-touch-icon" href="/pwa/icons/icon-192.png"/><title>OdourLive — Surveillance citoyenne des nuisances olfactives</title><meta name="description" content="Signalez, visualisez et analysez les nuisances olfactives en temps réel. OdourLive est une plateforme citoyenne de surveillance environnementale."/><meta name="robots" content="index, follow"/><meta property="og:title" content="OdourLive — Cartographie collaborative des odeurs"/><meta property="og:description" content="Plateforme citoyenne de signalement et d'analyse des nuisances olfactives. Contribuez à la surveillance environnementale participative."/><meta property="og:site_name" content="OdourLive"/><meta property="og:locale" content="fr_FR"/><meta property="og:image" content="http://localhost:3000/assets/images/odourlive-logo.png"/><meta property="og:image:width" content="400"/><meta property="og:image:height" content="120"/><meta property="og:image:alt" content="OdourLive logo"/><meta property="og:locale:alternate" content="en_US"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary"/><meta name="twitter:title" content="OdourLive — Surveillance citoyenne des odeurs"/><meta name="twitter:description" content="Signalez et visualisez les nuisances olfactives en temps réel."/><meta name="twitter:image" content="http://localhost:3000/assets/images/odourlive-logo.png"/><meta name="twitter:image:width" content="400"/><meta name="twitter:image:height" content="120"/><meta name="twitter:image:alt" content="OdourLive logo"/><link rel="icon" href="/favicon.ico" type="image/x-icon" sizes="16x16"/><link href="https://cdn.jsdelivr.net/npm/dragula@3.7.3/dist/dragula.min.css" rel="stylesheet"/><script src="/pwa-init.js" defer=""></script><script src="/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js" nomodule=""></script></head><body><div class="fixed inset-0 bg-white dark:bg-bodybg"><div class="fixed top-0 left-0 right-0 z-[1050] h-[3.75rem] bg-white dark:bg-bodybg border-b border-defaultborder dark:border-white/10"><nav class="main-header !h-[3.75rem]" aria-label="Navigation principale"><div class="main-header-container ps-[0.725rem] pe-[1rem]"><div class="header-content-left"><div class="header-element px-3"><a class="flex items-center h-full gap-2 no-underline" href="/"><img alt="OdourLive" fetchpriority="high" width="140" height="40" decoding="async" data-nimg="1" class="object-contain dark:hidden" style="color:transparent" src="/assets/images/odourlive-logo.png"/><img alt="OdourLive" loading="lazy" width="140" height="40" decoding="async" data-nimg="1" class="object-contain hidden dark:block" style="color:transparent" src="/assets/images/odourlive-logo-dark.png"/></a></div></div><div class="header-content-right"><div class="header-element py-[1rem] md:px-[0.65rem] px-2 header-country hidden sm:block relative"><button type="button" class="!p-0 flex-shrink-0 !border-0 !rounded-full !shadow-none !bg-transparent flex items-center gap-1.5" aria-haspopup="listbox"><img src="https://flagcdn.com/w20/fr.png" alt="France" width="20" height="15" class="rounded-sm object-cover"/><span class="text-[11px] font-medium text-defaulttextcolor dark:text-white/70 hidden md:inline">France</span><i class="ri-arrow-down-s-line text-[11px] text-[#8c9097] dark:text-white/40"></i></button></div><div class="header-element py-[1rem] md:px-[0.3rem] px-1"><button type="button" aria-label="Afficher les statistiques" class="inline-flex flex-shrink-0 justify-center items-center gap-2 rounded-full font-medium transition-all text-xs dark:text-white/50"><i class="bx bx-bar-chart-alt-2 header-link-icon"></i></button></div><div class="header-element header-theme-mode hidden !items-center sm:block !py-[1rem] md:!px-[0.3rem] px-1"><button aria-label="Mode sombre" class="flex flex-shrink-0 justify-center items-center gap-2 rounded-full font-medium transition-all text-xs dark:text-white/50"><i class="bx bx-moon header-link-icon"></i></button></div><div class="header-element header-theme-mode hidden !items-center sm:block !py-[1rem] md:!px-[0.3rem] px-1"><button type="button" aria-label="Aide" class="inline-flex flex-shrink-0 justify-center items-center gap-2 rounded-full font-medium transition-all text-xs dark:text-white/50"><i class="bx bx-help-circle header-link-icon"></i></button></div><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><!--/$--><div class="header-element py-[1rem] md:px-[0.3rem] px-1"><a aria-label="Se connecter" class="inline-flex flex-shrink-0 justify-center items-center gap-2 rounded-full font-medium transition-all text-xs dark:text-white/50 hover:text-primary dark:hover:text-primary" href="/authentication/sign-in/signin-cover/"><i class="bx bx-user-circle header-link-icon"></i></a></div><div class="header-element px-2 !items-center hidden lg:flex relative"><button type="button" class="flex items-center gap-2 text-[11px] text-textmuted hover:text-primary dark:text-white/40 dark:hover:text-primary transition-colors" aria-label="Informations légales"><i class="ri-scales-3-line text-[14px]"></i><span class="hidden xl:inline">Légal</span><i class="ri-arrow-down-s-line text-[10px]"></i></button></div></div></div></nav></div><div class="absolute inset-0 top-[3.75rem]"><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><div class="w-full h-full flex items-center justify-center bg-white dark:bg-bodybg"><span class="ti-spinner border-primary" style="width:2.5rem;height:2.5rem"></span></div><!--/$--></div><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><!--/$--><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><!--/$--></div><script src="/_next/static/chunks/webpack-2b58f6d95bc5789b.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/_next/static/css/d5158fe660f8c901.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"2:I[95751,[],\"\"]\n4:I[66513,[],\"ClientPageRoot\"]\n5:I[76774,[\"231\",\"static/chunks/231-3b2f950b589f84df.js\",\"3855\",\"static/chunks/3855-ff3e0a9a2af3212c.js\",\"998\",\"static/chunks/998-39b59bb176a599a7.js\",\"6648\",\"static/chunks/6648-1c991fd4b6dd6ba5.js\",\"2827\",\"static/chunks/2827-740bfac59af5e265.js\",\"7636\",\"static/chunks/7636-c077e0f5f9bbca3f.js\",\"1931\",\"static/chunks/app/page-bbb5e4947b7986ef.js\"],\"default\"]\n6:I[89866,[\"3855\",\"static/chunks/3855-ff3e0a9a2af3212c.js\",\"998\",\"static/chunks/998-39b59bb176a599a7.js\",\"3469\",\"static/chunks/3469-ecc754c7be0c4de7.js\",\"8303\",\"static/chunks/8303-b6ab36abb10f828c.js\",\"9213\",\"static/chunks/9213-1ace0de948041665.js\",\"1503\",\"static/chunks/1503-d7a4cb55716f4331.js\",\"3185\",\"static/chunks/app/layout-94a908f4a0f38f16.js\"],\"default\"]\n7:I[39275,[],\"\"]\n8:I[61343,[],\"\"]\n9:I[231,[\"231\",\"static/chunks/231-3b2f950b589f84df.js\",\"9160\",\"static/chunks/app/not-found-1c83e9bb7ae9c816.js\"],\"\"]\na:I[35361,[\"3855\",\"static/chunks/3855-ff3e0a9a2af3212c.js\",\"998\",\"static/chunks/998-39b59bb176a599a7.js\",\"3469\",\"static/chunks/3469-ecc754c7be0c4de7.js\",\"8303\",\"static/chunks/8303-b6ab36abb10f828c.js\",\"9213\",\"static/chunks/9213-1ace0de948041665.js\",\"1503\",\"static/chunks/1503-d7a4cb55716f4331.js\",\"3185\",\"static/chunks/app/layout-94a908f4a0f38f16.js\"],\"default\"]\nc:I[76130,[],\"\"]\nd:[]\n0:[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/d5158fe660f8c901.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"$L2\",null,{\"buildId\":\"fGBeqqISLwmD3MXFEqUdD\",\"assetPrefix\":\"\",\"initialCanonicalUrl\":\"/\",\"initialTree\":[\"\",{\"children\":[\"__PAGE__\",{}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"__PAGE__\",{},[[\"$L3\",[\"$\",\"$L4\",null,{\"props\":{\"params\":{},\"searchParams\":{}},\"Component\":\"$5\"}]],null],null]},[[\"$\",\"html\",null,{\"lang\":\"fr\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"link\",null,{\"rel\":\"icon\",\"href\":\"/assets/images/brand-logos/favicon.ico\",\"sizes\":\"any\"}],[\"$\",\"link\",null,{\"href\":\"https://cdn.jsdelivr.net/npm/dragula@3.7.3/dist/dragula.mi"])</script><script>self.__next_f.push([1,"n.css\",\"rel\":\"stylesheet\"}],[\"$\",\"link\",null,{\"rel\":\"manifest\",\"href\":\"/manifest.json\"}],[\"$\",\"meta\",null,{\"name\":\"theme-color\",\"content\":\"#2563EB\"}],[\"$\",\"meta\",null,{\"name\":\"apple-mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",null,{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"default\"}],[\"$\",\"meta\",null,{\"name\":\"apple-mobile-web-app-title\",\"content\":\"OdourLive\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"href\":\"/pwa/icons/icon-192.png\"}],[\"$\",\"script\",null,{\"src\":\"/pwa-init.js\",\"defer\":true}]]}],[\"$\",\"body\",null,{\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$L7\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L8\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[\"$\",\"html\",null,{\"children\":[\"$\",\"body\",null,{\"children\":[[\"$\",\"p\",null,{\"children\":\"The Above Url Cannot Found\"}],[\"$\",\"$L9\",null,{\"href\":\"/dashboards/crm\",\"className\":\"btn btn-primary\",\"children\":\"Return Home\"}]]}]}],\"notFoundStyles\":[],\"styles\":null}]}],[\"$\",\"$La\",null,{}]]}]]}],null],null],\"couldBeIntercepted\":false,\"initialHead\":[false,\"$Lb\"],\"globalErrorComponent\":\"$c\",\"missingSlots\":\"$Wd\"}]]\n"])</script><script>self.__next_f.push([1,"b:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"OdourLive — Surveillance citoyenne des nuisances olfactives\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Signalez, visualisez et analysez les nuisances olfactives en temps réel. OdourLive est une plateforme citoyenne de surveillance environnementale.\"}],[\"$\",\"meta\",\"4\",{\"name\":\"robots\",\"content\":\"index, follow\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"OdourLive — Cartographie collaborative des odeurs\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"Plateforme citoyenne de signalement et d'analyse des nuisances olfactives. Contribuez à la surveillance environnementale participative.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:site_name\",\"content\":\"OdourLive\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:locale\",\"content\":\"fr_FR\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:image\",\"content\":\"http://localhost:3000/assets/images/odourlive-logo.png\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image:width\",\"content\":\"400\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:height\",\"content\":\"120\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:alt\",\"content\":\"OdourLive logo\"}],[\"$\",\"meta\",\"13\",{\"property\":\"og:locale:alternate\",\"content\":\"en_US\"}],[\"$\",\"meta\",\"14\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:card\",\"content\":\"summary\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:title\",\"content\":\"OdourLive — Surveillance citoyenne des odeurs\"}],[\"$\",\"meta\",\"17\",{\"name\":\"twitter:description\",\"content\":\"Signalez et visualisez les nuisances olfactives en temps réel.\"}],[\"$\",\"meta\",\"18\",{\"name\":\"twitter:image\",\"content\":\"http://localhost:3000/assets/images/odourlive-logo.png\"}],[\"$\",\"meta\",\"19\",{\"name\":\"twitter:image:width\",\"content\":\"400\"}],[\"$\",\"meta\",\"20\",{\"name\":\"twitter:image:height\",\"content\":\"120\"}],[\"$\",\"meta\",\"21\",{\"name\":\"twitter:image:alt\",\"content\":\"OdourLive logo\"}],[\"$\",\"link\",\"22\",{\"rel\":\"icon\",\"href\":\"/favicon.ico\",\"type\":\"image/x-icon\",\"sizes\":\"16x16\"}]]\n"])</script><script>self.__next_f.push([1,"3:null\n"])</script></body></html>