{"id":1520,"date":"2026-05-26T13:24:59","date_gmt":"2026-05-26T13:24:59","guid":{"rendered":"https:\/\/lean-app.com\/calculateur-tdee\/"},"modified":"2026-09-01T07:18:01","modified_gmt":"2026-09-01T07:18:01","slug":"calculateur-tdee","status":"publish","type":"post","link":"https:\/\/lean-app.com\/fi\/calculateur-tdee\/","title":{"rendered":"TDEE-laskuri: tarkin kaava (todellisella rasvaprosentilla)"},"content":{"rendered":"<!DOCTYPE html>\n<html lang=\"fr\">\n<head>\n\t<meta charset=\"UTF-8\">\n\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\t<title>Calculateur TDEE avanc\u00e9<\/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=\"BodyScan IA Lean App\" 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=\"Logo Lean App\" 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\">Painonpudotus<\/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\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 TDEE:t\u00e4si p\u00e4ivitt\u00e4in 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=\"Fonctionnalit\u00e9s Lean App\" 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\">Viitekaavojen mukaan t\u00e4ss\u00e4 terve painoalue pituudellesi. Se on yleinen viite, joka ei ota huomioon yksil\u00f6llist\u00e4 kehonkoostumustasi.<\/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 relevantti urheilullisille profiileille.<\/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 &#8211; 24.9<\/span> <span>Normaali<\/span><\/li>\n\t\t\t\t\t\t\t<li><span>25.0 &#8211; 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 arvio antaa luonnollisen maksimaalisen rasvattoman massasi pituutesi mukaan. 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=\"Recherche dans la base alimentaire\">\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=\"Ajout d'un aliment depuis la base\">\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=\"Interface du scanner de code-barres\">\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=\"Produit trouv\u00e9 via code-barres\">\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=\"Infos nutritionnelles via code-barres\">\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. Aterian 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=\"Scan IA de repas en 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=\"L'IA identifie les aliments du plat\">\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=\"L'IA fournit les donn\u00e9es nutritionnelles du plat scann\u00e9\">\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=\"Suivi Lean App\" 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\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=\"seo-article-section\" class=\"calculator-container\">\n\t\t<h2>Ymm\u00e4rr\u00e4 TDEE:si: t\u00e4ydellinen opas<\/h2>\n\t\t<p>Ravitsemuksen ja fitnessin maailma vaikuttaa monimutkaiselta, mutta p\u00e4ivitt\u00e4isen kokonaisenergiankulutuksesi (TDEE) ymm\u00e4rt\u00e4minen on yh\u00e4 olennainen ensimm\u00e4inen askel. <strong>TDEE-laskuri<\/strong> on tehokas ty\u00f6kalu, joka selkeytt\u00e4\u00e4 prosessin: se antaa selke\u00e4n, tieteellisesti validoidun l\u00e4ht\u00f6kohdan mihin tahansa painonhallintatavoitteeseen. T\u00e4m\u00e4 opas selitt\u00e4\u00e4 sinulle 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, eli p\u00e4ivitt\u00e4ist\u00e4 kokonaisenergiankulutustasi. Se on kalorien kokonaism\u00e4\u00e4r\u00e4, jonka kehosi polttaa 24 tunnissa. Ei vain urheilu: se on kokonaisvaltainen mittari, joka sis\u00e4lt\u00e4\u00e4 kaikki kehon toiminnot hengityksest\u00e4 k\u00e4velyyn, ajattelusta treeneihin. TDEE:si tunteminen tarkoittaa, ett\u00e4 tied\u00e4t tarkalleen, kuinka monta kaloria kehosi tarvitsee nykyisen painonsa 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: se on nelj\u00e4n avainkomponentin summa.<\/p>\n\t\t<ul>\n\t\t\t<li><strong>Perusaineenvaihdunta (BMR):<\/strong> se on energia, jonka kehosi k\u00e4ytt\u00e4\u00e4 t\u00e4ydellisess\u00e4 levossa elintoimintojensa varmistamiseen (hengitys, verenkierto, l\u00e4mm\u00f6ns\u00e4\u00e4tely). Se on suurin osa TDEE:st\u00e4si. T\u00e4m\u00e4 ty\u00f6kalu k\u00e4ytt\u00e4\u00e4 Katch-McArdlen kaavaa, joka vaatii rasvaprosenttisi, mik\u00e4 tekee siit\u00e4 <strong>BMR-laskuri<\/strong> tarkemman kuin ne, jotka perustuvat vain painoon ja pituuteen.<\/li>\n\t\t\t<li><strong>NEAT (Non-Exercise Activity Thermogenesis):<\/strong> n\u00e4m\u00e4 ovat kaikki kalorit, jotka poltetaan aktiviteeteilla urheilun ulkopuolella, kuten k\u00e4vely autollesi, n\u00e4pp\u00e4imist\u00f6n naputtelu, liikehdint\u00e4 tai siivous. P\u00e4ivitt\u00e4iset askeleet ovat erinomainen tapa mitata ja lis\u00e4t\u00e4 NEAT:iasi.<\/li>\n\t\t\t<li><strong>EAT (Exercise Activity Thermogenesis):<\/strong> se on energia, joka kulutetaan suunniteltujen fyysisten aktiviteettien, kuten juoksun, voimaharjoittelun tai urheilun aikana.<\/li>\n\t\t\t<li><strong>TEF (Thermic Effect of Food):<\/strong> kehosi kuluttaa energiaa ruoan sulattamiseen, imeytymiseen ja aineenvaihduntaan. Se edustaa 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. T\u00e4ss\u00e4 tarkoituksessa <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-laskurimme 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 ero?<\/h3>\n\t\t<p>BMR ja TDEE sekoitetaan usein. Ajattele sit\u00e4 n\u00e4in: BMR:si on kehosi energiakustannus levossa, 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 vahingoittaa aineenvaihduntaasi ja terveytt\u00e4si. TDEE on operatiivinen luku, jota k\u00e4ytet\u00e4\u00e4n ruokavaliosi suunnitteluun.<\/p>\n\n\t\t<h3>Laske makrosi 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, hiilihydraatit). Hyv\u00e4 <strong>makrolaskuri<\/strong> k\u00e4ytt\u00e4\u00e4 TDEE:t\u00e4si l\u00e4ht\u00f6kohtana. T\u00e4m\u00e4 ty\u00f6kalu tarjoaa sinulle kolme yleist\u00e4 ruokavaliosuunnitelmaa (Low Carb, kohtalaiset hiilihydraatit, High Carb) auttaakseen sinua l\u00f6yt\u00e4m\u00e4\u00e4n el\u00e4m\u00e4ntapaasi ja mieltymyksiisi sopivan tasapainon. Idea: ei vain t\u00e4hd\u00e4t\u00e4 kalorilukuun, vaan ravita kehoasi tehokkaasti.<\/p>\n\t<\/section>\n\n\t<script data-wpmeteor-nooptimize=\"true\">window.__LEAN_T = {\"Poids quotidien (simul\u00e9)\": {\"de\": \"Tagesgewicht (simuliert)\", \"es\": \"Peso diario (simulado)\", \"pt\": \"Peso di\u00e1rio (simulado)\"}, \"Poids moyen (projection)\": {\"de\": \"Durchschnittsgewicht (Projektion)\", \"es\": \"Peso medio (proyecci\u00f3n)\", \"pt\": \"Peso m\u00e9dio (proje\u00e7\u00e3o)\"}, \"Poids total \u00e0 8% BF\": {\"de\": \"Gesamtgewicht bei 8% KFA\", \"es\": \"Peso total al 8% de grasa\", \"pt\": \"Peso total com 8% de gordura\"}, \"Poids total \u00e0 10% BF\": {\"de\": \"Gesamtgewicht bei 10% KFA\", \"es\": \"Peso total al 10% de grasa\", \"pt\": \"Peso total com 10% de gordura\"}, \"Poids total \u00e0 12% BF\": {\"de\": \"Gesamtgewicht bei 12% KFA\", \"es\": \"Peso total al 12% de grasa\", \"pt\": \"Peso total com 12% de gordura\"}, \"BMR (m\u00e9tabolisme de base)\": {\"de\": \"BMR (Grundumsatz)\", \"es\": \"BMR (metabolismo basal)\", \"pt\": \"BMR (metabolismo basal)\"}, \"NEAT (hors sport)\": {\"de\": \"NEAT (Alltag)\", \"es\": \"NEAT (sin deporte)\", \"pt\": \"NEAT (sem esporte)\"}, \"EAT (sport)\": {\"de\": \"EAT (Sport)\", \"es\": \"EAT (deporte)\", \"pt\": \"EAT (esporte)\"}, \"TEF (digestion)\": {\"de\": \"TEF (Verdauung)\", \"es\": \"TEF (digesti\u00f3n)\", \"pt\": \"TEF (digest\u00e3o)\"}, \"Insuffisance pond\u00e9rale\": {\"de\": \"Untergewicht\", \"es\": \"Bajo peso\", \"pt\": \"Abaixo do peso\"}, \"Poids normal\": {\"de\": \"Normalgewicht\", \"es\": \"Peso normal\", \"pt\": \"Peso normal\"}, \"Surpoids\": {\"de\": \"\u00dcbergewicht\", \"es\": \"Sobrepeso\", \"pt\": \"Sobrepeso\"}, \"Ob\u00e9sit\u00e9\": {\"de\": \"Adipositas\", \"es\": \"Obesidad\", \"pt\": \"Obesidade\"}, \"Formule Hamwi\": {\"de\": \"Hamwi-Formel\", \"es\": \"F\u00f3rmula Hamwi\", \"pt\": \"F\u00f3rmula Hamwi\"}, \"Formule Devine\": {\"de\": \"Devine-Formel\", \"es\": \"F\u00f3rmula Devine\", \"pt\": \"F\u00f3rmula Devine\"}, \"Formule Robinson\": {\"de\": \"Robinson-Formel\", \"es\": \"F\u00f3rmula Robinson\", \"pt\": \"F\u00f3rmula Robinson\"}, \"Formule Miller\": {\"de\": \"Miller-Formel\", \"es\": \"F\u00f3rmula Miller\", \"pt\": \"F\u00f3rmula Miller\"}, \"Type de cardio\": {\"de\": \"Cardio-Art\", \"es\": \"Tipo de cardio\", \"pt\": \"Tipo de cardio\"}, \"Natation\": {\"de\": \"Schwimmen\", \"es\": \"Nataci\u00f3n\", \"pt\": \"Nata\u00e7\u00e3o\"}, \"Marche\": {\"de\": \"Gehen\", \"es\": \"Caminar\", \"pt\": \"Caminhada\"}, \"Course\": {\"de\": \"Laufen\", \"es\": \"Correr\", \"pt\": \"Corrida\"}, \"V\u00e9lo\": {\"de\": \"Radfahren\", \"es\": \"Bicicleta\", \"pt\": \"Bicicleta\"}, \"Mod\u00e9r\u00e9e\": {\"de\": \"Moderat\", \"es\": \"Moderada\", \"pt\": \"Moderada\"}, \"Mod\u00e9r\u00e9\": {\"de\": \"Moderat\", \"es\": \"Moderado\", \"pt\": \"Moderado\"}, \"Intensive\": {\"de\": \"Intensiv\", \"es\": \"Intensiva\", \"pt\": \"Intensiva\"}, \"Intensit\u00e9\": {\"de\": \"Intensit\u00e4t\", \"es\": \"Intensidad\", \"pt\": \"Intensidade\"}, \"Intense\": {\"de\": \"Intensiv\", \"es\": \"Intenso\", \"pt\": \"Intenso\"}, \"L\u00e9g\u00e8re\": {\"de\": \"Leicht\", \"es\": \"Ligera\", \"pt\": \"Leve\"}, \"Rapide\": {\"de\": \"Z\u00fcgig\", \"es\": \"R\u00e1pida\", \"pt\": \"R\u00e1pida\"}, \"Dur\u00e9e\": {\"de\": \"Dauer\", \"es\": \"Duraci\u00f3n\", \"pt\": \"Dura\u00e7\u00e3o\"}, \"D\u00e9tails\": {\"de\": \"Details\", \"es\": \"Detalles\", \"pt\": \"Detalhes\"}, \"Prot\u00e9ines\": {\"de\": \"Protein\", \"es\": \"Prote\u00ednas\", \"pt\": \"Prote\u00ednas\"}, \"Lipides\": {\"de\": \"Fett\", \"es\": \"Grasas\", \"pt\": \"Gorduras\"}, \"Glucides\": {\"de\": \"Kohlenhydrate\", \"es\": \"Carbohidratos\", \"pt\": \"Carboidratos\"}, \"Jours\": {\"de\": \"Tage\", \"es\": \"D\u00edas\", \"pt\": \"Dias\"}, \"Jour \": {\"de\": \"Tag \", \"es\": \"D\u00eda \", \"pt\": \"Dia \"}, \"Poids (\": {\"de\": \"Gewicht (\", \"es\": \"Peso (\", \"pt\": \"Peso (\"}, \"Merci de remplir tous les champs requis avec des nombres valides.\": {\"de\": \"Bitte f\u00fclle alle Pflichtfelder mit g\u00fcltigen Zahlen aus.\", \"es\": \"Rellena todos los campos requeridos con n\u00fameros v\u00e1lidos.\", \"pt\": \"Preencha todos os campos obrigat\u00f3rios com n\u00fameros v\u00e1lidos.\"}, \"Merci d'entrer un \u00e2ge entre 15 et 110.\": {\"de\": \"Bitte gib ein Alter zwischen 15 und 110 ein.\", \"es\": \"Introduce una edad entre 15 y 110.\", \"pt\": \"Informe uma idade entre 15 e 110.\"}, \"Merci d'entrer un poids entre 25 et 500 kg.\": {\"de\": \"Bitte gib ein Gewicht zwischen 25 und 500 kg ein.\", \"es\": \"Introduce un peso entre 25 y 500 kg.\", \"pt\": \"Informe um peso entre 25 e 500 kg.\"}, \"Merci d'entrer une taille entre 70 et 250 cm.\": {\"de\": \"Bitte gib eine Gr\u00f6\u00dfe zwischen 70 und 250 cm ein.\", \"es\": \"Introduce una altura entre 70 y 250 cm.\", \"pt\": \"Informe uma altura entre 70 e 250 cm.\"}, \"Merci d'entrer un bodyfat entre 1 et 80 %.\": {\"de\": \"Bitte gib ein K\u00f6rperfett zwischen 1 und 80 % ein.\", \"es\": \"Introduce una grasa corporal entre 1 y 80 %.\", \"pt\": \"Informe uma gordura corporal entre 1 e 80 %.\"}};<\/script>\n<script>\n\n\t\tvar LEAN_L = (location.pathname.match(\/^\\\/(en|es|pt|de)\\\/\/) || [0,'fr'])[1];\n\t\tfunction TX(s){\n\t\t\tif (LEAN_L === 'fr' || !window.__LEAN_T) return s;\n\t\t\tvar M = window.__LEAN_T;\n\t\t\tfor (var k in M) { var v = M[k] && M[k][LEAN_L]; if (v) s = s.split(k).join(v); }\n\t\t\treturn s;\n\t\t}\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 = TX(`\n\t\t\t\t\t<label for=\"activityMET\">Type de cardio<\/label>\n\t\t\t\t\t<select id=\"activityMET\" class=\"input-group\">\n\t\t\t\t\t\t <optgroup label=\"Marche\"><option value=\"3.8\">Mod\u00e9r\u00e9e<\/option><option value=\"5.0\">Rapide<\/option><\/optgroup>\n\t\t\t\t\t\t <optgroup label=\"Course\"><option value=\"9.8\">Mod\u00e9r\u00e9e<\/option><option value=\"12.8\">Rapide<\/option><\/optgroup>\n\t\t\t\t\t\t <optgroup label=\"V\u00e9lo\"><option value=\"8.0\">Mod\u00e9r\u00e9<\/option><option value=\"10.0\">Intense<\/option><\/optgroup>\n\t\t\t\t\t\t <optgroup label=\"Natation\"><option value=\"7.0\">Mod\u00e9r\u00e9e<\/option><option value=\"9.8\">Intense<\/option><\/optgroup>\n\t\t\t\t\t<\/select>\n\t\t\t\t\t<label for=\"duration\" style=\"margin-top: 1rem;\">Dur\u00e9e <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 = TX(`\n\t\t\t\t\t<label for=\"strengthIntensity\">Intensit\u00e9<\/label>\n\t\t\t\t\t<select id=\"strengthIntensity\" class=\"input-group\">\n\t\t\t\t\t\t<option value=\"3.0\">L\u00e9g\u00e8re<\/option>\n\t\t\t\t\t\t<option value=\"4.5\" selected>Mod\u00e9r\u00e9e<\/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 = TX(\"Merci de remplir tous les champs requis avec des nombres valides.\");\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 = TX(\"Merci d\\u0027entrer un \u00e2ge entre 15 et 110.\"); }\n\t\t\telse if (weight < 25 || weight > 500) { errorMessage.textContent = TX(\"Merci d\\u0027entrer un poids entre 25 et 500 kg.\"); }\n\t\t\telse if (height < 70 || height > 250) { errorMessage.textContent = TX(\"Merci d\\u0027entrer une taille entre 70 et 250 cm.\"); }\n\t\t\telse if (bodyfat < 1 || bodyfat > 80) { errorMessage.textContent = TX(\"Merci d\\u0027entrer un bodyfat entre 1 et 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(TX(`Jour ${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 = TX(`\n\t\t\t\t<h3>D\u00e9tails<\/h3>\n\t\t\t\t<ul>\n\t\t\t\t\t<li><span>BMR (m\u00e9tabolisme de base)<\/span> <span>${bmr.toFixed(0)} kcal<\/span><\/li>\n\t\t\t\t\t<li><span>NEAT (hors sport)<\/span> <span>${neat.toFixed(0)} kcal<\/span><\/li>\n\t\t\t\t\t<li><span>EAT (sport)<\/span> <span>${eat.toFixed(0)} kcal<\/span><\/li>\n\t\t\t\t\t<li><span>TEF (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: TX(`Poids (${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: TX(`Poids quotidien (simul\u00e9)`), data: dailyData, borderColor: 'transparent', backgroundColor: colorSet[goal].area, pointRadius: 0, fill: true, },\n\t\t\t\t\t\t{ label: TX('Poids moyen (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: TX('Jours') } } }, 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: ['Prot\u00e9ines', 'Lipides', 'Glucides'].map(TX), 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: ['Prot\u00e9ines', 'Lipides', 'Glucides'].map(TX), 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: ['Prot\u00e9ines', 'Lipides', 'Glucides'].map(TX), 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 = TX('Insuffisance pond\u00e9rale');\n\t\t\telse if (bmi < 25) bmiCategory = TX('Poids normal');\n\t\t\telse if (bmi < 30) bmiCategory = TX('Surpoids');\n\t\t\telse bmiCategory = TX('Ob\u00e9sit\u00e9');\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 = TX(`\n\t\t\t\t<li><span>Formule Hamwi<\/span><span>${(isMetric ? idealWeights[0].toFixed(1) : (idealWeights[0] * 2.20462).toFixed(1))} ${weightUnit}<\/span><\/li>\n\t\t\t\t<li><span>Formule Devine<\/span><span>${(isMetric ? idealWeights[1].toFixed(1) : (idealWeights[1] * 2.20462).toFixed(1))} ${weightUnit}<\/span><\/li>\n\t\t\t\t<li><span>Formule Robinson<\/span><span>${(isMetric ? idealWeights[2].toFixed(1) : (idealWeights[2] * 2.20462).toFixed(1))} ${weightUnit}<\/span><\/li>\n\t\t\t\t<li><span>Formule Miller<\/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 = TX(`\n\t\t\t\t<li><span>Poids total \u00e0 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>Poids total \u00e0 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>Poids total \u00e0 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<!-- lean-mesh-v9 -->\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 my\u00f6s<\/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\/fi\/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;\">Laske vajeesi todellisesta rasvaprosenttitietoisesta TDEE:st\u00e4si. 3 vauhtia hidas\/kohtalainen\/aggressiivinen.<\/span><\/a><\/li><li><a href=\"https:\/\/lean-app.com\/fi\/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;\">Perusaineenvaihdunnan laskenta: tarkin kaava (2026) <span style=\"color:#4D4D52;font-weight:400;display:block;font-size:14px;margin-top:4px;\">Vertaa Harris-Benedict 1919:\u00e4\u00e4, Mifflin-St Jeor 1990:t\u00e4 ja Lean-l\u00e4hestymistapaa todellisella rasvaprosentillasi.<\/span><\/a><\/li><li><a href=\"https:\/\/lean-app.com\/fi\/meilleures-applications-calories-2026\/\" style=\"display:block;padding:14px 16px;background:#FAF7F2;border-radius:8px;color:#1a1a2e;text-decoration:none;font-weight:600;line-height:1.4;\">Parhaat sovellukset kalorien laskemiseen vuonna 2026: 8 testattua sovellusta <span style=\"color:#4D4D52;font-weight:400;display:block;font-size:14px;margin-top:4px;\">Rehellinen vertailu: Lean, MFP, Cronometer, Yazio, Foodvisor, Lifesum, FatSecret, Noom.<\/span><\/a><\/li><li><a href=\"https:\/\/lean-app.com\/fi\/comparatifs\/\" 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-vertailut suuria kalorisovelluksia vastaan <span style=\"color:#4D4D52;font-weight:400;display:block;font-size:14px;margin-top:4px;\">Hub: MyFitnessPal, Yazio, Cronometer, Lifesum, FatSecret, Noom.<\/span><\/a><\/li><li><a href=\"https:\/\/lean-app.com\/fi\/lean-vs-myfitnesspal\/\" style=\"display:block;padding:14px 16px;background:#FAF7F2;border-radius:8px;color:#1a1a2e;text-decoration:none;font-weight:600;line-height:1.4;\">Lean vs MyFitnessPal: TDEE-kaava, joka muuttaa kaiken <span style=\"color:#4D4D52;font-weight:400;display:block;font-size:14px;margin-top:4px;\">Miksi MyFitnessPal erehtyy todellisesta kalorikulutuksestasi.<\/span><\/a><\/li><\/ul><\/aside>\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 my\u00f6s<\/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\/fi\/effet-thermique-des-aliments\/\" style=\"display:block;padding:14px 16px;background:#FAF7F2;border-radius:8px;color:#1a1a2e;text-decoration:none;font-weight:600;line-height:1.4;\">Ruoan l\u00e4mp\u00f6vaikutus (TEF): 69 kcal, jotka muut sovellukset j\u00e4tt\u00e4v\u00e4t huomiotta <span style=\"color:#4D4D52;font-weight:400;display:block;font-size:14px;margin-top:4px;\">Lean laskee TEF:n reaaliajassa makroistasi. Muut sovellukset eiv\u00e4t.<\/span><\/a><\/li><li><a href=\"https:\/\/lean-app.com\/fi\/neat-depense-non-sportive\/\" style=\"display:block;padding:14px 16px;background:#FAF7F2;border-radius:8px;color:#1a1a2e;text-decoration:none;font-weight:600;line-height:1.4;\">NEAT: miten arki polttaa enemm\u00e4n kuin urheilu <span style=\"color:#4D4D52;font-weight:400;display:block;font-size:14px;margin-top:4px;\">Miksi askeleesi ja ei-urheilulliset aktiviteettisi edustavat 15\u201330 % kokonaiskulutuksestasi.<\/span><\/a><\/li><li><a href=\"https:\/\/lean-app.com\/fi\/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;\">Laske vajeesi todellisesta rasvaprosenttitietoisesta TDEE:st\u00e4si. 3 vauhtia hidas\/kohtalainen\/aggressiivinen.<\/span><\/a><\/li><li><a href=\"https:\/\/lean-app.com\/fi\/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;\">Perusaineenvaihdunnan laskenta: tarkin kaava (2026) <span style=\"color:#4D4D52;font-weight:400;display:block;font-size:14px;margin-top:4px;\">Vertaa Harris-Benedict 1919:\u00e4\u00e4, Mifflin-St Jeor 1990:t\u00e4 ja Lean-l\u00e4hestymistapaa todellisella rasvaprosentillasi.<\/span><\/a><\/li><li><a href=\"https:\/\/lean-app.com\/fi\/meilleures-applications-calories-2026\/\" style=\"display:block;padding:14px 16px;background:#FAF7F2;border-radius:8px;color:#1a1a2e;text-decoration:none;font-weight:600;line-height:1.4;\">Parhaat sovellukset kalorien laskemiseen vuonna 2026: 8 testattua sovellusta <span style=\"color:#4D4D52;font-weight:400;display:block;font-size:14px;margin-top:4px;\">Rehellinen vertailu: Lean, MFP, Cronometer, Yazio, Foodvisor, Lifesum, FatSecret, Noom.<\/span><\/a><\/li><\/ul><\/aside>","protected":false},"excerpt":{"rendered":"<p>Calculateur TDEE avanc\u00e9 : BMR via bodyfat, NEAT (pas), EAT (s\u00e9ances) et TEF, pour des calories de maintenance pr\u00e9cises. Projection 90 jours, macros, IMC et masse maigre.<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"single-lvm-blank","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1520","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>Ilmainen TDEE-laskuri: miehille ja naisille (2026) - Lean<\/title>\n<meta name=\"description\" content=\"Laske TDEE todellisen kehon rasvasi ja askeltesi perusteella, ei istuvan tai aktiivisen valinnan perusteella.\" \/>\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\/calculateur-tdee\/\" \/>\n<meta property=\"og:locale\" content=\"fi_FI\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ilmainen TDEE-laskuri: miehille ja naisille (2026) - Lean\" \/>\n<meta property=\"og:description\" content=\"Laske TDEE:si todellisesta rasvattomasta massastasi: BMR, NEAT askelistasi, EAT treeneitt\u00e4in, TEF makroistasi. Painoennuste 90 p\u00e4iv\u00e4lle, makrot ja kehotilastot.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/lean-app.com\/fi\/calculateur-tdee\/\" \/>\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=\"2026-05-26T13:24:59+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-01T07:18:01+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=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/lean-app.com\/calculateur-tdee\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/lean-app.com\/calculateur-tdee\/\"},\"author\":{\"@id\":\"https:\/\/lean-app.com\/#organization\"},\"headline\":\"Calculateur TDEE : la formule la plus pr\u00e9cise (avec bodyfat r\u00e9el)\",\"datePublished\":\"2026-05-26T13:24:59+00:00\",\"dateModified\":\"2026-09-01T07:18:01+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/lean-app.com\/calculateur-tdee\/\"},\"wordCount\":1302,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/lean-app.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/lean-app.com\/calculateur-tdee\/#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\/calculateur-tdee\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/lean-app.com\/calculateur-tdee\/\",\"url\":\"https:\/\/lean-app.com\/calculateur-tdee\/\",\"name\":\"Calculateur TDEE gratuit : homme et femme (2026) - Lean\",\"isPartOf\":{\"@id\":\"https:\/\/lean-app.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/lean-app.com\/calculateur-tdee\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/lean-app.com\/calculateur-tdee\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/lean-app.com\/wp-content\/uploads\/2025\/07\/ai-bodyscan-result-bodyfat-lean-app.png\",\"datePublished\":\"2026-05-26T13:24:59+00:00\",\"dateModified\":\"2026-09-01T07:18:01+00:00\",\"description\":\"Calcule ton TDEE sur ta masse grasse r\u00e9elle et tes pas, pas sur une case s\u00e9dentaire ou actif. Gratuit, sans inscription, avec le d\u00e9tail des 4 briques.\",\"breadcrumb\":{\"@id\":\"https:\/\/lean-app.com\/calculateur-tdee\/#breadcrumb\"},\"inLanguage\":\"fi\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/lean-app.com\/calculateur-tdee\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fi\",\"@id\":\"https:\/\/lean-app.com\/calculateur-tdee\/#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\/calculateur-tdee\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/lean-app.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Calculateur TDEE : la formule la plus pr\u00e9cise (avec bodyfat r\u00e9el)\"}]},{\"@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":"Ilmainen TDEE-laskuri: miehille ja naisille (2026) - Lean","description":"Laske TDEE todellisen kehon rasvasi ja askeltesi perusteella, ei istuvan tai aktiivisen valinnan perusteella.","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\/calculateur-tdee\/","og_locale":"fi_FI","og_type":"article","og_title":"Ilmainen TDEE-laskuri: miehille ja naisille (2026) - Lean","og_description":"Laske TDEE:si todellisesta rasvattomasta massastasi: BMR, NEAT askelistasi, EAT treeneitt\u00e4in, TEF makroistasi. Painoennuste 90 p\u00e4iv\u00e4lle, makrot ja kehotilastot.","og_url":"https:\/\/lean-app.com\/fi\/calculateur-tdee\/","og_site_name":"Lean","article_publisher":"https:\/\/www.facebook.com\/share\/1GXD3qyMBy\/?mibextid=wwXIfr","article_published_time":"2026-05-26T13:24:59+00:00","article_modified_time":"2026-09-01T07:18:01+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":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/lean-app.com\/calculateur-tdee\/#article","isPartOf":{"@id":"https:\/\/lean-app.com\/calculateur-tdee\/"},"author":{"@id":"https:\/\/lean-app.com\/#organization"},"headline":"Calculateur TDEE : la formule la plus pr\u00e9cise (avec bodyfat r\u00e9el)","datePublished":"2026-05-26T13:24:59+00:00","dateModified":"2026-09-01T07:18:01+00:00","mainEntityOfPage":{"@id":"https:\/\/lean-app.com\/calculateur-tdee\/"},"wordCount":1302,"commentCount":0,"publisher":{"@id":"https:\/\/lean-app.com\/#organization"},"image":{"@id":"https:\/\/lean-app.com\/calculateur-tdee\/#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\/calculateur-tdee\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/lean-app.com\/calculateur-tdee\/","url":"https:\/\/lean-app.com\/calculateur-tdee\/","name":"Ilmainen TDEE-laskuri: miehille ja naisille (2026) - Lean","isPartOf":{"@id":"https:\/\/lean-app.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/lean-app.com\/calculateur-tdee\/#primaryimage"},"image":{"@id":"https:\/\/lean-app.com\/calculateur-tdee\/#primaryimage"},"thumbnailUrl":"https:\/\/lean-app.com\/wp-content\/uploads\/2025\/07\/ai-bodyscan-result-bodyfat-lean-app.png","datePublished":"2026-05-26T13:24:59+00:00","dateModified":"2026-09-01T07:18:01+00:00","description":"Laske TDEE todellisen kehon rasvasi ja askeltesi perusteella, ei istuvan tai aktiivisen valinnan perusteella.","breadcrumb":{"@id":"https:\/\/lean-app.com\/calculateur-tdee\/#breadcrumb"},"inLanguage":"fi","potentialAction":[{"@type":"ReadAction","target":["https:\/\/lean-app.com\/calculateur-tdee\/"]}]},{"@type":"ImageObject","inLanguage":"fi","@id":"https:\/\/lean-app.com\/calculateur-tdee\/#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\/calculateur-tdee\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/lean-app.com\/"},{"@type":"ListItem","position":2,"name":"Calculateur TDEE : la formule la plus pr\u00e9cise (avec bodyfat r\u00e9el)"}]},{"@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\/1520","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=1520"}],"version-history":[{"count":0,"href":"https:\/\/lean-app.com\/fi\/wp-json\/wp\/v2\/posts\/1520\/revisions"}],"wp:attachment":[{"href":"https:\/\/lean-app.com\/fi\/wp-json\/wp\/v2\/media?parent=1520"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lean-app.com\/fi\/wp-json\/wp\/v2\/categories?post=1520"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lean-app.com\/fi\/wp-json\/wp\/v2\/tags?post=1520"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}