`;
elements.planResultContainer.innerHTML = planHTML;
};
const downloadPDF = () => {
if (typeof window.jspdf === 'undefined') {
alert('Could not generate PDF. The required library is missing.');
return;
}
const { jsPDF } = window.jspdf;
const doc = new jsPDF();
const { schedule, tip, inputs } = planData;
const colors = { primary: '#7c3aed', secondary: '#8b5cf6', textPrimary: '#1f2937', textSecondary: '#6b7280' };
doc.setFillColor(colors.primary);
doc.rect(0, 0, 210, 28, 'F');
doc.setFont('helvetica', 'bold');
doc.setFontSize(20);
doc.setTextColor('#FFFFFF');
doc.text('My Pelvic Floor Health Plan', 105, 18, { align: 'center' });
let yPos = 40;
doc.setFontSize(14);
doc.setFont('helvetica', 'bold');
doc.setTextColor(colors.primary);
doc.text('Your Weekly Schedule', 14, yPos);
yPos += 10;
Object.entries(schedule).forEach(([days, exercises]) => {
doc.setFontSize(11);
doc.setFont('helvetica', 'bold');
doc.setTextColor(colors.textPrimary);
doc.text(doc.splitTextToSize(days + ':', 180), 14, yPos);
yPos += 7;
exercises.forEach(ex => {
doc.setFont('helvetica', 'bold');
doc.text(`• ${ex.name}:`, 20, yPos);
doc.setFont('helvetica', 'normal');
const splitDesc = doc.splitTextToSize(ex.desc, 150);
doc.text(splitDesc, 25, yPos + 5);
yPos += (splitDesc.length * 5) + 5;
});
yPos += 5;
});
doc.setFontSize(14);
doc.setFont('helvetica', 'bold');
doc.setTextColor(colors.primary);
doc.text('Important Lifestyle Tip', 14, yPos);
yPos += 7;
doc.setFontSize(11);
doc.setFont('helvetica', 'normal');
doc.text(doc.splitTextToSize(tip, 180), 14, yPos);
yPos = 260;
doc.setFillColor('#fee2e2');
doc.rect(14, yPos, 182, 30, 'F');
doc.setFontSize(12);
doc.setFont('helvetica', 'bold');
doc.setTextColor('#b91c1c');
doc.text('CRITICAL DISCLAIMER', 105, yPos + 8, { align: 'center' });
doc.setFontSize(9);
doc.setFont('helvetica', 'normal');
doc.setTextColor('#991b1b');
const disclaimer = "This is not medical advice. Consult a pelvic floor physical therapist or your doctor before starting any exercise program, especially if you are postpartum or have symptoms like pain, pressure, or leakage.";
doc.text(doc.splitTextToSize(disclaimer, 170), 20, yPos + 14);
doc.save('My_Pelvic_Floor_Plan.pdf');
};
// --- Event Listeners ---
elements.nextBtn.addEventListener('click', nextStep);
elements.prevBtn.addEventListener('click', prevStep);
elements.downloadPdfBtn.addEventListener('click', downloadPDF);
// --- Initialization ---
updateFormUI();
});
