{"id":675,"date":"2025-07-30T12:13:15","date_gmt":"2025-07-30T12:13:15","guid":{"rendered":"https:\/\/lean-app.com\/?p=675"},"modified":"2026-09-05T09:34:02","modified_gmt":"2026-09-05T09:34:02","slug":"tdee-calculator","status":"publish","type":"post","link":"https:\/\/lean-app.com\/fi\/tdee-calculator\/","title":{"rendered":"TDEE-laskuri"},"content":{"rendered":"<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"UTF-8\">\n\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\t<title>Advanced TDEE Calculator<\/title>\n\t<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\"><\/script>\n\t<style>\n\t\t\/* --- Design Variables --- *\/\n\t\t:root {\n\t\t\t--primary-color: #005A9C;\n\t\t\t--secondary-color: #E3E3FD;\n\t\t\t--background-color: #F8F8F9;\n\t\t\t--text-color: #161616;\n\t\t\t--light-text-color: #6c757d;\n\t\t\t--border-color: #dee2e6;\n\t\t\t--white-color: #fff;\n\t\t\t--success-color: #1F883D;\n\t\t\t--danger-color: #D92D20;\n\t\t\t--shadow: 0 8px 25px rgba(0, 0, 0, 0.08);\n\t\t\t--border-radius: 12px;\n\t\t}\n\n\t\t\/* --- General Styles --- *\/\n\t\t* {\n\t\t\tbox-sizing: border-box;\n\t\t}\n\n\t\tbody {\n\t\t\tfont-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n\t\t\tbackground-color: var(--background-color);\n\t\t\tcolor: var(--text-color);\n\t\t\tmargin: 0;\n\t\t\tpadding: 1rem;\n\t\t}\n\n\t\t\/* --- Main Container --- *\/\n\t\t.calculator-container {\n\t\t\tmax-width: 800px;\n\t\t\tmargin: auto;\n\t\t\tbackground-color: var(--white-color);\n\t\t\tborder-radius: var(--border-radius);\n\t\t\tbox-shadow: var(--shadow);\n\t\t\toverflow: hidden;\n\t\t}\n\n\t\t\/* --- Header --- *\/\n\t\t.calculator-header {\n\t\t\tpadding: 2rem;\n\t\t\tbackground: linear-gradient(to right, #F2A672, #EB5E91, #7A8EA3, #57BEB3);\n\t\t\tcolor: var(--white-color);\n\t\t}\n\t\t.calculator-header h1 {\n\t\t\tmargin: 0;\n\t\t\tfont-size: 2em;\n\t\t\tfont-weight: 700;\n\t\t\tcolor: var(--white-color); \/* Ensures title is white *\/\n\t\t}\n\t\t.calculator-header p {\n\t\t\tmargin: 0.5rem 0 0;\n\t\t\topacity: 0.9;\n\t\t\tfont-size: 1.1em;\n\t\t}\n\n\t\t\/* --- Form & Sections --- *\/\n\t\t#tdee-form {\n\t\t\tpadding: 2rem;\n\t\t}\n\n\t\tfieldset {\n\t\t\tborder: 1px solid var(--border-color);\n\t\t\tborder-radius: var(--border-radius);\n\t\t\tpadding: 1.5rem;\n\t\t\tmargin-bottom: 2rem;\n\t\t}\n\t\tlegend {\n\t\t\tfont-size: 1.25em;\n\t\t\tfont-weight: 700;\n\t\t\tcolor: var(--primary-color);\n\t\t\tpadding: 0 0.5rem;\n\t\t}\n\t\t\n\t\t.form-grid {\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-columns: repeat(auto-fit, minmax(220px, 1fr));\n\t\t\tgap: 1.5rem;\n\t\t}\n\n\t\t.input-group {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t}\n\t\t.input-group label {\n\t\t\tfont-weight: 600;\n\t\t\tmargin-bottom: 0.5rem;\n\t\t}\n\t\t.input-group label .unit {\n\t\t\tfont-weight: 400;\n\t\t\tcolor: var(--light-text-color);\n\t\t}\n\t\t.input-group input, .input-group select {\n\t\t\twidth: 100%;\n\t\t\tpadding: 0.75rem;\n\t\t\tborder: 1px solid var(--border-color);\n\t\t\tborder-radius: 8px;\n\t\t\tfont-size: 1em;\n\t\t\tbox-sizing: border-box;\n\t\t\ttransition: border-color 0.2s, box-shadow 0.2s;\n\t\t}\n\t\t.input-group input:focus, .input-group select:focus {\n\t\t\toutline: none;\n\t\t\tborder-color: var(--primary-color);\n\t\t\tbox-shadow: 0 0 0 3px var(--secondary-color);\n\t\t}\n\n\t\t\/* --- CTA for Lean App --- *\/\n\t\t#cta-lean, .cta-tracking {\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-columns: auto 1fr auto;\n\t\t\talign-items: center;\n\t\t\tgap: 1.5rem;\n\t\t\tmargin-top: 1rem;\n\t\t\tbackground-color: #f8f9fa;\n\t\t\tpadding: 1.5rem;\n\t\t\tborder-radius: var(--border-radius);\n\t\t}\n\t\t\/* Images principales des deux CTA \u2013 m\u00eame logique que le \u201cmarquee-banner\u201d *\/\n#cta-lean .cta-col-left picture,\n#cta-lean .cta-col-left picture>img,\n#cta-lean .cta-col-left .promo-image-main,\n.cta-tracking .cta-col-left picture,\n.cta-tracking .cta-col-left picture>img,\n.cta-tracking .cta-col-left .promo-image-main{\n    max-width:300px;          \/* limite la largeur, comme dans l\u2019exemple *\/\n    max-height:200px;         \/* garde la hauteur max d\u00e9j\u00e0 pr\u00e9vue *\/\n    width:100%;               \/* occupe toute la colonne sans d\u00e9passer *\/\n    height:auto;\n    display:block;\n    border-radius:12px;\n}\n\n\t\t#cta-lean .cta-col-center, .cta-tracking .cta-col-center {\n\t\t\ttext-align: center;\n\t\t}\n\t\t#cta-lean .cta-col-center p, .cta-tracking .cta-col-center p {\n\t\t\tmargin: 0 0 1rem 0;\n\t\t\tfont-size: 1em;\n\t\t\tline-height: 1.4;\n\t\t}\n\t\t#cta-lean .cta-buttons, .cta-tracking .cta-buttons {\n\t\t\tdisplay: flex;\n\t\t\tgap: 0.75rem;\n\t\t\tjustify-content: center;\n\t\t\talign-items: center;\n\t\t}\n\t\t#cta-lean .cta-buttons img, .cta-tracking .cta-buttons img {\n\t\t\theight: 40px;\n\t\t}\n\t\t#cta-lean .cta-col-right, .cta-tracking .cta-col-right {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\talign-items: center;\n\t\t\tgap: 0.5rem;\n\t\t}\n\t\t#cta-lean .cta-col-right .promo-logo-small, .cta-tracking .cta-col-right .promo-logo-small {\n\t\t\tmax-height: 80px;\n\t\t}\n\t\t#cta-lean .cta-col-right span, .cta-tracking .cta-col-right span {\n\t\t\tfont-weight: 600;\n\t\t\tfont-size: 1.1em;\n\t\t\tcolor: var(--primary-color);\n\t\t}\n\n\n\t\t\/* --- Intensity Slider --- *\/\n\t\t#intensity-group {\n\t\t\ttransition: opacity 0.3s ease;\n\t\t}\n\t\t#intensity-slider {\n\t\t\twidth: 100%;\n\t\t}\n\t\t#slider-value {\n\t\t\tfont-weight: 700;\n\t\t\tcolor: var(--primary-color);\n\t\t\tfont-size: 1.1em;\n\t\t}\n\n\t\t\/* --- Button & Error Message --- *\/\n\t\t.submit-btn {\n\t\t\twidth: 100%;\n\t\t\tpadding: 1rem;\n\t\t\tfont-size: 1.2em;\n\t\t\tfont-weight: 700;\n\t\t\tbackground: linear-gradient(to right, #F2A672, #EB5E91, #7A8EA3, #57BEB3);\n\t\t\tcolor: var(--white-color);\n\t\t\tborder: none;\n\t\t\tborder-radius: 8px;\n\t\t\tcursor: pointer;\n\t\t\ttransition: filter 0.2s, transform 0.1s;\n\t\t}\n\t\t.submit-btn:hover {\n\t\t\tfilter: brightness(1.1);\n\t\t}\n\t\t\n\t\t#error-message {\n\t\t\tcolor: var(--danger-color);\n\t\t\ttext-align: center;\n\t\t\tmargin-top: 1rem;\n\t\t\tdisplay: none;\n\t\t\tfont-weight: 500;\n\t\t}\n\t\t\n\t\t\/* --- Results Section --- *\/\n\t\t#results {\n\t\t\tdisplay: none;\n\t\t\tpadding: 1.5rem;\n\t\t\tbackground-color: var(--background-color);\n\t\t}\n\t\t.results-summary {\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n\t\t\tgap: 1.5rem;\n\t\t\tmargin-bottom: 2rem;\n\t\t}\n\t\t.result-card {\n\t\t\tpadding: 1.5rem;\n\t\t\tborder-radius: var(--border-radius);\n\t\t\ttext-align: center;\n\t\t\tbackground-color: var(--white-color);\n\t\t}\n\t\t.result-card h3 {\n\t\t\tmargin: 0 0 0.5rem;\n\t\t\tfont-size: 1rem;\n\t\t\tfont-weight: 600;\n\t\t\ttext-transform: uppercase;\n\t\t\tletter-spacing: 0.5px;\n\t\t\tcolor: var(--light-text-color);\n\t\t}\n\t\t.result-card .value {\n\t\t\tfont-size: 2.2em;\n\t\t\tfont-weight: 700;\n\t\t}\n\t\t.result-card .unit {\n\t\t\tfont-size: 1rem;\n\t\t\topacity: 0.8;\n\t\t}\n\t\t#maintenance-card { background-color: #e3f2fd; color: #0d47a1; }\n\t\t#goal-card.deficit { background-color: var(--secondary-color); color: var(--primary-color); }\n\t\t#goal-card.maintenance { background-color: #e8f5e9; color: var(--success-color); }\n\t\t#goal-card.surplus { background-color: #ffebee; color: var(--danger-color); }\n\t\t\n\t\t#chart-container {\n\t\t\tmargin-top: 2rem;\n\t\t}\n\t\t\n\t\t#breakdown-section, #macros-section, #body-stats-section, .cta-secondary, #tracking-tools-section, #seo-article-section {\n\t\t\tmargin-top: 3rem;\n\t\t\tpadding-top: 3rem;\n\t\t\tborder-top: 1px solid var(--border-color);\n\t\t}\n\n\t\t#breakdown-section {\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n\t\t\tgap: 2rem;\n\t\t\talign-items: center;\n\t\t}\n\t\t#breakdown-text ul {\n\t\t\tlist-style: none;\n\t\t\tpadding: 0;\n\t\t\tmargin: 0;\n\t\t}\n\t\t#breakdown-text li {\n\t\t\tdisplay: flex;\n\t\t\tjustify-content: space-between;\n\t\t\tfont-size: 1.1em;\n\t\t\tpadding: 0.75rem;\n\t\t\tborder-radius: 8px;\n\t\t}\n\t\t#breakdown-text li:nth-child(odd) {\n\t\t\tbackground-color: var(--white-color);\n\t\t}\n\t\t#breakdown-text li span:last-child {\n\t\t\tfont-weight: 700;\n\t\t}\n\n\t\t\/* --- Second CTA --- *\/\n\t\t.cta-secondary {\n\t\t\tpadding: 2rem;\n\t\t\ttext-align: center;\n\t\t\tbackground-color: var(--white-color);\n\t\t\tborder-radius: var(--border-radius);\n\t\t}\n\t\t.cta-secondary h3 {\n\t\t\tmargin: 0 auto 1.5rem auto;\n\t\t\tmax-width: 500px;\n\t\t\tfont-size: 1.2em;\n\t\t\tline-height: 1.5;\n\t\t\tcolor: var(--text-color);\n\t\t\tfont-weight: 600;\n\t\t}\n\t\t.cta-secondary .cta-buttons {\n\t\t\tjustify-content: center;\n\t\t\tmargin-bottom: 1.5rem;\n\t\t\tdisplay: flex;\n\t\t\tgap: 0.75rem;\n\t\t\talign-items: center;\n\t\t}\n\t\t.cta-secondary .cta-buttons img {\n\t\t\theight: 40px;\n\t\t}\n\t\t.cta-secondary .cta-secondary-image {\n\t\t\tmax-width: 100%;\n\t\t\tborder-radius: var(--border-radius);\n\t\t\tmargin-top: 1rem;\n\t\t}\n\n\t\t\/* --- Macros Section --- *\/\n\t\t#macros-section {\n\t\t\ttext-align: center;\n\t\t}\n\t\t#macros-section h2 {\n\t\t\tmargin: 0 0 0.5rem 0;\n\t\t\tfont-size: 1.5em;\n\t\t}\n\t\t.macros-subtitle {\n\t\t\tmargin: 0 0 2rem 0;\n\t\t\tcolor: var(--light-text-color);\n\t\t}\n\t\t.macros-grid {\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-columns: repeat(auto-fit, minmax(220px, 1fr));\n\t\t\tgap: 1.5rem;\n\t\t}\n\t\t.macro-card {\n\t\t\tbackground-color: var(--white-color);\n\t\t\tpadding: 1.5rem;\n\t\t\tborder-radius: var(--border-radius);\n\t\t\ttext-align: left;\n\t\t\tborder: 1px solid var(--border-color);\n\t\t}\n\t\t.macro-card h3 {\n\t\t\ttext-align: center;\n\t\t\tmargin: 0 0 0.5rem 0;\n\t\t\tcolor: var(--primary-color);\n\t\t}\n\t\t.macro-card canvas {\n\t\t\tmax-height: 140px;\n\t\t\tmargin: 0.5rem auto 1rem auto;\n\t\t}\n\t\t.macro-card .macro-ratio {\n\t\t\ttext-align: center;\n\t\t\tfont-size: 0.85em;\n\t\t\tcolor: var(--light-text-color);\n\t\t\tmargin-bottom: 1.5rem;\n\t\t}\n\t\t.macro-card ul {\n\t\t\tlist-style: none;\n\t\t\tpadding: 0;\n\t\t\tmargin: 0;\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tgap: 0.75rem;\n\t\t}\n\t\t.macro-card li {\n\t\t\tdisplay: flex;\n\t\t\tjustify-content: space-between;\n\t\t\tfont-size: 1.1em;\n\t\t}\n\t\t.macro-card li span:last-child {\n\t\t\tfont-weight: 700;\n\t\t}\n\n\t\t\/* --- Body Stats Section --- *\/\n\t\t#body-stats-section {\n\t\t\ttext-align: center;\n\t\t}\n\t\t #body-stats-section h2 {\n\t\t\tmargin: 0 0 2rem 0;\n\t\t\tfont-size: 1.5em;\n\t\t}\n\t\t.body-stats-container {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tgap: 1.5rem;\n\t\t}\n\t\t.stat-card {\n\t\t\tbackground: var(--white-color);\n\t\t\tpadding: 1.5rem;\n\t\t\tborder-radius: var(--border-radius);\n\t\t}\n\t\t.stat-card h3 {\n\t\t\ttext-align: center;\n\t\t\tmargin: 0 0 0.5rem 0;\n\t\t\tfont-size: 1.2em;\n\t\t}\n\t\t.stat-card .main-value {\n\t\t\tfont-size: 2.2em;\n\t\t\tfont-weight: 700;\n\t\t\tmargin-bottom: 0.25rem;\n\t\t}\n\t\t.stat-card .sub-value {\n\t\t\tcolor: var(--light-text-color);\n\t\t\tmargin-bottom: 1rem;\n\t\t}\n\t\t.stat-card .stat-explanation {\n\t\t\tfont-size: 0.9em;\n\t\t\tcolor: var(--light-text-color);\n\t\t\tmax-width: 600px;\n\t\t\tmargin: 0 auto 1.5rem auto;\n\t\t\tline-height: 1.5;\n\t\t}\n\t\t.stat-card ul {\n\t\t\tlist-style: none;\n\t\t\tpadding: 1rem;\n\t\t\tmargin: 0;\n\t\t\tfont-size: 0.9em;\n\t\t\tbackground-color: var(--background-color);\n\t\t\tborder-radius: 8px;\n\t\t}\n\t\t.stat-card ul li {\n\t\t\tdisplay: flex;\n\t\t\tjustify-content: space-between;\n\t\t\tpadding: 0.5rem 0;\n\t\t\tborder-bottom: 1px solid #e0e0e0;\n\t\t}\n\t\t  .stat-card ul li:last-child {\n\t\t\tborder-bottom: none;\n\t\t}\n\t\t\/* New colors for stats *\/\n\t\t#ideal-weight-card { background-color: #e6f4ff; border: 1px solid #b3d9ff; }\n\t\t#ideal-weight-card .main-value { color: #005a9c; }\n\t\t#bmi-card { background-color: #fffbe6; border: 1px solid #ffe580; }\n\t\t#bmi-card .main-value { color: #d46b08; }\n\t\t#mmp-card { background-color: #f6f2ff; border: 1px solid #d9b3ff; }\n\t\t#mmp-card .main-value { color: #531dab; }\n\n\t\t\/* --- Calorie Tracking Tools Section --- *\/\n\t\t#tracking-tools-section {\n\t\t\ttext-align: center;\n\t\t}\n\t\t#tracking-tools-section h2 {\n\t\t\tmargin: 0 0 2rem 0;\n\t\t\tfont-size: 1.5em;\n\t\t}\n\t\t.tracking-method {\n\t\t\tmargin-bottom: 2.5rem;\n\t\t}\n\t\t.tracking-method h3 {\n\t\t\ttext-align: left;\n\t\t\tmargin: 0 0 1.5rem 0;\n\t\t\tfont-size: 1.2em;\n\t\t\tcolor: var(--primary-color);\n\t\t}\n\t\t.tracking-method-content {\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-columns: 1fr 2fr;\n\t\t\tgap: 1.5rem;\n\t\t\talign-items: center;\n\t\t\tbackground-color: var(--white-color);\n\t\t\tpadding: 1.5rem;\n\t\t\tborder-radius: var(--border-radius);\n\t\t\tborder: 1px solid var(--border-color);\n\t\t}\n\t\t.tracking-qualities ul {\n\t\t\tlist-style: none;\n\t\t\tpadding: 0;\n\t\t\tmargin: 0;\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tgap: 0.75rem;\n\t\t\ttext-align: left;\n\t\t}\n\t\t.tracking-qualities li {\n\t\t\tdisplay: flex;\n\t\t\tjustify-content: space-between;\n\t\t\talign-items: center;\n\t\t}\n\t\t.rating {\n\t\t\tfont-size: 0.8em;\n\t\t\tfont-weight: 600;\n\t\t\tpadding: 0.25rem 0.6rem;\n\t\t\tborder-radius: 12px;\n\t\t\ttext-transform: capitalize;\n\t\t}\n\t\t.rating-medium { background-color: #fffbe6; color: #d46b08; border: 1px solid #ffe580; }\n\t\t.rating-good { background-color: #f6ffed; color: #389e0d; border: 1px solid #b7eb8f; }\n\t\t.rating-very-good { background-color: #e6f7ff; color: #005a9c; border: 1px solid #91d5ff; }\n\n\t\t.tracking-images {\n\t\t\tdisplay: flex;\n\t\t\tgap: 1rem;\n\t\t\tjustify-content: center;\n\t\t\tflex-wrap: wrap;\n\t\t}\n\t\t.tracking-images img {\n\t\t\tmax-width: 100%;\n\t\t\theight: auto;\n\t\t\tmax-height: 250px; \/* Control image size *\/\n\t\t\tborder-radius: 8px;\n\t\t\tbox-shadow: 0 4px 10px rgba(0,0,0,0.1);\n\t\t}\n\n\t\t\/* --- SEO Article Section --- *\/\n\t\t#seo-article-section {\n\t\t\ttext-align: left;\n\t\t\tline-height: 1.7;\n\t\t\tpadding: 1.5rem;\n\t\t}\n\t\t#seo-article-section h2, #seo-article-section h3 {\n\t\t\ttext-align: center;\n\t\t\tmargin-top: 2rem;\n\t\t\tmargin-bottom: 1rem;\n\t\t}\n\t\t#seo-article-section p {\n\t\t\tmargin-bottom: 1rem;\n\t\t}\n\t\t#seo-article-section ul {\n\t\t\tmargin-bottom: 1rem;\n\t\t\tpadding-left: 20px;\n\t\t}\n\n\t\t\/* --- RESPONSIVE STYLES --- *\/\n\t\t@media (max-width: 768px) {\n\t\t\tbody {\n\t\t\t\tpadding: 0.5rem;\n\t\t\t\tfont-size: 15px; \/* Adjust base font size for mobile *\/\n\t\t\t}\n\t\t\t.calculator-container {\n\t\t\t\tborder-radius: 0;\n\t\t\t}\n\t\t\t.calculator-header, #tdee-form, #results, #seo-article-section {\n\t\t\t\tpadding: 1.2rem;\n\t\t\t}\n\t\t\t.calculator-header h1 {\n\t\t\t\tfont-size: 1.7em;\n\t\t\t}\n\t\t\t.calculator-header p {\n\t\t\t\tfont-size: 1em;\n\t\t\t}\n\t\t\t\n\t\t\tlegend {\n\t\t\t\tfont-size: 1.15em;\n\t\t\t}\n\t\t\tfieldset {\n\t\t\t\tpadding: 1rem;\n\t\t\t\tmargin-bottom: 1.5rem;\n\t\t\t}\n\t\t\t.form-grid, .results-summary, .macros-grid {\n\t\t\t\tgap: 1rem;\n\t\t\t}\n\n\t\t\t#cta-lean, .cta-tracking {\n\t\t\t\tgrid-template-columns: 1fr;\n\t\t\t\tgap: 1rem;\n\t\t\t\ttext-align: center;\n\t\t\t\tpadding: 1rem;\n\t\t\t}\n\t\t\t#cta-lean .cta-col-left, .cta-tracking .cta-col-left {\n\t\t\t\torder: 2;\n\t\t\t\tmargin: 0 auto;\n\t\t\t}\n\t\t\t#cta-lean .cta-col-center, .cta-tracking .cta-col-center {\n\t\t\t\torder: 1;\n\t\t\t}\n\t\t\t#cta-lean .cta-col-right, .cta-tracking .cta-col-right {\n\t\t\t\torder: 3;\n\t\t\t}\n\t\t\t#cta-lean .cta-col-left .promo-image-main, .cta-tracking .cta-col-left .promo-image-main {\n\t\t\t\tmax-height: 160px;\n\t\t\t}\n\t\t\t#cta-lean .cta-buttons img, .cta-tracking .cta-buttons img, .cta-secondary .cta-buttons img {\n\t\t\t\theight: 38px;\n\t\t\t}\n\t\t\t\n\t\t\t.result-card {\n\t\t\t\tpadding: 1rem;\n\t\t\t}\n\t\t\t.result-card h3 {\n\t\t\t\tfont-size: 0.85rem;\n\t\t\t}\n\t\t\t.result-card .value {\n\t\t\t\tfont-size: 1.9em;\n\t\t\t}\n\t\t\t.result-card .unit {\n\t\t\t\tfont-size: 0.9rem;\n\t\t\t}\n\t\t\t\n\t\t\t\/* Hides the projection chart on mobile *\/\n\t\t\t#chart-container {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\n\t\t\t#breakdown-section, #macros-section, #body-stats-section, .cta-secondary, #tracking-tools-section {\n\t\t\t\tmargin-top: 2rem;\n\t\t\t\tpadding-top: 2rem;\n\t\t\t}\n\t\t\t\n\t\t\t.cta-secondary h3 {\n\t\t\t\tfont-size: 1.1em;\n\t\t\t}\n\t\t\t.cta-secondary .cta-secondary-image {\n\t\t\t\tmax-width: 90%;\n\t\t\t}\n\t\t\t\n\t\t\t.macro-card {\n\t\t\t\tpadding: 1rem;\n\t\t\t}\n\t\t\t.macro-card li {\n\t\t\t\tfont-size: 1em;\n\t\t\t}\n\t\t\t.macro-card canvas {\n\t\t\t\tmax-height: 120px;\n\t\t\t}\n\n\t\t\t.stat-card {\n\t\t\t\tpadding: 1rem;\n\t\t\t}\n\t\t\t.stat-card .main-value {\n\t\t\t\tfont-size: 1.9em;\n\t\t\t}\n\t\t\t.stat-card .stat-explanation, .stat-card ul {\n\t\t\t\tfont-size: 0.85em;\n\t\t\t}\n\t\t\t\n\t\t\t.tracking-method-content {\n\t\t\t\tgrid-template-columns: 1fr;\n\t\t\t\tpadding: 1rem;\n\t\t\t}\n\t\t\t.tracking-qualities {\n\t\t\t\tmargin-bottom: 1.5rem;\n\t\t\t}\n\t\t\t.tracking-images img {\n\t\t\t\tmax-height: 180px; \/* Reduced image height *\/\n\t\t\t}\n\t\t\t .cta-buttons {\n\t\t\t\tflex-direction: column;\n\t\t\t}\n\t\t}\n\/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n   HARD FIX IMAGIFY \u2013 contraint vraiment <picture> + <img>\n   (\u00e9crase les styles inline que le plugin injecte)\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.calculator-container picture,\n.calculator-container picture > img,\n#cta-lean .cta-col-left picture,\n#cta-lean .cta-col-left picture > img,\n#cta-lean .cta-col-left .promo-image-main,\n.cta-tracking .cta-col-left picture,\n.cta-tracking .cta-col-left picture > img,\n.cta-tracking .cta-col-left .promo-image-main,\n\/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n   Correctifs : tracking, logo Lean, image CTA secondaire\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.tracking-images picture,\n.tracking-images picture > img,\n.tracking-images img {\n    width: auto !important;\n    max-width: 100% !important;\n    max-height: 250px !important; \/* revient \u00e0 la hauteur d\u2019origine *\/\n    object-fit: cover !important; \/* \u00e9vite le \u00ab boxing \u00bb disgracieux *\/\n}\n\n\/* \u2500\u2500\u2500 Centrage horizontal de l\u2019image CTA secondaire \u2500\u2500\u2500 *\/\n.cta-secondary .cta-secondary-image,\n.cta-secondary picture,\n.cta-secondary picture img{\n    display:block !important;     \/* force le comportement bloc *\/\n    margin:1rem auto 0 !important;\/* centre horizontalement *\/\n    width:auto !important;        \/* respecte le ratio *\/\n    max-width:90% !important;     \/* limite la largeur *\/\n    object-fit:contain !important;\n}\n\n\n\/* \u2500\u2500\u2500 Fix logo Lean (compatible <picture> ou <img> apr\u00e8s Imagify) \u2500\u2500\u2500 *\/\n.promo-logo-small,\n.promo-logo-small img{\n    height:80px !important;\n    max-height:80px !important;\n    width:auto !important;\n    max-width:none !important;\n    object-fit:contain !important;\n}\n\n\n\t<\/style>\n<\/head>\n<body>\n\n\t<div class=\"calculator-container\">\n\t\t<header class=\"calculator-header\">\n\t\t\t<h1>TDEE-laskuri<\/h1>\n\t\t\t<p>M\u00e4\u00e4rit\u00e4 tavoitteesi ja visualisoi edistymisesi.<\/p>\n\t\t<\/header>\n\n\t\t<form id=\"tdee-form\" action=\"\">\n\t\t\t<fieldset>\n\t\t\t\t<legend>\u2699\ufe0f Yksik\u00f6t<\/legend>\n\t\t\t\t <div class=\"input-group\">\n\t\t\t\t\t<select id=\"units\">\n\t\t\t\t\t\t<option value=\"metric\" selected>Metrinen (kg, cm)<\/option>\n\t\t\t\t\t\t<option value=\"imperial\">Imperiaalinen (lbs, in)<\/option>\n\t\t\t\t\t<\/select>\n\t\t\t\t<\/div>\n\t\t\t<\/fieldset>\n\n\t\t\t<fieldset>\n\t\t\t\t<legend>\ud83d\udc64 Tietosi<\/legend>\n\t\t\t\t<div class=\"form-grid\">\n\t\t\t\t\t<div class=\"input-group\">\n\t\t\t\t\t\t<label for=\"gender\">Sukupuoli<\/label>\n\t\t\t\t\t\t<select id=\"gender\">\n\t\t\t\t\t\t\t<option value=\"male\">Mies<\/option>\n\t\t\t\t\t\t\t<option value=\"female\">Nainen<\/option>\n\t\t\t\t\t\t<\/select>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<div class=\"input-group\">\n\t\t\t\t\t\t<label for=\"age\">Ik\u00e4<\/label>\n\t\t\t\t\t\t<input type=\"number\" id=\"age\" placeholder=\"30\" required autocomplete=\"off\" min=\"15\" max=\"110\">\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<div class=\"input-group\">\n\t\t\t\t\t\t<label for=\"weight\">Paino <span class=\"unit\">(kg)<\/span><\/label>\n\t\t\t\t\t\t<input type=\"number\" id=\"weight\" step=\"0.1\" placeholder=\"70\" required autocomplete=\"off\" min=\"25\" max=\"500\">\n\t\t\t\t\t<\/div>\n\t\t\t\t\t <div class=\"input-group\">\n\t\t\t\t\t\t<label for=\"height\">Pituus <span class=\"unit\">(cm)<\/span><\/label>\n\t\t\t\t\t\t<input type=\"number\" id=\"height\" placeholder=\"175\" required autocomplete=\"off\" max=\"250\">\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<div class=\"input-group\" style=\"grid-column: 1 \/ -1;\">\n\t\t\t\t\t\t<label for=\"bodyfat\">Rasvaprosentti <span class=\"unit\">(%)<\/span><\/label>\n\t\t\t\t\t\t<input type=\"number\" id=\"bodyfat\" step=\"0.1\" placeholder=\"15\" required autocomplete=\"off\" min=\"1\" max=\"80\">\n\t\t\t\t\t\t  <div id=\"cta-lean\">\n\t\t\t\t\t\t\t  <div class=\"cta-col-left\">\n\t\t\t\t\t\t\t\t  <img decoding=\"async\" src=\"https:\/\/lean-app.com\/wp-content\/uploads\/2025\/07\/ai-bodyscan-result-bodyfat-lean-app.png\" alt=\"Lean App Body Scan\" class=\"promo-image-main\">\n\t\t\t\t\t\t\t  <\/div>\n\t\t\t\t\t\t\t  <div class=\"cta-col-center\">\n\t\t\t\t\t\t\t\t  <p>Haluatko mitata rasvaprosenttisi tarkasti? <br>Lataa <strong>Lean<\/strong> ja k\u00e4yt\u00e4 AI BodyScania!<\/p>\n\t\t\t\t\t\t\t\t  <div class=\"cta-buttons\">\n\t\t\t\t\t\t\t\t\t  <a href=\"https:\/\/apps.apple.com\/fr\/app\/lean-calorie-ai-podom%C3%A8tre\/id6738668646\" target=\"_blank\" rel=\"noopener\">\n\t\t\t\t\t\t\t\t\t\t  <img decoding=\"async\" src=\"https:\/\/developer.apple.com\/assets\/elements\/badges\/download-on-the-app-store.svg\" alt=\"Download on the App Store\">\n\t\t\t\t\t\t\t\t\t  <\/a>\n\t\t\t\t\t\t\t\t\t  <a href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.lean.testsqflite\" target=\"_blank\" rel=\"noopener\">\n\t\t\t\t\t\t\t\t\t\t  <img decoding=\"async\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/7\/78\/Google_Play_Store_badge_EN.svg\" alt=\"Get it on Google Play\">\n\t\t\t\t\t\t\t\t\t  <\/a>\n\t\t\t\t\t\t\t\t  <\/div>\n\t\t\t\t\t\t\t  <\/div>\n\t\t\t\t\t\t\t  <div class=\"cta-col-right\">\n\t\t\t\t\t\t\t\t  <img decoding=\"async\" src=\"https:\/\/lean-app.com\/wp-content\/uploads\/2025\/07\/lean-app-logo-calorie-tdee-tracker.png\" alt=\"Lean App Logo\" class=\"promo-logo-small\">\n\t\t\t\t\t\t\t\t  <span>Lean<\/span>\n\t\t\t\t\t\t\t  <\/div>\n\t\t\t\t\t\t  <\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/fieldset>\n\n\t\t\t<fieldset>\n\t\t\t\t<legend>\ud83c\udfc3 Aktiivisuutesi<\/legend>\n\t\t\t\t<div class=\"form-grid\">\n\t\t\t\t\t<div class=\"input-group\">\n\t\t\t\t\t\t<label for=\"steps\">Askelta p\u00e4iv\u00e4ss\u00e4<\/label>\n\t\t\t\t\t\t<input type=\"number\" id=\"steps\" placeholder=\"8000\" required>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<div class=\"input-group\">\n\t\t\t\t\t\t<label for=\"activityType\">Urheilulaji<\/label>\n\t\t\t\t\t\t<select id=\"activityType\">\n\t\t\t\t\t\t\t<option value=\"none\" selected>Ei mit\u00e4\u00e4n<\/option>\n\t\t\t\t\t\t\t<option value=\"cardio\">Cardio (k\u00e4vely, juoksu&#8230;)<\/option>\n\t\t\t\t\t\t\t<option value=\"strength\">Voimaharjoittelu<\/option>\n\t\t\t\t\t\t<\/select>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<div class=\"input-group\" id=\"activity-details\">\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/fieldset>\n\n\t\t\t<fieldset>\n\t\t\t\t<legend>\ud83c\udfaf Tavoitteesi<\/legend>\n\t\t\t\t<div class=\"form-grid\">\n\t\t\t\t\t<div class=\"input-group\">\n\t\t\t\t\t\t<label for=\"goal\">Haluan&#8230;<\/label>\n\t\t\t\t\t\t<select id=\"goal\">\n\t\t\t\t\t\t\t<option value=\"deficit\">Laihtua<\/option>\n\t\t\t\t\t\t\t<option value=\"maintenance\" selected>Yll\u00e4pit\u00e4\u00e4 painoni<\/option>\n\t\t\t\t\t\t\t<option value=\"surplus\">Lihoa<\/option>\n\t\t\t\t\t\t<\/select>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<div class=\"input-group\" id=\"intensity-group\">\n\t\t\t\t\t\t<label for=\"intensity-slider\">Intensiteetti (<span id=\"slider-value\">-500 kcal<\/span>)<\/label>\n\t\t\t\t\t\t<input type=\"range\" id=\"intensity-slider\" min=\"-1000\" max=\"1000\" step=\"50\" value=\"-500\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/fieldset>\n\n\t\t\t<button type=\"submit\" class=\"submit-btn\">Laske ja ennusta<\/button>\n\t\t\t<p id=\"error-message\"><\/p>\n\t\t<input type=\"hidden\" name=\"trp-form-language\" value=\"fi\"\/><\/form>\n\n\t\t<section id=\"results\">\n\t\t\t<div class=\"results-summary\">\n\t\t\t\t<div class=\"result-card\" id=\"maintenance-card\">\n\t\t\t\t\t<h3>Yll\u00e4pitokalorit (TDEE)<\/h3>\n\t\t\t\t\t<span class=\"value\" id=\"tdee-result\">0<\/span>\n\t\t\t\t\t<span class=\"unit\">kcal\/p\u00e4iv\u00e4<\/span>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"result-card\" id=\"goal-card\">\n\t\t\t\t\t<h3>Kaloritavoitteesi<\/h3>\n\t\t\t\t\t<span class=\"value\" id=\"goal-result\">0<\/span>\n\t\t\t\t\t<span class=\"unit\">kcal\/p\u00e4iv\u00e4<\/span>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\t<div class=\"lean-inline-cta\" style=\"margin:1.5rem 0;padding:1.25rem 1.25rem 1.1rem;background:#FFF3F7;border:1px solid #FFD6E4;border-left:4px solid #FF2D6E;border-radius:12px;text-align:center\">\n\t\t\t\t\t<p style=\"margin:0 0 .35rem;font-size:1.02em;font-weight:700;color:#0E0E10;line-height:1.35\">T\u00e4m\u00e4 luku on arvio. Lean mittaa sen.<\/p>\n\t\t\t\t\t<p style=\"margin:0 0 .9rem;font-size:.92em;color:#4D4D52;line-height:1.5\">BMR:si todellisesta rasvaprosentista AI BodyScanilla, NEAT todellisista askelistasi, EAT treeni\u00e4 kohti, TEF makroistasi. Laskettu uudelleen joka p\u00e4iv\u00e4.<\/p>\n\t\t\t\t\t<div class=\"cta-buttons\" style=\"display:flex;gap:.75rem;justify-content:center;align-items:center;flex-wrap:wrap\">\n\t\t\t\t\t\t<a href=\"https:\/\/apps.apple.com\/fr\/app\/lean-calorie-ai-podom%C3%A8tre\/id6738668646\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/developer.apple.com\/assets\/elements\/badges\/download-on-the-app-store.svg\" alt=\"Download on the App Store\" width=\"120\" height=\"40\" style=\"height:40px;width:auto;display:block\"><\/a>\n\t\t\t\t\t\t<a href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.lean.testsqflite\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/7\/78\/Google_Play_Store_badge_EN.svg\" alt=\"Get it on Google Play\" width=\"135\" height=\"40\" style=\"height:40px;width:auto;display:block\"><\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\n\n\t\t\t<div id=\"chart-container\">\n\t\t\t\t<h3>Painoennuste 90 p\u00e4iv\u00e4lle<\/h3>\n\t\t\t\t<canvas id=\"weight-chart\"><\/canvas>\n\t\t\t<\/div>\n\t\t\t\n\t\t\t<div id=\"projection-summary\" class=\"results-summary\">\n\t\t\t\t <div class=\"result-card\">\n\t\t\t\t\t<h3>30 p\u00e4iv\u00e4n p\u00e4\u00e4st\u00e4<\/h3>\n\t\t\t\t\t<span class=\"value\" id=\"p-30-result\">0<\/span>\n\t\t\t\t\t<span class=\"unit\">kg<\/span>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"result-card\">\n\t\t\t\t\t<h3>60 p\u00e4iv\u00e4n p\u00e4\u00e4st\u00e4<\/h3>\n\t\t\t\t\t<span class=\"value\" id=\"p-60-result\">0<\/span>\n\t\t\t\t\t<span class=\"unit\">kg<\/span>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"result-card\">\n\t\t\t\t\t<h3>90 p\u00e4iv\u00e4n p\u00e4\u00e4st\u00e4<\/h3>\n\t\t\t\t\t<span class=\"value\" id=\"p-90-result\">0<\/span>\n\t\t\t\t\t<span class=\"unit\">kg<\/span>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\n\t\t\t<div id=\"breakdown-section\">\n\t\t\t\t <div id=\"breakdown-chart-container\">\n\t\t\t\t\t<h3>Yll\u00e4pidon erittely<\/h3>\n\t\t\t\t\t<canvas id=\"breakdown-chart\"><\/canvas>\n\t\t\t\t<\/div>\n\t\t\t\t<div id=\"breakdown-text\">\n\t\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\n\t\t\t<div class=\"cta-secondary\">\n\t\t\t\t<h3>Lataa Lean seurataksesi p\u00e4ivitt\u00e4ist\u00e4 TDEE:t\u00e4si ja seurataksesi kalorejasi tehokkaasti.<\/h3>\n\t\t\t\t<div class=\"cta-buttons\">\n\t\t\t\t\t <a href=\"https:\/\/apps.apple.com\/fr\/app\/lean-calorie-ai-podom%C3%A8tre\/id6738668646\" target=\"_blank\" rel=\"noopener\">\n\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/developer.apple.com\/assets\/elements\/badges\/download-on-the-app-store.svg\" alt=\"Download on the App Store\">\n\t\t\t\t\t<\/a>\n\t\t\t\t\t<a href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.lean.testsqflite\" target=\"_blank\" rel=\"noopener\">\n\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/7\/78\/Google_Play_Store_badge_EN.svg\" alt=\"Get it on Google Play\">\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t<img decoding=\"async\" src=\"https:\/\/lean-app.com\/wp-content\/uploads\/2025\/08\/lean-app-calorie-expenditure-analysis-features-1.png\" alt=\"Lean App features\" class=\"cta-secondary-image\">\n\t\t\t<\/div>\n\n\t\t\t<section id=\"macros-section\">\n\t\t\t\t<h2>Makroravinteiden jakauma<\/h2>\n\t\t\t\t<p class=\"macros-subtitle\">Perustuu kaloritavoitteeseesi<\/p>\n\t\t\t\t<div class=\"macros-grid\">\n\t\t\t\t\t<div class=\"macro-card\">\n\t\t\t\t\t\t<h3>Low carb<\/h3>\n\t\t\t\t\t\t<canvas id=\"lc-chart\"><\/canvas>\n\t\t\t\t\t\t<p class=\"macro-ratio\">40% P \/ 40% R \/ 20% H<\/p>\n\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t<li><span>Proteiinit<\/span> <span id=\"lc-protein\">0 g<\/span><\/li>\n\t\t\t\t\t\t\t<li><span>Rasvat<\/span> <span id=\"lc-fat\">0 g<\/span><\/li>\n\t\t\t\t\t\t\t<li><span>Hiilihydraatit<\/span> <span id=\"lc-carbs\">0 g<\/span><\/li>\n\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<div class=\"macro-card\">\n\t\t\t\t\t\t<h3>Kohtalaiset hiilihydraatit<\/h3>\n\t\t\t\t\t\t<canvas id=\"mc-chart\"><\/canvas>\n\t\t\t\t\t\t<p class=\"macro-ratio\">30% P \/ 35% R \/ 35% H<\/p>\n\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t<li><span>Proteiinit<\/span> <span id=\"mc-protein\">0 g<\/span><\/li>\n\t\t\t\t\t\t\t<li><span>Rasvat<\/span> <span id=\"mc-fat\">0 g<\/span><\/li>\n\t\t\t\t\t\t\t<li><span>Hiilihydraatit<\/span> <span id=\"mc-carbs\">0 g<\/span><\/li>\n\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<div class=\"macro-card\">\n\t\t\t\t\t\t<h3>High Carb<\/h3>\n\t\t\t\t\t\t<canvas id=\"hc-chart\"><\/canvas>\n\t\t\t\t\t\t<p class=\"macro-ratio\">30% P \/ 20% R \/ 50% H<\/p>\n\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t<li><span>Proteiinit<\/span> <span id=\"hc-protein\">0 g<\/span><\/li>\n\t\t\t\t\t\t\t<li><span>Rasvat<\/span> <span id=\"hc-fat\">0 g<\/span><\/li>\n\t\t\t\t\t\t\t<li><span>Hiilihydraatit<\/span> <span id=\"hc-carbs\">0 g<\/span><\/li>\n\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/section>\n\t\t\t\n\t\t\t<section id=\"body-stats-section\">\n\t\t\t\t<h2>Kehotilastot<\/h2>\n\t\t\t\t<div class=\"body-stats-container\">\n\t\t\t\t\t<div class=\"stat-card\" id=\"ideal-weight-card\">\n\t\t\t\t\t\t<h3>Ihannepaino<\/h3>\n\t\t\t\t\t\t<p class=\"stat-explanation\">Suosittujen kaavojen perusteella t\u00e4m\u00e4 on terve painoalue pituudellesi. Se on yleinen ohje, joka ei ota huomioon yksil\u00f6llist\u00e4 kehonkoostumusta.<\/p>\n\t\t\t\t\t\t<p class=\"main-value\" id=\"ideal-weight-value\">0 kg<\/p>\n\t\t\t\t\t\t<p class=\"sub-value\">Terve painoalue<\/p>\n\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<div class=\"stat-card\" id=\"bmi-card\">\n\t\t\t\t\t\t<h3>BMI-pistem\u00e4\u00e4r\u00e4<\/h3>\n\t\t\t\t\t\t<p class=\"stat-explanation\">Painoindeksi (BMI) on yksinkertainen indikaattori painosta suhteessa pituuteen. Se ei erota rasvaa lihaksesta, joten se voi olla v\u00e4hemm\u00e4n tarkka urheilullisille henkil\u00f6ille.<\/p>\n\t\t\t\t\t\t<p class=\"main-value\" id=\"bmi-value\">0.0<\/p>\n\t\t\t\t\t\t<p class=\"sub-value\" id=\"bmi-category\">N\/A<\/p>\n\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t<li><span>&lt; 18.5<\/span> <span>Alipaino<\/span><\/li>\n\t\t\t\t\t\t\t<li><span>18.5 \u2013 24.9<\/span> <span>Normaali<\/span><\/li>\n\t\t\t\t\t\t\t<li><span>25.0 \u2013 29.9<\/span> <span>Ylipaino<\/span><\/li>\n\t\t\t\t\t\t\t<li><span>&gt; 30.0<\/span> <span>Lihavuus<\/span><\/li>\n\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<div class=\"stat-card\" id=\"mmp-card\">\n\t\t\t\t\t\t<h3>Lihaspotentiaali<\/h3>\n\t\t\t\t\t\t<p class=\"stat-explanation\">T\u00e4m\u00e4 arvioi luonnollisen maksimaalisen rasvattoman massasi pituutesi perusteella. Alla olevat arvot n\u00e4ytt\u00e4v\u00e4t kokonaispainon, joka sinulla olisi t\u00e4ll\u00e4 lihaksikkuuden huipulla eri rasvaprosenteilla.<\/p>\n\t\t\t\t\t\t<p class=\"main-value\" id=\"mmp-value\">0 kg<\/p>\n\t\t\t\t\t\t<p class=\"sub-value\">Maksimaalinen rasvaton massa<\/p>\n\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/section>\n\t\t\t\n\t\t\t<section id=\"tracking-tools-section\">\n\t\t\t\t<h2>Kaloriseurannan ty\u00f6kalut<\/h2>\n\t\t\t\t<div class=\"tracking-method\">\n\t\t\t\t\t<h3>1. Elintarviketietokanta<\/h3>\n\t\t\t\t\t<div class=\"tracking-method-content\">\n\t\t\t\t\t\t<div class=\"tracking-qualities\">\n\t\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t\t<li><span>K\u00e4yt\u00f6n helppous<\/span><span class=\"rating rating-medium\">Keskitaso<\/span><\/li>\n\t\t\t\t\t\t\t\t<li><span>Saatavuus<\/span><span class=\"rating rating-good\">Hyv\u00e4<\/span><\/li>\n\t\t\t\t\t\t\t\t<li><span>Tarkkuus<\/span><span class=\"rating rating-very-good\">Eritt\u00e4in hyv\u00e4<\/span><\/li>\n\t\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"tracking-images\">\n\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/lean-app.com\/wp-content\/uploads\/2025\/08\/searching-food-database-banana-lean-app.jpg\" alt=\"Food database search\">\n\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/lean-app.com\/wp-content\/uploads\/2025\/08\/nutritional-details-banana-lean-app.jpg\" alt=\"Adding food from database\">\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"tracking-method\">\n\t\t\t\t\t<h3>2. Viivakoodiskannaus<\/h3>\n\t\t\t\t\t <div class=\"tracking-method-content\">\n\t\t\t\t\t\t<div class=\"tracking-qualities\">\n\t\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t\t<li><span>K\u00e4yt\u00f6n helppous<\/span><span class=\"rating rating-good\">Hyv\u00e4<\/span><\/li>\n\t\t\t\t\t\t\t\t<li><span>Saatavuus<\/span><span class=\"rating rating-medium\">Keskitaso<\/span><\/li>\n\t\t\t\t\t\t\t\t<li><span>Tarkkuus<\/span><span class=\"rating rating-very-good\">Eritt\u00e4in hyv\u00e4<\/span><\/li>\n\t\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"tracking-images\">\n\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/lean-app.com\/wp-content\/uploads\/2025\/08\/barcode-scanner-lindt-chocolate-lean-app.jpg\" alt=\"Barcode scanner interface\">\n\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/lean-app.com\/wp-content\/uploads\/2025\/08\/scanning-barcode-nutritional-information-lean-app.jpg\" alt=\"Product found via barcode\">\n\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/lean-app.com\/wp-content\/uploads\/2025\/08\/barcode-scan-result-lindt-chocolate-lean-app.jpg\" alt=\"Nutritional information from barcode\">\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"tracking-method\">\n\t\t\t\t\t<h3>3. Ruoan AI-skannaus<\/h3>\n\t\t\t\t\t  <div class=\"tracking-method-content\">\n\t\t\t\t\t\t<div class=\"tracking-qualities\">\n\t\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t\t<li><span>K\u00e4yt\u00f6n helppous<\/span><span class=\"rating rating-very-good\">Eritt\u00e4in hyv\u00e4<\/span><\/li>\n\t\t\t\t\t\t\t\t<li><span>Saatavuus<\/span><span class=\"rating rating-very-good\">Eritt\u00e4in hyv\u00e4<\/span><\/li>\n\t\t\t\t\t\t\t\t<li><span>Tarkkuus<\/span><span class=\"rating rating-medium\">Keskitaso<\/span><\/li>\n\t\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"tracking-images\">\n\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/lean-app.com\/wp-content\/uploads\/2025\/08\/ai-scan-tiramisu-dessert-lean-app.jpg\" alt=\"AI food scan in action\">\n\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/lean-app.com\/wp-content\/uploads\/2025\/08\/ai-scan-result-tiramisu-dessert-lean-app.jpg\" alt=\"AI identifying food items\">\n\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/lean-app.com\/wp-content\/uploads\/2025\/08\/ai-scan-result-tiramisu-dessert-lean-app-1.jpg\" alt=\"AI providing nutritional data for scanned food\">\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t  <div class=\"cta-tracking\">\n\t\t\t\t\t  <div class=\"cta-col-left\">\n\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/lean-app.com\/wp-content\/uploads\/2025\/07\/calorie-goal-strategy-lean-app.png\" alt=\"Lean App Tracking\" class=\"promo-image-main\">\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<div class=\"cta-col-center\">\n\t\t\t\t\t\t<p>Paras ty\u00f6kalu kaloriesi seuraamiseen? <br>Lataa <strong>Lean<\/strong> ja yhdist\u00e4 n\u00e4m\u00e4 kolme menetelm\u00e4\u00e4 tilanteen mukaan.<\/p>\n\t\t\t\t\t\t<div class=\"cta-buttons\">\n\t\t\t\t\t\t\t<a href=\"https:\/\/apps.apple.com\/fr\/app\/lean-calorie-ai-podom%C3%A8tre\/id6738668646\" target=\"_blank\" rel=\"noopener\">\n\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/developer.apple.com\/assets\/elements\/badges\/download-on-the-app-store.svg\" alt=\"Download on the App Store\">\n\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t<a href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.lean.testsqflite\" target=\"_blank\" rel=\"noopener\">\n\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/7\/78\/Google_Play_Store_badge_EN.svg\" alt=\"Get it on Google Play\">\n\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<div class=\"cta-col-right\">\n\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/lean-app.com\/wp-content\/uploads\/2025\/07\/lean-app-logo-calorie-tdee-tracker.png\" alt=\"Lean App Logo\" class=\"promo-logo-small\">\n\t\t\t\t\t\t<span>Lean<\/span>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/section>\n\t<\/div>\n\n\t<section id=\"tdee-app-section\" class=\"calculator-container\">\n\t\t<h2>TDEE-laskurisovellus: ota t\u00e4m\u00e4 laskuri mukaasi<\/h2>\n\t\t<p>Jos etsit <strong>TDEE-laskurisovellus<\/strong> kertaluonteisen verkkosivuty\u00f6kalun sijaan, t\u00e4m\u00e4 sivu on juuri sen verkkoversio: <strong>Lean<\/strong>, TDEE-laskurisovellus iPhonelle ja Androidille. Ero n\u00e4kyy ensimm\u00e4isen p\u00e4iv\u00e4n j\u00e4lkeen. Sen sijaan, ett\u00e4 k\u00e4ytt\u00e4isi kerran sy\u00f6tt\u00e4m\u00e4\u00e4si keskim\u00e4\u00e4r\u00e4ist\u00e4 askelm\u00e4\u00e4r\u00e4\u00e4, sovellus lukee todelliset askeleesi Apple Healthista tai Google Fitist\u00e4 ja laskee TDEE:si uudelleen joka ikinen p\u00e4iv\u00e4.<\/p>\n\t\t<p>Sovellus menee my\u00f6s pidemm\u00e4lle kuin mik\u00e4\u00e4n staattinen laskuri voi: se mittaa rasvaprosenttisi yhdest\u00e4 kuvasta AI BodyScanilla, laskee BMR:si todellisesta rasvattomasta massastasi patentoidulla omalla mallilla ja mallintaa metabolisen adaptaation, hidastumisen, jonka dieettiviikot aiheuttavat aineenvaihdunnallesi.<\/p>\n\t\t<div class=\"cta-buttons\">\n\t\t\t<a href=\"https:\/\/apps.apple.com\/fr\/app\/lean-calorie-ai-podom%C3%A8tre\/id6738668646\" target=\"_blank\" rel=\"noopener\">\n\t\t\t\t<img decoding=\"async\" src=\"https:\/\/developer.apple.com\/assets\/elements\/badges\/download-on-the-app-store.svg\" alt=\"Download on the App Store\">\n\t\t\t<\/a>\n\t\t\t<a href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.lean.testsqflite\" target=\"_blank\" rel=\"noopener\">\n\t\t\t\t<img decoding=\"async\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/7\/78\/Google_Play_Store_badge_EN.svg\" alt=\"Get it on Google Play\">\n\t\t\t<\/a>\n\t\t<\/div>\n\t\t<p>Vertailetko yh\u00e4 trackereita? Lue oppaamme parhaista <a href=\"\/en\/alternative-myfitnesspal\/\">MyFitnessPal-vaihtoehdot<\/a>.<\/p>\n\t<\/section>\n\n\t<section id=\"seo-article-section\" class=\"calculator-container\">\n\t\t<h2>TDEE:si ymm\u00e4rt\u00e4minen: perusteellinen opas<\/h2>\n\t\t<p>Fitnessin ja ravitsemuksen maailmassa navigointi voi olla monimutkaista, mutta p\u00e4ivitt\u00e4isen kokonaisenergiankulutuksesi (TDEE) ymm\u00e4rt\u00e4minen on ratkaisevin ensimm\u00e4inen askel. <strong>TDEE-laskuri<\/strong> on tehokas ty\u00f6kalu, joka selkeytt\u00e4\u00e4 t\u00e4m\u00e4n prosessin tarjoamalla selke\u00e4n, tieteeseen perustuvan l\u00e4ht\u00f6kohdan mihin tahansa painonhallintatavoitteeseen. T\u00e4m\u00e4 opas k\u00e4y l\u00e4pi kaiken, mit\u00e4 sinun tulee tiet\u00e4\u00e4 TDEE:st\u00e4 ja miten k\u00e4ytt\u00e4\u00e4 t\u00e4t\u00e4 laskuria tehokkaasti.<\/p>\n\n\t\t<h3>Mik\u00e4 on TDEE?<\/h3>\n\t\t<p>TDEE tarkoittaa Total Daily Energy Expenditure. Se edustaa kalorien kokonaism\u00e4\u00e4r\u00e4\u00e4, jonka kehosi polttaa 24 tunnin aikana. Kyse ei ole vain liikunnasta; se on kokonaisvaltainen mittari, joka sis\u00e4lt\u00e4\u00e4 kaikki kehon toiminnot hengityksest\u00e4 ja ajattelusta k\u00e4velyyn ja treenaamiseen. TDEE:si tunteminen tarkoittaa, ett\u00e4 tied\u00e4t tarkalleen, kuinka monta kaloria kehosi tarvitsee nykyisen painosi yll\u00e4pit\u00e4miseen. T\u00e4m\u00e4 luku on perusta, jolle jokainen tehokas ruokavaliosuunnitelma rakentuu.<\/p>\n\n\t\t<h3>TDEE:si nelj\u00e4 komponenttia<\/h3>\n\t\t<p>TDEE:si ei ole yksi luku vaan nelj\u00e4n avainkomponentin summa:<\/p>\n\t\t<ul>\n\t\t\t<li><strong>Perusaineenvaihdunta (BMR):<\/strong> T\u00e4m\u00e4 on energia, jonka kehosi k\u00e4ytt\u00e4\u00e4 t\u00e4ydellisess\u00e4 levossa elint\u00e4rkeisiin toimintoihin, kuten hengitykseen, verenkiertoon ja kehon l\u00e4mp\u00f6tilan s\u00e4\u00e4telyyn. Se on suurin osa TDEE:st\u00e4si. Ty\u00f6kalumme k\u00e4ytt\u00e4\u00e4 tarkkaa Katch-McArdlen kaavaa, joka vaatii rasvaprosentin, mik\u00e4 tekee siit\u00e4 tarkemman <strong>BMR-laskuri<\/strong> kuin ne, jotka nojaavat vain painoon ja pituuteen.<\/li>\n\t\t\t<li><strong>Non-Exercise Activity Thermogenesis (NEAT):<\/strong> T\u00e4m\u00e4 sis\u00e4lt\u00e4\u00e4 kaikki kalorit, jotka poltetaan aktiviteeteilla, jotka eiv\u00e4t ole varsinaista liikuntaa, kuten k\u00e4vely autollesi, n\u00e4pp\u00e4imist\u00f6n naputtelu, levoton liikehdint\u00e4 tai kotity\u00f6t. P\u00e4ivitt\u00e4iset askeleet ovat loistava tapa mitata ja lis\u00e4t\u00e4 NEAT:iasi.<\/li>\n\t\t\t<li><strong>Exercise Activity Thermogenesis (EAT):<\/strong> T\u00e4m\u00e4 on energia, joka kulutetaan suunniteltujen fyysisten aktiviteettien, kuten juoksun, painonnoston tai urheilun aikana.<\/li>\n\t\t\t<li><strong>Thermic Effect of Food (TEF):<\/strong> Kehosi k\u00e4ytt\u00e4\u00e4 energiaa sy\u00f6m\u00e4si ruoan sulattamiseen, imeytt\u00e4miseen ja aineenvaihduntaan. T\u00e4m\u00e4 on noin 10 % p\u00e4ivitt\u00e4isest\u00e4 kalorisaannistasi.<\/li>\n\t\t<\/ul>\n\n\t\t<h3>Miten k\u00e4ytt\u00e4\u00e4 TDEE-laskuria laihtumiseen<\/h3>\n\t\t<p>Laihtuaksesi sinun on oltava kalorivajeessa. Se tarkoittaa v\u00e4hemm\u00e4n kalorien nauttimista kuin TDEE:si. <strong>kalorivajelaskuri<\/strong> on olennaisesti TDEE-laskuri, jota k\u00e4ytet\u00e4\u00e4n t\u00e4h\u00e4n tarkkaan tarkoitukseen. Kun tied\u00e4t yll\u00e4pito-TDEE:si, voit luoda kest\u00e4v\u00e4n vajeen. Esimerkiksi 500 kalorin p\u00e4ivitt\u00e4inen vaje johtaa tyypillisesti noin 0,45 kg:n (1 lb) pudotukseen viikossa. <strong>TDEE-laskuri laihtumiseen<\/strong> antaa sinun asettaa t\u00e4m\u00e4n vajeen tarkasti ja ennustaa edistymisesi ajassa.<\/p>\n\n\t\t<h3>BMR vs TDEE: mik\u00e4 on ero?<\/h3>\n\t\t<p>BMR ja TDEE sekoitetaan usein. Ajattele sit\u00e4 n\u00e4in: BMR:si on kehosi \u00abtyhj\u00e4k\u00e4ynnin\u00bb energiakustannus, kun taas TDEE:si on kokonaiskustannus, joka sis\u00e4lt\u00e4\u00e4 kaikki p\u00e4ivitt\u00e4iset aktiviteettisi. Sinun ei koskaan pit\u00e4isi sy\u00f6d\u00e4 alle BMR:si, koska se voi vaikuttaa kielteisesti aineenvaihduntaasi ja terveyteesi. TDEE:si on k\u00e4yt\u00e4nn\u00f6n luku, jota sinun tulisi k\u00e4ytt\u00e4\u00e4 ruokavaliosi suunnitteluun.<\/p>\n\n\t\t<h3>Makrojesi laskeminen TDEE:st\u00e4si<\/h3>\n\t\t<p>Kun sinulla on tavoitekalorisaantisi TDEE-laskurista, seuraava vaihe on m\u00e4\u00e4ritt\u00e4\u00e4 makroravinnejakaumasi (proteiinit, rasvat ja hiilihydraatit). Hyv\u00e4 <strong>makrolaskuri<\/strong> k\u00e4ytt\u00e4\u00e4 TDEE:t\u00e4si l\u00e4ht\u00f6kohtana. Ty\u00f6kalumme tarjoaa kolme yleist\u00e4 ruokavaliosuunnitelmaa (Low Carb, Moderate Carb ja High Carb) auttaakseen sinua l\u00f6yt\u00e4m\u00e4\u00e4n el\u00e4m\u00e4ntapaasi ja mieltymyksiisi sopivan tasapainon, varmistaen, ettet vain osu kalorilukuun vaan my\u00f6s ravitset kehoasi tehokkaasti.<\/p>\n\t<\/section>\n\n\t<script>\n\t\t\/\/ --- GLOBAL VARIABLES ---\n\t\tconst form = document.getElementById('tdee-form');\n\t\tconst resultsSection = document.getElementById('results');\n\t\tconst errorMessage = document.getElementById('error-message');\n\t\tconst unitSelect = document.getElementById('units');\n\t\tconst weightLabel = document.querySelector('label[for=\"weight\"] .unit');\n\t\tconst heightLabel = document.querySelector('label[for=\"height\"] .unit');\n\t\tconst goalSelect = document.getElementById('goal');\n\t\tconst intensityGroup = document.getElementById('intensity-group');\n\t\tconst slider = document.getElementById('intensity-slider');\n\t\tconst sliderValueLabel = document.getElementById('slider-value');\n\t\tconst activityTypeSelect = document.getElementById('activityType');\n\t\tconst activityDetailsDiv = document.getElementById('activity-details');\n\t\tlet weightChart, breakdownChart, lcChart, mcChart, hcChart;\n\n\t\t\/\/ --- UI EVENT LISTENERS ---\n\t\tunitSelect.addEventListener('change', () => {\n\t\t\tconst isMetric = unitSelect.value === 'metric';\n\t\t\tweightLabel.textContent = isMetric ? '(kg)' : '(lbs)';\n\t\t\theightLabel.textContent = isMetric ? '(cm)' : '(in)';\n\t\t\tdocument.getElementById('height').placeholder = isMetric ? '175' : '69';\n\t\t});\n\n\t\tfunction handleGoalChange() {\n\t\t\tconst goal = goalSelect.value;\n\t\t\tif (goal === 'maintenance') {\n\t\t\t\tintensityGroup.style.opacity = '0.5';\n\t\t\t\tslider.disabled = true;\n\t\t\t\tslider.value = 0;\n\t\t\t} else {\n\t\t\t\tintensityGroup.style.opacity = '1';\n\t\t\t\tslider.disabled = false;\n\t\t\t\tslider.min = (goal === 'deficit') ? -1000 : 100;\n\t\t\t\tslider.max = (goal === 'deficit') ? -100 : 1000;\n\t\t\t\tslider.value = (goal === 'deficit') ? -500 : 250;\n\t\t\t}\n\t\t\tupdateSliderLabel();\n\t\t}\n\n\t\tfunction updateSliderLabel() {\n\t\t\tconst value = parseInt(slider.value);\n\t\t\tconst sign = value >= 0 ? '+' : '';\n\t\t\tsliderValueLabel.textContent = `${sign}${value} kcal`;\n\t\t}\n\n\t\tgoalSelect.addEventListener('change', handleGoalChange);\n\t\tslider.addEventListener('input', updateSliderLabel);\n\n\t\tfunction handleActivityTypeChange() {\n\t\t\tconst type = activityTypeSelect.value;\n\t\t\tactivityDetailsDiv.innerHTML = ''; \/\/ Clear previous\n\n\t\t\tif (type === 'cardio') {\n\t\t\t\tactivityDetailsDiv.innerHTML = `\n\t\t\t\t\t<label for=\"activityMET\">Cardio Type<\/label>\n\t\t\t\t\t<select id=\"activityMET\" class=\"input-group\">\n\t\t\t\t\t\t <optgroup label=\"Walking\"><option value=\"3.8\">Moderate<\/option><option value=\"5.0\">Fast<\/option><\/optgroup>\n\t\t\t\t\t\t <optgroup label=\"Running\"><option value=\"9.8\">Moderate<\/option><option value=\"12.8\">Fast<\/option><\/optgroup>\n\t\t\t\t\t\t <optgroup label=\"Cycling\"><option value=\"8.0\">Moderate<\/option><option value=\"10.0\">Vigorous<\/option><\/optgroup>\n\t\t\t\t\t\t <optgroup label=\"Swimming\"><option value=\"7.0\">Moderate<\/option><option value=\"9.8\">Vigorous<\/option><\/optgroup>\n\t\t\t\t\t<\/select>\n\t\t\t\t\t<label for=\"duration\" style=\"margin-top: 1rem;\">Duration <span class=\"unit\">(min)<\/span><\/label>\n\t\t\t\t\t<input type=\"number\" id=\"duration\" placeholder=\"45\" value=\"45\" class=\"input-group\">\n\t\t\t\t`;\n\t\t\t} else if (type === 'strength') {\n\t\t\t\tactivityDetailsDiv.innerHTML = `\n\t\t\t\t\t<label for=\"strengthIntensity\">Intensity<\/label>\n\t\t\t\t\t<select id=\"strengthIntensity\" class=\"input-group\">\n\t\t\t\t\t\t<option value=\"3.0\">Light<\/option>\n\t\t\t\t\t\t<option value=\"4.5\" selected>Moderate<\/option>\n\t\t\t\t\t\t<option value=\"6.0\">Intensive<\/option>\n\t\t\t\t\t<\/select>\n\t\t\t\t`;\n\t\t\t}\n\t\t}\n\t\tactivityTypeSelect.addEventListener('change', handleActivityTypeChange);\n\n\t\t\/\/ --- FORM SUBMISSION & CALCULATION ---\n\t\tform.addEventListener('submit', function(event) {\n\t\t\tevent.preventDefault();\n\n\t\t\tlet weight = parseFloat(document.getElementById('weight').value);\n\t\t\tlet height = parseFloat(document.getElementById('height').value);\n\t\t\tconst age = parseFloat(document.getElementById('age').value);\n\t\t\tconst gender = document.getElementById('gender').value;\n\t\t\tconst bodyfat = parseFloat(document.getElementById('bodyfat').value);\n\t\t\tconst steps = parseFloat(document.getElementById('steps').value);\n\t\t\tconst goal = goalSelect.value;\n\t\t\tconst kcalChange = goal === 'maintenance' ? 0 : parseInt(slider.value);\n\t\t\t\n\t\t\tif (isNaN(weight) || isNaN(bodyfat) || isNaN(steps) || isNaN(height) || isNaN(age)) {\n\t\t\t\terrorMessage.textContent = \"Please fill all required fields with valid numbers.\";\n\t\t\t\terrorMessage.style.display = 'block';\n\t\t\t\tresultsSection.style.display = 'none';\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\t\/\/ New validation for ranges\n\t\t\tif (age < 15 || age > 110) { errorMessage.textContent = \"Please enter an age between 15 and 110.\"; }\n\t\t\telse if (weight < 25 || weight > 500) { errorMessage.textContent = \"Please enter a weight between 25 and 500 kg.\"; }\n\t\t\telse if (height < 70 || height > 250) { errorMessage.textContent = \"Please enter a height between 70 and 250 cm.\"; }\n\t\t\telse if (bodyfat < 1 || bodyfat > 80) { errorMessage.textContent = \"Please enter a body fat percentage between 1 and 80.\"; }\n\t\t\telse { errorMessage.style.display = 'none'; }\n\n\t\t\tif(errorMessage.style.display === 'block') {\n\t\t\t\tresultsSection.style.display = 'none';\n\t\t\t\treturn;\n\t\t\t}\n\n\n\t\t\tconst currentUnits = unitSelect.value;\n\t\t\tif (currentUnits === 'imperial') {\n\t\t\t\tweight = weight * 0.453592; \/\/ lbs to kg\n\t\t\t\theight = height * 2.54; \/\/ in to cm\n\t\t\t}\n\n\t\t\tlet activityMet = 0;\n\t\t\tlet duration = 0;\n\t\t\tconst activityType = activityTypeSelect.value;\n\t\t\tif (activityType === 'cardio') {\n\t\t\t\tactivityMet = parseFloat(document.getElementById('activityMET')?.value) || 0;\n\t\t\t\tduration = parseFloat(document.getElementById('duration')?.value) || 0;\n\t\t\t} else if (activityType === 'strength') {\n\t\t\t\tactivityMet = parseFloat(document.getElementById('strengthIntensity')?.value) || 0;\n\t\t\t\tduration = 45; \/\/ Hardcoded 45 minutes for strength\n\t\t\t}\n\t\t\t\n\t\t\tconst leanBodyMass = weight * (1 - (bodyfat \/ 100));\n\t\t\tconst bmr = 370 + (21.6 * leanBodyMass);\n\t\t\tconst neat = (bmr * steps) \/ 48000;\n\t\t\tconst eat = activityMet * weight * (duration \/ 60);\n\t\t\tconst X = bmr + neat + eat;\n\n\t\t\tconst tefForMaintenance = X \/ 9;\n\t\t\tconst tdeeForMaintenance = X + tefForMaintenance;\n\n\t\t\tconst tefForGoal = (X + kcalChange) \/ 9;\n\t\t\tconst tdeeForGoal = X + tefForGoal;\n\t\t\tconst goalCalories = tdeeForGoal + kcalChange;\n\n\t\t\tdocument.getElementById('tdee-result').textContent = tdeeForMaintenance.toFixed(0);\n\t\t\tdocument.getElementById('goal-result').textContent = goalCalories.toFixed(0);\n\n\t\t\tconst goalCard = document.getElementById('goal-card');\n\t\t\tgoalCard.className = 'result-card';\n\t\t\tgoalCard.classList.add(goal);\n\n\t\t\tconst { labels, dailyData, avgData, projectedWeights } = generateProjectionData(weight, kcalChange, currentUnits);\n\n\t\t\tdocument.getElementById('p-30-result').textContent = parseFloat(projectedWeights[30]).toFixed(1);\n\t\t\tdocument.getElementById('p-60-result').textContent = parseFloat(projectedWeights[60]).toFixed(1);\n\t\t\tdocument.getElementById('p-90-result').textContent = parseFloat(projectedWeights[90]).toFixed(1);\n\t\t\tdocument.querySelectorAll('#projection-summary .unit').forEach(el => {\n\t\t\t\tel.textContent = currentUnits === 'metric' ? 'kg' : 'lbs';\n\t\t\t});\n\t\t\t\n\t\t\tresultsSection.style.display = 'block';\n\t\t\t\n\t\t\t\/\/ Move SEO article into results section\n\t\t\tconst seoArticle = document.getElementById('seo-article-section');\n\t\t\tresultsSection.appendChild(seoArticle);\n\n\t\t\tupdateBreakdownDisplay(bmr, neat, eat, tefForMaintenance);\n\t\t\tupdateWeightChart(labels, dailyData, avgData, kcalChange, currentUnits);\n\t\t\tupdateMacrosDisplay(goalCalories);\n\t\t\tupdateBodyStatsDisplay(weight, height, gender, currentUnits);\n\n\t\t\tresultsSection.scrollIntoView({ behavior: 'smooth', block: 'start' });\n\t\t});\n\t\t\n\t\tfunction generateProjectionData(startWeight, kcalChange, units) {\n\t\t\tconst kgChangePerDay = kcalChange \/ 7700;\n\t\t\tconst labels = [];\n\t\t\tconst dailyData = [];\n\t\t\tconst avgData = [];\n\t\t\tconst projectedWeights = [];\n\t\t\tlet trueAvgWeight = startWeight;\n\n\t\t\tfor (let i = 0; i <= 90; i++) {\n\t\t\t\tlabels.push(`Day ${i}`);\n\t\t\t\tif (i > 0) trueAvgWeight += kgChangePerDay;\n\t\t\t\t\n\t\t\t\tconst avgWobble = (Math.sin(i \/ 6) * 0.15) + ((Math.random() - 0.5) * 0.1);\n\t\t\t\tconst wobbledAvgWeight = trueAvgWeight + avgWobble;\n\t\t\t\tconst dailyFluctuation = (Math.random() - 0.5) * 0.8;\n\t\t\t\tconst currentDailyWeight = wobbledAvgWeight + dailyFluctuation;\n\t\t\t\t\n\t\t\t\tif (units === 'imperial') {\n\t\t\t\t\tdailyData.push((currentDailyWeight * 2.20462).toFixed(2));\n\t\t\t\t\tavgData.push((wobbledAvgWeight * 2.20462).toFixed(2));\n\t\t\t\t\tprojectedWeights.push((trueAvgWeight * 2.20462).toFixed(2));\n\t\t\t\t} else {\n\t\t\t\t\tdailyData.push(currentDailyWeight.toFixed(2));\n\t\t\t\t\tavgData.push(wobbledAvgWeight.toFixed(2));\n\t\t\t\t\tprojectedWeights.push(trueAvgWeight.toFixed(2));\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn { labels, dailyData, avgData, projectedWeights };\n\t\t}\n\n\t\t\/\/ --- CHART & DISPLAY FUNCTIONS ---\n\t\tfunction updateBreakdownDisplay(bmr, neat, eat, tef) {\n\t\t\tconst breakdownTextDiv = document.getElementById('breakdown-text');\n\t\t\tbreakdownTextDiv.innerHTML = `\n\t\t\t\t<h3>Details<\/h3>\n\t\t\t\t<ul>\n\t\t\t\t\t<li><span>BMR (Base Metabolism)<\/span> <span>${bmr.toFixed(0)} kcal<\/span><\/li>\n\t\t\t\t\t<li><span>NEAT (Non-Exercise)<\/span> <span>${neat.toFixed(0)} kcal<\/span><\/li>\n\t\t\t\t\t<li><span>EAT (Exercise)<\/span> <span>${eat.toFixed(0)} kcal<\/span><\/li>\n\t\t\t\t\t<li><span>TEF (Food Digestion)<\/span> <span>${tef.toFixed(0)} kcal<\/span><\/li>\n\t\t\t\t<\/ul>\n\t\t\t`;\n\t\t\tconst ctx = document.getElementById('breakdown-chart').getContext('2d');\n\t\t\tif (breakdownChart) breakdownChart.destroy();\n\t\t\tbreakdownChart = new Chart(ctx, {\n\t\t\t\ttype: 'doughnut',\n\t\t\t\tdata: {\n\t\t\t\t\tlabels: ['BMR', 'NEAT', 'EAT', 'TEF'],\n\t\t\t\t\tdatasets: [{\n\t\t\t\t\t\tdata: [bmr, neat, eat, tef],\n\t\t\t\t\t\tbackgroundColor: ['#EB628C', '#EF8652', '#E9473E', '#EDDB7F'],\n\t\t\t\t\t\tborderColor: '#F8F8F9',\n\t\t\t\t\t\tborderWidth: 4\n\t\t\t\t\t}]\n\t\t\t\t},\n\t\t\t\toptions: {\n\t\t\t\t\tresponsive: true,\n\t\t\t\t\tcutout: '60%',\n\t\t\t\t\tplugins: { legend: { position: 'bottom' }, tooltip: { callbacks: { label: (c) => `${c.label}: ${c.parsed.toFixed(0)} kcal` } } }\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tfunction updateWeightChart(labels, dailyData, avgData, kcalChange, units) {\n\t\t\tconst yAxisOptions = { title: { display: true, text: `Weight (${units === 'metric' ? 'kg' : 'lbs'})` } };\n\t\t\tif (Math.abs(kcalChange) < 50) {\n\t\t\t\tconst allWeights = dailyData.map(parseFloat);\n\t\t\t\tconst minVal = Math.min(...allWeights);\n\t\t\t\tconst maxVal = Math.max(...allWeights);\n\t\t\t\tyAxisOptions.suggestedMin = minVal - 2;\n\t\t\t\tyAxisOptions.suggestedMax = maxVal + 2;\n\t\t\t}\n\t\t\tconst goal = goalSelect.value;\n\t\t\tconst colorSet = {\n\t\t\t\tdeficit: { line: 'rgba(0, 90, 156, 1)', area: 'rgba(0, 90, 156, 0.1)' },\n\t\t\t\tmaintenance: { line: 'rgba(31, 136, 61, 1)', area: 'rgba(31, 136, 61, 0.1)' },\n\t\t\t\tsurplus: { line: 'rgba(217, 45, 32, 1)', area: 'rgba(217, 45, 32, 0.1)' }\n\t\t\t};\n\t\t\tconst ctx = document.getElementById('weight-chart').getContext('2d');\n\t\t\tif (weightChart) weightChart.destroy();\n\t\t\tweightChart = new Chart(ctx, {\n\t\t\t\ttype: 'line',\n\t\t\t\tdata: {\n\t\t\t\t\tlabels: labels,\n\t\t\t\t\tdatasets: [\n\t\t\t\t\t\t{ label: `Daily Weight (Simulated)`, data: dailyData, borderColor: 'transparent', backgroundColor: colorSet[goal].area, pointRadius: 0, fill: true, },\n\t\t\t\t\t\t{ label: 'Average Weight (Projection)', data: avgData, borderColor: colorSet[goal].line, borderWidth: 2.5, pointRadius: 0, fill: false, tension: 0.4 }\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\toptions: { responsive: true, scales: { y: yAxisOptions, x: { title: { display: true, text: 'Days' } } }, plugins: { tooltip: { mode: 'index', intersect: false } }, interaction: { mode: 'index', intersect: false } }\n\t\t\t});\n\t\t}\n\t\t\n\t\tfunction updateMacrosDisplay(calories) {\n\t\t\tconst ratios = { lc: { p: 0.40, f: 0.40, c: 0.20 }, mc: { p: 0.30, f: 0.35, c: 0.35 }, hc: { p: 0.30, f: 0.20, c: 0.50 } };\n\t\t\tdocument.getElementById('lc-protein').textContent = `${((calories * ratios.lc.p) \/ 4).toFixed(0)} g`;\n\t\t\tdocument.getElementById('lc-fat').textContent = `${((calories * ratios.lc.f) \/ 9).toFixed(0)} g`;\n\t\t\tdocument.getElementById('lc-carbs').textContent = `${((calories * ratios.lc.c) \/ 4).toFixed(0)} g`;\n\t\t\tdocument.getElementById('mc-protein').textContent = `${((calories * ratios.mc.p) \/ 4).toFixed(0)} g`;\n\t\t\tdocument.getElementById('mc-fat').textContent = `${((calories * ratios.mc.f) \/ 9).toFixed(0)} g`;\n\t\t\tdocument.getElementById('mc-carbs').textContent = `${((calories * ratios.mc.c) \/ 4).toFixed(0)} g`;\n\t\t\tdocument.getElementById('hc-protein').textContent = `${((calories * ratios.hc.p) \/ 4).toFixed(0)} g`;\n\t\t\tdocument.getElementById('hc-fat').textContent = `${((calories * ratios.hc.f) \/ 9).toFixed(0)} g`;\n\t\t\tdocument.getElementById('hc-carbs').textContent = `${((calories * ratios.hc.c) \/ 4).toFixed(0)} g`;\n\t\t\tconst macroColors = ['#E55480', '#A377E3', '#F2C042'];\n\t\t\tconst chartOptions = { responsive: true, cutout: '60%', plugins: { legend: { display: false }, tooltip: { callbacks: { label: (c) => `${c.label}: ${c.parsed.toFixed(0)} kcal` } } } };\n\t\t\tconst lcCtx = document.getElementById('lc-chart').getContext('2d');\n\t\t\tif(lcChart) lcChart.destroy();\n\t\t\tlcChart = new Chart(lcCtx, { type: 'doughnut', data: { labels: ['Protein', 'Fats', 'Carbs'], datasets: [{ data: [calories * ratios.lc.p, calories * ratios.lc.f, calories * ratios.lc.c], backgroundColor: macroColors, borderColor: '#fff', borderWidth: 2 }] }, options: chartOptions });\n\t\t\tconst mcCtx = document.getElementById('mc-chart').getContext('2d');\n\t\t\tif(mcChart) mcChart.destroy();\n\t\t\tmcChart = new Chart(mcCtx, { type: 'doughnut', data: { labels: ['Protein', 'Fats', 'Carbs'], datasets: [{ data: [calories * ratios.mc.p, calories * ratios.mc.f, calories * ratios.mc.c], backgroundColor: macroColors, borderColor: '#fff', borderWidth: 2 }] }, options: chartOptions });\n\t\t\tconst hcCtx = document.getElementById('hc-chart').getContext('2d');\n\t\t\tif(hcChart) hcChart.destroy();\n\t\t\thcChart = new Chart(hcCtx, { type: 'doughnut', data: { labels: ['Protein', 'Fats', 'Carbs'], datasets: [{ data: [calories * ratios.hc.p, calories * ratios.hc.f, calories * ratios.hc.c], backgroundColor: macroColors, borderColor: '#fff', borderWidth: 2 }] }, options: chartOptions });\n\t\t}\n\n\t\tfunction updateBodyStatsDisplay(weightKg, heightCm, gender, units) {\n\t\t\tconst isMetric = units === 'metric';\n\t\t\tconst weightUnit = isMetric ? 'kg' : 'lbs';\n\t\t\t\n\t\t\t\/\/ --- BMI Calculation ---\n\t\t\tconst heightM = heightCm \/ 100;\n\t\t\tconst bmi = weightKg \/ (heightM * heightM);\n\t\t\tlet bmiCategory = 'N\/A';\n\t\t\tif (bmi < 18.5) bmiCategory = 'Underweight';\n\t\t\telse if (bmi < 25) bmiCategory = 'Normal Weight';\n\t\t\telse if (bmi < 30) bmiCategory = 'Overweight';\n\t\t\telse bmiCategory = 'Obese';\n\t\t\tdocument.getElementById('bmi-value').textContent = bmi.toFixed(1);\n\t\t\tdocument.getElementById('bmi-category').textContent = bmiCategory;\n\n\t\t\t\/\/ --- Ideal Weight Calculation ---\n\t\t\tconst heightIn = heightCm \/ 2.54;\n\t\t\tconst inchesOver5Ft = heightIn > 60 ? heightIn - 60 : 0;\n\t\t\tlet idealWeights = [];\n\t\t\tif (gender === 'male') {\n\t\t\t\tidealWeights.push(48.0 + 2.7 * inchesOver5Ft); \/\/ Hamwi\n\t\t\t\tidealWeights.push(50.0 + 2.3 * inchesOver5Ft); \/\/ Devine\n\t\t\t\tidealWeights.push(52.0 + 1.9 * inchesOver5Ft); \/\/ Robinson\n\t\t\t\tidealWeights.push(56.2 + 1.41 * inchesOver5Ft); \/\/ Miller\n\t\t\t} else { \/\/ female\n\t\t\t\tidealWeights.push(45.5 + 2.2 * inchesOver5Ft); \/\/ Hamwi\n\t\t\t\tidealWeights.push(45.5 + 2.3 * inchesOver5Ft); \/\/ Devine\n\t\t\t\tidealWeights.push(49.0 + 1.7 * inchesOver5Ft); \/\/ Robinson\n\t\t\t\tidealWeights.push(53.1 + 1.36 * inchesOver5Ft); \/\/ Miller\n\t\t\t}\n\t\t\tconst minIdeal = Math.min(...idealWeights);\n\t\t\tconst maxIdeal = Math.max(...idealWeights);\n\t\t\tconst idealRangeKg = `${minIdeal.toFixed(1)} - ${maxIdeal.toFixed(1)}`;\n\t\t\tconst idealRangeLbs = `${(minIdeal * 2.20462).toFixed(1)} - ${(maxIdeal * 2.20462).toFixed(1)}`;\n\t\t\tdocument.getElementById('ideal-weight-value').textContent = isMetric ? `${idealRangeKg} kg` : `${idealRangeLbs} lbs`;\n\n\t\t\tconst idealWeightList = document.querySelector('#ideal-weight-card ul');\n\t\t\tidealWeightList.innerHTML = `\n\t\t\t\t<li><span>Hamwi Formula<\/span><span>${(isMetric ? idealWeights[0].toFixed(1) : (idealWeights[0] * 2.20462).toFixed(1))} ${weightUnit}<\/span><\/li>\n\t\t\t\t<li><span>Devine Formula<\/span><span>${(isMetric ? idealWeights[1].toFixed(1) : (idealWeights[1] * 2.20462).toFixed(1))} ${weightUnit}<\/span><\/li>\n\t\t\t\t<li><span>Robinson Formula<\/span><span>${(isMetric ? idealWeights[2].toFixed(1) : (idealWeights[2] * 2.20462).toFixed(1))} ${weightUnit}<\/span><\/li>\n\t\t\t\t<li><span>Miller Formula<\/span><span>${(isMetric ? idealWeights[3].toFixed(1) : (idealWeights[3] * 2.20462).toFixed(1))} ${weightUnit}<\/span><\/li>\n\t\t\t`;\n\n\t\t\t\/\/ --- Max Muscular Potential ---\n\t\t\tconst maxLBMKg = heightCm - 100;\n\t\t\tconst maxLBMDisplay = isMetric ? `${maxLBMKg.toFixed(1)} kg` : `${(maxLBMKg * 2.20462).toFixed(1)} lbs`;\n\t\t\tdocument.getElementById('mmp-value').textContent = maxLBMDisplay;\n\t\t\t\n\t\t\tconst mmpList = document.querySelector('#mmp-card ul');\n\t\t\tmmpList.innerHTML = `\n\t\t\t\t<li><span>Total Weight at 8% BF<\/span><span>${(isMetric ? (maxLBMKg \/ 0.92).toFixed(1) : ((maxLBMKg \/ 0.92) * 2.20462).toFixed(1))} ${weightUnit}<\/span><\/li>\n\t\t\t\t<li><span>Total Weight at 10% BF<\/span><span>${(isMetric ? (maxLBMKg \/ 0.90).toFixed(1) : ((maxLBMKg \/ 0.90) * 2.20462).toFixed(1))} ${weightUnit}<\/span><\/li>\n\t\t\t\t<li><span>Total Weight at 12% BF<\/span><span>${(isMetric ? (maxLBMKg \/ 0.88).toFixed(1) : ((maxLBMKg \/ 0.88) * 2.20462).toFixed(1))} ${weightUnit}<\/span><\/li>\n\t\t\t`;\n\t\t}\n\n\n\t\t\/\/ --- INITIALIZE UI ---\n\t\thandleGoalChange();\n\t\thandleActivityTypeChange();\n\t<\/script>\n<\/body>\n<\/html>\n\n\n\n<section class=\"lean-method\" style=\"margin:40px auto 0;max-width:760px;padding:22px 26px;background:#FAF7F2;border-radius:12px;font-family:-apple-system,'SF Pro Text','Segoe UI',Roboto,Arial,sans-serif;color:#1a1a2e;line-height:1.55;\"><h2 style=\"margin:0 0 10px;font-size:20px;\">Menetelm\u00e4 ja l\u00e4hteet<\/h2><p style=\"margin:0 0 10px;font-size:15px;\">T\u00e4m\u00e4 laskuri rakentaa p\u00e4ivitt\u00e4isen kokonaisenergiankulutuksen nelj\u00e4st\u00e4 mitatusta komponentista: perusaineenvaihdunta laskettuna rasvaprosentista (rasvaton massa) eik\u00e4 pelk\u00e4st\u00e4\u00e4n i\u00e4st\u00e4 ja painosta, ei-liikunnallinen aktiivisuustermogeneesi johdettuna p\u00e4ivitt\u00e4isist\u00e4 askelista, liikunnan energiankulutus MET-arvoista ja ruoan l\u00e4mp\u00f6vaikutus makroravinnejakaumasta. Metabolinen adaptaatio k\u00e4sitell\u00e4\u00e4n erikseen perusaineenvaihduntaan sovellettavana kertoimena, sit\u00e4 ei koskaan lis\u00e4t\u00e4 summaan.<\/p><ul style=\"margin:0 0 12px 18px;padding:0;font-size:14px;color:#4D4D52;\"><li>Harris J.A., Benedict F.G. (1918). A Biometric Study of Human Basal Metabolism. PNAS 4(12):370-373.<\/li><li>Mifflin M.D. et al. (1990). A new predictive equation for resting energy expenditure in healthy individuals. Am J Clin Nutr 51(2):241-247.<\/li><li>Levine J.A. (2004). Non-exercise activity thermogenesis (NEAT). Nutr Rev 62(7 Pt 2):S82-S97.<\/li><li>Westerterp K.R. (2004). Diet induced thermogenesis. Nutr Metab (Lond) 1:5.<\/li><li>Ainsworth B.E. et al. (2011). 2011 Compendium of Physical Activities. Med Sci Sports Exerc 43(8):1575-1581.<\/li><li>Lean-tutkimustiimi (2026). 857 655 analysoitua tuotetta: kaloritietojen sis\u00e4inen johdonmukaisuus Open Food Factsissa. Zenodo, DOI 10.5281\/zenodo.22284416.<\/li><\/ul><p style=\"margin:0;font-size:13px;color:#4D4D52;\">T\u00e4m\u00e4 ty\u00f6kalu tarjoaa arvioita tiedoksi ja opetukseen. Se ei ole l\u00e4\u00e4ketieteellist\u00e4 neuvontaa eik\u00e4 korvaa l\u00e4\u00e4k\u00e4rin tai laillistetun ravitsemusterapeutin konsultaatiota, erityisesti sairauden, raskauden tai sy\u00f6mish\u00e4iri\u00f6n tapauksessa.<\/p><\/section>\n\n\n\n<!-- lean-mesh-v11 -->\n<aside class=\"lean-mesh\" style=\"margin:48px auto;max-width:760px;padding:24px 28px;background:#ffffff;border-left:4px solid #FF2D6E;border-radius:0 12px 12px 0;box-shadow:0 6px 24px rgba(20,20,40,0.06);font-family:-apple-system,'SF Pro Text','Segoe UI',Roboto,Arial,sans-serif;color:#1a1a2e;\"><p style=\"margin:0 0 14px;font-size:13px;font-weight:700;letter-spacing:0.06em;text-transform:uppercase;color:#FF2D6E;\">Lue seuraavaksi<\/p><ul style=\"list-style:none;padding:0;margin:0;display:grid;grid-template-columns:1fr;gap:10px;\"><li><a href=\"https:\/\/lean-app.com\/en\/calcul-metabolisme-de-base\/\" style=\"display:block;padding:14px 16px;background:#FAF7F2;border-radius:8px;color:#1a1a2e;text-decoration:none;font-weight:600;line-height:1.4;\">BMR-laskuri: Harris-Benedict, Mifflin-St Jeor ja Lean-malli vertailtuna <span style=\"color:#4D4D52;font-weight:400;display:block;font-size:14px;margin-top:4px;\">Miksi vuoden 1919 kaavat eiv\u00e4t osu todelliseen perusaineenvaihduntaasi, ja mit\u00e4 rasvaprosentti muuttaa.<\/span><\/a><\/li><li><a href=\"https:\/\/lean-app.com\/en\/calculateur-neat\/\" style=\"display:block;padding:14px 16px;background:#FAF7F2;border-radius:8px;color:#1a1a2e;text-decoration:none;font-weight:600;line-height:1.4;\">NEAT-laskuri: kuinka monta kaloria askeleesi todella polttavat <span style=\"color:#4D4D52;font-weight:400;display:block;font-size:14px;margin-top:4px;\">Kulutuksesi ei-liikunnallinen osa, p\u00e4ivitt\u00e4isest\u00e4 askelm\u00e4\u00e4r\u00e4st\u00e4si.<\/span><\/a><\/li><li><a href=\"https:\/\/lean-app.com\/en\/calculateur-deficit-calorique\/\" style=\"display:block;padding:14px 16px;background:#FAF7F2;border-radius:8px;color:#1a1a2e;text-decoration:none;font-weight:600;line-height:1.4;\">Kalorivajelaskuri: oikea l\u00e4hestymistapa dieettiin <span style=\"color:#4D4D52;font-weight:400;display:block;font-size:14px;margin-top:4px;\">Todelliseen TDEE:hesi rakennettu vaje, kolme vauhtia hitaasta aggressiiviseen.<\/span><\/a><\/li><li><a href=\"https:\/\/lean-app.com\/en\/calculateur-masse-grasse\/\" style=\"display:block;padding:14px 16px;background:#FAF7F2;border-radius:8px;color:#1a1a2e;text-decoration:none;font-weight:600;line-height:1.4;\">Rasvaprosenttilaskuri: todellinen rasvaprosenttisi (US Navy -menetelm\u00e4) <span style=\"color:#4D4D52;font-weight:400;display:block;font-size:14px;margin-top:4px;\">Sy\u00f6te, joka tekee TDEE-arviosta tarkan.<\/span><\/a><\/li><li><a href=\"https:\/\/lean-app.com\/en\/calculateurs\/\" style=\"display:block;padding:14px 16px;background:#FAF7F2;border-radius:8px;color:#1a1a2e;text-decoration:none;font-weight:600;line-height:1.4;\">Kaikki Lean-laskurit: kulutus ja tarpeet, komponentti komponentilta <span style=\"color:#4D4D52;font-weight:400;display:block;font-size:14px;margin-top:4px;\">TDEE, BMR, NEAT, rasvaprosentti, proteiini, makrot, metabolinen adaptaatio.<\/span><\/a><\/li><\/ul><\/aside>","protected":false},"excerpt":{"rendered":"<p>Advanced TDEE Calculator TDEE Calculator Define your goal and visualize your progress. \u2699\ufe0f Units Metric (kg, cm)Imperial (lbs, in) \ud83d\udc64 Your Information Gender MaleFemale Age Weight (kg) Height (cm) Body Fat (%) Need to measure your body fat accurately? Download Lean and use the AI BodyScan! Lean \ud83c\udfc3 Your Activity Steps per day Sport Type [&hellip;]<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-675","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>TDEE-laskinsovellus askeleilla: ilmainen ja tarkka (2026) - Lean<\/title>\n<meta name=\"description\" content=\"TDEE-laskuri, joka laskee askeleesi: BMR todellisesta rasvaprosentista, NEAT askelm\u00e4\u00e4r\u00e4st\u00e4, treenit (EAT) ja TEF. Tarkat yll\u00e4pitokalorit, ilmaiseksi.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/lean-app.com\/fi\/tdee-calculator\/\" \/>\n<meta property=\"og:locale\" content=\"fi_FI\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"TDEE-laskinsovellus askeleilla: ilmainen ja tarkka (2026) - Lean\" \/>\n<meta property=\"og:description\" content=\"TDEE-laskuri, joka laskee askeleesi: BMR todellisesta rasvaprosentista, NEAT askelm\u00e4\u00e4r\u00e4st\u00e4, treenit (EAT) ja TEF. Tarkat yll\u00e4pitokalorit, ilmaiseksi.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/lean-app.com\/fi\/tdee-calculator\/\" \/>\n<meta property=\"og:site_name\" content=\"Lean\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/share\/1GXD3qyMBy\/?mibextid=wwXIfr\" \/>\n<meta property=\"article:published_time\" content=\"2025-07-30T12:13:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-05T09:34:02+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/lean-app.com\/wp-content\/uploads\/2025\/07\/ai-bodyscan-result-bodyfat-lean-app.png\" \/>\n<meta name=\"author\" content=\"L&#039;\u00e9quipe Lean\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"L&#039;\u00e9quipe Lean\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/lean-app.com\/tdee-calculator\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/lean-app.com\/tdee-calculator\/\"},\"author\":{\"@id\":\"https:\/\/lean-app.com\/#organization\"},\"headline\":\"TDEE calculator\",\"datePublished\":\"2025-07-30T12:13:15+00:00\",\"dateModified\":\"2026-09-05T09:34:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/lean-app.com\/tdee-calculator\/\"},\"wordCount\":1376,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/lean-app.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/lean-app.com\/tdee-calculator\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/lean-app.com\/wp-content\/uploads\/2025\/07\/ai-bodyscan-result-bodyfat-lean-app.png\",\"inLanguage\":\"fi\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/lean-app.com\/tdee-calculator\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/lean-app.com\/tdee-calculator\/\",\"url\":\"https:\/\/lean-app.com\/tdee-calculator\/\",\"name\":\"TDEE Calculator App With Steps: Free and Accurate (2026) - Lean\",\"isPartOf\":{\"@id\":\"https:\/\/lean-app.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/lean-app.com\/tdee-calculator\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/lean-app.com\/tdee-calculator\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/lean-app.com\/wp-content\/uploads\/2025\/07\/ai-bodyscan-result-bodyfat-lean-app.png\",\"datePublished\":\"2025-07-30T12:13:15+00:00\",\"dateModified\":\"2026-09-05T09:34:02+00:00\",\"description\":\"The TDEE calculator that counts your steps: BMR on real body fat, NEAT from step count, workouts (EAT) and TEF. Accurate maintenance calories, free.\",\"breadcrumb\":{\"@id\":\"https:\/\/lean-app.com\/tdee-calculator\/#breadcrumb\"},\"inLanguage\":\"fi\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/lean-app.com\/tdee-calculator\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fi\",\"@id\":\"https:\/\/lean-app.com\/tdee-calculator\/#primaryimage\",\"url\":\"https:\/\/lean-app.com\/wp-content\/uploads\/2025\/07\/ai-bodyscan-result-bodyfat-lean-app.png\",\"contentUrl\":\"https:\/\/lean-app.com\/wp-content\/uploads\/2025\/07\/ai-bodyscan-result-bodyfat-lean-app.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/lean-app.com\/tdee-calculator\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/lean-app.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"TDEE calculator\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/lean-app.com\/#website\",\"url\":\"https:\/\/lean-app.com\/\",\"name\":\"Lean\",\"description\":\"T\u00e9l\u00e9charge, essaye GRATUITEMENT l&#039;application et prends en main ton corps \u00c0 VIE.\",\"publisher\":{\"@id\":\"https:\/\/lean-app.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/lean-app.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fi\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/lean-app.com\/#organization\",\"name\":\"Lean\",\"url\":\"https:\/\/lean-app.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fi\",\"@id\":\"https:\/\/lean-app.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/lean-app.com\/wp-content\/uploads\/2025\/08\/Logo-for-Lean-App-the-best-calorie-and-TDEE-tracking-application.png\",\"contentUrl\":\"https:\/\/lean-app.com\/wp-content\/uploads\/2025\/08\/Logo-for-Lean-App-the-best-calorie-and-TDEE-tracking-application.png\",\"width\":1672,\"height\":1484,\"caption\":\"Lean\"},\"image\":{\"@id\":\"https:\/\/lean-app.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/share\/1GXD3qyMBy\/?mibextid=wwXIfr\",\"https:\/\/apps.apple.com\/fr\/app\/lean-calorie-ai-podometre\/id6738668646\",\"https:\/\/play.google.com\/store\/apps\/details?id=com.lean.testsqflite\",\"https:\/\/app.dealroom.co\/companies\/lean_calorie_tracker\",\"https:\/\/alternativeto.net\/software\/lean-calorie-tracker\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"TDEE-laskinsovellus askeleilla: ilmainen ja tarkka (2026) - Lean","description":"TDEE-laskuri, joka laskee askeleesi: BMR todellisesta rasvaprosentista, NEAT askelm\u00e4\u00e4r\u00e4st\u00e4, treenit (EAT) ja TEF. Tarkat yll\u00e4pitokalorit, ilmaiseksi.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/lean-app.com\/fi\/tdee-calculator\/","og_locale":"fi_FI","og_type":"article","og_title":"TDEE-laskinsovellus askeleilla: ilmainen ja tarkka (2026) - Lean","og_description":"TDEE-laskuri, joka laskee askeleesi: BMR todellisesta rasvaprosentista, NEAT askelm\u00e4\u00e4r\u00e4st\u00e4, treenit (EAT) ja TEF. Tarkat yll\u00e4pitokalorit, ilmaiseksi.","og_url":"https:\/\/lean-app.com\/fi\/tdee-calculator\/","og_site_name":"Lean","article_publisher":"https:\/\/www.facebook.com\/share\/1GXD3qyMBy\/?mibextid=wwXIfr","article_published_time":"2025-07-30T12:13:15+00:00","article_modified_time":"2026-09-05T09:34:02+00:00","og_image":[{"url":"https:\/\/lean-app.com\/wp-content\/uploads\/2025\/07\/ai-bodyscan-result-bodyfat-lean-app.png","type":"","width":"","height":""}],"author":"L'\u00e9quipe Lean","twitter_card":"summary_large_image","twitter_misc":{"Written by":"L'\u00e9quipe Lean","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/lean-app.com\/tdee-calculator\/#article","isPartOf":{"@id":"https:\/\/lean-app.com\/tdee-calculator\/"},"author":{"@id":"https:\/\/lean-app.com\/#organization"},"headline":"TDEE calculator","datePublished":"2025-07-30T12:13:15+00:00","dateModified":"2026-09-05T09:34:02+00:00","mainEntityOfPage":{"@id":"https:\/\/lean-app.com\/tdee-calculator\/"},"wordCount":1376,"commentCount":0,"publisher":{"@id":"https:\/\/lean-app.com\/#organization"},"image":{"@id":"https:\/\/lean-app.com\/tdee-calculator\/#primaryimage"},"thumbnailUrl":"https:\/\/lean-app.com\/wp-content\/uploads\/2025\/07\/ai-bodyscan-result-bodyfat-lean-app.png","inLanguage":"fi","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/lean-app.com\/tdee-calculator\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/lean-app.com\/tdee-calculator\/","url":"https:\/\/lean-app.com\/tdee-calculator\/","name":"TDEE-laskinsovellus askeleilla: ilmainen ja tarkka (2026) - Lean","isPartOf":{"@id":"https:\/\/lean-app.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/lean-app.com\/tdee-calculator\/#primaryimage"},"image":{"@id":"https:\/\/lean-app.com\/tdee-calculator\/#primaryimage"},"thumbnailUrl":"https:\/\/lean-app.com\/wp-content\/uploads\/2025\/07\/ai-bodyscan-result-bodyfat-lean-app.png","datePublished":"2025-07-30T12:13:15+00:00","dateModified":"2026-09-05T09:34:02+00:00","description":"TDEE-laskuri, joka laskee askeleesi: BMR todellisesta rasvaprosentista, NEAT askelm\u00e4\u00e4r\u00e4st\u00e4, treenit (EAT) ja TEF. Tarkat yll\u00e4pitokalorit, ilmaiseksi.","breadcrumb":{"@id":"https:\/\/lean-app.com\/tdee-calculator\/#breadcrumb"},"inLanguage":"fi","potentialAction":[{"@type":"ReadAction","target":["https:\/\/lean-app.com\/tdee-calculator\/"]}]},{"@type":"ImageObject","inLanguage":"fi","@id":"https:\/\/lean-app.com\/tdee-calculator\/#primaryimage","url":"https:\/\/lean-app.com\/wp-content\/uploads\/2025\/07\/ai-bodyscan-result-bodyfat-lean-app.png","contentUrl":"https:\/\/lean-app.com\/wp-content\/uploads\/2025\/07\/ai-bodyscan-result-bodyfat-lean-app.png"},{"@type":"BreadcrumbList","@id":"https:\/\/lean-app.com\/tdee-calculator\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/lean-app.com\/"},{"@type":"ListItem","position":2,"name":"TDEE calculator"}]},{"@type":"WebSite","@id":"https:\/\/lean-app.com\/#website","url":"https:\/\/lean-app.com\/","name":"Lean","description":"Lataa, kokeile sovellusta ILMAISEKSI ja ota kehosi haltuun KOKO EL\u00c4M\u00c4KSI.","publisher":{"@id":"https:\/\/lean-app.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/lean-app.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fi"},{"@type":"Organization","@id":"https:\/\/lean-app.com\/#organization","name":"Lean","url":"https:\/\/lean-app.com\/","logo":{"@type":"ImageObject","inLanguage":"fi","@id":"https:\/\/lean-app.com\/#\/schema\/logo\/image\/","url":"https:\/\/lean-app.com\/wp-content\/uploads\/2025\/08\/Logo-for-Lean-App-the-best-calorie-and-TDEE-tracking-application.png","contentUrl":"https:\/\/lean-app.com\/wp-content\/uploads\/2025\/08\/Logo-for-Lean-App-the-best-calorie-and-TDEE-tracking-application.png","width":1672,"height":1484,"caption":"Lean"},"image":{"@id":"https:\/\/lean-app.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/share\/1GXD3qyMBy\/?mibextid=wwXIfr","https:\/\/apps.apple.com\/fr\/app\/lean-calorie-ai-podometre\/id6738668646","https:\/\/play.google.com\/store\/apps\/details?id=com.lean.testsqflite","https:\/\/app.dealroom.co\/companies\/lean_calorie_tracker","https:\/\/alternativeto.net\/software\/lean-calorie-tracker\/"]}]}},"_links":{"self":[{"href":"https:\/\/lean-app.com\/fi\/wp-json\/wp\/v2\/posts\/675","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lean-app.com\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/lean-app.com\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/lean-app.com\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lean-app.com\/fi\/wp-json\/wp\/v2\/comments?post=675"}],"version-history":[{"count":0,"href":"https:\/\/lean-app.com\/fi\/wp-json\/wp\/v2\/posts\/675\/revisions"}],"wp:attachment":[{"href":"https:\/\/lean-app.com\/fi\/wp-json\/wp\/v2\/media?parent=675"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lean-app.com\/fi\/wp-json\/wp\/v2\/categories?post=675"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lean-app.com\/fi\/wp-json\/wp\/v2\/tags?post=675"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}