{"id":1947,"date":"2026-08-23T20:43:53","date_gmt":"2026-08-23T20:43:53","guid":{"rendered":"https:\/\/lean-app.com\/?p=1947"},"modified":"2026-08-23T20:47:13","modified_gmt":"2026-08-23T20:47:13","slug":"etude-base-donnees-calories","status":"publish","type":"post","link":"https:\/\/lean-app.com\/en\/etude-base-donnees-calories\/","title":{"rendered":"Nous avons analys\u00e9 857 655 produits vendus en France : ce que ton scanner de calories ne te dit pas"},"content":{"rendered":"<script data-wpmeteor-nooptimize=\"true\" type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"Article\",\n  \"mainEntityOfPage\": {\"@type\": \"WebPage\", \"@id\": \"https:\/\/www.lean-app.com\/etude-base-donnees-calories\/\"},\n  \"headline\": \"Nous avons analys\u00e9 857 655 produits vendus en France : ce que ton scanner de calories ne te dit pas\",\n  \"description\": \"31 % de fiches incompl\u00e8tes, 46 757 produits aux calories incompatibles avec leurs propres macros : l'\u00e9tude compl\u00e8te de la base OpenFoodFacts utilis\u00e9e par les trackers.\",\n  \"image\": [\"https:\/\/www.lean-app.com\/etude-base-donnees-calories\/og\/og-image.png\"],\n  \"inLanguage\": \"fr-FR\",\n  \"datePublished\": \"2026-08-24T09:00:00+02:00\",\n  \"dateModified\": \"2026-08-24T09:00:00+02:00\",\n  \"author\": {\"@type\": \"Organization\", \"name\": \"L'\u00e9quipe Lean\", \"url\": \"https:\/\/www.lean-app.com\/\"},\n  \"publisher\": {\"@type\": \"Organization\", \"name\": \"Lean\", \"url\": \"https:\/\/www.lean-app.com\/\",\n    \"logo\": {\"@type\": \"ImageObject\", \"url\": \"https:\/\/www.lean-app.com\/etude-base-donnees-calories\/icons\/icon-512.png\", \"width\": 512, \"height\": 512}},\n  \"articleSection\": \"\u00c9tudes\",\n  \"keywords\": \"OpenFoodFacts fiabilit\u00e9, calories fausses, scan code-barres calories, base de donn\u00e9es nutritionnelle, \u00e9tude calories\"\n}\n<\/script>\n<script data-wpmeteor-nooptimize=\"true\" type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"Dataset\",\n  \"name\": \"Coh\u00e9rence calorique des produits alimentaires vendus en France (OpenFoodFacts, ao\u00fbt 2026)\",\n  \"description\": \"Agr\u00e9gats issus de l'analyse de 857 655 produits vendus en France depuis le dump public OpenFoodFacts du 23 ao\u00fbt 2026 : compl\u00e9tude des fiches et coh\u00e9rence entre calories d\u00e9clar\u00e9es et calories recalcul\u00e9es depuis les macronutriments (facteurs Atwater, r\u00e8glement INCO 1169\/2011).\",\n  \"url\": \"https:\/\/www.lean-app.com\/etude-base-donnees-calories\/\",\n  \"creator\": {\"@type\": \"Organization\", \"name\": \"L'\u00e9quipe Lean\", \"url\": \"https:\/\/www.lean-app.com\/\"},\n  \"isBasedOn\": \"https:\/\/world.openfoodfacts.org\/data\",\n  \"license\": \"https:\/\/opendatacommons.org\/licenses\/odbl\/1-0\/\",\n  \"temporalCoverage\": \"2026-08-23\",\n  \"spatialCoverage\": \"France\",\n  \"variableMeasured\": [\"energy-kcal_100g\", \"proteins_100g\", \"carbohydrates_100g\", \"fat_100g\", \"fiber_100g\", \"alcohol_100g\", \"polyols_100g\"]\n}\n<\/script>\n<script data-wpmeteor-nooptimize=\"true\" type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"BreadcrumbList\",\n  \"itemListElement\": [\n    {\"@type\": \"ListItem\", \"position\": 1, \"name\": \"Accueil\", \"item\": \"https:\/\/www.lean-app.com\/\"},\n    {\"@type\": \"ListItem\", \"position\": 2, \"name\": \"\u00c9tude base de donn\u00e9es calories\", \"item\": \"https:\/\/www.lean-app.com\/etude-base-donnees-calories\/\"}\n  ]\n}\n<\/script>\n<script data-wpmeteor-nooptimize=\"true\" type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\"@type\": \"Question\", \"name\": \"Pourquoi analyser OpenFoodFacts et pas USDA ?\",\n     \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Pour les produits \u00e0 code-barres vendus en France, la source de r\u00e9f\u00e9rence des trackers est OpenFoodFacts. USDA couvre les aliments bruts et le march\u00e9 am\u00e9ricain. L'\u00e9tude porte sur ce que renvoie r\u00e9ellement un scan en France.\"}},\n    {\"@type\": \"Question\", \"name\": \"Faut-il arr\u00eater de scanner ses aliments ?\",\n     \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Non. Le scan reste le moyen le plus rapide de logger. La bonne pratique : v\u00e9rifier que les macros affich\u00e9es sont coh\u00e9rentes avec les calories. Si prot\u00e9ines, glucides et lipides ne collent pas aux kcal, la fiche est fausse.\"}},\n    {\"@type\": \"Question\", \"name\": \"Les applications corrigent-elles ces erreurs ?\",\n     \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"La base OpenFoodFacts est collaborative et vit en continu : 4 des 6 pires fiches identifi\u00e9es dans le dump avaient d\u00e9j\u00e0 \u00e9t\u00e9 corrig\u00e9es en ligne au moment de l'\u00e9tude. Mais une application qui a synchronis\u00e9 une fiche fausse peut la garder en cache longtemps apr\u00e8s la correction.\"}},\n    {\"@type\": \"Question\", \"name\": \"La base de Lean est-elle diff\u00e9rente ?\",\n     \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Lean croise la base USDA pour les aliments bruts et OpenFoodFacts pour les produits \u00e0 code-barres, et propose le scan photo IA qui estime l'assiette sans d\u00e9pendre d'une fiche. Surtout, Lean concentre la pr\u00e9cision l\u00e0 o\u00f9 l'erreur est invisible : le calcul de la d\u00e9pense (TDEE = BMR + NEAT + EAT + TEF).\"}}\n  ]\n}\n<\/script>\n<style id=\"lvm-shell-styles\">#lvm-shell{\n  --bg:#FFFFFF; --paper:#F7F6F2; --paper-2:#F1EFE7;\n  --ink:#0E0E10; --ink-2:#1D1D1F; --muted:#6E6E73; --dim:#86868B;\n  --rule:#E8E6DF; --rule-soft:#EFEDE5;\n  --pink:#FF2D6E; --pink-soft:rgba(255,45,110,0.06);\n  --mfp:#6ABF6C;\n  --green:#0F8F5C; --red:#D02E2E; --amber:#C8A019;\n  --font-display:-apple-system,\"SF Pro Display\",system-ui,\"Helvetica Neue\",sans-serif;\n  --font-text:-apple-system,\"SF Pro Text\",system-ui,sans-serif;\n  --font-mono:ui-monospace,\"SF Mono\",Menlo,Consolas,monospace;\n}\n#lvm-shell *{box-sizing:border-box;-webkit-text-size-adjust:100%}\n#lvm-shell, #lvm-shell{margin:0;padding:0;background:var(--bg);color:var(--ink-2);font-family:var(--font-text);font-size:17px;line-height:1.7;-webkit-font-smoothing:antialiased}\n#lvm-shell ::selection{background:rgba(255,45,110,0.18);color:var(--ink)}\n#lvm-shell img{max-width:100%;display:block}\n#lvm-shell a{color:inherit}\n\n#lvm-shell .progress{position:fixed;top:0;left:0;right:0;height:2px;background:transparent;z-index:1000}\n#lvm-shell .progress > i{display:block;height:100%;width:100%;background:var(--pink);transform-origin:0 50%;transform:scaleX(0);transition:transform .05s linear}\n\n#lvm-shell .nav{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.86);backdrop-filter:saturate(180%) blur(14px);-webkit-backdrop-filter:saturate(180%) blur(14px);border-bottom:1px solid var(--rule)}\n#lvm-shell .nav-row{max-width:1160px;margin:0 auto;display:flex;align-items:center;gap:14px;padding:10px 22px}\n#lvm-shell .nav-brand{display:flex;align-items:center;gap:9px;text-decoration:none;color:var(--ink)}\n#lvm-shell .nav-brand img{width:28px;height:28px;border-radius:7px;object-fit:cover}\n#lvm-shell .nav-brand span{font-family:var(--font-display);font-weight:600;font-size:18px;letter-spacing:-.01em}\n#lvm-shell .nav-spacer{flex:1}\n#lvm-shell .nav-link{color:var(--muted);text-decoration:none;font-size:14px}\n#lvm-shell .nav-link:hover{color:var(--ink)}\n#lvm-shell .nav-stores{display:flex;gap:6px;align-items:center}\n#lvm-shell .nav-stores a{display:block;line-height:0}\n#lvm-shell .nav-stores img{height:28px;width:auto;border-radius:5px;transition:transform .15s}\n#lvm-shell .nav-stores a:hover img{transform:translateY(-1px)}\n\n#lvm-shell .wrap{max-width:760px;margin:0 auto;padding:0 28px}\n\n#lvm-shell .hero{padding:54px 0 0}\n#lvm-shell .crumb{font-size:13px;color:var(--muted);margin-bottom:18px}\n#lvm-shell .crumb a{text-decoration:none;color:var(--muted)}\n#lvm-shell .crumb a:hover{color:var(--ink)}\n#lvm-shell .eyebrow{font-family:var(--font-mono);font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:.06em;color:var(--pink);margin-bottom:18px}\n#lvm-shell h1{font-family:var(--font-display);font-weight:600;font-size:72px;line-height:1.0;letter-spacing:-.04em;color:var(--ink);margin:0 0 22px}\n#lvm-shell h1 .alt{display:block;font-weight:500;color:var(--muted);font-size:.66em;line-height:1.15;margin-top:14px;letter-spacing:-.03em}\n#lvm-shell .dek{font-family:var(--font-display);font-size:24px;line-height:1.4;font-weight:400;color:var(--ink-2);letter-spacing:-.015em;margin:0 0 22px;max-width:680px}\n\n#lvm-shell .byline{display:flex;align-items:center;gap:10px;font-size:14px;color:var(--muted);margin-bottom:14px}\n#lvm-shell .byline .by-logo{width:26px;height:26px;border-radius:6px;object-fit:cover;flex-shrink:0;background:transparent;border:0}\n#lvm-shell .byline strong{color:var(--ink);font-weight:600;font-family:var(--font-display)}\n\n#lvm-shell .hero-stores{display:flex;gap:10px;margin:22px 0 18px;flex-wrap:wrap;align-items:center}\n#lvm-shell .hero-stores a{display:block;line-height:0;transition:transform .15s}\n#lvm-shell .hero-stores a:hover{transform:translateY(-2px)}\n#lvm-shell .hero-stores img{height:46px;width:auto;border-radius:9px}\n#lvm-shell .hero-stores .or{font-size:13px;color:var(--muted)}\n\n#lvm-shell .hero-bottom{display:grid;grid-template-columns:1.3fr 1fr;gap:48px;align-items:center;margin:38px 0 60px;padding-top:28px;border-top:1px solid var(--rule-soft)}\n#lvm-shell .hero-lead{font-family:var(--font-display);font-size:21px;line-height:1.5;color:var(--ink-2);font-weight:400}\n\n#lvm-shell .phone-wrap{display:flex;justify-content:center}\n#lvm-shell .phone{\n  position:relative;\n  width:280px;\n  background:linear-gradient(145deg,#2a2a2a,#0e0e0e);\n  border-radius:42px;\n  padding:5px;\n  border:1.5px solid rgba(255,255,255,.07);\n  box-shadow:0 30px 60px rgba(0,0,0,.18), 0 2px 6px rgba(0,0,0,.08);\n}\n#lvm-shell .phone .notch{\n  position:absolute;top:0;left:50%;transform:translateX(-50%);\n  width:96px;height:24px;background:#0a0a0a;border-radius:0 0 16px 16px;z-index:10;\n}\n#lvm-shell .phone-screen{\n  position:relative;\n  border-radius:34px;overflow:hidden;\n  background:#FAF0E6;\n  aspect-ratio:9\/19.5;\n}\n#lvm-shell .phone-bg{position:absolute;inset:0;width:100%;height:100%;background-size:cover;background-position:center top;background-repeat:no-repeat;transition:opacity .28s ease;background-color:#FAF0E6}\n#lvm-shell .phone-bg.tab-depense{background-image:url(\"https:\/\/lean-app.com\/wp-content\/uploads\/2026\/05\/lvm-screen_depense.webp\")}\n#lvm-shell .phone-bg.tab-bilan{background-image:url(\"https:\/\/lean-app.com\/wp-content\/uploads\/2026\/05\/lvm-screen_bilan.webp\")}\n#lvm-shell .phone-bg.tab-kcal{background-image:url(\"https:\/\/lean-app.com\/wp-content\/uploads\/2026\/05\/lvm-screen_kcal.webp\")}\n#lvm-shell .phone-bg.tab-strategie{background-image:url(\"https:\/\/lean-app.com\/wp-content\/uploads\/2026\/05\/lvm-screen_strategie.webp\")}\n#lvm-shell .phone-bg.sub-BMR{background-image:url(\"https:\/\/lean-app.com\/wp-content\/uploads\/2026\/05\/lvm-screen_BMR.webp\")}\n#lvm-shell .phone-bg.sub-NEAT{background-image:url(\"https:\/\/lean-app.com\/wp-content\/uploads\/2026\/05\/lvm-screen_NEAT.webp\")}\n#lvm-shell .phone-bg.sub-EAT{background-image:url(\"https:\/\/lean-app.com\/wp-content\/uploads\/2026\/05\/lvm-screen_EAT.webp\")}\n#lvm-shell .phone-bg.sub-TEF{background-image:url(\"https:\/\/lean-app.com\/wp-content\/uploads\/2026\/05\/lvm-screen_TEF.webp\")}\n#lvm-shell .phone-zones{position:absolute;inset:0;z-index:15;pointer-events:none}\n#lvm-shell .phone-zones .z{position:absolute;left:4%;right:4%;cursor:pointer;background:transparent;border:0;padding:0;pointer-events:auto}\n#lvm-shell .phone-zones .z:focus-visible{outline:2px solid var(--pink);outline-offset:-4px;border-radius:6px}\n#lvm-shell .phone-navbar{position:absolute;left:0;right:0;bottom:0;height:9%;z-index:16;display:grid;grid-template-columns:repeat(4,1fr)}\n#lvm-shell .phone-navbar button{background:transparent;border:0;padding:0;cursor:pointer}\n#lvm-shell .phone-navbar button:focus-visible{outline:2px solid var(--pink);outline-offset:-3px;border-radius:6px}\n#lvm-shell .phone-back{\n  position:absolute;top:10px;left:10px;z-index:20;\n  width:30px;height:30px;border-radius:50%;\n  border:0;background:rgba(255,255,255,.78);backdrop-filter:blur(8px);\n  color:var(--ink);font-size:18px;font-weight:600;line-height:1;cursor:pointer;\n  display:none;align-items:center;justify-content:center;\n  box-shadow:0 2px 6px rgba(0,0,0,.12);\n}\n#lvm-shell .phone-back.on{display:flex}\n\n#lvm-shell .phone-cap{margin-top:14px;text-align:center;font-size:12px;color:var(--muted);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.06em}\n#lvm-shell .phone-stage{position:relative}\n#lvm-shell .tap-hint{position:absolute;z-index:30;pointer-events:none;animation:hintFloat 2.6s ease-in-out infinite}\n#lvm-shell .tap-hint .th-pill{display:inline-block;font-family:var(--font-display);font-size:15px;font-weight:600;color:#fff;line-height:1.25;letter-spacing:-.005em;background:var(--pink);padding:10px 16px;border-radius:14px;box-shadow:0 14px 32px rgba(255,45,110,.32);white-space:nowrap}\n#lvm-shell .tap-hint .th-pill small{display:block;font-size:11px;font-weight:500;color:rgba(255,255,255,.85);text-transform:uppercase;letter-spacing:.08em;margin-bottom:3px}\n#lvm-shell .tap-hint .th-arrow{position:absolute;color:var(--pink)}\n#lvm-shell .tap-hint.desktop{left:-204px;top:4px;text-align:right}\n#lvm-shell .tap-hint.desktop .th-arrow{right:-86px;top:58px;width:104px;height:34px;transform:none}\n#lvm-shell .tap-hint.mobile{display:none}\n#lvm-shell .tap-hint.hidden{opacity:0;transform:translateY(-6px);transition:opacity .35s ease, transform .35s ease;animation:none}\n@keyframes hintFloat{\n  0%, 100%{transform:translateY(0)}\n  50%{transform:translateY(-7px)}\n}\n@media (prefers-reduced-motion:reduce){#lvm-shell .tap-hint{animation:none}}\n#lvm-shell .phone-tabs{display:flex;justify-content:center;gap:8px;margin-top:10px;flex-wrap:nowrap}\n#lvm-shell .phone-tabs button{\n  background:transparent;border:1px solid var(--rule);color:var(--muted);\n  padding:6px 11px;border-radius:999px;font-size:11px;cursor:pointer;\n  font-family:var(--font-text);transition:all .15s;white-space:nowrap;\n}\n#lvm-shell .phone-tabs button:hover{color:var(--ink);border-color:var(--ink)}\n#lvm-shell .phone-tabs button.on{background:var(--ink);color:#fff;border-color:var(--ink)}\n\n#lvm-shell .snippet{background:var(--paper);border-radius:18px;padding:30px 32px;margin:48px 0 0;border:1px solid var(--rule-soft)}\n#lvm-shell .snippet .lbl{font-family:var(--font-mono);font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:14px}\n#lvm-shell .snippet p{margin:0;font-family:var(--font-display);font-size:21px;line-height:1.45;color:var(--ink);font-weight:500;letter-spacing:-.012em}\n\n#lvm-shell section{padding:64px 0;border-bottom:1px solid var(--rule-soft)}\n#lvm-shell section:last-of-type{border-bottom:0}\n#lvm-shell .section-label{display:flex;align-items:center;gap:14px;margin-bottom:30px}\n#lvm-shell .section-label .bar{width:24px;height:1px;background:var(--pink)}\n#lvm-shell .section-label .num{font-family:var(--font-mono);font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:.06em;color:var(--pink)}\n#lvm-shell h2{font-family:var(--font-display);font-weight:600;font-size:48px;line-height:1.05;letter-spacing:-.035em;color:var(--ink);margin:0 0 24px}\n#lvm-shell h3{font-family:var(--font-display);font-weight:600;font-size:32px;line-height:1.15;letter-spacing:-.025em;color:var(--ink);margin:36px 0 16px}\n#lvm-shell h4{font-family:var(--font-display);font-weight:500;font-size:20px;line-height:1.3;letter-spacing:-.015em;color:var(--ink);margin:24px 0 10px}\n#lvm-shell p{margin:0 0 22px;color:var(--ink-2)}\n#lvm-shell strong{color:var(--ink);font-weight:600}\n#lvm-shell ul, #lvm-shell ol{margin:0 0 22px;padding-left:22px;color:var(--ink-2)}\n#lvm-shell li{margin-bottom:8px}\n#lvm-shell a.inline{color:var(--pink);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}\n#lvm-shell a.inline:hover{text-decoration-thickness:2px}\n\n#lvm-shell .statement{margin:48px 0;padding:32px 0;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);text-align:left}\n#lvm-shell .statement .num{font-family:var(--font-display);font-size:60px;font-weight:600;line-height:1;letter-spacing:-.04em;color:var(--pink);margin-bottom:14px}\n#lvm-shell .statement .lbl{font-family:var(--font-display);font-size:23px;line-height:1.35;font-weight:500;color:var(--ink);letter-spacing:-.012em}\n\n#lvm-shell .fig{margin:32px 0 18px;background:#fff;border:1px solid var(--rule);border-radius:20px;padding:28px 22px 20px;position:relative;overflow:hidden}\n#lvm-shell .fig-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:18px}\n#lvm-shell .fig-head .l{font-family:var(--font-mono);font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}\n#lvm-shell .fig-head .r{font-family:var(--font-mono);font-size:11px;font-weight:600;color:var(--ink);text-transform:uppercase;letter-spacing:.08em}\n#lvm-shell .fig-body{position:relative}\n#lvm-shell .fig-cap{margin:18px 4px 0;font-size:14px;color:var(--muted);line-height:1.5}\n#lvm-shell .fig-cap strong{color:var(--ink);font-weight:600}\n#lvm-shell .cv-wrap{position:relative;height:360px}\n\n#lvm-shell [data-term]{position:relative;cursor:help;border-bottom:1px dotted var(--dim)}\n#lvm-shell [data-term]:hover{color:var(--ink)}\n#lvm-shell .tt{position:absolute;left:50%;bottom:calc(100% + 12px);transform:translateX(-50%);min-width:200px;max-width:300px;background:#0c0c0c;color:#fff;font-size:13px;line-height:1.45;padding:11px 14px;border-radius:10px;box-shadow:0 12px 36px rgba(0,0,0,.32);opacity:0;visibility:hidden;transition:opacity .15s, visibility .15s;z-index:120;pointer-events:none;font-weight:400;font-family:var(--font-text)}\n#lvm-shell .tt::after{content:\"\";position:absolute;top:100%;left:50%;transform:translateX(-50%);border:6px solid transparent;border-top-color:#0c0c0c}\n#lvm-shell [data-term]:hover .tt, #lvm-shell [data-term]:focus .tt{opacity:1;visibility:visible}\n\n#lvm-shell .table{margin:24px 0;border:1px solid var(--rule);border-radius:16px;overflow:hidden;background:#fff}\n#lvm-shell .table-row{display:grid;grid-template-columns:1.55fr 1fr 1fr;border-bottom:1px solid var(--rule-soft);min-height:60px}\n#lvm-shell .table-row:last-child{border-bottom:0}\n#lvm-shell .table-row.head{background:var(--ink);color:#fff;border-bottom:0}\n#lvm-shell .table-row.head > div{padding:18px 18px;display:flex;align-items:center;gap:10px;font-family:var(--font-mono);font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.07em}\n#lvm-shell .table-row.head .brand-cell{justify-content:flex-start}\n#lvm-shell .table-row.head .brand-cell img{width:24px;height:24px;border-radius:6px;background:#fff;object-fit:cover}\n#lvm-shell .table-row.head .brand-cell.lean{color:#FFB8CE}\n#lvm-shell .table-row > .crit{padding:16px 18px;font-size:14px;color:var(--ink);font-weight:500;display:flex;align-items:center;border-right:1px solid var(--rule-soft)}\n#lvm-shell .table-row > .cell{padding:16px 14px;font-size:13px;line-height:1.45;color:var(--ink-2);display:flex;align-items:center;gap:10px;border-right:1px solid var(--rule-soft)}\n#lvm-shell .table-row > .cell:last-child{border-right:0}\n#lvm-shell .table-row > .cell.lean{background:var(--pink-soft);position:relative}\n#lvm-shell .table-row > .cell.lean::before{content:\"\";position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--pink)}\n#lvm-shell .icn{width:18px;height:18px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;font-size:13px;font-weight:600;color:#fff}\n#lvm-shell .icn.ok{background:var(--green)}\n#lvm-shell .icn.no{background:var(--red)}\n#lvm-shell .icn.mid{background:var(--amber)}\n#lvm-shell .icn svg{width:11px;height:11px}\n\n#lvm-shell .mini-row{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin:28px 0}\n#lvm-shell .mini-phone{position:relative;background:linear-gradient(145deg,#2a2a2a,#0e0e0e);border-radius:22px;padding:3px;border:1px solid rgba(255,255,255,.05);box-shadow:0 14px 32px rgba(0,0,0,.16);max-width:160px;margin:0 auto;width:100%}\n#lvm-shell .mini-phone .notch{position:absolute;top:0;left:50%;transform:translateX(-50%);width:40px;height:11px;background:#0a0a0a;border-radius:0 0 7px 7px;z-index:5}\n#lvm-shell .mini-phone .scr{border-radius:18px;overflow:hidden;background:#FAF0E6;aspect-ratio:9\/19.5}\n#lvm-shell .mini-phone .scr img{width:100%;height:100%;object-fit:cover}\n#lvm-shell .mini-phone.tiny{max-width:148px;padding:2px;border-radius:20px;border-width:1px}\n#lvm-shell .mini-phone.tiny .notch{width:30px;height:8px;border-radius:0 0 5px 5px}\n#lvm-shell .mini-phone.tiny .scr{border-radius:17px}\n#lvm-shell .mini-cap{text-align:center;margin-top:12px;font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted)}\n#lvm-shell .mini-cap strong{display:block;color:var(--ink);margin-top:4px;font-family:var(--font-display);font-size:14px;font-weight:500;letter-spacing:-.01em;text-transform:none}\n\n#lvm-shell .duo-row{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;margin:18px 0 0}\n#lvm-shell .duo-row .mini-phone{max-width:180px}\n\n#lvm-shell .method{display:grid;grid-template-columns:1fr 1.4fr;gap:36px;align-items:center;margin:42px 0}\n#lvm-shell .method.flip{grid-template-columns:1.4fr 1fr}\n#lvm-shell .method.flip .m-phone{order:2}\n#lvm-shell .method .m-tag{font-family:var(--font-mono);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--pink);margin-bottom:8px}\n#lvm-shell .method h3{margin-top:0}\n#lvm-shell .method p{font-size:16px;color:var(--muted);line-height:1.7}\n\n#lvm-shell .cta-band{margin:40px 0;padding:26px 28px;background:var(--paper);border-radius:16px;display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;border:1px solid var(--rule-soft)}\n#lvm-shell .cta-band .l{font-family:var(--font-display);font-size:18px;line-height:1.35;font-weight:500;color:var(--ink);flex:1;min-width:240px;letter-spacing:-.01em}\n#lvm-shell .cta-band .stores{display:flex;gap:10px;align-items:center}\n#lvm-shell .cta-band .stores a{line-height:0;transition:transform .15s}\n#lvm-shell .cta-band .stores a:hover{transform:translateY(-2px)}\n#lvm-shell .cta-band .stores img{height:42px;width:auto;border-radius:9px}\n\n#lvm-shell .pyramid{margin:30px auto;max-width:440px}\n#lvm-shell .pyramid .level{margin:6px auto;padding:13px 18px;border-radius:14px;color:#fff;font-family:var(--font-display);font-weight:500;font-size:15px;letter-spacing:-.01em;display:flex;justify-content:space-between;align-items:center;box-shadow:0 6px 18px rgba(0,0,0,.06)}\n#lvm-shell .pyramid .level .k{font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.08em;opacity:.75}\n#lvm-shell .pyramid .l1{background:#0E0E10;width:100%}\n#lvm-shell .pyramid .l2{background:#1D1D1F;width:84%}\n#lvm-shell .pyramid .l3{background:#3a3a3c;width:68%}\n#lvm-shell .pyramid .l4{background:var(--pink);width:52%}\n#lvm-shell .pyramid-cap{text-align:center;font-size:13px;color:var(--muted);margin-top:14px}\n\n\/* Section 7 honnetete : scorecard horizontal bars *\/\n#lvm-shell .scorecard{margin:30px 0 10px;border:1px solid var(--rule);border-radius:20px;padding:28px 26px;background:#fff}\n#lvm-shell .scorecard-head{display:grid;grid-template-columns:1.4fr 1fr 1fr;column-gap:28px;align-items:center;padding-bottom:18px;margin-bottom:8px;border-bottom:1px solid var(--rule-soft)}\n#lvm-shell .scorecard-head .h-crit{font-family:var(--font-mono);font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}\n#lvm-shell .scorecard-head .h-brand{display:flex;align-items:center;gap:8px;font-family:var(--font-display);font-size:14px;font-weight:600;color:var(--ink)}\n#lvm-shell .scorecard-head .h-brand img{width:22px;height:22px;border-radius:5px;object-fit:cover}\n#lvm-shell .scorecard-row{display:grid;grid-template-columns:1.4fr 1fr 1fr;column-gap:28px;align-items:center;padding:14px 0;border-bottom:1px solid var(--rule-soft)}\n#lvm-shell .scorecard-row:last-child{border-bottom:0}\n#lvm-shell .scorecard-row .crit{font-size:14px;color:var(--ink);font-weight:500;padding-right:14px}\n#lvm-shell .scorecard-row .bar{display:flex;flex-direction:row-reverse;align-items:center;gap:10px}\n#lvm-shell .scorecard-row .bar .b{flex:1;height:8px;border-radius:99px;background:var(--rule-soft);overflow:hidden;position:relative}\n#lvm-shell .scorecard-row .bar .b > i{display:block;height:100%;border-radius:99px;transition:width 1s cubic-bezier(.22,.61,.36,1)}\n#lvm-shell .scorecard-row .bar.lean .b > i{background:var(--pink)}\n#lvm-shell .scorecard-row .bar.mfp .b > i{background:var(--mfp)}\n#lvm-shell .scorecard-row .bar .v{font-family:var(--font-mono);font-size:12px;font-weight:600;color:var(--ink);min-width:32px;text-align:left}\n\n\/* Section 8 pour qui : persona checklist *\/\n#lvm-shell .persona{margin:28px 0 10px;display:grid;grid-template-columns:1fr;gap:14px}\n#lvm-shell .persona-it{display:grid;grid-template-columns:54px 1fr;gap:16px;padding:22px 24px;background:#fff;border:1px solid var(--rule);border-radius:18px;align-items:center}\n#lvm-shell .persona-it.match{background:var(--pink-soft);border-color:rgba(255,45,110,.25)}\n#lvm-shell .persona-it .pic{width:54px;height:54px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--rule-soft);position:relative;font-family:var(--font-mono);font-size:13px;font-weight:600;color:var(--ink)}\n#lvm-shell .persona-it.match .pic{background:var(--pink);color:#fff}\n#lvm-shell .persona-it .pic svg{width:24px;height:24px}\n#lvm-shell .persona-it h4{margin:0 0 4px;font-size:17px;letter-spacing:-.01em}\n#lvm-shell .persona-it p{margin:0;font-size:14px;color:var(--muted);line-height:1.55}\n#lvm-shell .persona-it.match h4{color:var(--ink)}\n\n\/* Section 9 migration : timeline steps *\/\n#lvm-shell .steps{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin:28px 0;position:relative}\n#lvm-shell .steps::before{content:\"\";position:absolute;top:14px;left:7px;right:calc(20% - 18px);height:1px;background:linear-gradient(90deg,var(--pink) 0%,var(--rule-soft) 100%);z-index:0}\n#lvm-shell .step{position:relative;padding-top:24px;z-index:1}\n#lvm-shell .step::before{content:\"\";position:absolute;top:8px;left:0;width:14px;height:14px;border-radius:50%;background:var(--pink);border:3px solid #fff;box-shadow:0 0 0 1px var(--rule)}\n#lvm-shell .step .sn{font-family:var(--font-mono);font-size:11px;color:var(--pink);font-weight:600;letter-spacing:.08em}\n#lvm-shell .step h4{margin:6px 0 6px;font-size:15px;letter-spacing:-.01em}\n#lvm-shell .step p{font-size:13px;color:var(--muted);line-height:1.5;margin:0}\n\n\/* Section 10 debloque : feature stack numbered XL *\/\n#lvm-shell .feat-stack{margin:30px 0 10px;border-top:1px solid var(--rule)}\n#lvm-shell .feat-it{display:grid;grid-template-columns:auto 1fr auto;gap:24px;padding:26px 0;border-bottom:1px solid var(--rule);align-items:center}\n#lvm-shell .feat-it .fn{font-family:var(--font-display);font-size:48px;font-weight:600;color:var(--pink);line-height:1;letter-spacing:-.04em;width:74px}\n#lvm-shell .feat-it .ft{font-family:var(--font-display);font-size:22px;font-weight:600;color:var(--ink);letter-spacing:-.015em;line-height:1.25;margin-bottom:6px}\n#lvm-shell .feat-it .fd{font-size:15px;color:var(--muted);line-height:1.55;margin:0}\n#lvm-shell .feat-it .fc{font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:500}\n#lvm-shell .feat-it:last-child{border-bottom:0}\n\n#lvm-shell .faq{margin:22px 0}\n#lvm-shell .faq details{border-bottom:1px solid var(--rule);padding:20px 0}\n#lvm-shell .faq details:first-of-type{border-top:1px solid var(--rule)}\n#lvm-shell .faq summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center;gap:18px;font-family:var(--font-display);font-size:20px;font-weight:500;letter-spacing:-.015em;color:var(--ink)}\n#lvm-shell .faq summary::-webkit-details-marker{display:none}\n#lvm-shell .faq summary::after{content:\"+\";font-size:24px;color:var(--muted);font-weight:300;line-height:1;transition:transform .25s, color .25s}\n#lvm-shell .faq details[open] summary::after{transform:rotate(45deg);color:var(--pink)}\n#lvm-shell .faq details[open] summary{color:var(--pink)}\n#lvm-shell .faq .ans{margin-top:14px;font-size:16px;color:var(--muted);line-height:1.65}\n\n#lvm-shell .get-band{background:var(--paper-2);border-radius:24px;padding:48px 36px;margin:60px 0 40px;text-align:center}\n#lvm-shell .get-band .kicker{font-family:var(--font-mono);font-size:11px;text-transform:uppercase;color:var(--pink);font-weight:600;letter-spacing:.1em;margin-bottom:14px}\n#lvm-shell .get-band h3{font-size:36px;margin:0 0 14px;letter-spacing:-.025em}\n#lvm-shell .get-band p{font-size:16px;color:var(--muted);max-width:480px;margin:0 auto 26px}\n#lvm-shell .get-band .stores{display:flex;justify-content:center;gap:14px;flex-wrap:wrap}\n#lvm-shell .get-band .stores a{line-height:0;transition:transform .15s}\n#lvm-shell .get-band .stores a:hover{transform:translateY(-3px)}\n#lvm-shell .get-band .stores img{height:60px;width:auto;border-radius:11px}\n\n#lvm-shell .sources{font-size:14px;color:var(--muted);line-height:1.7}\n#lvm-shell .sources ol{padding-left:22px}\n#lvm-shell .sources li{margin-bottom:8px}\n\n#lvm-shell footer{padding:50px 0 60px;border-top:1px solid var(--rule);margin-top:40px}\n#lvm-shell footer .row{display:flex;justify-content:space-between;align-items:center;gap:18px;flex-wrap:wrap}\n#lvm-shell footer .kicker{font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--pink);font-weight:600}\n#lvm-shell footer p{font-size:13px;color:var(--muted);margin:8px 0 0}\n#lvm-shell footer .stores{display:flex;gap:8px}\n#lvm-shell footer .stores img{height:34px;width:auto;border-radius:6px}\n\n#lvm-shell .rev{opacity:0;transform:translateY(12px);transition:opacity .8s cubic-bezier(.22,.61,.36,1),transform .8s cubic-bezier(.22,.61,.36,1)}\n#lvm-shell .rev.on{opacity:1;transform:translateY(0)}\n@media (prefers-reduced-motion:reduce){#lvm-shell .rev{transition:none;opacity:1;transform:none}}\n\n@media (max-width:760px){\n  #lvm-shell .nav-row{padding:8px 18px;gap:8px}\n  #lvm-shell .nav-link{display:none}\n  #lvm-shell .nav-stores img{height:24px}\n  #lvm-shell .wrap{padding:0 22px}\n  #lvm-shell .hero{padding:34px 0 0}\n  #lvm-shell h1{font-size:46px;letter-spacing:-.035em}\n  #lvm-shell h1 .alt{font-size:.55em;margin-top:10px}\n  #lvm-shell .dek{font-size:20px}\n  #lvm-shell .hero-stores img{height:42px}\n  #lvm-shell .hero-bottom{grid-template-columns:1fr;gap:28px;margin:30px 0 40px;padding-top:24px;align-items:stretch}\n  #lvm-shell .phone-wrap{order:-1}\n  #lvm-shell .phone{width:240px}\n  #lvm-shell .tap-hint.desktop{display:none}\n  #lvm-shell .tap-hint.mobile{display:block;position:relative;left:auto;top:auto;text-align:center;margin:0 auto 10px;width:100%}\n  #lvm-shell .tap-hint.mobile .th-arrow{position:relative;display:block;margin:6px auto 0;width:34px;height:34px;transform:none;color:var(--pink)}\n  #lvm-shell .snippet{padding:24px 22px}\n  #lvm-shell .snippet p{font-size:18px}\n  #lvm-shell section{padding:48px 0}\n  #lvm-shell h2{font-size:34px;letter-spacing:-.03em}\n  #lvm-shell h3{font-size:24px}\n  #lvm-shell .section-label{margin-bottom:22px}\n  #lvm-shell .statement{padding:24px 0;margin:32px 0}\n  #lvm-shell .statement .num{font-size:44px}\n  #lvm-shell .statement .lbl{font-size:19px}\n  #lvm-shell .fig{padding:20px 14px 14px;border-radius:16px}\n  #lvm-shell .cv-wrap{height:310px}\n  #lvm-shell .method{grid-template-columns:1fr;gap:20px}\n  #lvm-shell .method.flip{grid-template-columns:1fr}\n  #lvm-shell .method.flip .m-phone{order:0}\n  #lvm-shell .mini-row{grid-template-columns:repeat(3,1fr);gap:10px}\n  #lvm-shell .mini-phone{padding:3px;border-radius:18px;border-width:1px;max-width:110px}\n  #lvm-shell .mini-phone .notch{width:42px;height:11px;border-radius:0 0 8px 8px}\n  #lvm-shell .mini-phone .scr{border-radius:15px}\n  #lvm-shell .mini-cap{font-size:10px}\n  #lvm-shell .mini-cap strong{font-size:13px}\n  #lvm-shell .duo-row{grid-template-columns:repeat(2,1fr);gap:12px}\n  #lvm-shell .duo-row .mini-phone{max-width:130px}\n  #lvm-shell .steps{grid-template-columns:1fr;gap:18px}\n  #lvm-shell .steps::before{display:none}\n  #lvm-shell .step{padding-top:0;padding-left:24px}\n  #lvm-shell .step::before{top:6px;left:0}\n  #lvm-shell .table-row{grid-template-columns:1.4fr .9fr .9fr}\n  #lvm-shell .table-row > .crit{padding:13px 12px;font-size:13px}\n  #lvm-shell .table-row > .cell{padding:13px 10px;font-size:12px;gap:8px}\n  #lvm-shell .table-row.head > div{padding:14px 12px;font-size:10px;gap:7px}\n  #lvm-shell .table-row.head .brand-cell img{width:20px;height:20px}\n  #lvm-shell .get-band{padding:36px 22px;border-radius:18px;margin:40px 0 30px}\n  #lvm-shell .get-band h3{font-size:28px}\n  #lvm-shell .get-band .stores img{height:50px}\n  #lvm-shell .cta-band{padding:22px;gap:14px}\n  #lvm-shell .cta-band .l{font-size:16px;min-width:0}\n  #lvm-shell .cta-band .stores img{height:38px}\n  #lvm-shell .faq summary{font-size:18px;gap:14px}\n  #lvm-shell .pyramid{max-width:100%}\n  #lvm-shell .pyramid .level{padding:11px 14px;font-size:14px}\n  #lvm-shell .scorecard{padding:20px 16px;border-radius:16px}\n  #lvm-shell .scorecard-head{grid-template-columns:1.2fr 1fr 1fr;column-gap:14px}\n  #lvm-shell .scorecard-head .h-brand{font-size:12px;gap:5px}\n  #lvm-shell .scorecard-head .h-brand img{width:18px;height:18px}\n  #lvm-shell .scorecard-row{grid-template-columns:1.2fr 1fr 1fr;column-gap:14px;padding:12px 0}\n  #lvm-shell .scorecard-row .crit{font-size:13px;padding-right:8px}\n  #lvm-shell .scorecard-row .bar{gap:6px}\n  #lvm-shell .scorecard-row .bar .v{font-size:11px;min-width:26px}\n  #lvm-shell .persona-it{grid-template-columns:44px 1fr;gap:12px;padding:16px 16px;border-radius:14px}\n  #lvm-shell .persona-it .pic{width:44px;height:44px;font-size:12px}\n  #lvm-shell .persona-it h4{font-size:15px}\n  #lvm-shell .persona-it p{font-size:13px}\n  #lvm-shell .feat-it{grid-template-columns:auto 1fr;gap:14px;padding:20px 0}\n  #lvm-shell .feat-it .fn{font-size:36px;width:54px}\n  #lvm-shell .feat-it .ft{font-size:18px}\n  #lvm-shell .feat-it .fd{font-size:13px}\n  #lvm-shell .feat-it .fc{display:none}\n}\n@media (max-width:480px){\n  #lvm-shell .phone-tabs{gap:5px}\n  #lvm-shell .phone-tabs button{padding:5px 8px;font-size:10px}\n  #lvm-shell .nav-stores{gap:4px}\n  #lvm-shell .nav-stores img{height:22px}\n  #lvm-shell .hero-stores img{height:40px}\n  #lvm-shell .crumb{font-size:12px}\n  #lvm-shell .table-row{grid-template-columns:1.3fr .85fr .85fr}\n  #lvm-shell .table-row > .crit{padding:11px 9px;font-size:12px}\n  #lvm-shell .table-row > .cell{padding:11px 8px;font-size:11px;gap:6px}\n  #lvm-shell .table-row.head > div{padding:11px 9px;font-size:9px;gap:5px}\n}\n\/* === Etude OFF === *\/\n#lvm-shell .bignum{font-family:var(--font-display);font-weight:600;font-size:88px;letter-spacing:-.045em;line-height:1;color:var(--pink);margin:8px 0 4px;font-variant-numeric:tabular-nums}\n#lvm-shell .bignum small{display:block;font-size:20px;color:var(--muted);font-weight:500;letter-spacing:-.01em;margin-top:10px;line-height:1.4}\n#lvm-shell .stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:30px 0}\n#lvm-shell .stat-card{background:var(--paper);border:1px solid var(--rule-soft);border-radius:16px;padding:22px 20px}\n#lvm-shell .stat-card .n{font-family:var(--font-display);font-weight:600;font-size:34px;letter-spacing:-.03em;color:var(--ink);font-variant-numeric:tabular-nums}\n#lvm-shell .stat-card .n.pink{color:var(--pink)}\n#lvm-shell .stat-card .t{font-size:13.5px;color:var(--muted);margin-top:6px;line-height:1.5}\n#lvm-shell .metho{background:var(--paper);border:1px solid var(--rule-soft);border-left:4px solid var(--pink);border-radius:0 16px 16px 0;padding:24px 26px;margin:30px 0}\n#lvm-shell .metho h3{font-family:var(--font-display);font-size:17px;font-weight:600;margin:0 0 12px;letter-spacing:-.01em}\n#lvm-shell .metho ul{margin:0;padding-left:20px;font-size:15px;color:var(--muted);line-height:1.7}\n#lvm-shell .metho li{margin:4px 0}\n#lvm-shell .metho code{font-family:var(--font-mono);font-size:13.5px;background:var(--paper-2);padding:1px 6px;border-radius:5px;color:var(--ink-2)}\n#lvm-shell .prod-cards{display:grid;gap:14px;margin:28px 0}\n#lvm-shell .prod-card{display:flex;align-items:center;gap:18px;background:var(--paper);border:1px solid var(--rule-soft);border-radius:16px;padding:18px 22px;flex-wrap:wrap}\n#lvm-shell .prod-card .who{flex:1;min-width:200px}\n#lvm-shell .prod-card .who b{font-family:var(--font-display);font-size:16.5px;letter-spacing:-.01em;color:var(--ink);display:block}\n#lvm-shell .prod-card .who span{font-size:13px;color:var(--muted)}\n#lvm-shell .prod-card .vals{display:flex;align-items:center;gap:14px;font-variant-numeric:tabular-nums}\n#lvm-shell .prod-card .fiche{font-family:var(--font-display);font-size:24px;font-weight:600;color:var(--ink);letter-spacing:-.02em}\n#lvm-shell .prod-card .fleche{color:var(--dim);font-size:17px}\n#lvm-shell .prod-card .reel{font-family:var(--font-display);font-size:24px;font-weight:600;color:var(--pink);letter-spacing:-.02em}\n#lvm-shell .prod-card .unit{font-size:11.5px;color:var(--dim);display:block;text-align:center;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.05em;margin-top:2px}\n@media (max-width:640px){\n  #lvm-shell .bignum{font-size:56px}\n  #lvm-shell .bignum small{font-size:16px}\n  #lvm-shell .stat-grid{grid-template-columns:1fr}\n  #lvm-shell .prod-card .fiche, #lvm-shell .prod-card .reel{font-size:20px}\n  #lvm-shell .cta-band{flex-direction:column;align-items:flex-start}\n  #lvm-shell .cta-band .l{min-width:100%;flex:none}\n}\n<\/style>\n\n<style id=\"lvm-collision-reset\">\nbody.postid-1947 #lvm-shell .hero{display:block!important;align-items:initial!important;justify-content:initial!important;text-align:left!important;flex-direction:initial!important;padding:54px 0 0!important}\nbody.postid-1947 #lvm-shell .wrap,\nbody.postid-1947 #lvm-shell main.wrap{display:block!important;max-width:760px!important;margin-left:auto!important;margin-right:auto!important;padding-left:28px!important;padding-right:28px!important}\n@media (max-width:820px){\n  body.postid-1947 #lvm-shell .wrap,\n  body.postid-1947 #lvm-shell main.wrap{padding-left:18px!important;padding-right:18px!important}\n}\nhtml, body{overflow-x:hidden!important}\nbody.postid-1947 #lvm-shell{overflow-x:hidden;max-width:100vw}\nbody.postid-1947 #lvm-shell *{max-width:100%}\nbody.postid-1947 #lvm-shell .nav-row{max-width:100vw;box-sizing:border-box}\nbody.postid-1947 #lvm-shell.force-show .rev{opacity:1!important;transform:none!important}\n@media (max-width:760px){\n  body.postid-1947 #lvm-shell .cta-band{flex-direction:column!important;align-items:center!important;text-align:center!important;padding:26px 22px!important;gap:20px!important}\n  body.postid-1947 #lvm-shell .cta-band .l{min-width:0!important;width:100%!important;font-size:16px!important;line-height:1.5!important;text-align:center!important}\n  body.postid-1947 #lvm-shell .cta-band .stores{width:100%!important;justify-content:center!important;flex-wrap:nowrap!important;gap:10px!important}\n  body.postid-1947 #lvm-shell .cta-band .stores a{flex:1!important;max-width:170px!important;display:flex!important;justify-content:center!important}\n  body.postid-1947 #lvm-shell .cta-band .stores img{height:56px!important;width:100%!important;max-width:170px!important;object-fit:contain!important;object-position:center!important;border-radius:10px!important}\n}\n<\/style>\n<div id=\"lvm-shell\">\n<div class=\"progress\" aria-hidden=\"true\"><i id=\"progBar\"><\/i><\/div>\n\n<header class=\"nav\">\n  <div class=\"nav-row\">\n    <a class=\"nav-brand\" href=\"https:\/\/lean-app.com\/en\/\" aria-label=\"Lean home\">\n      <img src=\"https:\/\/lean-app.com\/wp-content\/uploads\/2026\/05\/lvm-logo-lean-square-scaled.webp\" alt=\"\" width=\"512\" height=\"512\" loading=\"lazy\" decoding=\"async\" \/>\n      <span>Lean<\/span>\n    <\/a>\n    <span class=\"nav-spacer\"><\/span>\n    <a class=\"nav-link\" href=\"https:\/\/lean-app.com\/en\/tdee-calculator\/\">TDEE Calculator<\/a>\n    <div class=\"nav-stores\">\n      <a href=\"https:\/\/apps.apple.com\/fr\/app\/lean-calorie-ai-podometre\/id6738668646?utm_source=seo&#038;utm_medium=blog&#038;utm_campaign=etude-off\" target=\"_blank\" rel=\"noopener\" aria-label=\"Download on the App Store\">\n        <img src=\"https:\/\/lean-app.com\/wp-content\/uploads\/2026\/05\/lvm-appstore-official.webp\" alt=\"App Store\" width=\"413\" height=\"122\" loading=\"lazy\" decoding=\"async\" \/>\n      <\/a>\n      <a href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.lean.testsqflite&#038;utm_source=seo&#038;utm_medium=blog&#038;utm_campaign=etude-off\" target=\"_blank\" rel=\"noopener\" aria-label=\"Available on Google Play\">\n        <img src=\"https:\/\/lean-app.com\/wp-content\/uploads\/2026\/05\/lvm-googleplay-official.webp\" alt=\"Google Play\" width=\"315\" height=\"95\" loading=\"lazy\" decoding=\"async\" \/>\n      <\/a>\n    <\/div>\n  <\/div>\n<\/header>\n\n<main class=\"wrap\">\n\n<section class=\"hero\" aria-labelledby=\"title\">\n  <div class=\"crumb\"><a href=\"https:\/\/lean-app.com\/en\/\">Home<\/a> &nbsp;\/&nbsp; Calorie database study<\/div>\n  <div class=\"eyebrow\">Original study &middot; Public data<\/div>\n  <h1 id=\"title\">857,655 products analyzed.\n    <span class=\"alt\">What your calorie scanner isn't telling you.<\/span>\n  <\/h1>\n  <p class=\"dek\">Every barcode scan in France queries the same database. We analyzed all of it. More than one scan in three returns missing, incomplete or inconsistent data.<\/p>\n  <div class=\"byline\">\n    <img class=\"by-logo\" src=\"https:\/\/lean-app.com\/wp-content\/uploads\/2026\/05\/lvm-logo-lean-square-scaled.webp\" alt=\"\" width=\"26\" height=\"26\" loading=\"lazy\" decoding=\"async\" \/>\n    <span>By <strong>The Lean Team<\/strong> &middot; published August 24, 2026 &middot; 7 min read<\/span>\n  <\/div>\n  <div class=\"hero-stores\">\n    <a href=\"https:\/\/apps.apple.com\/fr\/app\/lean-calorie-ai-podometre\/id6738668646?utm_source=seo&#038;utm_medium=blog&#038;utm_campaign=etude-off\" target=\"_blank\" rel=\"noopener\" aria-label=\"Download Lean on the App Store\">\n      <img src=\"https:\/\/lean-app.com\/wp-content\/uploads\/2026\/05\/lvm-appstore-official.webp\" alt=\"T\u00e9l\u00e9charger sur l'App Store\" width=\"413\" height=\"122\" loading=\"lazy\" decoding=\"async\" \/>\n    <\/a>\n    <a href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.lean.testsqflite&#038;utm_source=seo&#038;utm_medium=blog&#038;utm_campaign=etude-off\" target=\"_blank\" rel=\"noopener\" aria-label=\"Download Lean on Google Play\">\n      <img src=\"https:\/\/lean-app.com\/wp-content\/uploads\/2026\/05\/lvm-googleplay-official.webp\" alt=\"Disponible sur Google Play\" width=\"315\" height=\"95\" loading=\"lazy\" decoding=\"async\" \/>\n    <\/a>\n  <\/div>\n<\/section>\n\n<section aria-labelledby=\"s1\" class=\"rev\">\n  <div class=\"section-label\"><span class=\"bar\"><\/span><span class=\"num\">01<\/span><\/div>\n  <h2 id=\"s1\">Why this study<\/h2>\n  <p>When you scan a barcode in a calorie tracker in France, MyFitnessPal, Yazio, Lifesum or Lean, the data comes from more or less the same source: <a href=\"https:\/\/world.openfoodfacts.org\/\" target=\"_blank\" rel=\"noopener\">OpenFoodFacts<\/a>, a remarkable French collaborative database under the ODbL open license. Millions of product entries, filled in by volunteer contributors.<\/p>\n  <p>A collaborative database is both its strength and its limit: anyone can create or edit an entry, and nobody checks systematically. Nobody had ever quantified the actual reliability of what your scan returns. So we downloaded the complete public dump of August 23, 2026 and tested every product sold in France.<\/p>\n  <div class=\"stat-grid\">\n    <div class=\"stat-card\"><div class=\"n\">4 535 553<\/div><div class=\"t\">products in the worldwide database as of August 23, 2026<\/div><\/div>\n    <div class=\"stat-card\"><div class=\"n\">1 265 726<\/div><div class=\"t\">products listed as sold in France<\/div><\/div>\n    <div class=\"stat-card\"><div class=\"n pink\">857 655<\/div><div class=\"t\">analyzable products: calories and all 3 macros filled in<\/div><\/div>\n  <\/div>\n<\/section>\n\n<section aria-labelledby=\"s2\" class=\"rev\">\n  <div class=\"section-label\"><span class=\"bar\"><\/span><span class=\"num\">02<\/span><\/div>\n  <h2 id=\"s2\">The method: every entry tested against itself<\/h2>\n  <p>No lab needed to detect a wrong entry: just confront it with itself. A food's calories can be derived from its macronutrients with the Atwater factors, the very ones the European INCO regulation imposes on manufacturers: 4&nbsp;kcal per gram of protein, 4 per gram of carbs, 9 per gram of fat.<\/p>\n  <p>If an entry displays 100&nbsp;kcal but its own macros add up to 250, one of the two lines is wrong. And your app shows you one of the two without blinking.<\/p>\n  <div class=\"metho\">\n    <h3>Full methodology<\/h3>\n    <ul>\n      <li>Official OpenFoodFacts dump of August 23, 2026 (ODbL license), France scope<\/li>\n      <li>Recomputation: <code>4&times;protein + 4&times;carbs + 9&times;fat<\/code>, plus 7&nbsp;kcal\/g of alcohol, 2&nbsp;kcal\/g of fiber and 2.4&nbsp;kcal\/g of polyols (erythritol: 0), in line with INCO regulation 1169\/2011<\/li>\n      <li>An entry only counts as inconsistent if the gap exceeds both 10&nbsp;% and 30&nbsp;kcal\/100g: the noise of waters and teas at 2&nbsp;kcal is excluded<\/li>\n      <li>16,364 aberrant entries discarded (calories outside 1-950&nbsp;kcal\/100g, impossible macros)<\/li>\n      <li>Every example cited on this page was re-checked against the live entry on publication day<\/li>\n    <\/ul>\n  <\/div>\n<\/section>\n\n<section aria-labelledby=\"s3\" class=\"rev\">\n  <div class=\"section-label\"><span class=\"bar\"><\/span><span class=\"num\">03<\/span><\/div>\n  <h2 id=\"s3\">Result 1: almost 1 entry in 3 is incomplete<\/h2>\n  <div class=\"bignum\">31 %<small>of French products lack complete data<\/small><\/div>\n  <p>391,707 products sold in France have no calories filled in, or are missing their three macronutrients. Concretely: you scan, and the app displays 0&nbsp;kcal, or calories with no protein or carbs. You feel like you're tracking; you're logging emptiness.<\/p>\n  <figure class=\"fig rev\">\n    <div class=\"cv-wrap\" style=\"position:relative;width:100%;height:400px;min-height:360px\"><canvas id=\"chartDonut\" aria-label=\"Breakdown of the 1,265,726 French products by entry reliability\" role=\"img\"><\/canvas><\/div>\n    <figcaption>The fate of a scan in France, across 1,265,726 products.<\/figcaption>\n  <\/figure>\n  <p>It's the sneakiest error, because it doesn't look like an error: the entry displays, the product has a name, a photo. Only the essential part is missing.<\/p>\n<\/section>\n\n<section aria-labelledby=\"s4\" class=\"rev\">\n  <div class=\"section-label\"><span class=\"bar\"><\/span><span class=\"num\">04<\/span><\/div>\n  <h2 id=\"s4\">Result 2: 46,757 products with inconsistent calories<\/h2>\n  <p>Across the 857,655 complete entries, 46,757 display calories incompatible with their own macros, by at least 10&nbsp;% and 30&nbsp;kcal per 100&nbsp;g. Every dot in the chart below is a real product: on the x-axis what its entry declares, on the y-axis what its macros yield. An honest entry lands on the diagonal.<\/p>\n  <figure class=\"fig rev\">\n    <div class=\"cv-wrap\" style=\"position:relative;width:100%;height:460px;min-height:420px\"><canvas id=\"chartScatter\" aria-label=\"Declared vs recomputed calories, sample of 1,370 products\" role=\"img\"><\/canvas><\/div>\n    <figcaption>1,370 real products: declared vs recomputed from macros.<\/figcaption>\n  <\/figure>\n  <p>The distribution of gaps shows the database is massively correct, then trails off into a long tail: wrong entries are not slightly wrong, they are very wrong.<\/p>\n  <figure class=\"fig rev\">\n    <div class=\"cv-wrap\" style=\"position:relative;width:100%;height:360px;min-height:320px\"><canvas id=\"chartHisto\" aria-label=\"Distribution of relative gaps between declared and recomputed calories\" role=\"img\"><\/canvas><\/div>\n    <figcaption>Distribution of gaps, logarithmic scale.<\/figcaption>\n  <\/figure>\n  <figure class=\"fig rev\">\n    <div class=\"cv-wrap\" style=\"position:relative;width:100%;height:360px;min-height:320px\"><canvas id=\"chartSeuils\" aria-label=\"Inconsistent products by gap threshold\" role=\"img\"><\/canvas><\/div>\n    <figcaption>Inconsistent products by gap threshold, out of 857,655 entries.<\/figcaption>\n  <\/figure>\n  <p>18,251 products, two material inconsistencies out of five, are off <em>by a factor of two or more<\/em>. At that level, it's no longer an imprecision, it's a data point that flips your daily calorie balance.<\/p>\n  <p>Adding incomplete and inconsistent entries together: <strong>more than one scan in three in France returns missing, incomplete or inconsistent data<\/strong>.<\/p>\n<\/section>\n\n<section aria-labelledby=\"s5\" class=\"rev\">\n  <div class=\"section-label\"><span class=\"bar\"><\/span><span class=\"num\">05<\/span><\/div>\n  <h2 id=\"s5\">Products sitting in your cupboard<\/h2>\n  <p>Every entry below was re-checked online on publication day. On the left what the OpenFoodFacts entry displays, on the right what its own macros yield:<\/p>\n  <div class=\"prod-cards\">\n    <div class=\"prod-card\"><div class=\"who\"><b>Le Beurre Tendre<\/b><span>Elle&amp;Vire product entry &middot; 535 scans<\/span><\/div><div class=\"vals\"><span><span class=\"fiche\">375<\/span><span class=\"unit\">entry<\/span><\/span><span class=\"fleche\">&rarr;<\/span><span><span class=\"reel\">744<\/span><span class=\"unit\">macros<\/span><\/span><\/div><\/div>\n    <div class=\"prod-card\"><div class=\"who\"><b>Yaos Greek-style Yogurt<\/b><span>Nestl\u00e9 product entry &middot; 271 scans<\/span><\/div><div class=\"vals\"><span><span class=\"fiche\">50<\/span><span class=\"unit\">entry<\/span><\/span><span class=\"fleche\">&rarr;<\/span><span><span class=\"reel\">98<\/span><span class=\"unit\">macros<\/span><\/span><\/div><\/div>\n    <div class=\"prod-card\"><div class=\"who\"><b>Sweet &amp; Salty Nut chocolate<\/b><span>Nature Valley product entry &middot; 338 scans<\/span><\/div><div class=\"vals\"><span><span class=\"fiche\">647<\/span><span class=\"unit\">entry<\/span><\/span><span class=\"fleche\">&rarr;<\/span><span><span class=\"reel\">140<\/span><span class=\"unit\">macros<\/span><\/span><\/div><\/div>\n    <div class=\"prod-card\"><div class=\"who\"><b>Ratatouille \u00e0 la Proven\u00e7ale<\/b><span>Cassegrain product entry &middot; 298 scans<\/span><\/div><div class=\"vals\"><span><span class=\"fiche\">38<\/span><span class=\"unit\">entry<\/span><\/span><span class=\"fleche\">&rarr;<\/span><span><span class=\"reel\">72<\/span><span class=\"unit\">macros<\/span><\/span><\/div><\/div>\n  <\/div>\n  <p>The textbook case: Raynal &amp; Roquelaure's Auvergne-style cooked lentils exist under <strong>two different entries<\/strong>. One displays 48&nbsp;kcal\/100g, the other 207. The real value is around 99. Depending on which barcode your app catches, you believe you're eating half or twice the reality.<\/p>\n  <p>A user spreading 30&nbsp;g of the butter above undercounts 110&nbsp;kcal. Every single day. While believing they're doing things right.<\/p>\n  <div class=\"cta-band rev\">\n    <div class=\"l\">Lean checks entries for consistency and can also scan your plate from a photo, without depending on a barcode.<\/div>\n    <div class=\"stores\">\n      <a href=\"https:\/\/apps.apple.com\/fr\/app\/lean-calorie-ai-podometre\/id6738668646?utm_source=seo&#038;utm_medium=blog&#038;utm_campaign=etude-off\" target=\"_blank\" rel=\"noopener\"><img src=\"https:\/\/lean-app.com\/wp-content\/uploads\/2026\/05\/lvm-appstore-official.webp\" alt=\"App Store\" width=\"413\" height=\"122\" loading=\"lazy\" decoding=\"async\" \/><\/a>\n      <a href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.lean.testsqflite&#038;utm_source=seo&#038;utm_medium=blog&#038;utm_campaign=etude-off\" target=\"_blank\" rel=\"noopener\"><img src=\"https:\/\/lean-app.com\/wp-content\/uploads\/2026\/05\/lvm-googleplay-official.webp\" alt=\"Google Play\" width=\"315\" height=\"95\" loading=\"lazy\" decoding=\"async\" \/><\/a>\n    <\/div>\n  <\/div>\n<\/section>\n\n<section aria-labelledby=\"s6\" class=\"rev\">\n  <div class=\"section-label\"><span class=\"bar\"><\/span><span class=\"num\">06<\/span><\/div>\n  <h2 id=\"s6\">The most affected categories<\/h2>\n  <p>The inconsistency is not randomly distributed, and the ranking's irony is cruel: the most affected category in the entire database is the one athletes track the most. <strong>More than one protein bar in five (20.8&nbsp;%) has an inconsistent entry.<\/strong><\/p>\n  <figure class=\"fig rev\">\n    <div class=\"cv-wrap\" style=\"position:relative;width:100%;height:460px;min-height:420px\"><canvas id=\"chartBubble\" aria-label=\"Categories: product volume, rate and number of inconsistent entries\" role=\"img\"><\/canvas><\/div>\n    <figcaption>Each bubble is a category; its size, its inconsistent entries.<\/figcaption>\n  <\/figure>\n  <p>Complex recipes and fortified products concentrate the errors: protein bars, confectionery, candies, cheeses. Simple products fare better.<\/p>\n  <figure class=\"fig rev\">\n    <div class=\"cv-wrap\" style=\"position:relative;width:100%;height:380px;min-height:340px\"><canvas id=\"chartCats\" aria-label=\"Inconsistency rate by category\" role=\"img\"><\/canvas><\/div>\n    <figcaption>Share of inconsistent entries per category (min. 1,000 products).<\/figcaption>\n  <\/figure>\n  <p>A note of honesty: candies, confectionery and bars are partly explained by sweeteners. When an entry doesn't declare its polyols, the recomputation overestimates the gap. We corrected everything that was declared; the residue also reflects that declaration gap, which fools your app in exactly the same way.<\/p>\n<\/section>\n\n<section aria-labelledby=\"s7\" class=\"rev\">\n  <div class=\"section-label\"><span class=\"bar\"><\/span><span class=\"num\">07<\/span><\/div>\n  <h2 id=\"s7\">What this changes for your tracking<\/h2>\n  <p>First, what this does not mean: you shouldn't stop scanning, and OpenFoodFacts remains a remarkable project that lives and corrects itself continuously. The curve below shows it: entries created in 2020-2021 are the least reliable (up to 7.5&nbsp;% inconsistency), and quality has clearly recovered since 2023.<\/p>\n  <figure class=\"fig rev\">\n    <div class=\"cv-wrap\" style=\"position:relative;width:100%;height:340px;min-height:300px\"><canvas id=\"chartYears\" aria-label=\"Rate of inconsistent entries by the year the entry was created\" role=\"img\"><\/canvas><\/div>\n    <figcaption>Inconsistency rate by the year the entry was created.<\/figcaption>\n  <\/figure>\n  <p>Four of the six worst entries in the dump had already been corrected online by the time we checked. But your app may have synced the wrong version, and the hundreds of thousands of entries created in the worst years are still in the database.<\/p>\n  <p>Two reflexes to remember:<\/p>\n  <p><strong>1. Scanning is a speed tool, not a truth tool.<\/strong> After a scan, a glance at the macros is enough: if protein, carbs and fat don't match the displayed calories, the entry is wrong. That's exactly this study's test, and it takes two seconds.<\/p>\n  <p><strong>2. The invisible error isn't on your plate, it's in your expenditure.<\/strong> A wrong entry off by 110&nbsp;kcal takes ten seconds to fix once spotted. A daily expenditure that's wrong by 300&nbsp;kcal is never visible: it's buried in the \u00ab&nbsp;activity multiplier&nbsp;\u00bb your app made you pick at sign-up. That's where Lean concentrates its precision: <a href=\"https:\/\/lean-app.com\/en\/depense-energetique-journaliere-tdee\/\">TDEE = BMR + NEAT + EAT + TEF<\/a>, with a BMR computed on your <a href=\"https:\/\/lean-app.com\/en\/masse-grasse-bodyscan\/\">real bodyfat<\/a> and a <a href=\"https:\/\/lean-app.com\/en\/calculateur-neat\/\">NEAT based on your real steps<\/a>, not on a ticked box.<\/p>\n  <div class=\"cta-band rev\">\n    <div class=\"l\">Get Lean, stay Lean: the only app that computes your expenditure from measurements, not checkboxes.<\/div>\n    <div class=\"stores\">\n      <a href=\"https:\/\/apps.apple.com\/fr\/app\/lean-calorie-ai-podometre\/id6738668646?utm_source=seo&#038;utm_medium=blog&#038;utm_campaign=etude-off\" target=\"_blank\" rel=\"noopener\"><img src=\"https:\/\/lean-app.com\/wp-content\/uploads\/2026\/05\/lvm-appstore-official.webp\" alt=\"App Store\" width=\"413\" height=\"122\" loading=\"lazy\" decoding=\"async\" \/><\/a>\n      <a href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.lean.testsqflite&#038;utm_source=seo&#038;utm_medium=blog&#038;utm_campaign=etude-off\" target=\"_blank\" rel=\"noopener\"><img src=\"https:\/\/lean-app.com\/wp-content\/uploads\/2026\/05\/lvm-googleplay-official.webp\" alt=\"Google Play\" width=\"315\" height=\"95\" loading=\"lazy\" decoding=\"async\" \/><\/a>\n    <\/div>\n  <\/div>\n<\/section>\n\n<section aria-labelledby=\"s8\" class=\"rev\">\n  <div class=\"section-label\"><span class=\"bar\"><\/span><span class=\"num\">FAQ<\/span><\/div>\n  <h2 id=\"s8\">Frequently asked questions<\/h2>\n  <div class=\"faq\">\n    <details><summary>Why OpenFoodFacts and not USDA?<\/summary><div class=\"ans\">For barcoded products sold in France, the trackers' reference source is OpenFoodFacts. USDA covers raw foods and the US market. This study is about what a scan in France actually returns.<\/div><\/details>\n    <details><summary>Should you stop scanning your food?<\/summary><div class=\"ans\">No. Scanning remains the fastest way to log. The good practice: check that the displayed macros are consistent with the calories. Two seconds that avoid the worst entries.<\/div><\/details>\n    <details><summary>Do apps correct these errors?<\/summary><div class=\"ans\">The database lives and corrects itself continuously, that's the strength of collaboration. But an app that synced a wrong entry can keep it cached long after the online correction.<\/div><\/details>\n    <details><summary>Can the numbers from this study be reused?<\/summary><div class=\"ans\">Yes, freely, citing \u00ab&nbsp;Lean Study, August 2026&nbsp;\u00bb with a link to this page. The source data belongs to OpenFoodFacts (ODbL license) and our methodology is described in full above.<\/div><\/details>\n  <\/div>\n<\/section>\n\n<section aria-labelledby=\"src\" class=\"sources rev\">\n  <div class=\"section-label\"><span class=\"bar\"><\/span><span class=\"num\">Sources<\/span><\/div>\n  <ol>\n    <li>OpenFoodFacts, official dump of August 23, 2026, <a href=\"https:\/\/world.openfoodfacts.org\/data\" target=\"_blank\" rel=\"noopener\">world.openfoodfacts.org\/data<\/a>, ODbL license.<\/li>\n    <li>Regulation (EU) No 1169\/2011 (INCO), Annex XIV: energy conversion factors.<\/li>\n    <li>Atwater W.O. &amp; Bryant A.P. (1900). The availability and fuel value of food materials.<\/li>\n    <li>Merrill A.L. &amp; Watt B.K. (1973). Energy value of foods, USDA Agriculture Handbook No. 74.<\/li>\n  <\/ol>\n<\/section>\n\n<\/main>\n\n<footer>\n  <div class=\"wrap\">\n    <div class=\"row\">\n      <div>\n        <div class=\"kicker\">Lean &middot; lean-app.com<\/div>\n        <p>Study published August 24, 2026. Updated regularly as new OpenFoodFacts dumps are analyzed. Lean is available on iOS and Android.<\/p>\n      <\/div>\n      <div class=\"stores\">\n        <a href=\"https:\/\/apps.apple.com\/fr\/app\/lean-calorie-ai-podometre\/id6738668646?utm_source=seo&#038;utm_medium=blog&#038;utm_campaign=etude-off\" target=\"_blank\" rel=\"noopener\"><img src=\"https:\/\/lean-app.com\/wp-content\/uploads\/2026\/05\/lvm-appstore-official.webp\" alt=\"App Store\" width=\"413\" height=\"122\" loading=\"lazy\" decoding=\"async\" \/><\/a>\n        <a href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.lean.testsqflite&#038;utm_source=seo&#038;utm_medium=blog&#038;utm_campaign=etude-off\" target=\"_blank\" rel=\"noopener\"><img src=\"https:\/\/lean-app.com\/wp-content\/uploads\/2026\/05\/lvm-googleplay-official.webp\" alt=\"Google Play\" width=\"315\" height=\"95\" loading=\"lazy\" decoding=\"async\" \/><\/a>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/footer>\n<script data-wpmeteor-nooptimize=\"true\">\n(function(){\n  var bar = document.getElementById('progBar');\n  function up(){\n    var h = document.documentElement;\n    var sc = (h.scrollTop)\/Math.max(1,(h.scrollHeight - h.clientHeight));\n    bar.style.transform = 'scaleX(' + Math.max(0,Math.min(1,sc)) + ')';\n  }\n  document.addEventListener('scroll', up, {passive:true});\n  up();\n})();\n\n(function(){\n  if (!('IntersectionObserver' in window)) {\n    document.querySelectorAll('.rev').forEach(function(n){n.classList.add('on')});\n    return;\n  }\n  var obs = new IntersectionObserver(function(entries){\n    entries.forEach(function(e){\n      if (e.isIntersecting) { e.target.classList.add('on'); obs.unobserve(e.target); }\n    });\n  }, {threshold:0.12});\n  document.querySelectorAll('.rev').forEach(function(n){ obs.observe(n); });\n})();\n<\/script>\n\n<script data-wpmeteor-nooptimize=\"true\">\n\/\/ === Charts etude OFF ===\n(function chartInit(){\n  if (typeof Chart === 'undefined') { return setTimeout(chartInit, 60); }\n  var LEAN_LANG = document.documentElement.lang || 'fr';\n  function T(fr, en){ return LEAN_LANG.indexOf('en') === 0 ? en : fr; }\n  var PINK = '#FF2D6E', INK = '#0E0E10', MUTED = '#6E6E73', RULE = '#E8E6DF';\n  var PINKS = ['rgba(255,45,110,1)','rgba(255,45,110,0.82)','rgba(255,45,110,0.66)','rgba(255,45,110,0.52)','rgba(255,45,110,0.4)','rgba(255,45,110,0.3)','rgba(255,45,110,0.24)','rgba(255,45,110,0.18)'];\n  Chart.defaults.font.family = '-apple-system, \"SF Pro Text\", system-ui, sans-serif';\n  var DPR = Math.max(2, window.devicePixelRatio || 2);\n  function nf(v){ return v.toLocaleString('fr-FR'); }\n  function pinkGrad(ctx, alphaTop){\n    var g = ctx.createLinearGradient(0, 0, 0, ctx.canvas.clientHeight || 360);\n    g.addColorStop(0, 'rgba(255,45,110,' + alphaTop + ')');\n    g.addColorStop(1, 'rgba(255,45,110,0.02)');\n    return g;\n  }\n\n  \/\/ 1. Donut : le sort d'un scan\n  var elD = document.getElementById('chartDonut');\n  if (elD) new Chart(elD, {\n    type: 'doughnut',\n    data: {\n      labels: [T('Fiche compl\u00e8te et coh\u00e9rente', 'Complete and consistent'), T('Fiche incompl\u00e8te', 'Incomplete entry'), T('Calories incoh\u00e9rentes', 'Inconsistent calories'), T('Donn\u00e9es aberrantes', 'Invalid data')],\n      datasets: [{ data: [807650, 391707, 46757, 19612],\n        backgroundColor: ['#E8E6DF', PINK, 'rgba(255,45,110,0.55)', 'rgba(110,110,115,0.45)'],\n        borderWidth: 3, borderColor: '#FFFFFF', borderRadius: 6, spacing: 1, hoverOffset: 6 }]\n    },\n    options: { responsive: true, maintainAspectRatio: false, devicePixelRatio: DPR, cutout: '66%',\n      plugins: { legend: { position: 'bottom', labels: { color: INK, boxWidth: 12, boxHeight: 12, borderRadius: 3, useBorderRadius: true, padding: 14, font: { size: 12.5 } } },\n        tooltip: { callbacks: { label: function(c){ return ' ' + nf(c.parsed) + T(' produits (', ' products (') + (100 * c.parsed \/ 1265726).toFixed(1) + ' %)'; } } } }\n    },\n    plugins: [{ id: 'centerText', afterDraw: function(chart){\n      var a = chart.ctx, area = chart.chartArea;\n      a.save(); a.textAlign = 'center';\n      a.fillStyle = PINK; a.font = '600 30px -apple-system, \"SF Pro Display\", system-ui, sans-serif';\n      a.fillText(T('1 sur 3', '1 in 3'), (area.left + area.right) \/ 2, (area.top + area.bottom) \/ 2 - 4);\n      a.fillStyle = MUTED; a.font = '500 12px -apple-system, system-ui, sans-serif';\n      a.fillText(T('scans non fiables', 'unreliable scans'), (area.left + area.right) \/ 2, (area.top + area.bottom) \/ 2 + 18);\n      a.restore();\n    } }]\n  });\n\n  \/\/ 2. Scatter : declare vs recalcule + diagonale de verite\n  var elSc = document.getElementById('chartScatter');\n  if (elSc) new Chart(elSc, {\n    type: 'scatter',\n    data: { datasets: [\n      { label: T('Fiches coh\u00e9rentes', 'Consistent entries'), data: [{\"x\": 457, \"y\": 457}, {\"x\": 299, \"y\": 294}, {\"x\": 391, \"y\": 386}, {\"x\": 129, \"y\": 129}, {\"x\": 476, \"y\": 483}, {\"x\": 535, \"y\": 531}, {\"x\": 21, \"y\": 21}, {\"x\": 529, \"y\": 536}, {\"x\": 36, \"y\": 36}, {\"x\": 566, \"y\": 547}, {\"x\": 429, \"y\": 458}, {\"x\": 483, \"y\": 488}, {\"x\": 594, \"y\": 636}, {\"x\": 149, \"y\": 146}, {\"x\": 80, \"y\": 81}, {\"x\": 350, \"y\": 353}, {\"x\": 33, \"y\": 37}, {\"x\": 93, \"y\": 93}, {\"x\": 27, \"y\": 27}, {\"x\": 190, \"y\": 204}, {\"x\": 50, \"y\": 50}, {\"x\": 30, \"y\": 29}, {\"x\": 475, \"y\": 498}, {\"x\": 319, \"y\": 319}, {\"x\": 382, \"y\": 385}, {\"x\": 412, \"y\": 416}, {\"x\": 404, \"y\": 399}, {\"x\": 171, \"y\": 171}, {\"x\": 158, \"y\": 154}, {\"x\": 418, \"y\": 421}, {\"x\": 341, \"y\": 336}, {\"x\": 494, \"y\": 470}, {\"x\": 238, \"y\": 219}, {\"x\": 141, \"y\": 141}, {\"x\": 276, \"y\": 270}, {\"x\": 213, \"y\": 213}, {\"x\": 309, \"y\": 309}, {\"x\": 134, \"y\": 130}, {\"x\": 388, \"y\": 387}, {\"x\": 223, \"y\": 221}, {\"x\": 78, \"y\": 78}, {\"x\": 256, \"y\": 250}, {\"x\": 327, \"y\": 324}, {\"x\": 106, \"y\": 106}, {\"x\": 268, \"y\": 262}, {\"x\": 373, \"y\": 373}, {\"x\": 78, \"y\": 78}, {\"x\": 291, \"y\": 291}, {\"x\": 362, \"y\": 360}, {\"x\": 311, \"y\": 311}, {\"x\": 385, \"y\": 385}, {\"x\": 333, \"y\": 333}, {\"x\": 399, \"y\": 397}, {\"x\": 110, \"y\": 112}, {\"x\": 104, \"y\": 104}, {\"x\": 448, \"y\": 447}, {\"x\": 105, \"y\": 105}, {\"x\": 108, \"y\": 108}, {\"x\": 128, \"y\": 126}, {\"x\": 168, \"y\": 166}, {\"x\": 369, \"y\": 370}, {\"x\": 147, \"y\": 146}, {\"x\": 398, \"y\": 390}, {\"x\": 309, \"y\": 309}, {\"x\": 98, \"y\": 98}, {\"x\": 106, \"y\": 106}, {\"x\": 245, \"y\": 241}, {\"x\": 104, \"y\": 104}, {\"x\": 353, \"y\": 359}, {\"x\": 124, \"y\": 124}, {\"x\": 373, \"y\": 369}, {\"x\": 362, \"y\": 368}, {\"x\": 133, \"y\": 132}, {\"x\": 157, \"y\": 157}, {\"x\": 51, \"y\": 51}, {\"x\": 391, \"y\": 391}, {\"x\": 365, \"y\": 344}, {\"x\": 113, \"y\": 113}, {\"x\": 366, \"y\": 366}, {\"x\": 142, \"y\": 138}, {\"x\": 101, \"y\": 101}, {\"x\": 285, \"y\": 285}, {\"x\": 60, \"y\": 59}, {\"x\": 45, \"y\": 50}, {\"x\": 494, \"y\": 496}, {\"x\": 565, \"y\": 561}, {\"x\": 480, \"y\": 481}, {\"x\": 366, \"y\": 360}, {\"x\": 333, \"y\": 333}, {\"x\": 304, \"y\": 307}, {\"x\": 1, \"y\": 1}, {\"x\": 564, \"y\": 564}, {\"x\": 406, \"y\": 394}, {\"x\": 336, \"y\": 338}, {\"x\": 101, \"y\": 100}, {\"x\": 217, \"y\": 217}, {\"x\": 9, \"y\": 8}, {\"x\": 110, \"y\": 118}, {\"x\": 335, \"y\": 332}, {\"x\": 92, \"y\": 110}, {\"x\": 1, \"y\": 1}, {\"x\": 335, \"y\": 331}, {\"x\": 495, \"y\": 505}, {\"x\": 136, \"y\": 136}, {\"x\": 72, \"y\": 72}, {\"x\": 359, \"y\": 361}, {\"x\": 39, \"y\": 38}, {\"x\": 19, \"y\": 18}, {\"x\": 465, \"y\": 461}, {\"x\": 276, \"y\": 276}, {\"x\": 358, \"y\": 352}, {\"x\": 156, \"y\": 156}, {\"x\": 449, \"y\": 445}, {\"x\": 182, \"y\": 176}, {\"x\": 240, \"y\": 240}, {\"x\": 284, \"y\": 283}, {\"x\": 221, \"y\": 222}, {\"x\": 331, \"y\": 331}, {\"x\": 254, \"y\": 251}, {\"x\": 299, \"y\": 299}, {\"x\": 619, \"y\": 616}, {\"x\": 54, \"y\": 52}, {\"x\": 176, \"y\": 160}, {\"x\": 150, \"y\": 145}, {\"x\": 410, \"y\": 409}, {\"x\": 216, \"y\": 213}, {\"x\": 390, \"y\": 423}, {\"x\": 485, \"y\": 491}, {\"x\": 498, \"y\": 498}, {\"x\": 42, \"y\": 44}, {\"x\": 295, \"y\": 292}, {\"x\": 376, \"y\": 375}, {\"x\": 65, \"y\": 65}, {\"x\": 29, \"y\": 28}, {\"x\": 228, \"y\": 224}, {\"x\": 386, \"y\": 386}, {\"x\": 628, \"y\": 628}, {\"x\": 336, \"y\": 336}, {\"x\": 336, \"y\": 306}, {\"x\": 38, \"y\": 36}, {\"x\": 507, \"y\": 483}, {\"x\": 50, \"y\": 50}, {\"x\": 117, \"y\": 119}, {\"x\": 332, \"y\": 332}, {\"x\": 250, \"y\": 248}, {\"x\": 1, \"y\": 1}, {\"x\": 237, \"y\": 245}, {\"x\": 213, \"y\": 209}, {\"x\": 168, \"y\": 195}, {\"x\": 368, \"y\": 372}, {\"x\": 369, \"y\": 369}, {\"x\": 366, \"y\": 363}, {\"x\": 197, \"y\": 197}, {\"x\": 176, \"y\": 176}, {\"x\": 401, \"y\": 397}, {\"x\": 167, \"y\": 165}, {\"x\": 381, \"y\": 380}, {\"x\": 271, \"y\": 271}, {\"x\": 181, \"y\": 184}, {\"x\": 139, \"y\": 139}, {\"x\": 364, \"y\": 364}, {\"x\": 385, \"y\": 387}, {\"x\": 385, \"y\": 388}, {\"x\": 239, \"y\": 249}, {\"x\": 314, \"y\": 316}, {\"x\": 185, \"y\": 185}, {\"x\": 418, \"y\": 423}, {\"x\": 161, \"y\": 161}, {\"x\": 217, \"y\": 217}, {\"x\": 236, \"y\": 236}, {\"x\": 166, \"y\": 166}, {\"x\": 117, \"y\": 113}, {\"x\": 199, \"y\": 200}, {\"x\": 150, \"y\": 148}, {\"x\": 122, \"y\": 124}, {\"x\": 289, \"y\": 288}, {\"x\": 361, \"y\": 363}, {\"x\": 173, \"y\": 177}, {\"x\": 165, \"y\": 164}, {\"x\": 106, \"y\": 109}, {\"x\": 172, \"y\": 169}, {\"x\": 95, \"y\": 94}, {\"x\": 305, \"y\": 306}, {\"x\": 97, \"y\": 96}, {\"x\": 348, \"y\": 348}, {\"x\": 136, \"y\": 135}, {\"x\": 156, \"y\": 158}, {\"x\": 124, \"y\": 124}, {\"x\": 225, \"y\": 225}, {\"x\": 153, \"y\": 153}, {\"x\": 139, \"y\": 138}, {\"x\": 255, \"y\": 260}, {\"x\": 398, \"y\": 410}, {\"x\": 392, \"y\": 388}, {\"x\": 327, \"y\": 325}, {\"x\": 272, \"y\": 270}, {\"x\": 283, \"y\": 283}, {\"x\": 144, \"y\": 142}, {\"x\": 283, \"y\": 283}, {\"x\": 338, \"y\": 332}, {\"x\": 251, \"y\": 228}, {\"x\": 48, \"y\": 48}, {\"x\": 450, \"y\": 437}, {\"x\": 328, \"y\": 310}, {\"x\": 339, \"y\": 369}, {\"x\": 404, \"y\": 405}, {\"x\": 551, \"y\": 559}, {\"x\": 221, \"y\": 219}, {\"x\": 123, \"y\": 122}, {\"x\": 356, \"y\": 354}, {\"x\": 248, \"y\": 248}, {\"x\": 250, \"y\": 250}, {\"x\": 163, \"y\": 156}, {\"x\": 317, \"y\": 292}, {\"x\": 245, \"y\": 246}, {\"x\": 229, \"y\": 229}, {\"x\": 725, \"y\": 717}, {\"x\": 159, \"y\": 161}, {\"x\": 361, \"y\": 357}, {\"x\": 111, \"y\": 109}, {\"x\": 418, \"y\": 423}, {\"x\": 220, \"y\": 214}, {\"x\": 228, \"y\": 229}, {\"x\": 139, \"y\": 141}, {\"x\": 155, \"y\": 126}, {\"x\": 162, \"y\": 163}, {\"x\": 403, \"y\": 397}, {\"x\": 364, \"y\": 360}, {\"x\": 402, \"y\": 406}, {\"x\": 55, \"y\": 55}, {\"x\": 257, \"y\": 260}, {\"x\": 105, \"y\": 105}, {\"x\": 110, \"y\": 110}, {\"x\": 42, \"y\": 43}, {\"x\": 365, \"y\": 370}, {\"x\": 235, \"y\": 235}, {\"x\": 404, \"y\": 401}, {\"x\": 111, \"y\": 108}, {\"x\": 413, \"y\": 413}, {\"x\": 70, \"y\": 72}, {\"x\": 206, \"y\": 206}, {\"x\": 390, \"y\": 390}, {\"x\": 524, \"y\": 529}, {\"x\": 285, \"y\": 288}, {\"x\": 177, \"y\": 177}, {\"x\": 107, \"y\": 105}, {\"x\": 52, \"y\": 53}, {\"x\": 361, \"y\": 361}, {\"x\": 125, \"y\": 123}, {\"x\": 343, \"y\": 337}, {\"x\": 227, \"y\": 228}, {\"x\": 124, \"y\": 124}, {\"x\": 74, \"y\": 70}, {\"x\": 325, \"y\": 325}, {\"x\": 87, \"y\": 86}, {\"x\": 41, \"y\": 41}, {\"x\": 365, \"y\": 365}, {\"x\": 177, \"y\": 176}, {\"x\": 333, \"y\": 332}, {\"x\": 82, \"y\": 82}, {\"x\": 328, \"y\": 328}, {\"x\": 562, \"y\": 557}, {\"x\": 530, \"y\": 520}, {\"x\": 290, \"y\": 284}, {\"x\": 335, \"y\": 335}, {\"x\": 367, \"y\": 367}, {\"x\": 198, \"y\": 198}, {\"x\": 308, \"y\": 294}, {\"x\": 368, \"y\": 370}, {\"x\": 71, \"y\": 71}, {\"x\": 60, \"y\": 59}, {\"x\": 19, \"y\": 16}, {\"x\": 320, \"y\": 324}, {\"x\": 183, \"y\": 172}, {\"x\": 124, \"y\": 124}, {\"x\": 465, \"y\": 450}, {\"x\": 363, \"y\": 367}, {\"x\": 111, \"y\": 109}, {\"x\": 116, \"y\": 116}, {\"x\": 565, \"y\": 558}, {\"x\": 136, \"y\": 146}, {\"x\": 458, \"y\": 497}, {\"x\": 512, \"y\": 504}, {\"x\": 545, \"y\": 540}, {\"x\": 382, \"y\": 384}, {\"x\": 547, \"y\": 520}, {\"x\": 8, \"y\": 2}, {\"x\": 109, \"y\": 109}, {\"x\": 167, \"y\": 176}, {\"x\": 338, \"y\": 336}, {\"x\": 140, \"y\": 142}, {\"x\": 615, \"y\": 612}, {\"x\": 503, \"y\": 498}, {\"x\": 546, \"y\": 542}, {\"x\": 313, \"y\": 318}, {\"x\": 424, \"y\": 425}, {\"x\": 544, \"y\": 534}, {\"x\": 370, \"y\": 370}, {\"x\": 12, \"y\": 14}, {\"x\": 433, \"y\": 460}, {\"x\": 770, \"y\": 771}, {\"x\": 303, \"y\": 274}, {\"x\": 127, \"y\": 123}, {\"x\": 410, \"y\": 399}, {\"x\": 371, \"y\": 364}, {\"x\": 62, \"y\": 62}, {\"x\": 239, \"y\": 239}, {\"x\": 238, \"y\": 238}, {\"x\": 361, \"y\": 360}, {\"x\": 253, \"y\": 250}, {\"x\": 140, \"y\": 140}, {\"x\": 23, \"y\": 23}, {\"x\": 46, \"y\": 46}, {\"x\": 101, \"y\": 101}, {\"x\": 487, \"y\": 486}, {\"x\": 223, \"y\": 223}, {\"x\": 247, \"y\": 247}, {\"x\": 47, \"y\": 47}, {\"x\": 81, \"y\": 81}, {\"x\": 336, \"y\": 332}, {\"x\": 51, \"y\": 44}, {\"x\": 522, \"y\": 503}, {\"x\": 157, \"y\": 157}, {\"x\": 113, \"y\": 113}, {\"x\": 619, \"y\": 620}, {\"x\": 316, \"y\": 316}, {\"x\": 270, \"y\": 270}, {\"x\": 337, \"y\": 333}, {\"x\": 351, \"y\": 351}, {\"x\": 197, \"y\": 198}, {\"x\": 249, \"y\": 243}, {\"x\": 49, \"y\": 50}, {\"x\": 171, \"y\": 171}, {\"x\": 46, \"y\": 58}, {\"x\": 132, \"y\": 134}, {\"x\": 243, \"y\": 249}, {\"x\": 247, \"y\": 247}, {\"x\": 49, \"y\": 44}, {\"x\": 129, \"y\": 129}, {\"x\": 462, \"y\": 462}, {\"x\": 105, \"y\": 104}, {\"x\": 57, \"y\": 54}, {\"x\": 347, \"y\": 347}, {\"x\": 152, \"y\": 152}, {\"x\": 136, \"y\": 136}, {\"x\": 32, \"y\": 38}, {\"x\": 696, \"y\": 692}, {\"x\": 360, \"y\": 360}, {\"x\": 510, \"y\": 510}, {\"x\": 183, \"y\": 179}, {\"x\": 248, \"y\": 248}, {\"x\": 232, \"y\": 232}, {\"x\": 681, \"y\": 685}, {\"x\": 81, \"y\": 81}, {\"x\": 62, \"y\": 68}, {\"x\": 436, \"y\": 441}, {\"x\": 561, \"y\": 562}, {\"x\": 204, \"y\": 208}, {\"x\": 83, \"y\": 84}, {\"x\": 289, \"y\": 302}, {\"x\": 461, \"y\": 462}, {\"x\": 683, \"y\": 681}, {\"x\": 161, \"y\": 160}, {\"x\": 28, \"y\": 32}, {\"x\": 363, \"y\": 363}, {\"x\": 498, \"y\": 498}, {\"x\": 452, \"y\": 466}, {\"x\": 186, \"y\": 186}, {\"x\": 14, \"y\": 14}, {\"x\": 159, \"y\": 160}, {\"x\": 49, \"y\": 53}, {\"x\": 544, \"y\": 544}, {\"x\": 487, \"y\": 480}, {\"x\": 405, \"y\": 401}, {\"x\": 26, \"y\": 54}, {\"x\": 35, \"y\": 34}, {\"x\": 238, \"y\": 238}, {\"x\": 139, \"y\": 138}, {\"x\": 900, \"y\": 900}, {\"x\": 87, \"y\": 87}, {\"x\": 348, \"y\": 348}, {\"x\": 134, \"y\": 134}, {\"x\": 204, \"y\": 204}, {\"x\": 110, \"y\": 108}, {\"x\": 380, \"y\": 380}, {\"x\": 40, \"y\": 40}, {\"x\": 391, \"y\": 392}, {\"x\": 68, \"y\": 69}, {\"x\": 248, \"y\": 248}, {\"x\": 155, \"y\": 150}, {\"x\": 129, \"y\": 129}, {\"x\": 269, \"y\": 257}, {\"x\": 314, \"y\": 310}, {\"x\": 355, \"y\": 355}, {\"x\": 90, \"y\": 88}, {\"x\": 417, \"y\": 427}, {\"x\": 201, \"y\": 204}, {\"x\": 487, \"y\": 487}, {\"x\": 81, \"y\": 77}, {\"x\": 573, \"y\": 579}, {\"x\": 268, \"y\": 273}, {\"x\": 99, \"y\": 99}, {\"x\": 222, \"y\": 222}, {\"x\": 234, \"y\": 233}, {\"x\": 420, \"y\": 420}, {\"x\": 115, \"y\": 115}, {\"x\": 38, \"y\": 38}, {\"x\": 120, \"y\": 120}, {\"x\": 106, \"y\": 106}, {\"x\": 225, \"y\": 221}, {\"x\": 232, \"y\": 234}, {\"x\": 305, \"y\": 305}, {\"x\": 242, \"y\": 246}, {\"x\": 196, \"y\": 196}, {\"x\": 242, \"y\": 242}, {\"x\": 320, \"y\": 324}, {\"x\": 74, \"y\": 74}, {\"x\": 357, \"y\": 354}, {\"x\": 1, \"y\": 1}, {\"x\": 210, \"y\": 205}, {\"x\": 544, \"y\": 536}, {\"x\": 90, \"y\": 96}, {\"x\": 232, \"y\": 232}, {\"x\": 85, \"y\": 85}, {\"x\": 231, \"y\": 234}, {\"x\": 102, \"y\": 102}, {\"x\": 144, \"y\": 144}, {\"x\": 368, \"y\": 361}, {\"x\": 21, \"y\": 21}, {\"x\": 417, \"y\": 412}, {\"x\": 411, \"y\": 411}, {\"x\": 374, \"y\": 373}, {\"x\": 395, \"y\": 391}, {\"x\": 216, \"y\": 216}, {\"x\": 58, \"y\": 58}, {\"x\": 17, \"y\": 17}, {\"x\": 231, \"y\": 228}, {\"x\": 82, \"y\": 78}, {\"x\": 324, \"y\": 320}, {\"x\": 444, \"y\": 441}, {\"x\": 230, \"y\": 230}, {\"x\": 177, \"y\": 176}, {\"x\": 100, \"y\": 100}, {\"x\": 205, \"y\": 205}, {\"x\": 95, \"y\": 91}, {\"x\": 534, \"y\": 534}, {\"x\": 34, \"y\": 32}, {\"x\": 107, \"y\": 104}, {\"x\": 115, \"y\": 115}, {\"x\": 144, \"y\": 144}, {\"x\": 143, \"y\": 141}, {\"x\": 27, \"y\": 21}, {\"x\": 374, \"y\": 374}, {\"x\": 470, \"y\": 443}, {\"x\": 101, \"y\": 101}, {\"x\": 210, \"y\": 210}, {\"x\": 234, \"y\": 234}, {\"x\": 523, \"y\": 538}, {\"x\": 208, \"y\": 208}, {\"x\": 347, \"y\": 347}, {\"x\": 120, \"y\": 119}, {\"x\": 91, \"y\": 87}, {\"x\": 93, \"y\": 93}, {\"x\": 50, \"y\": 47}, {\"x\": 33, \"y\": 34}, {\"x\": 91, \"y\": 90}, {\"x\": 326, \"y\": 326}, {\"x\": 165, \"y\": 167}, {\"x\": 515, \"y\": 513}, {\"x\": 77, \"y\": 73}, {\"x\": 133, \"y\": 124}, {\"x\": 330, \"y\": 344}, {\"x\": 39, \"y\": 47}, {\"x\": 593, \"y\": 628}, {\"x\": 190, \"y\": 191}, {\"x\": 340, \"y\": 340}, {\"x\": 43, \"y\": 44}, {\"x\": 95, \"y\": 95}, {\"x\": 88, \"y\": 88}, {\"x\": 220, \"y\": 220}, {\"x\": 361, \"y\": 361}, {\"x\": 361, \"y\": 361}, {\"x\": 187, \"y\": 187}, {\"x\": 698, \"y\": 690}, {\"x\": 351, \"y\": 349}, {\"x\": 485, \"y\": 485}, {\"x\": 242, \"y\": 239}, {\"x\": 170, \"y\": 171}, {\"x\": 409, \"y\": 411}, {\"x\": 392, \"y\": 392}, {\"x\": 493, \"y\": 490}, {\"x\": 69, \"y\": 69}, {\"x\": 168, \"y\": 169}, {\"x\": 223, \"y\": 218}, {\"x\": 217, \"y\": 214}, {\"x\": 450, \"y\": 416}, {\"x\": 157, \"y\": 158}, {\"x\": 286, \"y\": 261}, {\"x\": 427, \"y\": 426}, {\"x\": 355, \"y\": 351}, {\"x\": 332, \"y\": 332}, {\"x\": 337, \"y\": 337}, {\"x\": 161, \"y\": 162}, {\"x\": 290, \"y\": 291}, {\"x\": 398, \"y\": 398}, {\"x\": 43, \"y\": 41}, {\"x\": 154, \"y\": 153}, {\"x\": 119, \"y\": 119}, {\"x\": 577, \"y\": 549}, {\"x\": 508, \"y\": 508}, {\"x\": 189, \"y\": 193}, {\"x\": 39, \"y\": 36}, {\"x\": 470, \"y\": 464}, {\"x\": 391, \"y\": 371}, {\"x\": 580, \"y\": 576}, {\"x\": 273, \"y\": 273}, {\"x\": 68, \"y\": 69}, {\"x\": 338, \"y\": 345}, {\"x\": 485, \"y\": 477}, {\"x\": 427, \"y\": 427}, {\"x\": 46, \"y\": 48}, {\"x\": 167, \"y\": 170}, {\"x\": 69, \"y\": 69}, {\"x\": 300, \"y\": 301}, {\"x\": 1, \"y\": 9}, {\"x\": 318, \"y\": 329}, {\"x\": 113, \"y\": 109}, {\"x\": 72, \"y\": 72}, {\"x\": 565, \"y\": 535}, {\"x\": 900, \"y\": 900}, {\"x\": 49, \"y\": 54}, {\"x\": 256, \"y\": 254}, {\"x\": 225, \"y\": 226}, {\"x\": 325, \"y\": 314}, {\"x\": 255, \"y\": 252}, {\"x\": 17, \"y\": 16}, {\"x\": 290, \"y\": 290}, {\"x\": 529, \"y\": 529}, {\"x\": 468, \"y\": 469}, {\"x\": 163, \"y\": 167}, {\"x\": 501, \"y\": 500}, {\"x\": 42, \"y\": 42}, {\"x\": 164, \"y\": 164}, {\"x\": 485, \"y\": 476}, {\"x\": 89, \"y\": 88}, {\"x\": 201, \"y\": 200}, {\"x\": 66, \"y\": 65}, {\"x\": 71, \"y\": 71}, {\"x\": 578, \"y\": 563}, {\"x\": 563, \"y\": 556}, {\"x\": 600, \"y\": 590}, {\"x\": 340, \"y\": 331}, {\"x\": 575, \"y\": 616}, {\"x\": 261, \"y\": 261}, {\"x\": 262, \"y\": 262}, {\"x\": 451, \"y\": 450}, {\"x\": 327, \"y\": 323}, {\"x\": 179, \"y\": 182}, {\"x\": 132, \"y\": 132}, {\"x\": 530, \"y\": 530}, {\"x\": 324, \"y\": 312}, {\"x\": 439, \"y\": 432}, {\"x\": 14, \"y\": 18}, {\"x\": 195, \"y\": 185}, {\"x\": 389, \"y\": 378}, {\"x\": 358, \"y\": 333}, {\"x\": 260, \"y\": 258}, {\"x\": 271, \"y\": 273}, {\"x\": 275, \"y\": 276}, {\"x\": 179, \"y\": 180}, {\"x\": 326, \"y\": 326}, {\"x\": 73, \"y\": 74}, {\"x\": 154, \"y\": 154}, {\"x\": 168, \"y\": 167}, {\"x\": 470, \"y\": 470}, {\"x\": 298, \"y\": 298}, {\"x\": 67, \"y\": 67}, {\"x\": 265, \"y\": 261}, {\"x\": 336, \"y\": 340}, {\"x\": 265, \"y\": 261}, {\"x\": 900, \"y\": 898}, {\"x\": 387, \"y\": 395}, {\"x\": 32, \"y\": 33}, {\"x\": 500, \"y\": 495}, {\"x\": 13, \"y\": 17}, {\"x\": 231, \"y\": 225}, {\"x\": 350, \"y\": 351}, {\"x\": 148, \"y\": 151}, {\"x\": 88, \"y\": 87}, {\"x\": 147, \"y\": 147}, {\"x\": 318, \"y\": 316}, {\"x\": 108, \"y\": 108}, {\"x\": 628, \"y\": 624}, {\"x\": 150, \"y\": 152}, {\"x\": 25, \"y\": 28}, {\"x\": 98, \"y\": 99}, {\"x\": 523, \"y\": 512}, {\"x\": 358, \"y\": 344}, {\"x\": 654, \"y\": 696}, {\"x\": 284, \"y\": 285}, {\"x\": 105, \"y\": 122}, {\"x\": 248, \"y\": 249}, {\"x\": 364, \"y\": 364}, {\"x\": 373, \"y\": 373}, {\"x\": 95, \"y\": 95}, {\"x\": 108, \"y\": 108}, {\"x\": 329, \"y\": 327}, {\"x\": 155, \"y\": 152}, {\"x\": 108, \"y\": 108}, {\"x\": 73, \"y\": 69}, {\"x\": 341, \"y\": 340}, {\"x\": 23, \"y\": 26}, {\"x\": 48, \"y\": 48}, {\"x\": 584, \"y\": 560}, {\"x\": 189, \"y\": 189}, {\"x\": 130, \"y\": 129}, {\"x\": 638, \"y\": 630}, {\"x\": 54, \"y\": 54}, {\"x\": 38, \"y\": 38}, {\"x\": 350, \"y\": 340}, {\"x\": 93, \"y\": 94}, {\"x\": 247, \"y\": 248}, {\"x\": 42, \"y\": 40}, {\"x\": 232, \"y\": 222}, {\"x\": 218, \"y\": 219}, {\"x\": 47, \"y\": 49}, {\"x\": 363, \"y\": 363}, {\"x\": 162, \"y\": 162}, {\"x\": 83, \"y\": 83}, {\"x\": 89, \"y\": 90}, {\"x\": 123, \"y\": 124}, {\"x\": 237, \"y\": 236}, {\"x\": 60, \"y\": 64}, {\"x\": 544, \"y\": 544}, {\"x\": 744, \"y\": 744}, {\"x\": 47, \"y\": 48}, {\"x\": 357, \"y\": 386}, {\"x\": 27, \"y\": 27}, {\"x\": 49, \"y\": 50}, {\"x\": 44, \"y\": 41}, {\"x\": 345, \"y\": 345}, {\"x\": 303, \"y\": 303}, {\"x\": 347, \"y\": 348}, {\"x\": 477, \"y\": 477}, {\"x\": 170, \"y\": 170}, {\"x\": 69, \"y\": 69}, {\"x\": 119, \"y\": 119}, {\"x\": 350, \"y\": 350}, {\"x\": 386, \"y\": 386}, {\"x\": 39, \"y\": 46}, {\"x\": 398, \"y\": 398}, {\"x\": 124, \"y\": 124}, {\"x\": 95, \"y\": 94}, {\"x\": 355, \"y\": 354}, {\"x\": 202, \"y\": 212}, {\"x\": 386, \"y\": 380}, {\"x\": 145, \"y\": 145}, {\"x\": 238, \"y\": 235}, {\"x\": 49, \"y\": 53}, {\"x\": 374, \"y\": 377}, {\"x\": 268, \"y\": 262}, {\"x\": 344, \"y\": 328}, {\"x\": 159, \"y\": 158}, {\"x\": 101, \"y\": 102}, {\"x\": 285, \"y\": 256}, {\"x\": 313, \"y\": 303}, {\"x\": 28, \"y\": 28}, {\"x\": 212, \"y\": 212}, {\"x\": 132, \"y\": 118}, {\"x\": 198, \"y\": 198}, {\"x\": 596, \"y\": 591}, {\"x\": 48, \"y\": 48}, {\"x\": 41, \"y\": 40}, {\"x\": 424, \"y\": 424}, {\"x\": 257, \"y\": 257}, {\"x\": 232, \"y\": 224}, {\"x\": 556, \"y\": 552}, {\"x\": 487, \"y\": 488}, {\"x\": 447, \"y\": 451}, {\"x\": 577, \"y\": 576}, {\"x\": 300, \"y\": 300}, {\"x\": 567, \"y\": 565}, {\"x\": 485, \"y\": 484}, {\"x\": 142, \"y\": 136}, {\"x\": 304, \"y\": 304}, {\"x\": 329, \"y\": 342}, {\"x\": 95, \"y\": 95}, {\"x\": 481, \"y\": 465}, {\"x\": 127, \"y\": 127}, {\"x\": 367, \"y\": 368}, {\"x\": 76, \"y\": 76}, {\"x\": 476, \"y\": 476}, {\"x\": 292, \"y\": 296}, {\"x\": 172, \"y\": 171}, {\"x\": 32, \"y\": 36}, {\"x\": 46, \"y\": 46}, {\"x\": 509, \"y\": 506}, {\"x\": 30, \"y\": 28}, {\"x\": 459, \"y\": 435}, {\"x\": 314, \"y\": 315}, {\"x\": 331, \"y\": 331}, {\"x\": 96, \"y\": 91}, {\"x\": 130, \"y\": 126}, {\"x\": 215, \"y\": 218}, {\"x\": 269, \"y\": 247}, {\"x\": 309, \"y\": 302}, {\"x\": 30, \"y\": 26}, {\"x\": 571, \"y\": 564}, {\"x\": 170, \"y\": 172}, {\"x\": 45, \"y\": 45}, {\"x\": 256, \"y\": 252}, {\"x\": 126, \"y\": 124}, {\"x\": 76, \"y\": 77}, {\"x\": 577, \"y\": 577}, {\"x\": 900, \"y\": 900}, {\"x\": 343, \"y\": 332}, {\"x\": 618, \"y\": 647}, {\"x\": 365, \"y\": 357}, {\"x\": 253, \"y\": 260}, {\"x\": 418, \"y\": 434}, {\"x\": 192, \"y\": 192}, {\"x\": 428, \"y\": 424}, {\"x\": 478, \"y\": 478}, {\"x\": 464, \"y\": 463}, {\"x\": 295, \"y\": 295}, {\"x\": 568, \"y\": 536}, {\"x\": 49, \"y\": 56}, {\"x\": 36, \"y\": 34}, {\"x\": 498, \"y\": 492}, {\"x\": 48, \"y\": 66}, {\"x\": 312, \"y\": 317}, {\"x\": 217, \"y\": 217}, {\"x\": 206, \"y\": 190}, {\"x\": 475, \"y\": 464}, {\"x\": 537, \"y\": 536}, {\"x\": 900, \"y\": 902}, {\"x\": 233, \"y\": 224}, {\"x\": 473, \"y\": 474}, {\"x\": 271, \"y\": 294}, {\"x\": 485, \"y\": 476}, {\"x\": 368, \"y\": 366}, {\"x\": 76, \"y\": 76}, {\"x\": 275, \"y\": 277}, {\"x\": 202, \"y\": 205}, {\"x\": 294, \"y\": 291}, {\"x\": 246, \"y\": 251}, {\"x\": 407, \"y\": 408}, {\"x\": 619, \"y\": 618}, {\"x\": 149, \"y\": 148}, {\"x\": 73, \"y\": 71}, {\"x\": 535, \"y\": 534}, {\"x\": 56, \"y\": 63}, {\"x\": 462, \"y\": 457}, {\"x\": 66, \"y\": 66}, {\"x\": 482, \"y\": 485}, {\"x\": 396, \"y\": 401}, {\"x\": 317, \"y\": 319}, {\"x\": 172, \"y\": 181}, {\"x\": 171, \"y\": 171}, {\"x\": 395, \"y\": 394}, {\"x\": 174, \"y\": 196}, {\"x\": 527, \"y\": 525}, {\"x\": 582, \"y\": 534}, {\"x\": 46, \"y\": 61}, {\"x\": 351, \"y\": 341}, {\"x\": 192, \"y\": 190}, {\"x\": 338, \"y\": 338}, {\"x\": 304, \"y\": 306}, {\"x\": 381, \"y\": 382}, {\"x\": 494, \"y\": 494}, {\"x\": 87, \"y\": 88}, {\"x\": 291, \"y\": 272}, {\"x\": 409, \"y\": 403}, {\"x\": 301, \"y\": 307}, {\"x\": 900, \"y\": 924}, {\"x\": 113, \"y\": 113}, {\"x\": 252, \"y\": 249}, {\"x\": 278, \"y\": 283}, {\"x\": 120, \"y\": 120}, {\"x\": 484, \"y\": 470}, {\"x\": 236, \"y\": 250}, {\"x\": 423, \"y\": 414}, {\"x\": 50, \"y\": 49}, {\"x\": 24, \"y\": 24}, {\"x\": 10, \"y\": 9}, {\"x\": 467, \"y\": 464}, {\"x\": 24, \"y\": 24}, {\"x\": 1, \"y\": 1}, {\"x\": 376, \"y\": 379}, {\"x\": 428, \"y\": 420}, {\"x\": 139, \"y\": 140}, {\"x\": 117, \"y\": 115}, {\"x\": 6, \"y\": 6}, {\"x\": 11, \"y\": 11}, {\"x\": 560, \"y\": 541}, {\"x\": 45, \"y\": 54}, {\"x\": 12, \"y\": 12}, {\"x\": 643, \"y\": 642}, {\"x\": 12, \"y\": 12}, {\"x\": 500, \"y\": 521}, {\"x\": 573, \"y\": 596}, {\"x\": 116, \"y\": 116}, {\"x\": 392, \"y\": 392}, {\"x\": 453, \"y\": 466}, {\"x\": 168, \"y\": 180}, {\"x\": 26, \"y\": 26}, {\"x\": 493, \"y\": 485}, {\"x\": 334, \"y\": 328}, {\"x\": 402, \"y\": 398}, {\"x\": 236, \"y\": 232}, {\"x\": 260, \"y\": 262}, {\"x\": 573, \"y\": 558}, {\"x\": 290, \"y\": 290}, {\"x\": 343, \"y\": 340}, {\"x\": 352, \"y\": 347}, {\"x\": 566, \"y\": 564}, {\"x\": 372, \"y\": 373}, {\"x\": 443, \"y\": 432}, {\"x\": 24, \"y\": 42}, {\"x\": 539, \"y\": 514}, {\"x\": 479, \"y\": 476}, {\"x\": 358, \"y\": 351}, {\"x\": 480, \"y\": 477}, {\"x\": 157, \"y\": 157}, {\"x\": 2, \"y\": 3}, {\"x\": 305, \"y\": 300}, {\"x\": 275, \"y\": 276}, {\"x\": 151, \"y\": 150}, {\"x\": 125, \"y\": 125}, {\"x\": 280, \"y\": 280}, {\"x\": 267, \"y\": 267}, {\"x\": 107, \"y\": 107}, {\"x\": 214, \"y\": 214}, {\"x\": 372, \"y\": 367}, {\"x\": 131, \"y\": 131}, {\"x\": 464, \"y\": 464}, {\"x\": 439, \"y\": 398}, {\"x\": 77, \"y\": 77}, {\"x\": 56, \"y\": 58}, {\"x\": 310, \"y\": 308}, {\"x\": 492, \"y\": 495}, {\"x\": 344, \"y\": 344}, {\"x\": 19, \"y\": 20}, {\"x\": 486, \"y\": 487}, {\"x\": 254, \"y\": 254}, {\"x\": 528, \"y\": 570}, {\"x\": 439, \"y\": 439}, {\"x\": 107, \"y\": 99}, {\"x\": 375, \"y\": 346}, {\"x\": 899, \"y\": 891}, {\"x\": 352, \"y\": 344}, {\"x\": 40, \"y\": 37}, {\"x\": 4, \"y\": 4}, {\"x\": 208, \"y\": 208}, {\"x\": 64, \"y\": 64}, {\"x\": 24, \"y\": 30}, {\"x\": 164, \"y\": 188}, {\"x\": 143, \"y\": 143}, {\"x\": 375, \"y\": 367}, {\"x\": 197, \"y\": 198}, {\"x\": 380, \"y\": 381}, {\"x\": 310, \"y\": 309}, {\"x\": 250, \"y\": 249}, {\"x\": 178, \"y\": 178}, {\"x\": 130, \"y\": 124}, {\"x\": 241, \"y\": 241}, {\"x\": 42, \"y\": 42}, {\"x\": 456, \"y\": 455}, {\"x\": 492, \"y\": 494}, {\"x\": 166, \"y\": 168}, {\"x\": 442, \"y\": 442}, {\"x\": 372, \"y\": 367}, {\"x\": 432, \"y\": 433}, {\"x\": 515, \"y\": 507}, {\"x\": 42, \"y\": 42}, {\"x\": 23, \"y\": 21}, {\"x\": 275, \"y\": 266}, {\"x\": 43, \"y\": 39}, {\"x\": 396, \"y\": 374}, {\"x\": 22, \"y\": 21}, {\"x\": 199, \"y\": 229}, {\"x\": 392, \"y\": 372}, {\"x\": 399, \"y\": 390}, {\"x\": 536, \"y\": 536}, {\"x\": 391, \"y\": 387}, {\"x\": 378, \"y\": 378}, {\"x\": 509, \"y\": 501}, {\"x\": 398, \"y\": 398}, {\"x\": 367, \"y\": 366}, {\"x\": 357, \"y\": 360}, {\"x\": 1, \"y\": 0}, {\"x\": 552, \"y\": 527}, {\"x\": 360, \"y\": 379}, {\"x\": 303, \"y\": 312}, {\"x\": 16, \"y\": 16}, {\"x\": 153, \"y\": 153}, {\"x\": 166, \"y\": 158}, {\"x\": 555, \"y\": 539}, {\"x\": 60, \"y\": 58}, {\"x\": 481, \"y\": 484}, {\"x\": 824, \"y\": 841}, {\"x\": 520, \"y\": 520}, {\"x\": 320, \"y\": 319}, {\"x\": 445, \"y\": 435}, {\"x\": 235, \"y\": 233}, {\"x\": 207, \"y\": 212}, {\"x\": 414, \"y\": 414}, {\"x\": 241, \"y\": 239}, {\"x\": 190, \"y\": 186}, {\"x\": 104, \"y\": 105}, {\"x\": 34, \"y\": 33}, {\"x\": 565, \"y\": 566}, {\"x\": 379, \"y\": 379}, {\"x\": 369, \"y\": 367}, {\"x\": 105, \"y\": 105}, {\"x\": 102, \"y\": 102}, {\"x\": 284, \"y\": 281}, {\"x\": 500, \"y\": 497}, {\"x\": 163, \"y\": 157}, {\"x\": 257, \"y\": 255}, {\"x\": 180, \"y\": 175}, {\"x\": 343, \"y\": 343}, {\"x\": 422, \"y\": 422}, {\"x\": 439, \"y\": 439}, {\"x\": 519, \"y\": 546}, {\"x\": 152, \"y\": 150}, {\"x\": 667, \"y\": 665}, {\"x\": 580, \"y\": 565}, {\"x\": 191, \"y\": 191}, {\"x\": 308, \"y\": 303}, {\"x\": 44, \"y\": 44}, {\"x\": 43, \"y\": 42}, {\"x\": 43, \"y\": 43}, {\"x\": 457, \"y\": 457}, {\"x\": 171, \"y\": 159}, {\"x\": 2, \"y\": 2}, {\"x\": 282, \"y\": 282}, {\"x\": 391, \"y\": 391}, {\"x\": 146, \"y\": 139}, {\"x\": 483, \"y\": 513}, {\"x\": 184, \"y\": 184}, {\"x\": 51, \"y\": 50}, {\"x\": 73, \"y\": 73}, {\"x\": 177, \"y\": 178}, {\"x\": 361, \"y\": 382}, {\"x\": 378, \"y\": 378}, {\"x\": 397, \"y\": 396}, {\"x\": 45, \"y\": 45}, {\"x\": 501, \"y\": 492}, {\"x\": 139, \"y\": 141}],\n        backgroundColor: 'rgba(110,110,115,0.28)', pointRadius: 2.4, pointHoverRadius: 4 },\n      { label: T('Fiches incoh\u00e9rentes', 'Inconsistent entries'), data: [{\"x\": 120, \"y\": 72}, {\"x\": 149, \"y\": 248}, {\"x\": 516, \"y\": 580}, {\"x\": 268, \"y\": 321}, {\"x\": 334, \"y\": 295}, {\"x\": 46, \"y\": 12}, {\"x\": 348, \"y\": 260}, {\"x\": 475, \"y\": 545}, {\"x\": 24, \"y\": 253}, {\"x\": 142, \"y\": 236}, {\"x\": 500, \"y\": 400}, {\"x\": 557, \"y\": 476}, {\"x\": 393, \"y\": 35}, {\"x\": 529, \"y\": 232}, {\"x\": 30, \"y\": 444}, {\"x\": 467, \"y\": 532}, {\"x\": 300, \"y\": 240}, {\"x\": 712, \"y\": 376}, {\"x\": 441, \"y\": 491}, {\"x\": 7, \"y\": 400}, {\"x\": 200, \"y\": 170}, {\"x\": 1, \"y\": 109}, {\"x\": 562, \"y\": 644}, {\"x\": 342, \"y\": 416}, {\"x\": 179, \"y\": 286}, {\"x\": 20, \"y\": 53}, {\"x\": 280, \"y\": 147}, {\"x\": 460, \"y\": 408}, {\"x\": 533, \"y\": 600}, {\"x\": 571, \"y\": 643}, {\"x\": 100, \"y\": 260}, {\"x\": 165, \"y\": 329}, {\"x\": 390, \"y\": 336}, {\"x\": 151, \"y\": 197}, {\"x\": 105, \"y\": 22}, {\"x\": 376, \"y\": 293}, {\"x\": 423, \"y\": 475}, {\"x\": 340, \"y\": 414}, {\"x\": 600, \"y\": 533}, {\"x\": 163, \"y\": 194}, {\"x\": 114, \"y\": 269}, {\"x\": 362, \"y\": 317}, {\"x\": 382, \"y\": 439}, {\"x\": 179, \"y\": 296}, {\"x\": 510, \"y\": 333}, {\"x\": 346, \"y\": 274}, {\"x\": 208, \"y\": 4}, {\"x\": 10, \"y\": 550}, {\"x\": 701, \"y\": 163}, {\"x\": 350, \"y\": 157}, {\"x\": 383, \"y\": 337}, {\"x\": 162, \"y\": 266}, {\"x\": 10, \"y\": 255}, {\"x\": 421, \"y\": 378}, {\"x\": 6, \"y\": 92}, {\"x\": 292, \"y\": 96}, {\"x\": 1, \"y\": 253}, {\"x\": 232, \"y\": 200}, {\"x\": 372, \"y\": 154}, {\"x\": 369, \"y\": 435}, {\"x\": 434, \"y\": 552}, {\"x\": 51, \"y\": 138}, {\"x\": 364, \"y\": 302}, {\"x\": 369, \"y\": 449}, {\"x\": 374, \"y\": 232}, {\"x\": 686, \"y\": 611}, {\"x\": 3, \"y\": 178}, {\"x\": 195, \"y\": 735}, {\"x\": 503, \"y\": 39}, {\"x\": 221, \"y\": 313}, {\"x\": 893, \"y\": 211}, {\"x\": 407, \"y\": 71}, {\"x\": 290, \"y\": 52}, {\"x\": 24, \"y\": 88}, {\"x\": 306, \"y\": 262}, {\"x\": 492, \"y\": 429}, {\"x\": 115, \"y\": 351}, {\"x\": 424, \"y\": 324}, {\"x\": 482, \"y\": 114}, {\"x\": 375, \"y\": 260}, {\"x\": 555, \"y\": 160}, {\"x\": 444, \"y\": 384}, {\"x\": 137, \"y\": 213}, {\"x\": 276, \"y\": 202}, {\"x\": 219, \"y\": 362}, {\"x\": 269, \"y\": 525}, {\"x\": 100, \"y\": 247}, {\"x\": 81, \"y\": 28}, {\"x\": 412, \"y\": 499}, {\"x\": 275, \"y\": 310}, {\"x\": 247, \"y\": 286}, {\"x\": 171, \"y\": 101}, {\"x\": 563, \"y\": 134}, {\"x\": 151, \"y\": 371}, {\"x\": 170, \"y\": 268}, {\"x\": 15, \"y\": 404}, {\"x\": 281, \"y\": 321}, {\"x\": 556, \"y\": 133}, {\"x\": 376, \"y\": 332}, {\"x\": 193, \"y\": 139}, {\"x\": 170, \"y\": 122}, {\"x\": 13, \"y\": 320}, {\"x\": 402, \"y\": 310}, {\"x\": 286, \"y\": 238}, {\"x\": 476, \"y\": 113}, {\"x\": 289, \"y\": 476}, {\"x\": 89, \"y\": 121}, {\"x\": 68, \"y\": 150}, {\"x\": 202, \"y\": 119}, {\"x\": 50, \"y\": 4}, {\"x\": 339, \"y\": 282}, {\"x\": 333, \"y\": 272}, {\"x\": 24, \"y\": 223}, {\"x\": 239, \"y\": 185}, {\"x\": 475, \"y\": 592}, {\"x\": 178, \"y\": 257}, {\"x\": 233, \"y\": 287}, {\"x\": 191, \"y\": 158}, {\"x\": 353, \"y\": 422}, {\"x\": 32, \"y\": 100}, {\"x\": 385, \"y\": 518}, {\"x\": 361, \"y\": 462}, {\"x\": 144, \"y\": 38}, {\"x\": 350, \"y\": 472}, {\"x\": 395, \"y\": 445}, {\"x\": 388, \"y\": 466}, {\"x\": 480, \"y\": 592}, {\"x\": 328, \"y\": 288}, {\"x\": 353, \"y\": 465}, {\"x\": 640, \"y\": 362}, {\"x\": 150, \"y\": 187}, {\"x\": 333, \"y\": 40}, {\"x\": 255, \"y\": 175}, {\"x\": 96, \"y\": 192}, {\"x\": 2, \"y\": 398}, {\"x\": 200, \"y\": 241}, {\"x\": 8, \"y\": 57}, {\"x\": 144, \"y\": 112}, {\"x\": 115, \"y\": 75}, {\"x\": 400, \"y\": 480}, {\"x\": 236, \"y\": 392}, {\"x\": 400, \"y\": 326}, {\"x\": 360, \"y\": 102}, {\"x\": 333, \"y\": 400}, {\"x\": 274, \"y\": 162}, {\"x\": 5, \"y\": 133}, {\"x\": 541, \"y\": 465}, {\"x\": 400, \"y\": 534}, {\"x\": 350, \"y\": 102}, {\"x\": 200, \"y\": 80}, {\"x\": 110, \"y\": 216}, {\"x\": 283, \"y\": 427}, {\"x\": 25, \"y\": 92}, {\"x\": 344, \"y\": 82}, {\"x\": 207, \"y\": 281}, {\"x\": 367, \"y\": 320}, {\"x\": 447, \"y\": 533}, {\"x\": 262, \"y\": 297}, {\"x\": 482, \"y\": 399}, {\"x\": 238, \"y\": 292}, {\"x\": 130, \"y\": 224}, {\"x\": 510, \"y\": 293}, {\"x\": 63, \"y\": 118}, {\"x\": 367, \"y\": 437}, {\"x\": 400, \"y\": 353}, {\"x\": 34, \"y\": 151}, {\"x\": 110, \"y\": 269}, {\"x\": 200, \"y\": 29}, {\"x\": 2, \"y\": 126}, {\"x\": 477, \"y\": 358}, {\"x\": 502, \"y\": 268}, {\"x\": 419, \"y\": 589}, {\"x\": 556, \"y\": 489}, {\"x\": 720, \"y\": 363}, {\"x\": 660, \"y\": 223}, {\"x\": 221, \"y\": 257}, {\"x\": 7, \"y\": 210}, {\"x\": 250, \"y\": 442}, {\"x\": 133, \"y\": 99}, {\"x\": 2, \"y\": 435}, {\"x\": 100, \"y\": 416}, {\"x\": 292, \"y\": 260}, {\"x\": 164, \"y\": 220}, {\"x\": 132, \"y\": 200}, {\"x\": 366, \"y\": 528}, {\"x\": 155, \"y\": 34}, {\"x\": 316, \"y\": 391}, {\"x\": 316, \"y\": 399}, {\"x\": 348, \"y\": 276}, {\"x\": 431, \"y\": 384}, {\"x\": 185, \"y\": 51}, {\"x\": 907, \"y\": 215}, {\"x\": 169, \"y\": 390}, {\"x\": 190, \"y\": 136}, {\"x\": 170, \"y\": 122}, {\"x\": 159, \"y\": 289}, {\"x\": 563, \"y\": 129}, {\"x\": 514, \"y\": 401}, {\"x\": 485, \"y\": 115}, {\"x\": 11, \"y\": 100}, {\"x\": 176, \"y\": 92}, {\"x\": 416, \"y\": 372}, {\"x\": 247, \"y\": 170}, {\"x\": 122, \"y\": 171}, {\"x\": 125, \"y\": 29}, {\"x\": 20, \"y\": 57}, {\"x\": 102, \"y\": 22}, {\"x\": 108, \"y\": 149}, {\"x\": 780, \"y\": 187}, {\"x\": 93, \"y\": 215}, {\"x\": 154, \"y\": 200}, {\"x\": 297, \"y\": 336}, {\"x\": 547, \"y\": 128}, {\"x\": 161, \"y\": 193}, {\"x\": 673, \"y\": 161}, {\"x\": 205, \"y\": 150}, {\"x\": 403, \"y\": 94}, {\"x\": 513, \"y\": 121}, {\"x\": 185, \"y\": 229}, {\"x\": 228, \"y\": 186}, {\"x\": 426, \"y\": 141}, {\"x\": 359, \"y\": 321}, {\"x\": 121, \"y\": 417}, {\"x\": 462, \"y\": 97}, {\"x\": 288, \"y\": 242}, {\"x\": 20, \"y\": 364}, {\"x\": 765, \"y\": 176}, {\"x\": 346, \"y\": 86}, {\"x\": 3, \"y\": 51}, {\"x\": 185, \"y\": 154}, {\"x\": 281, \"y\": 321}, {\"x\": 45, \"y\": 101}, {\"x\": 95, \"y\": 18}, {\"x\": 156, \"y\": 554}, {\"x\": 141, \"y\": 252}, {\"x\": 470, \"y\": 112}, {\"x\": 220, \"y\": 454}, {\"x\": 654, \"y\": 158}, {\"x\": 342, \"y\": 569}, {\"x\": 228, \"y\": 260}, {\"x\": 708, \"y\": 169}, {\"x\": 327, \"y\": 401}, {\"x\": 296, \"y\": 239}, {\"x\": 225, \"y\": 297}, {\"x\": 381, \"y\": 287}, {\"x\": 403, \"y\": 187}, {\"x\": 108, \"y\": 200}, {\"x\": 313, \"y\": 363}, {\"x\": 263, \"y\": 301}, {\"x\": 498, \"y\": 445}, {\"x\": 600, \"y\": 408}, {\"x\": 498, \"y\": 556}, {\"x\": 37, \"y\": 106}, {\"x\": 282, \"y\": 249}, {\"x\": 16, \"y\": 431}, {\"x\": 100, \"y\": 298}, {\"x\": 462, \"y\": 402}, {\"x\": 463, \"y\": 383}, {\"x\": 140, \"y\": 408}, {\"x\": 404, \"y\": 358}, {\"x\": 645, \"y\": 572}, {\"x\": 120, \"y\": 190}, {\"x\": 232, \"y\": 264}, {\"x\": 244, \"y\": 311}, {\"x\": 475, \"y\": 419}, {\"x\": 501, \"y\": 120}, {\"x\": 135, \"y\": 239}, {\"x\": 112, \"y\": 399}, {\"x\": 171, \"y\": 344}, {\"x\": 30, \"y\": 232}, {\"x\": 422, \"y\": 96}, {\"x\": 62, \"y\": 511}, {\"x\": 100, \"y\": 58}, {\"x\": 131, \"y\": 31}, {\"x\": 398, \"y\": 94}, {\"x\": 4, \"y\": 259}, {\"x\": 251, \"y\": 217}, {\"x\": 169, \"y\": 224}, {\"x\": 245, \"y\": 152}, {\"x\": 465, \"y\": 110}, {\"x\": 351, \"y\": 309}, {\"x\": 361, \"y\": 315}, {\"x\": 147, \"y\": 24}, {\"x\": 42, \"y\": 83}, {\"x\": 401, \"y\": 94}, {\"x\": 177, \"y\": 142}, {\"x\": 32, \"y\": 362}, {\"x\": 281, \"y\": 453}, {\"x\": 11, \"y\": 461}, {\"x\": 28, \"y\": 428}, {\"x\": 239, \"y\": 272}, {\"x\": 144, \"y\": 386}, {\"x\": 100, \"y\": 400}, {\"x\": 529, \"y\": 126}, {\"x\": 493, \"y\": 114}, {\"x\": 238, \"y\": 55}, {\"x\": 274, \"y\": 328}, {\"x\": 251, \"y\": 161}, {\"x\": 325, \"y\": 383}, {\"x\": 74, \"y\": 514}, {\"x\": 26, \"y\": 104}, {\"x\": 245, \"y\": 285}, {\"x\": 24, \"y\": 242}, {\"x\": 163, \"y\": 272}, {\"x\": 283, \"y\": 229}, {\"x\": 492, \"y\": 566}, {\"x\": 544, \"y\": 622}, {\"x\": 67, \"y\": 116}, {\"x\": 900, \"y\": 268}, {\"x\": 54, \"y\": 220}, {\"x\": 32, \"y\": 324}, {\"x\": 245, \"y\": 311}, {\"x\": 444, \"y\": 360}, {\"x\": 2, \"y\": 137}, {\"x\": 220, \"y\": 0}, {\"x\": 285, \"y\": 236}, {\"x\": 189, \"y\": 391}, {\"x\": 108, \"y\": 20}, {\"x\": 3, \"y\": 145}, {\"x\": 417, \"y\": 498}, {\"x\": 199, \"y\": 253}, {\"x\": 65, \"y\": 130}, {\"x\": 298, \"y\": 256}, {\"x\": 306, \"y\": 249}, {\"x\": 295, \"y\": 236}, {\"x\": 297, \"y\": 209}, {\"x\": 5, \"y\": 45}, {\"x\": 275, \"y\": 243}, {\"x\": 242, \"y\": 301}, {\"x\": 404, \"y\": 307}, {\"x\": 240, \"y\": 392}, {\"x\": 372, \"y\": 418}, {\"x\": 234, \"y\": 420}, {\"x\": 225, \"y\": 256}, {\"x\": 278, \"y\": 223}, {\"x\": 204, \"y\": 153}, {\"x\": 235, \"y\": 176}, {\"x\": 559, \"y\": 498}, {\"x\": 239, \"y\": 269}, {\"x\": 229, \"y\": 5}, {\"x\": 193, \"y\": 231}, {\"x\": 331, \"y\": 572}, {\"x\": 2, \"y\": 320}, {\"x\": 617, \"y\": 537}, {\"x\": 303, \"y\": 265}, {\"x\": 336, \"y\": 401}, {\"x\": 43, \"y\": 104}, {\"x\": 279, \"y\": 198}, {\"x\": 306, \"y\": 265}, {\"x\": 249, \"y\": 327}, {\"x\": 720, \"y\": 540}, {\"x\": 1, \"y\": 42}, {\"x\": 330, \"y\": 288}, {\"x\": 6, \"y\": 666}, {\"x\": 285, \"y\": 236}, {\"x\": 193, \"y\": 5}, {\"x\": 233, \"y\": 388}, {\"x\": 258, \"y\": 185}, {\"x\": 352, \"y\": 278}, {\"x\": 47, \"y\": 295}, {\"x\": 315, \"y\": 239}, {\"x\": 361, \"y\": 310}, {\"x\": 170, \"y\": 230}, {\"x\": 394, \"y\": 349}, {\"x\": 268, \"y\": 315}, {\"x\": 45, \"y\": 88}, {\"x\": 170, \"y\": 137}, {\"x\": 355, \"y\": 297}, {\"x\": 193, \"y\": 430}, {\"x\": 415, \"y\": 324}, {\"x\": 20, \"y\": 60}, {\"x\": 297, \"y\": 355}, {\"x\": 655, \"y\": 579}, {\"x\": 69, \"y\": 105}, {\"x\": 87, \"y\": 49}, {\"x\": 371, \"y\": 223}, {\"x\": 301, \"y\": 373}, {\"x\": 213, \"y\": 245}, {\"x\": 400, \"y\": 612}, {\"x\": 101, \"y\": 26}, {\"x\": 500, \"y\": 660}, {\"x\": 291, \"y\": 252}, {\"x\": 372, \"y\": 416}, {\"x\": 734, \"y\": 177}, {\"x\": 188, \"y\": 153}, {\"x\": 308, \"y\": 396}, {\"x\": 430, \"y\": 101}, {\"x\": 502, \"y\": 233}, {\"x\": 660, \"y\": 40}, {\"x\": 418, \"y\": 152}, {\"x\": 275, \"y\": 309}, {\"x\": 410, \"y\": 357}, {\"x\": 310, \"y\": 268}, {\"x\": 370, \"y\": 415}, {\"x\": 301, \"y\": 338}, {\"x\": 211, \"y\": 117}, {\"x\": 325, \"y\": 364}, {\"x\": 308, \"y\": 277}, {\"x\": 341, \"y\": 382}, {\"x\": 180, \"y\": 36}, {\"x\": 565, \"y\": 133}, {\"x\": 340, \"y\": 267}, {\"x\": 408, \"y\": 97}, {\"x\": 1, \"y\": 42}, {\"x\": 39, \"y\": 165}, {\"x\": 241, \"y\": 285}, {\"x\": 131, \"y\": 32}, {\"x\": 249, \"y\": 193}, {\"x\": 374, \"y\": 170}, {\"x\": 299, \"y\": 256}, {\"x\": 549, \"y\": 484}, {\"x\": 5, \"y\": 60}, {\"x\": 97, \"y\": 137}, {\"x\": 219, \"y\": 123}, {\"x\": 199, \"y\": 295}, {\"x\": 3, \"y\": 120}, {\"x\": 755, \"y\": 180}, {\"x\": 451, \"y\": 368}, {\"x\": 337, \"y\": 295}, {\"x\": 51, \"y\": 151}],\n        backgroundColor: 'rgba(255,45,110,0.75)', pointRadius: 3.2, pointHoverRadius: 5 },\n      { label: T('Fiche parfaite (d\u00e9clar\u00e9 = recalcul\u00e9)', 'Perfect entry (declared = recomputed)'), type: 'line',\n        data: [{x: 0, y: 0}, {x: 950, y: 950}], borderColor: INK, borderWidth: 1.2, borderDash: [6, 5],\n        pointRadius: 0, fill: false }\n    ] },\n    options: { responsive: true, maintainAspectRatio: false, devicePixelRatio: DPR,\n      plugins: { legend: { position: 'bottom', labels: { color: INK, boxWidth: 12, boxHeight: 12, padding: 14, font: { size: 12 }, filter: function(i){ return true; } } },\n        tooltip: { callbacks: { label: function(c){ return T(' fiche ', ' entry ') + c.parsed.x + T(' kcal, macros ', ' kcal, macros ') + c.parsed.y + ' kcal'; } } } },\n      scales: {\n        x: { min: 0, max: 950, grid: { color: RULE }, ticks: { color: MUTED, font: { size: 11 } },\n          title: { display: true, text: T('Calories d\u00e9clar\u00e9es (kcal\/100g)', 'Declared calories (kcal\/100g)'), color: MUTED, font: { size: 12 } } },\n        y: { min: 0, max: 950, grid: { color: RULE }, ticks: { color: MUTED, font: { size: 11 } },\n          title: { display: true, text: T('Calories recalcul\u00e9es depuis les macros', 'Recomputed from macros'), color: MUTED, font: { size: 12 } } }\n      } }\n  });\n\n  \/\/ 3. Courbe de distribution des ecarts (aire, echelle log)\n  var elH = document.getElementById('chartHisto');\n  if (elH) new Chart(elH, {\n    type: 'line',\n    data: {\n      labels: [T('0-2 %', '0-2%'), T('2-5 %', '2-5%'), T('5-10 %', '5-10%'), T('10-20 %', '10-20%'), T('20-35 %', '20-35%'), T('35-50 %', '35-50%'), T('50-75 %', '50-75%'), T('75-100 %', '75-100%')],\n      datasets: [{ data: [568136, 132669, 63751, 40547, 15887, 7617, 11270, 14530], borderColor: PINK, borderWidth: 2.5, tension: 0.35,\n        pointRadius: 4, pointBackgroundColor: '#FFFFFF', pointBorderColor: PINK, pointBorderWidth: 2,\n        fill: true, backgroundColor: function(c){ return pinkGrad(c.chart.ctx, 0.28); } }]\n    },\n    options: { responsive: true, maintainAspectRatio: false, devicePixelRatio: DPR,\n      plugins: { legend: { display: false },\n        tooltip: { callbacks: { label: function(c){ return ' ' + nf(c.parsed.y) + T(' produits', ' products'); } } } },\n      scales: {\n        y: { type: 'logarithmic', min: 1000, grid: { color: RULE },\n          ticks: { color: MUTED, font: { size: 11 }, callback: function(v){ return [1000, 10000, 100000, 1000000].indexOf(v) >= 0 ? nf(v) : null; } } },\n        x: { grid: { display: false }, ticks: { color: INK, font: { size: 11 } },\n          title: { display: true, text: T('\u00c9cart entre calories d\u00e9clar\u00e9es et recalcul\u00e9es', 'Gap between declared and recomputed calories'), color: MUTED, font: { size: 12 } } }\n      } }\n  });\n\n  \/\/ 4. Barres : seuils\n  var elS = document.getElementById('chartSeuils');\n  if (elS) new Chart(elS, {\n    type: 'bar',\n    data: {\n      labels: [T('\u00e9cart > 10 %', 'gap > 10%'), T('\u00e9cart > 20 %', 'gap > 20%'), T('\u00e9cart > 50 %', 'gap > 50%'), T('du simple au double', 'off by 2x or more')],\n      datasets: [{ data: [46757, 31867, 18215, 18251],\n        backgroundColor: ['rgba(255,45,110,0.35)', 'rgba(255,45,110,0.55)', 'rgba(255,45,110,0.8)', PINK],\n        borderRadius: 8, maxBarThickness: 84 }]\n    },\n    options: { responsive: true, maintainAspectRatio: false, devicePixelRatio: DPR,\n      plugins: { legend: { display: false },\n        tooltip: { callbacks: { label: function(c){ return ' ' + nf(c.parsed.y) + T(' produits', ' products'); } } } },\n      scales: {\n        y: { beginAtZero: true, grid: { color: RULE }, ticks: { color: MUTED, callback: function(v){ return (v \/ 1000) + ' k'; } } },\n        x: { grid: { display: false }, ticks: { color: INK, font: { size: 12 } } }\n      } }\n  });\n\n  \/\/ 5. Bulles : categories dispatchees (x volume log, y taux, r fiches incoherentes)\n  var BUB = [{\"x\": 15828, \"y\": 6.05, \"r\": 19, \"fr\": \"\u00c9picerie\", \"en\": \"Groceries\", \"inc\": 958}, {\"x\": 4147, \"y\": 8.2, \"r\": 12, \"fr\": \"Bonbons\", \"en\": \"Candies\", \"inc\": 340}, {\"x\": 1328, \"y\": 20.78, \"r\": 10, \"fr\": \"Barres prot\u00e9in\u00e9es\", \"en\": \"Protein bars\", \"inc\": 276}, {\"x\": 2973, \"y\": 5.95, \"r\": 8, \"fr\": \"Fromages\", \"en\": \"Cheeses\", \"inc\": 177}, {\"x\": 3107, \"y\": 4.38, \"r\": 7, \"fr\": \"Boissons\", \"en\": \"Beverages\", \"inc\": 136}, {\"x\": 4132, \"y\": 3.12, \"r\": 7, \"fr\": \"Biscuits\", \"en\": \"Biscuits\", \"inc\": 129}, {\"x\": 1416, \"y\": 8.83, \"r\": 7, \"fr\": \"Confiseries\", \"en\": \"Confectioneries\", \"inc\": 125}, {\"x\": 6271, \"y\": 1.91, \"r\": 7, \"fr\": \"Boissons sucr\u00e9es\", \"en\": \"Sweetened beverages\", \"inc\": 120}, {\"x\": 2619, \"y\": 4.54, \"r\": 7, \"fr\": \"Chocolats noirs\", \"en\": \"Dark chocolates\", \"inc\": 119}, {\"x\": 3123, \"y\": 3.46, \"r\": 6, \"fr\": \"Jambons blancs\", \"en\": \"White hams\", \"inc\": 108}];\n  var elB = document.getElementById('chartBubble');\n  if (elB) new Chart(elB, {\n    type: 'bubble',\n    data: { datasets: BUB.map(function(b, i){\n      return { label: T(b.fr, b.en), data: [{x: b.x, y: b.y, r: b.r}],\n        backgroundColor: b.y >= 15 ? 'rgba(255,45,110,0.85)' : (b.y >= 6 ? 'rgba(255,45,110,0.55)' : 'rgba(255,45,110,0.3)'),\n        borderColor: PINK, borderWidth: 1 };\n    }) },\n    options: { responsive: true, maintainAspectRatio: false, devicePixelRatio: DPR,\n      plugins: { legend: { position: 'bottom', labels: { color: INK, boxWidth: 10, boxHeight: 10, padding: 10, font: { size: 11 } } },\n        tooltip: { callbacks: { label: function(c){ var b = BUB[c.datasetIndex];\n          return ' ' + T(b.fr, b.en) + ' : ' + b.y + T(' % incoh\u00e9rentes (', '% inconsistent (') + nf(b.inc) + T(' fiches sur ', ' of ') + nf(b.x) + ')'; } } } },\n      scales: {\n        x: { type: 'logarithmic', min: 900, max: 20000, grid: { color: RULE },\n          ticks: { color: MUTED, font: { size: 11 }, callback: function(v){ return [1000, 2000, 5000, 10000, 20000].indexOf(v) >= 0 ? nf(v) : null; } },\n          title: { display: true, text: T('Produits dans la cat\u00e9gorie (\u00e9chelle log)', 'Products in category (log scale)'), color: MUTED, font: { size: 12 } } },\n        y: { min: 0, max: 24, grid: { color: RULE }, ticks: { color: MUTED, callback: function(v){ return v + ' %'; } },\n          title: { display: true, text: T('Part de fiches incoh\u00e9rentes', 'Share of inconsistent entries'), color: MUTED, font: { size: 12 } } }\n      } }\n  });\n\n  \/\/ 6. Barres horizontales : categories\n  var elC = document.getElementById('chartCats');\n  if (elC) new Chart(elC, {\n    type: 'bar',\n    data: {\n      labels: [[\"Barres prot\u00e9in\u00e9es\", \"Protein bars\"], [\"Confiseries\", \"Confectioneries\"], [\"Bonbons\", \"Candies\"], [\"\u00c9picerie\", \"Groceries\"], [\"Fromages\", \"Cheeses\"], [\"Chocolats noirs\", \"Dark chocolates\"], [\"Boissons\", \"Beverages\"], [\"Jambons blancs\", \"White hams\"]].map(function(p){ return T(p[0], p[1]); }),\n      datasets: [{ data: [20.78, 8.83, 8.2, 6.05, 5.95, 4.54, 4.38, 3.46], backgroundColor: PINKS, borderRadius: 7, maxBarThickness: 30 }]\n    },\n    options: { indexAxis: 'y', responsive: true, maintainAspectRatio: false, devicePixelRatio: DPR,\n      plugins: { legend: { display: false },\n        tooltip: { callbacks: { label: function(c){ return ' ' + c.parsed.x.toLocaleString('fr-FR') + T(' % de fiches incoh\u00e9rentes', '% inconsistent entries'); } } } },\n      scales: {\n        x: { beginAtZero: true, grid: { color: RULE }, ticks: { color: MUTED, callback: function(v){ return v + ' %'; } } },\n        y: { grid: { display: false }, ticks: { color: INK, font: { size: 12.5 } } }\n      } }\n  });\n\n  \/\/ 7. Courbe temporelle : qualite par annee de creation de la fiche\n  var elY = document.getElementById('chartYears');\n  if (elY) new Chart(elY, {\n    type: 'line',\n    data: { labels: [\"2012\", \"2013\", \"2014\", \"2015\", \"2016\", \"2017\", \"2018\", \"2019\", \"2020\", \"2021\", \"2022\", \"2023\", \"2024\", \"2025\", \"2026\"],\n      datasets: [{ data: [2.5, 3.09, 2.55, 2.73, 2.62, 3.68, 5.88, 6.01, 7.34, 7.5, 7.44, 4.1, 3.92, 2.86, 4.12], borderColor: PINK, borderWidth: 2.5, tension: 0.4,\n        pointRadius: 4, pointBackgroundColor: '#FFFFFF', pointBorderColor: PINK, pointBorderWidth: 2,\n        fill: true, backgroundColor: function(c){ return pinkGrad(c.chart.ctx, 0.22); } }] },\n    options: { responsive: true, maintainAspectRatio: false, devicePixelRatio: DPR,\n      plugins: { legend: { display: false },\n        tooltip: { callbacks: { label: function(c){ return ' ' + c.parsed.y + T(' % des fiches cr\u00e9\u00e9es cette ann\u00e9e-l\u00e0 sont incoh\u00e9rentes', '% of entries created that year are inconsistent'); } } } },\n      scales: {\n        y: { min: 0, max: 9, grid: { color: RULE }, ticks: { color: MUTED, callback: function(v){ return v + ' %'; } } },\n        x: { grid: { display: false }, ticks: { color: INK, font: { size: 11 } },\n          title: { display: true, text: T('Ann\u00e9e de cr\u00e9ation de la fiche', 'Year the entry was created'), color: MUTED, font: { size: 12 } } }\n      } }\n  });\n})();\n<\/script>\n<\/div>\n<script data-wpmeteor-nooptimize=\"true\" src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js@4.4.4\/dist\/chart.umd.min.js\"><\/script>\n<script data-wpmeteor-nooptimize=\"true\" src=\"https:\/\/cdn.jsdelivr.net\/npm\/chartjs-plugin-annotation@3.1.0\/dist\/chartjs-plugin-annotation.min.js\"><\/script>","protected":false},"excerpt":{"rendered":"<p>Lean Calculateur TDEE Accueil &nbsp;\/&nbsp; \u00c9tude base de donn\u00e9es calories \u00c9tude originale &middot; Donn\u00e9es publiques 857&nbsp;655 produits analys\u00e9s. Ce que ton scanner de calories ne te dit pas. Chaque scan de code-barres en France interroge la m\u00eame base. Nous l&rsquo;avons analys\u00e9e en entier. Plus d&rsquo;un scan sur trois renvoie une donn\u00e9e absente, incompl\u00e8te ou incoh\u00e9rente. [&hellip;]<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"single-lvm-blank","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1947","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Nous avons analys\u00e9 857 655 produits vendus en France : ce que ton scanner de calories ne te dit pas - Lean<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/lean-app.com\/en\/etude-base-donnees-calories\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Nous avons analys\u00e9 857 655 produits vendus en France : ce que ton scanner de calories ne te dit pas - Lean\" \/>\n<meta property=\"og:description\" content=\"Lean Calculateur TDEE Accueil &nbsp;\/&nbsp; \u00c9tude base de donn\u00e9es calories \u00c9tude originale &middot; Donn\u00e9es publiques 857&nbsp;655 produits analys\u00e9s. Ce que ton scanner de calories ne te dit pas. Chaque scan de code-barres en France interroge la m\u00eame base. Nous l&rsquo;avons analys\u00e9e en entier. Plus d&rsquo;un scan sur trois renvoie une donn\u00e9e absente, incompl\u00e8te ou incoh\u00e9rente. [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/lean-app.com\/en\/etude-base-donnees-calories\/\" \/>\n<meta property=\"og:site_name\" content=\"Lean\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/share\/1GXD3qyMBy\/?mibextid=wwXIfr\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-23T20:43:53+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-23T20:47:13+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/lean-app.com\/wp-content\/uploads\/2026\/05\/lvm-logo-lean-square-scaled.webp\" \/>\n<meta name=\"author\" content=\"L&#039;\u00e9quipe Lean\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"L&#039;\u00e9quipe Lean\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/lean-app.com\/etude-base-donnees-calories\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/lean-app.com\/etude-base-donnees-calories\/\"},\"author\":{\"@id\":\"https:\/\/lean-app.com\/#organization\"},\"headline\":\"Nous avons analys\u00e9 857 655 produits vendus en France : ce que ton scanner de calories ne te dit pas\",\"datePublished\":\"2026-08-23T20:43:53+00:00\",\"dateModified\":\"2026-08-23T20:47:13+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/lean-app.com\/etude-base-donnees-calories\/\"},\"wordCount\":1635,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/lean-app.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/lean-app.com\/etude-base-donnees-calories\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/lean-app.com\/wp-content\/uploads\/2026\/05\/lvm-logo-lean-square-scaled.webp\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/lean-app.com\/etude-base-donnees-calories\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/lean-app.com\/etude-base-donnees-calories\/\",\"url\":\"https:\/\/lean-app.com\/etude-base-donnees-calories\/\",\"name\":\"Nous avons analys\u00e9 857 655 produits vendus en France : ce que ton scanner de calories ne te dit pas - Lean\",\"isPartOf\":{\"@id\":\"https:\/\/lean-app.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/lean-app.com\/etude-base-donnees-calories\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/lean-app.com\/etude-base-donnees-calories\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/lean-app.com\/wp-content\/uploads\/2026\/05\/lvm-logo-lean-square-scaled.webp\",\"datePublished\":\"2026-08-23T20:43:53+00:00\",\"dateModified\":\"2026-08-23T20:47:13+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/lean-app.com\/etude-base-donnees-calories\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/lean-app.com\/etude-base-donnees-calories\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/lean-app.com\/etude-base-donnees-calories\/#primaryimage\",\"url\":\"https:\/\/lean-app.com\/wp-content\/uploads\/2026\/05\/lvm-logo-lean-square-scaled.webp\",\"contentUrl\":\"https:\/\/lean-app.com\/wp-content\/uploads\/2026\/05\/lvm-logo-lean-square-scaled.webp\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/lean-app.com\/etude-base-donnees-calories\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/lean-app.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Nous avons analys\u00e9 857 655 produits vendus en France : ce que ton scanner de calories ne te dit pas\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/lean-app.com\/#website\",\"url\":\"https:\/\/lean-app.com\/\",\"name\":\"Lean\",\"description\":\"Download and try the app for FREE \u2014 take control of your body FOR LIFE.Download and try the app for FREE \u2014 take control of your body FOR LIFE.\",\"publisher\":{\"@id\":\"https:\/\/lean-app.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/lean-app.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/lean-app.com\/#organization\",\"name\":\"Lean\",\"url\":\"https:\/\/lean-app.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/lean-app.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/lean-app.com\/wp-content\/uploads\/2025\/08\/Logo-for-Lean-App-the-best-calorie-and-TDEE-tracking-application.png\",\"contentUrl\":\"https:\/\/lean-app.com\/wp-content\/uploads\/2025\/08\/Logo-for-Lean-App-the-best-calorie-and-TDEE-tracking-application.png\",\"width\":1672,\"height\":1484,\"caption\":\"Lean\"},\"image\":{\"@id\":\"https:\/\/lean-app.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/share\/1GXD3qyMBy\/?mibextid=wwXIfr\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Nous avons analys\u00e9 857 655 produits vendus en France : ce que ton scanner de calories ne te dit pas - Lean","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/lean-app.com\/en\/etude-base-donnees-calories\/","og_locale":"en_US","og_type":"article","og_title":"Nous avons analys\u00e9 857 655 produits vendus en France : ce que ton scanner de calories ne te dit pas - Lean","og_description":"Lean Calculateur TDEE Accueil &nbsp;\/&nbsp; \u00c9tude base de donn\u00e9es calories \u00c9tude originale &middot; Donn\u00e9es publiques 857&nbsp;655 produits analys\u00e9s. Ce que ton scanner de calories ne te dit pas. Chaque scan de code-barres en France interroge la m\u00eame base. Nous l&rsquo;avons analys\u00e9e en entier. Plus d&rsquo;un scan sur trois renvoie une donn\u00e9e absente, incompl\u00e8te ou incoh\u00e9rente. [&hellip;]","og_url":"https:\/\/lean-app.com\/en\/etude-base-donnees-calories\/","og_site_name":"Lean","article_publisher":"https:\/\/www.facebook.com\/share\/1GXD3qyMBy\/?mibextid=wwXIfr","article_published_time":"2026-08-23T20:43:53+00:00","article_modified_time":"2026-08-23T20:47:13+00:00","og_image":[{"url":"https:\/\/lean-app.com\/wp-content\/uploads\/2026\/05\/lvm-logo-lean-square-scaled.webp","type":"","width":"","height":""}],"author":"L'\u00e9quipe Lean","twitter_card":"summary_large_image","twitter_misc":{"Written by":"L'\u00e9quipe Lean","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/lean-app.com\/etude-base-donnees-calories\/#article","isPartOf":{"@id":"https:\/\/lean-app.com\/etude-base-donnees-calories\/"},"author":{"@id":"https:\/\/lean-app.com\/#organization"},"headline":"Nous avons analys\u00e9 857 655 produits vendus en France : ce que ton scanner de calories ne te dit pas","datePublished":"2026-08-23T20:43:53+00:00","dateModified":"2026-08-23T20:47:13+00:00","mainEntityOfPage":{"@id":"https:\/\/lean-app.com\/etude-base-donnees-calories\/"},"wordCount":1635,"commentCount":0,"publisher":{"@id":"https:\/\/lean-app.com\/#organization"},"image":{"@id":"https:\/\/lean-app.com\/etude-base-donnees-calories\/#primaryimage"},"thumbnailUrl":"https:\/\/lean-app.com\/wp-content\/uploads\/2026\/05\/lvm-logo-lean-square-scaled.webp","inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/lean-app.com\/etude-base-donnees-calories\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/lean-app.com\/etude-base-donnees-calories\/","url":"https:\/\/lean-app.com\/etude-base-donnees-calories\/","name":"Nous avons analys\u00e9 857 655 produits vendus en France : ce que ton scanner de calories ne te dit pas - Lean","isPartOf":{"@id":"https:\/\/lean-app.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/lean-app.com\/etude-base-donnees-calories\/#primaryimage"},"image":{"@id":"https:\/\/lean-app.com\/etude-base-donnees-calories\/#primaryimage"},"thumbnailUrl":"https:\/\/lean-app.com\/wp-content\/uploads\/2026\/05\/lvm-logo-lean-square-scaled.webp","datePublished":"2026-08-23T20:43:53+00:00","dateModified":"2026-08-23T20:47:13+00:00","breadcrumb":{"@id":"https:\/\/lean-app.com\/etude-base-donnees-calories\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/lean-app.com\/etude-base-donnees-calories\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/lean-app.com\/etude-base-donnees-calories\/#primaryimage","url":"https:\/\/lean-app.com\/wp-content\/uploads\/2026\/05\/lvm-logo-lean-square-scaled.webp","contentUrl":"https:\/\/lean-app.com\/wp-content\/uploads\/2026\/05\/lvm-logo-lean-square-scaled.webp"},{"@type":"BreadcrumbList","@id":"https:\/\/lean-app.com\/etude-base-donnees-calories\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/lean-app.com\/"},{"@type":"ListItem","position":2,"name":"Nous avons analys\u00e9 857 655 produits vendus en France : ce que ton scanner de calories ne te dit pas"}]},{"@type":"WebSite","@id":"https:\/\/lean-app.com\/#website","url":"https:\/\/lean-app.com\/","name":"Lean","description":"Download and try the app for FREE \u2014 take control of your body FOR LIFE.Download and try the app for FREE \u2014 take control of your body FOR LIFE.","publisher":{"@id":"https:\/\/lean-app.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/lean-app.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/lean-app.com\/#organization","name":"Lean","url":"https:\/\/lean-app.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/lean-app.com\/#\/schema\/logo\/image\/","url":"https:\/\/lean-app.com\/wp-content\/uploads\/2025\/08\/Logo-for-Lean-App-the-best-calorie-and-TDEE-tracking-application.png","contentUrl":"https:\/\/lean-app.com\/wp-content\/uploads\/2025\/08\/Logo-for-Lean-App-the-best-calorie-and-TDEE-tracking-application.png","width":1672,"height":1484,"caption":"Lean"},"image":{"@id":"https:\/\/lean-app.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/share\/1GXD3qyMBy\/?mibextid=wwXIfr"]}]}},"_links":{"self":[{"href":"https:\/\/lean-app.com\/en\/wp-json\/wp\/v2\/posts\/1947","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lean-app.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/lean-app.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/lean-app.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lean-app.com\/en\/wp-json\/wp\/v2\/comments?post=1947"}],"version-history":[{"count":0,"href":"https:\/\/lean-app.com\/en\/wp-json\/wp\/v2\/posts\/1947\/revisions"}],"wp:attachment":[{"href":"https:\/\/lean-app.com\/en\/wp-json\/wp\/v2\/media?parent=1947"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lean-app.com\/en\/wp-json\/wp\/v2\/categories?post=1947"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lean-app.com\/en\/wp-json\/wp\/v2\/tags?post=1947"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}