HTML report generation