{"id":52,"date":"2026-09-01T21:52:18","date_gmt":"2026-09-01T13:52:18","guid":{"rendered":"http:\/\/zphchealth.com\/?page_id=52"},"modified":"2026-09-01T21:56:28","modified_gmt":"2026-09-01T13:56:28","slug":"tools","status":"publish","type":"page","link":"https:\/\/zphchealth.com\/index.php\/tools\/","title":{"rendered":"Tools"},"content":{"rendered":"\n<div class=\"wp-block-stackable-columns alignfull stk-block-columns stk-block stk-7b7486c\" data-block-id=\"7b7486c\"><div class=\"stk-row stk-inner-blocks stk-block-content stk-content-align stk-7b7486c-column alignfull\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-3bf13a2\" data-v=\"4\" data-block-id=\"3bf13a2\"><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-3bf13a2-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-3bf13a2-inner-blocks\">\n<!-- VERSION 1.1: Static cards + resilient initialization. Replace the ENTIRE old block with this file. Hide the theme page title. -->\n<style>\n.lz-tools,.lz-tools *{box-sizing:border-box}\n.lz-tools{--blue:#2c629c;--line:#bacfe3;--soft:#f5f8fa;--text:#34495f;font-family:Arial,Helvetica,sans-serif;color:var(--blue);max-width:1200px;width:100%;margin:0 auto;padding:28px 20px 50px;font-size:16px;line-height:1.65;overflow-wrap:anywhere;scroll-margin-top:100px}\n.lz-tools [hidden]{display:none!important}.lz-tools a{color:var(--blue);text-underline-offset:3px}.lz-tools p{margin:0 0 16px;line-height:1.65;color:inherit}.lz-tools h1,.lz-tools h2,.lz-tools h3{color:var(--blue);line-height:1.25;letter-spacing:0}\n.lz-tools h1{font-size:40px;margin:0 0 14px;font-weight:500}.lz-tools h2{font-size:26px;margin:0 0 16px}.lz-tools h3{font-size:22px;margin:0 0 12px}\n.lz-tools button,.lz-tools input,.lz-tools select{font:inherit}.lz-tools a:focus-visible,.lz-tools button:focus-visible,.lz-tools input:focus-visible,.lz-tools select:focus-visible,.lz-tools summary:focus-visible{outline:3px solid #123e6d;outline-offset:4px}.lz-tools h1:focus{outline:none}\n.lz-tools .lz-t-breadcrumb{font-size:15px;margin-bottom:26px;color:#63768a}.lz-tools .lz-t-breadcrumb span{margin:0 8px}\n.lz-tools .lz-t-popular-wrap{border:1px solid var(--line);background:rgba(245,248,250,.94);padding:14px;border-radius:16px;margin-bottom:24px}\n.lz-tools .lz-t-tag{display:inline-block;border:1px solid #cbdcec;background:#f9fcff;color:var(--blue);padding:3px 10px;border-radius:30px;font-size:11px;line-height:1.5;font-weight:700;text-transform:uppercase;letter-spacing:.06em}\n.lz-tools .lz-t-popular{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:12px}.lz-tools .lz-t-popular>div{background:#fff;border:1px solid var(--line);padding:16px 12px;border-radius:12px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:8px}.lz-tools .lz-t-popular small{text-transform:uppercase;font-size:10px;letter-spacing:.08em;font-weight:700}.lz-tools .lz-t-popular strong{font-size:14px;line-height:1.45;flex:1}\n.lz-tools .lz-t-button,.lz-tools .lz-t-secondary{display:inline-flex;align-items:center;justify-content:center;min-height:44px;gap:6px;padding:8px 18px;border-radius:25px;text-decoration:none;font-size:15px;font-weight:700;line-height:1.4;cursor:pointer;text-align:center;transition:background .15s,box-shadow .15s;max-width:100%}\n.lz-tools .lz-t-button{color:#fff;border:1px solid #4475a4;background:linear-gradient(180deg,#c0d5e9 0%,#5786b1 24%,#2c629c 45%,#235a90 100%);box-shadow:0 4px 0 #8cacc9,0 7px 12px #234f7420;text-shadow:0 1px 1px #163d65}\n.lz-tools .lz-t-button:hover{background:#245686;box-shadow:0 3px 0 #7799b9,0 5px 8px #234f7420}.lz-tools .lz-t-secondary{color:var(--blue);border:1px solid #8badd0;background:#f8fbff;box-shadow:0 3px 0 #d5e1ed}.lz-tools .lz-t-secondary:hover{background:#eaf2fa}\n.lz-tools .lz-t-filters{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 12px}.lz-tools .lz-t-filter{min-height:44px;padding:7px 15px;border:1px solid #c2d5e6;border-radius:26px;background:#fff;color:var(--blue);font-size:16px;font-weight:700;cursor:pointer}.lz-tools .lz-t-filter[aria-pressed=true]{background:#e8f1fb;border-color:#2c629c;box-shadow:inset 0 0 0 1px #2c629c}\n.lz-tools .lz-t-count{font-size:13px;margin-bottom:8px}.lz-tools .lz-t-intro{text-align:center;max-width:1000px;margin:14px auto 24px;font-weight:600;font-size:17px}\n.lz-tools .lz-t-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px}.lz-tools .lz-t-card{display:flex;flex-direction:column;background:rgba(255,255,255,.97);padding:22px 18px;border:1px solid #b8d1e5;border-radius:18px;box-shadow:0 8px 18px #235f8c0b;min-width:0}.lz-tools .lz-t-card:nth-child(3n+1){border-color:#bddbcf}.lz-tools .lz-t-card:nth-child(3n+2){border-color:#e5d5b9}\n.lz-tools .lz-t-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:6px;margin-bottom:20px;min-height:68px}.lz-tools .lz-t-card-top img{width:78px;height:64px;object-fit:cover;border:1px solid #cbdceb;border-radius:10px;box-shadow:0 4px 12px #2c629c18}.lz-tools .lz-t-card-top .lz-t-tag{max-width:120px;font-size:10px;margin-top:8px}.lz-tools .lz-t-card h2{font-size:25px;font-weight:400;margin:0 0 14px}.lz-tools .lz-t-card>p{font-size:16px}.lz-tools .lz-t-private{border-left:4px solid var(--blue);background:var(--soft);padding:13px 14px;font-size:14px;font-weight:400}.lz-tools .lz-t-card-actions{display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px;margin-top:auto;padding-top:18px}.lz-tools .lz-t-card-actions a{font-size:13px;padding:8px 12px}\n.lz-tools .lz-t-footnote{margin:28px 0 0;font-size:13px;text-align:center;color:#596d81}.lz-tools .lz-t-detail-head{padding:32px 0 24px}.lz-tools .lz-t-detail-head h1{font-size:40px;font-weight:700;max-width:900px}.lz-tools .lz-t-eyebrow{font-size:12px;font-weight:700;letter-spacing:.1em;margin-bottom:12px}\n.lz-tools .lz-t-panel{border:1px solid var(--line);border-radius:14px;background:#fff;padding:24px;margin:0 0 20px;min-width:0}.lz-tools .lz-t-panel h2{font-size:22px;font-weight:400}.lz-tools .lz-t-panel p:last-child{margin-bottom:0}.lz-tools .lz-t-disclaimer,.lz-tools .lz-t-urgent{background:#f5f8fa;border:1px solid var(--line);padding:16px 20px;border-radius:12px;margin-bottom:20px;font-size:15px}.lz-tools .lz-t-urgent{border-left:5px solid #a83c31;color:#84291f;background:#fff7f4}\n.lz-tools .lz-t-workspace{display:grid;grid-template-columns:1.1fr 1fr;gap:20px;align-items:start}.lz-tools .lz-t-fields{display:grid;grid-template-columns:1fr 1fr;gap:16px}.lz-tools .lz-t-fields label{display:flex;flex-direction:column;font-weight:700;font-size:15px;gap:8px;min-width:0}.lz-tools input[type=number],.lz-tools select{width:100%;min-height:52px;border:1px solid #c1d3e5;border-radius:9px;padding:10px 12px;background:#fff;color:var(--blue);font-weight:600;box-shadow:none}.lz-tools input[type=number]:invalid:not(:placeholder-shown){box-shadow:none}\n.lz-tools .lz-t-fields .lz-t-check{grid-column:1\/-1;display:flex;flex-direction:row;align-items:flex-start;gap:10px;font-size:14px;font-weight:400}.lz-tools input[type=checkbox]{appearance:auto;flex:0 0 20px;width:20px;height:20px;margin:3px 0 0;accent-color:#2c629c}.lz-tools .lz-t-help{grid-column:1\/-1;font-size:13px;color:#5c7084;margin:0}.lz-tools .lz-t-plates{grid-column:1\/-1;margin:0;border:1px solid #d7e2ec;border-radius:10px;padding:12px}.lz-tools .lz-t-plates legend{font-weight:700;font-size:14px;padding:0 5px}.lz-tools [data-plates]{display:flex;flex-wrap:wrap;gap:14px}.lz-tools .lz-t-plates small{display:block;font-size:12px;color:#5c7084;margin-top:12px}\n.lz-tools .lz-t-form-actions{display:flex;gap:12px;margin-top:22px}.lz-tools .lz-t-form-actions .lz-t-button{flex:1}.lz-tools .lz-t-error{padding:12px;background:#fff2ee;color:#922d23;border:1px solid #ecc1b6;border-radius:8px;margin:16px 0 0;font-size:14px}.lz-tools .lz-t-result{background:#f8fafc;position:sticky;top:24px}.lz-tools .lz-t-metric{background:white;border:1px solid #d9e3ed;padding:18px;border-radius:10px;margin:12px 0}.lz-tools .lz-t-metric strong{display:block;font-size:29px;line-height:1.3}.lz-tools .lz-t-metric span{display:block;font-size:14px;margin-top:6px}.lz-tools .lz-t-result-note{font-size:14px;line-height:1.8;margin-top:18px;color:#40566b}.lz-tools .lz-t-panel ul{margin:12px 0;padding-left:22px}.lz-tools details{border-top:1px solid #e1e9f0;padding:14px 0}.lz-tools summary{cursor:pointer;font-weight:700;min-height:28px}.lz-tools details p{margin-top:12px;font-size:15px}.lz-tools .lz-t-fallback{padding:20px;border:1px solid #d9b69b;background:#fff7ed}\n@media(max-width:1050px){.lz-tools .lz-t-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.lz-tools .lz-t-popular{grid-template-columns:repeat(2,minmax(0,1fr))}}\n@media(max-width:800px){.lz-tools .lz-t-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.lz-tools .lz-t-workspace{grid-template-columns:1fr}.lz-tools .lz-t-result{position:static}}\n@media(max-width:520px){.lz-tools{padding:24px 14px 36px}.lz-tools h1,.lz-tools .lz-t-detail-head h1{font-size:32px}.lz-tools h2{font-size:24px}.lz-tools .lz-t-grid{grid-template-columns:1fr;gap:16px}.lz-tools .lz-t-card{padding:22px}.lz-tools .lz-t-card h2{font-size:27px}.lz-tools .lz-t-card-top img{width:88px;height:68px}.lz-tools .lz-t-popular{gap:9px}.lz-tools .lz-t-popular>div{padding:14px 8px}.lz-tools .lz-t-popular strong{font-size:13px}.lz-tools .lz-t-popular .lz-t-button{font-size:13px;padding:8px 12px}.lz-tools .lz-t-filter{font-size:14px;padding:7px 12px}.lz-tools .lz-t-panel{padding:20px 16px}.lz-tools .lz-t-fields{grid-template-columns:1fr}.lz-tools .lz-t-metric strong{font-size:26px}.lz-tools .lz-t-intro{text-align:left;font-size:16px}.lz-tools .lz-t-form-actions{flex-wrap:wrap}.lz-tools .lz-t-detail-head{padding-top:26px}}\n@media(prefers-reduced-motion:reduce){.lz-tools *{transition:none!important}}\n\n<\/style>\n<div class=\"lz-tools\" data-lz-tools>\n<div data-directory><header><h1 tabindex=\"-1\">labszphc Tools<\/h1><nav class=\"lz-t-breadcrumb\" aria-label=\"Breadcrumb\"><a href=\"\/\">Home<\/a><span aria-hidden=\"true\">\/<\/span><span aria-current=\"page\">Tools<\/span><\/nav><\/header>\n<section class=\"lz-t-popular-wrap\" aria-label=\"Popular tools\"><span class=\"lz-t-tag\">Popular<\/span><div class=\"lz-t-popular\" data-popular><div><small>Nutrition<\/small><strong>Protein Reference Calculator<\/strong><a class=\"lz-t-button\" href=\"#lz-tool-protein\">Open tool<\/a><\/div><div><small>Training<\/small><strong>1RM &amp; Barbell Plate Planner<\/strong><a class=\"lz-t-button\" href=\"#lz-tool-strength\">Open tool<\/a><\/div><div><small>Body composition<\/small><strong>Daily Calorie Planner<\/strong><a class=\"lz-t-button\" href=\"#lz-tool-calories\">Open tool<\/a><\/div><div><small>Clean sport<\/small><strong>Supplement Review Checklist<\/strong><a class=\"lz-t-button\" href=\"#lz-tool-supplement\">Open tool<\/a><\/div><\/div><\/section>\n<section aria-label=\"Tool filters\"><h2>Find a tool by category<\/h2><div class=\"lz-t-filters\" data-filters><button type=\"button\" class=\"lz-t-filter\" aria-pressed=\"true\" data-filter=\"All tools\">All tools<\/button><button type=\"button\" class=\"lz-t-filter\" aria-pressed=\"false\" data-filter=\"Nutrition\">Nutrition<\/button><button type=\"button\" class=\"lz-t-filter\" aria-pressed=\"false\" data-filter=\"Cholesterol\">Cholesterol<\/button><button type=\"button\" class=\"lz-t-filter\" aria-pressed=\"false\" data-filter=\"Training\">Training<\/button><button type=\"button\" class=\"lz-t-filter\" aria-pressed=\"false\" data-filter=\"Body composition\">Body composition<\/button><button type=\"button\" class=\"lz-t-filter\" aria-pressed=\"false\" data-filter=\"Rehabilitation\">Rehabilitation<\/button><button type=\"button\" class=\"lz-t-filter\" aria-pressed=\"false\" data-filter=\"Health education\">Health education<\/button><button type=\"button\" class=\"lz-t-filter\" aria-pressed=\"false\" data-filter=\"Activity\">Activity<\/button><button type=\"button\" class=\"lz-t-filter\" aria-pressed=\"false\" data-filter=\"Clean sport\">Clean sport<\/button><\/div><p class=\"lz-t-count\" data-count aria-live=\"polite\">10 tools shown<\/p><\/section>\n<p class=\"lz-t-intro\">Practical tools for nutrition, training and informed self-checks. Explore an estimate, understand its limits and take better questions to your coach or care team.<\/p>\n<div class=\"lz-t-grid\" data-grid><article class=\"lz-t-card\" data-category=\"Nutrition\"><div class=\"lz-t-card-top\"><span class=\"lz-t-tag\">Nutrition<\/span><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/09\/pexels-achi-murusidze-2064615248-35649998-scaled.jpg\" alt=\"\" loading=\"lazy\" width=\"88\" height=\"68\"><\/div><h2>Protein Reference Calculator<\/h2><p>Turn body weight into a daily protein reference for healthy adults.<\/p><p class=\"lz-t-private\">Calculated on this page.<br>No account required.<\/p><div class=\"lz-t-card-actions\"><a class=\"lz-t-secondary\" href=\"https:\/\/pubmed.ncbi.nlm.nih.gov\/28642676\/\">Reference<\/a><a class=\"lz-t-button\" href=\"#lz-tool-protein\">Use tool<\/a><\/div><\/article><article class=\"lz-t-card\" data-category=\"Cholesterol\"><div class=\"lz-t-card-top\"><span class=\"lz-t-tag\">Cholesterol<\/span><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/09\/pexels-zain-alabdeen-hammoudi-2151566197-33589377-1-scaled.jpg\" alt=\"\" loading=\"lazy\" width=\"88\" height=\"68\"><\/div><h2>Saturated Fat Calculator<\/h2><p>Convert a calorie percentage into grams of saturated fat.<\/p><p class=\"lz-t-private\">Calculated on this page.<br>No account required.<\/p><div class=\"lz-t-card-actions\"><a class=\"lz-t-secondary\" href=\"https:\/\/www.heart.org\/en\/healthy-living\/healthy-eating\/eat-smart\/fats\/saturated-fats\">Reference<\/a><a class=\"lz-t-button\" href=\"#lz-tool-fat\">Use tool<\/a><\/div><\/article><article class=\"lz-t-card\" data-category=\"Training\"><div class=\"lz-t-card-top\"><span class=\"lz-t-tag\">Training<\/span><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/09\/pexels-pavel-danilyuk-6296103-scaled.jpg\" alt=\"\" loading=\"lazy\" width=\"88\" height=\"68\"><\/div><h2>1RM &amp; Barbell Plate Planner<\/h2><p>Estimate a one-rep maximum and balanced plates for a chosen load.<\/p><p class=\"lz-t-private\">Calculated on this page.<br>No account required.<\/p><div class=\"lz-t-card-actions\"><a class=\"lz-t-secondary\" href=\"https:\/\/pubmed.ncbi.nlm.nih.gov\/16937972\/\">Reference<\/a><a class=\"lz-t-button\" href=\"#lz-tool-strength\">Use tool<\/a><\/div><\/article><article class=\"lz-t-card\" data-category=\"Training\"><div class=\"lz-t-card-top\"><span class=\"lz-t-tag\">Training<\/span><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/09\/pexels-merve-205352359-30507157-scaled.jpg\" alt=\"\" loading=\"lazy\" width=\"88\" height=\"68\"><\/div><h2>Weekly Training Volume<\/h2><p>Add up weekly sets, repetitions and external-load volume.<\/p><p class=\"lz-t-private\">Calculated on this page.<br>No account required.<\/p><div class=\"lz-t-card-actions\"><a class=\"lz-t-secondary\" href=\"https:\/\/pubmed.ncbi.nlm.nih.gov\/16937972\/\">Reference<\/a><a class=\"lz-t-button\" href=\"#lz-tool-volume\">Use tool<\/a><\/div><\/article><article class=\"lz-t-card\" data-category=\"Body composition\"><div class=\"lz-t-card-top\"><span class=\"lz-t-tag\">Body composition<\/span><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/09\/pexels-gu-ko-2150570603-35376433-scaled.jpg\" alt=\"\" loading=\"lazy\" width=\"88\" height=\"68\"><\/div><h2>Daily Calorie Planner<\/h2><p>Explore resting energy, maintenance and a chosen calorie scenario.<\/p><p class=\"lz-t-private\">Calculated on this page.<br>No account required.<\/p><div class=\"lz-t-card-actions\"><a class=\"lz-t-secondary\" href=\"https:\/\/pubmed.ncbi.nlm.nih.gov\/2305711\/\">Reference<\/a><a class=\"lz-t-button\" href=\"#lz-tool-calories\">Use tool<\/a><\/div><\/article><article class=\"lz-t-card\" data-category=\"Body composition\"><div class=\"lz-t-card-top\"><span class=\"lz-t-tag\">Body composition<\/span><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/09\/pexels-foadshariyati-31849599-1.jpg\" alt=\"\" loading=\"lazy\" width=\"88\" height=\"68\"><\/div><h2>BMI &amp; Waist-to-Height<\/h2><p>Put adult body measurements into context with clear limitations.<\/p><p class=\"lz-t-private\">Calculated on this page.<br>No account required.<\/p><div class=\"lz-t-card-actions\"><a class=\"lz-t-secondary\" href=\"https:\/\/www.cdc.gov\/bmi\/adult-calculator\/bmi-categories.html\">Reference<\/a><a class=\"lz-t-button\" href=\"#lz-tool-bmi\">Use tool<\/a><\/div><\/article><article class=\"lz-t-card\" data-category=\"Rehabilitation\"><div class=\"lz-t-card-top\"><span class=\"lz-t-tag\">Rehabilitation<\/span><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/09\/pexels-foadshariyati-30284373.jpg\" alt=\"\" loading=\"lazy\" width=\"88\" height=\"68\"><\/div><h2>Injury Warning-Sign Check<\/h2><p>Review selected injury symptoms and when to seek assessment.<\/p><p class=\"lz-t-private\">Calculated on this page.<br>No account required.<\/p><div class=\"lz-t-card-actions\"><a class=\"lz-t-secondary\" href=\"https:\/\/www.nhs.uk\/conditions\/sprains-and-strains\/\">Reference<\/a><a class=\"lz-t-button\" href=\"#lz-tool-rehab\">Use tool<\/a><\/div><\/article><article class=\"lz-t-card\" data-category=\"Health education\"><div class=\"lz-t-card-top\"><span class=\"lz-t-tag\">Health education<\/span><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/09\/pexels-emanuel-pedro-1266938328-32610337-scaled.jpg\" alt=\"\" loading=\"lazy\" width=\"88\" height=\"68\"><\/div><h2>GLP-1 Nutrition Review<\/h2><p>Prepare nutrition and symptom questions for your existing care team.<\/p><p class=\"lz-t-private\">Calculated on this page.<br>No account required.<\/p><div class=\"lz-t-card-actions\"><a class=\"lz-t-secondary\" href=\"https:\/\/www.gov.uk\/drug-safety-update\/glp-1-receptor-agonists-and-dual-glp-1-slash-gip-receptor-agonists-strengthened-warnings-on-acute-pancreatitis-including-necrotising-and-fatal-cases\">Reference<\/a><a class=\"lz-t-button\" href=\"#lz-tool-glp\">Use tool<\/a><\/div><\/article><article class=\"lz-t-card\" data-category=\"Activity\"><div class=\"lz-t-card-top\"><span class=\"lz-t-tag\">Activity<\/span><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/09\/pexels-cottonbro-7688863-scaled.jpg\" alt=\"\" loading=\"lazy\" width=\"88\" height=\"68\"><\/div><h2>After-Meal Walk Planner<\/h2><p>Create a simple weekly walking schedule around your meals.<\/p><p class=\"lz-t-private\">Calculated on this page.<br>No account required.<\/p><div class=\"lz-t-card-actions\"><a class=\"lz-t-secondary\" href=\"https:\/\/www.cdc.gov\/physical-activity-basics\/guidelines\/adults.html\">Reference<\/a><a class=\"lz-t-button\" href=\"#lz-tool-walk\">Use tool<\/a><\/div><\/article><article class=\"lz-t-card\" data-category=\"Clean sport\"><div class=\"lz-t-card-top\"><span class=\"lz-t-tag\">Clean sport<\/span><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/09\/pexels-amar-13965341-scaled.jpg\" alt=\"\" loading=\"lazy\" width=\"88\" height=\"68\"><\/div><h2>Supplement Review Checklist<\/h2><p>Record unanswered questions about a supplement before use.<\/p><p class=\"lz-t-private\">Calculated on this page.<br>No account required.<\/p><div class=\"lz-t-card-actions\"><a class=\"lz-t-secondary\" href=\"https:\/\/www.usada.org\/substances\/supplement-connect\/\">Reference<\/a><a class=\"lz-t-button\" href=\"#lz-tool-supplement\">Use tool<\/a><\/div><\/article><\/div>\n<p class=\"lz-t-footnote\">Educational tools for adults. Checklists do not diagnose conditions or certify supplement safety.<br>Calculations are local to this page. Reference links open external resources.<br>Content version: 1 September 2026.<\/p><\/div>\n<div data-detail hidden><\/div><p class=\"lz-t-disclaimer\" data-runtime-note role=\"status\">Interactive calculators are not active in this view. Open the published page or reload it to use the tools.<\/p>\n<noscript><p class=\"lz-t-fallback\">These interactive tools require JavaScript. Please enable it to open a calculator. For guidance, visit <a href=\"https:\/\/www.cdc.gov\/physical-activity-basics\/guidelines\/adults.html\">CDC activity guidance<\/a> or <a href=\"https:\/\/www.usada.org\/substances\/supplement-connect\/\">USADA Supplement Connect<\/a>.<\/p><\/noscript>\n<\/div>\n<script>\n(function(){\n'use strict';\nconst N=(x,min,max,label)=>{const v=Number(x);if(x===''||x==null||!Number.isFinite(v)||v<min||v>max)throw Error(label+' must be between '+min+' and '+max+'.');return v;};\nconst I=(x,min,max,label)=>{const v=N(x,min,max,label);if(!Number.isInteger(v))throw Error(label+' must be a whole number.');return v;};\nconst kg=d=>N(d.weight,1,1000,'Weight')\/(d.unit==='lb'?2.2046226218:1);\nconst mass=d=>{const v=kg(d);if(v<35||v>300)throw Error('This adult calculator supports body weights from 35 to 300 kg (77\u2013661 lb).');return v;};\nconst eligible=d=>{if(!d.eligible)throw Error('Please confirm the adult-use statement, or consult a qualified professional for individual advice.');};\nconst f=(v,n=1)=>Number(v).toFixed(n);\nfunction calculate(id,d){\n const out=(title,items,note)=>({title,items,note});\n if(id==='protein'){eligible(d);const w=mass(d),active=d.training!=='none';return out(active?'Daily protein reference range':'Adult protein RDA reference',active?[[f(w*1.4,0)+'\u2013'+f(w*2,0)+' g\/day','1.4\u20132.0 g\/kg \u00d7 '+f(w)+' kg']]:[[f(w*.8,0)+' g\/day','0.8 g\/kg adult RDA reference, not an optimal target for every person']],(active?'The ISSN range applies to most healthy exercising adults. ':'This is the traditional adult RDA reference, not a training or weight-loss target. ')+(d.goal==='diet'?'Energy restriction may change protein needs; this tool does not automatically prescribe a higher intake. ':'')+'Include protein from all foods. Individual needs, older age and medical conditions require individual assessment.');}\n if(id==='fat'){const c=N(d.calories,1000,6000,'Daily calories'),pct=N(d.percent,1,15,'Percent');return out('Saturated fat reference',[[f(c*pct\/100\/9)+' g\/day','Amount equivalent to '+pct+'% of '+c+' kcal']],pct===6?'AHA guidance is less than 6% of calories. The displayed figure is the boundary, not a minimum intake or a cholesterol prediction.':'This is your entered percentage, not a recommended target. Formula: calories \u00d7 percentage \u00f7 100 \u00f7 9.');}\n if(id==='strength'){const w=N(d.load,1,1000,'Load'),r=I(d.reps,1,10,'Repetitions'),bar=N(d.bar,0,100,'Bar weight'),pct=N(d.percent,40,100,'Load percentage');const rm=r===1?w:w*(1+r\/30),target=rm*pct\/100;\n const units=d.unit==='lb'?[45,35,25,10,5,2.5]:[25,20,15,10,5,2.5,1.25];\n const available=units.filter(v=>d['plate'+v]);if(!available.length)throw Error('Choose at least one available plate size.');\n if(target<bar)throw Error('The selected target is lighter than the bar. Use a lighter bar or revise the percentage.');\n \/\/ Integer dynamic programming finds the closest achievable load without exceeding the target.\n const max=Math.floor(((target-bar)\/2)*4+1e-7),best=Array(max+1).fill(null);best[0]=[];\n for(let s=1;s<=max;s++)for(const p of available){const k=Math.round(p*4);if(s>=k&&best[s-k]!==null&&(!best[s]||best[s-k].length+1<best[s].length))best[s]=best[s-k].concat(p);}\n let used=max;while(used>0&&best[used]===null)used--;const plates=best[used]||[],counts={};plates.forEach(p=>counts[p]=(counts[p]||0)+1);const txt=Object.keys(counts).sort((a,b)=>b-a).map(p=>counts[p]+' \u00d7 '+p+' '+d.unit).join(' + ')||'Bar only';\n return out('Estimated strength & loading',[[f(rm)+' '+d.unit,'Estimated 1RM (Epley)'],[f(target)+' '+d.unit,'Requested '+pct+'% load'],[f(bar+used\/2)+' '+d.unit,'Achievable total, rounded down'],[txt,'Plates on EACH side; identical on both sides']], 'Assumes enough matched pairs of each selected plate size; collars excluded. This estimate is not permission to attempt a maximal lift. Formula: weight \u00d7 (1 + reps\/30); one rep uses the entered weight.');}\n if(id==='volume'){const s=N(d.sets,0,50,'Sets per session'),sessions=I(d.sessions,1,7,'Sessions per week'),reps=I(d.reps,1,50,'Reps per set'),load=N(d.load,0,500,'External load');return out('Weekly training totals',[[f(s*sessions,0)+' sets','For the selected muscle group \/ movement'],[f(s*sessions*reps,0)+' reps','Assumes the same repetitions in every set'],[f(s*sessions*reps*load,0)+' '+d.unit,'External-load volume (load \u00d7 reps \u00d7 sets)']], 'Totals describe your entered plan, not an optimal weekly dose or an injury-risk score. Do not compare load-volume across different exercises. '+(d.recovery==='yes'?'You reported persistent pain or declining recovery. Review your plan with a qualified coach or clinician before increasing training.':'Track technique, effort and recovery alongside these totals.'));}\n if(id==='calories'){eligible(d);const w=mass(d),h=N(d.height,130,220,'Height'),age=I(d.age,20,80,'Age'),factor=N(d.activity,1.2,1.9,'Activity multiplier'),deficit=N(d.deficit,0,20,'Deficit');const bmi=w\/(h\/100)**2,rmr=10*w+6.25*h-5*age+(d.sex==='male'?5:-161),maint=rmr*factor,target=maint*(1-deficit\/100);\n if(bmi<18.5&#038;&#038;deficit>0)throw Error('This tool does not generate calorie-deficit plans below BMI 18.5. Choose maintenance and seek individualized advice.');\n if(target<1500)throw Error('This tool does not generate daily plans below 1,500 kcal. This software limit is not a universal medical threshold; seek an individual assessment.');\n return out('Daily energy estimates',[[f(rmr,0)+' kcal','Estimated resting energy expenditure'],[f(maint,0)+' kcal','Estimated maintenance at \u00d7 '+factor],[f(target,0)+' kcal','Your selected '+deficit+'% reduction']], 'Mifflin\u2013St Jeor: 10\u00d7kg + 6.25\u00d7cm \u2212 5\u00d7age + sex coefficient (+5 \/ \u2212161). Activity multipliers are rough planning assumptions; real needs vary. The selected reduction is a scenario, not a prescription. No weight-loss date is predicted.');}\n if(id==='bmi'){eligible(d);const w=mass(d),h=N(d.height,130,220,'Height'),waist=N(d.waist,40,200,'Waist'),b=w\/(h\/100)**2,ratio=waist\/h;const cat=b<18.5?'Underweight':b<25?'Healthy weight':b<30?'Overweight':'Obesity';return out('Adult body-measurement references',[[f(b),'BMI \u00b7 '+cat],[f(ratio,2),'Waist-to-height ratio']], 'CDC adult BMI categories are a screening reference, not a diagnosis or a measure of body fat. High muscle mass and ethnicity affect interpretation. '+(b>=35?'This tool does not interpret waist-to-height categories at BMI 35 or above.':ratio>=.6?'NICE waist-to-height reference: high central adiposity (\u22650.60).':ratio>=.5?'NICE waist-to-height reference: increased central adiposity (0.50\u20130.59).':ratio>=.4?'NICE waist-to-height reference: 0.40\u20130.49.':'Ratio below 0.40: this tool does not classify it; verify measurements and discuss concerns with a clinician.'));}\n if(id==='rehab'){const urgent=['deformity','numb'].some(k=>d[k]==='yes'),uncertain=['deformity','numb'].some(k=>d[k]==='unsure'),review=['pain','weightbear','fever'].some(k=>d[k]!=='no');return out(urgent?'Seek emergency assessment now':uncertain?'Seek prompt professional assessment':review?'Arrange urgent clinical advice':'No listed warning sign reported',[[urgent?'Stop the activity. Use local emergency services or an emergency department.':uncertain?'A potentially serious sign is uncertain. Do not use this checklist to resume training.':review?'Do not progress training until the injury has been assessed.':'This brief checklist cannot rule out injury or clear you for exercise.','Next step']], 'For injuries only; this is not a complete triage tool. Severe illness, chest pain, severe breathing difficulty or loss of consciousness require immediate emergency help. If symptoms worsen or concern you, seek care even if every answer is No.');}\n if(id==='glp'){const urgent=d.pain!=='no',dehydration=d.fluids!=='no',review=['intake','weakness','followup'].some(k=>d[k]!=='no');return out(urgent?'Seek urgent medical attention now':dehydration?'Contact a clinician urgently':review?'Arrange a prescriber \/ dietitian review':'Prepare for your routine review',[[urgent?'Severe persistent abdominal pain can be a sign of pancreatitis. Do not wait for a nutrition plan.':dehydration?'Ongoing vomiting, inability to keep fluids down or very little urine need prompt assessment.':review?'Discuss reduced intake, weakness or gaps in follow-up with your care team.':'Keep your planned clinical follow-up; this result does not rule out medicine-related problems.','Next step']], 'For people already receiving clinician-supervised GLP-1 treatment. Follow your medicine leaflet and clinical advice. This checklist does not select a drug, change a dose or diagnose a nutritional deficiency.');}\n if(id==='walk'){const mins=I(d.minutes,1,60,'Minutes per walk'),meals=I(d.meals,1,3,'Walks per day'),days=I(d.days,1,7,'Days per week'),total=mins*meals*days;return out('Your walking schedule',[[mins*meals+' min','On each planned day'],[total+' min','Across '+days+' days this week']], 'Plan '+mins+' minutes after '+meals+' meal(s), '+days+' days per week, at a comfortable pace. '+(d.pace==='moderate'?'If the walks are genuinely moderate intensity, this contributes '+Math.min(100,Math.round(total\/150*100))+'% of the 150-minute weekly aerobic reference.':'Easy-paced walking is useful movement, but it is not automatically equivalent to moderate-intensity exercise.')+' CDC also recommends muscle-strengthening activity on at least 2 days a week. Start at a level you can manage.');}\n if(id==='supplement'){const keys=['source','label','claims','batch','rules'],flags=keys.filter(k=>d[k]!=='yes');return out(flags.length?'Unresolved checks \u2014 review before use':'Checks recorded \u2014 no safety guarantee',[[flags.length+' of 5','Questions answered No or Unsure']], 'This is not a validated risk score. '+(flags.length?'Resolve the unknowns with your anti-doping organization and a qualified professional. ':'Even verified labels and third-party testing cannot eliminate contamination or anti-doping risk. ')+'Authenticity is not anti-doping approval. Global DRO does not certify supplements.');}\n throw Error('Unknown tool.');\n}\nif(typeof module!=='undefined'&&module.exports){module.exports={calculate};return;}\nfunction boot(){\ndocument.querySelectorAll('[data-lz-tools]').forEach(function(root){\nif(root.__lzToolsInitialized)return;root.__lzToolsInitialized=true;\nconst loadingNote=root.querySelector('[data-runtime-note]');if(loadingNote)loadingNote.hidden=true;\nconst sources={protein:['ISSN: protein and exercise','https:\/\/pubmed.ncbi.nlm.nih.gov\/28642676\/'],rda:['USDA Dietary Reference Intake calculator','https:\/\/www.nal.usda.gov\/human-nutrition-and-food-safety\/dri-calculator'],fat:['American Heart Association: saturated fat','https:\/\/www.heart.org\/en\/healthy-living\/healthy-eating\/eat-smart\/fats\/saturated-fats'],strength:['Research: repetitions and 1RM estimation','https:\/\/pubmed.ncbi.nlm.nih.gov\/16937972\/'],calories:['Mifflin\u2013St Jeor research','https:\/\/pubmed.ncbi.nlm.nih.gov\/2305711\/'],bmi:['CDC adult BMI categories','https:\/\/www.cdc.gov\/bmi\/adult-calculator\/bmi-categories.html'],waist:['NICE: BMI and central adiposity','https:\/\/www.nice.org.uk\/guidance\/ng246\/chapter\/Identifying-and-assessing-overweight-obesity-and-central-adiposity'],rehab:['NHS: sprains and strains','https:\/\/www.nhs.uk\/conditions\/sprains-and-strains\/'],glp:['MHRA: GLP-1 and pancreatitis','https:\/\/www.gov.uk\/drug-safety-update\/glp-1-receptor-agonists-and-dual-glp-1-slash-gip-receptor-agonists-strengthened-warnings-on-acute-pancreatitis-including-necrotising-and-fatal-cases'],fluids:['Wegovy: safety information','https:\/\/www.wegovy.com\/obesity\/is-wegovy-right-for-me\/safety-side-effects.html'],walk:['CDC adult activity guidance','https:\/\/www.cdc.gov\/physical-activity-basics\/guidelines\/adults.html'],supplement:['USADA Supplement Connect','https:\/\/www.usada.org\/substances\/supplement-connect\/'],dro:['Global DRO','https:\/\/www.globaldro.com\/']};\nconst tools=[\n['protein','Nutrition','Protein Reference Calculator','Turn body weight into a daily protein reference for healthy adults.',['protein','rda']],\n['fat','Cholesterol','Saturated Fat Calculator','Convert a calorie percentage into grams of saturated fat.',['fat']],\n['strength','Training','1RM & Barbell Plate Planner','Estimate a one-rep maximum and balanced plates for a chosen load.',['strength']],\n['volume','Training','Weekly Training Volume','Add up weekly sets, repetitions and external-load volume.',['strength']],\n['calories','Body composition','Daily Calorie Planner','Explore resting energy, maintenance and a chosen calorie scenario.',['calories']],\n['bmi','Body composition','BMI & Waist-to-Height','Put adult body measurements into context with clear limitations.',['bmi','waist']],\n['rehab','Rehabilitation','Injury Warning-Sign Check','Review selected injury symptoms and when to seek assessment.',['rehab']],\n['glp','Health education','GLP-1 Nutrition Review','Prepare nutrition and symptom questions for your existing care team.',['glp','fluids']],\n['walk','Activity','After-Meal Walk Planner','Create a simple weekly walking schedule around your meals.',['walk']],\n['supplement','Clean sport','Supplement Review Checklist','Record unanswered questions about a supplement before use.',['supplement','dro']]\n];\nconst imageNames=['pexels-achi-murusidze-2064615248-35649998-scaled.jpg','pexels-zain-alabdeen-hammoudi-2151566197-33589377-1-scaled.jpg','pexels-pavel-danilyuk-6296103-scaled.jpg','pexels-merve-205352359-30507157-scaled.jpg','pexels-gu-ko-2150570603-35376433-scaled.jpg','pexels-foadshariyati-31849599-1.jpg','pexels-foadshariyati-30284373.jpg','pexels-emanuel-pedro-1266938328-32610337-scaled.jpg','pexels-cottonbro-7688863-scaled.jpg','pexels-amar-13965341-scaled.jpg'];\nconst esc=s=>String(s).replace(\/[&<>\"']\/g,c=>({'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#39;'}[c]));\nconst num=(name,label,min,max,step=1,value='')=>'<label>'+label+'<input type=\"number\" name=\"'+name+'\" min=\"'+min+'\" max=\"'+max+'\" step=\"'+step+'\" value=\"'+value+'\" required inputmode=\"decimal\"><\/label>';\nconst sel=(name,label,opts)=>'<label>'+label+'<select name=\"'+name+'\" required>'+opts.map(([v,l])=>'<option value=\"'+v+'\">'+l+'<\/option>').join('')+'<\/select><\/label>';\nconst check=(name,label,checked=false)=>'<label class=\"lz-t-check\"><input type=\"checkbox\" name=\"'+name+'\"'+(checked?' checked':'')+'><span>'+label+'<\/span><\/label>';\nconst yn=(name,label)=>sel(name,label,[['','Choose an answer'],['no','No'],['yes','Yes'],['unsure','Unsure']]);\nconst units=()=>sel('unit','Weight unit',[['kg','kg'],['lb','lb']]);\nconst eligibleField=()=>check('eligible','I am 20 or older, not pregnant or breastfeeding, and do not have a medical condition, eating disorder or treatment requiring individualized nutrition advice.');\nconst weight=()=>num('weight','Body weight',1,1000,.1)+units();\nfunction fields(id){switch(id){\ncase'protein':return weight()+sel('training','Training level',[['regular','Regular exercise'],['resistance','Resistance training'],['none','No regular exercise']])+sel('goal','Purpose',[['general','General reference'],['muscle','Support training'],['diet','Discuss a weight-loss plan']])+eligibleField();\ncase'fat':return num('calories','Daily energy (kcal)',1000,6000,1,2000)+num('percent','Calorie percentage (%)',1,15,.1,6)+'<p class=\"lz-t-help\">Default: AHA\u2019s 6% boundary. If entering another percentage, use a target agreed with your clinician.<\/p>';\ncase'strength':return num('load','Weight lifted (including bar)',1,1000,.25)+units()+num('reps','Completed repetitions',1,10,1,5)+num('bar','Bar weight (selected unit)',0,100,.25,20)+num('percent','Requested % of estimated 1RM',40,100,1,80)+'<fieldset class=\"lz-t-plates\"><legend>Available plate sizes (matched pairs)<\/legend><div data-plates><\/div><small>Assumes enough pairs of every checked size. Match the bar weight to the selected unit.<\/small><\/fieldset>';\ncase'volume':return num('sets','Sets per session (one muscle group)',0,50,1,3)+num('sessions','Sessions per week',1,7,1,3)+num('reps','Repetitions per set',1,50,1,10)+num('load','External load per repetition',0,500,.25,20)+units()+sel('recovery','Persistent pain or declining recovery?',[['no','No'],['yes','Yes']]);\ncase'calories':return weight()+num('height','Height (cm)',130,220,.1)+num('age','Age (years)',20,80,1)+sel('sex','Sex coefficient used by the equation',[['female','Female (\u2212161)'],['male','Male (+5)']])+sel('activity','Approximate activity multiplier',[['1.2','Mostly sedentary \u00b7 1.20'],['1.375','Lightly active \u00b7 1.375'],['1.55','Moderately active \u00b7 1.55'],['1.725','Very active \u00b7 1.725'],['1.9','Exceptionally active \u00b7 1.90']])+num('deficit','Chosen reduction from maintenance (%)',0,20,1,0)+eligibleField();\ncase'bmi':return weight()+num('height','Height (cm)',130,220,.1)+num('waist','Waist circumference (cm)',40,200,.1)+eligibleField()+'<p class=\"lz-t-help\">Measure waist midway between the bottom ribs and top of the hips after breathing out naturally. Use the same unit (cm) for height and waist.<\/p>';\ncase'rehab':return yn('deformity','1. A crack at injury, a changed shape or an unusual angle?')+yn('numb','2. Injury area numb, tingling, blue\/grey or cold?')+yn('pain','3. Severe or worsening pain or swelling?')+yn('weightbear','4. Unable to bear weight or use the injured area normally?')+yn('fever','5. Fever or feeling unwell with the injury?');\ncase'glp':return yn('pain','1. Severe, persistent abdominal pain, possibly spreading to the back?')+yn('fluids','2. Persistent vomiting, unable to keep fluids down or very little urine?')+yn('intake','3. Eating substantially less or regularly unable to manage meals?')+yn('weakness','4. Ongoing weakness or concern about muscle loss?')+yn('followup','5. Missing follow-up or unsure whom to contact about nutrition?');\ncase'walk':return num('minutes','Minutes per walk',1,60,1,10)+num('meals','Walks after meals per day',1,3,1,1)+num('days','Days per week',1,7,1,5)+sel('pace','Planned pace',[['easy','Easy \/ comfortable'],['moderate','Moderate: can talk, not sing']]);\ncase'supplement':return yn('source','1. Is the seller and manufacturer traceable?')+yn('label','2. Is the full ingredient list and batch information available?')+yn('claims','3. Is it free from promises of extreme results or secret ingredients?')+yn('batch','4. Have you verified relevant sport-specific certification for this product\/batch?')+yn('rules','5. Have you reviewed the need and anti-doping questions with qualified advisers?');}}\nconst directory=root.querySelector('[data-directory]'),detail=root.querySelector('[data-detail]'),grid=root.querySelector('[data-grid]');\ngrid.innerHTML=tools.map((t,i)=>'<article class=\"lz-t-card\" data-category=\"'+t[1]+'\"><div class=\"lz-t-card-top\"><span class=\"lz-t-tag\">'+t[1]+'<\/span><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/09\/'+imageNames[i]+'\" alt=\"\" loading=\"lazy\" width=\"88\" height=\"68\"><\/div><h2>'+t[2]+'<\/h2><p>'+t[3]+'<\/p><p class=\"lz-t-private\">Calculated on this page.<br>No account required.<\/p><div class=\"lz-t-card-actions\"><a class=\"lz-t-secondary\" href=\"'+sources[t[4][0]][1]+'\">Reference<\/a><a class=\"lz-t-button\" href=\"#lz-tool-'+t[0]+'\">Use tool<\/a><\/div><\/article>').join('');\ngrid.querySelectorAll('img').forEach(img=>img.addEventListener('error',()=>{img.hidden=true;}));\nroot.querySelector('[data-popular]').innerHTML=['protein','strength','calories','supplement'].map(id=>{const t=tools.find(t=>t[0]===id);return '<div><small>'+t[1]+'<\/small><strong>'+t[2]+'<\/strong><a class=\"lz-t-button\" href=\"#lz-tool-'+id+'\">Open tool<\/a><\/div>';}).join('');\nconst filters=['All tools',...new Set(tools.map(t=>t[1]))];\nroot.querySelector('[data-filters]').innerHTML=filters.map((c,i)=>'<button type=\"button\" class=\"lz-t-filter\" aria-pressed=\"'+(i===0)+'\" data-filter=\"'+c+'\">'+c+'<\/button>').join('');\nroot.querySelector('[data-filters]').addEventListener('click',e=>{const b=e.target.closest('[data-filter]');if(!b)return;root.querySelectorAll('[data-filter]').forEach(el=>el.setAttribute('aria-pressed',el===b?'true':'false'));grid.querySelectorAll('[data-category]').forEach(el=>el.hidden=b.dataset.filter!=='All tools'&&el.dataset.category!==b.dataset.filter);root.querySelector('[data-count]').textContent=Array.from(grid.children).filter(el=>!el.hidden).length+' tools shown';});\nfunction showTool(id,focus){const t=tools.find(t=>t[0]===id);if(!t){directory.hidden=false;detail.hidden=true;return;}directory.hidden=true;detail.hidden=false;\nconst urgent=id==='rehab'?'If an injury has caused deformity, numbness or a cold\/blue limb, seek emergency assessment now. Do not wait for the checklist.':id==='glp'?'Severe persistent abdominal pain needs urgent medical attention. Trouble breathing or loss of consciousness: use local emergency services now.':'';\ndetail.innerHTML='<a class=\"lz-t-secondary\" href=\"#lz-tools\">\u2190 All tools<\/a><header class=\"lz-t-detail-head\"><p class=\"lz-t-eyebrow\">LABSZPHC TOOLS \/ '+t[1].toUpperCase()+'<\/p><h1 tabindex=\"-1\">'+t[2]+'<\/h1><p>'+t[3]+'<\/p><\/header><section class=\"lz-t-panel\"><h2>What this tool does<\/h2><p>'+(id==='rehab'||id==='glp'||id==='supplement'?'Organizes the answers you provide into practical questions and next steps. It is not a diagnostic test or validated risk score.':'Shows an educational estimate using the inputs and method explained below.')+'<\/p><p class=\"lz-t-private\">Your entries are processed here and are not saved or sent by this tool. Other site services may have separate privacy practices.<\/p><\/section>'+(urgent?'<p class=\"lz-t-urgent\">'+urgent+'<\/p>':'<p class=\"lz-t-disclaimer\">For adult educational use. Estimates do not replace individualized nutrition, medical or training advice.<\/p>')+'<div class=\"lz-t-workspace\"><form class=\"lz-t-panel\" novalidate><h2>Use the tool<\/h2><div class=\"lz-t-fields\">'+fields(id)+'<\/div><p class=\"lz-t-error\" role=\"alert\" hidden><\/p><div class=\"lz-t-form-actions\"><button class=\"lz-t-button\" type=\"submit\">'+(['rehab','glp','supplement'].includes(id)?'Review my answers':'Calculate result')+'<\/button><button class=\"lz-t-secondary\" type=\"reset\">Reset<\/button><\/div><\/form><section class=\"lz-t-panel lz-t-result\" aria-live=\"polite\" aria-atomic=\"true\"><h2>Your result<\/h2><p>Enter your details and select '+(['rehab','glp','supplement'].includes(id)?'Review my answers':'Calculate result')+'.<\/p><\/section><\/div><section class=\"lz-t-panel lz-t-method\"><h2>References & interpretation<\/h2><p>Use the linked sources to understand the reference ranges and limitations. Results reflect the values entered; they do not guarantee a personal outcome.<\/p><ul>'+t[4].map(k=>'<li><a href=\"'+sources[k][1]+'\">'+sources[k][0]+'<\/a><\/li>').join('')+'<\/ul><\/section><section class=\"lz-t-panel\"><h2>Common questions<\/h2><details><summary>Is this personalized professional advice?<\/summary><p>No. Numerical estimates and short checklists cannot account for your full health or training history. A result does not establish fitness to exercise or product safety.<\/p><\/details><details><summary>Are my form inputs saved?<\/summary><p>This tool does not send inputs to a server, use cookies or save them in browser storage. Switching tools, refreshing or resetting clears the form.<\/p><\/details><details><summary>Can I share this tool?<\/summary><p>Copy the page address while this tool is open. The address selects the tool only; it does not contain your inputs or results.<\/p><\/details><\/section><a href=\"#lz-tools\" class=\"lz-t-secondary\">\u2190 Back to all tools<\/a>';\nconst form=detail.querySelector('form'),result=detail.querySelector('.lz-t-result'),error=detail.querySelector('.lz-t-error');\nfunction plates(){if(id!=='strength')return;const unit=form.elements.unit.value;form.querySelector('[data-plates]').innerHTML=(unit==='lb'?[45,35,25,10,5,2.5]:[25,20,15,10,5,2.5,1.25]).map(p=>check('plate'+p,p+' '+unit,true)).join('');}\nplates();if(id==='strength')form.elements.unit.addEventListener('change',()=>{form.elements.bar.value=form.elements.unit.value==='lb'?45:20;plates();});\nconst blank=()=>{result.innerHTML='<h2>Your result<\/h2><p>Enter or update your details, then run the tool.<\/p>';error.hidden=true;};\nform.addEventListener('input',blank);form.addEventListener('change',blank);\nform.addEventListener('submit',e=>{e.preventDefault();error.hidden=true;if(!form.reportValidity())return;try{const d=Object.fromEntries(new FormData(form).entries()),r=calculate(id,d);result.innerHTML='<h2>'+esc(r.title)+'<\/h2>'+r.items.map(([v,l])=>'<div class=\"lz-t-metric\"><strong>'+esc(v)+'<\/strong><span>'+esc(l)+'<\/span><\/div>').join('')+'<p class=\"lz-t-result-note\">'+esc(r.note)+'<\/p>';}catch(ex){error.textContent=ex.message;error.hidden=false;result.innerHTML='<h2>Check your entries<\/h2><p>Resolve the highlighted message before using an estimate.<\/p>';}});\nform.addEventListener('reset',()=>{setTimeout(()=>{plates();blank();},0);});\nif(focus){detail.querySelector('h1').focus({preventScroll:true});root.scrollIntoView({block:'start',behavior:'instant'});}}\nfunction route(focus){const hash=location.hash;showTool(hash.startsWith('#lz-tool-')?hash.slice(9):'',focus);if(focus&&hash==='#lz-tools'){directory.querySelector('h1').focus({preventScroll:true});root.scrollIntoView({block:'start',behavior:'instant'});}}\nwindow.addEventListener('hashchange',()=>{if(root.isConnected)route(true);});route(false);\n});\n}\nboot();\nif(document.readyState==='loading')document.addEventListener('DOMContentLoaded',boot,{once:true});\nwindow.__lzToolsBoot=boot;\nif(!window.__lzToolsObserver){\nwindow.__lzToolsObserver=new MutationObserver(function(records){\n const added=records.some(r=>Array.from(r.addedNodes).some(n=>n.nodeType===1&&(n.matches('[data-lz-tools]')||n.querySelector('[data-lz-tools]'))));\n if(added&&window.__lzToolsBoot)window.__lzToolsBoot();\n});\nwindow.__lzToolsObserver.observe(document.documentElement,{childList:true,subtree:true});\n}\n})();\n\n<\/script>\n<\/div><\/div><\/div>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>labszphc Tools Home\/Tools Popular NutritionProtein Reference CalculatorOpen tool Training1RM &amp; Barbell Plate PlannerOpen tool Body compositionDaily Calorie PlannerOpen tool Clean sportSupplement Review ChecklistOpen tool Find a tool by category All toolsNutritionCholesterolTrainingBody compositionRehabilitationHealth educationActivityClean sport 10 tools shown Practical tools for nutrition, training and informed self-checks. Explore an estimate, understand its limits and take better questions [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-52","page","type-page","status-publish","hentry"],"blocksy_meta":{"has_hero_section":"disabled","styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":7}},"_links":{"self":[{"href":"https:\/\/zphchealth.com\/index.php\/wp-json\/wp\/v2\/pages\/52","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zphchealth.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/zphchealth.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/zphchealth.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zphchealth.com\/index.php\/wp-json\/wp\/v2\/comments?post=52"}],"version-history":[{"count":4,"href":"https:\/\/zphchealth.com\/index.php\/wp-json\/wp\/v2\/pages\/52\/revisions"}],"predecessor-version":[{"id":55,"href":"https:\/\/zphchealth.com\/index.php\/wp-json\/wp\/v2\/pages\/52\/revisions\/55"}],"wp:attachment":[{"href":"https:\/\/zphchealth.com\/index.php\/wp-json\/wp\/v2\/media?parent=52"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}