u003c!u002du002d Required Libraries u002du002du003enu003cscript src=u0022https://cdnjs.cloudflare.com/ajax/libs/Chart.js/4.4.1/chart.umd.min.jsu0022u003eu003c/scriptu003enu003cscript src=u0022https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.jsu0022u003eu003c/scriptu003enu003cscript src=u0022https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.jsu0022u003eu003c/scriptu003enu003cstyleu003en :root {n u002du002dsitez-teal: #1A535C;n u002du002dsitez-red: #FF0000;n u002du002dsitez-blue: #2196F3;n u002du002dsitez-sage: #CCDAD1;n u002du002dsitez-gray: #6F6866;n }nn * {n margin: 0;n padding: 0;n box-sizing: border-box;n }nn body {n font-family: 'Outfit', sans-serif;n line-height: 1.6;n color: var(u002du002dsitez-gray);n background: #f5f5f5;n }nn .container {n max-width: 100%;n width: 100%;n margin: 0;n padding: 1rem;n }nn .header {n text-align: center;n margin-bottom: 3rem;n padding: 2rem;n background: white;n border-radius: 12px;n box-shadow: 0 2px 10px rgba(0,0,0,0.1);n }nn .logo {n font-size: 2rem;n font-weight: 700;n margin-bottom: 0.5rem;n }nn .logo-site {n color: var(u002du002dsitez-teal);n }nn .logo-z {n color: var(u002du002dsitez-red);n }nn .tagline {n color: var(u002du002dsitez-gray);n font-size: 0.9rem;n font-style: italic;n }nn h1 {n color: var(u002du002dsitez-teal);n font-size: 2rem;n font-weight: 600;n margin: 1rem 0;n }nn h2 {n color: var(u002du002dsitez-teal);n font-size: 1.5rem;n font-weight: 600;n margin: 2rem 0 1rem;n }nn h3 {n color: var(u002du002dsitez-teal);n font-size: 1.2rem;n font-weight: 600;n margin: 1.5rem 0 1rem;n }nn .section {n background: white;n padding: 2rem;n margin-bottom: 2rem;n border-radius: 12px;n box-shadow: 0 2px 10px rgba(0,0,0,0.1);n }nn .score-display {n background: linear-gradient(135deg, var(u002du002dsitez-teal), #0d3b44);n color: white;n padding: 2rem;n border-radius: 12px;n text-align: center;n margin: 2rem 0;n }nn .score-number {n font-size: 4rem;n font-weight: 700;n margin: 0.5rem 0;n }nn .score-label {n font-size: 1.5rem;n opacity: 0.9;n }nn .risk-level {n display: inline-block;n padding: 0.5rem 1.5rem;n border-radius: 50px;n font-weight: 600;n margin-top: 1rem;n }nn .risk-low {n background: #4CAF50;n }nn .risk-medium {n background: #FF9800;n }nn .risk-high {n background: #f44336;n }nn .checkbox-group {n margin: 1.5rem 0;n }nn .checkbox-item {n display: flex;n align-items: center;n padding: 1rem;n margin: 0.5rem 0;n background: #f9f9f9;n border-radius: 8px;n cursor: pointer;n transition: all 0.3s ease;n }nn .checkbox-item:hover {n background: var(u002du002dsitez-sage);n }nn .checkbox-item input[type=u0022checkboxu0022] {n width: 24px;n height: 24px;n margin-right: 1rem;n cursor: pointer;n }nn .checkbox-item label {n cursor: pointer;n flex: 1;n }nn .input-group {n margin: 1.5rem 0;n }nn .input-group label {n display: block;n font-weight: 600;n color: var(u002du002dsitez-teal);n margin-bottom: 0.5rem;n }nn .input-help {n background: #f0f8ff;n padding: 1rem;n border-radius: 8px;n margin: 0.5rem 0;n font-size: 0.9rem;n border-left: 4px solid var(u002du002dsitez-blue);n }nn .input-help strong {n display: block;n color: var(u002du002dsitez-teal);n margin-bottom: 0.5rem;n }nn .input-help ul {n margin-left: 1.5rem;n margin-top: 0.5rem;n }nn input[type=u0022numberu0022] {n width: 100%;n padding: 1rem;n border: 2px solid var(u002du002dsitez-sage);n border-radius: 8px;n font-size: 1rem;n font-family: 'Outfit', sans-serif;n }nn input[type=u0022numberu0022]:focus {n outline: none;n border-color: var(u002du002dsitez-teal);n }nn .cost-breakdown {n background: linear-gradient(135deg, #f0f8ff, #e3f2fd);n padding: 2rem;n border-radius: 12px;n margin: 2rem 0;n }nn .cost-row {n display: flex;n justify-content: space-between;n padding: 0.75rem 0;n border-bottom: 1px solid rgba(26, 83, 92, 0.1);n }nn .cost-row:last-child {n border-bottom: none;n font-weight: 700;n font-size: 1.2rem;n padding-top: 1rem;n margin-top: 0.5rem;n border-top: 2px solid var(u002du002dsitez-teal);n }nn .recommendation {n padding: 2rem;n border-radius: 12px;n margin: 2rem 0;n }nn .recommendation h3 {n margin-top: 0;n }nn .rec-low {n background: linear-gradient(135deg, #e8f5e9, #c8e6c9);n border-left: 6px solid #4CAF50;n }nn .rec-medium {n background: linear-gradient(135deg, #fff3e0, #ffe0b2);n border-left: 6px solid #FF9800;n }nn .rec-high {n background: linear-gradient(135deg, #ffebee, #ffcdd2);n border-left: 6px solid #f44336;n }nn .feature-list {n margin: 1.5rem 0;n list-style: none;n padding-left: 0; n list-style-type: none !important;n }nn .feature-list li {n padding: 0.5rem 0;n padding-left: 1.5rem;n position: relative;n }nn .feature-list li:before {n content: 'u005c2713';n position: absolute;n left: 0;n color: var(u002du002dsitez-teal);n font-weight: 700;n }nn .btn {n display: inline-block;n padding: 1rem 2rem;n background: var(u002du002dsitez-teal);n color: white;n border: none;n border-radius: 8px;n font-size: 1rem;n font-weight: 600;n cursor: pointer;n text-decoration: none;n transition: all 0.3s ease;n margin: 0.5rem 0.5rem 0.5rem 0;n }nn .btn:hover {n background: #0d3b44;n transform: translateY(-2px);n }nn .btn-primary {n background: var(u002du002dsitez-red);n }nn .btn-primary:hover {n background: #CC0000;n }nn .btn-secondary {n background: white;n color: var(u002du002dsitez-teal);n border: 2px solid var(u002du002dsitez-teal);n }nn .btn-secondary:hover {n background: var(u002du002dsitez-sage);n }nn .footer {n text-align: center;n padding: 2rem;n background: var(u002du002dsitez-teal);n color: white;n border-radius: 12px;n margin-top: 3rem;n }nn .footer h3 {n color: white;n margin-top: 0;n }nn .footer p {n color: rgba(255, 255, 255, 0.9);n margin: 0.5rem 0;n }nn .hidden {n display: none;n }nn @media print, (max-width: 768px) {n .container {n padding: 1rem;n }nn .section {n padding: 1.5rem;n }nn .score-number {n font-size: 3rem;n }nn h1 {n font-size: 1.5rem;n }nn h2 {n font-size: 1.3rem;n }n n table {n font-size: 0.85rem;n }n n table th, table td {n padding: 0.5rem !important;n }n }n u003c/styleu003en u003cdiv class=u0022containeru0022u003en u003cdiv class=u0022headeru0022u003en u003cdiv class=u0022logou0022u003en u003cspan class=u0022logo-siteu0022u003eSiteu003c/spanu003eu003cspan class=u0022logo-zu0022u003ezu003c/spanu003en u003c/divu003en u003cp class=u0022taglineu0022u003eHelping businesses with their online presenceu003c/pu003en u003ch1u003eDivi 5 Upgrade Risk Assessmentu003c/h1u003en u003cpu003eAnswer a few questions about your site and get a risk score.u003c/pu003en u003cpu003eFind out if you should DIY or hire professional helpu003c/pu003en u003c/divu003enn u003c!u002du002d Section 1: Risk Factors u002du002du003en u003cdiv class=u0022sectionu0022u003en u003ch2u003e1. Assess Your Site's Risk Factorsu003c/h2u003en u003cpu003eCheck all that apply to your website:u003c/pu003enn u003cdiv class=u0022checkbox-groupu0022 id=u0022riskFactorsu0022u003en u003cdiv class=u0022input-groupu0022u003en u003clabel style=u0022color: var(u002du002dsitez-teal); font-weight: 600; margin-bottom: 1rem; display: block;u0022u003ePublished Pages/Postsu003c/labelu003en u003cdiv style=u0022display: flex; gap: 1.5rem; flex-wrap: wrap;u0022u003en u003cdiv style=u0022display: flex; align-items: center;u0022u003en u003cinput type=u0022radiou0022 name=u0022pagesu0022 id=u0022pages1u0022 value=u00221u0022 onchange=u0022calculateScore()u0022 style=u0022margin-right: 0.5rem;u0022u003en u003clabel for=u0022pages1u0022 style=u0022cursor: pointer; margin: 0;u0022u003eLess than 25u003c/labelu003en u003c/divu003en u003cdiv style=u0022display: flex; align-items: center;u0022u003en u003cinput type=u0022radiou0022 name=u0022pagesu0022 id=u0022pages2u0022 value=u00222u0022 onchange=u0022calculateScore()u0022 style=u0022margin-right: 0.5rem;u0022u003en u003clabel for=u0022pages2u0022 style=u0022cursor: pointer; margin: 0;u0022u003e26-50u003c/labelu003en u003c/divu003en u003cdiv style=u0022display: flex; align-items: center;u0022u003en u003cinput type=u0022radiou0022 name=u0022pagesu0022 id=u0022pages3u0022 value=u00223u0022 onchange=u0022calculateScore()u0022 style=u0022margin-right: 0.5rem;u0022u003en u003clabel for=u0022pages3u0022 style=u0022cursor: pointer; margin: 0;u0022u003e51+u003c/labelu003en u003c/divu003en u003c/divu003en u003c/divu003enn u003cdiv class=u0022input-groupu0022 style=u0022margin-top: 1.5rem;u0022u003en u003clabel style=u0022color: var(u002du002dsitez-teal); font-weight: 600; margin-bottom: 1rem; display: block;u0022u003eActive Pluginsu003c/labelu003en u003cdiv style=u0022display: flex; gap: 1.5rem; flex-wrap: wrap;u0022u003en u003cdiv style=u0022display: flex; align-items: center;u0022u003en u003cinput type=u0022radiou0022 name=u0022pluginsu0022 id=u0022plugins1u0022 value=u00221u0022 onchange=u0022calculateScore()u0022 style=u0022margin-right: 0.5rem;u0022u003en u003clabel for=u0022plugins1u0022 style=u0022cursor: pointer; margin: 0;u0022u003eLess than 20u003c/labelu003en u003c/divu003en u003cdiv style=u0022display: flex; align-items: center;u0022u003en u003cinput type=u0022radiou0022 name=u0022pluginsu0022 id=u0022plugins2u0022 value=u00222u0022 onchange=u0022calculateScore()u0022 style=u0022margin-right: 0.5rem;u0022u003en u003clabel for=u0022plugins2u0022 style=u0022cursor: pointer; margin: 0;u0022u003e21-30u003c/labelu003en u003c/divu003en u003cdiv style=u0022display: flex; align-items: center;u0022u003en u003cinput type=u0022radiou0022 name=u0022pluginsu0022 id=u0022plugins3u0022 value=u00223u0022 onchange=u0022calculateScore()u0022 style=u0022margin-right: 0.5rem;u0022u003en u003clabel for=u0022plugins3u0022 style=u0022cursor: pointer; margin: 0;u0022u003e31+u003c/labelu003en u003c/divu003en u003c/divu003en u003c/divu003enn u003cdiv class=u0022checkbox-itemu0022 style=u0022margin-top: 1.5rem;u0022u003en u003cinput type=u0022checkboxu0022 id=u0022risk2u0022 value=u00221u0022 onchange=u0022calculateScore()u0022u003en u003clabel for=u0022risk2u0022u003eE-commerce/WooCommerce functionalityu003c/labelu003en u003c/divu003en u003cdiv class=u0022checkbox-itemu0022u003en u003cinput type=u0022checkboxu0022 id=u0022risk3u0022 value=u00221u0022 onchange=u0022calculateScore()u0022u003en u003clabel for=u0022risk3u0022u003eMembership/subscription featuresu003c/labelu003en u003c/divu003en u003cdiv class=u0022checkbox-itemu0022u003en u003cinput type=u0022checkboxu0022 id=u0022risk4u0022 value=u00221u0022 onchange=u0022calculateScore()u0022u003en u003clabel for=u0022risk4u0022u003eCustom post typesu003c/labelu003en u003c/divu003en u003cdiv class=u0022checkbox-itemu0022u003en u003cinput type=u0022checkboxu0022 id=u0022risk5u0022 value=u00221u0022 onchange=u0022calculateScore()u0022u003en u003clabel for=u0022risk5u0022u003eMulti-site networku003c/labelu003en u003c/divu003en u003cdiv class=u0022checkbox-itemu0022u003en u003cinput type=u0022checkboxu0022 id=u0022risk6u0022 value=u00221u0022 onchange=u0022calculateScore()u0022u003en u003clabel for=u0022risk6u0022u003eThird-party integrations (APIs, CRMs)u003c/labelu003en u003c/divu003en u003cdiv class=u0022checkbox-itemu0022u003en u003cinput type=u0022checkboxu0022 id=u0022risk7u0022 value=u00221u0022 onchange=u0022calculateScore()u0022u003en u003clabel for=u0022risk7u0022u003eMore than 5 Divi plugins or extensionsu003c/labelu003en u003c/divu003en u003cdiv class=u0022checkbox-itemu0022u003en u003cinput type=u0022checkboxu0022 id=u0022risk8u0022 value=u00221u0022 onchange=u0022calculateScore()u0022u003en u003clabel for=u0022risk8u0022u003eProcesses paymentsu003c/labelu003en u003c/divu003en u003cdiv class=u0022checkbox-itemu0022u003en u003cinput type=u0022checkboxu0022 id=u0022risk_childthemeu0022 value=u00221u0022 onchange=u0022calculateScore()u0022u003en u003clabel for=u0022risk_childthemeu0022u003eCustom Divi child theme with PHP/CSS codeu003c/labelu003en u003c/divu003en u003cdiv class=u0022checkbox-itemu0022u003en u003cinput type=u0022checkboxu0022 id=u0022risk_themebuilderu0022 value=u00221u0022 onchange=u0022calculateScore()u0022u003en u003clabel for=u0022risk_themebuilderu0022u003eCustom Divi Theme Builder templates (header, footer or page layouts)u003c/labelu003en u003c/divu003en u003cdiv class=u0022checkbox-itemu0022u003en u003cinput type=u0022checkboxu0022 id=u0022risk9u0022 value=u00221u0022 onchange=u0022calculateScore()u0022u003en u003clabel for=u0022risk9u0022u003eI do NOT have automated daily backupsu003c/labelu003en u003c/divu003en u003c/divu003enn u003cdiv class=u0022score-displayu0022u003en u003cdiv class=u0022score-labelu0022u003eYour Risk Scoreu003c/divu003en u003cdiv class=u0022score-numberu0022 id=u0022scoreNumberu0022u003e0u003c/divu003en u003cdiv class=u0022score-labelu0022u003eout of 16u003c/divu003en u003cdiv class=u0022risk-levelu0022 id=u0022riskLevelu0022u003eLow Risku003c/divu003en u003c/divu003en u003c/divu003enn u003c!u002du002d Section 2: Downtime Calculator u002du002du003en u003cdiv class=u0022sectionu0022u003en u003ch2u003e2. Calculate Your Potential Downtime Costu003c/h2u003en u003cpu003eHelp us estimate what a failed DIY migration could cost you:u003c/pu003enn u003cdiv class=u0022input-groupu0022u003en u003clabel for=u0022revenueu0022u003eMonthly Website Revenue ($)u003c/labelu003en u003cdiv class=u0022input-helpu0022u003en u003cstrongu003eExamples by site type:u003c/strongu003en u003culu003en u003cliu003eBrochure/portfolio site: $0 (no direct revenue)u003c/liu003en u003cliu003eLead generation site: $2,000-$10,000 (estimated value of leads)u003c/liu003en u003cliu003eE-commerce site: $5,000-$50,000+ (actual sales)u003c/liu003en u003cliu003eMembership site: $1,000-$20,000 (subscriptions)u003c/liu003en u003cliu003eSaaS/service booking: $10,000-$100,000+u003c/liu003en u003c/ulu003en u003c/divu003en u003cinput type=u0022numberu0022 id=u0022revenueu0022 min=u00220u0022 value=u00220u0022 onchange=u0022calculateCosts()u0022u003en u003c/divu003enn u003cdiv class=u0022input-groupu0022u003en u003clabel for=u0022costsu0022u003eMonthly Site Costs ($)u003c/labelu003en u003cdiv class=u0022input-helpu0022u003en u003cstrongu003eTypical ranges:u003c/strongu003en u003culu003en u003cliu003eHosting: $10-$100/monthu003c/liu003en u003cliu003eMaintenance/monitoring: $0-$200/monthu003c/liu003en u003cliu003ePlugin licenses: $50-$200/monthu003c/liu003en u003cliu003eAverage total: $100-$500/monthu003c/liu003en u003c/ulu003en u003c/divu003en u003cinput type=u0022numberu0022 id=u0022costsu0022 min=u00220u0022 value=u0022100u0022 onchange=u0022calculateCosts()u0022u003en u003c/divu003enn u003cdiv class=u0022input-groupu0022u003en u003clabel for=u0022hourlyRateu0022u003eYour Hourly Rate ($)u003c/labelu003en u003cdiv class=u0022input-helpu0022u003en u003cstrongu003eWhat's your time worth?u003c/strongu003en u003culu003en u003cliu003eBusiness owner: $50-$200/houru003c/liu003en u003cliu003eMarketing manager: $40-$100/houru003c/liu003en u003cliu003eFreelancer: $50-$150/houru003c/liu003en u003cliu003eAgency owner: $100-$300/houru003c/liu003en u003c/ulu003en u003c/divu003en u003cinput type=u0022numberu0022 id=u0022hourlyRateu0022 min=u00220u0022 value=u0022100u0022 onchange=u0022calculateCosts()u0022u003en u003c/divu003enn u003cdiv class=u0022input-groupu0022u003en u003clabel for=u0022devRateu0022u003eDeveloper Emergency Rate ($)u003c/labelu003en u003cdiv class=u0022input-helpu0022u003en u003cstrongu003eIndustry averages (2026):u003c/strongu003en u003culu003en u003cliu003eJunior WordPress dev: $50-$75/houru003c/liu003en u003cliu003eMid-level WordPress dev: $75-$125/houru003c/liu003en u003cliu003eSenior/specialist: $125-$200/houru003c/liu003en u003cliu003eEmergency after-hours: Add 50-100%u003c/liu003en u003c/ulu003en u003c/divu003en u003cinput type=u0022numberu0022 id=u0022devRateu0022 min=u00220u0022 value=u0022100u0022 onchange=u0022calculateCosts()u0022u003en u003c/divu003enn u003cdiv id=u0022downtimeEstimateu0022 class=u0022input-helpu0022 style=u0022margin-top: 2rem; background: #fff3e0; border-color: #FF9800;u0022u003en u003c!u002du002d Populated by JavaScript u002du002du003en u003c/divu003enn u003cdiv class=u0022cost-breakdownu0022u003en u003ch3 style=u0022margin-top: 0;u0022u003eYour Potential DIY Costsu003c/h3u003en u003cdiv id=u0022costBreakdownu0022u003en u003c!u002du002d Populated by JavaScript u002du002du003en u003c/divu003en u003c/divu003en u003c/divu003enn u003c!u002du002d Section 3: Recommendation u002du002du003en u003cdiv id=u0022recommendationSectionu0022u003en u003c!u002du002d Populated by JavaScript u002du002du003en u003c/divu003enn u003c!u002du002d Section 4: Generate PDF u002du002du003en u003cdiv class=u0022sectionu0022 style=u0022text-align: center;u0022u003en u003ch2u003eGet Your Complete Assessment Reportu003c/h2u003en u003cpu003eDownload a PDF with your risk analysis, cost breakdown, and complete migration checklist.u003c/pu003en u003cbutton class=u0022btn btn-primaryu0022 onclick=u0022generatePDF()u0022 style=u0022font-size: 1.2rem; padding: 1.25rem 2.5rem;u0022u003en 📄 Generate PDF Reportn u003c/buttonu003en u003c/divu003enn u003c!u002du002d Footer u002du002du003en u003cdiv class=u0022footeru0022u003en u003ch3u003eSitez Incorporatedu003c/h3u003en u003cpu003eColorado Springs, Coloradou003c/pu003en u003cpu003eHelping businesses with their online presenceu003c/pu003en u003cp style=u0022margin-top: 1rem;u0022u003en u003cstrongu003e📧 Email:u003c/strongu003e tools@sitezinc.comu003cbru003en u003cstrongu003e🌐 Website:u003c/strongu003e u003ca href=u0022https://sitezinc.comu0022 style=u0022color: white;u0022u003esitezinc.comu003c/au003en u003c/pu003en u003c/divu003en u003c/divu003enn u003cscriptu003en let currentScore = 0;n let hasBackups = true;n let riskLevel = 'low';n let packageAddons = 0;n let addonsList = [];nn function calculateScore() {n // Get radio button valuesn const pagesRadio = document.querySelector('input[name=u0022pagesu0022]:checked');n const pluginsRadio = document.querySelector('input[name=u0022pluginsu0022]:checked');n n let pagesScore = pagesRadio ? parseInt(pagesRadio.value) : 0;n let pluginsScore = pluginsRadio ? parseInt(pluginsRadio.value) : 0;n n // Get checkbox valuesn const checkboxes = document.querySelectorAll('#riskFactors input[type=u0022checkboxu0022]:checked');n let checkboxScore = 0;n checkboxes.forEach(cb =u003e {n checkboxScore += parseInt(cb.value);n });n n currentScore = pagesScore + pluginsScore + checkboxScore;n n // Check if backup checkbox is checked (risk9 = no backups)n hasBackups = !document.getElementById('risk9').checked;n n // Calculate add-ons for professional packagen packageAddons = 0;n addonsList = [];n n // Custom child theme code: +$150n if (document.getElementById('risk_childtheme').checked) {n packageAddons += 150;n addonsList.push('Custom Child Theme Code Review: +$150');n }n n // Large site testing: +$100 if both pages=3 (51+) AND plugins=3 (31+)n if (pagesScore === 3 u0026u0026 pluginsScore === 3) {n packageAddons += 100;n addonsList.push('Large Site Testing (51+ pages and 31+ plugins): +$100');n }n n // Multisite handled elsewhere (not in this tool)n // After-hours handled elsewhere (not in this tool)n n // Determine risk level (out of 16 now)n if (currentScore u003c= 3) {n riskLevel = 'low';n } else if (currentScore u003c= 6) {n riskLevel = 'medium';n } else {n riskLevel = 'high';n }n n updateScoreDisplay();n calculateCosts();n }nn function updateScoreDisplay() {n document.getElementById('scoreNumber').textContent = currentScore;n n const levelEl = document.getElementById('riskLevel');n levelEl.className = 'risk-level';n n if (riskLevel === 'low') {n levelEl.textContent = 'Low Risk';n levelEl.classList.add('risk-low');n } else if (riskLevel === 'medium') {n levelEl.textContent = 'Medium Risk';n levelEl.classList.add('risk-medium');n } else {n levelEl.textContent = 'High Risk';n levelEl.classList.add('risk-high');n }n }nn function calculateCosts() {n const revenue = parseFloat(document.getElementById('revenue').value) || 0;n const costs = parseFloat(document.getElementById('costs').value) || 0;n const hourlyRate = parseFloat(document.getElementById('hourlyRate').value) || 0;n const devRate = parseFloat(document.getElementById('devRate').value) || 0;n n // Calculate downtime estimaten let baseHoursLow, baseHoursHigh;n n if (hasBackups) {n baseHoursLow = 1;n baseHoursHigh = 2;n } else {n baseHoursLow = 4;n baseHoursHigh = 8;n }n n // Add time based on complexityn if (riskLevel === 'medium') {n baseHoursHigh += 2;n } else if (riskLevel === 'high') {n baseHoursHigh += 4;n }n n // Display downtime estimaten const downtimeEl = document.getElementById('downtimeEstimate');n let backupNote = hasBackups n ? u0022✅ u003cstrongu003eYou have daily backupsu003c/strongu003e - Recovery time: 1-2 hours. You can quickly restore from yesterday's backup.u0022n : u0022⚠ u003cstrongu003eYou don't have daily backupsu003c/strongu003e - Recovery time: 4-8 hours. Without recent backups, you'll need to locate old backups, restore, test thoroughly, and potentially recreate recent content.u0022;n n if (riskLevel === 'medium') {n backupNote += u0022u003cbru003eu003cbru003e➕ u003cstrongu003eMedium complexity adds 2+ hoursu003c/strongu003e for debugging issues.u0022;n } else if (riskLevel === 'high') {n backupNote += u0022u003cbru003eu003cbru003e➕ u003cstrongu003eHigh complexity adds 4+ hoursu003c/strongu003e for serious debugging and testing.u0022;n }n n downtimeEl.innerHTML = `u003cstrongu003eEstimated Downtime:u003c/strongu003eu003cbru003e${backupNote}`;n n // Calculate costsn const revenuePerHour = revenue / 730;n n const lowRevenueLoss = revenuePerHour * baseHoursLow;n const highRevenueLoss = revenuePerHour * baseHoursHigh;n n const lowTimeCost = hourlyRate * baseHoursLow;n const highTimeCost = hourlyRate * baseHoursHigh;n n const lowDevCost = devRate * baseHoursLow;n const highDevCost = devRate * baseHoursHigh;n n const lowTotal = lowRevenueLoss + lowTimeCost + lowDevCost;n const highTotal = highRevenueLoss + highTimeCost + highDevCost;n n // Display breakdownn const breakdownEl = document.getElementById('costBreakdown');n breakdownEl.innerHTML = `n u003cdiv style=u0022display: grid; grid-template-columns: 1fr 1fr; gap: 2rem;u0022u003en u003cdivu003en u003ch4 style=u0022color: var(u002du002dsitez-teal); margin-bottom: 1rem;u0022u003eOptimistic Estimate (${baseHoursLow} hours)u003c/h4u003en u003cdiv class=u0022cost-rowu0022u003en u003cspanu003eLost Revenueu003c/spanu003en u003cspanu003e$${lowRevenueLoss.toFixed(0)}u003c/spanu003en u003c/divu003en u003cdiv class=u0022cost-rowu0022u003en u003cspanu003eYour Timeu003c/spanu003en u003cspanu003e$${lowTimeCost.toFixed(0)}u003c/spanu003en u003c/divu003en u003cdiv class=u0022cost-rowu0022u003en u003cspanu003eDeveloper Helpu003c/spanu003en u003cspanu003e$${lowDevCost.toFixed(0)}u003c/spanu003en u003c/divu003en u003cdiv class=u0022cost-rowu0022u003en u003cspanu003eTotalu003c/spanu003en u003cspanu003e$${lowTotal.toFixed(0)}u003c/spanu003en u003c/divu003en u003c/divu003en u003cdivu003en u003ch4 style=u0022color: var(u002du002dsitez-teal); margin-bottom: 1rem;u0022u003eRealistic Estimate (${baseHoursHigh} hours)u003c/h4u003en u003cdiv class=u0022cost-rowu0022u003en u003cspanu003eLost Revenueu003c/spanu003en u003cspanu003e$${highRevenueLoss.toFixed(0)}u003c/spanu003en u003c/divu003en u003cdiv class=u0022cost-rowu0022u003en u003cspanu003eYour Timeu003c/spanu003en u003cspanu003e$${highTimeCost.toFixed(0)}u003c/spanu003en u003c/divu003en u003cdiv class=u0022cost-rowu0022u003en u003cspanu003eDeveloper Helpu003c/spanu003en u003cspanu003e$${highDevCost.toFixed(0)}u003c/spanu003en u003c/divu003en u003cdiv class=u0022cost-rowu0022u003en u003cspanu003eTotalu003c/spanu003en u003cspanu003e$${highTotal.toFixed(0)}u003c/spanu003en u003c/divu003en u003c/divu003en u003c/divu003en `;n n updateRecommendation(lowTotal, highTotal);n }nn function updateRecommendation(lowCost, highCost) {n const recSection = document.getElementById('recommendationSection');n const hourlyRate = parseFloat(document.getElementById('hourlyRate').value) || 100;n const diyTimeCost = hourlyRate * 5.5; // 5-6 hours averagen const totalPackagePrice = 495 + packageAddons;n n // Guided package also gets large site testing add-onn const guidedBasePrice = 245;n const guidedAddons = (addonsList.some(a =u003e a.includes('Large Site Testing'))) ? 100 : 0;n const totalGuidedPrice = guidedBasePrice + guidedAddons;n n let html = '';n n // PRIMARY RECOMMENDATIONn html += 'u003cdiv class=u0022sectionu0022 style=u0022background: linear-gradient(135deg, #e8f5e9, #c8e6c9); padding: 2rem; border-radius: 12px; border-left: 6px solid #4CAF50;u0022u003e';n html += 'u003ch2 style=u0022color: var(u002du002dsitez-teal); margin-top: 0;u0022u003e✅ Your Recommended Optionu003c/h2u003e';n n if (riskLevel === 'low') {n html += `n u003ch3 style=u0022color: var(u002du002dsitez-teal);u0022u003eDIY Migration with Professional Checklistu003c/h3u003en u003cpu003eu003cstrongu003eYour site complexity: LOW (Score: ${currentScore}/16)u003c/strongu003eu003c/pu003en u003cpu003eu003cstrongu003eEstimated DIY time: 5-6 hoursu003c/strongu003eu003c/pu003en u003cpu003eu003cstrongu003ePotential downtime cost: $${lowCost.toFixed(0)} - $${highCost.toFixed(0)}u003c/strongu003eu003c/pu003en n u003cp style=u0022margin: 1.5rem 0;u0022u003eYour site is straightforward enough that you can likely handle this yourself IF you:u003c/pu003en u003cul class=u0022feature-listu0022u003en u003cliu003eFollow our step-by-step migration checklistu003c/liu003en u003cliu003eHave a staging environment for testingu003c/liu003en u003cliu003eCan dedicate 5-6 hours of focused timeu003c/liu003en u003cliu003eFeel comfortable troubleshooting basic issuesu003c/liu003en u003c/ulu003en n u003cp style=u0022margin: 1.5rem 0;u0022u003eu003cstrongu003eYour complete migration checklist is included in the PDF report.u003c/strongu003eu003c/pu003en `;n } else {n // Medium or High - recommend professional packagen const savingsVsDIY = diyTimeCost - totalPackagePrice;n n html += `n u003ch3 style=u0022color: var(u002du002dsitez-teal);u0022u003eProfessional Migration Packageu003c/h3u003en u003cpu003eu003cstrongu003eYour site complexity: ${riskLevel.toUpperCase()} (Score: ${currentScore}/16)u003c/strongu003eu003c/pu003en u003cpu003eu003cstrongu003ePotential DIY downtime cost: $${lowCost.toFixed(0)} - $${highCost.toFixed(0)}u003c/strongu003eu003c/pu003en n u003cdiv style=u0022background: white; padding: 1.5rem; border-radius: 8px; margin: 1.5rem 0;u0022u003en u003ch4 style=u0022color: var(u002du002dsitez-teal); margin-top: 0;u0022u003ePackage Pricingu003c/h4u003en u003cdiv style=u0022font-size: 1.1rem; margin: 1rem 0;u0022u003en u003cstrongu003eBase Package:u003c/strongu003e $495u003cbru003en `;n n if (addonsList.length u003e 0) {n addonsList.forEach(addon =u003e {n html += `u003cspan style=u0022color: var(u002du002dsitez-gray); margin-left: 1rem;u0022u003e+ ${addon}u003c/spanu003eu003cbru003e`;n });n html += `u003chr style=u0022margin: 1rem 0; border: none; border-top: 2px solid var(u002du002dsitez-teal);u0022u003e`;n html += `u003cstrong style=u0022font-size: 1.3rem; color: var(u002du002dsitez-teal);u0022u003eTotal Package: $${totalPackagePrice}u003c/strongu003e`;n } else {n html += `u003cstrong style=u0022font-size: 1.3rem; color: var(u002du002dsitez-teal);u0022u003eTotal: $495u003c/strongu003e`;n }n n html += `n u003c/divu003en u003c/divu003en n u003cp style=u0022margin: 1.5rem 0;u0022u003eu003cstrongu003eWhat you get:u003c/strongu003eu003c/pu003en u003cul class=u0022feature-listu0022u003en u003cliu003ePre-upgrade compatibility auditu003c/liu003en u003cliu003eStaging environment testingu003c/liu003en u003cliu003eIssues found u0026 fixed BEFORE going liveu003c/liu003en u003cliu003eScheduled deployment during your chosen windowu003c/liu003en u003cliu003ePerformance benchmarkingu003c/liu003en u003cliu003e30-day post-launch monitoringu003c/liu003en u003c/ulu003en n u003cp style=u0022font-weight: 600; color: var(u002du002dsitez-teal); margin-top: 1.5rem;u0022u003en Professional testing costs less than doing it yourself ($${totalPackagePrice} vs ~$${diyTimeCost.toFixed(0)} in your time)n ${savingsVsDIY u003e 0 ? ` and saves you $${savingsVsDIY.toFixed(0)}` : ''}.n u003c/pu003en n u003cdiv style=u0022margin-top: 2rem;u0022u003en u003cbutton class=u0022btn btn-primaryu0022 onclick=u0022window.location.href='https://sitezinc.com'u0022 style=u0022font-size: 1.1rem;u0022u003eSchedule Professional Migrationu003c/buttonu003en u003c/divu003en `;n }n n html += 'u003c/divu003e'; // End recommended sectionn n // OTHER OPTIONS SECTIONn html += 'u003cdiv class=u0022sectionu0022u003e';n html += 'u003ch2 style=u0022color: var(u002du002dsitez-teal);u0022u003eOther Migration Optionsu003c/h2u003e';n html += 'u003cp style=u0022margin-bottom: 2rem;u0022u003eCompare all four approaches to migrating to Divi 5:u003c/pu003e';n n // Comparison tablen html += `n u003cdiv style=u0022overflow-x: auto;u0022u003en u003ctable style=u0022width: 100%; border-collapse: collapse; background: white;u0022u003en u003ctheadu003en u003ctr style=u0022background: var(u002du002dsitez-teal); color: white;u0022u003en u003cth style=u0022padding: 1rem; text-align: left; border: 1px solid #ddd;u0022u003eOptionu003c/thu003en u003cth style=u0022padding: 1rem; text-align: left; border: 1px solid #ddd;u0022u003eTime Investmentu003c/thu003en u003cth style=u0022padding: 1rem; text-align: left; border: 1px solid #ddd;u0022u003eYour Costu003c/thu003en u003cth style=u0022padding: 1rem; text-align: left; border: 1px solid #ddd;u0022u003eRisk Levelu003c/thu003en u003c/tru003en u003c/theadu003en u003ctbodyu003en u003ctru003en u003ctd style=u0022padding: 1rem; border: 1px solid #ddd;u0022u003eu003cstrongu003eu0022Go For Itu0022u003c/strongu003eu003cbru003eu003cspan style=u0022font-size: 0.9rem; color: var(u002du002dsitez-gray);u0022u003eClick button in August, hope for bestu003c/spanu003eu003c/tdu003en u003ctd style=u0022padding: 1rem; border: 1px solid #ddd;u0022u003e15 minutesu003c/tdu003en u003ctd style=u0022padding: 1rem; border: 1px solid #ddd;u0022u003e$0 upfrontu003cbru003eu003cspan style=u0022font-size: 0.9rem; color: var(u002du002dsitez-red);u0022u003e$${lowCost.toFixed(0)}-$${highCost.toFixed(0)} if issuesu003c/spanu003eu003c/tdu003en u003ctd style=u0022padding: 1rem; border: 1px solid #ddd;u0022u003eu003cspan style=u0022color: var(u002du002dsitez-red); font-weight: 600;u0022u003eHIGH RISKu003c/spanu003eu003cbru003eu003cspan style=u0022font-size: 0.9rem;u0022u003eFind problems liveu003c/spanu003eu003c/tdu003en u003c/tru003en u003ctr style=u0022background: #f9f9f9;u0022u003en u003ctd style=u0022padding: 1rem; border: 1px solid #ddd;u0022u003eu003cstrongu003eDIY with Checklistu003c/strongu003eu003cbru003eu003cspan style=u0022font-size: 0.9rem; color: var(u002du002dsitez-gray);u0022u003eFollow our process yourselfu003c/spanu003eu003c/tdu003en u003ctd style=u0022padding: 1rem; border: 1px solid #ddd;u0022u003e5-6 hoursu003c/tdu003en u003ctd style=u0022padding: 1rem; border: 1px solid #ddd;u0022u003e$${diyTimeCost.toFixed(0)} in your timeu003cbru003eu003cspan style=u0022font-size: 0.9rem; color: var(u002du002dsitez-gray);u0022u003e(${hourlyRate}/hr × 5.5 hours)u003c/spanu003eu003c/tdu003en u003ctd style=u0022padding: 1rem; border: 1px solid #ddd;u0022u003eu003cspan style=u0022color: #FF9800; font-weight: 600;u0022u003eMEDIUM RISKu003c/spanu003eu003cbru003eu003cspan style=u0022font-size: 0.9rem;u0022u003eFind issues in stagingu003c/spanu003eu003c/tdu003en u003c/tru003en u003ctru003en u003ctd style=u0022padding: 1rem; border: 1px solid #ddd;u0022u003eu003cstrongu003eGuided Migrationu003c/strongu003eu003cbru003eu003cspan style=u0022font-size: 0.9rem; color: var(u002du002dsitez-gray);u0022u003eYou do work, we overseeu003c/spanu003eu003c/tdu003en u003ctd style=u0022padding: 1rem; border: 1px solid #ddd;u0022u003e3-4 hoursu003cbru003eu003cspan style=u0022font-size: 0.9rem; color: var(u002du002dsitez-gray);u0022u003e+ our 2 hours testingu003c/spanu003eu003c/tdu003en u003ctd style=u0022padding: 1rem; border: 1px solid #ddd;u0022u003e$${totalGuidedPrice} + $${(hourlyRate * 3.5).toFixed(0)} in your timeu003cbru003eu003cspan style=u0022font-size: 0.9rem; color: var(u002du002dsitez-gray);u0022u003eTotal: ~$${(totalGuidedPrice + hourlyRate * 3.5).toFixed(0)}u003c/spanu003eu003c/tdu003en u003ctd style=u0022padding: 1rem; border: 1px solid #ddd;u0022u003eu003cspan style=u0022color: #4CAF50; font-weight: 600;u0022u003eLOW RISKu003c/spanu003eu003cbru003eu003cspan style=u0022font-size: 0.9rem;u0022u003eExpert oversightu003c/spanu003eu003c/tdu003en u003c/tru003en u003ctr style=u0022background: ${riskLevel === 'low' ? '#f9f9f9' : 'linear-gradient(135deg, #e8f5e9, #c8e6c9)'};u0022u003en u003ctd style=u0022padding: 1rem; border: 1px solid #ddd;u0022u003eu003cstrongu003eProfessional Migrationu003c/strongu003e${riskLevel !== 'low' ? ' u003cspan style=u0022color: var(u002du002dsitez-teal);u0022u003e? RECOMMENDEDu003c/spanu003e' : ''}u003cbru003eu003cspan style=u0022font-size: 0.9rem; color: var(u002du002dsitez-gray);u0022u003eWe do everythingu003c/spanu003eu003c/tdu003en u003ctd style=u0022padding: 1rem; border: 1px solid #ddd;u0022u003e0 hoursu003cbru003eu003cspan style=u0022font-size: 0.9rem; color: var(u002du002dsitez-gray);u0022u003eWe handle it allu003c/spanu003eu003c/tdu003en u003ctd style=u0022padding: 1rem; border: 1px solid #ddd;u0022u003eu003cstrongu003e$${totalPackagePrice}u003c/strongu003eu003cbru003eu003cspan style=u0022font-size: 0.9rem; color: var(u002du002dsitez-gray);u0022u003e$495 base${packageAddons u003e 0 ? ` + $${packageAddons} add-ons` : ''}u003c/spanu003eu003c/tdu003en u003ctd style=u0022padding: 1rem; border: 1px solid #ddd;u0022u003eu003cspan style=u0022color: #4CAF50; font-weight: 600;u0022u003eLOWEST RISKu003c/spanu003eu003cbru003eu003cspan style=u0022font-size: 0.9rem;u0022u003eProfessional testingu003c/spanu003eu003c/tdu003en u003c/tru003en u003c/tbodyu003en u003c/tableu003en u003c/divu003en `;n n html += 'u003cp style=u0022margin-top: 2rem; font-style: italic; color: var(u002du002dsitez-gray);u0022u003eNeed help anyway? Contact Sitez: u003ca href=u0022https://sitezinc.comu0022 style=u0022color: var(u002du002dsitez-teal);u0022u003esitezinc.comu003c/au003eu003c/pu003e';n html += 'u003c/divu003e'; // End other options sectionn n recSection.innerHTML = html;n }nn async function generatePDF() {n const { jsPDF } = window.jspdf;n const pdf = new jsPDF('p', 'mm', 'a4');n n const pageWidth = pdf.internal.pageSize.getWidth();n const pageHeight = pdf.internal.pageSize.getHeight();n const margin = 10;n const usableWidth = pageWidth - (margin * 2);n let currentY = margin;n n // Helper function to capture an element and add to PDFn async function addElementToPDF(element, forceNewPage = false) {n if (!element || element.offsetHeight === 0) return;n n const canvas = await html2canvas(element, {n scale: 2,n useCORS: true,n logging: false,n backgroundColor: '#ffffff'n });n n const imgData = canvas.toDataURL('image/jpeg', 0.95);n const imgWidth = usableWidth;n const imgHeight = (canvas.height * imgWidth) / canvas.width;n n // Check if we need a new pagen if (forceNewPage || (currentY + imgHeight u003e pageHeight - margin u0026u0026 currentY u003e margin + 10)) {n pdf.addPage();n currentY = margin;n }n n pdf.addImage(imgData, 'JPEG', margin, currentY, imgWidth, imgHeight);n currentY += imgHeight + 5; // 5mm gap between sectionsn }n n // Add header manually (with red 'z')n pdf.setFillColor(26, 83, 92);n pdf.rect(0, 0, pageWidth, 40, 'F');n pdf.setFontSize(24);n pdf.setTextColor(255, 255, 255);n pdf.setFont('helvetica', 'bold');n pdf.text('Site', 20, 27);n n const siteWidth = pdf.getTextWidth('Site');n pdf.setTextColor(255, 0, 0);n pdf.text('z', 20 + siteWidth, 27);n n pdf.setFont('helvetica', 'normal');n pdf.setFontSize(10);n pdf.setTextColor(255, 255, 255);n pdf.text('Divi 5 Upgrade Risk Assessment Report', 20, 36);n n currentY = 45;n pdf.setTextColor(0, 0, 0);n n // Add datesn const today = new Date().toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric' });n const validUntil = new Date(Date.now() + 30*24*60*60*1000).toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric' });n n pdf.setFontSize(10);n pdf.text(`Generated: ${today}`, 20, currentY);n currentY += 7;n pdf.text(`Valid Through: ${validUntil}`, 20, currentY);n currentY += 12;n n // Capture all sectionsn const allSections = document.querySelectorAll('.section');n n // Section 1: Risk factors + scoren await addElementToPDF(allSections[0]);n n // Section 2: Downtime calculator n await addElementToPDF(allSections[1], true); // New page for calculatorn n // Recommendation section (includes the comparison table)n const recSection = document.getElementById('recommendationSection');n if (recSection u0026u0026 recSection.children.length u003e 0) {n await addElementToPDF(recSection, true); // Force new page for recommendationsn }n n // Add footer on BOTTOM of last pagen const finalY = pageHeight - 50; // 50mm from bottomn pdf.setFillColor(26, 83, 92);n pdf.rect(0, finalY, pageWidth, 50, 'F');n pdf.setTextColor(255, 255, 255);n pdf.setFontSize(18);n pdf.setFont('helvetica', 'bold');n pdf.text('Sitez Incorporated', pageWidth/2, finalY + 15, { align: 'center' });n pdf.setFontSize(10);n pdf.setFont('helvetica', 'normal');n pdf.text('Helping businesses with their online presence', pageWidth/2, finalY + 23, { align: 'center' });n pdf.text('Colorado Springs, Colorado', pageWidth/2, finalY + 30, { align: 'center' });n pdf.text('tools@sitezinc.com | sitezinc.com', pageWidth/2, finalY + 37, { align: 'center' });n n // Saven pdf.save('Divi5-Assessment-Report.pdf');n }nn // Initialize on loadn window.addEventListener('load', () =u003e {n calculateScore();n });n u003c/scriptu003e