{"id":1282,"date":"2026-08-23T16:09:20","date_gmt":"2026-08-23T16:09:20","guid":{"rendered":"https:\/\/epinutrition.org\/?page_id=1282"},"modified":"2026-08-24T16:03:51","modified_gmt":"2026-08-24T16:03:51","slug":"epinutrition-menu-tools","status":"publish","type":"page","link":"https:\/\/epinutrition.org\/?page_id=1282","title":{"rendered":"EpiNutrition Menu Tools"},"content":{"rendered":"\n<h1 class=\"wp-block-heading has-text-align-center\">EpiNutrition\u2122 Menu Tools<\/h1>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\">Explore two interactive educational tools. Rate a meal using timing, food selection, and composition\u2014or create a personalized daily menu with recipes and estimated costs.<\/p>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\" style=\"font-size:14px\">These tools provide general nutrition education and do not replace individualized medical or dietary advice.<\/p>\n\n\n\n<section id=\"epi-meal-tool\" aria-labelledby=\"epi-meal-title\">\n  <style>\n    #epi-meal-tool{--epi-blue:#5981b1;--epi-pale:#f3f7fb;--epi-ink:#243447;--epi-line:#d8e2ec;max-width:1100px;margin:54px auto 44px;padding:32px;border-radius:14px;background:var(--epi-pale);color:var(--epi-ink);box-sizing:border-box}\n    #epi-meal-tool *{box-sizing:border-box}\n    #epi-meal-tool h2,#epi-meal-tool h3,#epi-meal-tool p{margin-top:0}\n    #epi-meal-tool h2{text-align:center;color:var(--epi-blue);margin-bottom:8px}\n    #epi-meal-tool .epi-lead{text-align:center;max-width:760px;margin:0 auto 28px}\n    #epi-meal-tool .epi-grid{display:grid;grid-template-columns:1fr 1.45fr;gap:24px}\n    #epi-meal-tool .epi-panel{background:#fff;border:1px solid var(--epi-line);border-radius:10px;padding:22px}\n    #epi-meal-tool fieldset{border:0;padding:0;margin:0 0 22px}\n    #epi-meal-tool legend{font-weight:700;margin-bottom:11px}\n    #epi-meal-tool .epi-timing{display:grid;gap:9px}\n    #epi-meal-tool .epi-choice{display:flex;align-items:flex-start;gap:9px;padding:9px 11px;border:1px solid var(--epi-line);border-radius:8px;background:#fff;cursor:pointer}\n    #epi-meal-tool .epi-choice:has(input:checked){border-color:var(--epi-blue);background:#eef5fb}\n    #epi-meal-tool input{margin-top:4px;accent-color:var(--epi-blue)}\n    #epi-meal-tool .epi-foods{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}\n    #epi-meal-tool .epi-result{display:grid;grid-template-columns:92px 1fr;gap:18px;align-items:center;margin-top:22px;padding:20px;border-radius:10px;background:#fff;border:1px solid var(--epi-line)}\n    #epi-meal-tool .epi-composition{margin-top:24px}\n    #epi-meal-tool .epi-composition h3{margin-bottom:6px;color:var(--epi-blue)}\n    #epi-meal-tool .epi-composition>p{margin-bottom:16px}\n    #epi-meal-tool .epi-components{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}\n    #epi-meal-tool .epi-component{padding:12px;border:1px solid var(--epi-line);border-radius:8px;background:#fff}\n    #epi-meal-tool .epi-component strong{display:block;color:var(--epi-blue);margin-bottom:3px}\n    #epi-meal-tool .epi-score{width:86px;height:86px;border-radius:50%;display:grid;place-items:center;background:var(--epi-blue);color:#fff;font-size:42px;font-weight:700;line-height:1}\n    #epi-meal-tool .epi-result h3{margin-bottom:4px;color:var(--epi-blue)}\n    #epi-meal-tool .epi-result p{margin-bottom:0}\n    #epi-meal-tool .epi-sub{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:16px}\n    #epi-meal-tool .epi-sub div{text-align:center;padding:9px;border-radius:8px;background:#fff;border:1px solid var(--epi-line)}\n    #epi-meal-tool .epi-sub strong{display:block;color:var(--epi-blue);font-size:22px}\n    #epi-meal-tool .epi-note{font-size:14px;text-align:center;margin:20px 0 0;color:#526273}\n    #epi-meal-tool .epi-learn{text-align:center;margin:22px 0 0}\n    #epi-meal-tool .epi-learn a{display:inline-block;padding:12px 24px;border-radius:44px;background:var(--epi-blue);color:#fff;text-decoration:none;font-weight:700}\n    #epi-meal-tool .epi-learn a:hover,#epi-meal-tool .epi-learn a:focus{background:#466b95;color:#fff}\n    @media(max-width:760px){#epi-meal-tool{padding:22px 16px;margin:34px auto}#epi-meal-tool .epi-grid{grid-template-columns:1fr}#epi-meal-tool .epi-foods{grid-template-columns:1fr}#epi-meal-tool .epi-components{grid-template-columns:1fr 1fr}#epi-meal-tool .epi-result{grid-template-columns:1fr;text-align:center}#epi-meal-tool .epi-score{margin:auto}#epi-meal-tool .epi-sub{grid-template-columns:1fr}}\n  <\/style>\n\n  <h2 id=\"epi-meal-title\">Try the EpiNutrition\u2122 Meal Rating<\/h2>\n  <p class=\"epi-lead\">Explore how meal timing, food choices, and dietary variety work together. Select what best describes a meal to receive an educational rating from 1 to 4.<\/p>\n\n  <div class=\"epi-result\" role=\"status\" aria-live=\"polite\">\n    <div class=\"epi-score\" id=\"epi-score\">\u2013<\/div>\n    <div>\n      <h3 id=\"epi-label\">Build a meal to see its rating<\/h3>\n      <p id=\"epi-guidance\">Choose a time and at least one food group below.<\/p>\n      <div class=\"epi-sub\" aria-label=\"Component scores\">\n        <div>Timing<strong id=\"epi-time-score\">\u2013<\/strong><\/div>\n        <div>Foods<strong id=\"epi-food-score\">\u2013<\/strong><\/div>\n        <div>Composition<strong id=\"epi-composition-score\">\u2013<\/strong><\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <div class=\"epi-grid\">\n    <div class=\"epi-panel\">\n      <fieldset>\n        <legend>1. When is the meal eaten?<\/legend>\n        <div class=\"epi-timing\">\n          <label class=\"epi-choice\"><input type=\"radio\" name=\"epi-time\" value=\"4\"> <span>Daytime, consistent, and well before sleep<\/span><\/label>\n          <label class=\"epi-choice\"><input type=\"radio\" name=\"epi-time\" value=\"3\"> <span>Daytime or early evening<\/span><\/label>\n          <label class=\"epi-choice\"><input type=\"radio\" name=\"epi-time\" value=\"2\"> <span>Late, irregular, or close to sleep<\/span><\/label>\n          <label class=\"epi-choice\"><input type=\"radio\" name=\"epi-time\" value=\"1\"> <span>Large meal during the biological night<\/span><\/label>\n        <\/div>\n      <\/fieldset>\n    <\/div>\n\n    <div class=\"epi-panel\">\n      <fieldset>\n        <legend>2. What does the meal contain?<\/legend>\n        <div class=\"epi-foods\">\n          <label class=\"epi-choice\"><input type=\"checkbox\" data-plant=\"1\" data-positive=\"1\"> <span>Vegetables<\/span><\/label>\n          <label class=\"epi-choice\"><input type=\"checkbox\" data-plant=\"1\" data-positive=\"1\"> <span>Fruit<\/span><\/label>\n          <label class=\"epi-choice\"><input type=\"checkbox\" data-plant=\"1\" data-positive=\"1\" data-protein=\"1\"> <span>Beans, lentils, or peas<\/span><\/label>\n          <label class=\"epi-choice\"><input type=\"checkbox\" data-plant=\"1\" data-positive=\"1\"> <span>Whole grains<\/span><\/label>\n          <label class=\"epi-choice\"><input type=\"checkbox\" data-plant=\"1\" data-positive=\"1\" data-fat=\"1\"> <span>Nuts or seeds<\/span><\/label>\n          <label class=\"epi-choice\"><input type=\"checkbox\" data-positive=\"1\" data-fat=\"1\"> <span>Olive oil or avocado<\/span><\/label>\n          <label class=\"epi-choice\"><input type=\"checkbox\" data-protein=\"1\"> <span>Fish, poultry, eggs, or dairy<\/span><\/label>\n          <label class=\"epi-choice\"><input type=\"checkbox\" data-negative=\"1\"> <span>Refined grains or fried foods<\/span><\/label>\n          <label class=\"epi-choice\"><input type=\"checkbox\" data-negative=\"1\"> <span>Processed meat<\/span><\/label>\n          <label class=\"epi-choice\"><input type=\"checkbox\" data-negative=\"1\"> <span>Sweets or sugary drinks<\/span><\/label>\n        <\/div>\n      <\/fieldset>\n    <\/div>\n  <\/div>\n\n  <div class=\"epi-panel epi-composition\">\n    <h3>3. Meal composition<\/h3>\n    <p>This score is calculated automatically from the foods selected above.<\/p>\n    <div class=\"epi-components\" aria-live=\"polite\">\n      <div class=\"epi-component\"><strong>Plant variety<\/strong><span id=\"epi-plant-status\">No plant groups selected<\/span><\/div>\n      <div class=\"epi-component\"><strong>Protein<\/strong><span id=\"epi-protein-status\">Not yet selected<\/span><\/div>\n      <div class=\"epi-component\"><strong>Healthy fat<\/strong><span id=\"epi-fat-status\">Not yet selected<\/span><\/div>\n      <div class=\"epi-component\"><strong>Refined items<\/strong><span id=\"epi-negative-status\">None selected<\/span><\/div>\n    <\/div>\n  <\/div>\n\n  <p class=\"epi-learn\"><a href=\"https:\/\/epinutrition.org\/?page_id=1272\">How This Rating System Is Calculated<\/a><\/p>\n\n  <p class=\"epi-note\">This is an educational comparison tool\u2014not a clinical score, individualized dietary prescription, or prediction of health outcomes.<\/p>\n\n  <script>\n  (function(){\n    var root=document.getElementById('epi-meal-tool');\n    if(!root){return;}\n    var timeInputs=Array.prototype.slice.call(root.querySelectorAll('input[name=\"epi-time\"]'));\n    var foodInputs=Array.prototype.slice.call(root.querySelectorAll('input[type=\"checkbox\"]'));\n    var scoreEl=root.querySelector('#epi-score');\n    var labelEl=root.querySelector('#epi-label');\n    var guidanceEl=root.querySelector('#epi-guidance');\n    var timeEl=root.querySelector('#epi-time-score');\n    var foodEl=root.querySelector('#epi-food-score');\n    var compositionEl=root.querySelector('#epi-composition-score');\n    var plantStatus=root.querySelector('#epi-plant-status');\n    var proteinStatus=root.querySelector('#epi-protein-status');\n    var fatStatus=root.querySelector('#epi-fat-status');\n    var negativeStatus=root.querySelector('#epi-negative-status');\n    var labels={1:'Limited EpiNutrition Alignment',2:'Partial EpiNutrition Alignment',3:'Good EpiNutrition Alignment',4:'Strong EpiNutrition Alignment'};\n\n    function checked(list){return list.filter(function(item){return item.checked;});}\n    function countData(list,key){return list.filter(function(item){return item.dataset[key]==='1';}).length;}\n\n    function update(){\n      var selectedTime=checked(timeInputs)[0];\n      var selectedFoods=checked(foodInputs);\n      var plants=countData(selectedFoods,'plant');\n      var negative=countData(selectedFoods,'negative');\n      var hasProtein=countData(selectedFoods,'protein')>0;\n      var hasFat=countData(selectedFoods,'fat')>0;\n      plantStatus.textContent=plants===0?'No plant groups selected':plants+(plants===1?' plant group':' plant groups');\n      proteinStatus.textContent=hasProtein?'Included':'Not yet selected';\n      fatStatus.textContent=hasFat?'Included':'Not yet selected';\n      negativeStatus.textContent=negative===0?'None selected':negative+(negative===1?' selected':' selected');\n      if(!selectedTime||selectedFoods.length===0){\n        scoreEl.textContent='\u2013';labelEl.textContent='Build a meal to see its rating';guidanceEl.textContent='Choose a time and at least one food group below.';\n        timeEl.textContent=selectedTime?selectedTime.value:'\u2013';foodEl.textContent='\u2013';compositionEl.textContent='\u2013';return;\n      }\n\n      var timing=Number(selectedTime.value);\n      var positive=countData(selectedFoods,'positive');\n      var foods=1;\n      if(positive>=4&&negative===0){foods=4;}\n      else if(positive>=2&&negative<=1){foods=3;}\n      else if(positive>=1){foods=2;}\n      if(negative>=2&&positive<3){foods=Math.min(foods,2);}\n\n      var composition=1;\n      if(plants>=3&&hasProtein&&hasFat){composition=4;}\n      else if(plants>=2&&hasProtein){composition=3;}\n      else if(selectedFoods.length>=2||plants>=1){composition=2;}\n\n      var overall=Math.round((timing+(2*foods)+(2*composition))\/5);\n      if(overall===4&&!(timing>=3&&foods===4&&composition===4)){overall=3;}\n      var guidance='The meal is generally well aligned. Consider one additional plant-food group for greater variety.';\n      if(overall===4){guidance='This meal combines strong food quality, plant diversity, balance, and supportive timing.';}\n      else if(negative>=2){guidance='Consider replacing one refined or highly processed item with a fiber-rich whole food.';}\n      else if(plants<2){guidance='Add another plant-food group\u2014such as vegetables, beans, whole grains, fruit, nuts, or seeds.';}\n      else if(!hasProtein){guidance='Add a protein source, such as beans, lentils, fish, poultry, eggs, or dairy.';}\n      else if(timing<3){guidance='When practical, consider an earlier or lighter meal farther from the usual sleep period.';}\n\n      scoreEl.textContent=String(overall);labelEl.textContent=labels[overall];guidanceEl.textContent=guidance;\n      timeEl.textContent=String(timing);foodEl.textContent=String(foods);compositionEl.textContent=String(composition);\n    }\n    timeInputs.concat(foodInputs).forEach(function(input){input.addEventListener('change',update);});\n    update();\n  }());\n  <\/script>\n<\/section>\n\n\n\n<section id=\"epi-menu-builder\" aria-labelledby=\"epi-menu-title\">\n<style>\n#epi-menu-builder{--blue:#5981b1;--dark:#29435f;--pale:#f3f7fb;--line:#d8e2ec;--green:#367a55;max-width:1100px;margin:44px auto;padding:32px;border-radius:14px;background:var(--pale);color:#243447;box-sizing:border-box}\n#epi-menu-builder *{box-sizing:border-box}#epi-menu-builder h2,#epi-menu-builder h3,#epi-menu-builder p{margin-top:0}\n#epi-menu-builder h2{text-align:center;color:var(--blue);margin-bottom:8px}#epi-menu-builder .emb-lead{text-align:center;max-width:780px;margin:0 auto 25px}\n#epi-menu-builder .emb-panel{background:#fff;border:1px solid var(--line);border-radius:11px;padding:22px;margin-top:18px}\n#epi-menu-builder fieldset{border:0;padding:0;margin:0 0 20px}#epi-menu-builder legend{font-weight:700;margin-bottom:10px}\n#epi-menu-builder .emb-options{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}\n#epi-menu-builder .emb-meals{grid-template-columns:repeat(3,minmax(0,1fr))}\n#epi-menu-builder .emb-choice{position:relative;display:block;padding:13px 10px;border:1px solid var(--line);border-radius:9px;text-align:center;cursor:pointer;background:#fff;font-weight:600}\n#epi-menu-builder .emb-choice:has(input:checked){border-color:var(--blue);background:#eaf3fb;box-shadow:0 0 0 2px rgba(89,129,177,.12)}\n#epi-menu-builder .emb-choice input{position:absolute;opacity:0;pointer-events:none}.emb-choice small{display:block;font-weight:400;margin-top:3px;color:#526273}\n#epi-menu-builder .emb-controls{display:grid;grid-template-columns:1fr;gap:14px}.emb-field label{display:block;font-weight:700;margin-bottom:6px}\n#epi-menu-builder select,#epi-menu-builder input[type=number]{width:100%;padding:11px;border:1px solid var(--line);border-radius:8px;background:#fff;font-size:16px}\n#epi-menu-builder button{border:0;border-radius:44px;padding:12px 24px;background:var(--blue);color:#fff;font-weight:700;font-size:16px;cursor:pointer}\n#epi-menu-builder button:hover,#epi-menu-builder button:focus{background:#466b95}.emb-action{text-align:center;margin-top:18px}\n#epi-menu-builder .emb-status{text-align:center;margin:16px 0 0;font-weight:600;color:var(--dark)}\n#epi-menu-builder .emb-results{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:20px}\n#epi-menu-builder .emb-card{background:#fff;border:1px solid var(--line);border-radius:11px;padding:19px;display:flex;flex-direction:column;gap:8px}\n#epi-menu-builder .emb-card h3{color:var(--blue);margin:0}.emb-card p{margin:0}.emb-meta{font-size:14px;color:#526273}.emb-badge{display:inline-block;background:#eef5fb;color:var(--dark);padding:4px 9px;border-radius:99px;font-size:13px;font-weight:700;margin-right:5px}\n#epi-menu-builder .emb-card button{margin-top:auto;align-self:flex-start;padding:9px 18px}.emb-detail{margin-top:22px;background:#fff;border:2px solid var(--blue);border-radius:12px;padding:24px}\n#epi-menu-builder .emb-detail[hidden],#epi-menu-builder .emb-results[hidden]{display:none}.emb-detail-head{display:flex;justify-content:space-between;gap:18px;align-items:flex-start}.emb-price{font-size:24px;font-weight:700;color:var(--green);white-space:nowrap}\n#epi-menu-builder .emb-cols{display:grid;grid-template-columns:1fr 1fr;gap:24px}.emb-detail li{margin-bottom:7px}.emb-note{font-size:14px;color:#526273;margin:18px 0 0}.emb-explain{padding:14px;border-radius:8px;background:#eef5fb;margin-top:14px}\n#epi-menu-builder .emb-progress{background:#fff;border:1px solid var(--line);border-radius:11px;padding:22px;margin:20px 0}.emb-progress h3{text-align:center;color:var(--blue);margin-bottom:6px}.emb-progress-lead{text-align:center;color:#526273;margin-bottom:16px}\n#epi-menu-builder .emb-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}.emb-stat{text-align:center;padding:13px 8px;border-radius:9px;background:#eef5fb}.emb-stat strong{display:block;font-size:26px;color:var(--dark)}.emb-stat span{font-size:13px;color:#526273}\n#epi-menu-builder .emb-recent{margin:16px 0 0;padding:0;list-style:none}.emb-recent li{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid var(--line)}.emb-recent li:last-child{border-bottom:0}.emb-empty{text-align:center;color:#526273}\n#epi-menu-builder .emb-secondary{background:#fff!important;color:var(--blue)!important;border:1px solid var(--blue)!important}.emb-secondary:hover,.emb-secondary:focus{background:#eef5fb!important}.emb-recorded{background:var(--green)!important}.emb-device-note{text-align:center;font-size:13px;color:#526273;margin:12px 0 0}.emb-progress-actions{text-align:center;margin-top:12px}.emb-progress-actions button{padding:8px 16px;font-size:14px}\n@media(max-width:760px){#epi-menu-builder{padding:22px 16px;margin:32px auto}.emb-options,#epi-menu-builder .emb-meals,#epi-menu-builder .emb-results,#epi-menu-builder .emb-controls,#epi-menu-builder .emb-cols{grid-template-columns:1fr}.emb-stats{grid-template-columns:1fr 1fr}.emb-detail-head{display:block}.emb-price{margin-bottom:12px}.emb-recent li{display:block}}\n<\/style>\n<h2 id=\"epi-menu-title\">Create an EpiNutrition\u2122 Menu<\/h2>\n<p class=\"emb-lead\">Choose a meal and a target quality rating. We\u2019ll offer four menus, then provide the recipe and estimated cost for the one you select.<\/p>\n<section class=\"emb-progress\" aria-labelledby=\"emb-progress-title\">\n<h3 id=\"emb-progress-title\">My EpiNutrition Progress<\/h3>\n<p class=\"emb-progress-lead\">Record meals you actually eat and follow your accomplishments over time.<\/p>\n<div class=\"emb-stats\">\n<div class=\"emb-stat\"><strong id=\"emb-total-points\">0<\/strong><span>Total points<\/span><\/div>\n<div class=\"emb-stat\"><strong id=\"emb-meals-recorded\">0<\/strong><span>Meals recorded<\/span><\/div>\n<div class=\"emb-stat\"><strong id=\"emb-average-rating\">\u2013<\/strong><span>Average rating<\/span><\/div>\n<div class=\"emb-stat\"><strong id=\"emb-streak\">0<\/strong><span>Day streak<\/span><\/div>\n<\/div>\n<h3 style=\"text-align:left;margin-top:18px\">Recent meals<\/h3><ul class=\"emb-recent\" id=\"emb-recent\"><li class=\"emb-empty\">No meals recorded on this device yet.<\/li><\/ul>\n<div class=\"emb-progress-actions\"><button type=\"button\" class=\"emb-secondary\" id=\"emb-clear\">Clear My Device History<\/button><\/div>\n<p class=\"emb-device-note\">Your progress is stored only in this browser on this device. It is not sent to EpiNutrition.org and will not follow you to another browser or device.<\/p>\n<\/section>\n<div class=\"emb-panel\">\n<fieldset><legend>1. Choose a meal<\/legend><div class=\"emb-options emb-meals\">\n<label class=\"emb-choice\"><input type=\"radio\" name=\"emb-meal\" value=\"breakfast\"><span>Breakfast<\/span><\/label>\n<label class=\"emb-choice\"><input type=\"radio\" name=\"emb-meal\" value=\"lunch\"><span>Lunch<\/span><\/label>\n<label class=\"emb-choice\"><input type=\"radio\" name=\"emb-meal\" value=\"dinner\"><span>Dinner<\/span><\/label>\n<\/div><\/fieldset>\n<fieldset><legend>2. Choose the target quality<\/legend><div class=\"emb-options\">\n<label class=\"emb-choice\"><input type=\"radio\" name=\"emb-rating\" value=\"1\"><span>1 \u00b7 Limited<\/span><small>Occasional choice<\/small><\/label>\n<label class=\"emb-choice\"><input type=\"radio\" name=\"emb-rating\" value=\"2\"><span>2 \u00b7 Developing<\/span><small>One positive step<\/small><\/label>\n<label class=\"emb-choice\"><input type=\"radio\" name=\"emb-rating\" value=\"3\"><span>3 \u00b7 Strong<\/span><small>Balanced and varied<\/small><\/label>\n<label class=\"emb-choice\"><input type=\"radio\" name=\"emb-rating\" value=\"4\"><span>4 \u00b7 Best<\/span><small>Whole-food emphasis<\/small><\/label>\n<\/div><\/fieldset>\n<div class=\"emb-controls\"><div class=\"emb-field\"><label for=\"emb-servings\">3. Number of servings<\/label><input id=\"emb-servings\" type=\"number\" min=\"1\" max=\"8\" value=\"1\"><\/div><\/div>\n<div class=\"emb-action\"><button type=\"button\" id=\"emb-generate\">Generate Four Menu Suggestions<\/button><\/div><p class=\"emb-status\" id=\"emb-status\" aria-live=\"polite\"><\/p>\n<\/div>\n<div class=\"emb-results\" id=\"emb-results\" hidden aria-live=\"polite\"><\/div>\n<article class=\"emb-detail\" id=\"emb-detail\" hidden aria-live=\"polite\"><\/article>\n<p class=\"emb-note\">Costs are educational estimates based on typical U.S. grocery prices and vary by retailer, location, season, brand, and package size. Confirm all ingredients for allergies. This tool provides general nutrition education, not individualized medical advice.<\/p>\n<script>\n(function(){\nvar $=function(s){return document.querySelector('#epi-menu-builder '+s)};\nfunction M(name,desc,prep,cost,diet,ingredients,steps){return{name:name,desc:desc,prep:prep,cost:cost,diet:diet,ingredients:ingredients,steps:steps}}\nvar D={\nbreakfast:{\n1:[\nM('Sweetened Cereal Breakfast','Sweetened cereal with milk and fruit drink.',5,2.10,'vegetarian',['1\u00bd cups sweetened cereal','1 cup milk','1 cup fruit drink'],['Pour cereal and milk into a bowl.','Serve with the fruit drink.']),\nM('Sausage Biscuit Plate','Sausage biscuit with hash browns.',15,3.45,'any',['1 sausage biscuit','1 cup frozen hash browns','1 teaspoon oil'],['Heat the sausage biscuit.','Brown hash browns in oil and serve.']),\nM('Pastry and Flavored Yogurt','Breakfast pastry with sweetened yogurt.',3,2.85,'vegetarian',['1 breakfast pastry','1 container flavored yogurt'],['Place the pastry and yogurt on a plate.','Serve immediately.']),\nM('White Toast and Bacon','White toast with bacon and jam.',12,3.20,'any',['2 slices white bread','3 slices bacon','1 tablespoon jam'],['Cook bacon until done.','Toast bread, add jam, and serve.'])],\n2:[\nM('Cereal with Fresh Banana','Whole-grain cereal, milk, and banana.',5,2.25,'vegetarian',['1\u00bd cups whole-grain cereal','1 cup milk','1 banana'],['Slice the banana.','Combine cereal, milk, and banana.']),\nM('Egg and Toast Breakfast','Egg, whole-grain toast, and orange.',10,2.70,'vegetarian',['2 eggs','1 slice whole-grain bread','1 orange'],['Cook eggs to preference.','Toast bread and serve with the orange.']),\nM('Peanut Butter Banana Toast','Whole-grain toast with peanut butter and banana.',6,1.95,'vegan',['2 slices whole-grain bread','2 tablespoons peanut butter','1 banana'],['Toast the bread.','Spread with peanut butter and top with banana.']),\nM('Yogurt Oat Cup','Plain yogurt with oats and apple.',5,2.40,'vegetarian',['1 cup plain yogurt','\u2153 cup rolled oats','1 apple'],['Dice the apple.','Combine yogurt, oats, and apple.'])],\n3:[\nM('Berry Walnut Oatmeal','Oats with berries, walnuts, and cinnamon.',12,2.35,'vegan',['\u00bd cup rolled oats','1 cup water','\u00be cup berries','2 tablespoons walnuts'],['Simmer oats in water.','Top with berries, walnuts, and cinnamon.']),\nM('Spinach Egg Toast','Eggs with spinach, tomato, and whole-grain toast.',14,3.10,'vegetarian',['2 eggs','1 cup spinach','\u00bd tomato','1 slice whole-grain bread'],['Saut\u00e9 spinach and tomato.','Add eggs, cook gently, and serve with toast.']),\nM('Apple Chia Overnight Oats','Oats, apple, chia, and unsweetened milk.',5,2.20,'vegan',['\u00bd cup rolled oats','\u00be cup unsweetened plant milk','1 apple','1 tablespoon chia seeds'],['Combine ingredients in a covered jar.','Refrigerate overnight and stir before eating.']),\nM('Yogurt Berry Seed Bowl','Plain yogurt, berries, pumpkin seeds, and oats.',5,3.05,'vegetarian',['1 cup plain yogurt','\u00be cup berries','2 tablespoons pumpkin seeds','\u00bc cup rolled oats'],['Add yogurt to a bowl.','Top with berries, seeds, and oats.'])],\n4:[\nM('Blueberry Walnut Oats','Oats with blueberries, walnuts, chia, and plain yogurt.',12,3.15,'vegetarian',['\u00bd cup rolled oats','\u00be cup blueberries','2 tablespoons walnuts','1 tablespoon chia seeds','\u00bd cup plain yogurt'],['Cook oats with water until tender.','Top with blueberries, walnuts, chia, and yogurt.']),\nM('Vegetable Egg Breakfast Bowl','Eggs, spinach, mushrooms, tomato, avocado, and whole-grain toast.',18,4.25,'vegetarian',['2 eggs','1 cup spinach','\u00bd cup mushrooms','\u00bd tomato','\u00bd avocado','1 slice whole-grain bread'],['Saut\u00e9 mushrooms, spinach, and tomato.','Add eggs and cook. Serve with avocado and toast.']),\nM('Apple Cinnamon Seed Oats','Oats with apple, flax, pumpkin seeds, and almonds.',13,2.80,'vegan',['\u00bd cup rolled oats','1 apple','1 tablespoon ground flax','2 tablespoons pumpkin seeds','2 tablespoons almonds'],['Cook oats with diced apple and cinnamon.','Top with flax, pumpkin seeds, and almonds.']),\nM('Savory Chickpea Breakfast','Chickpeas, greens, tomato, avocado, and whole-grain toast.',15,3.60,'vegan',['\u00be cup chickpeas','1 cup leafy greens','\u00bd tomato','\u00bd avocado','1 slice whole-grain bread'],['Warm chickpeas with greens and tomato.','Serve with avocado and toast.'])]},\nlunch:{\n1:[\nM('Processed Deli Sandwich','White-bread deli sandwich with chips.',5,4.15,'any',['2 slices white bread','3 ounces processed deli meat','1 slice cheese','1 ounce potato chips'],['Assemble the sandwich.','Serve with chips.']),\nM('Instant Noodle Lunch','Instant noodles with packaged seasoning.',7,1.50,'vegan',['1 package instant noodles','2 cups water'],['Boil water and cook noodles.','Stir in seasoning and serve.']),\nM('Cheese Pizza Lunch','Cheese pizza with a soft drink.',12,4.50,'vegetarian',['2 slices frozen cheese pizza','1 soft drink'],['Bake pizza according to package directions.','Serve with the drink.']),\nM('Hot Dog Plate','Hot dog, white bun, and fries.',18,4.10,'any',['1 hot dog','1 white bun','1\u00bd cups frozen fries'],['Bake fries.','Heat hot dog, place in bun, and serve.'])],\n2:[\nM('Turkey Apple Sandwich','Turkey on whole-grain bread with apple.',7,4.00,'any',['2 slices whole-grain bread','3 ounces turkey','lettuce and tomato','1 apple'],['Assemble turkey, lettuce, and tomato on bread.','Serve with apple.']),\nM('Bean and Cheese Wrap','Black beans, cheese, salsa, and whole-grain tortilla.',10,2.65,'vegetarian',['\u00be cup black beans','1 whole-grain tortilla','\u00bc cup cheese','\u00bc cup salsa'],['Warm beans and tortilla.','Fill with beans, cheese, and salsa.']),\nM('Hummus Vegetable Pita','Hummus and vegetables in a whole-grain pita.',8,3.10,'vegan',['1 whole-grain pita','\u00bc cup hummus','1 cup mixed vegetables','1 orange'],['Fill pita with hummus and vegetables.','Serve with orange.']),\nM('Tuna Cracker Plate','Tuna, whole-grain crackers, carrots, and grapes.',8,4.20,'any',['3 ounces tuna','8 whole-grain crackers','1 cup carrots','1 cup grapes'],['Mix tuna with a small amount of preferred dressing.','Serve with crackers, carrots, and grapes.'])],\n3:[\nM('Mediterranean Chickpea Bowl','Chickpeas, greens, cucumber, tomato, whole grain, and tahini.',15,3.75,'vegan',['\u00be cup chickpeas','2 cups greens','\u00bd cup cucumber','\u00bd cup tomato','\u00bd cup cooked whole grain','1 tablespoon tahini'],['Arrange vegetables, chickpeas, and grain in a bowl.','Thin tahini with lemon and water; drizzle over bowl.']),\nM('Salmon Whole-Grain Salad','Salmon, greens, vegetables, and barley.',18,5.75,'any',['3 ounces salmon','2 cups greens','1 cup mixed vegetables','\u00bd cup cooked barley','1 tablespoon olive-oil dressing'],['Cook salmon until done.','Arrange over greens, vegetables, and barley; add dressing.']),\nM('Lentil Vegetable Soup Lunch','Lentil soup with whole-grain toast and fruit.',25,2.95,'vegan',['1\u00bd cups lentil vegetable soup','1 slice whole-grain bread','1 pear'],['Heat the soup.','Toast bread and serve with pear.']),\nM('Chicken Avocado Grain Bowl','Chicken, brown rice, vegetables, beans, and avocado.',20,4.80,'any',['3 ounces chicken','\u00bd cup brown rice','\u00bd cup black beans','1\u00bd cups vegetables','\u00bc avocado'],['Cook chicken thoroughly.','Layer rice, beans, vegetables, chicken, and avocado.'])],\n4:[\nM('Rainbow Lentil Bowl','Lentils, quinoa, leafy greens, cabbage, carrots, seeds, and lemon.',20,3.65,'vegan',['\u00be cup lentils','\u00bd cup quinoa','2 cups leafy greens','\u00bd cup cabbage','\u00bd cup carrots','2 tablespoons seeds'],['Arrange cooked lentils and quinoa over greens.','Add vegetables, seeds, and lemon dressing.']),\nM('Salmon Bean Garden Salad','Salmon, white beans, mixed greens, colorful vegetables, and walnuts.',18,6.15,'any',['3 ounces salmon','\u00bd cup white beans','2 cups mixed greens','1\u00bd cups colorful vegetables','2 tablespoons walnuts'],['Cook salmon thoroughly.','Combine remaining ingredients and top with salmon.']),\nM('Tempeh Vegetable Grain Bowl','Tempeh, farro, broccoli, peppers, greens, and sesame.',22,4.85,'vegan',['3 ounces tempeh','\u00bd cup cooked farro','1 cup broccoli','\u00bd cup peppers','1 cup greens','1 tablespoon sesame seeds'],['Brown tempeh and steam vegetables.','Arrange over farro and greens; add sesame.']),\nM('Chicken Chickpea Harvest Bowl','Chicken, chickpeas, sweet potato, greens, cabbage, and pumpkin seeds.',25,5.20,'any',['3 ounces chicken','\u00bd cup chickpeas','\u00bd sweet potato','2 cups greens','\u00bd cup cabbage','2 tablespoons pumpkin seeds'],['Roast sweet potato and cook chicken thoroughly.','Combine with chickpeas, greens, cabbage, and seeds.'])]},\ndinner:{\n1:[\nM('Processed Meat Dinner','Processed meat, refined pasta, and creamy sauce.',20,5.10,'any',['4 ounces processed meat','2 cups refined pasta','\u00bd cup creamy sauce'],['Cook pasta.','Heat meat and sauce; combine and serve.']),\nM('Fried Chicken and Fries','Fried chicken with fries.',25,6.25,'any',['2 pieces prepared fried chicken','1\u00bd cups frozen fries'],['Heat chicken according to package directions.','Bake fries and serve.']),\nM('Frozen Pepperoni Pizza','Pepperoni pizza dinner.',18,4.80,'any',['3 slices frozen pepperoni pizza'],['Bake pizza according to package directions.','Allow to cool briefly and serve.']),\nM('Burger and Chips','Beef burger on white bun with chips.',18,5.65,'any',['4 ounce beef patty','1 white bun','1 slice cheese','1 ounce potato chips'],['Cook burger thoroughly.','Assemble on bun and serve with chips.'])],\n2:[\nM('Chicken Rice and Peas','Chicken, white rice, and peas.',25,4.35,'any',['4 ounces chicken','\u00be cup white rice','1 cup peas'],['Cook chicken thoroughly.','Prepare rice and peas; serve together.']),\nM('Bean Pasta Bowl','Pasta with white beans and tomato sauce.',20,2.80,'vegan',['1\u00bd cups pasta','\u00be cup white beans','\u00be cup tomato sauce'],['Cook pasta.','Warm beans and sauce; combine.']),\nM('Fish Potato and Green Beans','Baked fish, potato, and green beans.',28,5.40,'any',['4 ounces white fish','1 medium potato','1 cup green beans'],['Bake fish and potato until done.','Steam green beans and serve.']),\nM('Vegetable Cheese Quesadilla','Whole-grain tortilla, beans, vegetables, cheese, and salsa.',18,3.45,'vegetarian',['2 whole-grain tortillas','\u00bd cup beans','1 cup vegetables','\u2153 cup cheese','\u00bc cup salsa'],['Fill tortilla with beans, vegetables, and cheese.','Cook in a skillet and serve with salsa.'])],\n3:[\nM('Herbed Salmon Dinner','Salmon, barley, broccoli, and tomato salad.',30,6.50,'any',['4 ounces salmon','\u00bd cup cooked barley','1\u00bd cups broccoli','1 cup tomato salad'],['Bake salmon with herbs.','Serve with barley, broccoli, and tomato salad.']),\nM('Lentil Vegetable Curry','Lentils, mixed vegetables, brown rice, and yogurt.',30,3.35,'vegetarian',['1 cup lentils','1\u00bd cups mixed vegetables','\u00bd cup brown rice','\u00bc cup plain yogurt'],['Simmer lentils and vegetables with curry spices.','Serve over brown rice with yogurt.']),\nM('Chicken Bean Sheet-Pan Dinner','Chicken, black beans, peppers, onions, and corn.',30,4.85,'any',['4 ounces chicken','\u00bd cup black beans','1 cup peppers and onions','\u00bd cup corn'],['Roast chicken, peppers, and onions until done.','Add warmed beans and corn.']),\nM('Tofu Broccoli Soba Bowl','Tofu, broccoli, cabbage, carrots, and soba noodles.',25,4.00,'vegan',['4 ounces tofu','1 cup broccoli','\u00bd cup cabbage','\u00bd cup carrots','1 cup cooked soba'],['Brown tofu and steam vegetables.','Serve over soba with a light sesame dressing.'])],\n4:[\nM('Salmon Lentil Garden Plate','Salmon, lentils, broccoli, leafy greens, tomato, and walnuts.',32,7.15,'any',['4 ounces salmon','\u00be cup lentils','1 cup broccoli','2 cups leafy greens','\u00bd cup tomato','2 tablespoons walnuts'],['Bake salmon and steam broccoli.','Combine lentils and vegetables; top with salmon and walnuts.']),\nM('Seven-Plant Bean Stew','Beans, tomatoes, greens, carrots, celery, onions, barley, and seeds.',35,3.20,'vegan',['1 cup mixed beans','1 cup tomatoes','1 cup greens','\u00bd cup carrots','\u00bd cup celery and onions','\u00bd cup barley','1 tablespoon seeds'],['Simmer beans, tomatoes, vegetables, and barley until tender.','Stir in greens; garnish with seeds.']),\nM('Chicken Quinoa Vegetable Feast','Chicken, quinoa, Brussels sprouts, cabbage, carrots, greens, and almonds.',35,5.75,'any',['4 ounces chicken','\u00bd cup quinoa','1 cup Brussels sprouts','\u00bd cup cabbage','\u00bd cup carrots','1 cup greens','2 tablespoons almonds'],['Roast chicken and Brussels sprouts until done.','Serve over quinoa with remaining vegetables and almonds.']),\nM('Tempeh Sweet-Potato Power Bowl','Tempeh, sweet potato, black beans, kale, peppers, avocado, and pumpkin seeds.',32,5.10,'vegan',['4 ounces tempeh','\u00bd sweet potato','\u00bd cup black beans','1 cup kale','\u00bd cup peppers','\u00bc avocado','2 tablespoons pumpkin seeds'],['Roast sweet potato and peppers; brown tempeh.','Arrange with beans and kale; top with avocado and seeds.'])]}};\nvar labels={1:'Limited',2:'Developing',3:'Strong',4:'Best'};\nvar storageKey='epiMenuProgressV1',currentSelection=null;\nfunction localDay(d){var x=d||new Date(),m=String(x.getMonth()+1).padStart(2,'0'),day=String(x.getDate()).padStart(2,'0');return x.getFullYear()+'-'+m+'-'+day}\nfunction loadHistory(){try{var x=JSON.parse(localStorage.getItem(storageKey)||'[]');return Array.isArray(x)?x:[]}catch(e){return[]}}\nfunction saveHistory(x){try{localStorage.setItem(storageKey,JSON.stringify(x.slice(-365)));return true}catch(e){return false}}\nfunction streak(history){var days={};history.forEach(function(x){days[x.day]=true});var count=0,d=new Date();while(days[localDay(d)]){count++;d.setDate(d.getDate()-1)}return count}\nfunction renderProgress(){var h=loadHistory(),points=h.reduce(function(a,x){return a+Number(x.rating||0)},0),avg=h.length?(points\/h.length).toFixed(1):'\u2013';$('#emb-total-points').textContent=String(points);$('#emb-meals-recorded').textContent=String(h.length);$('#emb-average-rating').textContent=avg;$('#emb-streak').textContent=String(streak(h));var recent=$('#emb-recent');recent.innerHTML='';if(!h.length){recent.innerHTML='<li class=\"emb-empty\">No meals recorded on this device yet.<\/li>';return}h.slice().reverse().slice(0,5).forEach(function(x){var li=document.createElement('li');li.innerHTML='<span><strong>'+x.name+'<\/strong><br><small>'+x.day+' \u00b7 '+x.meal.charAt(0).toUpperCase()+x.meal.slice(1)+'<\/small><\/span><span class=\"emb-badge\">+'+x.rating+' points<\/span>';recent.appendChild(li)})}\nfunction selected(name){var el=$('input[name=\"'+name+'\"]:checked');return el?el.value:null}\nfunction eligible(list,diet){return list.filter(function(x){return diet==='any'||x.diet===diet||(diet==='vegetarian'&&x.diet==='vegan')})}\nfunction money(n){return '$'+n.toFixed(2)}\nfunction render(){var meal=selected('emb-meal'),rating=selected('emb-rating'),diet='any',status=$('#emb-status'),results=$('#emb-results'),detail=$('#emb-detail');detail.hidden=true;\nif(!meal||!rating){status.textContent='Please choose both a meal and a target rating.';results.hidden=true;return}\nvar list=eligible(D[meal][rating],diet);if(!list.length){status.textContent='No '+diet+' menus are available in this demonstration set at that rating. Try another preference.';results.hidden=true;return}\nstatus.textContent='Four '+meal+' menu suggestions at EpiNutrition quality '+rating+' \u00b7 '+labels[rating]+'.';results.innerHTML='';\nlist.slice(0,4).forEach(function(m,i){var card=document.createElement('article');card.className='emb-card';card.innerHTML='<h3>'+m.name+'<\/h3><p>'+m.desc+'<\/p><p class=\"emb-meta\"><span class=\"emb-badge\">Rating '+rating+'<\/span><span class=\"emb-badge\">'+m.prep+' min<\/span><span class=\"emb-badge\">~'+money(m.cost)+'\/serving<\/span><\/p><button type=\"button\">Select This Menu<\/button>';card.querySelector('button').addEventListener('click',function(){show(m,meal,rating)});results.appendChild(card)});results.hidden=false;results.scrollIntoView({behavior:'smooth',block:'start'})}\nfunction show(m,meal,rating){var servings=Math.max(1,Math.min(8,Number($('#emb-servings').value)||1)),detail=$('#emb-detail');currentSelection={name:m.name,meal:meal,rating:Number(rating),servings:servings};detail.innerHTML='<div class=\"emb-detail-head\"><div><p class=\"emb-meta\">Selected '+meal+' \u00b7 EpiNutrition quality '+rating+' \u00b7 '+labels[rating]+'<\/p><h3>'+m.name+'<\/h3><p>'+m.desc+'<\/p><\/div><div class=\"emb-price\">~'+money(m.cost*servings)+' total<br><small>'+money(m.cost)+' per serving<\/small><\/div><\/div><div class=\"emb-explain\"><strong>Why this rating:<\/strong> This demonstration menu is classified at quality '+rating+' based on its food selection and meal composition. Timing remains strongest when the meal is eaten at an appropriate, consistent time for '+meal+'.<\/div><div class=\"emb-cols\"><div><h3>Ingredients for '+servings+'<\/h3><ul>'+m.ingredients.map(function(x){return'<li>'+x+' per serving \u00d7 '+servings+'<\/li>'}).join('')+'<\/ul><\/div><div><h3>Preparation<\/h3><ol>'+m.steps.map(function(x){return'<li>'+x+'<\/li>'}).join('')+'<\/ol><p><strong>Estimated time:<\/strong> '+m.prep+' minutes<\/p><\/div><\/div><div class=\"emb-action\"><button type=\"button\" id=\"emb-ate\">\u2713 I Ate This Meal \u2014 Add '+rating+' Points<\/button> <button type=\"button\" class=\"emb-secondary\" id=\"emb-back\">Choose Another Menu<\/button><\/div>';detail.hidden=false;$('#emb-ate').addEventListener('click',recordMeal);$('#emb-back').addEventListener('click',function(){detail.hidden=true;currentSelection=null;$('#emb-results').scrollIntoView({behavior:'smooth'})});detail.scrollIntoView({behavior:'smooth',block:'start'})}\nfunction recordMeal(){if(!currentSelection)return;var h=loadHistory(),entry={name:currentSelection.name,meal:currentSelection.meal,rating:currentSelection.rating,servings:currentSelection.servings,day:localDay(),recordedAt:new Date().toISOString()};h.push(entry);if(saveHistory(h)){var b=$('#emb-ate');b.textContent='\u2713 Meal Recorded \u2014 +'+entry.rating+' Points';b.disabled=true;b.classList.add('emb-recorded');renderProgress();$('#emb-progress-title').scrollIntoView({behavior:'smooth',block:'start'})}else{$('#emb-status').textContent='This browser could not save the meal history.'}}\n$('#emb-generate').addEventListener('click',render);\n$('#emb-clear').addEventListener('click',function(){if(confirm('Clear all EpiNutrition meal history stored in this browser?')){try{localStorage.removeItem(storageKey)}catch(e){}renderProgress()}});\nrenderProgress();\n}());\n<\/script>\n<\/section>\n\n","protected":false},"excerpt":{"rendered":"<p>EpiNutrition\u2122 Menu Tools Explore two interactive educational tools. Rate a meal using timing, food selection, and composition\u2014or create a personalized daily menu with recipes and estimated costs. These tools provide general nutrition education and do not replace individualized medical or dietary advice. Try the EpiNutrition\u2122 Meal Rating Explore how meal timing, food choices, and dietary&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"pmpro_default_level":"","_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"class_list":["post-1282","page","type-page","status-publish","hentry","pmpro-has-access"],"brizy_media":[],"_links":{"self":[{"href":"https:\/\/epinutrition.org\/index.php?rest_route=\/wp\/v2\/pages\/1282","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/epinutrition.org\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/epinutrition.org\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/epinutrition.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/epinutrition.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1282"}],"version-history":[{"count":5,"href":"https:\/\/epinutrition.org\/index.php?rest_route=\/wp\/v2\/pages\/1282\/revisions"}],"predecessor-version":[{"id":1291,"href":"https:\/\/epinutrition.org\/index.php?rest_route=\/wp\/v2\/pages\/1282\/revisions\/1291"}],"wp:attachment":[{"href":"https:\/\/epinutrition.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1282"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}