';renderCalendar();}
function render(){renderSwitcher();renderWorkout();renderHeader();renderHistory();}
document.addEventListener('click',e=>{const choice=e.target.closest('[data-workout]');if(choice){state.selected=choice.dataset.workout;save();render();window.scrollTo({top:0,behavior:'smooth'})}const tab=e.target.closest('[data-tab]');if(tab){document.querySelectorAll('.tab').forEach(x=>x.classList.toggle('active',x===tab));document.querySelectorAll('.view').forEach(x=>x.classList.toggle('active',x.id===tab.dataset.tab));}if(e.target.id==='prevMonth'){viewMonth.setMonth(viewMonth.getMonth()-1);renderCalendar()}if(e.target.id==='nextMonth'){viewMonth.setMonth(viewMonth.getMonth()+1);renderCalendar()}if(e.target.id==='completeWorkout'){const workout=state.selected,marked=[...document.querySelectorAll('.done:checked')].length;const entry={date:dateKey(new Date()),workout,exercises:marked};state.history.push(entry);state.last=entry;workouts[workout].exercises.forEach((_,i)=>delete state.checks[`${workout}-${i}`]);save();renderWorkout();renderHeader();renderHistory();showToast(`Treino ${entry.workout} registrado. Bom trabalho!`)}if(e.target.id==='resetData'){if(confirm('Apagar todas as cargas e o histórico? Esta ação não pode ser desfeita.')){state={...defaultState};save();render();showToast('Dados apagados.')}}if(e.target.id==='exportData'){const blob=new Blob([JSON.stringify(state,null,2)],{type:'application/json'}),url=URL.createObjectURL(blob),a=document.createElement('a');a.href=url;a.download='meu-treino-dados.json';a.click();URL.revokeObjectURL(url);}});
document.addEventListener('input',e=>{if(e.target.dataset.weight){state.weights[e.target.dataset.weight]=e.target.value;save()}if(e.target.dataset.note){state.notes[e.target.dataset.note]=e.target.value;save()}});
document.addEventListener('change',e=>{if(e.target.matches('.done')){state.checks[e.target.dataset.key]=e.target.checked;save()}});
render(); if('serviceWorker' in navigator)navigator.serviceWorker.register('sw.js');