{"id":2981,"date":"2026-04-17T23:36:32","date_gmt":"2026-04-17T21:36:32","guid":{"rendered":"https:\/\/bio-me.bio\/?page_id=2981"},"modified":"2026-04-17T23:36:56","modified_gmt":"2026-04-17T21:36:56","slug":"family-essential-food-supply-calculator","status":"publish","type":"page","link":"https:\/\/bio-me.bio\/?page_id=2981","title":{"rendered":"Family Essential Food Supply Calculator"},"content":{"rendered":"\n<div class=\"eco-tool wp-block-group\" id=\"eco-tool-familyfood-8e3d4\">\n  <div class=\"eco-tool__header\">\n    <h2 class=\"eco-tool__title\">Family Essential Food Supply Calculator<\/h2>\n    <p class=\"eco-tool__lead\">\n      Estimate how much basic food your family may need for a selected number of days based on family size and daily consumption.\n    <\/p>\n  <\/div>\n\n  <form class=\"eco-tool__form\" id=\"eco-familyfood-form-8e3d4\" novalidate>\n    <div class=\"eco-tool__grid3\">\n\n      <div class=\"eco-tool__field\">\n        <label class=\"eco-tool__label\" for=\"eco-familyfood-adults-8e3d4\">Adults in<br>family<\/label>\n        <input class=\"eco-tool__input\" id=\"eco-familyfood-adults-8e3d4\" type=\"number\" min=\"0\" step=\"1\" value=\"2\" inputmode=\"numeric\" \/>\n        <div class=\"eco-tool__hint\">Number of adults who need full daily portions.<\/div>\n      <\/div>\n\n      <div class=\"eco-tool__field\">\n        <label class=\"eco-tool__label\" for=\"eco-familyfood-children-8e3d4\">Children in<br>family<\/label>\n        <input class=\"eco-tool__input\" id=\"eco-familyfood-children-8e3d4\" type=\"number\" min=\"0\" step=\"1\" value=\"2\" inputmode=\"numeric\" \/>\n        <div class=\"eco-tool__hint\">Children count as smaller portions in this estimate.<\/div>\n      <\/div>\n\n      <div class=\"eco-tool__field\">\n        <label class=\"eco-tool__label\" for=\"eco-familyfood-days-8e3d4\">Supply period<br>(days)<\/label>\n        <input class=\"eco-tool__input\" id=\"eco-familyfood-days-8e3d4\" type=\"number\" min=\"1\" step=\"1\" value=\"30\" inputmode=\"numeric\" \/>\n        <div class=\"eco-tool__hint\">How many days you want to cover with food supplies.<\/div>\n      <\/div>\n\n      <div class=\"eco-tool__field\">\n        <label class=\"eco-tool__label\" for=\"eco-familyfood-rice-8e3d4\">Grains per adult<br>(kg\/day)<\/label>\n        <input class=\"eco-tool__input\" id=\"eco-familyfood-rice-8e3d4\" type=\"number\" min=\"0\" step=\"0.01\" value=\"0.30\" inputmode=\"decimal\" \/>\n        <div class=\"eco-tool__hint\">Rice, pasta, oats, flour, and similar staples.<\/div>\n      <\/div>\n\n      <div class=\"eco-tool__field\">\n        <label class=\"eco-tool__label\" for=\"eco-familyfood-protein-8e3d4\">Protein per adult<br>(kg\/day)<\/label>\n        <input class=\"eco-tool__input\" id=\"eco-familyfood-protein-8e3d4\" type=\"number\" min=\"0\" step=\"0.01\" value=\"0.20\" inputmode=\"decimal\" \/>\n        <div class=\"eco-tool__hint\">Meat, fish, eggs, beans, lentils, or similar.<\/div>\n      <\/div>\n\n      <div class=\"eco-tool__field\">\n        <label class=\"eco-tool__label\" for=\"eco-familyfood-veg-8e3d4\">Vegetables &#038; fruit<br>(kg\/day)<\/label>\n        <input class=\"eco-tool__input\" id=\"eco-familyfood-veg-8e3d4\" type=\"number\" min=\"0\" step=\"0.01\" value=\"0.50\" inputmode=\"decimal\" \/>\n        <div class=\"eco-tool__hint\">Fresh, frozen, or preserved produce.<\/div>\n      <\/div>\n\n      <div class=\"eco-tool__field\">\n        <label class=\"eco-tool__label\" for=\"eco-familyfood-water-8e3d4\">Water per person<br>(liters\/day)<\/label>\n        <input class=\"eco-tool__input\" id=\"eco-familyfood-water-8e3d4\" type=\"number\" min=\"0\" step=\"0.1\" value=\"2.5\" inputmode=\"decimal\" \/>\n        <div class=\"eco-tool__hint\">Basic drinking water estimate per person.<\/div>\n      <\/div>\n\n      <div class=\"eco-tool__field\">\n        <label class=\"eco-tool__label\" for=\"eco-familyfood-buffer-8e3d4\">Safety buffer<br>(%)<\/label>\n        <input class=\"eco-tool__input\" id=\"eco-familyfood-buffer-8e3d4\" type=\"number\" min=\"0\" max=\"100\" step=\"1\" value=\"10\" inputmode=\"numeric\" \/>\n        <div class=\"eco-tool__hint\">Extra \u0437\u0430\u043f\u0430\u0441 for guests, waste, or uncertainty.<\/div>\n      <\/div>\n\n      <div class=\"eco-tool__field\">\n        <label class=\"eco-tool__label\" for=\"eco-familyfood-mode-8e3d4\">Supply<br>mode<\/label>\n        <select class=\"eco-tool__input\" id=\"eco-familyfood-mode-8e3d4\">\n          <option value=\"1\" selected>Normal household<\/option>\n          <option value=\"1.15\">Active \/ higher appetite<\/option>\n          <option value=\"0.9\">Economy \/ minimal<\/option>\n        <\/select>\n        <div class=\"eco-tool__hint\">Adjusts total quantities for appetite and consumption style.<\/div>\n      <\/div>\n\n    <\/div>\n\n    <div class=\"eco-tool__actions\">\n      <button type=\"button\" class=\"wp-element-button eco-tool__btn\" id=\"eco-familyfood-calc-8e3d4\">Calculate<\/button>\n      <button type=\"button\" class=\"wp-element-button eco-tool__btn eco-tool__btn--ghost\" id=\"eco-familyfood-reset-8e3d4\">Reset<\/button>\n      <div class=\"eco-tool__error\" id=\"eco-familyfood-error-8e3d4\" aria-live=\"polite\"><\/div>\n    <\/div>\n  <\/form>\n\n  <div class=\"eco-tool__result\" id=\"eco-familyfood-result-8e3d4\" hidden>\n    <h3 class=\"eco-tool__subtitle\">Result<\/h3>\n\n    <div class=\"eco-tool__cards\">\n      <div class=\"eco-tool__card\">\n        <div class=\"eco-tool__metric-label\">Estimated family food need<\/div>\n        <div class=\"eco-tool__metric-value\" id=\"eco-familyfood-total-8e3d4\">\u2014<\/div>\n        <div class=\"eco-tool__metric-sub\" id=\"eco-familyfood-people-8e3d4\"><\/div>\n      <\/div>\n\n      <div class=\"eco-tool__card\">\n        <div class=\"eco-tool__metric-label\">Water requirement<\/div>\n        <div class=\"eco-tool__metric-value\" id=\"eco-familyfood-waterout-8e3d4\">\u2014<\/div>\n        <div class=\"eco-tool__metric-sub\" id=\"eco-familyfood-period-8e3d4\"><\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"eco-tool__card eco-tool__card--wide\">\n      <div class=\"eco-tool__metric-label\">Food breakdown<\/div>\n      <div class=\"eco-tool__bars\" id=\"eco-familyfood-bars-8e3d4\"><\/div>\n      <div class=\"eco-tool__metric-sub eco-tool__muted\" id=\"eco-familyfood-tip-8e3d4\"><\/div>\n    <\/div>\n\n    <p class=\"eco-tool__note\">\n      This is a household planning estimate. Real needs vary by age, health, activity, diet, cooking losses, and available storage.\n    <\/p>\n  <\/div>\n\n  <details class=\"eco-tool__details\">\n    <summary class=\"eco-tool__summary\">How we calculate<\/summary>\n    <div class=\"eco-tool__details-body\">\n      <p class=\"eco-tool__text\">\n        Adults count as full portions. Children count as 0.7 of an adult in this simple model.\n        We multiply daily needs by the number of family members and days, then apply the selected buffer and supply mode.\n      <\/p>\n      <ul class=\"eco-tool__list\" id=\"eco-familyfood-factors-8e3d4\"><\/ul>\n    <\/div>\n  <\/details>\n<\/div>\n\n<style>\n.eco-tool{\n  border: 1px solid rgba(0,0,0,.12);\n  border-radius: 12px;\n  padding: 16px;\n}\n.eco-tool__header{ margin-bottom: 12px; }\n.eco-tool__title{ margin: 0 0 8px; }\n.eco-tool__lead{ margin: 0; opacity: .9; }\n.eco-tool__form{ margin-top: 12px; }\n\n.eco-tool__grid3{\n  display: grid;\n  grid-template-columns: 1fr;\n  gap: 16px;\n}\n@media (min-width: 860px){\n  .eco-tool__grid3{ grid-template-columns: 1fr 1fr 1fr; }\n}\n\n.eco-tool__field{\n  display: flex;\n  flex-direction: column;\n  gap: 6px;\n}\n.eco-tool__label{\n  font-weight: 600;\n}\n.eco-tool__input{\n  width: 100%;\n  height: 44px;\n  padding: 0 12px;\n  border: 1px solid rgba(0,0,0,.20);\n  border-radius: 10px;\n  background: #fff;\n  box-sizing: border-box;\n  font: inherit;\n}\n.eco-tool select.eco-tool__input{\n  appearance: none;\n  -webkit-appearance: none;\n  line-height: 44px;\n  padding-right: 40px;\n  background-image:\n    linear-gradient(45deg, transparent 50%, rgba(0,0,0,.60) 50%),\n    linear-gradient(135deg, rgba(0,0,0,.60) 50%, transparent 50%);\n  background-position:\n    calc(100% - 18px) 50%,\n    calc(100% - 12px) 50%;\n  background-size: 6px 6px;\n  background-repeat: no-repeat;\n}\n.eco-tool__hint{\n  font-size: .92em;\n  opacity: .78;\n  min-height: 38px;\n}\n.eco-tool__actions{\n  display: flex;\n  flex-wrap: wrap;\n  gap: 10px;\n  align-items: center;\n  margin-top: 16px;\n}\n.eco-tool__btn{\n  padding: 10px 22px;\n}\n.eco-tool__btn--ghost{\n  background: transparent !important;\n  border: 1px solid rgba(0,0,0,.20) !important;\n}\n.eco-tool__btn--ghost:hover,\n.eco-tool__btn--ghost:focus{\n  background: rgba(0,0,0,.06) !important;\n  border-color: rgba(0,0,0,.35) !important;\n}\n.eco-tool__error{\n  min-height: 1.2em;\n  font-weight: 600;\n  flex: 1 1 240px;\n}\n.eco-tool__result{ margin-top: 16px; }\n.eco-tool__subtitle{ margin: 0 0 10px; }\n.eco-tool__cards{\n  display: grid;\n  gap: 10px;\n  grid-template-columns: 1fr;\n}\n@media (min-width: 860px){\n  .eco-tool__cards{ grid-template-columns: 1fr 1fr; }\n}\n.eco-tool__card{\n  border: 1px solid rgba(0,0,0,.12);\n  border-radius: 12px;\n  padding: 12px;\n}\n.eco-tool__card--wide{\n  margin-top: 10px;\n}\n.eco-tool__metric-label{ opacity: .85; font-weight: 600; }\n.eco-tool__metric-value{ font-size: 1.6em; font-weight: 800; margin-top: 6px; line-height: 1.1; }\n.eco-tool__metric-sub{ opacity: .85; margin-top: 6px; }\n\n.eco-tool__bars{\n  display: grid;\n  gap: 10px;\n  margin-top: 12px;\n}\n.eco-tool__barrow{\n  display: grid;\n  grid-template-columns: 140px 1fr 110px;\n  gap: 10px;\n  align-items: center;\n}\n@media (max-width: 480px){\n  .eco-tool__barrow{ grid-template-columns: 110px 1fr 80px; }\n}\n.eco-tool__barlabel{ font-weight: 600; opacity: .9; }\n.eco-tool__bartrack{\n  border: 1px solid rgba(0,0,0,.12);\n  border-radius: 999px;\n  height: 12px;\n  overflow: hidden;\n  background: rgba(0,0,0,.03);\n}\n.eco-tool__barfill{\n  height: 100%;\n  width: 0%;\n  background: rgba(0,0,0,.25);\n}\n.eco-tool__barval{ text-align: right; opacity: .85; white-space: nowrap; }\n\n.eco-tool__note{ margin: 10px 0 0; opacity: .9; }\n.eco-tool__muted{ opacity: .8; }\n.eco-tool__details{ margin-top: 14px; }\n.eco-tool__summary{ cursor: pointer; font-weight: 700; }\n.eco-tool__details-body{ margin-top: 10px; }\n.eco-tool__text{ margin: 0 0 10px; }\n.eco-tool__list{ margin: 0; padding-left: 18px; }\n<\/style>\n\n<script>\n(function(){\n  const S = \"8e3d4\";\n  const el = (id) => document.getElementById(id + \"-\" + S);\n\n  const adultsEl = el(\"eco-familyfood-adults\");\n  const childrenEl = el(\"eco-familyfood-children\");\n  const daysEl = el(\"eco-familyfood-days\");\n  const grainsEl = el(\"eco-familyfood-rice\");\n  const proteinEl = el(\"eco-familyfood-protein\");\n  const vegEl = el(\"eco-familyfood-veg\");\n  const waterEl = el(\"eco-familyfood-water\");\n  const bufferEl = el(\"eco-familyfood-buffer\");\n  const modeEl = el(\"eco-familyfood-mode\");\n\n  const calcBtn = el(\"eco-familyfood-calc\");\n  const resetBtn = el(\"eco-familyfood-reset\");\n  const errorEl = el(\"eco-familyfood-error\");\n  const resultEl = el(\"eco-familyfood-result\");\n\n  const totalEl = el(\"eco-familyfood-total\");\n  const peopleEl = el(\"eco-familyfood-people\");\n  const waterOutEl = el(\"eco-familyfood-waterout\");\n  const periodEl = el(\"eco-familyfood-period\");\n  const barsEl = el(\"eco-familyfood-bars\");\n  const tipEl = el(\"eco-familyfood-tip\");\n  const factorsEl = el(\"eco-familyfood-factors\");\n\n  function setError(msg){ errorEl.textContent = msg || \"\"; }\n  function fmtKg(x){ return (Math.round(x * 10) \/ 10).toLocaleString(undefined, { maximumFractionDigits: 1 }) + \" kg\"; }\n  function fmtL(x){ return Math.round(x).toLocaleString() + \" L\"; }\n\n  function fillFactors(){\n    factorsEl.innerHTML = [\n      `<li><strong>Adult factor:<\/strong> 1 adult = 1 full portion<\/li>`,\n      `<li><strong>Child factor:<\/strong> 1 child = 0.7 of an adult portion<\/li>`,\n      `<li><strong>Buffer:<\/strong> extra percentage for waste, visitors, or uncertainty<\/li>`,\n      `<li><strong>Mode:<\/strong> adjusts total need for higher or lower consumption patterns<\/li>`\n    ].join(\"\");\n  }\n\n  function barRow(label, pct, value){\n    const p = Math.max(0, Math.min(100, pct));\n    return `\n      <div class=\"eco-tool__barrow\">\n        <div class=\"eco-tool__barlabel\">${label}<\/div>\n        <div class=\"eco-tool__bartrack\"><div class=\"eco-tool__barfill\" style=\"width:${p}%;\"><\/div><\/div>\n        <div class=\"eco-tool__barval\">${value}<\/div>\n      <\/div>\n    `;\n  }\n\n  function calculate(){\n    setError(\"\");\n\n    const adults = Number(adultsEl.value);\n    const children = Number(childrenEl.value);\n    const days = Number(daysEl.value);\n    const grains = Number(grainsEl.value);\n    const protein = Number(proteinEl.value);\n    const veg = Number(vegEl.value);\n    const water = Number(waterEl.value);\n    const buffer = Number(bufferEl.value) \/ 100;\n    const mode = Number(modeEl.value);\n\n    if (![adults, children, days, grains, protein, veg, water, buffer, mode].every(Number.isFinite)) {\n      setError(\"Please enter valid numbers in all fields.\");\n      resultEl.hidden = true;\n      return;\n    }\n    if (adults < 0 || children < 0 || days < 1 || grains < 0 || protein < 0 || veg < 0 || water < 0) {\n      setError(\"Values must be non-negative, and days must be at least 1.\");\n      resultEl.hidden = true;\n      return;\n    }\n\n    const familyUnits = adults + (children * 0.7);\n\n    const totalGrains = familyUnits * grains * days * (1 + buffer) * mode;\n    const totalProtein = familyUnits * protein * days * (1 + buffer) * mode;\n    const totalVeg = familyUnits * veg * days * (1 + buffer) * mode;\n    const totalFood = totalGrains + totalProtein + totalVeg;\n    const totalWater = (adults + children) * water * days * (1 + buffer);\n\n    totalEl.textContent = fmtKg(totalFood);\n    peopleEl.textContent = `${adults} adult(s), ${children} child(ren), ${familyUnits.toFixed(1)} family units`;\n\n    waterOutEl.textContent = fmtL(totalWater);\n    periodEl.textContent = `${days} day supply estimate`;\n\n    const max = Math.max(totalGrains, totalProtein, totalVeg, 1);\n    barsEl.innerHTML =\n      barRow(\"Grains\", (totalGrains \/ max) * 100, fmtKg(totalGrains)) +\n      barRow(\"Protein\", (totalProtein \/ max) * 100, fmtKg(totalProtein)) +\n      barRow(\"Fruit &#038; veg\", (totalVeg \/ max) * 100, fmtKg(totalVeg));\n\n    tipEl.textContent =\n      totalFood > 300\n        ? \"Tip: For a large food reserve, think about storage life, rotation, and preservation.\"\n        : totalFood > 100\n        ? \"Tip: A balanced reserve should include shelf-stable staples plus protein and produce options.\"\n        : \"Tip: Even a modest food plan becomes more reliable with a small safety buffer.\";\n\n    resultEl.hidden = false;\n  }\n\n  function reset(){\n    setError(\"\");\n    adultsEl.value = \"2\";\n    childrenEl.value = \"2\";\n    daysEl.value = \"30\";\n    grainsEl.value = \"0.30\";\n    proteinEl.value = \"0.20\";\n    vegEl.value = \"0.50\";\n    waterEl.value = \"2.5\";\n    bufferEl.value = \"10\";\n    modeEl.value = \"1\";\n    resultEl.hidden = true;\n  }\n\n  fillFactors();\n  calcBtn.addEventListener(\"click\", calculate);\n  resetBtn.addEventListener(\"click\", reset);\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Family Essential Food Supply Calculator Estimate how much basic food your family may need for a selected number of days based on family size and daily consumption. Adults infamily Number&hellip;<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":2457,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_sitemap_exclude":false,"_sitemap_priority":"","_sitemap_frequency":"","footnotes":""},"_links":{"self":[{"href":"https:\/\/bio-me.bio\/index.php?rest_route=\/wp\/v2\/pages\/2981"}],"collection":[{"href":"https:\/\/bio-me.bio\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/bio-me.bio\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/bio-me.bio\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/bio-me.bio\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2981"}],"version-history":[{"count":2,"href":"https:\/\/bio-me.bio\/index.php?rest_route=\/wp\/v2\/pages\/2981\/revisions"}],"predecessor-version":[{"id":2983,"href":"https:\/\/bio-me.bio\/index.php?rest_route=\/wp\/v2\/pages\/2981\/revisions\/2983"}],"up":[{"embeddable":true,"href":"https:\/\/bio-me.bio\/index.php?rest_route=\/wp\/v2\/pages\/2457"}],"wp:attachment":[{"href":"https:\/\/bio-me.bio\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2981"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}