${escapeHtml(title)}

${escapeHtml(title)}

${escapeHtml(generatedLine)}

Inputs

${inputRows}

Summary

${summaryRows.map(([label, value]) => ``).join("")}
MetricValue
${escapeHtml(label)}${escapeHtml(value)}
${chartSvg ? `

CPP comparison

${chartSvg}
` : ""}

Full results table

${resultsRows || ""}
Option Program / Partner Type / Cabin Cash price Points Transfer points Taxes/fees CPP Out-of-pocket Availability Refundable Policy fit

Precautionary Guidance

`; const doc = window.open("", "_blank", "width=900,height=700"); if (!doc) return; doc.document.open(); doc.document.write(html); doc.document.close(); doc.focus(); doc.print(); }; const bindPdfExport = () => { const toolbar = document.querySelector(".result-toolbar"); if (!toolbar || toolbar.dataset.tpoPdfBound === "1") return; toolbar.dataset.tpoPdfBound = "1"; toolbar.addEventListener( "click", (event) => { const btn = event.target.closest("[data-action='pdf']"); if (!btn) return; event.preventDefault(); event.stopImmediatePropagation(); exportPdf(); }, true ); }; bindPdfExport(); })();