{"id":1247,"date":"2025-08-19T22:45:03","date_gmt":"2025-08-19T21:45:03","guid":{"rendered":"https:\/\/protocole-csr.com\/?post_type=download&#038;p=1247"},"modified":"2025-08-19T22:45:05","modified_gmt":"2025-08-19T21:45:05","slug":"1247","status":"publish","type":"download","link":"https:\/\/protocole-csr.com\/?download=1247","title":{"rendered":""},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"fr\">\n<head>\n<meta charset=\"utf-8\" \/>\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1\" \/>\n<title>Fiche d\u2019Auto\u00e9valuation \u2013 Protocole Sucre<\/title>\n<meta name=\"description\" content=\"Fiche d\u2019auto\u00e9valuation initiale Protocole Sucre : mesure ton point de d\u00e9part, calcule automatiquement ton score et obtiens des recommandations personnalis\u00e9es.\" \/>\n<style>\n  :root{\n    --bg:#0f172a;           \/* ardoise nuit *\/\n    --panel:#111827;        \/* gris tr\u00e8s sombre *\/\n    --muted:#94a3b8;        \/* ardoise clair *\/\n    --text:#e5e7eb;         \/* gris clair *\/\n    --brand:#06b6d4;        \/* cyan *\/\n    --brand-2:#22c55e;      \/* vert *\/\n    --warn:#f59e0b;         \/* ambre *\/\n    --danger:#ef4444;       \/* rouge *\/\n    --ok:#10b981;           \/* \u00e9meraude *\/\n    --card:#0b1220;\n    --stroke:#1f2937;\n  }\n  *{box-sizing:border-box}\n  body{\n    margin:0;\n    background:linear-gradient(180deg,#0b1220 0%, #0f172a 100%);\n    color:var(--text);\n    font:16px\/1.55 system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, \"Helvetica Neue\", Arial, \"Apple Color Emoji\",\"Segoe UI Emoji\";\n  }\n  header{\n    padding:32px 20px 8px;\n    text-align:center;\n  }\n  header h1{\n    margin:0 0 6px;\n    font-size:clamp(1.3rem,2.6vw,2rem);\n    letter-spacing:.2px;\n  }\n  header p{\n    margin:0;\n    color:var(--muted);\n  }\n  .container{\n    max-width:980px;\n    margin:18px auto 96px;\n    padding:0 16px;\n  }\n  .card{\n    background:linear-gradient(180deg,var(--panel),var(--card));\n    border:1px solid var(--stroke);\n    border-radius:16px;\n    padding:20px;\n    margin:14px 0;\n    box-shadow:0 10px 30px rgba(0,0,0,.25);\n  }\n  .card h2{\n    margin:.2rem 0 1rem;\n    font-size:1.1rem;\n    letter-spacing:.3px;\n  }\n  .grid{\n    display:grid;\n    grid-template-columns:1fr 1fr;\n    gap:16px;\n  }\n  @media (max-width:820px){\n    .grid{grid-template-columns:1fr}\n  }\n  label, .label{\n    display:block;\n    font-weight:600;\n    margin:.3rem 0 .35rem;\n  }\n  .muted{ color:var(--muted); font-size:.92rem }\n  input[type=\"text\"],\n  input[type=\"number\"],\n  textarea,\n  select{\n    width:100%;\n    background:#0b1325;\n    color:var(--text);\n    border:1px solid var(--stroke);\n    border-radius:10px;\n    padding:10px 12px;\n    outline:none;\n  }\n  textarea{ min-height:92px; resize:vertical }\n  .row{ display:flex; align-items:center; gap:12px; flex-wrap:wrap }\n  .pill{\n    padding:6px 10px; border:1px solid var(--stroke);\n    border-radius:999px; display:inline-flex; align-items:center; gap:8px;\n    background:#0b1325; color:var(--text); cursor:pointer; user-select:none;\n  }\n  .help{\n    font-size:.92rem; color:var(--muted); margin-top:4px\n  }\n\n  \/* Range with bubble *\/\n  .range-wrap{position:relative}\n  .range-bubble{\n    position:absolute; top:-28px; left:0; transform:translateX(-50%);\n    background:#0b1325; border:1px solid var(--stroke); color:var(--text);\n    padding:2px 6px; font-size:.8rem; border-radius:6px; white-space:nowrap\n  }\n  input[type=\"range\"]{ width:100% }\n\n  \/* Score bars *\/\n  .bar{\n    height:12px; background:#101826; border:1px solid var(--stroke);\n    border-radius:999px; overflow:hidden; width:100%;\n  }\n  .bar > span{\n    display:block; height:100%; width:0%;\n    background:linear-gradient(90deg, var(--brand), var(--brand-2));\n    transition:width .35s ease;\n  }\n  .score-chip{\n    display:inline-flex; align-items:center; gap:8px;\n    padding:6px 10px; border-radius:8px; border:1px solid var(--stroke);\n    background:#0b1325; margin:6px 6px 0 0; font-weight:600\n  }\n  .kpi{\n    display:grid; grid-template-columns:repeat(3,1fr); gap:16px; margin-top:10px\n  }\n  @media (max-width:820px){ .kpi{grid-template-columns:1fr} }\n  .kpi .box{\n    background:#0b1325; border:1px solid var(--stroke); border-radius:14px; padding:14px\n  }\n  .kpi .value{ font-size:1.8rem; font-weight:800 }\n  .tag{ font-weight:700 }\n  .tag.ok{ color:var(--ok) }\n  .tag.warn{ color:var(--warn) }\n  .tag.bad{ color:var(--danger) }\n\n  .actions{\n    position:sticky; bottom:0; left:0; right:0;\n    background:linear-gradient(180deg, rgba(11,18,32,.0), rgba(11,18,32,.9) 30%, #0b1220 80%);\n    padding:18px 16px 20px; border-top:1px solid var(--stroke);\n  }\n  .actions .inner{\n    max-width:980px; margin:0 auto; display:flex; gap:12px; flex-wrap:wrap;\n    justify-content:space-between; align-items:center\n  }\n  button{\n    appearance:none; border:1px solid var(--stroke); color:var(--text);\n    background:linear-gradient(180deg,#0f1930,#0a1224);\n    padding:10px 14px; border-radius:12px; cursor:pointer; font-weight:700\n  }\n  button.primary{\n    border-color:transparent;\n    background:linear-gradient(90deg,var(--brand),var(--brand-2));\n    color:#001016\n  }\n  details{\n    background:#0b1325; border:1px solid var(--stroke); border-radius:12px; padding:10px 14px;\n  }\n  details summary{ cursor:pointer; font-weight:700 }\n  .disclaimer{\n    color:var(--muted); font-size:.9rem; margin-top:6px\n  }\n\n  \/* Print *\/\n  @media print{\n    .actions{ display:none !important }\n    body{ background:#fff; color:#000 }\n    .card{ box-shadow:none; background:#fff; border-color:#ddd }\n    .bar{ border-color:#ddd }\n    input, textarea, select{ border-color:#ccc; color:#000; background:#fff }\n  }\n<\/style>\n<\/head>\n<body>\n  <header>\n    <h1>Fiche d\u2019Auto\u00e9valuation \u2013 <span style=\"color:var(--brand)\">Protocole Sucre<\/span><\/h1>\n    <p>Mesure ton point de d\u00e9part, calcule automatiquement ton score, et re\u00e7ois des recommandations personnalis\u00e9es.<\/p>\n  <\/header>\n\n  <div class=\"container\">\n\n    <!-- Section 1 : \u00c9tat physique -->\n    <section class=\"card\" id=\"sec-physique\">\n      <h2>1) Mon \u00e9tat physique actuel<\/h2>\n      <div class=\"grid\">\n        <div>\n          <label for=\"energie\">\u00c9nergie quotidienne (0 = \u00e9puis\u00e9\u00b7e, 10 = plein\u00b7e d\u2019\u00e9nergie)<\/label>\n          <div class=\"range-wrap\">\n            <input id=\"energie\" type=\"range\" min=\"0\" max=\"10\" step=\"1\" value=\"5\" \/>\n            <div class=\"range-bubble\" data-bubble=\"energie\">5 \/ 10<\/div>\n          <\/div>\n        <\/div>\n        <div>\n          <label for=\"sommeil\">Qualit\u00e9 du sommeil (0 = tr\u00e8s mauvais, 10 = r\u00e9parateur)<\/label>\n          <div class=\"range-wrap\">\n            <input id=\"sommeil\" type=\"range\" min=\"0\" max=\"10\" step=\"1\" value=\"6\" \/>\n            <div class=\"range-bubble\" data-bubble=\"sommeil\">6 \/ 10<\/div>\n          <\/div>\n        <\/div>\n\n        <div>\n          <label for=\"fringales\">Fr\u00e9quence des fringales sucr\u00e9es \/ jour<\/label>\n          <input id=\"fringales\" type=\"number\" min=\"0\" inputmode=\"numeric\" placeholder=\"ex. 2\" \/>\n          <p class=\"help\">0 = id\u00e9al ; 1\u20132 = mod\u00e9r\u00e9 ; \u22653 = terrain instable<\/p>\n        <\/div>\n\n        <div>\n          <span class=\"label\">Somnolence apr\u00e8s les repas<\/span>\n          <div class=\"row\">\n            <label class=\"pill\"><input type=\"radio\" name=\"somno\" value=\"non\" checked> Non<\/label>\n            <label class=\"pill\"><input type=\"radio\" name=\"somno\" value=\"oui\"> Oui<\/label>\n          <\/div>\n        <\/div>\n\n        <div>\n          <label for=\"poids\">Poids actuel (optionnel)<\/label>\n          <input id=\"poids\" type=\"number\" step=\"0.1\" placeholder=\"kg\" \/>\n        <\/div>\n        <div><\/div>\n      <\/div>\n    <\/section>\n\n    <!-- Section 2 : Habitudes -->\n    <section class=\"card\" id=\"sec-habitudes\">\n      <h2>2) Mes habitudes alimentaires<\/h2>\n      <div class=\"grid\">\n        <div>\n          <label for=\"repas\">Nombre de repas \/ jour<\/label>\n          <input id=\"repas\" type=\"number\" min=\"1\" max=\"6\" placeholder=\"ex. 3\" \/>\n        <\/div>\n        <div>\n          <span class=\"label\">Grignotage en dehors des repas<\/span>\n          <div class=\"row\">\n            <label class=\"pill\"><input type=\"radio\" name=\"grigno\" value=\"non\" checked> Non<\/label>\n            <label class=\"pill\"><input type=\"radio\" name=\"grigno\" value=\"oui\"> Oui<\/label>\n          <\/div>\n        <\/div>\n      <\/div>\n      <div class=\"grid\">\n        <div>\n          <label for=\"sucre-souvent\">Aliments sucr\u00e9s consomm\u00e9s le plus souvent<\/label>\n          <textarea id=\"sucre-souvent\" placeholder=\"Ex : biscuits, boissons sucr\u00e9es, chocolat au lait, jus...\"><\/textarea>\n        <\/div>\n        <div>\n          <span class=\"label\">\u00c9quilibre de mes repas (fibres + prot\u00e9ines + bonnes graisses)<\/span>\n          <div class=\"row\">\n            <label class=\"pill\"><input type=\"radio\" name=\"equilibre\" value=\"souvent\" checked> Souvent<\/label>\n            <label class=\"pill\"><input type=\"radio\" name=\"equilibre\" value=\"parfois\"> Parfois<\/label>\n            <label class=\"pill\"><input type=\"radio\" name=\"equilibre\" value=\"rarement\"> Rarement<\/label>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/section>\n\n    <!-- Section 3 : \u00c9motions -->\n    <section class=\"card\" id=\"sec-emotions\">\n      <h2>3) Mes \u00e9motions face au sucre<\/h2>\n      <div class=\"grid\">\n        <div>\n          <span class=\"label\">Quand j\u2019ai envie de sucre, c\u2019est souvent li\u00e9 \u00e0 :<\/span>\n          <label class=\"pill\"><input type=\"checkbox\" name=\"triggers\" value=\"stress\"> Stress<\/label>\n          <label class=\"pill\"><input type=\"checkbox\" name=\"triggers\" value=\"fatigue\"> Fatigue<\/label>\n          <label class=\"pill\"><input type=\"checkbox\" name=\"triggers\" value=\"ennui\"> Ennui<\/label>\n          <label class=\"pill\"><input type=\"checkbox\" name=\"triggers\" value=\"solitude\"> Solitude<\/label>\n          <div class=\"row\" style=\"margin-top:8px\">\n            <label class=\"pill\"><input type=\"checkbox\" id=\"trig-autre\" name=\"triggers\" value=\"autre\"> Autre<\/label>\n            <input type=\"text\" id=\"trig-autre-txt\" placeholder=\"Pr\u00e9ciser\u2026\" style=\"flex:1;min-width:220px\">\n          <\/div>\n        <\/div>\n        <div>\n          <span class=\"label\">Apr\u00e8s avoir mang\u00e9 sucr\u00e9, je me sens :<\/span>\n          <label class=\"pill\"><input type=\"checkbox\" name=\"ressenti\" value=\"paix\"> En paix<\/label>\n          <label class=\"pill\"><input type=\"checkbox\" name=\"ressenti\" value=\"coupable\"> Coupable<\/label>\n          <label class=\"pill\"><input type=\"checkbox\" name=\"ressenti\" value=\"sans-energie\"> Sans \u00e9nergie<\/label>\n          <label class=\"pill\"><input type=\"checkbox\" name=\"ressenti\" value=\"reconforte\"> R\u00e9confort\u00e9\u00b7e<\/label>\n          <div class=\"row\" style=\"margin-top:8px\">\n            <label class=\"pill\"><input type=\"checkbox\" id=\"ress-autre\" name=\"ressenti\" value=\"autre\"> Autre<\/label>\n            <input type=\"text\" id=\"ress-autre-txt\" placeholder=\"Pr\u00e9ciser\u2026\" style=\"flex:1;min-width:220px\">\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/section>\n\n    <!-- Section 4 : Signaux corporels -->\n    <section class=\"card\" id=\"sec-signaux\">\n      <h2>4) Mes signaux corporels (coche si pr\u00e9sent r\u00e9guli\u00e8rement)<\/h2>\n      <div class=\"row\" style=\"gap:10px\">\n        <label class=\"pill\"><input type=\"checkbox\" name=\"signaux\" value=\"brouillard\"> Brouillard mental<\/label>\n        <label class=\"pill\"><input type=\"checkbox\" name=\"signaux\" value=\"irritable\"> Irritabilit\u00e9 soudaine<\/label>\n        <label class=\"pill\"><input type=\"checkbox\" name=\"signaux\" value=\"fatigue-repas\"> Fatigue apr\u00e8s repas<\/label>\n        <label class=\"pill\"><input type=\"checkbox\" name=\"signaux\" value=\"reveil\"> R\u00e9veil nocturne (2\u20133h)<\/label>\n        <label class=\"pill\"><input type=\"checkbox\" name=\"signaux\" value=\"sucre-matin\"> Besoin de sucre au r\u00e9veil<\/label>\n        <label class=\"pill\"><input type=\"checkbox\" name=\"signaux\" value=\"jambes\"> Jambes \u201cmolles\u201d \/ faibles<\/label>\n      <\/div>\n    <\/section>\n\n    <!-- Section 5 : Intention -->\n    <section class=\"card\" id=\"sec-intention\">\n      <h2>5) Mon intention pour les 21 jours<\/h2>\n      <textarea id=\"intention\" placeholder=\"\u00ab Je commence ce protocole parce que\u2026 \u00bb\"><\/textarea>\n      <p class=\"disclaimer\">Conseil bien-\u00eatre \u00e9ducatif. Ne remplace pas un avis m\u00e9dical. En cas de condition m\u00e9dicale (ex. diab\u00e8te), suis ton traitement et l\u2019avis de ton professionnel de sant\u00e9.<\/p>\n    <\/section>\n\n    <!-- Section 6 : Auto-perception -->\n    <section class=\"card\" id=\"sec-auto\">\n      <h2>6) Score glyc\u00e9mique initial \u2013 Auto\u2011perception (1 = tr\u00e8s faible, 5 = tr\u00e8s \u00e9lev\u00e9)<\/h2>\n      <div class=\"grid\">\n        <div>\n          <label for=\"auto-stab\">Stabilit\u00e9 de mes repas<\/label>\n          <select id=\"auto-stab\">\n            <option value=\"3\">3<\/option><option value=\"1\">1<\/option><option value=\"2\">2<\/option>\n            <option value=\"4\">4<\/option><option value=\"5\">5<\/option>\n          <\/select>\n        <\/div>\n        <div>\n          <label for=\"auto-emo\">\u00c9motions g\u00e9r\u00e9es sans sucre<\/label>\n          <select id=\"auto-emo\">\n            <option value=\"3\">3<\/option><option value=\"1\">1<\/option><option value=\"2\">2<\/option>\n            <option value=\"4\">4<\/option><option value=\"5\">5<\/option>\n          <\/select>\n        <\/div>\n        <div>\n          <label for=\"auto-pres\">Pr\u00e9sence au moment des repas<\/label>\n          <select id=\"auto-pres\">\n            <option value=\"3\">3<\/option><option value=\"1\">1<\/option><option value=\"2\">2<\/option>\n            <option value=\"4\">4<\/option><option value=\"5\">5<\/option>\n          <\/select>\n        <\/div>\n        <div>\n          <label for=\"auto-conf\">Confiance dans ma capacit\u00e9 \u00e0 changer<\/label>\n          <select id=\"auto-conf\">\n            <option value=\"3\">3<\/option><option value=\"1\">1<\/option><option value=\"2\">2<\/option>\n            <option value=\"4\">4<\/option><option value=\"5\">5<\/option>\n          <\/select>\n        <\/div>\n      <\/div>\n      <p class=\"help\">Ce score refl\u00e8te ton ressenti subjectif. Un second score (facteurs objectifs) est calcul\u00e9 automatiquement ci\u2011dessous.<\/p>\n    <\/section>\n\n    <!-- R\u00e9sultats -->\n    <section class=\"card\" id=\"sec-result\">\n      <h2>R\u00e9sultats &#038; Interpr\u00e9tation<\/h2>\n\n      <div class=\"kpi\">\n        <div class=\"box\">\n          <div class=\"muted\">Score Facteurs (objectif)<\/div>\n          <div class=\"value\" id=\"kpi-facteurs\">\u2014<\/div>\n          <div class=\"bar\" aria-hidden=\"true\"><span id=\"bar-facteurs\"><\/span><\/div>\n        <\/div>\n        <div class=\"box\">\n          <div class=\"muted\">Score Auto\u2011perception<\/div>\n          <div class=\"value\" id=\"kpi-auto\">\u2014<\/div>\n          <div class=\"bar\" aria-hidden=\"true\"><span id=\"bar-auto\"><\/span><\/div>\n        <\/div>\n        <div class=\"box\">\n          <div class=\"muted\">Score Global<\/div>\n          <div class=\"value\" id=\"kpi-global\">\u2014<\/div>\n          <div class=\"bar\" aria-hidden=\"true\"><span id=\"bar-global\"><\/span><\/div>\n          <div class=\"help\">Pond\u00e9ration : 65% Facteurs + 35% Auto\u2011perception<\/div>\n        <\/div>\n      <\/div>\n\n      <div style=\"margin-top:12px\">\n        <span class=\"score-chip\">Sommeil : <b id=\"chip-sommeil\">\u2014<\/b>\/20<\/span>\n        <span class=\"score-chip\">\u00c9nergie : <b id=\"chip-energie\">\u2014<\/b>\/20<\/span>\n        <span class=\"score-chip\">\u00c9quilibre repas : <b id=\"chip-equilibre\">\u2014<\/b>\/20<\/span>\n        <span class=\"score-chip\">Fringales : <b id=\"chip-fringales\">\u2014<\/b>\/20<\/span>\n        <span class=\"score-chip\">Somnolence post\u2011repas : <b id=\"chip-somno\">\u2014<\/b>\/10<\/span>\n        <span class=\"score-chip\">Grignotage : <b id=\"chip-grigno\">\u2014<\/b>\/10<\/span>\n        <span class=\"score-chip\">D\u00e9clencheurs \u00e9motionnels : <b id=\"chip-trig\">\u2014<\/b>\/20<\/span>\n        <span class=\"score-chip\">Signaux corporels : <b id=\"chip-sig\">\u2014<\/b>\/20<\/span>\n        <span class=\"score-chip\">Ressenti apr\u00e8s sucr\u00e9 : <b id=\"chip-ress\">\u2014<\/b>\/10<\/span>\n      <\/div>\n\n      <div id=\"interpretation\" style=\"margin-top:14px\"><\/div>\n\n      <div class=\"card\" style=\"margin-top:14px\">\n        <details>\n          <summary>Voir la m\u00e9thode de calcul (transparence)<\/summary>\n          <div class=\"help\" style=\"margin-top:8px\">\n            <ul>\n              <li><b>Section 1 \u2013 Physique (max 50)<\/b> : \u00c9nergie (0\u201310 \u2192 \u00d72), Sommeil (0\u201310 \u2192 \u00d72), Somnolence post\u2011repas (Non=10, Oui=0).<\/li>\n              <li><b>Section 2 \u2013 Habitudes (max 50)<\/b> : Grignotage (Non=10, Oui=0) ; \u00c9quilibre repas (Souvent=20, Parfois=10, Rarement=0) ; Fringales\/jour (0=20, 1=16, 2=12, 3=8, 4=4, \u22655=0).<\/li>\n              <li><b>Section 3 \u2013 \u00c9motions &#038; signaux (max 50)<\/b> : D\u00e9clencheurs (20 \u2212 4\u00d7nombre, min 0) ; Signaux corporels (20 \u2212 4\u00d7nombre, min 0) ; Ressenti apr\u00e8s sucr\u00e9 (En paix=+10, R\u00e9confort\u00e9\u00b7e=+5, Coupable=0, Sans \u00e9nergie=0, Autre=+5 si pr\u00e9cis\u00e9 ; max 10).<\/li>\n              <li><b>Score Facteurs<\/b> = (Section1+Section2+Section3) \/ 150 \u00d7 100.<\/li>\n              <li><b>Auto\u2011perception<\/b> = moyenne des 4 items (1\u20135) \u00d7 20.<\/li>\n              <li><b>Global<\/b> = 0,65\u00d7Facteurs + 0,35\u00d7Auto\u2011perception.<\/li>\n            <\/ul>\n          <\/div>\n        <\/details>\n      <\/div>\n    <\/section>\n\n  <\/div>\n\n  <!-- Actions -->\n  <div class=\"actions\">\n    <div class=\"inner\">\n      <div class=\"muted\">Tes r\u00e9ponses sont enregistr\u00e9es automatiquement sur <b>cet appareil<\/b> (localStorage).<\/div>\n      <div class=\"row\">\n        <button type=\"button\" onclick=\"window.print()\">Imprimer \/ PDF<\/button>\n        <button type=\"button\" id=\"reset\">Effacer les donn\u00e9es<\/button>\n        <button type=\"button\" class=\"primary\" id=\"recalc\">Recalculer maintenant<\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n\n<script>\n(function(){\n  const $ = (sel, root=document)=>root.querySelector(sel);\n  const $$ = (sel, root=document)=>Array.from(root.querySelectorAll(sel));\n\n  \/\/ --- Persistent keys\n  const KEY = \"psucre_fiche_v1\";\n\n  \/\/ Bind inputs\n  const inputs = $$(\"input, select, textarea\");\n\n  \/\/ Load stored data\n  try{\n    const raw = localStorage.getItem(KEY);\n    if(raw){\n      const data = JSON.parse(raw);\n      inputs.forEach(el=>{\n        const id = el.id || el.name || el.getAttribute(\"data-key\");\n        if(!id) return;\n        if(el.type===\"checkbox\" || el.type===\"radio\"){\n          if(Array.isArray(data[id])){\n            el.checked = data[id].includes(el.value);\n          }else if(typeof data[id] !== \"undefined\"){\n            el.checked = (data[id] === el.value);\n          }\n        }else{\n          if(typeof data[id] !== \"undefined\") el.value = data[id];\n        }\n      });\n    }\n  }catch(e){\/* ignore *\/}\n\n  \/\/ Save on change\n  function snapshot(){\n    const data = {};\n    inputs.forEach(el=>{\n      const id = el.id || el.name || el.getAttribute(\"data-key\");\n      if(!id) return;\n      if(el.type===\"checkbox\"){\n        if(!data[id]) data[id] = [];\n        if(el.checked) data[id].push(el.value);\n      }else if(el.type===\"radio\"){\n        if(el.checked) data[id] = el.value;\n      }else{\n        data[id] = el.value;\n      }\n    });\n    localStorage.setItem(KEY, JSON.stringify(data));\n  }\n  inputs.forEach(el=>el.addEventListener(\"input\",()=>{updateBubbles(); compute(); snapshot();}));\n  $(\"#recalc\").addEventListener(\"click\", ()=>{compute(); snapshot();});\n  $(\"#reset\").addEventListener(\"click\", ()=>{\n    if(confirm(\"Effacer toutes les r\u00e9ponses enregistr\u00e9es sur cet appareil ?\")){\n      localStorage.removeItem(KEY);\n      location.reload();\n    }\n  });\n\n  \/\/ Range bubbles\n  function updateBubbles(){\n    $$(\".range-wrap\").forEach(w=>{\n      const inp = $(\"input[type=range]\", w);\n      const bubble = $(\".range-bubble\", w);\n      if(!inp || !bubble) return;\n      const val = Number(inp.value);\n      bubble.textContent = `${val} \/ ${inp.max}`;\n      const pct = (val - inp.min) \/ (inp.max - inp.min);\n      const x = pct * (inp.offsetWidth - 16) + 8;\n      bubble.style.left = x + \"px\";\n    });\n  }\n  window.addEventListener(\"resize\", updateBubbles);\n\n  \/\/ Getters helper\n  function val(id){ const el = $(\"#\"+id); return el ? el.value : \"\"; }\n  function radios(name){ return ($(`input[name=${CSS.escape(name)}]:checked`)||{}).value || \"\"; }\n  function checks(name){ return $$(`input[name=${CSS.escape(name)}]:checked`).map(el=>el.value); }\n\n  \/\/ Compute scores\n  function compute(){\n    \/\/ Section 1\n    const energie = clamp(Number(val(\"energie\"))*2,0,20);\n    const sommeil = clamp(Number(val(\"sommeil\"))*2,0,20);\n    const somno = radios(\"somno\")===\"non\" ? 10 : 0;\n\n    \/\/ Section 2\n    const grigno = radios(\"grigno\")===\"non\" ? 10 : 0;\n    const eqMap = {souvent:20, parfois:10, rarement:0};\n    const eq = eqMap[radios(\"equilibre\")] ?? 0;\n    let fring = Number(val(\"fringales\")); if(isNaN(fring) || fring<0) fring = 0;\n    let fringScore = 0;\n    if(fring===0) fringScore=20;\n    else if(fring===1) fringScore=16;\n    else if(fring===2) fringScore=12;\n    else if(fring===3) fringScore=8;\n    else if(fring===4) fringScore=4;\n    else fringScore=0;\n\n    \/\/ Section 3\n    const trig = checks(\"triggers\");\n    const trigCount = trig.length;\n    const trigScore = Math.max(0, 20 - 4*trigCount);\n\n    const sig = checks(\"signaux\");\n    const sigCount = sig.length;\n    const sigScore = Math.max(0, 20 - 4*sigCount);\n\n    const ress = checks(\"ressenti\");\n    let ressScore = 0;\n    if(ress.includes(\"paix\")) ressScore += 10;\n    if(ress.includes(\"reconforte\")) ressScore += 5;\n    if(ress.includes(\"autre\")){\n      const txt = val(\"ress-autre-txt\").trim();\n      if(txt) ressScore += 5;\n    }\n    ressScore = Math.min(10, ressScore);\n\n    \/\/ Auto-perception\n    const autoVals = [\"auto-stab\",\"auto-emo\",\"auto-pres\",\"auto-conf\"].map(id=>Number(val(id))||0);\n    const auto = clamp(avg(autoVals)*20, 0, 100);\n\n    \/\/ Totaux sections\n    const s1 = energie + sommeil + somno; \/\/ \/50\n    const s2 = grigno + eq + fringScore;  \/\/ \/50\n    const s3 = trigScore + sigScore + ressScore; \/\/ \/50\n\n    const facteurs = clamp(((s1 + s2 + s3) \/ 150) * 100, 0, 100);\n    const global = Math.round(0.65*facteurs + 0.35*auto);\n\n    \/\/ UI chips\n    setText(\"chip-energie\", energie.toFixed(0));\n    setText(\"chip-sommeil\", sommeil.toFixed(0));\n    setText(\"chip-somno\", somno.toFixed(0));\n    setText(\"chip-grigno\", grigno.toFixed(0));\n    setText(\"chip-equilibre\", eq.toFixed(0));\n    setText(\"chip-fringales\", fringScore.toFixed(0));\n    setText(\"chip-trig\", trigScore.toFixed(0));\n    setText(\"chip-sig\", sigScore.toFixed(0));\n    setText(\"chip-ress\", ressScore.toFixed(0));\n\n    \/\/ KPI\n    setKPI(\"kpi-facteurs\",\"bar-facteurs\", Math.round(facteurs));\n    setKPI(\"kpi-auto\",\"bar-auto\", Math.round(auto));\n    setKPI(\"kpi-global\",\"bar-global\", global);\n\n    \/\/ Interpretation + recommandations\n    const cat = category(global);\n    $(\"#kpi-global\").insertAdjacentHTML(\"beforeend\", ` <span class=\"tag ${cat.cls}\">\u2022 ${cat.label}<\/span>`);\n    $(\"#interpretation\").innerHTML = buildAdvice({\n      global, facteurs, auto,\n      energie, sommeil, somno, grigno, eq, fringScore, trigScore, sigScore, ressScore\n    });\n  }\n\n  function setKPI(id, barId, val){\n    setText(id, String(val));\n    $(\"#\"+barId).style.width = Math.max(0, Math.min(val,100)) + \"%\";\n  }\n  function setText(id, txt){ const el = $(\"#\"+id); if(el) el.textContent = txt; }\n  function avg(arr){ return arr.reduce((a,b)=>a+b,0) \/ (arr.length||1) }\n  function clamp(v, min, max){ return Math.max(min, Math.min(max, v)) }\n\n  function category(score){\n    if(score>=80) return {label:\"Terrain stable\", cls:\"ok\"};\n    if(score>=60) return {label:\"Terrain modulable\", cls:\"ok\"};\n    if(score>=40) return {label:\"Terrain instable\", cls:\"warn\"};\n    return {label:\"Alerte douce\", cls:\"bad\"};\n  }\n\n  function buildAdvice(s){\n    const lines = [];\n    \/\/ Base message\n    if(s.global>=80){\n      lines.push(\"\ud83d\udc8e <b>Excellent d\u00e9part :<\/b> ta stabilit\u00e9 glyc\u00e9mique per\u00e7ue et objective est solide. Continue tes routines (marche post\u2011repas, repas structur\u00e9s) pour ancrer ces habitudes.\");\n    }else if(s.global>=60){\n      lines.push(\"\ud83c\udf3f <b>Bon potentiel :<\/b> quelques ajustements cibl\u00e9s suffiront \u00e0 lisser les pics et \u00e0 r\u00e9duire les envies.\");\n    }else if(s.global>=40){\n      lines.push(\"\ud83e\udded <b>Cap \u00e0 ajuster :<\/b> plusieurs facteurs p\u00e8sent sur ta stabilit\u00e9. Commence par 1\u20132 leviers simples ci\u2011dessous.\");\n    }else{\n      lines.push(\"\u2728 <b>Point d\u2019ancrage :<\/b> tu pars d\u2019un terrain sensible. Vise des micro\u2011victoires quotidiennes pour cr\u00e9er l\u2019\u00e9lan.\");\n    }\n\n    \/\/ Axe Sommeil\n    if(s.sommeil<10){\n      lines.push(\"\ud83d\ude34 <b>Sommeil<\/b> : priorise un couvre\u2011feu d\u2019\u00e9crans, une mini\u2011sieste (15\u201320 min) et une routine de coucher r\u00e9guli\u00e8re.\");\n    }\n    \/\/ Somnolence post\u2011repas\n    if(s.somno===0){\n      lines.push(\"\ud83d\udeb6 <b>Apr\u00e8s\u2011repas<\/b> : marche consciente 10\u201315 min dans les 30 minutes suivant le repas (c\u2019est l\u2019hypoglyc\u00e9miant le plus doux).\");\n    }\n    \/\/ \u00c9quilibre des repas\n    if(s.eq<=10){\n      lines.push(\"\ud83c\udf7d\ufe0f <b>Structure des repas<\/b> : compose chaque assiette avec <u>fibres + prot\u00e9ines + bonnes graisses<\/u> puis glucides (ordre de consommation).\");\n    }\n    \/\/ Fringales\n    if(s.fringScore<=12){\n      lines.push(\"\ud83c\udf6b <b>Fringales<\/b> : ajoute un snack intelligent (ol\u00e9gineux + boisson chaude) et hydrate\u2011toi 20 min avant les repas.\");\n    }\n    \/\/ Grignotage\n    if(s.grigno===0){\n      lines.push(\"\ud83e\udde9 <b>Grignotage<\/b> : planifie 1 collation rassasiante l\u2019apr\u00e8s\u2011midi pour couper la boucle \u00ab fatigue \u2192 sucre \u00bb.\");\n    }\n    \/\/ D\u00e9clencheurs \u00e9motionnels\n    if(s.trigScore<12){\n      lines.push(\"\ud83e\udec1 <b>Stress & \u00e9motions<\/b> : pratique la respiration 5\u20115\u20115 (5s\/5s\/5min) avant de manger sucr\u00e9, et note ce que tu ressens.\");\n    }\n    \/\/ Signaux corporels\n    if(s.sigScore<12){\n      lines.push(\"\ud83e\ude7a <b>Signaux du corps<\/b> : s\u2019ils persistent (fatigue post\u2011repas, r\u00e9veils nocturnes\u2026), parle\u2011en \u00e0 un professionnel de sant\u00e9.\");\n    }\n    \/\/ Ressenti apr\u00e8s sucr\u00e9\n    if(s.ressScore===0){\n      lines.push(\"\ud83d\udcdd <b>Ressenti sucr\u00e9<\/b> : exp\u00e9rimente 3 bouch\u00e9es en pleine conscience, <i>apr\u00e8s<\/i> un repas structur\u00e9, pour sortir de la culpabilit\u00e9.\");\n    }\n\n    \/\/ Recap chips text\n    return `\n      <div class=\"muted\" style=\"margin-bottom:6px\">Recommandations personnalis\u00e9es<\/div>\n      <ul style=\"margin:8px 0 0 18px; padding:0\">${lines.map(li=>`<li style=\"margin:6px 0\">${li}<\/li>`).join(\"\")}<\/ul>\n    `;\n  }\n\n  \/\/ Initialize\n  updateBubbles();\n  compute();\n})();\n<\/script>\n<\/body>\n<\/html>\n\n","protected":false},"excerpt":{"rendered":"<p>Fiche d\u2019Auto\u00e9valuation \u2013 Protocole Sucre Fiche d\u2019Auto\u00e9valuation \u2013 Protocole Sucre Mesure ton point de d\u00e9part, calcule automatiquement ton score, et re\u00e7ois des recommandations personnalis\u00e9es. 1) Mon \u00e9tat physique actuel \u00c9nergie quotidienne (0 = \u00e9puis\u00e9\u00b7e, 10 = plein\u00b7e d\u2019\u00e9nergie) 5 \/ 10 Qualit\u00e9 du sommeil (0 = tr\u00e8s mauvais, 10 = r\u00e9parateur) 6 \/ 10 Fr\u00e9quence [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"template":"","edd-categories":[],"edd-tags":[],"class_list":["post-1247","download","type-download","status-publish","hentry","edd-download"],"blocksy_meta":[],"aioseo_notices":[],"acf":[],"_links":{"self":[{"href":"https:\/\/protocole-csr.com\/index.php?rest_route=\/wp\/v2\/edd-downloads\/1247","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/protocole-csr.com\/index.php?rest_route=\/wp\/v2\/edd-downloads"}],"about":[{"href":"https:\/\/protocole-csr.com\/index.php?rest_route=\/wp\/v2\/types\/download"}],"author":[{"embeddable":true,"href":"https:\/\/protocole-csr.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"version-history":[{"count":1,"href":"https:\/\/protocole-csr.com\/index.php?rest_route=\/wp\/v2\/edd-downloads\/1247\/revisions"}],"predecessor-version":[{"id":1248,"href":"https:\/\/protocole-csr.com\/index.php?rest_route=\/wp\/v2\/edd-downloads\/1247\/revisions\/1248"}],"wp:attachment":[{"href":"https:\/\/protocole-csr.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1247"}],"wp:term":[{"taxonomy":"download_category","embeddable":true,"href":"https:\/\/protocole-csr.com\/index.php?rest_route=%2Fwp%2Fv2%2Fedd-categories&post=1247"},{"taxonomy":"download_tag","embeddable":true,"href":"https:\/\/protocole-csr.com\/index.php?rest_route=%2Fwp%2Fv2%2Fedd-tags&post=1247"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}