{"id":1881,"date":"2026-05-10T05:43:00","date_gmt":"2026-05-10T05:43:00","guid":{"rendered":"https:\/\/digipalate.com\/staging\/?page_id=1881"},"modified":"2026-05-19T22:07:21","modified_gmt":"2026-05-19T22:07:21","slug":"pricing-calculator","status":"publish","type":"page","link":"https:\/\/digipalate.com\/staging\/pricing-calculator\/","title":{"rendered":"Pricing Calculator"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1881\" class=\"elementor elementor-1881\">\n\t\t\t\t<div class=\"elementor-element elementor-element-dp_pricing_calc_section e-con-full e-flex e-con e-parent\" data-id=\"dp_pricing_calc_section\" data-element_type=\"container\" data-e-type=\"container\" id=\"pricing-calculator\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-dp_pricing_calc elementor-widget elementor-widget-html\" data-id=\"dp_pricing_calc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- Digital Palate Quote Calculator \u2014 Elementor HTML Widget Embed -->\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Barlow:wght@300;400;500;600;700&family=Barlow+Condensed:wght@500;600;700&display=swap\" rel=\"stylesheet\">\n\n<style>\n.dp-qc *, .dp-qc *::before, .dp-qc *::after { box-sizing: border-box; margin: 0; padding: 0; }\n\n.dp-qc {\n  --bg:        #2b2b2b;\n  --bg-card:   #333333;\n  --bg-input:  #3a3a3a;\n  --border:    #484848;\n  --green:     #6b7c3f;\n  --green-lt:  #c8d68f;\n  --green-dim: #4e5c2e;\n  --white:     #ffffff;\n  --grey:      #ffffff;\n  --muted:     #ffffff;\n  --radius:    8px;\n\n  font-family: 'Barlow', sans-serif;\n  background: var(--bg);\n  color: var(--white);\n  padding: 56px 20px 60px;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  width: 100%;\n}\n\n\/* Item 5: Selection highlighting *\/\n.dp-qc ::selection { background: var(--green); color: var(--white); }\n.dp-qc ::-moz-selection { background: var(--green); color: var(--white); }\n\n\/* Header *\/\n.dp-qc-header {\n  text-align: center;\n  max-width: 580px;\n  width: 100%;\n  margin-bottom: 44px;\n}\n.dp-qc-eyebrow {\n  font-family: 'Barlow Condensed', sans-serif;\n  font-size: 0.92rem;\n  font-weight: 600;\n  letter-spacing: 0.18em;\n  text-transform: uppercase;\n  color: var(--green-lt);\n  margin-bottom: 14px;\n}\n.dp-qc-header h2 {\n  font-family: 'Barlow Condensed', sans-serif;\n  font-size: clamp(2rem, 5vw, 3rem);\n  font-weight: 700;\n  line-height: 1.1;\n  color: var(--white);\n  margin-bottom: 14px;\n  text-transform: uppercase;\n  letter-spacing: 0.02em;\n}\n.dp-qc-header p {\n  font-size: 1.12rem;\n  line-height: 1.65;\n  color: var(--grey);\n  font-weight: 300;\n}\n\n\/* Progress *\/\n.dp-qc-prog-wrap {\n  width: 100%;\n  max-width: 680px;\n  margin-bottom: 24px;\n}\n.dp-qc-prog-meta {\n  display: flex;\n  justify-content: space-between;\n  font-size: 0.86rem;\n  font-weight: 600;\n  letter-spacing: 0.1em;\n  text-transform: uppercase;\n  color: var(--muted);\n  margin-bottom: 8px;\n}\n.dp-qc-prog-track {\n  height: 3px;\n  background: var(--border);\n  border-radius: 99px;\n  overflow: hidden;\n}\n.dp-qc-prog-fill {\n  height: 100%;\n  background: linear-gradient(90deg, var(--green-dim), var(--green-lt));\n  border-radius: 99px;\n  transition: width 0.5s cubic-bezier(.4,0,.2,1);\n}\n\n\/* Card *\/\n.dp-qc-card {\n  background: var(--bg-card);\n  border-radius: 12px;\n  padding: 40px;\n  width: 100%;\n  max-width: 680px;\n  border: 1px solid var(--border);\n}\n\n\/* Steps *\/\n.dp-qc-step { display: none; }\n.dp-qc-step.dp-on { display: block; animation: dpqcIn 0.28s ease; }\n@keyframes dpqcIn {\n  from { opacity: 0; transform: translateY(8px); }\n  to   { opacity: 1; transform: translateY(0); }\n}\n\n\/* Section labels *\/\n.dp-qc-label {\n  font-size: 0.84rem;\n  font-weight: 600;\n  letter-spacing: 0.16em;\n  text-transform: uppercase;\n  color: var(--green-lt);\n  margin-bottom: 8px;\n}\n.dp-qc-title {\n  font-family: 'Barlow Condensed', sans-serif;\n  font-size: 2rem;\n  font-weight: 600;\n  letter-spacing: 0.02em;\n  color: var(--white);\n  margin-bottom: 6px;\n  text-transform: uppercase;\n}\n.dp-qc-sub {\n  font-size: 1.02rem;\n  color: var(--muted);\n  margin-bottom: 28px;\n  line-height: 1.55;\n  font-weight: 300;\n  display: flex;\n  align-items: flex-start;\n  gap: 6px;\n  flex-wrap: wrap;\n}\n.dp-qc-sub-text { display: inline; }\n\n\/* Expandable domain info *\/\n.dp-qc-info-toggle {\n  color: var(--green-lt);\n  font-size: 0.98rem;\n  cursor: pointer;\n  font-weight: 400;\n  display: inline-flex;\n  align-items: center;\n  gap: 4px;\n  margin-bottom: 4px;\n}\n.dp-qc-info-toggle:hover { text-decoration: underline; }\n.dp-qc-info-body {\n  background: var(--bg-input);\n  border: 1px solid var(--border);\n  border-radius: var(--radius);\n  padding: 14px 16px;\n  font-size: 0.94rem;\n  color: var(--grey);\n  line-height: 1.55;\n  font-weight: 300;\n  margin-top: 12px;\n  animation: dpqcIn 0.25s ease;\n}\n\n\/* Domain note area -- fixed height to prevent layout shift *\/\n.dp-qc-note-area {\n  min-height: 85px;\n  margin-top: 14px;\n}\n.dp-qc-note-plain {\n  font-size: 0.98rem;\n  color: var(--muted);\n  line-height: 1.55;\n  font-weight: 300;\n  transition: opacity 0.2s ease;\n}\n\n\/* Item 8: Inline link in tier cards *\/\n.dp-qc-link { color: var(--green-lt); text-decoration: underline; cursor: pointer; }\n.dp-qc-link:hover { color: var(--white); }\n\n\/* Item 9: Recommended badge *\/\n.dp-qc-rec {\n  font-size: 0.78rem;\n  font-weight: 600;\n  color: var(--green-lt);\n  margin-left: 6px;\n  text-transform: uppercase;\n  letter-spacing: 0.05em;\n}\n\n\/* Item 11: Service credits info section *\/\n.dp-qc-credits-info {\n  background: rgba(200,214,143,0.08);\n  border: 1px solid rgba(200,214,143,0.2);\n  border-radius: var(--radius);\n  padding: 12px 16px;\n  font-size: 0.94rem;\n  color: var(--grey);\n  line-height: 1.5;\n  margin-bottom: 20px;\n  font-weight: 300;\n}\n.dp-qc-credits-info a {\n  color: var(--green-lt);\n  text-decoration: underline;\n  text-decoration-color: rgba(200,214,143,0.4);\n}\n.dp-qc-credits-info a:hover { text-decoration-color: var(--green-lt); }\n\n\/* Item 14: Summary add-on sub-items *\/\n.dp-qc-sum-addon {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  padding: 8px 0 8px 16px;\n  font-size: 0.94rem;\n  border-bottom: 1px solid rgba(72,72,72,0.5);\n}\n.dp-qc-sum-addon:last-child { border-bottom: none; }\n.dp-qc-sum-addon .dp-qc-sum-lbl { font-size: 0.94rem; }\n.dp-qc-sum-addon .dp-qc-sum-val { font-size: 0.94rem; }\n\n\/* Item 13: Ongoing rate display *\/\n.dp-qc-ongoing {\n  text-align: center;\n  font-size: 1rem;\n  color: var(--grey);\n  margin-top: 10px;\n  font-weight: 300;\n}\n.dp-qc-ongoing strong { color: var(--green-lt); font-weight: 600; }\n\n\/* Pill buttons *\/\n.dp-qc-pills {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 8px;\n  margin-bottom: 8px;\n}\n.dp-qc-pill {\n  padding: 11px 22px;\n  border: 1.5px solid var(--border);\n  border-radius: 99px;\n  background: transparent;\n  cursor: pointer;\n  font-family: 'Barlow', sans-serif;\n  font-size: 1rem;\n  font-weight: 500;\n  color: var(--grey);\n  transition: all 0.18s ease;\n  white-space: nowrap;\n}\n.dp-qc-pill:hover { border-color: var(--green-lt); color: var(--white); }\n.dp-qc-pill.dp-on {\n  background: var(--green);\n  border-color: var(--green);\n  color: var(--white);\n}\n\n\/* Tier cards *\/\n.dp-qc-grid {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 12px;\n  margin-bottom: 8px;\n}\n.dp-qc-tier {\n  border: 1.5px solid var(--border);\n  border-radius: var(--radius);\n  padding: 20px;\n  cursor: pointer;\n  transition: all 0.2s ease;\n  background: var(--bg-input);\n  text-align: left;\n  font-family: 'Barlow', sans-serif;\n  width: 100%;\n}\n.dp-qc-tier:hover { border-color: var(--green-lt); transform: translateY(-2px); }\n.dp-qc-tier.dp-on {\n  border-color: var(--green-lt);\n  background: var(--green-dim);\n}\n.dp-qc-tier.dp-on .dp-qc-tier-name,\n.dp-qc-tier.dp-on .dp-qc-tier-price { color: var(--white); }\n.dp-qc-tier.dp-on .dp-qc-tier-desc { color: #e0e8c8; }\n.dp-qc-tier.dp-on .dp-qc-link { color: #e0e8c8; }\n.dp-qc-tier-name { font-weight: 600; font-size: 1.08rem; color: var(--white); margin-bottom: 4px; }\n.dp-qc-tier-desc { font-size: 0.88rem; color: var(--muted); margin-bottom: 12px; line-height: 1.4; font-weight: 300; }\n.dp-qc-tier-price {\n  font-family: 'Barlow Condensed', sans-serif;\n  font-size: 1.7rem;\n  font-weight: 700;\n  color: var(--white);\n  letter-spacing: 0.02em;\n}\n\n\/* Migration page stepper *\/\n.dp-qc-pages-wrap {\n  margin-top: 14px;\n  padding: 16px;\n  background: var(--bg-input);\n  border: 1px solid var(--border);\n  border-radius: var(--radius);\n  display: none;\n  animation: dpqcIn 0.25s ease;\n}\n.dp-qc-pages-wrap.dp-on { display: block; }\n.dp-qc-pages-lbl {\n  font-size: 0.98rem;\n  color: var(--grey);\n  margin-bottom: 12px;\n  font-weight: 500;\n}\n.dp-qc-stepper {\n  display: flex;\n  align-items: center;\n  gap: 16px;\n  margin-bottom: 10px;\n}\n.dp-qc-step-btn {\n  width: 36px;\n  height: 36px;\n  border-radius: 50%;\n  border: 1.5px solid var(--border);\n  background: var(--bg-card);\n  color: var(--white);\n  font-size: 1.2rem;\n  font-weight: 600;\n  cursor: pointer;\n  transition: all 0.18s ease;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  font-family: 'Barlow', sans-serif;\n}\n.dp-qc-step-btn:hover { border-color: var(--green-lt); }\n.dp-qc-step-btn:disabled { opacity: 0.3; cursor: not-allowed; }\n.dp-qc-pages-val {\n  font-family: 'Barlow Condensed', sans-serif;\n  font-size: 1.6rem;\n  font-weight: 700;\n  color: var(--white);\n  min-width: 32px;\n  text-align: center;\n}\n.dp-qc-pages-suffix {\n  font-size: 0.98rem;\n  color: var(--muted);\n  font-weight: 300;\n}\n.dp-qc-pages-cost {\n  font-size: 0.94rem;\n  color: var(--green-lt);\n  font-weight: 500;\n}\n\n\/* Callout *\/\n.dp-qc-callout {\n  background: rgba(200,214,143,0.1);\n  border: 1px solid rgba(200,214,143,0.3);\n  border-radius: var(--radius);\n  padding: 13px 16px;\n  font-size: 0.96rem;\n  color: var(--green-lt);\n  line-height: 1.55;\n  margin-top: 12px;\n  display: flex;\n  gap: 10px;\n  align-items: flex-start;\n  animation: dpqcIn 0.25s ease;\n}\n.dp-qc-callout-icon { flex-shrink: 0; font-size: 0.95rem; margin-top: 1px; }\n\n\/* Add-ons *\/\n.dp-qc-addons { display: flex; flex-direction: column; gap: 8px; }\n.dp-qc-addon {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  padding: 13px 16px;\n  border: 1.5px solid var(--border);\n  border-radius: var(--radius);\n  cursor: pointer;\n  transition: all 0.18s ease;\n  background: var(--bg-input);\n  user-select: none;\n}\n.dp-qc-addon:hover { border-color: var(--green-lt); }\n.dp-qc-addon.dp-on { border-color: var(--green-lt); background: rgba(200,214,143,0.08); }\n.dp-qc-chk {\n  width: 20px; height: 20px;\n  border: 1.5px solid var(--border);\n  border-radius: 4px;\n  flex-shrink: 0;\n  display: flex; align-items: center; justify-content: center;\n  transition: all 0.18s ease;\n  font-size: 0.7rem;\n  color: transparent;\n}\n.dp-qc-addon.dp-on .dp-qc-chk { background: var(--green); border-color: var(--green); color: var(--white); }\n.dp-qc-addon-main { flex: 1; min-width: 0; }\n.dp-qc-addon-label { font-size: 1.02rem; font-weight: 500; color: var(--grey); margin-bottom: 2px; }\n.dp-qc-addon.dp-on .dp-qc-addon-label { color: var(--white); }\n.dp-qc-addon-desc { font-size: 0.86rem; color: var(--muted); font-weight: 300; line-height: 1.4; }\n.dp-qc-addon-cost {\n  font-family: 'Barlow Condensed', sans-serif;\n  font-size: 1.18rem;\n  color: var(--white);\n  font-weight: 700;\n  white-space: nowrap;\n  letter-spacing: 0.02em;\n}\n.dp-qc-addon.dp-on .dp-qc-addon-cost { color: var(--green-lt); }\n\n\/* Billing toggle *\/\n.dp-qc-toggle {\n  display: inline-flex;\n  background: var(--bg-input);\n  border: 1px solid var(--border);\n  border-radius: 99px;\n  padding: 4px;\n  margin-bottom: 20px;\n  gap: 2px;\n}\n.dp-qc-tog-btn {\n  padding: 10px 22px;\n  border-radius: 99px;\n  border: none;\n  background: transparent;\n  cursor: pointer;\n  font-family: 'Barlow', sans-serif;\n  font-size: 0.98rem;\n  font-weight: 500;\n  color: var(--muted);\n  transition: all 0.2s ease;\n}\n.dp-qc-tog-btn.dp-on { background: var(--green); color: var(--white); }\n\n\/* Plan cards *\/\n.dp-qc-plans { display: flex; flex-direction: column; gap: 8px; }\n.dp-qc-plan {\n  border: 1.5px solid var(--border);\n  border-radius: var(--radius);\n  padding: 15px 18px;\n  cursor: pointer;\n  transition: all 0.2s ease;\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  font-family: 'Barlow', sans-serif;\n  background: var(--bg-input);\n  width: 100%;\n  text-align: left;\n}\n.dp-qc-plan:hover { border-color: var(--green-lt); }\n.dp-qc-plan.dp-on { border-color: var(--green-lt); background: rgba(200,214,143,0.08); }\n.dp-qc-plan-left { display: flex; flex-direction: column; gap: 2px; min-width: 0; padding-right: 12px; }\n.dp-qc-plan-name { font-weight: 600; font-size: 1.06rem; color: var(--white); }\n.dp-qc-plan-credits {\n  font-size: 0.88rem;\n  color: var(--muted);\n  font-weight: 300;\n  display: flex;\n  align-items: center;\n  gap: 4px;\n  flex-wrap: wrap;\n}\n.dp-qc-plan-right { text-align: right; flex-shrink: 0; padding-left: 16px; }\n.dp-qc-plan-price {\n  font-family: 'Barlow Condensed', sans-serif;\n  font-size: 1.5rem;\n  font-weight: 700;\n  color: var(--white);\n}\n.dp-qc-plan.dp-on .dp-qc-plan-price { color: var(--white); }\n.dp-qc-plan-per { font-size: 0.82rem; color: var(--muted); font-weight: 300; }\n\n\/* Summary *\/\n.dp-qc-sum-row {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  padding: 13px 0;\n  border-bottom: 1px solid var(--border);\n  font-size: 1.02rem;\n}\n.dp-qc-sum-row:last-of-type { border-bottom: none; }\n.dp-qc-sum-lbl { color: var(--muted); font-weight: 300; }\n.dp-qc-sum-val { font-weight: 600; color: var(--white); }\n.dp-qc-sum-val.dp-zero { color: var(--muted); font-weight: 300; font-style: italic; }\n.dp-qc-sum-total {\n  display: flex;\n  justify-content: space-between;\n  align-items: baseline;\n  margin-top: 20px;\n  padding-top: 20px;\n  border-top: 1.5px solid var(--green-lt);\n}\n.dp-qc-sum-total-lbl {\n  font-family: 'Barlow Condensed', sans-serif;\n  font-size: 1.1rem;\n  font-weight: 600;\n  text-transform: uppercase;\n  letter-spacing: 0.08em;\n  color: var(--grey);\n}\n.dp-qc-sum-total-val {\n  font-family: 'Barlow Condensed', sans-serif;\n  font-size: 2.4rem;\n  font-weight: 700;\n  color: var(--white);\n  letter-spacing: 0.02em;\n}\n.dp-qc-disclaimer {\n  font-size: 0.86rem;\n  color: var(--muted);\n  margin-top: 14px;\n  line-height: 1.55;\n  text-align: center;\n  font-style: italic;\n}\n\n.dp-qc-sum-breakdown {\n  background: var(--bg-input);\n  border-radius: var(--radius);\n  padding: 6px 16px;\n  margin-top: 4px;\n  border: 1px solid var(--border);\n}\n\n\/* Reset button *\/\n.dp-qc-reset {\n  display: block;\n  margin: 20px auto 0;\n  padding: 11px 30px;\n  border: 1.5px solid var(--border);\n  border-radius: 99px;\n  background: transparent;\n  cursor: pointer;\n  font-family: 'Barlow', sans-serif;\n  font-size: 0.96rem;\n  font-weight: 500;\n  color: var(--muted);\n  transition: all 0.18s ease;\n}\n.dp-qc-reset:hover { border-color: var(--green-lt); color: var(--white); }\n\n\/* Nav *\/\n.dp-qc-nav {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  margin-top: 32px;\n  gap: 12px;\n}\n.dp-qc-back {\n  padding: 12px 26px;\n  border: 1.5px solid var(--border);\n  border-radius: 99px;\n  background: transparent;\n  cursor: pointer;\n  font-family: 'Barlow', sans-serif;\n  font-size: 1rem;\n  font-weight: 500;\n  color: var(--muted);\n  transition: all 0.18s ease;\n}\n.dp-qc-back:hover { border-color: var(--grey); color: var(--white); }\n.dp-qc-next {\n  padding: 14px 38px;\n  border: none;\n  border-radius: 99px;\n  background: var(--green);\n  color: var(--white);\n  cursor: pointer;\n  font-family: 'Barlow Condensed', sans-serif;\n  font-size: 1.12rem;\n  font-weight: 700;\n  letter-spacing: 0.1em;\n  text-transform: uppercase;\n  transition: all 0.2s ease;\n  flex: 1;\n  max-width: 260px;\n}\n.dp-qc-next:hover { background: #7a8d48; transform: translateY(-1px); }\n.dp-qc-next:disabled { opacity: 0.35; cursor: not-allowed; transform: none; }\n\n\/* Running estimate bar *\/\n.dp-qc-bar {\n  width: 100%;\n  max-width: 680px;\n  background: rgba(200,214,143,0.1);\n  border: 1px solid rgba(200,214,143,0.25);\n  border-radius: 8px;\n  padding: 14px 24px;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  gap: 16px;\n  font-size: 0.98rem;\n  margin-bottom: 16px;\n}\n.dp-qc-bar.dp-on { display: flex; animation: dpqcIn 0.3s ease; }\n.dp-qc-bar-lbl { color: var(--muted); font-weight: 300; }\n.dp-qc-bar-val {\n  font-family: 'Barlow Condensed', sans-serif;\n  font-size: 1.6rem;\n  font-weight: 700;\n  color: var(--green-lt);\n}\n.dp-qc-bar-sub { color: var(--muted); font-size: 0.88rem; }\n\n\/* Mobile *\/\n@media (max-width: 520px) {\n  .dp-qc-card { padding: 24px 18px; }\n  .dp-qc-grid { grid-template-columns: 1fr; }\n  .dp-qc-tog-btn { padding: 9px 14px; font-size: 0.92rem; }\n  .dp-qc-next { max-width: none; }\n}\n\n\/* Quick nav links *\/\n.dp-qc-nav-links {\n  text-align: center;\n  margin-bottom: 28px;\n  font-size: 1.05rem;\n  color: var(--muted);\n  font-weight: 300;\n}\n.dp-qc-nav-links a {\n  color: var(--green-lt);\n  font-weight: 400;\n  text-decoration: none;\n  border-bottom: 1px solid var(--border);\n  padding-bottom: 2px;\n  transition: all 0.18s ease;\n  cursor: pointer;\n}\n.dp-qc-nav-links a:hover {\n  color: var(--green-lt);\n  border-bottom-color: var(--green-lt);\n}\n<\/style>\n\n<div class=\"dp-qc\" id=\"dp-qc\">\n\n  <!-- Header -->\n  <div class=\"dp-qc-header\">\n    <div class=\"dp-qc-eyebrow\">Pricing Calculator<\/div>\n    <h2>What Will Your Website Cost?<\/h2>\n    <p>No guesswork, no surprise invoices. Answer a few questions and get a transparent cost estimate covering your build, add-ons, and hosting plan. No email required.<\/p>\n  <\/div>\n\n  <!-- Quick links -->\n  <div class=\"dp-qc-nav-links\">\n    Learn more about our <a href=\"\/pricing\/\" onclick=\"if(!event.ctrlKey&&!event.metaKey){dpqcNavPricing();return false;}\">plans<\/a> or our <a href=\"\/our-process\/\" onclick=\"if(!event.ctrlKey&&!event.metaKey){dpqcNavProcess();return false;}\">process<\/a>\n  <\/div>\n\n  <!-- Progress -->\n  <div class=\"dp-qc-prog-wrap\">\n    <div class=\"dp-qc-prog-meta\">\n      <span id=\"dpqc-step-lbl\">Step 1 of 4<\/span>\n      <span id=\"dpqc-step-name\">Domain<\/span>\n    <\/div>\n    <div class=\"dp-qc-prog-track\">\n      <div class=\"dp-qc-prog-fill\" id=\"dpqc-prog\" style=\"width:25%\"><\/div>\n    <\/div>\n  <\/div>\n\n  <!-- Running estimate bar -->\n  <div class=\"dp-qc-bar dp-on\" id=\"dpqc-bar\">\n    <span class=\"dp-qc-bar-lbl\">Running estimate<\/span>\n    <span class=\"dp-qc-bar-val\" id=\"dpqc-bar-val\">$0<\/span>\n    <span class=\"dp-qc-bar-sub\" id=\"dpqc-bar-sub\">one-time costs<\/span>\n  <\/div>\n\n  <!-- Card -->\n  <div class=\"dp-qc-card\">\n\n    <!-- STEP 1: Domain -->\n    <div class=\"dp-qc-step dp-on\" id=\"dpqc-s1\">\n      <div class=\"dp-qc-label\">Step 1 &#8212; Getting Started<\/div>\n      <div class=\"dp-qc-title\">Do You Have a Domain?<\/div>\n      <div class=\"dp-qc-sub\" style=\"color:var(--white); margin-bottom:4px;\"><span class=\"dp-qc-sub-text\">Your web address. We handle the technical setup so it points to your site.<\/span><\/div>\n      <div class=\"dp-qc-info-toggle\" onclick=\"dpqcToggleInfo('dpqc-domain-info', this)\">What&#8217;s a domain? <span class=\"dp-qc-info-arrow\">&#9656;<\/span><\/div>\n      <div class=\"dp-qc-info-body\" id=\"dpqc-domain-info\" style=\"display:none\">\n        A domain is the address people type into their browser to visit your site. Think of it as your online street address. You register one through a domain registrar (like Google Domains or Namecheap) for a small yearly fee, usually $10 to $20. Once registered, we connect it to your website so visitors land in the right place. If you don&#8217;t have one yet, no problem -- we can help you find and set one up.\n      <\/div>\n      <div style=\"margin-bottom:22px\"><\/div>\n      <div class=\"dp-qc-pills\" id=\"dpqc-domain\">\n        <button class=\"dp-qc-pill\" data-val=\"own\" data-fee=\"30\" data-reg=\"0\" onclick=\"dpqcDomain(this)\">Yes, I already own one<\/button>\n        <button class=\"dp-qc-pill\" data-val=\"new\" data-fee=\"30\" data-reg=\"15\" onclick=\"dpqcDomain(this)\">No, I need to purchase one<\/button>\n        <button class=\"dp-qc-pill\" data-val=\"unsure\" data-fee=\"30\" data-reg=\"0\" onclick=\"dpqcDomain(this)\">Not sure yet<\/button>\n      <\/div>\n      <div class=\"dp-qc-note-area\">\n        <div class=\"dp-qc-note-plain\" id=\"dpqc-domain-note\" style=\"opacity:0\">\n          <span id=\"dpqc-domain-note-text\"><\/span>\n        <\/div>\n      <\/div>\n      <div class=\"dp-qc-nav\">\n        <div><\/div>\n        <button class=\"dp-qc-next\" id=\"dpqc-n1\" onclick=\"dpqcGo(2)\" disabled>Continue<\/button>\n      <\/div>\n    <\/div>\n\n    <!-- STEP 2: Website Tier -->\n    <div class=\"dp-qc-step\" id=\"dpqc-s2\">\n      <div class=\"dp-qc-label\">Step 2 &#8212; Build Size<\/div>\n      <div class=\"dp-qc-title\">Choose Your Package<\/div>\n      <div class=\"dp-qc-sub\"><span class=\"dp-qc-sub-text\">All packages include a mobile-friendly design, SEO foundation, and full admin access, giving you complete control to make any changes you want.<\/span><\/div>\n      <div class=\"dp-qc-grid\" id=\"dpqc-tier\">\n        <button class=\"dp-qc-tier\" data-val=\"125\" data-mode=\"build\" data-pages=\"1\" onclick=\"dpqcTier(this)\">\n          <div class=\"dp-qc-tier-name\">Home<\/div>\n          <div class=\"dp-qc-tier-desc\">1 page &#8212; Home with an email submission. Best for individuals and side hustles.<\/div>\n          <div class=\"dp-qc-tier-price\">$125<\/div>\n        <\/button>\n        <button class=\"dp-qc-tier\" data-val=\"375\" data-mode=\"build\" data-pages=\"3\" onclick=\"dpqcTier(this)\">\n          <div class=\"dp-qc-tier-name\">Business<\/div>\n          <div class=\"dp-qc-tier-desc\">3 pages &#8212; Home, Services, Contact. Great for most small businesses.<\/div>\n          <div class=\"dp-qc-tier-price\">$375<\/div>\n        <\/button>\n        <button class=\"dp-qc-tier\" data-val=\"600\" data-mode=\"build\" data-pages=\"5\" onclick=\"dpqcTier(this)\">\n          <div class=\"dp-qc-tier-name\">Business Pro<\/div>\n          <div class=\"dp-qc-tier-desc\">5+ pages &#8212; Custom layout for established businesses. Includes a free consultation to align on direction and objectives.<\/div>\n          <div class=\"dp-qc-tier-price\">$600+<\/div>\n        <\/button>\n        <button class=\"dp-qc-tier\" data-val=\"0\" data-mode=\"migration\" onclick=\"dpqcTier(this)\">\n          <div class=\"dp-qc-tier-name\">I Have a Site<\/div>\n          <div class=\"dp-qc-tier-desc\">Pricing scales with complexity. Small WordPress to WordPress migrations start at $25, but <span class=\"dp-qc-link\" onclick=\"event.stopPropagation();dpqcNavContact()\">contact us<\/span> for an exact price.<\/div>\n          <div class=\"dp-qc-tier-price\">From $25<\/div>\n        <\/button>\n      <\/div>\n\n      <!-- Migration page count stepper -->\n      <div class=\"dp-qc-pages-wrap\" id=\"dpqc-pages-wrap\">\n        <div class=\"dp-qc-pages-lbl\">How many pages does your existing site have?<\/div>\n        <div class=\"dp-qc-stepper\">\n          <button class=\"dp-qc-step-btn\" id=\"dpqc-pages-minus\" onclick=\"dpqcPages(-1)\" type=\"button\">&#8722;<\/button>\n          <span class=\"dp-qc-pages-val\" id=\"dpqc-pages-val\">3<\/span>\n          <span class=\"dp-qc-pages-suffix\">pages<\/span>\n          <button class=\"dp-qc-step-btn\" id=\"dpqc-pages-plus\" onclick=\"dpqcPages(1)\" type=\"button\">+<\/button>\n        <\/div>\n        <div class=\"dp-qc-pages-cost\">Migration estimate: <span id=\"dpqc-pages-cost\">$75<\/span><\/div>\n      <\/div>\n\n      <div class=\"dp-qc-nav\">\n        <button class=\"dp-qc-back\" onclick=\"dpqcGo(1)\">Back<\/button>\n        <button class=\"dp-qc-next\" id=\"dpqc-n2\" onclick=\"dpqcGo(3)\" disabled>Continue<\/button>\n      <\/div>\n    <\/div>\n\n    <!-- STEP 3: Add-ons (reordered by price, with recommendations) -->\n    <div class=\"dp-qc-step\" id=\"dpqc-s3\">\n      <div class=\"dp-qc-label\">Step 3 &#8212; Launch Add-Ons<\/div>\n      <div class=\"dp-qc-title\">Anything Else at Launch?<\/div>\n      <div class=\"dp-qc-sub\"><span class=\"dp-qc-sub-text\">Optional services we can fold into your build. Pick anything that sounds useful, or skip this step entirely.<\/span><\/div>\n      <div class=\"dp-qc-addons\" id=\"dpqc-addons\">\n        <div class=\"dp-qc-addon\" data-cost=\"30\" onclick=\"dpqcAddon(this)\">\n          <div class=\"dp-qc-chk\">&#10003;<\/div>\n          <div class=\"dp-qc-addon-main\">\n            <div class=\"dp-qc-addon-label\">Social Media Links<\/div>\n            <div class=\"dp-qc-addon-desc\">Connect your accounts so visitors can find and follow you<\/div>\n          <\/div>\n          <div class=\"dp-qc-addon-cost\">$30<\/div>\n        <\/div>\n        <div class=\"dp-qc-addon\" data-cost=\"30\" onclick=\"dpqcAddon(this)\">\n          <div class=\"dp-qc-chk\">&#10003;<\/div>\n          <div class=\"dp-qc-addon-main\">\n            <div class=\"dp-qc-addon-label\">Customer Reviews Section<\/div>\n            <div class=\"dp-qc-addon-desc\">Display testimonials prominently on your site<\/div>\n          <\/div>\n          <div class=\"dp-qc-addon-cost\">$30<\/div>\n        <\/div>\n        <div class=\"dp-qc-addon\" data-cost=\"45\" onclick=\"dpqcAddon(this)\">\n          <div class=\"dp-qc-chk\">&#10003;<\/div>\n          <div class=\"dp-qc-addon-main\">\n            <div class=\"dp-qc-addon-label\">Domain Email Setup<span class=\"dp-qc-rec\">* Recommended<\/span><\/div>\n            <div class=\"dp-qc-addon-desc\">Use you@yourbusiness.com instead of @gmail.com. Ongoing subscription fees apply through the email provider of your choice.<\/div>\n          <\/div>\n          <div class=\"dp-qc-addon-cost\">$45<\/div>\n        <\/div>\n        <div class=\"dp-qc-addon\" data-cost=\"45\" onclick=\"dpqcAddon(this)\">\n          <div class=\"dp-qc-chk\">&#10003;<\/div>\n          <div class=\"dp-qc-addon-main\">\n            <div class=\"dp-qc-addon-label\">Extra Contact Form<\/div>\n            <div class=\"dp-qc-addon-desc\">Add another form on a different page (quote requests, inquiries, etc.)<\/div>\n          <\/div>\n          <div class=\"dp-qc-addon-cost\">$45<\/div>\n        <\/div>\n        <div class=\"dp-qc-addon\" data-cost=\"60\" onclick=\"dpqcAddon(this)\">\n          <div class=\"dp-qc-chk\">&#10003;<\/div>\n          <div class=\"dp-qc-addon-main\">\n            <div class=\"dp-qc-addon-label\">Blog Page Configuration<\/div>\n            <div class=\"dp-qc-addon-desc\">Ready-to-publish blog layout for posts and updates<\/div>\n          <\/div>\n          <div class=\"dp-qc-addon-cost\">$60<\/div>\n        <\/div>\n        <div class=\"dp-qc-addon\" data-cost=\"90\" onclick=\"dpqcAddon(this)\">\n          <div class=\"dp-qc-chk\">&#10003;<\/div>\n          <div class=\"dp-qc-addon-main\">\n            <div class=\"dp-qc-addon-label\">Google Business Profile<span class=\"dp-qc-rec\">* Recommended<\/span><\/div>\n            <div class=\"dp-qc-addon-desc\">Get listed on Google Maps, appear in local search results, and collect customer reviews in one place<\/div>\n          <\/div>\n          <div class=\"dp-qc-addon-cost\">$90<\/div>\n        <\/div>\n        <div class=\"dp-qc-addon\" data-cost=\"0\" data-per-page=\"20\" id=\"dpqc-seo-addon\" onclick=\"dpqcAddon(this)\">\n          <div class=\"dp-qc-chk\">&#10003;<\/div>\n          <div class=\"dp-qc-addon-main\">\n            <div class=\"dp-qc-addon-label\">SEO Foundation<span class=\"dp-qc-rec\">* Recommended<\/span><\/div>\n            <div class=\"dp-qc-addon-desc\">Search engine groundwork applied across every page (priced per page)<\/div>\n          <\/div>\n          <div class=\"dp-qc-addon-cost\" id=\"dpqc-seo-cost\">$20\/page<\/div>\n        <\/div>\n      <\/div>\n      <div class=\"dp-qc-nav\">\n        <button class=\"dp-qc-back\" onclick=\"dpqcGo(2)\">Back<\/button>\n        <button class=\"dp-qc-next\" onclick=\"dpqcGo(4)\">Continue<\/button>\n      <\/div>\n    <\/div>\n\n    <!-- STEP 4: Subscription Plan (item 10: swapped label\/title, item 11: credits info, item 12: 5% annual) -->\n    <div class=\"dp-qc-step\" id=\"dpqc-s4\">\n      <div class=\"dp-qc-label\">Step 4 &#8212; Monthly Plan<\/div>\n      <div class=\"dp-qc-title\">Hosting and Support<\/div>\n      <div class=\"dp-qc-sub\">\n        <span class=\"dp-qc-sub-text\">All plans include managed hosting. Higher tiers include service credits each month.<\/span>\n      <\/div>\n\n      <div class=\"dp-qc-credits-info\">\n        Service credits let you request changes to your site, from quick fixes like swapping an image to bigger updates like adding a new page. Higher-tier plans include more credits each month, and unused credits roll over up to the cap. Need more? Additional credits can be purchased anytime for extra work. <a href=\"#\" onclick=\"dpqcNavCredits();return false;\">Learn more about service credits<\/a>\n      <\/div>\n\n      <div class=\"dp-qc-toggle\">\n        <button class=\"dp-qc-tog-btn dp-on\" id=\"dpqc-mo\" onclick=\"dpqcBilling('monthly')\">Monthly<\/button>\n        <button class=\"dp-qc-tog-btn\" id=\"dpqc-yr\" onclick=\"dpqcBilling('annual')\">Annual (save 5%)<\/button>\n      <\/div>\n\n      <div class=\"dp-qc-plans\" id=\"dpqc-plans\">\n        <div class=\"dp-qc-plan\" data-monthly=\"12\" data-annual=\"137\" data-name=\"Basic\" onclick=\"dpqcPlan(this)\">\n          <div class=\"dp-qc-plan-left\">\n            <div class=\"dp-qc-plan-name\">Basic<\/div>\n            <div class=\"dp-qc-plan-credits\">Hosting only &#183; no credits included<\/div>\n          <\/div>\n          <div class=\"dp-qc-plan-right\">\n            <div class=\"dp-qc-plan-price\" id=\"dpqc-p0\">$12<\/div>\n            <div class=\"dp-qc-plan-per\">\/month<\/div>\n          <\/div>\n        <\/div>\n        <div class=\"dp-qc-plan\" data-monthly=\"17\" data-annual=\"194\" data-name=\"Starter\" onclick=\"dpqcPlan(this)\">\n          <div class=\"dp-qc-plan-left\">\n            <div class=\"dp-qc-plan-name\">Starter<\/div>\n            <div class=\"dp-qc-plan-credits\">1 credit\/mo - caps at 2<\/div>\n          <\/div>\n          <div class=\"dp-qc-plan-right\">\n            <div class=\"dp-qc-plan-price\" id=\"dpqc-p1\">$17<\/div>\n            <div class=\"dp-qc-plan-per\">\/month<\/div>\n          <\/div>\n        <\/div>\n        <div class=\"dp-qc-plan\" data-monthly=\"35\" data-annual=\"399\" data-name=\"Essentials\" onclick=\"dpqcPlan(this)\">\n          <div class=\"dp-qc-plan-left\">\n            <div class=\"dp-qc-plan-name\">Essentials<\/div>\n            <div class=\"dp-qc-plan-credits\">2 credits\/mo - caps at 6<\/div>\n          <\/div>\n          <div class=\"dp-qc-plan-right\">\n            <div class=\"dp-qc-plan-price\" id=\"dpqc-p2\">$35<\/div>\n            <div class=\"dp-qc-plan-per\">\/month<\/div>\n          <\/div>\n        <\/div>\n        <div class=\"dp-qc-plan\" data-monthly=\"65\" data-annual=\"741\" data-name=\"Growth\" onclick=\"dpqcPlan(this)\">\n          <div class=\"dp-qc-plan-left\">\n            <div class=\"dp-qc-plan-name\">Growth<\/div>\n            <div class=\"dp-qc-plan-credits\">5 credits\/mo - caps at 20<\/div>\n          <\/div>\n          <div class=\"dp-qc-plan-right\">\n            <div class=\"dp-qc-plan-price\" id=\"dpqc-p3\">$65<\/div>\n            <div class=\"dp-qc-plan-per\">\/month<\/div>\n          <\/div>\n        <\/div>\n        <div class=\"dp-qc-plan\" data-monthly=\"110\" data-annual=\"1254\" data-name=\"Pro\" onclick=\"dpqcPlan(this)\">\n          <div class=\"dp-qc-plan-left\">\n            <div class=\"dp-qc-plan-name\">Pro<\/div>\n            <div class=\"dp-qc-plan-credits\">10 credits\/mo - caps at 40<\/div>\n          <\/div>\n          <div class=\"dp-qc-plan-right\">\n            <div class=\"dp-qc-plan-price\" id=\"dpqc-p4\">$110<\/div>\n            <div class=\"dp-qc-plan-per\">\/month<\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"dp-qc-callout\" id=\"dpqc-annual-note\" style=\"display:none; margin-top:14px\">\n        <span class=\"dp-qc-callout-icon\">&#128161;<\/span>\n        <span>Annual plans lock in your rate and save you 5%. Your estimate above reflects the full annual cost.<\/span>\n      <\/div>\n\n      <div class=\"dp-qc-nav\">\n        <button class=\"dp-qc-back\" onclick=\"dpqcGo(3)\">Back<\/button>\n        <button class=\"dp-qc-next\" id=\"dpqc-n4\" onclick=\"dpqcGo(5)\" disabled>See My Estimate<\/button>\n      <\/div>\n    <\/div>\n\n    <!-- STEP 5: Summary (item 13: off-the-ground pricing, item 14: addon sub-items) -->\n    <div class=\"dp-qc-step\" id=\"dpqc-s5\">\n      <div class=\"dp-qc-label\">Your Estimate<\/div>\n      <div class=\"dp-qc-title\">Here&#8217;s What It Takes to Get Started<\/div>\n\n      <div class=\"dp-qc-sum-breakdown\" id=\"dpqc-rows\"><\/div>\n\n      <div class=\"dp-qc-sum-total\">\n        <div class=\"dp-qc-sum-total-lbl\" id=\"dpqc-total-lbl\">Total to Launch<\/div>\n        <div class=\"dp-qc-sum-total-val\" id=\"dpqc-grand\"><\/div>\n      <\/div>\n      <div class=\"dp-qc-ongoing\" id=\"dpqc-ongoing\"><\/div>\n      <div class=\"dp-qc-disclaimer\">This is an estimate only. Final pricing confirmed before any work begins.<\/div>\n\n      <div style=\"margin-top:24px; display:flex; flex-direction:column; align-items:center; gap:16px;\">\n        <button class=\"dp-qc-next\" style=\"width:100%; max-width:none;\"\n                onclick=\"dpqcStartProject()\">Let&#8217;s Get Started<\/button>\n        <div style=\"display:flex; justify-content:center; gap:32px;\">\n          <span class=\"dp-qc-link\" style=\"font-size:0.96rem; font-weight:400;\" onclick=\"dpqcGo(4)\">&#8592; Back<\/span>\n          <span class=\"dp-qc-link\" style=\"font-size:0.96rem; font-weight:400;\" onclick=\"dpqcReset()\">Start Over<\/span>\n        <\/div>\n      <\/div>\n    <\/div>\n\n  <\/div>\n\n\n<\/div>\n\n<script>\n(function() {\n  var _apiLink = document.querySelector('link[rel=\"https:\/\/api.w.org\/\"]');\n  var _siteBase = _apiLink ? _apiLink.href.replace(\/wp-json\\\/?$\/, '') : '\/';\n\n  var S = {\n    domain: null,\n    domainFee: 0,\n    domainReg: 0,\n    tier: 0,\n    tierMode: null,\n    tierPages: 0,\n    migrationPages: 3,\n    addons: 0,\n    addonsList: [],\n    planMonthly: 0,\n    planAnnual: 0,\n    planName: null,\n    billing: 'monthly',\n    currentStep: 1\n  };\n\n  var monthlyRates = [12,17,35,65,110];\n  var ANNUAL_DISCOUNT = 0.95;\n  var perIds = ['dpqc-p0','dpqc-p1','dpqc-p2','dpqc-p3','dpqc-p4'];\n  var PER_PAGE = 25;\n  var SEO_PER_PAGE = 20;\n\n  function getAnnual(mo) { return Math.round(mo * 12 * ANNUAL_DISCOUNT); }\n  var annualRates = monthlyRates.map(getAnnual);\n\n  \/\/ Navigation helpers\n  window.dpqcNavContact = function() { window.location.href = _siteBase + 'contact\/'; };\n  window.dpqcNavCredits = function() { window.location.href = _siteBase + 'service-credits\/'; };\n  window.dpqcNavProcess = function() { window.location.href = _siteBase + 'our-process\/'; };\n  window.dpqcNavPricing = function() { window.location.href = _siteBase + 'pricing\/'; };\n\n  \/\/ Toggle expandable info sections\n  window.dpqcToggleInfo = function(id, toggle) {\n    var el = document.getElementById(id);\n    if (!el) return;\n    var showing = el.style.display !== 'none';\n    el.style.display = showing ? 'none' : 'block';\n    var arrow = toggle.querySelector('.dp-qc-info-arrow');\n    if (arrow) arrow.textContent = showing ? '\u25b8' : '\u25be';\n  };\n\n  \/\/ Close tooltips on outside click\n  document.addEventListener('click', function() {\n    document.querySelectorAll('.dp-qc-tip.dp-tip-on').forEach(function(t) { t.classList.remove('dp-tip-on'); });\n  });\n\n  \/\/ Domain selection\n  window.dpqcDomain = function(el) {\n    document.querySelectorAll('#dpqc-domain .dp-qc-pill').forEach(function(b) { b.classList.remove('dp-on'); });\n    el.classList.add('dp-on');\n    S.domain = el.dataset.val;\n    S.domainFee = parseInt(el.dataset.fee);\n    S.domainReg = parseInt(el.dataset.reg) || 0;\n\n    var note = document.getElementById('dpqc-domain-note');\n    var noteText = document.getElementById('dpqc-domain-note-text');\n    if (S.domain === 'own') {\n      noteText.textContent = 'Transferring your existing domain to point to your new site is a $30 service fee. We coordinate with your current registrar so nothing breaks.';\n    } else if (S.domain === 'new') {\n      noteText.textContent = \"We'll help you find the right domain name and get it registered. Our setup fee is $30. We'll also handle the first year of domain registration ($15), which is included in your estimate.\";\n    } else {\n      noteText.textContent = \"No worries, we can figure this out together if you decide to move forward. Keep in mind that domain registration runs about $10 to $20 per year (paid to the registrar), which is separate from our $30 setup assistance. We'll include the $30 in your estimate for now.\";\n    }\n    note.style.opacity = '1';\n\n    var n = document.getElementById('dpqc-n1');\n    if (n) n.disabled = false;\n    dpqcBar();\n  };\n\n  \/\/ Update SEO addon pricing based on page count\n  function updateSeoPrice() {\n    var pages = S.tierMode === 'migration' ? S.migrationPages : S.tierPages;\n    if (pages < 1) pages = 1;\n    var cost = pages * SEO_PER_PAGE;\n    var seoAddon = document.getElementById('dpqc-seo-addon');\n    var seoCostEl = document.getElementById('dpqc-seo-cost');\n    if (seoAddon) {\n      seoAddon.dataset.cost = cost;\n      if (seoCostEl) seoCostEl.textContent = '$' + cost;\n    }\n    recalcAddons();\n  }\n\n  function recalcAddons() {\n    S.addons = 0;\n    S.addonsList = [];\n    document.querySelectorAll('#dpqc-addons .dp-qc-addon.dp-on').forEach(function(a) {\n      var cost = parseInt(a.dataset.cost) || 0;\n      var labelEl = a.querySelector('.dp-qc-addon-label');\n      var label = labelEl ? labelEl.textContent.replace(\/\\* Recommended\/g, '').trim() : '';\n      S.addons += cost;\n      S.addonsList.push({ label: label, cost: cost });\n    });\n  }\n\n  \/\/ Tier selection\n  window.dpqcTier = function(el) {\n    document.querySelectorAll('#dpqc-tier .dp-qc-tier').forEach(function(c) { c.classList.remove('dp-on'); });\n    el.classList.add('dp-on');\n    S.tierMode = el.dataset.mode;\n\n    var pagesWrap = document.getElementById('dpqc-pages-wrap');\n    if (S.tierMode === 'migration') {\n      pagesWrap.classList.add('dp-on');\n      S.tier = S.migrationPages * PER_PAGE;\n      S.tierPages = S.migrationPages;\n      updatePagesDisplay();\n    } else {\n      pagesWrap.classList.remove('dp-on');\n      S.tier = parseInt(el.dataset.val);\n      S.tierPages = parseInt(el.dataset.pages) || 1;\n    }\n\n    updateSeoPrice();\n    var n = document.getElementById('dpqc-n2');\n    if (n) n.disabled = false;\n    dpqcBar();\n  };\n\n  \/\/ Migration page stepper\n  window.dpqcPages = function(delta) {\n    var next = S.migrationPages + delta;\n    if (next < 1 || next > 25) return;\n    S.migrationPages = next;\n    if (S.tierMode === 'migration') {\n      S.tier = S.migrationPages * PER_PAGE;\n      S.tierPages = S.migrationPages;\n    }\n    updatePagesDisplay();\n    updateSeoPrice();\n    dpqcBar();\n  };\n\n  function updatePagesDisplay() {\n    document.getElementById('dpqc-pages-val').textContent = S.migrationPages;\n    document.getElementById('dpqc-pages-cost').textContent = '$' + (S.migrationPages * PER_PAGE);\n    document.getElementById('dpqc-pages-minus').disabled = (S.migrationPages <= 1);\n    document.getElementById('dpqc-pages-plus').disabled = (S.migrationPages >= 25);\n  }\n\n  \/\/ Add-on toggle\n  window.dpqcAddon = function(el) {\n    el.classList.toggle('dp-on');\n    recalcAddons();\n    dpqcBar();\n  };\n\n  \/\/ Plan selection\n  window.dpqcPlan = function(el) {\n    document.querySelectorAll('#dpqc-plans .dp-qc-plan').forEach(function(c) { c.classList.remove('dp-on'); });\n    el.classList.add('dp-on');\n    S.planMonthly = parseInt(el.dataset.monthly);\n    S.planAnnual  = parseInt(el.dataset.annual);\n    S.planName    = el.dataset.name;\n    var n = document.getElementById('dpqc-n4');\n    if (n) n.disabled = false;\n    dpqcBar();\n  };\n\n  \/\/ Billing toggle\n  window.dpqcBilling = function(type) {\n    S.billing = type;\n    document.getElementById('dpqc-mo').classList.toggle('dp-on', type==='monthly');\n    document.getElementById('dpqc-yr').classList.toggle('dp-on', type==='annual');\n    document.getElementById('dpqc-annual-note').style.display = type==='annual' ? 'flex' : 'none';\n    var pers = document.querySelectorAll('.dp-qc-plan-per');\n    pers.forEach(function(p) { p.textContent = type==='annual' ? '\/year' : '\/month'; });\n    perIds.forEach(function(id,i) {\n      var el = document.getElementById(id);\n      if (el) el.textContent = type==='annual' ? '$'+annualRates[i].toLocaleString() : '$'+monthlyRates[i];\n    });\n    dpqcBar();\n  };\n\n  \/\/ Calculate \"off the ground\" total (one-time costs + first billing period)\n  function dpqcCalc() {\n    var planCost = S.billing === 'annual' ? S.planAnnual : S.planMonthly;\n    return S.tier + S.addons + S.domainFee + S.domainReg + planCost;\n  }\n\n  function fmt(n) { return '$' + n.toLocaleString(); }\n\n  \/\/ Running estimate bar\n  function dpqcBar() {\n    var total = dpqcCalc();\n    var bar = document.getElementById('dpqc-bar');\n    var barSub = document.getElementById('dpqc-bar-sub');\n    document.getElementById('dpqc-bar-val').textContent = fmt(total);\n    if (barSub) {\n      if (S.planMonthly > 0) {\n        barSub.textContent = S.billing === 'annual' ? 'including first year' : 'including first month';\n      } else {\n        barSub.textContent = 'one-time costs';\n      }\n    }\n    if (S.currentStep === 5) {\n      bar.classList.remove('dp-on');\n    } else {\n      bar.classList.add('dp-on');\n    }\n  }\n\n  \/\/ Build summary page\n  function buildSummary() {\n    var planCost = S.billing === 'annual' ? S.planAnnual : S.planMonthly;\n    var total = S.tier + S.addons + S.domainFee + S.domainReg + planCost;\n\n    \/\/ Build\/migration row\n    var buildLbl, buildVal;\n    if (S.tierMode === 'migration') {\n      buildLbl = 'Site migration (' + S.migrationPages + ' page' + (S.migrationPages === 1 ? '' : 's') + ')';\n      buildVal = fmt(S.tier);\n    } else {\n      buildLbl = 'Website build';\n      buildVal = S.tier > 0 ? fmt(S.tier) : null;\n    }\n\n    \/\/ Domain row\n    var domainLbl;\n    if (S.domain === 'own') {\n      domainLbl = 'Domain transfer';\n    } else if (S.domain === 'new') {\n      domainLbl = 'Domain setup assistance';\n    } else {\n      domainLbl = 'Domain setup assistance';\n    }\n\n    \/\/ Plan row label\n    var planLbl = (S.planName || 'Hosting') + ' plan';\n    if (S.billing === 'annual') {\n      planLbl += ' (first year)';\n    } else {\n      planLbl += ' (first month)';\n    }\n\n    var html = '';\n\n    \/\/ Build row\n    html += '<div class=\"dp-qc-sum-row\">';\n    html += '<span class=\"dp-qc-sum-lbl\">' + buildLbl + '<\/span>';\n    html += '<span class=\"dp-qc-sum-val' + (!buildVal ? ' dp-zero' : '') + '\">' + (buildVal || 'None selected') + '<\/span>';\n    html += '<\/div>';\n\n    \/\/ Add-on sub-items\n    if (S.addonsList.length > 0) {\n      html += '<div class=\"dp-qc-sum-row\" style=\"border-bottom:none;padding-bottom:0\">';\n      html += '<span class=\"dp-qc-sum-lbl\">Launch add-ons<\/span>';\n      html += '<span class=\"dp-qc-sum-val\">' + fmt(S.addons) + '<\/span>';\n      html += '<\/div>';\n      S.addonsList.forEach(function(a) {\n        html += '<div class=\"dp-qc-sum-addon\">';\n        html += '<span class=\"dp-qc-sum-lbl\">' + a.label + '<\/span>';\n        html += '<span class=\"dp-qc-sum-val\">' + fmt(a.cost) + '<\/span>';\n        html += '<\/div>';\n      });\n    } else {\n      html += '<div class=\"dp-qc-sum-row\">';\n      html += '<span class=\"dp-qc-sum-lbl\">Launch add-ons<\/span>';\n      html += '<span class=\"dp-qc-sum-val dp-zero\">None selected<\/span>';\n      html += '<\/div>';\n    }\n\n    \/\/ Domain row\n    html += '<div class=\"dp-qc-sum-row' + (S.domainReg > 0 ? '\" style=\"border-bottom:none;padding-bottom:0' : '') + '\">';\n    html += '<span class=\"dp-qc-sum-lbl\">' + domainLbl + '<\/span>';\n    html += '<span class=\"dp-qc-sum-val\">' + fmt(S.domainFee) + '<\/span>';\n    html += '<\/div>';\n\n    \/\/ Domain registration row (when purchasing new)\n    if (S.domainReg > 0) {\n      html += '<div class=\"dp-qc-sum-addon\">';\n      html += '<span class=\"dp-qc-sum-lbl\">Domain registration (first year)<\/span>';\n      html += '<span class=\"dp-qc-sum-val\">' + fmt(S.domainReg) + '<\/span>';\n      html += '<\/div>';\n    }\n\n    \/\/ Plan row\n    html += '<div class=\"dp-qc-sum-row\">';\n    html += '<span class=\"dp-qc-sum-lbl\">' + planLbl + '<\/span>';\n    html += '<span class=\"dp-qc-sum-val\">' + fmt(planCost) + '<\/span>';\n    html += '<\/div>';\n\n    document.getElementById('dpqc-rows').innerHTML = html;\n\n    \/\/ Total\n    document.getElementById('dpqc-total-lbl').textContent = 'Total to Launch';\n    document.getElementById('dpqc-grand').textContent = fmt(total);\n\n    \/\/ Ongoing rate\n    var ongoingEl = document.getElementById('dpqc-ongoing');\n    if (S.billing === 'annual') {\n      ongoingEl.innerHTML = 'Then <strong>' + fmt(S.planAnnual) + '\/year<\/strong> for your ' + S.planName + ' plan';\n    } else {\n      ongoingEl.innerHTML = 'Then <strong>' + fmt(S.planMonthly) + '\/month<\/strong> for your ' + S.planName + ' plan';\n    }\n  }\n\n  var meta = [\n    null,\n    { lbl:'Step 1 of 4', name:'Domain',   prog:'25%'  },\n    { lbl:'Step 2 of 4', name:'Package',  prog:'50%'  },\n    { lbl:'Step 3 of 4', name:'Add-Ons',  prog:'75%'  },\n    { lbl:'Step 4 of 4', name:'Plan',     prog:'90%'  },\n    { lbl:'Estimate',    name:'Summary',  prog:'100%' }\n  ];\n\n  window.dpqcGo = function(n) {\n    S.currentStep = n;\n    document.querySelectorAll('.dp-qc-step').forEach(function(s) { s.classList.remove('dp-on'); });\n    document.getElementById('dpqc-s'+n).classList.add('dp-on');\n    var m = meta[n];\n    if (m) {\n      document.getElementById('dpqc-step-lbl').textContent  = m.lbl;\n      document.getElementById('dpqc-step-name').textContent = m.name;\n      document.getElementById('dpqc-prog').style.width = m.prog;\n    }\n    if (n === 5) buildSummary();\n    dpqcBar();\n    var prog = document.querySelector('.dp-qc-prog-wrap');\n    if (prog) { var r = prog.getBoundingClientRect(); window.scrollTo({ top: window.pageYOffset + r.top - 115, behavior: 'smooth' }); }\n  };\n\n  window.dpqcReset = function() {\n    S.domain = null; S.domainFee = 0; S.domainReg = 0;\n    S.tier = 0; S.tierMode = null; S.tierPages = 0; S.migrationPages = 3;\n    S.addons = 0; S.addonsList = [];\n    S.planMonthly = 0; S.planAnnual = 0; S.planName = null; S.billing = 'monthly';\n    document.querySelectorAll('.dp-qc-pill, .dp-qc-tier, .dp-qc-plan').forEach(function(e) { e.classList.remove('dp-on'); });\n    document.querySelectorAll('.dp-qc-addon').forEach(function(e) { e.classList.remove('dp-on'); });\n    document.getElementById('dpqc-bar').classList.add('dp-on');\n    document.getElementById('dpqc-domain-note').style.opacity = '0';\n    document.getElementById('dpqc-annual-note').style.display = 'none';\n    document.getElementById('dpqc-pages-wrap').classList.remove('dp-on');\n    var domainInfo = document.getElementById('dpqc-domain-info');\n    if (domainInfo) domainInfo.style.display = 'none';\n    var seoAddon = document.getElementById('dpqc-seo-addon');\n    if (seoAddon) { seoAddon.dataset.cost = 0; }\n    var seoCostEl = document.getElementById('dpqc-seo-cost');\n    if (seoCostEl) seoCostEl.textContent = '$20\/page';\n    updatePagesDisplay();\n    ['dpqc-n1','dpqc-n2','dpqc-n4'].forEach(function(id) { var el = document.getElementById(id); if(el) el.disabled = true; });\n    dpqcBilling('monthly');\n    dpqcGo(1);\n  };\n\n  window.dpqcStartProject = function() {\n    var payload = {\n      v: 1,\n      tierName: (document.querySelector('.dp-qc-tier.dp-on .dp-qc-tier-name') || {}).textContent || null,\n      tierPrice: S.tier,\n      tierMode: S.tierMode,\n      migrationPages: S.tierMode === 'migration' ? S.migrationPages : null,\n      addons: S.addonsList.map(function(a) { return a.label; }),\n      addonsTotal: S.addons,\n      planName: S.planName,\n      planMonthly: S.planMonthly,\n      planAnnual: S.planAnnual,\n      billing: S.billing,\n      domain: S.domain,\n      domainFee: S.domainFee,\n      domainReg: S.domainReg,\n      total: dpqcCalc()\n    };\n    window.location.href = _siteBase + 'get-started\/#calc=' + btoa(JSON.stringify(payload));\n  };\n})();\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-dp_pc_support_section e-flex e-con-boxed e-con e-parent\" data-id=\"dp_pc_support_section\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-dp_pc_support_row e-con-full e-flex e-con e-child\" data-id=\"dp_pc_support_row\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-dp_pc_support_text elementor-widget elementor-widget-heading\" data-id=\"dp_pc_support_text\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Prefer to talk to someone?<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-dp_pc_support_button elementor-align-center elementor-widget elementor-widget-button\" data-id=\"dp_pc_support_button\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-md\" href=\"\/contact\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Contact Us<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Pricing Calculator What Will Your Website Cost? No guesswork, no surprise invoices. Answer a few questions and get a transparent cost estimate covering your build, add-ons, and hosting plan. No email required. Learn more about our plans or our process Step 1 of 4 Domain Running estimate $0 one-time costs Step 1 &#8212; Getting Started [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-1881","page","type-page","status-publish","hentry"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/digipalate.com\/staging\/wp-json\/wp\/v2\/pages\/1881","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/digipalate.com\/staging\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/digipalate.com\/staging\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/digipalate.com\/staging\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/digipalate.com\/staging\/wp-json\/wp\/v2\/comments?post=1881"}],"version-history":[{"count":12,"href":"https:\/\/digipalate.com\/staging\/wp-json\/wp\/v2\/pages\/1881\/revisions"}],"predecessor-version":[{"id":2265,"href":"https:\/\/digipalate.com\/staging\/wp-json\/wp\/v2\/pages\/1881\/revisions\/2265"}],"wp:attachment":[{"href":"https:\/\/digipalate.com\/staging\/wp-json\/wp\/v2\/media?parent=1881"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}