Vizualizări: 93
FarmaMonitor • Vârsta metabolică (estimare orientativă)
:root{
–fgx-green:#00a859; –fgx-accent:#00c96b; –fgx-amber:#f5a623; –fgx-red:#e53935;
–fgx-bg:#f5f8f6; –fgx-card:#ffffff; –fgx-text:#222; –fgx-border:#e6ece7;
–fgx-radius:14px; –fgx-shadow:0 10px 22px rgba(0,0,0,.06); –fgx-maxw:920px;
–lvl-0:#e53935;
–lvl-1:#f59e0b;
–lvl-2:#6b7280;
–lvl-3:#00c96b;
–lvl-4:#00a859;
}
html { -webkit-text-size-adjust: 100%; }
body { margin:0; touch-action: manipulation; background:var(–fgx-bg); color:var(–fgx-text); }
.fgx-wrap{max-width:var(–fgx-maxw);margin:0 auto;padding:16px}
.fgx-card{background:var(–fgx-card);border-radius:var(–fgx-radius);box-shadow:var(–fgx-shadow);padding:16px}
.fgx-brand{text-align:center;color:var(–fgx-green);font:800 15px/1 system-ui,-apple-system,Segoe UI,Roboto,Arial;letter-spacing:.5px;text-transform:uppercase;margin-bottom:4px}
.fgx-title{margin:6px 0;text-align:center;color:var(–fgx-green);font:800 28px/1.2 system-ui,-apple-system,Segoe UI,Roboto,Arial}
.fgx-sub{margin:0 0 6px;text-align:center;color:#4c6a57;font:500 15px/1.5 system-ui,-apple-system,Segoe UI,Roboto,Arial}
.fgx-badges{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin:10px 0 6px}
.fgx-badge-item{display:inline-flex;align-items:center;gap:4px;background:#e8f5ee;color:#008a47;padding:5px 12px;border-radius:999px;font:600 12px/1 system-ui,-apple-system,Segoe UI,Roboto,Arial}
.fgx-prog-head{display:flex;justify-content:space-between;align-items:center;font-size:.92em;color:#555;margin-top:6px}
.fgx-progress{height:10px;border-radius:999px;background:#e6efe8;overflow:hidden}
.fgx-bar{height:100%;width:0;background:linear-gradient(135deg,var(–fgx-green),var(–fgx-accent));transition:width .25s ease}
.fgx-steps{margin-top:8px}
.fgx-step{display:none}
.fgx-step.fgx-active{display:block;animation:fgx-fade .18s ease}
@keyframes fgx-fade{from{opacity:.4;transform:translateY(2px)}to{opacity:1;transform:none}}
.fgx-step-header{color:var(–fgx-green);font:700 17px/1.3 system-ui,-apple-system,Segoe UI,Roboto,Arial;margin:0 0 4px;display:flex;align-items:center;gap:8px}
.fgx-step-header .fgx-snum{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;background:var(–fgx-green);color:#fff;border-radius:50%;font-size:13px;font-weight:700;flex-shrink:0}
.fgx-step-desc{font-size:13px;color:#6b7f72;margin:0 0 14px}
.fgx-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.fgx-field{display:flex;flex-direction:column;background:var(–fgx-bg);border:1px solid var(–fgx-border);padding:12px;border-radius:12px}
.fgx-field label{font:700 14px/1.3 system-ui,-apple-system,Segoe UI,Roboto,Arial;color:#333;margin-bottom:6px}
.fgx-input,.fgx-select{
padding:12px;border:1px solid #cfd8dc;border-radius:10px;background:#fff;
font:500 16px/1.2 system-ui,-apple-system,Segoe UI,Roboto,Arial;color:var(–fgx-text);
min-height:44px;
}
::placeholder{color:#889;opacity:1}
.fgx-nav{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-top:12px}
.fgx-btn{border:1px solid var(–fgx-green);border-radius:999px;background:#fff;color:var(–fgx-green);padding:12px 16px;font:800 16px/1 system-ui,-apple-system,Segoe UI,Roboto,Arial;cursor:pointer;user-select:none;text-decoration:none;display:inline-block;text-align:center}
.fgx-btn:hover{background:#f0faf3}
.fgx-btn.primary{background:linear-gradient(135deg,var(–fgx-green),var(–fgx-accent));color:#fff;border-color:transparent}
.fgx-btn.ghost{border-color:#d34f4f;color:#b71c1c;background:#fff}
.fgx-btn[aria-disabled=”true”]{opacity:.55;pointer-events:none}
.fgx-btn:disabled{opacity:.55;pointer-events:none}
.fgx-cta-btn{display:inline-block;border-radius:999px;padding:12px 16px;font:800 16px/1 system-ui,-apple-system,Segoe UI,Roboto,Arial;background:var(–fgx-green);color:#fff;text-decoration:none;margin:4px}
.fgx-cta-btn,.fgx-cta-btn:hover,.fgx-cta-btn:visited{color:#fff !important}
.fgx-cta-btn.sec{background:#f8f9fa;color:#333 !important;border:1px solid #dee2e6}
.fgx-btn.primary,.fgx-btn.primary:hover,.fgx-btn.primary:visited{color:#fff !important}
.fgx-res{margin-top:16px}
.fgx-box{border-radius:14px;padding:14px;margin-top:10px;border:1px solid var(–fgx-border);background:#fff}
.fgx-box.green{background:#eaf7ed;border-color:#cfe8d4}
.fgx-box.amber{background:#fff6e2;border-color:#ffe3a6}
.fgx-box.red{background:#fde9ea;border-color:#ffc8cc}
.fgx-kpi{font:800 26px/1.2 system-ui,-apple-system,Segoe UI,Roboto,Arial}
.fgx-kpi-sub{color:#444}
.fgx-badge{display:inline-block;border-radius:999px;padding:4px 10px;font-weight:800;font-size:.85em;border:1px solid transparent;margin-top:6px}
.fgx-badge.good{background:#e8f5e9;color:#1b5e20;border-color:#c8e6c9}
.fgx-badge.warn{background:#fff8e1;color:#8a6d00;border-color:#ffe0b2}
.fgx-badge.bad{background:#fdecea;color:#b71c1c;border-color:#ffcdd2}
.fgx-col2{display:grid;grid-template-columns:1fr;gap:12px}
.fgx-box h4{margin:0 0 6px 0;font:800 15px/1.2 system-ui,-apple-system,Segoe UI,Roboto,Arial}
.fgx-list{margin:0;padding-left:18px}
.fgx-list li{margin:4px 0}
.fgx-input:focus,.fgx-select:focus,.fgx-btn:focus,.fgx-cta-btn:focus{outline:2px solid #92e0b3;outline-offset:2px}
.fgx-cta{text-align:center;margin-top:12px}
.fgx-hint{font-size:12px;color:#6b7f72;margin-top:4px}
.fgx-whatif-head{display:flex;flex-wrap:wrap;gap:8px;align-items:baseline;justify-content:space-between}
.fgx-whatif-age{font:800 20px/1.2 system-ui,-apple-system,Segoe UI,Roboto,Arial}
.fgx-whatif-rows{display:flex;flex-direction:column;gap:10px;margin-top:10px}
.fgx-whatif-row{position:relative;background:var(–fgx-bg);border:1px solid var(–fgx-border);border-radius:12px;padding:12px}
.fgx-whatif-top{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;align-items:center}
.fgx-whatif-label{font-weight:800}
.fgx-whatif-gain{font-weight:800}
.fgx-whatif-slider{width:100%;margin:12px 0 8px}
.fgx-whatif-help{display:flex;justify-content:space-between;font-size:.9em;color:#445;gap:8px}
.fgx-mini-progress{height:8px;border-radius:999px;background:#e6efe8;overflow:hidden;margin-top:8px}
.fgx-mini-bar{height:100%;width:0;background:linear-gradient(135deg,var(–fgx-green),var(–fgx-accent));transition:width .22s ease}
.fgx-sim-progress{height:12px;border-radius:999px;background:#e6efe8;overflow:hidden;margin:8px 0}
.fgx-sim-bar{height:100%;width:0;background:linear-gradient(135deg,var(–fgx-green),var(–fgx-accent));transition:width .22s ease}
.fgx-bubble{
position:absolute; top:-12px; transform:translate(-50%,-100%);
background:#111; color:#fff; padding:4px 8px; border-radius:999px;
font:800 12px/1 system-ui,-apple-system,Segoe UI,Roboto,Arial; white-space:nowrap;
box-shadow:0 6px 16px rgba(0,0,0,.18); pointer-events:none;
will-change:left; max-width:calc(100% – 24px);
}
.fgx-bubble.lvl-0{background:var(–lvl-0)}
.fgx-bubble.lvl-1{background:var(–lvl-1)}
.fgx-bubble.lvl-2{background:var(–lvl-2)}
.fgx-bubble.lvl-3{background:var(–lvl-3)}
.fgx-bubble.lvl-4{background:var(–lvl-4)}
.fgx-disc{text-align:center;font-size:12px;color:#6b7f72;margin-top:12px;padding:10px;background:var(–fgx-bg);border-radius:10px;line-height:1.5}
@media (max-width:720px){
.fgx-wrap{padding:0}
.fgx-card{border-radius:0; box-shadow:none}
.fgx-grid{grid-template-columns:1fr}
.fgx-title{font-size:24px}
.fgx-btn{font-size:16px; padding:12px 16px}
.fgx-cta-btn{font-size:16px; padding:12px 16px}
.fgx-input,.fgx-select{
font-size:17px;
padding:16px 16px;
min-height:56px;
line-height:1.35;
}
.fgx-field label{font-size:15px}
}
FarmaMonitor
Vârsta metabolică (estimare)
Compoziție, fitness, somn, dietă, substanțe, stres · ~3–4 minute · Rezultat orientativ
⏱ 3–4 min
📊 6 categorii
🔒 Fără stocare date
Pas 1/6
Pas 1
Date de bază pentru estimarea metabolică
Vârsta (ani)
Sex FemeieBărbatPrefer să nu spun
Înălțime (cm)
Circumferință talie (cm) Dacă nu știi, lasă gol – estimăm din alte răspunsuri.
Pas 2
Mișcare, antrenamente și valori cardiace
Mișcare moderat-viguroasă, min/săpt. 01–5960–149150–299≥300
Forță (antrenamente/săpt.) 01≥2
Pași/zi (medie) <4.0004.000–6.9997.000–9.999≥10.000
Puls în repaus (bpm) (opțional)
TA sistolică – SBP (mmHg) (opțional)
TA diastolică – DBP (mmHg) (opțional)
Pas 3
Somnul influențează puternic metabolismul
Durata somnului/noapte <5 h5–6 h6–7 h7–9 h>9 h
Calitatea somnului Foarte slabăSlabăAcceptabilăBunăExcelentă
Pas 4
Obiceiuri alimentare și consum de lichide
Porții legume/fructe pe zi <22–4≥5
Alimente ultraprocesate ZilnicDe câteva ori/săpt.RarAproape niciodată
Băuturi cu zahăr ≥7/ săpt.1–6/ săpt.0
Apă băută/zi <1 L~1–1.5 L~1.5–2 L≥2 L
Pas 5
Consumul de substanțe și impactul metabolic
Statut fumat NiciodatăEx-fumător (≥12 luni)Fumător curent
Țigări/zi (dacă fumezi) 01–56–1011–20>20
Vape cu nicotină NuOcazionalZilnic
Alcool – porții/săptămână 01–45–910–1415–21≥22
Episoade cu multe băuturi/lună 01≥2
Pas 6
Ultimii factori pentru estimarea completă
Stres resimțit (ultimele 2 săpt.) Foarte scăzutScăzutModeratMareFoarte mare
Cât stai jos/zi (total) >=12 h9–11 h6–8 h<6 h
Te ridici/miști la ~60 min? RarUneoriDa, de obicei
Glicemie à jeun (mg/dL) (opțional)
Istoric familial (DZ2/boli cardiace precoce) Nu / nu știuDa
Colesterol/LDL mare raportat? Nu / nu știuDa
Sforăit puternic sau pauze respirație? NuDa
Mese târzii (>22:00) / săpt. 01–2 seri≥3 seri
Înapoi
Înainte
Vezi rezultatul
Reset
Acest calculator oferă doar estimări orientative și nu înlocuiește consultul medical.
(function() {
„use strict”;
window.MetabolicAgeCalc = window.MetabolicAgeCalc || {};
const MAC = window.MetabolicAgeCalc;
const $ = (s, c=document)=>c.querySelector(s);
const $$ = (s, c=document)=>Array.from(c.querySelectorAll(s));
MAC.elements = {
steps: $$(‘.fgx-step’),
bar: $(‘#fgx-bar’),
stepTxt: $(‘#fgx-stepTxt’),
fillHint: $(‘#fgx-fillHint’),
prevBtn: $(‘#fgx-prev’),
nextBtn: $(‘#fgx-next’),
seeBtn: $(‘#fgx-see’),
resetBtn: $(‘#fgx-reset’),
results: $(‘#fgx-res’),
app: $(‘#fgx-app’)
};
MAC.state = { currentStep:0, isInitialized:false };
MAC.utils = {
num: v => { const n=parseFloat(v); return isNaN(n)?null:n; },
get: id => { const el=$(‘#’+id); return el?el.value:”; },
clamp: (v,min,max)=>Math.max(min,Math.min(max,v))
};
MAC.navigation = {
showStep(i){
const steps=MAC.elements.steps, idx=Math.max(0,Math.min(steps.length-1,i));
MAC.state.currentStep=idx;
steps.forEach((s,k)=>s.classList.toggle(‘fgx-active’,k===idx));
MAC.ui.updateInterface();
const first=steps[idx]?.querySelector(‘input,select,textarea’);
if(first) setTimeout(()=>first.focus({preventScroll:false}),100);
},
nextStep(){ this.showStep(MAC.state.currentStep+1); },
prevStep(){ this.showStep(MAC.state.currentStep-1); }
};
MAC.ui = {
updateInterface(){
const c=MAC.state.currentStep, t=MAC.elements.steps.length;
MAC.elements.stepTxt.textContent=`Pas ${c+1}/${t}`;
const p=Math.round((c/(t-1))*100);
MAC.elements.bar.style.width=p+’%’;
MAC.elements.bar.parentElement.setAttribute(‘aria-valuenow’, String(p));
MAC.elements.prevBtn.setAttribute(‘aria-disabled’, c===0?’true’:’false’);
MAC.elements.seeBtn.style.display=c===t-1?’inline-block’:’none’;
MAC.elements.nextBtn.style.display=c===t-1?’none’:’inline-block’;
const curr=MAC.elements.steps[c];
const fields=$$(‘input, select, textarea’, curr);
MAC.elements.fillHint.textContent=`${fields.filter(f=>String(f.value||”).trim()!==”).length}/${fields.length} câmpuri`;
}
};
MAC.events = {
bind(){
MAC.elements.nextBtn.addEventListener(‘click’, e=>{e.preventDefault();MAC.navigation.nextStep();});
MAC.elements.prevBtn.addEventListener(‘click’, e=>{e.preventDefault();MAC.navigation.prevStep();});
MAC.elements.seeBtn.addEventListener(‘click’, e=>{e.preventDefault();MAC.calculator.compute();});
MAC.elements.resetBtn.addEventListener(‘click’, e=>{e.preventDefault();MAC.events.reset();});
document.addEventListener(‘keydown’, e=>{
if(!e.target.closest(‘.fgx-card’)) return;
if(e.key===’Enter’){ e.preventDefault(); MAC.state.currentStep{ if(e.target.closest(‘.fgx-card’)) MAC.ui.updateInterface(); });
document.addEventListener(‘change’, e=>{ if(e.target.closest(‘.fgx-card’)) MAC.ui.updateInterface(); });
},
reset(){
$$(‘input.fgx-input’).forEach(i=>i.value=”);
$$(‘select.fgx-select’).forEach(s=>s.selectedIndex=0);
MAC.elements.results.innerHTML=”;
MAC.elements.app.setAttribute(‘aria-live’,’off’);
MAC.navigation.showStep(0);
}
};
MAC.calculator = {
createPart:(label, delta, explanation)=>({label,d:delta,explain:explanation}),
calculateScoreParts(){
const parts=[];
const h=MAC.utils.num(MAC.utils.get(‘fgx-height’));
const w=MAC.utils.num(MAC.utils.get(‘fgx-waist’));
if(h&&w){
const r=w/h; let d=0;
if(r<0.45)d=-2; else if(r<0.50)d=-1; else if(r<0.55)d=+1; else if(r=0?’+’:”}${d} ani`));
} else parts.push(this.createPart(‘Compoziție (talie)’,0,’Fără talie/înălțime – fără ajustare.’));
const mvpa=parseInt(MAC.utils.get(‘fgx-mvpa’)||’0′,10);
const strength=parseInt(MAC.utils.get(‘fgx-strength’)||’0′,10);
const steps=parseInt(MAC.utils.get(‘fgx-steps’)||’0′,10);
const mvpaD= mvpa===0?+4: mvpa<60?+2: mvpa<150?+1: mvpa<300?-1:-3;
const strD= strength===0?+2: strength===1?-1:-2;
const stepsD= steps<5000?+2: steps<8000?+1: steps=0?’+’:”}${mvpaD} | Forță ${strength} → ${strD>=0?’+’:”}${strD} | Pași ${steps} → ${stepsD>=0?’+’:”}${stepsD}`));
const sh=MAC.utils.get(‘fgx-sleepH’), sq=MAC.utils.get(‘fgx-sleepQ’);
const durD= sh===’lt5′?+3: sh===’5-6′?+1: sh===’6-7′?0: sh===’7-9′?-1:0;
const qualD= sq===’vpoor’?+3: sq===’poor’?+2: sq===’fair’?+1: sq===’good’?0:-1;
parts.push(this.createPart(‘Somn’, durD+qualD, `Durată ${sh} ${durD>=0?’+’:”}${durD} | Calitate ${sq} ${qualD>=0?’+’:”}${qualD}`));
const veg=MAC.utils.get(‘fgx-veg’), upf=MAC.utils.get(‘fgx-upf’), sug=MAC.utils.get(‘fgx-sugDrinks’), water=MAC.utils.get(‘fgx-water’);
const vegD= veg===’2′?-1: veg===’1′?+1:+2, upfD= upf===’daily’?+2: upf===’few’?+1: upf===’rare’?0:-1, sugD= sug===’7′?+2: sug===’3′?+1:0, waterD= water===’0′?+1: water===’1′?0:-1;
parts.push(this.createPart(‘Dietă & băuturi’, vegD+upfD+sugD+waterD, `Legume ${veg} ${vegD>=0?’+’:”}${vegD} | UPF ${upf} ${upfD>=0?’+’:”}${upfD} | Zahăr ${sug} ${sugD>=0?’+’:”}${sugD} | Apă ${water} ${waterD>=0?’+’:”}${waterD}`));
const smoke=MAC.utils.get(‘fgx-smokeStatus’), cigs=MAC.utils.get(‘fgx-cigsPerDay’), vape=MAC.utils.get(‘fgx-vape’);
let smokeD= smoke===’never’?0: smoke===’ex’?+1: (cigs===’0′?0: cigs===’1-5′?+2: cigs===’6-10′?+3: cigs===’11-20′?+5:+7);
const vapeD= vape===’oc’?+1: vape===’daily’?+2:0;
parts.push(this.createPart(‘Tutun / Vape’, Math.min(smokeD+vapeD,8), `Țigări ${cigs} ${smokeD>=0?’+’:”}${smokeD}${vape!==’no’?` | Vape ${vape} ${vapeD>=0?’+’:”}${vapeD}`:”}`));
const alcW=MAC.utils.get(‘fgx-alcoholWeek’), binge=MAC.utils.get(‘fgx-heavyDrink’);
const alcD= alcW===’0′?0: alcW===’1-4′?0: alcW===’5-9′?+1: alcW===’10-14′?+2: alcW===’15-21′?+3:+4;
const bingeD= binge===’0′?0: binge===’1′?+1:+2;
parts.push(this.createPart(‘Alcool’, Math.min(alcD+bingeD,5), `Săpt. ${alcW} ${alcD>=0?’+’:”}${alcD} | Episoade ${binge} ${bingeD>=0?’+’:”}${bingeD}`));
const stress=MAC.utils.get(‘fgx-stress’), sit=MAC.utils.get(‘fgx-sitting’), br=MAC.utils.get(‘fgx-breaks’);
const stressD= stress===’vlow’?-1: stress===’low’?0: stress===’mid’?+1: stress===’high’?+2:+3;
const sitD= sit===’12’?+3: sit===’9′?+2: sit===’7′?+1:0;
const brD= br===’yes’?-1: br===’some’?0:+1;
parts.push(this.createPart(‘Stres & sedentarism’, stressD+sitD+brD, `Stres ${stress} ${stressD>=0?’+’:”}${stressD} | Stat jos ${sit}h ${sitD>=0?’+’:”}${sitD} | Pauze ${br} ${brD>=0?’+’:”}${brD}`));
const rhr=MAC.utils.num(MAC.utils.get(‘fgx-rhr’));
if(rhr){ const rhrD= rhr<60?-2: rhr<=70?0: rhr<=79?+1: rhr=0?’+’:”}${rhrD} ani`)); }
else parts.push(this.createPart(‘Puls repaus’,0,’Fără puls – fără ajustare.’));
const sbp=MAC.utils.num(MAC.utils.get(‘fgx-sbp’)), dbp=MAC.utils.num(MAC.utils.get(‘fgx-dbp’));
if(sbp&&dbp){ let bpD=0; if((sbp>=130&&sbp=80&&dbp=140||dbp>=90) bpD=+3; parts.push(this.createPart(‘Tensiune’, bpD, `${sbp}/${dbp} mmHg → ${bpD>=0?’+’:”}${bpD} ani`)); }
else parts.push(this.createPart(‘Tensiune’,0,’Fără TA – fără ajustare.’));
const fpg=MAC.utils.num(MAC.utils.get(‘fgx-fpg’));
if(fpg){ const fpgD= fpg<90?-1: fpg<=99?0: fpg<=109?+1: fpg=0?’+’:”}${fpgD} ani`)); }
else parts.push(this.createPart(‘Glicemie à jeun’,0,’Fără valoare – fără ajustare.’));
const fam=MAC.utils.get(‘fgx-famRisk’), chol=MAC.utils.get(‘fgx-highChol’), ap=MAC.utils.get(‘fgx-apnea’), late=MAC.utils.get(‘fgx-lateMeals’);
parts.push(this.createPart(‘Istoric familial’, fam===’yes’?+1:0, fam===’yes’?’Risc familial → +1 an’:’Nu/necunoscut’));
parts.push(this.createPart(‘Lipide crescute’, chol===’yes’?+2:0, chol===’yes’?’LDL mare → +2 ani’:’Nu/necunoscut’));
parts.push(this.createPart(‘Sforăit / apnee’, ap===’yes’?+2:0, ap===’yes’?’Semne de apnee → +2 ani’:’Nu’));
parts.push(this.createPart(‘Mese târzii’, late===’2′?+2: late===’1′?+1:0, late===’2′?’≥3/săpt. → +2 ani’: late===’1′?’1–2/săpt. → +1 an’:’Rareori → 0′));
return parts;
},
categoryFor(label, frac){
const lvl = frac<0.2?0: frac<0.4?1: frac<0.6?2: frac<0.8?3: 4;
let text = '';
switch(label){
case 'Activitate fizică':
text = ['Sedentar','Puțin','Recomandat','Înalt','Excelent'][lvl]; break;
case 'Dietă & băuturi':
text = ['Slab','Mediu','Bun','Foarte bun','Excelent'][lvl]; break;
case 'Stres & sedentarism':
text = ['Foarte ridicat','Ridicat','Moderat','Scăzut','Foarte scăzut'][lvl]; break;
case 'Tutun / Vape':
text = ['Fumător intens','Fumător moderat','Reducere majoră','Aproape stop','Stop'][lvl]; break;
case 'Somn':
text = ['Foarte slab','Slab','Acceptabil','Bun','Excelent'][lvl]; break;
default:
text = ['Foarte slab','Slab','Mediu','Bun','Excelent'][lvl];
}
return {lvl, text};
},
compute(){
const age=parseInt($('#fgx-age').value||'0',10);
if(!age||age80){
MAC.elements.results.innerHTML=`
Completează vârsta (18–80) pentru rezultat.
`;
MAC.navigation.showStep(0); return;
}
const parts=this.calculateScoreParts();
const totalDelta=MAC.utils.clamp(parts.reduce((s,p)=>s+p.d,0),-12,+22);
const metabolicAge=age+totalDelta;
const incAll=parts.filter(p=>p.d>0).sort((a,b)=>b.d-a.d);
const protAll=parts.filter(p=>p.da.d-b.d);
const increases=incAll.slice(0,3), protective=protAll.slice(0,3);
const mood= totalDelta<=-2?'good': (totalDelta items.length? `
${items.map(i=>`${i.label} : ${i.explain} (${i.d>0?’+’:”}${i.d}) `).join(”)} `:’
—
‘;
MAC.elements.bar.style.width=’100%’;
MAC.elements.bar.parentElement.setAttribute(‘aria-valuenow’,’100′);
MAC.elements.stepTxt.textContent=’Rezultat’;
MAC.elements.results.innerHTML=`
${metabolicAge} ani
Vârsta metabolică estimată
${moodText}
Vârsta ta: ${age} · Diferență: ${totalDelta>0? ‘+’+totalDelta: totalDelta} ani
🔴 Top 3 factori care cresc vârsta ${createList(increases)}
🟢 Top 3 factori care scad vârsta ${createList(protective)}
🎯 Ce-ar fi dacă… (simulează îmbunătățiri)
Vârstă simulată: ${metabolicAge} ani
0 ani câștigați
${increases.length ? increases.map((p, idx)=>`
0 ani · —
Penalizare inițială: +${p.d} ani
Curentă: +${p.d} ani
`).join(”) : `
Nu există factori majori care să crească vârsta – felicitări!
`}
📋 Recomandări personalizate
Continuă pe FarmaMonitor
↻ Reia calculul
`;
const nextSteps=$(‘#fgx-next-steps’); const rec=[];
if(totalDelta>=3) rec.push(‘Crește mișcarea la ≥150 min/săpt. și 2 sesiuni de forță.’);
if($(‘#fgx-sleepQ’).value!==’excel’) rec.push(‘Rutina 7–9 h, fără ecrane cu 60 min înainte de culcare.’);
if($(‘#fgx-upf’).value!==’never’) rec.push(‘Reduce alimentele ultraprocesate și băuturile cu zahăr.’);
if($(‘#fgx-smokeStatus’).value===’current’) rec.push(‘Plan gradual de renunțare la fumat – discută cu farmacistul.’);
if($(‘#fgx-sitting’).value!==’4′) rec.push(‘Ridică-te și mișcă-te 2–3 min la fiecare 45–60 min de stat jos.’);
if($(‘#fgx-stress’).value===’high’||$(‘#fgx-stress’).value===’vhigh’) rec.push(‘Integrează tehnici de relaxare: respirație, plimbări, mindfulness.’);
if(!rec.length) rec.push(‘Menține obiceiurile actuale și reevaluează peste 4–6 săptămâni.’);
nextSteps.innerHTML=rec.slice(0,5).map(r=>`
${r} `).join(”);
MAC.elements.app.setAttribute(‘aria-live’,’polite’);
$(‘#fgx-retry’).addEventListener(‘click’, MAC.events.reset);
/* Scroll la rezultate */
setTimeout(()=>{
MAC.elements.results.scrollIntoView({behavior:’smooth’,block:’start’});
},100);
/* WHAT-IF */
(()=>{
if(!increases.length) return;
const simAgeEl=$(‘#fgx-sim-age’), simGainEl=$(‘#fgx-sim-gain’), simBar=$(‘#fgx-sim-bar’);
const sliders=$$(‘.fgx-whatif-slider’, MAC.elements.results);
const gains=new Array(increases.length).fill(0);
const maxTotal=increases.reduce((a,b)=>a+b.d,0);
function updateTotals(){
const tot=gains.reduce((a,b)=>a+b,0);
simAgeEl.textContent = (metabolicAge – tot);
simGainEl.textContent = `${tot} ani câștigați`;
simBar.style.width = (maxTotal? (tot/maxTotal)*100 : 0) + ‘%’;
return tot;
}
function placeBubble(slider, bubble, now, max, label){
const row = slider.closest(‘.fgx-whatif-row’);
const pad = 12;
const rowW = row.clientWidth;
const trackW = rowW – pad*2;
const pct = max ? now / max : 0;
let x = pad + pct * trackW;
const bw = bubble.offsetWidth || 80;
const half = bw / 2;
const minX = half + 4;
const maxX = rowW – half – 4;
x = Math.max(minX, Math.min(maxX, x));
bubble.style.left = x + ‘px’;
const gain = max – now;
const frac = max ? gain / max : 0;
const cat = MAC.calculator.categoryFor(label, frac);
bubble.className = ‘fgx-bubble lvl-‘ + cat.lvl;
bubble.textContent = `+${gain} ani · ${cat.text}`;
}
function updateRow(idx){
const sl = sliders[idx];
const max=parseInt(sl.dataset.max,10), now=parseInt(sl.value,10), gain=max-now;
$(‘#fgx-now-‘+idx).textContent = now;
$(‘#fgx-gain-‘+idx).textContent = gain;
$(‘#fgx-mini-‘+idx).style.width = (max? (gain/max)*100 : 0) + ‘%’;
placeBubble(sl, $(‘#fgx-bub-‘+idx), now, max, increases[idx].label);
gains[idx]=gain;
updateTotals();
}
sliders.forEach((sl,i)=>{
sl.addEventListener(‘input’, ()=>updateRow(i));
sl.addEventListener(‘focus’, ()=>updateRow(i));
updateRow(i);
});
})();
}
};
MAC.init=function(){
if(MAC.state.isInitialized){ MAC.ui.updateInterface(); return; }
if(!MAC.elements.nextBtn||!MAC.elements.prevBtn){ console.error(‘Required elements not found’); return; }
MAC.events.bind(); MAC.ui.updateInterface(); MAC.navigation.showStep(0); MAC.state.isInitialized=true;
};
function start(){ try{ MAC.init(); }catch(e){ console.error(‘MAC initialization error:’, e); } }
if(document.readyState===’loading’){ document.addEventListener(‘DOMContentLoaded’, start, {once:true}); } else { start(); }
window.addEventListener(‘load’, start); setTimeout(start,100); setTimeout(start,500); setTimeout(start,1000);
window.MetabolicAgeCalc=MAC;
})();
Ce este vârsta metabolică?
Vârsta metabolică este o estimare a modului în care funcționează organismul tău, comparativ cu vârsta cronologică (cea din buletin). O persoană de 40 de ani care se mișcă regulat, doarme bine și are o alimentație echilibrată poate avea o vârstă metabolică de 34 de ani. În schimb, cineva de 30 de ani cu un stil de viață sedentar, somn insuficient și fumat poate obține o vârstă metabolică de 37–38 de ani.
Cu alte cuvinte, vârsta metabolică reflectă cât de „tânăr” sau „bătrân” este organismul tău la nivel funcțional, dincolo de ceea ce spune calendarul.
Ce evaluează acest calculator?
Calculatorul analizează 6 categorii de factori care influențează sănătatea metabolică:
1. Compoziție corporală – Raportul talie-înălțime (WHtR) este un indicator mai relevant decât greutatea în sine. O talie mare față de înălțime semnalează grăsime viscerală crescută, asociată cu rezistență la insulină și risc cardiovascular.
2. Fitness și activitate fizică – Numărul de minute de mișcare moderat-viguroasă pe săptămână, antrenamentele de forță, pașii zilnici, pulsul în repaus și tensiunea arterială. Recomandările internaționale (OMS) indică minim 150 de minute de activitate moderată și 2 sesiuni de forță pe săptămână.
3. Somn – Durata și calitatea somnului au un impact direct asupra metabolismului. Somnul insuficient (sub 6 ore) crește nivelul de cortizol , reduce sensibilitatea la insulină și favorizează acumularea de grăsime abdominală.
4. Dietă și hidratare – Consumul de legume și fructe, frecvența alimentelor ultraprocesate, băuturile cu zahăr și aportul de apă. O alimentație bogată în alimente integrale și o hidratare adecvată susțin un metabolism eficient.
5. Tutun și alcool – Fumatul accelerează îmbătrânirea biologică prin stres oxidativ și inflamație cronică. Consumul excesiv de alcool afectează ficatul , somnul și metabolismul general.
6. Stres, sedentarism și alți factori – Stresul cronic, orele petrecute în poziția șezut, glicemia à jeun, istoricul familial de diabet sau boli cardiovasculare, colesterolul crescut, semnele de apnee de somn și mesele târzii.
Cum se folosește calculatorul?
Completarea durează 3–4 minute și parcurge 6 pași simpli. La fiecare pas, răspunzi la câteva întrebări prin selectare sau introducere de valori. Câmpurile marcate ca opționale (pulsul în repaus, tensiunea, glicemia) îmbunătățesc precizia, dar calculatorul funcționează și fără ele.
La final primești:
Vârsta metabolică estimată – un număr clar, ușor de interpretat
Top 3 factori care cresc vârsta – ce îți „adaugă ani” cel mai mult
Top 3 factori protectivi – ce te ajută să rămâi tânăr metabolic
Simulatorul „Ce-ar fi dacă…” – poți mișca slider-ele pentru a vedea cât ai câștiga dacă îmbunătățești fiecare factor
Recomandări personalizate – sfaturi concrete, bazate pe răspunsurile tale
Cum te ajută acest calculator?
Identifici rapid prioritățile. În loc să încerci să schimbi totul deodată, vezi exact care 2–3 obiceiuri au cel mai mare impact negativ. Poate descoperi că sedentarismul contează mai mult decât credeai, sau că somnul tău slab adaugă ani suplimentari.
Simulezi schimbări înainte de a le face. Secțiunea „Ce-ar fi dacă…” te motivează vizual – vezi cum scade vârsta metabolică pe măsură ce ajustezi fiecare factor.
Monitorizezi progresul. Poți reveni peste câteva săptămâni sau luni și reface calculul pentru a vedea dacă schimbările adoptate au avut efect.
Ce nu face acest calculator?
Calculatorul oferă o estimare orientativă și nu înlocuiește consultul medical. Nu stabilește diagnostice și nu recomandă tratamente. Dacă rezultatul indică factori de risc (tensiune crescută, glicemie ridicată, sforăit puternic), recomandarea este să discuți cu medicul de familie pentru o evaluare completă.
Valorile obținute sunt bazate pe ghiduri publice de sănătate (OMS, ghiduri europene de cardiologie, studii epidemiologice publicate) și sunt adaptate pentru adulți între 18 și 80 de ani.
Rezultatele tale sunt private
Calculatorul funcționează integral în browser – nicio informație nu este trimisă, stocată sau prelucrată pe serverele noastre . Datele tale rămân exclusiv pe dispozitivul tău și dispar în momentul în care închizi pagina.
Subiect propus de Cosmin Lazar — farmacist specialist, formare în nutriție și dietetică
Descoperă mai multe la FarmaMonitor
Abonează-te ca să primești ultimele articole prin email.