{"id":2285,"date":"2026-04-05T17:57:53","date_gmt":"2026-04-05T17:57:53","guid":{"rendered":"https:\/\/rusticmutt.com\/?page_id=2285"},"modified":"2026-04-06T18:15:40","modified_gmt":"2026-04-06T18:15:40","slug":"foodcalculator","status":"publish","type":"page","link":"https:\/\/rusticmutt.com\/?page_id=2285","title":{"rendered":"Food Calculator"},"content":{"rendered":"\n<!-- =========================================================\n     RUSTIC MUTT \u2014 Raw Food Calculator\n     Paste this entire block into a WordPress Custom HTML block\n     ========================================================= -->\n\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Playfair+Display:wght@500;600&#038;family=Lato:wght@400;700&#038;display=swap\" rel=\"stylesheet\">\n\n<style>\n  .rm-calc-wrap {\n    font-family: 'Lato', sans-serif;\n    color: #3d2b1f;\n    max-width: 720px;\n    margin: 0 auto;\n    padding: 2rem 1rem 3rem;\n  }\n  .rm-calc-wrap * { box-sizing: border-box; }\n\n  .rm-calc-header {\n    text-align: center;\n    margin-bottom: 2rem;\n    padding-bottom: 1.5rem;\n    border-bottom: 2px solid #e0cfc2;\n  }\n  .rm-calc-header h2 {\n    font-family: 'Playfair Display', serif;\n    font-size: 2rem;\n    font-weight: 600;\n    color: #3d2b1f;\n    margin: 0 0 8px;\n  }\n  .rm-calc-header p {\n    font-size: 15px;\n    color: #7a5c4a;\n    margin: 0;\n  }\n\n  .rm-dog-card {\n    background: #fff;\n    border: 1px solid #e0cfc2;\n    border-radius: 12px;\n    padding: 1.25rem 1.5rem;\n    margin-bottom: 16px;\n    transition: box-shadow 0.2s;\n  }\n  .rm-dog-card:hover { box-shadow: 0 4px 16px rgba(61,43,31,0.08); }\n\n  .rm-dog-header {\n    display: flex;\n    align-items: center;\n    gap: 12px;\n    margin-bottom: 14px;\n  }\n  .rm-avatar {\n    width: 40px; height: 40px;\n    border-radius: 50%;\n    background: #f0e4d4;\n    display: flex; align-items: center; justify-content: center;\n    font-size: 14px; font-weight: 700; color: #8b5e3c;\n    flex-shrink: 0;\n    border: 1px solid #ddd0c4;\n  }\n  .rm-name-input {\n    flex: 1;\n    border: 1px solid #ddd0c4;\n    border-radius: 8px;\n    padding: 7px 12px;\n    font-size: 15px;\n    font-family: 'Lato', sans-serif;\n    background: #fdf9f5;\n    color: #3d2b1f;\n    outline: none;\n    transition: border-color 0.2s;\n  }\n  .rm-name-input:focus { border-color: #8b5e3c; }\n  .rm-name-input::placeholder { color: #b9a090; }\n\n  .rm-remove-btn {\n    background: none;\n    border: 1px solid #e0cfc2;\n    border-radius: 8px;\n    padding: 5px 12px;\n    font-size: 13px;\n    font-family: 'Lato', sans-serif;\n    color: #b9a090;\n    cursor: pointer;\n    transition: all 0.2s;\n  }\n  .rm-remove-btn:hover {\n    background: #fdf0ea;\n    border-color: #c0704a;\n    color: #c0704a;\n  }\n\n  .rm-field-row {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 12px;\n    margin-bottom: 14px;\n  }\n  @media (max-width: 480px) { .rm-field-row { grid-template-columns: 1fr; } }\n\n  .rm-field-label {\n    font-size: 12px;\n    font-weight: 700;\n    color: #7a5c4a;\n    text-transform: uppercase;\n    letter-spacing: 0.05em;\n    margin-bottom: 5px;\n  }\n  .rm-field-input {\n    border: 1px solid #ddd0c4;\n    border-radius: 8px;\n    padding: 7px 12px;\n    font-size: 14px;\n    font-family: 'Lato', sans-serif;\n    background: #fdf9f5;\n    color: #3d2b1f;\n    width: 100%;\n    outline: none;\n    transition: border-color 0.2s;\n  }\n  .rm-field-input:focus { border-color: #8b5e3c; }\n  .rm-field-display {\n    border: 1px solid #e8ddd4;\n    border-radius: 8px;\n    padding: 7px 12px;\n    font-size: 14px;\n    background: #f9f4ee;\n    color: #7a5c4a;\n    width: 100%;\n  }\n\n  .rm-slider-section { margin-bottom: 6px; }\n  .rm-slider-header {\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    margin-bottom: 8px;\n  }\n  .rm-activity-badge {\n    font-size: 12px;\n    font-weight: 700;\n    padding: 3px 10px;\n    border-radius: 20px;\n    background: #f0e4d4;\n    color: #8b5e3c;\n    border: 1px solid #ddd0c4;\n  }\n\n  input[type=range].rm-slider {\n    -webkit-appearance: none;\n    width: 100%;\n    height: 5px;\n    border-radius: 3px;\n    background: linear-gradient(to right, #8b5e3c 0%, #8b5e3c var(--val, 50%), #e0cfc2 var(--val, 50%), #e0cfc2 100%);\n    outline: none;\n    cursor: pointer;\n  }\n  input[type=range].rm-slider::-webkit-slider-thumb {\n    -webkit-appearance: none;\n    width: 20px; height: 20px;\n    border-radius: 50%;\n    background: #8b5e3c;\n    border: 2px solid #fff;\n    box-shadow: 0 1px 4px rgba(0,0,0,0.2);\n    cursor: pointer;\n  }\n  input[type=range].rm-slider::-moz-range-thumb {\n    width: 18px; height: 18px;\n    border-radius: 50%;\n    background: #8b5e3c;\n    border: 2px solid #fff;\n    cursor: pointer;\n  }\n  .rm-slider-labels {\n    display: flex;\n    justify-content: space-between;\n    font-size: 11px;\n    color: #b9a090;\n    margin-top: 4px;\n  }\n\n  .rm-results {\n    margin-top: 14px;\n    padding-top: 14px;\n    border-top: 1px solid #e8ddd4;\n    display: grid;\n    grid-template-columns: repeat(3, 1fr);\n    gap: 10px;\n  }\n  @media (max-width: 400px) { .rm-results { grid-template-columns: 1fr 1fr; } }\n\n  .rm-mini-stat {\n    background: #fdf9f5;\n    border: 1px solid #e8ddd4;\n    border-radius: 8px;\n    padding: 10px 12px;\n  }\n  .rm-mini-stat .lbl {\n    font-size: 11px;\n    font-weight: 700;\n    text-transform: uppercase;\n    letter-spacing: 0.05em;\n    color: #b9a090;\n    margin-bottom: 3px;\n  }\n  .rm-mini-stat .val {\n    font-size: 15px;\n    font-weight: 700;\n    color: #3d2b1f;\n    line-height: 1.3;\n  }\n  .rm-mini-stat .sub {\n    font-size: 11px;\n    color: #b9a090;\n  }\n\n  .rm-thaw-alert {\n    margin-top: 12px;\n    padding: 11px 14px;\n    background: #eef6f2;\n    border: 1px solid #b5d9c9;\n    border-radius: 8px;\n    font-size: 13px;\n    color: #2d6a4f;\n    display: flex;\n    gap: 10px;\n    align-items: flex-start;\n    line-height: 1.5;\n  }\n  .rm-thaw-icon { font-size: 16px; flex-shrink: 0; margin-top: 1px; }\n\n  .rm-add-btn {\n    width: 100%;\n    padding: 12px;\n    border: 2px dashed #ddd0c4;\n    border-radius: 12px;\n    background: none;\n    font-size: 14px;\n    font-family: 'Lato', sans-serif;\n    font-weight: 700;\n    color: #b9a090;\n    cursor: pointer;\n    margin-bottom: 2rem;\n    transition: all 0.2s;\n  }\n  .rm-add-btn:hover {\n    background: #fdf5ee;\n    border-color: #8b5e3c;\n    color: #8b5e3c;\n  }\n\n  .rm-summary {\n    background: #3d2b1f;\n    border-radius: 14px;\n    padding: 1.5rem;\n    color: #f9f5ef;\n  }\n  .rm-summary-title {\n    font-family: 'Playfair Display', serif;\n    font-size: 1.1rem;\n    font-weight: 500;\n    color: #f0e4d4;\n    margin: 0 0 1rem;\n    padding-bottom: 10px;\n    border-bottom: 1px solid rgba(255,255,255,0.12);\n  }\n  .rm-summary-grid {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 12px;\n  }\n  .rm-summary-stat .lbl {\n    font-size: 11px;\n    font-weight: 700;\n    text-transform: uppercase;\n    letter-spacing: 0.06em;\n    color: #c4a88e;\n    margin-bottom: 3px;\n  }\n  .rm-summary-stat .val {\n    font-size: 22px;\n    font-weight: 700;\n    color: #f9f5ef;\n    line-height: 1.2;\n  }\n  .rm-tubes-box {\n    grid-column: span 2;\n    background: rgba(255,255,255,0.07);\n    border: 1px solid rgba(255,255,255,0.12);\n    border-radius: 10px;\n    padding: 12px 16px;\n    margin-top: 4px;\n  }\n  .rm-tubes-row {\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    padding: 5px 0;\n    border-bottom: 1px solid rgba(255,255,255,0.08);\n  }\n  .rm-tubes-row:last-child { border-bottom: none; padding-bottom: 0; }\n  .rm-tubes-row:first-child { padding-top: 0; }\n  .rm-tubes-lbl { font-size: 13px; color: #c4a88e; }\n  .rm-tubes-val {\n    font-size: 18px;\n    font-weight: 700;\n    color: #f9f5ef;\n  }\n  .rm-tubes-exact { font-size: 12px; color: #a08060; font-weight: 400; margin-left: 6px; }\n\n  .rm-empty {\n    text-align: center;\n    padding: 2.5rem 1rem;\n    color: #b9a090;\n    font-size: 14px;\n  }\n<\/style>\n\n<div class=\"rm-calc-wrap\">\n\n  <div class=\"rm-calc-header\">\n    <h2>Raw Food Calculator<\/h2>\n    <p>Calculate your dog&#8217;s recommended raw food intake, and weekly or monthly 5lb tube needs.<\/p>\n  <\/div>\n\n  <div id=\"rm-dogs\"><\/div>\n\n  <button class=\"rm-add-btn\" onclick=\"rmAddDog()\">+ Add another dog<\/button>\n\n  <div id=\"rm-summary\"><\/div>\n\n<\/div>\n\n<script>\n(function() {\n  var dogs = [];\n  var nextId = 1;\n\n  var activityLabels = [\n    'Couch potato','Very low','Low','Low-moderate','Moderate',\n    'Active','Quite active','High energy','Very high','Extremely active','Athlete'\n  ];\n\n  function addDog() {\n    dogs.push({ id: nextId++, name: '', weight: '', activity: 5 });\n    render();\n  }\n  window.rmAddDog = addDog;\n\n  window.rmRemoveDog = function(id) {\n    dogs = dogs.filter(function(d){ return d.id !== id; });\n    render();\n  };\n\n  window.rmUpdateName = function(id, val) {\n    var d = dogs.find(function(d){ return d.id === id; });\n    if (d) { d.name = val; renderAvatars(); }\n  };\n\n  window.rmUpdateWeight = function(id, val) {\n    var d = dogs.find(function(d){ return d.id === id; });\n    if (d) { d.weight = val; renderResults(); }\n  };\n\n  window.rmUpdateActivity = function(id, val) {\n    var d = dogs.find(function(d){ return d.id === id; });\n    if (d) {\n      d.activity = parseInt(val);\n      var badge = document.getElementById('rm-badge-' + id);\n      if (badge) badge.textContent = d.activity + '\/10 \u2014 ' + activityLabels[d.activity];\n      var slider = document.getElementById('rm-slider-' + id);\n      if (slider) slider.style.setProperty('--val', (d.activity \/ 10 * 100) + '%');\n      renderResults();\n    }\n  };\n\n  function calc(weight, activity) {\n    var pct = (2 + (activity \/ 10)) \/ 100;\n    var dailyLbs = weight * pct;\n    var dailyOz = dailyLbs * 16;\n    return { dailyOz: dailyOz, pct: pct };\n  }\n\n  function fmtLbsOz(totalOz) {\n    var lbs = Math.floor(totalOz \/ 16);\n    var oz = totalOz % 16;\n    if (lbs === 0) return oz.toFixed(1) + ' oz';\n    return lbs + ' lb ' + oz.toFixed(1) + ' oz';\n  }\n\n  function initials(name) {\n    if (!name.trim()) return '?';\n    return name.trim().split(' ').map(function(w){ return w[0]; }).join('').toUpperCase().slice(0,2);\n  }\n\n  function renderAvatars() {\n    dogs.forEach(function(dog) {\n      var av = document.getElementById('rm-av-' + dog.id);\n      if (av) av.textContent = initials(dog.name || 'Dog');\n    });\n  }\n\n  function renderResults() {\n    dogs.forEach(function(dog) {\n      var w = parseFloat(dog.weight);\n      var box = document.getElementById('rm-res-' + dog.id);\n      if (!box) return;\n      if (!w || w <= 0) { box.innerHTML = ''; return; }\n\n      var r = calc(w, dog.activity);\n      var weeklyOz = r.dailyOz * 7;\n      var weeklyTubes = weeklyOz \/ 80;\n      var needsThaw = r.dailyOz < 20;\n      var dogName = dog.name.trim() || 'This dog';\n\n      var pctDisp = document.getElementById('rm-pct-' + dog.id);\n      if (pctDisp) pctDisp.textContent = (r.pct * 100).toFixed(2) + '% daily';\n\n      box.innerHTML =\n        '<div class=\"rm-results\">' +\n          '<div class=\"rm-mini-stat\"><div class=\"lbl\">Daily<\/div><div class=\"val\">' + fmtLbsOz(r.dailyOz) + '<\/div><\/div>' +\n          '<div class=\"rm-mini-stat\"><div class=\"lbl\">Weekly<\/div><div class=\"val\">' + fmtLbsOz(weeklyOz) + '<\/div><\/div>' +\n          '<div class=\"rm-mini-stat\"><div class=\"lbl\">Tubes \/ week<\/div><div class=\"val\">' + weeklyTubes.toFixed(2) + '<\/div><div class=\"sub\">5 lb tubes<\/div><\/div>' +\n        '<\/div>' +\n        (needsThaw ?\n          '<div class=\"rm-thaw-alert\"><span class=\"rm-thaw-icon\">&#9432;<\/span>' +\n          '<div><strong>' + dogName + '<\/strong> consumes less than a full 5 lb tube in 4 days. ' +\n          'We recommend thawing the tube to about 75% and cutting it in half, this keeps the second half fresh and prevents spoilage.<\/div><\/div>'\n        : '');\n\n      renderSummary();\n    });\n    renderSummary();\n  }\n\n  function renderSummary() {\n    var validDogs = dogs.filter(function(d){ return parseFloat(d.weight) > 0; });\n    var el = document.getElementById('rm-summary');\n    if (!el) return;\n    if (validDogs.length === 0) { el.innerHTML = ''; return; }\n\n    var totalDailyOz = validDogs.reduce(function(sum, d){\n      return sum + calc(parseFloat(d.weight), d.activity).dailyOz;\n    }, 0);\n    var totalWeeklyOz = totalDailyOz * 7;\n    var weeklyTubes = totalWeeklyOz \/ 80;\n    var monthlyTubes = weeklyTubes * 4.33;\n    var title = validDogs.length > 1 ? 'All dogs \u2014 weekly summary' : 'Weekly summary';\n\n    el.innerHTML =\n      '<div class=\"rm-summary\">' +\n        '<div class=\"rm-summary-title\">' + title + '<\/div>' +\n        '<div class=\"rm-summary-grid\">' +\n          '<div class=\"rm-summary-stat\"><div class=\"lbl\">Daily total<\/div><div class=\"val\">' + fmtLbsOz(totalDailyOz) + '<\/div><\/div>' +\n          '<div class=\"rm-summary-stat\"><div class=\"lbl\">Weekly total<\/div><div class=\"val\">' + fmtLbsOz(totalWeeklyOz) + '<\/div><\/div>' +\n          '<div class=\"rm-tubes-box\">' +\n            '<div class=\"rm-tubes-row\"><span class=\"rm-tubes-lbl\">5 lb tubes per week<\/span><span class=\"rm-tubes-val\">' + Math.ceil(weeklyTubes) + ' tubes<span class=\"rm-tubes-exact\">(' + weeklyTubes.toFixed(2) + ' exact)<\/span><\/span><\/div>' +\n            '<div class=\"rm-tubes-row\"><span class=\"rm-tubes-lbl\">5 lb tubes per month<\/span><span class=\"rm-tubes-val\">' + Math.ceil(monthlyTubes) + ' tubes<span class=\"rm-tubes-exact\">(' + monthlyTubes.toFixed(1) + ' exact)<\/span><\/span><\/div>' +\n          '<\/div>' +\n        '<\/div>' +\n      '<\/div>';\n  }\n\n  function render() {\n    var container = document.getElementById('rm-dogs');\n    if (!container) return;\n\n    if (dogs.length === 0) {\n      container.innerHTML = '<div class=\"rm-empty\">No dogs added yet.<\/div>';\n      renderSummary();\n      return;\n    }\n\n    container.innerHTML = dogs.map(function(dog) {\n      var sliderVal = (dog.activity \/ 10 * 100) + '%';\n      return '<div class=\"rm-dog-card\">' +\n        '<div class=\"rm-dog-header\">' +\n          '<div class=\"rm-avatar\" id=\"rm-av-' + dog.id + '\">' + initials(dog.name || 'Dog') + '<\/div>' +\n          '<input class=\"rm-name-input\" type=\"text\" placeholder=\"Dog\\'s name\" value=\"' + dog.name + '\" oninput=\"rmUpdateName(' + dog.id + ', this.value)\" \/>' +\n          (dogs.length > 1 ? '<button class=\"rm-remove-btn\" onclick=\"rmRemoveDog(' + dog.id + ')\">Remove<\/button>' : '') +\n        '<\/div>' +\n        '<div class=\"rm-field-row\">' +\n          '<div><div class=\"rm-field-label\">Body weight (lbs)<\/div>' +\n          '<input class=\"rm-field-input\" type=\"number\" min=\"1\" max=\"300\" step=\"0.5\" placeholder=\"e.g. 45\" value=\"' + dog.weight + '\" oninput=\"rmUpdateWeight(' + dog.id + ', this.value)\" \/><\/div>' +\n          '<div><div class=\"rm-field-label\">Daily food %<\/div>' +\n          '<div class=\"rm-field-display\" id=\"rm-pct-' + dog.id + '\">' + (parseFloat(dog.weight) > 0 ? ((2 + dog.activity\/10)\/100*100).toFixed(2) + '% daily' : '\u2014') + '<\/div><\/div>' +\n        '<\/div>' +\n        '<div class=\"rm-slider-section\">' +\n          '<div class=\"rm-slider-header\">' +\n            '<div class=\"rm-field-label\" style=\"margin:0\">Activity level<\/div>' +\n            '<span class=\"rm-activity-badge\" id=\"rm-badge-' + dog.id + '\">' + dog.activity + '\/10 \u2014 ' + activityLabels[dog.activity] + '<\/span>' +\n          '<\/div>' +\n          '<input type=\"range\" class=\"rm-slider\" id=\"rm-slider-' + dog.id + '\" min=\"0\" max=\"10\" step=\"1\" value=\"' + dog.activity + '\" style=\"--val:' + sliderVal + '\" oninput=\"rmUpdateActivity(' + dog.id + ', this.value)\" \/>' +\n          '<div class=\"rm-slider-labels\"><span>Inactive (2%)<\/span><span>Very active (3%)<\/span><\/div>' +\n        '<\/div>' +\n        '<div id=\"rm-res-' + dog.id + '\"><\/div>' +\n      '<\/div>';\n    }).join('');\n\n    renderResults();\n  }\n\n  addDog();\n})();\n<\/script>\n\n<!-- =========================================================\n     End of Rustic Mutt Raw Food Calculator\n     ========================================================= -->\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Raw Food Calculator Calculate your dog&#8217;s recommended raw food intake, and weekly or monthly 5lb tube needs. + Add another [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-2285","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/rusticmutt.com\/index.php?rest_route=\/wp\/v2\/pages\/2285","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rusticmutt.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/rusticmutt.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/rusticmutt.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/rusticmutt.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2285"}],"version-history":[{"count":17,"href":"https:\/\/rusticmutt.com\/index.php?rest_route=\/wp\/v2\/pages\/2285\/revisions"}],"predecessor-version":[{"id":2326,"href":"https:\/\/rusticmutt.com\/index.php?rest_route=\/wp\/v2\/pages\/2285\/revisions\/2326"}],"wp:attachment":[{"href":"https:\/\/rusticmutt.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2285"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}